From 912c4031869b84769b6e90852ae005f49e7ead6c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Oct 2016 11:19:57 -0600 Subject: [PATCH 0001/3180] Initial commit --- LICENSE | 21 +++++++++++++++++++++ README.md | 2 ++ 2 files changed, 23 insertions(+) create mode 100644 LICENSE create mode 100644 README.md diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..569c81b9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 Redox OS + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 00000000..b960d249 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# cookbook +A collection of package recipes From 0c6941af486137e285e13c923acda053c8beafb2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Oct 2016 11:23:56 -0600 Subject: [PATCH 0002/3180] Add target spec --- x86_64-unknown-redox.json | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 x86_64-unknown-redox.json diff --git a/x86_64-unknown-redox.json b/x86_64-unknown-redox.json new file mode 100644 index 00000000..e0a010a0 --- /dev/null +++ b/x86_64-unknown-redox.json @@ -0,0 +1,26 @@ +{ + "llvm-target": "x86_64-unknown-redox", + "target-endian": "little", + "target-pointer-width": "64", + "data-layout": "e-m:e-i64:64-f80:128-n8:16:32:64-S128", + "arch": "x86_64", + "os": "redox", + "env": "", + "vendor": "unknown", + "target-family": "redox", + "pre-link-args": ["-m64", "-nostdlib", "-static"], + "post-link-args": ["build/userspace/libopenlibm.a"], + "features": "-sse3,-ssse3,-sse4.1,-sse4.2,-3dnow,-3dnowa,-avx,-avx2", + "dynamic-linking": false, + "executables": true, + "relocation-model": "static", + "code-model": "default", + "disable-redzone": true, + "eliminate-frame-pointer": false, + "exe-suffix": "", + "has-rpath": false, + "no-compiler-rt": true, + "no-default-libraries": true, + "position-independent-executables": false, + "has-elf-tls": true +} From d2f5588d92a284f935d540ee9be7e4b7b7087f4d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Oct 2016 12:49:59 -0600 Subject: [PATCH 0003/3180] Fix building of libstd --- .gitignore | 1 + cook.sh | 45 +++++++++++++++++++ recipes/libstd/recipe.sh | 1 + recipes/smith/recipe.sh | 1 + .../x86_64-unknown-redox.json | 0 5 files changed, 48 insertions(+) create mode 100644 .gitignore create mode 100755 cook.sh create mode 100644 recipes/libstd/recipe.sh create mode 100755 recipes/smith/recipe.sh rename x86_64-unknown-redox.json => targets/x86_64-unknown-redox.json (100%) diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..378eac25 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +build diff --git a/cook.sh b/cook.sh new file mode 100755 index 00000000..9d7d1138 --- /dev/null +++ b/cook.sh @@ -0,0 +1,45 @@ +export RUST_TARGET_PATH=`realpath targets` +export RUSTFLAGS="--cfg redox" +TARGET=x86_64-unknown-redox + +set -e + +if [ -n "$1" ] +then + if [ -d "recipes/$1" ] + then + pushd "recipes/$1" + source recipe.sh + case "$2" in + build) + pushd build + xargo build --target "$TARGET" + popd + ;; + clean) + pushd build + xargo clean + popd + ;; + fetch) + git clone --recursive "$GIT" build + ;; + unfetch) + rm -rf build + ;; + update) + pushd build + xargo update + popd + ;; + *) + echo "$0 {package} {build|clean|fetch|update}" + ;; + esac + popd + else + echo "$0: recipe '$1' not found" + fi +else + echo "$0 {package} {build|clean|fetch|update}" +fi diff --git a/recipes/libstd/recipe.sh b/recipes/libstd/recipe.sh new file mode 100644 index 00000000..68680c5a --- /dev/null +++ b/recipes/libstd/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/libstd.git diff --git a/recipes/smith/recipe.sh b/recipes/smith/recipe.sh new file mode 100755 index 00000000..9f38e91d --- /dev/null +++ b/recipes/smith/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/IGI-111/Smith.git diff --git a/x86_64-unknown-redox.json b/targets/x86_64-unknown-redox.json similarity index 100% rename from x86_64-unknown-redox.json rename to targets/x86_64-unknown-redox.json From 464ff0105953cf6737933949bf5af0dbaece2732 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Oct 2016 12:57:38 -0600 Subject: [PATCH 0004/3180] Add setup script, remove openlibm from post-link (might have to readd later) --- cook.sh | 2 ++ setup.sh | 10 ++++++++++ targets/x86_64-unknown-redox.json | 1 - 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100755 setup.sh diff --git a/cook.sh b/cook.sh index 9d7d1138..f82a619c 100755 --- a/cook.sh +++ b/cook.sh @@ -1,3 +1,5 @@ +#!/bin/bash + export RUST_TARGET_PATH=`realpath targets` export RUSTFLAGS="--cfg redox" TARGET=x86_64-unknown-redox diff --git a/setup.sh b/setup.sh new file mode 100755 index 00000000..6ee0d96d --- /dev/null +++ b/setup.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +set -e + +./cook.sh libstd unfetch +./cook.sh libstd fetch +./cook.sh libstd build +cp recipes/libstd/build/target/x86_64-unknown-redox/debug/deps/*.rlib ~/.xargo/lib/rustlib/x86_64-unknown-redox/lib/ + +echo "cook.sh is ready to use" diff --git a/targets/x86_64-unknown-redox.json b/targets/x86_64-unknown-redox.json index e0a010a0..3d6de474 100644 --- a/targets/x86_64-unknown-redox.json +++ b/targets/x86_64-unknown-redox.json @@ -9,7 +9,6 @@ "vendor": "unknown", "target-family": "redox", "pre-link-args": ["-m64", "-nostdlib", "-static"], - "post-link-args": ["build/userspace/libopenlibm.a"], "features": "-sse3,-ssse3,-sse4.1,-sse4.2,-3dnow,-3dnowa,-avx,-avx2", "dynamic-linking": false, "executables": true, From f7baaa6f45e5930752fe767191597df60dd2d012 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Oct 2016 13:03:45 -0600 Subject: [PATCH 0005/3180] Update setup.sh --- setup.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/setup.sh b/setup.sh index 6ee0d96d..9dbc6978 100755 --- a/setup.sh +++ b/setup.sh @@ -2,6 +2,14 @@ set -e +echo "Defaulting to nightly" +rustup default nightly +echo "Downloading rust source" +rustup component add rust-src +echo "Installing xargo" +cargo install -f xargo + +echo "Building libstd" ./cook.sh libstd unfetch ./cook.sh libstd fetch ./cook.sh libstd build From b6024fb704bcce39c9e453cf47dc32819de8af11 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Oct 2016 13:04:16 -0600 Subject: [PATCH 0006/3180] rust nightly instead of just nightly --- setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.sh b/setup.sh index 9dbc6978..395d2b63 100755 --- a/setup.sh +++ b/setup.sh @@ -2,7 +2,7 @@ set -e -echo "Defaulting to nightly" +echo "Defaulting to rust nightly" rustup default nightly echo "Downloading rust source" rustup component add rust-src From 089750ab8eee7b1657a865b036e679ee626b8044 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Oct 2016 13:13:12 -0600 Subject: [PATCH 0007/3180] Allow recipe to set cargo flags --- cook.sh | 3 ++- recipes/sodium/recipe.sh | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 recipes/sodium/recipe.sh diff --git a/cook.sh b/cook.sh index f82a619c..a1c6ba80 100755 --- a/cook.sh +++ b/cook.sh @@ -2,6 +2,7 @@ export RUST_TARGET_PATH=`realpath targets` export RUSTFLAGS="--cfg redox" +export CARGOFLAGS= TARGET=x86_64-unknown-redox set -e @@ -15,7 +16,7 @@ then case "$2" in build) pushd build - xargo build --target "$TARGET" + xargo build --target "$TARGET" $CARGOFLAGS popd ;; clean) diff --git a/recipes/sodium/recipe.sh b/recipes/sodium/recipe.sh new file mode 100644 index 00000000..8839dd45 --- /dev/null +++ b/recipes/sodium/recipe.sh @@ -0,0 +1,2 @@ +GIT=https://github.com/redox-os/sodium.git +CARGOFLAGS="--features orbital" From 87da10a2ca3ad2b8420778a7d6aff629900d04be Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Oct 2016 13:23:21 -0600 Subject: [PATCH 0008/3180] Add coreutils recipe: --- recipes/coreutils/recipe.sh | 1 + 1 file changed, 1 insertion(+) create mode 100644 recipes/coreutils/recipe.sh diff --git a/recipes/coreutils/recipe.sh b/recipes/coreutils/recipe.sh new file mode 100644 index 00000000..599b73d0 --- /dev/null +++ b/recipes/coreutils/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/coreutils.git From 98ad816e112938cf0d4056f4d2139fc7add425d0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Oct 2016 13:24:57 -0600 Subject: [PATCH 0009/3180] Add extrautils --- recipes/extrautils/recipe.sh | 1 + 1 file changed, 1 insertion(+) create mode 100644 recipes/extrautils/recipe.sh diff --git a/recipes/extrautils/recipe.sh b/recipes/extrautils/recipe.sh new file mode 100644 index 00000000..7721ee54 --- /dev/null +++ b/recipes/extrautils/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/extrautils.git From 47034cf00e9f74cca081ae15b3eac11d4596fc6b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Oct 2016 13:35:45 -0600 Subject: [PATCH 0010/3180] Cook with more than one argument Add orbutils and userutils --- cook.sh | 55 +++++++++++++++++++------------------ recipes/orbutils/recipe.sh | 1 + recipes/userutils/recipe.sh | 1 + 3 files changed, 31 insertions(+), 26 deletions(-) create mode 100644 recipes/orbutils/recipe.sh create mode 100644 recipes/userutils/recipe.sh diff --git a/cook.sh b/cook.sh index a1c6ba80..652a016c 100755 --- a/cook.sh +++ b/cook.sh @@ -13,32 +13,35 @@ then then pushd "recipes/$1" source recipe.sh - case "$2" in - build) - pushd build - xargo build --target "$TARGET" $CARGOFLAGS - popd - ;; - clean) - pushd build - xargo clean - popd - ;; - fetch) - git clone --recursive "$GIT" build - ;; - unfetch) - rm -rf build - ;; - update) - pushd build - xargo update - popd - ;; - *) - echo "$0 {package} {build|clean|fetch|update}" - ;; - esac + for arg in "${@:2}" + do + case "$arg" in + build) + pushd build + xargo build --target "$TARGET" $CARGOFLAGS + popd + ;; + clean) + pushd build + xargo clean + popd + ;; + fetch) + git clone --recursive "$GIT" build + ;; + unfetch) + rm -rf build + ;; + update) + pushd build + xargo update + popd + ;; + *) + echo "$0 {package} {build|clean|fetch|update}" + ;; + esac + done popd else echo "$0: recipe '$1' not found" diff --git a/recipes/orbutils/recipe.sh b/recipes/orbutils/recipe.sh new file mode 100644 index 00000000..7324ebb5 --- /dev/null +++ b/recipes/orbutils/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/orbutils.git diff --git a/recipes/userutils/recipe.sh b/recipes/userutils/recipe.sh new file mode 100644 index 00000000..92d104f7 --- /dev/null +++ b/recipes/userutils/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/userutils.git From a8c48d184c400251f6ada308dbf166ead9908eaf Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Oct 2016 13:53:37 -0600 Subject: [PATCH 0011/3180] Add install --- cook.sh | 7 +++++++ recipes/smith/root/.crates.toml | 0 recipes/smith/root/bin/smith | Bin 0 -> 2253376 bytes 3 files changed, 7 insertions(+) create mode 100644 recipes/smith/root/.crates.toml create mode 100755 recipes/smith/root/bin/smith diff --git a/cook.sh b/cook.sh index 652a016c..c6f91249 100755 --- a/cook.sh +++ b/cook.sh @@ -26,6 +26,13 @@ then xargo clean popd ;; + install) + mkdir -p root/bin + pushd build + #TODO xargo install --root "../root" $CARGOFLAGS + cp -v $(find target/x86_64-unknown-redox/debug/ -maxdepth 1 -type f ! -name "*.*") ../root/bin + popd + ;; fetch) git clone --recursive "$GIT" build ;; diff --git a/recipes/smith/root/.crates.toml b/recipes/smith/root/.crates.toml new file mode 100644 index 00000000..e69de29b diff --git a/recipes/smith/root/bin/smith b/recipes/smith/root/bin/smith new file mode 100755 index 0000000000000000000000000000000000000000..fc57dbff381132614de21e77f0e3edba9e705392 GIT binary patch literal 2253376 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

2u#)7q9Q_{!hE08mkZ4)1vngYWe<7$cAzfzxM7 z$`_Uyz~KPg=ePjACCmWW-1ng#ygk%}$IB~tU~89drerD;mxFjbarha}!m;3f`Wc%mm*L{1SEM*}lbFqlBm9yu_KrAxIK@2j5DTF!2l%yz!nw zCtFc~PHof;D4B}E^>ij^#a8SW85-X+5k)=SkU(NPB+Bs+W5r=etY!(nUOfUO)~F+J zM9aFS2+@Qb_QI{1C@%fPvKk3CzvgQ64o^q1_3;2o?K2{e9b{B4Y%|Obl*-r)eToq(p`-psoxV0~%D~3c zNtk##9Tm_iB|3GePBo%ao#<3l{jgL@YeotuyNV_rROc-g=kEgVRh7FpSC@N&a1d1LjWHU(SId6t2+DN4kZKBiZu1>9nS*Pf<8}u1V zo#q+2v%W@a_NuV{TYpYNS}XKj!{!OqsZPk|x$Y7&H&-haI!|<}#-1*8Qs>Q=qE7YQ zUow1_HPqPiX0)MJExSiPpcFcnW%>(0un&Ut;;r5RZUIWeC)n9`{4EN%Dn)}6NTUz3 z9SXzqz#@Dhx+ncj!9P27B#b{7S9k>?R`&11cFP`Ugf7}>B%ra(kHaehAhM#*U+4qw zx5m&F;FrVyTJT;+{w=?Uf6JEn-(mP0JMQu1oDZQsJ2qzJkixSAV?oxAjRY0dvohF~ z@Cljl)8k$XXVKB`64oqVYY9JneB!DN zhEmbTi=|CjU1)+=2j!}ZY%_&7sdYI#Jdb|ydw6_dJfyMxjc3<(qR*9REBE0FZ~mwD z$i_c^`GZd18Wk}$uZ%DrpSNIU&N$Gs? zL5_4xxyW+9fD{uYJ*3eeVS5H8h2;vc;|H$76YTS!5BWl;6N-5TjZl_aT@!4=e6HC; zIJJS(Mr=)mC)$hl(YXMZo?&~(@jgzN7>d0DnkX>nW;F23ogo~j&WOlYw!%lb=BC+$ zhs8^=f-9#L473VVMnGH4peUnGkdJbGYCLdEt_R+S-Y-+{V}G{?jx`?WVd!%7KIwF$ z_oV+HdQbB7?z!T^kkz{vKW%aoIwq?ZLx*vLstmvSK*X|_M8~6BAAo9%loo|++NQw) zczo0C>LX`{zrO>pv!V=*I<$buIYr^7J2}6@fu0puAbNmVMd4;20Q0>^#t2#q1|EC| zCK8dOF_E*1`i8w|iP$OBF~U){RU&qXO?|B)TmV9M*od4(MC4>wC2|%Ki>$|GBusKJ zkIYK#jiUC)q(9y$AGC?gdgVZAi+B-9Z3;`UUVp?!QC|tpo);k5yB8O3SKu5L9KtY< z^eb$BNY(xjSvz$@Sfe~rwez}ckVou27@BJg>UyBM?LSgQP?7bhsFpqi`w5W&pJS-N zudr#g^4=)C9{_L0ePla-*hlRB$onq_^$tJp?F7{GVdb*Df~Ls>3p!IpNkQ6x*5PA6>j~K(_EGT>pffhOBhXG;K2wCCq`f+?zATqX=#<>Kf1Z>k}zTzt~PWmtp z$RGo-b8_F+kTUL}D&#%jY6WgQjvpLX%HHWehOK%?i*Q%C{!hpiH6zP|KJ$^0A0kD6 zXW*ZmIt03=X~Yq;&`o>5BLp}dfDC~t0=R-r?2nxNO$}(1 zkO=*uL0mIMT$6=jRZQtM0-UPAaw;(tabV(neqr)4jiOV5ZKwVNQ+i+(5NV(&M1zcT z+C00RXi%|CCS#e$MH<*3@$>w09{OxM_2W={rDzx`Vc|dCkp@#g94#+mlWkGrZ`vxP zXrUCfY8$TEomdyM$g{E!#o<;$gG9$7`Ya1PU4cK$7c2iCb8j9WRdxQ4&&_0EAV4yi zC>oRjQE`uZL90Pgg9=Onj;W|biyB-oDhjeC?xEw^T%&quMC`Xp7VZ|^PF>@v)ntE_hYR@Gr<^*iIt^B zqFVEo&g0#|!iCd!DCh>Vc&>n4At1nsRZ)(ALKC^#$(-0lP}a+CQB)Y4j=#cNVWI}r z>y8$lAM5B@{m@mrQ zPW1;L{8Nlq=EDG`@HcezBav&Zh7Cn=`JelwRpd`)G0WrPd?7qr}lGSA!d za*k>JnoKDs5|%D?O3~D>awwi`d+B~4!@+jIrpkjHwG>W)VKA-Lc!$r;>r5M$W0*;U(!xGNd=gDtE;u z5sL;vjA6rI@b>t1H*!b3s2%^D4%FgHgLU&=$V>eOUoi4=4&Pco9*dbxP|CV>{xnxDPww6)<|S_hPs`7J`iJAw_*ylxX}>I@DBZS)AZb zgf+k{Z~(Qu6R5b~H6MkRs0_g2G>^4h2SXJ1V>S8Mm2tZWw0C`B>}U8Zu5txRVDBXm zq)G%?p@P(~cNPyLw?rGW;)@Vp z`^7f~nmHJ325Y$+6(g3~bl)P=YF{G=*G0v@@V`E`o7M{a&jG(?8KSDYj=%z$EJSFJ zwUBD&Vx-t(P1{sk7=}W47YV_>Q3&rMVXSHddZavwgWfe@2)biQyaNAJdeYZ684-VR z2!j1lIs4j^=xcckz&RFQ3qL4Iq`t&IgDTnEY5iE`I;4-^22xjkX#U3^?$pn8{DWu^ zy3#`@?y@(-Zb1DJwY|HGR^gvrAahAP7%N^!o~?f&h_Ur_Jccy4+T zWclCskb>kMH-qxf+>{5SEGGmDV##Y+b$;%uOG#n442{czzVGmOPOuFj(tpI0e9KVZ z?{kyx!+|Ttp+nW0*$AFbz|~l$ji6ss%?hO|3B4 zS>?wnNH~}zbr&AH`091E2p5}P+9G_a{qpt};iPG+el=O~9B4X)+D(XUVN45gJ)DKR z`$$)+A$Kou4EdNEa^3vdB;Ly>{&fDuns$g=m3XyWiR$|kAx0KI$@y^jzVnK5_M1!D z8MGfiTa;Wu%C6j$Z<5lGmKP_7-U8ACigSXFLRl<1G>txZdTxpZLh%eS&dW{l0?KlN zy9Ij(W2Y4OdrtjIf`Z~(DGs00>$^5Lvx7kqFbiQyK`zWo1@jer_x*Qn%ykZC=sc7K zkY^7BbbZh46R-`D)H2vh-MJ3mT(ilCPUK~$qsMSI>AQR35>APjPHw`)<6WPehdH*i zKqtHYPsrw6{}qM4?ERk(>~TNQwI%z%>?OI4*MF5)YDr%W9qoi^KPgb!PYVLtFAAc# zsarNd>`=L7qA(`Q@=9**{E`!U5I0xy(GZT8X&V?cK_oAGKzU*8Yy<}V#~cO4IXn`l zzb7lcn&)6KjJJ|CM!>81egD&#{w>fN0h$4z4*d0R@PYKnBr~`-hhUo(wowS=#1Tvy zgrFh9M8o#}_gH3g5ubV4m%ykn31%IGhX+wte{YM?i1OMMULRiRV3r*YehN_${4Q(Z z9z*{J%yx`b$(~(I7nMeX!%T8{ly+fgsT??MG~sZ+zl@v~d_2L;j!geY$(L#g;iI%d zEU+D%A+dE~th7+QXTW>nJpv6!R0O<#cT{^^DI9+3VOz6Yjn z#dleHDZb0o58*qReg@wavDCHO<3d#Bd$`c`m#rY#fSQ$R5^f&gl{!Dc4ITUqIFP;s z$7uNglmomyG}Xjb9-#Yet$z~po+JbZk^pwd2*H6gsBUz>0OjV!fN{F4vp77i^0F&{aX)b;dG7>!O6oKg=K#f#721GF zbQ4>|#TZyj74BJO5y<+C@c0b){o$Mgj^?%jdkXu_0FUNLbg2m%Bd>r7f_bcu znSNf4%xkD#b`#)@BIZCh^E$5M3c zK9%pm8e6~?x-~(4@q>``cKDc6^ajnRMT06SHD!)f(qGQRgLi#&WE?QRr0h>>tC=z~ z+JT|P9T+ZxB5aM&z_7ciI0+S@f^35gXdxjL62cZ47+O{Tj0_Ctu}3E|%;JEsiHFub zU(Zw$E0j<>_eH)jWT`Y@T}j)^D(FtAf*0MPF}TS+;4?ZuL<={@ZH5#ZgA_)6=rd`I zMmz_MtfQqdzMugUY0awLjDypcGSp%g(9Dc9%r{0B+aYGamR|Nw$nXLk>mNJ6o3}$8 z0a7c&Kb#JM?I;#C36FpJ`VK>`e7NHAvaf)_N(2@IevIos97g2Bj^$;4MES%@2odwD z=-;}cR-^4((rI=SuMt|?y8F7VOR3np+`BZxe$hI$b|Wf6Ms3}FNr+T~5bn#??bqKB zPEf+kY8ZXMzI20rBTW${My(p%>zpckoybxdFDq#_WN#oZG&No3%Gg@hO~%_z#dgJ4 z880KDmGLr>@exCKffA~Wmwh)@2x~v2#Ft%rC?x*a5X$KY{WGV?R}aX1rq;PZMBWkO z1Am!yz|{=#179SAz^qL5Yc>_R`(w>|wUI>4Dye=~7{WRu@?C72tL6IKou+6HEvkLU z79k^6vfdQ0`DQ;n#Q`q7buAd#| zd9z#C87`!!4&i3n$%v%;q@Ur)ntmDIUV8iA;oh4T-iHynPkJ|G#3aJwz3eZN$U{&u{&tr7eRI5b(|GhoP{@aM;PEm~jK7^l zu`0sKSZbsC-9Y7KR{=0Zz-0m09jL*M&U1$G9vN9^Gr`N)G=3QgIW`I5G7^Ru>3}$X zjh$t_ktum!FzZB&IDYMY9|g0_c&|g5HgQXJy!Q&Q52yD?#_2 zZV5`5AD@a;fp0Y`5%#T$!V!j_;^HB?{pkuxtS%i=55sfbhE;>cLDek!j zd<50t!yyAEY7ks=gH&29?vVmXwOm|1ZaoaZjXKf4&~<%^ft@wuQAM)a4TPpkq13ok zkwo~h#0tezyPGN?wD;8_R!MlSStz1o7RaW(Iw9f%Dz*9^j0iGv$Q4pMa+JkVF^o4_ z#Ql$8PyzcSe}tv9NEh4_I_xNODFz=edk^|2`{;!G!bY9o6=(z?eRP6Y%t|*F6@9Oq za32Z%zB=JP`iCX_3__!*mfdW^{d6Z=bS;bMlDsQC;Q{J{-1^Z-vF; z3b3h_nc@%8R^H|-u=LHi8!xm95LMnOM&1S?oI-QsV+Ca>i{G^a_%JeD-F&^=`IsZws8Y@fog-UobZ2P!+K;Z+Tdm&mbXE(law>(8h^Q zu3zX2JiE=D>0B$uYLI1ZEtBBynKSLR;)r`}2Mzb9mKPmq-QyA~`UxWX7?jiTGYeeN zUw1@z{CVfF=nF__MPER|khQh9PX!N7A(>0Vojv2Rs&$L-7?`<~Mfjw4hk~)nE8!13 zY(&O5WO$Wq5^a#wX%ULxoaqsneUE_ZbMaTYg&i;19HrjdurlZTBeUpQUYt9J)i3FI zDFj;x1;!t_<%sG+5>t}eKkNv|5#IDYL)V~6;UO3iJ6e|ifWqyBA7rj##Ru3n75J0S zeh}kje9ltUvsJS>KxYUq3#ZD zU8_#&mvD=+N?t}Cv=?27b3Vrc#4c8*on?XbPlScT=pg%A2U&hSU7`lIp@XQq5GIjc zB@WUg1p5jFbZ!)ieLW%RdRa&sZlw?WR8&f|YhH#zlMo*t8~0j2HoZ~nw`6^GX}(Cr5T-tY5CA@bMljQsQC-eDt<7E@w=~RQ&D`K zRh)rBF2!vxtwK%P%IjPMtP=w$U-{Kq%a3bdFZ(MP`HwVo|AO#X6XnN#Y56%`)xUsE zVh!HEfTSUQ$v*Vq{sj@f9p7Q^7JsFi`g|LCslHUi4PQW4Ni6RzRo4a~-n2mcNVf3x zCwXJZ(YQ}sdPuxtz3Bq`NPxQ|2EC*3S9(i4JlvIf3*oEqCkfC>HTr5*f0CJt^q_!x zG7TWf!8DN}38PVI{@=u9LhHBY744n8UW(EMEz~@rZt7ib~fa? zC6{c**Tb@{cV#oCcVt_UQ#P=bPafHL+M=>mzotsm$Uyzo-dIs$CMtbBx7}*FBU$QQ zhTW$`W2bbo8u3@q({7v(h2-_P&{UHK*AVBgMvIoNiyuLGLZ(SBP6;y|@!pG9G{2$Z z+$!SC#$|)$_$yr#HybaqZC&bpUn|X6%dw?YxAr@gmA?BB6-WZsc<~l#*2KBPxizng z{=u-=6Oxp!l~-iSebJXp{?^Fn6=}UMnrKtpR&Cv`aO>(WVXCIDXI9a)fo>0r*8#}3 z{ohdHWh*u8;|VgP#a$ zkn^y0+NMIOvEmiUt7YI>dNS_ohq^SwDj3I%XVVKMWU!sCMoZ0j)?BD7)f(clfp4OW zr%9beOfwhA4@Q)pC0wwoZPn~2S{`8go?6H)J=E=J`3Hu3q)kLv#bZi2$V`67;ql=@ zYcCzH+F+~qXs-!HzP)sKH1;y{LjK`uLXokQ&JPocbhsj4@&Dx3Ux4p~BFk4#Y3`X> z7+ZS|_)hfs<{hqxZ!PBxR}+hLxU$U5da|^x*e=C*{0z4kr2Fut^~K?h_)_l^&h8+Q z&)N7!BTLW@N|q(6)h!xi=sBX8Tg&)Z_%o33vU>uaTkNF`#o;~n2)wK%efS1}x2(lq zFl-8&$vzuh9+x%->MRz18Ss-);JD)OeyQ@~Y_8#+Y=crzB`gaeO-91YUIQd?rKS?sQAtgedD&j$U5i^C#%&T@ zT0kh9O2kopkC|RlR&BKVx$t`c{G?-_9^v;lcttS5$&&JPQ**fTQxl(FLQ3${$>j7B zT~sCwXhrK+YRvtF-R)=V4dc@05)K9$GrkhKyj-dWfw!7kavcgL5ahd~c|>b&rE+=1a4ueaPiys+QjcgAk4SWx4$q6)rRSA!AWgJs-UP15N-rq! zCLphoc^q+h%cArOD>d%cv^)LeWq8t;4}#{}5=JbkXODp1R+mUWxuK*lb{XJbrk{)r z4}MNRxuJw*_~_JrYe`v$VS6Gn@%}Wh<(jv2NyI$eBeZ^B=W^gBB~GNaq(qm!W$Cxo zaW51${WsHPZ|NN+-2=fy*=sUI>WB&oPT#R4m&u^7sByZ$b7z?@ur%Z~zwhof$LHz- zOMUw%jm{M-9Po8#8t~gf;A^^r|2Y@f zwe@{baBJ)PL*N(m68wH2JbFcK1RU*scB3asP9B49^luCfdArdwB~?y0s?Xbvo+)7& zKH81`l(%VLh&1h{y=>YSN=Rv&_Jxf!?W#!AvT~w1+_b9%5CV&*zmV7ZFNUnYOE0be zqHlfeqpPCe)^9pP;G=s9-syuITfd#x*6&1Yo$jTr-zg!bwe>q2vGv-BtywwI9=7#b z0rYMCPShOM)87r52$H3z#R*q#Qwv7z9>V~HNBtPG#g6HZ5o5kWwXr75gx%`hTQK+dZu z5i@)WIOwQm7-0i)p&TIrd7_#k`eqm*fw)!5m?83P9%bYQt3usa4;^(QD_P0aSW~bH z#5M`UUx<~Mtj5lig{1CN@@*N|IGV*b7X+(j%inC0oh}jRnX*8R1O&j6X`GTO zzt@lEbj00+hw5cR58|oH&_?;5!|zy%=j?h@?6vKYmI#oCo46^)!}n-WIbY!rOYuZL zchM$1p&vB#x5DF5<-y~6y{NXHJYp%{jT|J`(x@IeT*mM+W_%iPd#6;+cauu!2?I`D? zB2FD@86uQDOhTk;xbQ1`*jcdsjD&osZV7sJ*)qOx!M4*xh=Q_qxw%^Qh_ottkKA0f z$+r0~<6f&xE|`A@-mj!d8b{r}>~g);UAEBM#=q5F))u9NJ+95 zkY&q5{QeN4IKtugM5H7n%AZ0-6wgL5!Du3|bhI881_Dy}R}ky_&>%#LE(G zDtkusSuPYDYlLFC>xjH)2C=%-hyLLGV{dS?hLMqgkCJmGRQ3mN?0J|l5{-nXqusg) zP58JMrz+K&`HT6BsPyCBS?JXk=S=0&F^_kw%btjE;YKe_Bah#sRJe!@?38pU4vg_T zOnygO=ouSiqyu?Vw5O?tYJ;xVMM&M#gkO^cOgdzb6=|7_s+H)v79NL{Ef%4vS<7?S zYcpx9#Lws@II5T zbJ$YTSSz*kkCD>*;U570&1_x>D0|*l?zY)Hgb32N&gPZVAl*KD2)3Jo^i8w5K^3HL zn9XgkAbs6zX)uewc(yc{rmd(?VeEu3ZL_4o{v=+9^nzJpJezKvCC0Pq4Ku}fHobo4 z-5fG)dfm(iopjgCv9zKsUp+Guq{WT(L4f4t1u-wZ9A&Ze8ho4Q1I|a+^3tO?2BpX1 z+e=TxcR~7Ce8OBG!MZgPKQr(J<%`^dpE8J&oE;v#S@^Sn#3 z5sVQpD{Uc7fz%{v2|raY?ck>}(h7cRytILzI$T=7PaP`u_fxfEeMwp4V=U&FdayE= zG9oU4a; z;mf!YHu8X^*)Rqr2d9w0iu7lo^w}Ip+w>Y~n<&z`BGYW3+(@KddqO$^v}hu=%C1o) z-T(V5j5ufuAnn@|5_i6UBzr@kjA*AwBY@ICq|v=b8l4+yI#6yR(jmP@IwXoTRqQkn z^UEmwm5u8O>F}_f#zm2)iL*TbdAcam%nu8N4^lQ0|R_31s z&etJ_$9yQ8rz4I@&D8;iDLVpW0E%FIrVLzru?VSi1jJ9BEg*hshJZ*aBpVN9yzB+& z!xFjIFmeZf+5FX|f#pc&0}pkB8ZHKG(Ks!d`gbfw%SMa#As$@bghrf$-2uk|+C+i0 zOCHRk5Drh4y{sK?#`S+HBx~ydr#!4zTLk9^k>@bTGK=!uV1kKU{>$wr z>k~IbaEe8q%YpF#ac=JchubC==XS-3ZNjiAHT3eMP&o8A{EnpP(+r9rTEB8+3&3*wILZ=QrsQh`@1qe?#f6+3@N!}91@oCaS~b? zAE%7?s6C#x_Sjl@b)k_K4MRgcV+PY)4PLJ3+IgQb4W)R`S-gD&??>SA(WJ7K-5rs# zx4_RL!y(rnkXF%G8rd6#P*NyXUT;`lV}w`L;KJB9cnM?Kn-{zto|Sw%<={13d1+g| z>Dx&NC1rWNYk3_byhel9EjL21_cmJ?Ji%@Ed~)d}4{!T^^Pa;?QkK^Tme-cT>saub z(GR@-JXr(RTy4@9q_CO}%zq}j#rw$OrICkUVFcc03E+Kf+Ia4iFEG7$oL;Ph^4bFM zW=PS;X68}5e{S)f5WL%gH(~_vz91PVIc}$wc|^B(w<%t;6n(*>L?`y+!QxcO`jQhQ zKg#1P%VQq$ysYK%wJ)>saAZCeq?B2TzIJ5(hsDzY+v08T@no8oH{n{D+5IS>6m2j9 z%06+~tHE;(kxu%Wzc*o8iG90=UW#Z)z3(-NkdV}&UsGUE`~uy;YM|h0g=?mzm9-!{u5F@!xJ~qZ069feuwD0`eycZY-{n?-g*2ig$U}?B1h}on4cZ1te*zT3q-?7-;&21~M$UN3k{pYyXy$CA z-96%I(+YCLQs-QEn;eRh82t!cJx%()>Gm7@MEErCr+mrxS5!* z{3$u=D1X`>b(B979Ca+>7LK*=72+)|X+7#Fe>!a6a&I{fk5XU;wZl-zsfZe95^vN28h8OD{rtb(r!1n=yn;HzB0f7?sJ zSCP;PzN!boJ9l*i@AL(icZ95IE5LSMcn@$BW~GN7(*(7K{*;rGHTmIU@~^PazKA;S z+<+Y#7`chlTe&w2u`p66-Yh9+yZ!GVhpZVP+?j+(jTge5NtjrH&3a@>^jTib88DVu z&piKGuJT z1h^Tld5w}clJ>=?Kfm}HBmH@2@XJs^zEs-q>fBR&t??R$`eFv#T?(`>XE@B3??*z> zNGSKC#Fla^ut3>{`NDnlZj9o2jx403#Uhq=d!=2cv>~KqpH6Z8$&u5bYUey9r<~R=rgxJwmtPD~&DBGv8#&c4 zrmH=5S)PuxZvzH9wC`(Z-@($pKRE6Cp6F!TcLvF6DQ#b~jW9iEUz9a{M{kyO3{q1k zV6xJbwdr{(tB#B_2!b}#k#PoPMXFXnX4GkFjDScgzhBHX0i+qA*xM{e$1mn;N3??+ z7c5@Z`o#r-z1cIUk@^J%wTKcCnSiDI0vU}k)(hbUG8pCci;G>qaO8CS;^K&$>c7@6 zF6}1gM*ZSaBd7YsrRo>9FAo(v+=kW@<6lAJ2Rs}(X*=7`u87FVz}L&J1kP9Vgth>~ z*mK6;WLzV@wP%?ks{ghbIj0I?8wo@0u5$hWY;lWU^;XVb<&<+6{PQsS=&!rW`R|R$ z`D;3YZ{V|d;V7bTf)LOx8NXeR^{AL+y{b1`hi^u1^ zy{yH%-SkPVK48ew(2bZsB+5sSA-@N7`|s2iJcvV&!E1(jzgx{i&Hk`O+j zLFJ=PY!=>wD}PLeJ1b&%53c+V+C;vLE3J(CyD~oS%1A`Y$h#Ghz}Jk6D&zAcq>MuN zJY~d3gW1>f@p{AMMG1Su>kSfGUT-+O-m$z!ie5LtH@M$d{;uyE5<5viZw<9INP(w4 z%eTAoV#@NmCd_M{Z+9V-6pCg4ru>j#CI65x zTLZ-sL!sDM?}X4hAS0pl#h~>!2S7`+tjL@`EM!I++Cm-?KysPo zWv!G)Mj#z4{45N4q{lJ~d2|5zwF`M{1ab_fJS*i(VaQ`WmL)n6V?*)=i2$ZZjgR+tT>O?gDG>M+SKw(8ft$htn^R%+>1m!* zwyQGKh16!@mcX=0{#4}N-w;|`w&Ete-ok(z$^(H!wOktfPlYr_b^OrZdS ztWeB!8-^yuRgMn%9hUN0Ucn2<=!ZY~9E@+2cFKJ-ls?P}H_^p*=hdyL_o2UN9b2VU ztE`@P!|f`UyTLWvh<7!gKq0jf#G6PfxJ#4)yqE=m&8vP}Ou9~4EcUpyfDL)gT{iD*8u||Jbo?BO zm8udH5P88oK1N%SHP=?*^aL(9X_Y(G zJ8daf?I^u#uJn0RiadPOH1`Cip+=$hzR$bc8D?J(_a4T#w)foUu?!!bB?j9W^DwlF zm$lK#V0U)*qZMv3Mk0X`sEGMaTVSvstq9>@&d!Myp$*gW!On2ar5!dFA{(abLmQ^$ zgPp;c{A7&G=sIS9N%ssSdAz`&Ba-qms?Jo&mgmP(WnkL{K zhh)x!LV0m*a*bJtSjZ&;dB7|KDOzFnP&0{D{Wn*5^7>Cwei#T0=iGQaQ_dZt zJ=GcI7le|t_%lIJ<18VZMZ!e&C*mz<3evgej*B+O#g_e{qTyAi8{1uC*vrrID0|;_ zIYclqyZjt+@)Gk)MHX74yE|qZ=!*?>j%LXLJt=Iwi;eM;W7#t{_mbjMRl&HQIAvQ5vGJVxYNDHI|0jRbEyboiA zZTC&Itg&+$v>EI@ctH2EhATO~Zs9G@QI=WFdRux=qD($kRBc`>>d;X0ewklXr+J4) zUFPRt;bkr6FpmSd+Vs2pn3M$St81f$WT?c;O4%p-n?6|hkAKdyOW237t)z2$iE;F4Y zZtm$em>q2+Q)N4mPj@<}VLpaGzMO0}^HeOpKe-=ZxgRaue*y0A;V*g6!u#`aKUzYv zt7}3oww-cskTLoov0N2nU3mvlgvF+F@DMHjk_SzFxn~xaZ;S;G{mjeI51}@DSymUy zLZa|oyg>zj$&uy~wGLj=w0(>4%T8Ox9!#R1_bnpTMCW#Lr$Ut&>6p-5EUV%3n#q0i zXsC++kb4zt%PaCM`>_(%Tng5o2zz79eC+#S+)Ko^7xp^9xa>I}N#LpcWhoi62Ciat zmp=o3{3-&1kF)WY9Qo3p#M1fr4~QE!#s_*Ja#^5<`UK{B^USivNiItnTuEO!WuvF)ifJIHw2x2acT%3KZ3pBQR{}gqaqgQehj)i7_LXcW{{{kPYh=pV!1yGP9^d`aF{UNSBWGER_;%aD;+5q7~WStr^wOST!4N79gq zMrJXV;`Q}p1BXdF4E90Gqiku543R(M%x=qC)r>3Ul0kAZ?FZ6liYESfq+wqsoUi(BI zUrS@^o-#K~-qu zocRP_Vte=*g58YqOR#SndXKb*&W<{R7B6b#`wfEiD;CSh=~LV!U7BHz=9CqmWpk_p znnR>o8G>#z<4p20N>LK1I9bGa#}}iI$Dl#utaz8;WyH@FARJ38Nu750MB7`|C zKV~|Nnefe)yp{s*7znK3$yQ^xojlI{D)0`y1m7vQz!r1o5au4e#N62zIF?$Aw$S@O z{u`5#F-YEo`wE&Y_$}o!>kJo3D;%A`qn5;rn~(NI=8-q*II^#&+)>!37i+=FS&L2+%W0&4KG5uy#UU#F`wL;MIoFb znUb#p#wy}$Z-Q$%nh5qDH5$B$(O~ntvVYXT!`kHbbWdPsgkXCis8#}bFMe_-?k`#! z_$Tw+luzzVR`|&LArm&My8(kr_ZLXE&yJMNgsVBFTSn=+dXP>C+IuS*Z1*UfmW?n<}Ke__0TQo8CjVm!GDU>&bf zjVA=_RXX{Fk=(|^`^Clcx*3o4UGZKM<88ZBVQdcmlG~e=Le91=XXMe|gLp#Fs06vh z%Q(g(D|~{51gpE!X}`D^l6@i4nN8H3(v6^WWoz^IS|R9E={DYL$%@i(eJ{P1)m`cS z8^>e7ooH3*j@38s=r)AS4QqVen+jrCpeaE6Codmco4PsB4Th@9g6jN&!EpTA!SL0SoNIo?^W zc;rR#xJ4^%%lf&*+YF=n+4xItZ^HJR;$~Fp9pzrO zca8fT#jEMcZ#^N1DM2plN#kNl&(pT7?n?KTNOwOBH=vrvGm(5wjOK zMd|F?oz-3Gupfn%eIAl+f#%03p?eoOrK_TJZ9PaQ1Q{jB)v_}oOsLzE7saz%8?5h& z_um+AH;NbgbAICq!HWFiZNzx2?n*a7j5iU6`-K?KELvRS>0IiKrF6|IT_zN%aJ{Uv ztx!~xg6G^hVijHr3&kqrM)PsuBfdufSHM0Z;O`*ZCn6v>C=f`y0yYbKZ#o6+QUM!6 z0@^TC2-=k(*Mx>uIQ`c69$8U3?p}y=tnNyOWhs0wj;=ESf62Xi3PWYfv^~fdtq!G z{-9eA)1hogHuu1d1fkij`wpaXI~Sau7j8X;%(DC2-UBxhgd*VX+r7%|U(^kEU6OnC z6vWA1Z)XqONDvCjy6^5PxAVa1CE?c7_$gbPv5!JSK&0JB5E>7ebbYcPyw=P93!Hw6 zeYNBPIW5^V>3)=XmySh`X;*IQlLz<KvZIL=lT@A{+nE@Xq;f_Md}U$$|FCbUnw$zPUKUMqN0O=ucWeVqxNRF~ zB3sbyJ!rzpT>GgevW0CmVP*B>JR5tgys^Dv)g*}*1kS);a$N4XNj2d{VW0_j3jh+z|l!@grL3nKX zlfsx@SjxHZoEhwVMtSHQHPi4oNeE}^B_zw^XEIux4<7g8FL`;+U?s!@S~Ukdt4N)i zV^`HYIj%kNa>M^f;eR>#!_pZ6xm>nq3l<$NAd*U~P`hg=y^sWnHq9C{ivz4YHI!&% zR(#PtEqp6evQ4#uy{uwfZF$+Jpp@<@|DPzf13)3XDz?N?Y>A`T5=Svfg=G7=OebGL zHa*wx9^xdrJ{2=*6W&2iiFVDJdLgZ_l=lG>jhfXUm+F2i*9+6k;$VFV$?l=gB-X33 zu2o~*YmF6HYj?5MmLm&edV1GgBI{hdNnyLnqm(S9SqV~J_Aub+jZiZ!s~WQVo9M#j zJJi>y@p08mvodn2^9$bCOw?#r?G@BQek>hz4!KrR+k-k zyb2}pGtL#*n*6m~o(>$vt@}RSLx?RBD>Sch2J;f$v&h?a#90zCi{N~OE!o%G_JB|x zZ#^K7`vig`PGAF@@C4z-}P>Mq{4 z=Y;a4RdmaI^{RYB)iq|zH_w-)fI(Tv;auU*^)@ziLkUiZ~lKol6 ztHe^cw>)WstfWD;?xdaN4*&RTuh3By7ag1uavb41CwzN}c>r#-`DvidFOV71W`A$; z=6SW@CJ>ypK?L64)rMw-Hu`I3$ej!jc8LBw9Rr?n~7f4HhHzVG_1`;SDS5A8`CyNn8##{HWTw|Gs)w?rRSDh0`^9m zNfB)(2ijE1P;J}h7;kERZPtXfImXrIIMt?A+h&UY;EuM(EIC_j0uHlejusRXm_pM9o$Op=@@w9j&C9)tdpO*((V@^2uI?u*Z3G5wh@mm5lh>m+=ME{EgLE znm-BZrEf2Z#R_8aEtld+p3PHNy$bh{H*$0x3>uW_M@N`%hTyrC+c#G-Z6hzeOx62fUD49TkAI1Tt$kjGhX43S|kq;sMMkK0*Y&x*)+ zp2&DD>ORf-=jW8Mamm9d^Ipd5eyyvS)uAjf>drSZ)(GMGBn-)@JYEOBw-s;}{ck)L zIXo6ccxc;K0RK7aal=1C&(`(S_BTZAp*ZcpDWa@*^cLri2#&6Zp9jWz;@p>0=b7KK zOx|s0?V5(=&|2E|_Zgi}62kkqoCw)fW&JlWqrx^u*`kZYV)wHPa9dM3gOdSR(6xM78p|eVvPoZAwSJ6>x&Ut)vlKUr-SmW z&ME862Siqy%c7>kvaa^+Dukh2#)GJ z3m8j?^L1{W?_gOEzVx-Pvk-o*I_o2)b-~LhvoMpFy&qWo@yNOj;UB=P^FF~)gfUBg z%eKywAEX4md>D4ZZ)Ikv+dx93#Fx zjefcL*2~=>r2-7qv_S?2lIwFU2ceDm;@i41 zZ?>+$at&a8)ixSjlu6)WAu9sNossEfe*s9o3#TsSeg8XsVc3>TdW>zXlu3nbl%kZB zS;$SJkPiUzKuS4C2>n>GP8f896h|2(Wfrn3fMn3>W#0iLmwq*O(fvvo2_k^JwkAi)am*N^VDO+{C2)R z)^jIpM_|YN$3_K?%-ARA7C7IOZ3RBr7x*NZluwqKF4W5EFLu&C%X4S#`~sg96J597mYb(edG>q6TM zQX4StB|5`?db!6u40nd!ZloP2{<>SUUdygqD8mCc1nRs~v6}}ElV{-TygPRfjisBQ z78dC3E!<>7B^L6dqiI_pXk;{956P^x~1oXnKwJ#|OisDF>Hs zL!XSM*LX7U_)=aMNU4x^G`(I3gHB5Z-5_N&y7D?5A~8}oU-lt9E9<*@A~a|kTi|9=VG)c{+Frqo(;EUGityCHtgJdF+ zJxf0FfwX_DpZfkjh+KIPe2&876Th9S^s3a~aDk>;R_Vv!9lXIRJu9O8hzeWb747w- zMsF32rS+bt+b0qN)aQ>d>qn8$k1*>;MIub?!aD(U<2@_`0DU{(v!|tM`YCrdoFOe zx~_jCr>rtx*XLhd*S}$8mFc?vjhw6No4|vs>-x3f$+{<5*G6PjyFLaSuCD7p&nc@+ z)jiqubKkCavJV5XgPxC}C(&_PF} z9e}hJdye(HJF5~!!k}!1q;88u;L2hP^(Y~dvMNC`vP@Jqhl0&Lbzrk^k8HZFtu32< zT{inh*L2#3)4+zi1@&W`pu=i2lc7Y8Mg$uPJWH|je<)Lx?{2{&H!rhH*gkH)EXK40Cx(y12YNfBhuUTiPyGWY zvIrjwbh-%E383$==o>igfT0qnH1j2K1LY7V(XN8YoA?G!cBl`tJBDD1P}C>vh3(=5L5kWB#S~8-BEDv0nS+B>}7By=pX3a z1`RFFAjOdZd*DbGg>W=359I0l)36gWWpPXst22*eQ8%1G9)n}#`F&U(v(s(lVNnQ& z4{3(&^DORX2fdRiE0465-%CfbD1@_v-~{p*93xM|!66*Sbw{$O8%|&!`O$KpsmGL+ z$H$TWKaxcu9JO;GkB`GqaiHh??7eFr7KLzBuRxw3ZC+g2Ub3}U?e`ddywpv=@K<+~T)| zpJgZvMy#lP433e9Kl@>ET>I!Rf>^zx{@i_Rw>YjplQ5*$4oG;}z<&&mk%vDWW^sH! zl%^cXqHZ{W|LmgUkMSR-y5XolvnYfUwU3XZ{xbyYV2k70heaVA)hm#PxAx#aMjq$U zW?wIrN3Zu;J4fa5aa5j5^UK2`d{SS&SrALh61(Df_LNxsj|X5Gc#{M_6&DsH$K8$} zp#N7v&evQX&oWlxMRbiOAaHYmevr;Vm6tcba z3-~Tb-%*4iAU1^K+8b9vOGDBrB&&tweSF8$pWz$7bn@NJU^{{fr;kqtN^9$n&S!`< zC!gHI)5o=iu{-crF}jG-(}=u@RUr#qtLINZ%f+e`jV=<$4F(#$@cST8>S};=kdzZi z`-Nk%tqhVB9V9%#4Vm(ph;J|ZHjqY)1yZ9g(=3&#a9qgt9Nr+4irZMkvRKs+yu@Y& z3=xH#0=R2)L1wWQuxdsiSr)6h@-)vtw!JeZB;^JeWmmlAy_=L@&_ixBv=K;_#j2)v zlah~ldfA5|;irAVikrsZGQ>(rbKAyfERrQk)s+Bt6<5f&09lIAEs)YcUQ8)P9ehO~ zSr)6J{|IE+dZP^Am+EELqmdV|p-(R&VWgqU-c=*(0Ks#XnB^iUM3Mvztkl^I(LmbgbIe)Q#jCf}eTAUi(MuW^Q%ZLNIYn_Z zLRc-hU{fQMnhdd7B5ckFn>+AVaaeJ8_sYZOxGk(0jAZP945wakU$(PC$WcbPBm#=Ng+-U7yVkohZln2Ujxd1ILQE0(!X zyy7zFv>s^wYB%OHg!#i@{0^CaTFj0dnO6WIpBm8Gp7^P-wHE#X6yVd*B17G}Vh(lq zSPP$sgqQsoJowymg;!GWRbD=O5X+yxypl+duN5Q@F-IDI70Hq@o5+4cXs)nQZ4pLF zMv-(T908O+vm0z#GAAA#J1mkj6KHkhAO2}YsZNW11nnhlg&DAU0u zC+Qh!F6|td4)&4KCJI;}cDfEo%P3Q}r2CMSXj4bh&YkrUP*FZt;M>bSf!YsHmXmTJ ztOz5VlpA3!5UwJ^tXv4|!w9nsLM*jEM(o;3c4i5AE9qBss9)U6|nyH&5&IaNkVcdHK7pk2kl=l|shN2yF9uPLSfz8u2(sKnINdTOy z;TS(!BRwa;w#S~qGR__n>#Qu`5Q&dT ztKjM`!Unj*$1;px^m&J594+z?h4Jz$VmH9!QWmF{mKtojy&&>*Vk5jYD^Yl z%Ad>jvV2TwGMWCRz-&!~j0O`nNo41)RR5@crh~~}{IqzE*ClHbp1uBfBw)HkE6=9NAR#lT6$aQ@JuCS3>t~5NnED z3EhlByKKeQ=chm#z6jex+u*OFJRTTEcDh=Xv5pPpx;0c|gpsYG3V&;;O}B_*dodz7T$f@LRoZ#SqzD=7~-?A-S0qX;$@Eo{A{w=P6z@`XhPe?(xA2G z-A>GloK3hVGh*m5f5!iZ&XVsN<$IZYzb4-s_-*^*Mbf4hVpv)9Fqj@BKi(5C{R2h- z%XB(u!Bow7kjJt_C(a;|*T9!uR~#nc78?35l36R6hf5~<(6W|2?nJ|D8c+L@2)~~t z@9C~M##C+7Tzz|Z#Swnp#adU>Vfhb3!ppt_`M=}Pc%s}B$Rq#WptbU!DDsCa!Hpv? z>+M$<8;ZY*(|bZ19!5Gnic~E~+XH11k!JRUG+2>z0-R}(Vkz#$4U*pneh%}szW-Hr zFk-286phGLRJpz&79-K1SW5QqB19bRy;zEydU>F^)3;G*ZUh$Ogx-X^elGy9#pZVOICtqfN9cj|S-? zR*xE^2T61@S9s9-2AFB~G-Zv^8gqd9ohaS57%7v-OyEB(M<;+06-wS+JQdeKNm2OJ|7D*ec)3`aCt|F~ z?Oe&ds8GhtkZ-n#%BMk$t0~GgLcoznXE%;~)_i8eHX}vX$f$_g$zuF2OGPYrt-v+{ z`8k?b7J)^6RG}*q_xJY9Gd%Lk1{Fn87HSVg+8puH0gRdY_8O^g6scNdst3wUA`S4k zfzSC8}#F~}ifA0t>NBGx*e z@zz3LANgIv3iqvI+zkVkyl@PZ`XVtaRU;-6T%`iaUx;+Q_sVkYvvZ8lT{zk7aA-P^Mk?xu&G@4FyYFOJguY_IX79qlb%s@uo+eRebaIE5gt_1I( z_oz&x_Qz`l@CTW;>2zfJ+eg@h3uIz4(HW76nPHiPs8xxqOw0_+#I(r7|F|;oz{1Op zz`T1X{wnU4g)Q7WSL?~>;J4o0ruD4F73mnDv=HfDDG!ji3bq}^LAux6Z?;JNr1$?4 zDBSR>c+~d-BNLH;Tca&UKef2HVD! zLVFWCYvH>2<#eh}@4QDtN|kHj>iL_p@D(XUtNGV25(ReHJX{*H9J_4%Vfl)_k!=%( zn`{vNh%>uOW|iA^#Xao(w)-*7o=3{OfK;O16B^-yJ`oezw0qCw^f2yC$s) zodG|+tYG{5D{;5K_rT9g*4p1+@%d?g*QDk5R={tH=x6);>bTqAd*J8a9g;|FwaZVF zmf!WkeXI+G-x9=m&oI`zK_WO>P;Ub9(o3S*T*i>B8w!JqFnqVS-|V**+AgH=w}7g>EzWhW;vmyh{viyXx1G6^(Cbotm93l1ow3cGa(aL+jM6Nf4-^3yQ4U-7EZT zSB)3BU9|^(zfgYKu<;^NvSCFsO}vhX?yI&C8o!QASrW>9=nw?$Owarg#q~03gyKm zPLKU%!0#%T-&H<8W9Z44?KnalnML1|5h9V^pi!{!xvGQ|bReO)%H{LxynL?PIG;?I z&vh=J>s&tV0iQO}$9BY9avaPTK3P)M zVXj+5oct-NNS_eF)rOt9E@&#Hg@geNcnLI%d9QG2&9Zaei?zxKlpxG!ZHi_bpUx7 zGQI4-abISO@fdu+^KVJz8qdvQRc-Q}3;BHjsk69+{I?Go_Djmbk28z^Tl7J$cIG4c z*zr6PE@k_;;nLJ@gQ0DICtS+*A*CG@vwfVw_vnD%2ngY2w}nOc%Fc>o`mmAFwTxAW zVmYKh3rN-O7~x=57#eIo9xsqD{2a%`!(iy4k%KSinAk+o3OUpqXi~rM>0YvhJ<7J@jDV{F}K8qzb?RniXTQZxyx$ z$lAh&MS4LP6Y18L`<4le({_f(0*8ln22;9Wo-09zO0Z#m$brCN{d}W^(@q9sbp)eJ zG1mDQMvE>VBbSsbA{b@E#XnX@FgoXl`U2!y8OB6<#rz&DvDD!awZvkl6rE8eSmsMW z&B39==a|b98|FIJq_bM5eH*hzD5x3gxyy?loc1Bq%sclqe&_J8O=U`d>y+YG8B~JaIjzCCJ%W+mS{$x-PHQl3 zjbLOH9l8Qnd7u8RLLHl7QY0vjWp>0lUv3THHy-sYhm10sveyO9Yv}BpWFk^t|&b= zG276O{XPx?Cq|vP>*@ziAA7ui9mHZMha;3hpv9o0I|m&=U_WLqHpPejEusT>+hK%aJ@x^Fz;W0y?A&sQ>R?hhiJXz;-%; zr0;KE1@A6;1MEXOeihNtKU~WZUbn0D)JwjSgFfpeU%9)u7bvN`TfgEf39~_3`yrkS zM$#E*jsz*pfd|PY>Ygf5H}Z6mG@`)H)t5=*Soa^h7JkMc?S|9>dk-YaFh{%d9LlQVF;bQlpi@9m*wuS8AT?Rsw6$x52DW%tlBw`E6c zyk)K13`g4`3TthVP*WA)+EFojYzsjVN$8R9r(jqjOP@9!1hb z7lrlr5VVWiM&xllMzeM^nwdR>vhAdX?jdM*w>9?E8tw*wEj6S1hVZB!EnMAG;j(Zc zSn04jEf`k&h)>!0W12jS6T~0R@$M%8fabb!GfkcwvBKP95ywnehxuUfi;mS&E@%^DDMVx>i!f+Wz4tl!4%6!0@-hGL~}XrR zW&Jkplu36*93`@T8#lYAhTo{*=;jjPXXAlUMXnq9`*Jzv%6jFlbLFTae_u{0M-@39 zH(E(`t{hd=tKXqXn#)4gGCPZ;)hC$uiL8>?Pha`*P@PVU!JBeyn{A@3^}RT&=^vvUV)E5(!_7OQw8dIu|l`DO_7&R$}^>EEGJSKhBEX&zL! z#^BMPm%aW}V~pM9!CDo(jZC-~r*Bu`WjbpOxjcl|(ae{!-Q~euASKOn{T3eAoB*FZ z-N0|qC;s_3n>=XX@y;GzM%2WY5y{16xy)zToI(SUjZkkWA~`-uxl?*&v1M}=GQI2x zKASdq5?r+yfg2e3Uqgl57PH94OqJ=Gs}$+vjTpD>QPZF&s@}Sq_fIZ%A?buizUr-@e%C`n~f3A4KY2a7uqR(pq-}4 z$UGNo8J&zwFWX@m$-$hOk-wUVk*?;7#n`Cx`p*wtncxjrpf6~VvU5vVNObeuZUp^; zGmRQeA@r^A3tYWIZ}QP&sXyStls<7X0#^+2Fv@R{Q6>-V@E3$H_wr&+8S_$Sk$^9R6oRvy5%1@a4wGbS%L=$&YK9yKS+`1P;rjW5mrCC5ao=5@?J6t_rHXUl;T_2!3*K+vzACmhb%0tfFwKQ|m! z&Jzyj2nX;eqxcva=JJ|uYS!%tV-sDh}0m((OQBQ+h?Km$I5mt@PDp0%Jb2j$z=OYVliE7`UTEcEQBh7DiD6P(6BSlf$p+xR z^4SmHUiQVawO6OMdU$9|-k+87KGRO!%m)`!-n#IsGY6v*jUh!_v4|h-s3Uj_Lq3f1 zz3l6d^pXxpx}6_sMWp2Ye1b^}ZKqNitlg|-Ar-K`0hZSv;_M!NAV1}`KsBp1`CF}b zXAwRs+fOW>w$!HR@%(M2)JV6b7N8QOH7(`5|JiA&kt75!ZK;v^=KHuJMl5`;Z{bma zh41L4g-5v--Y=hp_YW*g!K_6b3-8Y&YmwS~78&bWWKl0IGM0qaB4fiA8Jo`{hXxke z3?gdvmA`RC(x(;;%w%3K(V)PDN^Jo@@I`&zDGZ8r7 zV>(MUzOFAhmaXoTw!hPqMvi8^n7Ul&RM1@aTI;O-;=Z6UbYzt*v=6fD%dnmTE{%6~b29Dr5rX z@jQ4uNgfydZ#<-$<#Cbnh^1CwJ+@5Z3%SZ!IRUp#PkfHgfKnm;(tC9!+46rssr(Hd zQJ95xuBm(jc~_(hVh!RCwOf0!X7LC9Z-Mv&|JQB}rCU6oLJ8g@N-ex?OSuEr%qId< z`m*X~6Fx}RLcMlk>vMPZ=vaIFvqXcgjY9A&haW5c8XBIf$)z;r z^U^O9oj*uzd4e|eN4<*8EUeAuv(KhppZvUs^R<6U-uihG!@kKl+2Srx+^%`j3Eq^b z8>eK7vU1+N|0CSm=B;Ah`y3AvZJM`X z?%T}!;CXmsBBOaL=YGPxKTBSj<}IH44f8&fylRzx@thx-_vwRZBr81|6$`SqIf<=N zwx8G(L3<;rAiGN=>0e1i7E7%7x8$yy!)YsZpf*6WX0Dhmv%nb5O#e$L7tfYR{9vh{ zXj9Myvn6P$6-qE^oh@OarUS`1f1z~4xtuprhpS|X6^gO!T)~*=V|1J=7@F>eu~adR zG#Kj@W8EylIM&DLnk5*T?uM~?mdJ6uV!-&S;fk38a+(jaY^H!{8jC5V>X<2&&oTmZ zXzu!Rr0#6L?z(fNuBNd_QmU?Vq;9LJTc+l2*SeSZbr)-0O~(>7O4X)yuh6x?!TpvS0i=ig8nAf zxnJr;N`HfrXIc7)l*TsUf^5*xb!0xY|2F&{A>SkUjmZqFGks^m9)pk}FN|Q1?j!Hp z;Qz{EDK6y7inS5%p7O}4(1r(7AMSIZmtW$O1hSZhw7Vww0uIc3E%?T2y(6-xl(G1$;r>0${# zLOCOfCHU|dd?-zIv4kETLl4dQNwF>|7$Rv-O|b+>o(4!eAsY(;nb1Dt*o;)IOlOj^ z!)7yVh3INQ%U9fn{F3S++^Es&H8Pm4cfvNl0~ruIlZl5P&{C~{72Xs|c7B_zHdoKx( zCZIs8gBk1Q zs$Ynb-<8O4>#Uhok!AgbJeWM#rjVWFb|H@@Po2I5AR20$Ug79HefpvBu*{2$0Z(_2q2ia1k-DFSj zl0DlXo8O`p2H6!vw&wYG$Qo@|kw4c*es%bK65%C*59I5ECev3q+qpzXm&4 z1jCaGJuXp#8OH@LF$&UpC3(%OiL}cM`8+FGMNIYOM%JyA6<)DLG|v-I8nqH@gILOy ziX~K#De4}}!nZ+sJyrw?_D;ht5CP9nhF3f+BDhgo52DgbP&zGxKr{0h)I2D^gVyV# zkcJ)Kc&f~x^*Bs1wus4L13{~u$IZ(0R?A56h}*c}VFVs;)43pDdZ)F(dskprT<~y% zay3~#j%yv^5Uyz(#k6e&ZJ*-lF*=bpjYO@IR4|g!%&cp>4=|i>0i!Dv*rV8i(}Uj3 zMzCDCs^F|*f)j1FSR2CV@do|mNj2AF6X@^5c=rRA!wJ(VRF{TR;sb|ZaHQ$?E~NB0 zg|a+tPv9H_80Qh3Nvy$kz?md)tn|eXTD5TZ38N;u|bBs9M|JM zDu}l-E_fdm^iVgQaSR9iQwhgoi8!=8j}oZT-8@E6J#b1H&gpO$R0rT=b1ykC(ll*aK=n&och_!qMNf08k^HL6<8*mFMi98{|{{x4?iIUoNQYxwwpDZTkT z%%x-cbvK4_E#Iq|w#B_n#(PMnyBK?Be60SLCGB}aST~OS(8}%ju<7DDCxpF?V}gC7 znv)=#pJ2Mq&pnM}LYN9V?Ri4jXdF*SL2euq!o1Z+wdV<8x&RW@ifH?&ylLmj;f>pH z^!Ec+_`2=jHkv-{<}j8nU2bncvT(af{Vyxy4)wpBjJwtU_RDC&DDIMVwiOdu#3Nc3 zv`5&Ehm#%>t7*6u)%&b9-)GcEaH5$jV@Rv1z8sHh*uWzh*uWs zjhq{8rPZ$uHMEshzizDAf>D1w^0arE>}0}09|-$Cys*-faL{*%C)`O+ZqOlXXOE#v zdjx~Stn}ABVN#Y|0#~gW$Q5OBmzI@ISspm|;>C`C4mdsI5i6_br05G|+I5$8E8o)^t&?hT(nr>&frS*y5SxzyXqoBXm?t9mWG$uDcQ)N4uOdVefFkjPxk z_39Lv7c-e_95OFvd~2j$t<-y~awOGT!}S`a-o}f#-da_!{vxioR^gK}wTrmSI#p)p zLN2pT%A^VG?F-5NvTh>_jMgSIoec|V>M85?DLBJ38k4jQ3y&olZf6=Q;O-!YrUm3e zv)1$4b1cGXjq@4jdWCcIe8#z6;gotWE;xx`t*67~qm5FpZa(8&KZbDDO4?QPC%Waz zB&~Ly0e|O(9{6N_(MG}X&Ri~cr=p{2E|-`Gr_SuZ} zexa;!UxxKY#f4Pwey$fw;k1@nT<q&$^P* z9^%GPFKH`hvF09O&6NrKB^NOKM-=?p3mE<*0>4P=EuY1jdqnt=dheXivUr3w*C1(s zKc6)x_~T9Lf-TqgZ-CcR16-Z7IwKdwk` zp2?seS0e4m^}aioNq?M4uaLCOGnw?qne;+QdvGR`F6Gb}6V8n@4EXgkJn)J1Xob*L zdk&X-Qqi&VY%cet&`~dC-kHv2wx}{q)49wRDbpln8qVS}PpL8+&*CyqNf~P&rfJDE zF7vc1Q#*~zJS}A^#EdpiWmowO_W*@buc4glJ>$SG=X%dby_nQ{bn3NaGS9FXHA%gl zQ&?8du*ug++P70~bjy`X+K$Nv{N~9X_#`XyC;j%mx}Uuf*>?Oa6-Q<5>y0TTo^Zy9 zS!PUGj*3nkm9;NL7fu|NwXYFV(y3<1;y5a6Uy7Wx;q{fQB46|)G#;R7oPi$QL*oG^ zjno6TLZg~aB=dZ`qynz%aYBJ2o4LEENo8&kBEidIa|YxCLjs1<&Pz z>3{wQ?*c_A@JK!WXpv#61|s_}I(I>KQU{r4nDP}++ZR*7(IlOF1t)dlq;g841vj#& z?9L51I}*Ezq})VW)64EmUO+R<6NwbZ&|*k-+H)6yc%4bBEhG*8h#)(S*0<@WL#;u0 zvE#WDB322W>~2Lki;OsNkx0&k-J(QA`M^yw@$e zx581*1$$FLj|7E}9l$}0j@f+!aVS102-JEp_~>i!(O1R^nh)77lRhzGMTn37OY_}% zFQ2v#63ThplHH%6dT4!>wS6q$JYEhsgU*pV2|ZR5E%R!75Y^WNvoE4kd)Q$2r%xB% z%p$@|*3a7BpS7)PZlX*K1h^GQ#RRGrfU4EhzzPGXs`FA+*alTY+M;Sm8&pX}4^^^p z`)*KGj`P5>5AuGIAu@-3E?n~%^6WS7^+;lLQ=x1K~UmI7uYu()PkB^}(Sn5_bGo zz-b{kCkNZae<+W?U)2r3u!)liDw@L#E_gD1=H#&n!EwN85$g`p<@jJ68z`?09OE4v zTyT6Kj_JVBK>C>!jN>87YXiq52L~6N`b9%lXDS@i zx!{>p&?75}zn%w?|J%Og@b1%vZpE>MO<(y6->bKJ8;;f*R%Hy z$JqvsvjvBhKJ<;?2qXh+;_DMcFcQU_gxG~TM{fk8Tp}m^i6RhfZRdl2_~J&MQ^=mp zk%-PzefCE2;@`&g;jAYsRBf1f=F*`BClt{HV)>+LLzsADc=d1QJ6LM=N!73|%L z!D{w`6Oz5{nhHl7(mhef0t2+-pkAVmg(e5=PbiG!erO?c5UmhkGwJ?`Y_6ciak_B4 zvx+;lMP~P*#8D^WSR}xT2pHYz#Jw5Uh^9$eeHHhs7fmDwNI%_!`{JxBN1+mDF~==l zj;n$=R&iFf$*~z{Rr_`3iyba8V+R9`5j$K$Sso4~cF?`_6=pBZ9291FbasUS+Ke5p zG{sy5JZ|i8C3Bz^WW)|q(Leg<=pE_mh>cflv(3@?DP(`nh@zwN z)VyMw-O(879wh~NG@jit4eQ+6O#6uqCoF%;u=Tvwh&<0EQYm(~M4qPvB1E3oI+5qK zi%2VcCylYYGO;=P@X$GDUp;ir>EsTb@1~)1_(80_EO*aNst0(n18Nsat@GXaYQF$;l$9)F4=_StM2utA&O0Y&ireVCb7E#k@CwX^NW2T-oK)1*kEATj@K-lbUY~0pq6p4I z@;IEBV8@>V$$bk@ApfYoZoHwz!ejIto@t(Iev zoC1nPGzKyhl&|OWA94oJB)glbFl<~*p;OKPQ~Fz_=8nY=-3r5!nn>~pIXQ`h{0)RG z-oZN&5-8+GuaFNggnR%AIa*EyXl0!3@IZr;xX@F_F>cOawo%Qd(uxFiIfG5DC^l<3 zsLL5_vY91dH`cIvq$ZMd11n+U?|CLZC}t1W7LzoIgXSi!Nc@%6lkJMf9XTTu%f&RW zlrw^g!{&;Z*%3xSub8bDW)BVw=$CLnpL1{^vl7AP9305(=9+KPL4efsDD)37ZpV)W zuOIG!&PVNzS1tZ+Bt+Gp=8Q5FJBql}1=%NR1s|ruW*sz3=sE`k(6m?1Xm98$7NsG1 zL)VkVC1 zMGsXHa=rzslCr^Fi8ti*apw(Pb4q;N37q7~GWnBJ)?PSefp8859Gd*e8P{Go<9u*b z2n;wh`I9rz8v^_I@`k`U6Mb;bfoO44CE(EHPtFD#cuaJnyC794}8$mCDX%wQZ8&9{YP zrh|hE&J4tH4sg)qPtFCwI4GKL3&#Zx4la0s4~K;Pw*UuC{^V2y;^449$K30!G%0aN zg~GvMe@=yj{n|Uo>f}$(JcWZNe{$vpPX6oy4x0SQS+sXJ z78y7esmUJ+wxhahd4}!%vFS2=$%%SL24e3NyU_-<9CP?`75N~?-9{BI9vS3Bjgi3& zDagZ@oG6V9P>mPra-zB3!AuDibl2kK5J;rqJF>Sz*m*}$`?!}WjAte?yK5$7C(|KV zUD$!`5}7?I6a(43!jNfC#v-EjtKNV(vnOTYr?q=b9<}}{0Q4iKh%$Sf)R9BBir?r> z&aH^`k|2$fdeOd~XnhVR6@P>{Fmpd6&L_O!sgb+M%-(_BlS1Ee5rt(c zGuj}i8ZP4Pw0VraNYd6X{4b&JFU#RsLeherls4ek!?7!*T+-_2@1nHfR97qIK_Rn_ zztGAYab_G!)|rZu#tWH}5iF%>Qzm0*nU_lBaSeZkra4@}7kwybJ1RKy5P?=s&>|}u zTPi6i${abvYcXVH$ZYwpl7%=bAbgFi*!dkFrI0yF0LBF1=9WqdTr;^&w1Im2$cmcJbtOmb|7aZYE`wh$VHsDIf+$`9Re=GUAiTV)&=Yn$Bcx1xYPL z*7yLj>b+!*4YbClRWg0a;_jSGy;3EUpaHF}hT1}}j?NJWDfKG< zNwf_+ekG_DiK%lOis?(2UiQ^ER-F&>q&a*c8?O)73`9iVOJayi|0QI-D;8f{!!^^X zCh)dYbIo+(05 zrwvKSZL0bkHh=W$ewp$BDdnFCO|)0pj^7LBMB9qFitfvZe4+`hedZ8CYcC|9w_a7G zvz^FXxnOT59=jd5U~ewCRTcb}#Eao0bIEoMdbWssV$9_ZRgwa9mpGEu|}TBL+ege(H2@~a>4#o5CoNT!TwBZkIw|d$3y|xU|I_l zQzfjB0w#5YDySUPP9b&RkuXU5^{_q{K-8-3_;(<+>okaNaB`Z;pv^UQyblt`P{wfL zVZdc8sd_jY4#d7Cd`%HfA4yAJcSXpu<%;Ja$kxtfG(&i{L&W+wo{~?U8!D;Ult{Bd z3I6rPU*eRrJ|%W=%RPWK-UET8G(07=o`_O*yam8AvB9WhhXatl3{wD`RM7(!K+f91 z05Jvew7@B5IC-d5Of_5XxQjz99{iNZ-Rgr>(OwD;HRqBRLg<;wAQyzQ*a4%8;Ou;B zU;-SJ;Gg%~w33|)PMJb76-6-Z4j4CK%Tvi8>UK~sJvFMRitc&qPRSnvM<3*JCd1hb zI3E%{seGS1SsGJsUK&q;aGr$#O65GyxjIKMq<;g-xEL5u=iyi@kZ3wpLrV8U8pV+I z#bviE(36y8^XUMsKq4V&NZEc!qWuE_iM|9V>C1b>TY*IC*O2-uNI0MB0s6v)Y=Ywm z*rEK6!asI=Ym$6eTXGO7KnLXV72l`GTmpM98Kta_1M(6(;VMR$vB-OroGGs1T*XLI zlOxtacuGcJEmNpGP%E*G+nSF-QEJ_+x6zbkS)K9l?-KmAWLI*EYEX+x=*>KzLOF^G&N_wTVN0Ky zNp8uGR|C$9Q_u`1nWEMK5lK#~eG&=T<0Pnyx8t{wBnkUeLgB(O%*Q*PE14?hqiGQ{ zd=YT^#6ZhT7lu-MMc3bvZgSTR$U&Ld*i5DVaxOU2$E(2q8t~U*Uqs1;dk+6X1O9~q zU&gm37irzpusnLgiPHpe$;C=He2#pHZH)NnV<@h@5^bB z?=^|d6P#3hL3#E+@UcPa8>*uEm|0|V4M`ig%DLb*R1iPGwW3p+>QzKWX95@9Fr!bJf6xHzUS z*+d1&))?0&Du^GSx>hp4J#}q~$=JYvei7LC%4HQu5E%NE;X#iiE`1>PNO~^e1|Xs&EFwT2Q2&@ z<=%XD9rJfG`t<)`MyzDCa~+t{o@!q~_{Ix=#nMFze>Co5{f#yep5Y?Aj1g7>;caWs z3MMDWV)yBV8HL3H_8eAa= zG1|4{zU{{{=z%}*~#N>9ou)wxv;wkOX{SzMh&7^Gvr7W*#;d2~&mvK@LBeJ0by+KeB z%|w>=Btt?ZP9+M~0B)y3C5R{^se-`n!K0Dzk=dm-MeflGK~gSAC@J;dsXf6B0nQ z#o&Y+mqTJ8Cse{jBAj%=&~_{yjYM%mx{Vg%qfW8}5f>$CZy3l4m0%<~-dM@vIv89m z$E5W(N&?g=%*D`RqM}gJ-kCzH1f|0{`j1vfV$&2_p(s5_ z&ser>74pP)EdlyxiQ$pn)xlDm_JXB$+a^WNAWl>pE*(i(9ySEd2Eh4>;2aqM2gUhk zz&X+f=SCE<euy(4L{RV^p#K{ULvqz?SJ11UWzr9xR$KZchISagJPX&J33Qlv!3 zSeD8-`f^pYtH7JdS!LdlZRrF}-)Ri*P}Dx1AWSsrBk0j0e08tQWFjY}Nm4n3o}@r4 zTBoGcD+118*fRi^zV$0D_wFQ;hCd%{NjDesUXB65Ib4l zkHMQ|$=u)D^JGn^bSn7_S`#X@myVJ_A{_@?$|uLB=Bi3GTTF~`)>NmRi^R`PNqb&E z3m2Dw3;NQp^qjW1cn#yz)Du)igNt(vF3zEXo>m~PU^Q^iJwT=BnN66gYAZ2Z!Fl2e z_#U9rb2`mnjW%(a&i;|82NuG%vJpkGINAOg->B#ll(6vem@UB&dqv;f7d zo(90+@W)WhB2zJo_pMcSELT6h2F1|TPo-7lZn$5SzHX%|=C~WqsuIJr(mOmz$H&mg zvgDDi3|jl4|Jhpa;?Z;uu+;S27sCx|H7FF)11zO1PaEow7dx(dfa}_T(+x!-Nr7{n z4^AG#$?JqUCp@Jq+JHkhx@tHp1df%y5Y;+lkb|PCRtC8Z`k$R~l}Za`*l6aI7S1>v zT`T=BlF<<>n6&7foD8u18-Ty~OdIg7!2e3?i>~lY@yjBG_OAE-iul!4je6tT6H0kT zL`$(dV38fMqPQB~X0SuOmnn98`NNn1?fV*naj;)Baj02g!NJuC2N!Gz#BmvzB=M9! z5{!fM+Q7lp2!{X(#IX)INbsdk1mobmHgIq?!XZEcaXbkeq|(x7f^l$O8#uTc;SeB# zL-nj5>o#)`>*ZbGBBLq&BoNm;&NDaK_4MkVs{z+^0YXc#`0*q~X~-Q|O9-Qpg&Cr2 zX-15uM#0ju!W_SOR_FxMpw4pbRB1}PA*BRE8Usjl&~<5QyCJ3eAxXe@CLnR(+u1pi zHYk!MZ|h8Mly+8-tn>pPq!l_Ei~Rjll%Sr3e{1j;M^pneU0qt5$%9{4aMzybacx(k ztOlKFQ=SJBt=;3sJm{OF?OygTG4CLYN=GXYlW7RO{19Y^o*t$3vCUzcK?^lr4XIBs zBt81dw~6UixH2H+D@e-12D=uv1sQ=RH-h?yN3_#gvW}tU9+ya(D2C!_pJfQR_OJKKOJQ zI#FfwQYa7hsZ--$DG!e?1l4Pa@>8{{nOB=9M{0#iVdhj$(}*xgC-oQ8ZoATP%z?|o zp_EDEb{6Y6hYCG;(yc*-19eQr7Eti1L4{X-jb8bk%JNIS`Gqme1yezY3^HC(xrz+= z-WNntxTDsEO<{~d{AI^?frS2DAdD(|hO`_n8P&*Ahxp_i}P;Y($2USJrOee^BCxEH`MZm&t*@YtvfRGNy0^;(}h42->0A7*i6|F`W^ecM? zI#G=R+O=yJ^pAT6+O=zkHv#Rc(FNVDor5eT5UoZlEEBR?=3*(6E7Zs^&ux`++i8S( zfg?i~qD%CocFH5qnGBHm&Q3*!>3w&hqLsH^iw8L_5%RPk(;MYLmYGW}1rc} zOLJ)=WJf!Oy0CGHdIj`Iq@h8bvP6|4W1% zNOO^bY<0bj<}j<=72y8dimjmF{QL+^)#zXR*N|7OHvk{8ZFJV6dcy z^Y-IRf|z~`Vx1y4I_4RG)AqA03`N3pDWZMafE!lf7K!l918r;Uk)7%ulukruhTr-< zY-Rruw#F78=!pr(+TWI<<9kpQ#h8vdJ|1<9Ev77-Cv~H3J(r1$PED%RV7%Dzu>iJ$ z0G@bhhC5(Z06$elX+;YoRsoS z-rn#d;G`4v$Ic*c=)}tk?>tphxqM+{2IF<$U64|*3LVLO><3sBV~m~UjWGlsb>4Iv zz*vbf8cpaNV~m|e(7_|$1~7J(cLUDYvr-DxhT5x4TxSL2qOX$_uCrCeQ$&J->nsNs z7d(sOnOUmfQBsiOnXzY)&rMyTvS?-q^K}V_D`0-2K}35Rw~OZ>TG7Q^Y8Lp=nWNLO zvZ7gw8ACvkBg)23BOUepX>Q1hA${yzY-69<`9fT8Rfbn=UoXqX3;#H@8@nK-SxN5# zq}p+fYa!!;peYa@%PYgtMnZ)kj*}LWp79eni*<-tz;KG8J~oFc(;R+=R&*qefX%h* zD$3IEE^Q6oWhOieW2azvmr<66w?xB}9!S%-)PxuH!ZXZuDP?JR%Ugq2XTs~+D!e+% z((rE7@O<*S$%L2fg=fg`Cd$(AR<#CiwFxh;Rd}l@OT)WO!}H1Sb`##}Vvjxy`Q1)g z_zfUGm^R=h`fG*X#+;aa15K;&Z!Z4Y@kl6QU5`of6Z%q1f98Jtk8ixvisp-n(6%|N zFI_*Pvy@DVw^OY=x@kjaB>^~E%I2E)C~tt=!eO~POYdXkSwKDv&j~|;eDR_5KXZ<0 z6@kGVF=q{>S*2*x6WlQP_M8)j(QLOyIz&oeKv(pfFkH<+VXMFT(SNYl1z6&QX_^%t zge}?jy**;@kKrQp>AoEgPmNfA>tS2tGWRV~8B;i;J2DFKjLRpNTb_?E80`wo?Wdlu ziV+lY^_-Q@S?8!M(j+zK7+UzaffQDyR;n!YUz9a5pRxvBM2iLZrPQnJ{li4m;lMkd za2HZt;4l8Rneg|Nw<3niYj*sJ3&XMrR@CavU)MF%aD_suzzY{#gQ4NIzJ_ZQa*d|_ zxJGRaT^cxU=s|R9b)BR&@p0l4vJNo%O4-R|Rf6+HFH z4@JC-z!ssdUW@;XJBTRhSw1OjHR1cOaUpgDMpS^z;G|5V|{{e{yI$Jkrg1CCGC zE#yU>8kju|pAO&|zb`4B44EdR$2)s$E?7f(Y+2DFx+W3Q<^uatgTmW5F2I$emJ}G% z4fw`)6_XPY*45CLd*i!pz&CBtI!U{{=FOJ?yW1*sHqk;!tF5uVKso*}NEp!MzJYgK z;SF+LBa#Nu-Lh?wt4(_YDr&L^8DtL9hf*YRElW;m3!9l!wITq z5k%l5VgBI&JmU{dq%|1Mp#le>20o0Hr=$*p=o`5Gv+)PaTLb^xGi;^U2lPg?+acvZ zvaWMrIiX!(AT+%jt_@sTM?ny+dhciBCAhJt3639DVHF{uf%67$E1cVoMEdP z1y8i*+O@}^dEKDOQc&&8K%yk&S=mG)Z<$YPR>f$e2qt#`a>^l=m3xFugt_JN>dOT6 zxf~{h?+x+Z{oE(Q5G~6u*Ip0Mcq{vGDga0?-h{8VfV_yT4P~hW&%1GvC&ENV{zfqQ ziGqGCsK|XPjJB}oStO_aTcsb3bhL??eh6v^CP zMb@4>HJJ$1nWQ7s++0$Uxy>`$E3?uHX8r0My8$q6B1 zPPCeLK{R&!o(&=EBRsiXLe~$6T~aX5QfIA4D^6lftdz7aAu@%*hu6U7k&&Aoq9zr` zYqSvWXi62+@S+(S1j!+>{7+QDvsh1oIt0I@hP)A=a3gZX4r!N)Wmlq}9iIg=yn{^f zqlnLLV9c~LJ6E>E)s@LCG1LE1gsldSgG+oAc@3(MmPwIfHiysI!9~*~t%&;1+aS3*QYjDM$m*2!_(Z(lmg-sEz(W01U z1|MMtwTcdu2C`WgeOwrAqzd#!Ff+P^88tacYcTqZXrX1@jyN%)&)|E3wgvYYl;=@; zT9NX~(q|L`HL zWsscmABQhLP5~#!rn-!OAUX8}l}^hVFzJ~elHa#dlTQ^|Xdn!+7pWeDY{<)79^UxZ zAAj*l;C&(MYdpEf`xLL$(i!Cdj{`20B5J)N5MY+|9D|EM@`FkG8+_nkITb6oeW;$? zYey|25V4~T+K#yV2Gfouz3 zEu#;7-s}UPPv~LlRjr{ciMhbDmT;{NC3uPoZu8RLHmX|aa@_uQZAcl#L@v2DEBls_PMGTy6L-?(>acY*9s}I{UU1}NJ>V$M${syL4NWw40`63Ry1@_b>^8tr zo|R4Ktw<2=P&WquvEz>bR0o`EVNiFy7o3k-%CoYs8s%qJz>NZ^DnGbK+W<#-^2vu# zmv$EcvMgbC9YDS82S=l))I3$rCp*gX4%f;IaBpJ!%5QO5pO(BqI+~d)zQf&H&Z#C#{em zsWtu00lt3=zUySftj5njwSmvb^Wj?{_-J`S_-oiGjYI6^>~)rP$tqa$KLh-J>NZu@ z#~*vi*HoSlpFappOS{{P?_uy4u4H*mH2N8yXUS7#efT(Uh|2Tf^G{Rw^w$i0i!Nq- zD-8XS)wQNSBhQC#iO91x`y5^uwx$bz3k-bJs#?Qm7mW|`&rVkBfaf`9qOk+`ui-2^S<}#Z!OwI?!S|E zqrb7hwL4RszTMbo18{Y?mGPZu$kPZ9eE5t!AHLnRzarq;AoyN1_%pgxA3h_` zhi^Cj`fI|qiuwE9z-I(!K72-=51+sN7JxK_)bmaD03VK)7H*BD_nYuf8s4wy4 zYbl&oBxw_QM&or(L+qe!F|SV9(Eh-ITlpF+{*)rObCL`DD@66F>s2`nNVqTK>4eTn zl;;@?&1EQhBr!edb_6LdB&Ua#k%TcPd5RbAbY~<{&LyWOwKgLC6VE68^hnrx5KnGS zG93a6d@|c%^GS(Cck`rK3kv}pN5(zcA*9CmrQL{XFfwT(N{SDy#WL@zvq|+ew5-zKgE07F$^)SM09_=Ml0|RVk?H>MT1-@9F!f2MEY^fW~zBjN+!*aan-c@P?hF0jk^RJQo9g@G($=9%h_ko{2KQm8cX)s1@5hyWp8yRH2B!0+^tD`Zjv@Rcg{)hZ3Ow& z|G>i5q{NQZhmXm`A0IyIX2G9{FEOwce1`y6wctw(jM|5f!lVRziQZ4}tp~1u3ckdS zwSD-gn@zyy2DW8}{#t-5_8ZGHF|hUFn;xt`3Ud?ixvRsD7KFb-;94m75(8TwKBuNn ze-!2>;ByChPA$Q=7PunVvIGk7pxHir6m}-y(*q$Z z{h8koeDI3?cA87gpj9iL^3N+eMw%vln}WCoTN75`$?f2aYlw_j0YokDmaAH{b%*eB zXWN0J9K25Ck{u)(vC?W);UgKvI)J|d|H}<0(V`guFOrFOqAYctDjO5PGAAESVyZpy z(-#bCsT(_Fe8 z&sra{&c>6wPJ`sZnoaQ-aeVkj;-6KExGDhMF@QsibG3C`k2J>h)^SC=mT^US^#;MH z%fDe9b^QZN^(WHOuy?thJQoNllhu0ewi{`U+u4nAS~B~#@QRhvi=UQEWpp@!g+&TC zwo7kbo=k$!nT3+s$h(~Ui}lz(LNyzz{fqUEECagjT-3pR(codj{oupDq2*8DMI-lZ zXrVlhXmqc6GJ{-&1>7a`0P+adlMWr+72fy3iyc1{8(J>LV=PW85f;hfB#|GrXe~}J zy+09FGOVjn%ac^dh`5gj8ESdbh`34p0TK5^Bm;h}v!lg76wgCG|74!{C#+45B#C*K z>=fDFB|E29HvU6K$8O?zo2iG<@#3DdWap^K6%kggAfm~@b35VkF4;M_JWF;CuC88O zYeNn$W64hA(rS|>yBC1xbZW7ioF*hB+lD2K77Wgk9pxFa_bk~NvUis3WVGWk9xMF| z?NYv(9PCo0{nvuH4~W2Z_NJ}kJf;29SbuNYKh@h^`%jE>q}>e1uB|&efEa(fF(w6l z?S}F^>ls=B(r%7NyXmwLAdg`F0@ghWAs##a9?Bhf56XErf>Dr${V5xzQP@Oww1PH6 zkh5Xadm_w%9Nht`8V(i8PniOs>gQ=VF(m8e?=+nKxvWmUf^2~G{7D3*E)Q7ugy?Tu=w-tJVZLj2YK{3$=Mp&tq7k>! zEEUSXf<&IE*|kX4Ds(h^50}-+ewXN?^OA~ zHFIrn8*}~vI)dJQ&M9&Q=f%<)P{0QlaiK7p@^k*?OffWX zHxt$=dXCmhbFO!qGsoF<&X{7I3gxGt6Uh1jNY*?$tRKo{b@Du6z1eBb{wYl>{T|JF z>ddxSe+jG)6mviQC9tjsQ=0W9tn^h-`m1;hbEn}LlwKyBQ`Km>?8YflevAif6c8xJ zsZ4%8QKWtzKXwF?HHQx4W4WwOro#o`$Mlv~|JaloESdX_;te~hhpq={l|-fym6R10bJ$xVXjqYc7Bqa@~* zrFrzLDr~MQx(O8ZJu4X%G_=VAZDmz8hDrVM4%~)GFc;qW5q zo)(F^{;T%Dxax|Q4Q0iMK98URwD+A09LZ{mQ2}R4v)|~S(xAE)VX>KaOZFR0T0)U` zs;6V)Tffm%4ZpSsPt;oXUeHrPp8?R3)n^R-wbIET3o_ovXm}YW#4Y{=kYwD!N+&Dz zXOW~kSl#yn^96n8GN9}B3J|FUNJAtvZXffweLThO;}Y1IEy-7NaxMN^vCHun+w|8x zXrmoc#rWTeWU_4%PtS}i0P*v+_$*HMynhCdcKj~vUN0|0pKwO_eNYR>!n(+}2>{;8 z2}C|eyxLO8O(1ySwuO3B60b#E@{BMyn(PN#Z!;et>rS*8cPefiXtm=@PY+o~p8-R(>ioK&&!I6Pwzi&Yl$| z1sgFu2-UN{Q>`DyGUpzW^8NdW-@`#z(7~IS_wSH#_$#(`KXj1BI%tLtdTJe<#EgGE zGGt8~1;!t?Z$tb}IuKF_k!BqFCB}JG1|^NWzbTE7x6Oarro~HL54#e`dvC0H@(*M_ z!zhr%9?NiMu0G}?-;S?;Dr`-88WOsNWzq^+g9yAs)-6odZuLPP)5SKNv3>bU*jkG_ zJ@bp5;T5mS<=Yjd9%f>KjaQ6OlJfQt8-gtGcKbVFYtp;Gw%Go-nME#gHO0D!L{4AK zu{suWX8vbtH3yVf>3H&&@dnI4yemI210G3tyhWVoZd!vWkAqOzj@P~)whs9K6wa_O z^&I`>lSdzvh4e)pGxkOvCo#5D{*4WZJAiGn{ofzC;Ri{-(2H&I-e9|wu@!z7w!XxZ zzosqAI!v&MV%C_N$(KCdUYfs_EvB7@U=`kXJ*KEb8HYX)v93nDw1!-w{@1}Ca_^nE zUW*!QXvhLMK02?hXJ`n`572+JLMgz@zqxEiz2=3jxpTqDY4+YY)S|oM_q_4tH84?QKfSd2=?nP(SADT`V5gR(^|Q&G+TV$8vG)f?v6?PX7x? zL2R_6B62l2dY9C$^Om9x@;0B(9m7XN4t@dsg62TPbuy^mOdLF`;&0_Dh*%Arc637# z!pF0e)eguz0d>lGfc#kR|9YKJe=HdWLw=01+JsyMLhSfDK<#ioAiuH;;|MejCG-hz zdV1L7gl35YUZJcuA&Uzb3#bnfc~p@c0RYGCh~%i`o5Jqjug$(Z5!+uONIPDPX@+<4{2(F`QMa8Zy@d4ITg?`7=^7r!>bMOwzd)tKEw))RR053>89U6G#` zQp(48nn@nY>d4?AoATO{uFJ14CVj~llM**tg+@&Jl5OM}G3o1V#iVbvKPD}1#D~hy zLJharBwX;WLS+N>AmP1?#c~Ui)fVsBWLahmCNb&2zlN=k@g&5ghNNR&Nf+-{(gD~c zChhuG*!n9T#H4Hg<&8-V-uy8sW&YoeNfYHEF=?ld@d*H)gqYNjM<1^|X6%hTBqsg% zi?FrsOJJL9PyC#99c1Uem~?k`9w7ZoL9ZQO+=3ms-vis4wk*pRlNy@Y@nA7UBRyr`=S+7%PEMVUPt3O|>c^07U8pIiJPz%4$X9H|I;2IIg0Il5YE(i9#4L5 zh@vyslM+hp;OS6u*pztE+z`iziSbISoE+IFWZAhu@-KV)7v3h^Iw$|yEhpJDfpjn+ zyUL+Z!j4~YAJz$C2z8&v20I?08{G^a~!%;qyt>tF)zDc3> zTYwc-p%LJyYR;6(5g3@YRSjaK)y|}bhHfXukaolW%^|jGl=)P8U`>aMBW4M zJFD3P>GvJg3}aHr2<|ZpM}?cJ*%eK8zDP|RcIwHw`K<4+p9@=eZ$-awi%nDFt+W$g z#3AjZjdcU<`ZYF*IF8sBw*HGJA>uHcSWHY<#xTY9?wnXa^At0i`!{@*^><*KWqZGp zg804O%&>r2dylR7A7N`3p8PrO#x`efut_vE;=Qo-9Ueqef9b+w5OHGcQgu7^M^mJ@ zy^5yxNY~PrB!3>Z8u27VQ-<`7zGTMU$U{1nWnYJ_7!aGdh*Ydw|VKKlAeT z_1!xI`tJTcLe>^M2}7E5TQ$UkY|68;A3@NAa=z+|NLv zf70BLhp$QPg*;@)@IIQ;t=|IMnznT98!{NO3LY}FhjA;tTRUUrKaBP!avIPxWIcr^ zA&i~tZEuF0cG;8{)D$QjGe^(jah}QvS*IYBMHp)ae+Cl6m zNc>?eq127q7sgUv`#AZLk)#%ctUK@|1eOL8UtrmOB+?mY48%@TJPCoNAugjcP71YO zCxWEQ{@5^yCn2zG9Z7WeNQfx@9fzRY6a08}t>7;jlW0#ZwvA-02-xZ++8gOa zdrM^ODDPUqy`WGI1v$Dqq8-tlIM9yU!`2o&2@Z5}8>^0#*Vdqs2PkHX5b1Y(Eo?o7 zCn4T4uo)_zW$!h%Wv_>=quu~Ef4tQ?wmEx)O*)72x5HKjR#nkCT;9VQZy9aG-#Jj` zUUd#_#9N8}NSxlw&0(wdU!c(6IT-RVoZgJRk%xG{)mTkE6*E`~E2;)I!~0F%18lg5 z>dN-TTak6%9S0(cKVu4GNH*Mne;VWRHvB*31$j+pH;o%_i3IKff@9GKkpKVAJNP${ z7!vr&-cuy2FuQP8Um)?%Ftm>3U%N#TFvB1$h4Vtz-|+w&jTGR|)Rg4^Cu}qr44TjQ z4s#hR`U9JPK7+)mU7x?(L0yAELar zJfLd|;%1M1DQtyaMq}{DskGxua}pCI&ajs9+Cri?-?`Yt&2Gk!c77AE`G>UzHlLf_ z3vAMsCVvvP_Cws6;8qN5KDV+L*u(;de-*ZV!~?ftu8|tpj7Ehm9qpE+mHznM?Q<&~ z4YwjAtkeS#3F1i@VG*fX&98WEsdI?(_QYUEAA}=V@W5b~7zS$~@foZjX+5xZO-Ky( zCK&6uR{{)nMjLSf<+U{+4KP?Sp+9{TwhGZZC76(b&1XXG$7ZEZ!K7MycBiEUDD^4~ znX~a_MS@akqfl!~rMw`eCiczqVGVYCE!OlVVWthk<~KWdy^w)qkk@i<;hjot$~zI8 zX!p|Raaa_F&I#^ld>h)OygkGwkQ0Bmd8(lxnq-Q%obU29|8<6*Nl1S@^s6L!0r zLU*GnNMCssnnCv=?0SAepY6^C)4l^uozL}9UR$fr*hP52RkVGcHXYG|qJOhT4k(GG zK^*)$6Myaa7VMy0dk82Q8h#2pt=&N6I&T2Scgi_?U517!uPsV=;)izTW`6S|qe51}(X14;gS#pkf0q3>s=JG z{)q<)Q=x#Oo7z-s3ZuL>6{c;-r?3-_30a|ISz)TpDuofb?Nb<)+!KW*lA;s_Wp%kA zKw$>sK7|>1d#x}{l9m3uRv0g0wy7|&d3y}@qv3&@?rll0C~jH}k=x;>sbqo(+nC}> zwE54YWb+q6d>@erFNh2|81s!V-r2G@jwp+k7Xb|xkR|Pc2qoqxY_FXi!IsUYi-Pvo zHqDd$wb7VBS~8pW)y|I4#@fLXFAiC0M<8sQLlEj~=HNYAgamB%Tv=0vH*LQ2(6ng3 zZp~7p;umc`l1bZfE`7uV0Mw`$U@ZZh8=?Kv46lLUp-(r!ok8I6(Yyn#L7+9AOUG28 zHbINlO5*l&=_{4|d3^MCv`i8k&!wZg^XE%qOcEQ;?Q{*QUmfAq_!c0B@M_PcQxsb)uvJhQ3hMAS~H`Wp7F@*X5P zj^WL(r&i)iD39q6kNlfRf(g$N(M{KWB(%fy8xLdBS}tJIKh!n-76LfZHT@V0 z?$-3{1ll_nu<4H!(=V6ArVH504|B~kvGamy_F3vgemu|B4%6&&e8_6X1JmR$1a+iJ z0NQDqD7h!5Nwcn|9Xt$0;Xd+n;e^oj=jS=5sir8`d4tep)LxyDL0-hjJ3;cwx!3O} zmWeH3Y?$&IXqcKHD}8@_Y#`&Aptc?K8Dfvpko7k__?(bGe{==d&bEC<*l63%XNYa| zA&G4p0~-i%3eH1(8BhMDVfwfo+EW7D2mz8VTid=At)Q0S#8Q`rsXTn*Mp?kRG)zvI zdLLQ9lJ|h<$ql%x@Zkl{_rpg5^YP^05bjQW8YqxFjv zM$26-DuDzRbIV@s;Hz8AZBxJ3E`CnR8ymLD5zzryZ6)JhBltm6V3U35X{R>{3NwQ& z?#vT0mOqIt&Y5wNsHMGu-x*;e@N+D#jYvJw;>K~LzI}4Yx?~DSnG;^VpZ9YKB1{YS zM`@N4sn6lqcn>4q<$z$vf4DSk{c;(mUs9O?*PaY)zAqUl&&no-{a-TFJ>y6|Xhaqy z`S0<$@dGEbv@D13~H?eM-ps0}ouevte@2h687Wjp2Z!-Zor$YXU#|oRIYz9thm&h(#7e zm{zY(;C%2w8>a`jTV3(tr?e#v~4&+W+nOPD^^)tT2w=EfTCNFEAr!G{q#lSWPeTUV2DE&8*E!yNG; zEufdtayi!Qmp=+$(v62Bs$W)C-+I3c<>PWscb{|YC=P&YrJMeUSp!Wwq?`W8QGSzj z)B3$pl>d<^zeQP46?e>E@K9WH`5``^cj3HPk zIQgK_=>USF$)mqkI+cy_`6dt0AsP&wCvmNG0^rZ$Nq4LJd&3CODGX><>wriM zI4C6u5Xk@sr5rkf0Igy`kG2ko!?9pM+`n1fOK`weL7z_<&@LB{oX_I2CdaBUMgA;q zu~zp-5M`J5IRK5>>QhXAt#mqFMM^)fWyF&YRyrNIQqJOYvzY6Q7F4BRKbEl^r=ZdQ z4#{Z2iG1Xw%dGAnTu5kcU^EZ5j)v#bg3+)9cZ0?X6|PkW#SD26!-iNG=MGr0j`(X^ z!@A+a@FO0Al7C31g&aGZ{?a#C!|7X!7=Ms?&3<-d@v(lJ6qwnC6+Fa?(o>>BL`yv{)003!_0oD<~eF)$?0~ek8L=*eaC22}ylY6M zLi5V1K}aPKwIZ1v7tJFO(InDmw0RIqrfxn2A&wDZ4CW4E}nnbYR-Vb%SKy9dgoS=ThP&LYalDUx&$&EGZ zd9b!*bOq@5wDd)hE!5Igq#Lu}_3q$02W6dUrP!hf<+Uk)T9mZoTK=;mcar=y?2o;$ zajTvSdv=8Kf?)59V*L9EyxQ?ko(x;ZZNY&r%Q)&1=QJCKMntXq`KXPR9CgK(QCiQ^ zl_9I_K1jcg=G)J~TeKFhB>cH}(Q8KZ9iFk?o zCIaeYnnqlw#)Ok4IC2vzacwO5)k2UCi)`UL9b(^dqBz!ar(r%#v zbhNC2)3#UBd3LdS3KgPhlD4usjp)9OKxtvpDg|KF^Z9qNjU1{)n;v8!EmfIR;Vw#y z)=Aoq#krJrAI*M5%T-z>JJb7V;VoJyY0Z`F4#>O8mn>>V*1+YC2pm zwwWTAXqn>ZVy5(Q@imgR@ggQ>3w89-CL9Fnj7_c`i+qG^)0V*!`jN@-eP=tKy0(}IB{hiyb+Px5^A5OVA# zY9r#H@Y-$%Mb<|`nokF##a=Sz{LYoUrulT_c^0 z8cR-rM&}ybXh5>#M?M8(I||QAHn?E76C1_F!`7Pog)PnOY=By(+@K7P3>9mGrhzHAe1{N}DEkpy$ zkPh4i0>FFEWluOg%IG_@dr`( zjBmhWx0E(wir1yd@vId}w${2e>@nPJce@amA>xUZhZ~J}g<=TUAFmL_WC^ASV=6R= zi5z&8hp7Z!i)aA`)eUF6TH1#k=Ng;FD~WEq{Z?}2T-VsSJQo+}K1rPx1{h{3^Yb3;}OFvZ@Z@zsv%&3M-})Ie~1^){r^FWM{!>Z^Dp z_<9n@3uOwcjFJD9WbE_WB$V!0#FT#QP}(4McFL&qa|WdGb{0w-7BZ#(b}6kzt=JA8 zm>GmR12czC;0$QRSUZNBEy|$wK?Y`Jki2Q?23`Wbf$n-agbz|Z1=C(dTEXi;n8()p zba+>mZpC@SIyB<`$QONj*?$jL<;#gukdvMCMfK=Vn!qztT*rf6gP zbH_~NNNBk~!^3-n#FqNKzLM5XQJz2}ek2bC6)TXMth=73|uIYn&f6FAX z`63R~5AHzIUr~5gs$aK=@sH&21MfQ}R2=ExZ z+JQ=t_vI2&J%}oea2O+8@KD(L08i{T$EtV%BxVyh-5}I8CeoGM#;Af|Tj?jPk66X* zt*G<0*jv&6V!HDyveG|*)fZpBof2-ZCb?{d+B39pXIfo{b^b8@X zGIZKKYHqOt|LG8$ioaHjrmAh3Cxi=?pN#OIN0i;^=&&_FQe%Pa7>+P#8YxH;C>$ykU{}UVF>$yjp*K_l@1Li?J@#ycUAdvCx z+@rsv%el2CaX>v~m7TuYwnl&d6Q<{Hi`A@gCll`Qiic}nz@lA2PGl83gF>k>ofES;QP<$x_bB8^C6)HpQ@wc= zir`$BqaAMoIRn3hkef)UJWSDcGmhcfge$d9)e4~&h%6>AiaN?}#&F4|Fcr-|7GGRg z$BRXfd<$L=W2UHL0+LhHR66yRm@z6pi^}4c$A9rhOzjh>cEu^E8rD}0`r3qHYT=~7 zHt{of>k|W%g+7CAPn%fi@Fs0yp=uLaqtfhBvHbD~iQ?1nYY0tSu^iChTF$3ou^bJF zWMs!j01{jKF^s7dNQMm_cK^H<86^Xip;s8_P%X9CI+ zf;2qQIEu-=71-oZQ(slJCJ0Opx>1LXgQju0=?O`@^%Giv?r&$1-DN+-GyeNNJ0_*<>N2dEa$9~Q-}n(q{f@YJkbpR($|Pg zdXEmHm85vXlLDK1wP@N3ZkFQIdZ$oYYS)!gKV4eGM7sH=pbyth9j5Y#N}8UmY20O5 z$JkSg3A2?=6mXxV^?xjq?Ra>(W$l{*`Ug2g2u6`GRi&TzvOJVj>`0zvornL}@pEyM z`E6?;n24QuEpI2}copoRb&{C=+=(=2__ndANn+w=9pOB@PUMpEsvQe1tD>T1w@n6= z6q~Li*Lk$og}mZ-5FYvS@X-O~9lMT5OJUNG0%fG#DZ-@Ld0dQ%X^@`~8&JGNXr4+YlK}nVphd~)s_dx(SeoZkET+NblW+(f`pbf+ z=?3;GLRZ6<+9<)}R3RG<4wZHPobP8X7v#)X;%SLwSr0f8OI(+3Sh0bv~Yg z=X`wtxGSd}ZUy#xX*3!~Bi7=2j(Y;U7IBH^lBkF_PmE5e7v0FWixzA(Gd}@lWG<+dB zR+9jJa}B%ajcQYYs~jJqWe+RYeAZ^4uIuDxM8cSNlL0%-#1UFOAO0|KejceaI<0xNG(DF5vCL0ZH-CqNno zNb~XJr6<4jzC;aVj3PsWIZac#*d^c7`!FI5*FZ$(LugN?c!*1xWVl zD9Hljd!tQ|M>5DC0WOB_1_iJGpj9eWSZRW!t*<6Xr3^6rrZ9fKY<1tQG8`(GV&rCm z6vl_Q*w$P;pz`#rJ!8Bw?gu%K86O0uClKSy!=(v|_L;af*kj_$Il9y)zMO|5mTTg= ztuJLfbs&2Sk-j`UIS5a=G$qnfv{3Mrv7KlGL z0|~t|LF-DQckAxyZS>N+)ueZ;pWb2D!D-OIFE3)#z|S7;dXa-h@c$!9kMQMm8oq3w zY&>QRs78m0$BtM2Zd(uF>HiP=bO}4TP4>5k(H8Y)RhB%hV;v|-c|pSn0r?ETm0)WM z3Qjjb(sck@bUu)jXSr7a_-r_Hmu*eM1CY*5^2A_&``k7_Ql94)Yahs^0Qb6pRNvSs z#_2QI)~KXBnNl~$Pr~^B0B)QWA}XCrk%h{Sk7ykv<#}!!_EC8azWH6r%F6(0vIY zfna6|rm6aybCllx4fO~C+CdqYd`yn`48V5+QG7WR>UReN2sWkO`%Ea*{xTZv?Xpmis96tx15lO(c#%?m~gd7;~?N*L!*bQpEtxXtmg-mH0ltq7c{t5p3MWiICi;62xVm8P2k@ml;>A}aZNV!~rv>@&QON{+ zbU8WW(`$&*VVn$HcM`sbykoKc_6h(o8h{fC^?!)6JUx&P;M)K;AesnpLF)i1%hOBx z08Rq1%K`u~xZk?Gt44D+`yd)UD31&CkmW#00*t`sx6zgF1X!dNlc4@|p z!;!QhYenh2R2woWtzW6b$6df|_J4}ZhAU^vUyH_i8_K6VJe}d%GL{ErLTT4=QI?N@ zWf``ffN-S8GRGBTEEB$%V0kjw-E*&?Jiud_W5^iGge4O!`(c=IbG@+q8ZUB;0%%$j z6e^zZ#{|odfpW7|L~*_sGGduisbeS;wc4@NI&(AF{e>*I3eH*-4@+q%Wx@cI`A{m$ zU7+|392+k7hOQe*w)7HT+zHFKf$*?ZfpT&1FRyXPsfkYU#nKInRmFtjwX5Ov#W=w7 zQH}VveaoqfF_wk>@=~yShAhu0=44$|JZZMn5yR`khKWjAF$oIf+E#5Zi;TFG!8@4Q!F#=A*uIE4qOMLAFa3F&g9J?$ z>?cvgCB+9k8dvaZY$qvcSBa|FCB?iKi!;vr%IX}j`A}KSeJalC0kT@^v*Nv2JCb14 z8xOu7j{~Ugd?L>3RkA7@B6bK-@m^XRw}mKpGuZrkrOyv#3NO$Z&Lv*FNr8B)?Sgz~)PaL8mv z-4{d?yPt|(Hibm->?=aY=Ax3;=#qL^m@TT@xUZ(6}#zh<9BWIu|!mZ5W7iHCrKa>q6dgkt7syJ%wD%ym7yC4WOdy9;(+OtOgsk%+RKN_hifiI0iq7FlU*4 zIS!^g0slz7C(4?mS{tDnv6L{&THfaw{YB=C_JYW0*lS-PgN{rR_ zg)N&=&)4N%z22MGvNi9$AuOKUNAWQj@!2AINyOm4a@qrbr42TDfF|Fh?3PH@BmAsw zn)PMPTKb_)oxq%^JA&gyX2ezfmAE_jMJpv%0H*xEFW^BUafnJj^c-`DKVfa|D;%Li zghMdv5Ld?>g1<30i9`Or6yulPjxVfV1LJQPu#wTCd=}Qn)r1n7M8-b2YFNWvm9+0J zfwx}BHw;KGYig1~n=DzvlPr2&(#$+uXO*%VAZ$x&^=4a(l+s3Wv)==|LPz_@HR8cT z0zOst3U0gV#9bm-j-K?c(7M}2PzplkX_1T&elGD98zMF5O)ngHQbgjk}FB_;wiZ{e!l%o@;H_`~y8wm28D8h8+#iinU-}q41;EZSR9UF*Wirlb!t##-utxdrqm0>?SogRJ79(7# z>&jKs#OY}qthJJ~hxl`tv`CXC3BX1#=@d?SlP5)Hud9uH1Q&vSgDB%HDv88iMWNo$W?oESYnO)tuW5BSZy3UlEq*8gH0TW zJTS8t_ahH#^Wy$>U@?L%%ULWA-^8W&q{e-TI1#2*%mg*|g;IU)#gO719Pzl%x>358 zC7TH{ptEsbl4@)c7NeOIkNe|o($<<3kNfR==EnV2z30XKHEq+8C+@df32AZvIh$s) zCgT1O%eYH%-xWaLhJDpucso79&8M){;g|v$eD?B$>SYsRq5AAZs6JbK2VU6TBCf61 zCGE`PLiIU9RMMRq7G=9)#FXeOZWPj(W9T zm)>THX*dwKYP7g2iq4UDxsgMiSnHnqGUiFxJ75(@xOv1=|UTl)qbXjJ~$l=pTrSwCthYd5t8}i11~9M zd=TbJ86Paez2x|yL+^R*M93mfI}s+QwG&}ldOH!OcB!3k1<*Il_Pj*C6A<-A-3EKb z+X-3)4xYbDU+=dQq=#eO-y%JyJne)@YbQGPlE%YtC-#Fkg@3Vj;>5UoOeiy83JWy6Pn@UtO(*n~ z)>UUOQ(oe{Z=adI_g%asFdyIuz3-Ayp7%W*^FIF0@xDF?-d{*ldelL2?+drSbn1O1 zOnP4kBI$ka!TU}!wbb?t5Pbo>w39zHsw^jeU2= zypO+Q-lyTHacr(R+>Kxz zVs^|S_&diTPDO+`{Uk<+{~XqdLxil84)F+l>bw9f&axZhY=oe^JPsjHsvN_FLo7jb zsO6|IHrL!^n;0{{FX<&MpF_+`X`h<@k8Pivy-fL|E<*H53}mmyAoj)BKz8d*bbE?* zh+AR~!QVL!u^UQrBWW^9Cw1ZwA?u_=tc?h9?}HehpJlf-T8E&#JPsjHsvN_FL+ps? zFe4EmKFA*-yrkuGh_aL>W9k2~5yIKa^liF!tVFGSaSj^SyTq6+a17S(xXYxk%-xhu zwshNq4rAg;k~GSGbzOEk_Z2=k;ju=rn!*PW&n_~9v+k4dg9EQiINh?6nVW3JOFLTA zbP8~N5#u~yn5O9*U|&CtAOLUtW2>T}*}%fXoPq12^__R4Dm)jILE{zZ!vAsw6po{m z$;j(0-BjhM^OV_)q}^uIj?gp@<=<@@=P`i9L-|jemesTzl+olM2;@&~`3!71Gigh& zJxkcqOZ#8j(zP#%67PNvo~Al8QQ}@VEP>KX`(LAU-J%4_J%F+f_Vh~JYYGx5y|n)| zN*9_FDDMKw3(rcR^d>(ND801*HA*+U?pt${)*kiCWkC6-q+iMs?odmYKq+aP+q5*4 z$J?~DI)0i>qp8yBxZA*)uw}1vi_BI@TY9lRfznG$Luo6gNkbW?KTMn=+|NI(?-D#JH%RBcHLp?CQ0fkX{Ks(Y<x#@X1E)q9Hf zJq{>w043FlSkerodn6RMD47;lyxEd%CB<_#*gZ~`p9Jxz)i(+bNAW;_yzgiueJFmO z&AGlUEH#(_4f+Lz(SCB;+kk=$9g|*5>r&Ee$+*ORauR-iROZ_~@8VSwYUk5>Zf9dy!YA zco|j@{zjF$C>xkZaBTGX!;<4ZoW)kLl;0`UGtcst1g zG1m`c7`aFh1IfJ$5m$N9b;P-J^)}U;)46T~j`GE2t1{Y2U~@l*FbXf1%@Rg(xz3uC zv7OE`;~dPkJ98&VHSY4o1{>i&{#I$W6l&%@pvMU~w!LsU%zU|JVa+^2G{4ZAxj_`a z(3)8`bZjeE7$SApjJhZE6v(}Xvd;(?*<(fm;+Tz=+Kju>MkrVzJj2SEAcS&N+U;sJ zChI;+S)iRs{`l)rZ&MG#MbLN`WS`D59O=q127qN4LvV=Ax&;}#0v&0KWuB7CrIf=7 zmR!nVR9ZO@5dWHR1dZR}HRs11jW@Ml7L@}dybHiPf(#1DI^edKc}W5(G|J^fgg_d$ zn8u9(RnTh?QuBLX(8zcb=L_^jkcnoCoP#TNRnQN z8#$?w3)KmY_JKBUBsB8AaO4Z}l2SDayACj8W=FhjDsv@%l~-Pcz+Z79+LH76&U<+~ zbb0J2lcs~K^8Q=k9x*khuNhWZfHbtN*Kz@1FofgE$t}KqHz%a1SNMD_PYjr z2ibJQB9nbTL&tdtw@ZiG`zzxd99u#yGn>X{iaqdhRU;mFSBkT7r)wYC7bJ3lM{ z{jCK+V*HKx{k?(t8;A>v)lURDN8+c4~U&=~u+Gen+Xw!b{Av0bg7-^>o~J`9kx|v*vL_ zB~yO=l_9_@9l-u60B-^~&aI>TIBg#RJ(C9TFBYI1y_@o$ z4&eI^;KnHcGjK3Y?ExTX4I_Y@rppJAY5l%Q2e{IuDHg26P5ecZd8Yg%2e6Apyfnl8 zIT678MZ7eVUc_p_t`_lNS4I00z4+kJ6bp`m^|+n}3vyjB0?4(od=_L{zoBZC$OjeR zPH7h0+gi{~eIUp=3r=(ZN2LH9gsFT^=K~;D3L=1-rHuu5IT7$h3YBrUU#-8o>7~KsQ~8aW-~mKZ7GXoBPOu zDxPCeYO>6WYb&F_HA;~TfBFuHd1q;ZISzL)$y$b2pW?_a3f}=C^W55CLb2w%@u`(; z@Lx1#rR_GSeW{(yLfU+2O`C*rk&wokMi&58UIS!ZuJZQWTn2Mip1q386FcaHW4;`DZssH*Z%fGfqsp@{z_9w+t1ieRWsbb) z0p!psYR|rF6qy5YKtIM1l$e!gueuu*mbW=VM$%{p=6q=%By%jmJHANSTfC2<;H47xfu|inTC=c zkdGzPVoPdeHP&gB<)dKtQ5s8*`AUac+Jr5cmeztP%YTAh?OG|eWSq%|l4-H$@14^s z%RRyF>NJ*Kk1T@vDK^=dQ^*rg9ti7d^(-mi0Y}A)P`5F)gy;2nSdfo|? zOpA4+9ZRjPuC<&HK9Ox(ukiWo&Z3{@bG3DX?S167mWkG6Lio70l@~s|og&YRMw%~2 zUeubjS<9+^6)@LkG}(lp8Ll6-&h{!EjXG@3e(`9l`EulOnn|X8683bxfeFD|SR{z# z*{irb8*KgFmFCNl*J*EHLa-lZlp}festfW+nIkV>Z@{%C6M~u85)#R?S84JR=VO>as<0MO#Wj>Tli-%*Mi@m1G)pbSb zdLBuXtn2w$GA)14!!^K3maH`SSTZf%0Q-u&)-uVG5jP)8rlqx(n}K)G*llW&*%C)~ zbkS3oIE;e8De;-~4M7XP)GpWPBBrG&t}IUlyG3OAeda}vM#^jx57!kwD3`w6LKpp8>nAX9&twJeIE%V9B)D z5>&LYaV4of_aY3r?~eS++1ko~~X)Nlr>=sB$f*}p+HM7S|hxT*f6rf(f)%*!~k!`Zw< zs~K(y>l!i0hE+vo5{~RG3?;Yyf(+s4dxEasu(@^xXcx2^gzy&j!m%RR-XfH@kTRy8 zlQcslT?#2LBqZ5+40(xRR$f}}Bw-q!tBw;?5(#l7?-k76BI_2B=1$PFBIs)fsb9xe z$xdgCSCu#);RNlWg6dTe38B(Fs}d<=F=>@n+Yi7a{s_k3z`iATs4#9kJC!g+C9yA1 z+GaDYrjjP9BoacUiE29%rj-)S5Hy|&b-qui6waxsAa?qlN~^1&CKW_NT2cj(F!oBP zRoX4MaUy6xyqAj`mq-|^OQg&n16m>FNlF^WDwsE-{0NdQt4T(K z<&AbHf#e|}5&LL-+-iF4Y?6(-uSdVNLqx9l{TuSJlc~5aAe0Z97In!B*-oYNr#ZpOQPkn9%Y`UuYu&BLdFUbt(%WH9`84~21j-_OFM8D zwX3#l1;SNZ{jCcc;u=`BeF9mBVrx})Hb0>qRPh{J4{1e{6lT}onw@0)%gn@vg7Ph{ zL1QgnK=>Ey>xf}^Ez`j`1`gt0gP@9ch3R@F#b#i@%V8ts_aMmt7WcG;EKWg7V@51` zIxw3)Ll#^u52|=K#)6k23&{W$+poqQ0AB(a8!I#7arnqTa10#89RWcV@5Wg0GGrkc zz~T_6h;;KutomeNcEvGp5LYaND&CE;P=l%>k^w9hUmYqUeee-&$o`?Q;IeU0#k(;U zybMuD2C&$~u^7crG2#T6@&+*{7j}ax-i@)~WynG@fWu=F z#k(;UybM`L2C&%AvDh1_X2fMEjbEiixb_%S@otO-FGCiR0W7X`=9D4Mh&!GQO!0F> z!PUW_ig#lycp0*g40gfI)tC*W(l3~guRWb#WCjkajP>XS20i0n^IQX@2)QzN892;K zf-+2+B;{5|9te`5e?^sDg?$Y{eJ`M}YERhe`Gt8&zA*BDu&@A4kLH`l;)XFQZ1XmJ z0t&~#Vf{T}Yg5?imekiwlIGeZUl@5nSm^di%^IN9y`tGBp0GaoHS>~uVdMc}p;IJ< zjk&PM`~k=jM!%e zj6?h}12#tlG6Rlc|8_tbHv$cK?<3y%@LQe_{+{Ox@M>E#U<}^#3J!8U2CqIf1CHFX z2`|^4ny7!QTJ!mp((@igypf=aLZCqn+xjLP*f~$o+WX0FK%%i!bGt2n>}- zS{snqb?CZ-7PBssBx%cHVN}I410`bWU64^MGT8BmWN=b3X#4`tOV$QhUip17J161H zPHpgQe3p!zr*LKmluV2DW85rRjj;R(kh?!1uzyw9GZZ%EJJ=kSfaPQhTd+l4BU3*1 zGB%4$eS8}9a55D3%8N7R4@O|`Fe(naY@3*j1Z<|6DzX#PIF=g=?Ck*iM78$4ZE=!VC`fPP8_M`qoPXT*T9q@AWdfa7^WPnFzPq=0XU#UxoZlh1d!t zduza3{%nzkwh=~EJZl9qnOzZTst2P+?T;TlYc6J`t(kz|_#*bM_I9yvGww29D@$X^tfI?N>^}DV6U2b>_sc{ zs$?l4W6D8{tn|377Ye;JRs3AE@AyvvY0%gk8x)ViF=)fi<&#DsGeTb%tnfzB$e^@5B!2gjiL@FUjj9DjIbis zKerSGvQ<)Y)G4VIIV&y5m~C+kdL_PDWKd8(E~X4V<>EU3gI-}$q)NnaoG_e-E!fxL z81%;i3^!4RvL9;D9}^64bFBcb zc>1pZA!#LLJB$AEvR}|kxv;?%63y>WFtDIt@cK&@%1J&!Kb>U%aRVxCPBhjd#a&CK7? zdXRpmRlad2t;C6-6%S%2DJeH&ph4rt3o~X3j%3hyE&g>5KWH#Xzdk5Y-!U93Me^Pi zP%b5Ccnm3<^9)i){+M9s3^!Q}HxPZjCLDw6Gq&!f8g65B*GiV{81wP^j5VCrz4{DE zoZ-f(;l_&Lw$g9lMOsBwkD0`9rkvfO;)=J?-`EeG4eJCwqZ<kZ^TDbC zt-xX?Yid?6ov>6TDo_3sUmeaaO&MMf7TI%_0N)F-`C^UF?7>Iz<}DZ>SGID!OncUA zd=8rpQp743NgQzQg+N-^^53fVw5nr<<(q&-5(mrHmwd1|h7nlIlm@Gd z*7_4+b!;Q`B@Zl;I9Oe^7Bi*6>Y}xl5Eh=VX36A%MG^Ps?aDUPJ+J%+yN6Abg1zHg%Q zK~-V;m(W;h=Ocqj&&cpcio+iUqjzf+!(aMlJeY=lU%SowLDLN`#kRhPh z036OP0U_z3=qL0DE|5avpA!)|cFZBpEDaDF#r zQY0c70g6%k$E8F7kD>2|35I#xuqNq-&=GFklMxur^nJaD)9MF4rP3*9zb|MH(s{?B~HnlI6$6 zT#BoG2gWr_6^p&b^vBXHjzQ~(FK+Se)l?Y`!fSQtuf@2&6g!HsUMSYrVYVx&$X%X+ zte~+01N|8|FnFi!qTX~^E;`s}TFKI#V(zkQC}+GK>yyOkkKr6$N!>+1d=hgPbfP)z z(^1~IXxLXKE-yD^*e8fgW%;$?%xlL(afhEHma050WA?`Z&+=zpPeJX7de>)(XQ{)7 z9Wzn@WjH}e5~sm-aSdAZJB6m|<30NdqZdlADu;Swt zqQ`9E@6IbW<15yDJ}@sm9Jl9YxCk20ge~7xd&)r1h34R8SRZfWv5`5LN9e7zXwm#n zXW7b18eA`(Wos*m9Qbo+Q@jjjmTk_?dkZ(PcMJa{if}w7MrAHR@A_}!Ko~U6#ym&| zj%1s^Up#vIlc!9IMA+fmcyTWkU%3$`nQF6De}wkgK|DL5`-sq&FxV`<07Ado7OC(k z+m(GVKAW=*NZsViS6&k90+O0U>1B^VM*zBTY4{>7T*)84ISUPMhoBEAtUe$Kq-nJd zmZGRi+F8>%g(lXnmz&PIQ@{p^Kg_Z-+sq%AG(C97$Vx*y}**)cPZn zV$k!{;@U(l7ClVmR`56NKh1s=s=8(i4g@rVPRHlMaYW6QwX(Ijys&Iga4~(ZLu+x^ ze20ZDM}`d}n-;HMM3d|zy#3Y2OR zJ{WWPwV3^&pz#;@_ckfhqff*uls`SnBvTcNh-&CqVR-#z8S@p6q$_(2DLZoI1j9Ui zuyqoBFakgy>Hf~Mb>XJ>kB(}aT8!|VgJvm;HCvuv=&V_pcokH&9R^x=CXA- zwbL^`5iY4@Pg8lO3zzFX8TT-qR6gbp_+Tv##HEA0N#&E^j;P!=TxMzVR_#uQafuWR ziMD|ziBoC}l|qwa*nC!1Suv43o-ldcYecDxEVY zW7gDwI#tKX8peacAO>)a;=xz~@9@U~qyV^Z96%BWe1?_=-YU3IVv;;;5$)rydg((O zlb9=pyq9zYl)7>b=5g1_j(D2YdOMz7wH`0n2cMNO3vs~cb{uOX>Sv1GM%1H;y`GJM ztM@YllHl4!R1!J#7b$vtu~E_gOYP2oVs{R2#qP`{=v`Z`5w+>!jJXL%a&jdTuhf1- zWfC_2SrN&I`r4(KM@osP9z#E(CKz@xq7ncis*x%5_Gf7N$9Q(8$L=XqHC%-TZcEQY0d2_gyZ}m<2eJJqVAXZ}$YlJa*S1tt@Ry zsG*Lq`^ND1)w5T_q$Yb8&(7}u61zWr9%hy1#r@re$*?OYRt;VdyXzuXI4wbnSePV< zZ+Au^8)(>7gH`y?cX;MXGyLr^`e!MIUzXqSOo~KAhTj^JgT{dv%^jXHqVpII25HoF zOE6T!2hxh3a4k%!Bi_}c8)A6s7?{cd=(??(?fn7`zY)*Q@K1>0KZVg-vBHQzV`nby zyo+^z8)%l&@U8LH#hC#qVh&FdXLtl~rj56Dp9%+uQTR^-{9)GNnJLZgS1!ny_i!Ww z%?9}cJd+|3k=@5aGWM&%*}J9K-DBuGe1c&fhhI6-Wu}gB_oX*A<;y+5#31FnRff`G{1AlvkcNbrq~fmQ)WLr zhQ9wN80PW+UP=E40Qmo^h&#pE|A>O6OL7%F0+oAyN(Emxe+6e!+Vk5xNCiI%J-7>S zBwI9(A(xk;z?xvF3TlC!6$Mt^tRpuhuyR2kpH};tW8#X;3xS#AsizZn8(_qFT*|0( z`?z|Wcxaeps=ofvz9mqjx=!5jCgw5w{}qqkWq+Z#?5fzC8aa&)b#EVN%=;o>xTYN?iSG*2zx6*rYxDBnNZjJ-!DdkW7k#x>v~X#5^==c+aoi5-n% z5T-HCZmiX=QqZ5Vr(MU%c5${oLlO=*byciBLn0S_T44<&;tR+eKWvrZ?pdh8f6~0T zu_$v%`1x(f#t~Vwj*{~tBhm6BW3EDhvA+*)b-PX?Lov6zjOe<;ERIbgvY>d@=~KECkOpZ&;^Z~FDNp{;}~>>odK{zxxIIcS(qIr zV9~<3f=MOq3a?4weN!(!&Vjuj-;Wj{b0Od^5n^{USs~uWj0q}4yVh4Qsbr}NnV>@U z9V0@*JylVFxm1Ka0s-HM5YEn{mtuu@Q|O#7jWl6WN!it6Xsd~x{dFq>&Rq3U(yLu( z%n%%duAsj}Lj02Em2=N^kr5(OOWGs+MzJ+4Vu@ejJ=XHNCXK((C6&|@Hj6oO5M1K5 z|CsSne?gvTQ8=>J=Ay`m%Zki?IFgDSjKXDqPhFN*PLZ`eMVJJ&tjl_Yf6uQ70|9cy z6>0SqnSn=*Vv6vRe{Qia3MwDtcF=gty+!5@9D_c{)W0R=ZsRyd3=VrUXl2GnV*Cdg zCdPKNWO^Qj9x>(ckF5~ig@0tR+2JUJ@P!%f>{u5LH7MZL4w~n!?(l)&9^7{#_(2JT zp-GaoFvGO?z712k8dh1$vM;^?$=UaK&eNbJ7hbQ12O+xFO7>MSPiM00@!ZAicWL(B zB>Rq%egEai{)A@#98Yuis+bHWXKH3nHR^;NYdtyuw|*Iz+KSmY-x^WWO0R_W1I4(n zU;x?S`sav3x0v_CdksKwbq|!F>?!^_qR@qwFO*{Lz3gVJiD_1o?aOl>D!|{l2Saehqb} zZ^ch&$fQnSaQIIMkTN(yDWXZ`ixAgffSvvoQe2dz_#S2k#aoVIagyRj<W^?6lXdf>;6p)5h2}O+Um+HHVQp%%ZS20taAy%nW=n#wPJJ=4`FI{ zveKk33?#cef9V7KrgG4F91C6}+3$|Bcj^m!=mf}SeK^v3U$TE2WzX@2q&E-RRD5Bz ze#~C;Ho+PLV!FpIqeoaHc)fO zY5-7k5f!q*9GT8(Gs&Cu-oTE zK*4(sI-eXz+TrZj0y)QaXj1r31`_vgh)47f$1NxDK@r%pNnjqwQFn8Ov|%Sj1>)*> zKHFF)>`Io-jETQFL-CX-6q?>^q*`;2GHiDJtJ*s&LsgvW(X z@v1F10C7n(ZOMsgYfRpB*u4jhVa()HyZ`#mJ)1#4(6||4Cwb3w?92)52jcZ&{j-za zC-&2LcJ8g%pX|t(xsMC>@S$nN{&!+;OJL{Cyx8^m=jb8nMtn2bK39^4o#c72GbgZ@ z;d?gyvwi|64jz&-*CkHuI5gWY}XS3=Q}B?;`j*=6i!{PnkDXHH;$>UCmYD%gKY z!F~^xkXo^vk>fM_fVjl$@B0jI=Ea`$nF${k#9qK>m=oB4zbSi#Gd`r<7x3)tj@1Ly zsRcYCTP+WJn@4S!k4j(`;?6$#Yux zq*C3qjJ!i4dM`y4TUvTl6)UDc*>ey^?bzUlsico_)V&l;tUB_*m+qJ=FITV4(Xk;6MG#5;Lad^-1)fcSupMAD`>yt`az zpWdKkI~T+{p@WmCJ~OAS6WU3MlE@2Xv)u*kq@0B~YO>e!?8@daDVv2TmyfkP@dB%`dB4bw`R6J4>1fnz+UWDR{fFuq~1++j>-LHQ6582?1a7_kmHpLQOh5ndpiBB%rbzze4U( zWu?i%-zR@TQXyG$B6B|uEEoKNgukpHe3CeT|7-YUULYD!&BD>30@0u>yLAS^FM9yb zWgUlWrT74r4jL~&eS1ag+&%bi4T@1_9qXJgYMok@b_cGKhD&S3;S#405L`M$c}b81mqzlJ z0wJkUlJPc3({53rN#KGaHb&>g%GfJTMV7u(Ef?tH1@wW1KnqEYlKhWAlcf*ZNJXy2 zg7i5!VCmU-&vLE@sHLY8^b$qXAo0gpdc07)6bMP1lGNw7G=oxSrrxWUH8puE>UQf| z%Vp{-#nc$o!Xfhbhmh1LiErv_C#f?pw||hOZ|da&{hXMZ{ffMxg``bMe9)+7^0(Ze z$#Mli|019dEd*Lf+LYvf1ez>Y0CW)>)rP|gffkY)CHWtLCQBdmwG#6V!5l2-a#<65 z<*$kB3h2WNffkY)B}oUpCY*%9yR(YO2_%VmWa)!u

(z1mMcFuF>Z4u2HRu(^0?% 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

1s64&z|-?-R-l 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�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 p3p?Ux`0d|+%Er3<;pgC0 literal 0 HcmV?d00001 From c3fb764940a0963b848572396c83889c51005b41 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Oct 2016 13:56:47 -0600 Subject: [PATCH 0012/3180] Add staging command --- .gitignore | 1 + cook.sh | 28 +++++++++++++--------------- recipes/smith/root/.crates.toml | 0 recipes/smith/root/bin/smith | Bin 2253376 -> 0 bytes 4 files changed, 14 insertions(+), 15 deletions(-) delete mode 100644 recipes/smith/root/.crates.toml delete mode 100755 recipes/smith/root/bin/smith diff --git a/.gitignore b/.gitignore index 378eac25..bef743e2 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ build +stage diff --git a/cook.sh b/cook.sh index c6f91249..3b91ec64 100755 --- a/cook.sh +++ b/cook.sh @@ -11,45 +11,43 @@ if [ -n "$1" ] then if [ -d "recipes/$1" ] then - pushd "recipes/$1" + cd "recipes/$1" source recipe.sh for arg in "${@:2}" do case "$arg" in build) - pushd build + cd build xargo build --target "$TARGET" $CARGOFLAGS - popd ;; clean) - pushd build + cd build xargo clean - popd - ;; - install) - mkdir -p root/bin - pushd build - #TODO xargo install --root "../root" $CARGOFLAGS - cp -v $(find target/x86_64-unknown-redox/debug/ -maxdepth 1 -type f ! -name "*.*") ../root/bin - popd ;; fetch) git clone --recursive "$GIT" build ;; + stage) + mkdir -p stage/bin + cd build + #TODO xargo install --root "../stage" $CARGOFLAGS + cp -v $(find target/x86_64-unknown-redox/debug/ -maxdepth 1 -type f ! -name "*.*") ../stage/bin + ;; + unstage) + rm -rf stage + ;; unfetch) rm -rf build ;; update) - pushd build + cd build xargo update - popd ;; *) echo "$0 {package} {build|clean|fetch|update}" ;; esac done - popd else echo "$0: recipe '$1' not found" fi diff --git a/recipes/smith/root/.crates.toml b/recipes/smith/root/.crates.toml deleted file mode 100644 index e69de29b..00000000 diff --git a/recipes/smith/root/bin/smith b/recipes/smith/root/bin/smith deleted file mode 100755 index fc57dbff381132614de21e77f0e3edba9e705392..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2253376 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
ol`8cqo_bywT2 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

2u#)7q9Q_{!hE08mkZ4)1vngYWe<7$cAzfzxM7 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

(z1mMcFuF>Z4u2HRu(^0?% z0n=h#qp&rI`WUGG;C{VW8nanz!DX&QAPW1K%=eB7Xe8e8e12&BwSZa^J@uw736~` zLmC>siY)z}*m8j$OwbLJVs4WInk0om*J%E(gC@%r06m7FmmEL6hYQSo$=AZaB7(rAg9>r8R%oElrjR zy6m{$VCgdndPzahBq@E{GEZ+2mlrfyu7IU4641?sEKQQamTuGhUAHt@t^nv83A*9< zLZC@f7<7&1?>cC*RM1P0{|)YO8$mBA2%03Ni%uw15tkP!8VU1>EBUf^L{n2sB9wyGM=Y?>cC*TmjIZ5%iLRph;2~bldWRCd(B7 z9dM3*3Fc<=M-P&80$THT-O^;a0-$>kbi>JoK$D~}=o-!6b}GQ}2dbn{u1#EBqmbGq|QZ12pD zE8@aU6VGn_?P^>EjsM1?%^7(33zLPiKMYe(x-DZGR(UW}rjzo)(K0Q|)epY3!p_^1 z1lRMzg=`^eQ=(6Glg!J(EklZ9Yb5oYz$=>n<}5p5XqQk)1yT$#b!jdqB|{6%d@kHk8(LtMS(p@belc1taDT!AB=Rl5o$4}WN~Zpl={o{^ z>1%kN>vaMCqwYaS1^&GN=X5!rJ+MWW1TI81O0=TDcRJlJx{#?4e7P*%M_LiiJ{JHk zL~Tm6qQITS$y9;29-)1Ktx;-0tHJU`eKeMKaKa**J8qJ)AYxHVwVMBkm zcTZYiD9_FUe-#V-2<`926K$}-dS1oY3FeAw^mSqZuGq!=izK*qHCl+;lxRshIIEHEMw)0nfc1$Ku8@Tg~rSb%3|0X`fVG+u!x=k~&b zP*GIZC6izmm41;U{Bl2G7Mquxt_kkpXGZ31~YSh`JIe}6ZH+nhuq zUw;?V$uy>aa&r=M7S?}(>c5ic&vQcmEnbBg5FVj_ySF`S7Z@wj{{!)Wg#Mt2=`SR0 z3H=Y=r3?C#$k+dAJOm--Po@R*XU@XNFq~&+0o`iVv9&Qjz7ucQf+XLAb&h?1n5QO?K5#x&!ZKc+d4vRwr=o zBbL1vOC@`h$_I>*x={CCyq_5|6rNzJC_~Dc*RjpGNyYRLh}2Ec%n8LlL`jxqXRHpD zvI}@FTVfm5Zy_mYJPZZ=JPs_b+HIhAan)|{nWT%W!^F4!bxKm8NW#Tcl9XO`BuWy0 zvLzH@P?Y|M?!PQ)OI@er1|HEhTyTySSIN>JWGolxy#+KLY6Hq}MK}SPB(A8^L2LfR zAfo_ivRnbsml1S>ZYj(Ink0om*J%E(gC@%r0R6mx_GhpXmL^Fjpi^hC3Rs#fR{->P z1ifTxA@?9jVbE=wzw4GJ%M}2Wg@7b# zV!sGTZO zGN-jb@@W+ELLlz`4*q2uu$j+fkK(y($x#|BuaH3e37*l|N_QOFeb!TT;B0q*+CaRm zSl~!;THR#xML-IMI0@BX1SBav>u6<8Loi6&K+K(;P+#+pmuUmH%Y|uq0x?;pwAP~y84+1G)X!E zt@*nSnk-iU^iKj>=X&#iCP^otHGkJZlcj*xn3jC7k+lJj3UlfpPfY8N8eNv%c`erH zBY1W(?Rlxueem?pg*Xt?Ue%apyH<8budUHV0DjMUl}S#UK;)nZynyQ-yydUJ*pEL5u&Ns?;m zc*;thfWA^#%|dx*_A5`V??kOfpwh3ZmVKv-o#L{S z_!Ctvrj?YcUWt;JdIvGZh+kgo9T?c%y_ zCdjU{4%HgYvlhF)c_5nWWh}Rhl1ba0!so7??_MpD`@k_p<}w_0>lK}|B`N~u9r!B0 zy723h6H4&Tfx3W0?2?*!Y7HS+uZU9(2wm+hLb6_w&@4MoUQ_eztPaex3<>xa54_!_ zW7acr`ESmXm?}5acVLbcFtfG{%)L1BftjRWIC?H=RWJ>4Fc^hfEJD%%5(r=FV|mkJ zxqQ4}35VjQ@}FNrz3i-YY2izFRtxL9EF%l+yDX)(Oj?*8h$q`OZ_J>*ct#lgJz|s$ zyBGZE8lGg5K6zX@cW*K(!&9mzJCJ8Zl%#&-=e&&cQQFGC>_3!};T8TJ1uFQd2r z%%sXSn#kxHVf09TM#ub`m(goIIee(R1f7ktiWZzdi`eL!I{0F7ys6`ujX6)X3LdsJ z+5SAM^2u4P*nliK9I+3__a00}jl$@-{ET8tqInoCK|9bZdzCPHFk+-3Dq2}&6|@aX zauSPC0LuS>b<?gt~ zgYHtE;*WJq^Y~GKPDih7Em>rD$j>O&!^y*F&ecUwZJIE;Fk;kKj2&$ah`k&|8AVCf zv*%tzMvn`lcOphfWAE{&&irVl8;VeAOZ!l@4S3e#Pu5Jni>h#`?R9ezRz3F+M#n~s zY7?G4vA(lPJEnUv5M3dR?vEHH5fyk@$9dQ@kK%7%jf_4PMnT`as%>&+XEs`A4L)f< zm@Kl}M~sqX%nuJ0wo&gaUy3wU7+nxC(o&1cnD1M&eXl&le?A!X%04EH-i{b05#79c zXNdN~i;`-xE8*Q&cBavd=F$qQc6eVR+FckO6EW(U@NB+hu&`>sLqDh{d$}-L z95G53|0;NEOJPL4F&OKW{YV&@4V-F8i}KyMg*&tH7uxJ4G0sA2CwZB1ZfWLSaPDH58lrY=$g-lG2K5GHZTrUte`LUT+oD3~5L2qvk02 zJr(Cn%_%q+f$mmISA`!T-Fns1{A_m{dfgT8uWZbDg2j}-iB?JPOq4tF8d2BX9RL-A z#$U0jl*M~FMjsfQ%sQHxFS~3;%at2g$cq#*^W~c@mNGU}Q%-}xWjk`ZvCEv4GKbSH z;BpK(O>vy~I;uRFBuOcAI63W>b>mnx(#{*?dfF*v4kxGGi0)nGq?9?FoOV4OC)F+$ zlO!o+j1zY)cxAWJ=2CWAKmo5@+1YnQ&fxSm%8qF{oSb$yN;>S+DJP}O;pDWN;y9^x zshDipB{20%YRC5o0+Xr`@XBe&H_u`?ER!A3j%hJW$|cazZgnj?RUzP&)6SNi%+x?Trp2^VPBHDe%IU^*PBHC5PO4ohCaYZn6JClG_snJ8 z?CapHKk>?Gw;pIwc3P}T8PiUE+-WzWdjU?Kk1J&kC#PLc$4RyGFom2XNhxET`X{wx zn;m&3ubg(4lNRf;ZcK}DN_ggo?gcn`KCYBGoMPIAoK!mxQ^?6`m%zl`5wWPUtebS& z!^$O}WpLWbOJ3{-ktU6MFcXtj>$~H(Blwe2ICn0VUJ#3fDE1I+m%r4 zzVpa?0z>EdP#DvBgiJ^eIq+UJKA)SO$x{@XJ>u>{4`K6DSU zQsy9by5HDkPD+`>$>~1DaZ=q=F-ekA8pAak`OD%QG=2!ZyD{Xw$gD1rLztLh9%G`j zOHNB56O+y^ymIzWv;<6pHnnrc3Wl>qOsplapOv;Pf#quhits(q=1jB%OpCPyLVC6( zO|%4-RBO(`F2;3ukYX)Cr;xr*gLFoB50YM%R-LJOdyr;_qzb7EEkUP{#JD(lRyrY+ z6Sf3mrI6HvG&v+yNKs4BU=`Rx3hrt+&eL?BZF-OwVt=CGGzyEHW}DM?>$C~id@c&> zWz5^P!8sp~%RPW&^bZ0nSB&-)JaxPVNAtM`M=za=dJWEhLR-k#IwrK{Q*hLy!c z4uf8%V^~#4;}{MVbDxS)?=2kpJ|e-@w}WG4zf7(MexxVSLYsNk{5j2MJ=VW`PPl50 z72HEMXQKHeUsrG+3gXhQEos-9&$6?$GUPO$okH5o=JX&{imDEhUX~tfNj*r*-+Xoo z2{x8L57Mt;nTO4%=b|2@$Q9Z9bV6 zYd-OiPrM1)xf|2-H?EpHbJY5nvs#ELt7^8!b+=&V#m;FB#&1kv@%AF5_pCYjz5r8Q zZTKD3+=w$ib1(xkBUO-$?_!{}ssPeH>j%5xqr;&$_X$qXtET_pU0!`;y||qYgG=xXP9*1d3vwu_+M~uxV&4{ z@n|IvK67)~;$qWhge2nno|f01lWW@F5g)C@H?_Y#O|-#B1e8p~PeKn9Hmm1oSSm_Y2)m=ViCHJP>O z6HMWEljedVxz+^JLLxlrH!I7ld3yE3%#D?{W4NS# zI&*WTHt1E`%~vC#{ra|Xg*3qKdkv>KiPXSx?hpKZHb4Y$>5xQs;~R>SdH4LkInR>K|q%F}8Q zYBk(3Q4Mzt3RJ_Ld`?Zu$yURiQ>&r-Y}M~Tj2&rb8M6zHK0njRqfmMWKB?vWq&G;z zZ)5fOnMtva_ze?2`+&zOtqQjzAA{lW~+U$;qb_%1~!NC}9fIHV_>$o-t`(h4GiczEO0!><|&BWiR%|u_!#H5(R zeQioIS8gxOqPE9Ejk1Y#E?n94QEeKeY)Ue+4GqtoO4;aTtP{0{h?(+0k+}&+pPP#5 z$j(8UB=rHLywB7{#bM7woJ(pNKs1Yc`IVCOgW*637ZtPfh07+P)XSJ3){B_WA!5x3 zA?6k*W;aGFCuSda<#esEVubJ(Cq^jsGN!9`7@e;7`MNd;2&e0V#bH0BQ(f7#J6#`i zAVgQajOnUkoUZr(MltvMV)PO?%1ajqroLj!`vM~!-iq<|SI>$KkivUq6^*#ZZf>uN z8+z%znu-gtM9b9v6$jWHwH1fiUn7RJ;@5LH`dm^(vjkO3aPB}a)y5_^^g}gHyv(0# zLsp+aerDw--O2{9ONvNcC)Ae|k)}?_?QfyKq)0RTj+w74BCug~!+3F(y%6hOU&Mt; zB#mLxb#gVV?xnSG@t~!9?7#Q=a5Wyg6uX5H{_F4bdH`C%QB$CuQF54 z5nHE39MI`57vW?w_hMhP>n7X*VL@XCdyo#r(dW@H?rBTxjY+VlHR>ij>Lm@-qy~u~ zj}slg^(dYzSLoGq$oM#W8Yc5p9KhSS6Et24;r}FnVSfK2WoT*6kk5AN&~g|FC`&5Y zFg5|EiuXj6({d%)I%ph#jYzX_^x2|QA+>QKTX;gYpb!_A*;m5W;!kJYkIfN%wxa5( z2woI5?}7A{`vJk=P7yT45e)Va3{I$NG7rZsszo|_k}>mf^f|4oMS5EPBAx9Osa$zQ zTAoGio>aj?5Ns8UbNp3S!JgX_Xwhp-CFdZZY8N8slYuQN(F=jC*>TO@{%TDL?UNV@60lqATLY zm|u9~TVR&%s6*eg;+}&7bM~P{5TC{D5k=LS^5Mu|EcvzfnwTTed4i`F=;*%szRa~Z zMspX{!J_z#LwxQ6luXlMZ-31HN1YOs9=!I62QuboOg&T&l@&2|Ls&Vh!=BO6*8y0y zbh1k3?JZ*ysT-hY381~+Lnwy!5Zp3i_vIWUa%xB8Lq$-$`lasF-IwG1eN)h~eMo@nA%0&t?FmjZaa3<02*9a6hM0ri2k{UxPJpd7wKLUJl2Tw^@U ztQ+WzAKx=0dG*?5o~W7Uv|NcF)f@Kcg%Wg$`)XpV%yd-u7fyql_C|vQ<5dsnfl+Yt zakwm5hHH#|n`Yud|6F(R8(asC|Ha!W`%gxuzKcMOzEsUSl(|SnDA9IVX;Ukz}fm^KeV8&E`*S+qrWO2ddakpqt;p!IO zNufEn_^x|Cx6lsUIVecZ302=IDD${QEis2~ai^#kLwt;w>n3n|7^A}Kr@G&e-@&$y zb9yT2VD}2AA<+91SfRSAN5351OIlT1beS3~En7Ye=97qa*<4{t9)nU!pA%w9C`tKD}> zlM}B*OXHQu$?$||FIBn%+3O0H`w!DHiWZ!aA=jVX|1K@1~wO%W+iQ^E$m@X zXK$+0A4@h7@j@aVnZhZ7xGj!&r0@fKMLaTZpI{F`Jh$D*lza6x!Sq|=-I=?G$6C~SMJzLY zpk!JsIvyvScEZ=DpG9Y?dQot8Y$s85@LBvz^LANJK=Yc@bDg$ROkdA(_hp!t7F|2(3}1)`Or5F;mP||Q3@2E=mFQpJkQe1! z8K$MN#Fl;3%KN@AGS9CH#SbWEdlD7&9muvWX7;LsA@S|N%d}`3#2XGMCKXDmek1sa zW#LqNk)-VJ-gOxg50sg#cp3f)7eS*d!yr?@({5FfbU<5%kFkQ?TnEbxO}u}#8 z+Fo?M=Wt_Q!co1OOpMW?e!>Jqb#T_A*r#!8Rl`Y=w40ySUDGCV7Oi>@;etC(4Bn&% zll~1NR>w%EdjBAMhX$y1@hnVrZ~&AqsYgc&2Am|f_LqCkH2|Dxd;OQF4pR0m(aLU= z#Dg`lq)fR@a1;Kgf!nJ>upARo-_PEaS=4`F)c6> zQcvz?TMHYJ?NyT`2AqX=XzoEyAk`K_^Wn1IvLR_qOgAyS6Z3ky7(2Dl{$Whai*YfU z4`OtR;q`7Lz(q<}aHeJ1vUle?3FC zT67?V8qSct7De;ln_)LwG%J&i=|@m*?F9;V`boT6rkUnUKaKLBjMBDFKcA`XO51Vr zRlI7}tD8<cn554F*`*@ZgYQ`5-QQx3x41=&*Q}<$sl^&^ zVT(21oEB@mKeUMP%9QYjSz^5QOVpIJ(v0`sEHz%O5`8_(8E+|ZrR-8ETL5-w;u5=5 zIu?qQXJ?7wT1kWrHM7KU^?EgLmNi_n($1MBhBG$jOfg)C(zegEhO5`qn`Xuh7u%<@ zHS7pU?bFtVKT_nh4e$ehB~9x0&rap?NOireuAy>tOqB^fy>`CDeH%z@pSp;_ag0Ud+Rk1h?hk!ceu&xOQIt;9&4 zDX&>2Fb#P_#u!YeMW47yTX~LMY3!1aYNn>)(GtHQvE-+@*g@{5)V-k-uSi+cITDmcF<*kinyrA)9 z6dbo9Rd1gtJkft?+$P(LO&o?wEwp;kY&R{ml6Gd`jJjBCFS%RNsyFAU#r6)}Z;o0_ zuN_-<*TLb3S;BXp$o-rKru=XWYcK%|%R$4eU($=o`RU)@aTuLy{>!pf$W9 z;?01&X29;{9e}BHdb_;*RyK-XB5k_^1b5Fx#LXLvF;|T&CCMABVH990&Z~eUK_C2O z{(W;`G6NSEo6Obw!i6}i`!95Lf|_OfqEWBuu^%57{|I+7HDBV4D$BhIZ{ugrnpbf) zHGjn!b&$8$?7`c=%I$9W9n=IkXKG4uE;8lEqJL5^yBan+oOazB*GJ%2nW-ehvh3!( zo!yydQ%>%>2K*Z4>u`gD^ra+nLlkAPVBKwdaH_313VTFlVW8rG+l$Rz$W>f1Xmw*a zO6ys%DSll;X%+15@)wr(h`22Kn8c@uuze#++_-t zcmCEz<~bZW@?P$;JW}S!JLRgRJyqVPkhRX(6nQ6ZEB?|2{YaT3FL!}M<&A)>W76ck z)n)xinImsD+BJWTM&-?&5tv0da_sp*m*tT%M;^mLsyyh{k*41!UA8AFbL2&fZ_SsC zg?|~tS{pPjKFgRlaOCL6_s+5Q$NY1i&A9<`LO|%Bq|A|bp0j6%&87By8@jDIF2!HI z%(drIn{$0%9w~F=4b3Lk*i_!8khN=?ykB$WL5%z*tFA)joA%Hj=bHw9M4FZBae@m zrj_3g(2e8H9C^ERSwB+d$h-52^!niX6Up+M&}Dg~%#oL`Kk*%O8!z9_UI7kwlGb7T+$nnn^x$;`m;~6P)M;+ zk|yumTzN~<<&iQ+-tm|@v*mYLJYLU-tmo3?y_#EoH8y7=UXwCM9^d@u`-{f2&mgN0 zre1UG*_Nwc=r0L*q|A}WSGA?d8wXh}Y4YysvOH4e$m2Wa(&SCSDE}55Ir=@>WqG8` zk+(Qcf60yilJV^IF3Tfjj=X66H}A^d+W%~~ITQ80lm2H|>gq3Z|8MVK`||#u9v|&7 zvB=EDk>fAzU2bnlnNxnz9=4^n6x5!JAnV;Ud0Xc8&&*X?@`?IK${cxTon2(>L#@rF z@_vA<-jh=FJ1AFPL%KXt=E&nDv0wjoL_r3PpU%U=C$>-wKQ){WvE%o$+;|q2d=-8` zfR2w&?M_N3?^HV_gr=%-v@KLj zed(WS_ACUMZ*zt5SwrkuVaPDmQ#d2&;isd!}gS&mN4*FN}ndFcO-o1M`?M(|}j2;7FF4-?iT_zc3O; z!boVUCgl-!JhZwoMKgb%X;yw=B#eZS&{Q4ggw;|cc*HkykOdTW zl+EZn2ni!$Bs5iS$|q4~PeQ9-QZ(};_5&1_?u{gjgptrxo$NFV^QdOC>jLvE`ijXi zyTLV%Y)<=Fh<4vz7rqeFAe67mZcp@|%xQ5k|AdHM`$5cu#fNq# zX1LAiiFwc$^Pm-D28@QW$}(ec?y=Ms-Swi`7AWuOEb~MBb){t}JSZkFmKZKOJ4=IE ziuH74L@CR5^Wle(5LfbIiQ$LHl4TV?yQdF;&a-(`*bCS>n1w}?!hXyZc4w+E5+;T1 zIm%dJ^(_kUbJ6S{dl@rk0)!pyYi5Owr`HS*=$@sI+Kfk0Gwv4_H#u6Q@yp^udNfH* zRV1#qH7@R281X$CG9k_yGA`~8n=v6yESVG+nX=}TxVYUhnSCB7v=id~s_QLraaY-l z32~%^vc7ig5K75q7GisWY{2W$af=GxLd<%}4@K%Q(|oi31^ciQ4)c!9h&h7DVWyGL zmEp9=VQl!jH7@MEKU#-L2zxtM*t#~OFN}mqVJtxvR__Vh_EBRN;253|_ED~|{ZoaJ zFexnRVYk{me-<-73PIwXGkr5!&Enr{d6V*lEeFJ{A2?mAQGj#FT#uPpL^I8UP}Wipnb90S(D}netlP?2M-= zUv@Fx2T(B@+oUESn-TU+f1x*q9l@F&WwsMG2k?W&7Kpe4$MCNiCE<+C%so6{eq1$a zSAbo}(%o&wama}H&>)0glMq++Lb!~C{L5T@1s=!X7el(?Q6_9NyCpC!HQ(WEYJS2Q zyU{M9m4q0lDL8`02fxUepKy%qE^p8ZtH#LSNZY69D^~T&6%4vE?4wE*K|WIAQr;_W zFHP0IvHzS+xBR#d0+NEW*iCmZj*;JnPd`W}w(Ekw6^Kr-UZx2)WlN`y6|El;m51(x zhemOX+*+Q4qRQN%r*AoAajXGb=~angRfnoVp!Ad|6nYsOPCL`8oH@|$Dr&e%h8rCs zIrhrR;Z;d}T#nK^IeKZTa(7FpoF|~mJJe^B&h=^a<_uOazGBOA!T-0fJ<(y`C+-VkNnD&2>_ulbU73m-FoO_dda|uXjE2F zHj7<08U>q*$Ocj?)iVd1>Rj41yKFQX(PkHvk5^mvRl$Im~wBbYxX7&T=)xZ~=l8?&dLg7foucKkTzgsteet=dyt)sGWaKdreM z4fPX6S2~7eRr6}!hLXMhgMy4Rz6kP$1<6>TXfKyBVL>JPIKikX>-Y)YOa(s)xQtcf zy}|V6T#Q?>a7<%sVP9j{!eVNd@dVWvOw(WI(AYI~b5!GPT#aL}t&2g}~IUYfRM8r^EamvZHq&G!1>5u|V$%WW*FpE7eH^A*LQCF;n(BJX49Em0;94(Sdtg6a%U^a(hvhtgg0 zZ_m7er+i+)TwE087jL=u?nq3m=4>MqII%r2B&~*NTv(rVC$gO<7jXoFoeIGKTrztF zCcfq83r!>i<}52fZF651913_uj@gB-91o6(*lRPAhdIQSvkM7pmA2~m)K{MQ7Ek%2 zTsk&aMs!@HIyN#b(D7zh$CDi$Z`l|f&k!BQ4@sI6@RTo4^d6;^M-=gFOkPAU_n!PT zvWzoEH5R9~`CtHf5gk#YMs_!Yvb{j~)t_$6f-WeBXA^B;c2-v9XJeM1^Wr-;S!iM9 zr}+YY&n6tyA&Oefdv(g6v$vuIB^?ev4iI6cj7pl3RK7#n&U&pdcd99*Mwfex1>V#{ zIZP0#JERGdQemA29maEMuMFpc;hT7}81iK;zX>Uqdr0yzBxaN$U#Q?o!Y}aO(!|+SQGas%*Woul%CA)Xp6(_5N-e)&cRujn z$-?iSFy@PcVbB8SW-fJ-uml~Ku?Iobe+$%QY%c&Zp~uLuij3VZR~c`Cx4WwGWHD}~ zBx8)NVWs;48Ai1rg)uGcGTu%!PE;k$)_BTKOiWK0SJm^I6gpi+AbR+m#MO}W`9z;LzY6n8MgQ#C7nZ#8cAwQ=K?Gl8HUVs@E znrz_&PU2}N?3-*@Zj;F+BIWKSBG|7B8#&DflgT9_<--zkiAZ>4q-52?vA~D;!Y?q{ zu-qn#^1~f~k~7B7_YJ88KEHe>dkFfat6{Q^$!#2yEtnXo){eJo7wksxvjyw&%Pv@Tq@XojlzTJ~btJ$197oc8f#WX9a$G-` z@(V@-i*k1g>T~3 zT&sd8$!|gO?%&YDzvvz0kQ{{Wwz$#a#z+ztIYb>ak4kcjNlCNY??Q5#L$V7=LOA)0 zktEENJ@!WYJi3xx43bm-5R%6^B#&x^Bw>+*nlULq0m-6-*zy{O$^H zUrzGw%#sp?)sX%TD!A8;E=Nu@S~|j>c}MlfTav${r6--TxgyM{anNNczXze;RVlIO$BsSO#mD&Nu_rOJ^b4!0 zpX*ixuzx-aAC&RX`4q}6tf786s;QrI1_ERtZeJ)KiKq^u3vKyj>$g<+?OcP8p%y{E zLNEQGEMMC4t48mWN53YQA2GA|h22)8Ed}LwE%;rT7JeVR9p%SUMKONY*_<(c#LVKC z{jMPwYP{Mf!0)UK_*ID^LVG%mPfyiI2bopz#wKtHCD{U!!}mfF#Yxf-LFJ8+BrMvQ zgQ5H>$r&KGX`38UvWd?}lCWHZOeOh0ki3Nj8<&z-N#!F+SahsaalO_(B{^pAq#0M7 zgCt9&xZ2{z6eld#=vql00h0IP$&&Izyzrb)O2TqY&No2v=T=A(mTM-hBtM3Px89XQ z@h;Kp*JFwkmaE-VlHK-6nm)Pwk~eSVQ=G8qOd<%0I4`I0m zMb?&(^5I;5$)Qd@DG7^=dxCwbJ!SdlMvy$`XO#HUrEkdsmfiAkDE0s<_MUWL^|S-R zNqmAP>~=7E+SMy5ejv!J3ab&=GlT`8Wdw0ULWYBj3G3$J0H^=QIxag!)5~mXj`u-T zg9)(n?OgqNnkPWnW`zT(fS;>@Gxl&b=+cS?gas618W85}b%h$(Evrbe#>(J*ltDdL z5udh;h*krqO>{MIK&}P{^8{!hrdtMt1)!J)gmv38XBmw2%OF_Uj%i@_O_~QDqz026 zFLElRtAPV@HF$SGehmoArvYKz#^uytimyTVYNhXL>O~`ul5aS@CM7EYmUKIz;HTnG2YO|sH+UGa#gL}gyi=i z*<(LA=HEY1quAk;KYZ&}0(KrZaRd52kTGcN{!T>1Y6KB)*r8m5!G4a-U!A!R0>?&j z?d8!Y!%>do^v=w^mlyA#R@ojxNq&GflI&QEr8GQ{lCB(*bm~fsWPFt4lDrb+9#@iVp+b^Q6Br{& zSY&$2wpjjD%I87u@J&$gy}a+7NrW@Ji;>JXyi=09?w>TLwilA@%R(ug&N4Sdiw;R6`k7S0i5Byfl>{scfaj{xd0;XnZf zuvj0(rL~RjWrI>zExv#T!|Ox~yYXbTaF)~9Kt{B1U@N?9(}KW!S`gOlj+|}e zGkzPHz1Nkch25C4S~v@=F)bWeObag4hLXm#ATXa6gmrs4rxu_4S_FGxL0`oJ^=cbY z4xKx|x1adUsep7=cyq30NS?$An&l^~SL-U|6ZGm_?Ob;ZD81Ubr{KHZc*>`5{7H>Z z6Y8*1ho;9)YG^!Du}IdVmdO`<%1@V1AZA*y6D})R*ItiRrdg6R)2xZ}XMfuUb+$

oxIhU8I_m<~D7nLKBzkBGnxCA$D|lv2;Kp;n|Lcm$#y!1B+?sOrT>LW=)_&4Rr#YPs6N?p@!Kr?^qcg z2n}z;124VR(eV0KG<0Aw4V~#}Ov9|{X{e!2PxEP*l`+&XdtMu8_#`T;SGx#x@Hy7Q zVae#%APtx!nJ_}O5gB*m;lxSMLbQn8IS|D^krBQcl zM~qB{3k)f_1{RZ%?A4z7zofYdPx(DL&fx}BtCXrrc8{FL4N2yhLe@z8`a0?UDCN4^ zDc9xEa^2BwUme(s%GYmSouM30ltz}{vW9YDx$00ZP^LyR`UkbMGKS@vJq8TQHA}-U z91WjrMMDP`)6f}m$280ua)%n~kUO7-Ss6nOTN$gXhLIkm?R(Mo^@Ub6bYL+JIsFL) zjcJ%QH3~J1^&qh_%*q&QnB9Z8-*42javx2@3-X6!L^{8~zERQ0%Mr_EW4lf2lIf`} zO-k2fdEh=!pi&)FZc;>EZiDBl7_l!qD$mK_Cp;JbA9ya#&(oA%yeY<0owz(*%mr2X z6dFTCo#x@ihw+Q>PQNKxf6-VV7^CgMf+0zB51#T*Qgs+VVL&-uCcNHvxU>VYMmbq7 zQ}*JLi#6vcyu6{pk4p(5KYs}#!cWA+PmCWi zv-pLZy?!p`w;gybP=0nh(&~4BUF+E}KVoL_3pXcSejSD-%_uyu=RrC^xBP~0G(Tcy z@ykA9rTQHSUjN1k2JquDS7=Xvd2GY_5i^Tl_IjuC`w0Brze)IU4J_p6ubpj}A2GA| z1uMiQHP*|N-~7{!xf2icv-2)%PYxnu{@Iw@KZ%*eFMBgv`Ayj&Y0kz2es+Ro`S}ZZ z8`h7QS^R=sh@eMNepi9lkL34tiifpAd-{jGHpK7i6fpySU)%bZ&p#LJm^3fo0Y7`Z z!s_QA(AzLSVrKEnSO0znuU&@=Kc2e`_4ChbZkQi2v-sun&lTYHZ{^3ci6KA#Oyh?6 z5i^TlzWUc~MA9_lfj#YU4r@>Ur00hD5i^Tlc(`MkQy*5ME_}}V@O8=_SF!xqCC2K* znq2ka>l87w_=WYM#2&R*|2%D{q`46f`0fbiD01p!`CTdX7S5D zY@z&~1+TA_pFQbi_4ChBM)>(HZ;T%?v-st!f9a7)a{wOb$5W!Ae*Wpw4f7*r7Qe7P z^QBb%UIDL7_=3{cDSMpC>gONh-7r65X7LO52oqo8DxP$sEs6=?j@zq>N@4~< zl5IUfYE-0W0!m^DL6UAMDRBy@NDL{Ziv-CeMsETgM;G%lt{mSKHaTt-`is=DCpSr& zpYV*_zYW_`HYBWMBfXP$lxC%YcU_J227zIw2FuEIc$L8Q@A1s?4u0lxD1JrpW%yux(r_s4F|MOnkGEZkku^I@O@=iry7o> zhRc+p?B@ZW7+8s3CO3Z~P8?IlUs3V1ERK9B#H+m<+`d@Px&$12CDiY=~+#K^DW zE{Egn2W^V`bN_~#U82A4O;JaR40X*(b3dMuTNLlvM)x#NVKI9T_lWF4+4pek1++ym zVYo2@FADC|3js#&8HVkdpa_o;+CPBqq#K3y5k2$L9t>Q1i$j|wkcYO){S@d9S}e5h z$xl0{-21+eS8k>KG3fTaNoaTeL{DIDtWBQ62Nv?k-AQb6An0DIwEg=amG;EBkyo&DX4JK}%6%W`cDz~S-ZPWe-Z^bD6B(&}Ms$ zHnzdiCd`zz(pJ4GHu)8F54l6+wspQnX|qNLv=1U}z9?de6KKj>sq{Mu@moQ7trEAD z#|qA>5fI0F3>3W4($-T2tyCTk%DvhSccMYT1A|)!x3nFDvv4A`V+PN5@NuOzG#?vPsA^jZ-e2(J_S2S8Rg#^gZ12f!%*dgJkGQ@b0pEuJA$qtnPC zvN07H3;R4=tC9WLAyZ`+D!ei*M(1`a;7^@~c+N$m4xQWeV$n2Z;h%ODp*%ESNQc*h z2J-NHUMP>=9Gb3~K33?&G2SccVHGzv#72-dYNV*&s9<}&fE=iDLg|)^8+T7 zhh;Lv^RIA5C-~%@cG#RwL*V%Pds%YHq|28P7I2Q^O>l z@Da3Kr16G^fq>kk^lBf6aNkhCV>cvVU_QKqO<@{Dv}3Jk^&*73N~fgeLM_~y5+Xc!qr8Jr%jK zcZjzI&onHYC#{uw>lcz%{DRHD74oCCYT!}dAzyk@BTX6qxu?+X5f7Gzz&+Al@Q;&Vw#IM+GWpy&UD!pM2K4e3%yS zvE#8LEgxx@bcfj0=MLd>FZjHpcJuT+fh-yg@pd4eigUznzCKI~_*AGq(<~o7!YE%N zQa%-SmsiWD@+e~tzyp1Jr&PP`Og=Tr$1fkI6<=fX$I3^2UWO#DJ}?&i;A`m8eJl9E z_g?he%MfqZsO(p$?8@(Z7uHWdw+AWz8%D3R;tevlk$-@^F4&57GIvFAbuZIf~NUwCWEmLwoXFzT_oW zH9Z$Zp_wV;J7lt`9uxmWSY`#DEb$MHmPSl`!ZMBLs^_&Lel<`wAbyFWY)E{bKh!+| zw?CXBMZCiSSP#N8>NoqcpW4}DEGXgafQklG#%_v;ItK(f1sb%^FA2eyKy2RwNpQ~A zsM>7LSrqkg-{=TfF-;jUT#Bmm0ibrTP`t&_nX!PPt205SjK40y z;UeNX5bHacB2IDqhOvMkCkSDw5QJ}u27Uve{HbS80yp%h-gF9%b>kWJ+vRo#S8E?*0Y$f< z2{L8;bqUUf>iE0~h`lTXFVcdR9(a_;SU_+jP+`RyZ663SW&Cvss?xuJ*iQA7kc0n7 zlf!60G1lbBJfV!gE=iT~5RiLCNdBO%V`XG4pyQw&1gW;I?fzhTL?2{{B51&wk}CV^N}RXl<`+dR@)v!o3U=F zm{ahK`fUab6Lv0)6`z!|b0G*{!^Lkd8P5cc{6-oHM&mO2jRaw)jK40)p;D*c zMS9s0l<^9c(e?(61r%+Ms#Qr4@ztw5GVTOoD}~@K?l6MUfMTpp6Nc8?A4Xu*`3Z-f zuSbWTFQ?cBy@zqz(5;iE>I!||#vi6sdA12z-^90iG@7ZHFY7MN;sMA)9IV5HsG~Agu9Dpw#OnAl_$rSZ@d39Zl$#D^kdaGq z;J#$G;4T$p-Q1C)=Z^GBoW3Z_-p$v>tOfl0^br}Hrl-oAjLL~x{$rC$!4nUG6s$qu z`r|A%e2{{;h_9bzr695?W2#8O3Aad*eQY923a3rYl7hz|Hd+cI=aM4(EQLx@13NsR zwm6U7tv?Q`@`kD{td%{URESIQwpR0{f(u)$QM;jNfo#f1L2SV@6Jm?txI@qZ4wd=s z50GGRUzEs~H{BMla#VSC9M#Ch1-<(xGvGW~J(H%f>PsSUrXUFNf_BCzLJikEtG*&a zW(|BBV`045# z_Bw0?!)1??k?hs(4T9&BXrH7V3(7b~Rfi#Du}=LW;4nm`mMIbP(GXCgMvA15zLu23 z)a|6;7lYSF%I{>FI;;$Kj<95Q=!pTxMsh?SreBJC&yiLqmmMTBXcCFB!VP-^2yhg6>}`LHmw^$t&eFo0hEf9+~y1 zN-(wU8SW_H{8neVLX3w5CQCI_Mpr=5n_*Rrjn>L-IZC_-UY4o2 zKrF0{)!IU0z~FU)v9?f9T2zYV^3Bz%uL_;jm*I3J9%SHclmK!u81buYi(07rP~m!H z8A-Yy8u?Q~ucFY)S`}JQ8i~S|Ph0!{qtGPze-Qc;3SE6+YnB!iLzMr|geFN>=r^}B_Kxd(?}&G}Wu)lJ ztOsAbfoLZ1RMjQuesE%$tEo!|?V9Z-wW+L2(3#P$;g{7VY;0DvZ^d|x`pzmWGkg?jTg5j zo1j!EiX+?l4avrwB3m$w-A#((eb}t~VA$>K=%!PZcX)K0!!8VIA)QT7IClw0qDrs| z#Lmh=@c8@$2?{3wnA6XUdSRu=S$kd5T#lz|a*@5A!8-OSyG6XPD{xWov>Hw>A}q3; z8jJyU6q3t8?rSCK4&i6zAgQ`fE+QOBa>wE4L`n8^r6eq} zoe_{!DaV22&3Hiag8QRG`-`I_t>V6vgz4Z%)^lPcKLWYKZxE8#=q0e$mRGexlCa1w zPK@MpAlGIQNKPqo{m9uabEKS7L|CMF;sswPrF7qEILe1-Vx1?Wblaj$^rlaW6ufOK zM1Np9uq~~*-`?Ca6A$(ZWiwx<{q7+hEy8}#Vk(}A)12+ziQbJ-<3vB?1x&)Q`0DTX z1jZR8DvW|h&?|r#^@@q!(kRL95w8FyVY$3QrJMr^A5DR!2|@ZwSA1Gd2?NO#G!V>Y@|9x#;+Ue(bg=zh4R+*r^I@;Lh&E zUv&s)H>MF~w-b;#fT$dy2=4EK8vxm&0k~u~x3nkzAvuwhtF(1K9XL?mlv^~fL`^k` zWNqU&v2Tj7TqJqY%Bu~mF*@a1;~!Cye^-)f{n050w#2d%4aZ0q$q}*WG)6k%K;g@X z8dzhT;08bz6M)S!)|og#fT1D#Db(6(7om%!T#8}A0g9DBfE_J76E7;LiX5kz=W~_Nb+b&1ONwccjq||y&Jn481)1$16se3u zYAFUvnUdQbshAeoN)1RIEu>aIgdY20kXo6Hb_f%_cDsXAbClG|B-3=JDvMcMhNPxB z))`L_;)j6n4N5$EcxR&5nZ(y9ap_*co@shMM~HJBQHW;C#RxuersX1@ zy(*|?c@|RlTrOsDo0Dxwe1H#ET350*A)DVcI^|p}q4snZY$74Jms~2>L<511s)|+?+cJ^2G(j4q*KhR>QAz zPFyH-As8ncZvCAr5`1|~ff;zLNKk=_4hfW~e^E(90yYEzmpznAot1#&`~YT`geF)C zNEZ@t3Xw~Kg~t_`FYv$yDYOrv1pLN{YXi0)0hgEr#13FF2}qZPgV~WtU=piw{44NZ zTGOjN5LQ_DGi>&U^hA_{E4dTpjF>Bj)8pBZYMmf!-bl-fmp!}Sh1ME5n#($5I&oux zm8iy)j+=!mQv@WF!A|#I1X92FjWrVo;-XB6}k&iZzdT(TbAi3^fkE5R$TgU?M^ zkW2-GTmXH1Yk`>~x!4G)7;Gr!hqVbWnLyT}Q>4|gHoZqDD4;hPp2HaReC*iySVcTCC zJ-WQT9$h}gqP7L9fBIzmOJhfu<8=0d)lkqfwBO!4Xy=FvxpWAMY$$9MlPCJs_`7bb25X)hl{Rc6&K;9MEa!(21S4?Im=29+@-~@NB<;FGYuX@hjW` z9eRCWp9KWzYxsKPJ@Mg(o*Dix{1mr%X8RNLBgtG$7|f;A?d6LmgLfOnAZKt1(C9?Io0>yYBYR$mgyd`=?&nYA_P#Qf}ySsj4OfJ&B z%jWz9yS!-d4i?1Q1QXE-f_a;w-fvN#QPi=8520mS;<1Q}KRI+P)P}7+D35WJJ@7~? zBI+M_WFaHEu<4aQcpOq}T)fF)nw34MjL&$1!oa2W&En zVFs$Y+gntOVp!JG1#~AZfxpD!wYFSRW}1?uPk6NttVkHb2G8T^9iV`mIxS0@so1vusEH$&@-G8t#U*ZAYqP>8}AEh_P;&BPU ztKH1V;)|1HSJpImtN1LsS{<8Dx7OQ_k=xAP&!495d~S;TS%JQuw^ zfzzmX>;{6H=fnP7_3ivi!fgAi$oJ2efyW=0p4Oy+za`9pc)*uUP8ok(JS~qi!SiP2 z%lZ-dcr1!R{*>>@p!I{&YbG9lgkG;zR^KXMd$s5No-nKMjF^&OQ+++g8Y8@AIHg_u zAB%^YBa>ADO-T@D%J{3~lqoKP6mp+~RO%0qdz{}Fo6gb52rq%vBg7hc*hXWS>bbgj zDhQ7Y23n#z!O&<>o$R{81Xke@tHe4GAh1s_bGG{Rbt1sSu+64b;1d;KHIxqpU@X(< z3c$380E`xow}gkO0cxxObPEW;f35{C6#+U!`^vZliX96umT7hcU|K`~Mgt45sRC?Y zD?sEe2v-2L!0WKU7xa**1^lmQYY{M(S>p=8w1@zV1_D?M)LH=|ua&q0aP`2e-2vL~ z8MlD{4Kfvgv5Yy>@d2hq1Yk4}V0*Q|{#Jm<`z9(tvn{F@MS$<1eXq$e3#=aJ_yA&= z0j>bVhzP)F@duVLS9bvOosg|1d?08vdo|9BI$<5OKRIrJQpX1v%hbC9FfAegqs0$d z!Z9a|yg}p^!8c-oHm9Nn@QM0>|JgY$0>&~6T>+RD5rEO42xhAVs%;UlbAbi;PXuUJ za*kTSu7$(=r?Cj`V!e|*($5qRvuJieS}&lx#Gau!+tpYsZS!Wsl-JRmBsN`%(E!EM zEE=0AjwY3u*e2|#IAoPSZD{`qLcI+>DHD?enk8l>BgmBTSJm{fwm`tEy#^{i z=&RYJlCgHgiOp2Wq~e54b|6__AvOh4o$X6z)#NLy0kKVh1~nU$n7r~TZ|}R3aa0G% zK#H?f-UgeRDpvd?uP*WvqOeW3kc%s$m>->@tgpH&u$&}a|AoN{~ zm`uRntMX?{)7DLbA|rv4h1P+%GvL*J2_Nf@c6)?Luz6wA@l_l6uxERM27Z@xgtSVT zRkj@z1gy(wPf#Nmnmy9kbDko9E%?Q&%mw&*2_EpFmiKcq%=b5W}WrE5cK{?&SM6CH0=*cyM@$(Ybj%PI}j+d zLbUKU&@~RVk@a}b7SD*TI!6kMA@Eo&txG`aEt0c%K{>?m+O)xTG#(!>P&S5lIB;4b zc!AHw@Fo=}%_VqzdO?YmnE6p}S`D1fB6xvWV)VWTPM@|Ry}&zTczXcnqzGPUKYB3# z)Gp@&=l2L+-~%ywhquECJv_c1Q?bS(PGAx}dt&vZr5x)UFMr7O4IXrPZ*d~BoIC>T zyxOj#JTniW>LZdF9IIz~ zSzJ%tIm(r>JX{G1xiY2`cfNEjqXL(!PUwCH*EdH&*OxcHK;HY2b=sZ1IgYN31zfQr zCVWKKmk9#bI?+{Pk>!FwMP*ht1ec-Ui8E`(ur4!eSj&vD$QnVw>`W=ez@Ga>FHGH8 zRI}qU2t~syNyY*xM=D7fu3Jn~Mhutap+d3= zN_tu`1(LG!uL`hIG@ ziFeZFa#lJ@v!zv<%pf!a2OKUm-`T@6o8!vCv7en2DgLqEzfm6p%{esm-C*oz1mR>1 z(5ZOYzmCpL`H!o&*b!lnNh z9E!vcu9xkPV~Dl(NE zGG5RHukmkncEY5K`o8v$0*t5ocD@Gxib{7{&VAZ16UIp6)M-6J-0&$eeW&7nq;x^) zVh~l*{4R&-6q4?{5?hApMBk;LQRr22Y<2#nNz;!V#!h8miXB z{R%Qh_8}MUswJzhOZ9^fb04zLNB%yfY}NJg_aPg&yVyrJ7ay@XSesl^gj1p7H z!SkrgP;fN8rea~8Q;2DBt4fX+{s6c%h2j|?JXl!DgP|^_lH>l&l|W{Fy$$crYSY0uLG&AhG&G_`2pg-iCY$LWaG&_0pr4TY}k z%Zun%;?$7tPME~{FJOvKpDZv#JEh<83^g*H+9SlmPIT&QL#a+%AjGZNHl2FgP=`*H z7TUGbPByK)(>R;9Ri}MyTHj6w+q8k&oTXOXG*g*A|A6SGH2G8k zZ2r<+s4aLY!*qHBA&QGyWJ+he?cs^hhsvLuH;-;Iz zeBa{M+7A#I#oIKiS`e#BU6^qbc|#bv@0`5 znzhRIM| ziNmJgE~c>EI2I)#?aN9cv(-6cXrU=REa6uvSs;^I&Jd~;S)7)H>yyQ_LIlX-m0w^b zf--5Ou&bJKCE5?Byoirjmu`vg=xQB(O}wAo7(*b)mG)oJ=}LS0bSGqIN7ZL@1lS9` z+#T6(-OA6-Z`i0=7{V#4vj9?K>L(N;E;Opr&m|wR7A+V;uI>Qk$#q0e-|@1#YPR_8 zMnax}M=?8#iR+dskF0T;((>aHICDkNYLvKwq!E?|lA!_8&{MYwrnFZhHunX+D?aF_ z==|PJy(xVSAf9n{Ay<@@1@QzLK@qBYDWp`*@dx<6U)g?#0<&NaE+M4*RMqhi zkCG_uA?NF8xUhv^92a#rWQV9c`B(}3O1>{Phyh+gv=E|31emV4JRA58QTT%Cw+KYV zuUrIZTMWELk!jWAtaJ{1CE$(o0Oz2-s^cetyjJSaik~aH_4s$mIbdfnI=mEtNM8=| zend*V7TXFQk{T$-BP)5jvK;3JEBU_JmJIBUl>O&JnpZ!C_2^8d@=&DB!Z2$T8-u6@ zl{_&RmRH0wR@7?&|Li>EoPHpvN#`5YUBi`60_%qhfOP=+hbo%ERKA6@%P#hFO5a|& z4r#Y9M4FWB^afZe!ct#gspNa;XX5q52&6mCe1RnUy-pZmWZ9KI5Gxe!_wB&$_a%rl zhXEcc@3`D8+bl|YMo$K?TNU^o8P&M*F39o#?wK65Xay`HR}YJ%Is&KBeMu_c25Q~w zKxH3UCB0$gmq`2m4WvDbYFEWC2sqAU4ccKufqC@rz~TYUDtGMQf4Ce0zS6QRfj*E9{g*3{LWlg0f%DE!nos|Vz?M53^DvfS zrB_@Aud6IsfC<_U@FaGRA6$!+A?OT`!Wo{@rPwCdzM_V%7#WF_KIZw;I{lzdr1RMW zn|GS)-2rZ{zIQLjATrUn9()UnN>AN{h-~-dRG#!w+OL;B8h~W-XG%M^PugyjIzfJp zch;1k>!z{p>wo|UK9a%)tr87yCA+bCT>xU2GouG8-(p;IsV*HhwekY0spQ=QU%Kt6 zR=`M&eT_p#Q_1gS?vJ`$`N3OBbFf>fzf%;}`niCp2WOFpBxr`xrXjx7^b0`|gT6V` z2l4xiPB9!X%m?vPiVo=h0F+gD{de$lWfk6&@F*?3EHQT3(a)77#)9EKD2rE{5k4qO z!VWw6pzmZX5mEWk5EPr*mtHf{&y^+oNUYH3_B`>DPupM~GYH!VY4j%;CoDs0SMs9E z?QSkG{Wwh2$_3BiKy1lOlrRTAPc$OHPmvuu9RYqb?+FI@F~VawisY!J4ab%IJldTM z@PkY^U2OzcO$?&Q#q-%5&kI=V4Kzl6D!1S**D08O`u7+V^*+aA0>Y zmmX-=!#L&TO2^v_ux{;xsdpuBUQM3!PM_(6?Dxu+lZJyvbQ~HLednY7=K{Qpyb% zQ@I8Ho!uEI2Vwxc0D(x27^W!I_&0J8aM|gNW`K>?M_rKV=&{&%+#CVUBM-%Dj5L{A zdQg`O4WE|-%+9G{D+Jgr?Xfii?3(_;0K2${`#OB@QNA1{UV!E!B9Zo=k%V^@^>Tbl zP zNF%~N7-U-!WP5VM+1`$zM5ral_(EhPL?PNUl((0UWZpJ{7)c%zPuA933?%yUq`dkn zL-5sbFlkF|5lGa;oLAn$HI+A)d*<#v;SC%`^*I;;z8AB{90Zo2X}^F0&e9&g8iAcB zp|SrJZpgry4DfclmBir;yW3m@Hhlu^20^R8_RP6RDIIyH-=JnSa_8OWgW?@!<=$Yi z4c7cB&&NchmI0=m#lSb1)-M6kO3sa17?}5tXBM7?K;37kC}$(U3D|cG5a;H3Oo2Rg z=OA#|PoC*;E&|*9g2ku#2=v5MHn9MK!%_*;?mPr4+a}Cr=OfVa7*1VZfWVb26J{&} ze9dqU1AMdf8V3IPT*5rWz_e!*<{Jj~eLi8jU&xeK5@vS>*8MGEPG_LUJqhyw16-zh zl>uIE{s#juzmPCpFG8T>LkY7711yv?8DMEWz`#~(5~hWLs}b1z9a!TvyeUwAF;aMH zYLXu~lYx7&sQ3*>I2_MB$dn77!EO;#2zs3<^{bJx(BhoLz(LP@<}wD3c+NAAGQeEl zGQefBw|@syE}ZRn2~xOBb|M2@I9tj97uQ~AfD32eF~9}5oi0Uy3vlN!@L+So4C6rS z*c-9j#*{4==!bh*P@f8Q`AnhYU=_k*pR5UI%Cj zCHxyeryE@CEh}2w!muk^wLo1*)X#vC!st^mxcg!;1`YO1BZs9$yP!P{Fn$OzdH^sE z<5f!>0@|!oK>T}V9RrL_uJDO(kC?^a72@}BsCzilUJhvR+Hi|;A}~%t*2;5{c40u{ zFCj)Vf;%LA_G~?D))~n9UuJy@7$q1rtANYGtnVTC_5OZVHbyqlYxGv249D+i$`szqycu4kspQ4p|6mI5BmIT}-qbLV zAO_mfiMi-;1XK7%VsEB!N;!c6zEU`ufoUkwQyKUPICBsvU4S1QAIi5(qw|>%Bp)%2 zfGRm2SkKx;vyH>Rpz;ayD36gc_j})FfZkJo6+qwPu*H9wGPnn(UJRsn#SoBndmB{6 z5(YT$FJ)lCxB}CafquZ5%mCM`;ao3Df2-23MK0u{yugh!I5R_%riIZ`r2{|igPQ{?T9SCxgHianA=|pf(@OXz-=i=IS{$FWZ+?drZVsihGK6p za0kj_Ed%UPerACE$L`Gtut%B8z*|=(%*_mZbale?xDkOa2n=rz7Drx_FuO732Bh4^ zKrf_x!oa1-Rk;{}g81}RCfLAnL!~m~<+yU>>is>F>3YQMoGQjH!OKw4cH_MIk14l?; zD|F8caMiTytqAaH;%yn=L6Xr7bjOO_p$zPT?AJ5ETi;$|U{gQ9>p|1ES)5u12s(!W zB1_;A49k`?<-6~3WMl~f9P50`K=HvDA_e2&2Gonf&b5xA29 zZnC^f&?TUgybFQz55VW68Cbq`(!7M;wDML21~cU^!|)br2HG{@xX(QZ zY`?%Wy%^XNwSO1`?fV&1>j%zbU}AqIp1ioNk2xed1mmx47fgKsxAAtiHIDUvR zCo%BXU5#170C$l7#$nR#)y6!Il*l?T#BBq-w}^N2SY!UfKp9e!_aea6*lrR)vvVB- zY>}Q|VD~+7Xz4z*Hf`{ua{yxNoQF$5*nB+^I9m~CYy9X$D%@8k4(MC~oN>e%kDm@Q zD+o7ei37_%0-Ofo9EBg{6&^vbI9JEMh93 z?~Rjvh*mDb%cCP0xV95Kk%4Uo;!EZXjKvu8AqJ|3V!+P8BRhF!9Roj)#FpE`2yhws z5d_4`sI2Cd^=4DcJ? z+(W43<$V(1Z238YI9Zke=gJb`{96K?eoKI}ZwYW#ECEi6CBQkc1h}~>0dA{GfE%h3 z;8rRF=3pG%fYq@(kI^Ikx*2Y`A3i8y=3t}U|EqWeb2tK$+==%#E9m-2ftk}4Znr#> ztaxC&;PpaUp={EpxJiE#lr!mtKa3S%1%AESy2r3$icq3>PyFKW&rD(_JmO|pi?KH_6~@<@c`9) za42$ZN*cHYU^%*BynaUw6CEfY{?f~=P#+=U)m{ajkCJa^lH=heq2Q51=2eUO6i`8^ zQ9zvq^qmErt)OE?warwuP&YlEy9)GQxE5CFexd3nCuI^|Pn1-k+i^-rZbM9TcR*;a zMYj%rBu%2?ca{SFl315CiEV5vHj zs_;NN<=lsy5tB>L6Mcw?Kjl@Kk5~Wycf9&Ly!u;SCV9w9@W_to#_!e9sv&?^`^%#R zrt=E)_esB?czsJ+3+iHv+5@O8C;=tK3sB$|xVO;h4jRKrr=6vv$U+AOYB(sQ`cIqD zo{*EvWzy|Pl?D<-iA7%cpDH}Yfc}x>(Z%wp31tP32@xK^m%mEG}tcF@qtHp2{qi`atA6=%h`q3rwA8ovzw-IzPHhHSwcMR1-hiteW`ItK|C!X^Db%lE=BcPSSc56$h=y1Sz5- zv{cVuhc>s}QZzD>*vb%dtQ3|2ny&8jL{3^8|2ED-a4PYg9r-fO^neC%C6%|B#2Q6QecH?E3DHpjt(PtorMo@a9 zq5_sS8(KjuaJsBV6|sg_eijuhP{awJL}S(e31WdaUBqm>;rC|n_Pi^wlO%uYP~8Fr zZb~=`baNG8Dd$n(7-S3-=tjgqfo_fhI2A^aD$s48r~=)rI;udooe5)uatJ!6B0sup zc7sF(msd?bhM`}PX60Rr$2}E^UNw7q5Djec4-^vU&d+U&;ejotBpq7}cWptB%43UO z$QamSI1vL|40mjCbJP~Y`$ugtT(n2GD21u9z!t;BY%ET(g&(!H@R6-8e5kdB4_!F> zESkoL&YyjeM9DU=)Jc?&Utr1UH3tTkdJDc3ar*;ZOO4HMsb*vhEOj6e14|v~Sn4cA zRIfSk@TjE@JS{5n{zRmqVj>rwg-Y2awO<9!fMOV9QrqHGDMLjmHq{K3m_j*!o8tM~ zmpJ@O@%(KSLWva5-!ha+@%-%$2(?M^{4GNrQapc4Xx9|a-!iQ{#q+mJ+bYHLw@mAs z;`v*q4K#%hK%N~$9)e8jvnN!tqSV8fQxd5p^`s4zrr6<9#x5y#whUFI*v~SwO^U+- zh6b2IIkTJMnce>gS)SSD*c?OQbo2joScydk6qomSfw>#wYOlNPZKqH9H`@jh$~r)}hFh4lDlsm|A;YKlp5*Wf?L;%LYO0PpZ^e5c?A`qVu`JV=m}l%#p$%pGPPw zcr+Y4q7XdT%LP1Ylt;ZF4zfII1aS}%BRuXE9+!g0t<+mi7{=x8Io#<6)@(CAJ&ld^eaeu&vzs7}gh z^WLDb6Y1=kO^1HYoAY9|(6RZRzN~^Mv53tVh&{%G{sH8%kIzHfn!%_P_N>s zmKVW!vW`OkY>R#=fYog(G3EcLI+gFm2^AT4f7Y7MRWOcqb4DLr5HV zbV5$|=>{5=q;s-Qhdo(PV2zsv#TOKq?>>TfvhO~ED6xpF+7u50{fSfH6sP$-)=j31 zEJ4de_nAi%ODv0rAf84`d=!;(P9Ny@QKn(5iL znXVPY*)o0!%Utbv8t7j{9%uPFuEy}d^ZXIodlJjpr3vC$c7#?hh-cX@t>h=|Q)i1E zuLAvFu}tlqn^TX5NE5z`&B$3XtfP9IYxSrR#B*alr@p%sJf5T;=lgoR`5~=C0Ip7860>k{VE4l-**M^Vq41ff+(>_xvF1%0s4QC$7LJh0gh4Y zz$o(P`;~CK%yO&~j($vSC9w#9wN-i*-VeazUFq{57wDK}D*;^@v(+?+;ni*f8Y4*O zTA$7^8366BH6mBnY*&jK1o2uTvJOhQUTb+Qv@US2@Yosj-|2ypT;%g`>R_~Me$Hle zhC_?2b#yqi$ac+YMq{)=-v>O7pdL3_9+7$$*u!torDolfbGUjeXv`s<+k9C$TF>Ky z0=g|`S1q4&LE~D|xx=T!@qZpV0=gqcNA+3^8V`}qJsYdnJvsGy95nt;I`{kXY{*~k zkIAEc{}E{XKspcmbliSH2Z*)mJq?Fv`=syplI>wzvUQT}VP<1{D%k`EzpwaN+adL( z-@$tgzCPux@cHNRB^g@pZ!$b}*s&?v|VnT2}r%)@&!?dG8H(7}v zbG9jzx4Bb%o149lN%6=wX%?CG_u?Pl<}SGmKWVQ-U+Uhp`zC;<6T1~+!YMl${V?=O z+;|XXn9T8A3fgpBe-K929n%M+mUR3VQW71%#4lDHOyQfDFV)M$meWU*ItCNO@dy>9 zCZoH0m%LMd-OMv@WA&#bH4xYgRirpJ$h2^O3iP*VW2jEq*bw zg*06b2F*tcxQN7Y1GiZUWI2m1*h`z^%~p5vN85Bl%@@Q+Wjzbg8o_+DK)uj(-U+-* z3hVis;&xN5=+G1KDF_vr&9*?$bmpdk_&6^?bCzjK-72@A!@8 zN6ajK9Q5bnck=l-3xX$$-<*x+N6ajKtmDGZB;G`2DI9>>Qj%hQ7Jo`{3s)R8)f1MNCph655^pBF-(hJ;j^ z+JKNMBZO4(5VR+l6~Knapgzkz9i@%`)xLmDx>tMQPWS`?+S25`X`zC~fNfDyo2i8s zcK~ovn$k=GQ`@D|RTj!UL)>SCPJ0rb0l+0VunJ0*)4A_|8yKY90tb*b5F3Hd>Q~ z>-^J=xf4(7la%E;eK&L^sbDHaGo{>t^eB~~K@dMlQE!?_Fh5Drpr#A^C%2L*zm?$i zIr)8^;%JQBh4TB}>bxO-U#Ex}@cTN>&la~emlo14I3F|`zLk2>^V!g}DNiQt3oUN6 zkbo(J#TccUTGLp(+Xf3;WknlcA*~=?c(@M2S zxeJs|+4T~biAY&(IV;HzAmz+*NZBj!a&-rhvfkpxNVYEJGm!8rm2wM5%GVGJ93V!L zFe4`#w0kg#bKsSokKwQ;_Voms%&XlQhmelvL8O)Rt1jKJY9u++)sgb|YA*oF@(^w3 z0F89{r_|m8N)j?#YIpi*XeIO-p%T3-s6;P%Y5z285bxh;{{aHLv!i_jY9jCKC}a24 zjpH-f+A}438&Uf|ASJKvD7*tdB{KBYhAABSmgwCmg>o%W&cShs-Ud{n*Af-VH5j=O z_0?DzO!Gd9_N+_1P(n_o=rBBC+S7M=FHU>fu<`)UwC6q>&!)HM$d0!TwCAQ5kEFL} zSI2kc+H-@A=g!-+N9G&n?YZZ~bLZ_je&Mc6*GYL9AWU~lJ?w_i>aa_JwA$4SOcn>oo*HdwWl{6K&A|wzyM2hfgfmQfUdB@ z53FH;Jtf~^XrF9{kv>x>Ja4Hfc>t#&3yTC$hS``HZa)TSINs%CuD_Ap>;apg{lnk{ zrEjhV{GCw==X_oD`#4`mK(ZM>-ZlkG@$ahwxOk^bvS?KUbDFtN!x8VsyrUvjo+&Wf zNu5cT%p51sw?W>kJ*z{ZxfM^MoKhD(V}UTM$)LCVZ8$&`wXh3f^@X4n#A-SPv7)}S zl;$GP$ncxpoly@Gy+{&&vj3fUAidsV{facN_C9d^fSey9c}z6zv9)#AN=(*;65f{A zNUVXAD~%NmYf@%-g;JzqJCk^b*&w5=*(4rfHpFTqo5YId+H41Dw(9N_f4Qi}LzeV<>EK&1(q?(jW*eR;+qKkXX@P zvsIfbRIIwOS3{eR_DQ2K&a$Ax6jUQDKcb@iYg;o%bM7KCr8*XxnO7n2Pc-EXKuCC2 zx`-)@=U90J;U^-nU`4v0C|%LLmMTbzJw=|MMV?PA=m-U=JU{#Lv}>NL^87CH^ng77 zqm4>@F=9du#`_b2$<#i6X{&uCR=f-XZ-R0aft41bHIlnTP!OFU3Ix$=v9CspHa}Cv z>I1Ph;ik1{w5ca5O|roMK_vi}%@!MP>IF(6UH))o8ho}2O6~Y8UE5_68PiyJaC(MA$mD;SN)32AZtzhhq)}|JT2XV)%tU3eBZ&W0AEh8##zx$2{fU zEZ`NddKYz!g(qoUnPy7(s~!3JzpD`rM6y@AMbAQW2cGiYbO7H7RiSIFB>M=VMPT?8p7P$)9HFjL5kRWD)gRfvW zT3I-7t3n+0cmjK)*RcZ9ljKi};k_;3@a2Uj(~aImS?)qlkn!50*n;}n2N_s_1k{Zn zQ^MZ|QV6g|v|jm|YWa;vEpG(X((a(O6>EsEWyYh<#r4)x=#81JB&kG`CeV2@Ta#*W z%R5pFmdhE*OusLikyteMb>%|oAXGI!ZItONwXo#KC7ApIKWoX95S0td!c%6 z)8QUc>+q3iT=)zOr>h7rFhQ0h)E*rRq4hObsVpibk|}+IHa3O)w~ee)ggK}|k@{$+ zb8@%+A>~#De}LOwppi;ulJoyH9w=CCSq(}kuMbJ9Z(%)}po-KNh7Bz`U0guOCs=0r;4jJR{}kkS9<_dyX-O)?Y&S- z+Jm&m-mYi|i}nS|pEhP?O5aORamiaE-UNPVGyU-CFiG($<+e(`hM0czkn6yyxaCce z*~;~VsD0zL%KbRhBFKDI)7l$A8FM897|&szf78bnra|h^DKUc zF#WV-Td%wq&Rq2eM0|$4fii#Qa}vE810h7`%zPz?n&Jwjx_*XaS#7hdogrCP+bk_J zB#T5%agAnKbGl@C(PmkFx@39LW?6N*WRWP1Eq~HZr^hDeA(kHBIa*6g-q%{X_HTHb zA_}OF08CN~sB;onH^Km^H0rlS*aAbw&I>^KF#yslGRZk>lw=J7QIZ2bP{4cwqNM69 zz$NueCb=+5Dw?AuXO7jGWOKe8^&cv8m&c2l+~ zXYI8TFbA+a0_Y;<>gBboSgUGdfe?nQs4O&V(KDpC_L_GSOID}7;i!_C)Ft&Pd^eiY zg|v*iHKiye_0MY;;FP4Kf(lO24VL<+Fo(<%?zxu^(T zI0sAL=GwN!n(&XfZHqoqCndmi;Y=s}mYWsSTjSl!S+_TFCY+uK_8T0Hs$+F$uf zwDx$gvwSamG)r8q>gV1X0VpJ2iB7jj|LACN0mWG7icxO`T@0Ax9m^sB)8*gH+CSl7 zylpXl0L*mh`vp9q(Z$&2W3|HI=VHVgBLLH-M+NHJ?QYiP7ULLXHC?9Tt-N$W(qaFj z#khsUqm59-C(88$05%U=z_u9stg>xNM~rkie}mzU6ru5hFy~ENh5?!y8$<;$j`|L zXby)7UEqopQi;PMkR5)@l8O2$V6ysTy|&TPITv)Oh>RmD#6WanX;~`#3B9a8fd>s* zT#aD{T8lMJ(VEL~x4hcbO9Uyp`W6+FV^JV4Y2vz6dMCfBxvGf^Q#M}onnlJ)fXHiS z9mzr6&K^f~{0mF0tGP|-&PTFW`!dwuoa)c=vQ%%-VJh3UqCqy-e#k}bMA=!svJ(Vz zmI{7=MWstXmgTcWmNTs^p(O1VT0~qi1W86iic2WTZMh2~A`Kgqu=zl&j>|l@SiZJY z$ABs%tr1CY^ChhoNtJ~NCv8)-Ob3GOmU8L-SX7)Vk+#ZLuN;ika z-twxj^V(YZxfbKdT>iwj{L*~Ow~?0STOuATSS==c%WbN^L4Me8nHKK5Y8p$`ELGrD zI!Ah6q(f4q=&P5iMK(#X=qEslTd2soJc@|@g$D~ebW6l)LPscGh8tWV@B}IHb*c^> zP_nO+{E&IcY$32t^<$?kB-Ux&tS61+B@Z`EV)ZIWu(>I2v5wGmB?n)H3F%vl2Po=~ zv!rHrO4vcb+F4RFHIAyY@($JYZncVam>+!hYqcV4JZhw_HOn;PiG?)MhcM9gT_IEd zM0QE%Gf;6$)Fk~AY}CZ4W4-E%glr;3G;LS?m?FL|{nun@c^5Uk zJ>l)1qY-G_cLac1d5^a_Z`K}5r|`G?TGtEa?V>_)vl^ym1m~9bNLtZ$E0uARO1NzH z!6d!hmPJIwt`(~kvm;s>ueMXSLUR}%41ls-Mm?7$516iZXuCMo(s&K?X*z`zQ9)8X z7>Vs}V>Qw>z3iF0N(FtJCH zHY{rVn~HA>w`HajZeL+$iuyjIP+L%M&lH#JpOk_sYJN_k6>6k~Gexj*A{de)R%%zh zT2a3%q?Im$g+8Q}_7L3GELC)h&AAFWVH+*TJ$&2Li*5E0af|DzAj~I1?jxj&CcL1G zCsIb(@{-?C$or{!SVF+^p*Z{q9KlOZR+Fw*JFRVMq@AW{;wnwF{n=C{-r*%BevOV> z)-;{Q9EYnk3pK|QT?jcMxjQzOijIC+bBwemn>B`m^&^tf%FfH)JwLfFwxnPq~zJTeWX<)l*Ymy{W9q<^Y+CeH!!BO=7FbcpMGJTiL@ zh#!%ZNp46S>Lj_a=nXEsepn&iG34y}gC6)vbw_PuRVYev)sCT(boF~`o$jzF7QweJ zG(Y@^D{Z#qsw9=8e-%rWL9BuKinX@Svl-t7Wv;mi;+Cu+h}8(y>lM$J+F1o{J?1+s1qFV7FBK|+TT?u?t)zyE?%y7*l zWReL>5J*^M3CV!6kKxQB;D+R#_qhafL|GR$Dc0t#!e;wN^l5wJzWimnzgP zS_N%gqT;?qpslS{zW@K+`)1yo4AI(Ozvv8e-`USS_uTcpM`0pbn5dlwaXridXetv- zbc`5%#T!~UwgY7;Y!&Y&iS94!xdAO(-qeWwEoylSG<=;}P9v9;mi=#nBVRVCvXW@l z0i)9h@|)dmu=a&yJOKpE5<|f7Xm4wexhG}zS?ANol4#-R6#hJ2tFa% zi8ihENuu?12v|cQD^nVi9woU4%v55fA!6G|`gJ7{QL2_olx0+(Aia1V-P>KT1$vGO z%o8g=m;y$4L=!*(z%@RAJCV^VO?b^8GK8L$_4Yw;Yj1H%$`BIJl@bdb7+=$+$zV?x z#)pDw8Ft*F*KfU{LqyzbP`OhD#jK;TgX%8@71;!6j--vwqXv_@ z&;t=x!7{0WT4TSif3p~9-2^V3~I0n2-=%!-fzIEDiAdvHJ3d{d1_KS zor;?So>~bn-6x*%qCk6!3aQqNo+3!L}e^%9B!Psk~S@z$WpwF!awFgk4 zfi(WCDuPlGVs&W=Fq{r%=VRWKRrOMU;kRV?az=&(bu=lfOZ_|AkJSL%Ri|N{?b+=( z@Q@YsqcFb8pc>D~5HBlBK(`yvU~r*R`EZh~tcxI%PUXW%va+s2DWHPovJh^*VpnQ#e`6)jXxX0LLg8fK^#h^ zR7enqiZH87yFpzhGMd1j4@C$k2N*uC@ikhVO3hU!m*G){Pptti5I&EB4@axvNgZ`n z*BR7Fn$LXEZW6V_@V3nW=c8a(wSiBU0@ys&}`ONW;M8dMR&w&D~RF{->p;q8> z%~e`jc#dpipbi94O0c=fpz8K=HuxV?3@hun)Zw)kWAnWR)!$yibz0ZlRs%$`hVRyb zkJR2-{$ZHmv)!O_1uN;hvy9EwPqpe737<#6=RMlIs-r%%nTrD^?urc|g8*Emjf7W` zD@t;7EUfpPt?WjFdaKB22mgQIfI#@7puK56Z8k(}G=J^WiwuA5(~I;ZrCY_%v<FeKmz7|9&K}Nkn zy<8>{7lZ%N*xwD`!+ke;Shp!-)%}|PClRv99KMH$kXR{*_b|AkF@3n9 zO(yu^d(D>ht1G!>t&6m^_!nB`Lqv~t&_iP9nGI;c!Fr)qzPLKZ5Sq!1j;m+r-DF%n zBYM=Da~C`u8-89cRp?7oId=(fHEzc`)TLS%o%f!FE??5`pBpdue4>71P$z0n>!=e% z*wh~2^EG%3>kd9&W#BXTGA%N|M-ahS`p)oRSGR&dCu_Yv1qhZ^j7qayU3G!|sUZg8 zcp!w>Xt_flzIQLT#%xbrD3m&}cZq$X)nL=NtNvZ4cZGi*R4NCvW2l7ukK2LW=FZ+*%{$0ZJ*dF4ycYv&sH(IKvQ~{bPSEGf-K}yelzm zuV7moU?>-Y60>#f=OT%A6y>f&$QIOl4Js7n(#VH8?uu;&9?ESx@N}65Xz%VWsx?)h zcl9SiIZk8H4YT*5I#Sf@UDp|0Z(qz{nh4S^iP$;K2JJM6v8zr3%bmFQEUfIu(QT)q z+Ov1nxA3HH!L5dJI*st`RY`jVQx}1t<#ok=dZYI5ERlBs0(k|H#?`%P%RR9w?f{Jehqm&yq#njYif(=K%afhh7v1y6rfve4^Li= zVCo_eEcYKc1Za;4{SMv0O=u!+_FnFIb6oxpxK`ZsqBa}@066+*IPiBTK5mcmkvfZ; z4RC@09|vF?fkO$j+{pzvk~S*zXRx^?j6?ijJ=L&&1J~Rt2MuRX;HXNY8QJ#4^g4O! zg~wr9O|(zqyt_-~t6Hh;BKPNmvG$AMQ>e#rFq)Om4aJZQy`$~=U|_9W>LH`?TMad9 zggN}6UqiWGJV>fG8PG5ds$t^|^)9>#Mf`QEcumX2c`7)g339a!(Mr7lQh5;$N`?mi z3k?K}r(TgPMT?2RCc@K2p}_|=0mHpqr)pgUe`uipxIbW5Z3O@4@d-^a!=BpR5fIyF zAU&`;f6Sn2{-1(B({Je5PWdM?@jo`e|5(l6a^(?W!`;I%!BGW)Q%<#J z!@h=dA2}GQMg$P9F$h-yApmIg0jw?+&ubSw1$*qO9E7bFMh$4jxttVh$ILLO>$GEP z1yn#pb-w{|49QU9^0F#6R^-NB&@%95Psk{T3?AfEBX*;CPzJ||S_Z3vJ+F~?upvA` zj{xLm05yVaAw))Wx)g2Z8CTR!J+&<(LbP6An#$WbluRfPXb-HqC|QhF>VvU*y;_ZB zY6Z$>*?`kUSc5zC#wFl?FJ%;vKa)ux@1_Zv|0Jc&KM77V(yliw;#!*AAkn9Q zN?dY4%bn|%%yyTBvAhi+Q1{zOI z6(%A8unI9yml#IEMT$P;GEhF3b2!h5FHpohEk0nN{L$PCsTY= zgaONlF+7a^<}AySTN;X*3Uy%i75QDZ;=L*O_gh%u-$QR( z^yZ?HRn!vDyKWoSKJd0qXyZkk)_WoKemS$=g!z_Ml6o`T>?-#)JiQA)q4(ojZ>^h6 z`ANNVfr}Bs3Zu5@=39UYKM%E)sC|H_-4;;$DyY2?AE^Cwz}?HK_O8ro6K2K8P8PY6 zYU_^VWw84fSxyd}h2>+`pmsM2l4|E`wdWhPMYj}7EBwMo=$%FFX`(jJ<&S$GcGbfV zIC2XLWbj^!IP08j8ZqFASllRYIyJQbP%6;z@=uZUkmc(*ZA}*;aavG z<5k+(pLZqnlBMba1Lb##5P-$M#(6AQ_g24N*w#A;pI#+gi?w6C>SMv8$3h683TFwq zv7hLspdGm^f*Vip={3f`R@cks;+Ps}Q0YfBH)#pI#t5jyfY7x{yA)l=k_T$dQ^m@y z2ngE%K_81S|4L&o`-&zAJ0_zr0iBpp7=y>a<4VjiTrBK0INdUMlXpiCIvf>i4f+b};MSn4QK8l#xnEjb zUDSS>c6BeX!eJ07!_~{ZSKC}O_cYquzOD)8hZbsFFP^9oFbVUuUTe@<&(Y-$Zvu1L z`Xbdmi@2~O*WVVh*nq8~;%S-@?}4?edi?`0mcu7+YG6K)XD^W^JrR zm_OZONB$MBAw$y5o9u9c$p%8yJUfuo*<>kLK$9Jv)ThBf-A^?4)~>{225dYYEYHU$ zuU-(zk_{`*ZbbKj(h8qtt%kDP2oS`2hnSEzPcZ8p28r)JJ}b`75X&BxUGM>#qgAj9 zb2Gc(3;cEp{(*0|;9Gp-S*VT1bF2$&{Z6v2=kUqP4SR#24c}0+6-^y9Yc`Z;Yt3o| zF*i(1Xf{(c%MEMI$V@yjIB~f4#OosOb<}hS=OFSzVR}K!Vxp!ObZyfTlzg=vZO5BD z>1;s{g^5pJ2!1F`0u*&Ehl~QesH-A&gjN9W9msG}oXKTma0In5PmK zK^ehjeLqKj?yNcEIwWa^KPSw{|vD*V8$w6d>vzOrvVpY&l8Zw#1%`Pup~GBofJmG zEs!TH6;$K5t%Ho0?ZD+cdGJ#Hm;*tcKZV~#Ev{B*jb#7b7$1yBhmkYen|Meco@4VU z7u1{2)x8}1h3haIYJ2t>ULq*P*~)D-SahOY z^%a=)e+djF!=*9YZcy1PdVPG(BWVo%PpW#N0+{;gQ~I_{xgeu9nx?G0Q?M1NpH%hy z!9Xpl3~Tcm#M__3(?5P5+MH*v^sO!C*t1YIP)^oTbL^b!;q5l50IL*duhO@v;5CczF`HS8cfoMeIYuJ!dQovqQ=TAd{SFSw`ZLt3aEv0x z?LoC}7qwa>2&yFrG(JU35L7rsQO_IZbSq#}MXdw%nM|Kr)KAnRkyfid?+2*$BGoE> ztTVNUqDu2M^Y5z`iL_d6hVno1*1xD$O{Z!RMO_;I&(tE3sO5hO8hwduxF#8W?@mRz zsLce(HB!yFFNCax_#k|C0i0?KZy{7sGHpFU#f$L{Xw;n-eZ)vs^LaK=)Wco0;`~ll z^D0>!Myzp7TB474s7N)F$W*h^l)6!Tms+M#%%xg28P)O{1yR&tduirrje`1QREtDf zt;XmNQ0qLZ)z+z6L{TSZ|7U8ENUKG?`FE>S;?h<;D+!;RD`ZUBp%Pcz{2>#zNuQ=l ze?=vWb<3@kmV1S5s`N;~*UV6hI-6f%lY&WH{`SYWWb?luW#?Sgp^7O?s+d$->Eax1 z?gJpTtKNmey_wc4gf^&jv_>nYJDv(rEEPWp;_jN2Zhbkg;OV#cAXm|XAS;wiv@Arg z5N!*#K4Y<$tB9g5?V*{cC57~8VOcCBk+!g+=MPZpYN}QIcpz7$sYMj^xncf&)gqCo zOGP?HXGo%?kX z@g)VKsMieh2@Dy8lj)L}1kn2Uk0b^5mf}wm`4o>yU#hY5dSJF(9N7Z(A7f`;)MjGp z9#MQh#M8w(rpzw5PF6PeqN7bZrYdwdCD+skUA5s;s2gum;Set8K)HDp%8`p6mR1yK z#3qNqdkK2R@XHc$yx|ow<`aa{R6RtR#Hwv##PNO@(>+oblpE!_5eQi#sq4FG_IGMM z+T}KgoC6&y;L{^E0LbDbQu&-zEKbtcdB4gBN#x{g%X*hi@&+edNLnZS^qP*fK+DV$ z-|>VJpB$QVgMUj`53|^Y_}Zo%v!!bYKLBqoc8Fm&aEyeKyx%G325#s^>z|YDgQ?e% z_BL+gs@Du{8EL)u74@{+PN1UdZUf~pK0t4m7v6Z#ohHVs|HQIFA0h^(_reIvKYmt zRVT+h2Y|*mGPUxq!_W`!#6e5E41pA=D~{37fj1z|dPYvc_uVOso_c@@mjh!rYSzhr zh0y%>H4f(i`k|$NsUVI#9o3PCfXD?Q=iV}APhagFh6=CYJD*F<{%|qd;_@U_nPu>i zsj5Jpq*|b#q$*QcdBAGma^7KRsj>W`Bfv0!KYkZky|mv}Nu>?I8uBcBVvjmzLMcfm zW}8jc`Fz(!OinFCYjk#$ZVLFs;OIgy9(8!IK|Nxa%Pa#)hTT%^F=1_~XAQ6q)R0b# zZvl)w?r;GBXp}E0h~?+z;tE-s)j8nOO0v3{4f zo}%z~3qE$$8d&}Ut*@58jZw;06tj;7a+K*E?5h3CY-=_?vBBPeLM8?=dnJ}U)KvzT z%^OuD3q8OjEVce2E8U{x;8uhGmhk@iFCl9n7G7e1Pu@=!^B(+F)BRiehda>GR=j_hBbZq{YE43?_$e|lBUY6?`j@t1Bh70H?=9+pc}5Bg09<$Z}=jGp-i zbLA+1CchE3`cKa`ccYf4!>$hg`YHY8;hIj}^A};Mqq1^DSp1db{Zqj0s&m123wbw6 zj3A0kT?BZ~2QJ*B1FX>wz_^*odSag(yFy1(QYizJrwYWb^g@j}L0rclzEJBa*(KEy z2sWXX8I&gvTh6~kTz5Oab{tFIZDLw8a;B zYq4bJ;2Ial;HO$T5 zC5&>9PHL3i{`G2wgnDLB`t$oG^Y4m4e1SZ_zd)YfUm(x#FVN5LmpYk6Z?OI=Xd^|I!6vd`AhtYS$Sj_%l{)U z=Wo>pk-JXCC+Q0mq|J~Ey1Rs{5RucsDIxC>sAmr=&-~aAR3UlGz_mn@_XrF-hAjAQ z0sbns@~Ckv|4E1CAAq z`Tl^DnaOk82I|OX8@H?OLq{Xu9F@lHdl9lKI!F^v1R=&Z zk^tg=lHkUOP7t3Vq7`GCkTGy>rJ>Qn9CQv7@JSc;9H>&lwo=$R8HEv%V=yg@h*pea zFDgNQ2`q{o;=9)!vIc>S~z=_~MR6&{h`3hG=`Lz|yX|b%tea#wWft#2ExkkPa{| z^Awci#T{{dqU{hvSp-Vtc$u|;juRE8e7?8?MMgXR2I&`fwEr@MR51YwgNJV|dEvoJ z=+|ROjf!*YjiY`B1iNY#w7G#AebE~>(5Ix1+oVTHUQ8IbX^VQo5Yiy{v{DeiARNCqDW(Rq!buF(sAkTZ1MF)BH(3+0b*-YfMW|l|H z4)VMW2Mild@cZ*s3>mV}Rd$dUZ1y6r*ifeVlb9XkdE+IksCmAYHwA9CtM0$pvbN#V zK^~KEx_yRnFeo8F$L>L4Vs?=ClvjV|RUIE98jB@zrGDjA9Sj&18G53=4>}fk12`O! z^aOv0Cy(Q8DCrH#c1-zJ75oj~R>9Z!#unw(IA~YYSfs64A=VuAI^Ot%PyXKWEDz`} zEivC)+>;~3x}=&7B?fOvYe2^d2(94}VpG&(U_Jv$#=!S|f+dWiSg~L577Bd>pU8I$ zP8iC7;7CxgE@l+m7!X_mp%+o`j=)4Hv&ESN?-1W4E!M?Mf?;w$ZSuq7>(Q8=9Dz^% zLGr{1`dZ$nl-#b%M=LyJogL2BhTTbjrpB#;! zl%tD2IZn5(UQTQ5uPtLYgZHsv0KGg&Z8*)Q{YBrR8bQH}~6nFX7SscY*Uheh22L@-mQ7Tg{XyaGZc*?gI1aR$LLGeQnn z{G~`rTC9s11y>ky?dm6JEnU6yy9L)|61+1gSQj%2ZVU*{#h~o~eDXg_6P%%rn==Xi zELg|7n5m9Y0rDcAA)nz^i2hh;&n}dQirC3}yN71mA&wOEprqK=AwOJJ_0GlFf&1{u zKFWOyE<Zm6fiGuUL}MZl7!g?E`)dT26j!TovsHSl?LZW={A_nZezm!mbEN4e)uc~w&O zQ4Uf4@+zvdy!(RkPU%$M4$50$C|CLAX*!74@=kGx>X%n(hOom#-arg|XX2Cnj2t6Q z`IEJxY7K6dmLS7VU=rqMS#Quz5tj8}_Xt_G*>4}EN3_8Zr#m~DCiGMR>~qIN@ti55csACNWX-(ab4E=-w_A>@0{(9SOL%PUIClaMIVCzO2h zDh<^O7=_wZwUG57bIB49*jjZr(r9*>X2zYgcAN$BuXZbnh@$=Yu1u@9mB zux}vlspPHhx`r||+QSTGz++EI2(X64V^4MPSiPaTLu%+K$lB{2$O{KHJ+j3F)R#X= ztT&V^bq#6Hg_E8WdHR0ll%Y85J5$?tpvb!r@;1`G$)Z>=B2=Zp?XM;1pq?xed@OV8 z4cd{CcV4Cm--6{6PcHU%Z;UZ@r$NQbe%XcTD1JgfZy8VlgaI^_=TNgZOE;=^8rTaO zRw=MQ5~g+=P%}Zvjv>`6cB#?!#sHUI(d*oN78JD_q-%g=R}F;r$J2sd87e`w8{9L2 zi+a^2^h$S1QSB@(S0|4;uv4=I2I(8%Q1lJFsjrXgX9jgPpY-ET<&T!R;|L zpEZ<$P?_R|rp|v;I)rBBDcS^GuYDowILfQGTTk~_tmMCy2A36^^h&izP2EXePV2U5wzi^9>h=s+a2KsOErZvhmDrq4 zYJZw&AC2j2@|?2lh1yBJ*vTzERr9BkcGdIX-NnLFiXOQcDJ59XY`wUMD zE)ONhE_0;?A8lYVB+Sr)XBc>gaqWW!FrE%%9{`VIOqd+kK4#z@#)Q7=D~g?^HG2%S zcGb7^XdWya=Wf^aXFU3A4s6Q|?#YYU&zT6?}{D^jx! z?0CR@*)!R~PBZWhzJI|0Dm9@ur$`cRGw{xQ?;L|^P*L%xTD@`LWLJ$E6}DF5ll``L zUw^G+1R2@jiS6=Gdf%{UyrC}A#?=TiXwfzJe2Im+S4Q&)2O~tf6nSZ?grB@Lb=7`A zFN*cis^|gq#eWT1PvDdNr0b23bnB8>*vH_0tOe`d_emWK6?#Q!>I>Ky%bq7u9*ya1 z6@1iG_I!zjVVt!cY50hT7r4o3n*e|22QDH|_g?B*0~kcGu%)3kHp1%GlyHVI9RX`(%RhrHq3NFS-3G>r(2Azw}FPFJOIPvE?Xj+sVMNt6H!f%tumYzZ)?X zCil7Mxj56II7uhp7DG7+l*oT_*9+(v5zLN)`EDdV{aR*5r{(R98Qrm*L4FZ2!$BjD ztsqTav7rpe`yxWjq`WWE`c}W0w5Zl>3H1=+pS^{%g>50L;C6Xb zh_9n)4B#CMoQpJ`Jb;m3vW_sg+2B1Y{2m3)N5p$rZk1xYE=UfvM`I;jm!g$s=~NIN z77TV;f}xA*bHjKh7y~wyr<)2|L`|5J++i48J5-0vhoV5}?T}T0Pe6e=O}hHD0xU)A zg9`APPXQLy-G=chOJH)m3JS=BBCS}`1KnzdX$6i2o?W#F!q-uO4Qza(w0`X5uMApW zpm97Ppbf&!$E?L*?JLaw0!9(c9)ww~W+rD$J}_tqCy5Kqj3A$Dimc&Uvu(m`02rM@ zW|l*#Q18sovRET?nxs_IoXrwp(Pr(QYC*6ZV!%BWf}zQM9w=%vauAU4z!i}3sFp*8 zQgV1YpH9(o2#dCvYA|w$0XdaMPMSTr^(ERKPG9V*Hy|VHUD)#|TXiZTikbsxLx566 zv|f@ZQh1gV{}>xP=Ym;Ln;~IqwyTz$Vp&(=)9q=8rypqn+hjL+{0U06JK#56Qq~Bq z6RQ=f%lOIAp;#lBnhnGh8)Pl!CWv^7Vy1MV1t~G6WW=zfDl&=DbV)I~2t6zZS{uu1 z0wTxHvE%`Z-Pd~$e-O*Md!^cYuC=Z1`U#8m8AKX7iWJQCg6g~Pwy4Qa(JOY=*W=yl9?Lp53CJq=mkP~O7829=hlLZ!N{%ur1_ zN?=OPOvOb}!k}rEcfe)Ohdo_*uph+JuS1ax2*FBFop)VkLtK2}6n8n2OEU#XMTXO&_o!pEU(*D->^A4|!@k31wT5z_mZx2IThL{?=$F?Nuy4S7*gwIi`yGM(6J05cGSOOB zQA;NK?(pPk`*hJK&&suo-?`3VSM3c0Ejn}@<2V&M-5L#=9`KwBl*@>A2cw3!wkFeo zbPe70Q_G$(MBd{C1n~~GRra3jA-dm@-a)h(GqgTGpKDpa#i#p^*c?+gqvo~;(5Avi zXV6bSBJ-5mmcw`IIgg`{b++KE$ST+2^H&U??W(Im@+m$&Ldl(Cb`m{onN93%a9i|H zTOtyeGPA7xqs$`bpNIP{dW40V?Vv#yc{U_k0Tc|i8&~n^S6%1GeFj|bJ77*6H~4_~v1>t`tL-)S8S839@4R)(jgB){Ua!!(eutONMK)ItYf+ zxO&(usdo%2Qx!C<&?XaP#rUlmCgy6#Xojs|Ruv+{4+9KYQmYMWkRd@fUX_D7yhVwd_Ay@9+YXI}QG=*3@Pm+bJ3fVZ@?r|lV}J!YO7Tg>Vob_SIIvXEoZkmM=oTID2SbP};@5n5em_Cb%iuR!A00SaDfD9b?!N!7;H#6+>uxSFVlG*2*# z#$rR>!PO?SWOVf|*6|KQ*}1EU>T@-VA~?5VthRWESiA<-en5*qopoR;UliIVValR$ zp-g_F)>G(LOv)?#ln5xvT5;j0oM%K^*{dMv*!2~DMucdS?r5;=gV}uHXZjv%D|U$q zJ*%i4m0w2isr?5hMBy?5>8r+Fm%SwrhHzR~u zF@9?;>kZl;90p!1*wuUrmfgJvm6-ZBVOYbrb?bV7Q%uq+p@-X1D-3iI(>+XlSpyUT z%`KIDx`&0PnKWD@Z^n?Iuuw!sYxKp|l~R4Zgi|!3FX~rC74{0tQYsCh9BE3dc}ZX7 ztkYM;{@Pm~h-uHktfim%P16-8ohFS5m?n1?!;@m#)1qdx+zATLuw{taLED;iV(lIl zqGnBWP0%)d@pjKPa*8GlrrbLU+e~ok&N^rtIcwVzll->rf?XGUp20Sgwldl_UToVO zw2cIv*(OBInkdaSeKBbpIYko&)3YsEZ-fSIBWJVQeSqJ#J=UA)3o_a^No?B^w2cIv z*(OBInkdaSeKBbpIYko&)3YsEZ-fSIBWG<}>|kx%G6b((wG(xA&=;t;p>7TWIhAMF z@KKV5Z{6I~5r%S%ZqGW;4|R#jJkN!1uwgUsXN<;xywf4;6)lgwZc3iXa(;QwXO>6I z4)RiYH1;EH-<4utkM@wY5+5jbv9`~o6XqXCmzVPz`%X5Lq=$g1l1PTS#AIFx*q2OS zxy^>^w<7Ne$eQsbMPos^RkxtFGGnJ(hnw8sR7-@}u4<=)F`WPA0q?xq@ zG~y*aG8c`CDyM3V`ie%s1QTZ$7>y43r#FRWdSh@oG>6-DAEhxQuzOmw zY+}Ac%6%t+ZGU#$&w@YAVe(rcPB!;EDukb+k6)4 zswtJKS!kNe6Xm(pzVvxcGWNywr;@( zEd3AtDYQ3$OwA0k)B$#~B1{LpW?3I#`7f|LbuVG*e~MM1-IpW$8#A*cOeX_x)_N{3 z6tx&^u1woi>%ny=KD|%%&MQey=xyKE1kNuTT<+j`_5+hJ-FsIAMASty$I> zG@U+@hCdsA3yY>+GVE<{Cd)d5do)-i4SzN)uxkyhNW*F_Mwi~ZRYt`Due2JxrNHx< z@N76}f+XKBg7UNp&xQroZL#*4kvBgmkBLg#S84FHeUqa)uzNon4%WhpwC_}dn`WQD zE)L2|vyWp4Ew9DkT_*Nj3wdq$^j;eZ+II}Xkja@NgWh^-*shO7Npk`|G2mnwWuTZE z8yUNnX!|+Iva6EOb!o`o6naa)7%hGtV@cB=_P$hlPJdLj1Xv|Q;L;2#M=OJ@sH8vU z6SZ2a7i?;klO47$z^8XKjn!Y^?P!aiRWu~m>h-l6PM>;bhoq(pPS-rAK$P^5oCX7^ zpU#s?557LpTIzSscBqiZff{$GsX^_d7EabCopZOi-EUE?Vf9Oyhs_3?Psr->Qt6mHO-(pv6xh7r(L@X+I#Y-0O>Af~B$_v0NYUwjnCeFgVrq?)xXKFdAF~DH$z=faiAlX$thvOw+ z`1HO^VgL!D=IHC05ZHm^Y}Wk904u^-fNsd@N<)1Fs1dW(f_zy>y8Al}%q;9o-SjQU z8ig4{;)4kz!q&t1^uE~(R(bYECLf5qt=FZ!%K3cI(DqF3E^2!J2TGCPtLRipD)?$X z_<>TSDb{x?#n%)+@=Lj}6r&S-V7+OI#$z4pOoF~8D1}%VgTC@(zmx;Z@LC*vzK0Y^ z0oEIVdeKt2S{O_LmQ%?yitQ#^&y^VX4I)sY@J7k%-xY;AE>$Ged8)xC_N0^WTE>kb ziOUHFHW;$dYAUb8$-drAx<~b;dTd?bJatjRMCb2BvwE+6{Qi4s7H!2lagr_b_gel{ zhGTytpGV<(-_udP6}}J8W$hVZ=O~_+wW1bv(06gJf#u2OWaPrWOm;QuGW~ zWFxjR_5)SV2o4>cUU|oNYS18dl~#l| z#c*S&rxiXtDT_lyoML?t#%t%vg`{7AI~r^>h?8+kL~`C;j7ighT|s*wR(@jgr^_^&R)bJy&WX}J9CwvaXaMSS6SeAg#KF!@sqQsiM0k#_Sd7P$^k7ancp}LAA_P;Kyvm#4CSwwRdU#I2!}jyo`($gCVrIikppFXd`+1=hM=Sx z7*7H){BJnDph6{lV$BgKhu7gt+oaFNraTiq6Z@GO^b`}P-)XbyfXoA^4{B6)!R5#|C5J=W zSp4X~^Bs-IUQ`gdXp#{z%E6aa!j4c7xhCO5tVBeZCk{%OF$P%CXk0WygG5d7#%!=r z670N&XrOZ!gNM(k^Rz^EioZi*D&bPgo%qqghTmvJ_G`By1C?-f^LO~65li?o92f1b zgpc%p8b1t!cW@M3hYHW%1VZJ@3d?GCY^#J%I+^|$8t%Oq`-elr@5RHW!b+6X6`V4O zzm(yvCHTKfn3Qfu_AuetdT`X2dc~PQRnhqMo9yvc*5swGvX8<_f5=LP22mRh_Fn)}{+5T^bnjeP@!w+WuCvZbT2|Lbq z{@}}vipSswUp8_ZfACEXkMRdzJ@*m%gp$cvb$y3d_!ftO)Si3};SU}qJBvS<(`Nn( zmHqIIxPr{3vkD)BVzLSk2i?WGeGAu~!w-$Y13?CZ**b=7Ut%{|Rs*2EZpEO+z4+91D!`<2;@Rp=2=L>0?n#qmh}jK@D-UK^9SEg7(&-jax{Jn=8sQ-d^dkk z`9JapGw5gh!M)M<(DF;Tktjd7>n1$Q2G` zElAC zj|=NgTfgq>wEh@3oD0N=N6$5XJlA&ue0V?l#JjuPgB;hzEY#TcdnjSY-hjQw>UYW>?J&&-4{`b+~vv0Y3q&GZ9o^ zg$D!*W8Qn_iUCQL1wB>d^G|qz4b1`7yQqbi`Dp1fkhr&gXu;uh54hvn% ztV82uqoRU}NE!`r3L6XC{$ex^X;H|^&JkJT@iQkX`gBbfhK8 z>Wmun$MnS-z^X%~h)x50pgBi)xIl?UpG6!qjn(w5q&EA(Xj;NJcyC+Oa2bP|4+cM}ly+lVnrV~hjf zhsLTGS&__M?vhqf#`)NM^2g_1UKnR3t6A)h`hz}O2W(D9j>r(HxX$&0DwYbWJb&=! zd%+v`g15j6-fmtMcK52VN18MfQ$3SMK`e7DeD7LFSMtBg6kgTr zoyIjRwcu5_WCPPa_mmHUNs;9JQZ0{3g>A3DKS>N=k{IZ3$%B#<$+R-qpF|{2NLB)` zA?eM2Xqsb9G!9E<1E@YcDIuygl3bBWJtK7BVF^@ngiaL+FIAMMQpL#sJ~^094q8Rh zyf1-=iH<)D?6EV`F&Ir}f$l6B-O>!xQv>9tcW;81>&0v=6|;G1+>LAV{cR(jYz1N6 zQy2L2N;faBbWf`#*veo@PbKDZ&t&DH#tSKq-A^xC#vhr(Hc0~$`*>-rub0M(ycAfR zN`d{ncF^Ao`2k)N9!PGf*iVJ1Xvm=E*f81i?ZcoR;ty(cUme@Vuw)#HE6HZKKho2~ zGSyd>ruolQMOl)e3G9R?mVQd>*mPKr_QHBhDy)Bas!i6u8K?cXT^@&n=^dVzw@t#8 zRBwVUJ-XqAj`1z+D%W$2H-N+hI_;A2XNVf^eIsFoyI>@IC8ki(# z8K9e**r$)>Z!jIxwAZqRrP|+c9g!s_seu+%5f)rTyNM1-b^nLx!dcPE0_as<#@W!(fQk}y@uaQmCJ zvs4%iPS}wizV|#RFuL*LEs~12|8hiW#xv=`p;L5@uB5Ih<1&sWQx%u*kHNSXgXwc1 z6R_QajV(3C^y;*y*BT1FHr30E=DoFVd;hn?#qa0P??18h+?mz^V0xL}usGW28uUPi zJf&+P=D7hcoYga`e9sMWzrPDSe`lUtrl;#3{+!Y?mFY0G>?Mm9&03sJU%F`d!ny@ZmoKX; zt6Q>U;q3Xd7A#&?ws^t3`E?7=8gb_Mu`|bx9i>gbvlcE~^8K3xDtB4ksXw4Cr4yDdSd!+-J-6Quw2PN7N+T|vJ!|Q_C1@b?7NC;O zl0ck?R=@m|QbhfT@;S3-j~%)1zNenD@0{7=M~*71o3nHg!gEAJsMf+Pir)=(`y8kCh9jjx{b(xln(WH9XVJE=+ z!gfX7oHOfq5kDs&42u`dn!R+%vPtL;JS1$!&XUAKG!zUi#`9VPFSAg$biv|zEMU;Q zY~h00bNCy}y=TmsJ@eE#r!SW>V70UAP-CJKdLTeOn!2Ut*V0*w=XuykPM|~{6%_0N z*J@<2U%X`T*>jdIF~XMAGDVt#w#5{d&RQ|k2*WfCdIw*}! zHFcnYaLyTX7JF8it2j23GK1reP!{$QEA0x#oaMe8#q-Ms=d1Ueee%@uh}s-chm|;k z3QE)lb!fR$j?qde3W6r50_Y%kF=A(Jzd)7kPPC6y@$+Z6PoKTf{YPlEd(k!u; zIp2LSJZ+QvBCdXlt5==Vs0yZzTkLr^AFZB(@0gWcD`z!neGBEoj+&|-vIT@Ax0 z_o5@G>uMpS*n@0DeQs>HJO!!rAg>6GiAK`YdyqE~jcOiRlmrz)tsdyt3JtlzIXJEw zB6X1wk-3otYS0tTz=A(*(e01eExAUm7Z^;%+cr7-#MP_6NQ83TyU$joJ40FS^I^4C zo$8D!aQ0>-k*YmrsQ!**v18|!l*)-b1Nm4~R?D4ikEqrI-2)=lFJ!!Mj+#Ij%^|fO zfg+(w0am_Y^D#?QyEq%8nmouRKw!cdaJ;ljrYozbA^Sb+q_N>)wcOpy8E$WIy}CT>z&)GqaR z_w3Eu`y?qYG$b1&sWfP2`G8dRGLSZgbSWD7ave(qHhI8n09-$Bldk+YAgvzcR`_^h zL#V*L@a)wM4WYRERd|}3m_jVx+wlJ`#99yWEi_r-_>AFrPmp8F_d)Ci9b>(X=zoi! z;KT<$a>m8(D2r^2I6vyfy4dU-#L6IceIGye1a+sn<0EHaY-w3!ZNwSSEuyxrO(8e; z^&vau`Oc66XLw8vawZ%0hk$*lpM7nyk3vl&!GIXmfdHs8T-5PNXzl06{|Z!s7IvVKY%6$xi^tAoyH}&mD>f3i8jyPrcJDee2ZPX6&A)*1iuP*&aT?#a{ zd96+l!fvR+dKB`UM80|-PE~_K-QCvn&>%wH+zpP(kErz#XDl4tKVRiLhkGL0hy91d zn^Wr5l=x{!KrqbEV#~DHt;iXX4_{zXR0jix9r;0=CYlLveh{a&UPR9aA$)`TiXd#aISfDT5qxqVF| zMevHdlTEs1jGv&?N1(%ZI7P66k`xu=3`HvfY6og{!vhk*(u4}=SPp&KJ*+Q~7G;Q* z9QqWGHw@lp&YAm=TBdH+;ZMSP5BerLE!4<1XH3s6PDOXOPF1_vs_u-4GZ$~DtLW*T zt)^{rPKv9(GoN-2_T*ao8|KXtP<8zbszbZWyrR?QO)tF7p~ISxx&(B?rNrUmoWp?(7@CK<8^*^5t8GeSMw zSI*ivT{WCv{!pl^dvj#%2V2%1;T#uN{nVsLqf_JwY@BQ;uYo}Hnr_YxcbO`7`>8s2 zVd(~RqE1CT)YE-!#rh^N`i)ZgD7~snccAovb3}ZdGp5`0<<59?t6iN$p)=6qo;c8O zzm1-mrnbEM-kKZLuD6ej%$=Lk!8*ubJ&Ah5fYFSNWN7VyZb0v|W9O!nKk7Y5vs5+= zZaZ&v!v<~dbmPKoU)>;aXE zM{jVBEI<_QhG9oZ@1wz_9NE5;kEm&=H z_dXNVx4=oGs<>GM`q=)YA)UYiHV(4W;+9Ws{ZboJ0hi# zggSOq!aY+JU*pX6lq){UDEGedo$KfHB^sVx}lw*rZ=clRDWkw zo*M1+q$Rz9*D}Z8^+2=bjB~lp41^WWHL%U-CIuMB!hweO0ldkBzX15=8x%eml0dnj#gZv`%$Dn+*9K5^jLOvcI$6A4`?U1Rp z(BO@S0_D!2?rJ$?$^?|)S`T~?2OkZXbx0>hP}814t$PMpi;TP{z;OGTtKhy(D_5%` z_;0gaeZ`&6@7#hMf!;+meC|d|)x0g!4^fY}r|)p%JJgLcF!6gxPpqgy^Wy)A*-r8r zxd&dAwT9QltZ0nnE_e58biX$Jkh|Mnk8rxu?S`c0p4O;NxMG7!s6Hdfa=4pS>gk3% z`s`2cRKs}fQ=sT z0TM=bI0HPEZRrphY*4@A<%Z#(!4M02&cJT!SPYf+&2`Q$1Pd7k5wYx?Gst#h4YY~Wt*I)m-u zZqHKZCj~mIQSaLGjICEd@AdQMU4DK-{x3hT#NDe@S0R1U=HYohkw!cSkl0GYVLQ^u z1yjvvcrYLd5AqgAnse7oe_M@S;tcAc*BFV>;$b{bj51YZ)*lIrtulO@pc!jH27`oD zdXNuDwOwsOYG@dSE@-`bTAiD>)~(&q;9PCTFF?9+M#PT)J;p?Fh<$T0^H!TMOIIh{ z?+nZv$?5NAXNE`Ee9;ditpB;65G!U0S^7BAnVcJ$7TF-f#?pfOUxC0O(DY|`6}VQl z@e)IL8>+=WR}?!uAcwOurIH?ypxC8`?hUTx&c(va^&hG0Zc^9NwpTI7*w2$te3=gu z=5lr6`j4Cexi_hAMX#X+k&VtQ552L`kB-^(gaW6G4j+|^WeqMFpvVEEnvZ&#>5(;G z;Uj}STtHEm9Ih^<2%ye&#(JnNSNc$~z~Ph^I3p=xY;FY06(V9}jAP=6Grj;qu1xEU3TXgJat0p*HOncYzIjN0MM^F$V3h%;gAGZI z+HUj_V2uaUU&hG8>JA+vYf~}O-sD4Nl^h(b^r_vjb{lbqp+=^&Mt+g3k;YpL<;QGl z!_%AEWeLi9=mGT*66YJE)${Bf;Lc&g0lCCvcu5aD%Kmy$2i`_lG$=*o-!;?6uW0^#+V1w zCie_gdLo8v{R>pP+FkCRrFOX4rS6&AKX^xvAjqhFgJJXu84b!$ZqSI7I}Pw{05>*l z(BmdTYSSSys2dJQlLvX6^K11Ux`XpElZ|X#t2=b!)ZAtGc7jvf?88yjnHjZvNX>f| z)_k{N)Co@Q?+wl^Tv$Lr^}*$~^f-Xvw$8zoe=vMAQ@3;uPTbcibyMfy*!`VS z*LMzX?;Kq7K&Q-GI|o-h*eP{$=iuUvol-Y;4z@ORN?qGIxUF+=*B#mYwv`5xfbqn*Q>zXM*=V(2BoP04q=<33wwW?YZ@MT5t_ z3!~!k@4`qt@m(0jPkt9h?2iWHb2M6vHg@i6XjtV8=#gr-O&$h!fc+chG{Z7~?t^K- z5d=PEc>fmN;)XKKl7Qkp0V@0e?+5@XY65_Hx=$dWJ^(Nafdn*pfQKM_hnoDm4=#9b z+uiTa(W7c&R6K3e+apF>I>yJ?=RRJIQm@{i=M-eqyxFi>&$Kt!TOcN=-4EKnMlV7T z5ZmIT+2{i#Jiu;_BzR`#-S^eJ$X2H>`v#J>c^HpC+)kgtu|FA}>41to0c!UIXz~ER z#*o`DqjgUJ>lq{5Pf-eW6CPj(&X=eOn{d{}JM%$svj_gU>}GFLH>%|~@R)$EVd3zs zVf_sz;%dS}&WM8dbtnfy1_0r$!CQJ`eO%Bn+LiKCws8U zH#F`j&&b3JhNJf0&Mj)&I?PwiuBzDNVZ2M{t=;8}F7V4uv>FCi^XO9taI*&%*LMIX zUNqFt<;l!!dV{kxu14r_UclAQp>oWb172_U2w7>Xbq#Rw$$H5!+**KDwry&EGpQ%6 z#t*}araJC@N4DJvYzY8yR0cpfj>H2Ai9Z{z>zE04svEW6393&6`A#Rac%V=8v~!!z z-K4T!HViw0Dm>6OPz7Z*rh$C2T0PJ&JIIQ?Vq}d?dWtF(dzXL5q*J`joY*0#(htH( z11`^D3r)_5i1u3z$0yM@8t3zREW>qKG4rl-Np|C_sviyyGpFP~e2i<~GmJk$rE{Zoo?fpR+3kK*%|Qif_ol?><=aZs+cR{>M5gWUXC^Ak z!zy$|t`Isy^ETY6DX(;X;u)Iw$VZ7K!if>Zy~}R1Z^UU4he6da;>rTUECnIJ?zB9R-Q{$_*wp|8(JK-4f;#fp79xDFk2ZDG)9H%W(;a2%~ z1K&(yjL?>ItvE^E8US}BZ~KRz{AB1B59rqZm4W{TY0DXxukLcnbJYN@{7XBO5c;RV z`K_d+UC06-=$t44{VyNXnUs(Ieq2ngaQb=GmH65q+`|JNSRPL*U+F>a;AnpRPW80u zM#;Cu4@A6RQw`gkXQcQx{@d^+HI~WXnSJtn42r)o@CH#Ef=5s#p8T%$K!4;y?s_?Q zi!DjnS0UW`){wq~NX8aX!UwDIV4rt{wR8e2-fehhpsV*_pCTV|nMKZNQIl2=av!oQ z*TCMpaSKm|KC6a3%d?)R=|Krm+pGgD{<$wQ5pRb({3g}d2D%m|ch0ER`QE7Yu0eg9 zGO^c;a~xVDu9sJY4D<%Z?no@qvp;y}EN39r;a#jzu16p6?OAmwoR7s|TiuEBH&R|5 z*_wnQ>)=e5gzl#Esks4XS?|_t!?m?{uaX;0A=`>Ep&iBkLOkExV(#5DpL(Zd#{K3}w5^*W(0k zw6PuwyeO@3rrA2DQCe#+L&=uOxR?}IMTnj1xSzk(+hDCh^k7r2VFLzCYjpM?ms$@l z=i@i8Q9F6a;N10Ue+az9tycFZ*AYNh|4gjPzJ>!we>--%vCV1*_JB^q1an}H+817O>(;yZrFz~iGK&nw`yx|4G<76) z@CRd+nTNKr-D9Rr8J#ky*~7jT217&i1d=MrDOPMa{R^_yhRais3J=nzWtee3iRwMj zt?6cAmp5fsML)y)3Y?eOfq~wsPA|3tvS{>R&#@A=yE&_IRxaNigF{W#zO!<_J!}09 zu;;Jn%TWox(WTE&(r$d@Vf?%Nu*0x3=Zx%%Q(lMT$df0cVxSTKn9P@){&98X$^?$6 zr)+HVQ1tl<&Xnbhz4&;LAzvq6Ll`ANwI1keL^bdJn7-~xXHa|-cDPc!6N3%?ujnM4 z(Pv~N{odq3*Jgso_A#`7f#_r*WAuBvvs&BXzzgzfe#b!VdbM$C1OW^vzY_Yf2}Ta8H1?)|Hv!mC!bb4=X* z?JAt?lw%lKh=ke_qvu*Koos*q4z(gQ%6;o}wGlTn+|(6Y!j%}u9U8|8ySP3mN~+@0 z|CEZ8pw==&^)-CLA%i3;Lac;=d!0VXN4!i3Mcs#;Y7DVQuE>qi+`YngP|G!Ti>G-SNdDYRm=q5UJL zkLk2c9`q5W(p?zVCE2#`8B{UG^FN!)=3VOYL(5fs(}mOBV^*8{^>%D=hfi~lQybl( z)7)d(E{-c#v)y5(I3OnnL8y7-Si|QQO5f@8VM|5`1G(LU+`;fq-5te=YQ;Fi@81kp z??xw?!ulc3R7@u0I9#lILc$Z{_e5Fghv?DmDC2w*wg$ldxt6fq*TiuPV0{3{ z32soQ%Kd!A0c&dg5SgF`DJ%B(QBthAM~hM${VH`HNnrZqyJh1 z@Q$`LP4v+xZQ(JY77y|>lVW6o&pgrYK~ilrm?tVG8KxR;=TO~$eQT%Fzvs~#)G)mgAS4xr z=LV9@ZNP!-HR>w&to7yCcOIo#kB02Z0}S357*Md~daKz4HhI8j30#Y*2pU_pJ8TD2 zgSe1b6$cs?SF)j|v1s&wYXID_6X!UQji%!cH%S2`j~!&ldD^mcr+eBCxBCugAq|)a z^&Y~t;+{3j)$X$0<*7rLZ65qVOiR!&Z^EEt%QaZ^###Z+ZOxn(3V#_I z;|_58+qyerLb9e9_J5E&X}KyOi-3gHc(B!2hTpzz)ASUm$pihHc}%Lt2W|JD4`FhP zTi=S^kL%QqP3YmTj!r}Ale*RT{mbY^J$B}_qUI2z$9qy2n5N6Hnw@o%2jVR#JRE;K zZ#|Y;q?U=PhH^vDg06ryda$Rd$OY!`Zd%yrjLz34usT{igo}x=6BdY*_vqgiWS z2SiB49wD`Rgf#6D(wY%M&s#?r4aDU!F^^vv66XJ0mOKkKITbV%SHkdnn z32OB~l3RSYO4I(tkw(DwH2Wo5_5`GA?HxQ>&ZBOk5i%Za6YsYc#oXh2)z4TXF6^)VRTb^O_h<(J8C(hEO=+chrb&s zX7WI6y9aM(b4k_(L5brGsq8ZQ>O$_i@qm}3;o{`ld((G1!*kV&S56plr<~@RmYZ-A z-JGRVgxo5RH{7nFpw$hy4f*9^@I>1>KVUf}hvY}TOsM_JumONhL((xP(ls*;@)owt(gtTlH`SmH z*9mVN5ZXM1_ke)4V&|N0f4u8-_YND=$JbWk#w+zF%*@@ZY}~l@@k-|$+x?YY?S3S` zuEDPlS30NL?hW|$E`J^G-eNm-c0@Hs+}9D-w)<&`7wsRtm`0rSWU8O5+OoH22VzpsRx9f3(*EbR8D9lB#u)Dcy z?X7Ox${p@ycB%X2%B^mbT^iXO!6j8Z47Vk^4Yo7UcE4G<);S{Y1m}p@4Cjd46P+Wv zp5z>nb21KAAA$B&?d}b+Z(3OQ*e$ZRSWdN#2a34kap{6pkb7i-vmlQDaVUOFT>TiT zo{qcR+*qkw>kP1QGfTudGC$%jsdkr9UaT6&gUX$;Ic}Exa_flw533rRWm{)DM--?7 zA$y9wEV1+|Ov?_*nW;A55GW3g*SYi7I+tU+={NYSv%BH8u^gOiwvC)>{9A2fC19<4 zIzI6o&gpS?vC0Rd^3zAwj#@IB+f|8NH>VVPrdZ0E_J8bs2Vj&{wtwc{I9>~6l9>ds zh9WggCLq{AA{I(Ovo=BzgFqlE5J*Ck5)wpRR~^*#?OH-yw+JK{w^$O?SXL9))woK6 zZ8t~)>RK?tRiCT;f9HPpelvF(gtor-e-@aT-?`_W+uJEq*?F*p>g~#aWT@8U9J&G+ z&;J^igDl5*a91;!O!m$W$ih#|fqv0AyrruQj6O*HXdImlqT15-Nwr1o1vf3L$G$eoTHD8Ape3Kj}y@oyaT+<3Jc zzudYC55%muhh-!J_!=J_k`9H(_uX+hSEF<0@ZGBz?t%CN_}FHBtdI=9T`3vf%4~+; ztPEy&3$qx0yV7E~7N_lRp*#(XML!0TlUJ=~=Q+p?fD?VHmCvK+YPTpAA8;3|a5&g~ zjuc+Zu5yS?{6==8W8XgRU(IkC1{10zHk~F&8lbM*)d>E-0s4Of^#2B^9IHR70h;-Q z8lZR6fe4Se6U5tahR`5t@#HW9cFW^MIu7xvd|7!qJ=4xg7Gp$}ldW|mIfs5(^`ehW z?~=+#>-C>%6G8~Fn^Nu3L?W0(G+&O zBhg0=P5O4729<)L_YBJTiZx=@#J+i95%=VF1}?Ox-tuFM^2`%u$>8d~979 z+}%0iX^$57iW2o%-0@?N71-btS`dn!r=Oq+-4l#r1Abm&TZi>>PH0KJ;{2k;Imp>j zora#L-6L#gU~HQPXJ*By%w~DhF19?#Mta_^ePyckB1#A9##a?XN+pWm?rf*Xg0b2h zB)JOCM|!0}A1`grD;aErE?vQEDv4h{8gFIedLYRbz67R;3F7i6%fxDO%i&~~Bxdtv zd14qFMM+7CCiiufG?nTFyJs&U)LW`GLiQ=BGHhF`VEE;mQzfpsUra{(_H$S#Lh1_@ zZ)g#4IH;tvLA!M}xMTHreCdcQYC|L6zS`Rcd!a165K7%tdCk$NQocgx5SUH*=pC^a z`9FjA5lJRDwr?u3Z|F9p47N@v&lry=@qJKLTeX#qceC-yTSZlK?Zz|t@=EG!OKPw~ z5-0OzO+2NEFY$|K#FNe9!69v80Wb9O8*(h|2;!dkw&MOcU8q#TcuzmO6I!RyKN1>r zj-n2bx=kg0h}tW!Y{TY!xRYq3ks?*jh^9K2rlxE|VFtUf>qq>!c8i4km1Q?6Hg8~G zZhJDLhA7dWl&SJ?Y<@QG%0 zwcjp>K6U&_{GDS+83AWnmsmW`2W_3pQ`q9Ju=-~G@uz#jWf$s6Esa`pw?e-`cZ1e!u{Es|R1qC&i4LWH6qR9abf`i@|EAOE z*-2z`ksW05Q1G$h8U@e%BsT8)XKcJ>KX~=0D*ax_Cofu+mL^q{>$4bOK`gK_7U=st z3R_yI{Wgec5Q`BsyXB2LVJ#Ya0fP@qztW8$DD?})(}dv3k>zU0jS|AQrhGehGT8V% z=15}O@jq4_mfi!WG2C4D^1v<7CU&!z(Wms@6ui&CgV$RGZO$Kil2R zm-%564(CLH|K5_ulq5@C{Al_3%-^(Rfnp1`X5K`RKZj){vI`Pn?ry0`LzfN*;~rS2 z7Ye^<*kviB5s!jn6%RUJ;@)mDo(@Hy<|{}8n>_*ne~S$pGfS58xm7Mpepq-quezJ0 z{E4d#YG$h0QoAU|pObJg7ql53f~~;Y8R!iE7Qc70_aH1u^p;ht zI9p@ymypxU3;b{)G#2M-%kqA(118dPvqa_JlcK~VH59VDO-pWQXke>6xJ1qoE3k|A z-~xc(*osZ4*yUtDuq5_3p2R*^xg^2|0$(8Va36%f#$%)5WLtn$G871PG6~h#jPLK` zf0c#}l^(dR!R5wyF&-`f7GNixNY_%!>5gCl8-x4a?(h-d!vJ$PTT7&Dt230WkCLo| zsqZyoZ!*^XDz=RR8NE)M>%J&=GoPH(jEg%b+YDK^aQs}zu5;i-f+}4odmTT6B%g}= zmGRDB;5;%3G|A+|pd6k)uq(eoB-OI>J=i6UsbXmf*VNK03)(4hGIaddXR7$5rotCB zP0Co$rgpO^&g_DnWfB}32FTde$t~Wh>1iA8w#-t+?Sw>zX7bhgSaS5dTu@ z7KtzfV2cASdo8tWY7U?7-HMKJDOCKD*`?j&pWXQswDRt@Hk>`?qxs2Z4t_b#=#JAx zl5q1Ryjw`c6WR77RegRy_1PzBZ$m9CgTzQVw^8>S%g#xGjkX(o!Owd42uu_$qf|;# z+lKpHah~uMLd!^Z{(?+}e*wH*8D~+JehqXG04H5-Vq^nenK0)aqZ4Odpb~#e%=0=V z5!8gp3gZk6F-aH?X1>vi5QjAA?>9V(+vszFW*;WrK5N1?XGVZ5-A zRJ2zo2`@Q=xCD*wrXe;D-ez+6Jdx_d`QmNW$R|*J;~+a3kII|Vq1Z7og)MV}pI@iG_W6;qVbPKLx*>iU8jaRDNG3DEy>SX0zrGV#Y{=&Jw4dc)uK+Bk6Na z6Hm(#ck|1ect#G^(Ofs5$Sy{Dn9cL$t^BlB_yMeM`v;%X+P13=%~`*z&FaupmfY#8 zv?b_s80ctyys47Az;hB&W*mRe`OZ!Z^u5$vm4IISBPNgwIPtESp-81#297&ZN%d_# zmc3WSS-S!(ORiIN^l*#K%t*JWUf=`SYj6QDB8aeHrXqX@gg66Cf`Xc~t+j>k{z}2UofSQD}Sol+0G7n`DN?0VdTN*&-2b??wFgXows!L&^zmabAFB zL7rmygq2WfZc@T(4b_A}do)CLm-29JZR04JZ;s;l0%0%-JWuWMBu@>#3=mJ*$}8Bh zNEbI(rNe%|eJ@U4ABbVrzkGVrxQsEwL;kl8@04N4;oXY{z_eLei-BHQE2?Y7 z?pkuC$LH2N*+`n6T~lgz{v4My_NG}}oNnp<|amFt3^Ie#w{JZF`N`At? z^*P`(X`6gmV^fpq3Thd~aMzsBUl-xmlpJwN5G|Imx{~-y8|nbE^}TQ@vaj3L9!VNn@Sb@D^VCdMDsg ztQ%WOiwDt_tWb2gg|n2tvDsRTQlmGT?i$5}3 zIJs_CB>x~1jQ$4UZXiRVGlHpFG!^M^i&W8bGj45r!X&JjovAZxT&FnES+BJXQ@~(% zHEuQe(t5EJ4|ta*+-s@CQns15D&imZLwq)ft8Y`puyG-;bn$!N$+q0#3NZJXFnQmnEPMegm20vZjtMY3iu0{j{nh|=Nkh5L;FxJQFHFx8YP zui(caRqD?yc0Fh-#73u7VU(l8i}COC8BN$N<~i^XH-cS-Hb<4+#D3v$V`Z4?sUpSm zSst8n^!H(&Dsc;zrS)PR)RIfF;>(>a>(>phcDNDlR)fE>ALw@yzn;FIDsUeR?{09{ z>ZNt>23ofk({s;_)EZK_dsSJ7pfPS{1#WhoTWp}?fs+)dcir)nwU!ZW+aYn z=w~cNe}%6}oCub14}|n~`HFcHtiTNdS=QaJvh0BxZ_u`2gv33dkW;lVGzzfE0c)rY zjCQZ3g9bmY9NTbTmOR!QpIk;%Rdp&G5pfB#9!?)ti8{Y;wXsSCO zqniI=wVyV@#Uv*-!R!q@O;hbGqU!V1@EhCFaygJ@vgbkT0CzcEUi0g`yiX1$In-hQ z9FF~o13MFbCH?Ko;o0=}&>AdAd;)zuOMV)qv`J#@M!+*YWnmtKGo1CIB3jB zKu41AshE4Lj?@($XAw|#r`*p`h3t7$RmeK5h}8PyQnv7upab>-Y9*&Bo%hDf%onuJ z!NYqE&-UZYQ?vs+qoy`0=GpSKzZ*IF$mj|Y*@Y>X@3RVq%5CNlbha^FphAFG-t_LI z_jaNCFF3uGV$avQN;I^gJ6}(|n7)V(?9}jWKo0JI`BW-Rl3x^H(Zc4`!}?;(xOq3) zA5WqZ{EA8d`7?j7)1VzcP-WVpv;4_B6Ku0bP zrPyE78~j4HLkZ=7S~17yql3hG?C7Nx z2yGQAp0xz>;KYDeiVKrOY7LIkO*NvjrU{z^80^sh1Cnw?X$~!ya?eL8OX}>DUS~VY z!Ss-X14-cjCfJOoC*iy|ED3sp!GBmx&H$Fi7e>p)gb@1E}xMmR#MbymvcH&IJnOR(0I%FsnnO zePv~R6Nf&J{TR*+t#Z1f%zZDbVuR-Fm+iGGFGx61r2);o!O_nk+10f-jct|idgL3<;%I#r#SsRoDyZpqq z^k1-;oX{6hf?dkm#_+rZ6YlT z*b2g7rF`k=M=ak|EK9KF@3pqNeerv${=EV9PWKu8NIH3wsu5CfZ-v~ltq7^s$lX9N zkH~ukdeUyxKpmYK$|0OIsH8Nmzp4CpQ<@PNSyEk>lvoQiw9$e}SqjNOP_+Sh!B9fP zaF2$_{vx-!W1k%_9{?@~Fjjj5A~99+C0{V#VqRgAR(6Sa7Y~ zj1&wIzlFwp42qJ7KBOY{aeT7E2cmbW$cy-7hi0VDcJ#+%0#O0MK}B4|k3n%7L0?>y zf1?s1E}nLRxo@lPPOmd~!&FY#j{)S@P(-hDbSO{VrV`Uw(Jsgc$ksrxr!l!X)PU)g ziJ&?S1-U$;Rj5(_9^wLm4x%khN`MgiLTM<|tgujvEGdTuO*13XyQtHUX+$Hp&D#~r zD8?(a`uR1DVO1g-Yb4YdLu!w_qga~{#?pFMEyElK7TiE)Sr#mEM$(DsDLK8$ny(4) zYXFf-u-cU2-kh$N<$NwDxp!4=Cjmbbc<)3pbx~C_CPH%PG=DJ7W-ZRcKAZhVV$}u) zr8xsckL(&6rT55B9Y=A-4Jpil*TNyiIWAl_e`fl;g2K@F%tvGzM#$i!65pDF*``y; zLhAHL73zO&$mO8bvZ!cTlr_?bUTcTF#bP?Mcu}Dh0~cTHc)s|o0{G%nA)+has8>F< zI5N3>QfBl?M^3hWRUwt}#g0ad)%dyvOReC*SV?Crk^z+QNv+K0T8nRin8^4N5FTHw zpvSblTLF79(c0P2=lP3CD&S$^l2w9Z5kz?IqS-TKq+-woZ66@e%-L2^DO)Q8fgg2H zWc(V4V2m#aH#{$2mgP89!|eI9X3OBq$ij|od_1V;%Vq(+igFxaeuBMC3H)|qP>teO z6}gyF2O=61H70~>5u(}(QjIJF)kLM5J#%(G;vZ9GP>JoZ$&g1!K&FS30!&{-Lsd z4<{|$waO5%cQ|0}hEH8#l7;}sFiva2dlJ6xS>?z3TYozBkz%jD+vM+|;-QQ67<|B7 zg8R@^JZ$piHC1hRVtNuUB`^)er6?|%2Zp6=C(FiL^&5bylu((xWD2>!_S|Q= zUrzl{iP!mHiE=2ks^o_jERk4c?^djgV2Om3Xe2aPB7rR$j2e`XsH#6w%*~*L1ntpK zq=16b{#!Q;1*{@Jf^BOz!fX;R|3#u<8%65bux)JG@D1B8wf+;^q1b{z&Df@&O`Vo_ z6nw1mj~bLPg{VGJR7W}7Amv^0h06O-!VMCm+;+t%EZiWW_E@2CgTi)*LQV(jbix;C zK7poWgcxu{SJ9y|kaXujo8Gg&4DVE80x9WCw=T=NgRpV0BD{qf4sT#Xq4-6*f4qpo zF+%rZF+4NE=M>D75Yzc_Jp7#Nm>l1Of3pf!iDaUFE1A$*KMciXeQJDnCw@a5*&h7c zRTz^rMn@%raGis+#-Nb^p6x*YdsP#D{i(zII=<{#MP}^l9Ny-4#A*2cuT^Y?1NOWy z8+}LM-Hv!b^A|L?IcT601&l7~YYz06#L0u9AccqEVtSaR(4&82b5g`5q8gN6ufpY= zrN%|~gLd`O%2b8emoVB*hF`6vH9Mbs`ck~)(F3JrML<({?)R#Or0N!ow5`LZypq+> zU(p)yQlZYJkTTA06d2zD8sSt;>_xl{&bOi_L};WvCe4 zKwB{bX;#scNl8kMRY^J%bc+(o0#TVdn=t!0m1Ah^ zEQ6~8?KsN>R_K&wU@aqE3`oY@@*~F8rjNzOXT(!7#u2Q+WXvst2~k>`2nwP_;iIr$ zx;ZH3RJ|2*%19(bDPcnq6rG47Z)GP=krBA&cs@i3_90e?q9(h^8g-ctF1fFZs?38+ zZa1P#exPxnsMvm2aK@cVnWR!S(ZkCD#(|yXy<<(5VcIp(qp z^{jNOqdh7a&^|I&Ol>CTlJX+Z03Rp*<8j`A;!HUDOADRC`gyGPnqI+qk|$xrmWPh@ z=~xxK?ktRUX-6m{5GJbwtXk>4WqY8u<+SS21OciijYef;1E*3>4A$Qxsz( zE|N^G5hMB$A+ByJ%}x}ECMD@llU}my3T&WLgAo_$(BWL2?Ljeb)Ttxh!yD3tMt|uS zT(a%7f7iG422x3fnuthnP#8**+g(*40ovyr0VNuU7^lU^jVRz5ebh$Lm--^?5D>{G z-Sdjo7zQc%(ZRDKG^&&uT^Oq4vJjBkLkUO8f&sg6Wxy6#TKN!peF98a$>LRZ0ZN{! zlLx`@uJ0&t<8?1KWgYZrc70-?p%743&=ikY{Els)lWyV0ih>4Q30g<{LTHp;h#g{Hd zXwsg%6vrMCM$WJXvtMedp<8VI3mwx)#VfN2Uqx`rPxX|H6G$Sp0GU{3wZz} zEc-j7eYigA$dC^fcnD{^6&ic?RM<2anA7<1KO7 z6I)n6_@79zRJ;w^{^;A2#q74VaH=p?3<-EEwz-`Hiq>7w7=|Zt*h-)VafpTKQ8Lc0 z&#i8aAIt~97(G6X_sGF7&j$Z;at?G+i|DLQzNi+%^&3KgH*Cv*jU8DSF2{;+5f$8! z2!>PG;fP%<8ycTgI9KDN3QlXJBhsK1)4N&RA zTox0Wt5MTsF+tTDdIY-~Yz>(zEOf=`*H9$it@3UwU9pX#<3jxFG)<^m)g*waKE=RLfFZ>0 zu?8Xq)@edjV~mU4196;bOxthKk#ntR{s6m{D%d=2SvAPgDWp8Bb)KfHquh(!gj3)*aTsaOn3So9JPeyV(>nagg`A zSHfP&qCpxs66^(mA-S6=2|wD>B+EjKhowg$`Z@O; zRfVaLEUyDbT23A3oaC0 z)kKoYAc8hoL?TjwOFd83Ll;N<(Bokw1XF`{%e|G6a8hg-rf9KJdt$@rSg}&4#D=@YhP%gxd&GuMiVdF}8$KmA zd}?g?wAk?JvEkI{upAzk71~STc>>pv($%=p00;MVnh7d243&OdHR3&L1oI^+(-`u{ucyf#mU+e9m>^+ZQ5mp~ zvaKqDsYwfzoV2r*WLSk$4E@oB@ydSbAbYAg)*se{W+d#b68-?X5qZ*x19lwvF9NMJ zOh+c4#~bEb%J#!bhCd-;$bTUgUD`UtqOvlgs?8i3sJmg|RjaFprV+rwRU10X0FE_{ z0FE_{3`4j8dm0I64cEJRjv=tlkQ$cZ!JsKK%=cn}iLpR*!^kr#N$ZXUdSZdevA~pA zV7FLccMTdE4dn2}wn_;@0%j=$WuC7(L$L7+0VP2|APMaW>ojs7-TMSASqMuVrPzg9 zvKSjKQkibXgT?O`IN1u^cTBsV4NHL!Yr2ht$>uEgT~(VOy+)jF*^Nq@7Q2PX+sj~i zN0JUBp6+xSrEOM;&UjR0JT+4ZHX;oF`h3#39srfN!)!mYXhFg3Ww0F?>h+};E;=fT zs?qeVkAPO}qT<4$nb#K2&!4$q*6gFBgnQ(3If}aAM^R1s{|DV=%NpleGO{UD3aO!n zKAqA%o;lajVCA-wG1Og6gPwqrF`$6rb!HSV_P#AiFA(msC0HEr}=ZF z#w?U@mG&=w4X73ejFi-GP$XVZAZq}00kvHuFI-T(Xy$AQ;T!b{s2^(uUt0$oskDAC zM7OoB@j0OXY?&|B=_xf-b(eN`z6;cRYw3%1XiX!+N;F1Je_&OkUcCvb)6j3|!8{PO zj4;<|#d15nDg`jw9pq}v)axavLPH^Xy|hnk(U_^%YaAxSq0|eNAmLE1hC;Q0iDh*x zFzzD7G*ZfJ4TkCw%gwF^O+8{+J`LS&R_C#h#&@yG(9kg^#9nJ_WRS@9)>9H8**eW_ zvI)v?J#1Y)5?HN4QvuoF_y+l|O>M5lbCuZsGanpcKfWBkZsL#SuO9ZaK%OEdEN4W67J$z{IvT z`N&4F-+&SL7EYntpy1)5ZHG*+>WYV_r(?ZutYWW}jgME##>WLK8xvv4ff6-V{XJFNC%rD~RuYXe%Zt+E^;pBy8P8MJQFO;r;?qFmTVc4B=d%Qav0c zvQ(sa|{OHfI+V!eYZEpMwR6u$~|mKKe^L!AX~ zo8fd1?mln^B-PUs$ggBE+-brCXf2Gmccz!Ivt2{kL7{}bMBH3O=Qn0xI$&6 znDsprW_Ft#7G_r~$vUq*F6%HyB{wv_38{{Xv_wT*lNGm6EpcL45DRRK1^T8awr^uX z!qLCEdD}FxKK?kqc^N!Awrz$MZajYz&$`F)$Ckm}zY75Neq|~%uSB(!nZA}$%1nn zintulf90$fOGNtSODViUDZEgfk29YyZ2lnzP-vK{l8Z8(x_oy7(!x1rPo(r)&J8H* zl52yq#)P>fJf-MONv{b@+L)`7nripN)ipyw50R2rN3FGV5R$EtYB}nVTg%E)E39-p ze}E|^4Wg{pl#x{T>50JZ?VrlIzGMA8#kE6VjB>|{RJqdzWj^l$f)vZ ziI&?=QM7rwIOUp#^<&_dS8SNV`g-`n8azG+0`~f@Q$?T`4B=nUHahs*cI3p^A04WT4%rn< zwh^ss??rvqt|~l)I~hPnbgPkdmRxV$(N+i1R z`wCeGVuF>NIG&djmGU(w!X!$%G@>L0H!6O6C`q1J>LhoQ>Eed(pqsHX0}d8nwcb=E z@jOKwqC-wtoyHnSu<{OeiQ2Uhm^oi1d`W@uN^id=S8H%HDU$2B!<4K=Bc}E_z2W*6 zD2|4XIla%?{pzgJVL! z?j5*r?C-FCl)v-ErFeHk2#vE6;*4%ONQKcL+;8sb6^}K|I1jJ2A9}Yb&*Y0 zwl2A$Z|eb4q7hQ6MfeAC`mQyi*;(VaJi!x5W`U}=f^p*J(s(f~+G-s>*j1$Dji}@+v)2@%O1_5ZPveCzIAV%?KrdFjNdp*X zU8QhIP^N~06@3ZFjRx4o3{6oIoII_TCRc>5Ud;(+6$zrJ3{*a}& zD@9$bif1bpe}bFc2Jr~A)s<4QBwJ#VDYA`^r?ePEKW-U%eeo{FZuQ_cycZoU9CQF5$DC#tWV8vtt z_Cy0xmn&I9Q)EX2N;D9x%1n7wM*~_S0i_%(q575$w?f?}MOqZ39IDfjh>@pt_MKHSxT9tmvYwEq_Nwtr%HLe?h4S zfh)Rt8>}Z(;*z^omGRGXPvCXdFml}!Pf)dn8VE`PWN+y9Xy`@K^e)2kt?sBOUG~k2 zC3)DRt(JUCC!|Cp-%_$B+_)@80D+NWlDJ1~hbe_rHIjtu6pJcy(pO0VXF%Wy5TxFs z2(}SH69{U_PBp_tet>6L3OB^acdMeipH?&oN-?cuHnbb6*63z5Fx{p}NooJnqLFBN z|KuXC`ZmS9jP4}82INW^ggkg!j}%9swXp9|LuzN-*Iwlnlr}|%&=|Uhz%Uh*vXz^ zXzI@t*LqkL&{ct6!zpQj1|Py6-C#`me2p3n(X5xces?Ig5ioxYY>&o5H1dgO_MM7n z1gts+=DJIzE2EP}P{$;u_GJ1gYL#}4(wLNx0-Y?j0RWMf_*D*JTK&cjDv}oW;URGS zTnTW{S>(pzKxM4f1cnwjAuUl6*L_N?ur!$(3Df*0jukP{xc^dIBc{#OXqeVGajw(o zTAIH`V2YYdF(A6oAS1ls7mBy3RW6fiNCtDL-z(OS%Mk9`by@t%QWb-*y@3xJ&nLk- z^?>pGDntqplQP6iKF}-93}oTDUu9uvr&A7@QIUd(2wfLfXyiVeMsPc#ZvW|lp+!R> zF6?NU@;#u0km~Ih)6S7)sz~V4)8~W1IMm5!c2@X-M)+jfCp{6Ic-ojN7DmhNh&(%+;W7OcV{T zj(0guf^D0Vu8tAuz8wG8$d^`fOi{5}@!N>r22*tueC{RL*2G76T&2RFmv3)nVy~De z!`FQ2gK-i<#h|y#HA)g!DPp?WMHHi6Y6g`>)|hE}Kv02(c4DKAs6xZsUs^l~+!F$x z<3`LCnIr9(3$|$Sv8k0NErB~!4TVIaCZ?{(RI*P)a->rDHAr!sQHp+cEM{3oJzK>_ z%}C8MVYSNBgk;@lh-@$DHC$}lWxs{jg@BXAngD38ETJiBU+#Nc<(P_cz!P+;-mn*F zpck?u&+CH;q57=T$R}t)88ZseSRw{wreRe5dzHaq2>(m`_WVKdix&Qu=Eu4}Dx$As zkA+{H$BRXKEvYgbPhp^cUtEgMZy+F?JULPQ`u?Pnm_{oE6-0-sBSU2Eu}48rV{YFo z`thYOqlR83{P4*CU&Y@+|Nn(A9zXmwOB};iM7po)K%D7|@nSx(TNZgEsv--|HR+pF zWHO?!eo~2#c7z=U=)FYm7HhNa*j#JPQAAhrl%gYJQorWgKa8&6X+;MUPl}7A1OVZ! ze0g5g1_X^6G#q|~%7a+fs3fGu3CHkdWeB82QhQGl4Tu2_u}8USyi4I9ZEFh>zhJ9M zt9BtUZ6r@hh&2L>b9N!3Hg~Z+yvw?IRuR9AQx6RVBGzFKuW{{H*~&jry_5GfRD|1dKC zSuGjq40Q3LRx-sZZVlpVR~EhJ9WY-XwKuA>9Rbs11hxwhq)lbA2!YsO?-iU$#mh=~ zGS;JaK6bWe!%*%#+6f_&0UXX8BdaF^CK7vYOKJ`^uT68C008yyNK zUxSkAci;pA0x@SZV&7zWM6KA$7Pxn_%iwE{CPQPKY6o($h<$%ioZkiK_A-{9BCafZ zZq^gl&WYI7X^P!ciq^FV5Ox`2QNzR2y}SnnYMm?EMMG^ZPY~nV5VG_dhqxC3YTWFq zZf#KLzuF-t!?bE_lGiy+RMpC$bJIl?e)@@uL_?Y6HYzdhvTj`9J9}yw+@cNbZY`Qb z<9bukJVKLvdD(hVwJ9AtKZHY)t0&P^Xd1d)6-|3Z;cf{6iu;>NP8R8N5gD0{?x8Wi z#>kqDjNdOoY<3utBv;`dEAZ+(40yD&yu5@q+RpUtc+`d(PYxeg&L_jTV^Rv{hT`G^ z7!Ka(NT;LHTZp9PhEIuk?0iT3Y5e;*#D+##Xm`AWm#(H?eu#sUA$(@@93qRK2+|_B zmpctHbnpv~j{wUg;rEiTY&Bvi!Tfcsn__{}e;#Z)ii?Y9z~E)B1CjUmcnr_;avDUk z$cC~}Q3J)poQPM_DjBruXO6DZMb=`r4T2TIOb4d*UOorcl@t;XF`&kaf5=Z4Vxnkn z-p;!Objw`}0cy)ZFFp4XV%t%VIG_I;+f z|Iy}7!ede<*%z~Z4ktSoGv+l=Fe|OyfQxP)YOjVbs(BO+2(k7}MDVeRApD6#3mmsc zv3w&k%Yk4?p(e)>ODs!d%c+=(B*k?%xYF-a!FiF*+1H^se@>j~z>}R^E3%$xK#8%R zCcR1&DR-};T0?`L?x0jhY0zCS^D9Lmrx(nh4KRt_h|q--#NIacn#1j66O!0v7CXD& zm0NQW`-!`a6}q5S)l-@zBS)KrURFgb6u=Pc9PvNJlm`*xYZD&q$4#R-IVXhUALOi5 zMsFZAWl;zGT1i$znbFK{N!E4?ymNho7C8|^v=|1qeGpo(>!vgLqDt<`K@2`R>N{7W>jBZ$8kgvkwo3eQUsf5X&pb`K|;hW5G0EiS`iCMIuW zS0FlJyV%T+_siE-0~pL*msl&U*P`=6ZUuqqQ;6e3j4=4kR>)Xi$fLQpU4#_$%b)5tS25|sn`?HKm1?7 zTGvu+$YB^9gSyKdp}Q7q_VP-oCdv02guE+c7s7pMYg?POhanE}io;KF8H$ZHoCluk z;U_eq6z3p9;*+bJ&@8wjy~xcjkqW6x*lo}`?1`=BZ3x~BX|pgECccW8fT=tmHp2Kh z84D!sDWQ7XhE9x+C*+Xgj`%R0pEzFp45<-$mh9wD7~dR9KZEFd=fKzxgR!?urg%c8 zs6mR$5xB9QH^k+v=c5sj7Z3EUw6L8`0rpU5h@gvbnh4Rl$f`S67gf6LC>?xNVh;UM z+VL-HW!q7VUSEoZ*e}bC-bs8h;=Qg+X8!uOC`s>lIBxMb8k#J*04M&$6QMe|7l8&JLy3TcXHRcm%Ja@xDtX4UXMcyOvh9X)Xq zwlu098>DPcO4%AnehbI7wN=j=uR%RaoQ+C;|2xU%@tYU|Ras=OOE$lkY+hGvfTNkM zrU=2QDZ0^lb|M?xjV~Z^1`Oh-dNHi#BJ5%!HOFxXrzk%pSs#+d$6jczoC-kQQ-{tTI?Ctkp>F3FuN#j?EEHD9~+jKF76tFb4X%3`$-}xio0{x zuSX~K>h;i?tT67s0W%py{(_W$Pirf~y(?dg0guhk9NF$W)+)h<)3?|N=BO5av?sTWZA=2vb~h7Y%TWGychKT z`1JP2inDkZ=vnf@8a%l#TQzRnux*!es9U;nvheop3;J<(=|Dtxef(#*MEKq}bh8iZ z`u9FM6?E~g=h+~ze>e7j{=FC&?AjDsfXg=G6hFfu zW{JX$Y;t!#9|5>!R5sL8<~d68zknC6?FYE82Ql{Yg-!Xi)g3DGS%2&*Ny7l-x#ueK z4?!-E%+{Wm4&i)Z(=c%lyAUJpCE7Q-a*_>cw`^izvoj5N5U(3k&Lr zE?H6Vx=h97AIPtj7V75)I*XiXyqlL7)U%6mA<#63U4U@O&U$Cswv4H)SGN~CV0i)k z{m^DxN17DiF_L&Rfk!VdpA83oNfa4)eiO1MrQbqnWY!?2iJxK4$7XiCa~ckh6O)|7 z!CTzkfgK$$u(|t3D*>M(?tUmXAb#$NSowx=E!F7P}jjAuItps`?YuG>IY zEUvQ~&F1vI?9f6mswsff`z9WPjV!21^Jy2MYiLKIqC|9?!c>cBOB2;>3yX|Bmae+0Ntod zS2=WDVhc=)Nfbd*z5vS0mWx$4dproqn&5!xdv`>U*^lY_fk&zevC%&8gpqNlv`Gp5BLjHn-Pdk5h(ZMH<7NV;Y6;QaWFn#8NdGi*`KNK-EkMu(r=&YpS0g5sh=tTu%+(I*BEnKAsjvxl5D z{H(LD8+O*r>t>|Sn^6eY2-0DT_QT*n6tkuHalZB}F{5y1e!lWDp(4hCMmb2pB0R6S zX!cUV@fnfaW?j4BMj0-Sh-M%hp5~)caQIx9Q8@S7c{2(q5xz!q84(Yc48?hQvlrR1 z@a*7qfD}9UYRH$2@L|TRS<=M=J{HVaRA>cslV6JFssa=&S^&2YAtJ#yg&80YKNRK9 z)4|&Uz97^mM7dL+jsxLLnLU0ho~1t(%z&qu8&qsR)PwDC0s-YzN(yFY)c``+smOjn zmD`RkRDvRE1(F-I@c2QW@cVptprMZx`3`~SX3CNUhrt6)AX+cJXjdCugFIX$5TE(W zXD?bntdMWOy+=Sq7m27F5I+Yw`apUe{11Tb*n>VRS0ebR9DCr?tl4=pif=4ZdD-Fq z62WtJVE|B7lZ2MEq5u-Vd9qUR>AK?l8xb>5wjD^6GY|kOncH>-g5LtpK#)nW`wx5# z1S0g{%c4ayWW+&AR9s+1?4#TkELyZ+iK_FUV1j^DxlpwMBK)j9iJ)#~%_y2dNt12i zkgeT$(IEms74c<3;kBxHQR7y~M*JEGHi^!jKd->@^n%Yiv@$-bzK1TZ`W`+lm_JkY z4;qcK#woi6*Um4VM-t)7jQNF2tf7J4i8ZWihLe0zon_nN8v zmE|=`v(>*rZ2fQzfBKm5wfs%|`e}SAzxO7;@QfX@ia&OYS6O`Hu!lmSl^*?4R3B9A@shV$}$NQpxQ?y;I-ui87l zC*QZYNn~vk@4{30_ri}K%9gZl!gC|O{~*{B2R|8)hVW+q3(Pz)?S?BPTo8@MJ+5d1 z^>@;}w_>p7IO*Uhkw@+q~*ez3{PBpJJd?!oJE2`)1D z4i1kAlvnu*Hqn8vt$f1@(KLk200M$6halkod9V<7THM=h?ssV+K3hyW#XT({?y|_f zw8{LI5KjgP@ixcJkZ9wZSI}kA+uYA9SK#h)30(v%S66(vi;&mNAJW~P*&%+g&fls9 zjdpmS+F>~SySgF%qf5ruZWilMUvJC$t6btQfjQlJ{O}g8V(5VjRKK&Swn?hZk_t3U zLiq9a*^FyW(r+2%UdXQNhSN2pE7|y7!3Vz|EHhp_@X9xI3ddj{3Z-Wag!Fjz?cHU? z>^u+dh;Yr1kVFH+*hmu+@`s`=Ka5O5J^mQEl+lZo-K!1gJDfdn#i5Kzj1FHOt-}w~ z9e!e(CuCiX>w$-)uhsLpAm{0@~(DgPqA_{h4@FyQ-RR=5%9)kyb(m2Rpy^&`v21NEIu zeHmi9iz28*Lm}>>j4ro@hJCA8zwM*dS$N<*%k8W$XFX{U8U1G`#vSi{h_Ehm%cBVvCZT_>hK&z~dmRT+VqnrS4^uCAEiUYd5v3QYwDF!GdkuSoi~L z(P4n(p1u5EdUZ26HsIudakNBSr4}~>{RM4)%J+)Xc3UgoVFK%*&Sr-{C!W>1^}-Ol zH{2O(z)O3MdNB$Lh`mX}MQh8%8v;xFt$KKzJ5BU`Lh4tuvpk6R?Sx0)KD0<4NotC! zW*4SWn$>hb$yZKZ24=WDG?3q557XXZ>6*n8vPV~&;SkYC6Y3Dr0DnN8l4@nZmd}8V zQ0|1Jj#UHN^rUDc`XwgG)-qD@D#I)2U}v5)U!3tG>*IN~!CJY9xUYt|gSJ35Wy=4ff&2^I*{CAB%6Fpj0$Y3|(Mw2FqffgA@(KDs5*1s{2MDSdr>emA z{n$tOe(Z1fel(63zo)6#U-k^NnT}(F994WV0zi+fg+G$L;$M8Z@(^JpsX`J`U6t=- z2C@yCacq9J;YG__RkF6mBB08t>=_09_ z_r#<8wdK5L5FMkPjq^n z*WlpKA6*FtNPIgHB6Nr(#2%C{6eEaO6n`;I?3@URpT3mzB%S=a8a!0j@ZYTz-XS6v zHXZn_2nwM?_)Jj`T^-gdS?qwv?hMk*!c~N|sWPhTFwzddH0vL)rdio*g52g3*rGwh zZLT5Ceo&G&?Ivs;}Yj2Qzov`{BUmqAh}vOMM8XCrhM1DSjTA zm=u3WOY_PU=o6g?1+}HE@33WVwk#R#i(}};VeGd?pNF;+GiZ{}>n2XNB0^crR=CMQ z+&~W-?E%ZNVJs_9FSz`JUJeXQ!Y7U+3a_WUy-DI@Q9L$cv;6NMcyE8j{NF*ahl)8W zN$e)IV|Y5wO-N_nln8_5KS=lo(vG??Nqhv&aop1ObB|>=Bu>Xw*FgHzJ%X^MblGUTgGURog`W(wg4r+@>&gGR6dI7QKzSGNW5Y>wRA>g#A~W;nJefG#%XG%-$`ikm1O1OJnaWd8YYSUhVG3P)o(2W_D(Li% zhqf9{J&Z^mXSdeI%#!s_Rodi_)?ly++oeT%N{VzrY?08y=r@C?5TmG5pb*r;-l#2%*n}a? zFfMiu2uT62ihZeON4nld%??1J@1R1bMI0)!X8m|DLqE+>A`R|b$JmcV=fJSRZtDjp zqduMNCde}=syw)0qC!wy4R*0C#B3B|14E)SqbBN92MiD&STj?r$#FSK1tu8@Sz@$W zr#r?__;|BtI5Zno(hB4;03jRUyC`giqh{;O=*NCHs1-2cD1)ExXDoDb#(+^|C#wlY z4O{el_n;haRIkzJJMll2&?tZV1I=6 zHizQnkSQYOnRqW^niU=Pq2*BsvE<;)1dW+<<)ZTy)*RS3 zN~VV1+WT0Zpz@&fY6xnapbpDsFf=384!Ldw1w-ouN-kIEkxR6V71vwW5Ju`l#VOz! z+}nt6I^c-=^_&zxioI^wK6kKBK9sQEKQ3}6B=U9DCyw^GqY6*4li4~kTKcnU~^NFZqC`S!B%?G@I! zWtHJ@=8Y{kbcN5?nzCWJV~ISVaw|<+BYiyvSG(5aF_7Po>KQ`0?QC1SLG0aenKLiX z3KD2gnUVeo%DqBWX*g7&AtMN&!7nE{lhB~6-2`bcNdc;tZ(ZfR;HE~#&<*4R7FlJGMU>K07az_w(7Ws$~I;xAkT6~-Jw>T-61N@u2;s{ z9irmwdS#s5A>4|y>qW@6qWB@)inHrgadwA9h_g#_`)8_Zj}d1#Vx7o19A{E(%~BjF zOi-n@F{j^M!M~SUCjk0AHNx-1h>u>$c3?wHCJ=(^c6cyC5g6%}6mN!o-TM7}GVU0A z;Z9Osy@inrytRp9Ja^VO-+^VnU-~qQz!gCittaYav|>M3n-*Y17VmqVw_!_w(RZm5gRcBR7_Lfm6rAwMJ^U5#ptkmgz|%~b0) zc$KaqpKjW%l+E}g(*CouNr2l_pM3f|*FzcMdH0ugPIY;z2gzhOvcqV67|6?=d+`)m zAE9Mmr#HX;frr;~641V|_{HnxlqV6iWC(SMdP_ydD2q&p#+af68=c^U%Qz=AtzZiR zwS-L14l;y=mI#`@$(GRWn}?RMrDiigK5UZ2Se}%~{Vb8&*>qi(W|k27Is{3OkEjs& zN{9?6x>Dp3o*iNmBql|NC!$Ckv&7;_@pM>;tLLaTIkXa6a?3tIRgGZk>?OOZBW7%t z8+|CKso)c0G760cGRN*tk`TLSG2 z)vNt9^g$Q-pc6vk%L8>K=fV=Zg?F%X_g7tK&?pw0Nck%;h<&TYIFvN@7(U1W@f$26 z&;qdE=ZyJ5f%fxeB+y7%lCQ>zN@>3)8YwA?NZ@(hfIcAOPd~I5HhnBMJ|mu@31KTP zB+m_-2#8W?cd1F$3FTptj44*?wPbj(`60*E=JH12oWkeINi@BRtxt)UqtEc&dzt4IkvOX@L?-cM(9y_iBo7bc0z~xLs0^WX=Pr0$VF|uK{cMt7cV@v9%2Fl zA#Jt-Fq1qJhhtELkP?fJX2-RI~h%v^A^%jjBoSaLkr9(T~q zc<@~=bTt&?tZm@g7|1_hT+u!&!mg#Wou_5dVX4@IuAu)x2|Lr4)kTM;TKAu&RA#4j zv1IXK$?@p7$04p-`>&#C%jHp@432)?9(?5-Rap^&gp7*GlmZ*H%Md5aI+c==tk<(j zZCh>)-}W4I!bfTISR*x?q#|)XG@JYp&dWp>a_qkhM|fz4u@3I%AkumHvJjvM$91i5=Vwe1TC8R3&a7s zZ>R5CgIjQCO}TZkY%r-lOf;L(cOlG3F>-8%)viW13Z5(`9|8CQEAREzYm1TZ27>gh zd?%4psU3|p4=Zlr$Qx9R$R`{L7p`KN>abckJ5h^99*LS!mR&5v{lW@# zFvt$YEiH_jM&xUOQE?iHo<=?g9AKKAQ6>0@kPg^cN9YP)Vh~aj$so%{PK3Z}RJ2-; z5;P&@>RN5U6o;s8H+Sq2LoKERH^zqTnvb0NKM7~vq`J$0K(y*Z$~$#MOv(MR;X|zR zl`-=!hz+-B_(SSw-e!7H8=h!6G^5_+U!}N5!82DYTrNMCB=Hn>j)Pt6whTatgRf+N z6sc=sQJf1Nb`3p2Yf`;<7ZDSeIuUfXR~j4UVLn$IuI|Tso#Ml(S$DE&H2RNjGAgL6 zR2AcMj7vD7>eyR`Sh2mk1%{?wjL%7b&-S)Ui7Rws@+$`2Yuhs+fpKMu^V1>VdBJtF z9of<{XXSUG5XH`{N)M#T)p>;iCBcAJA24#E6qA*fKo}65hg}b$d2}AAI3TIYIxSUM zhqbE-D@W9l2N$qTOZ9iGy?CX;{*L;j!E7sSk;JGSyT5|>(#c||@XfX&nMK!6 z#@#o!H9x*zb*lqrRnX}ac5gf2 zJUXAEqSI0}>J;R{J7Vn~N#Ish?ME^XRf{}0j}gJEB6;I%np10?`wWEiY$7B7ikjvN zI8BP2=1JTgL`H6jijZur+P7wyY>^R?EiyvfD(9$sjWBMJ5#kmZA#S$c&oFM05#kmZ zp?Z@F&{FBpU`G`fxj7qY}5s1tM;d5ha}31R27$AdzV5ASXM0)xpic z*OES247`0m>2D{!vJo8(qIol-#jC3pBZr+*7jQ2$mc;qiF3o^{?gE4IsPOl(Q&Vk4 zZZN8?$jA%uFRPTX3`q`ehxsd(gAKUKl1sCZPaP06J)?EV0K%Kmr)Quj%~+@LgKWm^ z+tdvAXEbB`-iQtKHT95~Exi9eur(1pys*D>Z?kl4soZ{@dE_4A`l*ub==YGnqK7EA zy+#8C^_-ExQ*@Just8-HzKOf6yW!5lq=MX^4zAdMNS)cp3 zM$i56{Jars9$AuNj=NAjO&O9(oC5feLteRLhQo+!JObV_gOZo%cBSMZwORR$4@)YF zI@HS*LDfboilLEy;91%oP-aP?s$l9LMc^3aeF>M9Y7b&ad!&B9Lk)l<#a~qmKS2Jj z2=W-_3S^I2vt9Ir4-LOF-`XY{1n+~Ob!`Lu;KS>^m<*~Lc~TS4tA`tFQP!5fBcm2} zxAYfW$MT#S%LBgG_fkJv7hcN`dhWP9-n$l>(k#$C@ z?kbx>RjJRx^a7l%k&m(e5qY(u?W5lf-c{Qsu7AMVBpJ`dL{vjGGbBx)J7Unhd-331 z8`|ED#pc}wL?TjxXj1P~gY1Ch*-Ju~!=x5_j^0p2C`FqjTl*tJ?%Qwyi<@@5G*5jr zJzWg>Wi3mg8ay90U{6M6M1=kIfNt=V_3nyxT>g%9#}DQAuNL+AWp^Arfc$B7QT+M* zbI#6mWZ}2>R|r4-#$SzNXF2#2s}X3zGWR=joJR%Ad@oLRY4@a`2t!bpYM>)9*qudQCjxMxYO+|r zoia|@n zK!ltOSHG-58XA+(g=(nqCV3r z>8r>^+Jt8`GN{6K>fA&u4DwFfD72)I!GHSU%qSPJ&f^y(;W2J#B76h&3~MBrK`esZ zSejswBQ8J;gA*{WmV2G-B6NY_DeTOy;M>P7roh+;i_yT0W}ws4*hOKv{J5Bi*5}@| z%W?tAa()UM(G?c3@W3*KP1;Xcn$=7msT=MOlf64)5Bw$WxyV~&COjS`K=-QHyMZPE=l zU&rBO{JRxuKwJ<^@ghC%=Rw8fD&l*f&}$@(zk|U|`iWubVuEi|e(ygz!|4e8lc2HRczDI8lKE!MVJsNmE?@A&WX@3M*_FZZlbFi{}9;19m z39Hs+h>)MlugVtzvo};n0$YzMT?Uvew$3v~!^Z@Fp;LBPD}|9#ZV*RE|7~Adfg}w0 z9-4Is9^j4ymuc3;5qe`xa1R)_cVtBl-Q-T#p?v= z4w48;0PF^Lpt>5@tHBY5jt-uTPorim6WfHZkS=WG_QFteeu(xx18IYTQ^<$Q5WFpZ zIES@eB~BhcEGxp7HE?l_2qgIaz5HJ4Y_c(I`_diq8v@F)OKFx2<4y{Qq+YL{P>FLx<9NGKRzMtsVPv^KL#Pq=H9Q6x%;c?>irSK zJ@6xMEMv)i6}JYoxXYVuLbA2^VTfIK|4WdPLn^7Y7GU%57RgwDzFk?#Cm@*CY5Wnwpo`c)l>9~JeiB)E3@*U0b8GOx3R^o7UpnTu6);8v&Wx^2s z&%`Wh!6Krr2h~W4h}s2hRV&Tu|ym zsvZs(!-EsP;LyZ)fllD{d&T;38Nyw=E{k7T%D;{;<+t6`-oOWq=aUctc))mm6@^fn zlp$vFfnG$tm9CYHj`V+gj!ylM9wKfh=0}=`wozM_?_Kk8gkJxMOc%6b)aiZ`hS>e^ zKabE=GdyXCWnuv9-F>XsDf(G=okrgywE?3KKesBV6W2M$^A}d38$XK=b*t=-{G20l zPyR7;qi7p+)GTKCZfg)4!8q=tt1Uc6Wmz4-h^D@Y4kb9vsE%`f@X_Pn7TdrDeK=~~ z!H46)*ZW~8UjJ$>kqFwOd!Ei#-~5NAt0_|*HVi=}bR0}F)0JfB*ovf%4r@J*n9hC* z2uJr*c`=G9p9pY-m&;hE8RKY+t`a?YY&eEkFP+U~=$nh;iUK zJ$QDgq06G)NzD{5!iTu92-~@|J-#=8X_Xki81HVwVO_L@7mHL3$cx>7hWC_8#Qk;B zyKaZr$Ja47%E5BFLBXPdf4$QBv6QjF4t8d@Hc>o{f3cDcaqzoYk=TkT7h)rv{XGvo zBywmrjZcT`sr9_4DCO6d^PZI(a8dd#UtYO$;!=?=I(YL+gudk)5w8jlZpaf+s7RD% zw!{t5#Gq+ACpx{(Yv4AQ|79ieNsTqQLm7t>b4Zghe>4{6B`pMs0 z$tF1XZ%i>;o7r3n5Aembr!64|y7?O`ai_)~4;FH_sD+3lh*%VVF-`0w0iT9|6G8+$ z!5e=%|CPgwSkT?X0#U`z?0y9fI*(d!xM6K7{AJ`508I*2gQb|=#C!kffLnkos_>>R zpM8xaRdnr|SBAHmwc=jBtTF>S4@0eq>7eKuh+pf?;%@E{N&Ncu{IX5()(9oD9B2B| z2)z9Ha8cF426ZpPV_BM`10C-SbiABev1&M^t+W)hji9tmw2Xnlmbb-X#8XbxVSne# zXv$Tr5Ruv4qIVTK!$Q{kBzAT(`-z*)p+k|ur;g@=yqo_Ydv5|5Wp(ur&)kR3|5gQ( zOaf?YjR?q^WWs6$1Z7RwDlTEs5W-}Uki=vH#8!a>>?RuQs@9OIuT~*8wyz5bTH0Cx zwG}slTcw(SyO5yvZEO90zx&*0W^U%0gj(Oe-}`<47GY+7_nf=md+xdCoLeXB_z1OH zdJX)cUhpSbj$uh3<;a|^@-7z!zfc8DMj0oGEWSsx*~@2~XQbi4GBQyPaS7S`bH3VJ zcs<|@xg9SU-(vUBY)sUR&P@JL-HGvVYbyo_9&o^?2{u3t50O6C8rjLCtXi>{s-jUZ z2H$7ZXmc0EVvhqdd}?P`8&3){XX$3UVkDpTGfmC_`)OU)>P~AwCs?Rs0uzMSvs=NU zrEYVz{4D*mK%|tt;muA4pM!p6bpGE`VleC&)!iPUggbQE3AMm7NAr6C3fU*SNza8m%^m)1U~TKm5d!uu%? z^=VL_Tk!eeKDn88JEums!<{_$7vrJtJM8)z;LQ*f5hig9n(5pGF>k=NV)*IySTT~l z&V2y^L(|}wM{|f?yj_8KuKI=zGKBZ4hgzMU?Ax|WMRnh zbsWJT`D$x@a>IO>r9Es9mN^_p&WJb<%-3zJtJ}7%4*$18wYJOp+~}rI$DD@i!9h;) zwcDjIY+YN?y&P69(8oAu{Lex4cj-A1TZ{woq3{wDOBDw)M$V1O(McZRvI#ekk|LSD zNgfZ(4a^*Gn=Y`E68=M%>_J$4;FJ!F5H-n(RXA8JIJLL6>YG_Y%?|W;4o|iEMxma& zHPhX=xW`-QXIbxrWM?bxlzw<>HomSCYo!VlrX~uZ`E~jXww%d-~$o^a5zpHtf zyySWLia4jADAeKBjn{e@E*VK?$Hy&E=hE5i{eA!$=P%Gc6vj*>-;YWYE|rQ*m@e9FTqU-PG{jGAdJ@^f#ZeX)hFE=pZUR`N7Fx&xO9B6DZ zyB+Z)-CryxAUs=AhTLBQX?u#SqWSrkV(xF^Qf!B_BMh!>664~36Z$~Hbm44!Z|Vsf zh0z2~7WE$eND9IgkPdbIa6mj7um<32r>|7pr_XMAy# zu`Po2Ria&e;wBss;1+;WeKwBv4fwA`g|l%b;rh#`e!qDJty{X27}M!(PNxv0edpHJ zIDR}s1L#0fo46{O@fg?p#i9W?v4}t6oixqRt&^as7HiikT^t7aaPnd$>P>ldCS-B^N2yq1W-*i9YKN-ZVCR%z8;cP zCr{u!GYaohYu$&zU|JN_o^n9TD8okv*b4)5b-you~tndzNv@PNKN~ zpP~H;yGI@2a@=}=uxl$4kO%AV+H!2CDxNcyR}GjdEuhf@iWc{X+7%)egJ)G7uIftZ ze7BM|vOtsNa#``NybX^RY{!3%^6Fg~k7VLi-gz^h;BaxWxa zW||x!mAGFR2}-=if|aIcN`zuIswbh5M=0jOc-UU$cte~VQP>%g9Myg}-8D;NO?nz( zKCt8AkRs25_?HO^9ZAbb)`(=CbyzD@7aNDgZ&PJQKX9lo70PX_-Vrlygv}{V>}R{2 z`rf2D>Iv+k+Q{8lc(>Zo3dN|zcWs^8=RhxVXpOswpFz#pQYR)1vP)}VjJ<(P<7wfH zRs-F|_YK1l6b(t_4cdFp#bfIcr!r$VzYY5Yf^0)qG#-0-6Rv-7uQe$_ZVF&PKqdQr zC_6`Pw;zh$dg{(5#Hd5m)|{MKG7r5kMsko{6usXw-eczpMCgX0a<%d#rb zX3J(D)(YS845k`={ixH|*fiL0uo=Ja;Bew|gyY$g26V3jDT8jK`DkSA+Q?LhgyrGiP>{g;Ux>0x zFYIdB+6El~`eoi|y!bS_b#Fk-VXmKx$QVWcfbfc`c1Tw5T_&#=V{m^87u22doIYn; zf4jQ2<3;&0o=4x*uO8n&ySn{8T=V05Z9ft6;==4aFYXBCU|=6#y|ZCXuR#n4wlLWmfY$-Ltgnd+z1D@DxTp=iDBr>E zg6o}EucH%2s&$ta!4Bxd!0qb-Kdwoy^I9b$SIL2B4Hyb-@g|E){P6QUEf@Z}unt19 z0Zf*|WM}2F(d=Zn({2(K1JTfrZeUklj|?tgyH7`F7U9cpJhC3rs$Y!kCq|x5ITNR( zTHKVN84<=|2;xW&>xXF4`1faO?=q_QV^mKzfJrU1k!t@iwADXB2T|0imRK{Zbhp9wlc4WaQwz5YwMS?o2*Z-skPpN?fDPB(IThL$-K_0`%>B#TetFm z`F(-y_YnGnf>8A~sxTpGW!cvRhWv9kC0(3Phxm8M^&1gjg(6VrKKpob@+l3O_858M z>^hfr9b>)nnrf>bA_`Q(bT9{+t~4(K!lZlKVDERT%>HnlRVA}C+W3}ot{+h}@R}yV zq{5mt7fvoX+)|NAIy1@ewuxDOaAC|DT_l|5F@!$+gE(Q~U*n3GHn#EQmb8v_oH%#6r{JLmM4PSvny6 z9iFy;UiUOMGc#PYQ*(`jr#AJBA9L^%G~J_Fh>kL?nBT97-N5E}pfNx;LYc#5z&;Jh zk8g#!S3mnCWTZR7fkYoM7%M6B0^{6FhZKm%8Zzb~tzbAjo$D8Z3BSymICNhW zwCLZIS2pTZ@8q?YorSvydy6D=z=8e%sAY?zSR>?V)~)epK+tMi2{Ht$(7$*@p;uP- z$+kYZ&WrEg@g78AMST7Ex_T=Sg7R>VF)~>3fM#%nyu;lg1C&m-WpJE746H!$CCX}hThKK?#;v~hhlmR zzsTffSaAPffxSDDRk%9mgH@NUd*bg2|EaTo+-}gix;u075wuD^u{%P%$4R7O*A#Zu zZLb?!hsa8m%Wy?GE@2$hD+riIW2hks<8tH(-0MV$6CTnzus3N4q;f!Dqx+(AXm%3) zjfo0n^=9kK4b=!LB)7?Jb+Grmtn?w&=pFsMn-yK7JJ6;u#meyO1EB%l(-XKCAO?|7 zcH$yDrJ(L6dkrxdFx+-;XE(LA3 zmu!RR5uOk5XvPiR#HAuFVVOwlzg(pCyF#S(9S5Nz%{v}SwhZrt<5tZ+>ohUg+bVB_ z^8x&KEBE0h4~JA`t6}g|fhkjq@v7ZfTeb!>e%Aw zPz~r6lPo8?ZwI3?4Ttv2tXJM%Vz-b12N<~#R^=FZ0sk?(NJav#POX~qlxW6Vv4vpJ zfH21|$Jk*yjRf0yVK6MIu4^+oU{bP7#%`l7ON~^@68HkRSDmQKshcB@iW$jbaxz?( z_2rb2_?Os@mfE%GgR(R}tS3e)Dv8Zz?tq_fm*098n_5DvT@|LPe?+GmVW%45ml+$< z<;#?QCq|O3*rk(Az)M3qT0Y4)I=?fv=0WP_E==rbRRR^^X)T(J;YsS+Q+N%$NlO{Y%h=!}`gW(ZGN5devy37dMf z@IH=M3c`DjjFIWSwAf6)h!mVrvSIU0h`yj!V510!I40|~GT1;4D@3bC4CE+~&Mv*L z8c1hcJWK=Y59sw{;!x@IrW{%0Y=$k4}tO;SlW~VsZwPA^V1&9@CZhkUZh8tW6M% zl76Bwy+f)RI&_~BJJ^La&!zLe%k8t_V=+A01^hlYP135&f-$Iu;>Dk(BOIz37?4Qv$I)PV3b33XBtIo67+B zF%^G~Z5GKAeyuy>c9QWjOTB$z?Hp8AHN>wDvK2V2AtR zQIN&Xi7@;-cX*Gk#D0~jHaMD(;)DrlXoCCtYPm@+t7I(7NwA(0quF{)m*H?gI=Qb4 zsm>YARO9`=G`mH*bAxB49K%!y>Dxo9FN)V-lwZZb&EWeaDi#<^H0?LK=H~(*lGL$Z zAdKA1mgm%B5Lh4T4rhw7~_X3vo1855)chaN=_|x`k6W+6_4xu zo*}Y%?tGW*+5qACy&QSj(Hyl?kg(Aqe4QD>lqG!GNHpR1nr(+08g84n$vIvvkC8Mz zi7h=BrWgU7BtOi+Uvkx7C?2Vc8s@dp$&2Ug&N}@TA(3!C_IbLz5&Yiwl=pM z-v@*XsVQ>K%PuuJK@>OqF4bqKyf_ej|6$s0pDB#W*J7nL#$C8;u8)gwlX0iHQ6X;m z`~*mQov8MQ$7wjDp8}%QY1NU)%npN%1jANJM$zwz4>c2Nm$=_w3*&-*kdLiOSQxyx zOx|am1_S0opH&5e(PdD#%d^tu7O0LU!k;q{V*ViUJ8ysalDJn%rbdQ*tU=4;XVIIJ zVd8n5cv~MQ6QkbIInNg%bQ6P$+1(^luK-6BV>`FAzCt;#+TmD@W6=8v2HyZo)a<1>W zT;cjgPf8W(7>1R*wE2_)a?RmdJhk=Hqw<(IcaTVrVW4JI`=f}OaQhOPHm>)Hk|Z(3 zUXs&g23%loux~XC)|^g|-Ohsvozg8Vh%VG!9KzVUl_+5#50eaAcM{8CAg=+TV^|wQ zt8eqFz2W?%Y+leH^Z{bQe~3T=ez~MTRQX-9q+F*Awv{cF!I^R$Ij`G~*OT{)^9Rc+lBK#;&bMN{1?jnZ4M<`rmHgdLkmvZr&oM+^uU-| zDs$@OO6;Quzc$XEa!eNQr5s?rZQp<&xkPQWu_(8|B!_ zH+_Y^NAIQmt8J7|PO1BKao%LYon|%_4)~7BhG+6uxhoI0*4NL?m=lhYXJY)kja6XJ?Q{8f-3my1AOyFW-@|FoummHmN} zJMIuao0Iql`CBt+mz{?uT{j!>#fL zs5-56oybz1M2uGaSoQyAluy|)uDvx^~5Cg4A&cVVf+^h6B!VM(hv^na3B(XwNfx9NBRc zu%oN?GxBKF3-xq7x4n3*d z{kTY54flTPi>7<=Y>Bn5{a02gZlVX~A~vrw!5-GnDi>AWLt^k5&)d_}$onV`6H(E$ z4D1Hpt2J1dzFqdjAbQNHP$SG>)d~hJOg0=lauF8?dbj>cXT)1^1fg8=3t5G!$@&Q zlXbd0_#7<2$HQjy;)G0l`(*tqUUU`{Wd;n(&>_~{*WeBAKBrkPeTlKAp_afFG&cht z3l|R%Yx{|z17PM48<=@ZB5cCb`6#r&d{<%j(Jr(MUXg*yO)Ti|L-d%VP|sbAW}}SZ z7nuo5VBTt#%R=r!2#mA14T8yZua($|MJZKWj=cz)%o>I@f_@7JPa5y%`mEKtdqho2 zhxKKB3uE;0A88xgAe*ClI9#-6aqWqvZ=Ah)MXaz525stYbh8+tQXSDtoRNf&io#|d z`pv0a<<~+3X`6jBRq7$#o_~U!uvUi~)NkT<3bpDOW*|rD7T3_ls)oS~husG>J3g1k zqHPg0T($q|5&eveaj0#~fxdN85{Bs4-oqaEk+p6ghQwfh5#9Ax1jM;|lVPbEos543 zA2_#q+=kzcdNex}cK}i9fas#8zNFjbZlXhz>M)(0L$T2c54cf>EBatB)QqeuHAn7<|nqy z-c@RE$wrb3SgkgOYEj#@f&Cu)SWBJ0MKch}N;q?E7pHQCG9d1Vce6_JO zyiMrr>adU01_|Shf}36_42XBRIIKY55j$S~42)+LwfGoR?Lc-G6}iy714L%yS!P_z z=zB(k^0=ZD1#bB%b#W4kiTD?>rP)X+Vr3F^eu(#l0igen)ltPAWBelFk7-EtHb8yd zW?H1dTFm@|{RKhdP7!mxF2k?^`N2xM&1J;=M|_A!c8t#)xg(=%cKTz_+7hwR1QdtB zc$-T{?THUP5g&S5L1>5hQ~x2SzJTe+Kk1hjU0!_Ilb1bp z=~I`w)c*~eu+BPlrxnUx(j_tzGhPThpZVO_XK}NB5clc_Cs^yU@gk(l0Qn?-X+KlY zwx*ZL(?#*1TlUL0#rX*?&GbD=ZtY#)$5^q>km)V* zwjan_$NR+7m`^WZK4COKm^>{v>X#6I8HI=MrX=IOF-Zg zgZsQhd6#uf3(C9A_Ckl}+HQ$5jz|)fNOHY5k;#3_av*4@xs0&qz&p;ua!6&1`JNFo zi(XY!`pU&9D}8n1EG@^#Z?Y0!VrTQm0NvM?{{o^E%+4cpiP2l&7=V+KQ-9_G>StlxH{nv*NIlTBx0a6x$_VNqL=Kc zWw21!mz(F==PU!^^(FfLpncb2K<}_@=vs9zWFS1;GJ=lnS7t!mvl%yTND6d;h}xr0 zwMGh>FSWRqg{Eirxpq89lR>own0sN=iPya_N|BBl#1?{keS6z>mj+P=Ypyi(-*TsE zV8JK1wYjuBr2vruZ6*Dx)TU@uOX>X}0ibJ53BXA8Tk=oqVla&)al2B>Xj4=p**+wT z%u@sUP&AwGwf0kH#y#&iu;jY{P(F9xDCfD(1=((mUQWzrYKN1tEt-0l}}COJ!q zCq|NeSohI3bz-f)TQSgQfbymWH{P)=tE{O2E_4IcH7a&Ev^-36;4#Sq`FY8YyG*RN zmD+bE1 z$obXWI&k0}?iJO8M1D+bZsOwDUIz{RyaDp7MO3q1!)-@igEc0}htMjW8DjWAF{UqU zJ-7(nhOKS6{j!kJa6ja733XX9HZ0iGTn+C&C{DyTaQWvG3$Y8~OueQPyEIC?8N&^t z$y_l6)-gExm8-9}t0fCx9|w$gxD(a)r6L$p=m%J6^aHF;RP%g2dSzB>x9}B*0r3hi za{FOGZxPzr=0ra*FdAJTJKm@$HLwA0!f>?1EjZ3M2F%;F9$;JMckJ^FN<;vOS6Heh z5o!jic9;6M#HUkpzP_!?h3cvJRBb)wb~rxW+wmbv-*GFT#BZgFR6$>iM&YGglp4*z z)Ga_9Ix2Z1Dolfn@iFZkLPfeUF!gE(j7p}sw3xCDQQ5`PeNRnrtZcF449|I|;hi;BWDvIxY|KSbkT5buc76o4Q?P{9sgrCNJ(C^aGMkc2r~r(X9${?Yjm* zkq){zda0uA177UIJ*8U43`|`cg{y8rFLqmx46q%bx!@SElBHC17-zXM;J=c!d#+sQ z;y~Z&Hk}QYDnhh7ONs`O5o1u<0)R7O3`ngjQQd2Ro$*U~r!is-s$UX{*AqM^#|70~ ziB}jJaEFJIk>MYJsN1!1*togB8R)Y;qAvoC45*~&0d*!y+HeAz@^)`$SDz&7Rz%!) zA~qWdhj0?pWc)N{Za_46ZjcwWiZT6gKwTnRcg>egh@GPr>1KUV>2!@%zV5wevGq{i^W$H+cPZkQ$icJI<<`-(C#Zp;+LN&Qc|tzn zl0R*xVUWA6dMyUu-PZc{BAhr-QVc8vpS&i`O3Jlr8g71q;V1XI(BA=i9*H_|l2aSJ zQA8!*r`6#(i_=2zJYc|;b@I1X^}c|}KtN#TF$R}mVnPaTq=&1!#!LOMyPDvwlX+M^ zW7~@df3~YjX4K>3O28UZ3(v0NwPRnW9(pK@@~@+QFby$T(#FFAWxd!6MPq~SQJO>J zs^tNk9aoEN#QVWjtr!=xYCcA`FkS4xkrB_K&`hEUMmyALK1hcgI32_m^9kK7YwN79 zH6TdQ%3RyxY6aBbL%lyKg0%e|F!>f$p77dM#p}!zX=k9!KAEaq?L=0JwF<8gcUY&i zcXZ&%m0Z^rq4iHhW-*$d_IS{!JqmBh{A_HMXLa%u)SVsp@|Aih*Ji@(Bc{eTkYmGl zV1^Rgqx5Wr9{03bS9C`t!`&O0sT-!Bx-{6m z8Y$dRRk(dVk?+Qk@jrAekPzqmbD$ODQr?nq><6Wx) ze`_C5BY$-n6fq1iunuqQSBwfStYdzcM&e}*mf_*JVp8^r22UQs zlsa=cos+WZ8;whqq-uoc6%z*D`m)?ArlrUmVMuy;+huUj6xaI4Rl~*yIUh zC2y1$$YZeX5$AK}{~NhC*{4M97h+_rogdtwU99owB)olv;J=$*;Ch=jKt3*(B#wn9 z?=vwsrWVTQVMx*mEV(qugM#lAJXf_A!qfgPSUEvFfQmf;`z?7~WDc-bZ=*DSXO@GZ zKF!q1Hv_GODHCm()kTYedyf+hfZE7zv*gp>**dVZVDMMHTyIwt7;$F}1*%;bA zmTnv4Z{#9O!jTONU21fj4U4J%O#v91%*8*O;q(C`0<~@#McAR!PRDq^G^Q_`iKe#6 zoD&}|bScLZgdt!QA&QV5Kp#V(}pfmECaqY-$0E`33c6~p^piR)W= zg`6cO50rCH$Xy@FCva&xLkHJ0GX5*6M`F~$g9$d>vtR@T?K&SNoXgYl(JP+^wkE-MsWv?X}I+oy>uA|36tOr8NXQSr{svi=d-TNb?Lkx)4~u1 z9?k+^jsj2dzh<`+z(k5At1

1s64&z|-?-R-l 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�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 p3p?Ux`0d|+%Er3<;pgC0 From 4ab71758965d616246daf34641cef81a94ee5590 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Oct 2016 13:59:39 -0600 Subject: [PATCH 0013/3180] Add tar of stage --- .gitignore | 1 + cook.sh | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index bef743e2..1a6efb16 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ build stage +stage.tar diff --git a/cook.sh b/cook.sh index 3b91ec64..8810e677 100755 --- a/cook.sh +++ b/cook.sh @@ -27,6 +27,9 @@ then fetch) git clone --recursive "$GIT" build ;; + unfetch) + rm -rf build + ;; stage) mkdir -p stage/bin cd build @@ -36,8 +39,12 @@ then unstage) rm -rf stage ;; - unfetch) - rm -rf build + tar) + cd stage + tar cf ../stage.tar . + ;; + untar) + rm -rf stage.tar ;; update) cd build From 37ec3169cb77e5d4a99db73d3b59b9078e5f4533 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Oct 2016 14:08:05 -0600 Subject: [PATCH 0014/3180] Use pushd/popd to fix multiple commands --- cook.sh | 15 ++++++++++----- recipes/acid/recipe.sh | 1 + recipes/ion/recipe.sh | 1 + 3 files changed, 12 insertions(+), 5 deletions(-) create mode 100644 recipes/acid/recipe.sh create mode 100644 recipes/ion/recipe.sh diff --git a/cook.sh b/cook.sh index 8810e677..6e4cb217 100755 --- a/cook.sh +++ b/cook.sh @@ -17,12 +17,14 @@ then do case "$arg" in build) - cd build + pushd build > /dev/null xargo build --target "$TARGET" $CARGOFLAGS + popd > /dev/null ;; clean) - cd build + pushd build > /dev/null xargo clean + popd > /dev/null ;; fetch) git clone --recursive "$GIT" build @@ -32,23 +34,26 @@ then ;; stage) mkdir -p stage/bin - cd build + pushd build > /dev/null #TODO xargo install --root "../stage" $CARGOFLAGS cp -v $(find target/x86_64-unknown-redox/debug/ -maxdepth 1 -type f ! -name "*.*") ../stage/bin + popd > /dev/null ;; unstage) rm -rf stage ;; tar) - cd stage + pushd stage > /dev/null tar cf ../stage.tar . + popd > /dev/null ;; untar) rm -rf stage.tar ;; update) - cd build + pushd build > /dev/null xargo update + popd > /dev/null ;; *) echo "$0 {package} {build|clean|fetch|update}" diff --git a/recipes/acid/recipe.sh b/recipes/acid/recipe.sh new file mode 100644 index 00000000..a7845575 --- /dev/null +++ b/recipes/acid/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/acid.git diff --git a/recipes/ion/recipe.sh b/recipes/ion/recipe.sh new file mode 100644 index 00000000..f7e3e66e --- /dev/null +++ b/recipes/ion/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/ion.git From 6e1d2b88b04730b54866072a82e61951c788e725 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Oct 2016 14:19:42 -0600 Subject: [PATCH 0015/3180] Add games recipe --- recipes/games/recipe.sh | 1 + 1 file changed, 1 insertion(+) create mode 100644 recipes/games/recipe.sh diff --git a/recipes/games/recipe.sh b/recipes/games/recipe.sh new file mode 100644 index 00000000..c2bd0796 --- /dev/null +++ b/recipes/games/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/games-for-redox.git From 60904ec4796f0900de11e2f85b5f51507efeb620 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Oct 2016 14:34:01 -0600 Subject: [PATCH 0016/3180] Do not use realpath --- cook.sh | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/cook.sh b/cook.sh index 6e4cb217..c6c7ee7b 100755 --- a/cook.sh +++ b/cook.sh @@ -1,6 +1,6 @@ #!/bin/bash -export RUST_TARGET_PATH=`realpath targets` +export RUST_TARGET_PATH="$PWD/targets" export RUSTFLAGS="--cfg redox" export CARGOFLAGS= TARGET=x86_64-unknown-redox @@ -16,6 +16,17 @@ then for arg in "${@:2}" do case "$arg" in + fetch) + git clone --recursive "$GIT" build + ;; + unfetch) + rm -rf build + ;; + update) + pushd build > /dev/null + xargo update + popd > /dev/null + ;; build) pushd build > /dev/null xargo build --target "$TARGET" $CARGOFLAGS @@ -26,12 +37,6 @@ then xargo clean popd > /dev/null ;; - fetch) - git clone --recursive "$GIT" build - ;; - unfetch) - rm -rf build - ;; stage) mkdir -p stage/bin pushd build > /dev/null @@ -50,11 +55,6 @@ then untar) rm -rf stage.tar ;; - update) - pushd build > /dev/null - xargo update - popd > /dev/null - ;; *) echo "$0 {package} {build|clean|fetch|update}" ;; From 027c7daf161d369e1e66111b01e15534288268cb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Oct 2016 14:44:50 -0600 Subject: [PATCH 0017/3180] Add pull command --- all.sh | 4 ++++ cook.sh | 8 ++++++++ 2 files changed, 12 insertions(+) create mode 100755 all.sh diff --git a/all.sh b/all.sh new file mode 100755 index 00000000..81e77c39 --- /dev/null +++ b/all.sh @@ -0,0 +1,4 @@ +for recipe in `ls -1 recipes | grep -v libstd` +do + ./cook.sh $recipe $* +done diff --git a/cook.sh b/cook.sh index c6c7ee7b..15293540 100755 --- a/cook.sh +++ b/cook.sh @@ -15,6 +15,7 @@ then source recipe.sh for arg in "${@:2}" do + echo "$1" "$arg" case "$arg" in fetch) git clone --recursive "$GIT" build @@ -22,6 +23,13 @@ then unfetch) rm -rf build ;; + pull) + pushd build > /dev/null + git pull + git submodule sync + git submodule update --init --recursive + popd > /dev/null + ;; update) pushd build > /dev/null xargo update From 867e02fb16ed0423a2f64099e48a0529a280a6fa Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Oct 2016 14:54:20 -0600 Subject: [PATCH 0018/3180] Pull master if need be --- cook.sh | 112 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 59 insertions(+), 53 deletions(-) diff --git a/cook.sh b/cook.sh index 15293540..df6c7ff1 100755 --- a/cook.sh +++ b/cook.sh @@ -7,6 +7,63 @@ TARGET=x86_64-unknown-redox set -e +function op { + echo "$1" "$2" + case "$2" in + fetch) + if [ ! -d build ] + then + git clone --recursive "$GIT" build + fi + + pushd build > /dev/null + git pull + git submodule sync + git submodule update --init --recursive + popd > /dev/null + ;; + unfetch) + rm -rf build + ;; + update) + pushd build > /dev/null + xargo update + popd > /dev/null + ;; + build) + pushd build > /dev/null + xargo build --target "$TARGET" $CARGOFLAGS + popd > /dev/null + ;; + clean) + pushd build > /dev/null + xargo clean + popd > /dev/null + ;; + stage) + mkdir -p stage/bin + pushd build > /dev/null + #TODO xargo install --root "../stage" $CARGOFLAGS + cp -v $(find target/x86_64-unknown-redox/debug/ -maxdepth 1 -type f ! -name "*.*") ../stage/bin + popd > /dev/null + ;; + unstage) + rm -rf stage + ;; + tar) + pushd stage > /dev/null + tar cf ../stage.tar . + popd > /dev/null + ;; + untar) + rm -rf stage.tar + ;; + *) + echo "$0 {package} {build|clean|fetch|update}" + ;; + esac +} + if [ -n "$1" ] then if [ -d "recipes/$1" ] @@ -15,62 +72,11 @@ then source recipe.sh for arg in "${@:2}" do - echo "$1" "$arg" - case "$arg" in - fetch) - git clone --recursive "$GIT" build - ;; - unfetch) - rm -rf build - ;; - pull) - pushd build > /dev/null - git pull - git submodule sync - git submodule update --init --recursive - popd > /dev/null - ;; - update) - pushd build > /dev/null - xargo update - popd > /dev/null - ;; - build) - pushd build > /dev/null - xargo build --target "$TARGET" $CARGOFLAGS - popd > /dev/null - ;; - clean) - pushd build > /dev/null - xargo clean - popd > /dev/null - ;; - stage) - mkdir -p stage/bin - pushd build > /dev/null - #TODO xargo install --root "../stage" $CARGOFLAGS - cp -v $(find target/x86_64-unknown-redox/debug/ -maxdepth 1 -type f ! -name "*.*") ../stage/bin - popd > /dev/null - ;; - unstage) - rm -rf stage - ;; - tar) - pushd stage > /dev/null - tar cf ../stage.tar . - popd > /dev/null - ;; - untar) - rm -rf stage.tar - ;; - *) - echo "$0 {package} {build|clean|fetch|update}" - ;; - esac + op "$1" "$arg" done else echo "$0: recipe '$1' not found" fi else - echo "$0 {package} {build|clean|fetch|update}" + echo "$0 {package} {build|clean|fetch|unfetch|stage|unstage|tar|untar|update}" fi From c6cbebdaca854235c39cb4407a19a5b24dac7593 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Oct 2016 15:21:06 -0600 Subject: [PATCH 0019/3180] Repo directory --- .gitignore | 1 + cook.sh | 22 +++++++++++++++------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 1a6efb16..bade6d8b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ build +repo stage stage.tar diff --git a/cook.sh b/cook.sh index df6c7ff1..88517cf5 100755 --- a/cook.sh +++ b/cook.sh @@ -4,6 +4,7 @@ export RUST_TARGET_PATH="$PWD/targets" export RUSTFLAGS="--cfg redox" export CARGOFLAGS= TARGET=x86_64-unknown-redox +REPO="$PWD/repo/$TARGET" set -e @@ -23,7 +24,7 @@ function op { popd > /dev/null ;; unfetch) - rm -rf build + rm -rfv build ;; update) pushd build > /dev/null @@ -48,18 +49,25 @@ function op { popd > /dev/null ;; unstage) - rm -rf stage + rm -rfv stage ;; tar) pushd stage > /dev/null - tar cf ../stage.tar . + tar cfv ../stage.tar . popd > /dev/null ;; untar) - rm -rf stage.tar + rm -rfv stage.tar + ;; + publish) + mkdir -p "$REPO" + cp -v stage.tar "$REPO/$1.tar" + ;; + unpublish) + rm -rfv "$REPO/$1.tar" ;; *) - echo "$0 {package} {build|clean|fetch|update}" + echo "cook.sh $1 {build|clean|fetch|unfetch|publish|unpublish|stage|unstage|tar|untar|update}" ;; esac } @@ -75,8 +83,8 @@ then op "$1" "$arg" done else - echo "$0: recipe '$1' not found" + echo "cook.sh: recipe '$1' not found" fi else - echo "$0 {package} {build|clean|fetch|unfetch|stage|unstage|tar|untar|update}" + echo "cook.sh {package} {build|clean|fetch|unfetch|publish|unpublish|stage|unstage|tar|untar|update}" fi From 97ac2dc97277a4bb6094ca05ce61964d3b0549a0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Oct 2016 15:22:00 -0600 Subject: [PATCH 0020/3180] Add jenkins script file --- jenkins.sh | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 jenkins.sh diff --git a/jenkins.sh b/jenkins.sh new file mode 100644 index 00000000..97cf5b21 --- /dev/null +++ b/jenkins.sh @@ -0,0 +1,2 @@ +export PATH="$HOME/.cargo/bin:$PATH" +./all.sh untar unstage fetch build stage tar publish From 849f463033b9ad897696902b1e047655fb73ba02 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Oct 2016 15:25:58 -0600 Subject: [PATCH 0021/3180] Fix permissions --- jenkins.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 jenkins.sh diff --git a/jenkins.sh b/jenkins.sh old mode 100644 new mode 100755 From 84146ac34369619fd62abfa6605aaa8854225945 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Oct 2016 15:30:33 -0600 Subject: [PATCH 0022/3180] Strip bins --- cook.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/cook.sh b/cook.sh index 88517cf5..ad8283b6 100755 --- a/cook.sh +++ b/cook.sh @@ -46,6 +46,7 @@ function op { pushd build > /dev/null #TODO xargo install --root "../stage" $CARGOFLAGS cp -v $(find target/x86_64-unknown-redox/debug/ -maxdepth 1 -type f ! -name "*.*") ../stage/bin + strip -v stage/bin/* popd > /dev/null ;; unstage) From f00ab6f018a099860eff2c176341455f94a5814f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Oct 2016 15:32:01 -0600 Subject: [PATCH 0023/3180] Fix strip path --- cook.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cook.sh b/cook.sh index ad8283b6..f47f5854 100755 --- a/cook.sh +++ b/cook.sh @@ -46,7 +46,7 @@ function op { pushd build > /dev/null #TODO xargo install --root "../stage" $CARGOFLAGS cp -v $(find target/x86_64-unknown-redox/debug/ -maxdepth 1 -type f ! -name "*.*") ../stage/bin - strip -v stage/bin/* + strip -v ../stage/bin/* popd > /dev/null ;; unstage) From d1ff741b28dc4369862dfa169ebe88a2329dc2c6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 1 Nov 2016 16:05:16 -0600 Subject: [PATCH 0024/3180] Allow stage function --- cook.sh | 18 +++++++++++++++--- recipes/pixelcannon/recipe.sh | 6 ++++++ 2 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 recipes/pixelcannon/recipe.sh diff --git a/cook.sh b/cook.sh index f47f5854..875e78cb 100755 --- a/cook.sh +++ b/cook.sh @@ -42,11 +42,23 @@ function op { popd > /dev/null ;; stage) - mkdir -p stage/bin + mkdir -p stage pushd build > /dev/null + if [ "$(type -t recipe_stage)" = "function" ] + then + recipe_stage ../stage + fi #TODO xargo install --root "../stage" $CARGOFLAGS - cp -v $(find target/x86_64-unknown-redox/debug/ -maxdepth 1 -type f ! -name "*.*") ../stage/bin - strip -v ../stage/bin/* + bins="$(find target/x86_64-unknown-redox/debug/ -maxdepth 1 -type f ! -name '*.*')" + if [ -n "$bins" ] + then + mkdir -p ../stage/bin + for bin in $bins + do + cp -v "$bin" "../stage/bin/$(basename $bin)" + strip -v "../stage/bin/$(basename $bin)" + done + fi popd > /dev/null ;; unstage) diff --git a/recipes/pixelcannon/recipe.sh b/recipes/pixelcannon/recipe.sh new file mode 100644 index 00000000..b4cc7bed --- /dev/null +++ b/recipes/pixelcannon/recipe.sh @@ -0,0 +1,6 @@ +GIT=https://github.com/jackpot51/pixelcannon.git + +function recipe_stage { + mkdir -pv "$1/apps/pixelcannon" + cp -Rv assets "$1/apps/pixelcannon" +} From 047281e30327313eba6e19ed4c4bc3dd5d4483a0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 1 Nov 2016 16:43:15 -0600 Subject: [PATCH 0025/3180] Install pixelcannon manifest --- recipes/pixelcannon/recipe.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/recipes/pixelcannon/recipe.sh b/recipes/pixelcannon/recipe.sh index b4cc7bed..66b84aa6 100644 --- a/recipes/pixelcannon/recipe.sh +++ b/recipes/pixelcannon/recipe.sh @@ -3,4 +3,6 @@ GIT=https://github.com/jackpot51/pixelcannon.git function recipe_stage { mkdir -pv "$1/apps/pixelcannon" cp -Rv assets "$1/apps/pixelcannon" + mkdir -pv "$1/ui/apps" + cp -v manifest "$1/ui/apps/pixelcannon" } From 3729ffd7f5c58dea4c53139350d999fe6c879885 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 2 Nov 2016 12:09:26 -0600 Subject: [PATCH 0026/3180] Update recipe.sh --- recipes/games/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/games/recipe.sh b/recipes/games/recipe.sh index c2bd0796..1d746118 100644 --- a/recipes/games/recipe.sh +++ b/recipes/games/recipe.sh @@ -1 +1 @@ -GIT=https://github.com/redox-os/games-for-redox.git +GIT=https://github.com/redox-os/games.git From 2348e1cc27724d7136b44ecf7719bc742e5feeac Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 2 Nov 2016 21:55:41 -0600 Subject: [PATCH 0027/3180] Compile in release mode --- cook.sh | 4 ++-- setup.sh | 11 +++++++---- targets/x86_64-unknown-redox.json | 3 ++- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/cook.sh b/cook.sh index 875e78cb..45a78038 100755 --- a/cook.sh +++ b/cook.sh @@ -33,7 +33,7 @@ function op { ;; build) pushd build > /dev/null - xargo build --target "$TARGET" $CARGOFLAGS + xargo build --target "$TARGET" --release $CARGOFLAGS popd > /dev/null ;; clean) @@ -49,7 +49,7 @@ function op { recipe_stage ../stage fi #TODO xargo install --root "../stage" $CARGOFLAGS - bins="$(find target/x86_64-unknown-redox/debug/ -maxdepth 1 -type f ! -name '*.*')" + bins="$(find target/x86_64-unknown-redox/release/ -maxdepth 1 -type f ! -name '*.*')" if [ -n "$bins" ] then mkdir -p ../stage/bin diff --git a/setup.sh b/setup.sh index 395d2b63..e3376171 100755 --- a/setup.sh +++ b/setup.sh @@ -3,16 +3,19 @@ set -e echo "Defaulting to rust nightly" -rustup default nightly +rustup override set nightly echo "Downloading rust source" rustup component add rust-src -echo "Installing xargo" -cargo install -f xargo +if [ -z "$(which xargo)" ] +then + echo "Installing xargo" + cargo install -f xargo +fi echo "Building libstd" ./cook.sh libstd unfetch ./cook.sh libstd fetch ./cook.sh libstd build -cp recipes/libstd/build/target/x86_64-unknown-redox/debug/deps/*.rlib ~/.xargo/lib/rustlib/x86_64-unknown-redox/lib/ +cp recipes/libstd/build/target/x86_64-unknown-redox/release/deps/*.rlib ~/.xargo/lib/rustlib/x86_64-unknown-redox/lib/ echo "cook.sh is ready to use" diff --git a/targets/x86_64-unknown-redox.json b/targets/x86_64-unknown-redox.json index 3d6de474..8878e06e 100644 --- a/targets/x86_64-unknown-redox.json +++ b/targets/x86_64-unknown-redox.json @@ -9,7 +9,8 @@ "vendor": "unknown", "target-family": "redox", "pre-link-args": ["-m64", "-nostdlib", "-static"], - "features": "-sse3,-ssse3,-sse4.1,-sse4.2,-3dnow,-3dnowa,-avx,-avx2", + "post-link-args": ["build/userspace/libopenlibm.a"], + "features": "", "dynamic-linking": false, "executables": true, "relocation-model": "static", From b3474576ec706d36a26280cde65d5af0e6ea2c8c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 2 Nov 2016 21:56:52 -0600 Subject: [PATCH 0028/3180] Remove post link arg --- targets/x86_64-unknown-redox.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/targets/x86_64-unknown-redox.json b/targets/x86_64-unknown-redox.json index 8878e06e..d981254e 100644 --- a/targets/x86_64-unknown-redox.json +++ b/targets/x86_64-unknown-redox.json @@ -9,7 +9,7 @@ "vendor": "unknown", "target-family": "redox", "pre-link-args": ["-m64", "-nostdlib", "-static"], - "post-link-args": ["build/userspace/libopenlibm.a"], + "post-link-args": [], "features": "", "dynamic-linking": false, "executables": true, From a2b3a91b96d08ddde8503f439f2ebd0f16184b47 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 3 Nov 2016 17:34:34 -0600 Subject: [PATCH 0029/3180] Clean packages --- jenkins.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/jenkins.sh b/jenkins.sh index 97cf5b21..98cb3784 100755 --- a/jenkins.sh +++ b/jenkins.sh @@ -1,2 +1 @@ -export PATH="$HOME/.cargo/bin:$PATH" -./all.sh untar unstage fetch build stage tar publish +./all.sh untar unstage fetch clean build stage tar publish From 1276cf89040081718387c692d400ff4ae44eb66b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 4 Nov 2016 14:13:39 -0600 Subject: [PATCH 0030/3180] Unfetch files before building --- jenkins.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jenkins.sh b/jenkins.sh index 98cb3784..6d851232 100755 --- a/jenkins.sh +++ b/jenkins.sh @@ -1 +1 @@ -./all.sh untar unstage fetch clean build stage tar publish +./all.sh untar unstage unfetch fetch build stage tar publish From b78e43679922851529157772a96c730a94a45fee Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 6 Nov 2016 18:47:40 -0700 Subject: [PATCH 0031/3180] Add travis.yml --- .travis.yml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..1447de5e --- /dev/null +++ b/.travis.yml @@ -0,0 +1,9 @@ +language: rust +rust: + - nightly +sudo: required +install: + - ./setup.sh +script: ./jenkins.sh +notifications: + email: false From f366b31f7b8185ea27ae6f08e66105493744db9c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 6 Nov 2016 18:49:12 -0700 Subject: [PATCH 0032/3180] Update readme --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b960d249..bf5fa551 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,6 @@ # cookbook -A collection of package recipes +A collection of package recipes for Redox. + +[![Travis Build Status](https://travis-ci.org/redox-os/cookbook.svg?branch=master)](https://travis-ci.org/redox-os/cookbook) +[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) + From 944898d8d053aa3f75050240a5b6901725332ecd Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 6 Nov 2016 19:01:09 -0700 Subject: [PATCH 0033/3180] Update travis.yml - use rustup --- .travis.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1447de5e..df997f3b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,7 @@ -language: rust -rust: - - nightly +language: generic sudo: required install: + - curl https://sh.rustup.rs -sSf > rustup; chmod +x rustup; ./rustup --default-toolchain nightly -y - ./setup.sh script: ./jenkins.sh notifications: From 89581d6fea00cd48d95fcd702c0e5144baa9c50f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 6 Nov 2016 19:04:42 -0700 Subject: [PATCH 0034/3180] Fix installation --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index df997f3b..6d37c80c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,7 @@ language: generic sudo: required install: - curl https://sh.rustup.rs -sSf > rustup; chmod +x rustup; ./rustup --default-toolchain nightly -y - - ./setup.sh -script: ./jenkins.sh + - export PATH="$HOME/.cargo/bin:$PATH"; ./setup.sh +script: export PATH="$HOME/.cargo/bin:$PATH"; ./jenkins.sh notifications: email: false From ec4dc48b76e17cb97774e2b5ae230bb75360b9e4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 28 Dec 2016 19:32:39 -0700 Subject: [PATCH 0035/3180] Update to use new Xargo, add netutils --- .gitmodules | 3 +++ Xargo.toml | 2 ++ cook.sh | 4 +++- libc-artifacts | 1 + recipes/netutils/recipe.sh | 1 + setup.sh | 6 ------ targets/x86_64-unknown-redox.json | 9 ++++++--- 7 files changed, 16 insertions(+), 10 deletions(-) create mode 100644 .gitmodules create mode 100644 Xargo.toml create mode 160000 libc-artifacts create mode 100644 recipes/netutils/recipe.sh diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..39b409c6 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "libc-artifacts"] + path = libc-artifacts + url = https://github.com/redox-os/libc-artifacts.git diff --git a/Xargo.toml b/Xargo.toml new file mode 100644 index 00000000..4cd054db --- /dev/null +++ b/Xargo.toml @@ -0,0 +1,2 @@ +[target.x86_64-unknown-redox.dependencies.std] +features = [] diff --git a/cook.sh b/cook.sh index 45a78038..645615a6 100755 --- a/cook.sh +++ b/cook.sh @@ -1,9 +1,10 @@ #!/bin/bash export RUST_TARGET_PATH="$PWD/targets" -export RUSTFLAGS="--cfg redox" export CARGOFLAGS= +export CFLAGS="-fno-stack-protector -U_FORTIFY_SOURCE" TARGET=x86_64-unknown-redox +ROOT="$PWD" REPO="$PWD/repo/$TARGET" set -e @@ -33,6 +34,7 @@ function op { ;; build) pushd build > /dev/null + cp -r "$ROOT/Xargo.toml" "$ROOT/libc-artifacts" . xargo build --target "$TARGET" --release $CARGOFLAGS popd > /dev/null ;; diff --git a/libc-artifacts b/libc-artifacts new file mode 160000 index 00000000..b0e2a74a --- /dev/null +++ b/libc-artifacts @@ -0,0 +1 @@ +Subproject commit b0e2a74a505d0bc6ffea05d81fe239b1beb5c246 diff --git a/recipes/netutils/recipe.sh b/recipes/netutils/recipe.sh new file mode 100644 index 00000000..5992a5e2 --- /dev/null +++ b/recipes/netutils/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/netutils.git diff --git a/setup.sh b/setup.sh index e3376171..376aef19 100755 --- a/setup.sh +++ b/setup.sh @@ -12,10 +12,4 @@ then cargo install -f xargo fi -echo "Building libstd" -./cook.sh libstd unfetch -./cook.sh libstd fetch -./cook.sh libstd build -cp recipes/libstd/build/target/x86_64-unknown-redox/release/deps/*.rlib ~/.xargo/lib/rustlib/x86_64-unknown-redox/lib/ - echo "cook.sh is ready to use" diff --git a/targets/x86_64-unknown-redox.json b/targets/x86_64-unknown-redox.json index d981254e..362ef9cc 100644 --- a/targets/x86_64-unknown-redox.json +++ b/targets/x86_64-unknown-redox.json @@ -8,8 +8,8 @@ "env": "", "vendor": "unknown", "target-family": "redox", - "pre-link-args": ["-m64", "-nostdlib", "-static"], - "post-link-args": [], + "pre-link-args": ["-m64", "-Wl,--as-needed", "-Wl,-z,noexecstack", "-nostartfiles", "-nostdlib", "-static"], + "late-link-args": ["libc-artifacts/lib/crt0.o", "libc-artifacts/lib/libm.a", "libc-artifacts/lib/libc.a", "libc-artifacts/lib/libgcc.a"], "features": "", "dynamic-linking": false, "executables": true, @@ -22,5 +22,8 @@ "no-compiler-rt": true, "no-default-libraries": true, "position-independent-executables": false, - "has-elf-tls": true + "lib-allocation-crate": "alloc_system", + "exe-allocation-crate": "alloc_system", + "has-elf-tls": true, + "panic-strategy": "abort" } From 47d232c3d7a7e460ca852252a7901b84616a1235 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 28 Dec 2016 19:56:41 -0700 Subject: [PATCH 0036/3180] Colorize and add dist and distclean --- cook.sh | 24 ++++++++++++++++++------ jenkins.sh | 2 +- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/cook.sh b/cook.sh index 645615a6..d26cbcaf 100755 --- a/cook.sh +++ b/cook.sh @@ -1,17 +1,29 @@ #!/bin/bash -export RUST_TARGET_PATH="$PWD/targets" +ROOT="$PWD" +export RUST_TARGET_PATH="$ROOT/targets" export CARGOFLAGS= export CFLAGS="-fno-stack-protector -U_FORTIFY_SOURCE" TARGET=x86_64-unknown-redox -ROOT="$PWD" -REPO="$PWD/repo/$TARGET" +REPO="$ROOT/repo/$TARGET" set -e function op { - echo "$1" "$2" + echo -e "\033[01;38;5;215mcook - $1 $2\033[0m" case "$2" in + dist) + op $1 fetch + op $1 update + op $1 build + op $1 stage + op $1 tar + ;; + distclean) + op $1 untar + op $1 unstage + op $1 unfetch + ;; fetch) if [ ! -d build ] then @@ -82,7 +94,7 @@ function op { rm -rfv "$REPO/$1.tar" ;; *) - echo "cook.sh $1 {build|clean|fetch|unfetch|publish|unpublish|stage|unstage|tar|untar|update}" + echo "cook.sh $1 {dist|distclean|build|clean|fetch|unfetch|publish|unpublish|stage|unstage|tar|untar|update}" ;; esac } @@ -101,5 +113,5 @@ then echo "cook.sh: recipe '$1' not found" fi else - echo "cook.sh {package} {build|clean|fetch|unfetch|publish|unpublish|stage|unstage|tar|untar|update}" + echo "cook.sh {package} {dist|distclean|build|clean|fetch|unfetch|publish|unpublish|stage|unstage|tar|untar|update}" fi diff --git a/jenkins.sh b/jenkins.sh index 6d851232..8873ad61 100755 --- a/jenkins.sh +++ b/jenkins.sh @@ -1 +1 @@ -./all.sh untar unstage unfetch fetch build stage tar publish +./all.sh distclean dist publish From b769485cee2772c3e2e6a735b293b822c97e2d96 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 28 Dec 2016 19:59:26 -0700 Subject: [PATCH 0037/3180] Remove libstd recipe --- all.sh | 2 +- recipes/libstd/recipe.sh | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) delete mode 100644 recipes/libstd/recipe.sh diff --git a/all.sh b/all.sh index 81e77c39..93af660c 100755 --- a/all.sh +++ b/all.sh @@ -1,4 +1,4 @@ -for recipe in `ls -1 recipes | grep -v libstd` +for recipe in `ls -1 recipes` do ./cook.sh $recipe $* done diff --git a/recipes/libstd/recipe.sh b/recipes/libstd/recipe.sh deleted file mode 100644 index 68680c5a..00000000 --- a/recipes/libstd/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://github.com/redox-os/libstd.git From fa92725782516e5cf1e69f3a727529380228b2ff Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 28 Dec 2016 20:09:03 -0700 Subject: [PATCH 0038/3180] Update pixelcannon recipe --- all.sh | 4 ++++ cook.sh | 23 ++++++++++++----------- jenkins.sh | 8 +++++++- recipes/pixelcannon/recipe.sh | 2 ++ 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/all.sh b/all.sh index 93af660c..098cb893 100755 --- a/all.sh +++ b/all.sh @@ -1,3 +1,7 @@ +#!/bin/bash + +set -e + for recipe in `ls -1 recipes` do ./cook.sh $recipe $* diff --git a/cook.sh b/cook.sh index d26cbcaf..75f10427 100755 --- a/cook.sh +++ b/cook.sh @@ -61,17 +61,18 @@ function op { if [ "$(type -t recipe_stage)" = "function" ] then recipe_stage ../stage - fi - #TODO xargo install --root "../stage" $CARGOFLAGS - bins="$(find target/x86_64-unknown-redox/release/ -maxdepth 1 -type f ! -name '*.*')" - if [ -n "$bins" ] - then - mkdir -p ../stage/bin - for bin in $bins - do - cp -v "$bin" "../stage/bin/$(basename $bin)" - strip -v "../stage/bin/$(basename $bin)" - done + else + #TODO xargo install --root "../stage" $CARGOFLAGS + bins="$(find target/$TARGET/release/ -maxdepth 1 -type f ! -name '*.*')" + if [ -n "$bins" ] + then + mkdir -p ../stage/bin + for bin in $bins + do + cp -v "$bin" "../stage/bin/$(basename $bin)" + strip -v "../stage/bin/$(basename $bin)" + done + fi fi popd > /dev/null ;; diff --git a/jenkins.sh b/jenkins.sh index 8873ad61..dc70f68d 100755 --- a/jenkins.sh +++ b/jenkins.sh @@ -1 +1,7 @@ -./all.sh distclean dist publish +#!/bin/bash + +set -e + +./all.sh distclean +./all.sh dist +./all.sh publish diff --git a/recipes/pixelcannon/recipe.sh b/recipes/pixelcannon/recipe.sh index 66b84aa6..257527bc 100644 --- a/recipes/pixelcannon/recipe.sh +++ b/recipes/pixelcannon/recipe.sh @@ -5,4 +5,6 @@ function recipe_stage { cp -Rv assets "$1/apps/pixelcannon" mkdir -pv "$1/ui/apps" cp -v manifest "$1/ui/apps/pixelcannon" + mkdir -pv "$1/ui/bin" + cp -v "target/$TARGET/release/pixelcannon" "$1/ui/bin" } From 1b5736cc542fe930de85f72bb6e89fada4d18b34 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 29 Dec 2016 11:13:24 -0700 Subject: [PATCH 0039/3180] Add test clause (currently not working) --- cook.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cook.sh b/cook.sh index 75f10427..2c798dcc 100755 --- a/cook.sh +++ b/cook.sh @@ -50,6 +50,12 @@ function op { xargo build --target "$TARGET" --release $CARGOFLAGS popd > /dev/null ;; + test) + pushd build > /dev/null + cp -r "$ROOT/Xargo.toml" "$ROOT/libc-artifacts" . + xargo test --no-run --target "$TARGET" --release $CARGOFLAGS + popd > /dev/null + ;; clean) pushd build > /dev/null xargo clean From 43d8531376e6c684ec1539fa116bd08d79002d04 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 29 Dec 2016 20:44:31 -0700 Subject: [PATCH 0040/3180] Move ci script --- jenkins.sh => ci.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename jenkins.sh => ci.sh (100%) diff --git a/jenkins.sh b/ci.sh similarity index 100% rename from jenkins.sh rename to ci.sh From 76b1fbc8f6e0ab46ff322830cde483b0122e9026 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 29 Dec 2016 20:44:45 -0700 Subject: [PATCH 0041/3180] Move ci script --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 6d37c80c..afb0d257 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,6 +3,6 @@ sudo: required install: - curl https://sh.rustup.rs -sSf > rustup; chmod +x rustup; ./rustup --default-toolchain nightly -y - export PATH="$HOME/.cargo/bin:$PATH"; ./setup.sh -script: export PATH="$HOME/.cargo/bin:$PATH"; ./jenkins.sh +script: export PATH="$HOME/.cargo/bin:$PATH"; ./ci.sh notifications: email: false From ebc2386e6f26b14dbe0f84ccdd786bc776c9fd16 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 3 Jan 2017 15:28:19 -0700 Subject: [PATCH 0042/3180] Update libc artifacts --- libc-artifacts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libc-artifacts b/libc-artifacts index b0e2a74a..4bff613d 160000 --- a/libc-artifacts +++ b/libc-artifacts @@ -1 +1 @@ -Subproject commit b0e2a74a505d0bc6ffea05d81fe239b1beb5c246 +Subproject commit 4bff613d3c4214ef4081427ab0a74d8f6f724935 From ec3df2cfab6de8b30e1d14a4aaf2739360394793 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 3 Jan 2017 16:24:25 -0700 Subject: [PATCH 0043/3180] Complicate CFLAGS --- cook.sh | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/cook.sh b/cook.sh index 2c798dcc..7a6a9db4 100755 --- a/cook.sh +++ b/cook.sh @@ -2,9 +2,15 @@ ROOT="$PWD" export RUST_TARGET_PATH="$ROOT/targets" -export CARGOFLAGS= -export CFLAGS="-fno-stack-protector -U_FORTIFY_SOURCE" -TARGET=x86_64-unknown-redox +export CARGOFLAGS=--verbose +export CFLAGS="-static -nostartfiles -nostdlib -nodefaultlibs \ + -undef -imacros $ROOT/libc-artifacts/define.h \ + -isystem $ROOT/libc-artifacts/usr/include \ + -L $ROOT/libc-artifacts/usr/lib \ + $ROOT/libc-artifacts/usr/lib/crt0.o -lm -lc -lgcc \ + -fno-stack-protector -U_FORTIFY_SOURCE" +export CARGO_BUILD_RUSTFLAGS="--verbose -Z print-link-args -C linker=gcc -C link-args=\"\$CFLAGS\"" +export TARGET=x86_64-unknown-redox REPO="$ROOT/repo/$TARGET" set -e From 2f600514925c6773039c7b87d15e929a763eba2c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 3 Jan 2017 16:25:03 -0700 Subject: [PATCH 0044/3180] Remove target path --- cook.sh | 1 - targets/x86_64-unknown-redox.json | 29 ----------------------------- 2 files changed, 30 deletions(-) delete mode 100644 targets/x86_64-unknown-redox.json diff --git a/cook.sh b/cook.sh index 7a6a9db4..232a5652 100755 --- a/cook.sh +++ b/cook.sh @@ -1,7 +1,6 @@ #!/bin/bash ROOT="$PWD" -export RUST_TARGET_PATH="$ROOT/targets" export CARGOFLAGS=--verbose export CFLAGS="-static -nostartfiles -nostdlib -nodefaultlibs \ -undef -imacros $ROOT/libc-artifacts/define.h \ diff --git a/targets/x86_64-unknown-redox.json b/targets/x86_64-unknown-redox.json deleted file mode 100644 index 362ef9cc..00000000 --- a/targets/x86_64-unknown-redox.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "llvm-target": "x86_64-unknown-redox", - "target-endian": "little", - "target-pointer-width": "64", - "data-layout": "e-m:e-i64:64-f80:128-n8:16:32:64-S128", - "arch": "x86_64", - "os": "redox", - "env": "", - "vendor": "unknown", - "target-family": "redox", - "pre-link-args": ["-m64", "-Wl,--as-needed", "-Wl,-z,noexecstack", "-nostartfiles", "-nostdlib", "-static"], - "late-link-args": ["libc-artifacts/lib/crt0.o", "libc-artifacts/lib/libm.a", "libc-artifacts/lib/libc.a", "libc-artifacts/lib/libgcc.a"], - "features": "", - "dynamic-linking": false, - "executables": true, - "relocation-model": "static", - "code-model": "default", - "disable-redzone": true, - "eliminate-frame-pointer": false, - "exe-suffix": "", - "has-rpath": false, - "no-compiler-rt": true, - "no-default-libraries": true, - "position-independent-executables": false, - "lib-allocation-crate": "alloc_system", - "exe-allocation-crate": "alloc_system", - "has-elf-tls": true, - "panic-strategy": "abort" -} From 0192461eb9b986f8d1311266ae56b984faf466f5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 3 Jan 2017 19:25:21 -0700 Subject: [PATCH 0045/3180] Fix gcc --- .cargo/config | 6 ++++++ cook.sh | 23 +++++++++++------------ libc-artifacts | 2 +- 3 files changed, 18 insertions(+), 13 deletions(-) create mode 100644 .cargo/config diff --git a/.cargo/config b/.cargo/config new file mode 100644 index 00000000..43363244 --- /dev/null +++ b/.cargo/config @@ -0,0 +1,6 @@ +[target.x86_64-unknown-redox] +linker = "libc-artifacts/gcc.sh" +rustflags = [ + "--verbose", + "-Z", "print-link-args" +] diff --git a/cook.sh b/cook.sh index 232a5652..cf6b555f 100755 --- a/cook.sh +++ b/cook.sh @@ -1,16 +1,15 @@ #!/bin/bash -ROOT="$PWD" -export CARGOFLAGS=--verbose -export CFLAGS="-static -nostartfiles -nostdlib -nodefaultlibs \ - -undef -imacros $ROOT/libc-artifacts/define.h \ - -isystem $ROOT/libc-artifacts/usr/include \ - -L $ROOT/libc-artifacts/usr/lib \ - $ROOT/libc-artifacts/usr/lib/crt0.o -lm -lc -lgcc \ - -fno-stack-protector -U_FORTIFY_SOURCE" -export CARGO_BUILD_RUSTFLAGS="--verbose -Z print-link-args -C linker=gcc -C link-args=\"\$CFLAGS\"" +# Configuration export TARGET=x86_64-unknown-redox + +# Automatic variables +ROOT="$PWD" REPO="$ROOT/repo/$TARGET" +export CC="$ROOT/libc-artifacts/gcc.sh" + +# Variables to be overriden by recipes +export CARGOFLAGS=--verbose set -e @@ -51,13 +50,13 @@ function op { ;; build) pushd build > /dev/null - cp -r "$ROOT/Xargo.toml" "$ROOT/libc-artifacts" . + cp -r "$ROOT/Xargo.toml" "$ROOT/.cargo" "$ROOT/libc-artifacts" . xargo build --target "$TARGET" --release $CARGOFLAGS popd > /dev/null ;; test) pushd build > /dev/null - cp -r "$ROOT/Xargo.toml" "$ROOT/libc-artifacts" . + cp -r "$ROOT/Xargo.toml" "$ROOT/.cargo" "$ROOT/libc-artifacts" . xargo test --no-run --target "$TARGET" --release $CARGOFLAGS popd > /dev/null ;; @@ -81,7 +80,7 @@ function op { for bin in $bins do cp -v "$bin" "../stage/bin/$(basename $bin)" - strip -v "../stage/bin/$(basename $bin)" + #strip -v "../stage/bin/$(basename $bin)" done fi fi diff --git a/libc-artifacts b/libc-artifacts index 4bff613d..fd716b6d 160000 --- a/libc-artifacts +++ b/libc-artifacts @@ -1 +1 @@ -Subproject commit 4bff613d3c4214ef4081427ab0a74d8f6f724935 +Subproject commit fd716b6dc0be2755a71ad40ddb6dfce49d5ffa91 From 0153c5dc14d99ce64aea9fb38f7a291e0fa70f28 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 3 Jan 2017 19:33:51 -0700 Subject: [PATCH 0046/3180] Update libc artifacts --- libc-artifacts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libc-artifacts b/libc-artifacts index fd716b6d..904eddf8 160000 --- a/libc-artifacts +++ b/libc-artifacts @@ -1 +1 @@ -Subproject commit fd716b6dc0be2755a71ad40ddb6dfce49d5ffa91 +Subproject commit 904eddf8871b42e76ee77b367bcbb2661ebe77eb From fcb34c89d85e161e7fab8d1529a45660d13fd261 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 9 Jan 2017 16:42:07 -0700 Subject: [PATCH 0047/3180] Update recipes --- recipes/orbital/recipe.sh | 2 ++ recipes/orbutils/recipe.sh | 5 +++++ recipes/pixelcannon/recipe.sh | 3 +-- recipes/sodium/recipe.sh | 9 +++++++++ 4 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 recipes/orbital/recipe.sh diff --git a/recipes/orbital/recipe.sh b/recipes/orbital/recipe.sh new file mode 100644 index 00000000..d823bef7 --- /dev/null +++ b/recipes/orbital/recipe.sh @@ -0,0 +1,2 @@ +GIT=https://github.com/redox-os/orbital.git +BINDIR="/sbin" diff --git a/recipes/orbutils/recipe.sh b/recipes/orbutils/recipe.sh index 7324ebb5..f8bc489a 100644 --- a/recipes/orbutils/recipe.sh +++ b/recipes/orbutils/recipe.sh @@ -1 +1,6 @@ GIT=https://github.com/redox-os/orbutils.git +BINDIR=/ui/bin + +function recipe_stage { + cp -Rv ui "$1/ui" +} diff --git a/recipes/pixelcannon/recipe.sh b/recipes/pixelcannon/recipe.sh index 257527bc..4d660db0 100644 --- a/recipes/pixelcannon/recipe.sh +++ b/recipes/pixelcannon/recipe.sh @@ -1,10 +1,9 @@ GIT=https://github.com/jackpot51/pixelcannon.git +BINDIR=/ui/bin function recipe_stage { mkdir -pv "$1/apps/pixelcannon" cp -Rv assets "$1/apps/pixelcannon" mkdir -pv "$1/ui/apps" cp -v manifest "$1/ui/apps/pixelcannon" - mkdir -pv "$1/ui/bin" - cp -v "target/$TARGET/release/pixelcannon" "$1/ui/bin" } diff --git a/recipes/sodium/recipe.sh b/recipes/sodium/recipe.sh index 8839dd45..3a14286b 100644 --- a/recipes/sodium/recipe.sh +++ b/recipes/sodium/recipe.sh @@ -1,2 +1,11 @@ GIT=https://github.com/redox-os/sodium.git +BINDIR="/ui/bin" CARGOFLAGS="--features orbital" + +function recipe_stage { + mkdir -pv "$1/ui/apps" + cp -v manifest "$1/ui/apps/sodium" + mkdir -pv "$1/ui/icons" + cp -v icon.png "$1/ui/icons/sodium.png" +} + From 20a53f60d3df2e64149ae5bc8d845b34d8597591 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 9 Jan 2017 16:47:04 -0700 Subject: [PATCH 0048/3180] Add binutils, pkgutils --- recipes/binutils/recipe.sh | 1 + recipes/pkgutils/recipe.sh | 1 + 2 files changed, 2 insertions(+) create mode 100644 recipes/binutils/recipe.sh create mode 100644 recipes/pkgutils/recipe.sh diff --git a/recipes/binutils/recipe.sh b/recipes/binutils/recipe.sh new file mode 100644 index 00000000..3f8b7abc --- /dev/null +++ b/recipes/binutils/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/binutils.git diff --git a/recipes/pkgutils/recipe.sh b/recipes/pkgutils/recipe.sh new file mode 100644 index 00000000..28a677cd --- /dev/null +++ b/recipes/pkgutils/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/pkgutils.git From 5c2e74c425718f90667ac26abcd5fc0623497e16 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 9 Jan 2017 16:47:32 -0700 Subject: [PATCH 0049/3180] Support for changing binary dir, support for doing binary staging after recipe_stage function --- cook.sh | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/cook.sh b/cook.sh index cf6b555f..e5ce0543 100755 --- a/cook.sh +++ b/cook.sh @@ -9,7 +9,8 @@ REPO="$ROOT/repo/$TARGET" export CC="$ROOT/libc-artifacts/gcc.sh" # Variables to be overriden by recipes -export CARGOFLAGS=--verbose +export BINDIR=bin +export CARGOFLAGS= set -e @@ -68,19 +69,23 @@ function op { stage) mkdir -p stage pushd build > /dev/null + skip_bins="0" if [ "$(type -t recipe_stage)" = "function" ] then recipe_stage ../stage - else + skip_bins="$?" + fi + if [ "$skip_bins" -eq "0" ] + then #TODO xargo install --root "../stage" $CARGOFLAGS bins="$(find target/$TARGET/release/ -maxdepth 1 -type f ! -name '*.*')" if [ -n "$bins" ] then - mkdir -p ../stage/bin + mkdir -p "../stage/$BINDIR" for bin in $bins do - cp -v "$bin" "../stage/bin/$(basename $bin)" - #strip -v "../stage/bin/$(basename $bin)" + cp -v "$bin" "../stage/$BINDIR/$(basename $bin)" + #strip -v "../stage/$BINDIR/$(basename $bin)" done fi fi From d41054cda3db924c571fdf269ff2cdb26839e445 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 9 Jan 2017 17:03:31 -0700 Subject: [PATCH 0050/3180] Allow overriding of most recipe features. Add orbdata recipe --- cook.sh | 51 ++++++++++++++++++++++++++++++-------- recipes/orbdata/recipe.sh | 27 ++++++++++++++++++++ recipes/orbutils/recipe.sh | 4 --- 3 files changed, 68 insertions(+), 14 deletions(-) create mode 100644 recipes/orbdata/recipe.sh diff --git a/cook.sh b/cook.sh index e5ce0543..9db13abc 100755 --- a/cook.sh +++ b/cook.sh @@ -46,36 +46,67 @@ function op { ;; update) pushd build > /dev/null - xargo update + skip="0" + if [ "$(type -t recipe_update)" = "function" ] + then + recipe_update || skip="1" + fi + if [ "$skip" -eq "0" ] + then + xargo update + fi popd > /dev/null ;; build) pushd build > /dev/null - cp -r "$ROOT/Xargo.toml" "$ROOT/.cargo" "$ROOT/libc-artifacts" . - xargo build --target "$TARGET" --release $CARGOFLAGS + skip="0" + if [ "$(type -t recipe_build)" = "function" ] + then + recipe_build || skip="1" + fi + if [ "$skip" -eq "0" ] + then + cp -r "$ROOT/Xargo.toml" "$ROOT/.cargo" "$ROOT/libc-artifacts" . + xargo build --target "$TARGET" --release $CARGOFLAGS + fi popd > /dev/null ;; test) pushd build > /dev/null - cp -r "$ROOT/Xargo.toml" "$ROOT/.cargo" "$ROOT/libc-artifacts" . - xargo test --no-run --target "$TARGET" --release $CARGOFLAGS + skip="0" + if [ "$(type -t recipe_test)" = "function" ] + then + recipe_test || skip="1" + fi + if [ "$skip" -eq "0" ] + then + cp -r "$ROOT/Xargo.toml" "$ROOT/.cargo" "$ROOT/libc-artifacts" . + xargo test --no-run --target "$TARGET" --release $CARGOFLAGS + fi popd > /dev/null ;; clean) pushd build > /dev/null - xargo clean + skip="0" + if [ "$(type -t recipe_clean)" = "function" ] + then + recipe_clean || skip="1" + fi + if [ "$skip" -eq "0" ] + then + xargo clean + fi popd > /dev/null ;; stage) mkdir -p stage pushd build > /dev/null - skip_bins="0" + skip="0" if [ "$(type -t recipe_stage)" = "function" ] then - recipe_stage ../stage - skip_bins="$?" + recipe_stage ../stage || skip="1" fi - if [ "$skip_bins" -eq "0" ] + if [ "$skip" -eq "0" ] then #TODO xargo install --root "../stage" $CARGOFLAGS bins="$(find target/$TARGET/release/ -maxdepth 1 -type f ! -name '*.*')" diff --git a/recipes/orbdata/recipe.sh b/recipes/orbdata/recipe.sh new file mode 100644 index 00000000..e7ecb841 --- /dev/null +++ b/recipes/orbdata/recipe.sh @@ -0,0 +1,27 @@ +GIT=https://github.com/redox-os/orbdata.git + +function recipe_update { + echo "skipping update" + return 1 +} + +function recipe_build { + echo "skipping build" + return 1 +} + +function recipe_test { + echo "skipping test" + return 1 +} + +function recipe_clean { + echo "skipping clean" + return 1 +} + +function recipe_stage { + mkdir -pv "$1/ui" + cp -Rv ./* "$1/ui" + return 1 +} diff --git a/recipes/orbutils/recipe.sh b/recipes/orbutils/recipe.sh index f8bc489a..e049cafd 100644 --- a/recipes/orbutils/recipe.sh +++ b/recipes/orbutils/recipe.sh @@ -1,6 +1,2 @@ GIT=https://github.com/redox-os/orbutils.git BINDIR=/ui/bin - -function recipe_stage { - cp -Rv ui "$1/ui" -} From f500e01a66dd9de249c31e08cdd5b8ea79320572 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 9 Jan 2017 17:07:13 -0700 Subject: [PATCH 0051/3180] Strip bins, remove verbose from cargo flags --- .cargo/config | 4 ---- cook.sh | 2 +- libc-artifacts | 2 +- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/.cargo/config b/.cargo/config index 43363244..2b36cbab 100644 --- a/.cargo/config +++ b/.cargo/config @@ -1,6 +1,2 @@ [target.x86_64-unknown-redox] linker = "libc-artifacts/gcc.sh" -rustflags = [ - "--verbose", - "-Z", "print-link-args" -] diff --git a/cook.sh b/cook.sh index 9db13abc..ee9f98aa 100755 --- a/cook.sh +++ b/cook.sh @@ -116,7 +116,7 @@ function op { for bin in $bins do cp -v "$bin" "../stage/$BINDIR/$(basename $bin)" - #strip -v "../stage/$BINDIR/$(basename $bin)" + strip -v "../stage/$BINDIR/$(basename $bin)" done fi fi diff --git a/libc-artifacts b/libc-artifacts index 904eddf8..8278a625 160000 --- a/libc-artifacts +++ b/libc-artifacts @@ -1 +1 @@ -Subproject commit 904eddf8871b42e76ee77b367bcbb2661ebe77eb +Subproject commit 8278a6252ca84ffef684bf3c371d8ab819c47ba4 From ecfa38ece25105ec7067c0153e478defe09a8378 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 9 Jan 2017 17:18:26 -0700 Subject: [PATCH 0052/3180] Copy resources for userutils --- recipes/userutils/recipe.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/recipes/userutils/recipe.sh b/recipes/userutils/recipe.sh index 92d104f7..137f7581 100644 --- a/recipes/userutils/recipe.sh +++ b/recipes/userutils/recipe.sh @@ -1 +1,5 @@ GIT=https://github.com/redox-os/userutils.git + +function recipe_stage { + cp -v res "$1/etc" +} From 5356f081e41ff85285b3208bc3aeb86b4447acfe Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 9 Jan 2017 18:02:56 -0700 Subject: [PATCH 0053/3180] Fix userutils recipe --- recipes/userutils/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/userutils/recipe.sh b/recipes/userutils/recipe.sh index 137f7581..cafc7367 100644 --- a/recipes/userutils/recipe.sh +++ b/recipes/userutils/recipe.sh @@ -1,5 +1,5 @@ GIT=https://github.com/redox-os/userutils.git function recipe_stage { - cp -v res "$1/etc" + cp -Rv res "$1/etc" } From 74f6e6c9d7cc183605661056be523c7a556b3da5 Mon Sep 17 00:00:00 2001 From: Daan Hoogland Date: Fri, 13 Jan 2017 17:58:40 +0100 Subject: [PATCH 0054/3180] import the work at uutils --- recipes/uutils/recipe.sh | 1 + 1 file changed, 1 insertion(+) create mode 100644 recipes/uutils/recipe.sh diff --git a/recipes/uutils/recipe.sh b/recipes/uutils/recipe.sh new file mode 100644 index 00000000..25cf456f --- /dev/null +++ b/recipes/uutils/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/uutils/coreutils.git From 9befc6053eb133d045cdab81c1a0b11651b066eb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 13 Jan 2017 10:22:39 -0700 Subject: [PATCH 0055/3180] Skip building uutils for now --- cook.sh | 6 +++--- recipes/uutils/recipe.sh | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/cook.sh b/cook.sh index ee9f98aa..28e265d4 100755 --- a/cook.sh +++ b/cook.sh @@ -4,7 +4,7 @@ export TARGET=x86_64-unknown-redox # Automatic variables -ROOT="$PWD" +ROOT="$(cd `dirname "$0"` && pwd)" REPO="$ROOT/repo/$TARGET" export CC="$ROOT/libc-artifacts/gcc.sh" @@ -148,9 +148,9 @@ function op { if [ -n "$1" ] then - if [ -d "recipes/$1" ] + if [ -d "$ROOT/recipes/$1" ] then - cd "recipes/$1" + cd "$ROOT/recipes/$1" source recipe.sh for arg in "${@:2}" do diff --git a/recipes/uutils/recipe.sh b/recipes/uutils/recipe.sh index 25cf456f..368be3a8 100644 --- a/recipes/uutils/recipe.sh +++ b/recipes/uutils/recipe.sh @@ -1 +1,7 @@ GIT=https://github.com/uutils/coreutils.git +CARGOFLAGS="--no-default-features --features=generic" + +function recipe_build { + echo "Skipping build of uutils" + return 1 +} From 8acd9bd011563dc0bd7127b86bb53891d82141cf Mon Sep 17 00:00:00 2001 From: Daan Hoogland Date: Sun, 15 Jan 2017 11:31:39 +0100 Subject: [PATCH 0056/3180] build a uutils clone --- recipes/uutils/recipe.sh | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/recipes/uutils/recipe.sh b/recipes/uutils/recipe.sh index 368be3a8..917b8be9 100644 --- a/recipes/uutils/recipe.sh +++ b/recipes/uutils/recipe.sh @@ -1,7 +1,2 @@ -GIT=https://github.com/uutils/coreutils.git -CARGOFLAGS="--no-default-features --features=generic" - -function recipe_build { - echo "Skipping build of uutils" - return 1 -} +GIT=git@github.com:DaanHoogland/uutils-core.git +CARGOFLAGS="--no-default-features --features redox" From ea9d80f09ec711dbb2657d2d37876cc8c9b46c33 Mon Sep 17 00:00:00 2001 From: Daan Hoogland Date: Sun, 15 Jan 2017 21:12:44 +0100 Subject: [PATCH 0057/3180] upstream merge happened --- recipes/uutils/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/uutils/recipe.sh b/recipes/uutils/recipe.sh index 917b8be9..c8354326 100644 --- a/recipes/uutils/recipe.sh +++ b/recipes/uutils/recipe.sh @@ -1,2 +1,2 @@ -GIT=git@github.com:DaanHoogland/uutils-core.git +GIT=https://github.com/uutils/coreutils.git CARGOFLAGS="--no-default-features --features redox" From 26108a8dbe57281281cf5276550a218423f387f0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 16 Jan 2017 21:12:48 -0700 Subject: [PATCH 0058/3180] Update xargo to allow testing --- Xargo.toml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Xargo.toml b/Xargo.toml index 4cd054db..fda67126 100644 --- a/Xargo.toml +++ b/Xargo.toml @@ -1,2 +1,6 @@ -[target.x86_64-unknown-redox.dependencies.std] +[dependencies.std] features = [] + +[dependencies.test] +stage = 1 + From cfa1711df81e5d8b7ceff6c3ccc1d3870435177e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 16 Jan 2017 21:17:19 -0700 Subject: [PATCH 0059/3180] Panic unwind feature in libstd --- Xargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Xargo.toml b/Xargo.toml index fda67126..e816fa4f 100644 --- a/Xargo.toml +++ b/Xargo.toml @@ -1,5 +1,5 @@ [dependencies.std] -features = [] +features = ["panic_unwind"] [dependencies.test] stage = 1 From edefdfabdcc10cd84fb099f7a17aa2eceef54b9a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 27 Mar 2017 20:31:08 -0600 Subject: [PATCH 0060/3180] Use master of libc artifacts --- .gitmodules | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitmodules b/.gitmodules index 39b409c6..4157e171 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,4 @@ [submodule "libc-artifacts"] path = libc-artifacts url = https://github.com/redox-os/libc-artifacts.git + branch = master From 7d426b552c98aa8e3281570b8271ba39b1219b07 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 27 Mar 2017 20:31:50 -0600 Subject: [PATCH 0061/3180] Fixes for setup script --- setup.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/setup.sh b/setup.sh index 376aef19..c6ada9c2 100755 --- a/setup.sh +++ b/setup.sh @@ -1,9 +1,13 @@ #!/bin/bash - set -e +echo "Downloading latest libc-artifacts" +git submodule update --init --remote libc-artifacts + echo "Defaulting to rust nightly" rustup override set nightly +echo "Update rust nightly" +rustup update nightly echo "Downloading rust source" rustup component add rust-src if [ -z "$(which xargo)" ] From 3536471c4731f377bf90cca7de1e4b0f6cf6e2af Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 27 Mar 2017 21:11:43 -0600 Subject: [PATCH 0062/3180] Add ability to get package information --- cook.sh | 11 +++++++++++ setup.sh | 5 +++++ 2 files changed, 16 insertions(+) diff --git a/cook.sh b/cook.sh index 28e265d4..9d6e9123 100755 --- a/cook.sh +++ b/cook.sh @@ -44,6 +44,17 @@ function op { unfetch) rm -rfv build ;; + info) + pushd build > /dev/null + if [ -e Cargo.toml ] + then + package_version="$(cargo config package.version | tr -d '"')" + else + package_version="$(git rev-parse --short HEAD)" + fi + echo "$1_${package_version}" + popd > /dev/null + ;; update) pushd build > /dev/null skip="0" diff --git a/setup.sh b/setup.sh index c6ada9c2..3396cacf 100755 --- a/setup.sh +++ b/setup.sh @@ -10,6 +10,11 @@ echo "Update rust nightly" rustup update nightly echo "Downloading rust source" rustup component add rust-src +if [ -z "$(which cargo-config)" ] +then + echo "Installing cargo-config" + cargo install -f cargo-config +fi if [ -z "$(which xargo)" ] then echo "Installing xargo" From f2f5487313786a6fb30d071e4e4bf862b1396e1a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 27 Mar 2017 21:17:12 -0600 Subject: [PATCH 0063/3180] Convert to force cargo version, allow override in recipe --- cook.sh | 12 +++++++----- recipes/orbdata/recipe.sh | 5 +++++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/cook.sh b/cook.sh index 9d6e9123..a310cbc2 100755 --- a/cook.sh +++ b/cook.sh @@ -46,13 +46,15 @@ function op { ;; info) pushd build > /dev/null - if [ -e Cargo.toml ] + skip="0" + if [ "$(type -t recipe_info)" = "function" ] then - package_version="$(cargo config package.version | tr -d '"')" - else - package_version="$(git rev-parse --short HEAD)" + recipe_info || skip="1" + fi + if [ "$skip" -eq "0" ] + then + echo "$1_$(cargo config package.version | tr -d '"')" fi - echo "$1_${package_version}" popd > /dev/null ;; update) diff --git a/recipes/orbdata/recipe.sh b/recipes/orbdata/recipe.sh index e7ecb841..ed2b4c20 100644 --- a/recipes/orbdata/recipe.sh +++ b/recipes/orbdata/recipe.sh @@ -1,5 +1,10 @@ GIT=https://github.com/redox-os/orbdata.git +function recipe_info { + echo "orbdata_0.0.1" + return 1 +} + function recipe_update { echo "skipping update" return 1 From 9930e92fc7e7bf9854a262efd86908c098687dd7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 27 Mar 2017 21:22:46 -0600 Subject: [PATCH 0064/3180] Change info to version number, echo to stderr --- cook.sh | 10 +++++----- recipes/orbdata/recipe.sh | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cook.sh b/cook.sh index a310cbc2..bc3f4145 100755 --- a/cook.sh +++ b/cook.sh @@ -15,7 +15,7 @@ export CARGOFLAGS= set -e function op { - echo -e "\033[01;38;5;215mcook - $1 $2\033[0m" + echo -e "\033[01;38;5;215mcook - $1 $2\033[0m" >&2 case "$2" in dist) op $1 fetch @@ -44,16 +44,16 @@ function op { unfetch) rm -rfv build ;; - info) + version) pushd build > /dev/null skip="0" - if [ "$(type -t recipe_info)" = "function" ] + if [ "$(type -t recipe_version)" = "function" ] then - recipe_info || skip="1" + recipe_version || skip="1" fi if [ "$skip" -eq "0" ] then - echo "$1_$(cargo config package.version | tr -d '"')" + cargo config package.version | tr -d '"' fi popd > /dev/null ;; diff --git a/recipes/orbdata/recipe.sh b/recipes/orbdata/recipe.sh index ed2b4c20..77212e17 100644 --- a/recipes/orbdata/recipe.sh +++ b/recipes/orbdata/recipe.sh @@ -1,7 +1,7 @@ GIT=https://github.com/redox-os/orbdata.git -function recipe_info { - echo "orbdata_0.0.1" +function recipe_version { + echo "0.0.1" return 1 } From c20fed785fc787187e7608bdc16f8a56ba936f8e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 27 Mar 2017 21:27:15 -0600 Subject: [PATCH 0065/3180] Fixup usage documentation --- cook.sh | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/cook.sh b/cook.sh index bc3f4145..6736008f 100755 --- a/cook.sh +++ b/cook.sh @@ -14,6 +14,24 @@ export CARGOFLAGS= set -e +function usage { + echo "cook.sh $1 " >&2 + echo " dist" >&2 + echo " distclean" >&2 + echo " build" >&2 + echo " clean" >&2 + echo " fetch" >&2 + echo " unfetch" >&2 + echo " publish" >&2 + echo " unpublish" >&2 + echo " stage" >&2 + echo " unstage" >&2 + echo " tar" >&2 + echo " untar" >&2 + echo " update" >&2 + echo " version" >&2 +} + function op { echo -e "\033[01;38;5;215mcook - $1 $2\033[0m" >&2 case "$2" in @@ -154,7 +172,7 @@ function op { rm -rfv "$REPO/$1.tar" ;; *) - echo "cook.sh $1 {dist|distclean|build|clean|fetch|unfetch|publish|unpublish|stage|unstage|tar|untar|update}" + usage $1 ;; esac } @@ -170,8 +188,8 @@ then op "$1" "$arg" done else - echo "cook.sh: recipe '$1' not found" + echo "cook.sh: recipe '$1' not found" >&2 fi else - echo "cook.sh {package} {dist|distclean|build|clean|fetch|unfetch|publish|unpublish|stage|unstage|tar|untar|update}" + usage "{package}" fi From f1e261f8683e9a986381226a242d6945b67284b4 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Wed, 29 Mar 2017 12:10:41 -0700 Subject: [PATCH 0066/3180] Support downloading tar archive, instead of git repo --- cook.sh | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/cook.sh b/cook.sh index 6736008f..68520818 100755 --- a/cook.sh +++ b/cook.sh @@ -48,19 +48,41 @@ function op { op $1 unfetch ;; fetch) - if [ ! -d build ] + if [ -z "$GIT" ] then - git clone --recursive "$GIT" build + if [ ! -f "$(basename "$SRC")" ] + then + wget "$SRC" + fi + + rm -rf build + tar xvf "$(basename "$SRC")" + mv "$DIR" build + else + if [ ! -d build ] + then + git clone --recursive "$GIT" build + fi + + pushd build > /dev/null + git pull + git submodule sync + git submodule update --init --recursive + popd > /dev/null + fi + + if [ -f "patch" ] + then + patch -p1 -d build < patch fi - pushd build > /dev/null - git pull - git submodule sync - git submodule update --init --recursive - popd > /dev/null ;; unfetch) rm -rfv build + if [ ! -z "$SRC" ] + then + rm -f "$(basename "$SRC")" + fi ;; version) pushd build > /dev/null From edf6930cb55dd3586576586b5f53c510429203a7 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Wed, 29 Mar 2017 12:11:09 -0700 Subject: [PATCH 0067/3180] Recipe for Lua --- recipes/lua/patch | 15 +++++++++++++++ recipes/lua/recipe.sh | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 recipes/lua/patch create mode 100644 recipes/lua/recipe.sh diff --git a/recipes/lua/patch b/recipes/lua/patch new file mode 100644 index 00000000..7c69ec7e --- /dev/null +++ b/recipes/lua/patch @@ -0,0 +1,15 @@ +diff -rupN lua/src/Makefile lua-redox/src/Makefile +--- lua/src/Makefile 2015-05-27 04:10:11.000000000 -0700 ++++ lua-redox/src/Makefile 2016-07-27 18:08:54.167232304 -0700 +@@ -4,9 +4,9 @@ + # == CHANGE THE SETTINGS BELOW TO SUIT YOUR ENVIRONMENT ======================= + + # Your platform. See PLATS for possible values. +-PLAT= none ++PLAT= posix + +-CC= gcc -std=gnu99 ++CC:= $(CC) -std=gnu99 + CFLAGS= -O2 -Wall -Wextra -DLUA_COMPAT_5_2 $(SYSCFLAGS) $(MYCFLAGS) + LDFLAGS= $(SYSLDFLAGS) $(MYLDFLAGS) + LIBS= -lm $(SYSLIBS) $(MYLIBS) diff --git a/recipes/lua/recipe.sh b/recipes/lua/recipe.sh new file mode 100644 index 00000000..0e0a2b33 --- /dev/null +++ b/recipes/lua/recipe.sh @@ -0,0 +1,34 @@ +VERSION=5.3.1 +SRC=http://www.lua.org/ftp/lua-$VERSION.tar.gz +DIR=lua-$VERSION + +function recipe_version { + echo "$VERSION" + return 1 +} + +function recipe_update { + echo "skipping update" + return 1 +} + +function recipe_build { + make generic + return 1 +} + +function recipe_test { + echo "skipping test" + return 1 +} + +function recipe_clean { + make clean + return 1 +} + +function recipe_stage { + mkdir -pv "$1/bin" + cp src/lua src/luac "$1/bin" + return 1 +} From 2758c9e03cef3594120879475eff770daeebc42c Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Wed, 29 Mar 2017 13:38:32 -0700 Subject: [PATCH 0068/3180] Build Lua without patch --- recipes/lua/patch | 15 --------------- recipes/lua/recipe.sh | 2 +- 2 files changed, 1 insertion(+), 16 deletions(-) delete mode 100644 recipes/lua/patch diff --git a/recipes/lua/patch b/recipes/lua/patch deleted file mode 100644 index 7c69ec7e..00000000 --- a/recipes/lua/patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -rupN lua/src/Makefile lua-redox/src/Makefile ---- lua/src/Makefile 2015-05-27 04:10:11.000000000 -0700 -+++ lua-redox/src/Makefile 2016-07-27 18:08:54.167232304 -0700 -@@ -4,9 +4,9 @@ - # == CHANGE THE SETTINGS BELOW TO SUIT YOUR ENVIRONMENT ======================= - - # Your platform. See PLATS for possible values. --PLAT= none -+PLAT= posix - --CC= gcc -std=gnu99 -+CC:= $(CC) -std=gnu99 - CFLAGS= -O2 -Wall -Wextra -DLUA_COMPAT_5_2 $(SYSCFLAGS) $(MYCFLAGS) - LDFLAGS= $(SYSLDFLAGS) $(MYLDFLAGS) - LIBS= -lm $(SYSLIBS) $(MYLIBS) diff --git a/recipes/lua/recipe.sh b/recipes/lua/recipe.sh index 0e0a2b33..bdac657d 100644 --- a/recipes/lua/recipe.sh +++ b/recipes/lua/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { } function recipe_build { - make generic + make generic CC="$CC -std=gnu99" return 1 } From 9865c1571276d6b914e9feb328d7d80ab843c33d Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Wed, 29 Mar 2017 16:28:46 -0700 Subject: [PATCH 0069/3180] Instead of single "patch" file, support "*.patch" --- cook.sh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/cook.sh b/cook.sh index 68520818..3ecfa4ae 100755 --- a/cook.sh +++ b/cook.sh @@ -13,6 +13,7 @@ export BINDIR=bin export CARGOFLAGS= set -e +shopt -s nullglob function usage { echo "cook.sh $1 " >&2 @@ -71,10 +72,10 @@ function op { popd > /dev/null fi - if [ -f "patch" ] - then - patch -p1 -d build < patch - fi + for patch in *.patch + do + patch -p1 -d build < "$patch" + done ;; unfetch) From 81422ff2821b595b2bc79e1f65f2fbb36319ba91 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 29 Mar 2017 19:09:38 -0600 Subject: [PATCH 0070/3180] Cleanup tar file method --- .gitignore | 2 ++ cook.sh | 39 +++++++++++++++++++++------------------ recipes/lua/recipe.sh | 3 +-- 3 files changed, 24 insertions(+), 20 deletions(-) diff --git a/.gitignore b/.gitignore index bade6d8b..94e928d6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ build repo +source +source.tar stage stage.tar diff --git a/cook.sh b/cook.sh index 3ecfa4ae..9a20c173 100755 --- a/cook.sh +++ b/cook.sh @@ -13,7 +13,6 @@ export BINDIR=bin export CARGOFLAGS= set -e -shopt -s nullglob function usage { echo "cook.sh $1 " >&2 @@ -49,40 +48,44 @@ function op { op $1 unfetch ;; fetch) - if [ -z "$GIT" ] + if [ -n "$TAR" ] then - if [ ! -f "$(basename "$SRC")" ] + if [ ! -f source.tar ] then - wget "$SRC" + wget "$TAR" -O source.tar + fi + + if [ ! -d source ] + then + mkdir source + tar xvf source.tar -C source --strip-components 1 fi rm -rf build - tar xvf "$(basename "$SRC")" - mv "$DIR" build - else - if [ ! -d build ] + cp -r source build + elif [ -n "$GIT" ] + then + if [ ! -d source ] then - git clone --recursive "$GIT" build + git clone --recursive "$GIT" source fi - pushd build > /dev/null + pushd source > /dev/null git pull git submodule sync git submodule update --init --recursive popd > /dev/null - fi - for patch in *.patch - do - patch -p1 -d build < "$patch" - done + rm -rf build + cp -r source build + fi ;; unfetch) - rm -rfv build - if [ ! -z "$SRC" ] + rm -rfv build source + if [ -n "$TAR" ] then - rm -f "$(basename "$SRC")" + rm -f source.tar fi ;; version) diff --git a/recipes/lua/recipe.sh b/recipes/lua/recipe.sh index bdac657d..453c9e04 100644 --- a/recipes/lua/recipe.sh +++ b/recipes/lua/recipe.sh @@ -1,6 +1,5 @@ VERSION=5.3.1 -SRC=http://www.lua.org/ftp/lua-$VERSION.tar.gz -DIR=lua-$VERSION +TAR=http://www.lua.org/ftp/lua-$VERSION.tar.gz function recipe_version { echo "$VERSION" From 7baa834c406e254ab366d410f9e80e1f9577c6c4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 7 Apr 2017 20:00:03 -0600 Subject: [PATCH 0071/3180] Add tar recipe --- recipes/tar/recipe.sh | 1 + 1 file changed, 1 insertion(+) create mode 100644 recipes/tar/recipe.sh diff --git a/recipes/tar/recipe.sh b/recipes/tar/recipe.sh new file mode 100644 index 00000000..fc2aa80d --- /dev/null +++ b/recipes/tar/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/tar-rs.git From 3bd2f7cfd65e70f85a658dbaa793524569b18ab3 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Sat, 8 Apr 2017 11:13:24 -0700 Subject: [PATCH 0072/3180] Add update-all.sh script to rebuild only out of date packages --- cook.sh | 8 ++++++++ update-all.sh | 23 +++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100755 update-all.sh diff --git a/cook.sh b/cook.sh index 9a20c173..7fb8c9de 100755 --- a/cook.sh +++ b/cook.sh @@ -101,6 +101,14 @@ function op { fi popd > /dev/null ;; + gitversion) + if [ -d build/.git ] + then + echo "$(op $1 version)-$(git -C build rev-parse --short HEAD)" + else + op $1 version + fi + ;; update) pushd build > /dev/null skip="0" diff --git a/update-all.sh b/update-all.sh new file mode 100755 index 00000000..18a41e85 --- /dev/null +++ b/update-all.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +set -e + +for recipe in `ls -1 recipes` +do + if [ ! -f "recipes/$recipe/stage.tar" ] + then + echo "$recipe: building..." + ./cook.sh $recipe dist + else + oldver=$(./cook.sh $recipe gitversion) + ./cook.sh $recipe update + newver=$(./cook.sh $recipe gitversion) + if [ "$oldver" = "$newver" ] + then + echo "$recipe: up to date (version $newver)." + else + echo "$recipe: updating $oldver -> $newver..." + ./cook.sh $recipe dist + fi + fi +done From e0401295afe4da6ceaa6d082932aa97ce2e1fd66 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Sat, 8 Apr 2017 11:29:41 -0700 Subject: [PATCH 0073/3180] Rename update-all.sh to update-packages.sh; make it optionally allow a list of packages as arguments --- update-all.sh => update-packages.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) rename update-all.sh => update-packages.sh (84%) diff --git a/update-all.sh b/update-packages.sh similarity index 84% rename from update-all.sh rename to update-packages.sh index 18a41e85..6a3aba2f 100755 --- a/update-all.sh +++ b/update-packages.sh @@ -2,7 +2,14 @@ set -e -for recipe in `ls -1 recipes` +if [ $# = 0 ] +then + recipes=$(ls -1 recipes) +else + recipes=$@ +fi + +for recipe in $recipes do if [ ! -f "recipes/$recipe/stage.tar" ] then From 8b4c56b07467ac76650b5d011caadbc683c7cd4c Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Sat, 8 Apr 2017 11:43:38 -0700 Subject: [PATCH 0074/3180] "exit 1" if package not found --- cook.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/cook.sh b/cook.sh index 7fb8c9de..ac18a7e0 100755 --- a/cook.sh +++ b/cook.sh @@ -223,6 +223,7 @@ then done else echo "cook.sh: recipe '$1' not found" >&2 + exit 1 fi else usage "{package}" From 1e3f539de5dee4ecdf6f830ebace1ea2aa1595a8 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Sat, 8 Apr 2017 11:47:43 -0700 Subject: [PATCH 0075/3180] Add recipe for init --- recipes/init/recipe.sh | 1 + 1 file changed, 1 insertion(+) create mode 100644 recipes/init/recipe.sh diff --git a/recipes/init/recipe.sh b/recipes/init/recipe.sh new file mode 100644 index 00000000..3edcc3a3 --- /dev/null +++ b/recipes/init/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/init From b4de8fd4aeb04721fe08647708cdade838670453 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 8 Apr 2017 16:43:00 -0600 Subject: [PATCH 0076/3180] Update ci to use update-packages, fix update-packages by using fetch --- ci.sh | 3 +-- update-packages.sh | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/ci.sh b/ci.sh index dc70f68d..8bd2878b 100755 --- a/ci.sh +++ b/ci.sh @@ -2,6 +2,5 @@ set -e -./all.sh distclean -./all.sh dist +./update-packages.sh ./all.sh publish diff --git a/update-packages.sh b/update-packages.sh index 6a3aba2f..56ec7559 100755 --- a/update-packages.sh +++ b/update-packages.sh @@ -17,7 +17,7 @@ do ./cook.sh $recipe dist else oldver=$(./cook.sh $recipe gitversion) - ./cook.sh $recipe update + ./cook.sh $recipe fetch newver=$(./cook.sh $recipe gitversion) if [ "$oldver" = "$newver" ] then From 7b0287c0a0448278fa2bd387c2c1cf6ab399f6ce Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 8 Apr 2017 16:44:07 -0600 Subject: [PATCH 0077/3180] Disable uutils recipe for now --- {recipes => recipes_disabled}/uutils/recipe.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {recipes => recipes_disabled}/uutils/recipe.sh (100%) diff --git a/recipes/uutils/recipe.sh b/recipes_disabled/uutils/recipe.sh similarity index 100% rename from recipes/uutils/recipe.sh rename to recipes_disabled/uutils/recipe.sh From c2e315220b49c4ff3d974ee943ba3ea801c905bb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 8 Apr 2017 16:50:18 -0600 Subject: [PATCH 0078/3180] Publish packages in update --- ci.sh | 6 ------ update-packages.sh | 7 +++++++ 2 files changed, 7 insertions(+), 6 deletions(-) delete mode 100755 ci.sh diff --git a/ci.sh b/ci.sh deleted file mode 100755 index 8bd2878b..00000000 --- a/ci.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -set -e - -./update-packages.sh -./all.sh publish diff --git a/update-packages.sh b/update-packages.sh index 56ec7559..cbb62040 100755 --- a/update-packages.sh +++ b/update-packages.sh @@ -9,6 +9,7 @@ else recipes=$@ fi +publish="" for recipe in $recipes do if [ ! -f "recipes/$recipe/stage.tar" ] @@ -25,6 +26,12 @@ do else echo "$recipe: updating $oldver -> $newver..." ./cook.sh $recipe dist + publish="${publish} $recipe" fi fi done + +for recipe in $publish +do + ./cook.sh $recipe publish +done From 16196f7479b2b8b228ba78f5e7287112cb76af04 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 8 Apr 2017 16:56:08 -0600 Subject: [PATCH 0079/3180] Publish on clean build --- update-packages.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/update-packages.sh b/update-packages.sh index cbb62040..e0a4f793 100755 --- a/update-packages.sh +++ b/update-packages.sh @@ -16,6 +16,7 @@ do then echo "$recipe: building..." ./cook.sh $recipe dist + publish="${publish} $recipe" else oldver=$(./cook.sh $recipe gitversion) ./cook.sh $recipe fetch From 571455c972ef304019cdc11aed77cb4c3bb9e230 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Sat, 8 Apr 2017 15:47:36 -0700 Subject: [PATCH 0080/3180] Avoid annoying verbosity in update-packages.sh --- cook.sh | 6 +++++- update-packages.sh | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/cook.sh b/cook.sh index ac18a7e0..9c728eeb 100755 --- a/cook.sh +++ b/cook.sh @@ -33,7 +33,11 @@ function usage { } function op { - echo -e "\033[01;38;5;215mcook - $1 $2\033[0m" >&2 + if [ -z $COOK_QUIET ] + then + echo -e "\033[01;38;5;215mcook - $1 $2\033[0m" >&2 + fi + case "$2" in dist) op $1 fetch diff --git a/update-packages.sh b/update-packages.sh index e0a4f793..03850518 100755 --- a/update-packages.sh +++ b/update-packages.sh @@ -18,9 +18,9 @@ do ./cook.sh $recipe dist publish="${publish} $recipe" else - oldver=$(./cook.sh $recipe gitversion) + oldver=$(COOK_QUIET=1 ./cook.sh $recipe gitversion) ./cook.sh $recipe fetch - newver=$(./cook.sh $recipe gitversion) + newver=$(COOK_QUIET=1 ./cook.sh $recipe gitversion) if [ "$oldver" = "$newver" ] then echo "$recipe: up to date (version $newver)." From cd6d1f35d29e7efbf50a7f94fb14ce84c333b20e Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Sat, 8 Apr 2017 15:50:14 -0700 Subject: [PATCH 0081/3180] unstage and untar when updating in update-packages.sh --- update-packages.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/update-packages.sh b/update-packages.sh index 03850518..a5b8e225 100755 --- a/update-packages.sh +++ b/update-packages.sh @@ -26,7 +26,7 @@ do echo "$recipe: up to date (version $newver)." else echo "$recipe: updating $oldver -> $newver..." - ./cook.sh $recipe dist + ./cook.sh $recipe unstage untar dist publish="${publish} $recipe" fi fi From 792f7e13088fdcccabce3e6b01fb000e509e2c63 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Sat, 8 Apr 2017 17:26:30 -0700 Subject: [PATCH 0082/3180] Add drivers package --- recipes/drivers/Cargo.toml | 14 ++++++++++++++ recipes/drivers/recipe.sh | 6 ++++++ 2 files changed, 20 insertions(+) create mode 100644 recipes/drivers/Cargo.toml create mode 100644 recipes/drivers/recipe.sh diff --git a/recipes/drivers/Cargo.toml b/recipes/drivers/Cargo.toml new file mode 100644 index 00000000..4b13eaf7 --- /dev/null +++ b/recipes/drivers/Cargo.toml @@ -0,0 +1,14 @@ +[workspace] +members = [ + "ahcid", + "alxd", + "bgad", + "e1000d", + "nvmed", + "pcid", + "ps2d", + "rtl8168d", + "vboxd", + "vesad", + "xhcid" +] diff --git a/recipes/drivers/recipe.sh b/recipes/drivers/recipe.sh new file mode 100644 index 00000000..bd9aca83 --- /dev/null +++ b/recipes/drivers/recipe.sh @@ -0,0 +1,6 @@ +GIT=https://github.com/redox-os/drivers +CARGOFLAGS=--all + +function recipe_update { + cp ../Cargo.toml ./ +} From 401a2eee758eb8521ad1386934ed85040b90ec9a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 8 Apr 2017 19:28:49 -0600 Subject: [PATCH 0083/3180] Add bindir to drivers --- recipes/drivers/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/drivers/recipe.sh b/recipes/drivers/recipe.sh index bd9aca83..c4648eba 100644 --- a/recipes/drivers/recipe.sh +++ b/recipes/drivers/recipe.sh @@ -1,5 +1,6 @@ GIT=https://github.com/redox-os/drivers CARGOFLAGS=--all +BINDIR="/sbin" function recipe_update { cp ../Cargo.toml ./ From ebe0a2ea4074454d5909846d33da90dd52d0b32c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 8 Apr 2017 19:47:09 -0600 Subject: [PATCH 0084/3180] Update artifacts --- libc-artifacts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libc-artifacts b/libc-artifacts index 8278a625..ecd2edd8 160000 --- a/libc-artifacts +++ b/libc-artifacts @@ -1 +1 @@ -Subproject commit 8278a6252ca84ffef684bf3c371d8ab819c47ba4 +Subproject commit ecd2edd8935177cf9f160ae6ec11c22ee3a0a249 From 932de911616ba550339af9ca58df6843f0b0e162 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Sat, 8 Apr 2017 19:07:12 -0700 Subject: [PATCH 0085/3180] Change $COOK_QUIET if condition --- cook.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cook.sh b/cook.sh index 9c728eeb..5c0ac291 100755 --- a/cook.sh +++ b/cook.sh @@ -33,7 +33,7 @@ function usage { } function op { - if [ -z $COOK_QUIET ] + if [ ! "$COOK_QUIET" = "1" ] then echo -e "\033[01;38;5;215mcook - $1 $2\033[0m" >&2 fi From 8074f78ea7a86ea4866fa2feea588b21b6062710 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Mon, 24 Apr 2017 21:18:04 -0700 Subject: [PATCH 0086/3180] Add pkgutils submodule --- .gitmodules | 3 +++ pkgutils | 1 + 2 files changed, 4 insertions(+) create mode 160000 pkgutils diff --git a/.gitmodules b/.gitmodules index 4157e171..7b1c83ab 100644 --- a/.gitmodules +++ b/.gitmodules @@ -2,3 +2,6 @@ path = libc-artifacts url = https://github.com/redox-os/libc-artifacts.git branch = master +[submodule "pkgutils"] + path = pkgutils + url = https://github.com/redox-os/pkgutils.git diff --git a/pkgutils b/pkgutils new file mode 160000 index 00000000..4cf2e9d2 --- /dev/null +++ b/pkgutils @@ -0,0 +1 @@ +Subproject commit 4cf2e9d216721282a8f2bb82c031ee90ede878f4 From 608565652687e3d3f7bb6b76da96011cd1fa9ff4 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Mon, 24 Apr 2017 21:19:01 -0700 Subject: [PATCH 0087/3180] Have setup.py download pkgutils --- setup.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/setup.sh b/setup.sh index 3396cacf..62aa36f5 100755 --- a/setup.sh +++ b/setup.sh @@ -4,6 +4,9 @@ set -e echo "Downloading latest libc-artifacts" git submodule update --init --remote libc-artifacts +echo "Downloading latest pkgutils" +git submodule update --init --remote pkgutils + echo "Defaulting to rust nightly" rustup override set nightly echo "Update rust nightly" From cad99ecff5a382d456ff81511f99a7f5ade9e1b2 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Mon, 24 Apr 2017 21:40:12 -0700 Subject: [PATCH 0088/3180] Use "pkg create" to build package --- cook.sh | 4 +--- setup.sh | 6 ++++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/cook.sh b/cook.sh index 5c0ac291..36549d99 100755 --- a/cook.sh +++ b/cook.sh @@ -195,9 +195,7 @@ function op { rm -rfv stage ;; tar) - pushd stage > /dev/null - tar cfv ../stage.tar . - popd > /dev/null + $ROOT/pkgutils/target/release/pkg create stage ;; untar) rm -rfv stage.tar diff --git a/setup.sh b/setup.sh index 62aa36f5..795627d9 100755 --- a/setup.sh +++ b/setup.sh @@ -24,4 +24,10 @@ then cargo install -f xargo fi +echo "Building pkgutils" +pushd pkgutils +# TODO Change pkgutils to not hard code TARGET +TARGET=x86_64-unknown-redox cargo build --release +popd + echo "cook.sh is ready to use" From a092814806e4ab9afe022820d59d692e9f54b7e2 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Tue, 25 Apr 2017 11:27:53 -0700 Subject: [PATCH 0089/3180] Create package metadata file --- cook.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cook.sh b/cook.sh index 36549d99..b5df2c45 100755 --- a/cook.sh +++ b/cook.sh @@ -195,10 +195,14 @@ function op { rm -rfv stage ;; tar) + mkdir -p stage/etc/pkg.d + echo "name = \"$1\"" > "stage/etc/pkg.d/$1.toml" + echo "version = \"$(op $1 version)\"" >> "stage/etc/pkg.d/$1.toml" + echo "target = \"$TARGET\"" >> "stage/etc/pkg.d/$1.toml" $ROOT/pkgutils/target/release/pkg create stage ;; untar) - rm -rfv stage.tar + rm -rfv stage.tar stage.sig ;; publish) mkdir -p "$REPO" From 3be88e16c6a080781322d25f6d28d60def681ca7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 25 Apr 2017 13:31:31 -0600 Subject: [PATCH 0090/3180] Remove tar recipe, as it is part of extrautils --- recipes/tar/recipe.sh | 1 - 1 file changed, 1 deletion(-) delete mode 100644 recipes/tar/recipe.sh diff --git a/recipes/tar/recipe.sh b/recipes/tar/recipe.sh deleted file mode 100644 index fc2aa80d..00000000 --- a/recipes/tar/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://github.com/redox-os/tar-rs.git From 207c3cb3c55b7d3da1d774baf3fd1eddf636d548 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 25 Apr 2017 19:55:24 -0600 Subject: [PATCH 0091/3180] Build manifest and signature into repo --- .gitignore | 2 ++ cook.sh | 15 +++++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 94e928d6..20998dbb 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,6 @@ repo source source.tar stage +stage.sig stage.tar +stage.toml diff --git a/cook.sh b/cook.sh index b5df2c45..bc1d74eb 100755 --- a/cook.sh +++ b/cook.sh @@ -195,21 +195,24 @@ function op { rm -rfv stage ;; tar) - mkdir -p stage/etc/pkg.d - echo "name = \"$1\"" > "stage/etc/pkg.d/$1.toml" - echo "version = \"$(op $1 version)\"" >> "stage/etc/pkg.d/$1.toml" - echo "target = \"$TARGET\"" >> "stage/etc/pkg.d/$1.toml" + echo "name = \"$1\"" > "stage.toml" + echo "version = \"$(op $1 version)\"" >> "stage.toml" + echo "target = \"$TARGET\"" >> "stage.toml" + mkdir -p stage/pkg + cp -v stage.toml "stage/pkg/$1.toml" $ROOT/pkgutils/target/release/pkg create stage ;; untar) - rm -rfv stage.tar stage.sig + rm -rfv stage.tar stage.sig stage.toml ;; publish) mkdir -p "$REPO" cp -v stage.tar "$REPO/$1.tar" + cp -v stage.sig "$REPO/$1.sig" + cp -v stage.toml "$REPO/$1.toml" ;; unpublish) - rm -rfv "$REPO/$1.tar" + rm -rfv "$REPO/$1.tar" "$REPO/$1.sig" "$REPO/$1.toml" ;; *) usage $1 From 282bba2655d8c4d608c78d6271f1ed89c4bf3385 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 7 May 2017 15:47:42 -0600 Subject: [PATCH 0092/3180] Add method to create summary toml --- all.sh | 8 -------- cook.sh | 13 ++++++++++++- update-packages.sh | 2 ++ 3 files changed, 14 insertions(+), 9 deletions(-) delete mode 100755 all.sh diff --git a/all.sh b/all.sh deleted file mode 100755 index 098cb893..00000000 --- a/all.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -set -e - -for recipe in `ls -1 recipes` -do - ./cook.sh $recipe $* -done diff --git a/cook.sh b/cook.sh index bc1d74eb..2577487c 100755 --- a/cook.sh +++ b/cook.sh @@ -222,7 +222,18 @@ function op { if [ -n "$1" ] then - if [ -d "$ROOT/recipes/$1" ] + if [ "$1" = "repo" ] + then + echo -e "\033[01;38;5;215mcook - repo\033[0m" >&2 + + echo "[packages]" > "$REPO.toml" + for toml in "$REPO/"*".toml" + do + package="$(basename "$toml" .toml)" + version="$(grep version "$toml" | cut -d '=' -f2-)" + echo "$package =$version" >> "$REPO.toml" + done + elif [ -d "$ROOT/recipes/$1" ] then cd "$ROOT/recipes/$1" source recipe.sh diff --git a/update-packages.sh b/update-packages.sh index a5b8e225..0109dd23 100755 --- a/update-packages.sh +++ b/update-packages.sh @@ -36,3 +36,5 @@ for recipe in $publish do ./cook.sh $recipe publish done + +./cook.sh repo From 6188fc35e335fc934b1ba6a914372ba0b0b263ee Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 7 May 2017 15:50:41 -0600 Subject: [PATCH 0093/3180] Add cook quiet to cook repo --- cook.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cook.sh b/cook.sh index 2577487c..7fbc2ae8 100755 --- a/cook.sh +++ b/cook.sh @@ -224,7 +224,10 @@ if [ -n "$1" ] then if [ "$1" = "repo" ] then - echo -e "\033[01;38;5;215mcook - repo\033[0m" >&2 + if [ ! "$COOK_QUIET" = "1" ] + then + echo -e "\033[01;38;5;215mcook - repo\033[0m" >&2 + fi echo "[packages]" > "$REPO.toml" for toml in "$REPO/"*".toml" From 08660332612d7ebd1e40fb13d48fd51ad83cfd46 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 7 May 2017 15:56:31 -0600 Subject: [PATCH 0094/3180] Add orbterm --- recipes/orbterm/recipe.sh | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 recipes/orbterm/recipe.sh diff --git a/recipes/orbterm/recipe.sh b/recipes/orbterm/recipe.sh new file mode 100644 index 00000000..7b0c62a2 --- /dev/null +++ b/recipes/orbterm/recipe.sh @@ -0,0 +1,2 @@ +GIT=https://github.com/redox-os/orbterm.git +BINDIR=/ui/bin From 4a18e61514133017e31d67d31931b1bee621f0c2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 7 May 2017 16:11:21 -0600 Subject: [PATCH 0095/3180] Move repo.toml --- cook.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/cook.sh b/cook.sh index 7fbc2ae8..ddc4fbaa 100755 --- a/cook.sh +++ b/cook.sh @@ -229,12 +229,15 @@ then echo -e "\033[01;38;5;215mcook - repo\033[0m" >&2 fi - echo "[packages]" > "$REPO.toml" + echo "[packages]" > "$REPO/repo.toml" for toml in "$REPO/"*".toml" do package="$(basename "$toml" .toml)" - version="$(grep version "$toml" | cut -d '=' -f2-)" - echo "$package =$version" >> "$REPO.toml" + if [ "$package" != "repo" ] + then + version="$(grep version "$toml" | cut -d '=' -f2-)" + echo "$package =$version" >> "$REPO/repo.toml" + fi done elif [ -d "$ROOT/recipes/$1" ] then From 70170d29142a539d6579c68d2363027f686ca3c5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 9 May 2017 21:16:02 -0600 Subject: [PATCH 0096/3180] Add version to drivers, remove /sbin staging --- pkgutils | 2 +- recipes/drivers/recipe.sh | 6 +++++- recipes/orbital/recipe.sh | 1 - 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/pkgutils b/pkgutils index 4cf2e9d2..b9c10c98 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit 4cf2e9d216721282a8f2bb82c031ee90ede878f4 +Subproject commit b9c10c980e1724270b7e90d3c2d4999c398814b8 diff --git a/recipes/drivers/recipe.sh b/recipes/drivers/recipe.sh index c4648eba..1a640006 100644 --- a/recipes/drivers/recipe.sh +++ b/recipes/drivers/recipe.sh @@ -1,6 +1,10 @@ GIT=https://github.com/redox-os/drivers CARGOFLAGS=--all -BINDIR="/sbin" + +function recipe_version { + echo "0.1.0" + return 1 +} function recipe_update { cp ../Cargo.toml ./ diff --git a/recipes/orbital/recipe.sh b/recipes/orbital/recipe.sh index d823bef7..be4992a3 100644 --- a/recipes/orbital/recipe.sh +++ b/recipes/orbital/recipe.sh @@ -1,2 +1 @@ GIT=https://github.com/redox-os/orbital.git -BINDIR="/sbin" From bacdbc0f304a53aecd149c430b6753d19ab1873a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 9 May 2017 21:45:03 -0600 Subject: [PATCH 0097/3180] Add more recipes --- recipes/drivers/recipe.sh | 2 +- recipes/netstack/recipe.sh | 1 + recipes/ptyd/recipe.sh | 1 + recipes/randd/recipe.sh | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 recipes/netstack/recipe.sh create mode 100644 recipes/ptyd/recipe.sh create mode 100644 recipes/randd/recipe.sh diff --git a/recipes/drivers/recipe.sh b/recipes/drivers/recipe.sh index 1a640006..b4314276 100644 --- a/recipes/drivers/recipe.sh +++ b/recipes/drivers/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/redox-os/drivers +GIT=https://github.com/redox-os/drivers.git CARGOFLAGS=--all function recipe_version { diff --git a/recipes/netstack/recipe.sh b/recipes/netstack/recipe.sh new file mode 100644 index 00000000..190f9487 --- /dev/null +++ b/recipes/netstack/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/netstack.git diff --git a/recipes/ptyd/recipe.sh b/recipes/ptyd/recipe.sh new file mode 100644 index 00000000..a3c336ef --- /dev/null +++ b/recipes/ptyd/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/ptyd.git diff --git a/recipes/randd/recipe.sh b/recipes/randd/recipe.sh new file mode 100644 index 00000000..29f1ef75 --- /dev/null +++ b/recipes/randd/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/randd.git From b3c50f1aa138827a75118d5531dd549314637ede Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 10 May 2017 19:34:16 -0600 Subject: [PATCH 0098/3180] Add contain --- recipes/contain/recipe.sh | 1 + 1 file changed, 1 insertion(+) create mode 100644 recipes/contain/recipe.sh diff --git a/recipes/contain/recipe.sh b/recipes/contain/recipe.sh new file mode 100644 index 00000000..60d7e75d --- /dev/null +++ b/recipes/contain/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/contain.git From 06b260967e1af61ad4b1336d4b5090618d2dea1b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 10 May 2017 19:41:30 -0600 Subject: [PATCH 0099/3180] Add RedoxFS --- recipes/redoxfs/recipe.sh | 1 + 1 file changed, 1 insertion(+) create mode 100644 recipes/redoxfs/recipe.sh diff --git a/recipes/redoxfs/recipe.sh b/recipes/redoxfs/recipe.sh new file mode 100644 index 00000000..9b8b0406 --- /dev/null +++ b/recipes/redoxfs/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/redoxfs.git From 0506e3602e7e59de94a0e6c200d9aef82fe8e82c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 10 May 2017 19:48:00 -0600 Subject: [PATCH 0100/3180] Add installer --- recipes/installer/recipe.sh | 1 + 1 file changed, 1 insertion(+) create mode 100644 recipes/installer/recipe.sh diff --git a/recipes/installer/recipe.sh b/recipes/installer/recipe.sh new file mode 100644 index 00000000..398e4f02 --- /dev/null +++ b/recipes/installer/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/installer.git From 1fb6beca6361c2642b8829b9ddf922299c1984d6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 10 May 2017 21:50:41 -0600 Subject: [PATCH 0101/3180] Stage pcid.toml --- recipes/drivers/Cargo.toml | 14 -------------- recipes/drivers/recipe.sh | 7 ++++--- 2 files changed, 4 insertions(+), 17 deletions(-) delete mode 100644 recipes/drivers/Cargo.toml diff --git a/recipes/drivers/Cargo.toml b/recipes/drivers/Cargo.toml deleted file mode 100644 index 4b13eaf7..00000000 --- a/recipes/drivers/Cargo.toml +++ /dev/null @@ -1,14 +0,0 @@ -[workspace] -members = [ - "ahcid", - "alxd", - "bgad", - "e1000d", - "nvmed", - "pcid", - "ps2d", - "rtl8168d", - "vboxd", - "vesad", - "xhcid" -] diff --git a/recipes/drivers/recipe.sh b/recipes/drivers/recipe.sh index b4314276..cdbba51c 100644 --- a/recipes/drivers/recipe.sh +++ b/recipes/drivers/recipe.sh @@ -2,10 +2,11 @@ GIT=https://github.com/redox-os/drivers.git CARGOFLAGS=--all function recipe_version { - echo "0.1.0" + echo "0.1.1" return 1 } -function recipe_update { - cp ../Cargo.toml ./ +function recipe_stage { + mkdir -pv "$1/etc" + cp -v pcid.toml "$1/etc/pcid.toml" } From 714bc32f1712c31a840aba4ceed30d37dc1e8eea Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Wed, 10 May 2017 21:20:13 -0700 Subject: [PATCH 0102/3180] Do not copy .cargo and libc-artifacts Cargo searches parent directories for .cargo, so this is unnecessary. --- cook.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cook.sh b/cook.sh index ddc4fbaa..0c45d336 100755 --- a/cook.sh +++ b/cook.sh @@ -135,7 +135,7 @@ function op { fi if [ "$skip" -eq "0" ] then - cp -r "$ROOT/Xargo.toml" "$ROOT/.cargo" "$ROOT/libc-artifacts" . + cp -r "$ROOT/Xargo.toml" . xargo build --target "$TARGET" --release $CARGOFLAGS fi popd > /dev/null @@ -149,7 +149,7 @@ function op { fi if [ "$skip" -eq "0" ] then - cp -r "$ROOT/Xargo.toml" "$ROOT/.cargo" "$ROOT/libc-artifacts" . + cp -r "$ROOT/Xargo.toml" . xargo test --no-run --target "$TARGET" --release $CARGOFLAGS fi popd > /dev/null From 925eaba3a042a9d04817bbb0af31612c7b0f3d3b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 11 May 2017 20:29:07 -0600 Subject: [PATCH 0103/3180] Move update-packages into repo command, use source timestamps --- config.sh | 9 ++++++++ cook.sh | 31 +++---------------------- repo.sh | 57 ++++++++++++++++++++++++++++++++++++++++++++++ update-packages.sh | 40 -------------------------------- 4 files changed, 69 insertions(+), 68 deletions(-) create mode 100755 config.sh create mode 100755 repo.sh delete mode 100755 update-packages.sh diff --git a/config.sh b/config.sh new file mode 100755 index 00000000..bab886f9 --- /dev/null +++ b/config.sh @@ -0,0 +1,9 @@ +#!/bin/bash -e + +# Configuration +export TARGET=x86_64-unknown-redox + +# Automatic variables +ROOT="$(cd `dirname "$0"` && pwd)" +REPO="$ROOT/repo/$TARGET" +export CC="$ROOT/libc-artifacts/gcc.sh" diff --git a/cook.sh b/cook.sh index ddc4fbaa..f6d5f80b 100755 --- a/cook.sh +++ b/cook.sh @@ -1,19 +1,11 @@ -#!/bin/bash +#!/bin/bash -e -# Configuration -export TARGET=x86_64-unknown-redox - -# Automatic variables -ROOT="$(cd `dirname "$0"` && pwd)" -REPO="$ROOT/repo/$TARGET" -export CC="$ROOT/libc-artifacts/gcc.sh" +source config.sh # Variables to be overriden by recipes export BINDIR=bin export CARGOFLAGS= -set -e - function usage { echo "cook.sh $1 " >&2 echo " dist" >&2 @@ -222,24 +214,7 @@ function op { if [ -n "$1" ] then - if [ "$1" = "repo" ] - then - if [ ! "$COOK_QUIET" = "1" ] - then - echo -e "\033[01;38;5;215mcook - repo\033[0m" >&2 - fi - - echo "[packages]" > "$REPO/repo.toml" - for toml in "$REPO/"*".toml" - do - package="$(basename "$toml" .toml)" - if [ "$package" != "repo" ] - then - version="$(grep version "$toml" | cut -d '=' -f2-)" - echo "$package =$version" >> "$REPO/repo.toml" - fi - done - elif [ -d "$ROOT/recipes/$1" ] + if [ -d "$ROOT/recipes/$1" ] then cd "$ROOT/recipes/$1" source recipe.sh diff --git a/repo.sh b/repo.sh new file mode 100755 index 00000000..0c94fd7b --- /dev/null +++ b/repo.sh @@ -0,0 +1,57 @@ +#!/bin/bash -e + +source config.sh + +if [ $# = 0 ] +then + recipes="$(ls -1 recipes)" +else + recipes="$@" +fi + +for recipe in $recipes +do + if [ ! -d "recipes/$recipe/source" ] + then + echo -e "\033[01;38;5;215mrepo - fetching and updating $recipe\033[0m" >&2 + ./cook.sh "$recipe" fetch + fi + + if [ ! -f "recipes/$recipe/stage.tar" ] + then + echo -e "\033[01;38;5;215mrepo - building $recipe\033[0m" >&2 + ./cook.sh $recipe update build stage tar + else + TIME_SOURCE="$(find recipes/$recipe/source -printf "%Ts\n" | sort -nr | head -n 1)" + TIME_STAGE="$(stat -c "%Y" recipes/$recipe/stage.tar)" + if [ "$TIME_SOURCE" -ge "$TIME_STAGE" ] + then + echo -e "\033[01;38;5;215mrepo - rebuilding $recipe\033[0m" >&2 + ./cook.sh "$recipe" untar unstage update build stage tar + else + echo -e "\033[01;38;5;215mrepo - $recipe up to date\033[0m" >&2 + fi + fi +done + +for recipe in $recipes +do + if [ "recipes/$recipe/stage.tar" -nt "$REPO/$recipe.tar" ] + then + echo -e "\033[01;38;5;215mrepo - publishing $recipe\033[0m" >&2 + ./cook.sh $recipe publish + fi +done + +echo -e "\033[01;38;5;215mrepo - generating repo.toml\033[0m" >&2 + +echo "[packages]" > "$REPO/repo.toml" +for toml in "$REPO/"*".toml" +do + package="$(basename "$toml" .toml)" + if [ "$package" != "repo" ] + then + version="$(grep version "$toml" | cut -d '=' -f2-)" + echo "$package =$version" >> "$REPO/repo.toml" + fi +done diff --git a/update-packages.sh b/update-packages.sh deleted file mode 100755 index 0109dd23..00000000 --- a/update-packages.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -set -e - -if [ $# = 0 ] -then - recipes=$(ls -1 recipes) -else - recipes=$@ -fi - -publish="" -for recipe in $recipes -do - if [ ! -f "recipes/$recipe/stage.tar" ] - then - echo "$recipe: building..." - ./cook.sh $recipe dist - publish="${publish} $recipe" - else - oldver=$(COOK_QUIET=1 ./cook.sh $recipe gitversion) - ./cook.sh $recipe fetch - newver=$(COOK_QUIET=1 ./cook.sh $recipe gitversion) - if [ "$oldver" = "$newver" ] - then - echo "$recipe: up to date (version $newver)." - else - echo "$recipe: updating $oldver -> $newver..." - ./cook.sh $recipe unstage untar dist - publish="${publish} $recipe" - fi - fi -done - -for recipe in $publish -do - ./cook.sh $recipe publish -done - -./cook.sh repo From 362af48613c370ec10cedda4bf97df0b9323ad95 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 11 May 2017 20:53:21 -0600 Subject: [PATCH 0104/3180] Ignore git directory, move fetch logic into seperate file --- fetch.sh | 16 ++++++++++++++++ repo.sh | 8 +------- 2 files changed, 17 insertions(+), 7 deletions(-) create mode 100755 fetch.sh diff --git a/fetch.sh b/fetch.sh new file mode 100755 index 00000000..a1f11109 --- /dev/null +++ b/fetch.sh @@ -0,0 +1,16 @@ +#!/bin/bash -e + +source config.sh + +if [ $# = 0 ] +then + recipes="$(ls -1 recipes)" +else + recipes="$@" +fi + +for recipe in $recipes +do + echo -e "\033[01;38;5;215mfetch - fetching $recipe\033[0m" >&2 + ./cook.sh "$recipe" fetch +done diff --git a/repo.sh b/repo.sh index 0c94fd7b..5c042fdf 100755 --- a/repo.sh +++ b/repo.sh @@ -11,18 +11,12 @@ fi for recipe in $recipes do - if [ ! -d "recipes/$recipe/source" ] - then - echo -e "\033[01;38;5;215mrepo - fetching and updating $recipe\033[0m" >&2 - ./cook.sh "$recipe" fetch - fi - if [ ! -f "recipes/$recipe/stage.tar" ] then echo -e "\033[01;38;5;215mrepo - building $recipe\033[0m" >&2 ./cook.sh $recipe update build stage tar else - TIME_SOURCE="$(find recipes/$recipe/source -printf "%Ts\n" | sort -nr | head -n 1)" + TIME_SOURCE="$(find recipes/$recipe/source -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" TIME_STAGE="$(stat -c "%Y" recipes/$recipe/stage.tar)" if [ "$TIME_SOURCE" -ge "$TIME_STAGE" ] then From b3ad568eda0530ae94964d9e3210236478334414 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 11 May 2017 20:54:12 -0600 Subject: [PATCH 0105/3180] Keep fetch logic if source does not exist --- repo.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/repo.sh b/repo.sh index 5c042fdf..27493766 100755 --- a/repo.sh +++ b/repo.sh @@ -11,6 +11,12 @@ fi for recipe in $recipes do + if [ ! -d "recipes/$recipe/source" ] + then + echo -e "\033[01;38;5;215mrepo - fetching $recipe\033[0m" >&2 + ./cook.sh "$recipe" fetch + fi + if [ ! -f "recipes/$recipe/stage.tar" ] then echo -e "\033[01;38;5;215mrepo - building $recipe\033[0m" >&2 From a48475e408eb5d291bbd358379d5903214b55a06 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 12 May 2017 20:26:09 -0600 Subject: [PATCH 0106/3180] Improve rebuild logic --- cook.sh | 22 ++++++++++++---------- repo.sh | 32 +++++++++++++++++++++++--------- 2 files changed, 35 insertions(+), 19 deletions(-) diff --git a/cook.sh b/cook.sh index 5956919d..c2b2e254 100755 --- a/cook.sh +++ b/cook.sh @@ -14,6 +14,8 @@ function usage { echo " clean" >&2 echo " fetch" >&2 echo " unfetch" >&2 + echo " prepare" >&2 + echo " unprepare" >&2 echo " publish" >&2 echo " unpublish" >&2 echo " stage" >&2 @@ -32,7 +34,7 @@ function op { case "$2" in dist) - op $1 fetch + op $1 prepare op $1 update op $1 build op $1 stage @@ -41,7 +43,7 @@ function op { distclean) op $1 untar op $1 unstage - op $1 unfetch + op $1 unprepare ;; fetch) if [ -n "$TAR" ] @@ -56,9 +58,6 @@ function op { mkdir source tar xvf source.tar -C source --strip-components 1 fi - - rm -rf build - cp -r source build elif [ -n "$GIT" ] then if [ ! -d source ] @@ -71,19 +70,22 @@ function op { git submodule sync git submodule update --init --recursive popd > /dev/null - - rm -rf build - cp -r source build fi - ;; unfetch) - rm -rfv build source + rm -rfv source if [ -n "$TAR" ] then rm -f source.tar fi ;; + prepare) + rm -rf build + cp -r source build + ;; + unprepare) + rm -rf build + ;; version) pushd build > /dev/null skip="0" diff --git a/repo.sh b/repo.sh index 27493766..c57c7189 100755 --- a/repo.sh +++ b/repo.sh @@ -17,19 +17,33 @@ do ./cook.sh "$recipe" fetch fi - if [ ! -f "recipes/$recipe/stage.tar" ] + if [ ! -d "recipes/$recipe/build" ] then - echo -e "\033[01;38;5;215mrepo - building $recipe\033[0m" >&2 - ./cook.sh $recipe update build stage tar + echo -e "\033[01;38;5;155mrepo - preparing $recipe\033[0m" >&2 + ./cook.sh "$recipe" prepare else TIME_SOURCE="$(find recipes/$recipe/source -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" - TIME_STAGE="$(stat -c "%Y" recipes/$recipe/stage.tar)" - if [ "$TIME_SOURCE" -ge "$TIME_STAGE" ] + TIME_BUILD="$(find recipes/$recipe/build -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" + if [ "$TIME_SOURCE" -gt "$TIME_BUILD" ] then - echo -e "\033[01;38;5;215mrepo - rebuilding $recipe\033[0m" >&2 + echo -e "\033[01;38;5;155mrepo - repreparing $recipe\033[0m" >&2 + ./cook.sh "$recipe" unprepare prepare + fi + fi + + if [ ! -f "recipes/$recipe/stage.tar" ] + then + echo -e "\033[01;38;5;155mrepo - building $recipe\033[0m" >&2 + ./cook.sh "$recipe" update build stage tar + else + TIME_BUILD="$(find recipes/$recipe/build -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" + TIME_STAGE="$(stat -c "%Y" recipes/$recipe/stage.tar)" + if [ "$TIME_BUILD" -gt "$TIME_STAGE" ] + then + echo -e "\033[01;38;5;155mrepo - rebuilding $recipe\033[0m" >&2 ./cook.sh "$recipe" untar unstage update build stage tar else - echo -e "\033[01;38;5;215mrepo - $recipe up to date\033[0m" >&2 + echo -e "\033[01;38;5;155mrepo - $recipe up to date\033[0m" >&2 fi fi done @@ -38,12 +52,12 @@ for recipe in $recipes do if [ "recipes/$recipe/stage.tar" -nt "$REPO/$recipe.tar" ] then - echo -e "\033[01;38;5;215mrepo - publishing $recipe\033[0m" >&2 + echo -e "\033[01;38;5;155mrepo - publishing $recipe\033[0m" >&2 ./cook.sh $recipe publish fi done -echo -e "\033[01;38;5;215mrepo - generating repo.toml\033[0m" >&2 +echo -e "\033[01;38;5;155mrepo - generating repo.toml\033[0m" >&2 echo "[packages]" > "$REPO/repo.toml" for toml in "$REPO/"*".toml" From b91b2762d6360da65703631f4b733ea38c5b47e5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 12 May 2017 20:28:43 -0600 Subject: [PATCH 0107/3180] Update pkgutils, remove print from fetch.sh --- fetch.sh | 1 - pkgutils | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/fetch.sh b/fetch.sh index a1f11109..ca890678 100755 --- a/fetch.sh +++ b/fetch.sh @@ -11,6 +11,5 @@ fi for recipe in $recipes do - echo -e "\033[01;38;5;215mfetch - fetching $recipe\033[0m" >&2 ./cook.sh "$recipe" fetch done diff --git a/pkgutils b/pkgutils index b9c10c98..e8b316a8 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit b9c10c980e1724270b7e90d3c2d4999c398814b8 +Subproject commit e8b316a8d52437b6f28cb3c68c61895403337018 From c1cc8afadfc3336aea2cab641cd0c9663670f0b9 Mon Sep 17 00:00:00 2001 From: Iori Yoneji Date: Fri, 2 Jun 2017 09:15:48 +0000 Subject: [PATCH 0108/3180] change shebang of shell script to make it work on both of Ubuntu or FreeBSD --- cook.sh | 2 +- setup.sh | 2 +- update-packages.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cook.sh b/cook.sh index ddc4fbaa..646ae2d6 100755 --- a/cook.sh +++ b/cook.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Configuration export TARGET=x86_64-unknown-redox diff --git a/setup.sh b/setup.sh index 795627d9..db759260 100755 --- a/setup.sh +++ b/setup.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -e echo "Downloading latest libc-artifacts" diff --git a/update-packages.sh b/update-packages.sh index 0109dd23..2374038d 100755 --- a/update-packages.sh +++ b/update-packages.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -e From f366a5dc3d8e3a8affbd438ad46a38cf905aa56d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 Jun 2017 21:03:21 -0600 Subject: [PATCH 0109/3180] Disable test build until libterm is fixed --- Xargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Xargo.toml b/Xargo.toml index e816fa4f..4bb0924c 100644 --- a/Xargo.toml +++ b/Xargo.toml @@ -1,6 +1,6 @@ [dependencies.std] features = ["panic_unwind"] -[dependencies.test] -stage = 1 +#[dependencies.test] +#stage = 1 From 7ee086d593e590d92e9fd1abed56fa57016a214e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 3 Jun 2017 19:23:58 -0600 Subject: [PATCH 0110/3180] Update pkgutils --- pkgutils | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgutils b/pkgutils index e8b316a8..de029601 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit e8b316a8d52437b6f28cb3c68c61895403337018 +Subproject commit de029601fdc1ec6368afa7fb6eeb33b9333beac9 From d4b058bddabdd22331d84c6dfc5a03113385950f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 3 Jun 2017 19:25:14 -0600 Subject: [PATCH 0111/3180] Use cargo to run pkgutils --- cook.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cook.sh b/cook.sh index c2b2e254..d1799f00 100755 --- a/cook.sh +++ b/cook.sh @@ -194,7 +194,7 @@ function op { echo "target = \"$TARGET\"" >> "stage.toml" mkdir -p stage/pkg cp -v stage.toml "stage/pkg/$1.toml" - $ROOT/pkgutils/target/release/pkg create stage + cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- create stage ;; untar) rm -rfv stage.tar stage.sig stage.toml From c4b0a276b269616a2609409565ca03f33e442382 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 3 Jun 2017 19:27:00 -0600 Subject: [PATCH 0112/3180] Remove pkgutils from setup.sh --- cook.sh | 2 +- setup.sh | 6 ------ 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/cook.sh b/cook.sh index d1799f00..7de389fb 100755 --- a/cook.sh +++ b/cook.sh @@ -194,7 +194,7 @@ function op { echo "target = \"$TARGET\"" >> "stage.toml" mkdir -p stage/pkg cp -v stage.toml "stage/pkg/$1.toml" - cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- create stage + TARGET=x86_64-unknown-redox cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- create stage ;; untar) rm -rfv stage.tar stage.sig stage.toml diff --git a/setup.sh b/setup.sh index 795627d9..62aa36f5 100755 --- a/setup.sh +++ b/setup.sh @@ -24,10 +24,4 @@ then cargo install -f xargo fi -echo "Building pkgutils" -pushd pkgutils -# TODO Change pkgutils to not hard code TARGET -TARGET=x86_64-unknown-redox cargo build --release -popd - echo "cook.sh is ready to use" From c88984c5cfc09f5fd2021f849b1150b0bd3177d8 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Sat, 3 Jun 2017 20:12:48 -0700 Subject: [PATCH 0113/3180] Recipes for gcc, binutils, newlib --- cook.sh | 7 +++- recipes/gcc/recipe.sh | 60 ++++++++++++++++++++++++++++++++++ recipes/gnu-binutils/recipe.sh | 50 ++++++++++++++++++++++++++++ recipes/newlib/recipe.sh | 59 +++++++++++++++++++++++++++++++++ 4 files changed, 175 insertions(+), 1 deletion(-) create mode 100644 recipes/gcc/recipe.sh create mode 100644 recipes/gnu-binutils/recipe.sh create mode 100644 recipes/newlib/recipe.sh diff --git a/cook.sh b/cook.sh index 7de389fb..71329615 100755 --- a/cook.sh +++ b/cook.sh @@ -62,7 +62,12 @@ function op { then if [ ! -d source ] then - git clone --recursive "$GIT" source + if [ -n "$BRANCH" ] + then + git clone --recursive "$GIT" -b "$BRANCH" source + else + git clone --recursive "$GIT" source + fi fi pushd source > /dev/null diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh new file mode 100644 index 00000000..7554b5cd --- /dev/null +++ b/recipes/gcc/recipe.sh @@ -0,0 +1,60 @@ +GIT=https://github.com/redox-os/gcc.git +BRANCH=redox + +HOST=x86_64-elf-redox +export AR="${HOST}-ar" +export AS="${HOST}-as" +export CC="${HOST}-gcc" +export CXX="${HOST}-g++" +export LD="${HOST}-ld" +export NM="${HOST}-nm" +export OBJCOPY="${HOST}-objcopy" +export OBJDUMP="${HOST}-objdump" +export RANLIB="${HOST}-ranlib" +export READELF="${HOST}-readelf" +export STRIP="${HOST}-strip" + +function recipe_version { + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + return 1 +} + +function recipe_update { + echo "skipping update" + return 1 +} + +function recipe_build { + ./contrib/download_prerequisites + cp config.sub gmp/config.sub + cp config.sub isl/config.sub + cp config.sub mpfr/config.sub + cp -f config.sub mpc/config.sub + pushd libstdc++-v3 + autoconf2.64 + popd + + mkdir build + cd build + ../configure --host=${HOST} --target=${HOST} --prefix=/ --enable-static --disable-shared --disable-dlopen --disable-nls --enable-languages=c --without-headers + make all-gcc all-target-libgcc + return 1 +} + +function recipe_test { + echo "skipping test" + return 1 +} + +function recipe_clean { + cd build + make clean + return 1 +} + +function recipe_stage { + dest="$(realpath $1)" + cd build + make DESTDIR="$dest" install-gcc install-target-libgcc + return 1 +} diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh new file mode 100644 index 00000000..51040bb8 --- /dev/null +++ b/recipes/gnu-binutils/recipe.sh @@ -0,0 +1,50 @@ +GIT=https://github.com/redox-os/binutils-gdb.git + +HOST=x86_64-elf-redox +export AR="${HOST}-ar" +export AS="${HOST}-as" +export CC="${HOST}-gcc" +export CXX="${HOST}-g++" +export LD="${HOST}-ld" +export NM="${HOST}-nm" +export OBJCOPY="${HOST}-objcopy" +export OBJDUMP="${HOST}-objdump" +export RANLIB="${HOST}-ranlib" +export READELF="${HOST}-readelf" +export STRIP="${HOST}-strip" + +function recipe_version { + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + return 1 +} + +function recipe_update { + echo "skipping update" + return 1 +} + +function recipe_build { + mkdir build + cd build + ../configure --host=${HOST} --target=${HOST} --prefix=/ --with-sysroot=/usr/x86_64-elf-redox --disable-gdb --disable-nls --disable-werror + make + return 1 +} + +function recipe_test { + echo "skipping test" + return 1 +} + +function recipe_clean { + cd build + make clean + return 1 +} + +function recipe_stage { + dest="$(realpath $1)" + cd build + make DESTDIR="$dest" install + return 1 +} diff --git a/recipes/newlib/recipe.sh b/recipes/newlib/recipe.sh new file mode 100644 index 00000000..b2aef6c5 --- /dev/null +++ b/recipes/newlib/recipe.sh @@ -0,0 +1,59 @@ +GIT=https://github.com/redox-os/newlib.git +BRANCH=redox + +CC= + +HOST=x86_64-elf-redox + +function recipe_version { + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + return 1 +} + +function recipe_update { + echo "skipping update" + return 1 +} + +function recipe_build { + pushd newlib/libc/sys + aclocal-1.11 -I ../.. + autoconf + automake-1.11 --cygnus Makefile + popd + + pushd newlib/libc/sys/redox + aclocal-1.11 -I ../../.. + autoconf + automake-1.11 --cygnus Makefile + popd + + mkdir build + cd build + + ../configure --target="${HOST}" --prefix=/ + make + + return 1 +} + +function recipe_test { + echo "skipping test" + return 1 +} + +function recipe_clean { + cd build + make clean + return 1 +} + +function recipe_stage { + dest="$(realpath $1)" + cd build + make DESTDIR="$dest" install + cd "$dest" + mv x86_64-elf-redox/* ./ + rmdir x86_64-elf-redox + return 1 +} From 08c8b2fba1947be8a673d3e2fc193e9b466970d1 Mon Sep 17 00:00:00 2001 From: Iori Yoneji Date: Sun, 4 Jun 2017 17:40:37 +0000 Subject: [PATCH 0114/3180] Switch submodule of libc-artifacts to point out to newer commit to be built on FreeBSD --- libc-artifacts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libc-artifacts b/libc-artifacts index ecd2edd8..c26b21e3 160000 --- a/libc-artifacts +++ b/libc-artifacts @@ -1 +1 @@ -Subproject commit ecd2edd8935177cf9f160ae6ec11c22ee3a0a249 +Subproject commit c26b21e3b6716e0af95a985888dbf19ec864b4a9 From 66e7642ce6112cd74f90b222d64f6f71c86eec30 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 Jun 2017 19:13:57 -0600 Subject: [PATCH 0115/3180] Fix -e --- config.sh | 3 ++- cook.sh | 3 ++- fetch.sh | 3 ++- repo.sh | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/config.sh b/config.sh index 1f3bf1fc..4272ccc7 100755 --- a/config.sh +++ b/config.sh @@ -1,4 +1,5 @@ -#!/usr/bin/env bash -e +#!/usr/bin/env bash +set -e # Configuration export TARGET=x86_64-unknown-redox diff --git a/cook.sh b/cook.sh index cab949fc..7495999a 100755 --- a/cook.sh +++ b/cook.sh @@ -1,4 +1,5 @@ -#!/usr/bin/env bash -e +#!/usr/bin/env bash +set -e source config.sh diff --git a/fetch.sh b/fetch.sh index b73edf9f..99b81134 100755 --- a/fetch.sh +++ b/fetch.sh @@ -1,4 +1,5 @@ -#!/usr/bin/env bash -e +#!/usr/bin/env bash +set -e source config.sh diff --git a/repo.sh b/repo.sh index f5bc33fe..4b54c566 100755 --- a/repo.sh +++ b/repo.sh @@ -1,4 +1,5 @@ -#!/usr/bin/env bash -e +#!/usr/bin/env bash +set -e source config.sh From 5f85e466a0357917be911efd7bcc70d1facad450 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 Jun 2017 20:05:24 -0600 Subject: [PATCH 0116/3180] Fix pkgutils build --- cook.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/cook.sh b/cook.sh index 7495999a..2432e9af 100755 --- a/cook.sh +++ b/cook.sh @@ -195,12 +195,20 @@ function op { rm -rfv stage ;; tar) + # Compile pkgutils if needed + if [ ! -f "$ROOT/pkgutils/target/release/pkg" ] + then + pushd "$ROOT/pkgutils/" > /dev/null + TARGET=x86_64-unknown-redox cargo build --release + popd > /dev/null + fi + echo "name = \"$1\"" > "stage.toml" echo "version = \"$(op $1 version)\"" >> "stage.toml" echo "target = \"$TARGET\"" >> "stage.toml" mkdir -p stage/pkg cp -v stage.toml "stage/pkg/$1.toml" - TARGET=x86_64-unknown-redox cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- create stage + "$ROOT/pkgutils/target/release/pkg" create stage ;; untar) rm -rfv stage.tar stage.sig stage.toml From 3e18b7108a5004c81c14d8ccc3124227d3eea06e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 Jun 2017 20:09:42 -0600 Subject: [PATCH 0117/3180] Use cross compiler instead of libc-artifacts --- .cargo/config | 2 +- config.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.cargo/config b/.cargo/config index 2b36cbab..9eae28d0 100644 --- a/.cargo/config +++ b/.cargo/config @@ -1,2 +1,2 @@ [target.x86_64-unknown-redox] -linker = "libc-artifacts/gcc.sh" +linker = "x86_64-elf-redox-gcc" diff --git a/config.sh b/config.sh index 4272ccc7..09d8ae33 100755 --- a/config.sh +++ b/config.sh @@ -7,4 +7,4 @@ export TARGET=x86_64-unknown-redox # Automatic variables ROOT="$(cd `dirname "$0"` && pwd)" REPO="$ROOT/repo/$TARGET" -export CC="$ROOT/libc-artifacts/gcc.sh" +export CC="x86_64-elf-redox-gcc" From 0b2585a5cbbaa33be05ef3699b3585af9a35671e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 Jun 2017 20:15:37 -0600 Subject: [PATCH 0118/3180] Go back to using cargo run --- cook.sh | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/cook.sh b/cook.sh index 2432e9af..7495999a 100755 --- a/cook.sh +++ b/cook.sh @@ -195,20 +195,12 @@ function op { rm -rfv stage ;; tar) - # Compile pkgutils if needed - if [ ! -f "$ROOT/pkgutils/target/release/pkg" ] - then - pushd "$ROOT/pkgutils/" > /dev/null - TARGET=x86_64-unknown-redox cargo build --release - popd > /dev/null - fi - echo "name = \"$1\"" > "stage.toml" echo "version = \"$(op $1 version)\"" >> "stage.toml" echo "target = \"$TARGET\"" >> "stage.toml" mkdir -p stage/pkg cp -v stage.toml "stage/pkg/$1.toml" - "$ROOT/pkgutils/target/release/pkg" create stage + TARGET=x86_64-unknown-redox cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- create stage ;; untar) rm -rfv stage.tar stage.sig stage.toml From 96e276d04cb2c4b23f78fdbb575af2548eb4fcc7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 Jun 2017 20:25:49 -0600 Subject: [PATCH 0119/3180] Fix pkgutils build --- config.sh | 1 - cook.sh | 2 +- recipes/lua/recipe.sh | 4 +++- recipes/newlib/recipe.sh | 2 -- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/config.sh b/config.sh index 09d8ae33..4d3de73a 100755 --- a/config.sh +++ b/config.sh @@ -7,4 +7,3 @@ export TARGET=x86_64-unknown-redox # Automatic variables ROOT="$(cd `dirname "$0"` && pwd)" REPO="$ROOT/repo/$TARGET" -export CC="x86_64-elf-redox-gcc" diff --git a/cook.sh b/cook.sh index 7495999a..0d3122c2 100755 --- a/cook.sh +++ b/cook.sh @@ -200,7 +200,7 @@ function op { echo "target = \"$TARGET\"" >> "stage.toml" mkdir -p stage/pkg cp -v stage.toml "stage/pkg/$1.toml" - TARGET=x86_64-unknown-redox cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- create stage + cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- create stage ;; untar) rm -rfv stage.tar stage.sig stage.toml diff --git a/recipes/lua/recipe.sh b/recipes/lua/recipe.sh index 453c9e04..b1531410 100644 --- a/recipes/lua/recipe.sh +++ b/recipes/lua/recipe.sh @@ -1,6 +1,8 @@ VERSION=5.3.1 TAR=http://www.lua.org/ftp/lua-$VERSION.tar.gz +HOST=x86_64-elf-redox + function recipe_version { echo "$VERSION" return 1 @@ -12,7 +14,7 @@ function recipe_update { } function recipe_build { - make generic CC="$CC -std=gnu99" + make generic CC="${HOST}-gcc -std=gnu99" return 1 } diff --git a/recipes/newlib/recipe.sh b/recipes/newlib/recipe.sh index b2aef6c5..c55d1db4 100644 --- a/recipes/newlib/recipe.sh +++ b/recipes/newlib/recipe.sh @@ -1,8 +1,6 @@ GIT=https://github.com/redox-os/newlib.git BRANCH=redox -CC= - HOST=x86_64-elf-redox function recipe_version { From f39ad7026868a97b3e803f3a72f705235ae033cc Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 5 Jun 2017 09:59:53 -0600 Subject: [PATCH 0120/3180] Go back to libc-artifacts/gcc.sh until x86_64-elf-redox-gcc can be used for Rust --- .cargo/config | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.cargo/config b/.cargo/config index 9eae28d0..f9f6b985 100644 --- a/.cargo/config +++ b/.cargo/config @@ -1,2 +1,3 @@ [target.x86_64-unknown-redox] -linker = "x86_64-elf-redox-gcc" +linker = "libc-artifacts/gcc.sh" +rustflags = [] From 8eda1c2e2565d315ae8b8e3961fc38027cfa0ae0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 5 Jun 2017 20:47:03 -0600 Subject: [PATCH 0121/3180] Revert to overwriting CC in config.sh --- config.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/config.sh b/config.sh index 4d3de73a..4272ccc7 100755 --- a/config.sh +++ b/config.sh @@ -7,3 +7,4 @@ export TARGET=x86_64-unknown-redox # Automatic variables ROOT="$(cd `dirname "$0"` && pwd)" REPO="$ROOT/repo/$TARGET" +export CC="$ROOT/libc-artifacts/gcc.sh" From 8acc25947d49555340ce8bf465955fc2cd4884aa Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 5 Jun 2017 20:53:31 -0600 Subject: [PATCH 0122/3180] Fix pkgutils builds --- cook.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cook.sh b/cook.sh index 0d3122c2..4d4bf983 100755 --- a/cook.sh +++ b/cook.sh @@ -200,7 +200,7 @@ function op { echo "target = \"$TARGET\"" >> "stage.toml" mkdir -p stage/pkg cp -v stage.toml "stage/pkg/$1.toml" - cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- create stage + CC=cc cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- create stage ;; untar) rm -rfv stage.tar stage.sig stage.toml From 38e31db60fefa49630d2243569691cf243fb7da4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 Jun 2017 11:04:20 -0600 Subject: [PATCH 0123/3180] Add clean script --- clean.sh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100755 clean.sh diff --git a/clean.sh b/clean.sh new file mode 100755 index 00000000..f4c2eb61 --- /dev/null +++ b/clean.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +set -e + +source config.sh + +if [ $# = 0 ] +then + recipes="$(ls -1 recipes)" +else + recipes="$@" +fi + +for recipe in $recipes +do + ./cook.sh "$recipe" distclean +done From a6195c65b0e272da1054fce02b54fc3e7c7874db Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 Jun 2017 19:53:59 -0600 Subject: [PATCH 0124/3180] Unset CC, use build directory as intended --- recipes/newlib/recipe.sh | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/recipes/newlib/recipe.sh b/recipes/newlib/recipe.sh index c55d1db4..77aadceb 100644 --- a/recipes/newlib/recipe.sh +++ b/recipes/newlib/recipe.sh @@ -26,11 +26,8 @@ function recipe_build { automake-1.11 --cygnus Makefile popd - mkdir build - cd build - - ../configure --target="${HOST}" --prefix=/ - make + CC= ./configure --target="${HOST}" --prefix=/ + make all return 1 } @@ -41,14 +38,12 @@ function recipe_test { } function recipe_clean { - cd build make clean return 1 } function recipe_stage { dest="$(realpath $1)" - cd build make DESTDIR="$dest" install cd "$dest" mv x86_64-elf-redox/* ./ From fe9e69d273b60a8a05b0152b9623bd152c282625 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 Jun 2017 19:59:59 -0600 Subject: [PATCH 0125/3180] Add dash recipe --- recipes/dash/recipe.sh | 48 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 recipes/dash/recipe.sh diff --git a/recipes/dash/recipe.sh b/recipes/dash/recipe.sh new file mode 100644 index 00000000..459a789f --- /dev/null +++ b/recipes/dash/recipe.sh @@ -0,0 +1,48 @@ +GIT=https://github.com/redox-os/dash.git +BRANCH=redox + +HOST=x86_64-elf-redox +export AR="${HOST}-ar" +export AS="${HOST}-as" +export CC="${HOST}-gcc" +export CXX="${HOST}-g++" +export LD="${HOST}-ld" +export NM="${HOST}-nm" +export OBJCOPY="${HOST}-objcopy" +export OBJDUMP="${HOST}-objdump" +export RANLIB="${HOST}-ranlib" +export READELF="${HOST}-readelf" +export STRIP="${HOST}-strip" + +function recipe_version { + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + return 1 +} + +function recipe_update { + echo "skipping update" + return 1 +} + +function recipe_build { + ./autogen.sh + ./configure --host=${HOST} --prefix=/ + make + return 1 +} + +function recipe_test { + echo "skipping test" + return 1 +} + +function recipe_clean { + make clean + return 1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + return 1 +} From c8a927f64364c78d799ff7bcbc64d7f23ad7c35d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 Jun 2017 20:24:03 -0600 Subject: [PATCH 0126/3180] Add GNU make --- recipes/gnu-make/make.patch | 81 +++++++++++++++++++++++++++++++++++++ recipes/gnu-make/recipe.sh | 49 ++++++++++++++++++++++ 2 files changed, 130 insertions(+) create mode 100644 recipes/gnu-make/make.patch create mode 100644 recipes/gnu-make/recipe.sh diff --git a/recipes/gnu-make/make.patch b/recipes/gnu-make/make.patch new file mode 100644 index 00000000..6ead9108 --- /dev/null +++ b/recipes/gnu-make/make.patch @@ -0,0 +1,81 @@ +diff -ru make-4.2/config/config.sub make-4.2-new/config/config.sub +--- make-4.2/config/config.sub 2016-05-22 06:27:16.000000000 -0700 ++++ make-4.2-new/config/config.sub 2017-05-09 13:36:20.519908366 -0700 +@@ -1376,7 +1376,7 @@ + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ +- | -sym* | -kopensolaris* | -plan9* \ ++ | -sym* | -kopensolaris* | -plan9* | -redox* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ +diff -ru make-4.2/glob/glob.c make-4.2-new/glob/glob.c +--- make-4.2/glob/glob.c 2013-10-20 10:14:38.000000000 -0700 ++++ make-4.2-new/glob/glob.c 2017-05-09 14:14:14.319260425 -0700 +@@ -625,9 +625,9 @@ + #else + const char *home_dir = getenv ("HOME"); + #endif +-# ifdef _AMIGA ++# if 1 + if (home_dir == NULL || home_dir[0] == '\0') +- home_dir = "SYS:"; ++ home_dir = "/home/user"; + # else + # ifdef WINDOWS32 + if (home_dir == NULL || home_dir[0] == '\0') +@@ -717,7 +717,7 @@ + dirname = newp; + } + } +-# if !defined _AMIGA && !defined WINDOWS32 && !defined VMS ++# if 0 + else + { + char *end_name = strchr (dirname, '/'); +diff -ru make-4.2/job.c make-4.2-new/job.c +--- make-4.2/job.c 2016-05-21 13:22:32.000000000 -0700 ++++ make-4.2-new/job.c 2017-05-09 13:52:47.806791042 -0700 +@@ -1038,7 +1038,7 @@ + void + block_sigs (void) + { +-#ifdef POSIX ++#if 0 + (void) sigprocmask (SIG_BLOCK, &fatal_signal_set, (sigset_t *) 0); + #else + # ifdef HAVE_SIGSETMASK +@@ -1051,9 +1051,11 @@ + void + unblock_sigs (void) + { ++/* + sigset_t empty; + sigemptyset (&empty); + sigprocmask (SIG_SETMASK, &empty, (sigset_t *) 0); ++*/ + } + #endif + +diff -ru make-4.2/read.c make-4.2-new/read.c +--- make-4.2/read.c 2016-05-21 13:22:32.000000000 -0700 ++++ make-4.2-new/read.c 2017-05-09 13:55:08.237484319 -0700 +@@ -2937,7 +2937,7 @@ + free (home_dir); + home_dir = getenv ("HOME"); + } +-# if !defined(_AMIGA) && !defined(WINDOWS32) ++# if 0 + if (home_dir == 0 || home_dir[0] == '\0') + { + char *logname = getlogin (); +@@ -2958,7 +2958,7 @@ + return new; + } + } +-# if !defined(_AMIGA) && !defined(WINDOWS32) ++# if 0 + else + { + struct passwd *pwent; diff --git a/recipes/gnu-make/recipe.sh b/recipes/gnu-make/recipe.sh new file mode 100644 index 00000000..fe52243c --- /dev/null +++ b/recipes/gnu-make/recipe.sh @@ -0,0 +1,49 @@ +VERSION=4.2.1 +TAR=https://ftp.gnu.org/gnu/make/make-$VERSION.tar.gz + +HOST=x86_64-elf-redox + +export AR="${HOST}-ar" +export AS="${HOST}-as" +export CC="${HOST}-gcc" +export CXX="${HOST}-g++" +export LD="${HOST}-ld" +export NM="${HOST}-nm" +export OBJCOPY="${HOST}-objcopy" +export OBJDUMP="${HOST}-objdump" +export RANLIB="${HOST}-ranlib" +export READELF="${HOST}-readelf" +export STRIP="${HOST}-strip" + +function recipe_version { + echo "$VERSION" + return 1 +} + +function recipe_update { + echo "skipping update" + return 1 +} + +function recipe_build { + patch -p1 < ../make.patch + ./configure --host=${HOST} --prefix=/ CFLAGS=-DPOSIX --without-guile + make + return 1 +} + +function recipe_test { + echo "skipping test" + return 1 +} + +function recipe_clean { + make clean + return 1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + return 1 +} From bd219d2088bd5ba9040f94cc5250109286c8d91e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 Jun 2017 20:45:53 -0600 Subject: [PATCH 0127/3180] Fix pipeline error exit --- cook.sh | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/cook.sh b/cook.sh index 4d4bf983..8fc93feb 100755 --- a/cook.sh +++ b/cook.sh @@ -97,7 +97,11 @@ function op { skip="0" if [ "$(type -t recipe_version)" = "function" ] then - recipe_version || skip="1" + recipe_version + if [ "$?" -ne "0" ] + then + skip="1" + fi fi if [ "$skip" -eq "0" ] then @@ -118,7 +122,11 @@ function op { skip="0" if [ "$(type -t recipe_update)" = "function" ] then - recipe_update || skip="1" + recipe_update + if [ "$?" -ne "0" ] + then + skip="1" + fi fi if [ "$skip" -eq "0" ] then @@ -131,7 +139,11 @@ function op { skip="0" if [ "$(type -t recipe_build)" = "function" ] then - recipe_build || skip="1" + recipe_build + if [ "$?" -ne "0" ] + then + skip="1" + fi fi if [ "$skip" -eq "0" ] then @@ -145,7 +157,11 @@ function op { skip="0" if [ "$(type -t recipe_test)" = "function" ] then - recipe_test || skip="1" + recipe_test + if [ "$?" -ne "0" ] + then + skip="1" + fi fi if [ "$skip" -eq "0" ] then @@ -159,7 +175,11 @@ function op { skip="0" if [ "$(type -t recipe_clean)" = "function" ] then - recipe_clean || skip="1" + recipe_clean + if [ "$?" -ne "0" ] + then + skip="1" + fi fi if [ "$skip" -eq "0" ] then @@ -173,7 +193,11 @@ function op { skip="0" if [ "$(type -t recipe_stage)" = "function" ] then - recipe_stage ../stage || skip="1" + recipe_stage ../stage + if [ "$?" -ne "0" ] + then + skip="1" + fi fi if [ "$skip" -eq "0" ] then From e87d8c0d93910c39f851105f15a0455e380e6c2a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 7 Jun 2017 20:08:00 -0600 Subject: [PATCH 0128/3180] Fix skipping method --- cook.sh | 36 ++++++---------------------------- recipes/dash/recipe.sh | 12 ++++++------ recipes/drivers/recipe.sh | 2 +- recipes/gcc/recipe.sh | 12 ++++++------ recipes/gnu-binutils/recipe.sh | 12 ++++++------ recipes/gnu-make/recipe.sh | 12 ++++++------ recipes/lua/recipe.sh | 12 ++++++------ recipes/newlib/recipe.sh | 12 ++++++------ recipes/orbdata/recipe.sh | 12 ++++++------ 9 files changed, 49 insertions(+), 73 deletions(-) diff --git a/cook.sh b/cook.sh index 8fc93feb..f63fd38d 100755 --- a/cook.sh +++ b/cook.sh @@ -94,14 +94,10 @@ function op { ;; version) pushd build > /dev/null - skip="0" + skip=0 if [ "$(type -t recipe_version)" = "function" ] then recipe_version - if [ "$?" -ne "0" ] - then - skip="1" - fi fi if [ "$skip" -eq "0" ] then @@ -119,14 +115,10 @@ function op { ;; update) pushd build > /dev/null - skip="0" + skip=0 if [ "$(type -t recipe_update)" = "function" ] then recipe_update - if [ "$?" -ne "0" ] - then - skip="1" - fi fi if [ "$skip" -eq "0" ] then @@ -136,14 +128,10 @@ function op { ;; build) pushd build > /dev/null - skip="0" + skip=0 if [ "$(type -t recipe_build)" = "function" ] then recipe_build - if [ "$?" -ne "0" ] - then - skip="1" - fi fi if [ "$skip" -eq "0" ] then @@ -154,14 +142,10 @@ function op { ;; test) pushd build > /dev/null - skip="0" + skip=0 if [ "$(type -t recipe_test)" = "function" ] then recipe_test - if [ "$?" -ne "0" ] - then - skip="1" - fi fi if [ "$skip" -eq "0" ] then @@ -172,14 +156,10 @@ function op { ;; clean) pushd build > /dev/null - skip="0" + skip=0 if [ "$(type -t recipe_clean)" = "function" ] then recipe_clean - if [ "$?" -ne "0" ] - then - skip="1" - fi fi if [ "$skip" -eq "0" ] then @@ -190,14 +170,10 @@ function op { stage) mkdir -p stage pushd build > /dev/null - skip="0" + skip=0 if [ "$(type -t recipe_stage)" = "function" ] then recipe_stage ../stage - if [ "$?" -ne "0" ] - then - skip="1" - fi fi if [ "$skip" -eq "0" ] then diff --git a/recipes/dash/recipe.sh b/recipes/dash/recipe.sh index 459a789f..639bc8ec 100644 --- a/recipes/dash/recipe.sh +++ b/recipes/dash/recipe.sh @@ -16,33 +16,33 @@ export STRIP="${HOST}-strip" function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" - return 1 + skip=1 } function recipe_update { echo "skipping update" - return 1 + skip=1 } function recipe_build { ./autogen.sh ./configure --host=${HOST} --prefix=/ make - return 1 + skip=1 } function recipe_test { echo "skipping test" - return 1 + skip=1 } function recipe_clean { make clean - return 1 + skip=1 } function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install - return 1 + skip=1 } diff --git a/recipes/drivers/recipe.sh b/recipes/drivers/recipe.sh index cdbba51c..cd3778ea 100644 --- a/recipes/drivers/recipe.sh +++ b/recipes/drivers/recipe.sh @@ -3,7 +3,7 @@ CARGOFLAGS=--all function recipe_version { echo "0.1.1" - return 1 + skip=1 } function recipe_stage { diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index 7554b5cd..a40cf054 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -16,12 +16,12 @@ export STRIP="${HOST}-strip" function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" - return 1 + skip=1 } function recipe_update { echo "skipping update" - return 1 + skip=1 } function recipe_build { @@ -38,23 +38,23 @@ function recipe_build { cd build ../configure --host=${HOST} --target=${HOST} --prefix=/ --enable-static --disable-shared --disable-dlopen --disable-nls --enable-languages=c --without-headers make all-gcc all-target-libgcc - return 1 + skip=1 } function recipe_test { echo "skipping test" - return 1 + skip=1 } function recipe_clean { cd build make clean - return 1 + skip=1 } function recipe_stage { dest="$(realpath $1)" cd build make DESTDIR="$dest" install-gcc install-target-libgcc - return 1 + skip=1 } diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh index 51040bb8..0c6e98ff 100644 --- a/recipes/gnu-binutils/recipe.sh +++ b/recipes/gnu-binutils/recipe.sh @@ -15,12 +15,12 @@ export STRIP="${HOST}-strip" function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" - return 1 + skip=1 } function recipe_update { echo "skipping update" - return 1 + skip=1 } function recipe_build { @@ -28,23 +28,23 @@ function recipe_build { cd build ../configure --host=${HOST} --target=${HOST} --prefix=/ --with-sysroot=/usr/x86_64-elf-redox --disable-gdb --disable-nls --disable-werror make - return 1 + skip=1 } function recipe_test { echo "skipping test" - return 1 + skip=1 } function recipe_clean { cd build make clean - return 1 + skip=1 } function recipe_stage { dest="$(realpath $1)" cd build make DESTDIR="$dest" install - return 1 + skip=1 } diff --git a/recipes/gnu-make/recipe.sh b/recipes/gnu-make/recipe.sh index fe52243c..3e3ab47e 100644 --- a/recipes/gnu-make/recipe.sh +++ b/recipes/gnu-make/recipe.sh @@ -17,33 +17,33 @@ export STRIP="${HOST}-strip" function recipe_version { echo "$VERSION" - return 1 + skip=1 } function recipe_update { echo "skipping update" - return 1 + skip=1 } function recipe_build { patch -p1 < ../make.patch ./configure --host=${HOST} --prefix=/ CFLAGS=-DPOSIX --without-guile make - return 1 + skip=1 } function recipe_test { echo "skipping test" - return 1 + skip=1 } function recipe_clean { make clean - return 1 + skip=1 } function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install - return 1 + skip=1 } diff --git a/recipes/lua/recipe.sh b/recipes/lua/recipe.sh index b1531410..d976d114 100644 --- a/recipes/lua/recipe.sh +++ b/recipes/lua/recipe.sh @@ -5,31 +5,31 @@ HOST=x86_64-elf-redox function recipe_version { echo "$VERSION" - return 1 + skip=1 } function recipe_update { echo "skipping update" - return 1 + skip=1 } function recipe_build { make generic CC="${HOST}-gcc -std=gnu99" - return 1 + skip=1 } function recipe_test { echo "skipping test" - return 1 + skip=1 } function recipe_clean { make clean - return 1 + skip=1 } function recipe_stage { mkdir -pv "$1/bin" cp src/lua src/luac "$1/bin" - return 1 + skip=1 } diff --git a/recipes/newlib/recipe.sh b/recipes/newlib/recipe.sh index 77aadceb..78950b9a 100644 --- a/recipes/newlib/recipe.sh +++ b/recipes/newlib/recipe.sh @@ -5,12 +5,12 @@ HOST=x86_64-elf-redox function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" - return 1 + skip=1 } function recipe_update { echo "skipping update" - return 1 + skip=1 } function recipe_build { @@ -29,17 +29,17 @@ function recipe_build { CC= ./configure --target="${HOST}" --prefix=/ make all - return 1 + skip=1 } function recipe_test { echo "skipping test" - return 1 + skip=1 } function recipe_clean { make clean - return 1 + skip=1 } function recipe_stage { @@ -48,5 +48,5 @@ function recipe_stage { cd "$dest" mv x86_64-elf-redox/* ./ rmdir x86_64-elf-redox - return 1 + skip=1 } diff --git a/recipes/orbdata/recipe.sh b/recipes/orbdata/recipe.sh index 77212e17..46715963 100644 --- a/recipes/orbdata/recipe.sh +++ b/recipes/orbdata/recipe.sh @@ -2,31 +2,31 @@ GIT=https://github.com/redox-os/orbdata.git function recipe_version { echo "0.0.1" - return 1 + skip=1 } function recipe_update { echo "skipping update" - return 1 + skip=1 } function recipe_build { echo "skipping build" - return 1 + skip=1 } function recipe_test { echo "skipping test" - return 1 + skip=1 } function recipe_clean { echo "skipping clean" - return 1 + skip=1 } function recipe_stage { mkdir -pv "$1/ui" cp -Rv ./* "$1/ui" - return 1 + skip=1 } From 78049f8f118d68832d122804d180cbf771d868f3 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 8 Jun 2017 12:31:30 -0700 Subject: [PATCH 0129/3180] Make stage call unstage We don't want the package to potentially have artifacts from a prior build. --- cook.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/cook.sh b/cook.sh index f63fd38d..d0b36596 100755 --- a/cook.sh +++ b/cook.sh @@ -168,6 +168,7 @@ function op { popd > /dev/null ;; stage) + op $1 unstage mkdir -p stage pushd build > /dev/null skip=0 From 649559bfcccbf86e662972af3c4062b655695455 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 8 Jun 2017 12:40:23 -0700 Subject: [PATCH 0130/3180] Handle patches in prepare --- cook.sh | 5 +++++ recipes/gnu-make/recipe.sh | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/cook.sh b/cook.sh index 8fc93feb..2a72a433 100755 --- a/cook.sh +++ b/cook.sh @@ -88,6 +88,11 @@ function op { prepare) rm -rf build cp -r source build + + for patch in *.patch + do + patch -p1 -d build < "$patch" + done ;; unprepare) rm -rf build diff --git a/recipes/gnu-make/recipe.sh b/recipes/gnu-make/recipe.sh index fe52243c..74db2aeb 100644 --- a/recipes/gnu-make/recipe.sh +++ b/recipes/gnu-make/recipe.sh @@ -26,7 +26,6 @@ function recipe_update { } function recipe_build { - patch -p1 < ../make.patch ./configure --host=${HOST} --prefix=/ CFLAGS=-DPOSIX --without-guile make return 1 From fc071063fec1e0b58327711863e69f4c74d87922 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 8 Jun 2017 14:08:41 -0700 Subject: [PATCH 0131/3180] Add "shopt -s nullglob" to fix patch loop --- cook.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/cook.sh b/cook.sh index 46988913..b7c3fb9c 100755 --- a/cook.sh +++ b/cook.sh @@ -1,5 +1,6 @@ #!/usr/bin/env bash set -e +shopt -s nullglob source config.sh From d7d187b6373757fb9d6a62887fbafef6fba452ef Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 8 Jun 2017 19:15:05 -0600 Subject: [PATCH 0132/3180] Do not build in a subdirectory --- recipes/gcc/recipe.sh | 6 +----- recipes/gnu-binutils/recipe.sh | 6 +----- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index a40cf054..d5415f2b 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -34,9 +34,7 @@ function recipe_build { autoconf2.64 popd - mkdir build - cd build - ../configure --host=${HOST} --target=${HOST} --prefix=/ --enable-static --disable-shared --disable-dlopen --disable-nls --enable-languages=c --without-headers + ./configure --host=${HOST} --target=${HOST} --prefix=/ --enable-static --disable-shared --disable-dlopen --disable-nls --enable-languages=c --without-headers make all-gcc all-target-libgcc skip=1 } @@ -47,14 +45,12 @@ function recipe_test { } function recipe_clean { - cd build make clean skip=1 } function recipe_stage { dest="$(realpath $1)" - cd build make DESTDIR="$dest" install-gcc install-target-libgcc skip=1 } diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh index 0c6e98ff..7dece881 100644 --- a/recipes/gnu-binutils/recipe.sh +++ b/recipes/gnu-binutils/recipe.sh @@ -24,9 +24,7 @@ function recipe_update { } function recipe_build { - mkdir build - cd build - ../configure --host=${HOST} --target=${HOST} --prefix=/ --with-sysroot=/usr/x86_64-elf-redox --disable-gdb --disable-nls --disable-werror + ./configure --host=${HOST} --target=${HOST} --prefix=/ --with-sysroot=/usr/x86_64-elf-redox --disable-gdb --disable-nls --disable-werror make skip=1 } @@ -37,14 +35,12 @@ function recipe_test { } function recipe_clean { - cd build make clean skip=1 } function recipe_stage { dest="$(realpath $1)" - cd build make DESTDIR="$dest" install skip=1 } From 92dd1fe531a908243a40c63ccd1ab14ea61036d3 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 8 Jun 2017 18:33:51 -0700 Subject: [PATCH 0133/3180] Make dash available as /bin/sh --- recipes/dash/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/dash/recipe.sh b/recipes/dash/recipe.sh index 639bc8ec..b67e079a 100644 --- a/recipes/dash/recipe.sh +++ b/recipes/dash/recipe.sh @@ -44,5 +44,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install + cp "$1/bin/dash" "$1/bin/sh" # TODO: symlink when Redox supports them skip=1 } From 6528b4bc2166b98b8e05dfe71023d58a9b721189 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Sun, 11 Jun 2017 21:07:19 -0700 Subject: [PATCH 0134/3180] Strip binaries in gcc and gnu-binutils, for much smaller file size --- recipes/gcc/recipe.sh | 1 + recipes/gnu-binutils/recipe.sh | 1 + 2 files changed, 2 insertions(+) diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index d5415f2b..a42b0893 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -52,5 +52,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install-gcc install-target-libgcc + find "$dest" -exec x86_64-elf-redox-strip {} ';' 2> /dev/null skip=1 } diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh index 7dece881..1a5fbe2a 100644 --- a/recipes/gnu-binutils/recipe.sh +++ b/recipes/gnu-binutils/recipe.sh @@ -42,5 +42,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install + find "$dest" -exec x86_64-elf-redox-strip {} ';' 2> /dev/null skip=1 } From 749c00d53374420c1e120d32261fa5336e802942 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Mon, 12 Jun 2017 08:34:21 -0700 Subject: [PATCH 0135/3180] Have repo.sh check if recipe/patches have been updated --- repo.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/repo.sh b/repo.sh index 4b54c566..25b5ad46 100755 --- a/repo.sh +++ b/repo.sh @@ -39,7 +39,8 @@ do else TIME_BUILD="$(find recipes/$recipe/build -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" TIME_STAGE="$(stat -c "%Y" recipes/$recipe/stage.tar)" - if [ "$TIME_BUILD" -gt "$TIME_STAGE" ] + TIME_RECIPE="$(find $(git ls-tree -r --name-only HEAD recipes/$recipe) -printf '%Ts\n' | sort -nr | head -n 1)" + if [ "$TIME_BUILD" -gt "$TIME_STAGE" -o "$TIME_RECIPE" -gt "$TIME_STAGE" ] then echo -e "\033[01;38;5;155mrepo - rebuilding $recipe\033[0m" >&2 ./cook.sh "$recipe" untar unstage update build stage tar From 936511ae63a9311ab048207452fa02ca52847c3c Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Mon, 12 Jun 2017 08:41:22 -0700 Subject: [PATCH 0136/3180] Actually, don't rely on recipe being commited to git --- repo.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/repo.sh b/repo.sh index 25b5ad46..588c4477 100755 --- a/repo.sh +++ b/repo.sh @@ -1,5 +1,6 @@ #!/usr/bin/env bash set -e +shopt -s nullglob source config.sh @@ -39,8 +40,8 @@ do else TIME_BUILD="$(find recipes/$recipe/build -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" TIME_STAGE="$(stat -c "%Y" recipes/$recipe/stage.tar)" - TIME_RECIPE="$(find $(git ls-tree -r --name-only HEAD recipes/$recipe) -printf '%Ts\n' | sort -nr | head -n 1)" - if [ "$TIME_BUILD" -gt "$TIME_STAGE" -o "$TIME_RECIPE" -gt "$TIME_STAGE" ] + TIME_RECIPE="$(find recipes/$recipe/{recipe.sh,*.patch} -printf '%Ts\n' | sort -nr | head -n 1)" + if [ "$TIME_BUILD" -gt "$TIME_STAGE" -o "$TIME_RECIPE" -gt "$TIME_STAGE" ] then echo -e "\033[01;38;5;155mrepo - rebuilding $recipe\033[0m" >&2 ./cook.sh "$recipe" untar unstage update build stage tar From a4321ad117f07fdee6a62472a6c29b84922021f9 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Mon, 12 Jun 2017 12:46:49 -0700 Subject: [PATCH 0137/3180] Strip only executables, not libraries Striping crt* was causing issues. --- recipes/gcc/recipe.sh | 2 +- recipes/gnu-binutils/recipe.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index a42b0893..fd82c1a2 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -52,6 +52,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install-gcc install-target-libgcc - find "$dest" -exec x86_64-elf-redox-strip {} ';' 2> /dev/null + find "$dest/{bin,libexec}" -exec x86_64-elf-redox-strip {} ';' 2> /dev/null skip=1 } diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh index 1a5fbe2a..8bbe558c 100644 --- a/recipes/gnu-binutils/recipe.sh +++ b/recipes/gnu-binutils/recipe.sh @@ -42,6 +42,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install - find "$dest" -exec x86_64-elf-redox-strip {} ';' 2> /dev/null + find "$dest/bin" -exec x86_64-elf-redox-strip {} ';' 2> /dev/null skip=1 } From 5b01f056db2f1a8fd175262730d83edccf48ad03 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Mon, 12 Jun 2017 18:33:49 -0700 Subject: [PATCH 0138/3180] Correction to gcc recipe --- recipes/gcc/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index fd82c1a2..ad0f38fd 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -52,6 +52,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install-gcc install-target-libgcc - find "$dest/{bin,libexec}" -exec x86_64-elf-redox-strip {} ';' 2> /dev/null + find "$dest"/{bin,libexec} -exec x86_64-elf-redox-strip {} ';' 2> /dev/null skip=1 } From 628751b8d35d762e200f3a84ba53ab3b54e81946 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Tue, 13 Jun 2017 18:07:38 -0700 Subject: [PATCH 0139/3180] Set $XARGO_HOME to build std et al only once I don't know what logic (if any) we need to add to handle updates to Rust --- .gitignore | 1 + config.sh | 1 + 2 files changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 20998dbb..b955f736 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ stage stage.sig stage.tar stage.toml +xargo-home diff --git a/config.sh b/config.sh index 4272ccc7..89c5987a 100755 --- a/config.sh +++ b/config.sh @@ -8,3 +8,4 @@ export TARGET=x86_64-unknown-redox ROOT="$(cd `dirname "$0"` && pwd)" REPO="$ROOT/repo/$TARGET" export CC="$ROOT/libc-artifacts/gcc.sh" +export XARGO_HOME="$ROOT/xargo-home" From 13edf0f4a9385ee59c266237bd2cb8caf9c219fe Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Tue, 13 Jun 2017 18:57:04 -0700 Subject: [PATCH 0140/3180] Recipe for rust --- recipes/rust/config.toml | 11 +++++++ recipes/rust/llvm-config | 24 +++++++++++++++ recipes/rust/recipe.sh | 65 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 100 insertions(+) create mode 100644 recipes/rust/config.toml create mode 100755 recipes/rust/llvm-config create mode 100644 recipes/rust/recipe.sh diff --git a/recipes/rust/config.toml b/recipes/rust/config.toml new file mode 100644 index 00000000..ba739137 --- /dev/null +++ b/recipes/rust/config.toml @@ -0,0 +1,11 @@ +[rust] +backtrace = false + +[target.x86_64-unknown-redox] +cc = "x86_64-elf-redox-gcc" +cxx = "x86_64-elf-redox-g++" +llvm-config = "./llvm-config" + +[build] +host = ["x86_64-unknown-redox"] +target = ["x86_64-unknown-redox"] diff --git a/recipes/rust/llvm-config b/recipes/rust/llvm-config new file mode 100755 index 00000000..f2027dec --- /dev/null +++ b/recipes/rust/llvm-config @@ -0,0 +1,24 @@ +#!/usr/bin/env python + +import sys +import os + +args = sys.argv[1:] +prefix = os.path.realpath(os.path.dirname(os.path.abspath(sys.argv[0])) + "/../llvm-root") + +# The values here are copied from the output of llvm-config running under Redox. +# This is a hack, and should be replaced if possible. + +if args == ["--version"]: + print("4.0.1") +elif args == ["--cxxflags"]: + print("-I" + prefix + "/include --std=gnu++11 -fPIC -fvisibility-inlines-hidden -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wno-maybe-uninitialized -Wdelete-non-virtual-dtor -Wno-comment -Werror=date-time -std=gnu++11 -g -fno-exceptions -fno-rtti -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS") +elif args == ["--components"]: + print("all all-targets analysis asmparser asmprinter bitreader bitwriter codegen core coroutines coverage debuginfocodeview debuginfodwarf debuginfomsf debuginfopdb demangle engine executionengine globalisel instcombine instrumentation interpreter ipo irreader libdriver lineeditor linker lto mc mcdisassembler mcjit mcparser mirparser native nativecodegen objcarcopts object objectyaml option orcjit passes profiledata runtimedyld scalaropts selectiondag support symbolize tablegen target transformutils vectorize x86 x86asmparser x86asmprinter x86codegen x86desc x86disassembler x86info x86utils") +elif args == ['--libs', '--link-static', 'asmparser', 'bitreader', 'bitwriter', 'instrumentation', 'interpreter', 'ipo', 'linker', 'mcjit', 'x86']: + print("-lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMX86Desc -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMMCJIT -lLLVMipo -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMInstrumentation -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMProfileData -lLLVMBitReader -lLLVMAsmParser -lLLVMCore -lLLVMSupport -lLLVMDemangle -lstdc++ -lgcc") + # FIXME last two -l are are a hack +elif args == ["--link-static", "--ldflags"]: + print("-L" + prefix + "/lib"); +else: + sys.exit(1) diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh new file mode 100644 index 00000000..39a24fa0 --- /dev/null +++ b/recipes/rust/recipe.sh @@ -0,0 +1,65 @@ +mIT=https://github.com/ids1024/rust.git +BRANCH=compile-redox + +ARCH=x86_64 +HOST=x86_64-elf-redox +RUST_HOST=x86_64-unknown-redox +LLVM_PREFIX=$PWD/llvm-root +SYSROOT=/usr/x86_64-elf-redox +unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP + +LLVM_CMAKE_ARGS=(-Wno-dev -DCMAKE_CROSSCOMPILING=True -DCMAKE_INSTALL_PREFIX="$LLVM_PREFIX" -DLLVM_DEFAULT_TARGET_TRIPLE=$HOST -DLLVM_TARGET_ARCH=$ARCH -DLLVM_TARGETS_TO_BUILD=X86 -DCMAKE_SYSTEM_NAME=Generic -DPYTHON_EXECUTABLE=/usr/bin/python2 -DUNIX=1 -DLLVM_ENABLE_THREADS=Off -DLLVM_INCLUDE_TESTS=OFF -target=$HOST -DLLVM_TABLEGEN=/usr/bin/llvm-tblgen -I"$SYSROOT/include" -DCMAKE_CXX_FLAGS='--std=gnu++11' -DLLVM_TOOL_LTO_BUILD=Off -DLLVM_TOOL_LLVM_PROFDATA_BUILD=Off -DLLVM_TOOL_LLI_BUILD=Off -DLLVM_TOOL_RDOBJ_BUILD=Off -DLLVM_TOOL_LLVM_COV_BUILD=Off -DLLVM_TOOL_LLVM_XRAY_BUILD=Off -DLLVM_TOOL_LLVM_LTO2_BUILD=Off -DLLVM_TOOL_LLVM_LTO_BUILD=Off -DLLVM_TOOL_LLVM_RTDYLD_BUILD=Off) + +function recipe_version { + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + # Download patched LLVM + if [ -d llvm-redox ] + then + git -C llvm-redox pull + else + git clone https://github.com/ids1024/llvm.git -b redox2 --depth 1 llvm-redox + fi + + # Build LLVM + rm -rf $LLVM_PREFIX + mkdir $LLVM_PREFIX + mkdir -p llvm-redox/build + pushd llvm-redox/build + CC=$HOST-gcc CXX=$HOST-g++ cmake "${LLVM_CMAKE_ARGS[@]}" .. + make -j"$(nproc)" + make install + popd + + cp ../{config.toml,llvm-config} ./ + python x.py build + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + binpath="$1/bin" + libpath="$1/lib/rustlib/${RUST_HOST}/lib" + mkdir -p "$binpath" "$libpath" + cp -fv "build/${RUST_HOST}/stage2/bin/rustc" "$binpath" + ${HOST}-strip "$binpath/rustc" + cp -fv $(find build/${RUST_HOST}/stage2/lib/rustlib/${RUST_HOST}/lib/ -type f | grep -v librustc) "$libpath" + skip=1 +} From b4e0ff01a8da2e9d46e773c2deb556809eda0af0 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Tue, 13 Jun 2017 20:07:30 -0700 Subject: [PATCH 0141/3180] More llvm-root into build/ --- recipes/rust/llvm-config | 2 +- recipes/rust/recipe.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/rust/llvm-config b/recipes/rust/llvm-config index f2027dec..0ac59cda 100755 --- a/recipes/rust/llvm-config +++ b/recipes/rust/llvm-config @@ -4,7 +4,7 @@ import sys import os args = sys.argv[1:] -prefix = os.path.realpath(os.path.dirname(os.path.abspath(sys.argv[0])) + "/../llvm-root") +prefix = os.path.realpath(os.path.dirname(os.path.abspath(sys.argv[0])) + "/llvm-root") # The values here are copied from the output of llvm-config running under Redox. # This is a hack, and should be replaced if possible. diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index 39a24fa0..62b0b5b8 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -4,7 +4,7 @@ BRANCH=compile-redox ARCH=x86_64 HOST=x86_64-elf-redox RUST_HOST=x86_64-unknown-redox -LLVM_PREFIX=$PWD/llvm-root +LLVM_PREFIX=$PWD/build/llvm-root SYSROOT=/usr/x86_64-elf-redox unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP From 7f7f3efb243c1ab47b52010d4115ace0baaef17d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 13 Jun 2017 22:13:19 -0600 Subject: [PATCH 0142/3180] Update recipe.sh --- recipes/rust/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index 62b0b5b8..c2e13f22 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -1,4 +1,4 @@ -mIT=https://github.com/ids1024/rust.git +GIT=https://github.com/ids1024/rust.git BRANCH=compile-redox ARCH=x86_64 From c54bd0dc124fad550430c63bfe25b65f94653385 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Wed, 14 Jun 2017 21:59:48 -0700 Subject: [PATCH 0143/3180] Use /bin/sh and /bin/cc ion scripts --- recipes/dash/recipe.sh | 3 ++- recipes/gcc/recipe.sh | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/dash/recipe.sh b/recipes/dash/recipe.sh index b67e079a..27c87435 100644 --- a/recipes/dash/recipe.sh +++ b/recipes/dash/recipe.sh @@ -44,6 +44,7 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install - cp "$1/bin/dash" "$1/bin/sh" # TODO: symlink when Redox supports them + echo -e '#!/bin/ion\ndash @args[1..]' > "$1/bin/sh" + chmod a+x "$1/bin/sh" skip=1 } diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index ad0f38fd..a27002e6 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -53,5 +53,7 @@ function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install-gcc install-target-libgcc find "$dest"/{bin,libexec} -exec x86_64-elf-redox-strip {} ';' 2> /dev/null + echo -e '#!/bin/ion\ngcc @args[1..]' > "$1/bin/cc" + chmod a+x "$1/bin/cc" skip=1 } From e50070b3f34fc4d54bf4e6f24a791add1f2137d5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 15 Jun 2017 20:43:38 -0600 Subject: [PATCH 0144/3180] Remove libc-artifacts, use cross compiler by default --- .cargo/config | 2 +- .gitmodules | 4 ---- config.sh | 2 +- libc-artifacts | 1 - 4 files changed, 2 insertions(+), 7 deletions(-) delete mode 160000 libc-artifacts diff --git a/.cargo/config b/.cargo/config index f9f6b985..cc387d31 100644 --- a/.cargo/config +++ b/.cargo/config @@ -1,3 +1,3 @@ [target.x86_64-unknown-redox] -linker = "libc-artifacts/gcc.sh" +linker = "x86_64-elf-redox-gcc" rustflags = [] diff --git a/.gitmodules b/.gitmodules index 7b1c83ab..4f9444d7 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,7 +1,3 @@ -[submodule "libc-artifacts"] - path = libc-artifacts - url = https://github.com/redox-os/libc-artifacts.git - branch = master [submodule "pkgutils"] path = pkgutils url = https://github.com/redox-os/pkgutils.git diff --git a/config.sh b/config.sh index 89c5987a..724ae9c8 100755 --- a/config.sh +++ b/config.sh @@ -7,5 +7,5 @@ export TARGET=x86_64-unknown-redox # Automatic variables ROOT="$(cd `dirname "$0"` && pwd)" REPO="$ROOT/repo/$TARGET" -export CC="$ROOT/libc-artifacts/gcc.sh" +export CC="x86_64-elf-redox-gcc" export XARGO_HOME="$ROOT/xargo-home" diff --git a/libc-artifacts b/libc-artifacts deleted file mode 160000 index c26b21e3..00000000 --- a/libc-artifacts +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c26b21e3b6716e0af95a985888dbf19ec864b4a9 From 20db74be75c121814528c597a57e72cd94904376 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 18 Jun 2017 15:08:18 -0600 Subject: [PATCH 0145/3180] Use .tar.gz for all packages --- .gitignore | 1 + cook.sh | 6 +++--- pkgutils | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index b955f736..76a605ed 100644 --- a/.gitignore +++ b/.gitignore @@ -5,5 +5,6 @@ source.tar stage stage.sig stage.tar +stage.tar.gz stage.toml xargo-home diff --git a/cook.sh b/cook.sh index b7c3fb9c..1e71c4f2 100755 --- a/cook.sh +++ b/cook.sh @@ -210,16 +210,16 @@ function op { CC=cc cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- create stage ;; untar) - rm -rfv stage.tar stage.sig stage.toml + rm -rfv stage.tar.gz stage.sig stage.toml ;; publish) mkdir -p "$REPO" - cp -v stage.tar "$REPO/$1.tar" + cp -v stage.tar.gz "$REPO/$1.tar.gz" cp -v stage.sig "$REPO/$1.sig" cp -v stage.toml "$REPO/$1.toml" ;; unpublish) - rm -rfv "$REPO/$1.tar" "$REPO/$1.sig" "$REPO/$1.toml" + rm -rfv "$REPO/$1.tar.gz" "$REPO/$1.sig" "$REPO/$1.toml" ;; *) usage $1 diff --git a/pkgutils b/pkgutils index de029601..2cfc944c 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit de029601fdc1ec6368afa7fb6eeb33b9333beac9 +Subproject commit 2cfc944c9e4d7a91aa8c8d7ece8c531568817d5c From 9f7b51d77d735d474839de633fe0df2ca22c36bb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 18 Jun 2017 15:18:20 -0600 Subject: [PATCH 0146/3180] Replace .tar with .tar.gz in repo.sh --- repo.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/repo.sh b/repo.sh index 588c4477..0e8b18cf 100755 --- a/repo.sh +++ b/repo.sh @@ -33,13 +33,13 @@ do fi fi - if [ ! -f "recipes/$recipe/stage.tar" ] + if [ ! -f "recipes/$recipe/stage.tar.gz" ] then echo -e "\033[01;38;5;155mrepo - building $recipe\033[0m" >&2 ./cook.sh "$recipe" update build stage tar else TIME_BUILD="$(find recipes/$recipe/build -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" - TIME_STAGE="$(stat -c "%Y" recipes/$recipe/stage.tar)" + TIME_STAGE="$(stat -c "%Y" recipes/$recipe/stage.tar.gz)" TIME_RECIPE="$(find recipes/$recipe/{recipe.sh,*.patch} -printf '%Ts\n' | sort -nr | head -n 1)" if [ "$TIME_BUILD" -gt "$TIME_STAGE" -o "$TIME_RECIPE" -gt "$TIME_STAGE" ] then @@ -53,7 +53,7 @@ done for recipe in $recipes do - if [ "recipes/$recipe/stage.tar" -nt "$REPO/$recipe.tar" ] + if [ "recipes/$recipe/stage.tar.gz" -nt "$REPO/$recipe.tar.gz" ] then echo -e "\033[01;38;5;155mrepo - publishing $recipe\033[0m" >&2 ./cook.sh $recipe publish From eb2a044d813225876f384b8bf7ac92f534d8ada1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 18 Jun 2017 15:24:15 -0600 Subject: [PATCH 0147/3180] Update pkgutils --- pkgutils | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgutils b/pkgutils index 2cfc944c..9b212cd5 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit 2cfc944c9e4d7a91aa8c8d7ece8c531568817d5c +Subproject commit 9b212cd5c2c14e5dcbb6fc2e6d5bea59e329a76d From 18fec4b46a90a112fb6ba2d90c28c8a088a32467 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 18 Jun 2017 16:42:43 -0600 Subject: [PATCH 0148/3180] Keep unstripped executables in the target directory --- cook.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cook.sh b/cook.sh index 1e71c4f2..1e13b5d9 100755 --- a/cook.sh +++ b/cook.sh @@ -191,8 +191,7 @@ function op { mkdir -p "../stage/$BINDIR" for bin in $bins do - cp -v "$bin" "../stage/$BINDIR/$(basename $bin)" - strip -v "../stage/$BINDIR/$(basename $bin)" + strip -v "$bin" -o "../stage/$BINDIR/$(basename $bin)" done fi fi From a371b3e54c6380ceb8817921991493323ffa3adc Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 18 Jun 2017 16:49:52 -0600 Subject: [PATCH 0149/3180] Do not install remote libc-artifacts --- setup.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/setup.sh b/setup.sh index b7a794b9..bb8e5218 100755 --- a/setup.sh +++ b/setup.sh @@ -1,11 +1,9 @@ #!/usr/bin/env bash set -e -echo "Downloading latest libc-artifacts" -git submodule update --init --remote libc-artifacts - echo "Downloading latest pkgutils" git submodule update --init --remote pkgutils +cargo update --manifest-path pkgutils/Cargo.toml echo "Defaulting to rust nightly" rustup override set nightly From ae2fb4217c356ed8b526d95b4ad753adab2d7a3d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 19 Jun 2017 16:28:42 -0600 Subject: [PATCH 0150/3180] Go back to using gcc.sh from libc-artifacts --- .cargo/config | 2 +- .gitmodules | 5 +++++ config.sh | 2 +- libc-artifacts | 1 + pkgutils | 2 +- setup.sh | 3 +++ 6 files changed, 12 insertions(+), 3 deletions(-) create mode 160000 libc-artifacts diff --git a/.cargo/config b/.cargo/config index cc387d31..f9f6b985 100644 --- a/.cargo/config +++ b/.cargo/config @@ -1,3 +1,3 @@ [target.x86_64-unknown-redox] -linker = "x86_64-elf-redox-gcc" +linker = "libc-artifacts/gcc.sh" rustflags = [] diff --git a/.gitmodules b/.gitmodules index 4f9444d7..c335c458 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,8 @@ +[submodule "libc-artifacts"] + path = libc-artifacts + url = https://github.com/redox-os/libc-artifacts.git + branch = master [submodule "pkgutils"] path = pkgutils url = https://github.com/redox-os/pkgutils.git + branch = master diff --git a/config.sh b/config.sh index 724ae9c8..89c5987a 100755 --- a/config.sh +++ b/config.sh @@ -7,5 +7,5 @@ export TARGET=x86_64-unknown-redox # Automatic variables ROOT="$(cd `dirname "$0"` && pwd)" REPO="$ROOT/repo/$TARGET" -export CC="x86_64-elf-redox-gcc" +export CC="$ROOT/libc-artifacts/gcc.sh" export XARGO_HOME="$ROOT/xargo-home" diff --git a/libc-artifacts b/libc-artifacts new file mode 160000 index 00000000..c67b055a --- /dev/null +++ b/libc-artifacts @@ -0,0 +1 @@ +Subproject commit c67b055af98c5f9d3afbe62479e8201f01f941cc diff --git a/pkgutils b/pkgutils index 9b212cd5..0c3769fd 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit 9b212cd5c2c14e5dcbb6fc2e6d5bea59e329a76d +Subproject commit 0c3769fd4ecf17fb9b47ee800e80b92162628e90 diff --git a/setup.sh b/setup.sh index bb8e5218..9f30c1d7 100755 --- a/setup.sh +++ b/setup.sh @@ -1,6 +1,9 @@ #!/usr/bin/env bash set -e +echo "Downloading latest libc-artifacts" +git submodule update --init --remote libc-artifacts + echo "Downloading latest pkgutils" git submodule update --init --remote pkgutils cargo update --manifest-path pkgutils/Cargo.toml From ec0dbcbaaad66092f331fe55eafe9abffc0c7fed Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Mon, 19 Jun 2017 16:29:05 -0700 Subject: [PATCH 0151/3180] Remove xargo-home in clean.sh --- clean.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/clean.sh b/clean.sh index f4c2eb61..67d49a1d 100755 --- a/clean.sh +++ b/clean.sh @@ -14,3 +14,5 @@ for recipe in $recipes do ./cook.sh "$recipe" distclean done + +rm -rf xargo-home From ae09d5afbcf8b875f4bce30ffe9de70286832efb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 19 Jun 2017 19:48:35 -0600 Subject: [PATCH 0152/3180] Move xargo home to xargo, use cross compiler --- .cargo/config | 2 +- .gitignore | 2 +- clean.sh | 2 +- config.sh | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.cargo/config b/.cargo/config index f9f6b985..cc387d31 100644 --- a/.cargo/config +++ b/.cargo/config @@ -1,3 +1,3 @@ [target.x86_64-unknown-redox] -linker = "libc-artifacts/gcc.sh" +linker = "x86_64-elf-redox-gcc" rustflags = [] diff --git a/.gitignore b/.gitignore index 76a605ed..64dda0f6 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,4 @@ stage.sig stage.tar stage.tar.gz stage.toml -xargo-home +xargo diff --git a/clean.sh b/clean.sh index 67d49a1d..0bf362f8 100755 --- a/clean.sh +++ b/clean.sh @@ -15,4 +15,4 @@ do ./cook.sh "$recipe" distclean done -rm -rf xargo-home +rm -rf xargo diff --git a/config.sh b/config.sh index 89c5987a..01976e49 100755 --- a/config.sh +++ b/config.sh @@ -7,5 +7,5 @@ export TARGET=x86_64-unknown-redox # Automatic variables ROOT="$(cd `dirname "$0"` && pwd)" REPO="$ROOT/repo/$TARGET" -export CC="$ROOT/libc-artifacts/gcc.sh" -export XARGO_HOME="$ROOT/xargo-home" +export CC="x86_64-elf-redox-gcc" +export XARGO_HOME="$ROOT/xargo" From 2833d16c17d5dc57a6e263c0fa9e5e469c739744 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 20 Jun 2017 13:45:08 -0600 Subject: [PATCH 0153/3180] Move uutils back to recipes --- {recipes_disabled => recipes}/uutils/recipe.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {recipes_disabled => recipes}/uutils/recipe.sh (100%) diff --git a/recipes_disabled/uutils/recipe.sh b/recipes/uutils/recipe.sh similarity index 100% rename from recipes_disabled/uutils/recipe.sh rename to recipes/uutils/recipe.sh From cdcb2ead2289ddca75a999081076bb31a0d37c67 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 20 Jun 2017 16:27:19 -0600 Subject: [PATCH 0154/3180] Update README.md --- README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README.md b/README.md index bf5fa551..5cc8175a 100644 --- a/README.md +++ b/README.md @@ -4,3 +4,18 @@ A collection of package recipes for Redox. [![Travis Build Status](https://travis-ci.org/redox-os/cookbook.svg?branch=master)](https://travis-ci.org/redox-os/cookbook) [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) +## Setup + +### Ubuntu and other Debian based systems + +To install the toolchain, run the following commands: +``` +# Get the Redox OS APT key +sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AA12E97F0881517F +# Install the APT repository +sudo add-apt-repository 'deb https://static.redox-os.org/toolchain/apt /' +# Update your package lists +sudo apt update +# Install the cross compiler +sudo apt install x86-64-elf-redox-gcc +``` From 3ddf6b8ab6f5e1209ffe8e58e420630ddfe6f257 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 20 Jun 2017 16:27:41 -0600 Subject: [PATCH 0155/3180] Update README.md --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5cc8175a..fd3a2719 100644 --- a/README.md +++ b/README.md @@ -9,13 +9,16 @@ A collection of package recipes for Redox. ### Ubuntu and other Debian based systems To install the toolchain, run the following commands: -``` +```bash # Get the Redox OS APT key sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AA12E97F0881517F + # Install the APT repository sudo add-apt-repository 'deb https://static.redox-os.org/toolchain/apt /' + # Update your package lists sudo apt update + # Install the cross compiler sudo apt install x86-64-elf-redox-gcc ``` From 24d3c70aca861c16f572765671005e95f4b1c845 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Wed, 21 Jun 2017 13:18:28 -0700 Subject: [PATCH 0156/3180] Initial recipe for cargo --- recipes/cargo/recipe.sh | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 recipes/cargo/recipe.sh diff --git a/recipes/cargo/recipe.sh b/recipes/cargo/recipe.sh new file mode 100644 index 00000000..a6faa2c7 --- /dev/null +++ b/recipes/cargo/recipe.sh @@ -0,0 +1,22 @@ +GIT=https://github.com/ids1024/cargo.git +BRANCH=redox + +function recipe_build { + if [ -d openssl-redox ] + then + git -C openssl-redox pull + else + git clone https://github.com/ids1024/openssl.git -b redox --depth 1 openssl-redox + fi + + rm -rf openssl-prefix + mkdir openssl-prefix + + pushd openssl-redox + ./Configure no-shared no-dgram redox-x86_64 --prefix="$PWD/../openssl-prefix" + make -j"$(nproc)" + make install + popd + + export OPENSSL_DIR=$PWD/openssl-prefix +} From c9c2b864fa265b44aa662716c12193da7c957754 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Fri, 23 Jun 2017 12:32:02 -0700 Subject: [PATCH 0157/3180] ca-certificates package; needed by cargo --- cook.sh | 54 ++++++++++++++++++------------- recipes/ca-certificates/recipe.sh | 39 ++++++++++++++++++++++ 2 files changed, 70 insertions(+), 23 deletions(-) create mode 100644 recipes/ca-certificates/recipe.sh diff --git a/cook.sh b/cook.sh index 1e13b5d9..b70b4382 100755 --- a/cook.sh +++ b/cook.sh @@ -48,35 +48,43 @@ function op { op $1 unprepare ;; fetch) - if [ -n "$TAR" ] + skip=0 + if [ "$(type -t recipe_fetch)" = "function" ] then - if [ ! -f source.tar ] - then - wget "$TAR" -O source.tar - fi - - if [ ! -d source ] - then - mkdir source - tar xvf source.tar -C source --strip-components 1 - fi - elif [ -n "$GIT" ] + recipe_fetch + fi + if [ "$skip" -eq "0" ] then - if [ ! -d source ] + if [ -n "$TAR" ] then - if [ -n "$BRANCH" ] + if [ ! -f source.tar ] then - git clone --recursive "$GIT" -b "$BRANCH" source - else - git clone --recursive "$GIT" source + wget "$TAR" -O source.tar fi - fi - pushd source > /dev/null - git pull - git submodule sync - git submodule update --init --recursive - popd > /dev/null + if [ ! -d source ] + then + mkdir source + tar xvf source.tar -C source --strip-components 1 + fi + elif [ -n "$GIT" ] + then + if [ ! -d source ] + then + if [ -n "$BRANCH" ] + then + git clone --recursive "$GIT" -b "$BRANCH" source + else + git clone --recursive "$GIT" source + fi + fi + + pushd source > /dev/null + git pull + git submodule sync + git submodule update --init --recursive + popd > /dev/null + fi fi ;; unfetch) diff --git a/recipes/ca-certificates/recipe.sh b/recipes/ca-certificates/recipe.sh new file mode 100644 index 00000000..dc5a06b4 --- /dev/null +++ b/recipes/ca-certificates/recipe.sh @@ -0,0 +1,39 @@ +function recipe_fetch { + mkdir source + pushd source + curl -o make-ca.sh http://anduin.linuxfromscratch.org/BLFS/other/make-ca.sh-20170514 + curl -o certdata.txt http://anduin.linuxfromscratch.org/BLFS/other/certdata.txt + popd + skip=1 +} + +function recipe_update { + curl -o make-ca.sh --time-cond make-ca.sh http://anduin.linuxfromscratch.org/BLFS/other/make-ca.sh-20170514 + curl -o certdata.txt --time-cond certdata.txt http://anduin.linuxfromscratch.org/BLFS/other/certdata.txt + skip=1 +} + +function recipe_build { + rm -rf build + mkdir build + chmod +x ./make-ca.sh + ./make-ca.sh -D "$PWD/build" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + rm -rf build + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + mkdir -p "$1/ssl" + cp -rL build/etc/ssl/certs "$1/ssl" + skip=1 +} From d787767260c8b7d17f9a29350c44c1879740219f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 23 Jun 2017 17:38:35 -0600 Subject: [PATCH 0158/3180] Update pkgutils --- pkgutils | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgutils b/pkgutils index 0c3769fd..9efeabe1 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit 0c3769fd4ecf17fb9b47ee800e80b92162628e90 +Subproject commit 9efeabe1f1a68998c667447b0dad614b854ae4c2 From a13495e4155267bb59b495c8e62816b542653d0d Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Fri, 23 Jun 2017 18:16:40 -0700 Subject: [PATCH 0159/3180] Recipe for curl --- recipes/curl/recipe.sh | 55 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 recipes/curl/recipe.sh diff --git a/recipes/curl/recipe.sh b/recipes/curl/recipe.sh new file mode 100644 index 00000000..ad96990c --- /dev/null +++ b/recipes/curl/recipe.sh @@ -0,0 +1,55 @@ +GIT=https://github.com/ids1024/curl.git +BRANCH=redox + +HOST=x86_64-elf-redox + +function recipe_version { + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + if [ -d openssl-redox ] + then + git -C openssl-redox pull + else + git clone https://github.com/ids1024/openssl.git -b redox --depth 1 openssl-redox + fi + + rm -rf openssl-prefix + mkdir openssl-prefix + + pushd openssl-redox + ./Configure no-shared no-dgram redox-x86_64 --prefix="/" + make -j"$(nproc)" + make DESTDIR="$PWD/../openssl-prefix" install + popd + + rm -rf openssl-prefix/lib/pkgconfig # pkg-config returns paths based on / prefix, breaking cross compile + + ./configure --prefix=/ --host=${HOST} --disable-tftp --disable-ftp --disable-ntlm-wb --with-ssl="$PWD/openssl-prefix" --with-ca-path=/ssl/certs + make + + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + mkdir "$1/bin" + cp src/curl "$1/bin" + skip=1 +} From 76fc2f5b4f2b742658f4ceae8fb63d514576d4f2 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Fri, 23 Jun 2017 19:09:55 -0700 Subject: [PATCH 0160/3180] Correct prefix for openssl in cargo build --- recipes/cargo/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/cargo/recipe.sh b/recipes/cargo/recipe.sh index a6faa2c7..83526793 100644 --- a/recipes/cargo/recipe.sh +++ b/recipes/cargo/recipe.sh @@ -13,9 +13,9 @@ function recipe_build { mkdir openssl-prefix pushd openssl-redox - ./Configure no-shared no-dgram redox-x86_64 --prefix="$PWD/../openssl-prefix" + ./Configure no-shared no-dgram redox-x86_64 --prefix="/" make -j"$(nproc)" - make install + make DESTDIR="$PWD/../openssl-prefix" install popd export OPENSSL_DIR=$PWD/openssl-prefix From 7ed36c0d3e2624e5bd4a661d6c9ed1ce02a02c92 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Fri, 23 Jun 2017 20:45:17 -0700 Subject: [PATCH 0161/3180] Correct ca-certificates recipe --- recipes/ca-certificates/recipe.sh | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/recipes/ca-certificates/recipe.sh b/recipes/ca-certificates/recipe.sh index dc5a06b4..f4e00f7a 100644 --- a/recipes/ca-certificates/recipe.sh +++ b/recipes/ca-certificates/recipe.sh @@ -1,15 +1,16 @@ function recipe_fetch { - mkdir source + if [ ! -d source ] + then + mkdir source + fi pushd source - curl -o make-ca.sh http://anduin.linuxfromscratch.org/BLFS/other/make-ca.sh-20170514 - curl -o certdata.txt http://anduin.linuxfromscratch.org/BLFS/other/certdata.txt + curl -o make-ca.sh --time-cond make-ca.sh http://anduin.linuxfromscratch.org/BLFS/other/make-ca.sh-20170514 + curl -o certdata.txt --time-cond certdata.txt http://anduin.linuxfromscratch.org/BLFS/other/certdata.txt popd skip=1 } function recipe_update { - curl -o make-ca.sh --time-cond make-ca.sh http://anduin.linuxfromscratch.org/BLFS/other/make-ca.sh-20170514 - curl -o certdata.txt --time-cond certdata.txt http://anduin.linuxfromscratch.org/BLFS/other/certdata.txt skip=1 } From 8fd5e328c2e28ed0ddf5df49723103845d72bcc4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 25 Jun 2017 20:04:44 -0600 Subject: [PATCH 0162/3180] Add test to sysroot --- Xargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Xargo.toml b/Xargo.toml index 4bb0924c..e816fa4f 100644 --- a/Xargo.toml +++ b/Xargo.toml @@ -1,6 +1,6 @@ [dependencies.std] features = ["panic_unwind"] -#[dependencies.test] -#stage = 1 +[dependencies.test] +stage = 1 From 7d4bdb0f29db7b52fca0e134d7330a711c182139 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 25 Jun 2017 20:17:02 -0600 Subject: [PATCH 0163/3180] Revert "Add test to sysroot" This reverts commit 8fd5e328c2e28ed0ddf5df49723103845d72bcc4. --- Xargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Xargo.toml b/Xargo.toml index e816fa4f..4bb0924c 100644 --- a/Xargo.toml +++ b/Xargo.toml @@ -1,6 +1,6 @@ [dependencies.std] features = ["panic_unwind"] -[dependencies.test] -stage = 1 +#[dependencies.test] +#stage = 1 From b2f8cc0f17d8fa32f6830d8f139a81938611e345 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 29 Jun 2017 16:09:07 -0700 Subject: [PATCH 0164/3180] Pass --target to pkg --- cook.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cook.sh b/cook.sh index b70b4382..9d11a95b 100755 --- a/cook.sh +++ b/cook.sh @@ -214,7 +214,7 @@ function op { echo "target = \"$TARGET\"" >> "stage.toml" mkdir -p stage/pkg cp -v stage.toml "stage/pkg/$1.toml" - CC=cc cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- create stage + CC=cc cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- --target=$TARGET create stage ;; untar) rm -rfv stage.tar.gz stage.sig stage.toml From 04b112dca09e97a3ede9977791d2430c5e96ff30 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 29 Jun 2017 18:13:52 -0600 Subject: [PATCH 0165/3180] Update pkgutils --- pkgutils | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgutils b/pkgutils index 9efeabe1..bf8cc11d 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit 9efeabe1f1a68998c667447b0dad614b854ae4c2 +Subproject commit bf8cc11ddcc649c3be3e97055ab6a7f4060b7946 From c3aa12549e0209e8e4afffbec0b888d3b2787cdc Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Sat, 1 Jul 2017 12:10:05 -0700 Subject: [PATCH 0166/3180] Update pkgutils submodule --- pkgutils | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgutils b/pkgutils index bf8cc11d..c7a89531 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit bf8cc11ddcc649c3be3e97055ab6a7f4060b7946 +Subproject commit c7a89531e1a788a8e5a96f12c8949f9a2a8e9bdb From e098418b0e363b18aa19ebfdace59a068c4bd319 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Sat, 1 Jul 2017 12:10:22 -0700 Subject: [PATCH 0167/3180] Use symlinks instead of scripts --- recipes/dash/recipe.sh | 3 +-- recipes/gcc/recipe.sh | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/recipes/dash/recipe.sh b/recipes/dash/recipe.sh index 27c87435..26c147b7 100644 --- a/recipes/dash/recipe.sh +++ b/recipes/dash/recipe.sh @@ -44,7 +44,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install - echo -e '#!/bin/ion\ndash @args[1..]' > "$1/bin/sh" - chmod a+x "$1/bin/sh" + ln -s "dash" "$1/bin/sh" skip=1 } diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index a27002e6..fecb8472 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -53,7 +53,6 @@ function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install-gcc install-target-libgcc find "$dest"/{bin,libexec} -exec x86_64-elf-redox-strip {} ';' 2> /dev/null - echo -e '#!/bin/ion\ngcc @args[1..]' > "$1/bin/cc" - chmod a+x "$1/bin/cc" + ln -s "gcc" "$1/bin/cc" skip=1 } From a4bd933d217d3b79579bbed3a9bde023cd292fdc Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Tue, 4 Jul 2017 13:45:52 -0700 Subject: [PATCH 0168/3180] Initial python recipe --- recipes/python/config.site | 2 + recipes/python/python.patch | 341 ++++++++++++++++++++++++++++++++++++ recipes/python/recipe.sh | 54 ++++++ 3 files changed, 397 insertions(+) create mode 100644 recipes/python/config.site create mode 100644 recipes/python/python.patch create mode 100644 recipes/python/recipe.sh diff --git a/recipes/python/config.site b/recipes/python/config.site new file mode 100644 index 00000000..c2730240 --- /dev/null +++ b/recipes/python/config.site @@ -0,0 +1,2 @@ +ac_cv_file__dev_ptmx=no +ac_cv_file__dev_ptc=no diff --git a/recipes/python/python.patch b/recipes/python/python.patch new file mode 100644 index 00000000..b14fe225 --- /dev/null +++ b/recipes/python/python.patch @@ -0,0 +1,341 @@ +diff -ru Python-3.6.1/config.sub Python-3.6.1-new/config.sub +--- Python-3.6.1/config.sub 2017-03-20 23:32:38.000000000 -0700 ++++ Python-3.6.1-new/config.sub 2017-07-03 11:56:03.528738808 -0700 +@@ -1358,7 +1358,7 @@ + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ +- | -sym* | -kopensolaris* | -plan9* \ ++ | -sym* | -kopensolaris* | -plan9* | -redox* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ +diff -ru Python-3.6.1/configure Python-3.6.1-new/configure +--- Python-3.6.1/configure 2017-03-20 23:32:38.000000000 -0700 ++++ Python-3.6.1-new/configure 2017-07-03 15:26:44.804152125 -0700 +@@ -3256,6 +3256,9 @@ + *-*-cygwin*) + ac_sys_system=Cygwin + ;; ++ *-*-redox*) ++ ac_sys_system=Redox ++ ;; + *) + # for now, limit cross builds to known configurations + MACHDEP="unknown" +@@ -3302,9 +3305,7 @@ + _host_cpu= + ;; + *) +- # for now, limit cross builds to known configurations +- MACHDEP="unknown" +- as_fn_error $? "cross build not supported for $host" "$LINENO" 5 ++ _host_cpu=$host_cpu + esac + _PYTHON_HOST_PLATFORM="$MACHDEP${_host_cpu:+-$_host_cpu}" + fi +@@ -11343,7 +11344,6 @@ + _ACEOF + if ac_fn_c_try_compile "$LINENO"; then : + +-$as_echo "#define HAVE_FCHDIR 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } +@@ -11393,7 +11393,6 @@ + _ACEOF + if ac_fn_c_try_compile "$LINENO"; then : + +-$as_echo "#define HAVE_FDATASYNC 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } +@@ -12093,7 +12092,6 @@ + _ACEOF + if ac_fn_c_try_compile "$LINENO"; then : + +-$as_echo "#define HAVE_SETGROUPS 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } +@@ -12491,8 +12489,8 @@ + $as_echo "$ac_cv_lib_rt_clock_gettime" >&6; } + if test "x$ac_cv_lib_rt_clock_gettime" = xyes; then : + +- LIBS="$LIBS -lrt" + $as_echo "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h ++ LIBS="$LIBS -lrt" + + + $as_echo "#define TIMEMODULE_LIB rt" >>confdefs.h +@@ -12510,7 +12508,6 @@ + ac_fn_c_check_func "$LINENO" "clock_getres" "ac_cv_func_clock_getres" + if test "x$ac_cv_func_clock_getres" = xyes; then : + cat >>confdefs.h <<_ACEOF +-#define HAVE_CLOCK_GETRES 1 + _ACEOF + + else +@@ -12553,7 +12550,6 @@ + $as_echo "$ac_cv_lib_rt_clock_getres" >&6; } + if test "x$ac_cv_lib_rt_clock_getres" = xyes; then : + +- $as_echo "#define HAVE_CLOCK_GETRES 1" >>confdefs.h + + + fi +diff -ru Python-3.6.1/Lib/posixpath.py Python-3.6.1-new/Lib/posixpath.py +--- Python-3.6.1/Lib/posixpath.py 2017-03-20 23:32:38.000000000 -0700 ++++ Python-3.6.1-new/Lib/posixpath.py 2017-07-04 13:28:08.034693302 -0700 +@@ -165,11 +165,7 @@ + + def islink(path): + """Test whether a path is a symbolic link""" +- try: +- st = os.lstat(path) +- except (OSError, AttributeError): +- return False +- return stat.S_ISLNK(st.st_mode) ++ return False + + # Being true for dangling symbolic links is also useful. + +diff -ru Python-3.6.1/Modules/clinic/posixmodule.c.h Python-3.6.1-new/Modules/clinic/posixmodule.c.h +--- Python-3.6.1/Modules/clinic/posixmodule.c.h 2017-03-20 23:32:38.000000000 -0700 ++++ Python-3.6.1-new/Modules/clinic/posixmodule.c.h 2017-07-03 14:47:11.991792352 -0700 +@@ -519,7 +519,7 @@ + + #endif /* defined(HAVE_LCHFLAGS) */ + +-#if defined(HAVE_CHROOT) ++#if 0 + + PyDoc_STRVAR(os_chroot__doc__, + "chroot($module, /, path)\n" +diff -ru Python-3.6.1/Modules/faulthandler.c Python-3.6.1-new/Modules/faulthandler.c +--- Python-3.6.1/Modules/faulthandler.c 2017-03-20 23:32:38.000000000 -0700 ++++ Python-3.6.1-new/Modules/faulthandler.c 2017-07-03 14:39:30.321353882 -0700 +@@ -906,7 +906,7 @@ + SetErrorMode(mode | SEM_NOGPFAULTERRORBOX); + #endif + +-#ifdef HAVE_SYS_RESOURCE_H ++#if 0 + struct rlimit rl; + + /* Disable creation of core dump */ +diff -ru Python-3.6.1/Modules/_io/fileio.c Python-3.6.1-new/Modules/_io/fileio.c +--- Python-3.6.1/Modules/_io/fileio.c 2017-03-20 23:32:38.000000000 -0700 ++++ Python-3.6.1-new/Modules/_io/fileio.c 2017-07-04 13:13:07.963211923 -0700 +@@ -433,16 +433,16 @@ + } + + #ifndef MS_WINDOWS +- if (_Py_set_inheritable(self->fd, 0, atomic_flag_works) < 0) +- goto error; ++// if (_Py_set_inheritable(self->fd, 0, atomic_flag_works) < 0) ++// goto error; + #endif + } + + self->blksize = DEFAULT_BUFFER_SIZE; + Py_BEGIN_ALLOW_THREADS +- fstat_result = _Py_fstat_noraise(self->fd, &fdfstat); ++ //fstat_result = _Py_fstat_noraise(self->fd, &fdfstat); + Py_END_ALLOW_THREADS +- if (fstat_result < 0) { ++ if (0) { + /* Tolerate fstat() errors other than EBADF. See Issue #25717, where + an anonymous file on a Virtual Box shared folder filesystem would + raise ENOENT. */ +@@ -457,7 +457,7 @@ + } + } + else { +-#if defined(S_ISDIR) && defined(EISDIR) ++#if 0 + /* On Unix, open will succeed for directories. + In Python, there should be no file objects referring to + directories, so we need a check. */ +@@ -467,7 +467,7 @@ + goto error; + } + #endif /* defined(S_ISDIR) */ +-#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE ++#if 0 + if (fdfstat.st_blksize > 1) + self->blksize = fdfstat.st_blksize; + #endif /* HAVE_STRUCT_STAT_ST_BLKSIZE */ +diff -ru Python-3.6.1/Modules/posixmodule.c Python-3.6.1-new/Modules/posixmodule.c +--- Python-3.6.1/Modules/posixmodule.c 2017-03-20 23:32:38.000000000 -0700 ++++ Python-3.6.1-new/Modules/posixmodule.c 2017-07-03 15:31:13.753481813 -0700 +@@ -188,7 +188,6 @@ + #define HAVE_PIPE 1 + #define HAVE_SYSTEM 1 + #define HAVE_WAIT 1 +-#define HAVE_TTYNAME 1 + #endif /* _MSC_VER */ + #endif /* ! __WATCOMC__ || __QNX__ */ + +@@ -2940,7 +2939,7 @@ + #endif /* HAVE_LCHFLAGS */ + + +-#ifdef HAVE_CHROOT ++#if 0 + /*[clinic input] + os.chroot + path: path_t +@@ -5563,8 +5562,6 @@ + os_sched_yield_impl(PyObject *module) + /*[clinic end generated code: output=902323500f222cac input=e54d6f98189391d4]*/ + { +- if (sched_yield()) +- return posix_error(); + Py_RETURN_NONE; + } + +@@ -11804,7 +11801,7 @@ + (name_len == 1 || (direntp->d_name[1] == '.' && name_len == 2)); + if (!is_dot) { + entry = DirEntry_from_posix_info(&iterator->path, direntp->d_name, +- name_len, direntp->d_ino ++ name_len, 0 + #ifdef HAVE_DIRENT_D_TYPE + , direntp->d_type + #endif +diff -ru Python-3.6.1/Modules/pwdmodule.c Python-3.6.1-new/Modules/pwdmodule.c +--- Python-3.6.1/Modules/pwdmodule.c 2017-03-20 23:32:38.000000000 -0700 ++++ Python-3.6.1-new/Modules/pwdmodule.c 2017-07-03 14:45:03.600040924 -0700 +@@ -125,7 +125,7 @@ + "getpwuid(): uid not found"); + return NULL; + } +- if ((p = getpwuid(uid)) == NULL) { ++ if (1) { + PyObject *uid_obj = _PyLong_FromUid(uid); + if (uid_obj == NULL) + return NULL; +@@ -160,7 +160,7 @@ + return NULL; + if (PyBytes_AsStringAndSize(bytes, &name, NULL) == -1) + goto out; +- if ((p = getpwnam(name)) == NULL) { ++ if (1) { + PyErr_Format(PyExc_KeyError, + "getpwnam(): name not found: %s", name); + goto out; +diff -ru Python-3.6.1/Modules/timemodule.c Python-3.6.1-new/Modules/timemodule.c +--- Python-3.6.1/Modules/timemodule.c 2017-03-20 23:32:38.000000000 -0700 ++++ Python-3.6.1-new/Modules/timemodule.c 2017-07-03 14:41:43.868293016 -0700 +@@ -966,7 +966,7 @@ + return PyFloat_FromDouble(total * 1e-7); + #else + +-#if defined(HAVE_SYS_RESOURCE_H) ++#if 0 + struct rusage ru; + #endif + #ifdef HAVE_TIMES +@@ -1000,7 +1000,7 @@ + } + #endif + +-#if defined(HAVE_SYS_RESOURCE_H) ++#if 0 + if (getrusage(RUSAGE_SELF, &ru) == 0) { + double total; + total = ru.ru_utime.tv_sec + ru.ru_utime.tv_usec * 1e-6; +@@ -1195,7 +1195,7 @@ + + And I'm lazy and hate C so nyer. + */ +-#if defined(HAVE_TZNAME) && !defined(__GLIBC__) && !defined(__CYGWIN__) ++#if 0 + PyObject *otz0, *otz1; + tzset(); + PyModule_AddIntConstant(m, "timezone", timezone); +diff -ru Python-3.6.1/Python/fileutils.c Python-3.6.1-new/Python/fileutils.c +--- Python-3.6.1/Python/fileutils.c 2017-03-20 23:32:38.000000000 -0700 ++++ Python-3.6.1-new/Python/fileutils.c 2017-07-03 17:01:34.335204386 -0700 +@@ -965,7 +965,7 @@ + return -1; + } + +-#ifndef MS_WINDOWS ++#if 0 + if (set_inheritable(fd, 0, gil_held, atomic_flag_works) < 0) { + close(fd); + return -1; +diff -ru Python-3.6.1/Python/pylifecycle.c Python-3.6.1-new/Python/pylifecycle.c +--- Python-3.6.1/Python/pylifecycle.c 2017-03-20 23:32:38.000000000 -0700 ++++ Python-3.6.1-new/Python/pylifecycle.c 2017-07-04 09:28:10.863071915 -0700 +@@ -998,7 +998,7 @@ + #else + if (Py_FileSystemDefaultEncoding == NULL) + { +- Py_FileSystemDefaultEncoding = get_locale_encoding(); ++ Py_FileSystemDefaultEncoding = "utf-8"; + if (Py_FileSystemDefaultEncoding == NULL) + Py_FatalError("Py_Initialize: Unable to get the locale encoding"); + +diff -ru Python-3.6.1/Python/pytime.c Python-3.6.1-new/Python/pytime.c +--- Python-3.6.1/Python/pytime.c 2017-03-20 23:32:38.000000000 -0700 ++++ Python-3.6.1-new/Python/pytime.c 2017-07-03 15:29:14.832184973 -0700 +@@ -578,9 +578,6 @@ + info->implementation = "clock_gettime(CLOCK_REALTIME)"; + info->monotonic = 0; + info->adjustable = 1; +- if (clock_getres(CLOCK_REALTIME, &res) == 0) +- info->resolution = res.tv_sec + res.tv_nsec * 1e-9; +- else + info->resolution = 1e-9; + } + #else /* HAVE_CLOCK_GETTIME */ +@@ -714,15 +711,10 @@ + } + + if (info) { +- struct timespec res; + info->monotonic = 1; + info->implementation = implementation; + info->adjustable = 0; +- if (clock_getres(clk_id, &res) != 0) { +- PyErr_SetFromErrno(PyExc_OSError); +- return -1; +- } +- info->resolution = res.tv_sec + res.tv_nsec * 1e-9; ++ info->resolution = 1e-5; + } + if (_PyTime_FromTimespec(tp, &ts, raise) < 0) + return -1; +diff -ru Python-3.6.1/Python/random.c Python-3.6.1-new/Python/random.c +--- Python-3.6.1/Python/random.c 2017-03-20 23:32:38.000000000 -0700 ++++ Python-3.6.1-new/Python/random.c 2017-07-03 16:07:31.740783648 -0700 +@@ -79,7 +79,7 @@ + + #else /* !MS_WINDOWS */ + +-#if defined(HAVE_GETRANDOM) || defined(HAVE_GETRANDOM_SYSCALL) ++#if 0 + #define PY_GETRANDOM 1 + + /* Call getrandom() to get random bytes: +@@ -316,7 +316,7 @@ + if (urandom_cache.fd >= 0) + fd = urandom_cache.fd; + else { +- fd = _Py_open("/dev/urandom", O_RDONLY); ++ fd = _Py_open("rand:", O_RDONLY); + if (fd < 0) { + if (errno == ENOENT || errno == ENXIO || + errno == ENODEV || errno == EACCES) { +@@ -361,7 +361,7 @@ + } while (0 < size); + } + else { +- fd = _Py_open_noraise("/dev/urandom", O_RDONLY); ++ fd = _Py_open_noraise("rand:", O_RDONLY); + if (fd < 0) { + return -1; + } diff --git a/recipes/python/recipe.sh b/recipes/python/recipe.sh new file mode 100644 index 00000000..c0d11da0 --- /dev/null +++ b/recipes/python/recipe.sh @@ -0,0 +1,54 @@ +VERSION=3.6.1 +TAR=https://www.python.org/ftp/python/$VERSION/Python-$VERSION.tar.xz + +ARCH=x86_64 +HOST=x86_64-elf-redox + +export AR="${HOST}-ar" +export AS="${HOST}-as" +export CC="${HOST}-gcc" +export CXX="${HOST}-g++" +export LD="${HOST}-ld" +export NM="${HOST}-nm" +export OBJCOPY="${HOST}-objcopy" +export OBJDUMP="${HOST}-objdump" +export RANLIB="${HOST}-ranlib" +export READELF="${HOST}-readelf" +export STRIP="${HOST}-strip" + +export CONFIG_SITE=config.site + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + cp ../config.site ./ + ./configure --host=${HOST} --build=${ARCH} --prefix=/ + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make prefix="$dest" install + $STRIP "$dest/bin/python3.6" + rm -rf "$dest"/{share,lib/*.a,include} + skip=1 +} From 22934777cd1906a453d04480492dc374af89a422 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Wed, 5 Jul 2017 12:15:49 -0700 Subject: [PATCH 0169/3180] Initial git recipe; has issues --- pkgutils | 2 +- recipes/git/git.patch | 1259 +++++++++++++++++++++++++++++++++++++++++ recipes/git/recipe.sh | 70 +++ 3 files changed, 1330 insertions(+), 1 deletion(-) create mode 100644 recipes/git/git.patch create mode 100644 recipes/git/recipe.sh diff --git a/pkgutils b/pkgutils index bf8cc11d..c7a89531 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit bf8cc11ddcc649c3be3e97055ab6a7f4060b7946 +Subproject commit c7a89531e1a788a8e5a96f12c8949f9a2a8e9bdb diff --git a/recipes/git/git.patch b/recipes/git/git.patch new file mode 100644 index 00000000..d4a60695 --- /dev/null +++ b/recipes/git/git.patch @@ -0,0 +1,1259 @@ +diff -ru git-2.13.1/apply.c git-2.13.1-new/apply.c +--- git-2.13.1/apply.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/apply.c 2017-06-25 15:19:22.984088453 -0700 +@@ -449,7 +449,7 @@ + + static int is_dev_null(const char *str) + { +- return skip_prefix(str, "/dev/null", &str) && isspace(*str); ++ return skip_prefix(str, "null:", &str) && isspace(*str); + } + + #define TERM_SPACE 1 +@@ -974,7 +974,7 @@ + int len = strlen(*name); + char *another; + if (isnull) +- return error(_("git apply: bad git-diff - expected /dev/null, got %s on line %d"), ++ return error(_("git apply: bad git-diff - expected null:, got %s on line %d"), + *name, state->linenr); + another = find_name(state, line, NULL, state->p_value, TERM_TAB); + if (!another || memcmp(another, *name, len + 1)) { +@@ -985,9 +985,9 @@ + } + free(another); + } else { +- /* expect "/dev/null" */ +- if (memcmp("/dev/null", line, 9) || line[9] != '\n') +- return error(_("git apply: bad git-diff - expected /dev/null on line %d"), state->linenr); ++ /* expect "null:" */ ++ if (memcmp("null:", line, 9) || line[9] != '\n') ++ return error(_("git apply: bad git-diff - expected null: on line %d"), state->linenr); + } + + return 0; +@@ -4309,11 +4309,13 @@ + return !!mkdir(path, 0777); + } + ++#if 0 + if (has_symlinks && S_ISLNK(mode)) + /* Although buf:size is counted string, it also is NUL + * terminated. + */ + return !!symlink(buf, path); ++#endif + + fd = open(path, O_CREAT | O_EXCL | O_WRONLY, (mode & 0100) ? 0777 : 0666); + if (fd < 0) +diff -ru git-2.13.1/builtin/am.c git-2.13.1-new/builtin/am.c +--- git-2.13.1/builtin/am.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/builtin/am.c 2017-06-25 15:19:22.550752475 -0700 +@@ -2342,7 +2342,7 @@ + * 1. mbox path(s) are provided on the command-line. + * 2. stdin is not a tty: the user is trying to feed us a patch + * from standard input. This is somewhat unreliable -- stdin +- * could be /dev/null for example and the caller did not ++ * could be null: for example and the caller did not + * intend to feed us a patch but wanted to continue + * unattended. + */ +diff -ru git-2.13.1/builtin/difftool.c git-2.13.1-new/builtin/difftool.c +--- git-2.13.1/builtin/difftool.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/builtin/difftool.c 2017-06-25 15:19:22.667419854 -0700 +@@ -487,7 +487,7 @@ + } + add_path(&wtdir, wtdir_len, dst_path); + if (symlinks) { +- if (symlink(wtdir.buf, rdir.buf)) { ++ if (1) { + ret = error_errno("could not symlink '%s' to '%s'", wtdir.buf, rdir.buf); + goto finish; + } +diff -ru git-2.13.1/builtin/diff-tree.c git-2.13.1-new/builtin/diff-tree.c +--- git-2.13.1/builtin/diff-tree.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/builtin/diff-tree.c 2017-06-25 15:19:22.580752658 -0700 +@@ -83,7 +83,7 @@ + "git diff-tree [--stdin] [-m] [-c] [--cc] [-s] [-v] [--pretty] [-t] [-r] [--root] " + "[] [] [...]\n" + " -r diff recursively\n" +-" --root include the initial commit as diff against /dev/null\n" ++" --root include the initial commit as diff against null:\n" + COMMON_DIFF_OPTIONS_HELP; + + static void diff_tree_tweak_rev(struct rev_info *rev, struct setup_revision_opt *opt) +diff -ru git-2.13.1/builtin/fetch.c git-2.13.1-new/builtin/fetch.c +--- git-2.13.1/builtin/fetch.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/builtin/fetch.c 2017-06-25 15:19:22.587419365 -0700 +@@ -730,7 +730,7 @@ + const char *what, *kind; + struct ref *rm; + char *url; +- const char *filename = dry_run ? "/dev/null" : git_path_fetch_head(); ++ const char *filename = dry_run ? "null:" : git_path_fetch_head(); + int want_status; + int summary_width = transport_summary_width(ref_map); + +diff -ru git-2.13.1/builtin/init-db.c git-2.13.1-new/builtin/init-db.c +--- git-2.13.1/builtin/init-db.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/builtin/init-db.c 2017-06-25 15:19:22.667419854 -0700 +@@ -74,7 +74,7 @@ + struct strbuf lnk = STRBUF_INIT; + if (strbuf_readlink(&lnk, template->buf, 0) < 0) + die_errno(_("cannot readlink '%s'"), template->buf); +- if (symlink(lnk.buf, path->buf)) ++ if (1) + die_errno(_("cannot symlink '%s' '%s'"), + lnk.buf, path->buf); + strbuf_release(&lnk); +@@ -231,7 +231,7 @@ + */ + path = git_path_buf(&buf, "HEAD"); + reinit = (!access(path, R_OK) +- || readlink(path, junk, sizeof(junk)-1) != -1); ++ || 1); + if (!reinit) { + if (create_symref("HEAD", "refs/heads/master", NULL) < 0) + exit(1); +@@ -273,7 +273,7 @@ + path = git_path_buf(&buf, "tXXXXXX"); + if (!close(xmkstemp(path)) && + !unlink(path) && +- !symlink("testing", path) && ++ !1 && + !lstat(path, &st1) && + S_ISLNK(st1.st_mode)) + unlink(path); /* good */ +diff -ru git-2.13.1/builtin/log.c git-2.13.1-new/builtin/log.c +--- git-2.13.1/builtin/log.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/builtin/log.c 2017-06-25 15:19:22.664086500 -0700 +@@ -308,6 +308,7 @@ + + static void setup_early_output(struct rev_info *rev) + { ++#if 0 + struct sigaction sa; + + /* +@@ -333,6 +334,7 @@ + early_output_timer.it_value.tv_sec = 0; + early_output_timer.it_value.tv_usec = 100000; + setitimer(ITIMER_REAL, &early_output_timer, NULL); ++#endif + } + + static void finish_early_output(struct rev_info *rev) +diff -ru git-2.13.1/builtin/merge-file.c git-2.13.1-new/builtin/merge-file.c +--- git-2.13.1/builtin/merge-file.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/builtin/merge-file.c 2017-06-25 15:19:22.604086133 -0700 +@@ -60,8 +60,8 @@ + if (argc != 3) + usage_with_options(merge_file_usage, options); + if (quiet) { +- if (!freopen("/dev/null", "w", stderr)) +- return error_errno("failed to redirect stderr to /dev/null"); ++ if (!freopen("null:", "w", stderr)) ++ return error_errno("failed to redirect stderr to null:"); + } + + for (i = 0; i < 3; i++) { +diff -ru git-2.13.1/combine-diff.c git-2.13.1-new/combine-diff.c +--- git-2.13.1/combine-diff.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/combine-diff.c 2017-06-25 15:19:22.767420465 -0700 +@@ -953,13 +953,13 @@ + return; + + if (added) +- dump_quoted_path("--- ", "", "/dev/null", ++ dump_quoted_path("--- ", "", "null:", + line_prefix, c_meta, c_reset); + else + dump_quoted_path("--- ", a_prefix, elem->path, + line_prefix, c_meta, c_reset); + if (deleted) +- dump_quoted_path("+++ ", "", "/dev/null", ++ dump_quoted_path("+++ ", "", "null:", + line_prefix, c_meta, c_reset); + else + dump_quoted_path("+++ ", b_prefix, elem->path, +diff -ru git-2.13.1/common-main.c git-2.13.1-new/common-main.c +--- git-2.13.1/common-main.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/common-main.c 2017-06-25 15:19:23.000755222 -0700 +@@ -15,12 +15,14 @@ + */ + static void restore_sigpipe_to_default(void) + { ++/* + sigset_t unblock; + + sigemptyset(&unblock); + sigaddset(&unblock, SIGPIPE); + sigprocmask(SIG_UNBLOCK, &unblock, NULL); + signal(SIGPIPE, SIG_DFL); ++*/ + } + + int main(int argc, const char **argv) +diff -ru git-2.13.1/compat/hstrerror.c git-2.13.1-new/compat/hstrerror.c +--- git-2.13.1/compat/hstrerror.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/compat/hstrerror.c 2017-06-25 15:19:22.704086744 -0700 +@@ -5,17 +5,6 @@ + const char *githstrerror(int err) + { + static char buffer[48]; +- switch (err) +- { +- case HOST_NOT_FOUND: +- return "Authoritative answer: host not found"; +- case NO_DATA: +- return "Valid name, no data record of requested type"; +- case NO_RECOVERY: +- return "Non recoverable errors, FORMERR, REFUSED, NOTIMP"; +- case TRY_AGAIN: +- return "Non-authoritative \"host not found\", or SERVERFAIL"; +- } + snprintf(buffer, sizeof(buffer), "Name resolution error %d", err); + return buffer; + } +diff -ru git-2.13.1/compat/mingw.c git-2.13.1-new/compat/mingw.c +--- git-2.13.1/compat/mingw.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/compat/mingw.c 2017-06-25 15:19:22.697420037 -0700 +@@ -352,7 +352,7 @@ + mode = va_arg(args, int); + va_end(args); + +- if (filename && !strcmp(filename, "/dev/null")) ++ if (filename && !strcmp(filename, "null:")) + filename = "nul"; + + if (xutftowcs_path(wfilename, filename) < 0) +@@ -413,7 +413,7 @@ + int hide = needs_hiding(filename); + FILE *file; + wchar_t wfilename[MAX_PATH], wotype[4]; +- if (filename && !strcmp(filename, "/dev/null")) ++ if (filename && !strcmp(filename, "null:")) + filename = "nul"; + if (xutftowcs_path(wfilename, filename) < 0 || + xutftowcs(wotype, otype, ARRAY_SIZE(wotype)) < 0) +@@ -433,7 +433,7 @@ + int hide = needs_hiding(filename); + FILE *file; + wchar_t wfilename[MAX_PATH], wotype[4]; +- if (filename && !strcmp(filename, "/dev/null")) ++ if (filename && !strcmp(filename, "null:")) + filename = "nul"; + if (xutftowcs_path(wfilename, filename) < 0 || + xutftowcs(wotype, otype, ARRAY_SIZE(wotype)) < 0) +diff -ru git-2.13.1/compat/poll/poll.c git-2.13.1-new/compat/poll/poll.c +--- git-2.13.1/compat/poll/poll.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/compat/poll/poll.c 2017-06-25 15:19:22.670753207 -0700 +@@ -302,7 +302,7 @@ + happened |= (POLLIN | POLLRDNORM) & sought; + + /* Distinguish hung-up sockets from other errors. */ +- else if (socket_errno == ESHUTDOWN || socket_errno == ECONNRESET ++ else if (socket_errno == ECONNRESET + || socket_errno == ECONNABORTED || socket_errno == ENETRESET) + happened |= POLLHUP; + +diff -ru git-2.13.1/compat/terminal.c git-2.13.1-new/compat/terminal.c +--- git-2.13.1/compat/terminal.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/compat/terminal.c 2017-06-25 15:19:22.704086744 -0700 +@@ -3,7 +3,9 @@ + #include "sigchain.h" + #include "strbuf.h" + +-#if defined(HAVE_DEV_TTY) || defined(GIT_WINDOWS_NATIVE) ++ssize_t __getline(char **lptr, size_t *n, FILE *fp); ++ ++#if 0 + + static void restore_term(void); + +@@ -141,7 +143,10 @@ + + char *git_terminal_prompt(const char *prompt, int echo) + { +- return getpass(prompt); ++ char *line = NULL; ++ size_t n = 0; ++ __getline(&line, &n, stdin); ++ return line; // XXX leak + } + + #endif +diff -ru git-2.13.1/config.c git-2.13.1-new/config.c +--- git-2.13.1/config.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/config.c 2017-06-25 15:19:22.994088514 -0700 +@@ -1005,7 +1005,7 @@ + } + + if (!strcmp(var, "core.symlinks")) { +- has_symlinks = git_config_bool(var, value); ++ has_symlinks = 0; + return 0; + } + +@@ -1094,7 +1094,7 @@ + } + + if (!strcmp(var, "core.packedgitwindowsize")) { +- int pgsz_x2 = getpagesize() * 2; ++ int pgsz_x2 = 4096 * 2; + packed_git_window_size = git_config_ulong(var, value); + + /* This value must be multiple of (pagesize * 2) */ +diff -ru git-2.13.1/configure.ac git-2.13.1-new/configure.ac +--- git-2.13.1/configure.ac 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/configure.ac 2017-06-17 08:31:04.941134924 -0700 +@@ -732,10 +732,7 @@ + [NO_SYS_SELECT_H=UnfortunatelyYes]) + GIT_CONF_SUBST([NO_SYS_SELECT_H]) + # +-# Define NO_SYS_POLL_H if you don't have sys/poll.h +-AC_CHECK_HEADER([sys/poll.h], +-[NO_SYS_POLL_H=], +-[NO_SYS_POLL_H=UnfortunatelyYes]) ++NO_SYS_POLL_H=UnfortunatelyYes + GIT_CONF_SUBST([NO_SYS_POLL_H]) + # + # Define NO_INTTYPES_H if you don't have inttypes.h +@@ -860,56 +857,13 @@ + # + # Define FREAD_READS_DIRECTORIES if your are on a system which succeeds + # when attempting to read from an fopen'ed directory. +-AC_CACHE_CHECK([whether system succeeds to read fopen'ed directory], +- [ac_cv_fread_reads_directories], +-[ +-AC_RUN_IFELSE( +- [AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT], +- [[char c; +- FILE *f = fopen(".", "r"); +- return f && fread(&c, 1, 1, f)]])], +- [ac_cv_fread_reads_directories=no], +- [ac_cv_fread_reads_directories=yes]) +-]) +-if test $ac_cv_fread_reads_directories = yes; then +- FREAD_READS_DIRECTORIES=UnfortunatelyYes +-else +- FREAD_READS_DIRECTORIES= +-fi ++FREAD_READS_DIRECTORIES=UnfortunatelyYes + GIT_CONF_SUBST([FREAD_READS_DIRECTORIES]) + # + # Define SNPRINTF_RETURNS_BOGUS if your are on a system which snprintf() + # or vsnprintf() return -1 instead of number of characters which would + # have been written to the final string if enough space had been available. +-AC_CACHE_CHECK([whether snprintf() and/or vsnprintf() return bogus value], +- [ac_cv_snprintf_returns_bogus], +-[ +-AC_RUN_IFELSE( +- [AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT +- #include "stdarg.h" +- +- int test_vsnprintf(char *str, size_t maxsize, const char *format, ...) +- { +- int ret; +- va_list ap; +- va_start(ap, format); +- ret = vsnprintf(str, maxsize, format, ap); +- va_end(ap); +- return ret; +- }], +- [[char buf[6]; +- if (test_vsnprintf(buf, 3, "%s", "12345") != 5 +- || strcmp(buf, "12")) return 1; +- if (snprintf(buf, 3, "%s", "12345") != 5 +- || strcmp(buf, "12")) return 1]])], +- [ac_cv_snprintf_returns_bogus=no], +- [ac_cv_snprintf_returns_bogus=yes]) +-]) +-if test $ac_cv_snprintf_returns_bogus = yes; then + SNPRINTF_RETURNS_BOGUS=UnfortunatelyYes +-else +- SNPRINTF_RETURNS_BOGUS= +-fi + GIT_CONF_SUBST([SNPRINTF_RETURNS_BOGUS]) + # + # Define NEEDS_MODE_TRANSLATION if your OS strays from the typical file type +@@ -1064,6 +1018,8 @@ + # + # + # Define NO_MMAP if you want to avoid mmap. ++NO_MMAP=YES ++GIT_CONF_SUBST([NO_MMAP]) + # + # Define NO_ICONV if your libc does not properly support iconv. + +diff -ru git-2.13.1/connect.c git-2.13.1-new/connect.c +--- git-2.13.1/connect.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/connect.c 2017-06-25 16:49:55.499598388 -0700 +@@ -450,14 +450,11 @@ + + he = gethostbyname(host); + if (!he) +- die("Unable to look up %s (%s)", host, hstrerror(h_errno)); ++ die("Unable to look up %s (%s)", host, strerror(errno)); + nport = strtoul(port, &ep, 10); + if ( ep == port || *ep ) { + /* Not numeric */ +- struct servent *se = getservbyname(port,"tcp"); +- if ( !se ) +- die("Unknown port %s", port); +- nport = se->s_port; ++ die("Unknown port %s", port); + } + + if (flags & CONNECT_VERBOSE) +@@ -507,7 +504,7 @@ + int sockfd = git_tcp_connect_sock(host, flags); + + fd[0] = sockfd; +- fd[1] = dup(sockfd); ++ fd[1] = sockfd; + } + + +diff -ru git-2.13.1/credential-cache.c git-2.13.1-new/credential-cache.c +--- git-2.13.1/credential-cache.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/credential-cache.c 2017-06-25 15:19:23.024088698 -0700 +@@ -11,7 +11,7 @@ + static int send_request(const char *socket, const struct strbuf *out) + { + int got_data = 0; +- int fd = unix_stream_connect(socket); ++ int fd = -1; + + if (fd < 0) + return -1; +diff -ru git-2.13.1/credential-cache--daemon.c git-2.13.1-new/credential-cache--daemon.c +--- git-2.13.1/credential-cache--daemon.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/credential-cache--daemon.c 2017-06-25 15:19:23.024088698 -0700 +@@ -156,6 +156,7 @@ + strbuf_release(&action); + } + ++#if 0 + static int serve_cache_loop(int fd) + { + struct pollfd pfd; +@@ -209,8 +210,8 @@ + printf("ok\n"); + fclose(stdout); + if (!debug) { +- if (!freopen("/dev/null", "w", stderr)) +- die_errno("unable to point stderr to /dev/null"); ++ if (!freopen("null:", "w", stderr)) ++ die_errno("unable to point stderr to null:"); + } + + while (serve_cache_loop(fd)) +@@ -256,6 +257,7 @@ + + free(path_copy); + } ++#endif + + int cmd_main(int argc, const char **argv) + { +@@ -274,6 +276,7 @@ + + git_config_get_bool("credentialcache.ignoresighup", &ignore_sighup); + ++#if 0 + argc = parse_options(argc, argv, NULL, options, usage, 0); + socket_path = argv[0]; + +@@ -291,6 +294,9 @@ + + serve_cache(socket_path, debug); + delete_tempfile(&socket_file); ++#endif ++ ++ printf("git-credential-cache--daemon not working on Redox\n"); + + return 0; + } +diff -ru git-2.13.1/csum-file.c git-2.13.1-new/csum-file.c +--- git-2.13.1/csum-file.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/csum-file.c 2017-06-25 15:19:22.777420525 -0700 +@@ -128,9 +128,9 @@ + int sink, check; + struct sha1file *f; + +- sink = open("/dev/null", O_WRONLY); ++ sink = open("null:", O_WRONLY); + if (sink < 0) +- die_errno("unable to open /dev/null"); ++ die_errno("unable to open null:"); + check = open(name, O_RDONLY); + if (check < 0) + die_errno("unable to open '%s'", name); +diff -ru git-2.13.1/daemon.c git-2.13.1-new/daemon.c +--- git-2.13.1/daemon.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/daemon.c 2017-06-25 15:19:23.017421990 -0700 +@@ -71,6 +71,7 @@ + return hi->ip_address.buf; + } + ++#if 0 + static void logreport(int priority, const char *err, va_list params) + { + if (log_syslog) { +@@ -89,13 +90,14 @@ + fflush(stderr); + } + } ++#endif + + __attribute__((format (printf, 1, 2))) + static void logerror(const char *err, ...) + { + va_list params; + va_start(params, err); +- logreport(LOG_ERR, err, params); ++ //logreport(LOG_ERR, err, params); + va_end(params); + } + +@@ -106,13 +108,13 @@ + if (!verbose) + return; + va_start(params, err); +- logreport(LOG_INFO, err, params); ++ //logreport(LOG_INFO, err, params); + va_end(params); + } + + static void NORETURN daemon_die(const char *err, va_list params) + { +- logreport(LOG_ERR, err, params); ++ //logreport(LOG_ERR, err, params); + exit(1); + } + +@@ -888,8 +890,7 @@ + + if (!reuseaddr) + return 0; +- return setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, +- &on, sizeof(on)); ++ return 0; + } + + struct socketlist { +@@ -901,7 +902,7 @@ + static const char *ip2str(int family, struct sockaddr *sin, socklen_t len) + { + #ifdef NO_IPV6 +- static char ip[INET_ADDRSTRLEN]; ++ static char ip[1]; + #else + static char ip[INET6_ADDRSTRLEN]; + #endif +@@ -980,7 +981,7 @@ + close(sockfd); + continue; /* not fatal */ + } +- if (listen(sockfd, 5) < 0) { ++ if (1) { + logerror("Could not listen to %s: %s", + ip2str(ai->ai_family, ai->ai_addr, ai->ai_addrlen), + strerror(errno)); +@@ -1019,7 +1020,7 @@ + if (inet_pton(AF_INET, listen_addr, &sin.sin_addr.s_addr) <= 0) + return 0; + } else { +- sin.sin_addr.s_addr = htonl(INADDR_ANY); ++ sin.sin_addr.s_addr = htonl(0); + } + + sockfd = socket(AF_INET, SOCK_STREAM, 0); +@@ -1042,7 +1043,7 @@ + return 0; + } + +- if (listen(sockfd, 5) < 0) { ++ if (0) { + logerror("Could not listen to %s: %s", + ip2str(AF_INET, (struct sockaddr *)&sin, sizeof(sin)), + strerror(errno)); +@@ -1080,6 +1081,8 @@ + + static int service_loop(struct socketlist *socklist) + { ++ die_errno("No daemon support"); ++#if 0 + struct pollfd *pfd; + int i; + +@@ -1116,7 +1119,7 @@ + #endif + } ss; + socklen_t sslen = sizeof(ss); +- int incoming = accept(pfd[i].fd, &ss.sa, &sslen); ++ int incoming = -1; + if (incoming < 0) { + switch (errno) { + case EAGAIN: +@@ -1131,6 +1134,7 @@ + } + } + } ++#endif + } + + #ifdef NO_POSIX_GOODIES +@@ -1158,7 +1162,7 @@ + static void drop_privileges(struct credentials *cred) + { + if (cred && (initgroups(cred->pass->pw_name, cred->gid) || +- setgid (cred->gid) || setuid(cred->pass->pw_uid))) ++ 1)) + die("cannot drop privileges"); + } + +@@ -1167,7 +1171,7 @@ + { + static struct credentials c; + +- c.pass = getpwnam(user_name); ++ c.pass = 0; + if (!c.pass) + die("user not found - %s", user_name); + +@@ -1349,7 +1353,7 @@ + } + + if (log_syslog) { +- openlog("git-daemon", LOG_PID, LOG_DAEMON); ++ //openlog("git-daemon", LOG_PID, LOG_DAEMON); + set_die_routine(daemon_die); + } else + /* avoid splitting a message in the middle */ +@@ -1377,8 +1381,8 @@ + base_path); + + if (inetd_mode) { +- if (!freopen("/dev/null", "w", stderr)) +- die_errno("failed to redirect stderr to /dev/null"); ++ if (!freopen("null:", "w", stderr)) ++ die_errno("failed to redirect stderr to null:"); + } + + if (inetd_mode || serve_mode) +diff -ru git-2.13.1/diff.c git-2.13.1-new/diff.c +--- git-2.13.1/diff.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/diff.c 2017-06-25 15:19:22.794087293 -0700 +@@ -389,7 +389,7 @@ + /* + * Keep track of files used for diffing. Sometimes such an entry + * refers to a temporary file, sometimes to an existing file, and +- * sometimes to "/dev/null". ++ * sometimes to "null:". + */ + static struct diff_tempfile { + /* +@@ -2401,11 +2401,11 @@ + + a_one = quote_two(a_prefix, name_a + (*name_a == '/')); + b_two = quote_two(b_prefix, name_b + (*name_b == '/')); +- lbl[0] = DIFF_FILE_VALID(one) ? a_one : "/dev/null"; +- lbl[1] = DIFF_FILE_VALID(two) ? b_two : "/dev/null"; ++ lbl[0] = DIFF_FILE_VALID(one) ? a_one : "null:"; ++ lbl[1] = DIFF_FILE_VALID(two) ? b_two : "null:"; + strbuf_addf(&header, "%s%sdiff --git %s %s%s\n", line_prefix, meta, a_one, b_two, reset); + if (lbl[0][0] == '/') { +- /* /dev/null */ ++ /* null: */ + strbuf_addf(&header, "%s%snew file mode %06o%s\n", line_prefix, meta, two->mode, reset); + if (xfrm_msg) + strbuf_addstr(&header, xfrm_msg); +@@ -3000,7 +3000,7 @@ + /* A '-' entry produces this for file-2, and + * a '+' entry produces this for file-1. + */ +- temp->name = "/dev/null"; ++ temp->name = "null:"; + xsnprintf(temp->hex, sizeof(temp->hex), "."); + xsnprintf(temp->mode, sizeof(temp->mode), "."); + return temp; +@@ -3260,7 +3260,7 @@ + + static void strip_prefix(int prefix_length, const char **namep, const char **otherp) + { +- /* Strip the prefix but do not molest /dev/null and absolute paths */ ++ /* Strip the prefix but do not molest null: and absolute paths */ + if (*namep && **namep != '/') { + *namep += prefix_length; + if (**namep == '/') +@@ -4630,7 +4630,7 @@ + if (p->one->mode == 0) { + patch_id_add_string(&ctx, "newfilemode"); + patch_id_add_mode(&ctx, p->two->mode); +- patch_id_add_string(&ctx, "---/dev/null"); ++ patch_id_add_string(&ctx, "---null:"); + patch_id_add_string(&ctx, "+++b/"); + git_SHA1_Update(&ctx, p->two->path, len2); + } else if (p->two->mode == 0) { +@@ -4638,7 +4638,7 @@ + patch_id_add_mode(&ctx, p->one->mode); + patch_id_add_string(&ctx, "---a/"); + git_SHA1_Update(&ctx, p->one->path, len1); +- patch_id_add_string(&ctx, "+++/dev/null"); ++ patch_id_add_string(&ctx, "+++null:"); + } else { + patch_id_add_string(&ctx, "---a/"); + git_SHA1_Update(&ctx, p->one->path, len1); +@@ -4802,14 +4802,14 @@ + DIFF_OPT_TST(options, DIFF_FROM_CONTENTS)) { + /* + * run diff_flush_patch for the exit status. setting +- * options->file to /dev/null should be safe, because we ++ * options->file to null: should be safe, because we + * aren't supposed to produce any output anyway. + */ + if (options->close_file) + fclose(options->file); +- options->file = fopen("/dev/null", "w"); ++ options->file = fopen("null:", "w"); + if (!options->file) +- die_errno("Could not open /dev/null"); ++ die_errno("Could not open null:"); + options->close_file = 1; + for (i = 0; i < q->nr; i++) { + struct diff_filepair *p = q->queue[i]; +diff -ru git-2.13.1/diff-no-index.c git-2.13.1-new/diff-no-index.c +--- git-2.13.1/diff-no-index.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/diff-no-index.c 2017-06-25 15:19:22.784087233 -0700 +@@ -44,7 +44,7 @@ + { + struct stat st; + +- if (!path || !strcmp(path, "/dev/null")) ++ if (!path || !strcmp(path, "null:")) + *mode = 0; + #ifdef GIT_WINDOWS_NATIVE + else if (!strcasecmp(path, "nul")) +@@ -80,7 +80,7 @@ + struct diff_filespec *s; + + if (!name) +- name = "/dev/null"; ++ name = "null:"; + s = alloc_filespec(name); + fill_filespec(s, null_sha1, 0, mode); + if (name == file_from_standard_input) +diff -ru git-2.13.1/dir.c git-2.13.1-new/dir.c +--- git-2.13.1/dir.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/dir.c 2017-06-25 15:19:22.970755039 -0700 +@@ -1891,14 +1891,14 @@ + static const char *get_ident_string(void) + { + static struct strbuf sb = STRBUF_INIT; +- struct utsname uts; ++ //struct utsname uts; + + if (sb.len) + return sb.buf; +- if (uname(&uts) < 0) +- die_errno(_("failed to get kernel name and information")); ++ //if (uname(&uts) < 0) ++ // die_errno(_("failed to get kernel name and information")); + strbuf_addf(&sb, "Location %s, system %s", get_git_work_tree(), +- uts.sysname); ++ "Redox"); + return sb.buf; + } + +diff -ru git-2.13.1/entry.c git-2.13.1-new/entry.c +--- git-2.13.1/entry.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/entry.c 2017-06-25 15:19:22.984088453 -0700 +@@ -167,6 +167,7 @@ + return error("unable to read sha1 file of %s (%s)", + path, oid_to_hex(&ce->oid)); + ++#if 0 + if (ce_mode_s_ifmt == S_IFLNK && has_symlinks && !to_tempfile) { + ret = symlink(new, path); + free(new); +@@ -175,6 +176,7 @@ + path); + break; + } ++#endif + + /* + * Convert from git internal format to working tree format +diff -ru git-2.13.1/environment.c git-2.13.1-new/environment.c +--- git-2.13.1/environment.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/environment.c 2017-06-25 15:19:22.984088453 -0700 +@@ -15,7 +15,7 @@ + int trust_executable_bit = 1; + int trust_ctime = 1; + int check_stat = 1; +-int has_symlinks = 1; ++int has_symlinks = 0; + int minimum_abbrev = 4, default_abbrev = -1; + int ignore_case; + int assume_unchanged; +diff -ru git-2.13.1/fast-import.c git-2.13.1-new/fast-import.c +--- git-2.13.1/fast-import.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/fast-import.c 2017-06-25 15:19:23.007421930 -0700 +@@ -423,7 +423,6 @@ + + fprintf(rpt, "fast-import crash report:\n"); + fprintf(rpt, " fast-import process: %"PRIuMAX"\n", (uintmax_t) getpid()); +- fprintf(rpt, " parent process : %"PRIuMAX"\n", (uintmax_t) getppid()); + fprintf(rpt, " at %s\n", show_date(time(NULL), 0, DATE_MODE(ISO8601))); + fputc('\n', rpt); + +@@ -531,6 +530,7 @@ + + static void set_checkpoint_signal(void) + { ++ /* + struct sigaction sa; + + memset(&sa, 0, sizeof(sa)); +@@ -538,6 +538,7 @@ + sigemptyset(&sa.sa_mask); + sa.sa_flags = SA_RESTART; + sigaction(SIGUSR1, &sa, NULL); ++ */ + } + + #endif +diff -ru git-2.13.1/git-compat-util.h git-2.13.1-new/git-compat-util.h +--- git-2.13.1/git-compat-util.h 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/git-compat-util.h 2017-06-25 15:01:02.935061516 -0700 +@@ -179,7 +179,6 @@ + #include + #include + #include +-#include + #ifndef NO_SYS_POLL_H + #include + #else +@@ -195,21 +194,16 @@ + #elif defined(_MSC_VER) + #include "compat/msvc.h" + #else +-#include + #include + #include + #include +-#include +-#include + #ifndef NO_SYS_SELECT_H + #include + #endif + #include +-#include + #include + #include + #include +-#include + #ifndef NO_INTTYPES_H + #include + #else +@@ -1123,4 +1117,7 @@ + + extern int cmd_main(int, const char **); + ++#define utime(...) 0 ++#define shutdown(...) 0 ++ + #endif +diff -ru git-2.13.1/ident.c git-2.13.1-new/ident.c +--- git-2.13.1/ident.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/ident.c 2017-06-25 15:19:22.997421868 -0700 +@@ -33,8 +33,7 @@ + struct passwd *pw; + + errno = 0; +- pw = getpwuid(getuid()); +- if (!pw) { ++ if (1) { + static struct passwd fallback; + fallback.pw_name = "unknown"; + #ifndef NO_GECOS_IN_PWENT +diff -ru git-2.13.1/imap-send.c git-2.13.1-new/imap-send.c +--- git-2.13.1/imap-send.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/imap-send.c 2017-06-25 15:19:22.964088331 -0700 +@@ -1018,7 +1018,7 @@ + + addr.sin_addr.s_addr = *((int *) he->h_addr_list[0]); + +- s = socket(PF_INET, SOCK_STREAM, 0); ++ s = socket(AF_INET, SOCK_STREAM, 0); + + imap_info("Connecting to %s:%hu... ", inet_ntoa(addr.sin_addr), ntohs(addr.sin_port)); + if (connect(s, (struct sockaddr *)&addr, sizeof(addr))) { +diff -ru git-2.13.1/line-log.c git-2.13.1-new/line-log.c +--- git-2.13.1/line-log.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/line-log.c 2017-06-25 15:19:22.830754184 -0700 +@@ -900,7 +900,7 @@ + fprintf(opt->file, "%s%sdiff --git a/%s b/%s%s\n", prefix, c_meta, pair->one->path, pair->two->path, c_reset); + fprintf(opt->file, "%s%s--- %s%s%s\n", prefix, c_meta, + pair->one->oid_valid ? "a/" : "", +- pair->one->oid_valid ? pair->one->path : "/dev/null", ++ pair->one->oid_valid ? pair->one->path : "null:", + c_reset); + fprintf(opt->file, "%s%s+++ b/%s%s\n", prefix, c_meta, pair->two->path, c_reset); + for (i = 0; i < range->ranges.nr; i++) { +diff -ru git-2.13.1/Makefile git-2.13.1-new/Makefile +--- git-2.13.1/Makefile 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/Makefile 2017-06-25 15:02:55.796346882 -0700 +@@ -1202,7 +1202,7 @@ + ifdef NEEDS_LIBINTL_BEFORE_LIBICONV + ICONV_LINK += -lintl + endif +- EXTLIBS += $(ICONV_LINK) -liconv ++ EXTLIBS += $(ICONV_LINK) + endif + ifdef NEEDS_LIBGEN + EXTLIBS += -lgen +@@ -1260,11 +1260,9 @@ + BASIC_CFLAGS += -DNO_GETTEXT + USE_GETTEXT_SCHEME ?= fallthrough + endif +-ifdef NO_POLL + NO_SYS_POLL_H = YesPlease + COMPAT_CFLAGS += -DNO_POLL -Icompat/poll + COMPAT_OBJS += compat/poll/poll.o +-endif + ifdef NO_STRCASESTR + COMPAT_CFLAGS += -DNO_STRCASESTR + COMPAT_OBJS += compat/strcasestr.o +@@ -1368,11 +1366,9 @@ + LIB_OBJS += compat/inet_pton.o + BASIC_CFLAGS += -DNO_INET_PTON + endif +-ifndef NO_UNIX_SOCKETS + LIB_OBJS += unix-socket.o + PROGRAM_OBJS += credential-cache.o + PROGRAM_OBJS += credential-cache--daemon.o +-endif + + ifdef NO_ICONV + BASIC_CFLAGS += -DNO_ICONV +@@ -1530,7 +1526,6 @@ + endif + + ifdef NEEDS_LIBRT +- EXTLIBS += -lrt + endif + + ifdef HAVE_BSD_SYSCTL +diff -ru git-2.13.1/merge-recursive.c git-2.13.1-new/merge-recursive.c +--- git-2.13.1/merge-recursive.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/merge-recursive.c 2017-06-25 15:19:22.990755161 -0700 +@@ -832,6 +832,7 @@ + } + write_in_full(fd, buf, size); + close(fd); ++#if 0 + } else if (S_ISLNK(mode)) { + char *lnk = xmemdupz(buf, size); + safe_create_leading_directories_const(path); +@@ -840,6 +841,7 @@ + ret = err(o, _("failed to symlink '%s': %s"), + path, strerror(errno)); + free(lnk); ++#endif + } else + ret = err(o, + _("do not know what to do with %06o %s '%s'"), +diff -ru git-2.13.1/path.c git-2.13.1-new/path.c +--- git-2.13.1/path.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/path.c 2017-06-25 15:19:23.000755222 -0700 +@@ -565,12 +565,14 @@ + return -1; + + /* Make sure it is a "refs/.." symlink */ ++/* + if (S_ISLNK(st.st_mode)) { + len = readlink(path, buffer, sizeof(buffer)-1); + if (len >= 5 && !memcmp("refs/", buffer, 5)) + return 0; + return -1; + } ++*/ + + /* + * Anything else, just open it and try to see if it is a symbolic ref. +@@ -604,6 +606,7 @@ + return -1; + } + ++/* + static struct passwd *getpw_str(const char *username, size_t len) + { + struct passwd *pw; +@@ -612,6 +615,7 @@ + free(username_z); + return pw; + } ++*/ + + /* + * Return a string with ~ and ~user expanded via getpw*. If buf != NULL, +@@ -643,10 +647,7 @@ + convert_slashes(user_path.buf); + #endif + } else { +- struct passwd *pw = getpw_str(username, username_len); +- if (!pw) + goto return_null; +- strbuf_addstr(&user_path, pw->pw_dir); + } + to_copy = first_slash; + } +diff -ru git-2.13.1/progress.c git-2.13.1-new/progress.c +--- git-2.13.1/progress.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/progress.c 2017-06-25 15:19:22.957421624 -0700 +@@ -52,11 +52,13 @@ + + progress_update = 0; + ++ /* + memset(&sa, 0, sizeof(sa)); + sa.sa_handler = progress_interval; + sigemptyset(&sa.sa_mask); + sa.sa_flags = SA_RESTART; + sigaction(SIGALRM, &sa, NULL); ++ */ + + v.it_interval.tv_sec = 1; + v.it_interval.tv_usec = 0; +@@ -74,8 +76,7 @@ + + static int is_foreground_fd(int fd) + { +- int tpgrp = tcgetpgrp(fd); +- return tpgrp < 0 || tpgrp == getpgid(0); ++ return 1; + } + + static int display(struct progress *progress, unsigned n, const char *done) +diff -ru git-2.13.1/refs/files-backend.c git-2.13.1-new/refs/files-backend.c +--- git-2.13.1/refs/files-backend.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/refs/files-backend.c 2017-06-25 15:19:22.720753512 -0700 +@@ -2165,7 +2165,7 @@ + static int create_ref_symlink(struct ref_lock *lock, const char *target) + { + int ret = -1; +-#ifndef NO_SYMLINK_HEAD ++#if 0 + char *ref_path = get_locked_file_path(lock->lk); + unlink(ref_path); + ret = symlink(target, ref_path); +diff -ru git-2.13.1/rerere.c git-2.13.1-new/rerere.c +--- git-2.13.1/rerere.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/rerere.c 2017-06-25 15:19:22.960754978 -0700 +@@ -682,7 +682,7 @@ + * A successful replay of recorded resolution. + * Mark that "postimage" was used to help gc. + */ +- if (utime(rerere_path(id, "postimage"), NULL) < 0) ++ if (1) + warning_errno("failed utime() on %s", + rerere_path(id, "postimage")); + +diff -ru git-2.13.1/run-command.c git-2.13.1-new/run-command.c +--- git-2.13.1/run-command.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/run-command.c 2017-06-25 15:19:23.024088698 -0700 +@@ -120,9 +120,9 @@ + #ifndef GIT_WINDOWS_NATIVE + static inline void dup_devnull(int to) + { +- int fd = open("/dev/null", O_RDWR); ++ int fd = open("null:", O_RDWR); + if (fd < 0) +- die_errno(_("open /dev/null failed")); ++ die_errno(_("open null: failed")); + if (dup2(fd, to) < 0) + die_errno(_("dup2(%d,%d) failed"), fd, to); + close(fd); +@@ -483,21 +483,21 @@ + struct argv_array nargv = ARGV_ARRAY_INIT; + + if (cmd->no_stdin) +- fhin = open("/dev/null", O_RDWR); ++ fhin = open("null:", O_RDWR); + else if (need_in) + fhin = dup(fdin[0]); + else if (cmd->in) + fhin = dup(cmd->in); + + if (cmd->no_stderr) +- fherr = open("/dev/null", O_RDWR); ++ fherr = open("null:", O_RDWR); + else if (need_err) + fherr = dup(fderr[1]); + else if (cmd->err > 2) + fherr = dup(cmd->err); + + if (cmd->no_stdout) +- fhout = open("/dev/null", O_RDWR); ++ fhout = open("null:", O_RDWR); + else if (cmd->stdout_to_stderr) + fhout = dup(fherr); + else if (need_out) +diff -ru git-2.13.1/send-pack.c git-2.13.1-new/send-pack.c +--- git-2.13.1/send-pack.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/send-pack.c 2017-06-25 15:19:22.960754978 -0700 +@@ -570,7 +570,7 @@ + if (args->stateless_rpc) + close(out); + if (git_connection_is_socket(conn)) +- shutdown(fd[0], SHUT_WR); ++ ; // XXX + + /* + * Do not even bother with the return value; we know we +diff -ru git-2.13.1/setup.c git-2.13.1-new/setup.c +--- git-2.13.1/setup.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/setup.c 2017-06-25 15:19:22.904087966 -0700 +@@ -1143,21 +1143,21 @@ + return read_gitfile_gently(suspect, return_error_code); + } + +-/* if any standard file descriptor is missing open it to /dev/null */ ++/* if any standard file descriptor is missing open it to null: */ + void sanitize_stdfds(void) + { +- int fd = open("/dev/null", O_RDWR, 0); ++ int fd = open("null:", O_RDWR, 0); + while (fd != -1 && fd < 2) + fd = dup(fd); + if (fd == -1) +- die_errno("open /dev/null or dup failed"); ++ die_errno("open null: or dup failed"); + if (fd > 2) + close(fd); + } + + int daemonize(void) + { +-#ifdef NO_POSIX_GOODIES ++#if 1 + errno = ENOSYS; + return -1; + #else +diff -ru git-2.13.1/sha1_file.c git-2.13.1-new/sha1_file.c +--- git-2.13.1/sha1_file.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/sha1_file.c 2017-06-25 15:19:23.014088636 -0700 +@@ -723,7 +723,7 @@ + "pack_report: getpagesize() = %10" SZ_FMT "\n" + "pack_report: core.packedGitWindowSize = %10" SZ_FMT "\n" + "pack_report: core.packedGitLimit = %10" SZ_FMT "\n", +- sz_fmt(getpagesize()), ++ sz_fmt(4096), + sz_fmt(packed_git_window_size), + sz_fmt(packed_git_limit)); + fprintf(stderr, +diff -ru git-2.13.1/strbuf.c git-2.13.1-new/strbuf.c +--- git-2.13.1/strbuf.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/strbuf.c 2017-06-25 15:43:47.829522282 -0700 +@@ -412,6 +412,7 @@ + + int strbuf_readlink(struct strbuf *sb, const char *path, size_t hint) + { ++#if 0 + size_t oldalloc = sb->alloc; + + if (hint < 32) +@@ -435,6 +436,8 @@ + } + if (oldalloc == 0) + strbuf_release(sb); ++#endif ++ fprintf(stderr, "No symlink support\n"); + return -1; + } + +@@ -446,6 +449,11 @@ + for (;; guessed_len *= 2) { + strbuf_grow(sb, guessed_len); + if (getcwd(sb->buf, sb->alloc)) { ++ if (strncmp(sb->buf, "file:", 5) == 0) { ++ char *x = strdup(sb->buf); ++ strcpy(sb->buf, x+5); ++ free(x); ++ } + strbuf_setlen(sb, strlen(sb->buf)); + return 0; + } +diff -ru git-2.13.1/unix-socket.c git-2.13.1-new/unix-socket.c +--- git-2.13.1/unix-socket.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/unix-socket.c 2017-06-25 15:19:23.024088698 -0700 +@@ -1,3 +1,4 @@ ++#if 0 + #include "cache.h" + #include "unix-socket.h" + +@@ -121,3 +122,4 @@ + errno = saved_errno; + return -1; + } ++#endif +diff -ru git-2.13.1/wrapper.c git-2.13.1-new/wrapper.c +--- git-2.13.1/wrapper.c 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/wrapper.c 2017-06-25 15:19:23.014088636 -0700 +@@ -227,6 +227,7 @@ + } + } + ++#if 0 + static int handle_nonblock(int fd, short poll_events, int err) + { + struct pollfd pfd; +@@ -244,6 +245,7 @@ + poll(&pfd, 1, -1); + return 1; + } ++#endif + + /* + * xread() is the same a read(), but it automatically restarts read() +@@ -260,8 +262,6 @@ + if (nr < 0) { + if (errno == EINTR) + continue; +- if (handle_nonblock(fd, POLLIN, errno)) +- continue; + } + return nr; + } +@@ -282,8 +282,6 @@ + if (nr < 0) { + if (errno == EINTR) + continue; +- if (handle_nonblock(fd, POLLOUT, errno)) +- continue; + } + + return nr; +@@ -653,7 +651,7 @@ + + void sleep_millisec(int millisec) + { +- poll(NULL, 0, millisec); ++ //poll(NULL, 0, millisec); + } + + int xgethostname(char *buf, size_t len) +@@ -663,8 +661,6 @@ + * specify whether the buffer will be null-terminated, so to + * be safe, do it ourselves. + */ +- int ret = gethostname(buf, len); +- if (!ret) +- buf[len - 1] = 0; +- return ret; ++ strcpy(buf, "redox"); ++ return 0; + } diff --git a/recipes/git/recipe.sh b/recipes/git/recipe.sh new file mode 100644 index 00000000..f836635e --- /dev/null +++ b/recipes/git/recipe.sh @@ -0,0 +1,70 @@ +VERSION=2.13.1 +TAR=https://www.kernel.org/pub/software/scm/git/git-$VERSION.tar.xz + +HOST=x86_64-elf-redox + +export AR="${HOST}-ar" +export AS="${HOST}-as" +export CC="${HOST}-gcc" +export CXX="${HOST}-g++" +export LD="${HOST}-ld" +export NM="${HOST}-nm" +export OBJCOPY="${HOST}-objcopy" +export OBJDUMP="${HOST}-objdump" +export RANLIB="${HOST}-ranlib" +export READELF="${HOST}-readelf" +export STRIP="${HOST}-strip" + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + if [ ! -d zlib ] + then + mkdir zlib + if [ ! -f zlib-1.2.11.tar.gz ] + then + wget http://zlib.net/zlib-1.2.11.tar.gz + fi + tar xvf zlib-1.2.11.tar.gz -C zlib --strip-components 1 + fi + + rm -rf zlib-prefix + mkdir zlib-prefix + + pushd zlib + ./configure --static --prefix=/ + make -j"$(nproc)" + make DESTDIR="$PWD/../zlib-prefix" install + popd + + autoconf + ./configure --host=${HOST} --prefix=/ --with-zlib="${PWD}/zlib-prefix" + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make prefix="$dest" install + ${STRIP} $1/bin/* || true + ${STRIP} $1/libexec/git-core/* || true + skip=1 +} From f51d3cb8a0c03786db23a9331968257bc63d043d Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Wed, 5 Jul 2017 19:47:57 -0700 Subject: [PATCH 0170/3180] Use symlinks in git --- recipes/git/git.patch | 175 ++---------------------------------------- 1 file changed, 8 insertions(+), 167 deletions(-) diff --git a/recipes/git/git.patch b/recipes/git/git.patch index d4a60695..ef031f8e 100644 --- a/recipes/git/git.patch +++ b/recipes/git/git.patch @@ -1,6 +1,6 @@ diff -ru git-2.13.1/apply.c git-2.13.1-new/apply.c --- git-2.13.1/apply.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/apply.c 2017-06-25 15:19:22.984088453 -0700 ++++ git-2.13.1-new/apply.c 2017-07-05 12:22:03.501240281 -0700 @@ -449,7 +449,7 @@ static int is_dev_null(const char *str) @@ -32,20 +32,6 @@ diff -ru git-2.13.1/apply.c git-2.13.1-new/apply.c } return 0; -@@ -4309,11 +4309,13 @@ - return !!mkdir(path, 0777); - } - -+#if 0 - if (has_symlinks && S_ISLNK(mode)) - /* Although buf:size is counted string, it also is NUL - * terminated. - */ - return !!symlink(buf, path); -+#endif - - fd = open(path, O_CREAT | O_EXCL | O_WRONLY, (mode & 0100) ? 0777 : 0666); - if (fd < 0) diff -ru git-2.13.1/builtin/am.c git-2.13.1-new/builtin/am.c --- git-2.13.1/builtin/am.c 2017-06-04 18:08:11.000000000 -0700 +++ git-2.13.1-new/builtin/am.c 2017-06-25 15:19:22.550752475 -0700 @@ -58,18 +44,6 @@ diff -ru git-2.13.1/builtin/am.c git-2.13.1-new/builtin/am.c * intend to feed us a patch but wanted to continue * unattended. */ -diff -ru git-2.13.1/builtin/difftool.c git-2.13.1-new/builtin/difftool.c ---- git-2.13.1/builtin/difftool.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/builtin/difftool.c 2017-06-25 15:19:22.667419854 -0700 -@@ -487,7 +487,7 @@ - } - add_path(&wtdir, wtdir_len, dst_path); - if (symlinks) { -- if (symlink(wtdir.buf, rdir.buf)) { -+ if (1) { - ret = error_errno("could not symlink '%s' to '%s'", wtdir.buf, rdir.buf); - goto finish; - } diff -ru git-2.13.1/builtin/diff-tree.c git-2.13.1-new/builtin/diff-tree.c --- git-2.13.1/builtin/diff-tree.c 2017-06-04 18:08:11.000000000 -0700 +++ git-2.13.1-new/builtin/diff-tree.c 2017-06-25 15:19:22.580752658 -0700 @@ -94,36 +68,6 @@ diff -ru git-2.13.1/builtin/fetch.c git-2.13.1-new/builtin/fetch.c int want_status; int summary_width = transport_summary_width(ref_map); -diff -ru git-2.13.1/builtin/init-db.c git-2.13.1-new/builtin/init-db.c ---- git-2.13.1/builtin/init-db.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/builtin/init-db.c 2017-06-25 15:19:22.667419854 -0700 -@@ -74,7 +74,7 @@ - struct strbuf lnk = STRBUF_INIT; - if (strbuf_readlink(&lnk, template->buf, 0) < 0) - die_errno(_("cannot readlink '%s'"), template->buf); -- if (symlink(lnk.buf, path->buf)) -+ if (1) - die_errno(_("cannot symlink '%s' '%s'"), - lnk.buf, path->buf); - strbuf_release(&lnk); -@@ -231,7 +231,7 @@ - */ - path = git_path_buf(&buf, "HEAD"); - reinit = (!access(path, R_OK) -- || readlink(path, junk, sizeof(junk)-1) != -1); -+ || 1); - if (!reinit) { - if (create_symref("HEAD", "refs/heads/master", NULL) < 0) - exit(1); -@@ -273,7 +273,7 @@ - path = git_path_buf(&buf, "tXXXXXX"); - if (!close(xmkstemp(path)) && - !unlink(path) && -- !symlink("testing", path) && -+ !1 && - !lstat(path, &st1) && - S_ISLNK(st1.st_mode)) - unlink(path); /* good */ diff -ru git-2.13.1/builtin/log.c git-2.13.1-new/builtin/log.c --- git-2.13.1/builtin/log.c 2017-06-04 18:08:11.000000000 -0700 +++ git-2.13.1-new/builtin/log.c 2017-06-25 15:19:22.664086500 -0700 @@ -285,16 +229,7 @@ diff -ru git-2.13.1/compat/terminal.c git-2.13.1-new/compat/terminal.c #endif diff -ru git-2.13.1/config.c git-2.13.1-new/config.c --- git-2.13.1/config.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/config.c 2017-06-25 15:19:22.994088514 -0700 -@@ -1005,7 +1005,7 @@ - } - - if (!strcmp(var, "core.symlinks")) { -- has_symlinks = git_config_bool(var, value); -+ has_symlinks = 0; - return 0; - } - ++++ git-2.13.1-new/config.c 2017-07-05 12:22:24.064535733 -0700 @@ -1094,7 +1094,7 @@ } @@ -767,37 +702,6 @@ diff -ru git-2.13.1/dir.c git-2.13.1-new/dir.c return sb.buf; } -diff -ru git-2.13.1/entry.c git-2.13.1-new/entry.c ---- git-2.13.1/entry.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/entry.c 2017-06-25 15:19:22.984088453 -0700 -@@ -167,6 +167,7 @@ - return error("unable to read sha1 file of %s (%s)", - path, oid_to_hex(&ce->oid)); - -+#if 0 - if (ce_mode_s_ifmt == S_IFLNK && has_symlinks && !to_tempfile) { - ret = symlink(new, path); - free(new); -@@ -175,6 +176,7 @@ - path); - break; - } -+#endif - - /* - * Convert from git internal format to working tree format -diff -ru git-2.13.1/environment.c git-2.13.1-new/environment.c ---- git-2.13.1/environment.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/environment.c 2017-06-25 15:19:22.984088453 -0700 -@@ -15,7 +15,7 @@ - int trust_executable_bit = 1; - int trust_ctime = 1; - int check_stat = 1; --int has_symlinks = 1; -+int has_symlinks = 0; - int minimum_abbrev = 4, default_abbrev = -1; - int ignore_case; - int assume_unchanged; diff -ru git-2.13.1/fast-import.c git-2.13.1-new/fast-import.c --- git-2.13.1/fast-import.c 2017-06-04 18:08:11.000000000 -0700 +++ git-2.13.1-new/fast-import.c 2017-06-25 15:19:23.007421930 -0700 @@ -947,44 +851,10 @@ diff -ru git-2.13.1/Makefile git-2.13.1-new/Makefile endif ifdef HAVE_BSD_SYSCTL -diff -ru git-2.13.1/merge-recursive.c git-2.13.1-new/merge-recursive.c ---- git-2.13.1/merge-recursive.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/merge-recursive.c 2017-06-25 15:19:22.990755161 -0700 -@@ -832,6 +832,7 @@ - } - write_in_full(fd, buf, size); - close(fd); -+#if 0 - } else if (S_ISLNK(mode)) { - char *lnk = xmemdupz(buf, size); - safe_create_leading_directories_const(path); -@@ -840,6 +841,7 @@ - ret = err(o, _("failed to symlink '%s': %s"), - path, strerror(errno)); - free(lnk); -+#endif - } else - ret = err(o, - _("do not know what to do with %06o %s '%s'"), diff -ru git-2.13.1/path.c git-2.13.1-new/path.c --- git-2.13.1/path.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/path.c 2017-06-25 15:19:23.000755222 -0700 -@@ -565,12 +565,14 @@ - return -1; - - /* Make sure it is a "refs/.." symlink */ -+/* - if (S_ISLNK(st.st_mode)) { - len = readlink(path, buffer, sizeof(buffer)-1); - if (len >= 5 && !memcmp("refs/", buffer, 5)) - return 0; - return -1; - } -+*/ - - /* - * Anything else, just open it and try to see if it is a symbolic ref. -@@ -604,6 +606,7 @@ ++++ git-2.13.1-new/path.c 2017-07-05 12:23:08.831145653 -0700 +@@ -604,6 +604,7 @@ return -1; } @@ -992,7 +862,7 @@ diff -ru git-2.13.1/path.c git-2.13.1-new/path.c static struct passwd *getpw_str(const char *username, size_t len) { struct passwd *pw; -@@ -612,6 +615,7 @@ +@@ -612,6 +613,7 @@ free(username_z); return pw; } @@ -1000,7 +870,7 @@ diff -ru git-2.13.1/path.c git-2.13.1-new/path.c /* * Return a string with ~ and ~user expanded via getpw*. If buf != NULL, -@@ -643,10 +647,7 @@ +@@ -643,10 +645,7 @@ convert_slashes(user_path.buf); #endif } else { @@ -1038,18 +908,6 @@ diff -ru git-2.13.1/progress.c git-2.13.1-new/progress.c } static int display(struct progress *progress, unsigned n, const char *done) -diff -ru git-2.13.1/refs/files-backend.c git-2.13.1-new/refs/files-backend.c ---- git-2.13.1/refs/files-backend.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/refs/files-backend.c 2017-06-25 15:19:22.720753512 -0700 -@@ -2165,7 +2165,7 @@ - static int create_ref_symlink(struct ref_lock *lock, const char *target) - { - int ret = -1; --#ifndef NO_SYMLINK_HEAD -+#if 0 - char *ref_path = get_locked_file_path(lock->lk); - unlink(ref_path); - ret = symlink(target, ref_path); diff -ru git-2.13.1/rerere.c git-2.13.1-new/rerere.c --- git-2.13.1/rerere.c 2017-06-04 18:08:11.000000000 -0700 +++ git-2.13.1-new/rerere.c 2017-06-25 15:19:22.960754978 -0700 @@ -1157,25 +1015,8 @@ diff -ru git-2.13.1/sha1_file.c git-2.13.1-new/sha1_file.c fprintf(stderr, diff -ru git-2.13.1/strbuf.c git-2.13.1-new/strbuf.c --- git-2.13.1/strbuf.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/strbuf.c 2017-06-25 15:43:47.829522282 -0700 -@@ -412,6 +412,7 @@ - - int strbuf_readlink(struct strbuf *sb, const char *path, size_t hint) - { -+#if 0 - size_t oldalloc = sb->alloc; - - if (hint < 32) -@@ -435,6 +436,8 @@ - } - if (oldalloc == 0) - strbuf_release(sb); -+#endif -+ fprintf(stderr, "No symlink support\n"); - return -1; - } - -@@ -446,6 +449,11 @@ ++++ git-2.13.1-new/strbuf.c 2017-07-05 12:24:29.957791169 -0700 +@@ -446,6 +446,11 @@ for (;; guessed_len *= 2) { strbuf_grow(sb, guessed_len); if (getcwd(sb->buf, sb->alloc)) { From b90d029b7e24c0628ec3e183fdafbc7c0bedb222 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Wed, 5 Jul 2017 19:48:30 -0700 Subject: [PATCH 0171/3180] Corrections to git recipe --- recipes/git/recipe.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/git/recipe.sh b/recipes/git/recipe.sh index f836635e..2146cb8d 100644 --- a/recipes/git/recipe.sh +++ b/recipes/git/recipe.sh @@ -63,8 +63,9 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" - make prefix="$dest" install + make DESTDIR="$dest" install ${STRIP} $1/bin/* || true ${STRIP} $1/libexec/git-core/* || true + rm -rf $1/share/man skip=1 } From a15946a32469079477d798f7d17186c4499bc764 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 6 Jul 2017 14:24:19 -0700 Subject: [PATCH 0172/3180] System for compile-time dependencies; use for openssl --- cook.sh | 16 ++++++++++++++++ recipes/cargo/recipe.sh | 19 ++----------------- recipes/curl/recipe.sh | 22 ++-------------------- recipes/openssl/recipe.sh | 38 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 58 insertions(+), 37 deletions(-) create mode 100644 recipes/openssl/recipe.sh diff --git a/cook.sh b/cook.sh index 9d11a95b..4a9ab783 100755 --- a/cook.sh +++ b/cook.sh @@ -95,6 +95,21 @@ function op { fi ;; prepare) + rm -rf sysroot + mkdir sysroot + + if [ ${#BUILD_DEPENDS} -gt 0 ] + then + pushd $ROOT + ./repo.sh ${BUILD_DEPENDS} + popd + + for i in "${BUILD_DEPENDS[@]}" + do + CC=cc cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- --target=$TARGET install --root sysroot "$REPO/$i.tar.gz" + done + fi + rm -rf build cp -r source build @@ -105,6 +120,7 @@ function op { ;; unprepare) rm -rf build + rm -rf sysroot ;; version) pushd build > /dev/null diff --git a/recipes/cargo/recipe.sh b/recipes/cargo/recipe.sh index 83526793..dad63c3b 100644 --- a/recipes/cargo/recipe.sh +++ b/recipes/cargo/recipe.sh @@ -1,22 +1,7 @@ GIT=https://github.com/ids1024/cargo.git BRANCH=redox +BUILD_DEPENDS=(openssl) function recipe_build { - if [ -d openssl-redox ] - then - git -C openssl-redox pull - else - git clone https://github.com/ids1024/openssl.git -b redox --depth 1 openssl-redox - fi - - rm -rf openssl-prefix - mkdir openssl-prefix - - pushd openssl-redox - ./Configure no-shared no-dgram redox-x86_64 --prefix="/" - make -j"$(nproc)" - make DESTDIR="$PWD/../openssl-prefix" install - popd - - export OPENSSL_DIR=$PWD/openssl-prefix + export OPENSSL_DIR="$PWD/../sysroot" } diff --git a/recipes/curl/recipe.sh b/recipes/curl/recipe.sh index ad96990c..80ef01b7 100644 --- a/recipes/curl/recipe.sh +++ b/recipes/curl/recipe.sh @@ -1,5 +1,6 @@ GIT=https://github.com/ids1024/curl.git BRANCH=redox +BUILD_DEPENDS=(openssl) HOST=x86_64-elf-redox @@ -14,27 +15,8 @@ function recipe_update { } function recipe_build { - if [ -d openssl-redox ] - then - git -C openssl-redox pull - else - git clone https://github.com/ids1024/openssl.git -b redox --depth 1 openssl-redox - fi - - rm -rf openssl-prefix - mkdir openssl-prefix - - pushd openssl-redox - ./Configure no-shared no-dgram redox-x86_64 --prefix="/" - make -j"$(nproc)" - make DESTDIR="$PWD/../openssl-prefix" install - popd - - rm -rf openssl-prefix/lib/pkgconfig # pkg-config returns paths based on / prefix, breaking cross compile - - ./configure --prefix=/ --host=${HOST} --disable-tftp --disable-ftp --disable-ntlm-wb --with-ssl="$PWD/openssl-prefix" --with-ca-path=/ssl/certs + ./configure --prefix=/ --host=${HOST} --disable-tftp --disable-ftp --disable-ntlm-wb --with-ssl="$PWD/../sysroot" --with-ca-path=/ssl/certs make - skip=1 } diff --git a/recipes/openssl/recipe.sh b/recipes/openssl/recipe.sh new file mode 100644 index 00000000..48559cac --- /dev/null +++ b/recipes/openssl/recipe.sh @@ -0,0 +1,38 @@ +GIT=https://github.com/ids1024/openssl.git +BRANCH=redox + +HOST=x86_64-elf-redox + +function recipe_version { + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + ./Configure no-shared no-dgram redox-x86_64 --prefix="/" + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + rm -rf "$1/lib/pkgconfig" # pkg-config returns paths based on / prefix, breaking cross compile + rm -rf "$1/{share,ssl}" + skip=1 +} From b7db0cafb8ad627d3d0c6644c270be679957fe68 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 6 Jul 2017 14:25:19 -0700 Subject: [PATCH 0173/3180] Update pkgutils --- pkgutils | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgutils b/pkgutils index bf8cc11d..96a6b2d9 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit bf8cc11ddcc649c3be3e97055ab6a7f4060b7946 +Subproject commit 96a6b2d9fe30d054ef754e6cc3bf88ff60e40199 From f0bb6ec31d3e3301fa08f778650173bc8a73a19a Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 6 Jul 2017 14:28:06 -0700 Subject: [PATCH 0174/3180] Add sysroot to .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 64dda0f6..22481bbf 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,5 @@ stage.sig stage.tar stage.tar.gz stage.toml +sysroot xargo From ccfd1885eef48436d75c07f210b2076339a9701a Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Fri, 7 Jul 2017 10:19:23 -0700 Subject: [PATCH 0175/3180] Add zlib recipe; use in git recipe --- recipes/git/recipe.sh | 24 +++--------------------- recipes/zlib/recipe.sh | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 21 deletions(-) create mode 100644 recipes/zlib/recipe.sh diff --git a/recipes/git/recipe.sh b/recipes/git/recipe.sh index 2146cb8d..cf8b92f4 100644 --- a/recipes/git/recipe.sh +++ b/recipes/git/recipe.sh @@ -1,5 +1,6 @@ VERSION=2.13.1 TAR=https://www.kernel.org/pub/software/scm/git/git-$VERSION.tar.xz +BUILD_DEPENDS=(zlib) HOST=x86_64-elf-redox @@ -26,27 +27,8 @@ function recipe_update { } function recipe_build { - if [ ! -d zlib ] - then - mkdir zlib - if [ ! -f zlib-1.2.11.tar.gz ] - then - wget http://zlib.net/zlib-1.2.11.tar.gz - fi - tar xvf zlib-1.2.11.tar.gz -C zlib --strip-components 1 - fi - - rm -rf zlib-prefix - mkdir zlib-prefix - - pushd zlib - ./configure --static --prefix=/ - make -j"$(nproc)" - make DESTDIR="$PWD/../zlib-prefix" install - popd - - autoconf - ./configure --host=${HOST} --prefix=/ --with-zlib="${PWD}/zlib-prefix" + autoconf -f + ./configure --host=${HOST} --prefix=/ --with-zlib="${PWD}/../sysroot" make skip=1 } diff --git a/recipes/zlib/recipe.sh b/recipes/zlib/recipe.sh new file mode 100644 index 00000000..42ca0eeb --- /dev/null +++ b/recipes/zlib/recipe.sh @@ -0,0 +1,35 @@ +VERSION=1.2.11 +TAR=http://zlib.net/zlib-$VERSION.tar.gz + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + ./configure --static --prefix=/ + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + rm -rf "$1"/{lib/pkgconfig,share} + skip=1 +} From 4955cacafd4c459937151d2d667e465363c92a22 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Fri, 7 Jul 2017 10:39:32 -0700 Subject: [PATCH 0176/3180] git: Do not patch configure script --- recipes/git/git.patch | 82 ------------------------------------------- recipes/git/recipe.sh | 9 ++--- 2 files changed, 5 insertions(+), 86 deletions(-) diff --git a/recipes/git/git.patch b/recipes/git/git.patch index ef031f8e..b853970b 100644 --- a/recipes/git/git.patch +++ b/recipes/git/git.patch @@ -239,88 +239,6 @@ diff -ru git-2.13.1/config.c git-2.13.1-new/config.c packed_git_window_size = git_config_ulong(var, value); /* This value must be multiple of (pagesize * 2) */ -diff -ru git-2.13.1/configure.ac git-2.13.1-new/configure.ac ---- git-2.13.1/configure.ac 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/configure.ac 2017-06-17 08:31:04.941134924 -0700 -@@ -732,10 +732,7 @@ - [NO_SYS_SELECT_H=UnfortunatelyYes]) - GIT_CONF_SUBST([NO_SYS_SELECT_H]) - # --# Define NO_SYS_POLL_H if you don't have sys/poll.h --AC_CHECK_HEADER([sys/poll.h], --[NO_SYS_POLL_H=], --[NO_SYS_POLL_H=UnfortunatelyYes]) -+NO_SYS_POLL_H=UnfortunatelyYes - GIT_CONF_SUBST([NO_SYS_POLL_H]) - # - # Define NO_INTTYPES_H if you don't have inttypes.h -@@ -860,56 +857,13 @@ - # - # Define FREAD_READS_DIRECTORIES if your are on a system which succeeds - # when attempting to read from an fopen'ed directory. --AC_CACHE_CHECK([whether system succeeds to read fopen'ed directory], -- [ac_cv_fread_reads_directories], --[ --AC_RUN_IFELSE( -- [AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT], -- [[char c; -- FILE *f = fopen(".", "r"); -- return f && fread(&c, 1, 1, f)]])], -- [ac_cv_fread_reads_directories=no], -- [ac_cv_fread_reads_directories=yes]) --]) --if test $ac_cv_fread_reads_directories = yes; then -- FREAD_READS_DIRECTORIES=UnfortunatelyYes --else -- FREAD_READS_DIRECTORIES= --fi -+FREAD_READS_DIRECTORIES=UnfortunatelyYes - GIT_CONF_SUBST([FREAD_READS_DIRECTORIES]) - # - # Define SNPRINTF_RETURNS_BOGUS if your are on a system which snprintf() - # or vsnprintf() return -1 instead of number of characters which would - # have been written to the final string if enough space had been available. --AC_CACHE_CHECK([whether snprintf() and/or vsnprintf() return bogus value], -- [ac_cv_snprintf_returns_bogus], --[ --AC_RUN_IFELSE( -- [AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT -- #include "stdarg.h" -- -- int test_vsnprintf(char *str, size_t maxsize, const char *format, ...) -- { -- int ret; -- va_list ap; -- va_start(ap, format); -- ret = vsnprintf(str, maxsize, format, ap); -- va_end(ap); -- return ret; -- }], -- [[char buf[6]; -- if (test_vsnprintf(buf, 3, "%s", "12345") != 5 -- || strcmp(buf, "12")) return 1; -- if (snprintf(buf, 3, "%s", "12345") != 5 -- || strcmp(buf, "12")) return 1]])], -- [ac_cv_snprintf_returns_bogus=no], -- [ac_cv_snprintf_returns_bogus=yes]) --]) --if test $ac_cv_snprintf_returns_bogus = yes; then - SNPRINTF_RETURNS_BOGUS=UnfortunatelyYes --else -- SNPRINTF_RETURNS_BOGUS= --fi - GIT_CONF_SUBST([SNPRINTF_RETURNS_BOGUS]) - # - # Define NEEDS_MODE_TRANSLATION if your OS strays from the typical file type -@@ -1064,6 +1018,8 @@ - # - # - # Define NO_MMAP if you want to avoid mmap. -+NO_MMAP=YES -+GIT_CONF_SUBST([NO_MMAP]) - # - # Define NO_ICONV if your libc does not properly support iconv. - diff -ru git-2.13.1/connect.c git-2.13.1-new/connect.c --- git-2.13.1/connect.c 2017-06-04 18:08:11.000000000 -0700 +++ git-2.13.1-new/connect.c 2017-06-25 16:49:55.499598388 -0700 diff --git a/recipes/git/recipe.sh b/recipes/git/recipe.sh index cf8b92f4..71b17ffa 100644 --- a/recipes/git/recipe.sh +++ b/recipes/git/recipe.sh @@ -16,6 +16,8 @@ export RANLIB="${HOST}-ranlib" export READELF="${HOST}-readelf" export STRIP="${HOST}-strip" +MAKEFLAGS="NO_MMAP=1" + function recipe_version { echo "$VERSION" skip=1 @@ -27,9 +29,8 @@ function recipe_update { } function recipe_build { - autoconf -f - ./configure --host=${HOST} --prefix=/ --with-zlib="${PWD}/../sysroot" - make + ./configure --host=${HOST} --prefix=/ --with-zlib="${PWD}/../sysroot" ac_cv_fread_reads_directories=yes ac_cv_snprintf_returns_bogus=yes + make ${MAKEFLAGS} skip=1 } @@ -45,7 +46,7 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + make DESTDIR="$dest" ${MAKEFLAGS} install ${STRIP} $1/bin/* || true ${STRIP} $1/libexec/git-core/* || true rm -rf $1/share/man From f666977dc514982b2a73c5edc75c95fdf725c378 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Fri, 7 Jul 2017 12:55:07 -0700 Subject: [PATCH 0177/3180] Use curl in git --- recipes/curl/recipe.sh | 5 +++-- recipes/expat/recipe.sh | 37 +++++++++++++++++++++++++++++++++++++ recipes/git/recipe.sh | 9 ++++++--- 3 files changed, 46 insertions(+), 5 deletions(-) create mode 100644 recipes/expat/recipe.sh diff --git a/recipes/curl/recipe.sh b/recipes/curl/recipe.sh index 80ef01b7..e3ec6788 100644 --- a/recipes/curl/recipe.sh +++ b/recipes/curl/recipe.sh @@ -31,7 +31,8 @@ function recipe_clean { } function recipe_stage { - mkdir "$1/bin" - cp src/curl "$1/bin" + dest="$(realpath $1)" + make DESTDIR="$dest" install + rm -rf "$1"/{share,lib/pkgconfig} skip=1 } diff --git a/recipes/expat/recipe.sh b/recipes/expat/recipe.sh new file mode 100644 index 00000000..67218005 --- /dev/null +++ b/recipes/expat/recipe.sh @@ -0,0 +1,37 @@ +VERSION=2.2.1 +TAR=http://downloads.sourceforge.net/project/expat/expat/$VERSION/expat-$VERSION.tar.bz2 + +HOST=x86_64-elf-redox + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + ./configure --host=${HOST} --prefix=/ + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + rm -rf "$1"/{lib/pkgconfig,share} + skip=1 +} diff --git a/recipes/git/recipe.sh b/recipes/git/recipe.sh index 71b17ffa..b19f0403 100644 --- a/recipes/git/recipe.sh +++ b/recipes/git/recipe.sh @@ -1,6 +1,6 @@ VERSION=2.13.1 TAR=https://www.kernel.org/pub/software/scm/git/git-$VERSION.tar.xz -BUILD_DEPENDS=(zlib) +BUILD_DEPENDS=(zlib curl openssl expat) HOST=x86_64-elf-redox @@ -16,7 +16,7 @@ export RANLIB="${HOST}-ranlib" export READELF="${HOST}-readelf" export STRIP="${HOST}-strip" -MAKEFLAGS="NO_MMAP=1" +MAKEFLAGS="NO_MMAP=1 NEEDS_SSL_WITH_CURL=1 NEEDS_CRYPTO_WITH_SSL=1" function recipe_version { echo "$VERSION" @@ -29,7 +29,10 @@ function recipe_update { } function recipe_build { - ./configure --host=${HOST} --prefix=/ --with-zlib="${PWD}/../sysroot" ac_cv_fread_reads_directories=yes ac_cv_snprintf_returns_bogus=yes + sysroot="${PWD}/../sysroot" + export LDFLAGS="-L$sysroot/lib" + export CPPFLAGS="-I$sysroot/include" + ./configure --host=${HOST} --prefix=/ ac_cv_fread_reads_directories=yes ac_cv_snprintf_returns_bogus=yes ac_cv_lib_curl_curl_global_init=yes CURL_CONFIG=no make ${MAKEFLAGS} skip=1 } From 1dd0e467211716ebfd4ee5a07f67e40f43776d39 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Fri, 7 Jul 2017 13:28:39 -0700 Subject: [PATCH 0178/3180] git: Avoid patching Makefile --- recipes/git/git.patch | 57 ------------------------------------------- recipes/git/recipe.sh | 2 +- 2 files changed, 1 insertion(+), 58 deletions(-) diff --git a/recipes/git/git.patch b/recipes/git/git.patch index b853970b..ff708f0d 100644 --- a/recipes/git/git.patch +++ b/recipes/git/git.patch @@ -725,50 +725,6 @@ diff -ru git-2.13.1/line-log.c git-2.13.1-new/line-log.c c_reset); fprintf(opt->file, "%s%s+++ b/%s%s\n", prefix, c_meta, pair->two->path, c_reset); for (i = 0; i < range->ranges.nr; i++) { -diff -ru git-2.13.1/Makefile git-2.13.1-new/Makefile ---- git-2.13.1/Makefile 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/Makefile 2017-06-25 15:02:55.796346882 -0700 -@@ -1202,7 +1202,7 @@ - ifdef NEEDS_LIBINTL_BEFORE_LIBICONV - ICONV_LINK += -lintl - endif -- EXTLIBS += $(ICONV_LINK) -liconv -+ EXTLIBS += $(ICONV_LINK) - endif - ifdef NEEDS_LIBGEN - EXTLIBS += -lgen -@@ -1260,11 +1260,9 @@ - BASIC_CFLAGS += -DNO_GETTEXT - USE_GETTEXT_SCHEME ?= fallthrough - endif --ifdef NO_POLL - NO_SYS_POLL_H = YesPlease - COMPAT_CFLAGS += -DNO_POLL -Icompat/poll - COMPAT_OBJS += compat/poll/poll.o --endif - ifdef NO_STRCASESTR - COMPAT_CFLAGS += -DNO_STRCASESTR - COMPAT_OBJS += compat/strcasestr.o -@@ -1368,11 +1366,9 @@ - LIB_OBJS += compat/inet_pton.o - BASIC_CFLAGS += -DNO_INET_PTON - endif --ifndef NO_UNIX_SOCKETS - LIB_OBJS += unix-socket.o - PROGRAM_OBJS += credential-cache.o - PROGRAM_OBJS += credential-cache--daemon.o --endif - - ifdef NO_ICONV - BASIC_CFLAGS += -DNO_ICONV -@@ -1530,7 +1526,6 @@ - endif - - ifdef NEEDS_LIBRT -- EXTLIBS += -lrt - endif - - ifdef HAVE_BSD_SYSCTL diff -ru git-2.13.1/path.c git-2.13.1-new/path.c --- git-2.13.1/path.c 2017-06-04 18:08:11.000000000 -0700 +++ git-2.13.1-new/path.c 2017-07-05 12:23:08.831145653 -0700 @@ -946,19 +902,6 @@ diff -ru git-2.13.1/strbuf.c git-2.13.1-new/strbuf.c strbuf_setlen(sb, strlen(sb->buf)); return 0; } -diff -ru git-2.13.1/unix-socket.c git-2.13.1-new/unix-socket.c ---- git-2.13.1/unix-socket.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/unix-socket.c 2017-06-25 15:19:23.024088698 -0700 -@@ -1,3 +1,4 @@ -+#if 0 - #include "cache.h" - #include "unix-socket.h" - -@@ -121,3 +122,4 @@ - errno = saved_errno; - return -1; - } -+#endif diff -ru git-2.13.1/wrapper.c git-2.13.1-new/wrapper.c --- git-2.13.1/wrapper.c 2017-06-04 18:08:11.000000000 -0700 +++ git-2.13.1-new/wrapper.c 2017-06-25 15:19:23.014088636 -0700 diff --git a/recipes/git/recipe.sh b/recipes/git/recipe.sh index b19f0403..ec9a5d92 100644 --- a/recipes/git/recipe.sh +++ b/recipes/git/recipe.sh @@ -16,7 +16,7 @@ export RANLIB="${HOST}-ranlib" export READELF="${HOST}-readelf" export STRIP="${HOST}-strip" -MAKEFLAGS="NO_MMAP=1 NEEDS_SSL_WITH_CURL=1 NEEDS_CRYPTO_WITH_SSL=1" +MAKEFLAGS="NO_MMAP=1 NEEDS_SSL_WITH_CURL=1 NEEDS_CRYPTO_WITH_SSL=1 NO_UNIX_SOCKETS=1 NO_POLL=1 NEEDS_LIBICONV= NEEDS_LIBRT=" function recipe_version { echo "$VERSION" From f70775dee917bf75c1145bcc0182afd7e0059668 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Fri, 7 Jul 2017 13:39:17 -0700 Subject: [PATCH 0179/3180] Simpify patch --- recipes/git/git.patch | 29 ----------------------------- 1 file changed, 29 deletions(-) diff --git a/recipes/git/git.patch b/recipes/git/git.patch index ff708f0d..bb245d43 100644 --- a/recipes/git/git.patch +++ b/recipes/git/git.patch @@ -268,18 +268,6 @@ diff -ru git-2.13.1/connect.c git-2.13.1-new/connect.c } -diff -ru git-2.13.1/credential-cache.c git-2.13.1-new/credential-cache.c ---- git-2.13.1/credential-cache.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/credential-cache.c 2017-06-25 15:19:23.024088698 -0700 -@@ -11,7 +11,7 @@ - static int send_request(const char *socket, const struct strbuf *out) - { - int got_data = 0; -- int fd = unix_stream_connect(socket); -+ int fd = -1; - - if (fd < 0) - return -1; diff -ru git-2.13.1/credential-cache--daemon.c git-2.13.1-new/credential-cache--daemon.c --- git-2.13.1/credential-cache--daemon.c 2017-06-04 18:08:11.000000000 -0700 +++ git-2.13.1-new/credential-cache--daemon.c 2017-06-25 15:19:23.024088698 -0700 @@ -414,15 +402,6 @@ diff -ru git-2.13.1/daemon.c git-2.13.1-new/daemon.c logerror("Could not listen to %s: %s", ip2str(ai->ai_family, ai->ai_addr, ai->ai_addrlen), strerror(errno)); -@@ -1019,7 +1020,7 @@ - if (inet_pton(AF_INET, listen_addr, &sin.sin_addr.s_addr) <= 0) - return 0; - } else { -- sin.sin_addr.s_addr = htonl(INADDR_ANY); -+ sin.sin_addr.s_addr = htonl(0); - } - - sockfd = socket(AF_INET, SOCK_STREAM, 0); @@ -1042,7 +1043,7 @@ return 0; } @@ -623,14 +602,6 @@ diff -ru git-2.13.1/dir.c git-2.13.1-new/dir.c diff -ru git-2.13.1/fast-import.c git-2.13.1-new/fast-import.c --- git-2.13.1/fast-import.c 2017-06-04 18:08:11.000000000 -0700 +++ git-2.13.1-new/fast-import.c 2017-06-25 15:19:23.007421930 -0700 -@@ -423,7 +423,6 @@ - - fprintf(rpt, "fast-import crash report:\n"); - fprintf(rpt, " fast-import process: %"PRIuMAX"\n", (uintmax_t) getpid()); -- fprintf(rpt, " parent process : %"PRIuMAX"\n", (uintmax_t) getppid()); - fprintf(rpt, " at %s\n", show_date(time(NULL), 0, DATE_MODE(ISO8601))); - fputc('\n', rpt); - @@ -531,6 +530,7 @@ static void set_checkpoint_signal(void) From 505b4a5ac491767cb702a2d6aa617e88f05e224b Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Fri, 7 Jul 2017 15:09:10 -0700 Subject: [PATCH 0180/3180] git: patch simplification --- recipes/git/git.patch | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/recipes/git/git.patch b/recipes/git/git.patch index bb245d43..3c22c5af 100644 --- a/recipes/git/git.patch +++ b/recipes/git/git.patch @@ -672,18 +672,6 @@ diff -ru git-2.13.1/ident.c git-2.13.1-new/ident.c static struct passwd fallback; fallback.pw_name = "unknown"; #ifndef NO_GECOS_IN_PWENT -diff -ru git-2.13.1/imap-send.c git-2.13.1-new/imap-send.c ---- git-2.13.1/imap-send.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/imap-send.c 2017-06-25 15:19:22.964088331 -0700 -@@ -1018,7 +1018,7 @@ - - addr.sin_addr.s_addr = *((int *) he->h_addr_list[0]); - -- s = socket(PF_INET, SOCK_STREAM, 0); -+ s = socket(AF_INET, SOCK_STREAM, 0); - - imap_info("Connecting to %s:%hu... ", inet_ntoa(addr.sin_addr), ntohs(addr.sin_port)); - if (connect(s, (struct sockaddr *)&addr, sizeof(addr))) { diff -ru git-2.13.1/line-log.c git-2.13.1-new/line-log.c --- git-2.13.1/line-log.c 2017-06-04 18:08:11.000000000 -0700 +++ git-2.13.1-new/line-log.c 2017-06-25 15:19:22.830754184 -0700 From f4de5501874f90fd726d41d9bd569eff2822fcf5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 7 Jul 2017 17:53:38 -0600 Subject: [PATCH 0181/3180] Update pkgutils --- pkgutils | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgutils b/pkgutils index 96a6b2d9..65291649 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit 96a6b2d9fe30d054ef754e6cc3bf88ff60e40199 +Subproject commit 65291649009fa64d5b1c40129068471cc57f0c0d From e55a6fcde723c120dc2f7560dafe4101f32f2c02 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Fri, 7 Jul 2017 21:39:02 -0700 Subject: [PATCH 0182/3180] git: use symlink instead of hard link --- pkgutils | 2 +- recipes/git/git.patch | 46 +++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/pkgutils b/pkgutils index 65291649..96a6b2d9 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit 65291649009fa64d5b1c40129068471cc57f0c0d +Subproject commit 96a6b2d9fe30d054ef754e6cc3bf88ff60e40199 diff --git a/recipes/git/git.patch b/recipes/git/git.patch index 3c22c5af..6489dfe7 100644 --- a/recipes/git/git.patch +++ b/recipes/git/git.patch @@ -602,7 +602,7 @@ diff -ru git-2.13.1/dir.c git-2.13.1-new/dir.c diff -ru git-2.13.1/fast-import.c git-2.13.1-new/fast-import.c --- git-2.13.1/fast-import.c 2017-06-04 18:08:11.000000000 -0700 +++ git-2.13.1-new/fast-import.c 2017-06-25 15:19:23.007421930 -0700 -@@ -531,6 +530,7 @@ +@@ -531,6 +531,7 @@ static void set_checkpoint_signal(void) { @@ -610,7 +610,7 @@ diff -ru git-2.13.1/fast-import.c git-2.13.1-new/fast-import.c struct sigaction sa; memset(&sa, 0, sizeof(sa)); -@@ -538,6 +538,7 @@ +@@ -538,6 +539,7 @@ sigemptyset(&sa.sa_mask); sa.sa_flags = SA_RESTART; sigaction(SIGUSR1, &sa, NULL); @@ -684,6 +684,48 @@ diff -ru git-2.13.1/line-log.c git-2.13.1-new/line-log.c c_reset); fprintf(opt->file, "%s%s+++ b/%s%s\n", prefix, c_meta, pair->two->path, c_reset); for (i = 0; i < range->ranges.nr; i++) { +diff -ru git-2.13.1/Makefile git-2.13.1-new/Makefile +--- git-2.13.1/Makefile 2017-06-04 18:08:11.000000000 -0700 ++++ git-2.13.1-new/Makefile 2017-07-07 19:49:39.730605650 -0700 +@@ -1802,7 +1802,6 @@ + + $(BUILT_INS): git$X + $(QUIET_BUILT_IN)$(RM) $@ && \ +- ln $< $@ 2>/dev/null || \ + ln -s $< $@ 2>/dev/null || \ + cp $< $@ + +@@ -2096,7 +2095,6 @@ + + $(REMOTE_CURL_ALIASES): $(REMOTE_CURL_PRIMARY) + $(QUIET_LNCP)$(RM) $@ && \ +- ln $< $@ 2>/dev/null || \ + ln -s $< $@ 2>/dev/null || \ + cp $< $@ + +@@ -2449,14 +2447,12 @@ + for p in $(filter $(install_bindir_programs),$(BUILT_INS)); do \ + $(RM) "$$bindir/$$p" && \ + test -z "$(NO_INSTALL_HARDLINKS)" && \ +- ln "$$bindir/git$X" "$$bindir/$$p" 2>/dev/null || \ + ln -s "git$X" "$$bindir/$$p" 2>/dev/null || \ + cp "$$bindir/git$X" "$$bindir/$$p" || exit; \ + done && \ + for p in $(BUILT_INS); do \ + $(RM) "$$execdir/$$p" && \ + test -z "$(NO_INSTALL_HARDLINKS)" && \ +- ln "$$execdir/git$X" "$$execdir/$$p" 2>/dev/null || \ + ln -s "git$X" "$$execdir/$$p" 2>/dev/null || \ + cp "$$execdir/git$X" "$$execdir/$$p" || exit; \ + done && \ +@@ -2464,7 +2460,6 @@ + for p in $$remote_curl_aliases; do \ + $(RM) "$$execdir/$$p" && \ + test -z "$(NO_INSTALL_HARDLINKS)" && \ +- ln "$$execdir/git-remote-http$X" "$$execdir/$$p" 2>/dev/null || \ + ln -s "git-remote-http$X" "$$execdir/$$p" 2>/dev/null || \ + cp "$$execdir/git-remote-http$X" "$$execdir/$$p" || exit; \ + done && \ diff -ru git-2.13.1/path.c git-2.13.1-new/path.c --- git-2.13.1/path.c 2017-06-04 18:08:11.000000000 -0700 +++ git-2.13.1-new/path.c 2017-07-05 12:23:08.831145653 -0700 From 9e9ed9b7b4f32a0a79d72b97e7f67323ce44632a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 8 Jul 2017 17:19:15 -0600 Subject: [PATCH 0183/3180] Update pkgutils --- pkgutils | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgutils b/pkgutils index 96a6b2d9..65291649 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit 96a6b2d9fe30d054ef754e6cc3bf88ff60e40199 +Subproject commit 65291649009fa64d5b1c40129068471cc57f0c0d From b6269c428f0ba5ddd901fddc9ee0783dfcd94178 Mon Sep 17 00:00:00 2001 From: Thomas Gatzweiler Date: Sun, 9 Jul 2017 15:43:02 +0200 Subject: [PATCH 0184/3180] Recipe for nasm --- recipes/nasm/recipe.sh | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 recipes/nasm/recipe.sh diff --git a/recipes/nasm/recipe.sh b/recipes/nasm/recipe.sh new file mode 100644 index 00000000..0aedbd04 --- /dev/null +++ b/recipes/nasm/recipe.sh @@ -0,0 +1,38 @@ +VERSION=2.13.01 +TAR=http://www.nasm.us/pub/nasm/releasebuilds/$VERSION/nasm-$VERSION.tar.gz + +HOST=x86_64-elf-redox + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + ./configure --host=${HOST} --prefix="" + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make INSTALLROOT="$dest" install + rm -rf "$dest"/share + find "$dest"/bin -exec ${HOST}-strip {} ';' 2> /dev/null + skip=1 +} From 1a67b4b2ff9b083c24633327998680b3d941824e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 9 Jul 2017 08:41:06 -0600 Subject: [PATCH 0185/3180] Attempt to work around jenkins issue --- cook.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/cook.sh b/cook.sh index 4a9ab783..ece2d104 100755 --- a/cook.sh +++ b/cook.sh @@ -95,19 +95,19 @@ function op { fi ;; prepare) - rm -rf sysroot - mkdir sysroot + rm -rf sysroot + mkdir sysroot if [ ${#BUILD_DEPENDS} -gt 0 ] then - pushd $ROOT - ./repo.sh ${BUILD_DEPENDS} - popd + for i in "${BUILD_DEPENDS[@]}" + do + pushd "$ROOT" + ./repo.sh "$i" + popd - for i in "${BUILD_DEPENDS[@]}" - do - CC=cc cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- --target=$TARGET install --root sysroot "$REPO/$i.tar.gz" - done + CC=cc cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- --target=$TARGET install --root sysroot "$REPO/$i.tar.gz" + done fi rm -rf build From 7ebac4fd31594071cb0f1af871f81f244c68e232 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Sun, 9 Jul 2017 09:27:24 -0700 Subject: [PATCH 0186/3180] Revert "Attempt to work around jenkins issue" This reverts commit 1a67b4b2ff9b083c24633327998680b3d941824e. --- cook.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/cook.sh b/cook.sh index ece2d104..4a9ab783 100755 --- a/cook.sh +++ b/cook.sh @@ -95,19 +95,19 @@ function op { fi ;; prepare) - rm -rf sysroot - mkdir sysroot + rm -rf sysroot + mkdir sysroot if [ ${#BUILD_DEPENDS} -gt 0 ] then - for i in "${BUILD_DEPENDS[@]}" - do - pushd "$ROOT" - ./repo.sh "$i" - popd + pushd $ROOT + ./repo.sh ${BUILD_DEPENDS} + popd - CC=cc cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- --target=$TARGET install --root sysroot "$REPO/$i.tar.gz" - done + for i in "${BUILD_DEPENDS[@]}" + do + CC=cc cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- --target=$TARGET install --root sysroot "$REPO/$i.tar.gz" + done fi rm -rf build From b0e362c35369fc21ef0e04d39f812737d5ea0177 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Sun, 9 Jul 2017 09:27:56 -0700 Subject: [PATCH 0187/3180] Fix repo.sh call for build depends --- cook.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cook.sh b/cook.sh index 4a9ab783..a4f1b0bf 100755 --- a/cook.sh +++ b/cook.sh @@ -101,7 +101,7 @@ function op { if [ ${#BUILD_DEPENDS} -gt 0 ] then pushd $ROOT - ./repo.sh ${BUILD_DEPENDS} + ./repo.sh "${BUILD_DEPENDS[@]}" popd for i in "${BUILD_DEPENDS[@]}" From ff577e7dc3d37941bb4354d84c9157a8a42d9956 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Sun, 9 Jul 2017 20:53:33 +0200 Subject: [PATCH 0188/3180] Add rustual-boy recipe --- recipes/rustual-boy/recipe.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100755 recipes/rustual-boy/recipe.sh diff --git a/recipes/rustual-boy/recipe.sh b/recipes/rustual-boy/recipe.sh new file mode 100755 index 00000000..86da8cf0 --- /dev/null +++ b/recipes/rustual-boy/recipe.sh @@ -0,0 +1,14 @@ +GIT=https://github.com/xtibor/rustual-boy.git +BRANCH=redox + +function recipe_update { + cd rustual-boy-cli +} + +function recipe_build { + cd rustual-boy-cli +} + +function recipe_stage { + mv rustual-boy-cli/target target +} From 9899e787eb7418009e1560c1dfae64599618f72c Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Mon, 10 Jul 2017 17:11:58 -0700 Subject: [PATCH 0189/3180] Remove some changes to python that are unneeded now --- recipes/python/python.patch | 54 ------------------------------------- 1 file changed, 54 deletions(-) diff --git a/recipes/python/python.patch b/recipes/python/python.patch index b14fe225..b3cabd23 100644 --- a/recipes/python/python.patch +++ b/recipes/python/python.patch @@ -127,27 +127,6 @@ diff -ru Python-3.6.1/Modules/faulthandler.c Python-3.6.1-new/Modules/faulthandl diff -ru Python-3.6.1/Modules/_io/fileio.c Python-3.6.1-new/Modules/_io/fileio.c --- Python-3.6.1/Modules/_io/fileio.c 2017-03-20 23:32:38.000000000 -0700 +++ Python-3.6.1-new/Modules/_io/fileio.c 2017-07-04 13:13:07.963211923 -0700 -@@ -433,16 +433,16 @@ - } - - #ifndef MS_WINDOWS -- if (_Py_set_inheritable(self->fd, 0, atomic_flag_works) < 0) -- goto error; -+// if (_Py_set_inheritable(self->fd, 0, atomic_flag_works) < 0) -+// goto error; - #endif - } - - self->blksize = DEFAULT_BUFFER_SIZE; - Py_BEGIN_ALLOW_THREADS -- fstat_result = _Py_fstat_noraise(self->fd, &fdfstat); -+ //fstat_result = _Py_fstat_noraise(self->fd, &fdfstat); - Py_END_ALLOW_THREADS -- if (fstat_result < 0) { -+ if (0) { - /* Tolerate fstat() errors other than EBADF. See Issue #25717, where - an anonymous file on a Virtual Box shared folder filesystem would - raise ENOENT. */ @@ -457,7 +457,7 @@ } } @@ -204,27 +183,6 @@ diff -ru Python-3.6.1/Modules/posixmodule.c Python-3.6.1-new/Modules/posixmodule #ifdef HAVE_DIRENT_D_TYPE , direntp->d_type #endif -diff -ru Python-3.6.1/Modules/pwdmodule.c Python-3.6.1-new/Modules/pwdmodule.c ---- Python-3.6.1/Modules/pwdmodule.c 2017-03-20 23:32:38.000000000 -0700 -+++ Python-3.6.1-new/Modules/pwdmodule.c 2017-07-03 14:45:03.600040924 -0700 -@@ -125,7 +125,7 @@ - "getpwuid(): uid not found"); - return NULL; - } -- if ((p = getpwuid(uid)) == NULL) { -+ if (1) { - PyObject *uid_obj = _PyLong_FromUid(uid); - if (uid_obj == NULL) - return NULL; -@@ -160,7 +160,7 @@ - return NULL; - if (PyBytes_AsStringAndSize(bytes, &name, NULL) == -1) - goto out; -- if ((p = getpwnam(name)) == NULL) { -+ if (1) { - PyErr_Format(PyExc_KeyError, - "getpwnam(): name not found: %s", name); - goto out; diff -ru Python-3.6.1/Modules/timemodule.c Python-3.6.1-new/Modules/timemodule.c --- Python-3.6.1/Modules/timemodule.c 2017-03-20 23:32:38.000000000 -0700 +++ Python-3.6.1-new/Modules/timemodule.c 2017-07-03 14:41:43.868293016 -0700 @@ -255,18 +213,6 @@ diff -ru Python-3.6.1/Modules/timemodule.c Python-3.6.1-new/Modules/timemodule.c PyObject *otz0, *otz1; tzset(); PyModule_AddIntConstant(m, "timezone", timezone); -diff -ru Python-3.6.1/Python/fileutils.c Python-3.6.1-new/Python/fileutils.c ---- Python-3.6.1/Python/fileutils.c 2017-03-20 23:32:38.000000000 -0700 -+++ Python-3.6.1-new/Python/fileutils.c 2017-07-03 17:01:34.335204386 -0700 -@@ -965,7 +965,7 @@ - return -1; - } - --#ifndef MS_WINDOWS -+#if 0 - if (set_inheritable(fd, 0, gil_held, atomic_flag_works) < 0) { - close(fd); - return -1; diff -ru Python-3.6.1/Python/pylifecycle.c Python-3.6.1-new/Python/pylifecycle.c --- Python-3.6.1/Python/pylifecycle.c 2017-03-20 23:32:38.000000000 -0700 +++ Python-3.6.1-new/Python/pylifecycle.c 2017-07-04 09:28:10.863071915 -0700 From 90abdadb7b01086fe4ce196e249d6c772afa6b89 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Tue, 11 Jul 2017 21:34:00 -0700 Subject: [PATCH 0190/3180] Recipe for gawk --- recipes/gawk/recipe.sh | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 recipes/gawk/recipe.sh diff --git a/recipes/gawk/recipe.sh b/recipes/gawk/recipe.sh new file mode 100644 index 00000000..93a242f8 --- /dev/null +++ b/recipes/gawk/recipe.sh @@ -0,0 +1,31 @@ +GIT=https://github.com/redox-os/gawk +BRANCH=redox + +HOST=x86_64-elf-redox + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + ./configure --host=${HOST} --prefix=/ ac_cv_func_gethostbyname=no ac_cv_func_connect=no + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} From bd0d732adcc6bff4f503a2c144336c6df377a583 Mon Sep 17 00:00:00 2001 From: Jose Narvaez Date: Thu, 13 Jul 2017 22:03:04 +0100 Subject: [PATCH 0191/3180] The cookbook scripts assume they have GNU utilities available this causes problems in macOS which has an BSD userland. With these changes we will use the GNU `find` and `stat` installed by the now modified boostrap script on https://github.com/redox-os/redox/pull/995. Details - Using `find` from Homebrew/MacPorts `findutils` package on macOS. - Using `stat` from Homebrew/MacPorts `coreutils` package on macOS. --- config.sh | 19 +++++++++++++++++++ repo.sh | 10 +++++----- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/config.sh b/config.sh index 01976e49..b0236106 100755 --- a/config.sh +++ b/config.sh @@ -9,3 +9,22 @@ ROOT="$(cd `dirname "$0"` && pwd)" REPO="$ROOT/repo/$TARGET" export CC="x86_64-elf-redox-gcc" export XARGO_HOME="$ROOT/xargo" + +if [[ "$OSTYPE" == "darwin"* ]]; then + # GNU find + FIND="gfind"; + + # GNU stat from Homebrew or MacPorts + if [ ! -z "$(which brew)" ]; then + STAT="$(brew --prefix)/opt/coreutils/libexec/gnubin/stat"; + elif [ ! -z "$(which port)" ]; then + # TODO: find a programatic way of asking MacPorts for it's root dir. + STAT="/opt/local/opt/coreutils/libexec/gnubin/stat"; + else + echo "Please install either Homebrew or MacPorts and run the boostrap script." + exit 1 + fi +else + FIND="find" + STAT="stat"; +fi diff --git a/repo.sh b/repo.sh index 0e8b18cf..ecde2d38 100755 --- a/repo.sh +++ b/repo.sh @@ -24,8 +24,8 @@ do echo -e "\033[01;38;5;155mrepo - preparing $recipe\033[0m" >&2 ./cook.sh "$recipe" prepare else - TIME_SOURCE="$(find recipes/$recipe/source -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" - TIME_BUILD="$(find recipes/$recipe/build -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" + TIME_SOURCE="$($FIND recipes/$recipe/source -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" + TIME_BUILD="$($FIND recipes/$recipe/build -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" if [ "$TIME_SOURCE" -gt "$TIME_BUILD" ] then echo -e "\033[01;38;5;155mrepo - repreparing $recipe\033[0m" >&2 @@ -38,9 +38,9 @@ do echo -e "\033[01;38;5;155mrepo - building $recipe\033[0m" >&2 ./cook.sh "$recipe" update build stage tar else - TIME_BUILD="$(find recipes/$recipe/build -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" - TIME_STAGE="$(stat -c "%Y" recipes/$recipe/stage.tar.gz)" - TIME_RECIPE="$(find recipes/$recipe/{recipe.sh,*.patch} -printf '%Ts\n' | sort -nr | head -n 1)" + TIME_BUILD="$($FIND recipes/$recipe/build -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" + TIME_STAGE="$($STAT -c "%Y" recipes/$recipe/stage.tar.gz)" + TIME_RECIPE="$($FIND recipes/$recipe/{recipe.sh,*.patch} -printf '%Ts\n' | sort -nr | head -n 1)" if [ "$TIME_BUILD" -gt "$TIME_STAGE" -o "$TIME_RECIPE" -gt "$TIME_STAGE" ] then echo -e "\033[01;38;5;155mrepo - rebuilding $recipe\033[0m" >&2 From 81afdbacab86ccaeaa74c4d9c5654fe121e9ecbf Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 13 Jul 2017 16:24:17 -0700 Subject: [PATCH 0192/3180] Recipe for sed --- recipes/sed/recipe.sh | 37 +++++++++++++++++++++++++++++++++++++ recipes/sed/sed.patch | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 recipes/sed/recipe.sh create mode 100644 recipes/sed/sed.patch diff --git a/recipes/sed/recipe.sh b/recipes/sed/recipe.sh new file mode 100644 index 00000000..7e09799d --- /dev/null +++ b/recipes/sed/recipe.sh @@ -0,0 +1,37 @@ +VERSION=4.4 +TAR=http://ftp.gnu.org/gnu/sed/sed-$VERSION.tar.xz + +HOST=x86_64-elf-redox + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + autoreconf + ./configure --host=${HOST} --prefix=/ + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} diff --git a/recipes/sed/sed.patch b/recipes/sed/sed.patch new file mode 100644 index 00000000..ac796bf2 --- /dev/null +++ b/recipes/sed/sed.patch @@ -0,0 +1,36 @@ +diff -ru source/lib/getprogname.c source-new/lib/getprogname.c +--- source/lib/getprogname.c 2017-01-16 21:36:00.000000000 -0800 ++++ source-new/lib/getprogname.c 2017-07-13 16:13:35.966956860 -0700 +@@ -43,13 +43,11 @@ + # include + #endif + +-#ifdef __sgi + # include + # include + # include + # include +-# include +-#endif ++# include + + #include "dirname.h" + +@@ -178,7 +176,16 @@ + } + return NULL; + # else +-# error "getprogname module not ported to this OS" ++ char filename[PATH_MAX]; ++ int fd = open ("sys:exe", O_RDONLY); ++ if (fd > 0) { ++ int len = read(fd, filename, PATH_MAX-1); ++ if (len > 0) { ++ filename[len] = '\0'; ++ return strdup(filename); ++ } ++ } ++ return NULL; + # endif + } + From 805492a745d9628a0e6e3c99c091bc6c3d67a505 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 13 Jul 2017 20:17:57 -0700 Subject: [PATCH 0193/3180] Add recipe for uutils findutils --- recipes/findutils/recipe.sh | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 recipes/findutils/recipe.sh diff --git a/recipes/findutils/recipe.sh b/recipes/findutils/recipe.sh new file mode 100644 index 00000000..a001b243 --- /dev/null +++ b/recipes/findutils/recipe.sh @@ -0,0 +1,2 @@ +GIT=https://github.com/uutils/findutils +CARGOFLAGS="--bin find" From 5b78bf1d6c134cd6a2f23ed4fbd935ea9610c26a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 13 Jul 2017 21:55:52 -0600 Subject: [PATCH 0194/3180] Add pastel recipe --- recipes/pastel/recipe.sh | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 recipes/pastel/recipe.sh diff --git a/recipes/pastel/recipe.sh b/recipes/pastel/recipe.sh new file mode 100644 index 00000000..6529f477 --- /dev/null +++ b/recipes/pastel/recipe.sh @@ -0,0 +1,6 @@ +GIT=https://github.com/robbycerantola/pastel.git + + +function recipe_stage { + cp -rv res "$1/ui/pastel" +} From fd74cc3eb5eaf8b55f62e855b75382f1299962f8 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Fri, 14 Jul 2017 10:36:58 -0700 Subject: [PATCH 0195/3180] Fix pastel recipe; add 'mkdir' --- recipes/pastel/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/pastel/recipe.sh b/recipes/pastel/recipe.sh index 6529f477..6463a1f3 100644 --- a/recipes/pastel/recipe.sh +++ b/recipes/pastel/recipe.sh @@ -2,5 +2,6 @@ GIT=https://github.com/robbycerantola/pastel.git function recipe_stage { + mkdir "$1/ui" cp -rv res "$1/ui/pastel" } From 7cab4d678e8cf1fb43da66e03773d49283ff6f55 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Mon, 17 Jul 2017 10:06:48 -0700 Subject: [PATCH 0196/3180] Override git sha1 implementation --- recipes/git/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/git/recipe.sh b/recipes/git/recipe.sh index ec9a5d92..85699f0c 100644 --- a/recipes/git/recipe.sh +++ b/recipes/git/recipe.sh @@ -16,7 +16,7 @@ export RANLIB="${HOST}-ranlib" export READELF="${HOST}-readelf" export STRIP="${HOST}-strip" -MAKEFLAGS="NO_MMAP=1 NEEDS_SSL_WITH_CURL=1 NEEDS_CRYPTO_WITH_SSL=1 NO_UNIX_SOCKETS=1 NO_POLL=1 NEEDS_LIBICONV= NEEDS_LIBRT=" +MAKEFLAGS="NO_MMAP=1 NEEDS_SSL_WITH_CURL=1 NEEDS_CRYPTO_WITH_SSL=1 NO_UNIX_SOCKETS=1 NO_POLL=1 NEEDS_LIBICONV= NEEDS_LIBRT= BLK_SHA1=1" function recipe_version { echo "$VERSION" From 7d6529d6c0341d2a8e5a92bc0866671f23cb5264 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 19 Jul 2017 19:32:28 -0600 Subject: [PATCH 0197/3180] Add manifest for Pastel, place in /ui/bin --- recipes/pastel/recipe.sh | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/recipes/pastel/recipe.sh b/recipes/pastel/recipe.sh index 6463a1f3..ad0f34be 100644 --- a/recipes/pastel/recipe.sh +++ b/recipes/pastel/recipe.sh @@ -1,7 +1,15 @@ GIT=https://github.com/robbycerantola/pastel.git - +BINDIR=/ui/bin function recipe_stage { - mkdir "$1/ui" - cp -rv res "$1/ui/pastel" + mkdir "$1/ui" + cp -rv res "$1/ui/pastel" + mkdir "$1/ui/apps" + cat > "$1/ui/apps/pastel" <<-EOF + name=Pastel + binary=/ui/bin/pastel + icon=/ui/pastel/accessories-bitmap-editor.png + author=Robby Cerantola + description=Bitmap Editor + EOF } From 3d2010b26a2b9cd966cb7982b7e50b150a5f530b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 19 Jul 2017 19:33:43 -0600 Subject: [PATCH 0198/3180] Add file types to pastel --- recipes/pastel/recipe.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/recipes/pastel/recipe.sh b/recipes/pastel/recipe.sh index ad0f34be..2d0302d2 100644 --- a/recipes/pastel/recipe.sh +++ b/recipes/pastel/recipe.sh @@ -9,6 +9,10 @@ function recipe_stage { name=Pastel binary=/ui/bin/pastel icon=/ui/pastel/accessories-bitmap-editor.png + accept=*.bmp + accept=*.jpg + accept=*.jpeg + accept=*.png author=Robby Cerantola description=Bitmap Editor EOF From 36f8f5b5f7dd94384c498e781416cc738fbe783f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 20 Jul 2017 19:37:56 -0600 Subject: [PATCH 0199/3180] Update drivers recipe --- recipes/drivers/recipe.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/drivers/recipe.sh b/recipes/drivers/recipe.sh index cd3778ea..21380af3 100644 --- a/recipes/drivers/recipe.sh +++ b/recipes/drivers/recipe.sh @@ -7,6 +7,7 @@ function recipe_version { } function recipe_stage { - mkdir -pv "$1/etc" - cp -v pcid.toml "$1/etc/pcid.toml" + mkdir -pv "$1/etc/pcid" + cp -v initfs.toml "$1/etc/pcid/initfs.toml" + cp -v filesystem.toml "$1/etc/pcid/filesystem.toml" } From 1df0bc544357bfadf66502d87ddff4a3bd709c25 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 22 Jul 2017 13:20:50 -0600 Subject: [PATCH 0200/3180] Add status.sh script for checking git modifications --- status.sh | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100755 status.sh diff --git a/status.sh b/status.sh new file mode 100755 index 00000000..e3ca9fd7 --- /dev/null +++ b/status.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +set -e + +source config.sh + +if [ $# = 0 ] +then + recipes="$(ls -1 recipes)" +else + recipes="$@" +fi + +for recipe in $recipes +do + echo -e "\e[1m$recipe\e[0m" + if [ -d "recipes/$recipe/source/.git" ] + then + git -C "recipes/$recipe/source" status -s + fi +done From eb0a4c73156c9038107bc4454b40637065e03f9e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 22 Jul 2017 13:26:36 -0600 Subject: [PATCH 0201/3180] Use long format for git status, add message when not a git repo --- status.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/status.sh b/status.sh index e3ca9fd7..72596a67 100755 --- a/status.sh +++ b/status.sh @@ -15,6 +15,8 @@ do echo -e "\e[1m$recipe\e[0m" if [ -d "recipes/$recipe/source/.git" ] then - git -C "recipes/$recipe/source" status -s + git -C "recipes/$recipe/source" status + else + echo "Not a GIT repository" fi done From e6071db0a1f428a524c55d0998c391324644c074 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 22 Jul 2017 13:27:27 -0600 Subject: [PATCH 0202/3180] Use lowercase git --- status.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/status.sh b/status.sh index 72596a67..ff5aaa47 100755 --- a/status.sh +++ b/status.sh @@ -17,6 +17,6 @@ do then git -C "recipes/$recipe/source" status else - echo "Not a GIT repository" + echo "Not a git repository" fi done From 943fe8ae8c99250b2ee0ffe2f4dc9edfe782e328 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 22 Jul 2017 13:39:29 -0600 Subject: [PATCH 0203/3180] Make it possible to compare with source tarball --- status.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/status.sh b/status.sh index ff5aaa47..21abe8fa 100755 --- a/status.sh +++ b/status.sh @@ -16,7 +16,11 @@ do if [ -d "recipes/$recipe/source/.git" ] then git -C "recipes/$recipe/source" status + elif [ -e "recipes/$recipe/source.tar" ] + then + echo "Using source tarball" + tar --compare --file="recipes/$recipe/source.tar" -C "recipes/$recipe/source" --strip-components=1 2>&1| grep -v "tar: :" | grep -v '\(Mode\|Gid\|Uid\) differs' || true else - echo "Not a git repository" + echo "No original source found" fi done From 3863dc9b4243ecd7c80f1f6984bcb1083f37c359 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 23 Jul 2017 11:58:04 -0600 Subject: [PATCH 0204/3180] Add update script --- update.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100755 update.sh diff --git a/update.sh b/update.sh new file mode 100755 index 00000000..ffa215c0 --- /dev/null +++ b/update.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +set -e + +source config.sh + +if [ $# = 0 ] +then + recipes="$(ls -1 recipes)" +else + recipes="$@" +fi + +for recipe in $recipes +do + if [ -d "recipes/$recipe/build" ] + then + ./cook.sh "$recipe" update + fi +done From 6e4d16d5d3b3525f31f10bcb9f9c6681004e1136 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 23 Jul 2017 16:55:39 -0600 Subject: [PATCH 0205/3180] Use simpler_signals branch of ion --- recipes/ion/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/ion/recipe.sh b/recipes/ion/recipe.sh index f7e3e66e..cf209b2b 100644 --- a/recipes/ion/recipe.sh +++ b/recipes/ion/recipe.sh @@ -1 +1,2 @@ GIT=https://github.com/redox-os/ion.git +BRANCH=simpler_signals From 2067c8292e1f7e2af2f794ff7d445bd4772ff1c6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 23 Jul 2017 16:58:58 -0600 Subject: [PATCH 0206/3180] Go back to master branch of ion --- recipes/ion/recipe.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/ion/recipe.sh b/recipes/ion/recipe.sh index cf209b2b..f7e3e66e 100644 --- a/recipes/ion/recipe.sh +++ b/recipes/ion/recipe.sh @@ -1,2 +1 @@ GIT=https://github.com/redox-os/ion.git -BRANCH=simpler_signals From 7f27da77e313d2ec343190c02a7051b3d15f1947 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Sun, 23 Jul 2017 21:17:17 -0700 Subject: [PATCH 0207/3180] Recipe for GNU grep --- recipes/gnu-grep/grep.patch | 68 +++++++++++++++++++++++++++++++++++++ recipes/gnu-grep/recipe.sh | 34 +++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 recipes/gnu-grep/grep.patch create mode 100644 recipes/gnu-grep/recipe.sh diff --git a/recipes/gnu-grep/grep.patch b/recipes/gnu-grep/grep.patch new file mode 100644 index 00000000..8b3d8b98 --- /dev/null +++ b/recipes/gnu-grep/grep.patch @@ -0,0 +1,68 @@ +Only in source: grep.patch +diff -ru source/lib/getdtablesize.c source-new/lib/getdtablesize.c +--- source/lib/getdtablesize.c 2017-07-23 20:50:44.287742363 -0700 ++++ source-new/lib/getdtablesize.c 2017-07-23 20:51:06.271284748 -0700 +@@ -109,15 +109,6 @@ + int + getdtablesize (void) + { +- struct rlimit lim; +- +- if (getrlimit (RLIMIT_NOFILE, &lim) == 0 +- && 0 <= lim.rlim_cur && lim.rlim_cur <= INT_MAX +- && lim.rlim_cur != RLIM_INFINITY +- && lim.rlim_cur != RLIM_SAVED_CUR +- && lim.rlim_cur != RLIM_SAVED_MAX) +- return lim.rlim_cur; +- + return INT_MAX; + } + +diff -ru source/lib/getprogname.c source-new/lib/getprogname.c +--- source/lib/getprogname.c 2017-01-16 09:29:13.000000000 -0800 ++++ source-new/lib/getprogname.c 2017-07-23 20:49:21.133618122 -0700 +@@ -43,13 +43,11 @@ + # include + #endif + +-#ifdef __sgi + # include + # include + # include + # include +-# include +-#endif ++# include + + #include "dirname.h" + +@@ -178,7 +176,16 @@ + } + return NULL; + # else +-# error "getprogname module not ported to this OS" ++ char filename[PATH_MAX]; ++ int fd = open ("sys:exe", O_RDONLY); ++ if (fd > 0) { ++ int len = read(fd, filename, PATH_MAX-1); ++ if (len > 0) { ++ filename[len] = '\0'; ++ return strdup(filename); ++ } ++ } ++ return NULL; + # endif + } + +diff -ru source/src/grep.c source-new/src/grep.c +--- source/src/grep.c 2017-07-02 10:41:41.000000000 -0700 ++++ source-new/src/grep.c 2017-07-23 20:53:10.439131874 -0700 +@@ -2895,7 +2895,7 @@ + #ifdef _SC_PAGESIZE + long psize = sysconf (_SC_PAGESIZE); + #else +- long psize = getpagesize (); ++ long psize = 4096; + #endif + if (! (0 < psize && psize <= (SIZE_MAX - sizeof (uword)) / 2)) + abort (); diff --git a/recipes/gnu-grep/recipe.sh b/recipes/gnu-grep/recipe.sh new file mode 100644 index 00000000..5b2122ef --- /dev/null +++ b/recipes/gnu-grep/recipe.sh @@ -0,0 +1,34 @@ +VERSION=3.1 +TAR=https://ftp.gnu.org/gnu/grep/grep-$VERSION.tar.xz + +HOST=x86_64-elf-redox + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + rm -f build-aux/missing + ./configure --host=${HOST} --prefix=/ + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + $HOST-strip "$1"/bin/grep + rm -rf "$1"/{lib,share} + skip=1 +} From 1ddce8155fe74887dbb96863bce7529456fe35b0 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Sun, 23 Jul 2017 21:19:29 -0700 Subject: [PATCH 0208/3180] recipe_version for grep --- recipes/gnu-grep/recipe.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/recipes/gnu-grep/recipe.sh b/recipes/gnu-grep/recipe.sh index 5b2122ef..8a698b75 100644 --- a/recipes/gnu-grep/recipe.sh +++ b/recipes/gnu-grep/recipe.sh @@ -3,6 +3,11 @@ TAR=https://ftp.gnu.org/gnu/grep/grep-$VERSION.tar.xz HOST=x86_64-elf-redox +function recipe_version { + echo "$VERSION" + skip=1 +} + function recipe_update { echo "skipping update" skip=1 From e204f9499db74b86fedf54b9be024899a4915392 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Mon, 24 Jul 2017 17:15:36 -0700 Subject: [PATCH 0209/3180] Hopefully fix grep build --- recipes/gnu-grep/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/gnu-grep/recipe.sh b/recipes/gnu-grep/recipe.sh index 8a698b75..938b1812 100644 --- a/recipes/gnu-grep/recipe.sh +++ b/recipes/gnu-grep/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { } function recipe_build { - rm -f build-aux/missing + autoreconf ./configure --host=${HOST} --prefix=/ make skip=1 From bc88709f6b02cd3d4180cef61859311a05bfe2f4 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Mon, 24 Jul 2017 19:12:58 -0700 Subject: [PATCH 0210/3180] git: ; as path separator --- recipes/git/git.patch | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/recipes/git/git.patch b/recipes/git/git.patch index 6489dfe7..8a36a669 100644 --- a/recipes/git/git.patch +++ b/recipes/git/git.patch @@ -620,7 +620,7 @@ diff -ru git-2.13.1/fast-import.c git-2.13.1-new/fast-import.c #endif diff -ru git-2.13.1/git-compat-util.h git-2.13.1-new/git-compat-util.h --- git-2.13.1/git-compat-util.h 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/git-compat-util.h 2017-06-25 15:01:02.935061516 -0700 ++++ git-2.13.1-new/git-compat-util.h 2017-07-24 18:52:23.567535558 -0700 @@ -179,7 +179,6 @@ #include #include @@ -651,7 +651,18 @@ diff -ru git-2.13.1/git-compat-util.h git-2.13.1-new/git-compat-util.h #ifndef NO_INTTYPES_H #include #else -@@ -1123,4 +1117,7 @@ +@@ -319,9 +313,7 @@ + #define PRIo32 "o" + #endif + +-#ifndef PATH_SEP +-#define PATH_SEP ':' +-#endif ++#define PATH_SEP ';' + + #ifdef HAVE_PATHS_H + #include +@@ -1123,4 +1115,7 @@ extern int cmd_main(int, const char **); @@ -797,7 +808,7 @@ diff -ru git-2.13.1/rerere.c git-2.13.1-new/rerere.c diff -ru git-2.13.1/run-command.c git-2.13.1-new/run-command.c --- git-2.13.1/run-command.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/run-command.c 2017-06-25 15:19:23.024088698 -0700 ++++ git-2.13.1-new/run-command.c 2017-07-24 18:38:38.359269687 -0700 @@ -120,9 +120,9 @@ #ifndef GIT_WINDOWS_NATIVE static inline void dup_devnull(int to) @@ -810,6 +821,15 @@ diff -ru git-2.13.1/run-command.c git-2.13.1-new/run-command.c if (dup2(fd, to) < 0) die_errno(_("dup2(%d,%d) failed"), fd, to); close(fd); +@@ -138,7 +138,7 @@ + return NULL; + + while (1) { +- const char *end = strchrnul(p, ':'); ++ const char *end = strchrnul(p, ';'); + + strbuf_reset(&buf); + @@ -483,21 +483,21 @@ struct argv_array nargv = ARGV_ARRAY_INIT; From 9e5cebae915a72bacb80cdc8a42219da6ec8df42 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Tue, 25 Jul 2017 14:50:06 -0700 Subject: [PATCH 0211/3180] Add recipe for diffutils --- recipes/diffutils/diffutils.patch | 271 ++++++++++++++++++++++++++++++ recipes/diffutils/recipe.sh | 39 +++++ 2 files changed, 310 insertions(+) create mode 100644 recipes/diffutils/diffutils.patch create mode 100644 recipes/diffutils/recipe.sh diff --git a/recipes/diffutils/diffutils.patch b/recipes/diffutils/diffutils.patch new file mode 100644 index 00000000..283e5002 --- /dev/null +++ b/recipes/diffutils/diffutils.patch @@ -0,0 +1,271 @@ +diff -ru source/lib/cmpbuf.c source-new/lib/cmpbuf.c +--- source/lib/cmpbuf.c 2017-01-01 03:22:36.000000000 -0800 ++++ source-new/lib/cmpbuf.c 2017-07-25 14:12:20.128407130 -0700 +@@ -71,8 +71,8 @@ + ancient AIX hosts that set errno to EINTR after uncaught + SIGCONT. See + (1993-04-22). */ +- if (! SA_RESTART && errno == EINTR) +- continue; ++ //if (! SA_RESTART && errno == EINTR) ++ // continue; + + return SIZE_MAX; + } +diff -ru source/lib/getdtablesize.c source-new/lib/getdtablesize.c +--- source/lib/getdtablesize.c 2017-05-18 09:23:32.000000000 -0700 ++++ source-new/lib/getdtablesize.c 2017-07-25 14:14:43.353197473 -0700 +@@ -109,15 +109,6 @@ + int + getdtablesize (void) + { +- struct rlimit lim; +- +- if (getrlimit (RLIMIT_NOFILE, &lim) == 0 +- && 0 <= lim.rlim_cur && lim.rlim_cur <= INT_MAX +- && lim.rlim_cur != RLIM_INFINITY +- && lim.rlim_cur != RLIM_SAVED_CUR +- && lim.rlim_cur != RLIM_SAVED_MAX) +- return lim.rlim_cur; +- + return INT_MAX; + } + +diff -ru source/lib/getprogname.c source-new/lib/getprogname.c +--- source/lib/getprogname.c 2017-01-31 10:36:50.000000000 -0800 ++++ source-new/lib/getprogname.c 2017-07-25 14:08:30.219353774 -0700 +@@ -43,13 +43,11 @@ + # include + #endif + +-#ifdef __sgi + # include + # include + # include + # include +-# include +-#endif ++# include + + #include "dirname.h" + +@@ -178,7 +176,16 @@ + } + return NULL; + # else +-# error "getprogname module not ported to this OS" ++ char filename[PATH_MAX]; ++ int fd = open ("sys:exe", O_RDONLY); ++ if (fd > 0) { ++ int len = read(fd, filename, PATH_MAX-1); ++ if (len > 0) { ++ filename[len] = '\0'; ++ return strdup(filename); ++ } ++ } ++ return NULL; + # endif + } + +diff -ru source/lib/sigaction.c source-new/lib/sigaction.c +--- source/lib/sigaction.c 2017-05-18 09:23:32.000000000 -0700 ++++ source-new/lib/sigaction.c 2017-07-25 14:16:01.860655606 -0700 +@@ -1,3 +1,4 @@ ++#if 0 + /* POSIX compatible signal blocking. + Copyright (C) 2008-2017 Free Software Foundation, Inc. + Written by Eric Blake , 2008. +@@ -202,3 +203,4 @@ + errno = saved_errno; + return -1; + } ++#endif +diff -ru source/lib/sig-handler.h source-new/lib/sig-handler.h +--- source/lib/sig-handler.h 2017-05-18 09:23:32.000000000 -0700 ++++ source-new/lib/sig-handler.h 2017-07-25 14:10:17.137139018 -0700 +@@ -28,6 +28,7 @@ + # define SIG_HANDLER_INLINE _GL_INLINE + #endif + ++#if 0 + /* Convenience type when working with signal handlers. */ + typedef void (*sa_handler_t) (int); + +@@ -48,6 +49,7 @@ + #endif + return a->sa_handler; + } ++#endif + + _GL_INLINE_HEADER_END + +diff -ru source/lib/signal.in.h source-new/lib/signal.in.h +--- source/lib/signal.in.h 2017-05-18 09:23:32.000000000 -0700 ++++ source-new/lib/signal.in.h 2017-07-25 14:04:47.960296802 -0700 +@@ -1,3 +1,4 @@ ++#if 0 + /* A GNU-like . + + Copyright (C) 2006-2017 Free Software Foundation, Inc. +@@ -461,3 +462,4 @@ + #endif /* _@GUARD_PREFIX@_SIGNAL_H */ + #endif /* _@GUARD_PREFIX@_SIGNAL_H */ + #endif ++#endif +diff -ru source/lib/sigprocmask.c source-new/lib/sigprocmask.c +--- source/lib/sigprocmask.c 2017-05-18 09:23:32.000000000 -0700 ++++ source-new/lib/sigprocmask.c 2017-07-25 14:17:19.291432128 -0700 +@@ -1,3 +1,4 @@ ++#if 0 + /* POSIX compatible signal blocking. + Copyright (C) 2006-2017 Free Software Foundation, Inc. + Written by Bruno Haible , 2006. +@@ -347,3 +348,4 @@ + return 0; + } + #endif ++#endif +diff -ru source/Makefile.am source-new/Makefile.am +--- source/Makefile.am 2017-01-01 03:22:36.000000000 -0800 ++++ source-new/Makefile.am 2017-07-25 14:36:08.905866861 -0700 +@@ -19,7 +19,7 @@ + ALL_RECURSIVE_TARGETS = + + EXTRA_DIST = bootstrap exgettext ChangeLog-2008 cfg.mk dist-check.mk +-SUBDIRS = lib src tests doc man po gnulib-tests ++SUBDIRS = lib src tests doc po gnulib-tests + + ACLOCAL_AMFLAGS = -I m4 + AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS) +diff -ru source/src/sdiff.c source-new/src/sdiff.c +--- source/src/sdiff.c 2017-05-18 10:39:59.000000000 -0700 ++++ source-new/src/sdiff.c 2017-07-25 14:31:10.436289463 -0700 +@@ -86,7 +86,7 @@ + #ifdef SIGPIPE + SIGPIPE, + #endif +- SIGINT ++ //SIGINT + }; + enum + { +@@ -226,7 +226,7 @@ + static void + cleanup (int signo __attribute__((unused))) + { +-#if HAVE_WORKING_FORK ++#if 0 + if (0 < diffpid) + kill (diffpid, SIGPIPE); + #endif +@@ -629,6 +629,7 @@ + perror_fatal ("fork"); + if (! diffpid) + { ++#if 0 + /* Alter the child's SIGINT and SIGPIPE handlers; + this may munge the parent. + The child ignores SIGINT in case the user interrupts the editor. +@@ -636,6 +637,7 @@ + if (initial_handler (handler_index_of_SIGINT) != SIG_IGN) + signal_handler (SIGINT, SIG_IGN); + signal_handler (SIGPIPE, SIG_DFL); ++#endif + close (diff_fds[0]); + if (diff_fds[1] != STDOUT_FILENO) + { +@@ -727,11 +729,13 @@ + static void + catchsig (int s) + { ++#if 0 + #if ! HAVE_SIGACTION + signal (s, SIG_IGN); + #endif + if (! (s == SIGINT && ignore_SIGINT)) + signal_received = s; ++#endif + } + + #if HAVE_SIGACTION +@@ -748,6 +752,7 @@ + static void + trapsigs (void) + { ++#if 0 + int i; + + #if HAVE_SIGACTION +@@ -772,6 +777,7 @@ + /* System V fork+wait does not work if SIGCHLD is ignored. */ + signal (SIGCHLD, SIG_DFL); + #endif ++#endif + + sigs_trapped = true; + } +@@ -780,6 +786,7 @@ + static void + untrapsig (int s) + { ++#if 0 + int i; + + if (sigs_trapped) +@@ -792,6 +799,7 @@ + signal (sigs[i], initial_action[i]); + #endif + } ++#endif + } + + /* Exit if a signal has been received. */ +diff -ru source/src/util.c source-new/src/util.c +--- source/src/util.c 2017-05-18 10:39:59.000000000 -0700 ++++ source-new/src/util.c 2017-07-25 14:24:02.588763499 -0700 +@@ -161,6 +161,7 @@ + + /* The set of signals that are caught. */ + ++#if 0 + static sigset_t caught_signals; + + /* If nonzero, the value of the pending fatal signal. */ +@@ -192,6 +193,7 @@ + if (! interrupt_signal) + stop_signal_count++; + } ++#endif + /* Process any pending signals. If signals are caught, this function + should be called periodically. Ideally there should never be an + unbounded amount of time when signals are not being processed. +@@ -201,6 +203,7 @@ + static void + process_signals (void) + { ++#if 0 + while (interrupt_signal || stop_signal_count) + { + int sig; +@@ -235,11 +238,13 @@ + /* If execution reaches here, then the program has been + continued (after being suspended). */ + } ++#endif + } + + static void + install_signal_handlers (void) + { ++# if 0 + /* The signals that are trapped, and the number of such signals. */ + static int const sig[] = + { +@@ -303,6 +308,7 @@ + } + #endif + } ++#endif + } + + static char const *current_name0; diff --git a/recipes/diffutils/recipe.sh b/recipes/diffutils/recipe.sh new file mode 100644 index 00000000..f96a833c --- /dev/null +++ b/recipes/diffutils/recipe.sh @@ -0,0 +1,39 @@ +VERSION=3.6 +TAR=http://ftp.gnu.org/gnu/diffutils/diffutils-$VERSION.tar.xz + +HOST=x86_64-elf-redox + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + autoreconf + ./configure --host=${HOST} --prefix=/ + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + ${HOST}-strip "$1"/bin/* + rm -rf "$1"/{lib,share} + skip=1 +} From 7d06611aa92938727325dbda68ff3e0805a3ce13 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 26 Jul 2017 08:20:15 -0600 Subject: [PATCH 0212/3180] Update source, not build, as Cargo.lock is now committed --- cook.sh | 27 +++++++++++++-------------- pkgutils | 2 +- repo.sh | 4 ++-- 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/cook.sh b/cook.sh index a4f1b0bf..392e1da6 100755 --- a/cook.sh +++ b/cook.sh @@ -37,7 +37,6 @@ function op { case "$2" in dist) op $1 prepare - op $1 update op $1 build op $1 stage op $1 tar @@ -94,6 +93,19 @@ function op { rm -f source.tar fi ;; + update) + pushd source > /dev/null + skip=0 + if [ "$(type -t recipe_update)" = "function" ] + then + recipe_update + fi + if [ "$skip" -eq "0" ] + then + xargo update + fi + popd > /dev/null + ;; prepare) rm -rf sysroot mkdir sysroot @@ -143,19 +155,6 @@ function op { op $1 version fi ;; - update) - pushd build > /dev/null - skip=0 - if [ "$(type -t recipe_update)" = "function" ] - then - recipe_update - fi - if [ "$skip" -eq "0" ] - then - xargo update - fi - popd > /dev/null - ;; build) pushd build > /dev/null skip=0 diff --git a/pkgutils b/pkgutils index 65291649..d3062a71 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit 65291649009fa64d5b1c40129068471cc57f0c0d +Subproject commit d3062a717c53601441c42cd4c974054f8084ee6d diff --git a/repo.sh b/repo.sh index ecde2d38..083316b6 100755 --- a/repo.sh +++ b/repo.sh @@ -36,7 +36,7 @@ do if [ ! -f "recipes/$recipe/stage.tar.gz" ] then echo -e "\033[01;38;5;155mrepo - building $recipe\033[0m" >&2 - ./cook.sh "$recipe" update build stage tar + ./cook.sh "$recipe" build stage tar else TIME_BUILD="$($FIND recipes/$recipe/build -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" TIME_STAGE="$($STAT -c "%Y" recipes/$recipe/stage.tar.gz)" @@ -44,7 +44,7 @@ do if [ "$TIME_BUILD" -gt "$TIME_STAGE" -o "$TIME_RECIPE" -gt "$TIME_STAGE" ] then echo -e "\033[01;38;5;155mrepo - rebuilding $recipe\033[0m" >&2 - ./cook.sh "$recipe" untar unstage update build stage tar + ./cook.sh "$recipe" untar unstage build stage tar else echo -e "\033[01;38;5;155mrepo - $recipe up to date\033[0m" >&2 fi From 3e0bc79bb96cf33ffa374925abc882175742c95a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 26 Jul 2017 20:35:07 -0600 Subject: [PATCH 0213/3180] Check for source, not build, when updating --- update.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/update.sh b/update.sh index ffa215c0..e9604c4a 100755 --- a/update.sh +++ b/update.sh @@ -12,7 +12,7 @@ fi for recipe in $recipes do - if [ -d "recipes/$recipe/build" ] + if [ -d "recipes/$recipe/source" ] then ./cook.sh "$recipe" update fi From a7065f4a90ec4e04471a24db84e95be42cbcba09 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 29 Jul 2017 08:26:40 -0600 Subject: [PATCH 0214/3180] Update pkgutils --- pkgutils | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgutils b/pkgutils index d3062a71..baf57e81 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit d3062a717c53601441c42cd4c974054f8084ee6d +Subproject commit baf57e811cd06afba17467911a16216b7c0bfd07 From e9c632537d700b59d1539826e19541605ca61709 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 29 Jul 2017 09:40:04 -0600 Subject: [PATCH 0215/3180] Use Redox patched findutils, uutils --- recipes/findutils/recipe.sh | 2 +- recipes/uutils/recipe.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/findutils/recipe.sh b/recipes/findutils/recipe.sh index a001b243..52112ab4 100644 --- a/recipes/findutils/recipe.sh +++ b/recipes/findutils/recipe.sh @@ -1,2 +1,2 @@ -GIT=https://github.com/uutils/findutils +GIT=https://github.com/redox-os/findutils CARGOFLAGS="--bin find" diff --git a/recipes/uutils/recipe.sh b/recipes/uutils/recipe.sh index c8354326..38843263 100644 --- a/recipes/uutils/recipe.sh +++ b/recipes/uutils/recipe.sh @@ -1,2 +1,2 @@ -GIT=https://github.com/uutils/coreutils.git +GIT=https://github.com/redox-os/uutils.git CARGOFLAGS="--no-default-features --features redox" From 7df21d6c63bd0c5db67f53dc22cb702325effc43 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Sun, 30 Jul 2017 17:13:27 -0700 Subject: [PATCH 0216/3180] Build gcc with C++ support --- recipes/gcc/recipe.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index fecb8472..93c1818b 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -34,8 +34,8 @@ function recipe_build { autoconf2.64 popd - ./configure --host=${HOST} --target=${HOST} --prefix=/ --enable-static --disable-shared --disable-dlopen --disable-nls --enable-languages=c --without-headers - make all-gcc all-target-libgcc + ./configure --host=${HOST} --target=${HOST} --prefix=/ --enable-static --disable-shared --disable-dlopen --disable-nls --enable-languages=c,c++ + make all-gcc all-target-libgcc all-target-libstdc++-v3 skip=1 } @@ -51,7 +51,7 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install-gcc install-target-libgcc + make DESTDIR="$dest" install-gcc install-target-libgcc install-target-libstdc++-v3 find "$dest"/{bin,libexec} -exec x86_64-elf-redox-strip {} ';' 2> /dev/null ln -s "gcc" "$1/bin/cc" skip=1 From 1e2cf8a2b3ee25dd2d66831e740f5266f6223891 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 2 Aug 2017 19:54:55 -0600 Subject: [PATCH 0217/3180] Use forked smith with newer termion, update pkgutils --- pkgutils | 2 +- recipes/smith/recipe.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgutils b/pkgutils index baf57e81..049de941 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit baf57e811cd06afba17467911a16216b7c0bfd07 +Subproject commit 049de9418e6cced5d4af5b26828cbf59a5b78497 diff --git a/recipes/smith/recipe.sh b/recipes/smith/recipe.sh index 9f38e91d..9b804258 100755 --- a/recipes/smith/recipe.sh +++ b/recipes/smith/recipe.sh @@ -1 +1 @@ -GIT=https://github.com/IGI-111/Smith.git +GIT=https://github.com/redox-os/Smith.git From 072917c5df6cf00deac7dbddd94b2869fdcb800d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 2 Aug 2017 21:16:57 -0600 Subject: [PATCH 0218/3180] Update pkgutils --- pkgutils | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgutils b/pkgutils index 049de941..64bc2796 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit 049de9418e6cced5d4af5b26828cbf59a5b78497 +Subproject commit 64bc27967e0f2a4c0f54a282baa203d53b1c8c8a From 07d58bde4ce35494d483c2c9cf397d61ccada020 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 3 Aug 2017 21:29:14 -0700 Subject: [PATCH 0219/3180] Enable 'backtrace' feature in libstd, to allow backtraces --- Xargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Xargo.toml b/Xargo.toml index 4bb0924c..0c493ec3 100644 --- a/Xargo.toml +++ b/Xargo.toml @@ -1,5 +1,5 @@ [dependencies.std] -features = ["panic_unwind"] +features = ["panic_unwind", "backtrace"] #[dependencies.test] #stage = 1 From 219464b4d0ee342077259e76d3cf7e2d63202770 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Mon, 7 Aug 2017 14:16:43 -0700 Subject: [PATCH 0220/3180] Specify host in config.sh, not specific recipe --- config.sh | 5 ++++- recipes/curl/recipe.sh | 2 -- recipes/dash/recipe.sh | 1 - recipes/diffutils/recipe.sh | 2 -- recipes/expat/recipe.sh | 2 -- recipes/gawk/recipe.sh | 2 -- recipes/gcc/recipe.sh | 3 +-- recipes/git/recipe.sh | 2 -- recipes/gnu-binutils/recipe.sh | 5 ++--- recipes/gnu-grep/recipe.sh | 2 -- recipes/gnu-make/recipe.sh | 2 -- recipes/lua/recipe.sh | 2 -- recipes/nasm/recipe.sh | 2 -- recipes/newlib/recipe.sh | 6 ++---- recipes/openssl/recipe.sh | 4 +--- recipes/python/recipe.sh | 3 --- recipes/rust/recipe.sh | 6 ++---- recipes/sed/recipe.sh | 2 -- 18 files changed, 12 insertions(+), 41 deletions(-) diff --git a/config.sh b/config.sh index b0236106..ad8d6307 100755 --- a/config.sh +++ b/config.sh @@ -2,7 +2,10 @@ set -e # Configuration -export TARGET=x86_64-unknown-redox +ARCH=x86_64 +export TARGET=$ARCH-unknown-redox +HOST=$ARCH-elf-redox +RUST_HOST=$ARCH-unknown-redox # Automatic variables ROOT="$(cd `dirname "$0"` && pwd)" diff --git a/recipes/curl/recipe.sh b/recipes/curl/recipe.sh index e3ec6788..cc11e1e6 100644 --- a/recipes/curl/recipe.sh +++ b/recipes/curl/recipe.sh @@ -2,8 +2,6 @@ GIT=https://github.com/ids1024/curl.git BRANCH=redox BUILD_DEPENDS=(openssl) -HOST=x86_64-elf-redox - function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" skip=1 diff --git a/recipes/dash/recipe.sh b/recipes/dash/recipe.sh index 26c147b7..83bc8687 100644 --- a/recipes/dash/recipe.sh +++ b/recipes/dash/recipe.sh @@ -1,7 +1,6 @@ GIT=https://github.com/redox-os/dash.git BRANCH=redox -HOST=x86_64-elf-redox export AR="${HOST}-ar" export AS="${HOST}-as" export CC="${HOST}-gcc" diff --git a/recipes/diffutils/recipe.sh b/recipes/diffutils/recipe.sh index f96a833c..ea089587 100644 --- a/recipes/diffutils/recipe.sh +++ b/recipes/diffutils/recipe.sh @@ -1,8 +1,6 @@ VERSION=3.6 TAR=http://ftp.gnu.org/gnu/diffutils/diffutils-$VERSION.tar.xz -HOST=x86_64-elf-redox - function recipe_version { echo "$VERSION" skip=1 diff --git a/recipes/expat/recipe.sh b/recipes/expat/recipe.sh index 67218005..99a07049 100644 --- a/recipes/expat/recipe.sh +++ b/recipes/expat/recipe.sh @@ -1,8 +1,6 @@ VERSION=2.2.1 TAR=http://downloads.sourceforge.net/project/expat/expat/$VERSION/expat-$VERSION.tar.bz2 -HOST=x86_64-elf-redox - function recipe_version { echo "$VERSION" skip=1 diff --git a/recipes/gawk/recipe.sh b/recipes/gawk/recipe.sh index 93a242f8..0658bdd6 100644 --- a/recipes/gawk/recipe.sh +++ b/recipes/gawk/recipe.sh @@ -1,8 +1,6 @@ GIT=https://github.com/redox-os/gawk BRANCH=redox -HOST=x86_64-elf-redox - function recipe_update { echo "skipping update" skip=1 diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index 93c1818b..760fcf7c 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -1,7 +1,6 @@ GIT=https://github.com/redox-os/gcc.git BRANCH=redox -HOST=x86_64-elf-redox export AR="${HOST}-ar" export AS="${HOST}-as" export CC="${HOST}-gcc" @@ -52,7 +51,7 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install-gcc install-target-libgcc install-target-libstdc++-v3 - find "$dest"/{bin,libexec} -exec x86_64-elf-redox-strip {} ';' 2> /dev/null + find "$dest"/{bin,libexec} -exec $STRIP {} ';' 2> /dev/null ln -s "gcc" "$1/bin/cc" skip=1 } diff --git a/recipes/git/recipe.sh b/recipes/git/recipe.sh index 85699f0c..f9b212c4 100644 --- a/recipes/git/recipe.sh +++ b/recipes/git/recipe.sh @@ -2,8 +2,6 @@ VERSION=2.13.1 TAR=https://www.kernel.org/pub/software/scm/git/git-$VERSION.tar.xz BUILD_DEPENDS=(zlib curl openssl expat) -HOST=x86_64-elf-redox - export AR="${HOST}-ar" export AS="${HOST}-as" export CC="${HOST}-gcc" diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh index 8bbe558c..4475c0c0 100644 --- a/recipes/gnu-binutils/recipe.sh +++ b/recipes/gnu-binutils/recipe.sh @@ -1,6 +1,5 @@ GIT=https://github.com/redox-os/binutils-gdb.git -HOST=x86_64-elf-redox export AR="${HOST}-ar" export AS="${HOST}-as" export CC="${HOST}-gcc" @@ -24,7 +23,7 @@ function recipe_update { } function recipe_build { - ./configure --host=${HOST} --target=${HOST} --prefix=/ --with-sysroot=/usr/x86_64-elf-redox --disable-gdb --disable-nls --disable-werror + ./configure --host=${HOST} --target=${HOST} --prefix=/ --with-sysroot=/usr/$HOST --disable-gdb --disable-nls --disable-werror make skip=1 } @@ -42,6 +41,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install - find "$dest/bin" -exec x86_64-elf-redox-strip {} ';' 2> /dev/null + find "$dest/bin" -exec $STRIP {} ';' 2> /dev/null skip=1 } diff --git a/recipes/gnu-grep/recipe.sh b/recipes/gnu-grep/recipe.sh index 938b1812..6795cc2a 100644 --- a/recipes/gnu-grep/recipe.sh +++ b/recipes/gnu-grep/recipe.sh @@ -1,8 +1,6 @@ VERSION=3.1 TAR=https://ftp.gnu.org/gnu/grep/grep-$VERSION.tar.xz -HOST=x86_64-elf-redox - function recipe_version { echo "$VERSION" skip=1 diff --git a/recipes/gnu-make/recipe.sh b/recipes/gnu-make/recipe.sh index 9c0f0c3e..2d41262f 100644 --- a/recipes/gnu-make/recipe.sh +++ b/recipes/gnu-make/recipe.sh @@ -1,8 +1,6 @@ VERSION=4.2.1 TAR=https://ftp.gnu.org/gnu/make/make-$VERSION.tar.gz -HOST=x86_64-elf-redox - export AR="${HOST}-ar" export AS="${HOST}-as" export CC="${HOST}-gcc" diff --git a/recipes/lua/recipe.sh b/recipes/lua/recipe.sh index d976d114..543b08c8 100644 --- a/recipes/lua/recipe.sh +++ b/recipes/lua/recipe.sh @@ -1,8 +1,6 @@ VERSION=5.3.1 TAR=http://www.lua.org/ftp/lua-$VERSION.tar.gz -HOST=x86_64-elf-redox - function recipe_version { echo "$VERSION" skip=1 diff --git a/recipes/nasm/recipe.sh b/recipes/nasm/recipe.sh index 0aedbd04..66c5f9d7 100644 --- a/recipes/nasm/recipe.sh +++ b/recipes/nasm/recipe.sh @@ -1,8 +1,6 @@ VERSION=2.13.01 TAR=http://www.nasm.us/pub/nasm/releasebuilds/$VERSION/nasm-$VERSION.tar.gz -HOST=x86_64-elf-redox - function recipe_version { echo "$VERSION" skip=1 diff --git a/recipes/newlib/recipe.sh b/recipes/newlib/recipe.sh index 78950b9a..58387f73 100644 --- a/recipes/newlib/recipe.sh +++ b/recipes/newlib/recipe.sh @@ -1,8 +1,6 @@ GIT=https://github.com/redox-os/newlib.git BRANCH=redox -HOST=x86_64-elf-redox - function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" skip=1 @@ -46,7 +44,7 @@ function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install cd "$dest" - mv x86_64-elf-redox/* ./ - rmdir x86_64-elf-redox + mv $HOST/* ./ + rmdir $HOST skip=1 } diff --git a/recipes/openssl/recipe.sh b/recipes/openssl/recipe.sh index 48559cac..5aef73cb 100644 --- a/recipes/openssl/recipe.sh +++ b/recipes/openssl/recipe.sh @@ -1,8 +1,6 @@ GIT=https://github.com/ids1024/openssl.git BRANCH=redox -HOST=x86_64-elf-redox - function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" skip=1 @@ -14,7 +12,7 @@ function recipe_update { } function recipe_build { - ./Configure no-shared no-dgram redox-x86_64 --prefix="/" + ./Configure no-shared no-dgram redox-$ARCH --prefix="/" make -j"$(nproc)" skip=1 } diff --git a/recipes/python/recipe.sh b/recipes/python/recipe.sh index c0d11da0..2a8783cf 100644 --- a/recipes/python/recipe.sh +++ b/recipes/python/recipe.sh @@ -1,9 +1,6 @@ VERSION=3.6.1 TAR=https://www.python.org/ftp/python/$VERSION/Python-$VERSION.tar.xz -ARCH=x86_64 -HOST=x86_64-elf-redox - export AR="${HOST}-ar" export AS="${HOST}-as" export CC="${HOST}-gcc" diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index c2e13f22..e10d0749 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -1,13 +1,11 @@ GIT=https://github.com/ids1024/rust.git BRANCH=compile-redox -ARCH=x86_64 -HOST=x86_64-elf-redox -RUST_HOST=x86_64-unknown-redox LLVM_PREFIX=$PWD/build/llvm-root -SYSROOT=/usr/x86_64-elf-redox +SYSROOT=/usr/$HOST unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP + LLVM_CMAKE_ARGS=(-Wno-dev -DCMAKE_CROSSCOMPILING=True -DCMAKE_INSTALL_PREFIX="$LLVM_PREFIX" -DLLVM_DEFAULT_TARGET_TRIPLE=$HOST -DLLVM_TARGET_ARCH=$ARCH -DLLVM_TARGETS_TO_BUILD=X86 -DCMAKE_SYSTEM_NAME=Generic -DPYTHON_EXECUTABLE=/usr/bin/python2 -DUNIX=1 -DLLVM_ENABLE_THREADS=Off -DLLVM_INCLUDE_TESTS=OFF -target=$HOST -DLLVM_TABLEGEN=/usr/bin/llvm-tblgen -I"$SYSROOT/include" -DCMAKE_CXX_FLAGS='--std=gnu++11' -DLLVM_TOOL_LTO_BUILD=Off -DLLVM_TOOL_LLVM_PROFDATA_BUILD=Off -DLLVM_TOOL_LLI_BUILD=Off -DLLVM_TOOL_RDOBJ_BUILD=Off -DLLVM_TOOL_LLVM_COV_BUILD=Off -DLLVM_TOOL_LLVM_XRAY_BUILD=Off -DLLVM_TOOL_LLVM_LTO2_BUILD=Off -DLLVM_TOOL_LLVM_LTO_BUILD=Off -DLLVM_TOOL_LLVM_RTDYLD_BUILD=Off) function recipe_version { diff --git a/recipes/sed/recipe.sh b/recipes/sed/recipe.sh index 7e09799d..ca77b910 100644 --- a/recipes/sed/recipe.sh +++ b/recipes/sed/recipe.sh @@ -1,8 +1,6 @@ VERSION=4.4 TAR=http://ftp.gnu.org/gnu/sed/sed-$VERSION.tar.xz -HOST=x86_64-elf-redox - function recipe_version { echo "$VERSION" skip=1 From 230fda9ecfedf9b0abfc3985bf5b4f29f68e0232 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Mon, 7 Aug 2017 15:35:37 -0700 Subject: [PATCH 0221/3180] Use -unknown- instead of -elf- --- .cargo/config | 2 +- config.sh | 5 ++--- recipes/rust/recipe.sh | 6 +++--- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/.cargo/config b/.cargo/config index cc387d31..7c62c97b 100644 --- a/.cargo/config +++ b/.cargo/config @@ -1,3 +1,3 @@ [target.x86_64-unknown-redox] -linker = "x86_64-elf-redox-gcc" +linker = "x86_64-unknown-redox-gcc" rustflags = [] diff --git a/config.sh b/config.sh index ad8d6307..a07130ed 100755 --- a/config.sh +++ b/config.sh @@ -4,13 +4,12 @@ set -e # Configuration ARCH=x86_64 export TARGET=$ARCH-unknown-redox -HOST=$ARCH-elf-redox -RUST_HOST=$ARCH-unknown-redox +HOST=$TARGET # Automatic variables ROOT="$(cd `dirname "$0"` && pwd)" REPO="$ROOT/repo/$TARGET" -export CC="x86_64-elf-redox-gcc" +export CC="$HOST-gcc" export XARGO_HOME="$ROOT/xargo" if [[ "$OSTYPE" == "darwin"* ]]; then diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index e10d0749..389d5bd9 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -54,10 +54,10 @@ function recipe_clean { function recipe_stage { binpath="$1/bin" - libpath="$1/lib/rustlib/${RUST_HOST}/lib" + libpath="$1/lib/rustlib/${TARGET}/lib" mkdir -p "$binpath" "$libpath" - cp -fv "build/${RUST_HOST}/stage2/bin/rustc" "$binpath" + cp -fv "build/${TARGET}/stage2/bin/rustc" "$binpath" ${HOST}-strip "$binpath/rustc" - cp -fv $(find build/${RUST_HOST}/stage2/lib/rustlib/${RUST_HOST}/lib/ -type f | grep -v librustc) "$libpath" + cp -fv $(find build/${TARGET}/stage2/lib/rustlib/${TARGET}/lib/ -type f | grep -v librustc) "$libpath" skip=1 } From d21c8cc3d4ba9fc851ad8ddfc58612a09985b8d7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 7 Aug 2017 20:41:32 -0600 Subject: [PATCH 0222/3180] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fd3a2719..16db9ea5 100644 --- a/README.md +++ b/README.md @@ -20,5 +20,5 @@ sudo add-apt-repository 'deb https://static.redox-os.org/toolchain/apt /' sudo apt update # Install the cross compiler -sudo apt install x86-64-elf-redox-gcc +sudo apt install x86-64-unknown-redox-gcc ``` From d863ec63541c1ba342c55c3b40558ce8700512a8 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Mon, 7 Aug 2017 20:42:33 -0700 Subject: [PATCH 0223/3180] Add recipe for bash --- recipes/bash/01-redox-hacks.patch | 298 +++++++++++++++++++++++++++ recipes/bash/02-path-separator.patch | 16 ++ recipes/bash/recipe.sh | 35 ++++ 3 files changed, 349 insertions(+) create mode 100644 recipes/bash/01-redox-hacks.patch create mode 100644 recipes/bash/02-path-separator.patch create mode 100644 recipes/bash/recipe.sh diff --git a/recipes/bash/01-redox-hacks.patch b/recipes/bash/01-redox-hacks.patch new file mode 100644 index 00000000..06386fc5 --- /dev/null +++ b/recipes/bash/01-redox-hacks.patch @@ -0,0 +1,298 @@ +diff -ru source/builtins/read.def source-new/builtins/read.def +--- source/builtins/read.def 2016-05-16 11:24:56.000000000 -0700 ++++ source-new/builtins/read.def 2017-08-07 19:03:27.778688703 -0700 +@@ -94,8 +94,6 @@ + #include "common.h" + #include "bashgetopt.h" + +-#include +- + #if defined (READLINE) + #include "../bashline.h" + #include +@@ -119,7 +117,6 @@ + struct ttsave + { + int fd; +- TTYSTRUCT *attrs; + }; + + #if defined (READLINE) +@@ -192,7 +189,6 @@ + char *e, *t, *t1, *ps2, *tofree; + struct stat tsb; + SHELL_VAR *var; +- TTYSTRUCT ttattrs, ttset; + #if defined (ARRAY_VARS) + WORD_LIST *alist; + #endif +@@ -482,11 +478,6 @@ + { + /* ttsave() */ + termsave.fd = fd; +- ttgetattr (fd, &ttattrs); +- termsave.attrs = &ttattrs; +- +- ttset = ttattrs; +- i = silent ? ttfd_cbreak (fd, &ttset) : ttfd_onechar (fd, &ttset); + if (i < 0) + sh_ttyerror (1); + tty_modified = 1; +@@ -499,14 +490,6 @@ + { + /* ttsave (); */ + termsave.fd = fd; +- ttgetattr (fd, &ttattrs); +- termsave.attrs = &ttattrs; +- +- ttset = ttattrs; +- i = ttfd_noecho (fd, &ttset); /* ttnoecho (); */ +- if (i < 0) +- sh_ttyerror (1); +- + tty_modified = 1; + add_unwind_protect ((Function *)ttyrestore, (char *)&termsave); + if (interactive_shell == 0) +@@ -995,7 +978,6 @@ + ttyrestore (ttp) + struct ttsave *ttp; + { +- ttsetattr (ttp->fd, ttp->attrs); + tty_modified = 0; + } + +diff -ru source/general.c source-new/general.c +--- source/general.c 2016-08-11 08:16:56.000000000 -0700 ++++ source-new/general.c 2017-08-07 19:55:47.437464359 -0700 +@@ -476,6 +476,7 @@ + void + check_dev_tty () + { ++#if 0 + int tty_fd; + char *tty; + +@@ -490,6 +491,7 @@ + } + if (tty_fd >= 0) + close (tty_fd); ++#endif + } + + /* Return 1 if PATH1 and PATH2 are the same file. This is kind of +diff -ru source/include/posixwait.h source-new/include/posixwait.h +--- source/include/posixwait.h 2008-08-12 07:03:03.000000000 -0700 ++++ source-new/include/posixwait.h 2017-08-07 18:37:29.854754332 -0700 +@@ -34,7 +34,7 @@ + + /* How to get the status of a job. For Posix, this is just an + int, but for other systems we have to crack the union wait. */ +-#if !defined (_POSIX_VERSION) ++#if 0 + typedef union wait WAIT; + # define WSTATUS(t) (t.w_status) + #else /* _POSIX_VERSION */ +@@ -50,7 +50,7 @@ + + /* More Posix P1003.1 definitions. In the POSIX versions, the parameter is + passed as an `int', in the non-POSIX version, as `union wait'. */ +-#if defined (_POSIX_VERSION) ++#if 1 + + # if !defined (WSTOPSIG) + # define WSTOPSIG(s) ((s) >> 8) +diff -ru source/lib/sh/getcwd.c source-new/lib/sh/getcwd.c +--- source/lib/sh/getcwd.c 2012-03-10 07:48:50.000000000 -0800 ++++ source-new/lib/sh/getcwd.c 2017-08-07 19:53:52.379759811 -0700 +@@ -20,7 +20,7 @@ + + #include + +-#if !defined (HAVE_GETCWD) ++#if 0 + + #if !defined (__GNUC__) && !defined (HAVE_ALLOCA_H) && defined (_AIX) + #pragma alloca +diff -ru source/lib/sh/Makefile.in source-new/lib/sh/Makefile.in +--- source/lib/sh/Makefile.in 2015-10-26 09:59:58.000000000 -0700 ++++ source-new/lib/sh/Makefile.in 2017-08-07 19:12:46.587180259 -0700 +@@ -83,7 +83,7 @@ + # The C code source files for this library. + CSOURCES = clktck.c clock.c getcwd.c getenv.c oslib.c setlinebuf.c \ + strcasecmp.c strerror.c strtod.c strtol.c strtoul.c \ +- vprint.c itos.c rename.c zread.c zwrite.c shtty.c \ ++ vprint.c itos.c rename.c zread.c zwrite.c \ + inet_aton.c netconn.c netopen.c strpbrk.c timeval.c makepath.c \ + pathcanon.c pathphys.c tmpfile.c stringlist.c stringvec.c spell.c \ + shquote.c strtrans.c strcasestr.c snprintf.c mailstat.c \ +@@ -100,7 +100,7 @@ + # The object files contained in $(LIBRARY_NAME) + LIBOBJS = @LIBOBJS@ + OBJECTS = clktck.o clock.o getenv.o oslib.o setlinebuf.o strnlen.o \ +- itos.o zread.o zwrite.o shtty.o shmatch.o eaccess.o \ ++ itos.o zread.o zwrite.o shmatch.o eaccess.o \ + netconn.o netopen.o timeval.o makepath.o pathcanon.o \ + pathphys.o tmpfile.o stringlist.o stringvec.o spell.o shquote.o \ + strtrans.o snprintf.o mailstat.o fmtulong.o \ +@@ -174,7 +174,6 @@ + shmatch.o: shmatch.c + shmbchar.o: shmbchar.c + shquote.o: shquote.c +-shtty.o: shtty.c + snprintf.o: snprintf.c + spell.o: spell.c + strcasecmp.o: strcasecmp.c +@@ -251,7 +250,6 @@ + shmatch.o: ${BUILD_DIR}/config.h + shmbchar.o: ${BUILD_DIR}/config.h + shquote.o: ${BUILD_DIR}/config.h +-shtty.o: ${BUILD_DIR}/config.h + snprintf.o: ${BUILD_DIR}/config.h + spell.o: ${BUILD_DIR}/config.h + strcasecmp.o: ${BUILD_DIR}/config.h +@@ -411,9 +409,6 @@ + shquote.o: ${BASHINCDIR}/ansi_stdlib.h ${topdir}/xmalloc.h + shquote.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h + +-shtty.o: ${BASHINCDIR}/shtty.h +-shtty.o: ${BASHINCDIR}/stdc.h +- + snprintf.o: ${BASHINCDIR}/stdc.h ${topdir}/bashansi.h ${topdir}/xmalloc.h + snprintf.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h + snprintf.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h +diff -ru source/lib/sh/oslib.c source-new/lib/sh/oslib.c +--- source/lib/sh/oslib.c 2013-10-14 06:12:57.000000000 -0700 ++++ source-new/lib/sh/oslib.c 2017-08-07 19:10:21.375838312 -0700 +@@ -236,10 +236,10 @@ + #if !defined (HAVE_MKFIFO) && defined (PROCESS_SUBSTITUTION) + int + mkfifo (path, mode) +- char *path; +- int mode; ++ const char *path; ++ mode_t mode; + { +-#if defined (S_IFIFO) ++#if 0 + return (mknod (path, (mode | S_IFIFO), 0)); + #else /* !S_IFIFO */ + return (-1); +diff -ru source/lib/sh/winsize.c source-new/lib/sh/winsize.c +--- source/lib/sh/winsize.c 2016-01-25 10:24:45.000000000 -0800 ++++ source-new/lib/sh/winsize.c 2017-08-07 19:14:41.571576687 -0700 +@@ -28,7 +28,6 @@ + # include + #endif + +-#include + + /* Try to find the definitions of `struct winsize' and TIOGCWINSZ */ + +diff -ru source/nojobs.c source-new/nojobs.c +--- source/nojobs.c 2016-08-04 12:34:33.000000000 -0700 ++++ source-new/nojobs.c 2017-08-07 18:35:09.650244654 -0700 +@@ -39,7 +39,6 @@ + #endif + + /* Need to include this up here for *_TTY_DRIVER definitions. */ +-#include "shtty.h" + + #include "bashintl.h" + +@@ -829,7 +828,7 @@ + CHECK_WAIT_INTR; + if (got_pid < 0 && errno == ECHILD) + { +-#if !defined (_POSIX_VERSION) ++#if 0 + status.w_termsig = status.w_retcode = 0; + #else + status = 0; +@@ -929,13 +928,13 @@ + return (result); + } + +-static TTYSTRUCT shell_tty_info; + static int got_tty_state; + + /* Fill the contents of shell_tty_info with the current tty info. */ + int + get_tty_state () + { ++#if 0 + int tty; + + tty = input_tty (); +@@ -946,6 +945,7 @@ + if (check_window_size) + get_new_window_size (0, (int *)0, (int *)0); + } ++#endif + return 0; + } + +@@ -953,6 +953,7 @@ + int + set_tty_state () + { ++#if 0 + int tty; + + tty = input_tty (); +@@ -962,6 +963,7 @@ + return 0; + ttsetattr (tty, &shell_tty_info); + } ++#endif + return 0; + } + +diff -ru source/shell.c source-new/shell.c +--- source/shell.c 2016-05-06 08:23:43.000000000 -0700 ++++ source-new/shell.c 2017-08-07 19:54:44.320227849 -0700 +@@ -1276,7 +1276,7 @@ + { + int e; + +- if (setuid (current_user.uid) < 0) ++ if (1) + { + e = errno; + sys_error (_("cannot set uid to %d: effective uid %d"), current_user.uid, current_user.euid); +@@ -1285,7 +1285,7 @@ + exit (e); + #endif + } +- if (setgid (current_user.gid) < 0) ++ if (1) + sys_error (_("cannot set gid to %d: effective gid %d"), current_user.gid, current_user.egid); + + current_user.euid = current_user.uid; +diff -ru source/sig.c source-new/sig.c +--- source/sig.c 2016-02-11 12:02:45.000000000 -0800 ++++ source-new/sig.c 2017-08-07 19:56:13.637701224 -0700 +@@ -684,7 +684,9 @@ + + /* Perform OPERATION on NEWSET, perhaps leaving information in OLDSET. */ + sigprocmask (operation, newset, oldset) +- int operation, *newset, *oldset; ++ int operation; ++ const sigset_t *newset; ++ sigset_t *oldset; + { + int old, new; + +@@ -696,11 +698,11 @@ + switch (operation) + { + case SIG_BLOCK: +- old = sigblock (new); ++ //old = sigblock (new); + break; + + case SIG_SETMASK: +- old = sigsetmask (new); ++ //old = sigsetmask (new); + break; + + default: diff --git a/recipes/bash/02-path-separator.patch b/recipes/bash/02-path-separator.patch new file mode 100644 index 00000000..88ee2120 --- /dev/null +++ b/recipes/bash/02-path-separator.patch @@ -0,0 +1,16 @@ +diff -ru source/general.c source-new/general.c +--- source/general.c 2016-08-11 08:16:56.000000000 -0700 ++++ source-new/general.c 2017-08-07 20:22:31.581566466 -0700 +@@ -909,10 +909,10 @@ + `:'. If I is 0, then the path has a leading colon. Trailing colons + are handled OK by the `else' part of the if statement; an empty + string is returned in that case. */ +- if (i && string[i] == ':') ++ if (i && string[i] == ';') + i++; + +- for (start = i; string[i] && string[i] != ':'; i++) ++ for (start = i; string[i] && string[i] != ';'; i++) + ; + + *p_index = i; diff --git a/recipes/bash/recipe.sh b/recipes/bash/recipe.sh new file mode 100644 index 00000000..e473b930 --- /dev/null +++ b/recipes/bash/recipe.sh @@ -0,0 +1,35 @@ +VERSION=4.4 +TAR=http://ftp.gnu.org/gnu/bash/bash-$VERSION.tar.gz + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + wget -O support/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + ./configure --host=${HOST} --prefix=/ --disable-readline + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" ${MAKEFLAGS} install + skip=1 +} From 2aa8d85a46b5ddb78c5c155534b7f2d88cb864d8 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Tue, 8 Aug 2017 13:30:42 -0700 Subject: [PATCH 0224/3180] Add recipe for xz --- recipes/xz/01-no-poll.patch | 55 ++++++++++++++++++++++++++++ recipes/xz/02-o_noctty.patch | 14 +++++++ recipes/xz/03-no-signals.patch | 47 ++++++++++++++++++++++++ recipes/xz/04-no-fchown-fchmod.patch | 12 ++++++ recipes/xz/recipe.sh | 36 ++++++++++++++++++ 5 files changed, 164 insertions(+) create mode 100644 recipes/xz/01-no-poll.patch create mode 100644 recipes/xz/02-o_noctty.patch create mode 100644 recipes/xz/03-no-signals.patch create mode 100644 recipes/xz/04-no-fchown-fchmod.patch create mode 100644 recipes/xz/recipe.sh diff --git a/recipes/xz/01-no-poll.patch b/recipes/xz/01-no-poll.patch new file mode 100644 index 00000000..3c36484f --- /dev/null +++ b/recipes/xz/01-no-poll.patch @@ -0,0 +1,55 @@ +diff -ru source/src/xz/file_io.c source-new/src/xz/file_io.c +--- source/src/xz/file_io.c 2016-12-30 03:13:57.000000000 -0800 ++++ source-new/src/xz/file_io.c 2017-08-08 12:34:08.453700076 -0700 +@@ -17,7 +17,7 @@ + #ifdef TUKLIB_DOSLIKE + # include + #else +-# include ++//# include + static bool warn_fchown; + #endif + +@@ -222,7 +222,7 @@ + #endif // ENABLE_SANDBOX + + +-#ifndef TUKLIB_DOSLIKE ++#if 0 + /// \brief Waits for input or output to become available or for a signal + /// + /// This uses the self-pipe trick to avoid a race condition that can occur +@@ -704,6 +704,7 @@ + // If it is something else than a regular file, wait until + // there is input available. This way reading from FIFOs + // will work when open() is used with O_NONBLOCK. ++#if 0 + if (!S_ISREG(pair->src_st.st_mode)) { + signals_unblock(); + const io_wait_ret ret = io_wait(pair, -1, true); +@@ -713,6 +714,7 @@ + goto error; + } + #endif ++#endif + + #ifdef HAVE_POSIX_FADVISE + // It will fail with some special files like FIFOs but that is fine. +@@ -1127,7 +1129,7 @@ + continue; + } + +-#ifndef TUKLIB_DOSLIKE ++#if 0 + if (IS_EAGAIN_OR_EWOULDBLOCK(errno)) { + const io_wait_ret ret = io_wait(pair, + mytime_get_flush_timeout(), +@@ -1215,7 +1217,7 @@ + continue; + } + +-#ifndef TUKLIB_DOSLIKE ++#if 0 + if (IS_EAGAIN_OR_EWOULDBLOCK(errno)) { + if (io_wait(pair, -1, false) == IO_WAIT_MORE) + continue; diff --git a/recipes/xz/02-o_noctty.patch b/recipes/xz/02-o_noctty.patch new file mode 100644 index 00000000..2ad56398 --- /dev/null +++ b/recipes/xz/02-o_noctty.patch @@ -0,0 +1,14 @@ +diff -ru source/src/common/tuklib_open_stdxxx.c source-new/src/common/tuklib_open_stdxxx.c +--- source/src/common/tuklib_open_stdxxx.c 2016-12-30 03:08:20.000000000 -0800 ++++ source-new/src/common/tuklib_open_stdxxx.c 2017-08-08 12:38:10.703829409 -0700 +@@ -35,8 +35,8 @@ + // writing to stdin would fail. However, /dev/full + // is Linux specific, and if the program tries to + // write to stdin, there's already a problem anyway. +- const int fd = open("/dev/null", O_NOCTTY +- | (i == 0 ? O_WRONLY : O_RDONLY)); ++ const int fd = open("/dev/null", ++ (i == 0 ? O_WRONLY : O_RDONLY)); + + if (fd != i) { + if (fd != -1) diff --git a/recipes/xz/03-no-signals.patch b/recipes/xz/03-no-signals.patch new file mode 100644 index 00000000..5fce80ea --- /dev/null +++ b/recipes/xz/03-no-signals.patch @@ -0,0 +1,47 @@ +diff -ru source/src/xz/message.c source-new/src/xz/message.c +--- source/src/xz/message.c 2016-12-30 03:08:20.000000000 -0800 ++++ source-new/src/xz/message.c 2017-08-08 12:44:30.584447139 -0700 +@@ -135,7 +135,7 @@ + } + */ + +-#ifdef SIGALRM ++#if 0 + // Establish the signal handlers which set a flag to tell us that + // progress info should be updated. + struct sigaction sa; +diff -ru source/src/xz/signals.c source-new/src/xz/signals.c +--- source/src/xz/signals.c 2016-12-30 03:08:20.000000000 -0800 ++++ source-new/src/xz/signals.c 2017-08-08 12:41:59.624111395 -0700 +@@ -53,6 +53,7 @@ + extern void + signals_init(void) + { ++#if 0 + // List of signals for which we establish the signal handler. + static const int sigs[] = { + SIGINT, +@@ -112,6 +113,7 @@ + signals_are_initialized = true; + + return; ++#endif + } + + +@@ -152,6 +154,7 @@ + extern void + signals_exit(void) + { ++#if 0 + const int sig = exit_signal; + + if (sig != 0) { +@@ -171,6 +174,7 @@ + } + + return; ++#endif + } + + #else diff --git a/recipes/xz/04-no-fchown-fchmod.patch b/recipes/xz/04-no-fchown-fchmod.patch new file mode 100644 index 00000000..d4b69e1d --- /dev/null +++ b/recipes/xz/04-no-fchown-fchmod.patch @@ -0,0 +1,12 @@ +diff -ru source/src/xz/file_io.c source-new/src/xz/file_io.c +--- source/src/xz/file_io.c 2016-12-30 03:13:57.000000000 -0800 ++++ source-new/src/xz/file_io.c 2017-08-08 12:49:15.225290972 -0700 +@@ -351,7 +351,7 @@ + io_copy_attrs(const file_pair *pair) + { + // Skip chown and chmod on Windows. +-#ifndef TUKLIB_DOSLIKE ++#if 0 + // This function is more tricky than you may think at first. + // Blindly copying permissions may permit users to access the + // destination file who didn't have permission to access the diff --git a/recipes/xz/recipe.sh b/recipes/xz/recipe.sh new file mode 100644 index 00000000..0c70d7bb --- /dev/null +++ b/recipes/xz/recipe.sh @@ -0,0 +1,36 @@ +VERSION=5.2.3 +TAR=https://tukaani.org/xz/xz-$VERSION.tar.gz + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + ./configure --host=${HOST} --prefix=/ --enable-threads=no + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + rm -rf "$dest/share" + skip=1 +} From 937c957516114835628c9ff7de35be89228ddf7b Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Tue, 8 Aug 2017 17:47:48 -0700 Subject: [PATCH 0225/3180] Make extrautils have xz as a build depend --- recipes/extrautils/recipe.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/recipes/extrautils/recipe.sh b/recipes/extrautils/recipe.sh index 7721ee54..de7b40e1 100644 --- a/recipes/extrautils/recipe.sh +++ b/recipes/extrautils/recipe.sh @@ -1 +1,6 @@ GIT=https://github.com/redox-os/extrautils.git +BUILD_DEPENDS=xz +export PKG_CONFIG_ALLOW_CROSS=1 +export PKG_CONFIG_PATH= +export PKG_CONFIG_LIBDIR="$PWD/sysroot/lib/pkgconfig" +export PKG_CONFIG_SYSROOT_DIR="$PWD/sysroot" From 58b8df294777a8cca1ed4763f32addd15efb2d55 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Tue, 8 Aug 2017 19:49:46 -0700 Subject: [PATCH 0226/3180] Add recipe for patch --- recipes/patch/01-no-rlimit.patch | 35 +++++++++++++++++++++++++++++ recipes/patch/recipe.sh | 38 ++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 recipes/patch/01-no-rlimit.patch create mode 100644 recipes/patch/recipe.sh diff --git a/recipes/patch/01-no-rlimit.patch b/recipes/patch/01-no-rlimit.patch new file mode 100644 index 00000000..c44b9a96 --- /dev/null +++ b/recipes/patch/01-no-rlimit.patch @@ -0,0 +1,35 @@ +diff -ru source/lib/getdtablesize.c source-new/lib/getdtablesize.c +--- source/lib/getdtablesize.c 2015-03-06 16:31:45.000000000 -0800 ++++ source-new/lib/getdtablesize.c 2017-08-08 19:33:33.993874985 -0700 +@@ -106,15 +106,6 @@ + int + getdtablesize (void) + { +- struct rlimit lim; +- +- if (getrlimit (RLIMIT_NOFILE, &lim) == 0 +- && 0 <= lim.rlim_cur && lim.rlim_cur <= INT_MAX +- && lim.rlim_cur != RLIM_INFINITY +- && lim.rlim_cur != RLIM_SAVED_CUR +- && lim.rlim_cur != RLIM_SAVED_MAX) +- return lim.rlim_cur; +- + return INT_MAX; + } + +Only in source-new/lib: getdtablesize.c.orig +diff -ru source/src/safe.c source-new/src/safe.c +--- source/src/safe.c 2015-03-06 16:34:20.000000000 -0800 ++++ source-new/src/safe.c 2017-08-08 19:33:53.447430811 -0700 +@@ -92,11 +92,7 @@ + + static void init_dirfd_cache (void) + { +- struct rlimit nofile; +- + max_cached_fds = 8; +- if (getrlimit (RLIMIT_NOFILE, &nofile) == 0) +- max_cached_fds = MAX (nofile.rlim_cur / 4, max_cached_fds); + + cached_dirfds = hash_initialize (max_cached_fds, + NULL, diff --git a/recipes/patch/recipe.sh b/recipes/patch/recipe.sh new file mode 100644 index 00000000..3f54f7f3 --- /dev/null +++ b/recipes/patch/recipe.sh @@ -0,0 +1,38 @@ +VERSION=2.7.5 +TAR=http://ftp.gnu.org/gnu/patch/patch-$VERSION.tar.xz + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + autoreconf + ./configure --host=${HOST} --prefix=/ + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + $HOST-strip $1/bin/* + rm -rf "$1/"{share,lib} + skip=1 +} From c6c877611d107998d47aaaf9cd3bbd6989b7c3b2 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 10 Aug 2017 18:30:46 -0700 Subject: [PATCH 0227/3180] Use system 'pkg' when run on Redox --- cook.sh | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/cook.sh b/cook.sh index 392e1da6..90f6d02e 100755 --- a/cook.sh +++ b/cook.sh @@ -8,6 +8,13 @@ source config.sh export BINDIR=bin export CARGOFLAGS= +if [ ! "$(uname -s)" = "Redox" ] +then +function pkg { + CC=cc cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- $@ +} +fi + function usage { echo "cook.sh $1 " >&2 echo " dist" >&2 @@ -118,7 +125,7 @@ function op { for i in "${BUILD_DEPENDS[@]}" do - CC=cc cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- --target=$TARGET install --root sysroot "$REPO/$i.tar.gz" + pkg --target=$TARGET install --root sysroot "$REPO/$i.tar.gz" done fi @@ -229,7 +236,7 @@ function op { echo "target = \"$TARGET\"" >> "stage.toml" mkdir -p stage/pkg cp -v stage.toml "stage/pkg/$1.toml" - CC=cc cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- --target=$TARGET create stage + pkg --target=$TARGET create stage ;; untar) rm -rfv stage.tar.gz stage.sig stage.toml From c9ed826f9d590d6a4c6b80c1eea95c46f988a156 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Fri, 11 Aug 2017 18:37:51 -0700 Subject: [PATCH 0228/3180] Patch patch not to call chown --- recipes/patch/02-no-chown.patch | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 recipes/patch/02-no-chown.patch diff --git a/recipes/patch/02-no-chown.patch b/recipes/patch/02-no-chown.patch new file mode 100644 index 00000000..996f6a72 --- /dev/null +++ b/recipes/patch/02-no-chown.patch @@ -0,0 +1,19 @@ +diff -ru source/src/util.c source-new/src/util.c +--- source/src/util.c 2015-03-06 16:34:20.000000000 -0800 ++++ source-new/src/util.c 2017-08-11 18:24:56.991729200 -0700 +@@ -271,6 +271,7 @@ + + /* May fail if we are not privileged to set the file owner, or we are + not in group instat.st_gid. Ignore those errors. */ ++ /* + if ((uid != -1 || gid != -1) + && safe_lchown (to, uid, gid) != 0 + && (errno != EPERM +@@ -281,6 +282,7 @@ + (uid == -1) ? "owner" : "owning group", + S_ISLNK (mode) ? "symbolic link" : "file", + quotearg (to)); ++ */ + } + if (attr & FA_XATTRS) + if (copy_attr (from, to) != 0 From aedea229de5b6100dce73c73391a4163c3e63301 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Fri, 11 Aug 2017 19:57:02 -0700 Subject: [PATCH 0229/3180] Pass -p to cp, to make running autotools unnecessary --- cook.sh | 2 +- recipes/gnu-grep/recipe.sh | 1 - recipes/sed/recipe.sh | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/cook.sh b/cook.sh index 90f6d02e..8e06e71b 100755 --- a/cook.sh +++ b/cook.sh @@ -130,7 +130,7 @@ function op { fi rm -rf build - cp -r source build + cp -rp source build for patch in *.patch do diff --git a/recipes/gnu-grep/recipe.sh b/recipes/gnu-grep/recipe.sh index 6795cc2a..258c3020 100644 --- a/recipes/gnu-grep/recipe.sh +++ b/recipes/gnu-grep/recipe.sh @@ -12,7 +12,6 @@ function recipe_update { } function recipe_build { - autoreconf ./configure --host=${HOST} --prefix=/ make skip=1 diff --git a/recipes/sed/recipe.sh b/recipes/sed/recipe.sh index ca77b910..dac91eb1 100644 --- a/recipes/sed/recipe.sh +++ b/recipes/sed/recipe.sh @@ -12,7 +12,6 @@ function recipe_update { } function recipe_build { - autoreconf ./configure --host=${HOST} --prefix=/ make skip=1 From f6c4c29a959951e1ee878e2a96cc42d5119bb37e Mon Sep 17 00:00:00 2001 From: Thomas Gatzweiler Date: Mon, 14 Aug 2017 17:04:10 +0200 Subject: [PATCH 0230/3180] Add recipe for ncurses --- recipes/ncurses/01-config-sub.patch | 21 +++++++++++++++++ recipes/ncurses/recipe.sh | 36 +++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 recipes/ncurses/01-config-sub.patch create mode 100644 recipes/ncurses/recipe.sh diff --git a/recipes/ncurses/01-config-sub.patch b/recipes/ncurses/01-config-sub.patch new file mode 100644 index 00000000..8ed32be6 --- /dev/null +++ b/recipes/ncurses/01-config-sub.patch @@ -0,0 +1,21 @@ +diff -ru source/config.sub source-new/config.sub +--- source/config.sub 2015-05-02 13:52:04.000000000 +0200 ++++ source-new/config.sub 2017-08-13 13:12:16.485670615 +0200 +@@ -2,7 +2,7 @@ + # Configuration validation subroutine script. + # Copyright 1992-2015 Free Software Foundation, Inc. + +-timestamp='2015-03-08' ++timestamp='2017-08-13' + + # This file is free software; you can redistribute it and/or modify it + # under the terms of the GNU General Public License as published by +@@ -1371,7 +1371,7 @@ + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. +- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ ++ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* | -redox* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ diff --git a/recipes/ncurses/recipe.sh b/recipes/ncurses/recipe.sh new file mode 100644 index 00000000..d7ed2709 --- /dev/null +++ b/recipes/ncurses/recipe.sh @@ -0,0 +1,36 @@ +VERSION=6.0 +TAR=http://ftp.gnu.org/gnu/ncurses/ncurses-$VERSION.tar.gz + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + ./configure --host=${HOST} --prefix="" + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + rm -rf "$1"/bin + rm -rf "$1"/share/{doc,info,man} + skip=1 +} From b6b80960e272e3e4b0be58715e4ead216e0b50e8 Mon Sep 17 00:00:00 2001 From: Thomas Gatzweiler Date: Mon, 14 Aug 2017 17:19:30 +0200 Subject: [PATCH 0231/3180] Add recipe for readline --- recipes/readline/01-config-sub.patch | 21 +++++++++++++++ recipes/readline/recipe.sh | 39 ++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 recipes/readline/01-config-sub.patch create mode 100644 recipes/readline/recipe.sh diff --git a/recipes/readline/01-config-sub.patch b/recipes/readline/01-config-sub.patch new file mode 100644 index 00000000..7b632e52 --- /dev/null +++ b/recipes/readline/01-config-sub.patch @@ -0,0 +1,21 @@ +diff -ru source/support/config.sub source-new/support/config.sub +--- source/support/config.sub 2013-12-17 16:49:47.000000000 +0100 ++++ source-new/support/config.sub 2017-08-14 09:09:20.158401733 +0200 +@@ -2,7 +2,7 @@ + # Configuration validation subroutine script. + # Copyright 1992-2013 Free Software Foundation, Inc. + +-timestamp='2013-10-01' ++timestamp='2017-08-14' + + # This file is free software; you can redistribute it and/or modify it + # under the terms of the GNU General Public License as published by +@@ -1351,7 +1351,7 @@ + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. +- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ ++ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* | -redox* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ diff --git a/recipes/readline/recipe.sh b/recipes/readline/recipe.sh new file mode 100644 index 00000000..773901ce --- /dev/null +++ b/recipes/readline/recipe.sh @@ -0,0 +1,39 @@ +VERSION=7.0 +TAR=http://ftp.gnu.org/gnu/readline/readline-$VERSION.tar.gz +BUILD_DEPENDS=(ncurses) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="${PWD}/../sysroot" + export LDFLAGS="-L$sysroot/lib" + export CFLAGS="-I$sysroot/include" + ./configure --disable-shared --host=${HOST} --prefix="" + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + rm -rf "$1"/share/{doc,info,man} + skip=1 +} From d306f65586f879fea1c267d509ea9c336009e380 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Mon, 14 Aug 2017 11:21:57 -0700 Subject: [PATCH 0232/3180] Add symlinks to uutils package --- recipes/uutils/recipe.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/recipes/uutils/recipe.sh b/recipes/uutils/recipe.sh index 38843263..08bc6964 100644 --- a/recipes/uutils/recipe.sh +++ b/recipes/uutils/recipe.sh @@ -1,2 +1,12 @@ GIT=https://github.com/redox-os/uutils.git CARGOFLAGS="--no-default-features --features redox" + +function recipe_stage { + mkdir -p "$1/bin" + ln -s uutils "$1/bin/chmod" + ln -s uutils "$1/bin/env" + ln -s uutils "$1/bin/expr" + ln -s uutils "$1/bin/install" + ln -s uutils "$1/bin/ls" + ln -s uutils "$1/bin/mktemp" +} From 6d3e9cc1ef6e739fd63874f85e4fab6941894b91 Mon Sep 17 00:00:00 2001 From: Nick Vernij Date: Tue, 15 Aug 2017 18:04:46 +0200 Subject: [PATCH 0233/3180] Fixed ncurses failing to compile. Added a cpp flag that is required for certain versions of gcc. --- recipes/ncurses/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/ncurses/recipe.sh b/recipes/ncurses/recipe.sh index d7ed2709..a31c4ab0 100644 --- a/recipes/ncurses/recipe.sh +++ b/recipes/ncurses/recipe.sh @@ -12,6 +12,7 @@ function recipe_update { } function recipe_build { + export CPPFLAGS="-P" ./configure --host=${HOST} --prefix="" make skip=1 From f0f21aa8fe9cd571209916ef0fdb73526d66ccfb Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Tue, 15 Aug 2017 13:19:35 -0700 Subject: [PATCH 0234/3180] git: do not patch /dev/null to null: Newlib now has a workaround for this, and it was resulting in a lot of changes. --- recipes/git/git.patch | 461 +++++------------------------------------- 1 file changed, 52 insertions(+), 409 deletions(-) diff --git a/recipes/git/git.patch b/recipes/git/git.patch index 8a36a669..1ff921ce 100644 --- a/recipes/git/git.patch +++ b/recipes/git/git.patch @@ -1,76 +1,6 @@ -diff -ru git-2.13.1/apply.c git-2.13.1-new/apply.c ---- git-2.13.1/apply.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/apply.c 2017-07-05 12:22:03.501240281 -0700 -@@ -449,7 +449,7 @@ - - static int is_dev_null(const char *str) - { -- return skip_prefix(str, "/dev/null", &str) && isspace(*str); -+ return skip_prefix(str, "null:", &str) && isspace(*str); - } - - #define TERM_SPACE 1 -@@ -974,7 +974,7 @@ - int len = strlen(*name); - char *another; - if (isnull) -- return error(_("git apply: bad git-diff - expected /dev/null, got %s on line %d"), -+ return error(_("git apply: bad git-diff - expected null:, got %s on line %d"), - *name, state->linenr); - another = find_name(state, line, NULL, state->p_value, TERM_TAB); - if (!another || memcmp(another, *name, len + 1)) { -@@ -985,9 +985,9 @@ - } - free(another); - } else { -- /* expect "/dev/null" */ -- if (memcmp("/dev/null", line, 9) || line[9] != '\n') -- return error(_("git apply: bad git-diff - expected /dev/null on line %d"), state->linenr); -+ /* expect "null:" */ -+ if (memcmp("null:", line, 9) || line[9] != '\n') -+ return error(_("git apply: bad git-diff - expected null: on line %d"), state->linenr); - } - - return 0; -diff -ru git-2.13.1/builtin/am.c git-2.13.1-new/builtin/am.c ---- git-2.13.1/builtin/am.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/builtin/am.c 2017-06-25 15:19:22.550752475 -0700 -@@ -2342,7 +2342,7 @@ - * 1. mbox path(s) are provided on the command-line. - * 2. stdin is not a tty: the user is trying to feed us a patch - * from standard input. This is somewhat unreliable -- stdin -- * could be /dev/null for example and the caller did not -+ * could be null: for example and the caller did not - * intend to feed us a patch but wanted to continue - * unattended. - */ -diff -ru git-2.13.1/builtin/diff-tree.c git-2.13.1-new/builtin/diff-tree.c ---- git-2.13.1/builtin/diff-tree.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/builtin/diff-tree.c 2017-06-25 15:19:22.580752658 -0700 -@@ -83,7 +83,7 @@ - "git diff-tree [--stdin] [-m] [-c] [--cc] [-s] [-v] [--pretty] [-t] [-r] [--root] " - "[] [] [...]\n" - " -r diff recursively\n" --" --root include the initial commit as diff against /dev/null\n" -+" --root include the initial commit as diff against null:\n" - COMMON_DIFF_OPTIONS_HELP; - - static void diff_tree_tweak_rev(struct rev_info *rev, struct setup_revision_opt *opt) -diff -ru git-2.13.1/builtin/fetch.c git-2.13.1-new/builtin/fetch.c ---- git-2.13.1/builtin/fetch.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/builtin/fetch.c 2017-06-25 15:19:22.587419365 -0700 -@@ -730,7 +730,7 @@ - const char *what, *kind; - struct ref *rm; - char *url; -- const char *filename = dry_run ? "/dev/null" : git_path_fetch_head(); -+ const char *filename = dry_run ? "null:" : git_path_fetch_head(); - int want_status; - int summary_width = transport_summary_width(ref_map); - -diff -ru git-2.13.1/builtin/log.c git-2.13.1-new/builtin/log.c ---- git-2.13.1/builtin/log.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/builtin/log.c 2017-06-25 15:19:22.664086500 -0700 +diff -ru source/builtin/log.c source-new/builtin/log.c +--- source/builtin/log.c 2017-06-04 18:08:11.000000000 -0700 ++++ source-new/builtin/log.c 2017-08-15 13:10:13.777597945 -0700 @@ -308,6 +308,7 @@ static void setup_early_output(struct rev_info *rev) @@ -87,42 +17,8 @@ diff -ru git-2.13.1/builtin/log.c git-2.13.1-new/builtin/log.c } static void finish_early_output(struct rev_info *rev) -diff -ru git-2.13.1/builtin/merge-file.c git-2.13.1-new/builtin/merge-file.c ---- git-2.13.1/builtin/merge-file.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/builtin/merge-file.c 2017-06-25 15:19:22.604086133 -0700 -@@ -60,8 +60,8 @@ - if (argc != 3) - usage_with_options(merge_file_usage, options); - if (quiet) { -- if (!freopen("/dev/null", "w", stderr)) -- return error_errno("failed to redirect stderr to /dev/null"); -+ if (!freopen("null:", "w", stderr)) -+ return error_errno("failed to redirect stderr to null:"); - } - - for (i = 0; i < 3; i++) { -diff -ru git-2.13.1/combine-diff.c git-2.13.1-new/combine-diff.c ---- git-2.13.1/combine-diff.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/combine-diff.c 2017-06-25 15:19:22.767420465 -0700 -@@ -953,13 +953,13 @@ - return; - - if (added) -- dump_quoted_path("--- ", "", "/dev/null", -+ dump_quoted_path("--- ", "", "null:", - line_prefix, c_meta, c_reset); - else - dump_quoted_path("--- ", a_prefix, elem->path, - line_prefix, c_meta, c_reset); - if (deleted) -- dump_quoted_path("+++ ", "", "/dev/null", -+ dump_quoted_path("+++ ", "", "null:", - line_prefix, c_meta, c_reset); - else - dump_quoted_path("+++ ", b_prefix, elem->path, -diff -ru git-2.13.1/common-main.c git-2.13.1-new/common-main.c ---- git-2.13.1/common-main.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/common-main.c 2017-06-25 15:19:23.000755222 -0700 +--- source/common-main.c 2017-06-04 18:08:11.000000000 -0700 ++++ source-new/common-main.c 2017-08-15 13:10:15.490958287 -0700 @@ -15,12 +15,14 @@ */ static void restore_sigpipe_to_default(void) @@ -138,9 +34,8 @@ diff -ru git-2.13.1/common-main.c git-2.13.1-new/common-main.c } int main(int argc, const char **argv) -diff -ru git-2.13.1/compat/hstrerror.c git-2.13.1-new/compat/hstrerror.c ---- git-2.13.1/compat/hstrerror.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/compat/hstrerror.c 2017-06-25 15:19:22.704086744 -0700 +--- source/compat/hstrerror.c 2017-06-04 18:08:11.000000000 -0700 ++++ source-new/compat/hstrerror.c 2017-08-15 13:10:13.854265821 -0700 @@ -5,17 +5,6 @@ const char *githstrerror(int err) { @@ -159,39 +54,8 @@ diff -ru git-2.13.1/compat/hstrerror.c git-2.13.1-new/compat/hstrerror.c snprintf(buffer, sizeof(buffer), "Name resolution error %d", err); return buffer; } -diff -ru git-2.13.1/compat/mingw.c git-2.13.1-new/compat/mingw.c ---- git-2.13.1/compat/mingw.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/compat/mingw.c 2017-06-25 15:19:22.697420037 -0700 -@@ -352,7 +352,7 @@ - mode = va_arg(args, int); - va_end(args); - -- if (filename && !strcmp(filename, "/dev/null")) -+ if (filename && !strcmp(filename, "null:")) - filename = "nul"; - - if (xutftowcs_path(wfilename, filename) < 0) -@@ -413,7 +413,7 @@ - int hide = needs_hiding(filename); - FILE *file; - wchar_t wfilename[MAX_PATH], wotype[4]; -- if (filename && !strcmp(filename, "/dev/null")) -+ if (filename && !strcmp(filename, "null:")) - filename = "nul"; - if (xutftowcs_path(wfilename, filename) < 0 || - xutftowcs(wotype, otype, ARRAY_SIZE(wotype)) < 0) -@@ -433,7 +433,7 @@ - int hide = needs_hiding(filename); - FILE *file; - wchar_t wfilename[MAX_PATH], wotype[4]; -- if (filename && !strcmp(filename, "/dev/null")) -+ if (filename && !strcmp(filename, "null:")) - filename = "nul"; - if (xutftowcs_path(wfilename, filename) < 0 || - xutftowcs(wotype, otype, ARRAY_SIZE(wotype)) < 0) -diff -ru git-2.13.1/compat/poll/poll.c git-2.13.1-new/compat/poll/poll.c ---- git-2.13.1/compat/poll/poll.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/compat/poll/poll.c 2017-06-25 15:19:22.670753207 -0700 +--- source/compat/poll/poll.c 2017-06-04 18:08:11.000000000 -0700 ++++ source-new/compat/poll/poll.c 2017-08-15 13:10:13.820931962 -0700 @@ -302,7 +302,7 @@ happened |= (POLLIN | POLLRDNORM) & sought; @@ -201,9 +65,8 @@ diff -ru git-2.13.1/compat/poll/poll.c git-2.13.1-new/compat/poll/poll.c || socket_errno == ECONNABORTED || socket_errno == ENETRESET) happened |= POLLHUP; -diff -ru git-2.13.1/compat/terminal.c git-2.13.1-new/compat/terminal.c ---- git-2.13.1/compat/terminal.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/compat/terminal.c 2017-06-25 15:19:22.704086744 -0700 +--- source/compat/terminal.c 2017-06-04 18:08:11.000000000 -0700 ++++ source-new/compat/terminal.c 2017-08-15 13:10:13.857599207 -0700 @@ -3,7 +3,9 @@ #include "sigchain.h" #include "strbuf.h" @@ -227,9 +90,8 @@ diff -ru git-2.13.1/compat/terminal.c git-2.13.1-new/compat/terminal.c } #endif -diff -ru git-2.13.1/config.c git-2.13.1-new/config.c ---- git-2.13.1/config.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/config.c 2017-07-05 12:22:24.064535733 -0700 +--- source/config.c 2017-06-04 18:08:11.000000000 -0700 ++++ source-new/config.c 2017-08-15 13:10:15.497625059 -0700 @@ -1094,7 +1094,7 @@ } @@ -239,9 +101,8 @@ diff -ru git-2.13.1/config.c git-2.13.1-new/config.c packed_git_window_size = git_config_ulong(var, value); /* This value must be multiple of (pagesize * 2) */ -diff -ru git-2.13.1/connect.c git-2.13.1-new/connect.c ---- git-2.13.1/connect.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/connect.c 2017-06-25 16:49:55.499598388 -0700 +--- source/connect.c 2017-06-04 18:08:11.000000000 -0700 ++++ source-new/connect.c 2017-08-15 13:10:15.500958445 -0700 @@ -450,14 +450,11 @@ he = gethostbyname(host); @@ -268,9 +129,8 @@ diff -ru git-2.13.1/connect.c git-2.13.1-new/connect.c } -diff -ru git-2.13.1/credential-cache--daemon.c git-2.13.1-new/credential-cache--daemon.c ---- git-2.13.1/credential-cache--daemon.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/credential-cache--daemon.c 2017-06-25 15:19:23.024088698 -0700 +--- source/credential-cache--daemon.c 2017-06-04 18:08:11.000000000 -0700 ++++ source-new/credential-cache--daemon.c 2017-08-15 13:10:15.500958445 -0700 @@ -156,6 +156,7 @@ strbuf_release(&action); } @@ -279,17 +139,6 @@ diff -ru git-2.13.1/credential-cache--daemon.c git-2.13.1-new/credential-cache-- static int serve_cache_loop(int fd) { struct pollfd pfd; -@@ -209,8 +210,8 @@ - printf("ok\n"); - fclose(stdout); - if (!debug) { -- if (!freopen("/dev/null", "w", stderr)) -- die_errno("unable to point stderr to /dev/null"); -+ if (!freopen("null:", "w", stderr)) -+ die_errno("unable to point stderr to null:"); - } - - while (serve_cache_loop(fd)) @@ -256,6 +257,7 @@ free(path_copy); @@ -316,24 +165,8 @@ diff -ru git-2.13.1/credential-cache--daemon.c git-2.13.1-new/credential-cache-- return 0; } -diff -ru git-2.13.1/csum-file.c git-2.13.1-new/csum-file.c ---- git-2.13.1/csum-file.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/csum-file.c 2017-06-25 15:19:22.777420525 -0700 -@@ -128,9 +128,9 @@ - int sink, check; - struct sha1file *f; - -- sink = open("/dev/null", O_WRONLY); -+ sink = open("null:", O_WRONLY); - if (sink < 0) -- die_errno("unable to open /dev/null"); -+ die_errno("unable to open null:"); - check = open(name, O_RDONLY); - if (check < 0) - die_errno("unable to open '%s'", name); -diff -ru git-2.13.1/daemon.c git-2.13.1-new/daemon.c ---- git-2.13.1/daemon.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/daemon.c 2017-06-25 15:19:23.017421990 -0700 +--- source/daemon.c 2017-06-04 18:08:11.000000000 -0700 ++++ source-new/daemon.c 2017-08-15 13:10:15.504291831 -0700 @@ -71,6 +71,7 @@ return hi->ip_address.buf; } @@ -464,122 +297,8 @@ diff -ru git-2.13.1/daemon.c git-2.13.1-new/daemon.c set_die_routine(daemon_die); } else /* avoid splitting a message in the middle */ -@@ -1377,8 +1381,8 @@ - base_path); - - if (inetd_mode) { -- if (!freopen("/dev/null", "w", stderr)) -- die_errno("failed to redirect stderr to /dev/null"); -+ if (!freopen("null:", "w", stderr)) -+ die_errno("failed to redirect stderr to null:"); - } - - if (inetd_mode || serve_mode) -diff -ru git-2.13.1/diff.c git-2.13.1-new/diff.c ---- git-2.13.1/diff.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/diff.c 2017-06-25 15:19:22.794087293 -0700 -@@ -389,7 +389,7 @@ - /* - * Keep track of files used for diffing. Sometimes such an entry - * refers to a temporary file, sometimes to an existing file, and -- * sometimes to "/dev/null". -+ * sometimes to "null:". - */ - static struct diff_tempfile { - /* -@@ -2401,11 +2401,11 @@ - - a_one = quote_two(a_prefix, name_a + (*name_a == '/')); - b_two = quote_two(b_prefix, name_b + (*name_b == '/')); -- lbl[0] = DIFF_FILE_VALID(one) ? a_one : "/dev/null"; -- lbl[1] = DIFF_FILE_VALID(two) ? b_two : "/dev/null"; -+ lbl[0] = DIFF_FILE_VALID(one) ? a_one : "null:"; -+ lbl[1] = DIFF_FILE_VALID(two) ? b_two : "null:"; - strbuf_addf(&header, "%s%sdiff --git %s %s%s\n", line_prefix, meta, a_one, b_two, reset); - if (lbl[0][0] == '/') { -- /* /dev/null */ -+ /* null: */ - strbuf_addf(&header, "%s%snew file mode %06o%s\n", line_prefix, meta, two->mode, reset); - if (xfrm_msg) - strbuf_addstr(&header, xfrm_msg); -@@ -3000,7 +3000,7 @@ - /* A '-' entry produces this for file-2, and - * a '+' entry produces this for file-1. - */ -- temp->name = "/dev/null"; -+ temp->name = "null:"; - xsnprintf(temp->hex, sizeof(temp->hex), "."); - xsnprintf(temp->mode, sizeof(temp->mode), "."); - return temp; -@@ -3260,7 +3260,7 @@ - - static void strip_prefix(int prefix_length, const char **namep, const char **otherp) - { -- /* Strip the prefix but do not molest /dev/null and absolute paths */ -+ /* Strip the prefix but do not molest null: and absolute paths */ - if (*namep && **namep != '/') { - *namep += prefix_length; - if (**namep == '/') -@@ -4630,7 +4630,7 @@ - if (p->one->mode == 0) { - patch_id_add_string(&ctx, "newfilemode"); - patch_id_add_mode(&ctx, p->two->mode); -- patch_id_add_string(&ctx, "---/dev/null"); -+ patch_id_add_string(&ctx, "---null:"); - patch_id_add_string(&ctx, "+++b/"); - git_SHA1_Update(&ctx, p->two->path, len2); - } else if (p->two->mode == 0) { -@@ -4638,7 +4638,7 @@ - patch_id_add_mode(&ctx, p->one->mode); - patch_id_add_string(&ctx, "---a/"); - git_SHA1_Update(&ctx, p->one->path, len1); -- patch_id_add_string(&ctx, "+++/dev/null"); -+ patch_id_add_string(&ctx, "+++null:"); - } else { - patch_id_add_string(&ctx, "---a/"); - git_SHA1_Update(&ctx, p->one->path, len1); -@@ -4802,14 +4802,14 @@ - DIFF_OPT_TST(options, DIFF_FROM_CONTENTS)) { - /* - * run diff_flush_patch for the exit status. setting -- * options->file to /dev/null should be safe, because we -+ * options->file to null: should be safe, because we - * aren't supposed to produce any output anyway. - */ - if (options->close_file) - fclose(options->file); -- options->file = fopen("/dev/null", "w"); -+ options->file = fopen("null:", "w"); - if (!options->file) -- die_errno("Could not open /dev/null"); -+ die_errno("Could not open null:"); - options->close_file = 1; - for (i = 0; i < q->nr; i++) { - struct diff_filepair *p = q->queue[i]; -diff -ru git-2.13.1/diff-no-index.c git-2.13.1-new/diff-no-index.c ---- git-2.13.1/diff-no-index.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/diff-no-index.c 2017-06-25 15:19:22.784087233 -0700 -@@ -44,7 +44,7 @@ - { - struct stat st; - -- if (!path || !strcmp(path, "/dev/null")) -+ if (!path || !strcmp(path, "null:")) - *mode = 0; - #ifdef GIT_WINDOWS_NATIVE - else if (!strcasecmp(path, "nul")) -@@ -80,7 +80,7 @@ - struct diff_filespec *s; - - if (!name) -- name = "/dev/null"; -+ name = "null:"; - s = alloc_filespec(name); - fill_filespec(s, null_sha1, 0, mode); - if (name == file_from_standard_input) -diff -ru git-2.13.1/dir.c git-2.13.1-new/dir.c ---- git-2.13.1/dir.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/dir.c 2017-06-25 15:19:22.970755039 -0700 +--- source/dir.c 2017-06-04 18:08:11.000000000 -0700 ++++ source-new/dir.c 2017-08-15 13:10:15.520958760 -0700 @@ -1891,14 +1891,14 @@ static const char *get_ident_string(void) { @@ -599,9 +318,8 @@ diff -ru git-2.13.1/dir.c git-2.13.1-new/dir.c return sb.buf; } -diff -ru git-2.13.1/fast-import.c git-2.13.1-new/fast-import.c ---- git-2.13.1/fast-import.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/fast-import.c 2017-06-25 15:19:23.007421930 -0700 +--- source/fast-import.c 2017-06-04 18:08:11.000000000 -0700 ++++ source-new/fast-import.c 2017-08-15 13:10:15.527625532 -0700 @@ -531,6 +531,7 @@ static void set_checkpoint_signal(void) @@ -618,9 +336,8 @@ diff -ru git-2.13.1/fast-import.c git-2.13.1-new/fast-import.c } #endif -diff -ru git-2.13.1/git-compat-util.h git-2.13.1-new/git-compat-util.h ---- git-2.13.1/git-compat-util.h 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/git-compat-util.h 2017-07-24 18:52:23.567535558 -0700 +--- source/git-compat-util.h 2017-06-04 18:08:11.000000000 -0700 ++++ source-new/git-compat-util.h 2017-08-15 13:10:15.530958918 -0700 @@ -179,7 +179,6 @@ #include #include @@ -670,9 +387,8 @@ diff -ru git-2.13.1/git-compat-util.h git-2.13.1-new/git-compat-util.h +#define shutdown(...) 0 + #endif -diff -ru git-2.13.1/ident.c git-2.13.1-new/ident.c ---- git-2.13.1/ident.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/ident.c 2017-06-25 15:19:22.997421868 -0700 +--- source/ident.c 2017-06-04 18:08:11.000000000 -0700 ++++ source-new/ident.c 2017-08-15 13:10:15.534292303 -0700 @@ -33,8 +33,7 @@ struct passwd *pw; @@ -683,21 +399,8 @@ diff -ru git-2.13.1/ident.c git-2.13.1-new/ident.c static struct passwd fallback; fallback.pw_name = "unknown"; #ifndef NO_GECOS_IN_PWENT -diff -ru git-2.13.1/line-log.c git-2.13.1-new/line-log.c ---- git-2.13.1/line-log.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/line-log.c 2017-06-25 15:19:22.830754184 -0700 -@@ -900,7 +900,7 @@ - fprintf(opt->file, "%s%sdiff --git a/%s b/%s%s\n", prefix, c_meta, pair->one->path, pair->two->path, c_reset); - fprintf(opt->file, "%s%s--- %s%s%s\n", prefix, c_meta, - pair->one->oid_valid ? "a/" : "", -- pair->one->oid_valid ? pair->one->path : "/dev/null", -+ pair->one->oid_valid ? pair->one->path : "null:", - c_reset); - fprintf(opt->file, "%s%s+++ b/%s%s\n", prefix, c_meta, pair->two->path, c_reset); - for (i = 0; i < range->ranges.nr; i++) { -diff -ru git-2.13.1/Makefile git-2.13.1-new/Makefile ---- git-2.13.1/Makefile 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/Makefile 2017-07-07 19:49:39.730605650 -0700 +--- source/Makefile 2017-06-04 18:08:11.000000000 -0700 ++++ source-new/Makefile 2017-08-15 13:10:15.540959076 -0700 @@ -1802,7 +1802,6 @@ $(BUILT_INS): git$X @@ -737,9 +440,8 @@ diff -ru git-2.13.1/Makefile git-2.13.1-new/Makefile ln -s "git-remote-http$X" "$$execdir/$$p" 2>/dev/null || \ cp "$$execdir/git-remote-http$X" "$$execdir/$$p" || exit; \ done && \ -diff -ru git-2.13.1/path.c git-2.13.1-new/path.c ---- git-2.13.1/path.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/path.c 2017-07-05 12:23:08.831145653 -0700 +--- source/path.c 2017-06-04 18:08:11.000000000 -0700 ++++ source-new/path.c 2017-08-15 13:10:15.544292461 -0700 @@ -604,6 +604,7 @@ return -1; } @@ -756,7 +458,7 @@ diff -ru git-2.13.1/path.c git-2.13.1-new/path.c /* * Return a string with ~ and ~user expanded via getpw*. If buf != NULL, -@@ -643,10 +645,7 @@ +@@ -643,12 +645,9 @@ convert_slashes(user_path.buf); #endif } else { @@ -767,9 +469,11 @@ diff -ru git-2.13.1/path.c git-2.13.1-new/path.c } to_copy = first_slash; } -diff -ru git-2.13.1/progress.c git-2.13.1-new/progress.c ---- git-2.13.1/progress.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/progress.c 2017-06-25 15:19:22.957421624 -0700 + strbuf_addstr(&user_path, to_copy); + return strbuf_detach(&user_path, NULL); +diff -ru source/progress.c source-new/progress.c +--- source/progress.c 2017-06-04 18:08:11.000000000 -0700 ++++ source-new/progress.c 2017-08-15 13:10:15.544292461 -0700 @@ -52,11 +52,13 @@ progress_update = 0; @@ -794,9 +498,8 @@ diff -ru git-2.13.1/progress.c git-2.13.1-new/progress.c } static int display(struct progress *progress, unsigned n, const char *done) -diff -ru git-2.13.1/rerere.c git-2.13.1-new/rerere.c ---- git-2.13.1/rerere.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/rerere.c 2017-06-25 15:19:22.960754978 -0700 +--- source/rerere.c 2017-06-04 18:08:11.000000000 -0700 ++++ source-new/rerere.c 2017-08-15 13:10:15.547625847 -0700 @@ -682,7 +682,7 @@ * A successful replay of recorded resolution. * Mark that "postimage" was used to help gc. @@ -806,21 +509,8 @@ diff -ru git-2.13.1/rerere.c git-2.13.1-new/rerere.c warning_errno("failed utime() on %s", rerere_path(id, "postimage")); -diff -ru git-2.13.1/run-command.c git-2.13.1-new/run-command.c ---- git-2.13.1/run-command.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/run-command.c 2017-07-24 18:38:38.359269687 -0700 -@@ -120,9 +120,9 @@ - #ifndef GIT_WINDOWS_NATIVE - static inline void dup_devnull(int to) - { -- int fd = open("/dev/null", O_RDWR); -+ int fd = open("null:", O_RDWR); - if (fd < 0) -- die_errno(_("open /dev/null failed")); -+ die_errno(_("open null: failed")); - if (dup2(fd, to) < 0) - die_errno(_("dup2(%d,%d) failed"), fd, to); - close(fd); +--- source/run-command.c 2017-06-04 18:08:11.000000000 -0700 ++++ source-new/run-command.c 2017-08-15 13:10:15.550959233 -0700 @@ -138,7 +138,7 @@ return NULL; @@ -830,34 +520,8 @@ diff -ru git-2.13.1/run-command.c git-2.13.1-new/run-command.c strbuf_reset(&buf); -@@ -483,21 +483,21 @@ - struct argv_array nargv = ARGV_ARRAY_INIT; - - if (cmd->no_stdin) -- fhin = open("/dev/null", O_RDWR); -+ fhin = open("null:", O_RDWR); - else if (need_in) - fhin = dup(fdin[0]); - else if (cmd->in) - fhin = dup(cmd->in); - - if (cmd->no_stderr) -- fherr = open("/dev/null", O_RDWR); -+ fherr = open("null:", O_RDWR); - else if (need_err) - fherr = dup(fderr[1]); - else if (cmd->err > 2) - fherr = dup(cmd->err); - - if (cmd->no_stdout) -- fhout = open("/dev/null", O_RDWR); -+ fhout = open("null:", O_RDWR); - else if (cmd->stdout_to_stderr) - fhout = dup(fherr); - else if (need_out) -diff -ru git-2.13.1/send-pack.c git-2.13.1-new/send-pack.c ---- git-2.13.1/send-pack.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/send-pack.c 2017-06-25 15:19:22.960754978 -0700 +--- source/send-pack.c 2017-06-04 18:08:11.000000000 -0700 ++++ source-new/send-pack.c 2017-08-15 13:10:15.550959233 -0700 @@ -570,7 +570,7 @@ if (args->stateless_rpc) close(out); @@ -867,27 +531,9 @@ diff -ru git-2.13.1/send-pack.c git-2.13.1-new/send-pack.c /* * Do not even bother with the return value; we know we -diff -ru git-2.13.1/setup.c git-2.13.1-new/setup.c ---- git-2.13.1/setup.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/setup.c 2017-06-25 15:19:22.904087966 -0700 -@@ -1143,21 +1143,21 @@ - return read_gitfile_gently(suspect, return_error_code); - } - --/* if any standard file descriptor is missing open it to /dev/null */ -+/* if any standard file descriptor is missing open it to null: */ - void sanitize_stdfds(void) - { -- int fd = open("/dev/null", O_RDWR, 0); -+ int fd = open("null:", O_RDWR, 0); - while (fd != -1 && fd < 2) - fd = dup(fd); - if (fd == -1) -- die_errno("open /dev/null or dup failed"); -+ die_errno("open null: or dup failed"); - if (fd > 2) - close(fd); - } +--- source/setup.c 2017-06-04 18:08:11.000000000 -0700 ++++ source-new/setup.c 2017-08-15 13:10:15.554292619 -0700 +@@ -1157,7 +1157,7 @@ int daemonize(void) { @@ -896,9 +542,8 @@ diff -ru git-2.13.1/setup.c git-2.13.1-new/setup.c errno = ENOSYS; return -1; #else -diff -ru git-2.13.1/sha1_file.c git-2.13.1-new/sha1_file.c ---- git-2.13.1/sha1_file.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/sha1_file.c 2017-06-25 15:19:23.014088636 -0700 +--- source/sha1_file.c 2017-06-04 18:08:11.000000000 -0700 ++++ source-new/sha1_file.c 2017-08-15 13:10:15.564292776 -0700 @@ -723,7 +723,7 @@ "pack_report: getpagesize() = %10" SZ_FMT "\n" "pack_report: core.packedGitWindowSize = %10" SZ_FMT "\n" @@ -908,9 +553,8 @@ diff -ru git-2.13.1/sha1_file.c git-2.13.1-new/sha1_file.c sz_fmt(packed_git_window_size), sz_fmt(packed_git_limit)); fprintf(stderr, -diff -ru git-2.13.1/strbuf.c git-2.13.1-new/strbuf.c ---- git-2.13.1/strbuf.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/strbuf.c 2017-07-05 12:24:29.957791169 -0700 +--- source/strbuf.c 2017-06-04 18:08:11.000000000 -0700 ++++ source-new/strbuf.c 2017-08-15 13:10:15.564292776 -0700 @@ -446,6 +446,11 @@ for (;; guessed_len *= 2) { strbuf_grow(sb, guessed_len); @@ -923,9 +567,8 @@ diff -ru git-2.13.1/strbuf.c git-2.13.1-new/strbuf.c strbuf_setlen(sb, strlen(sb->buf)); return 0; } -diff -ru git-2.13.1/wrapper.c git-2.13.1-new/wrapper.c ---- git-2.13.1/wrapper.c 2017-06-04 18:08:11.000000000 -0700 -+++ git-2.13.1-new/wrapper.c 2017-06-25 15:19:23.014088636 -0700 +--- source/wrapper.c 2017-06-04 18:08:11.000000000 -0700 ++++ source-new/wrapper.c 2017-08-15 13:10:15.567626162 -0700 @@ -227,6 +227,7 @@ } } From 064869a1f19da32e88cc110faafbc8ace316e3c6 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Tue, 15 Aug 2017 13:38:11 -0700 Subject: [PATCH 0235/3180] git: Simplify patch a bit; some functions have been added --- recipes/git/git.patch | 136 ++++++++++++++++-------------------------- 1 file changed, 52 insertions(+), 84 deletions(-) diff --git a/recipes/git/git.patch b/recipes/git/git.patch index 1ff921ce..53892c99 100644 --- a/recipes/git/git.patch +++ b/recipes/git/git.patch @@ -1,6 +1,6 @@ diff -ru source/builtin/log.c source-new/builtin/log.c --- source/builtin/log.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/builtin/log.c 2017-08-15 13:10:13.777597945 -0700 ++++ source-new/builtin/log.c 2017-08-15 13:29:42.346302539 -0700 @@ -308,6 +308,7 @@ static void setup_early_output(struct rev_info *rev) @@ -17,8 +17,9 @@ diff -ru source/builtin/log.c source-new/builtin/log.c } static void finish_early_output(struct rev_info *rev) +diff -ru source/common-main.c source-new/common-main.c --- source/common-main.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/common-main.c 2017-08-15 13:10:15.490958287 -0700 ++++ source-new/common-main.c 2017-08-15 13:29:42.346302539 -0700 @@ -15,12 +15,14 @@ */ static void restore_sigpipe_to_default(void) @@ -34,8 +35,9 @@ diff -ru source/builtin/log.c source-new/builtin/log.c } int main(int argc, const char **argv) +diff -ru source/compat/hstrerror.c source-new/compat/hstrerror.c --- source/compat/hstrerror.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/compat/hstrerror.c 2017-08-15 13:10:13.854265821 -0700 ++++ source-new/compat/hstrerror.c 2017-08-15 13:29:42.346302539 -0700 @@ -5,17 +5,6 @@ const char *githstrerror(int err) { @@ -54,8 +56,9 @@ diff -ru source/builtin/log.c source-new/builtin/log.c snprintf(buffer, sizeof(buffer), "Name resolution error %d", err); return buffer; } +diff -ru source/compat/poll/poll.c source-new/compat/poll/poll.c --- source/compat/poll/poll.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/compat/poll/poll.c 2017-08-15 13:10:13.820931962 -0700 ++++ source-new/compat/poll/poll.c 2017-08-15 13:29:42.346302539 -0700 @@ -302,7 +302,7 @@ happened |= (POLLIN | POLLRDNORM) & sought; @@ -65,8 +68,9 @@ diff -ru source/builtin/log.c source-new/builtin/log.c || socket_errno == ECONNABORTED || socket_errno == ENETRESET) happened |= POLLHUP; +diff -ru source/compat/terminal.c source-new/compat/terminal.c --- source/compat/terminal.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/compat/terminal.c 2017-08-15 13:10:13.857599207 -0700 ++++ source-new/compat/terminal.c 2017-08-15 13:29:42.349635894 -0700 @@ -3,7 +3,9 @@ #include "sigchain.h" #include "strbuf.h" @@ -90,8 +94,9 @@ diff -ru source/builtin/log.c source-new/builtin/log.c } #endif +diff -ru source/config.c source-new/config.c --- source/config.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/config.c 2017-08-15 13:10:15.497625059 -0700 ++++ source-new/config.c 2017-08-15 13:29:42.349635894 -0700 @@ -1094,7 +1094,7 @@ } @@ -101,8 +106,9 @@ diff -ru source/builtin/log.c source-new/builtin/log.c packed_git_window_size = git_config_ulong(var, value); /* This value must be multiple of (pagesize * 2) */ +diff -ru source/connect.c source-new/connect.c --- source/connect.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/connect.c 2017-08-15 13:10:15.500958445 -0700 ++++ source-new/connect.c 2017-08-15 13:29:42.349635894 -0700 @@ -450,14 +450,11 @@ he = gethostbyname(host); @@ -129,8 +135,9 @@ diff -ru source/builtin/log.c source-new/builtin/log.c } +diff -ru source/credential-cache--daemon.c source-new/credential-cache--daemon.c --- source/credential-cache--daemon.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/credential-cache--daemon.c 2017-08-15 13:10:15.500958445 -0700 ++++ source-new/credential-cache--daemon.c 2017-08-15 13:29:42.349635894 -0700 @@ -156,6 +156,7 @@ strbuf_release(&action); } @@ -165,8 +172,9 @@ diff -ru source/builtin/log.c source-new/builtin/log.c return 0; } +diff -ru source/daemon.c source-new/daemon.c --- source/daemon.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/daemon.c 2017-08-15 13:10:15.504291831 -0700 ++++ source-new/daemon.c 2017-08-15 13:30:19.439876374 -0700 @@ -71,6 +71,7 @@ return hi->ip_address.buf; } @@ -279,16 +287,19 @@ diff -ru source/builtin/log.c source-new/builtin/log.c die("cannot drop privileges"); } -@@ -1167,7 +1171,7 @@ - { - static struct credentials c; +@@ -1174,11 +1178,7 @@ + if (!group_name) + c.gid = c.pass->pw_gid; + else { +- struct group *group = getgrnam(group_name); +- if (!group) + die("group not found - %s", group_name); +- +- c.gid = group->gr_gid; + } -- c.pass = getpwnam(user_name); -+ c.pass = 0; - if (!c.pass) - die("user not found - %s", user_name); - -@@ -1349,7 +1353,7 @@ + return &c; +@@ -1349,7 +1349,7 @@ } if (log_syslog) { @@ -297,8 +308,9 @@ diff -ru source/builtin/log.c source-new/builtin/log.c set_die_routine(daemon_die); } else /* avoid splitting a message in the middle */ +diff -ru source/dir.c source-new/dir.c --- source/dir.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/dir.c 2017-08-15 13:10:15.520958760 -0700 ++++ source-new/dir.c 2017-08-15 13:29:42.352969248 -0700 @@ -1891,14 +1891,14 @@ static const char *get_ident_string(void) { @@ -318,8 +330,9 @@ diff -ru source/builtin/log.c source-new/builtin/log.c return sb.buf; } +diff -ru source/fast-import.c source-new/fast-import.c --- source/fast-import.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/fast-import.c 2017-08-15 13:10:15.527625532 -0700 ++++ source-new/fast-import.c 2017-08-15 13:29:42.352969248 -0700 @@ -531,6 +531,7 @@ static void set_checkpoint_signal(void) @@ -336,8 +349,9 @@ diff -ru source/builtin/log.c source-new/builtin/log.c } #endif +diff -ru source/git-compat-util.h source-new/git-compat-util.h --- source/git-compat-util.h 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/git-compat-util.h 2017-08-15 13:10:15.530958918 -0700 ++++ source-new/git-compat-util.h 2017-08-15 13:29:42.356302602 -0700 @@ -179,7 +179,6 @@ #include #include @@ -387,20 +401,9 @@ diff -ru source/builtin/log.c source-new/builtin/log.c +#define shutdown(...) 0 + #endif ---- source/ident.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/ident.c 2017-08-15 13:10:15.534292303 -0700 -@@ -33,8 +33,7 @@ - struct passwd *pw; - - errno = 0; -- pw = getpwuid(getuid()); -- if (!pw) { -+ if (1) { - static struct passwd fallback; - fallback.pw_name = "unknown"; - #ifndef NO_GECOS_IN_PWENT +diff -ru source/Makefile source-new/Makefile --- source/Makefile 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/Makefile 2017-08-15 13:10:15.540959076 -0700 ++++ source-new/Makefile 2017-08-15 13:29:42.356302602 -0700 @@ -1802,7 +1802,6 @@ $(BUILT_INS): git$X @@ -440,40 +443,9 @@ diff -ru source/builtin/log.c source-new/builtin/log.c ln -s "git-remote-http$X" "$$execdir/$$p" 2>/dev/null || \ cp "$$execdir/git-remote-http$X" "$$execdir/$$p" || exit; \ done && \ ---- source/path.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/path.c 2017-08-15 13:10:15.544292461 -0700 -@@ -604,6 +604,7 @@ - return -1; - } - -+/* - static struct passwd *getpw_str(const char *username, size_t len) - { - struct passwd *pw; -@@ -612,6 +613,7 @@ - free(username_z); - return pw; - } -+*/ - - /* - * Return a string with ~ and ~user expanded via getpw*. If buf != NULL, -@@ -643,12 +645,9 @@ - convert_slashes(user_path.buf); - #endif - } else { -- struct passwd *pw = getpw_str(username, username_len); -- if (!pw) - goto return_null; -- strbuf_addstr(&user_path, pw->pw_dir); - } - to_copy = first_slash; - } - strbuf_addstr(&user_path, to_copy); - return strbuf_detach(&user_path, NULL); diff -ru source/progress.c source-new/progress.c --- source/progress.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/progress.c 2017-08-15 13:10:15.544292461 -0700 ++++ source-new/progress.c 2017-08-15 13:29:42.356302602 -0700 @@ -52,11 +52,13 @@ progress_update = 0; @@ -498,8 +470,9 @@ diff -ru source/progress.c source-new/progress.c } static int display(struct progress *progress, unsigned n, const char *done) +diff -ru source/rerere.c source-new/rerere.c --- source/rerere.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/rerere.c 2017-08-15 13:10:15.547625847 -0700 ++++ source-new/rerere.c 2017-08-15 13:29:42.356302602 -0700 @@ -682,7 +682,7 @@ * A successful replay of recorded resolution. * Mark that "postimage" was used to help gc. @@ -509,8 +482,9 @@ diff -ru source/progress.c source-new/progress.c warning_errno("failed utime() on %s", rerere_path(id, "postimage")); +diff -ru source/run-command.c source-new/run-command.c --- source/run-command.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/run-command.c 2017-08-15 13:10:15.550959233 -0700 ++++ source-new/run-command.c 2017-08-15 13:29:42.359635956 -0700 @@ -138,7 +138,7 @@ return NULL; @@ -520,8 +494,9 @@ diff -ru source/progress.c source-new/progress.c strbuf_reset(&buf); +diff -ru source/send-pack.c source-new/send-pack.c --- source/send-pack.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/send-pack.c 2017-08-15 13:10:15.550959233 -0700 ++++ source-new/send-pack.c 2017-08-15 13:29:42.359635956 -0700 @@ -570,7 +570,7 @@ if (args->stateless_rpc) close(out); @@ -531,8 +506,9 @@ diff -ru source/progress.c source-new/progress.c /* * Do not even bother with the return value; we know we +diff -ru source/setup.c source-new/setup.c --- source/setup.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/setup.c 2017-08-15 13:10:15.554292619 -0700 ++++ source-new/setup.c 2017-08-15 13:29:42.359635956 -0700 @@ -1157,7 +1157,7 @@ int daemonize(void) @@ -542,8 +518,9 @@ diff -ru source/progress.c source-new/progress.c errno = ENOSYS; return -1; #else +diff -ru source/sha1_file.c source-new/sha1_file.c --- source/sha1_file.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/sha1_file.c 2017-08-15 13:10:15.564292776 -0700 ++++ source-new/sha1_file.c 2017-08-15 13:29:42.359635956 -0700 @@ -723,7 +723,7 @@ "pack_report: getpagesize() = %10" SZ_FMT "\n" "pack_report: core.packedGitWindowSize = %10" SZ_FMT "\n" @@ -553,8 +530,9 @@ diff -ru source/progress.c source-new/progress.c sz_fmt(packed_git_window_size), sz_fmt(packed_git_limit)); fprintf(stderr, +diff -ru source/strbuf.c source-new/strbuf.c --- source/strbuf.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/strbuf.c 2017-08-15 13:10:15.564292776 -0700 ++++ source-new/strbuf.c 2017-08-15 13:29:42.359635956 -0700 @@ -446,6 +446,11 @@ for (;; guessed_len *= 2) { strbuf_grow(sb, guessed_len); @@ -567,8 +545,9 @@ diff -ru source/progress.c source-new/progress.c strbuf_setlen(sb, strlen(sb->buf)); return 0; } +diff -ru source/wrapper.c source-new/wrapper.c --- source/wrapper.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/wrapper.c 2017-08-15 13:10:15.567626162 -0700 ++++ source-new/wrapper.c 2017-08-15 13:29:42.359635956 -0700 @@ -227,6 +227,7 @@ } } @@ -612,14 +591,3 @@ diff -ru source/progress.c source-new/progress.c } int xgethostname(char *buf, size_t len) -@@ -663,8 +661,6 @@ - * specify whether the buffer will be null-terminated, so to - * be safe, do it ourselves. - */ -- int ret = gethostname(buf, len); -- if (!ret) -- buf[len - 1] = 0; -- return ret; -+ strcpy(buf, "redox"); -+ return 0; - } From f18c0f69bc5831e00212a0c7a03b8d6b6c47bfe8 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 17 Aug 2017 09:07:12 -0700 Subject: [PATCH 0236/3180] Add --debug argument to cook.sh to build in debug mode, unstripped --- cook.sh | 48 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/cook.sh b/cook.sh index 8e06e71b..752bd0bc 100755 --- a/cook.sh +++ b/cook.sh @@ -169,10 +169,17 @@ function op { then recipe_build fi + + release_flag="--release" + if [ "$cargo_build_debug_mode" == 1 ] + then + release_flag= + fi + if [ "$skip" -eq "0" ] then cp -r "$ROOT/Xargo.toml" . - xargo build --target "$TARGET" --release $CARGOFLAGS + xargo build --target "$TARGET" $release_flag $CARGOFLAGS fi popd > /dev/null ;; @@ -183,10 +190,17 @@ function op { then recipe_test fi + + release_flag="--release" + if [ "$cargo_build_debug_mode" == 1 ] + then + release_flag= + fi + if [ "$skip" -eq "0" ] then cp -r "$ROOT/Xargo.toml" . - xargo test --no-run --target "$TARGET" --release $CARGOFLAGS + xargo test --no-run --target "$TARGET" $release_flag $CARGOFLAGS fi popd > /dev/null ;; @@ -215,13 +229,24 @@ function op { if [ "$skip" -eq "0" ] then #TODO xargo install --root "../stage" $CARGOFLAGS - bins="$(find target/$TARGET/release/ -maxdepth 1 -type f ! -name '*.*')" + if [ "$cargo_build_debug_mode" == 1 ] + then + build=debug + else + build=release + fi + bins="$(find target/$TARGET/$build/ -maxdepth 1 -type f ! -name '*.*')" if [ -n "$bins" ] then mkdir -p "../stage/$BINDIR" for bin in $bins do - strip -v "$bin" -o "../stage/$BINDIR/$(basename $bin)" + if [ "$cargo_build_debug_mode" == 1 ] + then + cp -v "$bin" "../stage/$BINDIR/$(basename $bin)" + else + strip -v "$bin" -o "../stage/$BINDIR/$(basename $bin)" + fi done fi fi @@ -262,9 +287,22 @@ then then cd "$ROOT/recipes/$1" source recipe.sh + + ops=() + cargo_build_debug_mode= for arg in "${@:2}" do - op "$1" "$arg" + if [ "$arg" == "--debug" ] + then + cargo_build_debug_mode=1 + else + ops[${#ops[@]}]="$arg" + fi + done + + for i in "${ops[@]}" + do + op "$1" "$i" done else echo "cook.sh: recipe '$1' not found" >&2 From 810be8f815a99d11d92b62b582185fbaa7bdb729 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 17 Aug 2017 11:19:31 -0700 Subject: [PATCH 0237/3180] Use release tarball for curl, with a couple patches --- recipes/curl/01-no-nonblock.patch | 12 ++++++++ recipes/curl/02-threaded-resolver-fix.patch | 31 +++++++++++++++++++++ recipes/curl/recipe.sh | 6 ++-- 3 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 recipes/curl/01-no-nonblock.patch create mode 100644 recipes/curl/02-threaded-resolver-fix.patch diff --git a/recipes/curl/01-no-nonblock.patch b/recipes/curl/01-no-nonblock.patch new file mode 100644 index 00000000..a2b4dd4a --- /dev/null +++ b/recipes/curl/01-no-nonblock.patch @@ -0,0 +1,12 @@ +diff -ru source/lib/nonblock.c source-new/lib/nonblock.c +--- source/lib/nonblock.c 2017-08-07 15:42:29.000000000 -0700 ++++ source-new/lib/nonblock.c 2017-08-17 10:57:30.123497389 -0700 +@@ -47,7 +47,7 @@ + int curlx_nonblock(curl_socket_t sockfd, /* operate on this */ + int nonblock /* TRUE or FALSE */) + { +-#if defined(USE_BLOCKING_SOCKETS) ++#if 1 + + return 0; /* returns success */ + diff --git a/recipes/curl/02-threaded-resolver-fix.patch b/recipes/curl/02-threaded-resolver-fix.patch new file mode 100644 index 00000000..d885ca4e --- /dev/null +++ b/recipes/curl/02-threaded-resolver-fix.patch @@ -0,0 +1,31 @@ +commit 3cb4bb6b5fb8a936cb69e2e9ea6a4e692122abb9 +Author: Jakub Zakrzewski +Date: Tue Aug 15 13:21:33 2017 -0400 + + curl-confopts.m4: fix --disable-threaded-resolver + + Closes https://github.com/curl/curl/issues/1784 + +diff --git a/m4/curl-confopts.m4 b/m4/curl-confopts.m4 +index d77a884d5..6dcd0f1a6 100644 +--- a/m4/curl-confopts.m4 ++++ b/m4/curl-confopts.m4 +@@ -37,14 +37,14 @@ AC_HELP_STRING([--enable-threaded-resolver],[Enable threaded resolver]) + AC_HELP_STRING([--disable-threaded-resolver],[Disable threaded resolver]), + OPT_THRES=$enableval) + case "$OPT_THRES" in +- *) +- dnl configure option not specified +- want_thres="yes" +- ;; + no) + dnl --disable-threaded-resolver option used + want_thres="no" + ;; ++ *) ++ dnl configure option not specified ++ want_thres="yes" ++ ;; + esac + AC_MSG_RESULT([$want_thres]) + ]) diff --git a/recipes/curl/recipe.sh b/recipes/curl/recipe.sh index cc11e1e6..9f90242f 100644 --- a/recipes/curl/recipe.sh +++ b/recipes/curl/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/ids1024/curl.git +TAR=https://curl.haxx.se/download/curl-7.55.1.tar.gz BRANCH=redox BUILD_DEPENDS=(openssl) @@ -13,7 +13,9 @@ function recipe_update { } function recipe_build { - ./configure --prefix=/ --host=${HOST} --disable-tftp --disable-ftp --disable-ntlm-wb --with-ssl="$PWD/../sysroot" --with-ca-path=/ssl/certs + wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + autoreconf + ./configure --prefix=/ --host=${HOST} --disable-tftp --disable-ftp --disable-ntlm-wb --disable-threaded-resolver --with-ssl="$PWD/../sysroot" --with-ca-path=/ssl/certs make skip=1 } From 846fb86f74eaffe25e09977798ac3b482fad57c9 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 17 Aug 2017 12:10:30 -0700 Subject: [PATCH 0238/3180] Bump python version --- recipes/python/python.patch | 12 ------------ recipes/python/recipe.sh | 2 +- 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/recipes/python/python.patch b/recipes/python/python.patch index b3cabd23..fc81d5fb 100644 --- a/recipes/python/python.patch +++ b/recipes/python/python.patch @@ -1,15 +1,3 @@ -diff -ru Python-3.6.1/config.sub Python-3.6.1-new/config.sub ---- Python-3.6.1/config.sub 2017-03-20 23:32:38.000000000 -0700 -+++ Python-3.6.1-new/config.sub 2017-07-03 11:56:03.528738808 -0700 -@@ -1358,7 +1358,7 @@ - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ -- | -sym* | -kopensolaris* | -plan9* \ -+ | -sym* | -kopensolaris* | -plan9* | -redox* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ diff -ru Python-3.6.1/configure Python-3.6.1-new/configure --- Python-3.6.1/configure 2017-03-20 23:32:38.000000000 -0700 +++ Python-3.6.1-new/configure 2017-07-03 15:26:44.804152125 -0700 diff --git a/recipes/python/recipe.sh b/recipes/python/recipe.sh index 2a8783cf..9b257bb2 100644 --- a/recipes/python/recipe.sh +++ b/recipes/python/recipe.sh @@ -1,4 +1,4 @@ -VERSION=3.6.1 +VERSION=3.6.2 TAR=https://www.python.org/ftp/python/$VERSION/Python-$VERSION.tar.xz export AR="${HOST}-ar" From 36b2a671c8cd051a167053a3a631ebe732ea8012 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 17 Aug 2017 15:32:18 -0600 Subject: [PATCH 0239/3180] Update recipe.sh --- recipes/curl/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/curl/recipe.sh b/recipes/curl/recipe.sh index 9f90242f..9d460ebc 100644 --- a/recipes/curl/recipe.sh +++ b/recipes/curl/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub - autoreconf + autoreconf -i ./configure --prefix=/ --host=${HOST} --disable-tftp --disable-ftp --disable-ntlm-wb --disable-threaded-resolver --with-ssl="$PWD/../sysroot" --with-ca-path=/ssl/certs make skip=1 From a539a7413ed9915ea5af9d2cc218a6606f9f1da3 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 17 Aug 2017 15:19:28 -0700 Subject: [PATCH 0240/3180] Recipe for perl --- recipes/perl/perl.patch | 183 ++++++++++++++++++++++++++++++++++++++++ recipes/perl/recipe.sh | 44 ++++++++++ 2 files changed, 227 insertions(+) create mode 100644 recipes/perl/perl.patch create mode 100644 recipes/perl/recipe.sh diff --git a/recipes/perl/perl.patch b/recipes/perl/perl.patch new file mode 100644 index 00000000..ab8a934d --- /dev/null +++ b/recipes/perl/perl.patch @@ -0,0 +1,183 @@ +diff -ru source/mg.c source-new/mg.c +--- source/mg.c 2017-06-30 14:03:22.000000000 -0700 ++++ source-new/mg.c 2017-08-17 14:40:37.669507085 -0700 +@@ -3034,16 +3034,16 @@ + #ifdef HAS_SETRESUID + PERL_UNUSED_RESULT(setresuid(new_uid, (Uid_t)-1, (Uid_t)-1)); + #else +- if (new_uid == PerlProc_geteuid()) { /* special case $< = $> */ ++// if (new_uid == PerlProc_geteuid()) { /* special case $< = $> */ + #ifdef PERL_DARWIN + /* workaround for Darwin's setuid peculiarity, cf [perl #24122] */ + if (new_uid != 0 && PerlProc_getuid() == 0) + PERL_UNUSED_RESULT(PerlProc_setuid(0)); + #endif +- PERL_UNUSED_RESULT(PerlProc_setuid(new_uid)); +- } else { ++// PERL_UNUSED_RESULT(PerlProc_setuid(new_uid)); ++// } else { + Perl_croak(aTHX_ "setruid() not implemented"); +- } ++// } + #endif + #endif + #endif +@@ -3067,11 +3067,11 @@ + #ifdef HAS_SETRESUID + PERL_UNUSED_RESULT(setresuid((Uid_t)-1, new_euid, (Uid_t)-1)); + #else +- if (new_euid == PerlProc_getuid()) /* special case $> = $< */ +- PERL_UNUSED_RESULT(PerlProc_setuid(new_euid)); +- else { ++// if (new_euid == PerlProc_getuid()) /* special case $> = $< */ ++// PERL_UNUSED_RESULT(PerlProc_setuid(new_euid)); ++// else { + Perl_croak(aTHX_ "seteuid() not implemented"); +- } ++// } + #endif + #endif + #endif +@@ -3095,11 +3095,11 @@ + #ifdef HAS_SETRESGID + PERL_UNUSED_RESULT(setresgid(new_gid, (Gid_t)-1, (Gid_t) -1)); + #else +- if (new_gid == PerlProc_getegid()) /* special case $( = $) */ +- PERL_UNUSED_RESULT(PerlProc_setgid(new_gid)); +- else { ++// if (new_gid == PerlProc_getegid()) /* special case $( = $) */ ++// PERL_UNUSED_RESULT(PerlProc_setgid(new_gid)); ++// else { + Perl_croak(aTHX_ "setrgid() not implemented"); +- } ++// } + #endif + #endif + #endif +@@ -3178,11 +3178,11 @@ + #ifdef HAS_SETRESGID + PERL_UNUSED_RESULT(setresgid((Gid_t)-1, new_egid, (Gid_t)-1)); + #else +- if (new_egid == PerlProc_getgid()) /* special case $) = $( */ +- PERL_UNUSED_RESULT(PerlProc_setgid(new_egid)); +- else { ++// if (new_egid == PerlProc_getgid()) /* special case $) = $( */ ++// PERL_UNUSED_RESULT(PerlProc_setgid(new_egid)); ++// else { + Perl_croak(aTHX_ "setegid() not implemented"); +- } ++// } + #endif + #endif + #endif +diff -ru source/perl.h source-new/perl.h +--- source/perl.h 2017-06-30 14:03:22.000000000 -0700 ++++ source-new/perl.h 2017-08-17 13:14:01.806883580 -0700 +@@ -1061,7 +1061,6 @@ + #ifndef PERL_MICRO + #ifndef memchr + # ifndef HAS_MEMCHR +-# define memchr(s,c,n) ninstr((char*)(s), ((char*)(s)) + n, &(c), &(c) + 1) + # endif + #endif + #endif +diff -ru source/pp_hot.c source-new/pp_hot.c +--- source/pp_hot.c 2017-06-30 14:03:22.000000000 -0700 ++++ source-new/pp_hot.c 2017-08-17 13:16:20.234635700 -0700 +@@ -1583,11 +1583,13 @@ + PL_delaymagic &= ~DM_EUID; + } + # endif /* HAS_SETEUID */ ++#if 0 + if (PL_delaymagic & DM_UID) { + if (PL_delaymagic_uid != PL_delaymagic_euid) + DIE(aTHX_ "No setreuid available"); + PERL_UNUSED_RESULT(PerlProc_setuid(PL_delaymagic_uid)); + } ++#endif + # endif /* HAS_SETREUID */ + #endif /* HAS_SETRESUID */ + +@@ -1619,11 +1621,13 @@ + PL_delaymagic &= ~DM_EGID; + } + # endif /* HAS_SETEGID */ ++#if 0 + if (PL_delaymagic & DM_GID) { + if (PL_delaymagic_gid != PL_delaymagic_egid) + DIE(aTHX_ "No setregid available"); + PERL_UNUSED_RESULT(PerlProc_setgid(PL_delaymagic_gid)); + } ++#endif + # endif /* HAS_SETREGID */ + #endif /* HAS_SETRESGID */ + +diff -ru source/pp_sys.c source-new/pp_sys.c +--- source/pp_sys.c 2017-06-30 14:03:22.000000000 -0700 ++++ source-new/pp_sys.c 2017-08-17 14:57:00.983541027 -0700 +@@ -2413,7 +2413,7 @@ + TAINT_PROPER(PL_op_desc[optype]); + + if (optype == OP_IOCTL) +-#ifdef HAS_IOCTL ++#if 0 + retval = PerlLIO_ioctl(PerlIO_fileno(IoIFP(io)), func, s); + #else + DIE(aTHX_ "ioctl is not implemented"); +@@ -2705,7 +2705,7 @@ + if (!IoIFP(io)) + goto nuts; + +- PUSHi( PerlSock_shutdown(PerlIO_fileno(IoIFP(io)), how) >= 0 ); ++ PUSHi( 0 ); + RETURN; + + nuts: +@@ -2980,7 +2980,7 @@ + sv_setuid(PUSHmortal, PL_statcache.st_uid); + sv_setgid(PUSHmortal, PL_statcache.st_gid); + +-#ifdef USE_STAT_RDEV ++#if 0 + mPUSHi(PL_statcache.st_rdev); + #else + PUSHs(newSVpvs_flags("", SVs_TEMP)); +@@ -4186,7 +4186,7 @@ + + PP(pp_fork) + { +-#ifdef HAS_FORK ++#if 1 + dSP; dTARGET; + Pid_t childpid; + #ifdef HAS_SIGPROCMASK +@@ -4332,7 +4332,7 @@ + TAINT_PROPER("system"); + } + PERL_FLUSHALL_FOR_CHILD; +-#if (defined(HAS_FORK) || defined(__amigaos4__)) && !defined(VMS) && !defined(OS2) || defined(PERL_MICRO) ++#if 1 + { + #ifdef __amigaos4__ + struct UserData userdata; +@@ -5582,7 +5582,7 @@ + + PP(pp_ggrent) + { +-#ifdef HAS_GROUP ++#if 0 + dSP; + const I32 which = PL_op->op_type; + const struct group *grent; +diff -ru source/util.c source-new/util.c +--- source/util.c 2017-06-30 14:03:22.000000000 -0700 ++++ source-new/util.c 2017-08-17 14:47:03.963804576 -0700 +@@ -2842,7 +2842,7 @@ + #endif /* HAS_FORK */ + } + +-#ifndef HAS_DUP2 ++#if 0 + int + dup2(int oldfd, int newfd) + { diff --git a/recipes/perl/recipe.sh b/recipes/perl/recipe.sh new file mode 100644 index 00000000..8403b17c --- /dev/null +++ b/recipes/perl/recipe.sh @@ -0,0 +1,44 @@ +VERSION=5.24.2 +TAR=http://www.cpan.org/src/5.0/perl-$VERSION.tar.gz + +unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + curl -L -O --time-cond perl-cross-1.1.6.tar.gz https://github.com/arsv/perl-cross/releases/download/1.1.6/perl-cross-1.1.6.tar.gz + tar --strip-components=1 -xvf perl-cross-1.1.6.tar.gz + wget -O cnf/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + sysroot="$($HOST-gcc -print-sysroot)" + ./configure --target=${HOST} --prefix='/' --sysroot="$sysroot" --disable-mod=Sys-Syslog,POSIX,Time-HiRes --with-libs='m' + sed -i "s/^#define Netdb_name_t.*/#define Netdb_name_t const char*/" config.h # XXX + sed -i 's/#define Strerror(e).*$/#define Strerror(e) strerror(e)/' config.h # + echo "#define HAS_VPRINTF" >> config.h + make LIBS=-lm + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + rm -rf "$1/man" + skip=1 +} From 926a20832a333eec219ce6c81f752487c7819cf1 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 17 Aug 2017 17:03:22 -0700 Subject: [PATCH 0241/3180] perl: Forking fixes --- recipes/perl/perl.patch | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/recipes/perl/perl.patch b/recipes/perl/perl.patch index ab8a934d..81b33b29 100644 --- a/recipes/perl/perl.patch +++ b/recipes/perl/perl.patch @@ -171,7 +171,25 @@ diff -ru source/pp_sys.c source-new/pp_sys.c const struct group *grent; diff -ru source/util.c source-new/util.c --- source/util.c 2017-06-30 14:03:22.000000000 -0700 -+++ source-new/util.c 2017-08-17 14:47:03.963804576 -0700 ++++ source-new/util.c 2017-08-17 15:42:05.328932377 -0700 +@@ -2456,7 +2456,7 @@ + PerlIO * + Perl_my_popen_list(pTHX_ const char *mode, int n, SV **args) + { +-#if (!defined(DOSISH) || defined(HAS_FORK)) && !defined(OS2) && !defined(VMS) && !defined(NETWARE) && !defined(__LIBCATAMOUNT__) && !defined(__amigaos4__) ++#if 1 + int p[2]; + I32 This, that; + Pid_t pid; +@@ -2821,7 +2821,7 @@ + Pid_t + Perl_my_fork(void) + { +-#if defined(HAS_FORK) ++#if 1 + Pid_t pid; + #if defined(USE_ITHREADS) && !defined(HAS_PTHREAD_ATFORK) + atfork_lock(); @@ -2842,7 +2842,7 @@ #endif /* HAS_FORK */ } @@ -181,3 +199,12 @@ diff -ru source/util.c source-new/util.c int dup2(int oldfd, int newfd) { +@@ -3196,7 +3196,7 @@ + + #if defined(OS2) + int pclose(); +-#ifdef HAS_FORK ++#if 1 + int /* Cannot prototype with I32 + in os2ish.h. */ + my_syspclose(PerlIO *ptr) From a7e540a5e3c80df46a8a59a5484045c107169c71 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 17 Aug 2017 19:36:34 -0700 Subject: [PATCH 0242/3180] perl: build POSIX --- recipes/perl/perl.patch | 110 ++++++++++++++++++++++++++++++++++++++++ recipes/perl/recipe.sh | 2 +- 2 files changed, 111 insertions(+), 1 deletion(-) diff --git a/recipes/perl/perl.patch b/recipes/perl/perl.patch index 81b33b29..f3067191 100644 --- a/recipes/perl/perl.patch +++ b/recipes/perl/perl.patch @@ -1,3 +1,113 @@ +diff -ru source/ext/POSIX/POSIX.xs source-new/ext/POSIX/POSIX.xs +--- source/ext/POSIX/POSIX.xs 2017-06-30 14:03:22.000000000 -0700 ++++ source-new/ext/POSIX/POSIX.xs 2017-08-17 19:21:59.498359355 -0700 +@@ -1302,6 +1302,7 @@ + #endif + #include + ++#if 0 + #ifdef HAS_TZNAME + # if !defined(WIN32) && !defined(__CYGWIN__) && !defined(NETWARE) && !defined(__UWIN__) + extern char *tzname[]; +@@ -1311,6 +1312,7 @@ + char *tzname[] = { "" , "" }; + #endif + #endif ++#endif + + #if defined(__VMS) && !defined(__POSIX_SOURCE) + +@@ -1327,10 +1329,11 @@ + #if defined (__CYGWIN__) + # define tzname _tzname + #endif +-#if defined (WIN32) || defined (NETWARE) ++#if 1 + # undef mkfifo + # define mkfifo(a,b) not_here("mkfifo") + # define ttyname(a) (char*)not_here("ttyname") ++# define pause() not_here("pause") + # define sigset_t long + # define pid_t long + # ifdef _MSC_VER +@@ -1397,7 +1400,7 @@ + typedef HV* POSIX__SigAction; + typedef int POSIX__SigNo; + typedef int POSIX__Fd; +-#ifdef I_TERMIOS ++#if 0 + typedef struct termios* POSIX__Termios; + #else /* Define termios types to int, and call not_here for the functions.*/ + #define POSIX__Termios int +@@ -1829,7 +1832,7 @@ + const char * packname + CODE: + { +-#ifdef I_TERMIOS ++#if 0 + void *const p = allocate_struct(aTHX_ (ST(0) = sv_newmortal()), + sizeof(struct termios), packname); + /* The previous implementation stored a pointer to an uninitialised +@@ -1896,7 +1899,7 @@ + getcflag = 2 + getlflag = 3 + CODE: +-#ifdef I_TERMIOS /* References a termios structure member so ifdef it out. */ ++#if 0 /* References a termios structure member so ifdef it out. */ + switch(ix) { + case 0: + RETVAL = termios_ref->c_iflag; +@@ -1925,7 +1928,7 @@ + POSIX::Termios termios_ref + unsigned int ccix + CODE: +-#ifdef I_TERMIOS /* References a termios structure member so ifdef it out. */ ++#if 0 /* References a termios structure member so ifdef it out. */ + if (ccix >= NCCS) + croak("Bad getcc subscript"); + RETVAL = termios_ref->c_cc[ccix]; +@@ -1957,7 +1960,7 @@ + setcflag = 2 + setlflag = 3 + CODE: +-#ifdef I_TERMIOS /* References a termios structure member so ifdef it out. */ ++#if 0 /* References a termios structure member so ifdef it out. */ + switch(ix) { + case 0: + termios_ref->c_iflag = flag; +@@ -1982,7 +1985,7 @@ + unsigned int ccix + cc_t cc + CODE: +-#ifdef I_TERMIOS /* References a termios structure member so ifdef it out. */ ++#if 0 /* References a termios structure member so ifdef it out. */ + if (ccix >= NCCS) + croak("Bad setcc subscript"); + termios_ref->c_cc[ccix] = cc; +@@ -3540,15 +3543,15 @@ + void + times() + PPCODE: +- struct tms tms; +- clock_t realtime; +- realtime = times( &tms ); ++ //struct tms tms; ++ //clock_t realtime; ++ //realtime = times( &tms ); + EXTEND(SP,5); +- PUSHs( sv_2mortal( newSViv( (IV) realtime ) ) ); +- PUSHs( sv_2mortal( newSViv( (IV) tms.tms_utime ) ) ); +- PUSHs( sv_2mortal( newSViv( (IV) tms.tms_stime ) ) ); +- PUSHs( sv_2mortal( newSViv( (IV) tms.tms_cutime ) ) ); +- PUSHs( sv_2mortal( newSViv( (IV) tms.tms_cstime ) ) ); ++ PUSHs( sv_2mortal( newSViv( (IV) 0 ) ) ); ++ PUSHs( sv_2mortal( newSViv( (IV) 0 ) ) ); ++ PUSHs( sv_2mortal( newSViv( (IV) 0 ) ) ); ++ PUSHs( sv_2mortal( newSViv( (IV) 0 ) ) ); ++ PUSHs( sv_2mortal( newSViv( (IV) 0 ) ) ); + + double + difftime(time1, time2) diff -ru source/mg.c source-new/mg.c --- source/mg.c 2017-06-30 14:03:22.000000000 -0700 +++ source-new/mg.c 2017-08-17 14:40:37.669507085 -0700 diff --git a/recipes/perl/recipe.sh b/recipes/perl/recipe.sh index 8403b17c..46568436 100644 --- a/recipes/perl/recipe.sh +++ b/recipes/perl/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { tar --strip-components=1 -xvf perl-cross-1.1.6.tar.gz wget -O cnf/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub sysroot="$($HOST-gcc -print-sysroot)" - ./configure --target=${HOST} --prefix='/' --sysroot="$sysroot" --disable-mod=Sys-Syslog,POSIX,Time-HiRes --with-libs='m' + ./configure --target=${HOST} --prefix='/' --sysroot="$sysroot" --disable-mod=Sys-Syslog,Time-HiRes --with-libs='m' sed -i "s/^#define Netdb_name_t.*/#define Netdb_name_t const char*/" config.h # XXX sed -i 's/#define Strerror(e).*$/#define Strerror(e) strerror(e)/' config.h # echo "#define HAS_VPRINTF" >> config.h From 67031d37086e17fa9db18b63370eaef9eefbf589 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 17 Aug 2017 19:57:56 -0700 Subject: [PATCH 0243/3180] Add recipes for automake and autoconf; compiles but not properly working --- recipes/autoconf/recipe.sh | 35 +++++++++++++++++++++++++++++++++++ recipes/automake/recipe.sh | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 recipes/autoconf/recipe.sh create mode 100644 recipes/automake/recipe.sh diff --git a/recipes/autoconf/recipe.sh b/recipes/autoconf/recipe.sh new file mode 100644 index 00000000..bc214475 --- /dev/null +++ b/recipes/autoconf/recipe.sh @@ -0,0 +1,35 @@ +VERSION=2.69 +TAR=http://ftp.gnu.org/gnu/autoconf/autoconf-$VERSION.tar.xz + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + ./configure --host=${HOST} --prefix='' + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} diff --git a/recipes/automake/recipe.sh b/recipes/automake/recipe.sh new file mode 100644 index 00000000..0384cc65 --- /dev/null +++ b/recipes/automake/recipe.sh @@ -0,0 +1,38 @@ +VERSION=1.15 +TAR=http://ftp.gnu.org/gnu/automake/automake-$VERSION.tar.xz + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + wget -O lib/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + sed -i 's|.*/doc/help2man.*|\&\& true|' Makefile.in + sed -i 's|install-info-am install-man|install-info-am|' Makefile.in + + ./configure --host=${HOST} --prefix='' + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} From 0fb76a8ef221bbbf42dc8c170fbc3008f17fd37a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 19 Aug 2017 14:55:58 -0600 Subject: [PATCH 0244/3180] Pull forked pastel --- recipes/pastel/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/pastel/recipe.sh b/recipes/pastel/recipe.sh index 2d0302d2..31377fbf 100644 --- a/recipes/pastel/recipe.sh +++ b/recipes/pastel/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/robbycerantola/pastel.git +GIT=https://github.com/redox-os/pastel.git BINDIR=/ui/bin function recipe_stage { From 6392c2f5d3d586effe1c9ff677d0da24da3ddf82 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Sat, 26 Aug 2017 19:36:06 +0200 Subject: [PATCH 0245/3180] Add ffmpeg recipe --- recipes/ffmpeg/ffmpeg.patch | 26 +++++++++++++++++++++++++ recipes/ffmpeg/recipe.sh | 39 +++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 recipes/ffmpeg/ffmpeg.patch create mode 100644 recipes/ffmpeg/recipe.sh diff --git a/recipes/ffmpeg/ffmpeg.patch b/recipes/ffmpeg/ffmpeg.patch new file mode 100644 index 00000000..9719e12c --- /dev/null +++ b/recipes/ffmpeg/ffmpeg.patch @@ -0,0 +1,26 @@ +diff --git a/configure b/configure +index 7201941..e3b2875 100755 +--- a/configure ++++ b/configure +@@ -5055,6 +5055,8 @@ case $target_os in + ;; + minix) + ;; ++ redox) ++ ;; + none) + ;; + *) +diff --git a/ffmpeg.c b/ffmpeg.c +index 888d19a..aeeb0e5 100644 +--- a/ffmpeg.c ++++ b/ffmpeg.c +@@ -91,7 +91,7 @@ + + #if HAVE_TERMIOS_H + #include +-#include ++//#include + #include + #include + #elif HAVE_KBHIT diff --git a/recipes/ffmpeg/recipe.sh b/recipes/ffmpeg/recipe.sh new file mode 100644 index 00000000..e52f4ab1 --- /dev/null +++ b/recipes/ffmpeg/recipe.sh @@ -0,0 +1,39 @@ +GIT=https://github.com/FFmpeg/FFmpeg + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + ./configure \ + --enable-cross-compile \ + --target-os=redox \ + --arch=x86_64 \ + --cross_prefix=x86_64-unknown-redox- \ + --prefix=/ \ + --disable-doc \ + --disable-network \ + --disable-ffplay \ + --disable-ffprobe \ + --disable-ffserver + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + rm -rf "$1"/{include,lib,share} + skip=1 +} From 05f1f97dab21668bbcfc954be9e7ea2d508092cd Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Fri, 1 Sep 2017 03:21:47 +0200 Subject: [PATCH 0246/3180] ffmpeg: Remove unnecessary disable flags --- recipes/ffmpeg/recipe.sh | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/recipes/ffmpeg/recipe.sh b/recipes/ffmpeg/recipe.sh index e52f4ab1..25ec130d 100644 --- a/recipes/ffmpeg/recipe.sh +++ b/recipes/ffmpeg/recipe.sh @@ -12,11 +12,7 @@ function recipe_build { --arch=x86_64 \ --cross_prefix=x86_64-unknown-redox- \ --prefix=/ \ - --disable-doc \ - --disable-network \ - --disable-ffplay \ - --disable-ffprobe \ - --disable-ffserver + --disable-network make skip=1 } From cc5f7523bf9567eb17372c27ea8e514ae78e2ece Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 5 Sep 2017 20:23:50 -0600 Subject: [PATCH 0247/3180] Use -unknown for gcc and g++ --- recipes/rust/config.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/rust/config.toml b/recipes/rust/config.toml index ba739137..38610cf8 100644 --- a/recipes/rust/config.toml +++ b/recipes/rust/config.toml @@ -2,8 +2,8 @@ backtrace = false [target.x86_64-unknown-redox] -cc = "x86_64-elf-redox-gcc" -cxx = "x86_64-elf-redox-g++" +cc = "x86_64-unknown-redox-gcc" +cxx = "x86_64-unknown-redox-g++" llvm-config = "./llvm-config" [build] From 3f373ee7a6e362bbbffe3867a07edd1d88489aa0 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Sun, 10 Sep 2017 05:03:10 +0200 Subject: [PATCH 0248/3180] ffmpeg: Switch to a working release branch, fix hardcoded arch --- recipes/ffmpeg/recipe.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/ffmpeg/recipe.sh b/recipes/ffmpeg/recipe.sh index 25ec130d..565577dc 100644 --- a/recipes/ffmpeg/recipe.sh +++ b/recipes/ffmpeg/recipe.sh @@ -1,4 +1,5 @@ GIT=https://github.com/FFmpeg/FFmpeg +BRANCH=release/3.3 function recipe_update { echo "skipping update" @@ -9,8 +10,8 @@ function recipe_build { ./configure \ --enable-cross-compile \ --target-os=redox \ - --arch=x86_64 \ - --cross_prefix=x86_64-unknown-redox- \ + --arch=${ARCH} \ + --cross_prefix=${HOST}- \ --prefix=/ \ --disable-network make From b991094bbdb18f048f94eef592ed96b5e3b1f046 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 14 Sep 2017 21:03:55 -0600 Subject: [PATCH 0249/3180] Fix tabulation, allow recipe override of DEBUG --- cook.sh | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/cook.sh b/cook.sh index 752bd0bc..641a1c8d 100755 --- a/cook.sh +++ b/cook.sh @@ -7,6 +7,7 @@ source config.sh # Variables to be overriden by recipes export BINDIR=bin export CARGOFLAGS= +export DEBUG= if [ ! "$(uname -s)" = "Redox" ] then @@ -114,17 +115,17 @@ function op { popd > /dev/null ;; prepare) - rm -rf sysroot - mkdir sysroot + rm -rf sysroot + mkdir sysroot if [ ${#BUILD_DEPENDS} -gt 0 ] then pushd $ROOT - ./repo.sh "${BUILD_DEPENDS[@]}" - popd + ./repo.sh "${BUILD_DEPENDS[@]}" + popd for i in "${BUILD_DEPENDS[@]}" - do + do pkg --target=$TARGET install --root sysroot "$REPO/$i.tar.gz" done fi @@ -139,7 +140,7 @@ function op { ;; unprepare) rm -rf build - rm -rf sysroot + rm -rf sysroot ;; version) pushd build > /dev/null @@ -171,7 +172,7 @@ function op { fi release_flag="--release" - if [ "$cargo_build_debug_mode" == 1 ] + if [ "$DEBUG" == 1 ] then release_flag= fi @@ -192,7 +193,7 @@ function op { fi release_flag="--release" - if [ "$cargo_build_debug_mode" == 1 ] + if [ "$DEBUG" == 1 ] then release_flag= fi @@ -229,24 +230,24 @@ function op { if [ "$skip" -eq "0" ] then #TODO xargo install --root "../stage" $CARGOFLAGS - if [ "$cargo_build_debug_mode" == 1 ] - then - build=debug - else - build=release - fi + if [ "$DEBUG" == 1 ] + then + build=debug + else + build=release + fi bins="$(find target/$TARGET/$build/ -maxdepth 1 -type f ! -name '*.*')" if [ -n "$bins" ] then mkdir -p "../stage/$BINDIR" for bin in $bins do - if [ "$cargo_build_debug_mode" == 1 ] - then + if [ "$DEBUG" == 1 ] + then cp -v "$bin" "../stage/$BINDIR/$(basename $bin)" - else + else strip -v "$bin" -o "../stage/$BINDIR/$(basename $bin)" - fi + fi done fi fi @@ -288,13 +289,12 @@ then cd "$ROOT/recipes/$1" source recipe.sh - ops=() - cargo_build_debug_mode= + ops=() for arg in "${@:2}" do if [ "$arg" == "--debug" ] then - cargo_build_debug_mode=1 + DEBUG=1 else ops[${#ops[@]}]="$arg" fi From d1c72f4de2d385635dbf8a292fc32c6b93b074b6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 16 Sep 2017 12:05:01 -0600 Subject: [PATCH 0250/3180] Add slashes after source and build to support symlinks --- repo.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/repo.sh b/repo.sh index 083316b6..68a3167d 100755 --- a/repo.sh +++ b/repo.sh @@ -13,19 +13,19 @@ fi for recipe in $recipes do - if [ ! -d "recipes/$recipe/source" ] + if [ ! -d "recipes/$recipe/source/" ] then echo -e "\033[01;38;5;215mrepo - fetching $recipe\033[0m" >&2 ./cook.sh "$recipe" fetch fi - if [ ! -d "recipes/$recipe/build" ] + if [ ! -d "recipes/$recipe/build/" ] then echo -e "\033[01;38;5;155mrepo - preparing $recipe\033[0m" >&2 ./cook.sh "$recipe" prepare else - TIME_SOURCE="$($FIND recipes/$recipe/source -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" - TIME_BUILD="$($FIND recipes/$recipe/build -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" + TIME_SOURCE="$($FIND recipes/$recipe/source/ -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" + TIME_BUILD="$($FIND recipes/$recipe/build/ -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" if [ "$TIME_SOURCE" -gt "$TIME_BUILD" ] then echo -e "\033[01;38;5;155mrepo - repreparing $recipe\033[0m" >&2 @@ -38,7 +38,7 @@ do echo -e "\033[01;38;5;155mrepo - building $recipe\033[0m" >&2 ./cook.sh "$recipe" build stage tar else - TIME_BUILD="$($FIND recipes/$recipe/build -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" + TIME_BUILD="$($FIND recipes/$recipe/build/ -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" TIME_STAGE="$($STAT -c "%Y" recipes/$recipe/stage.tar.gz)" TIME_RECIPE="$($FIND recipes/$recipe/{recipe.sh,*.patch} -printf '%Ts\n' | sort -nr | head -n 1)" if [ "$TIME_BUILD" -gt "$TIME_STAGE" -o "$TIME_RECIPE" -gt "$TIME_STAGE" ] From a9d71c3d058847907ab6fa0b92b9d15d0ec05f96 Mon Sep 17 00:00:00 2001 From: Agoston Szepessy Date: Thu, 21 Sep 2017 11:38:48 -0400 Subject: [PATCH 0251/3180] Add dependency info to packages A variable called DEPENDS in recipes contains the runtime dependency information for packages. These get added to the package during tarring. --- cook.sh | 12 ++++++++++++ recipes/curl/recipe.sh | 1 + recipes/gcc/recipe.sh | 1 + recipes/rust/recipe.sh | 1 + 4 files changed, 15 insertions(+) diff --git a/cook.sh b/cook.sh index 641a1c8d..ae5bc997 100755 --- a/cook.sh +++ b/cook.sh @@ -260,6 +260,18 @@ function op { echo "name = \"$1\"" > "stage.toml" echo "version = \"$(op $1 version)\"" >> "stage.toml" echo "target = \"$TARGET\"" >> "stage.toml" + + # Add runtime dependencies to package if they exist + if [ -n "$DEPENDS" ] + then + # Remove leading and trailing whitespace, replace whitespace between + # package names with commas, and surround package names with quotes + dependencies=$(echo -e "$DEPENDS" | sed -E 's/^[[:space:]]*//;s/[[:space:]]*$//;s/[[:space:]]+/,/g;s/[^, ][^, ]*/"&"/g') + echo "depends = [$dependencies]" >> "stage.toml" + else + echo "depends = []" >> "stage.toml" + fi + mkdir -p stage/pkg cp -v stage.toml "stage/pkg/$1.toml" pkg --target=$TARGET create stage diff --git a/recipes/curl/recipe.sh b/recipes/curl/recipe.sh index 9d460ebc..a64a6b9f 100644 --- a/recipes/curl/recipe.sh +++ b/recipes/curl/recipe.sh @@ -1,6 +1,7 @@ TAR=https://curl.haxx.se/download/curl-7.55.1.tar.gz BRANCH=redox BUILD_DEPENDS=(openssl) +DEPENDS="ca-certificates" function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index 760fcf7c..1ce91e83 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -1,5 +1,6 @@ GIT=https://github.com/redox-os/gcc.git BRANCH=redox +DEPENDS="gnu-binutils newlib" export AR="${HOST}-ar" export AS="${HOST}-as" diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index 389d5bd9..0f793f7b 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -1,5 +1,6 @@ GIT=https://github.com/ids1024/rust.git BRANCH=compile-redox +DEPENDS="gcc cargo" LLVM_PREFIX=$PWD/build/llvm-root SYSROOT=/usr/$HOST From fa11383b38b69d64ec9733b5f27d011a4bcdbd9e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 4 Oct 2017 20:57:54 -0600 Subject: [PATCH 0252/3180] Add recipes for 2048, cleye, and rust64 --- recipes/2048/recipe.sh | 1 + recipes/cleye/recipe.sh | 1 + recipes/rust64/recipe.sh | 1 + 3 files changed, 3 insertions(+) create mode 100644 recipes/2048/recipe.sh create mode 100755 recipes/cleye/recipe.sh create mode 100755 recipes/rust64/recipe.sh diff --git a/recipes/2048/recipe.sh b/recipes/2048/recipe.sh new file mode 100644 index 00000000..78f3d40b --- /dev/null +++ b/recipes/2048/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/2048-rs.git diff --git a/recipes/cleye/recipe.sh b/recipes/cleye/recipe.sh new file mode 100755 index 00000000..db148126 --- /dev/null +++ b/recipes/cleye/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/cleye.git diff --git a/recipes/rust64/recipe.sh b/recipes/rust64/recipe.sh new file mode 100755 index 00000000..6d0f1c66 --- /dev/null +++ b/recipes/rust64/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/rust64.git From c708430031b4b37e1db86a20e35dea5e61756bad Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 4 Oct 2017 21:09:16 -0600 Subject: [PATCH 0253/3180] Add upstream URLs --- recipes/2048/recipe.sh | 1 - recipes/cleye/recipe.sh | 1 + recipes/findutils/recipe.sh | 3 ++- recipes/game-2048/recipe.sh | 2 ++ recipes/pastel/recipe.sh | 1 + recipes/rust64/recipe.sh | 1 + recipes/smith/recipe.sh | 1 + recipes/uutils/recipe.sh | 1 + 8 files changed, 9 insertions(+), 2 deletions(-) delete mode 100644 recipes/2048/recipe.sh create mode 100644 recipes/game-2048/recipe.sh diff --git a/recipes/2048/recipe.sh b/recipes/2048/recipe.sh deleted file mode 100644 index 78f3d40b..00000000 --- a/recipes/2048/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://github.com/redox-os/2048-rs.git diff --git a/recipes/cleye/recipe.sh b/recipes/cleye/recipe.sh index db148126..82509c0d 100755 --- a/recipes/cleye/recipe.sh +++ b/recipes/cleye/recipe.sh @@ -1 +1,2 @@ GIT=https://github.com/redox-os/cleye.git +GIT_UPSTREAM=https://github.com/evanandrewrose/cleye.git diff --git a/recipes/findutils/recipe.sh b/recipes/findutils/recipe.sh index 52112ab4..601f7fc8 100644 --- a/recipes/findutils/recipe.sh +++ b/recipes/findutils/recipe.sh @@ -1,2 +1,3 @@ -GIT=https://github.com/redox-os/findutils +GIT=https://github.com/redox-os/findutils.git +GIT_UPSTREAM=https://github.com/uutils/findutils.git CARGOFLAGS="--bin find" diff --git a/recipes/game-2048/recipe.sh b/recipes/game-2048/recipe.sh new file mode 100644 index 00000000..d04f470b --- /dev/null +++ b/recipes/game-2048/recipe.sh @@ -0,0 +1,2 @@ +GIT=https://github.com/redox-os/2048-rs.git +GIT_UPSTREAM=https://github.com/pierrechevalier83/2048-rs.git diff --git a/recipes/pastel/recipe.sh b/recipes/pastel/recipe.sh index 31377fbf..1b2740d7 100644 --- a/recipes/pastel/recipe.sh +++ b/recipes/pastel/recipe.sh @@ -1,4 +1,5 @@ GIT=https://github.com/redox-os/pastel.git +GIT_UPSTREAM=https://github.com/robbycerantola/pastel.git BINDIR=/ui/bin function recipe_stage { diff --git a/recipes/rust64/recipe.sh b/recipes/rust64/recipe.sh index 6d0f1c66..602ce803 100755 --- a/recipes/rust64/recipe.sh +++ b/recipes/rust64/recipe.sh @@ -1 +1,2 @@ GIT=https://github.com/redox-os/rust64.git +GIT_UPSTREAM=https://github.com/kondrak/rust64.git diff --git a/recipes/smith/recipe.sh b/recipes/smith/recipe.sh index 9b804258..54d8432e 100755 --- a/recipes/smith/recipe.sh +++ b/recipes/smith/recipe.sh @@ -1 +1,2 @@ GIT=https://github.com/redox-os/Smith.git +GIT_UPSTREAM=https://github.com/IGI-111/Smith.git diff --git a/recipes/uutils/recipe.sh b/recipes/uutils/recipe.sh index 08bc6964..5ee48628 100644 --- a/recipes/uutils/recipe.sh +++ b/recipes/uutils/recipe.sh @@ -1,4 +1,5 @@ GIT=https://github.com/redox-os/uutils.git +GIT_UPSTREAM=https://github.com/uutils/coreutils.git CARGOFLAGS="--no-default-features --features redox" function recipe_stage { From 1c3121d8f9ea4b0536a076284092a26a75e5a71f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 10 Oct 2017 21:31:54 -0600 Subject: [PATCH 0254/3180] Update rustual-boy fork --- recipes/rustual-boy/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/rustual-boy/recipe.sh b/recipes/rustual-boy/recipe.sh index 86da8cf0..7e232b2c 100755 --- a/recipes/rustual-boy/recipe.sh +++ b/recipes/rustual-boy/recipe.sh @@ -1,5 +1,5 @@ -GIT=https://github.com/xtibor/rustual-boy.git -BRANCH=redox +GIT=https://github.com/redox-os/rustual-boy.git +GIT_UPSTREAM=https://github.com/emu-rs/rustual-boy.git function recipe_update { cd rustual-boy-cli From 211d5c2bdb20b217d8bca2a8c97939bf7ce05a15 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 10 Oct 2017 21:43:24 -0600 Subject: [PATCH 0255/3180] Add rs-nes --- recipes/rs-nes/recipe.sh | 2 ++ 1 file changed, 2 insertions(+) create mode 100755 recipes/rs-nes/recipe.sh diff --git a/recipes/rs-nes/recipe.sh b/recipes/rs-nes/recipe.sh new file mode 100755 index 00000000..18a3a7f6 --- /dev/null +++ b/recipes/rs-nes/recipe.sh @@ -0,0 +1,2 @@ +GIT=https://github.com/redox-os/rs-nes.git +GIT_UPSTREAM=https://github.com/bgourlie/rs-nes.git From 1f7128c43f30116d48dcceff630b5ac6728c272c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 11 Oct 2017 19:57:27 -0600 Subject: [PATCH 0256/3180] Add upstream link if necessary --- cook.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/cook.sh b/cook.sh index ae5bc997..daf79c75 100755 --- a/cook.sh +++ b/cook.sh @@ -87,8 +87,16 @@ function op { fi pushd source > /dev/null + git remote set-url origin "$GIT" + git fetch origin + if [ -n "$GIT_UPSTREAM" ] + then + git remote set-url upstream "$GIT_UPSTREAM" &> /dev/null || + git remote add upstream "$GIT_UPSTREAM" + git fetch upstream + fi git pull - git submodule sync + git submodule sync --recursive git submodule update --init --recursive popd > /dev/null fi From 348dd4a8fe8bc92614a60a77d31b416029993d89 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 11 Oct 2017 20:19:43 -0600 Subject: [PATCH 0257/3180] Update status script --- cook.sh | 12 ++++++++++++ status.sh | 16 +++++++--------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/cook.sh b/cook.sh index daf79c75..f7c044bd 100755 --- a/cook.sh +++ b/cook.sh @@ -30,6 +30,7 @@ function usage { echo " unpublish" >&2 echo " stage" >&2 echo " unstage" >&2 + echo " status" >&2 echo " tar" >&2 echo " untar" >&2 echo " update" >&2 @@ -109,6 +110,17 @@ function op { rm -f source.tar fi ;; + status) + if [ -n "$TAR" ] + then + tar --compare --file="source.tar" -C "source" --strip-components=1 2>&1 | + grep -v "tar: :" | grep -v '\(Mod time\|Mode\|Gid\|Uid\) differs' || + true + elif [ -n "$GIT" ] + then + git -C source diff --name-status + fi + ;; update) pushd source > /dev/null skip=0 diff --git a/status.sh b/status.sh index 21abe8fa..fe715ffc 100755 --- a/status.sh +++ b/status.sh @@ -12,15 +12,13 @@ fi for recipe in $recipes do - echo -e "\e[1m$recipe\e[0m" - if [ -d "recipes/$recipe/source/.git" ] + if [ -d "recipes/$recipe/source" ] then - git -C "recipes/$recipe/source" status - elif [ -e "recipes/$recipe/source.tar" ] - then - echo "Using source tarball" - tar --compare --file="recipes/$recipe/source.tar" -C "recipes/$recipe/source" --strip-components=1 2>&1| grep -v "tar: :" | grep -v '\(Mode\|Gid\|Uid\) differs' || true - else - echo "No original source found" + status="$(COOK_QUIET=1 ./cook.sh "$recipe" status)" + + if [ -n "$status" ] + then + echo -e "\e[1m$recipe\e[0m\n$status" + fi fi done From 569bc08564824af906cf20b7311c3ff8dc6c6903 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 11 Oct 2017 20:24:40 -0600 Subject: [PATCH 0258/3180] Add upstream status script --- cook.sh | 12 ++++++++++++ status_upstream.sh | 24 ++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100755 status_upstream.sh diff --git a/cook.sh b/cook.sh index f7c044bd..41d3b76c 100755 --- a/cook.sh +++ b/cook.sh @@ -31,6 +31,7 @@ function usage { echo " stage" >&2 echo " unstage" >&2 echo " status" >&2 + echo " status_upstream" >&2 echo " tar" >&2 echo " untar" >&2 echo " update" >&2 @@ -121,6 +122,17 @@ function op { git -C source diff --name-status fi ;; + status_upstream) + if [ -n "$GIT_UPSTREAM" ] + then + if [ -n "$BRANCH" ] + then + git -C source diff --name-status "upstream/$BRANCH" + else + git -C source diff --name-status "upstream/master" + fi + fi + ;; update) pushd source > /dev/null skip=0 diff --git a/status_upstream.sh b/status_upstream.sh new file mode 100755 index 00000000..defd1c53 --- /dev/null +++ b/status_upstream.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash +set -e + +source config.sh + +if [ $# = 0 ] +then + recipes="$(ls -1 recipes)" +else + recipes="$@" +fi + +for recipe in $recipes +do + if [ -d "recipes/$recipe/source" ] + then + status="$(COOK_QUIET=1 ./cook.sh "$recipe" status_upstream)" + + if [ -n "$status" ] + then + echo -e "\e[1m$recipe\e[0m\n$status" + fi + fi +done From 1ff2f8f4588937a2b054f48ff1baf1f84db4a778 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 11 Oct 2017 20:31:35 -0600 Subject: [PATCH 0259/3180] Add diff subcommands --- cook.sh | 43 +++++++++++++++++++++++++++++++++++++++++++ status_origin.sh | 24 ++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100755 status_origin.sh diff --git a/cook.sh b/cook.sh index 41d3b76c..9d9dfb05 100755 --- a/cook.sh +++ b/cook.sh @@ -22,6 +22,9 @@ function usage { echo " distclean" >&2 echo " build" >&2 echo " clean" >&2 + echo " diff" >&2 + echo " diff_origin" >&2 + echo " diff_upstream" >&2 echo " fetch" >&2 echo " unfetch" >&2 echo " prepare" >&2 @@ -31,6 +34,7 @@ function usage { echo " stage" >&2 echo " unstage" >&2 echo " status" >&2 + echo " status_origin" >&2 echo " status_upstream" >&2 echo " tar" >&2 echo " untar" >&2 @@ -122,6 +126,17 @@ function op { git -C source diff --name-status fi ;; + status_origin) + if [ -n "$GIT" ] + then + if [ -n "$BRANCH" ] + then + git -C source diff --name-status "origin/$BRANCH" + else + git -C source diff --name-status "origin/master" + fi + fi + ;; status_upstream) if [ -n "$GIT_UPSTREAM" ] then @@ -133,6 +148,34 @@ function op { fi fi ;; + diff) + if [ -n "$GIT" ] + then + git -C source diff + fi + ;; + diff_origin) + if [ -n "$GIT" ] + then + if [ -n "$BRANCH" ] + then + git -C source diff "origin/$BRANCH" + else + git -C source diff "origin/master" + fi + fi + ;; + diff_upstream) + if [ -n "$GIT_UPSTREAM" ] + then + if [ -n "$BRANCH" ] + then + git -C source diff "upstream/$BRANCH" + else + git -C source diff "upstream/master" + fi + fi + ;; update) pushd source > /dev/null skip=0 diff --git a/status_origin.sh b/status_origin.sh new file mode 100755 index 00000000..cf3e1ab4 --- /dev/null +++ b/status_origin.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash +set -e + +source config.sh + +if [ $# = 0 ] +then + recipes="$(ls -1 recipes)" +else + recipes="$@" +fi + +for recipe in $recipes +do + if [ -d "recipes/$recipe/source" ] + then + status="$(COOK_QUIET=1 ./cook.sh "$recipe" status_origin)" + + if [ -n "$status" ] + then + echo -e "\e[1m$recipe\e[0m\n$status" + fi + fi +done From d029991234516200a57de83370acad2333f2798b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 11 Oct 2017 20:34:11 -0600 Subject: [PATCH 0260/3180] Use color and --stat for status command --- cook.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/cook.sh b/cook.sh index 9d9dfb05..74660096 100755 --- a/cook.sh +++ b/cook.sh @@ -123,7 +123,7 @@ function op { true elif [ -n "$GIT" ] then - git -C source diff --name-status + git -C source diff --stat --color fi ;; status_origin) @@ -131,9 +131,9 @@ function op { then if [ -n "$BRANCH" ] then - git -C source diff --name-status "origin/$BRANCH" + git -C source diff --stat --color "origin/$BRANCH" else - git -C source diff --name-status "origin/master" + git -C source diff --stat --color "origin/master" fi fi ;; @@ -142,9 +142,9 @@ function op { then if [ -n "$BRANCH" ] then - git -C source diff --name-status "upstream/$BRANCH" + git -C source diff --stat --color "upstream/$BRANCH" else - git -C source diff --name-status "upstream/master" + git -C source diff --stat --color "upstream/master" fi fi ;; From 5d1d2c58c167493cc9119de3ee37ab8d6d707cc9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 11 Oct 2017 20:53:16 -0600 Subject: [PATCH 0261/3180] Add difftool subcommands --- cook.sh | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/cook.sh b/cook.sh index 74660096..6edce30b 100755 --- a/cook.sh +++ b/cook.sh @@ -25,6 +25,9 @@ function usage { echo " diff" >&2 echo " diff_origin" >&2 echo " diff_upstream" >&2 + echo " difftool" >&2 + echo " difftool_origin" >&2 + echo " difftool_upstream" >&2 echo " fetch" >&2 echo " unfetch" >&2 echo " prepare" >&2 @@ -176,6 +179,34 @@ function op { fi fi ;; + difftool) + if [ -n "$GIT" ] + then + git -C source difftool -d + fi + ;; + difftool_origin) + if [ -n "$GIT" ] + then + if [ -n "$BRANCH" ] + then + git -C source difftool -d "origin/$BRANCH" + else + git -C source difftool -d "origin/master" + fi + fi + ;; + difftool_upstream) + if [ -n "$GIT_UPSTREAM" ] + then + if [ -n "$BRANCH" ] + then + git -C source difftool -d "upstream/$BRANCH" + else + git -C source difftool -d "upstream/master" + fi + fi + ;; update) pushd source > /dev/null skip=0 From 47127d627a6967c12dfd96aa189d77f8b76d8bdc Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 14 Oct 2017 07:59:35 -0600 Subject: [PATCH 0262/3180] Run docgen when installing a package --- .gitmodules | 7 +++---- cook.sh | 9 +++++++++ docgen | 1 + libc-artifacts | 1 - 4 files changed, 13 insertions(+), 5 deletions(-) create mode 160000 docgen delete mode 160000 libc-artifacts diff --git a/.gitmodules b/.gitmodules index c335c458..37d3c8bd 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,8 +1,7 @@ -[submodule "libc-artifacts"] - path = libc-artifacts - url = https://github.com/redox-os/libc-artifacts.git - branch = master [submodule "pkgutils"] path = pkgutils url = https://github.com/redox-os/pkgutils.git branch = master +[submodule "docgen"] + path = docgen + url = https://github.com/redox-os/docgen.git diff --git a/cook.sh b/cook.sh index 6edce30b..22ff5898 100755 --- a/cook.sh +++ b/cook.sh @@ -11,9 +11,15 @@ export DEBUG= if [ ! "$(uname -s)" = "Redox" ] then + function pkg { CC=cc cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- $@ } + +function docgen { + CC=cc cargo run --release --manifest-path "$ROOT/docgen/Cargo.toml" --bin docgen -- $@ +} + fi function usage { @@ -342,6 +348,7 @@ function op { else build=release fi + bins="$(find target/$TARGET/$build/ -maxdepth 1 -type f ! -name '*.*')" if [ -n "$bins" ] then @@ -356,6 +363,8 @@ function op { fi done fi + + docgen . ../stage/ref/ fi popd > /dev/null ;; diff --git a/docgen b/docgen new file mode 160000 index 00000000..52fb8863 --- /dev/null +++ b/docgen @@ -0,0 +1 @@ +Subproject commit 52fb8863efdd0862b2439f87faff2457b43cac62 diff --git a/libc-artifacts b/libc-artifacts deleted file mode 160000 index c67b055a..00000000 --- a/libc-artifacts +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c67b055af98c5f9d3afbe62479e8201f01f941cc From bf85cd1c306687186b04c4066277eb2fdecdbdfd Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 14 Oct 2017 08:50:03 -0600 Subject: [PATCH 0263/3180] Update docgen, run on source rather than build directory --- cook.sh | 2 +- docgen | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cook.sh b/cook.sh index 22ff5898..7a2dea29 100755 --- a/cook.sh +++ b/cook.sh @@ -364,7 +364,7 @@ function op { done fi - docgen . ../stage/ref/ + docgen ../source ../stage/ref fi popd > /dev/null ;; diff --git a/docgen b/docgen index 52fb8863..67119659 160000 --- a/docgen +++ b/docgen @@ -1 +1 @@ -Subproject commit 52fb8863efdd0862b2439f87faff2457b43cac62 +Subproject commit 67119659a484dba78eb29c1081afc8f8ea7014c3 From cd716a4ec27a700035167b061adf5666e1c9dbdd Mon Sep 17 00:00:00 2001 From: Thomas Levy Date: Sun, 15 Oct 2017 10:44:06 -0700 Subject: [PATCH 0264/3180] Add recipe for PrBoom. It almost runs doom! --- recipes/prboom/01_redox.patch | 45 +++ recipes/prboom/recipe.sh | 36 ++ recipes/sdl/01_orbital.patch | 735 ++++++++++++++++++++++++++++++++++ recipes/sdl/recipe.sh | 35 ++ 4 files changed, 851 insertions(+) create mode 100644 recipes/prboom/01_redox.patch create mode 100644 recipes/prboom/recipe.sh create mode 100644 recipes/sdl/01_orbital.patch create mode 100644 recipes/sdl/recipe.sh diff --git a/recipes/prboom/01_redox.patch b/recipes/prboom/01_redox.patch new file mode 100644 index 00000000..d42dd549 --- /dev/null +++ b/recipes/prboom/01_redox.patch @@ -0,0 +1,45 @@ +diff -rupN prboom-2.5.0/autotools/config.sub prboom-2.5.0-redox/autotools/config.sub +--- prboom-2.5.0/autotools/config.sub 2006-08-10 08:17:12.000000000 -0700 ++++ prboom-2.5.0-redox/autotools/config.sub 2017-10-14 22:17:14.000000000 -0700 +@@ -1214,7 +1214,7 @@ case $os in + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ +- | -skyos* | -haiku* | -rdos* | -toppers*) ++ | -skyos* | -haiku* | -rdos* | -toppers* | -redox*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) +diff -rupN prboom-2.5.0/configure.ac prboom-2.5.0-redox/configure.ac +--- prboom-2.5.0/configure.ac 2008-11-09 11:12:37.000000000 -0800 ++++ prboom-2.5.0-redox/configure.ac 2017-10-14 23:27:16.000000000 -0700 +@@ -85,8 +85,6 @@ if test "$cross_compiling" != "yes"; the + fi + + dnl --- Header files, typedefs, structures +-AC_TYPE_UID_T +-AC_TYPE_SIZE_T + AC_DECL_SYS_SIGLIST + AC_HEADER_SYS_WAIT + AC_CHECK_HEADERS(unistd.h asm/byteorder.h sched.h) +diff -rupN prboom-2.5.0/src/d_deh.c prboom-2.5.0-redox/src/d_deh.c +--- prboom-2.5.0/src/d_deh.c 2008-10-11 05:10:38.000000000 -0700 ++++ prboom-2.5.0-redox/src/d_deh.c 2017-10-14 23:29:00.000000000 -0700 +@@ -54,17 +54,6 @@ + #define TRUE 1 + #define FALSE 0 + +-#ifndef HAVE_STRLWR +-#include +- +-static char* strlwr(char* str) +-{ +- char* p; +- for (p=str; *p; p++) *p = tolower(*p); +- return str; +-} +-#endif +- + // killough 10/98: new functions, to allow processing DEH files in-memory + // (e.g. from wads) + diff --git a/recipes/prboom/recipe.sh b/recipes/prboom/recipe.sh new file mode 100644 index 00000000..a738081f --- /dev/null +++ b/recipes/prboom/recipe.sh @@ -0,0 +1,36 @@ +VERSION=2.5.0 +TAR=https://downloads.sourceforge.net/project/prboom/prboom%20stable/$VERSION/prboom-$VERSION.tar.gz +BUILD_DEPENDS=(sdl) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + autoreconf -if + ./configure --prefix=/ --host=${HOST} --disable-sdltest --disable-gl --without-net --with-sdl-prefix="$PWD/../sysroot" + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} diff --git a/recipes/sdl/01_orbital.patch b/recipes/sdl/01_orbital.patch new file mode 100644 index 00000000..c4636dec --- /dev/null +++ b/recipes/sdl/01_orbital.patch @@ -0,0 +1,735 @@ +diff -rupN sdl/build-scripts/config.sub sdl-redox/build-scripts/config.sub +--- sdl/build-scripts/config.sub 2012-01-18 22:30:05.000000000 -0800 ++++ sdl-redox/build-scripts/config.sub 2016-07-27 18:17:26.683907466 -0700 +@@ -1276,7 +1276,7 @@ case $os in + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ +- | -kopensolaris* \ ++ | -kopensolaris* | -redox* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ +diff -rupN sdl/configure.in sdl-redox/configure.in +--- sdl/configure.in 2012-01-18 22:30:05.000000000 -0800 ++++ sdl-redox/configure.in 2016-07-27 18:17:26.683907466 -0700 +@@ -1646,6 +1646,19 @@ AC_HELP_STRING([--enable-video-dummy], [ + fi + } + ++dnl Set up the Orbital video driver. ++CheckOrbitalVideo() ++{ ++ AC_ARG_ENABLE(video-orbital, ++AC_HELP_STRING([--enable-video-orbital], [use orbital video driver [[default=yes]]]), ++ , enable_video_orbital=yes) ++ if test x$enable_video_orbital = xyes; then ++ AC_DEFINE(SDL_VIDEO_DRIVER_ORBITAL) ++ SOURCES="$SOURCES $srcdir/src/video/orbital/*.c" ++ have_video=yes ++ fi ++} ++ + dnl Check to see if OpenGL support is desired + AC_ARG_ENABLE(video-opengl, + AC_HELP_STRING([--enable-video-opengl], [include OpenGL context creation [[default=yes]]]), +@@ -2325,10 +2338,11 @@ case "$host" in + have_timers=yes + fi + ;; +- *-*-linux*|*-*-uclinux*|*-*-gnu*|*-*-k*bsd*-gnu|*-*-bsdi*|*-*-freebsd*|*-*-dragonfly*|*-*-netbsd*|*-*-openbsd*|*-*-sysv5*|*-*-solaris*|*-*-hpux*|*-*-irix*|*-*-aix*|*-*-osf*) ++ *-*-linux*|*-*-uclinux*|*-*-redox*|*-*-gnu*|*-*-k*bsd*-gnu|*-*-bsdi*|*-*-freebsd*|*-*-dragonfly*|*-*-netbsd*|*-*-openbsd*|*-*-sysv5*|*-*-solaris*|*-*-hpux*|*-*-irix*|*-*-aix*|*-*-osf*) + case "$host" in + *-*-linux*) ARCH=linux ;; + *-*-uclinux*) ARCH=linux ;; ++ *-*-redox*) ARCH=redox ;; + *-*-kfreebsd*-gnu) ARCH=kfreebsd-gnu ;; + *-*-knetbsd*-gnu) ARCH=knetbsd-gnu ;; + *-*-kopenbsd*-gnu) ARCH=kopenbsd-gnu ;; +@@ -2347,6 +2361,7 @@ case "$host" in + esac + CheckVisibilityHidden + CheckDummyVideo ++ CheckOrbitalVideo + CheckDiskAudio + CheckDummyAudio + CheckDLOPEN +diff -rupN sdl/include/SDL_config.h.in sdl-redox/include/SDL_config.h.in +--- sdl/include/SDL_config.h.in 2012-01-18 22:30:05.000000000 -0800 ++++ sdl-redox/include/SDL_config.h.in 2016-07-27 18:17:26.683907466 -0700 +@@ -268,6 +268,7 @@ + #undef SDL_VIDEO_DRIVER_GGI + #undef SDL_VIDEO_DRIVER_IPOD + #undef SDL_VIDEO_DRIVER_NANOX ++#undef SDL_VIDEO_DRIVER_ORBITAL + #undef SDL_VIDEO_DRIVER_OS2FS + #undef SDL_VIDEO_DRIVER_PHOTON + #undef SDL_VIDEO_DRIVER_PICOGUI +diff -rupN sdl/src/video/orbital/SDL_orbitalevents.c sdl-redox/src/video/orbital/SDL_orbitalevents.c +--- sdl/src/video/orbital/SDL_orbitalevents.c 1969-12-31 16:00:00.000000000 -0800 ++++ sdl-redox/src/video/orbital/SDL_orbitalevents.c 2016-07-27 18:17:26.683907466 -0700 +@@ -0,0 +1,159 @@ ++/* ++ SDL - Simple DirectMedia Layer ++ Copyright (C) 1997-2012 Sam Lantinga ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free Software ++ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++ Sam Lantinga ++ slouken@libsdl.org ++*/ ++#include "SDL_config.h" ++ ++#include "SDL.h" ++#include "../../events/SDL_sysevents.h" ++#include "../../events/SDL_events_c.h" ++ ++#include "SDL_orbitalvideo.h" ++#include "SDL_orbitalevents_c.h" ++#include "SDL_orbitalscancode.h" ++ ++#include ++ ++static SDLKey keymap[128]; ++ ++#define EVENT_NONE 0 ++#define EVENT_MOUSE 1 ++#define EVENT_KEY 2 ++#define EVENT_QUIT 3 ++ ++struct Event { ++ int64_t code; ++ int64_t a; ++ int64_t b; ++ int64_t c; ++} __attribute__((packed)); ++ ++void ORBITAL_PumpEvents(_THIS) ++{ ++ struct Event event; ++ while(read(this->hidden->fd, &event, sizeof(event)) > 0){ ++ if ( event.code == EVENT_KEY ) { ++ SDL_keysym keysym; ++ keysym.unicode = event.a; ++ keysym.scancode = event.b; ++ keysym.sym = keymap[event.b]; ++ keysym.mod = KMOD_NONE; ++ if ( event.c > 0 ) { ++ SDL_PrivateKeyboard(SDL_PRESSED, &keysym); ++ } else { ++ SDL_PrivateKeyboard(SDL_RELEASED, &keysym); ++ } ++ } else if( event.code == EVENT_MOUSE ) { ++ SDL_PrivateMouseMotion(event.c, 0, event.a, event.b); ++ //SDL_PrivateMouseButton(Uint8 state, Uint8 button, Sint16 x, Sint16 y); ++ } else if ( event.code == EVENT_QUIT ) { ++ SDL_PrivateQuit(); ++ } ++ } ++} ++ ++void ORBITAL_InitOSKeymap(_THIS) ++{ ++ int i; ++ for ( i = 0; i < SDL_arraysize(keymap); ++i ) ++ keymap[i] = SDLK_UNKNOWN; ++ ++ keymap[SCANCODE_ESCAPE] = SDLK_ESCAPE; ++ keymap[SCANCODE_1] = SDLK_1; ++ keymap[SCANCODE_2] = SDLK_2; ++ keymap[SCANCODE_3] = SDLK_3; ++ keymap[SCANCODE_4] = SDLK_4; ++ keymap[SCANCODE_5] = SDLK_5; ++ keymap[SCANCODE_6] = SDLK_6; ++ keymap[SCANCODE_7] = SDLK_7; ++ keymap[SCANCODE_8] = SDLK_8; ++ keymap[SCANCODE_9] = SDLK_9; ++ keymap[SCANCODE_0] = SDLK_0; ++ keymap[SCANCODE_MINUS] = SDLK_MINUS; ++ keymap[SCANCODE_EQUAL] = SDLK_EQUALS; ++ keymap[SCANCODE_BACKSPACE] = SDLK_BACKSPACE; ++ keymap[SCANCODE_TAB] = SDLK_TAB; ++ keymap[SCANCODE_Q] = SDLK_q; ++ keymap[SCANCODE_W] = SDLK_w; ++ keymap[SCANCODE_E] = SDLK_e; ++ keymap[SCANCODE_R] = SDLK_r; ++ keymap[SCANCODE_T] = SDLK_t; ++ keymap[SCANCODE_Y] = SDLK_y; ++ keymap[SCANCODE_U] = SDLK_u; ++ keymap[SCANCODE_I] = SDLK_i; ++ keymap[SCANCODE_O] = SDLK_o; ++ keymap[SCANCODE_P] = SDLK_p; ++ keymap[SCANCODE_BRACKET_LEFT] = SDLK_LEFTBRACKET; ++ keymap[SCANCODE_BRACKET_RIGHT] = SDLK_RIGHTBRACKET; ++ keymap[SCANCODE_ENTER] = SDLK_RETURN; ++ keymap[SCANCODE_LEFTCONTROL] = SDLK_LCTRL; ++ keymap[SCANCODE_A] = SDLK_a; ++ keymap[SCANCODE_S] = SDLK_s; ++ keymap[SCANCODE_D] = SDLK_d; ++ keymap[SCANCODE_F] = SDLK_f; ++ keymap[SCANCODE_G] = SDLK_g; ++ keymap[SCANCODE_H] = SDLK_h; ++ keymap[SCANCODE_J] = SDLK_j; ++ keymap[SCANCODE_K] = SDLK_k; ++ keymap[SCANCODE_L] = SDLK_l; ++ keymap[SCANCODE_SEMICOLON] = SDLK_SEMICOLON; ++ keymap[SCANCODE_APOSTROPHE] = SDLK_QUOTE; ++ keymap[SCANCODE_TICK] = SDLK_BACKQUOTE; ++ keymap[SCANCODE_LEFTSHIFT] = SDLK_LSHIFT; ++ keymap[SCANCODE_RIGHTSHIFT] = SDLK_RSHIFT; ++ keymap[SCANCODE_BACKSLASH] = SDLK_BACKSLASH; ++ keymap[SCANCODE_Z] = SDLK_z; ++ keymap[SCANCODE_X] = SDLK_x; ++ keymap[SCANCODE_C] = SDLK_c; ++ keymap[SCANCODE_V] = SDLK_v; ++ keymap[SCANCODE_B] = SDLK_b; ++ keymap[SCANCODE_N] = SDLK_n; ++ keymap[SCANCODE_M] = SDLK_m; ++ keymap[SCANCODE_COMMA] = SDLK_COMMA; ++ keymap[SCANCODE_PERIOD] = SDLK_PERIOD; ++ keymap[SCANCODE_SLASH] = SDLK_SLASH; ++ keymap[SCANCODE_LEFTALT] = SDLK_LALT; ++ keymap[SCANCODE_SPACE] = SDLK_SPACE; ++ keymap[SCANCODE_CAPSLOCK] = SDLK_CAPSLOCK; ++ keymap[SCANCODE_F1] = SDLK_F1; ++ keymap[SCANCODE_F2] = SDLK_F2; ++ keymap[SCANCODE_F3] = SDLK_F3; ++ keymap[SCANCODE_F4] = SDLK_F4; ++ keymap[SCANCODE_F5] = SDLK_F5; ++ keymap[SCANCODE_F6] = SDLK_F6; ++ keymap[SCANCODE_F7] = SDLK_F7; ++ keymap[SCANCODE_F8] = SDLK_F8; ++ keymap[SCANCODE_F9] = SDLK_F9; ++ keymap[SCANCODE_F10] = SDLK_F10; ++ keymap[SCANCODE_F11] = SDLK_F11; ++ keymap[SCANCODE_F12] = SDLK_F12; ++ keymap[SCANCODE_HOME] = SDLK_HOME; ++ keymap[SCANCODE_CURSORBLOCKUP] = SDLK_UP; ++ keymap[SCANCODE_PAGEUP] = SDLK_PAGEUP; ++ keymap[SCANCODE_CURSORBLOCKLEFT] = SDLK_LEFT; ++ keymap[SCANCODE_CURSORBLOCKRIGHT] = SDLK_RIGHT; ++ keymap[SCANCODE_END] = SDLK_END; ++ keymap[SCANCODE_CURSORBLOCKDOWN] = SDLK_DOWN; ++ keymap[SCANCODE_PAGEDOWN] = SDLK_PAGEDOWN; ++ keymap[SCANCODE_INSERT] = SDLK_INSERT; ++ keymap[SCANCODE_DELETE] = SDLK_DELETE; ++} ++ ++/* end of SDL_orbitalevents.c ... */ +diff -rupN sdl/src/video/orbital/SDL_orbitalevents_c.h sdl-redox/src/video/orbital/SDL_orbitalevents_c.h +--- sdl/src/video/orbital/SDL_orbitalevents_c.h 1969-12-31 16:00:00.000000000 -0800 ++++ sdl-redox/src/video/orbital/SDL_orbitalevents_c.h 2016-07-27 18:17:26.683907466 -0700 +@@ -0,0 +1,32 @@ ++/* ++ SDL - Simple DirectMedia Layer ++ Copyright (C) 1997-2012 Sam Lantinga ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free Software ++ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++ Sam Lantinga ++ slouken@libsdl.org ++*/ ++#include "SDL_config.h" ++ ++#include "SDL_orbitalvideo.h" ++ ++/* Variables and functions exported by SDL_sysevents.c to other parts ++ of the native video subsystem (SDL_sysvideo.c) ++*/ ++extern void ORBITAL_InitOSKeymap(_THIS); ++extern void ORBITAL_PumpEvents(_THIS); ++ ++/* end of SDL_orbitalevents_c.h ... */ +diff -rupN sdl/src/video/orbital/SDL_orbitalmouse.c sdl-redox/src/video/orbital/SDL_orbitalmouse.c +--- sdl/src/video/orbital/SDL_orbitalmouse.c 1969-12-31 16:00:00.000000000 -0800 ++++ sdl-redox/src/video/orbital/SDL_orbitalmouse.c 2016-07-27 18:17:26.683907466 -0700 +@@ -0,0 +1,33 @@ ++/* ++ SDL - Simple DirectMedia Layer ++ Copyright (C) 1997-2012 Sam Lantinga ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free Software ++ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++ Sam Lantinga ++ slouken@libsdl.org ++*/ ++#include "SDL_config.h" ++ ++#include "SDL_mouse.h" ++#include "../../events/SDL_events_c.h" ++ ++#include "SDL_orbitalmouse_c.h" ++ ++ ++/* The implementation dependent data for the window manager cursor */ ++struct WMcursor { ++ int unused; ++}; +diff -rupN sdl/src/video/orbital/SDL_orbitalmouse_c.h sdl-redox/src/video/orbital/SDL_orbitalmouse_c.h +--- sdl/src/video/orbital/SDL_orbitalmouse_c.h 1969-12-31 16:00:00.000000000 -0800 ++++ sdl-redox/src/video/orbital/SDL_orbitalmouse_c.h 2016-07-27 18:17:26.683907466 -0700 +@@ -0,0 +1,26 @@ ++/* ++ SDL - Simple DirectMedia Layer ++ Copyright (C) 1997-2012 Sam Lantinga ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free Software ++ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++ Sam Lantinga ++ slouken@libsdl.org ++*/ ++#include "SDL_config.h" ++ ++#include "SDL_orbitalvideo.h" ++ ++/* Functions to be exported */ +diff -rupN sdl/src/video/orbital/SDL_orbitalscancode.h sdl-redox/src/video/orbital/SDL_orbitalscancode.h +--- sdl/src/video/orbital/SDL_orbitalscancode.h 1969-12-31 16:00:00.000000000 -0800 ++++ sdl-redox/src/video/orbital/SDL_orbitalscancode.h 2016-07-27 18:17:26.687240818 -0700 +@@ -0,0 +1,80 @@ ++#define SCANCODE_A 0x1E ++#define SCANCODE_B 0x30 ++#define SCANCODE_C 0x2E ++#define SCANCODE_D 0x20 ++#define SCANCODE_E 0x12 ++#define SCANCODE_F 0x21 ++#define SCANCODE_G 0x22 ++#define SCANCODE_H 0x23 ++#define SCANCODE_I 0x17 ++#define SCANCODE_J 0x24 ++#define SCANCODE_K 0x25 ++#define SCANCODE_L 0x26 ++#define SCANCODE_M 0x32 ++#define SCANCODE_N 0x31 ++#define SCANCODE_O 0x18 ++#define SCANCODE_P 0x19 ++#define SCANCODE_Q 0x10 ++#define SCANCODE_R 0x13 ++#define SCANCODE_S 0x1F ++#define SCANCODE_T 0x14 ++#define SCANCODE_U 0x16 ++#define SCANCODE_V 0x2F ++#define SCANCODE_W 0x11 ++#define SCANCODE_X 0x2D ++#define SCANCODE_Y 0x15 ++#define SCANCODE_Z 0x2C ++#define SCANCODE_0 0x0B ++#define SCANCODE_1 0x2 ++#define SCANCODE_2 0x3 ++#define SCANCODE_3 0x4 ++#define SCANCODE_4 0x5 ++#define SCANCODE_5 0x6 ++#define SCANCODE_6 0x7 ++#define SCANCODE_7 0x8 ++#define SCANCODE_8 0x9 ++#define SCANCODE_9 0x0A ++#define SCANCODE_TICK 0x29 ++#define SCANCODE_MINUS 0x0C ++#define SCANCODE_EQUAL 0x0D ++#define SCANCODE_BACKSLASH 0x2B ++#define SCANCODE_BACKSPACE 0x0E ++#define SCANCODE_SPACE 0x39 ++#define SCANCODE_TAB 0x0F ++#define SCANCODE_CAPSLOCK 0x3A ++#define SCANCODE_LEFTSHIFT 0x2A ++#define SCANCODE_LEFTCONTROL 0x1D ++#define SCANCODE_LEFTALT 0x38 ++#define SCANCODE_RIGHTSHIFT 0x36 ++#define SCANCODE_ENTER 0x1C ++#define SCANCODE_ESCAPE 0x1 ++#define SCANCODE_F1 0x3B ++#define SCANCODE_F2 0x3C ++#define SCANCODE_F3 0x3D ++#define SCANCODE_F4 0x3E ++#define SCANCODE_F5 0x3F ++#define SCANCODE_F6 0x40 ++#define SCANCODE_F7 0x41 ++#define SCANCODE_F8 0x42 ++#define SCANCODE_F9 0x43 ++#define SCANCODE_F10 0x44 ++#define SCANCODE_F11 0x57 ++#define SCANCODE_F12 0x58 ++#define SCANCODE_SCROLL 0x46 ++#define SCANCODE_BRACKET_LEFT 0x1A ++#define SCANCODE_BRACKET_RIGHT 0x1B ++#define SCANCODE_INSERT 0x52 ++#define SCANCODE_HOME 0x47 ++#define SCANCODE_PAGEUP 0x49 ++#define SCANCODE_DELETE 0x53 ++#define SCANCODE_END 0x4F ++#define SCANCODE_PAGEDOWN 0x51 ++#define SCANCODE_CURSORBLOCKUP 0x48 ++#define SCANCODE_CURSORBLOCKLEFT 0x4B ++#define SCANCODE_CURSORBLOCKDOWN 0x50 ++#define SCANCODE_CURSORBLOCKRIGHT 0x4D ++#define SCANCODE_SEMICOLON 0x27 ++#define SCANCODE_APOSTROPHE 0x28 ++#define SCANCODE_COMMA 0x33 ++#define SCANCODE_PERIOD 0x34 ++#define SCANCODE_SLASH 0x35 +diff -rupN sdl/src/video/orbital/SDL_orbitalvideo.c sdl-redox/src/video/orbital/SDL_orbitalvideo.c +--- sdl/src/video/orbital/SDL_orbitalvideo.c 1969-12-31 16:00:00.000000000 -0800 ++++ sdl-redox/src/video/orbital/SDL_orbitalvideo.c 2016-07-27 18:17:26.687240818 -0700 +@@ -0,0 +1,243 @@ ++/* ++ SDL - Simple DirectMedia Layer ++ Copyright (C) 1997-2012 Sam Lantinga ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free Software ++ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++ Sam Lantinga ++ slouken@libsdl.org ++*/ ++#include "SDL_config.h" ++ ++/* Orbital SDL video driver implementation ++ * ++ * Initial work by Ryan C. Gordon (icculus@icculus.org). A good portion ++ * of this was cut-and-pasted from Stephane Peter's work in the AAlib ++ * SDL video driver. Renamed to "DUMMY" by Sam Lantinga. ++ * Repurposed to ORBITAL by Jeremy Soller. ++ */ ++ ++#include "SDL_video.h" ++#include "SDL_mouse.h" ++#include "../SDL_sysvideo.h" ++#include "../SDL_pixels_c.h" ++#include "../../events/SDL_events_c.h" ++ ++#include "SDL_orbitalvideo.h" ++#include "SDL_orbitalevents_c.h" ++#include "SDL_orbitalmouse_c.h" ++ ++#include ++#include ++#include ++ ++#define ORBITALVID_DRIVER_NAME "orbital" ++ ++/* Initialization/Query functions */ ++static int ORBITAL_VideoInit(_THIS, SDL_PixelFormat *vformat); ++static SDL_Rect **ORBITAL_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags); ++static SDL_Surface *ORBITAL_SetVideoMode(_THIS, SDL_Surface *current, int width, int height, int bpp, Uint32 flags); ++static int ORBITAL_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors); ++static void ORBITAL_VideoQuit(_THIS); ++ ++/* Hardware surface functions */ ++static int ORBITAL_AllocHWSurface(_THIS, SDL_Surface *surface); ++static int ORBITAL_LockHWSurface(_THIS, SDL_Surface *surface); ++static void ORBITAL_UnlockHWSurface(_THIS, SDL_Surface *surface); ++static void ORBITAL_FreeHWSurface(_THIS, SDL_Surface *surface); ++ ++/* etc. */ ++static void ORBITAL_UpdateRects(_THIS, int numrects, SDL_Rect *rects); ++ ++/* ORBITAL driver bootstrap functions */ ++ ++static int ORBITAL_Available(void) ++{ ++ return(1); ++} ++ ++static void ORBITAL_DeleteDevice(SDL_VideoDevice *device) ++{ ++ SDL_free(device->hidden); ++ SDL_free(device); ++} ++ ++static SDL_VideoDevice *ORBITAL_CreateDevice(int devindex) ++{ ++ SDL_VideoDevice *device; ++ ++ /* Initialize all variables that we clean on shutdown */ ++ device = (SDL_VideoDevice *)SDL_malloc(sizeof(SDL_VideoDevice)); ++ if ( device ) { ++ SDL_memset(device, 0, (sizeof *device)); ++ device->hidden = (struct SDL_PrivateVideoData *) ++ SDL_malloc((sizeof *device->hidden)); ++ } ++ if ( (device == NULL) || (device->hidden == NULL) ) { ++ SDL_OutOfMemory(); ++ if ( device ) { ++ SDL_free(device); ++ } ++ return(0); ++ } ++ SDL_memset(device->hidden, 0, (sizeof *device->hidden)); ++ ++ /* Set the function pointers */ ++ device->VideoInit = ORBITAL_VideoInit; ++ device->ListModes = ORBITAL_ListModes; ++ device->SetVideoMode = ORBITAL_SetVideoMode; ++ device->CreateYUVOverlay = NULL; ++ device->SetColors = ORBITAL_SetColors; ++ device->UpdateRects = ORBITAL_UpdateRects; ++ device->VideoQuit = ORBITAL_VideoQuit; ++ device->AllocHWSurface = ORBITAL_AllocHWSurface; ++ device->CheckHWBlit = NULL; ++ device->FillHWRect = NULL; ++ device->SetHWColorKey = NULL; ++ device->SetHWAlpha = NULL; ++ device->LockHWSurface = ORBITAL_LockHWSurface; ++ device->UnlockHWSurface = ORBITAL_UnlockHWSurface; ++ device->FlipHWSurface = NULL; ++ device->FreeHWSurface = ORBITAL_FreeHWSurface; ++ device->SetCaption = NULL; ++ device->SetIcon = NULL; ++ device->IconifyWindow = NULL; ++ device->GrabInput = NULL; ++ device->GetWMInfo = NULL; ++ device->InitOSKeymap = ORBITAL_InitOSKeymap; ++ device->PumpEvents = ORBITAL_PumpEvents; ++ ++ device->free = ORBITAL_DeleteDevice; ++ ++ return device; ++} ++ ++VideoBootStrap ORBITAL_bootstrap = { ++ ORBITALVID_DRIVER_NAME, "SDL orbital video driver", ++ ORBITAL_Available, ORBITAL_CreateDevice ++}; ++ ++ ++int ORBITAL_VideoInit(_THIS, SDL_PixelFormat *vformat) ++{ ++ fprintf(stderr, "WARNING: You are using the SDL orbital video driver!\n"); ++ ++ /* Determine the screen depth (use default 32-bit depth) */ ++ /* we change this during the SDL_SetVideoMode implementation... */ ++ vformat->BitsPerPixel = 32; ++ vformat->BytesPerPixel = 4; ++ ++ /* We're done! */ ++ return(0); ++} ++ ++SDL_Rect **ORBITAL_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags) ++{ ++ return (SDL_Rect **) -1; ++} ++ ++SDL_Surface *ORBITAL_SetVideoMode(_THIS, SDL_Surface *current, ++ int width, int height, int bpp, Uint32 flags) ++{ ++ if ( this->hidden->fd ) { ++ close( this->hidden->fd ); ++ } ++ ++ if ( this->hidden->buffer ) { ++ SDL_free( this->hidden->buffer ); ++ } ++ ++ char path[4096]; ++ snprintf(path, 4096, "orbital:/-1/-1/%d/%d/SDL", width, height); ++ this->hidden->fd = open(path, O_RDONLY); ++ printf("%s at %d\n", path, this->hidden->fd); ++ ++ this->hidden->buffer = SDL_malloc(width * height * (bpp / 8)); ++ if ( ! this->hidden->buffer ) { ++ SDL_SetError("Couldn't allocate buffer for requested mode"); ++ return(NULL); ++ } ++ ++ printf("Setting mode %dx%d@%d\n", width, height, bpp); ++ ++ SDL_memset(this->hidden->buffer, 0, width * height * (bpp / 8)); ++ ++ /* Allocate the new pixel format for the screen */ ++ if ( ! SDL_ReallocFormat(current, bpp, 0, 0, 0, 0) ) { ++ SDL_free(this->hidden->buffer); ++ this->hidden->buffer = NULL; ++ SDL_SetError("Couldn't allocate new pixel format for requested mode"); ++ return(NULL); ++ } ++ ++ /* Set up the new mode framebuffer */ ++ current->flags = flags & SDL_FULLSCREEN; ++ this->hidden->w = current->w = width; ++ this->hidden->h = current->h = height; ++ current->pitch = current->w * (bpp / 8); ++ current->pixels = this->hidden->buffer; ++ ++ /* We're done */ ++ return(current); ++} ++ ++/* We don't actually allow hardware surfaces other than the main one */ ++static int ORBITAL_AllocHWSurface(_THIS, SDL_Surface *surface) ++{ ++ return(-1); ++} ++static void ORBITAL_FreeHWSurface(_THIS, SDL_Surface *surface) ++{ ++ return; ++} ++ ++/* We need to wait for vertical retrace on page flipped displays */ ++static int ORBITAL_LockHWSurface(_THIS, SDL_Surface *surface) ++{ ++ return(0); ++} ++ ++static void ORBITAL_UnlockHWSurface(_THIS, SDL_Surface *surface) ++{ ++ return; ++} ++ ++static void ORBITAL_UpdateRects(_THIS, int numrects, SDL_Rect *rects) ++{ ++ write(this->hidden->fd, this->hidden->buffer, this->hidden->w * this->hidden->h * 4); ++} ++ ++int ORBITAL_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors) ++{ ++ /* do nothing of note. */ ++ return(1); ++} ++ ++/* Note: If we are terminated, this could be called in the middle of ++ another SDL video routine -- notably UpdateRects. ++*/ ++void ORBITAL_VideoQuit(_THIS) ++{ ++ if ( this->hidden->fd ) { ++ close( this->hidden->fd ); ++ this->hidden->fd = 0; ++ } ++ ++ if (this->screen->pixels != NULL) ++ { ++ SDL_free(this->screen->pixels); ++ this->screen->pixels = NULL; ++ } ++} +diff -rupN sdl/src/video/orbital/SDL_orbitalvideo.h sdl-redox/src/video/orbital/SDL_orbitalvideo.h +--- sdl/src/video/orbital/SDL_orbitalvideo.h 1969-12-31 16:00:00.000000000 -0800 ++++ sdl-redox/src/video/orbital/SDL_orbitalvideo.h 2016-07-27 18:17:26.687240818 -0700 +@@ -0,0 +1,41 @@ ++/* ++ SDL - Simple DirectMedia Layer ++ Copyright (C) 1997-2012 Sam Lantinga ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free Software ++ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++ Sam Lantinga ++ slouken@libsdl.org ++*/ ++#include "SDL_config.h" ++ ++#ifndef _SDL_orbitalvideo_h ++#define _SDL_orbitalvideo_h ++ ++#include "../SDL_sysvideo.h" ++ ++/* Hidden "this" pointer for the video functions */ ++#define _THIS SDL_VideoDevice *this ++ ++ ++/* Private display data */ ++ ++struct SDL_PrivateVideoData { ++ int w, h; ++ int fd; ++ void *buffer; ++}; ++ ++#endif /* _SDL_orbitalvideo_h */ +diff -rupN sdl/src/video/SDL_sysvideo.h sdl-redox/src/video/SDL_sysvideo.h +--- sdl/src/video/SDL_sysvideo.h 2012-01-18 22:30:06.000000000 -0800 ++++ sdl-redox/src/video/SDL_sysvideo.h 2016-07-27 18:17:26.683907466 -0700 +@@ -410,6 +410,9 @@ extern VideoBootStrap AALIB_bootstrap; + #if SDL_VIDEO_DRIVER_CACA + extern VideoBootStrap CACA_bootstrap; + #endif ++#if SDL_VIDEO_DRIVER_ORBITAL ++extern VideoBootStrap ORBITAL_bootstrap; ++#endif + #if SDL_VIDEO_DRIVER_DUMMY + extern VideoBootStrap DUMMY_bootstrap; + #endif +diff -rupN sdl/src/video/SDL_video.c sdl-redox/src/video/SDL_video.c +--- sdl/src/video/SDL_video.c 2012-01-18 22:30:06.000000000 -0800 ++++ sdl-redox/src/video/SDL_video.c 2016-07-27 18:17:26.683907466 -0700 +@@ -126,6 +126,9 @@ static VideoBootStrap *bootstrap[] = { + #if SDL_VIDEO_DRIVER_CACA + &CACA_bootstrap, + #endif ++#if SDL_VIDEO_DRIVER_ORBITAL ++ &ORBITAL_bootstrap, ++#endif + #if SDL_VIDEO_DRIVER_DUMMY + &DUMMY_bootstrap, + #endif diff --git a/recipes/sdl/recipe.sh b/recipes/sdl/recipe.sh new file mode 100644 index 00000000..045d4dfb --- /dev/null +++ b/recipes/sdl/recipe.sh @@ -0,0 +1,35 @@ +VERSION=1.2.15 +TAR=https://www.libsdl.org/release/SDL-$VERSION.tar.gz + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + ./autogen.sh + ./configure --prefix=/ --host=${HOST} --disable-shared --disable-pulseaudio --disable-video-x11 --disable-cdrom --disable-loadso --disable-threads --disable-timers --enable-audio --enable-dummyaudio --enable-video-orbital + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} From 5e621772cff283ee9b05e9daba59e236745dc847 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 20 Oct 2017 17:48:28 -0600 Subject: [PATCH 0265/3180] Add llvm lto linkages --- recipes/rust/llvm-config | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/recipes/rust/llvm-config b/recipes/rust/llvm-config index 0ac59cda..a4737c86 100755 --- a/recipes/rust/llvm-config +++ b/recipes/rust/llvm-config @@ -15,8 +15,17 @@ elif args == ["--cxxflags"]: print("-I" + prefix + "/include --std=gnu++11 -fPIC -fvisibility-inlines-hidden -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wno-maybe-uninitialized -Wdelete-non-virtual-dtor -Wno-comment -Werror=date-time -std=gnu++11 -g -fno-exceptions -fno-rtti -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS") elif args == ["--components"]: print("all all-targets analysis asmparser asmprinter bitreader bitwriter codegen core coroutines coverage debuginfocodeview debuginfodwarf debuginfomsf debuginfopdb demangle engine executionengine globalisel instcombine instrumentation interpreter ipo irreader libdriver lineeditor linker lto mc mcdisassembler mcjit mcparser mirparser native nativecodegen objcarcopts object objectyaml option orcjit passes profiledata runtimedyld scalaropts selectiondag support symbolize tablegen target transformutils vectorize x86 x86asmparser x86asmprinter x86codegen x86desc x86disassembler x86info x86utils") -elif args == ['--libs', '--link-static', 'asmparser', 'bitreader', 'bitwriter', 'instrumentation', 'interpreter', 'ipo', 'linker', 'mcjit', 'x86']: - print("-lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMX86Desc -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMMCJIT -lLLVMipo -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMInstrumentation -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMProfileData -lLLVMBitReader -lLLVMAsmParser -lLLVMCore -lLLVMSupport -lLLVMDemangle -lstdc++ -lgcc") +elif args == ['--libs', '--link-static', 'asmparser', 'bitreader', 'bitwriter', 'instrumentation', 'interpreter', 'ipo', 'linker', 'lto', 'mcjit', 'x86']: + print( + "-lLLVMLTO -lLLVMObjCARCOpts -lLLVMPasses -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen" + + " -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF" + + " -lLLVMX86Desc -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMMCJIT" + + " -lLLVMipo -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMInterpreter -lLLVMExecutionEngine" + + " -lLLVMRuntimeDyld -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMInstrumentation" + + " -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMObject -lLLVMMCParser -lLLVMMC" + + " -lLLVMProfileData -lLLVMBitReader -lLLVMAsmParser -lLLVMCore -lLLVMSupport -lLLVMDemangle" + + " -lstdc++ -lgcc" + ) # FIXME last two -l are are a hack elif args == ["--link-static", "--ldflags"]: print("-L" + prefix + "/lib"); From dcd45cfd9ea46c5e1ed60c36025eb81e15807243 Mon Sep 17 00:00:00 2001 From: Jose Narvaez Date: Sat, 21 Oct 2017 14:43:01 +0100 Subject: [PATCH 0266/3180] Recipe for fd. --- recipes/fd/recipe.sh | 1 + 1 file changed, 1 insertion(+) create mode 100644 recipes/fd/recipe.sh diff --git a/recipes/fd/recipe.sh b/recipes/fd/recipe.sh new file mode 100644 index 00000000..8839a16f --- /dev/null +++ b/recipes/fd/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/sharkdp/fd.git \ No newline at end of file From 21559d4c99e4dbe310d570b2843f488da78d10a1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 22 Oct 2017 21:23:57 -0600 Subject: [PATCH 0267/3180] Update rust recipe --- recipes/rust/recipe.sh | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index 0f793f7b..e1e584c3 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -1,9 +1,9 @@ -GIT=https://github.com/ids1024/rust.git -BRANCH=compile-redox +GIT=https://github.com/redox-os/rust.git +BRANCH=compile-redox-stage-0 DEPENDS="gcc cargo" -LLVM_PREFIX=$PWD/build/llvm-root -SYSROOT=/usr/$HOST +LLVM_PREFIX="$PWD/build/llvm-root" +SYSROOT="/usr/$HOST" unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP @@ -25,17 +25,18 @@ function recipe_build { then git -C llvm-redox pull else - git clone https://github.com/ids1024/llvm.git -b redox2 --depth 1 llvm-redox + git clone https://github.com/redox-os/llvm.git -b redox --depth 1 llvm-redox fi # Build LLVM - rm -rf $LLVM_PREFIX - mkdir $LLVM_PREFIX + rm -rf "$LLVM_PREFIX" + mkdir -p "$LLVM_PREFIX" + rm -rf llvm-redox/build mkdir -p llvm-redox/build pushd llvm-redox/build CC=$HOST-gcc CXX=$HOST-g++ cmake "${LLVM_CMAKE_ARGS[@]}" .. - make -j"$(nproc)" - make install + make -j4 + make install popd cp ../{config.toml,llvm-config} ./ From 2bb4b066432a38539fa2f3e30d8279882f0b2224 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 22 Oct 2017 21:24:54 -0600 Subject: [PATCH 0268/3180] Use nproc for rust LLVM --- recipes/rust/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index e1e584c3..cc3b2c7f 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -35,7 +35,7 @@ function recipe_build { mkdir -p llvm-redox/build pushd llvm-redox/build CC=$HOST-gcc CXX=$HOST-g++ cmake "${LLVM_CMAKE_ARGS[@]}" .. - make -j4 + make -j$(nproc) make install popd From dc61f23565c9da2e6017d2998a95bf3dca327569 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 22 Oct 2017 21:56:34 -0600 Subject: [PATCH 0269/3180] Update cargo path --- recipes/cargo/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/cargo/recipe.sh b/recipes/cargo/recipe.sh index dad63c3b..55f0ea18 100644 --- a/recipes/cargo/recipe.sh +++ b/recipes/cargo/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/ids1024/cargo.git +GIT=https://github.com/redox-os/cargo.git BRANCH=redox BUILD_DEPENDS=(openssl) From c19ba61a876b23ce2bb6b8c10582d6c2cebb6440 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 26 Oct 2017 22:30:50 -0700 Subject: [PATCH 0270/3180] Make repo.sh accept --debug, and pass it to cook.sh --- repo.sh | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/repo.sh b/repo.sh index 68a3167d..c6c8d8f5 100755 --- a/repo.sh +++ b/repo.sh @@ -4,11 +4,20 @@ shopt -s nullglob source config.sh -if [ $# = 0 ] +recipes=() +for arg in "${@:1}" +do + if [ "$arg" == "--debug" ] + then + DEBUG=--debug + else + recipes[${#recipes[@]}]="$arg" + fi +done + +if [ ${#recipes[@]} = 0 ] then recipes="$(ls -1 recipes)" -else - recipes="$@" fi for recipe in $recipes @@ -36,7 +45,7 @@ do if [ ! -f "recipes/$recipe/stage.tar.gz" ] then echo -e "\033[01;38;5;155mrepo - building $recipe\033[0m" >&2 - ./cook.sh "$recipe" build stage tar + ./cook.sh "$recipe" build stage tar $DEBUG else TIME_BUILD="$($FIND recipes/$recipe/build/ -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" TIME_STAGE="$($STAT -c "%Y" recipes/$recipe/stage.tar.gz)" @@ -44,7 +53,7 @@ do if [ "$TIME_BUILD" -gt "$TIME_STAGE" -o "$TIME_RECIPE" -gt "$TIME_STAGE" ] then echo -e "\033[01;38;5;155mrepo - rebuilding $recipe\033[0m" >&2 - ./cook.sh "$recipe" untar unstage build stage tar + ./cook.sh "$recipe" untar unstage build stage tar $DEBUG else echo -e "\033[01;38;5;155mrepo - $recipe up to date\033[0m" >&2 fi From 7e314025bde2a6a5711c055fc41ff972d76f9e3f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 29 Oct 2017 15:34:12 -0600 Subject: [PATCH 0271/3180] Update pkgutils --- pkgutils | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgutils b/pkgutils index 64bc2796..8ae44669 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit 64bc27967e0f2a4c0f54a282baa203d53b1c8c8a +Subproject commit 8ae44669c9069568c911301acb7975926b4ae952 From ff5df44151eb2501ba708e1a6b54b24aa57d84de Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 29 Oct 2017 16:20:46 -0600 Subject: [PATCH 0272/3180] Fix repo script --- repo.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/repo.sh b/repo.sh index c6c8d8f5..c738e234 100755 --- a/repo.sh +++ b/repo.sh @@ -4,18 +4,18 @@ shopt -s nullglob source config.sh -recipes=() +recipes="" for arg in "${@:1}" do if [ "$arg" == "--debug" ] then DEBUG=--debug else - recipes[${#recipes[@]}]="$arg" + recipes+=" $arg" fi done -if [ ${#recipes[@]} = 0 ] +if [ "$recipes" == "" ] then recipes="$(ls -1 recipes)" fi From 7f5280aa83d7aa5f9e17be3084caa805889b2871 Mon Sep 17 00:00:00 2001 From: Paul Sajna Date: Sun, 29 Oct 2017 21:31:03 -0700 Subject: [PATCH 0273/3180] add recipe for termplay --- recipes/termplay/recipe.sh | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 recipes/termplay/recipe.sh diff --git a/recipes/termplay/recipe.sh b/recipes/termplay/recipe.sh new file mode 100644 index 00000000..90729981 --- /dev/null +++ b/recipes/termplay/recipe.sh @@ -0,0 +1,2 @@ +GIT=https://github.com/redox-os/termplay.git +GIT_UPSTREAM=https://github.com/redox-os/termplay.git From c28d39dc136f95877b473ece1577a1c3e6baaa31 Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 30 Oct 2017 08:53:42 -0700 Subject: [PATCH 0274/3180] Add instructions for Arch and other distros --- README.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/README.md b/README.md index 16db9ea5..89ddf37e 100644 --- a/README.md +++ b/README.md @@ -22,3 +22,48 @@ sudo apt update # Install the cross compiler sudo apt install x86-64-unknown-redox-gcc ``` + +### Arch Linux +To install the toolchain, run the following commands: + ```bash + # Clone libc + git clone --recursive git@github.com:redox-os/libc + + # Go to the packages + cd libc/packages/arch + + # Start with binutils + cd binutils + makepkg -si + + # Then autoconf + cd ../autoconf + makepkg -si + + # Then gcc-freestanding + cd ../gcc-freestanding + makepkg -si + + # Then newlib + cd ../newlib + makepkg -si + + # Finally gcc + cd ../gcc + makepkg -si + ``` + +### Other distros/Mac OS X +To install the toolchain, run the following commands: + ```bash + # Clone libc + git clone --recursive git@github.com:redox-os/libc + + # Run the setup script + cd libc + ./setup.sh all + + # Add the tools to your path + export PATH=$PATH:/path/to/libc/build/prefix/bin + ``` + From 2e47dcfaa2117294e74a84ea80c4fdced6520505 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Mon, 30 Oct 2017 19:07:11 +0100 Subject: [PATCH 0275/3180] Add vttest recipe --- recipes/vttest/recipe.sh | 29 ++++++++++++++ recipes/vttest/vttest.patch | 80 +++++++++++++++++++++++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100644 recipes/vttest/recipe.sh create mode 100644 recipes/vttest/vttest.patch diff --git a/recipes/vttest/recipe.sh b/recipes/vttest/recipe.sh new file mode 100644 index 00000000..5ebe7feb --- /dev/null +++ b/recipes/vttest/recipe.sh @@ -0,0 +1,29 @@ +TAR=http://invisible-island.net/datafiles/release/vttest.tar.gz + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + ./configure --host=${HOST} --prefix='' + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} diff --git a/recipes/vttest/vttest.patch b/recipes/vttest/vttest.patch new file mode 100644 index 00000000..8fe39620 --- /dev/null +++ b/recipes/vttest/vttest.patch @@ -0,0 +1,80 @@ +diff -u source_original/main.c source/main.c +--- source_original/main.c 2014-01-16 22:15:19.000000000 +0100 ++++ source/main.c 2017-10-30 18:31:22.365280877 +0100 +@@ -1295,8 +1295,8 @@ + void + initterminal(int pn) + { +- init_ttymodes(pn); +- setup_terminal(""); ++ //init_ttymodes(pn); ++ //setup_terminal(""); + } + + /* Set up my personal prejudices */ +Common subdirectories: source_original/package and source/package +diff -u source_original/unix_io.c source/unix_io.c +--- source_original/unix_io.c 2014-01-16 23:11:39.000000000 +0100 ++++ source/unix_io.c 2017-10-30 18:48:13.927899071 +0100 +@@ -40,17 +40,17 @@ + lval = last_char; + brkrd = FALSE; + reading = TRUE; +-#ifdef HAVE_ALARM +- signal(SIGALRM, give_up); +- alarm(60); /* timeout after 1 minute, in case user's keyboard is hung */ +-#endif ++//#ifdef HAVE_ALARM ++// signal(SIGALRM, give_up); ++// alarm(60); /* timeout after 1 minute, in case user's keyboard is hung */ ++//#endif + if (read(0, &one_byte, (size_t) 1) < 0) + ch = EOF; + else + ch = (int) one_byte; +-#ifdef HAVE_ALARM +- alarm(0); +-#endif ++//#ifdef HAVE_ALARM ++// alarm(0); ++//#endif + reading = FALSE; + #ifdef DEBUG + { +@@ -178,21 +178,21 @@ + void + inflush(void) + { +- int val; +- +-#ifdef HAVE_RDCHK +- while (rdchk(0)) +- read(0, &val, 1); +-#else +-#if USE_FIONREAD +- int l1; +- ioctl(0, FIONREAD, &l1); +- while (l1-- > 0L) +- read(0, &val, (size_t) 1); +-#else +- while (read(2, &val, (size_t) 1) > 0) ; +-#endif +-#endif ++// int val; ++// ++//#ifdef HAVE_RDCHK ++// while (rdchk(0)) ++// read(0, &val, 1); ++//#else ++//#if USE_FIONREAD ++// int l1; ++// ioctl(0, FIONREAD, &l1); ++// while (l1-- > 0L) ++// read(0, &val, (size_t) 1); ++//#else ++// while (read(2, &val, (size_t) 1) > 0) ; ++//#endif ++//#endif + } + + void From 09acaa7f5a2f7cc3f9be3e650e78625e5497e057 Mon Sep 17 00:00:00 2001 From: Dan Robertson Date: Tue, 31 Oct 2017 13:19:02 +0000 Subject: [PATCH 0276/3180] Add documentation for Gentoo Linux --- README.md | 43 +++++++++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 89ddf37e..423512a1 100644 --- a/README.md +++ b/README.md @@ -25,45 +25,60 @@ sudo apt install x86-64-unknown-redox-gcc ### Arch Linux To install the toolchain, run the following commands: - ```bash + ```bash # Clone libc git clone --recursive git@github.com:redox-os/libc - - # Go to the packages + + # Go to the packages cd libc/packages/arch - + # Start with binutils cd binutils makepkg -si - + # Then autoconf cd ../autoconf makepkg -si - + # Then gcc-freestanding cd ../gcc-freestanding makepkg -si - + # Then newlib cd ../newlib makepkg -si - + # Finally gcc cd ../gcc makepkg -si ``` -### Other distros/Mac OS X -To install the toolchain, run the following commands: - ```bash +### Gentoo Linux +```bash # Clone libc git clone --recursive git@github.com:redox-os/libc - + + # Install needed tools + emerge -a =sys-devel/autoconf-2.64 =sys-devel/automake-1.11.6-r2 + + # Run the setup script + cd libc + PREFIX= ./setup.sh all + + # Add the tools to your path + export PATH=$PATH:/bin +``` + +### Other distros/Mac OS X +To install the toolchain, run the following commands: + ```bash + # Clone libc + git clone --recursive git@github.com:redox-os/libc + # Run the setup script cd libc ./setup.sh all - + # Add the tools to your path export PATH=$PATH:/path/to/libc/build/prefix/bin ``` - From 35bb3d3c8ecb7f79dae6b2c1fda40593508c9080 Mon Sep 17 00:00:00 2001 From: Paul Sajna Date: Thu, 2 Nov 2017 19:25:30 -0700 Subject: [PATCH 0277/3180] recipe for vim --- recipes/vim/recipe.sh | 56 +++++++++++ recipes/vim/vim.patch | 211 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 267 insertions(+) create mode 100644 recipes/vim/recipe.sh create mode 100644 recipes/vim/vim.patch diff --git a/recipes/vim/recipe.sh b/recipes/vim/recipe.sh new file mode 100644 index 00000000..c14e95e9 --- /dev/null +++ b/recipes/vim/recipe.sh @@ -0,0 +1,56 @@ +VERSION=8.0.586 +TAR=http://ftp.vim.org/vim/unix/vim-$VERSION.tar.bz2 +BUILD_DEPENDS=(ncurses) + +export AR="${HOST}-ar" +export AS="${HOST}-as" +export CC="${HOST}-gcc" +export CXX="${HOST}-g++" +export LD="${HOST}-ld" +export NM="${HOST}-nm" +export OBJCOPY="${HOST}-objcopy" +export OBJDUMP="${HOST}-objdump" +export RANLIB="${HOST}-ranlib" +export READELF="${HOST}-readelf" +export STRIP="${HOST}-strip" + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="${PWD}/../sysroot" + export LDFLAGS="-L$sysroot/lib" + export CPPFLAGS="-I$sysroot/include" + export vim_cv_toupper_broken=set + export vim_cv_terminfo=no + export vim_cv_tty_group=world + export vim_cv_getcwd_broken=yes + export vim_cv_stat_ignores_slash=no + export vim_cv_memmove_handles_overlap=yes + ./configure --host=${HOST} --prefix=/ --with-tlib=ncurses + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" ${MAKEFLAGS} install + skip=1 +} diff --git a/recipes/vim/vim.patch b/recipes/vim/vim.patch new file mode 100644 index 00000000..26d5ad69 --- /dev/null +++ b/recipes/vim/vim.patch @@ -0,0 +1,211 @@ +diff -ru source/src/channel.c source-new/src/channel.c +--- source/src/channel.c 2017-10-30 17:21:14.784946514 -0700 ++++ source-new/src/channel.c 2017-10-30 17:27:08.234992143 -0700 +@@ -852,29 +852,27 @@ + * actually able to connect. + * We detect a failure to connect when either read and write fds + * are set. Use getsockopt() to find out what kind of failure. */ +-/* +- * if (FD_ISSET(sd, &rfds) || FD_ISSET(sd, &wfds)) +- * { +- * ret = getsockopt(sd, +- * SOL_SOCKET, SO_ERROR, &so_error, &so_error_len); +- * if (ret < 0 || (so_error != 0 +- * && so_error != EWOULDBLOCK +- * && so_error != ECONNREFUSED +- *# ifdef EINPROGRESS +- * && so_error != EINPROGRESS +- *# endif +- * )) +- * { +- * ch_errorn(channel, +- * "channel_open: Connect failed with errno %d", +- * so_error); +- * PERROR(_(e_cannot_connect)); +- * sock_close(sd); +- * channel_free(channel); +- * return NULL; +- * } +- * } +- */ ++ if (FD_ISSET(sd, &rfds) || FD_ISSET(sd, &wfds)) ++ { ++ ret = getsockopt(sd, ++ SOL_SOCKET, SO_ERROR, &so_error, &so_error_len); ++ if (ret < 0 || (so_error != 0 ++ && so_error != EWOULDBLOCK ++ && so_error != ECONNREFUSED ++# ifdef EINPROGRESS ++ && so_error != EINPROGRESS ++# endif ++ )) ++ { ++ ch_errorn(channel, ++ "channel_open: Connect failed with errno %d", ++ so_error); ++ PERROR(_(e_cannot_connect)); ++ sock_close(sd); ++ channel_free(channel); ++ return NULL; ++ } ++ } + + if (FD_ISSET(sd, &wfds) && so_error == 0) + /* Did not detect an error, connection is established. */ +diff -ru source/src/memfile.c source-new/src/memfile.c +--- source/src/memfile.c 2017-10-30 17:24:53.944974807 -0700 ++++ source-new/src/memfile.c 2017-10-30 17:27:08.244992145 -0700 +@@ -596,88 +596,88 @@ + if (hp == NULL || status == FAIL) + mfp->mf_dirty = FALSE; + +-/* if ((flags & MFS_FLUSH) && *p_sws != NUL)*/ +- /*{*/ +-/*#if defined(UNIX)*/ +-/*# ifdef HAVE_FSYNC*/ ++ if ((flags & MFS_FLUSH) && *p_sws != NUL) ++ { ++#if defined(UNIX) ++# ifdef HAVE_FSYNC + /* + * most Unixes have the very useful fsync() function, just what we need. + */ +- /*if (STRCMP(p_sws, "fsync") == 0)*/ +- /*{*/ +- /*if (fsync(mfp->mf_fd))*/ +- /*status = FAIL;*/ +- /*}*/ +- /*else*/ +-/*# endif*/ +- /*[> OpenNT is strictly POSIX (Benzinger) <]*/ +- /*[> Tandem/Himalaya NSK-OSS doesn't have sync() <]*/ +- /*[> No sync() on Stratus VOS <]*/ +-/*# if defined(__OPENNT) || defined(__TANDEM) || defined(__VOS__)*/ +- /*fflush(NULL);*/ +-/*# else*/ +- /*//sync();*/ +-/*# endif*/ +-/*#endif*/ +-/*#ifdef VMS*/ +- /*if (STRCMP(p_sws, "fsync") == 0)*/ +- /*{*/ +- /*if (fsync(mfp->mf_fd))*/ +- /*status = FAIL;*/ +- /*}*/ +-/*#endif*/ +-/*#ifdef SYNC_DUP_CLOSE*/ ++ if (STRCMP(p_sws, "fsync") == 0) ++ { ++ if (fsync(mfp->mf_fd)) ++ status = FAIL; ++ } ++ else ++# endif ++ /* OpenNT is strictly POSIX (Benzinger) */ ++ /* Tandem/Himalaya NSK-OSS doesn't have sync() */ ++ /* No sync() on Stratus VOS */ ++# if defined(__OPENNT) || defined(__TANDEM) || defined(__VOS__) ++ fflush(NULL); ++# else ++ sync(); ++# endif ++#endif ++#ifdef VMS ++ if (STRCMP(p_sws, "fsync") == 0) ++ { ++ if (fsync(mfp->mf_fd)) ++ status = FAIL; ++ } ++#endif ++#ifdef SYNC_DUP_CLOSE + /* + * Win32 is a bit more work: Duplicate the file handle and close it. + * This should flush the file to disk. + */ +- /*if ((fd = dup(mfp->mf_fd)) >= 0)*/ +- /*close(fd);*/ +-/*#endif*/ +-/*#ifdef AMIGA*/ +-/*# if defined(__AROS__) || defined(__amigaos4__)*/ +- /*if (fsync(mfp->mf_fd) != 0)*/ +- /*status = FAIL;*/ +-/*# else*/ ++ if ((fd = dup(mfp->mf_fd)) >= 0) ++ close(fd); ++#endif ++#ifdef AMIGA ++# if defined(__AROS__) || defined(__amigaos4__) ++ if (fsync(mfp->mf_fd) != 0) ++ status = FAIL; ++# else + /* + * Flush() only exists for AmigaDos 2.0. + * For 1.3 it should be done with close() + open(), but then the risk + * is that the open() may fail and lose the file.... + */ +-/*# ifdef FEAT_ARP*/ +- /*if (dos2)*/ +-/*# endif*/ +-/*# ifdef SASC*/ +- /*{*/ +- /*struct UFB *fp = chkufb(mfp->mf_fd);*/ ++# ifdef FEAT_ARP ++ if (dos2) ++# endif ++# ifdef SASC ++ { ++ struct UFB *fp = chkufb(mfp->mf_fd); + +- /*if (fp != NULL)*/ +- /*Flush(fp->ufbfh);*/ +- /*}*/ +-/*# else*/ +-/*# if defined(_DCC) || defined(__GNUC__) || defined(__MORPHOS__)*/ +- /*{*/ +-/*# if defined(__GNUC__) && !defined(__MORPHOS__) && defined(__libnix__)*/ ++ if (fp != NULL) ++ Flush(fp->ufbfh); ++ } ++# else ++# if defined(_DCC) || defined(__GNUC__) || defined(__MORPHOS__) ++ { ++# if defined(__GNUC__) && !defined(__MORPHOS__) && defined(__libnix__) + /* Have function (in libnix at least), + * but ain't got no prototype anywhere. */ +- /*extern unsigned long fdtofh(int filedescriptor);*/ +-/*# endif*/ +-/*# if !defined(__libnix__)*/ +- /*fflush(NULL);*/ +-/*# else*/ +- /*BPTR fh = (BPTR)fdtofh(mfp->mf_fd);*/ ++ extern unsigned long fdtofh(int filedescriptor); ++# endif ++# if !defined(__libnix__) ++ fflush(NULL); ++# else ++ BPTR fh = (BPTR)fdtofh(mfp->mf_fd); + +- /*if (fh != 0)*/ +- /*Flush(fh);*/ +-/*# endif*/ +- /*}*/ +-/*# else [> assume Manx <]*/ +- /*Flush(_devtab[mfp->mf_fd].fd);*/ +-/*# endif*/ +-/*# endif*/ +-/*# endif*/ +-/*#endif [> AMIGA <]*/ +- /*}*/ ++ if (fh != 0) ++ Flush(fh); ++# endif ++ } ++# else /* assume Manx */ ++ Flush(_devtab[mfp->mf_fd].fd); ++# endif ++# endif ++# endif ++#endif /* AMIGA */ ++ } + + got_int |= got_int_save; From e62a6b8922e6decc1adb0c4531ed3ef37753685c Mon Sep 17 00:00:00 2001 From: Paul Sajna Date: Thu, 2 Nov 2017 19:26:24 -0700 Subject: [PATCH 0278/3180] recipe for jansson --- recipes/jansson/recipe.sh | 49 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 recipes/jansson/recipe.sh diff --git a/recipes/jansson/recipe.sh b/recipes/jansson/recipe.sh new file mode 100644 index 00000000..9bfb3121 --- /dev/null +++ b/recipes/jansson/recipe.sh @@ -0,0 +1,49 @@ +VERSION=2.10 +TAR=http://www.digip.org/jansson/releases/jansson-$VERSION.tar.gz + +export AR="${HOST}-ar" +export AS="${HOST}-as" +export CC="${HOST}-gcc" +export CXX="${HOST}-g++" +export LD="${HOST}-ld" +export NM="${HOST}-nm" +export OBJCOPY="${HOST}-objcopy" +export OBJDUMP="${HOST}-objdump" +export RANLIB="${HOST}-ranlib" +export READELF="${HOST}-readelf" +export STRIP="${HOST}-strip" + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="${PWD}/../sysroot" + export LDFLAGS="-L$sysroot/lib" + export CPPFLAGS="-I$sysroot/include" + ./configure --host=${HOST} --prefix=/ + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" ${MAKEFLAGS} install + skip=1 +} From dcdab6d213fbc01f02d44aab678bf60a75884b85 Mon Sep 17 00:00:00 2001 From: Paul Sajna Date: Thu, 2 Nov 2017 19:28:41 -0700 Subject: [PATCH 0279/3180] recipe for ssh --- recipes/ssh/recipe.sh | 50 + recipes/ssh/ssh.patch | 4082 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 4132 insertions(+) create mode 100644 recipes/ssh/recipe.sh create mode 100644 recipes/ssh/ssh.patch diff --git a/recipes/ssh/recipe.sh b/recipes/ssh/recipe.sh new file mode 100644 index 00000000..7f968349 --- /dev/null +++ b/recipes/ssh/recipe.sh @@ -0,0 +1,50 @@ +VERSION=7.6p1 +TAR=http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-$VERSION.tar.gz +BUILD_DEPENDS=(zlib openssl1.0 newlib) + +export AR="${HOST}-ar" +export AS="${HOST}-as" +export CC="${HOST}-gcc" +export CXX="${HOST}-g++" +export LD="${HOST}-gcc" +export NM="${HOST}-nm" +export OBJCOPY="${HOST}-objcopy" +export OBJDUMP="${HOST}-objdump" +export RANLIB="${HOST}-ranlib" +export READELF="${HOST}-readelf" +export STRIP="${HOST}-strip" + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="${PWD}/../sysroot" + export LDFLAGS="-L$sysroot/lib" + export CPPFLAGS="-I$sysroot/include" + ./configure --host=${HOST} --prefix=/ + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} diff --git a/recipes/ssh/ssh.patch b/recipes/ssh/ssh.patch new file mode 100644 index 00000000..6774b660 --- /dev/null +++ b/recipes/ssh/ssh.patch @@ -0,0 +1,4082 @@ +Only in source-new: addrmatch.o +diff -ru source/atomicio.c source-new/atomicio.c +--- source/atomicio.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/atomicio.c 2017-11-02 18:31:51.855545895 -0700 +@@ -116,7 +116,7 @@ + + #ifndef BROKEN_READV_COMPARISON + pfd.fd = fd; +- pfd.events = f == readv ? POLLIN : POLLOUT; ++ //pfd.events = f == readv ? POLLIN : POLLOUT; + #endif + for (; iovcnt > 0 && iov[0].iov_len > 0;) { + res = (f) (fd, iov, iovcnt); +iff -ru source/auth-pam.c source-new/auth-pam.c +--- source/auth-pam.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/auth-pam.c 2017-11-02 18:31:51.898879152 -0700 +@@ -128,6 +128,10 @@ + typedef pthread_t sp_pthread_t; + #else + typedef pid_t sp_pthread_t; ++# define pthread_create(a, b, c, d) _ssh_compat_pthread_create(a, b, c, d) ++# define pthread_exit(a) _ssh_compat_pthread_exit(a) ++# define pthread_cancel(a) _ssh_compat_pthread_cancel(a) ++# define pthread_join(a, b) _ssh_compat_pthread_join(a, b) + #endif + + struct pam_ctxt { +diff -ru source/channels.c source-new/channels.c +--- source/channels.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/channels.c 2017-11-02 18:31:51.902212479 -0700 +@@ -1556,14 +1556,16 @@ + + debug("X11 connection requested."); + addrlen = sizeof(addr); +- newsock = accept(c->sock, (struct sockaddr *)&addr, &addrlen); +- if (c->single_connection) { +- oerrno = errno; +- debug2("single_connection: closing X11 listener."); +- channel_close_fd(ssh, &c->sock); +- chan_mark_dead(ssh, c); +- errno = oerrno; +- } ++ /* ++ *newsock = accept(c->sock, (struct sockaddr *)&addr, &addrlen); ++ *if (c->single_connection) { ++ * oerrno = errno; ++ * debug2("single_connection: closing X11 listener."); ++ * channel_close_fd(ssh, &c->sock); ++ * chan_mark_dead(ssh, c); ++ * errno = oerrno; ++ *} ++ */ + if (newsock < 0) { + if (errno != EINTR && errno != EWOULDBLOCK && + errno != ECONNABORTED) +@@ -1677,8 +1679,8 @@ + * Set socket options. + * Allow local port reuse in TIME_WAIT. + */ +- if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) == -1) +- error("setsockopt SO_REUSEADDR fd %d: %s", fd, strerror(errno)); ++// if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) == -1) ++// error("setsockopt SO_REUSEADDR fd %d: %s", fd, strerror(errno)); + } + + void +@@ -1724,15 +1726,17 @@ + } + + addrlen = sizeof(addr); +- newsock = accept(c->sock, (struct sockaddr *)&addr, &addrlen); +- if (newsock < 0) { +- if (errno != EINTR && errno != EWOULDBLOCK && +- errno != ECONNABORTED) +- error("accept: %.100s", strerror(errno)); +- if (errno == EMFILE || errno == ENFILE) +- c->notbefore = monotime() + 1; +- return; +- } ++ /* ++ *newsock = accept(c->sock, (struct sockaddr *)&addr, &addrlen); ++ *if (newsock < 0) { ++ * if (errno != EINTR && errno != EWOULDBLOCK && ++ * errno != ECONNABORTED) ++ * error("accept: %.100s", strerror(errno)); ++ * if (errno == EMFILE || errno == ENFILE) ++ * c->notbefore = monotime() + 1; ++ * return; ++ *} ++ */ + if (c->host_port != PORT_STREAMLOCAL) + set_nodelay(newsock); + nc = channel_new(ssh, rtype, nextstate, newsock, newsock, -1, +@@ -1763,13 +1767,15 @@ + return; + + addrlen = sizeof(addr); +- newsock = accept(c->sock, (struct sockaddr *)&addr, &addrlen); +- if (newsock < 0) { +- error("accept from auth socket: %.100s", strerror(errno)); +- if (errno == EMFILE || errno == ENFILE) +- c->notbefore = monotime() + 1; +- return; +- } ++ /* ++ *newsock = accept(c->sock, (struct sockaddr *)&addr, &addrlen); ++ *if (newsock < 0) { ++ * error("accept from auth socket: %.100s", strerror(errno)); ++ * if (errno == EMFILE || errno == ENFILE) ++ * c->notbefore = monotime() + 1; ++ * return; ++ *} ++ */ + nc = channel_new(ssh, "accepted auth socket", + SSH_CHANNEL_OPENING, newsock, newsock, -1, + c->local_window_max, c->local_maxpacket, +@@ -1792,10 +1798,12 @@ + fatal(":%s: channel %d: no remote id", __func__, c->self); + /* for rdynamic the OPEN_CONFIRMATION has been sent already */ + isopen = (c->type == SSH_CHANNEL_RDYNAMIC_FINISH); +- if (getsockopt(c->sock, SOL_SOCKET, SO_ERROR, &err, &sz) < 0) { +- err = errno; +- error("getsockopt SO_ERROR failed"); +- } ++ /* ++ *if (getsockopt(c->sock, SOL_SOCKET, SO_ERROR, &err, &sz) < 0) { ++ * err = errno; ++ * error("getsockopt SO_ERROR failed"); ++ *} ++ */ + if (err == 0) { + debug("channel %d: connected to %s port %d", + c->self, c->connect_ctx.host, c->connect_ctx.port); +@@ -2234,13 +2242,15 @@ + */ + memset(&addr, 0, sizeof(addr)); + addrlen = sizeof(addr); +- if ((newsock = accept(c->sock, (struct sockaddr*)&addr, +- &addrlen)) == -1) { +- error("%s accept: %s", __func__, strerror(errno)); +- if (errno == EMFILE || errno == ENFILE) +- c->notbefore = monotime() + 1; +- return; +- } ++ /* ++ *if ((newsock = accept(c->sock, (struct sockaddr*)&addr, ++ * &addrlen)) == -1) { ++ * error("%s accept: %s", __func__, strerror(errno)); ++ * if (errno == EMFILE || errno == ENFILE) ++ * c->notbefore = monotime() + 1; ++ * return; ++ *} ++ */ + + if (getpeereid(newsock, &euid, &egid) < 0) { + error("%s getpeereid failed: %s", __func__, +@@ -4318,8 +4328,10 @@ + if (sc->channels[i] == NULL || !sc->channels[i]->client_tty || + sc->channels[i]->type != SSH_CHANNEL_OPEN) + continue; +- if (ioctl(sc->channels[i]->rfd, TIOCGWINSZ, &ws) < 0) +- continue; ++ /* ++ *if (ioctl(sc->channels[i]->rfd, TIOCGWINSZ, &ws) < 0) ++ * continue; ++ */ + channel_request_start(ssh, i, "window-change", 0); + if ((r = sshpkt_put_u32(ssh, (u_int)ws.ws_col)) != 0 || + (r = sshpkt_put_u32(ssh, (u_int)ws.ws_row)) != 0 || +diff -ru source/cipher.c source-new/cipher.c +--- source/cipher.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/cipher.c 2017-11-02 18:31:51.902212479 -0700 +@@ -297,7 +297,10 @@ + goto out; + } + } +- if (EVP_CipherInit(cc->evp, NULL, (u_char *)key, NULL, -1) == 0) { ++ /* in OpenSSL 1.1.0, EVP_CipherInit clears all previous setups; ++ use EVP_CipherInit_ex for augmenting */ ++ if (EVP_CipherInit_ex(cc->evp, NULL, NULL, (u_char *)key, NULL, -1) == 0) ++ { + ret = SSH_ERR_LIBCRYPTO_ERROR; + goto out; + } +@@ -486,7 +489,7 @@ + len, iv)) + return SSH_ERR_LIBCRYPTO_ERROR; + } else +- memcpy(iv, cc->evp->iv, len); ++ memcpy(iv, EVP_CIPHER_CTX_iv(cc->evp), len); + #endif + return 0; + } +@@ -520,14 +523,19 @@ + EVP_CTRL_GCM_SET_IV_FIXED, -1, (void *)iv)) + return SSH_ERR_LIBCRYPTO_ERROR; + } else +- memcpy(cc->evp->iv, iv, evplen); ++ memcpy(EVP_CIPHER_CTX_iv(cc->evp), iv, evplen); + #endif + return 0; + } + + #ifdef WITH_OPENSSL +-#define EVP_X_STATE(evp) (evp)->cipher_data +-#define EVP_X_STATE_LEN(evp) (evp)->cipher->ctx_size ++# if OPENSSL_VERSION_NUMBER >= 0x10100000UL ++#define EVP_X_STATE(evp) EVP_CIPHER_CTX_get_cipher_data(evp) ++#define EVP_X_STATE_LEN(evp) EVP_CIPHER_impl_ctx_size(EVP_CIPHER_CTX_cipher(evp)) ++# else ++#define EVP_X_STATE(evp) (evp).cipher_data ++#define EVP_X_STATE_LEN(evp) (evp).cipher->ctx_size ++# endif + #endif + + int +diff -ru source/cipher.h source-new/cipher.h +--- source/cipher.h 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/cipher.h 2017-11-02 18:31:51.902212479 -0700 +@@ -46,7 +46,18 @@ + #define CIPHER_DECRYPT 0 + + struct sshcipher; ++#if 0 ++struct sshcipher_ctx { ++ int plaintext; ++ int encrypt; ++ EVP_CIPHER_CTX *evp; ++ struct chachapoly_ctx cp_ctx; /* XXX union with evp? */ ++ struct aesctr_ctx ac_ctx; /* XXX union with evp? */ ++ const struct sshcipher *cipher; ++}; ++#else + struct sshcipher_ctx; ++#endif + + const struct sshcipher *cipher_by_name(const char *); + const char *cipher_warning_message(const struct sshcipher_ctx *); +diff -ru source/clientloop.c source-new/clientloop.c +--- source/clientloop.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/clientloop.c 2017-11-02 18:31:51.902212479 -0700 +@@ -2182,8 +2182,8 @@ + struct winsize ws; + + /* Store window size in the packet. */ +- if (ioctl(in_fd, TIOCGWINSZ, &ws) < 0) +- memset(&ws, 0, sizeof(ws)); ++ //if (ioctl(in_fd, TIOCGWINSZ, &ws) < 0) ++ // memset(&ws, 0, sizeof(ws)); + + channel_request_start(ssh, id, "pty-req", 1); + client_expect_confirm(ssh, id, "PTY allocation", CONFIRM_TTY); +diff -ru source/config.sub source-new/config.sub +--- source/config.sub 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/config.sub 2017-11-02 18:31:51.908879134 -0700 +@@ -1381,7 +1381,7 @@ + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. +- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ ++ -gnu* | -bsd* | -redox* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ +diff -ru source/configure source-new/configure +--- source/configure 2017-10-03 09:06:08.000000000 -0700 ++++ source-new/configure 2017-11-02 18:31:51.908879134 -0700 +@@ -12688,7 +12688,6 @@ + 100*) ;; # 1.0.x + 200*) ;; # LibreSSL + *) +- as_fn_error $? "OpenSSL >= 1.1.0 is not yet supported (have \"$ssl_library_ver\")" "$LINENO" 5 + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ssl_library_ver" >&5 +diff -ru source/dh.c source-new/dh.c +--- source/dh.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/dh.c 2017-11-02 18:31:51.912212462 -0700 +@@ -212,14 +212,15 @@ + /* diffie-hellman-groupN-sha1 */ + + int +-dh_pub_is_valid(DH *dh, BIGNUM *dh_pub) ++dh_pub_is_valid(const DH *dh, const BIGNUM *dh_pub) + { + int i; + int n = BN_num_bits(dh_pub); + int bits_set = 0; + BIGNUM *tmp; ++ const BIGNUM *p; + +- if (dh_pub->neg) { ++ if (BN_is_negative(dh_pub)) { + logit("invalid public DH value: negative"); + return 0; + } +@@ -232,7 +233,8 @@ + error("%s: BN_new failed", __func__); + return 0; + } +- if (!BN_sub(tmp, dh->p, BN_value_one()) || ++ DH_get0_pqg(dh, &p, NULL, NULL); ++ if (!BN_sub(tmp, p, BN_value_one()) || + BN_cmp(dh_pub, tmp) != -1) { /* pub_exp > p-2 */ + BN_clear_free(tmp); + logit("invalid public DH value: >= p-1"); +@@ -243,14 +245,14 @@ + for (i = 0; i <= n; i++) + if (BN_is_bit_set(dh_pub, i)) + bits_set++; +- debug2("bits set: %d/%d", bits_set, BN_num_bits(dh->p)); ++ debug2("bits set: %d/%d", bits_set, BN_num_bits(p)); + + /* + * if g==2 and bits_set==1 then computing log_g(dh_pub) is trivial + */ + if (bits_set < 4) { + logit("invalid public DH value (%d/%d)", +- bits_set, BN_num_bits(dh->p)); ++ bits_set, BN_num_bits(p)); + return 0; + } + return 1; +@@ -260,9 +262,13 @@ + dh_gen_key(DH *dh, int need) + { + int pbits; ++ const BIGNUM *p, *pub_key; ++ BIGNUM *priv_key; + +- if (need < 0 || dh->p == NULL || +- (pbits = BN_num_bits(dh->p)) <= 0 || ++ DH_get0_pqg(dh, &p, NULL, NULL); ++ ++ if (need < 0 || p == NULL || ++ (pbits = BN_num_bits(p)) <= 0 || + need > INT_MAX / 2 || 2 * need > pbits) + return SSH_ERR_INVALID_ARGUMENT; + if (need < 256) +@@ -271,10 +277,13 @@ + * Pollard Rho, Big step/Little Step attacks are O(sqrt(n)), + * so double requested need here. + */ +- dh->length = MINIMUM(need * 2, pbits - 1); +- if (DH_generate_key(dh) == 0 || +- !dh_pub_is_valid(dh, dh->pub_key)) { +- BN_clear_free(dh->priv_key); ++ DH_set_length(dh, MIN(need * 2, pbits - 1)); ++ if (DH_generate_key(dh) == 0) { ++ return SSH_ERR_LIBCRYPTO_ERROR; ++ } ++ DH_get0_key(dh, &pub_key, &priv_key); ++ if (!dh_pub_is_valid(dh, pub_key)) { ++ BN_clear(priv_key); + return SSH_ERR_LIBCRYPTO_ERROR; + } + return 0; +@@ -283,16 +292,27 @@ + DH * + dh_new_group_asc(const char *gen, const char *modulus) + { +- DH *dh; ++ DH *dh = NULL; ++ BIGNUM *p=NULL, *g=NULL; + +- if ((dh = DH_new()) == NULL) +- return NULL; +- if (BN_hex2bn(&dh->p, modulus) == 0 || +- BN_hex2bn(&dh->g, gen) == 0) { +- DH_free(dh); +- return NULL; ++ if ((dh = DH_new()) == NULL || ++ (p = BN_new()) == NULL || ++ (g = BN_new()) == NULL) ++ goto null; ++ if (BN_hex2bn(&p, modulus) == 0 || ++ BN_hex2bn(&g, gen) == 0) { ++ goto null; + } ++ if (DH_set0_pqg(dh, p, NULL, g) == 0) { ++ goto null; ++ } ++ p = g = NULL; + return (dh); ++null: ++ BN_free(p); ++ BN_free(g); ++ DH_free(dh); ++ return NULL; + } + + /* +@@ -307,8 +327,8 @@ + + if ((dh = DH_new()) == NULL) + return NULL; +- dh->p = modulus; +- dh->g = gen; ++ if (DH_set0_pqg(dh, modulus, NULL, gen) == 0) ++ return NULL; + + return (dh); + } +diff -ru source/dh.h source-new/dh.h +--- source/dh.h 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/dh.h 2017-11-02 18:31:51.912212462 -0700 +@@ -42,7 +42,7 @@ + DH *dh_new_group_fallback(int); + + int dh_gen_key(DH *, int); +-int dh_pub_is_valid(DH *, BIGNUM *); ++int dh_pub_is_valid(const DH *, const BIGNUM *); + + u_int dh_estimate(int); + +diff -ru source/digest-openssl.c source-new/digest-openssl.c +--- source/digest-openssl.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/digest-openssl.c 2017-11-02 18:31:51.912212462 -0700 +@@ -43,7 +43,7 @@ + + struct ssh_digest_ctx { + int alg; +- EVP_MD_CTX mdctx; ++ EVP_MD_CTX *mdctx; + }; + + struct ssh_digest { +@@ -106,20 +106,21 @@ + size_t + ssh_digest_blocksize(struct ssh_digest_ctx *ctx) + { +- return EVP_MD_CTX_block_size(&ctx->mdctx); ++ return EVP_MD_CTX_block_size(ctx->mdctx); + } + + struct ssh_digest_ctx * + ssh_digest_start(int alg) + { + const struct ssh_digest *digest = ssh_digest_by_alg(alg); +- struct ssh_digest_ctx *ret; ++ struct ssh_digest_ctx *ret = NULL; + + if (digest == NULL || ((ret = calloc(1, sizeof(*ret))) == NULL)) + return NULL; + ret->alg = alg; +- EVP_MD_CTX_init(&ret->mdctx); +- if (EVP_DigestInit_ex(&ret->mdctx, digest->mdfunc(), NULL) != 1) { ++ if ((ret->mdctx = EVP_MD_CTX_new()) == NULL || ++ EVP_DigestInit_ex(ret->mdctx, digest->mdfunc(), NULL) != 1) { ++ EVP_MD_CTX_free(ret->mdctx); + free(ret); + return NULL; + } +@@ -132,7 +133,7 @@ + if (from->alg != to->alg) + return SSH_ERR_INVALID_ARGUMENT; + /* we have bcopy-style order while openssl has memcpy-style */ +- if (!EVP_MD_CTX_copy_ex(&to->mdctx, &from->mdctx)) ++ if (!EVP_MD_CTX_copy_ex(to->mdctx, from->mdctx)) + return SSH_ERR_LIBCRYPTO_ERROR; + return 0; + } +@@ -140,7 +141,7 @@ + int + ssh_digest_update(struct ssh_digest_ctx *ctx, const void *m, size_t mlen) + { +- if (EVP_DigestUpdate(&ctx->mdctx, m, mlen) != 1) ++ if (EVP_DigestUpdate(ctx->mdctx, m, mlen) != 1) + return SSH_ERR_LIBCRYPTO_ERROR; + return 0; + } +@@ -161,7 +162,7 @@ + return SSH_ERR_INVALID_ARGUMENT; + if (dlen < digest->digest_len) /* No truncation allowed */ + return SSH_ERR_INVALID_ARGUMENT; +- if (EVP_DigestFinal_ex(&ctx->mdctx, d, &l) != 1) ++ if (EVP_DigestFinal_ex(ctx->mdctx, d, &l) != 1) + return SSH_ERR_LIBCRYPTO_ERROR; + if (l != digest->digest_len) /* sanity */ + return SSH_ERR_INTERNAL_ERROR; +@@ -172,7 +173,7 @@ + ssh_digest_free(struct ssh_digest_ctx *ctx) + { + if (ctx != NULL) { +- EVP_MD_CTX_cleanup(&ctx->mdctx); ++ EVP_MD_CTX_free(ctx->mdctx); + explicit_bzero(ctx, sizeof(*ctx)); + free(ctx); + } +diff -ru source/groupaccess.c source-new/groupaccess.c +--- source/groupaccess.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/groupaccess.c 2017-11-02 18:31:51.915545790 -0700 +@@ -67,8 +67,10 @@ + if (getgrouplist(user, base, groups_bygid, &ngroups) == -1) + logit("getgrouplist: groups list too small"); + for (i = 0, j = 0; i < ngroups; i++) +- if ((gr = getgrgid(groups_bygid[i])) != NULL) +- groups_byname[j++] = xstrdup(gr->gr_name); ++ /* ++ *if ((gr = getgrgid(groups_bygid[i])) != NULL) ++ * groups_byname[j++] = xstrdup(gr->gr_name); ++ */ + free(groups_bygid); + return (ngroups = j); + } +diff -ru source/kexdhc.c source-new/kexdhc.c +--- source/kexdhc.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/kexdhc.c 2017-11-02 18:31:51.918879116 -0700 +@@ -81,11 +81,16 @@ + goto out; + } + debug("sending SSH2_MSG_KEXDH_INIT"); +- if ((r = dh_gen_key(kex->dh, kex->we_need * 8)) != 0 || +- (r = sshpkt_start(ssh, SSH2_MSG_KEXDH_INIT)) != 0 || +- (r = sshpkt_put_bignum2(ssh, kex->dh->pub_key)) != 0 || ++ { ++ const BIGNUM *pub_key; ++ if ((r = dh_gen_key(kex->dh, kex->we_need * 8)) != 0) ++ goto out; ++ DH_get0_key(kex->dh, &pub_key, NULL); ++ if ((r = sshpkt_start(ssh, SSH2_MSG_KEXDH_INIT)) != 0 || ++ (r = sshpkt_put_bignum2(ssh, pub_key)) != 0 || + (r = sshpkt_send(ssh)) != 0) + goto out; ++ } + #ifdef DEBUG_KEXDH + DHparams_print_fp(stderr, kex->dh); + fprintf(stderr, "pub= "); +@@ -169,6 +174,9 @@ + + /* calc and verify H */ + hashlen = sizeof(hash); ++ { ++ const BIGNUM *pub_key; ++ DH_get0_key(kex->dh, &pub_key, NULL); + if ((r = kex_dh_hash( + kex->hash_alg, + kex->client_version_string, +@@ -176,11 +184,13 @@ + sshbuf_ptr(kex->my), sshbuf_len(kex->my), + sshbuf_ptr(kex->peer), sshbuf_len(kex->peer), + server_host_key_blob, sbloblen, +- kex->dh->pub_key, ++ pub_key, + dh_server_pub, + shared_secret, +- hash, &hashlen)) != 0) ++ hash, &hashlen)) != 0) { + goto out; ++ } ++ } + + if ((r = sshkey_verify(server_host_key, signature, slen, hash, hashlen, + ssh->compat)) != 0) +diff -ru source/kexdhs.c source-new/kexdhs.c +--- source/kexdhs.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/kexdhs.c 2017-11-02 18:31:51.918879116 -0700 +@@ -87,6 +87,10 @@ + ssh_dispatch_set(ssh, SSH2_MSG_KEXDH_INIT, &input_kex_dh_init); + r = 0; + out: ++ if (r != 0) { ++ if (kex->dh) DH_free(kex->dh); ++ kex->dh = NULL; ++ } + return r; + } + +@@ -163,6 +167,9 @@ + goto out; + /* calc H */ + hashlen = sizeof(hash); ++ { ++ const BIGNUM *pub_key; ++ DH_get0_key(kex->dh, &pub_key, NULL); + if ((r = kex_dh_hash( + kex->hash_alg, + kex->client_version_string, +@@ -171,10 +178,12 @@ + sshbuf_ptr(kex->my), sshbuf_len(kex->my), + server_host_key_blob, sbloblen, + dh_client_pub, +- kex->dh->pub_key, ++ pub_key, + shared_secret, +- hash, &hashlen)) != 0) ++ hash, &hashlen)) != 0) { + goto out; ++ } ++ } + + /* save session id := H */ + if (kex->session_id == NULL) { +@@ -195,12 +204,17 @@ + /* destroy_sensitive_data(); */ + + /* send server hostkey, DH pubkey 'f' and singed H */ ++ { ++ const BIGNUM *pub_key; ++ DH_get0_key(kex->dh, &pub_key, NULL); + if ((r = sshpkt_start(ssh, SSH2_MSG_KEXDH_REPLY)) != 0 || + (r = sshpkt_put_string(ssh, server_host_key_blob, sbloblen)) != 0 || +- (r = sshpkt_put_bignum2(ssh, kex->dh->pub_key)) != 0 || /* f */ ++ (r = sshpkt_put_bignum2(ssh, pub_key)) != 0 || /* f */ + (r = sshpkt_put_string(ssh, signature, slen)) != 0 || +- (r = sshpkt_send(ssh)) != 0) ++ (r = sshpkt_send(ssh)) != 0) { + goto out; ++ } ++ } + + if ((r = kex_derive_keys_bn(ssh, hash, hashlen, shared_secret)) == 0) + r = kex_send_newkeys(ssh); +diff -ru source/kexgexc.c source-new/kexgexc.c +--- source/kexgexc.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/kexgexc.c 2017-11-02 18:31:51.918879116 -0700 +@@ -118,11 +118,17 @@ + p = g = NULL; /* belong to kex->dh now */ + + /* generate and send 'e', client DH public key */ +- if ((r = dh_gen_key(kex->dh, kex->we_need * 8)) != 0 || +- (r = sshpkt_start(ssh, SSH2_MSG_KEX_DH_GEX_INIT)) != 0 || +- (r = sshpkt_put_bignum2(ssh, kex->dh->pub_key)) != 0 || +- (r = sshpkt_send(ssh)) != 0) ++ { ++ const BIGNUM *pub_key; ++ if ((r = dh_gen_key(kex->dh, kex->we_need * 8)) != 0) ++ goto out; ++ DH_get0_key(kex->dh, &pub_key, NULL); ++ if ((r = sshpkt_start(ssh, SSH2_MSG_KEX_DH_GEX_INIT)) != 0 || ++ (r = sshpkt_put_bignum2(ssh, pub_key)) != 0 || ++ (r = sshpkt_send(ssh)) != 0) { + goto out; ++ } ++ } + debug("SSH2_MSG_KEX_DH_GEX_INIT sent"); + #ifdef DEBUG_KEXDH + DHparams_print_fp(stderr, kex->dh); +@@ -134,10 +140,12 @@ + ssh_dispatch_set(ssh, SSH2_MSG_KEX_DH_GEX_REPLY, &input_kex_dh_gex_reply); + r = 0; + out: +- if (p) ++ if (r != 0) { + BN_clear_free(p); +- if (g) + BN_clear_free(g); ++ DH_free(kex->dh); ++ kex->dh = NULL; ++ } + return r; + } + +@@ -214,6 +222,10 @@ + + /* calc and verify H */ + hashlen = sizeof(hash); ++ { ++ const BIGNUM *p, *g, *pub_key; ++ DH_get0_pqg(kex->dh, &p, NULL, &g); ++ DH_get0_key(kex->dh, &pub_key, NULL); + if ((r = kexgex_hash( + kex->hash_alg, + kex->client_version_string, +@@ -222,12 +234,14 @@ + sshbuf_ptr(kex->peer), sshbuf_len(kex->peer), + server_host_key_blob, sbloblen, + kex->min, kex->nbits, kex->max, +- kex->dh->p, kex->dh->g, +- kex->dh->pub_key, ++ p, g, ++ pub_key, + dh_server_pub, + shared_secret, +- hash, &hashlen)) != 0) ++ hash, &hashlen)) != 0) { + goto out; ++ } ++ } + + if ((r = sshkey_verify(server_host_key, signature, slen, hash, + hashlen, ssh->compat)) != 0) +diff -ru source/kexgexs.c source-new/kexgexs.c +--- source/kexgexs.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/kexgexs.c 2017-11-02 18:31:51.918879116 -0700 +@@ -101,11 +101,16 @@ + goto out; + } + debug("SSH2_MSG_KEX_DH_GEX_GROUP sent"); ++ { ++ const BIGNUM *p, *g; ++ DH_get0_pqg(kex->dh, &p, NULL, &g); + if ((r = sshpkt_start(ssh, SSH2_MSG_KEX_DH_GEX_GROUP)) != 0 || +- (r = sshpkt_put_bignum2(ssh, kex->dh->p)) != 0 || +- (r = sshpkt_put_bignum2(ssh, kex->dh->g)) != 0 || +- (r = sshpkt_send(ssh)) != 0) ++ (r = sshpkt_put_bignum2(ssh, p)) != 0 || ++ (r = sshpkt_put_bignum2(ssh, g)) != 0 || ++ (r = sshpkt_send(ssh)) != 0) { + goto out; ++ } ++ } + + /* Compute our exchange value in parallel with the client */ + if ((r = dh_gen_key(kex->dh, kex->we_need * 8)) != 0) +@@ -115,6 +120,10 @@ + ssh_dispatch_set(ssh, SSH2_MSG_KEX_DH_GEX_INIT, &input_kex_dh_gex_init); + r = 0; + out: ++ if (r != 0) { ++ DH_free(kex->dh); ++ kex->dh = NULL; ++ } + return r; + } + +@@ -191,6 +200,10 @@ + goto out; + /* calc H */ + hashlen = sizeof(hash); ++ { ++ const BIGNUM *p, *g, *pub_key; ++ DH_get0_pqg(kex->dh, &p, NULL, &g); ++ DH_get0_key(kex->dh, &pub_key, NULL); + if ((r = kexgex_hash( + kex->hash_alg, + kex->client_version_string, +@@ -199,12 +212,14 @@ + sshbuf_ptr(kex->my), sshbuf_len(kex->my), + server_host_key_blob, sbloblen, + kex->min, kex->nbits, kex->max, +- kex->dh->p, kex->dh->g, ++ p, g, + dh_client_pub, +- kex->dh->pub_key, ++ pub_key, + shared_secret, +- hash, &hashlen)) != 0) ++ hash, &hashlen)) != 0) { + goto out; ++ } ++ } + + /* save session id := H */ + if (kex->session_id == NULL) { +@@ -225,12 +240,17 @@ + /* destroy_sensitive_data(); */ + + /* send server hostkey, DH pubkey 'f' and singed H */ ++ { ++ const BIGNUM *pub_key; ++ DH_get0_key(kex->dh, &pub_key, NULL); + if ((r = sshpkt_start(ssh, SSH2_MSG_KEX_DH_GEX_REPLY)) != 0 || + (r = sshpkt_put_string(ssh, server_host_key_blob, sbloblen)) != 0 || +- (r = sshpkt_put_bignum2(ssh, kex->dh->pub_key)) != 0 || /* f */ ++ (r = sshpkt_put_bignum2(ssh, pub_key)) != 0 || /* f */ + (r = sshpkt_put_string(ssh, signature, slen)) != 0 || +- (r = sshpkt_send(ssh)) != 0) ++ (r = sshpkt_send(ssh)) != 0) { + goto out; ++ } ++ } + + if ((r = kex_derive_keys_bn(ssh, hash, hashlen, shared_secret)) == 0) + r = kex_send_newkeys(ssh); +diff -ru source/log.c source-new/log.c +--- source/log.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/log.c 2017-11-02 18:31:51.928879098 -0700 +@@ -324,8 +324,8 @@ + openlog_r(argv0 ? argv0 : __progname, LOG_PID, log_facility, &sdata); + closelog_r(&sdata); + #else +- openlog(argv0 ? argv0 : __progname, LOG_PID, log_facility); +- closelog(); ++ //openlog(argv0 ? argv0 : __progname, LOG_PID, log_facility); ++ //closelog(); + #endif + } + +@@ -465,9 +465,9 @@ + syslog_r(pri, &sdata, "%.500s", fmtbuf); + closelog_r(&sdata); + #else +- openlog(argv0 ? argv0 : __progname, LOG_PID, log_facility); +- syslog(pri, "%.500s", fmtbuf); +- closelog(); ++ //openlog(argv0 ? argv0 : __progname, LOG_PID, log_facility); ++ //syslog(pri, "%.500s", fmtbuf); ++ //closelog(); + #endif + } + errno = saved_errno; +diff -ru source/loginrec.c source-new/loginrec.c +--- source/loginrec.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/loginrec.c 2017-11-02 18:31:51.928879098 -0700 +@@ -746,7 +746,7 @@ + # ifdef HAVE_ADDR_V6_IN_UTMP + struct sockaddr_in6 *sa6; + # endif +- memset(utx, '\0', sizeof(*utx)); ++// memset(utx, '\0', sizeof(*utx)); + + # ifdef HAVE_ID_IN_UTMPX + line_abbrevname(utx->ut_id, li->line, sizeof(utx->ut_id)); +@@ -755,19 +755,19 @@ + /* this is done here to keep utmp constants out of loginrec.h */ + switch (li->type) { + case LTYPE_LOGIN: +- utx->ut_type = USER_PROCESS; ++// utx->ut_type = USER_PROCESS; + break; + case LTYPE_LOGOUT: +- utx->ut_type = DEAD_PROCESS; ++ //utx->ut_type = DEAD_PROCESS; + break; + } +- line_stripname(utx->ut_line, li->line, sizeof(utx->ut_line)); +- set_utmpx_time(li, utx); +- utx->ut_pid = li->pid; ++// line_stripname(utx->ut_line, li->line, sizeof(utx->ut_line)); ++// set_utmpx_time(li, utx); ++// utx->ut_pid = li->pid; + + /* strncpy(): Don't necessarily want null termination */ +- strncpy(utx->ut_user, li->username, +- MIN_SIZEOF(utx->ut_user, li->username)); ++// strncpy(utx->ut_user, li->username, ++// MIN_SIZEOF(utx->ut_user, li->username)); + + if (li->type == LTYPE_LOGOUT) + return; +@@ -1023,20 +1023,22 @@ + static int + utmpx_perform_login(struct logininfo *li) + { +- struct utmpx utx; +- +- construct_utmpx(li, &utx); +-# ifdef UTMPX_USE_LIBRARY +- if (!utmpx_write_library(li, &utx)) { +- logit("%s: utmp_write_library() failed", __func__); +- return (0); +- } +-# else +- if (!utmpx_write_direct(li, &ut)) { +- logit("%s: utmp_write_direct() failed", __func__); +- return (0); +- } +-# endif ++/* ++ * struct utmpx utx; ++ * ++ * construct_utmpx(li, &utx); ++ *# ifdef UTMPX_USE_LIBRARY ++ * if (!utmpx_write_library(li, &utx)) { ++ * logit("%s: utmp_write_library() failed", __func__); ++ * return (0); ++ * } ++ *# else ++ * if (!utmpx_write_direct(li, &ut)) { ++ * logit("%s: utmp_write_direct() failed", __func__); ++ * return (0); ++ * } ++ *# endif ++ */ + return (1); + } + +@@ -1044,21 +1046,23 @@ + static int + utmpx_perform_logout(struct logininfo *li) + { +- struct utmpx utx; +- +- construct_utmpx(li, &utx); +-# ifdef HAVE_ID_IN_UTMPX +- line_abbrevname(utx.ut_id, li->line, sizeof(utx.ut_id)); +-# endif +-# ifdef HAVE_TYPE_IN_UTMPX +- utx.ut_type = DEAD_PROCESS; +-# endif +- +-# ifdef UTMPX_USE_LIBRARY +- utmpx_write_library(li, &utx); +-# else +- utmpx_write_direct(li, &utx); +-# endif ++/* ++ * struct utmpx utx; ++ * ++ * construct_utmpx(li, &utx); ++ *# ifdef HAVE_ID_IN_UTMPX ++ * line_abbrevname(utx.ut_id, li->line, sizeof(utx.ut_id)); ++ *# endif ++ *# ifdef HAVE_TYPE_IN_UTMPX ++ * utx.ut_type = DEAD_PROCESS; ++ *# endif ++ * ++ *# ifdef UTMPX_USE_LIBRARY ++ * utmpx_write_library(li, &utx); ++ *# else ++ * utmpx_write_direct(li, &utx); ++ *# endif ++ */ + return (1); + } + +diff -ru source/misc.c source-new/misc.c +--- source/misc.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/misc.c 2017-11-02 18:31:51.928879098 -0700 +@@ -153,10 +153,12 @@ + socklen_t optlen; + + optlen = sizeof opt; +- if (getsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &opt, &optlen) == -1) { +- debug("getsockopt TCP_NODELAY: %.100s", strerror(errno)); +- return; +- } ++ /* ++ *if (getsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &opt, &optlen) == -1) { ++ * debug("getsockopt TCP_NODELAY: %.100s", strerror(errno)); ++ * return; ++ *} ++ */ + if (opt == 1) { + debug2("fd %d is TCP_NODELAY", fd); + return; +@@ -1274,14 +1276,18 @@ + { + int fd; + +- if ((fd = open(_PATH_TTY, O_RDONLY | O_NOCTTY)) >= 0) { +- close(fd); +- return 0; /* have controlling terminal */ +- } ++ /* ++ *if ((fd = open(_PATH_TTY, O_RDONLY | O_NOCTTY)) >= 0) { ++ * close(fd); ++ * return 0; [> have controlling terminal <] ++ *} ++ */ + if (getppid() != 1) + return 0; /* parent is not init */ +- if (getsid(0) != getpid()) +- return 0; /* not session leader */ ++ /* ++ *if (getsid(0) != getpid()) ++ * return 0; [> not session leader <] ++ */ + debug3("already daemonized"); + return 1; + } +diff -ru source/monitor.c source-new/monitor.c +--- source/monitor.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/monitor.c 2017-11-02 18:31:51.932212426 -0700 +@@ -586,10 +586,12 @@ + buffer_put_char(m, 0); + return (0); + } else { ++ const BIGNUM *p, *g; ++ DH_get0_pqg(dh, &p, NULL, &g); + /* Send first bignum */ + buffer_put_char(m, 1); +- buffer_put_bignum2(m, dh->p); +- buffer_put_bignum2(m, dh->g); ++ buffer_put_bignum2(m, p); ++ buffer_put_bignum2(m, g); + + DH_free(dh); + } +@@ -1663,8 +1665,10 @@ + int on = 1; + #endif + +- if (socketpair(AF_UNIX, SOCK_STREAM, 0, pair) == -1) +- fatal("%s: socketpair: %s", __func__, strerror(errno)); ++ /* ++ *if (socketpair(AF_UNIX, SOCK_STREAM, 0, pair) == -1) ++ * fatal("%s: socketpair: %s", __func__, strerror(errno)); ++ */ + #ifdef SO_ZEROIZE + if (setsockopt(pair[0], SOL_SOCKET, SO_ZEROIZE, &on, sizeof(on)) < 0) + error("setsockopt SO_ZEROIZE(0): %.100s", strerror(errno)); +diff -ru source/nchan.c source-new/nchan.c +--- source/nchan.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/nchan.c 2017-11-02 18:31:51.932212426 -0700 +@@ -375,10 +375,12 @@ + /* shutdown failure is allowed if write failed already */ + debug2("channel %d: close_write", c->self); + if (c->sock != -1) { +- if (shutdown(c->sock, SHUT_WR) < 0) +- debug2("channel %d: chan_shutdown_write: " +- "shutdown() failed for fd %d: %.100s", +- c->self, c->sock, strerror(errno)); ++ /* ++ *if (shutdown(c->sock, SHUT_WR) < 0) ++ * debug2("channel %d: chan_shutdown_write: " ++ * "shutdown() failed for fd %d: %.100s", ++ * c->self, c->sock, strerror(errno)); ++ */ + } else { + if (channel_close_fd(ssh, &c->wfd) < 0) + logit("channel %d: chan_shutdown_write: " +@@ -399,12 +401,14 @@ + * write side has been closed already. (bug on Linux) + * HP-UX may return ENOTCONN also. + */ +- if (shutdown(c->sock, SHUT_RD) < 0 +- && errno != ENOTCONN) +- error("channel %d: chan_shutdown_read: " +- "shutdown() failed for fd %d [i%d o%d]: %.100s", +- c->self, c->sock, c->istate, c->ostate, +- strerror(errno)); ++ /* ++ *if (shutdown(c->sock, SHUT_RD) < 0 ++ * && errno != ENOTCONN) ++ * error("channel %d: chan_shutdown_read: " ++ * "shutdown() failed for fd %d [i%d o%d]: %.100s", ++ * c->self, c->sock, c->istate, c->ostate, ++ * strerror(errno)); ++ */ + } else { + if (channel_close_fd(ssh, &c->rfd) < 0) + logit("channel %d: chan_shutdown_read: " +diff -ru source/openbsd-compat/bsd-closefrom.c source-new/openbsd-compat/bsd-closefrom.c +--- source/openbsd-compat/bsd-closefrom.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/openbsd-compat/bsd-closefrom.c 2017-11-02 18:31:51.938879081 -0700 +@@ -96,7 +96,7 @@ + #ifdef HAVE_SYSCONF + maxfd = sysconf(_SC_OPEN_MAX); + #else +- maxfd = getdtablesize(); ++ //maxfd = getdtablesize(); + #endif /* HAVE_SYSCONF */ + if (maxfd < 0) + maxfd = OPEN_MAX; +diff -ru source/openbsd-compat/bsd-misc.c source-new/openbsd-compat/bsd-misc.c +--- source/openbsd-compat/bsd-misc.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/openbsd-compat/bsd-misc.c 2017-11-02 18:31:51.932212426 -0700 +@@ -193,9 +193,9 @@ + { + int ctty_pgrp; + +- if (ioctl(fd, TIOCGPGRP, &ctty_pgrp) == -1) +- return(-1); +- else ++ //if (ioctl(fd, TIOCGPGRP, &ctty_pgrp) == -1) ++ // return(-1); ++ //else + return(ctty_pgrp); + } + #endif /* HAVE_TCGETPGRP */ +diff -ru source/openbsd-compat/bsd-misc.h source-new/openbsd-compat/bsd-misc.h +--- source/openbsd-compat/bsd-misc.h 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/openbsd-compat/bsd-misc.h 2017-11-02 18:31:51.935545753 -0700 +@@ -18,12 +18,15 @@ + #define _BSD_MISC_H + + #include "includes.h" ++#include + + char *ssh_get_progname(char *); + +-#ifndef HAVE_SETSID +-#define setsid() setpgrp(0, getpid()) +-#endif /* !HAVE_SETSID */ ++/* ++ *#ifndef HAVE_SETSID ++ *#define setsid() setpgrp(0, getpid()) ++ *#endif [> !HAVE_SETSID <] ++ */ + + #ifndef HAVE_SETENV + int setenv(const char *, const char *, int); +@@ -112,9 +115,11 @@ + pid_t getpgid(pid_t); + #endif + +-#ifndef HAVE_ENDGRENT +-# define endgrent() do { } while(0) +-#endif ++/* ++ *#ifndef HAVE_ENDGRENT ++ *# define endgrent() do { } while(0) ++ *#endif ++ */ + + #ifndef HAVE_KRB5_GET_ERROR_MESSAGE + # define krb5_get_error_message krb5_get_err_text +diff -ru source/openbsd-compat/bsd-statvfs.c source-new/openbsd-compat/bsd-statvfs.c +--- source/openbsd-compat/bsd-statvfs.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/openbsd-compat/bsd-statvfs.c 2017-11-02 18:31:51.932212426 -0700 +@@ -24,6 +24,7 @@ + #endif + + #include ++#include + + static void + copy_statfs_to_statvfs(struct statvfs *to, struct statfs *from) +diff -ru source/openbsd-compat/daemon.c source-new/openbsd-compat/daemon.c +--- source/openbsd-compat/daemon.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/openbsd-compat/daemon.c 2017-11-02 18:31:51.932212426 -0700 +@@ -62,8 +62,8 @@ + _exit(0); + } + +- if (setsid() == -1) +- return (-1); ++ //if (setsid() == -1) ++ // return (-1); + + if (!nochdir) + (void)chdir("/"); +diff -ru source/openbsd-compat/fake-rfc2553.c source-new/openbsd-compat/fake-rfc2553.c +--- source/openbsd-compat/fake-rfc2553.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/openbsd-compat/fake-rfc2553.c 2017-11-02 18:31:51.932212426 -0700 +@@ -67,14 +67,16 @@ + else + return (0); + } else { +- hp = gethostbyaddr((char *)&sin->sin_addr, +- sizeof(struct in_addr), AF_INET); +- if (hp == NULL) +- return (EAI_NODATA); +- +- if (strlcpy(host, hp->h_name, hostlen) >= hostlen) +- return (EAI_MEMORY); +- else ++/* ++ * hp = gethostbyaddr((char *)&sin->sin_addr, ++ * sizeof(struct in_addr), AF_INET); ++ * if (hp == NULL) ++ * return (EAI_NODATA); ++ * ++ * if (strlcpy(host, hp->h_name, hostlen) >= hostlen) ++ * return (EAI_MEMORY); ++ * else ++ */ + return (0); + } + } +@@ -172,8 +174,8 @@ + port = strtol(servname, &cp, 10); + if (port > 0 && port <= 65535 && *cp == '\0') + port = htons(port); +- else if ((sp = getservbyname(servname, NULL)) != NULL) +- port = sp->s_port; ++ //else if ((sp = getservbyname(servname, NULL)) != NULL) ++ // port = sp->s_port; + else + port = 0; + } +diff -ru source/openbsd-compat/getgrouplist.c source-new/openbsd-compat/getgrouplist.c +--- source/openbsd-compat/getgrouplist.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/openbsd-compat/getgrouplist.c 2017-11-02 18:31:51.935545753 -0700 +@@ -66,28 +66,30 @@ + /* + * Scan the group file to find additional groups. + */ +- setgrent(); +- while ((grp = getgrent())) { +- if (grp->gr_gid == agroup) +- continue; +- for (bail = 0, i = 0; bail == 0 && i < ngroups; i++) +- if (groups[i] == grp->gr_gid) +- bail = 1; +- if (bail) +- continue; +- for (i = 0; grp->gr_mem[i]; i++) { +- if (!strcmp(grp->gr_mem[i], uname)) { +- if (ngroups >= maxgroups) { +- ret = -1; +- goto out; +- } +- groups[ngroups++] = grp->gr_gid; +- break; +- } +- } +- } ++ //setgrent(); ++ /* ++ *while ((grp = getgrent())) { ++ * if (grp->gr_gid == agroup) ++ * continue; ++ * for (bail = 0, i = 0; bail == 0 && i < ngroups; i++) ++ * if (groups[i] == grp->gr_gid) ++ * bail = 1; ++ * if (bail) ++ * continue; ++ * for (i = 0; grp->gr_mem[i]; i++) { ++ * if (!strcmp(grp->gr_mem[i], uname)) { ++ * if (ngroups >= maxgroups) { ++ * ret = -1; ++ * goto out; ++ * } ++ * groups[ngroups++] = grp->gr_gid; ++ * break; ++ * } ++ * } ++ *} ++ */ + out: +- endgrent(); ++ //endgrent(); + *grpcnt = ngroups; + return (ret); + } +diff -ru source/openbsd-compat/getrrsetbyname.c source-new/openbsd-compat/getrrsetbyname.c +--- source/openbsd-compat/getrrsetbyname.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/openbsd-compat/getrrsetbyname.c 2017-11-02 18:31:51.935545753 -0700 +@@ -187,7 +187,7 @@ + unsigned int rdtype, unsigned int flags, + struct rrsetinfo **res) + { +- struct __res_state *_resp = _THREAD_PRIVATE(_res, _res, &_res); ++ //struct __res_state *_resp = _THREAD_PRIVATE(_res, _res, &_res); + int result; + struct rrsetinfo *rrset = NULL; + struct dns_response *response = NULL; +@@ -216,50 +216,54 @@ + } + + /* initialize resolver */ +- if ((_resp->options & RES_INIT) == 0 && res_init() == -1) { ++ /*if ((_resp->options & RES_INIT) == 0 && res_init() == -1) { + result = ERRSET_FAIL; + goto fail; +- } ++ }*/ + + #ifdef DEBUG +- _resp->options |= RES_DEBUG; ++ //_resp->options |= RES_DEBUG; + #endif /* DEBUG */ + + #ifdef RES_USE_DNSSEC + /* turn on DNSSEC if EDNS0 is configured */ +- if (_resp->options & RES_USE_EDNS0) +- _resp->options |= RES_USE_DNSSEC; ++ /* ++ *if (_resp->options & RES_USE_EDNS0) ++ * _resp->options |= RES_USE_DNSSEC; ++ */ + #endif /* RES_USE_DNSEC */ + + /* make query */ +- length = res_query(hostname, (signed int) rdclass, (signed int) rdtype, +- answer, sizeof(answer)); +- if (length < 0) { +- switch(h_errno) { +- case HOST_NOT_FOUND: +- result = ERRSET_NONAME; +- goto fail; +- case NO_DATA: +- result = ERRSET_NODATA; +- goto fail; +- default: +- result = ERRSET_FAIL; +- goto fail; +- } +- } +- +- /* parse result */ +- response = parse_dns_response(answer, length); +- if (response == NULL) { +- result = ERRSET_FAIL; +- goto fail; +- } +- +- if (response->header.qdcount != 1) { +- result = ERRSET_FAIL; +- goto fail; +- } +- ++/* ++ * length = res_query(hostname, (signed int) rdclass, (signed int) rdtype, ++ * answer, sizeof(answer)); ++ * if (length < 0) { ++ * switch(h_errno) { ++ * case HOST_NOT_FOUND: ++ * result = ERRSET_NONAME; ++ * goto fail; ++ * case NO_DATA: ++ * result = ERRSET_NODATA; ++ * goto fail; ++ * default: ++ * result = ERRSET_FAIL; ++ * goto fail; ++ * } ++ * } ++ * ++ * [> parse result <] ++ * response = parse_dns_response(answer, length); ++ * if (response == NULL) { ++ * result = ERRSET_FAIL; ++ * goto fail; ++ * } ++ * ++ * if (response->header.qdcount != 1) { ++ * result = ERRSET_FAIL; ++ * goto fail; ++ * } ++ * ++ */ + /* initialize rrset */ + rrset = calloc(1, sizeof(struct rrsetinfo)); + if (rrset == NULL) { +@@ -465,19 +469,21 @@ + prev->next = curr; + + /* name */ +- length = dn_expand(answer, answer + size, *cp, name, +- sizeof(name)); +- if (length < 0) { +- free_dns_query(head); +- return (NULL); +- } +- curr->name = strdup(name); +- if (curr->name == NULL) { +- free_dns_query(head); +- return (NULL); +- } +- *cp += length; +- ++/* ++ * length = dn_expand(answer, answer + size, *cp, name, ++ * sizeof(name)); ++ * if (length < 0) { ++ * free_dns_query(head); ++ * return (NULL); ++ * } ++ * curr->name = strdup(name); ++ * if (curr->name == NULL) { ++ * free_dns_query(head); ++ * return (NULL); ++ * } ++ * *cp += length; ++ * ++ */ + /* type */ + curr->type = _getshort(*cp); + *cp += INT16SZ; +@@ -512,19 +518,21 @@ + prev->next = curr; + + /* name */ +- length = dn_expand(answer, answer + size, *cp, name, +- sizeof(name)); +- if (length < 0) { +- free_dns_rr(head); +- return (NULL); +- } +- curr->name = strdup(name); +- if (curr->name == NULL) { +- free_dns_rr(head); +- return (NULL); +- } +- *cp += length; +- ++/* ++ * length = dn_expand(answer, answer + size, *cp, name, ++ * sizeof(name)); ++ * if (length < 0) { ++ * free_dns_rr(head); ++ * return (NULL); ++ * } ++ * curr->name = strdup(name); ++ * if (curr->name == NULL) { ++ * free_dns_rr(head); ++ * return (NULL); ++ * } ++ * *cp += length; ++ * ++ */ + /* type */ + curr->type = _getshort(*cp); + *cp += INT16SZ; +diff -ru source/openbsd-compat/openssl-compat.c source-new/openbsd-compat/openssl-compat.c +--- source/openbsd-compat/openssl-compat.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/openbsd-compat/openssl-compat.c 2017-11-02 18:31:51.932212426 -0700 +@@ -75,7 +75,6 @@ + /* Enable use of crypto hardware */ + ENGINE_load_builtin_engines(); + ENGINE_register_all_complete(); +- OPENSSL_config(NULL); + } + #endif + +diff -ru source/openbsd-compat/pwcache.c source-new/openbsd-compat/pwcache.c +--- source/openbsd-compat/pwcache.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/openbsd-compat/pwcache.c 2017-11-02 18:31:51.935545753 -0700 +@@ -99,11 +99,13 @@ + #endif + gropen = 1; + } +- if ((gr = getgrgid(gid)) == NULL) { +- if (nogroup) +- return (NULL); +- (void)snprintf(nbuf, sizeof(nbuf), "%u", gid); +- } ++ /* ++ *if ((gr = getgrgid(gid)) == NULL) { ++ * if (nogroup) ++ * return (NULL); ++ * (void)snprintf(nbuf, sizeof(nbuf), "%u", gid); ++ *} ++ */ + cp->gid = gid; + if (cp->name != NULL) + free(cp->name); +diff -ru source/openbsd-compat/readpassphrase.c source-new/openbsd-compat/readpassphrase.c +--- source/openbsd-compat/readpassphrase.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/openbsd-compat/readpassphrase.c 2017-11-02 18:31:51.935545753 -0700 +@@ -123,15 +123,17 @@ + sigemptyset(&sa.sa_mask); + sa.sa_flags = 0; /* don't restart system calls */ + sa.sa_handler = handler; +- (void)sigaction(SIGALRM, &sa, &savealrm); +- (void)sigaction(SIGHUP, &sa, &savehup); +- (void)sigaction(SIGINT, &sa, &saveint); +- (void)sigaction(SIGPIPE, &sa, &savepipe); +- (void)sigaction(SIGQUIT, &sa, &savequit); +- (void)sigaction(SIGTERM, &sa, &saveterm); +- (void)sigaction(SIGTSTP, &sa, &savetstp); +- (void)sigaction(SIGTTIN, &sa, &savettin); +- (void)sigaction(SIGTTOU, &sa, &savettou); ++ /* ++ *(void)sigaction(SIGALRM, &sa, &savealrm); ++ *(void)sigaction(SIGHUP, &sa, &savehup); ++ *(void)sigaction(SIGINT, &sa, &saveint); ++ *(void)sigaction(SIGPIPE, &sa, &savepipe); ++ *(void)sigaction(SIGQUIT, &sa, &savequit); ++ *(void)sigaction(SIGTERM, &sa, &saveterm); ++ *(void)sigaction(SIGTSTP, &sa, &savetstp); ++ *(void)sigaction(SIGTTIN, &sa, &savettin); ++ *(void)sigaction(SIGTTOU, &sa, &savettou); ++ */ + + if (!(flags & RPP_STDIN)) + (void)write(output, prompt, strlen(prompt)); +@@ -165,15 +167,17 @@ + continue; + signo[SIGTTOU] = sigttou; + } +- (void)sigaction(SIGALRM, &savealrm, NULL); +- (void)sigaction(SIGHUP, &savehup, NULL); +- (void)sigaction(SIGINT, &saveint, NULL); +- (void)sigaction(SIGQUIT, &savequit, NULL); +- (void)sigaction(SIGPIPE, &savepipe, NULL); +- (void)sigaction(SIGTERM, &saveterm, NULL); +- (void)sigaction(SIGTSTP, &savetstp, NULL); +- (void)sigaction(SIGTTIN, &savettin, NULL); +- (void)sigaction(SIGTTOU, &savettou, NULL); ++ /* ++ *(void)sigaction(SIGALRM, &savealrm, NULL); ++ *(void)sigaction(SIGHUP, &savehup, NULL); ++ *(void)sigaction(SIGINT, &saveint, NULL); ++ *(void)sigaction(SIGQUIT, &savequit, NULL); ++ *(void)sigaction(SIGPIPE, &savepipe, NULL); ++ *(void)sigaction(SIGTERM, &saveterm, NULL); ++ *(void)sigaction(SIGTSTP, &savetstp, NULL); ++ *(void)sigaction(SIGTTIN, &savettin, NULL); ++ *(void)sigaction(SIGTTOU, &savettou, NULL); ++ */ + if (input != STDIN_FILENO) + (void)close(input); + +diff -ru source/openbsd-compat/xcrypt.c source-new/openbsd-compat/xcrypt.c +--- source/openbsd-compat/xcrypt.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/openbsd-compat/xcrypt.c 2017-11-02 18:31:51.932212426 -0700 +@@ -80,18 +80,20 @@ + if (salt[0] != '\0') + return salt; + strlcpy(salt, "xx", sizeof(salt)); +- setpwent(); +- while ((pw = getpwent()) != NULL) { +- passwd = shadow_pw(pw); +- if (passwd[0] == '$' && (p = strrchr(passwd+1, '$')) != NULL) { +- typelen = p - passwd + 1; +- strlcpy(salt, passwd, MIN(typelen, sizeof(salt))); +- explicit_bzero(passwd, strlen(passwd)); +- goto out; +- } +- } +- out: +- endpwent(); ++ /* ++ * setpwent(); ++ * while ((pw = getpwent()) != NULL) { ++ * passwd = shadow_pw(pw); ++ * if (passwd[0] == '$' && (p = strrchr(passwd+1, '$')) != NULL) { ++ * typelen = p - passwd + 1; ++ * strlcpy(salt, passwd, MIN(typelen, sizeof(salt))); ++ * explicit_bzero(passwd, strlen(passwd)); ++ * goto out; ++ * } ++ * } ++ *out: ++ * endpwent(); ++ */ + return salt; + } + +diff -ru source/progressmeter.c source-new/progressmeter.c +--- source/progressmeter.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/progressmeter.c 2017-11-02 18:31:51.938879081 -0700 +@@ -81,7 +81,8 @@ + static int + can_output(void) + { +- return (getpgrp() == tcgetpgrp(STDOUT_FILENO)); ++ //return (getpgrp() == tcgetpgrp(STDOUT_FILENO)); ++ return -1; + } + + static void +@@ -294,13 +295,15 @@ + { + struct winsize winsize; + +- if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &winsize) != -1 && +- winsize.ws_col != 0) { +- if (winsize.ws_col > MAX_WINSIZE) +- win_size = MAX_WINSIZE; +- else +- win_size = winsize.ws_col; +- } else ++ /* ++ *if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &winsize) != -1 && ++ * winsize.ws_col != 0) { ++ * if (winsize.ws_col > MAX_WINSIZE) ++ * win_size = MAX_WINSIZE; ++ * else ++ * win_size = winsize.ws_col; ++ *} else ++ */ + win_size = DEFAULT_WINSIZE; + win_size += 1; /* trailing \0 */ + } +diff -ru source/readconf.c source-new/readconf.c +--- source/readconf.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/readconf.c 2017-11-02 18:31:51.938879081 -0700 +@@ -465,8 +465,8 @@ + struct servent *sp; + + if (port == 0) { +- sp = getservbyname(SSH_SERVICE_NAME, "tcp"); +- port = sp ? ntohs(sp->s_port) : SSH_DEFAULT_PORT; ++ //sp = getservbyname(SSH_SERVICE_NAME, "tcp"); ++ //port = sp ? ntohs(sp->s_port) : SSH_DEFAULT_PORT; + } + return port; + } + +diff -ru source/regress/unittests/sshkey/test_file.c source-new/regress/unittests/sshkey/test_file.c +--- source/regress/unittests/sshkey/test_file.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/regress/unittests/sshkey/test_file.c 2017-11-02 18:31:51.945545736 -0700 +@@ -60,9 +60,14 @@ + a = load_bignum("rsa_1.param.n"); + b = load_bignum("rsa_1.param.p"); + c = load_bignum("rsa_1.param.q"); +- ASSERT_BIGNUM_EQ(k1->rsa->n, a); +- ASSERT_BIGNUM_EQ(k1->rsa->p, b); +- ASSERT_BIGNUM_EQ(k1->rsa->q, c); ++ { ++ const BIGNUM *n, *p, *q; ++ RSA_get0_key(k1->rsa, &n, NULL, NULL); ++ RSA_get0_factors(k1->rsa, &p, &q); ++ ASSERT_BIGNUM_EQ(n, a); ++ ASSERT_BIGNUM_EQ(p, b); ++ ASSERT_BIGNUM_EQ(q, c); ++ } + BN_free(a); + BN_free(b); + BN_free(c); +@@ -151,9 +156,14 @@ + a = load_bignum("dsa_1.param.g"); + b = load_bignum("dsa_1.param.priv"); + c = load_bignum("dsa_1.param.pub"); +- ASSERT_BIGNUM_EQ(k1->dsa->g, a); +- ASSERT_BIGNUM_EQ(k1->dsa->priv_key, b); +- ASSERT_BIGNUM_EQ(k1->dsa->pub_key, c); ++ { ++ const BIGNUM *g, *priv_key, *pub_key; ++ DSA_get0_pqg(k1->dsa, NULL, NULL, &g); ++ DSA_get0_key(k1->dsa, &pub_key, &priv_key); ++ ASSERT_BIGNUM_EQ(g, a); ++ ASSERT_BIGNUM_EQ(priv_key, b); ++ ASSERT_BIGNUM_EQ(pub_key, c); ++ } + BN_free(a); + BN_free(b); + BN_free(c); +diff -ru source/regress/unittests/sshkey/test_sshkey.c source-new/regress/unittests/sshkey/test_sshkey.c +--- source/regress/unittests/sshkey/test_sshkey.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/regress/unittests/sshkey/test_sshkey.c 2017-11-02 18:31:51.945545736 -0700 +@@ -197,9 +197,14 @@ + k1 = sshkey_new(KEY_RSA); + ASSERT_PTR_NE(k1, NULL); + ASSERT_PTR_NE(k1->rsa, NULL); +- ASSERT_PTR_NE(k1->rsa->n, NULL); +- ASSERT_PTR_NE(k1->rsa->e, NULL); +- ASSERT_PTR_EQ(k1->rsa->p, NULL); ++ { ++ const BIGNUM *n, *e, *p; ++ RSA_get0_key(k1->rsa, &n, &e, NULL); ++ RSA_get0_factors(k1->rsa, &p, NULL); ++ ASSERT_PTR_NE(n, NULL); ++ ASSERT_PTR_NE(e, NULL); ++ ASSERT_PTR_EQ(p, NULL); ++ } + sshkey_free(k1); + TEST_DONE(); + +@@ -207,8 +212,13 @@ + k1 = sshkey_new(KEY_DSA); + ASSERT_PTR_NE(k1, NULL); + ASSERT_PTR_NE(k1->dsa, NULL); +- ASSERT_PTR_NE(k1->dsa->g, NULL); +- ASSERT_PTR_EQ(k1->dsa->priv_key, NULL); ++ { ++ const BIGNUM *g, *priv_key; ++ DSA_get0_pqg(k1->dsa, NULL, NULL, &g); ++ DSA_get0_key(k1->dsa, NULL, &priv_key); ++ ASSERT_PTR_NE(g, NULL); ++ ASSERT_PTR_EQ(priv_key, NULL); ++ } + sshkey_free(k1); + TEST_DONE(); + +@@ -234,9 +244,14 @@ + k1 = sshkey_new_private(KEY_RSA); + ASSERT_PTR_NE(k1, NULL); + ASSERT_PTR_NE(k1->rsa, NULL); +- ASSERT_PTR_NE(k1->rsa->n, NULL); +- ASSERT_PTR_NE(k1->rsa->e, NULL); +- ASSERT_PTR_NE(k1->rsa->p, NULL); ++ { ++ const BIGNUM *n, *e, *p; ++ RSA_get0_key(k1->rsa, &n, &e, NULL); ++ RSA_get0_factors(k1->rsa, &p, NULL); ++ ASSERT_PTR_NE(n, NULL); ++ ASSERT_PTR_NE(e, NULL); ++ ASSERT_PTR_NE(p, NULL); ++ } + ASSERT_INT_EQ(sshkey_add_private(k1), 0); + sshkey_free(k1); + TEST_DONE(); +@@ -245,8 +260,13 @@ + k1 = sshkey_new_private(KEY_DSA); + ASSERT_PTR_NE(k1, NULL); + ASSERT_PTR_NE(k1->dsa, NULL); +- ASSERT_PTR_NE(k1->dsa->g, NULL); +- ASSERT_PTR_NE(k1->dsa->priv_key, NULL); ++ { ++ const BIGNUM *g, *priv_key; ++ DSA_get0_pqg(k1->dsa, NULL, NULL, &g); ++ DSA_get0_key(k1->dsa, NULL, &priv_key); ++ ASSERT_PTR_NE(g, NULL); ++ ASSERT_PTR_NE(priv_key, NULL); ++ } + ASSERT_INT_EQ(sshkey_add_private(k1), 0); + sshkey_free(k1); + TEST_DONE(); +@@ -285,18 +305,28 @@ + ASSERT_INT_EQ(sshkey_generate(KEY_RSA, 1024, &kr), 0); + ASSERT_PTR_NE(kr, NULL); + ASSERT_PTR_NE(kr->rsa, NULL); +- ASSERT_PTR_NE(kr->rsa->n, NULL); +- ASSERT_PTR_NE(kr->rsa->e, NULL); +- ASSERT_PTR_NE(kr->rsa->p, NULL); +- ASSERT_INT_EQ(BN_num_bits(kr->rsa->n), 1024); ++ { ++ const BIGNUM *n, *e, *p; ++ RSA_get0_key(kr->rsa, &n, &e, NULL); ++ RSA_get0_factors(kr->rsa, &p, NULL); ++ ASSERT_PTR_NE(n, NULL); ++ ASSERT_PTR_NE(e, NULL); ++ ASSERT_PTR_NE(p, NULL); ++ ASSERT_INT_EQ(BN_num_bits(n), 1024); ++ } + TEST_DONE(); + + TEST_START("generate KEY_DSA"); + ASSERT_INT_EQ(sshkey_generate(KEY_DSA, 1024, &kd), 0); + ASSERT_PTR_NE(kd, NULL); + ASSERT_PTR_NE(kd->dsa, NULL); +- ASSERT_PTR_NE(kd->dsa->g, NULL); +- ASSERT_PTR_NE(kd->dsa->priv_key, NULL); ++ { ++ const BIGNUM *g, *priv_key; ++ DSA_get0_pqg(kd->dsa, NULL, NULL, &g); ++ DSA_get0_key(kd->dsa, NULL, &priv_key); ++ ASSERT_PTR_NE(g, NULL); ++ ASSERT_PTR_NE(priv_key, NULL); ++ } + TEST_DONE(); + + #ifdef OPENSSL_HAS_ECC +@@ -323,9 +353,14 @@ + ASSERT_PTR_NE(kr, k1); + ASSERT_INT_EQ(k1->type, KEY_RSA); + ASSERT_PTR_NE(k1->rsa, NULL); +- ASSERT_PTR_NE(k1->rsa->n, NULL); +- ASSERT_PTR_NE(k1->rsa->e, NULL); +- ASSERT_PTR_EQ(k1->rsa->p, NULL); ++ { ++ const BIGNUM *n, *e, *p; ++ RSA_get0_key(k1->rsa, &n, &e, NULL); ++ RSA_get0_factors(k1->rsa, &p, NULL); ++ ASSERT_PTR_NE(n, NULL); ++ ASSERT_PTR_NE(e, NULL); ++ ASSERT_PTR_EQ(p, NULL); ++ } + TEST_DONE(); + + TEST_START("equal KEY_RSA/demoted KEY_RSA"); +@@ -339,8 +374,13 @@ + ASSERT_PTR_NE(kd, k1); + ASSERT_INT_EQ(k1->type, KEY_DSA); + ASSERT_PTR_NE(k1->dsa, NULL); +- ASSERT_PTR_NE(k1->dsa->g, NULL); +- ASSERT_PTR_EQ(k1->dsa->priv_key, NULL); ++ { ++ const BIGNUM *g, *priv_key; ++ DSA_get0_pqg(k1->dsa, NULL, NULL, &g); ++ DSA_get0_key(k1->dsa, NULL, &priv_key); ++ ASSERT_PTR_NE(g, NULL); ++ ASSERT_PTR_EQ(priv_key, NULL); ++ } + TEST_DONE(); + + TEST_START("equal KEY_DSA/demoted KEY_DSA"); +diff -ru source/scp.c source-new/scp.c +--- source/scp.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/scp.c 2017-11-02 18:31:51.948879063 -0700 +@@ -905,7 +905,7 @@ + return; + } + while ((dp = readdir(dirp)) != NULL) { +- if (dp->d_ino == 0) ++// if (dp->d_ino == 0) + continue; + if (!strcmp(dp->d_name, ".") || !strcmp(dp->d_name, "..")) + continue; +diff -ru source/serverloop.c source-new/serverloop.c +--- source/serverloop.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/serverloop.c 2017-11-02 18:31:51.948879063 -0700 +@@ -349,16 +349,18 @@ + /* block SIGCHLD while we check for dead children */ + sigemptyset(&nset); + sigaddset(&nset, SIGCHLD); +- sigprocmask(SIG_BLOCK, &nset, &oset); +- if (child_terminated) { +- debug("Received SIGCHLD."); +- while ((pid = waitpid(-1, &status, WNOHANG)) > 0 || +- (pid < 0 && errno == EINTR)) +- if (pid > 0) +- session_close_by_pid(ssh, pid, status); +- child_terminated = 0; +- } +- sigprocmask(SIG_SETMASK, &oset, NULL); ++ /* ++ *sigprocmask(SIG_BLOCK, &nset, &oset); ++ *if (child_terminated) { ++ * debug("Received SIGCHLD."); ++ * while ((pid = waitpid(-1, &status, WNOHANG)) > 0 || ++ * (pid < 0 && errno == EINTR)) ++ * if (pid > 0) ++ * session_close_by_pid(ssh, pid, status); ++ * child_terminated = 0; ++ *} ++ *sigprocmask(SIG_SETMASK, &oset, NULL); ++ */ + } + + void +diff -ru source/session.c source-new/session.c +--- source/session.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/session.c 2017-11-02 18:31:51.948879063 -0700 +@@ -408,8 +408,8 @@ + * Create a new session and process group since the 4.4BSD + * setlogin() affects the entire process group. + */ +- if (setsid() < 0) +- error("setsid failed: %.100s", strerror(errno)); ++ //if (setsid() < 0) ++ // error("setsid failed: %.100s", strerror(errno)); + + #ifdef USE_PIPES + /* +@@ -1028,7 +1028,7 @@ + # endif /* HAVE_CYGWIN */ + #endif /* HAVE_LOGIN_CAP */ + +- snprintf(buf, sizeof buf, "%.200s/%.50s", _PATH_MAILDIR, pw->pw_name); ++ //snprintf(buf, sizeof buf, "%.200s/%.50s", _PATH_MAILDIR, pw->pw_name); + child_set_env(&env, &envsize, "MAIL", buf); + + /* Normal systems set SHELL by default. */ +@@ -1302,8 +1302,8 @@ + if (chdir(path) == -1) + fatal("Unable to chdir to chroot path \"%s\": " + "%s", path, strerror(errno)); +- if (chroot(path) == -1) +- fatal("chroot(\"%s\"): %s", path, strerror(errno)); ++ //if (chroot(path) == -1) ++ // fatal("chroot(\"%s\"): %s", path, strerror(errno)); + if (chdir("/") == -1) + fatal("%s: chdir(/) after chroot: %s", + __func__, strerror(errno)); +@@ -1328,16 +1328,20 @@ + #else + if (setlogin(pw->pw_name) < 0) + error("setlogin failed: %s", strerror(errno)); +- if (setgid(pw->pw_gid) < 0) { +- perror("setgid"); +- exit(1); +- } ++ /* ++ *if (setgid(pw->pw_gid) < 0) { ++ * perror("setgid"); ++ * exit(1); ++ *} ++ */ + /* Initialize the group list. */ +- if (initgroups(pw->pw_name, pw->pw_gid) < 0) { +- perror("initgroups"); +- exit(1); +- } +- endgrent(); ++ /* ++ *if (initgroups(pw->pw_name, pw->pw_gid) < 0) { ++ * perror("initgroups"); ++ * exit(1); ++ *} ++ */ ++ //endgrent(); + #endif + + platform_setusercontext_post_groups(pw); +@@ -1444,7 +1448,7 @@ + * Close any extra file descriptors. Note that there may still be + * descriptors left by system functions. They will be closed later. + */ +- endpwent(); ++ //endpwent(); + + /* + * Close any extra open file descriptors so that we don't have them +diff -ru source/sftp.c source-new/sftp.c +--- source/sftp.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/sftp.c 2017-11-02 18:31:51.948879063 -0700 +@@ -822,8 +822,10 @@ + m += strlen(tmp); + free(tmp); + +- if (ioctl(fileno(stdin), TIOCGWINSZ, &ws) != -1) +- width = ws.ws_col; ++ /* ++ *if (ioctl(fileno(stdin), TIOCGWINSZ, &ws) != -1) ++ * width = ws.ws_col; ++ */ + + columns = width / (m + 2); + columns = MAXIMUM(columns, 1); +@@ -950,8 +952,10 @@ + return err; + } + +- if (ioctl(fileno(stdin), TIOCGWINSZ, &ws) != -1) +- width = ws.ws_col; ++ /* ++ *if (ioctl(fileno(stdin), TIOCGWINSZ, &ws) != -1) ++ * width = ws.ws_col; ++ */ + + if (!(lflag & LS_SHORT_VIEW)) { + /* Count entries for sort and find longest filename */ +@@ -2247,8 +2251,10 @@ + #else /* USE_PIPES */ + int inout[2]; + +- if (socketpair(AF_UNIX, SOCK_STREAM, 0, inout) == -1) +- fatal("socketpair: %s", strerror(errno)); ++ /* ++ *if (socketpair(AF_UNIX, SOCK_STREAM, 0, inout) == -1) ++ * fatal("socketpair: %s", strerror(errno)); ++ */ + *in = *out = inout[0]; + c_in = c_out = inout[1]; + #endif /* USE_PIPES */ +@@ -2512,8 +2518,10 @@ + err = interactive_loop(conn, file1, file2); + + #if !defined(USE_PIPES) +- shutdown(in, SHUT_RDWR); +- shutdown(out, SHUT_RDWR); ++ /* ++ *shutdown(in, SHUT_RDWR); ++ *shutdown(out, SHUT_RDWR); ++ */ + #endif + + close(in); +diff -ru source/sftp-client.c source-new/sftp-client.c +--- source/sftp-client.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/sftp-client.c 2017-11-02 18:31:51.948879063 -0700 +@@ -121,10 +121,12 @@ + iov[1].iov_base = (u_char *)sshbuf_ptr(m); + iov[1].iov_len = sshbuf_len(m); + +- if (atomiciov6(writev, conn->fd_out, iov, 2, +- conn->limit_kbps > 0 ? sftpio : NULL, &conn->bwlimit_out) != +- sshbuf_len(m) + sizeof(mlen)) +- fatal("Couldn't send packet: %s", strerror(errno)); ++ /* ++ *if (atomiciov6(writev, conn->fd_out, iov, 2, ++ * conn->limit_kbps > 0 ? sftpio : NULL, &conn->bwlimit_out) != ++ * sshbuf_len(m) + sizeof(mlen)) ++ * fatal("Couldn't send packet: %s", strerror(errno)); ++ */ + + sshbuf_reset(m); + } +@@ -1832,7 +1834,7 @@ + } + + while (((dp = readdir(dirp)) != NULL) && !interrupted) { +- if (dp->d_ino == 0) ++ //if (dp->d_ino == 0) + continue; + filename = dp->d_name; + new_dst = path_append(dst, filename); +diff -ru source/sftp-glob.c source-new/sftp-glob.c +--- source/sftp-glob.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/sftp-glob.c 2017-11-02 18:31:51.948879063 -0700 +@@ -92,12 +92,13 @@ + * ALTDIRFUNCs. Not that this is documented anywhere but the + * source... Fake an inode number to appease it. + */ +- ret->d_ino = inum++; ++// ret->d_ino = inum++; + if (!inum) + inum = 1; + #endif /* __GNU_LIBRARY__ */ + +- return(ret); ++// return(ret); ++ return 0; + } + + static void +diff -ru source/ssh-agent.c source-new/ssh-agent.c +--- source/ssh-agent.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/ssh-agent.c 2017-11-02 18:31:51.962212373 -0700 +@@ -788,23 +788,25 @@ + int fd; + + slen = sizeof(sunaddr); +- fd = accept(sockets[socknum].fd, (struct sockaddr *)&sunaddr, &slen); +- if (fd < 0) { +- error("accept from AUTH_SOCKET: %s", strerror(errno)); +- return -1; +- } +- if (getpeereid(fd, &euid, &egid) < 0) { +- error("getpeereid %d failed: %s", fd, strerror(errno)); +- close(fd); +- return -1; +- } +- if ((euid != 0) && (getuid() != euid)) { +- error("uid mismatch: peer euid %u != uid %u", +- (u_int) euid, (u_int) getuid()); +- close(fd); +- return -1; +- } +- new_socket(AUTH_CONNECTION, fd); ++ /* ++ *fd = accept(sockets[socknum].fd, (struct sockaddr *)&sunaddr, &slen); ++ *if (fd < 0) { ++ * error("accept from AUTH_SOCKET: %s", strerror(errno)); ++ * return -1; ++ *} ++ *if (getpeereid(fd, &euid, &egid) < 0) { ++ * error("getpeereid %d failed: %s", fd, strerror(errno)); ++ * close(fd); ++ * return -1; ++ *} ++ *if ((euid != 0) && (getuid() != euid)) { ++ * error("uid mismatch: peer euid %u != uid %u", ++ * (u_int) euid, (u_int) getuid()); ++ * close(fd); ++ * return -1; ++ *} ++ *new_socket(AUTH_CONNECTION, fd); ++ */ + return 0; + } + +@@ -1037,8 +1039,10 @@ + sanitise_stdfd(); + + /* drop */ +- setegid(getgid()); +- setgid(getgid()); ++ /* ++ *setegid(getgid()); ++ *setgid(getgid()); ++ */ + + platform_disable_tracing(0); /* strict=no */ + +@@ -1212,10 +1216,12 @@ + /* child */ + log_init(__progname, SYSLOG_LEVEL_INFO, SYSLOG_FACILITY_AUTH, 0); + +- if (setsid() == -1) { +- error("setsid: %s", strerror(errno)); +- cleanup_exit(1); +- } ++ /* ++ *if (setsid() == -1) { ++ * error("setsid: %s", strerror(errno)); ++ * cleanup_exit(1); ++ *} ++ */ + + (void)chdir("/"); + if ((fd = open(_PATH_DEVNULL, O_RDWR, 0)) != -1) { +diff -ru source/sshconnect.c source-new/sshconnect.c +--- source/sshconnect.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/sshconnect.c 2017-11-02 18:31:51.962212373 -0700 +@@ -115,9 +115,11 @@ + if ((shell = getenv("SHELL")) == NULL) + shell = _PATH_BSHELL; + +- if (socketpair(AF_UNIX, SOCK_STREAM, 0, sp) < 0) +- fatal("Could not create socketpair to communicate with " +- "proxy dialer: %.100s", strerror(errno)); ++ /* ++ *if (socketpair(AF_UNIX, SOCK_STREAM, 0, sp) < 0) ++ * fatal("Could not create socketpair to communicate with " ++ * "proxy dialer: %.100s", strerror(errno)); ++ */ + + command_string = expand_proxy_command(proxy_command, options.user, + host, port); +@@ -387,10 +389,12 @@ + return -1; + + /* Completed or failed */ +- if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &optval, &optlen) == -1) { +- debug("getsockopt: %s", strerror(errno)); +- return -1; +- } ++ /* ++ *if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &optval, &optlen) == -1) { ++ * debug("getsockopt: %s", strerror(errno)); ++ * return -1; ++ *} ++ */ + if (optval != 0) { + errno = optval; + return -1; +@@ -665,8 +669,8 @@ + { + switch (hostaddr->sa_family) { + case AF_INET: +- return (ntohl(((struct sockaddr_in *)hostaddr)-> +- sin_addr.s_addr) >> 24) == IN_LOOPBACKNET; ++ return 0;/*(ntohl(((struct sockaddr_in *)hostaddr)-> ++ sin_addr.s_addr) >> 24) == IN_LOOPBACKNET;*/ + case AF_INET6: + return IN6_IS_ADDR_LOOPBACK( + &(((struct sockaddr_in6 *)hostaddr)->sin6_addr)); +diff -ru source/sshd.c source-new/sshd.c +--- source/sshd.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/sshd.c 2017-11-02 18:31:51.965545701 -0700 +@@ -541,9 +541,11 @@ + /* Demote the child */ + if (privsep_chroot) { + /* Change our root directory */ +- if (chroot(_PATH_PRIVSEP_CHROOT_DIR) == -1) +- fatal("chroot(\"%s\"): %s", _PATH_PRIVSEP_CHROOT_DIR, +- strerror(errno)); ++ /* ++ *if (chroot(_PATH_PRIVSEP_CHROOT_DIR) == -1) ++ * fatal("chroot(\"%s\"): %s", _PATH_PRIVSEP_CHROOT_DIR, ++ * strerror(errno)); ++ */ + if (chdir("/") == -1) + fatal("chdir(\"/\"): %s", strerror(errno)); + +@@ -551,8 +553,10 @@ + debug3("privsep user:group %u:%u", (u_int)privsep_pw->pw_uid, + (u_int)privsep_pw->pw_gid); + gidset[0] = privsep_pw->pw_gid; +- if (setgroups(1, gidset) < 0) +- fatal("setgroups: %.100s", strerror(errno)); ++ /* ++ *if (setgroups(1, gidset) < 0) ++ * fatal("setgroups: %.100s", strerror(errno)); ++ */ + permanently_set_uid(privsep_pw); + } + } +@@ -1054,9 +1058,11 @@ + * Set socket options. + * Allow local port reuse in TIME_WAIT. + */ +- if (setsockopt(listen_sock, SOL_SOCKET, SO_REUSEADDR, +- &on, sizeof(on)) == -1) +- error("setsockopt SO_REUSEADDR: %s", strerror(errno)); ++ /* ++ *if (setsockopt(listen_sock, SOL_SOCKET, SO_REUSEADDR, ++ * &on, sizeof(on)) == -1) ++ * error("setsockopt SO_REUSEADDR: %s", strerror(errno)); ++ */ + + /* Only communicate in IPv6 over AF_INET6 sockets. */ + if (ai->ai_family == AF_INET6) +@@ -1158,95 +1164,95 @@ + startup_pipes[i] = -1; + startups--; + } +- for (i = 0; i < num_listen_socks; i++) { +- if (!FD_ISSET(listen_socks[i], fdset)) +- continue; +- fromlen = sizeof(from); +- *newsock = accept(listen_socks[i], +- (struct sockaddr *)&from, &fromlen); +- if (*newsock < 0) { +- if (errno != EINTR && errno != EWOULDBLOCK && +- errno != ECONNABORTED && errno != EAGAIN) +- error("accept: %.100s", +- strerror(errno)); +- if (errno == EMFILE || errno == ENFILE) +- usleep(100 * 1000); +- continue; +- } +- if (unset_nonblock(*newsock) == -1) { +- close(*newsock); +- continue; +- } +- if (drop_connection(startups) == 1) { +- char *laddr = get_local_ipaddr(*newsock); +- char *raddr = get_peer_ipaddr(*newsock); +- +- verbose("drop connection #%d from [%s]:%d " +- "on [%s]:%d past MaxStartups", startups, +- raddr, get_peer_port(*newsock), +- laddr, get_local_port(*newsock)); +- free(laddr); +- free(raddr); +- close(*newsock); +- continue; +- } +- if (pipe(startup_p) == -1) { +- close(*newsock); +- continue; +- } +- +- if (rexec_flag && socketpair(AF_UNIX, +- SOCK_STREAM, 0, config_s) == -1) { +- error("reexec socketpair: %s", +- strerror(errno)); +- close(*newsock); +- close(startup_p[0]); +- close(startup_p[1]); +- continue; +- } +- +- for (j = 0; j < options.max_startups; j++) +- if (startup_pipes[j] == -1) { +- startup_pipes[j] = startup_p[0]; +- if (maxfd < startup_p[0]) +- maxfd = startup_p[0]; +- startups++; +- break; +- } ++ // for (i = 0; i < num_listen_socks; i++) { ++ // if (!FD_ISSET(listen_socks[i], fdset)) ++ // continue; ++ // fromlen = sizeof(from); ++ /* *newsock = accept(listen_socks[i],*/ ++ /*(struct sockaddr *)&from, &fromlen);*/ ++ /*if (*newsock < 0) {*/ ++ /*if (errno != EINTR && errno != EWOULDBLOCK &&*/ ++ /*errno != ECONNABORTED && errno != EAGAIN)*/ ++ /*error("accept: %.100s",*/ ++ /*strerror(errno));*/ ++ /*if (errno == EMFILE || errno == ENFILE)*/ ++ /*usleep(100 * 1000);*/ ++ /*continue;*/ ++ /*}*/ ++ /*if (unset_nonblock(*newsock) == -1) {*/ ++ /*close(*newsock);*/ ++ /*continue;*/ ++ /*}*/ ++ /*if (drop_connection(startups) == 1) {*/ ++ /*char *laddr = get_local_ipaddr(*newsock);*/ ++ /*char *raddr = get_peer_ipaddr(*newsock);*/ ++ ++ /*verbose("drop connection #%d from [%s]:%d "*/ ++ /*"on [%s]:%d past MaxStartups", startups,*/ ++ /*raddr, get_peer_port(*newsock),*/ ++ /*laddr, get_local_port(*newsock));*/ ++ /*free(laddr);*/ ++ /*free(raddr);*/ ++ /*close(*newsock);*/ ++ /*continue;*/ ++ /*}*/ ++ /*if (pipe(startup_p) == -1) {*/ ++ /*close(*newsock);*/ ++ /*continue;*/ ++ /*}*/ ++ ++ /*if (rexec_flag && socketpair(AF_UNIX,*/ ++ /*SOCK_STREAM, 0, config_s) == -1) {*/ ++ /*error("reexec socketpair: %s",*/ ++ /*strerror(errno));*/ ++ /*close(*newsock);*/ ++ /*close(startup_p[0]);*/ ++ /*close(startup_p[1]);*/ ++ /*continue;*/ ++ /*}*/ ++ ++ /*for (j = 0; j < options.max_startups; j++)*/ ++ /*if (startup_pipes[j] == -1) {*/ ++ /*startup_pipes[j] = startup_p[0];*/ ++ /*if (maxfd < startup_p[0])*/ ++ /*maxfd = startup_p[0];*/ ++ /*startups++;*/ ++ /*break;*/ ++ /*}*/ + + /* + * Got connection. Fork a child to handle it, unless + * we are in debugging mode. + */ +- if (debug_flag) { ++ /*if (debug_flag) {*/ + /* + * In debugging mode. Close the listening + * socket, and start processing the + * connection without forking. + */ +- debug("Server will not fork when running in debugging mode."); +- close_listen_socks(); +- *sock_in = *newsock; +- *sock_out = *newsock; +- close(startup_p[0]); +- close(startup_p[1]); +- startup_pipe = -1; +- pid = getpid(); +- if (rexec_flag) { +- send_rexec_state(config_s[0], +- &cfg); +- close(config_s[0]); +- } +- break; +- } ++ /*debug("Server will not fork when running in debugging mode.");*/ ++ /*close_listen_socks();*/ ++ /**sock_in = *newsock;*/ ++ /**sock_out = *newsock;*/ ++ /*close(startup_p[0]);*/ ++ /*close(startup_p[1]);*/ ++ /*startup_pipe = -1;*/ ++ /*pid = getpid();*/ ++ /*if (rexec_flag) {*/ ++ /*send_rexec_state(config_s[0],*/ ++ /*&cfg);*/ ++ /*close(config_s[0]);*/ ++ /*}*/ ++ /*break;*/ ++ /*}*/ + + /* + * Normal production daemon. Fork, and have + * the child process the connection. The + * parent continues listening. + */ +- platform_pre_fork(); +- if ((pid = fork()) == 0) { ++ /*platform_pre_fork();*/ ++ /*if ((pid = fork()) == 0) {*/ + /* + * Child. Close the listening and + * max_startup sockets. Start using +@@ -1255,54 +1261,54 @@ + * We break out of the loop to handle + * the connection. + */ +- platform_post_fork_child(); +- startup_pipe = startup_p[1]; +- close_startup_pipes(); +- close_listen_socks(); +- *sock_in = *newsock; +- *sock_out = *newsock; +- log_init(__progname, +- options.log_level, +- options.log_facility, +- log_stderr); +- if (rexec_flag) +- close(config_s[0]); +- break; +- } +- +- /* Parent. Stay in the loop. */ +- platform_post_fork_parent(pid); +- if (pid < 0) +- error("fork: %.100s", strerror(errno)); +- else +- debug("Forked child %ld.", (long)pid); +- +- close(startup_p[1]); +- +- if (rexec_flag) { +- send_rexec_state(config_s[0], &cfg); +- close(config_s[0]); +- close(config_s[1]); +- } +- close(*newsock); ++ /*platform_post_fork_child();*/ ++ /*startup_pipe = startup_p[1];*/ ++ /*close_startup_pipes();*/ ++ /*close_listen_socks();*/ ++ /**sock_in = *newsock;*/ ++ /**sock_out = *newsock;*/ ++ /*log_init(__progname,*/ ++ /*options.log_level,*/ ++ /*options.log_facility,*/ ++ /*log_stderr);*/ ++ /*if (rexec_flag)*/ ++ /*close(config_s[0]);*/ ++ /*break;*/ ++ /*}*/ ++ ++ /*[> Parent. Stay in the loop. <]*/ ++ /*platform_post_fork_parent(pid);*/ ++ /*if (pid < 0)*/ ++ /*error("fork: %.100s", strerror(errno));*/ ++ /*else*/ ++ /*debug("Forked child %ld.", (long)pid);*/ ++ ++ /*close(startup_p[1]);*/ ++ ++ /*if (rexec_flag) {*/ ++ /*send_rexec_state(config_s[0], &cfg);*/ ++ /*close(config_s[0]);*/ ++ /*close(config_s[1]);*/ ++ /*}*/ ++ /*close(*newsock);*/ + + /* + * Ensure that our random state differs + * from that of the child + */ +- arc4random_stir(); +- arc4random_buf(rnd, sizeof(rnd)); +-#ifdef WITH_OPENSSL +- RAND_seed(rnd, sizeof(rnd)); +- if ((RAND_bytes((u_char *)rnd, 1)) != 1) +- fatal("%s: RAND_bytes failed", __func__); +-#endif +- explicit_bzero(rnd, sizeof(rnd)); +- } +- +- /* child process check (or debug mode) */ +- if (num_listen_socks < 0) +- break; ++ /*arc4random_stir();*/ ++ /*arc4random_buf(rnd, sizeof(rnd));*/ ++/*#ifdef WITH_OPENSSL*/ ++ /*RAND_seed(rnd, sizeof(rnd));*/ ++ /*if ((RAND_bytes((u_char *)rnd, 1)) != 1)*/ ++ /*fatal("%s: RAND_bytes failed", __func__);*/ ++/*#endif*/ ++ /*explicit_bzero(rnd, sizeof(rnd));*/ ++ /*}*/ ++ ++ /*[> child process check (or debug mode) <]*/ ++ /*if (num_listen_socks < 0)*/ ++ /* break;*/ + } + } + +@@ -1317,36 +1323,38 @@ + * rest of the interaction and could still bypass security. So we + * exit here if we detect any IP options. + */ +-static void +-check_ip_options(struct ssh *ssh) +-{ +-#ifdef IP_OPTIONS +- int sock_in = ssh_packet_get_connection_in(ssh); +- struct sockaddr_storage from; +- u_char opts[200]; +- socklen_t i, option_size = sizeof(opts), fromlen = sizeof(from); +- char text[sizeof(opts) * 3 + 1]; +- +- memset(&from, 0, sizeof(from)); +- if (getpeername(sock_in, (struct sockaddr *)&from, +- &fromlen) < 0) +- return; +- if (from.ss_family != AF_INET) +- return; +- /* XXX IPv6 options? */ +- +- if (getsockopt(sock_in, IPPROTO_IP, IP_OPTIONS, opts, +- &option_size) >= 0 && option_size != 0) { +- text[0] = '\0'; +- for (i = 0; i < option_size; i++) +- snprintf(text + i*3, sizeof(text) - i*3, +- " %2.2x", opts[i]); +- fatal("Connection from %.100s port %d with IP opts: %.800s", +- ssh_remote_ipaddr(ssh), ssh_remote_port(ssh), text); +- } +- return; +-#endif /* IP_OPTIONS */ +-} ++//static void ++/* ++ *check_ip_options(struct ssh *ssh) ++ *{ ++ *#ifdef IP_OPTIONS ++ * int sock_in = ssh_packet_get_connection_in(ssh); ++ * struct sockaddr_storage from; ++ * u_char opts[200]; ++ * socklen_t i, option_size = sizeof(opts), fromlen = sizeof(from); ++ * char text[sizeof(opts) * 3 + 1]; ++ * ++ * memset(&from, 0, sizeof(from)); ++ * if (getpeername(sock_in, (struct sockaddr *)&from, ++ * &fromlen) < 0) ++ * return; ++ * if (from.ss_family != AF_INET) ++ * return; ++ * [> XXX IPv6 options? <] ++ * ++ * if (getsockopt(sock_in, IPPROTO_IP, IP_OPTIONS, opts, ++ * &option_size) >= 0 && option_size != 0) { ++ * text[0] = '\0'; ++ * for (i = 0; i < option_size; i++) ++ * snprintf(text + i*3, sizeof(text) - i*3, ++ * " %2.2x", opts[i]); ++ * fatal("Connection from %.100s port %d with IP opts: %.800s", ++ * ssh_remote_ipaddr(ssh), ssh_remote_port(ssh), text); ++ * } ++ * return; ++ *#endif [> IP_OPTIONS <] ++ *} ++ */ + + /* + * Main program for the daemon. +@@ -1393,9 +1401,11 @@ + av = saved_argv; + #endif + +- if (geteuid() == 0 && setgroups(0, NULL) == -1) +- debug("setgroups(): %.200s", strerror(errno)); +- ++/* ++ * if (geteuid() == 0 && setgroups(0, NULL) == -1) ++ * debug("setgroups(): %.200s", strerror(errno)); ++ * ++ */ + /* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */ + sanitise_stdfd(); + +@@ -1648,7 +1658,7 @@ + free(privsep_pw->pw_passwd); + privsep_pw->pw_passwd = xstrdup("*"); + } +- endpwent(); ++ //endpwent(); + + /* load host keys */ + sensitive_data.host_keys = xcalloc(options.num_host_key_files, +@@ -1792,8 +1802,10 @@ + * to create a file, and we can't control the code in every + * module which might be used). + */ +- if (setgroups(0, NULL) < 0) +- debug("setgroups() failed: %.200s", strerror(errno)); ++ /* ++ *if (setgroups(0, NULL) < 0) ++ * debug("setgroups() failed: %.200s", strerror(errno)); ++ */ + + if (rexec_flag) { + rexec_argv = xcalloc(rexec_argc + 2, sizeof(char *)); +@@ -1885,8 +1897,10 @@ + * controlling terminal which will result in "could not set + * controlling tty" errors. + */ +- if (!debug_flag && !inetd_flag && setsid() < 0) +- error("setsid: %.100s", strerror(errno)); ++ /* ++ *if (!debug_flag && !inetd_flag && setsid() < 0) ++ * error("setsid: %.100s", strerror(errno)); ++ */ + #endif + + if (rexec_flag) { +@@ -1953,7 +1967,7 @@ + packet_set_server(); + ssh = active_state; /* XXX */ + +- check_ip_options(ssh); ++ //check_ip_options(ssh); + + /* Prepare the channels layer */ + channel_init_channels(ssh); +@@ -2026,7 +2040,7 @@ + + /* perform the key exchange */ + /* authenticate user and start session */ +- do_ssh2_kex(); ++ //do_ssh2_kex(); + do_authentication2(authctxt); + + /* +@@ -2142,73 +2156,75 @@ + } + + /* SSH2 key exchange */ +-static void +-do_ssh2_kex(void) +-{ +- char *myproposal[PROPOSAL_MAX] = { KEX_SERVER }; +- struct kex *kex; +- int r; +- +- myproposal[PROPOSAL_KEX_ALGS] = compat_kex_proposal( +- options.kex_algorithms); +- myproposal[PROPOSAL_ENC_ALGS_CTOS] = compat_cipher_proposal( +- options.ciphers); +- myproposal[PROPOSAL_ENC_ALGS_STOC] = compat_cipher_proposal( +- options.ciphers); +- myproposal[PROPOSAL_MAC_ALGS_CTOS] = +- myproposal[PROPOSAL_MAC_ALGS_STOC] = options.macs; +- +- if (options.compression == COMP_NONE) { +- myproposal[PROPOSAL_COMP_ALGS_CTOS] = +- myproposal[PROPOSAL_COMP_ALGS_STOC] = "none"; +- } +- +- if (options.rekey_limit || options.rekey_interval) +- packet_set_rekey_limits(options.rekey_limit, +- options.rekey_interval); +- +- myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = compat_pkalg_proposal( +- list_hostkey_types()); +- +- /* start key exchange */ +- if ((r = kex_setup(active_state, myproposal)) != 0) +- fatal("kex_setup: %s", ssh_err(r)); +- kex = active_state->kex; +-#ifdef WITH_OPENSSL +- kex->kex[KEX_DH_GRP1_SHA1] = kexdh_server; +- kex->kex[KEX_DH_GRP14_SHA1] = kexdh_server; +- kex->kex[KEX_DH_GRP14_SHA256] = kexdh_server; +- kex->kex[KEX_DH_GRP16_SHA512] = kexdh_server; +- kex->kex[KEX_DH_GRP18_SHA512] = kexdh_server; +- kex->kex[KEX_DH_GEX_SHA1] = kexgex_server; +- kex->kex[KEX_DH_GEX_SHA256] = kexgex_server; +-# ifdef OPENSSL_HAS_ECC +- kex->kex[KEX_ECDH_SHA2] = kexecdh_server; +-# endif +-#endif +- kex->kex[KEX_C25519_SHA256] = kexc25519_server; +- kex->server = 1; +- kex->client_version_string=client_version_string; +- kex->server_version_string=server_version_string; +- kex->load_host_public_key=&get_hostkey_public_by_type; +- kex->load_host_private_key=&get_hostkey_private_by_type; +- kex->host_key_index=&get_hostkey_index; +- kex->sign = sshd_hostkey_sign; +- +- ssh_dispatch_run_fatal(active_state, DISPATCH_BLOCK, &kex->done); +- +- session_id2 = kex->session_id; +- session_id2_len = kex->session_id_len; +- +-#ifdef DEBUG_KEXDH +- /* send 1st encrypted/maced/compressed message */ +- packet_start(SSH2_MSG_IGNORE); +- packet_put_cstring("markus"); +- packet_send(); +- packet_write_wait(); +-#endif +- debug("KEX done"); +-} ++/* ++ *static void ++ *do_ssh2_kex(void) ++ *{ ++ * char *myproposal[PROPOSAL_MAX] = { KEX_SERVER }; ++ * struct kex *kex; ++ * int r; ++ * ++ * myproposal[PROPOSAL_KEX_ALGS] = compat_kex_proposal( ++ * options.kex_algorithms); ++ * myproposal[PROPOSAL_ENC_ALGS_CTOS] = compat_cipher_proposal( ++ * options.ciphers); ++ * myproposal[PROPOSAL_ENC_ALGS_STOC] = compat_cipher_proposal( ++ * options.ciphers); ++ * myproposal[PROPOSAL_MAC_ALGS_CTOS] = ++ * myproposal[PROPOSAL_MAC_ALGS_STOC] = options.macs; ++ * ++ * if (options.compression == COMP_NONE) { ++ * myproposal[PROPOSAL_COMP_ALGS_CTOS] = ++ * myproposal[PROPOSAL_COMP_ALGS_STOC] = "none"; ++ * } ++ * ++ * if (options.rekey_limit || options.rekey_interval) ++ * packet_set_rekey_limits(options.rekey_limit, ++ * options.rekey_interval); ++ * ++ * myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = compat_pkalg_proposal( ++ * list_hostkey_types()); ++ * ++ * [> start key exchange <] ++ * if ((r = kex_setup(active_state, myproposal)) != 0) ++ * fatal("kex_setup: %s", ssh_err(r)); ++ * kex = active_state->kex; ++ *#ifdef WITH_OPENSSL ++ * kex->kex[KEX_DH_GRP1_SHA1] = kexdh_server; ++ * kex->kex[KEX_DH_GRP14_SHA1] = kexdh_server; ++ * kex->kex[KEX_DH_GRP14_SHA256] = kexdh_server; ++ * kex->kex[KEX_DH_GRP16_SHA512] = kexdh_server; ++ * kex->kex[KEX_DH_GRP18_SHA512] = kexdh_server; ++ * kex->kex[KEX_DH_GEX_SHA1] = kexgex_server; ++ * kex->kex[KEX_DH_GEX_SHA256] = kexgex_server; ++ *# ifdef OPENSSL_HAS_ECC ++ * kex->kex[KEX_ECDH_SHA2] = kexecdh_server; ++ *# endif ++ *#endif ++ * kex->kex[KEX_C25519_SHA256] = kexc25519_server; ++ * kex->server = 1; ++ * kex->client_version_string=client_version_string; ++ * kex->server_version_string=server_version_string; ++ * kex->load_host_public_key=&get_hostkey_public_by_type; ++ * kex->load_host_private_key=&get_hostkey_private_by_type; ++ * kex->host_key_index=&get_hostkey_index; ++ * kex->sign = sshd_hostkey_sign; ++ * ++ * ssh_dispatch_run_fatal(active_state, DISPATCH_BLOCK, &kex->done); ++ * ++ * session_id2 = kex->session_id; ++ * session_id2_len = kex->session_id_len; ++ * ++ *#ifdef DEBUG_KEXDH ++ * [> send 1st encrypted/maced/compressed message <] ++ * packet_start(SSH2_MSG_IGNORE); ++ * packet_put_cstring("markus"); ++ * packet_send(); ++ * packet_write_wait(); ++ *#endif ++ * debug("KEX done"); ++ *} ++ */ + + /* server specific fatal cleanup */ + void +diff -ru source/ssh-dss.c source-new/ssh-dss.c +--- source/ssh-dss.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/ssh-dss.c 2017-11-02 18:31:51.968879029 -0700 +@@ -53,6 +53,7 @@ + DSA_SIG *sig = NULL; + u_char digest[SSH_DIGEST_MAX_LENGTH], sigblob[SIGBLOB_LEN]; + size_t rlen, slen, len, dlen = ssh_digest_bytes(SSH_DIGEST_SHA1); ++ const BIGNUM *r, *s; + struct sshbuf *b = NULL; + int ret = SSH_ERR_INVALID_ARGUMENT; + +@@ -76,15 +77,16 @@ + goto out; + } + +- rlen = BN_num_bytes(sig->r); +- slen = BN_num_bytes(sig->s); ++ DSA_SIG_get0(sig, &r, &s); ++ rlen = BN_num_bytes(r); ++ slen = BN_num_bytes(s); + if (rlen > INTBLOB_LEN || slen > INTBLOB_LEN) { + ret = SSH_ERR_INTERNAL_ERROR; + goto out; + } + explicit_bzero(sigblob, SIGBLOB_LEN); +- BN_bn2bin(sig->r, sigblob + SIGBLOB_LEN - INTBLOB_LEN - rlen); +- BN_bn2bin(sig->s, sigblob + SIGBLOB_LEN - slen); ++ BN_bn2bin(r, sigblob + SIGBLOB_LEN - INTBLOB_LEN - rlen); ++ BN_bn2bin(s, sigblob + SIGBLOB_LEN - slen); + + if (compat & SSH_BUG_SIGBLOB) { + if (sigp != NULL) { +@@ -176,17 +178,26 @@ + } + + /* parse signature */ ++ { ++ BIGNUM *r=NULL, *s=NULL; + if ((sig = DSA_SIG_new()) == NULL || +- (sig->r = BN_new()) == NULL || +- (sig->s = BN_new()) == NULL) { ++ (r = BN_new()) == NULL || ++ (s = BN_new()) == NULL) { + ret = SSH_ERR_ALLOC_FAIL; ++ BN_free(r); ++ BN_free(s); + goto out; + } +- if ((BN_bin2bn(sigblob, INTBLOB_LEN, sig->r) == NULL) || +- (BN_bin2bn(sigblob+ INTBLOB_LEN, INTBLOB_LEN, sig->s) == NULL)) { ++ if ((BN_bin2bn(sigblob, INTBLOB_LEN, r) == NULL) || ++ (BN_bin2bn(sigblob+ INTBLOB_LEN, INTBLOB_LEN, s) == NULL)) { + ret = SSH_ERR_LIBCRYPTO_ERROR; ++ BN_free(r); ++ BN_free(s); + goto out; + } ++ DSA_SIG_set0(sig, r, s); ++ r = s = NULL; ++ } + + /* sha1 the data */ + if ((ret = ssh_digest_memory(SSH_DIGEST_SHA1, data, datalen, +diff -ru source/ssh-ecdsa.c source-new/ssh-ecdsa.c +--- source/ssh-ecdsa.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/ssh-ecdsa.c 2017-11-02 18:31:51.968879029 -0700 +@@ -80,9 +80,14 @@ + ret = SSH_ERR_ALLOC_FAIL; + goto out; + } +- if ((ret = sshbuf_put_bignum2(bb, sig->r)) != 0 || +- (ret = sshbuf_put_bignum2(bb, sig->s)) != 0) ++ { ++ const BIGNUM *r, *s; ++ ECDSA_SIG_get0(sig, &r, &s); ++ if ((ret = sshbuf_put_bignum2(bb, r)) != 0 || ++ (ret = sshbuf_put_bignum2(bb, s)) != 0) { + goto out; ++ } ++ } + if ((ret = sshbuf_put_cstring(b, sshkey_ssh_name_plain(key))) != 0 || + (ret = sshbuf_put_stringb(b, bb)) != 0) + goto out; +@@ -151,11 +156,27 @@ + ret = SSH_ERR_ALLOC_FAIL; + goto out; + } +- if (sshbuf_get_bignum2(sigbuf, sig->r) != 0 || +- sshbuf_get_bignum2(sigbuf, sig->s) != 0) { ++ { ++ BIGNUM *r=NULL, *s=NULL; ++ if ((r = BN_new()) == NULL || ++ (s = BN_new()) == NULL) { ++ ret = SSH_ERR_ALLOC_FAIL; ++ goto out_rs; ++ } ++ if (sshbuf_get_bignum2(sigbuf, r) != 0 || ++ sshbuf_get_bignum2(sigbuf, s) != 0) { + ret = SSH_ERR_INVALID_FORMAT; ++ goto out_rs; ++ } ++ if (ECDSA_SIG_set0(sig, r, s) == 0) { ++ ret = SSH_ERR_LIBCRYPTO_ERROR; ++out_rs: ++ BN_free(r); ++ BN_free(s); + goto out; + } ++ r = s = NULL; ++ } + if (sshbuf_len(sigbuf) != 0) { + ret = SSH_ERR_UNEXPECTED_TRAILING_DATA; + goto out; +diff -ru source/sshkey.c source-new/sshkey.c +--- source/sshkey.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/sshkey.c 2017-11-02 18:31:51.968879029 -0700 +@@ -264,10 +264,18 @@ + #ifdef WITH_OPENSSL + case KEY_RSA: + case KEY_RSA_CERT: +- return BN_num_bits(k->rsa->n); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000UL ++ return RSA_bits(k->rsa); ++#else ++ return RSA_bits(key->rsa); ++#endif + case KEY_DSA: + case KEY_DSA_CERT: ++#if OPENSSL_VERSION_NUMBER >= 0x10100000UL ++ return DSA_bits(k->dsa); ++#else + return BN_num_bits(k->dsa->p); ++#endif + case KEY_ECDSA: + case KEY_ECDSA_CERT: + return sshkey_curve_nid_to_bits(k->ecdsa_nid); +@@ -466,28 +474,55 @@ + #ifdef WITH_OPENSSL + case KEY_RSA: + case KEY_RSA_CERT: ++ { ++ BIGNUM *n=NULL, *e=NULL; /* just allocate */ + if ((rsa = RSA_new()) == NULL || +- (rsa->n = BN_new()) == NULL || +- (rsa->e = BN_new()) == NULL) { ++ (n = BN_new()) == NULL || ++ (e = BN_new()) == NULL) { ++ BN_free(n); ++ BN_free(e); + if (rsa != NULL) + RSA_free(rsa); + free(k); + return NULL; + } ++ BN_clear(n); BN_clear(e); ++ if (RSA_set0_key(rsa, n, e, NULL) == 0) ++ return NULL; ++ n = e = NULL; ++ } + k->rsa = rsa; + break; + case KEY_DSA: + case KEY_DSA_CERT: ++ { ++ BIGNUM *p=NULL, *q=NULL, *g=NULL, *pubkey=NULL; /* just allocate */ + if ((dsa = DSA_new()) == NULL || +- (dsa->p = BN_new()) == NULL || +- (dsa->q = BN_new()) == NULL || +- (dsa->g = BN_new()) == NULL || +- (dsa->pub_key = BN_new()) == NULL) { ++ (p = BN_new()) == NULL || ++ (q = BN_new()) == NULL || ++ (g = BN_new()) == NULL || ++ (pubkey = BN_new()) == NULL) { ++ BN_free(p); ++ BN_free(q); ++ BN_free(g); ++ BN_free(pubkey); + if (dsa != NULL) + DSA_free(dsa); + free(k); + return NULL; + } ++ if (DSA_set0_pqg(dsa, p, q, g) == 0) { ++ BN_free(p); BN_free(q); BN_free(g); ++ BN_free(pubkey); ++ return NULL; ++ } ++ p = q = g = NULL; ++ if (DSA_set0_key(dsa, pubkey, NULL) == 0) { ++ BN_free(pubkey); ++ return NULL; ++ } ++ pubkey = NULL; ++ } + k->dsa = dsa; + break; + case KEY_ECDSA: +@@ -523,6 +558,51 @@ + #ifdef WITH_OPENSSL + case KEY_RSA: + case KEY_RSA_CERT: ++#if OPENSSL_VERSION_NUMBER >= 0x10100000UL ++ /* Allocate BIGNUM. This is a mess. ++ For OpenSSL 1.1.x API these shouldn't be mandatory, ++ but some regression tests for non-NULL pointer of ++ the data. */ ++#define new_or_dup(bn, nbn) \ ++ if (bn == NULL) { \ ++ if ((nbn = BN_new()) == NULL) \ ++ return SSH_ERR_ALLOC_FAIL; \ ++ } else { \ ++ /* otherwise use-after-free will occur */ \ ++ if ((nbn = BN_dup(bn)) == NULL) \ ++ return SSH_ERR_ALLOC_FAIL; \ ++ } ++ { ++ const BIGNUM *d, *iqmp, *q, *p, *dmq1, *dmp1; /* allocate if NULL */ ++ BIGNUM *nd, *niqmp, *nq, *np, *ndmq1, *ndmp1; ++ ++ RSA_get0_key(k->rsa, NULL, NULL, &d); ++ RSA_get0_factors(k->rsa, &p, &q); ++ RSA_get0_crt_params(k->rsa, &dmp1, &dmq1, &iqmp); ++ ++ new_or_dup(d, nd); ++ new_or_dup(iqmp, niqmp); ++ new_or_dup(q, nq); ++ new_or_dup(p, np); ++ new_or_dup(dmq1, ndmq1); ++ new_or_dup(dmp1, ndmp1); ++ ++ if (RSA_set0_key(k->rsa, NULL, NULL, nd) == 0) ++ goto error1; ++ nd = NULL; ++ if (RSA_set0_factors(k->rsa, np, nq) == 0) ++ goto error1; ++ np = nq = NULL; ++ if (RSA_set0_crt_params(k->rsa, ndmp1, ndmq1, niqmp) == 0) { ++error1: ++ BN_free(nd); ++ BN_free(np); BN_free(nq); ++ BN_free(ndmp1); BN_free(ndmq1); BN_free(niqmp); ++ return SSH_ERR_LIBCRYPTO_ERROR; ++ } ++ ndmp1 = ndmq1 = niqmp = NULL; ++ } ++#else + #define bn_maybe_alloc_failed(p) (p == NULL && (p = BN_new()) == NULL) + if (bn_maybe_alloc_failed(k->rsa->d) || + bn_maybe_alloc_failed(k->rsa->iqmp) || +@@ -531,13 +611,28 @@ + bn_maybe_alloc_failed(k->rsa->dmq1) || + bn_maybe_alloc_failed(k->rsa->dmp1)) + return SSH_ERR_ALLOC_FAIL; ++#endif + break; + case KEY_DSA: + case KEY_DSA_CERT: ++#if OPENSSL_VERSION_NUMBER >= 0x10100000UL ++ { ++ const BIGNUM *priv_key; ++ BIGNUM *npriv_key; ++ DSA_get0_key(k->dsa, NULL, &priv_key); ++ new_or_dup(priv_key, npriv_key); ++ if (DSA_set0_key(k->dsa, NULL, npriv_key) == 0) { ++ BN_free(npriv_key); ++ return SSH_ERR_LIBCRYPTO_ERROR; ++ } ++ } ++#else + if (bn_maybe_alloc_failed(k->dsa->priv_key)) + return SSH_ERR_ALLOC_FAIL; ++#endif + break; + #undef bn_maybe_alloc_failed ++#undef new_or_dup + case KEY_ECDSA: + case KEY_ECDSA_CERT: + /* Cannot do anything until we know the group */ +@@ -655,16 +750,34 @@ + #ifdef WITH_OPENSSL + case KEY_RSA_CERT: + case KEY_RSA: +- return a->rsa != NULL && b->rsa != NULL && +- BN_cmp(a->rsa->e, b->rsa->e) == 0 && +- BN_cmp(a->rsa->n, b->rsa->n) == 0; ++ { ++ const BIGNUM *a_e, *b_e, *a_n, *b_n; ++ const BIGNUM *a_d, *b_d; ++ if (a->rsa == NULL) return 0; ++ if (b->rsa == NULL) return 0; ++ RSA_get0_key(a->rsa, &a_n, &a_e, &a_d); ++ RSA_get0_key(b->rsa, &b_n, &b_e, &b_d); ++ return ++ BN_cmp(a_e, b_e) == 0 && ++ BN_cmp(a_n, b_n) == 0; ++ } + case KEY_DSA_CERT: + case KEY_DSA: +- return a->dsa != NULL && b->dsa != NULL && +- BN_cmp(a->dsa->p, b->dsa->p) == 0 && +- BN_cmp(a->dsa->q, b->dsa->q) == 0 && +- BN_cmp(a->dsa->g, b->dsa->g) == 0 && +- BN_cmp(a->dsa->pub_key, b->dsa->pub_key) == 0; ++ { ++ const BIGNUM *a_p, *a_q, *a_g, *a_pub_key; ++ const BIGNUM *b_p, *b_q, *b_g, *b_pub_key; ++ if (a->dsa == NULL) return 0; ++ if (b->dsa == NULL) return 0; ++ DSA_get0_pqg(a->dsa, &a_p, &a_q, &a_g); ++ DSA_get0_pqg(b->dsa, &b_p, &b_q, &b_g); ++ DSA_get0_key(a->dsa, &a_pub_key, NULL); ++ DSA_get0_key(b->dsa, &b_pub_key, NULL); ++ return ++ BN_cmp(a_p, b_p) == 0 && ++ BN_cmp(a_q, b_q) == 0 && ++ BN_cmp(a_g, b_g) == 0 && ++ BN_cmp(a_pub_key, b_pub_key) == 0; ++ } + # ifdef OPENSSL_HAS_ECC + case KEY_ECDSA_CERT: + case KEY_ECDSA: +@@ -742,12 +855,17 @@ + case KEY_DSA: + if (key->dsa == NULL) + return SSH_ERR_INVALID_ARGUMENT; ++ { ++ const BIGNUM *p, *q, *g, *pub_key; ++ DSA_get0_pqg(key->dsa, &p, &q, &g); ++ DSA_get0_key(key->dsa, &pub_key, NULL); + if ((ret = sshbuf_put_cstring(b, typename)) != 0 || +- (ret = sshbuf_put_bignum2(b, key->dsa->p)) != 0 || +- (ret = sshbuf_put_bignum2(b, key->dsa->q)) != 0 || +- (ret = sshbuf_put_bignum2(b, key->dsa->g)) != 0 || +- (ret = sshbuf_put_bignum2(b, key->dsa->pub_key)) != 0) ++ (ret = sshbuf_put_bignum2(b, p)) != 0 || ++ (ret = sshbuf_put_bignum2(b, q)) != 0 || ++ (ret = sshbuf_put_bignum2(b, g)) != 0 || ++ (ret = sshbuf_put_bignum2(b, pub_key)) != 0) + return ret; ++ } + break; + # ifdef OPENSSL_HAS_ECC + case KEY_ECDSA: +@@ -763,10 +881,14 @@ + case KEY_RSA: + if (key->rsa == NULL) + return SSH_ERR_INVALID_ARGUMENT; ++ { ++ const BIGNUM *e, *n; ++ RSA_get0_key(key->rsa, &n, &e, NULL); + if ((ret = sshbuf_put_cstring(b, typename)) != 0 || +- (ret = sshbuf_put_bignum2(b, key->rsa->e)) != 0 || +- (ret = sshbuf_put_bignum2(b, key->rsa->n)) != 0) ++ (ret = sshbuf_put_bignum2(b, e)) != 0 || ++ (ret = sshbuf_put_bignum2(b, n)) != 0) + return ret; ++ } + break; + #endif /* WITH_OPENSSL */ + case KEY_ED25519: +@@ -1643,13 +1765,32 @@ + case KEY_DSA_CERT: + if ((n = sshkey_new(k->type)) == NULL) + return SSH_ERR_ALLOC_FAIL; +- if ((BN_copy(n->dsa->p, k->dsa->p) == NULL) || +- (BN_copy(n->dsa->q, k->dsa->q) == NULL) || +- (BN_copy(n->dsa->g, k->dsa->g) == NULL) || +- (BN_copy(n->dsa->pub_key, k->dsa->pub_key) == NULL)) { ++ { ++ const BIGNUM *p, *q, *g, *pub_key, *priv_key; ++ BIGNUM *cp=NULL, *cq=NULL, *cg=NULL, *cpub_key=NULL; ++ DSA_get0_pqg(k->dsa, &p, &q, &g); ++ DSA_get0_key(k->dsa, &pub_key, &priv_key); ++ if ((cp = BN_dup(p)) == NULL || ++ (cq = BN_dup(q)) == NULL || ++ (cg = BN_dup(g)) == NULL || ++ (cpub_key = BN_dup(pub_key)) == NULL) { ++ BN_free(cp); BN_free(cq); BN_free(cg); ++ BN_free(cpub_key); + sshkey_free(n); + return SSH_ERR_ALLOC_FAIL; + } ++ if (DSA_set0_pqg(n->dsa, cp, cq, cg) == 0) ++ goto error1; ++ cp = cq = cg = NULL; ++ if (DSA_set0_key(n->dsa, cpub_key, NULL) == 0) { ++error1: ++ BN_free(cp); BN_free(cq); BN_free(cg); ++ BN_free(cpub_key); ++ sshkey_free(n); ++ return SSH_ERR_LIBCRYPTO_ERROR; ++ } ++ cpub_key = NULL; ++ } + break; + # ifdef OPENSSL_HAS_ECC + case KEY_ECDSA: +@@ -1673,11 +1814,23 @@ + case KEY_RSA_CERT: + if ((n = sshkey_new(k->type)) == NULL) + return SSH_ERR_ALLOC_FAIL; +- if ((BN_copy(n->rsa->n, k->rsa->n) == NULL) || +- (BN_copy(n->rsa->e, k->rsa->e) == NULL)) { ++ { ++ const BIGNUM *nn, *e, *d; ++ BIGNUM *cn=NULL, *ce=NULL; ++ RSA_get0_key(k->rsa, &nn, &e, &d); ++ if ((cn = BN_dup(nn)) == NULL || ++ (ce = BN_dup(e)) == NULL ) { ++ BN_free(cn); BN_free(ce); + sshkey_free(n); + return SSH_ERR_ALLOC_FAIL; + } ++ if (RSA_set0_key(n->rsa, cn, ce, NULL) == 0) { ++ BN_free(cn); BN_free(ce); ++ sshkey_free(n); ++ return SSH_ERR_LIBCRYPTO_ERROR; ++ } ++ cn = ce = NULL; ++ } + break; + #endif /* WITH_OPENSSL */ + case KEY_ED25519: +@@ -1875,12 +2028,27 @@ + ret = SSH_ERR_ALLOC_FAIL; + goto out; + } +- if (sshbuf_get_bignum2(b, key->rsa->e) != 0 || +- sshbuf_get_bignum2(b, key->rsa->n) != 0) { ++ { ++ BIGNUM *e=NULL, *n=NULL; ++ if ((e = BN_new()) == NULL || ++ (n = BN_new()) == NULL ) { ++ ret = SSH_ERR_ALLOC_FAIL; ++ BN_free(e); BN_free(n); ++ goto out; ++ } ++ if (sshbuf_get_bignum2(b, e) != 0 || ++ sshbuf_get_bignum2(b, n) != 0) { + ret = SSH_ERR_INVALID_FORMAT; ++ BN_free(e); BN_free(n); + goto out; + } +- if (BN_num_bits(key->rsa->n) < SSH_RSA_MINIMUM_MODULUS_SIZE) { ++ if (RSA_set0_key(key->rsa, n, e, NULL) == 0) { ++ BN_free(e); BN_free(n); ++ return SSH_ERR_LIBCRYPTO_ERROR; ++ } ++ n = e = NULL; ++ } ++ if (RSA_bits(key->rsa) < SSH_RSA_MINIMUM_MODULUS_SIZE) { + ret = SSH_ERR_KEY_LENGTH; + goto out; + } +@@ -1900,13 +2068,36 @@ + ret = SSH_ERR_ALLOC_FAIL; + goto out; + } +- if (sshbuf_get_bignum2(b, key->dsa->p) != 0 || +- sshbuf_get_bignum2(b, key->dsa->q) != 0 || +- sshbuf_get_bignum2(b, key->dsa->g) != 0 || +- sshbuf_get_bignum2(b, key->dsa->pub_key) != 0) { ++ { ++ BIGNUM *p=NULL, *q=NULL, *g=NULL, *pub_key=NULL; ++ if ((p = BN_new()) == NULL || ++ (q = BN_new()) == NULL || ++ (g = BN_new()) == NULL || ++ (pub_key = BN_new()) == NULL) { ++ ret = SSH_ERR_ALLOC_FAIL; ++ goto error1; ++ } ++ if (sshbuf_get_bignum2(b, p) != 0 || ++ sshbuf_get_bignum2(b, q) != 0 || ++ sshbuf_get_bignum2(b, g) != 0 || ++ sshbuf_get_bignum2(b, pub_key) != 0) { + ret = SSH_ERR_INVALID_FORMAT; ++ goto error1; ++ } ++ if (DSA_set0_pqg(key->dsa, p, q, g) == 0) { ++ ret = SSH_ERR_LIBCRYPTO_ERROR; ++ goto error1; ++ } ++ p = q = g = NULL; ++ if (DSA_set0_key(key->dsa, pub_key, NULL) == 0) { ++ ret = SSH_ERR_LIBCRYPTO_ERROR; ++error1: ++ BN_free(p); BN_free(q); BN_free(g); ++ BN_free(pub_key); + goto out; + } ++ pub_key = NULL; ++ } + #ifdef DEBUG_PK + DSA_print_fp(stderr, key->dsa, 8); + #endif +@@ -2140,26 +2331,63 @@ + goto fail; + /* FALLTHROUGH */ + case KEY_RSA: +- if ((pk->rsa = RSA_new()) == NULL || +- (pk->rsa->e = BN_dup(k->rsa->e)) == NULL || +- (pk->rsa->n = BN_dup(k->rsa->n)) == NULL) { ++ if ((pk->rsa = RSA_new()) == NULL ){ + ret = SSH_ERR_ALLOC_FAIL; + goto fail; + } ++ { ++ const BIGNUM *ke, *kn; ++ BIGNUM *pke=NULL, *pkn=NULL; ++ RSA_get0_key(k->rsa, &kn, &ke, NULL); ++ if ((pke = BN_dup(ke)) == NULL || ++ (pkn = BN_dup(kn)) == NULL) { ++ ret = SSH_ERR_ALLOC_FAIL; ++ BN_free(pke); BN_free(pkn); ++ goto fail; ++ } ++ if (RSA_set0_key(pk->rsa, pkn, pke, NULL) == 0) { ++ ret = SSH_ERR_LIBCRYPTO_ERROR; ++ BN_free(pke); BN_free(pkn); ++ goto fail; ++ } ++ pkn = pke = NULL; ++ } + break; + case KEY_DSA_CERT: + if ((ret = sshkey_cert_copy(k, pk)) != 0) + goto fail; + /* FALLTHROUGH */ + case KEY_DSA: +- if ((pk->dsa = DSA_new()) == NULL || +- (pk->dsa->p = BN_dup(k->dsa->p)) == NULL || +- (pk->dsa->q = BN_dup(k->dsa->q)) == NULL || +- (pk->dsa->g = BN_dup(k->dsa->g)) == NULL || +- (pk->dsa->pub_key = BN_dup(k->dsa->pub_key)) == NULL) { ++ if ((pk->dsa = DSA_new()) == NULL ) { + ret = SSH_ERR_ALLOC_FAIL; + goto fail; + } ++ { ++ const BIGNUM *kp, *kq, *kg, *kpub_key; ++ BIGNUM *pkp=NULL, *pkq=NULL, *pkg=NULL, *pkpub_key=NULL; ++ DSA_get0_pqg(k->dsa, &kp, &kq, &kg); ++ DSA_get0_key(k->dsa, &kpub_key, NULL); ++ if ((pkp = BN_dup(kp)) == NULL || ++ (pkq = BN_dup(kq)) == NULL || ++ (pkg = BN_dup(kg)) == NULL || ++ (pkpub_key = BN_dup(kpub_key)) == NULL) { ++ ret = SSH_ERR_ALLOC_FAIL; ++ goto error1; ++ } ++ if (DSA_set0_pqg(pk->dsa, pkp, pkq, pkg) == 0) { ++ ret = SSH_ERR_LIBCRYPTO_ERROR; ++ goto error1; ++ } ++ pkp = pkq = pkg = NULL; ++ if (DSA_set0_key(pk->dsa, pkpub_key, NULL) == 0) { ++ ret = SSH_ERR_LIBCRYPTO_ERROR; ++error1: ++ BN_free(pkp); BN_free(pkq); BN_free(pkg); ++ BN_free(pkpub_key); ++ goto fail; ++ } ++ pkpub_key = NULL; ++ } + break; + case KEY_ECDSA_CERT: + if ((ret = sshkey_cert_copy(k, pk)) != 0) +@@ -2281,11 +2509,17 @@ + switch (k->type) { + #ifdef WITH_OPENSSL + case KEY_DSA_CERT: +- if ((ret = sshbuf_put_bignum2(cert, k->dsa->p)) != 0 || +- (ret = sshbuf_put_bignum2(cert, k->dsa->q)) != 0 || +- (ret = sshbuf_put_bignum2(cert, k->dsa->g)) != 0 || +- (ret = sshbuf_put_bignum2(cert, k->dsa->pub_key)) != 0) ++ { ++ const BIGNUM *p, *q, *g, *pub_key; ++ DSA_get0_pqg(k->dsa, &p, &q, &g); ++ DSA_get0_key(k->dsa, &pub_key, NULL); ++ if ((ret = sshbuf_put_bignum2(cert, p)) != 0 || ++ (ret = sshbuf_put_bignum2(cert, q)) != 0 || ++ (ret = sshbuf_put_bignum2(cert, g)) != 0 || ++ (ret = sshbuf_put_bignum2(cert, pub_key)) != 0) { + goto out; ++ } ++ } + break; + # ifdef OPENSSL_HAS_ECC + case KEY_ECDSA_CERT: +@@ -2298,9 +2532,15 @@ + break; + # endif /* OPENSSL_HAS_ECC */ + case KEY_RSA_CERT: +- if ((ret = sshbuf_put_bignum2(cert, k->rsa->e)) != 0 || +- (ret = sshbuf_put_bignum2(cert, k->rsa->n)) != 0) ++ { ++ const BIGNUM *e, *n; ++ RSA_get0_key(k->rsa, &n, &e, NULL); ++ if (n == NULL || e == NULL || ++ (ret = sshbuf_put_bignum2(cert, e)) != 0 || ++ (ret = sshbuf_put_bignum2(cert, n)) != 0) { + goto out; ++ } ++ } + break; + #endif /* WITH_OPENSSL */ + case KEY_ED25519_CERT: +@@ -2474,42 +2714,67 @@ + switch (key->type) { + #ifdef WITH_OPENSSL + case KEY_RSA: +- if ((r = sshbuf_put_bignum2(b, key->rsa->n)) != 0 || +- (r = sshbuf_put_bignum2(b, key->rsa->e)) != 0 || +- (r = sshbuf_put_bignum2(b, key->rsa->d)) != 0 || +- (r = sshbuf_put_bignum2(b, key->rsa->iqmp)) != 0 || +- (r = sshbuf_put_bignum2(b, key->rsa->p)) != 0 || +- (r = sshbuf_put_bignum2(b, key->rsa->q)) != 0) ++ { ++ const BIGNUM *n, *e, *d, *iqmp, *p, *q; ++ RSA_get0_key(key->rsa, &n, &e, &d); ++ RSA_get0_crt_params(key->rsa, NULL, NULL, &iqmp); ++ RSA_get0_factors(key->rsa, &p, &q); ++ if ((r = sshbuf_put_bignum2(b, n)) != 0 || ++ (r = sshbuf_put_bignum2(b, e)) != 0 || ++ (r = sshbuf_put_bignum2(b, d)) != 0 || ++ (r = sshbuf_put_bignum2(b, iqmp)) != 0 || ++ (r = sshbuf_put_bignum2(b, p)) != 0 || ++ (r = sshbuf_put_bignum2(b, q)) != 0) { + goto out; ++ } ++ } + break; + case KEY_RSA_CERT: + if (key->cert == NULL || sshbuf_len(key->cert->certblob) == 0) { + r = SSH_ERR_INVALID_ARGUMENT; + goto out; + } ++ { ++ const BIGNUM *d, *iqmp, *p, *q; ++ RSA_get0_key(key->rsa, NULL, NULL, &d); ++ RSA_get0_crt_params(key->rsa, NULL, NULL, &iqmp); ++ RSA_get0_factors(key->rsa, &p, &q); + if ((r = sshbuf_put_stringb(b, key->cert->certblob)) != 0 || +- (r = sshbuf_put_bignum2(b, key->rsa->d)) != 0 || +- (r = sshbuf_put_bignum2(b, key->rsa->iqmp)) != 0 || +- (r = sshbuf_put_bignum2(b, key->rsa->p)) != 0 || +- (r = sshbuf_put_bignum2(b, key->rsa->q)) != 0) ++ (r = sshbuf_put_bignum2(b, d)) != 0 || ++ (r = sshbuf_put_bignum2(b, iqmp)) != 0 || ++ (r = sshbuf_put_bignum2(b, p)) != 0 || ++ (r = sshbuf_put_bignum2(b, q)) != 0) { + goto out; ++ } ++ } + break; + case KEY_DSA: +- if ((r = sshbuf_put_bignum2(b, key->dsa->p)) != 0 || +- (r = sshbuf_put_bignum2(b, key->dsa->q)) != 0 || +- (r = sshbuf_put_bignum2(b, key->dsa->g)) != 0 || +- (r = sshbuf_put_bignum2(b, key->dsa->pub_key)) != 0 || +- (r = sshbuf_put_bignum2(b, key->dsa->priv_key)) != 0) ++ { ++ const BIGNUM *p, *q, *g, *pub_key, *priv_key; ++ DSA_get0_pqg(key->dsa, &p, &q, &g); ++ DSA_get0_key(key->dsa, &pub_key, &priv_key); ++ if ((r = sshbuf_put_bignum2(b, p)) != 0 || ++ (r = sshbuf_put_bignum2(b, q)) != 0 || ++ (r = sshbuf_put_bignum2(b, g)) != 0 || ++ (r = sshbuf_put_bignum2(b, pub_key)) != 0 || ++ (r = sshbuf_put_bignum2(b, priv_key)) != 0) { + goto out; ++ } ++ } + break; + case KEY_DSA_CERT: + if (key->cert == NULL || sshbuf_len(key->cert->certblob) == 0) { + r = SSH_ERR_INVALID_ARGUMENT; + goto out; + } ++ { ++ const BIGNUM *priv_key; ++ DSA_get0_key(key->dsa, NULL, &priv_key); + if ((r = sshbuf_put_stringb(b, key->cert->certblob)) != 0 || +- (r = sshbuf_put_bignum2(b, key->dsa->priv_key)) != 0) ++ (r = sshbuf_put_bignum2(b, priv_key)) != 0) { + goto out; ++ } ++ } + break; + # ifdef OPENSSL_HAS_ECC + case KEY_ECDSA: +@@ -2585,18 +2850,61 @@ + r = SSH_ERR_ALLOC_FAIL; + goto out; + } +- if ((r = sshbuf_get_bignum2(buf, k->dsa->p)) != 0 || +- (r = sshbuf_get_bignum2(buf, k->dsa->q)) != 0 || +- (r = sshbuf_get_bignum2(buf, k->dsa->g)) != 0 || +- (r = sshbuf_get_bignum2(buf, k->dsa->pub_key)) != 0 || +- (r = sshbuf_get_bignum2(buf, k->dsa->priv_key)) != 0) ++ { ++ BIGNUM *p=NULL, *q=NULL, *g=NULL, *pub_key=NULL, *priv_key=NULL; ++ if ((p = BN_new()) == NULL || ++ (q = BN_new()) == NULL || ++ (g = BN_new()) == NULL || ++ (pub_key = BN_new()) == NULL || ++ (priv_key = BN_new()) == NULL) { ++ r = SSH_ERR_ALLOC_FAIL; ++ goto error1; ++ } ++ if (p == NULL || q == NULL || g == NULL || ++ pub_key == NULL || priv_key == NULL || ++ (r = sshbuf_get_bignum2(buf, p)) != 0 || ++ (r = sshbuf_get_bignum2(buf, q)) != 0 || ++ (r = sshbuf_get_bignum2(buf, g)) != 0 || ++ (r = sshbuf_get_bignum2(buf, pub_key)) != 0 || ++ (r = sshbuf_get_bignum2(buf, priv_key)) != 0) { ++ goto error1; ++ } ++ if (DSA_set0_pqg(k->dsa, p, q, g) == 0) { ++ r = SSH_ERR_LIBCRYPTO_ERROR; ++ goto error1; ++ } ++ p = q = g = NULL; ++ if (DSA_set0_key(k->dsa, pub_key, priv_key) == 0) { ++ r = SSH_ERR_LIBCRYPTO_ERROR; ++error1: ++ BN_free(p); BN_free(q); BN_free(g); ++ BN_free(pub_key); BN_free(priv_key); + goto out; ++ } ++ pub_key = priv_key = NULL; ++ } + break; + case KEY_DSA_CERT: +- if ((r = sshkey_froms(buf, &k)) != 0 || ++ { ++ BIGNUM *priv_key=NULL; ++ if ((priv_key = BN_new()) == NULL) { ++ r = SSH_ERR_ALLOC_FAIL; ++ goto out; ++ } ++ if (priv_key == NULL || ++ (r = sshkey_froms(buf, &k)) != 0 || + (r = sshkey_add_private(k)) != 0 || +- (r = sshbuf_get_bignum2(buf, k->dsa->priv_key)) != 0) ++ (r = sshbuf_get_bignum2(buf, priv_key)) != 0) { ++ BN_free(priv_key); ++ goto out; ++ } ++ if (DSA_set0_key(k->dsa, NULL, priv_key) == 0) { ++ r = SSH_ERR_LIBCRYPTO_ERROR; ++ BN_free(priv_key); + goto out; ++ } ++ priv_key = NULL; ++ } + break; + # ifdef OPENSSL_HAS_ECC + case KEY_ECDSA: +@@ -2655,29 +2963,104 @@ + r = SSH_ERR_ALLOC_FAIL; + goto out; + } +- if ((r = sshbuf_get_bignum2(buf, k->rsa->n)) != 0 || +- (r = sshbuf_get_bignum2(buf, k->rsa->e)) != 0 || +- (r = sshbuf_get_bignum2(buf, k->rsa->d)) != 0 || +- (r = sshbuf_get_bignum2(buf, k->rsa->iqmp)) != 0 || +- (r = sshbuf_get_bignum2(buf, k->rsa->p)) != 0 || +- (r = sshbuf_get_bignum2(buf, k->rsa->q)) != 0 || +- (r = ssh_rsa_generate_additional_parameters(k)) != 0) ++ { ++ BIGNUM *n=NULL, *e=NULL, *d=NULL, *iqmp=NULL, *p=NULL, *q=NULL; ++ BIGNUM *dmp1=NULL, *dmq1=NULL; /* dummy for RSA_set0_crt_params */ ++ if ((n = BN_new()) == NULL || ++ (e = BN_new()) == NULL || ++ (d = BN_new()) == NULL || ++ (iqmp = BN_new()) == NULL || ++ (p = BN_new()) == NULL || ++ (q = BN_new()) == NULL || ++ (dmp1 = BN_new()) == NULL || ++ (dmq1 = BN_new()) == NULL) { ++ r = SSH_ERR_ALLOC_FAIL; ++ goto error2; ++ } ++ BN_clear(dmp1); BN_clear(dmq1); ++ if ((r = sshbuf_get_bignum2(buf, n)) != 0 || ++ (r = sshbuf_get_bignum2(buf, e)) != 0 || ++ (r = sshbuf_get_bignum2(buf, d)) != 0 || ++ (r = sshbuf_get_bignum2(buf, iqmp)) != 0 || ++ (r = sshbuf_get_bignum2(buf, p)) != 0 || ++ (r = sshbuf_get_bignum2(buf, q)) != 0) { ++ goto error2; ++ } ++ if (RSA_set0_key(k->rsa, n, e, d) == 0) { ++ r = SSH_ERR_LIBCRYPTO_ERROR; ++ goto error2; ++ } ++ n = e = d = NULL; ++ /* dmp1,dmpq1 should be non NULL to set iqmp value */ ++ if (RSA_set0_crt_params(k->rsa, dmp1, dmq1, iqmp) == 0) { ++ r = SSH_ERR_LIBCRYPTO_ERROR; ++ goto error2; ++ } ++ dmp1 = dmq1 = iqmp = NULL; ++ if (RSA_set0_factors(k->rsa, p, q) == 0) { ++ r = SSH_ERR_LIBCRYPTO_ERROR; ++ error2: ++ BN_free(n); BN_free(e); BN_free(d); ++ BN_free(iqmp); ++ BN_free(p); BN_free(q); ++ BN_free(dmp1); BN_free(dmq1); ++ goto out; ++ } ++ p = q = NULL; ++ if ((r = ssh_rsa_generate_additional_parameters(k)) != 0) { + goto out; +- if (BN_num_bits(k->rsa->n) < SSH_RSA_MINIMUM_MODULUS_SIZE) { ++ } ++ } ++ if (RSA_bits(k->rsa) < SSH_RSA_MINIMUM_MODULUS_SIZE) { + r = SSH_ERR_KEY_LENGTH; + goto out; + } + break; + case KEY_RSA_CERT: ++ { ++ BIGNUM *d=NULL, *iqmp=NULL, *p=NULL, *q=NULL; ++ BIGNUM *dmp1=NULL, *dmq1=NULL; /* dummy for RSA_set0_crt_params */ ++ if ((d = BN_new()) == NULL || ++ (iqmp = BN_new()) == NULL || ++ (p = BN_new()) == NULL || ++ (q = BN_new()) == NULL || ++ (dmp1 = BN_new()) == NULL || ++ (dmq1 = BN_new()) == NULL) { ++ r = SSH_ERR_ALLOC_FAIL; ++ goto error3; ++ } ++ BN_clear(dmp1); BN_clear(dmq1); + if ((r = sshkey_froms(buf, &k)) != 0 || + (r = sshkey_add_private(k)) != 0 || +- (r = sshbuf_get_bignum2(buf, k->rsa->d)) != 0 || +- (r = sshbuf_get_bignum2(buf, k->rsa->iqmp)) != 0 || +- (r = sshbuf_get_bignum2(buf, k->rsa->p)) != 0 || +- (r = sshbuf_get_bignum2(buf, k->rsa->q)) != 0 || +- (r = ssh_rsa_generate_additional_parameters(k)) != 0) ++ (r = sshbuf_get_bignum2(buf, d)) != 0 || ++ (r = sshbuf_get_bignum2(buf, iqmp)) != 0 || ++ (r = sshbuf_get_bignum2(buf, p)) != 0 || ++ (r = sshbuf_get_bignum2(buf, q)) != 0) { ++ goto error3; ++ } ++ if (RSA_set0_key(k->rsa, NULL, NULL, d) == 0) { ++ r = SSH_ERR_LIBCRYPTO_ERROR; ++ goto error3; ++ } ++ /* dmp1,dmpq1 should be non NULL to set value */ ++ if (RSA_set0_crt_params(k->rsa, dmp1, dmq1, iqmp) == 0) { ++ r = SSH_ERR_LIBCRYPTO_ERROR; ++ goto error3; ++ } ++ dmp1 = dmq1 = iqmp = NULL; ++ if (RSA_set0_factors(k->rsa, p, q) == 0) { ++ r = SSH_ERR_LIBCRYPTO_ERROR; ++ error3: ++ BN_free(d); BN_free(iqmp); ++ BN_free(p); BN_free(q); ++ BN_free(dmp1); BN_free(dmq1); + goto out; +- if (BN_num_bits(k->rsa->n) < SSH_RSA_MINIMUM_MODULUS_SIZE) { ++ } ++ p = q = NULL; ++ if ((r = ssh_rsa_generate_additional_parameters(k)) != 0) ++ goto out; ++ } ++ if (RSA_bits(k->rsa) < SSH_RSA_MINIMUM_MODULUS_SIZE) { + r = SSH_ERR_KEY_LENGTH; + goto out; + } +@@ -3395,7 +3778,6 @@ + switch (pem_reason) { + case EVP_R_BAD_DECRYPT: + return SSH_ERR_KEY_WRONG_PASSPHRASE; +- case EVP_R_BN_DECODE_ERROR: + case EVP_R_DECODE_ERROR: + #ifdef EVP_R_PRIVATE_KEY_DECODE_ERROR + case EVP_R_PRIVATE_KEY_DECODE_ERROR: +@@ -3460,7 +3842,7 @@ + r = convert_libcrypto_error(); + goto out; + } +- if (pk->type == EVP_PKEY_RSA && ++ if (EVP_PKEY_id(pk) == EVP_PKEY_RSA && + (type == KEY_UNSPEC || type == KEY_RSA)) { + if ((prv = sshkey_new(KEY_UNSPEC)) == NULL) { + r = SSH_ERR_ALLOC_FAIL; +@@ -3475,11 +3857,11 @@ + r = SSH_ERR_LIBCRYPTO_ERROR; + goto out; + } +- if (BN_num_bits(prv->rsa->n) < SSH_RSA_MINIMUM_MODULUS_SIZE) { ++ if (RSA_bits(prv->rsa) < SSH_RSA_MINIMUM_MODULUS_SIZE) { + r = SSH_ERR_KEY_LENGTH; + goto out; + } +- } else if (pk->type == EVP_PKEY_DSA && ++ } else if (EVP_PKEY_id(pk) == EVP_PKEY_DSA && + (type == KEY_UNSPEC || type == KEY_DSA)) { + if ((prv = sshkey_new(KEY_UNSPEC)) == NULL) { + r = SSH_ERR_ALLOC_FAIL; +@@ -3491,7 +3873,7 @@ + DSA_print_fp(stderr, prv->dsa, 8); + #endif + #ifdef OPENSSL_HAS_ECC +- } else if (pk->type == EVP_PKEY_EC && ++ } else if (EVP_PKEY_id(pk) == EVP_PKEY_EC && + (type == KEY_UNSPEC || type == KEY_ECDSA)) { + if ((prv = sshkey_new(KEY_UNSPEC)) == NULL) { + r = SSH_ERR_ALLOC_FAIL; +diff -ru source/ssh-keygen.c source-new/ssh-keygen.c +--- source/ssh-keygen.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/ssh-keygen.c 2017-11-02 18:31:51.972212355 -0700 +@@ -496,11 +496,33 @@ + + switch (key->type) { + case KEY_DSA: +- buffer_get_bignum_bits(b, key->dsa->p); +- buffer_get_bignum_bits(b, key->dsa->g); +- buffer_get_bignum_bits(b, key->dsa->q); +- buffer_get_bignum_bits(b, key->dsa->pub_key); +- buffer_get_bignum_bits(b, key->dsa->priv_key); ++ { ++ BIGNUM *p=NULL, *g=NULL, *q=NULL, *pub_key=NULL, *priv_key=NULL; ++ if ((p=BN_new()) == NULL || ++ (g=BN_new()) == NULL || ++ (q=BN_new()) == NULL || ++ (pub_key=BN_new()) == NULL || ++ (priv_key=BN_new()) == NULL) { ++ BN_free(p); ++ BN_free(g); ++ BN_free(q); ++ BN_free(pub_key); ++ BN_free(priv_key); ++ return NULL; ++ } ++ buffer_get_bignum_bits(b, p); ++ buffer_get_bignum_bits(b, g); ++ buffer_get_bignum_bits(b, q); ++ buffer_get_bignum_bits(b, pub_key); ++ buffer_get_bignum_bits(b, priv_key); ++ if (DSA_set0_pqg(key->dsa, p, q, g) == 0 || ++ DSA_set0_key(key->dsa, pub_key, priv_key) == 0) { ++ fatal("failed to set DSA key"); ++ BN_free(p); BN_free(g); BN_free(q); ++ BN_free(pub_key); BN_free(priv_key); ++ return NULL; ++ } ++ } + break; + case KEY_RSA: + if ((r = sshbuf_get_u8(b, &e1)) != 0 || +@@ -517,16 +539,52 @@ + e += e3; + debug("e %lx", e); + } +- if (!BN_set_word(key->rsa->e, e)) { ++ { ++ BIGNUM *rsa_e = NULL; ++ BIGNUM *d=NULL, *n=NULL, *iqmp=NULL, *q=NULL, *p=NULL; ++ BIGNUM *dmp1=NULL, *dmq1=NULL; /* dummy input to set in RSA_set0_crt_params */ ++ rsa_e = BN_new(); ++ if (!rsa_e || !BN_set_word(rsa_e, e)) { ++ if (rsa_e) BN_free(rsa_e); + sshbuf_free(b); + sshkey_free(key); + return NULL; + } +- buffer_get_bignum_bits(b, key->rsa->d); +- buffer_get_bignum_bits(b, key->rsa->n); +- buffer_get_bignum_bits(b, key->rsa->iqmp); +- buffer_get_bignum_bits(b, key->rsa->q); +- buffer_get_bignum_bits(b, key->rsa->p); ++ if ((d=BN_new()) == NULL || ++ (n=BN_new()) == NULL || ++ (iqmp=BN_new()) == NULL || ++ (q=BN_new()) == NULL || ++ (p=BN_new()) == NULL || ++ (dmp1=BN_new()) == NULL || ++ (dmq1=BN_new()) == NULL) { ++ BN_free(d); BN_free(n); BN_free(iqmp); ++ BN_free(q); BN_free(p); ++ BN_free(dmp1); BN_free(dmq1); ++ return NULL; ++ } ++ BN_clear(dmp1); BN_clear(dmq1); ++ buffer_get_bignum_bits(b, d); ++ buffer_get_bignum_bits(b, n); ++ buffer_get_bignum_bits(b, iqmp); ++ buffer_get_bignum_bits(b, q); ++ buffer_get_bignum_bits(b, p); ++ if (RSA_set0_key(key->rsa, n, rsa_e, d) == 0) ++ goto null; ++ n = d = NULL; ++ if (RSA_set0_factors(key->rsa, p, q) == 0) ++ goto null; ++ p = q = NULL; ++ /* dmp1, dmq1 should not be NULL for initial set0 */ ++ if (RSA_set0_crt_params(key->rsa, dmp1, dmq1, iqmp) == 0) { ++ null: ++ fatal("Failed to set RSA parameters"); ++ BN_free(d); BN_free(n); BN_free(iqmp); ++ BN_free(q); BN_free(p); ++ BN_free(dmp1); BN_free(dmq1); ++ return NULL; ++ } ++ dmp1 = dmq1 = iqmp = NULL; ++ } + if ((r = ssh_rsa_generate_additional_parameters(key)) != 0) + fatal("generate RSA parameters failed: %s", ssh_err(r)); + break; +@@ -636,7 +694,7 @@ + identity_file); + } + fclose(fp); +- switch (EVP_PKEY_type(pubkey->type)) { ++ switch (EVP_PKEY_type(EVP_PKEY_id(pubkey))) { + case EVP_PKEY_RSA: + if ((*k = sshkey_new(KEY_UNSPEC)) == NULL) + fatal("sshkey_new failed"); +@@ -660,7 +718,7 @@ + #endif + default: + fatal("%s: unsupported pubkey type %d", __func__, +- EVP_PKEY_type(pubkey->type)); ++ EVP_PKEY_type(EVP_PKEY_id(pubkey))); + } + EVP_PKEY_free(pubkey); + return; +@@ -1063,7 +1121,7 @@ + pub_tmp, strerror(errno)); + goto failnext; + } +- (void)fchmod(fd, 0644); ++ //(void)fchmod(fd, 0644); + f = fdopen(fd, "w"); + if (f == NULL) { + error("fdopen %s failed: %s", pub_tmp, strerror(errno)); +diff -ru source/ssh-pkcs11.c source-new/ssh-pkcs11.c +--- source/ssh-pkcs11.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/ssh-pkcs11.c 2017-11-02 18:31:51.978879010 -0700 +@@ -67,7 +67,7 @@ + struct pkcs11_provider *provider; + CK_ULONG slotidx; + int (*orig_finish)(RSA *rsa); +- RSA_METHOD rsa_method; ++ RSA_METHOD *rsa_method; + char *keyid; + int keyid_len; + }; +@@ -326,13 +326,15 @@ + k11->keyid = xmalloc(k11->keyid_len); + memcpy(k11->keyid, keyid_attrib->pValue, k11->keyid_len); + } +- k11->orig_finish = def->finish; +- memcpy(&k11->rsa_method, def, sizeof(k11->rsa_method)); +- k11->rsa_method.name = "pkcs11"; +- k11->rsa_method.rsa_priv_enc = pkcs11_rsa_private_encrypt; +- k11->rsa_method.rsa_priv_dec = pkcs11_rsa_private_decrypt; +- k11->rsa_method.finish = pkcs11_rsa_finish; +- RSA_set_method(rsa, &k11->rsa_method); ++ k11->orig_finish = RSA_meth_get_finish(def); ++ ++ if ((k11->rsa_method = RSA_meth_new("pkcs11", RSA_meth_get_flags(def))) == NULL) ++ return -1; ++ RSA_meth_set_priv_enc(k11->rsa_method, pkcs11_rsa_private_encrypt); ++ RSA_meth_set_priv_dec(k11->rsa_method, pkcs11_rsa_private_decrypt); ++ RSA_meth_set_finish(k11->rsa_method, pkcs11_rsa_finish); ++ ++ RSA_set_method(rsa, k11->rsa_method); + RSA_set_app_data(rsa, k11); + return (0); + } +@@ -512,10 +514,19 @@ + if ((rsa = RSA_new()) == NULL) { + error("RSA_new failed"); + } else { +- rsa->n = BN_bin2bn(attribs[1].pValue, +- attribs[1].ulValueLen, NULL); +- rsa->e = BN_bin2bn(attribs[2].pValue, +- attribs[2].ulValueLen, NULL); ++ BIGNUM *n=NULL, *e=NULL; ++ n = BN_new(); ++ e = BN_new(); ++ if (n == NULL || e == NULL) ++ error("BN_new alloc failed"); ++ if (BN_bin2bn(attribs[1].pValue, ++ attribs[1].ulValueLen, n) == NULL || ++ BN_bin2bn(attribs[2].pValue, ++ attribs[2].ulValueLen, e) == NULL) ++ error("BN_bin2bn failed"); ++ if (RSA_set0_key(rsa, n, e, NULL) == 0) ++ error("RSA_set0_key failed"); ++ n = e = NULL; + } + } else { + cp = attribs[2].pValue; +@@ -525,17 +536,20 @@ + == NULL) { + error("d2i_X509 failed"); + } else if ((evp = X509_get_pubkey(x509)) == NULL || +- evp->type != EVP_PKEY_RSA || +- evp->pkey.rsa == NULL) { ++ EVP_PKEY_id(evp) != EVP_PKEY_RSA || ++ EVP_PKEY_get0_RSA(evp) == NULL) { + debug("X509_get_pubkey failed or no rsa"); +- } else if ((rsa = RSAPublicKey_dup(evp->pkey.rsa)) ++ } else if ((rsa = RSAPublicKey_dup(EVP_PKEY_get0_RSA(evp))) + == NULL) { + error("RSAPublicKey_dup"); + } + if (x509) + X509_free(x509); + } +- if (rsa && rsa->n && rsa->e && ++ { ++ const BIGNUM *n, *e; ++ RSA_get0_key(rsa, &n, &e, NULL); ++ if (rsa && n && e && + pkcs11_rsa_wrap(p, slotidx, &attribs[0], rsa) == 0) { + if ((key = sshkey_new(KEY_UNSPEC)) == NULL) + fatal("sshkey_new failed"); +@@ -555,6 +569,7 @@ + } else if (rsa) { + RSA_free(rsa); + } ++ } + for (i = 0; i < 3; i++) + free(attribs[i].pValue); + } +diff -ru source/ssh-pkcs11-client.c source-new/ssh-pkcs11-client.c +--- source/ssh-pkcs11-client.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/ssh-pkcs11-client.c 2017-11-02 18:31:51.978879010 -0700 +@@ -143,12 +143,13 @@ + static int + wrap_key(RSA *rsa) + { +- static RSA_METHOD helper_rsa; ++ static RSA_METHOD *helper_rsa; + +- memcpy(&helper_rsa, RSA_get_default_method(), sizeof(helper_rsa)); +- helper_rsa.name = "ssh-pkcs11-helper"; +- helper_rsa.rsa_priv_enc = pkcs11_rsa_private_encrypt; +- RSA_set_method(rsa, &helper_rsa); ++ if ((helper_rsa = RSA_meth_dup(RSA_get_default_method())) == NULL) ++ return (-1); /* XXX but caller isn't checking */ ++ RSA_meth_set1_name(helper_rsa, "ssh-pkcs11-helper"); ++ RSA_meth_set_priv_enc(helper_rsa, pkcs11_rsa_private_encrypt); ++ RSA_set_method(rsa, helper_rsa); + return (0); + } + +diff -ru source/sshpty.c source-new/sshpty.c +--- source/sshpty.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/sshpty.c 2017-11-02 18:31:51.978879010 -0700 +@@ -128,12 +128,12 @@ + #ifdef TIOCNOTTY + fd = open(_PATH_TTY, O_RDWR | O_NOCTTY); + if (fd >= 0) { +- (void) ioctl(fd, TIOCNOTTY, NULL); ++ //(void) ioctl(fd, TIOCNOTTY, NULL); + close(fd); + } + #endif /* TIOCNOTTY */ +- if (setsid() < 0) +- error("setsid: %.100s", strerror(errno)); ++ //if (setsid() < 0) ++ // error("setsid: %.100s", strerror(errno)); + + /* + * Verify that we are successfully disconnected from the controlling +@@ -147,8 +147,8 @@ + /* Make it our controlling tty. */ + #ifdef TIOCSCTTY + debug("Setting controlling tty using TIOCSCTTY."); +- if (ioctl(*ttyfd, TIOCSCTTY, NULL) < 0) +- error("ioctl(TIOCSCTTY): %.100s", strerror(errno)); ++ //if (ioctl(*ttyfd, TIOCSCTTY, NULL) < 0) ++ // error("ioctl(TIOCSCTTY): %.100s", strerror(errno)); + #endif /* TIOCSCTTY */ + #ifdef NEED_SETPGRP + if (setpgrp(0,0) < 0) +@@ -183,7 +183,7 @@ + w.ws_col = col; + w.ws_xpixel = xpixel; + w.ws_ypixel = ypixel; +- (void) ioctl(ptyfd, TIOCSWINSZ, &w); ++ //(void) ioctl(ptyfd, TIOCSWINSZ, &w); + } + + void +@@ -195,9 +195,9 @@ + struct stat st; + + /* Determine the group to make the owner of the tty. */ +- grp = getgrnam("tty"); +- gid = (grp != NULL) ? grp->gr_gid : pw->pw_gid; +- mode = (grp != NULL) ? 0620 : 0600; ++ //grp = getgrnam("tty"); ++ //gid = (grp != NULL) ? grp->gr_gid : pw->pw_gid; ++ //mode = (grp != NULL) ? 0620 : 0600; + + /* + * Change owner and mode of the tty as required. +@@ -247,7 +247,7 @@ + int fd; + + if ((fd = open(_PATH_TTY, O_RDWR | O_NOCTTY)) >= 0) { +- (void) ioctl(fd, TIOCNOTTY, NULL); ++ //(void) ioctl(fd, TIOCNOTTY, NULL); + close(fd); + } + #endif /* TIOCNOTTY */ +diff -ru source/ssh-rsa.c source-new/ssh-rsa.c +--- source/ssh-rsa.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/ssh-rsa.c 2017-11-02 18:31:51.978879010 -0700 +@@ -99,13 +99,27 @@ + } + rsa = key->rsa; + +- if ((BN_sub(aux, rsa->q, BN_value_one()) == 0) || +- (BN_mod(rsa->dmq1, rsa->d, aux, ctx) == 0) || +- (BN_sub(aux, rsa->p, BN_value_one()) == 0) || +- (BN_mod(rsa->dmp1, rsa->d, aux, ctx) == 0)) { ++ { ++ const BIGNUM *q, *d, *p; ++ BIGNUM *dmq1=NULL, *dmp1=NULL; ++ if ((dmq1 = BN_new()) == NULL || ++ (dmp1 = BN_new()) == NULL ) { ++ r = SSH_ERR_ALLOC_FAIL; ++ goto out; ++ } ++ RSA_get0_key(rsa, NULL, NULL, &d); ++ RSA_get0_factors(rsa, &p, &q); ++ if ((BN_sub(aux, q, BN_value_one()) == 0) || ++ (BN_mod(dmq1, d, aux, ctx) == 0) || ++ (BN_sub(aux, p, BN_value_one()) == 0) || ++ (BN_mod(dmp1, d, aux, ctx) == 0) || ++ RSA_set0_crt_params(rsa, dmp1, dmq1, NULL) == 0) { + r = SSH_ERR_LIBCRYPTO_ERROR; ++ BN_clear_free(dmp1); ++ BN_clear_free(dmq1); + goto out; + } ++ } + r = 0; + out: + BN_clear_free(aux); +@@ -136,7 +150,7 @@ + if (key == NULL || key->rsa == NULL || hash_alg == -1 || + sshkey_type_plain(key->type) != KEY_RSA) + return SSH_ERR_INVALID_ARGUMENT; +- if (BN_num_bits(key->rsa->n) < SSH_RSA_MINIMUM_MODULUS_SIZE) ++ if (RSA_bits(key->rsa) < SSH_RSA_MINIMUM_MODULUS_SIZE) + return SSH_ERR_KEY_LENGTH; + slen = RSA_size(key->rsa); + if (slen <= 0 || slen > SSHBUF_MAX_BIGNUM) +@@ -210,7 +224,7 @@ + sshkey_type_plain(key->type) != KEY_RSA || + sig == NULL || siglen == 0) + return SSH_ERR_INVALID_ARGUMENT; +- if (BN_num_bits(key->rsa->n) < SSH_RSA_MINIMUM_MODULUS_SIZE) ++ if (RSA_bits(key->rsa) < SSH_RSA_MINIMUM_MODULUS_SIZE) + return SSH_ERR_KEY_LENGTH; + + if ((b = sshbuf_from(sig, siglen)) == NULL) +diff -ru source/uidswap.c source-new/uidswap.c +--- source/uidswap.c 2017-10-02 12:34:26.000000000 -0700 ++++ source-new/uidswap.c 2017-11-02 18:31:51.978879010 -0700 +@@ -82,14 +82,14 @@ + privileged = 1; + temporarily_use_uid_effective = 1; + +- saved_egroupslen = getgroups(0, NULL); ++ //saved_egroupslen = getgroups(0, NULL); + if (saved_egroupslen < 0) + fatal("getgroups: %.100s", strerror(errno)); + if (saved_egroupslen > 0) { + saved_egroups = xreallocarray(saved_egroups, + saved_egroupslen, sizeof(gid_t)); +- if (getgroups(saved_egroupslen, saved_egroups) < 0) +- fatal("getgroups: %.100s", strerror(errno)); ++ // if (getgroups(saved_egroupslen, saved_egroups) < 0) ++ // fatal("getgroups: %.100s", strerror(errno)); + } else { /* saved_egroupslen == 0 */ + free(saved_egroups); + } +@@ -113,22 +113,26 @@ + } + } + /* Set the effective uid to the given (unprivileged) uid. */ +- if (setgroups(user_groupslen, user_groups) < 0) +- fatal("setgroups: %.100s", strerror(errno)); ++ /* ++ *if (setgroups(user_groupslen, user_groups) < 0) ++ * fatal("setgroups: %.100s", strerror(errno)); ++ */ + #ifndef SAVED_IDS_WORK_WITH_SETEUID + /* Propagate the privileged gid to all of our gids. */ +- if (setgid(getegid()) < 0) +- debug("setgid %u: %.100s", (u_int) getegid(), strerror(errno)); +- /* Propagate the privileged uid to all of our uids. */ +- if (setuid(geteuid()) < 0) +- debug("setuid %u: %.100s", (u_int) geteuid(), strerror(errno)); +-#endif /* SAVED_IDS_WORK_WITH_SETEUID */ +- if (setegid(pw->pw_gid) < 0) +- fatal("setegid %u: %.100s", (u_int)pw->pw_gid, +- strerror(errno)); +- if (seteuid(pw->pw_uid) == -1) +- fatal("seteuid %u: %.100s", (u_int)pw->pw_uid, +- strerror(errno)); ++/* ++ * if (setgid(getegid()) < 0) ++ * debug("setgid %u: %.100s", (u_int) getegid(), strerror(errno)); ++ * [> Propagate the privileged uid to all of our uids. <] ++ * if (setuid(geteuid()) < 0) ++ */ debug("setuid %u: %.100s", (u_int) geteuid(), strerror(errno)); ++ #endif [> SAVED_IDS_WORK_WITH_SETEUID <] ++ /* if (setegid(pw->pw_gid) < 0) ++ * fatal("setegid %u: %.100s", (u_int)pw->pw_gid, ++ * strerror(errno)); ++ * if (seteuid(pw->pw_uid) == -1) ++ * fatal("seteuid %u: %.100s", (u_int)pw->pw_uid, ++ * strerror(errno)); ++ */ + } + + void +@@ -150,9 +154,11 @@ + * where fine-grained privileges are available (the user might be + * deliberately allowed the right to setuid back to root). + */ +- if (old_uid != uid && +- (setuid(old_uid) != -1 || seteuid(old_uid) != -1)) +- fatal("%s: was able to restore old [e]uid", __func__); ++ /* ++ *if (old_uid != uid && ++ * (setuid(old_uid) != -1 || seteuid(old_uid) != -1)) ++ * fatal("%s: was able to restore old [e]uid", __func__); ++ */ + #endif + + /* Verify UID drop was successful */ +@@ -189,12 +195,12 @@ + * Propagate the real uid (usually more privileged) to effective uid + * as well. + */ +- setuid(getuid()); +- setgid(getgid()); ++// setuid(getuid()); ++// setgid(getgid()); + #endif /* SAVED_IDS_WORK_WITH_SETEUID */ + +- if (setgroups(saved_egroupslen, saved_egroups) < 0) +- fatal("setgroups: %.100s", strerror(errno)); ++ //if (setgroups(saved_egroupslen, saved_egroups) < 0) ++ // fatal("setgroups: %.100s", strerror(errno)); + temporarily_use_uid_effective = 0; + } + +@@ -233,25 +239,26 @@ + if (setresuid(pw->pw_uid, pw->pw_uid, pw->pw_uid) < 0) + fatal("setresuid %u: %.100s", (u_int)pw->pw_uid, strerror(errno)); + +-#ifndef NO_UID_RESTORATION_TEST +- /* Try restoration of GID if changed (test clearing of saved gid) */ +- if (old_gid != pw->pw_gid && pw->pw_uid != 0 && +- (setgid(old_gid) != -1 || setegid(old_gid) != -1)) +- fatal("%s: was able to restore old [e]gid", __func__); +-#endif +- +- /* Verify GID drop was successful */ +- if (getgid() != pw->pw_gid || getegid() != pw->pw_gid) { +- fatal("%s: egid incorrect gid:%u egid:%u (should be %u)", +- __func__, (u_int)getgid(), (u_int)getegid(), +- (u_int)pw->pw_gid); +- } ++/*#ifndef NO_UID_RESTORATION_TEST ++ * ++ * if (old_gid != pw->pw_gid && pw->pw_uid != 0 && ++ * (setgid(old_gid) != -1 || setegid(old_gid) != -1)) ++ * fatal("%s: was able to restore old [e]gid", __func__); ++ *#endif ++ * ++ * [> Verify GID drop was successful <] ++ * if (getgid() != pw->pw_gid || getegid() != pw->pw_gid) { ++ * fatal("%s: egid incorrect gid:%u egid:%u (should be %u)", ++ * __func__, (u_int)getgid(), (u_int)getegid(), ++ * (u_int)pw->pw_gid); ++ * } ++ */ + + #ifndef NO_UID_RESTORATION_TEST + /* Try restoration of UID if changed (test clearing of saved uid) */ +- if (old_uid != pw->pw_uid && +- (setuid(old_uid) != -1 || seteuid(old_uid) != -1)) +- fatal("%s: was able to restore old [e]uid", __func__); ++// if (old_uid != pw->pw_uid && ++// (setuid(old_uid) != -1 || seteuid(old_uid) != -1)) ++// fatal("%s: was able to restore old [e]uid", __func__); + #endif + + /* Verify UID drop was successful */ From e8556452f72323b290356e0a85b199748f5179f3 Mon Sep 17 00:00:00 2001 From: Paul Date: Thu, 2 Nov 2017 21:02:32 -0700 Subject: [PATCH 0280/3180] quick fix to ssh recipe --- recipes/ssh/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/ssh/recipe.sh b/recipes/ssh/recipe.sh index 7f968349..7cd41074 100644 --- a/recipes/ssh/recipe.sh +++ b/recipes/ssh/recipe.sh @@ -1,6 +1,6 @@ VERSION=7.6p1 TAR=http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-$VERSION.tar.gz -BUILD_DEPENDS=(zlib openssl1.0 newlib) +BUILD_DEPENDS=(zlib openssl newlib) export AR="${HOST}-ar" export AS="${HOST}-as" From 8388e90f81f895129c9f4d2bd30a9638452ff281 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Fri, 3 Nov 2017 20:18:30 +0100 Subject: [PATCH 0281/3180] vttest: Add recipe version --- recipes/vttest/recipe.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/recipes/vttest/recipe.sh b/recipes/vttest/recipe.sh index 5ebe7feb..9eaa3eca 100644 --- a/recipes/vttest/recipe.sh +++ b/recipes/vttest/recipe.sh @@ -1,5 +1,11 @@ +VERSION=20140305 TAR=http://invisible-island.net/datafiles/release/vttest.tar.gz +function recipe_version { + echo "$VERSION" + skip=1 +} + function recipe_update { echo "skipping update" skip=1 From e2edd3f4502ca6fd2b4882614df41a1efbfc7dcd Mon Sep 17 00:00:00 2001 From: Paul Date: Sat, 4 Nov 2017 14:40:05 -0700 Subject: [PATCH 0282/3180] fix vim.patch --- recipes/vim/vim.patch | 363 +++++++++++++++++++++--------------------- 1 file changed, 182 insertions(+), 181 deletions(-) diff --git a/recipes/vim/vim.patch b/recipes/vim/vim.patch index 26d5ad69..a88aab2f 100644 --- a/recipes/vim/vim.patch +++ b/recipes/vim/vim.patch @@ -1,211 +1,212 @@ diff -ru source/src/channel.c source-new/src/channel.c ---- source/src/channel.c 2017-10-30 17:21:14.784946514 -0700 -+++ source-new/src/channel.c 2017-10-30 17:27:08.234992143 -0700 -@@ -852,29 +852,27 @@ +--- source/src/channel.c 2017-04-07 04:57:11.000000000 -0700 ++++ source-new/src/channel.c 2017-11-04 14:36:18.494841805 -0700 +@@ -852,27 +852,29 @@ * actually able to connect. * We detect a failure to connect when either read and write fds * are set. Use getsockopt() to find out what kind of failure. */ --/* -- * if (FD_ISSET(sd, &rfds) || FD_ISSET(sd, &wfds)) -- * { -- * ret = getsockopt(sd, -- * SOL_SOCKET, SO_ERROR, &so_error, &so_error_len); -- * if (ret < 0 || (so_error != 0 -- * && so_error != EWOULDBLOCK -- * && so_error != ECONNREFUSED -- *# ifdef EINPROGRESS -- * && so_error != EINPROGRESS -- *# endif -- * )) -- * { -- * ch_errorn(channel, -- * "channel_open: Connect failed with errno %d", -- * so_error); -- * PERROR(_(e_cannot_connect)); -- * sock_close(sd); -- * channel_free(channel); -- * return NULL; -- * } -- * } -- */ -+ if (FD_ISSET(sd, &rfds) || FD_ISSET(sd, &wfds)) -+ { -+ ret = getsockopt(sd, -+ SOL_SOCKET, SO_ERROR, &so_error, &so_error_len); -+ if (ret < 0 || (so_error != 0 -+ && so_error != EWOULDBLOCK -+ && so_error != ECONNREFUSED -+# ifdef EINPROGRESS -+ && so_error != EINPROGRESS -+# endif -+ )) -+ { -+ ch_errorn(channel, -+ "channel_open: Connect failed with errno %d", -+ so_error); -+ PERROR(_(e_cannot_connect)); -+ sock_close(sd); -+ channel_free(channel); -+ return NULL; -+ } -+ } +- if (FD_ISSET(sd, &rfds) || FD_ISSET(sd, &wfds)) +- { +- ret = getsockopt(sd, +- SOL_SOCKET, SO_ERROR, &so_error, &so_error_len); +- if (ret < 0 || (so_error != 0 +- && so_error != EWOULDBLOCK +- && so_error != ECONNREFUSED +-# ifdef EINPROGRESS +- && so_error != EINPROGRESS +-# endif +- )) +- { +- ch_errorn(channel, +- "channel_open: Connect failed with errno %d", +- so_error); +- PERROR(_(e_cannot_connect)); +- sock_close(sd); +- channel_free(channel); +- return NULL; +- } +- } ++/* ++ * if (FD_ISSET(sd, &rfds) || FD_ISSET(sd, &wfds)) ++ * { ++ * ret = getsockopt(sd, ++ * SOL_SOCKET, SO_ERROR, &so_error, &so_error_len); ++ * if (ret < 0 || (so_error != 0 ++ * && so_error != EWOULDBLOCK ++ * && so_error != ECONNREFUSED ++ *# ifdef EINPROGRESS ++ * && so_error != EINPROGRESS ++ *# endif ++ * )) ++ * { ++ * ch_errorn(channel, ++ * "channel_open: Connect failed with errno %d", ++ * so_error); ++ * PERROR(_(e_cannot_connect)); ++ * sock_close(sd); ++ * channel_free(channel); ++ * return NULL; ++ * } ++ * } ++ */ if (FD_ISSET(sd, &wfds) && so_error == 0) /* Did not detect an error, connection is established. */ diff -ru source/src/memfile.c source-new/src/memfile.c ---- source/src/memfile.c 2017-10-30 17:24:53.944974807 -0700 -+++ source-new/src/memfile.c 2017-10-30 17:27:08.244992145 -0700 +--- source/src/memfile.c 2016-11-10 09:24:37.000000000 -0800 ++++ source-new/src/memfile.c 2017-11-04 14:36:18.494841805 -0700 @@ -596,88 +596,88 @@ if (hp == NULL || status == FAIL) mfp->mf_dirty = FALSE; --/* if ((flags & MFS_FLUSH) && *p_sws != NUL)*/ -- /*{*/ --/*#if defined(UNIX)*/ --/*# ifdef HAVE_FSYNC*/ -+ if ((flags & MFS_FLUSH) && *p_sws != NUL) -+ { -+#if defined(UNIX) -+# ifdef HAVE_FSYNC +- if ((flags & MFS_FLUSH) && *p_sws != NUL) +- { +-#if defined(UNIX) +-# ifdef HAVE_FSYNC ++/* if ((flags & MFS_FLUSH) && *p_sws != NUL)*/ ++ /*{*/ ++/*#if defined(UNIX)*/ ++/*# ifdef HAVE_FSYNC*/ /* * most Unixes have the very useful fsync() function, just what we need. */ -- /*if (STRCMP(p_sws, "fsync") == 0)*/ -- /*{*/ -- /*if (fsync(mfp->mf_fd))*/ -- /*status = FAIL;*/ -- /*}*/ -- /*else*/ --/*# endif*/ -- /*[> OpenNT is strictly POSIX (Benzinger) <]*/ -- /*[> Tandem/Himalaya NSK-OSS doesn't have sync() <]*/ -- /*[> No sync() on Stratus VOS <]*/ --/*# if defined(__OPENNT) || defined(__TANDEM) || defined(__VOS__)*/ -- /*fflush(NULL);*/ --/*# else*/ -- /*//sync();*/ --/*# endif*/ --/*#endif*/ --/*#ifdef VMS*/ -- /*if (STRCMP(p_sws, "fsync") == 0)*/ -- /*{*/ -- /*if (fsync(mfp->mf_fd))*/ -- /*status = FAIL;*/ -- /*}*/ --/*#endif*/ --/*#ifdef SYNC_DUP_CLOSE*/ -+ if (STRCMP(p_sws, "fsync") == 0) -+ { -+ if (fsync(mfp->mf_fd)) -+ status = FAIL; -+ } -+ else -+# endif -+ /* OpenNT is strictly POSIX (Benzinger) */ -+ /* Tandem/Himalaya NSK-OSS doesn't have sync() */ -+ /* No sync() on Stratus VOS */ -+# if defined(__OPENNT) || defined(__TANDEM) || defined(__VOS__) -+ fflush(NULL); -+# else -+ sync(); -+# endif -+#endif -+#ifdef VMS -+ if (STRCMP(p_sws, "fsync") == 0) -+ { -+ if (fsync(mfp->mf_fd)) -+ status = FAIL; -+ } -+#endif -+#ifdef SYNC_DUP_CLOSE +- if (STRCMP(p_sws, "fsync") == 0) +- { +- if (fsync(mfp->mf_fd)) +- status = FAIL; +- } +- else +-# endif +- /* OpenNT is strictly POSIX (Benzinger) */ +- /* Tandem/Himalaya NSK-OSS doesn't have sync() */ +- /* No sync() on Stratus VOS */ +-# if defined(__OPENNT) || defined(__TANDEM) || defined(__VOS__) +- fflush(NULL); +-# else +- sync(); +-# endif +-#endif +-#ifdef VMS +- if (STRCMP(p_sws, "fsync") == 0) +- { +- if (fsync(mfp->mf_fd)) +- status = FAIL; +- } +-#endif +-#ifdef SYNC_DUP_CLOSE ++ /*if (STRCMP(p_sws, "fsync") == 0)*/ ++ /*{*/ ++ /*if (fsync(mfp->mf_fd))*/ ++ /*status = FAIL;*/ ++ /*}*/ ++ /*else*/ ++/*# endif*/ ++ /*[> OpenNT is strictly POSIX (Benzinger) <]*/ ++ /*[> Tandem/Himalaya NSK-OSS doesn't have sync() <]*/ ++ /*[> No sync() on Stratus VOS <]*/ ++/*# if defined(__OPENNT) || defined(__TANDEM) || defined(__VOS__)*/ ++ /*fflush(NULL);*/ ++/*# else*/ ++ /*//sync();*/ ++/*# endif*/ ++/*#endif*/ ++/*#ifdef VMS*/ ++ /*if (STRCMP(p_sws, "fsync") == 0)*/ ++ /*{*/ ++ /*if (fsync(mfp->mf_fd))*/ ++ /*status = FAIL;*/ ++ /*}*/ ++/*#endif*/ ++/*#ifdef SYNC_DUP_CLOSE*/ /* * Win32 is a bit more work: Duplicate the file handle and close it. * This should flush the file to disk. */ -- /*if ((fd = dup(mfp->mf_fd)) >= 0)*/ -- /*close(fd);*/ --/*#endif*/ --/*#ifdef AMIGA*/ --/*# if defined(__AROS__) || defined(__amigaos4__)*/ -- /*if (fsync(mfp->mf_fd) != 0)*/ -- /*status = FAIL;*/ --/*# else*/ -+ if ((fd = dup(mfp->mf_fd)) >= 0) -+ close(fd); -+#endif -+#ifdef AMIGA -+# if defined(__AROS__) || defined(__amigaos4__) -+ if (fsync(mfp->mf_fd) != 0) -+ status = FAIL; -+# else +- if ((fd = dup(mfp->mf_fd)) >= 0) +- close(fd); +-#endif +-#ifdef AMIGA +-# if defined(__AROS__) || defined(__amigaos4__) +- if (fsync(mfp->mf_fd) != 0) +- status = FAIL; +-# else ++ /*if ((fd = dup(mfp->mf_fd)) >= 0)*/ ++ /*close(fd);*/ ++/*#endif*/ ++/*#ifdef AMIGA*/ ++/*# if defined(__AROS__) || defined(__amigaos4__)*/ ++ /*if (fsync(mfp->mf_fd) != 0)*/ ++ /*status = FAIL;*/ ++/*# else*/ /* * Flush() only exists for AmigaDos 2.0. * For 1.3 it should be done with close() + open(), but then the risk * is that the open() may fail and lose the file.... */ --/*# ifdef FEAT_ARP*/ -- /*if (dos2)*/ --/*# endif*/ --/*# ifdef SASC*/ -- /*{*/ -- /*struct UFB *fp = chkufb(mfp->mf_fd);*/ -+# ifdef FEAT_ARP -+ if (dos2) -+# endif -+# ifdef SASC -+ { -+ struct UFB *fp = chkufb(mfp->mf_fd); +-# ifdef FEAT_ARP +- if (dos2) +-# endif +-# ifdef SASC +- { +- struct UFB *fp = chkufb(mfp->mf_fd); ++/*# ifdef FEAT_ARP*/ ++ /*if (dos2)*/ ++/*# endif*/ ++/*# ifdef SASC*/ ++ /*{*/ ++ /*struct UFB *fp = chkufb(mfp->mf_fd);*/ -- /*if (fp != NULL)*/ -- /*Flush(fp->ufbfh);*/ -- /*}*/ --/*# else*/ --/*# if defined(_DCC) || defined(__GNUC__) || defined(__MORPHOS__)*/ -- /*{*/ --/*# if defined(__GNUC__) && !defined(__MORPHOS__) && defined(__libnix__)*/ -+ if (fp != NULL) -+ Flush(fp->ufbfh); -+ } -+# else -+# if defined(_DCC) || defined(__GNUC__) || defined(__MORPHOS__) -+ { -+# if defined(__GNUC__) && !defined(__MORPHOS__) && defined(__libnix__) +- if (fp != NULL) +- Flush(fp->ufbfh); +- } +-# else +-# if defined(_DCC) || defined(__GNUC__) || defined(__MORPHOS__) +- { +-# if defined(__GNUC__) && !defined(__MORPHOS__) && defined(__libnix__) ++ /*if (fp != NULL)*/ ++ /*Flush(fp->ufbfh);*/ ++ /*}*/ ++/*# else*/ ++/*# if defined(_DCC) || defined(__GNUC__) || defined(__MORPHOS__)*/ ++ /*{*/ ++/*# if defined(__GNUC__) && !defined(__MORPHOS__) && defined(__libnix__)*/ /* Have function (in libnix at least), * but ain't got no prototype anywhere. */ -- /*extern unsigned long fdtofh(int filedescriptor);*/ --/*# endif*/ --/*# if !defined(__libnix__)*/ -- /*fflush(NULL);*/ --/*# else*/ -- /*BPTR fh = (BPTR)fdtofh(mfp->mf_fd);*/ -+ extern unsigned long fdtofh(int filedescriptor); -+# endif -+# if !defined(__libnix__) -+ fflush(NULL); -+# else -+ BPTR fh = (BPTR)fdtofh(mfp->mf_fd); +- extern unsigned long fdtofh(int filedescriptor); +-# endif +-# if !defined(__libnix__) +- fflush(NULL); +-# else +- BPTR fh = (BPTR)fdtofh(mfp->mf_fd); ++ /*extern unsigned long fdtofh(int filedescriptor);*/ ++/*# endif*/ ++/*# if !defined(__libnix__)*/ ++ /*fflush(NULL);*/ ++/*# else*/ ++ /*BPTR fh = (BPTR)fdtofh(mfp->mf_fd);*/ -- /*if (fh != 0)*/ -- /*Flush(fh);*/ --/*# endif*/ -- /*}*/ --/*# else [> assume Manx <]*/ -- /*Flush(_devtab[mfp->mf_fd].fd);*/ --/*# endif*/ --/*# endif*/ --/*# endif*/ --/*#endif [> AMIGA <]*/ -- /*}*/ -+ if (fh != 0) -+ Flush(fh); -+# endif -+ } -+# else /* assume Manx */ -+ Flush(_devtab[mfp->mf_fd].fd); -+# endif -+# endif -+# endif -+#endif /* AMIGA */ -+ } +- if (fh != 0) +- Flush(fh); +-# endif +- } +-# else /* assume Manx */ +- Flush(_devtab[mfp->mf_fd].fd); +-# endif +-# endif +-# endif +-#endif /* AMIGA */ +- } ++ /*if (fh != 0)*/ ++ /*Flush(fh);*/ ++/*# endif*/ ++ /*}*/ ++/*# else [> assume Manx <]*/ ++ /*Flush(_devtab[mfp->mf_fd].fd);*/ ++/*# endif*/ ++/*# endif*/ ++/*# endif*/ ++/*#endif [> AMIGA <]*/ ++ /*}*/ got_int |= got_int_save; + From 7f5f69ed66b3e413fa8bc9cc0a6240e525ae164e Mon Sep 17 00:00:00 2001 From: Paul Date: Sat, 4 Nov 2017 17:37:30 -0700 Subject: [PATCH 0283/3180] change ssh recipe to use custom branch of newlib --- recipes/ssh/recipe.sh | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/recipes/ssh/recipe.sh b/recipes/ssh/recipe.sh index 7cd41074..4608ab05 100644 --- a/recipes/ssh/recipe.sh +++ b/recipes/ssh/recipe.sh @@ -1,6 +1,6 @@ VERSION=7.6p1 TAR=http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-$VERSION.tar.gz -BUILD_DEPENDS=(zlib openssl newlib) +BUILD_DEPENDS=(zlib openssl) export AR="${HOST}-ar" export AS="${HOST}-as" @@ -24,7 +24,36 @@ function recipe_update { skip=1 } +function newlib_build { + rm -rf ../newlib + sysroot="${PWD}/../sysroot" + cd .. + git clone --recursive https://github.com/sajattack/newlib -b ssh-deps + cd newlib + pushd newlib/libc/sys + aclocal-1.11 -I ../.. + autoconf + automake-1.11 --cygnus Makefile + popd + + pushd newlib/libc/sys/redox + aclocal-1.11 -I ../../.. + autoconf + automake-1.11 --cygnus Makefile + popd + + CC= ./configure --target="${HOST}" --prefix=/ + make all + make DESTDIR="$sysroot" install + cd .. + cp -r $sysroot/x86_64-unknown-redox/* $sysroot + rm -rf $sysroot/x86_64-unknown-redox + rm -rf newlib + cd build +} + function recipe_build { + newlib_build sysroot="${PWD}/../sysroot" export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" From 6b6568f7941f27e8431d8bbe72565fc7faf281be Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 6 Nov 2017 15:12:23 -0700 Subject: [PATCH 0284/3180] Update pkgutils --- pkgutils | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgutils b/pkgutils index 8ae44669..7c9f14af 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit 8ae44669c9069568c911301acb7975926b4ae952 +Subproject commit 7c9f14af4391aed4fb8ab09bc2320ec962aba9fe From b913b258f7c6cad0329ecf752983907e3ed900c0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 6 Nov 2017 15:23:52 -0700 Subject: [PATCH 0285/3180] Fix prboom recipe --- recipes/prboom/01_redox.patch | 17 ++--------------- recipes/prboom/recipe.sh | 3 ++- 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/recipes/prboom/01_redox.patch b/recipes/prboom/01_redox.patch index d42dd549..8666b16e 100644 --- a/recipes/prboom/01_redox.patch +++ b/recipes/prboom/01_redox.patch @@ -1,21 +1,9 @@ -diff -rupN prboom-2.5.0/autotools/config.sub prboom-2.5.0-redox/autotools/config.sub ---- prboom-2.5.0/autotools/config.sub 2006-08-10 08:17:12.000000000 -0700 -+++ prboom-2.5.0-redox/autotools/config.sub 2017-10-14 22:17:14.000000000 -0700 -@@ -1214,7 +1214,7 @@ case $os in - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ -- | -skyos* | -haiku* | -rdos* | -toppers*) -+ | -skyos* | -haiku* | -rdos* | -toppers* | -redox*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) diff -rupN prboom-2.5.0/configure.ac prboom-2.5.0-redox/configure.ac --- prboom-2.5.0/configure.ac 2008-11-09 11:12:37.000000000 -0800 +++ prboom-2.5.0-redox/configure.ac 2017-10-14 23:27:16.000000000 -0700 @@ -85,8 +85,6 @@ if test "$cross_compiling" != "yes"; the fi - + dnl --- Header files, typedefs, structures -AC_TYPE_UID_T -AC_TYPE_SIZE_T @@ -28,7 +16,7 @@ diff -rupN prboom-2.5.0/src/d_deh.c prboom-2.5.0-redox/src/d_deh.c @@ -54,17 +54,6 @@ #define TRUE 1 #define FALSE 0 - + -#ifndef HAVE_STRLWR -#include - @@ -42,4 +30,3 @@ diff -rupN prboom-2.5.0/src/d_deh.c prboom-2.5.0-redox/src/d_deh.c - // killough 10/98: new functions, to allow processing DEH files in-memory // (e.g. from wads) - diff --git a/recipes/prboom/recipe.sh b/recipes/prboom/recipe.sh index a738081f..f3ef660f 100644 --- a/recipes/prboom/recipe.sh +++ b/recipes/prboom/recipe.sh @@ -14,8 +14,9 @@ function recipe_update { function recipe_build { autoreconf -if + wget -O autotools/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --prefix=/ --host=${HOST} --disable-sdltest --disable-gl --without-net --with-sdl-prefix="$PWD/../sysroot" - make + make skip=1 } From be1121311eed63116212778729f203d8650b8436 Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 6 Nov 2017 19:01:42 -0800 Subject: [PATCH 0286/3180] Create jansson.patch --- recipes/jansson/jansson.patch | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 recipes/jansson/jansson.patch diff --git a/recipes/jansson/jansson.patch b/recipes/jansson/jansson.patch new file mode 100644 index 00000000..2224e95c --- /dev/null +++ b/recipes/jansson/jansson.patch @@ -0,0 +1,12 @@ +diff -ru source-new/config.sub source/config.sub +--- source-new/config.sub 2017-11-06 18:59:18.499577613 -0800 ++++ source/config.sub 2017-11-02 19:26:02.253397873 -0700 +@@ -1368,7 +1368,7 @@ + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. +- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ ++ -gnu* | -bsd* | -redox* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ From 0ef086873c7dc581f8b43a8d85141e2c9f2163cf Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Tue, 7 Nov 2017 19:51:31 +0100 Subject: [PATCH 0287/3180] Add periodictable recipe --- recipes/periodictable/recipe.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 recipes/periodictable/recipe.sh diff --git a/recipes/periodictable/recipe.sh b/recipes/periodictable/recipe.sh new file mode 100644 index 00000000..0285710d --- /dev/null +++ b/recipes/periodictable/recipe.sh @@ -0,0 +1,10 @@ +GIT=https://github.com/xtibor/periodictable.git +BINDIR="/ui/bin" + +function recipe_stage { + mkdir -pv "$1/ui/apps" + cp -v pkg/manifest "$1/ui/apps/periodictable" + mkdir -pv "$1/ui/icons" + cp -v pkg/icon.png "$1/ui/icons/periodictable.png" +} + From ceb3eb73df4a316be126b96689e23bba4497ef33 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 10 Nov 2017 09:46:31 -0700 Subject: [PATCH 0288/3180] Cleanup LLVM build in Rust recipe --- cook.sh | 44 ++++++++++++++++++++++++---------------- recipes/rust/.gitignore | 3 +++ recipes/rust/llvm-config | 2 +- recipes/rust/recipe.sh | 44 ++++++++++++++++++++++++++-------------- 4 files changed, 59 insertions(+), 34 deletions(-) create mode 100644 recipes/rust/.gitignore diff --git a/cook.sh b/cook.sh index 7a2dea29..24268836 100755 --- a/cook.sh +++ b/cook.sh @@ -226,29 +226,37 @@ function op { fi popd > /dev/null ;; - prepare) - rm -rf sysroot - mkdir sysroot - - if [ ${#BUILD_DEPENDS} -gt 0 ] + prepare) + skip=0 + if [ "$(type -t recipe_prepare)" = "function" ] then - pushd $ROOT - ./repo.sh "${BUILD_DEPENDS[@]}" - popd + recipe_prepare + fi + if [ "$skip" -eq "0" ] + then + rm -rf sysroot + mkdir sysroot - for i in "${BUILD_DEPENDS[@]}" + if [ ${#BUILD_DEPENDS} -gt 0 ] + then + pushd $ROOT + ./repo.sh "${BUILD_DEPENDS[@]}" + popd + + for i in "${BUILD_DEPENDS[@]}" + do + pkg --target=$TARGET install --root sysroot "$REPO/$i.tar.gz" + done + fi + + rm -rf build + cp -rp source build + + for patch in *.patch do - pkg --target=$TARGET install --root sysroot "$REPO/$i.tar.gz" + patch -p1 -d build < "$patch" done fi - - rm -rf build - cp -rp source build - - for patch in *.patch - do - patch -p1 -d build < "$patch" - done ;; unprepare) rm -rf build diff --git a/recipes/rust/.gitignore b/recipes/rust/.gitignore new file mode 100644 index 00000000..0a8fbe5e --- /dev/null +++ b/recipes/rust/.gitignore @@ -0,0 +1,3 @@ +/llvm-build/ +/llvm-prefix/ +/llvm-source/ diff --git a/recipes/rust/llvm-config b/recipes/rust/llvm-config index a4737c86..cccfac42 100755 --- a/recipes/rust/llvm-config +++ b/recipes/rust/llvm-config @@ -4,7 +4,7 @@ import sys import os args = sys.argv[1:] -prefix = os.path.realpath(os.path.dirname(os.path.abspath(sys.argv[0])) + "/llvm-root") +prefix = os.path.realpath(os.path.dirname(os.path.dirname(os.path.abspath(sys.argv[0]))) + "/llvm-prefix") # The values here are copied from the output of llvm-config running under Redox. # This is a hack, and should be replaced if possible. diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index cc3b2c7f..b7410e3a 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -2,7 +2,10 @@ GIT=https://github.com/redox-os/rust.git BRANCH=compile-redox-stage-0 DEPENDS="gcc cargo" -LLVM_PREFIX="$PWD/build/llvm-root" +LLVM_GIT="https://github.com/redox-os/llvm.git" +LLVM_SOURCE="$(realpath llvm-source)" +LLVM_BUILD="$(realpath llvm-build)" +LLVM_PREFIX="$(realpath llvm-prefix)" SYSROOT="/usr/$HOST" unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP @@ -14,27 +17,38 @@ function recipe_version { skip=1 } +function recipe_fetch { + if [ ! -d "$LLVM_SOURCE" ] + then + git clone "$LLVM_GIT" -b redox --depth 1 "$LLVM_SOURCE" + fi + + pushd "$LLVM_SOURCE" > /dev/null + git remote set-url origin "$LLVM_GIT" + git fetch origin + git pull + git submodule sync --recursive + git submodule update --init --recursive + popd > /dev/null +} + +function recipe_prepare { + rm -rf "$LLVM_PREFIX" + mkdir -p "$LLVM_PREFIX" + + rm -rf "$LLVM_BUILD" + mkdir "$LLVM_BUILD" +} + function recipe_update { echo "skipping update" skip=1 } function recipe_build { - # Download patched LLVM - if [ -d llvm-redox ] - then - git -C llvm-redox pull - else - git clone https://github.com/redox-os/llvm.git -b redox --depth 1 llvm-redox - fi - # Build LLVM - rm -rf "$LLVM_PREFIX" - mkdir -p "$LLVM_PREFIX" - rm -rf llvm-redox/build - mkdir -p llvm-redox/build - pushd llvm-redox/build - CC=$HOST-gcc CXX=$HOST-g++ cmake "${LLVM_CMAKE_ARGS[@]}" .. + pushd "$LLVM_BUILD" + CC=$HOST-gcc CXX=$HOST-g++ cmake "${LLVM_CMAKE_ARGS[@]}" "${LLVM_SOURCE}" make -j$(nproc) make install popd From 58ff0bf93602d47d106d6c79366b6cbcb3ad7344 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 10 Nov 2017 11:32:08 -0700 Subject: [PATCH 0289/3180] Improve build speed of Rust recipe --- recipes/rust/config.toml | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/recipes/rust/config.toml b/recipes/rust/config.toml index 38610cf8..14828f7e 100644 --- a/recipes/rust/config.toml +++ b/recipes/rust/config.toml @@ -1,11 +1,24 @@ -[rust] -backtrace = false - -[target.x86_64-unknown-redox] -cc = "x86_64-unknown-redox-gcc" -cxx = "x86_64-unknown-redox-g++" -llvm-config = "./llvm-config" +[llvm] +static-libstdcpp = true +ninja = true [build] host = ["x86_64-unknown-redox"] target = ["x86_64-unknown-redox"] +docs = false +submodules = false + +[rust] +codegen-units = 0 +use-jemalloc = false +backtrace = false +rpath = false +codegen-tests = false + +[target.x86_64-unknown-redox] +cc = "x86_64-unknown-redox-gcc" +cxx = "x86_64-unknown-redox-g++" +ar = "x86_64-unknown-redox-ar" +linker = "x86_64-unknown-redox-gcc" +llvm-config = "../llvm-config" +crt-static = true From 8de4e0f20e9b93cc3daf129f6b8153cf760c0a07 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 10 Nov 2017 12:16:13 -0700 Subject: [PATCH 0290/3180] Fix llvm-config path --- recipes/rust/llvm-config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/rust/llvm-config b/recipes/rust/llvm-config index cccfac42..be16d9b3 100755 --- a/recipes/rust/llvm-config +++ b/recipes/rust/llvm-config @@ -4,7 +4,7 @@ import sys import os args = sys.argv[1:] -prefix = os.path.realpath(os.path.dirname(os.path.dirname(os.path.abspath(sys.argv[0]))) + "/llvm-prefix") +prefix = os.path.realpath(os.path.dirname(os.path.abspath(sys.argv[0])) + "/llvm-prefix") # The values here are copied from the output of llvm-config running under Redox. # This is a hack, and should be replaced if possible. From c113d6d65caf9363f7de0100654962fde194520a Mon Sep 17 00:00:00 2001 From: Agustin Chiappe Berrini Date: Sat, 11 Nov 2017 20:27:04 -0500 Subject: [PATCH 0291/3180] Fix xz's recipe --- recipes/xz/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/xz/recipe.sh b/recipes/xz/recipe.sh index 0c70d7bb..7fc3ba56 100644 --- a/recipes/xz/recipe.sh +++ b/recipes/xz/recipe.sh @@ -1,5 +1,5 @@ VERSION=5.2.3 -TAR=https://tukaani.org/xz/xz-$VERSION.tar.gz +TAR=https://codeload.github.com/xz-mirror/xz/archive/v$VERSION.tar.gz function recipe_version { echo "$VERSION" From 22c98abf7939aa3dff85b59b4e608bf902c6ecbc Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 13 Nov 2017 21:10:34 -0700 Subject: [PATCH 0292/3180] Clean up compilation of Rust --- recipes/rust/config.toml | 1 - recipes/rust/recipe.sh | 5 ++--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/recipes/rust/config.toml b/recipes/rust/config.toml index 14828f7e..79535096 100644 --- a/recipes/rust/config.toml +++ b/recipes/rust/config.toml @@ -9,7 +9,6 @@ docs = false submodules = false [rust] -codegen-units = 0 use-jemalloc = false backtrace = false rpath = false diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index b7410e3a..1dcc4c01 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -35,7 +35,7 @@ function recipe_fetch { function recipe_prepare { rm -rf "$LLVM_PREFIX" mkdir -p "$LLVM_PREFIX" - + rm -rf "$LLVM_BUILD" mkdir "$LLVM_BUILD" } @@ -53,8 +53,7 @@ function recipe_build { make install popd - cp ../{config.toml,llvm-config} ./ - python x.py build + python x.py build --config ../config.toml --jobs $(nproc) skip=1 } From d14d183a1de4e9b87730ae27700fbcaed04ded99 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 14 Nov 2017 19:55:29 -0700 Subject: [PATCH 0293/3180] Add version for ca-certificates --- recipes/ca-certificates/recipe.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/recipes/ca-certificates/recipe.sh b/recipes/ca-certificates/recipe.sh index f4e00f7a..3f81b9ca 100644 --- a/recipes/ca-certificates/recipe.sh +++ b/recipes/ca-certificates/recipe.sh @@ -1,3 +1,8 @@ +function recipe_version { + date "+%Y%m%d" + skip=1 +} + function recipe_fetch { if [ ! -d source ] then From 25803c9a506f80dfe985c1f39d30ffcc7f2cc06c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 14 Nov 2017 20:02:38 -0700 Subject: [PATCH 0294/3180] Disable LLVM ninja build Enable compilation of codegen tests --- recipes/rust/config.toml | 2 -- 1 file changed, 2 deletions(-) diff --git a/recipes/rust/config.toml b/recipes/rust/config.toml index 79535096..353699d3 100644 --- a/recipes/rust/config.toml +++ b/recipes/rust/config.toml @@ -1,6 +1,5 @@ [llvm] static-libstdcpp = true -ninja = true [build] host = ["x86_64-unknown-redox"] @@ -12,7 +11,6 @@ submodules = false use-jemalloc = false backtrace = false rpath = false -codegen-tests = false [target.x86_64-unknown-redox] cc = "x86_64-unknown-redox-gcc" From 4cf1f88f3e0e810693159eae0d50714f732e5382 Mon Sep 17 00:00:00 2001 From: Paul Sajna Date: Fri, 17 Nov 2017 16:54:59 -0800 Subject: [PATCH 0295/3180] Fix recipe for xz --- recipes/xz/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/xz/recipe.sh b/recipes/xz/recipe.sh index 7fc3ba56..63ae1f26 100644 --- a/recipes/xz/recipe.sh +++ b/recipes/xz/recipe.sh @@ -1,5 +1,5 @@ VERSION=5.2.3 -TAR=https://codeload.github.com/xz-mirror/xz/archive/v$VERSION.tar.gz +TAR=https://codeload.github.com/xz-mirror/xz/tar.gz/v$VERSION function recipe_version { echo "$VERSION" From 6091455593a96659399200d8d97e44a7b46563bb Mon Sep 17 00:00:00 2001 From: Paul Sajna Date: Fri, 17 Nov 2017 17:03:05 -0800 Subject: [PATCH 0296/3180] run autogen.sh in xz recipe --- recipes/xz/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/xz/recipe.sh b/recipes/xz/recipe.sh index 63ae1f26..87277875 100644 --- a/recipes/xz/recipe.sh +++ b/recipes/xz/recipe.sh @@ -13,6 +13,7 @@ function recipe_update { function recipe_build { wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + ./autogen.sh ./configure --host=${HOST} --prefix=/ --enable-threads=no make skip=1 From c70d5e1573834de0911971b2967142593a03a1b9 Mon Sep 17 00:00:00 2001 From: Paul Sajna Date: Fri, 17 Nov 2017 19:12:38 -0800 Subject: [PATCH 0297/3180] 3rd attempt at fixing xz xD --- recipes/xz/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/xz/recipe.sh b/recipes/xz/recipe.sh index 87277875..2dde4ea8 100644 --- a/recipes/xz/recipe.sh +++ b/recipes/xz/recipe.sh @@ -12,8 +12,8 @@ function recipe_update { } function recipe_build { - wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./autogen.sh + wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --host=${HOST} --prefix=/ --enable-threads=no make skip=1 From 531567689407d00fb159222227fb8fd73b79b709 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Sun, 19 Nov 2017 01:25:49 +0100 Subject: [PATCH 0298/3180] Add generaluser-gs recipe --- recipes/generaluser-gs/recipe.sh | 33 ++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 recipes/generaluser-gs/recipe.sh diff --git a/recipes/generaluser-gs/recipe.sh b/recipes/generaluser-gs/recipe.sh new file mode 100644 index 00000000..34438dad --- /dev/null +++ b/recipes/generaluser-gs/recipe.sh @@ -0,0 +1,33 @@ +VERSION=1.471 +GIT=https://github.com/xTibor/redox-generaluser-gs.git + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + echo "skipping build" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + echo "skipping clean" + skip=1 +} + +function recipe_stage { + mkdir -pv "$1/share/generaluser-gs" + cp -Rv ./* "$1/share/generaluser-gs" + skip=1 +} From b91513990b7bb7cd245c5440973402e26c04e577 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Sun, 19 Nov 2017 01:26:06 +0100 Subject: [PATCH 0299/3180] Add timidity recipe --- recipes/timidity/recipe.sh | 42 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 recipes/timidity/recipe.sh diff --git a/recipes/timidity/recipe.sh b/recipes/timidity/recipe.sh new file mode 100644 index 00000000..5f1eaa49 --- /dev/null +++ b/recipes/timidity/recipe.sh @@ -0,0 +1,42 @@ +VERSION=2.14.0 +GIT=https://github.com/xTibor/redox-timidity.git +BRANCH=redox +DEPENDS="generaluser-gs" + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + autoreconf -f -i + wget -O autoconf/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + ./configure --host=${HOST} --prefix='' + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + + mkdir -pv "$1/share/timidity" + echo "soundfont /share/generaluser-gs/generaluser-gs.sf2" >> "$1/share/timidity/timidity.cfg" + + skip=1 +} From 3abc40d3283e35676aaae97200e312f440c8a447 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 19 Nov 2017 10:37:22 -0700 Subject: [PATCH 0300/3180] Replace cargo branch --- recipes/cargo/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/cargo/recipe.sh b/recipes/cargo/recipe.sh index 55f0ea18..25f1bc85 100644 --- a/recipes/cargo/recipe.sh +++ b/recipes/cargo/recipe.sh @@ -1,5 +1,5 @@ GIT=https://github.com/redox-os/cargo.git -BRANCH=redox +BRANCH=redox_rebase BUILD_DEPENDS=(openssl) function recipe_build { From cf5b60a8d926e3ced0738c9da597d2152a78cc7a Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Sun, 19 Nov 2017 19:06:38 +0100 Subject: [PATCH 0301/3180] ffmpeg: Fix package version --- recipes/ffmpeg/recipe.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/recipes/ffmpeg/recipe.sh b/recipes/ffmpeg/recipe.sh index 565577dc..7b74bc38 100644 --- a/recipes/ffmpeg/recipe.sh +++ b/recipes/ffmpeg/recipe.sh @@ -1,5 +1,11 @@ +VERSION=3.3 GIT=https://github.com/FFmpeg/FFmpeg -BRANCH=release/3.3 +BRANCH=release/$VERSION + +function recipe_version { + echo "$VERSION" + skip=1 +} function recipe_update { echo "skipping update" From 51bc5e0e25b0afe8bd1ab135e5e107874b3886ca Mon Sep 17 00:00:00 2001 From: Paul Sajna Date: Sun, 19 Nov 2017 20:07:58 -0800 Subject: [PATCH 0302/3180] Add recipe for netdb --- recipes/netdb/recipe.sh | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 recipes/netdb/recipe.sh diff --git a/recipes/netdb/recipe.sh b/recipes/netdb/recipe.sh new file mode 100644 index 00000000..f1c3cf97 --- /dev/null +++ b/recipes/netdb/recipe.sh @@ -0,0 +1,31 @@ +GIT=https://github.com/redox-os/netdb + +function recipe_version { + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + echo "skipping build" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + echo "skipping clean" + skip=1 +} + +function recipe_stage { + cp -r * ../stage/ + skip=1 +} From 36bbaca4cffa1f7aa6ece13cb6463a83367b0719 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 20 Nov 2017 20:36:20 -0700 Subject: [PATCH 0303/3180] Add dependency directories for curl --- recipes/cargo/recipe.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/recipes/cargo/recipe.sh b/recipes/cargo/recipe.sh index 25f1bc85..3a688e5a 100644 --- a/recipes/cargo/recipe.sh +++ b/recipes/cargo/recipe.sh @@ -1,7 +1,9 @@ GIT=https://github.com/redox-os/cargo.git BRANCH=redox_rebase -BUILD_DEPENDS=(openssl) +BUILD_DEPENDS=(openssl zlib) function recipe_build { + export DEP_OPENSSL_ROOT="$PWD/../sysroot" export OPENSSL_DIR="$PWD/../sysroot" + export DEP_Z_ROOT="$PWD/../sysroot" } From d155f52d99c9851695b5a6a122dc2d672dbd6edb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 21 Nov 2017 19:17:23 -0700 Subject: [PATCH 0304/3180] Add async flag for SDL --- recipes/sdl/01_orbital.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/sdl/01_orbital.patch b/recipes/sdl/01_orbital.patch index c4636dec..dabe5afa 100644 --- a/recipes/sdl/01_orbital.patch +++ b/recipes/sdl/01_orbital.patch @@ -16,7 +16,7 @@ diff -rupN sdl/configure.in sdl-redox/configure.in @@ -1646,6 +1646,19 @@ AC_HELP_STRING([--enable-video-dummy], [ fi } - + +dnl Set up the Orbital video driver. +CheckOrbitalVideo() +{ @@ -581,7 +581,7 @@ diff -rupN sdl/src/video/orbital/SDL_orbitalvideo.c sdl-redox/src/video/orbital/ + } + + char path[4096]; -+ snprintf(path, 4096, "orbital:/-1/-1/%d/%d/SDL", width, height); ++ snprintf(path, 4096, "orbital:a/-1/-1/%d/%d/SDL", width, height); + this->hidden->fd = open(path, O_RDONLY); + printf("%s at %d\n", path, this->hidden->fd); + From 72c6f2331413f234a956ce05a678826eb54e7043 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 21 Nov 2017 19:39:40 -0700 Subject: [PATCH 0305/3180] Update SDL patch --- recipes/sdl/01_orbital.patch | 76 ++++++++++++++++++++++-------------- 1 file changed, 47 insertions(+), 29 deletions(-) diff --git a/recipes/sdl/01_orbital.patch b/recipes/sdl/01_orbital.patch index dabe5afa..ded4f4f1 100644 --- a/recipes/sdl/01_orbital.patch +++ b/recipes/sdl/01_orbital.patch @@ -1,6 +1,6 @@ diff -rupN sdl/build-scripts/config.sub sdl-redox/build-scripts/config.sub ---- sdl/build-scripts/config.sub 2012-01-18 22:30:05.000000000 -0800 -+++ sdl-redox/build-scripts/config.sub 2016-07-27 18:17:26.683907466 -0700 +--- sdl/build-scripts/config.sub 2012-01-18 23:30:05.000000000 -0700 ++++ sdl-redox/build-scripts/config.sub 2017-11-21 19:24:52.456066921 -0700 @@ -1276,7 +1276,7 @@ case $os in -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ @@ -55,8 +55,8 @@ diff -rupN sdl/configure.in sdl-redox/configure.in CheckDummyAudio CheckDLOPEN diff -rupN sdl/include/SDL_config.h.in sdl-redox/include/SDL_config.h.in ---- sdl/include/SDL_config.h.in 2012-01-18 22:30:05.000000000 -0800 -+++ sdl-redox/include/SDL_config.h.in 2016-07-27 18:17:26.683907466 -0700 +--- sdl/include/SDL_config.h.in 2012-01-18 23:30:05.000000000 -0700 ++++ sdl-redox/include/SDL_config.h.in 2017-11-21 19:24:52.460053442 -0700 @@ -268,6 +268,7 @@ #undef SDL_VIDEO_DRIVER_GGI #undef SDL_VIDEO_DRIVER_IPOD @@ -66,8 +66,8 @@ diff -rupN sdl/include/SDL_config.h.in sdl-redox/include/SDL_config.h.in #undef SDL_VIDEO_DRIVER_PHOTON #undef SDL_VIDEO_DRIVER_PICOGUI diff -rupN sdl/src/video/orbital/SDL_orbitalevents.c sdl-redox/src/video/orbital/SDL_orbitalevents.c ---- sdl/src/video/orbital/SDL_orbitalevents.c 1969-12-31 16:00:00.000000000 -0800 -+++ sdl-redox/src/video/orbital/SDL_orbitalevents.c 2016-07-27 18:17:26.683907466 -0700 +--- sdl/src/video/orbital/SDL_orbitalevents.c 1969-12-31 17:00:00.000000000 -0700 ++++ sdl-redox/src/video/orbital/SDL_orbitalevents.c 2017-11-21 19:24:52.460053442 -0700 @@ -0,0 +1,159 @@ +/* + SDL - Simple DirectMedia Layer @@ -229,8 +229,8 @@ diff -rupN sdl/src/video/orbital/SDL_orbitalevents.c sdl-redox/src/video/orbital + +/* end of SDL_orbitalevents.c ... */ diff -rupN sdl/src/video/orbital/SDL_orbitalevents_c.h sdl-redox/src/video/orbital/SDL_orbitalevents_c.h ---- sdl/src/video/orbital/SDL_orbitalevents_c.h 1969-12-31 16:00:00.000000000 -0800 -+++ sdl-redox/src/video/orbital/SDL_orbitalevents_c.h 2016-07-27 18:17:26.683907466 -0700 +--- sdl/src/video/orbital/SDL_orbitalevents_c.h 1969-12-31 17:00:00.000000000 -0700 ++++ sdl-redox/src/video/orbital/SDL_orbitalevents_c.h 2017-11-21 19:24:52.460053442 -0700 @@ -0,0 +1,32 @@ +/* + SDL - Simple DirectMedia Layer @@ -265,8 +265,8 @@ diff -rupN sdl/src/video/orbital/SDL_orbitalevents_c.h sdl-redox/src/video/orbit + +/* end of SDL_orbitalevents_c.h ... */ diff -rupN sdl/src/video/orbital/SDL_orbitalmouse.c sdl-redox/src/video/orbital/SDL_orbitalmouse.c ---- sdl/src/video/orbital/SDL_orbitalmouse.c 1969-12-31 16:00:00.000000000 -0800 -+++ sdl-redox/src/video/orbital/SDL_orbitalmouse.c 2016-07-27 18:17:26.683907466 -0700 +--- sdl/src/video/orbital/SDL_orbitalmouse.c 1969-12-31 17:00:00.000000000 -0700 ++++ sdl-redox/src/video/orbital/SDL_orbitalmouse.c 2017-11-21 19:24:52.460053442 -0700 @@ -0,0 +1,33 @@ +/* + SDL - Simple DirectMedia Layer @@ -302,8 +302,8 @@ diff -rupN sdl/src/video/orbital/SDL_orbitalmouse.c sdl-redox/src/video/orbital/ + int unused; +}; diff -rupN sdl/src/video/orbital/SDL_orbitalmouse_c.h sdl-redox/src/video/orbital/SDL_orbitalmouse_c.h ---- sdl/src/video/orbital/SDL_orbitalmouse_c.h 1969-12-31 16:00:00.000000000 -0800 -+++ sdl-redox/src/video/orbital/SDL_orbitalmouse_c.h 2016-07-27 18:17:26.683907466 -0700 +--- sdl/src/video/orbital/SDL_orbitalmouse_c.h 1969-12-31 17:00:00.000000000 -0700 ++++ sdl-redox/src/video/orbital/SDL_orbitalmouse_c.h 2017-11-21 19:24:52.460053442 -0700 @@ -0,0 +1,26 @@ +/* + SDL - Simple DirectMedia Layer @@ -332,8 +332,8 @@ diff -rupN sdl/src/video/orbital/SDL_orbitalmouse_c.h sdl-redox/src/video/orbita + +/* Functions to be exported */ diff -rupN sdl/src/video/orbital/SDL_orbitalscancode.h sdl-redox/src/video/orbital/SDL_orbitalscancode.h ---- sdl/src/video/orbital/SDL_orbitalscancode.h 1969-12-31 16:00:00.000000000 -0800 -+++ sdl-redox/src/video/orbital/SDL_orbitalscancode.h 2016-07-27 18:17:26.687240818 -0700 +--- sdl/src/video/orbital/SDL_orbitalscancode.h 1969-12-31 17:00:00.000000000 -0700 ++++ sdl-redox/src/video/orbital/SDL_orbitalscancode.h 2017-11-21 19:24:52.460053442 -0700 @@ -0,0 +1,80 @@ +#define SCANCODE_A 0x1E +#define SCANCODE_B 0x30 @@ -416,9 +416,9 @@ diff -rupN sdl/src/video/orbital/SDL_orbitalscancode.h sdl-redox/src/video/orbit +#define SCANCODE_PERIOD 0x34 +#define SCANCODE_SLASH 0x35 diff -rupN sdl/src/video/orbital/SDL_orbitalvideo.c sdl-redox/src/video/orbital/SDL_orbitalvideo.c ---- sdl/src/video/orbital/SDL_orbitalvideo.c 1969-12-31 16:00:00.000000000 -0800 -+++ sdl-redox/src/video/orbital/SDL_orbitalvideo.c 2016-07-27 18:17:26.687240818 -0700 -@@ -0,0 +1,243 @@ +--- sdl/src/video/orbital/SDL_orbitalvideo.c 1969-12-31 17:00:00.000000000 -0700 ++++ sdl-redox/src/video/orbital/SDL_orbitalvideo.c 2017-11-21 19:34:44.269053445 -0700 +@@ -0,0 +1,261 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -463,6 +463,8 @@ diff -rupN sdl/src/video/orbital/SDL_orbitalvideo.c sdl-redox/src/video/orbital/ +#include +#include +#include ++#include ++#include + +#define ORBITALVID_DRIVER_NAME "orbital" + @@ -574,20 +576,29 @@ diff -rupN sdl/src/video/orbital/SDL_orbitalvideo.c sdl-redox/src/video/orbital/ +{ + if ( this->hidden->fd ) { + close( this->hidden->fd ); ++ this->hidden->fd = 0; + } + + if ( this->hidden->buffer ) { -+ SDL_free( this->hidden->buffer ); ++ redox_funmap( this->hidden->buffer ); ++ this->hidden->buffer = NULL; + } + + char path[4096]; + snprintf(path, 4096, "orbital:a/-1/-1/%d/%d/SDL", width, height); + this->hidden->fd = open(path, O_RDONLY); ++ if ( this->hidden->fd <= 0 ) { ++ this->hidden->fd = 0; ++ SDL_SetError("Couldn't create window for requested mode"); ++ return(NULL); ++ } + printf("%s at %d\n", path, this->hidden->fd); + -+ this->hidden->buffer = SDL_malloc(width * height * (bpp / 8)); ++ this->hidden->buffer = redox_fmap(this->hidden->fd, 0, width * height * (bpp / 8)); + if ( ! this->hidden->buffer ) { -+ SDL_SetError("Couldn't allocate buffer for requested mode"); ++ close(this->hidden->fd); ++ this->hidden->fd = 0; ++ SDL_SetError("Couldn't map window for requested mode"); + return(NULL); + } + @@ -597,8 +608,10 @@ diff -rupN sdl/src/video/orbital/SDL_orbitalvideo.c sdl-redox/src/video/orbital/ + + /* Allocate the new pixel format for the screen */ + if ( ! SDL_ReallocFormat(current, bpp, 0, 0, 0, 0) ) { -+ SDL_free(this->hidden->buffer); ++ redox_funmap(this->hidden->buffer); + this->hidden->buffer = NULL; ++ close(this->hidden->fd); ++ this->hidden->fd = 0; + SDL_SetError("Couldn't allocate new pixel format for requested mode"); + return(NULL); + } @@ -637,7 +650,7 @@ diff -rupN sdl/src/video/orbital/SDL_orbitalvideo.c sdl-redox/src/video/orbital/ + +static void ORBITAL_UpdateRects(_THIS, int numrects, SDL_Rect *rects) +{ -+ write(this->hidden->fd, this->hidden->buffer, this->hidden->w * this->hidden->h * 4); ++ fsync(this->hidden->fd); +} + +int ORBITAL_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors) @@ -651,7 +664,12 @@ diff -rupN sdl/src/video/orbital/SDL_orbitalvideo.c sdl-redox/src/video/orbital/ +*/ +void ORBITAL_VideoQuit(_THIS) +{ -+ if ( this->hidden->fd ) { ++ if ( this->hidden->buffer ) { ++ redox_funmap( this->hidden->buffer ); ++ this->hidden->buffer = NULL; ++ } ++ ++ if ( this->hidden->fd >= 0) { + close( this->hidden->fd ); + this->hidden->fd = 0; + } @@ -663,8 +681,8 @@ diff -rupN sdl/src/video/orbital/SDL_orbitalvideo.c sdl-redox/src/video/orbital/ + } +} diff -rupN sdl/src/video/orbital/SDL_orbitalvideo.h sdl-redox/src/video/orbital/SDL_orbitalvideo.h ---- sdl/src/video/orbital/SDL_orbitalvideo.h 1969-12-31 16:00:00.000000000 -0800 -+++ sdl-redox/src/video/orbital/SDL_orbitalvideo.h 2016-07-27 18:17:26.687240818 -0700 +--- sdl/src/video/orbital/SDL_orbitalvideo.h 1969-12-31 17:00:00.000000000 -0700 ++++ sdl-redox/src/video/orbital/SDL_orbitalvideo.h 2017-11-21 19:24:52.460053442 -0700 @@ -0,0 +1,41 @@ +/* + SDL - Simple DirectMedia Layer @@ -708,8 +726,8 @@ diff -rupN sdl/src/video/orbital/SDL_orbitalvideo.h sdl-redox/src/video/orbital/ + +#endif /* _SDL_orbitalvideo_h */ diff -rupN sdl/src/video/SDL_sysvideo.h sdl-redox/src/video/SDL_sysvideo.h ---- sdl/src/video/SDL_sysvideo.h 2012-01-18 22:30:06.000000000 -0800 -+++ sdl-redox/src/video/SDL_sysvideo.h 2016-07-27 18:17:26.683907466 -0700 +--- sdl/src/video/SDL_sysvideo.h 2012-01-18 23:30:06.000000000 -0700 ++++ sdl-redox/src/video/SDL_sysvideo.h 2017-11-21 19:24:52.460053442 -0700 @@ -410,6 +410,9 @@ extern VideoBootStrap AALIB_bootstrap; #if SDL_VIDEO_DRIVER_CACA extern VideoBootStrap CACA_bootstrap; @@ -721,8 +739,8 @@ diff -rupN sdl/src/video/SDL_sysvideo.h sdl-redox/src/video/SDL_sysvideo.h extern VideoBootStrap DUMMY_bootstrap; #endif diff -rupN sdl/src/video/SDL_video.c sdl-redox/src/video/SDL_video.c ---- sdl/src/video/SDL_video.c 2012-01-18 22:30:06.000000000 -0800 -+++ sdl-redox/src/video/SDL_video.c 2016-07-27 18:17:26.683907466 -0700 +--- sdl/src/video/SDL_video.c 2012-01-18 23:30:06.000000000 -0700 ++++ sdl-redox/src/video/SDL_video.c 2017-11-21 19:24:52.460053442 -0700 @@ -126,6 +126,9 @@ static VideoBootStrap *bootstrap[] = { #if SDL_VIDEO_DRIVER_CACA &CACA_bootstrap, From bef342ff07cb980f68c0cc362a11cff4ef8e2eb1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 21 Nov 2017 20:18:20 -0700 Subject: [PATCH 0306/3180] Disable CPU optimizations that may break machines --- recipes/prboom/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/prboom/recipe.sh b/recipes/prboom/recipe.sh index f3ef660f..f8c08442 100644 --- a/recipes/prboom/recipe.sh +++ b/recipes/prboom/recipe.sh @@ -15,7 +15,7 @@ function recipe_update { function recipe_build { autoreconf -if wget -O autotools/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub - ./configure --prefix=/ --host=${HOST} --disable-sdltest --disable-gl --without-net --with-sdl-prefix="$PWD/../sysroot" + ./configure --prefix=/ --host=${HOST} --disable-sdltest --disable-cpu-opt --disable-gl --without-net --with-sdl-prefix="$PWD/../sysroot" make skip=1 } From 1750721923b266141fd862269f12e4bd834a3ec5 Mon Sep 17 00:00:00 2001 From: Paul Date: Tue, 21 Nov 2017 19:50:30 -0800 Subject: [PATCH 0307/3180] Add recipe for cmatrix (#108) * Add recipe for cmatrix * Add recipe for terminfo * Fix recipe for cmatrix --- recipes/cmatrix/cmatrix.patch | 101 ++++++++++++++++++++++++++++++++++ recipes/cmatrix/recipe.sh | 51 +++++++++++++++++ recipes/terminfo/recipe.sh | 32 +++++++++++ 3 files changed, 184 insertions(+) create mode 100644 recipes/cmatrix/cmatrix.patch create mode 100644 recipes/cmatrix/recipe.sh create mode 100644 recipes/terminfo/recipe.sh diff --git a/recipes/cmatrix/cmatrix.patch b/recipes/cmatrix/cmatrix.patch new file mode 100644 index 00000000..0cb61265 --- /dev/null +++ b/recipes/cmatrix/cmatrix.patch @@ -0,0 +1,101 @@ +diff -ru source/cmatrix.c source-new/cmatrix.c +--- source/cmatrix.c 2017-11-18 13:21:42.992870796 -0800 ++++ source-new/cmatrix.c 2017-11-18 13:20:45.446407288 -0800 +@@ -37,7 +37,7 @@ + #ifdef HAVE_NCURSES_H + #include + #else +-#include ++#include + #endif + + #ifdef HAVE_SYS_IOCTL_H +@@ -215,47 +215,49 @@ + + void handle_sigwinch(int s) { + +- char *tty = NULL; +- int fd = 0; +- int result = 0; +- struct winsize win; +- +- tty = ttyname(0); +- if (!tty) { +- return; +- } +- fd = open(tty, O_RDWR); +- if (fd == -1) { +- return; +- } +- result = ioctl(fd, TIOCGWINSZ, &win); +- if (result == -1) { +- return; +- } +- +- COLS = win.ws_col; +- LINES = win.ws_row; +- +- if(LINES <10){ +- LINES = 10; +- } +- if(COLS <10){ +- COLS = 10; +- } +- +-#ifdef HAVE_RESIZETERM +- resizeterm(LINES, COLS); +-#ifdef HAVE_WRESIZE +- if (wresize(stdscr, LINES, COLS) == ERR) { +- c_die("Cannot resize window!"); +- } +-#endif /* HAVE_WRESIZE */ +-#endif /* HAVE_RESIZETERM */ +- +- var_init(); +- /* Do these because width may have changed... */ +- clear(); +- refresh(); ++/* ++ * char *tty = NULL; ++ * int fd = 0; ++ * int result = 0; ++ * struct winsize win; ++ * ++ * tty = ttyname(0); ++ * if (!tty) { ++ * return; ++ * } ++ * fd = open(tty, O_RDWR); ++ * if (fd == -1) { ++ * return; ++ * } ++ * result = ioctl(fd, TIOCGWINSZ, &win); ++ * if (result == -1) { ++ * return; ++ * } ++ * ++ * COLS = win.ws_col; ++ * LINES = win.ws_row; ++ * ++ * if(LINES <10){ ++ * LINES = 10; ++ * } ++ * if(COLS <10){ ++ * COLS = 10; ++ * } ++ * ++ *#ifdef HAVE_RESIZETERM ++ * resizeterm(LINES, COLS); ++ *#ifdef HAVE_WRESIZE ++ * if (wresize(stdscr, LINES, COLS) == ERR) { ++ * c_die("Cannot resize window!"); ++ * } ++ *#endif [> HAVE_WRESIZE <] ++ *#endif [> HAVE_RESIZETERM <] ++ * ++ * var_init(); ++ * [> Do these because width may have changed... <] ++ * clear(); ++ * refresh(); ++ */ + } diff --git a/recipes/cmatrix/recipe.sh b/recipes/cmatrix/recipe.sh new file mode 100644 index 00000000..171789b3 --- /dev/null +++ b/recipes/cmatrix/recipe.sh @@ -0,0 +1,51 @@ +GIT=https://github.com/abishekvashok/cmatrix +BUILD_DEPENDS=(ncurses) +DEPENDS=(terminfo) + +export AR="${HOST}-ar" +export AS="${HOST}-as" +export CC="${HOST}-gcc" +export CXX="${HOST}-g++" +export LD="${HOST}-ld" +export NM="${HOST}-nm" +export OBJCOPY="${HOST}-objcopy" +export OBJDUMP="${HOST}-objdump" +export RANLIB="${HOST}-ranlib" +export READELF="${HOST}-readelf" +export STRIP="${HOST}-strip" + +function recipe_version { + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="${PWD}/../sysroot" + export LDFLAGS="-L$sysroot/lib" + export CPPFLAGS="-I$sysroot/include" + ./configure --host=${HOST} --prefix=/ --without-fonts + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + rm -rf $1/share/man + skip=1 +} diff --git a/recipes/terminfo/recipe.sh b/recipes/terminfo/recipe.sh new file mode 100644 index 00000000..e45ed9dc --- /dev/null +++ b/recipes/terminfo/recipe.sh @@ -0,0 +1,32 @@ +GIT=https://github.com/sajattack/terminfo + +function recipe_version { + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + echo "skipping build" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + echo "skipping clean" + skip=1 +} + +function recipe_stage { + mkdir -p ../stage/share/terminfo + cp -r * ../stage/share/terminfo/ + skip=1 +} From 123c12ad393c748098d80b3e857fe2cca934aaf0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 21 Nov 2017 21:07:21 -0700 Subject: [PATCH 0308/3180] sdl: Require 32 bpp --- recipes/sdl/01_orbital.patch | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/recipes/sdl/01_orbital.patch b/recipes/sdl/01_orbital.patch index ded4f4f1..93a4845b 100644 --- a/recipes/sdl/01_orbital.patch +++ b/recipes/sdl/01_orbital.patch @@ -418,7 +418,7 @@ diff -rupN sdl/src/video/orbital/SDL_orbitalscancode.h sdl-redox/src/video/orbit diff -rupN sdl/src/video/orbital/SDL_orbitalvideo.c sdl-redox/src/video/orbital/SDL_orbitalvideo.c --- sdl/src/video/orbital/SDL_orbitalvideo.c 1969-12-31 17:00:00.000000000 -0700 +++ sdl-redox/src/video/orbital/SDL_orbitalvideo.c 2017-11-21 19:34:44.269053445 -0700 -@@ -0,0 +1,261 @@ +@@ -0,0 +1,266 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -574,6 +574,11 @@ diff -rupN sdl/src/video/orbital/SDL_orbitalvideo.c sdl-redox/src/video/orbital/ +SDL_Surface *ORBITAL_SetVideoMode(_THIS, SDL_Surface *current, + int width, int height, int bpp, Uint32 flags) +{ ++ if ( bpp != 32 ) { ++ SDL_SetError("Unsupported color depth - must use 32-bits per pixel"); ++ return(NULL); ++ } ++ + if ( this->hidden->fd ) { + close( this->hidden->fd ); + this->hidden->fd = 0; @@ -586,7 +591,7 @@ diff -rupN sdl/src/video/orbital/SDL_orbitalvideo.c sdl-redox/src/video/orbital/ + + char path[4096]; + snprintf(path, 4096, "orbital:a/-1/-1/%d/%d/SDL", width, height); -+ this->hidden->fd = open(path, O_RDONLY); ++ this->hidden->fd = open(path, O_RDWR); + if ( this->hidden->fd <= 0 ) { + this->hidden->fd = 0; + SDL_SetError("Couldn't create window for requested mode"); From e4c9e702d2081dd4342c4690412586aa36448b03 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Thu, 23 Nov 2017 22:28:19 +0100 Subject: [PATCH 0309/3180] Add ca-certificates dependency for git --- recipes/git/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/git/recipe.sh b/recipes/git/recipe.sh index f9b212c4..e2e00167 100644 --- a/recipes/git/recipe.sh +++ b/recipes/git/recipe.sh @@ -1,6 +1,7 @@ VERSION=2.13.1 TAR=https://www.kernel.org/pub/software/scm/git/git-$VERSION.tar.xz BUILD_DEPENDS=(zlib curl openssl expat) +DEPENDS="ca-certificates" export AR="${HOST}-ar" export AS="${HOST}-as" From 00bac37c7288ed1371cd34a8bfc375de13c372e7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 26 Nov 2017 09:12:26 -0700 Subject: [PATCH 0310/3180] Add unfetch script --- unfetch.sh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100755 unfetch.sh diff --git a/unfetch.sh b/unfetch.sh new file mode 100755 index 00000000..a63be6a7 --- /dev/null +++ b/unfetch.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +set -e + +source config.sh + +if [ $# = 0 ] +then + recipes="$(ls -1 recipes)" +else + recipes="$@" +fi + +for recipe in $recipes +do + ./cook.sh "$recipe" unfetch +done From 7d02f68aad6b8e5d3a923b44cd07359f53aacadc Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 26 Nov 2017 19:14:35 -0700 Subject: [PATCH 0311/3180] Use poll with git --- recipes/git/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/git/recipe.sh b/recipes/git/recipe.sh index e2e00167..cedf42ac 100644 --- a/recipes/git/recipe.sh +++ b/recipes/git/recipe.sh @@ -15,7 +15,7 @@ export RANLIB="${HOST}-ranlib" export READELF="${HOST}-readelf" export STRIP="${HOST}-strip" -MAKEFLAGS="NO_MMAP=1 NEEDS_SSL_WITH_CURL=1 NEEDS_CRYPTO_WITH_SSL=1 NO_UNIX_SOCKETS=1 NO_POLL=1 NEEDS_LIBICONV= NEEDS_LIBRT= BLK_SHA1=1" +MAKEFLAGS="NO_MMAP=1 NEEDS_SSL_WITH_CURL=1 NEEDS_CRYPTO_WITH_SSL=1 NO_UNIX_SOCKETS=1 NEEDS_LIBICONV= NEEDS_LIBRT= BLK_SHA1=1" function recipe_version { echo "$VERSION" From 2d5b7b9b5bb9a6058241a08a58f2f402a50f6166 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Sun, 3 Dec 2017 22:43:28 +0100 Subject: [PATCH 0312/3180] Add ncursesw recipe, terminfo changes --- recipes/ncurses/recipe.sh | 3 ++- recipes/ncursesw/01-config-sub.patch | 21 +++++++++++++++ recipes/ncursesw/recipe.sh | 38 ++++++++++++++++++++++++++++ recipes/terminfo/recipe.sh | 6 ++--- recipes/vim/recipe.sh | 3 ++- 5 files changed, 66 insertions(+), 5 deletions(-) create mode 100644 recipes/ncursesw/01-config-sub.patch create mode 100644 recipes/ncursesw/recipe.sh diff --git a/recipes/ncurses/recipe.sh b/recipes/ncurses/recipe.sh index a31c4ab0..ee3b27c5 100644 --- a/recipes/ncurses/recipe.sh +++ b/recipes/ncurses/recipe.sh @@ -1,5 +1,6 @@ VERSION=6.0 TAR=http://ftp.gnu.org/gnu/ncurses/ncurses-$VERSION.tar.gz +DEPENDS="terminfo" function recipe_version { echo "$VERSION" @@ -13,7 +14,7 @@ function recipe_update { function recipe_build { export CPPFLAGS="-P" - ./configure --host=${HOST} --prefix="" + ./configure --host=${HOST} --prefix="" --disable-db-install make skip=1 } diff --git a/recipes/ncursesw/01-config-sub.patch b/recipes/ncursesw/01-config-sub.patch new file mode 100644 index 00000000..8ed32be6 --- /dev/null +++ b/recipes/ncursesw/01-config-sub.patch @@ -0,0 +1,21 @@ +diff -ru source/config.sub source-new/config.sub +--- source/config.sub 2015-05-02 13:52:04.000000000 +0200 ++++ source-new/config.sub 2017-08-13 13:12:16.485670615 +0200 +@@ -2,7 +2,7 @@ + # Configuration validation subroutine script. + # Copyright 1992-2015 Free Software Foundation, Inc. + +-timestamp='2015-03-08' ++timestamp='2017-08-13' + + # This file is free software; you can redistribute it and/or modify it + # under the terms of the GNU General Public License as published by +@@ -1371,7 +1371,7 @@ + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. +- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ ++ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* | -redox* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ diff --git a/recipes/ncursesw/recipe.sh b/recipes/ncursesw/recipe.sh new file mode 100644 index 00000000..8f454dbe --- /dev/null +++ b/recipes/ncursesw/recipe.sh @@ -0,0 +1,38 @@ +VERSION=6.0 +TAR=http://ftp.gnu.org/gnu/ncurses/ncurses-$VERSION.tar.gz +DEPENDS="terminfo" + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + export CPPFLAGS="-P" + ./configure --host=${HOST} --prefix="" --enable-widec --disable-db-install + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + rm -rf "$1"/bin + rm -rf "$1"/share/{doc,info,man} + skip=1 +} diff --git a/recipes/terminfo/recipe.sh b/recipes/terminfo/recipe.sh index e45ed9dc..2321f0df 100644 --- a/recipes/terminfo/recipe.sh +++ b/recipes/terminfo/recipe.sh @@ -21,12 +21,12 @@ function recipe_test { } function recipe_clean { - echo "skipping clean" + echo "skipping clean" skip=1 } function recipe_stage { - mkdir -p ../stage/share/terminfo - cp -r * ../stage/share/terminfo/ + mkdir -p ../stage/share + cp -r * ../stage/share/ skip=1 } diff --git a/recipes/vim/recipe.sh b/recipes/vim/recipe.sh index c14e95e9..b0b64523 100644 --- a/recipes/vim/recipe.sh +++ b/recipes/vim/recipe.sh @@ -1,6 +1,7 @@ VERSION=8.0.586 TAR=http://ftp.vim.org/vim/unix/vim-$VERSION.tar.bz2 BUILD_DEPENDS=(ncurses) +DEPENDS="terminfo" export AR="${HOST}-ar" export AS="${HOST}-as" @@ -35,7 +36,7 @@ function recipe_build { export vim_cv_stat_ignores_slash=no export vim_cv_memmove_handles_overlap=yes ./configure --host=${HOST} --prefix=/ --with-tlib=ncurses - make + make skip=1 } From 8b56ce4a032e3ce9363b09b79b2e94a6c5a1b33b Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Mon, 4 Dec 2017 04:27:18 +0100 Subject: [PATCH 0313/3180] Add mdp recipe --- recipes/mdp/recipe.sh | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 recipes/mdp/recipe.sh diff --git a/recipes/mdp/recipe.sh b/recipes/mdp/recipe.sh new file mode 100644 index 00000000..c2496537 --- /dev/null +++ b/recipes/mdp/recipe.sh @@ -0,0 +1,40 @@ +GIT=https://github.com/visit1985/mdp.git +BUILD_DEPENDS=(ncursesw) +DEPENDS="terminfo" + +function recipe_version { + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="${PWD}/../sysroot" + export CC="${HOST}-gcc" + export LD="${HOST}-ld" + export CFLAGS="-I$sysroot/include -I$sysroot/include/ncursesw" + export LDFLAGS="-L$sysroot/lib" + + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" PREFIX="" install + skip=1 +} From 94ceffa8607aee9519f11ff2a3ab1383f3d69295 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 8 Dec 2017 20:57:33 -0700 Subject: [PATCH 0314/3180] Use all possible bins from uutils --- recipes/uutils/recipe.sh | 63 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 6 deletions(-) diff --git a/recipes/uutils/recipe.sh b/recipes/uutils/recipe.sh index 5ee48628..563c9752 100644 --- a/recipes/uutils/recipe.sh +++ b/recipes/uutils/recipe.sh @@ -2,12 +2,63 @@ GIT=https://github.com/redox-os/uutils.git GIT_UPSTREAM=https://github.com/uutils/coreutils.git CARGOFLAGS="--no-default-features --features redox" +BINS=( + base32 + base64 + basename + chmod + cksum + comm + cp + cut + date + dircolors + dirname + echo + env + expand + expr + factor + false + fmt + fold + head + install + link + ls + mktemp + mv + od + paste + printenv + printf + pwd + readlink + realpath + relpath + rm + rmdir + seq + shuf + sleep + split + sum + tac + tee + tr + true + truncate + tsort + unexpand + uniq + wc + yes +) + function recipe_stage { mkdir -p "$1/bin" - ln -s uutils "$1/bin/chmod" - ln -s uutils "$1/bin/env" - ln -s uutils "$1/bin/expr" - ln -s uutils "$1/bin/install" - ln -s uutils "$1/bin/ls" - ln -s uutils "$1/bin/mktemp" + for bin in "${BINS[@]}" + do + ln -s uutils "$1/bin/$bin" + done } From 4fcefcc47e9e1a96539acfbd6169cfabcda8a862 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 13 Dec 2017 22:19:25 -0700 Subject: [PATCH 0315/3180] Add newlibtest repo --- recipes/extrautils/recipe.sh | 2 +- recipes/newlibtest/recipe.sh | 39 ++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 recipes/newlibtest/recipe.sh diff --git a/recipes/extrautils/recipe.sh b/recipes/extrautils/recipe.sh index de7b40e1..f36cbfca 100644 --- a/recipes/extrautils/recipe.sh +++ b/recipes/extrautils/recipe.sh @@ -1,5 +1,5 @@ GIT=https://github.com/redox-os/extrautils.git -BUILD_DEPENDS=xz +BUILD_DEPENDS=(xz) export PKG_CONFIG_ALLOW_CROSS=1 export PKG_CONFIG_PATH= export PKG_CONFIG_LIBDIR="$PWD/sysroot/lib/pkgconfig" diff --git a/recipes/newlibtest/recipe.sh b/recipes/newlibtest/recipe.sh new file mode 100644 index 00000000..81024e55 --- /dev/null +++ b/recipes/newlibtest/recipe.sh @@ -0,0 +1,39 @@ +GIT=https://github.com/redox-os/newlibtest.git +BUILD_DEPENDS=(newlib) + +function recipe_version { + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="${PWD}/../sysroot" + export CC="${HOST}-gcc" + export LD="${HOST}-ld" + export CFLAGS="-nostdinc -nostdlib -static $sysroot/lib/crt0.o" + export LIBS="-I $sysroot/include -L $sysroot/lib -lc -lm" + + make all + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" prefix=/ install + skip=1 +} From 527599d49c24d24eeecc1438c75477d3a3c59221 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 14 Dec 2017 20:05:28 -0700 Subject: [PATCH 0316/3180] Fix build of newlibtest --- cook.sh | 4 ++-- recipes/newlibtest/recipe.sh | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/cook.sh b/cook.sh index 24268836..0de729bd 100755 --- a/cook.sh +++ b/cook.sh @@ -226,7 +226,7 @@ function op { fi popd > /dev/null ;; - prepare) + prepare) skip=0 if [ "$(type -t recipe_prepare)" = "function" ] then @@ -248,7 +248,7 @@ function op { pkg --target=$TARGET install --root sysroot "$REPO/$i.tar.gz" done fi - + rm -rf build cp -rp source build diff --git a/recipes/newlibtest/recipe.sh b/recipes/newlibtest/recipe.sh index 81024e55..fdbed7c5 100644 --- a/recipes/newlibtest/recipe.sh +++ b/recipes/newlibtest/recipe.sh @@ -15,8 +15,9 @@ function recipe_build { sysroot="${PWD}/../sysroot" export CC="${HOST}-gcc" export LD="${HOST}-ld" - export CFLAGS="-nostdinc -nostdlib -static $sysroot/lib/crt0.o" - export LIBS="-I $sysroot/include -L $sysroot/lib -lc -lm" + export CFLAGS="-static -nostdinc -I $sysroot/include -I /usr/lib/gcc/x86_64-unknown-redox/7.0.1/include/ -nostdlib -L $sysroot/lib" + export CRT="$sysroot/lib/crt0.o" + export CLIBS="-lc -lm" make all skip=1 From 8efba6e883898df9fbed40ef28de681821da47ef Mon Sep 17 00:00:00 2001 From: Alex Lyon Date: Fri, 15 Dec 2017 21:09:05 -0800 Subject: [PATCH 0317/3180] Add recipes for nulld and zerod --- recipes/nulld/recipe.sh | 1 + recipes/zerod/recipe.sh | 1 + 2 files changed, 2 insertions(+) create mode 100644 recipes/nulld/recipe.sh create mode 100644 recipes/zerod/recipe.sh diff --git a/recipes/nulld/recipe.sh b/recipes/nulld/recipe.sh new file mode 100644 index 00000000..accc4b40 --- /dev/null +++ b/recipes/nulld/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/nulld.git diff --git a/recipes/zerod/recipe.sh b/recipes/zerod/recipe.sh new file mode 100644 index 00000000..855f8c05 --- /dev/null +++ b/recipes/zerod/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/zerod.git From 0e25e6ae5e246c0cc5dd9db4609b8b83f2ace658 Mon Sep 17 00:00:00 2001 From: Tommie Levy Date: Sat, 23 Dec 2017 20:20:11 -0500 Subject: [PATCH 0318/3180] Fix ci maybe --- setup.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/setup.sh b/setup.sh index 9f30c1d7..bb8e5218 100755 --- a/setup.sh +++ b/setup.sh @@ -1,9 +1,6 @@ #!/usr/bin/env bash set -e -echo "Downloading latest libc-artifacts" -git submodule update --init --remote libc-artifacts - echo "Downloading latest pkgutils" git submodule update --init --remote pkgutils cargo update --manifest-path pkgutils/Cargo.toml From 5ce3e4ef2dd38c77d66eba379c0b85776b3bb7f1 Mon Sep 17 00:00:00 2001 From: Tommie Levy Date: Sat, 23 Dec 2017 20:28:29 -0500 Subject: [PATCH 0319/3180] Remove cookbook's defuct ci config --- .travis.yml | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index afb0d257..00000000 --- a/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: generic -sudo: required -install: - - curl https://sh.rustup.rs -sSf > rustup; chmod +x rustup; ./rustup --default-toolchain nightly -y - - export PATH="$HOME/.cargo/bin:$PATH"; ./setup.sh -script: export PATH="$HOME/.cargo/bin:$PATH"; ./ci.sh -notifications: - email: false From 4b81f4f6df29651dfdee5c9ccf365048cc070168 Mon Sep 17 00:00:00 2001 From: Tommie Levy Date: Sat, 23 Dec 2017 21:43:37 -0500 Subject: [PATCH 0320/3180] Remove travis ci badge in readme --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 423512a1..1604f845 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,6 @@ # cookbook A collection of package recipes for Redox. -[![Travis Build Status](https://travis-ci.org/redox-os/cookbook.svg?branch=master)](https://travis-ci.org/redox-os/cookbook) [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) ## Setup From d9ede42f67a30f31481eae46aa1ee1cae0764af3 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 27 Dec 2017 14:31:53 -0700 Subject: [PATCH 0321/3180] Allow missing llvm-source in rust recipe --- recipes/rust/recipe.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index b7410e3a..aa3383ca 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -3,9 +3,9 @@ BRANCH=compile-redox-stage-0 DEPENDS="gcc cargo" LLVM_GIT="https://github.com/redox-os/llvm.git" -LLVM_SOURCE="$(realpath llvm-source)" -LLVM_BUILD="$(realpath llvm-build)" -LLVM_PREFIX="$(realpath llvm-prefix)" +LLVM_SOURCE="$(realpath -m llvm-source)" +LLVM_BUILD="$(realpath -m llvm-build)" +LLVM_PREFIX="$(realpath -m llvm-prefix)" SYSROOT="/usr/$HOST" unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP From 02669e4b6201dcb5e9864ebd757d39eebe0280e9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 27 Dec 2017 20:48:28 -0700 Subject: [PATCH 0322/3180] Make bash patch smaller --- recipes/bash/01-redox-hacks.patch | 220 ++---------------------------- 1 file changed, 15 insertions(+), 205 deletions(-) diff --git a/recipes/bash/01-redox-hacks.patch b/recipes/bash/01-redox-hacks.patch index 06386fc5..fb2d1991 100644 --- a/recipes/bash/01-redox-hacks.patch +++ b/recipes/bash/01-redox-hacks.patch @@ -1,66 +1,3 @@ -diff -ru source/builtins/read.def source-new/builtins/read.def ---- source/builtins/read.def 2016-05-16 11:24:56.000000000 -0700 -+++ source-new/builtins/read.def 2017-08-07 19:03:27.778688703 -0700 -@@ -94,8 +94,6 @@ - #include "common.h" - #include "bashgetopt.h" - --#include -- - #if defined (READLINE) - #include "../bashline.h" - #include -@@ -119,7 +117,6 @@ - struct ttsave - { - int fd; -- TTYSTRUCT *attrs; - }; - - #if defined (READLINE) -@@ -192,7 +189,6 @@ - char *e, *t, *t1, *ps2, *tofree; - struct stat tsb; - SHELL_VAR *var; -- TTYSTRUCT ttattrs, ttset; - #if defined (ARRAY_VARS) - WORD_LIST *alist; - #endif -@@ -482,11 +478,6 @@ - { - /* ttsave() */ - termsave.fd = fd; -- ttgetattr (fd, &ttattrs); -- termsave.attrs = &ttattrs; -- -- ttset = ttattrs; -- i = silent ? ttfd_cbreak (fd, &ttset) : ttfd_onechar (fd, &ttset); - if (i < 0) - sh_ttyerror (1); - tty_modified = 1; -@@ -499,14 +490,6 @@ - { - /* ttsave (); */ - termsave.fd = fd; -- ttgetattr (fd, &ttattrs); -- termsave.attrs = &ttattrs; -- -- ttset = ttattrs; -- i = ttfd_noecho (fd, &ttset); /* ttnoecho (); */ -- if (i < 0) -- sh_ttyerror (1); -- - tty_modified = 1; - add_unwind_protect ((Function *)ttyrestore, (char *)&termsave); - if (interactive_shell == 0) -@@ -995,7 +978,6 @@ - ttyrestore (ttp) - struct ttsave *ttp; - { -- ttsetattr (ttp->fd, ttp->attrs); - tty_modified = 0; - } - diff -ru source/general.c source-new/general.c --- source/general.c 2016-08-11 08:16:56.000000000 -0700 +++ source-new/general.c 2017-08-07 19:55:47.437464359 -0700 @@ -71,20 +8,20 @@ diff -ru source/general.c source-new/general.c +#if 0 int tty_fd; char *tty; - + @@ -490,6 +491,7 @@ } if (tty_fd >= 0) close (tty_fd); +#endif } - + /* Return 1 if PATH1 and PATH2 are the same file. This is kind of diff -ru source/include/posixwait.h source-new/include/posixwait.h --- source/include/posixwait.h 2008-08-12 07:03:03.000000000 -0700 +++ source-new/include/posixwait.h 2017-08-07 18:37:29.854754332 -0700 @@ -34,7 +34,7 @@ - + /* How to get the status of a job. For Posix, this is just an int, but for other systems we have to crack the union wait. */ -#if !defined (_POSIX_VERSION) @@ -93,73 +30,26 @@ diff -ru source/include/posixwait.h source-new/include/posixwait.h # define WSTATUS(t) (t.w_status) #else /* _POSIX_VERSION */ @@ -50,7 +50,7 @@ - + /* More Posix P1003.1 definitions. In the POSIX versions, the parameter is passed as an `int', in the non-POSIX version, as `union wait'. */ -#if defined (_POSIX_VERSION) +#if 1 - + # if !defined (WSTOPSIG) # define WSTOPSIG(s) ((s) >> 8) diff -ru source/lib/sh/getcwd.c source-new/lib/sh/getcwd.c --- source/lib/sh/getcwd.c 2012-03-10 07:48:50.000000000 -0800 +++ source-new/lib/sh/getcwd.c 2017-08-07 19:53:52.379759811 -0700 @@ -20,7 +20,7 @@ - + #include - + -#if !defined (HAVE_GETCWD) +#if 0 - + #if !defined (__GNUC__) && !defined (HAVE_ALLOCA_H) && defined (_AIX) #pragma alloca -diff -ru source/lib/sh/Makefile.in source-new/lib/sh/Makefile.in ---- source/lib/sh/Makefile.in 2015-10-26 09:59:58.000000000 -0700 -+++ source-new/lib/sh/Makefile.in 2017-08-07 19:12:46.587180259 -0700 -@@ -83,7 +83,7 @@ - # The C code source files for this library. - CSOURCES = clktck.c clock.c getcwd.c getenv.c oslib.c setlinebuf.c \ - strcasecmp.c strerror.c strtod.c strtol.c strtoul.c \ -- vprint.c itos.c rename.c zread.c zwrite.c shtty.c \ -+ vprint.c itos.c rename.c zread.c zwrite.c \ - inet_aton.c netconn.c netopen.c strpbrk.c timeval.c makepath.c \ - pathcanon.c pathphys.c tmpfile.c stringlist.c stringvec.c spell.c \ - shquote.c strtrans.c strcasestr.c snprintf.c mailstat.c \ -@@ -100,7 +100,7 @@ - # The object files contained in $(LIBRARY_NAME) - LIBOBJS = @LIBOBJS@ - OBJECTS = clktck.o clock.o getenv.o oslib.o setlinebuf.o strnlen.o \ -- itos.o zread.o zwrite.o shtty.o shmatch.o eaccess.o \ -+ itos.o zread.o zwrite.o shmatch.o eaccess.o \ - netconn.o netopen.o timeval.o makepath.o pathcanon.o \ - pathphys.o tmpfile.o stringlist.o stringvec.o spell.o shquote.o \ - strtrans.o snprintf.o mailstat.o fmtulong.o \ -@@ -174,7 +174,6 @@ - shmatch.o: shmatch.c - shmbchar.o: shmbchar.c - shquote.o: shquote.c --shtty.o: shtty.c - snprintf.o: snprintf.c - spell.o: spell.c - strcasecmp.o: strcasecmp.c -@@ -251,7 +250,6 @@ - shmatch.o: ${BUILD_DIR}/config.h - shmbchar.o: ${BUILD_DIR}/config.h - shquote.o: ${BUILD_DIR}/config.h --shtty.o: ${BUILD_DIR}/config.h - snprintf.o: ${BUILD_DIR}/config.h - spell.o: ${BUILD_DIR}/config.h - strcasecmp.o: ${BUILD_DIR}/config.h -@@ -411,9 +409,6 @@ - shquote.o: ${BASHINCDIR}/ansi_stdlib.h ${topdir}/xmalloc.h - shquote.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h - --shtty.o: ${BASHINCDIR}/shtty.h --shtty.o: ${BASHINCDIR}/stdc.h -- - snprintf.o: ${BASHINCDIR}/stdc.h ${topdir}/bashansi.h ${topdir}/xmalloc.h - snprintf.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h - snprintf.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h diff -ru source/lib/sh/oslib.c source-new/lib/sh/oslib.c --- source/lib/sh/oslib.c 2013-10-14 06:12:57.000000000 -0700 +++ source-new/lib/sh/oslib.c 2017-08-07 19:10:21.375838312 -0700 @@ -183,96 +73,16 @@ diff -ru source/lib/sh/winsize.c source-new/lib/sh/winsize.c @@ -28,7 +28,6 @@ # include #endif - + -#include - + /* Try to find the definitions of `struct winsize' and TIOGCWINSZ */ - -diff -ru source/nojobs.c source-new/nojobs.c ---- source/nojobs.c 2016-08-04 12:34:33.000000000 -0700 -+++ source-new/nojobs.c 2017-08-07 18:35:09.650244654 -0700 -@@ -39,7 +39,6 @@ - #endif - - /* Need to include this up here for *_TTY_DRIVER definitions. */ --#include "shtty.h" - - #include "bashintl.h" - -@@ -829,7 +828,7 @@ - CHECK_WAIT_INTR; - if (got_pid < 0 && errno == ECHILD) - { --#if !defined (_POSIX_VERSION) -+#if 0 - status.w_termsig = status.w_retcode = 0; - #else - status = 0; -@@ -929,13 +928,13 @@ - return (result); - } - --static TTYSTRUCT shell_tty_info; - static int got_tty_state; - - /* Fill the contents of shell_tty_info with the current tty info. */ - int - get_tty_state () - { -+#if 0 - int tty; - - tty = input_tty (); -@@ -946,6 +945,7 @@ - if (check_window_size) - get_new_window_size (0, (int *)0, (int *)0); - } -+#endif - return 0; - } - -@@ -953,6 +953,7 @@ - int - set_tty_state () - { -+#if 0 - int tty; - - tty = input_tty (); -@@ -962,6 +963,7 @@ - return 0; - ttsetattr (tty, &shell_tty_info); - } -+#endif - return 0; - } - -diff -ru source/shell.c source-new/shell.c ---- source/shell.c 2016-05-06 08:23:43.000000000 -0700 -+++ source-new/shell.c 2017-08-07 19:54:44.320227849 -0700 -@@ -1276,7 +1276,7 @@ - { - int e; - -- if (setuid (current_user.uid) < 0) -+ if (1) - { - e = errno; - sys_error (_("cannot set uid to %d: effective uid %d"), current_user.uid, current_user.euid); -@@ -1285,7 +1285,7 @@ - exit (e); - #endif - } -- if (setgid (current_user.gid) < 0) -+ if (1) - sys_error (_("cannot set gid to %d: effective gid %d"), current_user.gid, current_user.egid); - - current_user.euid = current_user.uid; + diff -ru source/sig.c source-new/sig.c --- source/sig.c 2016-02-11 12:02:45.000000000 -0800 +++ source-new/sig.c 2017-08-07 19:56:13.637701224 -0700 @@ -684,7 +684,9 @@ - + /* Perform OPERATION on NEWSET, perhaps leaving information in OLDSET. */ sigprocmask (operation, newset, oldset) - int operation, *newset, *oldset; @@ -281,7 +91,7 @@ diff -ru source/sig.c source-new/sig.c + sigset_t *oldset; { int old, new; - + @@ -696,11 +698,11 @@ switch (operation) { @@ -289,10 +99,10 @@ diff -ru source/sig.c source-new/sig.c - old = sigblock (new); + //old = sigblock (new); break; - + case SIG_SETMASK: - old = sigsetmask (new); + //old = sigsetmask (new); break; - + default: From 72fce93ff81097e48afedbd866e455571d40b35d Mon Sep 17 00:00:00 2001 From: Zach Lute Date: Wed, 24 Jan 2018 23:55:04 -0800 Subject: [PATCH 0323/3180] Added logd recipe. --- recipes/logd/recipe.sh | 1 + 1 file changed, 1 insertion(+) create mode 100644 recipes/logd/recipe.sh diff --git a/recipes/logd/recipe.sh b/recipes/logd/recipe.sh new file mode 100644 index 00000000..db35800b --- /dev/null +++ b/recipes/logd/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/logd.git From 805590c6357aa03321b9c13f9dd61d9834953a40 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 Feb 2018 11:37:02 -0700 Subject: [PATCH 0324/3180] Update branch to use for Redox rust --- recipes/rust/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index afab8847..e59d7b51 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -1,5 +1,5 @@ GIT=https://github.com/redox-os/rust.git -BRANCH=compile-redox-stage-0 +BRANCH=compile-redox DEPENDS="gcc cargo" LLVM_GIT="https://github.com/redox-os/llvm.git" From 66bb39e16212e51e6e27580c2f13aff1b107eb5e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 Feb 2018 17:19:50 -0700 Subject: [PATCH 0325/3180] Update branch of cargo --- recipes/cargo/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/cargo/recipe.sh b/recipes/cargo/recipe.sh index 3a688e5a..0a879135 100644 --- a/recipes/cargo/recipe.sh +++ b/recipes/cargo/recipe.sh @@ -1,5 +1,5 @@ GIT=https://github.com/redox-os/cargo.git -BRANCH=redox_rebase +BRANCH=redox BUILD_DEPENDS=(openssl zlib) function recipe_build { From d9a6f3eba7e212aaa2283234ddf4edf918635fce Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 Feb 2018 20:52:29 -0700 Subject: [PATCH 0326/3180] Use llvm-tblgen-4.0 to fix build on newer Ubuntu --- recipes/rust/recipe.sh | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index e59d7b51..28597ed1 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -10,7 +10,32 @@ SYSROOT="/usr/$HOST" unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP -LLVM_CMAKE_ARGS=(-Wno-dev -DCMAKE_CROSSCOMPILING=True -DCMAKE_INSTALL_PREFIX="$LLVM_PREFIX" -DLLVM_DEFAULT_TARGET_TRIPLE=$HOST -DLLVM_TARGET_ARCH=$ARCH -DLLVM_TARGETS_TO_BUILD=X86 -DCMAKE_SYSTEM_NAME=Generic -DPYTHON_EXECUTABLE=/usr/bin/python2 -DUNIX=1 -DLLVM_ENABLE_THREADS=Off -DLLVM_INCLUDE_TESTS=OFF -target=$HOST -DLLVM_TABLEGEN=/usr/bin/llvm-tblgen -I"$SYSROOT/include" -DCMAKE_CXX_FLAGS='--std=gnu++11' -DLLVM_TOOL_LTO_BUILD=Off -DLLVM_TOOL_LLVM_PROFDATA_BUILD=Off -DLLVM_TOOL_LLI_BUILD=Off -DLLVM_TOOL_RDOBJ_BUILD=Off -DLLVM_TOOL_LLVM_COV_BUILD=Off -DLLVM_TOOL_LLVM_XRAY_BUILD=Off -DLLVM_TOOL_LLVM_LTO2_BUILD=Off -DLLVM_TOOL_LLVM_LTO_BUILD=Off -DLLVM_TOOL_LLVM_RTDYLD_BUILD=Off) +LLVM_CMAKE_ARGS=( + -Wno-dev + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_INSTALL_PREFIX="$LLVM_PREFIX" + -DLLVM_DEFAULT_TARGET_TRIPLE="$HOST" + -DLLVM_TARGET_ARCH="$ARCH" + -DLLVM_TARGETS_TO_BUILD=X86 + -DCMAKE_SYSTEM_NAME=Generic + -DPYTHON_EXECUTABLE="/usr/bin/python2" + -DUNIX=1 + -DLLVM_ENABLE_THREADS=Off + -DLLVM_INCLUDE_TESTS=Off + -target="$HOST" + -DLLVM_TABLEGEN="/usr/bin/llvm-tblgen-4.0" + -I"$SYSROOT/include" + -DCMAKE_CXX_FLAGS='--std=gnu++11' + -DLLVM_TOOL_LTO_BUILD=Off + -DLLVM_TOOL_LLVM_PROFDATA_BUILD=Off + -DLLVM_TOOL_LLI_BUILD=Off + -DLLVM_TOOL_RDOBJ_BUILD=Off + -DLLVM_TOOL_LLVM_COV_BUILD=Off + -DLLVM_TOOL_LLVM_XRAY_BUILD=Off + -DLLVM_TOOL_LLVM_LTO2_BUILD=Off + -DLLVM_TOOL_LLVM_LTO_BUILD=Off + -DLLVM_TOOL_LLVM_RTDYLD_BUILD=Off +) function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" From b0253dca869dfcfc964b9549bf89b80fad3b40e6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 7 Feb 2018 08:08:16 -0700 Subject: [PATCH 0327/3180] Update rust recipe config --- recipes/rust/config.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/rust/config.toml b/recipes/rust/config.toml index 353699d3..d7edc348 100644 --- a/recipes/rust/config.toml +++ b/recipes/rust/config.toml @@ -5,12 +5,15 @@ static-libstdcpp = true host = ["x86_64-unknown-redox"] target = ["x86_64-unknown-redox"] docs = false -submodules = false +submodules = true +verbose = 2 [rust] +thinlto = false use-jemalloc = false backtrace = false rpath = false +codegen-tests = false [target.x86_64-unknown-redox] cc = "x86_64-unknown-redox-gcc" From 497252d9af2b21291e445f5d1e22aa78f7c06ef8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 7 Feb 2018 08:10:47 -0700 Subject: [PATCH 0328/3180] Disable submodule management and verbosity level 2 in rust recipe --- recipes/rust/config.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/rust/config.toml b/recipes/rust/config.toml index d7edc348..2bd91ff3 100644 --- a/recipes/rust/config.toml +++ b/recipes/rust/config.toml @@ -5,8 +5,8 @@ static-libstdcpp = true host = ["x86_64-unknown-redox"] target = ["x86_64-unknown-redox"] docs = false -submodules = true -verbose = 2 +submodules = false +verbose = 1 [rust] thinlto = false From a30283c80f64cc407f98fa43d476b36cc5446a27 Mon Sep 17 00:00:00 2001 From: MggMuggins Date: Sat, 10 Feb 2018 12:14:03 -0600 Subject: [PATCH 0329/3180] Link whoami to id; Depends redox-os/userutils/#32 --- recipes/userutils/recipe.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/recipes/userutils/recipe.sh b/recipes/userutils/recipe.sh index cafc7367..7608b9d2 100644 --- a/recipes/userutils/recipe.sh +++ b/recipes/userutils/recipe.sh @@ -2,4 +2,6 @@ GIT=https://github.com/redox-os/userutils.git function recipe_stage { cp -Rv res "$1/etc" + mkdir -p "$1/bin" + ln -s id "$1/bin/whoami" } From cc2053969ffd11f291f40d94e532fa85a2a04134 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Wed, 21 Feb 2018 16:22:52 +0100 Subject: [PATCH 0330/3180] sdl: Update video to the latest orbital protocol --- recipes/sdl/01_orbital.patch | 178 ++++++++++++++++++++++++++--------- 1 file changed, 131 insertions(+), 47 deletions(-) diff --git a/recipes/sdl/01_orbital.patch b/recipes/sdl/01_orbital.patch index 93a4845b..90090bf7 100644 --- a/recipes/sdl/01_orbital.patch +++ b/recipes/sdl/01_orbital.patch @@ -1,6 +1,6 @@ -diff -rupN sdl/build-scripts/config.sub sdl-redox/build-scripts/config.sub ---- sdl/build-scripts/config.sub 2012-01-18 23:30:05.000000000 -0700 -+++ sdl-redox/build-scripts/config.sub 2017-11-21 19:24:52.456066921 -0700 +diff -rupN source/build-scripts/config.sub source_orbital/build-scripts/config.sub +--- source/build-scripts/config.sub 2012-01-19 07:30:05.000000000 +0100 ++++ source_orbital/build-scripts/config.sub 2018-02-21 09:33:42.970275299 +0100 @@ -1276,7 +1276,7 @@ case $os in -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ @@ -10,13 +10,13 @@ diff -rupN sdl/build-scripts/config.sub sdl-redox/build-scripts/config.sub | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ -diff -rupN sdl/configure.in sdl-redox/configure.in ---- sdl/configure.in 2012-01-18 22:30:05.000000000 -0800 -+++ sdl-redox/configure.in 2016-07-27 18:17:26.683907466 -0700 +diff -rupN source/configure.in source_orbital/configure.in +--- source/configure.in 2012-01-19 07:30:05.000000000 +0100 ++++ source_orbital/configure.in 2018-02-21 09:33:42.970275299 +0100 @@ -1646,6 +1646,19 @@ AC_HELP_STRING([--enable-video-dummy], [ fi } - + +dnl Set up the Orbital video driver. +CheckOrbitalVideo() +{ @@ -54,9 +54,9 @@ diff -rupN sdl/configure.in sdl-redox/configure.in CheckDiskAudio CheckDummyAudio CheckDLOPEN -diff -rupN sdl/include/SDL_config.h.in sdl-redox/include/SDL_config.h.in ---- sdl/include/SDL_config.h.in 2012-01-18 23:30:05.000000000 -0700 -+++ sdl-redox/include/SDL_config.h.in 2017-11-21 19:24:52.460053442 -0700 +diff -rupN source/include/SDL_config.h.in source_orbital/include/SDL_config.h.in +--- source/include/SDL_config.h.in 2012-01-19 07:30:05.000000000 +0100 ++++ source_orbital/include/SDL_config.h.in 2018-02-21 09:33:43.110276438 +0100 @@ -268,6 +268,7 @@ #undef SDL_VIDEO_DRIVER_GGI #undef SDL_VIDEO_DRIVER_IPOD @@ -65,10 +65,10 @@ diff -rupN sdl/include/SDL_config.h.in sdl-redox/include/SDL_config.h.in #undef SDL_VIDEO_DRIVER_OS2FS #undef SDL_VIDEO_DRIVER_PHOTON #undef SDL_VIDEO_DRIVER_PICOGUI -diff -rupN sdl/src/video/orbital/SDL_orbitalevents.c sdl-redox/src/video/orbital/SDL_orbitalevents.c ---- sdl/src/video/orbital/SDL_orbitalevents.c 1969-12-31 17:00:00.000000000 -0700 -+++ sdl-redox/src/video/orbital/SDL_orbitalevents.c 2017-11-21 19:24:52.460053442 -0700 -@@ -0,0 +1,159 @@ +diff -rupN source/src/video/orbital/SDL_orbitalevents.c source_orbital/src/video/orbital/SDL_orbitalevents.c +--- source/src/video/orbital/SDL_orbitalevents.c 1970-01-01 01:00:00.000000000 +0100 ++++ source_orbital/src/video/orbital/SDL_orbitalevents.c 2018-02-21 10:35:32.798443506 +0100 +@@ -0,0 +1,173 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -105,15 +105,20 @@ diff -rupN sdl/src/video/orbital/SDL_orbitalevents.c sdl-redox/src/video/orbital +static SDLKey keymap[128]; + +#define EVENT_NONE 0 -+#define EVENT_MOUSE 1 -+#define EVENT_KEY 2 -+#define EVENT_QUIT 3 ++#define EVENT_KEY 1 ++#define EVENT_MOUSE 2 ++#define EVENT_BUTTON 3 ++#define EVENT_SCROLL 4 ++#define EVENT_QUIT 5 ++#define EVENT_FOCUS 6 ++#define EVENT_MOVE 7 ++#define EVENT_RESIZE 8 ++#define EVENT_SCREEN 9 + +struct Event { + int64_t code; + int64_t a; + int64_t b; -+ int64_t c; +} __attribute__((packed)); + +void ORBITAL_PumpEvents(_THIS) @@ -122,18 +127,27 @@ diff -rupN sdl/src/video/orbital/SDL_orbitalevents.c sdl-redox/src/video/orbital + while(read(this->hidden->fd, &event, sizeof(event)) > 0){ + if ( event.code == EVENT_KEY ) { + SDL_keysym keysym; -+ keysym.unicode = event.a; -+ keysym.scancode = event.b; -+ keysym.sym = keymap[event.b]; ++ ++ // TODO: Find out why NetSurf recieves NULL chars when the Unicode field is used ++ //keysym.unicode = event.a; ++ keysym.scancode = event.b & 0xFF; ++ keysym.sym = keymap[event.b & 0xFF]; + keysym.mod = KMOD_NONE; -+ if ( event.c > 0 ) { ++ if ( (event.b >> 8) & 0x01 > 0 ) { + SDL_PrivateKeyboard(SDL_PRESSED, &keysym); + } else { + SDL_PrivateKeyboard(SDL_RELEASED, &keysym); + } + } else if( event.code == EVENT_MOUSE ) { -+ SDL_PrivateMouseMotion(event.c, 0, event.a, event.b); ++ SDL_PrivateMouseMotion(0, 0, event.a, event.b); + //SDL_PrivateMouseButton(Uint8 state, Uint8 button, Sint16 x, Sint16 y); ++ } else if( event.code == EVENT_BUTTON ) { ++ // TODO: Only emit events when the button state changed ++ if ( event.a & 0x01 > 0 ) { ++ SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_LEFT, 0, 0); ++ } else { ++ SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_LEFT, 0, 0); ++ } + } else if ( event.code == EVENT_QUIT ) { + SDL_PrivateQuit(); + } @@ -228,9 +242,9 @@ diff -rupN sdl/src/video/orbital/SDL_orbitalevents.c sdl-redox/src/video/orbital +} + +/* end of SDL_orbitalevents.c ... */ -diff -rupN sdl/src/video/orbital/SDL_orbitalevents_c.h sdl-redox/src/video/orbital/SDL_orbitalevents_c.h ---- sdl/src/video/orbital/SDL_orbitalevents_c.h 1969-12-31 17:00:00.000000000 -0700 -+++ sdl-redox/src/video/orbital/SDL_orbitalevents_c.h 2017-11-21 19:24:52.460053442 -0700 +diff -rupN source/src/video/orbital/SDL_orbitalevents_c.h source_orbital/src/video/orbital/SDL_orbitalevents_c.h +--- source/src/video/orbital/SDL_orbitalevents_c.h 1970-01-01 01:00:00.000000000 +0100 ++++ source_orbital/src/video/orbital/SDL_orbitalevents_c.h 2018-02-21 09:33:43.238277480 +0100 @@ -0,0 +1,32 @@ +/* + SDL - Simple DirectMedia Layer @@ -264,9 +278,9 @@ diff -rupN sdl/src/video/orbital/SDL_orbitalevents_c.h sdl-redox/src/video/orbit +extern void ORBITAL_PumpEvents(_THIS); + +/* end of SDL_orbitalevents_c.h ... */ -diff -rupN sdl/src/video/orbital/SDL_orbitalmouse.c sdl-redox/src/video/orbital/SDL_orbitalmouse.c ---- sdl/src/video/orbital/SDL_orbitalmouse.c 1969-12-31 17:00:00.000000000 -0700 -+++ sdl-redox/src/video/orbital/SDL_orbitalmouse.c 2017-11-21 19:24:52.460053442 -0700 +diff -rupN source/src/video/orbital/SDL_orbitalmouse.c source_orbital/src/video/orbital/SDL_orbitalmouse.c +--- source/src/video/orbital/SDL_orbitalmouse.c 1970-01-01 01:00:00.000000000 +0100 ++++ source_orbital/src/video/orbital/SDL_orbitalmouse.c 2018-02-21 09:33:43.238277480 +0100 @@ -0,0 +1,33 @@ +/* + SDL - Simple DirectMedia Layer @@ -301,9 +315,9 @@ diff -rupN sdl/src/video/orbital/SDL_orbitalmouse.c sdl-redox/src/video/orbital/ +struct WMcursor { + int unused; +}; -diff -rupN sdl/src/video/orbital/SDL_orbitalmouse_c.h sdl-redox/src/video/orbital/SDL_orbitalmouse_c.h ---- sdl/src/video/orbital/SDL_orbitalmouse_c.h 1969-12-31 17:00:00.000000000 -0700 -+++ sdl-redox/src/video/orbital/SDL_orbitalmouse_c.h 2017-11-21 19:24:52.460053442 -0700 +diff -rupN source/src/video/orbital/SDL_orbitalmouse_c.h source_orbital/src/video/orbital/SDL_orbitalmouse_c.h +--- source/src/video/orbital/SDL_orbitalmouse_c.h 1970-01-01 01:00:00.000000000 +0100 ++++ source_orbital/src/video/orbital/SDL_orbitalmouse_c.h 2018-02-21 09:33:43.238277480 +0100 @@ -0,0 +1,26 @@ +/* + SDL - Simple DirectMedia Layer @@ -331,9 +345,9 @@ diff -rupN sdl/src/video/orbital/SDL_orbitalmouse_c.h sdl-redox/src/video/orbita +#include "SDL_orbitalvideo.h" + +/* Functions to be exported */ -diff -rupN sdl/src/video/orbital/SDL_orbitalscancode.h sdl-redox/src/video/orbital/SDL_orbitalscancode.h ---- sdl/src/video/orbital/SDL_orbitalscancode.h 1969-12-31 17:00:00.000000000 -0700 -+++ sdl-redox/src/video/orbital/SDL_orbitalscancode.h 2017-11-21 19:24:52.460053442 -0700 +diff -rupN source/src/video/orbital/SDL_orbitalscancode.h source_orbital/src/video/orbital/SDL_orbitalscancode.h +--- source/src/video/orbital/SDL_orbitalscancode.h 1970-01-01 01:00:00.000000000 +0100 ++++ source_orbital/src/video/orbital/SDL_orbitalscancode.h 2018-02-21 09:33:43.238277480 +0100 @@ -0,0 +1,80 @@ +#define SCANCODE_A 0x1E +#define SCANCODE_B 0x30 @@ -415,9 +429,9 @@ diff -rupN sdl/src/video/orbital/SDL_orbitalscancode.h sdl-redox/src/video/orbit +#define SCANCODE_COMMA 0x33 +#define SCANCODE_PERIOD 0x34 +#define SCANCODE_SLASH 0x35 -diff -rupN sdl/src/video/orbital/SDL_orbitalvideo.c sdl-redox/src/video/orbital/SDL_orbitalvideo.c ---- sdl/src/video/orbital/SDL_orbitalvideo.c 1969-12-31 17:00:00.000000000 -0700 -+++ sdl-redox/src/video/orbital/SDL_orbitalvideo.c 2017-11-21 19:34:44.269053445 -0700 +diff -rupN source/src/video/orbital/SDL_orbitalvideo.c source_orbital/src/video/orbital/SDL_orbitalvideo.c +--- source/src/video/orbital/SDL_orbitalvideo.c 1970-01-01 01:00:00.000000000 +0100 ++++ source_orbital/src/video/orbital/SDL_orbitalvideo.c 2018-02-21 09:33:43.266277708 +0100 @@ -0,0 +1,266 @@ +/* + SDL - Simple DirectMedia Layer @@ -685,9 +699,9 @@ diff -rupN sdl/src/video/orbital/SDL_orbitalvideo.c sdl-redox/src/video/orbital/ + this->screen->pixels = NULL; + } +} -diff -rupN sdl/src/video/orbital/SDL_orbitalvideo.h sdl-redox/src/video/orbital/SDL_orbitalvideo.h ---- sdl/src/video/orbital/SDL_orbitalvideo.h 1969-12-31 17:00:00.000000000 -0700 -+++ sdl-redox/src/video/orbital/SDL_orbitalvideo.h 2017-11-21 19:24:52.460053442 -0700 +diff -rupN source/src/video/orbital/SDL_orbitalvideo.h source_orbital/src/video/orbital/SDL_orbitalvideo.h +--- source/src/video/orbital/SDL_orbitalvideo.h 1970-01-01 01:00:00.000000000 +0100 ++++ source_orbital/src/video/orbital/SDL_orbitalvideo.h 2018-02-21 09:33:43.266277708 +0100 @@ -0,0 +1,41 @@ +/* + SDL - Simple DirectMedia Layer @@ -730,9 +744,79 @@ diff -rupN sdl/src/video/orbital/SDL_orbitalvideo.h sdl-redox/src/video/orbital/ +}; + +#endif /* _SDL_orbitalvideo_h */ -diff -rupN sdl/src/video/SDL_sysvideo.h sdl-redox/src/video/SDL_sysvideo.h ---- sdl/src/video/SDL_sysvideo.h 2012-01-18 23:30:06.000000000 -0700 -+++ sdl-redox/src/video/SDL_sysvideo.h 2017-11-21 19:24:52.460053442 -0700 +diff -rupN source/src/video/SDL_gamma.c source_orbital/src/video/SDL_gamma.c +--- source/src/video/SDL_gamma.c 2012-01-19 07:30:06.000000000 +0100 ++++ source_orbital/src/video/SDL_gamma.c 2018-02-20 20:51:31.151824659 +0100 +@@ -23,9 +23,9 @@ + + /* Gamma correction support */ + +-#ifdef HAVE_MATH_H +-#include /* Used for calculating gamma ramps */ +-#else ++//#ifdef HAVE_MATH_H ++//#include /* Used for calculating gamma ramps */ ++//#else + /* Math routines from uClibc: http://www.uclibc.org */ + #include "math_private.h" + #include "e_sqrt.h" +@@ -33,7 +33,7 @@ + #include "e_log.h" + #define pow(x, y) __ieee754_pow(x, y) + #define log(x) __ieee754_log(x) +-#endif ++//#endif + + #include "SDL_sysvideo.h" + +@@ -94,7 +94,7 @@ int SDL_SetGamma(float red, float green, + { + int succeeded; + SDL_VideoDevice *video = current_video; +- SDL_VideoDevice *this = current_video; ++ SDL_VideoDevice *this = current_video; + + succeeded = -1; + /* Prefer using SetGammaRamp(), as it's more flexible */ +@@ -120,7 +120,7 @@ int SDL_GetGamma(float *red, float *gree + { + int succeeded; + SDL_VideoDevice *video = current_video; +- SDL_VideoDevice *this = current_video; ++ SDL_VideoDevice *this = current_video; + + succeeded = -1; + /* Prefer using GetGammaRamp(), as it's more flexible */ +@@ -145,7 +145,7 @@ int SDL_SetGammaRamp(const Uint16 *red, + { + int succeeded; + SDL_VideoDevice *video = current_video; +- SDL_VideoDevice *this = current_video; ++ SDL_VideoDevice *this = current_video; + SDL_Surface *screen = SDL_PublicSurface; + + /* Verify the screen parameter */ +@@ -177,7 +177,7 @@ int SDL_SetGammaRamp(const Uint16 *red, + /* If physical palette has been set independently, use it */ + if(video->physpal) + pal = video->physpal; +- ++ + SDL_SetPalette(screen, SDL_PHYSPAL, + pal->colors, 0, pal->ncolors); + return 0; +@@ -196,7 +196,7 @@ int SDL_SetGammaRamp(const Uint16 *red, + int SDL_GetGammaRamp(Uint16 *red, Uint16 *green, Uint16 *blue) + { + SDL_VideoDevice *video = current_video; +- SDL_VideoDevice *this = current_video; ++ SDL_VideoDevice *this = current_video; + + /* Lazily allocate the gamma table */ + if ( ! video->gamma ) { +diff -rupN source/src/video/SDL_sysvideo.h source_orbital/src/video/SDL_sysvideo.h +--- source/src/video/SDL_sysvideo.h 2012-01-19 07:30:06.000000000 +0100 ++++ source_orbital/src/video/SDL_sysvideo.h 2018-02-21 09:33:43.266277708 +0100 @@ -410,6 +410,9 @@ extern VideoBootStrap AALIB_bootstrap; #if SDL_VIDEO_DRIVER_CACA extern VideoBootStrap CACA_bootstrap; @@ -743,9 +827,9 @@ diff -rupN sdl/src/video/SDL_sysvideo.h sdl-redox/src/video/SDL_sysvideo.h #if SDL_VIDEO_DRIVER_DUMMY extern VideoBootStrap DUMMY_bootstrap; #endif -diff -rupN sdl/src/video/SDL_video.c sdl-redox/src/video/SDL_video.c ---- sdl/src/video/SDL_video.c 2012-01-18 23:30:06.000000000 -0700 -+++ sdl-redox/src/video/SDL_video.c 2017-11-21 19:24:52.460053442 -0700 +diff -rupN source/src/video/SDL_video.c source_orbital/src/video/SDL_video.c +--- source/src/video/SDL_video.c 2012-01-19 07:30:06.000000000 +0100 ++++ source_orbital/src/video/SDL_video.c 2018-02-21 09:33:43.350278392 +0100 @@ -126,6 +126,9 @@ static VideoBootStrap *bootstrap[] = { #if SDL_VIDEO_DRIVER_CACA &CACA_bootstrap, From 7e293541c11486da7fa0c4adf3a7f0af438c2f79 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Wed, 21 Feb 2018 18:53:45 +0100 Subject: [PATCH 0331/3180] Add netsurf recipe, enable iconv in newlib --- recipes/netsurf/01_redox.patch | 588 +++++++++++++++++++++++++++++++++ recipes/netsurf/recipe.sh | 42 +++ recipes/newlib/recipe.sh | 2 +- 3 files changed, 631 insertions(+), 1 deletion(-) create mode 100644 recipes/netsurf/01_redox.patch create mode 100644 recipes/netsurf/recipe.sh diff --git a/recipes/netsurf/01_redox.patch b/recipes/netsurf/01_redox.patch new file mode 100644 index 00000000..cef73c74 --- /dev/null +++ b/recipes/netsurf/01_redox.patch @@ -0,0 +1,588 @@ +diff -rupN source/libnsfb/Makefile source_redox/libnsfb/Makefile +--- source/libnsfb/Makefile 2017-10-16 12:09:35.000000000 +0200 ++++ source_redox/libnsfb/Makefile 2018-02-20 15:51:58.000000000 +0100 +@@ -46,9 +46,9 @@ NSFB_XCB_PKG_NAMES := xcb xcb-icccm xcb- + $(eval $(call pkg_config_package_available,NSFB_VNC_AVAILABLE,libvncserver)) + $(eval $(call pkg_config_package_available,NSFB_SDL_AVAILABLE,sdl)) + $(eval $(call pkg_config_package_available,NSFB_XCB_AVAILABLE,$(NSFB_XCB_PKG_NAMES))) +-$(eval $(call pkg_config_package_available,NSFB_WLD_AVAILABLE,wayland-client)) ++#$(eval $(call pkg_config_package_available,NSFB_WLD_AVAILABLE,wayland-client)) + +-# surfaces not detectable via pkg-config ++# surfaces not detectable via pkg-config + NSFB_ABLE_AVAILABLE := no + ifeq ($(findstring linux,$(HOST)),linux) + NSFB_LINUX_AVAILABLE := yes +@@ -62,7 +62,7 @@ ifeq ($(NSFB_SDL_AVAILABLE),yes) + $(eval $(call pkg_config_package_add_flags,sdl,TESTCFLAGS,TESTLDFLAGS)) + + REQUIRED_PKGS := $(REQUIRED_PKGS) sdl +-endif ++endif + + ifeq ($(NSFB_XCB_AVAILABLE),yes) + # Size hint allocators were removed in xcb-icccm 0.3.0 +@@ -107,14 +107,14 @@ ifeq ($(NSFB_VNC_AVAILABLE),yes) + $(eval $(call pkg_config_package_add_flags,libvncserver,TESTCFLAGS,TESTLDFLAGS)) + + REQUIRED_PKGS := $(REQUIRED_PKGS) libvncserver +-endif +- +-ifeq ($(NSFB_WLD_AVAILABLE),yes) +- $(eval $(call pkg_config_package_add_flags,wayland-client,CFLAGS)) +- $(eval $(call pkg_config_package_add_flags,wayland-client,TESTCFLAGS,TESTLDFLAGS)) ++endif + +- REQUIRED_PKGS := $(REQUIRED_PKGS) wayland-client +-endif ++#ifeq ($(NSFB_WLD_AVAILABLE),yes) ++# $(eval $(call pkg_config_package_add_flags,wayland-client,CFLAGS)) ++# $(eval $(call pkg_config_package_add_flags,wayland-client,TESTCFLAGS,TESTLDFLAGS)) ++# ++# REQUIRED_PKGS := $(REQUIRED_PKGS) wayland-client ++#endif + + TESTLDFLAGS := -lm -Wl,--whole-archive -l$(COMPONENT) -Wl,--no-whole-archive $(TESTLDFLAGS) + +diff -rupN source/libnsfb/src/plot/32bpp-xbgr8888.c source_redox/libnsfb/src/plot/32bpp-xbgr8888.c +--- source/libnsfb/src/plot/32bpp-xbgr8888.c 2017-10-16 12:09:35.000000000 +0200 ++++ source_redox/libnsfb/src/plot/32bpp-xbgr8888.c 2018-02-20 21:17:57.000000000 +0100 +@@ -52,7 +52,7 @@ static inline nsfb_colour_t pixel_to_col + */ + static inline uint32_t colour_to_pixel(UNUSED nsfb_t *nsfb, nsfb_colour_t c) + { +- return ((c & 0xFF) << 24) | ((c & 0xFF00) << 8) | ((c & 0xFF0000) >> 8); ++ return ((c & 0xFF) << 24) | ((c & 0xFF00) << 8) | ((c & 0xFF0000) >> 8) | 0xFF; + } + + #else +@@ -79,7 +79,7 @@ static inline nsfb_colour_t pixel_to_col + */ + static inline uint32_t colour_to_pixel(UNUSED nsfb_t *nsfb, nsfb_colour_t c) + { +- return c; ++ return c | 0xFF000000; + } + + #endif +diff -rupN source/libnsfb/src/plot/32bpp-xrgb8888.c source_redox/libnsfb/src/plot/32bpp-xrgb8888.c +--- source/libnsfb/src/plot/32bpp-xrgb8888.c 2017-10-16 12:09:35.000000000 +0200 ++++ source_redox/libnsfb/src/plot/32bpp-xrgb8888.c 2018-02-20 21:15:40.000000000 +0100 +@@ -52,7 +52,7 @@ static inline nsfb_colour_t pixel_to_col + */ + static inline uint32_t colour_to_pixel(UNUSED nsfb_t *nsfb, nsfb_colour_t c) + { +- return (c << 8); ++ return (c << 8) | 0xff; + } + + #else +@@ -81,7 +81,7 @@ static inline nsfb_colour_t pixel_to_col + */ + static inline uint32_t colour_to_pixel(UNUSED nsfb_t *nsfb, nsfb_colour_t c) + { +- return ((c & 0xff0000) >> 16) | (c & 0xff00) | ((c & 0xff) << 16); ++ return 0xff000000 | ((c & 0xff0000) >> 16) | (c & 0xff00) | ((c & 0xff) << 16); + } + + #endif +diff -rupN source/libnsfb/src/plot.h source_redox/libnsfb/src/plot.h +--- source/libnsfb/src/plot.h 2017-10-16 12:09:35.000000000 +0200 ++++ source_redox/libnsfb/src/plot.h 2018-02-20 15:46:48.000000000 +0100 +@@ -36,7 +36,7 @@ + #define NSFB_BE_BYTE_ORDER + #endif + #else +- #include ++ #include + #if defined(__BYTE_ORDER__) + #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ + #define NSFB_BE_BYTE_ORDER +@@ -120,7 +120,7 @@ typedef bool (nsfb_plotfn_bitmap_t)(nsfb + typedef bool (nsfb_plotfn_bitmap_tiles_t)(nsfb_t *nsfb, const nsfb_bbox_t *loc, int tiles_x, int tiles_y, const nsfb_colour_t *pixel, int bmp_width, int bmp_height, int bmp_stride, bool alpha); + + +-/** Copy an area of screen ++/** Copy an area of screen + * + * Copy an area of the display. + */ +diff -rupN source/libnsfb/src/surface/sdl.c source_redox/libnsfb/src/surface/sdl.c +--- source/libnsfb/src/surface/sdl.c 2017-10-16 12:09:35.000000000 +0200 ++++ source_redox/libnsfb/src/surface/sdl.c 2018-02-20 20:59:42.000000000 +0100 +@@ -371,7 +371,7 @@ set_palette(nsfb_t *nsfb) + + } + +-static bool ++static bool + sdlcopy(nsfb_t *nsfb, nsfb_bbox_t *srcbox, nsfb_bbox_t *dstbox) + { + SDL_Rect src; +@@ -393,15 +393,15 @@ sdlcopy(nsfb_t *nsfb, nsfb_bbox_t *srcbo + src.y = srcbox->y0; + src.w = srcbox->x1 - srcbox->x0; + src.h = srcbox->y1 - srcbox->y0; +- ++ + dst.x = dstbox->x0; + dst.y = dstbox->y0; + dst.w = dstbox->x1 - dstbox->x0; + dst.h = dstbox->y1 - dstbox->y0; +- ++ + SDL_BlitSurface(sdl_screen, &src, sdl_screen , &dst); + +- if ((cursor != NULL) && ++ if ((cursor != NULL) && + (cursor->plotted == false)) { + nsfb_cursor_plot(nsfb, cursor); + } +@@ -458,7 +458,7 @@ static int sdl_initialise(nsfb_t *nsfb) + return -1; + + /* initialise SDL library */ +- if (SDL_Init(SDL_INIT_TIMER | SDL_INIT_VIDEO) < 0 ) { ++ if (SDL_Init(/*SDL_INIT_TIMER | */SDL_INIT_VIDEO) < 0 ) { + fprintf(stderr, "Unable to init SDL: %s\n", SDL_GetError()); + return -1; + } +@@ -532,7 +532,7 @@ static uint32_t wakeeventtimer(uint32_t + event.user.code = 0; + event.user.data1 = 0; + event.user.data2 = 0; +- ++ + SDL_PushEvent(&event); + + return 0; +@@ -545,23 +545,23 @@ static bool sdl_input(nsfb_t *nsfb, nsfb + + nsfb = nsfb; /* unused */ + +- if (timeout == 0) { ++ //if (timeout == 0) { + got_event = SDL_PollEvent(&sdlevent); +- } else { +- if (timeout > 0) { +- /* setup wake timer to ensure the wait event below exits no later +- * than when the timeout has occoured. +- */ +- SDL_TimerID tid; +- tid = SDL_AddTimer(timeout, wakeeventtimer, NULL); +- got_event = SDL_WaitEvent(&sdlevent); +- if ((got_event == 0) || (sdlevent.type != SDL_USEREVENT)) { +- SDL_RemoveTimer(tid); +- } +- } else { +- got_event = SDL_WaitEvent(&sdlevent); +- } +- } ++ //} else { ++ // if (timeout > 0) { ++ // /* setup wake timer to ensure the wait event below exits no later ++ // * than when the timeout has occoured. ++ // */ ++ // SDL_TimerID tid; ++ // tid = SDL_AddTimer(timeout, wakeeventtimer, NULL); ++ // got_event = SDL_WaitEvent(&sdlevent); ++ // if ((got_event == 0) || (sdlevent.type != SDL_USEREVENT)) { ++ // SDL_RemoveTimer(tid); ++ // } ++ // } else { ++ // got_event = SDL_WaitEvent(&sdlevent); ++ // } ++ //} + + /* Do nothing if there was no event */ + if (got_event == 0) { +diff -rupN source/libparserutils/src/input/filter.c source_redox/libparserutils/src/input/filter.c +--- source/libparserutils/src/input/filter.c 2017-10-16 12:09:36.000000000 +0200 ++++ source_redox/libparserutils/src/input/filter.c 2018-02-21 16:50:43.449092236 +0100 +@@ -10,7 +10,7 @@ + #include + #include + +-#ifndef WITHOUT_ICONV_FILTER ++#if 0 + #include + #endif + +@@ -22,7 +22,7 @@ + + /** Input filter */ + struct parserutils_filter { +-#ifndef WITHOUT_ICONV_FILTER ++#if 0 + iconv_t cd; /**< Iconv conversion descriptor */ + uint16_t int_enc; /**< The internal encoding */ + #else +@@ -68,7 +68,7 @@ parserutils_error parserutils__filter_cr + if (f == NULL) + return PARSERUTILS_NOMEM; + +-#ifndef WITHOUT_ICONV_FILTER ++#if 0 + f->cd = (iconv_t) -1; + f->int_enc = parserutils_charset_mibenum_from_name( + int_enc, strlen(int_enc)); +@@ -88,7 +88,7 @@ parserutils_error parserutils__filter_cr + return error; + } + +-#ifdef WITHOUT_ICONV_FILTER ++#if 1 + error = parserutils_charset_codec_create(int_enc, &f->write_codec); + if (error != PARSERUTILS_OK) { + if (f->read_codec != NULL) { +@@ -116,7 +116,7 @@ parserutils_error parserutils__filter_de + if (input == NULL) + return PARSERUTILS_BADPARM; + +-#ifndef WITHOUT_ICONV_FILTER ++#if 0 + if (input->cd != (iconv_t) -1) { + iconv_close(input->cd); + input->cd = (iconv_t) -1; +@@ -184,8 +184,8 @@ parserutils_error parserutils__filter_pr + output == NULL || *output == NULL || outlen == NULL) + return PARSERUTILS_BADPARM; + +-#ifndef WITHOUT_ICONV_FILTER +- if (iconv(input->cd, (void *) data, len, ++#if 0 ++ if (iconv(input->cd, (void *) data, len, + (char **) output, outlen) == (size_t) -1) { + switch (errno) { + case E2BIG: +@@ -206,8 +206,8 @@ parserutils_error parserutils__filter_pr + + while (*len > 0) { + size_t ret; +- +- ret = iconv(input->cd, (void *) data, len, ++ ++ ret = iconv(input->cd, (void *) data, len, + (char **) output, outlen); + if (ret != (size_t) -1 || errno != EILSEQ) + break; +@@ -226,7 +226,7 @@ parserutils_error parserutils__filter_pr + (*len)--; + } + +- return errno == E2BIG ? PARSERUTILS_NOMEM ++ return errno == E2BIG ? PARSERUTILS_NOMEM + : PARSERUTILS_OK; + } + } +@@ -283,7 +283,7 @@ parserutils_error parserutils__filter_pr + } + } + +- if (read_error != PARSERUTILS_OK && ++ if (read_error != PARSERUTILS_OK && + read_error != PARSERUTILS_NOMEM) + return read_error; + } +@@ -305,7 +305,7 @@ parserutils_error parserutils__filter_re + if (input == NULL) + return PARSERUTILS_BADPARM; + +-#ifndef WITHOUT_ICONV_FILTER ++#if 0 + iconv(input->cd, NULL, 0, NULL, 0); + #else + /* Clear pivot buffer leftovers */ +@@ -340,7 +340,7 @@ parserutils_error filter_set_defaults(pa + if (input == NULL) + return PARSERUTILS_BADPARM; + +-#ifdef WITHOUT_ICONV_FILTER ++#if 1 + input->read_codec = NULL; + input->write_codec = NULL; + #endif +@@ -377,7 +377,7 @@ parserutils_error filter_set_encoding(pa + if (input->settings.encoding == mibenum) + return PARSERUTILS_OK; + +-#ifndef WITHOUT_ICONV_FILTER ++#if 0 + if (input->cd != (iconv_t) -1) { + iconv_close(input->cd); + input->cd = (iconv_t) -1; +diff -rupN source/netsurf/content/fetchers/file.c source_redox/netsurf/content/fetchers/file.c +--- source/netsurf/content/fetchers/file.c 2017-10-16 12:09:36.000000000 +0200 ++++ source_redox/netsurf/content/fetchers/file.c 2018-02-20 16:09:13.000000000 +0100 +@@ -39,7 +39,7 @@ + #include + #include + #include +-#ifdef HAVE_MMAP ++#if 0 + #include + #endif + #include +@@ -156,7 +156,7 @@ fetch_file_setup(struct fetch *fetchh, + + /* Scan request headers looking for If-None-Match */ + for (i = 0; headers[i] != NULL; i++) { +- if (strncasecmp(headers[i], "If-None-Match:", ++ if (strncasecmp(headers[i], "If-None-Match:", + SLEN("If-None-Match:")) == 0) { + /* If-None-Match: "12345678" */ + const char *d = headers[i] + SLEN("If-None-Match:"); +@@ -262,7 +262,7 @@ fetch_file_process_error_aborted: + static void fetch_file_process_plain(struct fetch_file_context *ctx, + struct stat *fdstat) + { +-#ifdef HAVE_MMAP ++#if 0 + fetch_msg msg; + char *buf = NULL; + size_t buf_size; +@@ -309,7 +309,7 @@ static void fetch_file_process_plain(str + */ + + /* content type */ +- if (fetch_file_send_header(ctx, "Content-Type: %s", ++ if (fetch_file_send_header(ctx, "Content-Type: %s", + guit->fetch->filetype(ctx->path))) { + goto fetch_file_process_aborted; + } +@@ -392,7 +392,7 @@ fetch_file_process_aborted: + */ + + /* content type */ +- if (fetch_file_send_header(ctx, "Content-Type: %s", ++ if (fetch_file_send_header(ctx, "Content-Type: %s", + guit->fetch->filetype(ctx->path))) { + goto fetch_file_process_aborted; + } +@@ -404,7 +404,7 @@ fetch_file_process_aborted: + } + + /* create etag */ +- if (fetch_file_send_header(ctx, "ETag: \"%10" PRId64 "\"", ++ if (fetch_file_send_header(ctx, "ETag: \"%10" PRId64 "\"", + (int64_t) fdstat->st_mtime)) { + goto fetch_file_process_aborted; + } +diff -rupN source/netsurf/content/handlers/image/image.c source_redox/netsurf/content/handlers/image/image.c +--- source/netsurf/content/handlers/image/image.c 2017-10-16 12:09:36.000000000 +0200 ++++ source_redox/netsurf/content/handlers/image/image.c 2018-02-20 17:44:48.000000000 +0100 +@@ -31,10 +31,10 @@ + #include "image/gif.h" + #include "image/ico.h" + #include "image/jpeg.h" +-#include "image/nssprite.h" ++//#include "image/nssprite.h" + #include "image/png.h" + #include "image/rsvg.h" +-#include "image/svg.h" ++//#include "image/svg.h" + #include "image/image.h" + + /** +@@ -76,18 +76,18 @@ nserror image_init(void) + return error; + #endif + +-#ifdef WITH_NSSPRITE +- error = nssprite_init(); +- if (error != NSERROR_OK) +- return error; +-#endif ++//#ifdef WITH_NSSPRITE ++// error = nssprite_init(); ++// if (error != NSERROR_OK) ++// return error; ++//#endif + + /* Prefer rsvg over libsvgtiny for svgs */ +-#ifdef WITH_NS_SVG +- error = svg_init(); +- if (error != NSERROR_OK) +- return error; +-#endif ++//#ifdef WITH_NS_SVG ++// error = svg_init(); ++// if (error != NSERROR_OK) ++// return error; ++//#endif + #ifdef WITH_RSVG + error = nsrsvg_init(); + if (error != NSERROR_OK) +diff -rupN source/netsurf/content/handlers/image/Makefile source_redox/netsurf/content/handlers/image/Makefile +--- source/netsurf/content/handlers/image/Makefile 2017-10-16 12:09:36.000000000 +0200 ++++ source_redox/netsurf/content/handlers/image/Makefile 2018-02-20 16:13:56.000000000 +0100 +@@ -5,11 +5,11 @@ S_IMAGE_YES := image.c image_cache.c + S_IMAGE_NO := + S_IMAGE_$(NETSURF_USE_BMP) += bmp.c ico.c + S_IMAGE_$(NETSURF_USE_GIF) += gif.c +-S_IMAGE_$(NETSURF_USE_JPEG) += jpeg.c +-S_IMAGE_$(NETSURF_USE_ROSPRITE) += nssprite.c +-S_IMAGE_$(NETSURF_USE_PNG) += png.c +-S_IMAGE_$(NETSURF_USE_NSSVG) += svg.c +-S_IMAGE_$(NETSURF_USE_RSVG) += rsvg.c +-S_IMAGE_$(NETSURF_USE_VIDEO) += video.c ++#S_IMAGE_$(NETSURF_USE_JPEG) += jpeg.c ++#S_IMAGE_$(NETSURF_USE_ROSPRITE) += nssprite.c ++#S_IMAGE_$(NETSURF_USE_PNG) += png.c ++#S_IMAGE_$(NETSURF_USE_NSSVG) += svg.c ++#S_IMAGE_$(NETSURF_USE_RSVG) += rsvg.c ++#S_IMAGE_$(NETSURF_USE_VIDEO) += video.c + + S_IMAGE := $(S_IMAGE_YES) +diff -rupN source/netsurf/content/handlers/javascript/Makefile source_redox/netsurf/content/handlers/javascript/Makefile +--- source/netsurf/content/handlers/javascript/Makefile 2017-10-16 12:09:36.000000000 +0200 ++++ source_redox/netsurf/content/handlers/javascript/Makefile 2018-02-20 16:38:31.000000000 +0100 +@@ -6,13 +6,13 @@ + + S_JAVASCRIPT_BINDING:= + +-ifeq ($(NETSURF_USE_DUKTAPE),YES) ++#ifeq ($(NETSURF_USE_DUKTAPE),YES) + # Duktape +-include content/handlers/javascript/duktape/Makefile +-else ++#include content/handlers/javascript/duktape/Makefile ++#else + # None + include content/handlers/javascript/none/Makefile +-endif ++#endif + + # Fetcher for javascript scheme is always required + S_JAVASCRIPT += fetcher.c +diff -rupN source/netsurf/content/urldb.c source_redox/netsurf/content/urldb.c +--- source/netsurf/content/urldb.c 2017-10-16 12:09:36.000000000 +0200 ++++ source_redox/netsurf/content/urldb.c 2018-02-20 16:42:25.000000000 +0100 +@@ -630,7 +630,7 @@ static bool urldb__host_is_ip_address(co + size_t host_len = strlen(host); + const char *sane_host; + const char *slash; +-#ifndef NO_IPV6 ++#if 0 + struct in6_addr ipv6; + char ipv6_addr[64]; + unsigned int ipv6_addr_len; +@@ -688,7 +688,7 @@ static bool urldb__host_is_ip_address(co + goto out_false; + } + +-#ifndef NO_IPV6 ++#if 0 + if ((host_len < 6) || + (sane_host[0] != '[') || + (sane_host[host_len - 1] != ']')) { +diff -rupN source/netsurf/Makefile source_redox/netsurf/Makefile +--- source/netsurf/Makefile 2017-10-16 12:09:36.000000000 +0200 ++++ source_redox/netsurf/Makefile 2018-02-20 16:59:05.000000000 +0100 +@@ -268,7 +268,7 @@ else + ifeq ($(origin GCCSDK_INSTALL_ENV),undefined) + PKG_CONFIG := pkg-config + else +- PKG_CONFIG := PKG_CONFIG_LIBDIR="$(GCCSDK_INSTALL_ENV)/lib/pkgconfig" pkg-config ++ PKG_CONFIG := PKG_CONFIG_LIBDIR="$(GCCSDK_INSTALL_ENV)/lib/pkgconfig" pkg-config + endif + + ifneq ($(origin GCCSDK_INSTALL_CROSSBIN),undefined) +@@ -280,7 +280,7 @@ else + ifeq ($(origin GCCSDK_INSTALL_ENV),undefined) + PKG_CONFIG := pkg-config + else +- PKG_CONFIG := PKG_CONFIG_LIBDIR="$(GCCSDK_INSTALL_ENV)/lib/pkgconfig" pkg-config ++ PKG_CONFIG := PKG_CONFIG_LIBDIR="$(GCCSDK_INSTALL_ENV)/lib/pkgconfig" pkg-config + endif + + ifneq ($(origin GCCSDK_INSTALL_CROSSBIN),undefined) +@@ -511,8 +511,8 @@ include Makefile.defaults + # Pull in the user configuration + -include Makefile.config + +-# libraries enabled by feature switch without pkgconfig file +-$(eval $(call feature_switch,JPEG,JPEG (libjpeg),-DWITH_JPEG,-ljpeg,-UWITH_JPEG,)) ++# libraries enabled by feature switch without pkgconfig file ++#$(eval $(call feature_switch,JPEG,JPEG (libjpeg),-DWITH_JPEG,-ljpeg,-UWITH_JPEG,)) + $(eval $(call feature_switch,HARU_PDF,PDF export (haru),-DWITH_PDF_EXPORT,-lhpdf -lpng,-UWITH_PDF_EXPORT,)) + $(eval $(call feature_switch,LIBICONV_PLUG,glibc internal iconv,-DLIBICONV_PLUG,,-ULIBICONV_PLUG,-liconv)) + $(eval $(call feature_switch,DUKTAPE,Javascript (Duktape),,,,,)) +@@ -529,7 +529,7 @@ LDFLAGS += -lz + # Optional libraries with pkgconfig + + # define additional CFLAGS and LDFLAGS requirements for pkg-configed libs +-NETSURF_FEATURE_PNG_CFLAGS := -DWITH_PNG ++#NETSURF_FEATURE_PNG_CFLAGS := -DWITH_PNG + NETSURF_FEATURE_BMP_CFLAGS := -DWITH_BMP + NETSURF_FEATURE_GIF_CFLAGS := -DWITH_GIF + NETSURF_FEATURE_CURL_CFLAGS := -DWITH_CURL +@@ -552,7 +552,7 @@ else + endif + $(eval $(call pkg_config_find_and_add_enabled,OPENSSL,openssl,OpenSSL)) + +-$(eval $(call pkg_config_find_and_add_enabled,PNG,libpng,PNG)) ++#$(eval $(call pkg_config_find_and_add_enabled,PNG,libpng,PNG)) + $(eval $(call pkg_config_find_and_add_enabled,BMP,libnsbmp,BMP)) + $(eval $(call pkg_config_find_and_add_enabled,GIF,libnsgif,GIF)) + $(eval $(call pkg_config_find_and_add_enabled,NSSVG,libsvgtiny,SVG)) +diff -rupN source/netsurf/utils/log.c source_redox/netsurf/utils/log.c +--- source/netsurf/utils/log.c 2017-10-16 12:09:36.000000000 +0200 ++++ source_redox/netsurf/utils/log.c 2018-02-20 17:50:20.000000000 +0100 +@@ -261,18 +261,18 @@ nserror nslog_init(nslog_ensure_t *ensur + /* sucessfull logging initialisation so log system info */ + if (ret == NSERROR_OK) { + NSLOG(netsurf, INFO, "NetSurf version '%s'", netsurf_version); +- if (uname(&utsname) < 0) { ++ //if (uname(&utsname) < 0) { + NSLOG(netsurf, INFO, + "Failed to extract machine information"); +- } else { +- NSLOG(netsurf, INFO, +- "NetSurf on <%s>, node <%s>, release <%s>, version <%s>, machine <%s>", +- utsname.sysname, +- utsname.nodename, +- utsname.release, +- utsname.version, +- utsname.machine); +- } ++ //} else { ++ // NSLOG(netsurf, INFO, ++ // "NetSurf on <%s>, node <%s>, release <%s>, version <%s>, machine <%s>", ++ // utsname.sysname, ++ // utsname.nodename, ++ // utsname.release, ++ // utsname.version, ++ // utsname.machine); ++ //} + } + + return ret; +diff -rupN source/netsurf/utils/useragent.c source_redox/netsurf/utils/useragent.c +--- source/netsurf/utils/useragent.c 2017-10-16 12:09:36.000000000 +0200 ++++ source_redox/netsurf/utils/useragent.c 2018-02-20 17:50:51.000000000 +0100 +@@ -44,9 +44,9 @@ user_agent_build_string(void) + char *ua_string; + int len; + +- if (uname(&un) >= 0) { +- sysname = un.sysname; +- } ++ //if (uname(&un) >= 0) { ++ // sysname = un.sysname; ++ //} + + len = snprintf(NULL, 0, NETSURF_UA_FORMAT_STRING, + netsurf_version_major, +diff -rupN source/netsurf/utils/utsname.h source_redox/netsurf/utils/utsname.h +--- source/netsurf/utils/utsname.h 2017-10-16 12:09:36.000000000 +0200 ++++ source_redox/netsurf/utils/utsname.h 2018-02-20 16:46:22.000000000 +0100 +@@ -24,7 +24,7 @@ + #ifndef _NETSURF_UTILS_UTSNAME_H_ + #define _NETSURF_UTILS_UTSNAME_H_ + +-#ifdef HAVE_UTSNAME ++#if 0 + #include + #else + /** system information filled in by uname derived from posix spec. */ diff --git a/recipes/netsurf/recipe.sh b/recipes/netsurf/recipe.sh new file mode 100644 index 00000000..9586584f --- /dev/null +++ b/recipes/netsurf/recipe.sh @@ -0,0 +1,42 @@ +VERSION=3.7 +TAR=http://download.netsurf-browser.org/netsurf/releases/source-full/netsurf-all-$VERSION.tar.gz +BUILD_DEPENDS=(expat curl sdl openssl zlib newlib) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="${PWD}/../sysroot" + export AR="${HOST}-ar" + export CFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib" + export TARGET="framebuffer" + export PKG_CONFIG_PATH="$PWD/../sysroot/lib/pkgconfig" + + make NSFB_SDL_AVAILABLE=yes WITHOUT_ICONV_FILTER=yes + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} + diff --git a/recipes/newlib/recipe.sh b/recipes/newlib/recipe.sh index 58387f73..5cc668a8 100644 --- a/recipes/newlib/recipe.sh +++ b/recipes/newlib/recipe.sh @@ -24,7 +24,7 @@ function recipe_build { automake-1.11 --cygnus Makefile popd - CC= ./configure --target="${HOST}" --prefix=/ + CC= ./configure --target="${HOST}" --prefix=/ --enable-newlib-iconv make all skip=1 From d041a78cd46101079f4bb37611ba49cfcb2a49e1 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Thu, 22 Feb 2018 11:44:19 +0100 Subject: [PATCH 0332/3180] Attempt to fix build issues, revert newlib changes --- recipes/netsurf/01_redox.patch | 118 ++++++++++++++++----------------- recipes/netsurf/recipe.sh | 4 +- recipes/newlib/recipe.sh | 2 +- 3 files changed, 62 insertions(+), 62 deletions(-) diff --git a/recipes/netsurf/01_redox.patch b/recipes/netsurf/01_redox.patch index cef73c74..60136887 100644 --- a/recipes/netsurf/01_redox.patch +++ b/recipes/netsurf/01_redox.patch @@ -1,11 +1,16 @@ -diff -rupN source/libnsfb/Makefile source_redox/libnsfb/Makefile ---- source/libnsfb/Makefile 2017-10-16 12:09:35.000000000 +0200 -+++ source_redox/libnsfb/Makefile 2018-02-20 15:51:58.000000000 +0100 -@@ -46,9 +46,9 @@ NSFB_XCB_PKG_NAMES := xcb xcb-icccm xcb- - $(eval $(call pkg_config_package_available,NSFB_VNC_AVAILABLE,libvncserver)) +diff -rupN source-original/libnsfb/Makefile source/libnsfb/Makefile +--- source-original/libnsfb/Makefile 2017-10-16 12:09:35.000000000 +0200 ++++ source/libnsfb/Makefile 2018-02-22 08:50:59.339914490 +0100 +@@ -43,12 +43,12 @@ endif + NSFB_XCB_PKG_NAMES := xcb xcb-icccm xcb-image xcb-keysyms xcb-atom + + # determine which surface handlers can be compiled based upon avalable library +-$(eval $(call pkg_config_package_available,NSFB_VNC_AVAILABLE,libvncserver)) ++#$(eval $(call pkg_config_package_available,NSFB_VNC_AVAILABLE,libvncserver)) $(eval $(call pkg_config_package_available,NSFB_SDL_AVAILABLE,sdl)) - $(eval $(call pkg_config_package_available,NSFB_XCB_AVAILABLE,$(NSFB_XCB_PKG_NAMES))) +-$(eval $(call pkg_config_package_available,NSFB_XCB_AVAILABLE,$(NSFB_XCB_PKG_NAMES))) -$(eval $(call pkg_config_package_available,NSFB_WLD_AVAILABLE,wayland-client)) ++#$(eval $(call pkg_config_package_available,NSFB_XCB_AVAILABLE,$(NSFB_XCB_PKG_NAMES))) +#$(eval $(call pkg_config_package_available,NSFB_WLD_AVAILABLE,wayland-client)) -# surfaces not detectable via pkg-config @@ -27,26 +32,21 @@ diff -rupN source/libnsfb/Makefile source_redox/libnsfb/Makefile REQUIRED_PKGS := $(REQUIRED_PKGS) libvncserver -endif -- --ifeq ($(NSFB_WLD_AVAILABLE),yes) -- $(eval $(call pkg_config_package_add_flags,wayland-client,CFLAGS)) -- $(eval $(call pkg_config_package_add_flags,wayland-client,TESTCFLAGS,TESTLDFLAGS)) +endif -- REQUIRED_PKGS := $(REQUIRED_PKGS) wayland-client + ifeq ($(NSFB_WLD_AVAILABLE),yes) + $(eval $(call pkg_config_package_add_flags,wayland-client,CFLAGS)) + $(eval $(call pkg_config_package_add_flags,wayland-client,TESTCFLAGS,TESTLDFLAGS)) + + REQUIRED_PKGS := $(REQUIRED_PKGS) wayland-client -endif -+#ifeq ($(NSFB_WLD_AVAILABLE),yes) -+# $(eval $(call pkg_config_package_add_flags,wayland-client,CFLAGS)) -+# $(eval $(call pkg_config_package_add_flags,wayland-client,TESTCFLAGS,TESTLDFLAGS)) -+# -+# REQUIRED_PKGS := $(REQUIRED_PKGS) wayland-client -+#endif ++endif TESTLDFLAGS := -lm -Wl,--whole-archive -l$(COMPONENT) -Wl,--no-whole-archive $(TESTLDFLAGS) -diff -rupN source/libnsfb/src/plot/32bpp-xbgr8888.c source_redox/libnsfb/src/plot/32bpp-xbgr8888.c ---- source/libnsfb/src/plot/32bpp-xbgr8888.c 2017-10-16 12:09:35.000000000 +0200 -+++ source_redox/libnsfb/src/plot/32bpp-xbgr8888.c 2018-02-20 21:17:57.000000000 +0100 +diff -rupN source-original/libnsfb/src/plot/32bpp-xbgr8888.c source/libnsfb/src/plot/32bpp-xbgr8888.c +--- source-original/libnsfb/src/plot/32bpp-xbgr8888.c 2017-10-16 12:09:35.000000000 +0200 ++++ source/libnsfb/src/plot/32bpp-xbgr8888.c 2018-02-20 21:17:57.000000000 +0100 @@ -52,7 +52,7 @@ static inline nsfb_colour_t pixel_to_col */ static inline uint32_t colour_to_pixel(UNUSED nsfb_t *nsfb, nsfb_colour_t c) @@ -65,9 +65,9 @@ diff -rupN source/libnsfb/src/plot/32bpp-xbgr8888.c source_redox/libnsfb/src/plo } #endif -diff -rupN source/libnsfb/src/plot/32bpp-xrgb8888.c source_redox/libnsfb/src/plot/32bpp-xrgb8888.c ---- source/libnsfb/src/plot/32bpp-xrgb8888.c 2017-10-16 12:09:35.000000000 +0200 -+++ source_redox/libnsfb/src/plot/32bpp-xrgb8888.c 2018-02-20 21:15:40.000000000 +0100 +diff -rupN source-original/libnsfb/src/plot/32bpp-xrgb8888.c source/libnsfb/src/plot/32bpp-xrgb8888.c +--- source-original/libnsfb/src/plot/32bpp-xrgb8888.c 2017-10-16 12:09:35.000000000 +0200 ++++ source/libnsfb/src/plot/32bpp-xrgb8888.c 2018-02-20 21:15:40.000000000 +0100 @@ -52,7 +52,7 @@ static inline nsfb_colour_t pixel_to_col */ static inline uint32_t colour_to_pixel(UNUSED nsfb_t *nsfb, nsfb_colour_t c) @@ -86,9 +86,9 @@ diff -rupN source/libnsfb/src/plot/32bpp-xrgb8888.c source_redox/libnsfb/src/plo } #endif -diff -rupN source/libnsfb/src/plot.h source_redox/libnsfb/src/plot.h ---- source/libnsfb/src/plot.h 2017-10-16 12:09:35.000000000 +0200 -+++ source_redox/libnsfb/src/plot.h 2018-02-20 15:46:48.000000000 +0100 +diff -rupN source-original/libnsfb/src/plot.h source/libnsfb/src/plot.h +--- source-original/libnsfb/src/plot.h 2017-10-16 12:09:35.000000000 +0200 ++++ source/libnsfb/src/plot.h 2018-02-20 15:46:48.000000000 +0100 @@ -36,7 +36,7 @@ #define NSFB_BE_BYTE_ORDER #endif @@ -107,9 +107,9 @@ diff -rupN source/libnsfb/src/plot.h source_redox/libnsfb/src/plot.h * * Copy an area of the display. */ -diff -rupN source/libnsfb/src/surface/sdl.c source_redox/libnsfb/src/surface/sdl.c ---- source/libnsfb/src/surface/sdl.c 2017-10-16 12:09:35.000000000 +0200 -+++ source_redox/libnsfb/src/surface/sdl.c 2018-02-20 20:59:42.000000000 +0100 +diff -rupN source-original/libnsfb/src/surface/sdl.c source/libnsfb/src/surface/sdl.c +--- source-original/libnsfb/src/surface/sdl.c 2017-10-16 12:09:35.000000000 +0200 ++++ source/libnsfb/src/surface/sdl.c 2018-02-20 20:59:42.000000000 +0100 @@ -371,7 +371,7 @@ set_palette(nsfb_t *nsfb) } @@ -196,9 +196,9 @@ diff -rupN source/libnsfb/src/surface/sdl.c source_redox/libnsfb/src/surface/sdl /* Do nothing if there was no event */ if (got_event == 0) { -diff -rupN source/libparserutils/src/input/filter.c source_redox/libparserutils/src/input/filter.c ---- source/libparserutils/src/input/filter.c 2017-10-16 12:09:36.000000000 +0200 -+++ source_redox/libparserutils/src/input/filter.c 2018-02-21 16:50:43.449092236 +0100 +diff -rupN source-original/libparserutils/src/input/filter.c source/libparserutils/src/input/filter.c +--- source-original/libparserutils/src/input/filter.c 2017-10-16 12:09:36.000000000 +0200 ++++ source/libparserutils/src/input/filter.c 2018-02-21 16:50:43.449092236 +0100 @@ -10,7 +10,7 @@ #include #include @@ -311,9 +311,9 @@ diff -rupN source/libparserutils/src/input/filter.c source_redox/libparserutils/ if (input->cd != (iconv_t) -1) { iconv_close(input->cd); input->cd = (iconv_t) -1; -diff -rupN source/netsurf/content/fetchers/file.c source_redox/netsurf/content/fetchers/file.c ---- source/netsurf/content/fetchers/file.c 2017-10-16 12:09:36.000000000 +0200 -+++ source_redox/netsurf/content/fetchers/file.c 2018-02-20 16:09:13.000000000 +0100 +diff -rupN source-original/netsurf/content/fetchers/file.c source/netsurf/content/fetchers/file.c +--- source-original/netsurf/content/fetchers/file.c 2017-10-16 12:09:36.000000000 +0200 ++++ source/netsurf/content/fetchers/file.c 2018-02-20 16:09:13.000000000 +0100 @@ -39,7 +39,7 @@ #include #include @@ -368,9 +368,9 @@ diff -rupN source/netsurf/content/fetchers/file.c source_redox/netsurf/content/f (int64_t) fdstat->st_mtime)) { goto fetch_file_process_aborted; } -diff -rupN source/netsurf/content/handlers/image/image.c source_redox/netsurf/content/handlers/image/image.c ---- source/netsurf/content/handlers/image/image.c 2017-10-16 12:09:36.000000000 +0200 -+++ source_redox/netsurf/content/handlers/image/image.c 2018-02-20 17:44:48.000000000 +0100 +diff -rupN source-original/netsurf/content/handlers/image/image.c source/netsurf/content/handlers/image/image.c +--- source-original/netsurf/content/handlers/image/image.c 2017-10-16 12:09:36.000000000 +0200 ++++ source/netsurf/content/handlers/image/image.c 2018-02-20 17:44:48.000000000 +0100 @@ -31,10 +31,10 @@ #include "image/gif.h" #include "image/ico.h" @@ -413,9 +413,9 @@ diff -rupN source/netsurf/content/handlers/image/image.c source_redox/netsurf/co #ifdef WITH_RSVG error = nsrsvg_init(); if (error != NSERROR_OK) -diff -rupN source/netsurf/content/handlers/image/Makefile source_redox/netsurf/content/handlers/image/Makefile ---- source/netsurf/content/handlers/image/Makefile 2017-10-16 12:09:36.000000000 +0200 -+++ source_redox/netsurf/content/handlers/image/Makefile 2018-02-20 16:13:56.000000000 +0100 +diff -rupN source-original/netsurf/content/handlers/image/Makefile source/netsurf/content/handlers/image/Makefile +--- source-original/netsurf/content/handlers/image/Makefile 2017-10-16 12:09:36.000000000 +0200 ++++ source/netsurf/content/handlers/image/Makefile 2018-02-20 16:13:56.000000000 +0100 @@ -5,11 +5,11 @@ S_IMAGE_YES := image.c image_cache.c S_IMAGE_NO := S_IMAGE_$(NETSURF_USE_BMP) += bmp.c ico.c @@ -434,9 +434,9 @@ diff -rupN source/netsurf/content/handlers/image/Makefile source_redox/netsurf/c +#S_IMAGE_$(NETSURF_USE_VIDEO) += video.c S_IMAGE := $(S_IMAGE_YES) -diff -rupN source/netsurf/content/handlers/javascript/Makefile source_redox/netsurf/content/handlers/javascript/Makefile ---- source/netsurf/content/handlers/javascript/Makefile 2017-10-16 12:09:36.000000000 +0200 -+++ source_redox/netsurf/content/handlers/javascript/Makefile 2018-02-20 16:38:31.000000000 +0100 +diff -rupN source-original/netsurf/content/handlers/javascript/Makefile source/netsurf/content/handlers/javascript/Makefile +--- source-original/netsurf/content/handlers/javascript/Makefile 2017-10-16 12:09:36.000000000 +0200 ++++ source/netsurf/content/handlers/javascript/Makefile 2018-02-20 16:38:31.000000000 +0100 @@ -6,13 +6,13 @@ S_JAVASCRIPT_BINDING:= @@ -455,9 +455,9 @@ diff -rupN source/netsurf/content/handlers/javascript/Makefile source_redox/nets # Fetcher for javascript scheme is always required S_JAVASCRIPT += fetcher.c -diff -rupN source/netsurf/content/urldb.c source_redox/netsurf/content/urldb.c ---- source/netsurf/content/urldb.c 2017-10-16 12:09:36.000000000 +0200 -+++ source_redox/netsurf/content/urldb.c 2018-02-20 16:42:25.000000000 +0100 +diff -rupN source-original/netsurf/content/urldb.c source/netsurf/content/urldb.c +--- source-original/netsurf/content/urldb.c 2017-10-16 12:09:36.000000000 +0200 ++++ source/netsurf/content/urldb.c 2018-02-20 16:42:25.000000000 +0100 @@ -630,7 +630,7 @@ static bool urldb__host_is_ip_address(co size_t host_len = strlen(host); const char *sane_host; @@ -476,9 +476,9 @@ diff -rupN source/netsurf/content/urldb.c source_redox/netsurf/content/urldb.c if ((host_len < 6) || (sane_host[0] != '[') || (sane_host[host_len - 1] != ']')) { -diff -rupN source/netsurf/Makefile source_redox/netsurf/Makefile ---- source/netsurf/Makefile 2017-10-16 12:09:36.000000000 +0200 -+++ source_redox/netsurf/Makefile 2018-02-20 16:59:05.000000000 +0100 +diff -rupN source-original/netsurf/Makefile source/netsurf/Makefile +--- source-original/netsurf/Makefile 2017-10-16 12:09:36.000000000 +0200 ++++ source/netsurf/Makefile 2018-02-20 16:59:05.000000000 +0100 @@ -268,7 +268,7 @@ else ifeq ($(origin GCCSDK_INSTALL_ENV),undefined) PKG_CONFIG := pkg-config @@ -526,9 +526,9 @@ diff -rupN source/netsurf/Makefile source_redox/netsurf/Makefile $(eval $(call pkg_config_find_and_add_enabled,BMP,libnsbmp,BMP)) $(eval $(call pkg_config_find_and_add_enabled,GIF,libnsgif,GIF)) $(eval $(call pkg_config_find_and_add_enabled,NSSVG,libsvgtiny,SVG)) -diff -rupN source/netsurf/utils/log.c source_redox/netsurf/utils/log.c ---- source/netsurf/utils/log.c 2017-10-16 12:09:36.000000000 +0200 -+++ source_redox/netsurf/utils/log.c 2018-02-20 17:50:20.000000000 +0100 +diff -rupN source-original/netsurf/utils/log.c source/netsurf/utils/log.c +--- source-original/netsurf/utils/log.c 2017-10-16 12:09:36.000000000 +0200 ++++ source/netsurf/utils/log.c 2018-02-20 17:50:20.000000000 +0100 @@ -261,18 +261,18 @@ nserror nslog_init(nslog_ensure_t *ensur /* sucessfull logging initialisation so log system info */ if (ret == NSERROR_OK) { @@ -558,9 +558,9 @@ diff -rupN source/netsurf/utils/log.c source_redox/netsurf/utils/log.c } return ret; -diff -rupN source/netsurf/utils/useragent.c source_redox/netsurf/utils/useragent.c ---- source/netsurf/utils/useragent.c 2017-10-16 12:09:36.000000000 +0200 -+++ source_redox/netsurf/utils/useragent.c 2018-02-20 17:50:51.000000000 +0100 +diff -rupN source-original/netsurf/utils/useragent.c source/netsurf/utils/useragent.c +--- source-original/netsurf/utils/useragent.c 2017-10-16 12:09:36.000000000 +0200 ++++ source/netsurf/utils/useragent.c 2018-02-20 17:50:51.000000000 +0100 @@ -44,9 +44,9 @@ user_agent_build_string(void) char *ua_string; int len; @@ -574,9 +574,9 @@ diff -rupN source/netsurf/utils/useragent.c source_redox/netsurf/utils/useragent len = snprintf(NULL, 0, NETSURF_UA_FORMAT_STRING, netsurf_version_major, -diff -rupN source/netsurf/utils/utsname.h source_redox/netsurf/utils/utsname.h ---- source/netsurf/utils/utsname.h 2017-10-16 12:09:36.000000000 +0200 -+++ source_redox/netsurf/utils/utsname.h 2018-02-20 16:46:22.000000000 +0100 +diff -rupN source-original/netsurf/utils/utsname.h source/netsurf/utils/utsname.h +--- source-original/netsurf/utils/utsname.h 2017-10-16 12:09:36.000000000 +0200 ++++ source/netsurf/utils/utsname.h 2018-02-20 16:46:22.000000000 +0100 @@ -24,7 +24,7 @@ #ifndef _NETSURF_UTILS_UTSNAME_H_ #define _NETSURF_UTILS_UTSNAME_H_ diff --git a/recipes/netsurf/recipe.sh b/recipes/netsurf/recipe.sh index 9586584f..c52c6c17 100644 --- a/recipes/netsurf/recipe.sh +++ b/recipes/netsurf/recipe.sh @@ -1,6 +1,6 @@ VERSION=3.7 TAR=http://download.netsurf-browser.org/netsurf/releases/source-full/netsurf-all-$VERSION.tar.gz -BUILD_DEPENDS=(expat curl sdl openssl zlib newlib) +BUILD_DEPENDS=(expat curl sdl openssl zlib) function recipe_version { echo "$VERSION" @@ -20,7 +20,7 @@ function recipe_build { export TARGET="framebuffer" export PKG_CONFIG_PATH="$PWD/../sysroot/lib/pkgconfig" - make NSFB_SDL_AVAILABLE=yes WITHOUT_ICONV_FILTER=yes + make skip=1 } diff --git a/recipes/newlib/recipe.sh b/recipes/newlib/recipe.sh index 5cc668a8..58387f73 100644 --- a/recipes/newlib/recipe.sh +++ b/recipes/newlib/recipe.sh @@ -24,7 +24,7 @@ function recipe_build { automake-1.11 --cygnus Makefile popd - CC= ./configure --target="${HOST}" --prefix=/ --enable-newlib-iconv + CC= ./configure --target="${HOST}" --prefix=/ make all skip=1 From 2d7bade13a8dc765ba8dc81025435d6c442bf86b Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Thu, 22 Feb 2018 17:23:57 +0100 Subject: [PATCH 0333/3180] sdl: Implement mouse wheel scrolling, middle and right buttons --- recipes/sdl/01_orbital.patch | 109 ++++++++++++++++++++--------------- 1 file changed, 62 insertions(+), 47 deletions(-) diff --git a/recipes/sdl/01_orbital.patch b/recipes/sdl/01_orbital.patch index 90090bf7..cedba208 100644 --- a/recipes/sdl/01_orbital.patch +++ b/recipes/sdl/01_orbital.patch @@ -1,6 +1,6 @@ -diff -rupN source/build-scripts/config.sub source_orbital/build-scripts/config.sub ---- source/build-scripts/config.sub 2012-01-19 07:30:05.000000000 +0100 -+++ source_orbital/build-scripts/config.sub 2018-02-21 09:33:42.970275299 +0100 +diff -rupN source_original/build-scripts/config.sub source/build-scripts/config.sub +--- source_original/build-scripts/config.sub 2012-01-19 07:30:05.000000000 +0100 ++++ source/build-scripts/config.sub 2018-02-21 09:33:42.970275299 +0100 @@ -1276,7 +1276,7 @@ case $os in -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ @@ -10,9 +10,9 @@ diff -rupN source/build-scripts/config.sub source_orbital/build-scripts/config.s | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ -diff -rupN source/configure.in source_orbital/configure.in ---- source/configure.in 2012-01-19 07:30:05.000000000 +0100 -+++ source_orbital/configure.in 2018-02-21 09:33:42.970275299 +0100 +diff -rupN source_original/configure.in source/configure.in +--- source_original/configure.in 2012-01-19 07:30:05.000000000 +0100 ++++ source/configure.in 2018-02-21 09:33:42.970275299 +0100 @@ -1646,6 +1646,19 @@ AC_HELP_STRING([--enable-video-dummy], [ fi } @@ -54,9 +54,9 @@ diff -rupN source/configure.in source_orbital/configure.in CheckDiskAudio CheckDummyAudio CheckDLOPEN -diff -rupN source/include/SDL_config.h.in source_orbital/include/SDL_config.h.in ---- source/include/SDL_config.h.in 2012-01-19 07:30:05.000000000 +0100 -+++ source_orbital/include/SDL_config.h.in 2018-02-21 09:33:43.110276438 +0100 +diff -rupN source_original/include/SDL_config.h.in source/include/SDL_config.h.in +--- source_original/include/SDL_config.h.in 2012-01-19 07:30:05.000000000 +0100 ++++ source/include/SDL_config.h.in 2018-02-21 09:33:43.110276438 +0100 @@ -268,6 +268,7 @@ #undef SDL_VIDEO_DRIVER_GGI #undef SDL_VIDEO_DRIVER_IPOD @@ -65,10 +65,10 @@ diff -rupN source/include/SDL_config.h.in source_orbital/include/SDL_config.h.in #undef SDL_VIDEO_DRIVER_OS2FS #undef SDL_VIDEO_DRIVER_PHOTON #undef SDL_VIDEO_DRIVER_PICOGUI -diff -rupN source/src/video/orbital/SDL_orbitalevents.c source_orbital/src/video/orbital/SDL_orbitalevents.c ---- source/src/video/orbital/SDL_orbitalevents.c 1970-01-01 01:00:00.000000000 +0100 -+++ source_orbital/src/video/orbital/SDL_orbitalevents.c 2018-02-21 10:35:32.798443506 +0100 -@@ -0,0 +1,173 @@ +diff -rupN source_original/src/video/orbital/SDL_orbitalevents.c source/src/video/orbital/SDL_orbitalevents.c +--- source_original/src/video/orbital/SDL_orbitalevents.c 1970-01-01 01:00:00.000000000 +0100 ++++ source/src/video/orbital/SDL_orbitalevents.c 2018-02-22 15:03:58.808696217 +0100 +@@ -0,0 +1,188 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -121,6 +121,9 @@ diff -rupN source/src/video/orbital/SDL_orbitalevents.c source_orbital/src/video + int64_t b; +} __attribute__((packed)); + ++/* Static variables so only changes are reported */ ++static int64_t last_buttons = 0; ++ +void ORBITAL_PumpEvents(_THIS) +{ + struct Event event; @@ -138,15 +141,27 @@ diff -rupN source/src/video/orbital/SDL_orbitalevents.c source_orbital/src/video + } else { + SDL_PrivateKeyboard(SDL_RELEASED, &keysym); + } -+ } else if( event.code == EVENT_MOUSE ) { ++ } else if ( event.code == EVENT_MOUSE ) { + SDL_PrivateMouseMotion(0, 0, event.a, event.b); + //SDL_PrivateMouseButton(Uint8 state, Uint8 button, Sint16 x, Sint16 y); -+ } else if( event.code == EVENT_BUTTON ) { -+ // TODO: Only emit events when the button state changed -+ if ( event.a & 0x01 > 0 ) { -+ SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_LEFT, 0, 0); -+ } else { -+ SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_LEFT, 0, 0); ++ } else if ( event.code == EVENT_BUTTON ) { ++ int64_t changed = event.a ^ last_buttons; ++ ++ if ( changed & 0x01 ) ++ SDL_PrivateMouseButton((event.a & 0x01) ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_LEFT, 0, 0); ++ if ( changed & 0x02 ) ++ SDL_PrivateMouseButton((event.a & 0x02) ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_MIDDLE, 0, 0); ++ if ( changed & 0x04 ) ++ SDL_PrivateMouseButton((event.a & 0x04) ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_RIGHT, 0, 0); ++ ++ last_buttons = event.a; ++ } else if ( event.code == EVENT_SCROLL ) { ++ if ( event.b > 0 ) { ++ SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_WHEELUP, 0, 0); ++ SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_WHEELUP, 0, 0); ++ } else if ( event.b < 0 ) { ++ SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_WHEELDOWN, 0, 0); ++ SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_WHEELDOWN, 0, 0); + } + } else if ( event.code == EVENT_QUIT ) { + SDL_PrivateQuit(); @@ -242,9 +257,9 @@ diff -rupN source/src/video/orbital/SDL_orbitalevents.c source_orbital/src/video +} + +/* end of SDL_orbitalevents.c ... */ -diff -rupN source/src/video/orbital/SDL_orbitalevents_c.h source_orbital/src/video/orbital/SDL_orbitalevents_c.h ---- source/src/video/orbital/SDL_orbitalevents_c.h 1970-01-01 01:00:00.000000000 +0100 -+++ source_orbital/src/video/orbital/SDL_orbitalevents_c.h 2018-02-21 09:33:43.238277480 +0100 +diff -rupN source_original/src/video/orbital/SDL_orbitalevents_c.h source/src/video/orbital/SDL_orbitalevents_c.h +--- source_original/src/video/orbital/SDL_orbitalevents_c.h 1970-01-01 01:00:00.000000000 +0100 ++++ source/src/video/orbital/SDL_orbitalevents_c.h 2018-02-21 09:33:43.238277480 +0100 @@ -0,0 +1,32 @@ +/* + SDL - Simple DirectMedia Layer @@ -278,9 +293,9 @@ diff -rupN source/src/video/orbital/SDL_orbitalevents_c.h source_orbital/src/vid +extern void ORBITAL_PumpEvents(_THIS); + +/* end of SDL_orbitalevents_c.h ... */ -diff -rupN source/src/video/orbital/SDL_orbitalmouse.c source_orbital/src/video/orbital/SDL_orbitalmouse.c ---- source/src/video/orbital/SDL_orbitalmouse.c 1970-01-01 01:00:00.000000000 +0100 -+++ source_orbital/src/video/orbital/SDL_orbitalmouse.c 2018-02-21 09:33:43.238277480 +0100 +diff -rupN source_original/src/video/orbital/SDL_orbitalmouse.c source/src/video/orbital/SDL_orbitalmouse.c +--- source_original/src/video/orbital/SDL_orbitalmouse.c 1970-01-01 01:00:00.000000000 +0100 ++++ source/src/video/orbital/SDL_orbitalmouse.c 2018-02-21 09:33:43.238277480 +0100 @@ -0,0 +1,33 @@ +/* + SDL - Simple DirectMedia Layer @@ -315,9 +330,9 @@ diff -rupN source/src/video/orbital/SDL_orbitalmouse.c source_orbital/src/video/ +struct WMcursor { + int unused; +}; -diff -rupN source/src/video/orbital/SDL_orbitalmouse_c.h source_orbital/src/video/orbital/SDL_orbitalmouse_c.h ---- source/src/video/orbital/SDL_orbitalmouse_c.h 1970-01-01 01:00:00.000000000 +0100 -+++ source_orbital/src/video/orbital/SDL_orbitalmouse_c.h 2018-02-21 09:33:43.238277480 +0100 +diff -rupN source_original/src/video/orbital/SDL_orbitalmouse_c.h source/src/video/orbital/SDL_orbitalmouse_c.h +--- source_original/src/video/orbital/SDL_orbitalmouse_c.h 1970-01-01 01:00:00.000000000 +0100 ++++ source/src/video/orbital/SDL_orbitalmouse_c.h 2018-02-21 09:33:43.238277480 +0100 @@ -0,0 +1,26 @@ +/* + SDL - Simple DirectMedia Layer @@ -345,9 +360,9 @@ diff -rupN source/src/video/orbital/SDL_orbitalmouse_c.h source_orbital/src/vide +#include "SDL_orbitalvideo.h" + +/* Functions to be exported */ -diff -rupN source/src/video/orbital/SDL_orbitalscancode.h source_orbital/src/video/orbital/SDL_orbitalscancode.h ---- source/src/video/orbital/SDL_orbitalscancode.h 1970-01-01 01:00:00.000000000 +0100 -+++ source_orbital/src/video/orbital/SDL_orbitalscancode.h 2018-02-21 09:33:43.238277480 +0100 +diff -rupN source_original/src/video/orbital/SDL_orbitalscancode.h source/src/video/orbital/SDL_orbitalscancode.h +--- source_original/src/video/orbital/SDL_orbitalscancode.h 1970-01-01 01:00:00.000000000 +0100 ++++ source/src/video/orbital/SDL_orbitalscancode.h 2018-02-21 09:33:43.238277480 +0100 @@ -0,0 +1,80 @@ +#define SCANCODE_A 0x1E +#define SCANCODE_B 0x30 @@ -429,9 +444,9 @@ diff -rupN source/src/video/orbital/SDL_orbitalscancode.h source_orbital/src/vid +#define SCANCODE_COMMA 0x33 +#define SCANCODE_PERIOD 0x34 +#define SCANCODE_SLASH 0x35 -diff -rupN source/src/video/orbital/SDL_orbitalvideo.c source_orbital/src/video/orbital/SDL_orbitalvideo.c ---- source/src/video/orbital/SDL_orbitalvideo.c 1970-01-01 01:00:00.000000000 +0100 -+++ source_orbital/src/video/orbital/SDL_orbitalvideo.c 2018-02-21 09:33:43.266277708 +0100 +diff -rupN source_original/src/video/orbital/SDL_orbitalvideo.c source/src/video/orbital/SDL_orbitalvideo.c +--- source_original/src/video/orbital/SDL_orbitalvideo.c 1970-01-01 01:00:00.000000000 +0100 ++++ source/src/video/orbital/SDL_orbitalvideo.c 2018-02-21 09:33:43.266277708 +0100 @@ -0,0 +1,266 @@ +/* + SDL - Simple DirectMedia Layer @@ -699,9 +714,9 @@ diff -rupN source/src/video/orbital/SDL_orbitalvideo.c source_orbital/src/video/ + this->screen->pixels = NULL; + } +} -diff -rupN source/src/video/orbital/SDL_orbitalvideo.h source_orbital/src/video/orbital/SDL_orbitalvideo.h ---- source/src/video/orbital/SDL_orbitalvideo.h 1970-01-01 01:00:00.000000000 +0100 -+++ source_orbital/src/video/orbital/SDL_orbitalvideo.h 2018-02-21 09:33:43.266277708 +0100 +diff -rupN source_original/src/video/orbital/SDL_orbitalvideo.h source/src/video/orbital/SDL_orbitalvideo.h +--- source_original/src/video/orbital/SDL_orbitalvideo.h 1970-01-01 01:00:00.000000000 +0100 ++++ source/src/video/orbital/SDL_orbitalvideo.h 2018-02-21 09:33:43.266277708 +0100 @@ -0,0 +1,41 @@ +/* + SDL - Simple DirectMedia Layer @@ -744,9 +759,9 @@ diff -rupN source/src/video/orbital/SDL_orbitalvideo.h source_orbital/src/video/ +}; + +#endif /* _SDL_orbitalvideo_h */ -diff -rupN source/src/video/SDL_gamma.c source_orbital/src/video/SDL_gamma.c ---- source/src/video/SDL_gamma.c 2012-01-19 07:30:06.000000000 +0100 -+++ source_orbital/src/video/SDL_gamma.c 2018-02-20 20:51:31.151824659 +0100 +diff -rupN source_original/src/video/SDL_gamma.c source/src/video/SDL_gamma.c +--- source_original/src/video/SDL_gamma.c 2012-01-19 07:30:06.000000000 +0100 ++++ source/src/video/SDL_gamma.c 2018-02-20 20:51:31.151824659 +0100 @@ -23,9 +23,9 @@ /* Gamma correction support */ @@ -814,9 +829,9 @@ diff -rupN source/src/video/SDL_gamma.c source_orbital/src/video/SDL_gamma.c /* Lazily allocate the gamma table */ if ( ! video->gamma ) { -diff -rupN source/src/video/SDL_sysvideo.h source_orbital/src/video/SDL_sysvideo.h ---- source/src/video/SDL_sysvideo.h 2012-01-19 07:30:06.000000000 +0100 -+++ source_orbital/src/video/SDL_sysvideo.h 2018-02-21 09:33:43.266277708 +0100 +diff -rupN source_original/src/video/SDL_sysvideo.h source/src/video/SDL_sysvideo.h +--- source_original/src/video/SDL_sysvideo.h 2012-01-19 07:30:06.000000000 +0100 ++++ source/src/video/SDL_sysvideo.h 2018-02-21 09:33:43.266277708 +0100 @@ -410,6 +410,9 @@ extern VideoBootStrap AALIB_bootstrap; #if SDL_VIDEO_DRIVER_CACA extern VideoBootStrap CACA_bootstrap; @@ -827,9 +842,9 @@ diff -rupN source/src/video/SDL_sysvideo.h source_orbital/src/video/SDL_sysvideo #if SDL_VIDEO_DRIVER_DUMMY extern VideoBootStrap DUMMY_bootstrap; #endif -diff -rupN source/src/video/SDL_video.c source_orbital/src/video/SDL_video.c ---- source/src/video/SDL_video.c 2012-01-19 07:30:06.000000000 +0100 -+++ source_orbital/src/video/SDL_video.c 2018-02-21 09:33:43.350278392 +0100 +diff -rupN source_original/src/video/SDL_video.c source/src/video/SDL_video.c +--- source_original/src/video/SDL_video.c 2012-01-19 07:30:06.000000000 +0100 ++++ source/src/video/SDL_video.c 2018-02-21 09:33:43.350278392 +0100 @@ -126,6 +126,9 @@ static VideoBootStrap *bootstrap[] = { #if SDL_VIDEO_DRIVER_CACA &CACA_bootstrap, From 2ff556bce142909c8a66fb474a0154552aa767b4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 22 Feb 2018 19:27:10 -0700 Subject: [PATCH 0334/3180] Update netsurf recipe --- recipes/netsurf/recipe.sh | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/recipes/netsurf/recipe.sh b/recipes/netsurf/recipe.sh index c52c6c17..4da623a2 100644 --- a/recipes/netsurf/recipe.sh +++ b/recipes/netsurf/recipe.sh @@ -2,6 +2,23 @@ VERSION=3.7 TAR=http://download.netsurf-browser.org/netsurf/releases/source-full/netsurf-all-$VERSION.tar.gz BUILD_DEPENDS=(expat curl sdl openssl zlib) +export AR="${HOST}-ar" +export AS="${HOST}-as" +export CC="${HOST}-gcc" +export CXX="${HOST}-g++" +export LD="${HOST}-ld" +export NM="${HOST}-nm" +export OBJCOPY="${HOST}-objcopy" +export OBJDUMP="${HOST}-objdump" +export RANLIB="${HOST}-ranlib" +export READELF="${HOST}-readelf" +export STRIP="${HOST}-strip" + +export PKG_CONFIG_ALLOW_CROSS=1 +export PKG_CONFIG_PATH= +export PKG_CONFIG_LIBDIR="$PWD/sysroot/lib/pkgconfig" +export PKG_CONFIG_SYSROOT_DIR="$PWD/sysroot" + function recipe_version { echo "$VERSION" skip=1 @@ -14,11 +31,9 @@ function recipe_update { function recipe_build { sysroot="${PWD}/../sysroot" - export AR="${HOST}-ar" export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" export TARGET="framebuffer" - export PKG_CONFIG_PATH="$PWD/../sysroot/lib/pkgconfig" make skip=1 @@ -39,4 +54,3 @@ function recipe_stage { make DESTDIR="$dest" install skip=1 } - From f0f05be025fc947df1df87a39e51d27141fa2a8b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 22 Feb 2018 20:07:00 -0700 Subject: [PATCH 0335/3180] Fix pkg-config with autotools programs --- config.sh | 16 ++++++++++++++-- cook.sh | 10 ++++++++++ recipes/cmatrix/recipe.sh | 14 +------------- recipes/curl/recipe.sh | 2 +- recipes/dash/recipe.sh | 12 ------------ recipes/gcc/recipe.sh | 12 ------------ recipes/git/recipe.sh | 12 ------------ recipes/gnu-binutils/recipe.sh | 12 ------------ recipes/gnu-make/recipe.sh | 12 ------------ recipes/jansson/recipe.sh | 14 +------------- recipes/mdp/recipe.sh | 2 -- recipes/netsurf/recipe.sh | 19 +++---------------- recipes/newlibtest/recipe.sh | 2 -- recipes/openssl/recipe.sh | 1 - recipes/python/recipe.sh | 12 ------------ recipes/ssh/recipe.sh | 16 ++-------------- recipes/vim/recipe.sh | 12 ------------ 17 files changed, 32 insertions(+), 148 deletions(-) diff --git a/config.sh b/config.sh index a07130ed..f383679e 100755 --- a/config.sh +++ b/config.sh @@ -9,8 +9,20 @@ HOST=$TARGET # Automatic variables ROOT="$(cd `dirname "$0"` && pwd)" REPO="$ROOT/repo/$TARGET" -export CC="$HOST-gcc" -export XARGO_HOME="$ROOT/xargo" +export XARGO_HOME="${ROOT}/xargo" + +export AR="${HOST}-ar" +export AS="${HOST}-as" +export CC="${HOST}-gcc" +export CXX="${HOST}-g++" +export LD="${HOST}-ld" +export NM="${HOST}-nm" +export OBJCOPY="${HOST}-objcopy" +export OBJDUMP="${HOST}-objdump" +export PKG_CONFIG="${HOST}-pkg-config" +export RANLIB="${HOST}-ranlib" +export READELF="${HOST}-readelf" +export STRIP="${HOST}-strip" if [[ "$OSTYPE" == "darwin"* ]]; then # GNU find diff --git a/cook.sh b/cook.sh index 0de729bd..a606b629 100755 --- a/cook.sh +++ b/cook.sh @@ -422,6 +422,16 @@ then if [ -d "$ROOT/recipes/$1" ] then cd "$ROOT/recipes/$1" + + function x86_64-unknown-redox-pkg-config { + export PKG_CONFIG_PATH= + export PKG_CONFIG_DIR= + export PKG_CONFIG_LIBDIR="$PWD/sysroot/lib/pkgconfig" + export PKG_CONFIG_SYSROOT_DIR="$PWD/sysroot" + + exec pkg-config "$@" + } + source recipe.sh ops=() diff --git a/recipes/cmatrix/recipe.sh b/recipes/cmatrix/recipe.sh index 171789b3..4e3722c6 100644 --- a/recipes/cmatrix/recipe.sh +++ b/recipes/cmatrix/recipe.sh @@ -2,18 +2,6 @@ GIT=https://github.com/abishekvashok/cmatrix BUILD_DEPENDS=(ncurses) DEPENDS=(terminfo) -export AR="${HOST}-ar" -export AS="${HOST}-as" -export CC="${HOST}-gcc" -export CXX="${HOST}-g++" -export LD="${HOST}-ld" -export NM="${HOST}-nm" -export OBJCOPY="${HOST}-objcopy" -export OBJDUMP="${HOST}-objdump" -export RANLIB="${HOST}-ranlib" -export READELF="${HOST}-readelf" -export STRIP="${HOST}-strip" - function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" skip=1 @@ -29,7 +17,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" ./configure --host=${HOST} --prefix=/ --without-fonts - make + make skip=1 } diff --git a/recipes/curl/recipe.sh b/recipes/curl/recipe.sh index a64a6b9f..6e1fa519 100644 --- a/recipes/curl/recipe.sh +++ b/recipes/curl/recipe.sh @@ -34,6 +34,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install - rm -rf "$1"/{share,lib/pkgconfig} + rm -rf "$1"/share skip=1 } diff --git a/recipes/dash/recipe.sh b/recipes/dash/recipe.sh index 83bc8687..93baa757 100644 --- a/recipes/dash/recipe.sh +++ b/recipes/dash/recipe.sh @@ -1,18 +1,6 @@ GIT=https://github.com/redox-os/dash.git BRANCH=redox -export AR="${HOST}-ar" -export AS="${HOST}-as" -export CC="${HOST}-gcc" -export CXX="${HOST}-g++" -export LD="${HOST}-ld" -export NM="${HOST}-nm" -export OBJCOPY="${HOST}-objcopy" -export OBJDUMP="${HOST}-objdump" -export RANLIB="${HOST}-ranlib" -export READELF="${HOST}-readelf" -export STRIP="${HOST}-strip" - function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" skip=1 diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index 1ce91e83..a6681a1f 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -2,18 +2,6 @@ GIT=https://github.com/redox-os/gcc.git BRANCH=redox DEPENDS="gnu-binutils newlib" -export AR="${HOST}-ar" -export AS="${HOST}-as" -export CC="${HOST}-gcc" -export CXX="${HOST}-g++" -export LD="${HOST}-ld" -export NM="${HOST}-nm" -export OBJCOPY="${HOST}-objcopy" -export OBJDUMP="${HOST}-objdump" -export RANLIB="${HOST}-ranlib" -export READELF="${HOST}-readelf" -export STRIP="${HOST}-strip" - function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" skip=1 diff --git a/recipes/git/recipe.sh b/recipes/git/recipe.sh index cedf42ac..6469d57e 100644 --- a/recipes/git/recipe.sh +++ b/recipes/git/recipe.sh @@ -3,18 +3,6 @@ TAR=https://www.kernel.org/pub/software/scm/git/git-$VERSION.tar.xz BUILD_DEPENDS=(zlib curl openssl expat) DEPENDS="ca-certificates" -export AR="${HOST}-ar" -export AS="${HOST}-as" -export CC="${HOST}-gcc" -export CXX="${HOST}-g++" -export LD="${HOST}-ld" -export NM="${HOST}-nm" -export OBJCOPY="${HOST}-objcopy" -export OBJDUMP="${HOST}-objdump" -export RANLIB="${HOST}-ranlib" -export READELF="${HOST}-readelf" -export STRIP="${HOST}-strip" - MAKEFLAGS="NO_MMAP=1 NEEDS_SSL_WITH_CURL=1 NEEDS_CRYPTO_WITH_SSL=1 NO_UNIX_SOCKETS=1 NEEDS_LIBICONV= NEEDS_LIBRT= BLK_SHA1=1" function recipe_version { diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh index 4475c0c0..1176b385 100644 --- a/recipes/gnu-binutils/recipe.sh +++ b/recipes/gnu-binutils/recipe.sh @@ -1,17 +1,5 @@ GIT=https://github.com/redox-os/binutils-gdb.git -export AR="${HOST}-ar" -export AS="${HOST}-as" -export CC="${HOST}-gcc" -export CXX="${HOST}-g++" -export LD="${HOST}-ld" -export NM="${HOST}-nm" -export OBJCOPY="${HOST}-objcopy" -export OBJDUMP="${HOST}-objdump" -export RANLIB="${HOST}-ranlib" -export READELF="${HOST}-readelf" -export STRIP="${HOST}-strip" - function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" skip=1 diff --git a/recipes/gnu-make/recipe.sh b/recipes/gnu-make/recipe.sh index 2d41262f..517e6e8a 100644 --- a/recipes/gnu-make/recipe.sh +++ b/recipes/gnu-make/recipe.sh @@ -1,18 +1,6 @@ VERSION=4.2.1 TAR=https://ftp.gnu.org/gnu/make/make-$VERSION.tar.gz -export AR="${HOST}-ar" -export AS="${HOST}-as" -export CC="${HOST}-gcc" -export CXX="${HOST}-g++" -export LD="${HOST}-ld" -export NM="${HOST}-nm" -export OBJCOPY="${HOST}-objcopy" -export OBJDUMP="${HOST}-objdump" -export RANLIB="${HOST}-ranlib" -export READELF="${HOST}-readelf" -export STRIP="${HOST}-strip" - function recipe_version { echo "$VERSION" skip=1 diff --git a/recipes/jansson/recipe.sh b/recipes/jansson/recipe.sh index 9bfb3121..e79db327 100644 --- a/recipes/jansson/recipe.sh +++ b/recipes/jansson/recipe.sh @@ -1,18 +1,6 @@ VERSION=2.10 TAR=http://www.digip.org/jansson/releases/jansson-$VERSION.tar.gz -export AR="${HOST}-ar" -export AS="${HOST}-as" -export CC="${HOST}-gcc" -export CXX="${HOST}-g++" -export LD="${HOST}-ld" -export NM="${HOST}-nm" -export OBJCOPY="${HOST}-objcopy" -export OBJDUMP="${HOST}-objdump" -export RANLIB="${HOST}-ranlib" -export READELF="${HOST}-readelf" -export STRIP="${HOST}-strip" - function recipe_version { echo "$VERSION" skip=1 @@ -27,7 +15,7 @@ function recipe_build { sysroot="${PWD}/../sysroot" export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" - ./configure --host=${HOST} --prefix=/ + ./configure --host=${HOST} --prefix=/ make skip=1 } diff --git a/recipes/mdp/recipe.sh b/recipes/mdp/recipe.sh index c2496537..91fd7812 100644 --- a/recipes/mdp/recipe.sh +++ b/recipes/mdp/recipe.sh @@ -14,8 +14,6 @@ function recipe_update { function recipe_build { sysroot="${PWD}/../sysroot" - export CC="${HOST}-gcc" - export LD="${HOST}-ld" export CFLAGS="-I$sysroot/include -I$sysroot/include/ncursesw" export LDFLAGS="-L$sysroot/lib" diff --git a/recipes/netsurf/recipe.sh b/recipes/netsurf/recipe.sh index 4da623a2..1e348ee0 100644 --- a/recipes/netsurf/recipe.sh +++ b/recipes/netsurf/recipe.sh @@ -2,19 +2,6 @@ VERSION=3.7 TAR=http://download.netsurf-browser.org/netsurf/releases/source-full/netsurf-all-$VERSION.tar.gz BUILD_DEPENDS=(expat curl sdl openssl zlib) -export AR="${HOST}-ar" -export AS="${HOST}-as" -export CC="${HOST}-gcc" -export CXX="${HOST}-g++" -export LD="${HOST}-ld" -export NM="${HOST}-nm" -export OBJCOPY="${HOST}-objcopy" -export OBJDUMP="${HOST}-objdump" -export RANLIB="${HOST}-ranlib" -export READELF="${HOST}-readelf" -export STRIP="${HOST}-strip" - -export PKG_CONFIG_ALLOW_CROSS=1 export PKG_CONFIG_PATH= export PKG_CONFIG_LIBDIR="$PWD/sysroot/lib/pkgconfig" export PKG_CONFIG_SYSROOT_DIR="$PWD/sysroot" @@ -31,11 +18,11 @@ function recipe_update { function recipe_build { sysroot="${PWD}/../sysroot" - export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib" export TARGET="framebuffer" + export CFLAGS="-I$sysroot/include -I${PWD}/inst-${TARGET}/include" + export LDFLAGS="-L$sysroot/lib -L${PWD}/inst-${TARGET}/lib" - make + make V=1 skip=1 } diff --git a/recipes/newlibtest/recipe.sh b/recipes/newlibtest/recipe.sh index fdbed7c5..b2bedf83 100644 --- a/recipes/newlibtest/recipe.sh +++ b/recipes/newlibtest/recipe.sh @@ -13,8 +13,6 @@ function recipe_update { function recipe_build { sysroot="${PWD}/../sysroot" - export CC="${HOST}-gcc" - export LD="${HOST}-ld" export CFLAGS="-static -nostdinc -I $sysroot/include -I /usr/lib/gcc/x86_64-unknown-redox/7.0.1/include/ -nostdlib -L $sysroot/lib" export CRT="$sysroot/lib/crt0.o" export CLIBS="-lc -lm" diff --git a/recipes/openssl/recipe.sh b/recipes/openssl/recipe.sh index 5aef73cb..872d9d98 100644 --- a/recipes/openssl/recipe.sh +++ b/recipes/openssl/recipe.sh @@ -30,7 +30,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install - rm -rf "$1/lib/pkgconfig" # pkg-config returns paths based on / prefix, breaking cross compile rm -rf "$1/{share,ssl}" skip=1 } diff --git a/recipes/python/recipe.sh b/recipes/python/recipe.sh index 9b257bb2..5c8ca112 100644 --- a/recipes/python/recipe.sh +++ b/recipes/python/recipe.sh @@ -1,18 +1,6 @@ VERSION=3.6.2 TAR=https://www.python.org/ftp/python/$VERSION/Python-$VERSION.tar.xz -export AR="${HOST}-ar" -export AS="${HOST}-as" -export CC="${HOST}-gcc" -export CXX="${HOST}-g++" -export LD="${HOST}-ld" -export NM="${HOST}-nm" -export OBJCOPY="${HOST}-objcopy" -export OBJDUMP="${HOST}-objdump" -export RANLIB="${HOST}-ranlib" -export READELF="${HOST}-readelf" -export STRIP="${HOST}-strip" - export CONFIG_SITE=config.site function recipe_version { diff --git a/recipes/ssh/recipe.sh b/recipes/ssh/recipe.sh index 4608ab05..c69a2907 100644 --- a/recipes/ssh/recipe.sh +++ b/recipes/ssh/recipe.sh @@ -2,18 +2,6 @@ VERSION=7.6p1 TAR=http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-$VERSION.tar.gz BUILD_DEPENDS=(zlib openssl) -export AR="${HOST}-ar" -export AS="${HOST}-as" -export CC="${HOST}-gcc" -export CXX="${HOST}-g++" -export LD="${HOST}-gcc" -export NM="${HOST}-nm" -export OBJCOPY="${HOST}-objcopy" -export OBJDUMP="${HOST}-objdump" -export RANLIB="${HOST}-ranlib" -export READELF="${HOST}-readelf" -export STRIP="${HOST}-strip" - function recipe_version { echo "$VERSION" skip=1 @@ -53,12 +41,12 @@ function newlib_build { } function recipe_build { - newlib_build + newlib_build sysroot="${PWD}/../sysroot" export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" ./configure --host=${HOST} --prefix=/ - make + make skip=1 } diff --git a/recipes/vim/recipe.sh b/recipes/vim/recipe.sh index b0b64523..48a920e8 100644 --- a/recipes/vim/recipe.sh +++ b/recipes/vim/recipe.sh @@ -3,18 +3,6 @@ TAR=http://ftp.vim.org/vim/unix/vim-$VERSION.tar.bz2 BUILD_DEPENDS=(ncurses) DEPENDS="terminfo" -export AR="${HOST}-ar" -export AS="${HOST}-as" -export CC="${HOST}-gcc" -export CXX="${HOST}-g++" -export LD="${HOST}-ld" -export NM="${HOST}-nm" -export OBJCOPY="${HOST}-objcopy" -export OBJDUMP="${HOST}-objdump" -export RANLIB="${HOST}-ranlib" -export READELF="${HOST}-readelf" -export STRIP="${HOST}-strip" - function recipe_version { echo "$VERSION" skip=1 From f7e778801f4982149bea966010040af37b97e998 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Fri, 23 Feb 2018 19:40:03 +0100 Subject: [PATCH 0336/3180] Add libpng recipe --- recipes/libpng/recipe.sh | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 recipes/libpng/recipe.sh diff --git a/recipes/libpng/recipe.sh b/recipes/libpng/recipe.sh new file mode 100644 index 00000000..2c626c05 --- /dev/null +++ b/recipes/libpng/recipe.sh @@ -0,0 +1,40 @@ +VERSION=1.6.34 +TAR=https://download.sourceforge.net/libpng/libpng-$VERSION.tar.xz +BUILD_DEPENDS=(zlib) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="${PWD}/../sysroot" + export LDFLAGS="-L$sysroot/lib" + export CPPFLAGS="-I$sysroot/include" + + wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + ./configure --host=${HOST} --prefix='/' + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} From 9a7bb65864fb75c87b3002a34fbe973aa93a739f Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Fri, 23 Feb 2018 19:40:22 +0100 Subject: [PATCH 0337/3180] Add libjpeg recipe --- recipes/libjpeg/recipe.sh | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 recipes/libjpeg/recipe.sh diff --git a/recipes/libjpeg/recipe.sh b/recipes/libjpeg/recipe.sh new file mode 100644 index 00000000..fda7d87a --- /dev/null +++ b/recipes/libjpeg/recipe.sh @@ -0,0 +1,34 @@ +VERSION=9c +TAR=http://ijg.org/files/jpegsrc.v$VERSION.tar.gz + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + ./configure --host=${HOST} --prefix='/' + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} From 4a2b25527147cc3633a63f345aedde266e1d1bc3 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Fri, 23 Feb 2018 19:41:42 +0100 Subject: [PATCH 0338/3180] Cleanup netsurf patch, enable JPEG support --- recipes/netsurf/01_redox.patch | 349 +++++---------------------------- recipes/netsurf/recipe.sh | 3 +- 2 files changed, 46 insertions(+), 306 deletions(-) diff --git a/recipes/netsurf/01_redox.patch b/recipes/netsurf/01_redox.patch index 60136887..a3eae09e 100644 --- a/recipes/netsurf/01_redox.patch +++ b/recipes/netsurf/01_redox.patch @@ -1,7 +1,7 @@ -diff -rupN source-original/libnsfb/Makefile source/libnsfb/Makefile +diff -rupNw source-original/libnsfb/Makefile source/libnsfb/Makefile --- source-original/libnsfb/Makefile 2017-10-16 12:09:35.000000000 +0200 -+++ source/libnsfb/Makefile 2018-02-22 08:50:59.339914490 +0100 -@@ -43,12 +43,12 @@ endif ++++ source/libnsfb/Makefile 2018-02-23 14:45:29.000000000 +0100 +@@ -43,10 +43,10 @@ endif NSFB_XCB_PKG_NAMES := xcb xcb-icccm xcb-image xcb-keysyms xcb-atom # determine which surface handlers can be compiled based upon avalable library @@ -13,40 +13,11 @@ diff -rupN source-original/libnsfb/Makefile source/libnsfb/Makefile +#$(eval $(call pkg_config_package_available,NSFB_XCB_AVAILABLE,$(NSFB_XCB_PKG_NAMES))) +#$(eval $(call pkg_config_package_available,NSFB_WLD_AVAILABLE,wayland-client)) --# surfaces not detectable via pkg-config -+# surfaces not detectable via pkg-config + # surfaces not detectable via pkg-config NSFB_ABLE_AVAILABLE := no - ifeq ($(findstring linux,$(HOST)),linux) - NSFB_LINUX_AVAILABLE := yes -@@ -62,7 +62,7 @@ ifeq ($(NSFB_SDL_AVAILABLE),yes) - $(eval $(call pkg_config_package_add_flags,sdl,TESTCFLAGS,TESTLDFLAGS)) - - REQUIRED_PKGS := $(REQUIRED_PKGS) sdl --endif -+endif - - ifeq ($(NSFB_XCB_AVAILABLE),yes) - # Size hint allocators were removed in xcb-icccm 0.3.0 -@@ -107,14 +107,14 @@ ifeq ($(NSFB_VNC_AVAILABLE),yes) - $(eval $(call pkg_config_package_add_flags,libvncserver,TESTCFLAGS,TESTLDFLAGS)) - - REQUIRED_PKGS := $(REQUIRED_PKGS) libvncserver --endif -+endif - - ifeq ($(NSFB_WLD_AVAILABLE),yes) - $(eval $(call pkg_config_package_add_flags,wayland-client,CFLAGS)) - $(eval $(call pkg_config_package_add_flags,wayland-client,TESTCFLAGS,TESTLDFLAGS)) - - REQUIRED_PKGS := $(REQUIRED_PKGS) wayland-client --endif -+endif - - TESTLDFLAGS := -lm -Wl,--whole-archive -l$(COMPONENT) -Wl,--no-whole-archive $(TESTLDFLAGS) - -diff -rupN source-original/libnsfb/src/plot/32bpp-xbgr8888.c source/libnsfb/src/plot/32bpp-xbgr8888.c +diff -rupNw source-original/libnsfb/src/plot/32bpp-xbgr8888.c source/libnsfb/src/plot/32bpp-xbgr8888.c --- source-original/libnsfb/src/plot/32bpp-xbgr8888.c 2017-10-16 12:09:35.000000000 +0200 -+++ source/libnsfb/src/plot/32bpp-xbgr8888.c 2018-02-20 21:17:57.000000000 +0100 ++++ source/libnsfb/src/plot/32bpp-xbgr8888.c 2018-02-23 14:45:29.000000000 +0100 @@ -52,7 +52,7 @@ static inline nsfb_colour_t pixel_to_col */ static inline uint32_t colour_to_pixel(UNUSED nsfb_t *nsfb, nsfb_colour_t c) @@ -65,9 +36,9 @@ diff -rupN source-original/libnsfb/src/plot/32bpp-xbgr8888.c source/libnsfb/src/ } #endif -diff -rupN source-original/libnsfb/src/plot/32bpp-xrgb8888.c source/libnsfb/src/plot/32bpp-xrgb8888.c +diff -rupNw source-original/libnsfb/src/plot/32bpp-xrgb8888.c source/libnsfb/src/plot/32bpp-xrgb8888.c --- source-original/libnsfb/src/plot/32bpp-xrgb8888.c 2017-10-16 12:09:35.000000000 +0200 -+++ source/libnsfb/src/plot/32bpp-xrgb8888.c 2018-02-20 21:15:40.000000000 +0100 ++++ source/libnsfb/src/plot/32bpp-xrgb8888.c 2018-02-23 14:45:29.000000000 +0100 @@ -52,7 +52,7 @@ static inline nsfb_colour_t pixel_to_col */ static inline uint32_t colour_to_pixel(UNUSED nsfb_t *nsfb, nsfb_colour_t c) @@ -86,9 +57,9 @@ diff -rupN source-original/libnsfb/src/plot/32bpp-xrgb8888.c source/libnsfb/src/ } #endif -diff -rupN source-original/libnsfb/src/plot.h source/libnsfb/src/plot.h +diff -rupNw source-original/libnsfb/src/plot.h source/libnsfb/src/plot.h --- source-original/libnsfb/src/plot.h 2017-10-16 12:09:35.000000000 +0200 -+++ source/libnsfb/src/plot.h 2018-02-20 15:46:48.000000000 +0100 ++++ source/libnsfb/src/plot.h 2018-02-23 14:45:29.000000000 +0100 @@ -36,7 +36,7 @@ #define NSFB_BE_BYTE_ORDER #endif @@ -98,46 +69,9 @@ diff -rupN source-original/libnsfb/src/plot.h source/libnsfb/src/plot.h #if defined(__BYTE_ORDER__) #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ #define NSFB_BE_BYTE_ORDER -@@ -120,7 +120,7 @@ typedef bool (nsfb_plotfn_bitmap_t)(nsfb - typedef bool (nsfb_plotfn_bitmap_tiles_t)(nsfb_t *nsfb, const nsfb_bbox_t *loc, int tiles_x, int tiles_y, const nsfb_colour_t *pixel, int bmp_width, int bmp_height, int bmp_stride, bool alpha); - - --/** Copy an area of screen -+/** Copy an area of screen - * - * Copy an area of the display. - */ -diff -rupN source-original/libnsfb/src/surface/sdl.c source/libnsfb/src/surface/sdl.c +diff -rupNw source-original/libnsfb/src/surface/sdl.c source/libnsfb/src/surface/sdl.c --- source-original/libnsfb/src/surface/sdl.c 2017-10-16 12:09:35.000000000 +0200 -+++ source/libnsfb/src/surface/sdl.c 2018-02-20 20:59:42.000000000 +0100 -@@ -371,7 +371,7 @@ set_palette(nsfb_t *nsfb) - - } - --static bool -+static bool - sdlcopy(nsfb_t *nsfb, nsfb_bbox_t *srcbox, nsfb_bbox_t *dstbox) - { - SDL_Rect src; -@@ -393,15 +393,15 @@ sdlcopy(nsfb_t *nsfb, nsfb_bbox_t *srcbo - src.y = srcbox->y0; - src.w = srcbox->x1 - srcbox->x0; - src.h = srcbox->y1 - srcbox->y0; -- -+ - dst.x = dstbox->x0; - dst.y = dstbox->y0; - dst.w = dstbox->x1 - dstbox->x0; - dst.h = dstbox->y1 - dstbox->y0; -- -+ - SDL_BlitSurface(sdl_screen, &src, sdl_screen , &dst); - -- if ((cursor != NULL) && -+ if ((cursor != NULL) && - (cursor->plotted == false)) { - nsfb_cursor_plot(nsfb, cursor); - } ++++ source/libnsfb/src/surface/sdl.c 2018-02-23 14:45:29.000000000 +0100 @@ -458,7 +458,7 @@ static int sdl_initialise(nsfb_t *nsfb) return -1; @@ -147,15 +81,6 @@ diff -rupN source-original/libnsfb/src/surface/sdl.c source/libnsfb/src/surface/ fprintf(stderr, "Unable to init SDL: %s\n", SDL_GetError()); return -1; } -@@ -532,7 +532,7 @@ static uint32_t wakeeventtimer(uint32_t - event.user.code = 0; - event.user.data1 = 0; - event.user.data2 = 0; -- -+ - SDL_PushEvent(&event); - - return 0; @@ -545,23 +545,23 @@ static bool sdl_input(nsfb_t *nsfb, nsfb nsfb = nsfb; /* unused */ @@ -196,9 +121,9 @@ diff -rupN source-original/libnsfb/src/surface/sdl.c source/libnsfb/src/surface/ /* Do nothing if there was no event */ if (got_event == 0) { -diff -rupN source-original/libparserutils/src/input/filter.c source/libparserutils/src/input/filter.c +diff -rupNw source-original/libparserutils/src/input/filter.c source/libparserutils/src/input/filter.c --- source-original/libparserutils/src/input/filter.c 2017-10-16 12:09:36.000000000 +0200 -+++ source/libparserutils/src/input/filter.c 2018-02-21 16:50:43.449092236 +0100 ++++ source/libparserutils/src/input/filter.c 2018-02-23 14:45:29.000000000 +0100 @@ -10,7 +10,7 @@ #include #include @@ -244,46 +169,15 @@ diff -rupN source-original/libparserutils/src/input/filter.c source/libparseruti if (input->cd != (iconv_t) -1) { iconv_close(input->cd); input->cd = (iconv_t) -1; -@@ -184,8 +184,8 @@ parserutils_error parserutils__filter_pr +@@ -184,7 +184,7 @@ parserutils_error parserutils__filter_pr output == NULL || *output == NULL || outlen == NULL) return PARSERUTILS_BADPARM; -#ifndef WITHOUT_ICONV_FILTER -- if (iconv(input->cd, (void *) data, len, +#if 0 -+ if (iconv(input->cd, (void *) data, len, + if (iconv(input->cd, (void *) data, len, (char **) output, outlen) == (size_t) -1) { switch (errno) { - case E2BIG: -@@ -206,8 +206,8 @@ parserutils_error parserutils__filter_pr - - while (*len > 0) { - size_t ret; -- -- ret = iconv(input->cd, (void *) data, len, -+ -+ ret = iconv(input->cd, (void *) data, len, - (char **) output, outlen); - if (ret != (size_t) -1 || errno != EILSEQ) - break; -@@ -226,7 +226,7 @@ parserutils_error parserutils__filter_pr - (*len)--; - } - -- return errno == E2BIG ? PARSERUTILS_NOMEM -+ return errno == E2BIG ? PARSERUTILS_NOMEM - : PARSERUTILS_OK; - } - } -@@ -283,7 +283,7 @@ parserutils_error parserutils__filter_pr - } - } - -- if (read_error != PARSERUTILS_OK && -+ if (read_error != PARSERUTILS_OK && - read_error != PARSERUTILS_NOMEM) - return read_error; - } @@ -305,7 +305,7 @@ parserutils_error parserutils__filter_re if (input == NULL) return PARSERUTILS_BADPARM; @@ -311,9 +205,9 @@ diff -rupN source-original/libparserutils/src/input/filter.c source/libparseruti if (input->cd != (iconv_t) -1) { iconv_close(input->cd); input->cd = (iconv_t) -1; -diff -rupN source-original/netsurf/content/fetchers/file.c source/netsurf/content/fetchers/file.c +diff -rupNw source-original/netsurf/content/fetchers/file.c source/netsurf/content/fetchers/file.c --- source-original/netsurf/content/fetchers/file.c 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/content/fetchers/file.c 2018-02-20 16:09:13.000000000 +0100 ++++ source/netsurf/content/fetchers/file.c 2018-02-23 14:45:29.000000000 +0100 @@ -39,7 +39,7 @@ #include #include @@ -323,15 +217,6 @@ diff -rupN source-original/netsurf/content/fetchers/file.c source/netsurf/conten #include #endif #include -@@ -156,7 +156,7 @@ fetch_file_setup(struct fetch *fetchh, - - /* Scan request headers looking for If-None-Match */ - for (i = 0; headers[i] != NULL; i++) { -- if (strncasecmp(headers[i], "If-None-Match:", -+ if (strncasecmp(headers[i], "If-None-Match:", - SLEN("If-None-Match:")) == 0) { - /* If-None-Match: "12345678" */ - const char *d = headers[i] + SLEN("If-None-Match:"); @@ -262,7 +262,7 @@ fetch_file_process_error_aborted: static void fetch_file_process_plain(struct fetch_file_context *ctx, struct stat *fdstat) @@ -341,123 +226,9 @@ diff -rupN source-original/netsurf/content/fetchers/file.c source/netsurf/conten fetch_msg msg; char *buf = NULL; size_t buf_size; -@@ -309,7 +309,7 @@ static void fetch_file_process_plain(str - */ - - /* content type */ -- if (fetch_file_send_header(ctx, "Content-Type: %s", -+ if (fetch_file_send_header(ctx, "Content-Type: %s", - guit->fetch->filetype(ctx->path))) { - goto fetch_file_process_aborted; - } -@@ -392,7 +392,7 @@ fetch_file_process_aborted: - */ - - /* content type */ -- if (fetch_file_send_header(ctx, "Content-Type: %s", -+ if (fetch_file_send_header(ctx, "Content-Type: %s", - guit->fetch->filetype(ctx->path))) { - goto fetch_file_process_aborted; - } -@@ -404,7 +404,7 @@ fetch_file_process_aborted: - } - - /* create etag */ -- if (fetch_file_send_header(ctx, "ETag: \"%10" PRId64 "\"", -+ if (fetch_file_send_header(ctx, "ETag: \"%10" PRId64 "\"", - (int64_t) fdstat->st_mtime)) { - goto fetch_file_process_aborted; - } -diff -rupN source-original/netsurf/content/handlers/image/image.c source/netsurf/content/handlers/image/image.c ---- source-original/netsurf/content/handlers/image/image.c 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/content/handlers/image/image.c 2018-02-20 17:44:48.000000000 +0100 -@@ -31,10 +31,10 @@ - #include "image/gif.h" - #include "image/ico.h" - #include "image/jpeg.h" --#include "image/nssprite.h" -+//#include "image/nssprite.h" - #include "image/png.h" - #include "image/rsvg.h" --#include "image/svg.h" -+//#include "image/svg.h" - #include "image/image.h" - - /** -@@ -76,18 +76,18 @@ nserror image_init(void) - return error; - #endif - --#ifdef WITH_NSSPRITE -- error = nssprite_init(); -- if (error != NSERROR_OK) -- return error; --#endif -+//#ifdef WITH_NSSPRITE -+// error = nssprite_init(); -+// if (error != NSERROR_OK) -+// return error; -+//#endif - - /* Prefer rsvg over libsvgtiny for svgs */ --#ifdef WITH_NS_SVG -- error = svg_init(); -- if (error != NSERROR_OK) -- return error; --#endif -+//#ifdef WITH_NS_SVG -+// error = svg_init(); -+// if (error != NSERROR_OK) -+// return error; -+//#endif - #ifdef WITH_RSVG - error = nsrsvg_init(); - if (error != NSERROR_OK) -diff -rupN source-original/netsurf/content/handlers/image/Makefile source/netsurf/content/handlers/image/Makefile ---- source-original/netsurf/content/handlers/image/Makefile 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/content/handlers/image/Makefile 2018-02-20 16:13:56.000000000 +0100 -@@ -5,11 +5,11 @@ S_IMAGE_YES := image.c image_cache.c - S_IMAGE_NO := - S_IMAGE_$(NETSURF_USE_BMP) += bmp.c ico.c - S_IMAGE_$(NETSURF_USE_GIF) += gif.c --S_IMAGE_$(NETSURF_USE_JPEG) += jpeg.c --S_IMAGE_$(NETSURF_USE_ROSPRITE) += nssprite.c --S_IMAGE_$(NETSURF_USE_PNG) += png.c --S_IMAGE_$(NETSURF_USE_NSSVG) += svg.c --S_IMAGE_$(NETSURF_USE_RSVG) += rsvg.c --S_IMAGE_$(NETSURF_USE_VIDEO) += video.c -+#S_IMAGE_$(NETSURF_USE_JPEG) += jpeg.c -+#S_IMAGE_$(NETSURF_USE_ROSPRITE) += nssprite.c -+#S_IMAGE_$(NETSURF_USE_PNG) += png.c -+#S_IMAGE_$(NETSURF_USE_NSSVG) += svg.c -+#S_IMAGE_$(NETSURF_USE_RSVG) += rsvg.c -+#S_IMAGE_$(NETSURF_USE_VIDEO) += video.c - - S_IMAGE := $(S_IMAGE_YES) -diff -rupN source-original/netsurf/content/handlers/javascript/Makefile source/netsurf/content/handlers/javascript/Makefile ---- source-original/netsurf/content/handlers/javascript/Makefile 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/content/handlers/javascript/Makefile 2018-02-20 16:38:31.000000000 +0100 -@@ -6,13 +6,13 @@ - - S_JAVASCRIPT_BINDING:= - --ifeq ($(NETSURF_USE_DUKTAPE),YES) -+#ifeq ($(NETSURF_USE_DUKTAPE),YES) - # Duktape --include content/handlers/javascript/duktape/Makefile --else -+#include content/handlers/javascript/duktape/Makefile -+#else - # None - include content/handlers/javascript/none/Makefile --endif -+#endif - - # Fetcher for javascript scheme is always required - S_JAVASCRIPT += fetcher.c -diff -rupN source-original/netsurf/content/urldb.c source/netsurf/content/urldb.c +diff -rupNw source-original/netsurf/content/urldb.c source/netsurf/content/urldb.c --- source-original/netsurf/content/urldb.c 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/content/urldb.c 2018-02-20 16:42:25.000000000 +0100 ++++ source/netsurf/content/urldb.c 2018-02-23 14:45:29.000000000 +0100 @@ -630,7 +630,7 @@ static bool urldb__host_is_ip_address(co size_t host_len = strlen(host); const char *sane_host; @@ -476,59 +247,27 @@ diff -rupN source-original/netsurf/content/urldb.c source/netsurf/content/urldb. if ((host_len < 6) || (sane_host[0] != '[') || (sane_host[host_len - 1] != ']')) { -diff -rupN source-original/netsurf/Makefile source/netsurf/Makefile ---- source-original/netsurf/Makefile 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/Makefile 2018-02-20 16:59:05.000000000 +0100 -@@ -268,7 +268,7 @@ else - ifeq ($(origin GCCSDK_INSTALL_ENV),undefined) - PKG_CONFIG := pkg-config - else -- PKG_CONFIG := PKG_CONFIG_LIBDIR="$(GCCSDK_INSTALL_ENV)/lib/pkgconfig" pkg-config -+ PKG_CONFIG := PKG_CONFIG_LIBDIR="$(GCCSDK_INSTALL_ENV)/lib/pkgconfig" pkg-config - endif - - ifneq ($(origin GCCSDK_INSTALL_CROSSBIN),undefined) -@@ -280,7 +280,7 @@ else - ifeq ($(origin GCCSDK_INSTALL_ENV),undefined) - PKG_CONFIG := pkg-config - else -- PKG_CONFIG := PKG_CONFIG_LIBDIR="$(GCCSDK_INSTALL_ENV)/lib/pkgconfig" pkg-config -+ PKG_CONFIG := PKG_CONFIG_LIBDIR="$(GCCSDK_INSTALL_ENV)/lib/pkgconfig" pkg-config - endif - - ifneq ($(origin GCCSDK_INSTALL_CROSSBIN),undefined) -@@ -511,8 +511,8 @@ include Makefile.defaults - # Pull in the user configuration - -include Makefile.config - --# libraries enabled by feature switch without pkgconfig file --$(eval $(call feature_switch,JPEG,JPEG (libjpeg),-DWITH_JPEG,-ljpeg,-UWITH_JPEG,)) -+# libraries enabled by feature switch without pkgconfig file -+#$(eval $(call feature_switch,JPEG,JPEG (libjpeg),-DWITH_JPEG,-ljpeg,-UWITH_JPEG,)) - $(eval $(call feature_switch,HARU_PDF,PDF export (haru),-DWITH_PDF_EXPORT,-lhpdf -lpng,-UWITH_PDF_EXPORT,)) - $(eval $(call feature_switch,LIBICONV_PLUG,glibc internal iconv,-DLIBICONV_PLUG,,-ULIBICONV_PLUG,-liconv)) - $(eval $(call feature_switch,DUKTAPE,Javascript (Duktape),,,,,)) -@@ -529,7 +529,7 @@ LDFLAGS += -lz - # Optional libraries with pkgconfig - - # define additional CFLAGS and LDFLAGS requirements for pkg-configed libs --NETSURF_FEATURE_PNG_CFLAGS := -DWITH_PNG -+#NETSURF_FEATURE_PNG_CFLAGS := -DWITH_PNG - NETSURF_FEATURE_BMP_CFLAGS := -DWITH_BMP - NETSURF_FEATURE_GIF_CFLAGS := -DWITH_GIF - NETSURF_FEATURE_CURL_CFLAGS := -DWITH_CURL -@@ -552,7 +552,7 @@ else - endif - $(eval $(call pkg_config_find_and_add_enabled,OPENSSL,openssl,OpenSSL)) - --$(eval $(call pkg_config_find_and_add_enabled,PNG,libpng,PNG)) -+#$(eval $(call pkg_config_find_and_add_enabled,PNG,libpng,PNG)) - $(eval $(call pkg_config_find_and_add_enabled,BMP,libnsbmp,BMP)) - $(eval $(call pkg_config_find_and_add_enabled,GIF,libnsgif,GIF)) - $(eval $(call pkg_config_find_and_add_enabled,NSSVG,libsvgtiny,SVG)) -diff -rupN source-original/netsurf/utils/log.c source/netsurf/utils/log.c +diff -rupNw source-original/netsurf/Makefile.config source/netsurf/Makefile.config +--- source-original/netsurf/Makefile.config 1970-01-01 01:00:00.000000000 +0100 ++++ source/netsurf/Makefile.config 2018-02-23 18:29:19.624058579 +0100 +@@ -0,0 +1,14 @@ ++override NETSURF_HOMEPAGE := "https://www.redox-os.org/" ++override NETSURF_FB_FRONTEND := sdl ++ ++override NETSURF_USE_JPEG := YES ++override NETSURF_USE_BMP := YES ++override NETSURF_USE_OPENSSL := YES ++override NETSURF_USE_CURL := YES ++ ++override NETSURF_USE_PNG := NO ++override NETSURF_USE_NSSVG := NO ++override NETSURF_USE_RSVG := NO ++override NETSURF_USE_DUKTAPE := NO ++override NETSURF_USE_HARU_PDF := NO ++override NETSURF_USE_VIDEO := NO +diff -rupNw source-original/netsurf/utils/log.c source/netsurf/utils/log.c --- source-original/netsurf/utils/log.c 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/utils/log.c 2018-02-20 17:50:20.000000000 +0100 ++++ source/netsurf/utils/log.c 2018-02-23 14:45:29.000000000 +0100 @@ -261,18 +261,18 @@ nserror nslog_init(nslog_ensure_t *ensur /* sucessfull logging initialisation so log system info */ if (ret == NSERROR_OK) { @@ -558,9 +297,9 @@ diff -rupN source-original/netsurf/utils/log.c source/netsurf/utils/log.c } return ret; -diff -rupN source-original/netsurf/utils/useragent.c source/netsurf/utils/useragent.c +diff -rupNw source-original/netsurf/utils/useragent.c source/netsurf/utils/useragent.c --- source-original/netsurf/utils/useragent.c 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/utils/useragent.c 2018-02-20 17:50:51.000000000 +0100 ++++ source/netsurf/utils/useragent.c 2018-02-23 14:45:29.000000000 +0100 @@ -44,9 +44,9 @@ user_agent_build_string(void) char *ua_string; int len; @@ -574,9 +313,9 @@ diff -rupN source-original/netsurf/utils/useragent.c source/netsurf/utils/userag len = snprintf(NULL, 0, NETSURF_UA_FORMAT_STRING, netsurf_version_major, -diff -rupN source-original/netsurf/utils/utsname.h source/netsurf/utils/utsname.h +diff -rupNw source-original/netsurf/utils/utsname.h source/netsurf/utils/utsname.h --- source-original/netsurf/utils/utsname.h 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/utils/utsname.h 2018-02-20 16:46:22.000000000 +0100 ++++ source/netsurf/utils/utsname.h 2018-02-23 14:45:29.000000000 +0100 @@ -24,7 +24,7 @@ #ifndef _NETSURF_UTILS_UTSNAME_H_ #define _NETSURF_UTILS_UTSNAME_H_ diff --git a/recipes/netsurf/recipe.sh b/recipes/netsurf/recipe.sh index 1e348ee0..9cea3a33 100644 --- a/recipes/netsurf/recipe.sh +++ b/recipes/netsurf/recipe.sh @@ -1,6 +1,7 @@ VERSION=3.7 TAR=http://download.netsurf-browser.org/netsurf/releases/source-full/netsurf-all-$VERSION.tar.gz -BUILD_DEPENDS=(expat curl sdl openssl zlib) +BUILD_DEPENDS=(expat curl sdl openssl zlib libjpeg libpng) +DEPENDS="ca-certificates" export PKG_CONFIG_PATH= export PKG_CONFIG_LIBDIR="$PWD/sysroot/lib/pkgconfig" From c657f310aec5f52c9782389cdf7357a0b96158f4 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Sat, 24 Feb 2018 10:45:04 +0100 Subject: [PATCH 0339/3180] curl: Enable zlib support --- recipes/curl/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/curl/recipe.sh b/recipes/curl/recipe.sh index 6e1fa519..6e292418 100644 --- a/recipes/curl/recipe.sh +++ b/recipes/curl/recipe.sh @@ -1,6 +1,6 @@ TAR=https://curl.haxx.se/download/curl-7.55.1.tar.gz BRANCH=redox -BUILD_DEPENDS=(openssl) +BUILD_DEPENDS=(openssl zlib) DEPENDS="ca-certificates" function recipe_version { @@ -16,7 +16,7 @@ function recipe_update { function recipe_build { wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub autoreconf -i - ./configure --prefix=/ --host=${HOST} --disable-tftp --disable-ftp --disable-ntlm-wb --disable-threaded-resolver --with-ssl="$PWD/../sysroot" --with-ca-path=/ssl/certs + ./configure --prefix=/ --host=${HOST} --disable-tftp --disable-ftp --disable-ntlm-wb --disable-threaded-resolver --with-zlib="$PWD/../sysroot" --with-ssl="$PWD/../sysroot" --with-ca-path=/ssl/certs make skip=1 } From aa97201d7f7867669aef295f53d6c0853ce69734 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Mon, 26 Feb 2018 12:18:23 +0100 Subject: [PATCH 0340/3180] sdl: Implement SDL_RESIZABLE and SDL_WM_SetCaption Part of #126 --- recipes/sdl/01_orbital.patch | 332 ++++++++++++++++++++++++++++------- 1 file changed, 271 insertions(+), 61 deletions(-) diff --git a/recipes/sdl/01_orbital.patch b/recipes/sdl/01_orbital.patch index cedba208..489e751d 100644 --- a/recipes/sdl/01_orbital.patch +++ b/recipes/sdl/01_orbital.patch @@ -1,6 +1,6 @@ -diff -rupN source_original/build-scripts/config.sub source/build-scripts/config.sub ---- source_original/build-scripts/config.sub 2012-01-19 07:30:05.000000000 +0100 -+++ source/build-scripts/config.sub 2018-02-21 09:33:42.970275299 +0100 +diff -rupN source-original/build-scripts/config.sub source/build-scripts/config.sub +--- source-original/build-scripts/config.sub 2012-01-19 07:30:05.000000000 +0100 ++++ source/build-scripts/config.sub 2018-02-26 11:41:15.584206480 +0100 @@ -1276,7 +1276,7 @@ case $os in -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ @@ -10,9 +10,9 @@ diff -rupN source_original/build-scripts/config.sub source/build-scripts/config. | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ -diff -rupN source_original/configure.in source/configure.in ---- source_original/configure.in 2012-01-19 07:30:05.000000000 +0100 -+++ source/configure.in 2018-02-21 09:33:42.970275299 +0100 +diff -rupN source-original/configure.in source/configure.in +--- source-original/configure.in 2012-01-19 07:30:05.000000000 +0100 ++++ source/configure.in 2018-02-26 11:41:15.596206742 +0100 @@ -1646,6 +1646,19 @@ AC_HELP_STRING([--enable-video-dummy], [ fi } @@ -54,9 +54,9 @@ diff -rupN source_original/configure.in source/configure.in CheckDiskAudio CheckDummyAudio CheckDLOPEN -diff -rupN source_original/include/SDL_config.h.in source/include/SDL_config.h.in ---- source_original/include/SDL_config.h.in 2012-01-19 07:30:05.000000000 +0100 -+++ source/include/SDL_config.h.in 2018-02-21 09:33:43.110276438 +0100 +diff -rupN source-original/include/SDL_config.h.in source/include/SDL_config.h.in +--- source-original/include/SDL_config.h.in 2012-01-19 07:30:05.000000000 +0100 ++++ source/include/SDL_config.h.in 2018-02-26 11:41:15.596206742 +0100 @@ -268,6 +268,7 @@ #undef SDL_VIDEO_DRIVER_GGI #undef SDL_VIDEO_DRIVER_IPOD @@ -65,10 +65,10 @@ diff -rupN source_original/include/SDL_config.h.in source/include/SDL_config.h.i #undef SDL_VIDEO_DRIVER_OS2FS #undef SDL_VIDEO_DRIVER_PHOTON #undef SDL_VIDEO_DRIVER_PICOGUI -diff -rupN source_original/src/video/orbital/SDL_orbitalevents.c source/src/video/orbital/SDL_orbitalevents.c ---- source_original/src/video/orbital/SDL_orbitalevents.c 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalevents.c 2018-02-22 15:03:58.808696217 +0100 -@@ -0,0 +1,188 @@ +diff -rupN source-original/src/video/orbital/SDL_orbitalevents.c source/src/video/orbital/SDL_orbitalevents.c +--- source-original/src/video/orbital/SDL_orbitalevents.c 1970-01-01 01:00:00.000000000 +0100 ++++ source/src/video/orbital/SDL_orbitalevents.c 2018-02-26 11:45:59.446509075 +0100 +@@ -0,0 +1,190 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -163,6 +163,8 @@ diff -rupN source_original/src/video/orbital/SDL_orbitalevents.c source/src/vide + SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_WHEELDOWN, 0, 0); + SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_WHEELDOWN, 0, 0); + } ++ } else if ( event.code == EVENT_RESIZE ) { ++ SDL_PrivateResize(event.a, event.b); + } else if ( event.code == EVENT_QUIT ) { + SDL_PrivateQuit(); + } @@ -257,9 +259,9 @@ diff -rupN source_original/src/video/orbital/SDL_orbitalevents.c source/src/vide +} + +/* end of SDL_orbitalevents.c ... */ -diff -rupN source_original/src/video/orbital/SDL_orbitalevents_c.h source/src/video/orbital/SDL_orbitalevents_c.h ---- source_original/src/video/orbital/SDL_orbitalevents_c.h 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalevents_c.h 2018-02-21 09:33:43.238277480 +0100 +diff -rupN source-original/src/video/orbital/SDL_orbitalevents_c.h source/src/video/orbital/SDL_orbitalevents_c.h +--- source-original/src/video/orbital/SDL_orbitalevents_c.h 1970-01-01 01:00:00.000000000 +0100 ++++ source/src/video/orbital/SDL_orbitalevents_c.h 2018-02-26 11:41:15.600206830 +0100 @@ -0,0 +1,32 @@ +/* + SDL - Simple DirectMedia Layer @@ -293,9 +295,9 @@ diff -rupN source_original/src/video/orbital/SDL_orbitalevents_c.h source/src/vi +extern void ORBITAL_PumpEvents(_THIS); + +/* end of SDL_orbitalevents_c.h ... */ -diff -rupN source_original/src/video/orbital/SDL_orbitalmouse.c source/src/video/orbital/SDL_orbitalmouse.c ---- source_original/src/video/orbital/SDL_orbitalmouse.c 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalmouse.c 2018-02-21 09:33:43.238277480 +0100 +diff -rupN source-original/src/video/orbital/SDL_orbitalmouse.c source/src/video/orbital/SDL_orbitalmouse.c +--- source-original/src/video/orbital/SDL_orbitalmouse.c 1970-01-01 01:00:00.000000000 +0100 ++++ source/src/video/orbital/SDL_orbitalmouse.c 2018-02-26 11:41:15.600206830 +0100 @@ -0,0 +1,33 @@ +/* + SDL - Simple DirectMedia Layer @@ -330,9 +332,9 @@ diff -rupN source_original/src/video/orbital/SDL_orbitalmouse.c source/src/video +struct WMcursor { + int unused; +}; -diff -rupN source_original/src/video/orbital/SDL_orbitalmouse_c.h source/src/video/orbital/SDL_orbitalmouse_c.h ---- source_original/src/video/orbital/SDL_orbitalmouse_c.h 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalmouse_c.h 2018-02-21 09:33:43.238277480 +0100 +diff -rupN source-original/src/video/orbital/SDL_orbitalmouse_c.h source/src/video/orbital/SDL_orbitalmouse_c.h +--- source-original/src/video/orbital/SDL_orbitalmouse_c.h 1970-01-01 01:00:00.000000000 +0100 ++++ source/src/video/orbital/SDL_orbitalmouse_c.h 2018-02-26 11:41:15.600206830 +0100 @@ -0,0 +1,26 @@ +/* + SDL - Simple DirectMedia Layer @@ -360,9 +362,9 @@ diff -rupN source_original/src/video/orbital/SDL_orbitalmouse_c.h source/src/vid +#include "SDL_orbitalvideo.h" + +/* Functions to be exported */ -diff -rupN source_original/src/video/orbital/SDL_orbitalscancode.h source/src/video/orbital/SDL_orbitalscancode.h ---- source_original/src/video/orbital/SDL_orbitalscancode.h 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalscancode.h 2018-02-21 09:33:43.238277480 +0100 +diff -rupN source-original/src/video/orbital/SDL_orbitalscancode.h source/src/video/orbital/SDL_orbitalscancode.h +--- source-original/src/video/orbital/SDL_orbitalscancode.h 1970-01-01 01:00:00.000000000 +0100 ++++ source/src/video/orbital/SDL_orbitalscancode.h 2018-02-26 11:41:15.600206830 +0100 @@ -0,0 +1,80 @@ +#define SCANCODE_A 0x1E +#define SCANCODE_B 0x30 @@ -444,10 +446,10 @@ diff -rupN source_original/src/video/orbital/SDL_orbitalscancode.h source/src/vi +#define SCANCODE_COMMA 0x33 +#define SCANCODE_PERIOD 0x34 +#define SCANCODE_SLASH 0x35 -diff -rupN source_original/src/video/orbital/SDL_orbitalvideo.c source/src/video/orbital/SDL_orbitalvideo.c ---- source_original/src/video/orbital/SDL_orbitalvideo.c 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalvideo.c 2018-02-21 09:33:43.266277708 +0100 -@@ -0,0 +1,266 @@ +diff -rupN source-original/src/video/orbital/SDL_orbitalvideo.c source/src/video/orbital/SDL_orbitalvideo.c +--- source-original/src/video/orbital/SDL_orbitalvideo.c 1970-01-01 01:00:00.000000000 +0100 ++++ source/src/video/orbital/SDL_orbitalvideo.c 2018-02-26 11:50:02.769667936 +0100 +@@ -0,0 +1,287 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -503,6 +505,7 @@ diff -rupN source_original/src/video/orbital/SDL_orbitalvideo.c source/src/video +static SDL_Surface *ORBITAL_SetVideoMode(_THIS, SDL_Surface *current, int width, int height, int bpp, Uint32 flags); +static int ORBITAL_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors); +static void ORBITAL_VideoQuit(_THIS); ++static void ORBITAL_SetCaption(_THIS, const char *title, const char *icon); + +/* Hardware surface functions */ +static int ORBITAL_AllocHWSurface(_THIS, SDL_Surface *surface); @@ -563,7 +566,7 @@ diff -rupN source_original/src/video/orbital/SDL_orbitalvideo.c source/src/video + device->UnlockHWSurface = ORBITAL_UnlockHWSurface; + device->FlipHWSurface = NULL; + device->FreeHWSurface = ORBITAL_FreeHWSurface; -+ device->SetCaption = NULL; ++ device->SetCaption = ORBITAL_SetCaption; + device->SetIcon = NULL; + device->IconifyWindow = NULL; + device->GrabInput = NULL; @@ -608,50 +611,58 @@ diff -rupN source_original/src/video/orbital/SDL_orbitalvideo.c source/src/video + return(NULL); + } + -+ if ( this->hidden->fd ) { -+ close( this->hidden->fd ); -+ this->hidden->fd = 0; -+ } -+ + if ( this->hidden->buffer ) { + redox_funmap( this->hidden->buffer ); + this->hidden->buffer = NULL; + } + -+ char path[4096]; -+ snprintf(path, 4096, "orbital:a/-1/-1/%d/%d/SDL", width, height); -+ this->hidden->fd = open(path, O_RDWR); -+ if ( this->hidden->fd <= 0 ) { -+ this->hidden->fd = 0; -+ SDL_SetError("Couldn't create window for requested mode"); -+ return(NULL); ++ if ( this->hidden->fd > 0 ) { ++ /* If the window already exists send a resize message to the display server */ ++ char msg[4096]; ++ int msg_len = snprintf(msg, 4096, "S,%d,%d", width, height); ++ int res = write(this->hidden->fd, msg, msg_len); ++ if ( res != msg_len ) { ++ close(this->hidden->fd); ++ this->hidden->fd = 0; ++ SDL_SetError("Couldn't write resize event"); ++ return(NULL); ++ } ++ } else { ++ /* Otherwise create a new window */ ++ char path[4096]; ++ snprintf(path, 4096, "orbital:a%s/-1/-1/%d/%d/SDL", (flags & SDL_RESIZABLE) ? "r" : "", width, height); ++ this->hidden->fd = open(path, O_RDWR); ++ if ( this->hidden->fd <= 0 ) { ++ this->hidden->fd = 0; ++ SDL_SetError("Couldn't create window for requested mode"); ++ return(NULL); ++ } ++ printf("%s at %d\n", path, this->hidden->fd); + } -+ printf("%s at %d\n", path, this->hidden->fd); + + this->hidden->buffer = redox_fmap(this->hidden->fd, 0, width * height * (bpp / 8)); + if ( ! this->hidden->buffer ) { + close(this->hidden->fd); -+ this->hidden->fd = 0; ++ this->hidden->fd = 0; + SDL_SetError("Couldn't map window for requested mode"); + return(NULL); + } + -+ printf("Setting mode %dx%d@%d\n", width, height, bpp); -+ -+ SDL_memset(this->hidden->buffer, 0, width * height * (bpp / 8)); ++ fprintf(stderr, "Setting mode %dx%d@%d\n", width, height, bpp); + + /* Allocate the new pixel format for the screen */ ++ + if ( ! SDL_ReallocFormat(current, bpp, 0, 0, 0, 0) ) { + redox_funmap(this->hidden->buffer); + this->hidden->buffer = NULL; + close(this->hidden->fd); -+ this->hidden->fd = 0; ++ this->hidden->fd = 0; + SDL_SetError("Couldn't allocate new pixel format for requested mode"); + return(NULL); + } + + /* Set up the new mode framebuffer */ -+ current->flags = flags & SDL_FULLSCREEN; ++ current->flags = flags /*& SDL_FULLSCREEN*/; + this->hidden->w = current->w = width; + this->hidden->h = current->h = height; + current->pitch = current->w * (bpp / 8); @@ -661,6 +672,18 @@ diff -rupN source_original/src/video/orbital/SDL_orbitalvideo.c source/src/video + return(current); +} + ++static void ORBITAL_SetCaption(_THIS, const char *title, const char *icon) ++{ ++ if ( this->hidden->fd > 0 ) { ++ char msg[4096]; ++ int msg_len = snprintf(msg, 4096, "T,%s", title); ++ int res = write(this->hidden->fd, msg, msg_len); ++ if ( res != msg_len ) { ++ SDL_SetError("Couldn't set window caption (write error)"); ++ } ++ } ++} ++ +/* We don't actually allow hardware surfaces other than the main one */ +static int ORBITAL_AllocHWSurface(_THIS, SDL_Surface *surface) +{ @@ -714,9 +737,9 @@ diff -rupN source_original/src/video/orbital/SDL_orbitalvideo.c source/src/video + this->screen->pixels = NULL; + } +} -diff -rupN source_original/src/video/orbital/SDL_orbitalvideo.h source/src/video/orbital/SDL_orbitalvideo.h ---- source_original/src/video/orbital/SDL_orbitalvideo.h 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalvideo.h 2018-02-21 09:33:43.266277708 +0100 +diff -rupN source-original/src/video/orbital/SDL_orbitalvideo.h source/src/video/orbital/SDL_orbitalvideo.h +--- source-original/src/video/orbital/SDL_orbitalvideo.h 1970-01-01 01:00:00.000000000 +0100 ++++ source/src/video/orbital/SDL_orbitalvideo.h 2018-02-26 11:41:15.600206830 +0100 @@ -0,0 +1,41 @@ +/* + SDL - Simple DirectMedia Layer @@ -759,9 +782,9 @@ diff -rupN source_original/src/video/orbital/SDL_orbitalvideo.h source/src/video +}; + +#endif /* _SDL_orbitalvideo_h */ -diff -rupN source_original/src/video/SDL_gamma.c source/src/video/SDL_gamma.c ---- source_original/src/video/SDL_gamma.c 2012-01-19 07:30:06.000000000 +0100 -+++ source/src/video/SDL_gamma.c 2018-02-20 20:51:31.151824659 +0100 +diff -rupN source-original/src/video/SDL_gamma.c source/src/video/SDL_gamma.c +--- source-original/src/video/SDL_gamma.c 2012-01-19 07:30:06.000000000 +0100 ++++ source/src/video/SDL_gamma.c 2018-02-26 11:41:15.600206830 +0100 @@ -23,9 +23,9 @@ /* Gamma correction support */ @@ -829,9 +852,9 @@ diff -rupN source_original/src/video/SDL_gamma.c source/src/video/SDL_gamma.c /* Lazily allocate the gamma table */ if ( ! video->gamma ) { -diff -rupN source_original/src/video/SDL_sysvideo.h source/src/video/SDL_sysvideo.h ---- source_original/src/video/SDL_sysvideo.h 2012-01-19 07:30:06.000000000 +0100 -+++ source/src/video/SDL_sysvideo.h 2018-02-21 09:33:43.266277708 +0100 +diff -rupN source-original/src/video/SDL_sysvideo.h source/src/video/SDL_sysvideo.h +--- source-original/src/video/SDL_sysvideo.h 2012-01-19 07:30:06.000000000 +0100 ++++ source/src/video/SDL_sysvideo.h 2018-02-26 11:41:15.604206916 +0100 @@ -410,6 +410,9 @@ extern VideoBootStrap AALIB_bootstrap; #if SDL_VIDEO_DRIVER_CACA extern VideoBootStrap CACA_bootstrap; @@ -842,9 +865,9 @@ diff -rupN source_original/src/video/SDL_sysvideo.h source/src/video/SDL_sysvide #if SDL_VIDEO_DRIVER_DUMMY extern VideoBootStrap DUMMY_bootstrap; #endif -diff -rupN source_original/src/video/SDL_video.c source/src/video/SDL_video.c ---- source_original/src/video/SDL_video.c 2012-01-19 07:30:06.000000000 +0100 -+++ source/src/video/SDL_video.c 2018-02-21 09:33:43.350278392 +0100 +diff -rupN source-original/src/video/SDL_video.c source/src/video/SDL_video.c +--- source-original/src/video/SDL_video.c 2012-01-19 07:30:06.000000000 +0100 ++++ source/src/video/SDL_video.c 2018-02-26 11:44:58.717146828 +0100 @@ -126,6 +126,9 @@ static VideoBootStrap *bootstrap[] = { #if SDL_VIDEO_DRIVER_CACA &CACA_bootstrap, @@ -855,3 +878,190 @@ diff -rupN source_original/src/video/SDL_video.c source/src/video/SDL_video.c #if SDL_VIDEO_DRIVER_DUMMY &DUMMY_bootstrap, #endif +@@ -217,7 +220,7 @@ int SDL_VideoInit (const char *driver_na + video->offset_x = 0; + video->offset_y = 0; + SDL_memset(&video->info, 0, (sizeof video->info)); +- ++ + video->displayformatalphapixel = NULL; + + /* Set some very sane GL defaults */ +@@ -240,7 +243,7 @@ int SDL_VideoInit (const char *driver_na + video->gl_config.multisamplesamples = 0; + video->gl_config.accelerated = -1; /* not known, don't set */ + video->gl_config.swap_control = -1; /* not known, don't set */ +- ++ + /* Initialize the video subsystem */ + SDL_memset(&vformat, 0, sizeof(vformat)); + if ( video->VideoInit(video, &vformat) < 0 ) { +@@ -397,7 +400,7 @@ int SDL_VideoModeOK (int width, int heig + if ( sizes == (SDL_Rect **)0 ) { + /* No sizes supported at this bit-depth */ + continue; +- } else ++ } else + if (sizes == (SDL_Rect **)NEGATIVE_ONE) { + /* Any size supported at this bit-depth */ + supported = 1; +@@ -726,7 +729,8 @@ SDL_Surface * SDL_SetVideoMode (int widt + video->offset_y = 0; + mode->offset = 0; + SDL_SetClipRect(mode, NULL); +- SDL_ClearSurface(mode); ++ // Causes blinking under Orbital ++ //SDL_ClearSurface(mode); + + /* Now adjust the offsets to match the desired mode */ + video->offset_x = (mode->w-width)/2; +@@ -788,7 +792,7 @@ SDL_Surface * SDL_SetVideoMode (int widt + #endif /* __SDL_NOGETPROCADDR__ */ + + #include "SDL_glfuncs.h" +-#undef SDL_PROC ++#undef SDL_PROC + } + #endif /* SDL_VIDEO_OPENGL */ + +@@ -817,9 +821,9 @@ SDL_Surface * SDL_SetVideoMode (int widt + ) { + video->is_32bit = 0; + SDL_VideoSurface = SDL_CreateRGBSurface( +- flags, +- width, +- height, ++ flags, ++ width, ++ height, + 16, + 31 << 11, + 63 << 5, +@@ -832,10 +836,10 @@ SDL_Surface * SDL_SetVideoMode (int widt + { + video->is_32bit = 1; + SDL_VideoSurface = SDL_CreateRGBSurface( +- flags, +- width, +- height, +- 32, ++ flags, ++ width, ++ height, ++ 32, + #if SDL_BYTEORDER == SDL_LIL_ENDIAN + 0x000000FF, + 0x0000FF00, +@@ -893,7 +897,7 @@ SDL_Surface * SDL_SetVideoMode (int widt + ( + ( !(flags&SDL_ANYFORMAT) && + (SDL_VideoSurface->format->BitsPerPixel != bpp)) || +- ( (flags&SDL_HWPALETTE) && ++ ( (flags&SDL_HWPALETTE) && + !(SDL_VideoSurface->flags&SDL_HWPALETTE)) || + /* If the surface is in hardware, video writes are visible + as soon as they are performed, so we need to buffer them +@@ -921,7 +925,7 @@ SDL_Surface * SDL_SetVideoMode (int widt + return(SDL_PublicSurface); + } + +-/* ++/* + * Convert a surface into the video pixel format. + */ + SDL_Surface * SDL_DisplayFormat (SDL_Surface *surface) +@@ -935,7 +939,7 @@ SDL_Surface * SDL_DisplayFormat (SDL_Sur + /* Set the flags appropriate for copying to display surface */ + if (((SDL_PublicSurface->flags&SDL_HWSURFACE) == SDL_HWSURFACE) && current_video->info.blit_hw) + flags = SDL_HWSURFACE; +- else ++ else + flags = SDL_SWSURFACE; + #ifdef AUTORLE_DISPLAYFORMAT + flags |= (surface->flags & (SDL_SRCCOLORKEY|SDL_SRCALPHA)); +@@ -1063,14 +1067,14 @@ void SDL_UpdateRects (SDL_Surface *scree + SDL_LockCursor(); + SDL_DrawCursor(SDL_ShadowSurface); + for ( i=0; i 256 ) + update.h = 256; +- ++ + this->glFlush(); +- this->glTexSubImage2D( +- GL_TEXTURE_2D, +- 0, +- 0, +- 0, +- update.w, +- update.h, ++ this->glTexSubImage2D( ++ GL_TEXTURE_2D, ++ 0, ++ 0, ++ 0, ++ update.w, ++ update.h, + this->is_32bit? GL_RGBA : GL_RGB, + #ifdef GL_VERSION_1_2 + this->is_32bit ? GL_UNSIGNED_BYTE : GL_UNSIGNED_SHORT_5_6_5, + #else + GL_UNSIGNED_BYTE, + #endif +- (Uint8 *)this->screen->pixels + +- this->screen->format->BytesPerPixel * update.x + ++ (Uint8 *)this->screen->pixels + ++ this->screen->format->BytesPerPixel * update.x + + update.y * this->screen->pitch ); +- ++ + this->glFlush(); + /* + * Note the parens around the function name: +- * This is because some OpenGL implementations define glTexCoord etc ++ * This is because some OpenGL implementations define glTexCoord etc + * as macros, and we don't want them expanded here. + */ + this->glBegin(GL_TRIANGLE_STRIP); +- (this->glTexCoord2f)( 0.0, 0.0 ); ++ (this->glTexCoord2f)( 0.0, 0.0 ); + (this->glVertex2i)( update.x, update.y ); +- (this->glTexCoord2f)( (float)(update.w / 256.0), 0.0 ); ++ (this->glTexCoord2f)( (float)(update.w / 256.0), 0.0 ); + (this->glVertex2i)( update.x + update.w, update.y ); + (this->glTexCoord2f)( 0.0, (float)(update.h / 256.0) ); + (this->glVertex2i)( update.x, update.y + update.h ); +- (this->glTexCoord2f)( (float)(update.w / 256.0), (float)(update.h / 256.0) ); ++ (this->glTexCoord2f)( (float)(update.w / 256.0), (float)(update.h / 256.0) ); + (this->glVertex2i)( update.x + update.w , update.y + update.h ); +- this->glEnd(); +- ++ this->glEnd(); ++ + tmp.x += 256; + tmp.w -= 256; + } +@@ -1641,7 +1645,7 @@ void SDL_GL_Lock() + this->glDisable(GL_FOG); + this->glDisable(GL_ALPHA_TEST); + this->glDisable(GL_DEPTH_TEST); +- this->glDisable(GL_SCISSOR_TEST); ++ this->glDisable(GL_SCISSOR_TEST); + this->glDisable(GL_STENCIL_TEST); + this->glDisable(GL_CULL_FACE); + From acdf34e36421dc415c1bba1c5201607f98649fc8 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Mon, 26 Feb 2018 19:58:47 +0100 Subject: [PATCH 0341/3180] sdl: Fix page fault on SDL_Quit Do not free the pixel buffer after it's unmapped. Part of #126 --- recipes/sdl/01_orbital.patch | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/recipes/sdl/01_orbital.patch b/recipes/sdl/01_orbital.patch index 489e751d..cec30320 100644 --- a/recipes/sdl/01_orbital.patch +++ b/recipes/sdl/01_orbital.patch @@ -1,6 +1,6 @@ diff -rupN source-original/build-scripts/config.sub source/build-scripts/config.sub --- source-original/build-scripts/config.sub 2012-01-19 07:30:05.000000000 +0100 -+++ source/build-scripts/config.sub 2018-02-26 11:41:15.584206480 +0100 ++++ source/build-scripts/config.sub 2018-02-26 19:43:01.954278409 +0100 @@ -1276,7 +1276,7 @@ case $os in -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ @@ -12,7 +12,7 @@ diff -rupN source-original/build-scripts/config.sub source/build-scripts/config. | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ diff -rupN source-original/configure.in source/configure.in --- source-original/configure.in 2012-01-19 07:30:05.000000000 +0100 -+++ source/configure.in 2018-02-26 11:41:15.596206742 +0100 ++++ source/configure.in 2018-02-26 19:43:01.954278409 +0100 @@ -1646,6 +1646,19 @@ AC_HELP_STRING([--enable-video-dummy], [ fi } @@ -56,7 +56,7 @@ diff -rupN source-original/configure.in source/configure.in CheckDLOPEN diff -rupN source-original/include/SDL_config.h.in source/include/SDL_config.h.in --- source-original/include/SDL_config.h.in 2012-01-19 07:30:05.000000000 +0100 -+++ source/include/SDL_config.h.in 2018-02-26 11:41:15.596206742 +0100 ++++ source/include/SDL_config.h.in 2018-02-26 19:43:01.954278409 +0100 @@ -268,6 +268,7 @@ #undef SDL_VIDEO_DRIVER_GGI #undef SDL_VIDEO_DRIVER_IPOD @@ -67,7 +67,7 @@ diff -rupN source-original/include/SDL_config.h.in source/include/SDL_config.h.i #undef SDL_VIDEO_DRIVER_PICOGUI diff -rupN source-original/src/video/orbital/SDL_orbitalevents.c source/src/video/orbital/SDL_orbitalevents.c --- source-original/src/video/orbital/SDL_orbitalevents.c 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalevents.c 2018-02-26 11:45:59.446509075 +0100 ++++ source/src/video/orbital/SDL_orbitalevents.c 2018-02-26 19:43:01.998278827 +0100 @@ -0,0 +1,190 @@ +/* + SDL - Simple DirectMedia Layer @@ -261,7 +261,7 @@ diff -rupN source-original/src/video/orbital/SDL_orbitalevents.c source/src/vide +/* end of SDL_orbitalevents.c ... */ diff -rupN source-original/src/video/orbital/SDL_orbitalevents_c.h source/src/video/orbital/SDL_orbitalevents_c.h --- source-original/src/video/orbital/SDL_orbitalevents_c.h 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalevents_c.h 2018-02-26 11:41:15.600206830 +0100 ++++ source/src/video/orbital/SDL_orbitalevents_c.h 2018-02-26 19:43:01.998278827 +0100 @@ -0,0 +1,32 @@ +/* + SDL - Simple DirectMedia Layer @@ -297,7 +297,7 @@ diff -rupN source-original/src/video/orbital/SDL_orbitalevents_c.h source/src/vi +/* end of SDL_orbitalevents_c.h ... */ diff -rupN source-original/src/video/orbital/SDL_orbitalmouse.c source/src/video/orbital/SDL_orbitalmouse.c --- source-original/src/video/orbital/SDL_orbitalmouse.c 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalmouse.c 2018-02-26 11:41:15.600206830 +0100 ++++ source/src/video/orbital/SDL_orbitalmouse.c 2018-02-26 19:43:01.998278827 +0100 @@ -0,0 +1,33 @@ +/* + SDL - Simple DirectMedia Layer @@ -334,7 +334,7 @@ diff -rupN source-original/src/video/orbital/SDL_orbitalmouse.c source/src/video +}; diff -rupN source-original/src/video/orbital/SDL_orbitalmouse_c.h source/src/video/orbital/SDL_orbitalmouse_c.h --- source-original/src/video/orbital/SDL_orbitalmouse_c.h 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalmouse_c.h 2018-02-26 11:41:15.600206830 +0100 ++++ source/src/video/orbital/SDL_orbitalmouse_c.h 2018-02-26 19:43:01.998278827 +0100 @@ -0,0 +1,26 @@ +/* + SDL - Simple DirectMedia Layer @@ -364,7 +364,7 @@ diff -rupN source-original/src/video/orbital/SDL_orbitalmouse_c.h source/src/vid +/* Functions to be exported */ diff -rupN source-original/src/video/orbital/SDL_orbitalscancode.h source/src/video/orbital/SDL_orbitalscancode.h --- source-original/src/video/orbital/SDL_orbitalscancode.h 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalscancode.h 2018-02-26 11:41:15.600206830 +0100 ++++ source/src/video/orbital/SDL_orbitalscancode.h 2018-02-26 19:43:02.002278865 +0100 @@ -0,0 +1,80 @@ +#define SCANCODE_A 0x1E +#define SCANCODE_B 0x30 @@ -448,8 +448,8 @@ diff -rupN source-original/src/video/orbital/SDL_orbitalscancode.h source/src/vi +#define SCANCODE_SLASH 0x35 diff -rupN source-original/src/video/orbital/SDL_orbitalvideo.c source/src/video/orbital/SDL_orbitalvideo.c --- source-original/src/video/orbital/SDL_orbitalvideo.c 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalvideo.c 2018-02-26 11:50:02.769667936 +0100 -@@ -0,0 +1,287 @@ ++++ source/src/video/orbital/SDL_orbitalvideo.c 2018-02-26 19:43:37.246613507 +0100 +@@ -0,0 +1,282 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -724,22 +724,17 @@ diff -rupN source-original/src/video/orbital/SDL_orbitalvideo.c source/src/video + if ( this->hidden->buffer ) { + redox_funmap( this->hidden->buffer ); + this->hidden->buffer = NULL; ++ this->screen->pixels = NULL; + } + + if ( this->hidden->fd >= 0) { + close( this->hidden->fd ); + this->hidden->fd = 0; + } -+ -+ if (this->screen->pixels != NULL) -+ { -+ SDL_free(this->screen->pixels); -+ this->screen->pixels = NULL; -+ } +} diff -rupN source-original/src/video/orbital/SDL_orbitalvideo.h source/src/video/orbital/SDL_orbitalvideo.h --- source-original/src/video/orbital/SDL_orbitalvideo.h 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalvideo.h 2018-02-26 11:41:15.600206830 +0100 ++++ source/src/video/orbital/SDL_orbitalvideo.h 2018-02-26 19:43:02.002278865 +0100 @@ -0,0 +1,41 @@ +/* + SDL - Simple DirectMedia Layer @@ -784,7 +779,7 @@ diff -rupN source-original/src/video/orbital/SDL_orbitalvideo.h source/src/video +#endif /* _SDL_orbitalvideo_h */ diff -rupN source-original/src/video/SDL_gamma.c source/src/video/SDL_gamma.c --- source-original/src/video/SDL_gamma.c 2012-01-19 07:30:06.000000000 +0100 -+++ source/src/video/SDL_gamma.c 2018-02-26 11:41:15.600206830 +0100 ++++ source/src/video/SDL_gamma.c 2018-02-26 19:43:02.002278865 +0100 @@ -23,9 +23,9 @@ /* Gamma correction support */ @@ -854,7 +849,7 @@ diff -rupN source-original/src/video/SDL_gamma.c source/src/video/SDL_gamma.c if ( ! video->gamma ) { diff -rupN source-original/src/video/SDL_sysvideo.h source/src/video/SDL_sysvideo.h --- source-original/src/video/SDL_sysvideo.h 2012-01-19 07:30:06.000000000 +0100 -+++ source/src/video/SDL_sysvideo.h 2018-02-26 11:41:15.604206916 +0100 ++++ source/src/video/SDL_sysvideo.h 2018-02-26 19:43:02.002278865 +0100 @@ -410,6 +410,9 @@ extern VideoBootStrap AALIB_bootstrap; #if SDL_VIDEO_DRIVER_CACA extern VideoBootStrap CACA_bootstrap; @@ -867,7 +862,7 @@ diff -rupN source-original/src/video/SDL_sysvideo.h source/src/video/SDL_sysvide #endif diff -rupN source-original/src/video/SDL_video.c source/src/video/SDL_video.c --- source-original/src/video/SDL_video.c 2012-01-19 07:30:06.000000000 +0100 -+++ source/src/video/SDL_video.c 2018-02-26 11:44:58.717146828 +0100 ++++ source/src/video/SDL_video.c 2018-02-26 19:43:02.002278865 +0100 @@ -126,6 +126,9 @@ static VideoBootStrap *bootstrap[] = { #if SDL_VIDEO_DRIVER_CACA &CACA_bootstrap, From a1d531d79bd5d07b3503da8747f4c68f53419f56 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 27 Feb 2018 20:59:13 -0700 Subject: [PATCH 0342/3180] Fixes for pkg-config. Add libpng to netsurf --- bin/x86_64-unknown-redox-pkg-config | 7 + config.sh | 1 + cook.sh | 13 +- recipes/netsurf/01_redox.patch | 74 +++---- recipes/netsurf/recipe.sh | 6 +- recipes/sdl/01_orbital.patch | 315 ++++------------------------ recipes/zlib/recipe.sh | 2 +- 7 files changed, 97 insertions(+), 321 deletions(-) create mode 100644 bin/x86_64-unknown-redox-pkg-config diff --git a/bin/x86_64-unknown-redox-pkg-config b/bin/x86_64-unknown-redox-pkg-config new file mode 100644 index 00000000..db91a59a --- /dev/null +++ b/bin/x86_64-unknown-redox-pkg-config @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +export PKG_CONFIG_DIR= +export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_RECIPE}/sysroot" +export PKG_CONFIG_LIBDIR="${PKG_CONFIG_SYSROOT_DIR}/lib/pkgconfig" + +exec pkg-config "$@" diff --git a/config.sh b/config.sh index f383679e..6e21f242 100755 --- a/config.sh +++ b/config.sh @@ -9,6 +9,7 @@ HOST=$TARGET # Automatic variables ROOT="$(cd `dirname "$0"` && pwd)" REPO="$ROOT/repo/$TARGET" +export PATH="${ROOT}/bin:$PATH" export XARGO_HOME="${ROOT}/xargo" export AR="${HOST}-ar" diff --git a/cook.sh b/cook.sh index a606b629..c99c2f72 100755 --- a/cook.sh +++ b/cook.sh @@ -421,16 +421,13 @@ if [ -n "$1" ] then if [ -d "$ROOT/recipes/$1" ] then - cd "$ROOT/recipes/$1" + export COOKBOOK_RECIPE="${ROOT}/recipes/$1" - function x86_64-unknown-redox-pkg-config { - export PKG_CONFIG_PATH= - export PKG_CONFIG_DIR= - export PKG_CONFIG_LIBDIR="$PWD/sysroot/lib/pkgconfig" - export PKG_CONFIG_SYSROOT_DIR="$PWD/sysroot" + export PKG_CONFIG_PATH= + export PKG_CONFIG_LIBDIR="${COOKBOOK_RECIPE}/sysroot/lib/pkgconfig" + export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_RECIPE}/sysroot" - exec pkg-config "$@" - } + cd "${COOKBOOK_RECIPE}" source recipe.sh diff --git a/recipes/netsurf/01_redox.patch b/recipes/netsurf/01_redox.patch index a3eae09e..1014d2b8 100644 --- a/recipes/netsurf/01_redox.patch +++ b/recipes/netsurf/01_redox.patch @@ -1,6 +1,6 @@ -diff -rupNw source-original/libnsfb/Makefile source/libnsfb/Makefile ---- source-original/libnsfb/Makefile 2017-10-16 12:09:35.000000000 +0200 -+++ source/libnsfb/Makefile 2018-02-23 14:45:29.000000000 +0100 +diff -rupNw source/libnsfb/Makefile source_redox/libnsfb/Makefile +--- source/libnsfb/Makefile 2017-10-16 04:09:35.000000000 -0600 ++++ source_redox/libnsfb/Makefile 2018-02-27 20:06:03.318184866 -0700 @@ -43,10 +43,10 @@ endif NSFB_XCB_PKG_NAMES := xcb xcb-icccm xcb-image xcb-keysyms xcb-atom @@ -15,9 +15,9 @@ diff -rupNw source-original/libnsfb/Makefile source/libnsfb/Makefile # surfaces not detectable via pkg-config NSFB_ABLE_AVAILABLE := no -diff -rupNw source-original/libnsfb/src/plot/32bpp-xbgr8888.c source/libnsfb/src/plot/32bpp-xbgr8888.c ---- source-original/libnsfb/src/plot/32bpp-xbgr8888.c 2017-10-16 12:09:35.000000000 +0200 -+++ source/libnsfb/src/plot/32bpp-xbgr8888.c 2018-02-23 14:45:29.000000000 +0100 +diff -rupNw source/libnsfb/src/plot/32bpp-xbgr8888.c source_redox/libnsfb/src/plot/32bpp-xbgr8888.c +--- source/libnsfb/src/plot/32bpp-xbgr8888.c 2017-10-16 04:09:35.000000000 -0600 ++++ source_redox/libnsfb/src/plot/32bpp-xbgr8888.c 2018-02-27 20:06:03.322184932 -0700 @@ -52,7 +52,7 @@ static inline nsfb_colour_t pixel_to_col */ static inline uint32_t colour_to_pixel(UNUSED nsfb_t *nsfb, nsfb_colour_t c) @@ -36,9 +36,9 @@ diff -rupNw source-original/libnsfb/src/plot/32bpp-xbgr8888.c source/libnsfb/src } #endif -diff -rupNw source-original/libnsfb/src/plot/32bpp-xrgb8888.c source/libnsfb/src/plot/32bpp-xrgb8888.c ---- source-original/libnsfb/src/plot/32bpp-xrgb8888.c 2017-10-16 12:09:35.000000000 +0200 -+++ source/libnsfb/src/plot/32bpp-xrgb8888.c 2018-02-23 14:45:29.000000000 +0100 +diff -rupNw source/libnsfb/src/plot/32bpp-xrgb8888.c source_redox/libnsfb/src/plot/32bpp-xrgb8888.c +--- source/libnsfb/src/plot/32bpp-xrgb8888.c 2017-10-16 04:09:35.000000000 -0600 ++++ source_redox/libnsfb/src/plot/32bpp-xrgb8888.c 2018-02-27 20:06:03.322184932 -0700 @@ -52,7 +52,7 @@ static inline nsfb_colour_t pixel_to_col */ static inline uint32_t colour_to_pixel(UNUSED nsfb_t *nsfb, nsfb_colour_t c) @@ -57,9 +57,9 @@ diff -rupNw source-original/libnsfb/src/plot/32bpp-xrgb8888.c source/libnsfb/src } #endif -diff -rupNw source-original/libnsfb/src/plot.h source/libnsfb/src/plot.h ---- source-original/libnsfb/src/plot.h 2017-10-16 12:09:35.000000000 +0200 -+++ source/libnsfb/src/plot.h 2018-02-23 14:45:29.000000000 +0100 +diff -rupNw source/libnsfb/src/plot.h source_redox/libnsfb/src/plot.h +--- source/libnsfb/src/plot.h 2017-10-16 04:09:35.000000000 -0600 ++++ source_redox/libnsfb/src/plot.h 2018-02-27 20:06:03.318184866 -0700 @@ -36,7 +36,7 @@ #define NSFB_BE_BYTE_ORDER #endif @@ -69,9 +69,9 @@ diff -rupNw source-original/libnsfb/src/plot.h source/libnsfb/src/plot.h #if defined(__BYTE_ORDER__) #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ #define NSFB_BE_BYTE_ORDER -diff -rupNw source-original/libnsfb/src/surface/sdl.c source/libnsfb/src/surface/sdl.c ---- source-original/libnsfb/src/surface/sdl.c 2017-10-16 12:09:35.000000000 +0200 -+++ source/libnsfb/src/surface/sdl.c 2018-02-23 14:45:29.000000000 +0100 +diff -rupNw source/libnsfb/src/surface/sdl.c source_redox/libnsfb/src/surface/sdl.c +--- source/libnsfb/src/surface/sdl.c 2017-10-16 04:09:35.000000000 -0600 ++++ source_redox/libnsfb/src/surface/sdl.c 2018-02-27 20:06:03.322184932 -0700 @@ -458,7 +458,7 @@ static int sdl_initialise(nsfb_t *nsfb) return -1; @@ -121,9 +121,9 @@ diff -rupNw source-original/libnsfb/src/surface/sdl.c source/libnsfb/src/surface /* Do nothing if there was no event */ if (got_event == 0) { -diff -rupNw source-original/libparserutils/src/input/filter.c source/libparserutils/src/input/filter.c ---- source-original/libparserutils/src/input/filter.c 2017-10-16 12:09:36.000000000 +0200 -+++ source/libparserutils/src/input/filter.c 2018-02-23 14:45:29.000000000 +0100 +diff -rupNw source/libparserutils/src/input/filter.c source_redox/libparserutils/src/input/filter.c +--- source/libparserutils/src/input/filter.c 2017-10-16 04:09:36.000000000 -0600 ++++ source_redox/libparserutils/src/input/filter.c 2018-02-27 20:06:03.346185325 -0700 @@ -10,7 +10,7 @@ #include #include @@ -205,9 +205,9 @@ diff -rupNw source-original/libparserutils/src/input/filter.c source/libparserut if (input->cd != (iconv_t) -1) { iconv_close(input->cd); input->cd = (iconv_t) -1; -diff -rupNw source-original/netsurf/content/fetchers/file.c source/netsurf/content/fetchers/file.c ---- source-original/netsurf/content/fetchers/file.c 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/content/fetchers/file.c 2018-02-23 14:45:29.000000000 +0100 +diff -rupNw source/netsurf/content/fetchers/file.c source_redox/netsurf/content/fetchers/file.c +--- source/netsurf/content/fetchers/file.c 2017-10-16 04:09:36.000000000 -0600 ++++ source_redox/netsurf/content/fetchers/file.c 2018-02-27 20:06:03.518188147 -0700 @@ -39,7 +39,7 @@ #include #include @@ -226,9 +226,9 @@ diff -rupNw source-original/netsurf/content/fetchers/file.c source/netsurf/conte fetch_msg msg; char *buf = NULL; size_t buf_size; -diff -rupNw source-original/netsurf/content/urldb.c source/netsurf/content/urldb.c ---- source-original/netsurf/content/urldb.c 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/content/urldb.c 2018-02-23 14:45:29.000000000 +0100 +diff -rupNw source/netsurf/content/urldb.c source_redox/netsurf/content/urldb.c +--- source/netsurf/content/urldb.c 2017-10-16 04:09:36.000000000 -0600 ++++ source_redox/netsurf/content/urldb.c 2018-02-27 20:06:03.510188016 -0700 @@ -630,7 +630,7 @@ static bool urldb__host_is_ip_address(co size_t host_len = strlen(host); const char *sane_host; @@ -247,9 +247,9 @@ diff -rupNw source-original/netsurf/content/urldb.c source/netsurf/content/urldb if ((host_len < 6) || (sane_host[0] != '[') || (sane_host[host_len - 1] != ']')) { -diff -rupNw source-original/netsurf/Makefile.config source/netsurf/Makefile.config ---- source-original/netsurf/Makefile.config 1970-01-01 01:00:00.000000000 +0100 -+++ source/netsurf/Makefile.config 2018-02-23 18:29:19.624058579 +0100 +diff -rupNw source/netsurf/Makefile.config source_redox/netsurf/Makefile.config +--- source/netsurf/Makefile.config 1969-12-31 17:00:00.000000000 -0700 ++++ source_redox/netsurf/Makefile.config 2018-02-27 20:11:23.710834338 -0700 @@ -0,0 +1,14 @@ +override NETSURF_HOMEPAGE := "https://www.redox-os.org/" +override NETSURF_FB_FRONTEND := sdl @@ -259,15 +259,15 @@ diff -rupNw source-original/netsurf/Makefile.config source/netsurf/Makefile.conf +override NETSURF_USE_OPENSSL := YES +override NETSURF_USE_CURL := YES + -+override NETSURF_USE_PNG := NO ++override NETSURF_USE_PNG := YES +override NETSURF_USE_NSSVG := NO +override NETSURF_USE_RSVG := NO +override NETSURF_USE_DUKTAPE := NO +override NETSURF_USE_HARU_PDF := NO +override NETSURF_USE_VIDEO := NO -diff -rupNw source-original/netsurf/utils/log.c source/netsurf/utils/log.c ---- source-original/netsurf/utils/log.c 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/utils/log.c 2018-02-23 14:45:29.000000000 +0100 +diff -rupNw source/netsurf/utils/log.c source_redox/netsurf/utils/log.c +--- source/netsurf/utils/log.c 2017-10-16 04:09:36.000000000 -0600 ++++ source_redox/netsurf/utils/log.c 2018-02-27 20:06:03.622189853 -0700 @@ -261,18 +261,18 @@ nserror nslog_init(nslog_ensure_t *ensur /* sucessfull logging initialisation so log system info */ if (ret == NSERROR_OK) { @@ -297,9 +297,9 @@ diff -rupNw source-original/netsurf/utils/log.c source/netsurf/utils/log.c } return ret; -diff -rupNw source-original/netsurf/utils/useragent.c source/netsurf/utils/useragent.c ---- source-original/netsurf/utils/useragent.c 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/utils/useragent.c 2018-02-23 14:45:29.000000000 +0100 +diff -rupNw source/netsurf/utils/useragent.c source_redox/netsurf/utils/useragent.c +--- source/netsurf/utils/useragent.c 2017-10-16 04:09:36.000000000 -0600 ++++ source_redox/netsurf/utils/useragent.c 2018-02-27 20:06:03.622189853 -0700 @@ -44,9 +44,9 @@ user_agent_build_string(void) char *ua_string; int len; @@ -313,9 +313,9 @@ diff -rupNw source-original/netsurf/utils/useragent.c source/netsurf/utils/usera len = snprintf(NULL, 0, NETSURF_UA_FORMAT_STRING, netsurf_version_major, -diff -rupNw source-original/netsurf/utils/utsname.h source/netsurf/utils/utsname.h ---- source-original/netsurf/utils/utsname.h 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/utils/utsname.h 2018-02-23 14:45:29.000000000 +0100 +diff -rupNw source/netsurf/utils/utsname.h source_redox/netsurf/utils/utsname.h +--- source/netsurf/utils/utsname.h 2017-10-16 04:09:36.000000000 -0600 ++++ source_redox/netsurf/utils/utsname.h 2018-02-27 20:06:03.622189853 -0700 @@ -24,7 +24,7 @@ #ifndef _NETSURF_UTILS_UTSNAME_H_ #define _NETSURF_UTILS_UTSNAME_H_ diff --git a/recipes/netsurf/recipe.sh b/recipes/netsurf/recipe.sh index 9cea3a33..cf64d1d2 100644 --- a/recipes/netsurf/recipe.sh +++ b/recipes/netsurf/recipe.sh @@ -1,12 +1,8 @@ VERSION=3.7 TAR=http://download.netsurf-browser.org/netsurf/releases/source-full/netsurf-all-$VERSION.tar.gz -BUILD_DEPENDS=(expat curl sdl openssl zlib libjpeg libpng) +BUILD_DEPENDS=(curl expat libjpeg libpng openssl sdl zlib) DEPENDS="ca-certificates" -export PKG_CONFIG_PATH= -export PKG_CONFIG_LIBDIR="$PWD/sysroot/lib/pkgconfig" -export PKG_CONFIG_SYSROOT_DIR="$PWD/sysroot" - function recipe_version { echo "$VERSION" skip=1 diff --git a/recipes/sdl/01_orbital.patch b/recipes/sdl/01_orbital.patch index cec30320..0ec45c04 100644 --- a/recipes/sdl/01_orbital.patch +++ b/recipes/sdl/01_orbital.patch @@ -1,6 +1,6 @@ -diff -rupN source-original/build-scripts/config.sub source/build-scripts/config.sub ---- source-original/build-scripts/config.sub 2012-01-19 07:30:05.000000000 +0100 -+++ source/build-scripts/config.sub 2018-02-26 19:43:01.954278409 +0100 +diff -rupN source/build-scripts/config.sub source-redox/build-scripts/config.sub +--- source/build-scripts/config.sub 2012-01-18 23:30:05.000000000 -0700 ++++ source-redox/build-scripts/config.sub 2018-02-27 20:42:46.287901516 -0700 @@ -1276,7 +1276,7 @@ case $os in -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ @@ -10,9 +10,9 @@ diff -rupN source-original/build-scripts/config.sub source/build-scripts/config. | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ -diff -rupN source-original/configure.in source/configure.in ---- source-original/configure.in 2012-01-19 07:30:05.000000000 +0100 -+++ source/configure.in 2018-02-26 19:43:01.954278409 +0100 +diff -rupN source/configure.in source-redox/configure.in +--- source/configure.in 2012-01-18 23:30:05.000000000 -0700 ++++ source-redox/configure.in 2018-02-27 20:42:46.311902357 -0700 @@ -1646,6 +1646,19 @@ AC_HELP_STRING([--enable-video-dummy], [ fi } @@ -54,9 +54,9 @@ diff -rupN source-original/configure.in source/configure.in CheckDiskAudio CheckDummyAudio CheckDLOPEN -diff -rupN source-original/include/SDL_config.h.in source/include/SDL_config.h.in ---- source-original/include/SDL_config.h.in 2012-01-19 07:30:05.000000000 +0100 -+++ source/include/SDL_config.h.in 2018-02-26 19:43:01.954278409 +0100 +diff -rupN source/include/SDL_config.h.in source-redox/include/SDL_config.h.in +--- source/include/SDL_config.h.in 2012-01-18 23:30:05.000000000 -0700 ++++ source-redox/include/SDL_config.h.in 2018-02-27 20:42:46.311902357 -0700 @@ -268,6 +268,7 @@ #undef SDL_VIDEO_DRIVER_GGI #undef SDL_VIDEO_DRIVER_IPOD @@ -65,9 +65,9 @@ diff -rupN source-original/include/SDL_config.h.in source/include/SDL_config.h.i #undef SDL_VIDEO_DRIVER_OS2FS #undef SDL_VIDEO_DRIVER_PHOTON #undef SDL_VIDEO_DRIVER_PICOGUI -diff -rupN source-original/src/video/orbital/SDL_orbitalevents.c source/src/video/orbital/SDL_orbitalevents.c ---- source-original/src/video/orbital/SDL_orbitalevents.c 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalevents.c 2018-02-26 19:43:01.998278827 +0100 +diff -rupN source/src/video/orbital/SDL_orbitalevents.c source-redox/src/video/orbital/SDL_orbitalevents.c +--- source/src/video/orbital/SDL_orbitalevents.c 1969-12-31 17:00:00.000000000 -0700 ++++ source-redox/src/video/orbital/SDL_orbitalevents.c 2018-02-27 20:42:46.335903198 -0700 @@ -0,0 +1,190 @@ +/* + SDL - Simple DirectMedia Layer @@ -259,9 +259,9 @@ diff -rupN source-original/src/video/orbital/SDL_orbitalevents.c source/src/vide +} + +/* end of SDL_orbitalevents.c ... */ -diff -rupN source-original/src/video/orbital/SDL_orbitalevents_c.h source/src/video/orbital/SDL_orbitalevents_c.h ---- source-original/src/video/orbital/SDL_orbitalevents_c.h 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalevents_c.h 2018-02-26 19:43:01.998278827 +0100 +diff -rupN source/src/video/orbital/SDL_orbitalevents_c.h source-redox/src/video/orbital/SDL_orbitalevents_c.h +--- source/src/video/orbital/SDL_orbitalevents_c.h 1969-12-31 17:00:00.000000000 -0700 ++++ source-redox/src/video/orbital/SDL_orbitalevents_c.h 2018-02-27 20:42:46.335903198 -0700 @@ -0,0 +1,32 @@ +/* + SDL - Simple DirectMedia Layer @@ -295,9 +295,9 @@ diff -rupN source-original/src/video/orbital/SDL_orbitalevents_c.h source/src/vi +extern void ORBITAL_PumpEvents(_THIS); + +/* end of SDL_orbitalevents_c.h ... */ -diff -rupN source-original/src/video/orbital/SDL_orbitalmouse.c source/src/video/orbital/SDL_orbitalmouse.c ---- source-original/src/video/orbital/SDL_orbitalmouse.c 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalmouse.c 2018-02-26 19:43:01.998278827 +0100 +diff -rupN source/src/video/orbital/SDL_orbitalmouse.c source-redox/src/video/orbital/SDL_orbitalmouse.c +--- source/src/video/orbital/SDL_orbitalmouse.c 1969-12-31 17:00:00.000000000 -0700 ++++ source-redox/src/video/orbital/SDL_orbitalmouse.c 2018-02-27 20:42:46.335903198 -0700 @@ -0,0 +1,33 @@ +/* + SDL - Simple DirectMedia Layer @@ -332,9 +332,9 @@ diff -rupN source-original/src/video/orbital/SDL_orbitalmouse.c source/src/video +struct WMcursor { + int unused; +}; -diff -rupN source-original/src/video/orbital/SDL_orbitalmouse_c.h source/src/video/orbital/SDL_orbitalmouse_c.h ---- source-original/src/video/orbital/SDL_orbitalmouse_c.h 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalmouse_c.h 2018-02-26 19:43:01.998278827 +0100 +diff -rupN source/src/video/orbital/SDL_orbitalmouse_c.h source-redox/src/video/orbital/SDL_orbitalmouse_c.h +--- source/src/video/orbital/SDL_orbitalmouse_c.h 1969-12-31 17:00:00.000000000 -0700 ++++ source-redox/src/video/orbital/SDL_orbitalmouse_c.h 2018-02-27 20:42:46.335903198 -0700 @@ -0,0 +1,26 @@ +/* + SDL - Simple DirectMedia Layer @@ -362,9 +362,9 @@ diff -rupN source-original/src/video/orbital/SDL_orbitalmouse_c.h source/src/vid +#include "SDL_orbitalvideo.h" + +/* Functions to be exported */ -diff -rupN source-original/src/video/orbital/SDL_orbitalscancode.h source/src/video/orbital/SDL_orbitalscancode.h ---- source-original/src/video/orbital/SDL_orbitalscancode.h 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalscancode.h 2018-02-26 19:43:02.002278865 +0100 +diff -rupN source/src/video/orbital/SDL_orbitalscancode.h source-redox/src/video/orbital/SDL_orbitalscancode.h +--- source/src/video/orbital/SDL_orbitalscancode.h 1969-12-31 17:00:00.000000000 -0700 ++++ source-redox/src/video/orbital/SDL_orbitalscancode.h 2018-02-27 20:42:46.335903198 -0700 @@ -0,0 +1,80 @@ +#define SCANCODE_A 0x1E +#define SCANCODE_B 0x30 @@ -446,9 +446,9 @@ diff -rupN source-original/src/video/orbital/SDL_orbitalscancode.h source/src/vi +#define SCANCODE_COMMA 0x33 +#define SCANCODE_PERIOD 0x34 +#define SCANCODE_SLASH 0x35 -diff -rupN source-original/src/video/orbital/SDL_orbitalvideo.c source/src/video/orbital/SDL_orbitalvideo.c ---- source-original/src/video/orbital/SDL_orbitalvideo.c 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalvideo.c 2018-02-26 19:43:37.246613507 +0100 +diff -rupN source/src/video/orbital/SDL_orbitalvideo.c source-redox/src/video/orbital/SDL_orbitalvideo.c +--- source/src/video/orbital/SDL_orbitalvideo.c 1969-12-31 17:00:00.000000000 -0700 ++++ source-redox/src/video/orbital/SDL_orbitalvideo.c 2018-02-27 20:42:46.335903198 -0700 @@ -0,0 +1,282 @@ +/* + SDL - Simple DirectMedia Layer @@ -732,9 +732,9 @@ diff -rupN source-original/src/video/orbital/SDL_orbitalvideo.c source/src/video + this->hidden->fd = 0; + } +} -diff -rupN source-original/src/video/orbital/SDL_orbitalvideo.h source/src/video/orbital/SDL_orbitalvideo.h ---- source-original/src/video/orbital/SDL_orbitalvideo.h 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalvideo.h 2018-02-26 19:43:02.002278865 +0100 +diff -rupN source/src/video/orbital/SDL_orbitalvideo.h source-redox/src/video/orbital/SDL_orbitalvideo.h +--- source/src/video/orbital/SDL_orbitalvideo.h 1969-12-31 17:00:00.000000000 -0700 ++++ source-redox/src/video/orbital/SDL_orbitalvideo.h 2018-02-27 20:42:46.335903198 -0700 @@ -0,0 +1,41 @@ +/* + SDL - Simple DirectMedia Layer @@ -777,79 +777,22 @@ diff -rupN source-original/src/video/orbital/SDL_orbitalvideo.h source/src/video +}; + +#endif /* _SDL_orbitalvideo_h */ -diff -rupN source-original/src/video/SDL_gamma.c source/src/video/SDL_gamma.c ---- source-original/src/video/SDL_gamma.c 2012-01-19 07:30:06.000000000 +0100 -+++ source/src/video/SDL_gamma.c 2018-02-26 19:43:02.002278865 +0100 -@@ -23,9 +23,9 @@ - - /* Gamma correction support */ - --#ifdef HAVE_MATH_H --#include /* Used for calculating gamma ramps */ --#else -+//#ifdef HAVE_MATH_H -+//#include /* Used for calculating gamma ramps */ -+//#else - /* Math routines from uClibc: http://www.uclibc.org */ - #include "math_private.h" - #include "e_sqrt.h" -@@ -33,7 +33,7 @@ - #include "e_log.h" - #define pow(x, y) __ieee754_pow(x, y) +diff -rupN source/src/video/SDL_gamma.c source-redox/src/video/SDL_gamma.c +--- source/src/video/SDL_gamma.c 2012-01-18 23:30:06.000000000 -0700 ++++ source-redox/src/video/SDL_gamma.c 2018-02-27 20:56:59.314549375 -0700 +@@ -35,6 +35,9 @@ #define log(x) __ieee754_log(x) --#endif -+//#endif + #endif ++#include "e_log.h" ++#define log(x) __ieee754_log(x) ++ #include "SDL_sysvideo.h" -@@ -94,7 +94,7 @@ int SDL_SetGamma(float red, float green, - { - int succeeded; - SDL_VideoDevice *video = current_video; -- SDL_VideoDevice *this = current_video; -+ SDL_VideoDevice *this = current_video; - succeeded = -1; - /* Prefer using SetGammaRamp(), as it's more flexible */ -@@ -120,7 +120,7 @@ int SDL_GetGamma(float *red, float *gree - { - int succeeded; - SDL_VideoDevice *video = current_video; -- SDL_VideoDevice *this = current_video; -+ SDL_VideoDevice *this = current_video; - - succeeded = -1; - /* Prefer using GetGammaRamp(), as it's more flexible */ -@@ -145,7 +145,7 @@ int SDL_SetGammaRamp(const Uint16 *red, - { - int succeeded; - SDL_VideoDevice *video = current_video; -- SDL_VideoDevice *this = current_video; -+ SDL_VideoDevice *this = current_video; - SDL_Surface *screen = SDL_PublicSurface; - - /* Verify the screen parameter */ -@@ -177,7 +177,7 @@ int SDL_SetGammaRamp(const Uint16 *red, - /* If physical palette has been set independently, use it */ - if(video->physpal) - pal = video->physpal; -- -+ - SDL_SetPalette(screen, SDL_PHYSPAL, - pal->colors, 0, pal->ncolors); - return 0; -@@ -196,7 +196,7 @@ int SDL_SetGammaRamp(const Uint16 *red, - int SDL_GetGammaRamp(Uint16 *red, Uint16 *green, Uint16 *blue) - { - SDL_VideoDevice *video = current_video; -- SDL_VideoDevice *this = current_video; -+ SDL_VideoDevice *this = current_video; - - /* Lazily allocate the gamma table */ - if ( ! video->gamma ) { -diff -rupN source-original/src/video/SDL_sysvideo.h source/src/video/SDL_sysvideo.h ---- source-original/src/video/SDL_sysvideo.h 2012-01-19 07:30:06.000000000 +0100 -+++ source/src/video/SDL_sysvideo.h 2018-02-26 19:43:02.002278865 +0100 +diff -rupN source/src/video/SDL_sysvideo.h source-redox/src/video/SDL_sysvideo.h +--- source/src/video/SDL_sysvideo.h 2012-01-18 23:30:06.000000000 -0700 ++++ source-redox/src/video/SDL_sysvideo.h 2018-02-27 20:42:46.335903198 -0700 @@ -410,6 +410,9 @@ extern VideoBootStrap AALIB_bootstrap; #if SDL_VIDEO_DRIVER_CACA extern VideoBootStrap CACA_bootstrap; @@ -860,9 +803,9 @@ diff -rupN source-original/src/video/SDL_sysvideo.h source/src/video/SDL_sysvide #if SDL_VIDEO_DRIVER_DUMMY extern VideoBootStrap DUMMY_bootstrap; #endif -diff -rupN source-original/src/video/SDL_video.c source/src/video/SDL_video.c ---- source-original/src/video/SDL_video.c 2012-01-19 07:30:06.000000000 +0100 -+++ source/src/video/SDL_video.c 2018-02-26 19:43:02.002278865 +0100 +diff -rupN source/src/video/SDL_video.c source-redox/src/video/SDL_video.c +--- source/src/video/SDL_video.c 2012-01-18 23:30:06.000000000 -0700 ++++ source-redox/src/video/SDL_video.c 2018-02-27 20:45:30.447873197 -0700 @@ -126,6 +126,9 @@ static VideoBootStrap *bootstrap[] = { #if SDL_VIDEO_DRIVER_CACA &CACA_bootstrap, @@ -873,33 +816,6 @@ diff -rupN source-original/src/video/SDL_video.c source/src/video/SDL_video.c #if SDL_VIDEO_DRIVER_DUMMY &DUMMY_bootstrap, #endif -@@ -217,7 +220,7 @@ int SDL_VideoInit (const char *driver_na - video->offset_x = 0; - video->offset_y = 0; - SDL_memset(&video->info, 0, (sizeof video->info)); -- -+ - video->displayformatalphapixel = NULL; - - /* Set some very sane GL defaults */ -@@ -240,7 +243,7 @@ int SDL_VideoInit (const char *driver_na - video->gl_config.multisamplesamples = 0; - video->gl_config.accelerated = -1; /* not known, don't set */ - video->gl_config.swap_control = -1; /* not known, don't set */ -- -+ - /* Initialize the video subsystem */ - SDL_memset(&vformat, 0, sizeof(vformat)); - if ( video->VideoInit(video, &vformat) < 0 ) { -@@ -397,7 +400,7 @@ int SDL_VideoModeOK (int width, int heig - if ( sizes == (SDL_Rect **)0 ) { - /* No sizes supported at this bit-depth */ - continue; -- } else -+ } else - if (sizes == (SDL_Rect **)NEGATIVE_ONE) { - /* Any size supported at this bit-depth */ - supported = 1; @@ -726,7 +729,8 @@ SDL_Surface * SDL_SetVideoMode (int widt video->offset_y = 0; mode->offset = 0; @@ -910,121 +826,7 @@ diff -rupN source-original/src/video/SDL_video.c source/src/video/SDL_video.c /* Now adjust the offsets to match the desired mode */ video->offset_x = (mode->w-width)/2; -@@ -788,7 +792,7 @@ SDL_Surface * SDL_SetVideoMode (int widt - #endif /* __SDL_NOGETPROCADDR__ */ - - #include "SDL_glfuncs.h" --#undef SDL_PROC -+#undef SDL_PROC - } - #endif /* SDL_VIDEO_OPENGL */ - -@@ -817,9 +821,9 @@ SDL_Surface * SDL_SetVideoMode (int widt - ) { - video->is_32bit = 0; - SDL_VideoSurface = SDL_CreateRGBSurface( -- flags, -- width, -- height, -+ flags, -+ width, -+ height, - 16, - 31 << 11, - 63 << 5, -@@ -832,10 +836,10 @@ SDL_Surface * SDL_SetVideoMode (int widt - { - video->is_32bit = 1; - SDL_VideoSurface = SDL_CreateRGBSurface( -- flags, -- width, -- height, -- 32, -+ flags, -+ width, -+ height, -+ 32, - #if SDL_BYTEORDER == SDL_LIL_ENDIAN - 0x000000FF, - 0x0000FF00, -@@ -893,7 +897,7 @@ SDL_Surface * SDL_SetVideoMode (int widt - ( - ( !(flags&SDL_ANYFORMAT) && - (SDL_VideoSurface->format->BitsPerPixel != bpp)) || -- ( (flags&SDL_HWPALETTE) && -+ ( (flags&SDL_HWPALETTE) && - !(SDL_VideoSurface->flags&SDL_HWPALETTE)) || - /* If the surface is in hardware, video writes are visible - as soon as they are performed, so we need to buffer them -@@ -921,7 +925,7 @@ SDL_Surface * SDL_SetVideoMode (int widt - return(SDL_PublicSurface); - } - --/* -+/* - * Convert a surface into the video pixel format. - */ - SDL_Surface * SDL_DisplayFormat (SDL_Surface *surface) -@@ -935,7 +939,7 @@ SDL_Surface * SDL_DisplayFormat (SDL_Sur - /* Set the flags appropriate for copying to display surface */ - if (((SDL_PublicSurface->flags&SDL_HWSURFACE) == SDL_HWSURFACE) && current_video->info.blit_hw) - flags = SDL_HWSURFACE; -- else -+ else - flags = SDL_SWSURFACE; - #ifdef AUTORLE_DISPLAYFORMAT - flags |= (surface->flags & (SDL_SRCCOLORKEY|SDL_SRCALPHA)); -@@ -1063,14 +1067,14 @@ void SDL_UpdateRects (SDL_Surface *scree - SDL_LockCursor(); - SDL_DrawCursor(SDL_ShadowSurface); - for ( i=0; i 256 ) - update.h = 256; -- -+ - this->glFlush(); -- this->glTexSubImage2D( -- GL_TEXTURE_2D, -- 0, -- 0, -- 0, -- update.w, -- update.h, -+ this->glTexSubImage2D( -+ GL_TEXTURE_2D, -+ 0, -+ 0, -+ 0, -+ update.w, -+ update.h, - this->is_32bit? GL_RGBA : GL_RGB, - #ifdef GL_VERSION_1_2 - this->is_32bit ? GL_UNSIGNED_BYTE : GL_UNSIGNED_SHORT_5_6_5, - #else - GL_UNSIGNED_BYTE, - #endif -- (Uint8 *)this->screen->pixels + -- this->screen->format->BytesPerPixel * update.x + -+ (Uint8 *)this->screen->pixels + -+ this->screen->format->BytesPerPixel * update.x + - update.y * this->screen->pitch ); -- -+ +@@ -1598,7 +1602,7 @@ void SDL_GL_UpdateRects(int numrects, SD this->glFlush(); /* * Note the parens around the function name: @@ -1033,30 +835,3 @@ diff -rupN source-original/src/video/SDL_video.c source/src/video/SDL_video.c * as macros, and we don't want them expanded here. */ this->glBegin(GL_TRIANGLE_STRIP); -- (this->glTexCoord2f)( 0.0, 0.0 ); -+ (this->glTexCoord2f)( 0.0, 0.0 ); - (this->glVertex2i)( update.x, update.y ); -- (this->glTexCoord2f)( (float)(update.w / 256.0), 0.0 ); -+ (this->glTexCoord2f)( (float)(update.w / 256.0), 0.0 ); - (this->glVertex2i)( update.x + update.w, update.y ); - (this->glTexCoord2f)( 0.0, (float)(update.h / 256.0) ); - (this->glVertex2i)( update.x, update.y + update.h ); -- (this->glTexCoord2f)( (float)(update.w / 256.0), (float)(update.h / 256.0) ); -+ (this->glTexCoord2f)( (float)(update.w / 256.0), (float)(update.h / 256.0) ); - (this->glVertex2i)( update.x + update.w , update.y + update.h ); -- this->glEnd(); -- -+ this->glEnd(); -+ - tmp.x += 256; - tmp.w -= 256; - } -@@ -1641,7 +1645,7 @@ void SDL_GL_Lock() - this->glDisable(GL_FOG); - this->glDisable(GL_ALPHA_TEST); - this->glDisable(GL_DEPTH_TEST); -- this->glDisable(GL_SCISSOR_TEST); -+ this->glDisable(GL_SCISSOR_TEST); - this->glDisable(GL_STENCIL_TEST); - this->glDisable(GL_CULL_FACE); - diff --git a/recipes/zlib/recipe.sh b/recipes/zlib/recipe.sh index 42ca0eeb..1aa1cd8e 100644 --- a/recipes/zlib/recipe.sh +++ b/recipes/zlib/recipe.sh @@ -30,6 +30,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install - rm -rf "$1"/{lib/pkgconfig,share} + rm -rf "$1"/share skip=1 } From 7cdcd9b0a16889c20d201da7e6c0733446e181a7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 27 Feb 2018 21:14:07 -0700 Subject: [PATCH 0343/3180] Fix extrautils build --- bin/x86_64-unknown-redox-pkg-config | 2 +- config.sh | 2 +- cook.sh | 2 ++ recipes/extrautils/recipe.sh | 4 ---- 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/bin/x86_64-unknown-redox-pkg-config b/bin/x86_64-unknown-redox-pkg-config index db91a59a..7693e621 100644 --- a/bin/x86_64-unknown-redox-pkg-config +++ b/bin/x86_64-unknown-redox-pkg-config @@ -1,6 +1,6 @@ #!/usr/bin/env bash -export PKG_CONFIG_DIR= +export PKG_CONFIG_PATH= export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_RECIPE}/sysroot" export PKG_CONFIG_LIBDIR="${PKG_CONFIG_SYSROOT_DIR}/lib/pkgconfig" diff --git a/config.sh b/config.sh index 6e21f242..da7b8902 100755 --- a/config.sh +++ b/config.sh @@ -20,7 +20,7 @@ export LD="${HOST}-ld" export NM="${HOST}-nm" export OBJCOPY="${HOST}-objcopy" export OBJDUMP="${HOST}-objdump" -export PKG_CONFIG="${HOST}-pkg-config" +#export PKG_CONFIG="${HOST}-pkg-config" export RANLIB="${HOST}-ranlib" export READELF="${HOST}-readelf" export STRIP="${HOST}-strip" diff --git a/cook.sh b/cook.sh index c99c2f72..3de6157b 100755 --- a/cook.sh +++ b/cook.sh @@ -423,6 +423,8 @@ then then export COOKBOOK_RECIPE="${ROOT}/recipes/$1" + + export PKG_CONFIG_ALLOW_CROSS=1 export PKG_CONFIG_PATH= export PKG_CONFIG_LIBDIR="${COOKBOOK_RECIPE}/sysroot/lib/pkgconfig" export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_RECIPE}/sysroot" diff --git a/recipes/extrautils/recipe.sh b/recipes/extrautils/recipe.sh index f36cbfca..cef3940a 100644 --- a/recipes/extrautils/recipe.sh +++ b/recipes/extrautils/recipe.sh @@ -1,6 +1,2 @@ GIT=https://github.com/redox-os/extrautils.git BUILD_DEPENDS=(xz) -export PKG_CONFIG_ALLOW_CROSS=1 -export PKG_CONFIG_PATH= -export PKG_CONFIG_LIBDIR="$PWD/sysroot/lib/pkgconfig" -export PKG_CONFIG_SYSROOT_DIR="$PWD/sysroot" From 9af2f4872f66aaedef08c99c90e2ed33fa668a7e Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Wed, 28 Feb 2018 18:29:09 +0100 Subject: [PATCH 0344/3180] Add freetype recipe --- recipes/freetype/recipe.sh | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 recipes/freetype/recipe.sh diff --git a/recipes/freetype/recipe.sh b/recipes/freetype/recipe.sh new file mode 100644 index 00000000..33660c48 --- /dev/null +++ b/recipes/freetype/recipe.sh @@ -0,0 +1,34 @@ +VERSION=2.9 +TAR=https://download.savannah.gnu.org/releases/freetype/freetype-$VERSION.tar.gz + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + ./configure --host=${HOST} --prefix='/' + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} From e61789686bc7aee328fa26dd57aa6fdf046fe09f Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Wed, 28 Feb 2018 18:30:03 +0100 Subject: [PATCH 0345/3180] netsurf: Enable freetype support --- recipes/netsurf/01_redox.patch | 103 +++++++++++++++++++++------------ recipes/netsurf/recipe.sh | 2 +- 2 files changed, 66 insertions(+), 39 deletions(-) diff --git a/recipes/netsurf/01_redox.patch b/recipes/netsurf/01_redox.patch index 1014d2b8..e4d14fcf 100644 --- a/recipes/netsurf/01_redox.patch +++ b/recipes/netsurf/01_redox.patch @@ -1,6 +1,6 @@ -diff -rupNw source/libnsfb/Makefile source_redox/libnsfb/Makefile ---- source/libnsfb/Makefile 2017-10-16 04:09:35.000000000 -0600 -+++ source_redox/libnsfb/Makefile 2018-02-27 20:06:03.318184866 -0700 +diff -rupNw source-original/libnsfb/Makefile source/libnsfb/Makefile +--- source-original/libnsfb/Makefile 2017-10-16 12:09:35.000000000 +0200 ++++ source/libnsfb/Makefile 2018-02-28 15:55:23.835716012 +0100 @@ -43,10 +43,10 @@ endif NSFB_XCB_PKG_NAMES := xcb xcb-icccm xcb-image xcb-keysyms xcb-atom @@ -15,9 +15,9 @@ diff -rupNw source/libnsfb/Makefile source_redox/libnsfb/Makefile # surfaces not detectable via pkg-config NSFB_ABLE_AVAILABLE := no -diff -rupNw source/libnsfb/src/plot/32bpp-xbgr8888.c source_redox/libnsfb/src/plot/32bpp-xbgr8888.c ---- source/libnsfb/src/plot/32bpp-xbgr8888.c 2017-10-16 04:09:35.000000000 -0600 -+++ source_redox/libnsfb/src/plot/32bpp-xbgr8888.c 2018-02-27 20:06:03.322184932 -0700 +diff -rupNw source-original/libnsfb/src/plot/32bpp-xbgr8888.c source/libnsfb/src/plot/32bpp-xbgr8888.c +--- source-original/libnsfb/src/plot/32bpp-xbgr8888.c 2017-10-16 12:09:35.000000000 +0200 ++++ source/libnsfb/src/plot/32bpp-xbgr8888.c 2018-02-28 15:55:23.847716494 +0100 @@ -52,7 +52,7 @@ static inline nsfb_colour_t pixel_to_col */ static inline uint32_t colour_to_pixel(UNUSED nsfb_t *nsfb, nsfb_colour_t c) @@ -36,9 +36,9 @@ diff -rupNw source/libnsfb/src/plot/32bpp-xbgr8888.c source_redox/libnsfb/src/pl } #endif -diff -rupNw source/libnsfb/src/plot/32bpp-xrgb8888.c source_redox/libnsfb/src/plot/32bpp-xrgb8888.c ---- source/libnsfb/src/plot/32bpp-xrgb8888.c 2017-10-16 04:09:35.000000000 -0600 -+++ source_redox/libnsfb/src/plot/32bpp-xrgb8888.c 2018-02-27 20:06:03.322184932 -0700 +diff -rupNw source-original/libnsfb/src/plot/32bpp-xrgb8888.c source/libnsfb/src/plot/32bpp-xrgb8888.c +--- source-original/libnsfb/src/plot/32bpp-xrgb8888.c 2017-10-16 12:09:35.000000000 +0200 ++++ source/libnsfb/src/plot/32bpp-xrgb8888.c 2018-02-28 15:55:23.847716494 +0100 @@ -52,7 +52,7 @@ static inline nsfb_colour_t pixel_to_col */ static inline uint32_t colour_to_pixel(UNUSED nsfb_t *nsfb, nsfb_colour_t c) @@ -57,9 +57,9 @@ diff -rupNw source/libnsfb/src/plot/32bpp-xrgb8888.c source_redox/libnsfb/src/pl } #endif -diff -rupNw source/libnsfb/src/plot.h source_redox/libnsfb/src/plot.h ---- source/libnsfb/src/plot.h 2017-10-16 04:09:35.000000000 -0600 -+++ source_redox/libnsfb/src/plot.h 2018-02-27 20:06:03.318184866 -0700 +diff -rupNw source-original/libnsfb/src/plot.h source/libnsfb/src/plot.h +--- source-original/libnsfb/src/plot.h 2017-10-16 12:09:35.000000000 +0200 ++++ source/libnsfb/src/plot.h 2018-02-28 15:55:23.847716494 +0100 @@ -36,7 +36,7 @@ #define NSFB_BE_BYTE_ORDER #endif @@ -69,9 +69,9 @@ diff -rupNw source/libnsfb/src/plot.h source_redox/libnsfb/src/plot.h #if defined(__BYTE_ORDER__) #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ #define NSFB_BE_BYTE_ORDER -diff -rupNw source/libnsfb/src/surface/sdl.c source_redox/libnsfb/src/surface/sdl.c ---- source/libnsfb/src/surface/sdl.c 2017-10-16 04:09:35.000000000 -0600 -+++ source_redox/libnsfb/src/surface/sdl.c 2018-02-27 20:06:03.322184932 -0700 +diff -rupNw source-original/libnsfb/src/surface/sdl.c source/libnsfb/src/surface/sdl.c +--- source-original/libnsfb/src/surface/sdl.c 2017-10-16 12:09:35.000000000 +0200 ++++ source/libnsfb/src/surface/sdl.c 2018-02-28 15:55:23.847716494 +0100 @@ -458,7 +458,7 @@ static int sdl_initialise(nsfb_t *nsfb) return -1; @@ -121,9 +121,9 @@ diff -rupNw source/libnsfb/src/surface/sdl.c source_redox/libnsfb/src/surface/sd /* Do nothing if there was no event */ if (got_event == 0) { -diff -rupNw source/libparserutils/src/input/filter.c source_redox/libparserutils/src/input/filter.c ---- source/libparserutils/src/input/filter.c 2017-10-16 04:09:36.000000000 -0600 -+++ source_redox/libparserutils/src/input/filter.c 2018-02-27 20:06:03.346185325 -0700 +diff -rupNw source-original/libparserutils/src/input/filter.c source/libparserutils/src/input/filter.c +--- source-original/libparserutils/src/input/filter.c 2017-10-16 12:09:36.000000000 +0200 ++++ source/libparserutils/src/input/filter.c 2018-02-28 15:55:23.847716494 +0100 @@ -10,7 +10,7 @@ #include #include @@ -205,9 +205,9 @@ diff -rupNw source/libparserutils/src/input/filter.c source_redox/libparserutils if (input->cd != (iconv_t) -1) { iconv_close(input->cd); input->cd = (iconv_t) -1; -diff -rupNw source/netsurf/content/fetchers/file.c source_redox/netsurf/content/fetchers/file.c ---- source/netsurf/content/fetchers/file.c 2017-10-16 04:09:36.000000000 -0600 -+++ source_redox/netsurf/content/fetchers/file.c 2018-02-27 20:06:03.518188147 -0700 +diff -rupNw source-original/netsurf/content/fetchers/file.c source/netsurf/content/fetchers/file.c +--- source-original/netsurf/content/fetchers/file.c 2017-10-16 12:09:36.000000000 +0200 ++++ source/netsurf/content/fetchers/file.c 2018-02-28 15:55:23.851716655 +0100 @@ -39,7 +39,7 @@ #include #include @@ -226,9 +226,9 @@ diff -rupNw source/netsurf/content/fetchers/file.c source_redox/netsurf/content/ fetch_msg msg; char *buf = NULL; size_t buf_size; -diff -rupNw source/netsurf/content/urldb.c source_redox/netsurf/content/urldb.c ---- source/netsurf/content/urldb.c 2017-10-16 04:09:36.000000000 -0600 -+++ source_redox/netsurf/content/urldb.c 2018-02-27 20:06:03.510188016 -0700 +diff -rupNw source-original/netsurf/content/urldb.c source/netsurf/content/urldb.c +--- source-original/netsurf/content/urldb.c 2017-10-16 12:09:36.000000000 +0200 ++++ source/netsurf/content/urldb.c 2018-02-28 15:55:23.851716655 +0100 @@ -630,7 +630,7 @@ static bool urldb__host_is_ip_address(co size_t host_len = strlen(host); const char *sane_host; @@ -247,10 +247,24 @@ diff -rupNw source/netsurf/content/urldb.c source_redox/netsurf/content/urldb.c if ((host_len < 6) || (sane_host[0] != '[') || (sane_host[host_len - 1] != ']')) { -diff -rupNw source/netsurf/Makefile.config source_redox/netsurf/Makefile.config ---- source/netsurf/Makefile.config 1969-12-31 17:00:00.000000000 -0700 -+++ source_redox/netsurf/Makefile.config 2018-02-27 20:11:23.710834338 -0700 -@@ -0,0 +1,14 @@ +diff -rupNw source-original/netsurf/frontends/framebuffer/Makefile source/netsurf/frontends/framebuffer/Makefile +--- source-original/netsurf/frontends/framebuffer/Makefile 2017-10-16 12:09:36.000000000 +0200 ++++ source/netsurf/frontends/framebuffer/Makefile 2018-02-28 16:43:21.098712544 +0100 +@@ -35,8 +35,8 @@ LDFLAGS += -Wl,--no-whole-archive + + # freetype is optional but does not use pkg-config + ifeq ($(NETSURF_FB_FONTLIB),freetype) +- CFLAGS += -DFB_USE_FREETYPE $(shell freetype-config --cflags) +- LDFLAGS += $(shell freetype-config --libs) ++ CFLAGS += -DFB_USE_FREETYPE $(shell $(PKG_CONFIG) --cflags freetype2) ++ LDFLAGS += $(shell $(PKG_CONFIG) --libs freetype2) + endif + + +diff -rupNw source-original/netsurf/Makefile.config source/netsurf/Makefile.config +--- source-original/netsurf/Makefile.config 1970-01-01 01:00:00.000000000 +0100 ++++ source/netsurf/Makefile.config 2018-02-28 18:12:51.362698183 +0100 +@@ -0,0 +1,27 @@ +override NETSURF_HOMEPAGE := "https://www.redox-os.org/" +override NETSURF_FB_FRONTEND := sdl + @@ -258,16 +272,29 @@ diff -rupNw source/netsurf/Makefile.config source_redox/netsurf/Makefile.config +override NETSURF_USE_BMP := YES +override NETSURF_USE_OPENSSL := YES +override NETSURF_USE_CURL := YES -+ +override NETSURF_USE_PNG := YES ++ +override NETSURF_USE_NSSVG := NO +override NETSURF_USE_RSVG := NO +override NETSURF_USE_DUKTAPE := NO +override NETSURF_USE_HARU_PDF := NO +override NETSURF_USE_VIDEO := NO -diff -rupNw source/netsurf/utils/log.c source_redox/netsurf/utils/log.c ---- source/netsurf/utils/log.c 2017-10-16 04:09:36.000000000 -0600 -+++ source_redox/netsurf/utils/log.c 2018-02-27 20:06:03.622189853 -0700 ++ ++override NETSURF_FB_FONTLIB := freetype ++override NETSURF_FB_FONTPATH := /ui/fonts/ ++override NETSURF_FB_FONT_SANS_SERIF := Sans/Fira/Regular.ttf ++override NETSURF_FB_FONT_SANS_SERIF_BOLD := Sans/Fira/Bold.ttf ++override NETSURF_FB_FONT_SANS_SERIF_ITALIC := Sans/Fira/Regular.ttf ++override NETSURF_FB_FONT_SANS_SERIF_ITALIC_BOLD := Sans/Fira/Bold.ttf ++override NETSURF_FB_FONT_SERIF := Sans/Fira/Regular.ttf ++override NETSURF_FB_FONT_SERIF_BOLD := Sans/Fira/Bold.ttf ++override NETSURF_FB_FONT_MONOSPACE := Mono/Fira/Regular.ttf ++override NETSURF_FB_FONT_MONOSPACE_BOLD := Mono/Fira/Bold.ttf ++override NETSURF_FB_FONT_CURSIVE := Sans/Fira/Regular.ttf ++override NETSURF_FB_FONT_FANTASY := Sans/Fira/Regular.ttf +diff -rupNw source-original/netsurf/utils/log.c source/netsurf/utils/log.c +--- source-original/netsurf/utils/log.c 2017-10-16 12:09:36.000000000 +0200 ++++ source/netsurf/utils/log.c 2018-02-28 15:55:23.855716815 +0100 @@ -261,18 +261,18 @@ nserror nslog_init(nslog_ensure_t *ensur /* sucessfull logging initialisation so log system info */ if (ret == NSERROR_OK) { @@ -297,9 +324,9 @@ diff -rupNw source/netsurf/utils/log.c source_redox/netsurf/utils/log.c } return ret; -diff -rupNw source/netsurf/utils/useragent.c source_redox/netsurf/utils/useragent.c ---- source/netsurf/utils/useragent.c 2017-10-16 04:09:36.000000000 -0600 -+++ source_redox/netsurf/utils/useragent.c 2018-02-27 20:06:03.622189853 -0700 +diff -rupNw source-original/netsurf/utils/useragent.c source/netsurf/utils/useragent.c +--- source-original/netsurf/utils/useragent.c 2017-10-16 12:09:36.000000000 +0200 ++++ source/netsurf/utils/useragent.c 2018-02-28 15:55:23.855716815 +0100 @@ -44,9 +44,9 @@ user_agent_build_string(void) char *ua_string; int len; @@ -313,9 +340,9 @@ diff -rupNw source/netsurf/utils/useragent.c source_redox/netsurf/utils/useragen len = snprintf(NULL, 0, NETSURF_UA_FORMAT_STRING, netsurf_version_major, -diff -rupNw source/netsurf/utils/utsname.h source_redox/netsurf/utils/utsname.h ---- source/netsurf/utils/utsname.h 2017-10-16 04:09:36.000000000 -0600 -+++ source_redox/netsurf/utils/utsname.h 2018-02-27 20:06:03.622189853 -0700 +diff -rupNw source-original/netsurf/utils/utsname.h source/netsurf/utils/utsname.h +--- source-original/netsurf/utils/utsname.h 2017-10-16 12:09:36.000000000 +0200 ++++ source/netsurf/utils/utsname.h 2018-02-28 15:55:23.855716815 +0100 @@ -24,7 +24,7 @@ #ifndef _NETSURF_UTILS_UTSNAME_H_ #define _NETSURF_UTILS_UTSNAME_H_ diff --git a/recipes/netsurf/recipe.sh b/recipes/netsurf/recipe.sh index cf64d1d2..b092b9f9 100644 --- a/recipes/netsurf/recipe.sh +++ b/recipes/netsurf/recipe.sh @@ -1,6 +1,6 @@ VERSION=3.7 TAR=http://download.netsurf-browser.org/netsurf/releases/source-full/netsurf-all-$VERSION.tar.gz -BUILD_DEPENDS=(curl expat libjpeg libpng openssl sdl zlib) +BUILD_DEPENDS=(curl expat libjpeg libpng openssl sdl zlib freetype) DEPENDS="ca-certificates" function recipe_version { From 5339744140f60c35f426c6418f076d0c35fb9458 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 Mar 2018 16:14:15 -0700 Subject: [PATCH 0346/3180] Add zlib dependency to freetype --- recipes/freetype/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/freetype/recipe.sh b/recipes/freetype/recipe.sh index 33660c48..74c56175 100644 --- a/recipes/freetype/recipe.sh +++ b/recipes/freetype/recipe.sh @@ -1,5 +1,6 @@ VERSION=2.9 TAR=https://download.savannah.gnu.org/releases/freetype/freetype-$VERSION.tar.gz +BUILD_DEPENDS=(zlib) function recipe_version { echo "$VERSION" From cc22c487ecd3a8bc8ff13c12c989d5a3101af32c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 Mar 2018 16:23:22 -0700 Subject: [PATCH 0347/3180] Add include flags to freetype --- recipes/freetype/recipe.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/recipes/freetype/recipe.sh b/recipes/freetype/recipe.sh index 74c56175..8a1b1a14 100644 --- a/recipes/freetype/recipe.sh +++ b/recipes/freetype/recipe.sh @@ -13,6 +13,10 @@ function recipe_update { } function recipe_build { + sysroot="${PWD}/../sysroot" + export LDFLAGS="-L$sysroot/lib" + export CPPFLAGS="-I$sysroot/include" + ./configure --host=${HOST} --prefix='/' make skip=1 From 16a8304066f0fbc5c1a5130a0017b636f14f8127 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 Mar 2018 19:23:12 -0700 Subject: [PATCH 0348/3180] Fix expat link --- recipes/expat/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/expat/recipe.sh b/recipes/expat/recipe.sh index 99a07049..f4c57111 100644 --- a/recipes/expat/recipe.sh +++ b/recipes/expat/recipe.sh @@ -1,5 +1,5 @@ VERSION=2.2.1 -TAR=http://downloads.sourceforge.net/project/expat/expat/$VERSION/expat-$VERSION.tar.bz2 +TAR=https://github.com/libexpat/libexpat/releases/download/R_${VERSION//./_}/expat-${VERSION}.tar.bz2 function recipe_version { echo "$VERSION" From 060870c8bd79c9f00eb25f90ec0202391fac7655 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 Mar 2018 19:40:14 -0700 Subject: [PATCH 0349/3180] Fix libpng link --- recipes/libpng/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/libpng/recipe.sh b/recipes/libpng/recipe.sh index 2c626c05..bbdc70df 100644 --- a/recipes/libpng/recipe.sh +++ b/recipes/libpng/recipe.sh @@ -1,5 +1,5 @@ VERSION=1.6.34 -TAR=https://download.sourceforge.net/libpng/libpng-$VERSION.tar.xz +TAR=https://github.com/glennrp/libpng/archive/v${VERSION}.tar.gz BUILD_DEPENDS=(zlib) function recipe_version { From f369f548184d7909497fdaafcebeb81dce8e7ea7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 Mar 2018 19:46:27 -0700 Subject: [PATCH 0350/3180] Autogen for libpng --- recipes/libpng/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/libpng/recipe.sh b/recipes/libpng/recipe.sh index bbdc70df..de1a0e43 100644 --- a/recipes/libpng/recipe.sh +++ b/recipes/libpng/recipe.sh @@ -17,6 +17,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" + ./autogen.sh wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --host=${HOST} --prefix='/' make From 05b179e7f9699ef85359edcc0df66faeb0a5c59c Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Sun, 4 Mar 2018 12:22:55 +0100 Subject: [PATCH 0351/3180] Update ffmpeg to 3.4 --- recipes/ffmpeg/ffmpeg.patch | 16 +++++++--------- recipes/ffmpeg/recipe.sh | 2 +- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/recipes/ffmpeg/ffmpeg.patch b/recipes/ffmpeg/ffmpeg.patch index 9719e12c..9d24920c 100644 --- a/recipes/ffmpeg/ffmpeg.patch +++ b/recipes/ffmpeg/ffmpeg.patch @@ -1,8 +1,7 @@ -diff --git a/configure b/configure -index 7201941..e3b2875 100755 ---- a/configure -+++ b/configure -@@ -5055,6 +5055,8 @@ case $target_os in +diff -rupN source-original/configure source/configure +--- source-original/configure 2018-03-04 11:13:59.000000000 +0100 ++++ source/configure 2018-03-04 11:18:10.026033282 +0100 +@@ -5141,6 +5141,8 @@ case $target_os in ;; minix) ;; @@ -11,10 +10,9 @@ index 7201941..e3b2875 100755 none) ;; *) -diff --git a/ffmpeg.c b/ffmpeg.c -index 888d19a..aeeb0e5 100644 ---- a/ffmpeg.c -+++ b/ffmpeg.c +diff -rupN source-original/fftools/ffmpeg.c source/fftools/ffmpeg.c +--- source-original/fftools/ffmpeg.c 2018-03-04 11:13:59.000000000 +0100 ++++ source/fftools/ffmpeg.c 2018-03-04 11:45:38.326394016 +0100 @@ -91,7 +91,7 @@ #if HAVE_TERMIOS_H diff --git a/recipes/ffmpeg/recipe.sh b/recipes/ffmpeg/recipe.sh index 7b74bc38..96757802 100644 --- a/recipes/ffmpeg/recipe.sh +++ b/recipes/ffmpeg/recipe.sh @@ -1,4 +1,4 @@ -VERSION=3.3 +VERSION=3.4 GIT=https://github.com/FFmpeg/FFmpeg BRANCH=release/$VERSION From 6b4ec3e9ddb1e530052806b43ca45852ad3cde94 Mon Sep 17 00:00:00 2001 From: Nagy Tibor Date: Sun, 4 Mar 2018 22:26:18 +0100 Subject: [PATCH 0352/3180] Add libpng build dependency to freetype Fixes a build issue reported on the chat server --- recipes/freetype/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/freetype/recipe.sh b/recipes/freetype/recipe.sh index 8a1b1a14..f9befb6b 100644 --- a/recipes/freetype/recipe.sh +++ b/recipes/freetype/recipe.sh @@ -1,6 +1,6 @@ VERSION=2.9 TAR=https://download.savannah.gnu.org/releases/freetype/freetype-$VERSION.tar.gz -BUILD_DEPENDS=(zlib) +BUILD_DEPENDS=(zlib libpng) function recipe_version { echo "$VERSION" From a5526e226ad4cd98d71a30ff200dd64447665ca0 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Fri, 9 Mar 2018 00:12:40 +0100 Subject: [PATCH 0353/3180] netsurf: Fix HTML forms The //TRANSLIT iconv extension doesn't seem to be supported by newlib. --- recipes/netsurf/01_redox.patch | 56 ++++++++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 13 deletions(-) diff --git a/recipes/netsurf/01_redox.patch b/recipes/netsurf/01_redox.patch index e4d14fcf..92ca7088 100644 --- a/recipes/netsurf/01_redox.patch +++ b/recipes/netsurf/01_redox.patch @@ -1,6 +1,6 @@ diff -rupNw source-original/libnsfb/Makefile source/libnsfb/Makefile --- source-original/libnsfb/Makefile 2017-10-16 12:09:35.000000000 +0200 -+++ source/libnsfb/Makefile 2018-02-28 15:55:23.835716012 +0100 ++++ source/libnsfb/Makefile 2018-03-04 20:43:18.172956846 +0100 @@ -43,10 +43,10 @@ endif NSFB_XCB_PKG_NAMES := xcb xcb-icccm xcb-image xcb-keysyms xcb-atom @@ -17,7 +17,7 @@ diff -rupNw source-original/libnsfb/Makefile source/libnsfb/Makefile NSFB_ABLE_AVAILABLE := no diff -rupNw source-original/libnsfb/src/plot/32bpp-xbgr8888.c source/libnsfb/src/plot/32bpp-xbgr8888.c --- source-original/libnsfb/src/plot/32bpp-xbgr8888.c 2017-10-16 12:09:35.000000000 +0200 -+++ source/libnsfb/src/plot/32bpp-xbgr8888.c 2018-02-28 15:55:23.847716494 +0100 ++++ source/libnsfb/src/plot/32bpp-xbgr8888.c 2018-03-04 20:43:18.188956997 +0100 @@ -52,7 +52,7 @@ static inline nsfb_colour_t pixel_to_col */ static inline uint32_t colour_to_pixel(UNUSED nsfb_t *nsfb, nsfb_colour_t c) @@ -38,7 +38,7 @@ diff -rupNw source-original/libnsfb/src/plot/32bpp-xbgr8888.c source/libnsfb/src #endif diff -rupNw source-original/libnsfb/src/plot/32bpp-xrgb8888.c source/libnsfb/src/plot/32bpp-xrgb8888.c --- source-original/libnsfb/src/plot/32bpp-xrgb8888.c 2017-10-16 12:09:35.000000000 +0200 -+++ source/libnsfb/src/plot/32bpp-xrgb8888.c 2018-02-28 15:55:23.847716494 +0100 ++++ source/libnsfb/src/plot/32bpp-xrgb8888.c 2018-03-04 20:43:18.188956997 +0100 @@ -52,7 +52,7 @@ static inline nsfb_colour_t pixel_to_col */ static inline uint32_t colour_to_pixel(UNUSED nsfb_t *nsfb, nsfb_colour_t c) @@ -59,7 +59,7 @@ diff -rupNw source-original/libnsfb/src/plot/32bpp-xrgb8888.c source/libnsfb/src #endif diff -rupNw source-original/libnsfb/src/plot.h source/libnsfb/src/plot.h --- source-original/libnsfb/src/plot.h 2017-10-16 12:09:35.000000000 +0200 -+++ source/libnsfb/src/plot.h 2018-02-28 15:55:23.847716494 +0100 ++++ source/libnsfb/src/plot.h 2018-03-04 20:43:18.188956997 +0100 @@ -36,7 +36,7 @@ #define NSFB_BE_BYTE_ORDER #endif @@ -71,7 +71,7 @@ diff -rupNw source-original/libnsfb/src/plot.h source/libnsfb/src/plot.h #define NSFB_BE_BYTE_ORDER diff -rupNw source-original/libnsfb/src/surface/sdl.c source/libnsfb/src/surface/sdl.c --- source-original/libnsfb/src/surface/sdl.c 2017-10-16 12:09:35.000000000 +0200 -+++ source/libnsfb/src/surface/sdl.c 2018-02-28 15:55:23.847716494 +0100 ++++ source/libnsfb/src/surface/sdl.c 2018-03-04 20:43:18.188956997 +0100 @@ -458,7 +458,7 @@ static int sdl_initialise(nsfb_t *nsfb) return -1; @@ -123,7 +123,7 @@ diff -rupNw source-original/libnsfb/src/surface/sdl.c source/libnsfb/src/surface if (got_event == 0) { diff -rupNw source-original/libparserutils/src/input/filter.c source/libparserutils/src/input/filter.c --- source-original/libparserutils/src/input/filter.c 2017-10-16 12:09:36.000000000 +0200 -+++ source/libparserutils/src/input/filter.c 2018-02-28 15:55:23.847716494 +0100 ++++ source/libparserutils/src/input/filter.c 2018-03-04 20:43:18.188956997 +0100 @@ -10,7 +10,7 @@ #include #include @@ -207,7 +207,7 @@ diff -rupNw source-original/libparserutils/src/input/filter.c source/libparserut input->cd = (iconv_t) -1; diff -rupNw source-original/netsurf/content/fetchers/file.c source/netsurf/content/fetchers/file.c --- source-original/netsurf/content/fetchers/file.c 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/content/fetchers/file.c 2018-02-28 15:55:23.851716655 +0100 ++++ source/netsurf/content/fetchers/file.c 2018-03-04 20:43:18.216957262 +0100 @@ -39,7 +39,7 @@ #include #include @@ -228,7 +228,7 @@ diff -rupNw source-original/netsurf/content/fetchers/file.c source/netsurf/conte size_t buf_size; diff -rupNw source-original/netsurf/content/urldb.c source/netsurf/content/urldb.c --- source-original/netsurf/content/urldb.c 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/content/urldb.c 2018-02-28 15:55:23.851716655 +0100 ++++ source/netsurf/content/urldb.c 2018-03-04 20:43:18.216957262 +0100 @@ -630,7 +630,7 @@ static bool urldb__host_is_ip_address(co size_t host_len = strlen(host); const char *sane_host; @@ -249,7 +249,7 @@ diff -rupNw source-original/netsurf/content/urldb.c source/netsurf/content/urldb (sane_host[host_len - 1] != ']')) { diff -rupNw source-original/netsurf/frontends/framebuffer/Makefile source/netsurf/frontends/framebuffer/Makefile --- source-original/netsurf/frontends/framebuffer/Makefile 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/frontends/framebuffer/Makefile 2018-02-28 16:43:21.098712544 +0100 ++++ source/netsurf/frontends/framebuffer/Makefile 2018-03-04 20:43:18.232957414 +0100 @@ -35,8 +35,8 @@ LDFLAGS += -Wl,--no-whole-archive # freetype is optional but does not use pkg-config @@ -263,7 +263,7 @@ diff -rupNw source-original/netsurf/frontends/framebuffer/Makefile source/netsur diff -rupNw source-original/netsurf/Makefile.config source/netsurf/Makefile.config --- source-original/netsurf/Makefile.config 1970-01-01 01:00:00.000000000 +0100 -+++ source/netsurf/Makefile.config 2018-02-28 18:12:51.362698183 +0100 ++++ source/netsurf/Makefile.config 2018-03-04 20:43:18.244957528 +0100 @@ -0,0 +1,27 @@ +override NETSURF_HOMEPAGE := "https://www.redox-os.org/" +override NETSURF_FB_FRONTEND := sdl @@ -292,9 +292,39 @@ diff -rupNw source-original/netsurf/Makefile.config source/netsurf/Makefile.conf +override NETSURF_FB_FONT_MONOSPACE_BOLD := Mono/Fira/Bold.ttf +override NETSURF_FB_FONT_CURSIVE := Sans/Fira/Regular.ttf +override NETSURF_FB_FONT_FANTASY := Sans/Fira/Regular.ttf +diff -rupNw source-original/netsurf/render/form.c source/netsurf/render/form.c +--- source-original/netsurf/render/form.c 2017-10-16 12:09:36.000000000 +0200 ++++ source/netsurf/render/form.c 2018-03-09 00:03:07.456378705 +0100 +@@ -1080,7 +1080,7 @@ char *form_encode_item(const char *item, + if (!item || !charset) + return NULL; + +- snprintf(cset, sizeof cset, "%s//TRANSLIT", charset); ++ snprintf(cset, sizeof cset, "%s", charset); + + err = utf8_to_enc(item, cset, 0, &ret); + if (err == NSERROR_BAD_ENCODING) { +@@ -1092,7 +1092,7 @@ char *form_encode_item(const char *item, + /* nope, try fallback charset (if any) */ + if (fallback) { + snprintf(cset, sizeof cset, +- "%s//TRANSLIT", fallback); ++ "%s", fallback); + err = utf8_to_enc(item, cset, 0, &ret); + + if (err == NSERROR_BAD_ENCODING) { +@@ -1105,7 +1105,7 @@ char *form_encode_item(const char *item, + + if (err == NSERROR_BAD_ENCODING) { + /* that also failed, use 8859-1 */ +- err = utf8_to_enc(item, "ISO-8859-1//TRANSLIT", ++ err = utf8_to_enc(item, "ISO-8859-1", + 0, &ret); + if (err == NSERROR_BAD_ENCODING) { + /* and without transliteration */ diff -rupNw source-original/netsurf/utils/log.c source/netsurf/utils/log.c --- source-original/netsurf/utils/log.c 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/utils/log.c 2018-02-28 15:55:23.855716815 +0100 ++++ source/netsurf/utils/log.c 2018-03-04 20:43:18.252957604 +0100 @@ -261,18 +261,18 @@ nserror nslog_init(nslog_ensure_t *ensur /* sucessfull logging initialisation so log system info */ if (ret == NSERROR_OK) { @@ -326,7 +356,7 @@ diff -rupNw source-original/netsurf/utils/log.c source/netsurf/utils/log.c return ret; diff -rupNw source-original/netsurf/utils/useragent.c source/netsurf/utils/useragent.c --- source-original/netsurf/utils/useragent.c 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/utils/useragent.c 2018-02-28 15:55:23.855716815 +0100 ++++ source/netsurf/utils/useragent.c 2018-03-04 20:43:18.252957604 +0100 @@ -44,9 +44,9 @@ user_agent_build_string(void) char *ua_string; int len; @@ -342,7 +372,7 @@ diff -rupNw source-original/netsurf/utils/useragent.c source/netsurf/utils/usera netsurf_version_major, diff -rupNw source-original/netsurf/utils/utsname.h source/netsurf/utils/utsname.h --- source-original/netsurf/utils/utsname.h 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/utils/utsname.h 2018-02-28 15:55:23.855716815 +0100 ++++ source/netsurf/utils/utsname.h 2018-03-04 20:43:18.252957604 +0100 @@ -24,7 +24,7 @@ #ifndef _NETSURF_UTILS_UTSNAME_H_ #define _NETSURF_UTILS_UTSNAME_H_ From 9f327cfa5cdc38c612b99fca9d3ba125d40f58d0 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 8 Mar 2018 17:09:05 -0800 Subject: [PATCH 0354/3180] Include "Redox" in netsurf user agent --- recipes/netsurf/01_redox.patch | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/netsurf/01_redox.patch b/recipes/netsurf/01_redox.patch index 92ca7088..c51bb199 100644 --- a/recipes/netsurf/01_redox.patch +++ b/recipes/netsurf/01_redox.patch @@ -357,7 +357,7 @@ diff -rupNw source-original/netsurf/utils/log.c source/netsurf/utils/log.c diff -rupNw source-original/netsurf/utils/useragent.c source/netsurf/utils/useragent.c --- source-original/netsurf/utils/useragent.c 2017-10-16 12:09:36.000000000 +0200 +++ source/netsurf/utils/useragent.c 2018-03-04 20:43:18.252957604 +0100 -@@ -44,9 +44,9 @@ user_agent_build_string(void) +@@ -44,9 +44,10 @@ user_agent_build_string(void) char *ua_string; int len; @@ -367,6 +367,7 @@ diff -rupNw source-original/netsurf/utils/useragent.c source/netsurf/utils/usera + //if (uname(&un) >= 0) { + // sysname = un.sysname; + //} ++ sysname = "Redox"; len = snprintf(NULL, 0, NETSURF_UA_FORMAT_STRING, netsurf_version_major, From 14ca8de519af0ccd633485db5aebf98eb0912305 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 11 Mar 2018 20:32:30 -0600 Subject: [PATCH 0355/3180] Add relibc recipe --- recipes/relibc/recipe.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 recipes/relibc/recipe.sh diff --git a/recipes/relibc/recipe.sh b/recipes/relibc/recipe.sh new file mode 100644 index 00000000..7a9581ba --- /dev/null +++ b/recipes/relibc/recipe.sh @@ -0,0 +1,19 @@ +GIT=https://github.com/redox-os/relibc.git + +function recipe_build { + cp -r "$ROOT/Xargo.toml" . + xargo build --target "$TARGET" --release + xargo rustc --manifest-path src/crt0/Cargo.toml --target "$TARGET" --release -- -v --emit obj="target/$TARGET/release/crt0.o" + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + mkdir -pv "$dest/lib" + mkdir -pv "$dest/include" + cp -rv "include"/* "$dest/include" + cp -rv "target/include"/* "$dest/include" + cp -v "target/$TARGET/release/libc.a" "$dest/lib" + cp -v "target/$TARGET/release/crt0.o" "$dest/lib" + skip=1 +} From 84aecb23b64f02e1b3a31a94203095f4a240add7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 12 Mar 2018 20:49:17 -0600 Subject: [PATCH 0356/3180] Use patched periodictable --- recipes/periodictable/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/periodictable/recipe.sh b/recipes/periodictable/recipe.sh index 0285710d..17f2c6ac 100644 --- a/recipes/periodictable/recipe.sh +++ b/recipes/periodictable/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/xtibor/periodictable.git +GIT=https://github.com/redox-os/periodictable.git BINDIR="/ui/bin" function recipe_stage { From 8456bb9a39f2f94a379ca806f63d241d712ddfe1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 12 Mar 2018 20:59:25 -0600 Subject: [PATCH 0357/3180] Preserve timestamps on Xargo.toml --- cook.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cook.sh b/cook.sh index 3de6157b..15a1ea10 100755 --- a/cook.sh +++ b/cook.sh @@ -299,7 +299,7 @@ function op { if [ "$skip" -eq "0" ] then - cp -r "$ROOT/Xargo.toml" . + cp -p "$ROOT/Xargo.toml" "Xargo.toml" xargo build --target "$TARGET" $release_flag $CARGOFLAGS fi popd > /dev/null @@ -320,7 +320,7 @@ function op { if [ "$skip" -eq "0" ] then - cp -r "$ROOT/Xargo.toml" . + cp -p "$ROOT/Xargo.toml" "Xargo.toml" xargo test --no-run --target "$TARGET" $release_flag $CARGOFLAGS fi popd > /dev/null From 6f0434543461783bb6934bc2e6e927cf5af0f140 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 24 Mar 2018 12:29:11 -0600 Subject: [PATCH 0358/3180] Add drivers-041 recipe --- recipes/drivers-041/recipe.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 recipes/drivers-041/recipe.sh diff --git a/recipes/drivers-041/recipe.sh b/recipes/drivers-041/recipe.sh new file mode 100644 index 00000000..1859d66c --- /dev/null +++ b/recipes/drivers-041/recipe.sh @@ -0,0 +1,14 @@ +GIT=https://github.com/redox-os/drivers.git +GIT_BRANCH=0.4.1 +CARGOFLAGS=--all + +function recipe_version { + echo "0.1.1" + skip=1 +} + +function recipe_stage { + mkdir -pv "$1/etc/pcid" + cp -v initfs.toml "$1/etc/pcid/initfs.toml" + cp -v filesystem.toml "$1/etc/pcid/filesystem.toml" +} From 282bd44ea12551272411e10b49cccbd9f26ddbe9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 24 Mar 2018 14:20:32 -0600 Subject: [PATCH 0359/3180] Add shellstorm recipe --- recipes/shellstorm/recipe.sh | 1 + 1 file changed, 1 insertion(+) create mode 100644 recipes/shellstorm/recipe.sh diff --git a/recipes/shellstorm/recipe.sh b/recipes/shellstorm/recipe.sh new file mode 100644 index 00000000..7ee3df0b --- /dev/null +++ b/recipes/shellstorm/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/shellstorm.git From 0ab0a11720ba6bbd65384d213c448e1f6e154a9d Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Sat, 24 Mar 2018 23:44:18 +0100 Subject: [PATCH 0360/3180] Add duktape recipe --- recipes/duktape/recipe.sh | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 recipes/duktape/recipe.sh diff --git a/recipes/duktape/recipe.sh b/recipes/duktape/recipe.sh new file mode 100644 index 00000000..65a70a6c --- /dev/null +++ b/recipes/duktape/recipe.sh @@ -0,0 +1,35 @@ +VERSION=2.2.0 +TAR=http://duktape.org/duktape-$VERSION.tar.xz + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sed -i "s/= gcc/= $TARGET-gcc/g" Makefile.cmdline + make -f Makefile.cmdline + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + mkdir -pv "$1/bin" + cp ./duk "$1/bin/duk" + + skip=1 +} From 647eef182e8fd6c24d14e602031cf45d07153ccc Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 26 Mar 2018 20:09:16 -0600 Subject: [PATCH 0361/3180] Update relibc recipe --- recipes/relibc/recipe.sh | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/recipes/relibc/recipe.sh b/recipes/relibc/recipe.sh index 7a9581ba..468bd31b 100644 --- a/recipes/relibc/recipe.sh +++ b/recipes/relibc/recipe.sh @@ -1,9 +1,7 @@ GIT=https://github.com/redox-os/relibc.git function recipe_build { - cp -r "$ROOT/Xargo.toml" . - xargo build --target "$TARGET" --release - xargo rustc --manifest-path src/crt0/Cargo.toml --target "$TARGET" --release -- -v --emit obj="target/$TARGET/release/crt0.o" + make skip=1 } @@ -13,7 +11,7 @@ function recipe_stage { mkdir -pv "$dest/include" cp -rv "include"/* "$dest/include" cp -rv "target/include"/* "$dest/include" - cp -v "target/$TARGET/release/libc.a" "$dest/lib" - cp -v "target/$TARGET/release/crt0.o" "$dest/lib" + cp -v "target/$TARGET/debug/libc.a" "$dest/lib" + cp -v "target/$TARGET/debug/crt0.o" "$dest/lib" skip=1 } From 0fa182d351db86871f662727117b8d25a2f1a4f3 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 26 Mar 2018 20:15:19 -0600 Subject: [PATCH 0362/3180] Use install target for relibc --- recipes/relibc/recipe.sh | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/recipes/relibc/recipe.sh b/recipes/relibc/recipe.sh index 468bd31b..60aa60c7 100644 --- a/recipes/relibc/recipe.sh +++ b/recipes/relibc/recipe.sh @@ -7,11 +7,6 @@ function recipe_build { function recipe_stage { dest="$(realpath $1)" - mkdir -pv "$dest/lib" - mkdir -pv "$dest/include" - cp -rv "include"/* "$dest/include" - cp -rv "target/include"/* "$dest/include" - cp -v "target/$TARGET/debug/libc.a" "$dest/lib" - cp -v "target/$TARGET/debug/crt0.o" "$dest/lib" + make DESTDIR="$dest" install skip=1 } From a61842d2257b273e73cce0ebbb0e8cba4e936da9 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Thu, 29 Mar 2018 00:22:52 +0200 Subject: [PATCH 0363/3180] Add Orbital as a runtime dependency for the GUI apps And also make Orbital depend on the orbdata package --- recipes/netsurf/recipe.sh | 2 +- recipes/orbital/recipe.sh | 1 + recipes/orbterm/recipe.sh | 1 + recipes/orbutils/recipe.sh | 1 + recipes/pastel/recipe.sh | 1 + recipes/periodictable/recipe.sh | 1 + recipes/pixelcannon/recipe.sh | 1 + recipes/rs-nes/recipe.sh | 1 + recipes/rust64/recipe.sh | 1 + recipes/rustual-boy/recipe.sh | 1 + 10 files changed, 10 insertions(+), 1 deletion(-) diff --git a/recipes/netsurf/recipe.sh b/recipes/netsurf/recipe.sh index b092b9f9..42e0c72e 100644 --- a/recipes/netsurf/recipe.sh +++ b/recipes/netsurf/recipe.sh @@ -1,7 +1,7 @@ VERSION=3.7 TAR=http://download.netsurf-browser.org/netsurf/releases/source-full/netsurf-all-$VERSION.tar.gz BUILD_DEPENDS=(curl expat libjpeg libpng openssl sdl zlib freetype) -DEPENDS="ca-certificates" +DEPENDS="ca-certificates orbital" function recipe_version { echo "$VERSION" diff --git a/recipes/orbital/recipe.sh b/recipes/orbital/recipe.sh index be4992a3..9b680117 100644 --- a/recipes/orbital/recipe.sh +++ b/recipes/orbital/recipe.sh @@ -1 +1,2 @@ GIT=https://github.com/redox-os/orbital.git +DEPENDS="orbdata" diff --git a/recipes/orbterm/recipe.sh b/recipes/orbterm/recipe.sh index 7b0c62a2..309de8af 100644 --- a/recipes/orbterm/recipe.sh +++ b/recipes/orbterm/recipe.sh @@ -1,2 +1,3 @@ GIT=https://github.com/redox-os/orbterm.git BINDIR=/ui/bin +DEPENDS="orbital" diff --git a/recipes/orbutils/recipe.sh b/recipes/orbutils/recipe.sh index e049cafd..9f25fdd7 100644 --- a/recipes/orbutils/recipe.sh +++ b/recipes/orbutils/recipe.sh @@ -1,2 +1,3 @@ GIT=https://github.com/redox-os/orbutils.git BINDIR=/ui/bin +DEPENDS="orbital" diff --git a/recipes/pastel/recipe.sh b/recipes/pastel/recipe.sh index 1b2740d7..ddeda786 100644 --- a/recipes/pastel/recipe.sh +++ b/recipes/pastel/recipe.sh @@ -1,6 +1,7 @@ GIT=https://github.com/redox-os/pastel.git GIT_UPSTREAM=https://github.com/robbycerantola/pastel.git BINDIR=/ui/bin +DEPENDS="orbital" function recipe_stage { mkdir "$1/ui" diff --git a/recipes/periodictable/recipe.sh b/recipes/periodictable/recipe.sh index 17f2c6ac..00ab0290 100644 --- a/recipes/periodictable/recipe.sh +++ b/recipes/periodictable/recipe.sh @@ -1,5 +1,6 @@ GIT=https://github.com/redox-os/periodictable.git BINDIR="/ui/bin" +DEPENDS="orbital" function recipe_stage { mkdir -pv "$1/ui/apps" diff --git a/recipes/pixelcannon/recipe.sh b/recipes/pixelcannon/recipe.sh index 4d660db0..1b140e72 100644 --- a/recipes/pixelcannon/recipe.sh +++ b/recipes/pixelcannon/recipe.sh @@ -1,5 +1,6 @@ GIT=https://github.com/jackpot51/pixelcannon.git BINDIR=/ui/bin +DEPENDS="orbital" function recipe_stage { mkdir -pv "$1/apps/pixelcannon" diff --git a/recipes/rs-nes/recipe.sh b/recipes/rs-nes/recipe.sh index 18a3a7f6..840cab93 100755 --- a/recipes/rs-nes/recipe.sh +++ b/recipes/rs-nes/recipe.sh @@ -1,2 +1,3 @@ GIT=https://github.com/redox-os/rs-nes.git GIT_UPSTREAM=https://github.com/bgourlie/rs-nes.git +DEPENDS="orbital" diff --git a/recipes/rust64/recipe.sh b/recipes/rust64/recipe.sh index 602ce803..441a34a1 100755 --- a/recipes/rust64/recipe.sh +++ b/recipes/rust64/recipe.sh @@ -1,2 +1,3 @@ GIT=https://github.com/redox-os/rust64.git GIT_UPSTREAM=https://github.com/kondrak/rust64.git +DEPENDS="orbital" diff --git a/recipes/rustual-boy/recipe.sh b/recipes/rustual-boy/recipe.sh index 7e232b2c..8706fcf1 100755 --- a/recipes/rustual-boy/recipe.sh +++ b/recipes/rustual-boy/recipe.sh @@ -1,5 +1,6 @@ GIT=https://github.com/redox-os/rustual-boy.git GIT_UPSTREAM=https://github.com/emu-rs/rustual-boy.git +DEPENDS="orbital" function recipe_update { cd rustual-boy-cli From 93ae4513bcc046116aaabc10d60c77abb4ca0109 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 31 Mar 2018 08:16:17 -0600 Subject: [PATCH 0364/3180] Add keyboard-sfx recipe --- recipes/keyboard-sfx/recipe.sh | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 recipes/keyboard-sfx/recipe.sh diff --git a/recipes/keyboard-sfx/recipe.sh b/recipes/keyboard-sfx/recipe.sh new file mode 100644 index 00000000..f7b6aaeb --- /dev/null +++ b/recipes/keyboard-sfx/recipe.sh @@ -0,0 +1,32 @@ +GIT=https://github.com/redox-os/keyboard-sfx.git + +function recipe_version { + echo "0.0.1" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + echo "skipping build" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + echo "skipping clean" + skip=1 +} + +function recipe_stage { + mkdir -pv "$1/sfx" + cp -Rv ./* "$1/sfx" + skip=1 +} From 3843c27b42feb93a17165e7a02cba9951b966e2e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 1 Apr 2018 07:12:04 -0600 Subject: [PATCH 0365/3180] Update recipe.sh --- recipes/drivers-041/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/drivers-041/recipe.sh b/recipes/drivers-041/recipe.sh index 1859d66c..4926e266 100644 --- a/recipes/drivers-041/recipe.sh +++ b/recipes/drivers-041/recipe.sh @@ -1,5 +1,5 @@ GIT=https://github.com/redox-os/drivers.git -GIT_BRANCH=0.4.1 +BRANCH=0.4.1 CARGOFLAGS=--all function recipe_version { From 70e0ae41c3e0e592aea0d0c1c9a2c38e84916020 Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Wed, 18 Apr 2018 20:35:20 +0200 Subject: [PATCH 0366/3180] Add LOLCODE recipe --- recipes/lci/recipe.sh | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 recipes/lci/recipe.sh diff --git a/recipes/lci/recipe.sh b/recipes/lci/recipe.sh new file mode 100644 index 00000000..4fe9ce46 --- /dev/null +++ b/recipes/lci/recipe.sh @@ -0,0 +1,2 @@ +GIT=https://github.com/jD91mZM2/rust-lci +GIT_UPSTREAM=https://github.com/jD91mZM2/rust-lci From 3c513b788899d45a8b51d241593d4757ab6036df Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Wed, 18 Apr 2018 20:55:15 +0200 Subject: [PATCH 0367/3180] Update termplay --- recipes/termplay/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/termplay/recipe.sh b/recipes/termplay/recipe.sh index 90729981..dedcba02 100644 --- a/recipes/termplay/recipe.sh +++ b/recipes/termplay/recipe.sh @@ -1,2 +1,2 @@ -GIT=https://github.com/redox-os/termplay.git -GIT_UPSTREAM=https://github.com/redox-os/termplay.git +GIT=https://github.com/jD91mZM2/termplay.git +CARGOFLAGS=--no-default-features --features "termion" From d97c0880de01770eaf703ac6d7f7912e6d435e79 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 18 Apr 2018 20:54:58 -0600 Subject: [PATCH 0368/3180] Fix lci and termplay recipes --- recipes/lci/recipe.sh | 1 - recipes/termplay/recipe.sh | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/lci/recipe.sh b/recipes/lci/recipe.sh index 4fe9ce46..c1c88b90 100644 --- a/recipes/lci/recipe.sh +++ b/recipes/lci/recipe.sh @@ -1,2 +1 @@ GIT=https://github.com/jD91mZM2/rust-lci -GIT_UPSTREAM=https://github.com/jD91mZM2/rust-lci diff --git a/recipes/termplay/recipe.sh b/recipes/termplay/recipe.sh index dedcba02..c48fb790 100644 --- a/recipes/termplay/recipe.sh +++ b/recipes/termplay/recipe.sh @@ -1,2 +1,2 @@ GIT=https://github.com/jD91mZM2/termplay.git -CARGOFLAGS=--no-default-features --features "termion" +CARGOFLAGS="--no-default-features --features termion" From abd11823c2369eef72782cf60370ff81f8b1b31b Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Thu, 19 Apr 2018 08:52:36 +0200 Subject: [PATCH 0369/3180] Fix termplay recipe (sorry) --- cook.sh | 12 ++++++++++++ recipes/termplay/recipe.sh | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/cook.sh b/cook.sh index 15a1ea10..17dd9821 100755 --- a/cook.sh +++ b/cook.sh @@ -358,8 +358,18 @@ function op { fi bins="$(find target/$TARGET/$build/ -maxdepth 1 -type f ! -name '*.*')" + if [ -z "$bins" ] + then + example=true + bins="$(find target/$TARGET/$build/examples/ -maxdepth 1 -type f ! -name '*.*' ! -name '*-*' \ + 2> /dev/null || true)" + fi if [ -n "$bins" ] then + if [ -n "$example" ] + then + echo "$(tput bold)Note$(tput sgr0): No binaries detected, using example binaries" >&2 + fi mkdir -p "../stage/$BINDIR" for bin in $bins do @@ -370,6 +380,8 @@ function op { strip -v "$bin" -o "../stage/$BINDIR/$(basename $bin)" fi done + else + echo "$(tput bold)Warning$(tput sgr0): Recipe does not have any binaries" >&2 fi docgen ../source ../stage/ref diff --git a/recipes/termplay/recipe.sh b/recipes/termplay/recipe.sh index c48fb790..3bb91958 100644 --- a/recipes/termplay/recipe.sh +++ b/recipes/termplay/recipe.sh @@ -1,2 +1,2 @@ GIT=https://github.com/jD91mZM2/termplay.git -CARGOFLAGS="--no-default-features --features termion" +CARGOFLAGS="--no-default-features --features termion --example termplay" From 5223ca0da405edd03c249f46af41851bd950bedc Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Thu, 19 Apr 2018 08:55:20 +0200 Subject: [PATCH 0370/3180] Don't print note to STDERR --- cook.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cook.sh b/cook.sh index 17dd9821..c68fa053 100755 --- a/cook.sh +++ b/cook.sh @@ -368,7 +368,7 @@ function op { then if [ -n "$example" ] then - echo "$(tput bold)Note$(tput sgr0): No binaries detected, using example binaries" >&2 + echo "$(tput bold)Note$(tput sgr0): No binaries detected, using example binaries" fi mkdir -p "../stage/$BINDIR" for bin in $bins From 950015ec2c21a4917ac939166d56a0e4ba2972e9 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Sat, 21 Apr 2018 02:11:59 +0200 Subject: [PATCH 0371/3180] Update ffmpeg to 4.0 --- recipes/ffmpeg/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/ffmpeg/recipe.sh b/recipes/ffmpeg/recipe.sh index 96757802..7454e41f 100644 --- a/recipes/ffmpeg/recipe.sh +++ b/recipes/ffmpeg/recipe.sh @@ -1,4 +1,4 @@ -VERSION=3.4 +VERSION=4.0 GIT=https://github.com/FFmpeg/FFmpeg BRANCH=release/$VERSION From 707d9fb676fcba90574033bf313e6d0eb217cb20 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Sun, 22 Apr 2018 17:57:18 +0200 Subject: [PATCH 0372/3180] Enable SDL timers --- recipes/sdl/02_timers.patch | 57 +++++++++++++++++++++++++++++++++++++ recipes/sdl/recipe.sh | 4 +-- 2 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 recipes/sdl/02_timers.patch diff --git a/recipes/sdl/02_timers.patch b/recipes/sdl/02_timers.patch new file mode 100644 index 00000000..1cd20912 --- /dev/null +++ b/recipes/sdl/02_timers.patch @@ -0,0 +1,57 @@ +diff -rupN source/src/timer/unix/SDL_systimer.c source-redox/src/timer/unix/SDL_systimer.c +--- source/src/timer/unix/SDL_systimer.c 2012-01-19 07:30:06.000000000 +0100 ++++ source-redox/src/timer/unix/SDL_systimer.c 2018-04-22 17:42:17.455342646 +0200 +@@ -150,14 +150,14 @@ static void HandleAlarm(int sig) + + int SDL_SYS_TimerInit(void) + { +- struct sigaction action; ++ //struct sigaction action; + +- /* Set the alarm handler (Linux specific) */ +- SDL_memset(&action, 0, sizeof(action)); +- action.sa_handler = HandleAlarm; +- action.sa_flags = SA_RESTART; +- sigemptyset(&action.sa_mask); +- sigaction(SIGALRM, &action, NULL); ++ ///* Set the alarm handler (Linux specific) */ ++ //SDL_memset(&action, 0, sizeof(action)); ++ //action.sa_handler = HandleAlarm; ++ //action.sa_flags = SA_RESTART; ++ //sigemptyset(&action.sa_mask); ++ //sigaction(SIGALRM, &action, NULL); + return(0); + } + +@@ -168,22 +168,22 @@ void SDL_SYS_TimerQuit(void) + + int SDL_SYS_StartTimer(void) + { +- struct itimerval timer; ++ //struct itimerval timer; + +- timer.it_value.tv_sec = (SDL_alarm_interval/1000); +- timer.it_value.tv_usec = (SDL_alarm_interval%1000)*1000; +- timer.it_interval.tv_sec = (SDL_alarm_interval/1000); +- timer.it_interval.tv_usec = (SDL_alarm_interval%1000)*1000; +- setitimer(ITIMER_REAL, &timer, NULL); ++ //timer.it_value.tv_sec = (SDL_alarm_interval/1000); ++ //timer.it_value.tv_usec = (SDL_alarm_interval%1000)*1000; ++ //timer.it_interval.tv_sec = (SDL_alarm_interval/1000); ++ //timer.it_interval.tv_usec = (SDL_alarm_interval%1000)*1000; ++ //setitimer(ITIMER_REAL, &timer, NULL); + return(0); + } + + void SDL_SYS_StopTimer(void) + { +- struct itimerval timer; ++ //struct itimerval timer; + +- SDL_memset(&timer, 0, (sizeof timer)); +- setitimer(ITIMER_REAL, &timer, NULL); ++ //SDL_memset(&timer, 0, (sizeof timer)); ++ //setitimer(ITIMER_REAL, &timer, NULL); + } + + #else /* USE_ITIMER */ diff --git a/recipes/sdl/recipe.sh b/recipes/sdl/recipe.sh index 045d4dfb..6e7695c3 100644 --- a/recipes/sdl/recipe.sh +++ b/recipes/sdl/recipe.sh @@ -13,8 +13,8 @@ function recipe_update { function recipe_build { ./autogen.sh - ./configure --prefix=/ --host=${HOST} --disable-shared --disable-pulseaudio --disable-video-x11 --disable-cdrom --disable-loadso --disable-threads --disable-timers --enable-audio --enable-dummyaudio --enable-video-orbital - make + ./configure --prefix=/ --host=${HOST} --disable-shared --disable-pulseaudio --disable-video-x11 --disable-cdrom --disable-loadso --disable-threads --enable-audio --enable-dummyaudio --enable-video-orbital + make skip=1 } From 966f9da237c0bb53818889be9ea87e8ae0c44365 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Mon, 23 Apr 2018 01:18:07 +0200 Subject: [PATCH 0373/3180] Fix prboom port --- recipes/prboom/01_redox.patch | 41 ++++++++++++++++++++++++++++------- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/recipes/prboom/01_redox.patch b/recipes/prboom/01_redox.patch index 8666b16e..576a04b1 100644 --- a/recipes/prboom/01_redox.patch +++ b/recipes/prboom/01_redox.patch @@ -1,22 +1,22 @@ -diff -rupN prboom-2.5.0/configure.ac prboom-2.5.0-redox/configure.ac ---- prboom-2.5.0/configure.ac 2008-11-09 11:12:37.000000000 -0800 -+++ prboom-2.5.0-redox/configure.ac 2017-10-14 23:27:16.000000000 -0700 +diff -burpN source-original/configure.ac source/configure.ac +--- source-original/configure.ac 2008-11-09 20:12:37.000000000 +0100 ++++ source/configure.ac 2018-04-22 23:41:16.945896818 +0200 @@ -85,8 +85,6 @@ if test "$cross_compiling" != "yes"; the fi - + dnl --- Header files, typedefs, structures -AC_TYPE_UID_T -AC_TYPE_SIZE_T AC_DECL_SYS_SIGLIST AC_HEADER_SYS_WAIT AC_CHECK_HEADERS(unistd.h asm/byteorder.h sched.h) -diff -rupN prboom-2.5.0/src/d_deh.c prboom-2.5.0-redox/src/d_deh.c ---- prboom-2.5.0/src/d_deh.c 2008-10-11 05:10:38.000000000 -0700 -+++ prboom-2.5.0-redox/src/d_deh.c 2017-10-14 23:29:00.000000000 -0700 +diff -burpN source-original/src/d_deh.c source/src/d_deh.c +--- source-original/src/d_deh.c 2008-10-11 14:10:38.000000000 +0200 ++++ source/src/d_deh.c 2018-04-22 23:41:16.949896859 +0200 @@ -54,17 +54,6 @@ #define TRUE 1 #define FALSE 0 - + -#ifndef HAVE_STRLWR -#include - @@ -30,3 +30,28 @@ diff -rupN prboom-2.5.0/src/d_deh.c prboom-2.5.0-redox/src/d_deh.c - // killough 10/98: new functions, to allow processing DEH files in-memory // (e.g. from wads) + +diff -burpN source-original/src/SDL/i_video.c source/src/SDL/i_video.c +--- source-original/src/SDL/i_video.c 2008-10-18 15:32:29.000000000 +0200 ++++ source/src/SDL/i_video.c 2018-04-23 00:51:18.944949507 +0200 +@@ -407,7 +407,7 @@ void I_FinishUpdate (void) + I_UploadNewPalette(newpal); + newpal = NO_PALETTE_CHANGE; + } +- SDL_Flip(screen); ++ SDL_UpdateRect(screen, 0, 0, screen->w, screen->h); + } + + // +diff -burpN source-original/src/v_video.c source/src/v_video.c +--- source-original/src/v_video.c 2008-10-11 14:10:41.000000000 +0200 ++++ source/src/v_video.c 2018-04-22 23:43:10.939034965 +0200 +@@ -558,7 +558,7 @@ void V_UpdateTrueColorPalette(video_mode + ng = (int)(g*t+roundUpG); + nb = (int)(b*t+roundUpB); + Palettes32[((p*256+i)*VID_NUMCOLORWEIGHTS)+w] = ( +- (nr<<16) | (ng<<8) | nb ++ (255<<24) | (nr<<16) | (ng<<8) | nb + ); + } + } From cd54c7e822dbed470194ef50053f82d2d8c8e8b5 Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Mon, 23 Apr 2018 10:49:50 +0200 Subject: [PATCH 0374/3180] Add powerline-rs recipe --- recipes/powerline/recipe.sh | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 recipes/powerline/recipe.sh diff --git a/recipes/powerline/recipe.sh b/recipes/powerline/recipe.sh new file mode 100644 index 00000000..84812a86 --- /dev/null +++ b/recipes/powerline/recipe.sh @@ -0,0 +1,2 @@ +GIT=https://github.com/jD91mZM2/powerline-rs +CARGOFLAGS="--no-default-features --features chrono" From 0cdf0867d94e184c18a4c51c67d042441dc14cd0 Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Mon, 23 Apr 2018 10:54:37 +0200 Subject: [PATCH 0375/3180] Add ncdu recipe --- recipes/ncdu/recipe.sh | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 recipes/ncdu/recipe.sh diff --git a/recipes/ncdu/recipe.sh b/recipes/ncdu/recipe.sh new file mode 100644 index 00000000..577518de --- /dev/null +++ b/recipes/ncdu/recipe.sh @@ -0,0 +1,33 @@ +VERSION=1.13 +TAR=https://dev.yorhel.nl/download/ncdu-$VERSION.tar.gz +BUILD_DEPENDS=(ncurses) +DEPENDS=(terminfo) + +function recipe_version { + echo "$VERSION" + skip=1 +} +function recipe_update { + echo "skipping update" + skip=1 +} +function recipe_build { + sysroot="$PWD/../sysroot" + export LDFLAGS="-L$sysroot/lib" + export CPPFLAGS="-I$sysroot/include -I$sysroot/include/ncurses" + ./configure \ + --build x86_64-pc-linux-gnu \ + --host "$HOST" + make + skip=1 +} +function recipe_test { + echo "skipping test" + skip=1 +} +function recipe_stage { + dest="$(realpath "$1")" + echo "$dest" + make DESTDIR="$dest" install + skip=1 +} From 6c3bbeb4d2e22a39d9e10f29944b718c782cb337 Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Mon, 23 Apr 2018 11:16:21 +0200 Subject: [PATCH 0376/3180] Change installation location --- recipes/ncdu/recipe.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/recipes/ncdu/recipe.sh b/recipes/ncdu/recipe.sh index 577518de..d2be33c7 100644 --- a/recipes/ncdu/recipe.sh +++ b/recipes/ncdu/recipe.sh @@ -27,7 +27,13 @@ function recipe_test { } function recipe_stage { dest="$(realpath "$1")" - echo "$dest" make DESTDIR="$dest" install + cd "$dest/usr/local/bin/" + find . -type f -exec install -D "{}" "$dest/usr/bin/{}" \; + cd - + cd "$dest/usr/local/share/" + find . -type f -exec install -D "{}" "$dest/share/{}" \; + cd - + rm -r "$dest/usr/local/" skip=1 } From 680071202ea6e0010cb5f81cdb6122d113d17606 Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Mon, 23 Apr 2018 11:40:41 +0200 Subject: [PATCH 0377/3180] Add ttf-hack recipe --- recipes/ttf-hack/recipe.sh | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 recipes/ttf-hack/recipe.sh diff --git a/recipes/ttf-hack/recipe.sh b/recipes/ttf-hack/recipe.sh new file mode 100644 index 00000000..21c2b8b9 --- /dev/null +++ b/recipes/ttf-hack/recipe.sh @@ -0,0 +1,35 @@ +VERSION=3.003 +TAR="https://github.com/source-foundry/Hack/releases/download/v$VERSION/Hack-v$VERSION-ttf.tar.xz" + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + echo "skipping build" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + echo "skipping clean" + skip=1 +} + +function recipe_stage { + dest="$(realpath "$1")" + for file in *.ttf; do + install -D -m 644 "$file" "$dest/ui/fonts/Hack/$file" + done + skip=1 +} From 16decabc799d48c714ccc46d9322e03501f1b31a Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Mon, 23 Apr 2018 11:41:41 +0200 Subject: [PATCH 0378/3180] Add recipe_clean function --- recipes/ncdu/recipe.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/recipes/ncdu/recipe.sh b/recipes/ncdu/recipe.sh index d2be33c7..46131850 100644 --- a/recipes/ncdu/recipe.sh +++ b/recipes/ncdu/recipe.sh @@ -25,6 +25,10 @@ function recipe_test { echo "skipping test" skip=1 } +function recipe_clean { + make clean + skip=1 +} function recipe_stage { dest="$(realpath "$1")" make DESTDIR="$dest" install From f3e129c39e6fe97e3fdece0561792927fa3ccad2 Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Mon, 23 Apr 2018 11:44:36 +0200 Subject: [PATCH 0379/3180] Change installation directory --- recipes/ttf-hack/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/ttf-hack/recipe.sh b/recipes/ttf-hack/recipe.sh index 21c2b8b9..b6830726 100644 --- a/recipes/ttf-hack/recipe.sh +++ b/recipes/ttf-hack/recipe.sh @@ -29,7 +29,7 @@ function recipe_clean { function recipe_stage { dest="$(realpath "$1")" for file in *.ttf; do - install -D -m 644 "$file" "$dest/ui/fonts/Hack/$file" + install -D -m 644 "$file" "$dest/ui/fonts/Mono/Hack/$file" done skip=1 } From 9d5f1ebd2745231a104d6c012026716419a132e4 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Thu, 26 Apr 2018 02:30:31 +0200 Subject: [PATCH 0380/3180] Add liborbital recipe --- recipes/liborbital/recipe.sh | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 recipes/liborbital/recipe.sh diff --git a/recipes/liborbital/recipe.sh b/recipes/liborbital/recipe.sh new file mode 100644 index 00000000..1c4e2bf6 --- /dev/null +++ b/recipes/liborbital/recipe.sh @@ -0,0 +1,7 @@ +GIT=https://github.com/xtibor/liborbital + +function recipe_stage { + dest="$(realpath $1)" + make HOST="$HOST" DESTDIR="$dest" install + skip=1 +} From d80128bbd2f2198181017f07f7a5f859b417750e Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Thu, 26 Apr 2018 02:33:45 +0200 Subject: [PATCH 0381/3180] Use liborbital in SDL --- recipes/sdl/01_orbital.patch | 535 ++++++++++++++--------------------- recipes/sdl/recipe.sh | 4 + 2 files changed, 211 insertions(+), 328 deletions(-) diff --git a/recipes/sdl/01_orbital.patch b/recipes/sdl/01_orbital.patch index 0ec45c04..c7365591 100644 --- a/recipes/sdl/01_orbital.patch +++ b/recipes/sdl/01_orbital.patch @@ -1,6 +1,6 @@ -diff -rupN source/build-scripts/config.sub source-redox/build-scripts/config.sub ---- source/build-scripts/config.sub 2012-01-18 23:30:05.000000000 -0700 -+++ source-redox/build-scripts/config.sub 2018-02-27 20:42:46.287901516 -0700 +diff -rupNw source-original/build-scripts/config.sub source/build-scripts/config.sub +--- source-original/build-scripts/config.sub 2012-01-19 07:30:05.000000000 +0100 ++++ source/build-scripts/config.sub 2018-04-23 17:03:35.533588029 +0200 @@ -1276,7 +1276,7 @@ case $os in -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ @@ -10,9 +10,9 @@ diff -rupN source/build-scripts/config.sub source-redox/build-scripts/config.sub | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ -diff -rupN source/configure.in source-redox/configure.in ---- source/configure.in 2012-01-18 23:30:05.000000000 -0700 -+++ source-redox/configure.in 2018-02-27 20:42:46.311902357 -0700 +diff -rupNw source-original/configure.in source/configure.in +--- source-original/configure.in 2012-01-19 07:30:05.000000000 +0100 ++++ source/configure.in 2018-04-23 17:03:35.533588029 +0200 @@ -1646,6 +1646,19 @@ AC_HELP_STRING([--enable-video-dummy], [ fi } @@ -54,9 +54,9 @@ diff -rupN source/configure.in source-redox/configure.in CheckDiskAudio CheckDummyAudio CheckDLOPEN -diff -rupN source/include/SDL_config.h.in source-redox/include/SDL_config.h.in ---- source/include/SDL_config.h.in 2012-01-18 23:30:05.000000000 -0700 -+++ source-redox/include/SDL_config.h.in 2018-02-27 20:42:46.311902357 -0700 +diff -rupNw source-original/include/SDL_config.h.in source/include/SDL_config.h.in +--- source-original/include/SDL_config.h.in 2012-01-19 07:30:05.000000000 +0100 ++++ source/include/SDL_config.h.in 2018-04-23 17:03:35.533588029 +0200 @@ -268,6 +268,7 @@ #undef SDL_VIDEO_DRIVER_GGI #undef SDL_VIDEO_DRIVER_IPOD @@ -65,10 +65,10 @@ diff -rupN source/include/SDL_config.h.in source-redox/include/SDL_config.h.in #undef SDL_VIDEO_DRIVER_OS2FS #undef SDL_VIDEO_DRIVER_PHOTON #undef SDL_VIDEO_DRIVER_PICOGUI -diff -rupN source/src/video/orbital/SDL_orbitalevents.c source-redox/src/video/orbital/SDL_orbitalevents.c ---- source/src/video/orbital/SDL_orbitalevents.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-redox/src/video/orbital/SDL_orbitalevents.c 2018-02-27 20:42:46.335903198 -0700 -@@ -0,0 +1,190 @@ +diff -rupNw source-original/src/video/orbital/SDL_orbitalevents.c source/src/video/orbital/SDL_orbitalevents.c +--- source-original/src/video/orbital/SDL_orbitalevents.c 1970-01-01 01:00:00.000000000 +0100 ++++ source/src/video/orbital/SDL_orbitalevents.c 2018-04-25 01:53:33.077960454 +0200 +@@ -0,0 +1,198 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -96,79 +96,87 @@ diff -rupN source/src/video/orbital/SDL_orbitalevents.c source-redox/src/video/o +#include "../../events/SDL_sysevents.h" +#include "../../events/SDL_events_c.h" + ++#include +#include "SDL_orbitalvideo.h" +#include "SDL_orbitalevents_c.h" -+#include "SDL_orbitalscancode.h" + +#include + +static SDLKey keymap[128]; + -+#define EVENT_NONE 0 -+#define EVENT_KEY 1 -+#define EVENT_MOUSE 2 -+#define EVENT_BUTTON 3 -+#define EVENT_SCROLL 4 -+#define EVENT_QUIT 5 -+#define EVENT_FOCUS 6 -+#define EVENT_MOVE 7 -+#define EVENT_RESIZE 8 -+#define EVENT_SCREEN 9 -+ -+struct Event { -+ int64_t code; -+ int64_t a; -+ int64_t b; -+} __attribute__((packed)); -+ +/* Static variables so only changes are reported */ -+static int64_t last_buttons = 0; ++static bool last_button_left = false; ++static bool last_button_middle = false; ++static bool last_button_right = false; + ++// TODO: Find out why NetSurf recieves NULL chars when the keysym.unicode field is used +void ORBITAL_PumpEvents(_THIS) +{ -+ struct Event event; -+ while(read(this->hidden->fd, &event, sizeof(event)) > 0){ -+ if ( event.code == EVENT_KEY ) { -+ SDL_keysym keysym; ++ SDL_keysym keysym; + -+ // TODO: Find out why NetSurf recieves NULL chars when the Unicode field is used -+ //keysym.unicode = event.a; -+ keysym.scancode = event.b & 0xFF; -+ keysym.sym = keymap[event.b & 0xFF]; -+ keysym.mod = KMOD_NONE; -+ if ( (event.b >> 8) & 0x01 > 0 ) { -+ SDL_PrivateKeyboard(SDL_PRESSED, &keysym); -+ } else { -+ SDL_PrivateKeyboard(SDL_RELEASED, &keysym); -+ } -+ } else if ( event.code == EVENT_MOUSE ) { -+ SDL_PrivateMouseMotion(0, 0, event.a, event.b); -+ //SDL_PrivateMouseButton(Uint8 state, Uint8 button, Sint16 x, Sint16 y); -+ } else if ( event.code == EVENT_BUTTON ) { -+ int64_t changed = event.a ^ last_buttons; ++ void* event_iter = orb_window_events(this->hidden->window); ++ OrbEventOption oeo = orb_events_next(event_iter); + -+ if ( changed & 0x01 ) -+ SDL_PrivateMouseButton((event.a & 0x01) ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_LEFT, 0, 0); -+ if ( changed & 0x02 ) -+ SDL_PrivateMouseButton((event.a & 0x02) ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_MIDDLE, 0, 0); -+ if ( changed & 0x04 ) -+ SDL_PrivateMouseButton((event.a & 0x04) ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_RIGHT, 0, 0); ++ while (oeo.tag != OrbEventOption_None) { ++ switch (oeo.tag) { ++ case OrbEventOption_Key: ++ //keysym.unicode = oeo.key.character; ++ keysym.scancode = oeo.key.scancode; ++ keysym.sym = keymap[oeo.key.scancode]; ++ keysym.mod = KMOD_NONE; + -+ last_buttons = event.a; -+ } else if ( event.code == EVENT_SCROLL ) { -+ if ( event.b > 0 ) { -+ SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_WHEELUP, 0, 0); -+ SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_WHEELUP, 0, 0); -+ } else if ( event.b < 0 ) { -+ SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_WHEELDOWN, 0, 0); -+ SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_WHEELDOWN, 0, 0); -+ } -+ } else if ( event.code == EVENT_RESIZE ) { -+ SDL_PrivateResize(event.a, event.b); -+ } else if ( event.code == EVENT_QUIT ) { -+ SDL_PrivateQuit(); ++ SDL_PrivateKeyboard(oeo.key.pressed ? SDL_PRESSED : SDL_RELEASED, &keysym); ++ break; ++ case OrbEventOption_Mouse: ++ SDL_PrivateMouseMotion(0, 0, oeo.mouse.x, oeo.mouse.y); ++ break; ++ case OrbEventOption_Button: ++ if (oeo.button.left ^ last_button_left) ++ SDL_PrivateMouseButton(oeo.button.left ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_LEFT, 0, 0); ++ if (oeo.button.middle ^ last_button_middle) ++ SDL_PrivateMouseButton(oeo.button.middle ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_MIDDLE, 0, 0); ++ if (oeo.button.right ^ last_button_right) ++ SDL_PrivateMouseButton(oeo.button.right ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_RIGHT, 0, 0); ++ ++ last_button_left = oeo.button.left; ++ last_button_middle = oeo.button.middle; ++ last_button_right = oeo.button.right; ++ break; ++ case OrbEventOption_Scroll: ++ if (oeo.scroll.y > 0) { ++ SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_WHEELUP, 0, 0); ++ SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_WHEELUP, 0, 0); ++ } else if (oeo.scroll.y < 0) { ++ SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_WHEELDOWN, 0, 0); ++ SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_WHEELDOWN, 0, 0); ++ } ++ break; ++ case OrbEventOption_Quit: ++ SDL_PrivateQuit(); ++ break; ++ case OrbEventOption_Focus: ++ SDL_PrivateAppActive(oeo.focus.focused, SDL_APPMOUSEFOCUS); ++ break; ++ case OrbEventOption_Move: ++ // oeo.move.x, oeo.move.y ++ break; ++ case OrbEventOption_Resize: ++ SDL_PrivateResize(oeo.resize.width, oeo.resize.height); ++ break; ++ case OrbEventOption_Screen: ++ // oeo.screen.width, oeo.screen.height ++ break; ++ case OrbEventOption_Unknown: ++ // oeo.unknown.code, oeo.unknown.a, oeo.unknown.b ++ break; ++ default: ++ break; + } ++ ++ oeo = orb_events_next(event_iter); + } ++ ++ orb_events_destroy(event_iter); +} + +void ORBITAL_InitOSKeymap(_THIS) @@ -177,91 +185,91 @@ diff -rupN source/src/video/orbital/SDL_orbitalevents.c source-redox/src/video/o + for ( i = 0; i < SDL_arraysize(keymap); ++i ) + keymap[i] = SDLK_UNKNOWN; + -+ keymap[SCANCODE_ESCAPE] = SDLK_ESCAPE; -+ keymap[SCANCODE_1] = SDLK_1; -+ keymap[SCANCODE_2] = SDLK_2; -+ keymap[SCANCODE_3] = SDLK_3; -+ keymap[SCANCODE_4] = SDLK_4; -+ keymap[SCANCODE_5] = SDLK_5; -+ keymap[SCANCODE_6] = SDLK_6; -+ keymap[SCANCODE_7] = SDLK_7; -+ keymap[SCANCODE_8] = SDLK_8; -+ keymap[SCANCODE_9] = SDLK_9; -+ keymap[SCANCODE_0] = SDLK_0; -+ keymap[SCANCODE_MINUS] = SDLK_MINUS; -+ keymap[SCANCODE_EQUAL] = SDLK_EQUALS; -+ keymap[SCANCODE_BACKSPACE] = SDLK_BACKSPACE; -+ keymap[SCANCODE_TAB] = SDLK_TAB; -+ keymap[SCANCODE_Q] = SDLK_q; -+ keymap[SCANCODE_W] = SDLK_w; -+ keymap[SCANCODE_E] = SDLK_e; -+ keymap[SCANCODE_R] = SDLK_r; -+ keymap[SCANCODE_T] = SDLK_t; -+ keymap[SCANCODE_Y] = SDLK_y; -+ keymap[SCANCODE_U] = SDLK_u; -+ keymap[SCANCODE_I] = SDLK_i; -+ keymap[SCANCODE_O] = SDLK_o; -+ keymap[SCANCODE_P] = SDLK_p; -+ keymap[SCANCODE_BRACKET_LEFT] = SDLK_LEFTBRACKET; -+ keymap[SCANCODE_BRACKET_RIGHT] = SDLK_RIGHTBRACKET; -+ keymap[SCANCODE_ENTER] = SDLK_RETURN; -+ keymap[SCANCODE_LEFTCONTROL] = SDLK_LCTRL; -+ keymap[SCANCODE_A] = SDLK_a; -+ keymap[SCANCODE_S] = SDLK_s; -+ keymap[SCANCODE_D] = SDLK_d; -+ keymap[SCANCODE_F] = SDLK_f; -+ keymap[SCANCODE_G] = SDLK_g; -+ keymap[SCANCODE_H] = SDLK_h; -+ keymap[SCANCODE_J] = SDLK_j; -+ keymap[SCANCODE_K] = SDLK_k; -+ keymap[SCANCODE_L] = SDLK_l; -+ keymap[SCANCODE_SEMICOLON] = SDLK_SEMICOLON; -+ keymap[SCANCODE_APOSTROPHE] = SDLK_QUOTE; -+ keymap[SCANCODE_TICK] = SDLK_BACKQUOTE; -+ keymap[SCANCODE_LEFTSHIFT] = SDLK_LSHIFT; -+ keymap[SCANCODE_RIGHTSHIFT] = SDLK_RSHIFT; -+ keymap[SCANCODE_BACKSLASH] = SDLK_BACKSLASH; -+ keymap[SCANCODE_Z] = SDLK_z; -+ keymap[SCANCODE_X] = SDLK_x; -+ keymap[SCANCODE_C] = SDLK_c; -+ keymap[SCANCODE_V] = SDLK_v; -+ keymap[SCANCODE_B] = SDLK_b; -+ keymap[SCANCODE_N] = SDLK_n; -+ keymap[SCANCODE_M] = SDLK_m; -+ keymap[SCANCODE_COMMA] = SDLK_COMMA; -+ keymap[SCANCODE_PERIOD] = SDLK_PERIOD; -+ keymap[SCANCODE_SLASH] = SDLK_SLASH; -+ keymap[SCANCODE_LEFTALT] = SDLK_LALT; -+ keymap[SCANCODE_SPACE] = SDLK_SPACE; -+ keymap[SCANCODE_CAPSLOCK] = SDLK_CAPSLOCK; -+ keymap[SCANCODE_F1] = SDLK_F1; -+ keymap[SCANCODE_F2] = SDLK_F2; -+ keymap[SCANCODE_F3] = SDLK_F3; -+ keymap[SCANCODE_F4] = SDLK_F4; -+ keymap[SCANCODE_F5] = SDLK_F5; -+ keymap[SCANCODE_F6] = SDLK_F6; -+ keymap[SCANCODE_F7] = SDLK_F7; -+ keymap[SCANCODE_F8] = SDLK_F8; -+ keymap[SCANCODE_F9] = SDLK_F9; -+ keymap[SCANCODE_F10] = SDLK_F10; -+ keymap[SCANCODE_F11] = SDLK_F11; -+ keymap[SCANCODE_F12] = SDLK_F12; -+ keymap[SCANCODE_HOME] = SDLK_HOME; -+ keymap[SCANCODE_CURSORBLOCKUP] = SDLK_UP; -+ keymap[SCANCODE_PAGEUP] = SDLK_PAGEUP; -+ keymap[SCANCODE_CURSORBLOCKLEFT] = SDLK_LEFT; -+ keymap[SCANCODE_CURSORBLOCKRIGHT] = SDLK_RIGHT; -+ keymap[SCANCODE_END] = SDLK_END; -+ keymap[SCANCODE_CURSORBLOCKDOWN] = SDLK_DOWN; -+ keymap[SCANCODE_PAGEDOWN] = SDLK_PAGEDOWN; -+ keymap[SCANCODE_INSERT] = SDLK_INSERT; -+ keymap[SCANCODE_DELETE] = SDLK_DELETE; ++ keymap[ORB_KEY_ESC] = SDLK_ESCAPE; ++ keymap[ORB_KEY_1] = SDLK_1; ++ keymap[ORB_KEY_2] = SDLK_2; ++ keymap[ORB_KEY_3] = SDLK_3; ++ keymap[ORB_KEY_4] = SDLK_4; ++ keymap[ORB_KEY_5] = SDLK_5; ++ keymap[ORB_KEY_6] = SDLK_6; ++ keymap[ORB_KEY_7] = SDLK_7; ++ keymap[ORB_KEY_8] = SDLK_8; ++ keymap[ORB_KEY_9] = SDLK_9; ++ keymap[ORB_KEY_0] = SDLK_0; ++ keymap[ORB_KEY_MINUS] = SDLK_MINUS; ++ keymap[ORB_KEY_EQUALS] = SDLK_EQUALS; ++ keymap[ORB_KEY_BKSP] = SDLK_BACKSPACE; ++ keymap[ORB_KEY_TAB] = SDLK_TAB; ++ keymap[ORB_KEY_Q] = SDLK_q; ++ keymap[ORB_KEY_W] = SDLK_w; ++ keymap[ORB_KEY_E] = SDLK_e; ++ keymap[ORB_KEY_R] = SDLK_r; ++ keymap[ORB_KEY_T] = SDLK_t; ++ keymap[ORB_KEY_Y] = SDLK_y; ++ keymap[ORB_KEY_U] = SDLK_u; ++ keymap[ORB_KEY_I] = SDLK_i; ++ keymap[ORB_KEY_O] = SDLK_o; ++ keymap[ORB_KEY_P] = SDLK_p; ++ keymap[ORB_KEY_BRACE_OPEN] = SDLK_LEFTBRACKET; ++ keymap[ORB_KEY_BRACE_CLOSE] = SDLK_RIGHTBRACKET; ++ keymap[ORB_KEY_ENTER] = SDLK_RETURN; ++ keymap[ORB_KEY_CTRL] = SDLK_LCTRL; ++ keymap[ORB_KEY_A] = SDLK_a; ++ keymap[ORB_KEY_S] = SDLK_s; ++ keymap[ORB_KEY_D] = SDLK_d; ++ keymap[ORB_KEY_F] = SDLK_f; ++ keymap[ORB_KEY_G] = SDLK_g; ++ keymap[ORB_KEY_H] = SDLK_h; ++ keymap[ORB_KEY_J] = SDLK_j; ++ keymap[ORB_KEY_K] = SDLK_k; ++ keymap[ORB_KEY_L] = SDLK_l; ++ keymap[ORB_KEY_SEMICOLON] = SDLK_SEMICOLON; ++ keymap[ORB_KEY_QUOTE] = SDLK_QUOTE; ++ keymap[ORB_KEY_TICK] = SDLK_BACKQUOTE; ++ keymap[ORB_KEY_LEFT_SHIFT] = SDLK_LSHIFT; ++ keymap[ORB_KEY_RIGHT_SHIFT] = SDLK_RSHIFT; ++ keymap[ORB_KEY_BACKSLASH] = SDLK_BACKSLASH; ++ keymap[ORB_KEY_Z] = SDLK_z; ++ keymap[ORB_KEY_X] = SDLK_x; ++ keymap[ORB_KEY_C] = SDLK_c; ++ keymap[ORB_KEY_V] = SDLK_v; ++ keymap[ORB_KEY_B] = SDLK_b; ++ keymap[ORB_KEY_N] = SDLK_n; ++ keymap[ORB_KEY_M] = SDLK_m; ++ keymap[ORB_KEY_COMMA] = SDLK_COMMA; ++ keymap[ORB_KEY_PERIOD] = SDLK_PERIOD; ++ keymap[ORB_KEY_SLASH] = SDLK_SLASH; ++ keymap[ORB_KEY_ALT] = SDLK_LALT; ++ keymap[ORB_KEY_SPACE] = SDLK_SPACE; ++ keymap[ORB_KEY_CAPS] = SDLK_CAPSLOCK; ++ keymap[ORB_KEY_F1] = SDLK_F1; ++ keymap[ORB_KEY_F2] = SDLK_F2; ++ keymap[ORB_KEY_F3] = SDLK_F3; ++ keymap[ORB_KEY_F4] = SDLK_F4; ++ keymap[ORB_KEY_F5] = SDLK_F5; ++ keymap[ORB_KEY_F6] = SDLK_F6; ++ keymap[ORB_KEY_F7] = SDLK_F7; ++ keymap[ORB_KEY_F8] = SDLK_F8; ++ keymap[ORB_KEY_F9] = SDLK_F9; ++ keymap[ORB_KEY_F10] = SDLK_F10; ++ keymap[ORB_KEY_F11] = SDLK_F11; ++ keymap[ORB_KEY_F12] = SDLK_F12; ++ keymap[ORB_KEY_HOME] = SDLK_HOME; ++ keymap[ORB_KEY_UP] = SDLK_UP; ++ keymap[ORB_KEY_PGUP] = SDLK_PAGEUP; ++ keymap[ORB_KEY_LEFT] = SDLK_LEFT; ++ keymap[ORB_KEY_RIGHT] = SDLK_RIGHT; ++ keymap[ORB_KEY_END] = SDLK_END; ++ keymap[ORB_KEY_DOWN] = SDLK_DOWN; ++ keymap[ORB_KEY_PGDN] = SDLK_PAGEDOWN; ++ keymap[ORB_KEY_INSERT] = SDLK_INSERT; ++ keymap[ORB_KEY_DEL] = SDLK_DELETE; +} + +/* end of SDL_orbitalevents.c ... */ -diff -rupN source/src/video/orbital/SDL_orbitalevents_c.h source-redox/src/video/orbital/SDL_orbitalevents_c.h ---- source/src/video/orbital/SDL_orbitalevents_c.h 1969-12-31 17:00:00.000000000 -0700 -+++ source-redox/src/video/orbital/SDL_orbitalevents_c.h 2018-02-27 20:42:46.335903198 -0700 +diff -rupNw source-original/src/video/orbital/SDL_orbitalevents_c.h source/src/video/orbital/SDL_orbitalevents_c.h +--- source-original/src/video/orbital/SDL_orbitalevents_c.h 1970-01-01 01:00:00.000000000 +0100 ++++ source/src/video/orbital/SDL_orbitalevents_c.h 2018-04-23 17:03:35.537588257 +0200 @@ -0,0 +1,32 @@ +/* + SDL - Simple DirectMedia Layer @@ -295,9 +303,9 @@ diff -rupN source/src/video/orbital/SDL_orbitalevents_c.h source-redox/src/video +extern void ORBITAL_PumpEvents(_THIS); + +/* end of SDL_orbitalevents_c.h ... */ -diff -rupN source/src/video/orbital/SDL_orbitalmouse.c source-redox/src/video/orbital/SDL_orbitalmouse.c ---- source/src/video/orbital/SDL_orbitalmouse.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-redox/src/video/orbital/SDL_orbitalmouse.c 2018-02-27 20:42:46.335903198 -0700 +diff -rupNw source-original/src/video/orbital/SDL_orbitalmouse.c source/src/video/orbital/SDL_orbitalmouse.c +--- source-original/src/video/orbital/SDL_orbitalmouse.c 1970-01-01 01:00:00.000000000 +0100 ++++ source/src/video/orbital/SDL_orbitalmouse.c 2018-04-23 17:03:35.537588257 +0200 @@ -0,0 +1,33 @@ +/* + SDL - Simple DirectMedia Layer @@ -332,9 +340,9 @@ diff -rupN source/src/video/orbital/SDL_orbitalmouse.c source-redox/src/video/or +struct WMcursor { + int unused; +}; -diff -rupN source/src/video/orbital/SDL_orbitalmouse_c.h source-redox/src/video/orbital/SDL_orbitalmouse_c.h ---- source/src/video/orbital/SDL_orbitalmouse_c.h 1969-12-31 17:00:00.000000000 -0700 -+++ source-redox/src/video/orbital/SDL_orbitalmouse_c.h 2018-02-27 20:42:46.335903198 -0700 +diff -rupNw source-original/src/video/orbital/SDL_orbitalmouse_c.h source/src/video/orbital/SDL_orbitalmouse_c.h +--- source-original/src/video/orbital/SDL_orbitalmouse_c.h 1970-01-01 01:00:00.000000000 +0100 ++++ source/src/video/orbital/SDL_orbitalmouse_c.h 2018-04-23 17:03:35.537588257 +0200 @@ -0,0 +1,26 @@ +/* + SDL - Simple DirectMedia Layer @@ -362,94 +370,10 @@ diff -rupN source/src/video/orbital/SDL_orbitalmouse_c.h source-redox/src/video/ +#include "SDL_orbitalvideo.h" + +/* Functions to be exported */ -diff -rupN source/src/video/orbital/SDL_orbitalscancode.h source-redox/src/video/orbital/SDL_orbitalscancode.h ---- source/src/video/orbital/SDL_orbitalscancode.h 1969-12-31 17:00:00.000000000 -0700 -+++ source-redox/src/video/orbital/SDL_orbitalscancode.h 2018-02-27 20:42:46.335903198 -0700 -@@ -0,0 +1,80 @@ -+#define SCANCODE_A 0x1E -+#define SCANCODE_B 0x30 -+#define SCANCODE_C 0x2E -+#define SCANCODE_D 0x20 -+#define SCANCODE_E 0x12 -+#define SCANCODE_F 0x21 -+#define SCANCODE_G 0x22 -+#define SCANCODE_H 0x23 -+#define SCANCODE_I 0x17 -+#define SCANCODE_J 0x24 -+#define SCANCODE_K 0x25 -+#define SCANCODE_L 0x26 -+#define SCANCODE_M 0x32 -+#define SCANCODE_N 0x31 -+#define SCANCODE_O 0x18 -+#define SCANCODE_P 0x19 -+#define SCANCODE_Q 0x10 -+#define SCANCODE_R 0x13 -+#define SCANCODE_S 0x1F -+#define SCANCODE_T 0x14 -+#define SCANCODE_U 0x16 -+#define SCANCODE_V 0x2F -+#define SCANCODE_W 0x11 -+#define SCANCODE_X 0x2D -+#define SCANCODE_Y 0x15 -+#define SCANCODE_Z 0x2C -+#define SCANCODE_0 0x0B -+#define SCANCODE_1 0x2 -+#define SCANCODE_2 0x3 -+#define SCANCODE_3 0x4 -+#define SCANCODE_4 0x5 -+#define SCANCODE_5 0x6 -+#define SCANCODE_6 0x7 -+#define SCANCODE_7 0x8 -+#define SCANCODE_8 0x9 -+#define SCANCODE_9 0x0A -+#define SCANCODE_TICK 0x29 -+#define SCANCODE_MINUS 0x0C -+#define SCANCODE_EQUAL 0x0D -+#define SCANCODE_BACKSLASH 0x2B -+#define SCANCODE_BACKSPACE 0x0E -+#define SCANCODE_SPACE 0x39 -+#define SCANCODE_TAB 0x0F -+#define SCANCODE_CAPSLOCK 0x3A -+#define SCANCODE_LEFTSHIFT 0x2A -+#define SCANCODE_LEFTCONTROL 0x1D -+#define SCANCODE_LEFTALT 0x38 -+#define SCANCODE_RIGHTSHIFT 0x36 -+#define SCANCODE_ENTER 0x1C -+#define SCANCODE_ESCAPE 0x1 -+#define SCANCODE_F1 0x3B -+#define SCANCODE_F2 0x3C -+#define SCANCODE_F3 0x3D -+#define SCANCODE_F4 0x3E -+#define SCANCODE_F5 0x3F -+#define SCANCODE_F6 0x40 -+#define SCANCODE_F7 0x41 -+#define SCANCODE_F8 0x42 -+#define SCANCODE_F9 0x43 -+#define SCANCODE_F10 0x44 -+#define SCANCODE_F11 0x57 -+#define SCANCODE_F12 0x58 -+#define SCANCODE_SCROLL 0x46 -+#define SCANCODE_BRACKET_LEFT 0x1A -+#define SCANCODE_BRACKET_RIGHT 0x1B -+#define SCANCODE_INSERT 0x52 -+#define SCANCODE_HOME 0x47 -+#define SCANCODE_PAGEUP 0x49 -+#define SCANCODE_DELETE 0x53 -+#define SCANCODE_END 0x4F -+#define SCANCODE_PAGEDOWN 0x51 -+#define SCANCODE_CURSORBLOCKUP 0x48 -+#define SCANCODE_CURSORBLOCKLEFT 0x4B -+#define SCANCODE_CURSORBLOCKDOWN 0x50 -+#define SCANCODE_CURSORBLOCKRIGHT 0x4D -+#define SCANCODE_SEMICOLON 0x27 -+#define SCANCODE_APOSTROPHE 0x28 -+#define SCANCODE_COMMA 0x33 -+#define SCANCODE_PERIOD 0x34 -+#define SCANCODE_SLASH 0x35 -diff -rupN source/src/video/orbital/SDL_orbitalvideo.c source-redox/src/video/orbital/SDL_orbitalvideo.c ---- source/src/video/orbital/SDL_orbitalvideo.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-redox/src/video/orbital/SDL_orbitalvideo.c 2018-02-27 20:42:46.335903198 -0700 -@@ -0,0 +1,282 @@ +diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.c source/src/video/orbital/SDL_orbitalvideo.c +--- source-original/src/video/orbital/SDL_orbitalvideo.c 1970-01-01 01:00:00.000000000 +0100 ++++ source/src/video/orbital/SDL_orbitalvideo.c 2018-04-25 02:29:56.554079034 +0200 +@@ -0,0 +1,248 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -487,6 +411,7 @@ diff -rupN source/src/video/orbital/SDL_orbitalvideo.c source-redox/src/video/or +#include "../SDL_pixels_c.h" +#include "../../events/SDL_events_c.h" + ++#include +#include "SDL_orbitalvideo.h" +#include "SDL_orbitalevents_c.h" +#include "SDL_orbitalmouse_c.h" @@ -611,62 +536,37 @@ diff -rupN source/src/video/orbital/SDL_orbitalvideo.c source-redox/src/video/or + return(NULL); + } + -+ if ( this->hidden->buffer ) { -+ redox_funmap( this->hidden->buffer ); -+ this->hidden->buffer = NULL; -+ } -+ -+ if ( this->hidden->fd > 0 ) { -+ /* If the window already exists send a resize message to the display server */ -+ char msg[4096]; -+ int msg_len = snprintf(msg, 4096, "S,%d,%d", width, height); -+ int res = write(this->hidden->fd, msg, msg_len); -+ if ( res != msg_len ) { -+ close(this->hidden->fd); -+ this->hidden->fd = 0; -+ SDL_SetError("Couldn't write resize event"); -+ return(NULL); -+ } ++ if (this->hidden->window) { ++ orb_window_set_size(this->hidden->window, width, height); + } else { -+ /* Otherwise create a new window */ -+ char path[4096]; -+ snprintf(path, 4096, "orbital:a%s/-1/-1/%d/%d/SDL", (flags & SDL_RESIZABLE) ? "r" : "", width, height); -+ this->hidden->fd = open(path, O_RDWR); -+ if ( this->hidden->fd <= 0 ) { -+ this->hidden->fd = 0; ++ uint32_t flags = ORB_WINDOW_ASYNC; ++ if (flags & SDL_RESIZABLE) ++ flags |= ORB_WINDOW_RESIZABLE; ++ ++ this->hidden->window = orb_window_new_flags(-1, -1, width, height, "SDL", flags); ++ if (!this->hidden->window) { + SDL_SetError("Couldn't create window for requested mode"); + return(NULL); + } -+ printf("%s at %d\n", path, this->hidden->fd); -+ } -+ -+ this->hidden->buffer = redox_fmap(this->hidden->fd, 0, width * height * (bpp / 8)); -+ if ( ! this->hidden->buffer ) { -+ close(this->hidden->fd); -+ this->hidden->fd = 0; -+ SDL_SetError("Couldn't map window for requested mode"); -+ return(NULL); + } + + fprintf(stderr, "Setting mode %dx%d@%d\n", width, height, bpp); + + /* Allocate the new pixel format for the screen */ -+ + if ( ! SDL_ReallocFormat(current, bpp, 0, 0, 0, 0) ) { -+ redox_funmap(this->hidden->buffer); -+ this->hidden->buffer = NULL; -+ close(this->hidden->fd); -+ this->hidden->fd = 0; ++ orb_window_destroy(this->hidden->window); ++ this->hidden->window = NULL; ++ + SDL_SetError("Couldn't allocate new pixel format for requested mode"); + return(NULL); + } + + /* Set up the new mode framebuffer */ + current->flags = flags /*& SDL_FULLSCREEN*/; -+ this->hidden->w = current->w = width; -+ this->hidden->h = current->h = height; -+ current->pitch = current->w * (bpp / 8); -+ current->pixels = this->hidden->buffer; ++ current->w = width; ++ current->h = height; ++ current->pitch = width * (bpp / 8); ++ current->pixels = orb_window_data(this->hidden->window); + + /* We're done */ + return(current); @@ -674,14 +574,8 @@ diff -rupN source/src/video/orbital/SDL_orbitalvideo.c source-redox/src/video/or + +static void ORBITAL_SetCaption(_THIS, const char *title, const char *icon) +{ -+ if ( this->hidden->fd > 0 ) { -+ char msg[4096]; -+ int msg_len = snprintf(msg, 4096, "T,%s", title); -+ int res = write(this->hidden->fd, msg, msg_len); -+ if ( res != msg_len ) { -+ SDL_SetError("Couldn't set window caption (write error)"); -+ } -+ } ++ if (this->hidden->window) ++ orb_window_set_title(this->hidden->window, title); +} + +/* We don't actually allow hardware surfaces other than the main one */ @@ -707,7 +601,8 @@ diff -rupN source/src/video/orbital/SDL_orbitalvideo.c source-redox/src/video/or + +static void ORBITAL_UpdateRects(_THIS, int numrects, SDL_Rect *rects) +{ -+ fsync(this->hidden->fd); ++ if (this->hidden->window) ++ orb_window_sync(this->hidden->window); +} + +int ORBITAL_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors) @@ -721,21 +616,16 @@ diff -rupN source/src/video/orbital/SDL_orbitalvideo.c source-redox/src/video/or +*/ +void ORBITAL_VideoQuit(_THIS) +{ -+ if ( this->hidden->buffer ) { -+ redox_funmap( this->hidden->buffer ); -+ this->hidden->buffer = NULL; ++ if (this->hidden->window) { ++ orb_window_destroy(this->hidden->window); ++ this->hidden->window = NULL; + this->screen->pixels = NULL; + } -+ -+ if ( this->hidden->fd >= 0) { -+ close( this->hidden->fd ); -+ this->hidden->fd = 0; -+ } +} -diff -rupN source/src/video/orbital/SDL_orbitalvideo.h source-redox/src/video/orbital/SDL_orbitalvideo.h ---- source/src/video/orbital/SDL_orbitalvideo.h 1969-12-31 17:00:00.000000000 -0700 -+++ source-redox/src/video/orbital/SDL_orbitalvideo.h 2018-02-27 20:42:46.335903198 -0700 -@@ -0,0 +1,41 @@ +diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.h source/src/video/orbital/SDL_orbitalvideo.h +--- source-original/src/video/orbital/SDL_orbitalvideo.h 1970-01-01 01:00:00.000000000 +0100 ++++ source/src/video/orbital/SDL_orbitalvideo.h 2018-04-23 17:04:31.224570535 +0200 +@@ -0,0 +1,39 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -771,15 +661,13 @@ diff -rupN source/src/video/orbital/SDL_orbitalvideo.h source-redox/src/video/or +/* Private display data */ + +struct SDL_PrivateVideoData { -+ int w, h; -+ int fd; -+ void *buffer; ++ void *window; +}; + +#endif /* _SDL_orbitalvideo_h */ -diff -rupN source/src/video/SDL_gamma.c source-redox/src/video/SDL_gamma.c ---- source/src/video/SDL_gamma.c 2012-01-18 23:30:06.000000000 -0700 -+++ source-redox/src/video/SDL_gamma.c 2018-02-27 20:56:59.314549375 -0700 +diff -rupNw source-original/src/video/SDL_gamma.c source/src/video/SDL_gamma.c +--- source-original/src/video/SDL_gamma.c 2012-01-19 07:30:06.000000000 +0100 ++++ source/src/video/SDL_gamma.c 2018-04-23 17:03:35.537588257 +0200 @@ -35,6 +35,9 @@ #define log(x) __ieee754_log(x) #endif @@ -790,9 +678,9 @@ diff -rupN source/src/video/SDL_gamma.c source-redox/src/video/SDL_gamma.c #include "SDL_sysvideo.h" -diff -rupN source/src/video/SDL_sysvideo.h source-redox/src/video/SDL_sysvideo.h ---- source/src/video/SDL_sysvideo.h 2012-01-18 23:30:06.000000000 -0700 -+++ source-redox/src/video/SDL_sysvideo.h 2018-02-27 20:42:46.335903198 -0700 +diff -rupNw source-original/src/video/SDL_sysvideo.h source/src/video/SDL_sysvideo.h +--- source-original/src/video/SDL_sysvideo.h 2012-01-19 07:30:06.000000000 +0100 ++++ source/src/video/SDL_sysvideo.h 2018-04-23 17:03:35.537588257 +0200 @@ -410,6 +410,9 @@ extern VideoBootStrap AALIB_bootstrap; #if SDL_VIDEO_DRIVER_CACA extern VideoBootStrap CACA_bootstrap; @@ -803,9 +691,9 @@ diff -rupN source/src/video/SDL_sysvideo.h source-redox/src/video/SDL_sysvideo.h #if SDL_VIDEO_DRIVER_DUMMY extern VideoBootStrap DUMMY_bootstrap; #endif -diff -rupN source/src/video/SDL_video.c source-redox/src/video/SDL_video.c ---- source/src/video/SDL_video.c 2012-01-18 23:30:06.000000000 -0700 -+++ source-redox/src/video/SDL_video.c 2018-02-27 20:45:30.447873197 -0700 +diff -rupNw source-original/src/video/SDL_video.c source/src/video/SDL_video.c +--- source-original/src/video/SDL_video.c 2012-01-19 07:30:06.000000000 +0100 ++++ source/src/video/SDL_video.c 2018-04-23 17:03:35.541588484 +0200 @@ -126,6 +126,9 @@ static VideoBootStrap *bootstrap[] = { #if SDL_VIDEO_DRIVER_CACA &CACA_bootstrap, @@ -826,12 +714,3 @@ diff -rupN source/src/video/SDL_video.c source-redox/src/video/SDL_video.c /* Now adjust the offsets to match the desired mode */ video->offset_x = (mode->w-width)/2; -@@ -1598,7 +1602,7 @@ void SDL_GL_UpdateRects(int numrects, SD - this->glFlush(); - /* - * Note the parens around the function name: -- * This is because some OpenGL implementations define glTexCoord etc -+ * This is because some OpenGL implementations define glTexCoord etc - * as macros, and we don't want them expanded here. - */ - this->glBegin(GL_TRIANGLE_STRIP); diff --git a/recipes/sdl/recipe.sh b/recipes/sdl/recipe.sh index 6e7695c3..da0031fe 100644 --- a/recipes/sdl/recipe.sh +++ b/recipes/sdl/recipe.sh @@ -1,5 +1,9 @@ VERSION=1.2.15 TAR=https://www.libsdl.org/release/SDL-$VERSION.tar.gz +BUILD_DEPENDS=(liborbital) + +export CFLAGS="-I$PWD/sysroot/include/" +export LDFLAGS="-L$PWD/sysroot/lib/" function recipe_version { echo "$VERSION" From e0f9a624abd80813f85751d059332f73e6015669 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 26 Apr 2018 20:33:59 -0600 Subject: [PATCH 0382/3180] Incremental rust build --- recipes/rust/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index 28597ed1..0ee45283 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -78,7 +78,7 @@ function recipe_build { make install popd - python x.py build --config ../config.toml --jobs $(nproc) + python x.py dist --config ../config.toml --jobs $(nproc) --incremental skip=1 } From 88f9d40aabb2916b7355581ccc9b4ef0c0f19109 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Sun, 29 Apr 2018 23:50:07 +0200 Subject: [PATCH 0383/3180] Fix linking problems The Rust code and some built-in compiler functions (__divdc3/__divsc3/__divxc3) complained about missing floating-point stuff: - fmax, fmaxf, fmaxl, logb, logbf, logbl, scalbnl, trunc, floor, ceil. Passing `--gc-sections` to the linker seems to fix this. --- recipes/netsurf/recipe.sh | 2 +- recipes/prboom/recipe.sh | 2 +- recipes/sdl/01_orbital.patch | 13 +++++++------ 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/recipes/netsurf/recipe.sh b/recipes/netsurf/recipe.sh index 42e0c72e..f7ede53d 100644 --- a/recipes/netsurf/recipe.sh +++ b/recipes/netsurf/recipe.sh @@ -1,6 +1,6 @@ VERSION=3.7 TAR=http://download.netsurf-browser.org/netsurf/releases/source-full/netsurf-all-$VERSION.tar.gz -BUILD_DEPENDS=(curl expat libjpeg libpng openssl sdl zlib freetype) +BUILD_DEPENDS=(curl expat libjpeg libpng openssl sdl zlib freetype liborbital) DEPENDS="ca-certificates orbital" function recipe_version { diff --git a/recipes/prboom/recipe.sh b/recipes/prboom/recipe.sh index f8c08442..cf4ccb14 100644 --- a/recipes/prboom/recipe.sh +++ b/recipes/prboom/recipe.sh @@ -1,6 +1,6 @@ VERSION=2.5.0 TAR=https://downloads.sourceforge.net/project/prboom/prboom%20stable/$VERSION/prboom-$VERSION.tar.gz -BUILD_DEPENDS=(sdl) +BUILD_DEPENDS=(sdl liborbital) function recipe_version { echo "$VERSION" diff --git a/recipes/sdl/01_orbital.patch b/recipes/sdl/01_orbital.patch index c7365591..2d4216f8 100644 --- a/recipes/sdl/01_orbital.patch +++ b/recipes/sdl/01_orbital.patch @@ -13,10 +13,10 @@ diff -rupNw source-original/build-scripts/config.sub source/build-scripts/config diff -rupNw source-original/configure.in source/configure.in --- source-original/configure.in 2012-01-19 07:30:05.000000000 +0100 +++ source/configure.in 2018-04-23 17:03:35.533588029 +0200 -@@ -1646,6 +1646,19 @@ AC_HELP_STRING([--enable-video-dummy], [ +@@ -1646,6 +1646,20 @@ AC_HELP_STRING([--enable-video-dummy], [ fi } - + +dnl Set up the Orbital video driver. +CheckOrbitalVideo() +{ @@ -26,6 +26,7 @@ diff -rupNw source-original/configure.in source/configure.in + if test x$enable_video_orbital = xyes; then + AC_DEFINE(SDL_VIDEO_DRIVER_ORBITAL) + SOURCES="$SOURCES $srcdir/src/video/orbital/*.c" ++ SDL_LIBS="$SDL_LIBS -Wl,--gc-sections -lorbital" + have_video=yes + fi +} @@ -671,13 +672,13 @@ diff -rupNw source-original/src/video/SDL_gamma.c source/src/video/SDL_gamma.c @@ -35,6 +35,9 @@ #define log(x) __ieee754_log(x) #endif - + +#include "e_log.h" +#define log(x) __ieee754_log(x) + #include "SDL_sysvideo.h" - - + + diff -rupNw source-original/src/video/SDL_sysvideo.h source/src/video/SDL_sysvideo.h --- source-original/src/video/SDL_sysvideo.h 2012-01-19 07:30:06.000000000 +0100 +++ source/src/video/SDL_sysvideo.h 2018-04-23 17:03:35.537588257 +0200 @@ -711,6 +712,6 @@ diff -rupNw source-original/src/video/SDL_video.c source/src/video/SDL_video.c - SDL_ClearSurface(mode); + // Causes blinking under Orbital + //SDL_ClearSurface(mode); - + /* Now adjust the offsets to match the desired mode */ video->offset_x = (mode->w-width)/2; From e40f14f10681853756b2bf34c92474528e9de364 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Mon, 30 Apr 2018 00:17:17 +0200 Subject: [PATCH 0384/3180] Fix resize flag --- recipes/sdl/01_orbital.patch | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/sdl/01_orbital.patch b/recipes/sdl/01_orbital.patch index 2d4216f8..25fae0d1 100644 --- a/recipes/sdl/01_orbital.patch +++ b/recipes/sdl/01_orbital.patch @@ -540,11 +540,11 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.c source/src/vide + if (this->hidden->window) { + orb_window_set_size(this->hidden->window, width, height); + } else { -+ uint32_t flags = ORB_WINDOW_ASYNC; ++ uint32_t orb_flags = ORB_WINDOW_ASYNC; + if (flags & SDL_RESIZABLE) -+ flags |= ORB_WINDOW_RESIZABLE; ++ orb_flags |= ORB_WINDOW_RESIZABLE; + -+ this->hidden->window = orb_window_new_flags(-1, -1, width, height, "SDL", flags); ++ this->hidden->window = orb_window_new_flags(-1, -1, width, height, "SDL", orb_flags); + if (!this->hidden->window) { + SDL_SetError("Couldn't create window for requested mode"); + return(NULL); From b585522be9a146302590bf1fa837c1ef8ab7b4b7 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Tue, 1 May 2018 17:45:38 +0200 Subject: [PATCH 0385/3180] sdl: Fix alpha handling --- recipes/netsurf/01_redox.patch | 42 ------------------------------- recipes/prboom/01_redox.patch | 12 --------- recipes/sdl/01_orbital.patch | 46 ++++++++++++++++++---------------- 3 files changed, 24 insertions(+), 76 deletions(-) diff --git a/recipes/netsurf/01_redox.patch b/recipes/netsurf/01_redox.patch index c51bb199..7d1a715b 100644 --- a/recipes/netsurf/01_redox.patch +++ b/recipes/netsurf/01_redox.patch @@ -15,48 +15,6 @@ diff -rupNw source-original/libnsfb/Makefile source/libnsfb/Makefile # surfaces not detectable via pkg-config NSFB_ABLE_AVAILABLE := no -diff -rupNw source-original/libnsfb/src/plot/32bpp-xbgr8888.c source/libnsfb/src/plot/32bpp-xbgr8888.c ---- source-original/libnsfb/src/plot/32bpp-xbgr8888.c 2017-10-16 12:09:35.000000000 +0200 -+++ source/libnsfb/src/plot/32bpp-xbgr8888.c 2018-03-04 20:43:18.188956997 +0100 -@@ -52,7 +52,7 @@ static inline nsfb_colour_t pixel_to_col - */ - static inline uint32_t colour_to_pixel(UNUSED nsfb_t *nsfb, nsfb_colour_t c) - { -- return ((c & 0xFF) << 24) | ((c & 0xFF00) << 8) | ((c & 0xFF0000) >> 8); -+ return ((c & 0xFF) << 24) | ((c & 0xFF00) << 8) | ((c & 0xFF0000) >> 8) | 0xFF; - } - - #else -@@ -79,7 +79,7 @@ static inline nsfb_colour_t pixel_to_col - */ - static inline uint32_t colour_to_pixel(UNUSED nsfb_t *nsfb, nsfb_colour_t c) - { -- return c; -+ return c | 0xFF000000; - } - - #endif -diff -rupNw source-original/libnsfb/src/plot/32bpp-xrgb8888.c source/libnsfb/src/plot/32bpp-xrgb8888.c ---- source-original/libnsfb/src/plot/32bpp-xrgb8888.c 2017-10-16 12:09:35.000000000 +0200 -+++ source/libnsfb/src/plot/32bpp-xrgb8888.c 2018-03-04 20:43:18.188956997 +0100 -@@ -52,7 +52,7 @@ static inline nsfb_colour_t pixel_to_col - */ - static inline uint32_t colour_to_pixel(UNUSED nsfb_t *nsfb, nsfb_colour_t c) - { -- return (c << 8); -+ return (c << 8) | 0xff; - } - - #else -@@ -81,7 +81,7 @@ static inline nsfb_colour_t pixel_to_col - */ - static inline uint32_t colour_to_pixel(UNUSED nsfb_t *nsfb, nsfb_colour_t c) - { -- return ((c & 0xff0000) >> 16) | (c & 0xff00) | ((c & 0xff) << 16); -+ return 0xff000000 | ((c & 0xff0000) >> 16) | (c & 0xff00) | ((c & 0xff) << 16); - } - - #endif diff -rupNw source-original/libnsfb/src/plot.h source/libnsfb/src/plot.h --- source-original/libnsfb/src/plot.h 2017-10-16 12:09:35.000000000 +0200 +++ source/libnsfb/src/plot.h 2018-03-04 20:43:18.188956997 +0100 diff --git a/recipes/prboom/01_redox.patch b/recipes/prboom/01_redox.patch index 576a04b1..16cdd828 100644 --- a/recipes/prboom/01_redox.patch +++ b/recipes/prboom/01_redox.patch @@ -43,15 +43,3 @@ diff -burpN source-original/src/SDL/i_video.c source/src/SDL/i_video.c } // -diff -burpN source-original/src/v_video.c source/src/v_video.c ---- source-original/src/v_video.c 2008-10-11 14:10:41.000000000 +0200 -+++ source/src/v_video.c 2018-04-22 23:43:10.939034965 +0200 -@@ -558,7 +558,7 @@ void V_UpdateTrueColorPalette(video_mode - ng = (int)(g*t+roundUpG); - nb = (int)(b*t+roundUpB); - Palettes32[((p*256+i)*VID_NUMCOLORWEIGHTS)+w] = ( -- (nr<<16) | (ng<<8) | nb -+ (255<<24) | (nr<<16) | (ng<<8) | nb - ); - } - } diff --git a/recipes/sdl/01_orbital.patch b/recipes/sdl/01_orbital.patch index 25fae0d1..0dc4efe4 100644 --- a/recipes/sdl/01_orbital.patch +++ b/recipes/sdl/01_orbital.patch @@ -1,6 +1,6 @@ diff -rupNw source-original/build-scripts/config.sub source/build-scripts/config.sub --- source-original/build-scripts/config.sub 2012-01-19 07:30:05.000000000 +0100 -+++ source/build-scripts/config.sub 2018-04-23 17:03:35.533588029 +0200 ++++ source/build-scripts/config.sub 2018-05-01 17:31:52.766229515 +0200 @@ -1276,7 +1276,7 @@ case $os in -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ @@ -12,11 +12,11 @@ diff -rupNw source-original/build-scripts/config.sub source/build-scripts/config | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ diff -rupNw source-original/configure.in source/configure.in --- source-original/configure.in 2012-01-19 07:30:05.000000000 +0100 -+++ source/configure.in 2018-04-23 17:03:35.533588029 +0200 ++++ source/configure.in 2018-05-01 17:31:52.770229654 +0200 @@ -1646,6 +1646,20 @@ AC_HELP_STRING([--enable-video-dummy], [ fi } - + +dnl Set up the Orbital video driver. +CheckOrbitalVideo() +{ @@ -34,7 +34,7 @@ diff -rupNw source-original/configure.in source/configure.in dnl Check to see if OpenGL support is desired AC_ARG_ENABLE(video-opengl, AC_HELP_STRING([--enable-video-opengl], [include OpenGL context creation [[default=yes]]]), -@@ -2325,10 +2338,11 @@ case "$host" in +@@ -2325,10 +2339,11 @@ case "$host" in have_timers=yes fi ;; @@ -47,7 +47,7 @@ diff -rupNw source-original/configure.in source/configure.in *-*-kfreebsd*-gnu) ARCH=kfreebsd-gnu ;; *-*-knetbsd*-gnu) ARCH=knetbsd-gnu ;; *-*-kopenbsd*-gnu) ARCH=kopenbsd-gnu ;; -@@ -2347,6 +2361,7 @@ case "$host" in +@@ -2347,6 +2362,7 @@ case "$host" in esac CheckVisibilityHidden CheckDummyVideo @@ -57,7 +57,7 @@ diff -rupNw source-original/configure.in source/configure.in CheckDLOPEN diff -rupNw source-original/include/SDL_config.h.in source/include/SDL_config.h.in --- source-original/include/SDL_config.h.in 2012-01-19 07:30:05.000000000 +0100 -+++ source/include/SDL_config.h.in 2018-04-23 17:03:35.533588029 +0200 ++++ source/include/SDL_config.h.in 2018-05-01 17:31:52.770229654 +0200 @@ -268,6 +268,7 @@ #undef SDL_VIDEO_DRIVER_GGI #undef SDL_VIDEO_DRIVER_IPOD @@ -68,7 +68,7 @@ diff -rupNw source-original/include/SDL_config.h.in source/include/SDL_config.h. #undef SDL_VIDEO_DRIVER_PICOGUI diff -rupNw source-original/src/video/orbital/SDL_orbitalevents.c source/src/video/orbital/SDL_orbitalevents.c --- source-original/src/video/orbital/SDL_orbitalevents.c 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalevents.c 2018-04-25 01:53:33.077960454 +0200 ++++ source/src/video/orbital/SDL_orbitalevents.c 2018-05-01 17:31:52.770229654 +0200 @@ -0,0 +1,198 @@ +/* + SDL - Simple DirectMedia Layer @@ -270,7 +270,7 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalevents.c source/src/vid +/* end of SDL_orbitalevents.c ... */ diff -rupNw source-original/src/video/orbital/SDL_orbitalevents_c.h source/src/video/orbital/SDL_orbitalevents_c.h --- source-original/src/video/orbital/SDL_orbitalevents_c.h 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalevents_c.h 2018-04-23 17:03:35.537588257 +0200 ++++ source/src/video/orbital/SDL_orbitalevents_c.h 2018-05-01 17:31:52.770229654 +0200 @@ -0,0 +1,32 @@ +/* + SDL - Simple DirectMedia Layer @@ -306,7 +306,7 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalevents_c.h source/src/v +/* end of SDL_orbitalevents_c.h ... */ diff -rupNw source-original/src/video/orbital/SDL_orbitalmouse.c source/src/video/orbital/SDL_orbitalmouse.c --- source-original/src/video/orbital/SDL_orbitalmouse.c 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalmouse.c 2018-04-23 17:03:35.537588257 +0200 ++++ source/src/video/orbital/SDL_orbitalmouse.c 2018-05-01 17:31:52.770229654 +0200 @@ -0,0 +1,33 @@ +/* + SDL - Simple DirectMedia Layer @@ -343,7 +343,7 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalmouse.c source/src/vide +}; diff -rupNw source-original/src/video/orbital/SDL_orbitalmouse_c.h source/src/video/orbital/SDL_orbitalmouse_c.h --- source-original/src/video/orbital/SDL_orbitalmouse_c.h 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalmouse_c.h 2018-04-23 17:03:35.537588257 +0200 ++++ source/src/video/orbital/SDL_orbitalmouse_c.h 2018-05-01 17:31:52.770229654 +0200 @@ -0,0 +1,26 @@ +/* + SDL - Simple DirectMedia Layer @@ -373,8 +373,8 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalmouse_c.h source/src/vi +/* Functions to be exported */ diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.c source/src/video/orbital/SDL_orbitalvideo.c --- source-original/src/video/orbital/SDL_orbitalvideo.c 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalvideo.c 2018-04-25 02:29:56.554079034 +0200 -@@ -0,0 +1,248 @@ ++++ source/src/video/orbital/SDL_orbitalvideo.c 2018-05-01 17:32:53.000320923 +0200 +@@ -0,0 +1,250 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -554,7 +554,7 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.c source/src/vide + fprintf(stderr, "Setting mode %dx%d@%d\n", width, height, bpp); + + /* Allocate the new pixel format for the screen */ -+ if ( ! SDL_ReallocFormat(current, bpp, 0, 0, 0, 0) ) { ++ if ( ! SDL_ReallocFormat(current, bpp, 0x00FF0000, 0x0000FF00, 0x000000FF, 0xFF000000) ) { + orb_window_destroy(this->hidden->window); + this->hidden->window = NULL; + @@ -602,8 +602,10 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.c source/src/vide + +static void ORBITAL_UpdateRects(_THIS, int numrects, SDL_Rect *rects) +{ -+ if (this->hidden->window) ++ if (this->hidden->window) { ++ SDL_SetAlphaChannel(this->screen, SDL_ALPHA_OPAQUE); + orb_window_sync(this->hidden->window); ++ } +} + +int ORBITAL_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors) @@ -625,7 +627,7 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.c source/src/vide +} diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.h source/src/video/orbital/SDL_orbitalvideo.h --- source-original/src/video/orbital/SDL_orbitalvideo.h 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalvideo.h 2018-04-23 17:04:31.224570535 +0200 ++++ source/src/video/orbital/SDL_orbitalvideo.h 2018-05-01 17:31:52.770229654 +0200 @@ -0,0 +1,39 @@ +/* + SDL - Simple DirectMedia Layer @@ -668,20 +670,20 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.h source/src/vide +#endif /* _SDL_orbitalvideo_h */ diff -rupNw source-original/src/video/SDL_gamma.c source/src/video/SDL_gamma.c --- source-original/src/video/SDL_gamma.c 2012-01-19 07:30:06.000000000 +0100 -+++ source/src/video/SDL_gamma.c 2018-04-23 17:03:35.537588257 +0200 ++++ source/src/video/SDL_gamma.c 2018-05-01 17:31:52.770229654 +0200 @@ -35,6 +35,9 @@ #define log(x) __ieee754_log(x) #endif - + +#include "e_log.h" +#define log(x) __ieee754_log(x) + #include "SDL_sysvideo.h" - - + + diff -rupNw source-original/src/video/SDL_sysvideo.h source/src/video/SDL_sysvideo.h --- source-original/src/video/SDL_sysvideo.h 2012-01-19 07:30:06.000000000 +0100 -+++ source/src/video/SDL_sysvideo.h 2018-04-23 17:03:35.537588257 +0200 ++++ source/src/video/SDL_sysvideo.h 2018-05-01 17:31:52.770229654 +0200 @@ -410,6 +410,9 @@ extern VideoBootStrap AALIB_bootstrap; #if SDL_VIDEO_DRIVER_CACA extern VideoBootStrap CACA_bootstrap; @@ -694,7 +696,7 @@ diff -rupNw source-original/src/video/SDL_sysvideo.h source/src/video/SDL_sysvid #endif diff -rupNw source-original/src/video/SDL_video.c source/src/video/SDL_video.c --- source-original/src/video/SDL_video.c 2012-01-19 07:30:06.000000000 +0100 -+++ source/src/video/SDL_video.c 2018-04-23 17:03:35.541588484 +0200 ++++ source/src/video/SDL_video.c 2018-05-01 17:31:52.774229792 +0200 @@ -126,6 +126,9 @@ static VideoBootStrap *bootstrap[] = { #if SDL_VIDEO_DRIVER_CACA &CACA_bootstrap, @@ -712,6 +714,6 @@ diff -rupNw source-original/src/video/SDL_video.c source/src/video/SDL_video.c - SDL_ClearSurface(mode); + // Causes blinking under Orbital + //SDL_ClearSurface(mode); - + /* Now adjust the offsets to match the desired mode */ video->offset_x = (mode->w-width)/2; From cd4d7d17b06dde865f5059eb2d41d56e51c87d94 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Wed, 2 May 2018 03:15:54 +0200 Subject: [PATCH 0386/3180] Add openttd recipe --- recipes/openttd/01_redox.patch | 112 +++++++++++++++++++++++++++++++++ recipes/openttd/recipe.sh | 39 ++++++++++++ 2 files changed, 151 insertions(+) create mode 100644 recipes/openttd/01_redox.patch create mode 100644 recipes/openttd/recipe.sh diff --git a/recipes/openttd/01_redox.patch b/recipes/openttd/01_redox.patch new file mode 100644 index 00000000..357ba295 --- /dev/null +++ b/recipes/openttd/01_redox.patch @@ -0,0 +1,112 @@ +diff --git a/config.lib b/config.lib +index bc2224f..54290b1 100644 +--- a/config.lib ++++ b/config.lib +@@ -1486,7 +1486,7 @@ make_cflags_and_ldflags() { + # Special CXXFlags for HOST + CXXFLAGS="$CXXFLAGS" + # Libs to compile. In fact this is just LDFLAGS +- LIBS="-lstdc++" ++ LIBS="-lstdc++ -lSDL -lorbital" + # LDFLAGS used for HOST + LDFLAGS="$LDFLAGS" + # FEATURES for HOST (lto) +@@ -1594,7 +1594,7 @@ make_cflags_and_ldflags() { + fi + + if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "OPENBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ] && [ "$os" != "PSP" ] && [ "$os" != "OS2" ]; then +- LIBS="$LIBS -lpthread" ++ LIBS="$LIBS" + fi + + if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "MINGW" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ]; then +diff --git a/src/os/unix/crashlog_unix.cpp b/src/os/unix/crashlog_unix.cpp +index 47de057..07a3b74 100644 +--- a/src/os/unix/crashlog_unix.cpp ++++ b/src/os/unix/crashlog_unix.cpp +@@ -17,7 +17,7 @@ + + #include + #include +-#include ++//#include + + #if defined(__GLIBC__) + /* Execinfo (and thus making stacktraces) is a GNU extension */ +@@ -42,22 +42,22 @@ class CrashLogUnix : public CrashLog { + + /* virtual */ char *LogOSVersion(char *buffer, const char *last) const + { +- struct utsname name; +- if (uname(&name) < 0) { ++ //struct utsname name; ++ //if (uname(&name) < 0) { + return buffer + seprintf(buffer, last, "Could not get OS version: %s\n", strerror(errno)); +- } +- +- return buffer + seprintf(buffer, last, +- "Operating system:\n" +- " Name: %s\n" +- " Release: %s\n" +- " Version: %s\n" +- " Machine: %s\n", +- name.sysname, +- name.release, +- name.version, +- name.machine +- ); ++ //} ++ ++ //return buffer + seprintf(buffer, last, ++ // "Operating system:\n" ++ // " Name: %s\n" ++ // " Release: %s\n" ++ // " Version: %s\n" ++ // " Machine: %s\n", ++ // name.sysname, ++ // name.release, ++ // name.version, ++ // name.machine ++ //); + } + + /* virtual */ char *LogError(char *buffer, const char *last, const char *message) const +diff --git a/src/os/unix/unix.cpp b/src/os/unix/unix.cpp +index d7c2304..ed3c706 100644 +--- a/src/os/unix/unix.cpp ++++ b/src/os/unix/unix.cpp +@@ -28,7 +28,7 @@ + #ifdef __APPLE__ + #include + #elif (defined(_POSIX_VERSION) && _POSIX_VERSION >= 200112L) || defined(__GLIBC__) +- #define HAS_STATVFS ++ //#define HAS_STATVFS + #endif + + #if defined(OPENBSD) || defined(__NetBSD__) || defined(__FreeBSD__) +diff --git a/src/rev.cpp.in b/src/rev.cpp.in +index b6bddea..499ec09 100644 +--- a/src/rev.cpp.in ++++ b/src/rev.cpp.in +@@ -57,7 +57,7 @@ const char _openttd_build_date[] = __DATE__ " " __TIME__; + * (compiling from sources without any version control software) + * and 2 is for modified revision. + */ +-const byte _openttd_revision_modified = !!MODIFIED!!; ++const byte _openttd_revision_modified = 2; + + /** + * The NewGRF revision of OTTD: +diff --git a/src/stringfilter.cpp b/src/stringfilter.cpp +index 6045c19..6fc3f99 100644 +--- a/src/stringfilter.cpp ++++ b/src/stringfilter.cpp +@@ -113,7 +113,7 @@ void StringFilter::AddLine(const char *str) + const WordState *end = this->word_index.End(); + for (WordState *it = this->word_index.Begin(); it != end; ++it) { + if (!it->match) { +- if ((match_case ? strstr(str, it->start) : strcasestr(str, it->start)) != NULL) { ++ if ((match_case ? strstr(str, it->start) : strstr(str, it->start)) != NULL) { + it->match = true; + this->word_matches++; + } diff --git a/recipes/openttd/recipe.sh b/recipes/openttd/recipe.sh new file mode 100644 index 00000000..2d35cf03 --- /dev/null +++ b/recipes/openttd/recipe.sh @@ -0,0 +1,39 @@ +VERSION=1.8 +GIT=https://github.com/OpenTTD/OpenTTD.git +BRANCH=release/$VERSION +BUILD_DEPENDS=(sdl liborbital zlib) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + ./configure --build=`gcc -dumpmachine` --host=${HOST} --prefix='' --enable-static --without-lzma --without-liblzo2 --disable-network --without-threads + make VERBOSE=1 + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + bundledir="$dest/bundle" + + make VERBOSE=1 ROOT_DIR="$dest/../build/" BUNDLE_DIR="$bundledir" INSTALL_DIR="$dest" install + rm -rf "$bundledir" + skip=1 +} From da6ce5dd012afac577733983cdaaff33ca539d29 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 1 May 2018 20:54:16 -0600 Subject: [PATCH 0387/3180] Add freedoom recipe --- recipes/freedoom/recipe.sh | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 recipes/freedoom/recipe.sh diff --git a/recipes/freedoom/recipe.sh b/recipes/freedoom/recipe.sh new file mode 100644 index 00000000..04214316 --- /dev/null +++ b/recipes/freedoom/recipe.sh @@ -0,0 +1,33 @@ +GIT=https://github.com/redox-os/freedoom.git + +function recipe_version { + echo "0.0.1" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + echo "skipping build" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + echo "skipping clean" + skip=1 +} + +function recipe_stage { + mkdir -pv "$1/share/games/doom" + cp -Rv ./*.wad "$1/share/games/doom" + skip=1 +} + From 43facb2a3d866a9231af7e16335710341f95db88 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 1 May 2018 21:33:40 -0600 Subject: [PATCH 0388/3180] Add openttd-opengfx recipe, fix freedoom version --- recipes/freedoom/recipe.sh | 2 +- recipes/openttd-opengfx/recipe.sh | 34 +++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 recipes/openttd-opengfx/recipe.sh diff --git a/recipes/freedoom/recipe.sh b/recipes/freedoom/recipe.sh index 04214316..262f1f1e 100644 --- a/recipes/freedoom/recipe.sh +++ b/recipes/freedoom/recipe.sh @@ -1,7 +1,7 @@ GIT=https://github.com/redox-os/freedoom.git function recipe_version { - echo "0.0.1" + echo "0.11.3" skip=1 } diff --git a/recipes/openttd-opengfx/recipe.sh b/recipes/openttd-opengfx/recipe.sh new file mode 100644 index 00000000..726579ab --- /dev/null +++ b/recipes/openttd-opengfx/recipe.sh @@ -0,0 +1,34 @@ +GIT=https://github.com/redox-os/openttd-opengfx.git + +function recipe_version { + echo "0.5.2" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + echo "skipping build" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + echo "skipping clean" + skip=1 +} + +function recipe_stage { + mkdir -pv "$1/share/games/openttd/baseset/opengfx" + cp -Rv ./* "$1/share/games/openttd/baseset/opengfx" + skip=1 +} + + From 8fae7c0ecb70d97a1e14d9b45238e02224324384 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Wed, 2 May 2018 21:02:18 +0200 Subject: [PATCH 0389/3180] openttd: Enable LZMA --- recipes/openttd/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/openttd/recipe.sh b/recipes/openttd/recipe.sh index 2d35cf03..108cfeb8 100644 --- a/recipes/openttd/recipe.sh +++ b/recipes/openttd/recipe.sh @@ -1,7 +1,7 @@ VERSION=1.8 GIT=https://github.com/OpenTTD/OpenTTD.git BRANCH=release/$VERSION -BUILD_DEPENDS=(sdl liborbital zlib) +BUILD_DEPENDS=(sdl liborbital zlib xz) function recipe_version { echo "$VERSION" @@ -14,7 +14,7 @@ function recipe_update { } function recipe_build { - ./configure --build=`gcc -dumpmachine` --host=${HOST} --prefix='' --enable-static --without-lzma --without-liblzo2 --disable-network --without-threads + ./configure --build=`gcc -dumpmachine` --host=${HOST} --prefix='' --enable-static --without-liblzo2 --disable-network --without-threads make VERBOSE=1 skip=1 } From dfdfeb3b7b0f5eeb2eb8c18cdec9b7e4eb796609 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 2 May 2018 19:18:39 -0600 Subject: [PATCH 0390/3180] Add binaries to run freedoom --- recipes/freedoom/recipe.sh | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/recipes/freedoom/recipe.sh b/recipes/freedoom/recipe.sh index 262f1f1e..19adca40 100644 --- a/recipes/freedoom/recipe.sh +++ b/recipes/freedoom/recipe.sh @@ -1,4 +1,5 @@ GIT=https://github.com/redox-os/freedoom.git +DEPENDS=(ion prboom) function recipe_version { echo "0.11.3" @@ -26,8 +27,18 @@ function recipe_clean { } function recipe_stage { - mkdir -pv "$1/share/games/doom" - cp -Rv ./*.wad "$1/share/games/doom" + mkdir -pv "$1/games" "$1/share/games/doom" + for file in ./*.wad + do + game="$(basename "$file" .wad)" + + wad="/share/games/doom/$game.wad" + cp -v "$file" "$1$wad" + + bin="/games/$game" + echo "#!/bin/ion" > "$1$bin" + echo "/games/prboom -geom 800x600 -vidmode 32 -iwad $wad" >> "$1$bin" + chmod +x "$1$bin" + done skip=1 } - From c70738e2c0f44dd1c66ab3ee972cd0990b01fd1c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 2 May 2018 20:07:15 -0600 Subject: [PATCH 0391/3180] Add redox-ssh recipe --- recipes/redox-ssh/recipe.sh | 1 + 1 file changed, 1 insertion(+) create mode 100644 recipes/redox-ssh/recipe.sh diff --git a/recipes/redox-ssh/recipe.sh b/recipes/redox-ssh/recipe.sh new file mode 100644 index 00000000..9d4dcb48 --- /dev/null +++ b/recipes/redox-ssh/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/redox-ssh.git From 8189b9725afd70438f57301e28326aecc1048441 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Thu, 3 May 2018 20:37:20 +0200 Subject: [PATCH 0392/3180] sdl: Enable dummy cdrom --- recipes/sdl/03_cdrom.patch | 15 +++++++++++++++ recipes/sdl/recipe.sh | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 recipes/sdl/03_cdrom.patch diff --git a/recipes/sdl/03_cdrom.patch b/recipes/sdl/03_cdrom.patch new file mode 100644 index 00000000..350595be --- /dev/null +++ b/recipes/sdl/03_cdrom.patch @@ -0,0 +1,15 @@ +diff -rupNw source-original/configure.in source/configure.in +--- source-original/configure.in 2012-01-19 07:30:05.000000000 +0100 ++++ source/configure.in 2018-05-03 00:23:39.060438383 +0200 +@@ -2445,6 +2445,11 @@ case "$host" in + SOURCES="$SOURCES $srcdir/src/cdrom/osf/*.c" + have_cdrom=yes + ;; ++ redox) ++ AC_DEFINE(SDL_CDROM_DUMMY) ++ SOURCES="$SOURCES $srcdir/src/cdrom/dummy/*.c" ++ have_cdrom=yes ++ ;; + esac + fi + # Set up files for the thread library diff --git a/recipes/sdl/recipe.sh b/recipes/sdl/recipe.sh index da0031fe..94eb69e4 100644 --- a/recipes/sdl/recipe.sh +++ b/recipes/sdl/recipe.sh @@ -17,7 +17,7 @@ function recipe_update { function recipe_build { ./autogen.sh - ./configure --prefix=/ --host=${HOST} --disable-shared --disable-pulseaudio --disable-video-x11 --disable-cdrom --disable-loadso --disable-threads --enable-audio --enable-dummyaudio --enable-video-orbital + ./configure --prefix=/ --host=${HOST} --disable-shared --disable-pulseaudio --disable-video-x11 --disable-loadso --disable-threads --enable-audio --enable-dummyaudio --enable-video-orbital --enable-cdrom make skip=1 } From bde36d3a744742af47e451d8db5061d8d3cfad8e Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Thu, 3 May 2018 20:39:12 +0200 Subject: [PATCH 0393/3180] Add dosbox recipe --- recipes/dosbox/01_redox.patch | 11 ++++++++++ recipes/dosbox/recipe.sh | 41 +++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 recipes/dosbox/01_redox.patch create mode 100644 recipes/dosbox/recipe.sh diff --git a/recipes/dosbox/01_redox.patch b/recipes/dosbox/01_redox.patch new file mode 100644 index 00000000..260d25a7 --- /dev/null +++ b/recipes/dosbox/01_redox.patch @@ -0,0 +1,11 @@ +--- source/include/cross_orig.h 2017-10-25 01:51:53.148610915 +0200 ++++ source/include/cross.h 2017-10-25 00:56:43.896422986 +0200 +@@ -64,7 +64,7 @@ + //Solaris maybe others + #if defined (DB_HAVE_NO_POWF) + #include +-static inline float powf (float x, float y) { return (float) pow (x,y); } ++//static inline float powf (float x, float y) { return (float) pow (x,y); } + #endif + + class Cross { diff --git a/recipes/dosbox/recipe.sh b/recipes/dosbox/recipe.sh new file mode 100644 index 00000000..c058a76e --- /dev/null +++ b/recipes/dosbox/recipe.sh @@ -0,0 +1,41 @@ +VERSION=0.74 +TAR=https://sourceforge.net/projects/dosbox/files/dosbox/$VERSION/dosbox-$VERSION.tar.gz/download +BUILD_DEPENDS=(sdl liborbital) + +export CFLAGS="-I$PWD/sysroot/include/SDL/" +export CPPFLAGS="-I$PWD/sysroot/include/SDL/" +export LDFLAGS="-L$PWD/sysroot/lib/" + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + ./autogen.sh + wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + ./configure --host=${HOST} --prefix='' --disable-opengl --disable-sdltest --with-sdl-prefix="$PWD/../sysroot" + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} From 330e7c01cd9794aab98f2939111a56075f29a8a8 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Fri, 4 May 2018 21:33:24 +0200 Subject: [PATCH 0394/3180] dosbox: Fix keyboard input --- recipes/dosbox/01_redox.patch | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/recipes/dosbox/01_redox.patch b/recipes/dosbox/01_redox.patch index 260d25a7..9de0f525 100644 --- a/recipes/dosbox/01_redox.patch +++ b/recipes/dosbox/01_redox.patch @@ -1,5 +1,6 @@ ---- source/include/cross_orig.h 2017-10-25 01:51:53.148610915 +0200 -+++ source/include/cross.h 2017-10-25 00:56:43.896422986 +0200 +diff -rupNw source-original/include/cross.h source/include/cross.h +--- source-original/include/cross.h 2010-05-10 19:43:54.000000000 +0200 ++++ source/include/cross.h 2018-05-04 21:14:40.397157710 +0200 @@ -64,7 +64,7 @@ //Solaris maybe others #if defined (DB_HAVE_NO_POWF) @@ -7,5 +8,17 @@ -static inline float powf (float x, float y) { return (float) pow (x,y); } +//static inline float powf (float x, float y) { return (float) pow (x,y); } #endif - - class Cross { + + class Cross { +diff -rupNw source-original/src/gui/sdlmain.cpp source/src/gui/sdlmain.cpp +--- source-original/src/gui/sdlmain.cpp 2010-05-10 19:43:54.000000000 +0200 ++++ source/src/gui/sdlmain.cpp 2018-05-04 21:15:31.937672555 +0200 +@@ -1518,7 +1518,7 @@ void Config_Add_SDL() { + Pstring = sdl_sec->Add_path("mapperfile",Property::Changeable::Always,MAPPERFILE); + Pstring->Set_help("File used to load/save the key/event mappings from. Resetmapper only works with the defaul value."); + +- Pbool = sdl_sec->Add_bool("usescancodes",Property::Changeable::Always,true); ++ Pbool = sdl_sec->Add_bool("usescancodes",Property::Changeable::Always,false); + Pbool->Set_help("Avoid usage of symkeys, might not work on all operating systems."); + } + From 6ee311dc8dd57dcded1a98fc8324e24d679ae6cd Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Sun, 6 May 2018 04:28:18 +0200 Subject: [PATCH 0395/3180] sdl: Revert unicode fix --- recipes/sdl/01_orbital.patch | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/sdl/01_orbital.patch b/recipes/sdl/01_orbital.patch index 0dc4efe4..02e2f799 100644 --- a/recipes/sdl/01_orbital.patch +++ b/recipes/sdl/01_orbital.patch @@ -69,7 +69,7 @@ diff -rupNw source-original/include/SDL_config.h.in source/include/SDL_config.h. diff -rupNw source-original/src/video/orbital/SDL_orbitalevents.c source/src/video/orbital/SDL_orbitalevents.c --- source-original/src/video/orbital/SDL_orbitalevents.c 1970-01-01 01:00:00.000000000 +0100 +++ source/src/video/orbital/SDL_orbitalevents.c 2018-05-01 17:31:52.770229654 +0200 -@@ -0,0 +1,198 @@ +@@ -0,0 +1,197 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -110,7 +110,6 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalevents.c source/src/vid +static bool last_button_middle = false; +static bool last_button_right = false; + -+// TODO: Find out why NetSurf recieves NULL chars when the keysym.unicode field is used +void ORBITAL_PumpEvents(_THIS) +{ + SDL_keysym keysym; @@ -121,7 +120,7 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalevents.c source/src/vid + while (oeo.tag != OrbEventOption_None) { + switch (oeo.tag) { + case OrbEventOption_Key: -+ //keysym.unicode = oeo.key.character; ++ keysym.unicode = oeo.key.character; + keysym.scancode = oeo.key.scancode; + keysym.sym = keymap[oeo.key.scancode]; + keysym.mod = KMOD_NONE; From af7c2ea45a24ad31cb0b08b3162b0c04854e5cef Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Sun, 6 May 2018 21:42:07 +0200 Subject: [PATCH 0396/3180] Add openttd-openmsx recipe --- recipes/openttd-openmsx/recipe.sh | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 recipes/openttd-openmsx/recipe.sh diff --git a/recipes/openttd-openmsx/recipe.sh b/recipes/openttd-openmsx/recipe.sh new file mode 100644 index 00000000..95a78df2 --- /dev/null +++ b/recipes/openttd-openmsx/recipe.sh @@ -0,0 +1,34 @@ +GIT=https://github.com/xTibor/openttd-openmsx.git + +function recipe_version { + echo "0.3.1" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + echo "skipping build" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + echo "skipping clean" + skip=1 +} + +function recipe_stage { + mkdir -pv "$1/share/games/openttd/baseset/openmsx" + cp -Rv ./* "$1/share/games/openttd/baseset/openmsx" + skip=1 +} + + From 821b79cacc3d1cd1da360fa27ba71f20dfda170a Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Tue, 8 May 2018 10:16:22 +0200 Subject: [PATCH 0397/3180] Fix some weird permission issues --- recipes/libpng/recipe.sh | 1 + recipes/xz/recipe.sh | 1 + 2 files changed, 2 insertions(+) diff --git a/recipes/libpng/recipe.sh b/recipes/libpng/recipe.sh index de1a0e43..b065df99 100644 --- a/recipes/libpng/recipe.sh +++ b/recipes/libpng/recipe.sh @@ -18,6 +18,7 @@ function recipe_build { export CPPFLAGS="-I$sysroot/include" ./autogen.sh + chmod +w config.sub wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --host=${HOST} --prefix='/' make diff --git a/recipes/xz/recipe.sh b/recipes/xz/recipe.sh index 2dde4ea8..25d2556a 100644 --- a/recipes/xz/recipe.sh +++ b/recipes/xz/recipe.sh @@ -13,6 +13,7 @@ function recipe_update { function recipe_build { ./autogen.sh + chmod +w build-aux/config.sub wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --host=${HOST} --prefix=/ --enable-threads=no make From d2ec561ca09bd48d7eed77fb3ed72ee69ab2541a Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Tue, 8 May 2018 10:29:09 +0200 Subject: [PATCH 0398/3180] Make make-ca.sh assume less about the system --- recipes/ca-certificates/make-ca.patch | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 recipes/ca-certificates/make-ca.patch diff --git a/recipes/ca-certificates/make-ca.patch b/recipes/ca-certificates/make-ca.patch new file mode 100644 index 00000000..73feb135 --- /dev/null +++ b/recipes/ca-certificates/make-ca.patch @@ -0,0 +1,12 @@ +1c1 +< #!/bin/bash +--- +> #!/usr/bin/env bash +31,33c31,33 +< CERTUTIL="/usr/bin/certutil" +< KEYTOOL="/opt/jdk/bin/keytool" +< OPENSSL="/usr/bin/openssl" +--- +> CERTUTIL="certutil" +> KEYTOOL="keytool" +> OPENSSL="openssl" From b64abc4edb92d694d20cc2027fb52bb7feeffce4 Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Tue, 8 May 2018 10:32:20 +0200 Subject: [PATCH 0399/3180] I might need to name the file correctly? --- recipes/ca-certificates/{make-ca.patch => make-ca.sh.patch} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/ca-certificates/{make-ca.patch => make-ca.sh.patch} (100%) diff --git a/recipes/ca-certificates/make-ca.patch b/recipes/ca-certificates/make-ca.sh.patch similarity index 100% rename from recipes/ca-certificates/make-ca.patch rename to recipes/ca-certificates/make-ca.sh.patch From 8642409151e229b5fff4c0ac62a5578bf0d4955c Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Tue, 8 May 2018 10:37:06 +0200 Subject: [PATCH 0400/3180] Fix patch --- recipes/ca-certificates/make-ca.sh.patch | 34 +- recipes/ca-certificates/source2/make-ca.sh | 732 +++++++++++++++++++++ 2 files changed, 754 insertions(+), 12 deletions(-) create mode 100644 recipes/ca-certificates/source2/make-ca.sh diff --git a/recipes/ca-certificates/make-ca.sh.patch b/recipes/ca-certificates/make-ca.sh.patch index 73feb135..65510e63 100644 --- a/recipes/ca-certificates/make-ca.sh.patch +++ b/recipes/ca-certificates/make-ca.sh.patch @@ -1,12 +1,22 @@ -1c1 -< #!/bin/bash ---- -> #!/usr/bin/env bash -31,33c31,33 -< CERTUTIL="/usr/bin/certutil" -< KEYTOOL="/opt/jdk/bin/keytool" -< OPENSSL="/usr/bin/openssl" ---- -> CERTUTIL="certutil" -> KEYTOOL="keytool" -> OPENSSL="openssl" +diff -ru source/make-ca.sh source2/make-ca.sh +--- source/make-ca.sh 2018-05-08 10:27:57.829291956 +0200 ++++ source2/make-ca.sh 2018-05-08 10:33:58.040239253 +0200 +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/usr/bin/env bash + # Begin /usr/sbin/make-ca.sh + # + # Script to create OpenSSL certs directory, GnuTLS certificate bundle, NSS +@@ -28,9 +28,9 @@ + CERTDATA="certdata.txt" + PKIDIR="/etc/pki" + SSLDIR="/etc/ssl" +-CERTUTIL="/usr/bin/certutil" +-KEYTOOL="/opt/jdk/bin/keytool" +-OPENSSL="/usr/bin/openssl" ++CERTUTIL="certutil" ++KEYTOOL="keytool" ++OPENSSL="openssl" + ANCHORDIR="${PKIDIR}/anchors" + CABUNDLE="${SSLDIR}/ca-bundle.crt" + CERTDIR="${SSLDIR}/certs" diff --git a/recipes/ca-certificates/source2/make-ca.sh b/recipes/ca-certificates/source2/make-ca.sh new file mode 100644 index 00000000..473d00a9 --- /dev/null +++ b/recipes/ca-certificates/source2/make-ca.sh @@ -0,0 +1,732 @@ +#!/usr/bin/env bash +# Begin /usr/sbin/make-ca.sh +# +# Script to create OpenSSL certs directory, GnuTLS certificate bundle, NSS +# shared DB, and Java cacerts from upstream certdata.txt and local sources +# +# Authors: DJ Lucas +# Bruce Dubbs +# +# Changes: +# +# 20170425 - Use p11-kit format anchors +# - Add CKA_NSS_MOZILLA_CA_POLICY attribute for p11-kit anchors +# - Add clientAuth OpenSSL attribute and (currently unused) NSS +# CKA_TRUST_CLIENT_AUTH +# 20170119 - Show trust bits on local certs +# - Add version output for help2man +# 20161210 - Add note about --force swich when same version +# 20161126 - Add -D/--destdir switch +# 20161124 - Add -f/--force switch to bypass version check +# - Add multiple switches to allow for alternate localtions +# - Add help text +# 20161118 - Drop make-cert.pl script +# - Add support for Java and NSSDB + +# Set defaults +VERSION="20170425" +CERTDATA="certdata.txt" +PKIDIR="/etc/pki" +SSLDIR="/etc/ssl" +CERTUTIL="certutil" +KEYTOOL="keytool" +OPENSSL="openssl" +ANCHORDIR="${PKIDIR}/anchors" +CABUNDLE="${SSLDIR}/ca-bundle.crt" +CERTDIR="${SSLDIR}/certs" +KEYSTORE="${SSLDIR}/java/cacerts" +NSSDB="${PKIDIR}/nssdb" +LOCALDIR="${SSLDIR}/local" +DESTDIR="" + +# Some data in the certs have UTF-8 characters +export LANG=en_US.utf8 + +TEMPDIR=$(mktemp -d) +WORKDIR="${TEMPDIR}/work" +WITH_NSS=1 +WITH_JAVA=1 +FORCE=0 + +function get_args(){ + while test -n "${1}" ; do + case "${1}" in + -C | --certdata) + check_arg $1 $2 + CERTDATA="${2}" + shift 2 + ;; + -D | --destdir) + check_arg $1 $2 + DESTDIR="${2}" + shift 2 + ;; + -P | --pkidir) + check_arg $1 $2 + PKIDIR="${2}" + ANCHORDIR="${PKIDIR}/anchors" + NSSDB="${PKIDIR}/nssdb" + echo "${@}" | grep -e "-a " -e "--anchordir" \ + -e "-n " -e "--nssdb" > /dev/null + if test "${?}" == "0"; then + echo "Error! ${1} cannot be used with the -a/--anchordir or -n/--nssdb switches." + echo "" + exit 3 + fi + shift 2 + ;; + -S | --ssldir) + check_arg $1 $2 + SSLDIR="${2}" + CABUNDLE="${SSLDIR}/ca-bundle.crt" + CERTDIR="${SSLDIR}/certs" + KEYSTORE="${SSLDIR}/java/cacerts" + LOCALDIR="${SSLDIR}/local" + echo "${@}" | grep -e "-c " -e "--cafile" \ + -e "-d " -e "--cadir" \ + -e "-j " -e "--javacerts" > /dev/null + if test "${?}" == "0"; then + echo "Error! ${1} cannot be used with the -c/--cafile, -d/--cadir, or" + echo "-j/--javacerts switches." + echo "" + exit 3 + fi + + shift 2 + ;; + -a | --anchordir) + check_arg $1 $2 + ANCHORDIR="${2}" + echo "${@}" | grep -e "-P " -e "--pkidir" > /dev/null + if test "${?}" == "0"; then + echo "Error! ${1} cannot be used with the -P/--pkidir switch." + echo "" + exit 3 + fi + shift 2 + ;; + -c | --cafile) + check_arg $1 $2 + CABUNDLE="${2}" + echo "${@}" | grep -e "-S " -e "--ssldir" > /dev/null + if test "${?}" == "0"; then + echo "Error! ${1} cannot be used with the -S/--ssldir switch." + echo "" + exit 3 + fi + shift 2 + ;; + -d | --cadir) + check_arg $1 $2 + CADIR="${2}" + if test "${?}" == "0"; then + echo "Error! ${1} cannot be used with the -S/--ssldir switch." + echo "" + exit 3 + fi + shift 2 + ;; + -j | --javacerts) + check_arg $1 $2 + KEYSTORE="${2}" + if test "${?}" == "0"; then + echo "Error! ${1} cannot be used with the -S/--ssldir switch." + echo "" + exit 3 + fi + shift 2 + ;; + -l | --localdir) + check_arg $1 $2 + LOCALDIR="${2}" + shift 2 + ;; + -n | --nssdb) + check_arg $1 $2 + NSSDB="${2}" + echo "${@}" | grep -e "-P " -e "--pkidir" > /dev/null + if test "${?}" == "0"; then + echo "Error! ${1} cannot be used with the -P/--pkidir switch." + echo "" + exit 3 + fi + shift 2 + ;; + -k | --keytool) + check_arg $1 $2 + KEYTOOL="${2}" + shift 2 + ;; + -s | --openssl) + check_arg $1 $2 + OPENSSL="${2}" + shift 2 + ;; + -t | --certutil) + check_arg $1 $2 + CERTUTIL="${2}" + shift 2 + ;; + -f | --force) + FORCE="1" + shift 1 + ;; + -h | --help) + showhelp + exit 0 + ;; + -v | --version) + echo -e "$(basename ${0}) ${VERSION}\n" + exit 0 + ;; + *) + showhelp + exit 1 + ;; + esac + done +} + +function check_arg(){ + echo "${2}" | grep -v "^-" > /dev/null + if [ -z "$?" -o ! -n "$2" ]; then + echo "Error: $1 requires a valid argument." + exit 1 + fi +} + +function showhelp(){ + echo "" + echo "`basename ${0}` converts certdata.txt (provided by the Mozilla Foundation)" + echo "into a complete PKI distribution for use with LFS or like distributions." + echo "" + echo " -C --certdata The certdata.txt file (provided by Mozilla)" + echo " Default: ./certdata.txt" + echo "" + echo " -D --destdir Change the output directory and use relative" + echo " paths for all other values." + echo " Default: unset" + echo "" + echo " -P --pkidir The output PKI directory - Cannot be used with" + echo " the -a/--anchordir or -n/--nssdb switches" + echo " Default: /etc/pki" + echo "" + echo " -S --ssldir The output SSL root direcotry - Cannot be used" + echo " with the -c/--cafile, -d/--cadir, or" + echo " -j/--javacerts switches" + echo " Defualt: /etc/ssl" + echo "" + echo " -a --anchordir The output directory for OpenSSL trusted" + echo " CA certificates used as trust anchors." + echo " Default: \$PKIDIR/anchors" + echo "" + echo " -c --cafile The output filename for the PEM formated bundle" + echo " Default: \$SSLDIR/ca-bundle.crt" + echo "" + echo " -d --cadir The output directory for the OpenSSL trusted" + echo " CA certificates" + echo " Deault: \$SSLDIR/certs/" + echo "" + echo " -j --javacerts The output path for the Java cacerts file" + echo " Default: \$SSLDIR/java/cacerts" + echo "" + echo " -l --localdir The path to a local set of OpenSSL trusted" + echo " certificates to include in the output" + echo " Default: \$SSLDIR/local" + echo "" + echo " -n --nssdb The output path for the shared NSS DB" + echo " Default: \$PKIDIR/nssdb" + echo "" + echo " -k --keytool The path to the java keytool utility" + echo "" + echo " -s --openssl The path to the openssl utility" + echo "" + echo " -t --certutil The path the certutil utility" + echo "" + echo " -f --force Force run, even if source is not newer" + echo "" + echo " -h --help Show this help message and exit" + echo "" + echo " -v --version Show version information and exit" + echo "" + echo "Example: `basename ${0}` -f -C ~/certdata.txt" + echo "" +} + +# Convert CKA_TRUST values to trust flags for certutil +function convert_trust(){ + case $1 in + CKT_NSS_TRUSTED_DELEGATOR) + echo "C" + ;; + CKT_NSS_NOT_TRUSTED) + echo "p" + ;; + CKT_NSS_MUST_VERIFY_TRUST) + echo "" + ;; + esac +} + +function convert_trust_arg(){ + case $1 in + C) + case $2 in + sa) + echo "-addtrust serverAuth" + ;; + sm) + echo "-addtrust emailProtection" + ;; + cs) + echo "-addtrust codeSigning" + ;; + ca) + echo "-addtrust clientAuth" + ;; + esac + ;; + p) + case $2 in + sa) + echo "-addreject serverAuth" + ;; + sm) + echo "-addreject emailProtection" + ;; + cs) + echo "-addreject codeSigning" + ;; + ca) + echo "-addreject clientAuth" + ;; + esac + ;; + *) + echo "" + ;; + esac +} + +# Define p11-kit ext value constants (see p11-kit API documentation) +get-p11-val() { + case $1 in + p11sasmcs) + p11value="0%2a%06%03U%1d%25%01%01%ff%04 0%1e%06%08%2b%06%01%05%05%07%03%04%06%08%2b%06%01%05%05%07%03%01%06%08%2b%06%01%05%05%07%03%03" + ;; + + p11sasm) + p11value="0 %06%03U%1d%25%01%01%ff%04%160%14%06%08%2b%06%01%05%05%07%03%04%06%08%2b%06%01%05%05%07%03%01" + ;; + + p11sacs) + p11value="0 %06%03U%1d%25%01%01%ff%04%160%14%06%08%2b%06%01%05%05%07%03%01%06%08%2b%06%01%05%05%07%03%03" + ;; + + p11sa) + p11value="0%16%06%03U%1d%25%01%01%ff%04%0c0%0a%06%08%2b%06%01%05%05%07%03%01" + ;; + + p11smcs) + p11value="0 %06%03U%1d%25%01%01%ff%04%160%14%06%08%2b%06%01%05%05%07%03%04%06%08%2b%06%01%05%05%07%03%03" + ;; + + p11sm) + p11value="0%16%06%03U%1d%25%01%01%ff%04%0c0%0a%06%08%2b%06%01%05%05%07%03%04" + ;; + + p11cs) + p11value="0%16%06%03U%1d%25%01%01%ff%04%0c0%0a%06%08%2b%06%01%05%05%07%03%03" + ;; + + p11) + p11value="0%18%06%03U%1d%25%01%01%ff%04%0e0%0c%06%0a%2b%06%01%04%01%99w%06%0a%10" + ;; + esac +} + +# Process command line arguments +get_args $@ + +if test ! -r "${CERTDATA}"; then + echo "${CERTDATA} was not found. The certdata.txt file must be in the local" + echo "directory, or speficied with the --certdata switch." + exit 1 +fi + +test -f "${CERTUTIL}" || WITH_NSS=0 +test -f "${KEYTOOL}" || WITH_JAVA=0 + +VERSION=$(grep CVS_ID "${CERTDATA}" | cut -d " " -f 8) + +if test "${VERSION}x" == "x"; then + echo "WARNING! ${CERTDATA} has no 'Revision' in CVS_ID" + echo "Will run conversion unconditionally." + sleep 2 + VERSION="$(date -u +%Y%m%d-%H%M)" +else + if test "${FORCE}" == "1"; then + echo "Output forced. Will run conversion unconditionally." + sleep 2 + elif test "${DESTDIR}x" == "x"; then + test -f "${CABUNDLE}" && + OLDVERSION=$(grep "^VERSION:" "${CABUNDLE}" | cut -d ":" -f 2) + fi +fi + +if test "${OLDVERSION}x" == "${VERSION}x"; then + echo "No update required! Use --force to update anyway." + exit 0 +fi + +mkdir -p "${TEMPDIR}"/{certs,ssl/{certs,java},pki/{nssdb,anchors},work} +cp "${CERTDATA}" "${WORKDIR}/certdata.txt" +pushd "${WORKDIR}" > /dev/null + +if test "${WITH_NSS}" == "1"; then + # Create a blank NSS DB + "${CERTUTIL}" -N --empty-password -d "sql:${TEMPDIR}/pki/nssdb" +fi + +# Get a list of starting lines for each cert +CERTBEGINLIST=`grep -n "^# Certificate" "${WORKDIR}/certdata.txt" | \ + cut -d ":" -f1` + +# Dump individual certs to temp file +for certbegin in ${CERTBEGINLIST}; do + awk "NR==$certbegin,/^CKA_TRUST_STEP_UP_APPROVED/" "${WORKDIR}/certdata.txt" \ + > "${TEMPDIR}/certs/${certbegin}.tmp" +done + +unset CERTBEGINLIST certbegin + +for tempfile in ${TEMPDIR}/certs/*.tmp; do + # Get a name for the cert + certname="$(grep "^# Certificate" "${tempfile}" | cut -d '"' -f 2)" + + # Determine certificate trust values for SSL/TLS, S/MIME, and Code Signing + satrust="$(convert_trust `grep '^CKA_TRUST_SERVER_AUTH' ${tempfile} | \ + cut -d " " -f 3`)" + smtrust="$(convert_trust `grep '^CKA_TRUST_EMAIL_PROTECTION' ${tempfile} | \ + cut -d " " -f 3`)" + cstrust="$(convert_trust `grep '^CKA_TRUST_CODE_SIGNING' ${tempfile} | \ + cut -d " " -f 3`)" + # Not currently included in NSS certdata.txt + #catrust="$(convert_trust `grep '^CKA_TRUST_CLIENT_AUTH' ${tempfile} | \ + # cut -d " " -f 3`)" + + # Get args for OpenSSL trust settings + saarg="$(convert_trust_arg "${satrust}" sa)" + smarg="$(convert_trust_arg "${smtrust}" sm)" + csarg="$(convert_trust_arg "${cstrust}" cs)" + # Not currently included in NSS certdata.txt + #caarg="$(convert_trust_arg "${catrust}" ca)" + + # Convert to a PEM formated certificate + printf $(awk '/^CKA_VALUE/{flag=1;next}/^END/{flag=0}flag{printf $0}' \ + "${tempfile}") | "${OPENSSL}" x509 -text -inform DER -fingerprint \ + > tempfile.crt + + # Get individual values for certificates + certkey="$(${OPENSSL} x509 -in tempfile.crt -noout -pubkey)" + certcer="$(${OPENSSL} x509 -in tempfile.crt)" + certtxt="$(${OPENSSL} x509 -in tempfile.crt -noout -text)" + + # Get p11-kit label, oid, and values + p11label="$(grep -m1 "Issuer" ${tempfile} | grep -o CN=.*$ | \ + cut -d ',' -f 1 | sed 's@CN=@@')" + + # if distrusted at all, x-distrusted + if test "${satrust}" == "p" -o "${smtrust}" == "p" -o "${cstrust}" == "p" + then + # if any distrusted, x-distrusted + p11trust="x-distrusted: true" + p11oid="1.3.6.1.4.1.3319.6.10.1" + p11value="0.%06%0a%2b%06%01%04%01%99w%06%0a%01%04 0%1e%06%08%2b%06%01%05%05%07%03%04%06%08%2b%06%01%05%05%07%03%01%06%08%2b%06%01%05%05%07%03%03" + else + p11trust="trusted: true" + p11oid="2.5.29.37" + trustp11="p11" + if test "${satrust}" == "C"; then + trustp11="${trustp11}sa" + fi + if test "${smtrust}" == "C"; then + trustp11="${trustp11}sm" + fi + if test "${cstrust}" == "C"; then + trustp11="${trustp11}cs" + fi + get-p11-val "${trustp11}" + fi + + # Get a hash for the cert + keyhash=$("${OPENSSL}" x509 -noout -in tempfile.crt -hash) + + # Print information about cert + echo "Certificate: ${certname}" + echo "Keyhash: ${keyhash}" + + # Place certificate into trust anchors dir + anchorfile="${TEMPDIR}/pki/anchors/${keyhash}.pem" + echo "[p11-kit-object-v1]" >> "${anchorfile}" + echo "label: \"${p11label}\"" >> "${anchorfile}" + echo "class: x-certificate-extension" >> "${anchorfile}" + echo "object-id: ${p11oid}" >> "${anchorfile}" + echo "value: \"${p11value}\"" >> "${anchorfile}" + echo "modifiable: false" >> "${anchorfile}" + echo "${certkey}" >> "${anchorfile}" + echo "" >> "${anchorfile}" + echo "[p11-kit-object-v1]" >> "${anchorfile}" + echo "label: \"${p11label}\"" >> "${anchorfile}" + echo "${p11trust}" >> "${anchorfile}" + echo "nss-mozilla-ca-policy: true" >> "${anchorfile}" + echo "modifiable: false" >> "${anchorfile}" + echo "${certcer}" >> "${anchorfile}" + echo "${certtxt}" | sed 's@^@#@' >> "${anchorfile}" + echo "Added to p11-kit anchor directory with trust '${satrust},${smtrust},${cstrust}'." + + + # Import certificates trusted for SSL/TLS into the Java keystore and + # GnuTLS certificate bundle + if test "${satrust}x" == "Cx"; then + # Java keystore + if test "${WITH_JAVA}" == "1"; then + "${KEYTOOL}" -import -noprompt -alias "${certname}" \ + -keystore "${TEMPDIR}/ssl/java/cacerts" \ + -storepass 'changeit' -file tempfile.crt \ + 2>&1> /dev/null | \ + sed -e 's@Certificate was a@A@' -e 's@keystore@Java keystore.@' + fi + + # GnuTLS certificate bundle + cat tempfile.crt >> "${TEMPDIR}/ssl/ca-bundle.crt.tmp" + echo "Added to GnuTLS ceritificate bundle." + fi + + # Import certificate into the temporary certificate directory with + # trust arguments + "${OPENSSL}" x509 -in tempfile.crt -text -fingerprint \ + -setalias "${certname}" ${saarg} ${smarg} ${csarg} \ + > "${TEMPDIR}/ssl/certs/${keyhash}.pem" + echo "Added to OpenSSL certificate directory with trust '${satrust},${smtrust},${cstrust}'." + + # Import all certificates with trust args to the temporary NSS DB + if test "${WITH_NSS}" == "1"; then + "${CERTUTIL}" -d "sql:${TEMPDIR}/pki/nssdb" -A \ + -t "${satrust},${smtrust},${cstrust}" \ + -n "${certname}" -i tempfile.crt + echo "Added to NSS shared DB with trust '${satrust},${smtrust},${cstrust}'." + fi + + # Clean up the directory and environment as we go + rm -f tempfile.crt + unset keyhash subject certname + unset satrust smtrust cstrust catrust sarg smarg csarg caarg + unset p11trust p11oid p11value trustp11 certkey certcer certtxt + echo -e "\n" +done +unset tempfile + +# Sanity check +count=$(ls "${TEMPDIR}"/ssl/certs/*.pem | wc -l) +# Historically there have been between 152 and 165 certs +# A minimum of 140 should be safe for a rudimentry sanity check +if test "${count}" -lt "140" ; then + echo "Error! Only ${count} certificates were generated!" + echo "Exiting without update!" + echo "" + echo "${TEMPDIR} is the temporary working directory" + exit 2 +fi +unset count + +# Generate the bundle +bundlefile=`basename "${CABUNDLE}"` +bundledir=`echo "${CABUNDLE}" | sed "s@/${bundlefile}@@"` +install -vdm755 "${DESTDIR}${bundledir}" 2>&1>/dev/null +test -f "${DESTDIR}${CABUNDLE}" && mv "${DESTDIR}${CABUNDLE}" \ + "${DESTDIR}${CABUNDLE}.old" +echo "VERSION:${VERSION}" > "${DESTDIR}${CABUNDLE}" +cat "${TEMPDIR}/ssl/ca-bundle.crt.tmp" >> "${DESTDIR}${CABUNDLE}" && +rm -f "${DESTDIR}${CABUNDLE}.old" +unset bundlefile bundledir + +# Install Java Cacerts +if test "${WITH_JAVA}" == "1"; then + javafile=`basename "${KEYSTORE}"` + javadir=`echo "${KEYSTORE}" | sed "s@/${javafile}@@"` + install -vdm755 "${DESTDIR}${javadir}" 2>&1>/dev/null + test -f "${DESTDIR}${KEYSTORE}" && mv "${DESTDIR}${KEYSTORE}" \ + "${DESTDIR}${KEYSTORE}.old" + install -m644 "${TEMPDIR}/ssl/java/cacerts" "${DESTDIR}${KEYSTORE}" && + rm -f "${DESTDIR}${KEYSTORE}.old" + unset javafile javadir +fi + +# Install NSS Shared DB +if test "${WITH_NSS}" == "1"; then + sed -e "s@${TEMPDIR}/pki/nssdb@${NSSDB}@" \ + -e 's/library=/library=libnsssysinit.so/' \ + -e 's/Flags=internal/Flags=internal,moduleDBOnly/' \ + -i "${TEMPDIR}/pki/nssdb/pkcs11.txt" + test -d "${DESTDIR}${NSSDB}" && mv "${DESTDIR}${NSSDB}" \ + "${DESTDIR}${NSSDB}.old" + install -dm755 "${DESTDIR}${NSSDB}" 2>&1>/dev/null + install -m644 "${TEMPDIR}"/pki/nssdb/{cert9.db,key4.db,pkcs11.txt} \ + "${DESTDIR}${NSSDB}" && + rm -rf "${DESTDIR}${NSSDB}.old" +fi + +# Install anchors in $ANCHORDIR +test -d "${DESTDIR}${ANCHORDIR}" && mv "${DESTDIR}${ANCHORDIR}"\ + "${DESTDIR}${ANCHORDIR}.old" +install -dm755 "${DESTDIR}${ANCHORDIR}" 2>&1>/dev/null +install -m644 "${TEMPDIR}"/pki/anchors/*.pem "${DESTDIR}${ANCHORDIR}" && +rm -rf "${DESTDIR}${ANCHORDIR}.old" + +# Install certificates in $CERTDIR +test -d "${DESTDIR}${CERTDIR}" && mv "${DESTDIR}${CERTDIR}" \ + "${DESTDIR}${CERTDIR}.old" +install -dm755 "${DESTDIR}${CERTDIR}" 2>&1>/dev/null +install -m644 "${TEMPDIR}"/ssl/certs/*.pem "${DESTDIR}${CERTDIR}" && +rm -rf "${DESTDIR}${CERTDIR}.old" + +# Import any certs in $LOCALDIR +# Don't do any checking, just trust the admin +if test -d "${LOCALDIR}"; then + for cert in `find "${LOCALDIR}" -name "*.pem"`; do + # Get some information about the certificate + keyhash=$("${OPENSSL}" x509 -noout -in "${cert}" -hash) + subject=$("${OPENSSL}" x509 -noout -in "${cert}" -subject) + count=1 + while test "${count}" -lt 10; do + echo "${subject}" | cut -d "/" -f "${count}" | grep "CN=" >/dev/null \ + && break + let count++ + done + certname=$(echo "${subject}" | cut -d "/" -f "${count}" | sed 's@CN=@@') + + echo "Certificate: ${certname}" + echo "Keyhash: ${keyhash}" + + # Get trust information + trustlist=$("${OPENSSL}" x509 -in "${cert}" -text -trustout | \ + grep -A1 "Trusted Uses") + satrust="" + smtrust="" + cstrust="" + catrust="" + satrust=$(echo "${trustlist}" | \ + grep "TLS Web Server" 2>&1> /dev/null && echo "C") + smtrust=$(echo "${trustlist}" | \ + grep "E-mail Protection" 2>&1 >/dev/null && echo "C") + cstrust=$(echo "${trustlist}" | \ + grep "Code Signing" 2>&1 >/dev/null && echo "C") + catrust=$(echo "${trustlist}" | \ + grep "Client Auth" 2>&1 >/dev/null && echo "C") + + # Get reject information + rejectlist=$("${OPENSSL}" x509 -in "${cert}" -text -trustout | \ + grep -A1 "Rejected Uses") + if test "${satrust}" == ""; then satrust=$(echo "${rejectlist}" | \ + grep "TLS Web Server" 2>&1> /dev/null && echo "p"); fi + if test "${smtrust}" == ""; then smtrust=$(echo "${rejectlist}" | \ + grep "E-mail Protection" 2>&1> /dev/null && echo "p"); fi + if test "${cstrust}" == ""; then cstrust=$(echo "${rejectlist}" | \ + grep "Code Signing" 2>&1> /dev/null && echo "p"); fi + if test "${catrust}" == ""; then catrust=$(echo "${rejectlist}" | \ + grep "Client Auth" 2>&1> /dev/null && echo "p"); fi + + + # Place certificate into trust anchors dir + p11label="$(grep -m1 "Issuer" ${cert} | grep -o CN=.*$ | \ + cut -d ',' -f 1 | sed 's@CN=@@')" + + # if distrusted at all, x-distrusted + if test "${satrust}" == "p" -o "${smtrust}" == "p" -o "${cstrust}" == "p" + then + # if any distrusted, x-distrusted + p11trust="x-distrusted: true" + p11oid="1.3.6.1.4.1.3319.6.10.1" + p11value="0.%06%0a%2b%06%01%04%01%99w%06%0a%01%04 0%1e%06%08%2b%06%01%05%05%07%03%04%06%08%2b%06%01%05%05%07%03%01%06%08%2b%06%01%05%05%07%03%03" + else + p11trust="trusted: true" + p11oid="2.5.29.37" + trustp11="p11" + if test "${satrust}" == "C"; then + trustp11="${trustp11}sa" + fi + if test "${smtrust}" == "C"; then + trustp11="${trustp11}sm" + fi + if test "${cstrust}" == "C"; then + trustp11="${trustp11}cs" + fi + get-p11-val "${trustp11}" + fi + + anchorfile="${DESTDIR}${ANCHORDIR}/${keyhash}.pem" + + echo "[p11-kit-object-v1]" >> "${anchorfile}" + echo "label: \"${p11label}\"" >> "${anchorfile}" + echo "class: x-certificate-extension" >> "${anchorfile}" + echo "object-id: ${p11oid}" >> "${anchorfile}" + echo "value: \"${p11value}\"" >> "${anchorfile}" + echo "modifiable: false" >> "${anchorfile}" + echo "${certkey}" >> "${anchorfile}" + echo "" >> "${anchorfile}" + echo "[p11-kit-object-v1]" >> "${anchorfile}" + echo "label: \"${p11label}\"" >> "${anchorfile}" + echo "${p11trust}" >> "${anchorfile}" + echo "modifiable: false" >> "${anchorfile}" + echo "${certcer}" >> "${anchorfile}" + echo "${certtxt}" | sed 's@^@#@' >> "${anchorfile}" + echo "Added to p11-kit anchor directory with trust '${satrust},${smtrust},${cstrust}'." + + # Install in Java keystore + if test "${WITH_JAVA}" == "1" -a "${satrust}x" == "Cx"; then + "${KEYTOOL}" -import -noprompt -alias "${certname}" \ + -keystore "${DESTDIR}${KEYSTORE}" \ + -storepass 'changeit' -file "${cert}" 2>&1> /dev/null | \ + sed -e 's@Certificate was a@A@' -e 's@keystore@Java keystore.@' + fi + + # Append to the bundle - source should have trust info, process with + # openssl x509 to strip + if test "${satrust}x" == "Cx"; then + "${OPENSSL}" x509 -in "${cert}" -text -fingerprint \ + >> "${DESTDIR}${CABUNDLE}" + echo "Added to GnuTLS certificate bundle." + fi + + # Install into OpenSSL certificate store + "${OPENSSL}" x509 -in "${cert}" -text -fingerprint \ + -setalias "${certname}" \ + >> "${DESTDIR}${CERTDIR}/${keyhash}.pem" + echo "Added to OpenSSL certificate directory with trust '${satrust},${smtrust},${cstrust},${catrust}'." + + # Add to Shared NSS DB + if test "${WITH_NSS}" == "1"; then + "${OPENSSL}" x509 -in "${cert}" -text -fingerprint | \ + "${CERTUTIL}" -d "sql:${DESTDIR}${NSSDB}" -A \ + -t "${satrust},${smtrust},${cstrust}" \ + -n "${certname}" + echo "Added to NSS shared DB with trust '${satrust},${smtrust},${cstrust}'." + fi + + unset keyhash subject count certname + unset trustlist rejectlist satrust smtrust cstrust catrust + unset p11trust p11oid p11value trustp11 certkey certcer certtxt + echo "" + + done + unset cert +fi + +/usr/bin/c_rehash "${DESTDIR}${CERTDIR}" 2>&1>/dev/null +popd > /dev/null + +# Clean up the mess +rm -rf "${TEMPDIR}" + +# End /usr/sbin/make-ca.sh From ea52c5951a109a33d2c825f98bb59a021b3a61a0 Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Tue, 8 May 2018 14:40:00 +0200 Subject: [PATCH 0401/3180] Delete accidentally commited dir --- recipes/ca-certificates/source2/make-ca.sh | 732 --------------------- 1 file changed, 732 deletions(-) delete mode 100644 recipes/ca-certificates/source2/make-ca.sh diff --git a/recipes/ca-certificates/source2/make-ca.sh b/recipes/ca-certificates/source2/make-ca.sh deleted file mode 100644 index 473d00a9..00000000 --- a/recipes/ca-certificates/source2/make-ca.sh +++ /dev/null @@ -1,732 +0,0 @@ -#!/usr/bin/env bash -# Begin /usr/sbin/make-ca.sh -# -# Script to create OpenSSL certs directory, GnuTLS certificate bundle, NSS -# shared DB, and Java cacerts from upstream certdata.txt and local sources -# -# Authors: DJ Lucas -# Bruce Dubbs -# -# Changes: -# -# 20170425 - Use p11-kit format anchors -# - Add CKA_NSS_MOZILLA_CA_POLICY attribute for p11-kit anchors -# - Add clientAuth OpenSSL attribute and (currently unused) NSS -# CKA_TRUST_CLIENT_AUTH -# 20170119 - Show trust bits on local certs -# - Add version output for help2man -# 20161210 - Add note about --force swich when same version -# 20161126 - Add -D/--destdir switch -# 20161124 - Add -f/--force switch to bypass version check -# - Add multiple switches to allow for alternate localtions -# - Add help text -# 20161118 - Drop make-cert.pl script -# - Add support for Java and NSSDB - -# Set defaults -VERSION="20170425" -CERTDATA="certdata.txt" -PKIDIR="/etc/pki" -SSLDIR="/etc/ssl" -CERTUTIL="certutil" -KEYTOOL="keytool" -OPENSSL="openssl" -ANCHORDIR="${PKIDIR}/anchors" -CABUNDLE="${SSLDIR}/ca-bundle.crt" -CERTDIR="${SSLDIR}/certs" -KEYSTORE="${SSLDIR}/java/cacerts" -NSSDB="${PKIDIR}/nssdb" -LOCALDIR="${SSLDIR}/local" -DESTDIR="" - -# Some data in the certs have UTF-8 characters -export LANG=en_US.utf8 - -TEMPDIR=$(mktemp -d) -WORKDIR="${TEMPDIR}/work" -WITH_NSS=1 -WITH_JAVA=1 -FORCE=0 - -function get_args(){ - while test -n "${1}" ; do - case "${1}" in - -C | --certdata) - check_arg $1 $2 - CERTDATA="${2}" - shift 2 - ;; - -D | --destdir) - check_arg $1 $2 - DESTDIR="${2}" - shift 2 - ;; - -P | --pkidir) - check_arg $1 $2 - PKIDIR="${2}" - ANCHORDIR="${PKIDIR}/anchors" - NSSDB="${PKIDIR}/nssdb" - echo "${@}" | grep -e "-a " -e "--anchordir" \ - -e "-n " -e "--nssdb" > /dev/null - if test "${?}" == "0"; then - echo "Error! ${1} cannot be used with the -a/--anchordir or -n/--nssdb switches." - echo "" - exit 3 - fi - shift 2 - ;; - -S | --ssldir) - check_arg $1 $2 - SSLDIR="${2}" - CABUNDLE="${SSLDIR}/ca-bundle.crt" - CERTDIR="${SSLDIR}/certs" - KEYSTORE="${SSLDIR}/java/cacerts" - LOCALDIR="${SSLDIR}/local" - echo "${@}" | grep -e "-c " -e "--cafile" \ - -e "-d " -e "--cadir" \ - -e "-j " -e "--javacerts" > /dev/null - if test "${?}" == "0"; then - echo "Error! ${1} cannot be used with the -c/--cafile, -d/--cadir, or" - echo "-j/--javacerts switches." - echo "" - exit 3 - fi - - shift 2 - ;; - -a | --anchordir) - check_arg $1 $2 - ANCHORDIR="${2}" - echo "${@}" | grep -e "-P " -e "--pkidir" > /dev/null - if test "${?}" == "0"; then - echo "Error! ${1} cannot be used with the -P/--pkidir switch." - echo "" - exit 3 - fi - shift 2 - ;; - -c | --cafile) - check_arg $1 $2 - CABUNDLE="${2}" - echo "${@}" | grep -e "-S " -e "--ssldir" > /dev/null - if test "${?}" == "0"; then - echo "Error! ${1} cannot be used with the -S/--ssldir switch." - echo "" - exit 3 - fi - shift 2 - ;; - -d | --cadir) - check_arg $1 $2 - CADIR="${2}" - if test "${?}" == "0"; then - echo "Error! ${1} cannot be used with the -S/--ssldir switch." - echo "" - exit 3 - fi - shift 2 - ;; - -j | --javacerts) - check_arg $1 $2 - KEYSTORE="${2}" - if test "${?}" == "0"; then - echo "Error! ${1} cannot be used with the -S/--ssldir switch." - echo "" - exit 3 - fi - shift 2 - ;; - -l | --localdir) - check_arg $1 $2 - LOCALDIR="${2}" - shift 2 - ;; - -n | --nssdb) - check_arg $1 $2 - NSSDB="${2}" - echo "${@}" | grep -e "-P " -e "--pkidir" > /dev/null - if test "${?}" == "0"; then - echo "Error! ${1} cannot be used with the -P/--pkidir switch." - echo "" - exit 3 - fi - shift 2 - ;; - -k | --keytool) - check_arg $1 $2 - KEYTOOL="${2}" - shift 2 - ;; - -s | --openssl) - check_arg $1 $2 - OPENSSL="${2}" - shift 2 - ;; - -t | --certutil) - check_arg $1 $2 - CERTUTIL="${2}" - shift 2 - ;; - -f | --force) - FORCE="1" - shift 1 - ;; - -h | --help) - showhelp - exit 0 - ;; - -v | --version) - echo -e "$(basename ${0}) ${VERSION}\n" - exit 0 - ;; - *) - showhelp - exit 1 - ;; - esac - done -} - -function check_arg(){ - echo "${2}" | grep -v "^-" > /dev/null - if [ -z "$?" -o ! -n "$2" ]; then - echo "Error: $1 requires a valid argument." - exit 1 - fi -} - -function showhelp(){ - echo "" - echo "`basename ${0}` converts certdata.txt (provided by the Mozilla Foundation)" - echo "into a complete PKI distribution for use with LFS or like distributions." - echo "" - echo " -C --certdata The certdata.txt file (provided by Mozilla)" - echo " Default: ./certdata.txt" - echo "" - echo " -D --destdir Change the output directory and use relative" - echo " paths for all other values." - echo " Default: unset" - echo "" - echo " -P --pkidir The output PKI directory - Cannot be used with" - echo " the -a/--anchordir or -n/--nssdb switches" - echo " Default: /etc/pki" - echo "" - echo " -S --ssldir The output SSL root direcotry - Cannot be used" - echo " with the -c/--cafile, -d/--cadir, or" - echo " -j/--javacerts switches" - echo " Defualt: /etc/ssl" - echo "" - echo " -a --anchordir The output directory for OpenSSL trusted" - echo " CA certificates used as trust anchors." - echo " Default: \$PKIDIR/anchors" - echo "" - echo " -c --cafile The output filename for the PEM formated bundle" - echo " Default: \$SSLDIR/ca-bundle.crt" - echo "" - echo " -d --cadir The output directory for the OpenSSL trusted" - echo " CA certificates" - echo " Deault: \$SSLDIR/certs/" - echo "" - echo " -j --javacerts The output path for the Java cacerts file" - echo " Default: \$SSLDIR/java/cacerts" - echo "" - echo " -l --localdir The path to a local set of OpenSSL trusted" - echo " certificates to include in the output" - echo " Default: \$SSLDIR/local" - echo "" - echo " -n --nssdb The output path for the shared NSS DB" - echo " Default: \$PKIDIR/nssdb" - echo "" - echo " -k --keytool The path to the java keytool utility" - echo "" - echo " -s --openssl The path to the openssl utility" - echo "" - echo " -t --certutil The path the certutil utility" - echo "" - echo " -f --force Force run, even if source is not newer" - echo "" - echo " -h --help Show this help message and exit" - echo "" - echo " -v --version Show version information and exit" - echo "" - echo "Example: `basename ${0}` -f -C ~/certdata.txt" - echo "" -} - -# Convert CKA_TRUST values to trust flags for certutil -function convert_trust(){ - case $1 in - CKT_NSS_TRUSTED_DELEGATOR) - echo "C" - ;; - CKT_NSS_NOT_TRUSTED) - echo "p" - ;; - CKT_NSS_MUST_VERIFY_TRUST) - echo "" - ;; - esac -} - -function convert_trust_arg(){ - case $1 in - C) - case $2 in - sa) - echo "-addtrust serverAuth" - ;; - sm) - echo "-addtrust emailProtection" - ;; - cs) - echo "-addtrust codeSigning" - ;; - ca) - echo "-addtrust clientAuth" - ;; - esac - ;; - p) - case $2 in - sa) - echo "-addreject serverAuth" - ;; - sm) - echo "-addreject emailProtection" - ;; - cs) - echo "-addreject codeSigning" - ;; - ca) - echo "-addreject clientAuth" - ;; - esac - ;; - *) - echo "" - ;; - esac -} - -# Define p11-kit ext value constants (see p11-kit API documentation) -get-p11-val() { - case $1 in - p11sasmcs) - p11value="0%2a%06%03U%1d%25%01%01%ff%04 0%1e%06%08%2b%06%01%05%05%07%03%04%06%08%2b%06%01%05%05%07%03%01%06%08%2b%06%01%05%05%07%03%03" - ;; - - p11sasm) - p11value="0 %06%03U%1d%25%01%01%ff%04%160%14%06%08%2b%06%01%05%05%07%03%04%06%08%2b%06%01%05%05%07%03%01" - ;; - - p11sacs) - p11value="0 %06%03U%1d%25%01%01%ff%04%160%14%06%08%2b%06%01%05%05%07%03%01%06%08%2b%06%01%05%05%07%03%03" - ;; - - p11sa) - p11value="0%16%06%03U%1d%25%01%01%ff%04%0c0%0a%06%08%2b%06%01%05%05%07%03%01" - ;; - - p11smcs) - p11value="0 %06%03U%1d%25%01%01%ff%04%160%14%06%08%2b%06%01%05%05%07%03%04%06%08%2b%06%01%05%05%07%03%03" - ;; - - p11sm) - p11value="0%16%06%03U%1d%25%01%01%ff%04%0c0%0a%06%08%2b%06%01%05%05%07%03%04" - ;; - - p11cs) - p11value="0%16%06%03U%1d%25%01%01%ff%04%0c0%0a%06%08%2b%06%01%05%05%07%03%03" - ;; - - p11) - p11value="0%18%06%03U%1d%25%01%01%ff%04%0e0%0c%06%0a%2b%06%01%04%01%99w%06%0a%10" - ;; - esac -} - -# Process command line arguments -get_args $@ - -if test ! -r "${CERTDATA}"; then - echo "${CERTDATA} was not found. The certdata.txt file must be in the local" - echo "directory, or speficied with the --certdata switch." - exit 1 -fi - -test -f "${CERTUTIL}" || WITH_NSS=0 -test -f "${KEYTOOL}" || WITH_JAVA=0 - -VERSION=$(grep CVS_ID "${CERTDATA}" | cut -d " " -f 8) - -if test "${VERSION}x" == "x"; then - echo "WARNING! ${CERTDATA} has no 'Revision' in CVS_ID" - echo "Will run conversion unconditionally." - sleep 2 - VERSION="$(date -u +%Y%m%d-%H%M)" -else - if test "${FORCE}" == "1"; then - echo "Output forced. Will run conversion unconditionally." - sleep 2 - elif test "${DESTDIR}x" == "x"; then - test -f "${CABUNDLE}" && - OLDVERSION=$(grep "^VERSION:" "${CABUNDLE}" | cut -d ":" -f 2) - fi -fi - -if test "${OLDVERSION}x" == "${VERSION}x"; then - echo "No update required! Use --force to update anyway." - exit 0 -fi - -mkdir -p "${TEMPDIR}"/{certs,ssl/{certs,java},pki/{nssdb,anchors},work} -cp "${CERTDATA}" "${WORKDIR}/certdata.txt" -pushd "${WORKDIR}" > /dev/null - -if test "${WITH_NSS}" == "1"; then - # Create a blank NSS DB - "${CERTUTIL}" -N --empty-password -d "sql:${TEMPDIR}/pki/nssdb" -fi - -# Get a list of starting lines for each cert -CERTBEGINLIST=`grep -n "^# Certificate" "${WORKDIR}/certdata.txt" | \ - cut -d ":" -f1` - -# Dump individual certs to temp file -for certbegin in ${CERTBEGINLIST}; do - awk "NR==$certbegin,/^CKA_TRUST_STEP_UP_APPROVED/" "${WORKDIR}/certdata.txt" \ - > "${TEMPDIR}/certs/${certbegin}.tmp" -done - -unset CERTBEGINLIST certbegin - -for tempfile in ${TEMPDIR}/certs/*.tmp; do - # Get a name for the cert - certname="$(grep "^# Certificate" "${tempfile}" | cut -d '"' -f 2)" - - # Determine certificate trust values for SSL/TLS, S/MIME, and Code Signing - satrust="$(convert_trust `grep '^CKA_TRUST_SERVER_AUTH' ${tempfile} | \ - cut -d " " -f 3`)" - smtrust="$(convert_trust `grep '^CKA_TRUST_EMAIL_PROTECTION' ${tempfile} | \ - cut -d " " -f 3`)" - cstrust="$(convert_trust `grep '^CKA_TRUST_CODE_SIGNING' ${tempfile} | \ - cut -d " " -f 3`)" - # Not currently included in NSS certdata.txt - #catrust="$(convert_trust `grep '^CKA_TRUST_CLIENT_AUTH' ${tempfile} | \ - # cut -d " " -f 3`)" - - # Get args for OpenSSL trust settings - saarg="$(convert_trust_arg "${satrust}" sa)" - smarg="$(convert_trust_arg "${smtrust}" sm)" - csarg="$(convert_trust_arg "${cstrust}" cs)" - # Not currently included in NSS certdata.txt - #caarg="$(convert_trust_arg "${catrust}" ca)" - - # Convert to a PEM formated certificate - printf $(awk '/^CKA_VALUE/{flag=1;next}/^END/{flag=0}flag{printf $0}' \ - "${tempfile}") | "${OPENSSL}" x509 -text -inform DER -fingerprint \ - > tempfile.crt - - # Get individual values for certificates - certkey="$(${OPENSSL} x509 -in tempfile.crt -noout -pubkey)" - certcer="$(${OPENSSL} x509 -in tempfile.crt)" - certtxt="$(${OPENSSL} x509 -in tempfile.crt -noout -text)" - - # Get p11-kit label, oid, and values - p11label="$(grep -m1 "Issuer" ${tempfile} | grep -o CN=.*$ | \ - cut -d ',' -f 1 | sed 's@CN=@@')" - - # if distrusted at all, x-distrusted - if test "${satrust}" == "p" -o "${smtrust}" == "p" -o "${cstrust}" == "p" - then - # if any distrusted, x-distrusted - p11trust="x-distrusted: true" - p11oid="1.3.6.1.4.1.3319.6.10.1" - p11value="0.%06%0a%2b%06%01%04%01%99w%06%0a%01%04 0%1e%06%08%2b%06%01%05%05%07%03%04%06%08%2b%06%01%05%05%07%03%01%06%08%2b%06%01%05%05%07%03%03" - else - p11trust="trusted: true" - p11oid="2.5.29.37" - trustp11="p11" - if test "${satrust}" == "C"; then - trustp11="${trustp11}sa" - fi - if test "${smtrust}" == "C"; then - trustp11="${trustp11}sm" - fi - if test "${cstrust}" == "C"; then - trustp11="${trustp11}cs" - fi - get-p11-val "${trustp11}" - fi - - # Get a hash for the cert - keyhash=$("${OPENSSL}" x509 -noout -in tempfile.crt -hash) - - # Print information about cert - echo "Certificate: ${certname}" - echo "Keyhash: ${keyhash}" - - # Place certificate into trust anchors dir - anchorfile="${TEMPDIR}/pki/anchors/${keyhash}.pem" - echo "[p11-kit-object-v1]" >> "${anchorfile}" - echo "label: \"${p11label}\"" >> "${anchorfile}" - echo "class: x-certificate-extension" >> "${anchorfile}" - echo "object-id: ${p11oid}" >> "${anchorfile}" - echo "value: \"${p11value}\"" >> "${anchorfile}" - echo "modifiable: false" >> "${anchorfile}" - echo "${certkey}" >> "${anchorfile}" - echo "" >> "${anchorfile}" - echo "[p11-kit-object-v1]" >> "${anchorfile}" - echo "label: \"${p11label}\"" >> "${anchorfile}" - echo "${p11trust}" >> "${anchorfile}" - echo "nss-mozilla-ca-policy: true" >> "${anchorfile}" - echo "modifiable: false" >> "${anchorfile}" - echo "${certcer}" >> "${anchorfile}" - echo "${certtxt}" | sed 's@^@#@' >> "${anchorfile}" - echo "Added to p11-kit anchor directory with trust '${satrust},${smtrust},${cstrust}'." - - - # Import certificates trusted for SSL/TLS into the Java keystore and - # GnuTLS certificate bundle - if test "${satrust}x" == "Cx"; then - # Java keystore - if test "${WITH_JAVA}" == "1"; then - "${KEYTOOL}" -import -noprompt -alias "${certname}" \ - -keystore "${TEMPDIR}/ssl/java/cacerts" \ - -storepass 'changeit' -file tempfile.crt \ - 2>&1> /dev/null | \ - sed -e 's@Certificate was a@A@' -e 's@keystore@Java keystore.@' - fi - - # GnuTLS certificate bundle - cat tempfile.crt >> "${TEMPDIR}/ssl/ca-bundle.crt.tmp" - echo "Added to GnuTLS ceritificate bundle." - fi - - # Import certificate into the temporary certificate directory with - # trust arguments - "${OPENSSL}" x509 -in tempfile.crt -text -fingerprint \ - -setalias "${certname}" ${saarg} ${smarg} ${csarg} \ - > "${TEMPDIR}/ssl/certs/${keyhash}.pem" - echo "Added to OpenSSL certificate directory with trust '${satrust},${smtrust},${cstrust}'." - - # Import all certificates with trust args to the temporary NSS DB - if test "${WITH_NSS}" == "1"; then - "${CERTUTIL}" -d "sql:${TEMPDIR}/pki/nssdb" -A \ - -t "${satrust},${smtrust},${cstrust}" \ - -n "${certname}" -i tempfile.crt - echo "Added to NSS shared DB with trust '${satrust},${smtrust},${cstrust}'." - fi - - # Clean up the directory and environment as we go - rm -f tempfile.crt - unset keyhash subject certname - unset satrust smtrust cstrust catrust sarg smarg csarg caarg - unset p11trust p11oid p11value trustp11 certkey certcer certtxt - echo -e "\n" -done -unset tempfile - -# Sanity check -count=$(ls "${TEMPDIR}"/ssl/certs/*.pem | wc -l) -# Historically there have been between 152 and 165 certs -# A minimum of 140 should be safe for a rudimentry sanity check -if test "${count}" -lt "140" ; then - echo "Error! Only ${count} certificates were generated!" - echo "Exiting without update!" - echo "" - echo "${TEMPDIR} is the temporary working directory" - exit 2 -fi -unset count - -# Generate the bundle -bundlefile=`basename "${CABUNDLE}"` -bundledir=`echo "${CABUNDLE}" | sed "s@/${bundlefile}@@"` -install -vdm755 "${DESTDIR}${bundledir}" 2>&1>/dev/null -test -f "${DESTDIR}${CABUNDLE}" && mv "${DESTDIR}${CABUNDLE}" \ - "${DESTDIR}${CABUNDLE}.old" -echo "VERSION:${VERSION}" > "${DESTDIR}${CABUNDLE}" -cat "${TEMPDIR}/ssl/ca-bundle.crt.tmp" >> "${DESTDIR}${CABUNDLE}" && -rm -f "${DESTDIR}${CABUNDLE}.old" -unset bundlefile bundledir - -# Install Java Cacerts -if test "${WITH_JAVA}" == "1"; then - javafile=`basename "${KEYSTORE}"` - javadir=`echo "${KEYSTORE}" | sed "s@/${javafile}@@"` - install -vdm755 "${DESTDIR}${javadir}" 2>&1>/dev/null - test -f "${DESTDIR}${KEYSTORE}" && mv "${DESTDIR}${KEYSTORE}" \ - "${DESTDIR}${KEYSTORE}.old" - install -m644 "${TEMPDIR}/ssl/java/cacerts" "${DESTDIR}${KEYSTORE}" && - rm -f "${DESTDIR}${KEYSTORE}.old" - unset javafile javadir -fi - -# Install NSS Shared DB -if test "${WITH_NSS}" == "1"; then - sed -e "s@${TEMPDIR}/pki/nssdb@${NSSDB}@" \ - -e 's/library=/library=libnsssysinit.so/' \ - -e 's/Flags=internal/Flags=internal,moduleDBOnly/' \ - -i "${TEMPDIR}/pki/nssdb/pkcs11.txt" - test -d "${DESTDIR}${NSSDB}" && mv "${DESTDIR}${NSSDB}" \ - "${DESTDIR}${NSSDB}.old" - install -dm755 "${DESTDIR}${NSSDB}" 2>&1>/dev/null - install -m644 "${TEMPDIR}"/pki/nssdb/{cert9.db,key4.db,pkcs11.txt} \ - "${DESTDIR}${NSSDB}" && - rm -rf "${DESTDIR}${NSSDB}.old" -fi - -# Install anchors in $ANCHORDIR -test -d "${DESTDIR}${ANCHORDIR}" && mv "${DESTDIR}${ANCHORDIR}"\ - "${DESTDIR}${ANCHORDIR}.old" -install -dm755 "${DESTDIR}${ANCHORDIR}" 2>&1>/dev/null -install -m644 "${TEMPDIR}"/pki/anchors/*.pem "${DESTDIR}${ANCHORDIR}" && -rm -rf "${DESTDIR}${ANCHORDIR}.old" - -# Install certificates in $CERTDIR -test -d "${DESTDIR}${CERTDIR}" && mv "${DESTDIR}${CERTDIR}" \ - "${DESTDIR}${CERTDIR}.old" -install -dm755 "${DESTDIR}${CERTDIR}" 2>&1>/dev/null -install -m644 "${TEMPDIR}"/ssl/certs/*.pem "${DESTDIR}${CERTDIR}" && -rm -rf "${DESTDIR}${CERTDIR}.old" - -# Import any certs in $LOCALDIR -# Don't do any checking, just trust the admin -if test -d "${LOCALDIR}"; then - for cert in `find "${LOCALDIR}" -name "*.pem"`; do - # Get some information about the certificate - keyhash=$("${OPENSSL}" x509 -noout -in "${cert}" -hash) - subject=$("${OPENSSL}" x509 -noout -in "${cert}" -subject) - count=1 - while test "${count}" -lt 10; do - echo "${subject}" | cut -d "/" -f "${count}" | grep "CN=" >/dev/null \ - && break - let count++ - done - certname=$(echo "${subject}" | cut -d "/" -f "${count}" | sed 's@CN=@@') - - echo "Certificate: ${certname}" - echo "Keyhash: ${keyhash}" - - # Get trust information - trustlist=$("${OPENSSL}" x509 -in "${cert}" -text -trustout | \ - grep -A1 "Trusted Uses") - satrust="" - smtrust="" - cstrust="" - catrust="" - satrust=$(echo "${trustlist}" | \ - grep "TLS Web Server" 2>&1> /dev/null && echo "C") - smtrust=$(echo "${trustlist}" | \ - grep "E-mail Protection" 2>&1 >/dev/null && echo "C") - cstrust=$(echo "${trustlist}" | \ - grep "Code Signing" 2>&1 >/dev/null && echo "C") - catrust=$(echo "${trustlist}" | \ - grep "Client Auth" 2>&1 >/dev/null && echo "C") - - # Get reject information - rejectlist=$("${OPENSSL}" x509 -in "${cert}" -text -trustout | \ - grep -A1 "Rejected Uses") - if test "${satrust}" == ""; then satrust=$(echo "${rejectlist}" | \ - grep "TLS Web Server" 2>&1> /dev/null && echo "p"); fi - if test "${smtrust}" == ""; then smtrust=$(echo "${rejectlist}" | \ - grep "E-mail Protection" 2>&1> /dev/null && echo "p"); fi - if test "${cstrust}" == ""; then cstrust=$(echo "${rejectlist}" | \ - grep "Code Signing" 2>&1> /dev/null && echo "p"); fi - if test "${catrust}" == ""; then catrust=$(echo "${rejectlist}" | \ - grep "Client Auth" 2>&1> /dev/null && echo "p"); fi - - - # Place certificate into trust anchors dir - p11label="$(grep -m1 "Issuer" ${cert} | grep -o CN=.*$ | \ - cut -d ',' -f 1 | sed 's@CN=@@')" - - # if distrusted at all, x-distrusted - if test "${satrust}" == "p" -o "${smtrust}" == "p" -o "${cstrust}" == "p" - then - # if any distrusted, x-distrusted - p11trust="x-distrusted: true" - p11oid="1.3.6.1.4.1.3319.6.10.1" - p11value="0.%06%0a%2b%06%01%04%01%99w%06%0a%01%04 0%1e%06%08%2b%06%01%05%05%07%03%04%06%08%2b%06%01%05%05%07%03%01%06%08%2b%06%01%05%05%07%03%03" - else - p11trust="trusted: true" - p11oid="2.5.29.37" - trustp11="p11" - if test "${satrust}" == "C"; then - trustp11="${trustp11}sa" - fi - if test "${smtrust}" == "C"; then - trustp11="${trustp11}sm" - fi - if test "${cstrust}" == "C"; then - trustp11="${trustp11}cs" - fi - get-p11-val "${trustp11}" - fi - - anchorfile="${DESTDIR}${ANCHORDIR}/${keyhash}.pem" - - echo "[p11-kit-object-v1]" >> "${anchorfile}" - echo "label: \"${p11label}\"" >> "${anchorfile}" - echo "class: x-certificate-extension" >> "${anchorfile}" - echo "object-id: ${p11oid}" >> "${anchorfile}" - echo "value: \"${p11value}\"" >> "${anchorfile}" - echo "modifiable: false" >> "${anchorfile}" - echo "${certkey}" >> "${anchorfile}" - echo "" >> "${anchorfile}" - echo "[p11-kit-object-v1]" >> "${anchorfile}" - echo "label: \"${p11label}\"" >> "${anchorfile}" - echo "${p11trust}" >> "${anchorfile}" - echo "modifiable: false" >> "${anchorfile}" - echo "${certcer}" >> "${anchorfile}" - echo "${certtxt}" | sed 's@^@#@' >> "${anchorfile}" - echo "Added to p11-kit anchor directory with trust '${satrust},${smtrust},${cstrust}'." - - # Install in Java keystore - if test "${WITH_JAVA}" == "1" -a "${satrust}x" == "Cx"; then - "${KEYTOOL}" -import -noprompt -alias "${certname}" \ - -keystore "${DESTDIR}${KEYSTORE}" \ - -storepass 'changeit' -file "${cert}" 2>&1> /dev/null | \ - sed -e 's@Certificate was a@A@' -e 's@keystore@Java keystore.@' - fi - - # Append to the bundle - source should have trust info, process with - # openssl x509 to strip - if test "${satrust}x" == "Cx"; then - "${OPENSSL}" x509 -in "${cert}" -text -fingerprint \ - >> "${DESTDIR}${CABUNDLE}" - echo "Added to GnuTLS certificate bundle." - fi - - # Install into OpenSSL certificate store - "${OPENSSL}" x509 -in "${cert}" -text -fingerprint \ - -setalias "${certname}" \ - >> "${DESTDIR}${CERTDIR}/${keyhash}.pem" - echo "Added to OpenSSL certificate directory with trust '${satrust},${smtrust},${cstrust},${catrust}'." - - # Add to Shared NSS DB - if test "${WITH_NSS}" == "1"; then - "${OPENSSL}" x509 -in "${cert}" -text -fingerprint | \ - "${CERTUTIL}" -d "sql:${DESTDIR}${NSSDB}" -A \ - -t "${satrust},${smtrust},${cstrust}" \ - -n "${certname}" - echo "Added to NSS shared DB with trust '${satrust},${smtrust},${cstrust}'." - fi - - unset keyhash subject count certname - unset trustlist rejectlist satrust smtrust cstrust catrust - unset p11trust p11oid p11value trustp11 certkey certcer certtxt - echo "" - - done - unset cert -fi - -/usr/bin/c_rehash "${DESTDIR}${CERTDIR}" 2>&1>/dev/null -popd > /dev/null - -# Clean up the mess -rm -rf "${TEMPDIR}" - -# End /usr/sbin/make-ca.sh From 06fdddf42057d349d237ad8e8020d6db497acdbf Mon Sep 17 00:00:00 2001 From: fabiao Date: Mon, 28 May 2018 15:23:29 +0200 Subject: [PATCH 0402/3180] added gigalomania (megalomania clone) + sdl_image + sdl_mixer --- recipes/gigalomania/01_makefile.patch | 99 ++++++++++++++++++++++ recipes/gigalomania/02_stdafx.patch | 9 ++ recipes/gigalomania/03_image.patch | 11 +++ recipes/gigalomania/04_sound.patch | 11 +++ recipes/gigalomania/05_game.patch | 11 +++ recipes/gigalomania/06_game_cpp.patch | 62 ++++++++++++++ recipes/gigalomania/07_gamestate_cpp.patch | 24 ++++++ recipes/gigalomania/recipe.sh | 42 +++++++++ recipes/sdl_image/01_redox.patch | 12 +++ recipes/sdl_image/recipe.sh | 39 +++++++++ recipes/sdl_mixer/01_redox.patch | 12 +++ recipes/sdl_mixer/recipe.sh | 39 +++++++++ 12 files changed, 371 insertions(+) create mode 100644 recipes/gigalomania/01_makefile.patch create mode 100644 recipes/gigalomania/02_stdafx.patch create mode 100644 recipes/gigalomania/03_image.patch create mode 100644 recipes/gigalomania/04_sound.patch create mode 100644 recipes/gigalomania/05_game.patch create mode 100644 recipes/gigalomania/06_game_cpp.patch create mode 100644 recipes/gigalomania/07_gamestate_cpp.patch create mode 100644 recipes/gigalomania/recipe.sh create mode 100644 recipes/sdl_image/01_redox.patch create mode 100644 recipes/sdl_image/recipe.sh create mode 100644 recipes/sdl_mixer/01_redox.patch create mode 100644 recipes/sdl_mixer/recipe.sh diff --git a/recipes/gigalomania/01_makefile.patch b/recipes/gigalomania/01_makefile.patch new file mode 100644 index 00000000..b887da26 --- /dev/null +++ b/recipes/gigalomania/01_makefile.patch @@ -0,0 +1,99 @@ +--- source/Makefile 2018-05-28 10:13:03.737049078 +0200 ++++ build/Makefile 2018-05-28 11:23:29.808994973 +0200 +@@ -1,13 +1,14 @@ +-CC=g++ ++CC=$(CPPHOST) + CCFLAGS=-O2 -Wall + CFILES=game.cpp gamestate.cpp gui.cpp image.cpp main.cpp panel.cpp player.cpp resources.cpp screen.cpp sector.cpp sound.cpp tutorial.cpp utils.cpp TinyXML/tinyxml.cpp TinyXML/tinyxmlerror.cpp TinyXML/tinyxmlparser.cpp + HFILES=game.h gamestate.h gui.h image.h panel.h player.h resources.h screen.h sector.h sound.h tutorial.h utils.h common.h stdafx.h TinyXML/tinyxml.h + OFILES=game.o gamestate.o gui.o image.o panel.o player.o resources.o screen.o sector.o sound.o tutorial.o utils.o main.o TinyXML/tinyxml.o TinyXML/tinyxmlerror.o TinyXML/tinyxmlparser.o + APP=gigalomania +-INC=`sdl2-config --cflags` +-LINKPATH=`sdl2-config --libs` -L/usr/X11R6/lib/ -L/usr/lib ++INC=$(CPPFLAGS) ++LINKPATH=$(LDFLAGS) ++GAMEPATH="/games/gigalomania" + +-LIBS=-lSDL2_image -lSDL2_mixer ++LIBS=-lSDL_mixer -lSDL_image -ljpeg -lpng -lSDL -lorbital -lz + + all: $(APP) + +@@ -19,69 +20,16 @@ + + # REMEMBER to update debian/dirs if the system directories that we use are changed!!! + install: $(APP) +- mkdir -p $(DESTDIR)/opt/gigalomania # -p so we don't fail if folder already exists +- cp $(APP) $(DESTDIR)/opt/gigalomania +- cp readme.html $(DESTDIR)/opt/gigalomania +- cp -a gfx/ $(DESTDIR)/opt/gigalomania # -a need to copy permissions etc +- cp -a islands/ $(DESTDIR)/opt/gigalomania +- cp -a music/ $(DESTDIR)/opt/gigalomania +- cp -a sound/ $(DESTDIR)/opt/gigalomania +- # needed for DESTDIR option: +- mkdir -p $(DESTDIR)/usr/share/applications +- cp gigalomania.desktop $(DESTDIR)/usr/share/applications/ +- #cp gigalomania_fullscreen.desktop $(DESTDIR)/usr/share/applications/ +- # needed for DESTDIR option: +- mkdir -p $(DESTDIR)/usr/share/pixmaps +- cp gigalomania64.png $(DESTDIR)/usr/share/pixmaps/ +-# REMEMBER to update debian/dirs if the system directories that we use are changed!!! ++ mkdir -p $(DESTDIR)$(GAMEPATH) # -p so we don't fail if folder already exists ++ cp $(APP) $(DESTDIR)$(GAMEPATH) ++ cp readme.html $(DESTDIR)$(GAMEPATH) ++ cp -a gfx/ $(DESTDIR)$(GAMEPATH) ++ cp -a islands/ $(DESTDIR)$(GAMEPATH) ++ cp -a music/ $(DESTDIR)$(GAMEPATH) ++ cp -a sound/ $(DESTDIR)$(GAMEPATH) + + uninstall: +- rm -rf $(DESTDIR)/opt/gigalomania # -f so we don't fail if folder doesn't exist +- rm -f $(DESTDIR)/usr/share/applications/gigalomania.desktop +- #rm -f $(DESTDIR)/usr/share/applications/gigalomania_fullscreen.desktop +- rm -f $(DESTDIR)/usr/share/pixmaps/gigalomania64.png +- +-install_maemo: $(APP) +- mkdir -p $(DESTDIR)/opt/gigalomania # -p so we don't fail if folder already exists +- cp $(APP) $(DESTDIR)/opt/gigalomania +- cp -a gfx/ $(DESTDIR)/opt/gigalomania # -a need to copy permissions etc +- cp -a islands/ $(DESTDIR)/opt/gigalomania +- cp -a music/ $(DESTDIR)/opt/gigalomania +- cp -a sound/ $(DESTDIR)/opt/gigalomania +- mkdir -p $(DESTDIR)/usr/share/applications/hildon/ +- cp gigalomania_maemo.desktop $(DESTDIR)/usr/share/applications/hildon/ +- mkdir -p $(DESTDIR)/usr/share/pixmaps +- cp gigalomania48.png $(DESTDIR)/usr/share/pixmaps/ +- chmod a+x gigalomania_mobile.sh # workaround for permissions not set in zip file! +- mkdir -p $(DESTDIR)/usr/bin/ +- cp gigalomania_mobile.sh $(DESTDIR)/usr/bin/gigalomania_mobile.sh +- +-uninstall_maemo: +- rm -rf $(DESTDIR)/opt/gigalomania # -f so we don't fail if folder doesn't exist +- rm -f $(DESTDIR)/usr/share/applications/hildon/gigalomania_maemo.desktop +- rm -f $(DESTDIR)/usr/share/pixmaps/gigalomania48.png +- rm -f $(DESTDIR)/usr/bin/gigalomania_mobile.sh +- +-install_meego: $(APP) +- mkdir -p $(DESTDIR)/opt/gigalomania # -p so we don't fail if folder already exists +- cp $(APP) $(DESTDIR)/opt/gigalomania +- cp -a gfx/ $(DESTDIR)/opt/gigalomania # -a need to copy permissions etc +- cp -a islands/ $(DESTDIR)/opt/gigalomania +- cp -a music/ $(DESTDIR)/opt/gigalomania +- cp -a sound/ $(DESTDIR)/opt/gigalomania +- mkdir -p $(DESTDIR)/usr/share/applications +- cp gigalomania_maemo.desktop $(DESTDIR)/usr/share/applications/ +- mkdir -p $(DESTDIR)/usr/share/icons/hicolor/48x48/apps/ +- cp gigalomania48.png $(DESTDIR)/usr/share/icons/hicolor/48x48/apps/ +- chmod a+x gigalomania_mobile.sh # workaround for permissions not set in zip file! +- mkdir -p $(DESTDIR)/usr/bin/ +- cp gigalomania_mobile.sh $(DESTDIR)/usr/bin/gigalomania_mobile.sh +- +-uninstall_meego: +- rm -rf $(DESTDIR)/opt/gigalomania # -f so we don't fail if folder doesn't exist +- rm -f $(DESTDIR)/usr/share/applications/gigalomania_maemo.desktop +- rm -f $(DESTDIR)/usr/share/icons/hicolor/48x48/apps/gigalomania48.png +- rm -f $(DESTDIR)/usr/bin/gigalomania_mobile.sh ++ rm -rf $(DESTDIR)$(GAMEPATH) + + clean: + rm -rf *.o diff --git a/recipes/gigalomania/02_stdafx.patch b/recipes/gigalomania/02_stdafx.patch new file mode 100644 index 00000000..fd73ee26 --- /dev/null +++ b/recipes/gigalomania/02_stdafx.patch @@ -0,0 +1,9 @@ +--- source/stdafx.h 2018-05-28 11:51:01.961563258 +0200 ++++ build/stdafx.h 2018-05-28 11:55:02.478236113 +0200 +@@ -20,5 +20,5 @@ + #elif defined(__MORPHOS__) + #include + #else +-#include ++#include + #endif diff --git a/recipes/gigalomania/03_image.patch b/recipes/gigalomania/03_image.patch new file mode 100644 index 00000000..0aa53056 --- /dev/null +++ b/recipes/gigalomania/03_image.patch @@ -0,0 +1,11 @@ +--- source/image.h 2018-05-28 10:13:03.769049093 +0200 ++++ build/image.h 2018-05-28 11:11:33.754769751 +0200 +@@ -14,7 +14,7 @@ + #elif defined(__MORPHOS__) + #include + #else +-#include ++#include + #endif + + const int font_index_period_c = 26; diff --git a/recipes/gigalomania/04_sound.patch b/recipes/gigalomania/04_sound.patch new file mode 100644 index 00000000..ae20c687 --- /dev/null +++ b/recipes/gigalomania/04_sound.patch @@ -0,0 +1,11 @@ +--- source/sound.h 2018-05-28 10:13:03.857049133 +0200 ++++ build/sound.h 2018-05-28 11:11:47.002814093 +0200 +@@ -13,7 +13,7 @@ + #elif defined(__linux) + #include + #else +-#include ++#include + #endif + + bool initSound(); diff --git a/recipes/gigalomania/05_game.patch b/recipes/gigalomania/05_game.patch new file mode 100644 index 00000000..7999b01f --- /dev/null +++ b/recipes/gigalomania/05_game.patch @@ -0,0 +1,11 @@ +--- source/game.h 2018-05-28 11:51:01.785562766 +0200 ++++ build/game.h 2018-05-28 11:53:10.909923925 +0200 +@@ -530,7 +530,7 @@ + void startNewGame_g(); + + // DATADIR is place to look if data not present in application's folder +-//#define DATADIR "C:/temp/glmdata" // test on Windows ++#define DATADIR "/games/gigalomania" // redox games dir? + + extern string maps_dirname; + #ifdef DATADIR diff --git a/recipes/gigalomania/06_game_cpp.patch b/recipes/gigalomania/06_game_cpp.patch new file mode 100644 index 00000000..13e727ce --- /dev/null +++ b/recipes/gigalomania/06_game_cpp.patch @@ -0,0 +1,62 @@ +--- source/game.cpp 2018-05-28 14:37:45.401234128 +0200 ++++ build/game.cpp 2018-05-28 14:47:42.698867243 +0200 +@@ -2942,11 +2942,11 @@ + //user_width = 1184; + //user_height = 720; + +- if( user_width >= 4*default_width_c ) { ++ /*if( user_width >= 4*default_width_c ) { + scale_width = 4.0f; + LOG("scale width 4x\n"); + } +- else if( user_width >= 3*default_width_c ) { ++ else*/ if( user_width >= 3*default_width_c ) { + scale_width = 3.0f; + LOG("scale width 3x\n"); + } +@@ -2963,11 +2963,11 @@ + return false; + } + +- if( user_height >= 4*default_height_c ) { ++ /*if( user_height >= 4*default_height_c ) { + scale_height = 4.0f; + LOG("scale height 4x\n"); + } +- else if( user_height >= 3*default_height_c ) { ++ else*/ if( user_height >= 3*default_height_c ) { + scale_height = 3.0f; + LOG("scale height 3x\n"); + } +@@ -3022,11 +3022,11 @@ + screen = new Gigalomania::Screen(); + + #if SDL_MAJOR_VERSION == 1 +- if( screen->open(4*default_width_c, 4*default_height_c, fullscreen) ) { ++ /*if( screen->open(4*default_width_c, 4*default_height_c, fullscreen) ) { + scale_width = scale_height = 4.0f; + LOG("scale 4x\n"); + } +- else if( screen->open(3*default_width_c, 3*default_height_c, fullscreen) ) { ++ else*/ if( screen->open(3*default_width_c, 3*default_height_c, fullscreen) ) { + scale_width = scale_height = 3.0f; + LOG("scale 3x\n"); + } +@@ -3636,7 +3636,7 @@ + } + + //bool quit = false; +-bool debugwindow = true; ++bool debugwindow = false; + + void Game::requestQuit(bool force_quit) { + if( !state_changed ) { +@@ -5243,7 +5243,7 @@ + debugwindow = true; + #endif + +- bool fullscreen = false; ++ bool fullscreen = true; + #if defined(__amigaos4__) || defined(AROS) || defined(__MORPHOS__) + fullscreen = false; // run in windowed mode due to reported performance problems in fullscreen mode on AmigaOS 4; also randomly hangs on AROS in fullscreen mode; also included MorphOS just to be safe + #endif diff --git a/recipes/gigalomania/07_gamestate_cpp.patch b/recipes/gigalomania/07_gamestate_cpp.patch new file mode 100644 index 00000000..77702798 --- /dev/null +++ b/recipes/gigalomania/07_gamestate_cpp.patch @@ -0,0 +1,24 @@ +--- source/gamestate.cpp 2018-05-28 11:51:01.789562777 +0200 ++++ build/gamestate.cpp 2018-05-28 14:24:06.690031507 +0200 +@@ -1428,8 +1428,9 @@ + }; + + void GameState::fadeScreen(bool out, int delay, void (*func_finish)()) { +- if( fade != NULL ) ++ if( fade != NULL ) { + delete fade; ++ } + if( game_g->isTesting() ) { + if( func_finish != NULL ) { + func_finish(); +@@ -1442,8 +1443,9 @@ + + void GameState::whiteFlash() { + //ASSERT( whitefade == NULL ); +- if( whitefade != NULL ) ++ if( whitefade != NULL ) { + delete whitefade; ++ } + if( !game_g->isTesting() ) { + whitefade = new FadeEffect(true, false, 0, NULL); + } diff --git a/recipes/gigalomania/recipe.sh b/recipes/gigalomania/recipe.sh new file mode 100644 index 00000000..2bc90793 --- /dev/null +++ b/recipes/gigalomania/recipe.sh @@ -0,0 +1,42 @@ +VERSION=0.27 +GIT=https://git.code.sf.net/p/gigalomania/code +BRANCH=master +BUILD_DEPENDS=(sdl_mixer sdl_image sdl liborbital libpng libjpeg zlib) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + export CPPHOST=${HOST}-g++ + sysroot="${PWD}/../sysroot" + export LDFLAGS="-L$sysroot/lib" + export CPPFLAGS="-I$sysroot/include" + make all + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + bundledir="$dest/bundle" + + make VERBOSE=1 DESTDIR="$dest" install + rm -rf "$bundledir" + skip=1 +} diff --git a/recipes/sdl_image/01_redox.patch b/recipes/sdl_image/01_redox.patch new file mode 100644 index 00000000..9366f51c --- /dev/null +++ b/recipes/sdl_image/01_redox.patch @@ -0,0 +1,12 @@ +diff -rupNw source-original/config.sub source/config.sub +--- source-original/config.sub 2012-01-19 07:30:05.000000000 +0100 ++++ source/config.sub 2018-05-01 17:31:52.766229515 +0200 +@@ -1276,7 +1276,7 @@ case $os in + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ +- | -kopensolaris* \ ++ | -kopensolaris* | -redox* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ \ No newline at end of file diff --git a/recipes/sdl_image/recipe.sh b/recipes/sdl_image/recipe.sh new file mode 100644 index 00000000..eb7a479d --- /dev/null +++ b/recipes/sdl_image/recipe.sh @@ -0,0 +1,39 @@ +VERSION=1.2.12 +TAR=https://www.libsdl.org/projects/SDL_image/release/SDL_image-$VERSION.tar.gz +BUILD_DEPENDS=(sdl liborbital libjpeg libpng zlib) + +export CFLAGS="-I$PWD/sysroot/include/" +export LDFLAGS="-L$PWD/sysroot/lib/" + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + ./autogen.sh + ./configure --prefix=/ --host=${HOST} --disable-shared --disable-sdltest --enable-png --enable-jpg + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} \ No newline at end of file diff --git a/recipes/sdl_mixer/01_redox.patch b/recipes/sdl_mixer/01_redox.patch new file mode 100644 index 00000000..85f920e6 --- /dev/null +++ b/recipes/sdl_mixer/01_redox.patch @@ -0,0 +1,12 @@ +diff -rupN sdl_mixer/build-scripts/config.sub sdl_mixer-redox/build-scripts/config.sub +--- sdl_mixer/build-scripts/config.sub 2012-01-15 14:01:05.000000000 -0800 ++++ sdl_mixer-redox/build-scripts/config.sub 2016-07-27 18:17:24.513894959 -0700 +@@ -1276,7 +1276,7 @@ case $os in + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ +- | -kopensolaris* \ ++ | -kopensolaris* | -redox* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* \ +| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ \ No newline at end of file diff --git a/recipes/sdl_mixer/recipe.sh b/recipes/sdl_mixer/recipe.sh new file mode 100644 index 00000000..1e7cca34 --- /dev/null +++ b/recipes/sdl_mixer/recipe.sh @@ -0,0 +1,39 @@ +VERSION=1.2.12 +TAR=https://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-$VERSION.tar.gz +BUILD_DEPENDS=(sdl liborbital) + +export CFLAGS="-I$PWD/sysroot/include/" +export LDFLAGS="-L$PWD/sysroot/lib/" + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + ./autogen.sh + ./configure --prefix=/ --host=${HOST} --disable-shared --disable-sdltest --disable-music-cmd --disable-music-mp3 --disable-smpegtest + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} \ No newline at end of file From 972f243047d2a4dcfb7f90fb4b99d0cadee2146f Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Fri, 1 Jun 2018 21:15:28 +0200 Subject: [PATCH 0403/3180] Fix termplay recipe --- recipes/termplay/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/termplay/recipe.sh b/recipes/termplay/recipe.sh index 3bb91958..e52a05f0 100644 --- a/recipes/termplay/recipe.sh +++ b/recipes/termplay/recipe.sh @@ -1,2 +1,2 @@ GIT=https://github.com/jD91mZM2/termplay.git -CARGOFLAGS="--no-default-features --features termion --example termplay" +CARGOFLAGS="--no-default-features --features bin,termion" From 5e745da82ebc0711e398abb898043be103dedc8f Mon Sep 17 00:00:00 2001 From: MggMuggins Date: Fri, 1 Jun 2018 21:59:07 -0500 Subject: [PATCH 0404/3180] libsodium recipe Port Libsodium to redox --- recipes/libsodium/recipe.sh | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 recipes/libsodium/recipe.sh diff --git a/recipes/libsodium/recipe.sh b/recipes/libsodium/recipe.sh new file mode 100644 index 00000000..a6cc951e --- /dev/null +++ b/recipes/libsodium/recipe.sh @@ -0,0 +1,36 @@ +VERSION=1.0.16 +TAR=https://github.com/jedisct1/libsodium/archive/${VERSION}.tar.gz + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + # Disclaimer: No idea what I'm doing + ./autogen.sh + ./configure --host=${HOST} --prefix='/' + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} From ac4370e053342b7e5486be57e80222dc6b09e66f Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Sat, 2 Jun 2018 12:24:36 +0200 Subject: [PATCH 0405/3180] Add ipcd --- recipes/ipcd/recipe.sh | 1 + 1 file changed, 1 insertion(+) create mode 100644 recipes/ipcd/recipe.sh diff --git a/recipes/ipcd/recipe.sh b/recipes/ipcd/recipe.sh new file mode 100644 index 00000000..e7405052 --- /dev/null +++ b/recipes/ipcd/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/redox-os/ipcd.git From 3df8f321b3b4109eeaf2a52b05a3615cc104b7d2 Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Sun, 3 Jun 2018 07:52:35 +0200 Subject: [PATCH 0406/3180] Patch libsodium randbytes --- recipes/libsodium/random.patch | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 recipes/libsodium/random.patch diff --git a/recipes/libsodium/random.patch b/recipes/libsodium/random.patch new file mode 100644 index 00000000..77e010bc --- /dev/null +++ b/recipes/libsodium/random.patch @@ -0,0 +1,14 @@ +--- a/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c 2018-06-03 07:26:17.413729023 +0200 ++++ b/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c 2018-06-03 07:41:40.119390067 +0200 +@@ -162,10 +162,7 @@ + /* LCOV_EXCL_START */ + struct stat st; + static const char *devices[] = { +-# ifndef USE_BLOCKING_RANDOM +- "/dev/urandom", +-# endif +- "/dev/random", NULL ++ "rand:", NULL + }; + const char **device = devices; + int fd; From ffdd6678eb7846348db6beab50d1df256ed07c38 Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Sat, 9 Jun 2018 08:04:05 +0200 Subject: [PATCH 0407/3180] Add miniserve --- recipes/miniserve/recipe.sh | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 recipes/miniserve/recipe.sh diff --git a/recipes/miniserve/recipe.sh b/recipes/miniserve/recipe.sh new file mode 100644 index 00000000..ba583ea3 --- /dev/null +++ b/recipes/miniserve/recipe.sh @@ -0,0 +1,2 @@ +GIT=https://github.com/redox-os/miniserve +BUILD_DEPENDS=(openssl zlib) From 2d45b95821e3aa56807a953c0d208327d0611d07 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 10 Jun 2018 11:12:57 -0600 Subject: [PATCH 0408/3180] Update submodules --- .gitmodules | 10 +++++----- docgen | 2 +- pkgutils | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.gitmodules b/.gitmodules index 37d3c8bd..cded2e40 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,7 +1,7 @@ -[submodule "pkgutils"] - path = pkgutils - url = https://github.com/redox-os/pkgutils.git - branch = master [submodule "docgen"] path = docgen - url = https://github.com/redox-os/docgen.git + url = https://gitlab.redox-os.org/redox-os/docgen.git +[submodule "pkgutils"] + path = pkgutils + url = https://gitlab.redox-os.org/redox-os/pkgutils.git + branch = master diff --git a/docgen b/docgen index 67119659..c1326c9b 160000 --- a/docgen +++ b/docgen @@ -1 +1 @@ -Subproject commit 67119659a484dba78eb29c1081afc8f8ea7014c3 +Subproject commit c1326c9b07230c5ce641883c41421bec178e07fa diff --git a/pkgutils b/pkgutils index 7c9f14af..f0f58dde 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit 7c9f14af4391aed4fb8ab09bc2320ec962aba9fe +Subproject commit f0f58dde366a95dd2d56b914c684c205b54ce831 From 5d46330729710afba8a3ef9d70e5fd0dba153bb3 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 10 Jun 2018 11:28:39 -0600 Subject: [PATCH 0409/3180] WIP: Move to gitlab --- recipes/acid/recipe.sh | 2 +- recipes/binutils/recipe.sh | 2 +- recipes/cargo/recipe.sh | 2 +- recipes/cleye/recipe.sh | 2 +- recipes/contain/recipe.sh | 2 +- recipes/coreutils/recipe.sh | 2 +- recipes/dash/recipe.sh | 2 +- recipes/drivers-041/recipe.sh | 2 +- recipes/drivers/recipe.sh | 2 +- recipes/extrautils/recipe.sh | 2 +- recipes/findutils/recipe.sh | 2 +- recipes/freedoom/recipe.sh | 2 +- recipes/games/recipe.sh | 2 +- recipes/gawk/recipe.sh | 2 +- recipes/init/recipe.sh | 2 +- recipes/installer/recipe.sh | 2 +- recipes/ion/recipe.sh | 2 +- recipes/ipcd/recipe.sh | 2 +- recipes/keyboard-sfx/recipe.sh | 2 +- recipes/logd/recipe.sh | 2 +- recipes/netstack/recipe.sh | 2 +- recipes/netutils/recipe.sh | 2 +- recipes/nulld/recipe.sh | 2 +- recipes/orbdata/recipe.sh | 2 +- recipes/orbital/recipe.sh | 2 +- recipes/orbterm/recipe.sh | 2 +- recipes/orbutils/recipe.sh | 2 +- recipes/pastel/recipe.sh | 2 +- recipes/periodictable/recipe.sh | 3 +-- recipes/ptyd/recipe.sh | 2 +- recipes/randd/recipe.sh | 2 +- recipes/redoxfs/recipe.sh | 2 +- recipes/shellstorm/recipe.sh | 2 +- recipes/smith/recipe.sh | 2 +- recipes/sodium/recipe.sh | 3 +-- recipes/userutils/recipe.sh | 2 +- recipes/uutils/recipe.sh | 2 +- recipes/zerod/recipe.sh | 2 +- 38 files changed, 38 insertions(+), 40 deletions(-) diff --git a/recipes/acid/recipe.sh b/recipes/acid/recipe.sh index a7845575..8704aff2 100644 --- a/recipes/acid/recipe.sh +++ b/recipes/acid/recipe.sh @@ -1 +1 @@ -GIT=https://github.com/redox-os/acid.git +GIT=https://gitlab.redox-os.org/redox-os/acid.git diff --git a/recipes/binutils/recipe.sh b/recipes/binutils/recipe.sh index 3f8b7abc..3083a53a 100644 --- a/recipes/binutils/recipe.sh +++ b/recipes/binutils/recipe.sh @@ -1 +1 @@ -GIT=https://github.com/redox-os/binutils.git +GIT=https://gitlab.redox-os.org/redox-os/binutils.git diff --git a/recipes/cargo/recipe.sh b/recipes/cargo/recipe.sh index 0a879135..d970be18 100644 --- a/recipes/cargo/recipe.sh +++ b/recipes/cargo/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/redox-os/cargo.git +GIT=https://gitlab.redox-os.org/redox-os/cargo.git BRANCH=redox BUILD_DEPENDS=(openssl zlib) diff --git a/recipes/cleye/recipe.sh b/recipes/cleye/recipe.sh index 82509c0d..86eeca2b 100755 --- a/recipes/cleye/recipe.sh +++ b/recipes/cleye/recipe.sh @@ -1,2 +1,2 @@ -GIT=https://github.com/redox-os/cleye.git +GIT=https://gitlab.redox-os.org/redox-os/cleye.git GIT_UPSTREAM=https://github.com/evanandrewrose/cleye.git diff --git a/recipes/contain/recipe.sh b/recipes/contain/recipe.sh index 60d7e75d..b4a28108 100644 --- a/recipes/contain/recipe.sh +++ b/recipes/contain/recipe.sh @@ -1 +1 @@ -GIT=https://github.com/redox-os/contain.git +GIT=https://gitlab.redox-os.org/redox-os/contain.git diff --git a/recipes/coreutils/recipe.sh b/recipes/coreutils/recipe.sh index 599b73d0..f9558499 100644 --- a/recipes/coreutils/recipe.sh +++ b/recipes/coreutils/recipe.sh @@ -1 +1 @@ -GIT=https://github.com/redox-os/coreutils.git +GIT=https://gitlab.redox-os.org/redox-os/coreutils.git diff --git a/recipes/dash/recipe.sh b/recipes/dash/recipe.sh index 93baa757..36f27244 100644 --- a/recipes/dash/recipe.sh +++ b/recipes/dash/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/redox-os/dash.git +GIT=https://gitlab.redox-os.org/redox-os/dash.git BRANCH=redox function recipe_version { diff --git a/recipes/drivers-041/recipe.sh b/recipes/drivers-041/recipe.sh index 4926e266..ae52e81a 100644 --- a/recipes/drivers-041/recipe.sh +++ b/recipes/drivers-041/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/redox-os/drivers.git +GIT=https://gitlab.redox-os.org/redox-os/drivers.git BRANCH=0.4.1 CARGOFLAGS=--all diff --git a/recipes/drivers/recipe.sh b/recipes/drivers/recipe.sh index 21380af3..eb3653f2 100644 --- a/recipes/drivers/recipe.sh +++ b/recipes/drivers/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/redox-os/drivers.git +GIT=https://gitlab.redox-os.org/redox-os/drivers.git CARGOFLAGS=--all function recipe_version { diff --git a/recipes/extrautils/recipe.sh b/recipes/extrautils/recipe.sh index cef3940a..c046ce05 100644 --- a/recipes/extrautils/recipe.sh +++ b/recipes/extrautils/recipe.sh @@ -1,2 +1,2 @@ -GIT=https://github.com/redox-os/extrautils.git +GIT=https://gitlab.redox-os.org/redox-os/extrautils.git BUILD_DEPENDS=(xz) diff --git a/recipes/findutils/recipe.sh b/recipes/findutils/recipe.sh index 601f7fc8..e140a2f9 100644 --- a/recipes/findutils/recipe.sh +++ b/recipes/findutils/recipe.sh @@ -1,3 +1,3 @@ -GIT=https://github.com/redox-os/findutils.git +GIT=https://gitlab.redox-os.org/redox-os/findutils.git GIT_UPSTREAM=https://github.com/uutils/findutils.git CARGOFLAGS="--bin find" diff --git a/recipes/freedoom/recipe.sh b/recipes/freedoom/recipe.sh index 19adca40..f539fb1e 100644 --- a/recipes/freedoom/recipe.sh +++ b/recipes/freedoom/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/redox-os/freedoom.git +GIT=https://gitlab.redox-os.org/redox-os/freedoom.git DEPENDS=(ion prboom) function recipe_version { diff --git a/recipes/games/recipe.sh b/recipes/games/recipe.sh index 1d746118..b0aa22fc 100644 --- a/recipes/games/recipe.sh +++ b/recipes/games/recipe.sh @@ -1 +1 @@ -GIT=https://github.com/redox-os/games.git +GIT=https://gitlab.redox-os.org/redox-os/games.git diff --git a/recipes/gawk/recipe.sh b/recipes/gawk/recipe.sh index 0658bdd6..9d52945e 100644 --- a/recipes/gawk/recipe.sh +++ b/recipes/gawk/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/redox-os/gawk +GIT=https://gitlab.redox-os.org/redox-os/gawk BRANCH=redox function recipe_update { diff --git a/recipes/init/recipe.sh b/recipes/init/recipe.sh index 3edcc3a3..ee32b737 100644 --- a/recipes/init/recipe.sh +++ b/recipes/init/recipe.sh @@ -1 +1 @@ -GIT=https://github.com/redox-os/init +GIT=https://gitlab.redox-os.org/redox-os/init diff --git a/recipes/installer/recipe.sh b/recipes/installer/recipe.sh index 398e4f02..7717fe61 100644 --- a/recipes/installer/recipe.sh +++ b/recipes/installer/recipe.sh @@ -1 +1 @@ -GIT=https://github.com/redox-os/installer.git +GIT=https://gitlab.redox-os.org/redox-os/installer.git diff --git a/recipes/ion/recipe.sh b/recipes/ion/recipe.sh index f7e3e66e..fda62673 100644 --- a/recipes/ion/recipe.sh +++ b/recipes/ion/recipe.sh @@ -1 +1 @@ -GIT=https://github.com/redox-os/ion.git +GIT=https://gitlab.redox-os.org/redox-os/ion.git diff --git a/recipes/ipcd/recipe.sh b/recipes/ipcd/recipe.sh index e7405052..23eadd83 100644 --- a/recipes/ipcd/recipe.sh +++ b/recipes/ipcd/recipe.sh @@ -1 +1 @@ -GIT=https://github.com/redox-os/ipcd.git +GIT=https://gitlab.redox-os.org/redox-os/ipcd.git diff --git a/recipes/keyboard-sfx/recipe.sh b/recipes/keyboard-sfx/recipe.sh index f7b6aaeb..bd0a82e3 100644 --- a/recipes/keyboard-sfx/recipe.sh +++ b/recipes/keyboard-sfx/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/redox-os/keyboard-sfx.git +GIT=https://gitlab.redox-os.org/redox-os/keyboard-sfx.git function recipe_version { echo "0.0.1" diff --git a/recipes/logd/recipe.sh b/recipes/logd/recipe.sh index db35800b..cffbc308 100644 --- a/recipes/logd/recipe.sh +++ b/recipes/logd/recipe.sh @@ -1 +1 @@ -GIT=https://github.com/redox-os/logd.git +GIT=https://gitlab.redox-os.org/redox-os/logd.git diff --git a/recipes/netstack/recipe.sh b/recipes/netstack/recipe.sh index 190f9487..8b826c55 100644 --- a/recipes/netstack/recipe.sh +++ b/recipes/netstack/recipe.sh @@ -1 +1 @@ -GIT=https://github.com/redox-os/netstack.git +GIT=https://gitlab.redox-os.org/redox-os/netstack.git diff --git a/recipes/netutils/recipe.sh b/recipes/netutils/recipe.sh index 5992a5e2..ff6016b5 100644 --- a/recipes/netutils/recipe.sh +++ b/recipes/netutils/recipe.sh @@ -1 +1 @@ -GIT=https://github.com/redox-os/netutils.git +GIT=https://gitlab.redox-os.org/redox-os/netutils.git diff --git a/recipes/nulld/recipe.sh b/recipes/nulld/recipe.sh index accc4b40..0d8a7422 100644 --- a/recipes/nulld/recipe.sh +++ b/recipes/nulld/recipe.sh @@ -1 +1 @@ -GIT=https://github.com/redox-os/nulld.git +GIT=https://gitlab.redox-os.org/redox-os/nulld.git diff --git a/recipes/orbdata/recipe.sh b/recipes/orbdata/recipe.sh index 46715963..8ad1f85e 100644 --- a/recipes/orbdata/recipe.sh +++ b/recipes/orbdata/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/redox-os/orbdata.git +GIT=https://gitlab.redox-os.org/redox-os/orbdata.git function recipe_version { echo "0.0.1" diff --git a/recipes/orbital/recipe.sh b/recipes/orbital/recipe.sh index 9b680117..0bf99461 100644 --- a/recipes/orbital/recipe.sh +++ b/recipes/orbital/recipe.sh @@ -1,2 +1,2 @@ -GIT=https://github.com/redox-os/orbital.git +GIT=https://gitlab.redox-os.org/redox-os/orbital.git DEPENDS="orbdata" diff --git a/recipes/orbterm/recipe.sh b/recipes/orbterm/recipe.sh index 309de8af..5c79b26c 100644 --- a/recipes/orbterm/recipe.sh +++ b/recipes/orbterm/recipe.sh @@ -1,3 +1,3 @@ -GIT=https://github.com/redox-os/orbterm.git +GIT=https://gitlab.redox-os.org/redox-os/orbterm.git BINDIR=/ui/bin DEPENDS="orbital" diff --git a/recipes/orbutils/recipe.sh b/recipes/orbutils/recipe.sh index 9f25fdd7..281976f9 100644 --- a/recipes/orbutils/recipe.sh +++ b/recipes/orbutils/recipe.sh @@ -1,3 +1,3 @@ -GIT=https://github.com/redox-os/orbutils.git +GIT=https://gitlab.redox-os.org/redox-os/orbutils.git BINDIR=/ui/bin DEPENDS="orbital" diff --git a/recipes/pastel/recipe.sh b/recipes/pastel/recipe.sh index ddeda786..cabba6d2 100644 --- a/recipes/pastel/recipe.sh +++ b/recipes/pastel/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/redox-os/pastel.git +GIT=https://gitlab.redox-os.org/redox-os/pastel.git GIT_UPSTREAM=https://github.com/robbycerantola/pastel.git BINDIR=/ui/bin DEPENDS="orbital" diff --git a/recipes/periodictable/recipe.sh b/recipes/periodictable/recipe.sh index 00ab0290..e1ea5540 100644 --- a/recipes/periodictable/recipe.sh +++ b/recipes/periodictable/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/redox-os/periodictable.git +GIT=https://gitlab.redox-os.org/redox-os/periodictable.git BINDIR="/ui/bin" DEPENDS="orbital" @@ -8,4 +8,3 @@ function recipe_stage { mkdir -pv "$1/ui/icons" cp -v pkg/icon.png "$1/ui/icons/periodictable.png" } - diff --git a/recipes/ptyd/recipe.sh b/recipes/ptyd/recipe.sh index a3c336ef..affeb268 100644 --- a/recipes/ptyd/recipe.sh +++ b/recipes/ptyd/recipe.sh @@ -1 +1 @@ -GIT=https://github.com/redox-os/ptyd.git +GIT=https://gitlab.redox-os.org/redox-os/ptyd.git diff --git a/recipes/randd/recipe.sh b/recipes/randd/recipe.sh index 29f1ef75..37673148 100644 --- a/recipes/randd/recipe.sh +++ b/recipes/randd/recipe.sh @@ -1 +1 @@ -GIT=https://github.com/redox-os/randd.git +GIT=https://gitlab.redox-os.org/redox-os/randd.git diff --git a/recipes/redoxfs/recipe.sh b/recipes/redoxfs/recipe.sh index 9b8b0406..40968289 100644 --- a/recipes/redoxfs/recipe.sh +++ b/recipes/redoxfs/recipe.sh @@ -1 +1 @@ -GIT=https://github.com/redox-os/redoxfs.git +GIT=https://gitlab.redox-os.org/redox-os/redoxfs.git diff --git a/recipes/shellstorm/recipe.sh b/recipes/shellstorm/recipe.sh index 7ee3df0b..aed89c19 100644 --- a/recipes/shellstorm/recipe.sh +++ b/recipes/shellstorm/recipe.sh @@ -1 +1 @@ -GIT=https://github.com/redox-os/shellstorm.git +GIT=https://gitlab.redox-os.org/redox-os/shellstorm.git diff --git a/recipes/smith/recipe.sh b/recipes/smith/recipe.sh index 54d8432e..20236515 100755 --- a/recipes/smith/recipe.sh +++ b/recipes/smith/recipe.sh @@ -1,2 +1,2 @@ -GIT=https://github.com/redox-os/Smith.git +GIT=https://gitlab.redox-os.org/redox-os/Smith.git GIT_UPSTREAM=https://github.com/IGI-111/Smith.git diff --git a/recipes/sodium/recipe.sh b/recipes/sodium/recipe.sh index 3a14286b..5572b9ae 100644 --- a/recipes/sodium/recipe.sh +++ b/recipes/sodium/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/redox-os/sodium.git +GIT=https://gitlab.redox-os.org/redox-os/sodium.git BINDIR="/ui/bin" CARGOFLAGS="--features orbital" @@ -8,4 +8,3 @@ function recipe_stage { mkdir -pv "$1/ui/icons" cp -v icon.png "$1/ui/icons/sodium.png" } - diff --git a/recipes/userutils/recipe.sh b/recipes/userutils/recipe.sh index 7608b9d2..d5cf814d 100644 --- a/recipes/userutils/recipe.sh +++ b/recipes/userutils/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/redox-os/userutils.git +GIT=https://gitlab.redox-os.org/redox-os/userutils.git function recipe_stage { cp -Rv res "$1/etc" diff --git a/recipes/uutils/recipe.sh b/recipes/uutils/recipe.sh index 563c9752..1782913a 100644 --- a/recipes/uutils/recipe.sh +++ b/recipes/uutils/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/redox-os/uutils.git +GIT=https://gitlab.redox-os.org/redox-os/uutils.git GIT_UPSTREAM=https://github.com/uutils/coreutils.git CARGOFLAGS="--no-default-features --features redox" diff --git a/recipes/zerod/recipe.sh b/recipes/zerod/recipe.sh index 855f8c05..a201dacf 100644 --- a/recipes/zerod/recipe.sh +++ b/recipes/zerod/recipe.sh @@ -1 +1 @@ -GIT=https://github.com/redox-os/zerod.git +GIT=https://gitlab.redox-os.org/redox-os/zerod.git From 79e8d44a2e65acb0e74170209d7d551a1b997048 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 10 Jun 2018 12:00:42 -0600 Subject: [PATCH 0410/3180] Move more packages to gitlab --- recipes/game-2048/recipe.sh | 2 +- recipes/gcc/recipe.sh | 2 +- recipes/gnu-binutils/recipe.sh | 2 +- recipes/miniserve/recipe.sh | 2 +- recipes/netdb/recipe.sh | 4 ++-- recipes/newlib/recipe.sh | 2 +- recipes/newlibtest/recipe.sh | 2 +- recipes/openttd-opengfx/recipe.sh | 4 +--- recipes/pkgutils/recipe.sh | 2 +- recipes/redox-ssh/recipe.sh | 2 +- recipes/relibc/recipe.sh | 2 +- recipes/rs-nes/recipe.sh | 2 +- recipes/rust/recipe.sh | 4 ++-- recipes/rust64/recipe.sh | 2 +- recipes/rustual-boy/recipe.sh | 2 +- 15 files changed, 17 insertions(+), 19 deletions(-) diff --git a/recipes/game-2048/recipe.sh b/recipes/game-2048/recipe.sh index d04f470b..c6a46587 100644 --- a/recipes/game-2048/recipe.sh +++ b/recipes/game-2048/recipe.sh @@ -1,2 +1,2 @@ -GIT=https://github.com/redox-os/2048-rs.git +GIT=https://gitlab.redox-os.org/redox-os/2048-rs.git GIT_UPSTREAM=https://github.com/pierrechevalier83/2048-rs.git diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index a6681a1f..f7ad69a3 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/redox-os/gcc.git +GIT=https://gitlab.redox-os.org/redox-os/gcc.git BRANCH=redox DEPENDS="gnu-binutils newlib" diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh index 1176b385..6e7f7131 100644 --- a/recipes/gnu-binutils/recipe.sh +++ b/recipes/gnu-binutils/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/redox-os/binutils-gdb.git +GIT=https://gitlab.redox-os.org/redox-os/binutils-gdb.git function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" diff --git a/recipes/miniserve/recipe.sh b/recipes/miniserve/recipe.sh index ba583ea3..9ae5bb15 100644 --- a/recipes/miniserve/recipe.sh +++ b/recipes/miniserve/recipe.sh @@ -1,2 +1,2 @@ -GIT=https://github.com/redox-os/miniserve +GIT=https://gitlab.redox-os.org/redox-os/miniserve BUILD_DEPENDS=(openssl zlib) diff --git a/recipes/netdb/recipe.sh b/recipes/netdb/recipe.sh index f1c3cf97..638f3d25 100644 --- a/recipes/netdb/recipe.sh +++ b/recipes/netdb/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/redox-os/netdb +GIT=https://gitlab.redox-os.org/redox-os/netdb function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" @@ -21,7 +21,7 @@ function recipe_test { } function recipe_clean { - echo "skipping clean" + echo "skipping clean" skip=1 } diff --git a/recipes/newlib/recipe.sh b/recipes/newlib/recipe.sh index 58387f73..cb92eb32 100644 --- a/recipes/newlib/recipe.sh +++ b/recipes/newlib/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/redox-os/newlib.git +GIT=https://gitlab.redox-os.org/redox-os/newlib.git BRANCH=redox function recipe_version { diff --git a/recipes/newlibtest/recipe.sh b/recipes/newlibtest/recipe.sh index b2bedf83..5c34bd42 100644 --- a/recipes/newlibtest/recipe.sh +++ b/recipes/newlibtest/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/redox-os/newlibtest.git +GIT=https://gitlab.redox-os.org/redox-os/newlibtest.git BUILD_DEPENDS=(newlib) function recipe_version { diff --git a/recipes/openttd-opengfx/recipe.sh b/recipes/openttd-opengfx/recipe.sh index 726579ab..4ed7e56d 100644 --- a/recipes/openttd-opengfx/recipe.sh +++ b/recipes/openttd-opengfx/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/redox-os/openttd-opengfx.git +GIT=https://gitlab.redox-os.org/redox-os/openttd-opengfx.git function recipe_version { echo "0.5.2" @@ -30,5 +30,3 @@ function recipe_stage { cp -Rv ./* "$1/share/games/openttd/baseset/opengfx" skip=1 } - - diff --git a/recipes/pkgutils/recipe.sh b/recipes/pkgutils/recipe.sh index 28a677cd..9af1a437 100644 --- a/recipes/pkgutils/recipe.sh +++ b/recipes/pkgutils/recipe.sh @@ -1 +1 @@ -GIT=https://github.com/redox-os/pkgutils.git +GIT=https://gitlab.redox-os.org/redox-os/pkgutils.git diff --git a/recipes/redox-ssh/recipe.sh b/recipes/redox-ssh/recipe.sh index 9d4dcb48..fb6f790a 100644 --- a/recipes/redox-ssh/recipe.sh +++ b/recipes/redox-ssh/recipe.sh @@ -1 +1 @@ -GIT=https://github.com/redox-os/redox-ssh.git +GIT=https://gitlab.redox-os.org/redox-os/redox-ssh.git diff --git a/recipes/relibc/recipe.sh b/recipes/relibc/recipe.sh index 60aa60c7..a77135ce 100644 --- a/recipes/relibc/recipe.sh +++ b/recipes/relibc/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/redox-os/relibc.git +GIT=https://gitlab.redox-os.org/redox-os/relibc.git function recipe_build { make diff --git a/recipes/rs-nes/recipe.sh b/recipes/rs-nes/recipe.sh index 840cab93..73aa9ef8 100755 --- a/recipes/rs-nes/recipe.sh +++ b/recipes/rs-nes/recipe.sh @@ -1,3 +1,3 @@ -GIT=https://github.com/redox-os/rs-nes.git +GIT=https://gitlab.redox-os.org/redox-os/rs-nes.git GIT_UPSTREAM=https://github.com/bgourlie/rs-nes.git DEPENDS="orbital" diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index 0ee45283..d24f3ae8 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -1,8 +1,8 @@ -GIT=https://github.com/redox-os/rust.git +GIT=https://gitlab.redox-os.org/redox-os/rust.git BRANCH=compile-redox DEPENDS="gcc cargo" -LLVM_GIT="https://github.com/redox-os/llvm.git" +LLVM_GIT="https://gitlab.redox-os.org/redox-os/llvm.git" LLVM_SOURCE="$(realpath -m llvm-source)" LLVM_BUILD="$(realpath -m llvm-build)" LLVM_PREFIX="$(realpath -m llvm-prefix)" diff --git a/recipes/rust64/recipe.sh b/recipes/rust64/recipe.sh index 441a34a1..27ddfa89 100755 --- a/recipes/rust64/recipe.sh +++ b/recipes/rust64/recipe.sh @@ -1,3 +1,3 @@ -GIT=https://github.com/redox-os/rust64.git +GIT=https://gitlab.redox-os.org/redox-os/rust64.git GIT_UPSTREAM=https://github.com/kondrak/rust64.git DEPENDS="orbital" diff --git a/recipes/rustual-boy/recipe.sh b/recipes/rustual-boy/recipe.sh index 8706fcf1..78a499ad 100755 --- a/recipes/rustual-boy/recipe.sh +++ b/recipes/rustual-boy/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/redox-os/rustual-boy.git +GIT=https://gitlab.redox-os.org/redox-os/rustual-boy.git GIT_UPSTREAM=https://github.com/emu-rs/rustual-boy.git DEPENDS="orbital" From 9509e370f2297dbd3df8b677db26c91aab2b47f7 Mon Sep 17 00:00:00 2001 From: fabiao Date: Sun, 17 Jun 2018 22:28:00 +0200 Subject: [PATCH 0411/3180] video resolution set to 640x480 cause SDL_GetVideoInfo() returns res 0x0 --- recipes/gigalomania/02_stdafx.patch | 4 ++-- recipes/gigalomania/03_image.patch | 4 ++-- recipes/gigalomania/04_sound.patch | 4 ++-- recipes/gigalomania/05_game.patch | 6 +++--- recipes/gigalomania/06_game_cpp.patch | 23 +++++++++++++++------ recipes/gigalomania/07_gamestate_cpp.patch | 24 +++++++++------------- 6 files changed, 36 insertions(+), 29 deletions(-) diff --git a/recipes/gigalomania/02_stdafx.patch b/recipes/gigalomania/02_stdafx.patch index fd73ee26..b7d21cf4 100644 --- a/recipes/gigalomania/02_stdafx.patch +++ b/recipes/gigalomania/02_stdafx.patch @@ -1,5 +1,5 @@ ---- source/stdafx.h 2018-05-28 11:51:01.961563258 +0200 -+++ build/stdafx.h 2018-05-28 11:55:02.478236113 +0200 +--- source/stdafx.h 2018-06-17 18:09:41.729534046 +0200 ++++ build/stdafx.h 2018-06-17 18:18:54.353160159 +0200 @@ -20,5 +20,5 @@ #elif defined(__MORPHOS__) #include diff --git a/recipes/gigalomania/03_image.patch b/recipes/gigalomania/03_image.patch index 0aa53056..7bf5a1d0 100644 --- a/recipes/gigalomania/03_image.patch +++ b/recipes/gigalomania/03_image.patch @@ -1,5 +1,5 @@ ---- source/image.h 2018-05-28 10:13:03.769049093 +0200 -+++ build/image.h 2018-05-28 11:11:33.754769751 +0200 +--- source/image.h 2018-06-17 18:09:41.601543849 +0200 ++++ build/image.h 2018-06-17 18:23:39.379455831 +0200 @@ -14,7 +14,7 @@ #elif defined(__MORPHOS__) #include diff --git a/recipes/gigalomania/04_sound.patch b/recipes/gigalomania/04_sound.patch index ae20c687..44f4aa6a 100644 --- a/recipes/gigalomania/04_sound.patch +++ b/recipes/gigalomania/04_sound.patch @@ -1,5 +1,5 @@ ---- source/sound.h 2018-05-28 10:13:03.857049133 +0200 -+++ build/sound.h 2018-05-28 11:11:47.002814093 +0200 +--- source/sound.h 2018-06-17 18:09:41.681537723 +0200 ++++ build/sound.h 2018-06-17 18:34:51.659424313 +0200 @@ -13,7 +13,7 @@ #elif defined(__linux) #include diff --git a/recipes/gigalomania/05_game.patch b/recipes/gigalomania/05_game.patch index 7999b01f..12c7b845 100644 --- a/recipes/gigalomania/05_game.patch +++ b/recipes/gigalomania/05_game.patch @@ -1,11 +1,11 @@ ---- source/game.h 2018-05-28 11:51:01.785562766 +0200 -+++ build/game.h 2018-05-28 11:53:10.909923925 +0200 +--- source/game.h 2018-06-17 18:09:41.545548138 +0200 ++++ build/game.h 2018-06-17 18:26:27.573161256 +0200 @@ -530,7 +530,7 @@ void startNewGame_g(); // DATADIR is place to look if data not present in application's folder -//#define DATADIR "C:/temp/glmdata" // test on Windows -+#define DATADIR "/games/gigalomania" // redox games dir? ++#define DATADIR "/games/gigalomania" // test on Windows extern string maps_dirname; #ifdef DATADIR diff --git a/recipes/gigalomania/06_game_cpp.patch b/recipes/gigalomania/06_game_cpp.patch index 13e727ce..714b7846 100644 --- a/recipes/gigalomania/06_game_cpp.patch +++ b/recipes/gigalomania/06_game_cpp.patch @@ -1,5 +1,16 @@ ---- source/game.cpp 2018-05-28 14:37:45.401234128 +0200 -+++ build/game.cpp 2018-05-28 14:47:42.698867243 +0200 +--- source/game.cpp 2018-06-17 18:09:41.545548000 +0200 ++++ build/game.cpp 2018-06-17 20:06:47.516838000 +0200 +@@ -2900,8 +2900,8 @@ + + #if SDL_MAJOR_VERSION == 1 + const SDL_VideoInfo *videoInfo = SDL_GetVideoInfo(); +- *user_width = videoInfo->current_w; +- *user_height = videoInfo->current_h; ++ *user_width = 640;//videoInfo->current_w; ++ *user_height = 480;//videoInfo->current_h; + LOG("desktop is %d x %d\n", *user_width, *user_height); + #else + SDL_DisplayMode displayMode; @@ -2942,11 +2942,11 @@ //user_width = 1184; //user_height = 720; @@ -46,8 +57,8 @@ } //bool quit = false; --bool debugwindow = true; -+bool debugwindow = false; +-bool debugwindow = false; ++bool debugwindow = true; void Game::requestQuit(bool force_quit) { if( !state_changed ) { @@ -55,8 +66,8 @@ debugwindow = true; #endif -- bool fullscreen = false; -+ bool fullscreen = true; +- bool fullscreen = true; ++ bool fullscreen = false; #if defined(__amigaos4__) || defined(AROS) || defined(__MORPHOS__) fullscreen = false; // run in windowed mode due to reported performance problems in fullscreen mode on AmigaOS 4; also randomly hangs on AROS in fullscreen mode; also included MorphOS just to be safe #endif diff --git a/recipes/gigalomania/07_gamestate_cpp.patch b/recipes/gigalomania/07_gamestate_cpp.patch index 77702798..858d76cc 100644 --- a/recipes/gigalomania/07_gamestate_cpp.patch +++ b/recipes/gigalomania/07_gamestate_cpp.patch @@ -1,24 +1,20 @@ ---- source/gamestate.cpp 2018-05-28 11:51:01.789562777 +0200 -+++ build/gamestate.cpp 2018-05-28 14:24:06.690031507 +0200 -@@ -1428,8 +1428,9 @@ - }; +--- source/gamestate.cpp 2018-06-17 18:09:41.549547831 +0200 ++++ build/gamestate.cpp 2018-06-17 18:31:22.793844378 +0200 +@@ -1429,7 +1429,7 @@ void GameState::fadeScreen(bool out, int delay, void (*func_finish)()) { -- if( fade != NULL ) -+ if( fade != NULL ) { - delete fade; -+ } + if( fade != NULL ) +- delete fade; ++ { delete fade; } if( game_g->isTesting() ) { if( func_finish != NULL ) { func_finish(); -@@ -1442,8 +1443,9 @@ - +@@ -1443,7 +1443,7 @@ void GameState::whiteFlash() { //ASSERT( whitefade == NULL ); -- if( whitefade != NULL ) -+ if( whitefade != NULL ) { - delete whitefade; -+ } + if( whitefade != NULL ) +- delete whitefade; ++ { delete whitefade; } if( !game_g->isTesting() ) { whitefade = new FadeEffect(true, false, 0, NULL); } From e0a7505fe50abcca534cfd128b0dd765a5097e97 Mon Sep 17 00:00:00 2001 From: Paul Sajna Date: Thu, 5 Jul 2018 21:13:31 +0000 Subject: [PATCH 0412/3180] Fix ncurses recipe by disabling ada support. --- recipes/ncurses/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/ncurses/recipe.sh b/recipes/ncurses/recipe.sh index ee3b27c5..c4e45dce 100644 --- a/recipes/ncurses/recipe.sh +++ b/recipes/ncurses/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { export CPPFLAGS="-P" - ./configure --host=${HOST} --prefix="" --disable-db-install + ./configure --host=${HOST} --prefix="" --disable-db-install --without-ada make skip=1 } From 905e8f609e3da06f33e9346f1e4d7996669c3d95 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 16 Jul 2018 10:20:43 -0600 Subject: [PATCH 0413/3180] Add friar recipe --- recipes/friar/recipe.sh | 1 + 1 file changed, 1 insertion(+) create mode 100644 recipes/friar/recipe.sh diff --git a/recipes/friar/recipe.sh b/recipes/friar/recipe.sh new file mode 100644 index 00000000..46742910 --- /dev/null +++ b/recipes/friar/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/jackpot51/friar.git From 75b2f24de884e317ead5cc1650ba5fd80063d16e Mon Sep 17 00:00:00 2001 From: MggMuggins Date: Fri, 27 Jul 2018 22:14:18 -0500 Subject: [PATCH 0414/3180] Do setuid in the userutils recipe --- recipes/userutils/recipe.sh | 38 ++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/recipes/userutils/recipe.sh b/recipes/userutils/recipe.sh index d5cf814d..3c8640e0 100644 --- a/recipes/userutils/recipe.sh +++ b/recipes/userutils/recipe.sh @@ -1,7 +1,43 @@ GIT=https://gitlab.redox-os.org/redox-os/userutils.git +BINS=( + id + getty + groupadd + groupmod + groupdel + login + passwd + su + sudo + useradd + usermod + userdel +) function recipe_stage { - cp -Rv res "$1/etc" + # Reimplement the entire copy bc of suid + if [ "$DEBUG" == 1 ] + then + build=debug + else + build=release + fi + mkdir -p "$1/bin" + + for bin in "${BINS[@]}" + do + cp -v "target/x86_64-unknown-redox/$build/$bin" "$1/bin" + done + + cp -Rv "res" "$1/etc" + ln -s id "$1/bin/whoami" + chmod +s "$1/bin/passwd" + chmod +s "$1/bin/sudo" + chmod +s "$1/bin/su" + + docgen ../source ../stage/ref + + skip=1 } From c9a992944c6e2e238c1515776d42856790353d7d Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Fri, 10 Aug 2018 15:09:14 +0200 Subject: [PATCH 0415/3180] Bash: Fix default PATH variable --- recipes/bash/02-path-separator.patch | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/recipes/bash/02-path-separator.patch b/recipes/bash/02-path-separator.patch index 88ee2120..55aff5f0 100644 --- a/recipes/bash/02-path-separator.patch +++ b/recipes/bash/02-path-separator.patch @@ -14,3 +14,22 @@ diff -ru source/general.c source-new/general.c ; *p_index = i; +--- source/config-top.h 2016-05-19 20:34:02.000000000 +0200 ++++ build/config-top.h 2018-08-07 15:00:14.440837632 +0200 +@@ -63,14 +63,14 @@ + /* The default value of the PATH variable. */ + #ifndef DEFAULT_PATH_VALUE + #define DEFAULT_PATH_VALUE \ +- "/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:." ++ "/usr/local/bin;/usr/local/sbin;/usr/bin;/usr/sbin;/bin;/sbin;." + #endif + + /* The value for PATH when invoking `command -p'. This is only used when + the Posix.2 confstr () function, or CS_PATH define are not present. */ + #ifndef STANDARD_UTILS_PATH + #define STANDARD_UTILS_PATH \ +- "/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc" ++ "/bin;/usr/bin;/sbin;/usr/sbin;/etc;/usr/etc" + #endif + + /* Default primary and secondary prompt strings. */ From 5f856a87950408c480e79ac4c2337c4e4075284c Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Fri, 10 Aug 2018 15:06:51 +0200 Subject: [PATCH 0416/3180] Add png support to ffmpeg --- recipes/ffmpeg/recipe.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/recipes/ffmpeg/recipe.sh b/recipes/ffmpeg/recipe.sh index 7454e41f..93ab89c3 100644 --- a/recipes/ffmpeg/recipe.sh +++ b/recipes/ffmpeg/recipe.sh @@ -1,6 +1,7 @@ VERSION=4.0 GIT=https://github.com/FFmpeg/FFmpeg BRANCH=release/$VERSION +BUILD_DEPENDS=(zlib) function recipe_version { echo "$VERSION" @@ -13,13 +14,19 @@ function recipe_update { } function recipe_build { + sysroot="$PWD/../sysroot" + export LDFLAGS="-L$sysroot/lib" + export CPPFLAGS="-I$sysroot/include -I$sysroot/include/ncurses" ./configure \ --enable-cross-compile \ --target-os=redox \ --arch=${ARCH} \ --cross_prefix=${HOST}- \ --prefix=/ \ - --disable-network + --disable-network \ + --enable-zlib \ + --enable-encoder=png \ + --enable-decoder=png make skip=1 } From 4f340bd2b873d2011a7828a10cdbf268902c440f Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Sat, 11 Aug 2018 08:00:03 +0200 Subject: [PATCH 0417/3180] Fix copy-paste error --- recipes/ffmpeg/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/ffmpeg/recipe.sh b/recipes/ffmpeg/recipe.sh index 93ab89c3..18ed8d92 100644 --- a/recipes/ffmpeg/recipe.sh +++ b/recipes/ffmpeg/recipe.sh @@ -16,7 +16,7 @@ function recipe_update { function recipe_build { sysroot="$PWD/../sysroot" export LDFLAGS="-L$sysroot/lib" - export CPPFLAGS="-I$sysroot/include -I$sysroot/include/ncurses" + export CPPFLAGS="-I$sysroot/include" ./configure \ --enable-cross-compile \ --target-os=redox \ From 04f6d62a3ecb2011f3025ed559bb6f5aa6d6612e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 16 Aug 2018 18:46:30 -0600 Subject: [PATCH 0418/3180] Use relibc branch of ion --- recipes/ion/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/ion/recipe.sh b/recipes/ion/recipe.sh index fda62673..3660e6f6 100644 --- a/recipes/ion/recipe.sh +++ b/recipes/ion/recipe.sh @@ -1 +1,2 @@ GIT=https://gitlab.redox-os.org/redox-os/ion.git +BRANCH=relibc From c49323d8bc6920cee9fbfb0b4fce79423f89dab8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 19 Aug 2018 11:26:47 -0600 Subject: [PATCH 0419/3180] Fix repo urls for init and netdb --- recipes/init/recipe.sh | 2 +- recipes/netdb/recipe.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/init/recipe.sh b/recipes/init/recipe.sh index ee32b737..bdc53785 100644 --- a/recipes/init/recipe.sh +++ b/recipes/init/recipe.sh @@ -1 +1 @@ -GIT=https://gitlab.redox-os.org/redox-os/init +GIT=https://gitlab.redox-os.org/redox-os/init.git diff --git a/recipes/netdb/recipe.sh b/recipes/netdb/recipe.sh index 638f3d25..12503ac9 100644 --- a/recipes/netdb/recipe.sh +++ b/recipes/netdb/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://gitlab.redox-os.org/redox-os/netdb +GIT=https://gitlab.redox-os.org/redox-os/netdb.git function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" From 1ce61efb450e0836690312adf05f99ed6e0f43e7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 19 Aug 2018 17:53:22 -0600 Subject: [PATCH 0420/3180] Fix incorrect header include --- recipes/sdl/01_orbital.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/sdl/01_orbital.patch b/recipes/sdl/01_orbital.patch index 02e2f799..2c9d9c2c 100644 --- a/recipes/sdl/01_orbital.patch +++ b/recipes/sdl/01_orbital.patch @@ -416,9 +416,9 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.c source/src/vide +#include "SDL_orbitalevents_c.h" +#include "SDL_orbitalmouse_c.h" + ++#include +#include +#include -+#include +#include +#include + From 8aefc0353fba5a63331b410c8ab942bbf37dd4c7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 19 Aug 2018 18:02:27 -0600 Subject: [PATCH 0421/3180] Remove unused header file sys/redox.h --- recipes/sdl/01_orbital.patch | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/sdl/01_orbital.patch b/recipes/sdl/01_orbital.patch index 2c9d9c2c..ba7666d2 100644 --- a/recipes/sdl/01_orbital.patch +++ b/recipes/sdl/01_orbital.patch @@ -373,7 +373,7 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalmouse_c.h source/src/vi diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.c source/src/video/orbital/SDL_orbitalvideo.c --- source-original/src/video/orbital/SDL_orbitalvideo.c 1970-01-01 01:00:00.000000000 +0100 +++ source/src/video/orbital/SDL_orbitalvideo.c 2018-05-01 17:32:53.000320923 +0200 -@@ -0,0 +1,250 @@ +@@ -0,0 +1,249 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -419,7 +419,6 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.c source/src/vide +#include +#include +#include -+#include +#include + +#define ORBITALVID_DRIVER_NAME "orbital" From a92a4b8d652b6bb8494c5e6d64e29d61ef5f971d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 27 Aug 2018 15:34:18 -0600 Subject: [PATCH 0422/3180] Remove use of autoconf --- recipes/gcc/recipe.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index f7ad69a3..d3e47ea7 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -18,9 +18,6 @@ function recipe_build { cp config.sub isl/config.sub cp config.sub mpfr/config.sub cp -f config.sub mpc/config.sub - pushd libstdc++-v3 - autoconf2.64 - popd ./configure --host=${HOST} --target=${HOST} --prefix=/ --enable-static --disable-shared --disable-dlopen --disable-nls --enable-languages=c,c++ make all-gcc all-target-libgcc all-target-libstdc++-v3 From 3286f7e4b60fb65b77097074c520feac5fa596de Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 8 Sep 2018 11:05:50 -0600 Subject: [PATCH 0423/3180] Use relibc branch for openssl --- recipes/openssl/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/openssl/recipe.sh b/recipes/openssl/recipe.sh index 872d9d98..21722d84 100644 --- a/recipes/openssl/recipe.sh +++ b/recipes/openssl/recipe.sh @@ -1,5 +1,5 @@ -GIT=https://github.com/ids1024/openssl.git -BRANCH=redox +GIT=https://gitlab.redox-os.org/redox-os/openssl.git +BRANCH=relibc function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" From 6f4957952d48e69f52d06a0519061bd75df99f79 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Sep 2018 20:56:31 -0600 Subject: [PATCH 0424/3180] Add ripgrep --- recipes/ripgrep/recipe.sh | 1 + 1 file changed, 1 insertion(+) create mode 100644 recipes/ripgrep/recipe.sh diff --git a/recipes/ripgrep/recipe.sh b/recipes/ripgrep/recipe.sh new file mode 100644 index 00000000..bd154155 --- /dev/null +++ b/recipes/ripgrep/recipe.sh @@ -0,0 +1 @@ +GIT=https://github.com/jackpot51/ripgrep.git From 974ea6514edcbf186ecb335b6505bf6edc2da58b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 18 Sep 2018 16:13:33 -0600 Subject: [PATCH 0425/3180] Add example driver --- recipes/exampled/recipe.sh | 1 + 1 file changed, 1 insertion(+) create mode 100644 recipes/exampled/recipe.sh diff --git a/recipes/exampled/recipe.sh b/recipes/exampled/recipe.sh new file mode 100644 index 00000000..b56a7b49 --- /dev/null +++ b/recipes/exampled/recipe.sh @@ -0,0 +1 @@ +GIT=https://gitlab.redox-os.org/redox-os/exampled.git From 453279bbc603ed82d411772d319ef0f603bdf813 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 20 Sep 2018 14:40:36 -0700 Subject: [PATCH 0426/3180] Add patch for curl missing sys/select.h --- recipes/curl/03-redox-sys-select.patch | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 recipes/curl/03-redox-sys-select.patch diff --git a/recipes/curl/03-redox-sys-select.patch b/recipes/curl/03-redox-sys-select.patch new file mode 100644 index 00000000..a99771f5 --- /dev/null +++ b/recipes/curl/03-redox-sys-select.patch @@ -0,0 +1,10 @@ +--- source/include/curl/curl.h 2017-08-07 15:42:29.000000000 -0700 ++++ build/include/curl/curl.h 2018-09-20 14:27:20.462414020 -0700 +@@ -74,6 +74,7 @@ + #if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \ + defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \ + defined(ANDROID) || defined(__ANDROID__) || defined(__OpenBSD__) || \ ++ defined(__redox__) || \ + (defined(__FreeBSD_version) && (__FreeBSD_version < 800000)) + #include + #endif From 8e326db1317b364e691d13c554d5db082b75a63f Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Sun, 23 Sep 2018 19:25:07 +0200 Subject: [PATCH 0427/3180] Resolve symlinks in 'stage' --- cook.sh | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/cook.sh b/cook.sh index c68fa053..e4ad5b84 100755 --- a/cook.sh +++ b/cook.sh @@ -341,15 +341,16 @@ function op { stage) op $1 unstage mkdir -p stage + stage="$(realpath stage)" pushd build > /dev/null skip=0 if [ "$(type -t recipe_stage)" = "function" ] then - recipe_stage ../stage + recipe_stage "$stage" fi if [ "$skip" -eq "0" ] then - #TODO xargo install --root "../stage" $CARGOFLAGS + #TODO xargo install --root "$stage" $CARGOFLAGS if [ "$DEBUG" == 1 ] then build=debug @@ -370,14 +371,14 @@ function op { then echo "$(tput bold)Note$(tput sgr0): No binaries detected, using example binaries" fi - mkdir -p "../stage/$BINDIR" + mkdir -p "$stage/$BINDIR" for bin in $bins do if [ "$DEBUG" == 1 ] then - cp -v "$bin" "../stage/$BINDIR/$(basename $bin)" + cp -v "$bin" "$stage/$BINDIR/$(basename $bin)" else - strip -v "$bin" -o "../stage/$BINDIR/$(basename $bin)" + strip -v "$bin" -o "$stage/$BINDIR/$(basename $bin)" fi done else From 501b3af198819fc9b70bacdb08b0124e38871fb6 Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Sun, 23 Sep 2018 19:26:22 +0200 Subject: [PATCH 0428/3180] More patches to make-ca.sh for NixOS --- recipes/ca-certificates/make-ca.sh.patch | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/recipes/ca-certificates/make-ca.sh.patch b/recipes/ca-certificates/make-ca.sh.patch index 65510e63..648d9ca8 100644 --- a/recipes/ca-certificates/make-ca.sh.patch +++ b/recipes/ca-certificates/make-ca.sh.patch @@ -1,6 +1,5 @@ -diff -ru source/make-ca.sh source2/make-ca.sh ---- source/make-ca.sh 2018-05-08 10:27:57.829291956 +0200 -+++ source2/make-ca.sh 2018-05-08 10:33:58.040239253 +0200 +--- source/make-ca.sh 2018-08-25 17:38:12.512463896 +0200 ++++ build/make-ca.sh 2018-09-23 14:45:12.492919202 +0200 @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash @@ -20,3 +19,12 @@ diff -ru source/make-ca.sh source2/make-ca.sh ANCHORDIR="${PKIDIR}/anchors" CABUNDLE="${SSLDIR}/ca-bundle.crt" CERTDIR="${SSLDIR}/certs" +@@ -723,7 +723,7 @@ + unset cert + fi + +-/usr/bin/c_rehash "${DESTDIR}${CERTDIR}" 2>&1>/dev/null ++c_rehash "${DESTDIR}${CERTDIR}" 2>&1>/dev/null + popd > /dev/null + + # Clean up the mess From 518c1c59cb226257c67cc0219626342d7e40e15f Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Fri, 10 Aug 2018 15:09:53 +0200 Subject: [PATCH 0429/3180] Bash: Needed patches for relibc --- recipes/bash/03-autotools-relibc-stuff.patch | 73 ++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 recipes/bash/03-autotools-relibc-stuff.patch diff --git a/recipes/bash/03-autotools-relibc-stuff.patch b/recipes/bash/03-autotools-relibc-stuff.patch new file mode 100644 index 00000000..c3dc542a --- /dev/null +++ b/recipes/bash/03-autotools-relibc-stuff.patch @@ -0,0 +1,73 @@ +--- a/aclocal.m4 2015-12-02 15:22:19.000000000 +0100 ++++ b/aclocal.m4 2018-08-03 17:26:40.798221239 +0200 +@@ -576,49 +576,7 @@ + fi + ]) + +-AC_DEFUN(BASH_FUNC_GETENV, +-[AC_MSG_CHECKING(to see if getenv can be redefined) +-AC_CACHE_VAL(bash_cv_getenv_redef, +-[AC_TRY_RUN([ +-#ifdef HAVE_UNISTD_H +-# include +-#endif +-#ifndef __STDC__ +-# ifndef const +-# define const +-# endif +-#endif +-char * +-getenv (name) +-#if defined (__linux__) || defined (__bsdi__) || defined (convex) +- const char *name; +-#else +- char const *name; +-#endif /* !__linux__ && !__bsdi__ && !convex */ +-{ +-return "42"; +-} +-main() +-{ +-char *s; +-/* The next allows this program to run, but does not allow bash to link +- when it redefines getenv. I'm not really interested in figuring out +- why not. */ +-#if defined (NeXT) +-exit(1); +-#endif +-s = getenv("ABCDE"); +-exit(s == 0); /* force optimizer to leave getenv in */ +-} +-], bash_cv_getenv_redef=yes, bash_cv_getenv_redef=no, +- [AC_MSG_WARN(cannot check getenv redefinition if cross compiling -- defaulting to yes) +- bash_cv_getenv_redef=yes] +-)]) +-AC_MSG_RESULT($bash_cv_getenv_redef) +-if test $bash_cv_getenv_redef = yes; then +-AC_DEFINE(CAN_REDEFINE_GETENV) +-fi +-]) ++bash_cv_getenv_redef=no + + # We should check for putenv before calling this + AC_DEFUN(BASH_FUNC_STD_PUTENV, +@@ -1200,7 +1158,7 @@ + AC_TRY_LINK([#include ],[ + sigset_t ss; + struct sigaction sa; +- sigemptyset(&ss); sigsuspend(&ss); ++ sigemptyset(&ss); /* sigsuspend(&ss); */ + sigaction(SIGINT, &sa, (struct sigaction *) 0); + sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0); + ], bash_cv_signal_vintage=posix, +--- a/configure.ac 2016-09-07 22:56:28.000000000 +0200 ++++ b/configure.ac 2018-08-03 09:10:42.818015670 +0200 +@@ -52,7 +52,7 @@ + AC_CANONICAL_BUILD + + dnl configure defaults +-opt_bash_malloc=yes ++opt_bash_malloc=no + opt_afs=no + opt_curses=no + opt_with_installed_readline=no From 84d01c6022a7b527429e048664c51856f6896767 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Fri, 28 Sep 2018 01:54:01 +0200 Subject: [PATCH 0430/3180] Move timidity, generaluser-gs and openttd-openmsx to GitLab --- recipes/generaluser-gs/recipe.sh | 2 +- recipes/openttd-openmsx/recipe.sh | 2 +- recipes/timidity/recipe.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/generaluser-gs/recipe.sh b/recipes/generaluser-gs/recipe.sh index 34438dad..8ec0e0ef 100644 --- a/recipes/generaluser-gs/recipe.sh +++ b/recipes/generaluser-gs/recipe.sh @@ -1,5 +1,5 @@ VERSION=1.471 -GIT=https://github.com/xTibor/redox-generaluser-gs.git +GIT=https://gitlab.redox-os.org/redox-os/generaluser-gs.git function recipe_version { echo "$VERSION" diff --git a/recipes/openttd-openmsx/recipe.sh b/recipes/openttd-openmsx/recipe.sh index 95a78df2..8c4c0124 100644 --- a/recipes/openttd-openmsx/recipe.sh +++ b/recipes/openttd-openmsx/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/xTibor/openttd-openmsx.git +GIT=https://gitlab.redox-os.org/redox-os/openttd-openmsx.git function recipe_version { echo "0.3.1" diff --git a/recipes/timidity/recipe.sh b/recipes/timidity/recipe.sh index 5f1eaa49..2c2d9fe8 100644 --- a/recipes/timidity/recipe.sh +++ b/recipes/timidity/recipe.sh @@ -1,5 +1,5 @@ VERSION=2.14.0 -GIT=https://github.com/xTibor/redox-timidity.git +GIT=https://gitlab.redox-os.org/redox-os/timidity.git BRANCH=redox DEPENDS="generaluser-gs" From 47f919a4a1bb3faea3ed4db4f72dd2ad36e19995 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Wed, 3 Oct 2018 00:34:36 +0200 Subject: [PATCH 0431/3180] prboom: Remove unnecessary patches for relibc --- recipes/prboom/01_redox.patch | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/recipes/prboom/01_redox.patch b/recipes/prboom/01_redox.patch index 16cdd828..35f29a67 100644 --- a/recipes/prboom/01_redox.patch +++ b/recipes/prboom/01_redox.patch @@ -10,27 +10,6 @@ diff -burpN source-original/configure.ac source/configure.ac AC_DECL_SYS_SIGLIST AC_HEADER_SYS_WAIT AC_CHECK_HEADERS(unistd.h asm/byteorder.h sched.h) -diff -burpN source-original/src/d_deh.c source/src/d_deh.c ---- source-original/src/d_deh.c 2008-10-11 14:10:38.000000000 +0200 -+++ source/src/d_deh.c 2018-04-22 23:41:16.949896859 +0200 -@@ -54,17 +54,6 @@ - #define TRUE 1 - #define FALSE 0 - --#ifndef HAVE_STRLWR --#include -- --static char* strlwr(char* str) --{ -- char* p; -- for (p=str; *p; p++) *p = tolower(*p); -- return str; --} --#endif -- - // killough 10/98: new functions, to allow processing DEH files in-memory - // (e.g. from wads) - diff -burpN source-original/src/SDL/i_video.c source/src/SDL/i_video.c --- source-original/src/SDL/i_video.c 2008-10-18 15:32:29.000000000 +0200 +++ source/src/SDL/i_video.c 2018-04-23 00:51:18.944949507 +0200 From 6debeffe5bc7d155741d165f099b94b3d56275e4 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Wed, 3 Oct 2018 20:31:51 +0200 Subject: [PATCH 0432/3180] Add libiconv recipe --- recipes/libiconv/01_redox.patch | 30 +++++++++++++++++++++++++++++ recipes/libiconv/recipe.sh | 34 +++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 recipes/libiconv/01_redox.patch create mode 100644 recipes/libiconv/recipe.sh diff --git a/recipes/libiconv/01_redox.patch b/recipes/libiconv/01_redox.patch new file mode 100644 index 00000000..35034786 --- /dev/null +++ b/recipes/libiconv/01_redox.patch @@ -0,0 +1,30 @@ +diff -rupNw source-original/srclib/getprogname.c source/srclib/getprogname.c +--- source-original/srclib/getprogname.c 2017-01-02 00:02:21.000000000 +0100 ++++ source/srclib/getprogname.c 2018-10-03 19:32:07.382785859 +0200 +@@ -144,7 +144,7 @@ getprogname (void) + } + return p; + # else +-# error "getprogname module not ported to this OS" ++ return "?"; + # endif + } + +diff -rupNw source-original/srclib/signal.in.h source/srclib/signal.in.h +--- source-original/srclib/signal.in.h 2017-01-02 00:02:22.000000000 +0100 ++++ source/srclib/signal.in.h 2018-10-03 19:46:53.323659264 +0200 +@@ -186,12 +186,12 @@ _GL_WARN_ON_USE (raise, "raise can crash + + /* Maximum signal number + 1. */ + # ifndef NSIG +-# define NSIG 32 ++# define NSIG 64 + # endif + + /* This code supports only 32 signals. */ + # if !GNULIB_defined_verify_NSIG_constraint +-typedef int verify_NSIG_constraint[NSIG <= 32 ? 1 : -1]; ++typedef int verify_NSIG_constraint[NSIG <= 64 ? 1 : -1]; + # define GNULIB_defined_verify_NSIG_constraint 1 + # endif + diff --git a/recipes/libiconv/recipe.sh b/recipes/libiconv/recipe.sh new file mode 100644 index 00000000..580e0444 --- /dev/null +++ b/recipes/libiconv/recipe.sh @@ -0,0 +1,34 @@ +VERSION=1.15 +TAR=https://ftp.gnu.org/pub/gnu/libiconv/libiconv-$VERSION.tar.gz + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + ./configure --host=${HOST} --prefix='/' --disable-shared --enable-static + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} From 7a36806ed3582e3c0f6ac77d9bb1868874ca1ecb Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Mon, 8 Oct 2018 20:47:48 +0200 Subject: [PATCH 0433/3180] netsurf: Use libiconv, fix the linking errors with relibc --- recipes/netsurf/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/netsurf/recipe.sh b/recipes/netsurf/recipe.sh index f7ede53d..19b3faca 100644 --- a/recipes/netsurf/recipe.sh +++ b/recipes/netsurf/recipe.sh @@ -1,6 +1,6 @@ VERSION=3.7 TAR=http://download.netsurf-browser.org/netsurf/releases/source-full/netsurf-all-$VERSION.tar.gz -BUILD_DEPENDS=(curl expat libjpeg libpng openssl sdl zlib freetype liborbital) +BUILD_DEPENDS=(curl expat libjpeg libpng openssl sdl zlib freetype liborbital libiconv) DEPENDS="ca-certificates orbital" function recipe_version { @@ -17,7 +17,7 @@ function recipe_build { sysroot="${PWD}/../sysroot" export TARGET="framebuffer" export CFLAGS="-I$sysroot/include -I${PWD}/inst-${TARGET}/include" - export LDFLAGS="-L$sysroot/lib -L${PWD}/inst-${TARGET}/lib" + export LDFLAGS="-L$sysroot/lib -L${PWD}/inst-${TARGET}/lib -Wl,--allow-multiple-definition" make V=1 skip=1 From e0a859bfe926386227016df3865fa7cb479ae136 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Sun, 14 Oct 2018 16:26:43 +0200 Subject: [PATCH 0434/3180] netsurf: Fix libiconv linking --- recipes/netsurf/01_redox.patch | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/netsurf/01_redox.patch b/recipes/netsurf/01_redox.patch index 7d1a715b..201a4a80 100644 --- a/recipes/netsurf/01_redox.patch +++ b/recipes/netsurf/01_redox.patch @@ -222,7 +222,7 @@ diff -rupNw source-original/netsurf/frontends/framebuffer/Makefile source/netsur diff -rupNw source-original/netsurf/Makefile.config source/netsurf/Makefile.config --- source-original/netsurf/Makefile.config 1970-01-01 01:00:00.000000000 +0100 +++ source/netsurf/Makefile.config 2018-03-04 20:43:18.244957528 +0100 -@@ -0,0 +1,27 @@ +@@ -0,0 +1,28 @@ +override NETSURF_HOMEPAGE := "https://www.redox-os.org/" +override NETSURF_FB_FRONTEND := sdl + @@ -232,6 +232,7 @@ diff -rupNw source-original/netsurf/Makefile.config source/netsurf/Makefile.conf +override NETSURF_USE_CURL := YES +override NETSURF_USE_PNG := YES + ++override NETSURF_USE_LIBICONV_PLUG := NO +override NETSURF_USE_NSSVG := NO +override NETSURF_USE_RSVG := NO +override NETSURF_USE_DUKTAPE := NO From 2e13df8d6aeed73c3acbc1c6de853595ce77bdc9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 14 Oct 2018 16:48:09 -0600 Subject: [PATCH 0435/3180] Use master branches --- recipes/ion/recipe.sh | 1 - recipes/openssl/recipe.sh | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/ion/recipe.sh b/recipes/ion/recipe.sh index 3660e6f6..fda62673 100644 --- a/recipes/ion/recipe.sh +++ b/recipes/ion/recipe.sh @@ -1,2 +1 @@ GIT=https://gitlab.redox-os.org/redox-os/ion.git -BRANCH=relibc diff --git a/recipes/openssl/recipe.sh b/recipes/openssl/recipe.sh index 21722d84..6e598a0f 100644 --- a/recipes/openssl/recipe.sh +++ b/recipes/openssl/recipe.sh @@ -1,5 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/openssl.git -BRANCH=relibc +BRANCH=redox function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" From e73ab5554506e1118967685e6b4c72cb9a985e55 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Fri, 19 Oct 2018 16:36:14 +0200 Subject: [PATCH 0436/3180] timidity: Bump version to 2.15.0, enable the VT100 interface --- recipes/timidity/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/timidity/recipe.sh b/recipes/timidity/recipe.sh index 2c2d9fe8..fd9ba87c 100644 --- a/recipes/timidity/recipe.sh +++ b/recipes/timidity/recipe.sh @@ -1,4 +1,4 @@ -VERSION=2.14.0 +VERSION=2.15.0 GIT=https://gitlab.redox-os.org/redox-os/timidity.git BRANCH=redox DEPENDS="generaluser-gs" @@ -16,7 +16,7 @@ function recipe_update { function recipe_build { autoreconf -f -i wget -O autoconf/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub - ./configure --host=${HOST} --prefix='' + ./configure --host=${HOST} --prefix='' --enable-vt100 make skip=1 } From 74efb58f115d5cd9be4af7be0b506eea979963e8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 8 Nov 2018 17:06:26 -0700 Subject: [PATCH 0437/3180] Update docgen --- docgen | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docgen b/docgen index c1326c9b..c9525c47 160000 --- a/docgen +++ b/docgen @@ -1 +1 @@ -Subproject commit c1326c9b07230c5ce641883c41421bec178e07fa +Subproject commit c9525c4761d814b86af061e4e96cd394da7deaa2 From ce8dfed7a07df1ca6e0dc2bf45fc65e4e3e5d5bc Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 8 Nov 2018 17:07:30 -0700 Subject: [PATCH 0438/3180] Update pkgutils --- pkgutils | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgutils b/pkgutils index f0f58dde..4908c5e4 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit f0f58dde366a95dd2d56b914c684c205b54ce831 +Subproject commit 4908c5e486afca3371b20245b50a21a9eeeef084 From 607e448598303b406c863814db06584b067fb609 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 10 Nov 2018 13:28:57 -0700 Subject: [PATCH 0439/3180] Update liborbital link --- recipes/liborbital/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/liborbital/recipe.sh b/recipes/liborbital/recipe.sh index 1c4e2bf6..7896aaec 100644 --- a/recipes/liborbital/recipe.sh +++ b/recipes/liborbital/recipe.sh @@ -1,4 +1,4 @@ -GIT=https://github.com/xtibor/liborbital +GIT=https://gitlab.redox-os.org/redox-os/liborbital.git function recipe_stage { dest="$(realpath $1)" From 01f7b16dff00320897dd75c36a7a054cf1eacba3 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 13 Nov 2018 21:24:49 -0700 Subject: [PATCH 0440/3180] Build tests and install --- recipes/relibc/recipe.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/relibc/recipe.sh b/recipes/relibc/recipe.sh index a77135ce..fe790d51 100644 --- a/recipes/relibc/recipe.sh +++ b/recipes/relibc/recipe.sh @@ -2,11 +2,14 @@ GIT=https://gitlab.redox-os.org/redox-os/relibc.git function recipe_build { make + make -C tests skip=1 } function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install + mkdir -pv "$dest/share/relibc" + cp -rv "tests" "$dest/share/relibc/tests" skip=1 } From ea0c3a87b13103f997aaea5ca1d30dc62c23703f Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Sat, 17 Nov 2018 01:39:00 +0100 Subject: [PATCH 0441/3180] netsurf: Remove uname patches --- recipes/netsurf/01_redox.patch | 61 ---------------------------------- 1 file changed, 61 deletions(-) diff --git a/recipes/netsurf/01_redox.patch b/recipes/netsurf/01_redox.patch index 201a4a80..c6ee00a3 100644 --- a/recipes/netsurf/01_redox.patch +++ b/recipes/netsurf/01_redox.patch @@ -281,64 +281,3 @@ diff -rupNw source-original/netsurf/render/form.c source/netsurf/render/form.c 0, &ret); if (err == NSERROR_BAD_ENCODING) { /* and without transliteration */ -diff -rupNw source-original/netsurf/utils/log.c source/netsurf/utils/log.c ---- source-original/netsurf/utils/log.c 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/utils/log.c 2018-03-04 20:43:18.252957604 +0100 -@@ -261,18 +261,18 @@ nserror nslog_init(nslog_ensure_t *ensur - /* sucessfull logging initialisation so log system info */ - if (ret == NSERROR_OK) { - NSLOG(netsurf, INFO, "NetSurf version '%s'", netsurf_version); -- if (uname(&utsname) < 0) { -+ //if (uname(&utsname) < 0) { - NSLOG(netsurf, INFO, - "Failed to extract machine information"); -- } else { -- NSLOG(netsurf, INFO, -- "NetSurf on <%s>, node <%s>, release <%s>, version <%s>, machine <%s>", -- utsname.sysname, -- utsname.nodename, -- utsname.release, -- utsname.version, -- utsname.machine); -- } -+ //} else { -+ // NSLOG(netsurf, INFO, -+ // "NetSurf on <%s>, node <%s>, release <%s>, version <%s>, machine <%s>", -+ // utsname.sysname, -+ // utsname.nodename, -+ // utsname.release, -+ // utsname.version, -+ // utsname.machine); -+ //} - } - - return ret; -diff -rupNw source-original/netsurf/utils/useragent.c source/netsurf/utils/useragent.c ---- source-original/netsurf/utils/useragent.c 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/utils/useragent.c 2018-03-04 20:43:18.252957604 +0100 -@@ -44,9 +44,10 @@ user_agent_build_string(void) - char *ua_string; - int len; - -- if (uname(&un) >= 0) { -- sysname = un.sysname; -- } -+ //if (uname(&un) >= 0) { -+ // sysname = un.sysname; -+ //} -+ sysname = "Redox"; - - len = snprintf(NULL, 0, NETSURF_UA_FORMAT_STRING, - netsurf_version_major, -diff -rupNw source-original/netsurf/utils/utsname.h source/netsurf/utils/utsname.h ---- source-original/netsurf/utils/utsname.h 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/utils/utsname.h 2018-03-04 20:43:18.252957604 +0100 -@@ -24,7 +24,7 @@ - #ifndef _NETSURF_UTILS_UTSNAME_H_ - #define _NETSURF_UTILS_UTSNAME_H_ - --#ifdef HAVE_UTSNAME -+#if 0 - #include - #else - /** system information filled in by uname derived from posix spec. */ From 010649b71be862bd2a0e112ce05c962838334614 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 16 Nov 2018 21:06:45 -0700 Subject: [PATCH 0442/3180] Fixes for compiling make --- recipes/gnu-make/make.patch | 40 +++++++++++++++++++++++++++++-------- recipes/gnu-make/recipe.sh | 2 +- 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/recipes/gnu-make/make.patch b/recipes/gnu-make/make.patch index 6ead9108..bd45ca24 100644 --- a/recipes/gnu-make/make.patch +++ b/recipes/gnu-make/make.patch @@ -1,6 +1,6 @@ diff -ru make-4.2/config/config.sub make-4.2-new/config/config.sub ---- make-4.2/config/config.sub 2016-05-22 06:27:16.000000000 -0700 -+++ make-4.2-new/config/config.sub 2017-05-09 13:36:20.519908366 -0700 +--- make-4.2/config/config.sub 2018-11-16 20:15:41.363343886 -0700 ++++ make-4.2-new/config/config.sub 2018-11-16 20:15:58.095419089 -0700 @@ -1376,7 +1376,7 @@ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ @@ -10,9 +10,33 @@ diff -ru make-4.2/config/config.sub make-4.2-new/config/config.sub | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ +diff -ru make-4.2/getopt1.c make-4.2-new/getopt1.c +--- make-4.2/getopt1.c 2018-11-16 20:15:41.379343966 -0700 ++++ make-4.2-new/getopt1.c 2018-11-16 20:28:25.520961828 -0700 +@@ -48,6 +48,8 @@ + #endif + #endif + ++#define ELIDE_CODE ++ + #ifndef ELIDE_CODE + + +diff -ru make-4.2/getopt.c make-4.2-new/getopt.c +--- make-4.2/getopt.c 2018-11-16 20:15:41.359343867 -0700 ++++ make-4.2-new/getopt.c 2018-11-16 20:28:07.653254603 -0700 +@@ -56,6 +56,8 @@ + # endif + #endif + ++#define ELIDE_CODE ++ + #ifndef ELIDE_CODE + + diff -ru make-4.2/glob/glob.c make-4.2-new/glob/glob.c ---- make-4.2/glob/glob.c 2013-10-20 10:14:38.000000000 -0700 -+++ make-4.2-new/glob/glob.c 2017-05-09 14:14:14.319260425 -0700 +--- make-4.2/glob/glob.c 2018-11-16 20:15:41.359343867 -0700 ++++ make-4.2-new/glob/glob.c 2018-11-16 20:15:58.095419089 -0700 @@ -625,9 +625,9 @@ #else const char *home_dir = getenv ("HOME"); @@ -35,8 +59,8 @@ diff -ru make-4.2/glob/glob.c make-4.2-new/glob/glob.c { char *end_name = strchr (dirname, '/'); diff -ru make-4.2/job.c make-4.2-new/job.c ---- make-4.2/job.c 2016-05-21 13:22:32.000000000 -0700 -+++ make-4.2-new/job.c 2017-05-09 13:52:47.806791042 -0700 +--- make-4.2/job.c 2018-11-16 20:15:41.351343827 -0700 ++++ make-4.2-new/job.c 2018-11-16 20:15:58.099419106 -0700 @@ -1038,7 +1038,7 @@ void block_sigs (void) @@ -59,8 +83,8 @@ diff -ru make-4.2/job.c make-4.2-new/job.c #endif diff -ru make-4.2/read.c make-4.2-new/read.c ---- make-4.2/read.c 2016-05-21 13:22:32.000000000 -0700 -+++ make-4.2-new/read.c 2017-05-09 13:55:08.237484319 -0700 +--- make-4.2/read.c 2018-11-16 20:15:41.359343867 -0700 ++++ make-4.2-new/read.c 2018-11-16 20:15:58.099419106 -0700 @@ -2937,7 +2937,7 @@ free (home_dir); home_dir = getenv ("HOME"); diff --git a/recipes/gnu-make/recipe.sh b/recipes/gnu-make/recipe.sh index 517e6e8a..45548c9a 100644 --- a/recipes/gnu-make/recipe.sh +++ b/recipes/gnu-make/recipe.sh @@ -12,7 +12,7 @@ function recipe_update { } function recipe_build { - ./configure --host=${HOST} --prefix=/ CFLAGS=-DPOSIX --without-guile + ./configure --host=${HOST} --prefix=/ CFLAGS="-DPOSIX -DNO_ARCHIVES -DNO_OUTPUT_SYNC" --without-guile make skip=1 } From 3f60f5686d72c758acabf6e0f08d7085716ba4d1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 16 Nov 2018 21:12:59 -0700 Subject: [PATCH 0443/3180] Fix multiple fnmatch --- recipes/gnu-make/make.patch | 42 ++++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/recipes/gnu-make/make.patch b/recipes/gnu-make/make.patch index bd45ca24..ca146c8b 100644 --- a/recipes/gnu-make/make.patch +++ b/recipes/gnu-make/make.patch @@ -1,6 +1,6 @@ diff -ru make-4.2/config/config.sub make-4.2-new/config/config.sub ---- make-4.2/config/config.sub 2018-11-16 20:15:41.363343886 -0700 -+++ make-4.2-new/config/config.sub 2018-11-16 20:15:58.095419089 -0700 +--- make-4.2/config/config.sub 2018-11-16 21:11:15.392794814 -0700 ++++ make-4.2-new/config/config.sub 2018-11-16 21:11:37.922637742 -0700 @@ -1376,7 +1376,7 @@ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ @@ -11,8 +11,8 @@ diff -ru make-4.2/config/config.sub make-4.2-new/config/config.sub | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ diff -ru make-4.2/getopt1.c make-4.2-new/getopt1.c ---- make-4.2/getopt1.c 2018-11-16 20:15:41.379343966 -0700 -+++ make-4.2-new/getopt1.c 2018-11-16 20:28:25.520961828 -0700 +--- make-4.2/getopt1.c 2018-11-16 21:11:15.408796156 -0700 ++++ make-4.2-new/getopt1.c 2018-11-16 21:11:37.922637742 -0700 @@ -48,6 +48,8 @@ #endif #endif @@ -23,8 +23,8 @@ diff -ru make-4.2/getopt1.c make-4.2-new/getopt1.c diff -ru make-4.2/getopt.c make-4.2-new/getopt.c ---- make-4.2/getopt.c 2018-11-16 20:15:41.359343867 -0700 -+++ make-4.2-new/getopt.c 2018-11-16 20:28:07.653254603 -0700 +--- make-4.2/getopt.c 2018-11-16 21:11:15.384794143 -0700 ++++ make-4.2-new/getopt.c 2018-11-16 21:11:37.922637742 -0700 @@ -56,6 +56,8 @@ # endif #endif @@ -34,9 +34,27 @@ diff -ru make-4.2/getopt.c make-4.2-new/getopt.c #ifndef ELIDE_CODE +diff -ru make-4.2/glob/fnmatch.c make-4.2-new/glob/fnmatch.c +--- make-4.2/glob/fnmatch.c 2018-11-16 21:11:15.384794143 -0700 ++++ make-4.2-new/glob/fnmatch.c 2018-11-16 21:11:53.311846128 -0700 +@@ -477,6 +477,7 @@ + } + + ++/* + int + fnmatch (pattern, string, flags) + const char *pattern; +@@ -485,5 +486,6 @@ + { + return internal_fnmatch (pattern, string, flags & FNM_PERIOD, flags); + } ++*/ + + #endif /* _LIBC or not __GNU_LIBRARY__. */ diff -ru make-4.2/glob/glob.c make-4.2-new/glob/glob.c ---- make-4.2/glob/glob.c 2018-11-16 20:15:41.359343867 -0700 -+++ make-4.2-new/glob/glob.c 2018-11-16 20:15:58.095419089 -0700 +--- make-4.2/glob/glob.c 2018-11-16 21:11:15.384794143 -0700 ++++ make-4.2-new/glob/glob.c 2018-11-16 21:11:37.926638062 -0700 @@ -625,9 +625,9 @@ #else const char *home_dir = getenv ("HOME"); @@ -59,8 +77,8 @@ diff -ru make-4.2/glob/glob.c make-4.2-new/glob/glob.c { char *end_name = strchr (dirname, '/'); diff -ru make-4.2/job.c make-4.2-new/job.c ---- make-4.2/job.c 2018-11-16 20:15:41.351343827 -0700 -+++ make-4.2-new/job.c 2018-11-16 20:15:58.099419106 -0700 +--- make-4.2/job.c 2018-11-16 21:11:15.380793809 -0700 ++++ make-4.2-new/job.c 2018-11-16 21:11:37.926638062 -0700 @@ -1038,7 +1038,7 @@ void block_sigs (void) @@ -83,8 +101,8 @@ diff -ru make-4.2/job.c make-4.2-new/job.c #endif diff -ru make-4.2/read.c make-4.2-new/read.c ---- make-4.2/read.c 2018-11-16 20:15:41.359343867 -0700 -+++ make-4.2-new/read.c 2018-11-16 20:15:58.099419106 -0700 +--- make-4.2/read.c 2018-11-16 21:11:15.384794143 -0700 ++++ make-4.2-new/read.c 2018-11-16 21:11:37.926638062 -0700 @@ -2937,7 +2937,7 @@ free (home_dir); home_dir = getenv ("HOME"); From 8eb4609469de23e2b362ddaeb290d9964d984ff4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 17 Nov 2018 07:38:22 -0700 Subject: [PATCH 0444/3180] bash: Patch for incorrect feature checks in execute-cmd.c --- recipes/bash/04-execute-cmd.patch | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 recipes/bash/04-execute-cmd.patch diff --git a/recipes/bash/04-execute-cmd.patch b/recipes/bash/04-execute-cmd.patch new file mode 100644 index 00000000..27ff6978 --- /dev/null +++ b/recipes/bash/04-execute-cmd.patch @@ -0,0 +1,21 @@ +--- source/execute_cmd.c 2016-08-26 05:10:08.000000000 -0600 ++++ source-new/execute_cmd.c 2018-11-17 07:32:59.626764573 -0700 +@@ -1335,15 +1335,17 @@ + nullcmd = (command == 0) || (command->type == cm_simple && command->value.Simple->words == 0 && command->value.Simple->redirects == 0); + if (posixly_correct && nullcmd) + { +-#if defined (HAVE_GETRUSAGE) ++#if defined (HAVE_GETRUSAGE) && defined (HAVE_GETTIMEOFDAY) + selfb.ru_utime.tv_sec = kidsb.ru_utime.tv_sec = selfb.ru_stime.tv_sec = kidsb.ru_stime.tv_sec = 0; + selfb.ru_utime.tv_usec = kidsb.ru_utime.tv_usec = selfb.ru_stime.tv_usec = kidsb.ru_stime.tv_usec = 0; + before.tv_sec = shell_start_time; + before.tv_usec = 0; + #else ++# if defined (HAVE_TIMES) + before.tms_utime = before.tms_stime = before.tms_cutime = before.tms_cstime = 0; + tbefore = shell_start_time; + #endif ++#endif + } + + old_flags = command->flags; From 871149f4a038b6b3e03f7e6540557ffa95751262 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 17 Nov 2018 09:47:05 -0700 Subject: [PATCH 0445/3180] Disable c++ --- recipes/gcc/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index d3e47ea7..6c306737 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -19,8 +19,8 @@ function recipe_build { cp config.sub mpfr/config.sub cp -f config.sub mpc/config.sub - ./configure --host=${HOST} --target=${HOST} --prefix=/ --enable-static --disable-shared --disable-dlopen --disable-nls --enable-languages=c,c++ - make all-gcc all-target-libgcc all-target-libstdc++-v3 + ./configure --host=${HOST} --target=${HOST} --prefix=/ --enable-static --disable-shared --disable-dlopen --disable-nls --enable-languages=c #,c++ + make all-gcc all-target-libgcc #all-target-libstdc++-v3 skip=1 } From 667b1a43a84b01756915ede9aab05cacadaec2c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Thei=C3=9Fen?= Date: Sat, 17 Nov 2018 23:06:27 +0100 Subject: [PATCH 0446/3180] Use the STRIP variable during prepend stage A hardcoded strip does not work when cross compiling. --- cook.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cook.sh b/cook.sh index e4ad5b84..bf7dc97b 100755 --- a/cook.sh +++ b/cook.sh @@ -378,7 +378,7 @@ function op { then cp -v "$bin" "$stage/$BINDIR/$(basename $bin)" else - strip -v "$bin" -o "$stage/$BINDIR/$(basename $bin)" + ${STRIP} -v "$bin" -o "$stage/$BINDIR/$(basename $bin)" fi done else From e865bedd033bf01d1d8db40edfa866791d3c5174 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 17 Nov 2018 23:50:35 +0000 Subject: [PATCH 0447/3180] Update cook.sh --- cook.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cook.sh b/cook.sh index bf7dc97b..cdff410e 100755 --- a/cook.sh +++ b/cook.sh @@ -378,7 +378,7 @@ function op { then cp -v "$bin" "$stage/$BINDIR/$(basename $bin)" else - ${STRIP} -v "$bin" -o "$stage/$BINDIR/$(basename $bin)" + "${STRIP}" -v "$bin" -o "$stage/$BINDIR/$(basename $bin)" fi done else From e1710bd4d522a5cc53f495c12875afb47fa53f81 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 18 Nov 2018 10:37:36 -0700 Subject: [PATCH 0448/3180] Reenable c++ --- recipes/gcc/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index 6c306737..d3e47ea7 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -19,8 +19,8 @@ function recipe_build { cp config.sub mpfr/config.sub cp -f config.sub mpc/config.sub - ./configure --host=${HOST} --target=${HOST} --prefix=/ --enable-static --disable-shared --disable-dlopen --disable-nls --enable-languages=c #,c++ - make all-gcc all-target-libgcc #all-target-libstdc++-v3 + ./configure --host=${HOST} --target=${HOST} --prefix=/ --enable-static --disable-shared --disable-dlopen --disable-nls --enable-languages=c,c++ + make all-gcc all-target-libgcc all-target-libstdc++-v3 skip=1 } From 0c47839c2c8f2cd3f5f990bda07e1c54bea5feed Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 22 Nov 2018 19:51:15 -0700 Subject: [PATCH 0449/3180] Add gawk upstream --- recipes/gawk/recipe.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/gawk/recipe.sh b/recipes/gawk/recipe.sh index 9d52945e..a5142056 100644 --- a/recipes/gawk/recipe.sh +++ b/recipes/gawk/recipe.sh @@ -1,4 +1,5 @@ -GIT=https://gitlab.redox-os.org/redox-os/gawk +GIT=https://gitlab.redox-os.org/redox-os/gawk.git +GIT_UPSTREAM=https://git.savannah.gnu.org/git/gawk.git BRANCH=redox function recipe_update { From 58e53a1a4eaea0cbcdac21bb487aefc0b2e4c490 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Fri, 23 Nov 2018 23:48:05 +0100 Subject: [PATCH 0450/3180] openttd: Relibc fixes --- recipes/openttd/01_redox.patch | 112 +++++++++++---------------------- 1 file changed, 35 insertions(+), 77 deletions(-) diff --git a/recipes/openttd/01_redox.patch b/recipes/openttd/01_redox.patch index 357ba295..f67f9a5b 100644 --- a/recipes/openttd/01_redox.patch +++ b/recipes/openttd/01_redox.patch @@ -1,7 +1,6 @@ -diff --git a/config.lib b/config.lib -index bc2224f..54290b1 100644 ---- a/config.lib -+++ b/config.lib +diff -rupNw source-original/config.lib source/config.lib +--- source-original/config.lib 2018-11-23 19:25:11.000000000 +0100 ++++ source/config.lib 2018-11-23 21:37:19.956620161 +0100 @@ -1486,7 +1486,7 @@ make_cflags_and_ldflags() { # Special CXXFlags for HOST CXXFLAGS="$CXXFLAGS" @@ -20,61 +19,9 @@ index bc2224f..54290b1 100644 fi if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "MINGW" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ]; then -diff --git a/src/os/unix/crashlog_unix.cpp b/src/os/unix/crashlog_unix.cpp -index 47de057..07a3b74 100644 ---- a/src/os/unix/crashlog_unix.cpp -+++ b/src/os/unix/crashlog_unix.cpp -@@ -17,7 +17,7 @@ - - #include - #include --#include -+//#include - - #if defined(__GLIBC__) - /* Execinfo (and thus making stacktraces) is a GNU extension */ -@@ -42,22 +42,22 @@ class CrashLogUnix : public CrashLog { - - /* virtual */ char *LogOSVersion(char *buffer, const char *last) const - { -- struct utsname name; -- if (uname(&name) < 0) { -+ //struct utsname name; -+ //if (uname(&name) < 0) { - return buffer + seprintf(buffer, last, "Could not get OS version: %s\n", strerror(errno)); -- } -- -- return buffer + seprintf(buffer, last, -- "Operating system:\n" -- " Name: %s\n" -- " Release: %s\n" -- " Version: %s\n" -- " Machine: %s\n", -- name.sysname, -- name.release, -- name.version, -- name.machine -- ); -+ //} -+ -+ //return buffer + seprintf(buffer, last, -+ // "Operating system:\n" -+ // " Name: %s\n" -+ // " Release: %s\n" -+ // " Version: %s\n" -+ // " Machine: %s\n", -+ // name.sysname, -+ // name.release, -+ // name.version, -+ // name.machine -+ //); - } - - /* virtual */ char *LogError(char *buffer, const char *last, const char *message) const -diff --git a/src/os/unix/unix.cpp b/src/os/unix/unix.cpp -index d7c2304..ed3c706 100644 ---- a/src/os/unix/unix.cpp -+++ b/src/os/unix/unix.cpp +diff -rupNw source-original/src/os/unix/unix.cpp source/src/os/unix/unix.cpp +--- source-original/src/os/unix/unix.cpp 2018-11-23 19:25:12.000000000 +0100 ++++ source/src/os/unix/unix.cpp 2018-11-23 21:37:19.956620161 +0100 @@ -28,7 +28,7 @@ #ifdef __APPLE__ #include @@ -84,11 +31,10 @@ index d7c2304..ed3c706 100644 #endif #if defined(OPENBSD) || defined(__NetBSD__) || defined(__FreeBSD__) -diff --git a/src/rev.cpp.in b/src/rev.cpp.in -index b6bddea..499ec09 100644 ---- a/src/rev.cpp.in -+++ b/src/rev.cpp.in -@@ -57,7 +57,7 @@ const char _openttd_build_date[] = __DATE__ " " __TIME__; +diff -rupNw source-original/src/rev.cpp.in source/src/rev.cpp.in +--- source-original/src/rev.cpp.in 2018-11-23 19:25:12.000000000 +0100 ++++ source/src/rev.cpp.in 2018-11-23 21:37:19.956620161 +0100 +@@ -57,7 +57,7 @@ const char _openttd_build_date[] = __DAT * (compiling from sources without any version control software) * and 2 is for modified revision. */ @@ -97,16 +43,28 @@ index b6bddea..499ec09 100644 /** * The NewGRF revision of OTTD: -diff --git a/src/stringfilter.cpp b/src/stringfilter.cpp -index 6045c19..6fc3f99 100644 ---- a/src/stringfilter.cpp -+++ b/src/stringfilter.cpp -@@ -113,7 +113,7 @@ void StringFilter::AddLine(const char *str) - const WordState *end = this->word_index.End(); - for (WordState *it = this->word_index.Begin(); it != end; ++it) { - if (!it->match) { -- if ((match_case ? strstr(str, it->start) : strcasestr(str, it->start)) != NULL) { -+ if ((match_case ? strstr(str, it->start) : strstr(str, it->start)) != NULL) { - it->match = true; - this->word_matches++; - } +diff -rupNw source-original/src/stdafx.h source/src/stdafx.h +--- source-original/src/stdafx.h 2018-11-23 19:25:12.000000000 +0100 ++++ source/src/stdafx.h 2018-11-23 19:49:25.000000000 +0100 +@@ -12,6 +12,9 @@ + #ifndef STDAFX_H + #define STDAFX_H + ++#include ++#include ++ + #if defined(__APPLE__) + #include "os/macosx/osx_stdafx.h" + #endif /* __APPLE__ */ +diff -rupNw source-original/src/string.cpp source/src/string.cpp +--- source-original/src/string.cpp 2018-11-23 19:25:12.000000000 +0100 ++++ source/src/string.cpp 2018-11-23 20:01:10.000000000 +0100 +@@ -528,7 +528,7 @@ size_t Utf8TrimString(char *s, size_t ma + return length; + } + +-#ifdef DEFINE_STRCASESTR ++#if 0 + char *strcasestr(const char *haystack, const char *needle) + { + size_t hay_len = strlen(haystack); From 5e24c0d3d8cd26bbdf74b6857cab4df27ae69713 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 26 Nov 2018 21:48:41 -0700 Subject: [PATCH 0451/3180] Attempt to fix issue with gcc paths --- recipes/gcc/recipe.sh | 11 ++++++++--- recipes/gnu-binutils/recipe.sh | 7 ++++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index d3e47ea7..b1240458 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -1,6 +1,7 @@ GIT=https://gitlab.redox-os.org/redox-os/gcc.git BRANCH=redox -DEPENDS="gnu-binutils newlib" +BUILD_DEPENDS=(relibc) +DEPENDS="gnu-binutils relibc" function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" @@ -19,8 +20,12 @@ function recipe_build { cp config.sub mpfr/config.sub cp -f config.sub mpc/config.sub - ./configure --host=${HOST} --target=${HOST} --prefix=/ --enable-static --disable-shared --disable-dlopen --disable-nls --enable-languages=c,c++ - make all-gcc all-target-libgcc all-target-libstdc++-v3 + sysroot="${PWD}/../sysroot" + mkdir -p "$sysroot/usr" + ln -sf "$sysroot/include" "$sysroot/usr/include" + ln -sf "$sysroot/lib" "$sysroot/usr/lib" + ./configure --host=${HOST} --target=${HOST} --prefix=/ --with-sysroot=/ --with-build-sysroot="$sysroot" --enable-static --disable-shared --disable-dlopen --disable-nls --enable-languages=c,c++ + make -j "$(nproc)" all-gcc all-target-libgcc all-target-libstdc++-v3 skip=1 } diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh index 6e7f7131..868fe008 100644 --- a/recipes/gnu-binutils/recipe.sh +++ b/recipes/gnu-binutils/recipe.sh @@ -1,4 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/binutils-gdb.git +BUILD_DEPENDS=(relibc) function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" @@ -11,7 +12,11 @@ function recipe_update { } function recipe_build { - ./configure --host=${HOST} --target=${HOST} --prefix=/ --with-sysroot=/usr/$HOST --disable-gdb --disable-nls --disable-werror + sysroot="${PWD}/../sysroot" + mkdir -p "$sysroot/usr" + ln -sf "$sysroot/include" "$sysroot/usr/include" + ln -sf "$sysroot/lib" "$sysroot/usr/lib" + ./configure --host=${HOST} --target=${HOST} --prefix=/ --with-sysroot=/ --with-build-sysroot="$sysroot" --disable-gdb --disable-nls --disable-werror make skip=1 } From 757c61e2b640eb8b5e26d475d0078c248b4a563f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 27 Nov 2018 09:55:43 -0700 Subject: [PATCH 0452/3180] Add support for aarch64 --- .cargo/config | 4 ++++ config.sh | 9 ++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.cargo/config b/.cargo/config index 7c62c97b..69c4db47 100644 --- a/.cargo/config +++ b/.cargo/config @@ -1,3 +1,7 @@ +[target.aarch64-unknown-redox] +linker = "aarch64-unknown-redox-gcc" +rustflags = [] + [target.x86_64-unknown-redox] linker = "x86_64-unknown-redox-gcc" rustflags = [] diff --git a/config.sh b/config.sh index da7b8902..b08a2e59 100755 --- a/config.sh +++ b/config.sh @@ -2,9 +2,12 @@ set -e # Configuration -ARCH=x86_64 -export TARGET=$ARCH-unknown-redox -HOST=$TARGET +if [ -z "${TARGET}" ] +then + export TARGET=x86_64-unknown-redox +fi +ARCH="${TARGET%%-*}" +HOST="$TARGET" # Automatic variables ROOT="$(cd `dirname "$0"` && pwd)" From 292ee1e2b72ae30c4fba4a34eeb33e5b3484bf00 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 27 Nov 2018 19:32:55 -0700 Subject: [PATCH 0453/3180] Drop backtrace feature from aarch64 std build --- Xargo.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Xargo.toml b/Xargo.toml index 0c493ec3..07a581d9 100644 --- a/Xargo.toml +++ b/Xargo.toml @@ -1,4 +1,7 @@ -[dependencies.std] +[target.aarch64-unknown-redox.dependencies.std] +features = ["panic_unwind"] + +[target.x86_64-unknown-redox.dependencies.std] features = ["panic_unwind", "backtrace"] #[dependencies.test] From 80742537b0671bc79158b46857c61283c6c913b1 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Wed, 28 Nov 2018 03:09:16 +0100 Subject: [PATCH 0454/3180] sdl: Reject all non-32bit pixel formats --- recipes/sdl/01_orbital.patch | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/sdl/01_orbital.patch b/recipes/sdl/01_orbital.patch index ba7666d2..3d066f36 100644 --- a/recipes/sdl/01_orbital.patch +++ b/recipes/sdl/01_orbital.patch @@ -373,7 +373,7 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalmouse_c.h source/src/vi diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.c source/src/video/orbital/SDL_orbitalvideo.c --- source-original/src/video/orbital/SDL_orbitalvideo.c 1970-01-01 01:00:00.000000000 +0100 +++ source/src/video/orbital/SDL_orbitalvideo.c 2018-05-01 17:32:53.000320923 +0200 -@@ -0,0 +1,249 @@ +@@ -0,0 +1,252 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -524,7 +524,10 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.c source/src/vide + +SDL_Rect **ORBITAL_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags) +{ -+ return (SDL_Rect **) -1; ++ if (format->BitsPerPixel != 32) ++ return NULL; ++ ++ return (SDL_Rect **) -1; +} + +SDL_Surface *ORBITAL_SetVideoMode(_THIS, SDL_Surface *current, From 19498b3b74fb5e0b8da29fb4acf9898b8f93a5e3 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Wed, 28 Nov 2018 03:11:16 +0100 Subject: [PATCH 0455/3180] Add scummvm recipe --- recipes/scummvm/01_redox.patch | 24 ++++++++++++++++++ recipes/scummvm/recipe.sh | 46 ++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 recipes/scummvm/01_redox.patch create mode 100644 recipes/scummvm/recipe.sh diff --git a/recipes/scummvm/01_redox.patch b/recipes/scummvm/01_redox.patch new file mode 100644 index 00000000..47e55dc2 --- /dev/null +++ b/recipes/scummvm/01_redox.patch @@ -0,0 +1,24 @@ +diff -rupNw source-original/common/stream.cpp source/common/stream.cpp +--- source-original/common/stream.cpp 2017-12-08 23:21:10.000000000 +0100 ++++ source/common/stream.cpp 2018-11-28 00:36:53.474637267 +0100 +@@ -95,7 +95,7 @@ bool MemoryReadStream::seek(int32 offs, + break; + } + // Post-Condition +- assert(_pos <= _size); ++ //assert(_pos <= _size); + + // Reset end-of-stream flag on a successful seek + _eos = false; +diff -rupNw source-original/configure source/configure +--- source-original/configure 2017-12-08 23:21:13.000000000 +0100 ++++ source/configure 2018-11-28 00:35:33.000000000 +0100 +@@ -3610,7 +3610,7 @@ case $_host_os in + amigaos* | cygwin* | dreamcast | ds | gamecube | mingw* | n64 | ps2 | ps3 | psp2 | psp | wii | wince) + _posix=no + ;; +- 3ds | android | androidsdl | beos* | bsd* | darwin* | freebsd* | gnu* | gph-linux | haiku* | hpux* | iphone | ios7 | irix*| k*bsd*-gnu* | linux* | maemo | mint* | netbsd* | openbsd* | riscos | solaris* | sunos* | uclinux* | webos) ++ 3ds | android | androidsdl | beos* | bsd* | darwin* | freebsd* | gnu* | gph-linux | haiku* | hpux* | iphone | ios7 | irix*| k*bsd*-gnu* | linux* | maemo | mint* | netbsd* | openbsd* | riscos | redox* | solaris* | sunos* | uclinux* | webos) + _posix=yes + ;; + os2-emx*) diff --git a/recipes/scummvm/recipe.sh b/recipes/scummvm/recipe.sh new file mode 100644 index 00000000..d5f5ff08 --- /dev/null +++ b/recipes/scummvm/recipe.sh @@ -0,0 +1,46 @@ +VERSION=2.0.0 +TAR=https://www.scummvm.org/frs/scummvm/$VERSION/scummvm-$VERSION.tar.xz +BUILD_DEPENDS=(sdl liborbital freetype zlib libpng) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + sysroot="${PWD}/../sysroot" + + ./configure \ + --host=${HOST} \ + --prefix='' \ + --with-sdl-prefix="$sysroot" \ + --with-freetype2-prefix="$sysroot" \ + --with-png-prefix="$sysroot" \ + --with-zlib-prefix="$sysroot" \ + --disable-timidity \ + --disable-mt32emu + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} From bf291a5e4017d6400d39848f98d98a20b660c257 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Wed, 28 Nov 2018 03:12:30 +0100 Subject: [PATCH 0456/3180] Add openjazz recipe --- recipes/openjazz/recipe.sh | 43 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 recipes/openjazz/recipe.sh diff --git a/recipes/openjazz/recipe.sh b/recipes/openjazz/recipe.sh new file mode 100644 index 00000000..288bbf0f --- /dev/null +++ b/recipes/openjazz/recipe.sh @@ -0,0 +1,43 @@ +VERSION=0.1 +GIT=https://github.com/AlisterT/openjazz +BUILD_DEPENDS=(sdl liborbital zlib) + +export CFLAGS="-I$PWD/sysroot/include/ -I$PWD/sysroot/include/SDL/ -UUSE_SOCKETS -UUSE_SDL_NET" +export CPPFLAGS="$CFLAGS" +export LDFLAGS="-L$PWD/sysroot/lib/" + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + touch INSTALL NEWS README AUTHORS ChangeLog COPYING + autoreconf -fvi + autoconf + wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + ./configure --host=${HOST} --prefix='' + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} From 9a78a52ca09c831130b87641dc9bd8d5d8324f9b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 28 Nov 2018 07:55:15 -0700 Subject: [PATCH 0457/3180] Use absolute path for build sysroot --- recipes/gcc/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index b1240458..9380d079 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -20,7 +20,7 @@ function recipe_build { cp config.sub mpfr/config.sub cp -f config.sub mpc/config.sub - sysroot="${PWD}/../sysroot" + sysroot="$(realpath "${PWD}/../sysroot")" mkdir -p "$sysroot/usr" ln -sf "$sysroot/include" "$sysroot/usr/include" ln -sf "$sysroot/lib" "$sysroot/usr/lib" From b3c6dbcd91d6b04795c02c2b95757ef9344d813e Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Thu, 29 Nov 2018 02:39:18 +0100 Subject: [PATCH 0458/3180] Add sopwith recipe --- recipes/sopwith/recipe.sh | 40 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 recipes/sopwith/recipe.sh diff --git a/recipes/sopwith/recipe.sh b/recipes/sopwith/recipe.sh new file mode 100644 index 00000000..9f75db60 --- /dev/null +++ b/recipes/sopwith/recipe.sh @@ -0,0 +1,40 @@ +VERSION=1.8.4 +TAR=https://sourceforge.net/projects/sdl-sopwith/files/sdl_sopwith/$VERSION/sopwith-$VERSION.tar.gz +BUILD_DEPENDS=(sdl liborbital libiconv) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + wget -O autotools/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + sysroot="${PWD}/../sysroot" + export CFLAGS="-I$sysroot/include -I$sysroot/include/SDL" + export LDFLAGS="-L$sysroot/lib" + + ./configure --host=${HOST} --prefix='' --with-sdl-prefix="$sysroot" + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} From 3ccc94cb1ad78e5e725f3ae38575bf0bd8c75ba9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 2 Dec 2018 14:24:06 -0700 Subject: [PATCH 0459/3180] Update git patch to use null: in sanitize_stdfs --- recipes/git/git.patch | 103 ++++++++++++++++++++++++------------------ 1 file changed, 60 insertions(+), 43 deletions(-) diff --git a/recipes/git/git.patch b/recipes/git/git.patch index 53892c99..edb99f23 100644 --- a/recipes/git/git.patch +++ b/recipes/git/git.patch @@ -1,6 +1,6 @@ diff -ru source/builtin/log.c source-new/builtin/log.c ---- source/builtin/log.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/builtin/log.c 2017-08-15 13:29:42.346302539 -0700 +--- source/builtin/log.c 2017-06-04 19:08:11.000000000 -0600 ++++ source-new/builtin/log.c 2018-12-02 14:18:59.800197927 -0700 @@ -308,6 +308,7 @@ static void setup_early_output(struct rev_info *rev) @@ -18,8 +18,8 @@ diff -ru source/builtin/log.c source-new/builtin/log.c static void finish_early_output(struct rev_info *rev) diff -ru source/common-main.c source-new/common-main.c ---- source/common-main.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/common-main.c 2017-08-15 13:29:42.346302539 -0700 +--- source/common-main.c 2017-06-04 19:08:11.000000000 -0600 ++++ source-new/common-main.c 2018-12-02 14:18:59.800197927 -0700 @@ -15,12 +15,14 @@ */ static void restore_sigpipe_to_default(void) @@ -36,8 +36,8 @@ diff -ru source/common-main.c source-new/common-main.c int main(int argc, const char **argv) diff -ru source/compat/hstrerror.c source-new/compat/hstrerror.c ---- source/compat/hstrerror.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/compat/hstrerror.c 2017-08-15 13:29:42.346302539 -0700 +--- source/compat/hstrerror.c 2017-06-04 19:08:11.000000000 -0600 ++++ source-new/compat/hstrerror.c 2018-12-02 14:18:59.800197927 -0700 @@ -5,17 +5,6 @@ const char *githstrerror(int err) { @@ -57,8 +57,8 @@ diff -ru source/compat/hstrerror.c source-new/compat/hstrerror.c return buffer; } diff -ru source/compat/poll/poll.c source-new/compat/poll/poll.c ---- source/compat/poll/poll.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/compat/poll/poll.c 2017-08-15 13:29:42.346302539 -0700 +--- source/compat/poll/poll.c 2017-06-04 19:08:11.000000000 -0600 ++++ source-new/compat/poll/poll.c 2018-12-02 14:18:59.800197927 -0700 @@ -302,7 +302,7 @@ happened |= (POLLIN | POLLRDNORM) & sought; @@ -69,8 +69,8 @@ diff -ru source/compat/poll/poll.c source-new/compat/poll/poll.c happened |= POLLHUP; diff -ru source/compat/terminal.c source-new/compat/terminal.c ---- source/compat/terminal.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/compat/terminal.c 2017-08-15 13:29:42.349635894 -0700 +--- source/compat/terminal.c 2017-06-04 19:08:11.000000000 -0600 ++++ source-new/compat/terminal.c 2018-12-02 14:18:59.800197927 -0700 @@ -3,7 +3,9 @@ #include "sigchain.h" #include "strbuf.h" @@ -95,8 +95,8 @@ diff -ru source/compat/terminal.c source-new/compat/terminal.c #endif diff -ru source/config.c source-new/config.c ---- source/config.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/config.c 2017-08-15 13:29:42.349635894 -0700 +--- source/config.c 2017-06-04 19:08:11.000000000 -0600 ++++ source-new/config.c 2018-12-02 14:18:59.800197927 -0700 @@ -1094,7 +1094,7 @@ } @@ -107,8 +107,8 @@ diff -ru source/config.c source-new/config.c /* This value must be multiple of (pagesize * 2) */ diff -ru source/connect.c source-new/connect.c ---- source/connect.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/connect.c 2017-08-15 13:29:42.349635894 -0700 +--- source/connect.c 2017-06-04 19:08:11.000000000 -0600 ++++ source-new/connect.c 2018-12-02 14:18:59.800197927 -0700 @@ -450,14 +450,11 @@ he = gethostbyname(host); @@ -136,8 +136,8 @@ diff -ru source/connect.c source-new/connect.c diff -ru source/credential-cache--daemon.c source-new/credential-cache--daemon.c ---- source/credential-cache--daemon.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/credential-cache--daemon.c 2017-08-15 13:29:42.349635894 -0700 +--- source/credential-cache--daemon.c 2017-06-04 19:08:11.000000000 -0600 ++++ source-new/credential-cache--daemon.c 2018-12-02 14:18:59.800197927 -0700 @@ -156,6 +156,7 @@ strbuf_release(&action); } @@ -173,8 +173,8 @@ diff -ru source/credential-cache--daemon.c source-new/credential-cache--daemon.c return 0; } diff -ru source/daemon.c source-new/daemon.c ---- source/daemon.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/daemon.c 2017-08-15 13:30:19.439876374 -0700 +--- source/daemon.c 2017-06-04 19:08:11.000000000 -0600 ++++ source-new/daemon.c 2018-12-02 14:18:59.804197591 -0700 @@ -71,6 +71,7 @@ return hi->ip_address.buf; } @@ -309,8 +309,8 @@ diff -ru source/daemon.c source-new/daemon.c } else /* avoid splitting a message in the middle */ diff -ru source/dir.c source-new/dir.c ---- source/dir.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/dir.c 2017-08-15 13:29:42.352969248 -0700 +--- source/dir.c 2017-06-04 19:08:11.000000000 -0600 ++++ source-new/dir.c 2018-12-02 14:18:59.804197591 -0700 @@ -1891,14 +1891,14 @@ static const char *get_ident_string(void) { @@ -331,8 +331,8 @@ diff -ru source/dir.c source-new/dir.c } diff -ru source/fast-import.c source-new/fast-import.c ---- source/fast-import.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/fast-import.c 2017-08-15 13:29:42.352969248 -0700 +--- source/fast-import.c 2017-06-04 19:08:11.000000000 -0600 ++++ source-new/fast-import.c 2018-12-02 14:18:59.804197591 -0700 @@ -531,6 +531,7 @@ static void set_checkpoint_signal(void) @@ -350,8 +350,8 @@ diff -ru source/fast-import.c source-new/fast-import.c #endif diff -ru source/git-compat-util.h source-new/git-compat-util.h ---- source/git-compat-util.h 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/git-compat-util.h 2017-08-15 13:29:42.356302602 -0700 +--- source/git-compat-util.h 2017-06-04 19:08:11.000000000 -0600 ++++ source-new/git-compat-util.h 2018-12-02 14:18:59.804197591 -0700 @@ -179,7 +179,6 @@ #include #include @@ -402,8 +402,8 @@ diff -ru source/git-compat-util.h source-new/git-compat-util.h + #endif diff -ru source/Makefile source-new/Makefile ---- source/Makefile 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/Makefile 2017-08-15 13:29:42.356302602 -0700 +--- source/Makefile 2017-06-04 19:08:11.000000000 -0600 ++++ source-new/Makefile 2018-12-02 14:18:59.804197591 -0700 @@ -1802,7 +1802,6 @@ $(BUILT_INS): git$X @@ -444,8 +444,8 @@ diff -ru source/Makefile source-new/Makefile cp "$$execdir/git-remote-http$X" "$$execdir/$$p" || exit; \ done && \ diff -ru source/progress.c source-new/progress.c ---- source/progress.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/progress.c 2017-08-15 13:29:42.356302602 -0700 +--- source/progress.c 2017-06-04 19:08:11.000000000 -0600 ++++ source-new/progress.c 2018-12-02 14:18:59.804197591 -0700 @@ -52,11 +52,13 @@ progress_update = 0; @@ -471,8 +471,8 @@ diff -ru source/progress.c source-new/progress.c static int display(struct progress *progress, unsigned n, const char *done) diff -ru source/rerere.c source-new/rerere.c ---- source/rerere.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/rerere.c 2017-08-15 13:29:42.356302602 -0700 +--- source/rerere.c 2017-06-04 19:08:11.000000000 -0600 ++++ source-new/rerere.c 2018-12-02 14:18:59.804197591 -0700 @@ -682,7 +682,7 @@ * A successful replay of recorded resolution. * Mark that "postimage" was used to help gc. @@ -483,8 +483,8 @@ diff -ru source/rerere.c source-new/rerere.c rerere_path(id, "postimage")); diff -ru source/run-command.c source-new/run-command.c ---- source/run-command.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/run-command.c 2017-08-15 13:29:42.359635956 -0700 +--- source/run-command.c 2017-06-04 19:08:11.000000000 -0600 ++++ source-new/run-command.c 2018-12-02 14:18:59.804197591 -0700 @@ -138,7 +138,7 @@ return NULL; @@ -495,8 +495,8 @@ diff -ru source/run-command.c source-new/run-command.c strbuf_reset(&buf); diff -ru source/send-pack.c source-new/send-pack.c ---- source/send-pack.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/send-pack.c 2017-08-15 13:29:42.359635956 -0700 +--- source/send-pack.c 2017-06-04 19:08:11.000000000 -0600 ++++ source-new/send-pack.c 2018-12-02 14:18:59.804197591 -0700 @@ -570,7 +570,7 @@ if (args->stateless_rpc) close(out); @@ -507,9 +507,26 @@ diff -ru source/send-pack.c source-new/send-pack.c /* * Do not even bother with the return value; we know we diff -ru source/setup.c source-new/setup.c ---- source/setup.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/setup.c 2017-08-15 13:29:42.359635956 -0700 -@@ -1157,7 +1157,7 @@ +--- source/setup.c 2017-06-04 19:08:11.000000000 -0600 ++++ source-new/setup.c 2018-12-02 14:19:36.749210959 -0700 +@@ -1143,21 +1143,21 @@ + return read_gitfile_gently(suspect, return_error_code); + } + +-/* if any standard file descriptor is missing open it to /dev/null */ ++/* if any standard file descriptor is missing open it to null: */ + void sanitize_stdfds(void) + { +- int fd = open("/dev/null", O_RDWR, 0); ++ int fd = open("null:", O_RDWR, 0); + while (fd != -1 && fd < 2) + fd = dup(fd); + if (fd == -1) +- die_errno("open /dev/null or dup failed"); ++ die_errno("open null: or dup failed"); + if (fd > 2) + close(fd); + } int daemonize(void) { @@ -519,8 +536,8 @@ diff -ru source/setup.c source-new/setup.c return -1; #else diff -ru source/sha1_file.c source-new/sha1_file.c ---- source/sha1_file.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/sha1_file.c 2017-08-15 13:29:42.359635956 -0700 +--- source/sha1_file.c 2017-06-04 19:08:11.000000000 -0600 ++++ source-new/sha1_file.c 2018-12-02 14:18:59.824195916 -0700 @@ -723,7 +723,7 @@ "pack_report: getpagesize() = %10" SZ_FMT "\n" "pack_report: core.packedGitWindowSize = %10" SZ_FMT "\n" @@ -531,8 +548,8 @@ diff -ru source/sha1_file.c source-new/sha1_file.c sz_fmt(packed_git_limit)); fprintf(stderr, diff -ru source/strbuf.c source-new/strbuf.c ---- source/strbuf.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/strbuf.c 2017-08-15 13:29:42.359635956 -0700 +--- source/strbuf.c 2017-06-04 19:08:11.000000000 -0600 ++++ source-new/strbuf.c 2018-12-02 14:18:59.824195916 -0700 @@ -446,6 +446,11 @@ for (;; guessed_len *= 2) { strbuf_grow(sb, guessed_len); @@ -546,8 +563,8 @@ diff -ru source/strbuf.c source-new/strbuf.c return 0; } diff -ru source/wrapper.c source-new/wrapper.c ---- source/wrapper.c 2017-06-04 18:08:11.000000000 -0700 -+++ source-new/wrapper.c 2017-08-15 13:29:42.359635956 -0700 +--- source/wrapper.c 2017-06-04 19:08:11.000000000 -0600 ++++ source-new/wrapper.c 2018-12-02 14:18:59.824195916 -0700 @@ -227,6 +227,7 @@ } } From 10234adf0c0344790f8be8c9e60f07edbe9f3796 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 2 Dec 2018 16:08:32 -0700 Subject: [PATCH 0460/3180] Replace another instance of /dev/null in git --- recipes/git/git.patch | 54 ++++++++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/recipes/git/git.patch b/recipes/git/git.patch index edb99f23..1bce1495 100644 --- a/recipes/git/git.patch +++ b/recipes/git/git.patch @@ -1,6 +1,6 @@ diff -ru source/builtin/log.c source-new/builtin/log.c --- source/builtin/log.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/builtin/log.c 2018-12-02 14:18:59.800197927 -0700 ++++ source-new/builtin/log.c 2018-12-02 16:07:24.784757087 -0700 @@ -308,6 +308,7 @@ static void setup_early_output(struct rev_info *rev) @@ -19,7 +19,7 @@ diff -ru source/builtin/log.c source-new/builtin/log.c static void finish_early_output(struct rev_info *rev) diff -ru source/common-main.c source-new/common-main.c --- source/common-main.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/common-main.c 2018-12-02 14:18:59.800197927 -0700 ++++ source-new/common-main.c 2018-12-02 16:07:24.784757087 -0700 @@ -15,12 +15,14 @@ */ static void restore_sigpipe_to_default(void) @@ -37,7 +37,7 @@ diff -ru source/common-main.c source-new/common-main.c int main(int argc, const char **argv) diff -ru source/compat/hstrerror.c source-new/compat/hstrerror.c --- source/compat/hstrerror.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/compat/hstrerror.c 2018-12-02 14:18:59.800197927 -0700 ++++ source-new/compat/hstrerror.c 2018-12-02 16:07:24.784757087 -0700 @@ -5,17 +5,6 @@ const char *githstrerror(int err) { @@ -58,7 +58,7 @@ diff -ru source/compat/hstrerror.c source-new/compat/hstrerror.c } diff -ru source/compat/poll/poll.c source-new/compat/poll/poll.c --- source/compat/poll/poll.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/compat/poll/poll.c 2018-12-02 14:18:59.800197927 -0700 ++++ source-new/compat/poll/poll.c 2018-12-02 16:07:24.784757087 -0700 @@ -302,7 +302,7 @@ happened |= (POLLIN | POLLRDNORM) & sought; @@ -70,7 +70,7 @@ diff -ru source/compat/poll/poll.c source-new/compat/poll/poll.c diff -ru source/compat/terminal.c source-new/compat/terminal.c --- source/compat/terminal.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/compat/terminal.c 2018-12-02 14:18:59.800197927 -0700 ++++ source-new/compat/terminal.c 2018-12-02 16:07:24.784757087 -0700 @@ -3,7 +3,9 @@ #include "sigchain.h" #include "strbuf.h" @@ -96,7 +96,7 @@ diff -ru source/compat/terminal.c source-new/compat/terminal.c #endif diff -ru source/config.c source-new/config.c --- source/config.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/config.c 2018-12-02 14:18:59.800197927 -0700 ++++ source-new/config.c 2018-12-02 16:07:24.788757117 -0700 @@ -1094,7 +1094,7 @@ } @@ -108,7 +108,7 @@ diff -ru source/config.c source-new/config.c /* This value must be multiple of (pagesize * 2) */ diff -ru source/connect.c source-new/connect.c --- source/connect.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/connect.c 2018-12-02 14:18:59.800197927 -0700 ++++ source-new/connect.c 2018-12-02 16:07:24.788757117 -0700 @@ -450,14 +450,11 @@ he = gethostbyname(host); @@ -137,7 +137,7 @@ diff -ru source/connect.c source-new/connect.c diff -ru source/credential-cache--daemon.c source-new/credential-cache--daemon.c --- source/credential-cache--daemon.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/credential-cache--daemon.c 2018-12-02 14:18:59.800197927 -0700 ++++ source-new/credential-cache--daemon.c 2018-12-02 16:07:24.788757117 -0700 @@ -156,6 +156,7 @@ strbuf_release(&action); } @@ -174,7 +174,7 @@ diff -ru source/credential-cache--daemon.c source-new/credential-cache--daemon.c } diff -ru source/daemon.c source-new/daemon.c --- source/daemon.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/daemon.c 2018-12-02 14:18:59.804197591 -0700 ++++ source-new/daemon.c 2018-12-02 16:07:24.788757117 -0700 @@ -71,6 +71,7 @@ return hi->ip_address.buf; } @@ -310,7 +310,7 @@ diff -ru source/daemon.c source-new/daemon.c /* avoid splitting a message in the middle */ diff -ru source/dir.c source-new/dir.c --- source/dir.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/dir.c 2018-12-02 14:18:59.804197591 -0700 ++++ source-new/dir.c 2018-12-02 16:07:24.788757117 -0700 @@ -1891,14 +1891,14 @@ static const char *get_ident_string(void) { @@ -332,7 +332,7 @@ diff -ru source/dir.c source-new/dir.c diff -ru source/fast-import.c source-new/fast-import.c --- source/fast-import.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/fast-import.c 2018-12-02 14:18:59.804197591 -0700 ++++ source-new/fast-import.c 2018-12-02 16:07:24.788757117 -0700 @@ -531,6 +531,7 @@ static void set_checkpoint_signal(void) @@ -351,7 +351,7 @@ diff -ru source/fast-import.c source-new/fast-import.c #endif diff -ru source/git-compat-util.h source-new/git-compat-util.h --- source/git-compat-util.h 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/git-compat-util.h 2018-12-02 14:18:59.804197591 -0700 ++++ source-new/git-compat-util.h 2018-12-02 16:07:24.788757117 -0700 @@ -179,7 +179,6 @@ #include #include @@ -403,7 +403,7 @@ diff -ru source/git-compat-util.h source-new/git-compat-util.h #endif diff -ru source/Makefile source-new/Makefile --- source/Makefile 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/Makefile 2018-12-02 14:18:59.804197591 -0700 ++++ source-new/Makefile 2018-12-02 16:07:24.788757117 -0700 @@ -1802,7 +1802,6 @@ $(BUILT_INS): git$X @@ -445,7 +445,7 @@ diff -ru source/Makefile source-new/Makefile done && \ diff -ru source/progress.c source-new/progress.c --- source/progress.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/progress.c 2018-12-02 14:18:59.804197591 -0700 ++++ source-new/progress.c 2018-12-02 16:07:24.788757117 -0700 @@ -52,11 +52,13 @@ progress_update = 0; @@ -472,7 +472,7 @@ diff -ru source/progress.c source-new/progress.c static int display(struct progress *progress, unsigned n, const char *done) diff -ru source/rerere.c source-new/rerere.c --- source/rerere.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/rerere.c 2018-12-02 14:18:59.804197591 -0700 ++++ source-new/rerere.c 2018-12-02 16:07:24.788757117 -0700 @@ -682,7 +682,7 @@ * A successful replay of recorded resolution. * Mark that "postimage" was used to help gc. @@ -484,7 +484,19 @@ diff -ru source/rerere.c source-new/rerere.c diff -ru source/run-command.c source-new/run-command.c --- source/run-command.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/run-command.c 2018-12-02 14:18:59.804197591 -0700 ++++ source-new/run-command.c 2018-12-02 16:07:55.100993213 -0700 +@@ -120,9 +120,9 @@ + #ifndef GIT_WINDOWS_NATIVE + static inline void dup_devnull(int to) + { +- int fd = open("/dev/null", O_RDWR); ++ int fd = open("null:", O_RDWR); + if (fd < 0) +- die_errno(_("open /dev/null failed")); ++ die_errno(_("open null: failed")); + if (dup2(fd, to) < 0) + die_errno(_("dup2(%d,%d) failed"), fd, to); + close(fd); @@ -138,7 +138,7 @@ return NULL; @@ -496,7 +508,7 @@ diff -ru source/run-command.c source-new/run-command.c diff -ru source/send-pack.c source-new/send-pack.c --- source/send-pack.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/send-pack.c 2018-12-02 14:18:59.804197591 -0700 ++++ source-new/send-pack.c 2018-12-02 16:07:24.788757117 -0700 @@ -570,7 +570,7 @@ if (args->stateless_rpc) close(out); @@ -508,7 +520,7 @@ diff -ru source/send-pack.c source-new/send-pack.c * Do not even bother with the return value; we know we diff -ru source/setup.c source-new/setup.c --- source/setup.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/setup.c 2018-12-02 14:19:36.749210959 -0700 ++++ source-new/setup.c 2018-12-02 16:07:24.788757117 -0700 @@ -1143,21 +1143,21 @@ return read_gitfile_gently(suspect, return_error_code); } @@ -537,7 +549,7 @@ diff -ru source/setup.c source-new/setup.c #else diff -ru source/sha1_file.c source-new/sha1_file.c --- source/sha1_file.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/sha1_file.c 2018-12-02 14:18:59.824195916 -0700 ++++ source-new/sha1_file.c 2018-12-02 16:07:24.792757146 -0700 @@ -723,7 +723,7 @@ "pack_report: getpagesize() = %10" SZ_FMT "\n" "pack_report: core.packedGitWindowSize = %10" SZ_FMT "\n" @@ -549,7 +561,7 @@ diff -ru source/sha1_file.c source-new/sha1_file.c fprintf(stderr, diff -ru source/strbuf.c source-new/strbuf.c --- source/strbuf.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/strbuf.c 2018-12-02 14:18:59.824195916 -0700 ++++ source-new/strbuf.c 2018-12-02 16:07:24.792757146 -0700 @@ -446,6 +446,11 @@ for (;; guessed_len *= 2) { strbuf_grow(sb, guessed_len); @@ -564,7 +576,7 @@ diff -ru source/strbuf.c source-new/strbuf.c } diff -ru source/wrapper.c source-new/wrapper.c --- source/wrapper.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/wrapper.c 2018-12-02 14:18:59.824195916 -0700 ++++ source-new/wrapper.c 2018-12-02 16:07:24.792757146 -0700 @@ -227,6 +227,7 @@ } } From ea13ffeefa617e628f70ac4cb78f7ec0c6858a81 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Mon, 3 Dec 2018 02:40:21 +0100 Subject: [PATCH 0461/3180] Add patch for openjazz --- recipes/openjazz/01_redox.patch | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 recipes/openjazz/01_redox.patch diff --git a/recipes/openjazz/01_redox.patch b/recipes/openjazz/01_redox.patch new file mode 100644 index 00000000..605dae0b --- /dev/null +++ b/recipes/openjazz/01_redox.patch @@ -0,0 +1,12 @@ +diff -rupNw source-original/src/io/gfx/video.cpp source/src/io/gfx/video.cpp +--- source-original/src/io/gfx/video.cpp 2018-12-03 01:26:03.479047234 +0100 ++++ source/src/io/gfx/video.cpp 2018-12-02 21:50:10.650021649 +0100 +@@ -516,7 +516,7 @@ void Video::flip (int mspf, PaletteEffec + } + + // Show what has been drawn +- SDL_Flip(screen); ++ SDL_UpdateRect(screen, 0, 0, screen->w, screen->h); + + return; + From 5391551561259e25a1b79af57d8a382c20474253 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 2 Dec 2018 19:50:30 -0700 Subject: [PATCH 0462/3180] Make all make calls parallel --- recipes/autoconf/recipe.sh | 2 +- recipes/automake/recipe.sh | 4 ++-- recipes/bash/recipe.sh | 2 +- recipes/cmatrix/recipe.sh | 2 +- recipes/curl/recipe.sh | 2 +- recipes/dash/recipe.sh | 2 +- recipes/diffutils/recipe.sh | 2 +- recipes/dosbox/recipe.sh | 4 ++-- recipes/duktape/recipe.sh | 2 +- recipes/ffmpeg/recipe.sh | 2 +- recipes/freetype/recipe.sh | 2 +- recipes/gawk/recipe.sh | 2 +- recipes/gigalomania/recipe.sh | 2 +- recipes/git/recipe.sh | 2 +- recipes/gnu-binutils/recipe.sh | 2 +- recipes/gnu-grep/recipe.sh | 2 +- recipes/gnu-make/recipe.sh | 2 +- recipes/jansson/recipe.sh | 2 +- recipes/libiconv/recipe.sh | 2 +- recipes/libjpeg/recipe.sh | 2 +- recipes/libpng/recipe.sh | 2 +- recipes/libsodium/recipe.sh | 2 +- recipes/lua/recipe.sh | 2 +- recipes/mdp/recipe.sh | 3 +-- recipes/nasm/recipe.sh | 2 +- recipes/ncdu/recipe.sh | 2 +- recipes/ncurses/recipe.sh | 2 +- recipes/ncursesw/recipe.sh | 2 +- recipes/netsurf/recipe.sh | 3 +-- recipes/newlib/recipe.sh | 2 +- recipes/newlibtest/recipe.sh | 3 +-- recipes/openjazz/recipe.sh | 2 +- recipes/openttd/recipe.sh | 2 +- recipes/patch/recipe.sh | 2 +- recipes/perl/recipe.sh | 2 +- recipes/prboom/recipe.sh | 2 +- recipes/python/recipe.sh | 2 +- recipes/readline/recipe.sh | 2 +- recipes/relibc/recipe.sh | 4 ++-- recipes/scummvm/recipe.sh | 2 +- recipes/sdl/recipe.sh | 2 +- recipes/sdl_image/recipe.sh | 6 +++--- recipes/sdl_mixer/recipe.sh | 4 ++-- recipes/sed/recipe.sh | 2 +- recipes/ssh/recipe.sh | 2 +- recipes/timidity/recipe.sh | 2 +- recipes/vim/recipe.sh | 2 +- recipes/vttest/recipe.sh | 2 +- recipes/xz/recipe.sh | 2 +- 49 files changed, 55 insertions(+), 58 deletions(-) diff --git a/recipes/autoconf/recipe.sh b/recipes/autoconf/recipe.sh index bc214475..0d1447d8 100644 --- a/recipes/autoconf/recipe.sh +++ b/recipes/autoconf/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --host=${HOST} --prefix='' - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/automake/recipe.sh b/recipes/automake/recipe.sh index 0384cc65..d35d4771 100644 --- a/recipes/automake/recipe.sh +++ b/recipes/automake/recipe.sh @@ -15,9 +15,9 @@ function recipe_build { wget -O lib/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub sed -i 's|.*/doc/help2man.*|\&\& true|' Makefile.in sed -i 's|install-info-am install-man|install-info-am|' Makefile.in - + ./configure --host=${HOST} --prefix='' - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/bash/recipe.sh b/recipes/bash/recipe.sh index e473b930..c9e8672a 100644 --- a/recipes/bash/recipe.sh +++ b/recipes/bash/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { wget -O support/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --host=${HOST} --prefix=/ --disable-readline - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/cmatrix/recipe.sh b/recipes/cmatrix/recipe.sh index 4e3722c6..0d001a95 100644 --- a/recipes/cmatrix/recipe.sh +++ b/recipes/cmatrix/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" ./configure --host=${HOST} --prefix=/ --without-fonts - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/curl/recipe.sh b/recipes/curl/recipe.sh index 6e292418..71f896e4 100644 --- a/recipes/curl/recipe.sh +++ b/recipes/curl/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub autoreconf -i ./configure --prefix=/ --host=${HOST} --disable-tftp --disable-ftp --disable-ntlm-wb --disable-threaded-resolver --with-zlib="$PWD/../sysroot" --with-ssl="$PWD/../sysroot" --with-ca-path=/ssl/certs - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/dash/recipe.sh b/recipes/dash/recipe.sh index 36f27244..8a98fb4f 100644 --- a/recipes/dash/recipe.sh +++ b/recipes/dash/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { ./autogen.sh ./configure --host=${HOST} --prefix=/ - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/diffutils/recipe.sh b/recipes/diffutils/recipe.sh index ea089587..0b57376f 100644 --- a/recipes/diffutils/recipe.sh +++ b/recipes/diffutils/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { autoreconf ./configure --host=${HOST} --prefix=/ - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/dosbox/recipe.sh b/recipes/dosbox/recipe.sh index c058a76e..974f5187 100644 --- a/recipes/dosbox/recipe.sh +++ b/recipes/dosbox/recipe.sh @@ -20,7 +20,7 @@ function recipe_build { ./autogen.sh wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --host=${HOST} --prefix='' --disable-opengl --disable-sdltest --with-sdl-prefix="$PWD/../sysroot" - make + make -j"$(nproc)" skip=1 } @@ -38,4 +38,4 @@ function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install skip=1 -} +} diff --git a/recipes/duktape/recipe.sh b/recipes/duktape/recipe.sh index 65a70a6c..632e9430 100644 --- a/recipes/duktape/recipe.sh +++ b/recipes/duktape/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { function recipe_build { sed -i "s/= gcc/= $TARGET-gcc/g" Makefile.cmdline - make -f Makefile.cmdline + make -f Makefile.cmdline -j"$(nproc)" skip=1 } diff --git a/recipes/ffmpeg/recipe.sh b/recipes/ffmpeg/recipe.sh index 18ed8d92..28b266bc 100644 --- a/recipes/ffmpeg/recipe.sh +++ b/recipes/ffmpeg/recipe.sh @@ -27,7 +27,7 @@ function recipe_build { --enable-zlib \ --enable-encoder=png \ --enable-decoder=png - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/freetype/recipe.sh b/recipes/freetype/recipe.sh index f9befb6b..78bd7cd9 100644 --- a/recipes/freetype/recipe.sh +++ b/recipes/freetype/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { export CPPFLAGS="-I$sysroot/include" ./configure --host=${HOST} --prefix='/' - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/gawk/recipe.sh b/recipes/gawk/recipe.sh index a5142056..27de5694 100644 --- a/recipes/gawk/recipe.sh +++ b/recipes/gawk/recipe.sh @@ -9,7 +9,7 @@ function recipe_update { function recipe_build { ./configure --host=${HOST} --prefix=/ ac_cv_func_gethostbyname=no ac_cv_func_connect=no - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/gigalomania/recipe.sh b/recipes/gigalomania/recipe.sh index 2bc90793..aecdd715 100644 --- a/recipes/gigalomania/recipe.sh +++ b/recipes/gigalomania/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { sysroot="${PWD}/../sysroot" export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" - make all + make all -j"$(nproc)" skip=1 } diff --git a/recipes/git/recipe.sh b/recipes/git/recipe.sh index 6469d57e..b004bd8e 100644 --- a/recipes/git/recipe.sh +++ b/recipes/git/recipe.sh @@ -20,7 +20,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" ./configure --host=${HOST} --prefix=/ ac_cv_fread_reads_directories=yes ac_cv_snprintf_returns_bogus=yes ac_cv_lib_curl_curl_global_init=yes CURL_CONFIG=no - make ${MAKEFLAGS} + make ${MAKEFLAGS} -j"$(nproc)" skip=1 } diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh index 868fe008..fb651298 100644 --- a/recipes/gnu-binutils/recipe.sh +++ b/recipes/gnu-binutils/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { ln -sf "$sysroot/include" "$sysroot/usr/include" ln -sf "$sysroot/lib" "$sysroot/usr/lib" ./configure --host=${HOST} --target=${HOST} --prefix=/ --with-sysroot=/ --with-build-sysroot="$sysroot" --disable-gdb --disable-nls --disable-werror - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/gnu-grep/recipe.sh b/recipes/gnu-grep/recipe.sh index 258c3020..3cf87f25 100644 --- a/recipes/gnu-grep/recipe.sh +++ b/recipes/gnu-grep/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { function recipe_build { ./configure --host=${HOST} --prefix=/ - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/gnu-make/recipe.sh b/recipes/gnu-make/recipe.sh index 45548c9a..7040db16 100644 --- a/recipes/gnu-make/recipe.sh +++ b/recipes/gnu-make/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { function recipe_build { ./configure --host=${HOST} --prefix=/ CFLAGS="-DPOSIX -DNO_ARCHIVES -DNO_OUTPUT_SYNC" --without-guile - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/jansson/recipe.sh b/recipes/jansson/recipe.sh index e79db327..a89e9caa 100644 --- a/recipes/jansson/recipe.sh +++ b/recipes/jansson/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" ./configure --host=${HOST} --prefix=/ - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/libiconv/recipe.sh b/recipes/libiconv/recipe.sh index 580e0444..71f90b2c 100644 --- a/recipes/libiconv/recipe.sh +++ b/recipes/libiconv/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { function recipe_build { ./configure --host=${HOST} --prefix='/' --disable-shared --enable-static - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/libjpeg/recipe.sh b/recipes/libjpeg/recipe.sh index fda7d87a..b3361c51 100644 --- a/recipes/libjpeg/recipe.sh +++ b/recipes/libjpeg/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { function recipe_build { ./configure --host=${HOST} --prefix='/' - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/libpng/recipe.sh b/recipes/libpng/recipe.sh index b065df99..c3ccbb91 100644 --- a/recipes/libpng/recipe.sh +++ b/recipes/libpng/recipe.sh @@ -21,7 +21,7 @@ function recipe_build { chmod +w config.sub wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --host=${HOST} --prefix='/' - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/libsodium/recipe.sh b/recipes/libsodium/recipe.sh index a6cc951e..b5166077 100644 --- a/recipes/libsodium/recipe.sh +++ b/recipes/libsodium/recipe.sh @@ -15,7 +15,7 @@ function recipe_build { # Disclaimer: No idea what I'm doing ./autogen.sh ./configure --host=${HOST} --prefix='/' - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/lua/recipe.sh b/recipes/lua/recipe.sh index 543b08c8..a24d9c08 100644 --- a/recipes/lua/recipe.sh +++ b/recipes/lua/recipe.sh @@ -12,7 +12,7 @@ function recipe_update { } function recipe_build { - make generic CC="${HOST}-gcc -std=gnu99" + make generic CC="${HOST}-gcc -std=gnu99" -j"$(nproc)" skip=1 } diff --git a/recipes/mdp/recipe.sh b/recipes/mdp/recipe.sh index 91fd7812..e3a9b834 100644 --- a/recipes/mdp/recipe.sh +++ b/recipes/mdp/recipe.sh @@ -16,8 +16,7 @@ function recipe_build { sysroot="${PWD}/../sysroot" export CFLAGS="-I$sysroot/include -I$sysroot/include/ncursesw" export LDFLAGS="-L$sysroot/lib" - - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/nasm/recipe.sh b/recipes/nasm/recipe.sh index 66c5f9d7..46150a34 100644 --- a/recipes/nasm/recipe.sh +++ b/recipes/nasm/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { function recipe_build { ./configure --host=${HOST} --prefix="" - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/ncdu/recipe.sh b/recipes/ncdu/recipe.sh index 46131850..26a9a8bb 100644 --- a/recipes/ncdu/recipe.sh +++ b/recipes/ncdu/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { ./configure \ --build x86_64-pc-linux-gnu \ --host "$HOST" - make + make -j"$(nproc)" skip=1 } function recipe_test { diff --git a/recipes/ncurses/recipe.sh b/recipes/ncurses/recipe.sh index c4e45dce..44ab1c74 100644 --- a/recipes/ncurses/recipe.sh +++ b/recipes/ncurses/recipe.sh @@ -15,7 +15,7 @@ function recipe_update { function recipe_build { export CPPFLAGS="-P" ./configure --host=${HOST} --prefix="" --disable-db-install --without-ada - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/ncursesw/recipe.sh b/recipes/ncursesw/recipe.sh index 8f454dbe..3af5af5b 100644 --- a/recipes/ncursesw/recipe.sh +++ b/recipes/ncursesw/recipe.sh @@ -15,7 +15,7 @@ function recipe_update { function recipe_build { export CPPFLAGS="-P" ./configure --host=${HOST} --prefix="" --enable-widec --disable-db-install - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/netsurf/recipe.sh b/recipes/netsurf/recipe.sh index 19b3faca..e00cab21 100644 --- a/recipes/netsurf/recipe.sh +++ b/recipes/netsurf/recipe.sh @@ -18,8 +18,7 @@ function recipe_build { export TARGET="framebuffer" export CFLAGS="-I$sysroot/include -I${PWD}/inst-${TARGET}/include" export LDFLAGS="-L$sysroot/lib -L${PWD}/inst-${TARGET}/lib -Wl,--allow-multiple-definition" - - make V=1 + make V=1 -j"$(nproc)" skip=1 } diff --git a/recipes/newlib/recipe.sh b/recipes/newlib/recipe.sh index cb92eb32..979fb8cc 100644 --- a/recipes/newlib/recipe.sh +++ b/recipes/newlib/recipe.sh @@ -25,7 +25,7 @@ function recipe_build { popd CC= ./configure --target="${HOST}" --prefix=/ - make all + make all -j"$(nproc)" skip=1 } diff --git a/recipes/newlibtest/recipe.sh b/recipes/newlibtest/recipe.sh index 5c34bd42..237f08c1 100644 --- a/recipes/newlibtest/recipe.sh +++ b/recipes/newlibtest/recipe.sh @@ -16,8 +16,7 @@ function recipe_build { export CFLAGS="-static -nostdinc -I $sysroot/include -I /usr/lib/gcc/x86_64-unknown-redox/7.0.1/include/ -nostdlib -L $sysroot/lib" export CRT="$sysroot/lib/crt0.o" export CLIBS="-lc -lm" - - make all + make all -j"$(nproc)" skip=1 } diff --git a/recipes/openjazz/recipe.sh b/recipes/openjazz/recipe.sh index 288bbf0f..b051dec2 100644 --- a/recipes/openjazz/recipe.sh +++ b/recipes/openjazz/recipe.sh @@ -22,7 +22,7 @@ function recipe_build { autoconf wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --host=${HOST} --prefix='' - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/openttd/recipe.sh b/recipes/openttd/recipe.sh index 108cfeb8..42c838bf 100644 --- a/recipes/openttd/recipe.sh +++ b/recipes/openttd/recipe.sh @@ -15,7 +15,7 @@ function recipe_update { function recipe_build { ./configure --build=`gcc -dumpmachine` --host=${HOST} --prefix='' --enable-static --without-liblzo2 --disable-network --without-threads - make VERBOSE=1 + make VERBOSE=1 -j"$(nproc)" skip=1 } diff --git a/recipes/patch/recipe.sh b/recipes/patch/recipe.sh index 3f54f7f3..52d8934d 100644 --- a/recipes/patch/recipe.sh +++ b/recipes/patch/recipe.sh @@ -15,7 +15,7 @@ function recipe_build { wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub autoreconf ./configure --host=${HOST} --prefix=/ - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/perl/recipe.sh b/recipes/perl/recipe.sh index 46568436..d2d41986 100644 --- a/recipes/perl/recipe.sh +++ b/recipes/perl/recipe.sh @@ -22,7 +22,7 @@ function recipe_build { sed -i "s/^#define Netdb_name_t.*/#define Netdb_name_t const char*/" config.h # XXX sed -i 's/#define Strerror(e).*$/#define Strerror(e) strerror(e)/' config.h # echo "#define HAS_VPRINTF" >> config.h - make LIBS=-lm + make LIBS=-lm -j"$(nproc)" skip=1 } diff --git a/recipes/prboom/recipe.sh b/recipes/prboom/recipe.sh index cf4ccb14..95ac1924 100644 --- a/recipes/prboom/recipe.sh +++ b/recipes/prboom/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { autoreconf -if wget -O autotools/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --prefix=/ --host=${HOST} --disable-sdltest --disable-cpu-opt --disable-gl --without-net --with-sdl-prefix="$PWD/../sysroot" - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/python/recipe.sh b/recipes/python/recipe.sh index 5c8ca112..3f3643db 100644 --- a/recipes/python/recipe.sh +++ b/recipes/python/recipe.sh @@ -16,7 +16,7 @@ function recipe_update { function recipe_build { cp ../config.site ./ ./configure --host=${HOST} --build=${ARCH} --prefix=/ - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/readline/recipe.sh b/recipes/readline/recipe.sh index 773901ce..665678bc 100644 --- a/recipes/readline/recipe.sh +++ b/recipes/readline/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" export CFLAGS="-I$sysroot/include" ./configure --disable-shared --host=${HOST} --prefix="" - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/relibc/recipe.sh b/recipes/relibc/recipe.sh index fe790d51..1807bcc9 100644 --- a/recipes/relibc/recipe.sh +++ b/recipes/relibc/recipe.sh @@ -1,8 +1,8 @@ GIT=https://gitlab.redox-os.org/redox-os/relibc.git function recipe_build { - make - make -C tests + make -j"$(nproc)" + make -C tests -j"$(nproc)" skip=1 } diff --git a/recipes/scummvm/recipe.sh b/recipes/scummvm/recipe.sh index d5f5ff08..bd573dad 100644 --- a/recipes/scummvm/recipe.sh +++ b/recipes/scummvm/recipe.sh @@ -25,7 +25,7 @@ function recipe_build { --with-zlib-prefix="$sysroot" \ --disable-timidity \ --disable-mt32emu - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/sdl/recipe.sh b/recipes/sdl/recipe.sh index 94eb69e4..433536b6 100644 --- a/recipes/sdl/recipe.sh +++ b/recipes/sdl/recipe.sh @@ -18,7 +18,7 @@ function recipe_update { function recipe_build { ./autogen.sh ./configure --prefix=/ --host=${HOST} --disable-shared --disable-pulseaudio --disable-video-x11 --disable-loadso --disable-threads --enable-audio --enable-dummyaudio --enable-video-orbital --enable-cdrom - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/sdl_image/recipe.sh b/recipes/sdl_image/recipe.sh index eb7a479d..ea07b351 100644 --- a/recipes/sdl_image/recipe.sh +++ b/recipes/sdl_image/recipe.sh @@ -18,7 +18,7 @@ function recipe_update { function recipe_build { ./autogen.sh ./configure --prefix=/ --host=${HOST} --disable-shared --disable-sdltest --enable-png --enable-jpg - make + make -j"$(nproc)" skip=1 } @@ -31,9 +31,9 @@ function recipe_clean { make clean skip=1 } - + function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install skip=1 -} \ No newline at end of file +} diff --git a/recipes/sdl_mixer/recipe.sh b/recipes/sdl_mixer/recipe.sh index 1e7cca34..b8a7338e 100644 --- a/recipes/sdl_mixer/recipe.sh +++ b/recipes/sdl_mixer/recipe.sh @@ -18,7 +18,7 @@ function recipe_update { function recipe_build { ./autogen.sh ./configure --prefix=/ --host=${HOST} --disable-shared --disable-sdltest --disable-music-cmd --disable-music-mp3 --disable-smpegtest - make + make -j"$(nproc)" skip=1 } @@ -36,4 +36,4 @@ function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install skip=1 -} \ No newline at end of file +} diff --git a/recipes/sed/recipe.sh b/recipes/sed/recipe.sh index dac91eb1..c1de0248 100644 --- a/recipes/sed/recipe.sh +++ b/recipes/sed/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { function recipe_build { ./configure --host=${HOST} --prefix=/ - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/ssh/recipe.sh b/recipes/ssh/recipe.sh index c69a2907..43ad7c67 100644 --- a/recipes/ssh/recipe.sh +++ b/recipes/ssh/recipe.sh @@ -31,7 +31,7 @@ function newlib_build { popd CC= ./configure --target="${HOST}" --prefix=/ - make all + make all -j"$(nproc)" make DESTDIR="$sysroot" install cd .. cp -r $sysroot/x86_64-unknown-redox/* $sysroot diff --git a/recipes/timidity/recipe.sh b/recipes/timidity/recipe.sh index fd9ba87c..bd905cd5 100644 --- a/recipes/timidity/recipe.sh +++ b/recipes/timidity/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { autoreconf -f -i wget -O autoconf/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --host=${HOST} --prefix='' --enable-vt100 - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/vim/recipe.sh b/recipes/vim/recipe.sh index 48a920e8..a0d0e686 100644 --- a/recipes/vim/recipe.sh +++ b/recipes/vim/recipe.sh @@ -24,7 +24,7 @@ function recipe_build { export vim_cv_stat_ignores_slash=no export vim_cv_memmove_handles_overlap=yes ./configure --host=${HOST} --prefix=/ --with-tlib=ncurses - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/vttest/recipe.sh b/recipes/vttest/recipe.sh index 9eaa3eca..59adc934 100644 --- a/recipes/vttest/recipe.sh +++ b/recipes/vttest/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --host=${HOST} --prefix='' - make + make -j"$(nproc)" skip=1 } diff --git a/recipes/xz/recipe.sh b/recipes/xz/recipe.sh index 25d2556a..0a643b03 100644 --- a/recipes/xz/recipe.sh +++ b/recipes/xz/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { chmod +w build-aux/config.sub wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --host=${HOST} --prefix=/ --enable-threads=no - make + make -j"$(nproc)" skip=1 } From 4e3915f7a895ce427ba057687ff2acc6242a61b6 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Tue, 4 Dec 2018 00:36:16 +0100 Subject: [PATCH 0463/3180] Add eduke32 recipe, fix sdl_mixer --- recipes/eduke32/01_redox.patch | 156 +++++++++++++++++++++++++++++++++ recipes/eduke32/recipe.sh | 41 +++++++++ recipes/sdl_mixer/recipe.sh | 2 +- 3 files changed, 198 insertions(+), 1 deletion(-) create mode 100644 recipes/eduke32/01_redox.patch create mode 100644 recipes/eduke32/recipe.sh diff --git a/recipes/eduke32/01_redox.patch b/recipes/eduke32/01_redox.patch new file mode 100644 index 00000000..e948345b --- /dev/null +++ b/recipes/eduke32/01_redox.patch @@ -0,0 +1,156 @@ +diff -rupNw source-original/Common.mak source/Common.mak +--- source-original/Common.mak 2018-07-14 23:36:44.000000000 +0200 ++++ source/Common.mak 2018-12-03 19:13:25.028864957 +0100 +@@ -93,7 +93,7 @@ endif + + ##### Makefile meta-settings + +-PRETTY_OUTPUT := 1 ++PRETTY_OUTPUT := 0 + + NULLSTREAM := /dev/null + +@@ -172,6 +172,10 @@ ifeq ($(PLATFORM),WII) + CCFULLPATH = $(DEVKITPPC)/bin/$(CC) + endif + ++ifeq ($(PLATFORM),REDOX) ++ CROSS := x86_64-unknown-redox- ++endif ++ + CC := $(CROSS)gcc$(CROSS_SUFFIX) + CXX := $(CROSS)g++$(CROSS_SUFFIX) + +@@ -383,6 +387,15 @@ else ifeq ($(PLATFORM),$(filter $(PLATFO + override NOASM := 1 + else ifeq ($(PLATFORM),$(filter $(PLATFORM),BEOS SKYOS)) + override NOASM := 1 ++else ifeq ($(PLATFORM),REDOX) ++ override USE_OPENGL := 0 ++ override NETCODE := 0 ++ override HAVE_GTK2 := 0 ++ override HAVE_FLAC := 0 ++ override HAVE_VORBIS := 0 ++ override HAVE_XMP := 0 ++ override MIXERTYPE := SDL ++ SDL_TARGET := 1 + endif + + ifneq (i386,$(strip $(IMPLICIT_ARCH))) +@@ -868,7 +881,7 @@ ifeq ($(RENDERTYPE),SDL) + SDLCONFIG := sdl2-config + SDLNAME := SDL2 + else ifeq ($(SDL_TARGET),1) +- SDLCONFIG := sdl-config ++ #SDLCONFIG := sdl-config + SDLNAME := SDL + ifeq (0,$(RELEASE)) + COMPILERFLAGS += -DNOSDLPARACHUTE +@@ -957,9 +970,11 @@ else ifeq ($(PLATFORM),WII) + LIBS += -laesnd_tueidj -lfat -lwiiuse -lbte -lwiikeyboard -logc + else ifeq ($(SUBPLATFORM),LINUX) + LIBS += -lrt ++else ifeq ($(PLATFORM),REDOX) ++ LIBS += -lorbital + endif + +-ifeq (,$(filter $(PLATFORM),WINDOWS WII)) ++ifeq (,$(filter $(PLATFORM),WINDOWS WII REDOX)) + ifneq ($(PLATFORM),BSD) + LIBS += -ldl + endif +diff -rupNw source-original/source/build/include/compat.h source/source/build/include/compat.h +--- source-original/source/build/include/compat.h 2018-10-07 07:21:24.000000000 +0200 ++++ source/source/build/include/compat.h 2018-12-03 19:26:54.393942393 +0100 +@@ -7,6 +7,9 @@ + + #pragma once + ++# define B_LITTLE_ENDIAN 1 ++# define B_BIG_ENDIAN 0 ++ + #ifdef _WIN32 + # include "windows_inc.h" + #endif +@@ -400,6 +403,7 @@ defined __x86_64__ || defined __amd64__ + #include + #include + #include ++#include + + #include + #include +@@ -542,8 +546,8 @@ typedef FILE BFILE; + # define BS_IWRITE S_IWUSR + # define BS_IREAD S_IRUSR + #else +-# define BS_IWRITE S_IWRITE +-# define BS_IREAD S_IREAD ++# define BS_IWRITE S_IWUSR ++# define BS_IREAD S_IRUSR + #endif + + #if defined(__cplusplus) && defined(_MSC_VER) +diff -rupNw source-original/source/build/src/baselayer.cpp source/source/build/src/baselayer.cpp +--- source-original/source/build/src/baselayer.cpp 2018-10-07 07:21:43.000000000 +0200 ++++ source/source/build/src/baselayer.cpp 2018-12-03 19:21:47.982397954 +0100 +@@ -498,7 +498,7 @@ int32_t baselayer_init(void) + + void maybe_redirect_outputs(void) + { +-#if !(defined __APPLE__ && defined __BIG_ENDIAN__) ++#if 0 + char *argp; + + // pipe standard outputs to files +diff -rupNw source-original/source/build/src/sdlayer.cpp source/source/build/src/sdlayer.cpp +--- source-original/source/build/src/sdlayer.cpp 2018-10-07 07:23:44.000000000 +0200 ++++ source/source/build/src/sdlayer.cpp 2018-12-03 19:24:07.239998594 +0100 +@@ -305,7 +305,7 @@ void wm_setapptitle(const char *name) + // + + /* XXX: libexecinfo could be used on systems without gnu libc. */ +-#if !defined _WIN32 && defined __GNUC__ && !defined __OpenBSD__ && !(defined __APPLE__ && defined __BIG_ENDIAN__) && !defined GEKKO && !defined EDUKE32_TOUCH_DEVICES && !defined __OPENDINGUX__ ++#if 0 + # define PRINTSTACKONSEGV 1 + # include + #endif +diff -rupNw source-original/source/duke3d/src/common.cpp source/source/duke3d/src/common.cpp +--- source-original/source/duke3d/src/common.cpp 2018-10-07 07:20:23.000000000 +0200 ++++ source/source/duke3d/src/common.cpp 2018-12-03 19:34:09.893848178 +0100 +@@ -1173,6 +1173,7 @@ int32_t S_OpenAudio(const char *fn, char + Bfree(testfn); + return origfp; + } ++#endif + + void Duke_CommonCleanup(void) + { +@@ -1181,4 +1182,3 @@ void Duke_CommonCleanup(void) + DO_FREE_AND_NULL(g_rtsNamePtr); + } + +-#endif +diff -rupNw source-original/source/duke3d/src/game.cpp source/source/duke3d/src/game.cpp +--- source-original/source/duke3d/src/game.cpp 2018-10-07 07:23:48.000000000 +0200 ++++ source/source/duke3d/src/game.cpp 2018-12-03 19:18:30.728171279 +0100 +@@ -6697,7 +6697,7 @@ MAIN_LOOP_RESTART: + static char buf[128]; + #ifndef GEKKO + int32_t flag = 1; +- ioctl(0, FIONBIO, &flag); ++ //ioctl(0, FIONBIO, &flag); + #endif + if ((nb = read(0, &ch, 1)) > 0 && bufpos < sizeof(buf)) + { +diff -rupNw source-original/source/enet/include/enet/unix.h source/source/enet/include/enet/unix.h +--- source-original/source/enet/include/enet/unix.h 2014-06-17 01:16:08.000000000 +0200 ++++ source/source/enet/include/enet/unix.h 2018-12-03 19:17:06.295237252 +0100 +@@ -6,6 +6,7 @@ + #define __ENET_UNIX_H__ + + #include ++#include + #include + #include + #if defined(GEKKO) diff --git a/recipes/eduke32/recipe.sh b/recipes/eduke32/recipe.sh new file mode 100644 index 00000000..426eb715 --- /dev/null +++ b/recipes/eduke32/recipe.sh @@ -0,0 +1,41 @@ +VERSION=20181010-7067 +TAR=https://dukeworld.com/eduke32/synthesis/$VERSION/eduke32_src_$VERSION.tar.xz +BUILD_DEPENDS=(sdl sdl_mixer liborbital libiconv) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="${PWD}/../sysroot" + export LDFLAGS="-L$sysroot/lib" + export CFLAGS="-I$sysroot/include -I$sysroot/include/SDL" + export SDLCONFIG="$sysroot/bin/sdl-config" + + PLATFORM=REDOX make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + mkdir -pv "$1/games" + cp ./eduke32 "$1/games/eduke32" + cp ./mapster32 "$1/games/mapster32" + skip=1 +} diff --git a/recipes/sdl_mixer/recipe.sh b/recipes/sdl_mixer/recipe.sh index b8a7338e..9ae3444a 100644 --- a/recipes/sdl_mixer/recipe.sh +++ b/recipes/sdl_mixer/recipe.sh @@ -17,7 +17,7 @@ function recipe_update { function recipe_build { ./autogen.sh - ./configure --prefix=/ --host=${HOST} --disable-shared --disable-sdltest --disable-music-cmd --disable-music-mp3 --disable-smpegtest + ./configure --prefix=/ --host=${HOST} --disable-shared --disable-sdltest --disable-music-cmd --disable-music-mp3 --disable-smpegtest --disable-music-midi --disable-music-mod make -j"$(nproc)" skip=1 } From 5818775f9eeded44a95bec90dc4055f6e0ccf80d Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Thu, 6 Dec 2018 02:37:42 +0100 Subject: [PATCH 0464/3180] scummvm: Disable audio by dropping audio streams --- recipes/scummvm/01_redox.patch | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/recipes/scummvm/01_redox.patch b/recipes/scummvm/01_redox.patch index 47e55dc2..04d44149 100644 --- a/recipes/scummvm/01_redox.patch +++ b/recipes/scummvm/01_redox.patch @@ -1,6 +1,20 @@ +diff -rupNw source-original/audio/mixer.cpp source/audio/mixer.cpp +--- source-original/audio/mixer.cpp 2017-12-08 23:21:10.000000000 +0100 ++++ source/audio/mixer.cpp 2018-12-06 02:03:37.151198853 +0100 +@@ -237,7 +237,9 @@ void MixerImpl::playStream( + } + + +- assert(_mixerReady); ++ if (autofreeStream == DisposeAfterUse::YES) ++ delete stream; ++ return; + + // Prevent duplicate sounds + if (id != -1) { diff -rupNw source-original/common/stream.cpp source/common/stream.cpp --- source-original/common/stream.cpp 2017-12-08 23:21:10.000000000 +0100 -+++ source/common/stream.cpp 2018-11-28 00:36:53.474637267 +0100 ++++ source/common/stream.cpp 2018-12-06 02:01:50.454108198 +0100 @@ -95,7 +95,7 @@ bool MemoryReadStream::seek(int32 offs, break; } @@ -12,7 +26,7 @@ diff -rupNw source-original/common/stream.cpp source/common/stream.cpp _eos = false; diff -rupNw source-original/configure source/configure --- source-original/configure 2017-12-08 23:21:13.000000000 +0100 -+++ source/configure 2018-11-28 00:35:33.000000000 +0100 ++++ source/configure 2018-12-06 02:01:50.458108239 +0100 @@ -3610,7 +3610,7 @@ case $_host_os in amigaos* | cygwin* | dreamcast | ds | gamecube | mingw* | n64 | ps2 | ps3 | psp2 | psp | wii | wince) _posix=no From 0efbbce598c73f079f292733421649fadddd81f4 Mon Sep 17 00:00:00 2001 From: fabiao Date: Thu, 6 Dec 2018 14:33:14 +0100 Subject: [PATCH 0465/3180] gigalomania moved to patched repository --- recipes/gigalomania/01_makefile.patch | 99 ---------------------- recipes/gigalomania/02_stdafx.patch | 9 -- recipes/gigalomania/03_image.patch | 11 --- recipes/gigalomania/04_sound.patch | 11 --- recipes/gigalomania/05_game.patch | 11 --- recipes/gigalomania/06_game_cpp.patch | 73 ---------------- recipes/gigalomania/07_gamestate_cpp.patch | 20 ----- recipes/gigalomania/recipe.sh | 2 +- 8 files changed, 1 insertion(+), 235 deletions(-) delete mode 100644 recipes/gigalomania/01_makefile.patch delete mode 100644 recipes/gigalomania/02_stdafx.patch delete mode 100644 recipes/gigalomania/03_image.patch delete mode 100644 recipes/gigalomania/04_sound.patch delete mode 100644 recipes/gigalomania/05_game.patch delete mode 100644 recipes/gigalomania/06_game_cpp.patch delete mode 100644 recipes/gigalomania/07_gamestate_cpp.patch diff --git a/recipes/gigalomania/01_makefile.patch b/recipes/gigalomania/01_makefile.patch deleted file mode 100644 index b887da26..00000000 --- a/recipes/gigalomania/01_makefile.patch +++ /dev/null @@ -1,99 +0,0 @@ ---- source/Makefile 2018-05-28 10:13:03.737049078 +0200 -+++ build/Makefile 2018-05-28 11:23:29.808994973 +0200 -@@ -1,13 +1,14 @@ --CC=g++ -+CC=$(CPPHOST) - CCFLAGS=-O2 -Wall - CFILES=game.cpp gamestate.cpp gui.cpp image.cpp main.cpp panel.cpp player.cpp resources.cpp screen.cpp sector.cpp sound.cpp tutorial.cpp utils.cpp TinyXML/tinyxml.cpp TinyXML/tinyxmlerror.cpp TinyXML/tinyxmlparser.cpp - HFILES=game.h gamestate.h gui.h image.h panel.h player.h resources.h screen.h sector.h sound.h tutorial.h utils.h common.h stdafx.h TinyXML/tinyxml.h - OFILES=game.o gamestate.o gui.o image.o panel.o player.o resources.o screen.o sector.o sound.o tutorial.o utils.o main.o TinyXML/tinyxml.o TinyXML/tinyxmlerror.o TinyXML/tinyxmlparser.o - APP=gigalomania --INC=`sdl2-config --cflags` --LINKPATH=`sdl2-config --libs` -L/usr/X11R6/lib/ -L/usr/lib -+INC=$(CPPFLAGS) -+LINKPATH=$(LDFLAGS) -+GAMEPATH="/games/gigalomania" - --LIBS=-lSDL2_image -lSDL2_mixer -+LIBS=-lSDL_mixer -lSDL_image -ljpeg -lpng -lSDL -lorbital -lz - - all: $(APP) - -@@ -19,69 +20,16 @@ - - # REMEMBER to update debian/dirs if the system directories that we use are changed!!! - install: $(APP) -- mkdir -p $(DESTDIR)/opt/gigalomania # -p so we don't fail if folder already exists -- cp $(APP) $(DESTDIR)/opt/gigalomania -- cp readme.html $(DESTDIR)/opt/gigalomania -- cp -a gfx/ $(DESTDIR)/opt/gigalomania # -a need to copy permissions etc -- cp -a islands/ $(DESTDIR)/opt/gigalomania -- cp -a music/ $(DESTDIR)/opt/gigalomania -- cp -a sound/ $(DESTDIR)/opt/gigalomania -- # needed for DESTDIR option: -- mkdir -p $(DESTDIR)/usr/share/applications -- cp gigalomania.desktop $(DESTDIR)/usr/share/applications/ -- #cp gigalomania_fullscreen.desktop $(DESTDIR)/usr/share/applications/ -- # needed for DESTDIR option: -- mkdir -p $(DESTDIR)/usr/share/pixmaps -- cp gigalomania64.png $(DESTDIR)/usr/share/pixmaps/ --# REMEMBER to update debian/dirs if the system directories that we use are changed!!! -+ mkdir -p $(DESTDIR)$(GAMEPATH) # -p so we don't fail if folder already exists -+ cp $(APP) $(DESTDIR)$(GAMEPATH) -+ cp readme.html $(DESTDIR)$(GAMEPATH) -+ cp -a gfx/ $(DESTDIR)$(GAMEPATH) -+ cp -a islands/ $(DESTDIR)$(GAMEPATH) -+ cp -a music/ $(DESTDIR)$(GAMEPATH) -+ cp -a sound/ $(DESTDIR)$(GAMEPATH) - - uninstall: -- rm -rf $(DESTDIR)/opt/gigalomania # -f so we don't fail if folder doesn't exist -- rm -f $(DESTDIR)/usr/share/applications/gigalomania.desktop -- #rm -f $(DESTDIR)/usr/share/applications/gigalomania_fullscreen.desktop -- rm -f $(DESTDIR)/usr/share/pixmaps/gigalomania64.png -- --install_maemo: $(APP) -- mkdir -p $(DESTDIR)/opt/gigalomania # -p so we don't fail if folder already exists -- cp $(APP) $(DESTDIR)/opt/gigalomania -- cp -a gfx/ $(DESTDIR)/opt/gigalomania # -a need to copy permissions etc -- cp -a islands/ $(DESTDIR)/opt/gigalomania -- cp -a music/ $(DESTDIR)/opt/gigalomania -- cp -a sound/ $(DESTDIR)/opt/gigalomania -- mkdir -p $(DESTDIR)/usr/share/applications/hildon/ -- cp gigalomania_maemo.desktop $(DESTDIR)/usr/share/applications/hildon/ -- mkdir -p $(DESTDIR)/usr/share/pixmaps -- cp gigalomania48.png $(DESTDIR)/usr/share/pixmaps/ -- chmod a+x gigalomania_mobile.sh # workaround for permissions not set in zip file! -- mkdir -p $(DESTDIR)/usr/bin/ -- cp gigalomania_mobile.sh $(DESTDIR)/usr/bin/gigalomania_mobile.sh -- --uninstall_maemo: -- rm -rf $(DESTDIR)/opt/gigalomania # -f so we don't fail if folder doesn't exist -- rm -f $(DESTDIR)/usr/share/applications/hildon/gigalomania_maemo.desktop -- rm -f $(DESTDIR)/usr/share/pixmaps/gigalomania48.png -- rm -f $(DESTDIR)/usr/bin/gigalomania_mobile.sh -- --install_meego: $(APP) -- mkdir -p $(DESTDIR)/opt/gigalomania # -p so we don't fail if folder already exists -- cp $(APP) $(DESTDIR)/opt/gigalomania -- cp -a gfx/ $(DESTDIR)/opt/gigalomania # -a need to copy permissions etc -- cp -a islands/ $(DESTDIR)/opt/gigalomania -- cp -a music/ $(DESTDIR)/opt/gigalomania -- cp -a sound/ $(DESTDIR)/opt/gigalomania -- mkdir -p $(DESTDIR)/usr/share/applications -- cp gigalomania_maemo.desktop $(DESTDIR)/usr/share/applications/ -- mkdir -p $(DESTDIR)/usr/share/icons/hicolor/48x48/apps/ -- cp gigalomania48.png $(DESTDIR)/usr/share/icons/hicolor/48x48/apps/ -- chmod a+x gigalomania_mobile.sh # workaround for permissions not set in zip file! -- mkdir -p $(DESTDIR)/usr/bin/ -- cp gigalomania_mobile.sh $(DESTDIR)/usr/bin/gigalomania_mobile.sh -- --uninstall_meego: -- rm -rf $(DESTDIR)/opt/gigalomania # -f so we don't fail if folder doesn't exist -- rm -f $(DESTDIR)/usr/share/applications/gigalomania_maemo.desktop -- rm -f $(DESTDIR)/usr/share/icons/hicolor/48x48/apps/gigalomania48.png -- rm -f $(DESTDIR)/usr/bin/gigalomania_mobile.sh -+ rm -rf $(DESTDIR)$(GAMEPATH) - - clean: - rm -rf *.o diff --git a/recipes/gigalomania/02_stdafx.patch b/recipes/gigalomania/02_stdafx.patch deleted file mode 100644 index b7d21cf4..00000000 --- a/recipes/gigalomania/02_stdafx.patch +++ /dev/null @@ -1,9 +0,0 @@ ---- source/stdafx.h 2018-06-17 18:09:41.729534046 +0200 -+++ build/stdafx.h 2018-06-17 18:18:54.353160159 +0200 -@@ -20,5 +20,5 @@ - #elif defined(__MORPHOS__) - #include - #else --#include -+#include - #endif diff --git a/recipes/gigalomania/03_image.patch b/recipes/gigalomania/03_image.patch deleted file mode 100644 index 7bf5a1d0..00000000 --- a/recipes/gigalomania/03_image.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- source/image.h 2018-06-17 18:09:41.601543849 +0200 -+++ build/image.h 2018-06-17 18:23:39.379455831 +0200 -@@ -14,7 +14,7 @@ - #elif defined(__MORPHOS__) - #include - #else --#include -+#include - #endif - - const int font_index_period_c = 26; diff --git a/recipes/gigalomania/04_sound.patch b/recipes/gigalomania/04_sound.patch deleted file mode 100644 index 44f4aa6a..00000000 --- a/recipes/gigalomania/04_sound.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- source/sound.h 2018-06-17 18:09:41.681537723 +0200 -+++ build/sound.h 2018-06-17 18:34:51.659424313 +0200 -@@ -13,7 +13,7 @@ - #elif defined(__linux) - #include - #else --#include -+#include - #endif - - bool initSound(); diff --git a/recipes/gigalomania/05_game.patch b/recipes/gigalomania/05_game.patch deleted file mode 100644 index 12c7b845..00000000 --- a/recipes/gigalomania/05_game.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- source/game.h 2018-06-17 18:09:41.545548138 +0200 -+++ build/game.h 2018-06-17 18:26:27.573161256 +0200 -@@ -530,7 +530,7 @@ - void startNewGame_g(); - - // DATADIR is place to look if data not present in application's folder --//#define DATADIR "C:/temp/glmdata" // test on Windows -+#define DATADIR "/games/gigalomania" // test on Windows - - extern string maps_dirname; - #ifdef DATADIR diff --git a/recipes/gigalomania/06_game_cpp.patch b/recipes/gigalomania/06_game_cpp.patch deleted file mode 100644 index 714b7846..00000000 --- a/recipes/gigalomania/06_game_cpp.patch +++ /dev/null @@ -1,73 +0,0 @@ ---- source/game.cpp 2018-06-17 18:09:41.545548000 +0200 -+++ build/game.cpp 2018-06-17 20:06:47.516838000 +0200 -@@ -2900,8 +2900,8 @@ - - #if SDL_MAJOR_VERSION == 1 - const SDL_VideoInfo *videoInfo = SDL_GetVideoInfo(); -- *user_width = videoInfo->current_w; -- *user_height = videoInfo->current_h; -+ *user_width = 640;//videoInfo->current_w; -+ *user_height = 480;//videoInfo->current_h; - LOG("desktop is %d x %d\n", *user_width, *user_height); - #else - SDL_DisplayMode displayMode; -@@ -2942,11 +2942,11 @@ - //user_width = 1184; - //user_height = 720; - -- if( user_width >= 4*default_width_c ) { -+ /*if( user_width >= 4*default_width_c ) { - scale_width = 4.0f; - LOG("scale width 4x\n"); - } -- else if( user_width >= 3*default_width_c ) { -+ else*/ if( user_width >= 3*default_width_c ) { - scale_width = 3.0f; - LOG("scale width 3x\n"); - } -@@ -2963,11 +2963,11 @@ - return false; - } - -- if( user_height >= 4*default_height_c ) { -+ /*if( user_height >= 4*default_height_c ) { - scale_height = 4.0f; - LOG("scale height 4x\n"); - } -- else if( user_height >= 3*default_height_c ) { -+ else*/ if( user_height >= 3*default_height_c ) { - scale_height = 3.0f; - LOG("scale height 3x\n"); - } -@@ -3022,11 +3022,11 @@ - screen = new Gigalomania::Screen(); - - #if SDL_MAJOR_VERSION == 1 -- if( screen->open(4*default_width_c, 4*default_height_c, fullscreen) ) { -+ /*if( screen->open(4*default_width_c, 4*default_height_c, fullscreen) ) { - scale_width = scale_height = 4.0f; - LOG("scale 4x\n"); - } -- else if( screen->open(3*default_width_c, 3*default_height_c, fullscreen) ) { -+ else*/ if( screen->open(3*default_width_c, 3*default_height_c, fullscreen) ) { - scale_width = scale_height = 3.0f; - LOG("scale 3x\n"); - } -@@ -3636,7 +3636,7 @@ - } - - //bool quit = false; --bool debugwindow = false; -+bool debugwindow = true; - - void Game::requestQuit(bool force_quit) { - if( !state_changed ) { -@@ -5243,7 +5243,7 @@ - debugwindow = true; - #endif - -- bool fullscreen = true; -+ bool fullscreen = false; - #if defined(__amigaos4__) || defined(AROS) || defined(__MORPHOS__) - fullscreen = false; // run in windowed mode due to reported performance problems in fullscreen mode on AmigaOS 4; also randomly hangs on AROS in fullscreen mode; also included MorphOS just to be safe - #endif diff --git a/recipes/gigalomania/07_gamestate_cpp.patch b/recipes/gigalomania/07_gamestate_cpp.patch deleted file mode 100644 index 858d76cc..00000000 --- a/recipes/gigalomania/07_gamestate_cpp.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- source/gamestate.cpp 2018-06-17 18:09:41.549547831 +0200 -+++ build/gamestate.cpp 2018-06-17 18:31:22.793844378 +0200 -@@ -1429,7 +1429,7 @@ - - void GameState::fadeScreen(bool out, int delay, void (*func_finish)()) { - if( fade != NULL ) -- delete fade; -+ { delete fade; } - if( game_g->isTesting() ) { - if( func_finish != NULL ) { - func_finish(); -@@ -1443,7 +1443,7 @@ - void GameState::whiteFlash() { - //ASSERT( whitefade == NULL ); - if( whitefade != NULL ) -- delete whitefade; -+ { delete whitefade; } - if( !game_g->isTesting() ) { - whitefade = new FadeEffect(true, false, 0, NULL); - } diff --git a/recipes/gigalomania/recipe.sh b/recipes/gigalomania/recipe.sh index aecdd715..e1f02003 100644 --- a/recipes/gigalomania/recipe.sh +++ b/recipes/gigalomania/recipe.sh @@ -1,5 +1,5 @@ VERSION=0.27 -GIT=https://git.code.sf.net/p/gigalomania/code +GIT=https://github.com/fabiao/gigalomania BRANCH=master BUILD_DEPENDS=(sdl_mixer sdl_image sdl liborbital libpng libjpeg zlib) From ebd50fffb489f2f040fa7e6ea5f34613527a35c5 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Sun, 9 Dec 2018 00:15:57 +0100 Subject: [PATCH 0466/3180] freetype: Fix the incorrect libpng libtool archive paths --- recipes/freetype/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/freetype/recipe.sh b/recipes/freetype/recipe.sh index 78bd7cd9..ce2cc9a2 100644 --- a/recipes/freetype/recipe.sh +++ b/recipes/freetype/recipe.sh @@ -35,5 +35,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install + sed -i -e "s%//lib/libpng16.la%$dest/../sysroot/lib/libpng16.la%" "$dest/lib/libfreetype.la" skip=1 } From 2820faedb726bfccb3a5ac7d74e114e64f201133 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Sun, 9 Dec 2018 00:16:28 +0100 Subject: [PATCH 0467/3180] Add sdl_gfx recipe --- recipes/sdl_gfx/recipe.sh | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 recipes/sdl_gfx/recipe.sh diff --git a/recipes/sdl_gfx/recipe.sh b/recipes/sdl_gfx/recipe.sh new file mode 100644 index 00000000..1392fbe8 --- /dev/null +++ b/recipes/sdl_gfx/recipe.sh @@ -0,0 +1,39 @@ +VERSION=2.0.25 +TAR=https://sourceforge.net/projects/sdlgfx/files/SDL_gfx-$VERSION.tar.gz +BUILD_DEPENDS=(sdl liborbital libiconv) + +export CFLAGS="-I$PWD/sysroot/include/" +export LDFLAGS="-L$PWD/sysroot/lib/" + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + ./autogen.sh + ./configure --prefix=/ --host=${HOST} --disable-shared --disable-sdltest + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} From 3665dcb944582406bb7bfb47b646c13aa410df58 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Sun, 9 Dec 2018 00:17:07 +0100 Subject: [PATCH 0468/3180] Add sdl_ttf recipe --- recipes/sdl_ttf/01_redox.patch | 12 ++++++++++ recipes/sdl_ttf/recipe.sh | 43 ++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 recipes/sdl_ttf/01_redox.patch create mode 100644 recipes/sdl_ttf/recipe.sh diff --git a/recipes/sdl_ttf/01_redox.patch b/recipes/sdl_ttf/01_redox.patch new file mode 100644 index 00000000..9366f51c --- /dev/null +++ b/recipes/sdl_ttf/01_redox.patch @@ -0,0 +1,12 @@ +diff -rupNw source-original/config.sub source/config.sub +--- source-original/config.sub 2012-01-19 07:30:05.000000000 +0100 ++++ source/config.sub 2018-05-01 17:31:52.766229515 +0200 +@@ -1276,7 +1276,7 @@ case $os in + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ +- | -kopensolaris* \ ++ | -kopensolaris* | -redox* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ \ No newline at end of file diff --git a/recipes/sdl_ttf/recipe.sh b/recipes/sdl_ttf/recipe.sh new file mode 100644 index 00000000..14e082a8 --- /dev/null +++ b/recipes/sdl_ttf/recipe.sh @@ -0,0 +1,43 @@ +VERSION=2.0.11 +TAR=https://www.libsdl.org/projects/SDL_ttf/release/SDL_ttf-$VERSION.tar.gz +BUILD_DEPENDS=(sdl liborbital freetype libpng zlib) + +export CFLAGS="-I$PWD/sysroot/include/ -I$PWD/sysroot/include/freetype2/" +export LDFLAGS="-L$PWD/sysroot/lib/" + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="${PWD}/../sysroot" + export SDL_CONFIG="$sysroot/bin/sdl-config" + export FREETYPE_CONFIG="$sysroot/bin/freetype-config" + + ./autogen.sh + ./configure --prefix=/ --host=${HOST} --disable-shared --disable-sdltest + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} From b197c1b849b49d20dc5cb44410bd18c3d25a16f9 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Sun, 9 Dec 2018 00:17:32 +0100 Subject: [PATCH 0469/3180] Add syobonaction recipe --- recipes/syobonaction/01_redox.patch | 64 +++++++++++++++++++++++++++++ recipes/syobonaction/recipe.sh | 44 ++++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 recipes/syobonaction/01_redox.patch create mode 100644 recipes/syobonaction/recipe.sh diff --git a/recipes/syobonaction/01_redox.patch b/recipes/syobonaction/01_redox.patch new file mode 100644 index 00000000..718fae80 --- /dev/null +++ b/recipes/syobonaction/01_redox.patch @@ -0,0 +1,64 @@ +diff -rupNw source-original/DxLib.cpp source/DxLib.cpp +--- source-original/DxLib.cpp 2018-12-08 19:59:16.777579338 +0100 ++++ source/DxLib.cpp 2018-12-08 02:13:39.541585079 +0100 +@@ -24,7 +24,7 @@ int DxLib_Init() + return -1; + } + +- SDL_WM_SetCaption("Syobon Action (しょぼんのアクション)", ++ SDL_WM_SetCaption("Syobon Action", + NULL); + SDL_ShowCursor(SDL_DISABLE); + +diff -rupNw source-original/DxLib.h source/DxLib.h +--- source-original/DxLib.h 2018-12-08 19:59:16.777579338 +0100 ++++ source/DxLib.h 2018-12-08 01:26:50.763357641 +0100 +@@ -18,7 +18,7 @@ + #define FALSE 0 + #define byte unsigned char + +-#define ScreenFlip() SDL_Flip(screen) ++#define ScreenFlip() SDL_UpdateRect(screen, 0, 0, screen->w, screen->h) + #define GetNowCount() SDL_GetTicks() + + //UNIMPLEMENTED - macro substitution +diff -rupNw source-original/main.cpp source/main.cpp +--- source-original/main.cpp 2018-12-08 19:59:16.781579399 +0100 ++++ source/main.cpp 2018-12-08 18:11:33.716589712 +0100 +@@ -1,9 +1,11 @@ + #include "main.h" ++#include + + // プログラムは WinMain から始まります + //Changed to ansi c++ main() + int main(int argc, char *argv[]) + { ++ chdir("file:/share/syobonaction/"); + parseArgs(argc, argv); + if (DxLib_Init() == -1) + return 1; +@@ -4706,7 +4708,7 @@ void deinit() + setc0(); + FillScreen(); + DrawString(200, 200, "EXITING...", GetColor(255, 255, 255)); +- SDL_Flip(screen); ++ SDL_UpdateRect(screen, 0, 0, screen->w, screen->h); + + //SURFACES + for (t = 0; t < 51; t++) +diff -rupNw source-original/Makefile source/Makefile +--- source-original/Makefile 2018-12-08 19:59:16.777579338 +0100 ++++ source/Makefile 2018-12-08 01:32:40.319685337 +0100 +@@ -1,8 +1,8 @@ + SyobonAction:main.o loadg.o DxLib.o +- gcc main.o loadg.o DxLib.o -o SyobonAction `sdl-config --libs` -lSDL_gfx -lSDL_image -lSDL_mixer -lSDL_ttf ++ ${CXX} ${LDFLAGS} main.o loadg.o DxLib.o -o SyobonAction `${SDL_CONFIG} --libs` -lSDL_gfx -lSDL_image -lSDL_mixer -lpng -ljpeg -lz -lSDL -lSDL_ttf -lfreetype + main.o:main.cpp +- gcc -c main.cpp ++ ${CXX} ${CPPFLAGS} -c main.cpp + loadg.o:loadg.cpp +- gcc -c loadg.cpp ++ ${CXX} ${CPPFLAGS} -c loadg.cpp + DxLib.o:DxLib.cpp +- gcc -c DxLib.cpp ++ ${CXX} ${CPPFLAGS} -c DxLib.cpp diff --git a/recipes/syobonaction/recipe.sh b/recipes/syobonaction/recipe.sh new file mode 100644 index 00000000..73243465 --- /dev/null +++ b/recipes/syobonaction/recipe.sh @@ -0,0 +1,44 @@ +VERSION=1.0-rc3 +GIT=https://github.com/angelXwind/OpenSyobonAction +BUILD_DEPENDS=(sdl liborbital sdl_mixer sdl_image sdl_gfx sdl_ttf freetype libjpeg libpng zlib) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="${PWD}/../sysroot" + export SDL_CONFIG="$sysroot/bin/sdl-config" + export CPPFLAGS="-I$sysroot/include -I$sysroot/include/SDL" + export LDFLAGS="-L$sysroot/lib" + + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + mkdir -pv "$1/bin" + mkdir -pv "$1/share/syobonaction" + cp -Rv ./SyobonAction "$1/bin/syobonaction" + cp -Rv ./BGM "$1/share/syobonaction" + cp -Rv ./res "$1/share/syobonaction" + cp -Rv ./SE "$1/share/syobonaction" + skip=1 +} From b0b19c94950e174dc3d0c4d4a434102f3b24bff6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 9 Dec 2018 13:35:08 -0700 Subject: [PATCH 0470/3180] Add mesa recipe --- recipes/mesa/recipe.sh | 48 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 recipes/mesa/recipe.sh diff --git a/recipes/mesa/recipe.sh b/recipes/mesa/recipe.sh new file mode 100644 index 00000000..34cb8cf2 --- /dev/null +++ b/recipes/mesa/recipe.sh @@ -0,0 +1,48 @@ +GIT=https://gitlab.redox-os.org/redox-os/mesa.git +GIT_UPSTREAM=git://anongit.freedesktop.org/mesa/mesa +BUILD_DEPENDS=(expat zlib) + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + #NOCONFIGURE=1 ./autogen.sh + sysroot="${PWD}/../sysroot" + export CFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1" + export CPPFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1" + export LDFLAGS="-L$sysroot/lib" + EXPAT_LIBS="-lexpat" EXPAT_CFLAGS="." \ + ./configure --host=${HOST} --prefix=/ \ + --disable-gles1 \ + --disable-gles2 \ + --disable-dri \ + --disable-dri3 \ + --disable-glx \ + --disable-egl \ + --disable-driglx-direct \ + --disable-gbm \ + --disable-llvm \ + --enable-gallium-osmesa \ + --with-gallium-drivers=swrast \ + --with-platforms=surfaceless + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} From 1d86c9b760e4f7019563ce68692e8e89a0e1b1c9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 9 Dec 2018 14:22:39 -0700 Subject: [PATCH 0471/3180] Enable more features --- recipes/mesa/recipe.sh | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/recipes/mesa/recipe.sh b/recipes/mesa/recipe.sh index 34cb8cf2..95a740ac 100644 --- a/recipes/mesa/recipe.sh +++ b/recipes/mesa/recipe.sh @@ -8,20 +8,18 @@ function recipe_update { } function recipe_build { - #NOCONFIGURE=1 ./autogen.sh + NOCONFIGURE=1 ./autogen.sh sysroot="${PWD}/../sysroot" export CFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1" export CPPFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1" export LDFLAGS="-L$sysroot/lib" EXPAT_LIBS="-lexpat" EXPAT_CFLAGS="." \ - ./configure --host=${HOST} --prefix=/ \ - --disable-gles1 \ - --disable-gles2 \ + ./configure --host="${HOST}" --prefix=/ \ --disable-dri \ --disable-dri3 \ - --disable-glx \ - --disable-egl \ --disable-driglx-direct \ + --disable-egl \ + --disable-glx \ --disable-gbm \ --disable-llvm \ --enable-gallium-osmesa \ From 4b3a6d2d348171aabb0dba1afc438918b587015e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 9 Dec 2018 15:29:20 -0700 Subject: [PATCH 0472/3180] Add glu recipe --- recipes/mesa/recipe.sh | 1 + recipes/mesa_glu/recipe.sh | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 recipes/mesa_glu/recipe.sh diff --git a/recipes/mesa/recipe.sh b/recipes/mesa/recipe.sh index 95a740ac..7910e84d 100644 --- a/recipes/mesa/recipe.sh +++ b/recipes/mesa/recipe.sh @@ -42,5 +42,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install + sed -i -e "s%//lib/libglapi.la%$dest/lib/libglapi.la%" "$dest/lib/"*.la skip=1 } diff --git a/recipes/mesa_glu/recipe.sh b/recipes/mesa_glu/recipe.sh new file mode 100644 index 00000000..6589a17d --- /dev/null +++ b/recipes/mesa_glu/recipe.sh @@ -0,0 +1,34 @@ +TAR=ftp://ftp.freedesktop.org/pub/mesa/glu/glu-9.0.0.tar.bz2 +BUILD_DEPENDS=(mesa) + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + sysroot="${PWD}/../sysroot" + export CFLAGS="-I$sysroot/include" + export CPPFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib" + ./configure --host="${HOST}" --prefix=/ --enable-osmesa + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} From 1daf9f1d3dc1b71fd7e7c602c4cc9702206894e4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 9 Dec 2018 21:58:55 -0700 Subject: [PATCH 0473/3180] Add osmesa demo --- recipes/mesa/recipe.sh | 6 + recipes/mesa_glu/recipe.sh | 5 + recipes/osdemo/osdemo.c | 547 +++++++++++++++++++++++++++++++++++++ recipes/osdemo/recipe.sh | 37 +++ 4 files changed, 595 insertions(+) create mode 100644 recipes/osdemo/osdemo.c create mode 100644 recipes/osdemo/recipe.sh diff --git a/recipes/mesa/recipe.sh b/recipes/mesa/recipe.sh index 7910e84d..35e311be 100644 --- a/recipes/mesa/recipe.sh +++ b/recipes/mesa/recipe.sh @@ -1,7 +1,13 @@ GIT=https://gitlab.redox-os.org/redox-os/mesa.git GIT_UPSTREAM=git://anongit.freedesktop.org/mesa/mesa +GIT_BRANCH=redox BUILD_DEPENDS=(expat zlib) +function recipe_version { + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + skip=1 +} + function recipe_update { echo "skipping update" skip=1 diff --git a/recipes/mesa_glu/recipe.sh b/recipes/mesa_glu/recipe.sh index 6589a17d..59876c4f 100644 --- a/recipes/mesa_glu/recipe.sh +++ b/recipes/mesa_glu/recipe.sh @@ -1,6 +1,11 @@ TAR=ftp://ftp.freedesktop.org/pub/mesa/glu/glu-9.0.0.tar.bz2 BUILD_DEPENDS=(mesa) +function recipe_version { + echo "9.0.0" + skip=1 +} + function recipe_update { echo "skipping update" skip=1 diff --git a/recipes/osdemo/osdemo.c b/recipes/osdemo/osdemo.c new file mode 100644 index 00000000..9b0b4c9b --- /dev/null +++ b/recipes/osdemo/osdemo.c @@ -0,0 +1,547 @@ +/* + * Test OSMesa interface at 8, 16 and 32 bits/channel. + * + * Usage: osdemo [options] + * + * Options: + * -f generate image files + * -g render gradient and print color values + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#define WIDTH 600 +#define HEIGHT 600 + +static GLboolean DisplayImages = GL_FALSE; +static GLboolean WriteFiles = GL_FALSE; +static GLboolean Gradient = GL_FALSE; + + +static void +Sphere(float radius, int slices, int stacks) +{ + GLUquadric *q = gluNewQuadric(); + gluQuadricNormals(q, GLU_SMOOTH); + gluSphere(q, radius, slices, stacks); + gluDeleteQuadric(q); +} + + +static void +Cone(float base, float height, int slices, int stacks) +{ + GLUquadric *q = gluNewQuadric(); + gluQuadricDrawStyle(q, GLU_FILL); + gluQuadricNormals(q, GLU_SMOOTH); + gluCylinder(q, base, 0.0, height, slices, stacks); + gluDeleteQuadric(q); +} + + +static void +Torus(float innerRadius, float outerRadius, int sides, int rings) +{ + /* from GLUT... */ + int i, j; + GLfloat theta, phi, theta1; + GLfloat cosTheta, sinTheta; + GLfloat cosTheta1, sinTheta1; + const GLfloat ringDelta = 2.0 * M_PI / rings; + const GLfloat sideDelta = 2.0 * M_PI / sides; + + theta = 0.0; + cosTheta = 1.0; + sinTheta = 0.0; + for (i = rings - 1; i >= 0; i--) { + theta1 = theta + ringDelta; + cosTheta1 = cos(theta1); + sinTheta1 = sin(theta1); + glBegin(GL_QUAD_STRIP); + phi = 0.0; + for (j = sides; j >= 0; j--) { + GLfloat cosPhi, sinPhi, dist; + + phi += sideDelta; + cosPhi = cos(phi); + sinPhi = sin(phi); + dist = outerRadius + innerRadius * cosPhi; + + glNormal3f(cosTheta1 * cosPhi, -sinTheta1 * cosPhi, sinPhi); + glVertex3f(cosTheta1 * dist, -sinTheta1 * dist, innerRadius * sinPhi); + glNormal3f(cosTheta * cosPhi, -sinTheta * cosPhi, sinPhi); + glVertex3f(cosTheta * dist, -sinTheta * dist, innerRadius * sinPhi); + } + glEnd(); + theta = theta1; + cosTheta = cosTheta1; + sinTheta = sinTheta1; + } +} + + +static void Cube(float size) +{ + size = 0.5 * size; + + glBegin(GL_QUADS); + /* +X face */ + glNormal3f(1, 0, 0); + glVertex3f(size, -size, size); + glVertex3f(size, -size, -size); + glVertex3f(size, size, -size); + glVertex3f(size, size, size); + + /* -X face */ + glNormal3f(-1, 0, 0); + glVertex3f(-size, size, size); + glVertex3f(-size, size, -size); + glVertex3f(-size, -size, -size); + glVertex3f(-size, -size, size); + + /* +Y face */ + glNormal3f(0, 1, 0); + glVertex3f(-size, size, size); + glVertex3f( size, size, size); + glVertex3f( size, size, -size); + glVertex3f(-size, size, -size); + + /* -Y face */ + glNormal3f(0, -1, 0); + glVertex3f(-size, -size, -size); + glVertex3f( size, -size, -size); + glVertex3f( size, -size, size); + glVertex3f(-size, -size, size); + + /* +Z face */ + glNormal3f(0, 0, 1); + glVertex3f(-size, -size, size); + glVertex3f( size, -size, size); + glVertex3f( size, size, size); + glVertex3f(-size, size, size); + + /* -Z face */ + glNormal3f(0, 0, -1); + glVertex3f(-size, size, -size); + glVertex3f( size, size, -size); + glVertex3f( size, -size, -size); + glVertex3f(-size, -size, -size); + + glEnd(); +} + + + +/** + * Draw red/green gradient across bottom of image. + * Read pixels to check deltas. + */ +static void +render_gradient(void) +{ + GLfloat row[WIDTH][4]; + int i; + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(-1, 1, -1, 1, -1, 1); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + glBegin(GL_POLYGON); + glColor3f(1, 0, 0); + glVertex2f(-1, -1.0); + glVertex2f(-1, -0.9); + glColor3f(0, 1, 0); + glVertex2f(1, -0.9); + glVertex2f(1, -1.0); + glEnd(); + glFinish(); + + glReadPixels(0, 0, WIDTH, 1, GL_RGBA, GL_FLOAT, row); + for (i = 0; i < 4; i++) { + printf("row[i] = %f, %f, %f\n", row[i][0], row[i][1], row[i][2]); + } +} + + +static void +render_image(void) +{ + static const GLfloat light_ambient[4] = { 0.0, 0.0, 0.0, 1.0 }; + static const GLfloat light_diffuse[4] = { 1.0, 1.0, 1.0, 1.0 }; + static const GLfloat light_specular[4] = { 1.0, 1.0, 1.0, 1.0 }; + static const GLfloat light_position[4] = { 1.0, 1.0, 1.0, 0.0 }; + static const GLfloat red_mat[4] = { 1.0, 0.2, 0.2, 1.0 }; + static const GLfloat green_mat[4] = { 0.2, 1.0, 0.2, 1.0 }; + static const GLfloat blue_mat[4] = { 0.2, 0.2, 1.0, 1.0 }; +#if 0 + static const GLfloat yellow_mat[4] = { 0.8, 0.8, 0.0, 1.0 }; +#endif + static const GLfloat purple_mat[4] = { 0.8, 0.4, 0.8, 0.6 }; + + glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); + glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); + glLightfv(GL_LIGHT0, GL_POSITION, light_position); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_LIGHT0); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-1.0, 1.0, -1.0, 1.0, 2.0, 50.0); + glMatrixMode(GL_MODELVIEW); + glTranslatef(0, 0.5, -7); + + glClearColor(0.3, 0.3, 0.7, 0.0); + glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); + + glPushMatrix(); + glRotatef(20.0, 1.0, 0.0, 0.0); + + /* ground */ + glEnable(GL_TEXTURE_2D); + glBegin(GL_POLYGON); + glNormal3f(0, 1, 0); + glTexCoord2f(0, 0); glVertex3f(-5, -1, -5); + glTexCoord2f(1, 0); glVertex3f( 5, -1, -5); + glTexCoord2f(1, 1); glVertex3f( 5, -1, 5); + glTexCoord2f(0, 1); glVertex3f(-5, -1, 5); + glEnd(); + glDisable(GL_TEXTURE_2D); + + glEnable(GL_LIGHTING); + + glPushMatrix(); + glTranslatef(-1.5, 0.5, 0.0); + glRotatef(90.0, 1.0, 0.0, 0.0); + glMaterialfv( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, red_mat ); + Torus(0.275, 0.85, 20, 20); + glPopMatrix(); + + glPushMatrix(); + glTranslatef(-1.5, -0.5, 0.0); + glRotatef(270.0, 1.0, 0.0, 0.0); + glMaterialfv( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, green_mat ); + Cone(1.0, 2.0, 16, 1); + glPopMatrix(); + + glPushMatrix(); + glTranslatef(0.95, 0.0, -0.8); + glMaterialfv( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, blue_mat ); + glLineWidth(2.0); + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + Sphere(1.2, 20, 20); + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + glPopMatrix(); + +#if 0 + glPushMatrix(); + glTranslatef(0.75, 0.0, 1.3); + glMaterialfv( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, yellow_mat ); + glutWireTeapot(1.0); + glPopMatrix(); +#endif + + glPushMatrix(); + glTranslatef(-0.25, 0.0, 2.5); + glRotatef(40, 0, 1, 0); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + glEnable(GL_CULL_FACE); + glMaterialfv( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, purple_mat ); + Cube(1.0); + glDisable(GL_BLEND); + glDisable(GL_CULL_FACE); + glPopMatrix(); + + glDisable(GL_LIGHTING); + + glPopMatrix(); + + glDisable(GL_DEPTH_TEST); +} + + +static void +init_context(void) +{ + const GLint texWidth = 64, texHeight = 64; + GLubyte *texImage; + int i, j; + + /* checker image */ + texImage = (GLubyte *)malloc(texWidth * texHeight * 4); + for (i = 0; i < texHeight; i++) { + for (j = 0; j < texWidth; j++) { + int k = (i * texWidth + j) * 4; + if ((i % 5) == 0 || (j % 5) == 0) { + texImage[k+0] = 200; + texImage[k+1] = 200; + texImage[k+2] = 200; + texImage[k+3] = 255; + } + else { + if ((i % 5) == 1 || (j % 5) == 1) { + texImage[k+0] = 50; + texImage[k+1] = 50; + texImage[k+2] = 50; + texImage[k+3] = 255; + } + else { + texImage[k+0] = 100; + texImage[k+1] = 100; + texImage[k+2] = 100; + texImage[k+3] = 255; + } + } + } + } + + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texWidth, texHeight, 0, + GL_RGBA, GL_UNSIGNED_BYTE, texImage); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + + free(texImage); +} + +static void +display_image(const char *filename, const GLubyte *buffer, int width, int height) +{ + void * window = orb_window_new(-1, -1, width, height, filename); + + uint32_t * frame_data = orb_window_data(window); + uint32_t * image_data = (uint32_t *)buffer; + + int x, y; + for(y = 0; y < height; y++) { + for(x = 0; x < width; x++) { + frame_data[y * width + x] = image_data[(height - 1 - y) * width + x] | 0xFF000000; + } + } + + orb_window_sync(window); + + char running = 1; + while (running) { + void * event_iter = orb_window_events(window); + + OrbEventOption event_option; + do { + event_option = orb_events_next(event_iter); + switch (event_option.tag) { + case OrbEventOption_Quit: + running = 0; + break; + default: + break; + } + } while (running && event_option.tag != OrbEventOption_None); + + orb_events_destroy(event_iter); + } + + orb_window_destroy(window); +} + +static void +write_ppm(const char *filename, const GLubyte *buffer, int width, int height) +{ + const int binary = 0; + FILE *f = fopen( filename, "w" ); + if (f) { + int i, x, y; + const GLubyte *ptr = buffer; + if (binary) { + fprintf(f,"P6\n"); + fprintf(f,"# ppm-file created by osdemo.c\n"); + fprintf(f,"%i %i\n", width,height); + fprintf(f,"255\n"); + fclose(f); + f = fopen( filename, "ab" ); /* reopen in binary append mode */ + for (y=height-1; y>=0; y--) { + for (x=0; x=0; y--) { + for (x=0; x> 8; + display_image(filename, buffer8, WIDTH, HEIGHT); + free(buffer8); + } + else if (type == GL_FLOAT) { + GLfloat *buffer32 = (GLfloat *) buffer; + GLubyte *buffer8 = (GLubyte *) malloc(WIDTH * HEIGHT * 4); + int i; + /* colors may be outside [0,1] so we need to clamp */ + for (i = 0; i < WIDTH * HEIGHT * 4; i++) + buffer8[i] = (GLubyte) (buffer32[i] * 255.0); + display_image(filename, buffer8, WIDTH, HEIGHT); + free(buffer8); + } + else { + display_image(filename, (const GLubyte *)buffer, WIDTH, HEIGHT); + } + } + + if (WriteFiles && filename != NULL) { + if (type == GL_UNSIGNED_SHORT) { + GLushort *buffer16 = (GLushort *) buffer; + GLubyte *buffer8 = (GLubyte *) malloc(WIDTH * HEIGHT * 4); + int i; + for (i = 0; i < WIDTH * HEIGHT * 4; i++) + buffer8[i] = buffer16[i] >> 8; + write_ppm(filename, buffer8, WIDTH, HEIGHT); + free(buffer8); + } + else if (type == GL_FLOAT) { + GLfloat *buffer32 = (GLfloat *) buffer; + GLubyte *buffer8 = (GLubyte *) malloc(WIDTH * HEIGHT * 4); + int i; + /* colors may be outside [0,1] so we need to clamp */ + for (i = 0; i < WIDTH * HEIGHT * 4; i++) + buffer8[i] = (GLubyte) (buffer32[i] * 255.0); + write_ppm(filename, buffer8, WIDTH, HEIGHT); + free(buffer8); + } + else { + write_ppm(filename, (const GLubyte *)buffer, WIDTH, HEIGHT); + } + } + + OSMesaDestroyContext(ctx); + + free(buffer); + + return 1; +} + + +int +main( int argc, char *argv[] ) +{ + int i; + + printf("Use -f to write image files\n"); + + for (i = 1; i < argc; i++) { + if (strcmp(argv[i], "-d") == 0) + DisplayImages = GL_TRUE; + else if (strcmp(argv[i], "-f") == 0) + WriteFiles = GL_TRUE; + else if (strcmp(argv[i], "-g") == 0) + Gradient = GL_TRUE; + } + + test(GL_UNSIGNED_BYTE, 8, "image8.ppm"); + test(GL_UNSIGNED_SHORT, 16, "image16.ppm"); + test(GL_FLOAT, 32, "image32.ppm"); + + return 0; +} diff --git a/recipes/osdemo/recipe.sh b/recipes/osdemo/recipe.sh new file mode 100644 index 00000000..9ed2cd26 --- /dev/null +++ b/recipes/osdemo/recipe.sh @@ -0,0 +1,37 @@ +BUILD_DEPENDS=(liborbital mesa mesa_glu) + +function recipe_version { + printf "1.0.0" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + cp ../osdemo.c osdemo.c + sysroot="${PWD}/../sysroot" + set -x + "${CXX}" -I "$sysroot/include" -L "$sysroot/lib" osdemo.c -o osdemo -lorbital -lOSMesa -lGLU -lglapi -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -lm + set +x + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + mkdir -pv "$dest/bin" + cp -v "osdemo" "$dest/bin/osdemo" + skip=1 +} From af13aa850919c0cafb2d1014694f70c8fa62e9ed Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 10 Dec 2018 08:23:26 -0700 Subject: [PATCH 0474/3180] Add gears recipe --- recipes/gears/gears.c | 343 ++++++++++++++++++++++++++++++++++++++++ recipes/gears/recipe.sh | 37 +++++ 2 files changed, 380 insertions(+) create mode 100644 recipes/gears/gears.c create mode 100644 recipes/gears/recipe.sh diff --git a/recipes/gears/gears.c b/recipes/gears/gears.c new file mode 100644 index 00000000..75873ede --- /dev/null +++ b/recipes/gears/gears.c @@ -0,0 +1,343 @@ +/* gears.c */ + +/* + * 3-D gear wheels. This program is in the public domain. + * + * Brian Paul + */ + +/* Conversion to GLUT by Mark J. Kilgard */ + +#include +#include +#include +#include +#include +#include + +#ifndef M_PI +#define M_PI 3.14159265 +#endif + +/** + + Draw a gear wheel. You'll probably want to call this function when + building a display list since we do a lot of trig here. + + Input: inner_radius - radius of hole at center + outer_radius - radius at center of teeth + width - width of gear + teeth - number of teeth + tooth_depth - depth of tooth + + **/ + +static void +gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat width, + GLint teeth, GLfloat tooth_depth) +{ + GLint i; + GLfloat r0, r1, r2; + GLfloat angle, da; + GLfloat u, v, len; + + r0 = inner_radius; + r1 = outer_radius - tooth_depth / 2.0; + r2 = outer_radius + tooth_depth / 2.0; + + da = 2.0 * M_PI / teeth / 4.0; + + glShadeModel(GL_FLAT); + + glNormal3f(0.0, 0.0, 1.0); + + /* draw front face */ + glBegin(GL_QUAD_STRIP); + for (i = 0; i <= teeth; i++) { + angle = i * 2.0 * M_PI / teeth; + glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); + glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); + glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); + glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); + } + glEnd(); + + /* draw front sides of teeth */ + glBegin(GL_QUADS); + da = 2.0 * M_PI / teeth / 4.0; + for (i = 0; i < teeth; i++) { + angle = i * 2.0 * M_PI / teeth; + + glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); + glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); + glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5); + glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); + } + glEnd(); + + glNormal3f(0.0, 0.0, -1.0); + + /* draw back face */ + glBegin(GL_QUAD_STRIP); + for (i = 0; i <= teeth; i++) { + angle = i * 2.0 * M_PI / teeth; + glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); + glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); + glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); + glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); + } + glEnd(); + + /* draw back sides of teeth */ + glBegin(GL_QUADS); + da = 2.0 * M_PI / teeth / 4.0; + for (i = 0; i < teeth; i++) { + angle = i * 2.0 * M_PI / teeth; + + glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); + glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5); + glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); + glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); + } + glEnd(); + + /* draw outward faces of teeth */ + glBegin(GL_QUAD_STRIP); + for (i = 0; i < teeth; i++) { + angle = i * 2.0 * M_PI / teeth; + + glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); + glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); + u = r2 * cos(angle + da) - r1 * cos(angle); + v = r2 * sin(angle + da) - r1 * sin(angle); + len = sqrt(u * u + v * v); + u /= len; + v /= len; + glNormal3f(v, -u, 0.0); + glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); + glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); + glNormal3f(cos(angle), sin(angle), 0.0); + glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5); + glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5); + u = r1 * cos(angle + 3 * da) - r2 * cos(angle + 2 * da); + v = r1 * sin(angle + 3 * da) - r2 * sin(angle + 2 * da); + glNormal3f(v, -u, 0.0); + glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); + glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); + glNormal3f(cos(angle), sin(angle), 0.0); + } + + glVertex3f(r1 * cos(0), r1 * sin(0), width * 0.5); + glVertex3f(r1 * cos(0), r1 * sin(0), -width * 0.5); + + glEnd(); + + glShadeModel(GL_SMOOTH); + + /* draw inside radius cylinder */ + glBegin(GL_QUAD_STRIP); + for (i = 0; i <= teeth; i++) { + angle = i * 2.0 * M_PI / teeth; + + glNormal3f(-cos(angle), -sin(angle), 0.0); + glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); + glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); + } + glEnd(); + +} + +static int width = 800; +static int height = 600; + +static void * buffer = NULL; +static void * window = NULL; + +static GLfloat view_rotx = 20.0, view_roty = 30.0, view_rotz = 0.0; +static GLint gear1, gear2, gear3; +static GLfloat angle = 0.0; + +static GLuint limit; +static GLuint count = 1; + +static void +sync(void) +{ + glFinish(); + + uint32_t * frame_data = orb_window_data(window); + uint32_t * image_data = (uint32_t *)buffer; + + int i; + for(i = 0; i < width * height; i++) { + frame_data[i] = image_data[i] | 0xFF000000; + } + + orb_window_sync(window); +} + +static void +draw(void) +{ + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix(); + glRotatef(view_rotx, 1.0, 0.0, 0.0); + glRotatef(view_roty, 0.0, 1.0, 0.0); + glRotatef(view_rotz, 0.0, 0.0, 1.0); + + glPushMatrix(); + glTranslatef(-3.0, -2.0, 0.0); + glRotatef(angle, 0.0, 0.0, 1.0); + glCallList(gear1); + glPopMatrix(); + + glPushMatrix(); + glTranslatef(3.1, -2.0, 0.0); + glRotatef(-2.0 * angle - 9.0, 0.0, 0.0, 1.0); + glCallList(gear2); + glPopMatrix(); + + glPushMatrix(); + glTranslatef(-3.1, 4.2, 0.0); + glRotatef(-2.0 * angle - 25.0, 0.0, 0.0, 1.0); + glCallList(gear3); + glPopMatrix(); + + glPopMatrix(); + + sync(); + + count++; + if (count == limit) { + exit(0); + } +} + +static void +idle(void) +{ + angle += 2.0; + draw(); +} + +/* new window size or exposure */ +static void +reshape(int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + + glViewport(0, 0, (GLint) width, (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-1.0, 1.0, -h, h, 5.0, 60.0); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glTranslatef(0.0, 0.0, -40.0); +} + +static void +init(void) +{ + static GLfloat pos[4] = + {5.0, 5.0, 10.0, 0.0}; + static GLfloat red[4] = + {0.8, 0.1, 0.0, 1.0}; + static GLfloat green[4] = + {0.0, 0.8, 0.2, 1.0}; + static GLfloat blue[4] = + {0.2, 0.2, 1.0, 1.0}; + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glEnable(GL_CULL_FACE); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + + /* make the gears */ + gear1 = glGenLists(1); + glNewList(gear1, GL_COMPILE); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red); + gear(1.0, 4.0, 1.0, 20, 0.7); + glEndList(); + + gear2 = glGenLists(1); + glNewList(gear2, GL_COMPILE); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green); + gear(0.5, 2.0, 2.0, 10, 0.7); + glEndList(); + + gear3 = glGenLists(1); + glNewList(gear3, GL_COMPILE); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue); + gear(1.3, 2.0, 0.5, 10, 0.7); + glEndList(); + + glEnable(GL_NORMALIZE); +} + +main(int argc, char *argv[]) +{ + if (argc > 1) { + /* do 'n' frames then exit */ + limit = atoi(argv[1]) + 1; + } else { + limit = 0; + } + + OSMesaContext ctx = OSMesaCreateContextExt(OSMESA_RGBA, 16, 0, 0, NULL); + if (!ctx) { + printf("OSMesaCreateContextExt failed\n"); + return 1; + } + + buffer = malloc(width * height * 4); + if(!buffer) { + printf("malloc failed\n"); + OSMesaDestroyContext(ctx); + return 1; + } + + if (!OSMesaMakeCurrent(ctx, buffer, GL_UNSIGNED_BYTE, width, height)) { + printf("OSMesaMakeCurrent failed\n"); + OSMesaDestroyContext(ctx); + return 1; + } + + OSMesaPixelStore(OSMESA_Y_UP, 0); + + OSMesaColorClamp(GL_TRUE); + + window = orb_window_new_flags(-1, -1, width, height, "Gears", ORB_WINDOW_ASYNC); + + init(); + + reshape(width, height); + + char running = 1; + while (running) { + idle(); + + void * event_iter = orb_window_events(window); + + OrbEventOption event_option; + do { + event_option = orb_events_next(event_iter); + switch (event_option.tag) { + case OrbEventOption_Quit: + running = 0; + break; + default: + break; + } + } while (running && event_option.tag != OrbEventOption_None); + + orb_events_destroy(event_iter); + } + + orb_window_destroy(window); + OSMesaDestroyContext(ctx); + free(buffer); + + return 0; /* ANSI C requires main to return int. */ +} diff --git a/recipes/gears/recipe.sh b/recipes/gears/recipe.sh new file mode 100644 index 00000000..e4c618a8 --- /dev/null +++ b/recipes/gears/recipe.sh @@ -0,0 +1,37 @@ +BUILD_DEPENDS=(liborbital mesa mesa_glu) + +function recipe_version { + printf "1.0.0" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + cp ../gears.c gears.c + sysroot="${PWD}/../sysroot" + set -x + "${CXX}" -I "$sysroot/include" -L "$sysroot/lib" gears.c -o gears -lorbital -lOSMesa -lGLU -lglapi -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -lm + set +x + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + mkdir -pv "$dest/bin" + cp -v "gears" "$dest/bin/gears" + skip=1 +} From ce09215a7638919a71d35ebef036de09a1caefbe Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 10 Dec 2018 11:09:20 -0700 Subject: [PATCH 0475/3180] Add freeciv (WIP), fixes for sdl libtool files --- recipes/freeciv/01_redox.patch | 18 +++++++++++++ recipes/freeciv/recipe.sh | 48 ++++++++++++++++++++++++++++++++++ recipes/sdl_gfx/recipe.sh | 2 ++ recipes/sdl_image/recipe.sh | 4 +++ recipes/sdl_mixer/recipe.sh | 2 ++ recipes/sdl_ttf/recipe.sh | 4 +++ recipes/sopwith/recipe.sh | 3 +-- 7 files changed, 79 insertions(+), 2 deletions(-) create mode 100644 recipes/freeciv/01_redox.patch create mode 100644 recipes/freeciv/recipe.sh diff --git a/recipes/freeciv/01_redox.patch b/recipes/freeciv/01_redox.patch new file mode 100644 index 00000000..00725263 --- /dev/null +++ b/recipes/freeciv/01_redox.patch @@ -0,0 +1,18 @@ +diff -ruw source/client/servers.c source-new/client/servers.c +--- source/client/servers.c 2018-07-21 15:42:11.000000000 -0600 ++++ source-new/client/servers.c 2018-12-10 09:31:49.817815930 -0700 +@@ -80,6 +80,14 @@ + + #include "gui_main_g.h" + ++// Redox patches ++#define IP_ADD_MEMBERSHIP 35 ++#define IP_MULTICAST_TTL 33 ++struct ip_mreq { ++ struct in_addr imr_multiaddr; /* IP multicast address of group */ ++ struct in_addr imr_interface; /* local IP address of interface */ ++}; ++ + struct server_scan { + enum server_scan_type type; + ServerScanErrorFunc error_func; diff --git a/recipes/freeciv/recipe.sh b/recipes/freeciv/recipe.sh new file mode 100644 index 00000000..7916cb42 --- /dev/null +++ b/recipes/freeciv/recipe.sh @@ -0,0 +1,48 @@ +VERSION=2.6.0 +TAR=http://files.freeciv.org/stable/freeciv-$VERSION.tar.bz2 +BUILD_DEPENDS=(curl freetype libiconv liborbital libpng sdl sdl_gfx sdl_image sdl_mixer sdl_ttf zlib) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + wget -O bootstrap/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib" + export LIBS="-lpthread" + ./configure \ + --host="$HOST" \ + --prefix='' \ + --disable-server \ + --enable-client=sdl \ + --enable-fcmp=cli \ + --with-sdl-prefix="$sysroot" \ + ac_cv_lib_SDL_image_IMG_Load=yes \ + ac_cv_lib_SDL_ttf_TTF_OpenFont=yes + make -j"$(nproc)" V=1 + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} diff --git a/recipes/sdl_gfx/recipe.sh b/recipes/sdl_gfx/recipe.sh index 1392fbe8..bf8bc274 100644 --- a/recipes/sdl_gfx/recipe.sh +++ b/recipes/sdl_gfx/recipe.sh @@ -34,6 +34,8 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" + sysroot="$(realpath ../sysroot)" make DESTDIR="$dest" install + sed -i -e "s%//lib/libSDL.la%$sysroot/lib/libSDL.la%" "$dest/lib/"*.la skip=1 } diff --git a/recipes/sdl_image/recipe.sh b/recipes/sdl_image/recipe.sh index ea07b351..cb5ff8d2 100644 --- a/recipes/sdl_image/recipe.sh +++ b/recipes/sdl_image/recipe.sh @@ -34,6 +34,10 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" + sysroot="$(realpath ../sysroot)" make DESTDIR="$dest" install + sed -i -e "s%//lib/libpng.la%$sysroot/lib/libpng.la%" "$dest/lib/"*.la + sed -i -e "s%//lib/libjpeg.la%$sysroot/lib/libjpeg.la%" "$dest/lib/"*.la + sed -i -e "s%//lib/libSDL.la%$sysroot/lib/libSDL.la%" "$dest/lib/"*.la skip=1 } diff --git a/recipes/sdl_mixer/recipe.sh b/recipes/sdl_mixer/recipe.sh index 9ae3444a..1ffab835 100644 --- a/recipes/sdl_mixer/recipe.sh +++ b/recipes/sdl_mixer/recipe.sh @@ -34,6 +34,8 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" + sysroot="$(realpath ../sysroot)" make DESTDIR="$dest" install + sed -i -e "s%//lib/libSDL.la%$sysroot/lib/libSDL.la%" "$dest/lib/"*.la skip=1 } diff --git a/recipes/sdl_ttf/recipe.sh b/recipes/sdl_ttf/recipe.sh index 14e082a8..3e3e2c6a 100644 --- a/recipes/sdl_ttf/recipe.sh +++ b/recipes/sdl_ttf/recipe.sh @@ -38,6 +38,10 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" + sysroot="$(realpath ../sysroot)" make DESTDIR="$dest" install + sed -i -e "s%//lib/libfreetype.la%$sysroot/lib/libfreetype.la%" "$dest/lib/"*.la + sed -i -e "s%//lib/libpng16.la%$sysroot/lib/libpng16.la%" "$dest/lib/"*.la + sed -i -e "s%//lib/libSDL.la%$sysroot/lib/libSDL.la%" "$dest/lib/"*.la skip=1 } diff --git a/recipes/sopwith/recipe.sh b/recipes/sopwith/recipe.sh index 9f75db60..432c5f71 100644 --- a/recipes/sopwith/recipe.sh +++ b/recipes/sopwith/recipe.sh @@ -17,9 +17,8 @@ function recipe_build { sysroot="${PWD}/../sysroot" export CFLAGS="-I$sysroot/include -I$sysroot/include/SDL" export LDFLAGS="-L$sysroot/lib" - ./configure --host=${HOST} --prefix='' --with-sdl-prefix="$sysroot" - make + make -j"$(nproc)" skip=1 } From e455d711dcef808eee18a8867ef4e37d59954863 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 10 Dec 2018 11:38:16 -0700 Subject: [PATCH 0476/3180] Reenable patched pkg-config --- bin/x86_64-unknown-redox-pkg-config | 2 +- config.sh | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) mode change 100644 => 100755 bin/x86_64-unknown-redox-pkg-config diff --git a/bin/x86_64-unknown-redox-pkg-config b/bin/x86_64-unknown-redox-pkg-config old mode 100644 new mode 100755 index 7693e621..54776ef2 --- a/bin/x86_64-unknown-redox-pkg-config +++ b/bin/x86_64-unknown-redox-pkg-config @@ -4,4 +4,4 @@ export PKG_CONFIG_PATH= export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_RECIPE}/sysroot" export PKG_CONFIG_LIBDIR="${PKG_CONFIG_SYSROOT_DIR}/lib/pkgconfig" -exec pkg-config "$@" +exec pkg-config --static "$@" diff --git a/config.sh b/config.sh index b08a2e59..fb4c4eeb 100755 --- a/config.sh +++ b/config.sh @@ -23,11 +23,13 @@ export LD="${HOST}-ld" export NM="${HOST}-nm" export OBJCOPY="${HOST}-objcopy" export OBJDUMP="${HOST}-objdump" -#export PKG_CONFIG="${HOST}-pkg-config" +export PKG_CONFIG="${HOST}-pkg-config" export RANLIB="${HOST}-ranlib" export READELF="${HOST}-readelf" export STRIP="${HOST}-strip" +export PKG_CONFIG_FOR_BUILD="pkg-config" + if [[ "$OSTYPE" == "darwin"* ]]; then # GNU find FIND="gfind"; From 4fe078bddb5e9542707d4187ff72aafac5d29aa1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 10 Dec 2018 11:38:44 -0700 Subject: [PATCH 0477/3180] Update expat to 2.2.6 --- recipes/expat/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/expat/recipe.sh b/recipes/expat/recipe.sh index f4c57111..f98564e4 100644 --- a/recipes/expat/recipe.sh +++ b/recipes/expat/recipe.sh @@ -1,4 +1,4 @@ -VERSION=2.2.1 +VERSION=2.2.6 TAR=https://github.com/libexpat/libexpat/releases/download/R_${VERSION//./_}/expat-${VERSION}.tar.bz2 function recipe_version { From 9c8f493fce3f24cf0460dfbfb5b3d4c5b69441eb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 10 Dec 2018 11:43:35 -0700 Subject: [PATCH 0478/3180] Update libpng to 1.6.36 --- recipes/libpng/recipe.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/libpng/recipe.sh b/recipes/libpng/recipe.sh index c3ccbb91..8acf9f35 100644 --- a/recipes/libpng/recipe.sh +++ b/recipes/libpng/recipe.sh @@ -1,4 +1,4 @@ -VERSION=1.6.34 +VERSION=1.6.36 TAR=https://github.com/glennrp/libpng/archive/v${VERSION}.tar.gz BUILD_DEPENDS=(zlib) @@ -13,10 +13,9 @@ function recipe_update { } function recipe_build { - sysroot="${PWD}/../sysroot" + sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" - ./autogen.sh chmod +w config.sub wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub From a42121231331d6f1b2fd87e3ed85c104446b2f5a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 10 Dec 2018 12:44:02 -0700 Subject: [PATCH 0479/3180] Recipe cleanup and add freeglut (WIP) --- recipes/cmatrix/recipe.sh | 2 +- recipes/curl/01-no-nonblock.patch | 14 +++-- ...select.patch => 02-redox-sys-select.patch} | 10 ++-- recipes/curl/02-threaded-resolver-fix.patch | 31 ---------- recipes/curl/recipe.sh | 19 ++++-- recipes/eduke32/recipe.sh | 2 +- recipes/expat/recipe.sh | 2 +- recipes/freeglut/recipe.sh | 44 ++++++++++++++ recipes/freeglut/redox_cross_toolchain.cmake | 1 + recipes/freetype/recipe.sh | 7 +-- recipes/gears/recipe.sh | 2 +- recipes/gigalomania/recipe.sh | 2 +- recipes/git/recipe.sh | 2 +- recipes/gnu-binutils/recipe.sh | 2 +- recipes/jansson/recipe.sh | 2 +- recipes/libiconv/recipe.sh | 1 + recipes/libjpeg/recipe.sh | 1 + recipes/libpng/recipe.sh | 1 + recipes/mdp/recipe.sh | 2 +- recipes/mesa/recipe.sh | 11 ++-- recipes/mesa_glu/recipe.sh | 10 ++-- recipes/netsurf/recipe.sh | 2 +- recipes/newlibtest/recipe.sh | 2 +- recipes/openjazz/recipe.sh | 8 +-- recipes/osdemo/recipe.sh | 2 +- recipes/readline/recipe.sh | 2 +- recipes/scummvm/recipe.sh | 2 +- recipes/sdl/recipe.sh | 20 +++++-- recipes/sdl_gfx/recipe.sh | 11 ++-- recipes/sdl_image/recipe.sh | 13 ++-- recipes/sdl_mixer/recipe.sh | 20 +++++-- recipes/sdl_ttf/01_redox.patch | 59 +++++++++++++++++-- recipes/sdl_ttf/recipe.sh | 15 ++--- recipes/sopwith/recipe.sh | 3 +- recipes/ssh/recipe.sh | 4 +- recipes/syobonaction/recipe.sh | 7 +-- recipes/vim/recipe.sh | 2 +- recipes/zlib/recipe.sh | 1 - 38 files changed, 215 insertions(+), 126 deletions(-) rename recipes/curl/{03-redox-sys-select.patch => 02-redox-sys-select.patch} (52%) delete mode 100644 recipes/curl/02-threaded-resolver-fix.patch create mode 100644 recipes/freeglut/recipe.sh create mode 100644 recipes/freeglut/redox_cross_toolchain.cmake diff --git a/recipes/cmatrix/recipe.sh b/recipes/cmatrix/recipe.sh index 0d001a95..3dd1d835 100644 --- a/recipes/cmatrix/recipe.sh +++ b/recipes/cmatrix/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { } function recipe_build { - sysroot="${PWD}/../sysroot" + sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" ./configure --host=${HOST} --prefix=/ --without-fonts diff --git a/recipes/curl/01-no-nonblock.patch b/recipes/curl/01-no-nonblock.patch index a2b4dd4a..e2762293 100644 --- a/recipes/curl/01-no-nonblock.patch +++ b/recipes/curl/01-no-nonblock.patch @@ -1,12 +1,14 @@ -diff -ru source/lib/nonblock.c source-new/lib/nonblock.c ---- source/lib/nonblock.c 2017-08-07 15:42:29.000000000 -0700 -+++ source-new/lib/nonblock.c 2017-08-17 10:57:30.123497389 -0700 +diff -ruw source/lib/nonblock.c source-new/lib/nonblock.c +--- source/lib/nonblock.c 2018-10-27 04:00:54.000000000 -0600 ++++ source-new/lib/nonblock.c 2018-12-10 12:40:21.350755609 -0700 @@ -47,7 +47,7 @@ int curlx_nonblock(curl_socket_t sockfd, /* operate on this */ int nonblock /* TRUE or FALSE */) { -#if defined(USE_BLOCKING_SOCKETS) -+#if 1 - ++#if defined(USE_BLOCKING_SOCKETS) || defined(__redox__) + (void)sockfd; + (void)nonblock; return 0; /* returns success */ - +Only in source-new/lib: nonblock.c.orig +Only in source-new/lib: nonblock.c.rej diff --git a/recipes/curl/03-redox-sys-select.patch b/recipes/curl/02-redox-sys-select.patch similarity index 52% rename from recipes/curl/03-redox-sys-select.patch rename to recipes/curl/02-redox-sys-select.patch index a99771f5..10c69120 100644 --- a/recipes/curl/03-redox-sys-select.patch +++ b/recipes/curl/02-redox-sys-select.patch @@ -1,10 +1,12 @@ ---- source/include/curl/curl.h 2017-08-07 15:42:29.000000000 -0700 -+++ build/include/curl/curl.h 2018-09-20 14:27:20.462414020 -0700 -@@ -74,6 +74,7 @@ +diff -ruw source/include/curl/curl.h source-new/include/curl/curl.h +--- source/include/curl/curl.h 2018-10-30 10:53:59.000000000 -0600 ++++ source-new/include/curl/curl.h 2018-12-10 12:42:52.504393368 -0700 +@@ -74,7 +74,7 @@ #if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \ defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \ defined(ANDROID) || defined(__ANDROID__) || defined(__OpenBSD__) || \ -+ defined(__redox__) || \ +- defined(__CYGWIN__) || \ ++ defined(__CYGWIN__) || defined(__redox__) \ (defined(__FreeBSD_version) && (__FreeBSD_version < 800000)) #include #endif diff --git a/recipes/curl/02-threaded-resolver-fix.patch b/recipes/curl/02-threaded-resolver-fix.patch deleted file mode 100644 index d885ca4e..00000000 --- a/recipes/curl/02-threaded-resolver-fix.patch +++ /dev/null @@ -1,31 +0,0 @@ -commit 3cb4bb6b5fb8a936cb69e2e9ea6a4e692122abb9 -Author: Jakub Zakrzewski -Date: Tue Aug 15 13:21:33 2017 -0400 - - curl-confopts.m4: fix --disable-threaded-resolver - - Closes https://github.com/curl/curl/issues/1784 - -diff --git a/m4/curl-confopts.m4 b/m4/curl-confopts.m4 -index d77a884d5..6dcd0f1a6 100644 ---- a/m4/curl-confopts.m4 -+++ b/m4/curl-confopts.m4 -@@ -37,14 +37,14 @@ AC_HELP_STRING([--enable-threaded-resolver],[Enable threaded resolver]) - AC_HELP_STRING([--disable-threaded-resolver],[Disable threaded resolver]), - OPT_THRES=$enableval) - case "$OPT_THRES" in -- *) -- dnl configure option not specified -- want_thres="yes" -- ;; - no) - dnl --disable-threaded-resolver option used - want_thres="no" - ;; -+ *) -+ dnl configure option not specified -+ want_thres="yes" -+ ;; - esac - AC_MSG_RESULT([$want_thres]) - ]) diff --git a/recipes/curl/recipe.sh b/recipes/curl/recipe.sh index 71f896e4..b404b20e 100644 --- a/recipes/curl/recipe.sh +++ b/recipes/curl/recipe.sh @@ -1,10 +1,10 @@ -TAR=https://curl.haxx.se/download/curl-7.55.1.tar.gz -BRANCH=redox +VERSION="7.62.0" +TAR=https://curl.haxx.se/download/curl-$VERSION.tar.gz BUILD_DEPENDS=(openssl zlib) DEPENDS="ca-certificates" function recipe_version { - printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + echo "$VERSION" skip=1 } @@ -14,9 +14,19 @@ function recipe_update { } function recipe_build { + sysroot="$(realpath ../sysroot)" wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub autoreconf -i - ./configure --prefix=/ --host=${HOST} --disable-tftp --disable-ftp --disable-ntlm-wb --disable-threaded-resolver --with-zlib="$PWD/../sysroot" --with-ssl="$PWD/../sysroot" --with-ca-path=/ssl/certs + ./configure \ + --prefix=/ \ + --host=${HOST} \ + --disable-tftp \ + --disable-ftp \ + --disable-ntlm-wb \ + --disable-threaded-resolver \ + --with-zlib="$sysroot" \ + --with-ssl="$sysroot" \ + --with-ca-path=/ssl/certs make -j"$(nproc)" skip=1 } @@ -34,6 +44,5 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install - rm -rf "$1"/share skip=1 } diff --git a/recipes/eduke32/recipe.sh b/recipes/eduke32/recipe.sh index 426eb715..f60f998b 100644 --- a/recipes/eduke32/recipe.sh +++ b/recipes/eduke32/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { } function recipe_build { - sysroot="${PWD}/../sysroot" + sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" export CFLAGS="-I$sysroot/include -I$sysroot/include/SDL" export SDLCONFIG="$sysroot/bin/sdl-config" diff --git a/recipes/expat/recipe.sh b/recipes/expat/recipe.sh index f98564e4..e2277e78 100644 --- a/recipes/expat/recipe.sh +++ b/recipes/expat/recipe.sh @@ -30,6 +30,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install - rm -rf "$1"/{lib/pkgconfig,share} + rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/freeglut/recipe.sh b/recipes/freeglut/recipe.sh new file mode 100644 index 00000000..3108f208 --- /dev/null +++ b/recipes/freeglut/recipe.sh @@ -0,0 +1,44 @@ +TAR=https://cytranet.dl.sourceforge.net/project/freeglut/freeglut/3.0.0/freeglut-3.0.0.tar.gz + +BUILD_DEPENDS=(mesa mesa_glu) + +function recipe_version { + echo "3.0.0" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include" + export CPPFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib" + cmake \ + -D CMAKE_TOOLCHAIN_FILE=../redox_cross_toolchain.cmake \ + -D CMAKE_INSTALL_PREFIX=/ \ + -D FREEGLUT_GLES=0 \ + . + #./configure --host="${HOST}" --prefix=/ --enable-osmesa + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} diff --git a/recipes/freeglut/redox_cross_toolchain.cmake b/recipes/freeglut/redox_cross_toolchain.cmake new file mode 100644 index 00000000..d2a3fb7b --- /dev/null +++ b/recipes/freeglut/redox_cross_toolchain.cmake @@ -0,0 +1 @@ +SET(CMAKE_SYSTEM_NAME Redox) diff --git a/recipes/freetype/recipe.sh b/recipes/freetype/recipe.sh index ce2cc9a2..5999cf0d 100644 --- a/recipes/freetype/recipe.sh +++ b/recipes/freetype/recipe.sh @@ -1,4 +1,4 @@ -VERSION=2.9 +VERSION=2.9.1 TAR=https://download.savannah.gnu.org/releases/freetype/freetype-$VERSION.tar.gz BUILD_DEPENDS=(zlib libpng) @@ -13,10 +13,9 @@ function recipe_update { } function recipe_build { - sysroot="${PWD}/../sysroot" + sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" - ./configure --host=${HOST} --prefix='/' make -j"$(nproc)" skip=1 @@ -35,6 +34,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install - sed -i -e "s%//lib/libpng16.la%$dest/../sysroot/lib/libpng16.la%" "$dest/lib/libfreetype.la" + rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/gears/recipe.sh b/recipes/gears/recipe.sh index e4c618a8..11f49bf1 100644 --- a/recipes/gears/recipe.sh +++ b/recipes/gears/recipe.sh @@ -12,7 +12,7 @@ function recipe_update { function recipe_build { cp ../gears.c gears.c - sysroot="${PWD}/../sysroot" + sysroot="$(realpath ../sysroot)" set -x "${CXX}" -I "$sysroot/include" -L "$sysroot/lib" gears.c -o gears -lorbital -lOSMesa -lGLU -lglapi -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -lm set +x diff --git a/recipes/gigalomania/recipe.sh b/recipes/gigalomania/recipe.sh index e1f02003..5a215443 100644 --- a/recipes/gigalomania/recipe.sh +++ b/recipes/gigalomania/recipe.sh @@ -15,7 +15,7 @@ function recipe_update { function recipe_build { export CPPHOST=${HOST}-g++ - sysroot="${PWD}/../sysroot" + sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" make all -j"$(nproc)" diff --git a/recipes/git/recipe.sh b/recipes/git/recipe.sh index b004bd8e..fe275cc5 100644 --- a/recipes/git/recipe.sh +++ b/recipes/git/recipe.sh @@ -16,7 +16,7 @@ function recipe_update { } function recipe_build { - sysroot="${PWD}/../sysroot" + sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" ./configure --host=${HOST} --prefix=/ ac_cv_fread_reads_directories=yes ac_cv_snprintf_returns_bogus=yes ac_cv_lib_curl_curl_global_init=yes CURL_CONFIG=no diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh index fb651298..a4878e05 100644 --- a/recipes/gnu-binutils/recipe.sh +++ b/recipes/gnu-binutils/recipe.sh @@ -12,7 +12,7 @@ function recipe_update { } function recipe_build { - sysroot="${PWD}/../sysroot" + sysroot="$(realpath ../sysroot)" mkdir -p "$sysroot/usr" ln -sf "$sysroot/include" "$sysroot/usr/include" ln -sf "$sysroot/lib" "$sysroot/usr/lib" diff --git a/recipes/jansson/recipe.sh b/recipes/jansson/recipe.sh index a89e9caa..b40c9906 100644 --- a/recipes/jansson/recipe.sh +++ b/recipes/jansson/recipe.sh @@ -12,7 +12,7 @@ function recipe_update { } function recipe_build { - sysroot="${PWD}/../sysroot" + sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" ./configure --host=${HOST} --prefix=/ diff --git a/recipes/libiconv/recipe.sh b/recipes/libiconv/recipe.sh index 71f90b2c..da36d9f6 100644 --- a/recipes/libiconv/recipe.sh +++ b/recipes/libiconv/recipe.sh @@ -30,5 +30,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install + rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/libjpeg/recipe.sh b/recipes/libjpeg/recipe.sh index b3361c51..5db06702 100644 --- a/recipes/libjpeg/recipe.sh +++ b/recipes/libjpeg/recipe.sh @@ -30,5 +30,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install + rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/libpng/recipe.sh b/recipes/libpng/recipe.sh index 8acf9f35..1aa63ed9 100644 --- a/recipes/libpng/recipe.sh +++ b/recipes/libpng/recipe.sh @@ -37,5 +37,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install + rm -f "$dest/bin/"*-config "$dest/lib/"*.la skip=1 } diff --git a/recipes/mdp/recipe.sh b/recipes/mdp/recipe.sh index e3a9b834..006a7e9f 100644 --- a/recipes/mdp/recipe.sh +++ b/recipes/mdp/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { } function recipe_build { - sysroot="${PWD}/../sysroot" + sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include -I$sysroot/include/ncursesw" export LDFLAGS="-L$sysroot/lib" make -j"$(nproc)" diff --git a/recipes/mesa/recipe.sh b/recipes/mesa/recipe.sh index 35e311be..069702da 100644 --- a/recipes/mesa/recipe.sh +++ b/recipes/mesa/recipe.sh @@ -14,13 +14,14 @@ function recipe_update { } function recipe_build { - NOCONFIGURE=1 ./autogen.sh - sysroot="${PWD}/../sysroot" + sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1" export CPPFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1" export LDFLAGS="-L$sysroot/lib" - EXPAT_LIBS="-lexpat" EXPAT_CFLAGS="." \ - ./configure --host="${HOST}" --prefix=/ \ + NOCONFIGURE=1 ./autogen.sh + ./configure \ + --host="${HOST}" \ + --prefix=/ \ --disable-dri \ --disable-dri3 \ --disable-driglx-direct \ @@ -48,6 +49,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install - sed -i -e "s%//lib/libglapi.la%$dest/lib/libglapi.la%" "$dest/lib/"*.la + rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/mesa_glu/recipe.sh b/recipes/mesa_glu/recipe.sh index 59876c4f..b93a7dbd 100644 --- a/recipes/mesa_glu/recipe.sh +++ b/recipes/mesa_glu/recipe.sh @@ -1,8 +1,9 @@ -TAR=ftp://ftp.freedesktop.org/pub/mesa/glu/glu-9.0.0.tar.bz2 +VERSION=9.0.0 +TAR=ftp://ftp.freedesktop.org/pub/mesa/glu/glu-$VERSION.tar.bz2 BUILD_DEPENDS=(mesa) function recipe_version { - echo "9.0.0" + echo "$VERSION" skip=1 } @@ -12,11 +13,11 @@ function recipe_update { } function recipe_build { - wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub - sysroot="${PWD}/../sysroot" + sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" export CPPFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" + wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --host="${HOST}" --prefix=/ --enable-osmesa make -j"$(nproc)" skip=1 @@ -35,5 +36,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install + rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/netsurf/recipe.sh b/recipes/netsurf/recipe.sh index e00cab21..4fca8bc6 100644 --- a/recipes/netsurf/recipe.sh +++ b/recipes/netsurf/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { } function recipe_build { - sysroot="${PWD}/../sysroot" + sysroot="$(realpath ../sysroot)" export TARGET="framebuffer" export CFLAGS="-I$sysroot/include -I${PWD}/inst-${TARGET}/include" export LDFLAGS="-L$sysroot/lib -L${PWD}/inst-${TARGET}/lib -Wl,--allow-multiple-definition" diff --git a/recipes/newlibtest/recipe.sh b/recipes/newlibtest/recipe.sh index 237f08c1..9dac27fe 100644 --- a/recipes/newlibtest/recipe.sh +++ b/recipes/newlibtest/recipe.sh @@ -12,7 +12,7 @@ function recipe_update { } function recipe_build { - sysroot="${PWD}/../sysroot" + sysroot="$(realpath ../sysroot)" export CFLAGS="-static -nostdinc -I $sysroot/include -I /usr/lib/gcc/x86_64-unknown-redox/7.0.1/include/ -nostdlib -L $sysroot/lib" export CRT="$sysroot/lib/crt0.o" export CLIBS="-lc -lm" diff --git a/recipes/openjazz/recipe.sh b/recipes/openjazz/recipe.sh index b051dec2..aae30c7c 100644 --- a/recipes/openjazz/recipe.sh +++ b/recipes/openjazz/recipe.sh @@ -2,10 +2,6 @@ VERSION=0.1 GIT=https://github.com/AlisterT/openjazz BUILD_DEPENDS=(sdl liborbital zlib) -export CFLAGS="-I$PWD/sysroot/include/ -I$PWD/sysroot/include/SDL/ -UUSE_SOCKETS -UUSE_SDL_NET" -export CPPFLAGS="$CFLAGS" -export LDFLAGS="-L$PWD/sysroot/lib/" - function recipe_version { echo "$VERSION" skip=1 @@ -17,6 +13,10 @@ function recipe_update { } function recipe_build { + sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include -UUSE_SOCKETS -UUSE_SDL_NET" + export CPPFLAGS="$CFLAGS" + export LDFLAGS="-L$sysroot/lib" touch INSTALL NEWS README AUTHORS ChangeLog COPYING autoreconf -fvi autoconf diff --git a/recipes/osdemo/recipe.sh b/recipes/osdemo/recipe.sh index 9ed2cd26..3c3f0ce7 100644 --- a/recipes/osdemo/recipe.sh +++ b/recipes/osdemo/recipe.sh @@ -12,7 +12,7 @@ function recipe_update { function recipe_build { cp ../osdemo.c osdemo.c - sysroot="${PWD}/../sysroot" + sysroot="$(realpath ../sysroot)" set -x "${CXX}" -I "$sysroot/include" -L "$sysroot/lib" osdemo.c -o osdemo -lorbital -lOSMesa -lGLU -lglapi -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -lm set +x diff --git a/recipes/readline/recipe.sh b/recipes/readline/recipe.sh index 665678bc..c13c1dac 100644 --- a/recipes/readline/recipe.sh +++ b/recipes/readline/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { } function recipe_build { - sysroot="${PWD}/../sysroot" + sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" export CFLAGS="-I$sysroot/include" ./configure --disable-shared --host=${HOST} --prefix="" diff --git a/recipes/scummvm/recipe.sh b/recipes/scummvm/recipe.sh index bd573dad..6d5ca82b 100644 --- a/recipes/scummvm/recipe.sh +++ b/recipes/scummvm/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub - sysroot="${PWD}/../sysroot" + sysroot="$(realpath ../sysroot)" ./configure \ --host=${HOST} \ diff --git a/recipes/sdl/recipe.sh b/recipes/sdl/recipe.sh index 433536b6..375ac777 100644 --- a/recipes/sdl/recipe.sh +++ b/recipes/sdl/recipe.sh @@ -2,9 +2,6 @@ VERSION=1.2.15 TAR=https://www.libsdl.org/release/SDL-$VERSION.tar.gz BUILD_DEPENDS=(liborbital) -export CFLAGS="-I$PWD/sysroot/include/" -export LDFLAGS="-L$PWD/sysroot/lib/" - function recipe_version { echo "$VERSION" skip=1 @@ -16,8 +13,22 @@ function recipe_update { } function recipe_build { + sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib" ./autogen.sh - ./configure --prefix=/ --host=${HOST} --disable-shared --disable-pulseaudio --disable-video-x11 --disable-loadso --disable-threads --enable-audio --enable-dummyaudio --enable-video-orbital --enable-cdrom + ./configure \ + --host=${HOST} \ + --prefix=/ \ + --disable-shared \ + --disable-pulseaudio \ + --disable-video-x11 \ + --disable-loadso \ + --disable-threads \ + --enable-audio \ + --enable-dummyaudio \ + --enable-video-orbital \ + --enable-cdrom make -j"$(nproc)" skip=1 } @@ -35,5 +46,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install + rm -f "$dest/bin/"*-config "$dest/lib/"*.la skip=1 } diff --git a/recipes/sdl_gfx/recipe.sh b/recipes/sdl_gfx/recipe.sh index bf8bc274..351c8b97 100644 --- a/recipes/sdl_gfx/recipe.sh +++ b/recipes/sdl_gfx/recipe.sh @@ -1,10 +1,7 @@ -VERSION=2.0.25 +VERSION=2.0.26 TAR=https://sourceforge.net/projects/sdlgfx/files/SDL_gfx-$VERSION.tar.gz BUILD_DEPENDS=(sdl liborbital libiconv) -export CFLAGS="-I$PWD/sysroot/include/" -export LDFLAGS="-L$PWD/sysroot/lib/" - function recipe_version { echo "$VERSION" skip=1 @@ -16,6 +13,9 @@ function recipe_update { } function recipe_build { + sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib" ./autogen.sh ./configure --prefix=/ --host=${HOST} --disable-shared --disable-sdltest make -j"$(nproc)" @@ -34,8 +34,7 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" - sysroot="$(realpath ../sysroot)" make DESTDIR="$dest" install - sed -i -e "s%//lib/libSDL.la%$sysroot/lib/libSDL.la%" "$dest/lib/"*.la + rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/sdl_image/recipe.sh b/recipes/sdl_image/recipe.sh index cb5ff8d2..75c6f2c6 100644 --- a/recipes/sdl_image/recipe.sh +++ b/recipes/sdl_image/recipe.sh @@ -1,9 +1,6 @@ VERSION=1.2.12 TAR=https://www.libsdl.org/projects/SDL_image/release/SDL_image-$VERSION.tar.gz -BUILD_DEPENDS=(sdl liborbital libjpeg libpng zlib) - -export CFLAGS="-I$PWD/sysroot/include/" -export LDFLAGS="-L$PWD/sysroot/lib/" +BUILD_DEPENDS=(sdl liborbital libiconv libjpeg libpng zlib) function recipe_version { echo "$VERSION" @@ -16,6 +13,9 @@ function recipe_update { } function recipe_build { + sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib" ./autogen.sh ./configure --prefix=/ --host=${HOST} --disable-shared --disable-sdltest --enable-png --enable-jpg make -j"$(nproc)" @@ -34,10 +34,7 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" - sysroot="$(realpath ../sysroot)" make DESTDIR="$dest" install - sed -i -e "s%//lib/libpng.la%$sysroot/lib/libpng.la%" "$dest/lib/"*.la - sed -i -e "s%//lib/libjpeg.la%$sysroot/lib/libjpeg.la%" "$dest/lib/"*.la - sed -i -e "s%//lib/libSDL.la%$sysroot/lib/libSDL.la%" "$dest/lib/"*.la + rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/sdl_mixer/recipe.sh b/recipes/sdl_mixer/recipe.sh index 1ffab835..12b3b4e8 100644 --- a/recipes/sdl_mixer/recipe.sh +++ b/recipes/sdl_mixer/recipe.sh @@ -2,9 +2,6 @@ VERSION=1.2.12 TAR=https://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-$VERSION.tar.gz BUILD_DEPENDS=(sdl liborbital) -export CFLAGS="-I$PWD/sysroot/include/" -export LDFLAGS="-L$PWD/sysroot/lib/" - function recipe_version { echo "$VERSION" skip=1 @@ -16,8 +13,20 @@ function recipe_update { } function recipe_build { + sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib" ./autogen.sh - ./configure --prefix=/ --host=${HOST} --disable-shared --disable-sdltest --disable-music-cmd --disable-music-mp3 --disable-smpegtest --disable-music-midi --disable-music-mod + ./configure \ + --prefix=/ \ + --host=${HOST} \ + --disable-shared \ + --disable-sdltest \ + --disable-music-cmd \ + --disable-music-mp3 \ + --disable-smpegtest \ + --disable-music-midi \ + --disable-music-mod make -j"$(nproc)" skip=1 } @@ -34,8 +43,7 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" - sysroot="$(realpath ../sysroot)" make DESTDIR="$dest" install - sed -i -e "s%//lib/libSDL.la%$sysroot/lib/libSDL.la%" "$dest/lib/"*.la + rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/sdl_ttf/01_redox.patch b/recipes/sdl_ttf/01_redox.patch index 9366f51c..1ed96943 100644 --- a/recipes/sdl_ttf/01_redox.patch +++ b/recipes/sdl_ttf/01_redox.patch @@ -1,7 +1,7 @@ -diff -rupNw source-original/config.sub source/config.sub ---- source-original/config.sub 2012-01-19 07:30:05.000000000 +0100 -+++ source/config.sub 2018-05-01 17:31:52.766229515 +0200 -@@ -1276,7 +1276,7 @@ case $os in +diff -ruw source/config.sub source-new/config.sub +--- source/config.sub 2012-01-14 21:44:08.000000000 -0700 ++++ source-new/config.sub 2018-12-10 12:17:28.136784814 -0700 +@@ -1276,7 +1276,7 @@ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ @@ -9,4 +9,53 @@ diff -rupNw source-original/config.sub source/config.sub + | -kopensolaris* | -redox* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ \ No newline at end of file + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ +Only in source-new: config.sub.orig +diff -ruw source/configure.in source-new/configure.in +--- source/configure.in 2012-01-14 21:44:08.000000000 -0700 ++++ source-new/configure.in 2018-12-10 12:17:12.724883206 -0700 +@@ -91,38 +91,13 @@ + AM_CONDITIONAL(USE_VERSION_RC, test x$use_version_rc = xtrue) + + dnl Check for the FreeType 2 library +-dnl +-dnl Get the cflags and libraries from the freetype-config script +-dnl +-AC_ARG_WITH(freetype-prefix,[ --with-freetype-prefix=PFX Prefix where FREETYPE is +-installed (optional)], +- freetype_prefix="$withval", freetype_prefix="") +-AC_ARG_WITH(freetype-exec-prefix,[ --with-freetype-exec-prefix=PFX Exec prefix +-where FREETYPE is installed (optional)], +- freetype_exec_prefix="$withval", freetype_exec_prefix="") +- +-if test x$freetype_exec_prefix != x ; then +- freetype_args="$freetype_args --exec-prefix=$freetype_exec_prefix" +- if test x${FREETYPE_CONFIG+set} != xset ; then +- FREETYPE_CONFIG=$freetype_exec_prefix/bin/freetype-config +- fi +-fi +-if test x$freetype_prefix != x ; then +- freetype_args="$freetype_args --prefix=$freetype_prefix" +- if test x${FREETYPE_CONFIG+set} != xset ; then +- FREETYPE_CONFIG=$freetype_prefix/bin/freetype-config +- fi +-fi +-AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, no) +-no_freetype="" +-if test "$FREETYPE_CONFIG" = "no" ; then +- AC_MSG_ERROR([ +-*** Unable to find FreeType2 library (http://www.freetype.org/) ++PKG_CHECK_MODULES([FT2], [freetype2 >= 7.0.1], [], [dnl ++ AC_CHECK_FT2(,,[AC_MSG_ERROR([dnl ++*** Unable to find FreeType2 library (http://www.freetype.org/)])] ++ ) + ]) +-else +- CFLAGS="$CFLAGS `$FREETYPE_CONFIG $freetypeconf_args --cflags`" +- LIBS="$LIBS `$FREETYPE_CONFIG $freetypeconf_args --libs`" +-fi ++CFLAGS="$CFLAGS $FT2_CFLAGS" ++LIBS="$LIBS $FT2_LIBS" + + dnl Check for SDL + SDL_VERSION=1.2.4 diff --git a/recipes/sdl_ttf/recipe.sh b/recipes/sdl_ttf/recipe.sh index 3e3e2c6a..2fbc04b1 100644 --- a/recipes/sdl_ttf/recipe.sh +++ b/recipes/sdl_ttf/recipe.sh @@ -2,9 +2,6 @@ VERSION=2.0.11 TAR=https://www.libsdl.org/projects/SDL_ttf/release/SDL_ttf-$VERSION.tar.gz BUILD_DEPENDS=(sdl liborbital freetype libpng zlib) -export CFLAGS="-I$PWD/sysroot/include/ -I$PWD/sysroot/include/freetype2/" -export LDFLAGS="-L$PWD/sysroot/lib/" - function recipe_version { echo "$VERSION" skip=1 @@ -16,10 +13,9 @@ function recipe_update { } function recipe_build { - sysroot="${PWD}/../sysroot" - export SDL_CONFIG="$sysroot/bin/sdl-config" - export FREETYPE_CONFIG="$sysroot/bin/freetype-config" - + sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib" ./autogen.sh ./configure --prefix=/ --host=${HOST} --disable-shared --disable-sdltest make -j"$(nproc)" @@ -38,10 +34,7 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" - sysroot="$(realpath ../sysroot)" make DESTDIR="$dest" install - sed -i -e "s%//lib/libfreetype.la%$sysroot/lib/libfreetype.la%" "$dest/lib/"*.la - sed -i -e "s%//lib/libpng16.la%$sysroot/lib/libpng16.la%" "$dest/lib/"*.la - sed -i -e "s%//lib/libSDL.la%$sysroot/lib/libSDL.la%" "$dest/lib/"*.la + rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/sopwith/recipe.sh b/recipes/sopwith/recipe.sh index 432c5f71..eddace87 100644 --- a/recipes/sopwith/recipe.sh +++ b/recipes/sopwith/recipe.sh @@ -14,9 +14,10 @@ function recipe_update { function recipe_build { wget -O autotools/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub - sysroot="${PWD}/../sysroot" + sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include -I$sysroot/include/SDL" export LDFLAGS="-L$sysroot/lib" + export LIBS="-lSDL -lorbital" # TODO: Uses sdl-config instead of pkg-config ./configure --host=${HOST} --prefix='' --with-sdl-prefix="$sysroot" make -j"$(nproc)" skip=1 diff --git a/recipes/ssh/recipe.sh b/recipes/ssh/recipe.sh index 43ad7c67..ffdba538 100644 --- a/recipes/ssh/recipe.sh +++ b/recipes/ssh/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function newlib_build { rm -rf ../newlib - sysroot="${PWD}/../sysroot" + sysroot="$(realpath ../sysroot)" cd .. git clone --recursive https://github.com/sajattack/newlib -b ssh-deps cd newlib @@ -42,7 +42,7 @@ function newlib_build { function recipe_build { newlib_build - sysroot="${PWD}/../sysroot" + sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" ./configure --host=${HOST} --prefix=/ diff --git a/recipes/syobonaction/recipe.sh b/recipes/syobonaction/recipe.sh index 73243465..aa8dc940 100644 --- a/recipes/syobonaction/recipe.sh +++ b/recipes/syobonaction/recipe.sh @@ -13,11 +13,10 @@ function recipe_update { } function recipe_build { - sysroot="${PWD}/../sysroot" - export SDL_CONFIG="$sysroot/bin/sdl-config" - export CPPFLAGS="-I$sysroot/include -I$sysroot/include/SDL" + sysroot="$(realpath ../sysroot)" + export SDL_CONFIG="${PKG_CONFIG} sdl" + export CPPFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" - make -j"$(nproc)" skip=1 } diff --git a/recipes/vim/recipe.sh b/recipes/vim/recipe.sh index a0d0e686..98623b57 100644 --- a/recipes/vim/recipe.sh +++ b/recipes/vim/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { } function recipe_build { - sysroot="${PWD}/../sysroot" + sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" export vim_cv_toupper_broken=set diff --git a/recipes/zlib/recipe.sh b/recipes/zlib/recipe.sh index 1aa1cd8e..0a294e31 100644 --- a/recipes/zlib/recipe.sh +++ b/recipes/zlib/recipe.sh @@ -30,6 +30,5 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install - rm -rf "$1"/share skip=1 } From e5b2d755a6bd777ecb1ce4e69a29946d83504656 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 10 Dec 2018 12:44:50 -0700 Subject: [PATCH 0480/3180] Fix redox patch --- recipes/curl/02-redox-sys-select.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/curl/02-redox-sys-select.patch b/recipes/curl/02-redox-sys-select.patch index 10c69120..71602628 100644 --- a/recipes/curl/02-redox-sys-select.patch +++ b/recipes/curl/02-redox-sys-select.patch @@ -6,7 +6,7 @@ diff -ruw source/include/curl/curl.h source-new/include/curl/curl.h defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \ defined(ANDROID) || defined(__ANDROID__) || defined(__OpenBSD__) || \ - defined(__CYGWIN__) || \ -+ defined(__CYGWIN__) || defined(__redox__) \ ++ defined(__CYGWIN__) || defined(__redox__) || \ (defined(__FreeBSD_version) && (__FreeBSD_version < 800000)) #include #endif From cb6e329030ea78b0cacfc21f3d8e16432e2f0308 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 10 Dec 2018 13:18:10 -0700 Subject: [PATCH 0481/3180] Recipe cleanups --- recipes/dash/recipe.sh | 2 +- recipes/diffutils/recipe.sh | 4 ++-- recipes/freeciv/recipe.sh | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/recipes/dash/recipe.sh b/recipes/dash/recipe.sh index 8a98fb4f..fa1296cc 100644 --- a/recipes/dash/recipe.sh +++ b/recipes/dash/recipe.sh @@ -31,6 +31,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install - ln -s "dash" "$1/bin/sh" + ln -s "dash" "$dest/bin/sh" skip=1 } diff --git a/recipes/diffutils/recipe.sh b/recipes/diffutils/recipe.sh index 0b57376f..474e55df 100644 --- a/recipes/diffutils/recipe.sh +++ b/recipes/diffutils/recipe.sh @@ -31,7 +31,7 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install - ${HOST}-strip "$1"/bin/* - rm -rf "$1"/{lib,share} + ${HOST}-strip "$dest"/bin/* + rm -rf "$dest"/{lib,share} skip=1 } diff --git a/recipes/freeciv/recipe.sh b/recipes/freeciv/recipe.sh index 7916cb42..e705d775 100644 --- a/recipes/freeciv/recipe.sh +++ b/recipes/freeciv/recipe.sh @@ -26,7 +26,8 @@ function recipe_build { --enable-fcmp=cli \ --with-sdl-prefix="$sysroot" \ ac_cv_lib_SDL_image_IMG_Load=yes \ - ac_cv_lib_SDL_ttf_TTF_OpenFont=yes + ac_cv_lib_SDL_ttf_TTF_OpenFont=yes \ + ac_cv_lib_SDL_gfx_rotozoomSurface=yes make -j"$(nproc)" V=1 skip=1 } From f4b46490ffb9b1a53827591598dd15a68fbf5e06 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 10 Dec 2018 13:40:22 -0700 Subject: [PATCH 0482/3180] Do not remove sdl-config --- recipes/prboom/recipe.sh | 3 ++- recipes/sdl/recipe.sh | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/prboom/recipe.sh b/recipes/prboom/recipe.sh index 95ac1924..6f3a5a02 100644 --- a/recipes/prboom/recipe.sh +++ b/recipes/prboom/recipe.sh @@ -13,9 +13,10 @@ function recipe_update { } function recipe_build { + sysroot="$(realpath ../sysroot)" autoreconf -if wget -O autotools/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub - ./configure --prefix=/ --host=${HOST} --disable-sdltest --disable-cpu-opt --disable-gl --without-net --with-sdl-prefix="$PWD/../sysroot" + ./configure --prefix=/ --host=${HOST} --disable-sdltest --disable-cpu-opt --disable-gl --without-net --with-sdl-prefix="$sysroot" make -j"$(nproc)" skip=1 } diff --git a/recipes/sdl/recipe.sh b/recipes/sdl/recipe.sh index 375ac777..8d762a0d 100644 --- a/recipes/sdl/recipe.sh +++ b/recipes/sdl/recipe.sh @@ -46,6 +46,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install - rm -f "$dest/bin/"*-config "$dest/lib/"*.la + rm -f "$dest/lib/"*.la skip=1 } From 423b3a9cada93aa63ac66b06541190309f65546a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 10 Dec 2018 13:44:09 -0700 Subject: [PATCH 0483/3180] Remove libtool files from curl --- recipes/curl/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/curl/recipe.sh b/recipes/curl/recipe.sh index b404b20e..77e30965 100644 --- a/recipes/curl/recipe.sh +++ b/recipes/curl/recipe.sh @@ -44,5 +44,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install + rm -f "$dest/lib/"*.la skip=1 } From 377940b84b26f61aff25da8b8b51d56ab1c98fe7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 10 Dec 2018 13:55:11 -0700 Subject: [PATCH 0484/3180] Fixes for dosbox and ncurses --- recipes/dosbox/recipe.sh | 10 +++++----- recipes/ncurses/01-config-sub.patch | 21 --------------------- recipes/ncurses/recipe.sh | 10 +++++++--- 3 files changed, 12 insertions(+), 29 deletions(-) delete mode 100644 recipes/ncurses/01-config-sub.patch diff --git a/recipes/dosbox/recipe.sh b/recipes/dosbox/recipe.sh index 974f5187..d6771f16 100644 --- a/recipes/dosbox/recipe.sh +++ b/recipes/dosbox/recipe.sh @@ -2,10 +2,6 @@ VERSION=0.74 TAR=https://sourceforge.net/projects/dosbox/files/dosbox/$VERSION/dosbox-$VERSION.tar.gz/download BUILD_DEPENDS=(sdl liborbital) -export CFLAGS="-I$PWD/sysroot/include/SDL/" -export CPPFLAGS="-I$PWD/sysroot/include/SDL/" -export LDFLAGS="-L$PWD/sysroot/lib/" - function recipe_version { echo "$VERSION" skip=1 @@ -17,9 +13,13 @@ function recipe_update { } function recipe_build { + sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include/SDL" + export CPPFLAGS="-I$sysroot/include/SDL" + export LDFLAGS="-L$sysroot/lib" ./autogen.sh wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub - ./configure --host=${HOST} --prefix='' --disable-opengl --disable-sdltest --with-sdl-prefix="$PWD/../sysroot" + ./configure --host=${HOST} --prefix='' --disable-opengl --disable-sdltest --with-sdl-prefix="$sysroot" make -j"$(nproc)" skip=1 } diff --git a/recipes/ncurses/01-config-sub.patch b/recipes/ncurses/01-config-sub.patch deleted file mode 100644 index 8ed32be6..00000000 --- a/recipes/ncurses/01-config-sub.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -ru source/config.sub source-new/config.sub ---- source/config.sub 2015-05-02 13:52:04.000000000 +0200 -+++ source-new/config.sub 2017-08-13 13:12:16.485670615 +0200 -@@ -2,7 +2,7 @@ - # Configuration validation subroutine script. - # Copyright 1992-2015 Free Software Foundation, Inc. - --timestamp='2015-03-08' -+timestamp='2017-08-13' - - # This file is free software; you can redistribute it and/or modify it - # under the terms of the GNU General Public License as published by -@@ -1371,7 +1371,7 @@ - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. -- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ -+ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* | -redox* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* | -plan9* \ diff --git a/recipes/ncurses/recipe.sh b/recipes/ncurses/recipe.sh index 44ab1c74..dda9affd 100644 --- a/recipes/ncurses/recipe.sh +++ b/recipes/ncurses/recipe.sh @@ -1,4 +1,4 @@ -VERSION=6.0 +VERSION=6.1 TAR=http://ftp.gnu.org/gnu/ncurses/ncurses-$VERSION.tar.gz DEPENDS="terminfo" @@ -13,8 +13,12 @@ function recipe_update { } function recipe_build { - export CPPFLAGS="-P" - ./configure --host=${HOST} --prefix="" --disable-db-install --without-ada + ./configure \ + --host=${HOST} \ + --prefix="" \ + --disable-db-install \ + --without-ada \ + cf_cv_func_mkstemp=yes make -j"$(nproc)" skip=1 } From e6285e3c28244a1de18c17f620f33fb361054c8d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 10 Dec 2018 15:42:20 -0700 Subject: [PATCH 0485/3180] WIP sdl2 patch, fix gears and osdemo clean builds --- recipes/gears/recipe.sh | 6 +- recipes/osdemo/recipe.sh | 6 +- recipes/sdl2/01_orbital.patch | 675 ++++++++++++++++++++++++++++++++++ recipes/sdl2/recipe.sh | 52 +++ 4 files changed, 737 insertions(+), 2 deletions(-) create mode 100644 recipes/sdl2/01_orbital.patch create mode 100644 recipes/sdl2/recipe.sh diff --git a/recipes/gears/recipe.sh b/recipes/gears/recipe.sh index 11f49bf1..e9756dc7 100644 --- a/recipes/gears/recipe.sh +++ b/recipes/gears/recipe.sh @@ -10,8 +10,12 @@ function recipe_update { skip=1 } +function recipe_prepare { + mkdir source + cp gears.c source +} + function recipe_build { - cp ../gears.c gears.c sysroot="$(realpath ../sysroot)" set -x "${CXX}" -I "$sysroot/include" -L "$sysroot/lib" gears.c -o gears -lorbital -lOSMesa -lGLU -lglapi -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -lm diff --git a/recipes/osdemo/recipe.sh b/recipes/osdemo/recipe.sh index 3c3f0ce7..8e046a72 100644 --- a/recipes/osdemo/recipe.sh +++ b/recipes/osdemo/recipe.sh @@ -10,8 +10,12 @@ function recipe_update { skip=1 } +function recipe_prepare { + mkdir source + cp osdemo.c source +} + function recipe_build { - cp ../osdemo.c osdemo.c sysroot="$(realpath ../sysroot)" set -x "${CXX}" -I "$sysroot/include" -L "$sysroot/lib" osdemo.c -o osdemo -lorbital -lOSMesa -lGLU -lglapi -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -lm diff --git a/recipes/sdl2/01_orbital.patch b/recipes/sdl2/01_orbital.patch new file mode 100644 index 00000000..3c5f2ada --- /dev/null +++ b/recipes/sdl2/01_orbital.patch @@ -0,0 +1,675 @@ +diff -ruwN source/configure.in source-new/configure.in +--- source/configure.in 2018-10-31 09:07:22.000000000 -0600 ++++ source-new/configure.in 2018-12-10 14:20:34.303368238 -0700 +@@ -2282,6 +2282,20 @@ + fi + } + ++dnl Set up the Orbital video driver. ++CheckOrbitalVideo() ++{ ++ AC_ARG_ENABLE(video-orbital, ++AC_HELP_STRING([--enable-video-orbital], [use orbital video driver [[default=yes]]]), ++ , enable_video_orbital=yes) ++ if test x$enable_video_orbital = xyes; then ++ AC_DEFINE(SDL_VIDEO_DRIVER_ORBITAL) ++ SOURCES="$SOURCES $srcdir/src/video/orbital/*.c" ++ SDL_LIBS="$SDL_LIBS -Wl,--gc-sections -lorbital" ++ have_video=yes ++ fi ++} ++ + dnl Set up the QNX video driver if enabled + CheckQNXVideo() + { +@@ -3362,7 +3376,7 @@ + + dnl Set up the configuration based on the host platform! + case "$host" in +- *-*-linux*|*-*-uclinux*|*-*-gnu*|*-*-k*bsd*-gnu|*-*-bsdi*|*-*-freebsd*|*-*-dragonfly*|*-*-netbsd*|*-*-openbsd*|*-*-sysv5*|*-*-solaris*|*-*-hpux*|*-*-aix*|*-*-minix*|*-*-nto*) ++ *-*-linux*|*-*-uclinux*|*-*-redox*|*-*-gnu*|*-*-k*bsd*-gnu|*-*-bsdi*|*-*-freebsd*|*-*-dragonfly*|*-*-netbsd*|*-*-openbsd*|*-*-sysv5*|*-*-solaris*|*-*-hpux*|*-*-aix*|*-*-minix*|*-*-nto*) + case "$host" in + *-*-android*) + # Android +@@ -3383,6 +3397,7 @@ + ;; + *-*-linux*) ARCH=linux ;; + *-*-uclinux*) ARCH=linux ;; ++ *-*-redox*) ARCH=redox ;; + *-*-kfreebsd*-gnu) ARCH=kfreebsd-gnu ;; + *-*-knetbsd*-gnu) ARCH=knetbsd-gnu ;; + *-*-kopenbsd*-gnu) ARCH=kopenbsd-gnu ;; +@@ -3404,6 +3419,7 @@ + CheckVisibilityHidden + CheckDeclarationAfterStatement + CheckDummyVideo ++ CheckOrbitalVideo + CheckDiskAudio + CheckDummyAudio + CheckDLOPEN +diff -ruwN source/include/SDL_config.h.in source-new/include/SDL_config.h.in +--- source/include/SDL_config.h.in 2018-10-31 09:07:22.000000000 -0600 ++++ source-new/include/SDL_config.h.in 2018-12-10 14:21:20.848804696 -0700 +@@ -320,6 +320,7 @@ + #undef SDL_VIDEO_DRIVER_DIRECTFB + #undef SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC + #undef SDL_VIDEO_DRIVER_DUMMY ++#undef SDL_VIDEO_DRIVER_ORBITAL + #undef SDL_VIDEO_DRIVER_WINDOWS + #undef SDL_VIDEO_DRIVER_WAYLAND + #undef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH +diff -ruwN source/src/dynapi/SDL_dynapi.h source-new/src/dynapi/SDL_dynapi.h +--- source/src/dynapi/SDL_dynapi.h 2018-10-31 09:07:22.000000000 -0600 ++++ source-new/src/dynapi/SDL_dynapi.h 2018-12-10 14:27:37.746233683 -0700 +@@ -55,6 +55,8 @@ + #define SDL_DYNAMIC_API 0 + #elif defined(__clang_analyzer__) + #define SDL_DYNAMIC_API 0 /* Turn off for static analysis, so reports are more clear. */ ++#elif defined(__redox__) ++#define SDL_DYNAMIC_API 0 + #endif + + /* everyone else. This is where we turn on the API if nothing forced it off. */ +diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orbital/SDL_orbitalevents.c +--- source/src/video/orbital/SDL_orbitalevents.c 1969-12-31 17:00:00.000000000 -0700 ++++ source-new/src/video/orbital/SDL_orbitalevents.c 2018-12-10 14:40:45.587655256 -0700 +@@ -0,0 +1,197 @@ ++/* ++ SDL - Simple DirectMedia Layer ++ Copyright (C) 1997-2012 Sam Lantinga ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free Software ++ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++ Sam Lantinga ++ slouken@libsdl.org ++*/ ++#include "SDL_config.h" ++ ++#include "SDL.h" ++#include "../../events/SDL_sysevents.h" ++#include "../../events/SDL_events_c.h" ++ ++#include ++#include "SDL_orbitalvideo.h" ++#include "SDL_orbitalevents_c.h" ++ ++#include ++ ++static SDL_Keycode keymap[128]; ++ ++/* Static variables so only changes are reported */ ++static bool last_button_left = false; ++static bool last_button_middle = false; ++static bool last_button_right = false; ++ ++void ORBITAL_PumpEvents(_THIS) ++{ ++ SDL_Keysym keysym; ++ ++ void* event_iter = orb_window_events(this->hidden->window); ++ OrbEventOption oeo = orb_events_next(event_iter); ++ ++ while (oeo.tag != OrbEventOption_None) { ++ switch (oeo.tag) { ++ case OrbEventOption_Key: ++ keysym.unicode = oeo.key.character; ++ keysym.scancode = oeo.key.scancode; ++ keysym.sym = keymap[oeo.key.scancode]; ++ keysym.mod = KMOD_NONE; ++ ++ SDL_PrivateKeyboard(oeo.key.pressed ? SDL_PRESSED : SDL_RELEASED, &keysym); ++ break; ++ case OrbEventOption_Mouse: ++ SDL_PrivateMouseMotion(0, 0, oeo.mouse.x, oeo.mouse.y); ++ break; ++ case OrbEventOption_Button: ++ if (oeo.button.left ^ last_button_left) ++ SDL_PrivateMouseButton(oeo.button.left ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_LEFT, 0, 0); ++ if (oeo.button.middle ^ last_button_middle) ++ SDL_PrivateMouseButton(oeo.button.middle ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_MIDDLE, 0, 0); ++ if (oeo.button.right ^ last_button_right) ++ SDL_PrivateMouseButton(oeo.button.right ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_RIGHT, 0, 0); ++ ++ last_button_left = oeo.button.left; ++ last_button_middle = oeo.button.middle; ++ last_button_right = oeo.button.right; ++ break; ++ case OrbEventOption_Scroll: ++ if (oeo.scroll.y > 0) { ++ SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_WHEELUP, 0, 0); ++ SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_WHEELUP, 0, 0); ++ } else if (oeo.scroll.y < 0) { ++ SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_WHEELDOWN, 0, 0); ++ SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_WHEELDOWN, 0, 0); ++ } ++ break; ++ case OrbEventOption_Quit: ++ SDL_PrivateQuit(); ++ break; ++ case OrbEventOption_Focus: ++ SDL_PrivateAppActive(oeo.focus.focused, SDL_APPMOUSEFOCUS); ++ break; ++ case OrbEventOption_Move: ++ // oeo.move.x, oeo.move.y ++ break; ++ case OrbEventOption_Resize: ++ SDL_PrivateResize(oeo.resize.width, oeo.resize.height); ++ break; ++ case OrbEventOption_Screen: ++ // oeo.screen.width, oeo.screen.height ++ break; ++ case OrbEventOption_Unknown: ++ // oeo.unknown.code, oeo.unknown.a, oeo.unknown.b ++ break; ++ default: ++ break; ++ } ++ ++ oeo = orb_events_next(event_iter); ++ } ++ ++ orb_events_destroy(event_iter); ++} ++ ++void ORBITAL_InitOSKeymap(_THIS) ++{ ++ int i; ++ for ( i = 0; i < SDL_arraysize(keymap); ++i ) ++ keymap[i] = SDLK_UNKNOWN; ++ ++ keymap[ORB_KEY_ESC] = SDLK_ESCAPE; ++ keymap[ORB_KEY_1] = SDLK_1; ++ keymap[ORB_KEY_2] = SDLK_2; ++ keymap[ORB_KEY_3] = SDLK_3; ++ keymap[ORB_KEY_4] = SDLK_4; ++ keymap[ORB_KEY_5] = SDLK_5; ++ keymap[ORB_KEY_6] = SDLK_6; ++ keymap[ORB_KEY_7] = SDLK_7; ++ keymap[ORB_KEY_8] = SDLK_8; ++ keymap[ORB_KEY_9] = SDLK_9; ++ keymap[ORB_KEY_0] = SDLK_0; ++ keymap[ORB_KEY_MINUS] = SDLK_MINUS; ++ keymap[ORB_KEY_EQUALS] = SDLK_EQUALS; ++ keymap[ORB_KEY_BKSP] = SDLK_BACKSPACE; ++ keymap[ORB_KEY_TAB] = SDLK_TAB; ++ keymap[ORB_KEY_Q] = SDLK_q; ++ keymap[ORB_KEY_W] = SDLK_w; ++ keymap[ORB_KEY_E] = SDLK_e; ++ keymap[ORB_KEY_R] = SDLK_r; ++ keymap[ORB_KEY_T] = SDLK_t; ++ keymap[ORB_KEY_Y] = SDLK_y; ++ keymap[ORB_KEY_U] = SDLK_u; ++ keymap[ORB_KEY_I] = SDLK_i; ++ keymap[ORB_KEY_O] = SDLK_o; ++ keymap[ORB_KEY_P] = SDLK_p; ++ keymap[ORB_KEY_BRACE_OPEN] = SDLK_LEFTBRACKET; ++ keymap[ORB_KEY_BRACE_CLOSE] = SDLK_RIGHTBRACKET; ++ keymap[ORB_KEY_ENTER] = SDLK_RETURN; ++ keymap[ORB_KEY_CTRL] = SDLK_LCTRL; ++ keymap[ORB_KEY_A] = SDLK_a; ++ keymap[ORB_KEY_S] = SDLK_s; ++ keymap[ORB_KEY_D] = SDLK_d; ++ keymap[ORB_KEY_F] = SDLK_f; ++ keymap[ORB_KEY_G] = SDLK_g; ++ keymap[ORB_KEY_H] = SDLK_h; ++ keymap[ORB_KEY_J] = SDLK_j; ++ keymap[ORB_KEY_K] = SDLK_k; ++ keymap[ORB_KEY_L] = SDLK_l; ++ keymap[ORB_KEY_SEMICOLON] = SDLK_SEMICOLON; ++ keymap[ORB_KEY_QUOTE] = SDLK_QUOTE; ++ keymap[ORB_KEY_TICK] = SDLK_BACKQUOTE; ++ keymap[ORB_KEY_LEFT_SHIFT] = SDLK_LSHIFT; ++ keymap[ORB_KEY_RIGHT_SHIFT] = SDLK_RSHIFT; ++ keymap[ORB_KEY_BACKSLASH] = SDLK_BACKSLASH; ++ keymap[ORB_KEY_Z] = SDLK_z; ++ keymap[ORB_KEY_X] = SDLK_x; ++ keymap[ORB_KEY_C] = SDLK_c; ++ keymap[ORB_KEY_V] = SDLK_v; ++ keymap[ORB_KEY_B] = SDLK_b; ++ keymap[ORB_KEY_N] = SDLK_n; ++ keymap[ORB_KEY_M] = SDLK_m; ++ keymap[ORB_KEY_COMMA] = SDLK_COMMA; ++ keymap[ORB_KEY_PERIOD] = SDLK_PERIOD; ++ keymap[ORB_KEY_SLASH] = SDLK_SLASH; ++ keymap[ORB_KEY_ALT] = SDLK_LALT; ++ keymap[ORB_KEY_SPACE] = SDLK_SPACE; ++ keymap[ORB_KEY_CAPS] = SDLK_CAPSLOCK; ++ keymap[ORB_KEY_F1] = SDLK_F1; ++ keymap[ORB_KEY_F2] = SDLK_F2; ++ keymap[ORB_KEY_F3] = SDLK_F3; ++ keymap[ORB_KEY_F4] = SDLK_F4; ++ keymap[ORB_KEY_F5] = SDLK_F5; ++ keymap[ORB_KEY_F6] = SDLK_F6; ++ keymap[ORB_KEY_F7] = SDLK_F7; ++ keymap[ORB_KEY_F8] = SDLK_F8; ++ keymap[ORB_KEY_F9] = SDLK_F9; ++ keymap[ORB_KEY_F10] = SDLK_F10; ++ keymap[ORB_KEY_F11] = SDLK_F11; ++ keymap[ORB_KEY_F12] = SDLK_F12; ++ keymap[ORB_KEY_HOME] = SDLK_HOME; ++ keymap[ORB_KEY_UP] = SDLK_UP; ++ keymap[ORB_KEY_PGUP] = SDLK_PAGEUP; ++ keymap[ORB_KEY_LEFT] = SDLK_LEFT; ++ keymap[ORB_KEY_RIGHT] = SDLK_RIGHT; ++ keymap[ORB_KEY_END] = SDLK_END; ++ keymap[ORB_KEY_DOWN] = SDLK_DOWN; ++ keymap[ORB_KEY_PGDN] = SDLK_PAGEDOWN; ++ keymap[ORB_KEY_INSERT] = SDLK_INSERT; ++ keymap[ORB_KEY_DEL] = SDLK_DELETE; ++} ++ ++/* end of SDL_orbitalevents.c ... */ +diff -ruwN source/src/video/orbital/SDL_orbitalevents_c.h source-new/src/video/orbital/SDL_orbitalevents_c.h +--- source/src/video/orbital/SDL_orbitalevents_c.h 1969-12-31 17:00:00.000000000 -0700 ++++ source-new/src/video/orbital/SDL_orbitalevents_c.h 2018-12-10 14:30:44.441918559 -0700 +@@ -0,0 +1,32 @@ ++/* ++ SDL - Simple DirectMedia Layer ++ Copyright (C) 1997-2012 Sam Lantinga ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free Software ++ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++ Sam Lantinga ++ slouken@libsdl.org ++*/ ++#include "SDL_config.h" ++ ++#include "SDL_orbitalvideo.h" ++ ++/* Variables and functions exported by SDL_sysevents.c to other parts ++ of the native video subsystem (SDL_sysvideo.c) ++*/ ++extern void ORBITAL_InitOSKeymap(_THIS); ++extern void ORBITAL_PumpEvents(_THIS); ++ ++/* end of SDL_orbitalevents_c.h ... */ +diff -ruwN source/src/video/orbital/SDL_orbitalmouse.c source-new/src/video/orbital/SDL_orbitalmouse.c +--- source/src/video/orbital/SDL_orbitalmouse.c 1969-12-31 17:00:00.000000000 -0700 ++++ source-new/src/video/orbital/SDL_orbitalmouse.c 2018-12-10 14:30:44.441918559 -0700 +@@ -0,0 +1,33 @@ ++/* ++ SDL - Simple DirectMedia Layer ++ Copyright (C) 1997-2012 Sam Lantinga ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free Software ++ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++ Sam Lantinga ++ slouken@libsdl.org ++*/ ++#include "SDL_config.h" ++ ++#include "SDL_mouse.h" ++#include "../../events/SDL_events_c.h" ++ ++#include "SDL_orbitalmouse_c.h" ++ ++ ++/* The implementation dependent data for the window manager cursor */ ++struct WMcursor { ++ int unused; ++}; +diff -ruwN source/src/video/orbital/SDL_orbitalmouse_c.h source-new/src/video/orbital/SDL_orbitalmouse_c.h +--- source/src/video/orbital/SDL_orbitalmouse_c.h 1969-12-31 17:00:00.000000000 -0700 ++++ source-new/src/video/orbital/SDL_orbitalmouse_c.h 2018-12-10 14:30:44.441918559 -0700 +@@ -0,0 +1,26 @@ ++/* ++ SDL - Simple DirectMedia Layer ++ Copyright (C) 1997-2012 Sam Lantinga ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free Software ++ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++ Sam Lantinga ++ slouken@libsdl.org ++*/ ++#include "SDL_config.h" ++ ++#include "SDL_orbitalvideo.h" ++ ++/* Functions to be exported */ +diff -ruwN source/src/video/orbital/SDL_orbitalvideo.c source-new/src/video/orbital/SDL_orbitalvideo.c +--- source/src/video/orbital/SDL_orbitalvideo.c 1969-12-31 17:00:00.000000000 -0700 ++++ source-new/src/video/orbital/SDL_orbitalvideo.c 2018-12-10 14:30:44.441918559 -0700 +@@ -0,0 +1,252 @@ ++/* ++ SDL - Simple DirectMedia Layer ++ Copyright (C) 1997-2012 Sam Lantinga ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free Software ++ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++ Sam Lantinga ++ slouken@libsdl.org ++*/ ++#include "SDL_config.h" ++ ++/* Orbital SDL video driver implementation ++ * ++ * Initial work by Ryan C. Gordon (icculus@icculus.org). A good portion ++ * of this was cut-and-pasted from Stephane Peter's work in the AAlib ++ * SDL video driver. Renamed to "DUMMY" by Sam Lantinga. ++ * Repurposed to ORBITAL by Jeremy Soller. ++ */ ++ ++#include "SDL_video.h" ++#include "SDL_mouse.h" ++#include "../SDL_sysvideo.h" ++#include "../SDL_pixels_c.h" ++#include "../../events/SDL_events_c.h" ++ ++#include ++#include "SDL_orbitalvideo.h" ++#include "SDL_orbitalevents_c.h" ++#include "SDL_orbitalmouse_c.h" ++ ++#include ++#include ++#include ++#include ++ ++#define ORBITALVID_DRIVER_NAME "orbital" ++ ++/* Initialization/Query functions */ ++static int ORBITAL_VideoInit(_THIS, SDL_PixelFormat *vformat); ++static SDL_Rect **ORBITAL_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags); ++static SDL_Surface *ORBITAL_SetVideoMode(_THIS, SDL_Surface *current, int width, int height, int bpp, Uint32 flags); ++static int ORBITAL_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors); ++static void ORBITAL_VideoQuit(_THIS); ++static void ORBITAL_SetCaption(_THIS, const char *title, const char *icon); ++ ++/* Hardware surface functions */ ++static int ORBITAL_AllocHWSurface(_THIS, SDL_Surface *surface); ++static int ORBITAL_LockHWSurface(_THIS, SDL_Surface *surface); ++static void ORBITAL_UnlockHWSurface(_THIS, SDL_Surface *surface); ++static void ORBITAL_FreeHWSurface(_THIS, SDL_Surface *surface); ++ ++/* etc. */ ++static void ORBITAL_UpdateRects(_THIS, int numrects, SDL_Rect *rects); ++ ++/* ORBITAL driver bootstrap functions */ ++ ++static int ORBITAL_Available(void) ++{ ++ return(1); ++} ++ ++static void ORBITAL_DeleteDevice(SDL_VideoDevice *device) ++{ ++ SDL_free(device->hidden); ++ SDL_free(device); ++} ++ ++static SDL_VideoDevice *ORBITAL_CreateDevice(int devindex) ++{ ++ SDL_VideoDevice *device; ++ ++ /* Initialize all variables that we clean on shutdown */ ++ device = (SDL_VideoDevice *)SDL_malloc(sizeof(SDL_VideoDevice)); ++ if ( device ) { ++ SDL_memset(device, 0, (sizeof *device)); ++ device->hidden = (struct SDL_PrivateVideoData *) ++ SDL_malloc((sizeof *device->hidden)); ++ } ++ if ( (device == NULL) || (device->hidden == NULL) ) { ++ SDL_OutOfMemory(); ++ if ( device ) { ++ SDL_free(device); ++ } ++ return(0); ++ } ++ SDL_memset(device->hidden, 0, (sizeof *device->hidden)); ++ ++ /* Set the function pointers */ ++ device->VideoInit = ORBITAL_VideoInit; ++ device->ListModes = ORBITAL_ListModes; ++ device->SetVideoMode = ORBITAL_SetVideoMode; ++ device->CreateYUVOverlay = NULL; ++ device->SetColors = ORBITAL_SetColors; ++ device->UpdateRects = ORBITAL_UpdateRects; ++ device->VideoQuit = ORBITAL_VideoQuit; ++ device->AllocHWSurface = ORBITAL_AllocHWSurface; ++ device->CheckHWBlit = NULL; ++ device->FillHWRect = NULL; ++ device->SetHWColorKey = NULL; ++ device->SetHWAlpha = NULL; ++ device->LockHWSurface = ORBITAL_LockHWSurface; ++ device->UnlockHWSurface = ORBITAL_UnlockHWSurface; ++ device->FlipHWSurface = NULL; ++ device->FreeHWSurface = ORBITAL_FreeHWSurface; ++ device->SetCaption = ORBITAL_SetCaption; ++ device->SetIcon = NULL; ++ device->IconifyWindow = NULL; ++ device->GrabInput = NULL; ++ device->GetWMInfo = NULL; ++ device->InitOSKeymap = ORBITAL_InitOSKeymap; ++ device->PumpEvents = ORBITAL_PumpEvents; ++ ++ device->free = ORBITAL_DeleteDevice; ++ ++ return device; ++} ++ ++VideoBootStrap ORBITAL_bootstrap = { ++ ORBITALVID_DRIVER_NAME, "SDL orbital video driver", ++ ORBITAL_Available, ORBITAL_CreateDevice ++}; ++ ++ ++int ORBITAL_VideoInit(_THIS, SDL_PixelFormat *vformat) ++{ ++ fprintf(stderr, "WARNING: You are using the SDL orbital video driver!\n"); ++ ++ /* Determine the screen depth (use default 32-bit depth) */ ++ /* we change this during the SDL_SetVideoMode implementation... */ ++ vformat->BitsPerPixel = 32; ++ vformat->BytesPerPixel = 4; ++ ++ /* We're done! */ ++ return(0); ++} ++ ++SDL_Rect **ORBITAL_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags) ++{ ++ if (format->BitsPerPixel != 32) ++ return NULL; ++ ++ return (SDL_Rect **) -1; ++} ++ ++SDL_Surface *ORBITAL_SetVideoMode(_THIS, SDL_Surface *current, ++ int width, int height, int bpp, Uint32 flags) ++{ ++ if ( bpp != 32 ) { ++ SDL_SetError("Unsupported color depth - must use 32-bits per pixel"); ++ return(NULL); ++ } ++ ++ if (this->hidden->window) { ++ orb_window_set_size(this->hidden->window, width, height); ++ } else { ++ uint32_t orb_flags = ORB_WINDOW_ASYNC; ++ if (flags & SDL_RESIZABLE) ++ orb_flags |= ORB_WINDOW_RESIZABLE; ++ ++ this->hidden->window = orb_window_new_flags(-1, -1, width, height, "SDL", orb_flags); ++ if (!this->hidden->window) { ++ SDL_SetError("Couldn't create window for requested mode"); ++ return(NULL); ++ } ++ } ++ ++ fprintf(stderr, "Setting mode %dx%d@%d\n", width, height, bpp); ++ ++ /* Allocate the new pixel format for the screen */ ++ if ( ! SDL_ReallocFormat(current, bpp, 0x00FF0000, 0x0000FF00, 0x000000FF, 0xFF000000) ) { ++ orb_window_destroy(this->hidden->window); ++ this->hidden->window = NULL; ++ ++ SDL_SetError("Couldn't allocate new pixel format for requested mode"); ++ return(NULL); ++ } ++ ++ /* Set up the new mode framebuffer */ ++ current->flags = flags /*& SDL_FULLSCREEN*/; ++ current->w = width; ++ current->h = height; ++ current->pitch = width * (bpp / 8); ++ current->pixels = orb_window_data(this->hidden->window); ++ ++ /* We're done */ ++ return(current); ++} ++ ++static void ORBITAL_SetCaption(_THIS, const char *title, const char *icon) ++{ ++ if (this->hidden->window) ++ orb_window_set_title(this->hidden->window, title); ++} ++ ++/* We don't actually allow hardware surfaces other than the main one */ ++static int ORBITAL_AllocHWSurface(_THIS, SDL_Surface *surface) ++{ ++ return(-1); ++} ++static void ORBITAL_FreeHWSurface(_THIS, SDL_Surface *surface) ++{ ++ return; ++} ++ ++/* We need to wait for vertical retrace on page flipped displays */ ++static int ORBITAL_LockHWSurface(_THIS, SDL_Surface *surface) ++{ ++ return(0); ++} ++ ++static void ORBITAL_UnlockHWSurface(_THIS, SDL_Surface *surface) ++{ ++ return; ++} ++ ++static void ORBITAL_UpdateRects(_THIS, int numrects, SDL_Rect *rects) ++{ ++ if (this->hidden->window) { ++ SDL_SetAlphaChannel(this->screen, SDL_ALPHA_OPAQUE); ++ orb_window_sync(this->hidden->window); ++ } ++} ++ ++int ORBITAL_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors) ++{ ++ /* do nothing of note. */ ++ return(1); ++} ++ ++/* Note: If we are terminated, this could be called in the middle of ++ another SDL video routine -- notably UpdateRects. ++*/ ++void ORBITAL_VideoQuit(_THIS) ++{ ++ if (this->hidden->window) { ++ orb_window_destroy(this->hidden->window); ++ this->hidden->window = NULL; ++ this->screen->pixels = NULL; ++ } ++} +diff -ruwN source/src/video/orbital/SDL_orbitalvideo.h source-new/src/video/orbital/SDL_orbitalvideo.h +--- source/src/video/orbital/SDL_orbitalvideo.h 1969-12-31 17:00:00.000000000 -0700 ++++ source-new/src/video/orbital/SDL_orbitalvideo.h 2018-12-10 14:30:44.441918559 -0700 +@@ -0,0 +1,39 @@ ++/* ++ SDL - Simple DirectMedia Layer ++ Copyright (C) 1997-2012 Sam Lantinga ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free Software ++ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++ Sam Lantinga ++ slouken@libsdl.org ++*/ ++#include "SDL_config.h" ++ ++#ifndef _SDL_orbitalvideo_h ++#define _SDL_orbitalvideo_h ++ ++#include "../SDL_sysvideo.h" ++ ++/* Hidden "this" pointer for the video functions */ ++#define _THIS SDL_VideoDevice *this ++ ++ ++/* Private display data */ ++ ++struct SDL_PrivateVideoData { ++ void *window; ++}; ++ ++#endif /* _SDL_orbitalvideo_h */ diff --git a/recipes/sdl2/recipe.sh b/recipes/sdl2/recipe.sh new file mode 100644 index 00000000..f17533ea --- /dev/null +++ b/recipes/sdl2/recipe.sh @@ -0,0 +1,52 @@ +VERSION=2.0.9 +TAR=https://www.libsdl.org/release/SDL2-$VERSION.tar.gz +BUILD_DEPENDS=(liborbital) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib" + ./autogen.sh + ./configure \ + --host=${HOST} \ + --prefix=/ \ + --disable-shared \ + --disable-pulseaudio \ + --disable-video-x11 \ + --disable-loadso \ + --disable-sdl-dlopen \ + --disable-threads \ + --enable-audio \ + --enable-dummyaudio \ + --enable-video-orbital \ + --enable-cdrom + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + rm -f "$dest/lib/"*.la + skip=1 +} From a0401c41c6943c5afd42c01499baa1e730821e6d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 10 Dec 2018 15:50:30 -0700 Subject: [PATCH 0486/3180] Fix color channels when using osmesa --- recipes/gears/gears.c | 2 +- recipes/gears/recipe.sh | 1 + recipes/osdemo/osdemo.c | 2 +- recipes/osdemo/recipe.sh | 1 + 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/recipes/gears/gears.c b/recipes/gears/gears.c index 75873ede..4f0e0387 100644 --- a/recipes/gears/gears.c +++ b/recipes/gears/gears.c @@ -285,7 +285,7 @@ main(int argc, char *argv[]) limit = 0; } - OSMesaContext ctx = OSMesaCreateContextExt(OSMESA_RGBA, 16, 0, 0, NULL); + OSMesaContext ctx = OSMesaCreateContextExt(OSMESA_BGRA, 16, 0, 0, NULL); if (!ctx) { printf("OSMesaCreateContextExt failed\n"); return 1; diff --git a/recipes/gears/recipe.sh b/recipes/gears/recipe.sh index e9756dc7..6d0a6e13 100644 --- a/recipes/gears/recipe.sh +++ b/recipes/gears/recipe.sh @@ -11,6 +11,7 @@ function recipe_update { } function recipe_prepare { + rm -rf source mkdir source cp gears.c source } diff --git a/recipes/osdemo/osdemo.c b/recipes/osdemo/osdemo.c index 9b0b4c9b..ae4bfa2a 100644 --- a/recipes/osdemo/osdemo.c +++ b/recipes/osdemo/osdemo.c @@ -415,7 +415,7 @@ test(GLenum type, GLint bits, const char *filename) type == GL_UNSIGNED_SHORT || type == GL_FLOAT); - ctx = OSMesaCreateContextExt(OSMESA_RGBA, z, stencil, accum, NULL ); + ctx = OSMesaCreateContextExt(OSMESA_BGRA, z, stencil, accum, NULL ); if (!ctx) { printf("OSMesaCreateContextExt() failed!\n"); return 0; diff --git a/recipes/osdemo/recipe.sh b/recipes/osdemo/recipe.sh index 8e046a72..9c8662b4 100644 --- a/recipes/osdemo/recipe.sh +++ b/recipes/osdemo/recipe.sh @@ -11,6 +11,7 @@ function recipe_update { } function recipe_prepare { + rm -rf source mkdir source cp osdemo.c source } From 20accfbf29b8655b4b7e19e0f19149734ff5fd38 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 10 Dec 2018 17:12:48 -0700 Subject: [PATCH 0487/3180] Add recipes for winit and glutin examples --- recipes/glutin/recipe.sh | 4 ++++ recipes/winit/recipe.sh | 4 ++++ 2 files changed, 8 insertions(+) create mode 100644 recipes/glutin/recipe.sh create mode 100644 recipes/winit/recipe.sh diff --git a/recipes/glutin/recipe.sh b/recipes/glutin/recipe.sh new file mode 100644 index 00000000..e8600bd9 --- /dev/null +++ b/recipes/glutin/recipe.sh @@ -0,0 +1,4 @@ +GIT=https://gitlab.redox-os.org/redox-os/glutin.git +GIT_UPSTREAM=https://github.com/tomaka/glutin.git +GIT_BRANCH=redox +CARGOFLAGS="--example window" diff --git a/recipes/winit/recipe.sh b/recipes/winit/recipe.sh new file mode 100644 index 00000000..48808d54 --- /dev/null +++ b/recipes/winit/recipe.sh @@ -0,0 +1,4 @@ +GIT=https://gitlab.redox-os.org/redox-os/winit.git +GIT_UPSTREAM=https://github.com/tomaka/winit.git +GIT_BRANCH=redox +CARGOFLAGS="--example window" From 30eaa01beafe5e7e925e96d76b202ab5f99ead9b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 10 Dec 2018 18:58:33 -0700 Subject: [PATCH 0488/3180] Fix glutin and winit compilation --- recipes/glutin/recipe.sh | 16 +++++++++++++++- recipes/winit/recipe.sh | 2 +- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/recipes/glutin/recipe.sh b/recipes/glutin/recipe.sh index e8600bd9..80a4712e 100644 --- a/recipes/glutin/recipe.sh +++ b/recipes/glutin/recipe.sh @@ -1,4 +1,18 @@ GIT=https://gitlab.redox-os.org/redox-os/glutin.git GIT_UPSTREAM=https://github.com/tomaka/glutin.git -GIT_BRANCH=redox +BUILD_DEPENDS=(mesa) +BRANCH=redox CARGOFLAGS="--example window" + +function recipe_build { + sysroot="$(realpath ../sysroot)" + cp -p "$ROOT/Xargo.toml" "Xargo.toml" + xargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ + -- \ + -L "${sysroot}/lib" \ + -l OSMesa \ + -l glapi \ + -l pthread \ + -l stdc++ + skip=1 +} diff --git a/recipes/winit/recipe.sh b/recipes/winit/recipe.sh index 48808d54..eaa6196b 100644 --- a/recipes/winit/recipe.sh +++ b/recipes/winit/recipe.sh @@ -1,4 +1,4 @@ GIT=https://gitlab.redox-os.org/redox-os/winit.git GIT_UPSTREAM=https://github.com/tomaka/winit.git -GIT_BRANCH=redox +BRANCH=redox CARGOFLAGS="--example window" From e39d50027abe99f1494aa2b4e25c2e0b1d4a9325 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Tue, 11 Dec 2018 22:30:45 +0100 Subject: [PATCH 0489/3180] Fix SDL_Flip, fix syobonaction recipe --- recipes/openjazz/01_redox.patch | 12 ------------ recipes/prboom/01_redox.patch | 12 ------------ recipes/sdl/01_orbital.patch | 2 +- recipes/syobonaction/01_redox.patch | 27 +++------------------------ 4 files changed, 4 insertions(+), 49 deletions(-) delete mode 100644 recipes/openjazz/01_redox.patch diff --git a/recipes/openjazz/01_redox.patch b/recipes/openjazz/01_redox.patch deleted file mode 100644 index 605dae0b..00000000 --- a/recipes/openjazz/01_redox.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -rupNw source-original/src/io/gfx/video.cpp source/src/io/gfx/video.cpp ---- source-original/src/io/gfx/video.cpp 2018-12-03 01:26:03.479047234 +0100 -+++ source/src/io/gfx/video.cpp 2018-12-02 21:50:10.650021649 +0100 -@@ -516,7 +516,7 @@ void Video::flip (int mspf, PaletteEffec - } - - // Show what has been drawn -- SDL_Flip(screen); -+ SDL_UpdateRect(screen, 0, 0, screen->w, screen->h); - - return; - diff --git a/recipes/prboom/01_redox.patch b/recipes/prboom/01_redox.patch index 35f29a67..29b1d2dc 100644 --- a/recipes/prboom/01_redox.patch +++ b/recipes/prboom/01_redox.patch @@ -10,15 +10,3 @@ diff -burpN source-original/configure.ac source/configure.ac AC_DECL_SYS_SIGLIST AC_HEADER_SYS_WAIT AC_CHECK_HEADERS(unistd.h asm/byteorder.h sched.h) -diff -burpN source-original/src/SDL/i_video.c source/src/SDL/i_video.c ---- source-original/src/SDL/i_video.c 2008-10-18 15:32:29.000000000 +0200 -+++ source/src/SDL/i_video.c 2018-04-23 00:51:18.944949507 +0200 -@@ -407,7 +407,7 @@ void I_FinishUpdate (void) - I_UploadNewPalette(newpal); - newpal = NO_PALETTE_CHANGE; - } -- SDL_Flip(screen); -+ SDL_UpdateRect(screen, 0, 0, screen->w, screen->h); - } - - // diff --git a/recipes/sdl/01_orbital.patch b/recipes/sdl/01_orbital.patch index 3d066f36..16f7d073 100644 --- a/recipes/sdl/01_orbital.patch +++ b/recipes/sdl/01_orbital.patch @@ -564,7 +564,7 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.c source/src/vide + } + + /* Set up the new mode framebuffer */ -+ current->flags = flags /*& SDL_FULLSCREEN*/; ++ current->flags = flags & (~SDL_DOUBLEBUF); + current->w = width; + current->h = height; + current->pitch = width * (bpp / 8); diff --git a/recipes/syobonaction/01_redox.patch b/recipes/syobonaction/01_redox.patch index 718fae80..b232eac2 100644 --- a/recipes/syobonaction/01_redox.patch +++ b/recipes/syobonaction/01_redox.patch @@ -10,18 +10,6 @@ diff -rupNw source-original/DxLib.cpp source/DxLib.cpp NULL); SDL_ShowCursor(SDL_DISABLE); -diff -rupNw source-original/DxLib.h source/DxLib.h ---- source-original/DxLib.h 2018-12-08 19:59:16.777579338 +0100 -+++ source/DxLib.h 2018-12-08 01:26:50.763357641 +0100 -@@ -18,7 +18,7 @@ - #define FALSE 0 - #define byte unsigned char - --#define ScreenFlip() SDL_Flip(screen) -+#define ScreenFlip() SDL_UpdateRect(screen, 0, 0, screen->w, screen->h) - #define GetNowCount() SDL_GetTicks() - - //UNIMPLEMENTED - macro substitution diff -rupNw source-original/main.cpp source/main.cpp --- source-original/main.cpp 2018-12-08 19:59:16.781579399 +0100 +++ source/main.cpp 2018-12-08 18:11:33.716589712 +0100 @@ -37,15 +25,6 @@ diff -rupNw source-original/main.cpp source/main.cpp parseArgs(argc, argv); if (DxLib_Init() == -1) return 1; -@@ -4706,7 +4708,7 @@ void deinit() - setc0(); - FillScreen(); - DrawString(200, 200, "EXITING...", GetColor(255, 255, 255)); -- SDL_Flip(screen); -+ SDL_UpdateRect(screen, 0, 0, screen->w, screen->h); - - //SURFACES - for (t = 0; t < 51; t++) diff -rupNw source-original/Makefile source/Makefile --- source-original/Makefile 2018-12-08 19:59:16.777579338 +0100 +++ source/Makefile 2018-12-08 01:32:40.319685337 +0100 @@ -55,10 +34,10 @@ diff -rupNw source-original/Makefile source/Makefile + ${CXX} ${LDFLAGS} main.o loadg.o DxLib.o -o SyobonAction `${SDL_CONFIG} --libs` -lSDL_gfx -lSDL_image -lSDL_mixer -lpng -ljpeg -lz -lSDL -lSDL_ttf -lfreetype main.o:main.cpp - gcc -c main.cpp -+ ${CXX} ${CPPFLAGS} -c main.cpp ++ ${CXX} ${CPPFLAGS} `${SDL_CONFIG} --cflags` -c main.cpp loadg.o:loadg.cpp - gcc -c loadg.cpp -+ ${CXX} ${CPPFLAGS} -c loadg.cpp ++ ${CXX} ${CPPFLAGS} `${SDL_CONFIG} --cflags` -c loadg.cpp DxLib.o:DxLib.cpp - gcc -c DxLib.cpp -+ ${CXX} ${CPPFLAGS} -c DxLib.cpp ++ ${CXX} ${CPPFLAGS} `${SDL_CONFIG} --cflags` -c DxLib.cpp From c8ccdf4615ad2e0f1c1d6424fd967233de1ce625 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Wed, 12 Dec 2018 01:57:02 +0100 Subject: [PATCH 0490/3180] Add tar checksum support (SHA-256) --- cook.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cook.sh b/cook.sh index cdff410e..18e59863 100755 --- a/cook.sh +++ b/cook.sh @@ -84,6 +84,11 @@ function op { wget "$TAR" -O source.tar fi + if [ -n "$TAR_SHA256" ] + then + sha256sum -c <<< "${TAR_SHA256} source.tar" + fi + if [ ! -d source ] then mkdir source From 5ac46651883adc05ffde2c805e26ff781c56175b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 11 Dec 2018 20:03:33 -0700 Subject: [PATCH 0491/3180] Fix linking of glutin --- recipes/glutin/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/glutin/recipe.sh b/recipes/glutin/recipe.sh index 80a4712e..9e2a08af 100644 --- a/recipes/glutin/recipe.sh +++ b/recipes/glutin/recipe.sh @@ -12,7 +12,7 @@ function recipe_build { -L "${sysroot}/lib" \ -l OSMesa \ -l glapi \ - -l pthread \ - -l stdc++ + -l stdc++ \ + -C link-args="-Wl,--whole-archive -lpthread -Wl,--no-whole-archive" skip=1 } From 8f1a0e4081b8fdc7949d6de230a70ab5b3375224 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 12 Dec 2018 21:01:33 -0700 Subject: [PATCH 0492/3180] WIP: llvm recipe --- recipes/llvm/recipe.sh | 66 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 recipes/llvm/recipe.sh diff --git a/recipes/llvm/recipe.sh b/recipes/llvm/recipe.sh new file mode 100644 index 00000000..5d9cde65 --- /dev/null +++ b/recipes/llvm/recipe.sh @@ -0,0 +1,66 @@ +GIT=https://gitlab.redox-os.org/redox-os/llvm.git +BRANCH=redox + +function recipe_version { + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_prepare { + mkdir -p build + skip=1 +} + +function recipe_build { + source="$(realpath ../source)" + sysroot="$(realpath ../sysroot)" + CMAKE_ARGS=( + -Wno-dev + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_INSTALL_PREFIX="/" + -DLLVM_DEFAULT_TARGET_TRIPLE="$HOST" + -DLLVM_TARGET_ARCH="$ARCH" + -DLLVM_TARGETS_TO_BUILD=X86 + -DCMAKE_SYSTEM_NAME=Generic + -DPYTHON_EXECUTABLE="/usr/bin/python2" + -DUNIX=1 + -DLLVM_ENABLE_THREADS=Off + -DLLVM_INCLUDE_TESTS=Off + -target="$HOST" + -DLLVM_TABLEGEN="/usr/bin/llvm-tblgen-4.0" + -I"$sysroot/include" + -DCMAKE_CXX_FLAGS='--std=gnu++11' + -DLLVM_TOOL_LTO_BUILD=Off + -DLLVM_TOOL_LLVM_PROFDATA_BUILD=Off + -DLLVM_TOOL_LLI_BUILD=Off + -DLLVM_TOOL_RDOBJ_BUILD=Off + -DLLVM_TOOL_LLVM_COV_BUILD=Off + -DLLVM_TOOL_LLVM_XRAY_BUILD=Off + -DLLVM_TOOL_LLVM_LTO2_BUILD=Off + -DLLVM_TOOL_LLVM_LTO_BUILD=Off + -DLLVM_TOOL_LLVM_RTDYLD_BUILD=Off + ) + cmake "${CMAKE_ARGS[@]}" "$source" + make -j$(nproc) + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + echo make install + skip=1 +} From c4df5d226f19fdb8c21f83ac9b0635f2263b83f5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 13 Dec 2018 12:04:14 -0700 Subject: [PATCH 0493/3180] Add hematite --- recipes/hematite/recipe.sh | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 recipes/hematite/recipe.sh diff --git a/recipes/hematite/recipe.sh b/recipes/hematite/recipe.sh new file mode 100644 index 00000000..1eac2e09 --- /dev/null +++ b/recipes/hematite/recipe.sh @@ -0,0 +1,17 @@ +GIT=https://gitlab.redox-os.org/redox-os/hematite.git +GIT_UPSTREAM=https://github.com/PistonDevelopers/hematite.git +BUILD_DEPENDS=(mesa) +BRANCH=redox + +function recipe_build { + sysroot="$(realpath ../sysroot)" + cp -p "$ROOT/Xargo.toml" "Xargo.toml" + xargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ + -- \ + -L "${sysroot}/lib" \ + -l OSMesa \ + -l glapi \ + -l stdc++ \ + -C link-args="-Wl,--whole-archive -lpthread -Wl,--no-whole-archive" + skip=1 +} From f60171e17b3561ce4b9ed229b70bbc88ae29f1a2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 13 Dec 2018 15:40:07 -0700 Subject: [PATCH 0494/3180] Install llvm and strip it --- recipes/llvm/recipe.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/recipes/llvm/recipe.sh b/recipes/llvm/recipe.sh index 5d9cde65..6f8720e6 100644 --- a/recipes/llvm/recipe.sh +++ b/recipes/llvm/recipe.sh @@ -61,6 +61,8 @@ function recipe_clean { } function recipe_stage { - echo make install + dest="$(realpath $1)" + make DESTDIR="$dest" install + find "$dest"/{bin,libexec} -exec $STRIP {} ';' 2> /dev/null skip=1 } From 29cee43e109b9241172b0e89f393d12617e9f88c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Dec 2018 12:16:12 -0700 Subject: [PATCH 0495/3180] Add upstreams to gcc, gnu-binutils. Update llvm. Use llvm recipe when building rust --- recipes/gcc/recipe.sh | 1 + recipes/gnu-binutils/recipe.sh | 1 + recipes/llvm/recipe.sh | 3 +- recipes/rust/config.toml | 3 +- recipes/rust/llvm-config | 2 +- recipes/rust/recipe.sh | 71 ++-------------------------------- 6 files changed, 10 insertions(+), 71 deletions(-) diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index 9380d079..cc406eea 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -1,4 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/gcc.git +GIT_UPSTREAM=https://gcc.gnu.org/git/gcc.git BRANCH=redox BUILD_DEPENDS=(relibc) DEPENDS="gnu-binutils relibc" diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh index a4878e05..cae419df 100644 --- a/recipes/gnu-binutils/recipe.sh +++ b/recipes/gnu-binutils/recipe.sh @@ -1,4 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/binutils-gdb.git +GIT_UPSTREAM=git://sourceware.org/git/binutils-gdb.git BUILD_DEPENDS=(relibc) function recipe_version { diff --git a/recipes/llvm/recipe.sh b/recipes/llvm/recipe.sh index 6f8720e6..25002f49 100644 --- a/recipes/llvm/recipe.sh +++ b/recipes/llvm/recipe.sh @@ -1,4 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/llvm.git +GIT_UPSTREAM=https://github.com/rust-lang/llvm.git BRANCH=redox function recipe_version { @@ -32,7 +33,7 @@ function recipe_build { -DLLVM_ENABLE_THREADS=Off -DLLVM_INCLUDE_TESTS=Off -target="$HOST" - -DLLVM_TABLEGEN="/usr/bin/llvm-tblgen-4.0" + -DLLVM_TABLEGEN="/usr/bin/llvm-tblgen-7" -I"$sysroot/include" -DCMAKE_CXX_FLAGS='--std=gnu++11' -DLLVM_TOOL_LTO_BUILD=Off diff --git a/recipes/rust/config.toml b/recipes/rust/config.toml index 2bd91ff3..e4b39ee1 100644 --- a/recipes/rust/config.toml +++ b/recipes/rust/config.toml @@ -6,11 +6,10 @@ host = ["x86_64-unknown-redox"] target = ["x86_64-unknown-redox"] docs = false submodules = false +tools = ["src"] verbose = 1 [rust] -thinlto = false -use-jemalloc = false backtrace = false rpath = false codegen-tests = false diff --git a/recipes/rust/llvm-config b/recipes/rust/llvm-config index be16d9b3..63e4e157 100755 --- a/recipes/rust/llvm-config +++ b/recipes/rust/llvm-config @@ -4,7 +4,7 @@ import sys import os args = sys.argv[1:] -prefix = os.path.realpath(os.path.dirname(os.path.abspath(sys.argv[0])) + "/llvm-prefix") +prefix = os.path.realpath(os.path.dirname(os.path.abspath(sys.argv[0])) + "/sysroot") # The values here are copied from the output of llvm-config running under Redox. # This is a hack, and should be replaced if possible. diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index d24f3ae8..ec445229 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -1,84 +1,21 @@ GIT=https://gitlab.redox-os.org/redox-os/rust.git BRANCH=compile-redox +BUILD_DEPENDS=(llvm) DEPENDS="gcc cargo" -LLVM_GIT="https://gitlab.redox-os.org/redox-os/llvm.git" -LLVM_SOURCE="$(realpath -m llvm-source)" -LLVM_BUILD="$(realpath -m llvm-build)" -LLVM_PREFIX="$(realpath -m llvm-prefix)" -SYSROOT="/usr/$HOST" -unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP - - -LLVM_CMAKE_ARGS=( - -Wno-dev - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_INSTALL_PREFIX="$LLVM_PREFIX" - -DLLVM_DEFAULT_TARGET_TRIPLE="$HOST" - -DLLVM_TARGET_ARCH="$ARCH" - -DLLVM_TARGETS_TO_BUILD=X86 - -DCMAKE_SYSTEM_NAME=Generic - -DPYTHON_EXECUTABLE="/usr/bin/python2" - -DUNIX=1 - -DLLVM_ENABLE_THREADS=Off - -DLLVM_INCLUDE_TESTS=Off - -target="$HOST" - -DLLVM_TABLEGEN="/usr/bin/llvm-tblgen-4.0" - -I"$SYSROOT/include" - -DCMAKE_CXX_FLAGS='--std=gnu++11' - -DLLVM_TOOL_LTO_BUILD=Off - -DLLVM_TOOL_LLVM_PROFDATA_BUILD=Off - -DLLVM_TOOL_LLI_BUILD=Off - -DLLVM_TOOL_RDOBJ_BUILD=Off - -DLLVM_TOOL_LLVM_COV_BUILD=Off - -DLLVM_TOOL_LLVM_XRAY_BUILD=Off - -DLLVM_TOOL_LLVM_LTO2_BUILD=Off - -DLLVM_TOOL_LLVM_LTO_BUILD=Off - -DLLVM_TOOL_LLVM_RTDYLD_BUILD=Off -) - function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" skip=1 } -function recipe_fetch { - if [ ! -d "$LLVM_SOURCE" ] - then - git clone "$LLVM_GIT" -b redox --depth 1 "$LLVM_SOURCE" - fi - - pushd "$LLVM_SOURCE" > /dev/null - git remote set-url origin "$LLVM_GIT" - git fetch origin - git pull - git submodule sync --recursive - git submodule update --init --recursive - popd > /dev/null -} - -function recipe_prepare { - rm -rf "$LLVM_PREFIX" - mkdir -p "$LLVM_PREFIX" - - rm -rf "$LLVM_BUILD" - mkdir "$LLVM_BUILD" -} - function recipe_update { echo "skipping update" skip=1 } function recipe_build { - # Build LLVM - pushd "$LLVM_BUILD" - CC=$HOST-gcc CXX=$HOST-g++ cmake "${LLVM_CMAKE_ARGS[@]}" "${LLVM_SOURCE}" - make -j$(nproc) - make install - popd - - python x.py dist --config ../config.toml --jobs $(nproc) --incremental + unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP + python x.py dist --config ../config.toml --jobs $(nproc) --incremental --keep-stage 0 skip=1 } @@ -97,7 +34,7 @@ function recipe_stage { libpath="$1/lib/rustlib/${TARGET}/lib" mkdir -p "$binpath" "$libpath" cp -fv "build/${TARGET}/stage2/bin/rustc" "$binpath" - ${HOST}-strip "$binpath/rustc" + ${STRIP} "$binpath/rustc" cp -fv $(find build/${TARGET}/stage2/lib/rustlib/${TARGET}/lib/ -type f | grep -v librustc) "$libpath" skip=1 } From 069da2e2e31fca171bc25ecbcc47c62e82aea337 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Dec 2018 14:04:21 -0700 Subject: [PATCH 0496/3180] Do not build LLVM utils --- recipes/llvm/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/llvm/recipe.sh b/recipes/llvm/recipe.sh index 25002f49..45933eeb 100644 --- a/recipes/llvm/recipe.sh +++ b/recipes/llvm/recipe.sh @@ -32,6 +32,7 @@ function recipe_build { -DUNIX=1 -DLLVM_ENABLE_THREADS=Off -DLLVM_INCLUDE_TESTS=Off + -DLLVM_INCLUDE_UTILS=Off -target="$HOST" -DLLVM_TABLEGEN="/usr/bin/llvm-tblgen-7" -I"$sysroot/include" From d34e163074751a76a75d00a15ef22b9f6f1cecf4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Dec 2018 15:53:29 -0700 Subject: [PATCH 0497/3180] Update llvm recipe to build native llvm tablegen and disable benchmarks, examples, and tools --- recipes/llvm/recipe.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/recipes/llvm/recipe.sh b/recipes/llvm/recipe.sh index 45933eeb..cddd412c 100644 --- a/recipes/llvm/recipe.sh +++ b/recipes/llvm/recipe.sh @@ -31,10 +31,17 @@ function recipe_build { -DPYTHON_EXECUTABLE="/usr/bin/python2" -DUNIX=1 -DLLVM_ENABLE_THREADS=Off + -DLLVM_BUILD_BENCHMARKS=Off + -DLLVM_INCLUDE_BENCHMARKS=Off + -DLLVM_BUILD_EXAMPLES=Off + -DLLVM_INCLUDE_EXAMPLES=Off + -DLLVM_BUILD_TESTS=Off -DLLVM_INCLUDE_TESTS=Off + -DLLVM_BUILD_TOOLS=Off + -DLLVM_INCLUDE_TOOLS=Off + -DLLVM_BUILD_UTILS=Off -DLLVM_INCLUDE_UTILS=Off -target="$HOST" - -DLLVM_TABLEGEN="/usr/bin/llvm-tblgen-7" -I"$sysroot/include" -DCMAKE_CXX_FLAGS='--std=gnu++11' -DLLVM_TOOL_LTO_BUILD=Off From 71620e8b24ef35d4b6d6fc81902a7a91e66759d4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Dec 2018 17:01:07 -0700 Subject: [PATCH 0498/3180] Re-add llvm-tblgen and link pthread with whole archive --- recipes/llvm/recipe.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/llvm/recipe.sh b/recipes/llvm/recipe.sh index cddd412c..e875cefe 100644 --- a/recipes/llvm/recipe.sh +++ b/recipes/llvm/recipe.sh @@ -29,6 +29,7 @@ function recipe_build { -DLLVM_TARGETS_TO_BUILD=X86 -DCMAKE_SYSTEM_NAME=Generic -DPYTHON_EXECUTABLE="/usr/bin/python2" + -DLLVM_TABLEGEN="/usr/bin/llvm-tblgen-8" -DUNIX=1 -DLLVM_ENABLE_THREADS=Off -DLLVM_BUILD_BENCHMARKS=Off @@ -43,7 +44,7 @@ function recipe_build { -DLLVM_INCLUDE_UTILS=Off -target="$HOST" -I"$sysroot/include" - -DCMAKE_CXX_FLAGS='--std=gnu++11' + -DCMAKE_CXX_FLAGS='--std=gnu++11 -Wl,--whole-archive -lpthread -Wl,--no-whole-archive' -DLLVM_TOOL_LTO_BUILD=Off -DLLVM_TOOL_LLVM_PROFDATA_BUILD=Off -DLLVM_TOOL_LLI_BUILD=Off @@ -55,7 +56,7 @@ function recipe_build { -DLLVM_TOOL_LLVM_RTDYLD_BUILD=Off ) cmake "${CMAKE_ARGS[@]}" "$source" - make -j$(nproc) + make VERBOSE=1 -j$(nproc) skip=1 } From 998cd2a7fe37ab16ea187fc1063387e5fce3958e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Dec 2018 17:10:08 -0700 Subject: [PATCH 0499/3180] Posix threading in gcc --- recipes/gcc/recipe.sh | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index cc406eea..c091a3d6 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -25,7 +25,18 @@ function recipe_build { mkdir -p "$sysroot/usr" ln -sf "$sysroot/include" "$sysroot/usr/include" ln -sf "$sysroot/lib" "$sysroot/usr/lib" - ./configure --host=${HOST} --target=${HOST} --prefix=/ --with-sysroot=/ --with-build-sysroot="$sysroot" --enable-static --disable-shared --disable-dlopen --disable-nls --enable-languages=c,c++ + ./configure \ + --host=${HOST} \ + --target=${HOST} \ + --prefix=/ \ + --with-sysroot=/ \ + --with-build-sysroot="$sysroot" \ + --enable-static \ + --disable-shared \ + --disable-dlopen \ + --disable-nls \ + --enable-languages=c,c++ \ + --enable-threads=posix make -j "$(nproc)" all-gcc all-target-libgcc all-target-libstdc++-v3 skip=1 } From ec71f8b839b98e91e17b76cbb1f94d8f28ef09fd Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Dec 2018 17:30:50 -0700 Subject: [PATCH 0500/3180] Fix compilation of native tablegen --- recipes/llvm/native.cmake | 2 ++ recipes/llvm/recipe.sh | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 recipes/llvm/native.cmake diff --git a/recipes/llvm/native.cmake b/recipes/llvm/native.cmake new file mode 100644 index 00000000..4b0abbfa --- /dev/null +++ b/recipes/llvm/native.cmake @@ -0,0 +1,2 @@ +set(CMAKE_C_COMPILER cc) +set(CMAKE_CXX_COMPILER c++) diff --git a/recipes/llvm/recipe.sh b/recipes/llvm/recipe.sh index e875cefe..eaa90b0c 100644 --- a/recipes/llvm/recipe.sh +++ b/recipes/llvm/recipe.sh @@ -18,18 +18,20 @@ function recipe_prepare { } function recipe_build { + native="$(realpath ../native.cmake)" source="$(realpath ../source)" sysroot="$(realpath ../sysroot)" CMAKE_ARGS=( -Wno-dev -DCMAKE_CROSSCOMPILING=True + -DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE=$native" -DCMAKE_INSTALL_PREFIX="/" -DLLVM_DEFAULT_TARGET_TRIPLE="$HOST" -DLLVM_TARGET_ARCH="$ARCH" -DLLVM_TARGETS_TO_BUILD=X86 -DCMAKE_SYSTEM_NAME=Generic -DPYTHON_EXECUTABLE="/usr/bin/python2" - -DLLVM_TABLEGEN="/usr/bin/llvm-tblgen-8" + #-DLLVM_TABLEGEN="/usr/bin/llvm-tblgen-8" -DUNIX=1 -DLLVM_ENABLE_THREADS=Off -DLLVM_BUILD_BENCHMARKS=Off @@ -56,7 +58,7 @@ function recipe_build { -DLLVM_TOOL_LLVM_RTDYLD_BUILD=Off ) cmake "${CMAKE_ARGS[@]}" "$source" - make VERBOSE=1 -j$(nproc) + make -j$(nproc) skip=1 } From bad9f48afca958101f9c32added1c1336fb11a1b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Dec 2018 17:49:43 -0700 Subject: [PATCH 0501/3180] Fix missing path in strip --- recipes/llvm/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/llvm/recipe.sh b/recipes/llvm/recipe.sh index eaa90b0c..a035edf2 100644 --- a/recipes/llvm/recipe.sh +++ b/recipes/llvm/recipe.sh @@ -75,6 +75,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install - find "$dest"/{bin,libexec} -exec $STRIP {} ';' 2> /dev/null + find "$dest"/bin -exec $STRIP {} ';' 2> /dev/null skip=1 } From 063966aaf57e0b7ef5891b44652d42ed20b84491 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Dec 2018 17:53:06 -0700 Subject: [PATCH 0502/3180] Update rust llvm version --- recipes/rust/llvm-config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/rust/llvm-config b/recipes/rust/llvm-config index 63e4e157..7b34d172 100755 --- a/recipes/rust/llvm-config +++ b/recipes/rust/llvm-config @@ -10,7 +10,7 @@ prefix = os.path.realpath(os.path.dirname(os.path.abspath(sys.argv[0])) + "/sysr # This is a hack, and should be replaced if possible. if args == ["--version"]: - print("4.0.1") + print("8.0.0") elif args == ["--cxxflags"]: print("-I" + prefix + "/include --std=gnu++11 -fPIC -fvisibility-inlines-hidden -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wno-maybe-uninitialized -Wdelete-non-virtual-dtor -Wno-comment -Werror=date-time -std=gnu++11 -g -fno-exceptions -fno-rtti -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS") elif args == ["--components"]: From 07ab7dae622f150cf2765cb1334aedc5cbce00c9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Dec 2018 20:07:46 -0700 Subject: [PATCH 0503/3180] Update llvm and rust recipes --- cook.sh | 8 +++++++- recipes/llvm/recipe.sh | 2 -- recipes/rust/llvm-config | 6 +++--- recipes/rust/recipe.sh | 5 ++++- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/cook.sh b/cook.sh index cdff410e..de9720e4 100755 --- a/cook.sh +++ b/cook.sh @@ -8,6 +8,7 @@ source config.sh export BINDIR=bin export CARGOFLAGS= export DEBUG= +export PREPARE_COPY=1 if [ ! "$(uname -s)" = "Redox" ] then @@ -250,7 +251,12 @@ function op { fi rm -rf build - cp -rp source build + if [ "$PREPARE_COPY" -eq "0" ] + then + mkdir build + else + cp -rp source build + fi for patch in *.patch do diff --git a/recipes/llvm/recipe.sh b/recipes/llvm/recipe.sh index a035edf2..0927565a 100644 --- a/recipes/llvm/recipe.sh +++ b/recipes/llvm/recipe.sh @@ -40,8 +40,6 @@ function recipe_build { -DLLVM_INCLUDE_EXAMPLES=Off -DLLVM_BUILD_TESTS=Off -DLLVM_INCLUDE_TESTS=Off - -DLLVM_BUILD_TOOLS=Off - -DLLVM_INCLUDE_TOOLS=Off -DLLVM_BUILD_UTILS=Off -DLLVM_INCLUDE_UTILS=Off -target="$HOST" diff --git a/recipes/rust/llvm-config b/recipes/rust/llvm-config index 7b34d172..086d0bb5 100755 --- a/recipes/rust/llvm-config +++ b/recipes/rust/llvm-config @@ -10,11 +10,11 @@ prefix = os.path.realpath(os.path.dirname(os.path.abspath(sys.argv[0])) + "/sysr # This is a hack, and should be replaced if possible. if args == ["--version"]: - print("8.0.0") + print("8.0.0svn") elif args == ["--cxxflags"]: - print("-I" + prefix + "/include --std=gnu++11 -fPIC -fvisibility-inlines-hidden -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wno-maybe-uninitialized -Wdelete-non-virtual-dtor -Wno-comment -Werror=date-time -std=gnu++11 -g -fno-exceptions -fno-rtti -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS") + print("-I" + prefix + "/include --std=gnu++11 -fPIC -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wno-missing-field-initializers -pedantic -Wno-long-long -Wno-comment -g -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS") elif args == ["--components"]: - print("all all-targets analysis asmparser asmprinter bitreader bitwriter codegen core coroutines coverage debuginfocodeview debuginfodwarf debuginfomsf debuginfopdb demangle engine executionengine globalisel instcombine instrumentation interpreter ipo irreader libdriver lineeditor linker lto mc mcdisassembler mcjit mcparser mirparser native nativecodegen objcarcopts object objectyaml option orcjit passes profiledata runtimedyld scalaropts selectiondag support symbolize tablegen target transformutils vectorize x86 x86asmparser x86asmprinter x86codegen x86desc x86disassembler x86info x86utils") + print("aggressiveinstcombine all all-targets analysis asmparser asmprinter binaryformat bitreader bitwriter codegen core coroutines coverage debuginfocodeview debuginfodwarf debuginfomsf debuginfopdb demangle dlltooldriver engine executionengine fuzzmutate globalisel instcombine instrumentation interpreter ipo irreader libdriver lineeditor linker lto mc mcdisassembler mcjit mcparser mirparser native nativecodegen objcarcopts object objectyaml option orcjit passes profiledata runtimedyld scalaropts selectiondag support symbolize tablegen target transformutils vectorize windowsmanifest x86 x86asmparser x86asmprinter x86codegen x86desc x86disassembler x86info x86utils") elif args == ['--libs', '--link-static', 'asmparser', 'bitreader', 'bitwriter', 'instrumentation', 'interpreter', 'ipo', 'linker', 'lto', 'mcjit', 'x86']: print( "-lLLVMLTO -lLLVMObjCARCOpts -lLLVMPasses -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen" diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index ec445229..e34375a3 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -2,6 +2,7 @@ GIT=https://gitlab.redox-os.org/redox-os/rust.git BRANCH=compile-redox BUILD_DEPENDS=(llvm) DEPENDS="gcc cargo" +PREPARE_COPY=0 function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" @@ -14,8 +15,10 @@ function recipe_update { } function recipe_build { + config="$(realpath ../config.toml)" + source="$(realpath ../source)" unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP - python x.py dist --config ../config.toml --jobs $(nproc) --incremental --keep-stage 0 + python "$source/x.py" dist --config "$config" --jobs $(nproc) --incremental skip=1 } From c06acad0dfc0cdb59a6607fef4045eef36674bf2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 15 Dec 2018 07:59:40 -0700 Subject: [PATCH 0504/3180] Update llvm-config values --- recipes/rust/llvm-config | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/recipes/rust/llvm-config b/recipes/rust/llvm-config index 086d0bb5..e387d066 100755 --- a/recipes/rust/llvm-config +++ b/recipes/rust/llvm-config @@ -14,19 +14,28 @@ if args == ["--version"]: elif args == ["--cxxflags"]: print("-I" + prefix + "/include --std=gnu++11 -fPIC -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wno-missing-field-initializers -pedantic -Wno-long-long -Wno-comment -g -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS") elif args == ["--components"]: - print("aggressiveinstcombine all all-targets analysis asmparser asmprinter binaryformat bitreader bitwriter codegen core coroutines coverage debuginfocodeview debuginfodwarf debuginfomsf debuginfopdb demangle dlltooldriver engine executionengine fuzzmutate globalisel instcombine instrumentation interpreter ipo irreader libdriver lineeditor linker lto mc mcdisassembler mcjit mcparser mirparser native nativecodegen objcarcopts object objectyaml option orcjit passes profiledata runtimedyld scalaropts selectiondag support symbolize tablegen target transformutils vectorize windowsmanifest x86 x86asmparser x86asmprinter x86codegen x86desc x86disassembler x86info x86utils") -elif args == ['--libs', '--link-static', 'asmparser', 'bitreader', 'bitwriter', 'instrumentation', 'interpreter', 'ipo', 'linker', 'lto', 'mcjit', 'x86']: print( - "-lLLVMLTO -lLLVMObjCARCOpts -lLLVMPasses -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen" - + " -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF" - + " -lLLVMX86Desc -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMMCJIT" - + " -lLLVMipo -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMInterpreter -lLLVMExecutionEngine" - + " -lLLVMRuntimeDyld -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMInstrumentation" - + " -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMObject -lLLVMMCParser -lLLVMMC" - + " -lLLVMProfileData -lLLVMBitReader -lLLVMAsmParser -lLLVMCore -lLLVMSupport -lLLVMDemangle" + "aggressiveinstcombine all all-targets analysis asmparser asmprinter binaryformat bitreader" + + " bitwriter codegen core coroutines coverage debuginfocodeview debuginfodwarf debuginfomsf" + + " debuginfopdb demangle dlltooldriver engine executionengine fuzzmutate globalisel instcombine" + + " instrumentation interpreter ipo irreader libdriver lineeditor linker lto mc mcdisassembler" + + " mcjit mcparser mirparser native nativecodegen objcarcopts object objectyaml option orcjit" + + " passes profiledata runtimedyld scalaropts selectiondag support symbolize tablegen target" + + " transformutils vectorize windowsmanifest x86 x86asmparser x86asmprinter x86codegen x86desc" + + " x86disassembler x86info x86utils") +elif args == ["--link-static", "--libs", "asmparser", "bitreader", "bitwriter", "instrumentation", "interpreter", "ipo", "linker", "lto", "mcjit", "x86"]: + print( + "-lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMGlobalISel -lLLVMSelectionDAG" + + " -lLLVMAsmPrinter -lLLVMX86Desc -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter" + + " -lLLVMX86Utils -lLLVMMCJIT -lLLVMLTO -lLLVMPasses -lLLVMObjCARCOpts -lLLVMipo -lLLVMVectorize" + + " -lLLVMLinker -lLLVMIRReader -lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld" + + " -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine" + + " -lLLVMInstrumentation -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData" + + " -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader" + + " -lLLVMAsmParser -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle" + " -lstdc++ -lgcc" ) - # FIXME last two -l are are a hack + # FIXME last two -l are a hack elif args == ["--link-static", "--ldflags"]: print("-L" + prefix + "/lib"); else: From 3ee95ecad242142a4f5f7d0b7ad8aec20e980596 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 15 Dec 2018 10:22:00 -0700 Subject: [PATCH 0505/3180] Fix stage function in rust recipe --- recipes/rust/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index e34375a3..43493a79 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -36,8 +36,8 @@ function recipe_stage { binpath="$1/bin" libpath="$1/lib/rustlib/${TARGET}/lib" mkdir -p "$binpath" "$libpath" - cp -fv "build/${TARGET}/stage2/bin/rustc" "$binpath" + cp -fv "build/${TARGET}/stage2/bin/"* "$binpath" ${STRIP} "$binpath/rustc" - cp -fv $(find build/${TARGET}/stage2/lib/rustlib/${TARGET}/lib/ -type f | grep -v librustc) "$libpath" + cp -fv $(find build/*/stage2/lib/rustlib/${TARGET}/lib/ -type f | grep -v librustc) "$libpath" skip=1 } From d475d54575a7093bf2d044c4cf87351043e9b1e5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 16 Dec 2018 15:06:24 -0700 Subject: [PATCH 0506/3180] strip rustdoc as well --- recipes/rust/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index 43493a79..4eed33f5 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -37,7 +37,7 @@ function recipe_stage { libpath="$1/lib/rustlib/${TARGET}/lib" mkdir -p "$binpath" "$libpath" cp -fv "build/${TARGET}/stage2/bin/"* "$binpath" - ${STRIP} "$binpath/rustc" + ${STRIP} "$binpath/"* cp -fv $(find build/*/stage2/lib/rustlib/${TARGET}/lib/ -type f | grep -v librustc) "$libpath" skip=1 } From 12379a90b28603bbcf31058fb302233e196076ec Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 16 Dec 2018 15:15:25 -0700 Subject: [PATCH 0507/3180] Fix install rules --- recipes/rust/recipe.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index 4eed33f5..18a5ebbf 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -36,8 +36,9 @@ function recipe_stage { binpath="$1/bin" libpath="$1/lib/rustlib/${TARGET}/lib" mkdir -p "$binpath" "$libpath" - cp -fv "build/${TARGET}/stage2/bin/"* "$binpath" + cp -fv "build/"*"/stage2-rustc/${TARGET}/release/rustc_binary" "$binpath/rustc" + cp -fv "build/"*"/stage2-tools/${TARGET}/release/rustdoc_tool_binary" "$binpath/rustdoc" + cp -fv $(find "build/"*"/stage2/lib/rustlib/${TARGET}/lib/" -type f | grep -v librustc) "$libpath" ${STRIP} "$binpath/"* - cp -fv $(find build/*/stage2/lib/rustlib/${TARGET}/lib/ -type f | grep -v librustc) "$libpath" skip=1 } From da2ba61b57f263e589970cf8d7a3aaba207d12e0 Mon Sep 17 00:00:00 2001 From: Thiago Duarte Areias Date: Tue, 18 Dec 2018 10:15:32 +0000 Subject: [PATCH 0508/3180] Running autogen.sh seems to break the build when building in docker --- recipes/libpng/recipe.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/libpng/recipe.sh b/recipes/libpng/recipe.sh index 1aa63ed9..0d7f16ca 100644 --- a/recipes/libpng/recipe.sh +++ b/recipes/libpng/recipe.sh @@ -16,7 +16,6 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" - ./autogen.sh chmod +w config.sub wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --host=${HOST} --prefix='/' From a8289353cc43448654a1d74ac07bb20b3e497b7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20H=C3=B6lzl?= Date: Fri, 21 Dec 2018 08:45:04 +0100 Subject: [PATCH 0509/3180] Cairo Graphics support with C-Example Also i removed "./autogen.sh" from libpng. --- recipes/cairo/recipe.sh | 43 ++++++++++++ recipes/cairodemo/cairodemo.c | 129 ++++++++++++++++++++++++++++++++++ recipes/cairodemo/recipe.sh | 44 ++++++++++++ recipes/libpng/recipe.sh | 2 +- recipes/pixman/recipe.sh | 36 ++++++++++ 5 files changed, 253 insertions(+), 1 deletion(-) create mode 100755 recipes/cairo/recipe.sh create mode 100755 recipes/cairodemo/cairodemo.c create mode 100755 recipes/cairodemo/recipe.sh create mode 100755 recipes/pixman/recipe.sh diff --git a/recipes/cairo/recipe.sh b/recipes/cairo/recipe.sh new file mode 100755 index 00000000..26ac8fa6 --- /dev/null +++ b/recipes/cairo/recipe.sh @@ -0,0 +1,43 @@ +VERSION="1.16.0" +TAR=https://www.cairographics.org/releases/cairo-$VERSION.tar.xz +BUILD_DEPENDS=(zlib pixman freetype libpng) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + #Workaround to disable the not redox compatible tests + printf "all:\n\ninstall:\n" > ./test/Makefile.in + printf "all:\n\ninstall:\n" > ./perf/Makefile.in + + sysroot="$(realpath ../sysroot)" + export LDFLAGS="-L$sysroot/lib" + export CPPFLAGS="-I$sysroot/include" + CFLAGS="-DCAIRO_NO_MUTEX=1" ./configure --host=${HOST} --prefix=/ --enable-xlib=no --enable-script=no --enable-interpreter=no + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + echo "skipping stage" + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} diff --git a/recipes/cairodemo/cairodemo.c b/recipes/cairodemo/cairodemo.c new file mode 100755 index 00000000..8f474e9e --- /dev/null +++ b/recipes/cairodemo/cairodemo.c @@ -0,0 +1,129 @@ +#include +#include +#include +#include +#include + +#ifndef M_PI +#define M_PI 3.14159265 +#endif + +static int width = 800; +static int height = 600; + +static void +travel_path (cairo_t *cr) +{ + + cairo_pattern_t *pat; + + pat = cairo_pattern_create_linear (0.0, 0.0, 0.0, 256.0); + cairo_pattern_add_color_stop_rgba (pat, 1, 0, 0, 0, 1); + cairo_pattern_add_color_stop_rgba (pat, 0, 1, 1, 1, 1); + cairo_rectangle (cr, 0, 0, 256, 256); + cairo_set_source (cr, pat); + cairo_fill (cr); + cairo_pattern_destroy (pat); + + pat = cairo_pattern_create_radial (115.2, 102.4, 25.6, + 102.4, 102.4, 128.0); + cairo_pattern_add_color_stop_rgba (pat, 0, 1, 1, 1, 1); + cairo_pattern_add_color_stop_rgba (pat, 1, 0, 0, 0, 1); + cairo_set_source (cr, pat); + cairo_arc (cr, 128.0, 128.0, 76.8, 0, 2 * M_PI); + cairo_fill (cr); + cairo_pattern_destroy (pat); + + + double x = 305.6, /* parameters like cairo_rectangle */ + y = 25.6, + width = 204.8, + height = 204.8, + aspect = 1.0, /* aspect ratio */ + corner_radius = height / 10.0; /* and corner curvature radius */ + + double radius = corner_radius / aspect; + double degrees = M_PI / 180.0; + + cairo_new_sub_path (cr); + cairo_arc (cr, x + width - radius, y + radius, radius, -90 * degrees, 0 * degrees); + cairo_arc (cr, x + width - radius, y + height - radius, radius, 0 * degrees, 90 * degrees); + cairo_arc (cr, x + radius, y + height - radius, radius, 90 * degrees, 180 * degrees); + cairo_arc (cr, x + radius, y + radius, radius, 180 * degrees, 270 * degrees); + cairo_close_path (cr); + + cairo_set_source_rgb (cr, 0.5, 0.5, 1); + cairo_fill_preserve (cr); + cairo_set_source_rgba (cr, 0.5, 0, 0, 0.5); + cairo_set_line_width (cr, 10.0); + cairo_stroke (cr); + + + double xc = 128.0; + double yc = 128.0; + radius = 100.0; + double angle1 = 45.0 * (M_PI/180.0); /* angles are specified */ + double angle2 = 180.0 * (M_PI/180.0); /* in radians */ + + cairo_set_line_width (cr, 10.0); + cairo_arc (cr, xc, yc, radius, angle1, angle2); + cairo_stroke (cr); + + /* draw helping lines */ + cairo_set_source_rgba (cr, 1, 0.2, 0.2, 0.6); + cairo_set_line_width (cr, 6.0); + + cairo_arc (cr, xc, yc, 10.0, 0, 2*M_PI); + cairo_fill (cr); + + cairo_arc (cr, xc, yc, radius, angle1, angle1); + cairo_line_to (cr, xc, yc); + cairo_arc (cr, xc, yc, radius, angle2, angle2); + cairo_line_to (cr, xc, yc); + cairo_stroke (cr); +} + +static void +draw (cairo_surface_t *surface) +{ + cairo_t *cr; + cr = cairo_create (surface); + travel_path (cr); + cairo_destroy (cr); +} + +int +main(int argc, char *argv[]) +{ + void * window = orb_window_new(-1, -1, width, height, "CairoDemo"); + + //Cairo + uint32_t * frame_data = orb_window_data(window); + cairo_surface_t *surface = cairo_image_surface_create_for_data((uint8_t*) frame_data, CAIRO_FORMAT_ARGB32, width, height, cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, width)); + cairo_create(surface); + draw (surface); + + orb_window_sync(window); + + char running = 1; + while (running) { + void * event_iter = orb_window_events(window); + + OrbEventOption event_option; + do { + event_option = orb_events_next(event_iter); + switch (event_option.tag) { + case OrbEventOption_Quit: + running = 0; + break; + default: + break; + } + } while (running && event_option.tag != OrbEventOption_None); + + orb_events_destroy(event_iter); + } + orb_window_destroy(window); + return 0; /* ANSI C requires main to return int. */ +} + diff --git a/recipes/cairodemo/recipe.sh b/recipes/cairodemo/recipe.sh new file mode 100755 index 00000000..628d53ec --- /dev/null +++ b/recipes/cairodemo/recipe.sh @@ -0,0 +1,44 @@ +BUILD_DEPENDS=(liborbital cairo pixman zlib libpng freetype) + +function recipe_version { + printf "1.0.0" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_prepare { + rm -rf source + mkdir source + cp cairodemo.c source +} + +function recipe_build { + sysroot="$(realpath ../sysroot)" + export LDFLAGS="-L$sysroot/lib" + export CPPFLAGS="-I$sysroot/include" + set -x + "${CXX}" -I "$sysroot/include" -L "$sysroot/lib" cairodemo.c -o cairodemo -lorbital -lcairo -lpixman-1 -lfreetype -lpng -lz -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -lm + set +x + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + mkdir -pv "$dest/bin" + cp -v "cairodemo" "$dest/bin/cairodemo" + skip=1 +} diff --git a/recipes/libpng/recipe.sh b/recipes/libpng/recipe.sh index 1aa63ed9..4c2ca0c0 100644 --- a/recipes/libpng/recipe.sh +++ b/recipes/libpng/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" - ./autogen.sh + #./autogen.sh chmod +w config.sub wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --host=${HOST} --prefix='/' diff --git a/recipes/pixman/recipe.sh b/recipes/pixman/recipe.sh new file mode 100755 index 00000000..88274193 --- /dev/null +++ b/recipes/pixman/recipe.sh @@ -0,0 +1,36 @@ +VERSION="0.36.0" +TAR=https://www.cairographics.org/releases/pixman-$VERSION.tar.gz + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="$(realpath ../sysroot)" + ./configure --host=${HOST} --prefix=/ + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + echo "skipping stage" + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} From 05e8ccc040d03cb354acd3f11b51391c4e54caef Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 22 Dec 2018 08:29:21 -0700 Subject: [PATCH 0510/3180] Build gcc with lpthread --- recipes/gcc/recipe.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index c091a3d6..c9485d3e 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -21,10 +21,12 @@ function recipe_build { cp config.sub mpfr/config.sub cp -f config.sub mpc/config.sub - sysroot="$(realpath "${PWD}/../sysroot")" + sysroot="$(realpath ../sysroot)" mkdir -p "$sysroot/usr" ln -sf "$sysroot/include" "$sysroot/usr/include" ln -sf "$sysroot/lib" "$sysroot/usr/lib" + + export LIBS='-lpthread' ./configure \ --host=${HOST} \ --target=${HOST} \ From db5d99ee40cfec06812bec4cd7eff38db83cda45 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 22 Dec 2018 10:09:23 -0700 Subject: [PATCH 0511/3180] Enable threading --- recipes/llvm/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/llvm/recipe.sh b/recipes/llvm/recipe.sh index 0927565a..4d413d9e 100644 --- a/recipes/llvm/recipe.sh +++ b/recipes/llvm/recipe.sh @@ -33,7 +33,7 @@ function recipe_build { -DPYTHON_EXECUTABLE="/usr/bin/python2" #-DLLVM_TABLEGEN="/usr/bin/llvm-tblgen-8" -DUNIX=1 - -DLLVM_ENABLE_THREADS=Off + -DLLVM_ENABLE_THREADS=On -DLLVM_BUILD_BENCHMARKS=Off -DLLVM_INCLUDE_BENCHMARKS=Off -DLLVM_BUILD_EXAMPLES=Off From b86345a1d2a4485e872ef15a0c4595d1b8a20de3 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 22 Dec 2018 10:09:38 -0700 Subject: [PATCH 0512/3180] Fix linkage of pthreads in gcc --- recipes/gcc/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index c9485d3e..5aab6e2b 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -26,7 +26,7 @@ function recipe_build { ln -sf "$sysroot/include" "$sysroot/usr/include" ln -sf "$sysroot/lib" "$sysroot/usr/lib" - export LIBS='-lpthread' + export LIBS='-Wl,--whole-archive -lpthread -Wl,--no-whole-archive' ./configure \ --host=${HOST} \ --target=${HOST} \ From e9eae9ce828ab209a076d5da7a0ee63bf7a953af Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 22 Dec 2018 12:48:31 -0700 Subject: [PATCH 0513/3180] Strip libraries as well --- recipes/llvm/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/llvm/recipe.sh b/recipes/llvm/recipe.sh index 4d413d9e..a2c285b0 100644 --- a/recipes/llvm/recipe.sh +++ b/recipes/llvm/recipe.sh @@ -73,6 +73,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install - find "$dest"/bin -exec $STRIP {} ';' 2> /dev/null + find "$dest"/{bin,lib} -exec $STRIP {} ';' 2> /dev/null skip=1 } From b56cc3d68ef22b130ab288687d642e7ab2fd28fc Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 22 Dec 2018 15:13:06 -0700 Subject: [PATCH 0514/3180] Enable llvmpipe --- recipes/mesa/llvm-config | 114 +++++++++++++++++++++++++++++++++++++++ recipes/mesa/recipe.sh | 13 ++++- 2 files changed, 125 insertions(+), 2 deletions(-) create mode 100755 recipes/mesa/llvm-config diff --git a/recipes/mesa/llvm-config b/recipes/mesa/llvm-config new file mode 100755 index 00000000..20cc72a9 --- /dev/null +++ b/recipes/mesa/llvm-config @@ -0,0 +1,114 @@ +#!/usr/bin/env python3 + +import sys +import os + +args = sys.argv[1:] +prefix = os.path.realpath(os.path.dirname(os.path.abspath(sys.argv[0])) + "/sysroot") + +# The values here are copied from the output of llvm-config running under Redox. +# This is a hack, and should be replaced if possible. + +# generated with this ion script: +# for component in @(llvm-config --components) +# echo -e \"$component\": \"$(llvm-config --libs $component)\", +# end +components = { + "aggressiveinstcombine": "-lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "all": "-lLLVMLTO -lLLVMPasses -lLLVMObjCARCOpts -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoDWARF -lLLVMFuzzMutate -lLLVMTableGen -lLLVMDlltoolDriver -lLLVMLineEditor -lLLVMOrcJIT -lLLVMCoverage -lLLVMMIRParser -lLLVMObjectYAML -lLLVMLibDriver -lLLVMOption -lLLVMWindowsManifest -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMX86Desc -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMMCJIT -lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMCodeGen -lLLVMTarget -lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMScalarOpts -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "all-targets": "-lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMX86Desc -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMX86Utils -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "analysis": "-lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "asmparser": "-lLLVMAsmParser -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "asmprinter": "-lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "binaryformat": "-lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "bitreader": "-lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "bitwriter": "-lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "codegen": "-lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "core": "-lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "coroutines": "-lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMScalarOpts -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "coverage": "-lLLVMCoverage -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "debuginfocodeview": "-lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMSupport -lLLVMDemangle", + "debuginfodwarf": "-lLLVMDebugInfoDWARF -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "debuginfomsf": "-lLLVMDebugInfoMSF -lLLVMSupport -lLLVMDemangle", + "debuginfopdb": "-lLLVMDebugInfoPDB -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "demangle": "-lLLVMDemangle", + "dlltooldriver": "-lLLVMDlltoolDriver -lLLVMOption -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "engine": "-lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMX86Desc -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMMCJIT -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMRuntimeDyld -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "executionengine": "-lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMRuntimeDyld -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "fuzzmutate": "-lLLVMFuzzMutate -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "globalisel": "-lLLVMGlobalISel -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "instcombine": "-lLLVMInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "instrumentation": "-lLLVMInstrumentation -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "interpreter": "-lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "ipo": "-lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMScalarOpts -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "irreader": "-lLLVMIRReader -lLLVMBitReader -lLLVMAsmParser -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "libdriver": "-lLLVMLibDriver -lLLVMOption -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "lineeditor": "-lLLVMLineEditor -lLLVMSupport -lLLVMDemangle", + "linker": "-lLLVMLinker -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "lto": "-lLLVMLTO -lLLVMPasses -lLLVMObjCARCOpts -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "mc": "-lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "mcdisassembler": "-lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "mcjit": "-lLLVMMCJIT -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMRuntimeDyld -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "mcparser": "-lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "mirparser": "-lLLVMMIRParser -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMAsmParser -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "native": "-lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMX86Desc -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMX86Utils -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "nativecodegen": "-lLLVMX86CodeGen -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "objcarcopts": "-lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "object": "-lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "objectyaml": "-lLLVMObjectYAML -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMSupport -lLLVMDemangle", + "option": "-lLLVMOption -lLLVMSupport -lLLVMDemangle", + "orcjit": "-lLLVMOrcJIT -lLLVMTransformUtils -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMRuntimeDyld -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "passes": "-lLLVMPasses -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "profiledata": "-lLLVMProfileData -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "runtimedyld": "-lLLVMRuntimeDyld -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMCore -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "scalaropts": "-lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "selectiondag": "-lLLVMSelectionDAG -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "support": "-lLLVMSupport -lLLVMDemangle", + "symbolize": "-lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "tablegen": "-lLLVMTableGen -lLLVMSupport -lLLVMDemangle", + "target": "-lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "transformutils": "-lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "vectorize": "-lLLVMVectorize -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "windowsmanifest": "-lLLVMWindowsManifest -lLLVMSupport -lLLVMDemangle", + "x86": "-lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMX86Desc -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMX86Utils -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "x86asmparser": "-lLLVMX86AsmParser -lLLVMX86Desc -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMObject -lLLVMBitReader -lLLVMCore -lLLVMMCDisassembler -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "x86asmprinter": "-lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMCore -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "x86codegen": "-lLLVMX86CodeGen -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "x86desc": "-lLLVMX86Desc -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMCore -lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "x86disassembler": "-lLLVMX86Disassembler -lLLVMX86Info -lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "x86info": "-lLLVMX86Info -lLLVMSupport -lLLVMDemangle", + "x86utils": "-lLLVMX86Utils -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", +} + +if args == []: + sys.exit(1) +if args == ["--version"]: + print("8.0.0svn") +elif args == ["--cppflags"]: + print("-I" + prefix + "/include -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS") +elif args == ["--cxxflags"]: + print("-I" + prefix + "/include --std=gnu++11 -fPIC -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wno-missing-field-initializers -pedantic -Wno-long-long -Wno-comment -g -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS") +elif args == ["--components"]: + print(" ".join(components.keys())) +elif args == ["--includedir"]: + print(prefix + "/include") +elif args == ["--ldflags"]: + print("-L" + prefix + "/lib"); +elif args == ["--libdir"]: + print(prefix + "/lib") +elif args == ["--system-libs"]: + print("-Wl,--whole-archive -lpthread -Wl,--no-whole-archive -lm") +elif args == ["--targets-built"]: + print("X86") +elif args[0] == "--libs": + libs = [] + for component in args[1:]: + for lib in components[component].split(" "): + if not lib in libs: + libs.append(lib) + print(" ".join(libs)) +elif args[0] == "--shared-mode": + print("static") +else: + print("\n".join(args), file=sys.stderr) + sys.exit(1) diff --git a/recipes/mesa/recipe.sh b/recipes/mesa/recipe.sh index 069702da..5161b099 100644 --- a/recipes/mesa/recipe.sh +++ b/recipes/mesa/recipe.sh @@ -1,7 +1,7 @@ GIT=https://gitlab.redox-os.org/redox-os/mesa.git GIT_UPSTREAM=git://anongit.freedesktop.org/mesa/mesa GIT_BRANCH=redox -BUILD_DEPENDS=(expat zlib) +BUILD_DEPENDS=(expat llvm zlib) function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" @@ -18,6 +18,8 @@ function recipe_build { export CFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1" export CPPFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1" export LDFLAGS="-L$sysroot/lib" + export LIBS="-Wl,--whole-archive -lpthread -Wl,--no-whole-archive" + export LLVM_CONFIG="$(realpath ../llvm-config)" NOCONFIGURE=1 ./autogen.sh ./configure \ --host="${HOST}" \ @@ -28,7 +30,8 @@ function recipe_build { --disable-egl \ --disable-glx \ --disable-gbm \ - --disable-llvm \ + --disable-llvm-shared-libs \ + --enable-llvm \ --enable-gallium-osmesa \ --with-gallium-drivers=swrast \ --with-platforms=surfaceless @@ -47,6 +50,12 @@ function recipe_clean { } function recipe_stage { + sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1" + export CPPFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1" + export LDFLAGS="-L$sysroot/lib" + export LIBS="-Wl,--whole-archive -lpthread -Wl,--no-whole-archive" + export LLVM_CONFIG="$(realpath ../llvm-config)" dest="$(realpath $1)" make DESTDIR="$dest" install rm -f "$dest/lib/"*.la From 7be5394da71640d0b098ba160147476fcbd6d378 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 22 Dec 2018 16:45:36 -0700 Subject: [PATCH 0515/3180] Cleanup of llvm-config, enable LTO for llvm --- .../x86_64-unknown-redox-llvm-config | 33 ++++++++---- config.sh | 6 +-- recipes/gears/recipe.sh | 4 +- recipes/llvm/recipe.sh | 52 ++++++++++--------- recipes/mesa/recipe.sh | 11 ++-- recipes/rust/config.toml | 2 +- recipes/rust/llvm-config | 42 --------------- 7 files changed, 60 insertions(+), 90 deletions(-) rename recipes/mesa/llvm-config => bin/x86_64-unknown-redox-llvm-config (97%) delete mode 100755 recipes/rust/llvm-config diff --git a/recipes/mesa/llvm-config b/bin/x86_64-unknown-redox-llvm-config similarity index 97% rename from recipes/mesa/llvm-config rename to bin/x86_64-unknown-redox-llvm-config index 20cc72a9..fdb2a68f 100755 --- a/recipes/mesa/llvm-config +++ b/bin/x86_64-unknown-redox-llvm-config @@ -1,11 +1,5 @@ #!/usr/bin/env python3 -import sys -import os - -args = sys.argv[1:] -prefix = os.path.realpath(os.path.dirname(os.path.abspath(sys.argv[0])) + "/sysroot") - # The values here are copied from the output of llvm-config running under Redox. # This is a hack, and should be replaced if possible. @@ -80,9 +74,29 @@ components = { "x86utils": "-lLLVMX86Utils -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", } -if args == []: +import os +import sys + +def fail(message): + print("redox llvm-config failure", file=sys.stderr) + print(message, file=sys.stderr) sys.exit(1) -if args == ["--version"]: + +prefix = os.environ["COOKBOOK_RECIPE"] + "/sysroot" + +args = [] +link_static = False +for arg in sys.argv[1:]: + if arg == "--link-static": + link_static = True + elif arg == "--link-shared": + fail("shared linking disabled") + else: + args.append(arg) + +if args == []: + fail("no arguments") +elif args == ["--version"]: print("8.0.0svn") elif args == ["--cppflags"]: print("-I" + prefix + "/include -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS") @@ -110,5 +124,4 @@ elif args[0] == "--libs": elif args[0] == "--shared-mode": print("static") else: - print("\n".join(args), file=sys.stderr) - sys.exit(1) + fail("unknown arguments: " + " ".join(args)) diff --git a/config.sh b/config.sh index fb4c4eeb..087774eb 100755 --- a/config.sh +++ b/config.sh @@ -15,16 +15,16 @@ REPO="$ROOT/repo/$TARGET" export PATH="${ROOT}/bin:$PATH" export XARGO_HOME="${ROOT}/xargo" -export AR="${HOST}-ar" +export AR="${HOST}-gcc-ar" export AS="${HOST}-as" export CC="${HOST}-gcc" export CXX="${HOST}-g++" export LD="${HOST}-ld" -export NM="${HOST}-nm" +export NM="${HOST}-gcc-nm" export OBJCOPY="${HOST}-objcopy" export OBJDUMP="${HOST}-objdump" export PKG_CONFIG="${HOST}-pkg-config" -export RANLIB="${HOST}-ranlib" +export RANLIB="${HOST}-gcc-ranlib" export READELF="${HOST}-readelf" export STRIP="${HOST}-strip" diff --git a/recipes/gears/recipe.sh b/recipes/gears/recipe.sh index 6d0a6e13..d5c268fe 100644 --- a/recipes/gears/recipe.sh +++ b/recipes/gears/recipe.sh @@ -1,4 +1,4 @@ -BUILD_DEPENDS=(liborbital mesa mesa_glu) +BUILD_DEPENDS=(liborbital llvm mesa mesa_glu) function recipe_version { printf "1.0.0" @@ -19,7 +19,7 @@ function recipe_prepare { function recipe_build { sysroot="$(realpath ../sysroot)" set -x - "${CXX}" -I "$sysroot/include" -L "$sysroot/lib" gears.c -o gears -lorbital -lOSMesa -lGLU -lglapi -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -lm + "${CXX}" -I "$sysroot/include" -L "$sysroot/lib" gears.c -o gears -lorbital $("${PKG_CONFIG}" --libs glu) set +x skip=1 } diff --git a/recipes/llvm/recipe.sh b/recipes/llvm/recipe.sh index a2c285b0..cc251625 100644 --- a/recipes/llvm/recipe.sh +++ b/recipes/llvm/recipe.sh @@ -22,38 +22,42 @@ function recipe_build { source="$(realpath ../source)" sysroot="$(realpath ../sysroot)" CMAKE_ARGS=( - -Wno-dev + -DCMAKE_AR="$(which "${AR}")" + -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True - -DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE=$native" + -DCMAKE_CXX_FLAGS="--std=gnu++11 -Wl,--whole-archive -lpthread -Wl,--no-whole-archive" + -DCMAKE_RANLIB="$(which "${RANLIB}")" -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_SYSTEM_NAME=Generic + -DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE=$native" + -DLLVM_BUILD_BENCHMARKS=Off + -DLLVM_BUILD_EXAMPLES=Off + -DLLVM_BUILD_TESTS=Off + -DLLVM_BUILD_UTILS=Off -DLLVM_DEFAULT_TARGET_TRIPLE="$HOST" + -DLLVM_ENABLE_LTO=On + -DLLVM_ENABLE_THREADS=On + -DLLVM_INCLUDE_BENCHMARKS=Off + -DLLVM_INCLUDE_EXAMPLES=Off + -DLLVM_INCLUDE_TESTS=Off + -DLLVM_INCLUDE_UTILS=Off + -DLLVM_OPTIMIZED_TABLEGEN=On + #-DLLVM_TABLEGEN="/usr/bin/llvm-tblgen-8" -DLLVM_TARGET_ARCH="$ARCH" -DLLVM_TARGETS_TO_BUILD=X86 - -DCMAKE_SYSTEM_NAME=Generic + -DLLVM_TOOL_LLVM_COV_BUILD=Off + -DLLVM_TOOL_LLVM_LTO_BUILD=Off + -DLLVM_TOOL_LLVM_LTO2_BUILD=Off + -DLLVM_TOOL_LLVM_PROFDATA_BUILD=Off + -DLLVM_TOOL_LLVM_RTDYLD_BUILD=Off + -DLLVM_TOOL_LLVM_XRAY_BUILD=Off + -DLLVM_TOOL_LLI_BUILD=Off + -DLLVM_TOOL_LTO_BUILD=Off -DPYTHON_EXECUTABLE="/usr/bin/python2" - #-DLLVM_TABLEGEN="/usr/bin/llvm-tblgen-8" -DUNIX=1 - -DLLVM_ENABLE_THREADS=On - -DLLVM_BUILD_BENCHMARKS=Off - -DLLVM_INCLUDE_BENCHMARKS=Off - -DLLVM_BUILD_EXAMPLES=Off - -DLLVM_INCLUDE_EXAMPLES=Off - -DLLVM_BUILD_TESTS=Off - -DLLVM_INCLUDE_TESTS=Off - -DLLVM_BUILD_UTILS=Off - -DLLVM_INCLUDE_UTILS=Off -target="$HOST" -I"$sysroot/include" - -DCMAKE_CXX_FLAGS='--std=gnu++11 -Wl,--whole-archive -lpthread -Wl,--no-whole-archive' - -DLLVM_TOOL_LTO_BUILD=Off - -DLLVM_TOOL_LLVM_PROFDATA_BUILD=Off - -DLLVM_TOOL_LLI_BUILD=Off - -DLLVM_TOOL_RDOBJ_BUILD=Off - -DLLVM_TOOL_LLVM_COV_BUILD=Off - -DLLVM_TOOL_LLVM_XRAY_BUILD=Off - -DLLVM_TOOL_LLVM_LTO2_BUILD=Off - -DLLVM_TOOL_LLVM_LTO_BUILD=Off - -DLLVM_TOOL_LLVM_RTDYLD_BUILD=Off + -Wno-dev ) cmake "${CMAKE_ARGS[@]}" "$source" make -j$(nproc) @@ -73,6 +77,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install - find "$dest"/{bin,lib} -exec $STRIP {} ';' 2> /dev/null + find "$dest"/bin -exec $STRIP {} ';' 2> /dev/null skip=1 } diff --git a/recipes/mesa/recipe.sh b/recipes/mesa/recipe.sh index 5161b099..347551bd 100644 --- a/recipes/mesa/recipe.sh +++ b/recipes/mesa/recipe.sh @@ -19,8 +19,8 @@ function recipe_build { export CPPFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1" export LDFLAGS="-L$sysroot/lib" export LIBS="-Wl,--whole-archive -lpthread -Wl,--no-whole-archive" - export LLVM_CONFIG="$(realpath ../llvm-config)" - NOCONFIGURE=1 ./autogen.sh + export LLVM_CONFIG="x86_64-unknown-redox-llvm-config" + #NOCONFIGURE=1 ./autogen.sh ./configure \ --host="${HOST}" \ --prefix=/ \ @@ -50,12 +50,7 @@ function recipe_clean { } function recipe_stage { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1" - export CPPFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1" - export LDFLAGS="-L$sysroot/lib" - export LIBS="-Wl,--whole-archive -lpthread -Wl,--no-whole-archive" - export LLVM_CONFIG="$(realpath ../llvm-config)" + export LLVM_CONFIG="x86_64-unknown-redox-llvm-config" dest="$(realpath $1)" make DESTDIR="$dest" install rm -f "$dest/lib/"*.la diff --git a/recipes/rust/config.toml b/recipes/rust/config.toml index e4b39ee1..fe2b8ec4 100644 --- a/recipes/rust/config.toml +++ b/recipes/rust/config.toml @@ -19,5 +19,5 @@ cc = "x86_64-unknown-redox-gcc" cxx = "x86_64-unknown-redox-g++" ar = "x86_64-unknown-redox-ar" linker = "x86_64-unknown-redox-gcc" -llvm-config = "../llvm-config" +llvm-config = "x86_64-unknown-redox-llvm-config" crt-static = true diff --git a/recipes/rust/llvm-config b/recipes/rust/llvm-config deleted file mode 100755 index e387d066..00000000 --- a/recipes/rust/llvm-config +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env python - -import sys -import os - -args = sys.argv[1:] -prefix = os.path.realpath(os.path.dirname(os.path.abspath(sys.argv[0])) + "/sysroot") - -# The values here are copied from the output of llvm-config running under Redox. -# This is a hack, and should be replaced if possible. - -if args == ["--version"]: - print("8.0.0svn") -elif args == ["--cxxflags"]: - print("-I" + prefix + "/include --std=gnu++11 -fPIC -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wno-missing-field-initializers -pedantic -Wno-long-long -Wno-comment -g -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS") -elif args == ["--components"]: - print( - "aggressiveinstcombine all all-targets analysis asmparser asmprinter binaryformat bitreader" - + " bitwriter codegen core coroutines coverage debuginfocodeview debuginfodwarf debuginfomsf" - + " debuginfopdb demangle dlltooldriver engine executionengine fuzzmutate globalisel instcombine" - + " instrumentation interpreter ipo irreader libdriver lineeditor linker lto mc mcdisassembler" - + " mcjit mcparser mirparser native nativecodegen objcarcopts object objectyaml option orcjit" - + " passes profiledata runtimedyld scalaropts selectiondag support symbolize tablegen target" - + " transformutils vectorize windowsmanifest x86 x86asmparser x86asmprinter x86codegen x86desc" - + " x86disassembler x86info x86utils") -elif args == ["--link-static", "--libs", "asmparser", "bitreader", "bitwriter", "instrumentation", "interpreter", "ipo", "linker", "lto", "mcjit", "x86"]: - print( - "-lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMGlobalISel -lLLVMSelectionDAG" - + " -lLLVMAsmPrinter -lLLVMX86Desc -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter" - + " -lLLVMX86Utils -lLLVMMCJIT -lLLVMLTO -lLLVMPasses -lLLVMObjCARCOpts -lLLVMipo -lLLVMVectorize" - + " -lLLVMLinker -lLLVMIRReader -lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld" - + " -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine" - + " -lLLVMInstrumentation -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData" - + " -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader" - + " -lLLVMAsmParser -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle" - + " -lstdc++ -lgcc" - ) - # FIXME last two -l are a hack -elif args == ["--link-static", "--ldflags"]: - print("-L" + prefix + "/lib"); -else: - sys.exit(1) From a58b49d3635c5016939d1aa0aefd2cd6da8e5556 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 22 Dec 2018 17:20:30 -0700 Subject: [PATCH 0516/3180] Fixes for mesa and gears recipes --- recipes/gears/recipe.sh | 4 ++-- recipes/mesa/recipe.sh | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/recipes/gears/recipe.sh b/recipes/gears/recipe.sh index d5c268fe..77f19a9b 100644 --- a/recipes/gears/recipe.sh +++ b/recipes/gears/recipe.sh @@ -1,4 +1,4 @@ -BUILD_DEPENDS=(liborbital llvm mesa mesa_glu) +BUILD_DEPENDS=(liborbital mesa mesa_glu zlib) function recipe_version { printf "1.0.0" @@ -19,7 +19,7 @@ function recipe_prepare { function recipe_build { sysroot="$(realpath ../sysroot)" set -x - "${CXX}" -I "$sysroot/include" -L "$sysroot/lib" gears.c -o gears -lorbital $("${PKG_CONFIG}" --libs glu) + "${CXX}" -I "$sysroot/include" -L "$sysroot/lib" gears.c -o gears -lorbital $("${PKG_CONFIG}" --libs glu) -lglapi -lz -Wl,--whole-archive -lpthread -Wl,--no-whole-archive set +x skip=1 } diff --git a/recipes/mesa/recipe.sh b/recipes/mesa/recipe.sh index 347551bd..5c680680 100644 --- a/recipes/mesa/recipe.sh +++ b/recipes/mesa/recipe.sh @@ -1,7 +1,7 @@ GIT=https://gitlab.redox-os.org/redox-os/mesa.git GIT_UPSTREAM=git://anongit.freedesktop.org/mesa/mesa GIT_BRANCH=redox -BUILD_DEPENDS=(expat llvm zlib) +BUILD_DEPENDS=(expat zlib) function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" @@ -19,8 +19,8 @@ function recipe_build { export CPPFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1" export LDFLAGS="-L$sysroot/lib" export LIBS="-Wl,--whole-archive -lpthread -Wl,--no-whole-archive" - export LLVM_CONFIG="x86_64-unknown-redox-llvm-config" - #NOCONFIGURE=1 ./autogen.sh + #export LLVM_CONFIG="x86_64-unknown-redox-llvm-config" + NOCONFIGURE=1 ./autogen.sh ./configure \ --host="${HOST}" \ --prefix=/ \ @@ -31,7 +31,7 @@ function recipe_build { --disable-glx \ --disable-gbm \ --disable-llvm-shared-libs \ - --enable-llvm \ + --disable-llvm \ --enable-gallium-osmesa \ --with-gallium-drivers=swrast \ --with-platforms=surfaceless @@ -50,7 +50,7 @@ function recipe_clean { } function recipe_stage { - export LLVM_CONFIG="x86_64-unknown-redox-llvm-config" + #export LLVM_CONFIG="x86_64-unknown-redox-llvm-config" dest="$(realpath $1)" make DESTDIR="$dest" install rm -f "$dest/lib/"*.la From 541585e1862e023952063054e152d956ac2818aa Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 25 Dec 2018 09:10:52 -0700 Subject: [PATCH 0517/3180] Add libc-bench --- recipes/libc-bench/recipe.sh | 34 +++++++++++++++++++++++++++ recipes/libc-bench/redox.patch | 42 ++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 recipes/libc-bench/recipe.sh create mode 100644 recipes/libc-bench/redox.patch diff --git a/recipes/libc-bench/recipe.sh b/recipes/libc-bench/recipe.sh new file mode 100644 index 00000000..a136c82c --- /dev/null +++ b/recipes/libc-bench/recipe.sh @@ -0,0 +1,34 @@ +VERSION=20110206 +TAR=http://www.etalabs.net/releases/libc-bench-$VERSION.tar.gz + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + mkdir -v "$dest/bin" + cp -v "libc-bench" "$dest/bin" + skip=1 +} diff --git a/recipes/libc-bench/redox.patch b/recipes/libc-bench/redox.patch new file mode 100644 index 00000000..07d33e7d --- /dev/null +++ b/recipes/libc-bench/redox.patch @@ -0,0 +1,42 @@ +diff -ruw source/Makefile source-new/Makefile +--- source/Makefile 2011-01-31 00:13:00.000000000 -0700 ++++ source-new/Makefile 2018-12-25 09:07:37.564520567 -0700 +@@ -4,7 +4,7 @@ + + CFLAGS = -Os + LDFLAGS = -static +-LIBS = -lpthread -lrt -lpthread ++LIBS = -lpthread + + + all: libc-bench +diff -ruw source/utf8.c source-new/utf8.c +--- source/utf8.c 2011-01-24 20:08:38.000000000 -0700 ++++ source-new/utf8.c 2018-12-25 08:52:35.893821291 -0700 +@@ -3,7 +3,7 @@ + #include + #include + #include +-#include ++//#include + + size_t b_utf8_bigbuf(void *dummy) + { +@@ -18,7 +18,7 @@ + || setlocale(LC_CTYPE, "en.UTF-8") + || setlocale(LC_CTYPE, "de_DE-8") + || setlocale(LC_CTYPE, "fr_FR-8"); +- if (strcmp(nl_langinfo(CODESET), "UTF-8")) return -1; ++ //if (strcmp(nl_langinfo(CODESET), "UTF-8")) return -1; + + buf = malloc(500000); + wbuf = malloc(500000*sizeof(wchar_t)); +@@ -56,7 +56,7 @@ + || setlocale(LC_CTYPE, "en.UTF-8") + || setlocale(LC_CTYPE, "de_DE-8") + || setlocale(LC_CTYPE, "fr_FR-8"); +- if (strcmp(nl_langinfo(CODESET), "UTF-8")) return -1; ++ //if (strcmp(nl_langinfo(CODESET), "UTF-8")) return -1; + + buf = malloc(500000); + l = 0; From a93234cc400a5a5baaa60cf89c65469958b2c4ba Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 26 Dec 2018 07:23:45 -0700 Subject: [PATCH 0518/3180] Update libc-bench patch --- recipes/libc-bench/redox.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/libc-bench/redox.patch b/recipes/libc-bench/redox.patch index 07d33e7d..bbeee671 100644 --- a/recipes/libc-bench/redox.patch +++ b/recipes/libc-bench/redox.patch @@ -6,7 +6,7 @@ diff -ruw source/Makefile source-new/Makefile CFLAGS = -Os LDFLAGS = -static -LIBS = -lpthread -lrt -lpthread -+LIBS = -lpthread ++LIBS = -Wl,--whole-archive -lpthread -Wl,--no-whole-archive all: libc-bench From ea6fb1cfc393a67ce9cf864420605d8f12197f5a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 26 Dec 2018 19:27:51 -0700 Subject: [PATCH 0519/3180] Simplify git patch --- recipes/git/git.patch | 550 ++++++++++++------------------------------ 1 file changed, 155 insertions(+), 395 deletions(-) diff --git a/recipes/git/git.patch b/recipes/git/git.patch index 1bce1495..c8c790fb 100644 --- a/recipes/git/git.patch +++ b/recipes/git/git.patch @@ -1,11 +1,11 @@ -diff -ru source/builtin/log.c source-new/builtin/log.c +diff -ruw source/builtin/log.c source-new/builtin/log.c --- source/builtin/log.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/builtin/log.c 2018-12-02 16:07:24.784757087 -0700 ++++ source-new/builtin/log.c 2018-12-26 18:36:28.141445392 -0700 @@ -308,6 +308,7 @@ static void setup_early_output(struct rev_info *rev) { -+#if 0 ++#if !defined(__redox__) struct sigaction sa; /* @@ -17,99 +17,69 @@ diff -ru source/builtin/log.c source-new/builtin/log.c } static void finish_early_output(struct rev_info *rev) -diff -ru source/common-main.c source-new/common-main.c +diff -ruw source/common-main.c source-new/common-main.c --- source/common-main.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/common-main.c 2018-12-02 16:07:24.784757087 -0700 ++++ source-new/common-main.c 2018-12-26 18:40:38.447229228 -0700 @@ -15,12 +15,14 @@ */ static void restore_sigpipe_to_default(void) { -+/* ++#if !defined(__redox__) sigset_t unblock; sigemptyset(&unblock); sigaddset(&unblock, SIGPIPE); sigprocmask(SIG_UNBLOCK, &unblock, NULL); signal(SIGPIPE, SIG_DFL); -+*/ ++#endif } int main(int argc, const char **argv) -diff -ru source/compat/hstrerror.c source-new/compat/hstrerror.c +diff -ruw source/compat/hstrerror.c source-new/compat/hstrerror.c --- source/compat/hstrerror.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/compat/hstrerror.c 2018-12-02 16:07:24.784757087 -0700 -@@ -5,17 +5,6 @@ ++++ source-new/compat/hstrerror.c 2018-12-26 18:37:12.495372666 -0700 +@@ -5,6 +5,7 @@ const char *githstrerror(int err) { static char buffer[48]; -- switch (err) -- { -- case HOST_NOT_FOUND: -- return "Authoritative answer: host not found"; -- case NO_DATA: -- return "Valid name, no data record of requested type"; -- case NO_RECOVERY: -- return "Non recoverable errors, FORMERR, REFUSED, NOTIMP"; -- case TRY_AGAIN: -- return "Non-authoritative \"host not found\", or SERVERFAIL"; -- } ++#if !defined(__redox__) + switch (err) + { + case HOST_NOT_FOUND: +@@ -16,6 +17,7 @@ + case TRY_AGAIN: + return "Non-authoritative \"host not found\", or SERVERFAIL"; + } ++#endif snprintf(buffer, sizeof(buffer), "Name resolution error %d", err); return buffer; } -diff -ru source/compat/poll/poll.c source-new/compat/poll/poll.c ---- source/compat/poll/poll.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/compat/poll/poll.c 2018-12-02 16:07:24.784757087 -0700 -@@ -302,7 +302,7 @@ - happened |= (POLLIN | POLLRDNORM) & sought; - - /* Distinguish hung-up sockets from other errors. */ -- else if (socket_errno == ESHUTDOWN || socket_errno == ECONNRESET -+ else if (socket_errno == ECONNRESET - || socket_errno == ECONNABORTED || socket_errno == ENETRESET) - happened |= POLLHUP; - -diff -ru source/compat/terminal.c source-new/compat/terminal.c +diff -ruw source/compat/terminal.c source-new/compat/terminal.c --- source/compat/terminal.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/compat/terminal.c 2018-12-02 16:07:24.784757087 -0700 -@@ -3,7 +3,9 @@ - #include "sigchain.h" - #include "strbuf.h" ++++ source-new/compat/terminal.c 2018-12-26 18:39:47.177777683 -0700 +@@ -137,6 +137,18 @@ + return buf.buf; + } --#if defined(HAVE_DEV_TTY) || defined(GIT_WINDOWS_NATIVE) ++#elif defined(__redox__) ++ +ssize_t __getline(char **lptr, size_t *n, FILE *fp); + -+#if 0 - - static void restore_term(void); - -@@ -141,7 +143,10 @@ - - char *git_terminal_prompt(const char *prompt, int echo) - { -- return getpass(prompt); ++char *git_terminal_prompt(const char *prompt, int echo) ++{ + char *line = NULL; + size_t n = 0; + __getline(&line, &n, stdin); + return line; // XXX leak - } ++} ++ + #else - #endif -diff -ru source/config.c source-new/config.c ---- source/config.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/config.c 2018-12-02 16:07:24.788757117 -0700 -@@ -1094,7 +1094,7 @@ - } - - if (!strcmp(var, "core.packedgitwindowsize")) { -- int pgsz_x2 = getpagesize() * 2; -+ int pgsz_x2 = 4096 * 2; - packed_git_window_size = git_config_ulong(var, value); - - /* This value must be multiple of (pagesize * 2) */ -diff -ru source/connect.c source-new/connect.c + char *git_terminal_prompt(const char *prompt, int echo) +diff -ruw source/connect.c source-new/connect.c --- source/connect.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/connect.c 2018-12-02 16:07:24.788757117 -0700 -@@ -450,14 +450,11 @@ ++++ source-new/connect.c 2018-12-26 18:56:40.601235949 -0700 +@@ -450,7 +450,7 @@ he = gethostbyname(host); if (!he) @@ -118,176 +88,46 @@ diff -ru source/connect.c source-new/connect.c nport = strtoul(port, &ep, 10); if ( ep == port || *ep ) { /* Not numeric */ -- struct servent *se = getservbyname(port,"tcp"); -- if ( !se ) -- die("Unknown port %s", port); -- nport = se->s_port; -+ die("Unknown port %s", port); - } - - if (flags & CONNECT_VERBOSE) -@@ -507,7 +504,7 @@ - int sockfd = git_tcp_connect_sock(host, flags); - - fd[0] = sockfd; -- fd[1] = dup(sockfd); -+ fd[1] = sockfd; - } - - -diff -ru source/credential-cache--daemon.c source-new/credential-cache--daemon.c ---- source/credential-cache--daemon.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/credential-cache--daemon.c 2018-12-02 16:07:24.788757117 -0700 -@@ -156,6 +156,7 @@ - strbuf_release(&action); - } - -+#if 0 - static int serve_cache_loop(int fd) - { - struct pollfd pfd; -@@ -256,6 +257,7 @@ - - free(path_copy); - } -+#endif - - int cmd_main(int argc, const char **argv) - { -@@ -274,6 +276,7 @@ - - git_config_get_bool("credentialcache.ignoresighup", &ignore_sighup); - -+#if 0 - argc = parse_options(argc, argv, NULL, options, usage, 0); - socket_path = argv[0]; - -@@ -291,6 +294,9 @@ - - serve_cache(socket_path, debug); - delete_tempfile(&socket_file); -+#endif -+ -+ printf("git-credential-cache--daemon not working on Redox\n"); - - return 0; - } -diff -ru source/daemon.c source-new/daemon.c +diff -ruw source/daemon.c source-new/daemon.c --- source/daemon.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/daemon.c 2018-12-02 16:07:24.788757117 -0700 -@@ -71,6 +71,7 @@ ++++ source-new/daemon.c 2018-12-26 19:15:52.002437841 -0700 +@@ -71,13 +71,21 @@ return hi->ip_address.buf; } -+#if 0 ++#if defined(__redox__) ++#define LOG_ERR 0 ++#define LOG_INFO 1 ++#endif ++ static void logreport(int priority, const char *err, va_list params) { ++#if !defined(__redox__) if (log_syslog) { -@@ -89,13 +90,14 @@ - fflush(stderr); - } - } + char buf[1024]; + vsnprintf(buf, sizeof(buf), err, params); + syslog(priority, "%s", buf); +- } else { ++ } else +#endif - - __attribute__((format (printf, 1, 2))) - static void logerror(const char *err, ...) - { - va_list params; - va_start(params, err); -- logreport(LOG_ERR, err, params); -+ //logreport(LOG_ERR, err, params); - va_end(params); - } - -@@ -106,13 +108,13 @@ - if (!verbose) - return; - va_start(params, err); -- logreport(LOG_INFO, err, params); -+ //logreport(LOG_INFO, err, params); - va_end(params); - } - - static void NORETURN daemon_die(const char *err, va_list params) - { -- logreport(LOG_ERR, err, params); -+ //logreport(LOG_ERR, err, params); - exit(1); - } - -@@ -888,8 +890,7 @@ ++ { + /* + * Since stderr is set to buffered mode, the + * logging of different processes will not overlap +@@ -888,8 +896,12 @@ if (!reuseaddr) return 0; -- return setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, -- &on, sizeof(on)); -+ return 0; - } - - struct socketlist { -@@ -901,7 +902,7 @@ - static const char *ip2str(int family, struct sockaddr *sin, socklen_t len) - { - #ifdef NO_IPV6 -- static char ip[INET_ADDRSTRLEN]; -+ static char ip[1]; - #else - static char ip[INET6_ADDRSTRLEN]; - #endif -@@ -980,7 +981,7 @@ - close(sockfd); - continue; /* not fatal */ - } -- if (listen(sockfd, 5) < 0) { -+ if (1) { - logerror("Could not listen to %s: %s", - ip2str(ai->ai_family, ai->ai_addr, ai->ai_addrlen), - strerror(errno)); -@@ -1042,7 +1043,7 @@ - return 0; - } - -- if (listen(sockfd, 5) < 0) { -+ if (0) { - logerror("Could not listen to %s: %s", - ip2str(AF_INET, (struct sockaddr *)&sin, sizeof(sin)), - strerror(errno)); -@@ -1080,6 +1081,8 @@ - - static int service_loop(struct socketlist *socklist) - { -+ die_errno("No daemon support"); -+#if 0 - struct pollfd *pfd; - int i; - -@@ -1116,7 +1119,7 @@ - #endif - } ss; - socklen_t sslen = sizeof(ss); -- int incoming = accept(pfd[i].fd, &ss.sa, &sslen); -+ int incoming = -1; - if (incoming < 0) { - switch (errno) { - case EAGAIN: -@@ -1131,6 +1134,7 @@ - } - } - } ++#if defined(__redox__) ++ return 0; ++#else + return setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, + &on, sizeof(on)); +#endif } - #ifdef NO_POSIX_GOODIES -@@ -1158,7 +1162,7 @@ - static void drop_privileges(struct credentials *cred) - { - if (cred && (initgroups(cred->pass->pw_name, cred->gid) || -- setgid (cred->gid) || setuid(cred->pass->pw_uid))) -+ 1)) - die("cannot drop privileges"); - } - -@@ -1174,11 +1178,7 @@ + struct socketlist { +@@ -1174,11 +1186,7 @@ if (!group_name) c.gid = c.pass->pw_gid; else { @@ -299,45 +139,27 @@ diff -ru source/daemon.c source-new/daemon.c } return &c; -@@ -1349,7 +1349,7 @@ +@@ -1348,10 +1356,12 @@ + usage(daemon_usage); } ++#if !defined(__redox__) if (log_syslog) { -- openlog("git-daemon", LOG_PID, LOG_DAEMON); -+ //openlog("git-daemon", LOG_PID, LOG_DAEMON); + openlog("git-daemon", LOG_PID, LOG_DAEMON); set_die_routine(daemon_die); } else ++#endif /* avoid splitting a message in the middle */ -diff -ru source/dir.c source-new/dir.c ---- source/dir.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/dir.c 2018-12-02 16:07:24.788757117 -0700 -@@ -1891,14 +1891,14 @@ - static const char *get_ident_string(void) - { - static struct strbuf sb = STRBUF_INIT; -- struct utsname uts; -+ //struct utsname uts; + setvbuf(stderr, NULL, _IOFBF, 4096); - if (sb.len) - return sb.buf; -- if (uname(&uts) < 0) -- die_errno(_("failed to get kernel name and information")); -+ //if (uname(&uts) < 0) -+ // die_errno(_("failed to get kernel name and information")); - strbuf_addf(&sb, "Location %s, system %s", get_git_work_tree(), -- uts.sysname); -+ "Redox"); - return sb.buf; - } - -diff -ru source/fast-import.c source-new/fast-import.c +diff -ruw source/fast-import.c source-new/fast-import.c --- source/fast-import.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/fast-import.c 2018-12-02 16:07:24.788757117 -0700 ++++ source-new/fast-import.c 2018-12-26 18:46:02.396322633 -0700 @@ -531,6 +531,7 @@ static void set_checkpoint_signal(void) { -+ /* ++#if !defined(__redox__) struct sigaction sa; memset(&sa, 0, sizeof(sa)); @@ -345,65 +167,65 @@ diff -ru source/fast-import.c source-new/fast-import.c sigemptyset(&sa.sa_mask); sa.sa_flags = SA_RESTART; sigaction(SIGUSR1, &sa, NULL); -+ */ ++#endif } #endif -diff -ru source/git-compat-util.h source-new/git-compat-util.h +diff -ruw source/git-compat-util.h source-new/git-compat-util.h --- source/git-compat-util.h 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/git-compat-util.h 2018-12-02 16:07:24.788757117 -0700 -@@ -179,7 +179,6 @@ ++++ source-new/git-compat-util.h 2018-12-26 19:11:00.598201504 -0700 +@@ -179,7 +179,9 @@ #include #include #include --#include ++#if !defined(__redox__) + #include ++#endif #ifndef NO_SYS_POLL_H #include #else -@@ -195,21 +194,16 @@ - #elif defined(_MSC_VER) - #include "compat/msvc.h" - #else --#include +@@ -199,13 +201,17 @@ #include #include #include --#include --#include ++#if !defined(__redox__) + #include ++#endif + #include #ifndef NO_SYS_SELECT_H #include #endif #include --#include ++#if !defined(__redox__) + #include ++#endif #include #include #include --#include - #ifndef NO_INTTYPES_H - #include - #else -@@ -319,9 +313,7 @@ - #define PRIo32 "o" +@@ -320,8 +326,20 @@ #endif --#ifndef PATH_SEP --#define PATH_SEP ':' --#endif + #ifndef PATH_SEP ++#if defined(__redox__) +#define PATH_SEP ';' ++#else + #define PATH_SEP ':' + #endif ++#endif ++ ++#ifndef DEV_NULL ++#if defined(__redox__) ++#define DEV_NULL "null:" ++#else ++#define DEV_NULL "/dev/null" ++#endif ++#endif #ifdef HAVE_PATHS_H #include -@@ -1123,4 +1115,7 @@ - - extern int cmd_main(int, const char **); - -+#define utime(...) 0 -+#define shutdown(...) 0 -+ - #endif -diff -ru source/Makefile source-new/Makefile +diff -ruw source/Makefile source-new/Makefile --- source/Makefile 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/Makefile 2018-12-02 16:07:24.788757117 -0700 ++++ source-new/Makefile 2018-12-26 18:35:54.096906095 -0700 @@ -1802,7 +1802,6 @@ $(BUILT_INS): git$X @@ -443,57 +265,48 @@ diff -ru source/Makefile source-new/Makefile ln -s "git-remote-http$X" "$$execdir/$$p" 2>/dev/null || \ cp "$$execdir/git-remote-http$X" "$$execdir/$$p" || exit; \ done && \ -diff -ru source/progress.c source-new/progress.c +diff -ruw source/progress.c source-new/progress.c --- source/progress.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/progress.c 2018-12-02 16:07:24.788757117 -0700 ++++ source-new/progress.c 2018-12-26 19:13:24.522688882 -0700 @@ -52,11 +52,13 @@ progress_update = 0; -+ /* ++#if !defined(__redox__) memset(&sa, 0, sizeof(sa)); sa.sa_handler = progress_interval; sigemptyset(&sa.sa_mask); sa.sa_flags = SA_RESTART; sigaction(SIGALRM, &sa, NULL); -+ */ ++#endif v.it_interval.tv_sec = 1; v.it_interval.tv_usec = 0; -@@ -74,8 +76,7 @@ +@@ -74,8 +76,12 @@ static int is_foreground_fd(int fd) { -- int tpgrp = tcgetpgrp(fd); -- return tpgrp < 0 || tpgrp == getpgid(0); -+ return 1; ++#if defined(__redox__) ++ return 1; ++#else + int tpgrp = tcgetpgrp(fd); + return tpgrp < 0 || tpgrp == getpgid(0); ++#endif } static int display(struct progress *progress, unsigned n, const char *done) -diff -ru source/rerere.c source-new/rerere.c ---- source/rerere.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/rerere.c 2018-12-02 16:07:24.788757117 -0700 -@@ -682,7 +682,7 @@ - * A successful replay of recorded resolution. - * Mark that "postimage" was used to help gc. - */ -- if (utime(rerere_path(id, "postimage"), NULL) < 0) -+ if (1) - warning_errno("failed utime() on %s", - rerere_path(id, "postimage")); - -diff -ru source/run-command.c source-new/run-command.c +diff -ruw source/run-command.c source-new/run-command.c --- source/run-command.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/run-command.c 2018-12-02 16:07:55.100993213 -0700 ++++ source-new/run-command.c 2018-12-26 19:19:21.042685078 -0700 @@ -120,9 +120,9 @@ #ifndef GIT_WINDOWS_NATIVE static inline void dup_devnull(int to) { - int fd = open("/dev/null", O_RDWR); -+ int fd = open("null:", O_RDWR); ++ int fd = open(DEV_NULL, O_RDWR); if (fd < 0) - die_errno(_("open /dev/null failed")); -+ die_errno(_("open null: failed")); ++ die_errno(_("open %s failed"), DEV_NULL); if (dup2(fd, to) < 0) die_errno(_("dup2(%d,%d) failed"), fd, to); close(fd); @@ -502,121 +315,68 @@ diff -ru source/run-command.c source-new/run-command.c while (1) { - const char *end = strchrnul(p, ':'); -+ const char *end = strchrnul(p, ';'); ++ const char *end = strchrnul(p, PATH_SEP); strbuf_reset(&buf); -diff -ru source/send-pack.c source-new/send-pack.c ---- source/send-pack.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/send-pack.c 2018-12-02 16:07:24.788757117 -0700 -@@ -570,7 +570,7 @@ - if (args->stateless_rpc) - close(out); - if (git_connection_is_socket(conn)) -- shutdown(fd[0], SHUT_WR); -+ ; // XXX +@@ -622,6 +622,7 @@ + struct async *async = data; + intptr_t ret; - /* - * Do not even bother with the return value; we know we -diff -ru source/setup.c source-new/setup.c ++#if !defined(__redox__) + if (async->isolate_sigpipe) { + sigset_t mask; + sigemptyset(&mask); +@@ -631,6 +632,7 @@ + return (void *)ret; + } + } ++#endif + + pthread_setspecific(async_key, async); + ret = async->proc(async->proc_in, async->proc_out, async->data); +diff -ruw source/setup.c source-new/setup.c --- source/setup.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/setup.c 2018-12-02 16:07:24.788757117 -0700 -@@ -1143,21 +1143,21 @@ - return read_gitfile_gently(suspect, return_error_code); - } - --/* if any standard file descriptor is missing open it to /dev/null */ -+/* if any standard file descriptor is missing open it to null: */ ++++ source-new/setup.c 2018-12-26 18:52:50.070479933 -0700 +@@ -1146,11 +1146,11 @@ + /* if any standard file descriptor is missing open it to /dev/null */ void sanitize_stdfds(void) { - int fd = open("/dev/null", O_RDWR, 0); -+ int fd = open("null:", O_RDWR, 0); ++ int fd = open(DEV_NULL, O_RDWR, 0); while (fd != -1 && fd < 2) fd = dup(fd); if (fd == -1) - die_errno("open /dev/null or dup failed"); -+ die_errno("open null: or dup failed"); ++ die_errno("open %s or dup failed", DEV_NULL); if (fd > 2) close(fd); } - - int daemonize(void) - { --#ifdef NO_POSIX_GOODIES -+#if 1 - errno = ENOSYS; - return -1; - #else -diff -ru source/sha1_file.c source-new/sha1_file.c ---- source/sha1_file.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/sha1_file.c 2018-12-02 16:07:24.792757146 -0700 -@@ -723,7 +723,7 @@ - "pack_report: getpagesize() = %10" SZ_FMT "\n" - "pack_report: core.packedGitWindowSize = %10" SZ_FMT "\n" - "pack_report: core.packedGitLimit = %10" SZ_FMT "\n", -- sz_fmt(getpagesize()), -+ sz_fmt(4096), - sz_fmt(packed_git_window_size), - sz_fmt(packed_git_limit)); - fprintf(stderr, -diff -ru source/strbuf.c source-new/strbuf.c +@@ -1169,8 +1169,10 @@ + default: + exit(0); + } ++#if !defined(__redox__) + if (setsid() == -1) + die_errno("setsid failed"); ++#endif + close(0); + close(1); + close(2); +diff -ruw source/strbuf.c source-new/strbuf.c --- source/strbuf.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/strbuf.c 2018-12-02 16:07:24.792757146 -0700 -@@ -446,6 +446,11 @@ ++++ source-new/strbuf.c 2018-12-26 18:53:39.586122270 -0700 +@@ -446,6 +446,13 @@ for (;; guessed_len *= 2) { strbuf_grow(sb, guessed_len); if (getcwd(sb->buf, sb->alloc)) { ++#if defined(__redox__) + if (strncmp(sb->buf, "file:", 5) == 0) { + char *x = strdup(sb->buf); + strcpy(sb->buf, x+5); + free(x); + } ++#endif strbuf_setlen(sb, strlen(sb->buf)); return 0; } -diff -ru source/wrapper.c source-new/wrapper.c ---- source/wrapper.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/wrapper.c 2018-12-02 16:07:24.792757146 -0700 -@@ -227,6 +227,7 @@ - } - } - -+#if 0 - static int handle_nonblock(int fd, short poll_events, int err) - { - struct pollfd pfd; -@@ -244,6 +245,7 @@ - poll(&pfd, 1, -1); - return 1; - } -+#endif - - /* - * xread() is the same a read(), but it automatically restarts read() -@@ -260,8 +262,6 @@ - if (nr < 0) { - if (errno == EINTR) - continue; -- if (handle_nonblock(fd, POLLIN, errno)) -- continue; - } - return nr; - } -@@ -282,8 +282,6 @@ - if (nr < 0) { - if (errno == EINTR) - continue; -- if (handle_nonblock(fd, POLLOUT, errno)) -- continue; - } - - return nr; -@@ -653,7 +651,7 @@ - - void sleep_millisec(int millisec) - { -- poll(NULL, 0, millisec); -+ //poll(NULL, 0, millisec); - } - - int xgethostname(char *buf, size_t len) From 701511fc3dfdfb8029fd1ef1ce4c5bffa129ed6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20H=C3=B6lzl?= Date: Thu, 27 Dec 2018 04:23:40 +0100 Subject: [PATCH 0520/3180] Cairo bindings for Rust with demo --- recipes/rust-cairo-demo/recipe.sh | 17 +++++++++++++++++ recipes/rust-cairo/recipe.sh | 18 ++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 recipes/rust-cairo-demo/recipe.sh create mode 100644 recipes/rust-cairo/recipe.sh diff --git a/recipes/rust-cairo-demo/recipe.sh b/recipes/rust-cairo-demo/recipe.sh new file mode 100644 index 00000000..9abd33d8 --- /dev/null +++ b/recipes/rust-cairo-demo/recipe.sh @@ -0,0 +1,17 @@ +GIT=https://gitlab.redox-os.org/redox-os/rust-cairo-demo.git +BUILD_DEPENDS=(cairo zlib pixman freetype libpng) + +function recipe_build { + sysroot="$(realpath ../sysroot)" + cp -p "$ROOT/Xargo.toml" "Xargo.toml" + xargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ + -- \ + -L "${sysroot}/lib" \ + -l cairo \ + -l pixman-1 \ + -l freetype \ + -l png \ + -l z + skip=1 +} + diff --git a/recipes/rust-cairo/recipe.sh b/recipes/rust-cairo/recipe.sh new file mode 100644 index 00000000..345db4c8 --- /dev/null +++ b/recipes/rust-cairo/recipe.sh @@ -0,0 +1,18 @@ +GIT=https://gitlab.redox-os.org/redox-os/rust-cairo.git +BUILD_DEPENDS=(cairo zlib pixman freetype libpng) +CARGOFLAGS="--example gui" + +function recipe_build { + sysroot="$(realpath ../sysroot)" + cp -p "$ROOT/Xargo.toml" "Xargo.toml" + xargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ + -- \ + -L "${sysroot}/lib" \ + -l cairo \ + -l pixman-1 \ + -l freetype \ + -l png \ + -l z + skip=1 +} + From bc9111de7729577173d157007cbc0c334747f375 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 27 Dec 2018 19:11:10 -0700 Subject: [PATCH 0521/3180] Fix linking pthreads --- recipes/git/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/git/recipe.sh b/recipes/git/recipe.sh index fe275cc5..cac2a4a7 100644 --- a/recipes/git/recipe.sh +++ b/recipes/git/recipe.sh @@ -17,7 +17,7 @@ function recipe_update { function recipe_build { sysroot="$(realpath ../sysroot)" - export LDFLAGS="-L$sysroot/lib" + export LDFLAGS="-L$sysroot/lib -Wl,--whole-archive -lpthread -Wl,--no-whole-archive" export CPPFLAGS="-I$sysroot/include" ./configure --host=${HOST} --prefix=/ ac_cv_fread_reads_directories=yes ac_cv_snprintf_returns_bogus=yes ac_cv_lib_curl_curl_global_init=yes CURL_CONFIG=no make ${MAKEFLAGS} -j"$(nproc)" From fbaf18d29b425483cdc6273d3f5ac59bd54f4e4d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 27 Dec 2018 20:23:18 -0700 Subject: [PATCH 0522/3180] Cleanup curl patches --- recipes/curl/01-no-nonblock.patch | 14 -------------- .../{02-redox-sys-select.patch => redox.patch} | 0 2 files changed, 14 deletions(-) delete mode 100644 recipes/curl/01-no-nonblock.patch rename recipes/curl/{02-redox-sys-select.patch => redox.patch} (100%) diff --git a/recipes/curl/01-no-nonblock.patch b/recipes/curl/01-no-nonblock.patch deleted file mode 100644 index e2762293..00000000 --- a/recipes/curl/01-no-nonblock.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -ruw source/lib/nonblock.c source-new/lib/nonblock.c ---- source/lib/nonblock.c 2018-10-27 04:00:54.000000000 -0600 -+++ source-new/lib/nonblock.c 2018-12-10 12:40:21.350755609 -0700 -@@ -47,7 +47,7 @@ - int curlx_nonblock(curl_socket_t sockfd, /* operate on this */ - int nonblock /* TRUE or FALSE */) - { --#if defined(USE_BLOCKING_SOCKETS) -+#if defined(USE_BLOCKING_SOCKETS) || defined(__redox__) - (void)sockfd; - (void)nonblock; - return 0; /* returns success */ -Only in source-new/lib: nonblock.c.orig -Only in source-new/lib: nonblock.c.rej diff --git a/recipes/curl/02-redox-sys-select.patch b/recipes/curl/redox.patch similarity index 100% rename from recipes/curl/02-redox-sys-select.patch rename to recipes/curl/redox.patch From c9a1fd9f65581aaa07f6699b61713d07f25fff5a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 27 Dec 2018 20:27:11 -0700 Subject: [PATCH 0523/3180] Ignore source-new directories --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 22481bbf..de50c96e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ build repo source +source-new source.tar stage stage.sig From 6f761473be11a279c3496aa7626b4554def33d60 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 29 Dec 2018 07:51:51 -0700 Subject: [PATCH 0524/3180] Revert sdl_gfx version (newer version has disappeared --- recipes/diffutils/diffutils.patch | 279 +++++------------------------- recipes/sdl_gfx/recipe.sh | 2 +- 2 files changed, 49 insertions(+), 232 deletions(-) diff --git a/recipes/diffutils/diffutils.patch b/recipes/diffutils/diffutils.patch index 283e5002..2df8a37e 100644 --- a/recipes/diffutils/diffutils.patch +++ b/recipes/diffutils/diffutils.patch @@ -1,6 +1,6 @@ -diff -ru source/lib/cmpbuf.c source-new/lib/cmpbuf.c ---- source/lib/cmpbuf.c 2017-01-01 03:22:36.000000000 -0800 -+++ source-new/lib/cmpbuf.c 2017-07-25 14:12:20.128407130 -0700 +diff -ruw source/lib/cmpbuf.c source-new/lib/cmpbuf.c +--- source/lib/cmpbuf.c 2017-01-01 04:22:36.000000000 -0700 ++++ source-new/lib/cmpbuf.c 2018-12-29 07:31:43.920193561 -0700 @@ -71,8 +71,8 @@ ancient AIX hosts that set errno to EINTR after uncaught SIGCONT. See @@ -12,48 +12,48 @@ diff -ru source/lib/cmpbuf.c source-new/lib/cmpbuf.c return SIZE_MAX; } -diff -ru source/lib/getdtablesize.c source-new/lib/getdtablesize.c ---- source/lib/getdtablesize.c 2017-05-18 09:23:32.000000000 -0700 -+++ source-new/lib/getdtablesize.c 2017-07-25 14:14:43.353197473 -0700 -@@ -109,15 +109,6 @@ +diff -ruw source/lib/getdtablesize.c source-new/lib/getdtablesize.c +--- source/lib/getdtablesize.c 2017-05-18 10:23:32.000000000 -0600 ++++ source-new/lib/getdtablesize.c 2018-12-29 07:32:31.709586573 -0700 +@@ -109,6 +109,7 @@ int getdtablesize (void) { -- struct rlimit lim; -- -- if (getrlimit (RLIMIT_NOFILE, &lim) == 0 -- && 0 <= lim.rlim_cur && lim.rlim_cur <= INT_MAX -- && lim.rlim_cur != RLIM_INFINITY -- && lim.rlim_cur != RLIM_SAVED_CUR -- && lim.rlim_cur != RLIM_SAVED_MAX) -- return lim.rlim_cur; -- ++#if !defined(__redox__) + struct rlimit lim; + + if (getrlimit (RLIMIT_NOFILE, &lim) == 0 +@@ -117,6 +118,7 @@ + && lim.rlim_cur != RLIM_SAVED_CUR + && lim.rlim_cur != RLIM_SAVED_MAX) + return lim.rlim_cur; ++#endif + return INT_MAX; } - -diff -ru source/lib/getprogname.c source-new/lib/getprogname.c ---- source/lib/getprogname.c 2017-01-31 10:36:50.000000000 -0800 -+++ source-new/lib/getprogname.c 2017-07-25 14:08:30.219353774 -0700 -@@ -43,13 +43,11 @@ - # include +diff -ruw source/lib/getprogname.c source-new/lib/getprogname.c +--- source/lib/getprogname.c 2017-01-31 11:36:50.000000000 -0700 ++++ source-new/lib/getprogname.c 2018-12-29 07:34:15.432575388 -0700 +@@ -51,6 +51,14 @@ + # include #endif --#ifdef __sgi - # include - # include - # include - # include --# include --#endif ++#if defined(__redox__) ++# include ++# include ++# include ++# include +# include - ++#endif ++ #include "dirname.h" -@@ -178,7 +176,16 @@ + #ifndef HAVE_GETPROGNAME /* not Mac OS X, FreeBSD, NetBSD, OpenBSD >= 5.4, Cygwin */ +@@ -177,6 +185,17 @@ + } } return NULL; - # else --# error "getprogname module not ported to this OS" ++# elif defined(__redox__) + char filename[PATH_MAX]; + int fd = open ("sys:exe", O_RDONLY); + if (fd > 0) { @@ -64,208 +64,25 @@ diff -ru source/lib/getprogname.c source-new/lib/getprogname.c + } + } + return NULL; + # else + # error "getprogname module not ported to this OS" # endif +diff -ruw source/lib/sigprocmask.c source-new/lib/sigprocmask.c +--- source/lib/sigprocmask.c 2017-05-18 10:23:32.000000000 -0600 ++++ source-new/lib/sigprocmask.c 2018-12-29 07:45:02.610557142 -0700 +@@ -126,6 +126,7 @@ + return 0; } -diff -ru source/lib/sigaction.c source-new/lib/sigaction.c ---- source/lib/sigaction.c 2017-05-18 09:23:32.000000000 -0700 -+++ source-new/lib/sigaction.c 2017-07-25 14:16:01.860655606 -0700 -@@ -1,3 +1,4 @@ -+#if 0 - /* POSIX compatible signal blocking. - Copyright (C) 2008-2017 Free Software Foundation, Inc. - Written by Eric Blake , 2008. -@@ -202,3 +203,4 @@ - errno = saved_errno; - return -1; - } -+#endif -diff -ru source/lib/sig-handler.h source-new/lib/sig-handler.h ---- source/lib/sig-handler.h 2017-05-18 09:23:32.000000000 -0700 -+++ source-new/lib/sig-handler.h 2017-07-25 14:10:17.137139018 -0700 -@@ -28,6 +28,7 @@ - # define SIG_HANDLER_INLINE _GL_INLINE - #endif - -+#if 0 - /* Convenience type when working with signal handlers. */ - typedef void (*sa_handler_t) (int); - -@@ -48,6 +49,7 @@ - #endif - return a->sa_handler; - } -+#endif - - _GL_INLINE_HEADER_END - -diff -ru source/lib/signal.in.h source-new/lib/signal.in.h ---- source/lib/signal.in.h 2017-05-18 09:23:32.000000000 -0700 -+++ source-new/lib/signal.in.h 2017-07-25 14:04:47.960296802 -0700 -@@ -1,3 +1,4 @@ -+#if 0 - /* A GNU-like . - - Copyright (C) 2006-2017 Free Software Foundation, Inc. -@@ -461,3 +462,4 @@ - #endif /* _@GUARD_PREFIX@_SIGNAL_H */ - #endif /* _@GUARD_PREFIX@_SIGNAL_H */ - #endif -+#endif -diff -ru source/lib/sigprocmask.c source-new/lib/sigprocmask.c ---- source/lib/sigprocmask.c 2017-05-18 09:23:32.000000000 -0700 -+++ source-new/lib/sigprocmask.c 2017-07-25 14:17:19.291432128 -0700 -@@ -1,3 +1,4 @@ -+#if 0 - /* POSIX compatible signal blocking. - Copyright (C) 2006-2017 Free Software Foundation, Inc. - Written by Bruno Haible , 2006. -@@ -347,3 +348,4 @@ ++#if !defined(__redox__) + int + sigemptyset (sigset_t *set) + { +@@ -180,6 +181,7 @@ + *set = ((2U << (NSIG - 1)) - 1) & ~ SIGABRT_COMPAT_MASK; return 0; } - #endif -+#endif -diff -ru source/Makefile.am source-new/Makefile.am ---- source/Makefile.am 2017-01-01 03:22:36.000000000 -0800 -+++ source-new/Makefile.am 2017-07-25 14:36:08.905866861 -0700 -@@ -19,7 +19,7 @@ - ALL_RECURSIVE_TARGETS = - - EXTRA_DIST = bootstrap exgettext ChangeLog-2008 cfg.mk dist-check.mk --SUBDIRS = lib src tests doc man po gnulib-tests -+SUBDIRS = lib src tests doc po gnulib-tests - - ACLOCAL_AMFLAGS = -I m4 - AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS) -diff -ru source/src/sdiff.c source-new/src/sdiff.c ---- source/src/sdiff.c 2017-05-18 10:39:59.000000000 -0700 -+++ source-new/src/sdiff.c 2017-07-25 14:31:10.436289463 -0700 -@@ -86,7 +86,7 @@ - #ifdef SIGPIPE - SIGPIPE, - #endif -- SIGINT -+ //SIGINT - }; - enum - { -@@ -226,7 +226,7 @@ - static void - cleanup (int signo __attribute__((unused))) - { --#if HAVE_WORKING_FORK -+#if 0 - if (0 < diffpid) - kill (diffpid, SIGPIPE); - #endif -@@ -629,6 +629,7 @@ - perror_fatal ("fork"); - if (! diffpid) - { -+#if 0 - /* Alter the child's SIGINT and SIGPIPE handlers; - this may munge the parent. - The child ignores SIGINT in case the user interrupts the editor. -@@ -636,6 +637,7 @@ - if (initial_handler (handler_index_of_SIGINT) != SIG_IGN) - signal_handler (SIGINT, SIG_IGN); - signal_handler (SIGPIPE, SIG_DFL); -+#endif - close (diff_fds[0]); - if (diff_fds[1] != STDOUT_FILENO) - { -@@ -727,11 +729,13 @@ - static void - catchsig (int s) - { -+#if 0 - #if ! HAVE_SIGACTION - signal (s, SIG_IGN); - #endif - if (! (s == SIGINT && ignore_SIGINT)) - signal_received = s; -+#endif - } - - #if HAVE_SIGACTION -@@ -748,6 +752,7 @@ - static void - trapsigs (void) - { -+#if 0 - int i; - - #if HAVE_SIGACTION -@@ -772,6 +777,7 @@ - /* System V fork+wait does not work if SIGCHLD is ignored. */ - signal (SIGCHLD, SIG_DFL); - #endif +#endif - sigs_trapped = true; - } -@@ -780,6 +786,7 @@ - static void - untrapsig (int s) - { -+#if 0 - int i; - - if (sigs_trapped) -@@ -792,6 +799,7 @@ - signal (sigs[i], initial_action[i]); - #endif - } -+#endif - } - - /* Exit if a signal has been received. */ -diff -ru source/src/util.c source-new/src/util.c ---- source/src/util.c 2017-05-18 10:39:59.000000000 -0700 -+++ source-new/src/util.c 2017-07-25 14:24:02.588763499 -0700 -@@ -161,6 +161,7 @@ - - /* The set of signals that are caught. */ - -+#if 0 - static sigset_t caught_signals; - - /* If nonzero, the value of the pending fatal signal. */ -@@ -192,6 +193,7 @@ - if (! interrupt_signal) - stop_signal_count++; - } -+#endif - /* Process any pending signals. If signals are caught, this function - should be called periodically. Ideally there should never be an - unbounded amount of time when signals are not being processed. -@@ -201,6 +203,7 @@ - static void - process_signals (void) - { -+#if 0 - while (interrupt_signal || stop_signal_count) - { - int sig; -@@ -235,11 +238,13 @@ - /* If execution reaches here, then the program has been - continued (after being suspended). */ - } -+#endif - } - - static void - install_signal_handlers (void) - { -+# if 0 - /* The signals that are trapped, and the number of such signals. */ - static int const sig[] = - { -@@ -303,6 +308,7 @@ - } - #endif - } -+#endif - } - - static char const *current_name0; + /* Set of currently blocked signals. */ + static volatile sigset_t blocked_set /* = 0 */; diff --git a/recipes/sdl_gfx/recipe.sh b/recipes/sdl_gfx/recipe.sh index 351c8b97..bf0e6317 100644 --- a/recipes/sdl_gfx/recipe.sh +++ b/recipes/sdl_gfx/recipe.sh @@ -1,4 +1,4 @@ -VERSION=2.0.26 +VERSION=2.0.25 TAR=https://sourceforge.net/projects/sdlgfx/files/SDL_gfx-$VERSION.tar.gz BUILD_DEPENDS=(sdl liborbital libiconv) From bcfaace90c054935d30d3b880d7080e7da93bed8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 29 Dec 2018 08:17:56 -0700 Subject: [PATCH 0525/3180] Add timers to sdl, update libiconv patch --- recipes/libiconv/01_redox.patch | 58 ++++++++++++++++++--------------- recipes/sdl/02_timers.patch | 57 -------------------------------- recipes/sdl/recipe.sh | 6 ++-- 3 files changed, 34 insertions(+), 87 deletions(-) delete mode 100644 recipes/sdl/02_timers.patch diff --git a/recipes/libiconv/01_redox.patch b/recipes/libiconv/01_redox.patch index 35034786..860bbed5 100644 --- a/recipes/libiconv/01_redox.patch +++ b/recipes/libiconv/01_redox.patch @@ -1,30 +1,36 @@ -diff -rupNw source-original/srclib/getprogname.c source/srclib/getprogname.c ---- source-original/srclib/getprogname.c 2017-01-02 00:02:21.000000000 +0100 -+++ source/srclib/getprogname.c 2018-10-03 19:32:07.382785859 +0200 -@@ -144,7 +144,7 @@ getprogname (void) +diff -ruw source/srclib/getprogname.c source-new/srclib/getprogname.c +--- source/srclib/getprogname.c 2017-01-01 16:02:21.000000000 -0700 ++++ source-new/srclib/getprogname.c 2018-12-29 08:08:09.138286508 -0700 +@@ -43,6 +43,14 @@ + # include + #endif + ++#if defined(__redox__) ++# include ++# include ++# include ++# include ++# include ++#endif ++ + #include "dirname.h" + + #ifndef HAVE_GETPROGNAME /* not Mac OS X, FreeBSD, NetBSD, OpenBSD >= 5.4, Cygwin */ +@@ -143,6 +151,17 @@ + free (buf.ps_pathptr); } return p; ++# elif defined(__redox__) ++ char filename[PATH_MAX]; ++ int fd = open ("sys:exe", O_RDONLY); ++ if (fd > 0) { ++ int len = read(fd, filename, PATH_MAX-1); ++ if (len > 0) { ++ filename[len] = '\0'; ++ return strdup(filename); ++ } ++ } ++ return NULL; # else --# error "getprogname module not ported to this OS" -+ return "?"; + # error "getprogname module not ported to this OS" # endif - } - -diff -rupNw source-original/srclib/signal.in.h source/srclib/signal.in.h ---- source-original/srclib/signal.in.h 2017-01-02 00:02:22.000000000 +0100 -+++ source/srclib/signal.in.h 2018-10-03 19:46:53.323659264 +0200 -@@ -186,12 +186,12 @@ _GL_WARN_ON_USE (raise, "raise can crash - - /* Maximum signal number + 1. */ - # ifndef NSIG --# define NSIG 32 -+# define NSIG 64 - # endif - - /* This code supports only 32 signals. */ - # if !GNULIB_defined_verify_NSIG_constraint --typedef int verify_NSIG_constraint[NSIG <= 32 ? 1 : -1]; -+typedef int verify_NSIG_constraint[NSIG <= 64 ? 1 : -1]; - # define GNULIB_defined_verify_NSIG_constraint 1 - # endif - diff --git a/recipes/sdl/02_timers.patch b/recipes/sdl/02_timers.patch deleted file mode 100644 index 1cd20912..00000000 --- a/recipes/sdl/02_timers.patch +++ /dev/null @@ -1,57 +0,0 @@ -diff -rupN source/src/timer/unix/SDL_systimer.c source-redox/src/timer/unix/SDL_systimer.c ---- source/src/timer/unix/SDL_systimer.c 2012-01-19 07:30:06.000000000 +0100 -+++ source-redox/src/timer/unix/SDL_systimer.c 2018-04-22 17:42:17.455342646 +0200 -@@ -150,14 +150,14 @@ static void HandleAlarm(int sig) - - int SDL_SYS_TimerInit(void) - { -- struct sigaction action; -+ //struct sigaction action; - -- /* Set the alarm handler (Linux specific) */ -- SDL_memset(&action, 0, sizeof(action)); -- action.sa_handler = HandleAlarm; -- action.sa_flags = SA_RESTART; -- sigemptyset(&action.sa_mask); -- sigaction(SIGALRM, &action, NULL); -+ ///* Set the alarm handler (Linux specific) */ -+ //SDL_memset(&action, 0, sizeof(action)); -+ //action.sa_handler = HandleAlarm; -+ //action.sa_flags = SA_RESTART; -+ //sigemptyset(&action.sa_mask); -+ //sigaction(SIGALRM, &action, NULL); - return(0); - } - -@@ -168,22 +168,22 @@ void SDL_SYS_TimerQuit(void) - - int SDL_SYS_StartTimer(void) - { -- struct itimerval timer; -+ //struct itimerval timer; - -- timer.it_value.tv_sec = (SDL_alarm_interval/1000); -- timer.it_value.tv_usec = (SDL_alarm_interval%1000)*1000; -- timer.it_interval.tv_sec = (SDL_alarm_interval/1000); -- timer.it_interval.tv_usec = (SDL_alarm_interval%1000)*1000; -- setitimer(ITIMER_REAL, &timer, NULL); -+ //timer.it_value.tv_sec = (SDL_alarm_interval/1000); -+ //timer.it_value.tv_usec = (SDL_alarm_interval%1000)*1000; -+ //timer.it_interval.tv_sec = (SDL_alarm_interval/1000); -+ //timer.it_interval.tv_usec = (SDL_alarm_interval%1000)*1000; -+ //setitimer(ITIMER_REAL, &timer, NULL); - return(0); - } - - void SDL_SYS_StopTimer(void) - { -- struct itimerval timer; -+ //struct itimerval timer; - -- SDL_memset(&timer, 0, (sizeof timer)); -- setitimer(ITIMER_REAL, &timer, NULL); -+ //SDL_memset(&timer, 0, (sizeof timer)); -+ //setitimer(ITIMER_REAL, &timer, NULL); - } - - #else /* USE_ITIMER */ diff --git a/recipes/sdl/recipe.sh b/recipes/sdl/recipe.sh index 8d762a0d..2c82426b 100644 --- a/recipes/sdl/recipe.sh +++ b/recipes/sdl/recipe.sh @@ -25,10 +25,8 @@ function recipe_build { --disable-video-x11 \ --disable-loadso \ --disable-threads \ - --enable-audio \ - --enable-dummyaudio \ - --enable-video-orbital \ - --enable-cdrom + --enable-clock_gettime \ + --enable-video-orbital make -j"$(nproc)" skip=1 } From 771c5c7ce0ed2961c3c49bb9b7df93c244359eec Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 29 Dec 2018 08:23:13 -0700 Subject: [PATCH 0526/3180] openttd: link with pthreads --- recipes/openttd/01_redox.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/openttd/01_redox.patch b/recipes/openttd/01_redox.patch index f67f9a5b..a97ebf2a 100644 --- a/recipes/openttd/01_redox.patch +++ b/recipes/openttd/01_redox.patch @@ -15,7 +15,7 @@ diff -rupNw source-original/config.lib source/config.lib if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "OPENBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ] && [ "$os" != "PSP" ] && [ "$os" != "OS2" ]; then - LIBS="$LIBS -lpthread" -+ LIBS="$LIBS" ++ LIBS="$LIBS -Wl,--whole-archive -lpthread -Wl,--no-whole-archive" fi if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "MINGW" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ]; then From 43bfb21a5a298e817c99e4bf23f4170a868e5d2a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 29 Dec 2018 08:23:57 -0700 Subject: [PATCH 0527/3180] openttd: Enable threads --- recipes/openttd/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/openttd/recipe.sh b/recipes/openttd/recipe.sh index 42c838bf..018f9d0a 100644 --- a/recipes/openttd/recipe.sh +++ b/recipes/openttd/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { } function recipe_build { - ./configure --build=`gcc -dumpmachine` --host=${HOST} --prefix='' --enable-static --without-liblzo2 --disable-network --without-threads + ./configure --build=`gcc -dumpmachine` --host=${HOST} --prefix='' --enable-static --without-liblzo2 --disable-network make VERBOSE=1 -j"$(nproc)" skip=1 } From d5e8455c48f868b0e3f507ed99a7442b61db4d70 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 29 Dec 2018 08:52:48 -0700 Subject: [PATCH 0528/3180] netsurf: Cleanup patch --- recipes/netsurf/01_redox.patch | 218 +++------------------------------ 1 file changed, 20 insertions(+), 198 deletions(-) diff --git a/recipes/netsurf/01_redox.patch b/recipes/netsurf/01_redox.patch index c6ee00a3..751ae2df 100644 --- a/recipes/netsurf/01_redox.patch +++ b/recipes/netsurf/01_redox.patch @@ -1,7 +1,7 @@ -diff -rupNw source-original/libnsfb/Makefile source/libnsfb/Makefile ---- source-original/libnsfb/Makefile 2017-10-16 12:09:35.000000000 +0200 -+++ source/libnsfb/Makefile 2018-03-04 20:43:18.172956846 +0100 -@@ -43,10 +43,10 @@ endif +diff -ruwN source/libnsfb/Makefile source-new/libnsfb/Makefile +--- source/libnsfb/Makefile 2017-10-16 04:09:35.000000000 -0600 ++++ source-new/libnsfb/Makefile 2018-12-29 08:29:56.855249826 -0700 +@@ -43,10 +43,10 @@ NSFB_XCB_PKG_NAMES := xcb xcb-icccm xcb-image xcb-keysyms xcb-atom # determine which surface handlers can be compiled based upon avalable library @@ -15,9 +15,9 @@ diff -rupNw source-original/libnsfb/Makefile source/libnsfb/Makefile # surfaces not detectable via pkg-config NSFB_ABLE_AVAILABLE := no -diff -rupNw source-original/libnsfb/src/plot.h source/libnsfb/src/plot.h ---- source-original/libnsfb/src/plot.h 2017-10-16 12:09:35.000000000 +0200 -+++ source/libnsfb/src/plot.h 2018-03-04 20:43:18.188956997 +0100 +diff -ruwN source/libnsfb/src/plot.h source-new/libnsfb/src/plot.h +--- source/libnsfb/src/plot.h 2017-10-16 04:09:35.000000000 -0600 ++++ source-new/libnsfb/src/plot.h 2018-12-29 08:29:56.855249826 -0700 @@ -36,7 +36,7 @@ #define NSFB_BE_BYTE_ORDER #endif @@ -27,188 +27,10 @@ diff -rupNw source-original/libnsfb/src/plot.h source/libnsfb/src/plot.h #if defined(__BYTE_ORDER__) #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ #define NSFB_BE_BYTE_ORDER -diff -rupNw source-original/libnsfb/src/surface/sdl.c source/libnsfb/src/surface/sdl.c ---- source-original/libnsfb/src/surface/sdl.c 2017-10-16 12:09:35.000000000 +0200 -+++ source/libnsfb/src/surface/sdl.c 2018-03-04 20:43:18.188956997 +0100 -@@ -458,7 +458,7 @@ static int sdl_initialise(nsfb_t *nsfb) - return -1; - - /* initialise SDL library */ -- if (SDL_Init(SDL_INIT_TIMER | SDL_INIT_VIDEO) < 0 ) { -+ if (SDL_Init(/*SDL_INIT_TIMER | */SDL_INIT_VIDEO) < 0 ) { - fprintf(stderr, "Unable to init SDL: %s\n", SDL_GetError()); - return -1; - } -@@ -545,23 +545,23 @@ static bool sdl_input(nsfb_t *nsfb, nsfb - - nsfb = nsfb; /* unused */ - -- if (timeout == 0) { -+ //if (timeout == 0) { - got_event = SDL_PollEvent(&sdlevent); -- } else { -- if (timeout > 0) { -- /* setup wake timer to ensure the wait event below exits no later -- * than when the timeout has occoured. -- */ -- SDL_TimerID tid; -- tid = SDL_AddTimer(timeout, wakeeventtimer, NULL); -- got_event = SDL_WaitEvent(&sdlevent); -- if ((got_event == 0) || (sdlevent.type != SDL_USEREVENT)) { -- SDL_RemoveTimer(tid); -- } -- } else { -- got_event = SDL_WaitEvent(&sdlevent); -- } -- } -+ //} else { -+ // if (timeout > 0) { -+ // /* setup wake timer to ensure the wait event below exits no later -+ // * than when the timeout has occoured. -+ // */ -+ // SDL_TimerID tid; -+ // tid = SDL_AddTimer(timeout, wakeeventtimer, NULL); -+ // got_event = SDL_WaitEvent(&sdlevent); -+ // if ((got_event == 0) || (sdlevent.type != SDL_USEREVENT)) { -+ // SDL_RemoveTimer(tid); -+ // } -+ // } else { -+ // got_event = SDL_WaitEvent(&sdlevent); -+ // } -+ //} - - /* Do nothing if there was no event */ - if (got_event == 0) { -diff -rupNw source-original/libparserutils/src/input/filter.c source/libparserutils/src/input/filter.c ---- source-original/libparserutils/src/input/filter.c 2017-10-16 12:09:36.000000000 +0200 -+++ source/libparserutils/src/input/filter.c 2018-03-04 20:43:18.188956997 +0100 -@@ -10,7 +10,7 @@ - #include - #include - --#ifndef WITHOUT_ICONV_FILTER -+#if 0 - #include - #endif - -@@ -22,7 +22,7 @@ - - /** Input filter */ - struct parserutils_filter { --#ifndef WITHOUT_ICONV_FILTER -+#if 0 - iconv_t cd; /**< Iconv conversion descriptor */ - uint16_t int_enc; /**< The internal encoding */ - #else -@@ -68,7 +68,7 @@ parserutils_error parserutils__filter_cr - if (f == NULL) - return PARSERUTILS_NOMEM; - --#ifndef WITHOUT_ICONV_FILTER -+#if 0 - f->cd = (iconv_t) -1; - f->int_enc = parserutils_charset_mibenum_from_name( - int_enc, strlen(int_enc)); -@@ -88,7 +88,7 @@ parserutils_error parserutils__filter_cr - return error; - } - --#ifdef WITHOUT_ICONV_FILTER -+#if 1 - error = parserutils_charset_codec_create(int_enc, &f->write_codec); - if (error != PARSERUTILS_OK) { - if (f->read_codec != NULL) { -@@ -116,7 +116,7 @@ parserutils_error parserutils__filter_de - if (input == NULL) - return PARSERUTILS_BADPARM; - --#ifndef WITHOUT_ICONV_FILTER -+#if 0 - if (input->cd != (iconv_t) -1) { - iconv_close(input->cd); - input->cd = (iconv_t) -1; -@@ -184,7 +184,7 @@ parserutils_error parserutils__filter_pr - output == NULL || *output == NULL || outlen == NULL) - return PARSERUTILS_BADPARM; - --#ifndef WITHOUT_ICONV_FILTER -+#if 0 - if (iconv(input->cd, (void *) data, len, - (char **) output, outlen) == (size_t) -1) { - switch (errno) { -@@ -305,7 +305,7 @@ parserutils_error parserutils__filter_re - if (input == NULL) - return PARSERUTILS_BADPARM; - --#ifndef WITHOUT_ICONV_FILTER -+#if 0 - iconv(input->cd, NULL, 0, NULL, 0); - #else - /* Clear pivot buffer leftovers */ -@@ -340,7 +340,7 @@ parserutils_error filter_set_defaults(pa - if (input == NULL) - return PARSERUTILS_BADPARM; - --#ifdef WITHOUT_ICONV_FILTER -+#if 1 - input->read_codec = NULL; - input->write_codec = NULL; - #endif -@@ -377,7 +377,7 @@ parserutils_error filter_set_encoding(pa - if (input->settings.encoding == mibenum) - return PARSERUTILS_OK; - --#ifndef WITHOUT_ICONV_FILTER -+#if 0 - if (input->cd != (iconv_t) -1) { - iconv_close(input->cd); - input->cd = (iconv_t) -1; -diff -rupNw source-original/netsurf/content/fetchers/file.c source/netsurf/content/fetchers/file.c ---- source-original/netsurf/content/fetchers/file.c 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/content/fetchers/file.c 2018-03-04 20:43:18.216957262 +0100 -@@ -39,7 +39,7 @@ - #include - #include - #include --#ifdef HAVE_MMAP -+#if 0 - #include - #endif - #include -@@ -262,7 +262,7 @@ fetch_file_process_error_aborted: - static void fetch_file_process_plain(struct fetch_file_context *ctx, - struct stat *fdstat) - { --#ifdef HAVE_MMAP -+#if 0 - fetch_msg msg; - char *buf = NULL; - size_t buf_size; -diff -rupNw source-original/netsurf/content/urldb.c source/netsurf/content/urldb.c ---- source-original/netsurf/content/urldb.c 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/content/urldb.c 2018-03-04 20:43:18.216957262 +0100 -@@ -630,7 +630,7 @@ static bool urldb__host_is_ip_address(co - size_t host_len = strlen(host); - const char *sane_host; - const char *slash; --#ifndef NO_IPV6 -+#if 0 - struct in6_addr ipv6; - char ipv6_addr[64]; - unsigned int ipv6_addr_len; -@@ -688,7 +688,7 @@ static bool urldb__host_is_ip_address(co - goto out_false; - } - --#ifndef NO_IPV6 -+#if 0 - if ((host_len < 6) || - (sane_host[0] != '[') || - (sane_host[host_len - 1] != ']')) { -diff -rupNw source-original/netsurf/frontends/framebuffer/Makefile source/netsurf/frontends/framebuffer/Makefile ---- source-original/netsurf/frontends/framebuffer/Makefile 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/frontends/framebuffer/Makefile 2018-03-04 20:43:18.232957414 +0100 -@@ -35,8 +35,8 @@ LDFLAGS += -Wl,--no-whole-archive +diff -ruwN source/netsurf/frontends/framebuffer/Makefile source-new/netsurf/frontends/framebuffer/Makefile +--- source/netsurf/frontends/framebuffer/Makefile 2017-10-16 04:09:36.000000000 -0600 ++++ source-new/netsurf/frontends/framebuffer/Makefile 2018-12-29 08:29:56.855249826 -0700 +@@ -35,8 +35,8 @@ # freetype is optional but does not use pkg-config ifeq ($(NETSURF_FB_FONTLIB),freetype) @@ -219,9 +41,9 @@ diff -rupNw source-original/netsurf/frontends/framebuffer/Makefile source/netsur endif -diff -rupNw source-original/netsurf/Makefile.config source/netsurf/Makefile.config ---- source-original/netsurf/Makefile.config 1970-01-01 01:00:00.000000000 +0100 -+++ source/netsurf/Makefile.config 2018-03-04 20:43:18.244957528 +0100 +diff -ruwN source/netsurf/Makefile.config source-new/netsurf/Makefile.config +--- source/netsurf/Makefile.config 1969-12-31 17:00:00.000000000 -0700 ++++ source-new/netsurf/Makefile.config 2018-12-29 08:29:56.855249826 -0700 @@ -0,0 +1,28 @@ +override NETSURF_HOMEPAGE := "https://www.redox-os.org/" +override NETSURF_FB_FRONTEND := sdl @@ -251,10 +73,10 @@ diff -rupNw source-original/netsurf/Makefile.config source/netsurf/Makefile.conf +override NETSURF_FB_FONT_MONOSPACE_BOLD := Mono/Fira/Bold.ttf +override NETSURF_FB_FONT_CURSIVE := Sans/Fira/Regular.ttf +override NETSURF_FB_FONT_FANTASY := Sans/Fira/Regular.ttf -diff -rupNw source-original/netsurf/render/form.c source/netsurf/render/form.c ---- source-original/netsurf/render/form.c 2017-10-16 12:09:36.000000000 +0200 -+++ source/netsurf/render/form.c 2018-03-09 00:03:07.456378705 +0100 -@@ -1080,7 +1080,7 @@ char *form_encode_item(const char *item, +diff -ruwN source/netsurf/render/form.c source-new/netsurf/render/form.c +--- source/netsurf/render/form.c 2017-10-16 04:09:36.000000000 -0600 ++++ source-new/netsurf/render/form.c 2018-12-29 08:29:56.855249826 -0700 +@@ -1080,7 +1080,7 @@ if (!item || !charset) return NULL; @@ -263,7 +85,7 @@ diff -rupNw source-original/netsurf/render/form.c source/netsurf/render/form.c err = utf8_to_enc(item, cset, 0, &ret); if (err == NSERROR_BAD_ENCODING) { -@@ -1092,7 +1092,7 @@ char *form_encode_item(const char *item, +@@ -1092,7 +1092,7 @@ /* nope, try fallback charset (if any) */ if (fallback) { snprintf(cset, sizeof cset, @@ -272,7 +94,7 @@ diff -rupNw source-original/netsurf/render/form.c source/netsurf/render/form.c err = utf8_to_enc(item, cset, 0, &ret); if (err == NSERROR_BAD_ENCODING) { -@@ -1105,7 +1105,7 @@ char *form_encode_item(const char *item, +@@ -1105,7 +1105,7 @@ if (err == NSERROR_BAD_ENCODING) { /* that also failed, use 8859-1 */ From c56c96e0a7e008b02b1de6b9ec6f0adbb269a8ed Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 29 Dec 2018 08:53:03 -0700 Subject: [PATCH 0529/3180] openttd: disable threads again --- recipes/openttd/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/openttd/recipe.sh b/recipes/openttd/recipe.sh index 018f9d0a..42c838bf 100644 --- a/recipes/openttd/recipe.sh +++ b/recipes/openttd/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { } function recipe_build { - ./configure --build=`gcc -dumpmachine` --host=${HOST} --prefix='' --enable-static --without-liblzo2 --disable-network + ./configure --build=`gcc -dumpmachine` --host=${HOST} --prefix='' --enable-static --without-liblzo2 --disable-network --without-threads make VERBOSE=1 -j"$(nproc)" skip=1 } From 90f9bdc9218e319579ce0ab8d401b4504e7aafe1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 29 Dec 2018 10:15:32 -0700 Subject: [PATCH 0530/3180] openttd: Fix issue with opening /dev/null --- recipes/openttd/01_redox.patch | 51 ++++++++++++++++++---------------- recipes/openttd/recipe.sh | 11 ++++++-- 2 files changed, 36 insertions(+), 26 deletions(-) diff --git a/recipes/openttd/01_redox.patch b/recipes/openttd/01_redox.patch index a97ebf2a..22915187 100644 --- a/recipes/openttd/01_redox.patch +++ b/recipes/openttd/01_redox.patch @@ -1,6 +1,6 @@ -diff -rupNw source-original/config.lib source/config.lib ---- source-original/config.lib 2018-11-23 19:25:11.000000000 +0100 -+++ source/config.lib 2018-11-23 21:37:19.956620161 +0100 +diff -rupwN source/config.lib source-new/config.lib +--- source/config.lib 2018-12-29 07:28:58.975290421 -0700 ++++ source-new/config.lib 2018-12-29 10:11:42.310241717 -0700 @@ -1486,7 +1486,7 @@ make_cflags_and_ldflags() { # Special CXXFlags for HOST CXXFLAGS="$CXXFLAGS" @@ -19,21 +19,24 @@ diff -rupNw source-original/config.lib source/config.lib fi if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "MINGW" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ]; then -diff -rupNw source-original/src/os/unix/unix.cpp source/src/os/unix/unix.cpp ---- source-original/src/os/unix/unix.cpp 2018-11-23 19:25:12.000000000 +0100 -+++ source/src/os/unix/unix.cpp 2018-11-23 21:37:19.956620161 +0100 -@@ -28,7 +28,7 @@ - #ifdef __APPLE__ - #include - #elif (defined(_POSIX_VERSION) && _POSIX_VERSION >= 200112L) || defined(__GLIBC__) -- #define HAS_STATVFS -+ //#define HAS_STATVFS - #endif - - #if defined(OPENBSD) || defined(__NetBSD__) || defined(__FreeBSD__) -diff -rupNw source-original/src/rev.cpp.in source/src/rev.cpp.in ---- source-original/src/rev.cpp.in 2018-11-23 19:25:12.000000000 +0100 -+++ source/src/rev.cpp.in 2018-11-23 21:37:19.956620161 +0100 +diff -rupwN source/src/music/extmidi.cpp source-new/src/music/extmidi.cpp +--- source/src/music/extmidi.cpp 2018-12-29 07:28:59.143295501 -0700 ++++ source-new/src/music/extmidi.cpp 2018-12-29 10:14:06.637357598 -0700 +@@ -115,7 +115,11 @@ void MusicDriver_ExtMidi::DoPlay() + switch (this->pid) { + case 0: { + close(0); ++#if defined(__redox__) ++ int d = open("null:", O_RDONLY); ++#else + int d = open("/dev/null", O_RDONLY); ++#endif + if (d != -1 && dup2(d, 1) != -1 && dup2(d, 2) != -1) { + execvp(this->params[0], this->params); + } +diff -rupwN source/src/rev.cpp.in source-new/src/rev.cpp.in +--- source/src/rev.cpp.in 2018-12-29 07:28:59.167296226 -0700 ++++ source-new/src/rev.cpp.in 2018-12-29 10:11:42.314241804 -0700 @@ -57,7 +57,7 @@ const char _openttd_build_date[] = __DAT * (compiling from sources without any version control software) * and 2 is for modified revision. @@ -43,9 +46,9 @@ diff -rupNw source-original/src/rev.cpp.in source/src/rev.cpp.in /** * The NewGRF revision of OTTD: -diff -rupNw source-original/src/stdafx.h source/src/stdafx.h ---- source-original/src/stdafx.h 2018-11-23 19:25:12.000000000 +0100 -+++ source/src/stdafx.h 2018-11-23 19:49:25.000000000 +0100 +diff -rupwN source/src/stdafx.h source-new/src/stdafx.h +--- source/src/stdafx.h 2018-12-29 07:28:59.203297314 -0700 ++++ source-new/src/stdafx.h 2018-12-29 10:11:42.314241804 -0700 @@ -12,6 +12,9 @@ #ifndef STDAFX_H #define STDAFX_H @@ -56,9 +59,9 @@ diff -rupNw source-original/src/stdafx.h source/src/stdafx.h #if defined(__APPLE__) #include "os/macosx/osx_stdafx.h" #endif /* __APPLE__ */ -diff -rupNw source-original/src/string.cpp source/src/string.cpp ---- source-original/src/string.cpp 2018-11-23 19:25:12.000000000 +0100 -+++ source/src/string.cpp 2018-11-23 20:01:10.000000000 +0100 +diff -rupwN source/src/string.cpp source-new/src/string.cpp +--- source/src/string.cpp 2018-12-29 07:28:59.207297436 -0700 ++++ source-new/src/string.cpp 2018-12-29 10:11:42.314241804 -0700 @@ -528,7 +528,7 @@ size_t Utf8TrimString(char *s, size_t ma return length; } diff --git a/recipes/openttd/recipe.sh b/recipes/openttd/recipe.sh index 42c838bf..f0c9d232 100644 --- a/recipes/openttd/recipe.sh +++ b/recipes/openttd/recipe.sh @@ -1,7 +1,7 @@ VERSION=1.8 GIT=https://github.com/OpenTTD/OpenTTD.git BRANCH=release/$VERSION -BUILD_DEPENDS=(sdl liborbital zlib xz) +BUILD_DEPENDS=(freetype liborbital libpng sdl xz zlib) function recipe_version { echo "$VERSION" @@ -14,7 +14,14 @@ function recipe_update { } function recipe_build { - ./configure --build=`gcc -dumpmachine` --host=${HOST} --prefix='' --enable-static --without-liblzo2 --disable-network --without-threads + ./configure \ + --build=`gcc -dumpmachine` \ + --host=${HOST} \ + --prefix='' \ + --enable-static \ + --without-liblzo2 \ + --disable-network \ + --without-threads make VERBOSE=1 -j"$(nproc)" skip=1 } From 8b8981c8789d791330ea70cd11fcbdce183fdff6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 29 Dec 2018 15:13:19 -0700 Subject: [PATCH 0531/3180] Add audiod --- recipes/audiod/recipe.sh | 1 + 1 file changed, 1 insertion(+) create mode 100644 recipes/audiod/recipe.sh diff --git a/recipes/audiod/recipe.sh b/recipes/audiod/recipe.sh new file mode 100644 index 00000000..d082f464 --- /dev/null +++ b/recipes/audiod/recipe.sh @@ -0,0 +1 @@ +GIT=https://gitlab.redox-os.org/redox-os/audiod.git From 936354cb535536b0a56ae41eefa33c7f6c28badf Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 29 Dec 2018 17:31:08 -0700 Subject: [PATCH 0532/3180] Add threading and audio for redox --- recipes/sdl/03_cdrom.patch | 15 - recipes/sdl/recipe.sh | 2 +- recipes/sdl/{01_orbital.patch => redox.patch} | 726 ++++++++++++++++-- 3 files changed, 683 insertions(+), 60 deletions(-) delete mode 100644 recipes/sdl/03_cdrom.patch rename recipes/sdl/{01_orbital.patch => redox.patch} (51%) diff --git a/recipes/sdl/03_cdrom.patch b/recipes/sdl/03_cdrom.patch deleted file mode 100644 index 350595be..00000000 --- a/recipes/sdl/03_cdrom.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -rupNw source-original/configure.in source/configure.in ---- source-original/configure.in 2012-01-19 07:30:05.000000000 +0100 -+++ source/configure.in 2018-05-03 00:23:39.060438383 +0200 -@@ -2445,6 +2445,11 @@ case "$host" in - SOURCES="$SOURCES $srcdir/src/cdrom/osf/*.c" - have_cdrom=yes - ;; -+ redox) -+ AC_DEFINE(SDL_CDROM_DUMMY) -+ SOURCES="$SOURCES $srcdir/src/cdrom/dummy/*.c" -+ have_cdrom=yes -+ ;; - esac - fi - # Set up files for the thread library diff --git a/recipes/sdl/recipe.sh b/recipes/sdl/recipe.sh index 2c82426b..83b58ee3 100644 --- a/recipes/sdl/recipe.sh +++ b/recipes/sdl/recipe.sh @@ -24,7 +24,7 @@ function recipe_build { --disable-pulseaudio \ --disable-video-x11 \ --disable-loadso \ - --disable-threads \ + --enable-redoxaudio \ --enable-clock_gettime \ --enable-video-orbital make -j"$(nproc)" diff --git a/recipes/sdl/01_orbital.patch b/recipes/sdl/redox.patch similarity index 51% rename from recipes/sdl/01_orbital.patch rename to recipes/sdl/redox.patch index 16f7d073..39da12a0 100644 --- a/recipes/sdl/01_orbital.patch +++ b/recipes/sdl/redox.patch @@ -1,7 +1,7 @@ -diff -rupNw source-original/build-scripts/config.sub source/build-scripts/config.sub ---- source-original/build-scripts/config.sub 2012-01-19 07:30:05.000000000 +0100 -+++ source/build-scripts/config.sub 2018-05-01 17:31:52.766229515 +0200 -@@ -1276,7 +1276,7 @@ case $os in +diff -ruwN source/build-scripts/config.sub source-new/build-scripts/config.sub +--- source/build-scripts/config.sub 2012-01-18 23:30:05.000000000 -0700 ++++ source-new/build-scripts/config.sub 2018-12-29 15:57:00.298520310 -0700 +@@ -1276,7 +1276,7 @@ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ @@ -10,10 +10,29 @@ diff -rupNw source-original/build-scripts/config.sub source/build-scripts/config | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ -diff -rupNw source-original/configure.in source/configure.in ---- source-original/configure.in 2012-01-19 07:30:05.000000000 +0100 -+++ source/configure.in 2018-05-01 17:31:52.770229654 +0200 -@@ -1646,6 +1646,20 @@ AC_HELP_STRING([--enable-video-dummy], [ +diff -ruwN source/configure.in source-new/configure.in +--- source/configure.in 2012-01-18 23:30:05.000000000 -0700 ++++ source-new/configure.in 2018-12-29 17:27:34.957444409 -0700 +@@ -685,6 +685,18 @@ + fi + } + ++dnl Set up the Redox Audio driver ++CheckRedoxAudio() ++{ ++ AC_ARG_ENABLE(redoxaudio, ++AC_HELP_STRING([--enable-redoxaudio], [support the redox audio driver [[default=yes]]]), ++ , enable_redoxaudio=yes) ++ if test x$enable_audio = xyes -a x$enable_redoxaudio = xyes; then ++ AC_DEFINE(SDL_AUDIO_DRIVER_REDOX) ++ SOURCES="$SOURCES $srcdir/src/audio/redox/*.c" ++ fi ++} ++ + dnl See if we can use x86 assembly blitters + # NASM is available from: http://nasm.sourceforge.net + CheckNASM() +@@ -1646,6 +1658,20 @@ fi } @@ -34,7 +53,19 @@ diff -rupNw source-original/configure.in source/configure.in dnl Check to see if OpenGL support is desired AC_ARG_ENABLE(video-opengl, AC_HELP_STRING([--enable-video-opengl], [include OpenGL context creation [[default=yes]]]), -@@ -2325,10 +2339,11 @@ case "$host" in +@@ -1859,6 +1885,11 @@ + AC_HELP_STRING([--enable-pthread-sem], [use pthread semaphores [[default=yes]]]), + , enable_pthread_sem=yes) + case "$host" in ++ *-*-redox*) ++ pthread_cflags="-D_REENTRANT" ++ pthread_lib="-lpthread" ++ SDL_LIBS="$SDL_LIBS -Wl,--whole-archive -lpthread -Wl,--no-whole-archive" ++ ;; + *-*-linux*|*-*-uclinux*) + pthread_cflags="-D_REENTRANT" + pthread_lib="-lpthread" +@@ -2325,10 +2356,11 @@ have_timers=yes fi ;; @@ -47,18 +78,41 @@ diff -rupNw source-original/configure.in source/configure.in *-*-kfreebsd*-gnu) ARCH=kfreebsd-gnu ;; *-*-knetbsd*-gnu) ARCH=knetbsd-gnu ;; *-*-kopenbsd*-gnu) ARCH=kopenbsd-gnu ;; -@@ -2347,6 +2362,7 @@ case "$host" in +@@ -2347,8 +2379,10 @@ esac CheckVisibilityHidden CheckDummyVideo + CheckOrbitalVideo CheckDiskAudio CheckDummyAudio ++ CheckRedoxAudio CheckDLOPEN -diff -rupNw source-original/include/SDL_config.h.in source/include/SDL_config.h.in ---- source-original/include/SDL_config.h.in 2012-01-19 07:30:05.000000000 +0100 -+++ source/include/SDL_config.h.in 2018-05-01 17:31:52.770229654 +0200 -@@ -268,6 +268,7 @@ + CheckNASM + CheckAltivec +@@ -2445,6 +2479,11 @@ + SOURCES="$SOURCES $srcdir/src/cdrom/osf/*.c" + have_cdrom=yes + ;; ++ redox) ++ AC_DEFINE(SDL_CDROM_DUMMY) ++ SOURCES="$SOURCES $srcdir/src/cdrom/dummy/*.c" ++ have_cdrom=yes ++ ;; + esac + fi + # Set up files for the thread library +diff -ruwN source/include/SDL_config.h.in source-new/include/SDL_config.h.in +--- source/include/SDL_config.h.in 2012-01-18 23:30:05.000000000 -0700 ++++ source-new/include/SDL_config.h.in 2018-12-29 15:57:00.298520310 -0700 +@@ -182,6 +182,7 @@ + #undef SDL_AUDIO_DRIVER_OSS_SOUNDCARD_H + #undef SDL_AUDIO_DRIVER_PAUD + #undef SDL_AUDIO_DRIVER_QNXNTO ++#undef SDL_AUDIO_DRIVER_REDOX + #undef SDL_AUDIO_DRIVER_SNDMGR + #undef SDL_AUDIO_DRIVER_SUNAUDIO + #undef SDL_AUDIO_DRIVER_WAVEOUT +@@ -268,6 +269,7 @@ #undef SDL_VIDEO_DRIVER_GGI #undef SDL_VIDEO_DRIVER_IPOD #undef SDL_VIDEO_DRIVER_NANOX @@ -66,9 +120,593 @@ diff -rupNw source-original/include/SDL_config.h.in source/include/SDL_config.h. #undef SDL_VIDEO_DRIVER_OS2FS #undef SDL_VIDEO_DRIVER_PHOTON #undef SDL_VIDEO_DRIVER_PICOGUI -diff -rupNw source-original/src/video/orbital/SDL_orbitalevents.c source/src/video/orbital/SDL_orbitalevents.c ---- source-original/src/video/orbital/SDL_orbitalevents.c 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalevents.c 2018-05-01 17:31:52.770229654 +0200 +diff -ruwN source/include/SDL_config.h.in.orig source-new/include/SDL_config.h.in.orig +--- source/include/SDL_config.h.in.orig 1969-12-31 17:00:00.000000000 -0700 ++++ source-new/include/SDL_config.h.in.orig 2018-12-29 15:57:00.298520310 -0700 +@@ -0,0 +1,313 @@ ++/* ++ SDL - Simple DirectMedia Layer ++ Copyright (C) 1997-2012 Sam Lantinga ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free Software ++ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++ Sam Lantinga ++ slouken@libsdl.org ++*/ ++ ++#ifndef _SDL_config_h ++#define _SDL_config_h ++ ++/* This is a set of defines to configure the SDL features */ ++ ++/* General platform specific identifiers */ ++#include "SDL_platform.h" ++ ++/* Make sure that this isn't included by Visual C++ */ ++#ifdef _MSC_VER ++#error You should copy include/SDL_config.h.default to include/SDL_config.h ++#endif ++ ++/* C language features */ ++#undef const ++#undef inline ++#undef volatile ++ ++/* C datatypes */ ++#undef size_t ++#undef int8_t ++#undef uint8_t ++#undef int16_t ++#undef uint16_t ++#undef int32_t ++#undef uint32_t ++#undef int64_t ++#undef uint64_t ++#undef uintptr_t ++#undef SDL_HAS_64BIT_TYPE ++ ++/* Endianness */ ++#undef SDL_BYTEORDER ++ ++/* Comment this if you want to build without any C library requirements */ ++#undef HAVE_LIBC ++#if HAVE_LIBC ++ ++/* Useful headers */ ++#undef HAVE_ALLOCA_H ++#undef HAVE_SYS_TYPES_H ++#undef HAVE_STDIO_H ++#undef STDC_HEADERS ++#undef HAVE_STDLIB_H ++#undef HAVE_STDARG_H ++#undef HAVE_MALLOC_H ++#undef HAVE_MEMORY_H ++#undef HAVE_STRING_H ++#undef HAVE_STRINGS_H ++#undef HAVE_INTTYPES_H ++#undef HAVE_STDINT_H ++#undef HAVE_CTYPE_H ++#undef HAVE_MATH_H ++#undef HAVE_ICONV_H ++#undef HAVE_SIGNAL_H ++#undef HAVE_ALTIVEC_H ++ ++/* C library functions */ ++#undef HAVE_MALLOC ++#undef HAVE_CALLOC ++#undef HAVE_REALLOC ++#undef HAVE_FREE ++#undef HAVE_ALLOCA ++#ifndef _WIN32 /* Don't use C runtime versions of these on Windows */ ++#undef HAVE_GETENV ++#undef HAVE_PUTENV ++#undef HAVE_UNSETENV ++#endif ++#undef HAVE_QSORT ++#undef HAVE_ABS ++#undef HAVE_BCOPY ++#undef HAVE_MEMSET ++#undef HAVE_MEMCPY ++#undef HAVE_MEMMOVE ++#undef HAVE_MEMCMP ++#undef HAVE_STRLEN ++#undef HAVE_STRLCPY ++#undef HAVE_STRLCAT ++#undef HAVE_STRDUP ++#undef HAVE__STRREV ++#undef HAVE__STRUPR ++#undef HAVE__STRLWR ++#undef HAVE_INDEX ++#undef HAVE_RINDEX ++#undef HAVE_STRCHR ++#undef HAVE_STRRCHR ++#undef HAVE_STRSTR ++#undef HAVE_ITOA ++#undef HAVE__LTOA ++#undef HAVE__UITOA ++#undef HAVE__ULTOA ++#undef HAVE_STRTOL ++#undef HAVE_STRTOUL ++#undef HAVE__I64TOA ++#undef HAVE__UI64TOA ++#undef HAVE_STRTOLL ++#undef HAVE_STRTOULL ++#undef HAVE_STRTOD ++#undef HAVE_ATOI ++#undef HAVE_ATOF ++#undef HAVE_STRCMP ++#undef HAVE_STRNCMP ++#undef HAVE__STRICMP ++#undef HAVE_STRCASECMP ++#undef HAVE__STRNICMP ++#undef HAVE_STRNCASECMP ++#undef HAVE_SSCANF ++#undef HAVE_SNPRINTF ++#undef HAVE_VSNPRINTF ++#undef HAVE_ICONV ++#undef HAVE_SIGACTION ++#undef HAVE_SA_SIGACTION ++#undef HAVE_SETJMP ++#undef HAVE_NANOSLEEP ++#undef HAVE_CLOCK_GETTIME ++#undef HAVE_GETPAGESIZE ++#undef HAVE_MPROTECT ++#undef HAVE_SEM_TIMEDWAIT ++ ++#else ++/* We may need some replacement for stdarg.h here */ ++#include ++#endif /* HAVE_LIBC */ ++ ++/* Allow disabling of core subsystems */ ++#undef SDL_AUDIO_DISABLED ++#undef SDL_CDROM_DISABLED ++#undef SDL_CPUINFO_DISABLED ++#undef SDL_EVENTS_DISABLED ++#undef SDL_FILE_DISABLED ++#undef SDL_JOYSTICK_DISABLED ++#undef SDL_LOADSO_DISABLED ++#undef SDL_THREADS_DISABLED ++#undef SDL_TIMERS_DISABLED ++#undef SDL_VIDEO_DISABLED ++ ++/* Enable various audio drivers */ ++#undef SDL_AUDIO_DRIVER_ALSA ++#undef SDL_AUDIO_DRIVER_ALSA_DYNAMIC ++#undef SDL_AUDIO_DRIVER_ARTS ++#undef SDL_AUDIO_DRIVER_ARTS_DYNAMIC ++#undef SDL_AUDIO_DRIVER_BAUDIO ++#undef SDL_AUDIO_DRIVER_BSD ++#undef SDL_AUDIO_DRIVER_COREAUDIO ++#undef SDL_AUDIO_DRIVER_DART ++#undef SDL_AUDIO_DRIVER_DC ++#undef SDL_AUDIO_DRIVER_DISK ++#undef SDL_AUDIO_DRIVER_DUMMY ++#undef SDL_AUDIO_DRIVER_DMEDIA ++#undef SDL_AUDIO_DRIVER_DSOUND ++#undef SDL_AUDIO_DRIVER_PULSE ++#undef SDL_AUDIO_DRIVER_PULSE_DYNAMIC ++#undef SDL_AUDIO_DRIVER_ESD ++#undef SDL_AUDIO_DRIVER_ESD_DYNAMIC ++#undef SDL_AUDIO_DRIVER_MINT ++#undef SDL_AUDIO_DRIVER_MMEAUDIO ++#undef SDL_AUDIO_DRIVER_NAS ++#undef SDL_AUDIO_DRIVER_NAS_DYNAMIC ++#undef SDL_AUDIO_DRIVER_OSS ++#undef SDL_AUDIO_DRIVER_OSS_SOUNDCARD_H ++#undef SDL_AUDIO_DRIVER_PAUD ++#undef SDL_AUDIO_DRIVER_QNXNTO ++#undef SDL_AUDIO_DRIVER_REDOX ++#undef SDL_AUDIO_DRIVER_SNDMGR ++#undef SDL_AUDIO_DRIVER_SUNAUDIO ++#undef SDL_AUDIO_DRIVER_WAVEOUT ++ ++/* Enable various cdrom drivers */ ++#undef SDL_CDROM_AIX ++#undef SDL_CDROM_BEOS ++#undef SDL_CDROM_BSDI ++#undef SDL_CDROM_DC ++#undef SDL_CDROM_DUMMY ++#undef SDL_CDROM_FREEBSD ++#undef SDL_CDROM_LINUX ++#undef SDL_CDROM_MACOS ++#undef SDL_CDROM_MACOSX ++#undef SDL_CDROM_MINT ++#undef SDL_CDROM_OPENBSD ++#undef SDL_CDROM_OS2 ++#undef SDL_CDROM_OSF ++#undef SDL_CDROM_QNX ++#undef SDL_CDROM_WIN32 ++ ++/* Enable various input drivers */ ++#undef SDL_INPUT_LINUXEV ++#undef SDL_INPUT_TSLIB ++#undef SDL_JOYSTICK_BEOS ++#undef SDL_JOYSTICK_DC ++#undef SDL_JOYSTICK_DUMMY ++#undef SDL_JOYSTICK_IOKIT ++#undef SDL_JOYSTICK_LINUX ++#undef SDL_JOYSTICK_MACOS ++#undef SDL_JOYSTICK_MINT ++#undef SDL_JOYSTICK_OS2 ++#undef SDL_JOYSTICK_RISCOS ++#undef SDL_JOYSTICK_WINMM ++#undef SDL_JOYSTICK_USBHID ++#undef SDL_JOYSTICK_USBHID_MACHINE_JOYSTICK_H ++ ++/* Enable various shared object loading systems */ ++#undef SDL_LOADSO_BEOS ++#undef SDL_LOADSO_DLCOMPAT ++#undef SDL_LOADSO_DLOPEN ++#undef SDL_LOADSO_DUMMY ++#undef SDL_LOADSO_LDG ++#undef SDL_LOADSO_MACOS ++#undef SDL_LOADSO_OS2 ++#undef SDL_LOADSO_WIN32 ++ ++/* Enable various threading systems */ ++#undef SDL_THREAD_BEOS ++#undef SDL_THREAD_DC ++#undef SDL_THREAD_OS2 ++#undef SDL_THREAD_PTH ++#undef SDL_THREAD_PTHREAD ++#undef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX ++#undef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP ++#undef SDL_THREAD_SPROC ++#undef SDL_THREAD_WIN32 ++ ++/* Enable various timer systems */ ++#undef SDL_TIMER_BEOS ++#undef SDL_TIMER_DC ++#undef SDL_TIMER_DUMMY ++#undef SDL_TIMER_MACOS ++#undef SDL_TIMER_MINT ++#undef SDL_TIMER_OS2 ++#undef SDL_TIMER_RISCOS ++#undef SDL_TIMER_UNIX ++#undef SDL_TIMER_WIN32 ++#undef SDL_TIMER_WINCE ++ ++/* Enable various video drivers */ ++#undef SDL_VIDEO_DRIVER_AALIB ++#undef SDL_VIDEO_DRIVER_BWINDOW ++#undef SDL_VIDEO_DRIVER_CACA ++#undef SDL_VIDEO_DRIVER_DC ++#undef SDL_VIDEO_DRIVER_DDRAW ++#undef SDL_VIDEO_DRIVER_DGA ++#undef SDL_VIDEO_DRIVER_DIRECTFB ++#undef SDL_VIDEO_DRIVER_DRAWSPROCKET ++#undef SDL_VIDEO_DRIVER_DUMMY ++#undef SDL_VIDEO_DRIVER_FBCON ++#undef SDL_VIDEO_DRIVER_GAPI ++#undef SDL_VIDEO_DRIVER_GEM ++#undef SDL_VIDEO_DRIVER_GGI ++#undef SDL_VIDEO_DRIVER_IPOD ++#undef SDL_VIDEO_DRIVER_NANOX ++#undef SDL_VIDEO_DRIVER_OS2FS ++#undef SDL_VIDEO_DRIVER_PHOTON ++#undef SDL_VIDEO_DRIVER_PICOGUI ++#undef SDL_VIDEO_DRIVER_PS2GS ++#undef SDL_VIDEO_DRIVER_PS3 ++#undef SDL_VIDEO_DRIVER_QTOPIA ++#undef SDL_VIDEO_DRIVER_QUARTZ ++#undef SDL_VIDEO_DRIVER_RISCOS ++#undef SDL_VIDEO_DRIVER_SVGALIB ++#undef SDL_VIDEO_DRIVER_TOOLBOX ++#undef SDL_VIDEO_DRIVER_VGL ++#undef SDL_VIDEO_DRIVER_WINDIB ++#undef SDL_VIDEO_DRIVER_WSCONS ++#undef SDL_VIDEO_DRIVER_X11 ++#undef SDL_VIDEO_DRIVER_X11_DGAMOUSE ++#undef SDL_VIDEO_DRIVER_X11_DYNAMIC ++#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT ++#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR ++#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XRENDER ++#undef SDL_VIDEO_DRIVER_X11_VIDMODE ++#undef SDL_VIDEO_DRIVER_X11_XINERAMA ++#undef SDL_VIDEO_DRIVER_X11_XME ++#undef SDL_VIDEO_DRIVER_X11_XRANDR ++#undef SDL_VIDEO_DRIVER_X11_XV ++#undef SDL_VIDEO_DRIVER_XBIOS ++ ++/* Enable OpenGL support */ ++#undef SDL_VIDEO_OPENGL ++#undef SDL_VIDEO_OPENGL_GLX ++#undef SDL_VIDEO_OPENGL_WGL ++#undef SDL_VIDEO_OPENGL_OSMESA ++#undef SDL_VIDEO_OPENGL_OSMESA_DYNAMIC ++ ++/* Disable screensaver */ ++#undef SDL_VIDEO_DISABLE_SCREENSAVER ++ ++/* Enable assembly routines */ ++#undef SDL_ASSEMBLY_ROUTINES ++#undef SDL_HERMES_BLITTERS ++#undef SDL_ALTIVEC_BLITTERS ++ ++#endif /* _SDL_config_h */ +diff -ruwN source/src/audio/redox/SDL_redoxaudio.c source-new/src/audio/redox/SDL_redoxaudio.c +--- source/src/audio/redox/SDL_redoxaudio.c 1969-12-31 17:00:00.000000000 -0700 ++++ source-new/src/audio/redox/SDL_redoxaudio.c 2018-12-29 16:18:56.462459967 -0700 +@@ -0,0 +1,172 @@ ++/* ++ SDL - Simple DirectMedia Layer ++ Copyright (C) 1997-2012 Sam Lantinga ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free Software ++ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++ Sam Lantinga ++ slouken@libsdl.org ++ ++ This file written by Ryan C. Gordon (icculus@icculus.org) ++*/ ++#include "SDL_config.h" ++ ++/* Output raw audio data to a file. */ ++ ++#include ++#include ++#include ++ ++#include "SDL_timer.h" ++#include "SDL_audio.h" ++#include "../SDL_audiomem.h" ++#include "../SDL_audio_c.h" ++#include "../SDL_audiodev_c.h" ++#include "SDL_redoxaudio.h" ++ ++/* The tag name used by REDOX audio */ ++#define REDOXAUD_DRIVER_NAME "redox" ++ ++/* Audio driver functions */ ++static int REDOXAUD_OpenAudio(_THIS, SDL_AudioSpec *spec); ++static void REDOXAUD_WaitAudio(_THIS); ++static void REDOXAUD_PlayAudio(_THIS); ++static Uint8 *REDOXAUD_GetAudioBuf(_THIS); ++static void REDOXAUD_CloseAudio(_THIS); ++ ++#define DEBUG_AUDIO 1 ++ ++/* Audio driver bootstrap functions */ ++static int REDOXAUD_Available(void) ++{ ++ return(1); ++} ++ ++static void REDOXAUD_DeleteDevice(SDL_AudioDevice *device) ++{ ++ SDL_free(device->hidden); ++ SDL_free(device); ++} ++ ++static SDL_AudioDevice *REDOXAUD_CreateDevice(int devindex) ++{ ++ SDL_AudioDevice *this; ++ const char *envr; ++ ++ /* Initialize all variables that we clean on shutdown */ ++ this = (SDL_AudioDevice *)SDL_malloc(sizeof(SDL_AudioDevice)); ++ if ( this ) { ++ SDL_memset(this, 0, (sizeof *this)); ++ this->hidden = (struct SDL_PrivateAudioData *) ++ SDL_malloc((sizeof *this->hidden)); ++ } ++ if ( (this == NULL) || (this->hidden == NULL) ) { ++ SDL_OutOfMemory(); ++ if ( this ) { ++ SDL_free(this); ++ } ++ return(0); ++ } ++ SDL_memset(this->hidden, 0, (sizeof *this->hidden)); ++ ++ this->hidden->output = -1; ++ this->hidden->write_delay = 150; ++ ++ /* Set the function pointers */ ++ this->OpenAudio = REDOXAUD_OpenAudio; ++ this->WaitAudio = REDOXAUD_WaitAudio; ++ this->PlayAudio = REDOXAUD_PlayAudio; ++ this->GetAudioBuf = REDOXAUD_GetAudioBuf; ++ this->CloseAudio = REDOXAUD_CloseAudio; ++ ++ this->free = REDOXAUD_DeleteDevice; ++ ++ return this; ++} ++ ++AudioBootStrap REDOXAUD_bootstrap = { ++ REDOXAUD_DRIVER_NAME, "Redox audio", ++ REDOXAUD_Available, REDOXAUD_CreateDevice ++}; ++ ++/* This function waits until it is possible to write a full sound buffer */ ++static void REDOXAUD_WaitAudio(_THIS) ++{ ++ fprintf(stderr, "waitaudio\n"); ++ SDL_Delay(this->hidden->write_delay); ++} ++ ++static void REDOXAUD_PlayAudio(_THIS) ++{ ++ fprintf(stderr, "playaudio\n"); ++ ++ int written; ++ ++ /* Write the audio data */ ++ written = write(this->hidden->output, ++ this->hidden->mixbuf, ++ this->hidden->mixlen); ++ ++ /* If we couldn't write, assume fatal error for now */ ++ if ( (Uint32)written != this->hidden->mixlen ) { ++ this->enabled = 0; ++ } ++#ifdef DEBUG_AUDIO ++ fprintf(stderr, "Wrote %d bytes of audio data\n", written); ++#endif ++} ++ ++static Uint8 *REDOXAUD_GetAudioBuf(_THIS) ++{ ++ return(this->hidden->mixbuf); ++} ++ ++static void REDOXAUD_CloseAudio(_THIS) ++{ ++ if ( this->hidden->mixbuf != NULL ) { ++ SDL_FreeAudioMem(this->hidden->mixbuf); ++ this->hidden->mixbuf = NULL; ++ } ++ if ( this->hidden->output >= 0 ) { ++ close(this->hidden->output); ++ this->hidden->output = -1; ++ } ++} ++ ++static int REDOXAUD_OpenAudio(_THIS, SDL_AudioSpec *spec) ++{ ++ fprintf(stderr, "WARNING: You are using the SDL redox audio driver!\n"); ++ ++ /* Open the audio device */ ++ this->hidden->output = open("audio:", O_WRONLY); ++ if ( this->hidden->output < 0 ) { ++ perror("failed to open audio:"); ++ return(-1); ++ } ++ ++ /* Allocate mixing buffer */ ++ this->hidden->mixlen = spec->size; ++ this->hidden->mixbuf = (Uint8 *) SDL_AllocAudioMem(this->hidden->mixlen); ++ if ( this->hidden->mixbuf == NULL ) { ++ perror("failed to allocate audio memory"); ++ return(-1); ++ } ++ SDL_memset(this->hidden->mixbuf, spec->silence, spec->size); ++ ++ fprintf(stderr, "openaudio success\n"); ++ ++ /* We're ready to rock and roll. :-) */ ++ return(0); ++} +diff -ruwN source/src/audio/redox/SDL_redoxaudio.h source-new/src/audio/redox/SDL_redoxaudio.h +--- source/src/audio/redox/SDL_redoxaudio.h 1969-12-31 17:00:00.000000000 -0700 ++++ source-new/src/audio/redox/SDL_redoxaudio.h 2018-12-29 16:14:13.727841810 -0700 +@@ -0,0 +1,41 @@ ++/* ++ SDL - Simple DirectMedia Layer ++ Copyright (C) 1997-2012 Sam Lantinga ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free Software ++ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++ Sam Lantinga ++ slouken@libsdl.org ++*/ ++#include "SDL_config.h" ++ ++#ifndef _SDL_redoxaudio_h ++#define _SDL_redoxaudio_h ++ ++#include "SDL_rwops.h" ++#include "../SDL_sysaudio.h" ++ ++/* Hidden "this" pointer for the video functions */ ++#define _THIS SDL_AudioDevice *this ++ ++struct SDL_PrivateAudioData { ++ /* The file descriptor for the audio device */ ++ int output; ++ Uint8 *mixbuf; ++ Uint32 mixlen; ++ Uint32 write_delay; ++}; ++ ++#endif /* _SDL_redoxaudio_h */ +diff -ruwN source/src/audio/SDL_audio.c source-new/src/audio/SDL_audio.c +--- source/src/audio/SDL_audio.c 2012-01-18 23:30:06.000000000 -0700 ++++ source-new/src/audio/SDL_audio.c 2018-12-29 15:57:00.298520310 -0700 +@@ -36,6 +36,9 @@ + + /* Available audio drivers */ + static AudioBootStrap *bootstrap[] = { ++#if SDL_AUDIO_DRIVER_REDOX ++ &REDOXAUD_bootstrap, ++#endif + #if SDL_AUDIO_DRIVER_PULSE + &PULSE_bootstrap, + #endif +@@ -700,4 +703,3 @@ + current_audio->SetCaption(current_audio, caption); + } + } +- +diff -ruwN source/src/audio/SDL_sysaudio.h source-new/src/audio/SDL_sysaudio.h +--- source/src/audio/SDL_sysaudio.h 2012-01-18 23:30:06.000000000 -0700 ++++ source-new/src/audio/SDL_sysaudio.h 2018-12-29 15:57:00.298520310 -0700 +@@ -102,6 +102,9 @@ + SDL_AudioDevice *(*create)(int devindex); + } AudioBootStrap; + ++#if SDL_AUDIO_DRIVER_REDOX ++extern AudioBootStrap REDOXAUD_bootstrap; ++#endif + #if SDL_AUDIO_DRIVER_BSD + extern AudioBootStrap BSD_AUDIO_bootstrap; + #endif +diff -ruwN source/src/thread/pthread/SDL_systhread.c source-new/src/thread/pthread/SDL_systhread.c +--- source/src/thread/pthread/SDL_systhread.c 2012-01-18 23:30:06.000000000 -0700 ++++ source-new/src/thread/pthread/SDL_systhread.c 2018-12-29 17:18:17.810171502 -0700 +@@ -86,7 +86,11 @@ + for ( i=0; sig_list[i]; ++i ) { + sigaddset(&mask, sig_list[i]); + } ++ #if defined(__redox__) ++ sigprocmask(SIG_BLOCK, &mask, 0); ++ #else + pthread_sigmask(SIG_BLOCK, &mask, 0); ++ #endif + + #ifdef PTHREAD_CANCEL_ASYNCHRONOUS + /* Allow ourselves to be asynchronously cancelled */ +diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orbital/SDL_orbitalevents.c +--- source/src/video/orbital/SDL_orbitalevents.c 1969-12-31 17:00:00.000000000 -0700 ++++ source-new/src/video/orbital/SDL_orbitalevents.c 2018-12-29 15:57:00.298520310 -0700 @@ -0,0 +1,197 @@ +/* + SDL - Simple DirectMedia Layer @@ -267,9 +905,9 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalevents.c source/src/vid +} + +/* end of SDL_orbitalevents.c ... */ -diff -rupNw source-original/src/video/orbital/SDL_orbitalevents_c.h source/src/video/orbital/SDL_orbitalevents_c.h ---- source-original/src/video/orbital/SDL_orbitalevents_c.h 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalevents_c.h 2018-05-01 17:31:52.770229654 +0200 +diff -ruwN source/src/video/orbital/SDL_orbitalevents_c.h source-new/src/video/orbital/SDL_orbitalevents_c.h +--- source/src/video/orbital/SDL_orbitalevents_c.h 1969-12-31 17:00:00.000000000 -0700 ++++ source-new/src/video/orbital/SDL_orbitalevents_c.h 2018-12-29 15:57:00.302520335 -0700 @@ -0,0 +1,32 @@ +/* + SDL - Simple DirectMedia Layer @@ -303,9 +941,9 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalevents_c.h source/src/v +extern void ORBITAL_PumpEvents(_THIS); + +/* end of SDL_orbitalevents_c.h ... */ -diff -rupNw source-original/src/video/orbital/SDL_orbitalmouse.c source/src/video/orbital/SDL_orbitalmouse.c ---- source-original/src/video/orbital/SDL_orbitalmouse.c 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalmouse.c 2018-05-01 17:31:52.770229654 +0200 +diff -ruwN source/src/video/orbital/SDL_orbitalmouse.c source-new/src/video/orbital/SDL_orbitalmouse.c +--- source/src/video/orbital/SDL_orbitalmouse.c 1969-12-31 17:00:00.000000000 -0700 ++++ source-new/src/video/orbital/SDL_orbitalmouse.c 2018-12-29 15:57:00.302520335 -0700 @@ -0,0 +1,33 @@ +/* + SDL - Simple DirectMedia Layer @@ -340,9 +978,9 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalmouse.c source/src/vide +struct WMcursor { + int unused; +}; -diff -rupNw source-original/src/video/orbital/SDL_orbitalmouse_c.h source/src/video/orbital/SDL_orbitalmouse_c.h ---- source-original/src/video/orbital/SDL_orbitalmouse_c.h 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalmouse_c.h 2018-05-01 17:31:52.770229654 +0200 +diff -ruwN source/src/video/orbital/SDL_orbitalmouse_c.h source-new/src/video/orbital/SDL_orbitalmouse_c.h +--- source/src/video/orbital/SDL_orbitalmouse_c.h 1969-12-31 17:00:00.000000000 -0700 ++++ source-new/src/video/orbital/SDL_orbitalmouse_c.h 2018-12-29 15:57:00.302520335 -0700 @@ -0,0 +1,26 @@ +/* + SDL - Simple DirectMedia Layer @@ -370,9 +1008,9 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalmouse_c.h source/src/vi +#include "SDL_orbitalvideo.h" + +/* Functions to be exported */ -diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.c source/src/video/orbital/SDL_orbitalvideo.c ---- source-original/src/video/orbital/SDL_orbitalvideo.c 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalvideo.c 2018-05-01 17:32:53.000320923 +0200 +diff -ruwN source/src/video/orbital/SDL_orbitalvideo.c source-new/src/video/orbital/SDL_orbitalvideo.c +--- source/src/video/orbital/SDL_orbitalvideo.c 1969-12-31 17:00:00.000000000 -0700 ++++ source-new/src/video/orbital/SDL_orbitalvideo.c 2018-12-29 15:57:00.302520335 -0700 @@ -0,0 +1,252 @@ +/* + SDL - Simple DirectMedia Layer @@ -626,9 +1264,9 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.c source/src/vide + this->screen->pixels = NULL; + } +} -diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.h source/src/video/orbital/SDL_orbitalvideo.h ---- source-original/src/video/orbital/SDL_orbitalvideo.h 1970-01-01 01:00:00.000000000 +0100 -+++ source/src/video/orbital/SDL_orbitalvideo.h 2018-05-01 17:31:52.770229654 +0200 +diff -ruwN source/src/video/orbital/SDL_orbitalvideo.h source-new/src/video/orbital/SDL_orbitalvideo.h +--- source/src/video/orbital/SDL_orbitalvideo.h 1969-12-31 17:00:00.000000000 -0700 ++++ source-new/src/video/orbital/SDL_orbitalvideo.h 2018-12-29 15:57:00.302520335 -0700 @@ -0,0 +1,39 @@ +/* + SDL - Simple DirectMedia Layer @@ -669,9 +1307,9 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.h source/src/vide +}; + +#endif /* _SDL_orbitalvideo_h */ -diff -rupNw source-original/src/video/SDL_gamma.c source/src/video/SDL_gamma.c ---- source-original/src/video/SDL_gamma.c 2012-01-19 07:30:06.000000000 +0100 -+++ source/src/video/SDL_gamma.c 2018-05-01 17:31:52.770229654 +0200 +diff -ruwN source/src/video/SDL_gamma.c source-new/src/video/SDL_gamma.c +--- source/src/video/SDL_gamma.c 2012-01-18 23:30:06.000000000 -0700 ++++ source-new/src/video/SDL_gamma.c 2018-12-29 15:57:00.302520335 -0700 @@ -35,6 +35,9 @@ #define log(x) __ieee754_log(x) #endif @@ -682,10 +1320,10 @@ diff -rupNw source-original/src/video/SDL_gamma.c source/src/video/SDL_gamma.c #include "SDL_sysvideo.h" -diff -rupNw source-original/src/video/SDL_sysvideo.h source/src/video/SDL_sysvideo.h ---- source-original/src/video/SDL_sysvideo.h 2012-01-19 07:30:06.000000000 +0100 -+++ source/src/video/SDL_sysvideo.h 2018-05-01 17:31:52.770229654 +0200 -@@ -410,6 +410,9 @@ extern VideoBootStrap AALIB_bootstrap; +diff -ruwN source/src/video/SDL_sysvideo.h source-new/src/video/SDL_sysvideo.h +--- source/src/video/SDL_sysvideo.h 2012-01-18 23:30:06.000000000 -0700 ++++ source-new/src/video/SDL_sysvideo.h 2018-12-29 15:57:00.302520335 -0700 +@@ -410,6 +410,9 @@ #if SDL_VIDEO_DRIVER_CACA extern VideoBootStrap CACA_bootstrap; #endif @@ -695,10 +1333,10 @@ diff -rupNw source-original/src/video/SDL_sysvideo.h source/src/video/SDL_sysvid #if SDL_VIDEO_DRIVER_DUMMY extern VideoBootStrap DUMMY_bootstrap; #endif -diff -rupNw source-original/src/video/SDL_video.c source/src/video/SDL_video.c ---- source-original/src/video/SDL_video.c 2012-01-19 07:30:06.000000000 +0100 -+++ source/src/video/SDL_video.c 2018-05-01 17:31:52.774229792 +0200 -@@ -126,6 +126,9 @@ static VideoBootStrap *bootstrap[] = { +diff -ruwN source/src/video/SDL_video.c source-new/src/video/SDL_video.c +--- source/src/video/SDL_video.c 2012-01-18 23:30:06.000000000 -0700 ++++ source-new/src/video/SDL_video.c 2018-12-29 15:57:00.302520335 -0700 +@@ -126,6 +126,9 @@ #if SDL_VIDEO_DRIVER_CACA &CACA_bootstrap, #endif @@ -708,7 +1346,7 @@ diff -rupNw source-original/src/video/SDL_video.c source/src/video/SDL_video.c #if SDL_VIDEO_DRIVER_DUMMY &DUMMY_bootstrap, #endif -@@ -726,7 +729,8 @@ SDL_Surface * SDL_SetVideoMode (int widt +@@ -726,7 +729,8 @@ video->offset_y = 0; mode->offset = 0; SDL_SetClipRect(mode, NULL); From 12a3ed99752250cf6b628e8f858832300ed45daf Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 29 Dec 2018 19:19:41 -0700 Subject: [PATCH 0533/3180] Update redox audio patch --- recipes/sdl/redox.patch | 343 ++-------------------------------------- 1 file changed, 12 insertions(+), 331 deletions(-) diff --git a/recipes/sdl/redox.patch b/recipes/sdl/redox.patch index 39da12a0..89bbeebe 100644 --- a/recipes/sdl/redox.patch +++ b/recipes/sdl/redox.patch @@ -101,6 +101,7 @@ diff -ruwN source/configure.in source-new/configure.in esac fi # Set up files for the thread library +Binary files source/.git/index and source-new/.git/index differ diff -ruwN source/include/SDL_config.h.in source-new/include/SDL_config.h.in --- source/include/SDL_config.h.in 2012-01-18 23:30:05.000000000 -0700 +++ source-new/include/SDL_config.h.in 2018-12-29 15:57:00.298520310 -0700 @@ -120,327 +121,10 @@ diff -ruwN source/include/SDL_config.h.in source-new/include/SDL_config.h.in #undef SDL_VIDEO_DRIVER_OS2FS #undef SDL_VIDEO_DRIVER_PHOTON #undef SDL_VIDEO_DRIVER_PICOGUI -diff -ruwN source/include/SDL_config.h.in.orig source-new/include/SDL_config.h.in.orig ---- source/include/SDL_config.h.in.orig 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/include/SDL_config.h.in.orig 2018-12-29 15:57:00.298520310 -0700 -@@ -0,0 +1,313 @@ -+/* -+ SDL - Simple DirectMedia Layer -+ Copyright (C) 1997-2012 Sam Lantinga -+ -+ This library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ This library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with this library; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ -+ Sam Lantinga -+ slouken@libsdl.org -+*/ -+ -+#ifndef _SDL_config_h -+#define _SDL_config_h -+ -+/* This is a set of defines to configure the SDL features */ -+ -+/* General platform specific identifiers */ -+#include "SDL_platform.h" -+ -+/* Make sure that this isn't included by Visual C++ */ -+#ifdef _MSC_VER -+#error You should copy include/SDL_config.h.default to include/SDL_config.h -+#endif -+ -+/* C language features */ -+#undef const -+#undef inline -+#undef volatile -+ -+/* C datatypes */ -+#undef size_t -+#undef int8_t -+#undef uint8_t -+#undef int16_t -+#undef uint16_t -+#undef int32_t -+#undef uint32_t -+#undef int64_t -+#undef uint64_t -+#undef uintptr_t -+#undef SDL_HAS_64BIT_TYPE -+ -+/* Endianness */ -+#undef SDL_BYTEORDER -+ -+/* Comment this if you want to build without any C library requirements */ -+#undef HAVE_LIBC -+#if HAVE_LIBC -+ -+/* Useful headers */ -+#undef HAVE_ALLOCA_H -+#undef HAVE_SYS_TYPES_H -+#undef HAVE_STDIO_H -+#undef STDC_HEADERS -+#undef HAVE_STDLIB_H -+#undef HAVE_STDARG_H -+#undef HAVE_MALLOC_H -+#undef HAVE_MEMORY_H -+#undef HAVE_STRING_H -+#undef HAVE_STRINGS_H -+#undef HAVE_INTTYPES_H -+#undef HAVE_STDINT_H -+#undef HAVE_CTYPE_H -+#undef HAVE_MATH_H -+#undef HAVE_ICONV_H -+#undef HAVE_SIGNAL_H -+#undef HAVE_ALTIVEC_H -+ -+/* C library functions */ -+#undef HAVE_MALLOC -+#undef HAVE_CALLOC -+#undef HAVE_REALLOC -+#undef HAVE_FREE -+#undef HAVE_ALLOCA -+#ifndef _WIN32 /* Don't use C runtime versions of these on Windows */ -+#undef HAVE_GETENV -+#undef HAVE_PUTENV -+#undef HAVE_UNSETENV -+#endif -+#undef HAVE_QSORT -+#undef HAVE_ABS -+#undef HAVE_BCOPY -+#undef HAVE_MEMSET -+#undef HAVE_MEMCPY -+#undef HAVE_MEMMOVE -+#undef HAVE_MEMCMP -+#undef HAVE_STRLEN -+#undef HAVE_STRLCPY -+#undef HAVE_STRLCAT -+#undef HAVE_STRDUP -+#undef HAVE__STRREV -+#undef HAVE__STRUPR -+#undef HAVE__STRLWR -+#undef HAVE_INDEX -+#undef HAVE_RINDEX -+#undef HAVE_STRCHR -+#undef HAVE_STRRCHR -+#undef HAVE_STRSTR -+#undef HAVE_ITOA -+#undef HAVE__LTOA -+#undef HAVE__UITOA -+#undef HAVE__ULTOA -+#undef HAVE_STRTOL -+#undef HAVE_STRTOUL -+#undef HAVE__I64TOA -+#undef HAVE__UI64TOA -+#undef HAVE_STRTOLL -+#undef HAVE_STRTOULL -+#undef HAVE_STRTOD -+#undef HAVE_ATOI -+#undef HAVE_ATOF -+#undef HAVE_STRCMP -+#undef HAVE_STRNCMP -+#undef HAVE__STRICMP -+#undef HAVE_STRCASECMP -+#undef HAVE__STRNICMP -+#undef HAVE_STRNCASECMP -+#undef HAVE_SSCANF -+#undef HAVE_SNPRINTF -+#undef HAVE_VSNPRINTF -+#undef HAVE_ICONV -+#undef HAVE_SIGACTION -+#undef HAVE_SA_SIGACTION -+#undef HAVE_SETJMP -+#undef HAVE_NANOSLEEP -+#undef HAVE_CLOCK_GETTIME -+#undef HAVE_GETPAGESIZE -+#undef HAVE_MPROTECT -+#undef HAVE_SEM_TIMEDWAIT -+ -+#else -+/* We may need some replacement for stdarg.h here */ -+#include -+#endif /* HAVE_LIBC */ -+ -+/* Allow disabling of core subsystems */ -+#undef SDL_AUDIO_DISABLED -+#undef SDL_CDROM_DISABLED -+#undef SDL_CPUINFO_DISABLED -+#undef SDL_EVENTS_DISABLED -+#undef SDL_FILE_DISABLED -+#undef SDL_JOYSTICK_DISABLED -+#undef SDL_LOADSO_DISABLED -+#undef SDL_THREADS_DISABLED -+#undef SDL_TIMERS_DISABLED -+#undef SDL_VIDEO_DISABLED -+ -+/* Enable various audio drivers */ -+#undef SDL_AUDIO_DRIVER_ALSA -+#undef SDL_AUDIO_DRIVER_ALSA_DYNAMIC -+#undef SDL_AUDIO_DRIVER_ARTS -+#undef SDL_AUDIO_DRIVER_ARTS_DYNAMIC -+#undef SDL_AUDIO_DRIVER_BAUDIO -+#undef SDL_AUDIO_DRIVER_BSD -+#undef SDL_AUDIO_DRIVER_COREAUDIO -+#undef SDL_AUDIO_DRIVER_DART -+#undef SDL_AUDIO_DRIVER_DC -+#undef SDL_AUDIO_DRIVER_DISK -+#undef SDL_AUDIO_DRIVER_DUMMY -+#undef SDL_AUDIO_DRIVER_DMEDIA -+#undef SDL_AUDIO_DRIVER_DSOUND -+#undef SDL_AUDIO_DRIVER_PULSE -+#undef SDL_AUDIO_DRIVER_PULSE_DYNAMIC -+#undef SDL_AUDIO_DRIVER_ESD -+#undef SDL_AUDIO_DRIVER_ESD_DYNAMIC -+#undef SDL_AUDIO_DRIVER_MINT -+#undef SDL_AUDIO_DRIVER_MMEAUDIO -+#undef SDL_AUDIO_DRIVER_NAS -+#undef SDL_AUDIO_DRIVER_NAS_DYNAMIC -+#undef SDL_AUDIO_DRIVER_OSS -+#undef SDL_AUDIO_DRIVER_OSS_SOUNDCARD_H -+#undef SDL_AUDIO_DRIVER_PAUD -+#undef SDL_AUDIO_DRIVER_QNXNTO -+#undef SDL_AUDIO_DRIVER_REDOX -+#undef SDL_AUDIO_DRIVER_SNDMGR -+#undef SDL_AUDIO_DRIVER_SUNAUDIO -+#undef SDL_AUDIO_DRIVER_WAVEOUT -+ -+/* Enable various cdrom drivers */ -+#undef SDL_CDROM_AIX -+#undef SDL_CDROM_BEOS -+#undef SDL_CDROM_BSDI -+#undef SDL_CDROM_DC -+#undef SDL_CDROM_DUMMY -+#undef SDL_CDROM_FREEBSD -+#undef SDL_CDROM_LINUX -+#undef SDL_CDROM_MACOS -+#undef SDL_CDROM_MACOSX -+#undef SDL_CDROM_MINT -+#undef SDL_CDROM_OPENBSD -+#undef SDL_CDROM_OS2 -+#undef SDL_CDROM_OSF -+#undef SDL_CDROM_QNX -+#undef SDL_CDROM_WIN32 -+ -+/* Enable various input drivers */ -+#undef SDL_INPUT_LINUXEV -+#undef SDL_INPUT_TSLIB -+#undef SDL_JOYSTICK_BEOS -+#undef SDL_JOYSTICK_DC -+#undef SDL_JOYSTICK_DUMMY -+#undef SDL_JOYSTICK_IOKIT -+#undef SDL_JOYSTICK_LINUX -+#undef SDL_JOYSTICK_MACOS -+#undef SDL_JOYSTICK_MINT -+#undef SDL_JOYSTICK_OS2 -+#undef SDL_JOYSTICK_RISCOS -+#undef SDL_JOYSTICK_WINMM -+#undef SDL_JOYSTICK_USBHID -+#undef SDL_JOYSTICK_USBHID_MACHINE_JOYSTICK_H -+ -+/* Enable various shared object loading systems */ -+#undef SDL_LOADSO_BEOS -+#undef SDL_LOADSO_DLCOMPAT -+#undef SDL_LOADSO_DLOPEN -+#undef SDL_LOADSO_DUMMY -+#undef SDL_LOADSO_LDG -+#undef SDL_LOADSO_MACOS -+#undef SDL_LOADSO_OS2 -+#undef SDL_LOADSO_WIN32 -+ -+/* Enable various threading systems */ -+#undef SDL_THREAD_BEOS -+#undef SDL_THREAD_DC -+#undef SDL_THREAD_OS2 -+#undef SDL_THREAD_PTH -+#undef SDL_THREAD_PTHREAD -+#undef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX -+#undef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP -+#undef SDL_THREAD_SPROC -+#undef SDL_THREAD_WIN32 -+ -+/* Enable various timer systems */ -+#undef SDL_TIMER_BEOS -+#undef SDL_TIMER_DC -+#undef SDL_TIMER_DUMMY -+#undef SDL_TIMER_MACOS -+#undef SDL_TIMER_MINT -+#undef SDL_TIMER_OS2 -+#undef SDL_TIMER_RISCOS -+#undef SDL_TIMER_UNIX -+#undef SDL_TIMER_WIN32 -+#undef SDL_TIMER_WINCE -+ -+/* Enable various video drivers */ -+#undef SDL_VIDEO_DRIVER_AALIB -+#undef SDL_VIDEO_DRIVER_BWINDOW -+#undef SDL_VIDEO_DRIVER_CACA -+#undef SDL_VIDEO_DRIVER_DC -+#undef SDL_VIDEO_DRIVER_DDRAW -+#undef SDL_VIDEO_DRIVER_DGA -+#undef SDL_VIDEO_DRIVER_DIRECTFB -+#undef SDL_VIDEO_DRIVER_DRAWSPROCKET -+#undef SDL_VIDEO_DRIVER_DUMMY -+#undef SDL_VIDEO_DRIVER_FBCON -+#undef SDL_VIDEO_DRIVER_GAPI -+#undef SDL_VIDEO_DRIVER_GEM -+#undef SDL_VIDEO_DRIVER_GGI -+#undef SDL_VIDEO_DRIVER_IPOD -+#undef SDL_VIDEO_DRIVER_NANOX -+#undef SDL_VIDEO_DRIVER_OS2FS -+#undef SDL_VIDEO_DRIVER_PHOTON -+#undef SDL_VIDEO_DRIVER_PICOGUI -+#undef SDL_VIDEO_DRIVER_PS2GS -+#undef SDL_VIDEO_DRIVER_PS3 -+#undef SDL_VIDEO_DRIVER_QTOPIA -+#undef SDL_VIDEO_DRIVER_QUARTZ -+#undef SDL_VIDEO_DRIVER_RISCOS -+#undef SDL_VIDEO_DRIVER_SVGALIB -+#undef SDL_VIDEO_DRIVER_TOOLBOX -+#undef SDL_VIDEO_DRIVER_VGL -+#undef SDL_VIDEO_DRIVER_WINDIB -+#undef SDL_VIDEO_DRIVER_WSCONS -+#undef SDL_VIDEO_DRIVER_X11 -+#undef SDL_VIDEO_DRIVER_X11_DGAMOUSE -+#undef SDL_VIDEO_DRIVER_X11_DYNAMIC -+#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT -+#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR -+#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XRENDER -+#undef SDL_VIDEO_DRIVER_X11_VIDMODE -+#undef SDL_VIDEO_DRIVER_X11_XINERAMA -+#undef SDL_VIDEO_DRIVER_X11_XME -+#undef SDL_VIDEO_DRIVER_X11_XRANDR -+#undef SDL_VIDEO_DRIVER_X11_XV -+#undef SDL_VIDEO_DRIVER_XBIOS -+ -+/* Enable OpenGL support */ -+#undef SDL_VIDEO_OPENGL -+#undef SDL_VIDEO_OPENGL_GLX -+#undef SDL_VIDEO_OPENGL_WGL -+#undef SDL_VIDEO_OPENGL_OSMESA -+#undef SDL_VIDEO_OPENGL_OSMESA_DYNAMIC -+ -+/* Disable screensaver */ -+#undef SDL_VIDEO_DISABLE_SCREENSAVER -+ -+/* Enable assembly routines */ -+#undef SDL_ASSEMBLY_ROUTINES -+#undef SDL_HERMES_BLITTERS -+#undef SDL_ALTIVEC_BLITTERS -+ -+#endif /* _SDL_config_h */ diff -ruwN source/src/audio/redox/SDL_redoxaudio.c source-new/src/audio/redox/SDL_redoxaudio.c --- source/src/audio/redox/SDL_redoxaudio.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/audio/redox/SDL_redoxaudio.c 2018-12-29 16:18:56.462459967 -0700 -@@ -0,0 +1,172 @@ ++++ source-new/src/audio/redox/SDL_redoxaudio.c 2018-12-29 19:03:23.935759505 -0700 +@@ -0,0 +1,175 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -525,7 +209,6 @@ diff -ruwN source/src/audio/redox/SDL_redoxaudio.c source-new/src/audio/redox/SD + SDL_memset(this->hidden, 0, (sizeof *this->hidden)); + + this->hidden->output = -1; -+ this->hidden->write_delay = 150; + + /* Set the function pointers */ + this->OpenAudio = REDOXAUD_OpenAudio; @@ -548,7 +231,6 @@ diff -ruwN source/src/audio/redox/SDL_redoxaudio.c source-new/src/audio/redox/SD +static void REDOXAUD_WaitAudio(_THIS) +{ + fprintf(stderr, "waitaudio\n"); -+ SDL_Delay(this->hidden->write_delay); +} + +static void REDOXAUD_PlayAudio(_THIS) @@ -599,6 +281,11 @@ diff -ruwN source/src/audio/redox/SDL_redoxaudio.c source-new/src/audio/redox/SD + return(-1); + } + ++ spec->freq = 44100; ++ spec->format = AUDIO_S16; ++ spec->channels = 2; ++ SDL_CalculateAudioSpec(spec); ++ + /* Allocate mixing buffer */ + this->hidden->mixlen = spec->size; + this->hidden->mixbuf = (Uint8 *) SDL_AllocAudioMem(this->hidden->mixlen); @@ -615,8 +302,8 @@ diff -ruwN source/src/audio/redox/SDL_redoxaudio.c source-new/src/audio/redox/SD +} diff -ruwN source/src/audio/redox/SDL_redoxaudio.h source-new/src/audio/redox/SDL_redoxaudio.h --- source/src/audio/redox/SDL_redoxaudio.h 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/audio/redox/SDL_redoxaudio.h 2018-12-29 16:14:13.727841810 -0700 -@@ -0,0 +1,41 @@ ++++ source-new/src/audio/redox/SDL_redoxaudio.h 2018-12-29 18:56:18.062713776 -0700 +@@ -0,0 +1,40 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -654,13 +341,12 @@ diff -ruwN source/src/audio/redox/SDL_redoxaudio.h source-new/src/audio/redox/SD + int output; + Uint8 *mixbuf; + Uint32 mixlen; -+ Uint32 write_delay; +}; + +#endif /* _SDL_redoxaudio_h */ diff -ruwN source/src/audio/SDL_audio.c source-new/src/audio/SDL_audio.c --- source/src/audio/SDL_audio.c 2012-01-18 23:30:06.000000000 -0700 -+++ source-new/src/audio/SDL_audio.c 2018-12-29 15:57:00.298520310 -0700 ++++ source-new/src/audio/SDL_audio.c 2018-12-29 19:18:57.332057838 -0700 @@ -36,6 +36,9 @@ /* Available audio drivers */ @@ -671,11 +357,6 @@ diff -ruwN source/src/audio/SDL_audio.c source-new/src/audio/SDL_audio.c #if SDL_AUDIO_DRIVER_PULSE &PULSE_bootstrap, #endif -@@ -700,4 +703,3 @@ - current_audio->SetCaption(current_audio, caption); - } - } -- diff -ruwN source/src/audio/SDL_sysaudio.h source-new/src/audio/SDL_sysaudio.h --- source/src/audio/SDL_sysaudio.h 2012-01-18 23:30:06.000000000 -0700 +++ source-new/src/audio/SDL_sysaudio.h 2018-12-29 15:57:00.298520310 -0700 @@ -691,7 +372,7 @@ diff -ruwN source/src/audio/SDL_sysaudio.h source-new/src/audio/SDL_sysaudio.h #endif diff -ruwN source/src/thread/pthread/SDL_systhread.c source-new/src/thread/pthread/SDL_systhread.c --- source/src/thread/pthread/SDL_systhread.c 2012-01-18 23:30:06.000000000 -0700 -+++ source-new/src/thread/pthread/SDL_systhread.c 2018-12-29 17:18:17.810171502 -0700 ++++ source-new/src/thread/pthread/SDL_systhread.c 2018-12-29 19:17:46.203480243 -0700 @@ -86,7 +86,11 @@ for ( i=0; sig_list[i]; ++i ) { sigaddset(&mask, sig_list[i]); From df04faf02ae8b30f5eb22729f14809d2d607fd84 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 29 Dec 2018 20:00:06 -0700 Subject: [PATCH 0534/3180] Add opensfx recipe --- recipes/openttd-opensfx/recipe.sh | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 recipes/openttd-opensfx/recipe.sh diff --git a/recipes/openttd-opensfx/recipe.sh b/recipes/openttd-opensfx/recipe.sh new file mode 100644 index 00000000..ab6f5122 --- /dev/null +++ b/recipes/openttd-opensfx/recipe.sh @@ -0,0 +1,34 @@ +GIT=https://gitlab.redox-os.org/redox-os/openttd-opensfx.git + +function recipe_version { + echo "0.2.3" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + echo "skipping build" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + echo "skipping clean" + skip=1 +} + +function recipe_stage { + mkdir -pv "$1/share/games/openttd/baseset/opensfx" + cp -Rv ./* "$1/share/games/openttd/baseset/opensfx" + skip=1 +} + + From 5997efe1159bd5245f2f00c1dcb059d81c3ac0fa Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 30 Dec 2018 08:50:31 -0700 Subject: [PATCH 0535/3180] sdl: Remove debugging --- recipes/sdl/redox.patch | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/recipes/sdl/redox.patch b/recipes/sdl/redox.patch index 89bbeebe..c9213a7a 100644 --- a/recipes/sdl/redox.patch +++ b/recipes/sdl/redox.patch @@ -12,7 +12,7 @@ diff -ruwN source/build-scripts/config.sub source-new/build-scripts/config.sub | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ diff -ruwN source/configure.in source-new/configure.in --- source/configure.in 2012-01-18 23:30:05.000000000 -0700 -+++ source-new/configure.in 2018-12-29 17:27:34.957444409 -0700 ++++ source-new/configure.in 2018-12-30 08:48:46.611954605 -0700 @@ -685,6 +685,18 @@ fi } @@ -101,7 +101,6 @@ diff -ruwN source/configure.in source-new/configure.in esac fi # Set up files for the thread library -Binary files source/.git/index and source-new/.git/index differ diff -ruwN source/include/SDL_config.h.in source-new/include/SDL_config.h.in --- source/include/SDL_config.h.in 2012-01-18 23:30:05.000000000 -0700 +++ source-new/include/SDL_config.h.in 2018-12-29 15:57:00.298520310 -0700 @@ -123,8 +122,8 @@ diff -ruwN source/include/SDL_config.h.in source-new/include/SDL_config.h.in #undef SDL_VIDEO_DRIVER_PICOGUI diff -ruwN source/src/audio/redox/SDL_redoxaudio.c source-new/src/audio/redox/SDL_redoxaudio.c --- source/src/audio/redox/SDL_redoxaudio.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/audio/redox/SDL_redoxaudio.c 2018-12-29 19:03:23.935759505 -0700 -@@ -0,0 +1,175 @@ ++++ source-new/src/audio/redox/SDL_redoxaudio.c 2018-12-30 08:49:12.532354653 -0700 +@@ -0,0 +1,169 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -173,8 +172,6 @@ diff -ruwN source/src/audio/redox/SDL_redoxaudio.c source-new/src/audio/redox/SD +static Uint8 *REDOXAUD_GetAudioBuf(_THIS); +static void REDOXAUD_CloseAudio(_THIS); + -+#define DEBUG_AUDIO 1 -+ +/* Audio driver bootstrap functions */ +static int REDOXAUD_Available(void) +{ @@ -229,14 +226,10 @@ diff -ruwN source/src/audio/redox/SDL_redoxaudio.c source-new/src/audio/redox/SD + +/* This function waits until it is possible to write a full sound buffer */ +static void REDOXAUD_WaitAudio(_THIS) -+{ -+ fprintf(stderr, "waitaudio\n"); -+} ++{} + +static void REDOXAUD_PlayAudio(_THIS) +{ -+ fprintf(stderr, "playaudio\n"); -+ + int written; + + /* Write the audio data */ @@ -372,7 +365,7 @@ diff -ruwN source/src/audio/SDL_sysaudio.h source-new/src/audio/SDL_sysaudio.h #endif diff -ruwN source/src/thread/pthread/SDL_systhread.c source-new/src/thread/pthread/SDL_systhread.c --- source/src/thread/pthread/SDL_systhread.c 2012-01-18 23:30:06.000000000 -0700 -+++ source-new/src/thread/pthread/SDL_systhread.c 2018-12-29 19:17:46.203480243 -0700 ++++ source-new/src/thread/pthread/SDL_systhread.c 2018-12-30 07:30:42.840742321 -0700 @@ -86,7 +86,11 @@ for ( i=0; sig_list[i]; ++i ) { sigaddset(&mask, sig_list[i]); From ea74ee18698e307dba30452aeef82916685815ba Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 30 Dec 2018 10:46:13 -0700 Subject: [PATCH 0536/3180] ffmpeg: Include libraries and headers --- recipes/ffmpeg/recipe.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/ffmpeg/recipe.sh b/recipes/ffmpeg/recipe.sh index 28b266bc..c7299771 100644 --- a/recipes/ffmpeg/recipe.sh +++ b/recipes/ffmpeg/recipe.sh @@ -44,6 +44,5 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install - rm -rf "$1"/{include,lib,share} skip=1 } From 649e1c70f849f3979c61e894bcc454a3af2732e9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 30 Dec 2018 11:03:44 -0700 Subject: [PATCH 0537/3180] Add sdl-player --- recipes/sdl-player/recipe.sh | 37 ++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 recipes/sdl-player/recipe.sh diff --git a/recipes/sdl-player/recipe.sh b/recipes/sdl-player/recipe.sh new file mode 100644 index 00000000..5c145cd0 --- /dev/null +++ b/recipes/sdl-player/recipe.sh @@ -0,0 +1,37 @@ +GIT=https://gitlab.redox-os.org/redox-os/sdl-player.git +BUILD_DEPENDS=(ffmpeg liborbital sdl zlib) + +function recipe_version { + echo "1.0.0" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="$(realpath ../sysroot)" + export CPPFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib" + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + mkdir -pv "$dest/bin" + cp -v "player" "$dest/bin/sdl-player" + skip=1 +} From 864587540f501ff3f95a82864fafb87421823cf0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 30 Dec 2018 11:06:48 -0700 Subject: [PATCH 0538/3180] freeciv: Add openssl dependency --- recipes/freeciv/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/freeciv/recipe.sh b/recipes/freeciv/recipe.sh index e705d775..711b1406 100644 --- a/recipes/freeciv/recipe.sh +++ b/recipes/freeciv/recipe.sh @@ -1,6 +1,6 @@ VERSION=2.6.0 TAR=http://files.freeciv.org/stable/freeciv-$VERSION.tar.bz2 -BUILD_DEPENDS=(curl freetype libiconv liborbital libpng sdl sdl_gfx sdl_image sdl_mixer sdl_ttf zlib) +BUILD_DEPENDS=(curl freetype libiconv liborbital libpng openssl sdl sdl_gfx sdl_image sdl_mixer sdl_ttf zlib) function recipe_version { echo "$VERSION" @@ -17,7 +17,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" - export LIBS="-lpthread" + export LIBS="-Wl,--whole-archive -lpthread -Wl,--no-whole-archive" ./configure \ --host="$HOST" \ --prefix='' \ From a792793b92e9a77d72fd3337215d26876a64daed Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 30 Dec 2018 11:16:28 -0700 Subject: [PATCH 0539/3180] Update install paths for some recipes that compile examples, add zlib to recipes that use mesa --- recipes/glutin/recipe.sh | 10 +++++++++- recipes/hematite/recipe.sh | 3 ++- recipes/rust-cairo/recipe.sh | 8 +++++++- recipes/winit/recipe.sh | 7 +++++++ 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/recipes/glutin/recipe.sh b/recipes/glutin/recipe.sh index 9e2a08af..fe95257f 100644 --- a/recipes/glutin/recipe.sh +++ b/recipes/glutin/recipe.sh @@ -1,6 +1,6 @@ GIT=https://gitlab.redox-os.org/redox-os/glutin.git GIT_UPSTREAM=https://github.com/tomaka/glutin.git -BUILD_DEPENDS=(mesa) +BUILD_DEPENDS=(mesa zlib) BRANCH=redox CARGOFLAGS="--example window" @@ -12,7 +12,15 @@ function recipe_build { -L "${sysroot}/lib" \ -l OSMesa \ -l glapi \ + -l z \ -l stdc++ \ -C link-args="-Wl,--whole-archive -lpthread -Wl,--no-whole-archive" skip=1 } + +function recipe_stage { + dest="$(realpath $1)" + mkdir -pv "$dest/bin" + cp -v "target/${TARGET}/release/examples/window" "$dest/bin/glutin" + skip=1 +} diff --git a/recipes/hematite/recipe.sh b/recipes/hematite/recipe.sh index 1eac2e09..07766496 100644 --- a/recipes/hematite/recipe.sh +++ b/recipes/hematite/recipe.sh @@ -1,6 +1,6 @@ GIT=https://gitlab.redox-os.org/redox-os/hematite.git GIT_UPSTREAM=https://github.com/PistonDevelopers/hematite.git -BUILD_DEPENDS=(mesa) +BUILD_DEPENDS=(mesa zlib) BRANCH=redox function recipe_build { @@ -11,6 +11,7 @@ function recipe_build { -L "${sysroot}/lib" \ -l OSMesa \ -l glapi \ + -l z \ -l stdc++ \ -C link-args="-Wl,--whole-archive -lpthread -Wl,--no-whole-archive" skip=1 diff --git a/recipes/rust-cairo/recipe.sh b/recipes/rust-cairo/recipe.sh index 345db4c8..f2fea6aa 100644 --- a/recipes/rust-cairo/recipe.sh +++ b/recipes/rust-cairo/recipe.sh @@ -12,7 +12,13 @@ function recipe_build { -l pixman-1 \ -l freetype \ -l png \ - -l z + -l z skip=1 } +function recipe_stage { + dest="$(realpath $1)" + mkdir -pv "$dest/bin" + cp -v "target/${TARGET}/release/examples/gui" "$dest/bin/rust-cairo" + skip=1 +} diff --git a/recipes/winit/recipe.sh b/recipes/winit/recipe.sh index eaa6196b..8f18b82c 100644 --- a/recipes/winit/recipe.sh +++ b/recipes/winit/recipe.sh @@ -2,3 +2,10 @@ GIT=https://gitlab.redox-os.org/redox-os/winit.git GIT_UPSTREAM=https://github.com/tomaka/winit.git BRANCH=redox CARGOFLAGS="--example window" + +function recipe_stage { + dest="$(realpath $1)" + mkdir -pv "$dest/bin" + cp -v "target/${TARGET}/release/examples/window" "$dest/bin/winit" + skip=1 +} From 1b64041573564e4275f64a77a88b3109ceef0653 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 30 Dec 2018 11:21:25 -0700 Subject: [PATCH 0540/3180] osdemo: add missing zlib --- recipes/osdemo/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/osdemo/recipe.sh b/recipes/osdemo/recipe.sh index 9c8662b4..f14b722a 100644 --- a/recipes/osdemo/recipe.sh +++ b/recipes/osdemo/recipe.sh @@ -1,4 +1,4 @@ -BUILD_DEPENDS=(liborbital mesa mesa_glu) +BUILD_DEPENDS=(liborbital mesa mesa_glu zlib) function recipe_version { printf "1.0.0" @@ -19,7 +19,7 @@ function recipe_prepare { function recipe_build { sysroot="$(realpath ../sysroot)" set -x - "${CXX}" -I "$sysroot/include" -L "$sysroot/lib" osdemo.c -o osdemo -lorbital -lOSMesa -lGLU -lglapi -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -lm + "${CXX}" -I "$sysroot/include" -L "$sysroot/lib" osdemo.c -o osdemo -lorbital -lOSMesa -lGLU -lglapi -lz -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -lm set +x skip=1 } From 96e25546a39845048771a55ed3187d3f66a1345a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 30 Dec 2018 20:03:46 -0700 Subject: [PATCH 0541/3180] sdl2: add audio --- .../sdl2/{01_orbital.patch => redox.patch} | 348 +++++++++++++++++- 1 file changed, 334 insertions(+), 14 deletions(-) rename recipes/sdl2/{01_orbital.patch => redox.patch} (67%) diff --git a/recipes/sdl2/01_orbital.patch b/recipes/sdl2/redox.patch similarity index 67% rename from recipes/sdl2/01_orbital.patch rename to recipes/sdl2/redox.patch index 3c5f2ada..9891a943 100644 --- a/recipes/sdl2/01_orbital.patch +++ b/recipes/sdl2/redox.patch @@ -1,7 +1,26 @@ diff -ruwN source/configure.in source-new/configure.in --- source/configure.in 2018-10-31 09:07:22.000000000 -0600 -+++ source-new/configure.in 2018-12-10 14:20:34.303368238 -0700 -@@ -2282,6 +2282,20 @@ ++++ source-new/configure.in 2018-12-30 20:01:02.572341419 -0700 +@@ -1222,6 +1222,18 @@ + fi + } + ++dnl Set up the Redox Audio driver ++CheckRedoxAudio() ++{ ++ AC_ARG_ENABLE(redoxaudio, ++AC_HELP_STRING([--enable-redoxaudio], [support the redox audio driver [[default=yes]]]), ++ , enable_redoxaudio=yes) ++ if test x$enable_audio = xyes -a x$enable_redoxaudio = xyes; then ++ AC_DEFINE(SDL_AUDIO_DRIVER_REDOX) ++ SOURCES="$SOURCES $srcdir/src/audio/redox/*.c" ++ fi ++} ++ + dnl rcg07142001 See if the user wants the disk writer audio driver... + CheckDiskAudio() + { +@@ -2282,6 +2294,20 @@ fi } @@ -22,7 +41,19 @@ diff -ruwN source/configure.in source-new/configure.in dnl Set up the QNX video driver if enabled CheckQNXVideo() { -@@ -3362,7 +3376,7 @@ +@@ -2789,6 +2815,11 @@ + AC_HELP_STRING([--enable-pthread-sem], [use pthread semaphores [[default=yes]]]), + , enable_pthread_sem=yes) + case "$host" in ++ *-*-redox*) ++ pthread_cflags="-D_REENTRANT" ++ pthread_lib="-lpthread" ++ SDL_LIBS="$SDL_LIBS -Wl,--whole-archive -lpthread -Wl,--no-whole-archive" ++ ;; + *-*-android*) + pthread_cflags="-D_REENTRANT -D_THREAD_SAFE" + pthread_lib="" +@@ -3362,7 +3393,7 @@ dnl Set up the configuration based on the host platform! case "$host" in @@ -31,7 +62,7 @@ diff -ruwN source/configure.in source-new/configure.in case "$host" in *-*-android*) # Android -@@ -3383,6 +3397,7 @@ +@@ -3383,6 +3414,7 @@ ;; *-*-linux*) ARCH=linux ;; *-*-uclinux*) ARCH=linux ;; @@ -39,18 +70,27 @@ diff -ruwN source/configure.in source-new/configure.in *-*-kfreebsd*-gnu) ARCH=kfreebsd-gnu ;; *-*-knetbsd*-gnu) ARCH=knetbsd-gnu ;; *-*-kopenbsd*-gnu) ARCH=kopenbsd-gnu ;; -@@ -3404,6 +3419,7 @@ +@@ -3404,6 +3436,8 @@ CheckVisibilityHidden CheckDeclarationAfterStatement CheckDummyVideo + CheckOrbitalVideo ++ CheckRedoxAudio CheckDiskAudio CheckDummyAudio CheckDLOPEN diff -ruwN source/include/SDL_config.h.in source-new/include/SDL_config.h.in --- source/include/SDL_config.h.in 2018-10-31 09:07:22.000000000 -0600 -+++ source-new/include/SDL_config.h.in 2018-12-10 14:21:20.848804696 -0700 -@@ -320,6 +320,7 @@ ++++ source-new/include/SDL_config.h.in 2018-12-30 19:54:01.263870482 -0700 +@@ -263,6 +263,7 @@ + #undef SDL_AUDIO_DRIVER_PULSEAUDIO + #undef SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC + #undef SDL_AUDIO_DRIVER_QSA ++#undef SDL_AUDIO_DRIVER_REDOX + #undef SDL_AUDIO_DRIVER_SNDIO + #undef SDL_AUDIO_DRIVER_SNDIO_DYNAMIC + #undef SDL_AUDIO_DRIVER_SUNAUDIO +@@ -320,6 +321,7 @@ #undef SDL_VIDEO_DRIVER_DIRECTFB #undef SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC #undef SDL_VIDEO_DRIVER_DUMMY @@ -58,9 +98,250 @@ diff -ruwN source/include/SDL_config.h.in source-new/include/SDL_config.h.in #undef SDL_VIDEO_DRIVER_WINDOWS #undef SDL_VIDEO_DRIVER_WAYLAND #undef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH +diff -ruwN source/src/audio/redox/SDL_redoxaudio.c source-new/src/audio/redox/SDL_redoxaudio.c +--- source/src/audio/redox/SDL_redoxaudio.c 1969-12-31 17:00:00.000000000 -0700 ++++ source-new/src/audio/redox/SDL_redoxaudio.c 2018-12-30 19:53:02.919797606 -0700 +@@ -0,0 +1,169 @@ ++/* ++ SDL - Simple DirectMedia Layer ++ Copyright (C) 1997-2012 Sam Lantinga ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free Software ++ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++ Sam Lantinga ++ slouken@libsdl.org ++ ++ This file written by Ryan C. Gordon (icculus@icculus.org) ++*/ ++#include "SDL_config.h" ++ ++/* Output raw audio data to a file. */ ++ ++#include ++#include ++#include ++ ++#include "SDL_timer.h" ++#include "SDL_audio.h" ++#include "../SDL_audiomem.h" ++#include "../SDL_audio_c.h" ++#include "../SDL_audiodev_c.h" ++#include "SDL_redoxaudio.h" ++ ++/* The tag name used by REDOX audio */ ++#define REDOXAUD_DRIVER_NAME "redox" ++ ++/* Audio driver functions */ ++static int REDOXAUD_OpenAudio(_THIS, SDL_AudioSpec *spec); ++static void REDOXAUD_WaitAudio(_THIS); ++static void REDOXAUD_PlayAudio(_THIS); ++static Uint8 *REDOXAUD_GetAudioBuf(_THIS); ++static void REDOXAUD_CloseAudio(_THIS); ++ ++/* Audio driver bootstrap functions */ ++static int REDOXAUD_Available(void) ++{ ++ return(1); ++} ++ ++static void REDOXAUD_DeleteDevice(SDL_AudioDevice *device) ++{ ++ SDL_free(device->hidden); ++ SDL_free(device); ++} ++ ++static SDL_AudioDevice *REDOXAUD_CreateDevice(int devindex) ++{ ++ SDL_AudioDevice *this; ++ const char *envr; ++ ++ /* Initialize all variables that we clean on shutdown */ ++ this = (SDL_AudioDevice *)SDL_malloc(sizeof(SDL_AudioDevice)); ++ if ( this ) { ++ SDL_memset(this, 0, (sizeof *this)); ++ this->hidden = (struct SDL_PrivateAudioData *) ++ SDL_malloc((sizeof *this->hidden)); ++ } ++ if ( (this == NULL) || (this->hidden == NULL) ) { ++ SDL_OutOfMemory(); ++ if ( this ) { ++ SDL_free(this); ++ } ++ return(0); ++ } ++ SDL_memset(this->hidden, 0, (sizeof *this->hidden)); ++ ++ this->hidden->output = -1; ++ ++ /* Set the function pointers */ ++ this->OpenAudio = REDOXAUD_OpenAudio; ++ this->WaitAudio = REDOXAUD_WaitAudio; ++ this->PlayAudio = REDOXAUD_PlayAudio; ++ this->GetAudioBuf = REDOXAUD_GetAudioBuf; ++ this->CloseAudio = REDOXAUD_CloseAudio; ++ ++ this->free = REDOXAUD_DeleteDevice; ++ ++ return this; ++} ++ ++AudioBootStrap REDOXAUD_bootstrap = { ++ REDOXAUD_DRIVER_NAME, "Redox audio", ++ REDOXAUD_Available, REDOXAUD_CreateDevice ++}; ++ ++/* This function waits until it is possible to write a full sound buffer */ ++static void REDOXAUD_WaitAudio(_THIS) ++{} ++ ++static void REDOXAUD_PlayAudio(_THIS) ++{ ++ int written; ++ ++ /* Write the audio data */ ++ written = write(this->hidden->output, ++ this->hidden->mixbuf, ++ this->hidden->mixlen); ++ ++ /* If we couldn't write, assume fatal error for now */ ++ if ( (Uint32)written != this->hidden->mixlen ) { ++ this->enabled = 0; ++ } ++#ifdef DEBUG_AUDIO ++ fprintf(stderr, "Wrote %d bytes of audio data\n", written); ++#endif ++} ++ ++static Uint8 *REDOXAUD_GetAudioBuf(_THIS) ++{ ++ return(this->hidden->mixbuf); ++} ++ ++static void REDOXAUD_CloseAudio(_THIS) ++{ ++ if ( this->hidden->mixbuf != NULL ) { ++ SDL_FreeAudioMem(this->hidden->mixbuf); ++ this->hidden->mixbuf = NULL; ++ } ++ if ( this->hidden->output >= 0 ) { ++ close(this->hidden->output); ++ this->hidden->output = -1; ++ } ++} ++ ++static int REDOXAUD_OpenAudio(_THIS, SDL_AudioSpec *spec) ++{ ++ fprintf(stderr, "WARNING: You are using the SDL redox audio driver!\n"); ++ ++ /* Open the audio device */ ++ this->hidden->output = open("audio:", O_WRONLY); ++ if ( this->hidden->output < 0 ) { ++ perror("failed to open audio:"); ++ return(-1); ++ } ++ ++ spec->freq = 44100; ++ spec->format = AUDIO_S16; ++ spec->channels = 2; ++ SDL_CalculateAudioSpec(spec); ++ ++ /* Allocate mixing buffer */ ++ this->hidden->mixlen = spec->size; ++ this->hidden->mixbuf = (Uint8 *) SDL_AllocAudioMem(this->hidden->mixlen); ++ if ( this->hidden->mixbuf == NULL ) { ++ perror("failed to allocate audio memory"); ++ return(-1); ++ } ++ SDL_memset(this->hidden->mixbuf, spec->silence, spec->size); ++ ++ fprintf(stderr, "openaudio success\n"); ++ ++ /* We're ready to rock and roll. :-) */ ++ return(0); ++} +diff -ruwN source/src/audio/redox/SDL_redoxaudio.h source-new/src/audio/redox/SDL_redoxaudio.h +--- source/src/audio/redox/SDL_redoxaudio.h 1969-12-31 17:00:00.000000000 -0700 ++++ source-new/src/audio/redox/SDL_redoxaudio.h 2018-12-30 19:53:02.919797606 -0700 +@@ -0,0 +1,40 @@ ++/* ++ SDL - Simple DirectMedia Layer ++ Copyright (C) 1997-2012 Sam Lantinga ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free Software ++ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++ Sam Lantinga ++ slouken@libsdl.org ++*/ ++#include "SDL_config.h" ++ ++#ifndef _SDL_redoxaudio_h ++#define _SDL_redoxaudio_h ++ ++#include "SDL_rwops.h" ++#include "../SDL_sysaudio.h" ++ ++/* Hidden "this" pointer for the video functions */ ++#define _THIS SDL_AudioDevice *this ++ ++struct SDL_PrivateAudioData { ++ /* The file descriptor for the audio device */ ++ int output; ++ Uint8 *mixbuf; ++ Uint32 mixlen; ++}; ++ ++#endif /* _SDL_redoxaudio_h */ +diff -ruwN source/src/audio/SDL_audio.c source-new/src/audio/SDL_audio.c +--- source/src/audio/SDL_audio.c 2018-10-31 09:07:22.000000000 -0600 ++++ source-new/src/audio/SDL_audio.c 2018-12-30 19:54:43.931922299 -0700 +@@ -35,6 +35,9 @@ + + /* Available audio drivers */ + static const AudioBootStrap *const bootstrap[] = { ++#if SDL_AUDIO_DRIVER_REDOX ++ &REDOXAUD_bootstrap, ++#endif + #if SDL_AUDIO_DRIVER_PULSEAUDIO + &PULSEAUDIO_bootstrap, + #endif +diff -ruwN source/src/audio/SDL_sysaudio.h source-new/src/audio/SDL_sysaudio.h +--- source/src/audio/SDL_sysaudio.h 2018-10-31 09:07:22.000000000 -0600 ++++ source-new/src/audio/SDL_sysaudio.h 2018-12-30 19:55:51.280001807 -0700 +@@ -183,6 +183,7 @@ + } AudioBootStrap; + + /* Not all of these are available in a given build. Use #ifdefs, etc. */ ++extern AudioBootStrap REDOXAUD_bootstrap; + extern AudioBootStrap PULSEAUDIO_bootstrap; + extern AudioBootStrap ALSA_bootstrap; + extern AudioBootStrap JACK_bootstrap; diff -ruwN source/src/dynapi/SDL_dynapi.h source-new/src/dynapi/SDL_dynapi.h --- source/src/dynapi/SDL_dynapi.h 2018-10-31 09:07:22.000000000 -0600 -+++ source-new/src/dynapi/SDL_dynapi.h 2018-12-10 14:27:37.746233683 -0700 ++++ source-new/src/dynapi/SDL_dynapi.h 2018-12-30 19:51:10.263649275 -0700 @@ -55,6 +55,8 @@ #define SDL_DYNAMIC_API 0 #elif defined(__clang_analyzer__) @@ -70,9 +351,24 @@ diff -ruwN source/src/dynapi/SDL_dynapi.h source-new/src/dynapi/SDL_dynapi.h #endif /* everyone else. This is where we turn on the API if nothing forced it off. */ +diff -ruwN source/src/thread/pthread/SDL_systhread.c source-new/src/thread/pthread/SDL_systhread.c +--- source/src/thread/pthread/SDL_systhread.c 2018-10-31 09:07:22.000000000 -0600 ++++ source-new/src/thread/pthread/SDL_systhread.c 2018-12-30 19:57:03.592084415 -0700 +@@ -165,7 +165,11 @@ + for (i = 0; sig_list[i]; ++i) { + sigaddset(&mask, sig_list[i]); + } ++ #if defined(__redox__) ++ sigprocmask(SIG_BLOCK, &mask, 0); ++ #else + pthread_sigmask(SIG_BLOCK, &mask, 0); ++ #endif + #endif /* !__NACL__ */ + + diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orbital/SDL_orbitalevents.c --- source/src/video/orbital/SDL_orbitalevents.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalevents.c 2018-12-10 14:40:45.587655256 -0700 ++++ source-new/src/video/orbital/SDL_orbitalevents.c 2018-12-30 19:51:10.263649275 -0700 @@ -0,0 +1,197 @@ +/* + SDL - Simple DirectMedia Layer @@ -273,7 +569,7 @@ diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orb +/* end of SDL_orbitalevents.c ... */ diff -ruwN source/src/video/orbital/SDL_orbitalevents_c.h source-new/src/video/orbital/SDL_orbitalevents_c.h --- source/src/video/orbital/SDL_orbitalevents_c.h 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalevents_c.h 2018-12-10 14:30:44.441918559 -0700 ++++ source-new/src/video/orbital/SDL_orbitalevents_c.h 2018-12-30 19:51:10.263649275 -0700 @@ -0,0 +1,32 @@ +/* + SDL - Simple DirectMedia Layer @@ -309,7 +605,7 @@ diff -ruwN source/src/video/orbital/SDL_orbitalevents_c.h source-new/src/video/o +/* end of SDL_orbitalevents_c.h ... */ diff -ruwN source/src/video/orbital/SDL_orbitalmouse.c source-new/src/video/orbital/SDL_orbitalmouse.c --- source/src/video/orbital/SDL_orbitalmouse.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalmouse.c 2018-12-10 14:30:44.441918559 -0700 ++++ source-new/src/video/orbital/SDL_orbitalmouse.c 2018-12-30 19:51:10.263649275 -0700 @@ -0,0 +1,33 @@ +/* + SDL - Simple DirectMedia Layer @@ -346,7 +642,7 @@ diff -ruwN source/src/video/orbital/SDL_orbitalmouse.c source-new/src/video/orbi +}; diff -ruwN source/src/video/orbital/SDL_orbitalmouse_c.h source-new/src/video/orbital/SDL_orbitalmouse_c.h --- source/src/video/orbital/SDL_orbitalmouse_c.h 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalmouse_c.h 2018-12-10 14:30:44.441918559 -0700 ++++ source-new/src/video/orbital/SDL_orbitalmouse_c.h 2018-12-30 19:51:10.267649280 -0700 @@ -0,0 +1,26 @@ +/* + SDL - Simple DirectMedia Layer @@ -376,7 +672,7 @@ diff -ruwN source/src/video/orbital/SDL_orbitalmouse_c.h source-new/src/video/or +/* Functions to be exported */ diff -ruwN source/src/video/orbital/SDL_orbitalvideo.c source-new/src/video/orbital/SDL_orbitalvideo.c --- source/src/video/orbital/SDL_orbitalvideo.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalvideo.c 2018-12-10 14:30:44.441918559 -0700 ++++ source-new/src/video/orbital/SDL_orbitalvideo.c 2018-12-30 19:51:10.267649280 -0700 @@ -0,0 +1,252 @@ +/* + SDL - Simple DirectMedia Layer @@ -632,7 +928,7 @@ diff -ruwN source/src/video/orbital/SDL_orbitalvideo.c source-new/src/video/orbi +} diff -ruwN source/src/video/orbital/SDL_orbitalvideo.h source-new/src/video/orbital/SDL_orbitalvideo.h --- source/src/video/orbital/SDL_orbitalvideo.h 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalvideo.h 2018-12-10 14:30:44.441918559 -0700 ++++ source-new/src/video/orbital/SDL_orbitalvideo.h 2018-12-30 19:51:10.267649280 -0700 @@ -0,0 +1,39 @@ +/* + SDL - Simple DirectMedia Layer @@ -673,3 +969,27 @@ diff -ruwN source/src/video/orbital/SDL_orbitalvideo.h source-new/src/video/orbi +}; + +#endif /* _SDL_orbitalvideo_h */ +diff -ruwN source/src/video/SDL_sysvideo.h source-new/src/video/SDL_sysvideo.h +--- source/src/video/SDL_sysvideo.h 2018-10-31 09:07:22.000000000 -0600 ++++ source-new/src/video/SDL_sysvideo.h 2018-12-30 19:58:01.920149215 -0700 +@@ -416,6 +416,7 @@ + extern VideoBootStrap PSP_bootstrap; + extern VideoBootStrap RPI_bootstrap; + extern VideoBootStrap KMSDRM_bootstrap; ++extern VideoBootStrap ORBITAL_bootstrap; + extern VideoBootStrap DUMMY_bootstrap; + extern VideoBootStrap Wayland_bootstrap; + extern VideoBootStrap NACL_bootstrap; +diff -ruwN source/src/video/SDL_video.c source-new/src/video/SDL_video.c +--- source/src/video/SDL_video.c 2018-10-31 09:07:22.000000000 -0600 ++++ source-new/src/video/SDL_video.c 2018-12-30 19:58:27.472177138 -0700 +@@ -112,6 +112,9 @@ + #if SDL_VIDEO_DRIVER_QNX + &QNX_bootstrap, + #endif ++#if SDL_VIDEO_DRIVER_ORBITAL ++ &ORBITAL_bootstrap, ++#endif + #if SDL_VIDEO_DRIVER_DUMMY + &DUMMY_bootstrap, + #endif From e48651b934851480e046ef09c7b00063a97cf635 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 30 Dec 2018 20:40:50 -0700 Subject: [PATCH 0542/3180] sdl2: WIP update to new video and events API --- recipes/sdl2/redox.patch | 125 ++++++++------------------------------- 1 file changed, 25 insertions(+), 100 deletions(-) diff --git a/recipes/sdl2/redox.patch b/recipes/sdl2/redox.patch index 9891a943..a6cb05e4 100644 --- a/recipes/sdl2/redox.patch +++ b/recipes/sdl2/redox.patch @@ -368,8 +368,8 @@ diff -ruwN source/src/thread/pthread/SDL_systhread.c source-new/src/thread/pthre diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orbital/SDL_orbitalevents.c --- source/src/video/orbital/SDL_orbitalevents.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalevents.c 2018-12-30 19:51:10.263649275 -0700 -@@ -0,0 +1,197 @@ ++++ source-new/src/video/orbital/SDL_orbitalevents.c 2018-12-30 20:37:39.185277773 -0700 +@@ -0,0 +1,192 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -414,42 +414,37 @@ diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orb +{ + SDL_Keysym keysym; + ++ SDL_Mouse *mouse = SDL_GetMouse(); ++ + void* event_iter = orb_window_events(this->hidden->window); + OrbEventOption oeo = orb_events_next(event_iter); + + while (oeo.tag != OrbEventOption_None) { + switch (oeo.tag) { + case OrbEventOption_Key: -+ keysym.unicode = oeo.key.character; + keysym.scancode = oeo.key.scancode; + keysym.sym = keymap[oeo.key.scancode]; + keysym.mod = KMOD_NONE; + -+ SDL_PrivateKeyboard(oeo.key.pressed ? SDL_PRESSED : SDL_RELEASED, &keysym); ++ SDL_SendKeyboardKey(oeo.key.pressed ? SDL_PRESSED : SDL_RELEASED, &keysym); + break; + case OrbEventOption_Mouse: -+ SDL_PrivateMouseMotion(0, 0, oeo.mouse.x, oeo.mouse.y); ++ SDL_SendMouseMotion(mouse->focus, mouse->mouseID, SDL_FALSE, oeo.mouse.x, oeo.mouse.y); + break; + case OrbEventOption_Button: + if (oeo.button.left ^ last_button_left) -+ SDL_PrivateMouseButton(oeo.button.left ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_LEFT, 0, 0); ++ SDL_SendMouseButton(mouse->focus, mouse->mouseID, oeo.button.left ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_LEFT, 0, 0); + if (oeo.button.middle ^ last_button_middle) -+ SDL_PrivateMouseButton(oeo.button.middle ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_MIDDLE, 0, 0); ++ SDL_SendMouseButton(mouse->focus, mouse->mouseID, oeo.button.middle ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_MIDDLE, 0, 0); + if (oeo.button.right ^ last_button_right) -+ SDL_PrivateMouseButton(oeo.button.right ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_RIGHT, 0, 0); ++ SDL_SendMouseButton(mouse->focus, mouse->mouseID, oeo.button.right ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_RIGHT, 0, 0); + + last_button_left = oeo.button.left; + last_button_middle = oeo.button.middle; + last_button_right = oeo.button.right; + break; + case OrbEventOption_Scroll: -+ if (oeo.scroll.y > 0) { -+ SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_WHEELUP, 0, 0); -+ SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_WHEELUP, 0, 0); -+ } else if (oeo.scroll.y < 0) { -+ SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_WHEELDOWN, 0, 0); -+ SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_WHEELDOWN, 0, 0); -+ } ++ SDL_SendMouseWheel(mouse->focus, mouse->mouseID, oeo.scroll.x, oeo.scroll.y, SDL_MOUSEWHEEL_NORMAL); + break; + case OrbEventOption_Quit: + SDL_PrivateQuit(); @@ -672,8 +667,8 @@ diff -ruwN source/src/video/orbital/SDL_orbitalmouse_c.h source-new/src/video/or +/* Functions to be exported */ diff -ruwN source/src/video/orbital/SDL_orbitalvideo.c source-new/src/video/orbital/SDL_orbitalvideo.c --- source/src/video/orbital/SDL_orbitalvideo.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalvideo.c 2018-12-30 19:51:10.267649280 -0700 -@@ -0,0 +1,252 @@ ++++ source-new/src/video/orbital/SDL_orbitalvideo.c 2018-12-30 20:26:21.622297793 -0700 +@@ -0,0 +1,182 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -724,21 +719,8 @@ diff -ruwN source/src/video/orbital/SDL_orbitalvideo.c source-new/src/video/orbi +#define ORBITALVID_DRIVER_NAME "orbital" + +/* Initialization/Query functions */ -+static int ORBITAL_VideoInit(_THIS, SDL_PixelFormat *vformat); -+static SDL_Rect **ORBITAL_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags); -+static SDL_Surface *ORBITAL_SetVideoMode(_THIS, SDL_Surface *current, int width, int height, int bpp, Uint32 flags); -+static int ORBITAL_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors); ++static int ORBITAL_VideoInit(_THIS); +static void ORBITAL_VideoQuit(_THIS); -+static void ORBITAL_SetCaption(_THIS, const char *title, const char *icon); -+ -+/* Hardware surface functions */ -+static int ORBITAL_AllocHWSurface(_THIS, SDL_Surface *surface); -+static int ORBITAL_LockHWSurface(_THIS, SDL_Surface *surface); -+static void ORBITAL_UnlockHWSurface(_THIS, SDL_Surface *surface); -+static void ORBITAL_FreeHWSurface(_THIS, SDL_Surface *surface); -+ -+/* etc. */ -+static void ORBITAL_UpdateRects(_THIS, int numrects, SDL_Rect *rects); + +/* ORBITAL driver bootstrap functions */ + @@ -775,26 +757,7 @@ diff -ruwN source/src/video/orbital/SDL_orbitalvideo.c source-new/src/video/orbi + + /* Set the function pointers */ + device->VideoInit = ORBITAL_VideoInit; -+ device->ListModes = ORBITAL_ListModes; -+ device->SetVideoMode = ORBITAL_SetVideoMode; -+ device->CreateYUVOverlay = NULL; -+ device->SetColors = ORBITAL_SetColors; -+ device->UpdateRects = ORBITAL_UpdateRects; + device->VideoQuit = ORBITAL_VideoQuit; -+ device->AllocHWSurface = ORBITAL_AllocHWSurface; -+ device->CheckHWBlit = NULL; -+ device->FillHWRect = NULL; -+ device->SetHWColorKey = NULL; -+ device->SetHWAlpha = NULL; -+ device->LockHWSurface = ORBITAL_LockHWSurface; -+ device->UnlockHWSurface = ORBITAL_UnlockHWSurface; -+ device->FlipHWSurface = NULL; -+ device->FreeHWSurface = ORBITAL_FreeHWSurface; -+ device->SetCaption = ORBITAL_SetCaption; -+ device->SetIcon = NULL; -+ device->IconifyWindow = NULL; -+ device->GrabInput = NULL; -+ device->GetWMInfo = NULL; + device->InitOSKeymap = ORBITAL_InitOSKeymap; + device->PumpEvents = ORBITAL_PumpEvents; + @@ -809,27 +772,27 @@ diff -ruwN source/src/video/orbital/SDL_orbitalvideo.c source-new/src/video/orbi +}; + + -+int ORBITAL_VideoInit(_THIS, SDL_PixelFormat *vformat) ++int ORBITAL_VideoInit(_THIS) +{ + fprintf(stderr, "WARNING: You are using the SDL orbital video driver!\n"); + -+ /* Determine the screen depth (use default 32-bit depth) */ -+ /* we change this during the SDL_SetVideoMode implementation... */ -+ vformat->BitsPerPixel = 32; -+ vformat->BytesPerPixel = 4; -+ + /* We're done! */ + return(0); +} + -+SDL_Rect **ORBITAL_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags) ++/* Note: If we are terminated, this could be called in the middle of ++ another SDL video routine -- notably UpdateRects. ++*/ ++void ORBITAL_VideoQuit(_THIS) +{ -+ if (format->BitsPerPixel != 32) -+ return NULL; -+ -+ return (SDL_Rect **) -1; ++ if (this->hidden->window) { ++ orb_window_destroy(this->hidden->window); ++ this->hidden->window = NULL; ++ this->screen->pixels = NULL; ++ } +} + ++#if 0 +SDL_Surface *ORBITAL_SetVideoMode(_THIS, SDL_Surface *current, + int width, int height, int bpp, Uint32 flags) +{ @@ -880,27 +843,6 @@ diff -ruwN source/src/video/orbital/SDL_orbitalvideo.c source-new/src/video/orbi + orb_window_set_title(this->hidden->window, title); +} + -+/* We don't actually allow hardware surfaces other than the main one */ -+static int ORBITAL_AllocHWSurface(_THIS, SDL_Surface *surface) -+{ -+ return(-1); -+} -+static void ORBITAL_FreeHWSurface(_THIS, SDL_Surface *surface) -+{ -+ return; -+} -+ -+/* We need to wait for vertical retrace on page flipped displays */ -+static int ORBITAL_LockHWSurface(_THIS, SDL_Surface *surface) -+{ -+ return(0); -+} -+ -+static void ORBITAL_UnlockHWSurface(_THIS, SDL_Surface *surface) -+{ -+ return; -+} -+ +static void ORBITAL_UpdateRects(_THIS, int numrects, SDL_Rect *rects) +{ + if (this->hidden->window) { @@ -908,24 +850,7 @@ diff -ruwN source/src/video/orbital/SDL_orbitalvideo.c source-new/src/video/orbi + orb_window_sync(this->hidden->window); + } +} -+ -+int ORBITAL_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors) -+{ -+ /* do nothing of note. */ -+ return(1); -+} -+ -+/* Note: If we are terminated, this could be called in the middle of -+ another SDL video routine -- notably UpdateRects. -+*/ -+void ORBITAL_VideoQuit(_THIS) -+{ -+ if (this->hidden->window) { -+ orb_window_destroy(this->hidden->window); -+ this->hidden->window = NULL; -+ this->screen->pixels = NULL; -+ } -+} ++#endif diff -ruwN source/src/video/orbital/SDL_orbitalvideo.h source-new/src/video/orbital/SDL_orbitalvideo.h --- source/src/video/orbital/SDL_orbitalvideo.h 1969-12-31 17:00:00.000000000 -0700 +++ source-new/src/video/orbital/SDL_orbitalvideo.h 2018-12-30 19:51:10.267649280 -0700 From 559c743da7b6a3339f2c689d61631ff51d423c8c Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Mon, 31 Dec 2018 16:56:16 +0100 Subject: [PATCH 0543/3180] scummvm: Enable audio, add checksum --- recipes/scummvm/01_redox.patch | 14 -------------- recipes/scummvm/recipe.sh | 1 + 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/recipes/scummvm/01_redox.patch b/recipes/scummvm/01_redox.patch index 04d44149..153b7f5e 100644 --- a/recipes/scummvm/01_redox.patch +++ b/recipes/scummvm/01_redox.patch @@ -1,17 +1,3 @@ -diff -rupNw source-original/audio/mixer.cpp source/audio/mixer.cpp ---- source-original/audio/mixer.cpp 2017-12-08 23:21:10.000000000 +0100 -+++ source/audio/mixer.cpp 2018-12-06 02:03:37.151198853 +0100 -@@ -237,7 +237,9 @@ void MixerImpl::playStream( - } - - -- assert(_mixerReady); -+ if (autofreeStream == DisposeAfterUse::YES) -+ delete stream; -+ return; - - // Prevent duplicate sounds - if (id != -1) { diff -rupNw source-original/common/stream.cpp source/common/stream.cpp --- source-original/common/stream.cpp 2017-12-08 23:21:10.000000000 +0100 +++ source/common/stream.cpp 2018-12-06 02:01:50.454108198 +0100 diff --git a/recipes/scummvm/recipe.sh b/recipes/scummvm/recipe.sh index 6d5ca82b..582a42d5 100644 --- a/recipes/scummvm/recipe.sh +++ b/recipes/scummvm/recipe.sh @@ -1,5 +1,6 @@ VERSION=2.0.0 TAR=https://www.scummvm.org/frs/scummvm/$VERSION/scummvm-$VERSION.tar.xz +TAR_SHA256=9784418d555ba75822d229514a05cf226b8ce1a751eec425432e6b7e128fca60 BUILD_DEPENDS=(sdl liborbital freetype zlib libpng) function recipe_version { From 8d61e7492e86fbf57fef1a8898527dbf6aecb400 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Mon, 31 Dec 2018 16:57:08 +0100 Subject: [PATCH 0544/3180] Add schismtracker recipe --- recipes/schismtracker/01_redox.patch | 24 ++++++++++++++++ recipes/schismtracker/recipe.sh | 41 ++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 recipes/schismtracker/01_redox.patch create mode 100644 recipes/schismtracker/recipe.sh diff --git a/recipes/schismtracker/01_redox.patch b/recipes/schismtracker/01_redox.patch new file mode 100644 index 00000000..0850319a --- /dev/null +++ b/recipes/schismtracker/01_redox.patch @@ -0,0 +1,24 @@ +diff -rupNw source-original/Makefile.am source/Makefile.am +--- source-original/Makefile.am 2018-08-10 07:04:54.000000000 +0200 ++++ source/Makefile.am 2018-12-30 23:18:07.957244170 +0100 +@@ -223,7 +223,7 @@ files_macosx = \ + endif + + if USE_NETWORK +-cflags_network=-DUSE_NETWORK ++#cflags_network=-DUSE_NETWORK + endif + + +diff -rupNw source-original/schism/main.c source/schism/main.c +--- source-original/schism/main.c 2018-08-10 07:04:54.000000000 +0200 ++++ source/schism/main.c 2018-12-30 23:19:24.954046191 +0100 +@@ -1033,7 +1033,7 @@ int main(int argc, char **argv) + + video_fullscreen(0); + +- tzset(); // localtime_r wants this ++ //tzset(); // localtime_r wants this + srand(time(NULL)); + parse_options(argc, argv); /* shouldn't this be like, first? */ + diff --git a/recipes/schismtracker/recipe.sh b/recipes/schismtracker/recipe.sh new file mode 100644 index 00000000..e9fa3a28 --- /dev/null +++ b/recipes/schismtracker/recipe.sh @@ -0,0 +1,41 @@ +VERSION=20181223 +TAR=https://github.com/schismtracker/schismtracker/archive/$VERSION.tar.gz +TAR_SHA256=fc32930c611fdb78face87dbe8a3c62e70088fd8d4ad803140e0b9a0b2e72ad7 +BUILD_DEPENDS=(sdl liborbital libiconv) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="${PWD}/../sysroot" + export CFLAGS="-I$sysroot/include -I$sysroot/include/SDL" + export LDFLAGS="-L$sysroot/lib" + export SDL_CONFIG="$sysroot/bin/sdl-config" + autoreconf -i + ./configure --host=${HOST} --prefix='' + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} From edc0847a4fb5bb13e80e18c56967fb2743af0c92 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Dec 2018 15:52:13 -0700 Subject: [PATCH 0545/3180] Update rustual-boy recipe --- recipes/rustual-boy/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/rustual-boy/recipe.sh b/recipes/rustual-boy/recipe.sh index 78a499ad..80ec576b 100755 --- a/recipes/rustual-boy/recipe.sh +++ b/recipes/rustual-boy/recipe.sh @@ -1,5 +1,6 @@ GIT=https://gitlab.redox-os.org/redox-os/rustual-boy.git GIT_UPSTREAM=https://github.com/emu-rs/rustual-boy.git +BRANCH="redox" DEPENDS="orbital" function recipe_update { From 87a27b7319c4529b1f38c26499824acdd10e1900 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Dec 2018 15:52:23 -0700 Subject: [PATCH 0546/3180] Add cpal recipe --- recipes/cpal/recipe.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 recipes/cpal/recipe.sh diff --git a/recipes/cpal/recipe.sh b/recipes/cpal/recipe.sh new file mode 100644 index 00000000..2ffe7617 --- /dev/null +++ b/recipes/cpal/recipe.sh @@ -0,0 +1,11 @@ +GIT=https://gitlab.redox-os.org/redox-os/cpal.git +GIT_UPSTREAM=https://github.com/tomaka/cpal.git +BRANCH=redox +CARGOFLAGS="--example beep" + +function recipe_stage { + dest="$(realpath $1)" + mkdir -pv "$dest/bin" + cp -v "target/${TARGET}/release/examples/beep" "$dest/bin/cpal" + skip=1 +} From a5305923295ba7845ef7ef98a45c0d20b901e1d4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Dec 2018 16:55:04 -0700 Subject: [PATCH 0547/3180] Add rodioplay recipe --- recipes/rodioplay/recipe.sh | 1 + 1 file changed, 1 insertion(+) create mode 100644 recipes/rodioplay/recipe.sh diff --git a/recipes/rodioplay/recipe.sh b/recipes/rodioplay/recipe.sh new file mode 100644 index 00000000..a13ee1cb --- /dev/null +++ b/recipes/rodioplay/recipe.sh @@ -0,0 +1 @@ +GIT=https://gitlab.redox-os.org/redox-os/rodioplay.git From c7e98955d687c9b3011fb7a78e131bcd89ca0804 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Dec 2018 18:30:32 -0700 Subject: [PATCH 0548/3180] Fix library output of llvm-config --- bin/x86_64-unknown-redox-llvm-config | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/bin/x86_64-unknown-redox-llvm-config b/bin/x86_64-unknown-redox-llvm-config index fdb2a68f..e17c23b9 100755 --- a/bin/x86_64-unknown-redox-llvm-config +++ b/bin/x86_64-unknown-redox-llvm-config @@ -118,8 +118,7 @@ elif args[0] == "--libs": libs = [] for component in args[1:]: for lib in components[component].split(" "): - if not lib in libs: - libs.append(lib) + libs.append(lib) print(" ".join(libs)) elif args[0] == "--shared-mode": print("static") From 4f39261aa94f3245945728299fcfe0f4d16f88fb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Dec 2018 21:34:06 -0700 Subject: [PATCH 0549/3180] Disable lto and enable rtti for llvm --- recipes/llvm/recipe.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/llvm/recipe.sh b/recipes/llvm/recipe.sh index cc251625..a96cc36e 100644 --- a/recipes/llvm/recipe.sh +++ b/recipes/llvm/recipe.sh @@ -35,7 +35,8 @@ function recipe_build { -DLLVM_BUILD_TESTS=Off -DLLVM_BUILD_UTILS=Off -DLLVM_DEFAULT_TARGET_TRIPLE="$HOST" - -DLLVM_ENABLE_LTO=On + -DLLVM_ENABLE_LTO=Off + -DLLVM_ENABLE_RTTI=On -DLLVM_ENABLE_THREADS=On -DLLVM_INCLUDE_BENCHMARKS=Off -DLLVM_INCLUDE_EXAMPLES=Off From 563d3641f228465e84275b70cbfc7bc719bcf445 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 1 Jan 2019 10:18:16 -0700 Subject: [PATCH 0550/3180] rust: Update llvm-config path --- recipes/rust/config.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/rust/config.toml b/recipes/rust/config.toml index fe2b8ec4..fe9297b3 100644 --- a/recipes/rust/config.toml +++ b/recipes/rust/config.toml @@ -19,5 +19,6 @@ cc = "x86_64-unknown-redox-gcc" cxx = "x86_64-unknown-redox-g++" ar = "x86_64-unknown-redox-ar" linker = "x86_64-unknown-redox-gcc" -llvm-config = "x86_64-unknown-redox-llvm-config" +# Nasty path, please fix +llvm-config = "../../../bin/x86_64-unknown-redox-llvm-config" crt-static = true From 82394a4135bcaaaa87006ffcdf776587d3d9463d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 5 Jan 2019 08:43:53 -0700 Subject: [PATCH 0551/3180] Add libffi --- recipes/libffi/recipe.sh | 44 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 recipes/libffi/recipe.sh diff --git a/recipes/libffi/recipe.sh b/recipes/libffi/recipe.sh new file mode 100644 index 00000000..111c2025 --- /dev/null +++ b/recipes/libffi/recipe.sh @@ -0,0 +1,44 @@ +VERSION=3.2.1 +TAR=ftp://sourceware.org/pub/libffi/libffi-$VERSION.tar.gz +BUILD_DEPENDS=() + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib" + wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + ./configure \ + --host=${HOST} \ + --prefix=/ \ + --disable-shared \ + --enable-static + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + rm -f "$dest/lib/"*.la + skip=1 +} From c44ee8ef19e7b4a725a58259290c9b8473d2f236 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 5 Jan 2019 09:39:36 -0700 Subject: [PATCH 0552/3180] Add gettext --- recipes/gettext/recipe.sh | 44 +++++++++++++++++++++++++++++++++++ recipes/gettext/redox.patch | 46 +++++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 recipes/gettext/recipe.sh create mode 100644 recipes/gettext/redox.patch diff --git a/recipes/gettext/recipe.sh b/recipes/gettext/recipe.sh new file mode 100644 index 00000000..a1cd8445 --- /dev/null +++ b/recipes/gettext/recipe.sh @@ -0,0 +1,44 @@ +VERSION=0.19.8.1 +TAR=http://ftp.gnu.org/pub/gnu/gettext/gettext-${VERSION}.tar.xz +BUILD_DEPENDS=(libiconv) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib" + wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + ./configure \ + --host=${HOST} \ + --prefix=/ \ + --disable-shared \ + --enable-static + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + rm -f "$dest/lib/"*.la + skip=1 +} diff --git a/recipes/gettext/redox.patch b/recipes/gettext/redox.patch new file mode 100644 index 00000000..ffaece3a --- /dev/null +++ b/recipes/gettext/redox.patch @@ -0,0 +1,46 @@ +diff -ruwN source/gettext-tools/gnulib-lib/getdtablesize.c source-new/gettext-tools/gnulib-lib/getdtablesize.c +--- source/gettext-tools/gnulib-lib/getdtablesize.c 2016-06-11 06:59:58.000000000 -0600 ++++ source-new/gettext-tools/gnulib-lib/getdtablesize.c 2019-01-05 08:45:36.015291070 -0700 +@@ -84,6 +84,14 @@ + return dtablesize; + } + ++#elif defined(__redox__) ++ ++int ++getdtablesize (void) ++{ ++ return INT_MAX; ++} ++ + #else + + # include +diff -ruwN source/gettext-tools/gnulib-lib/spawni.c source-new/gettext-tools/gnulib-lib/spawni.c +--- source/gettext-tools/gnulib-lib/spawni.c 2016-06-11 07:00:02.000000000 -0600 ++++ source-new/gettext-tools/gnulib-lib/spawni.c 2019-01-05 08:55:44.661641522 -0700 +@@ -51,10 +51,10 @@ + # include + #else + # if !HAVE_SETEUID +-# define seteuid(id) setresuid (-1, id, -1) ++# define seteuid(id) setreuid (-1, id) + # endif + # if !HAVE_SETEGID +-# define setegid(id) setresgid (-1, id, -1) ++# define setegid(id) setregid (-1, id) + # endif + # define local_seteuid(id) seteuid (id) + # define local_setegid(id) setegid (id) +diff -ruwN source/gettext-tools/src/plural-eval.h source-new/gettext-tools/src/plural-eval.h +--- source/gettext-tools/src/plural-eval.h 2016-03-20 01:37:53.000000000 -0600 ++++ source-new/gettext-tools/src/plural-eval.h 2019-01-05 08:51:23.113067496 -0700 +@@ -29,7 +29,7 @@ + #include + + /* Some platforms don't have the sigjmp_buf type in . */ +-#if defined _MSC_VER || defined __MINGW32__ ++#if defined _MSC_VER || defined __MINGW32__ || defined(__redox__) + /* Native Woe32 API. */ + # define sigjmp_buf jmp_buf + # define sigsetjmp(env,savesigs) setjmp (env) From bc611cf36e54f2abd4a666c38bab12c0a9c29f1a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 5 Jan 2019 10:26:23 -0700 Subject: [PATCH 0553/3180] Prepare for use of llvmpipe --- recipes/cargo/recipe.sh | 8 +++++--- recipes/gears/recipe.sh | 4 ++-- recipes/hematite/recipe.sh | 10 ++++------ 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/recipes/cargo/recipe.sh b/recipes/cargo/recipe.sh index d970be18..a5cbda87 100644 --- a/recipes/cargo/recipe.sh +++ b/recipes/cargo/recipe.sh @@ -1,9 +1,11 @@ GIT=https://gitlab.redox-os.org/redox-os/cargo.git +GIT_UPSTREAM=https://github.com/rust-lang/cargo.git BRANCH=redox BUILD_DEPENDS=(openssl zlib) function recipe_build { - export DEP_OPENSSL_ROOT="$PWD/../sysroot" - export OPENSSL_DIR="$PWD/../sysroot" - export DEP_Z_ROOT="$PWD/../sysroot" + sysroot="$(realpath ../sysroot)" + export DEP_OPENSSL_ROOT="$sysroot" + export OPENSSL_DIR="$sysroot" + export DEP_Z_ROOT="$sysroot" } diff --git a/recipes/gears/recipe.sh b/recipes/gears/recipe.sh index 77f19a9b..12e1e41b 100644 --- a/recipes/gears/recipe.sh +++ b/recipes/gears/recipe.sh @@ -1,4 +1,4 @@ -BUILD_DEPENDS=(liborbital mesa mesa_glu zlib) +BUILD_DEPENDS=(liborbital llvm mesa mesa_glu zlib) function recipe_version { printf "1.0.0" @@ -19,7 +19,7 @@ function recipe_prepare { function recipe_build { sysroot="$(realpath ../sysroot)" set -x - "${CXX}" -I "$sysroot/include" -L "$sysroot/lib" gears.c -o gears -lorbital $("${PKG_CONFIG}" --libs glu) -lglapi -lz -Wl,--whole-archive -lpthread -Wl,--no-whole-archive + "${CXX}" -O2 -I "$sysroot/include" -L "$sysroot/lib" gears.c -o gears -lorbital $("${PKG_CONFIG}" --libs glu) -lglapi -lz set +x skip=1 } diff --git a/recipes/hematite/recipe.sh b/recipes/hematite/recipe.sh index 07766496..7dfcbbd6 100644 --- a/recipes/hematite/recipe.sh +++ b/recipes/hematite/recipe.sh @@ -1,18 +1,16 @@ GIT=https://gitlab.redox-os.org/redox-os/hematite.git GIT_UPSTREAM=https://github.com/PistonDevelopers/hematite.git -BUILD_DEPENDS=(mesa zlib) +BUILD_DEPENDS=(mesa llvm zlib) BRANCH=redox function recipe_build { sysroot="$(realpath ../sysroot)" cp -p "$ROOT/Xargo.toml" "Xargo.toml" + set -x xargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ -- \ -L "${sysroot}/lib" \ - -l OSMesa \ - -l glapi \ - -l z \ - -l stdc++ \ - -C link-args="-Wl,--whole-archive -lpthread -Wl,--no-whole-archive" + -C link-args="$("${PKG_CONFIG}" --libs osmesa) -lglapi -lz -lstdc++ -lc -lgcc" + set +x skip=1 } From 0f6c0682e1cdea479aa960d406ac0ecd74c4c42e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 5 Jan 2019 10:26:33 -0700 Subject: [PATCH 0554/3180] Use llvmpipe --- recipes/mesa/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/mesa/recipe.sh b/recipes/mesa/recipe.sh index 5c680680..ce669d7f 100644 --- a/recipes/mesa/recipe.sh +++ b/recipes/mesa/recipe.sh @@ -1,7 +1,7 @@ GIT=https://gitlab.redox-os.org/redox-os/mesa.git GIT_UPSTREAM=git://anongit.freedesktop.org/mesa/mesa GIT_BRANCH=redox -BUILD_DEPENDS=(expat zlib) +BUILD_DEPENDS=(expat llvm zlib) function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" @@ -31,7 +31,7 @@ function recipe_build { --disable-glx \ --disable-gbm \ --disable-llvm-shared-libs \ - --disable-llvm \ + --enable-llvm \ --enable-gallium-osmesa \ --with-gallium-drivers=swrast \ --with-platforms=surfaceless From 5e0eb814166817b9cca1e05fba32fb7924e68635 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 5 Jan 2019 11:06:12 -0700 Subject: [PATCH 0555/3180] Add pcre --- recipes/pcre/recipe.sh | 44 ++++++++++++++++++++++++++++++++++++++++ recipes/pcre/redox.patch | 17 ++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 recipes/pcre/recipe.sh create mode 100644 recipes/pcre/redox.patch diff --git a/recipes/pcre/recipe.sh b/recipes/pcre/recipe.sh new file mode 100644 index 00000000..1cc30931 --- /dev/null +++ b/recipes/pcre/recipe.sh @@ -0,0 +1,44 @@ +VERSION=8.42 +TAR=https://ftp.pcre.org/pub/pcre/pcre-$VERSION.tar.bz2 +BUILD_DEPENDS=() + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib" + export LIBS="-Wl,--whole-archive -lpthread -Wl,--no-whole-archive" + ./configure \ + --host=${HOST} \ + --prefix=/ \ + --disable-shared \ + --enable-static + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + rm -f "$dest/lib/"*.la + skip=1 +} diff --git a/recipes/pcre/redox.patch b/recipes/pcre/redox.patch new file mode 100644 index 00000000..6e438bac --- /dev/null +++ b/recipes/pcre/redox.patch @@ -0,0 +1,17 @@ +diff -ruwN source/pcretest.c source-new/pcretest.c +--- source/pcretest.c 2017-06-13 10:49:46.000000000 -0600 ++++ source-new/pcretest.c 2019-01-05 11:04:15.198224299 -0700 +@@ -3168,7 +3168,7 @@ + ((stack_size = get_value((pcre_uint8 *)argv[op+1], &endptr)), + *endptr == 0)) + { +-#if defined(_WIN32) || defined(WIN32) || defined(__minix) || defined(NATIVE_ZOS) || defined(__VMS) ++#if defined(_WIN32) || defined(WIN32) || defined(__minix) || defined(NATIVE_ZOS) || defined(__VMS) || defined(__redox__) + printf("PCRE: -S not supported on this OS\n"); + exit(1); + #else +@@ -5770,4 +5770,3 @@ + } + + /* End of pcretest.c */ +- From ca67cf226d1d8fc46f559ca2734fbc1412a27c0c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 5 Jan 2019 14:33:50 -0700 Subject: [PATCH 0556/3180] Add glib --- recipes/glib/recipe.sh | 44 ++++ recipes/glib/redox.patch | 541 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 585 insertions(+) create mode 100644 recipes/glib/recipe.sh create mode 100644 recipes/glib/redox.patch diff --git a/recipes/glib/recipe.sh b/recipes/glib/recipe.sh new file mode 100644 index 00000000..cd40d7bd --- /dev/null +++ b/recipes/glib/recipe.sh @@ -0,0 +1,44 @@ +VERSION=2.59.0 +TAR=https://download.gnome.org/sources/glib/${VERSION%.*}/glib-$VERSION.tar.xz +BUILD_DEPENDS=(gettext libffi libiconv pcre zlib) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib" + glib_cv_stack_grows=no ./autogen.sh \ + --host=${HOST} \ + --prefix=/ \ + --disable-shared \ + --enable-static + sed -i 's/#define HAVE_SYS_RESOURCE_H 1/#undef HAVE_SYS_RESOURCE_H/' config.h + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + rm -f "$dest/lib/"*.la + skip=1 +} diff --git a/recipes/glib/redox.patch b/recipes/glib/redox.patch new file mode 100644 index 00000000..61b76956 --- /dev/null +++ b/recipes/glib/redox.patch @@ -0,0 +1,541 @@ +diff -ruwN source/configure.ac source-new/configure.ac +--- source/configure.ac 2018-12-23 06:10:41.000000000 -0700 ++++ source-new/configure.ac 2019-01-05 10:59:22.924421938 -0700 +@@ -981,7 +981,7 @@ + [int qclass = C_IN;])], + [AC_MSG_RESULT([yes]) + NAMESER_COMPAT_INCLUDE="#include "], +- [AC_MSG_ERROR([could not compile test program either way])])])]) ++ [AC_MSG_WARN([could not compile test program either way])])])]) + AC_SUBST(NAMESER_COMPAT_INCLUDE) + + # We can't just use AC_CHECK_FUNC/AC_CHECK_LIB here. Bug 586150 +@@ -1009,7 +1009,7 @@ + [res_query("test", 0, 0, (void *)0, 0);], + [AC_MSG_RESULT([in -lbind]) + NETWORK_LIBS="-lbind $NETWORK_LIBS"], +- [AC_MSG_ERROR(not found)])]) ++ [AC_MSG_WARN(not found)])]) + LIBS="$save_libs"]) + AC_CHECK_FUNC(socket, :, AC_CHECK_LIB(socket, socket, + [NETWORK_LIBS="-lsocket $NETWORK_LIBS"], +diff -ruwN source/gio/ginetsocketaddress.c source-new/gio/ginetsocketaddress.c +--- source/gio/ginetsocketaddress.c 2018-12-23 06:10:41.000000000 -0700 ++++ source-new/gio/ginetsocketaddress.c 2019-01-05 12:05:33.754323562 -0700 +@@ -407,14 +407,21 @@ + g_inet_socket_address_new_from_string (const char *address, + guint port) + { ++#if !defined(__redox__) + static struct addrinfo *hints, hints_struct; ++#endif + GSocketAddress *saddr; + GInetAddress *iaddr; ++#if !defined(__redox__) + struct addrinfo *res; ++#endif + gint status; + + if (strchr (address, ':')) + { ++#if defined(__redox__) ++ saddr = NULL; ++#else + /* IPv6 address (or it's invalid). We use getaddrinfo() because + * it will handle parsing a scope_id as well. + */ +@@ -442,6 +449,7 @@ + saddr = NULL; + + freeaddrinfo (res); ++#endif + } + else + { +diff -ruwN source/gio/glocalfileinfo.c source-new/gio/glocalfileinfo.c +--- source/gio/glocalfileinfo.c 2018-12-23 06:10:41.000000000 -0700 ++++ source-new/gio/glocalfileinfo.c 2019-01-05 14:18:02.435425946 -0700 +@@ -1217,11 +1217,13 @@ + lookup_gid_name (gid_t gid) + { + char *name; ++#if !defined(__redox__) + #if defined (HAVE_GETGRGID_R) + char buffer[4096]; + struct group gbuf; + #endif + struct group *gbufp; ++#endif + + if (gid_cache == NULL) + gid_cache = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify)g_free); +@@ -1231,6 +1233,7 @@ + if (name) + return name; + ++#if !defined(__redox__) + #if defined (HAVE_GETGRGID_R) + getgrgid_r (gid, &gbuf, buffer, sizeof(buffer), &gbufp); + #else +@@ -1242,6 +1245,7 @@ + gbufp->gr_name[0] != 0) + name = convert_pwd_string_to_utf8 (gbufp->gr_name); + else ++#endif + name = g_strdup_printf("%d", (int)gid); + + g_hash_table_replace (gid_cache, GINT_TO_POINTER (gid), name); +diff -ruwN source/gio/gnetworking.h.in source-new/gio/gnetworking.h.in +--- source/gio/gnetworking.h.in 2018-12-23 06:10:41.000000000 -0700 ++++ source-new/gio/gnetworking.h.in 2019-01-05 11:43:10.527612479 -0700 +@@ -40,14 +40,20 @@ + + #include + #include ++#if !defined(__redox__) + #include + #include ++#endif + #include + #include ++#if !defined(__redox__) + #include ++#endif + + #include ++#if !defined(__redox__) + #include ++#endif + @NAMESER_COMPAT_INCLUDE@ + + #ifndef T_SRV +diff -ruwN source/gio/gresolver.c source-new/gio/gresolver.c +--- source/gio/gresolver.c 2018-12-23 06:10:41.000000000 -0700 ++++ source-new/gio/gresolver.c 2019-01-05 12:51:56.587550105 -0700 +@@ -342,7 +342,7 @@ + { + g_set_error (error, G_RESOLVER_ERROR, G_RESOLVER_ERROR_NOT_FOUND, + _("Error resolving “%s”: %s"), +- hostname, gai_strerror (EAI_NONAME)); ++ hostname, "EAI_NONAME"); + return TRUE; + } + +diff -ruwN source/gio/gsocket.c source-new/gio/gsocket.c +--- source/gio/gsocket.c 2018-12-23 06:10:41.000000000 -0700 ++++ source-new/gio/gsocket.c 2019-01-05 13:34:30.178211038 -0700 +@@ -1539,6 +1539,7 @@ + + g_return_val_if_fail (G_IS_SOCKET (socket), 0); + ++#if !defined(__redox__) + if (socket->priv->family == G_SOCKET_FAMILY_IPV4) + { + g_socket_get_option (socket, IPPROTO_IP, IP_TTL, +@@ -1550,6 +1551,7 @@ + &value, &error); + } + else ++#endif + g_return_val_if_reached (0); + + if (error) +@@ -1580,6 +1582,7 @@ + + g_return_if_fail (G_IS_SOCKET (socket)); + ++#if !defined(__redox__) + if (socket->priv->family == G_SOCKET_FAMILY_IPV4) + { + g_socket_set_option (socket, IPPROTO_IP, IP_TTL, +@@ -1593,6 +1596,7 @@ + ttl, &error); + } + else ++#endif + g_return_if_reached (); + + if (error) +@@ -1688,6 +1692,7 @@ + + g_return_val_if_fail (G_IS_SOCKET (socket), FALSE); + ++#if !defined(__redox__) + if (socket->priv->family == G_SOCKET_FAMILY_IPV4) + { + g_socket_get_option (socket, IPPROTO_IP, IP_MULTICAST_LOOP, +@@ -1699,6 +1704,7 @@ + &value, &error); + } + else ++#endif + g_return_val_if_reached (FALSE); + + if (error) +@@ -1733,6 +1739,7 @@ + + loopback = !!loopback; + ++#if !defined(__redox__) + if (socket->priv->family == G_SOCKET_FAMILY_IPV4) + { + g_socket_set_option (socket, IPPROTO_IP, IP_MULTICAST_LOOP, +@@ -1746,6 +1753,7 @@ + loopback, &error); + } + else ++#endif + g_return_if_reached (); + + if (error) +@@ -1777,6 +1785,7 @@ + + g_return_val_if_fail (G_IS_SOCKET (socket), 0); + ++#if !defined(__redox__) + if (socket->priv->family == G_SOCKET_FAMILY_IPV4) + { + g_socket_get_option (socket, IPPROTO_IP, IP_MULTICAST_TTL, +@@ -1788,6 +1797,7 @@ + &value, &error); + } + else ++#endif + g_return_val_if_reached (FALSE); + + if (error) +@@ -1819,6 +1829,7 @@ + + g_return_if_fail (G_IS_SOCKET (socket)); + ++#if !defined(__redox__) + if (socket->priv->family == G_SOCKET_FAMILY_IPV4) + { + g_socket_set_option (socket, IPPROTO_IP, IP_MULTICAST_TTL, +@@ -1832,6 +1843,7 @@ + ttl, &error); + } + else ++#endif + g_return_if_reached (); + + if (error) +@@ -2191,6 +2203,7 @@ + return FALSE; + + native_addr = g_inet_address_to_bytes (group); ++#if !defined(__redox__) + if (g_inet_address_get_family (group) == G_SOCKET_FAMILY_IPV4) + { + #ifdef HAVE_IP_MREQN +@@ -2252,6 +2265,7 @@ + &mc_req_ipv6, sizeof (mc_req_ipv6)); + } + else ++#endif + g_return_val_if_reached (FALSE); + + if (result < 0) +@@ -2912,6 +2926,7 @@ + if (!check_timeout (socket, error)) + return FALSE; + ++#if !defined(__redox__) + if (!g_socket_get_option (socket, SOL_SOCKET, SO_ERROR, &value, error)) + { + g_prefix_error (error, _("Unable to get pending error: ")); +@@ -2929,6 +2944,7 @@ + } + return FALSE; + } ++#endif + + socket->priv->connected_read = TRUE; + socket->priv->connected_write = TRUE; +@@ -3001,7 +3017,7 @@ + { + #ifdef G_OS_WIN32 + if (ioctlsocket (socket->priv->fd, FIONREAD, &avail) < 0) +-#else ++#elif !defined(__redox__) + if (ioctl (socket->priv->fd, FIONREAD, &avail) < 0) + #endif + avail = -1; +@@ -4316,7 +4332,7 @@ + #endif + } + +-#ifndef G_OS_WIN32 ++#if !defined(G_OS_WIN32) && !defined(__redox__) + + /* Unfortunately these have to be macros rather than inline functions due to + * using alloca(). */ +@@ -4673,7 +4689,9 @@ + vectors = &one_vector; + } + +-#ifndef G_OS_WIN32 ++#if defined(__redox__) ++ return -1; ++#elif !defined(G_OS_WIN32) + { + GOutputMessage output_message; + struct msghdr msg; +@@ -5138,7 +5156,9 @@ + vectors = &one_vector; + } + +-#ifndef G_OS_WIN32 ++#if defined(__redox__) ++ return -1; ++#elif !defined(G_OS_WIN32) + { + GInputMessage input_message; + struct msghdr msg; +@@ -5910,4 +5930,3 @@ + #endif + return FALSE; + } +- +diff -ruwN source/gio/gthreadedresolver.c source-new/gio/gthreadedresolver.c +--- source/gio/gthreadedresolver.c 2018-12-23 06:10:41.000000000 -0700 ++++ source-new/gio/gthreadedresolver.c 2019-01-05 13:46:36.830327532 -0700 +@@ -49,6 +49,7 @@ + { + switch (err) + { ++#if !defined(__redox__) + case EAI_FAIL: + #if defined(EAI_NODATA) && (EAI_NODATA != EAI_NONAME) + case EAI_NODATA: +@@ -58,7 +59,7 @@ + + case EAI_AGAIN: + return G_RESOLVER_ERROR_TEMPORARY_FAILURE; +- ++#endif + default: + return G_RESOLVER_ERROR_INTERNAL; + } +@@ -92,6 +93,12 @@ + gpointer task_data, + GCancellable *cancellable) + { ++#if defined(__redox__) ++ g_task_return_new_error (task, ++ G_RESOLVER_ERROR, ++ G_RESOLVER_ERROR_INTERNAL, ++ _("do_lookup_by_name not implemented on Redox")); ++#else + LookupData *lookup_data = task_data; + const char *hostname = lookup_data->hostname; + struct addrinfo *res = NULL; +@@ -163,6 +170,7 @@ + + if (res) + freeaddrinfo (res); ++#endif + } + + static GList * +@@ -289,6 +297,12 @@ + gpointer task_data, + GCancellable *cancellable) + { ++#if defined(__redox__) ++ g_task_return_new_error (task, ++ G_RESOLVER_ERROR, ++ G_RESOLVER_ERROR_INTERNAL, ++ _("do_lookup_by_address not implemented on Redox")); ++#else + GInetAddress *address = task_data; + struct sockaddr_storage sockaddr; + gsize sockaddr_size; +@@ -319,6 +333,7 @@ + gai_strerror (retval)); + g_free (phys); + } ++#endif + } + + static gchar * +@@ -369,7 +384,7 @@ + } + + +-#if defined(G_OS_UNIX) ++#if defined(G_OS_UNIX) && !defined(__redox__) + + #if defined __BIONIC__ && !defined BIND_4_COMPAT + /* Copy from bionic/libc/private/arpa_nameser_compat.h +@@ -920,6 +935,12 @@ + gpointer task_data, + GCancellable *cancellable) + { ++#if defined(__redox__) ++ g_task_return_new_error (task, ++ G_RESOLVER_ERROR, ++ G_RESOLVER_ERROR_INTERNAL, ++ _("do_lookup_records not implemented on Redox")); ++#else + LookupRecordsData *lrd = task_data; + GList *records; + GError *error = NULL; +@@ -1005,6 +1026,7 @@ + g_task_return_pointer (task, records, (GDestroyNotify) free_records); + else + g_task_return_error (task, error); ++#endif + } + + static GList * +diff -ruwN source/gio/gunixfdmessage.c source-new/gio/gunixfdmessage.c +--- source/gio/gunixfdmessage.c 2018-12-23 06:10:41.000000000 -0700 ++++ source-new/gio/gunixfdmessage.c 2019-01-05 14:22:53.097587821 -0700 +@@ -53,6 +53,10 @@ + #include "gnetworking.h" + #include "gioerror.h" + ++#if defined(__redox__) ++#define SCM_RIGHTS 1 ++#endif ++ + struct _GUnixFDMessagePrivate + { + GUnixFDList *list; +diff -ruwN source/gio/gunixmounts.c source-new/gio/gunixmounts.c +--- source/gio/gunixmounts.c 2018-12-23 06:10:41.000000000 -0700 ++++ source-new/gio/gunixmounts.c 2019-01-05 14:25:31.846709810 -0700 +@@ -949,6 +949,21 @@ + return return_list; + } + ++/* Redox {{{2 */ ++#elif defined(__redox__) ++ ++static const char * ++get_mtab_monitor_file (void) ++{ ++ return NULL; ++} ++ ++static GList * ++_g_get_unix_mounts (void) ++{ ++ return NULL; ++} ++ + /* Common code {{{2 */ + #else + #error No _g_get_unix_mounts() implementation for system +@@ -1465,7 +1480,7 @@ + return g_list_reverse (return_list); + } + /* Interix {{{2 */ +-#elif defined(__INTERIX) ++#elif defined(__INTERIX) || defined(__redox__) + static GList * + _g_get_unix_mount_points (void) + { +diff -ruwN source/glib/glib-init.c source-new/glib/glib-init.c +--- source/glib/glib-init.c 2018-12-23 06:10:41.000000000 -0700 ++++ source-new/glib/glib-init.c 2019-01-05 11:09:03.083866992 -0700 +@@ -31,6 +31,10 @@ + #include + #include + ++#if defined(__redox__) ++int strcasecmp(const char *s1, const char *s2); ++#endif ++ + /* This seems as good a place as any to make static assertions about platform + * assumptions we make throughout GLib. */ + +diff -ruwN source/glib/gmain.c source-new/glib/gmain.c +--- source/glib/gmain.c 2018-12-23 06:10:41.000000000 -0700 ++++ source-new/glib/gmain.c 2019-01-05 11:10:02.228193887 -0700 +@@ -5891,13 +5891,21 @@ + sigset_t all; + + sigfillset (&all); ++ #if defined(__redox__) ++ sigprocmask (SIG_SETMASK, &all, &prev_mask); ++ #else + pthread_sigmask (SIG_SETMASK, &all, &prev_mask); + #endif ++#endif + glib_worker_context = g_main_context_new (); + g_thread_new ("gmain", glib_worker_main, NULL); + #ifdef G_OS_UNIX ++ #if defined(__redox__) ++ sigprocmask (SIG_SETMASK, &prev_mask, NULL); ++ #else + pthread_sigmask (SIG_SETMASK, &prev_mask, NULL); + #endif ++#endif + g_once_init_leave (&initialised, TRUE); + } + +diff -ruwN source/glib/gslice.c source-new/glib/gslice.c +--- source/glib/gslice.c 2018-12-23 06:10:41.000000000 -0700 ++++ source-new/glib/gslice.c 2019-01-05 11:11:23.896640840 -0700 +@@ -405,6 +405,8 @@ + GetSystemInfo (&system_info); + sys_page_size = system_info.dwPageSize; + } ++#elif defined(__redox__) ++ sys_page_size = getpagesize(); + #else + sys_page_size = sysconf (_SC_PAGESIZE); /* = sysconf (_SC_PAGE_SIZE); = getpagesize(); */ + #endif +diff -ruwN source/glib/gspawn.c source-new/glib/gspawn.c +--- source/glib/gspawn.c 2018-12-23 06:10:41.000000000 -0700 ++++ source-new/glib/gspawn.c 2019-01-05 11:20:25.669130455 -0700 +@@ -1217,7 +1217,11 @@ + open_max = rl.rlim_max; + else + #endif ++#if defined(__redox__) ++ open_max = INT_MAX; ++#else + open_max = sysconf (_SC_OPEN_MAX); ++#endif + + for (fd = 0; fd < open_max; fd++) + if ((res = cb (data, fd)) != 0) +diff -ruwN source/glib/gstrfuncs.c source-new/glib/gstrfuncs.c +--- source/glib/gstrfuncs.c 2018-12-23 06:10:41.000000000 -0700 ++++ source-new/glib/gstrfuncs.c 2019-01-05 11:11:59.452834000 -0700 +@@ -55,6 +55,12 @@ + #include "glibintl.h" + + ++#if defined(__redox__) ++int strcasecmp(const char *s1, const char *s2); ++int strncasecmp(const char *s1, const char *s2, size_t n); ++#endif ++ ++ + /** + * SECTION:string_utils + * @title: String Utility Functions +diff -ruwN source/glib/gthread-posix.c source-new/glib/gthread-posix.c +--- source/glib/gthread-posix.c 2018-12-23 06:10:41.000000000 -0700 ++++ source-new/glib/gthread-posix.c 2019-01-05 11:40:57.454759289 -0700 +@@ -660,6 +660,7 @@ + #elif defined (HAVE_PTHREAD_CONDATTR_SETCLOCK) && defined (CLOCK_MONOTONIC) + if G_UNLIKELY ((status = pthread_condattr_setclock (&attr, CLOCK_MONOTONIC)) != 0) + g_thread_abort (status, "pthread_condattr_setclock"); ++#elif defined(__redox__) + #else + #error Cannot support GCond on your platform. + #endif +@@ -896,7 +897,7 @@ + if ((status = pthread_cond_timedwait_relative_np (g_cond_get_impl (cond), g_mutex_get_impl (mutex), &ts)) == 0) + return TRUE; + } +-#elif defined (HAVE_PTHREAD_CONDATTR_SETCLOCK) && defined (CLOCK_MONOTONIC) ++#elif (defined (HAVE_PTHREAD_CONDATTR_SETCLOCK) && defined (CLOCK_MONOTONIC)) || defined(__redox__) + /* This is the exact check we used during init to set the clock to + * monotonic, so if we're in this branch, timedwait() will already be + * expecting a monotonic clock. From 9445ecf824c97cf5ab01defabcbc21af0e69fe25 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 5 Jan 2019 15:40:35 -0700 Subject: [PATCH 0557/3180] Add gstreamer --- recipes/gstreamer/recipe.sh | 48 +++++++++++++++++++++++++++++++++++ recipes/gstreamer/redox.patch | 24 ++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 recipes/gstreamer/recipe.sh create mode 100644 recipes/gstreamer/redox.patch diff --git a/recipes/gstreamer/recipe.sh b/recipes/gstreamer/recipe.sh new file mode 100644 index 00000000..2b6c1dad --- /dev/null +++ b/recipes/gstreamer/recipe.sh @@ -0,0 +1,48 @@ +VERSION=1.14.4 +TAR=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-$VERSION.tar.xz +BUILD_DEPENDS=(gettext glib libffi libiconv pcre zlib) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib" + export GLIB_GENMARSHAL="$(which glib-genmarshal)" + export GLIB_MKENUMS="$(which glib-mkenums)" + ./configure \ + --host=${HOST} \ + --prefix=/ \ + --disable-shared \ + --enable-static \ + --disable-benchmarks \ + --disable-examples \ + --disable-tests + make -j"$(nproc)" V=1 + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + rm -f "$dest/lib/"*.la + skip=1 +} diff --git a/recipes/gstreamer/redox.patch b/recipes/gstreamer/redox.patch new file mode 100644 index 00000000..e2509f79 --- /dev/null +++ b/recipes/gstreamer/redox.patch @@ -0,0 +1,24 @@ +diff -ruwN source/gst/gstpoll.c source-new/gst/gstpoll.c +--- source/gst/gstpoll.c 2018-03-23 14:44:36.000000000 -0600 ++++ source-new/gst/gstpoll.c 2019-01-05 15:17:35.861961634 -0700 +@@ -85,6 +85,10 @@ + #include + #endif + ++#if defined(__redox__) ++#include ++#endif ++ + #ifdef G_OS_WIN32 + # ifndef EWOULDBLOCK + # define EWOULDBLOCK EAGAIN /* This is just to placate gcc */ +@@ -689,7 +693,9 @@ + { + gint control_sock[2]; + ++#if !defined(__redox__) + if (socketpair (PF_UNIX, SOCK_STREAM, 0, control_sock) < 0) ++#endif + goto no_socket_pair; + + nset->control_read_fd.fd = control_sock[0]; From 1101a4c2164370623cbaa7afc3a0326109dbf569 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 5 Jan 2019 16:49:35 -0700 Subject: [PATCH 0558/3180] Add harfbuzz --- recipes/harfbuzz/recipe.sh | 48 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 recipes/harfbuzz/recipe.sh diff --git a/recipes/harfbuzz/recipe.sh b/recipes/harfbuzz/recipe.sh new file mode 100644 index 00000000..06f617b3 --- /dev/null +++ b/recipes/harfbuzz/recipe.sh @@ -0,0 +1,48 @@ +VERSION=2.3.0 +TAR=https://www.freedesktop.org/software/harfbuzz/release/harfbuzz-$VERSION.tar.bz2 +BUILD_DEPENDS=(freetype libpng zlib) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib" + #wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + FREETYPE_CFLAGS="$("${PKG_CONFIG}" --cflags freetype2)" + FREETYPE_LIBS="$("${PKG_CONFIG}" --libs freetype2)" + ./configure \ + --host=${HOST} \ + --prefix=/ \ + --disable-shared \ + --enable-static \ + --with-freetype=yes \ + --with-icu=no + make -j"$(nproc)" V=1 + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + rm -f "$dest/lib/"*.la + skip=1 +} From a49ca24a15c10a19acbf6f7d4f0a55adb2044f09 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 5 Jan 2019 17:42:32 -0700 Subject: [PATCH 0559/3180] WIP: Servo recipe --- recipes/servo/recipe.sh | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 recipes/servo/recipe.sh diff --git a/recipes/servo/recipe.sh b/recipes/servo/recipe.sh new file mode 100644 index 00000000..ca27d281 --- /dev/null +++ b/recipes/servo/recipe.sh @@ -0,0 +1,37 @@ +GIT=https://gitlab.redox-os.org/redox-os/servo.git +GIT_UPSTREAM=https://github.com/servo/servo.git +BRANCH=redox +BUILD_DEPENDS=(freetype gettext glib gstreamer harfbuzz libffi libiconv libpng openssl pcre zlib) +PREPARE_COPY=0 + +function recipe_version { + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + source="$(realpath ../source)" + unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP + "$source/mach" build --target "${TARGET}" --release --with-frame-pointer # --jobs "$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + echo "skipping clean" + skip=1 +} + +function recipe_stage { + echo "skipping stage" + skip=1 +} From 16e482c5af93ad67d61fbc1feae1192f0d381fd2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 6 Jan 2019 15:30:29 -0700 Subject: [PATCH 0560/3180] Fix pixman tests --- recipes/pixman/redox.patch | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 recipes/pixman/redox.patch diff --git a/recipes/pixman/redox.patch b/recipes/pixman/redox.patch new file mode 100644 index 00000000..953a7fd6 --- /dev/null +++ b/recipes/pixman/redox.patch @@ -0,0 +1,12 @@ +diff -ruwN source/test/fence-image-self-test.c source-new/test/fence-image-self-test.c +--- source/test/fence-image-self-test.c 2018-04-11 06:07:58.000000000 -0600 ++++ source-new/test/fence-image-self-test.c 2019-01-06 15:29:38.878720123 -0700 +@@ -29,7 +29,7 @@ + #include "utils.h" + + +-#if FENCE_MALLOC_ACTIVE && defined (HAVE_SIGACTION) ++#if FENCE_MALLOC_ACTIVE && defined (HAVE_SIGACTION) && !defined(__redox__) + + #include + #include From ef52e78eccd59530b011b5aa6aafb291fe2b059f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 6 Jan 2019 16:20:08 -0700 Subject: [PATCH 0561/3180] Add glium, fix recipes --- recipes/glium/recipe.sh | 24 ++++++++++++++++++++++++ recipes/glutin/recipe.sh | 10 ++++------ recipes/hematite/recipe.sh | 2 +- recipes/nasm/recipe.sh | 5 ++--- recipes/osdemo/recipe.sh | 4 ++-- recipes/pixman/recipe.sh | 6 +++++- 6 files changed, 38 insertions(+), 13 deletions(-) create mode 100644 recipes/glium/recipe.sh diff --git a/recipes/glium/recipe.sh b/recipes/glium/recipe.sh new file mode 100644 index 00000000..1ba95196 --- /dev/null +++ b/recipes/glium/recipe.sh @@ -0,0 +1,24 @@ +GIT=https://gitlab.redox-os.org/redox-os/glium.git +GIT_UPSTREAM=https://github.com/glium/glium.git +BUILD_DEPENDS=(llvm mesa zlib) +BRANCH=redox +CARGOFLAGS="--example teapot" + +function recipe_build { + sysroot="$(realpath ../sysroot)" + cp -p "$ROOT/Xargo.toml" "Xargo.toml" + set -x + xargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ + -- \ + -L "${sysroot}/lib" \ + -C link-args="$("${PKG_CONFIG}" --libs osmesa) -lglapi -lz -lstdc++ -lc -lgcc" + set +x + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + mkdir -pv "$dest/bin" + cp -v "target/${TARGET}/release/examples/teapot" "$dest/bin/glium" + skip=1 +} diff --git a/recipes/glutin/recipe.sh b/recipes/glutin/recipe.sh index fe95257f..bd2beb51 100644 --- a/recipes/glutin/recipe.sh +++ b/recipes/glutin/recipe.sh @@ -1,20 +1,18 @@ GIT=https://gitlab.redox-os.org/redox-os/glutin.git GIT_UPSTREAM=https://github.com/tomaka/glutin.git -BUILD_DEPENDS=(mesa zlib) +BUILD_DEPENDS=(llvm mesa zlib) BRANCH=redox CARGOFLAGS="--example window" function recipe_build { sysroot="$(realpath ../sysroot)" cp -p "$ROOT/Xargo.toml" "Xargo.toml" + set -x xargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ -- \ -L "${sysroot}/lib" \ - -l OSMesa \ - -l glapi \ - -l z \ - -l stdc++ \ - -C link-args="-Wl,--whole-archive -lpthread -Wl,--no-whole-archive" + -C link-args="$("${PKG_CONFIG}" --libs osmesa) -lglapi -lz -lstdc++ -lc -lgcc" + set +x skip=1 } diff --git a/recipes/hematite/recipe.sh b/recipes/hematite/recipe.sh index 7dfcbbd6..14014f56 100644 --- a/recipes/hematite/recipe.sh +++ b/recipes/hematite/recipe.sh @@ -1,6 +1,6 @@ GIT=https://gitlab.redox-os.org/redox-os/hematite.git GIT_UPSTREAM=https://github.com/PistonDevelopers/hematite.git -BUILD_DEPENDS=(mesa llvm zlib) +BUILD_DEPENDS=(llvm mesa zlib) BRANCH=redox function recipe_build { diff --git a/recipes/nasm/recipe.sh b/recipes/nasm/recipe.sh index 46150a34..de7fa374 100644 --- a/recipes/nasm/recipe.sh +++ b/recipes/nasm/recipe.sh @@ -1,4 +1,4 @@ -VERSION=2.13.01 +VERSION=2.14.02 TAR=http://www.nasm.us/pub/nasm/releasebuilds/$VERSION/nasm-$VERSION.tar.gz function recipe_version { @@ -29,8 +29,7 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" - make INSTALLROOT="$dest" install - rm -rf "$dest"/share + make install DESTDIR="$dest" find "$dest"/bin -exec ${HOST}-strip {} ';' 2> /dev/null skip=1 } diff --git a/recipes/osdemo/recipe.sh b/recipes/osdemo/recipe.sh index f14b722a..37599034 100644 --- a/recipes/osdemo/recipe.sh +++ b/recipes/osdemo/recipe.sh @@ -1,4 +1,4 @@ -BUILD_DEPENDS=(liborbital mesa mesa_glu zlib) +BUILD_DEPENDS=(liborbital llvm mesa mesa_glu zlib) function recipe_version { printf "1.0.0" @@ -19,7 +19,7 @@ function recipe_prepare { function recipe_build { sysroot="$(realpath ../sysroot)" set -x - "${CXX}" -I "$sysroot/include" -L "$sysroot/lib" osdemo.c -o osdemo -lorbital -lOSMesa -lGLU -lglapi -lz -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -lm + "${CXX}" -O2 -I "$sysroot/include" -L "$sysroot/lib" osdemo.c -o osdemo -lorbital $("${PKG_CONFIG}" --libs glu) -lglapi -lz set +x skip=1 } diff --git a/recipes/pixman/recipe.sh b/recipes/pixman/recipe.sh index 88274193..617827dc 100755 --- a/recipes/pixman/recipe.sh +++ b/recipes/pixman/recipe.sh @@ -13,7 +13,11 @@ function recipe_update { function recipe_build { sysroot="$(realpath ../sysroot)" - ./configure --host=${HOST} --prefix=/ + ./configure \ + --host=${HOST} \ + --prefix=/ \ + --disable-shared \ + --enable-static make -j"$(nproc)" skip=1 } From dbe123670454c563bd124ca2487f9c4425fb3112 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 6 Jan 2019 16:52:17 -0700 Subject: [PATCH 0562/3180] Fixes for gigalomania and glib --- recipes/gigalomania/recipe.sh | 2 +- recipes/glib/recipe.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/gigalomania/recipe.sh b/recipes/gigalomania/recipe.sh index 5a215443..cf8e7225 100644 --- a/recipes/gigalomania/recipe.sh +++ b/recipes/gigalomania/recipe.sh @@ -1,5 +1,5 @@ VERSION=0.27 -GIT=https://github.com/fabiao/gigalomania +GIT=https://gitlab.redox-os.org/redox-os/gigalomania.git BRANCH=master BUILD_DEPENDS=(sdl_mixer sdl_image sdl liborbital libpng libjpeg zlib) diff --git a/recipes/glib/recipe.sh b/recipes/glib/recipe.sh index cd40d7bd..fefd4911 100644 --- a/recipes/glib/recipe.sh +++ b/recipes/glib/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" - glib_cv_stack_grows=no ./autogen.sh \ + glib_cv_stack_grows=no glib_cv_uscore=no ./autogen.sh \ --host=${HOST} \ --prefix=/ \ --disable-shared \ From fc6c997e4ba7ff6a8e15c9bc4aeb202815287745 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 6 Jan 2019 16:56:30 -0700 Subject: [PATCH 0563/3180] Fix jansson recipe --- recipes/jansson/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/jansson/recipe.sh b/recipes/jansson/recipe.sh index b40c9906..82799a01 100644 --- a/recipes/jansson/recipe.sh +++ b/recipes/jansson/recipe.sh @@ -32,6 +32,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" ${MAKEFLAGS} install + make DESTDIR="$dest" install skip=1 } From 917dcda07fba014b40e68033188f9254eb130fc3 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 7 Jan 2019 17:36:36 -0700 Subject: [PATCH 0564/3180] Remove patches for linking pthreads --- bin/x86_64-unknown-redox-llvm-config | 2 +- recipes/cairodemo/recipe.sh | 2 +- recipes/freeciv/recipe.sh | 1 - recipes/gcc/recipe.sh | 1 - recipes/git/recipe.sh | 2 +- recipes/libc-bench/redox.patch | 14 +++++----- recipes/llvm/recipe.sh | 2 +- recipes/mesa/recipe.sh | 1 - recipes/openjazz/recipe.sh | 2 +- recipes/openttd/01_redox.patch | 29 +++++++------------- recipes/pcre/recipe.sh | 1 - recipes/sdl/redox.patch | 13 ++++----- recipes/sdl2/redox.patch | 41 ++++++++++++++-------------- 13 files changed, 48 insertions(+), 63 deletions(-) diff --git a/bin/x86_64-unknown-redox-llvm-config b/bin/x86_64-unknown-redox-llvm-config index e17c23b9..766e8554 100755 --- a/bin/x86_64-unknown-redox-llvm-config +++ b/bin/x86_64-unknown-redox-llvm-config @@ -111,7 +111,7 @@ elif args == ["--ldflags"]: elif args == ["--libdir"]: print(prefix + "/lib") elif args == ["--system-libs"]: - print("-Wl,--whole-archive -lpthread -Wl,--no-whole-archive -lm") + print("-lpthread -lm") elif args == ["--targets-built"]: print("X86") elif args[0] == "--libs": diff --git a/recipes/cairodemo/recipe.sh b/recipes/cairodemo/recipe.sh index 628d53ec..ff3125fb 100755 --- a/recipes/cairodemo/recipe.sh +++ b/recipes/cairodemo/recipe.sh @@ -21,7 +21,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" set -x - "${CXX}" -I "$sysroot/include" -L "$sysroot/lib" cairodemo.c -o cairodemo -lorbital -lcairo -lpixman-1 -lfreetype -lpng -lz -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -lm + "${CXX}" -I "$sysroot/include" -L "$sysroot/lib" cairodemo.c -o cairodemo -lorbital -lcairo -lpixman-1 -lfreetype -lpng -lz -lm set +x skip=1 } diff --git a/recipes/freeciv/recipe.sh b/recipes/freeciv/recipe.sh index 711b1406..17970711 100644 --- a/recipes/freeciv/recipe.sh +++ b/recipes/freeciv/recipe.sh @@ -17,7 +17,6 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" - export LIBS="-Wl,--whole-archive -lpthread -Wl,--no-whole-archive" ./configure \ --host="$HOST" \ --prefix='' \ diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index 5aab6e2b..b9715cf9 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -26,7 +26,6 @@ function recipe_build { ln -sf "$sysroot/include" "$sysroot/usr/include" ln -sf "$sysroot/lib" "$sysroot/usr/lib" - export LIBS='-Wl,--whole-archive -lpthread -Wl,--no-whole-archive' ./configure \ --host=${HOST} \ --target=${HOST} \ diff --git a/recipes/git/recipe.sh b/recipes/git/recipe.sh index cac2a4a7..fe275cc5 100644 --- a/recipes/git/recipe.sh +++ b/recipes/git/recipe.sh @@ -17,7 +17,7 @@ function recipe_update { function recipe_build { sysroot="$(realpath ../sysroot)" - export LDFLAGS="-L$sysroot/lib -Wl,--whole-archive -lpthread -Wl,--no-whole-archive" + export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" ./configure --host=${HOST} --prefix=/ ac_cv_fread_reads_directories=yes ac_cv_snprintf_returns_bogus=yes ac_cv_lib_curl_curl_global_init=yes CURL_CONFIG=no make ${MAKEFLAGS} -j"$(nproc)" diff --git a/recipes/libc-bench/redox.patch b/recipes/libc-bench/redox.patch index bbeee671..475c7472 100644 --- a/recipes/libc-bench/redox.patch +++ b/recipes/libc-bench/redox.patch @@ -2,13 +2,13 @@ diff -ruw source/Makefile source-new/Makefile --- source/Makefile 2011-01-31 00:13:00.000000000 -0700 +++ source-new/Makefile 2018-12-25 09:07:37.564520567 -0700 @@ -4,7 +4,7 @@ - + CFLAGS = -Os LDFLAGS = -static -LIBS = -lpthread -lrt -lpthread -+LIBS = -Wl,--whole-archive -lpthread -Wl,--no-whole-archive - - ++LIBS = -lpthread + + all: libc-bench diff -ruw source/utf8.c source-new/utf8.c --- source/utf8.c 2011-01-24 20:08:38.000000000 -0700 @@ -19,7 +19,7 @@ diff -ruw source/utf8.c source-new/utf8.c #include -#include +//#include - + size_t b_utf8_bigbuf(void *dummy) { @@ -18,7 +18,7 @@ @@ -28,7 +28,7 @@ diff -ruw source/utf8.c source-new/utf8.c || setlocale(LC_CTYPE, "fr_FR-8"); - if (strcmp(nl_langinfo(CODESET), "UTF-8")) return -1; + //if (strcmp(nl_langinfo(CODESET), "UTF-8")) return -1; - + buf = malloc(500000); wbuf = malloc(500000*sizeof(wchar_t)); @@ -56,7 +56,7 @@ @@ -37,6 +37,6 @@ diff -ruw source/utf8.c source-new/utf8.c || setlocale(LC_CTYPE, "fr_FR-8"); - if (strcmp(nl_langinfo(CODESET), "UTF-8")) return -1; + //if (strcmp(nl_langinfo(CODESET), "UTF-8")) return -1; - + buf = malloc(500000); l = 0; diff --git a/recipes/llvm/recipe.sh b/recipes/llvm/recipe.sh index a96cc36e..286b0d78 100644 --- a/recipes/llvm/recipe.sh +++ b/recipes/llvm/recipe.sh @@ -25,7 +25,7 @@ function recipe_build { -DCMAKE_AR="$(which "${AR}")" -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True - -DCMAKE_CXX_FLAGS="--std=gnu++11 -Wl,--whole-archive -lpthread -Wl,--no-whole-archive" + -DCMAKE_CXX_FLAGS="--std=gnu++11" -DCMAKE_RANLIB="$(which "${RANLIB}")" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_SYSTEM_NAME=Generic diff --git a/recipes/mesa/recipe.sh b/recipes/mesa/recipe.sh index ce669d7f..d1e8941f 100644 --- a/recipes/mesa/recipe.sh +++ b/recipes/mesa/recipe.sh @@ -18,7 +18,6 @@ function recipe_build { export CFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1" export CPPFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1" export LDFLAGS="-L$sysroot/lib" - export LIBS="-Wl,--whole-archive -lpthread -Wl,--no-whole-archive" #export LLVM_CONFIG="x86_64-unknown-redox-llvm-config" NOCONFIGURE=1 ./autogen.sh ./configure \ diff --git a/recipes/openjazz/recipe.sh b/recipes/openjazz/recipe.sh index aae30c7c..39d28085 100644 --- a/recipes/openjazz/recipe.sh +++ b/recipes/openjazz/recipe.sh @@ -22,7 +22,7 @@ function recipe_build { autoconf wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --host=${HOST} --prefix='' - make -j"$(nproc)" + make -j"$(nproc)" V=1 skip=1 } diff --git a/recipes/openttd/01_redox.patch b/recipes/openttd/01_redox.patch index 22915187..944d7ba9 100644 --- a/recipes/openttd/01_redox.patch +++ b/recipes/openttd/01_redox.patch @@ -1,7 +1,7 @@ -diff -rupwN source/config.lib source-new/config.lib +diff -ruwN source/config.lib source-new/config.lib --- source/config.lib 2018-12-29 07:28:58.975290421 -0700 -+++ source-new/config.lib 2018-12-29 10:11:42.310241717 -0700 -@@ -1486,7 +1486,7 @@ make_cflags_and_ldflags() { ++++ source-new/config.lib 2019-01-06 17:30:43.830146522 -0700 +@@ -1486,7 +1486,7 @@ # Special CXXFlags for HOST CXXFLAGS="$CXXFLAGS" # Libs to compile. In fact this is just LDFLAGS @@ -10,19 +10,10 @@ diff -rupwN source/config.lib source-new/config.lib # LDFLAGS used for HOST LDFLAGS="$LDFLAGS" # FEATURES for HOST (lto) -@@ -1594,7 +1594,7 @@ make_cflags_and_ldflags() { - fi - - if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "OPENBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ] && [ "$os" != "PSP" ] && [ "$os" != "OS2" ]; then -- LIBS="$LIBS -lpthread" -+ LIBS="$LIBS -Wl,--whole-archive -lpthread -Wl,--no-whole-archive" - fi - - if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "MINGW" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ]; then -diff -rupwN source/src/music/extmidi.cpp source-new/src/music/extmidi.cpp +diff -ruwN source/src/music/extmidi.cpp source-new/src/music/extmidi.cpp --- source/src/music/extmidi.cpp 2018-12-29 07:28:59.143295501 -0700 +++ source-new/src/music/extmidi.cpp 2018-12-29 10:14:06.637357598 -0700 -@@ -115,7 +115,11 @@ void MusicDriver_ExtMidi::DoPlay() +@@ -115,7 +115,11 @@ switch (this->pid) { case 0: { close(0); @@ -34,10 +25,10 @@ diff -rupwN source/src/music/extmidi.cpp source-new/src/music/extmidi.cpp if (d != -1 && dup2(d, 1) != -1 && dup2(d, 2) != -1) { execvp(this->params[0], this->params); } -diff -rupwN source/src/rev.cpp.in source-new/src/rev.cpp.in +diff -ruwN source/src/rev.cpp.in source-new/src/rev.cpp.in --- source/src/rev.cpp.in 2018-12-29 07:28:59.167296226 -0700 +++ source-new/src/rev.cpp.in 2018-12-29 10:11:42.314241804 -0700 -@@ -57,7 +57,7 @@ const char _openttd_build_date[] = __DAT +@@ -57,7 +57,7 @@ * (compiling from sources without any version control software) * and 2 is for modified revision. */ @@ -46,7 +37,7 @@ diff -rupwN source/src/rev.cpp.in source-new/src/rev.cpp.in /** * The NewGRF revision of OTTD: -diff -rupwN source/src/stdafx.h source-new/src/stdafx.h +diff -ruwN source/src/stdafx.h source-new/src/stdafx.h --- source/src/stdafx.h 2018-12-29 07:28:59.203297314 -0700 +++ source-new/src/stdafx.h 2018-12-29 10:11:42.314241804 -0700 @@ -12,6 +12,9 @@ @@ -59,10 +50,10 @@ diff -rupwN source/src/stdafx.h source-new/src/stdafx.h #if defined(__APPLE__) #include "os/macosx/osx_stdafx.h" #endif /* __APPLE__ */ -diff -rupwN source/src/string.cpp source-new/src/string.cpp +diff -ruwN source/src/string.cpp source-new/src/string.cpp --- source/src/string.cpp 2018-12-29 07:28:59.207297436 -0700 +++ source-new/src/string.cpp 2018-12-29 10:11:42.314241804 -0700 -@@ -528,7 +528,7 @@ size_t Utf8TrimString(char *s, size_t ma +@@ -528,7 +528,7 @@ return length; } diff --git a/recipes/pcre/recipe.sh b/recipes/pcre/recipe.sh index 1cc30931..2e0e8e8c 100644 --- a/recipes/pcre/recipe.sh +++ b/recipes/pcre/recipe.sh @@ -16,7 +16,6 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" - export LIBS="-Wl,--whole-archive -lpthread -Wl,--no-whole-archive" ./configure \ --host=${HOST} \ --prefix=/ \ diff --git a/recipes/sdl/redox.patch b/recipes/sdl/redox.patch index c9213a7a..838df6fd 100644 --- a/recipes/sdl/redox.patch +++ b/recipes/sdl/redox.patch @@ -12,7 +12,7 @@ diff -ruwN source/build-scripts/config.sub source-new/build-scripts/config.sub | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ diff -ruwN source/configure.in source-new/configure.in --- source/configure.in 2012-01-18 23:30:05.000000000 -0700 -+++ source-new/configure.in 2018-12-30 08:48:46.611954605 -0700 ++++ source-new/configure.in 2019-01-06 17:08:43.147342277 -0700 @@ -685,6 +685,18 @@ fi } @@ -45,7 +45,7 @@ diff -ruwN source/configure.in source-new/configure.in + if test x$enable_video_orbital = xyes; then + AC_DEFINE(SDL_VIDEO_DRIVER_ORBITAL) + SOURCES="$SOURCES $srcdir/src/video/orbital/*.c" -+ SDL_LIBS="$SDL_LIBS -Wl,--gc-sections -lorbital" ++ SDL_LIBS="$SDL_LIBS -lorbital" + have_video=yes + fi +} @@ -53,19 +53,18 @@ diff -ruwN source/configure.in source-new/configure.in dnl Check to see if OpenGL support is desired AC_ARG_ENABLE(video-opengl, AC_HELP_STRING([--enable-video-opengl], [include OpenGL context creation [[default=yes]]]), -@@ -1859,6 +1885,11 @@ +@@ -1859,6 +1885,10 @@ AC_HELP_STRING([--enable-pthread-sem], [use pthread semaphores [[default=yes]]]), , enable_pthread_sem=yes) case "$host" in + *-*-redox*) + pthread_cflags="-D_REENTRANT" + pthread_lib="-lpthread" -+ SDL_LIBS="$SDL_LIBS -Wl,--whole-archive -lpthread -Wl,--no-whole-archive" + ;; *-*-linux*|*-*-uclinux*) pthread_cflags="-D_REENTRANT" pthread_lib="-lpthread" -@@ -2325,10 +2356,11 @@ +@@ -2325,10 +2355,11 @@ have_timers=yes fi ;; @@ -78,7 +77,7 @@ diff -ruwN source/configure.in source-new/configure.in *-*-kfreebsd*-gnu) ARCH=kfreebsd-gnu ;; *-*-knetbsd*-gnu) ARCH=knetbsd-gnu ;; *-*-kopenbsd*-gnu) ARCH=kopenbsd-gnu ;; -@@ -2347,8 +2379,10 @@ +@@ -2347,8 +2378,10 @@ esac CheckVisibilityHidden CheckDummyVideo @@ -89,7 +88,7 @@ diff -ruwN source/configure.in source-new/configure.in CheckDLOPEN CheckNASM CheckAltivec -@@ -2445,6 +2479,11 @@ +@@ -2445,6 +2478,11 @@ SOURCES="$SOURCES $srcdir/src/cdrom/osf/*.c" have_cdrom=yes ;; diff --git a/recipes/sdl2/redox.patch b/recipes/sdl2/redox.patch index a6cb05e4..d29faa59 100644 --- a/recipes/sdl2/redox.patch +++ b/recipes/sdl2/redox.patch @@ -1,6 +1,6 @@ diff -ruwN source/configure.in source-new/configure.in --- source/configure.in 2018-10-31 09:07:22.000000000 -0600 -+++ source-new/configure.in 2018-12-30 20:01:02.572341419 -0700 ++++ source-new/configure.in 2019-01-06 17:29:39.198302773 -0700 @@ -1222,6 +1222,18 @@ fi } @@ -41,19 +41,18 @@ diff -ruwN source/configure.in source-new/configure.in dnl Set up the QNX video driver if enabled CheckQNXVideo() { -@@ -2789,6 +2815,11 @@ +@@ -2789,6 +2815,10 @@ AC_HELP_STRING([--enable-pthread-sem], [use pthread semaphores [[default=yes]]]), , enable_pthread_sem=yes) case "$host" in + *-*-redox*) + pthread_cflags="-D_REENTRANT" + pthread_lib="-lpthread" -+ SDL_LIBS="$SDL_LIBS -Wl,--whole-archive -lpthread -Wl,--no-whole-archive" + ;; *-*-android*) pthread_cflags="-D_REENTRANT -D_THREAD_SAFE" pthread_lib="" -@@ -3362,7 +3393,7 @@ +@@ -3362,7 +3392,7 @@ dnl Set up the configuration based on the host platform! case "$host" in @@ -62,7 +61,7 @@ diff -ruwN source/configure.in source-new/configure.in case "$host" in *-*-android*) # Android -@@ -3383,6 +3414,7 @@ +@@ -3383,6 +3413,7 @@ ;; *-*-linux*) ARCH=linux ;; *-*-uclinux*) ARCH=linux ;; @@ -70,7 +69,7 @@ diff -ruwN source/configure.in source-new/configure.in *-*-kfreebsd*-gnu) ARCH=kfreebsd-gnu ;; *-*-knetbsd*-gnu) ARCH=knetbsd-gnu ;; *-*-kopenbsd*-gnu) ARCH=kopenbsd-gnu ;; -@@ -3404,6 +3436,8 @@ +@@ -3404,6 +3435,8 @@ CheckVisibilityHidden CheckDeclarationAfterStatement CheckDummyVideo @@ -81,7 +80,7 @@ diff -ruwN source/configure.in source-new/configure.in CheckDLOPEN diff -ruwN source/include/SDL_config.h.in source-new/include/SDL_config.h.in --- source/include/SDL_config.h.in 2018-10-31 09:07:22.000000000 -0600 -+++ source-new/include/SDL_config.h.in 2018-12-30 19:54:01.263870482 -0700 ++++ source-new/include/SDL_config.h.in 2018-12-31 14:01:08.736950947 -0700 @@ -263,6 +263,7 @@ #undef SDL_AUDIO_DRIVER_PULSEAUDIO #undef SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC @@ -100,7 +99,7 @@ diff -ruwN source/include/SDL_config.h.in source-new/include/SDL_config.h.in #undef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH diff -ruwN source/src/audio/redox/SDL_redoxaudio.c source-new/src/audio/redox/SDL_redoxaudio.c --- source/src/audio/redox/SDL_redoxaudio.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/audio/redox/SDL_redoxaudio.c 2018-12-30 19:53:02.919797606 -0700 ++++ source-new/src/audio/redox/SDL_redoxaudio.c 2018-12-31 14:01:08.736950947 -0700 @@ -0,0 +1,169 @@ +/* + SDL - Simple DirectMedia Layer @@ -273,7 +272,7 @@ diff -ruwN source/src/audio/redox/SDL_redoxaudio.c source-new/src/audio/redox/SD +} diff -ruwN source/src/audio/redox/SDL_redoxaudio.h source-new/src/audio/redox/SDL_redoxaudio.h --- source/src/audio/redox/SDL_redoxaudio.h 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/audio/redox/SDL_redoxaudio.h 2018-12-30 19:53:02.919797606 -0700 ++++ source-new/src/audio/redox/SDL_redoxaudio.h 2018-12-31 14:01:08.736950947 -0700 @@ -0,0 +1,40 @@ +/* + SDL - Simple DirectMedia Layer @@ -317,7 +316,7 @@ diff -ruwN source/src/audio/redox/SDL_redoxaudio.h source-new/src/audio/redox/SD +#endif /* _SDL_redoxaudio_h */ diff -ruwN source/src/audio/SDL_audio.c source-new/src/audio/SDL_audio.c --- source/src/audio/SDL_audio.c 2018-10-31 09:07:22.000000000 -0600 -+++ source-new/src/audio/SDL_audio.c 2018-12-30 19:54:43.931922299 -0700 ++++ source-new/src/audio/SDL_audio.c 2018-12-31 14:01:08.736950947 -0700 @@ -35,6 +35,9 @@ /* Available audio drivers */ @@ -330,7 +329,7 @@ diff -ruwN source/src/audio/SDL_audio.c source-new/src/audio/SDL_audio.c #endif diff -ruwN source/src/audio/SDL_sysaudio.h source-new/src/audio/SDL_sysaudio.h --- source/src/audio/SDL_sysaudio.h 2018-10-31 09:07:22.000000000 -0600 -+++ source-new/src/audio/SDL_sysaudio.h 2018-12-30 19:55:51.280001807 -0700 ++++ source-new/src/audio/SDL_sysaudio.h 2018-12-31 14:01:08.736950947 -0700 @@ -183,6 +183,7 @@ } AudioBootStrap; @@ -341,7 +340,7 @@ diff -ruwN source/src/audio/SDL_sysaudio.h source-new/src/audio/SDL_sysaudio.h extern AudioBootStrap JACK_bootstrap; diff -ruwN source/src/dynapi/SDL_dynapi.h source-new/src/dynapi/SDL_dynapi.h --- source/src/dynapi/SDL_dynapi.h 2018-10-31 09:07:22.000000000 -0600 -+++ source-new/src/dynapi/SDL_dynapi.h 2018-12-30 19:51:10.263649275 -0700 ++++ source-new/src/dynapi/SDL_dynapi.h 2018-12-31 14:01:08.736950947 -0700 @@ -55,6 +55,8 @@ #define SDL_DYNAMIC_API 0 #elif defined(__clang_analyzer__) @@ -353,7 +352,7 @@ diff -ruwN source/src/dynapi/SDL_dynapi.h source-new/src/dynapi/SDL_dynapi.h /* everyone else. This is where we turn on the API if nothing forced it off. */ diff -ruwN source/src/thread/pthread/SDL_systhread.c source-new/src/thread/pthread/SDL_systhread.c --- source/src/thread/pthread/SDL_systhread.c 2018-10-31 09:07:22.000000000 -0600 -+++ source-new/src/thread/pthread/SDL_systhread.c 2018-12-30 19:57:03.592084415 -0700 ++++ source-new/src/thread/pthread/SDL_systhread.c 2018-12-31 14:01:08.740951021 -0700 @@ -165,7 +165,11 @@ for (i = 0; sig_list[i]; ++i) { sigaddset(&mask, sig_list[i]); @@ -368,7 +367,7 @@ diff -ruwN source/src/thread/pthread/SDL_systhread.c source-new/src/thread/pthre diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orbital/SDL_orbitalevents.c --- source/src/video/orbital/SDL_orbitalevents.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalevents.c 2018-12-30 20:37:39.185277773 -0700 ++++ source-new/src/video/orbital/SDL_orbitalevents.c 2018-12-31 14:01:08.740951021 -0700 @@ -0,0 +1,192 @@ +/* + SDL - Simple DirectMedia Layer @@ -564,7 +563,7 @@ diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orb +/* end of SDL_orbitalevents.c ... */ diff -ruwN source/src/video/orbital/SDL_orbitalevents_c.h source-new/src/video/orbital/SDL_orbitalevents_c.h --- source/src/video/orbital/SDL_orbitalevents_c.h 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalevents_c.h 2018-12-30 19:51:10.263649275 -0700 ++++ source-new/src/video/orbital/SDL_orbitalevents_c.h 2018-12-31 14:01:08.740951021 -0700 @@ -0,0 +1,32 @@ +/* + SDL - Simple DirectMedia Layer @@ -600,7 +599,7 @@ diff -ruwN source/src/video/orbital/SDL_orbitalevents_c.h source-new/src/video/o +/* end of SDL_orbitalevents_c.h ... */ diff -ruwN source/src/video/orbital/SDL_orbitalmouse.c source-new/src/video/orbital/SDL_orbitalmouse.c --- source/src/video/orbital/SDL_orbitalmouse.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalmouse.c 2018-12-30 19:51:10.263649275 -0700 ++++ source-new/src/video/orbital/SDL_orbitalmouse.c 2018-12-31 14:01:08.740951021 -0700 @@ -0,0 +1,33 @@ +/* + SDL - Simple DirectMedia Layer @@ -637,7 +636,7 @@ diff -ruwN source/src/video/orbital/SDL_orbitalmouse.c source-new/src/video/orbi +}; diff -ruwN source/src/video/orbital/SDL_orbitalmouse_c.h source-new/src/video/orbital/SDL_orbitalmouse_c.h --- source/src/video/orbital/SDL_orbitalmouse_c.h 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalmouse_c.h 2018-12-30 19:51:10.267649280 -0700 ++++ source-new/src/video/orbital/SDL_orbitalmouse_c.h 2018-12-31 14:01:08.740951021 -0700 @@ -0,0 +1,26 @@ +/* + SDL - Simple DirectMedia Layer @@ -667,7 +666,7 @@ diff -ruwN source/src/video/orbital/SDL_orbitalmouse_c.h source-new/src/video/or +/* Functions to be exported */ diff -ruwN source/src/video/orbital/SDL_orbitalvideo.c source-new/src/video/orbital/SDL_orbitalvideo.c --- source/src/video/orbital/SDL_orbitalvideo.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalvideo.c 2018-12-30 20:26:21.622297793 -0700 ++++ source-new/src/video/orbital/SDL_orbitalvideo.c 2018-12-31 14:01:08.740951021 -0700 @@ -0,0 +1,182 @@ +/* + SDL - Simple DirectMedia Layer @@ -853,7 +852,7 @@ diff -ruwN source/src/video/orbital/SDL_orbitalvideo.c source-new/src/video/orbi +#endif diff -ruwN source/src/video/orbital/SDL_orbitalvideo.h source-new/src/video/orbital/SDL_orbitalvideo.h --- source/src/video/orbital/SDL_orbitalvideo.h 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalvideo.h 2018-12-30 19:51:10.267649280 -0700 ++++ source-new/src/video/orbital/SDL_orbitalvideo.h 2018-12-31 14:01:08.740951021 -0700 @@ -0,0 +1,39 @@ +/* + SDL - Simple DirectMedia Layer @@ -896,7 +895,7 @@ diff -ruwN source/src/video/orbital/SDL_orbitalvideo.h source-new/src/video/orbi +#endif /* _SDL_orbitalvideo_h */ diff -ruwN source/src/video/SDL_sysvideo.h source-new/src/video/SDL_sysvideo.h --- source/src/video/SDL_sysvideo.h 2018-10-31 09:07:22.000000000 -0600 -+++ source-new/src/video/SDL_sysvideo.h 2018-12-30 19:58:01.920149215 -0700 ++++ source-new/src/video/SDL_sysvideo.h 2018-12-31 14:01:08.740951021 -0700 @@ -416,6 +416,7 @@ extern VideoBootStrap PSP_bootstrap; extern VideoBootStrap RPI_bootstrap; @@ -907,7 +906,7 @@ diff -ruwN source/src/video/SDL_sysvideo.h source-new/src/video/SDL_sysvideo.h extern VideoBootStrap NACL_bootstrap; diff -ruwN source/src/video/SDL_video.c source-new/src/video/SDL_video.c --- source/src/video/SDL_video.c 2018-10-31 09:07:22.000000000 -0600 -+++ source-new/src/video/SDL_video.c 2018-12-30 19:58:27.472177138 -0700 ++++ source-new/src/video/SDL_video.c 2018-12-31 14:01:08.740951021 -0700 @@ -112,6 +112,9 @@ #if SDL_VIDEO_DRIVER_QNX &QNX_bootstrap, From 2f119f29e3597e495dda6f0871508c4e6fb6f2f7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 7 Jan 2019 19:09:51 -0700 Subject: [PATCH 0565/3180] Remove unnecessary -lm --- bin/x86_64-unknown-redox-llvm-config | 2 +- recipes/cairodemo/recipe.sh | 2 +- recipes/newlibtest/recipe.sh | 2 +- recipes/perl/recipe.sh | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bin/x86_64-unknown-redox-llvm-config b/bin/x86_64-unknown-redox-llvm-config index 766e8554..642e9e52 100755 --- a/bin/x86_64-unknown-redox-llvm-config +++ b/bin/x86_64-unknown-redox-llvm-config @@ -111,7 +111,7 @@ elif args == ["--ldflags"]: elif args == ["--libdir"]: print(prefix + "/lib") elif args == ["--system-libs"]: - print("-lpthread -lm") + print("") elif args == ["--targets-built"]: print("X86") elif args[0] == "--libs": diff --git a/recipes/cairodemo/recipe.sh b/recipes/cairodemo/recipe.sh index ff3125fb..c720d9e5 100755 --- a/recipes/cairodemo/recipe.sh +++ b/recipes/cairodemo/recipe.sh @@ -21,7 +21,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" set -x - "${CXX}" -I "$sysroot/include" -L "$sysroot/lib" cairodemo.c -o cairodemo -lorbital -lcairo -lpixman-1 -lfreetype -lpng -lz -lm + "${CXX}" -I "$sysroot/include" -L "$sysroot/lib" cairodemo.c -o cairodemo -lorbital -lcairo -lpixman-1 -lfreetype -lpng -lz set +x skip=1 } diff --git a/recipes/newlibtest/recipe.sh b/recipes/newlibtest/recipe.sh index 9dac27fe..d1d549d9 100644 --- a/recipes/newlibtest/recipe.sh +++ b/recipes/newlibtest/recipe.sh @@ -15,7 +15,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-static -nostdinc -I $sysroot/include -I /usr/lib/gcc/x86_64-unknown-redox/7.0.1/include/ -nostdlib -L $sysroot/lib" export CRT="$sysroot/lib/crt0.o" - export CLIBS="-lc -lm" + export CLIBS="-lc" make all -j"$(nproc)" skip=1 } diff --git a/recipes/perl/recipe.sh b/recipes/perl/recipe.sh index d2d41986..0d3f6f10 100644 --- a/recipes/perl/recipe.sh +++ b/recipes/perl/recipe.sh @@ -22,7 +22,7 @@ function recipe_build { sed -i "s/^#define Netdb_name_t.*/#define Netdb_name_t const char*/" config.h # XXX sed -i 's/#define Strerror(e).*$/#define Strerror(e) strerror(e)/' config.h # echo "#define HAS_VPRINTF" >> config.h - make LIBS=-lm -j"$(nproc)" + make -j"$(nproc)" skip=1 } From 463aeef9ee3cfce631733f5a238700cad0b65000 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 8 Jan 2019 20:50:23 -0700 Subject: [PATCH 0566/3180] Add bootloader and kernel recipes --- recipes/bootloader/recipe.sh | 32 +++++++++++++++++++++++++ recipes/kernel/init.rc | 10 ++++++++ recipes/kernel/recipe.sh | 46 ++++++++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 recipes/bootloader/recipe.sh create mode 100644 recipes/kernel/init.rc create mode 100644 recipes/kernel/recipe.sh diff --git a/recipes/bootloader/recipe.sh b/recipes/bootloader/recipe.sh new file mode 100644 index 00000000..510b0d80 --- /dev/null +++ b/recipes/bootloader/recipe.sh @@ -0,0 +1,32 @@ +GIT=https://gitlab.redox-os.org/redox-os/bootloader.git + +function recipe_version { + echo "0.1.0" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + nasm -f bin -o bootloader -D "ARCH_${ARCH}" -i"${ARCH}/" "${ARCH}/disk.asm" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + cp -v bootloader "$dest" + skip=1 +} diff --git a/recipes/kernel/init.rc b/recipes/kernel/init.rc new file mode 100644 index 00000000..db322fcd --- /dev/null +++ b/recipes/kernel/init.rc @@ -0,0 +1,10 @@ +export PATH /bin +export TMPDIR /tmp +vesad T T G +stdio display:1 +ps2d us +pcid /etc/pcid/initfs.toml +redoxfs --uuid $REDOXFS_UUID file +cd file: +export PATH file:/bin +run.d /etc/init.d diff --git a/recipes/kernel/recipe.sh b/recipes/kernel/recipe.sh new file mode 100644 index 00000000..469d6706 --- /dev/null +++ b/recipes/kernel/recipe.sh @@ -0,0 +1,46 @@ +GIT=https://gitlab.redox-os.org/redox-os/kernel.git +BUILD_DEPENDS=(drivers init redoxfs) + +function recipe_build { + export INITFS_FOLDER="$(realpath ../sysroot)" + mkdir -pv "$INITFS_FOLDER/etc" + cp -v "$(realpath ../init.rc)" "$INITFS_FOLDER/etc/init.rc" + xargo rustc \ + --lib \ + --target "${ARCH}-unknown-none" \ + --release \ + -- \ + -C soft-float \ + -C debuginfo=2 \ + --emit link=libkernel.a + "${LD}" \ + --gc-sections \ + -z max-page-size=0x1000 \ + -T "linkers/${ARCH}.ld" \ + -o kernel \ + libkernel.a + "${OBJCOPY}" \ + --only-keep-debug \ + kernel \ + kernel.sym + "${OBJCOPY}" \ + --strip-debug \ + kernel + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + cp -v kernel "$dest" + skip=1 +} From 59643b9d234fa426af125ba37903ac6a0c9470c4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Jan 2019 18:06:01 -0700 Subject: [PATCH 0567/3180] Add webrender recipe --- recipes/webrender/recipe.sh | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 recipes/webrender/recipe.sh diff --git a/recipes/webrender/recipe.sh b/recipes/webrender/recipe.sh new file mode 100644 index 00000000..fe757155 --- /dev/null +++ b/recipes/webrender/recipe.sh @@ -0,0 +1,27 @@ +GIT=https://gitlab.redox-os.org/redox-os/webrender.git +GIT_UPSTREAM=https://github.com/servo/webrender.git +BRANCH=redox +BUILD_DEPENDS=(freetype libpng llvm mesa zlib) +CARGOFLAGS="--manifest-path examples/Cargo.toml --bin basic" + +function recipe_build { + sysroot="$(realpath ../sysroot)" + cp -p "$ROOT/Xargo.toml" "Xargo.toml" + set -x + xargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ + -- \ + -L "${sysroot}/lib" \ + -l static=freetype \ + -l static=png \ + -C link-args="$("${PKG_CONFIG}" --libs osmesa) -lglapi -lz -lstdc++ -lc -lgcc" + set +x + skip=1 +} + + +function recipe_stage { + dest="$(realpath $1)" + mkdir -pv "$dest/bin" + cp -v "target/${TARGET}/release/basic" "$dest/bin/webrender" + skip=1 +} From 26d207c535feb8cb275e55836c111838fc019d26 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Jan 2019 19:50:18 -0700 Subject: [PATCH 0568/3180] Add all examples to webrender --- recipes/webrender/recipe.sh | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/recipes/webrender/recipe.sh b/recipes/webrender/recipe.sh index fe757155..8b640f87 100644 --- a/recipes/webrender/recipe.sh +++ b/recipes/webrender/recipe.sh @@ -2,26 +2,32 @@ GIT=https://gitlab.redox-os.org/redox-os/webrender.git GIT_UPSTREAM=https://github.com/servo/webrender.git BRANCH=redox BUILD_DEPENDS=(freetype libpng llvm mesa zlib) -CARGOFLAGS="--manifest-path examples/Cargo.toml --bin basic" function recipe_build { sysroot="$(realpath ../sysroot)" cp -p "$ROOT/Xargo.toml" "Xargo.toml" - set -x - xargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ - -- \ - -L "${sysroot}/lib" \ - -l static=freetype \ - -l static=png \ - -C link-args="$("${PKG_CONFIG}" --libs osmesa) -lglapi -lz -lstdc++ -lc -lgcc" - set +x + for rs in $(find examples/ -maxdepth 1 -type f -name '*.rs') + do + bin="$(basename "$rs" .rs)" + set -x + xargo rustc --target "$TARGET" --release --manifest-path examples/Cargo.toml --bin "$bin" \ + -- \ + -L "${sysroot}/lib" \ + -l static=freetype \ + -l static=png \ + -C link-args="$("${PKG_CONFIG}" --libs osmesa) -lglapi -lz -lstdc++ -lc -lgcc" + set +x + done skip=1 } - function recipe_stage { dest="$(realpath $1)" mkdir -pv "$dest/bin" - cp -v "target/${TARGET}/release/basic" "$dest/bin/webrender" + for rs in $(find examples/ -maxdepth 1 -type f -name '*.rs') + do + bin="$(basename "$rs" .rs)" + "${STRIP}" -v "target/$TARGET/release/$bin" -o "$dest/bin/webrender_$bin" + done skip=1 } From 4e37d54d8f65117ad1529a448a9e6d0e74c58e98 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 13 Jan 2019 10:41:33 -0700 Subject: [PATCH 0569/3180] WIP: Qemu --- recipes/qemu/recipe.sh | 43 ++++++ recipes/qemu/redox.patch | 308 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 351 insertions(+) create mode 100644 recipes/qemu/recipe.sh create mode 100644 recipes/qemu/redox.patch diff --git a/recipes/qemu/recipe.sh b/recipes/qemu/recipe.sh new file mode 100644 index 00000000..76d854ed --- /dev/null +++ b/recipes/qemu/recipe.sh @@ -0,0 +1,43 @@ +VERSION=3.1.0 +TAR=https://download.qemu.org/qemu-$VERSION.tar.xz +BUILD_DEPENDS=(curl glib libiconv libpng pcre pixman sdl zlib) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include" + export CPPFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib" + ./configure \ + --host="${HOST}" \ + --prefix=/ + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + #export LLVM_CONFIG="x86_64-unknown-redox-llvm-config" + dest="$(realpath $1)" + make DESTDIR="$dest" install + rm -f "$dest/lib/"*.la + skip=1 +} diff --git a/recipes/qemu/redox.patch b/recipes/qemu/redox.patch new file mode 100644 index 00000000..9543ce1c --- /dev/null +++ b/recipes/qemu/redox.patch @@ -0,0 +1,308 @@ +diff -ruwN source/block/file-posix.c source-new/block/file-posix.c +--- source/block/file-posix.c 2019-01-13 08:23:04.772397346 -0700 ++++ source-new/block/file-posix.c 2019-01-13 10:40:35.102453914 -0700 +@@ -258,6 +258,7 @@ + int i; + + errno = ENOTSUP; ++#if !defined(__redox__) + static const unsigned long ioctl_list[] = { + #ifdef BLKSSZGET + BLKSSZGET, +@@ -277,6 +278,7 @@ + success = true; + } + } ++#endif + + return success ? 0 : -errno; + } +@@ -1154,6 +1156,9 @@ + + static ssize_t handle_aiocb_ioctl(RawPosixAIOData *aiocb) + { ++#if defined(__redox__) ++ return -ENOTSUP ++#else + int ret; + + ret = ioctl(aiocb->aio_fildes, aiocb->aio_ioctl_cmd, aiocb->aio_ioctl_buf); +@@ -1162,6 +1167,7 @@ + } + + return 0; ++#endif + } + + static ssize_t handle_aiocb_flush(RawPosixAIOData *aiocb) +diff -ruwN source/configure source-new/configure +--- source/configure 2018-12-11 10:44:34.000000000 -0700 ++++ source-new/configure 2019-01-12 15:11:33.069669757 -0700 +@@ -649,6 +649,8 @@ + targetos='NetBSD' + elif check_define __APPLE__; then + targetos='Darwin' ++elif check_define __redox__; then ++ targetos='Redox' + else + # This is a fatal error, but don't report it yet, because we + # might be going to just print the --help text, or it might +@@ -3500,7 +3502,7 @@ + EOF + + if ! compile_prog "$CFLAGS" "$LIBS" ; then +- error_exit "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\ ++ echo "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\ + "You probably need to set PKG_CONFIG_LIBDIR"\ + "to point to the right pkg-config files for your"\ + "build target" +diff -ruwN source/include/qom/cpu.h source-new/include/qom/cpu.h +--- source/include/qom/cpu.h 2018-12-11 10:44:34.000000000 -0700 ++++ source-new/include/qom/cpu.h 2019-01-12 15:14:15.442350500 -0700 +@@ -30,6 +30,10 @@ + #include "qemu/queue.h" + #include "qemu/thread.h" + ++#if defined(__redox__) ++#define sigjmp_buf jmp_buf ++#endif ++ + typedef int (*WriteCoreDumpFunction)(const void *buf, size_t size, + void *opaque); + +diff -ruwN source/io/channel-socket.c source-new/io/channel-socket.c +--- source/io/channel-socket.c 2018-12-11 10:44:34.000000000 -0700 ++++ source-new/io/channel-socket.c 2019-01-13 08:54:26.951009516 -0700 +@@ -407,7 +407,7 @@ + } + + +-#ifndef WIN32 ++#if !defined(WIN32) && !defined(__redox__) + static void qio_channel_socket_copy_fds(struct msghdr *msg, + int **fds, size_t *nfds) + { +@@ -554,7 +554,7 @@ + } + return ret; + } +-#else /* WIN32 */ ++#else /* WIN32 or __redox__ */ + static ssize_t qio_channel_socket_readv(QIOChannel *ioc, + const struct iovec *iov, + size_t niov, +diff -ruwN source/util/compatfd.c source-new/util/compatfd.c +--- source/util/compatfd.c 2018-12-11 10:44:35.000000000 -0700 ++++ source-new/util/compatfd.c 2019-01-12 16:24:40.146857753 -0700 +@@ -17,7 +17,9 @@ + #include "qemu-common.h" + #include "qemu/thread.h" + ++#if defined(CONFIG_SIGNALFD) + #include ++#endif + + struct sigfd_compat_info + { +diff -ruwN source/util/coroutine-sigaltstack.c source-new/util/coroutine-sigaltstack.c +--- source/util/coroutine-sigaltstack.c 2018-12-11 10:44:35.000000000 -0700 ++++ source-new/util/coroutine-sigaltstack.c 2019-01-13 10:38:32.279965167 -0700 +@@ -30,6 +30,12 @@ + #include "qemu-common.h" + #include "qemu/coroutine_int.h" + ++#if defined(__redox__) ++#define sigjmp_buf jmp_buf ++#define sigsetjmp(env, savesigs) setjmp(env) ++#define siglongjmp longjmp ++#endif ++ + typedef struct { + Coroutine base; + void *stack; +@@ -288,4 +294,3 @@ + + return s && s->current->caller; + } +- +diff -ruwN source/util/iov.c source-new/util/iov.c +--- source/util/iov.c 2018-12-11 10:44:35.000000000 -0700 ++++ source-new/util/iov.c 2019-01-12 16:32:12.067228460 -0700 +@@ -95,7 +95,7 @@ + static ssize_t + do_send_recv(int sockfd, struct iovec *iov, unsigned iov_cnt, bool do_send) + { +-#ifdef CONFIG_POSIX ++#if defined(CONFIG_POSIX) && !defined(__redox__) + ssize_t ret; + struct msghdr msg; + memset(&msg, 0, sizeof(msg)); +diff -ruwN source/util/main-loop.c source-new/util/main-loop.c +--- source/util/main-loop.c 2018-12-11 10:44:35.000000000 -0700 ++++ source-new/util/main-loop.c 2019-01-13 10:37:48.544674956 -0700 +@@ -35,6 +35,10 @@ + #include "block/aio.h" + #include "qemu/error-report.h" + ++#if defined(__redox__) ++#define pthread_sigmask sigprocmask ++#endif ++ + #ifndef _WIN32 + + /* If we have signalfd, we mask out the signals we want to handle and then +@@ -63,9 +67,12 @@ + } + + sigaction(info.ssi_signo, NULL, &action); ++#if !defined(__redox__) + if ((action.sa_flags & SA_SIGINFO) && action.sa_sigaction) { + sigaction_invoke(&action, &info); +- } else if (action.sa_handler) { ++ } else ++#endif ++ if (action.sa_handler) { + action.sa_handler(info.ssi_signo); + } + } +diff -ruwN source/util/osdep.c source-new/util/osdep.c +--- source/util/osdep.c 2018-12-11 10:44:35.000000000 -0700 ++++ source-new/util/osdep.c 2019-01-13 09:31:50.920247468 -0700 +@@ -138,10 +138,12 @@ + goto fail; + } + ++#if !defined(__redox__) + if ((flags & O_SYNC) != (dup_flags & O_SYNC)) { + errno = EINVAL; + goto fail; + } ++#endif + + /* Set/unset flags that we can with fcntl */ + if (fcntl(ret, F_SETFL, flags) == -1) { +@@ -236,6 +238,9 @@ + + static int qemu_lock_fcntl(int fd, int64_t start, int64_t len, int fl_type) + { ++#if defined(__redox__) ++ return 0; ++#else + int ret; + struct flock fl = { + .l_whence = SEEK_SET, +@@ -248,6 +253,7 @@ + ret = fcntl(fd, fcntl_op_setlk, &fl); + } while (ret == -1 && errno == EINTR); + return ret == -1 ? -errno : 0; ++#endif + } + + int qemu_lock_fd(int fd, int64_t start, int64_t len, bool exclusive) +@@ -262,6 +268,9 @@ + + int qemu_lock_fd_test(int fd, int64_t start, int64_t len, bool exclusive) + { ++#if defined(__redox__) ++ return 0; ++#else + int ret; + struct flock fl = { + .l_whence = SEEK_SET, +@@ -276,6 +285,7 @@ + } else { + return fl.l_type == F_UNLCK ? 0 : -EAGAIN; + } ++#endif + } + #endif + +diff -ruwN source/util/oslib-posix.c source-new/util/oslib-posix.c +--- source/util/oslib-posix.c 2018-12-11 10:44:35.000000000 -0700 ++++ source-new/util/oslib-posix.c 2019-01-12 16:34:05.703955117 -0700 +@@ -36,9 +36,17 @@ + #include "qapi/error.h" + #include "qemu/sockets.h" + #include ++#if !defined(__redox__) + #include ++#endif + #include "qemu/cutils.h" + ++#if defined(__redox__) ++#define pthread_sigmask sigprocmask ++#define sigsetjmp(env, savesigs) setjmp(env) ++#define siglongjmp longjmp ++#endif ++ + #ifdef CONFIG_LINUX + #include + #endif +@@ -95,12 +103,13 @@ + + while (1) { + struct stat a, b; ++#if !defined(__redox__) + struct flock lock = { + .l_type = F_WRLCK, + .l_whence = SEEK_SET, + .l_len = 0, + }; +- ++#endif + fd = qemu_open(path, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR); + if (fd == -1) { + error_setg_errno(errp, errno, "Cannot open pid file"); +@@ -112,10 +121,12 @@ + goto fail_close; + } + ++#if !defined(__redox__) + if (fcntl(fd, F_SETLK, &lock)) { + error_setg_errno(errp, errno, "Cannot lock pid file"); + goto fail_close; + } ++#endif + + /* + * Now make sure the path we locked is the same one that now +@@ -420,7 +431,11 @@ + + static inline int get_memset_num_threads(int smp_cpus) + { ++#if defined(__redox__) ++ long host_procs = 1; ++#else + long host_procs = sysconf(_SC_NPROCESSORS_ONLN); ++#endif + int ret = 1; + + if (host_procs > 0) { +@@ -682,6 +697,7 @@ + void sigaction_invoke(struct sigaction *action, + struct qemu_signalfd_siginfo *info) + { ++#if !defined(__redox__) + siginfo_t si = {}; + si.si_signo = info->ssi_signo; + si.si_errno = info->ssi_errno; +@@ -708,4 +724,5 @@ + si.si_uid = info->ssi_uid; + } + action->sa_sigaction(info->ssi_signo, &si, NULL); ++#endif + } +diff -ruwN source/util/qemu-progress.c source-new/util/qemu-progress.c +--- source/util/qemu-progress.c 2018-12-11 10:44:35.000000000 -0700 ++++ source-new/util/qemu-progress.c 2019-01-13 10:34:53.704639662 -0700 +@@ -25,6 +25,10 @@ + #include "qemu/osdep.h" + #include "qemu-common.h" + ++#if defined(__redox__) ++#define pthread_sigmask sigprocmask ++#endif ++ + struct progress_state { + float current; + float last_print; From 949eab90e286790b6f7ffc5352d8878621a13d79 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 13 Jan 2019 14:32:05 -0700 Subject: [PATCH 0570/3180] Update glib patch --- recipes/glib/redox.patch | 184 ++------------------------------------- 1 file changed, 9 insertions(+), 175 deletions(-) diff --git a/recipes/glib/redox.patch b/recipes/glib/redox.patch index 61b76956..df14da2f 100644 --- a/recipes/glib/redox.patch +++ b/recipes/glib/redox.patch @@ -19,39 +19,6 @@ diff -ruwN source/configure.ac source-new/configure.ac LIBS="$save_libs"]) AC_CHECK_FUNC(socket, :, AC_CHECK_LIB(socket, socket, [NETWORK_LIBS="-lsocket $NETWORK_LIBS"], -diff -ruwN source/gio/ginetsocketaddress.c source-new/gio/ginetsocketaddress.c ---- source/gio/ginetsocketaddress.c 2018-12-23 06:10:41.000000000 -0700 -+++ source-new/gio/ginetsocketaddress.c 2019-01-05 12:05:33.754323562 -0700 -@@ -407,14 +407,21 @@ - g_inet_socket_address_new_from_string (const char *address, - guint port) - { -+#if !defined(__redox__) - static struct addrinfo *hints, hints_struct; -+#endif - GSocketAddress *saddr; - GInetAddress *iaddr; -+#if !defined(__redox__) - struct addrinfo *res; -+#endif - gint status; - - if (strchr (address, ':')) - { -+#if defined(__redox__) -+ saddr = NULL; -+#else - /* IPv6 address (or it's invalid). We use getaddrinfo() because - * it will handle parsing a scope_id as well. - */ -@@ -442,6 +449,7 @@ - saddr = NULL; - - freeaddrinfo (res); -+#endif - } - else - { diff -ruwN source/gio/glocalfileinfo.c source-new/gio/glocalfileinfo.c --- source/gio/glocalfileinfo.c 2018-12-23 06:10:41.000000000 -0700 +++ source-new/gio/glocalfileinfo.c 2019-01-05 14:18:02.435425946 -0700 @@ -87,13 +54,12 @@ diff -ruwN source/gio/glocalfileinfo.c source-new/gio/glocalfileinfo.c g_hash_table_replace (gid_cache, GINT_TO_POINTER (gid), name); diff -ruwN source/gio/gnetworking.h.in source-new/gio/gnetworking.h.in --- source/gio/gnetworking.h.in 2018-12-23 06:10:41.000000000 -0700 -+++ source-new/gio/gnetworking.h.in 2019-01-05 11:43:10.527612479 -0700 -@@ -40,14 +40,20 @@ - ++++ source-new/gio/gnetworking.h.in 2019-01-13 10:46:34.304980440 -0700 +@@ -41,13 +41,19 @@ #include #include -+#if !defined(__redox__) #include ++#if !defined(__redox__) #include +#endif #include @@ -109,18 +75,6 @@ diff -ruwN source/gio/gnetworking.h.in source-new/gio/gnetworking.h.in @NAMESER_COMPAT_INCLUDE@ #ifndef T_SRV -diff -ruwN source/gio/gresolver.c source-new/gio/gresolver.c ---- source/gio/gresolver.c 2018-12-23 06:10:41.000000000 -0700 -+++ source-new/gio/gresolver.c 2019-01-05 12:51:56.587550105 -0700 -@@ -342,7 +342,7 @@ - { - g_set_error (error, G_RESOLVER_ERROR, G_RESOLVER_ERROR_NOT_FOUND, - _("Error resolving “%s”: %s"), -- hostname, gai_strerror (EAI_NONAME)); -+ hostname, "EAI_NONAME"); - return TRUE; - } - diff -ruwN source/gio/gsocket.c source-new/gio/gsocket.c --- source/gio/gsocket.c 2018-12-23 06:10:41.000000000 -0700 +++ source-new/gio/gsocket.c 2019-01-05 13:34:30.178211038 -0700 @@ -299,46 +253,8 @@ diff -ruwN source/gio/gsocket.c source-new/gio/gsocket.c - diff -ruwN source/gio/gthreadedresolver.c source-new/gio/gthreadedresolver.c --- source/gio/gthreadedresolver.c 2018-12-23 06:10:41.000000000 -0700 -+++ source-new/gio/gthreadedresolver.c 2019-01-05 13:46:36.830327532 -0700 -@@ -49,6 +49,7 @@ - { - switch (err) - { -+#if !defined(__redox__) - case EAI_FAIL: - #if defined(EAI_NODATA) && (EAI_NODATA != EAI_NONAME) - case EAI_NODATA: -@@ -58,7 +59,7 @@ - - case EAI_AGAIN: - return G_RESOLVER_ERROR_TEMPORARY_FAILURE; -- -+#endif - default: - return G_RESOLVER_ERROR_INTERNAL; - } -@@ -92,6 +93,12 @@ - gpointer task_data, - GCancellable *cancellable) - { -+#if defined(__redox__) -+ g_task_return_new_error (task, -+ G_RESOLVER_ERROR, -+ G_RESOLVER_ERROR_INTERNAL, -+ _("do_lookup_by_name not implemented on Redox")); -+#else - LookupData *lookup_data = task_data; - const char *hostname = lookup_data->hostname; - struct addrinfo *res = NULL; -@@ -163,6 +170,7 @@ - - if (res) - freeaddrinfo (res); -+#endif - } - - static GList * -@@ -289,6 +297,12 @@ ++++ source-new/gio/gthreadedresolver.c 2019-01-13 10:47:33.441032953 -0700 +@@ -289,6 +289,12 @@ gpointer task_data, GCancellable *cancellable) { @@ -351,7 +267,7 @@ diff -ruwN source/gio/gthreadedresolver.c source-new/gio/gthreadedresolver.c GInetAddress *address = task_data; struct sockaddr_storage sockaddr; gsize sockaddr_size; -@@ -319,6 +333,7 @@ +@@ -319,6 +325,7 @@ gai_strerror (retval)); g_free (phys); } @@ -359,7 +275,7 @@ diff -ruwN source/gio/gthreadedresolver.c source-new/gio/gthreadedresolver.c } static gchar * -@@ -369,7 +384,7 @@ +@@ -369,7 +376,7 @@ } @@ -368,7 +284,7 @@ diff -ruwN source/gio/gthreadedresolver.c source-new/gio/gthreadedresolver.c #if defined __BIONIC__ && !defined BIND_4_COMPAT /* Copy from bionic/libc/private/arpa_nameser_compat.h -@@ -920,6 +935,12 @@ +@@ -920,6 +927,12 @@ gpointer task_data, GCancellable *cancellable) { @@ -381,7 +297,7 @@ diff -ruwN source/gio/gthreadedresolver.c source-new/gio/gthreadedresolver.c LookupRecordsData *lrd = task_data; GList *records; GError *error = NULL; -@@ -1005,6 +1026,7 @@ +@@ -1005,6 +1018,7 @@ g_task_return_pointer (task, records, (GDestroyNotify) free_records); else g_task_return_error (task, error); @@ -437,88 +353,6 @@ diff -ruwN source/gio/gunixmounts.c source-new/gio/gunixmounts.c static GList * _g_get_unix_mount_points (void) { -diff -ruwN source/glib/glib-init.c source-new/glib/glib-init.c ---- source/glib/glib-init.c 2018-12-23 06:10:41.000000000 -0700 -+++ source-new/glib/glib-init.c 2019-01-05 11:09:03.083866992 -0700 -@@ -31,6 +31,10 @@ - #include - #include - -+#if defined(__redox__) -+int strcasecmp(const char *s1, const char *s2); -+#endif -+ - /* This seems as good a place as any to make static assertions about platform - * assumptions we make throughout GLib. */ - -diff -ruwN source/glib/gmain.c source-new/glib/gmain.c ---- source/glib/gmain.c 2018-12-23 06:10:41.000000000 -0700 -+++ source-new/glib/gmain.c 2019-01-05 11:10:02.228193887 -0700 -@@ -5891,13 +5891,21 @@ - sigset_t all; - - sigfillset (&all); -+ #if defined(__redox__) -+ sigprocmask (SIG_SETMASK, &all, &prev_mask); -+ #else - pthread_sigmask (SIG_SETMASK, &all, &prev_mask); - #endif -+#endif - glib_worker_context = g_main_context_new (); - g_thread_new ("gmain", glib_worker_main, NULL); - #ifdef G_OS_UNIX -+ #if defined(__redox__) -+ sigprocmask (SIG_SETMASK, &prev_mask, NULL); -+ #else - pthread_sigmask (SIG_SETMASK, &prev_mask, NULL); - #endif -+#endif - g_once_init_leave (&initialised, TRUE); - } - -diff -ruwN source/glib/gslice.c source-new/glib/gslice.c ---- source/glib/gslice.c 2018-12-23 06:10:41.000000000 -0700 -+++ source-new/glib/gslice.c 2019-01-05 11:11:23.896640840 -0700 -@@ -405,6 +405,8 @@ - GetSystemInfo (&system_info); - sys_page_size = system_info.dwPageSize; - } -+#elif defined(__redox__) -+ sys_page_size = getpagesize(); - #else - sys_page_size = sysconf (_SC_PAGESIZE); /* = sysconf (_SC_PAGE_SIZE); = getpagesize(); */ - #endif -diff -ruwN source/glib/gspawn.c source-new/glib/gspawn.c ---- source/glib/gspawn.c 2018-12-23 06:10:41.000000000 -0700 -+++ source-new/glib/gspawn.c 2019-01-05 11:20:25.669130455 -0700 -@@ -1217,7 +1217,11 @@ - open_max = rl.rlim_max; - else - #endif -+#if defined(__redox__) -+ open_max = INT_MAX; -+#else - open_max = sysconf (_SC_OPEN_MAX); -+#endif - - for (fd = 0; fd < open_max; fd++) - if ((res = cb (data, fd)) != 0) -diff -ruwN source/glib/gstrfuncs.c source-new/glib/gstrfuncs.c ---- source/glib/gstrfuncs.c 2018-12-23 06:10:41.000000000 -0700 -+++ source-new/glib/gstrfuncs.c 2019-01-05 11:11:59.452834000 -0700 -@@ -55,6 +55,12 @@ - #include "glibintl.h" - - -+#if defined(__redox__) -+int strcasecmp(const char *s1, const char *s2); -+int strncasecmp(const char *s1, const char *s2, size_t n); -+#endif -+ -+ - /** - * SECTION:string_utils - * @title: String Utility Functions diff -ruwN source/glib/gthread-posix.c source-new/glib/gthread-posix.c --- source/glib/gthread-posix.c 2018-12-23 06:10:41.000000000 -0700 +++ source-new/glib/gthread-posix.c 2019-01-05 11:40:57.454759289 -0700 From f3c5f4e68a4f237cf5856205ff15edec142cf2b2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 13 Jan 2019 14:33:46 -0700 Subject: [PATCH 0571/3180] Remove xz patch --- recipes/xz/04-no-fchown-fchmod.patch | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 recipes/xz/04-no-fchown-fchmod.patch diff --git a/recipes/xz/04-no-fchown-fchmod.patch b/recipes/xz/04-no-fchown-fchmod.patch deleted file mode 100644 index d4b69e1d..00000000 --- a/recipes/xz/04-no-fchown-fchmod.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -ru source/src/xz/file_io.c source-new/src/xz/file_io.c ---- source/src/xz/file_io.c 2016-12-30 03:13:57.000000000 -0800 -+++ source-new/src/xz/file_io.c 2017-08-08 12:49:15.225290972 -0700 -@@ -351,7 +351,7 @@ - io_copy_attrs(const file_pair *pair) - { - // Skip chown and chmod on Windows. --#ifndef TUKLIB_DOSLIKE -+#if 0 - // This function is more tricky than you may think at first. - // Blindly copying permissions may permit users to access the - // destination file who didn't have permission to access the From e4521571daed1ecbe6a322e1d4b999f2cb45e27a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 15 Jan 2019 21:08:29 -0700 Subject: [PATCH 0572/3180] WIP: Update ssh patch --- recipes/ssh/recipe.sh | 35 +- recipes/ssh/redox.patch | 138 ++ recipes/ssh/ssh.patch | 4082 --------------------------------------- 3 files changed, 141 insertions(+), 4114 deletions(-) create mode 100644 recipes/ssh/redox.patch delete mode 100644 recipes/ssh/ssh.patch diff --git a/recipes/ssh/recipe.sh b/recipes/ssh/recipe.sh index ffdba538..576b4b9e 100644 --- a/recipes/ssh/recipe.sh +++ b/recipes/ssh/recipe.sh @@ -1,6 +1,6 @@ -VERSION=7.6p1 +VERSION=7.9p1 TAR=http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-$VERSION.tar.gz -BUILD_DEPENDS=(zlib openssl) +BUILD_DEPENDS=(openssl zlib) function recipe_version { echo "$VERSION" @@ -12,41 +12,12 @@ function recipe_update { skip=1 } -function newlib_build { - rm -rf ../newlib - sysroot="$(realpath ../sysroot)" - cd .. - git clone --recursive https://github.com/sajattack/newlib -b ssh-deps - cd newlib - pushd newlib/libc/sys - aclocal-1.11 -I ../.. - autoconf - automake-1.11 --cygnus Makefile - popd - - pushd newlib/libc/sys/redox - aclocal-1.11 -I ../../.. - autoconf - automake-1.11 --cygnus Makefile - popd - - CC= ./configure --target="${HOST}" --prefix=/ - make all -j"$(nproc)" - make DESTDIR="$sysroot" install - cd .. - cp -r $sysroot/x86_64-unknown-redox/* $sysroot - rm -rf $sysroot/x86_64-unknown-redox - rm -rf newlib - cd build -} - function recipe_build { - newlib_build sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" ./configure --host=${HOST} --prefix=/ - make + make -j$(nproc) skip=1 } diff --git a/recipes/ssh/redox.patch b/recipes/ssh/redox.patch new file mode 100644 index 00000000..f19001f7 --- /dev/null +++ b/recipes/ssh/redox.patch @@ -0,0 +1,138 @@ +diff -ruwN source/channels.c source-new/channels.c +--- source/channels.c 2018-10-16 18:01:20.000000000 -0600 ++++ source-new/channels.c 2019-01-15 21:01:12.203686148 -0700 +@@ -1865,10 +1865,10 @@ + fatal(":%s: channel %d: no remote id", __func__, c->self); + /* for rdynamic the OPEN_CONFIRMATION has been sent already */ + isopen = (c->type == SSH_CHANNEL_RDYNAMIC_FINISH); +- if (getsockopt(c->sock, SOL_SOCKET, SO_ERROR, &err, &sz) < 0) { +- err = errno; +- error("getsockopt SO_ERROR failed"); +- } ++ // if (getsockopt(c->sock, SOL_SOCKET, SO_ERROR, &err, &sz) < 0) { ++ // err = errno; ++ // error("getsockopt SO_ERROR failed"); ++ // } + if (err == 0) { + debug("channel %d: connected to %s port %d", + c->self, c->connect_ctx.host, c->connect_ctx.port); +diff -ruwN source/config.sub source-new/config.sub +--- source/config.sub 2018-10-16 18:01:20.000000000 -0600 ++++ source-new/config.sub 2019-01-15 19:39:26.234492329 -0700 +@@ -1407,7 +1407,7 @@ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ +- | -onefs* | -tirtos* | -phoenix*) ++ | -onefs* | -tirtos* | -phoenix* | -redox*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) +diff -ruwN source/openbsd-compat/bindresvport.c source-new/openbsd-compat/bindresvport.c +--- source/openbsd-compat/bindresvport.c 2018-10-16 18:01:20.000000000 -0600 ++++ source-new/openbsd-compat/bindresvport.c 2019-01-15 20:46:06.879804135 -0700 +@@ -42,6 +42,10 @@ + #include + #include + ++#ifndef IPPORT_RESERVED ++#define IPPORT_RESERVED 1024 ++#endif ++ + #define STARTPORT 600 + #define ENDPORT (IPPORT_RESERVED - 1) + #define NPORTS (ENDPORT - STARTPORT + 1) +diff -ruwN source/openbsd-compat/bsd-getpeereid.c source-new/openbsd-compat/bsd-getpeereid.c +--- source/openbsd-compat/bsd-getpeereid.c 2018-10-16 18:01:20.000000000 -0600 ++++ source-new/openbsd-compat/bsd-getpeereid.c 2019-01-15 20:43:12.410583244 -0700 +@@ -23,7 +23,7 @@ + + #include + +-#if defined(SO_PEERCRED) ++#if defined(SO_PEERCRED) && !defined(__redox__) + int + getpeereid(int s, uid_t *euid, gid_t *gid) + { +diff -ruwN source/openbsd-compat/bsd-misc.c source-new/openbsd-compat/bsd-misc.c +--- source/openbsd-compat/bsd-misc.c 2018-10-16 18:01:20.000000000 -0600 ++++ source-new/openbsd-compat/bsd-misc.c 2019-01-15 20:28:46.619332501 -0700 +@@ -25,6 +25,9 @@ + # include + #endif + ++#if defined(__redox__) ++#include ++#endif + #include + #include + #include +diff -ruwN source/openbsd-compat/getrrsetbyname.c source-new/openbsd-compat/getrrsetbyname.c +--- source/openbsd-compat/getrrsetbyname.c 2018-10-16 18:01:20.000000000 -0600 ++++ source-new/openbsd-compat/getrrsetbyname.c 2019-01-15 20:57:20.248721738 -0700 +@@ -47,7 +47,7 @@ + + #include "includes.h" + +-#if !defined (HAVE_GETRRSETBYNAME) && !defined (HAVE_LDNS) ++#if !defined (HAVE_GETRRSETBYNAME) && !defined (HAVE_LDNS) && !defined(__redox__) + + #include + #include +diff -ruwN source/openbsd-compat/getrrsetbyname.h source-new/openbsd-compat/getrrsetbyname.h +--- source/openbsd-compat/getrrsetbyname.h 2018-10-16 18:01:20.000000000 -0600 ++++ source-new/openbsd-compat/getrrsetbyname.h 2019-01-15 19:54:39.564320719 -0700 +@@ -50,7 +50,7 @@ + + #include "includes.h" + +-#ifndef HAVE_GETRRSETBYNAME ++#if !defined(HAVE_GETRRSETBYNAME) && !defined(__redox__) + + #include + #include +diff -ruwN source/openbsd-compat/openbsd-compat.h source-new/openbsd-compat/openbsd-compat.h +--- source/openbsd-compat/openbsd-compat.h 2018-10-16 18:01:20.000000000 -0600 ++++ source-new/openbsd-compat/openbsd-compat.h 2019-01-15 20:14:24.316498869 -0700 +@@ -36,6 +36,10 @@ + + #include /* for wchar_t */ + ++#if defined(__redox__) ++#include ++#endif ++ + /* OpenBSD function replacements */ + #include "base64.h" + #include "sigact.h" +diff -ruwN source/sshbuf-misc.c source-new/sshbuf-misc.c +--- source/sshbuf-misc.c 2018-10-16 18:01:20.000000000 -0600 ++++ source-new/sshbuf-misc.c 2019-01-15 20:45:08.969783102 -0700 +@@ -28,7 +28,9 @@ + #include + #include + #include ++#if !defined(__redox__) + #include ++#endif + #include + + #include "ssherr.h" +@@ -158,4 +160,3 @@ + r[l] = '\0'; + return r; + } +- +diff -ruwN source/sshkey.c source-new/sshkey.c +--- source/sshkey.c 2018-10-16 18:01:20.000000000 -0600 ++++ source-new/sshkey.c 2019-01-15 20:13:21.629829281 -0700 +@@ -42,7 +42,9 @@ + #include + #include + #include ++#if !defined(__redox__) + #include ++#endif + #ifdef HAVE_UTIL_H + #include + #endif /* HAVE_UTIL_H */ diff --git a/recipes/ssh/ssh.patch b/recipes/ssh/ssh.patch deleted file mode 100644 index 6774b660..00000000 --- a/recipes/ssh/ssh.patch +++ /dev/null @@ -1,4082 +0,0 @@ -Only in source-new: addrmatch.o -diff -ru source/atomicio.c source-new/atomicio.c ---- source/atomicio.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/atomicio.c 2017-11-02 18:31:51.855545895 -0700 -@@ -116,7 +116,7 @@ - - #ifndef BROKEN_READV_COMPARISON - pfd.fd = fd; -- pfd.events = f == readv ? POLLIN : POLLOUT; -+ //pfd.events = f == readv ? POLLIN : POLLOUT; - #endif - for (; iovcnt > 0 && iov[0].iov_len > 0;) { - res = (f) (fd, iov, iovcnt); -iff -ru source/auth-pam.c source-new/auth-pam.c ---- source/auth-pam.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/auth-pam.c 2017-11-02 18:31:51.898879152 -0700 -@@ -128,6 +128,10 @@ - typedef pthread_t sp_pthread_t; - #else - typedef pid_t sp_pthread_t; -+# define pthread_create(a, b, c, d) _ssh_compat_pthread_create(a, b, c, d) -+# define pthread_exit(a) _ssh_compat_pthread_exit(a) -+# define pthread_cancel(a) _ssh_compat_pthread_cancel(a) -+# define pthread_join(a, b) _ssh_compat_pthread_join(a, b) - #endif - - struct pam_ctxt { -diff -ru source/channels.c source-new/channels.c ---- source/channels.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/channels.c 2017-11-02 18:31:51.902212479 -0700 -@@ -1556,14 +1556,16 @@ - - debug("X11 connection requested."); - addrlen = sizeof(addr); -- newsock = accept(c->sock, (struct sockaddr *)&addr, &addrlen); -- if (c->single_connection) { -- oerrno = errno; -- debug2("single_connection: closing X11 listener."); -- channel_close_fd(ssh, &c->sock); -- chan_mark_dead(ssh, c); -- errno = oerrno; -- } -+ /* -+ *newsock = accept(c->sock, (struct sockaddr *)&addr, &addrlen); -+ *if (c->single_connection) { -+ * oerrno = errno; -+ * debug2("single_connection: closing X11 listener."); -+ * channel_close_fd(ssh, &c->sock); -+ * chan_mark_dead(ssh, c); -+ * errno = oerrno; -+ *} -+ */ - if (newsock < 0) { - if (errno != EINTR && errno != EWOULDBLOCK && - errno != ECONNABORTED) -@@ -1677,8 +1679,8 @@ - * Set socket options. - * Allow local port reuse in TIME_WAIT. - */ -- if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) == -1) -- error("setsockopt SO_REUSEADDR fd %d: %s", fd, strerror(errno)); -+// if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) == -1) -+// error("setsockopt SO_REUSEADDR fd %d: %s", fd, strerror(errno)); - } - - void -@@ -1724,15 +1726,17 @@ - } - - addrlen = sizeof(addr); -- newsock = accept(c->sock, (struct sockaddr *)&addr, &addrlen); -- if (newsock < 0) { -- if (errno != EINTR && errno != EWOULDBLOCK && -- errno != ECONNABORTED) -- error("accept: %.100s", strerror(errno)); -- if (errno == EMFILE || errno == ENFILE) -- c->notbefore = monotime() + 1; -- return; -- } -+ /* -+ *newsock = accept(c->sock, (struct sockaddr *)&addr, &addrlen); -+ *if (newsock < 0) { -+ * if (errno != EINTR && errno != EWOULDBLOCK && -+ * errno != ECONNABORTED) -+ * error("accept: %.100s", strerror(errno)); -+ * if (errno == EMFILE || errno == ENFILE) -+ * c->notbefore = monotime() + 1; -+ * return; -+ *} -+ */ - if (c->host_port != PORT_STREAMLOCAL) - set_nodelay(newsock); - nc = channel_new(ssh, rtype, nextstate, newsock, newsock, -1, -@@ -1763,13 +1767,15 @@ - return; - - addrlen = sizeof(addr); -- newsock = accept(c->sock, (struct sockaddr *)&addr, &addrlen); -- if (newsock < 0) { -- error("accept from auth socket: %.100s", strerror(errno)); -- if (errno == EMFILE || errno == ENFILE) -- c->notbefore = monotime() + 1; -- return; -- } -+ /* -+ *newsock = accept(c->sock, (struct sockaddr *)&addr, &addrlen); -+ *if (newsock < 0) { -+ * error("accept from auth socket: %.100s", strerror(errno)); -+ * if (errno == EMFILE || errno == ENFILE) -+ * c->notbefore = monotime() + 1; -+ * return; -+ *} -+ */ - nc = channel_new(ssh, "accepted auth socket", - SSH_CHANNEL_OPENING, newsock, newsock, -1, - c->local_window_max, c->local_maxpacket, -@@ -1792,10 +1798,12 @@ - fatal(":%s: channel %d: no remote id", __func__, c->self); - /* for rdynamic the OPEN_CONFIRMATION has been sent already */ - isopen = (c->type == SSH_CHANNEL_RDYNAMIC_FINISH); -- if (getsockopt(c->sock, SOL_SOCKET, SO_ERROR, &err, &sz) < 0) { -- err = errno; -- error("getsockopt SO_ERROR failed"); -- } -+ /* -+ *if (getsockopt(c->sock, SOL_SOCKET, SO_ERROR, &err, &sz) < 0) { -+ * err = errno; -+ * error("getsockopt SO_ERROR failed"); -+ *} -+ */ - if (err == 0) { - debug("channel %d: connected to %s port %d", - c->self, c->connect_ctx.host, c->connect_ctx.port); -@@ -2234,13 +2242,15 @@ - */ - memset(&addr, 0, sizeof(addr)); - addrlen = sizeof(addr); -- if ((newsock = accept(c->sock, (struct sockaddr*)&addr, -- &addrlen)) == -1) { -- error("%s accept: %s", __func__, strerror(errno)); -- if (errno == EMFILE || errno == ENFILE) -- c->notbefore = monotime() + 1; -- return; -- } -+ /* -+ *if ((newsock = accept(c->sock, (struct sockaddr*)&addr, -+ * &addrlen)) == -1) { -+ * error("%s accept: %s", __func__, strerror(errno)); -+ * if (errno == EMFILE || errno == ENFILE) -+ * c->notbefore = monotime() + 1; -+ * return; -+ *} -+ */ - - if (getpeereid(newsock, &euid, &egid) < 0) { - error("%s getpeereid failed: %s", __func__, -@@ -4318,8 +4328,10 @@ - if (sc->channels[i] == NULL || !sc->channels[i]->client_tty || - sc->channels[i]->type != SSH_CHANNEL_OPEN) - continue; -- if (ioctl(sc->channels[i]->rfd, TIOCGWINSZ, &ws) < 0) -- continue; -+ /* -+ *if (ioctl(sc->channels[i]->rfd, TIOCGWINSZ, &ws) < 0) -+ * continue; -+ */ - channel_request_start(ssh, i, "window-change", 0); - if ((r = sshpkt_put_u32(ssh, (u_int)ws.ws_col)) != 0 || - (r = sshpkt_put_u32(ssh, (u_int)ws.ws_row)) != 0 || -diff -ru source/cipher.c source-new/cipher.c ---- source/cipher.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/cipher.c 2017-11-02 18:31:51.902212479 -0700 -@@ -297,7 +297,10 @@ - goto out; - } - } -- if (EVP_CipherInit(cc->evp, NULL, (u_char *)key, NULL, -1) == 0) { -+ /* in OpenSSL 1.1.0, EVP_CipherInit clears all previous setups; -+ use EVP_CipherInit_ex for augmenting */ -+ if (EVP_CipherInit_ex(cc->evp, NULL, NULL, (u_char *)key, NULL, -1) == 0) -+ { - ret = SSH_ERR_LIBCRYPTO_ERROR; - goto out; - } -@@ -486,7 +489,7 @@ - len, iv)) - return SSH_ERR_LIBCRYPTO_ERROR; - } else -- memcpy(iv, cc->evp->iv, len); -+ memcpy(iv, EVP_CIPHER_CTX_iv(cc->evp), len); - #endif - return 0; - } -@@ -520,14 +523,19 @@ - EVP_CTRL_GCM_SET_IV_FIXED, -1, (void *)iv)) - return SSH_ERR_LIBCRYPTO_ERROR; - } else -- memcpy(cc->evp->iv, iv, evplen); -+ memcpy(EVP_CIPHER_CTX_iv(cc->evp), iv, evplen); - #endif - return 0; - } - - #ifdef WITH_OPENSSL --#define EVP_X_STATE(evp) (evp)->cipher_data --#define EVP_X_STATE_LEN(evp) (evp)->cipher->ctx_size -+# if OPENSSL_VERSION_NUMBER >= 0x10100000UL -+#define EVP_X_STATE(evp) EVP_CIPHER_CTX_get_cipher_data(evp) -+#define EVP_X_STATE_LEN(evp) EVP_CIPHER_impl_ctx_size(EVP_CIPHER_CTX_cipher(evp)) -+# else -+#define EVP_X_STATE(evp) (evp).cipher_data -+#define EVP_X_STATE_LEN(evp) (evp).cipher->ctx_size -+# endif - #endif - - int -diff -ru source/cipher.h source-new/cipher.h ---- source/cipher.h 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/cipher.h 2017-11-02 18:31:51.902212479 -0700 -@@ -46,7 +46,18 @@ - #define CIPHER_DECRYPT 0 - - struct sshcipher; -+#if 0 -+struct sshcipher_ctx { -+ int plaintext; -+ int encrypt; -+ EVP_CIPHER_CTX *evp; -+ struct chachapoly_ctx cp_ctx; /* XXX union with evp? */ -+ struct aesctr_ctx ac_ctx; /* XXX union with evp? */ -+ const struct sshcipher *cipher; -+}; -+#else - struct sshcipher_ctx; -+#endif - - const struct sshcipher *cipher_by_name(const char *); - const char *cipher_warning_message(const struct sshcipher_ctx *); -diff -ru source/clientloop.c source-new/clientloop.c ---- source/clientloop.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/clientloop.c 2017-11-02 18:31:51.902212479 -0700 -@@ -2182,8 +2182,8 @@ - struct winsize ws; - - /* Store window size in the packet. */ -- if (ioctl(in_fd, TIOCGWINSZ, &ws) < 0) -- memset(&ws, 0, sizeof(ws)); -+ //if (ioctl(in_fd, TIOCGWINSZ, &ws) < 0) -+ // memset(&ws, 0, sizeof(ws)); - - channel_request_start(ssh, id, "pty-req", 1); - client_expect_confirm(ssh, id, "PTY allocation", CONFIRM_TTY); -diff -ru source/config.sub source-new/config.sub ---- source/config.sub 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/config.sub 2017-11-02 18:31:51.908879134 -0700 -@@ -1381,7 +1381,7 @@ - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. -- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ -+ -gnu* | -bsd* | -redox* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* | -plan9* \ -diff -ru source/configure source-new/configure ---- source/configure 2017-10-03 09:06:08.000000000 -0700 -+++ source-new/configure 2017-11-02 18:31:51.908879134 -0700 -@@ -12688,7 +12688,6 @@ - 100*) ;; # 1.0.x - 200*) ;; # LibreSSL - *) -- as_fn_error $? "OpenSSL >= 1.1.0 is not yet supported (have \"$ssl_library_ver\")" "$LINENO" 5 - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ssl_library_ver" >&5 -diff -ru source/dh.c source-new/dh.c ---- source/dh.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/dh.c 2017-11-02 18:31:51.912212462 -0700 -@@ -212,14 +212,15 @@ - /* diffie-hellman-groupN-sha1 */ - - int --dh_pub_is_valid(DH *dh, BIGNUM *dh_pub) -+dh_pub_is_valid(const DH *dh, const BIGNUM *dh_pub) - { - int i; - int n = BN_num_bits(dh_pub); - int bits_set = 0; - BIGNUM *tmp; -+ const BIGNUM *p; - -- if (dh_pub->neg) { -+ if (BN_is_negative(dh_pub)) { - logit("invalid public DH value: negative"); - return 0; - } -@@ -232,7 +233,8 @@ - error("%s: BN_new failed", __func__); - return 0; - } -- if (!BN_sub(tmp, dh->p, BN_value_one()) || -+ DH_get0_pqg(dh, &p, NULL, NULL); -+ if (!BN_sub(tmp, p, BN_value_one()) || - BN_cmp(dh_pub, tmp) != -1) { /* pub_exp > p-2 */ - BN_clear_free(tmp); - logit("invalid public DH value: >= p-1"); -@@ -243,14 +245,14 @@ - for (i = 0; i <= n; i++) - if (BN_is_bit_set(dh_pub, i)) - bits_set++; -- debug2("bits set: %d/%d", bits_set, BN_num_bits(dh->p)); -+ debug2("bits set: %d/%d", bits_set, BN_num_bits(p)); - - /* - * if g==2 and bits_set==1 then computing log_g(dh_pub) is trivial - */ - if (bits_set < 4) { - logit("invalid public DH value (%d/%d)", -- bits_set, BN_num_bits(dh->p)); -+ bits_set, BN_num_bits(p)); - return 0; - } - return 1; -@@ -260,9 +262,13 @@ - dh_gen_key(DH *dh, int need) - { - int pbits; -+ const BIGNUM *p, *pub_key; -+ BIGNUM *priv_key; - -- if (need < 0 || dh->p == NULL || -- (pbits = BN_num_bits(dh->p)) <= 0 || -+ DH_get0_pqg(dh, &p, NULL, NULL); -+ -+ if (need < 0 || p == NULL || -+ (pbits = BN_num_bits(p)) <= 0 || - need > INT_MAX / 2 || 2 * need > pbits) - return SSH_ERR_INVALID_ARGUMENT; - if (need < 256) -@@ -271,10 +277,13 @@ - * Pollard Rho, Big step/Little Step attacks are O(sqrt(n)), - * so double requested need here. - */ -- dh->length = MINIMUM(need * 2, pbits - 1); -- if (DH_generate_key(dh) == 0 || -- !dh_pub_is_valid(dh, dh->pub_key)) { -- BN_clear_free(dh->priv_key); -+ DH_set_length(dh, MIN(need * 2, pbits - 1)); -+ if (DH_generate_key(dh) == 0) { -+ return SSH_ERR_LIBCRYPTO_ERROR; -+ } -+ DH_get0_key(dh, &pub_key, &priv_key); -+ if (!dh_pub_is_valid(dh, pub_key)) { -+ BN_clear(priv_key); - return SSH_ERR_LIBCRYPTO_ERROR; - } - return 0; -@@ -283,16 +292,27 @@ - DH * - dh_new_group_asc(const char *gen, const char *modulus) - { -- DH *dh; -+ DH *dh = NULL; -+ BIGNUM *p=NULL, *g=NULL; - -- if ((dh = DH_new()) == NULL) -- return NULL; -- if (BN_hex2bn(&dh->p, modulus) == 0 || -- BN_hex2bn(&dh->g, gen) == 0) { -- DH_free(dh); -- return NULL; -+ if ((dh = DH_new()) == NULL || -+ (p = BN_new()) == NULL || -+ (g = BN_new()) == NULL) -+ goto null; -+ if (BN_hex2bn(&p, modulus) == 0 || -+ BN_hex2bn(&g, gen) == 0) { -+ goto null; - } -+ if (DH_set0_pqg(dh, p, NULL, g) == 0) { -+ goto null; -+ } -+ p = g = NULL; - return (dh); -+null: -+ BN_free(p); -+ BN_free(g); -+ DH_free(dh); -+ return NULL; - } - - /* -@@ -307,8 +327,8 @@ - - if ((dh = DH_new()) == NULL) - return NULL; -- dh->p = modulus; -- dh->g = gen; -+ if (DH_set0_pqg(dh, modulus, NULL, gen) == 0) -+ return NULL; - - return (dh); - } -diff -ru source/dh.h source-new/dh.h ---- source/dh.h 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/dh.h 2017-11-02 18:31:51.912212462 -0700 -@@ -42,7 +42,7 @@ - DH *dh_new_group_fallback(int); - - int dh_gen_key(DH *, int); --int dh_pub_is_valid(DH *, BIGNUM *); -+int dh_pub_is_valid(const DH *, const BIGNUM *); - - u_int dh_estimate(int); - -diff -ru source/digest-openssl.c source-new/digest-openssl.c ---- source/digest-openssl.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/digest-openssl.c 2017-11-02 18:31:51.912212462 -0700 -@@ -43,7 +43,7 @@ - - struct ssh_digest_ctx { - int alg; -- EVP_MD_CTX mdctx; -+ EVP_MD_CTX *mdctx; - }; - - struct ssh_digest { -@@ -106,20 +106,21 @@ - size_t - ssh_digest_blocksize(struct ssh_digest_ctx *ctx) - { -- return EVP_MD_CTX_block_size(&ctx->mdctx); -+ return EVP_MD_CTX_block_size(ctx->mdctx); - } - - struct ssh_digest_ctx * - ssh_digest_start(int alg) - { - const struct ssh_digest *digest = ssh_digest_by_alg(alg); -- struct ssh_digest_ctx *ret; -+ struct ssh_digest_ctx *ret = NULL; - - if (digest == NULL || ((ret = calloc(1, sizeof(*ret))) == NULL)) - return NULL; - ret->alg = alg; -- EVP_MD_CTX_init(&ret->mdctx); -- if (EVP_DigestInit_ex(&ret->mdctx, digest->mdfunc(), NULL) != 1) { -+ if ((ret->mdctx = EVP_MD_CTX_new()) == NULL || -+ EVP_DigestInit_ex(ret->mdctx, digest->mdfunc(), NULL) != 1) { -+ EVP_MD_CTX_free(ret->mdctx); - free(ret); - return NULL; - } -@@ -132,7 +133,7 @@ - if (from->alg != to->alg) - return SSH_ERR_INVALID_ARGUMENT; - /* we have bcopy-style order while openssl has memcpy-style */ -- if (!EVP_MD_CTX_copy_ex(&to->mdctx, &from->mdctx)) -+ if (!EVP_MD_CTX_copy_ex(to->mdctx, from->mdctx)) - return SSH_ERR_LIBCRYPTO_ERROR; - return 0; - } -@@ -140,7 +141,7 @@ - int - ssh_digest_update(struct ssh_digest_ctx *ctx, const void *m, size_t mlen) - { -- if (EVP_DigestUpdate(&ctx->mdctx, m, mlen) != 1) -+ if (EVP_DigestUpdate(ctx->mdctx, m, mlen) != 1) - return SSH_ERR_LIBCRYPTO_ERROR; - return 0; - } -@@ -161,7 +162,7 @@ - return SSH_ERR_INVALID_ARGUMENT; - if (dlen < digest->digest_len) /* No truncation allowed */ - return SSH_ERR_INVALID_ARGUMENT; -- if (EVP_DigestFinal_ex(&ctx->mdctx, d, &l) != 1) -+ if (EVP_DigestFinal_ex(ctx->mdctx, d, &l) != 1) - return SSH_ERR_LIBCRYPTO_ERROR; - if (l != digest->digest_len) /* sanity */ - return SSH_ERR_INTERNAL_ERROR; -@@ -172,7 +173,7 @@ - ssh_digest_free(struct ssh_digest_ctx *ctx) - { - if (ctx != NULL) { -- EVP_MD_CTX_cleanup(&ctx->mdctx); -+ EVP_MD_CTX_free(ctx->mdctx); - explicit_bzero(ctx, sizeof(*ctx)); - free(ctx); - } -diff -ru source/groupaccess.c source-new/groupaccess.c ---- source/groupaccess.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/groupaccess.c 2017-11-02 18:31:51.915545790 -0700 -@@ -67,8 +67,10 @@ - if (getgrouplist(user, base, groups_bygid, &ngroups) == -1) - logit("getgrouplist: groups list too small"); - for (i = 0, j = 0; i < ngroups; i++) -- if ((gr = getgrgid(groups_bygid[i])) != NULL) -- groups_byname[j++] = xstrdup(gr->gr_name); -+ /* -+ *if ((gr = getgrgid(groups_bygid[i])) != NULL) -+ * groups_byname[j++] = xstrdup(gr->gr_name); -+ */ - free(groups_bygid); - return (ngroups = j); - } -diff -ru source/kexdhc.c source-new/kexdhc.c ---- source/kexdhc.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/kexdhc.c 2017-11-02 18:31:51.918879116 -0700 -@@ -81,11 +81,16 @@ - goto out; - } - debug("sending SSH2_MSG_KEXDH_INIT"); -- if ((r = dh_gen_key(kex->dh, kex->we_need * 8)) != 0 || -- (r = sshpkt_start(ssh, SSH2_MSG_KEXDH_INIT)) != 0 || -- (r = sshpkt_put_bignum2(ssh, kex->dh->pub_key)) != 0 || -+ { -+ const BIGNUM *pub_key; -+ if ((r = dh_gen_key(kex->dh, kex->we_need * 8)) != 0) -+ goto out; -+ DH_get0_key(kex->dh, &pub_key, NULL); -+ if ((r = sshpkt_start(ssh, SSH2_MSG_KEXDH_INIT)) != 0 || -+ (r = sshpkt_put_bignum2(ssh, pub_key)) != 0 || - (r = sshpkt_send(ssh)) != 0) - goto out; -+ } - #ifdef DEBUG_KEXDH - DHparams_print_fp(stderr, kex->dh); - fprintf(stderr, "pub= "); -@@ -169,6 +174,9 @@ - - /* calc and verify H */ - hashlen = sizeof(hash); -+ { -+ const BIGNUM *pub_key; -+ DH_get0_key(kex->dh, &pub_key, NULL); - if ((r = kex_dh_hash( - kex->hash_alg, - kex->client_version_string, -@@ -176,11 +184,13 @@ - sshbuf_ptr(kex->my), sshbuf_len(kex->my), - sshbuf_ptr(kex->peer), sshbuf_len(kex->peer), - server_host_key_blob, sbloblen, -- kex->dh->pub_key, -+ pub_key, - dh_server_pub, - shared_secret, -- hash, &hashlen)) != 0) -+ hash, &hashlen)) != 0) { - goto out; -+ } -+ } - - if ((r = sshkey_verify(server_host_key, signature, slen, hash, hashlen, - ssh->compat)) != 0) -diff -ru source/kexdhs.c source-new/kexdhs.c ---- source/kexdhs.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/kexdhs.c 2017-11-02 18:31:51.918879116 -0700 -@@ -87,6 +87,10 @@ - ssh_dispatch_set(ssh, SSH2_MSG_KEXDH_INIT, &input_kex_dh_init); - r = 0; - out: -+ if (r != 0) { -+ if (kex->dh) DH_free(kex->dh); -+ kex->dh = NULL; -+ } - return r; - } - -@@ -163,6 +167,9 @@ - goto out; - /* calc H */ - hashlen = sizeof(hash); -+ { -+ const BIGNUM *pub_key; -+ DH_get0_key(kex->dh, &pub_key, NULL); - if ((r = kex_dh_hash( - kex->hash_alg, - kex->client_version_string, -@@ -171,10 +178,12 @@ - sshbuf_ptr(kex->my), sshbuf_len(kex->my), - server_host_key_blob, sbloblen, - dh_client_pub, -- kex->dh->pub_key, -+ pub_key, - shared_secret, -- hash, &hashlen)) != 0) -+ hash, &hashlen)) != 0) { - goto out; -+ } -+ } - - /* save session id := H */ - if (kex->session_id == NULL) { -@@ -195,12 +204,17 @@ - /* destroy_sensitive_data(); */ - - /* send server hostkey, DH pubkey 'f' and singed H */ -+ { -+ const BIGNUM *pub_key; -+ DH_get0_key(kex->dh, &pub_key, NULL); - if ((r = sshpkt_start(ssh, SSH2_MSG_KEXDH_REPLY)) != 0 || - (r = sshpkt_put_string(ssh, server_host_key_blob, sbloblen)) != 0 || -- (r = sshpkt_put_bignum2(ssh, kex->dh->pub_key)) != 0 || /* f */ -+ (r = sshpkt_put_bignum2(ssh, pub_key)) != 0 || /* f */ - (r = sshpkt_put_string(ssh, signature, slen)) != 0 || -- (r = sshpkt_send(ssh)) != 0) -+ (r = sshpkt_send(ssh)) != 0) { - goto out; -+ } -+ } - - if ((r = kex_derive_keys_bn(ssh, hash, hashlen, shared_secret)) == 0) - r = kex_send_newkeys(ssh); -diff -ru source/kexgexc.c source-new/kexgexc.c ---- source/kexgexc.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/kexgexc.c 2017-11-02 18:31:51.918879116 -0700 -@@ -118,11 +118,17 @@ - p = g = NULL; /* belong to kex->dh now */ - - /* generate and send 'e', client DH public key */ -- if ((r = dh_gen_key(kex->dh, kex->we_need * 8)) != 0 || -- (r = sshpkt_start(ssh, SSH2_MSG_KEX_DH_GEX_INIT)) != 0 || -- (r = sshpkt_put_bignum2(ssh, kex->dh->pub_key)) != 0 || -- (r = sshpkt_send(ssh)) != 0) -+ { -+ const BIGNUM *pub_key; -+ if ((r = dh_gen_key(kex->dh, kex->we_need * 8)) != 0) -+ goto out; -+ DH_get0_key(kex->dh, &pub_key, NULL); -+ if ((r = sshpkt_start(ssh, SSH2_MSG_KEX_DH_GEX_INIT)) != 0 || -+ (r = sshpkt_put_bignum2(ssh, pub_key)) != 0 || -+ (r = sshpkt_send(ssh)) != 0) { - goto out; -+ } -+ } - debug("SSH2_MSG_KEX_DH_GEX_INIT sent"); - #ifdef DEBUG_KEXDH - DHparams_print_fp(stderr, kex->dh); -@@ -134,10 +140,12 @@ - ssh_dispatch_set(ssh, SSH2_MSG_KEX_DH_GEX_REPLY, &input_kex_dh_gex_reply); - r = 0; - out: -- if (p) -+ if (r != 0) { - BN_clear_free(p); -- if (g) - BN_clear_free(g); -+ DH_free(kex->dh); -+ kex->dh = NULL; -+ } - return r; - } - -@@ -214,6 +222,10 @@ - - /* calc and verify H */ - hashlen = sizeof(hash); -+ { -+ const BIGNUM *p, *g, *pub_key; -+ DH_get0_pqg(kex->dh, &p, NULL, &g); -+ DH_get0_key(kex->dh, &pub_key, NULL); - if ((r = kexgex_hash( - kex->hash_alg, - kex->client_version_string, -@@ -222,12 +234,14 @@ - sshbuf_ptr(kex->peer), sshbuf_len(kex->peer), - server_host_key_blob, sbloblen, - kex->min, kex->nbits, kex->max, -- kex->dh->p, kex->dh->g, -- kex->dh->pub_key, -+ p, g, -+ pub_key, - dh_server_pub, - shared_secret, -- hash, &hashlen)) != 0) -+ hash, &hashlen)) != 0) { - goto out; -+ } -+ } - - if ((r = sshkey_verify(server_host_key, signature, slen, hash, - hashlen, ssh->compat)) != 0) -diff -ru source/kexgexs.c source-new/kexgexs.c ---- source/kexgexs.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/kexgexs.c 2017-11-02 18:31:51.918879116 -0700 -@@ -101,11 +101,16 @@ - goto out; - } - debug("SSH2_MSG_KEX_DH_GEX_GROUP sent"); -+ { -+ const BIGNUM *p, *g; -+ DH_get0_pqg(kex->dh, &p, NULL, &g); - if ((r = sshpkt_start(ssh, SSH2_MSG_KEX_DH_GEX_GROUP)) != 0 || -- (r = sshpkt_put_bignum2(ssh, kex->dh->p)) != 0 || -- (r = sshpkt_put_bignum2(ssh, kex->dh->g)) != 0 || -- (r = sshpkt_send(ssh)) != 0) -+ (r = sshpkt_put_bignum2(ssh, p)) != 0 || -+ (r = sshpkt_put_bignum2(ssh, g)) != 0 || -+ (r = sshpkt_send(ssh)) != 0) { - goto out; -+ } -+ } - - /* Compute our exchange value in parallel with the client */ - if ((r = dh_gen_key(kex->dh, kex->we_need * 8)) != 0) -@@ -115,6 +120,10 @@ - ssh_dispatch_set(ssh, SSH2_MSG_KEX_DH_GEX_INIT, &input_kex_dh_gex_init); - r = 0; - out: -+ if (r != 0) { -+ DH_free(kex->dh); -+ kex->dh = NULL; -+ } - return r; - } - -@@ -191,6 +200,10 @@ - goto out; - /* calc H */ - hashlen = sizeof(hash); -+ { -+ const BIGNUM *p, *g, *pub_key; -+ DH_get0_pqg(kex->dh, &p, NULL, &g); -+ DH_get0_key(kex->dh, &pub_key, NULL); - if ((r = kexgex_hash( - kex->hash_alg, - kex->client_version_string, -@@ -199,12 +212,14 @@ - sshbuf_ptr(kex->my), sshbuf_len(kex->my), - server_host_key_blob, sbloblen, - kex->min, kex->nbits, kex->max, -- kex->dh->p, kex->dh->g, -+ p, g, - dh_client_pub, -- kex->dh->pub_key, -+ pub_key, - shared_secret, -- hash, &hashlen)) != 0) -+ hash, &hashlen)) != 0) { - goto out; -+ } -+ } - - /* save session id := H */ - if (kex->session_id == NULL) { -@@ -225,12 +240,17 @@ - /* destroy_sensitive_data(); */ - - /* send server hostkey, DH pubkey 'f' and singed H */ -+ { -+ const BIGNUM *pub_key; -+ DH_get0_key(kex->dh, &pub_key, NULL); - if ((r = sshpkt_start(ssh, SSH2_MSG_KEX_DH_GEX_REPLY)) != 0 || - (r = sshpkt_put_string(ssh, server_host_key_blob, sbloblen)) != 0 || -- (r = sshpkt_put_bignum2(ssh, kex->dh->pub_key)) != 0 || /* f */ -+ (r = sshpkt_put_bignum2(ssh, pub_key)) != 0 || /* f */ - (r = sshpkt_put_string(ssh, signature, slen)) != 0 || -- (r = sshpkt_send(ssh)) != 0) -+ (r = sshpkt_send(ssh)) != 0) { - goto out; -+ } -+ } - - if ((r = kex_derive_keys_bn(ssh, hash, hashlen, shared_secret)) == 0) - r = kex_send_newkeys(ssh); -diff -ru source/log.c source-new/log.c ---- source/log.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/log.c 2017-11-02 18:31:51.928879098 -0700 -@@ -324,8 +324,8 @@ - openlog_r(argv0 ? argv0 : __progname, LOG_PID, log_facility, &sdata); - closelog_r(&sdata); - #else -- openlog(argv0 ? argv0 : __progname, LOG_PID, log_facility); -- closelog(); -+ //openlog(argv0 ? argv0 : __progname, LOG_PID, log_facility); -+ //closelog(); - #endif - } - -@@ -465,9 +465,9 @@ - syslog_r(pri, &sdata, "%.500s", fmtbuf); - closelog_r(&sdata); - #else -- openlog(argv0 ? argv0 : __progname, LOG_PID, log_facility); -- syslog(pri, "%.500s", fmtbuf); -- closelog(); -+ //openlog(argv0 ? argv0 : __progname, LOG_PID, log_facility); -+ //syslog(pri, "%.500s", fmtbuf); -+ //closelog(); - #endif - } - errno = saved_errno; -diff -ru source/loginrec.c source-new/loginrec.c ---- source/loginrec.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/loginrec.c 2017-11-02 18:31:51.928879098 -0700 -@@ -746,7 +746,7 @@ - # ifdef HAVE_ADDR_V6_IN_UTMP - struct sockaddr_in6 *sa6; - # endif -- memset(utx, '\0', sizeof(*utx)); -+// memset(utx, '\0', sizeof(*utx)); - - # ifdef HAVE_ID_IN_UTMPX - line_abbrevname(utx->ut_id, li->line, sizeof(utx->ut_id)); -@@ -755,19 +755,19 @@ - /* this is done here to keep utmp constants out of loginrec.h */ - switch (li->type) { - case LTYPE_LOGIN: -- utx->ut_type = USER_PROCESS; -+// utx->ut_type = USER_PROCESS; - break; - case LTYPE_LOGOUT: -- utx->ut_type = DEAD_PROCESS; -+ //utx->ut_type = DEAD_PROCESS; - break; - } -- line_stripname(utx->ut_line, li->line, sizeof(utx->ut_line)); -- set_utmpx_time(li, utx); -- utx->ut_pid = li->pid; -+// line_stripname(utx->ut_line, li->line, sizeof(utx->ut_line)); -+// set_utmpx_time(li, utx); -+// utx->ut_pid = li->pid; - - /* strncpy(): Don't necessarily want null termination */ -- strncpy(utx->ut_user, li->username, -- MIN_SIZEOF(utx->ut_user, li->username)); -+// strncpy(utx->ut_user, li->username, -+// MIN_SIZEOF(utx->ut_user, li->username)); - - if (li->type == LTYPE_LOGOUT) - return; -@@ -1023,20 +1023,22 @@ - static int - utmpx_perform_login(struct logininfo *li) - { -- struct utmpx utx; -- -- construct_utmpx(li, &utx); --# ifdef UTMPX_USE_LIBRARY -- if (!utmpx_write_library(li, &utx)) { -- logit("%s: utmp_write_library() failed", __func__); -- return (0); -- } --# else -- if (!utmpx_write_direct(li, &ut)) { -- logit("%s: utmp_write_direct() failed", __func__); -- return (0); -- } --# endif -+/* -+ * struct utmpx utx; -+ * -+ * construct_utmpx(li, &utx); -+ *# ifdef UTMPX_USE_LIBRARY -+ * if (!utmpx_write_library(li, &utx)) { -+ * logit("%s: utmp_write_library() failed", __func__); -+ * return (0); -+ * } -+ *# else -+ * if (!utmpx_write_direct(li, &ut)) { -+ * logit("%s: utmp_write_direct() failed", __func__); -+ * return (0); -+ * } -+ *# endif -+ */ - return (1); - } - -@@ -1044,21 +1046,23 @@ - static int - utmpx_perform_logout(struct logininfo *li) - { -- struct utmpx utx; -- -- construct_utmpx(li, &utx); --# ifdef HAVE_ID_IN_UTMPX -- line_abbrevname(utx.ut_id, li->line, sizeof(utx.ut_id)); --# endif --# ifdef HAVE_TYPE_IN_UTMPX -- utx.ut_type = DEAD_PROCESS; --# endif -- --# ifdef UTMPX_USE_LIBRARY -- utmpx_write_library(li, &utx); --# else -- utmpx_write_direct(li, &utx); --# endif -+/* -+ * struct utmpx utx; -+ * -+ * construct_utmpx(li, &utx); -+ *# ifdef HAVE_ID_IN_UTMPX -+ * line_abbrevname(utx.ut_id, li->line, sizeof(utx.ut_id)); -+ *# endif -+ *# ifdef HAVE_TYPE_IN_UTMPX -+ * utx.ut_type = DEAD_PROCESS; -+ *# endif -+ * -+ *# ifdef UTMPX_USE_LIBRARY -+ * utmpx_write_library(li, &utx); -+ *# else -+ * utmpx_write_direct(li, &utx); -+ *# endif -+ */ - return (1); - } - -diff -ru source/misc.c source-new/misc.c ---- source/misc.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/misc.c 2017-11-02 18:31:51.928879098 -0700 -@@ -153,10 +153,12 @@ - socklen_t optlen; - - optlen = sizeof opt; -- if (getsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &opt, &optlen) == -1) { -- debug("getsockopt TCP_NODELAY: %.100s", strerror(errno)); -- return; -- } -+ /* -+ *if (getsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &opt, &optlen) == -1) { -+ * debug("getsockopt TCP_NODELAY: %.100s", strerror(errno)); -+ * return; -+ *} -+ */ - if (opt == 1) { - debug2("fd %d is TCP_NODELAY", fd); - return; -@@ -1274,14 +1276,18 @@ - { - int fd; - -- if ((fd = open(_PATH_TTY, O_RDONLY | O_NOCTTY)) >= 0) { -- close(fd); -- return 0; /* have controlling terminal */ -- } -+ /* -+ *if ((fd = open(_PATH_TTY, O_RDONLY | O_NOCTTY)) >= 0) { -+ * close(fd); -+ * return 0; [> have controlling terminal <] -+ *} -+ */ - if (getppid() != 1) - return 0; /* parent is not init */ -- if (getsid(0) != getpid()) -- return 0; /* not session leader */ -+ /* -+ *if (getsid(0) != getpid()) -+ * return 0; [> not session leader <] -+ */ - debug3("already daemonized"); - return 1; - } -diff -ru source/monitor.c source-new/monitor.c ---- source/monitor.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/monitor.c 2017-11-02 18:31:51.932212426 -0700 -@@ -586,10 +586,12 @@ - buffer_put_char(m, 0); - return (0); - } else { -+ const BIGNUM *p, *g; -+ DH_get0_pqg(dh, &p, NULL, &g); - /* Send first bignum */ - buffer_put_char(m, 1); -- buffer_put_bignum2(m, dh->p); -- buffer_put_bignum2(m, dh->g); -+ buffer_put_bignum2(m, p); -+ buffer_put_bignum2(m, g); - - DH_free(dh); - } -@@ -1663,8 +1665,10 @@ - int on = 1; - #endif - -- if (socketpair(AF_UNIX, SOCK_STREAM, 0, pair) == -1) -- fatal("%s: socketpair: %s", __func__, strerror(errno)); -+ /* -+ *if (socketpair(AF_UNIX, SOCK_STREAM, 0, pair) == -1) -+ * fatal("%s: socketpair: %s", __func__, strerror(errno)); -+ */ - #ifdef SO_ZEROIZE - if (setsockopt(pair[0], SOL_SOCKET, SO_ZEROIZE, &on, sizeof(on)) < 0) - error("setsockopt SO_ZEROIZE(0): %.100s", strerror(errno)); -diff -ru source/nchan.c source-new/nchan.c ---- source/nchan.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/nchan.c 2017-11-02 18:31:51.932212426 -0700 -@@ -375,10 +375,12 @@ - /* shutdown failure is allowed if write failed already */ - debug2("channel %d: close_write", c->self); - if (c->sock != -1) { -- if (shutdown(c->sock, SHUT_WR) < 0) -- debug2("channel %d: chan_shutdown_write: " -- "shutdown() failed for fd %d: %.100s", -- c->self, c->sock, strerror(errno)); -+ /* -+ *if (shutdown(c->sock, SHUT_WR) < 0) -+ * debug2("channel %d: chan_shutdown_write: " -+ * "shutdown() failed for fd %d: %.100s", -+ * c->self, c->sock, strerror(errno)); -+ */ - } else { - if (channel_close_fd(ssh, &c->wfd) < 0) - logit("channel %d: chan_shutdown_write: " -@@ -399,12 +401,14 @@ - * write side has been closed already. (bug on Linux) - * HP-UX may return ENOTCONN also. - */ -- if (shutdown(c->sock, SHUT_RD) < 0 -- && errno != ENOTCONN) -- error("channel %d: chan_shutdown_read: " -- "shutdown() failed for fd %d [i%d o%d]: %.100s", -- c->self, c->sock, c->istate, c->ostate, -- strerror(errno)); -+ /* -+ *if (shutdown(c->sock, SHUT_RD) < 0 -+ * && errno != ENOTCONN) -+ * error("channel %d: chan_shutdown_read: " -+ * "shutdown() failed for fd %d [i%d o%d]: %.100s", -+ * c->self, c->sock, c->istate, c->ostate, -+ * strerror(errno)); -+ */ - } else { - if (channel_close_fd(ssh, &c->rfd) < 0) - logit("channel %d: chan_shutdown_read: " -diff -ru source/openbsd-compat/bsd-closefrom.c source-new/openbsd-compat/bsd-closefrom.c ---- source/openbsd-compat/bsd-closefrom.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/openbsd-compat/bsd-closefrom.c 2017-11-02 18:31:51.938879081 -0700 -@@ -96,7 +96,7 @@ - #ifdef HAVE_SYSCONF - maxfd = sysconf(_SC_OPEN_MAX); - #else -- maxfd = getdtablesize(); -+ //maxfd = getdtablesize(); - #endif /* HAVE_SYSCONF */ - if (maxfd < 0) - maxfd = OPEN_MAX; -diff -ru source/openbsd-compat/bsd-misc.c source-new/openbsd-compat/bsd-misc.c ---- source/openbsd-compat/bsd-misc.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/openbsd-compat/bsd-misc.c 2017-11-02 18:31:51.932212426 -0700 -@@ -193,9 +193,9 @@ - { - int ctty_pgrp; - -- if (ioctl(fd, TIOCGPGRP, &ctty_pgrp) == -1) -- return(-1); -- else -+ //if (ioctl(fd, TIOCGPGRP, &ctty_pgrp) == -1) -+ // return(-1); -+ //else - return(ctty_pgrp); - } - #endif /* HAVE_TCGETPGRP */ -diff -ru source/openbsd-compat/bsd-misc.h source-new/openbsd-compat/bsd-misc.h ---- source/openbsd-compat/bsd-misc.h 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/openbsd-compat/bsd-misc.h 2017-11-02 18:31:51.935545753 -0700 -@@ -18,12 +18,15 @@ - #define _BSD_MISC_H - - #include "includes.h" -+#include - - char *ssh_get_progname(char *); - --#ifndef HAVE_SETSID --#define setsid() setpgrp(0, getpid()) --#endif /* !HAVE_SETSID */ -+/* -+ *#ifndef HAVE_SETSID -+ *#define setsid() setpgrp(0, getpid()) -+ *#endif [> !HAVE_SETSID <] -+ */ - - #ifndef HAVE_SETENV - int setenv(const char *, const char *, int); -@@ -112,9 +115,11 @@ - pid_t getpgid(pid_t); - #endif - --#ifndef HAVE_ENDGRENT --# define endgrent() do { } while(0) --#endif -+/* -+ *#ifndef HAVE_ENDGRENT -+ *# define endgrent() do { } while(0) -+ *#endif -+ */ - - #ifndef HAVE_KRB5_GET_ERROR_MESSAGE - # define krb5_get_error_message krb5_get_err_text -diff -ru source/openbsd-compat/bsd-statvfs.c source-new/openbsd-compat/bsd-statvfs.c ---- source/openbsd-compat/bsd-statvfs.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/openbsd-compat/bsd-statvfs.c 2017-11-02 18:31:51.932212426 -0700 -@@ -24,6 +24,7 @@ - #endif - - #include -+#include - - static void - copy_statfs_to_statvfs(struct statvfs *to, struct statfs *from) -diff -ru source/openbsd-compat/daemon.c source-new/openbsd-compat/daemon.c ---- source/openbsd-compat/daemon.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/openbsd-compat/daemon.c 2017-11-02 18:31:51.932212426 -0700 -@@ -62,8 +62,8 @@ - _exit(0); - } - -- if (setsid() == -1) -- return (-1); -+ //if (setsid() == -1) -+ // return (-1); - - if (!nochdir) - (void)chdir("/"); -diff -ru source/openbsd-compat/fake-rfc2553.c source-new/openbsd-compat/fake-rfc2553.c ---- source/openbsd-compat/fake-rfc2553.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/openbsd-compat/fake-rfc2553.c 2017-11-02 18:31:51.932212426 -0700 -@@ -67,14 +67,16 @@ - else - return (0); - } else { -- hp = gethostbyaddr((char *)&sin->sin_addr, -- sizeof(struct in_addr), AF_INET); -- if (hp == NULL) -- return (EAI_NODATA); -- -- if (strlcpy(host, hp->h_name, hostlen) >= hostlen) -- return (EAI_MEMORY); -- else -+/* -+ * hp = gethostbyaddr((char *)&sin->sin_addr, -+ * sizeof(struct in_addr), AF_INET); -+ * if (hp == NULL) -+ * return (EAI_NODATA); -+ * -+ * if (strlcpy(host, hp->h_name, hostlen) >= hostlen) -+ * return (EAI_MEMORY); -+ * else -+ */ - return (0); - } - } -@@ -172,8 +174,8 @@ - port = strtol(servname, &cp, 10); - if (port > 0 && port <= 65535 && *cp == '\0') - port = htons(port); -- else if ((sp = getservbyname(servname, NULL)) != NULL) -- port = sp->s_port; -+ //else if ((sp = getservbyname(servname, NULL)) != NULL) -+ // port = sp->s_port; - else - port = 0; - } -diff -ru source/openbsd-compat/getgrouplist.c source-new/openbsd-compat/getgrouplist.c ---- source/openbsd-compat/getgrouplist.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/openbsd-compat/getgrouplist.c 2017-11-02 18:31:51.935545753 -0700 -@@ -66,28 +66,30 @@ - /* - * Scan the group file to find additional groups. - */ -- setgrent(); -- while ((grp = getgrent())) { -- if (grp->gr_gid == agroup) -- continue; -- for (bail = 0, i = 0; bail == 0 && i < ngroups; i++) -- if (groups[i] == grp->gr_gid) -- bail = 1; -- if (bail) -- continue; -- for (i = 0; grp->gr_mem[i]; i++) { -- if (!strcmp(grp->gr_mem[i], uname)) { -- if (ngroups >= maxgroups) { -- ret = -1; -- goto out; -- } -- groups[ngroups++] = grp->gr_gid; -- break; -- } -- } -- } -+ //setgrent(); -+ /* -+ *while ((grp = getgrent())) { -+ * if (grp->gr_gid == agroup) -+ * continue; -+ * for (bail = 0, i = 0; bail == 0 && i < ngroups; i++) -+ * if (groups[i] == grp->gr_gid) -+ * bail = 1; -+ * if (bail) -+ * continue; -+ * for (i = 0; grp->gr_mem[i]; i++) { -+ * if (!strcmp(grp->gr_mem[i], uname)) { -+ * if (ngroups >= maxgroups) { -+ * ret = -1; -+ * goto out; -+ * } -+ * groups[ngroups++] = grp->gr_gid; -+ * break; -+ * } -+ * } -+ *} -+ */ - out: -- endgrent(); -+ //endgrent(); - *grpcnt = ngroups; - return (ret); - } -diff -ru source/openbsd-compat/getrrsetbyname.c source-new/openbsd-compat/getrrsetbyname.c ---- source/openbsd-compat/getrrsetbyname.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/openbsd-compat/getrrsetbyname.c 2017-11-02 18:31:51.935545753 -0700 -@@ -187,7 +187,7 @@ - unsigned int rdtype, unsigned int flags, - struct rrsetinfo **res) - { -- struct __res_state *_resp = _THREAD_PRIVATE(_res, _res, &_res); -+ //struct __res_state *_resp = _THREAD_PRIVATE(_res, _res, &_res); - int result; - struct rrsetinfo *rrset = NULL; - struct dns_response *response = NULL; -@@ -216,50 +216,54 @@ - } - - /* initialize resolver */ -- if ((_resp->options & RES_INIT) == 0 && res_init() == -1) { -+ /*if ((_resp->options & RES_INIT) == 0 && res_init() == -1) { - result = ERRSET_FAIL; - goto fail; -- } -+ }*/ - - #ifdef DEBUG -- _resp->options |= RES_DEBUG; -+ //_resp->options |= RES_DEBUG; - #endif /* DEBUG */ - - #ifdef RES_USE_DNSSEC - /* turn on DNSSEC if EDNS0 is configured */ -- if (_resp->options & RES_USE_EDNS0) -- _resp->options |= RES_USE_DNSSEC; -+ /* -+ *if (_resp->options & RES_USE_EDNS0) -+ * _resp->options |= RES_USE_DNSSEC; -+ */ - #endif /* RES_USE_DNSEC */ - - /* make query */ -- length = res_query(hostname, (signed int) rdclass, (signed int) rdtype, -- answer, sizeof(answer)); -- if (length < 0) { -- switch(h_errno) { -- case HOST_NOT_FOUND: -- result = ERRSET_NONAME; -- goto fail; -- case NO_DATA: -- result = ERRSET_NODATA; -- goto fail; -- default: -- result = ERRSET_FAIL; -- goto fail; -- } -- } -- -- /* parse result */ -- response = parse_dns_response(answer, length); -- if (response == NULL) { -- result = ERRSET_FAIL; -- goto fail; -- } -- -- if (response->header.qdcount != 1) { -- result = ERRSET_FAIL; -- goto fail; -- } -- -+/* -+ * length = res_query(hostname, (signed int) rdclass, (signed int) rdtype, -+ * answer, sizeof(answer)); -+ * if (length < 0) { -+ * switch(h_errno) { -+ * case HOST_NOT_FOUND: -+ * result = ERRSET_NONAME; -+ * goto fail; -+ * case NO_DATA: -+ * result = ERRSET_NODATA; -+ * goto fail; -+ * default: -+ * result = ERRSET_FAIL; -+ * goto fail; -+ * } -+ * } -+ * -+ * [> parse result <] -+ * response = parse_dns_response(answer, length); -+ * if (response == NULL) { -+ * result = ERRSET_FAIL; -+ * goto fail; -+ * } -+ * -+ * if (response->header.qdcount != 1) { -+ * result = ERRSET_FAIL; -+ * goto fail; -+ * } -+ * -+ */ - /* initialize rrset */ - rrset = calloc(1, sizeof(struct rrsetinfo)); - if (rrset == NULL) { -@@ -465,19 +469,21 @@ - prev->next = curr; - - /* name */ -- length = dn_expand(answer, answer + size, *cp, name, -- sizeof(name)); -- if (length < 0) { -- free_dns_query(head); -- return (NULL); -- } -- curr->name = strdup(name); -- if (curr->name == NULL) { -- free_dns_query(head); -- return (NULL); -- } -- *cp += length; -- -+/* -+ * length = dn_expand(answer, answer + size, *cp, name, -+ * sizeof(name)); -+ * if (length < 0) { -+ * free_dns_query(head); -+ * return (NULL); -+ * } -+ * curr->name = strdup(name); -+ * if (curr->name == NULL) { -+ * free_dns_query(head); -+ * return (NULL); -+ * } -+ * *cp += length; -+ * -+ */ - /* type */ - curr->type = _getshort(*cp); - *cp += INT16SZ; -@@ -512,19 +518,21 @@ - prev->next = curr; - - /* name */ -- length = dn_expand(answer, answer + size, *cp, name, -- sizeof(name)); -- if (length < 0) { -- free_dns_rr(head); -- return (NULL); -- } -- curr->name = strdup(name); -- if (curr->name == NULL) { -- free_dns_rr(head); -- return (NULL); -- } -- *cp += length; -- -+/* -+ * length = dn_expand(answer, answer + size, *cp, name, -+ * sizeof(name)); -+ * if (length < 0) { -+ * free_dns_rr(head); -+ * return (NULL); -+ * } -+ * curr->name = strdup(name); -+ * if (curr->name == NULL) { -+ * free_dns_rr(head); -+ * return (NULL); -+ * } -+ * *cp += length; -+ * -+ */ - /* type */ - curr->type = _getshort(*cp); - *cp += INT16SZ; -diff -ru source/openbsd-compat/openssl-compat.c source-new/openbsd-compat/openssl-compat.c ---- source/openbsd-compat/openssl-compat.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/openbsd-compat/openssl-compat.c 2017-11-02 18:31:51.932212426 -0700 -@@ -75,7 +75,6 @@ - /* Enable use of crypto hardware */ - ENGINE_load_builtin_engines(); - ENGINE_register_all_complete(); -- OPENSSL_config(NULL); - } - #endif - -diff -ru source/openbsd-compat/pwcache.c source-new/openbsd-compat/pwcache.c ---- source/openbsd-compat/pwcache.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/openbsd-compat/pwcache.c 2017-11-02 18:31:51.935545753 -0700 -@@ -99,11 +99,13 @@ - #endif - gropen = 1; - } -- if ((gr = getgrgid(gid)) == NULL) { -- if (nogroup) -- return (NULL); -- (void)snprintf(nbuf, sizeof(nbuf), "%u", gid); -- } -+ /* -+ *if ((gr = getgrgid(gid)) == NULL) { -+ * if (nogroup) -+ * return (NULL); -+ * (void)snprintf(nbuf, sizeof(nbuf), "%u", gid); -+ *} -+ */ - cp->gid = gid; - if (cp->name != NULL) - free(cp->name); -diff -ru source/openbsd-compat/readpassphrase.c source-new/openbsd-compat/readpassphrase.c ---- source/openbsd-compat/readpassphrase.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/openbsd-compat/readpassphrase.c 2017-11-02 18:31:51.935545753 -0700 -@@ -123,15 +123,17 @@ - sigemptyset(&sa.sa_mask); - sa.sa_flags = 0; /* don't restart system calls */ - sa.sa_handler = handler; -- (void)sigaction(SIGALRM, &sa, &savealrm); -- (void)sigaction(SIGHUP, &sa, &savehup); -- (void)sigaction(SIGINT, &sa, &saveint); -- (void)sigaction(SIGPIPE, &sa, &savepipe); -- (void)sigaction(SIGQUIT, &sa, &savequit); -- (void)sigaction(SIGTERM, &sa, &saveterm); -- (void)sigaction(SIGTSTP, &sa, &savetstp); -- (void)sigaction(SIGTTIN, &sa, &savettin); -- (void)sigaction(SIGTTOU, &sa, &savettou); -+ /* -+ *(void)sigaction(SIGALRM, &sa, &savealrm); -+ *(void)sigaction(SIGHUP, &sa, &savehup); -+ *(void)sigaction(SIGINT, &sa, &saveint); -+ *(void)sigaction(SIGPIPE, &sa, &savepipe); -+ *(void)sigaction(SIGQUIT, &sa, &savequit); -+ *(void)sigaction(SIGTERM, &sa, &saveterm); -+ *(void)sigaction(SIGTSTP, &sa, &savetstp); -+ *(void)sigaction(SIGTTIN, &sa, &savettin); -+ *(void)sigaction(SIGTTOU, &sa, &savettou); -+ */ - - if (!(flags & RPP_STDIN)) - (void)write(output, prompt, strlen(prompt)); -@@ -165,15 +167,17 @@ - continue; - signo[SIGTTOU] = sigttou; - } -- (void)sigaction(SIGALRM, &savealrm, NULL); -- (void)sigaction(SIGHUP, &savehup, NULL); -- (void)sigaction(SIGINT, &saveint, NULL); -- (void)sigaction(SIGQUIT, &savequit, NULL); -- (void)sigaction(SIGPIPE, &savepipe, NULL); -- (void)sigaction(SIGTERM, &saveterm, NULL); -- (void)sigaction(SIGTSTP, &savetstp, NULL); -- (void)sigaction(SIGTTIN, &savettin, NULL); -- (void)sigaction(SIGTTOU, &savettou, NULL); -+ /* -+ *(void)sigaction(SIGALRM, &savealrm, NULL); -+ *(void)sigaction(SIGHUP, &savehup, NULL); -+ *(void)sigaction(SIGINT, &saveint, NULL); -+ *(void)sigaction(SIGQUIT, &savequit, NULL); -+ *(void)sigaction(SIGPIPE, &savepipe, NULL); -+ *(void)sigaction(SIGTERM, &saveterm, NULL); -+ *(void)sigaction(SIGTSTP, &savetstp, NULL); -+ *(void)sigaction(SIGTTIN, &savettin, NULL); -+ *(void)sigaction(SIGTTOU, &savettou, NULL); -+ */ - if (input != STDIN_FILENO) - (void)close(input); - -diff -ru source/openbsd-compat/xcrypt.c source-new/openbsd-compat/xcrypt.c ---- source/openbsd-compat/xcrypt.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/openbsd-compat/xcrypt.c 2017-11-02 18:31:51.932212426 -0700 -@@ -80,18 +80,20 @@ - if (salt[0] != '\0') - return salt; - strlcpy(salt, "xx", sizeof(salt)); -- setpwent(); -- while ((pw = getpwent()) != NULL) { -- passwd = shadow_pw(pw); -- if (passwd[0] == '$' && (p = strrchr(passwd+1, '$')) != NULL) { -- typelen = p - passwd + 1; -- strlcpy(salt, passwd, MIN(typelen, sizeof(salt))); -- explicit_bzero(passwd, strlen(passwd)); -- goto out; -- } -- } -- out: -- endpwent(); -+ /* -+ * setpwent(); -+ * while ((pw = getpwent()) != NULL) { -+ * passwd = shadow_pw(pw); -+ * if (passwd[0] == '$' && (p = strrchr(passwd+1, '$')) != NULL) { -+ * typelen = p - passwd + 1; -+ * strlcpy(salt, passwd, MIN(typelen, sizeof(salt))); -+ * explicit_bzero(passwd, strlen(passwd)); -+ * goto out; -+ * } -+ * } -+ *out: -+ * endpwent(); -+ */ - return salt; - } - -diff -ru source/progressmeter.c source-new/progressmeter.c ---- source/progressmeter.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/progressmeter.c 2017-11-02 18:31:51.938879081 -0700 -@@ -81,7 +81,8 @@ - static int - can_output(void) - { -- return (getpgrp() == tcgetpgrp(STDOUT_FILENO)); -+ //return (getpgrp() == tcgetpgrp(STDOUT_FILENO)); -+ return -1; - } - - static void -@@ -294,13 +295,15 @@ - { - struct winsize winsize; - -- if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &winsize) != -1 && -- winsize.ws_col != 0) { -- if (winsize.ws_col > MAX_WINSIZE) -- win_size = MAX_WINSIZE; -- else -- win_size = winsize.ws_col; -- } else -+ /* -+ *if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &winsize) != -1 && -+ * winsize.ws_col != 0) { -+ * if (winsize.ws_col > MAX_WINSIZE) -+ * win_size = MAX_WINSIZE; -+ * else -+ * win_size = winsize.ws_col; -+ *} else -+ */ - win_size = DEFAULT_WINSIZE; - win_size += 1; /* trailing \0 */ - } -diff -ru source/readconf.c source-new/readconf.c ---- source/readconf.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/readconf.c 2017-11-02 18:31:51.938879081 -0700 -@@ -465,8 +465,8 @@ - struct servent *sp; - - if (port == 0) { -- sp = getservbyname(SSH_SERVICE_NAME, "tcp"); -- port = sp ? ntohs(sp->s_port) : SSH_DEFAULT_PORT; -+ //sp = getservbyname(SSH_SERVICE_NAME, "tcp"); -+ //port = sp ? ntohs(sp->s_port) : SSH_DEFAULT_PORT; - } - return port; - } - -diff -ru source/regress/unittests/sshkey/test_file.c source-new/regress/unittests/sshkey/test_file.c ---- source/regress/unittests/sshkey/test_file.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/regress/unittests/sshkey/test_file.c 2017-11-02 18:31:51.945545736 -0700 -@@ -60,9 +60,14 @@ - a = load_bignum("rsa_1.param.n"); - b = load_bignum("rsa_1.param.p"); - c = load_bignum("rsa_1.param.q"); -- ASSERT_BIGNUM_EQ(k1->rsa->n, a); -- ASSERT_BIGNUM_EQ(k1->rsa->p, b); -- ASSERT_BIGNUM_EQ(k1->rsa->q, c); -+ { -+ const BIGNUM *n, *p, *q; -+ RSA_get0_key(k1->rsa, &n, NULL, NULL); -+ RSA_get0_factors(k1->rsa, &p, &q); -+ ASSERT_BIGNUM_EQ(n, a); -+ ASSERT_BIGNUM_EQ(p, b); -+ ASSERT_BIGNUM_EQ(q, c); -+ } - BN_free(a); - BN_free(b); - BN_free(c); -@@ -151,9 +156,14 @@ - a = load_bignum("dsa_1.param.g"); - b = load_bignum("dsa_1.param.priv"); - c = load_bignum("dsa_1.param.pub"); -- ASSERT_BIGNUM_EQ(k1->dsa->g, a); -- ASSERT_BIGNUM_EQ(k1->dsa->priv_key, b); -- ASSERT_BIGNUM_EQ(k1->dsa->pub_key, c); -+ { -+ const BIGNUM *g, *priv_key, *pub_key; -+ DSA_get0_pqg(k1->dsa, NULL, NULL, &g); -+ DSA_get0_key(k1->dsa, &pub_key, &priv_key); -+ ASSERT_BIGNUM_EQ(g, a); -+ ASSERT_BIGNUM_EQ(priv_key, b); -+ ASSERT_BIGNUM_EQ(pub_key, c); -+ } - BN_free(a); - BN_free(b); - BN_free(c); -diff -ru source/regress/unittests/sshkey/test_sshkey.c source-new/regress/unittests/sshkey/test_sshkey.c ---- source/regress/unittests/sshkey/test_sshkey.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/regress/unittests/sshkey/test_sshkey.c 2017-11-02 18:31:51.945545736 -0700 -@@ -197,9 +197,14 @@ - k1 = sshkey_new(KEY_RSA); - ASSERT_PTR_NE(k1, NULL); - ASSERT_PTR_NE(k1->rsa, NULL); -- ASSERT_PTR_NE(k1->rsa->n, NULL); -- ASSERT_PTR_NE(k1->rsa->e, NULL); -- ASSERT_PTR_EQ(k1->rsa->p, NULL); -+ { -+ const BIGNUM *n, *e, *p; -+ RSA_get0_key(k1->rsa, &n, &e, NULL); -+ RSA_get0_factors(k1->rsa, &p, NULL); -+ ASSERT_PTR_NE(n, NULL); -+ ASSERT_PTR_NE(e, NULL); -+ ASSERT_PTR_EQ(p, NULL); -+ } - sshkey_free(k1); - TEST_DONE(); - -@@ -207,8 +212,13 @@ - k1 = sshkey_new(KEY_DSA); - ASSERT_PTR_NE(k1, NULL); - ASSERT_PTR_NE(k1->dsa, NULL); -- ASSERT_PTR_NE(k1->dsa->g, NULL); -- ASSERT_PTR_EQ(k1->dsa->priv_key, NULL); -+ { -+ const BIGNUM *g, *priv_key; -+ DSA_get0_pqg(k1->dsa, NULL, NULL, &g); -+ DSA_get0_key(k1->dsa, NULL, &priv_key); -+ ASSERT_PTR_NE(g, NULL); -+ ASSERT_PTR_EQ(priv_key, NULL); -+ } - sshkey_free(k1); - TEST_DONE(); - -@@ -234,9 +244,14 @@ - k1 = sshkey_new_private(KEY_RSA); - ASSERT_PTR_NE(k1, NULL); - ASSERT_PTR_NE(k1->rsa, NULL); -- ASSERT_PTR_NE(k1->rsa->n, NULL); -- ASSERT_PTR_NE(k1->rsa->e, NULL); -- ASSERT_PTR_NE(k1->rsa->p, NULL); -+ { -+ const BIGNUM *n, *e, *p; -+ RSA_get0_key(k1->rsa, &n, &e, NULL); -+ RSA_get0_factors(k1->rsa, &p, NULL); -+ ASSERT_PTR_NE(n, NULL); -+ ASSERT_PTR_NE(e, NULL); -+ ASSERT_PTR_NE(p, NULL); -+ } - ASSERT_INT_EQ(sshkey_add_private(k1), 0); - sshkey_free(k1); - TEST_DONE(); -@@ -245,8 +260,13 @@ - k1 = sshkey_new_private(KEY_DSA); - ASSERT_PTR_NE(k1, NULL); - ASSERT_PTR_NE(k1->dsa, NULL); -- ASSERT_PTR_NE(k1->dsa->g, NULL); -- ASSERT_PTR_NE(k1->dsa->priv_key, NULL); -+ { -+ const BIGNUM *g, *priv_key; -+ DSA_get0_pqg(k1->dsa, NULL, NULL, &g); -+ DSA_get0_key(k1->dsa, NULL, &priv_key); -+ ASSERT_PTR_NE(g, NULL); -+ ASSERT_PTR_NE(priv_key, NULL); -+ } - ASSERT_INT_EQ(sshkey_add_private(k1), 0); - sshkey_free(k1); - TEST_DONE(); -@@ -285,18 +305,28 @@ - ASSERT_INT_EQ(sshkey_generate(KEY_RSA, 1024, &kr), 0); - ASSERT_PTR_NE(kr, NULL); - ASSERT_PTR_NE(kr->rsa, NULL); -- ASSERT_PTR_NE(kr->rsa->n, NULL); -- ASSERT_PTR_NE(kr->rsa->e, NULL); -- ASSERT_PTR_NE(kr->rsa->p, NULL); -- ASSERT_INT_EQ(BN_num_bits(kr->rsa->n), 1024); -+ { -+ const BIGNUM *n, *e, *p; -+ RSA_get0_key(kr->rsa, &n, &e, NULL); -+ RSA_get0_factors(kr->rsa, &p, NULL); -+ ASSERT_PTR_NE(n, NULL); -+ ASSERT_PTR_NE(e, NULL); -+ ASSERT_PTR_NE(p, NULL); -+ ASSERT_INT_EQ(BN_num_bits(n), 1024); -+ } - TEST_DONE(); - - TEST_START("generate KEY_DSA"); - ASSERT_INT_EQ(sshkey_generate(KEY_DSA, 1024, &kd), 0); - ASSERT_PTR_NE(kd, NULL); - ASSERT_PTR_NE(kd->dsa, NULL); -- ASSERT_PTR_NE(kd->dsa->g, NULL); -- ASSERT_PTR_NE(kd->dsa->priv_key, NULL); -+ { -+ const BIGNUM *g, *priv_key; -+ DSA_get0_pqg(kd->dsa, NULL, NULL, &g); -+ DSA_get0_key(kd->dsa, NULL, &priv_key); -+ ASSERT_PTR_NE(g, NULL); -+ ASSERT_PTR_NE(priv_key, NULL); -+ } - TEST_DONE(); - - #ifdef OPENSSL_HAS_ECC -@@ -323,9 +353,14 @@ - ASSERT_PTR_NE(kr, k1); - ASSERT_INT_EQ(k1->type, KEY_RSA); - ASSERT_PTR_NE(k1->rsa, NULL); -- ASSERT_PTR_NE(k1->rsa->n, NULL); -- ASSERT_PTR_NE(k1->rsa->e, NULL); -- ASSERT_PTR_EQ(k1->rsa->p, NULL); -+ { -+ const BIGNUM *n, *e, *p; -+ RSA_get0_key(k1->rsa, &n, &e, NULL); -+ RSA_get0_factors(k1->rsa, &p, NULL); -+ ASSERT_PTR_NE(n, NULL); -+ ASSERT_PTR_NE(e, NULL); -+ ASSERT_PTR_EQ(p, NULL); -+ } - TEST_DONE(); - - TEST_START("equal KEY_RSA/demoted KEY_RSA"); -@@ -339,8 +374,13 @@ - ASSERT_PTR_NE(kd, k1); - ASSERT_INT_EQ(k1->type, KEY_DSA); - ASSERT_PTR_NE(k1->dsa, NULL); -- ASSERT_PTR_NE(k1->dsa->g, NULL); -- ASSERT_PTR_EQ(k1->dsa->priv_key, NULL); -+ { -+ const BIGNUM *g, *priv_key; -+ DSA_get0_pqg(k1->dsa, NULL, NULL, &g); -+ DSA_get0_key(k1->dsa, NULL, &priv_key); -+ ASSERT_PTR_NE(g, NULL); -+ ASSERT_PTR_EQ(priv_key, NULL); -+ } - TEST_DONE(); - - TEST_START("equal KEY_DSA/demoted KEY_DSA"); -diff -ru source/scp.c source-new/scp.c ---- source/scp.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/scp.c 2017-11-02 18:31:51.948879063 -0700 -@@ -905,7 +905,7 @@ - return; - } - while ((dp = readdir(dirp)) != NULL) { -- if (dp->d_ino == 0) -+// if (dp->d_ino == 0) - continue; - if (!strcmp(dp->d_name, ".") || !strcmp(dp->d_name, "..")) - continue; -diff -ru source/serverloop.c source-new/serverloop.c ---- source/serverloop.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/serverloop.c 2017-11-02 18:31:51.948879063 -0700 -@@ -349,16 +349,18 @@ - /* block SIGCHLD while we check for dead children */ - sigemptyset(&nset); - sigaddset(&nset, SIGCHLD); -- sigprocmask(SIG_BLOCK, &nset, &oset); -- if (child_terminated) { -- debug("Received SIGCHLD."); -- while ((pid = waitpid(-1, &status, WNOHANG)) > 0 || -- (pid < 0 && errno == EINTR)) -- if (pid > 0) -- session_close_by_pid(ssh, pid, status); -- child_terminated = 0; -- } -- sigprocmask(SIG_SETMASK, &oset, NULL); -+ /* -+ *sigprocmask(SIG_BLOCK, &nset, &oset); -+ *if (child_terminated) { -+ * debug("Received SIGCHLD."); -+ * while ((pid = waitpid(-1, &status, WNOHANG)) > 0 || -+ * (pid < 0 && errno == EINTR)) -+ * if (pid > 0) -+ * session_close_by_pid(ssh, pid, status); -+ * child_terminated = 0; -+ *} -+ *sigprocmask(SIG_SETMASK, &oset, NULL); -+ */ - } - - void -diff -ru source/session.c source-new/session.c ---- source/session.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/session.c 2017-11-02 18:31:51.948879063 -0700 -@@ -408,8 +408,8 @@ - * Create a new session and process group since the 4.4BSD - * setlogin() affects the entire process group. - */ -- if (setsid() < 0) -- error("setsid failed: %.100s", strerror(errno)); -+ //if (setsid() < 0) -+ // error("setsid failed: %.100s", strerror(errno)); - - #ifdef USE_PIPES - /* -@@ -1028,7 +1028,7 @@ - # endif /* HAVE_CYGWIN */ - #endif /* HAVE_LOGIN_CAP */ - -- snprintf(buf, sizeof buf, "%.200s/%.50s", _PATH_MAILDIR, pw->pw_name); -+ //snprintf(buf, sizeof buf, "%.200s/%.50s", _PATH_MAILDIR, pw->pw_name); - child_set_env(&env, &envsize, "MAIL", buf); - - /* Normal systems set SHELL by default. */ -@@ -1302,8 +1302,8 @@ - if (chdir(path) == -1) - fatal("Unable to chdir to chroot path \"%s\": " - "%s", path, strerror(errno)); -- if (chroot(path) == -1) -- fatal("chroot(\"%s\"): %s", path, strerror(errno)); -+ //if (chroot(path) == -1) -+ // fatal("chroot(\"%s\"): %s", path, strerror(errno)); - if (chdir("/") == -1) - fatal("%s: chdir(/) after chroot: %s", - __func__, strerror(errno)); -@@ -1328,16 +1328,20 @@ - #else - if (setlogin(pw->pw_name) < 0) - error("setlogin failed: %s", strerror(errno)); -- if (setgid(pw->pw_gid) < 0) { -- perror("setgid"); -- exit(1); -- } -+ /* -+ *if (setgid(pw->pw_gid) < 0) { -+ * perror("setgid"); -+ * exit(1); -+ *} -+ */ - /* Initialize the group list. */ -- if (initgroups(pw->pw_name, pw->pw_gid) < 0) { -- perror("initgroups"); -- exit(1); -- } -- endgrent(); -+ /* -+ *if (initgroups(pw->pw_name, pw->pw_gid) < 0) { -+ * perror("initgroups"); -+ * exit(1); -+ *} -+ */ -+ //endgrent(); - #endif - - platform_setusercontext_post_groups(pw); -@@ -1444,7 +1448,7 @@ - * Close any extra file descriptors. Note that there may still be - * descriptors left by system functions. They will be closed later. - */ -- endpwent(); -+ //endpwent(); - - /* - * Close any extra open file descriptors so that we don't have them -diff -ru source/sftp.c source-new/sftp.c ---- source/sftp.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/sftp.c 2017-11-02 18:31:51.948879063 -0700 -@@ -822,8 +822,10 @@ - m += strlen(tmp); - free(tmp); - -- if (ioctl(fileno(stdin), TIOCGWINSZ, &ws) != -1) -- width = ws.ws_col; -+ /* -+ *if (ioctl(fileno(stdin), TIOCGWINSZ, &ws) != -1) -+ * width = ws.ws_col; -+ */ - - columns = width / (m + 2); - columns = MAXIMUM(columns, 1); -@@ -950,8 +952,10 @@ - return err; - } - -- if (ioctl(fileno(stdin), TIOCGWINSZ, &ws) != -1) -- width = ws.ws_col; -+ /* -+ *if (ioctl(fileno(stdin), TIOCGWINSZ, &ws) != -1) -+ * width = ws.ws_col; -+ */ - - if (!(lflag & LS_SHORT_VIEW)) { - /* Count entries for sort and find longest filename */ -@@ -2247,8 +2251,10 @@ - #else /* USE_PIPES */ - int inout[2]; - -- if (socketpair(AF_UNIX, SOCK_STREAM, 0, inout) == -1) -- fatal("socketpair: %s", strerror(errno)); -+ /* -+ *if (socketpair(AF_UNIX, SOCK_STREAM, 0, inout) == -1) -+ * fatal("socketpair: %s", strerror(errno)); -+ */ - *in = *out = inout[0]; - c_in = c_out = inout[1]; - #endif /* USE_PIPES */ -@@ -2512,8 +2518,10 @@ - err = interactive_loop(conn, file1, file2); - - #if !defined(USE_PIPES) -- shutdown(in, SHUT_RDWR); -- shutdown(out, SHUT_RDWR); -+ /* -+ *shutdown(in, SHUT_RDWR); -+ *shutdown(out, SHUT_RDWR); -+ */ - #endif - - close(in); -diff -ru source/sftp-client.c source-new/sftp-client.c ---- source/sftp-client.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/sftp-client.c 2017-11-02 18:31:51.948879063 -0700 -@@ -121,10 +121,12 @@ - iov[1].iov_base = (u_char *)sshbuf_ptr(m); - iov[1].iov_len = sshbuf_len(m); - -- if (atomiciov6(writev, conn->fd_out, iov, 2, -- conn->limit_kbps > 0 ? sftpio : NULL, &conn->bwlimit_out) != -- sshbuf_len(m) + sizeof(mlen)) -- fatal("Couldn't send packet: %s", strerror(errno)); -+ /* -+ *if (atomiciov6(writev, conn->fd_out, iov, 2, -+ * conn->limit_kbps > 0 ? sftpio : NULL, &conn->bwlimit_out) != -+ * sshbuf_len(m) + sizeof(mlen)) -+ * fatal("Couldn't send packet: %s", strerror(errno)); -+ */ - - sshbuf_reset(m); - } -@@ -1832,7 +1834,7 @@ - } - - while (((dp = readdir(dirp)) != NULL) && !interrupted) { -- if (dp->d_ino == 0) -+ //if (dp->d_ino == 0) - continue; - filename = dp->d_name; - new_dst = path_append(dst, filename); -diff -ru source/sftp-glob.c source-new/sftp-glob.c ---- source/sftp-glob.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/sftp-glob.c 2017-11-02 18:31:51.948879063 -0700 -@@ -92,12 +92,13 @@ - * ALTDIRFUNCs. Not that this is documented anywhere but the - * source... Fake an inode number to appease it. - */ -- ret->d_ino = inum++; -+// ret->d_ino = inum++; - if (!inum) - inum = 1; - #endif /* __GNU_LIBRARY__ */ - -- return(ret); -+// return(ret); -+ return 0; - } - - static void -diff -ru source/ssh-agent.c source-new/ssh-agent.c ---- source/ssh-agent.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/ssh-agent.c 2017-11-02 18:31:51.962212373 -0700 -@@ -788,23 +788,25 @@ - int fd; - - slen = sizeof(sunaddr); -- fd = accept(sockets[socknum].fd, (struct sockaddr *)&sunaddr, &slen); -- if (fd < 0) { -- error("accept from AUTH_SOCKET: %s", strerror(errno)); -- return -1; -- } -- if (getpeereid(fd, &euid, &egid) < 0) { -- error("getpeereid %d failed: %s", fd, strerror(errno)); -- close(fd); -- return -1; -- } -- if ((euid != 0) && (getuid() != euid)) { -- error("uid mismatch: peer euid %u != uid %u", -- (u_int) euid, (u_int) getuid()); -- close(fd); -- return -1; -- } -- new_socket(AUTH_CONNECTION, fd); -+ /* -+ *fd = accept(sockets[socknum].fd, (struct sockaddr *)&sunaddr, &slen); -+ *if (fd < 0) { -+ * error("accept from AUTH_SOCKET: %s", strerror(errno)); -+ * return -1; -+ *} -+ *if (getpeereid(fd, &euid, &egid) < 0) { -+ * error("getpeereid %d failed: %s", fd, strerror(errno)); -+ * close(fd); -+ * return -1; -+ *} -+ *if ((euid != 0) && (getuid() != euid)) { -+ * error("uid mismatch: peer euid %u != uid %u", -+ * (u_int) euid, (u_int) getuid()); -+ * close(fd); -+ * return -1; -+ *} -+ *new_socket(AUTH_CONNECTION, fd); -+ */ - return 0; - } - -@@ -1037,8 +1039,10 @@ - sanitise_stdfd(); - - /* drop */ -- setegid(getgid()); -- setgid(getgid()); -+ /* -+ *setegid(getgid()); -+ *setgid(getgid()); -+ */ - - platform_disable_tracing(0); /* strict=no */ - -@@ -1212,10 +1216,12 @@ - /* child */ - log_init(__progname, SYSLOG_LEVEL_INFO, SYSLOG_FACILITY_AUTH, 0); - -- if (setsid() == -1) { -- error("setsid: %s", strerror(errno)); -- cleanup_exit(1); -- } -+ /* -+ *if (setsid() == -1) { -+ * error("setsid: %s", strerror(errno)); -+ * cleanup_exit(1); -+ *} -+ */ - - (void)chdir("/"); - if ((fd = open(_PATH_DEVNULL, O_RDWR, 0)) != -1) { -diff -ru source/sshconnect.c source-new/sshconnect.c ---- source/sshconnect.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/sshconnect.c 2017-11-02 18:31:51.962212373 -0700 -@@ -115,9 +115,11 @@ - if ((shell = getenv("SHELL")) == NULL) - shell = _PATH_BSHELL; - -- if (socketpair(AF_UNIX, SOCK_STREAM, 0, sp) < 0) -- fatal("Could not create socketpair to communicate with " -- "proxy dialer: %.100s", strerror(errno)); -+ /* -+ *if (socketpair(AF_UNIX, SOCK_STREAM, 0, sp) < 0) -+ * fatal("Could not create socketpair to communicate with " -+ * "proxy dialer: %.100s", strerror(errno)); -+ */ - - command_string = expand_proxy_command(proxy_command, options.user, - host, port); -@@ -387,10 +389,12 @@ - return -1; - - /* Completed or failed */ -- if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &optval, &optlen) == -1) { -- debug("getsockopt: %s", strerror(errno)); -- return -1; -- } -+ /* -+ *if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &optval, &optlen) == -1) { -+ * debug("getsockopt: %s", strerror(errno)); -+ * return -1; -+ *} -+ */ - if (optval != 0) { - errno = optval; - return -1; -@@ -665,8 +669,8 @@ - { - switch (hostaddr->sa_family) { - case AF_INET: -- return (ntohl(((struct sockaddr_in *)hostaddr)-> -- sin_addr.s_addr) >> 24) == IN_LOOPBACKNET; -+ return 0;/*(ntohl(((struct sockaddr_in *)hostaddr)-> -+ sin_addr.s_addr) >> 24) == IN_LOOPBACKNET;*/ - case AF_INET6: - return IN6_IS_ADDR_LOOPBACK( - &(((struct sockaddr_in6 *)hostaddr)->sin6_addr)); -diff -ru source/sshd.c source-new/sshd.c ---- source/sshd.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/sshd.c 2017-11-02 18:31:51.965545701 -0700 -@@ -541,9 +541,11 @@ - /* Demote the child */ - if (privsep_chroot) { - /* Change our root directory */ -- if (chroot(_PATH_PRIVSEP_CHROOT_DIR) == -1) -- fatal("chroot(\"%s\"): %s", _PATH_PRIVSEP_CHROOT_DIR, -- strerror(errno)); -+ /* -+ *if (chroot(_PATH_PRIVSEP_CHROOT_DIR) == -1) -+ * fatal("chroot(\"%s\"): %s", _PATH_PRIVSEP_CHROOT_DIR, -+ * strerror(errno)); -+ */ - if (chdir("/") == -1) - fatal("chdir(\"/\"): %s", strerror(errno)); - -@@ -551,8 +553,10 @@ - debug3("privsep user:group %u:%u", (u_int)privsep_pw->pw_uid, - (u_int)privsep_pw->pw_gid); - gidset[0] = privsep_pw->pw_gid; -- if (setgroups(1, gidset) < 0) -- fatal("setgroups: %.100s", strerror(errno)); -+ /* -+ *if (setgroups(1, gidset) < 0) -+ * fatal("setgroups: %.100s", strerror(errno)); -+ */ - permanently_set_uid(privsep_pw); - } - } -@@ -1054,9 +1058,11 @@ - * Set socket options. - * Allow local port reuse in TIME_WAIT. - */ -- if (setsockopt(listen_sock, SOL_SOCKET, SO_REUSEADDR, -- &on, sizeof(on)) == -1) -- error("setsockopt SO_REUSEADDR: %s", strerror(errno)); -+ /* -+ *if (setsockopt(listen_sock, SOL_SOCKET, SO_REUSEADDR, -+ * &on, sizeof(on)) == -1) -+ * error("setsockopt SO_REUSEADDR: %s", strerror(errno)); -+ */ - - /* Only communicate in IPv6 over AF_INET6 sockets. */ - if (ai->ai_family == AF_INET6) -@@ -1158,95 +1164,95 @@ - startup_pipes[i] = -1; - startups--; - } -- for (i = 0; i < num_listen_socks; i++) { -- if (!FD_ISSET(listen_socks[i], fdset)) -- continue; -- fromlen = sizeof(from); -- *newsock = accept(listen_socks[i], -- (struct sockaddr *)&from, &fromlen); -- if (*newsock < 0) { -- if (errno != EINTR && errno != EWOULDBLOCK && -- errno != ECONNABORTED && errno != EAGAIN) -- error("accept: %.100s", -- strerror(errno)); -- if (errno == EMFILE || errno == ENFILE) -- usleep(100 * 1000); -- continue; -- } -- if (unset_nonblock(*newsock) == -1) { -- close(*newsock); -- continue; -- } -- if (drop_connection(startups) == 1) { -- char *laddr = get_local_ipaddr(*newsock); -- char *raddr = get_peer_ipaddr(*newsock); -- -- verbose("drop connection #%d from [%s]:%d " -- "on [%s]:%d past MaxStartups", startups, -- raddr, get_peer_port(*newsock), -- laddr, get_local_port(*newsock)); -- free(laddr); -- free(raddr); -- close(*newsock); -- continue; -- } -- if (pipe(startup_p) == -1) { -- close(*newsock); -- continue; -- } -- -- if (rexec_flag && socketpair(AF_UNIX, -- SOCK_STREAM, 0, config_s) == -1) { -- error("reexec socketpair: %s", -- strerror(errno)); -- close(*newsock); -- close(startup_p[0]); -- close(startup_p[1]); -- continue; -- } -- -- for (j = 0; j < options.max_startups; j++) -- if (startup_pipes[j] == -1) { -- startup_pipes[j] = startup_p[0]; -- if (maxfd < startup_p[0]) -- maxfd = startup_p[0]; -- startups++; -- break; -- } -+ // for (i = 0; i < num_listen_socks; i++) { -+ // if (!FD_ISSET(listen_socks[i], fdset)) -+ // continue; -+ // fromlen = sizeof(from); -+ /* *newsock = accept(listen_socks[i],*/ -+ /*(struct sockaddr *)&from, &fromlen);*/ -+ /*if (*newsock < 0) {*/ -+ /*if (errno != EINTR && errno != EWOULDBLOCK &&*/ -+ /*errno != ECONNABORTED && errno != EAGAIN)*/ -+ /*error("accept: %.100s",*/ -+ /*strerror(errno));*/ -+ /*if (errno == EMFILE || errno == ENFILE)*/ -+ /*usleep(100 * 1000);*/ -+ /*continue;*/ -+ /*}*/ -+ /*if (unset_nonblock(*newsock) == -1) {*/ -+ /*close(*newsock);*/ -+ /*continue;*/ -+ /*}*/ -+ /*if (drop_connection(startups) == 1) {*/ -+ /*char *laddr = get_local_ipaddr(*newsock);*/ -+ /*char *raddr = get_peer_ipaddr(*newsock);*/ -+ -+ /*verbose("drop connection #%d from [%s]:%d "*/ -+ /*"on [%s]:%d past MaxStartups", startups,*/ -+ /*raddr, get_peer_port(*newsock),*/ -+ /*laddr, get_local_port(*newsock));*/ -+ /*free(laddr);*/ -+ /*free(raddr);*/ -+ /*close(*newsock);*/ -+ /*continue;*/ -+ /*}*/ -+ /*if (pipe(startup_p) == -1) {*/ -+ /*close(*newsock);*/ -+ /*continue;*/ -+ /*}*/ -+ -+ /*if (rexec_flag && socketpair(AF_UNIX,*/ -+ /*SOCK_STREAM, 0, config_s) == -1) {*/ -+ /*error("reexec socketpair: %s",*/ -+ /*strerror(errno));*/ -+ /*close(*newsock);*/ -+ /*close(startup_p[0]);*/ -+ /*close(startup_p[1]);*/ -+ /*continue;*/ -+ /*}*/ -+ -+ /*for (j = 0; j < options.max_startups; j++)*/ -+ /*if (startup_pipes[j] == -1) {*/ -+ /*startup_pipes[j] = startup_p[0];*/ -+ /*if (maxfd < startup_p[0])*/ -+ /*maxfd = startup_p[0];*/ -+ /*startups++;*/ -+ /*break;*/ -+ /*}*/ - - /* - * Got connection. Fork a child to handle it, unless - * we are in debugging mode. - */ -- if (debug_flag) { -+ /*if (debug_flag) {*/ - /* - * In debugging mode. Close the listening - * socket, and start processing the - * connection without forking. - */ -- debug("Server will not fork when running in debugging mode."); -- close_listen_socks(); -- *sock_in = *newsock; -- *sock_out = *newsock; -- close(startup_p[0]); -- close(startup_p[1]); -- startup_pipe = -1; -- pid = getpid(); -- if (rexec_flag) { -- send_rexec_state(config_s[0], -- &cfg); -- close(config_s[0]); -- } -- break; -- } -+ /*debug("Server will not fork when running in debugging mode.");*/ -+ /*close_listen_socks();*/ -+ /**sock_in = *newsock;*/ -+ /**sock_out = *newsock;*/ -+ /*close(startup_p[0]);*/ -+ /*close(startup_p[1]);*/ -+ /*startup_pipe = -1;*/ -+ /*pid = getpid();*/ -+ /*if (rexec_flag) {*/ -+ /*send_rexec_state(config_s[0],*/ -+ /*&cfg);*/ -+ /*close(config_s[0]);*/ -+ /*}*/ -+ /*break;*/ -+ /*}*/ - - /* - * Normal production daemon. Fork, and have - * the child process the connection. The - * parent continues listening. - */ -- platform_pre_fork(); -- if ((pid = fork()) == 0) { -+ /*platform_pre_fork();*/ -+ /*if ((pid = fork()) == 0) {*/ - /* - * Child. Close the listening and - * max_startup sockets. Start using -@@ -1255,54 +1261,54 @@ - * We break out of the loop to handle - * the connection. - */ -- platform_post_fork_child(); -- startup_pipe = startup_p[1]; -- close_startup_pipes(); -- close_listen_socks(); -- *sock_in = *newsock; -- *sock_out = *newsock; -- log_init(__progname, -- options.log_level, -- options.log_facility, -- log_stderr); -- if (rexec_flag) -- close(config_s[0]); -- break; -- } -- -- /* Parent. Stay in the loop. */ -- platform_post_fork_parent(pid); -- if (pid < 0) -- error("fork: %.100s", strerror(errno)); -- else -- debug("Forked child %ld.", (long)pid); -- -- close(startup_p[1]); -- -- if (rexec_flag) { -- send_rexec_state(config_s[0], &cfg); -- close(config_s[0]); -- close(config_s[1]); -- } -- close(*newsock); -+ /*platform_post_fork_child();*/ -+ /*startup_pipe = startup_p[1];*/ -+ /*close_startup_pipes();*/ -+ /*close_listen_socks();*/ -+ /**sock_in = *newsock;*/ -+ /**sock_out = *newsock;*/ -+ /*log_init(__progname,*/ -+ /*options.log_level,*/ -+ /*options.log_facility,*/ -+ /*log_stderr);*/ -+ /*if (rexec_flag)*/ -+ /*close(config_s[0]);*/ -+ /*break;*/ -+ /*}*/ -+ -+ /*[> Parent. Stay in the loop. <]*/ -+ /*platform_post_fork_parent(pid);*/ -+ /*if (pid < 0)*/ -+ /*error("fork: %.100s", strerror(errno));*/ -+ /*else*/ -+ /*debug("Forked child %ld.", (long)pid);*/ -+ -+ /*close(startup_p[1]);*/ -+ -+ /*if (rexec_flag) {*/ -+ /*send_rexec_state(config_s[0], &cfg);*/ -+ /*close(config_s[0]);*/ -+ /*close(config_s[1]);*/ -+ /*}*/ -+ /*close(*newsock);*/ - - /* - * Ensure that our random state differs - * from that of the child - */ -- arc4random_stir(); -- arc4random_buf(rnd, sizeof(rnd)); --#ifdef WITH_OPENSSL -- RAND_seed(rnd, sizeof(rnd)); -- if ((RAND_bytes((u_char *)rnd, 1)) != 1) -- fatal("%s: RAND_bytes failed", __func__); --#endif -- explicit_bzero(rnd, sizeof(rnd)); -- } -- -- /* child process check (or debug mode) */ -- if (num_listen_socks < 0) -- break; -+ /*arc4random_stir();*/ -+ /*arc4random_buf(rnd, sizeof(rnd));*/ -+/*#ifdef WITH_OPENSSL*/ -+ /*RAND_seed(rnd, sizeof(rnd));*/ -+ /*if ((RAND_bytes((u_char *)rnd, 1)) != 1)*/ -+ /*fatal("%s: RAND_bytes failed", __func__);*/ -+/*#endif*/ -+ /*explicit_bzero(rnd, sizeof(rnd));*/ -+ /*}*/ -+ -+ /*[> child process check (or debug mode) <]*/ -+ /*if (num_listen_socks < 0)*/ -+ /* break;*/ - } - } - -@@ -1317,36 +1323,38 @@ - * rest of the interaction and could still bypass security. So we - * exit here if we detect any IP options. - */ --static void --check_ip_options(struct ssh *ssh) --{ --#ifdef IP_OPTIONS -- int sock_in = ssh_packet_get_connection_in(ssh); -- struct sockaddr_storage from; -- u_char opts[200]; -- socklen_t i, option_size = sizeof(opts), fromlen = sizeof(from); -- char text[sizeof(opts) * 3 + 1]; -- -- memset(&from, 0, sizeof(from)); -- if (getpeername(sock_in, (struct sockaddr *)&from, -- &fromlen) < 0) -- return; -- if (from.ss_family != AF_INET) -- return; -- /* XXX IPv6 options? */ -- -- if (getsockopt(sock_in, IPPROTO_IP, IP_OPTIONS, opts, -- &option_size) >= 0 && option_size != 0) { -- text[0] = '\0'; -- for (i = 0; i < option_size; i++) -- snprintf(text + i*3, sizeof(text) - i*3, -- " %2.2x", opts[i]); -- fatal("Connection from %.100s port %d with IP opts: %.800s", -- ssh_remote_ipaddr(ssh), ssh_remote_port(ssh), text); -- } -- return; --#endif /* IP_OPTIONS */ --} -+//static void -+/* -+ *check_ip_options(struct ssh *ssh) -+ *{ -+ *#ifdef IP_OPTIONS -+ * int sock_in = ssh_packet_get_connection_in(ssh); -+ * struct sockaddr_storage from; -+ * u_char opts[200]; -+ * socklen_t i, option_size = sizeof(opts), fromlen = sizeof(from); -+ * char text[sizeof(opts) * 3 + 1]; -+ * -+ * memset(&from, 0, sizeof(from)); -+ * if (getpeername(sock_in, (struct sockaddr *)&from, -+ * &fromlen) < 0) -+ * return; -+ * if (from.ss_family != AF_INET) -+ * return; -+ * [> XXX IPv6 options? <] -+ * -+ * if (getsockopt(sock_in, IPPROTO_IP, IP_OPTIONS, opts, -+ * &option_size) >= 0 && option_size != 0) { -+ * text[0] = '\0'; -+ * for (i = 0; i < option_size; i++) -+ * snprintf(text + i*3, sizeof(text) - i*3, -+ * " %2.2x", opts[i]); -+ * fatal("Connection from %.100s port %d with IP opts: %.800s", -+ * ssh_remote_ipaddr(ssh), ssh_remote_port(ssh), text); -+ * } -+ * return; -+ *#endif [> IP_OPTIONS <] -+ *} -+ */ - - /* - * Main program for the daemon. -@@ -1393,9 +1401,11 @@ - av = saved_argv; - #endif - -- if (geteuid() == 0 && setgroups(0, NULL) == -1) -- debug("setgroups(): %.200s", strerror(errno)); -- -+/* -+ * if (geteuid() == 0 && setgroups(0, NULL) == -1) -+ * debug("setgroups(): %.200s", strerror(errno)); -+ * -+ */ - /* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */ - sanitise_stdfd(); - -@@ -1648,7 +1658,7 @@ - free(privsep_pw->pw_passwd); - privsep_pw->pw_passwd = xstrdup("*"); - } -- endpwent(); -+ //endpwent(); - - /* load host keys */ - sensitive_data.host_keys = xcalloc(options.num_host_key_files, -@@ -1792,8 +1802,10 @@ - * to create a file, and we can't control the code in every - * module which might be used). - */ -- if (setgroups(0, NULL) < 0) -- debug("setgroups() failed: %.200s", strerror(errno)); -+ /* -+ *if (setgroups(0, NULL) < 0) -+ * debug("setgroups() failed: %.200s", strerror(errno)); -+ */ - - if (rexec_flag) { - rexec_argv = xcalloc(rexec_argc + 2, sizeof(char *)); -@@ -1885,8 +1897,10 @@ - * controlling terminal which will result in "could not set - * controlling tty" errors. - */ -- if (!debug_flag && !inetd_flag && setsid() < 0) -- error("setsid: %.100s", strerror(errno)); -+ /* -+ *if (!debug_flag && !inetd_flag && setsid() < 0) -+ * error("setsid: %.100s", strerror(errno)); -+ */ - #endif - - if (rexec_flag) { -@@ -1953,7 +1967,7 @@ - packet_set_server(); - ssh = active_state; /* XXX */ - -- check_ip_options(ssh); -+ //check_ip_options(ssh); - - /* Prepare the channels layer */ - channel_init_channels(ssh); -@@ -2026,7 +2040,7 @@ - - /* perform the key exchange */ - /* authenticate user and start session */ -- do_ssh2_kex(); -+ //do_ssh2_kex(); - do_authentication2(authctxt); - - /* -@@ -2142,73 +2156,75 @@ - } - - /* SSH2 key exchange */ --static void --do_ssh2_kex(void) --{ -- char *myproposal[PROPOSAL_MAX] = { KEX_SERVER }; -- struct kex *kex; -- int r; -- -- myproposal[PROPOSAL_KEX_ALGS] = compat_kex_proposal( -- options.kex_algorithms); -- myproposal[PROPOSAL_ENC_ALGS_CTOS] = compat_cipher_proposal( -- options.ciphers); -- myproposal[PROPOSAL_ENC_ALGS_STOC] = compat_cipher_proposal( -- options.ciphers); -- myproposal[PROPOSAL_MAC_ALGS_CTOS] = -- myproposal[PROPOSAL_MAC_ALGS_STOC] = options.macs; -- -- if (options.compression == COMP_NONE) { -- myproposal[PROPOSAL_COMP_ALGS_CTOS] = -- myproposal[PROPOSAL_COMP_ALGS_STOC] = "none"; -- } -- -- if (options.rekey_limit || options.rekey_interval) -- packet_set_rekey_limits(options.rekey_limit, -- options.rekey_interval); -- -- myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = compat_pkalg_proposal( -- list_hostkey_types()); -- -- /* start key exchange */ -- if ((r = kex_setup(active_state, myproposal)) != 0) -- fatal("kex_setup: %s", ssh_err(r)); -- kex = active_state->kex; --#ifdef WITH_OPENSSL -- kex->kex[KEX_DH_GRP1_SHA1] = kexdh_server; -- kex->kex[KEX_DH_GRP14_SHA1] = kexdh_server; -- kex->kex[KEX_DH_GRP14_SHA256] = kexdh_server; -- kex->kex[KEX_DH_GRP16_SHA512] = kexdh_server; -- kex->kex[KEX_DH_GRP18_SHA512] = kexdh_server; -- kex->kex[KEX_DH_GEX_SHA1] = kexgex_server; -- kex->kex[KEX_DH_GEX_SHA256] = kexgex_server; --# ifdef OPENSSL_HAS_ECC -- kex->kex[KEX_ECDH_SHA2] = kexecdh_server; --# endif --#endif -- kex->kex[KEX_C25519_SHA256] = kexc25519_server; -- kex->server = 1; -- kex->client_version_string=client_version_string; -- kex->server_version_string=server_version_string; -- kex->load_host_public_key=&get_hostkey_public_by_type; -- kex->load_host_private_key=&get_hostkey_private_by_type; -- kex->host_key_index=&get_hostkey_index; -- kex->sign = sshd_hostkey_sign; -- -- ssh_dispatch_run_fatal(active_state, DISPATCH_BLOCK, &kex->done); -- -- session_id2 = kex->session_id; -- session_id2_len = kex->session_id_len; -- --#ifdef DEBUG_KEXDH -- /* send 1st encrypted/maced/compressed message */ -- packet_start(SSH2_MSG_IGNORE); -- packet_put_cstring("markus"); -- packet_send(); -- packet_write_wait(); --#endif -- debug("KEX done"); --} -+/* -+ *static void -+ *do_ssh2_kex(void) -+ *{ -+ * char *myproposal[PROPOSAL_MAX] = { KEX_SERVER }; -+ * struct kex *kex; -+ * int r; -+ * -+ * myproposal[PROPOSAL_KEX_ALGS] = compat_kex_proposal( -+ * options.kex_algorithms); -+ * myproposal[PROPOSAL_ENC_ALGS_CTOS] = compat_cipher_proposal( -+ * options.ciphers); -+ * myproposal[PROPOSAL_ENC_ALGS_STOC] = compat_cipher_proposal( -+ * options.ciphers); -+ * myproposal[PROPOSAL_MAC_ALGS_CTOS] = -+ * myproposal[PROPOSAL_MAC_ALGS_STOC] = options.macs; -+ * -+ * if (options.compression == COMP_NONE) { -+ * myproposal[PROPOSAL_COMP_ALGS_CTOS] = -+ * myproposal[PROPOSAL_COMP_ALGS_STOC] = "none"; -+ * } -+ * -+ * if (options.rekey_limit || options.rekey_interval) -+ * packet_set_rekey_limits(options.rekey_limit, -+ * options.rekey_interval); -+ * -+ * myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = compat_pkalg_proposal( -+ * list_hostkey_types()); -+ * -+ * [> start key exchange <] -+ * if ((r = kex_setup(active_state, myproposal)) != 0) -+ * fatal("kex_setup: %s", ssh_err(r)); -+ * kex = active_state->kex; -+ *#ifdef WITH_OPENSSL -+ * kex->kex[KEX_DH_GRP1_SHA1] = kexdh_server; -+ * kex->kex[KEX_DH_GRP14_SHA1] = kexdh_server; -+ * kex->kex[KEX_DH_GRP14_SHA256] = kexdh_server; -+ * kex->kex[KEX_DH_GRP16_SHA512] = kexdh_server; -+ * kex->kex[KEX_DH_GRP18_SHA512] = kexdh_server; -+ * kex->kex[KEX_DH_GEX_SHA1] = kexgex_server; -+ * kex->kex[KEX_DH_GEX_SHA256] = kexgex_server; -+ *# ifdef OPENSSL_HAS_ECC -+ * kex->kex[KEX_ECDH_SHA2] = kexecdh_server; -+ *# endif -+ *#endif -+ * kex->kex[KEX_C25519_SHA256] = kexc25519_server; -+ * kex->server = 1; -+ * kex->client_version_string=client_version_string; -+ * kex->server_version_string=server_version_string; -+ * kex->load_host_public_key=&get_hostkey_public_by_type; -+ * kex->load_host_private_key=&get_hostkey_private_by_type; -+ * kex->host_key_index=&get_hostkey_index; -+ * kex->sign = sshd_hostkey_sign; -+ * -+ * ssh_dispatch_run_fatal(active_state, DISPATCH_BLOCK, &kex->done); -+ * -+ * session_id2 = kex->session_id; -+ * session_id2_len = kex->session_id_len; -+ * -+ *#ifdef DEBUG_KEXDH -+ * [> send 1st encrypted/maced/compressed message <] -+ * packet_start(SSH2_MSG_IGNORE); -+ * packet_put_cstring("markus"); -+ * packet_send(); -+ * packet_write_wait(); -+ *#endif -+ * debug("KEX done"); -+ *} -+ */ - - /* server specific fatal cleanup */ - void -diff -ru source/ssh-dss.c source-new/ssh-dss.c ---- source/ssh-dss.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/ssh-dss.c 2017-11-02 18:31:51.968879029 -0700 -@@ -53,6 +53,7 @@ - DSA_SIG *sig = NULL; - u_char digest[SSH_DIGEST_MAX_LENGTH], sigblob[SIGBLOB_LEN]; - size_t rlen, slen, len, dlen = ssh_digest_bytes(SSH_DIGEST_SHA1); -+ const BIGNUM *r, *s; - struct sshbuf *b = NULL; - int ret = SSH_ERR_INVALID_ARGUMENT; - -@@ -76,15 +77,16 @@ - goto out; - } - -- rlen = BN_num_bytes(sig->r); -- slen = BN_num_bytes(sig->s); -+ DSA_SIG_get0(sig, &r, &s); -+ rlen = BN_num_bytes(r); -+ slen = BN_num_bytes(s); - if (rlen > INTBLOB_LEN || slen > INTBLOB_LEN) { - ret = SSH_ERR_INTERNAL_ERROR; - goto out; - } - explicit_bzero(sigblob, SIGBLOB_LEN); -- BN_bn2bin(sig->r, sigblob + SIGBLOB_LEN - INTBLOB_LEN - rlen); -- BN_bn2bin(sig->s, sigblob + SIGBLOB_LEN - slen); -+ BN_bn2bin(r, sigblob + SIGBLOB_LEN - INTBLOB_LEN - rlen); -+ BN_bn2bin(s, sigblob + SIGBLOB_LEN - slen); - - if (compat & SSH_BUG_SIGBLOB) { - if (sigp != NULL) { -@@ -176,17 +178,26 @@ - } - - /* parse signature */ -+ { -+ BIGNUM *r=NULL, *s=NULL; - if ((sig = DSA_SIG_new()) == NULL || -- (sig->r = BN_new()) == NULL || -- (sig->s = BN_new()) == NULL) { -+ (r = BN_new()) == NULL || -+ (s = BN_new()) == NULL) { - ret = SSH_ERR_ALLOC_FAIL; -+ BN_free(r); -+ BN_free(s); - goto out; - } -- if ((BN_bin2bn(sigblob, INTBLOB_LEN, sig->r) == NULL) || -- (BN_bin2bn(sigblob+ INTBLOB_LEN, INTBLOB_LEN, sig->s) == NULL)) { -+ if ((BN_bin2bn(sigblob, INTBLOB_LEN, r) == NULL) || -+ (BN_bin2bn(sigblob+ INTBLOB_LEN, INTBLOB_LEN, s) == NULL)) { - ret = SSH_ERR_LIBCRYPTO_ERROR; -+ BN_free(r); -+ BN_free(s); - goto out; - } -+ DSA_SIG_set0(sig, r, s); -+ r = s = NULL; -+ } - - /* sha1 the data */ - if ((ret = ssh_digest_memory(SSH_DIGEST_SHA1, data, datalen, -diff -ru source/ssh-ecdsa.c source-new/ssh-ecdsa.c ---- source/ssh-ecdsa.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/ssh-ecdsa.c 2017-11-02 18:31:51.968879029 -0700 -@@ -80,9 +80,14 @@ - ret = SSH_ERR_ALLOC_FAIL; - goto out; - } -- if ((ret = sshbuf_put_bignum2(bb, sig->r)) != 0 || -- (ret = sshbuf_put_bignum2(bb, sig->s)) != 0) -+ { -+ const BIGNUM *r, *s; -+ ECDSA_SIG_get0(sig, &r, &s); -+ if ((ret = sshbuf_put_bignum2(bb, r)) != 0 || -+ (ret = sshbuf_put_bignum2(bb, s)) != 0) { - goto out; -+ } -+ } - if ((ret = sshbuf_put_cstring(b, sshkey_ssh_name_plain(key))) != 0 || - (ret = sshbuf_put_stringb(b, bb)) != 0) - goto out; -@@ -151,11 +156,27 @@ - ret = SSH_ERR_ALLOC_FAIL; - goto out; - } -- if (sshbuf_get_bignum2(sigbuf, sig->r) != 0 || -- sshbuf_get_bignum2(sigbuf, sig->s) != 0) { -+ { -+ BIGNUM *r=NULL, *s=NULL; -+ if ((r = BN_new()) == NULL || -+ (s = BN_new()) == NULL) { -+ ret = SSH_ERR_ALLOC_FAIL; -+ goto out_rs; -+ } -+ if (sshbuf_get_bignum2(sigbuf, r) != 0 || -+ sshbuf_get_bignum2(sigbuf, s) != 0) { - ret = SSH_ERR_INVALID_FORMAT; -+ goto out_rs; -+ } -+ if (ECDSA_SIG_set0(sig, r, s) == 0) { -+ ret = SSH_ERR_LIBCRYPTO_ERROR; -+out_rs: -+ BN_free(r); -+ BN_free(s); - goto out; - } -+ r = s = NULL; -+ } - if (sshbuf_len(sigbuf) != 0) { - ret = SSH_ERR_UNEXPECTED_TRAILING_DATA; - goto out; -diff -ru source/sshkey.c source-new/sshkey.c ---- source/sshkey.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/sshkey.c 2017-11-02 18:31:51.968879029 -0700 -@@ -264,10 +264,18 @@ - #ifdef WITH_OPENSSL - case KEY_RSA: - case KEY_RSA_CERT: -- return BN_num_bits(k->rsa->n); -+#if OPENSSL_VERSION_NUMBER >= 0x10100000UL -+ return RSA_bits(k->rsa); -+#else -+ return RSA_bits(key->rsa); -+#endif - case KEY_DSA: - case KEY_DSA_CERT: -+#if OPENSSL_VERSION_NUMBER >= 0x10100000UL -+ return DSA_bits(k->dsa); -+#else - return BN_num_bits(k->dsa->p); -+#endif - case KEY_ECDSA: - case KEY_ECDSA_CERT: - return sshkey_curve_nid_to_bits(k->ecdsa_nid); -@@ -466,28 +474,55 @@ - #ifdef WITH_OPENSSL - case KEY_RSA: - case KEY_RSA_CERT: -+ { -+ BIGNUM *n=NULL, *e=NULL; /* just allocate */ - if ((rsa = RSA_new()) == NULL || -- (rsa->n = BN_new()) == NULL || -- (rsa->e = BN_new()) == NULL) { -+ (n = BN_new()) == NULL || -+ (e = BN_new()) == NULL) { -+ BN_free(n); -+ BN_free(e); - if (rsa != NULL) - RSA_free(rsa); - free(k); - return NULL; - } -+ BN_clear(n); BN_clear(e); -+ if (RSA_set0_key(rsa, n, e, NULL) == 0) -+ return NULL; -+ n = e = NULL; -+ } - k->rsa = rsa; - break; - case KEY_DSA: - case KEY_DSA_CERT: -+ { -+ BIGNUM *p=NULL, *q=NULL, *g=NULL, *pubkey=NULL; /* just allocate */ - if ((dsa = DSA_new()) == NULL || -- (dsa->p = BN_new()) == NULL || -- (dsa->q = BN_new()) == NULL || -- (dsa->g = BN_new()) == NULL || -- (dsa->pub_key = BN_new()) == NULL) { -+ (p = BN_new()) == NULL || -+ (q = BN_new()) == NULL || -+ (g = BN_new()) == NULL || -+ (pubkey = BN_new()) == NULL) { -+ BN_free(p); -+ BN_free(q); -+ BN_free(g); -+ BN_free(pubkey); - if (dsa != NULL) - DSA_free(dsa); - free(k); - return NULL; - } -+ if (DSA_set0_pqg(dsa, p, q, g) == 0) { -+ BN_free(p); BN_free(q); BN_free(g); -+ BN_free(pubkey); -+ return NULL; -+ } -+ p = q = g = NULL; -+ if (DSA_set0_key(dsa, pubkey, NULL) == 0) { -+ BN_free(pubkey); -+ return NULL; -+ } -+ pubkey = NULL; -+ } - k->dsa = dsa; - break; - case KEY_ECDSA: -@@ -523,6 +558,51 @@ - #ifdef WITH_OPENSSL - case KEY_RSA: - case KEY_RSA_CERT: -+#if OPENSSL_VERSION_NUMBER >= 0x10100000UL -+ /* Allocate BIGNUM. This is a mess. -+ For OpenSSL 1.1.x API these shouldn't be mandatory, -+ but some regression tests for non-NULL pointer of -+ the data. */ -+#define new_or_dup(bn, nbn) \ -+ if (bn == NULL) { \ -+ if ((nbn = BN_new()) == NULL) \ -+ return SSH_ERR_ALLOC_FAIL; \ -+ } else { \ -+ /* otherwise use-after-free will occur */ \ -+ if ((nbn = BN_dup(bn)) == NULL) \ -+ return SSH_ERR_ALLOC_FAIL; \ -+ } -+ { -+ const BIGNUM *d, *iqmp, *q, *p, *dmq1, *dmp1; /* allocate if NULL */ -+ BIGNUM *nd, *niqmp, *nq, *np, *ndmq1, *ndmp1; -+ -+ RSA_get0_key(k->rsa, NULL, NULL, &d); -+ RSA_get0_factors(k->rsa, &p, &q); -+ RSA_get0_crt_params(k->rsa, &dmp1, &dmq1, &iqmp); -+ -+ new_or_dup(d, nd); -+ new_or_dup(iqmp, niqmp); -+ new_or_dup(q, nq); -+ new_or_dup(p, np); -+ new_or_dup(dmq1, ndmq1); -+ new_or_dup(dmp1, ndmp1); -+ -+ if (RSA_set0_key(k->rsa, NULL, NULL, nd) == 0) -+ goto error1; -+ nd = NULL; -+ if (RSA_set0_factors(k->rsa, np, nq) == 0) -+ goto error1; -+ np = nq = NULL; -+ if (RSA_set0_crt_params(k->rsa, ndmp1, ndmq1, niqmp) == 0) { -+error1: -+ BN_free(nd); -+ BN_free(np); BN_free(nq); -+ BN_free(ndmp1); BN_free(ndmq1); BN_free(niqmp); -+ return SSH_ERR_LIBCRYPTO_ERROR; -+ } -+ ndmp1 = ndmq1 = niqmp = NULL; -+ } -+#else - #define bn_maybe_alloc_failed(p) (p == NULL && (p = BN_new()) == NULL) - if (bn_maybe_alloc_failed(k->rsa->d) || - bn_maybe_alloc_failed(k->rsa->iqmp) || -@@ -531,13 +611,28 @@ - bn_maybe_alloc_failed(k->rsa->dmq1) || - bn_maybe_alloc_failed(k->rsa->dmp1)) - return SSH_ERR_ALLOC_FAIL; -+#endif - break; - case KEY_DSA: - case KEY_DSA_CERT: -+#if OPENSSL_VERSION_NUMBER >= 0x10100000UL -+ { -+ const BIGNUM *priv_key; -+ BIGNUM *npriv_key; -+ DSA_get0_key(k->dsa, NULL, &priv_key); -+ new_or_dup(priv_key, npriv_key); -+ if (DSA_set0_key(k->dsa, NULL, npriv_key) == 0) { -+ BN_free(npriv_key); -+ return SSH_ERR_LIBCRYPTO_ERROR; -+ } -+ } -+#else - if (bn_maybe_alloc_failed(k->dsa->priv_key)) - return SSH_ERR_ALLOC_FAIL; -+#endif - break; - #undef bn_maybe_alloc_failed -+#undef new_or_dup - case KEY_ECDSA: - case KEY_ECDSA_CERT: - /* Cannot do anything until we know the group */ -@@ -655,16 +750,34 @@ - #ifdef WITH_OPENSSL - case KEY_RSA_CERT: - case KEY_RSA: -- return a->rsa != NULL && b->rsa != NULL && -- BN_cmp(a->rsa->e, b->rsa->e) == 0 && -- BN_cmp(a->rsa->n, b->rsa->n) == 0; -+ { -+ const BIGNUM *a_e, *b_e, *a_n, *b_n; -+ const BIGNUM *a_d, *b_d; -+ if (a->rsa == NULL) return 0; -+ if (b->rsa == NULL) return 0; -+ RSA_get0_key(a->rsa, &a_n, &a_e, &a_d); -+ RSA_get0_key(b->rsa, &b_n, &b_e, &b_d); -+ return -+ BN_cmp(a_e, b_e) == 0 && -+ BN_cmp(a_n, b_n) == 0; -+ } - case KEY_DSA_CERT: - case KEY_DSA: -- return a->dsa != NULL && b->dsa != NULL && -- BN_cmp(a->dsa->p, b->dsa->p) == 0 && -- BN_cmp(a->dsa->q, b->dsa->q) == 0 && -- BN_cmp(a->dsa->g, b->dsa->g) == 0 && -- BN_cmp(a->dsa->pub_key, b->dsa->pub_key) == 0; -+ { -+ const BIGNUM *a_p, *a_q, *a_g, *a_pub_key; -+ const BIGNUM *b_p, *b_q, *b_g, *b_pub_key; -+ if (a->dsa == NULL) return 0; -+ if (b->dsa == NULL) return 0; -+ DSA_get0_pqg(a->dsa, &a_p, &a_q, &a_g); -+ DSA_get0_pqg(b->dsa, &b_p, &b_q, &b_g); -+ DSA_get0_key(a->dsa, &a_pub_key, NULL); -+ DSA_get0_key(b->dsa, &b_pub_key, NULL); -+ return -+ BN_cmp(a_p, b_p) == 0 && -+ BN_cmp(a_q, b_q) == 0 && -+ BN_cmp(a_g, b_g) == 0 && -+ BN_cmp(a_pub_key, b_pub_key) == 0; -+ } - # ifdef OPENSSL_HAS_ECC - case KEY_ECDSA_CERT: - case KEY_ECDSA: -@@ -742,12 +855,17 @@ - case KEY_DSA: - if (key->dsa == NULL) - return SSH_ERR_INVALID_ARGUMENT; -+ { -+ const BIGNUM *p, *q, *g, *pub_key; -+ DSA_get0_pqg(key->dsa, &p, &q, &g); -+ DSA_get0_key(key->dsa, &pub_key, NULL); - if ((ret = sshbuf_put_cstring(b, typename)) != 0 || -- (ret = sshbuf_put_bignum2(b, key->dsa->p)) != 0 || -- (ret = sshbuf_put_bignum2(b, key->dsa->q)) != 0 || -- (ret = sshbuf_put_bignum2(b, key->dsa->g)) != 0 || -- (ret = sshbuf_put_bignum2(b, key->dsa->pub_key)) != 0) -+ (ret = sshbuf_put_bignum2(b, p)) != 0 || -+ (ret = sshbuf_put_bignum2(b, q)) != 0 || -+ (ret = sshbuf_put_bignum2(b, g)) != 0 || -+ (ret = sshbuf_put_bignum2(b, pub_key)) != 0) - return ret; -+ } - break; - # ifdef OPENSSL_HAS_ECC - case KEY_ECDSA: -@@ -763,10 +881,14 @@ - case KEY_RSA: - if (key->rsa == NULL) - return SSH_ERR_INVALID_ARGUMENT; -+ { -+ const BIGNUM *e, *n; -+ RSA_get0_key(key->rsa, &n, &e, NULL); - if ((ret = sshbuf_put_cstring(b, typename)) != 0 || -- (ret = sshbuf_put_bignum2(b, key->rsa->e)) != 0 || -- (ret = sshbuf_put_bignum2(b, key->rsa->n)) != 0) -+ (ret = sshbuf_put_bignum2(b, e)) != 0 || -+ (ret = sshbuf_put_bignum2(b, n)) != 0) - return ret; -+ } - break; - #endif /* WITH_OPENSSL */ - case KEY_ED25519: -@@ -1643,13 +1765,32 @@ - case KEY_DSA_CERT: - if ((n = sshkey_new(k->type)) == NULL) - return SSH_ERR_ALLOC_FAIL; -- if ((BN_copy(n->dsa->p, k->dsa->p) == NULL) || -- (BN_copy(n->dsa->q, k->dsa->q) == NULL) || -- (BN_copy(n->dsa->g, k->dsa->g) == NULL) || -- (BN_copy(n->dsa->pub_key, k->dsa->pub_key) == NULL)) { -+ { -+ const BIGNUM *p, *q, *g, *pub_key, *priv_key; -+ BIGNUM *cp=NULL, *cq=NULL, *cg=NULL, *cpub_key=NULL; -+ DSA_get0_pqg(k->dsa, &p, &q, &g); -+ DSA_get0_key(k->dsa, &pub_key, &priv_key); -+ if ((cp = BN_dup(p)) == NULL || -+ (cq = BN_dup(q)) == NULL || -+ (cg = BN_dup(g)) == NULL || -+ (cpub_key = BN_dup(pub_key)) == NULL) { -+ BN_free(cp); BN_free(cq); BN_free(cg); -+ BN_free(cpub_key); - sshkey_free(n); - return SSH_ERR_ALLOC_FAIL; - } -+ if (DSA_set0_pqg(n->dsa, cp, cq, cg) == 0) -+ goto error1; -+ cp = cq = cg = NULL; -+ if (DSA_set0_key(n->dsa, cpub_key, NULL) == 0) { -+error1: -+ BN_free(cp); BN_free(cq); BN_free(cg); -+ BN_free(cpub_key); -+ sshkey_free(n); -+ return SSH_ERR_LIBCRYPTO_ERROR; -+ } -+ cpub_key = NULL; -+ } - break; - # ifdef OPENSSL_HAS_ECC - case KEY_ECDSA: -@@ -1673,11 +1814,23 @@ - case KEY_RSA_CERT: - if ((n = sshkey_new(k->type)) == NULL) - return SSH_ERR_ALLOC_FAIL; -- if ((BN_copy(n->rsa->n, k->rsa->n) == NULL) || -- (BN_copy(n->rsa->e, k->rsa->e) == NULL)) { -+ { -+ const BIGNUM *nn, *e, *d; -+ BIGNUM *cn=NULL, *ce=NULL; -+ RSA_get0_key(k->rsa, &nn, &e, &d); -+ if ((cn = BN_dup(nn)) == NULL || -+ (ce = BN_dup(e)) == NULL ) { -+ BN_free(cn); BN_free(ce); - sshkey_free(n); - return SSH_ERR_ALLOC_FAIL; - } -+ if (RSA_set0_key(n->rsa, cn, ce, NULL) == 0) { -+ BN_free(cn); BN_free(ce); -+ sshkey_free(n); -+ return SSH_ERR_LIBCRYPTO_ERROR; -+ } -+ cn = ce = NULL; -+ } - break; - #endif /* WITH_OPENSSL */ - case KEY_ED25519: -@@ -1875,12 +2028,27 @@ - ret = SSH_ERR_ALLOC_FAIL; - goto out; - } -- if (sshbuf_get_bignum2(b, key->rsa->e) != 0 || -- sshbuf_get_bignum2(b, key->rsa->n) != 0) { -+ { -+ BIGNUM *e=NULL, *n=NULL; -+ if ((e = BN_new()) == NULL || -+ (n = BN_new()) == NULL ) { -+ ret = SSH_ERR_ALLOC_FAIL; -+ BN_free(e); BN_free(n); -+ goto out; -+ } -+ if (sshbuf_get_bignum2(b, e) != 0 || -+ sshbuf_get_bignum2(b, n) != 0) { - ret = SSH_ERR_INVALID_FORMAT; -+ BN_free(e); BN_free(n); - goto out; - } -- if (BN_num_bits(key->rsa->n) < SSH_RSA_MINIMUM_MODULUS_SIZE) { -+ if (RSA_set0_key(key->rsa, n, e, NULL) == 0) { -+ BN_free(e); BN_free(n); -+ return SSH_ERR_LIBCRYPTO_ERROR; -+ } -+ n = e = NULL; -+ } -+ if (RSA_bits(key->rsa) < SSH_RSA_MINIMUM_MODULUS_SIZE) { - ret = SSH_ERR_KEY_LENGTH; - goto out; - } -@@ -1900,13 +2068,36 @@ - ret = SSH_ERR_ALLOC_FAIL; - goto out; - } -- if (sshbuf_get_bignum2(b, key->dsa->p) != 0 || -- sshbuf_get_bignum2(b, key->dsa->q) != 0 || -- sshbuf_get_bignum2(b, key->dsa->g) != 0 || -- sshbuf_get_bignum2(b, key->dsa->pub_key) != 0) { -+ { -+ BIGNUM *p=NULL, *q=NULL, *g=NULL, *pub_key=NULL; -+ if ((p = BN_new()) == NULL || -+ (q = BN_new()) == NULL || -+ (g = BN_new()) == NULL || -+ (pub_key = BN_new()) == NULL) { -+ ret = SSH_ERR_ALLOC_FAIL; -+ goto error1; -+ } -+ if (sshbuf_get_bignum2(b, p) != 0 || -+ sshbuf_get_bignum2(b, q) != 0 || -+ sshbuf_get_bignum2(b, g) != 0 || -+ sshbuf_get_bignum2(b, pub_key) != 0) { - ret = SSH_ERR_INVALID_FORMAT; -+ goto error1; -+ } -+ if (DSA_set0_pqg(key->dsa, p, q, g) == 0) { -+ ret = SSH_ERR_LIBCRYPTO_ERROR; -+ goto error1; -+ } -+ p = q = g = NULL; -+ if (DSA_set0_key(key->dsa, pub_key, NULL) == 0) { -+ ret = SSH_ERR_LIBCRYPTO_ERROR; -+error1: -+ BN_free(p); BN_free(q); BN_free(g); -+ BN_free(pub_key); - goto out; - } -+ pub_key = NULL; -+ } - #ifdef DEBUG_PK - DSA_print_fp(stderr, key->dsa, 8); - #endif -@@ -2140,26 +2331,63 @@ - goto fail; - /* FALLTHROUGH */ - case KEY_RSA: -- if ((pk->rsa = RSA_new()) == NULL || -- (pk->rsa->e = BN_dup(k->rsa->e)) == NULL || -- (pk->rsa->n = BN_dup(k->rsa->n)) == NULL) { -+ if ((pk->rsa = RSA_new()) == NULL ){ - ret = SSH_ERR_ALLOC_FAIL; - goto fail; - } -+ { -+ const BIGNUM *ke, *kn; -+ BIGNUM *pke=NULL, *pkn=NULL; -+ RSA_get0_key(k->rsa, &kn, &ke, NULL); -+ if ((pke = BN_dup(ke)) == NULL || -+ (pkn = BN_dup(kn)) == NULL) { -+ ret = SSH_ERR_ALLOC_FAIL; -+ BN_free(pke); BN_free(pkn); -+ goto fail; -+ } -+ if (RSA_set0_key(pk->rsa, pkn, pke, NULL) == 0) { -+ ret = SSH_ERR_LIBCRYPTO_ERROR; -+ BN_free(pke); BN_free(pkn); -+ goto fail; -+ } -+ pkn = pke = NULL; -+ } - break; - case KEY_DSA_CERT: - if ((ret = sshkey_cert_copy(k, pk)) != 0) - goto fail; - /* FALLTHROUGH */ - case KEY_DSA: -- if ((pk->dsa = DSA_new()) == NULL || -- (pk->dsa->p = BN_dup(k->dsa->p)) == NULL || -- (pk->dsa->q = BN_dup(k->dsa->q)) == NULL || -- (pk->dsa->g = BN_dup(k->dsa->g)) == NULL || -- (pk->dsa->pub_key = BN_dup(k->dsa->pub_key)) == NULL) { -+ if ((pk->dsa = DSA_new()) == NULL ) { - ret = SSH_ERR_ALLOC_FAIL; - goto fail; - } -+ { -+ const BIGNUM *kp, *kq, *kg, *kpub_key; -+ BIGNUM *pkp=NULL, *pkq=NULL, *pkg=NULL, *pkpub_key=NULL; -+ DSA_get0_pqg(k->dsa, &kp, &kq, &kg); -+ DSA_get0_key(k->dsa, &kpub_key, NULL); -+ if ((pkp = BN_dup(kp)) == NULL || -+ (pkq = BN_dup(kq)) == NULL || -+ (pkg = BN_dup(kg)) == NULL || -+ (pkpub_key = BN_dup(kpub_key)) == NULL) { -+ ret = SSH_ERR_ALLOC_FAIL; -+ goto error1; -+ } -+ if (DSA_set0_pqg(pk->dsa, pkp, pkq, pkg) == 0) { -+ ret = SSH_ERR_LIBCRYPTO_ERROR; -+ goto error1; -+ } -+ pkp = pkq = pkg = NULL; -+ if (DSA_set0_key(pk->dsa, pkpub_key, NULL) == 0) { -+ ret = SSH_ERR_LIBCRYPTO_ERROR; -+error1: -+ BN_free(pkp); BN_free(pkq); BN_free(pkg); -+ BN_free(pkpub_key); -+ goto fail; -+ } -+ pkpub_key = NULL; -+ } - break; - case KEY_ECDSA_CERT: - if ((ret = sshkey_cert_copy(k, pk)) != 0) -@@ -2281,11 +2509,17 @@ - switch (k->type) { - #ifdef WITH_OPENSSL - case KEY_DSA_CERT: -- if ((ret = sshbuf_put_bignum2(cert, k->dsa->p)) != 0 || -- (ret = sshbuf_put_bignum2(cert, k->dsa->q)) != 0 || -- (ret = sshbuf_put_bignum2(cert, k->dsa->g)) != 0 || -- (ret = sshbuf_put_bignum2(cert, k->dsa->pub_key)) != 0) -+ { -+ const BIGNUM *p, *q, *g, *pub_key; -+ DSA_get0_pqg(k->dsa, &p, &q, &g); -+ DSA_get0_key(k->dsa, &pub_key, NULL); -+ if ((ret = sshbuf_put_bignum2(cert, p)) != 0 || -+ (ret = sshbuf_put_bignum2(cert, q)) != 0 || -+ (ret = sshbuf_put_bignum2(cert, g)) != 0 || -+ (ret = sshbuf_put_bignum2(cert, pub_key)) != 0) { - goto out; -+ } -+ } - break; - # ifdef OPENSSL_HAS_ECC - case KEY_ECDSA_CERT: -@@ -2298,9 +2532,15 @@ - break; - # endif /* OPENSSL_HAS_ECC */ - case KEY_RSA_CERT: -- if ((ret = sshbuf_put_bignum2(cert, k->rsa->e)) != 0 || -- (ret = sshbuf_put_bignum2(cert, k->rsa->n)) != 0) -+ { -+ const BIGNUM *e, *n; -+ RSA_get0_key(k->rsa, &n, &e, NULL); -+ if (n == NULL || e == NULL || -+ (ret = sshbuf_put_bignum2(cert, e)) != 0 || -+ (ret = sshbuf_put_bignum2(cert, n)) != 0) { - goto out; -+ } -+ } - break; - #endif /* WITH_OPENSSL */ - case KEY_ED25519_CERT: -@@ -2474,42 +2714,67 @@ - switch (key->type) { - #ifdef WITH_OPENSSL - case KEY_RSA: -- if ((r = sshbuf_put_bignum2(b, key->rsa->n)) != 0 || -- (r = sshbuf_put_bignum2(b, key->rsa->e)) != 0 || -- (r = sshbuf_put_bignum2(b, key->rsa->d)) != 0 || -- (r = sshbuf_put_bignum2(b, key->rsa->iqmp)) != 0 || -- (r = sshbuf_put_bignum2(b, key->rsa->p)) != 0 || -- (r = sshbuf_put_bignum2(b, key->rsa->q)) != 0) -+ { -+ const BIGNUM *n, *e, *d, *iqmp, *p, *q; -+ RSA_get0_key(key->rsa, &n, &e, &d); -+ RSA_get0_crt_params(key->rsa, NULL, NULL, &iqmp); -+ RSA_get0_factors(key->rsa, &p, &q); -+ if ((r = sshbuf_put_bignum2(b, n)) != 0 || -+ (r = sshbuf_put_bignum2(b, e)) != 0 || -+ (r = sshbuf_put_bignum2(b, d)) != 0 || -+ (r = sshbuf_put_bignum2(b, iqmp)) != 0 || -+ (r = sshbuf_put_bignum2(b, p)) != 0 || -+ (r = sshbuf_put_bignum2(b, q)) != 0) { - goto out; -+ } -+ } - break; - case KEY_RSA_CERT: - if (key->cert == NULL || sshbuf_len(key->cert->certblob) == 0) { - r = SSH_ERR_INVALID_ARGUMENT; - goto out; - } -+ { -+ const BIGNUM *d, *iqmp, *p, *q; -+ RSA_get0_key(key->rsa, NULL, NULL, &d); -+ RSA_get0_crt_params(key->rsa, NULL, NULL, &iqmp); -+ RSA_get0_factors(key->rsa, &p, &q); - if ((r = sshbuf_put_stringb(b, key->cert->certblob)) != 0 || -- (r = sshbuf_put_bignum2(b, key->rsa->d)) != 0 || -- (r = sshbuf_put_bignum2(b, key->rsa->iqmp)) != 0 || -- (r = sshbuf_put_bignum2(b, key->rsa->p)) != 0 || -- (r = sshbuf_put_bignum2(b, key->rsa->q)) != 0) -+ (r = sshbuf_put_bignum2(b, d)) != 0 || -+ (r = sshbuf_put_bignum2(b, iqmp)) != 0 || -+ (r = sshbuf_put_bignum2(b, p)) != 0 || -+ (r = sshbuf_put_bignum2(b, q)) != 0) { - goto out; -+ } -+ } - break; - case KEY_DSA: -- if ((r = sshbuf_put_bignum2(b, key->dsa->p)) != 0 || -- (r = sshbuf_put_bignum2(b, key->dsa->q)) != 0 || -- (r = sshbuf_put_bignum2(b, key->dsa->g)) != 0 || -- (r = sshbuf_put_bignum2(b, key->dsa->pub_key)) != 0 || -- (r = sshbuf_put_bignum2(b, key->dsa->priv_key)) != 0) -+ { -+ const BIGNUM *p, *q, *g, *pub_key, *priv_key; -+ DSA_get0_pqg(key->dsa, &p, &q, &g); -+ DSA_get0_key(key->dsa, &pub_key, &priv_key); -+ if ((r = sshbuf_put_bignum2(b, p)) != 0 || -+ (r = sshbuf_put_bignum2(b, q)) != 0 || -+ (r = sshbuf_put_bignum2(b, g)) != 0 || -+ (r = sshbuf_put_bignum2(b, pub_key)) != 0 || -+ (r = sshbuf_put_bignum2(b, priv_key)) != 0) { - goto out; -+ } -+ } - break; - case KEY_DSA_CERT: - if (key->cert == NULL || sshbuf_len(key->cert->certblob) == 0) { - r = SSH_ERR_INVALID_ARGUMENT; - goto out; - } -+ { -+ const BIGNUM *priv_key; -+ DSA_get0_key(key->dsa, NULL, &priv_key); - if ((r = sshbuf_put_stringb(b, key->cert->certblob)) != 0 || -- (r = sshbuf_put_bignum2(b, key->dsa->priv_key)) != 0) -+ (r = sshbuf_put_bignum2(b, priv_key)) != 0) { - goto out; -+ } -+ } - break; - # ifdef OPENSSL_HAS_ECC - case KEY_ECDSA: -@@ -2585,18 +2850,61 @@ - r = SSH_ERR_ALLOC_FAIL; - goto out; - } -- if ((r = sshbuf_get_bignum2(buf, k->dsa->p)) != 0 || -- (r = sshbuf_get_bignum2(buf, k->dsa->q)) != 0 || -- (r = sshbuf_get_bignum2(buf, k->dsa->g)) != 0 || -- (r = sshbuf_get_bignum2(buf, k->dsa->pub_key)) != 0 || -- (r = sshbuf_get_bignum2(buf, k->dsa->priv_key)) != 0) -+ { -+ BIGNUM *p=NULL, *q=NULL, *g=NULL, *pub_key=NULL, *priv_key=NULL; -+ if ((p = BN_new()) == NULL || -+ (q = BN_new()) == NULL || -+ (g = BN_new()) == NULL || -+ (pub_key = BN_new()) == NULL || -+ (priv_key = BN_new()) == NULL) { -+ r = SSH_ERR_ALLOC_FAIL; -+ goto error1; -+ } -+ if (p == NULL || q == NULL || g == NULL || -+ pub_key == NULL || priv_key == NULL || -+ (r = sshbuf_get_bignum2(buf, p)) != 0 || -+ (r = sshbuf_get_bignum2(buf, q)) != 0 || -+ (r = sshbuf_get_bignum2(buf, g)) != 0 || -+ (r = sshbuf_get_bignum2(buf, pub_key)) != 0 || -+ (r = sshbuf_get_bignum2(buf, priv_key)) != 0) { -+ goto error1; -+ } -+ if (DSA_set0_pqg(k->dsa, p, q, g) == 0) { -+ r = SSH_ERR_LIBCRYPTO_ERROR; -+ goto error1; -+ } -+ p = q = g = NULL; -+ if (DSA_set0_key(k->dsa, pub_key, priv_key) == 0) { -+ r = SSH_ERR_LIBCRYPTO_ERROR; -+error1: -+ BN_free(p); BN_free(q); BN_free(g); -+ BN_free(pub_key); BN_free(priv_key); - goto out; -+ } -+ pub_key = priv_key = NULL; -+ } - break; - case KEY_DSA_CERT: -- if ((r = sshkey_froms(buf, &k)) != 0 || -+ { -+ BIGNUM *priv_key=NULL; -+ if ((priv_key = BN_new()) == NULL) { -+ r = SSH_ERR_ALLOC_FAIL; -+ goto out; -+ } -+ if (priv_key == NULL || -+ (r = sshkey_froms(buf, &k)) != 0 || - (r = sshkey_add_private(k)) != 0 || -- (r = sshbuf_get_bignum2(buf, k->dsa->priv_key)) != 0) -+ (r = sshbuf_get_bignum2(buf, priv_key)) != 0) { -+ BN_free(priv_key); -+ goto out; -+ } -+ if (DSA_set0_key(k->dsa, NULL, priv_key) == 0) { -+ r = SSH_ERR_LIBCRYPTO_ERROR; -+ BN_free(priv_key); - goto out; -+ } -+ priv_key = NULL; -+ } - break; - # ifdef OPENSSL_HAS_ECC - case KEY_ECDSA: -@@ -2655,29 +2963,104 @@ - r = SSH_ERR_ALLOC_FAIL; - goto out; - } -- if ((r = sshbuf_get_bignum2(buf, k->rsa->n)) != 0 || -- (r = sshbuf_get_bignum2(buf, k->rsa->e)) != 0 || -- (r = sshbuf_get_bignum2(buf, k->rsa->d)) != 0 || -- (r = sshbuf_get_bignum2(buf, k->rsa->iqmp)) != 0 || -- (r = sshbuf_get_bignum2(buf, k->rsa->p)) != 0 || -- (r = sshbuf_get_bignum2(buf, k->rsa->q)) != 0 || -- (r = ssh_rsa_generate_additional_parameters(k)) != 0) -+ { -+ BIGNUM *n=NULL, *e=NULL, *d=NULL, *iqmp=NULL, *p=NULL, *q=NULL; -+ BIGNUM *dmp1=NULL, *dmq1=NULL; /* dummy for RSA_set0_crt_params */ -+ if ((n = BN_new()) == NULL || -+ (e = BN_new()) == NULL || -+ (d = BN_new()) == NULL || -+ (iqmp = BN_new()) == NULL || -+ (p = BN_new()) == NULL || -+ (q = BN_new()) == NULL || -+ (dmp1 = BN_new()) == NULL || -+ (dmq1 = BN_new()) == NULL) { -+ r = SSH_ERR_ALLOC_FAIL; -+ goto error2; -+ } -+ BN_clear(dmp1); BN_clear(dmq1); -+ if ((r = sshbuf_get_bignum2(buf, n)) != 0 || -+ (r = sshbuf_get_bignum2(buf, e)) != 0 || -+ (r = sshbuf_get_bignum2(buf, d)) != 0 || -+ (r = sshbuf_get_bignum2(buf, iqmp)) != 0 || -+ (r = sshbuf_get_bignum2(buf, p)) != 0 || -+ (r = sshbuf_get_bignum2(buf, q)) != 0) { -+ goto error2; -+ } -+ if (RSA_set0_key(k->rsa, n, e, d) == 0) { -+ r = SSH_ERR_LIBCRYPTO_ERROR; -+ goto error2; -+ } -+ n = e = d = NULL; -+ /* dmp1,dmpq1 should be non NULL to set iqmp value */ -+ if (RSA_set0_crt_params(k->rsa, dmp1, dmq1, iqmp) == 0) { -+ r = SSH_ERR_LIBCRYPTO_ERROR; -+ goto error2; -+ } -+ dmp1 = dmq1 = iqmp = NULL; -+ if (RSA_set0_factors(k->rsa, p, q) == 0) { -+ r = SSH_ERR_LIBCRYPTO_ERROR; -+ error2: -+ BN_free(n); BN_free(e); BN_free(d); -+ BN_free(iqmp); -+ BN_free(p); BN_free(q); -+ BN_free(dmp1); BN_free(dmq1); -+ goto out; -+ } -+ p = q = NULL; -+ if ((r = ssh_rsa_generate_additional_parameters(k)) != 0) { - goto out; -- if (BN_num_bits(k->rsa->n) < SSH_RSA_MINIMUM_MODULUS_SIZE) { -+ } -+ } -+ if (RSA_bits(k->rsa) < SSH_RSA_MINIMUM_MODULUS_SIZE) { - r = SSH_ERR_KEY_LENGTH; - goto out; - } - break; - case KEY_RSA_CERT: -+ { -+ BIGNUM *d=NULL, *iqmp=NULL, *p=NULL, *q=NULL; -+ BIGNUM *dmp1=NULL, *dmq1=NULL; /* dummy for RSA_set0_crt_params */ -+ if ((d = BN_new()) == NULL || -+ (iqmp = BN_new()) == NULL || -+ (p = BN_new()) == NULL || -+ (q = BN_new()) == NULL || -+ (dmp1 = BN_new()) == NULL || -+ (dmq1 = BN_new()) == NULL) { -+ r = SSH_ERR_ALLOC_FAIL; -+ goto error3; -+ } -+ BN_clear(dmp1); BN_clear(dmq1); - if ((r = sshkey_froms(buf, &k)) != 0 || - (r = sshkey_add_private(k)) != 0 || -- (r = sshbuf_get_bignum2(buf, k->rsa->d)) != 0 || -- (r = sshbuf_get_bignum2(buf, k->rsa->iqmp)) != 0 || -- (r = sshbuf_get_bignum2(buf, k->rsa->p)) != 0 || -- (r = sshbuf_get_bignum2(buf, k->rsa->q)) != 0 || -- (r = ssh_rsa_generate_additional_parameters(k)) != 0) -+ (r = sshbuf_get_bignum2(buf, d)) != 0 || -+ (r = sshbuf_get_bignum2(buf, iqmp)) != 0 || -+ (r = sshbuf_get_bignum2(buf, p)) != 0 || -+ (r = sshbuf_get_bignum2(buf, q)) != 0) { -+ goto error3; -+ } -+ if (RSA_set0_key(k->rsa, NULL, NULL, d) == 0) { -+ r = SSH_ERR_LIBCRYPTO_ERROR; -+ goto error3; -+ } -+ /* dmp1,dmpq1 should be non NULL to set value */ -+ if (RSA_set0_crt_params(k->rsa, dmp1, dmq1, iqmp) == 0) { -+ r = SSH_ERR_LIBCRYPTO_ERROR; -+ goto error3; -+ } -+ dmp1 = dmq1 = iqmp = NULL; -+ if (RSA_set0_factors(k->rsa, p, q) == 0) { -+ r = SSH_ERR_LIBCRYPTO_ERROR; -+ error3: -+ BN_free(d); BN_free(iqmp); -+ BN_free(p); BN_free(q); -+ BN_free(dmp1); BN_free(dmq1); - goto out; -- if (BN_num_bits(k->rsa->n) < SSH_RSA_MINIMUM_MODULUS_SIZE) { -+ } -+ p = q = NULL; -+ if ((r = ssh_rsa_generate_additional_parameters(k)) != 0) -+ goto out; -+ } -+ if (RSA_bits(k->rsa) < SSH_RSA_MINIMUM_MODULUS_SIZE) { - r = SSH_ERR_KEY_LENGTH; - goto out; - } -@@ -3395,7 +3778,6 @@ - switch (pem_reason) { - case EVP_R_BAD_DECRYPT: - return SSH_ERR_KEY_WRONG_PASSPHRASE; -- case EVP_R_BN_DECODE_ERROR: - case EVP_R_DECODE_ERROR: - #ifdef EVP_R_PRIVATE_KEY_DECODE_ERROR - case EVP_R_PRIVATE_KEY_DECODE_ERROR: -@@ -3460,7 +3842,7 @@ - r = convert_libcrypto_error(); - goto out; - } -- if (pk->type == EVP_PKEY_RSA && -+ if (EVP_PKEY_id(pk) == EVP_PKEY_RSA && - (type == KEY_UNSPEC || type == KEY_RSA)) { - if ((prv = sshkey_new(KEY_UNSPEC)) == NULL) { - r = SSH_ERR_ALLOC_FAIL; -@@ -3475,11 +3857,11 @@ - r = SSH_ERR_LIBCRYPTO_ERROR; - goto out; - } -- if (BN_num_bits(prv->rsa->n) < SSH_RSA_MINIMUM_MODULUS_SIZE) { -+ if (RSA_bits(prv->rsa) < SSH_RSA_MINIMUM_MODULUS_SIZE) { - r = SSH_ERR_KEY_LENGTH; - goto out; - } -- } else if (pk->type == EVP_PKEY_DSA && -+ } else if (EVP_PKEY_id(pk) == EVP_PKEY_DSA && - (type == KEY_UNSPEC || type == KEY_DSA)) { - if ((prv = sshkey_new(KEY_UNSPEC)) == NULL) { - r = SSH_ERR_ALLOC_FAIL; -@@ -3491,7 +3873,7 @@ - DSA_print_fp(stderr, prv->dsa, 8); - #endif - #ifdef OPENSSL_HAS_ECC -- } else if (pk->type == EVP_PKEY_EC && -+ } else if (EVP_PKEY_id(pk) == EVP_PKEY_EC && - (type == KEY_UNSPEC || type == KEY_ECDSA)) { - if ((prv = sshkey_new(KEY_UNSPEC)) == NULL) { - r = SSH_ERR_ALLOC_FAIL; -diff -ru source/ssh-keygen.c source-new/ssh-keygen.c ---- source/ssh-keygen.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/ssh-keygen.c 2017-11-02 18:31:51.972212355 -0700 -@@ -496,11 +496,33 @@ - - switch (key->type) { - case KEY_DSA: -- buffer_get_bignum_bits(b, key->dsa->p); -- buffer_get_bignum_bits(b, key->dsa->g); -- buffer_get_bignum_bits(b, key->dsa->q); -- buffer_get_bignum_bits(b, key->dsa->pub_key); -- buffer_get_bignum_bits(b, key->dsa->priv_key); -+ { -+ BIGNUM *p=NULL, *g=NULL, *q=NULL, *pub_key=NULL, *priv_key=NULL; -+ if ((p=BN_new()) == NULL || -+ (g=BN_new()) == NULL || -+ (q=BN_new()) == NULL || -+ (pub_key=BN_new()) == NULL || -+ (priv_key=BN_new()) == NULL) { -+ BN_free(p); -+ BN_free(g); -+ BN_free(q); -+ BN_free(pub_key); -+ BN_free(priv_key); -+ return NULL; -+ } -+ buffer_get_bignum_bits(b, p); -+ buffer_get_bignum_bits(b, g); -+ buffer_get_bignum_bits(b, q); -+ buffer_get_bignum_bits(b, pub_key); -+ buffer_get_bignum_bits(b, priv_key); -+ if (DSA_set0_pqg(key->dsa, p, q, g) == 0 || -+ DSA_set0_key(key->dsa, pub_key, priv_key) == 0) { -+ fatal("failed to set DSA key"); -+ BN_free(p); BN_free(g); BN_free(q); -+ BN_free(pub_key); BN_free(priv_key); -+ return NULL; -+ } -+ } - break; - case KEY_RSA: - if ((r = sshbuf_get_u8(b, &e1)) != 0 || -@@ -517,16 +539,52 @@ - e += e3; - debug("e %lx", e); - } -- if (!BN_set_word(key->rsa->e, e)) { -+ { -+ BIGNUM *rsa_e = NULL; -+ BIGNUM *d=NULL, *n=NULL, *iqmp=NULL, *q=NULL, *p=NULL; -+ BIGNUM *dmp1=NULL, *dmq1=NULL; /* dummy input to set in RSA_set0_crt_params */ -+ rsa_e = BN_new(); -+ if (!rsa_e || !BN_set_word(rsa_e, e)) { -+ if (rsa_e) BN_free(rsa_e); - sshbuf_free(b); - sshkey_free(key); - return NULL; - } -- buffer_get_bignum_bits(b, key->rsa->d); -- buffer_get_bignum_bits(b, key->rsa->n); -- buffer_get_bignum_bits(b, key->rsa->iqmp); -- buffer_get_bignum_bits(b, key->rsa->q); -- buffer_get_bignum_bits(b, key->rsa->p); -+ if ((d=BN_new()) == NULL || -+ (n=BN_new()) == NULL || -+ (iqmp=BN_new()) == NULL || -+ (q=BN_new()) == NULL || -+ (p=BN_new()) == NULL || -+ (dmp1=BN_new()) == NULL || -+ (dmq1=BN_new()) == NULL) { -+ BN_free(d); BN_free(n); BN_free(iqmp); -+ BN_free(q); BN_free(p); -+ BN_free(dmp1); BN_free(dmq1); -+ return NULL; -+ } -+ BN_clear(dmp1); BN_clear(dmq1); -+ buffer_get_bignum_bits(b, d); -+ buffer_get_bignum_bits(b, n); -+ buffer_get_bignum_bits(b, iqmp); -+ buffer_get_bignum_bits(b, q); -+ buffer_get_bignum_bits(b, p); -+ if (RSA_set0_key(key->rsa, n, rsa_e, d) == 0) -+ goto null; -+ n = d = NULL; -+ if (RSA_set0_factors(key->rsa, p, q) == 0) -+ goto null; -+ p = q = NULL; -+ /* dmp1, dmq1 should not be NULL for initial set0 */ -+ if (RSA_set0_crt_params(key->rsa, dmp1, dmq1, iqmp) == 0) { -+ null: -+ fatal("Failed to set RSA parameters"); -+ BN_free(d); BN_free(n); BN_free(iqmp); -+ BN_free(q); BN_free(p); -+ BN_free(dmp1); BN_free(dmq1); -+ return NULL; -+ } -+ dmp1 = dmq1 = iqmp = NULL; -+ } - if ((r = ssh_rsa_generate_additional_parameters(key)) != 0) - fatal("generate RSA parameters failed: %s", ssh_err(r)); - break; -@@ -636,7 +694,7 @@ - identity_file); - } - fclose(fp); -- switch (EVP_PKEY_type(pubkey->type)) { -+ switch (EVP_PKEY_type(EVP_PKEY_id(pubkey))) { - case EVP_PKEY_RSA: - if ((*k = sshkey_new(KEY_UNSPEC)) == NULL) - fatal("sshkey_new failed"); -@@ -660,7 +718,7 @@ - #endif - default: - fatal("%s: unsupported pubkey type %d", __func__, -- EVP_PKEY_type(pubkey->type)); -+ EVP_PKEY_type(EVP_PKEY_id(pubkey))); - } - EVP_PKEY_free(pubkey); - return; -@@ -1063,7 +1121,7 @@ - pub_tmp, strerror(errno)); - goto failnext; - } -- (void)fchmod(fd, 0644); -+ //(void)fchmod(fd, 0644); - f = fdopen(fd, "w"); - if (f == NULL) { - error("fdopen %s failed: %s", pub_tmp, strerror(errno)); -diff -ru source/ssh-pkcs11.c source-new/ssh-pkcs11.c ---- source/ssh-pkcs11.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/ssh-pkcs11.c 2017-11-02 18:31:51.978879010 -0700 -@@ -67,7 +67,7 @@ - struct pkcs11_provider *provider; - CK_ULONG slotidx; - int (*orig_finish)(RSA *rsa); -- RSA_METHOD rsa_method; -+ RSA_METHOD *rsa_method; - char *keyid; - int keyid_len; - }; -@@ -326,13 +326,15 @@ - k11->keyid = xmalloc(k11->keyid_len); - memcpy(k11->keyid, keyid_attrib->pValue, k11->keyid_len); - } -- k11->orig_finish = def->finish; -- memcpy(&k11->rsa_method, def, sizeof(k11->rsa_method)); -- k11->rsa_method.name = "pkcs11"; -- k11->rsa_method.rsa_priv_enc = pkcs11_rsa_private_encrypt; -- k11->rsa_method.rsa_priv_dec = pkcs11_rsa_private_decrypt; -- k11->rsa_method.finish = pkcs11_rsa_finish; -- RSA_set_method(rsa, &k11->rsa_method); -+ k11->orig_finish = RSA_meth_get_finish(def); -+ -+ if ((k11->rsa_method = RSA_meth_new("pkcs11", RSA_meth_get_flags(def))) == NULL) -+ return -1; -+ RSA_meth_set_priv_enc(k11->rsa_method, pkcs11_rsa_private_encrypt); -+ RSA_meth_set_priv_dec(k11->rsa_method, pkcs11_rsa_private_decrypt); -+ RSA_meth_set_finish(k11->rsa_method, pkcs11_rsa_finish); -+ -+ RSA_set_method(rsa, k11->rsa_method); - RSA_set_app_data(rsa, k11); - return (0); - } -@@ -512,10 +514,19 @@ - if ((rsa = RSA_new()) == NULL) { - error("RSA_new failed"); - } else { -- rsa->n = BN_bin2bn(attribs[1].pValue, -- attribs[1].ulValueLen, NULL); -- rsa->e = BN_bin2bn(attribs[2].pValue, -- attribs[2].ulValueLen, NULL); -+ BIGNUM *n=NULL, *e=NULL; -+ n = BN_new(); -+ e = BN_new(); -+ if (n == NULL || e == NULL) -+ error("BN_new alloc failed"); -+ if (BN_bin2bn(attribs[1].pValue, -+ attribs[1].ulValueLen, n) == NULL || -+ BN_bin2bn(attribs[2].pValue, -+ attribs[2].ulValueLen, e) == NULL) -+ error("BN_bin2bn failed"); -+ if (RSA_set0_key(rsa, n, e, NULL) == 0) -+ error("RSA_set0_key failed"); -+ n = e = NULL; - } - } else { - cp = attribs[2].pValue; -@@ -525,17 +536,20 @@ - == NULL) { - error("d2i_X509 failed"); - } else if ((evp = X509_get_pubkey(x509)) == NULL || -- evp->type != EVP_PKEY_RSA || -- evp->pkey.rsa == NULL) { -+ EVP_PKEY_id(evp) != EVP_PKEY_RSA || -+ EVP_PKEY_get0_RSA(evp) == NULL) { - debug("X509_get_pubkey failed or no rsa"); -- } else if ((rsa = RSAPublicKey_dup(evp->pkey.rsa)) -+ } else if ((rsa = RSAPublicKey_dup(EVP_PKEY_get0_RSA(evp))) - == NULL) { - error("RSAPublicKey_dup"); - } - if (x509) - X509_free(x509); - } -- if (rsa && rsa->n && rsa->e && -+ { -+ const BIGNUM *n, *e; -+ RSA_get0_key(rsa, &n, &e, NULL); -+ if (rsa && n && e && - pkcs11_rsa_wrap(p, slotidx, &attribs[0], rsa) == 0) { - if ((key = sshkey_new(KEY_UNSPEC)) == NULL) - fatal("sshkey_new failed"); -@@ -555,6 +569,7 @@ - } else if (rsa) { - RSA_free(rsa); - } -+ } - for (i = 0; i < 3; i++) - free(attribs[i].pValue); - } -diff -ru source/ssh-pkcs11-client.c source-new/ssh-pkcs11-client.c ---- source/ssh-pkcs11-client.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/ssh-pkcs11-client.c 2017-11-02 18:31:51.978879010 -0700 -@@ -143,12 +143,13 @@ - static int - wrap_key(RSA *rsa) - { -- static RSA_METHOD helper_rsa; -+ static RSA_METHOD *helper_rsa; - -- memcpy(&helper_rsa, RSA_get_default_method(), sizeof(helper_rsa)); -- helper_rsa.name = "ssh-pkcs11-helper"; -- helper_rsa.rsa_priv_enc = pkcs11_rsa_private_encrypt; -- RSA_set_method(rsa, &helper_rsa); -+ if ((helper_rsa = RSA_meth_dup(RSA_get_default_method())) == NULL) -+ return (-1); /* XXX but caller isn't checking */ -+ RSA_meth_set1_name(helper_rsa, "ssh-pkcs11-helper"); -+ RSA_meth_set_priv_enc(helper_rsa, pkcs11_rsa_private_encrypt); -+ RSA_set_method(rsa, helper_rsa); - return (0); - } - -diff -ru source/sshpty.c source-new/sshpty.c ---- source/sshpty.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/sshpty.c 2017-11-02 18:31:51.978879010 -0700 -@@ -128,12 +128,12 @@ - #ifdef TIOCNOTTY - fd = open(_PATH_TTY, O_RDWR | O_NOCTTY); - if (fd >= 0) { -- (void) ioctl(fd, TIOCNOTTY, NULL); -+ //(void) ioctl(fd, TIOCNOTTY, NULL); - close(fd); - } - #endif /* TIOCNOTTY */ -- if (setsid() < 0) -- error("setsid: %.100s", strerror(errno)); -+ //if (setsid() < 0) -+ // error("setsid: %.100s", strerror(errno)); - - /* - * Verify that we are successfully disconnected from the controlling -@@ -147,8 +147,8 @@ - /* Make it our controlling tty. */ - #ifdef TIOCSCTTY - debug("Setting controlling tty using TIOCSCTTY."); -- if (ioctl(*ttyfd, TIOCSCTTY, NULL) < 0) -- error("ioctl(TIOCSCTTY): %.100s", strerror(errno)); -+ //if (ioctl(*ttyfd, TIOCSCTTY, NULL) < 0) -+ // error("ioctl(TIOCSCTTY): %.100s", strerror(errno)); - #endif /* TIOCSCTTY */ - #ifdef NEED_SETPGRP - if (setpgrp(0,0) < 0) -@@ -183,7 +183,7 @@ - w.ws_col = col; - w.ws_xpixel = xpixel; - w.ws_ypixel = ypixel; -- (void) ioctl(ptyfd, TIOCSWINSZ, &w); -+ //(void) ioctl(ptyfd, TIOCSWINSZ, &w); - } - - void -@@ -195,9 +195,9 @@ - struct stat st; - - /* Determine the group to make the owner of the tty. */ -- grp = getgrnam("tty"); -- gid = (grp != NULL) ? grp->gr_gid : pw->pw_gid; -- mode = (grp != NULL) ? 0620 : 0600; -+ //grp = getgrnam("tty"); -+ //gid = (grp != NULL) ? grp->gr_gid : pw->pw_gid; -+ //mode = (grp != NULL) ? 0620 : 0600; - - /* - * Change owner and mode of the tty as required. -@@ -247,7 +247,7 @@ - int fd; - - if ((fd = open(_PATH_TTY, O_RDWR | O_NOCTTY)) >= 0) { -- (void) ioctl(fd, TIOCNOTTY, NULL); -+ //(void) ioctl(fd, TIOCNOTTY, NULL); - close(fd); - } - #endif /* TIOCNOTTY */ -diff -ru source/ssh-rsa.c source-new/ssh-rsa.c ---- source/ssh-rsa.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/ssh-rsa.c 2017-11-02 18:31:51.978879010 -0700 -@@ -99,13 +99,27 @@ - } - rsa = key->rsa; - -- if ((BN_sub(aux, rsa->q, BN_value_one()) == 0) || -- (BN_mod(rsa->dmq1, rsa->d, aux, ctx) == 0) || -- (BN_sub(aux, rsa->p, BN_value_one()) == 0) || -- (BN_mod(rsa->dmp1, rsa->d, aux, ctx) == 0)) { -+ { -+ const BIGNUM *q, *d, *p; -+ BIGNUM *dmq1=NULL, *dmp1=NULL; -+ if ((dmq1 = BN_new()) == NULL || -+ (dmp1 = BN_new()) == NULL ) { -+ r = SSH_ERR_ALLOC_FAIL; -+ goto out; -+ } -+ RSA_get0_key(rsa, NULL, NULL, &d); -+ RSA_get0_factors(rsa, &p, &q); -+ if ((BN_sub(aux, q, BN_value_one()) == 0) || -+ (BN_mod(dmq1, d, aux, ctx) == 0) || -+ (BN_sub(aux, p, BN_value_one()) == 0) || -+ (BN_mod(dmp1, d, aux, ctx) == 0) || -+ RSA_set0_crt_params(rsa, dmp1, dmq1, NULL) == 0) { - r = SSH_ERR_LIBCRYPTO_ERROR; -+ BN_clear_free(dmp1); -+ BN_clear_free(dmq1); - goto out; - } -+ } - r = 0; - out: - BN_clear_free(aux); -@@ -136,7 +150,7 @@ - if (key == NULL || key->rsa == NULL || hash_alg == -1 || - sshkey_type_plain(key->type) != KEY_RSA) - return SSH_ERR_INVALID_ARGUMENT; -- if (BN_num_bits(key->rsa->n) < SSH_RSA_MINIMUM_MODULUS_SIZE) -+ if (RSA_bits(key->rsa) < SSH_RSA_MINIMUM_MODULUS_SIZE) - return SSH_ERR_KEY_LENGTH; - slen = RSA_size(key->rsa); - if (slen <= 0 || slen > SSHBUF_MAX_BIGNUM) -@@ -210,7 +224,7 @@ - sshkey_type_plain(key->type) != KEY_RSA || - sig == NULL || siglen == 0) - return SSH_ERR_INVALID_ARGUMENT; -- if (BN_num_bits(key->rsa->n) < SSH_RSA_MINIMUM_MODULUS_SIZE) -+ if (RSA_bits(key->rsa) < SSH_RSA_MINIMUM_MODULUS_SIZE) - return SSH_ERR_KEY_LENGTH; - - if ((b = sshbuf_from(sig, siglen)) == NULL) -diff -ru source/uidswap.c source-new/uidswap.c ---- source/uidswap.c 2017-10-02 12:34:26.000000000 -0700 -+++ source-new/uidswap.c 2017-11-02 18:31:51.978879010 -0700 -@@ -82,14 +82,14 @@ - privileged = 1; - temporarily_use_uid_effective = 1; - -- saved_egroupslen = getgroups(0, NULL); -+ //saved_egroupslen = getgroups(0, NULL); - if (saved_egroupslen < 0) - fatal("getgroups: %.100s", strerror(errno)); - if (saved_egroupslen > 0) { - saved_egroups = xreallocarray(saved_egroups, - saved_egroupslen, sizeof(gid_t)); -- if (getgroups(saved_egroupslen, saved_egroups) < 0) -- fatal("getgroups: %.100s", strerror(errno)); -+ // if (getgroups(saved_egroupslen, saved_egroups) < 0) -+ // fatal("getgroups: %.100s", strerror(errno)); - } else { /* saved_egroupslen == 0 */ - free(saved_egroups); - } -@@ -113,22 +113,26 @@ - } - } - /* Set the effective uid to the given (unprivileged) uid. */ -- if (setgroups(user_groupslen, user_groups) < 0) -- fatal("setgroups: %.100s", strerror(errno)); -+ /* -+ *if (setgroups(user_groupslen, user_groups) < 0) -+ * fatal("setgroups: %.100s", strerror(errno)); -+ */ - #ifndef SAVED_IDS_WORK_WITH_SETEUID - /* Propagate the privileged gid to all of our gids. */ -- if (setgid(getegid()) < 0) -- debug("setgid %u: %.100s", (u_int) getegid(), strerror(errno)); -- /* Propagate the privileged uid to all of our uids. */ -- if (setuid(geteuid()) < 0) -- debug("setuid %u: %.100s", (u_int) geteuid(), strerror(errno)); --#endif /* SAVED_IDS_WORK_WITH_SETEUID */ -- if (setegid(pw->pw_gid) < 0) -- fatal("setegid %u: %.100s", (u_int)pw->pw_gid, -- strerror(errno)); -- if (seteuid(pw->pw_uid) == -1) -- fatal("seteuid %u: %.100s", (u_int)pw->pw_uid, -- strerror(errno)); -+/* -+ * if (setgid(getegid()) < 0) -+ * debug("setgid %u: %.100s", (u_int) getegid(), strerror(errno)); -+ * [> Propagate the privileged uid to all of our uids. <] -+ * if (setuid(geteuid()) < 0) -+ */ debug("setuid %u: %.100s", (u_int) geteuid(), strerror(errno)); -+ #endif [> SAVED_IDS_WORK_WITH_SETEUID <] -+ /* if (setegid(pw->pw_gid) < 0) -+ * fatal("setegid %u: %.100s", (u_int)pw->pw_gid, -+ * strerror(errno)); -+ * if (seteuid(pw->pw_uid) == -1) -+ * fatal("seteuid %u: %.100s", (u_int)pw->pw_uid, -+ * strerror(errno)); -+ */ - } - - void -@@ -150,9 +154,11 @@ - * where fine-grained privileges are available (the user might be - * deliberately allowed the right to setuid back to root). - */ -- if (old_uid != uid && -- (setuid(old_uid) != -1 || seteuid(old_uid) != -1)) -- fatal("%s: was able to restore old [e]uid", __func__); -+ /* -+ *if (old_uid != uid && -+ * (setuid(old_uid) != -1 || seteuid(old_uid) != -1)) -+ * fatal("%s: was able to restore old [e]uid", __func__); -+ */ - #endif - - /* Verify UID drop was successful */ -@@ -189,12 +195,12 @@ - * Propagate the real uid (usually more privileged) to effective uid - * as well. - */ -- setuid(getuid()); -- setgid(getgid()); -+// setuid(getuid()); -+// setgid(getgid()); - #endif /* SAVED_IDS_WORK_WITH_SETEUID */ - -- if (setgroups(saved_egroupslen, saved_egroups) < 0) -- fatal("setgroups: %.100s", strerror(errno)); -+ //if (setgroups(saved_egroupslen, saved_egroups) < 0) -+ // fatal("setgroups: %.100s", strerror(errno)); - temporarily_use_uid_effective = 0; - } - -@@ -233,25 +239,26 @@ - if (setresuid(pw->pw_uid, pw->pw_uid, pw->pw_uid) < 0) - fatal("setresuid %u: %.100s", (u_int)pw->pw_uid, strerror(errno)); - --#ifndef NO_UID_RESTORATION_TEST -- /* Try restoration of GID if changed (test clearing of saved gid) */ -- if (old_gid != pw->pw_gid && pw->pw_uid != 0 && -- (setgid(old_gid) != -1 || setegid(old_gid) != -1)) -- fatal("%s: was able to restore old [e]gid", __func__); --#endif -- -- /* Verify GID drop was successful */ -- if (getgid() != pw->pw_gid || getegid() != pw->pw_gid) { -- fatal("%s: egid incorrect gid:%u egid:%u (should be %u)", -- __func__, (u_int)getgid(), (u_int)getegid(), -- (u_int)pw->pw_gid); -- } -+/*#ifndef NO_UID_RESTORATION_TEST -+ * -+ * if (old_gid != pw->pw_gid && pw->pw_uid != 0 && -+ * (setgid(old_gid) != -1 || setegid(old_gid) != -1)) -+ * fatal("%s: was able to restore old [e]gid", __func__); -+ *#endif -+ * -+ * [> Verify GID drop was successful <] -+ * if (getgid() != pw->pw_gid || getegid() != pw->pw_gid) { -+ * fatal("%s: egid incorrect gid:%u egid:%u (should be %u)", -+ * __func__, (u_int)getgid(), (u_int)getegid(), -+ * (u_int)pw->pw_gid); -+ * } -+ */ - - #ifndef NO_UID_RESTORATION_TEST - /* Try restoration of UID if changed (test clearing of saved uid) */ -- if (old_uid != pw->pw_uid && -- (setuid(old_uid) != -1 || seteuid(old_uid) != -1)) -- fatal("%s: was able to restore old [e]uid", __func__); -+// if (old_uid != pw->pw_uid && -+// (setuid(old_uid) != -1 || seteuid(old_uid) != -1)) -+// fatal("%s: was able to restore old [e]uid", __func__); - #endif - - /* Verify UID drop was successful */ From 8f153efb380c71e0ca9fbeed54200684ec88ffda Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 20 Jan 2019 15:32:38 -0700 Subject: [PATCH 0573/3180] Add build argument to autotools stuff --- config.sh | 2 ++ recipes/autoconf/recipe.sh | 2 +- recipes/automake/recipe.sh | 2 +- recipes/bash/recipe.sh | 2 +- recipes/cmatrix/recipe.sh | 2 +- recipes/curl/recipe.sh | 1 + recipes/dash/recipe.sh | 2 +- recipes/diffutils/recipe.sh | 2 +- recipes/dosbox/recipe.sh | 2 +- recipes/expat/recipe.sh | 2 +- recipes/freeciv/recipe.sh | 1 + recipes/freetype/recipe.sh | 2 +- recipes/gawk/recipe.sh | 2 +- recipes/gcc/recipe.sh | 1 + recipes/gettext/recipe.sh | 1 + recipes/git/recipe.sh | 2 +- recipes/glib/recipe.sh | 1 + recipes/gnu-binutils/recipe.sh | 2 +- recipes/gnu-grep/recipe.sh | 2 +- recipes/gnu-make/recipe.sh | 2 +- recipes/gstreamer/recipe.sh | 1 + recipes/harfbuzz/recipe.sh | 1 + recipes/jansson/recipe.sh | 2 +- recipes/libffi/recipe.sh | 1 + recipes/libiconv/recipe.sh | 2 +- recipes/libjpeg/recipe.sh | 2 +- recipes/libpng/recipe.sh | 2 +- recipes/libsodium/recipe.sh | 3 +-- recipes/mesa/recipe.sh | 1 + recipes/mesa_glu/recipe.sh | 2 +- recipes/nasm/recipe.sh | 2 +- recipes/ncdu/recipe.sh | 2 +- recipes/ncurses/recipe.sh | 1 + recipes/ncursesw/recipe.sh | 2 +- recipes/newlib/recipe.sh | 2 +- recipes/openjazz/recipe.sh | 2 +- recipes/openttd/recipe.sh | 2 +- recipes/patch/recipe.sh | 2 +- recipes/pcre/recipe.sh | 1 + recipes/perl/recipe.sh | 2 +- recipes/pixman/recipe.sh | 9 +++++---- recipes/prboom/recipe.sh | 2 +- recipes/python/recipe.sh | 2 +- recipes/qemu/recipe.sh | 1 + recipes/readline/recipe.sh | 2 +- recipes/schismtracker/recipe.sh | 2 +- recipes/scummvm/recipe.sh | 1 + recipes/sdl/recipe.sh | 1 + recipes/sdl2/recipe.sh | 1 + recipes/sdl_gfx/recipe.sh | 2 +- recipes/sdl_image/recipe.sh | 2 +- recipes/sdl_mixer/recipe.sh | 1 + recipes/sdl_ttf/recipe.sh | 2 +- recipes/sed/recipe.sh | 2 +- recipes/sopwith/recipe.sh | 2 +- recipes/ssh/recipe.sh | 2 +- recipes/timidity/recipe.sh | 2 +- recipes/vim/recipe.sh | 2 +- recipes/vttest/recipe.sh | 2 +- recipes/xz/recipe.sh | 2 +- 60 files changed, 65 insertions(+), 47 deletions(-) diff --git a/config.sh b/config.sh index 087774eb..752a910c 100755 --- a/config.sh +++ b/config.sh @@ -28,6 +28,8 @@ export RANLIB="${HOST}-gcc-ranlib" export READELF="${HOST}-readelf" export STRIP="${HOST}-strip" +BUILD="$(cc -dumpmachine)" + export PKG_CONFIG_FOR_BUILD="pkg-config" if [[ "$OSTYPE" == "darwin"* ]]; then diff --git a/recipes/autoconf/recipe.sh b/recipes/autoconf/recipe.sh index 0d1447d8..2c703e47 100644 --- a/recipes/autoconf/recipe.sh +++ b/recipes/autoconf/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { function recipe_build { wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub - ./configure --host=${HOST} --prefix='' + ./configure --build=${BUILD} --host=${HOST} --prefix='' make -j"$(nproc)" skip=1 } diff --git a/recipes/automake/recipe.sh b/recipes/automake/recipe.sh index d35d4771..3731ad31 100644 --- a/recipes/automake/recipe.sh +++ b/recipes/automake/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { sed -i 's|.*/doc/help2man.*|\&\& true|' Makefile.in sed -i 's|install-info-am install-man|install-info-am|' Makefile.in - ./configure --host=${HOST} --prefix='' + ./configure --build=${BUILD} --host=${HOST} --prefix='' make -j"$(nproc)" skip=1 } diff --git a/recipes/bash/recipe.sh b/recipes/bash/recipe.sh index c9e8672a..4479616c 100644 --- a/recipes/bash/recipe.sh +++ b/recipes/bash/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { function recipe_build { wget -O support/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub - ./configure --host=${HOST} --prefix=/ --disable-readline + ./configure --build=${BUILD} --host=${HOST} --prefix=/ --disable-readline make -j"$(nproc)" skip=1 } diff --git a/recipes/cmatrix/recipe.sh b/recipes/cmatrix/recipe.sh index 3dd1d835..52522e69 100644 --- a/recipes/cmatrix/recipe.sh +++ b/recipes/cmatrix/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" - ./configure --host=${HOST} --prefix=/ --without-fonts + ./configure --build=${BUILD} --host=${HOST} --prefix=/ --without-fonts make -j"$(nproc)" skip=1 } diff --git a/recipes/curl/recipe.sh b/recipes/curl/recipe.sh index 77e30965..968a51c7 100644 --- a/recipes/curl/recipe.sh +++ b/recipes/curl/recipe.sh @@ -19,6 +19,7 @@ function recipe_build { autoreconf -i ./configure \ --prefix=/ \ + --build=${BUILD} \ --host=${HOST} \ --disable-tftp \ --disable-ftp \ diff --git a/recipes/dash/recipe.sh b/recipes/dash/recipe.sh index fa1296cc..37a0aceb 100644 --- a/recipes/dash/recipe.sh +++ b/recipes/dash/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { function recipe_build { ./autogen.sh - ./configure --host=${HOST} --prefix=/ + ./configure --build=${BUILD} --host=${HOST} --prefix=/ cross_compiling=yes make -j"$(nproc)" skip=1 } diff --git a/recipes/diffutils/recipe.sh b/recipes/diffutils/recipe.sh index 474e55df..340e0815 100644 --- a/recipes/diffutils/recipe.sh +++ b/recipes/diffutils/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { function recipe_build { autoreconf - ./configure --host=${HOST} --prefix=/ + ./configure --build=${BUILD} --host=${HOST} --prefix=/ make -j"$(nproc)" skip=1 } diff --git a/recipes/dosbox/recipe.sh b/recipes/dosbox/recipe.sh index d6771f16..dbf08941 100644 --- a/recipes/dosbox/recipe.sh +++ b/recipes/dosbox/recipe.sh @@ -19,7 +19,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" ./autogen.sh wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub - ./configure --host=${HOST} --prefix='' --disable-opengl --disable-sdltest --with-sdl-prefix="$sysroot" + ./configure --build=${BUILD} --host=${HOST} --prefix='' --disable-opengl --disable-sdltest --with-sdl-prefix="$sysroot" make -j"$(nproc)" skip=1 } diff --git a/recipes/expat/recipe.sh b/recipes/expat/recipe.sh index e2277e78..d8f78f61 100644 --- a/recipes/expat/recipe.sh +++ b/recipes/expat/recipe.sh @@ -12,7 +12,7 @@ function recipe_update { } function recipe_build { - ./configure --host=${HOST} --prefix=/ + ./configure --build=${BUILD} --host=${HOST} --prefix=/ make -j"$(nproc)" skip=1 } diff --git a/recipes/freeciv/recipe.sh b/recipes/freeciv/recipe.sh index 17970711..70765e96 100644 --- a/recipes/freeciv/recipe.sh +++ b/recipes/freeciv/recipe.sh @@ -18,6 +18,7 @@ function recipe_build { export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" ./configure \ + --build=${BUILD} \ --host="$HOST" \ --prefix='' \ --disable-server \ diff --git a/recipes/freetype/recipe.sh b/recipes/freetype/recipe.sh index 5999cf0d..ea6744f4 100644 --- a/recipes/freetype/recipe.sh +++ b/recipes/freetype/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" - ./configure --host=${HOST} --prefix='/' + ./configure --build=${BUILD} --host=${HOST} --prefix='/' make -j"$(nproc)" skip=1 } diff --git a/recipes/gawk/recipe.sh b/recipes/gawk/recipe.sh index 27de5694..98e4c08f 100644 --- a/recipes/gawk/recipe.sh +++ b/recipes/gawk/recipe.sh @@ -8,7 +8,7 @@ function recipe_update { } function recipe_build { - ./configure --host=${HOST} --prefix=/ ac_cv_func_gethostbyname=no ac_cv_func_connect=no + ./configure --build=${BUILD} --host=${HOST} --prefix=/ ac_cv_func_gethostbyname=no ac_cv_func_connect=no make -j"$(nproc)" skip=1 } diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index b9715cf9..93a567e9 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -27,6 +27,7 @@ function recipe_build { ln -sf "$sysroot/lib" "$sysroot/usr/lib" ./configure \ + --build=${BUILD} \ --host=${HOST} \ --target=${HOST} \ --prefix=/ \ diff --git a/recipes/gettext/recipe.sh b/recipes/gettext/recipe.sh index a1cd8445..e19aa64c 100644 --- a/recipes/gettext/recipe.sh +++ b/recipes/gettext/recipe.sh @@ -18,6 +18,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure \ + --build=${BUILD} \ --host=${HOST} \ --prefix=/ \ --disable-shared \ diff --git a/recipes/git/recipe.sh b/recipes/git/recipe.sh index fe275cc5..1688d1c8 100644 --- a/recipes/git/recipe.sh +++ b/recipes/git/recipe.sh @@ -19,7 +19,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" - ./configure --host=${HOST} --prefix=/ ac_cv_fread_reads_directories=yes ac_cv_snprintf_returns_bogus=yes ac_cv_lib_curl_curl_global_init=yes CURL_CONFIG=no + ./configure --build=${BUILD} --host=${HOST} --prefix=/ ac_cv_fread_reads_directories=yes ac_cv_snprintf_returns_bogus=yes ac_cv_lib_curl_curl_global_init=yes CURL_CONFIG=no make ${MAKEFLAGS} -j"$(nproc)" skip=1 } diff --git a/recipes/glib/recipe.sh b/recipes/glib/recipe.sh index fefd4911..cb9991f0 100644 --- a/recipes/glib/recipe.sh +++ b/recipes/glib/recipe.sh @@ -17,6 +17,7 @@ function recipe_build { export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" glib_cv_stack_grows=no glib_cv_uscore=no ./autogen.sh \ + --build=${BUILD} \ --host=${HOST} \ --prefix=/ \ --disable-shared \ diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh index cae419df..16c2b954 100644 --- a/recipes/gnu-binutils/recipe.sh +++ b/recipes/gnu-binutils/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { mkdir -p "$sysroot/usr" ln -sf "$sysroot/include" "$sysroot/usr/include" ln -sf "$sysroot/lib" "$sysroot/usr/lib" - ./configure --host=${HOST} --target=${HOST} --prefix=/ --with-sysroot=/ --with-build-sysroot="$sysroot" --disable-gdb --disable-nls --disable-werror + ./configure --build=${BUILD} --host=${HOST} --target=${HOST} --prefix=/ --with-sysroot=/ --with-build-sysroot="$sysroot" --disable-gdb --disable-nls --disable-werror make -j"$(nproc)" skip=1 } diff --git a/recipes/gnu-grep/recipe.sh b/recipes/gnu-grep/recipe.sh index 3cf87f25..e45ebf0b 100644 --- a/recipes/gnu-grep/recipe.sh +++ b/recipes/gnu-grep/recipe.sh @@ -12,7 +12,7 @@ function recipe_update { } function recipe_build { - ./configure --host=${HOST} --prefix=/ + ./configure --build=${BUILD} --host=${HOST} --prefix=/ make -j"$(nproc)" skip=1 } diff --git a/recipes/gnu-make/recipe.sh b/recipes/gnu-make/recipe.sh index 7040db16..523b32e9 100644 --- a/recipes/gnu-make/recipe.sh +++ b/recipes/gnu-make/recipe.sh @@ -12,7 +12,7 @@ function recipe_update { } function recipe_build { - ./configure --host=${HOST} --prefix=/ CFLAGS="-DPOSIX -DNO_ARCHIVES -DNO_OUTPUT_SYNC" --without-guile + ./configure --build=${BUILD} --host=${HOST} --prefix=/ CFLAGS="-DPOSIX -DNO_ARCHIVES -DNO_OUTPUT_SYNC" --without-guile make -j"$(nproc)" skip=1 } diff --git a/recipes/gstreamer/recipe.sh b/recipes/gstreamer/recipe.sh index 2b6c1dad..370edb7f 100644 --- a/recipes/gstreamer/recipe.sh +++ b/recipes/gstreamer/recipe.sh @@ -19,6 +19,7 @@ function recipe_build { export GLIB_GENMARSHAL="$(which glib-genmarshal)" export GLIB_MKENUMS="$(which glib-mkenums)" ./configure \ + --build=${BUILD} \ --host=${HOST} \ --prefix=/ \ --disable-shared \ diff --git a/recipes/harfbuzz/recipe.sh b/recipes/harfbuzz/recipe.sh index 06f617b3..0f8a4ba0 100644 --- a/recipes/harfbuzz/recipe.sh +++ b/recipes/harfbuzz/recipe.sh @@ -20,6 +20,7 @@ function recipe_build { FREETYPE_CFLAGS="$("${PKG_CONFIG}" --cflags freetype2)" FREETYPE_LIBS="$("${PKG_CONFIG}" --libs freetype2)" ./configure \ + --build=${BUILD} \ --host=${HOST} \ --prefix=/ \ --disable-shared \ diff --git a/recipes/jansson/recipe.sh b/recipes/jansson/recipe.sh index 82799a01..9cd618aa 100644 --- a/recipes/jansson/recipe.sh +++ b/recipes/jansson/recipe.sh @@ -15,7 +15,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" - ./configure --host=${HOST} --prefix=/ + ./configure --build=${BUILD} --host=${HOST} --prefix=/ make -j"$(nproc)" skip=1 } diff --git a/recipes/libffi/recipe.sh b/recipes/libffi/recipe.sh index 111c2025..ef6b3dbf 100644 --- a/recipes/libffi/recipe.sh +++ b/recipes/libffi/recipe.sh @@ -18,6 +18,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure \ + --build=${BUILD} \ --host=${HOST} \ --prefix=/ \ --disable-shared \ diff --git a/recipes/libiconv/recipe.sh b/recipes/libiconv/recipe.sh index da36d9f6..6f1cedab 100644 --- a/recipes/libiconv/recipe.sh +++ b/recipes/libiconv/recipe.sh @@ -12,7 +12,7 @@ function recipe_update { } function recipe_build { - ./configure --host=${HOST} --prefix='/' --disable-shared --enable-static + ./configure --build=${BUILD} --host=${HOST} --prefix='/' --disable-shared --enable-static make -j"$(nproc)" skip=1 } diff --git a/recipes/libjpeg/recipe.sh b/recipes/libjpeg/recipe.sh index 5db06702..b476840b 100644 --- a/recipes/libjpeg/recipe.sh +++ b/recipes/libjpeg/recipe.sh @@ -12,7 +12,7 @@ function recipe_update { } function recipe_build { - ./configure --host=${HOST} --prefix='/' + ./configure --build=${BUILD} --host=${HOST} --prefix='/' make -j"$(nproc)" skip=1 } diff --git a/recipes/libpng/recipe.sh b/recipes/libpng/recipe.sh index 0d7f16ca..224557ff 100644 --- a/recipes/libpng/recipe.sh +++ b/recipes/libpng/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { export CPPFLAGS="-I$sysroot/include" chmod +w config.sub wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub - ./configure --host=${HOST} --prefix='/' + ./configure --build=${BUILD} --host=${HOST} --prefix='/' make -j"$(nproc)" skip=1 } diff --git a/recipes/libsodium/recipe.sh b/recipes/libsodium/recipe.sh index b5166077..ce7a4c82 100644 --- a/recipes/libsodium/recipe.sh +++ b/recipes/libsodium/recipe.sh @@ -12,9 +12,8 @@ function recipe_update { } function recipe_build { - # Disclaimer: No idea what I'm doing ./autogen.sh - ./configure --host=${HOST} --prefix='/' + ./configure --build=${BUILD} --host=${HOST} --prefix='/' make -j"$(nproc)" skip=1 } diff --git a/recipes/mesa/recipe.sh b/recipes/mesa/recipe.sh index d1e8941f..861cb33a 100644 --- a/recipes/mesa/recipe.sh +++ b/recipes/mesa/recipe.sh @@ -21,6 +21,7 @@ function recipe_build { #export LLVM_CONFIG="x86_64-unknown-redox-llvm-config" NOCONFIGURE=1 ./autogen.sh ./configure \ + --build=${BUILD} \ --host="${HOST}" \ --prefix=/ \ --disable-dri \ diff --git a/recipes/mesa_glu/recipe.sh b/recipes/mesa_glu/recipe.sh index b93a7dbd..5bb29113 100644 --- a/recipes/mesa_glu/recipe.sh +++ b/recipes/mesa_glu/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { export CPPFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub - ./configure --host="${HOST}" --prefix=/ --enable-osmesa + ./configure --build=${BUILD} --host="${HOST}" --prefix=/ --enable-osmesa make -j"$(nproc)" skip=1 } diff --git a/recipes/nasm/recipe.sh b/recipes/nasm/recipe.sh index de7fa374..f2947f2e 100644 --- a/recipes/nasm/recipe.sh +++ b/recipes/nasm/recipe.sh @@ -12,7 +12,7 @@ function recipe_update { } function recipe_build { - ./configure --host=${HOST} --prefix="" + ./configure --build=${BUILD} --host=${HOST} --prefix="" make -j"$(nproc)" skip=1 } diff --git a/recipes/ncdu/recipe.sh b/recipes/ncdu/recipe.sh index 26a9a8bb..b59c0a69 100644 --- a/recipes/ncdu/recipe.sh +++ b/recipes/ncdu/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include -I$sysroot/include/ncurses" ./configure \ - --build x86_64-pc-linux-gnu \ + --build=${BUILD} \ --host "$HOST" make -j"$(nproc)" skip=1 diff --git a/recipes/ncurses/recipe.sh b/recipes/ncurses/recipe.sh index dda9affd..493572db 100644 --- a/recipes/ncurses/recipe.sh +++ b/recipes/ncurses/recipe.sh @@ -14,6 +14,7 @@ function recipe_update { function recipe_build { ./configure \ + --build=${BUILD} \ --host=${HOST} \ --prefix="" \ --disable-db-install \ diff --git a/recipes/ncursesw/recipe.sh b/recipes/ncursesw/recipe.sh index 3af5af5b..e2ab53f4 100644 --- a/recipes/ncursesw/recipe.sh +++ b/recipes/ncursesw/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { export CPPFLAGS="-P" - ./configure --host=${HOST} --prefix="" --enable-widec --disable-db-install + ./configure --build=${BUILD} --host=${HOST} --prefix="" --enable-widec --disable-db-install make -j"$(nproc)" skip=1 } diff --git a/recipes/newlib/recipe.sh b/recipes/newlib/recipe.sh index 979fb8cc..36e79bd4 100644 --- a/recipes/newlib/recipe.sh +++ b/recipes/newlib/recipe.sh @@ -24,7 +24,7 @@ function recipe_build { automake-1.11 --cygnus Makefile popd - CC= ./configure --target="${HOST}" --prefix=/ + CC= ./configure --build=${BUILD} --target="${HOST}" --prefix=/ make all -j"$(nproc)" skip=1 diff --git a/recipes/openjazz/recipe.sh b/recipes/openjazz/recipe.sh index 39d28085..5eb28453 100644 --- a/recipes/openjazz/recipe.sh +++ b/recipes/openjazz/recipe.sh @@ -21,7 +21,7 @@ function recipe_build { autoreconf -fvi autoconf wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub - ./configure --host=${HOST} --prefix='' + ./configure --build=${BUILD} --host=${HOST} --prefix='' make -j"$(nproc)" V=1 skip=1 } diff --git a/recipes/openttd/recipe.sh b/recipes/openttd/recipe.sh index f0c9d232..ba645240 100644 --- a/recipes/openttd/recipe.sh +++ b/recipes/openttd/recipe.sh @@ -15,7 +15,7 @@ function recipe_update { function recipe_build { ./configure \ - --build=`gcc -dumpmachine` \ + --build=${BUILD} \ --host=${HOST} \ --prefix='' \ --enable-static \ diff --git a/recipes/patch/recipe.sh b/recipes/patch/recipe.sh index 52d8934d..20e62b20 100644 --- a/recipes/patch/recipe.sh +++ b/recipes/patch/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub autoreconf - ./configure --host=${HOST} --prefix=/ + ./configure --build=${BUILD} --host=${HOST} --prefix=/ make -j"$(nproc)" skip=1 } diff --git a/recipes/pcre/recipe.sh b/recipes/pcre/recipe.sh index 2e0e8e8c..62a3aa6a 100644 --- a/recipes/pcre/recipe.sh +++ b/recipes/pcre/recipe.sh @@ -17,6 +17,7 @@ function recipe_build { export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" ./configure \ + --build=${BUILD} \ --host=${HOST} \ --prefix=/ \ --disable-shared \ diff --git a/recipes/perl/recipe.sh b/recipes/perl/recipe.sh index 0d3f6f10..b4bd646a 100644 --- a/recipes/perl/recipe.sh +++ b/recipes/perl/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { tar --strip-components=1 -xvf perl-cross-1.1.6.tar.gz wget -O cnf/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub sysroot="$($HOST-gcc -print-sysroot)" - ./configure --target=${HOST} --prefix='/' --sysroot="$sysroot" --disable-mod=Sys-Syslog,Time-HiRes --with-libs='m' + ./configure --build=${BUILD} --target=${HOST} --prefix='/' --sysroot="$sysroot" --disable-mod=Sys-Syslog,Time-HiRes --with-libs='m' sed -i "s/^#define Netdb_name_t.*/#define Netdb_name_t const char*/" config.h # XXX sed -i 's/#define Strerror(e).*$/#define Strerror(e) strerror(e)/' config.h # echo "#define HAS_VPRINTF" >> config.h diff --git a/recipes/pixman/recipe.sh b/recipes/pixman/recipe.sh index 617827dc..708a2f71 100755 --- a/recipes/pixman/recipe.sh +++ b/recipes/pixman/recipe.sh @@ -14,10 +14,11 @@ function recipe_update { function recipe_build { sysroot="$(realpath ../sysroot)" ./configure \ - --host=${HOST} \ - --prefix=/ \ - --disable-shared \ - --enable-static + --build=${BUILD} \ + --host=${HOST} \ + --prefix=/ \ + --disable-shared \ + --enable-static make -j"$(nproc)" skip=1 } diff --git a/recipes/prboom/recipe.sh b/recipes/prboom/recipe.sh index 6f3a5a02..3419878b 100644 --- a/recipes/prboom/recipe.sh +++ b/recipes/prboom/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" autoreconf -if wget -O autotools/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub - ./configure --prefix=/ --host=${HOST} --disable-sdltest --disable-cpu-opt --disable-gl --without-net --with-sdl-prefix="$sysroot" + ./configure --prefix=/ --build=${BUILD} --host=${HOST} --disable-sdltest --disable-cpu-opt --disable-gl --without-net --with-sdl-prefix="$sysroot" make -j"$(nproc)" skip=1 } diff --git a/recipes/python/recipe.sh b/recipes/python/recipe.sh index 3f3643db..ed96cb55 100644 --- a/recipes/python/recipe.sh +++ b/recipes/python/recipe.sh @@ -15,7 +15,7 @@ function recipe_update { function recipe_build { cp ../config.site ./ - ./configure --host=${HOST} --build=${ARCH} --prefix=/ + ./configure --build=${BUILD} --host=${HOST} --build=${ARCH} --prefix=/ make -j"$(nproc)" skip=1 } diff --git a/recipes/qemu/recipe.sh b/recipes/qemu/recipe.sh index 76d854ed..3bb11eb7 100644 --- a/recipes/qemu/recipe.sh +++ b/recipes/qemu/recipe.sh @@ -18,6 +18,7 @@ function recipe_build { export CPPFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" ./configure \ + --build=${BUILD} \ --host="${HOST}" \ --prefix=/ make -j"$(nproc)" diff --git a/recipes/readline/recipe.sh b/recipes/readline/recipe.sh index c13c1dac..d082c0b9 100644 --- a/recipes/readline/recipe.sh +++ b/recipes/readline/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" export CFLAGS="-I$sysroot/include" - ./configure --disable-shared --host=${HOST} --prefix="" + ./configure --disable-shared --build=${BUILD} --host=${HOST} --prefix="" make -j"$(nproc)" skip=1 } diff --git a/recipes/schismtracker/recipe.sh b/recipes/schismtracker/recipe.sh index e9fa3a28..92e52eb3 100644 --- a/recipes/schismtracker/recipe.sh +++ b/recipes/schismtracker/recipe.sh @@ -19,7 +19,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" export SDL_CONFIG="$sysroot/bin/sdl-config" autoreconf -i - ./configure --host=${HOST} --prefix='' + ./configure --build=${BUILD} --host=${HOST} --prefix='' make -j"$(nproc)" skip=1 } diff --git a/recipes/scummvm/recipe.sh b/recipes/scummvm/recipe.sh index 582a42d5..938b80ad 100644 --- a/recipes/scummvm/recipe.sh +++ b/recipes/scummvm/recipe.sh @@ -18,6 +18,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" ./configure \ + --build=${BUILD} \ --host=${HOST} \ --prefix='' \ --with-sdl-prefix="$sysroot" \ diff --git a/recipes/sdl/recipe.sh b/recipes/sdl/recipe.sh index 83b58ee3..0d9aaed2 100644 --- a/recipes/sdl/recipe.sh +++ b/recipes/sdl/recipe.sh @@ -18,6 +18,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" ./autogen.sh ./configure \ + --build=${BUILD} \ --host=${HOST} \ --prefix=/ \ --disable-shared \ diff --git a/recipes/sdl2/recipe.sh b/recipes/sdl2/recipe.sh index f17533ea..cbb8f567 100644 --- a/recipes/sdl2/recipe.sh +++ b/recipes/sdl2/recipe.sh @@ -18,6 +18,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" ./autogen.sh ./configure \ + --build=${BUILD} \ --host=${HOST} \ --prefix=/ \ --disable-shared \ diff --git a/recipes/sdl_gfx/recipe.sh b/recipes/sdl_gfx/recipe.sh index bf0e6317..9a697f91 100644 --- a/recipes/sdl_gfx/recipe.sh +++ b/recipes/sdl_gfx/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" ./autogen.sh - ./configure --prefix=/ --host=${HOST} --disable-shared --disable-sdltest + ./configure --prefix=/ --build=${BUILD} --host=${HOST} --disable-shared --disable-sdltest make -j"$(nproc)" skip=1 } diff --git a/recipes/sdl_image/recipe.sh b/recipes/sdl_image/recipe.sh index 75c6f2c6..c7eefdd7 100644 --- a/recipes/sdl_image/recipe.sh +++ b/recipes/sdl_image/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" ./autogen.sh - ./configure --prefix=/ --host=${HOST} --disable-shared --disable-sdltest --enable-png --enable-jpg + ./configure --prefix=/ --build=${BUILD} --host=${HOST} --disable-shared --disable-sdltest --enable-png --enable-jpg make -j"$(nproc)" skip=1 } diff --git a/recipes/sdl_mixer/recipe.sh b/recipes/sdl_mixer/recipe.sh index 12b3b4e8..cf4ccfc4 100644 --- a/recipes/sdl_mixer/recipe.sh +++ b/recipes/sdl_mixer/recipe.sh @@ -19,6 +19,7 @@ function recipe_build { ./autogen.sh ./configure \ --prefix=/ \ + --build=${BUILD} \ --host=${HOST} \ --disable-shared \ --disable-sdltest \ diff --git a/recipes/sdl_ttf/recipe.sh b/recipes/sdl_ttf/recipe.sh index 2fbc04b1..44dfbedf 100644 --- a/recipes/sdl_ttf/recipe.sh +++ b/recipes/sdl_ttf/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" ./autogen.sh - ./configure --prefix=/ --host=${HOST} --disable-shared --disable-sdltest + ./configure --prefix=/ --build=${BUILD} --host=${HOST} --disable-shared --disable-sdltest make -j"$(nproc)" skip=1 } diff --git a/recipes/sed/recipe.sh b/recipes/sed/recipe.sh index c1de0248..1dce0771 100644 --- a/recipes/sed/recipe.sh +++ b/recipes/sed/recipe.sh @@ -12,7 +12,7 @@ function recipe_update { } function recipe_build { - ./configure --host=${HOST} --prefix=/ + ./configure --build=${BUILD} --host=${HOST} --prefix=/ make -j"$(nproc)" skip=1 } diff --git a/recipes/sopwith/recipe.sh b/recipes/sopwith/recipe.sh index eddace87..74495073 100644 --- a/recipes/sopwith/recipe.sh +++ b/recipes/sopwith/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { export CFLAGS="-I$sysroot/include -I$sysroot/include/SDL" export LDFLAGS="-L$sysroot/lib" export LIBS="-lSDL -lorbital" # TODO: Uses sdl-config instead of pkg-config - ./configure --host=${HOST} --prefix='' --with-sdl-prefix="$sysroot" + ./configure --build=${BUILD} --host=${HOST} --prefix='' --with-sdl-prefix="$sysroot" make -j"$(nproc)" skip=1 } diff --git a/recipes/ssh/recipe.sh b/recipes/ssh/recipe.sh index 576b4b9e..f2136836 100644 --- a/recipes/ssh/recipe.sh +++ b/recipes/ssh/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" - ./configure --host=${HOST} --prefix=/ + ./configure --build=${BUILD} --host=${HOST} --prefix=/ make -j$(nproc) skip=1 } diff --git a/recipes/timidity/recipe.sh b/recipes/timidity/recipe.sh index bd905cd5..c10b7fee 100644 --- a/recipes/timidity/recipe.sh +++ b/recipes/timidity/recipe.sh @@ -16,7 +16,7 @@ function recipe_update { function recipe_build { autoreconf -f -i wget -O autoconf/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub - ./configure --host=${HOST} --prefix='' --enable-vt100 + ./configure --build=${BUILD} --host=${HOST} --prefix='' --enable-vt100 make -j"$(nproc)" skip=1 } diff --git a/recipes/vim/recipe.sh b/recipes/vim/recipe.sh index 98623b57..afc09c27 100644 --- a/recipes/vim/recipe.sh +++ b/recipes/vim/recipe.sh @@ -23,7 +23,7 @@ function recipe_build { export vim_cv_getcwd_broken=yes export vim_cv_stat_ignores_slash=no export vim_cv_memmove_handles_overlap=yes - ./configure --host=${HOST} --prefix=/ --with-tlib=ncurses + ./configure --build=${BUILD} --host=${HOST} --prefix=/ --with-tlib=ncurses make -j"$(nproc)" skip=1 } diff --git a/recipes/vttest/recipe.sh b/recipes/vttest/recipe.sh index 59adc934..b1147b68 100644 --- a/recipes/vttest/recipe.sh +++ b/recipes/vttest/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { function recipe_build { wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub - ./configure --host=${HOST} --prefix='' + ./configure --build=${BUILD} --host=${HOST} --prefix='' make -j"$(nproc)" skip=1 } diff --git a/recipes/xz/recipe.sh b/recipes/xz/recipe.sh index 0a643b03..e1221711 100644 --- a/recipes/xz/recipe.sh +++ b/recipes/xz/recipe.sh @@ -15,7 +15,7 @@ function recipe_build { ./autogen.sh chmod +w build-aux/config.sub wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub - ./configure --host=${HOST} --prefix=/ --enable-threads=no + ./configure --build=${BUILD} --host=${HOST} --prefix=/ --enable-threads=no make -j"$(nproc)" skip=1 } From f47629a905190289b9568e75dd345163f4dc6d5e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 26 Jan 2019 09:15:56 -0700 Subject: [PATCH 0574/3180] cairo: Set build system type --- recipes/cairo/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/cairo/recipe.sh b/recipes/cairo/recipe.sh index 26ac8fa6..2d328557 100755 --- a/recipes/cairo/recipe.sh +++ b/recipes/cairo/recipe.sh @@ -20,7 +20,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" - CFLAGS="-DCAIRO_NO_MUTEX=1" ./configure --host=${HOST} --prefix=/ --enable-xlib=no --enable-script=no --enable-interpreter=no + CFLAGS="-DCAIRO_NO_MUTEX=1" ./configure --build=${BUILD} --host=${HOST} --prefix=/ --enable-xlib=no --enable-script=no --enable-interpreter=no make skip=1 } From e693fad957323fcee2779707be739b7a141d90e0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 27 Jan 2019 13:27:31 -0700 Subject: [PATCH 0575/3180] Fix diffutils recipe --- recipes/diffutils/recipe.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/recipes/diffutils/recipe.sh b/recipes/diffutils/recipe.sh index 340e0815..fa59e98d 100644 --- a/recipes/diffutils/recipe.sh +++ b/recipes/diffutils/recipe.sh @@ -13,7 +13,15 @@ function recipe_update { function recipe_build { autoreconf - ./configure --build=${BUILD} --host=${HOST} --prefix=/ + ./configure \ + --build=${BUILD} \ + --host=${HOST} \ + --prefix=/ \ + gt_cv_locale_fr=false \ + gt_cv_locale_fr_utf8=false \ + gt_cv_locale_ja=false \ + gt_cv_locale_tr_utf8=false \ + gt_cv_locale_zh_CN=false make -j"$(nproc)" skip=1 } From 3c63fd2b4560145e370812a9e1c8092fb4a3a62b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 27 Jan 2019 19:26:17 -0700 Subject: [PATCH 0576/3180] Fix gettext, ncurses, and scummvm --- recipes/gettext/recipe.sh | 7 ++++++- recipes/ncurses/recipe.sh | 1 + recipes/scummvm/recipe.sh | 1 - 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/recipes/gettext/recipe.sh b/recipes/gettext/recipe.sh index e19aa64c..762f8f5e 100644 --- a/recipes/gettext/recipe.sh +++ b/recipes/gettext/recipe.sh @@ -22,7 +22,12 @@ function recipe_build { --host=${HOST} \ --prefix=/ \ --disable-shared \ - --enable-static + --enable-static \ + gt_cv_locale_fr=false \ + gt_cv_locale_fr_utf8=false \ + gt_cv_locale_ja=false \ + gt_cv_locale_tr_utf8=false \ + gt_cv_locale_zh_CN=false make -j"$(nproc)" skip=1 } diff --git a/recipes/ncurses/recipe.sh b/recipes/ncurses/recipe.sh index 493572db..6add4429 100644 --- a/recipes/ncurses/recipe.sh +++ b/recipes/ncurses/recipe.sh @@ -19,6 +19,7 @@ function recipe_build { --prefix="" \ --disable-db-install \ --without-ada \ + --without-tests \ cf_cv_func_mkstemp=yes make -j"$(nproc)" skip=1 diff --git a/recipes/scummvm/recipe.sh b/recipes/scummvm/recipe.sh index 938b80ad..582a42d5 100644 --- a/recipes/scummvm/recipe.sh +++ b/recipes/scummvm/recipe.sh @@ -18,7 +18,6 @@ function recipe_build { sysroot="$(realpath ../sysroot)" ./configure \ - --build=${BUILD} \ --host=${HOST} \ --prefix='' \ --with-sdl-prefix="$sysroot" \ From 2c3e7f0f0769ac77e03e6e936786f9ae00263ac9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 27 Jan 2019 19:37:00 -0700 Subject: [PATCH 0577/3180] Fix cmatrix and ncdu --- recipes/cmatrix/cmatrix.patch | 101 ---------------------------------- recipes/cmatrix/recipe.sh | 4 +- recipes/ncdu/recipe.sh | 10 +--- 3 files changed, 4 insertions(+), 111 deletions(-) delete mode 100644 recipes/cmatrix/cmatrix.patch diff --git a/recipes/cmatrix/cmatrix.patch b/recipes/cmatrix/cmatrix.patch deleted file mode 100644 index 0cb61265..00000000 --- a/recipes/cmatrix/cmatrix.patch +++ /dev/null @@ -1,101 +0,0 @@ -diff -ru source/cmatrix.c source-new/cmatrix.c ---- source/cmatrix.c 2017-11-18 13:21:42.992870796 -0800 -+++ source-new/cmatrix.c 2017-11-18 13:20:45.446407288 -0800 -@@ -37,7 +37,7 @@ - #ifdef HAVE_NCURSES_H - #include - #else --#include -+#include - #endif - - #ifdef HAVE_SYS_IOCTL_H -@@ -215,47 +215,49 @@ - - void handle_sigwinch(int s) { - -- char *tty = NULL; -- int fd = 0; -- int result = 0; -- struct winsize win; -- -- tty = ttyname(0); -- if (!tty) { -- return; -- } -- fd = open(tty, O_RDWR); -- if (fd == -1) { -- return; -- } -- result = ioctl(fd, TIOCGWINSZ, &win); -- if (result == -1) { -- return; -- } -- -- COLS = win.ws_col; -- LINES = win.ws_row; -- -- if(LINES <10){ -- LINES = 10; -- } -- if(COLS <10){ -- COLS = 10; -- } -- --#ifdef HAVE_RESIZETERM -- resizeterm(LINES, COLS); --#ifdef HAVE_WRESIZE -- if (wresize(stdscr, LINES, COLS) == ERR) { -- c_die("Cannot resize window!"); -- } --#endif /* HAVE_WRESIZE */ --#endif /* HAVE_RESIZETERM */ -- -- var_init(); -- /* Do these because width may have changed... */ -- clear(); -- refresh(); -+/* -+ * char *tty = NULL; -+ * int fd = 0; -+ * int result = 0; -+ * struct winsize win; -+ * -+ * tty = ttyname(0); -+ * if (!tty) { -+ * return; -+ * } -+ * fd = open(tty, O_RDWR); -+ * if (fd == -1) { -+ * return; -+ * } -+ * result = ioctl(fd, TIOCGWINSZ, &win); -+ * if (result == -1) { -+ * return; -+ * } -+ * -+ * COLS = win.ws_col; -+ * LINES = win.ws_row; -+ * -+ * if(LINES <10){ -+ * LINES = 10; -+ * } -+ * if(COLS <10){ -+ * COLS = 10; -+ * } -+ * -+ *#ifdef HAVE_RESIZETERM -+ * resizeterm(LINES, COLS); -+ *#ifdef HAVE_WRESIZE -+ * if (wresize(stdscr, LINES, COLS) == ERR) { -+ * c_die("Cannot resize window!"); -+ * } -+ *#endif [> HAVE_WRESIZE <] -+ *#endif [> HAVE_RESIZETERM <] -+ * -+ * var_init(); -+ * [> Do these because width may have changed... <] -+ * clear(); -+ * refresh(); -+ */ - } diff --git a/recipes/cmatrix/recipe.sh b/recipes/cmatrix/recipe.sh index 52522e69..fc1ce368 100644 --- a/recipes/cmatrix/recipe.sh +++ b/recipes/cmatrix/recipe.sh @@ -15,7 +15,8 @@ function recipe_update { function recipe_build { sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" - export CPPFLAGS="-I$sysroot/include" + export CPPFLAGS="-I$sysroot/include -I$sysroot/include/ncurses" + autoreconf -i ./configure --build=${BUILD} --host=${HOST} --prefix=/ --without-fonts make -j"$(nproc)" skip=1 @@ -34,6 +35,5 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install - rm -rf $1/share/man skip=1 } diff --git a/recipes/ncdu/recipe.sh b/recipes/ncdu/recipe.sh index b59c0a69..cb90b701 100644 --- a/recipes/ncdu/recipe.sh +++ b/recipes/ncdu/recipe.sh @@ -17,7 +17,8 @@ function recipe_build { export CPPFLAGS="-I$sysroot/include -I$sysroot/include/ncurses" ./configure \ --build=${BUILD} \ - --host "$HOST" + --host="$HOST" \ + --prefix=/ make -j"$(nproc)" skip=1 } @@ -32,12 +33,5 @@ function recipe_clean { function recipe_stage { dest="$(realpath "$1")" make DESTDIR="$dest" install - cd "$dest/usr/local/bin/" - find . -type f -exec install -D "{}" "$dest/usr/bin/{}" \; - cd - - cd "$dest/usr/local/share/" - find . -type f -exec install -D "{}" "$dest/share/{}" \; - cd - - rm -r "$dest/usr/local/" skip=1 } From 1cebcf5f4803d562e4a683f93ebd4f2ed5e29356 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 28 Jan 2019 14:06:51 -0700 Subject: [PATCH 0578/3180] Fix bash recipe --- recipes/bash/01-redox-hacks.patch | 108 -- recipes/bash/02-path-separator.patch | 35 - recipes/bash/03-autotools-relibc-stuff.patch | 73 - recipes/bash/04-execute-cmd.patch | 21 - recipes/bash/recipe.sh | 13 +- recipes/bash/redox.patch | 1461 ++++++++++++++++++ 6 files changed, 1472 insertions(+), 239 deletions(-) delete mode 100644 recipes/bash/01-redox-hacks.patch delete mode 100644 recipes/bash/02-path-separator.patch delete mode 100644 recipes/bash/03-autotools-relibc-stuff.patch delete mode 100644 recipes/bash/04-execute-cmd.patch create mode 100644 recipes/bash/redox.patch diff --git a/recipes/bash/01-redox-hacks.patch b/recipes/bash/01-redox-hacks.patch deleted file mode 100644 index fb2d1991..00000000 --- a/recipes/bash/01-redox-hacks.patch +++ /dev/null @@ -1,108 +0,0 @@ -diff -ru source/general.c source-new/general.c ---- source/general.c 2016-08-11 08:16:56.000000000 -0700 -+++ source-new/general.c 2017-08-07 19:55:47.437464359 -0700 -@@ -476,6 +476,7 @@ - void - check_dev_tty () - { -+#if 0 - int tty_fd; - char *tty; - -@@ -490,6 +491,7 @@ - } - if (tty_fd >= 0) - close (tty_fd); -+#endif - } - - /* Return 1 if PATH1 and PATH2 are the same file. This is kind of -diff -ru source/include/posixwait.h source-new/include/posixwait.h ---- source/include/posixwait.h 2008-08-12 07:03:03.000000000 -0700 -+++ source-new/include/posixwait.h 2017-08-07 18:37:29.854754332 -0700 -@@ -34,7 +34,7 @@ - - /* How to get the status of a job. For Posix, this is just an - int, but for other systems we have to crack the union wait. */ --#if !defined (_POSIX_VERSION) -+#if 0 - typedef union wait WAIT; - # define WSTATUS(t) (t.w_status) - #else /* _POSIX_VERSION */ -@@ -50,7 +50,7 @@ - - /* More Posix P1003.1 definitions. In the POSIX versions, the parameter is - passed as an `int', in the non-POSIX version, as `union wait'. */ --#if defined (_POSIX_VERSION) -+#if 1 - - # if !defined (WSTOPSIG) - # define WSTOPSIG(s) ((s) >> 8) -diff -ru source/lib/sh/getcwd.c source-new/lib/sh/getcwd.c ---- source/lib/sh/getcwd.c 2012-03-10 07:48:50.000000000 -0800 -+++ source-new/lib/sh/getcwd.c 2017-08-07 19:53:52.379759811 -0700 -@@ -20,7 +20,7 @@ - - #include - --#if !defined (HAVE_GETCWD) -+#if 0 - - #if !defined (__GNUC__) && !defined (HAVE_ALLOCA_H) && defined (_AIX) - #pragma alloca -diff -ru source/lib/sh/oslib.c source-new/lib/sh/oslib.c ---- source/lib/sh/oslib.c 2013-10-14 06:12:57.000000000 -0700 -+++ source-new/lib/sh/oslib.c 2017-08-07 19:10:21.375838312 -0700 -@@ -236,10 +236,10 @@ - #if !defined (HAVE_MKFIFO) && defined (PROCESS_SUBSTITUTION) - int - mkfifo (path, mode) -- char *path; -- int mode; -+ const char *path; -+ mode_t mode; - { --#if defined (S_IFIFO) -+#if 0 - return (mknod (path, (mode | S_IFIFO), 0)); - #else /* !S_IFIFO */ - return (-1); -diff -ru source/lib/sh/winsize.c source-new/lib/sh/winsize.c ---- source/lib/sh/winsize.c 2016-01-25 10:24:45.000000000 -0800 -+++ source-new/lib/sh/winsize.c 2017-08-07 19:14:41.571576687 -0700 -@@ -28,7 +28,6 @@ - # include - #endif - --#include - - /* Try to find the definitions of `struct winsize' and TIOGCWINSZ */ - -diff -ru source/sig.c source-new/sig.c ---- source/sig.c 2016-02-11 12:02:45.000000000 -0800 -+++ source-new/sig.c 2017-08-07 19:56:13.637701224 -0700 -@@ -684,7 +684,9 @@ - - /* Perform OPERATION on NEWSET, perhaps leaving information in OLDSET. */ - sigprocmask (operation, newset, oldset) -- int operation, *newset, *oldset; -+ int operation; -+ const sigset_t *newset; -+ sigset_t *oldset; - { - int old, new; - -@@ -696,11 +698,11 @@ - switch (operation) - { - case SIG_BLOCK: -- old = sigblock (new); -+ //old = sigblock (new); - break; - - case SIG_SETMASK: -- old = sigsetmask (new); -+ //old = sigsetmask (new); - break; - - default: diff --git a/recipes/bash/02-path-separator.patch b/recipes/bash/02-path-separator.patch deleted file mode 100644 index 55aff5f0..00000000 --- a/recipes/bash/02-path-separator.patch +++ /dev/null @@ -1,35 +0,0 @@ -diff -ru source/general.c source-new/general.c ---- source/general.c 2016-08-11 08:16:56.000000000 -0700 -+++ source-new/general.c 2017-08-07 20:22:31.581566466 -0700 -@@ -909,10 +909,10 @@ - `:'. If I is 0, then the path has a leading colon. Trailing colons - are handled OK by the `else' part of the if statement; an empty - string is returned in that case. */ -- if (i && string[i] == ':') -+ if (i && string[i] == ';') - i++; - -- for (start = i; string[i] && string[i] != ':'; i++) -+ for (start = i; string[i] && string[i] != ';'; i++) - ; - - *p_index = i; ---- source/config-top.h 2016-05-19 20:34:02.000000000 +0200 -+++ build/config-top.h 2018-08-07 15:00:14.440837632 +0200 -@@ -63,14 +63,14 @@ - /* The default value of the PATH variable. */ - #ifndef DEFAULT_PATH_VALUE - #define DEFAULT_PATH_VALUE \ -- "/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:." -+ "/usr/local/bin;/usr/local/sbin;/usr/bin;/usr/sbin;/bin;/sbin;." - #endif - - /* The value for PATH when invoking `command -p'. This is only used when - the Posix.2 confstr () function, or CS_PATH define are not present. */ - #ifndef STANDARD_UTILS_PATH - #define STANDARD_UTILS_PATH \ -- "/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc" -+ "/bin;/usr/bin;/sbin;/usr/sbin;/etc;/usr/etc" - #endif - - /* Default primary and secondary prompt strings. */ diff --git a/recipes/bash/03-autotools-relibc-stuff.patch b/recipes/bash/03-autotools-relibc-stuff.patch deleted file mode 100644 index c3dc542a..00000000 --- a/recipes/bash/03-autotools-relibc-stuff.patch +++ /dev/null @@ -1,73 +0,0 @@ ---- a/aclocal.m4 2015-12-02 15:22:19.000000000 +0100 -+++ b/aclocal.m4 2018-08-03 17:26:40.798221239 +0200 -@@ -576,49 +576,7 @@ - fi - ]) - --AC_DEFUN(BASH_FUNC_GETENV, --[AC_MSG_CHECKING(to see if getenv can be redefined) --AC_CACHE_VAL(bash_cv_getenv_redef, --[AC_TRY_RUN([ --#ifdef HAVE_UNISTD_H --# include --#endif --#ifndef __STDC__ --# ifndef const --# define const --# endif --#endif --char * --getenv (name) --#if defined (__linux__) || defined (__bsdi__) || defined (convex) -- const char *name; --#else -- char const *name; --#endif /* !__linux__ && !__bsdi__ && !convex */ --{ --return "42"; --} --main() --{ --char *s; --/* The next allows this program to run, but does not allow bash to link -- when it redefines getenv. I'm not really interested in figuring out -- why not. */ --#if defined (NeXT) --exit(1); --#endif --s = getenv("ABCDE"); --exit(s == 0); /* force optimizer to leave getenv in */ --} --], bash_cv_getenv_redef=yes, bash_cv_getenv_redef=no, -- [AC_MSG_WARN(cannot check getenv redefinition if cross compiling -- defaulting to yes) -- bash_cv_getenv_redef=yes] --)]) --AC_MSG_RESULT($bash_cv_getenv_redef) --if test $bash_cv_getenv_redef = yes; then --AC_DEFINE(CAN_REDEFINE_GETENV) --fi --]) -+bash_cv_getenv_redef=no - - # We should check for putenv before calling this - AC_DEFUN(BASH_FUNC_STD_PUTENV, -@@ -1200,7 +1158,7 @@ - AC_TRY_LINK([#include ],[ - sigset_t ss; - struct sigaction sa; -- sigemptyset(&ss); sigsuspend(&ss); -+ sigemptyset(&ss); /* sigsuspend(&ss); */ - sigaction(SIGINT, &sa, (struct sigaction *) 0); - sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0); - ], bash_cv_signal_vintage=posix, ---- a/configure.ac 2016-09-07 22:56:28.000000000 +0200 -+++ b/configure.ac 2018-08-03 09:10:42.818015670 +0200 -@@ -52,7 +52,7 @@ - AC_CANONICAL_BUILD - - dnl configure defaults --opt_bash_malloc=yes -+opt_bash_malloc=no - opt_afs=no - opt_curses=no - opt_with_installed_readline=no diff --git a/recipes/bash/04-execute-cmd.patch b/recipes/bash/04-execute-cmd.patch deleted file mode 100644 index 27ff6978..00000000 --- a/recipes/bash/04-execute-cmd.patch +++ /dev/null @@ -1,21 +0,0 @@ ---- source/execute_cmd.c 2016-08-26 05:10:08.000000000 -0600 -+++ source-new/execute_cmd.c 2018-11-17 07:32:59.626764573 -0700 -@@ -1335,15 +1335,17 @@ - nullcmd = (command == 0) || (command->type == cm_simple && command->value.Simple->words == 0 && command->value.Simple->redirects == 0); - if (posixly_correct && nullcmd) - { --#if defined (HAVE_GETRUSAGE) -+#if defined (HAVE_GETRUSAGE) && defined (HAVE_GETTIMEOFDAY) - selfb.ru_utime.tv_sec = kidsb.ru_utime.tv_sec = selfb.ru_stime.tv_sec = kidsb.ru_stime.tv_sec = 0; - selfb.ru_utime.tv_usec = kidsb.ru_utime.tv_usec = selfb.ru_stime.tv_usec = kidsb.ru_stime.tv_usec = 0; - before.tv_sec = shell_start_time; - before.tv_usec = 0; - #else -+# if defined (HAVE_TIMES) - before.tms_utime = before.tms_stime = before.tms_cutime = before.tms_cstime = 0; - tbefore = shell_start_time; - #endif -+#endif - } - - old_flags = command->flags; diff --git a/recipes/bash/recipe.sh b/recipes/bash/recipe.sh index 4479616c..03464a66 100644 --- a/recipes/bash/recipe.sh +++ b/recipes/bash/recipe.sh @@ -1,5 +1,6 @@ VERSION=4.4 TAR=http://ftp.gnu.org/gnu/bash/bash-$VERSION.tar.gz +BUILD_DEPENDS=(gettext) function recipe_version { echo "$VERSION" @@ -12,9 +13,17 @@ function recipe_update { } function recipe_build { + sysroot="$PWD/../sysroot" + export LDFLAGS="-L$sysroot/lib" + export CPPFLAGS="-I$sysroot/include" wget -O support/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub - ./configure --build=${BUILD} --host=${HOST} --prefix=/ --disable-readline - make -j"$(nproc)" + ./configure \ + --build=${BUILD} \ + --host=${HOST} \ + --prefix=/ \ + --disable-readline \ + bash_cv_getenv_redef=no + make # -j"$(nproc)" skip=1 } diff --git a/recipes/bash/redox.patch b/recipes/bash/redox.patch new file mode 100644 index 00000000..7dba459f --- /dev/null +++ b/recipes/bash/redox.patch @@ -0,0 +1,1461 @@ +diff -ruwN source/config-top.h source-new/config-top.h +--- source/config-top.h 2016-05-19 12:34:02.000000000 -0600 ++++ source-new/config-top.h 2019-01-28 12:42:45.660815213 -0700 +@@ -63,14 +63,14 @@ + /* The default value of the PATH variable. */ + #ifndef DEFAULT_PATH_VALUE + #define DEFAULT_PATH_VALUE \ +- "/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:." ++ "/usr/local/bin;/usr/local/sbin;/usr/bin;/usr/sbin;/bin;/sbin;." + #endif + + /* The value for PATH when invoking `command -p'. This is only used when + the Posix.2 confstr () function, or CS_PATH define are not present. */ + #ifndef STANDARD_UTILS_PATH + #define STANDARD_UTILS_PATH \ +- "/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc" ++ "/bin;/usr/bin;/sbin;/usr/sbin;/etc;/usr/etc" + #endif + + /* Default primary and secondary prompt strings. */ +diff -ruwN source/configure.ac source-new/configure.ac +--- source/configure.ac 2016-09-07 14:56:28.000000000 -0600 ++++ source-new/configure.ac 2019-01-28 13:53:45.000616985 -0700 +@@ -90,6 +90,7 @@ + *-opennt*|*-interix*) opt_bash_malloc=no ;; # Interix, now owned by Microsoft + *-nsk*) opt_bash_malloc=no ;; # HP NonStop + *-haiku*) opt_bash_malloc=no ;; # Haiku OS ++*-redox*) opt_bash_malloc=no ;; # Redox OS + esac + + # memory scrambling on free() +diff -ruwN source/execute_cmd.c source-new/execute_cmd.c +--- source/execute_cmd.c 2016-08-26 05:10:08.000000000 -0600 ++++ source-new/execute_cmd.c 2019-01-28 12:42:52.680865726 -0700 +@@ -1335,15 +1335,17 @@ + nullcmd = (command == 0) || (command->type == cm_simple && command->value.Simple->words == 0 && command->value.Simple->redirects == 0); + if (posixly_correct && nullcmd) + { +-#if defined (HAVE_GETRUSAGE) ++#if defined (HAVE_GETRUSAGE) && defined (HAVE_GETTIMEOFDAY) + selfb.ru_utime.tv_sec = kidsb.ru_utime.tv_sec = selfb.ru_stime.tv_sec = kidsb.ru_stime.tv_sec = 0; + selfb.ru_utime.tv_usec = kidsb.ru_utime.tv_usec = selfb.ru_stime.tv_usec = kidsb.ru_stime.tv_usec = 0; + before.tv_sec = shell_start_time; + before.tv_usec = 0; + #else ++# if defined (HAVE_TIMES) + before.tms_utime = before.tms_stime = before.tms_cutime = before.tms_cstime = 0; + tbefore = shell_start_time; + #endif ++#endif + } + + old_flags = command->flags; +diff -ruwN source/general.c source-new/general.c +--- source/general.c 2016-08-11 09:16:56.000000000 -0600 ++++ source-new/general.c 2019-01-28 12:45:41.801895779 -0700 +@@ -476,6 +476,7 @@ + void + check_dev_tty () + { ++#if !defined(__redox__) + int tty_fd; + char *tty; + +@@ -490,6 +491,7 @@ + } + if (tty_fd >= 0) + close (tty_fd); ++#endif + } + + /* Return 1 if PATH1 and PATH2 are the same file. This is kind of +@@ -909,10 +911,10 @@ + `:'. If I is 0, then the path has a leading colon. Trailing colons + are handled OK by the `else' part of the if statement; an empty + string is returned in that case. */ +- if (i && string[i] == ':') ++ if (i && string[i] == ';') + i++; + +- for (start = i; string[i] && string[i] != ':'; i++) ++ for (start = i; string[i] && string[i] != ';'; i++) + ; + + *p_index = i; +diff -ruwN source/general.c.orig source-new/general.c.orig +--- source/general.c.orig 1969-12-31 17:00:00.000000000 -0700 ++++ source-new/general.c.orig 2019-01-28 12:42:40.972781097 -0700 +@@ -0,0 +1,1325 @@ ++/* general.c -- Stuff that is used by all files. */ ++ ++/* Copyright (C) 1987-2016 Free Software Foundation, Inc. ++ ++ This file is part of GNU Bash, the Bourne Again SHell. ++ ++ Bash is free software: you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation, either version 3 of the License, or ++ (at your option) any later version. ++ ++ Bash is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with Bash. If not, see . ++*/ ++ ++#include "config.h" ++ ++#include "bashtypes.h" ++#if defined (HAVE_SYS_PARAM_H) ++# include ++#endif ++#include "posixstat.h" ++ ++#if defined (HAVE_UNISTD_H) ++# include ++#endif ++ ++#include "filecntl.h" ++#include "bashansi.h" ++#include ++#include "chartypes.h" ++#include ++ ++#include "bashintl.h" ++ ++#include "shell.h" ++#include "test.h" ++#include "trap.h" ++ ++#if defined (HAVE_MBSTR_H) && defined (HAVE_MBSCHR) ++# include /* mbschr */ ++#endif ++ ++#include ++ ++#if !defined (errno) ++extern int errno; ++#endif /* !errno */ ++ ++extern int expand_aliases; ++extern int interactive_comments; ++extern int check_hashed_filenames; ++extern int source_uses_path; ++extern int source_searches_cwd; ++extern int posixly_correct; ++extern int inherit_errexit; ++ ++static char *bash_special_tilde_expansions __P((char *)); ++static int unquoted_tilde_word __P((const char *)); ++static void initialize_group_array __P((void)); ++ ++/* A standard error message to use when getcwd() returns NULL. */ ++const char * const bash_getcwd_errstr = N_("getcwd: cannot access parent directories"); ++ ++/* Do whatever is necessary to initialize `Posix mode'. */ ++void ++posix_initialize (on) ++ int on; ++{ ++ /* Things that should be turned on when posix mode is enabled. */ ++ if (on != 0) ++ { ++ interactive_comments = source_uses_path = expand_aliases = 1; ++ inherit_errexit = 1; ++ source_searches_cwd = 0; ++ } ++ ++ /* Things that should be turned on when posix mode is disabled. */ ++ if (on == 0) ++ { ++ source_searches_cwd = 1; ++ expand_aliases = interactive_shell; ++ } ++} ++ ++/* **************************************************************** */ ++/* */ ++/* Functions to convert to and from and display non-standard types */ ++/* */ ++/* **************************************************************** */ ++ ++#if defined (RLIMTYPE) ++RLIMTYPE ++string_to_rlimtype (s) ++ char *s; ++{ ++ RLIMTYPE ret; ++ int neg; ++ ++ ret = 0; ++ neg = 0; ++ while (s && *s && whitespace (*s)) ++ s++; ++ if (s && (*s == '-' || *s == '+')) ++ { ++ neg = *s == '-'; ++ s++; ++ } ++ for ( ; s && *s && DIGIT (*s); s++) ++ ret = (ret * 10) + TODIGIT (*s); ++ return (neg ? -ret : ret); ++} ++ ++void ++print_rlimtype (n, addnl) ++ RLIMTYPE n; ++ int addnl; ++{ ++ char s[INT_STRLEN_BOUND (RLIMTYPE) + 1], *p; ++ ++ p = s + sizeof(s); ++ *--p = '\0'; ++ ++ if (n < 0) ++ { ++ do ++ *--p = '0' - n % 10; ++ while ((n /= 10) != 0); ++ ++ *--p = '-'; ++ } ++ else ++ { ++ do ++ *--p = '0' + n % 10; ++ while ((n /= 10) != 0); ++ } ++ ++ printf ("%s%s", p, addnl ? "\n" : ""); ++} ++#endif /* RLIMTYPE */ ++ ++/* **************************************************************** */ ++/* */ ++/* Input Validation Functions */ ++/* */ ++/* **************************************************************** */ ++ ++/* Return non-zero if all of the characters in STRING are digits. */ ++int ++all_digits (string) ++ const char *string; ++{ ++ register const char *s; ++ ++ for (s = string; *s; s++) ++ if (DIGIT (*s) == 0) ++ return (0); ++ ++ return (1); ++} ++ ++/* Return non-zero if the characters pointed to by STRING constitute a ++ valid number. Stuff the converted number into RESULT if RESULT is ++ not null. */ ++int ++legal_number (string, result) ++ const char *string; ++ intmax_t *result; ++{ ++ intmax_t value; ++ char *ep; ++ ++ if (result) ++ *result = 0; ++ ++ if (string == 0) ++ return 0; ++ ++ errno = 0; ++ value = strtoimax (string, &ep, 10); ++ if (errno || ep == string) ++ return 0; /* errno is set on overflow or underflow */ ++ ++ /* Skip any trailing whitespace, since strtoimax does not. */ ++ while (whitespace (*ep)) ++ ep++; ++ ++ /* If *string is not '\0' but *ep is '\0' on return, the entire string ++ is valid. */ ++ if (*string && *ep == '\0') ++ { ++ if (result) ++ *result = value; ++ /* The SunOS4 implementation of strtol() will happily ignore ++ overflow conditions, so this cannot do overflow correctly ++ on those systems. */ ++ return 1; ++ } ++ ++ return (0); ++} ++ ++/* Return 1 if this token is a legal shell `identifier'; that is, it consists ++ solely of letters, digits, and underscores, and does not begin with a ++ digit. */ ++int ++legal_identifier (name) ++ const char *name; ++{ ++ register const char *s; ++ unsigned char c; ++ ++ if (!name || !(c = *name) || (legal_variable_starter (c) == 0)) ++ return (0); ++ ++ for (s = name + 1; (c = *s) != 0; s++) ++ { ++ if (legal_variable_char (c) == 0) ++ return (0); ++ } ++ return (1); ++} ++ ++/* Return 1 if NAME is a valid value that can be assigned to a nameref ++ variable. FLAGS can be 2, in which case the name is going to be used ++ to create a variable. Other values are currently unused, but could ++ be used to allow values to be stored and indirectly referenced, but ++ not used in assignments. */ ++int ++valid_nameref_value (name, flags) ++ const char *name; ++ int flags; ++{ ++ if (name == 0 || *name == 0) ++ return 0; ++ ++ /* valid identifier */ ++#if defined (ARRAY_VARS) ++ if (legal_identifier (name) || (flags != 2 && valid_array_reference (name, 0))) ++#else ++ if (legal_identifier (name)) ++#endif ++ return 1; ++ ++ return 0; ++} ++ ++int ++check_selfref (name, value, flags) ++ const char *name; ++ char *value; ++ int flags; ++{ ++ char *t; ++ ++ if (STREQ (name, value)) ++ return 1; ++ ++#if defined (ARRAY_VARS) ++ if (valid_array_reference (value, 0)) ++ { ++ t = array_variable_name (value, (char **)NULL, (int *)NULL); ++ if (t && STREQ (name, t)) ++ { ++ free (t); ++ return 1; ++ } ++ free (t); ++ } ++#endif ++ ++ return 0; /* not a self reference */ ++} ++ ++/* Make sure that WORD is a valid shell identifier, i.e. ++ does not contain a dollar sign, nor is quoted in any way. Nor ++ does it consist of all digits. If CHECK_WORD is non-zero, ++ the word is checked to ensure that it consists of only letters, ++ digits, and underscores. */ ++int ++check_identifier (word, check_word) ++ WORD_DESC *word; ++ int check_word; ++{ ++ if ((word->flags & (W_HASDOLLAR|W_QUOTED)) || all_digits (word->word)) ++ { ++ internal_error (_("`%s': not a valid identifier"), word->word); ++ return (0); ++ } ++ else if (check_word && legal_identifier (word->word) == 0) ++ { ++ internal_error (_("`%s': not a valid identifier"), word->word); ++ return (0); ++ } ++ else ++ return (1); ++} ++ ++/* Return 1 if STRING is a function name that the shell will import from ++ the environment. Currently we reject attempts to import shell functions ++ containing slashes, beginning with newlines or containing blanks. In ++ Posix mode, we require that STRING be a valid shell identifier. Not ++ used yet. */ ++int ++importable_function_name (string, len) ++ const char *string; ++ size_t len; ++{ ++ if (absolute_program (string)) /* don't allow slash */ ++ return 0; ++ if (*string == '\n') /* can't start with a newline */ ++ return 0; ++ if (shellblank (*string) || shellblank(string[len-1])) ++ return 0; ++ return (posixly_correct ? legal_identifier (string) : 1); ++} ++ ++int ++exportable_function_name (string) ++ const char *string; ++{ ++ if (absolute_program (string)) ++ return 0; ++ if (mbschr (string, '=') != 0) ++ return 0; ++ return 1; ++} ++ ++/* Return 1 if STRING comprises a valid alias name. The shell accepts ++ essentially all characters except those which must be quoted to the ++ parser (which disqualifies them from alias expansion anyway) and `/'. */ ++int ++legal_alias_name (string, flags) ++ const char *string; ++ int flags; ++{ ++ register const char *s; ++ ++ for (s = string; *s; s++) ++ if (shellbreak (*s) || shellxquote (*s) || shellexp (*s) || (*s == '/')) ++ return 0; ++ return 1; ++} ++ ++/* Returns non-zero if STRING is an assignment statement. The returned value ++ is the index of the `=' sign. */ ++int ++assignment (string, flags) ++ const char *string; ++ int flags; ++{ ++ register unsigned char c; ++ register int newi, indx; ++ ++ c = string[indx = 0]; ++ ++#if defined (ARRAY_VARS) ++ if ((legal_variable_starter (c) == 0) && (flags == 0 || c != '[')) /* ] */ ++#else ++ if (legal_variable_starter (c) == 0) ++#endif ++ return (0); ++ ++ while (c = string[indx]) ++ { ++ /* The following is safe. Note that '=' at the start of a word ++ is not an assignment statement. */ ++ if (c == '=') ++ return (indx); ++ ++#if defined (ARRAY_VARS) ++ if (c == '[') ++ { ++ newi = skipsubscript (string, indx, 0); ++ if (string[newi++] != ']') ++ return (0); ++ if (string[newi] == '+' && string[newi+1] == '=') ++ return (newi + 1); ++ return ((string[newi] == '=') ? newi : 0); ++ } ++#endif /* ARRAY_VARS */ ++ ++ /* Check for `+=' */ ++ if (c == '+' && string[indx+1] == '=') ++ return (indx + 1); ++ ++ /* Variable names in assignment statements may contain only letters, ++ digits, and `_'. */ ++ if (legal_variable_char (c) == 0) ++ return (0); ++ ++ indx++; ++ } ++ return (0); ++} ++ ++/* **************************************************************** */ ++/* */ ++/* Functions to manage files and file descriptors */ ++/* */ ++/* **************************************************************** */ ++ ++/* A function to unset no-delay mode on a file descriptor. Used in shell.c ++ to unset it on the fd passed as stdin. Should be called on stdin if ++ readline gets an EAGAIN or EWOULDBLOCK when trying to read input. */ ++ ++#if !defined (O_NDELAY) ++# if defined (FNDELAY) ++# define O_NDELAY FNDELAY ++# endif ++#endif /* O_NDELAY */ ++ ++/* Make sure no-delay mode is not set on file descriptor FD. */ ++int ++sh_unset_nodelay_mode (fd) ++ int fd; ++{ ++ int flags, bflags; ++ ++ if ((flags = fcntl (fd, F_GETFL, 0)) < 0) ++ return -1; ++ ++ bflags = 0; ++ ++ /* This is defined to O_NDELAY in filecntl.h if O_NONBLOCK is not present ++ and O_NDELAY is defined. */ ++#ifdef O_NONBLOCK ++ bflags |= O_NONBLOCK; ++#endif ++ ++#ifdef O_NDELAY ++ bflags |= O_NDELAY; ++#endif ++ ++ if (flags & bflags) ++ { ++ flags &= ~bflags; ++ return (fcntl (fd, F_SETFL, flags)); ++ } ++ ++ return 0; ++} ++ ++/* Return 1 if file descriptor FD is valid; 0 otherwise. */ ++int ++sh_validfd (fd) ++ int fd; ++{ ++ return (fcntl (fd, F_GETFD, 0) >= 0); ++} ++ ++int ++fd_ispipe (fd) ++ int fd; ++{ ++ errno = 0; ++ return ((lseek (fd, 0L, SEEK_CUR) < 0) && (errno == ESPIPE)); ++} ++ ++/* There is a bug in the NeXT 2.1 rlogind that causes opens ++ of /dev/tty to fail. */ ++ ++#if defined (__BEOS__) ++/* On BeOS, opening in non-blocking mode exposes a bug in BeOS, so turn it ++ into a no-op. This should probably go away in the future. */ ++# undef O_NONBLOCK ++# define O_NONBLOCK 0 ++#endif /* __BEOS__ */ ++ ++void ++check_dev_tty () ++{ ++#if 0 ++ int tty_fd; ++ char *tty; ++ ++ tty_fd = open ("/dev/tty", O_RDWR|O_NONBLOCK); ++ ++ if (tty_fd < 0) ++ { ++ tty = (char *)ttyname (fileno (stdin)); ++ if (tty == 0) ++ return; ++ tty_fd = open (tty, O_RDWR|O_NONBLOCK); ++ } ++ if (tty_fd >= 0) ++ close (tty_fd); ++#endif ++} ++ ++/* Return 1 if PATH1 and PATH2 are the same file. This is kind of ++ expensive. If non-NULL STP1 and STP2 point to stat structures ++ corresponding to PATH1 and PATH2, respectively. */ ++int ++same_file (path1, path2, stp1, stp2) ++ const char *path1, *path2; ++ struct stat *stp1, *stp2; ++{ ++ struct stat st1, st2; ++ ++ if (stp1 == NULL) ++ { ++ if (stat (path1, &st1) != 0) ++ return (0); ++ stp1 = &st1; ++ } ++ ++ if (stp2 == NULL) ++ { ++ if (stat (path2, &st2) != 0) ++ return (0); ++ stp2 = &st2; ++ } ++ ++ return ((stp1->st_dev == stp2->st_dev) && (stp1->st_ino == stp2->st_ino)); ++} ++ ++/* Move FD to a number close to the maximum number of file descriptors ++ allowed in the shell process, to avoid the user stepping on it with ++ redirection and causing us extra work. If CHECK_NEW is non-zero, ++ we check whether or not the file descriptors are in use before ++ duplicating FD onto them. MAXFD says where to start checking the ++ file descriptors. If it's less than 20, we get the maximum value ++ available from getdtablesize(2). */ ++int ++move_to_high_fd (fd, check_new, maxfd) ++ int fd, check_new, maxfd; ++{ ++ int script_fd, nfds, ignore; ++ ++ if (maxfd < 20) ++ { ++ nfds = getdtablesize (); ++ if (nfds <= 0) ++ nfds = 20; ++ if (nfds > HIGH_FD_MAX) ++ nfds = HIGH_FD_MAX; /* reasonable maximum */ ++ } ++ else ++ nfds = maxfd; ++ ++ for (nfds--; check_new && nfds > 3; nfds--) ++ if (fcntl (nfds, F_GETFD, &ignore) == -1) ++ break; ++ ++ if (nfds > 3 && fd != nfds && (script_fd = dup2 (fd, nfds)) != -1) ++ { ++ if (check_new == 0 || fd != fileno (stderr)) /* don't close stderr */ ++ close (fd); ++ return (script_fd); ++ } ++ ++ /* OK, we didn't find one less than our artificial maximum; return the ++ original file descriptor. */ ++ return (fd); ++} ++ ++/* Return non-zero if the characters from SAMPLE are not all valid ++ characters to be found in the first line of a shell script. We ++ check up to the first newline, or SAMPLE_LEN, whichever comes first. ++ All of the characters must be printable or whitespace. */ ++ ++int ++check_binary_file (sample, sample_len) ++ const char *sample; ++ int sample_len; ++{ ++ register int i; ++ unsigned char c; ++ ++ for (i = 0; i < sample_len; i++) ++ { ++ c = sample[i]; ++ if (c == '\n') ++ return (0); ++ if (c == '\0') ++ return (1); ++ } ++ ++ return (0); ++} ++ ++/* **************************************************************** */ ++/* */ ++/* Functions to manipulate pipes */ ++/* */ ++/* **************************************************************** */ ++ ++int ++sh_openpipe (pv) ++ int *pv; ++{ ++ int r; ++ ++ if ((r = pipe (pv)) < 0) ++ return r; ++ ++ pv[0] = move_to_high_fd (pv[0], 1, 64); ++ pv[1] = move_to_high_fd (pv[1], 1, 64); ++ ++ return 0; ++} ++ ++int ++sh_closepipe (pv) ++ int *pv; ++{ ++ if (pv[0] >= 0) ++ close (pv[0]); ++ ++ if (pv[1] >= 0) ++ close (pv[1]); ++ ++ pv[0] = pv[1] = -1; ++ return 0; ++} ++ ++/* **************************************************************** */ ++/* */ ++/* Functions to inspect pathnames */ ++/* */ ++/* **************************************************************** */ ++ ++int ++file_exists (fn) ++ const char *fn; ++{ ++ struct stat sb; ++ ++ return (stat (fn, &sb) == 0); ++} ++ ++int ++file_isdir (fn) ++ const char *fn; ++{ ++ struct stat sb; ++ ++ return ((stat (fn, &sb) == 0) && S_ISDIR (sb.st_mode)); ++} ++ ++int ++file_iswdir (fn) ++ const char *fn; ++{ ++ return (file_isdir (fn) && sh_eaccess (fn, W_OK) == 0); ++} ++ ++/* Return 1 if STRING is "." or "..", optionally followed by a directory ++ separator */ ++int ++path_dot_or_dotdot (string) ++ const char *string; ++{ ++ if (string == 0 || *string == '\0' || *string != '.') ++ return (0); ++ ++ /* string[0] == '.' */ ++ if (PATHSEP(string[1]) || (string[1] == '.' && PATHSEP(string[2]))) ++ return (1); ++ ++ return (0); ++} ++ ++/* Return 1 if STRING contains an absolute pathname, else 0. Used by `cd' ++ to decide whether or not to look up a directory name in $CDPATH. */ ++int ++absolute_pathname (string) ++ const char *string; ++{ ++ if (string == 0 || *string == '\0') ++ return (0); ++ ++ if (ABSPATH(string)) ++ return (1); ++ ++ if (string[0] == '.' && PATHSEP(string[1])) /* . and ./ */ ++ return (1); ++ ++ if (string[0] == '.' && string[1] == '.' && PATHSEP(string[2])) /* .. and ../ */ ++ return (1); ++ ++ return (0); ++} ++ ++/* Return 1 if STRING is an absolute program name; it is absolute if it ++ contains any slashes. This is used to decide whether or not to look ++ up through $PATH. */ ++int ++absolute_program (string) ++ const char *string; ++{ ++ return ((char *)mbschr (string, '/') != (char *)NULL); ++} ++ ++/* **************************************************************** */ ++/* */ ++/* Functions to manipulate pathnames */ ++/* */ ++/* **************************************************************** */ ++ ++/* Turn STRING (a pathname) into an absolute pathname, assuming that ++ DOT_PATH contains the symbolic location of `.'. This always ++ returns a new string, even if STRING was an absolute pathname to ++ begin with. */ ++char * ++make_absolute (string, dot_path) ++ const char *string, *dot_path; ++{ ++ char *result; ++ ++ if (dot_path == 0 || ABSPATH(string)) ++#ifdef __CYGWIN__ ++ { ++ char pathbuf[PATH_MAX + 1]; ++ ++ cygwin_conv_to_full_posix_path (string, pathbuf); ++ result = savestring (pathbuf); ++ } ++#else ++ result = savestring (string); ++#endif ++ else ++ result = sh_makepath (dot_path, string, 0); ++ ++ return (result); ++} ++ ++/* Return the `basename' of the pathname in STRING (the stuff after the ++ last '/'). If STRING is `/', just return it. */ ++char * ++base_pathname (string) ++ char *string; ++{ ++ char *p; ++ ++#if 0 ++ if (absolute_pathname (string) == 0) ++ return (string); ++#endif ++ ++ if (string[0] == '/' && string[1] == 0) ++ return (string); ++ ++ p = (char *)strrchr (string, '/'); ++ return (p ? ++p : string); ++} ++ ++/* Return the full pathname of FILE. Easy. Filenames that begin ++ with a '/' are returned as themselves. Other filenames have ++ the current working directory prepended. A new string is ++ returned in either case. */ ++char * ++full_pathname (file) ++ char *file; ++{ ++ char *ret; ++ ++ file = (*file == '~') ? bash_tilde_expand (file, 0) : savestring (file); ++ ++ if (ABSPATH(file)) ++ return (file); ++ ++ ret = sh_makepath ((char *)NULL, file, (MP_DOCWD|MP_RMDOT)); ++ free (file); ++ ++ return (ret); ++} ++ ++/* A slightly related function. Get the prettiest name of this ++ directory possible. */ ++static char tdir[PATH_MAX]; ++ ++/* Return a pretty pathname. If the first part of the pathname is ++ the same as $HOME, then replace that with `~'. */ ++char * ++polite_directory_format (name) ++ char *name; ++{ ++ char *home; ++ int l; ++ ++ home = get_string_value ("HOME"); ++ l = home ? strlen (home) : 0; ++ if (l > 1 && strncmp (home, name, l) == 0 && (!name[l] || name[l] == '/')) ++ { ++ strncpy (tdir + 1, name + l, sizeof(tdir) - 2); ++ tdir[0] = '~'; ++ tdir[sizeof(tdir) - 1] = '\0'; ++ return (tdir); ++ } ++ else ++ return (name); ++} ++ ++/* Trim NAME. If NAME begins with `~/', skip over tilde prefix. Trim to ++ keep any tilde prefix and PROMPT_DIRTRIM trailing directory components ++ and replace the intervening characters with `...' */ ++char * ++trim_pathname (name, maxlen) ++ char *name; ++ int maxlen; ++{ ++ int nlen, ndirs; ++ intmax_t nskip; ++ char *nbeg, *nend, *ntail, *v; ++ ++ if (name == 0 || (nlen = strlen (name)) == 0) ++ return name; ++ nend = name + nlen; ++ ++ v = get_string_value ("PROMPT_DIRTRIM"); ++ if (v == 0 || *v == 0) ++ return name; ++ if (legal_number (v, &nskip) == 0 || nskip <= 0) ++ return name; ++ ++ /* Skip over tilde prefix */ ++ nbeg = name; ++ if (name[0] == '~') ++ for (nbeg = name; *nbeg; nbeg++) ++ if (*nbeg == '/') ++ { ++ nbeg++; ++ break; ++ } ++ if (*nbeg == 0) ++ return name; ++ ++ for (ndirs = 0, ntail = nbeg; *ntail; ntail++) ++ if (*ntail == '/') ++ ndirs++; ++ if (ndirs < nskip) ++ return name; ++ ++ for (ntail = (*nend == '/') ? nend : nend - 1; ntail > nbeg; ntail--) ++ { ++ if (*ntail == '/') ++ nskip--; ++ if (nskip == 0) ++ break; ++ } ++ if (ntail == nbeg) ++ return name; ++ ++ /* Now we want to return name[0..nbeg]+"..."+ntail, modifying name in place */ ++ nlen = ntail - nbeg; ++ if (nlen <= 3) ++ return name; ++ ++ *nbeg++ = '.'; ++ *nbeg++ = '.'; ++ *nbeg++ = '.'; ++ ++ nlen = nend - ntail; ++ memmove (nbeg, ntail, nlen); ++ nbeg[nlen] = '\0'; ++ ++ return name; ++} ++ ++/* Return a printable representation of FN without special characters. The ++ caller is responsible for freeing memory if this returns something other ++ than its argument. If FLAGS is non-zero, we are printing for portable ++ re-input and should single-quote filenames appropriately. */ ++char * ++printable_filename (fn, flags) ++ char *fn; ++ int flags; ++{ ++ char *newf; ++ ++ if (ansic_shouldquote (fn)) ++ newf = ansic_quote (fn, 0, NULL); ++ else if (flags && sh_contains_shell_metas (fn)) ++ newf = sh_single_quote (fn); ++ else ++ newf = fn; ++ ++ return newf; ++} ++ ++/* Given a string containing units of information separated by colons, ++ return the next one pointed to by (P_INDEX), or NULL if there are no more. ++ Advance (P_INDEX) to the character after the colon. */ ++char * ++extract_colon_unit (string, p_index) ++ char *string; ++ int *p_index; ++{ ++ int i, start, len; ++ char *value; ++ ++ if (string == 0) ++ return (string); ++ ++ len = strlen (string); ++ if (*p_index >= len) ++ return ((char *)NULL); ++ ++ i = *p_index; ++ ++ /* Each call to this routine leaves the index pointing at a colon if ++ there is more to the path. If I is > 0, then increment past the ++ `:'. If I is 0, then the path has a leading colon. Trailing colons ++ are handled OK by the `else' part of the if statement; an empty ++ string is returned in that case. */ ++ if (i && string[i] == ':') ++ i++; ++ ++ for (start = i; string[i] && string[i] != ':'; i++) ++ ; ++ ++ *p_index = i; ++ ++ if (i == start) ++ { ++ if (string[i]) ++ (*p_index)++; ++ /* Return "" in the case of a trailing `:'. */ ++ value = (char *)xmalloc (1); ++ value[0] = '\0'; ++ } ++ else ++ value = substring (string, start, i); ++ ++ return (value); ++} ++ ++/* **************************************************************** */ ++/* */ ++/* Tilde Initialization and Expansion */ ++/* */ ++/* **************************************************************** */ ++ ++#if defined (PUSHD_AND_POPD) ++extern char *get_dirstack_from_string __P((char *)); ++#endif ++ ++static char **bash_tilde_prefixes; ++static char **bash_tilde_prefixes2; ++static char **bash_tilde_suffixes; ++static char **bash_tilde_suffixes2; ++ ++/* If tilde_expand hasn't been able to expand the text, perhaps it ++ is a special shell expansion. This function is installed as the ++ tilde_expansion_preexpansion_hook. It knows how to expand ~- and ~+. ++ If PUSHD_AND_POPD is defined, ~[+-]N expands to directories from the ++ directory stack. */ ++static char * ++bash_special_tilde_expansions (text) ++ char *text; ++{ ++ char *result; ++ ++ result = (char *)NULL; ++ ++ if (text[0] == '+' && text[1] == '\0') ++ result = get_string_value ("PWD"); ++ else if (text[0] == '-' && text[1] == '\0') ++ result = get_string_value ("OLDPWD"); ++#if defined (PUSHD_AND_POPD) ++ else if (DIGIT (*text) || ((*text == '+' || *text == '-') && DIGIT (text[1]))) ++ result = get_dirstack_from_string (text); ++#endif ++ ++ return (result ? savestring (result) : (char *)NULL); ++} ++ ++/* Initialize the tilde expander. In Bash, we handle `~-' and `~+', as ++ well as handling special tilde prefixes; `:~" and `=~' are indications ++ that we should do tilde expansion. */ ++void ++tilde_initialize () ++{ ++ static int times_called = 0; ++ ++ /* Tell the tilde expander that we want a crack first. */ ++ tilde_expansion_preexpansion_hook = bash_special_tilde_expansions; ++ ++ /* Tell the tilde expander about special strings which start a tilde ++ expansion, and the special strings that end one. Only do this once. ++ tilde_initialize () is called from within bashline_reinitialize (). */ ++ if (times_called++ == 0) ++ { ++ bash_tilde_prefixes = strvec_create (3); ++ bash_tilde_prefixes[0] = "=~"; ++ bash_tilde_prefixes[1] = ":~"; ++ bash_tilde_prefixes[2] = (char *)NULL; ++ ++ bash_tilde_prefixes2 = strvec_create (2); ++ bash_tilde_prefixes2[0] = ":~"; ++ bash_tilde_prefixes2[1] = (char *)NULL; ++ ++ tilde_additional_prefixes = bash_tilde_prefixes; ++ ++ bash_tilde_suffixes = strvec_create (3); ++ bash_tilde_suffixes[0] = ":"; ++ bash_tilde_suffixes[1] = "=~"; /* XXX - ?? */ ++ bash_tilde_suffixes[2] = (char *)NULL; ++ ++ tilde_additional_suffixes = bash_tilde_suffixes; ++ ++ bash_tilde_suffixes2 = strvec_create (2); ++ bash_tilde_suffixes2[0] = ":"; ++ bash_tilde_suffixes2[1] = (char *)NULL; ++ } ++} ++ ++/* POSIX.2, 3.6.1: A tilde-prefix consists of an unquoted tilde character ++ at the beginning of the word, followed by all of the characters preceding ++ the first unquoted slash in the word, or all the characters in the word ++ if there is no slash...If none of the characters in the tilde-prefix are ++ quoted, the characters in the tilde-prefix following the tilde shell be ++ treated as a possible login name. */ ++ ++#define TILDE_END(c) ((c) == '\0' || (c) == '/' || (c) == ':') ++ ++static int ++unquoted_tilde_word (s) ++ const char *s; ++{ ++ const char *r; ++ ++ for (r = s; TILDE_END(*r) == 0; r++) ++ { ++ switch (*r) ++ { ++ case '\\': ++ case '\'': ++ case '"': ++ return 0; ++ } ++ } ++ return 1; ++} ++ ++/* Find the end of the tilde-prefix starting at S, and return the tilde ++ prefix in newly-allocated memory. Return the length of the string in ++ *LENP. FLAGS tells whether or not we're in an assignment context -- ++ if so, `:' delimits the end of the tilde prefix as well. */ ++char * ++bash_tilde_find_word (s, flags, lenp) ++ const char *s; ++ int flags, *lenp; ++{ ++ const char *r; ++ char *ret; ++ int l; ++ ++ for (r = s; *r && *r != '/'; r++) ++ { ++ /* Short-circuit immediately if we see a quote character. Even though ++ POSIX says that `the first unquoted slash' (or `:') terminates the ++ tilde-prefix, in practice, any quoted portion of the tilde prefix ++ will cause it to not be expanded. */ ++ if (*r == '\\' || *r == '\'' || *r == '"') ++ { ++ ret = savestring (s); ++ if (lenp) ++ *lenp = 0; ++ return ret; ++ } ++ else if (flags && *r == ':') ++ break; ++ } ++ l = r - s; ++ ret = xmalloc (l + 1); ++ strncpy (ret, s, l); ++ ret[l] = '\0'; ++ if (lenp) ++ *lenp = l; ++ return ret; ++} ++ ++/* Tilde-expand S by running it through the tilde expansion library. ++ ASSIGN_P is 1 if this is a variable assignment, so the alternate ++ tilde prefixes should be enabled (`=~' and `:~', see above). If ++ ASSIGN_P is 2, we are expanding the rhs of an assignment statement, ++ so `=~' is not valid. */ ++char * ++bash_tilde_expand (s, assign_p) ++ const char *s; ++ int assign_p; ++{ ++ int old_immed, old_term, r; ++ char *ret; ++ ++#if 0 ++ old_immed = interrupt_immediately; ++ old_term = terminate_immediately; ++ /* We want to be able to interrupt tilde expansion. Ordinarily, we can just ++ jump to top_level, but we don't want to run any trap commands in a signal ++ handler context. We might be able to get away with just checking for ++ things like SIGINT and SIGQUIT. */ ++ if (any_signals_trapped () < 0) ++ interrupt_immediately = 1; ++ terminate_immediately = 1; ++#endif ++ ++ tilde_additional_prefixes = assign_p == 0 ? (char **)0 ++ : (assign_p == 2 ? bash_tilde_prefixes2 : bash_tilde_prefixes); ++ if (assign_p == 2) ++ tilde_additional_suffixes = bash_tilde_suffixes2; ++ ++ r = (*s == '~') ? unquoted_tilde_word (s) : 1; ++ ret = r ? tilde_expand (s) : savestring (s); ++ ++#if 0 ++ interrupt_immediately = old_immed; ++ terminate_immediately = old_term; ++#endif ++ ++ QUIT; ++ ++ return (ret); ++} ++ ++/* **************************************************************** */ ++/* */ ++/* Functions to manipulate and search the group list */ ++/* */ ++/* **************************************************************** */ ++ ++static int ngroups, maxgroups; ++ ++/* The set of groups that this user is a member of. */ ++static GETGROUPS_T *group_array = (GETGROUPS_T *)NULL; ++ ++#if !defined (NOGROUP) ++# define NOGROUP (gid_t) -1 ++#endif ++ ++static void ++initialize_group_array () ++{ ++ register int i; ++ ++ if (maxgroups == 0) ++ maxgroups = getmaxgroups (); ++ ++ ngroups = 0; ++ group_array = (GETGROUPS_T *)xrealloc (group_array, maxgroups * sizeof (GETGROUPS_T)); ++ ++#if defined (HAVE_GETGROUPS) ++ ngroups = getgroups (maxgroups, group_array); ++#endif ++ ++ /* If getgroups returns nothing, or the OS does not support getgroups(), ++ make sure the groups array includes at least the current gid. */ ++ if (ngroups == 0) ++ { ++ group_array[0] = current_user.gid; ++ ngroups = 1; ++ } ++ ++ /* If the primary group is not in the groups array, add it as group_array[0] ++ and shuffle everything else up 1, if there's room. */ ++ for (i = 0; i < ngroups; i++) ++ if (current_user.gid == (gid_t)group_array[i]) ++ break; ++ if (i == ngroups && ngroups < maxgroups) ++ { ++ for (i = ngroups; i > 0; i--) ++ group_array[i] = group_array[i - 1]; ++ group_array[0] = current_user.gid; ++ ngroups++; ++ } ++ ++ /* If the primary group is not group_array[0], swap group_array[0] and ++ whatever the current group is. The vast majority of systems should ++ not need this; a notable exception is Linux. */ ++ if (group_array[0] != current_user.gid) ++ { ++ for (i = 0; i < ngroups; i++) ++ if (group_array[i] == current_user.gid) ++ break; ++ if (i < ngroups) ++ { ++ group_array[i] = group_array[0]; ++ group_array[0] = current_user.gid; ++ } ++ } ++} ++ ++/* Return non-zero if GID is one that we have in our groups list. */ ++int ++#if defined (__STDC__) || defined ( _MINIX) ++group_member (gid_t gid) ++#else ++group_member (gid) ++ gid_t gid; ++#endif /* !__STDC__ && !_MINIX */ ++{ ++#if defined (HAVE_GETGROUPS) ++ register int i; ++#endif ++ ++ /* Short-circuit if possible, maybe saving a call to getgroups(). */ ++ if (gid == current_user.gid || gid == current_user.egid) ++ return (1); ++ ++#if defined (HAVE_GETGROUPS) ++ if (ngroups == 0) ++ initialize_group_array (); ++ ++ /* In case of error, the user loses. */ ++ if (ngroups <= 0) ++ return (0); ++ ++ /* Search through the list looking for GID. */ ++ for (i = 0; i < ngroups; i++) ++ if (gid == (gid_t)group_array[i]) ++ return (1); ++#endif ++ ++ return (0); ++} ++ ++char ** ++get_group_list (ngp) ++ int *ngp; ++{ ++ static char **group_vector = (char **)NULL; ++ register int i; ++ ++ if (group_vector) ++ { ++ if (ngp) ++ *ngp = ngroups; ++ return group_vector; ++ } ++ ++ if (ngroups == 0) ++ initialize_group_array (); ++ ++ if (ngroups <= 0) ++ { ++ if (ngp) ++ *ngp = 0; ++ return (char **)NULL; ++ } ++ ++ group_vector = strvec_create (ngroups); ++ for (i = 0; i < ngroups; i++) ++ group_vector[i] = itos (group_array[i]); ++ ++ if (ngp) ++ *ngp = ngroups; ++ return group_vector; ++} ++ ++int * ++get_group_array (ngp) ++ int *ngp; ++{ ++ int i; ++ static int *group_iarray = (int *)NULL; ++ ++ if (group_iarray) ++ { ++ if (ngp) ++ *ngp = ngroups; ++ return (group_iarray); ++ } ++ ++ if (ngroups == 0) ++ initialize_group_array (); ++ ++ if (ngroups <= 0) ++ { ++ if (ngp) ++ *ngp = 0; ++ return (int *)NULL; ++ } ++ ++ group_iarray = (int *)xmalloc (ngroups * sizeof (int)); ++ for (i = 0; i < ngroups; i++) ++ group_iarray[i] = (int)group_array[i]; ++ ++ if (ngp) ++ *ngp = ngroups; ++ return group_iarray; ++} ++ ++/* **************************************************************** */ ++/* */ ++/* Miscellaneous functions */ ++/* */ ++/* **************************************************************** */ ++ ++/* Return a value for PATH that is guaranteed to find all of the standard ++ utilities. This uses Posix.2 configuration variables, if present. It ++ uses a value defined in config.h as a last resort. */ ++char * ++conf_standard_path () ++{ ++#if defined (_CS_PATH) && defined (HAVE_CONFSTR) ++ char *p; ++ size_t len; ++ ++ len = (size_t)confstr (_CS_PATH, (char *)NULL, (size_t)0); ++ if (len > 0) ++ { ++ p = (char *)xmalloc (len + 2); ++ *p = '\0'; ++ confstr (_CS_PATH, p, len); ++ return (p); ++ } ++ else ++ return (savestring (STANDARD_UTILS_PATH)); ++#else /* !_CS_PATH || !HAVE_CONFSTR */ ++# if defined (CS_PATH) ++ return (savestring (CS_PATH)); ++# else ++ return (savestring (STANDARD_UTILS_PATH)); ++# endif /* !CS_PATH */ ++#endif /* !_CS_PATH || !HAVE_CONFSTR */ ++} +diff -ruwN source/include/posixwait.h source-new/include/posixwait.h +--- source/include/posixwait.h 2008-08-12 08:03:03.000000000 -0600 ++++ source-new/include/posixwait.h 2019-01-28 12:42:40.972781097 -0700 +@@ -34,7 +34,7 @@ + + /* How to get the status of a job. For Posix, this is just an + int, but for other systems we have to crack the union wait. */ +-#if !defined (_POSIX_VERSION) ++#if 0 + typedef union wait WAIT; + # define WSTATUS(t) (t.w_status) + #else /* _POSIX_VERSION */ +@@ -50,7 +50,7 @@ + + /* More Posix P1003.1 definitions. In the POSIX versions, the parameter is + passed as an `int', in the non-POSIX version, as `union wait'. */ +-#if defined (_POSIX_VERSION) ++#if 1 + + # if !defined (WSTOPSIG) + # define WSTOPSIG(s) ((s) >> 8) +diff -ruwN source/lib/sh/getcwd.c source-new/lib/sh/getcwd.c +--- source/lib/sh/getcwd.c 2012-03-10 08:48:50.000000000 -0700 ++++ source-new/lib/sh/getcwd.c 2019-01-28 14:02:28.573259186 -0700 +@@ -20,7 +20,7 @@ + + #include + +-#if !defined (HAVE_GETCWD) ++#if !defined (HAVE_GETCWD) && !defined(__redox__) + + #if !defined (__GNUC__) && !defined (HAVE_ALLOCA_H) && defined (_AIX) + #pragma alloca +diff -ruwN source/sig.c source-new/sig.c +--- source/sig.c 2016-02-11 13:02:45.000000000 -0700 ++++ source-new/sig.c 2019-01-28 13:48:08.303876705 -0700 +@@ -680,7 +680,9 @@ + } + + /* Signal functions used by the rest of the code. */ +-#if !defined (HAVE_POSIX_SIGNALS) ++#if defined(__redox__) ++// Redox already has sigprocmask ++#elif !defined (HAVE_POSIX_SIGNALS) + + /* Perform OPERATION on NEWSET, perhaps leaving information in OLDSET. */ + sigprocmask (operation, newset, oldset) From 83a6dacba8d38a80d25569b1c9c84a1991ad2163 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Wed, 30 Jan 2019 04:40:43 +0100 Subject: [PATCH 0579/3180] Add ogg and vorbis packages, enable them in sdl_mixer and syobonaction --- recipes/libogg/recipe.sh | 41 +++++++++++++++++++++++++++++ recipes/libvorbis/recipe.sh | 40 ++++++++++++++++++++++++++++ recipes/sdl_mixer/recipe.sh | 4 ++- recipes/syobonaction/01_redox.patch | 2 +- recipes/syobonaction/recipe.sh | 2 +- 5 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 recipes/libogg/recipe.sh create mode 100644 recipes/libvorbis/recipe.sh diff --git a/recipes/libogg/recipe.sh b/recipes/libogg/recipe.sh new file mode 100644 index 00000000..e27dbd20 --- /dev/null +++ b/recipes/libogg/recipe.sh @@ -0,0 +1,41 @@ +VERSION=1.3.3 +TAR=http://downloads.xiph.org/releases/ogg/libogg-$VERSION.tar.xz +TAR_SHA256=4f3fc6178a533d392064f14776b23c397ed4b9f48f5de297aba73b643f955c08 + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + + ./configure \ + --build=${BUILD} \ + --host=${HOST} \ + --prefix='' + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + rm -f "$dest/lib/"*.la + skip=1 +} diff --git a/recipes/libvorbis/recipe.sh b/recipes/libvorbis/recipe.sh new file mode 100644 index 00000000..b5ccafd0 --- /dev/null +++ b/recipes/libvorbis/recipe.sh @@ -0,0 +1,40 @@ +VERSION=1.3.6 +TAR=http://downloads.xiph.org/releases/vorbis/libvorbis-$VERSION.tar.xz +TAR_SHA256=af00bb5a784e7c9e69f56823de4637c350643deedaf333d0fa86ecdba6fcb415 +BUILD_DEPENDS=(libogg) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + ./configure \ + --build=${BUILD} \ + --host=${HOST} \ + --prefix='' + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + rm -f "$dest/lib/"*.la + skip=1 +} diff --git a/recipes/sdl_mixer/recipe.sh b/recipes/sdl_mixer/recipe.sh index cf4ccfc4..072bb1e9 100644 --- a/recipes/sdl_mixer/recipe.sh +++ b/recipes/sdl_mixer/recipe.sh @@ -1,6 +1,6 @@ VERSION=1.2.12 TAR=https://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-$VERSION.tar.gz -BUILD_DEPENDS=(sdl liborbital) +BUILD_DEPENDS=(sdl liborbital libogg libvorbis) function recipe_version { echo "$VERSION" @@ -16,11 +16,13 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" + export LIBS="-lvorbis -logg" ./autogen.sh ./configure \ --prefix=/ \ --build=${BUILD} \ --host=${HOST} \ + --enable-music-ogg \ --disable-shared \ --disable-sdltest \ --disable-music-cmd \ diff --git a/recipes/syobonaction/01_redox.patch b/recipes/syobonaction/01_redox.patch index b232eac2..ad36cf73 100644 --- a/recipes/syobonaction/01_redox.patch +++ b/recipes/syobonaction/01_redox.patch @@ -31,7 +31,7 @@ diff -rupNw source-original/Makefile source/Makefile @@ -1,8 +1,8 @@ SyobonAction:main.o loadg.o DxLib.o - gcc main.o loadg.o DxLib.o -o SyobonAction `sdl-config --libs` -lSDL_gfx -lSDL_image -lSDL_mixer -lSDL_ttf -+ ${CXX} ${LDFLAGS} main.o loadg.o DxLib.o -o SyobonAction `${SDL_CONFIG} --libs` -lSDL_gfx -lSDL_image -lSDL_mixer -lpng -ljpeg -lz -lSDL -lSDL_ttf -lfreetype ++ ${CXX} ${LDFLAGS} main.o loadg.o DxLib.o -o SyobonAction `${SDL_CONFIG} --libs` -lSDL_gfx -lSDL_image -lSDL_mixer -lpng -ljpeg -lz -lSDL -lSDL_ttf -lfreetype -lvorbisfile -lvorbis -logg main.o:main.cpp - gcc -c main.cpp + ${CXX} ${CPPFLAGS} `${SDL_CONFIG} --cflags` -c main.cpp diff --git a/recipes/syobonaction/recipe.sh b/recipes/syobonaction/recipe.sh index aa8dc940..f4475d1b 100644 --- a/recipes/syobonaction/recipe.sh +++ b/recipes/syobonaction/recipe.sh @@ -1,6 +1,6 @@ VERSION=1.0-rc3 GIT=https://github.com/angelXwind/OpenSyobonAction -BUILD_DEPENDS=(sdl liborbital sdl_mixer sdl_image sdl_gfx sdl_ttf freetype libjpeg libpng zlib) +BUILD_DEPENDS=(sdl liborbital sdl_mixer sdl_image sdl_gfx sdl_ttf freetype libjpeg libpng zlib libogg libvorbis) function recipe_version { echo "$VERSION" From db324490eb0685603c2827f5faceb83b0e9af52b Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Tue, 5 Feb 2019 05:04:50 +0100 Subject: [PATCH 0580/3180] Add mgba recipe --- recipes/mgba/01_redox.patch | 138 ++++++++++++++++++++++++++++++++++++ recipes/mgba/recipe.sh | 53 ++++++++++++++ 2 files changed, 191 insertions(+) create mode 100644 recipes/mgba/01_redox.patch create mode 100644 recipes/mgba/recipe.sh diff --git a/recipes/mgba/01_redox.patch b/recipes/mgba/01_redox.patch new file mode 100644 index 00000000..0ba8702d --- /dev/null +++ b/recipes/mgba/01_redox.patch @@ -0,0 +1,138 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index fa01e3a5..5910934a 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,4 +1,4 @@ +-cmake_minimum_required(VERSION 3.1) ++cmake_minimum_required(VERSION 3.4) + if(POLICY CMP0025) + cmake_policy(SET CMP0025 NEW) + endif() +@@ -241,8 +241,8 @@ elseif(UNIX) + add_definitions(-D_GNU_SOURCE) + endif() + if(NOT APPLE AND NOT HAIKU) +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread") +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread") ++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -lpthread") ++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lpthread") + endif() + + list(APPEND CORE_VFS_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/util/vfs/vfs-fd.c ${CMAKE_CURRENT_SOURCE_DIR}/src/util/vfs/vfs-dirent.c) +diff --git a/include/mgba-util/platform/posix/threading.h b/include/mgba-util/platform/posix/threading.h +index 468e1460..50cba731 100644 +--- a/include/mgba-util/platform/posix/threading.h ++++ b/include/mgba-util/platform/posix/threading.h +@@ -85,25 +85,8 @@ static inline int ThreadJoin(Thread thread) { + } + + static inline int ThreadSetName(const char* name) { +-#ifdef __APPLE__ +-#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1060 +- return pthread_setname_np(name); +-#else + UNUSED(name); + return 0; +-#endif +-#elif defined(__FreeBSD__) || defined(__OpenBSD__) +- pthread_set_name_np(pthread_self(), name); +- return 0; +-#elif defined(__HAIKU__) +- rename_thread(find_thread(NULL), name); +- return 0; +-#elif !defined(BUILD_PANDORA) // Pandora's glibc is too old +- return pthread_setname_np(pthread_self(), name); +-#else +- UNUSED(name); +- return 0; +-#endif + } + + CXX_GUARD_END +diff --git a/include/mgba/core/interface.h b/include/mgba/core/interface.h +index e5c9dde1..82d3b828 100644 +--- a/include/mgba/core/interface.h ++++ b/include/mgba/core/interface.h +@@ -31,7 +31,7 @@ typedef uint32_t color_t; + #define M_G8(X) (((((X) >> 2) & 0xF8) * 0x21) >> 5) + #define M_B8(X) (((((X) >> 7) & 0xF8) * 0x21) >> 5) + +-#define M_RGB5_TO_BGR8(X) ((M_R5(X) << 3) | (M_G5(X) << 11) | (M_B5(X) << 19)) ++#define M_RGB5_TO_BGR8(X) ((M_B5(X) << 3) | (M_G5(X) << 11) | (M_R5(X) << 19)) + #define M_RGB8_TO_BGR5(X) ((((X) & 0xF8) >> 3) | (((X) & 0xF800) >> 6) | (((X) & 0xF80000) >> 9)) + #define M_RGB8_TO_RGB5(X) ((((X) & 0xF8) << 7) | (((X) & 0xF800) >> 6) | (((X) & 0xF80000) >> 19)) + +diff --git a/src/platform/sdl/sdl-audio.c b/src/platform/sdl/sdl-audio.c +index ab0bd830..7cd77495 100644 +--- a/src/platform/sdl/sdl-audio.c ++++ b/src/platform/sdl/sdl-audio.c +@@ -24,6 +24,15 @@ bool mSDLInitAudio(struct mSDLAudio* context, struct mCoreThread* threadContext) + return false; + } + ++ // Workaround: The thread of _mSDLAudioCallback cannot see these changes ++ // unless they are made before the SDL_OpenAudio call. ++ // This makes the `if (!context || !audioContext->core) {` check in ++ // _mSDLAudioCallback not bail out. This is rather important, the whole ++ // emulation seems to be synched to the audio. ++ context->core = threadContext->core; ++ context->sync = &threadContext->impl->sync; ++ // -- ++ + context->desiredSpec.freq = context->sampleRate; + context->desiredSpec.format = AUDIO_S16SYS; + context->desiredSpec.channels = 2; +diff --git a/src/third-party/zlib/contrib/minizip/ioapi.c b/src/third-party/zlib/contrib/minizip/ioapi.c +index 7f5c191b..744dd96b 100644 +--- a/src/third-party/zlib/contrib/minizip/ioapi.c ++++ b/src/third-party/zlib/contrib/minizip/ioapi.c +@@ -14,7 +14,7 @@ + #define _CRT_SECURE_NO_WARNINGS + #endif + +-#if defined(__APPLE__) || defined(IOAPI_NO_64) ++#if defined(__APPLE__) || defined(IOAPI_NO_64) || defined(__redox__) + // In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions + #define FOPEN_FUNC(filename, mode) fopen(filename, mode) + #define FTELLO_FUNC(stream) ftello(stream) +diff --git a/src/util/vfs/vfs-fd.c b/src/util/vfs/vfs-fd.c +index 4a20eaf7..3307709c 100644 +--- a/src/util/vfs/vfs-fd.c ++++ b/src/util/vfs/vfs-fd.c +@@ -42,7 +42,8 @@ struct VFile* VFileOpenFD(const char* path, int flags) { + MultiByteToWideChar(CP_UTF8, 0, path, -1, wpath, sizeof(wpath) / sizeof(*wpath)); + int fd = _wopen(wpath, flags, 0666); + #else +- int fd = open(path, flags, 0666); ++ // Workaround for the _vfdMap permission problems below ++ int fd = open(path, flags | O_RDWR, 0666); + #endif + return VFileFromFD(fd); + } +@@ -164,24 +165,6 @@ static ssize_t _vfdSize(struct VFile* vf) { + static bool _vfdSync(struct VFile* vf, const void* buffer, size_t size) { + UNUSED(buffer); + UNUSED(size); +- struct VFileFD* vfd = (struct VFileFD*) vf; +-#ifndef _WIN32 +-#ifdef __HAIKU__ +- futimens(vfd->fd, NULL); +-#else +- futimes(vfd->fd, NULL); +-#endif +- if (buffer && size) { +- return msync(buffer, size, MS_SYNC) == 0; +- } +- return fsync(vfd->fd) == 0; +-#else +- HANDLE h = (HANDLE) _get_osfhandle(vfd->fd); +- FILETIME ft; +- SYSTEMTIME st; +- GetSystemTime(&st); +- SystemTimeToFileTime(&st, &ft); +- SetFileTime(h, NULL, &ft, &ft); +- return FlushFileBuffers(h); +-#endif ++ printf("_vfdSync\n"); ++ return true; + } diff --git a/recipes/mgba/recipe.sh b/recipes/mgba/recipe.sh new file mode 100644 index 00000000..57484ecc --- /dev/null +++ b/recipes/mgba/recipe.sh @@ -0,0 +1,53 @@ +VERSION=0.7 +GIT=https://github.com/mgba-emu/mgba.git +BRANCH=$VERSION +BUILD_DEPENDS=(sdl liborbital libiconv pixman) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include -I$sysroot/include/SDL" + export LDFLAGS="-L$sysroot/lib" + + mkdir -p build + cd build + cmake \ + -DCMAKE_INSTALL_PREFIX:PATH=/ \ + -DBUILD_STATIC=ON \ + -DBUILD_SHARED=OFF \ + -DBUILD_QT=OFF \ + -DUSE_SQLITE3=OFF \ + -DUSE_DEBUGGERS=OFF \ + -DBUILD_SDL=ON \ + -DSDL_VERSION="1.2" \ + -DSDL_LIBRARY="-lSDL -lorbital" \ + .. + VERBOSE=1 make all -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + mkdir -pv "$dest/bin" + cp "../build/build/sdl/mgba" "$dest/bin/mgba" + skip=1 +} From 4f4005ac4a0db5b80b270a1e76c204bafcc4d079 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Mon, 11 Feb 2019 12:57:42 +0100 Subject: [PATCH 0581/3180] sdl: Fix null pointer dereference In some cases the SDL event loop could kick in before the window gets initialized. --- recipes/sdl/redox.patch | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/recipes/sdl/redox.patch b/recipes/sdl/redox.patch index 838df6fd..85320bb2 100644 --- a/recipes/sdl/redox.patch +++ b/recipes/sdl/redox.patch @@ -380,7 +380,7 @@ diff -ruwN source/src/thread/pthread/SDL_systhread.c source-new/src/thread/pthre diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orbital/SDL_orbitalevents.c --- source/src/video/orbital/SDL_orbitalevents.c 1969-12-31 17:00:00.000000000 -0700 +++ source-new/src/video/orbital/SDL_orbitalevents.c 2018-12-29 15:57:00.298520310 -0700 -@@ -0,0 +1,197 @@ +@@ -0,0 +1,201 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -425,6 +425,10 @@ diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orb +{ + SDL_keysym keysym; + ++ if (!this->hidden->window) { ++ return; ++ } ++ + void* event_iter = orb_window_events(this->hidden->window); + OrbEventOption oeo = orb_events_next(event_iter); + From 6ac31aa99655a56040c31e9ee827681218057e6d Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Tue, 12 Feb 2019 18:30:36 +0100 Subject: [PATCH 0582/3180] Add vice recipe --- recipes/vice/01_redox.patch | 107 ++++++++++++++++++++++++++++++++++++ recipes/vice/recipe.sh | 52 ++++++++++++++++++ 2 files changed, 159 insertions(+) create mode 100644 recipes/vice/01_redox.patch create mode 100644 recipes/vice/recipe.sh diff --git a/recipes/vice/01_redox.patch b/recipes/vice/01_redox.patch new file mode 100644 index 00000000..936cbdea --- /dev/null +++ b/recipes/vice/01_redox.patch @@ -0,0 +1,107 @@ +diff -rupNw source-original/configure source/configure +--- source-original/configure 2018-12-19 22:25:02.000000000 +0100 ++++ source/configure 2019-02-12 17:09:41.954190921 +0100 +@@ -10320,54 +10320,6 @@ done + test -n "$DOS2UNIX" || DOS2UNIX="dos2unix" + + +-for ac_prog in xa xa65 +-do +- # Extract the first word of "$ac_prog", so it can be a program name with args. +-set dummy $ac_prog; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_XA+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- if test -n "$XA"; then +- ac_cv_prog_XA="$XA" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_XA="$ac_prog" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +- done +-IFS=$as_save_IFS +- +-fi +-fi +-XA=$ac_cv_prog_XA +-if test -n "$XA"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XA" >&5 +-$as_echo "$XA" >&6; } +-else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } +-fi +- +- +- test -n "$XA" && break +-done +-test -n "$XA" || XA="no" +- +- +-if test x"$XA" = "xno"; then +- as_fn_error $? "xa is missing" "$LINENO" 5 +-fi +- + if test x"$SVN" != "x"; then + svnrevision=`$SVN 2>dummy.tmp info $srcdir | grep Revision | cut -d " " -f 2` + rm dummy.tmp +@@ -15132,6 +15084,9 @@ fi + done + + ++UNIX_NETWORK_FUNCS_PRESENT=no ++ ++ + if test x"$UNIX_NETWORK_FUNCS_PRESENT" = "xyes"; then + + $as_echo "#define HAVE_NETWORK /**/" >>confdefs.h +diff -rupNw source-original/src/arch/sdl/rs232dev.c source/src/arch/sdl/rs232dev.c +--- source-original/src/arch/sdl/rs232dev.c 2018-08-13 20:18:45.000000000 +0200 ++++ source/src/arch/sdl/rs232dev.c 2019-02-11 10:16:12.989841923 +0100 +@@ -27,7 +27,7 @@ + #include "vice.h" + + #ifdef UNIX_COMPILE +-#include "rs232dev-unix.c" ++//#include "rs232dev-unix.c" + #endif + + #ifdef WIN32_COMPILE +diff -rupNw source-original/src/opencbm.h source/src/opencbm.h +--- source-original/src/opencbm.h 2018-08-22 21:01:32.000000000 +0200 ++++ source/src/opencbm.h 2019-02-11 09:28:21.775162862 +0100 +@@ -117,6 +117,10 @@ typedef unsigned char __u_char; + typedef unsigned char __u_char; + #endif + ++#ifdef __redox__ ++typedef unsigned char __u_char; ++#endif ++ + #endif + + /* specifiers for the IEC bus lines */ +diff -rupNw source-original/src/sound.c source/src/sound.c +--- source-original/src/sound.c 2018-12-17 19:44:43.000000000 +0100 ++++ source/src/sound.c 2019-02-12 08:57:18.934381713 +0100 +@@ -1001,6 +1001,9 @@ int sound_open(void) + break; + } + ++ speed = 44100; ++ channels = 2; ++ + /* find pdev */ + for (i = 0; (pdev = sound_devices[i]); i++) { + if (!playname || (pdev->name && !strcasecmp(playname, pdev->name))) { diff --git a/recipes/vice/recipe.sh b/recipes/vice/recipe.sh new file mode 100644 index 00000000..5387bfdb --- /dev/null +++ b/recipes/vice/recipe.sh @@ -0,0 +1,52 @@ +VERSION=3.3 +TAR=https://sourceforge.net/projects/vice-emu/files/releases/vice-$VERSION.tar.gz/download +TAR_SHA256=1a55b38cc988165b077808c07c52a779d181270b28c14b5c9abf4e569137431d +BUILD_DEPENDS=(sdl liborbital) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="$(realpath ../sysroot)" + wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + + export sdl_config="$sysroot/bin/sdl-config" + export CFLAGS="-I$sysroot/include -I$sysroot/include/SDL" + export CXXFLAGS="$CFLAGS" + export LDFLAGS="-L$sysroot/lib" + + ./configure \ + --build=${BUILD} \ + --host=${HOST} \ + --prefix='' \ + --enable-sdlui \ + --disable-sdlui2 \ + --disable-rs232 \ + --disable-realdevice \ + --disable-midi + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} From e8b6055fb93b2773ac18a62915a307894f53f91c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 19 Feb 2019 20:19:31 -0700 Subject: [PATCH 0583/3180] Use patched git for curl --- recipes/curl/recipe.sh | 4 +++- recipes/curl/redox.patch | 12 ------------ 2 files changed, 3 insertions(+), 13 deletions(-) delete mode 100644 recipes/curl/redox.patch diff --git a/recipes/curl/recipe.sh b/recipes/curl/recipe.sh index 968a51c7..7ba99bd1 100644 --- a/recipes/curl/recipe.sh +++ b/recipes/curl/recipe.sh @@ -1,5 +1,7 @@ VERSION="7.62.0" -TAR=https://curl.haxx.se/download/curl-$VERSION.tar.gz +#TAR=https://curl.haxx.se/download/curl-$VERSION.tar.gz +GIT=https://gitlab.redox-os.org/redox-os/curl.git +GIT_BRANCH=redox BUILD_DEPENDS=(openssl zlib) DEPENDS="ca-certificates" diff --git a/recipes/curl/redox.patch b/recipes/curl/redox.patch deleted file mode 100644 index 71602628..00000000 --- a/recipes/curl/redox.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -ruw source/include/curl/curl.h source-new/include/curl/curl.h ---- source/include/curl/curl.h 2018-10-30 10:53:59.000000000 -0600 -+++ source-new/include/curl/curl.h 2018-12-10 12:42:52.504393368 -0700 -@@ -74,7 +74,7 @@ - #if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \ - defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \ - defined(ANDROID) || defined(__ANDROID__) || defined(__OpenBSD__) || \ -- defined(__CYGWIN__) || \ -+ defined(__CYGWIN__) || defined(__redox__) || \ - (defined(__FreeBSD_version) && (__FreeBSD_version < 800000)) - #include - #endif From f626f129b361753bcd50ce8c2fd4938fff225100 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 25 Feb 2019 13:11:49 -0700 Subject: [PATCH 0584/3180] Use xargo rustc so that rust flags can be passed --- cook.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cook.sh b/cook.sh index 8a086d66..3ec8b698 100755 --- a/cook.sh +++ b/cook.sh @@ -311,7 +311,7 @@ function op { if [ "$skip" -eq "0" ] then cp -p "$ROOT/Xargo.toml" "Xargo.toml" - xargo build --target "$TARGET" $release_flag $CARGOFLAGS + xargo rustc --target "$TARGET" $release_flag $CARGOFLAGS fi popd > /dev/null ;; From d42cda72d43bb6679f542d642eb5109b7e7f0585 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 25 Feb 2019 13:12:20 -0700 Subject: [PATCH 0585/3180] Add minimal version of orbutils --- recipes/orbutils-minimal/recipe.sh | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 recipes/orbutils-minimal/recipe.sh diff --git a/recipes/orbutils-minimal/recipe.sh b/recipes/orbutils-minimal/recipe.sh new file mode 100644 index 00000000..b00327c7 --- /dev/null +++ b/recipes/orbutils-minimal/recipe.sh @@ -0,0 +1,4 @@ +GIT=https://gitlab.redox-os.org/redox-os/orbutils.git +BINDIR=/ui/bin +CARGOFLAGS="--bin background --bin launcher --bin orblogin" +DEPENDS="orbital" From 35439d927d9d641263e85c90e7588165228c311f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 25 Feb 2019 16:07:56 -0700 Subject: [PATCH 0586/3180] Compile some recipes with LTO --- cook.sh | 3 ++- recipes/drivers/recipe.sh | 3 ++- recipes/ipcd/recipe.sh | 1 + recipes/nulld/recipe.sh | 1 + recipes/orbital/recipe.sh | 1 + recipes/orbterm/recipe.sh | 1 + recipes/{orbutils-minimal => orbutils-background}/recipe.sh | 2 +- recipes/orbutils-launcher/recipe.sh | 4 ++++ recipes/orbutils-orblogin/recipe.sh | 4 ++++ recipes/ptyd/recipe.sh | 1 + recipes/randd/recipe.sh | 1 + recipes/uutils/recipe.sh | 2 +- recipes/zerod/recipe.sh | 1 + 13 files changed, 21 insertions(+), 4 deletions(-) rename recipes/{orbutils-minimal => orbutils-background}/recipe.sh (59%) create mode 100644 recipes/orbutils-launcher/recipe.sh create mode 100644 recipes/orbutils-orblogin/recipe.sh diff --git a/cook.sh b/cook.sh index 3ec8b698..07936d1b 100755 --- a/cook.sh +++ b/cook.sh @@ -6,6 +6,7 @@ source config.sh # Variables to be overriden by recipes export BINDIR=bin +export CARGOBUILD=rustc export CARGOFLAGS= export DEBUG= export PREPARE_COPY=1 @@ -311,7 +312,7 @@ function op { if [ "$skip" -eq "0" ] then cp -p "$ROOT/Xargo.toml" "Xargo.toml" - xargo rustc --target "$TARGET" $release_flag $CARGOFLAGS + xargo "$CARGOBUILD" --target "$TARGET" $release_flag $CARGOFLAGS fi popd > /dev/null ;; diff --git a/recipes/drivers/recipe.sh b/recipes/drivers/recipe.sh index eb3653f2..4c5becb8 100644 --- a/recipes/drivers/recipe.sh +++ b/recipes/drivers/recipe.sh @@ -1,5 +1,6 @@ GIT=https://gitlab.redox-os.org/redox-os/drivers.git -CARGOFLAGS=--all +CARGOBUILD="build" +CARGOFLAGS="--all" function recipe_version { echo "0.1.1" diff --git a/recipes/ipcd/recipe.sh b/recipes/ipcd/recipe.sh index 23eadd83..d500b644 100644 --- a/recipes/ipcd/recipe.sh +++ b/recipes/ipcd/recipe.sh @@ -1 +1,2 @@ GIT=https://gitlab.redox-os.org/redox-os/ipcd.git +CARGOFLAGS="--bin ipcd -- -C lto" diff --git a/recipes/nulld/recipe.sh b/recipes/nulld/recipe.sh index 0d8a7422..a5944d52 100644 --- a/recipes/nulld/recipe.sh +++ b/recipes/nulld/recipe.sh @@ -1 +1,2 @@ GIT=https://gitlab.redox-os.org/redox-os/nulld.git +CARGOFLAGS="--bin nulld -- -C lto" diff --git a/recipes/orbital/recipe.sh b/recipes/orbital/recipe.sh index 0bf99461..68484f39 100644 --- a/recipes/orbital/recipe.sh +++ b/recipes/orbital/recipe.sh @@ -1,2 +1,3 @@ GIT=https://gitlab.redox-os.org/redox-os/orbital.git +CARGOFLAGS="--bin orbital -- -C lto" DEPENDS="orbdata" diff --git a/recipes/orbterm/recipe.sh b/recipes/orbterm/recipe.sh index 5c79b26c..9976d87a 100644 --- a/recipes/orbterm/recipe.sh +++ b/recipes/orbterm/recipe.sh @@ -1,3 +1,4 @@ GIT=https://gitlab.redox-os.org/redox-os/orbterm.git BINDIR=/ui/bin +CARGOFLAGS="--bin orbterm -- -C lto" DEPENDS="orbital" diff --git a/recipes/orbutils-minimal/recipe.sh b/recipes/orbutils-background/recipe.sh similarity index 59% rename from recipes/orbutils-minimal/recipe.sh rename to recipes/orbutils-background/recipe.sh index b00327c7..2105db9f 100644 --- a/recipes/orbutils-minimal/recipe.sh +++ b/recipes/orbutils-background/recipe.sh @@ -1,4 +1,4 @@ GIT=https://gitlab.redox-os.org/redox-os/orbutils.git BINDIR=/ui/bin -CARGOFLAGS="--bin background --bin launcher --bin orblogin" +CARGOFLAGS="--bin background -- -C lto" DEPENDS="orbital" diff --git a/recipes/orbutils-launcher/recipe.sh b/recipes/orbutils-launcher/recipe.sh new file mode 100644 index 00000000..b2504a22 --- /dev/null +++ b/recipes/orbutils-launcher/recipe.sh @@ -0,0 +1,4 @@ +GIT=https://gitlab.redox-os.org/redox-os/orbutils.git +BINDIR=/ui/bin +CARGOFLAGS="--bin launcher -- -C lto" +DEPENDS="orbital" diff --git a/recipes/orbutils-orblogin/recipe.sh b/recipes/orbutils-orblogin/recipe.sh new file mode 100644 index 00000000..43aeddcd --- /dev/null +++ b/recipes/orbutils-orblogin/recipe.sh @@ -0,0 +1,4 @@ +GIT=https://gitlab.redox-os.org/redox-os/orbutils.git +BINDIR=/ui/bin +CARGOFLAGS="--bin orblogin -- -C lto" +DEPENDS="orbital" diff --git a/recipes/ptyd/recipe.sh b/recipes/ptyd/recipe.sh index affeb268..558bbf5d 100644 --- a/recipes/ptyd/recipe.sh +++ b/recipes/ptyd/recipe.sh @@ -1 +1,2 @@ GIT=https://gitlab.redox-os.org/redox-os/ptyd.git +CARGOFLAGS="--bin ptyd -- -C lto" diff --git a/recipes/randd/recipe.sh b/recipes/randd/recipe.sh index 37673148..a3e93aad 100644 --- a/recipes/randd/recipe.sh +++ b/recipes/randd/recipe.sh @@ -1 +1,2 @@ GIT=https://gitlab.redox-os.org/redox-os/randd.git +CARGOFLAGS="--bin randd -- -C lto" diff --git a/recipes/uutils/recipe.sh b/recipes/uutils/recipe.sh index 1782913a..67c7f51c 100644 --- a/recipes/uutils/recipe.sh +++ b/recipes/uutils/recipe.sh @@ -1,6 +1,6 @@ GIT=https://gitlab.redox-os.org/redox-os/uutils.git GIT_UPSTREAM=https://github.com/uutils/coreutils.git -CARGOFLAGS="--no-default-features --features redox" +CARGOFLAGS="--no-default-features --features redox --bin uutils -- -C lto" BINS=( base32 diff --git a/recipes/zerod/recipe.sh b/recipes/zerod/recipe.sh index a201dacf..5006bda6 100644 --- a/recipes/zerod/recipe.sh +++ b/recipes/zerod/recipe.sh @@ -1 +1,2 @@ GIT=https://gitlab.redox-os.org/redox-os/zerod.git +CARGOFLAGS="--bin zerod -- -C lto" From 8de4fea741e0c6a7e2f8e485b6784e6c9e549ac1 Mon Sep 17 00:00:00 2001 From: Robin Randhawa Date: Wed, 27 Feb 2019 15:52:04 +0000 Subject: [PATCH 0587/3180] userutils: Replace reference to x86_64-unknown-redox with $TARGET Unbreaks builds for AArch64. --- recipes/userutils/recipe.sh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/recipes/userutils/recipe.sh b/recipes/userutils/recipe.sh index 3c8640e0..4384373c 100644 --- a/recipes/userutils/recipe.sh +++ b/recipes/userutils/recipe.sh @@ -22,22 +22,22 @@ function recipe_stage { else build=release fi - + mkdir -p "$1/bin" - + for bin in "${BINS[@]}" do - cp -v "target/x86_64-unknown-redox/$build/$bin" "$1/bin" + cp -v "target/$TARGET/$build/$bin" "$1/bin" done - + cp -Rv "res" "$1/etc" - + ln -s id "$1/bin/whoami" chmod +s "$1/bin/passwd" chmod +s "$1/bin/sudo" chmod +s "$1/bin/su" - + docgen ../source ../stage/ref - + skip=1 } From 68786debc80a91bafefea1da17c3727d46d087da Mon Sep 17 00:00:00 2001 From: fabiao Date: Fri, 1 Mar 2019 15:57:56 +0100 Subject: [PATCH 0588/3180] added sdl2_gears demo --- recipes/freeciv/recipe.sh | 1 + recipes/sdl2_gears/gears.c | 359 +++++++++++++++++++++++++++++++++++ recipes/sdl2_gears/recipe.sh | 42 ++++ 3 files changed, 402 insertions(+) create mode 100644 recipes/sdl2_gears/gears.c create mode 100644 recipes/sdl2_gears/recipe.sh diff --git a/recipes/freeciv/recipe.sh b/recipes/freeciv/recipe.sh index 70765e96..2b5d4925 100644 --- a/recipes/freeciv/recipe.sh +++ b/recipes/freeciv/recipe.sh @@ -22,6 +22,7 @@ function recipe_build { --host="$HOST" \ --prefix='' \ --disable-server \ + --enable-ipv6=no \ --enable-client=sdl \ --enable-fcmp=cli \ --with-sdl-prefix="$sysroot" \ diff --git a/recipes/sdl2_gears/gears.c b/recipes/sdl2_gears/gears.c new file mode 100644 index 00000000..ffa67d08 --- /dev/null +++ b/recipes/sdl2_gears/gears.c @@ -0,0 +1,359 @@ +/* gears.c */ + +/* + * 3-D gear wheels. This program is in the public domain. + * + * Brian Paul + */ + +/* Conversion to GLUT by Mark J. Kilgard */ + +#include +#include +#include +#include +#include + +#ifndef M_PI +#define M_PI 3.14159265 +#endif + +/** + + Draw a gear wheel. You'll probably want to call this function when + building a display list since we do a lot of trig here. + + Input: inner_radius - radius of hole at center + outer_radius - radius at center of teeth + width - width of gear + teeth - number of teeth + tooth_depth - depth of tooth + + **/ + +static void +gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat width, + GLint teeth, GLfloat tooth_depth) +{ + GLint i; + GLfloat r0, r1, r2; + GLfloat angle, da; + GLfloat u, v, len; + + r0 = inner_radius; + r1 = outer_radius - tooth_depth / 2.0; + r2 = outer_radius + tooth_depth / 2.0; + + da = 2.0 * M_PI / teeth / 4.0; + + glShadeModel(GL_FLAT); + + glNormal3f(0.0, 0.0, 1.0); + + /* draw front face */ + glBegin(GL_QUAD_STRIP); + for (i = 0; i <= teeth; i++) + { + angle = i * 2.0 * M_PI / teeth; + glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); + glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); + glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); + glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); + } + glEnd(); + + /* draw front sides of teeth */ + glBegin(GL_QUADS); + da = 2.0 * M_PI / teeth / 4.0; + for (i = 0; i < teeth; i++) + { + angle = i * 2.0 * M_PI / teeth; + + glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); + glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); + glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5); + glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); + } + glEnd(); + + glNormal3f(0.0, 0.0, -1.0); + + /* draw back face */ + glBegin(GL_QUAD_STRIP); + for (i = 0; i <= teeth; i++) + { + angle = i * 2.0 * M_PI / teeth; + glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); + glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); + glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); + glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); + } + glEnd(); + + /* draw back sides of teeth */ + glBegin(GL_QUADS); + da = 2.0 * M_PI / teeth / 4.0; + for (i = 0; i < teeth; i++) + { + angle = i * 2.0 * M_PI / teeth; + + glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); + glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5); + glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); + glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); + } + glEnd(); + + /* draw outward faces of teeth */ + glBegin(GL_QUAD_STRIP); + for (i = 0; i < teeth; i++) + { + angle = i * 2.0 * M_PI / teeth; + + glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); + glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); + u = r2 * cos(angle + da) - r1 * cos(angle); + v = r2 * sin(angle + da) - r1 * sin(angle); + len = sqrt(u * u + v * v); + u /= len; + v /= len; + glNormal3f(v, -u, 0.0); + glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); + glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); + glNormal3f(cos(angle), sin(angle), 0.0); + glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5); + glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5); + u = r1 * cos(angle + 3 * da) - r2 * cos(angle + 2 * da); + v = r1 * sin(angle + 3 * da) - r2 * sin(angle + 2 * da); + glNormal3f(v, -u, 0.0); + glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); + glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); + glNormal3f(cos(angle), sin(angle), 0.0); + } + + glVertex3f(r1 * cos(0), r1 * sin(0), width * 0.5); + glVertex3f(r1 * cos(0), r1 * sin(0), -width * 0.5); + + glEnd(); + + glShadeModel(GL_SMOOTH); + + /* draw inside radius cylinder */ + glBegin(GL_QUAD_STRIP); + for (i = 0; i <= teeth; i++) + { + angle = i * 2.0 * M_PI / teeth; + + glNormal3f(-cos(angle), -sin(angle), 0.0); + glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); + glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); + } + glEnd(); +} + +static int width = 800; +static int height = 600; + +static SDL_Window *window = NULL; +static SDL_GLContext context = NULL; + +static GLfloat view_rotx = 20.0, view_roty = 30.0, view_rotz = 0.0; +static GLint gear1, gear2, gear3; +static GLfloat angle = 0.0; +static GLfloat delta = 2.0f; + +static void +draw(void) +{ + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix(); + glRotatef(view_rotx, 1.0, 0.0, 0.0); + glRotatef(view_roty, 0.0, 1.0, 0.0); + glRotatef(view_rotz, 0.0, 0.0, 1.0); + + glPushMatrix(); + glTranslatef(-3.0, -2.0, 0.0); + glRotatef(angle, 0.0, 0.0, 1.0); + glCallList(gear1); + glPopMatrix(); + + glPushMatrix(); + glTranslatef(3.1, -2.0, 0.0); + glRotatef(-2.0 * angle - 9.0, 0.0, 0.0, 1.0); + glCallList(gear2); + glPopMatrix(); + + glPushMatrix(); + glTranslatef(-3.1, 4.2, 0.0); + glRotatef(-2.0 * angle - 25.0, 0.0, 0.0, 1.0); + glCallList(gear3); + glPopMatrix(); + + glPopMatrix(); + + glFinish(); +} + +static void +idle(void) +{ + angle += delta; + if (angle > 360.0f) + angle -= 360.0f; + + draw(); + + SDL_GL_SwapWindow(window); +} + +/* new window size or exposure */ +static void +reshape(int width, int height) +{ + GLfloat h = (GLfloat)height / (GLfloat)width; + + glViewport(0, 0, (GLint)width, (GLint)height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-1.0, 1.0, -h, h, 5.0, 60.0); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glTranslatef(0.0, 0.0, -40.0); +} + +static void +init(void) +{ + static GLfloat pos[4] = + {5.0, 5.0, 10.0, 0.0}; + static GLfloat red[4] = + {0.8, 0.1, 0.0, 1.0}; + static GLfloat green[4] = + {0.0, 0.8, 0.2, 1.0}; + static GLfloat blue[4] = + {0.2, 0.2, 1.0, 1.0}; + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glEnable(GL_CULL_FACE); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + + /* make the gears */ + gear1 = glGenLists(1); + glNewList(gear1, GL_COMPILE); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red); + gear(1.0, 4.0, 1.0, 20, 0.7); + glEndList(); + + gear2 = glGenLists(1); + glNewList(gear2, GL_COMPILE); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green); + gear(0.5, 2.0, 2.0, 10, 0.7); + glEndList(); + + gear3 = glGenLists(1); + glNewList(gear3, GL_COMPILE); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue); + gear(1.3, 2.0, 0.5, 10, 0.7); + glEndList(); + + glEnable(GL_NORMALIZE); +} + +void CheckSDLError(int line) +{ + const char* error = SDL_GetError(); + if (error != "") + { + printf("SLD Error: %s\n", error); + + if (line != -1) + printf("\nLine: %d\n", line); + + SDL_ClearError(); + } +} + +int main(int argc, char *argv[]) +{ + printf("Initializing SDL\n"); + if (SDL_Init(SDL_INIT_VIDEO) < 0) + { + printf("Failed to init SDL\n"); + CheckSDLError(__LINE__); + return -1; + } + + printf("Creating SDL window\n"); + window = SDL_CreateWindow( + "Gears", + -1, + -1, + width, + height, + SDL_WINDOW_OPENGL + ); + if (window == NULL) + { + printf("Unable to create window\n"); + CheckSDLError(__LINE__); + return -1; + } + printf("SDL window created %p\n", window); + + printf("Creating SDL GL context\n"); + context = SDL_GL_CreateContext(window); + if (context == NULL) + { + printf("Unable to create SDL GL context\n"); + CheckSDLError(__LINE__); + return -1; + } + printf("SDL GL context created %p\n", context); + + init(); + + reshape(width, height); + + int running = 1; + SDL_Event event; + while (running) + { + idle(); + + while (SDL_PollEvent(&event)) + { + if (event.type == SDL_QUIT) + running = 0; + + if (event.type == SDL_KEYDOWN) + { + switch (event.key.keysym.sym) + { + case SDLK_a: + delta += 1.0f; + break; + case SDLK_s: + delta -= 1.0f; + break; + case SDLK_ESCAPE: + running = 0; + break; + default: + break; + } + } + } + } + + SDL_GL_DeleteContext(context); + + SDL_DestroyWindow(window); + + // Shutdown SDL 2 + SDL_Quit(); + + return 0; +} diff --git a/recipes/sdl2_gears/recipe.sh b/recipes/sdl2_gears/recipe.sh new file mode 100644 index 00000000..3a7c139a --- /dev/null +++ b/recipes/sdl2_gears/recipe.sh @@ -0,0 +1,42 @@ +BUILD_DEPENDS=(sdl2 liborbital llvm mesa mesa_glu zlib) + +function recipe_version { + printf "1.0.0" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_prepare { + rm -rf source + mkdir source + cp gears.c source +} + +function recipe_build { + sysroot="$(realpath ../sysroot)" + set -x + "${CXX}" -O2 -I "$sysroot/include" -L "$sysroot/lib" gears.c -o sdl2_gears -lSDL2 -lorbital $("${PKG_CONFIG}" --libs glu) -lglapi -lz + set +x + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + mkdir -pv "$dest/bin" + cp -v "sdl2_gears" "$dest/bin/sdl2_gears" + skip=1 +} From b35cccd815beac750b64c4431d428090c7f7f82e Mon Sep 17 00:00:00 2001 From: fabiao Date: Fri, 1 Mar 2019 16:11:41 +0100 Subject: [PATCH 0589/3180] add sdl2 recipe targeting temporary sdl2 sources --- recipes/sdl2/recipe.sh | 6 +- recipes/sdl2/redox.patch | 919 --------------------------------------- 2 files changed, 3 insertions(+), 922 deletions(-) delete mode 100644 recipes/sdl2/redox.patch diff --git a/recipes/sdl2/recipe.sh b/recipes/sdl2/recipe.sh index cbb8f567..a0875433 100644 --- a/recipes/sdl2/recipe.sh +++ b/recipes/sdl2/recipe.sh @@ -1,6 +1,6 @@ VERSION=2.0.9 -TAR=https://www.libsdl.org/release/SDL2-$VERSION.tar.gz -BUILD_DEPENDS=(liborbital) +GIT=https://gitlab.redox-os.org/fabiao/sdl2-src.git +BUILD_DEPENDS=(liborbital mesa) function recipe_version { echo "$VERSION" @@ -26,7 +26,7 @@ function recipe_build { --disable-video-x11 \ --disable-loadso \ --disable-sdl-dlopen \ - --disable-threads \ + --enable-threads \ --enable-audio \ --enable-dummyaudio \ --enable-video-orbital \ diff --git a/recipes/sdl2/redox.patch b/recipes/sdl2/redox.patch deleted file mode 100644 index d29faa59..00000000 --- a/recipes/sdl2/redox.patch +++ /dev/null @@ -1,919 +0,0 @@ -diff -ruwN source/configure.in source-new/configure.in ---- source/configure.in 2018-10-31 09:07:22.000000000 -0600 -+++ source-new/configure.in 2019-01-06 17:29:39.198302773 -0700 -@@ -1222,6 +1222,18 @@ - fi - } - -+dnl Set up the Redox Audio driver -+CheckRedoxAudio() -+{ -+ AC_ARG_ENABLE(redoxaudio, -+AC_HELP_STRING([--enable-redoxaudio], [support the redox audio driver [[default=yes]]]), -+ , enable_redoxaudio=yes) -+ if test x$enable_audio = xyes -a x$enable_redoxaudio = xyes; then -+ AC_DEFINE(SDL_AUDIO_DRIVER_REDOX) -+ SOURCES="$SOURCES $srcdir/src/audio/redox/*.c" -+ fi -+} -+ - dnl rcg07142001 See if the user wants the disk writer audio driver... - CheckDiskAudio() - { -@@ -2282,6 +2294,20 @@ - fi - } - -+dnl Set up the Orbital video driver. -+CheckOrbitalVideo() -+{ -+ AC_ARG_ENABLE(video-orbital, -+AC_HELP_STRING([--enable-video-orbital], [use orbital video driver [[default=yes]]]), -+ , enable_video_orbital=yes) -+ if test x$enable_video_orbital = xyes; then -+ AC_DEFINE(SDL_VIDEO_DRIVER_ORBITAL) -+ SOURCES="$SOURCES $srcdir/src/video/orbital/*.c" -+ SDL_LIBS="$SDL_LIBS -Wl,--gc-sections -lorbital" -+ have_video=yes -+ fi -+} -+ - dnl Set up the QNX video driver if enabled - CheckQNXVideo() - { -@@ -2789,6 +2815,10 @@ - AC_HELP_STRING([--enable-pthread-sem], [use pthread semaphores [[default=yes]]]), - , enable_pthread_sem=yes) - case "$host" in -+ *-*-redox*) -+ pthread_cflags="-D_REENTRANT" -+ pthread_lib="-lpthread" -+ ;; - *-*-android*) - pthread_cflags="-D_REENTRANT -D_THREAD_SAFE" - pthread_lib="" -@@ -3362,7 +3392,7 @@ - - dnl Set up the configuration based on the host platform! - case "$host" in -- *-*-linux*|*-*-uclinux*|*-*-gnu*|*-*-k*bsd*-gnu|*-*-bsdi*|*-*-freebsd*|*-*-dragonfly*|*-*-netbsd*|*-*-openbsd*|*-*-sysv5*|*-*-solaris*|*-*-hpux*|*-*-aix*|*-*-minix*|*-*-nto*) -+ *-*-linux*|*-*-uclinux*|*-*-redox*|*-*-gnu*|*-*-k*bsd*-gnu|*-*-bsdi*|*-*-freebsd*|*-*-dragonfly*|*-*-netbsd*|*-*-openbsd*|*-*-sysv5*|*-*-solaris*|*-*-hpux*|*-*-aix*|*-*-minix*|*-*-nto*) - case "$host" in - *-*-android*) - # Android -@@ -3383,6 +3413,7 @@ - ;; - *-*-linux*) ARCH=linux ;; - *-*-uclinux*) ARCH=linux ;; -+ *-*-redox*) ARCH=redox ;; - *-*-kfreebsd*-gnu) ARCH=kfreebsd-gnu ;; - *-*-knetbsd*-gnu) ARCH=knetbsd-gnu ;; - *-*-kopenbsd*-gnu) ARCH=kopenbsd-gnu ;; -@@ -3404,6 +3435,8 @@ - CheckVisibilityHidden - CheckDeclarationAfterStatement - CheckDummyVideo -+ CheckOrbitalVideo -+ CheckRedoxAudio - CheckDiskAudio - CheckDummyAudio - CheckDLOPEN -diff -ruwN source/include/SDL_config.h.in source-new/include/SDL_config.h.in ---- source/include/SDL_config.h.in 2018-10-31 09:07:22.000000000 -0600 -+++ source-new/include/SDL_config.h.in 2018-12-31 14:01:08.736950947 -0700 -@@ -263,6 +263,7 @@ - #undef SDL_AUDIO_DRIVER_PULSEAUDIO - #undef SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC - #undef SDL_AUDIO_DRIVER_QSA -+#undef SDL_AUDIO_DRIVER_REDOX - #undef SDL_AUDIO_DRIVER_SNDIO - #undef SDL_AUDIO_DRIVER_SNDIO_DYNAMIC - #undef SDL_AUDIO_DRIVER_SUNAUDIO -@@ -320,6 +321,7 @@ - #undef SDL_VIDEO_DRIVER_DIRECTFB - #undef SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC - #undef SDL_VIDEO_DRIVER_DUMMY -+#undef SDL_VIDEO_DRIVER_ORBITAL - #undef SDL_VIDEO_DRIVER_WINDOWS - #undef SDL_VIDEO_DRIVER_WAYLAND - #undef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH -diff -ruwN source/src/audio/redox/SDL_redoxaudio.c source-new/src/audio/redox/SDL_redoxaudio.c ---- source/src/audio/redox/SDL_redoxaudio.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/audio/redox/SDL_redoxaudio.c 2018-12-31 14:01:08.736950947 -0700 -@@ -0,0 +1,169 @@ -+/* -+ SDL - Simple DirectMedia Layer -+ Copyright (C) 1997-2012 Sam Lantinga -+ -+ This library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ This library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with this library; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ -+ Sam Lantinga -+ slouken@libsdl.org -+ -+ This file written by Ryan C. Gordon (icculus@icculus.org) -+*/ -+#include "SDL_config.h" -+ -+/* Output raw audio data to a file. */ -+ -+#include -+#include -+#include -+ -+#include "SDL_timer.h" -+#include "SDL_audio.h" -+#include "../SDL_audiomem.h" -+#include "../SDL_audio_c.h" -+#include "../SDL_audiodev_c.h" -+#include "SDL_redoxaudio.h" -+ -+/* The tag name used by REDOX audio */ -+#define REDOXAUD_DRIVER_NAME "redox" -+ -+/* Audio driver functions */ -+static int REDOXAUD_OpenAudio(_THIS, SDL_AudioSpec *spec); -+static void REDOXAUD_WaitAudio(_THIS); -+static void REDOXAUD_PlayAudio(_THIS); -+static Uint8 *REDOXAUD_GetAudioBuf(_THIS); -+static void REDOXAUD_CloseAudio(_THIS); -+ -+/* Audio driver bootstrap functions */ -+static int REDOXAUD_Available(void) -+{ -+ return(1); -+} -+ -+static void REDOXAUD_DeleteDevice(SDL_AudioDevice *device) -+{ -+ SDL_free(device->hidden); -+ SDL_free(device); -+} -+ -+static SDL_AudioDevice *REDOXAUD_CreateDevice(int devindex) -+{ -+ SDL_AudioDevice *this; -+ const char *envr; -+ -+ /* Initialize all variables that we clean on shutdown */ -+ this = (SDL_AudioDevice *)SDL_malloc(sizeof(SDL_AudioDevice)); -+ if ( this ) { -+ SDL_memset(this, 0, (sizeof *this)); -+ this->hidden = (struct SDL_PrivateAudioData *) -+ SDL_malloc((sizeof *this->hidden)); -+ } -+ if ( (this == NULL) || (this->hidden == NULL) ) { -+ SDL_OutOfMemory(); -+ if ( this ) { -+ SDL_free(this); -+ } -+ return(0); -+ } -+ SDL_memset(this->hidden, 0, (sizeof *this->hidden)); -+ -+ this->hidden->output = -1; -+ -+ /* Set the function pointers */ -+ this->OpenAudio = REDOXAUD_OpenAudio; -+ this->WaitAudio = REDOXAUD_WaitAudio; -+ this->PlayAudio = REDOXAUD_PlayAudio; -+ this->GetAudioBuf = REDOXAUD_GetAudioBuf; -+ this->CloseAudio = REDOXAUD_CloseAudio; -+ -+ this->free = REDOXAUD_DeleteDevice; -+ -+ return this; -+} -+ -+AudioBootStrap REDOXAUD_bootstrap = { -+ REDOXAUD_DRIVER_NAME, "Redox audio", -+ REDOXAUD_Available, REDOXAUD_CreateDevice -+}; -+ -+/* This function waits until it is possible to write a full sound buffer */ -+static void REDOXAUD_WaitAudio(_THIS) -+{} -+ -+static void REDOXAUD_PlayAudio(_THIS) -+{ -+ int written; -+ -+ /* Write the audio data */ -+ written = write(this->hidden->output, -+ this->hidden->mixbuf, -+ this->hidden->mixlen); -+ -+ /* If we couldn't write, assume fatal error for now */ -+ if ( (Uint32)written != this->hidden->mixlen ) { -+ this->enabled = 0; -+ } -+#ifdef DEBUG_AUDIO -+ fprintf(stderr, "Wrote %d bytes of audio data\n", written); -+#endif -+} -+ -+static Uint8 *REDOXAUD_GetAudioBuf(_THIS) -+{ -+ return(this->hidden->mixbuf); -+} -+ -+static void REDOXAUD_CloseAudio(_THIS) -+{ -+ if ( this->hidden->mixbuf != NULL ) { -+ SDL_FreeAudioMem(this->hidden->mixbuf); -+ this->hidden->mixbuf = NULL; -+ } -+ if ( this->hidden->output >= 0 ) { -+ close(this->hidden->output); -+ this->hidden->output = -1; -+ } -+} -+ -+static int REDOXAUD_OpenAudio(_THIS, SDL_AudioSpec *spec) -+{ -+ fprintf(stderr, "WARNING: You are using the SDL redox audio driver!\n"); -+ -+ /* Open the audio device */ -+ this->hidden->output = open("audio:", O_WRONLY); -+ if ( this->hidden->output < 0 ) { -+ perror("failed to open audio:"); -+ return(-1); -+ } -+ -+ spec->freq = 44100; -+ spec->format = AUDIO_S16; -+ spec->channels = 2; -+ SDL_CalculateAudioSpec(spec); -+ -+ /* Allocate mixing buffer */ -+ this->hidden->mixlen = spec->size; -+ this->hidden->mixbuf = (Uint8 *) SDL_AllocAudioMem(this->hidden->mixlen); -+ if ( this->hidden->mixbuf == NULL ) { -+ perror("failed to allocate audio memory"); -+ return(-1); -+ } -+ SDL_memset(this->hidden->mixbuf, spec->silence, spec->size); -+ -+ fprintf(stderr, "openaudio success\n"); -+ -+ /* We're ready to rock and roll. :-) */ -+ return(0); -+} -diff -ruwN source/src/audio/redox/SDL_redoxaudio.h source-new/src/audio/redox/SDL_redoxaudio.h ---- source/src/audio/redox/SDL_redoxaudio.h 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/audio/redox/SDL_redoxaudio.h 2018-12-31 14:01:08.736950947 -0700 -@@ -0,0 +1,40 @@ -+/* -+ SDL - Simple DirectMedia Layer -+ Copyright (C) 1997-2012 Sam Lantinga -+ -+ This library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ This library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with this library; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ -+ Sam Lantinga -+ slouken@libsdl.org -+*/ -+#include "SDL_config.h" -+ -+#ifndef _SDL_redoxaudio_h -+#define _SDL_redoxaudio_h -+ -+#include "SDL_rwops.h" -+#include "../SDL_sysaudio.h" -+ -+/* Hidden "this" pointer for the video functions */ -+#define _THIS SDL_AudioDevice *this -+ -+struct SDL_PrivateAudioData { -+ /* The file descriptor for the audio device */ -+ int output; -+ Uint8 *mixbuf; -+ Uint32 mixlen; -+}; -+ -+#endif /* _SDL_redoxaudio_h */ -diff -ruwN source/src/audio/SDL_audio.c source-new/src/audio/SDL_audio.c ---- source/src/audio/SDL_audio.c 2018-10-31 09:07:22.000000000 -0600 -+++ source-new/src/audio/SDL_audio.c 2018-12-31 14:01:08.736950947 -0700 -@@ -35,6 +35,9 @@ - - /* Available audio drivers */ - static const AudioBootStrap *const bootstrap[] = { -+#if SDL_AUDIO_DRIVER_REDOX -+ &REDOXAUD_bootstrap, -+#endif - #if SDL_AUDIO_DRIVER_PULSEAUDIO - &PULSEAUDIO_bootstrap, - #endif -diff -ruwN source/src/audio/SDL_sysaudio.h source-new/src/audio/SDL_sysaudio.h ---- source/src/audio/SDL_sysaudio.h 2018-10-31 09:07:22.000000000 -0600 -+++ source-new/src/audio/SDL_sysaudio.h 2018-12-31 14:01:08.736950947 -0700 -@@ -183,6 +183,7 @@ - } AudioBootStrap; - - /* Not all of these are available in a given build. Use #ifdefs, etc. */ -+extern AudioBootStrap REDOXAUD_bootstrap; - extern AudioBootStrap PULSEAUDIO_bootstrap; - extern AudioBootStrap ALSA_bootstrap; - extern AudioBootStrap JACK_bootstrap; -diff -ruwN source/src/dynapi/SDL_dynapi.h source-new/src/dynapi/SDL_dynapi.h ---- source/src/dynapi/SDL_dynapi.h 2018-10-31 09:07:22.000000000 -0600 -+++ source-new/src/dynapi/SDL_dynapi.h 2018-12-31 14:01:08.736950947 -0700 -@@ -55,6 +55,8 @@ - #define SDL_DYNAMIC_API 0 - #elif defined(__clang_analyzer__) - #define SDL_DYNAMIC_API 0 /* Turn off for static analysis, so reports are more clear. */ -+#elif defined(__redox__) -+#define SDL_DYNAMIC_API 0 - #endif - - /* everyone else. This is where we turn on the API if nothing forced it off. */ -diff -ruwN source/src/thread/pthread/SDL_systhread.c source-new/src/thread/pthread/SDL_systhread.c ---- source/src/thread/pthread/SDL_systhread.c 2018-10-31 09:07:22.000000000 -0600 -+++ source-new/src/thread/pthread/SDL_systhread.c 2018-12-31 14:01:08.740951021 -0700 -@@ -165,7 +165,11 @@ - for (i = 0; sig_list[i]; ++i) { - sigaddset(&mask, sig_list[i]); - } -+ #if defined(__redox__) -+ sigprocmask(SIG_BLOCK, &mask, 0); -+ #else - pthread_sigmask(SIG_BLOCK, &mask, 0); -+ #endif - #endif /* !__NACL__ */ - - -diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orbital/SDL_orbitalevents.c ---- source/src/video/orbital/SDL_orbitalevents.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalevents.c 2018-12-31 14:01:08.740951021 -0700 -@@ -0,0 +1,192 @@ -+/* -+ SDL - Simple DirectMedia Layer -+ Copyright (C) 1997-2012 Sam Lantinga -+ -+ This library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ This library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with this library; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ -+ Sam Lantinga -+ slouken@libsdl.org -+*/ -+#include "SDL_config.h" -+ -+#include "SDL.h" -+#include "../../events/SDL_sysevents.h" -+#include "../../events/SDL_events_c.h" -+ -+#include -+#include "SDL_orbitalvideo.h" -+#include "SDL_orbitalevents_c.h" -+ -+#include -+ -+static SDL_Keycode keymap[128]; -+ -+/* Static variables so only changes are reported */ -+static bool last_button_left = false; -+static bool last_button_middle = false; -+static bool last_button_right = false; -+ -+void ORBITAL_PumpEvents(_THIS) -+{ -+ SDL_Keysym keysym; -+ -+ SDL_Mouse *mouse = SDL_GetMouse(); -+ -+ void* event_iter = orb_window_events(this->hidden->window); -+ OrbEventOption oeo = orb_events_next(event_iter); -+ -+ while (oeo.tag != OrbEventOption_None) { -+ switch (oeo.tag) { -+ case OrbEventOption_Key: -+ keysym.scancode = oeo.key.scancode; -+ keysym.sym = keymap[oeo.key.scancode]; -+ keysym.mod = KMOD_NONE; -+ -+ SDL_SendKeyboardKey(oeo.key.pressed ? SDL_PRESSED : SDL_RELEASED, &keysym); -+ break; -+ case OrbEventOption_Mouse: -+ SDL_SendMouseMotion(mouse->focus, mouse->mouseID, SDL_FALSE, oeo.mouse.x, oeo.mouse.y); -+ break; -+ case OrbEventOption_Button: -+ if (oeo.button.left ^ last_button_left) -+ SDL_SendMouseButton(mouse->focus, mouse->mouseID, oeo.button.left ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_LEFT, 0, 0); -+ if (oeo.button.middle ^ last_button_middle) -+ SDL_SendMouseButton(mouse->focus, mouse->mouseID, oeo.button.middle ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_MIDDLE, 0, 0); -+ if (oeo.button.right ^ last_button_right) -+ SDL_SendMouseButton(mouse->focus, mouse->mouseID, oeo.button.right ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_RIGHT, 0, 0); -+ -+ last_button_left = oeo.button.left; -+ last_button_middle = oeo.button.middle; -+ last_button_right = oeo.button.right; -+ break; -+ case OrbEventOption_Scroll: -+ SDL_SendMouseWheel(mouse->focus, mouse->mouseID, oeo.scroll.x, oeo.scroll.y, SDL_MOUSEWHEEL_NORMAL); -+ break; -+ case OrbEventOption_Quit: -+ SDL_PrivateQuit(); -+ break; -+ case OrbEventOption_Focus: -+ SDL_PrivateAppActive(oeo.focus.focused, SDL_APPMOUSEFOCUS); -+ break; -+ case OrbEventOption_Move: -+ // oeo.move.x, oeo.move.y -+ break; -+ case OrbEventOption_Resize: -+ SDL_PrivateResize(oeo.resize.width, oeo.resize.height); -+ break; -+ case OrbEventOption_Screen: -+ // oeo.screen.width, oeo.screen.height -+ break; -+ case OrbEventOption_Unknown: -+ // oeo.unknown.code, oeo.unknown.a, oeo.unknown.b -+ break; -+ default: -+ break; -+ } -+ -+ oeo = orb_events_next(event_iter); -+ } -+ -+ orb_events_destroy(event_iter); -+} -+ -+void ORBITAL_InitOSKeymap(_THIS) -+{ -+ int i; -+ for ( i = 0; i < SDL_arraysize(keymap); ++i ) -+ keymap[i] = SDLK_UNKNOWN; -+ -+ keymap[ORB_KEY_ESC] = SDLK_ESCAPE; -+ keymap[ORB_KEY_1] = SDLK_1; -+ keymap[ORB_KEY_2] = SDLK_2; -+ keymap[ORB_KEY_3] = SDLK_3; -+ keymap[ORB_KEY_4] = SDLK_4; -+ keymap[ORB_KEY_5] = SDLK_5; -+ keymap[ORB_KEY_6] = SDLK_6; -+ keymap[ORB_KEY_7] = SDLK_7; -+ keymap[ORB_KEY_8] = SDLK_8; -+ keymap[ORB_KEY_9] = SDLK_9; -+ keymap[ORB_KEY_0] = SDLK_0; -+ keymap[ORB_KEY_MINUS] = SDLK_MINUS; -+ keymap[ORB_KEY_EQUALS] = SDLK_EQUALS; -+ keymap[ORB_KEY_BKSP] = SDLK_BACKSPACE; -+ keymap[ORB_KEY_TAB] = SDLK_TAB; -+ keymap[ORB_KEY_Q] = SDLK_q; -+ keymap[ORB_KEY_W] = SDLK_w; -+ keymap[ORB_KEY_E] = SDLK_e; -+ keymap[ORB_KEY_R] = SDLK_r; -+ keymap[ORB_KEY_T] = SDLK_t; -+ keymap[ORB_KEY_Y] = SDLK_y; -+ keymap[ORB_KEY_U] = SDLK_u; -+ keymap[ORB_KEY_I] = SDLK_i; -+ keymap[ORB_KEY_O] = SDLK_o; -+ keymap[ORB_KEY_P] = SDLK_p; -+ keymap[ORB_KEY_BRACE_OPEN] = SDLK_LEFTBRACKET; -+ keymap[ORB_KEY_BRACE_CLOSE] = SDLK_RIGHTBRACKET; -+ keymap[ORB_KEY_ENTER] = SDLK_RETURN; -+ keymap[ORB_KEY_CTRL] = SDLK_LCTRL; -+ keymap[ORB_KEY_A] = SDLK_a; -+ keymap[ORB_KEY_S] = SDLK_s; -+ keymap[ORB_KEY_D] = SDLK_d; -+ keymap[ORB_KEY_F] = SDLK_f; -+ keymap[ORB_KEY_G] = SDLK_g; -+ keymap[ORB_KEY_H] = SDLK_h; -+ keymap[ORB_KEY_J] = SDLK_j; -+ keymap[ORB_KEY_K] = SDLK_k; -+ keymap[ORB_KEY_L] = SDLK_l; -+ keymap[ORB_KEY_SEMICOLON] = SDLK_SEMICOLON; -+ keymap[ORB_KEY_QUOTE] = SDLK_QUOTE; -+ keymap[ORB_KEY_TICK] = SDLK_BACKQUOTE; -+ keymap[ORB_KEY_LEFT_SHIFT] = SDLK_LSHIFT; -+ keymap[ORB_KEY_RIGHT_SHIFT] = SDLK_RSHIFT; -+ keymap[ORB_KEY_BACKSLASH] = SDLK_BACKSLASH; -+ keymap[ORB_KEY_Z] = SDLK_z; -+ keymap[ORB_KEY_X] = SDLK_x; -+ keymap[ORB_KEY_C] = SDLK_c; -+ keymap[ORB_KEY_V] = SDLK_v; -+ keymap[ORB_KEY_B] = SDLK_b; -+ keymap[ORB_KEY_N] = SDLK_n; -+ keymap[ORB_KEY_M] = SDLK_m; -+ keymap[ORB_KEY_COMMA] = SDLK_COMMA; -+ keymap[ORB_KEY_PERIOD] = SDLK_PERIOD; -+ keymap[ORB_KEY_SLASH] = SDLK_SLASH; -+ keymap[ORB_KEY_ALT] = SDLK_LALT; -+ keymap[ORB_KEY_SPACE] = SDLK_SPACE; -+ keymap[ORB_KEY_CAPS] = SDLK_CAPSLOCK; -+ keymap[ORB_KEY_F1] = SDLK_F1; -+ keymap[ORB_KEY_F2] = SDLK_F2; -+ keymap[ORB_KEY_F3] = SDLK_F3; -+ keymap[ORB_KEY_F4] = SDLK_F4; -+ keymap[ORB_KEY_F5] = SDLK_F5; -+ keymap[ORB_KEY_F6] = SDLK_F6; -+ keymap[ORB_KEY_F7] = SDLK_F7; -+ keymap[ORB_KEY_F8] = SDLK_F8; -+ keymap[ORB_KEY_F9] = SDLK_F9; -+ keymap[ORB_KEY_F10] = SDLK_F10; -+ keymap[ORB_KEY_F11] = SDLK_F11; -+ keymap[ORB_KEY_F12] = SDLK_F12; -+ keymap[ORB_KEY_HOME] = SDLK_HOME; -+ keymap[ORB_KEY_UP] = SDLK_UP; -+ keymap[ORB_KEY_PGUP] = SDLK_PAGEUP; -+ keymap[ORB_KEY_LEFT] = SDLK_LEFT; -+ keymap[ORB_KEY_RIGHT] = SDLK_RIGHT; -+ keymap[ORB_KEY_END] = SDLK_END; -+ keymap[ORB_KEY_DOWN] = SDLK_DOWN; -+ keymap[ORB_KEY_PGDN] = SDLK_PAGEDOWN; -+ keymap[ORB_KEY_INSERT] = SDLK_INSERT; -+ keymap[ORB_KEY_DEL] = SDLK_DELETE; -+} -+ -+/* end of SDL_orbitalevents.c ... */ -diff -ruwN source/src/video/orbital/SDL_orbitalevents_c.h source-new/src/video/orbital/SDL_orbitalevents_c.h ---- source/src/video/orbital/SDL_orbitalevents_c.h 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalevents_c.h 2018-12-31 14:01:08.740951021 -0700 -@@ -0,0 +1,32 @@ -+/* -+ SDL - Simple DirectMedia Layer -+ Copyright (C) 1997-2012 Sam Lantinga -+ -+ This library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ This library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with this library; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ -+ Sam Lantinga -+ slouken@libsdl.org -+*/ -+#include "SDL_config.h" -+ -+#include "SDL_orbitalvideo.h" -+ -+/* Variables and functions exported by SDL_sysevents.c to other parts -+ of the native video subsystem (SDL_sysvideo.c) -+*/ -+extern void ORBITAL_InitOSKeymap(_THIS); -+extern void ORBITAL_PumpEvents(_THIS); -+ -+/* end of SDL_orbitalevents_c.h ... */ -diff -ruwN source/src/video/orbital/SDL_orbitalmouse.c source-new/src/video/orbital/SDL_orbitalmouse.c ---- source/src/video/orbital/SDL_orbitalmouse.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalmouse.c 2018-12-31 14:01:08.740951021 -0700 -@@ -0,0 +1,33 @@ -+/* -+ SDL - Simple DirectMedia Layer -+ Copyright (C) 1997-2012 Sam Lantinga -+ -+ This library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ This library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with this library; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ -+ Sam Lantinga -+ slouken@libsdl.org -+*/ -+#include "SDL_config.h" -+ -+#include "SDL_mouse.h" -+#include "../../events/SDL_events_c.h" -+ -+#include "SDL_orbitalmouse_c.h" -+ -+ -+/* The implementation dependent data for the window manager cursor */ -+struct WMcursor { -+ int unused; -+}; -diff -ruwN source/src/video/orbital/SDL_orbitalmouse_c.h source-new/src/video/orbital/SDL_orbitalmouse_c.h ---- source/src/video/orbital/SDL_orbitalmouse_c.h 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalmouse_c.h 2018-12-31 14:01:08.740951021 -0700 -@@ -0,0 +1,26 @@ -+/* -+ SDL - Simple DirectMedia Layer -+ Copyright (C) 1997-2012 Sam Lantinga -+ -+ This library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ This library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with this library; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ -+ Sam Lantinga -+ slouken@libsdl.org -+*/ -+#include "SDL_config.h" -+ -+#include "SDL_orbitalvideo.h" -+ -+/* Functions to be exported */ -diff -ruwN source/src/video/orbital/SDL_orbitalvideo.c source-new/src/video/orbital/SDL_orbitalvideo.c ---- source/src/video/orbital/SDL_orbitalvideo.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalvideo.c 2018-12-31 14:01:08.740951021 -0700 -@@ -0,0 +1,182 @@ -+/* -+ SDL - Simple DirectMedia Layer -+ Copyright (C) 1997-2012 Sam Lantinga -+ -+ This library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ This library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with this library; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ -+ Sam Lantinga -+ slouken@libsdl.org -+*/ -+#include "SDL_config.h" -+ -+/* Orbital SDL video driver implementation -+ * -+ * Initial work by Ryan C. Gordon (icculus@icculus.org). A good portion -+ * of this was cut-and-pasted from Stephane Peter's work in the AAlib -+ * SDL video driver. Renamed to "DUMMY" by Sam Lantinga. -+ * Repurposed to ORBITAL by Jeremy Soller. -+ */ -+ -+#include "SDL_video.h" -+#include "SDL_mouse.h" -+#include "../SDL_sysvideo.h" -+#include "../SDL_pixels_c.h" -+#include "../../events/SDL_events_c.h" -+ -+#include -+#include "SDL_orbitalvideo.h" -+#include "SDL_orbitalevents_c.h" -+#include "SDL_orbitalmouse_c.h" -+ -+#include -+#include -+#include -+#include -+ -+#define ORBITALVID_DRIVER_NAME "orbital" -+ -+/* Initialization/Query functions */ -+static int ORBITAL_VideoInit(_THIS); -+static void ORBITAL_VideoQuit(_THIS); -+ -+/* ORBITAL driver bootstrap functions */ -+ -+static int ORBITAL_Available(void) -+{ -+ return(1); -+} -+ -+static void ORBITAL_DeleteDevice(SDL_VideoDevice *device) -+{ -+ SDL_free(device->hidden); -+ SDL_free(device); -+} -+ -+static SDL_VideoDevice *ORBITAL_CreateDevice(int devindex) -+{ -+ SDL_VideoDevice *device; -+ -+ /* Initialize all variables that we clean on shutdown */ -+ device = (SDL_VideoDevice *)SDL_malloc(sizeof(SDL_VideoDevice)); -+ if ( device ) { -+ SDL_memset(device, 0, (sizeof *device)); -+ device->hidden = (struct SDL_PrivateVideoData *) -+ SDL_malloc((sizeof *device->hidden)); -+ } -+ if ( (device == NULL) || (device->hidden == NULL) ) { -+ SDL_OutOfMemory(); -+ if ( device ) { -+ SDL_free(device); -+ } -+ return(0); -+ } -+ SDL_memset(device->hidden, 0, (sizeof *device->hidden)); -+ -+ /* Set the function pointers */ -+ device->VideoInit = ORBITAL_VideoInit; -+ device->VideoQuit = ORBITAL_VideoQuit; -+ device->InitOSKeymap = ORBITAL_InitOSKeymap; -+ device->PumpEvents = ORBITAL_PumpEvents; -+ -+ device->free = ORBITAL_DeleteDevice; -+ -+ return device; -+} -+ -+VideoBootStrap ORBITAL_bootstrap = { -+ ORBITALVID_DRIVER_NAME, "SDL orbital video driver", -+ ORBITAL_Available, ORBITAL_CreateDevice -+}; -+ -+ -+int ORBITAL_VideoInit(_THIS) -+{ -+ fprintf(stderr, "WARNING: You are using the SDL orbital video driver!\n"); -+ -+ /* We're done! */ -+ return(0); -+} -+ -+/* Note: If we are terminated, this could be called in the middle of -+ another SDL video routine -- notably UpdateRects. -+*/ -+void ORBITAL_VideoQuit(_THIS) -+{ -+ if (this->hidden->window) { -+ orb_window_destroy(this->hidden->window); -+ this->hidden->window = NULL; -+ this->screen->pixels = NULL; -+ } -+} -+ -+#if 0 -+SDL_Surface *ORBITAL_SetVideoMode(_THIS, SDL_Surface *current, -+ int width, int height, int bpp, Uint32 flags) -+{ -+ if ( bpp != 32 ) { -+ SDL_SetError("Unsupported color depth - must use 32-bits per pixel"); -+ return(NULL); -+ } -+ -+ if (this->hidden->window) { -+ orb_window_set_size(this->hidden->window, width, height); -+ } else { -+ uint32_t orb_flags = ORB_WINDOW_ASYNC; -+ if (flags & SDL_RESIZABLE) -+ orb_flags |= ORB_WINDOW_RESIZABLE; -+ -+ this->hidden->window = orb_window_new_flags(-1, -1, width, height, "SDL", orb_flags); -+ if (!this->hidden->window) { -+ SDL_SetError("Couldn't create window for requested mode"); -+ return(NULL); -+ } -+ } -+ -+ fprintf(stderr, "Setting mode %dx%d@%d\n", width, height, bpp); -+ -+ /* Allocate the new pixel format for the screen */ -+ if ( ! SDL_ReallocFormat(current, bpp, 0x00FF0000, 0x0000FF00, 0x000000FF, 0xFF000000) ) { -+ orb_window_destroy(this->hidden->window); -+ this->hidden->window = NULL; -+ -+ SDL_SetError("Couldn't allocate new pixel format for requested mode"); -+ return(NULL); -+ } -+ -+ /* Set up the new mode framebuffer */ -+ current->flags = flags /*& SDL_FULLSCREEN*/; -+ current->w = width; -+ current->h = height; -+ current->pitch = width * (bpp / 8); -+ current->pixels = orb_window_data(this->hidden->window); -+ -+ /* We're done */ -+ return(current); -+} -+ -+static void ORBITAL_SetCaption(_THIS, const char *title, const char *icon) -+{ -+ if (this->hidden->window) -+ orb_window_set_title(this->hidden->window, title); -+} -+ -+static void ORBITAL_UpdateRects(_THIS, int numrects, SDL_Rect *rects) -+{ -+ if (this->hidden->window) { -+ SDL_SetAlphaChannel(this->screen, SDL_ALPHA_OPAQUE); -+ orb_window_sync(this->hidden->window); -+ } -+} -+#endif -diff -ruwN source/src/video/orbital/SDL_orbitalvideo.h source-new/src/video/orbital/SDL_orbitalvideo.h ---- source/src/video/orbital/SDL_orbitalvideo.h 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalvideo.h 2018-12-31 14:01:08.740951021 -0700 -@@ -0,0 +1,39 @@ -+/* -+ SDL - Simple DirectMedia Layer -+ Copyright (C) 1997-2012 Sam Lantinga -+ -+ This library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ This library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with this library; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ -+ Sam Lantinga -+ slouken@libsdl.org -+*/ -+#include "SDL_config.h" -+ -+#ifndef _SDL_orbitalvideo_h -+#define _SDL_orbitalvideo_h -+ -+#include "../SDL_sysvideo.h" -+ -+/* Hidden "this" pointer for the video functions */ -+#define _THIS SDL_VideoDevice *this -+ -+ -+/* Private display data */ -+ -+struct SDL_PrivateVideoData { -+ void *window; -+}; -+ -+#endif /* _SDL_orbitalvideo_h */ -diff -ruwN source/src/video/SDL_sysvideo.h source-new/src/video/SDL_sysvideo.h ---- source/src/video/SDL_sysvideo.h 2018-10-31 09:07:22.000000000 -0600 -+++ source-new/src/video/SDL_sysvideo.h 2018-12-31 14:01:08.740951021 -0700 -@@ -416,6 +416,7 @@ - extern VideoBootStrap PSP_bootstrap; - extern VideoBootStrap RPI_bootstrap; - extern VideoBootStrap KMSDRM_bootstrap; -+extern VideoBootStrap ORBITAL_bootstrap; - extern VideoBootStrap DUMMY_bootstrap; - extern VideoBootStrap Wayland_bootstrap; - extern VideoBootStrap NACL_bootstrap; -diff -ruwN source/src/video/SDL_video.c source-new/src/video/SDL_video.c ---- source/src/video/SDL_video.c 2018-10-31 09:07:22.000000000 -0600 -+++ source-new/src/video/SDL_video.c 2018-12-31 14:01:08.740951021 -0700 -@@ -112,6 +112,9 @@ - #if SDL_VIDEO_DRIVER_QNX - &QNX_bootstrap, - #endif -+#if SDL_VIDEO_DRIVER_ORBITAL -+ &ORBITAL_bootstrap, -+#endif - #if SDL_VIDEO_DRIVER_DUMMY - &DUMMY_bootstrap, - #endif From 81db0f9c92cf8139fe81e98c4acf85b389f0f424 Mon Sep 17 00:00:00 2001 From: fabiao Date: Sun, 3 Mar 2019 17:58:31 +0100 Subject: [PATCH 0590/3180] sdl2 audio fixed --- recipes/sdl2/recipe.sh | 1 + recipes/sdl2_gears/gears.c | 178 ++++++++++++++++++++++++++--------- recipes/sdl2_gears/recipe.sh | 6 +- recipes/sdl2_gears/test.wav | Bin 0 -> 1210892 bytes 4 files changed, 139 insertions(+), 46 deletions(-) create mode 100644 recipes/sdl2_gears/test.wav diff --git a/recipes/sdl2/recipe.sh b/recipes/sdl2/recipe.sh index a0875433..f8849551 100644 --- a/recipes/sdl2/recipe.sh +++ b/recipes/sdl2/recipe.sh @@ -30,6 +30,7 @@ function recipe_build { --enable-audio \ --enable-dummyaudio \ --enable-video-orbital \ + --enable-redoxaudio \ --enable-cdrom make -j"$(nproc)" skip=1 diff --git a/recipes/sdl2_gears/gears.c b/recipes/sdl2_gears/gears.c index ffa67d08..19a65553 100644 --- a/recipes/sdl2_gears/gears.c +++ b/recipes/sdl2_gears/gears.c @@ -191,8 +191,6 @@ draw(void) glPopMatrix(); glPopMatrix(); - - glFinish(); } static void @@ -201,9 +199,11 @@ idle(void) angle += delta; if (angle > 360.0f) angle -= 360.0f; - + draw(); - + + glFlush(); + SDL_GL_SwapWindow(window); } @@ -264,22 +264,39 @@ init(void) void CheckSDLError(int line) { - const char* error = SDL_GetError(); - if (error != "") - { - printf("SLD Error: %s\n", error); + const char *error = SDL_GetError(); + if (error != "") + { + printf("SLD Error: %s\n", error); - if (line != -1) - printf("\nLine: %d\n", line); + if (line != -1) + printf("\nLine: %d\n", line); - SDL_ClearError(); - } + SDL_ClearError(); + } +} + +void audio_callback(void *userdata, Uint8 *stream, int len); +static Uint8 *audio_pos; // global pointer to the audio buffer to be played +static Uint32 audio_len; // remaining length of the sample we have to play + +void audio_callback(void *userdata, Uint8 *stream, int len) +{ + if (audio_len == 0) + return; + + len = (len > audio_len ? audio_len : len); + SDL_memcpy (stream, audio_pos, len); // simply copy from one buffer into the other + //SDL_MixAudio(stream, audio_pos, len, SDL_MIX_MAXVOLUME); //FIXME: broken in redox + + audio_pos += len; + audio_len -= len; } int main(int argc, char *argv[]) { printf("Initializing SDL\n"); - if (SDL_Init(SDL_INIT_VIDEO) < 0) + if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO) < 0) { printf("Failed to init SDL\n"); CheckSDLError(__LINE__); @@ -288,72 +305,145 @@ int main(int argc, char *argv[]) printf("Creating SDL window\n"); window = SDL_CreateWindow( - "Gears", + "Gears", -1, -1, width, height, - SDL_WINDOW_OPENGL - ); + SDL_WINDOW_OPENGL); if (window == NULL) - { - printf("Unable to create window\n"); - CheckSDLError(__LINE__); - return -1; + { + printf("Unable to create window\n"); + CheckSDLError(__LINE__); + return -1; } - printf("SDL window created %p\n", window); printf("Creating SDL GL context\n"); context = SDL_GL_CreateContext(window); if (context == NULL) - { - printf("Unable to create SDL GL context\n"); - CheckSDLError(__LINE__); - return -1; + { + printf("Unable to create SDL GL context\n"); + CheckSDLError(__LINE__); + return -1; } - printf("SDL GL context created %p\n", context); init(); reshape(width, height); + // Audio + // local variables + static Uint32 wav_length = 0; // length of our sample + static Uint8 *wav_buffer = NULL; // buffer containing our audio file + static SDL_AudioSpec wav_spec; // the specs of our piece of music + + // Load the WAV + // the specs, length and buffer of our wav are filled + const char* audio_file_name = "./test.wav"; + if (SDL_LoadWAV(audio_file_name, &wav_spec, &wav_buffer, &wav_length) == NULL) + { + fprintf(stderr, "Couldn't open audio file %s: %s\n", audio_file_name, SDL_GetError()); + return -1; + } + + // set the callback function + wav_spec.callback = audio_callback; + wav_spec.userdata = NULL; + // set our global static variables + audio_pos = wav_buffer; // copy sound buffer + audio_len = wav_length; // copy file length + + /* Open the audio device */ + if (SDL_OpenAudio(&wav_spec, NULL) < 0) + { + fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError()); + return -1; + } + int running = 1; SDL_Event event; - while (running) - { + int playing_audio = 0; + while (running) + { idle(); - while (SDL_PollEvent(&event)) - { - if (event.type == SDL_QUIT) - running = 0; + // Loop track + if (audio_len <= 0) { + audio_pos = wav_buffer; + audio_len = wav_length; + } - if (event.type == SDL_KEYDOWN) - { - switch (event.key.keysym.sym) - { - case SDLK_a: - delta += 1.0f; + while (SDL_PollEvent(&event)) + { + if (event.type == SDL_QUIT) + running = 0; + + if (event.type == SDL_KEYDOWN) + { + switch (event.key.keysym.sym) + { + case SDLK_p: + { + if (playing_audio) + { + fprintf(stderr, "Pausing SDL audio\n"); + } + else + { + fprintf(stderr, "Playing SDL audio\n"); + } + SDL_PauseAudio(playing_audio); + playing_audio = playing_audio > 0 ? 0 : 1; break; - case SDLK_s: - delta -= 1.0f; + } + case SDLK_a: + case SDLK_LEFT: + { + delta -= 0.2f; break; + } + case SDLK_d: + case SDLK_RIGHT: + { + delta += 0.2f; + break; + } case SDLK_ESCAPE: - running = 0; + { + running = 0; break; + } default: break; } } + + if (event.type == SDL_MOUSEBUTTONDOWN) + { + if (event.button.button == SDL_BUTTON_LEFT) + { + printf("Left mouse btn pressed at position %d,%d\n", event.button.x, event.button.y); + } + else if (event.button.button == SDL_BUTTON_MIDDLE) + { + printf("Middle mouse btn pressed at position %d,%d\n", event.button.x, event.button.y); + } + else if (event.button.button == SDL_BUTTON_RIGHT) + { + printf("Right mouse btn pressed at position %d,%d\n", event.button.x, event.button.y); + } + } } } SDL_GL_DeleteContext(context); - SDL_DestroyWindow(window); - // Shutdown SDL 2 + SDL_CloseAudio(); + SDL_FreeWAV(wav_buffer); + + // Shutdown SDL 2 SDL_Quit(); return 0; -} +} \ No newline at end of file diff --git a/recipes/sdl2_gears/recipe.sh b/recipes/sdl2_gears/recipe.sh index 3a7c139a..e933b0a0 100644 --- a/recipes/sdl2_gears/recipe.sh +++ b/recipes/sdl2_gears/recipe.sh @@ -36,7 +36,9 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" - mkdir -pv "$dest/bin" - cp -v "sdl2_gears" "$dest/bin/sdl2_gears" + mkdir -pv "$dest/games/sdl2_gears" + mkdir -pv "$dest/home/user" + cp -v "sdl2_gears" "$dest/games/sdl2_gears/sdl2_gears" + cp -v "../test.wav" "$dest/home/user/test.wav" skip=1 } diff --git a/recipes/sdl2_gears/test.wav b/recipes/sdl2_gears/test.wav new file mode 100644 index 0000000000000000000000000000000000000000..12348effa02fe93fbe9be9a2c4a3a74c02339183 GIT binary patch literal 1210892 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 z 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
IY4gwQ)yD;!E=5Ycawas6g__{9IJu1W@J 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 )AK8TCNI``7OWPISmQX@o5u%Y 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

QrGAKX>in++CW5Z8679T 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 z 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 Date: Mon, 4 Mar 2019 21:23:35 +0100 Subject: [PATCH 0591/3180] openttd: Fix assertion failures due to the mishandling of schemes in the file browser, open links with NetSurf --- recipes/openttd/01_redox.patch | 80 ++++++++++++++++++++++++++-------- 1 file changed, 61 insertions(+), 19 deletions(-) diff --git a/recipes/openttd/01_redox.patch b/recipes/openttd/01_redox.patch index 944d7ba9..11387c56 100644 --- a/recipes/openttd/01_redox.patch +++ b/recipes/openttd/01_redox.patch @@ -1,7 +1,7 @@ -diff -ruwN source/config.lib source-new/config.lib ---- source/config.lib 2018-12-29 07:28:58.975290421 -0700 -+++ source-new/config.lib 2019-01-06 17:30:43.830146522 -0700 -@@ -1486,7 +1486,7 @@ +diff -rupNw source/config.lib source-new/config.lib +--- source/config.lib 2019-03-04 21:01:49.523053923 +0100 ++++ source-new/config.lib 2019-03-04 21:00:15.870317336 +0100 +@@ -1486,7 +1486,7 @@ make_cflags_and_ldflags() { # Special CXXFlags for HOST CXXFLAGS="$CXXFLAGS" # Libs to compile. In fact this is just LDFLAGS @@ -10,10 +10,10 @@ diff -ruwN source/config.lib source-new/config.lib # LDFLAGS used for HOST LDFLAGS="$LDFLAGS" # FEATURES for HOST (lto) -diff -ruwN source/src/music/extmidi.cpp source-new/src/music/extmidi.cpp ---- source/src/music/extmidi.cpp 2018-12-29 07:28:59.143295501 -0700 -+++ source-new/src/music/extmidi.cpp 2018-12-29 10:14:06.637357598 -0700 -@@ -115,7 +115,11 @@ +diff -rupNw source/src/music/extmidi.cpp source-new/src/music/extmidi.cpp +--- source/src/music/extmidi.cpp 2019-03-04 21:01:49.899056924 +0100 ++++ source-new/src/music/extmidi.cpp 2019-03-04 21:00:15.886317459 +0100 +@@ -115,7 +115,11 @@ void MusicDriver_ExtMidi::DoPlay() switch (this->pid) { case 0: { close(0); @@ -25,10 +25,52 @@ diff -ruwN source/src/music/extmidi.cpp source-new/src/music/extmidi.cpp if (d != -1 && dup2(d, 1) != -1 && dup2(d, 2) != -1) { execvp(this->params[0], this->params); } -diff -ruwN source/src/rev.cpp.in source-new/src/rev.cpp.in ---- source/src/rev.cpp.in 2018-12-29 07:28:59.167296226 -0700 -+++ source-new/src/rev.cpp.in 2018-12-29 10:11:42.314241804 -0700 -@@ -57,7 +57,7 @@ +diff -rupNw source/src/os/unix/unix.cpp source-new/src/os/unix/unix.cpp +--- source/src/os/unix/unix.cpp 2019-03-04 21:01:49.915057051 +0100 ++++ source-new/src/os/unix/unix.cpp 2019-03-04 20:20:35.800062835 +0100 +@@ -69,12 +69,12 @@ ULONG __stack = (1024*1024)*2; // maybe + + bool FiosIsRoot(const char *path) + { +-#if !defined(__MORPHOS__) && !defined(__AMIGAOS__) ++#if !defined(__redox__) + return path[1] == '\0'; + #else +- /* On MorphOS or AmigaOS paths look like: "Volume:directory/subdirectory" */ ++ /* On Redox paths look like: "scheme:/directory/subdirectory" */ + const char *s = strchr(path, ':'); +- return s != NULL && s[1] == '\0'; ++ return (s != NULL) && (strlen(s) == 2) && (s[1] == '/') && (s[2] == '\0'); + #endif + } + +@@ -106,10 +106,10 @@ bool FiosIsValidFile(const char *path, c + { + char filename[MAX_PATH]; + int res; +-#if defined(__MORPHOS__) || defined(__AMIGAOS__) +- /* On MorphOS or AmigaOS paths look like: "Volume:directory/subdirectory" */ ++#if defined(__redox__) ++ /* On Redox paths look like: "scheme:/directory/subdirectory" */ + if (FiosIsRoot(path)) { +- res = seprintf(filename, lastof(filename), "%s:%s", path, ent->d_name); ++ res = seprintf(filename, lastof(filename), "%s%s", path, ent->d_name); + } else // XXX - only next line! + #else + assert(path[strlen(path) - 1] == PATHSEPCHAR); +@@ -370,7 +370,7 @@ void OSOpenBrowser(const char *url) + if (child_pid != 0) return; + + const char *args[3]; +- args[0] = "xdg-open"; ++ args[0] = "netsurf-fb"; + args[1] = url; + args[2] = NULL; + execvp(args[0], const_cast(args)); +diff -rupNw source/src/rev.cpp.in source-new/src/rev.cpp.in +--- source/src/rev.cpp.in 2019-03-04 21:01:49.923057115 +0100 ++++ source-new/src/rev.cpp.in 2019-03-04 21:00:15.922317739 +0100 +@@ -57,7 +57,7 @@ const char _openttd_build_date[] = __DAT * (compiling from sources without any version control software) * and 2 is for modified revision. */ @@ -37,9 +79,9 @@ diff -ruwN source/src/rev.cpp.in source-new/src/rev.cpp.in /** * The NewGRF revision of OTTD: -diff -ruwN source/src/stdafx.h source-new/src/stdafx.h ---- source/src/stdafx.h 2018-12-29 07:28:59.203297314 -0700 -+++ source-new/src/stdafx.h 2018-12-29 10:11:42.314241804 -0700 +diff -rupNw source/src/stdafx.h source-new/src/stdafx.h +--- source/src/stdafx.h 2019-03-04 21:01:49.955057370 +0100 ++++ source-new/src/stdafx.h 2019-03-04 21:00:15.930317800 +0100 @@ -12,6 +12,9 @@ #ifndef STDAFX_H #define STDAFX_H @@ -50,10 +92,10 @@ diff -ruwN source/src/stdafx.h source-new/src/stdafx.h #if defined(__APPLE__) #include "os/macosx/osx_stdafx.h" #endif /* __APPLE__ */ -diff -ruwN source/src/string.cpp source-new/src/string.cpp ---- source/src/string.cpp 2018-12-29 07:28:59.207297436 -0700 -+++ source-new/src/string.cpp 2018-12-29 10:11:42.314241804 -0700 -@@ -528,7 +528,7 @@ +diff -rupNw source/src/string.cpp source-new/src/string.cpp +--- source/src/string.cpp 2019-03-04 21:01:49.955057370 +0100 ++++ source-new/src/string.cpp 2019-03-04 21:00:15.938317862 +0100 +@@ -528,7 +528,7 @@ size_t Utf8TrimString(char *s, size_t ma return length; } From fef33f6d10c8a90b75fa96e6b8abf7a79b59b726 Mon Sep 17 00:00:00 2001 From: Fabio Di Francesco Date: Mon, 11 Mar 2019 13:01:44 +0000 Subject: [PATCH 0592/3180] sdl2 extras lib (image, mixer, fonts) demo update --- recipes/sdl2_gears/font.ttf | Bin 0 -> 103160 bytes recipes/sdl2_gears/gears.c | 182 +++++++++++++++++++++++++---------- recipes/sdl2_gears/image.png | Bin 0 -> 172034 bytes recipes/sdl2_gears/music.wav | Bin 0 -> 43694 bytes recipes/sdl2_gears/recipe.sh | 8 +- recipes/sdl2_gears/test.wav | Bin 1210892 -> 0 bytes recipes/sdl2_image/recipe.sh | 40 ++++++++ recipes/sdl2_mixer/recipe.sh | 51 ++++++++++ recipes/sdl2_ttf/recipe.sh | 41 ++++++++ 9 files changed, 266 insertions(+), 56 deletions(-) create mode 100644 recipes/sdl2_gears/font.ttf create mode 100644 recipes/sdl2_gears/image.png create mode 100644 recipes/sdl2_gears/music.wav delete mode 100644 recipes/sdl2_gears/test.wav create mode 100644 recipes/sdl2_image/recipe.sh create mode 100644 recipes/sdl2_mixer/recipe.sh create mode 100644 recipes/sdl2_ttf/recipe.sh diff --git a/recipes/sdl2_gears/font.ttf b/recipes/sdl2_gears/font.ttf new file mode 100644 index 0000000000000000000000000000000000000000..eb1000bcad0d83e1d1561bbcf191b2173ede705c GIT binary patch literal 103160 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�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 a`x4{NwZ~TeMEiyI=ZsHkUuIm9@&5wKjBWw| literal 0 HcmV?d00001 diff --git a/recipes/sdl2_gears/gears.c b/recipes/sdl2_gears/gears.c index 19a65553..33d99ca5 100644 --- a/recipes/sdl2_gears/gears.c +++ b/recipes/sdl2_gears/gears.c @@ -8,11 +8,11 @@ /* Conversion to GLUT by Mark J. Kilgard */ -#include -#include -#include -#include #include +#include +#include +#include +#include #ifndef M_PI #define M_PI 3.14159265 @@ -56,6 +56,7 @@ gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat width, { angle = i * 2.0 * M_PI / teeth; glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); + glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); @@ -276,33 +277,65 @@ void CheckSDLError(int line) } } -void audio_callback(void *userdata, Uint8 *stream, int len); -static Uint8 *audio_pos; // global pointer to the audio buffer to be played -static Uint32 audio_len; // remaining length of the sample we have to play +SDL_Surface *image; +const char *IMAGE_FILE_NAME = "image.png"; -void audio_callback(void *userdata, Uint8 *stream, int len) +Mix_Music *music = NULL; +const char *MUSIC_FILE_NAME = "music.wav"; + +TTF_Font *font = NULL; +const char *TTF_FILE_NAME = "font.ttf"; + +void cleanup() { - if (audio_len == 0) - return; + if (context != NULL) + { + SDL_GL_DeleteContext(context); + context = NULL; + } + if (window != NULL) + { + SDL_DestroyWindow(window); + window = NULL; + } - len = (len > audio_len ? audio_len : len); - SDL_memcpy (stream, audio_pos, len); // simply copy from one buffer into the other - //SDL_MixAudio(stream, audio_pos, len, SDL_MIX_MAXVOLUME); //FIXME: broken in redox + if (image != NULL) + { + SDL_FreeSurface(image); + image = NULL; + IMG_Quit(); + } - audio_pos += len; - audio_len -= len; + if (music != NULL) + { + Mix_FreeMusic(music); + music = NULL; + Mix_CloseAudio(); + } + + if (font != NULL) + { + TTF_CloseFont(font); + font = NULL; + } + + // Shutdown SDL 2 + SDL_Quit(); } int main(int argc, char *argv[]) { + // Main printf("Initializing SDL\n"); if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO) < 0) { printf("Failed to init SDL\n"); CheckSDLError(__LINE__); + cleanup(); return -1; } + // Video / window printf("Creating SDL window\n"); window = SDL_CreateWindow( "Gears", @@ -315,6 +348,7 @@ int main(int argc, char *argv[]) { printf("Unable to create window\n"); CheckSDLError(__LINE__); + cleanup(); return -1; } @@ -324,6 +358,7 @@ int main(int argc, char *argv[]) { printf("Unable to create SDL GL context\n"); CheckSDLError(__LINE__); + cleanup(); return -1; } @@ -331,32 +366,70 @@ int main(int argc, char *argv[]) reshape(width, height); - // Audio - // local variables - static Uint32 wav_length = 0; // length of our sample - static Uint8 *wav_buffer = NULL; // buffer containing our audio file - static SDL_AudioSpec wav_spec; // the specs of our piece of music - - // Load the WAV - // the specs, length and buffer of our wav are filled - const char* audio_file_name = "./test.wav"; - if (SDL_LoadWAV(audio_file_name, &wav_spec, &wav_buffer, &wav_length) == NULL) + // Image + printf("Initializing SDL image supporting formats png and jpeg\n"); + int flags = IMG_INIT_JPG | IMG_INIT_PNG; + int initted = IMG_Init(flags); + if ((initted & flags) != flags) { - fprintf(stderr, "Couldn't open audio file %s: %s\n", audio_file_name, SDL_GetError()); + printf("IMG_Init: Failed to init required jpg and png support: %s\n", IMG_GetError()); + CheckSDLError(__LINE__); + cleanup(); return -1; } - // set the callback function - wav_spec.callback = audio_callback; - wav_spec.userdata = NULL; - // set our global static variables - audio_pos = wav_buffer; // copy sound buffer - audio_len = wav_length; // copy file length - - /* Open the audio device */ - if (SDL_OpenAudio(&wav_spec, NULL) < 0) + image = IMG_Load(IMAGE_FILE_NAME); + if (image == NULL) { - fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError()); + printf("IMG_Load failed: %s\n", IMG_GetError()); + CheckSDLError(__LINE__); + cleanup(); + return -1; + } + + // Audio + printf("Opening SDL mixer audio\n"); + if (Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 4096) < 0) + { + fprintf(stderr, "Couldn't open audio mixer: %s\n", SDL_GetError()); + CheckSDLError(__LINE__); + cleanup(); + return -1; + } + + music = Mix_LoadMUS(MUSIC_FILE_NAME); + if (music == NULL) + { + fprintf(stderr, "Couldn't open audio file %s: %s\n", MUSIC_FILE_NAME, SDL_GetError()); + CheckSDLError(__LINE__); + cleanup(); + return -1; + } + + if (Mix_PlayMusic(music, -1) < 0) + { + fprintf(stderr, "Couldn't play music: %s\n", SDL_GetError()); + CheckSDLError(__LINE__); + cleanup(); + return -1; + } + + // TTF + printf("Initializing TTF\n"); + if (TTF_Init() < 0) + { + printf("Failed to init TTF\n"); + CheckSDLError(__LINE__); + cleanup(); + return -1; + } + + font = TTF_OpenFont(TTF_FILE_NAME, 30); + if (font == NULL) + { + printf("Couldn't open TTF file %s: %s\n", TTF_FILE_NAME, SDL_GetError()); + CheckSDLError(__LINE__); + cleanup(); return -1; } @@ -368,10 +441,7 @@ int main(int argc, char *argv[]) idle(); // Loop track - if (audio_len <= 0) { - audio_pos = wav_buffer; - audio_len = wav_length; - } + Mix_PlayingMusic(); while (SDL_PollEvent(&event)) { @@ -384,16 +454,27 @@ int main(int argc, char *argv[]) { case SDLK_p: { - if (playing_audio) + if (!Mix_PlayingMusic()) { - fprintf(stderr, "Pausing SDL audio\n"); + if (Mix_PlayMusic(music, -1) < 0) + { + fprintf(stderr, "Couldn't play music: %s\n", SDL_GetError()); + CheckSDLError(__LINE__); + cleanup(); + return -1; + } } else { - fprintf(stderr, "Playing SDL audio\n"); + if (Mix_PausedMusic()) + { + Mix_ResumeMusic(); + } + else + { + Mix_PauseMusic(); + } } - SDL_PauseAudio(playing_audio); - playing_audio = playing_audio > 0 ? 0 : 1; break; } case SDLK_a: @@ -434,16 +515,11 @@ int main(int argc, char *argv[]) } } } + + SDL_Delay(10); } - SDL_GL_DeleteContext(context); - SDL_DestroyWindow(window); - - SDL_CloseAudio(); - SDL_FreeWAV(wav_buffer); - - // Shutdown SDL 2 - SDL_Quit(); + cleanup(); return 0; } \ No newline at end of file diff --git a/recipes/sdl2_gears/image.png b/recipes/sdl2_gears/image.png new file mode 100644 index 0000000000000000000000000000000000000000..f3a6f1140276a0d83b2858b4741ba2df56ec6f20 GIT binary patch literal 172034 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

3_fH>lgeZB;~!U3v`%O27iiI|==!Xd8er13}u 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�-Zf`d!9EM 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
IY4gwQ)yD;!E=5Ycawas6g__{9IJu1W@J zYGR{xN2CrzcbUojQSMFHtf-z0E03kxl?T&1DH~-DQ!UG?RCdUIqned{M!hFns|jRz z0V(OT_EBa}eLO>;pPbQGpORif|0Zpzu1V?@-R6`R+HT3|x)+Icv_ld{XfIjvG}A2e zH7awVx{v9Cdbe?qy1HSqdZB)uI;g#^zO9+9$xyG->;m1BujDVZ3uVLgc~}R%Pcqif zPQ2f6NaQh87q&M(L{1s{3T_(eLk;!Mxhpy)GapbHeo;3j<;tp9H~E!Fp0pSKQ?d>; z?n#36MA!VeLWM6EE%)3-+PXU+bzH@Q-yQP=o9zUg589`iSkoc8vO3?lQow$#*ci8! zmy+@F=dpzHZV|HVL}**toxq3EV(-7DTRdeY-CgTT4m$Uh%yG0X8SEHbTGw&3bb>=% ze$a8EBIF<{>pJ(@RL)wCX-+^oaXj&4IP-lejyHi_j)c$`dopgf*N(ijr^f2pXApht zU8prSFMZLrgK2Hs%?-1CP{g7vn}pu_5vu)x+%{L(fVdte(b>uT$!5ZWl^OlyBN zW*x67sH)IRteU62QkAX!vucmlQ&p&GZ|$h{TW4$f*zai$I(leITq8ALmk&<7n>2ev zTeX(R811RpTHOV5pl%TTLuZXo)p1OP*37vy&H0mRHxHPDa6QFFI14!C-+iDG4G}#-s<;hW7CQ{mhAWY`u`Pm8#8iQt zmq^W4 zoUdQWyOG&+Ff0Z1PyuTTUgn+!5}>1jPlA{J<48uJzo^J>0wk38Aba)$bhXTqjtq^K z9Sm)e1;Y+mUpz-HiU{QABAw)0B5Cr>Xbbtm$Vd5g(B-0tv{xR-FDi%Nm8$XKpXxE; zW|}jhzqBQxY;BEji53rU)n1RR)h>x`)Hb3TY0Kkz+M8TQ?JBr~PLDp-HWz)>O_QwD zoyXqk>d0_ixoo9wuDr88CjX=>kiXN{R^a*qkWR}~bTal)TsHa@eM~CVWz%AHhIzJj zviZ2a(kwC6w5+pKSjrPeBn(I~Bu+~cB(2IAoirjV2edmjNsd)(l3cqwmo&CIo_M!f zqeN@=I!ju1ia9;2meHBnSwB1Ti1vKuQ8k`&Ih z-pM9bUn%QTy^x<$IC`XVf~`cX-&8YH=%-CJzQo+CPu*<3U}<0CpPJr}*0dQZ?P zbr8HVIROGdB+i?d%RU8qL;VDvZf8!W-KK2d@m)<0H;f`~>5j#m+KJJvnpu$^>NoB3OthB4>Xco2>vJeCzybp2yMk&p@GtV;nUJv;YqS( z;aReK;k$qV(plyT-I5jtH)6jAQzTJ;Yf+gGL$7#0!)-hTTtoK(=CiXIb;)rj_R{_W z-)>`qwDn*AcB{vuupS4g#=6d))^?74wgonm{jl|S$M7n#t6^nB;162p{am)+SF>zE z;4Ns2++1=a^s)F}IKS9{=NJFLg(Yc`=_RuwY{}h7-BM2kD(e<~R{Cc&rEFNNW?4A) zrnEmfyQ~gW zb(}Lyb;(UrJg8-&uUEpRfHcV)+MQgCS5NH|`@?2iad{)UChpImsk7#lYlXRU7 z3-w!dtby0sjq^48Osmx?=HFCubE@*22~!*cX_%;Sqx7xulB7LoxlkJy2s4cX(94FY zg5QjBsKDUoZyHB&cZ?qPvgrlW+uV|2%(vn`%T>Bgf{{L-@E2PD@U5g0R1xdzmx7N z*dLn&*CLw2+lklkGa?9&BsIut@;M@-Jm`4fonA$$#BJ&KlKSB47tfL&iND6aGC^z> zn}-eOf)bW|&5F90UmPMSL$oI`ka4lhvS6@ekolu8-&x`%Re3Nkre-uEM$8 zc60?d7R~3L2u!>g8Ne@s7w{WlJ6{3;cP#XgKLLH@zVI`-O;8To1q#GJL)r0pa2Kis zHc}0dK14Cnnh*-d#tMY7=&z!&v2UVR(YK;#%q_YcgFv4{ktl_fh!>NLXgn1X`AC!a z4E0iUmi!<(O8zdIL+C`OVy%S(qAO5E zj5qXz$%-U1Sac;bm`G#nx0HU!2(>pS~r{|BfzMe0s$KB^rYPhSCAGxk4A+B4A_nr3=<~vteYB~$ei=BN; zpOpi#67l#Ho>|8W7oP!{7-6$7|aiiMz2Yanw-RVPlW zms5?v;-1u~WA(M?A|te4!zZ+Pp>%EU;1KQVz-$fWpR5_+U#=eOht&DL^(vEprgFRQ z52eJfR>XX%is}C9@@xKva=Tw7M*{}=djDa0SAVV?_9+xgy_nqKX(8X^ek7H;BUp)R zr(~Y{7x54GE>S1%0%2?4DdAcFM4>L2AsQOmCeq*|#q%NwlK(O29utLmCDUJovD<~9y&tX4bw<{3pW#HH1aIaq^C2GQ_Cgcc{~!Z11YQ>Z3(k(8fDh20 zVK2Q1{*QhS6LcN8QM?9RBmNZX7f*p&g3C!u_zGIh528D9y=ab2r}NnadK|loe#M@r zH?aNUwYe8@H8+IW&plx-a}C*79O!@HpR)_OOrS(#+yFL}!&nD!=WPK*ua)d$l3*GT z1T!}Fiup5g7kE5!z@EU&-Uy#!H-$iBKFGXv39;O?kb@J4YeHSZub~n63-~m?A1R1r zqKfD*A~1)7XUV_fL}IyQFwq0B_>@>8IZe`=954Bo{10rqDn<8!%il+BN8baA>^(XU zZWA5;}?fL8mdBsPjM(YD;$|`cXHdI%;7gM7{{mAk)MDklIiN`CrgPt_~g| zx&(E^nc$t+{owxS$dD$Q9DaiH;TPd?kw>AK(W5~*@oTUyc`?wAstmNH6M~KClfkF- zU!hXqf+4Afco*sio0vZ`MGOfrf>{V(epB(QFw_wu%_qLYM z3q?im1Un^j(U#H~fQ0g|_@=x*c3II~x=$I9o>e`Rsnh{kM@^3Wsb;v`t95{rT^qR> zOhfC99b`qOe$t_qWf-4;V0V-5i_fK;6faLZBr;|k75&I86VA)JBRrlRMki(OMptIP zLIl|wBt2_~U}xqsxOYZp_)U5O^f=AW_f8Y?WvLrDDm9g>mbQ{Tly;m2bSxIin8kk1 z$YIB1a*Q=|7Guad9k*l^(w{RAQY|y1;F#B?u| zW-x|!0Iy%6rgfmdy3D^zCHI?@s(@PAz+WKO1)s~m1q5=C*p(%RA4yk*r-B)Lr(`N{ zwhxTl5kA3l(45FDK_0#s!tpBZH0Z7`#+QNSkq^{Y{5EL?TghAag4jEJ4amskM2_G; z!lUs`p&fX&;5hu6|0`bRE5_5jvw*JqJR)+(B12shqjjCasNF7zF0qe}u-0xrt+3HG5I^FgaiM2U*X^JK08jtfEE4q}+r5rs@!ps1HYO zsH;b3Yo^B@X(Yr6?O8HiH=jz2e$c?#NLBCYM)Q_x6h{T*mcxqdq)a1GLv&0 zb`o_?Bip+6kwI68SnGkvYu*OL9DgD)G&n3aJ6s&ij82JuAQnc>(|<;;u|x3sP#%6* zkd9wN_uzJ6PUNikT;#F1EZPiP0GKJeh^Er@q)0Z6nkBQ*F}XM1S}}mlP~~&~sIKux zG!}S|_5|Dzs7e|@WR@G>AvcZ3P}Ed_t~Om34l}uhXH5@8I@2a`W7A)f>c%+60+Pjk z{df5fT|MP^?HAP>bq~!Y)oJY%MY(P)NKr46<`^1bF?}P+-=H_-xUR8iw$?1PsWG&* zstwX!@d(}^`vDEbPVxVVdvZm>4Qw}5$|#U|@iFiS+6HZ-{@{mF)%o6J3+^Y`f~`w# zVO-=@T1Ks+E`dzUR{C9(pgTu;g3QuDCJ$tpj|MleOkf3=lW%eh0^9iyfo9M@fn+!% z2vT%GT(CNriT(_R(Hp@TqKaT|agSh4%oXS^t@KZkZ}#0(h`fhXpIsl+ZycoN58GF5 z=c@PG*%cjhF3`>|E^DMcTH03grZl8JSXQXMSAJAIsq%|`Q{ND{3!QYIxLt6~X!b=UK@rC;HxI*v2y;>ZfswMC-8cXCKb<;>I^}EO%Rc@3~ z<;G5`77!oQyT}t7lKP?T7r&za&fGMt;P#p7LyOHNfQUQ}G+g@8^aQzRZ$ek`RZBlf zrFjJQ%`{KS8a4oG*fsehZN6fRCZuFkrK-0|twybkYsM;)b+nw*?Uy_BoxoJ?kPR>{ zlr=Wt((R^k(rM-j>^5lsYX*`R{Vew-gDjAwrsY2|X)YCgFy{*|n8PS!aSCJ>i{Pqd zKIF2D<%cGm;x;DCWp^f+*?S3Xm>vm7;v*8$O~aEhnBN_u!{xEAfG{ae%lH503-S@s-kGXc;CBu`QmeDD4>=gMH@ME8mJ(k$-F~ zAqaM5q4vb-@FC&{ewJJj^^wg9B^@Pu(JkXG;|6wP{21SX;o&RHZgdN~P3&RYN?&o? z6}9*|>aqMh-4}j=u{vL9J_|eq1zhdq>3mg6174o?kxxlq43(xgg}Y=N22S|92$FeG zcq6l`_VR&WYKOkHa-jiJyfc(bcN-^T6OBGmW7BrD%s5pr!_icphMpyctuC~7isnW|KsQ^prg3nK0LlVyF2Tf zjTp}&H*kQJoy!14ut2{&LRBu0evsa4N^?jgAe7)#R{t3+Z zKzHVKAU7riFM|Eu4z@hBBi;_M*t5bXd0XhTkO#7iw?HOlPWYA>^QDLdU7w z@+A#O%xi9nPSsQa(6G2AiG3?ig3orDSCT+Yy8QKWlGelQ(9n{Fr{q}xF_-4v=t--1e_ zwc+#8Jop6YBc6^T$cE@xv?N*sn-ML=Pe(^9nnyd4Qe>d|bA+M_BF%KGA~W?>;W@^( zkvvl*yvrO3-!vnUZIB28R1EWuffq^|6Jd|`0na^d6NxoJ=yv!_cXo2^`q_w=WT7a!%y9_gDGv> za`hwIaB_kTQ@*#|#%I~*qak}9+|pS~`pa2c$a1%gw{x$Em3Y?D$2^UqoVQzKg0D|_ zia#kF3Y-a*2hW6hM4p6>Mz!H-v34Lu_e(g!=Y)@n!B7J9D!3f}8W@S1{cEwV-ivsB z_dUYq$W@funkv@im%9h0#6PWhN-lIK|P1Rss?!zO$&Y})sugr zUCbZQE#P12p9Avib6#PT_$*@#R9hl^61dhkoaBEt9O4J)JMlVw0l!Drn%|^N;*V&j z^4+OX{6Xpve_wN+=QOMMux2-3s_DsZrq=OA)JI;a9VINHj*6G4OOi+P2eeqz8(FFD zg&EW%2&0NsJSSg~HOXtLpt4G>CI@RSD35BklO#2Wyrd!2pEaY@^)%qwtzNI~t^TUJ zrdn;-qS6{ql3Avc<}t#V6fEU2k%6E}nOG)NTk0dWgI6`Zhpi9I=|px|l?|54Vk_(rZT+nC!LQ^fBx zKeE&58?pA$8%%ll69YIZ%z$7KvoKJX3HhfmanOJKIq*KF48CJKhnjMe!jpJQv`RQZ zr%J^!rQA850C~C2&@M2!(-lm{ECL_HerSrk1=h#}LV+puslX=(>=WSLSc#?yW$0yo zGj<*jlxm4}@lVnXyfcImjSwGE3t0PT;3NG@(U|N>f@v~Uf$D)eOLbrKpJ$LK9n=nG z3AIOAsQpBQsdJCSa#_R;#TQIP>IXGC^Zj~sRli+prN z!rR?T!sk8v0d;Ot=&3I&yvhG0xHYgk^m{NA1nHPixA4i($?%iVoyeB3CF%{6^nYji z4N)^--C?oyjGt-1e#2g5L$PsOcKk1HNgNUSaASond_A#12#6oR48(n@uUrQ@0;<&y zq4|gmoj~)Dl~@|$$2y`)!h`tnqbN;GMDrCR(U9UkYEyPZeo!p z?W@q~S1WD$cVr*qKy{vJq()^frJkAXz#Uje4-%+`)8^&IUFJKclP1n=FjY&KWX!Ox zGgMe-8k!~k4P2yZgU?#7r>#Q_V!|y$IH9o-Fp7*B3FAy76K0t4gjyDjwM)XXgmA(U zYi{Cq*2#&}tQ(WWgg!}?mM2M>mbpoTOpTNJ7{5;%t)C0bJK0HHsFXxbZBHDcQYOAr zW+zTotg&Vj{)9K!sf0>&y#?f0EHgk-`Fp6`cutDyKZv3svZ)XHB&9P6tmH1Rd&r+5J|(bqZN6(mARybEK5H_V*& zoCAAn;7f3QjP!Jk0+Shkg??}}2tKm?6sTsa=1;6@?(0~Y>UCBO_O!03?(S5v+tt2e zp>tw|;7F|e(Q&o%l>JlH1bYYjblX|SPqr^EL)9@)pz?)pLq#$my}t_eFP|8Vmffe{ zmF2U;%bvt@%DeHm%9@M2%fsUN@)vUJil$Jk;tV{tvIkNO*f^zCO|VurJ-*(iBpTWt z5kRh@I9hdBDOFw|YgBDeeW=`}?pM`TlVLkWy|>|7(4Er-o$31Cp3#P(zS_or0+WnO z!Yxd1qQi}6V~>p&;!6x#p|xSE*cqhWx9XP4-{|}@NPEc)^++~To8`fpF7haKzC1}) zO>RxrmD82Q@>AlRd=PLVmtiQ}2;Bk~ARa^kp9ki`r}@HRy$fM%3uIdCDte!ph3}%95fh_Z6|wL?iglr;AZ^x1dBERO`N_9h zxy+kJ4)m@gKX_WGGrheu0q;<4FW=94ERbOQGcefPG&IpNBizBdIP%n5NDoM4=n;ua zV~?yO*#B8u#yyt$++YjH{F4l-C% zh_%&J;?Fd56^Yata0jifzNjstegh}ng~0aJ)ZjJjH$;p*jZ@9#hWVCGMt8zBL*K+n zhU-b~48v0X)FWw6^h49<>Xn&)=o@4m&=1J|UBAED0e%1Kx%!nkk91WzZFGBc_iDqr zMcVE)fZ3wPY-&*rho)7H*&0V~EzPdn0(DXD1J&T%U&(s8XOy3F=PI`478BKK?8VpT zp1_9Y_QRIvP}uJ3^)OZSDcI`l+gP9MR``|733#i_t#~;73hqc7ibqmg;X{Be>25NG zHBAC+ro?*4Ju8^Xv` )AK8TCNI``7OWPISmQX@o5u%Y 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

QrGAKX>in++CW5Z8679T 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 z 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 Date: Wed, 13 Mar 2019 14:35:19 -0600 Subject: [PATCH 0593/3180] Add manifest for netsurf --- recipes/netsurf/manifest | 7 +++++++ recipes/netsurf/recipe.sh | 2 ++ 2 files changed, 9 insertions(+) create mode 100644 recipes/netsurf/manifest diff --git a/recipes/netsurf/manifest b/recipes/netsurf/manifest new file mode 100644 index 00000000..cded72b2 --- /dev/null +++ b/recipes/netsurf/manifest @@ -0,0 +1,7 @@ +name=Netsurf +binary=/bin/netsurf-fb +icon=/ui/icons/apps/internet-web-browser.png +accept=*.html +author=The Netsurf Developers +description=Browser for Redox + diff --git a/recipes/netsurf/recipe.sh b/recipes/netsurf/recipe.sh index 4fca8bc6..a2ed0e95 100644 --- a/recipes/netsurf/recipe.sh +++ b/recipes/netsurf/recipe.sh @@ -35,5 +35,7 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install + mkdir -pv "$dest/ui/apps" + cp -v ../manifest "$dest/ui/apps/00_netsurf" skip=1 } From 51678feb53c1d97bb25b53ddaae1bed1694cc7f8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 15 Mar 2019 20:17:28 -0600 Subject: [PATCH 0594/3180] Remove toolchain stuff from README --- README.md | 80 ++----------------------------------------------------- 1 file changed, 2 insertions(+), 78 deletions(-) diff --git a/README.md b/README.md index 1604f845..7c823038 100644 --- a/README.md +++ b/README.md @@ -3,81 +3,5 @@ A collection of package recipes for Redox. [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) -## Setup - -### Ubuntu and other Debian based systems - -To install the toolchain, run the following commands: -```bash -# Get the Redox OS APT key -sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AA12E97F0881517F - -# Install the APT repository -sudo add-apt-repository 'deb https://static.redox-os.org/toolchain/apt /' - -# Update your package lists -sudo apt update - -# Install the cross compiler -sudo apt install x86-64-unknown-redox-gcc -``` - -### Arch Linux -To install the toolchain, run the following commands: - ```bash - # Clone libc - git clone --recursive git@github.com:redox-os/libc - - # Go to the packages - cd libc/packages/arch - - # Start with binutils - cd binutils - makepkg -si - - # Then autoconf - cd ../autoconf - makepkg -si - - # Then gcc-freestanding - cd ../gcc-freestanding - makepkg -si - - # Then newlib - cd ../newlib - makepkg -si - - # Finally gcc - cd ../gcc - makepkg -si - ``` - -### Gentoo Linux -```bash - # Clone libc - git clone --recursive git@github.com:redox-os/libc - - # Install needed tools - emerge -a =sys-devel/autoconf-2.64 =sys-devel/automake-1.11.6-r2 - - # Run the setup script - cd libc - PREFIX= ./setup.sh all - - # Add the tools to your path - export PATH=$PATH:/bin -``` - -### Other distros/Mac OS X -To install the toolchain, run the following commands: - ```bash - # Clone libc - git clone --recursive git@github.com:redox-os/libc - - # Run the setup script - cd libc - ./setup.sh all - - # Add the tools to your path - export PATH=$PATH:/path/to/libc/build/prefix/bin - ``` +In order for this repository to be useful, it must be set up with an environment +from the [Redox repository](https://gitlab.redox-os.org/redox-os/redox). From 686cdf536da20e54339a151050a3803357cc087f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 15 Mar 2019 21:30:00 -0600 Subject: [PATCH 0595/3180] Update eduke32 to enable vorbis --- recipes/eduke32/recipe.sh | 2 +- .../eduke32/{01_redox.patch => redox.patch} | 51 +++++++++---------- 2 files changed, 26 insertions(+), 27 deletions(-) rename recipes/eduke32/{01_redox.patch => redox.patch} (62%) diff --git a/recipes/eduke32/recipe.sh b/recipes/eduke32/recipe.sh index f60f998b..c6e07caf 100644 --- a/recipes/eduke32/recipe.sh +++ b/recipes/eduke32/recipe.sh @@ -1,6 +1,6 @@ VERSION=20181010-7067 TAR=https://dukeworld.com/eduke32/synthesis/$VERSION/eduke32_src_$VERSION.tar.xz -BUILD_DEPENDS=(sdl sdl_mixer liborbital libiconv) +BUILD_DEPENDS=(sdl sdl_mixer liborbital libiconv libogg libvorbis) function recipe_version { echo "$VERSION" diff --git a/recipes/eduke32/01_redox.patch b/recipes/eduke32/redox.patch similarity index 62% rename from recipes/eduke32/01_redox.patch rename to recipes/eduke32/redox.patch index e948345b..42a3f80d 100644 --- a/recipes/eduke32/01_redox.patch +++ b/recipes/eduke32/redox.patch @@ -1,6 +1,6 @@ -diff -rupNw source-original/Common.mak source/Common.mak ---- source-original/Common.mak 2018-07-14 23:36:44.000000000 +0200 -+++ source/Common.mak 2018-12-03 19:13:25.028864957 +0100 +diff -rupwN source/Common.mak source-new/Common.mak +--- source/Common.mak 2018-07-14 15:36:44.000000000 -0600 ++++ source-new/Common.mak 2019-03-15 21:28:32.366856380 -0600 @@ -93,7 +93,7 @@ endif ##### Makefile meta-settings @@ -21,7 +21,7 @@ diff -rupNw source-original/Common.mak source/Common.mak CC := $(CROSS)gcc$(CROSS_SUFFIX) CXX := $(CROSS)g++$(CROSS_SUFFIX) -@@ -383,6 +387,15 @@ else ifeq ($(PLATFORM),$(filter $(PLATFO +@@ -383,6 +387,14 @@ else ifeq ($(PLATFORM),$(filter $(PLATFO override NOASM := 1 else ifeq ($(PLATFORM),$(filter $(PLATFORM),BEOS SKYOS)) override NOASM := 1 @@ -30,14 +30,13 @@ diff -rupNw source-original/Common.mak source/Common.mak + override NETCODE := 0 + override HAVE_GTK2 := 0 + override HAVE_FLAC := 0 -+ override HAVE_VORBIS := 0 + override HAVE_XMP := 0 + override MIXERTYPE := SDL + SDL_TARGET := 1 endif ifneq (i386,$(strip $(IMPLICIT_ARCH))) -@@ -868,7 +881,7 @@ ifeq ($(RENDERTYPE),SDL) +@@ -868,7 +880,7 @@ ifeq ($(RENDERTYPE),SDL) SDLCONFIG := sdl2-config SDLNAME := SDL2 else ifeq ($(SDL_TARGET),1) @@ -46,12 +45,12 @@ diff -rupNw source-original/Common.mak source/Common.mak SDLNAME := SDL ifeq (0,$(RELEASE)) COMPILERFLAGS += -DNOSDLPARACHUTE -@@ -957,9 +970,11 @@ else ifeq ($(PLATFORM),WII) +@@ -957,9 +969,11 @@ else ifeq ($(PLATFORM),WII) LIBS += -laesnd_tueidj -lfat -lwiiuse -lbte -lwiikeyboard -logc else ifeq ($(SUBPLATFORM),LINUX) LIBS += -lrt +else ifeq ($(PLATFORM),REDOX) -+ LIBS += -lorbital ++ LIBS += -lorbital -lvorbisfile -lvorbis -logg endif -ifeq (,$(filter $(PLATFORM),WINDOWS WII)) @@ -59,9 +58,9 @@ diff -rupNw source-original/Common.mak source/Common.mak ifneq ($(PLATFORM),BSD) LIBS += -ldl endif -diff -rupNw source-original/source/build/include/compat.h source/source/build/include/compat.h ---- source-original/source/build/include/compat.h 2018-10-07 07:21:24.000000000 +0200 -+++ source/source/build/include/compat.h 2018-12-03 19:26:54.393942393 +0100 +diff -rupwN source/source/build/include/compat.h source-new/source/build/include/compat.h +--- source/source/build/include/compat.h 2018-10-06 23:21:24.000000000 -0600 ++++ source-new/source/build/include/compat.h 2019-03-15 21:21:09.285856877 -0600 @@ -7,6 +7,9 @@ #pragma once @@ -91,9 +90,9 @@ diff -rupNw source-original/source/build/include/compat.h source/source/build/in #endif #if defined(__cplusplus) && defined(_MSC_VER) -diff -rupNw source-original/source/build/src/baselayer.cpp source/source/build/src/baselayer.cpp ---- source-original/source/build/src/baselayer.cpp 2018-10-07 07:21:43.000000000 +0200 -+++ source/source/build/src/baselayer.cpp 2018-12-03 19:21:47.982397954 +0100 +diff -rupwN source/source/build/src/baselayer.cpp source-new/source/build/src/baselayer.cpp +--- source/source/build/src/baselayer.cpp 2018-10-06 23:21:43.000000000 -0600 ++++ source-new/source/build/src/baselayer.cpp 2019-03-15 21:21:09.285856877 -0600 @@ -498,7 +498,7 @@ int32_t baselayer_init(void) void maybe_redirect_outputs(void) @@ -103,9 +102,9 @@ diff -rupNw source-original/source/build/src/baselayer.cpp source/source/build/s char *argp; // pipe standard outputs to files -diff -rupNw source-original/source/build/src/sdlayer.cpp source/source/build/src/sdlayer.cpp ---- source-original/source/build/src/sdlayer.cpp 2018-10-07 07:23:44.000000000 +0200 -+++ source/source/build/src/sdlayer.cpp 2018-12-03 19:24:07.239998594 +0100 +diff -rupwN source/source/build/src/sdlayer.cpp source-new/source/build/src/sdlayer.cpp +--- source/source/build/src/sdlayer.cpp 2018-10-06 23:23:44.000000000 -0600 ++++ source-new/source/build/src/sdlayer.cpp 2019-03-15 21:21:09.289856979 -0600 @@ -305,7 +305,7 @@ void wm_setapptitle(const char *name) // @@ -115,9 +114,9 @@ diff -rupNw source-original/source/build/src/sdlayer.cpp source/source/build/src # define PRINTSTACKONSEGV 1 # include #endif -diff -rupNw source-original/source/duke3d/src/common.cpp source/source/duke3d/src/common.cpp ---- source-original/source/duke3d/src/common.cpp 2018-10-07 07:20:23.000000000 +0200 -+++ source/source/duke3d/src/common.cpp 2018-12-03 19:34:09.893848178 +0100 +diff -rupwN source/source/duke3d/src/common.cpp source-new/source/duke3d/src/common.cpp +--- source/source/duke3d/src/common.cpp 2018-10-06 23:20:23.000000000 -0600 ++++ source-new/source/duke3d/src/common.cpp 2019-03-15 21:21:09.289856979 -0600 @@ -1173,6 +1173,7 @@ int32_t S_OpenAudio(const char *fn, char Bfree(testfn); return origfp; @@ -131,9 +130,9 @@ diff -rupNw source-original/source/duke3d/src/common.cpp source/source/duke3d/sr } -#endif -diff -rupNw source-original/source/duke3d/src/game.cpp source/source/duke3d/src/game.cpp ---- source-original/source/duke3d/src/game.cpp 2018-10-07 07:23:48.000000000 +0200 -+++ source/source/duke3d/src/game.cpp 2018-12-03 19:18:30.728171279 +0100 +diff -rupwN source/source/duke3d/src/game.cpp source-new/source/duke3d/src/game.cpp +--- source/source/duke3d/src/game.cpp 2018-10-06 23:23:48.000000000 -0600 ++++ source-new/source/duke3d/src/game.cpp 2019-03-15 21:21:09.293857082 -0600 @@ -6697,7 +6697,7 @@ MAIN_LOOP_RESTART: static char buf[128]; #ifndef GEKKO @@ -143,9 +142,9 @@ diff -rupNw source-original/source/duke3d/src/game.cpp source/source/duke3d/src/ #endif if ((nb = read(0, &ch, 1)) > 0 && bufpos < sizeof(buf)) { -diff -rupNw source-original/source/enet/include/enet/unix.h source/source/enet/include/enet/unix.h ---- source-original/source/enet/include/enet/unix.h 2014-06-17 01:16:08.000000000 +0200 -+++ source/source/enet/include/enet/unix.h 2018-12-03 19:17:06.295237252 +0100 +diff -rupwN source/source/enet/include/enet/unix.h source-new/source/enet/include/enet/unix.h +--- source/source/enet/include/enet/unix.h 2014-06-16 17:16:08.000000000 -0600 ++++ source-new/source/enet/include/enet/unix.h 2019-03-15 21:21:09.293857082 -0600 @@ -6,6 +6,7 @@ #define __ENET_UNIX_H__ From 03a7f39cef39b5ae026bf8361b3a182866afb003 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 15 Mar 2019 21:32:03 -0600 Subject: [PATCH 0596/3180] Fix gigalomania --- recipes/gigalomania/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/gigalomania/recipe.sh b/recipes/gigalomania/recipe.sh index cf8e7225..768365a2 100644 --- a/recipes/gigalomania/recipe.sh +++ b/recipes/gigalomania/recipe.sh @@ -1,7 +1,7 @@ VERSION=0.27 GIT=https://gitlab.redox-os.org/redox-os/gigalomania.git BRANCH=master -BUILD_DEPENDS=(sdl_mixer sdl_image sdl liborbital libpng libjpeg zlib) +BUILD_DEPENDS=(sdl_mixer sdl_image sdl liborbital libogg libpng libjpeg libvorbis zlib) function recipe_version { echo "$VERSION" From 8af6ae249a3549d11dbbf395d58ec1c670bbbdc5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 31 Mar 2019 15:07:38 -0600 Subject: [PATCH 0597/3180] Disable ipv6 in curl --- recipes/curl/recipe.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/recipes/curl/recipe.sh b/recipes/curl/recipe.sh index 7ba99bd1..807a2a1b 100644 --- a/recipes/curl/recipe.sh +++ b/recipes/curl/recipe.sh @@ -23,13 +23,14 @@ function recipe_build { --prefix=/ \ --build=${BUILD} \ --host=${HOST} \ - --disable-tftp \ --disable-ftp \ + --disable-ipv6 \ --disable-ntlm-wb \ + --disable-tftp \ --disable-threaded-resolver \ - --with-zlib="$sysroot" \ + --with-ca-path=/ssl/certs \ --with-ssl="$sysroot" \ - --with-ca-path=/ssl/certs + --with-zlib="$sysroot" make -j"$(nproc)" skip=1 } From 5647f4953d50b03b48ca6dbb831a196406e4e0fd Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 31 Mar 2019 15:07:59 -0600 Subject: [PATCH 0598/3180] Reduce git patch --- recipes/git/git.patch | 179 +++++------------------------------------- 1 file changed, 20 insertions(+), 159 deletions(-) diff --git a/recipes/git/git.patch b/recipes/git/git.patch index c8c790fb..63ad8eec 100644 --- a/recipes/git/git.patch +++ b/recipes/git/git.patch @@ -1,62 +1,6 @@ -diff -ruw source/builtin/log.c source-new/builtin/log.c ---- source/builtin/log.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/builtin/log.c 2018-12-26 18:36:28.141445392 -0700 -@@ -308,6 +308,7 @@ - - static void setup_early_output(struct rev_info *rev) - { -+#if !defined(__redox__) - struct sigaction sa; - - /* -@@ -333,6 +334,7 @@ - early_output_timer.it_value.tv_sec = 0; - early_output_timer.it_value.tv_usec = 100000; - setitimer(ITIMER_REAL, &early_output_timer, NULL); -+#endif - } - - static void finish_early_output(struct rev_info *rev) -diff -ruw source/common-main.c source-new/common-main.c ---- source/common-main.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/common-main.c 2018-12-26 18:40:38.447229228 -0700 -@@ -15,12 +15,14 @@ - */ - static void restore_sigpipe_to_default(void) - { -+#if !defined(__redox__) - sigset_t unblock; - - sigemptyset(&unblock); - sigaddset(&unblock, SIGPIPE); - sigprocmask(SIG_UNBLOCK, &unblock, NULL); - signal(SIGPIPE, SIG_DFL); -+#endif - } - - int main(int argc, const char **argv) -diff -ruw source/compat/hstrerror.c source-new/compat/hstrerror.c ---- source/compat/hstrerror.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/compat/hstrerror.c 2018-12-26 18:37:12.495372666 -0700 -@@ -5,6 +5,7 @@ - const char *githstrerror(int err) - { - static char buffer[48]; -+#if !defined(__redox__) - switch (err) - { - case HOST_NOT_FOUND: -@@ -16,6 +17,7 @@ - case TRY_AGAIN: - return "Non-authoritative \"host not found\", or SERVERFAIL"; - } -+#endif - snprintf(buffer, sizeof(buffer), "Name resolution error %d", err); - return buffer; - } diff -ruw source/compat/terminal.c source-new/compat/terminal.c --- source/compat/terminal.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/compat/terminal.c 2018-12-26 18:39:47.177777683 -0700 ++++ source-new/compat/terminal.c 2019-03-13 14:50:29.028179965 -0600 @@ -137,6 +137,18 @@ return buf.buf; } @@ -76,21 +20,21 @@ diff -ruw source/compat/terminal.c source-new/compat/terminal.c #else char *git_terminal_prompt(const char *prompt, int echo) -diff -ruw source/connect.c source-new/connect.c ---- source/connect.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/connect.c 2018-12-26 18:56:40.601235949 -0700 -@@ -450,7 +450,7 @@ - - he = gethostbyname(host); - if (!he) -- die("Unable to look up %s (%s)", host, hstrerror(h_errno)); -+ die("Unable to look up %s (%s)", host, strerror(errno)); - nport = strtoul(port, &ep, 10); - if ( ep == port || *ep ) { - /* Not numeric */ +diff -ruw source/configure source-new/configure +--- source/configure 2017-06-04 19:08:11.000000000 -0600 ++++ source-new/configure 2019-03-27 19:53:37.398482599 -0600 +@@ -6156,7 +6156,7 @@ + ac_res=$ac_cv_search_getaddrinfo + if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" +- NO_IPV6= ++ NO_IPV6=YesPlease + else + NO_IPV6=YesPlease + fi diff -ruw source/daemon.c source-new/daemon.c --- source/daemon.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/daemon.c 2018-12-26 19:15:52.002437841 -0700 ++++ source-new/daemon.c 2019-03-13 14:50:29.028179965 -0600 @@ -71,13 +71,21 @@ return hi->ip_address.buf; } @@ -152,28 +96,9 @@ diff -ruw source/daemon.c source-new/daemon.c /* avoid splitting a message in the middle */ setvbuf(stderr, NULL, _IOFBF, 4096); -diff -ruw source/fast-import.c source-new/fast-import.c ---- source/fast-import.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/fast-import.c 2018-12-26 18:46:02.396322633 -0700 -@@ -531,6 +531,7 @@ - - static void set_checkpoint_signal(void) - { -+#if !defined(__redox__) - struct sigaction sa; - - memset(&sa, 0, sizeof(sa)); -@@ -538,6 +539,7 @@ - sigemptyset(&sa.sa_mask); - sa.sa_flags = SA_RESTART; - sigaction(SIGUSR1, &sa, NULL); -+#endif - } - - #endif diff -ruw source/git-compat-util.h source-new/git-compat-util.h --- source/git-compat-util.h 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/git-compat-util.h 2018-12-26 19:11:00.598201504 -0700 ++++ source-new/git-compat-util.h 2019-03-13 15:56:28.419769725 -0600 @@ -179,7 +179,9 @@ #include #include @@ -184,25 +109,7 @@ diff -ruw source/git-compat-util.h source-new/git-compat-util.h #ifndef NO_SYS_POLL_H #include #else -@@ -199,13 +201,17 @@ - #include - #include - #include -+#if !defined(__redox__) - #include -+#endif - #include - #ifndef NO_SYS_SELECT_H - #include - #endif - #include -+#if !defined(__redox__) - #include -+#endif - #include - #include - #include -@@ -320,8 +326,20 @@ +@@ -320,8 +322,20 @@ #endif #ifndef PATH_SEP @@ -225,7 +132,7 @@ diff -ruw source/git-compat-util.h source-new/git-compat-util.h #include diff -ruw source/Makefile source-new/Makefile --- source/Makefile 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/Makefile 2018-12-26 18:35:54.096906095 -0700 ++++ source-new/Makefile 2019-03-13 14:50:29.028179965 -0600 @@ -1802,7 +1802,6 @@ $(BUILT_INS): git$X @@ -265,39 +172,9 @@ diff -ruw source/Makefile source-new/Makefile ln -s "git-remote-http$X" "$$execdir/$$p" 2>/dev/null || \ cp "$$execdir/git-remote-http$X" "$$execdir/$$p" || exit; \ done && \ -diff -ruw source/progress.c source-new/progress.c ---- source/progress.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/progress.c 2018-12-26 19:13:24.522688882 -0700 -@@ -52,11 +52,13 @@ - - progress_update = 0; - -+#if !defined(__redox__) - memset(&sa, 0, sizeof(sa)); - sa.sa_handler = progress_interval; - sigemptyset(&sa.sa_mask); - sa.sa_flags = SA_RESTART; - sigaction(SIGALRM, &sa, NULL); -+#endif - - v.it_interval.tv_sec = 1; - v.it_interval.tv_usec = 0; -@@ -74,8 +76,12 @@ - - static int is_foreground_fd(int fd) - { -+#if defined(__redox__) -+ return 1; -+#else - int tpgrp = tcgetpgrp(fd); - return tpgrp < 0 || tpgrp == getpgid(0); -+#endif - } - - static int display(struct progress *progress, unsigned n, const char *done) diff -ruw source/run-command.c source-new/run-command.c --- source/run-command.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/run-command.c 2018-12-26 19:19:21.042685078 -0700 ++++ source-new/run-command.c 2019-03-13 15:56:57.331276675 -0600 @@ -120,9 +120,9 @@ #ifndef GIT_WINDOWS_NATIVE static inline void dup_devnull(int to) @@ -319,25 +196,9 @@ diff -ruw source/run-command.c source-new/run-command.c strbuf_reset(&buf); -@@ -622,6 +622,7 @@ - struct async *async = data; - intptr_t ret; - -+#if !defined(__redox__) - if (async->isolate_sigpipe) { - sigset_t mask; - sigemptyset(&mask); -@@ -631,6 +632,7 @@ - return (void *)ret; - } - } -+#endif - - pthread_setspecific(async_key, async); - ret = async->proc(async->proc_in, async->proc_out, async->data); diff -ruw source/setup.c source-new/setup.c --- source/setup.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/setup.c 2018-12-26 18:52:50.070479933 -0700 ++++ source-new/setup.c 2019-03-13 14:50:29.028179965 -0600 @@ -1146,11 +1146,11 @@ /* if any standard file descriptor is missing open it to /dev/null */ void sanitize_stdfds(void) @@ -365,7 +226,7 @@ diff -ruw source/setup.c source-new/setup.c close(2); diff -ruw source/strbuf.c source-new/strbuf.c --- source/strbuf.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/strbuf.c 2018-12-26 18:53:39.586122270 -0700 ++++ source-new/strbuf.c 2019-03-13 14:50:29.028179965 -0600 @@ -446,6 +446,13 @@ for (;; guessed_len *= 2) { strbuf_grow(sb, guessed_len); From 529f4f16411d77159ae6ea0c6835ecca884354ed Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 31 Mar 2019 21:07:31 -0600 Subject: [PATCH 0599/3180] WIP: wesnoth recipe --- recipes/wesnoth/recipe.sh | 72 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 recipes/wesnoth/recipe.sh diff --git a/recipes/wesnoth/recipe.sh b/recipes/wesnoth/recipe.sh new file mode 100644 index 00000000..b258c15b --- /dev/null +++ b/recipes/wesnoth/recipe.sh @@ -0,0 +1,72 @@ +VERSION=1.14.6 +GIT=https://github.com/wesnoth/wesnoth.git +BRANCH=$VERSION +BUILD_DEPENDS=( + cairo + freetype + glib + libjpeg + liborbital + libpng + libvorbis + llvm + mesa mesa_glu + pcre + pixman + sdl2 sdl2_image sdl2_mixer sdl2_ttf + zlib +) + +function recipe_version { + printf "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib" + + rm -rf build + mkdir -p build + cd build + set -x + cmake \ + -DCMAKE_INSTALL_PREFIX:PATH=/ \ + -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \ + -DENABLE_SERVER=OFF \ + -DENABLE_TESTS=OFF \ + -DCRYPTO_LIBRARY=openssl \ + -DSDL2_LIBRARY=sdl2 \ + -DSDL2_IMAGE_LIBRARY=SDL2_image \ + -DSDL2_MIXER_LIBRARY=SDL2_mixer \ + -DSDL2_TTF_LIBRARY=SDL2_ttf \ + -DVORBISFILE_INCLUDE_DIR="${sysroot}/include" \ + -DVORBISFILE_LIBRARY=vorbisfile \ + .. + VERBOSE=1 make all -j"$(nproc)" + set +x + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + rm -rf build + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + mkdir -pv "$dest/bin" + cp "build/wesnoth" "$dest/bin/wesnoth" + skip=1 +} From f31064caa177d3691911ef74850b561efb405b7f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 7 Apr 2019 10:47:52 -0600 Subject: [PATCH 0600/3180] Update pkgutils --- pkgutils | 2 +- recipes/git/recipe.sh | 22 ++++++++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/pkgutils b/pkgutils index 4908c5e4..7297400b 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit 4908c5e486afca3371b20245b50a21a9eeeef084 +Subproject commit 7297400ba80310df28f9a8df27ae4c65efafc596 diff --git a/recipes/git/recipe.sh b/recipes/git/recipe.sh index 1688d1c8..21c2a6f7 100644 --- a/recipes/git/recipe.sh +++ b/recipes/git/recipe.sh @@ -3,7 +3,14 @@ TAR=https://www.kernel.org/pub/software/scm/git/git-$VERSION.tar.xz BUILD_DEPENDS=(zlib curl openssl expat) DEPENDS="ca-certificates" -MAKEFLAGS="NO_MMAP=1 NEEDS_SSL_WITH_CURL=1 NEEDS_CRYPTO_WITH_SSL=1 NO_UNIX_SOCKETS=1 NEEDS_LIBICONV= NEEDS_LIBRT= BLK_SHA1=1" +MAKEFLAGS=( + NEEDS_SSL_WITH_CURL=1 + NEEDS_CRYPTO_WITH_SSL=1 + NO_UNIX_SOCKETS=1 + NEEDS_LIBICONV= + NEEDS_LIBRT= + BLK_SHA1=1 +) function recipe_version { echo "$VERSION" @@ -19,8 +26,15 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" - ./configure --build=${BUILD} --host=${HOST} --prefix=/ ac_cv_fread_reads_directories=yes ac_cv_snprintf_returns_bogus=yes ac_cv_lib_curl_curl_global_init=yes CURL_CONFIG=no - make ${MAKEFLAGS} -j"$(nproc)" + ./configure \ + --build="${BUILD}" \ + --host="${HOST}" \ + --prefix=/ \ + ac_cv_fread_reads_directories=yes \ + ac_cv_snprintf_returns_bogus=yes \ + ac_cv_lib_curl_curl_global_init=yes \ + CURL_CONFIG=no + make "${MAKEFLAGS[@]}" -j"$(nproc)" skip=1 } @@ -36,7 +50,7 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" ${MAKEFLAGS} install + make DESTDIR="$dest" "${MAKEFLAGS[@]}" install ${STRIP} $1/bin/* || true ${STRIP} $1/libexec/git-core/* || true rm -rf $1/share/man From 8e7074e3695ce29a79cf86b29d19b95815706b1c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 9 Apr 2019 17:57:08 -0600 Subject: [PATCH 0601/3180] Add nghttp2 --- recipes/nghttp2/recipe.sh | 40 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 recipes/nghttp2/recipe.sh diff --git a/recipes/nghttp2/recipe.sh b/recipes/nghttp2/recipe.sh new file mode 100644 index 00000000..1b73275d --- /dev/null +++ b/recipes/nghttp2/recipe.sh @@ -0,0 +1,40 @@ +VERSION=1.37.0 +TAR=https://github.com/nghttp2/nghttp2/releases/download/v${VERSION}/nghttp2-${VERSION}.tar.xz + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + ./configure \ + --build="${BUILD}" \ + --host="${HOST}" \ + --prefix="" \ + --enable-lib-only + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make install DESTDIR="$dest" + find "$dest/lib" -exec ${HOST}-strip {} ';' 2> /dev/null + rm -f "$dest/lib/"*.la + skip=1 +} From 5d8eb8bac4fe9ca9038bb66fb716ccf92c755000 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 9 Apr 2019 17:59:17 -0600 Subject: [PATCH 0602/3180] Add nghttp2 to curl --- recipes/curl/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/curl/recipe.sh b/recipes/curl/recipe.sh index 807a2a1b..a33f5aa9 100644 --- a/recipes/curl/recipe.sh +++ b/recipes/curl/recipe.sh @@ -2,7 +2,7 @@ VERSION="7.62.0" #TAR=https://curl.haxx.se/download/curl-$VERSION.tar.gz GIT=https://gitlab.redox-os.org/redox-os/curl.git GIT_BRANCH=redox -BUILD_DEPENDS=(openssl zlib) +BUILD_DEPENDS=(nghttp2 openssl zlib) DEPENDS="ca-certificates" function recipe_version { From 39c61337ed9ef4648a75f7a516cb40497ef7e523 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 9 Apr 2019 17:59:37 -0600 Subject: [PATCH 0603/3180] Add upstream openssl git --- recipes/openssl/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/openssl/recipe.sh b/recipes/openssl/recipe.sh index 6e598a0f..b51b6680 100644 --- a/recipes/openssl/recipe.sh +++ b/recipes/openssl/recipe.sh @@ -1,5 +1,6 @@ GIT=https://gitlab.redox-os.org/redox-os/openssl.git BRANCH=redox +GIT_UPSTREAM=https://github.com/openssl/openssl.git function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" From 37859d551d5ee5c0d71c2312880b718baf179b06 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 9 Apr 2019 17:59:55 -0600 Subject: [PATCH 0604/3180] Add curl dependency to cargo --- recipes/cargo/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/cargo/recipe.sh b/recipes/cargo/recipe.sh index a5cbda87..2713ebec 100644 --- a/recipes/cargo/recipe.sh +++ b/recipes/cargo/recipe.sh @@ -1,7 +1,7 @@ GIT=https://gitlab.redox-os.org/redox-os/cargo.git GIT_UPSTREAM=https://github.com/rust-lang/cargo.git BRANCH=redox -BUILD_DEPENDS=(openssl zlib) +BUILD_DEPENDS=(curl openssl zlib) function recipe_build { sysroot="$(realpath ../sysroot)" From 9256f76ce68c85d12475281cfbad04ce9d72e3b2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 9 Apr 2019 20:11:22 -0600 Subject: [PATCH 0605/3180] Do not strip nghttp2 libs --- recipes/nghttp2/recipe.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/nghttp2/recipe.sh b/recipes/nghttp2/recipe.sh index 1b73275d..f077220c 100644 --- a/recipes/nghttp2/recipe.sh +++ b/recipes/nghttp2/recipe.sh @@ -15,7 +15,7 @@ function recipe_build { ./configure \ --build="${BUILD}" \ --host="${HOST}" \ - --prefix="" \ + --prefix=/ \ --enable-lib-only make -j"$(nproc)" skip=1 @@ -34,7 +34,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make install DESTDIR="$dest" - find "$dest/lib" -exec ${HOST}-strip {} ';' 2> /dev/null rm -f "$dest/lib/"*.la skip=1 } From 689691a2e97696d5184eec6223756bd5e75b5300 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 9 Apr 2019 20:11:57 -0600 Subject: [PATCH 0606/3180] Add nghttp2 to curl --- recipes/curl/recipe.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/curl/recipe.sh b/recipes/curl/recipe.sh index a33f5aa9..0bf0d388 100644 --- a/recipes/curl/recipe.sh +++ b/recipes/curl/recipe.sh @@ -17,6 +17,8 @@ function recipe_update { function recipe_build { sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib" wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub autoreconf -i ./configure \ @@ -29,6 +31,7 @@ function recipe_build { --disable-tftp \ --disable-threaded-resolver \ --with-ca-path=/ssl/certs \ + --with-nghttp2="$sysroot" \ --with-ssl="$sysroot" \ --with-zlib="$sysroot" make -j"$(nproc)" From 9d7ebb615bc86e3cb35cbc49e183ed579b2f2404 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 10 Apr 2019 20:39:06 -0600 Subject: [PATCH 0607/3180] Fix relibc recipe --- recipes/relibc/recipe.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/relibc/recipe.sh b/recipes/relibc/recipe.sh index 1807bcc9..ff492a05 100644 --- a/recipes/relibc/recipe.sh +++ b/recipes/relibc/recipe.sh @@ -1,14 +1,14 @@ GIT=https://gitlab.redox-os.org/redox-os/relibc.git function recipe_build { - make -j"$(nproc)" - make -C tests -j"$(nproc)" + make CARGO=xargo -j"$(nproc)" + make CARGO=xargo -C tests -j"$(nproc)" skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + make CARGO=xargo DESTDIR="$dest" install mkdir -pv "$dest/share/relibc" cp -rv "tests" "$dest/share/relibc/tests" skip=1 From 5547f84097e0c64b139b5617a4ab7d2a66674c5c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 10 Apr 2019 20:41:46 -0600 Subject: [PATCH 0608/3180] Add dynamic linking example (does not work yet) --- recipes/dynamic-example/recipe.sh | 35 +++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 recipes/dynamic-example/recipe.sh diff --git a/recipes/dynamic-example/recipe.sh b/recipes/dynamic-example/recipe.sh new file mode 100644 index 00000000..d14985ba --- /dev/null +++ b/recipes/dynamic-example/recipe.sh @@ -0,0 +1,35 @@ +GIT=https://gitlab.redox-os.org/redox-os/dynamic-example.git + +function recipe_version { + printf "1.0.0" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="$(realpath ../sysroot)" + export LDFLAGS="-L$sysroot/lib" + export CPPFLAGS="-I$sysroot/include" + make prefix=/ + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make prefix=/ DESTDIR="$dest" install + skip=1 +} From ccefd458f7ff2eeb4e21464e1629584c54ebab3a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 15 Apr 2019 21:32:30 -0600 Subject: [PATCH 0609/3180] Do not include tests in relibc package --- recipes/relibc/recipe.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/recipes/relibc/recipe.sh b/recipes/relibc/recipe.sh index ff492a05..7518a071 100644 --- a/recipes/relibc/recipe.sh +++ b/recipes/relibc/recipe.sh @@ -2,14 +2,11 @@ GIT=https://gitlab.redox-os.org/redox-os/relibc.git function recipe_build { make CARGO=xargo -j"$(nproc)" - make CARGO=xargo -C tests -j"$(nproc)" skip=1 } function recipe_stage { dest="$(realpath $1)" make CARGO=xargo DESTDIR="$dest" install - mkdir -pv "$dest/share/relibc" - cp -rv "tests" "$dest/share/relibc/tests" skip=1 } From a41f930411b8b5e114f0a420de6fb6d8b75d120f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 18 Apr 2019 20:57:03 -0600 Subject: [PATCH 0610/3180] Update to use llvm-project --- recipes/llvm/recipe.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/recipes/llvm/recipe.sh b/recipes/llvm/recipe.sh index 286b0d78..f84ffaf3 100644 --- a/recipes/llvm/recipe.sh +++ b/recipes/llvm/recipe.sh @@ -1,5 +1,5 @@ -GIT=https://gitlab.redox-os.org/redox-os/llvm.git -GIT_UPSTREAM=https://github.com/rust-lang/llvm.git +GIT=https://gitlab.redox-os.org/redox-os/llvm-project.git +GIT_UPSTREAM=https://github.com/rust-lang/llvm-project.git BRANCH=redox function recipe_version { @@ -19,7 +19,7 @@ function recipe_prepare { function recipe_build { native="$(realpath ../native.cmake)" - source="$(realpath ../source)" + source="$(realpath ../source/llvm)" sysroot="$(realpath ../sysroot)" CMAKE_ARGS=( -DCMAKE_AR="$(which "${AR}")" @@ -60,8 +60,10 @@ function recipe_build { -I"$sysroot/include" -Wno-dev ) + set -x cmake "${CMAKE_ARGS[@]}" "$source" make -j$(nproc) + set +x skip=1 } From dbe058a90149ca1729f230982265e1cc9ac72120 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 18 Apr 2019 22:01:40 -0600 Subject: [PATCH 0611/3180] Update rust recipe to new rust --- recipes/rust/recipe.sh | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index 18a5ebbf..05718cbe 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -34,11 +34,9 @@ function recipe_clean { function recipe_stage { binpath="$1/bin" - libpath="$1/lib/rustlib/${TARGET}/lib" - mkdir -p "$binpath" "$libpath" - cp -fv "build/"*"/stage2-rustc/${TARGET}/release/rustc_binary" "$binpath/rustc" - cp -fv "build/"*"/stage2-tools/${TARGET}/release/rustdoc_tool_binary" "$binpath/rustdoc" - cp -fv $(find "build/"*"/stage2/lib/rustlib/${TARGET}/lib/" -type f | grep -v librustc) "$libpath" + libpath="$1/lib" + cp -frv "build/${TARGET}/stage2/bin" "$binpath" + cp -frv "build/${TARGET}/stage2/lib" "$libpath" ${STRIP} "$binpath/"* skip=1 } From 93185f399548a454de09e3998708797d384c9a09 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 19 Apr 2019 19:59:06 -0600 Subject: [PATCH 0612/3180] Make cargo configurable --- cook.sh | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/cook.sh b/cook.sh index 07936d1b..65bd49b2 100755 --- a/cook.sh +++ b/cook.sh @@ -6,6 +6,7 @@ source config.sh # Variables to be overriden by recipes export BINDIR=bin +export CARGO=xargo export CARGOBUILD=rustc export CARGOFLAGS= export DEBUG= @@ -229,7 +230,7 @@ function op { fi if [ "$skip" -eq "0" ] then - xargo update + "${CARGO}" update fi popd > /dev/null ;; @@ -312,7 +313,7 @@ function op { if [ "$skip" -eq "0" ] then cp -p "$ROOT/Xargo.toml" "Xargo.toml" - xargo "$CARGOBUILD" --target "$TARGET" $release_flag $CARGOFLAGS + "${CARGO}" "$CARGOBUILD" --target "$TARGET" $release_flag $CARGOFLAGS fi popd > /dev/null ;; @@ -333,7 +334,7 @@ function op { if [ "$skip" -eq "0" ] then cp -p "$ROOT/Xargo.toml" "Xargo.toml" - xargo test --no-run --target "$TARGET" $release_flag $CARGOFLAGS + "${CARGO}" test --no-run --target "$TARGET" $release_flag $CARGOFLAGS fi popd > /dev/null ;; @@ -346,7 +347,7 @@ function op { fi if [ "$skip" -eq "0" ] then - xargo clean + "${CARGO}" clean fi popd > /dev/null ;; @@ -362,7 +363,7 @@ function op { fi if [ "$skip" -eq "0" ] then - #TODO xargo install --root "$stage" $CARGOFLAGS + #TODO "${CARGO}" install --root "$stage" $CARGOFLAGS if [ "$DEBUG" == 1 ] then build=debug From 24cf46a58ccd5c32cd66539355673e7b537dbcdc Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 19 Apr 2019 21:11:38 -0600 Subject: [PATCH 0613/3180] Disable backtrace --- Xargo.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Xargo.toml b/Xargo.toml index 07a581d9..942fbc3a 100644 --- a/Xargo.toml +++ b/Xargo.toml @@ -2,7 +2,8 @@ features = ["panic_unwind"] [target.x86_64-unknown-redox.dependencies.std] -features = ["panic_unwind", "backtrace"] +features = ["panic_unwind"] +#features = ["panic_unwind", "backtrace"] #[dependencies.test] #stage = 1 From 26187c28bee339044a54bdf945986a1bc97dd88b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 19 Apr 2019 21:22:46 -0600 Subject: [PATCH 0614/3180] Allow passing of rustflags from prefix to xargo --- cook.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/cook.sh b/cook.sh index 65bd49b2..6cd0bf22 100755 --- a/cook.sh +++ b/cook.sh @@ -6,7 +6,7 @@ source config.sh # Variables to be overriden by recipes export BINDIR=bin -export CARGO=xargo +export CARGO=(env RUSTFLAGS="$PREFIX_RUSTFLAGS" xargo) export CARGOBUILD=rustc export CARGOFLAGS= export DEBUG= @@ -230,7 +230,7 @@ function op { fi if [ "$skip" -eq "0" ] then - "${CARGO}" update + "${CARGO[@]}" update fi popd > /dev/null ;; @@ -313,7 +313,7 @@ function op { if [ "$skip" -eq "0" ] then cp -p "$ROOT/Xargo.toml" "Xargo.toml" - "${CARGO}" "$CARGOBUILD" --target "$TARGET" $release_flag $CARGOFLAGS + "${CARGO[@]}" "$CARGOBUILD" --target "$TARGET" $release_flag $CARGOFLAGS fi popd > /dev/null ;; @@ -334,7 +334,7 @@ function op { if [ "$skip" -eq "0" ] then cp -p "$ROOT/Xargo.toml" "Xargo.toml" - "${CARGO}" test --no-run --target "$TARGET" $release_flag $CARGOFLAGS + "${CARGO[@]}" test --no-run --target "$TARGET" $release_flag $CARGOFLAGS fi popd > /dev/null ;; @@ -347,7 +347,7 @@ function op { fi if [ "$skip" -eq "0" ] then - "${CARGO}" clean + "${CARGO[@]}" clean fi popd > /dev/null ;; @@ -363,7 +363,7 @@ function op { fi if [ "$skip" -eq "0" ] then - #TODO "${CARGO}" install --root "$stage" $CARGOFLAGS + #TODO "${CARGO[@]}" install --root "$stage" $CARGOFLAGS if [ "$DEBUG" == 1 ] then build=debug From 2bc929b65c5aa05c6cacdd9e03536fec7a8c179f Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Wed, 24 Apr 2019 10:52:33 +0200 Subject: [PATCH 0615/3180] Resolve xz building issue for me --- recipes/xz/recipe.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/recipes/xz/recipe.sh b/recipes/xz/recipe.sh index e1221711..d5ca281d 100644 --- a/recipes/xz/recipe.sh +++ b/recipes/xz/recipe.sh @@ -12,6 +12,10 @@ function recipe_update { } function recipe_build { + # Workaround of + # xzdec: hidden symbol `main' in xzdec-xzdec.o is referenced by DSO + export CFLAGS="-fvisibility=default" + ./autogen.sh chmod +w build-aux/config.sub wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub From 38000b8e8655fb5f533d553a84d148b1f8751774 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 24 Apr 2019 10:34:31 -0600 Subject: [PATCH 0616/3180] Fix netsurf recipe --- recipes/netsurf/recipe.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/recipes/netsurf/recipe.sh b/recipes/netsurf/recipe.sh index a2ed0e95..28b7246f 100644 --- a/recipes/netsurf/recipe.sh +++ b/recipes/netsurf/recipe.sh @@ -1,6 +1,6 @@ VERSION=3.7 TAR=http://download.netsurf-browser.org/netsurf/releases/source-full/netsurf-all-$VERSION.tar.gz -BUILD_DEPENDS=(curl expat libjpeg libpng openssl sdl zlib freetype liborbital libiconv) +BUILD_DEPENDS=(curl expat libjpeg libpng nghttp2 openssl sdl zlib freetype liborbital libiconv) DEPENDS="ca-certificates orbital" function recipe_version { @@ -18,6 +18,8 @@ function recipe_build { export TARGET="framebuffer" export CFLAGS="-I$sysroot/include -I${PWD}/inst-${TARGET}/include" export LDFLAGS="-L$sysroot/lib -L${PWD}/inst-${TARGET}/lib -Wl,--allow-multiple-definition" + # nghttp2 is not linked for some reason + export LDFLAGS="${LDFLAGS} -lcurl -lnghttp2" make V=1 -j"$(nproc)" skip=1 } From 1e812da7c2771289ab07578a8cc1e610123dd60f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 24 Apr 2019 11:20:04 -0600 Subject: [PATCH 0617/3180] Build netsurf-fb statically --- recipes/netsurf/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/netsurf/recipe.sh b/recipes/netsurf/recipe.sh index 28b7246f..0bfc582b 100644 --- a/recipes/netsurf/recipe.sh +++ b/recipes/netsurf/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export TARGET="framebuffer" export CFLAGS="-I$sysroot/include -I${PWD}/inst-${TARGET}/include" - export LDFLAGS="-L$sysroot/lib -L${PWD}/inst-${TARGET}/lib -Wl,--allow-multiple-definition" + export LDFLAGS="-L$sysroot/lib -L${PWD}/inst-${TARGET}/lib -Wl,--allow-multiple-definition -Wl,-Bstatic" # nghttp2 is not linked for some reason export LDFLAGS="${LDFLAGS} -lcurl -lnghttp2" make V=1 -j"$(nproc)" From de017a06660cd76af04a12e55be7fddd4018f731 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 24 Apr 2019 21:07:51 -0600 Subject: [PATCH 0618/3180] Patches for Redox as part of the unix target family --- recipes/coreutils/recipe.sh | 1 + recipes/drivers/recipe.sh | 1 + recipes/logd/recipe.sh | 1 + recipes/netstack/recipe.sh | 1 + recipes/netutils/recipe.sh | 1 + recipes/orbital/recipe.sh | 1 + recipes/orbterm/recipe.sh | 1 + 7 files changed, 7 insertions(+) diff --git a/recipes/coreutils/recipe.sh b/recipes/coreutils/recipe.sh index f9558499..0577bb10 100644 --- a/recipes/coreutils/recipe.sh +++ b/recipes/coreutils/recipe.sh @@ -1 +1,2 @@ GIT=https://gitlab.redox-os.org/redox-os/coreutils.git +BRANCH=redox-unix diff --git a/recipes/drivers/recipe.sh b/recipes/drivers/recipe.sh index 4c5becb8..5672d3cc 100644 --- a/recipes/drivers/recipe.sh +++ b/recipes/drivers/recipe.sh @@ -1,4 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/drivers.git +BRANCH=redox-unix CARGOBUILD="build" CARGOFLAGS="--all" diff --git a/recipes/logd/recipe.sh b/recipes/logd/recipe.sh index cffbc308..63d28ad7 100644 --- a/recipes/logd/recipe.sh +++ b/recipes/logd/recipe.sh @@ -1 +1,2 @@ GIT=https://gitlab.redox-os.org/redox-os/logd.git +BRANCH=redox-unix diff --git a/recipes/netstack/recipe.sh b/recipes/netstack/recipe.sh index 8b826c55..a32e83c6 100644 --- a/recipes/netstack/recipe.sh +++ b/recipes/netstack/recipe.sh @@ -1 +1,2 @@ GIT=https://gitlab.redox-os.org/redox-os/netstack.git +BRANCH=redox-unix diff --git a/recipes/netutils/recipe.sh b/recipes/netutils/recipe.sh index ff6016b5..2c79d7ea 100644 --- a/recipes/netutils/recipe.sh +++ b/recipes/netutils/recipe.sh @@ -1 +1,2 @@ GIT=https://gitlab.redox-os.org/redox-os/netutils.git +BRANCH=redox-unix diff --git a/recipes/orbital/recipe.sh b/recipes/orbital/recipe.sh index 68484f39..c1e76305 100644 --- a/recipes/orbital/recipe.sh +++ b/recipes/orbital/recipe.sh @@ -1,3 +1,4 @@ GIT=https://gitlab.redox-os.org/redox-os/orbital.git +BRANCH=redox-unix CARGOFLAGS="--bin orbital -- -C lto" DEPENDS="orbdata" diff --git a/recipes/orbterm/recipe.sh b/recipes/orbterm/recipe.sh index 9976d87a..af3644b9 100644 --- a/recipes/orbterm/recipe.sh +++ b/recipes/orbterm/recipe.sh @@ -1,4 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/orbterm.git +BRANCH=redox-unix BINDIR=/ui/bin CARGOFLAGS="--bin orbterm -- -C lto" DEPENDS="orbital" From ab95a71636d683f339375c9dc35ac5ea2dda4f51 Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Thu, 25 Apr 2019 17:09:57 +0200 Subject: [PATCH 0619/3180] New flag: Enable example binaries alongside using EXAMPLES=1 --- cook.sh | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/cook.sh b/cook.sh index 6cd0bf22..bad288a4 100755 --- a/cook.sh +++ b/cook.sh @@ -10,6 +10,7 @@ export CARGO=(env RUSTFLAGS="$PREFIX_RUSTFLAGS" xargo) export CARGOBUILD=rustc export CARGOFLAGS= export DEBUG= +export EXAMPLES= export PREPARE_COPY=1 if [ ! "$(uname -s)" = "Redox" ] @@ -355,6 +356,7 @@ function op { op $1 unstage mkdir -p stage stage="$(realpath stage)" + source="$(realpath source)" pushd build > /dev/null skip=0 if [ "$(type -t recipe_stage)" = "function" ] @@ -372,15 +374,15 @@ function op { fi bins="$(find target/$TARGET/$build/ -maxdepth 1 -type f ! -name '*.*')" - if [ -z "$bins" ] + if [ -z "$bins" ] || [ "$EXAMPLES" == 1 ] then example=true - bins="$(find target/$TARGET/$build/examples/ -maxdepth 1 -type f ! -name '*.*' ! -name '*-*' \ + bins="$bins $(find target/$TARGET/$build/examples/ -maxdepth 1 -type f ! -name '*.*' ! -name '*-*' \ 2> /dev/null || true)" fi if [ -n "$bins" ] then - if [ -n "$example" ] + if [ -n "$example" ] && [ "$EXAMPLES" != 1 ] then echo "$(tput bold)Note$(tput sgr0): No binaries detected, using example binaries" fi @@ -398,7 +400,7 @@ function op { echo "$(tput bold)Warning$(tput sgr0): Recipe does not have any binaries" >&2 fi - docgen ../source ../stage/ref + docgen "$source" "$stage/ref" fi popd > /dev/null ;; From 6cb06348f929f5c29e63eb97fd183306f83c7613 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 26 Apr 2019 18:44:16 -0600 Subject: [PATCH 0620/3180] Patches for orbutils --- recipes/orbutils/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/orbutils/recipe.sh b/recipes/orbutils/recipe.sh index 281976f9..f32991af 100644 --- a/recipes/orbutils/recipe.sh +++ b/recipes/orbutils/recipe.sh @@ -1,3 +1,4 @@ GIT=https://gitlab.redox-os.org/redox-os/orbutils.git +BRANCH=redox-unix BINDIR=/ui/bin DEPENDS="orbital" From 90dd61553a1a376c23cb45458126e82fd9e7e48b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 27 Apr 2019 20:41:53 -0600 Subject: [PATCH 0621/3180] Use patched branch of ion --- recipes/ion/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/ion/recipe.sh b/recipes/ion/recipe.sh index fda62673..38336a25 100644 --- a/recipes/ion/recipe.sh +++ b/recipes/ion/recipe.sh @@ -1 +1,2 @@ GIT=https://gitlab.redox-os.org/redox-os/ion.git +BRANCH=redox-unix From 63d4da139eb808bec82b2c2dab2a6e242be21ec6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 27 Apr 2019 20:42:11 -0600 Subject: [PATCH 0622/3180] Use patched branch of uutils, update list of binaries --- recipes/uutils/recipe.sh | 126 +++++++++++++++++++++++---------------- 1 file changed, 76 insertions(+), 50 deletions(-) diff --git a/recipes/uutils/recipe.sh b/recipes/uutils/recipe.sh index 67c7f51c..1e1748f2 100644 --- a/recipes/uutils/recipe.sh +++ b/recipes/uutils/recipe.sh @@ -3,56 +3,82 @@ GIT_UPSTREAM=https://github.com/uutils/coreutils.git CARGOFLAGS="--no-default-features --features redox --bin uutils -- -C lto" BINS=( - base32 - base64 - basename - chmod - cksum - comm - cp - cut - date - dircolors - dirname - echo - env - expand - expr - factor - false - fmt - fold - head - install - link - ls - mktemp - mv - od - paste - printenv - printf - pwd - readlink - realpath - relpath - rm - rmdir - seq - shuf - sleep - split - sum - tac - tee - tr - true - truncate - tsort - unexpand - uniq - wc - yes + base32 + base64 + basename + cat + chmod + cksum + comm + cp + cut + date + dircolors + dirname + echo + env + expand + expr + factor + false + fmt + fold + hashsum + head + install + join + link + ln + ls + md5sum + mkdir + mktemp + more + mv + nl + od + paste + printenv + printf + ptx + pwd + readlink + realpath + relpath + rm + rmdir + seq + sha1sum + sha224sum + sha256sum + sha3-224sum + sha3-256sum + sha3-384sum + sha3-512sum + sha384sum + sha3sum + sha512sum + shake128sum + shake256sum + shred + shuf + sleep + sort + split + sum + tac + tail + tee + test + tr + true + truncate + tsort + uname + unexpand + uniq + wc + yes ) function recipe_stage { From 5f795c0df9748fad912bd632a0fcbad67c721450 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 28 Apr 2019 19:32:47 -0600 Subject: [PATCH 0623/3180] Add recipe for relibc tests, patch userutils --- recipes/relibc-tests/recipe.sh | 13 +++++++++++++ recipes/userutils/recipe.sh | 1 + 2 files changed, 14 insertions(+) create mode 100644 recipes/relibc-tests/recipe.sh diff --git a/recipes/relibc-tests/recipe.sh b/recipes/relibc-tests/recipe.sh new file mode 100644 index 00000000..56df0194 --- /dev/null +++ b/recipes/relibc-tests/recipe.sh @@ -0,0 +1,13 @@ +GIT=https://gitlab.redox-os.org/redox-os/relibc.git + +function recipe_build { + make CARGO=xargo NATIVE_RELIBC=1 -C tests -j"$(nproc)" + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + mkdir -pv "$dest/share/relibc" + cp -rv "tests" "$dest/share/relibc/tests" + skip=1 +} diff --git a/recipes/userutils/recipe.sh b/recipes/userutils/recipe.sh index 4384373c..13936c86 100644 --- a/recipes/userutils/recipe.sh +++ b/recipes/userutils/recipe.sh @@ -1,4 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/userutils.git +BRANCH=redox-unix BINS=( id getty From b5ff69a073670b19bf8c6e844343fb6d7674f539 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 11 May 2019 10:10:25 -0600 Subject: [PATCH 0624/3180] Build dash statically --- recipes/dash/recipe.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/recipes/dash/recipe.sh b/recipes/dash/recipe.sh index 37a0aceb..9f3d22c1 100644 --- a/recipes/dash/recipe.sh +++ b/recipes/dash/recipe.sh @@ -13,7 +13,12 @@ function recipe_update { function recipe_build { ./autogen.sh - ./configure --build=${BUILD} --host=${HOST} --prefix=/ cross_compiling=yes + ./configure \ + --build=${BUILD} \ + --host=${HOST} \ + --prefix=/ \ + --enable-static \ + cross_compiling=yes make -j"$(nproc)" skip=1 } From bf7498328c70fd8f0bc9e672b8978cbea8322763 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 11 May 2019 10:10:41 -0600 Subject: [PATCH 0625/3180] Add nulld, randd, and zerod to kernel recipe --- recipes/kernel/init.rc | 3 +++ recipes/kernel/recipe.sh | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/kernel/init.rc b/recipes/kernel/init.rc index db322fcd..25c5ba03 100644 --- a/recipes/kernel/init.rc +++ b/recipes/kernel/init.rc @@ -1,5 +1,8 @@ export PATH /bin export TMPDIR /tmp +nulld +zerod +randd vesad T T G stdio display:1 ps2d us diff --git a/recipes/kernel/recipe.sh b/recipes/kernel/recipe.sh index 469d6706..34c789d2 100644 --- a/recipes/kernel/recipe.sh +++ b/recipes/kernel/recipe.sh @@ -1,5 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/kernel.git -BUILD_DEPENDS=(drivers init redoxfs) +BUILD_DEPENDS=(drivers init nulld randd redoxfs zerod) function recipe_build { export INITFS_FOLDER="$(realpath ../sysroot)" From 1a43f19e0dd9ba00b454f3c2432ce2c7ae5fb318 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 11 May 2019 10:41:14 -0600 Subject: [PATCH 0626/3180] Switch extrautils to redox-unix branch --- recipes/extrautils/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/extrautils/recipe.sh b/recipes/extrautils/recipe.sh index c046ce05..fda65270 100644 --- a/recipes/extrautils/recipe.sh +++ b/recipes/extrautils/recipe.sh @@ -1,2 +1,3 @@ GIT=https://gitlab.redox-os.org/redox-os/extrautils.git +BRANCH=redox-unix BUILD_DEPENDS=(xz) From f158c12fb7f63b14d9ace73683383224e08e522e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 11 May 2019 10:58:29 -0600 Subject: [PATCH 0627/3180] Switch uutils branch to redox-unix --- recipes/uutils/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/uutils/recipe.sh b/recipes/uutils/recipe.sh index 1e1748f2..e032fe5a 100644 --- a/recipes/uutils/recipe.sh +++ b/recipes/uutils/recipe.sh @@ -1,4 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/uutils.git +BRANCH=redox-unix GIT_UPSTREAM=https://github.com/uutils/coreutils.git CARGOFLAGS="--no-default-features --features redox --bin uutils -- -C lto" From 137cf05779f3f2d8903a910ce20a53488b8ae735 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 14 May 2019 13:55:11 -0600 Subject: [PATCH 0628/3180] Strip userutils binaries --- recipes/userutils/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/userutils/recipe.sh b/recipes/userutils/recipe.sh index 4384373c..08015f65 100644 --- a/recipes/userutils/recipe.sh +++ b/recipes/userutils/recipe.sh @@ -27,7 +27,7 @@ function recipe_stage { for bin in "${BINS[@]}" do - cp -v "target/$TARGET/$build/$bin" "$1/bin" + "$STRIP" -v "target/$TARGET/$build/$bin" -o "$1/bin/$bin" done cp -Rv "res" "$1/etc" From c61e25dbd2897e8f4e9b8f529e6705c9bf05978d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 2 Jun 2019 10:50:15 -0600 Subject: [PATCH 0629/3180] Build xz statically and disable executables --- recipes/xz/recipe.sh | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/recipes/xz/recipe.sh b/recipes/xz/recipe.sh index d5ca281d..8e483f20 100644 --- a/recipes/xz/recipe.sh +++ b/recipes/xz/recipe.sh @@ -12,14 +12,23 @@ function recipe_update { } function recipe_build { - # Workaround of - # xzdec: hidden symbol `main' in xzdec-xzdec.o is referenced by DSO - export CFLAGS="-fvisibility=default" + export CFLAGS="-static" ./autogen.sh chmod +w build-aux/config.sub wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub - ./configure --build=${BUILD} --host=${HOST} --prefix=/ --enable-threads=no + ./configure \ + --build=${BUILD} \ + --host=${HOST} \ + --prefix=/ \ + --disable-lzmadec \ + --disable-lzmainfo \ + --disable-xz \ + --disable-xzdec \ + --enable-shared=no \ + --enable-static=yes \ + --enable-threads=no \ + --with-pic=no make -j"$(nproc)" skip=1 } From 9ada0d9674bc93de2aadccd8465def5ed0dba379 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 2 Jun 2019 11:05:56 -0600 Subject: [PATCH 0630/3180] Fix ion by reverting --- recipes/curl/recipe.sh | 2 +- recipes/ion/recipe.sh | 1 + recipes/mesa/recipe.sh | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/curl/recipe.sh b/recipes/curl/recipe.sh index 0bf0d388..988c35e3 100644 --- a/recipes/curl/recipe.sh +++ b/recipes/curl/recipe.sh @@ -1,7 +1,7 @@ VERSION="7.62.0" #TAR=https://curl.haxx.se/download/curl-$VERSION.tar.gz GIT=https://gitlab.redox-os.org/redox-os/curl.git -GIT_BRANCH=redox +BRANCH=redox BUILD_DEPENDS=(nghttp2 openssl zlib) DEPENDS="ca-certificates" diff --git a/recipes/ion/recipe.sh b/recipes/ion/recipe.sh index fda62673..6505c4a2 100644 --- a/recipes/ion/recipe.sh +++ b/recipes/ion/recipe.sh @@ -1 +1,2 @@ GIT=https://gitlab.redox-os.org/redox-os/ion.git +BRANCH=redox diff --git a/recipes/mesa/recipe.sh b/recipes/mesa/recipe.sh index 861cb33a..16b053a3 100644 --- a/recipes/mesa/recipe.sh +++ b/recipes/mesa/recipe.sh @@ -1,6 +1,6 @@ GIT=https://gitlab.redox-os.org/redox-os/mesa.git GIT_UPSTREAM=git://anongit.freedesktop.org/mesa/mesa -GIT_BRANCH=redox +BRANCH=redox BUILD_DEPENDS=(expat llvm zlib) function recipe_version { From b24ca8c7e16b25bcf3b70063c61b11a09a5dfd53 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 2 Jun 2019 11:08:52 -0600 Subject: [PATCH 0631/3180] nghttp2: static compilation --- recipes/nghttp2/recipe.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/recipes/nghttp2/recipe.sh b/recipes/nghttp2/recipe.sh index f077220c..7b1325c4 100644 --- a/recipes/nghttp2/recipe.sh +++ b/recipes/nghttp2/recipe.sh @@ -12,6 +12,8 @@ function recipe_update { } function recipe_build { + export CFLAGS="-static" + ./configure \ --build="${BUILD}" \ --host="${HOST}" \ From 129a28a4d13e24361c50d69f1e76268acd7e9d99 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 7 Jun 2019 18:39:29 -0600 Subject: [PATCH 0632/3180] Port some improvements from master branch --- recipes/curl/recipe.sh | 2 +- recipes/mesa/recipe.sh | 2 +- recipes/redoxerd/recipe.sh | 13 +++++++++++++ recipes/userutils/recipe.sh | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-) create mode 100755 recipes/redoxerd/recipe.sh diff --git a/recipes/curl/recipe.sh b/recipes/curl/recipe.sh index 0bf0d388..988c35e3 100644 --- a/recipes/curl/recipe.sh +++ b/recipes/curl/recipe.sh @@ -1,7 +1,7 @@ VERSION="7.62.0" #TAR=https://curl.haxx.se/download/curl-$VERSION.tar.gz GIT=https://gitlab.redox-os.org/redox-os/curl.git -GIT_BRANCH=redox +BRANCH=redox BUILD_DEPENDS=(nghttp2 openssl zlib) DEPENDS="ca-certificates" diff --git a/recipes/mesa/recipe.sh b/recipes/mesa/recipe.sh index 861cb33a..16b053a3 100644 --- a/recipes/mesa/recipe.sh +++ b/recipes/mesa/recipe.sh @@ -1,6 +1,6 @@ GIT=https://gitlab.redox-os.org/redox-os/mesa.git GIT_UPSTREAM=git://anongit.freedesktop.org/mesa/mesa -GIT_BRANCH=redox +BRANCH=redox BUILD_DEPENDS=(expat llvm zlib) function recipe_version { diff --git a/recipes/redoxerd/recipe.sh b/recipes/redoxerd/recipe.sh new file mode 100755 index 00000000..6b0fbc5c --- /dev/null +++ b/recipes/redoxerd/recipe.sh @@ -0,0 +1,13 @@ +GIT=https://gitlab.redox-os.org/redox-os/redoxer.git + +function recipe_update { + cd daemon +} + +function recipe_build { + cd daemon +} + +function recipe_stage { + mv daemon/target target +} diff --git a/recipes/userutils/recipe.sh b/recipes/userutils/recipe.sh index 13936c86..52b8d818 100644 --- a/recipes/userutils/recipe.sh +++ b/recipes/userutils/recipe.sh @@ -28,7 +28,7 @@ function recipe_stage { for bin in "${BINS[@]}" do - cp -v "target/$TARGET/$build/$bin" "$1/bin" + "$STRIP" -v "target/$TARGET/$build/$bin" -o "$1/bin/$bin" done cp -Rv "res" "$1/etc" From c308a26486621135d585ba9ef5cbd51ccab44c63 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 9 Jun 2019 07:59:06 -0600 Subject: [PATCH 0633/3180] findutils: use redox-unix branch --- recipes/findutils/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/findutils/recipe.sh b/recipes/findutils/recipe.sh index e140a2f9..5e4a22b9 100644 --- a/recipes/findutils/recipe.sh +++ b/recipes/findutils/recipe.sh @@ -1,3 +1,4 @@ GIT=https://gitlab.redox-os.org/redox-os/findutils.git +BRANCH=redox-unix GIT_UPSTREAM=https://github.com/uutils/findutils.git CARGOFLAGS="--bin find" From 1483b6cd5c724870b0c2a9d7fc6dd4eca6a6c3db Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 11 Jun 2019 16:51:18 -0600 Subject: [PATCH 0634/3180] Build netsurf statically --- recipes/netsurf/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/netsurf/recipe.sh b/recipes/netsurf/recipe.sh index 0bfc582b..898ac433 100644 --- a/recipes/netsurf/recipe.sh +++ b/recipes/netsurf/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export TARGET="framebuffer" export CFLAGS="-I$sysroot/include -I${PWD}/inst-${TARGET}/include" - export LDFLAGS="-L$sysroot/lib -L${PWD}/inst-${TARGET}/lib -Wl,--allow-multiple-definition -Wl,-Bstatic" + export LDFLAGS="-L$sysroot/lib -L${PWD}/inst-${TARGET}/lib -static -Wl,--allow-multiple-definition -Wl,-Bstatic" # nghttp2 is not linked for some reason export LDFLAGS="${LDFLAGS} -lcurl -lnghttp2" make V=1 -j"$(nproc)" From d3a85bd5a4fbd6be60b17122486c3206c3122691 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 15 Jun 2019 10:53:49 -0600 Subject: [PATCH 0635/3180] Use cargo config for crate patches --- .cargo/config | 14 ++++++++++++++ .gitmodules | 44 +++++++++++++++++++++++++++++++++++++++++++ patches/atty | 1 + patches/liblibc | 1 + patches/mio | 1 + patches/net2-rs | 1 + patches/pb | 1 + patches/platform-info | 1 + patches/ring | 1 + patches/tar-rs | 1 + patches/tempfile | 1 + patches/termsize | 1 + patches/time | 1 + 13 files changed, 69 insertions(+) create mode 160000 patches/atty create mode 160000 patches/liblibc create mode 160000 patches/mio create mode 160000 patches/net2-rs create mode 160000 patches/pb create mode 160000 patches/platform-info create mode 160000 patches/ring create mode 160000 patches/tar-rs create mode 160000 patches/tempfile create mode 160000 patches/termsize create mode 160000 patches/time diff --git a/.cargo/config b/.cargo/config index 69c4db47..c45f4316 100644 --- a/.cargo/config +++ b/.cargo/config @@ -1,3 +1,17 @@ +paths = [ + "patches/atty", + "patches/liblibc", + "patches/mio", + "patches/net2-rs", + "patches/pb", + "patches/platform-info", + #"patches/ring", + "patches/tar-rs", + "patches/tempfile", + "patches/termsize", + "patches/time", +] + [target.aarch64-unknown-redox] linker = "aarch64-unknown-redox-gcc" rustflags = [] diff --git a/.gitmodules b/.gitmodules index cded2e40..4bda32f6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -5,3 +5,47 @@ path = pkgutils url = https://gitlab.redox-os.org/redox-os/pkgutils.git branch = master +[submodule "patches/atty"] + path = patches/atty + url = https://gitlab.redox-os.org/redox-os/atty.git + branch = redox-unix +[submodule "patches/pb"] + path = patches/pb + url = https://gitlab.redox-os.org/redox-os/pb.git + branch = redox-unix +[submodule "patches/net2-rs"] + path = patches/net2-rs + url = https://gitlab.redox-os.org/redox-os/net2-rs.git + branch = redox-unix +[submodule "patches/ring"] + path = patches/ring + url = https://gitlab.redox-os.org/redox-os/ring.git + branch = redox-unix +[submodule "patches/time"] + path = patches/time + url = https://gitlab.redox-os.org/redox-os/time.git + branch = redox-unix +[submodule "patches/termsize"] + path = patches/termsize + url = https://gitlab.redox-os.org/redox-os/termsize.git + branch = redox-unix +[submodule "patches/tempfile"] + path = patches/tempfile + url = https://gitlab.redox-os.org/redox-os/tempfile.git + branch = redox-unix +[submodule "patches/platform-info"] + path = patches/platform-info + url = https://gitlab.redox-os.org/redox-os/platform-info.git + branch = redox-unix +[submodule "patches/tar-rs"] + path = patches/tar-rs + url = https://gitlab.redox-os.org/redox-os/tar-rs.git + branch = redox-unix +[submodule "patches/liblibc"] + path = patches/liblibc + url = https://gitlab.redox-os.org/redox-os/liblibc.git + branch = redox-unix +[submodule "patches/mio"] + path = patches/mio + url = https://gitlab.redox-os.org/redox-os/mio.git + branch = redox-unix diff --git a/patches/atty b/patches/atty new file mode 160000 index 00000000..a30c9539 --- /dev/null +++ b/patches/atty @@ -0,0 +1 @@ +Subproject commit a30c9539940d0148b86f9491c03eb2af450cd62e diff --git a/patches/liblibc b/patches/liblibc new file mode 160000 index 00000000..eb75c489 --- /dev/null +++ b/patches/liblibc @@ -0,0 +1 @@ +Subproject commit eb75c489172e10bfcb57ca679ff337827cf783a9 diff --git a/patches/mio b/patches/mio new file mode 160000 index 00000000..58b70e49 --- /dev/null +++ b/patches/mio @@ -0,0 +1 @@ +Subproject commit 58b70e4906d927139c499bb4bb29a990b35588fc diff --git a/patches/net2-rs b/patches/net2-rs new file mode 160000 index 00000000..b2c7c1e7 --- /dev/null +++ b/patches/net2-rs @@ -0,0 +1 @@ +Subproject commit b2c7c1e7773f13eebd9b4421172d9e4b5b806ce6 diff --git a/patches/pb b/patches/pb new file mode 160000 index 00000000..743300cf --- /dev/null +++ b/patches/pb @@ -0,0 +1 @@ +Subproject commit 743300cf9566f77962a5b550db1ba27cc922b6a5 diff --git a/patches/platform-info b/patches/platform-info new file mode 160000 index 00000000..ff3e9789 --- /dev/null +++ b/patches/platform-info @@ -0,0 +1 @@ +Subproject commit ff3e9789a7478d614a9e26d7016fe893ffea7713 diff --git a/patches/ring b/patches/ring new file mode 160000 index 00000000..1e177479 --- /dev/null +++ b/patches/ring @@ -0,0 +1 @@ +Subproject commit 1e177479981854cb7d06bea12e0a6514d26e09a6 diff --git a/patches/tar-rs b/patches/tar-rs new file mode 160000 index 00000000..5e19d818 --- /dev/null +++ b/patches/tar-rs @@ -0,0 +1 @@ +Subproject commit 5e19d818c3e67fe6215b8c244ec86d445ab4d515 diff --git a/patches/tempfile b/patches/tempfile new file mode 160000 index 00000000..0ae30545 --- /dev/null +++ b/patches/tempfile @@ -0,0 +1 @@ +Subproject commit 0ae305457184fa974ea1c4f7ed4602afdd5fedc6 diff --git a/patches/termsize b/patches/termsize new file mode 160000 index 00000000..a63940dc --- /dev/null +++ b/patches/termsize @@ -0,0 +1 @@ +Subproject commit a63940dc8608bb1a8c27a06302bd8674fd25f874 diff --git a/patches/time b/patches/time new file mode 160000 index 00000000..fc118e57 --- /dev/null +++ b/patches/time @@ -0,0 +1 @@ +Subproject commit fc118e5752aaac833808a25f0850606b675b32ec From cf87630f261223a7be7785aac085a965a54b5731 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 15 Jun 2019 15:45:37 -0600 Subject: [PATCH 0636/3180] Enable ring patch --- .cargo/config | 2 +- .gitmodules | 2 +- patches/ring | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.cargo/config b/.cargo/config index c45f4316..6e57e7c0 100644 --- a/.cargo/config +++ b/.cargo/config @@ -5,7 +5,7 @@ paths = [ "patches/net2-rs", "patches/pb", "patches/platform-info", - #"patches/ring", + "patches/ring", "patches/tar-rs", "patches/tempfile", "patches/termsize", diff --git a/.gitmodules b/.gitmodules index 4bda32f6..bccd9a18 100644 --- a/.gitmodules +++ b/.gitmodules @@ -20,7 +20,7 @@ [submodule "patches/ring"] path = patches/ring url = https://gitlab.redox-os.org/redox-os/ring.git - branch = redox-unix + branch = redox-unix-0.13.5 [submodule "patches/time"] path = patches/time url = https://gitlab.redox-os.org/redox-os/time.git diff --git a/patches/ring b/patches/ring index 1e177479..61162b0e 160000 --- a/patches/ring +++ b/patches/ring @@ -1 +1 @@ -Subproject commit 1e177479981854cb7d06bea12e0a6514d26e09a6 +Subproject commit 61162b0ea14d92df89a4d976f57712da991f26de From ce8642aa69d0082481f2ca4ab11a9404c62fb401 Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Sun, 16 Jun 2019 15:09:56 +0200 Subject: [PATCH 0637/3180] Workaround issue in nulld by allowing multiple definitions --- cook.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cook.sh b/cook.sh index bad288a4..8637a7a1 100755 --- a/cook.sh +++ b/cook.sh @@ -6,7 +6,7 @@ source config.sh # Variables to be overriden by recipes export BINDIR=bin -export CARGO=(env RUSTFLAGS="$PREFIX_RUSTFLAGS" xargo) +export CARGO=(env RUSTFLAGS="$PREFIX_RUSTFLAGS -C link-arg=-zmuldefs" xargo) export CARGOBUILD=rustc export CARGOFLAGS= export DEBUG= From 8092795133c1d21867eea0ab391e8296458bf7ed Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 16 Jun 2019 09:37:24 -0600 Subject: [PATCH 0638/3180] Compile prboom statically --- recipes/prboom/recipe.sh | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/recipes/prboom/recipe.sh b/recipes/prboom/recipe.sh index 3419878b..67843791 100644 --- a/recipes/prboom/recipe.sh +++ b/recipes/prboom/recipe.sh @@ -13,10 +13,19 @@ function recipe_update { } function recipe_build { + export CFLAGS="-static" sysroot="$(realpath ../sysroot)" autoreconf -if wget -O autotools/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub - ./configure --prefix=/ --build=${BUILD} --host=${HOST} --disable-sdltest --disable-cpu-opt --disable-gl --without-net --with-sdl-prefix="$sysroot" + ./configure \ + --prefix=/ \ + --build=${BUILD} \ + --host=${HOST} \ + --disable-sdltest \ + --disable-cpu-opt \ + --disable-gl \ + --without-net \ + --with-sdl-prefix="$sysroot" make -j"$(nproc)" skip=1 } From b0493cdf5e9817546240c2852c76143aacce3acd Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 16 Jun 2019 19:51:54 -0600 Subject: [PATCH 0639/3180] Switch logd to master branch --- recipes/logd/recipe.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/logd/recipe.sh b/recipes/logd/recipe.sh index 63d28ad7..cffbc308 100644 --- a/recipes/logd/recipe.sh +++ b/recipes/logd/recipe.sh @@ -1,2 +1 @@ GIT=https://gitlab.redox-os.org/redox-os/logd.git -BRANCH=redox-unix From 1a56805d481f71a8aea82370b3a4685458993f74 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 16 Jun 2019 19:57:00 -0600 Subject: [PATCH 0640/3180] Switch orbital to master branch --- recipes/orbital/recipe.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/orbital/recipe.sh b/recipes/orbital/recipe.sh index c1e76305..68484f39 100644 --- a/recipes/orbital/recipe.sh +++ b/recipes/orbital/recipe.sh @@ -1,4 +1,3 @@ GIT=https://gitlab.redox-os.org/redox-os/orbital.git -BRANCH=redox-unix CARGOFLAGS="--bin orbital -- -C lto" DEPENDS="orbdata" From cd0dec6a17a618efca2701327e54f7624c4b377b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 16 Jun 2019 20:06:12 -0600 Subject: [PATCH 0641/3180] Switch orbutils to master branch --- recipes/orbutils/recipe.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/orbutils/recipe.sh b/recipes/orbutils/recipe.sh index f32991af..281976f9 100644 --- a/recipes/orbutils/recipe.sh +++ b/recipes/orbutils/recipe.sh @@ -1,4 +1,3 @@ GIT=https://gitlab.redox-os.org/redox-os/orbutils.git -BRANCH=redox-unix BINDIR=/ui/bin DEPENDS="orbital" From f1956c096ad21e660f7298c5cd268c8480966920 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 16 Jun 2019 20:14:34 -0600 Subject: [PATCH 0642/3180] Switch orbterm to master branch --- recipes/orbterm/recipe.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/orbterm/recipe.sh b/recipes/orbterm/recipe.sh index af3644b9..9976d87a 100644 --- a/recipes/orbterm/recipe.sh +++ b/recipes/orbterm/recipe.sh @@ -1,5 +1,4 @@ GIT=https://gitlab.redox-os.org/redox-os/orbterm.git -BRANCH=redox-unix BINDIR=/ui/bin CARGOFLAGS="--bin orbterm -- -C lto" DEPENDS="orbital" From 8e1ebcfcbd078fb03ee6e049f19958095b199ada Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 16 Jun 2019 20:18:28 -0600 Subject: [PATCH 0643/3180] Switch findutils to master branch --- recipes/findutils/recipe.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/findutils/recipe.sh b/recipes/findutils/recipe.sh index 5e4a22b9..e140a2f9 100644 --- a/recipes/findutils/recipe.sh +++ b/recipes/findutils/recipe.sh @@ -1,4 +1,3 @@ GIT=https://gitlab.redox-os.org/redox-os/findutils.git -BRANCH=redox-unix GIT_UPSTREAM=https://github.com/uutils/findutils.git CARGOFLAGS="--bin find" From 81befe427cf2ddcc6cb31529831d0d13d4073d52 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 16 Jun 2019 20:22:21 -0600 Subject: [PATCH 0644/3180] Switch extrautils to master branch --- recipes/extrautils/recipe.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/extrautils/recipe.sh b/recipes/extrautils/recipe.sh index fda65270..c046ce05 100644 --- a/recipes/extrautils/recipe.sh +++ b/recipes/extrautils/recipe.sh @@ -1,3 +1,2 @@ GIT=https://gitlab.redox-os.org/redox-os/extrautils.git -BRANCH=redox-unix BUILD_DEPENDS=(xz) From ed35312a8ecfaa81bd1f5216ec744d75cddb1113 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 16 Jun 2019 20:38:32 -0600 Subject: [PATCH 0645/3180] Switch coreutils to master branch --- recipes/coreutils/recipe.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/coreutils/recipe.sh b/recipes/coreutils/recipe.sh index 0577bb10..f9558499 100644 --- a/recipes/coreutils/recipe.sh +++ b/recipes/coreutils/recipe.sh @@ -1,2 +1 @@ GIT=https://gitlab.redox-os.org/redox-os/coreutils.git -BRANCH=redox-unix From e16d69117a8494110bb8a4286cb2273ed86bc712 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 16 Jun 2019 20:51:04 -0600 Subject: [PATCH 0646/3180] Switch userutils to master branch --- recipes/userutils/recipe.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/userutils/recipe.sh b/recipes/userutils/recipe.sh index 52b8d818..08015f65 100644 --- a/recipes/userutils/recipe.sh +++ b/recipes/userutils/recipe.sh @@ -1,5 +1,4 @@ GIT=https://gitlab.redox-os.org/redox-os/userutils.git -BRANCH=redox-unix BINS=( id getty From cbd903f0e664eb4328356bd93d91cac198ac5b67 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 17 Jun 2019 20:03:26 -0600 Subject: [PATCH 0647/3180] Fix mesa build --- recipes/mesa/recipe.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/recipes/mesa/recipe.sh b/recipes/mesa/recipe.sh index 16b053a3..38a7a630 100644 --- a/recipes/mesa/recipe.sh +++ b/recipes/mesa/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1" export CPPFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1" - export LDFLAGS="-L$sysroot/lib" + export LDFLAGS="-L$sysroot/lib --static" #export LLVM_CONFIG="x86_64-unknown-redox-llvm-config" NOCONFIGURE=1 ./autogen.sh ./configure \ @@ -31,11 +31,13 @@ function recipe_build { --disable-glx \ --disable-gbm \ --disable-llvm-shared-libs \ + --disable-shared \ --enable-llvm \ --enable-gallium-osmesa \ + --enable-static \ --with-gallium-drivers=swrast \ --with-platforms=surfaceless - make -j"$(nproc)" + make V=1 -j"$(nproc)" skip=1 } From d487eb3af5d60ac9c6a38f92138a2b0cdc96ec58 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 17 Jun 2019 20:20:46 -0600 Subject: [PATCH 0648/3180] WIP: pathfinder recipe --- recipes/pathfinder/recipe.sh | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 recipes/pathfinder/recipe.sh diff --git a/recipes/pathfinder/recipe.sh b/recipes/pathfinder/recipe.sh new file mode 100644 index 00000000..37f8eb44 --- /dev/null +++ b/recipes/pathfinder/recipe.sh @@ -0,0 +1,25 @@ +GIT=https://gitlab.redox-os.org/redox-os/pathfinder.git +BRANCH=redox +GIT_UPSTREAM=https://github.com/servo/pathfinder.git +BUILD_DEPENDS=(llvm mesa zlib) +BRANCH=redox +CARGOFLAGS="--manifest-path examples/canvas_glutin_minimal/Cargo.toml" + +function recipe_build { + sysroot="$(realpath ../sysroot)" + cp -p "$ROOT/Xargo.toml" "Xargo.toml" + set -x + xargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ + -- \ + -L "${sysroot}/lib" \ + -C link-args="$("${PKG_CONFIG}" --libs osmesa) -lglapi -lz -lstdc++ -lc -lgcc" + set +x + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + mkdir -pv "$dest/bin" + cp -v "target/${TARGET}/release/canvas_glutin_minimal" "$dest/bin/pathfinder" + skip=1 +} From 7a5acff85b2126541d982bba8f5b555d80be3538 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 18 Jun 2019 20:59:53 -0600 Subject: [PATCH 0649/3180] Update sdl_mixer patch to maintain static linking --- recipes/sdl_mixer/01_redox.patch | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/recipes/sdl_mixer/01_redox.patch b/recipes/sdl_mixer/01_redox.patch index 85f920e6..1337ba34 100644 --- a/recipes/sdl_mixer/01_redox.patch +++ b/recipes/sdl_mixer/01_redox.patch @@ -1,7 +1,7 @@ -diff -rupN sdl_mixer/build-scripts/config.sub sdl_mixer-redox/build-scripts/config.sub ---- sdl_mixer/build-scripts/config.sub 2012-01-15 14:01:05.000000000 -0800 -+++ sdl_mixer-redox/build-scripts/config.sub 2016-07-27 18:17:24.513894959 -0700 -@@ -1276,7 +1276,7 @@ case $os in +diff -ruw source/build-scripts/config.sub source-new/build-scripts/config.sub +--- source/build-scripts/config.sub 2012-01-15 15:01:05.000000000 -0700 ++++ source-new/build-scripts/config.sub 2019-06-18 20:56:54.052482658 -0600 +@@ -1276,7 +1276,7 @@ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ @@ -9,4 +9,21 @@ diff -rupN sdl_mixer/build-scripts/config.sub sdl_mixer-redox/build-scripts/conf + | -kopensolaris* | -redox* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ -| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ \ No newline at end of file + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ +Only in source-new/build-scripts: config.sub.orig +diff -ruw source/Makefile.in source-new/Makefile.in +--- source/Makefile.in 2012-01-15 15:01:04.000000000 -0700 ++++ source-new/Makefile.in 2019-06-18 20:57:42.376687909 -0600 +@@ -66,10 +66,10 @@ + $(LIBTOOL) --mode=link $(CC) -o $@ $(OBJECTS) $(VERSION_OBJECTS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS) + + $(objects)/playwave$(EXE): $(objects)/playwave.lo $(objects)/$(TARGET) +- $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(SDL_LIBS) $(objects)/$(TARGET) ++ $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(SDL_LIBS) $(objects)/$(TARGET) --static + + $(objects)/playmus$(EXE): $(objects)/playmus.lo $(objects)/$(TARGET) +- $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playmus.lo $(SDL_CFLAGS) $(SDL_LIBS) $(objects)/$(TARGET) ++ $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playmus.lo $(SDL_CFLAGS) $(SDL_LIBS) $(objects)/$(TARGET) --static + + install: all install-hdrs install-lib #install-bin + install-hdrs: From c729e4dceb0d4c0b2c3d774722ae5feaff2b32c1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 19 Jun 2019 17:14:30 -0600 Subject: [PATCH 0650/3180] Add sdl2_mixer patch --- recipes/sdl2_mixer/redox.patch | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 recipes/sdl2_mixer/redox.patch diff --git a/recipes/sdl2_mixer/redox.patch b/recipes/sdl2_mixer/redox.patch new file mode 100644 index 00000000..607c370f --- /dev/null +++ b/recipes/sdl2_mixer/redox.patch @@ -0,0 +1,16 @@ +diff -ruw source/Makefile.in source-new/Makefile.in +--- source/Makefile.in 2018-10-31 08:58:59.000000000 -0600 ++++ source-new/Makefile.in 2019-06-19 15:23:18.015149749 -0600 +@@ -65,10 +65,10 @@ + $(LIBTOOL) --mode=link $(CC) -o $@ $(OBJECTS) $(VERSION_OBJECTS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS) + + $(objects)/playwave$(EXE): $(objects)/playwave.lo $(objects)/$(TARGET) +- $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(objects)/$(TARGET) $(SDL_LIBS) $(LDFLAGS) ++ $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(objects)/$(TARGET) $(SDL_LIBS) $(LDFLAGS) --static + + $(objects)/playmus$(EXE): $(objects)/playmus.lo $(objects)/$(TARGET) +- $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playmus.lo $(SDL_CFLAGS) $(objects)/$(TARGET) $(SDL_LIBS) $(LDFLAGS) ++ $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playmus.lo $(SDL_CFLAGS) $(objects)/$(TARGET) $(SDL_LIBS) $(LDFLAGS) --static + + install: all install-hdrs install-lib #install-bin + install-hdrs: From 77f40b2760571b885ec6c33f2b638bc470d5d764 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 21 Jun 2019 16:55:57 -0600 Subject: [PATCH 0651/3180] Compile sdl2_gears statically --- recipes/sdl2_gears/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/sdl2_gears/recipe.sh b/recipes/sdl2_gears/recipe.sh index baae90cd..c5809169 100644 --- a/recipes/sdl2_gears/recipe.sh +++ b/recipes/sdl2_gears/recipe.sh @@ -19,7 +19,7 @@ function recipe_prepare { function recipe_build { sysroot="$(realpath ../sysroot)" set -x - "${CXX}" -O2 -I "$sysroot/include" -L "$sysroot/lib" gears.c -o sdl2_gears -lSDL2_image -lSDL2_mixer -lSDL2_ttf -lSDL2 -lorbital $("${PKG_CONFIG}" --libs glu) -lfreetype -lpng -ljpeg -lglapi -lz + "${CXX}" -O2 -I "$sysroot/include" -L "$sysroot/lib" gears.c -o sdl2_gears -static -lSDL2_image -lSDL2_mixer -lSDL2_ttf -lSDL2 -lorbital $("${PKG_CONFIG}" --libs glu) -lfreetype -lpng -ljpeg -lglapi -lz set +x skip=1 } From a983c43158965a49ad387916d5a1d0620bc6bef3 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 21 Jun 2019 16:58:25 -0600 Subject: [PATCH 0652/3180] Compile gears statically --- recipes/gears/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/gears/recipe.sh b/recipes/gears/recipe.sh index 12e1e41b..d6e1f5ae 100644 --- a/recipes/gears/recipe.sh +++ b/recipes/gears/recipe.sh @@ -19,7 +19,7 @@ function recipe_prepare { function recipe_build { sysroot="$(realpath ../sysroot)" set -x - "${CXX}" -O2 -I "$sysroot/include" -L "$sysroot/lib" gears.c -o gears -lorbital $("${PKG_CONFIG}" --libs glu) -lglapi -lz + "${CXX}" -O2 -I "$sysroot/include" -L "$sysroot/lib" gears.c -o gears -static -lorbital $("${PKG_CONFIG}" --libs glu) -lglapi -lz set +x skip=1 } From 170392f03a49c7a2a1ac09606c513d2e5a89a08a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 21 Jun 2019 17:14:52 -0600 Subject: [PATCH 0653/3180] Compile cairodemu and eduke32 statically --- recipes/cairodemo/recipe.sh | 2 +- recipes/eduke32/recipe.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/cairodemo/recipe.sh b/recipes/cairodemo/recipe.sh index c720d9e5..5326f6f3 100755 --- a/recipes/cairodemo/recipe.sh +++ b/recipes/cairodemo/recipe.sh @@ -21,7 +21,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" set -x - "${CXX}" -I "$sysroot/include" -L "$sysroot/lib" cairodemo.c -o cairodemo -lorbital -lcairo -lpixman-1 -lfreetype -lpng -lz + "${CXX}" -I "$sysroot/include" -L "$sysroot/lib" cairodemo.c -o cairodemo -static -lorbital -lcairo -lpixman-1 -lfreetype -lpng -lz set +x skip=1 } diff --git a/recipes/eduke32/recipe.sh b/recipes/eduke32/recipe.sh index c6e07caf..f43d6525 100644 --- a/recipes/eduke32/recipe.sh +++ b/recipes/eduke32/recipe.sh @@ -14,9 +14,9 @@ function recipe_update { function recipe_build { sysroot="$(realpath ../sysroot)" - export LDFLAGS="-L$sysroot/lib" export CFLAGS="-I$sysroot/include -I$sysroot/include/SDL" - export SDLCONFIG="$sysroot/bin/sdl-config" + export LDFLAGS="-L$sysroot/lib -static" + export SDLCONFIG="$sysroot/bin/sdl-config --prefix=$sysroot" PLATFORM=REDOX make -j"$(nproc)" skip=1 From 71d86f1fe1485c0d5bfd2be556d8fed2cd4f9944 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 21 Jun 2019 17:33:52 -0600 Subject: [PATCH 0654/3180] Compile bash and curl statically --- recipes/bash/recipe.sh | 2 +- recipes/curl/recipe.sh | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/recipes/bash/recipe.sh b/recipes/bash/recipe.sh index 03464a66..b4ec7805 100644 --- a/recipes/bash/recipe.sh +++ b/recipes/bash/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { sysroot="$PWD/../sysroot" - export LDFLAGS="-L$sysroot/lib" + export LDFLAGS="-L$sysroot/lib -static" export CPPFLAGS="-I$sysroot/include" wget -O support/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure \ diff --git a/recipes/curl/recipe.sh b/recipes/curl/recipe.sh index 988c35e3..98b388e1 100644 --- a/recipes/curl/recipe.sh +++ b/recipes/curl/recipe.sh @@ -18,7 +18,7 @@ function recipe_update { function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib" + export LDFLAGS="-L$sysroot/lib --static" wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub autoreconf -i ./configure \ @@ -28,8 +28,10 @@ function recipe_build { --disable-ftp \ --disable-ipv6 \ --disable-ntlm-wb \ + --disable-shared \ --disable-tftp \ --disable-threaded-resolver \ + --enable-static \ --with-ca-path=/ssl/certs \ --with-nghttp2="$sysroot" \ --with-ssl="$sysroot" \ From 82775303747a2f582b0bf3d678e5992fb7a5ae2e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 21 Jun 2019 17:39:33 -0600 Subject: [PATCH 0655/3180] Build diffutils statically --- recipes/diffutils/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/diffutils/recipe.sh b/recipes/diffutils/recipe.sh index fa59e98d..c33902e7 100644 --- a/recipes/diffutils/recipe.sh +++ b/recipes/diffutils/recipe.sh @@ -12,6 +12,7 @@ function recipe_update { } function recipe_build { + export LDFLAGS="-static" autoreconf ./configure \ --build=${BUILD} \ From e68f45f00dd63fa773a9dcf75e994af167b90499 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 21 Jun 2019 17:49:19 -0600 Subject: [PATCH 0656/3180] Build dosbox statically --- recipes/dosbox/recipe.sh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/recipes/dosbox/recipe.sh b/recipes/dosbox/recipe.sh index dbf08941..be1b34ea 100644 --- a/recipes/dosbox/recipe.sh +++ b/recipes/dosbox/recipe.sh @@ -16,10 +16,16 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include/SDL" export CPPFLAGS="-I$sysroot/include/SDL" - export LDFLAGS="-L$sysroot/lib" + export LDFLAGS="-L$sysroot/lib -static" ./autogen.sh wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub - ./configure --build=${BUILD} --host=${HOST} --prefix='' --disable-opengl --disable-sdltest --with-sdl-prefix="$sysroot" + ./configure \ + --build=${BUILD} \ + --host=${HOST} \ + --prefix='' \ + --disable-opengl \ + --disable-sdltest \ + --with-sdl-prefix="$sysroot" make -j"$(nproc)" skip=1 } From f84eb0c265197bddb51f8dbdc2d5f4ac133f5a93 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 21 Jun 2019 21:06:46 -0600 Subject: [PATCH 0657/3180] Compile statically on everything --- recipes/expat/recipe.sh | 1 + recipes/ffmpeg/recipe.sh | 2 +- recipes/gcc/recipe.sh | 2 +- recipes/gettext/recipe.sh | 2 +- recipes/glib/recipe.sh | 2 +- recipes/gnu-binutils/recipe.sh | 12 +++++++++++- recipes/gnu-grep/recipe.sh | 1 + recipes/gnu-make/recipe.sh | 8 +++++++- recipes/gstreamer/recipe.sh | 2 +- recipes/libiconv/recipe.sh | 1 + recipes/libjpeg/recipe.sh | 1 + recipes/libpng/recipe.sh | 2 +- recipes/llvm/recipe.sh | 1 + recipes/mgba/recipe.sh | 2 +- recipes/nasm/recipe.sh | 1 + recipes/ncdu/recipe.sh | 2 +- recipes/openjazz/recipe.sh | 2 +- recipes/osdemo/recipe.sh | 2 +- recipes/patch/recipe.sh | 1 + recipes/pcre/recipe.sh | 2 +- recipes/schismtracker/recipe.sh | 2 +- recipes/scummvm/recipe.sh | 2 +- recipes/sdl-player/recipe.sh | 2 +- recipes/sed/recipe.sh | 6 +++++- recipes/sopwith/recipe.sh | 8 ++++++-- recipes/timidity/recipe.sh | 7 ++++++- recipes/vice/recipe.sh | 2 +- recipes/vim/recipe.sh | 2 +- recipes/vttest/recipe.sh | 6 +++++- 29 files changed, 63 insertions(+), 23 deletions(-) diff --git a/recipes/expat/recipe.sh b/recipes/expat/recipe.sh index d8f78f61..65a48648 100644 --- a/recipes/expat/recipe.sh +++ b/recipes/expat/recipe.sh @@ -12,6 +12,7 @@ function recipe_update { } function recipe_build { + export LDFLAGS="--static" ./configure --build=${BUILD} --host=${HOST} --prefix=/ make -j"$(nproc)" skip=1 diff --git a/recipes/ffmpeg/recipe.sh b/recipes/ffmpeg/recipe.sh index c7299771..af1a18f7 100644 --- a/recipes/ffmpeg/recipe.sh +++ b/recipes/ffmpeg/recipe.sh @@ -15,8 +15,8 @@ function recipe_update { function recipe_build { sysroot="$PWD/../sysroot" - export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib -static" ./configure \ --enable-cross-compile \ --target-os=redox \ diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index 93a567e9..b325b329 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -25,7 +25,7 @@ function recipe_build { mkdir -p "$sysroot/usr" ln -sf "$sysroot/include" "$sysroot/usr/include" ln -sf "$sysroot/lib" "$sysroot/usr/lib" - + export LDFLAGS="-static" ./configure \ --build=${BUILD} \ --host=${HOST} \ diff --git a/recipes/gettext/recipe.sh b/recipes/gettext/recipe.sh index 762f8f5e..b3625656 100644 --- a/recipes/gettext/recipe.sh +++ b/recipes/gettext/recipe.sh @@ -15,7 +15,7 @@ function recipe_update { function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib" + export LDFLAGS="-L$sysroot/lib --static" wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure \ --build=${BUILD} \ diff --git a/recipes/glib/recipe.sh b/recipes/glib/recipe.sh index cb9991f0..ac105727 100644 --- a/recipes/glib/recipe.sh +++ b/recipes/glib/recipe.sh @@ -15,7 +15,7 @@ function recipe_update { function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib" + export LDFLAGS="-L$sysroot/lib --static" glib_cv_stack_grows=no glib_cv_uscore=no ./autogen.sh \ --build=${BUILD} \ --host=${HOST} \ diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh index 16c2b954..53349d20 100644 --- a/recipes/gnu-binutils/recipe.sh +++ b/recipes/gnu-binutils/recipe.sh @@ -17,7 +17,17 @@ function recipe_build { mkdir -p "$sysroot/usr" ln -sf "$sysroot/include" "$sysroot/usr/include" ln -sf "$sysroot/lib" "$sysroot/usr/lib" - ./configure --build=${BUILD} --host=${HOST} --target=${HOST} --prefix=/ --with-sysroot=/ --with-build-sysroot="$sysroot" --disable-gdb --disable-nls --disable-werror + export LDFLAGS="--static" + ./configure \ + --build=${BUILD} \ + --host=${HOST} \ + --target=${HOST} \ + --prefix=/ \ + --with-sysroot=/ \ + --with-build-sysroot="$sysroot" \ + --disable-gdb \ + --disable-nls \ + --disable-werror make -j"$(nproc)" skip=1 } diff --git a/recipes/gnu-grep/recipe.sh b/recipes/gnu-grep/recipe.sh index e45ebf0b..691bb7c1 100644 --- a/recipes/gnu-grep/recipe.sh +++ b/recipes/gnu-grep/recipe.sh @@ -12,6 +12,7 @@ function recipe_update { } function recipe_build { + export LDFLAGS="-static" ./configure --build=${BUILD} --host=${HOST} --prefix=/ make -j"$(nproc)" skip=1 diff --git a/recipes/gnu-make/recipe.sh b/recipes/gnu-make/recipe.sh index 523b32e9..35be95ab 100644 --- a/recipes/gnu-make/recipe.sh +++ b/recipes/gnu-make/recipe.sh @@ -12,7 +12,13 @@ function recipe_update { } function recipe_build { - ./configure --build=${BUILD} --host=${HOST} --prefix=/ CFLAGS="-DPOSIX -DNO_ARCHIVES -DNO_OUTPUT_SYNC" --without-guile + export CFLAGS="-DPOSIX -DNO_ARCHIVES -DNO_OUTPUT_SYNC" + export LDFLAGS="-static" + ./configure \ + --build=${BUILD} \ + --host=${HOST} \ + --prefix=/ \ + --without-guile make -j"$(nproc)" skip=1 } diff --git a/recipes/gstreamer/recipe.sh b/recipes/gstreamer/recipe.sh index 370edb7f..9cf1a3e5 100644 --- a/recipes/gstreamer/recipe.sh +++ b/recipes/gstreamer/recipe.sh @@ -15,7 +15,7 @@ function recipe_update { function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib" + export LDFLAGS="-L$sysroot/lib --static" export GLIB_GENMARSHAL="$(which glib-genmarshal)" export GLIB_MKENUMS="$(which glib-mkenums)" ./configure \ diff --git a/recipes/libiconv/recipe.sh b/recipes/libiconv/recipe.sh index 6f1cedab..fb61b792 100644 --- a/recipes/libiconv/recipe.sh +++ b/recipes/libiconv/recipe.sh @@ -12,6 +12,7 @@ function recipe_update { } function recipe_build { + export LDFLAGS="--static" ./configure --build=${BUILD} --host=${HOST} --prefix='/' --disable-shared --enable-static make -j"$(nproc)" skip=1 diff --git a/recipes/libjpeg/recipe.sh b/recipes/libjpeg/recipe.sh index b476840b..f37b0c34 100644 --- a/recipes/libjpeg/recipe.sh +++ b/recipes/libjpeg/recipe.sh @@ -12,6 +12,7 @@ function recipe_update { } function recipe_build { + export LDFLAGS="--static" ./configure --build=${BUILD} --host=${HOST} --prefix='/' make -j"$(nproc)" skip=1 diff --git a/recipes/libpng/recipe.sh b/recipes/libpng/recipe.sh index 224557ff..6d9f93cf 100644 --- a/recipes/libpng/recipe.sh +++ b/recipes/libpng/recipe.sh @@ -14,8 +14,8 @@ function recipe_update { function recipe_build { sysroot="$(realpath ../sysroot)" - export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib --static" chmod +w config.sub wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --build=${BUILD} --host=${HOST} --prefix='/' diff --git a/recipes/llvm/recipe.sh b/recipes/llvm/recipe.sh index f84ffaf3..923f9b18 100644 --- a/recipes/llvm/recipe.sh +++ b/recipes/llvm/recipe.sh @@ -26,6 +26,7 @@ function recipe_build { -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_CXX_FLAGS="--std=gnu++11" + -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_RANLIB="$(which "${RANLIB}")" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_SYSTEM_NAME=Generic diff --git a/recipes/mgba/recipe.sh b/recipes/mgba/recipe.sh index 57484ecc..e4da44bd 100644 --- a/recipes/mgba/recipe.sh +++ b/recipes/mgba/recipe.sh @@ -16,7 +16,7 @@ function recipe_update { function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include -I$sysroot/include/SDL" - export LDFLAGS="-L$sysroot/lib" + export LDFLAGS="-L$sysroot/lib -static" mkdir -p build cd build diff --git a/recipes/nasm/recipe.sh b/recipes/nasm/recipe.sh index f2947f2e..07b6db6c 100644 --- a/recipes/nasm/recipe.sh +++ b/recipes/nasm/recipe.sh @@ -12,6 +12,7 @@ function recipe_update { } function recipe_build { + export LDFLAGS="-static" ./configure --build=${BUILD} --host=${HOST} --prefix="" make -j"$(nproc)" skip=1 diff --git a/recipes/ncdu/recipe.sh b/recipes/ncdu/recipe.sh index cb90b701..55f3e368 100644 --- a/recipes/ncdu/recipe.sh +++ b/recipes/ncdu/recipe.sh @@ -13,8 +13,8 @@ function recipe_update { } function recipe_build { sysroot="$PWD/../sysroot" - export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include -I$sysroot/include/ncurses" + export LDFLAGS="-L$sysroot/lib -static" ./configure \ --build=${BUILD} \ --host="$HOST" \ diff --git a/recipes/openjazz/recipe.sh b/recipes/openjazz/recipe.sh index 5eb28453..3ccda987 100644 --- a/recipes/openjazz/recipe.sh +++ b/recipes/openjazz/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include -UUSE_SOCKETS -UUSE_SDL_NET" export CPPFLAGS="$CFLAGS" - export LDFLAGS="-L$sysroot/lib" + export LDFLAGS="-L$sysroot/lib -static" touch INSTALL NEWS README AUTHORS ChangeLog COPYING autoreconf -fvi autoconf diff --git a/recipes/osdemo/recipe.sh b/recipes/osdemo/recipe.sh index 37599034..c32f72a0 100644 --- a/recipes/osdemo/recipe.sh +++ b/recipes/osdemo/recipe.sh @@ -19,7 +19,7 @@ function recipe_prepare { function recipe_build { sysroot="$(realpath ../sysroot)" set -x - "${CXX}" -O2 -I "$sysroot/include" -L "$sysroot/lib" osdemo.c -o osdemo -lorbital $("${PKG_CONFIG}" --libs glu) -lglapi -lz + "${CXX}" -O2 -I "$sysroot/include" -L "$sysroot/lib" osdemo.c -o osdemo -static -lorbital $("${PKG_CONFIG}" --libs glu) -lglapi -lz set +x skip=1 } diff --git a/recipes/patch/recipe.sh b/recipes/patch/recipe.sh index 20e62b20..b0c6a791 100644 --- a/recipes/patch/recipe.sh +++ b/recipes/patch/recipe.sh @@ -12,6 +12,7 @@ function recipe_update { } function recipe_build { + export LDFLAGS="-static" wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub autoreconf ./configure --build=${BUILD} --host=${HOST} --prefix=/ diff --git a/recipes/pcre/recipe.sh b/recipes/pcre/recipe.sh index 62a3aa6a..b6f3df1b 100644 --- a/recipes/pcre/recipe.sh +++ b/recipes/pcre/recipe.sh @@ -15,7 +15,7 @@ function recipe_update { function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib" + export LDFLAGS="-L$sysroot/lib --static" ./configure \ --build=${BUILD} \ --host=${HOST} \ diff --git a/recipes/schismtracker/recipe.sh b/recipes/schismtracker/recipe.sh index 92e52eb3..933d1efd 100644 --- a/recipes/schismtracker/recipe.sh +++ b/recipes/schismtracker/recipe.sh @@ -16,7 +16,7 @@ function recipe_update { function recipe_build { sysroot="${PWD}/../sysroot" export CFLAGS="-I$sysroot/include -I$sysroot/include/SDL" - export LDFLAGS="-L$sysroot/lib" + export LDFLAGS="-L$sysroot/lib -static" export SDL_CONFIG="$sysroot/bin/sdl-config" autoreconf -i ./configure --build=${BUILD} --host=${HOST} --prefix='' diff --git a/recipes/scummvm/recipe.sh b/recipes/scummvm/recipe.sh index 582a42d5..e0303fb0 100644 --- a/recipes/scummvm/recipe.sh +++ b/recipes/scummvm/recipe.sh @@ -16,7 +16,7 @@ function recipe_update { function recipe_build { wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub sysroot="$(realpath ../sysroot)" - + export LDFLAGS="-static" ./configure \ --host=${HOST} \ --prefix='' \ diff --git a/recipes/sdl-player/recipe.sh b/recipes/sdl-player/recipe.sh index 5c145cd0..0aedb7f7 100644 --- a/recipes/sdl-player/recipe.sh +++ b/recipes/sdl-player/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { sysroot="$(realpath ../sysroot)" export CPPFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib" + export LDFLAGS="-L$sysroot/lib -static" make -j"$(nproc)" skip=1 } diff --git a/recipes/sed/recipe.sh b/recipes/sed/recipe.sh index 1dce0771..90105f47 100644 --- a/recipes/sed/recipe.sh +++ b/recipes/sed/recipe.sh @@ -12,7 +12,11 @@ function recipe_update { } function recipe_build { - ./configure --build=${BUILD} --host=${HOST} --prefix=/ + export LDFLAGS="-static" + ./configure \ + --build=${BUILD} \ + --host=${HOST} \ + --prefix=/ make -j"$(nproc)" skip=1 } diff --git a/recipes/sopwith/recipe.sh b/recipes/sopwith/recipe.sh index 74495073..4f4603f9 100644 --- a/recipes/sopwith/recipe.sh +++ b/recipes/sopwith/recipe.sh @@ -16,9 +16,13 @@ function recipe_build { wget -O autotools/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include -I$sysroot/include/SDL" - export LDFLAGS="-L$sysroot/lib" + export LDFLAGS="-L$sysroot/lib -static" export LIBS="-lSDL -lorbital" # TODO: Uses sdl-config instead of pkg-config - ./configure --build=${BUILD} --host=${HOST} --prefix='' --with-sdl-prefix="$sysroot" + ./configure \ + --build=${BUILD} \ + --host=${HOST} \ + --prefix='' \ + --with-sdl-prefix="$sysroot" make -j"$(nproc)" skip=1 } diff --git a/recipes/timidity/recipe.sh b/recipes/timidity/recipe.sh index c10b7fee..3c73161d 100644 --- a/recipes/timidity/recipe.sh +++ b/recipes/timidity/recipe.sh @@ -14,9 +14,14 @@ function recipe_update { } function recipe_build { + export LDFLAGS="-static" autoreconf -f -i wget -O autoconf/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub - ./configure --build=${BUILD} --host=${HOST} --prefix='' --enable-vt100 + ./configure \ + --build=${BUILD} \ + --host=${HOST} \ + --prefix='' \ + --enable-vt100 make -j"$(nproc)" skip=1 } diff --git a/recipes/vice/recipe.sh b/recipes/vice/recipe.sh index 5387bfdb..9146c873 100644 --- a/recipes/vice/recipe.sh +++ b/recipes/vice/recipe.sh @@ -20,7 +20,7 @@ function recipe_build { export sdl_config="$sysroot/bin/sdl-config" export CFLAGS="-I$sysroot/include -I$sysroot/include/SDL" export CXXFLAGS="$CFLAGS" - export LDFLAGS="-L$sysroot/lib" + export LDFLAGS="-L$sysroot/lib -static" ./configure \ --build=${BUILD} \ diff --git a/recipes/vim/recipe.sh b/recipes/vim/recipe.sh index afc09c27..a6e662ea 100644 --- a/recipes/vim/recipe.sh +++ b/recipes/vim/recipe.sh @@ -15,7 +15,7 @@ function recipe_update { function recipe_build { sysroot="$(realpath ../sysroot)" - export LDFLAGS="-L$sysroot/lib" + export LDFLAGS="-L$sysroot/lib -static" export CPPFLAGS="-I$sysroot/include" export vim_cv_toupper_broken=set export vim_cv_terminfo=no diff --git a/recipes/vttest/recipe.sh b/recipes/vttest/recipe.sh index b1147b68..8b2b106d 100644 --- a/recipes/vttest/recipe.sh +++ b/recipes/vttest/recipe.sh @@ -12,8 +12,12 @@ function recipe_update { } function recipe_build { + export LDFLAGS="-static" wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub - ./configure --build=${BUILD} --host=${HOST} --prefix='' + ./configure \ + --build=${BUILD} \ + --host=${HOST} \ + --prefix='' make -j"$(nproc)" skip=1 } From 8605082cc584cf59e3e4e8198e1f7074fc27cb39 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 27 Jun 2019 16:47:00 -0600 Subject: [PATCH 0658/3180] Fix openttd --- recipes/openttd/01_redox.patch | 60 ++++++++++++++++++++-------------- 1 file changed, 35 insertions(+), 25 deletions(-) diff --git a/recipes/openttd/01_redox.patch b/recipes/openttd/01_redox.patch index 11387c56..2cba2230 100644 --- a/recipes/openttd/01_redox.patch +++ b/recipes/openttd/01_redox.patch @@ -1,7 +1,17 @@ -diff -rupNw source/config.lib source-new/config.lib ---- source/config.lib 2019-03-04 21:01:49.523053923 +0100 -+++ source-new/config.lib 2019-03-04 21:00:15.870317336 +0100 -@@ -1486,7 +1486,7 @@ make_cflags_and_ldflags() { +diff -ruw source/config.lib source-new/config.lib +--- source/config.lib 2019-06-19 08:34:01.122040101 -0600 ++++ source-new/config.lib 2019-06-27 16:41:18.749553078 -0600 +@@ -1458,7 +1458,8 @@ + fi + fi + +- has_rdynamic=`$1 -dumpspecs | grep rdynamic` ++ #TODO has_rdynamic=`$1 -dumpspecs | grep rdynamic` ++ has_rdynamic="" + if [ -n "$has_rdynamic" ]; then + # rdynamic is used to get useful stack traces from crash reports. + flags="$flags -rdynamic" +@@ -1486,7 +1487,7 @@ # Special CXXFlags for HOST CXXFLAGS="$CXXFLAGS" # Libs to compile. In fact this is just LDFLAGS @@ -10,10 +20,10 @@ diff -rupNw source/config.lib source-new/config.lib # LDFLAGS used for HOST LDFLAGS="$LDFLAGS" # FEATURES for HOST (lto) -diff -rupNw source/src/music/extmidi.cpp source-new/src/music/extmidi.cpp ---- source/src/music/extmidi.cpp 2019-03-04 21:01:49.899056924 +0100 -+++ source-new/src/music/extmidi.cpp 2019-03-04 21:00:15.886317459 +0100 -@@ -115,7 +115,11 @@ void MusicDriver_ExtMidi::DoPlay() +diff -ruw source/src/music/extmidi.cpp source-new/src/music/extmidi.cpp +--- source/src/music/extmidi.cpp 2019-06-19 08:34:01.278040813 -0600 ++++ source-new/src/music/extmidi.cpp 2019-06-27 16:39:06.400266392 -0600 +@@ -115,7 +115,11 @@ switch (this->pid) { case 0: { close(0); @@ -25,10 +35,10 @@ diff -rupNw source/src/music/extmidi.cpp source-new/src/music/extmidi.cpp if (d != -1 && dup2(d, 1) != -1 && dup2(d, 2) != -1) { execvp(this->params[0], this->params); } -diff -rupNw source/src/os/unix/unix.cpp source-new/src/os/unix/unix.cpp ---- source/src/os/unix/unix.cpp 2019-03-04 21:01:49.915057051 +0100 -+++ source-new/src/os/unix/unix.cpp 2019-03-04 20:20:35.800062835 +0100 -@@ -69,12 +69,12 @@ ULONG __stack = (1024*1024)*2; // maybe +diff -ruw source/src/os/unix/unix.cpp source-new/src/os/unix/unix.cpp +--- source/src/os/unix/unix.cpp 2019-06-19 08:34:01.294040885 -0600 ++++ source-new/src/os/unix/unix.cpp 2019-06-27 16:39:06.400266392 -0600 +@@ -69,12 +69,12 @@ bool FiosIsRoot(const char *path) { @@ -44,7 +54,7 @@ diff -rupNw source/src/os/unix/unix.cpp source-new/src/os/unix/unix.cpp #endif } -@@ -106,10 +106,10 @@ bool FiosIsValidFile(const char *path, c +@@ -106,10 +106,10 @@ { char filename[MAX_PATH]; int res; @@ -58,7 +68,7 @@ diff -rupNw source/src/os/unix/unix.cpp source-new/src/os/unix/unix.cpp } else // XXX - only next line! #else assert(path[strlen(path) - 1] == PATHSEPCHAR); -@@ -370,7 +370,7 @@ void OSOpenBrowser(const char *url) +@@ -370,7 +370,7 @@ if (child_pid != 0) return; const char *args[3]; @@ -67,10 +77,10 @@ diff -rupNw source/src/os/unix/unix.cpp source-new/src/os/unix/unix.cpp args[1] = url; args[2] = NULL; execvp(args[0], const_cast(args)); -diff -rupNw source/src/rev.cpp.in source-new/src/rev.cpp.in ---- source/src/rev.cpp.in 2019-03-04 21:01:49.923057115 +0100 -+++ source-new/src/rev.cpp.in 2019-03-04 21:00:15.922317739 +0100 -@@ -57,7 +57,7 @@ const char _openttd_build_date[] = __DAT +diff -ruw source/src/rev.cpp.in source-new/src/rev.cpp.in +--- source/src/rev.cpp.in 2019-06-19 08:34:01.298040904 -0600 ++++ source-new/src/rev.cpp.in 2019-06-27 16:39:06.400266392 -0600 +@@ -57,7 +57,7 @@ * (compiling from sources without any version control software) * and 2 is for modified revision. */ @@ -79,9 +89,9 @@ diff -rupNw source/src/rev.cpp.in source-new/src/rev.cpp.in /** * The NewGRF revision of OTTD: -diff -rupNw source/src/stdafx.h source-new/src/stdafx.h ---- source/src/stdafx.h 2019-03-04 21:01:49.955057370 +0100 -+++ source-new/src/stdafx.h 2019-03-04 21:00:15.930317800 +0100 +diff -ruw source/src/stdafx.h source-new/src/stdafx.h +--- source/src/stdafx.h 2019-06-19 08:34:01.334041067 -0600 ++++ source-new/src/stdafx.h 2019-06-27 16:39:06.400266392 -0600 @@ -12,6 +12,9 @@ #ifndef STDAFX_H #define STDAFX_H @@ -92,10 +102,10 @@ diff -rupNw source/src/stdafx.h source-new/src/stdafx.h #if defined(__APPLE__) #include "os/macosx/osx_stdafx.h" #endif /* __APPLE__ */ -diff -rupNw source/src/string.cpp source-new/src/string.cpp ---- source/src/string.cpp 2019-03-04 21:01:49.955057370 +0100 -+++ source-new/src/string.cpp 2019-03-04 21:00:15.938317862 +0100 -@@ -528,7 +528,7 @@ size_t Utf8TrimString(char *s, size_t ma +diff -ruw source/src/string.cpp source-new/src/string.cpp +--- source/src/string.cpp 2019-06-19 08:34:01.334041067 -0600 ++++ source-new/src/string.cpp 2019-06-27 16:39:06.400266392 -0600 +@@ -528,7 +528,7 @@ return length; } From a352f8603a64116e9ec0146d1575ba11701c1536 Mon Sep 17 00:00:00 2001 From: Simon Ellmann Date: Mon, 1 Jul 2019 02:38:34 +0200 Subject: [PATCH 0659/3180] Copy config.toml files of drivers to /etc/pcid.d/ --- recipes/drivers/recipe.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/recipes/drivers/recipe.sh b/recipes/drivers/recipe.sh index 5672d3cc..47a4bbea 100644 --- a/recipes/drivers/recipe.sh +++ b/recipes/drivers/recipe.sh @@ -12,4 +12,11 @@ function recipe_stage { mkdir -pv "$1/etc/pcid" cp -v initfs.toml "$1/etc/pcid/initfs.toml" cp -v filesystem.toml "$1/etc/pcid/filesystem.toml" + + mkdir -pv "$1/etc/pcid.d" + for conf in `find . -maxdepth 2 -type f -name 'config.toml'`; do + driver=$(echo $conf | cut -d '/' -f2) + cp -v $conf "$1/etc/pcid.d/$driver.toml" + done + } From eced823b5138604750d06ade38d0d411ba627baa Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 1 Jul 2019 16:41:10 -0600 Subject: [PATCH 0660/3180] Add strace recipe --- recipes/strace/recipe.sh | 1 + 1 file changed, 1 insertion(+) create mode 100644 recipes/strace/recipe.sh diff --git a/recipes/strace/recipe.sh b/recipes/strace/recipe.sh new file mode 100644 index 00000000..0b5404dc --- /dev/null +++ b/recipes/strace/recipe.sh @@ -0,0 +1 @@ +GIT=https://gitlab.redox-os.org/redox-os/strace-redox.git From addd4de7d5e8638cae183ce52a5a1f7e290dbe6c Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Sat, 6 Jul 2019 17:59:15 +0200 Subject: [PATCH 0661/3180] Add tokio patches This resolves the build errors for drivers. --- .cargo/config | 2 ++ .gitmodules | 3 +++ patches/mio | 2 +- patches/tokio | 1 + 4 files changed, 7 insertions(+), 1 deletion(-) create mode 160000 patches/tokio diff --git a/.cargo/config b/.cargo/config index 6e57e7c0..9952f0e4 100644 --- a/.cargo/config +++ b/.cargo/config @@ -2,6 +2,8 @@ paths = [ "patches/atty", "patches/liblibc", "patches/mio", + "patches/tokio/tokio", + "patches/tokio/tokio-reactor", "patches/net2-rs", "patches/pb", "patches/platform-info", diff --git a/.gitmodules b/.gitmodules index bccd9a18..84266852 100644 --- a/.gitmodules +++ b/.gitmodules @@ -49,3 +49,6 @@ path = patches/mio url = https://gitlab.redox-os.org/redox-os/mio.git branch = redox-unix +[submodule "patches/tokio"] + path = patches/tokio + url = git@gitlab.redox-os.org:redox-os/tokio.git diff --git a/patches/mio b/patches/mio index 58b70e49..c9a70849 160000 --- a/patches/mio +++ b/patches/mio @@ -1 +1 @@ -Subproject commit 58b70e4906d927139c499bb4bb29a990b35588fc +Subproject commit c9a70849ced97387e2607c9c466d23b130ec8901 diff --git a/patches/tokio b/patches/tokio new file mode 160000 index 00000000..880522af --- /dev/null +++ b/patches/tokio @@ -0,0 +1 @@ +Subproject commit 880522af62a59db82fafdc7bd7c8c58ec3302428 From 2b0ff5e2663edf528dcc1ae60e3554340bcb57a4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 6 Jul 2019 11:15:01 -0600 Subject: [PATCH 0662/3180] Update tokio URL --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 84266852..acbc2edb 100644 --- a/.gitmodules +++ b/.gitmodules @@ -51,4 +51,4 @@ branch = redox-unix [submodule "patches/tokio"] path = patches/tokio - url = git@gitlab.redox-os.org:redox-os/tokio.git + url = https://gitlab.redox-os.org/redox-os/tokio.git From 9bb5b2a8bf072b1bd342978d44bd4d43e7f9c960 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 10 Jul 2019 20:17:20 -0600 Subject: [PATCH 0663/3180] git: Link with nghttp2 --- recipes/git/git.patch | 41 +++++++++++++++++++++++++---------------- recipes/git/recipe.sh | 7 ++++--- 2 files changed, 29 insertions(+), 19 deletions(-) diff --git a/recipes/git/git.patch b/recipes/git/git.patch index 63ad8eec..f26e8094 100644 --- a/recipes/git/git.patch +++ b/recipes/git/git.patch @@ -1,6 +1,6 @@ -diff -ruw source/compat/terminal.c source-new/compat/terminal.c +diff -ruwN source/compat/terminal.c source-new/compat/terminal.c --- source/compat/terminal.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/compat/terminal.c 2019-03-13 14:50:29.028179965 -0600 ++++ source-new/compat/terminal.c 2019-07-10 20:15:47.185121514 -0600 @@ -137,6 +137,18 @@ return buf.buf; } @@ -20,9 +20,9 @@ diff -ruw source/compat/terminal.c source-new/compat/terminal.c #else char *git_terminal_prompt(const char *prompt, int echo) -diff -ruw source/configure source-new/configure +diff -ruwN source/configure source-new/configure --- source/configure 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/configure 2019-03-27 19:53:37.398482599 -0600 ++++ source-new/configure 2019-07-10 20:15:47.189121560 -0600 @@ -6156,7 +6156,7 @@ ac_res=$ac_cv_search_getaddrinfo if test "$ac_res" != no; then : @@ -32,9 +32,9 @@ diff -ruw source/configure source-new/configure else NO_IPV6=YesPlease fi -diff -ruw source/daemon.c source-new/daemon.c +diff -ruwN source/daemon.c source-new/daemon.c --- source/daemon.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/daemon.c 2019-03-13 14:50:29.028179965 -0600 ++++ source-new/daemon.c 2019-07-10 20:15:47.189121560 -0600 @@ -71,13 +71,21 @@ return hi->ip_address.buf; } @@ -96,9 +96,9 @@ diff -ruw source/daemon.c source-new/daemon.c /* avoid splitting a message in the middle */ setvbuf(stderr, NULL, _IOFBF, 4096); -diff -ruw source/git-compat-util.h source-new/git-compat-util.h +diff -ruwN source/git-compat-util.h source-new/git-compat-util.h --- source/git-compat-util.h 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/git-compat-util.h 2019-03-13 15:56:28.419769725 -0600 ++++ source-new/git-compat-util.h 2019-07-10 20:15:47.189121560 -0600 @@ -179,7 +179,9 @@ #include #include @@ -130,9 +130,18 @@ diff -ruw source/git-compat-util.h source-new/git-compat-util.h #ifdef HAVE_PATHS_H #include -diff -ruw source/Makefile source-new/Makefile +diff -ruwN source/Makefile source-new/Makefile --- source/Makefile 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/Makefile 2019-03-13 14:50:29.028179965 -0600 ++++ source-new/Makefile 2019-07-10 20:15:59.809264435 -0600 +@@ -979,7 +979,7 @@ + BUILTIN_OBJS += builtin/write-tree.o + + GITLIBS = common-main.o $(LIB_FILE) $(XDIFF_LIB) +-EXTLIBS = ++EXTLIBS = -lnghttp2 + + GIT_USER_AGENT = git/$(GIT_VERSION) + @@ -1802,7 +1802,6 @@ $(BUILT_INS): git$X @@ -172,9 +181,9 @@ diff -ruw source/Makefile source-new/Makefile ln -s "git-remote-http$X" "$$execdir/$$p" 2>/dev/null || \ cp "$$execdir/git-remote-http$X" "$$execdir/$$p" || exit; \ done && \ -diff -ruw source/run-command.c source-new/run-command.c +diff -ruwN source/run-command.c source-new/run-command.c --- source/run-command.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/run-command.c 2019-03-13 15:56:57.331276675 -0600 ++++ source-new/run-command.c 2019-07-10 20:15:47.193121606 -0600 @@ -120,9 +120,9 @@ #ifndef GIT_WINDOWS_NATIVE static inline void dup_devnull(int to) @@ -196,9 +205,9 @@ diff -ruw source/run-command.c source-new/run-command.c strbuf_reset(&buf); -diff -ruw source/setup.c source-new/setup.c +diff -ruwN source/setup.c source-new/setup.c --- source/setup.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/setup.c 2019-03-13 14:50:29.028179965 -0600 ++++ source-new/setup.c 2019-07-10 20:15:47.193121606 -0600 @@ -1146,11 +1146,11 @@ /* if any standard file descriptor is missing open it to /dev/null */ void sanitize_stdfds(void) @@ -224,9 +233,9 @@ diff -ruw source/setup.c source-new/setup.c close(0); close(1); close(2); -diff -ruw source/strbuf.c source-new/strbuf.c +diff -ruwN source/strbuf.c source-new/strbuf.c --- source/strbuf.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/strbuf.c 2019-03-13 14:50:29.028179965 -0600 ++++ source-new/strbuf.c 2019-07-10 20:15:47.193121606 -0600 @@ -446,6 +446,13 @@ for (;; guessed_len *= 2) { strbuf_grow(sb, guessed_len); diff --git a/recipes/git/recipe.sh b/recipes/git/recipe.sh index 21c2a6f7..a798ec4e 100644 --- a/recipes/git/recipe.sh +++ b/recipes/git/recipe.sh @@ -1,6 +1,6 @@ VERSION=2.13.1 TAR=https://www.kernel.org/pub/software/scm/git/git-$VERSION.tar.xz -BUILD_DEPENDS=(zlib curl openssl expat) +BUILD_DEPENDS=(zlib curl openssl expat nghttp2) DEPENDS="ca-certificates" MAKEFLAGS=( @@ -10,6 +10,7 @@ MAKEFLAGS=( NEEDS_LIBICONV= NEEDS_LIBRT= BLK_SHA1=1 + V=1 ) function recipe_version { @@ -26,14 +27,14 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" + export CURL_CONFIG="$sysroot/bin/curl-config" ./configure \ --build="${BUILD}" \ --host="${HOST}" \ --prefix=/ \ ac_cv_fread_reads_directories=yes \ ac_cv_snprintf_returns_bogus=yes \ - ac_cv_lib_curl_curl_global_init=yes \ - CURL_CONFIG=no + ac_cv_lib_curl_curl_global_init=yes make "${MAKEFLAGS[@]}" -j"$(nproc)" skip=1 } From 487d16424ec62095039502d380afbd7587aecc80 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 11 Jul 2019 11:03:51 -0600 Subject: [PATCH 0664/3180] Add orbclient example recipe --- recipes/orbclient/recipe.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 recipes/orbclient/recipe.sh diff --git a/recipes/orbclient/recipe.sh b/recipes/orbclient/recipe.sh new file mode 100644 index 00000000..cdd0c978 --- /dev/null +++ b/recipes/orbclient/recipe.sh @@ -0,0 +1,10 @@ + +GIT=https://gitlab.redox-os.org/redox-os/orbclient.git +CARGOFLAGS="--example simple" + +function recipe_stage { + dest="$(realpath $1)" + mkdir -pv "$dest/bin" + cp -v "target/${TARGET}/release/examples/simple" "$dest/bin/orbclient" + skip=1 +} From 6b8e8b40901beba3e61d24f7c5d900cf6e5a1861 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 11 Jul 2019 11:03:59 -0600 Subject: [PATCH 0665/3180] Compile git statically --- recipes/git/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/git/recipe.sh b/recipes/git/recipe.sh index a798ec4e..5c58deb2 100644 --- a/recipes/git/recipe.sh +++ b/recipes/git/recipe.sh @@ -25,7 +25,7 @@ function recipe_update { function recipe_build { sysroot="$(realpath ../sysroot)" - export LDFLAGS="-L$sysroot/lib" + export LDFLAGS="-L$sysroot/lib -static" export CPPFLAGS="-I$sysroot/include" export CURL_CONFIG="$sysroot/bin/curl-config" ./configure \ From 8c969f8383c1f1d16a4eb2cb60374dc08c460236 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 16 Jul 2019 17:18:06 -0600 Subject: [PATCH 0666/3180] Add fontconfig --- recipes/fontconfig/recipe.sh | 46 ++++++++++++++++++++++++++++++++++ recipes/fontconfig/redox.patch | 21 ++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100755 recipes/fontconfig/recipe.sh create mode 100644 recipes/fontconfig/redox.patch diff --git a/recipes/fontconfig/recipe.sh b/recipes/fontconfig/recipe.sh new file mode 100755 index 00000000..8f29e0fb --- /dev/null +++ b/recipes/fontconfig/recipe.sh @@ -0,0 +1,46 @@ +VERSION="2.13.91" +TAR="https://www.freedesktop.org/software/fontconfig/release/fontconfig-${VERSION}.tar.xz" +BUILD_DEPENDS=(expat freetype libpng zlib) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib --static" + ./configure \ + --build=${BUILD} \ + --host=${HOST} \ + --prefix=/ \ + --disable-shared \ + --enable-static \ + ac_cv_func_XML_SetDoctypeDeclHandler=yes + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + echo "skipping stage" + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} diff --git a/recipes/fontconfig/redox.patch b/recipes/fontconfig/redox.patch new file mode 100644 index 00000000..7e9e7472 --- /dev/null +++ b/recipes/fontconfig/redox.patch @@ -0,0 +1,21 @@ +diff -ruwN source/src/fccache.c source-new/src/fccache.c +--- source/src/fccache.c 2019-06-10 05:36:37.000000000 -0600 ++++ source-new/src/fccache.c 2019-07-16 17:13:18.730013599 -0600 +@@ -1526,7 +1526,7 @@ + #if defined(_WIN32) + if (_locking (fd, _LK_LOCK, 1) == -1) + goto bail; +-#else ++#elif !defined(__redox__) + struct flock fl; + + fl.l_type = F_WRLCK; +@@ -1556,7 +1556,7 @@ + { + #if defined(_WIN32) + _locking (fd, _LK_UNLCK, 1); +-#else ++#elif !defined(__redox__) + struct flock fl; + + fl.l_type = F_UNLCK; From d57b583932c099f896359f9d9eb79b315bea5327 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 16 Jul 2019 17:21:08 -0600 Subject: [PATCH 0667/3180] Remove libtool files from fontconfig --- recipes/fontconfig/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/fontconfig/recipe.sh b/recipes/fontconfig/recipe.sh index 8f29e0fb..eba97cc8 100755 --- a/recipes/fontconfig/recipe.sh +++ b/recipes/fontconfig/recipe.sh @@ -39,8 +39,8 @@ function recipe_clean { } function recipe_stage { - echo "skipping stage" dest="$(realpath $1)" make DESTDIR="$dest" install + rm -f "$dest/lib/"*.la skip=1 } From 0b88e9c88b1176ecd76704e9be5391502f171c70 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 16 Jul 2019 17:40:21 -0600 Subject: [PATCH 0668/3180] Add glib intergration to harfbuzz --- recipes/harfbuzz/recipe.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/recipes/harfbuzz/recipe.sh b/recipes/harfbuzz/recipe.sh index 0f8a4ba0..0b3980bf 100644 --- a/recipes/harfbuzz/recipe.sh +++ b/recipes/harfbuzz/recipe.sh @@ -1,6 +1,6 @@ VERSION=2.3.0 TAR=https://www.freedesktop.org/software/harfbuzz/release/harfbuzz-$VERSION.tar.bz2 -BUILD_DEPENDS=(freetype libpng zlib) +BUILD_DEPENDS=(freetype gettext glib libiconv libpng pcre zlib) function recipe_version { echo "$VERSION" @@ -15,7 +15,7 @@ function recipe_update { function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib" + export LDFLAGS="-L$sysroot/lib --static" #wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub FREETYPE_CFLAGS="$("${PKG_CONFIG}" --cflags freetype2)" FREETYPE_LIBS="$("${PKG_CONFIG}" --libs freetype2)" @@ -25,9 +25,10 @@ function recipe_build { --prefix=/ \ --disable-shared \ --enable-static \ + --with-glib=yes \ --with-freetype=yes \ --with-icu=no - make -j"$(nproc)" V=1 + make -j"$(nproc)" skip=1 } From f1b9327d9b1c8d835eed22003f892e45a8843afa Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 16 Jul 2019 17:49:11 -0600 Subject: [PATCH 0669/3180] Remove libtool files from cairo and pixman --- recipes/cairo/recipe.sh | 4 ++-- recipes/pixman/recipe.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/cairo/recipe.sh b/recipes/cairo/recipe.sh index 2d328557..d7c5b730 100755 --- a/recipes/cairo/recipe.sh +++ b/recipes/cairo/recipe.sh @@ -21,7 +21,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" CFLAGS="-DCAIRO_NO_MUTEX=1" ./configure --build=${BUILD} --host=${HOST} --prefix=/ --enable-xlib=no --enable-script=no --enable-interpreter=no - make + make -j"$(nproc)" skip=1 } @@ -36,8 +36,8 @@ function recipe_clean { } function recipe_stage { - echo "skipping stage" dest="$(realpath $1)" make DESTDIR="$dest" install + rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/pixman/recipe.sh b/recipes/pixman/recipe.sh index 708a2f71..59338056 100755 --- a/recipes/pixman/recipe.sh +++ b/recipes/pixman/recipe.sh @@ -34,8 +34,8 @@ function recipe_clean { } function recipe_stage { - echo "skipping stage" dest="$(realpath $1)" make DESTDIR="$dest" install + rm -f "$dest/lib/"*.la skip=1 } From b1fa970df3a2b5434e4766dffa3f21be0c3b508e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 16 Jul 2019 19:22:01 -0600 Subject: [PATCH 0670/3180] Add fontconfig to cairo --- recipes/cairo/recipe.sh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/recipes/cairo/recipe.sh b/recipes/cairo/recipe.sh index d7c5b730..f054b88f 100755 --- a/recipes/cairo/recipe.sh +++ b/recipes/cairo/recipe.sh @@ -1,6 +1,6 @@ VERSION="1.16.0" TAR=https://www.cairographics.org/releases/cairo-$VERSION.tar.xz -BUILD_DEPENDS=(zlib pixman freetype libpng) +BUILD_DEPENDS=(expat freetype fontconfig libpng pixman zlib) function recipe_version { echo "$VERSION" @@ -20,7 +20,13 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" - CFLAGS="-DCAIRO_NO_MUTEX=1" ./configure --build=${BUILD} --host=${HOST} --prefix=/ --enable-xlib=no --enable-script=no --enable-interpreter=no + CFLAGS="-DCAIRO_NO_MUTEX=1" ./configure \ + --build=${BUILD} \ + --host=${HOST} \ + --prefix=/ \ + --enable-xlib=no \ + --enable-script=no \ + --enable-interpreter=no make -j"$(nproc)" skip=1 } From e9d7d6d42576bd8c86eddb642efc6cb6feaa84da Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 16 Jul 2019 19:22:30 -0600 Subject: [PATCH 0671/3180] Add pango --- recipes/pango/recipe.sh | 46 +++++++++++++++++++++++++++++++++++++++ recipes/pango/redox.patch | 12 ++++++++++ 2 files changed, 58 insertions(+) create mode 100755 recipes/pango/recipe.sh create mode 100644 recipes/pango/redox.patch diff --git a/recipes/pango/recipe.sh b/recipes/pango/recipe.sh new file mode 100755 index 00000000..09c6c952 --- /dev/null +++ b/recipes/pango/recipe.sh @@ -0,0 +1,46 @@ +VERSION="1.38.1" +TAR="ftp.gnome.org/pub/GNOME/sources/pango/${VERSION%.*}/pango-${VERSION}.tar.xz" +BUILD_DEPENDS=(cairo expat fontconfig freetype gettext glib harfbuzz libffi libiconv libpng pcre pixman zlib) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib --static" + export GLIB_MKENUMS="$sysroot/bin/glib-mkenums" + ./configure \ + --build=${BUILD} \ + --host=${HOST} \ + --prefix=/ \ + --disable-shared \ + --enable-static + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + rm -f "$dest/lib/"*.la + skip=1 +} diff --git a/recipes/pango/redox.patch b/recipes/pango/redox.patch new file mode 100644 index 00000000..d6a96c33 --- /dev/null +++ b/recipes/pango/redox.patch @@ -0,0 +1,12 @@ +diff -ruwN source/configure source-new/configure +--- source/configure 2015-10-12 13:14:13.000000000 -0600 ++++ source-new/configure 2019-07-16 17:31:27.949906081 -0600 +@@ -19323,7 +19323,7 @@ + fi + + # Setup GLIB_MKENUMS to use glib-mkenums even if GLib is uninstalled. +-GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0` ++#GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0` + + + # From 3f7a397fc9b8720e57a4ae7469fa572fa9855f81 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 16 Jul 2019 19:37:30 -0600 Subject: [PATCH 0672/3180] Add fribidi --- recipes/fribidi/recipe.sh | 45 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100755 recipes/fribidi/recipe.sh diff --git a/recipes/fribidi/recipe.sh b/recipes/fribidi/recipe.sh new file mode 100755 index 00000000..6d28b967 --- /dev/null +++ b/recipes/fribidi/recipe.sh @@ -0,0 +1,45 @@ +VERSION="1.0.5" +TAR="https://github.com/fribidi/fribidi/releases/download/v${VERSION}/fribidi-${VERSION}.tar.bz2" +BUILD_DEPENDS=() + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib --static" + ./configure \ + --build=${BUILD} \ + --host=${HOST} \ + --prefix=/ \ + --disable-shared \ + --enable-static + sed -i 's|#define HAVE_SYS_TIMES_H 1|/* #undef HAVE_SYS_TIMES_H */|g' config.h + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + rm -f "$dest/lib/"*.la + skip=1 +} From ac47f89c1159cf1b713efda1649549850084b481 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 16 Jul 2019 19:38:38 -0600 Subject: [PATCH 0673/3180] Update pango --- recipes/pango/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/pango/recipe.sh b/recipes/pango/recipe.sh index 09c6c952..55de27de 100755 --- a/recipes/pango/recipe.sh +++ b/recipes/pango/recipe.sh @@ -1,6 +1,6 @@ -VERSION="1.38.1" +VERSION="1.42.4" TAR="ftp.gnome.org/pub/GNOME/sources/pango/${VERSION%.*}/pango-${VERSION}.tar.xz" -BUILD_DEPENDS=(cairo expat fontconfig freetype gettext glib harfbuzz libffi libiconv libpng pcre pixman zlib) +BUILD_DEPENDS=(cairo expat fontconfig freetype fribidi gettext glib harfbuzz libffi libiconv libpng pcre pixman zlib) function recipe_version { echo "$VERSION" From 6b7fee2a018614217e1b6d4db70e70748ac0ac9f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 16 Jul 2019 19:47:59 -0600 Subject: [PATCH 0674/3180] Add atk --- recipes/atk/.recipe.sh.swp | Bin 0 -> 1024 bytes recipes/atk/recipe.sh | 47 +++++++++++++++++++++++++++++++++++++ recipes/atk/redox.patch | 14 +++++++++++ 3 files changed, 61 insertions(+) create mode 100644 recipes/atk/.recipe.sh.swp create mode 100755 recipes/atk/recipe.sh create mode 100644 recipes/atk/redox.patch diff --git a/recipes/atk/.recipe.sh.swp b/recipes/atk/.recipe.sh.swp new file mode 100644 index 0000000000000000000000000000000000000000..a7ab80a190622b857443e5d8ddb07eb9a8d091a1 GIT binary patch literal 1024 zcmYc?$V<%2S1{HyVn6{6{0t0PsYR)|l_ Date: Tue, 16 Jul 2019 19:48:11 -0600 Subject: [PATCH 0675/3180] Remove swap file --- recipes/atk/.recipe.sh.swp | Bin 1024 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 recipes/atk/.recipe.sh.swp diff --git a/recipes/atk/.recipe.sh.swp b/recipes/atk/.recipe.sh.swp deleted file mode 100644 index a7ab80a190622b857443e5d8ddb07eb9a8d091a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmYc?$V<%2S1{HyVn6{6{0t0PsYR)|l_ Date: Tue, 16 Jul 2019 20:23:34 -0600 Subject: [PATCH 0676/3180] Add libxml2 --- recipes/libxml2/recipe.sh | 45 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100755 recipes/libxml2/recipe.sh diff --git a/recipes/libxml2/recipe.sh b/recipes/libxml2/recipe.sh new file mode 100755 index 00000000..bf3eed4b --- /dev/null +++ b/recipes/libxml2/recipe.sh @@ -0,0 +1,45 @@ +VERSION="2.9.9" +TAR="ftp://xmlsoft.org/libxml2/libxml2-${VERSION}.tar.gz" +BUILD_DEPENDS=() + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib --static" + ./configure \ + --build=${BUILD} \ + --host=${HOST} \ + --prefix=/ \ + --disable-shared \ + --enable-static \ + --without-python + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + rm -f "$dest/lib/"*.la + skip=1 +} From c0b7012ddadad38b65fc241a25143f63ee46ac50 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 16 Jul 2019 20:27:00 -0600 Subject: [PATCH 0677/3180] Add shared-mime-info --- recipes/shared-mime-info/recipe.sh | 42 ++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100755 recipes/shared-mime-info/recipe.sh diff --git a/recipes/shared-mime-info/recipe.sh b/recipes/shared-mime-info/recipe.sh new file mode 100755 index 00000000..93604944 --- /dev/null +++ b/recipes/shared-mime-info/recipe.sh @@ -0,0 +1,42 @@ +VERSION="1.10" +TAR="https://freedesktop.org/~hadess/shared-mime-info-${VERSION}.tar.xz" +BUILD_DEPENDS=(gettext glib libffi libiconv libxml2 pcre zlib) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib --static" + ./configure \ + --build=${BUILD} \ + --host=${HOST} \ + --prefix=/ + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + rm -f "$dest/lib/"*.la + skip=1 +} From 088edbe553df96d2fa31804d91460795f6fdeffd Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 16 Jul 2019 21:12:00 -0600 Subject: [PATCH 0678/3180] Add gdk-pixbuf --- recipes/gdk-pixbuf/recipe.sh | 80 ++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100755 recipes/gdk-pixbuf/recipe.sh diff --git a/recipes/gdk-pixbuf/recipe.sh b/recipes/gdk-pixbuf/recipe.sh new file mode 100755 index 00000000..e6dfb00d --- /dev/null +++ b/recipes/gdk-pixbuf/recipe.sh @@ -0,0 +1,80 @@ +VERSION="2.38.1" +TAR="https://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/${VERSION%.*}/gdk-pixbuf-${VERSION}.tar.xz" +BUILD_DEPENDS=(gettext glib libffi libiconv libjpeg libpng pcre shared-mime-info zlib) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="$(realpath ../sysroot)" + export LDFLAGS="-static" + + # TODO: Fix this annoying shite + echo "[binaries]" > cross_file.txt + echo "c = '${CC}'" >> cross_file.txt + echo "cpp = '${CXX}'" >> cross_file.txt + echo "ar = '${AR}'" >> cross_file.txt + echo "strip = '${STRIP}'" >> cross_file.txt + echo "pkgconfig = '${PKG_CONFIG}'" >> cross_file.txt + + echo "[host_machine]" >> cross_file.txt + echo "system = 'redox'" >> cross_file.txt + echo "cpu_family = 'x86_64'" >> cross_file.txt + echo "cpu = 'x86_64'" >> cross_file.txt + echo "endian = 'little'" >> cross_file.txt + + echo "[paths]" >> cross_file.txt + echo "prefix = '${sysroot}'" >> cross_file.txt + echo "libdir = 'lib'" >> cross_file.txt + echo "bindir = 'bin'" >> cross_file.txt + + unset AR + unset AS + unset CC + unset CXX + unset LD + unset NM + unset OBJCOPY + unset OBJDUMP + unset PKG_CONFIG + unset RANLIB + unset READELF + unset STRIP + + meson . _build \ + --cross-file cross_file.txt \ + --buildtype release \ + --strip \ + -Ddefault_library=static \ + -Dprefix=/ \ + -Dlibdir=lib \ + -Dbuiltin_loaders=all \ + -Dgir=false \ + -Dx11=false + ninja -C _build -v + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + DESTDIR="$dest" ninja -C _build -v install + rm -f "$dest/lib/"*.la + skip=1 +} From 2c061f7d9f9d08f871400b58bc3adfdffd436db8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 16 Jul 2019 21:12:32 -0600 Subject: [PATCH 0679/3180] Allow share/pkgconfig to be detected --- bin/x86_64-unknown-redox-pkg-config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/x86_64-unknown-redox-pkg-config b/bin/x86_64-unknown-redox-pkg-config index 54776ef2..c1eb8323 100755 --- a/bin/x86_64-unknown-redox-pkg-config +++ b/bin/x86_64-unknown-redox-pkg-config @@ -1,7 +1,7 @@ #!/usr/bin/env bash -export PKG_CONFIG_PATH= export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_RECIPE}/sysroot" export PKG_CONFIG_LIBDIR="${PKG_CONFIG_SYSROOT_DIR}/lib/pkgconfig" +export PKG_CONFIG_PATH="${PKG_CONFIG_SYSROOT_DIR}/share/pkgconfig" exec pkg-config --static "$@" From d90e711e61e676ae3d0fa61fcf6f58a28727cf55 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 16 Jul 2019 22:09:18 -0600 Subject: [PATCH 0680/3180] Update python to 3.7.4, reduce patch significantly --- recipes/python/python.patch | 275 ------------------------------------ recipes/python/recipe.sh | 18 ++- recipes/python/redox.patch | 91 ++++++++++++ 3 files changed, 104 insertions(+), 280 deletions(-) delete mode 100644 recipes/python/python.patch create mode 100644 recipes/python/redox.patch diff --git a/recipes/python/python.patch b/recipes/python/python.patch deleted file mode 100644 index fc81d5fb..00000000 --- a/recipes/python/python.patch +++ /dev/null @@ -1,275 +0,0 @@ -diff -ru Python-3.6.1/configure Python-3.6.1-new/configure ---- Python-3.6.1/configure 2017-03-20 23:32:38.000000000 -0700 -+++ Python-3.6.1-new/configure 2017-07-03 15:26:44.804152125 -0700 -@@ -3256,6 +3256,9 @@ - *-*-cygwin*) - ac_sys_system=Cygwin - ;; -+ *-*-redox*) -+ ac_sys_system=Redox -+ ;; - *) - # for now, limit cross builds to known configurations - MACHDEP="unknown" -@@ -3302,9 +3305,7 @@ - _host_cpu= - ;; - *) -- # for now, limit cross builds to known configurations -- MACHDEP="unknown" -- as_fn_error $? "cross build not supported for $host" "$LINENO" 5 -+ _host_cpu=$host_cpu - esac - _PYTHON_HOST_PLATFORM="$MACHDEP${_host_cpu:+-$_host_cpu}" - fi -@@ -11343,7 +11344,6 @@ - _ACEOF - if ac_fn_c_try_compile "$LINENO"; then : - --$as_echo "#define HAVE_FCHDIR 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } -@@ -11393,7 +11393,6 @@ - _ACEOF - if ac_fn_c_try_compile "$LINENO"; then : - --$as_echo "#define HAVE_FDATASYNC 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } -@@ -12093,7 +12092,6 @@ - _ACEOF - if ac_fn_c_try_compile "$LINENO"; then : - --$as_echo "#define HAVE_SETGROUPS 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } -@@ -12491,8 +12489,8 @@ - $as_echo "$ac_cv_lib_rt_clock_gettime" >&6; } - if test "x$ac_cv_lib_rt_clock_gettime" = xyes; then : - -- LIBS="$LIBS -lrt" - $as_echo "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h -+ LIBS="$LIBS -lrt" - - - $as_echo "#define TIMEMODULE_LIB rt" >>confdefs.h -@@ -12510,7 +12508,6 @@ - ac_fn_c_check_func "$LINENO" "clock_getres" "ac_cv_func_clock_getres" - if test "x$ac_cv_func_clock_getres" = xyes; then : - cat >>confdefs.h <<_ACEOF --#define HAVE_CLOCK_GETRES 1 - _ACEOF - - else -@@ -12553,7 +12550,6 @@ - $as_echo "$ac_cv_lib_rt_clock_getres" >&6; } - if test "x$ac_cv_lib_rt_clock_getres" = xyes; then : - -- $as_echo "#define HAVE_CLOCK_GETRES 1" >>confdefs.h - - - fi -diff -ru Python-3.6.1/Lib/posixpath.py Python-3.6.1-new/Lib/posixpath.py ---- Python-3.6.1/Lib/posixpath.py 2017-03-20 23:32:38.000000000 -0700 -+++ Python-3.6.1-new/Lib/posixpath.py 2017-07-04 13:28:08.034693302 -0700 -@@ -165,11 +165,7 @@ - - def islink(path): - """Test whether a path is a symbolic link""" -- try: -- st = os.lstat(path) -- except (OSError, AttributeError): -- return False -- return stat.S_ISLNK(st.st_mode) -+ return False - - # Being true for dangling symbolic links is also useful. - -diff -ru Python-3.6.1/Modules/clinic/posixmodule.c.h Python-3.6.1-new/Modules/clinic/posixmodule.c.h ---- Python-3.6.1/Modules/clinic/posixmodule.c.h 2017-03-20 23:32:38.000000000 -0700 -+++ Python-3.6.1-new/Modules/clinic/posixmodule.c.h 2017-07-03 14:47:11.991792352 -0700 -@@ -519,7 +519,7 @@ - - #endif /* defined(HAVE_LCHFLAGS) */ - --#if defined(HAVE_CHROOT) -+#if 0 - - PyDoc_STRVAR(os_chroot__doc__, - "chroot($module, /, path)\n" -diff -ru Python-3.6.1/Modules/faulthandler.c Python-3.6.1-new/Modules/faulthandler.c ---- Python-3.6.1/Modules/faulthandler.c 2017-03-20 23:32:38.000000000 -0700 -+++ Python-3.6.1-new/Modules/faulthandler.c 2017-07-03 14:39:30.321353882 -0700 -@@ -906,7 +906,7 @@ - SetErrorMode(mode | SEM_NOGPFAULTERRORBOX); - #endif - --#ifdef HAVE_SYS_RESOURCE_H -+#if 0 - struct rlimit rl; - - /* Disable creation of core dump */ -diff -ru Python-3.6.1/Modules/_io/fileio.c Python-3.6.1-new/Modules/_io/fileio.c ---- Python-3.6.1/Modules/_io/fileio.c 2017-03-20 23:32:38.000000000 -0700 -+++ Python-3.6.1-new/Modules/_io/fileio.c 2017-07-04 13:13:07.963211923 -0700 -@@ -457,7 +457,7 @@ - } - } - else { --#if defined(S_ISDIR) && defined(EISDIR) -+#if 0 - /* On Unix, open will succeed for directories. - In Python, there should be no file objects referring to - directories, so we need a check. */ -@@ -467,7 +467,7 @@ - goto error; - } - #endif /* defined(S_ISDIR) */ --#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE -+#if 0 - if (fdfstat.st_blksize > 1) - self->blksize = fdfstat.st_blksize; - #endif /* HAVE_STRUCT_STAT_ST_BLKSIZE */ -diff -ru Python-3.6.1/Modules/posixmodule.c Python-3.6.1-new/Modules/posixmodule.c ---- Python-3.6.1/Modules/posixmodule.c 2017-03-20 23:32:38.000000000 -0700 -+++ Python-3.6.1-new/Modules/posixmodule.c 2017-07-03 15:31:13.753481813 -0700 -@@ -188,7 +188,6 @@ - #define HAVE_PIPE 1 - #define HAVE_SYSTEM 1 - #define HAVE_WAIT 1 --#define HAVE_TTYNAME 1 - #endif /* _MSC_VER */ - #endif /* ! __WATCOMC__ || __QNX__ */ - -@@ -2940,7 +2939,7 @@ - #endif /* HAVE_LCHFLAGS */ - - --#ifdef HAVE_CHROOT -+#if 0 - /*[clinic input] - os.chroot - path: path_t -@@ -5563,8 +5562,6 @@ - os_sched_yield_impl(PyObject *module) - /*[clinic end generated code: output=902323500f222cac input=e54d6f98189391d4]*/ - { -- if (sched_yield()) -- return posix_error(); - Py_RETURN_NONE; - } - -@@ -11804,7 +11801,7 @@ - (name_len == 1 || (direntp->d_name[1] == '.' && name_len == 2)); - if (!is_dot) { - entry = DirEntry_from_posix_info(&iterator->path, direntp->d_name, -- name_len, direntp->d_ino -+ name_len, 0 - #ifdef HAVE_DIRENT_D_TYPE - , direntp->d_type - #endif -diff -ru Python-3.6.1/Modules/timemodule.c Python-3.6.1-new/Modules/timemodule.c ---- Python-3.6.1/Modules/timemodule.c 2017-03-20 23:32:38.000000000 -0700 -+++ Python-3.6.1-new/Modules/timemodule.c 2017-07-03 14:41:43.868293016 -0700 -@@ -966,7 +966,7 @@ - return PyFloat_FromDouble(total * 1e-7); - #else - --#if defined(HAVE_SYS_RESOURCE_H) -+#if 0 - struct rusage ru; - #endif - #ifdef HAVE_TIMES -@@ -1000,7 +1000,7 @@ - } - #endif - --#if defined(HAVE_SYS_RESOURCE_H) -+#if 0 - if (getrusage(RUSAGE_SELF, &ru) == 0) { - double total; - total = ru.ru_utime.tv_sec + ru.ru_utime.tv_usec * 1e-6; -@@ -1195,7 +1195,7 @@ - - And I'm lazy and hate C so nyer. - */ --#if defined(HAVE_TZNAME) && !defined(__GLIBC__) && !defined(__CYGWIN__) -+#if 0 - PyObject *otz0, *otz1; - tzset(); - PyModule_AddIntConstant(m, "timezone", timezone); -diff -ru Python-3.6.1/Python/pylifecycle.c Python-3.6.1-new/Python/pylifecycle.c ---- Python-3.6.1/Python/pylifecycle.c 2017-03-20 23:32:38.000000000 -0700 -+++ Python-3.6.1-new/Python/pylifecycle.c 2017-07-04 09:28:10.863071915 -0700 -@@ -998,7 +998,7 @@ - #else - if (Py_FileSystemDefaultEncoding == NULL) - { -- Py_FileSystemDefaultEncoding = get_locale_encoding(); -+ Py_FileSystemDefaultEncoding = "utf-8"; - if (Py_FileSystemDefaultEncoding == NULL) - Py_FatalError("Py_Initialize: Unable to get the locale encoding"); - -diff -ru Python-3.6.1/Python/pytime.c Python-3.6.1-new/Python/pytime.c ---- Python-3.6.1/Python/pytime.c 2017-03-20 23:32:38.000000000 -0700 -+++ Python-3.6.1-new/Python/pytime.c 2017-07-03 15:29:14.832184973 -0700 -@@ -578,9 +578,6 @@ - info->implementation = "clock_gettime(CLOCK_REALTIME)"; - info->monotonic = 0; - info->adjustable = 1; -- if (clock_getres(CLOCK_REALTIME, &res) == 0) -- info->resolution = res.tv_sec + res.tv_nsec * 1e-9; -- else - info->resolution = 1e-9; - } - #else /* HAVE_CLOCK_GETTIME */ -@@ -714,15 +711,10 @@ - } - - if (info) { -- struct timespec res; - info->monotonic = 1; - info->implementation = implementation; - info->adjustable = 0; -- if (clock_getres(clk_id, &res) != 0) { -- PyErr_SetFromErrno(PyExc_OSError); -- return -1; -- } -- info->resolution = res.tv_sec + res.tv_nsec * 1e-9; -+ info->resolution = 1e-5; - } - if (_PyTime_FromTimespec(tp, &ts, raise) < 0) - return -1; -diff -ru Python-3.6.1/Python/random.c Python-3.6.1-new/Python/random.c ---- Python-3.6.1/Python/random.c 2017-03-20 23:32:38.000000000 -0700 -+++ Python-3.6.1-new/Python/random.c 2017-07-03 16:07:31.740783648 -0700 -@@ -79,7 +79,7 @@ - - #else /* !MS_WINDOWS */ - --#if defined(HAVE_GETRANDOM) || defined(HAVE_GETRANDOM_SYSCALL) -+#if 0 - #define PY_GETRANDOM 1 - - /* Call getrandom() to get random bytes: -@@ -316,7 +316,7 @@ - if (urandom_cache.fd >= 0) - fd = urandom_cache.fd; - else { -- fd = _Py_open("/dev/urandom", O_RDONLY); -+ fd = _Py_open("rand:", O_RDONLY); - if (fd < 0) { - if (errno == ENOENT || errno == ENXIO || - errno == ENODEV || errno == EACCES) { -@@ -361,7 +361,7 @@ - } while (0 < size); - } - else { -- fd = _Py_open_noraise("/dev/urandom", O_RDONLY); -+ fd = _Py_open_noraise("rand:", O_RDONLY); - if (fd < 0) { - return -1; - } diff --git a/recipes/python/recipe.sh b/recipes/python/recipe.sh index ed96cb55..10357bbe 100644 --- a/recipes/python/recipe.sh +++ b/recipes/python/recipe.sh @@ -1,5 +1,6 @@ -VERSION=3.6.2 +VERSION=3.7.4 TAR=https://www.python.org/ftp/python/$VERSION/Python-$VERSION.tar.xz +BUILD_DEPENDS=(openssl) export CONFIG_SITE=config.site @@ -15,7 +16,15 @@ function recipe_update { function recipe_build { cp ../config.site ./ - ./configure --build=${BUILD} --host=${HOST} --build=${ARCH} --prefix=/ + ./configure \ + --build=${BUILD} \ + --host=${HOST} \ + --build=${ARCH} \ + --prefix=/ \ + --disable-ipv6 + sed -i 's|#define HAVE_PTHREAD_KILL 1|/* #undef HAVE_PTHREAD_KILL */|g' pyconfig.h + sed -i 's|#define HAVE_SCHED_SETSCHEDULER 1|/* #undef HAVE_SCHED_SETSCHEDULER */|g' pyconfig.h + sed -i 's|#define HAVE_SYS_RESOURCE_H 1|/* #undef HAVE_SYS_RESOURCE_H */|g' pyconfig.h make -j"$(nproc)" skip=1 } @@ -32,8 +41,7 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" - make prefix="$dest" install - $STRIP "$dest/bin/python3.6" - rm -rf "$dest"/{share,lib/*.a,include} + make DESTDIR="$dest" install -j"$(nproc)" + "$STRIP" "$dest/bin/python3.7" skip=1 } diff --git a/recipes/python/redox.patch b/recipes/python/redox.patch new file mode 100644 index 00000000..6f1da623 --- /dev/null +++ b/recipes/python/redox.patch @@ -0,0 +1,91 @@ +diff -ruwN source/configure source-new/configure +--- source/configure 2019-07-08 12:03:50.000000000 -0600 ++++ source-new/configure 2019-07-16 21:25:29.432607847 -0600 +@@ -3261,6 +3261,9 @@ + *-*-cygwin*) + ac_sys_system=Cygwin + ;; ++ *-*-redox*) ++ ac_sys_system=Redox ++ ;; + *) + # for now, limit cross builds to known configurations + MACHDEP="unknown" +@@ -3293,7 +3296,7 @@ + + if test "$cross_compiling" = yes; then + case "$host" in +- *-*-linux*) ++ *-*-linux*|*-*-redox*) + case "$host_cpu" in + arm*) + _host_cpu=arm +diff -ruwN source/Lib/distutils/util.py source-new/Lib/distutils/util.py +--- source/Lib/distutils/util.py 2019-07-08 12:03:50.000000000 -0600 ++++ source-new/Lib/distutils/util.py 2019-07-16 22:07:35.994862914 -0600 +@@ -131,7 +131,7 @@ + if not os.path.isabs(pathname): + return os.path.join(new_root, pathname) + else: +- return os.path.join(new_root, pathname[1:]) ++ return os.path.join(new_root, pathname.lstrip('/')) + + elif os.name == 'nt': + (drive, path) = os.path.splitdrive(pathname) +diff -ruwN source/Modules/main.c source-new/Modules/main.c +--- source/Modules/main.c 2019-07-08 12:03:50.000000000 -0600 ++++ source-new/Modules/main.c 2019-07-16 21:46:53.037866142 -0600 +@@ -56,6 +56,16 @@ + } \ + } while (0) + ++#if defined(__redox__) ++wchar_t * wcstok(wchar_t * wcs, const wchar_t * delimiters, wchar_t ** ptr) { ++ return NULL; ++} ++ ++long wcstol(const wchar_t *restrict nptr, wchar_t **restrict endptr, int base) { ++ return 0; ++} ++#endif ++ + #ifdef MS_WINDOWS + #define WCSTOK wcstok_s + #else +diff -ruwN source/Python/pathconfig.c source-new/Python/pathconfig.c +--- source/Python/pathconfig.c 2019-07-08 12:03:50.000000000 -0600 ++++ source-new/Python/pathconfig.c 2019-07-16 21:55:34.549726910 -0600 +@@ -5,6 +5,10 @@ + #include "internal/pystate.h" + #include + ++#if defined(__redox__) ++wchar_t * wcstok(wchar_t * wcs, const wchar_t * delimiters, wchar_t ** ptr); ++#endif ++ + #ifdef __cplusplus + extern "C" { + #endif +diff -ruwN source/Python/pytime.c source-new/Python/pytime.c +--- source/Python/pytime.c 2019-07-08 12:03:50.000000000 -0600 ++++ source-new/Python/pytime.c 2019-07-16 21:36:53.233119225 -0600 +@@ -7,6 +7,19 @@ + #include /* mach_absolute_time(), mach_timebase_info() */ + #endif + ++#if defined(__redox__) ++int clock_getres(clockid_t clk_id, struct timespec *res) { ++ if (res) { ++ res->tv_sec = 0; ++ res->tv_nsec = 1000; ++ return 0; ++ } else { ++ errno = EFAULT; ++ return -1; ++ } ++} ++#endif ++ + #define _PyTime_check_mul_overflow(a, b) \ + (assert(b > 0), \ + (_PyTime_t)(a) < _PyTime_MIN / (_PyTime_t)(b) \ From 5efe865235cf0de68697c325dabc6672aa54c770 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 16 Jul 2019 22:12:43 -0600 Subject: [PATCH 0681/3180] Strip python3.7m as well, add -static flag --- recipes/python/recipe.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/python/recipe.sh b/recipes/python/recipe.sh index 10357bbe..7a024f10 100644 --- a/recipes/python/recipe.sh +++ b/recipes/python/recipe.sh @@ -15,6 +15,7 @@ function recipe_update { } function recipe_build { + export LDFLAGS="-static" cp ../config.site ./ ./configure \ --build=${BUILD} \ @@ -42,6 +43,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" make DESTDIR="$dest" install -j"$(nproc)" - "$STRIP" "$dest/bin/python3.7" + "$STRIP" "$dest/bin/python3.7" "$dest/bin/python3.7m" skip=1 } From 8e3eb9bc8068457b48375934eb84f9f20d021bf2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 17 Jul 2019 17:03:21 -0600 Subject: [PATCH 0682/3180] Remove patch for tempfile, no longer needed --- .cargo/config | 1 - .gitmodules | 4 ---- patches/tempfile | 1 - 3 files changed, 6 deletions(-) delete mode 160000 patches/tempfile diff --git a/.cargo/config b/.cargo/config index 9952f0e4..fcad4b69 100644 --- a/.cargo/config +++ b/.cargo/config @@ -9,7 +9,6 @@ paths = [ "patches/platform-info", "patches/ring", "patches/tar-rs", - "patches/tempfile", "patches/termsize", "patches/time", ] diff --git a/.gitmodules b/.gitmodules index acbc2edb..486723ae 100644 --- a/.gitmodules +++ b/.gitmodules @@ -29,10 +29,6 @@ path = patches/termsize url = https://gitlab.redox-os.org/redox-os/termsize.git branch = redox-unix -[submodule "patches/tempfile"] - path = patches/tempfile - url = https://gitlab.redox-os.org/redox-os/tempfile.git - branch = redox-unix [submodule "patches/platform-info"] path = patches/platform-info url = https://gitlab.redox-os.org/redox-os/platform-info.git diff --git a/patches/tempfile b/patches/tempfile deleted file mode 160000 index 0ae30545..00000000 --- a/patches/tempfile +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0ae305457184fa974ea1c4f7ed4602afdd5fedc6 From bdd5748b51e83f2d0575672f08d69d14133aaf14 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 20 Jul 2019 21:14:07 -0600 Subject: [PATCH 0683/3180] git: Fix path parsing and disable mmap --- recipes/git/git.patch | 100 +++++++++++++++++++++++++++++++----------- recipes/git/recipe.sh | 1 + 2 files changed, 75 insertions(+), 26 deletions(-) diff --git a/recipes/git/git.patch b/recipes/git/git.patch index f26e8094..0d7c5929 100644 --- a/recipes/git/git.patch +++ b/recipes/git/git.patch @@ -1,6 +1,6 @@ diff -ruwN source/compat/terminal.c source-new/compat/terminal.c --- source/compat/terminal.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/compat/terminal.c 2019-07-10 20:15:47.185121514 -0600 ++++ source-new/compat/terminal.c 2019-07-20 19:05:48.503775048 -0600 @@ -137,6 +137,18 @@ return buf.buf; } @@ -22,7 +22,7 @@ diff -ruwN source/compat/terminal.c source-new/compat/terminal.c char *git_terminal_prompt(const char *prompt, int echo) diff -ruwN source/configure source-new/configure --- source/configure 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/configure 2019-07-10 20:15:47.189121560 -0600 ++++ source-new/configure 2019-07-20 19:05:48.503775048 -0600 @@ -6156,7 +6156,7 @@ ac_res=$ac_cv_search_getaddrinfo if test "$ac_res" != no; then : @@ -34,7 +34,7 @@ diff -ruwN source/configure source-new/configure fi diff -ruwN source/daemon.c source-new/daemon.c --- source/daemon.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/daemon.c 2019-07-10 20:15:47.189121560 -0600 ++++ source-new/daemon.c 2019-07-20 19:05:48.503775048 -0600 @@ -71,13 +71,21 @@ return hi->ip_address.buf; } @@ -98,8 +98,27 @@ diff -ruwN source/daemon.c source-new/daemon.c diff -ruwN source/git-compat-util.h source-new/git-compat-util.h --- source/git-compat-util.h 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/git-compat-util.h 2019-07-10 20:15:47.189121560 -0600 -@@ -179,7 +179,9 @@ ++++ source-new/git-compat-util.h 2019-07-20 21:11:24.199972278 -0600 +@@ -1,6 +1,18 @@ + #ifndef GIT_COMPAT_UTIL_H + #define GIT_COMPAT_UTIL_H + ++#ifndef SIG_DFL ++#define SIG_DFL 0 ++#endif ++ ++#ifndef SIG_IGN ++#define SIG_IGN 1 ++#endif ++ ++#ifndef SIG_ERR ++#define SIG_ERR (-1) ++#endif ++ + #define _FILE_OFFSET_BITS 64 + + +@@ -179,7 +191,9 @@ #include #include #include @@ -109,7 +128,7 @@ diff -ruwN source/git-compat-util.h source-new/git-compat-util.h #ifndef NO_SYS_POLL_H #include #else -@@ -320,8 +322,20 @@ +@@ -320,8 +334,20 @@ #endif #ifndef PATH_SEP @@ -130,9 +149,55 @@ diff -ruwN source/git-compat-util.h source-new/git-compat-util.h #ifdef HAVE_PATHS_H #include +@@ -333,6 +359,16 @@ + #ifndef has_dos_drive_prefix + static inline int git_has_dos_drive_prefix(const char *path) + { ++#if defined(__redox__) ++ char * pos = (char *)path; ++ char c; ++ while (c = *pos) { ++ pos++; ++ if (c == ':') { ++ return pos - path; ++ } ++ } ++#endif + return 0; + } + #define has_dos_drive_prefix git_has_dos_drive_prefix +@@ -341,7 +377,13 @@ + #ifndef skip_dos_drive_prefix + static inline int git_skip_dos_drive_prefix(char **path) + { ++#if defined(__redox__) ++ int ret = has_dos_drive_prefix(*path); ++ *path += ret; ++ return ret; ++#else + return 0; ++#endif + } + #define skip_dos_drive_prefix git_skip_dos_drive_prefix + #endif +@@ -357,7 +399,14 @@ + #ifndef offset_1st_component + static inline int git_offset_1st_component(const char *path) + { ++#if defined(__redox__) ++ char * pos = (char *)path; ++ skip_dos_drive_prefix(&pos); ++ pos += is_dir_sep(*pos); ++ return pos - path; ++#else + return is_dir_sep(path[0]); ++#endif + } + #define offset_1st_component git_offset_1st_component + #endif diff -ruwN source/Makefile source-new/Makefile --- source/Makefile 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/Makefile 2019-07-10 20:15:59.809264435 -0600 ++++ source-new/Makefile 2019-07-20 19:05:48.507774930 -0600 @@ -979,7 +979,7 @@ BUILTIN_OBJS += builtin/write-tree.o @@ -183,7 +248,7 @@ diff -ruwN source/Makefile source-new/Makefile done && \ diff -ruwN source/run-command.c source-new/run-command.c --- source/run-command.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/run-command.c 2019-07-10 20:15:47.193121606 -0600 ++++ source-new/run-command.c 2019-07-20 19:05:48.507774930 -0600 @@ -120,9 +120,9 @@ #ifndef GIT_WINDOWS_NATIVE static inline void dup_devnull(int to) @@ -207,7 +272,7 @@ diff -ruwN source/run-command.c source-new/run-command.c diff -ruwN source/setup.c source-new/setup.c --- source/setup.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/setup.c 2019-07-10 20:15:47.193121606 -0600 ++++ source-new/setup.c 2019-07-20 19:05:48.507774930 -0600 @@ -1146,11 +1146,11 @@ /* if any standard file descriptor is missing open it to /dev/null */ void sanitize_stdfds(void) @@ -233,20 +298,3 @@ diff -ruwN source/setup.c source-new/setup.c close(0); close(1); close(2); -diff -ruwN source/strbuf.c source-new/strbuf.c ---- source/strbuf.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/strbuf.c 2019-07-10 20:15:47.193121606 -0600 -@@ -446,6 +446,13 @@ - for (;; guessed_len *= 2) { - strbuf_grow(sb, guessed_len); - if (getcwd(sb->buf, sb->alloc)) { -+#if defined(__redox__) -+ if (strncmp(sb->buf, "file:", 5) == 0) { -+ char *x = strdup(sb->buf); -+ strcpy(sb->buf, x+5); -+ free(x); -+ } -+#endif - strbuf_setlen(sb, strlen(sb->buf)); - return 0; - } diff --git a/recipes/git/recipe.sh b/recipes/git/recipe.sh index 5c58deb2..29673dae 100644 --- a/recipes/git/recipe.sh +++ b/recipes/git/recipe.sh @@ -6,6 +6,7 @@ DEPENDS="ca-certificates" MAKEFLAGS=( NEEDS_SSL_WITH_CURL=1 NEEDS_CRYPTO_WITH_SSL=1 + NO_MMAP=1 NO_UNIX_SOCKETS=1 NEEDS_LIBICONV= NEEDS_LIBRT= From e70fdb52fbc1511b45d111301e2d78d8822a50f3 Mon Sep 17 00:00:00 2001 From: Xavier L'Heureux Date: Mon, 22 Jul 2019 14:02:49 -0400 Subject: [PATCH 0684/3180] Use the newer libc + nix proposed patches --- .cargo/config | 3 ++- .gitmodules | 8 ++++++++ patches/libc | 1 + patches/liblibc | 1 - patches/nix | 1 + 5 files changed, 12 insertions(+), 2 deletions(-) create mode 160000 patches/libc delete mode 160000 patches/liblibc create mode 160000 patches/nix diff --git a/.cargo/config b/.cargo/config index fcad4b69..c6052f61 100644 --- a/.cargo/config +++ b/.cargo/config @@ -1,7 +1,8 @@ paths = [ "patches/atty", - "patches/liblibc", + "patches/libc", "patches/mio", + "patches/nix", "patches/tokio/tokio", "patches/tokio/tokio-reactor", "patches/net2-rs", diff --git a/.gitmodules b/.gitmodules index 486723ae..0835e1f1 100644 --- a/.gitmodules +++ b/.gitmodules @@ -48,3 +48,11 @@ [submodule "patches/tokio"] path = patches/tokio url = https://gitlab.redox-os.org/redox-os/tokio.git +[submodule "patches/libc"] + path = patches/libc + url = https://github.com/AdminXVII/libc + branch = extra-traits-redox +[submodule "patches/nix"] + path = patches/nix + url = https://github.com/AdminXVII/nix + branch = add-redox-support diff --git a/patches/libc b/patches/libc new file mode 160000 index 00000000..f6c0ead0 --- /dev/null +++ b/patches/libc @@ -0,0 +1 @@ +Subproject commit f6c0ead0279077dd9bda305e6c9d3ba3267390b2 diff --git a/patches/liblibc b/patches/liblibc deleted file mode 160000 index eb75c489..00000000 --- a/patches/liblibc +++ /dev/null @@ -1 +0,0 @@ -Subproject commit eb75c489172e10bfcb57ca679ff337827cf783a9 diff --git a/patches/nix b/patches/nix new file mode 160000 index 00000000..6fd64569 --- /dev/null +++ b/patches/nix @@ -0,0 +1 @@ +Subproject commit 6fd64569452536e9759c45c8f4511e6c983196f3 From 3d3b2f0285c461469cd5603f721cb7c340915f43 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 23 Jul 2019 17:36:55 -0600 Subject: [PATCH 0685/3180] Fix git clone --- recipes/git/git.patch | 20 ++++++++++---------- recipes/git/recipe.sh | 3 +++ 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/recipes/git/git.patch b/recipes/git/git.patch index 0d7c5929..fbdbcefd 100644 --- a/recipes/git/git.patch +++ b/recipes/git/git.patch @@ -1,6 +1,6 @@ diff -ruwN source/compat/terminal.c source-new/compat/terminal.c --- source/compat/terminal.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/compat/terminal.c 2019-07-20 19:05:48.503775048 -0600 ++++ source-new/compat/terminal.c 2019-07-21 19:45:59.473213941 -0600 @@ -137,6 +137,18 @@ return buf.buf; } @@ -22,7 +22,7 @@ diff -ruwN source/compat/terminal.c source-new/compat/terminal.c char *git_terminal_prompt(const char *prompt, int echo) diff -ruwN source/configure source-new/configure --- source/configure 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/configure 2019-07-20 19:05:48.503775048 -0600 ++++ source-new/configure 2019-07-21 19:45:59.473213941 -0600 @@ -6156,7 +6156,7 @@ ac_res=$ac_cv_search_getaddrinfo if test "$ac_res" != no; then : @@ -34,7 +34,7 @@ diff -ruwN source/configure source-new/configure fi diff -ruwN source/daemon.c source-new/daemon.c --- source/daemon.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/daemon.c 2019-07-20 19:05:48.503775048 -0600 ++++ source-new/daemon.c 2019-07-21 19:45:59.477213914 -0600 @@ -71,13 +71,21 @@ return hi->ip_address.buf; } @@ -98,21 +98,21 @@ diff -ruwN source/daemon.c source-new/daemon.c diff -ruwN source/git-compat-util.h source-new/git-compat-util.h --- source/git-compat-util.h 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/git-compat-util.h 2019-07-20 21:11:24.199972278 -0600 ++++ source-new/git-compat-util.h 2019-07-23 17:32:11.157702041 -0600 @@ -1,6 +1,18 @@ #ifndef GIT_COMPAT_UTIL_H #define GIT_COMPAT_UTIL_H +#ifndef SIG_DFL -+#define SIG_DFL 0 ++#define SIG_DFL ((void (*)(int))0) +#endif + +#ifndef SIG_IGN -+#define SIG_IGN 1 ++#define SIG_IGN ((void (*)(int))1) +#endif + +#ifndef SIG_ERR -+#define SIG_ERR (-1) ++#define SIG_ERR ((void (*)(int))-1) +#endif + #define _FILE_OFFSET_BITS 64 @@ -197,7 +197,7 @@ diff -ruwN source/git-compat-util.h source-new/git-compat-util.h #endif diff -ruwN source/Makefile source-new/Makefile --- source/Makefile 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/Makefile 2019-07-20 19:05:48.507774930 -0600 ++++ source-new/Makefile 2019-07-21 19:45:59.477213914 -0600 @@ -979,7 +979,7 @@ BUILTIN_OBJS += builtin/write-tree.o @@ -248,7 +248,7 @@ diff -ruwN source/Makefile source-new/Makefile done && \ diff -ruwN source/run-command.c source-new/run-command.c --- source/run-command.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/run-command.c 2019-07-20 19:05:48.507774930 -0600 ++++ source-new/run-command.c 2019-07-21 19:45:59.477213914 -0600 @@ -120,9 +120,9 @@ #ifndef GIT_WINDOWS_NATIVE static inline void dup_devnull(int to) @@ -272,7 +272,7 @@ diff -ruwN source/run-command.c source-new/run-command.c diff -ruwN source/setup.c source-new/setup.c --- source/setup.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/setup.c 2019-07-20 19:05:48.507774930 -0600 ++++ source-new/setup.c 2019-07-21 19:45:59.477213914 -0600 @@ -1146,11 +1146,11 @@ /* if any standard file descriptor is missing open it to /dev/null */ void sanitize_stdfds(void) diff --git a/recipes/git/recipe.sh b/recipes/git/recipe.sh index 29673dae..728f71f8 100644 --- a/recipes/git/recipe.sh +++ b/recipes/git/recipe.sh @@ -6,7 +6,10 @@ DEPENDS="ca-certificates" MAKEFLAGS=( NEEDS_SSL_WITH_CURL=1 NEEDS_CRYPTO_WITH_SSL=1 + NO_IPV6=1 + NO_PREAD=1 NO_MMAP=1 + NO_SETITIMER=1 NO_UNIX_SOCKETS=1 NEEDS_LIBICONV= NEEDS_LIBRT= From 8b9ec344dac642b4fd9009d339748a328eb5c0fd Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 23 Jul 2019 19:50:04 -0600 Subject: [PATCH 0686/3180] Add pkg-config --- recipes/pkg-config/recipe.sh | 43 ++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100755 recipes/pkg-config/recipe.sh diff --git a/recipes/pkg-config/recipe.sh b/recipes/pkg-config/recipe.sh new file mode 100755 index 00000000..6f514dae --- /dev/null +++ b/recipes/pkg-config/recipe.sh @@ -0,0 +1,43 @@ +VERSION="0.29.2" +TAR="https://pkg-config.freedesktop.org/releases/pkg-config-${VERSION}.tar.gz" +BUILD_DEPENDS=(gettext glib libiconv pcre) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + export LDFLAGS="--static" + ./configure \ + --build="${BUILD}" \ + --host="${HOST}" \ + --prefix="" \ + --disable-shared \ + --enable-static + make -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + export DESTDIR="$(realpath $1)" + make install + rm -f "${DESTDIR}/lib/"*.la + skip=1 +} From 478f2f752fa4ec87a3a31ee05f44557ea165d97b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 7 Aug 2019 20:17:09 -0600 Subject: [PATCH 0687/3180] Use https to fetch libffi --- recipes/libffi/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/libffi/recipe.sh b/recipes/libffi/recipe.sh index ef6b3dbf..ce7b6506 100644 --- a/recipes/libffi/recipe.sh +++ b/recipes/libffi/recipe.sh @@ -1,5 +1,5 @@ VERSION=3.2.1 -TAR=ftp://sourceware.org/pub/libffi/libffi-$VERSION.tar.gz +TAR=https://sourceware.org/pub/libffi/libffi-$VERSION.tar.gz BUILD_DEPENDS=() function recipe_version { From b22e461d80cb44a8835fab55349369c6486135fa Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 7 Aug 2019 21:00:20 -0600 Subject: [PATCH 0688/3180] Update tokio --- patches/tokio | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/tokio b/patches/tokio index 880522af..2861dcd3 160000 --- a/patches/tokio +++ b/patches/tokio @@ -1 +1 @@ -Subproject commit 880522af62a59db82fafdc7bd7c8c58ec3302428 +Subproject commit 2861dcd338284a95e2e6b9e88510b9396f1c42b2 From 9cfbf5085dae54e03b34ccf88a11374a31e1978b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 7 Aug 2019 22:33:00 -0600 Subject: [PATCH 0689/3180] WIP: neverball --- recipes/neverball/recipe.sh | 37 +++++++++++++++++++++++ recipes/neverball/redox.patch | 57 +++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 recipes/neverball/recipe.sh create mode 100644 recipes/neverball/redox.patch diff --git a/recipes/neverball/recipe.sh b/recipes/neverball/recipe.sh new file mode 100644 index 00000000..e455b4f7 --- /dev/null +++ b/recipes/neverball/recipe.sh @@ -0,0 +1,37 @@ +VERSION=1.6.0 +TAR="https://neverball.org/neverball-${VERSION}.tar.gz" +BUILD_DEPENDS=(gettext libjpeg libogg liborbital libpng libvorbis llvm mesa sdl2 sdl2_ttf) + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="$(realpath ../sysroot)" + export CPPFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib -static" + make ENABLE_FS=stdio -j"$(nproc)" + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + skip=1 +} diff --git a/recipes/neverball/redox.patch b/recipes/neverball/redox.patch new file mode 100644 index 00000000..d3825f1c --- /dev/null +++ b/recipes/neverball/redox.patch @@ -0,0 +1,57 @@ +diff -ruwN source/Makefile source-new/Makefile +--- source/Makefile 2019-08-07 22:16:07.630185664 -0600 ++++ source-new/Makefile 2019-08-07 22:30:34.246756435 -0600 +@@ -38,11 +38,11 @@ + ifeq ($(DEBUG),1) + CFLAGS := -g + CXXFLAGS := -g +- CPPFLAGS := ++ CPPFLAGS += + else + CFLAGS := -O2 + CXXFLAGS := -O2 +- CPPFLAGS := -DNDEBUG ++ CPPFLAGS += -DNDEBUG + endif + + #------------------------------------------------------------------------------ +@@ -64,8 +64,8 @@ + + # Preprocessor... + +-SDL_CPPFLAGS := $(shell sdl2-config --cflags) +-PNG_CPPFLAGS := $(shell libpng-config --cflags) ++SDL_CPPFLAGS := $(shell $(PKG_CONFIG) sdl2 --cflags) ++PNG_CPPFLAGS := $(shell $(PKG_CONFIG) libpng --cflags) + + ALL_CPPFLAGS := $(SDL_CPPFLAGS) $(PNG_CPPFLAGS) -Ishare + +@@ -124,8 +124,8 @@ + #------------------------------------------------------------------------------ + # Libraries + +-SDL_LIBS := $(shell sdl2-config --libs) +-PNG_LIBS := $(shell libpng-config --libs) ++SDL_LIBS := $(shell $(PKG_CONFIG) sdl2 --libs) ++PNG_LIBS := $(shell $(PKG_CONFIG) libpng --libs) + + ifeq ($(ENABLE_FS),stdio) + FS_LIBS := +@@ -148,7 +148,7 @@ + endif + endif + +-OGL_LIBS := -lGL ++OGL_LIBS := -lorbital $(shell $(PKG_CONFIG) osmesa --libs) -lglapi + + ifeq ($(PLATFORM),mingw) + ifneq ($(ENABLE_NLS),0) +@@ -175,7 +175,7 @@ + /usr/local/lib)) + endif + +-OGG_LIBS := -lvorbisfile ++OGG_LIBS := -lvorbisfile -lvorbis -logg + TTF_LIBS := -lSDL2_ttf + + ALL_LIBS := $(HMD_LIBS) $(TILT_LIBS) $(INTL_LIBS) $(TTF_LIBS) \ From 195dffe9d4665d5c4d23031ef786aa7d2bf24792 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 7 Aug 2019 22:48:50 -0600 Subject: [PATCH 0690/3180] Fix compilation of neverball --- recipes/neverball/recipe.sh | 5 +++-- recipes/neverball/redox.patch | 41 +++++++++++++++++++++++++++++++---- 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/recipes/neverball/recipe.sh b/recipes/neverball/recipe.sh index e455b4f7..e58f1a1e 100644 --- a/recipes/neverball/recipe.sh +++ b/recipes/neverball/recipe.sh @@ -1,6 +1,6 @@ VERSION=1.6.0 TAR="https://neverball.org/neverball-${VERSION}.tar.gz" -BUILD_DEPENDS=(gettext libjpeg libogg liborbital libpng libvorbis llvm mesa sdl2 sdl2_ttf) +BUILD_DEPENDS=(freetype libjpeg libogg liborbital libpng libvorbis llvm mesa sdl2 sdl2_ttf zlib) function recipe_version { echo "$VERSION" @@ -16,7 +16,8 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export CPPFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib -static" - make ENABLE_FS=stdio -j"$(nproc)" + #TODO: Make sol using host compiler + make -j"$(nproc)" ENABLE_FS=stdio ENABLE_NLS=0 neverball neverputt skip=1 } diff --git a/recipes/neverball/redox.patch b/recipes/neverball/redox.patch index d3825f1c..fe2824ae 100644 --- a/recipes/neverball/redox.patch +++ b/recipes/neverball/redox.patch @@ -1,6 +1,6 @@ diff -ruwN source/Makefile source-new/Makefile --- source/Makefile 2019-08-07 22:16:07.630185664 -0600 -+++ source-new/Makefile 2019-08-07 22:30:34.246756435 -0600 ++++ source-new/Makefile 2019-08-07 22:48:03.915634667 -0600 @@ -38,11 +38,11 @@ ifeq ($(DEBUG),1) CFLAGS := -g @@ -46,12 +46,45 @@ diff -ruwN source/Makefile source-new/Makefile ifeq ($(PLATFORM),mingw) ifneq ($(ENABLE_NLS),0) -@@ -175,7 +175,7 @@ +@@ -175,8 +175,8 @@ /usr/local/lib)) endif -OGG_LIBS := -lvorbisfile -+OGG_LIBS := -lvorbisfile -lvorbis -logg - TTF_LIBS := -lSDL2_ttf +-TTF_LIBS := -lSDL2_ttf ++OGG_LIBS := $(shell $(PKG_CONFIG) vorbisfile --libs) ++TTF_LIBS := $(shell $(PKG_CONFIG) SDL2_ttf --libs) -lfreetype ALL_LIBS := $(HMD_LIBS) $(TILT_LIBS) $(INTL_LIBS) $(TTF_LIBS) \ + $(OGG_LIBS) $(SDL_LIBS) $(OGL_LIBS) $(BASE_LIBS) +@@ -411,11 +411,11 @@ + + all : $(BALL_TARG) $(PUTT_TARG) $(MAPC_TARG) sols locales desktops + +-ifeq ($(ENABLE_HMD),libovr) ++#ifeq ($(ENABLE_HMD),libovr) + LINK := $(CXX) $(ALL_CXXFLAGS) +-else +-LINK := $(CC) $(ALL_CFLAGS) +-endif ++#else ++#LINK := $(CC) $(ALL_CFLAGS) ++#endif + + $(BALL_TARG) : $(BALL_OBJS) + $(LINK) -o $(BALL_TARG) $(BALL_OBJS) $(LDFLAGS) $(ALL_LIBS) +diff -ruwN source/share/version.h source-new/share/version.h +--- source/share/version.h 2019-08-07 22:43:26.197100463 -0600 ++++ source-new/share/version.h 1969-12-31 17:00:00.000000000 -0700 +@@ -1,6 +0,0 @@ +-#ifndef VERSION_H +-#define VERSION_H +- +-#define VERSION "1.6.0" +- +-#endif +diff -ruwN source/.version source-new/.version +--- source/.version 2019-08-07 22:43:26.197100463 -0600 ++++ source-new/.version 1969-12-31 17:00:00.000000000 -0700 +@@ -1 +0,0 @@ +-1.6.0 From 66353b8012284ad3878a151915d6ceebb4a1ea08 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 8 Aug 2019 16:58:53 -0600 Subject: [PATCH 0691/3180] neverball: Build sol files and install to /games/neverball --- recipes/neverball/recipe.sh | 11 +++++++++-- recipes/neverball/redox.patch | 15 --------------- 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/recipes/neverball/recipe.sh b/recipes/neverball/recipe.sh index e58f1a1e..3e16482b 100644 --- a/recipes/neverball/recipe.sh +++ b/recipes/neverball/recipe.sh @@ -13,10 +13,12 @@ function recipe_update { } function recipe_build { + env -i PATH=/usr/bin:/bin PKG_CONFIG=pkg-config \ + make -j"$(nproc)" ENABLE_FS=stdio mapc sols sysroot="$(realpath ../sysroot)" export CPPFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib -static" - #TODO: Make sol using host compiler + make -j"$(nproc)" ENABLE_FS=stdio ENABLE_NLS=0 clean-src make -j"$(nproc)" ENABLE_FS=stdio ENABLE_NLS=0 neverball neverputt skip=1 } @@ -33,6 +35,11 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + mkdir -p "${dest}/games" + cp -rv data "${dest}/games/neverball" + for bin in neverball neverputt + do + "${STRIP}" -v "$bin" -o "${dest}/games/neverball/$bin" + done skip=1 } diff --git a/recipes/neverball/redox.patch b/recipes/neverball/redox.patch index fe2824ae..50a79c4f 100644 --- a/recipes/neverball/redox.patch +++ b/recipes/neverball/redox.patch @@ -73,18 +73,3 @@ diff -ruwN source/Makefile source-new/Makefile $(BALL_TARG) : $(BALL_OBJS) $(LINK) -o $(BALL_TARG) $(BALL_OBJS) $(LDFLAGS) $(ALL_LIBS) -diff -ruwN source/share/version.h source-new/share/version.h ---- source/share/version.h 2019-08-07 22:43:26.197100463 -0600 -+++ source-new/share/version.h 1969-12-31 17:00:00.000000000 -0700 -@@ -1,6 +0,0 @@ --#ifndef VERSION_H --#define VERSION_H -- --#define VERSION "1.6.0" -- --#endif -diff -ruwN source/.version source-new/.version ---- source/.version 2019-08-07 22:43:26.197100463 -0600 -+++ source-new/.version 1969-12-31 17:00:00.000000000 -0700 -@@ -1 +0,0 @@ --1.6.0 From 4bc9b0afbbf699a83e236dd9259542e7f0adfdee Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 8 Aug 2019 17:09:26 -0600 Subject: [PATCH 0692/3180] Fix data path --- recipes/neverball/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/neverball/recipe.sh b/recipes/neverball/recipe.sh index 3e16482b..3a0b40a1 100644 --- a/recipes/neverball/recipe.sh +++ b/recipes/neverball/recipe.sh @@ -35,11 +35,11 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" - mkdir -p "${dest}/games" - cp -rv data "${dest}/games/neverball" + mkdir -p "${dest}/games/neverball" for bin in neverball neverputt do "${STRIP}" -v "$bin" -o "${dest}/games/neverball/$bin" done + cp -rv data "${dest}/games/neverball" skip=1 } From e1e1e6dafe85b63f3c8ba6433d6104af61346886 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 9 Aug 2019 21:47:09 -0600 Subject: [PATCH 0693/3180] glFlush to ensure graphics are visible --- recipes/neverball/redox.patch | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/recipes/neverball/redox.patch b/recipes/neverball/redox.patch index 50a79c4f..24462273 100644 --- a/recipes/neverball/redox.patch +++ b/recipes/neverball/redox.patch @@ -1,6 +1,6 @@ diff -ruwN source/Makefile source-new/Makefile --- source/Makefile 2019-08-07 22:16:07.630185664 -0600 -+++ source-new/Makefile 2019-08-07 22:48:03.915634667 -0600 ++++ source-new/Makefile 2019-08-09 21:41:20.296942596 -0600 @@ -38,11 +38,11 @@ ifeq ($(DEBUG),1) CFLAGS := -g @@ -73,3 +73,15 @@ diff -ruwN source/Makefile source-new/Makefile $(BALL_TARG) : $(BALL_OBJS) $(LINK) -o $(BALL_TARG) $(BALL_OBJS) $(LDFLAGS) $(ALL_LIBS) +diff -ruwN source/share/video.c source-new/share/video.c +--- source/share/video.c 2014-05-21 07:21:43.000000000 -0600 ++++ source-new/share/video.c 2019-08-09 21:41:42.891178826 -0600 +@@ -359,6 +359,8 @@ + + snapshot_take(); + ++ glFlush(); ++ + SDL_GL_SwapWindow(window); + + /* Accumulate time passed and frames rendered. */ From 690561c2e9e9cec216b0917d14dcd4059a2f2d40 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 9 Aug 2019 22:02:24 -0600 Subject: [PATCH 0694/3180] Remove glFlush from SDL2 apps --- recipes/neverball/redox.patch | 12 ------------ recipes/sdl2_gears/gears.c | 4 +--- 2 files changed, 1 insertion(+), 15 deletions(-) diff --git a/recipes/neverball/redox.patch b/recipes/neverball/redox.patch index 24462273..9ebd2189 100644 --- a/recipes/neverball/redox.patch +++ b/recipes/neverball/redox.patch @@ -73,15 +73,3 @@ diff -ruwN source/Makefile source-new/Makefile $(BALL_TARG) : $(BALL_OBJS) $(LINK) -o $(BALL_TARG) $(BALL_OBJS) $(LDFLAGS) $(ALL_LIBS) -diff -ruwN source/share/video.c source-new/share/video.c ---- source/share/video.c 2014-05-21 07:21:43.000000000 -0600 -+++ source-new/share/video.c 2019-08-09 21:41:42.891178826 -0600 -@@ -359,6 +359,8 @@ - - snapshot_take(); - -+ glFlush(); -+ - SDL_GL_SwapWindow(window); - - /* Accumulate time passed and frames rendered. */ diff --git a/recipes/sdl2_gears/gears.c b/recipes/sdl2_gears/gears.c index 33d99ca5..97b798bf 100644 --- a/recipes/sdl2_gears/gears.c +++ b/recipes/sdl2_gears/gears.c @@ -203,8 +203,6 @@ idle(void) draw(); - glFlush(); - SDL_GL_SwapWindow(window); } @@ -522,4 +520,4 @@ int main(int argc, char *argv[]) cleanup(); return 0; -} \ No newline at end of file +} From 296d0c7b34f065271fb6856752d471dfa8416cee Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 10 Aug 2019 18:37:25 -0600 Subject: [PATCH 0695/3180] Use pkg-config for cairodemo --- recipes/cairodemo/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/cairodemo/recipe.sh b/recipes/cairodemo/recipe.sh index 5326f6f3..f35d2c20 100755 --- a/recipes/cairodemo/recipe.sh +++ b/recipes/cairodemo/recipe.sh @@ -1,4 +1,4 @@ -BUILD_DEPENDS=(liborbital cairo pixman zlib libpng freetype) +BUILD_DEPENDS=(cairo expat fontconfig freetype liborbital libpng pixman zlib) function recipe_version { printf "1.0.0" @@ -21,7 +21,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" set -x - "${CXX}" -I "$sysroot/include" -L "$sysroot/lib" cairodemo.c -o cairodemo -static -lorbital -lcairo -lpixman-1 -lfreetype -lpng -lz + "${CXX}" $("${PKG_CONFIG}" --cflags cairo) cairodemo.c -o cairodemo -static $("${PKG_CONFIG}" --libs cairo) -lorbital set +x skip=1 } From e0a5cfacea2eecf708586e31ba95cd175bc86e1c Mon Sep 17 00:00:00 2001 From: coolreader18 <33094578+coolreader18@users.noreply.github.com> Date: Mon, 12 Aug 2019 13:44:36 -0500 Subject: [PATCH 0696/3180] Add recipe for RustPython --- recipes/rustpython/recipe.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 recipes/rustpython/recipe.sh diff --git a/recipes/rustpython/recipe.sh b/recipes/rustpython/recipe.sh new file mode 100644 index 00000000..cdaa6787 --- /dev/null +++ b/recipes/rustpython/recipe.sh @@ -0,0 +1,10 @@ +GIT=https://github.com/RustPython/RustPython +BRANCH=redox-release +CARGOFLAGS=--no-default-features +export BUILDTIME_RUSTPYTHONPATH=/lib/rustpython/ + +function recipe_stage() { + dest="$(realpath "$1")" + mkdir -pv "$dest/lib/" + cp -r Lib "$dest/lib/rustpython" +} From adc1d6c693a08a1b6c56e893341cd06e73b68d6f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 12 Aug 2019 13:36:14 -0600 Subject: [PATCH 0697/3180] sdl: Add mouse grabbing, hiding cursor, and relative mouse mode --- recipes/sdl/redox.patch | 362 +++++++++++++++++++++++++--------------- 1 file changed, 230 insertions(+), 132 deletions(-) diff --git a/recipes/sdl/redox.patch b/recipes/sdl/redox.patch index 85320bb2..8fd900b0 100644 --- a/recipes/sdl/redox.patch +++ b/recipes/sdl/redox.patch @@ -1,6 +1,6 @@ diff -ruwN source/build-scripts/config.sub source-new/build-scripts/config.sub --- source/build-scripts/config.sub 2012-01-18 23:30:05.000000000 -0700 -+++ source-new/build-scripts/config.sub 2018-12-29 15:57:00.298520310 -0700 ++++ source-new/build-scripts/config.sub 2019-08-10 20:55:13.662786449 -0600 @@ -1276,7 +1276,7 @@ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ @@ -12,7 +12,7 @@ diff -ruwN source/build-scripts/config.sub source-new/build-scripts/config.sub | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ diff -ruwN source/configure.in source-new/configure.in --- source/configure.in 2012-01-18 23:30:05.000000000 -0700 -+++ source-new/configure.in 2019-01-06 17:08:43.147342277 -0700 ++++ source-new/configure.in 2019-08-10 20:55:13.662786449 -0600 @@ -685,6 +685,18 @@ fi } @@ -102,7 +102,7 @@ diff -ruwN source/configure.in source-new/configure.in # Set up files for the thread library diff -ruwN source/include/SDL_config.h.in source-new/include/SDL_config.h.in --- source/include/SDL_config.h.in 2012-01-18 23:30:05.000000000 -0700 -+++ source-new/include/SDL_config.h.in 2018-12-29 15:57:00.298520310 -0700 ++++ source-new/include/SDL_config.h.in 2019-08-10 20:55:13.662786449 -0600 @@ -182,6 +182,7 @@ #undef SDL_AUDIO_DRIVER_OSS_SOUNDCARD_H #undef SDL_AUDIO_DRIVER_PAUD @@ -121,7 +121,7 @@ diff -ruwN source/include/SDL_config.h.in source-new/include/SDL_config.h.in #undef SDL_VIDEO_DRIVER_PICOGUI diff -ruwN source/src/audio/redox/SDL_redoxaudio.c source-new/src/audio/redox/SDL_redoxaudio.c --- source/src/audio/redox/SDL_redoxaudio.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/audio/redox/SDL_redoxaudio.c 2018-12-30 08:49:12.532354653 -0700 ++++ source-new/src/audio/redox/SDL_redoxaudio.c 2019-08-10 20:55:13.662786449 -0600 @@ -0,0 +1,169 @@ +/* + SDL - Simple DirectMedia Layer @@ -294,7 +294,7 @@ diff -ruwN source/src/audio/redox/SDL_redoxaudio.c source-new/src/audio/redox/SD +} diff -ruwN source/src/audio/redox/SDL_redoxaudio.h source-new/src/audio/redox/SDL_redoxaudio.h --- source/src/audio/redox/SDL_redoxaudio.h 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/audio/redox/SDL_redoxaudio.h 2018-12-29 18:56:18.062713776 -0700 ++++ source-new/src/audio/redox/SDL_redoxaudio.h 2019-08-10 20:55:13.662786449 -0600 @@ -0,0 +1,40 @@ +/* + SDL - Simple DirectMedia Layer @@ -338,7 +338,7 @@ diff -ruwN source/src/audio/redox/SDL_redoxaudio.h source-new/src/audio/redox/SD +#endif /* _SDL_redoxaudio_h */ diff -ruwN source/src/audio/SDL_audio.c source-new/src/audio/SDL_audio.c --- source/src/audio/SDL_audio.c 2012-01-18 23:30:06.000000000 -0700 -+++ source-new/src/audio/SDL_audio.c 2018-12-29 19:18:57.332057838 -0700 ++++ source-new/src/audio/SDL_audio.c 2019-08-10 20:55:13.662786449 -0600 @@ -36,6 +36,9 @@ /* Available audio drivers */ @@ -351,7 +351,7 @@ diff -ruwN source/src/audio/SDL_audio.c source-new/src/audio/SDL_audio.c #endif diff -ruwN source/src/audio/SDL_sysaudio.h source-new/src/audio/SDL_sysaudio.h --- source/src/audio/SDL_sysaudio.h 2012-01-18 23:30:06.000000000 -0700 -+++ source-new/src/audio/SDL_sysaudio.h 2018-12-29 15:57:00.298520310 -0700 ++++ source-new/src/audio/SDL_sysaudio.h 2019-08-10 20:55:13.666786472 -0600 @@ -102,6 +102,9 @@ SDL_AudioDevice *(*create)(int devindex); } AudioBootStrap; @@ -364,7 +364,7 @@ diff -ruwN source/src/audio/SDL_sysaudio.h source-new/src/audio/SDL_sysaudio.h #endif diff -ruwN source/src/thread/pthread/SDL_systhread.c source-new/src/thread/pthread/SDL_systhread.c --- source/src/thread/pthread/SDL_systhread.c 2012-01-18 23:30:06.000000000 -0700 -+++ source-new/src/thread/pthread/SDL_systhread.c 2018-12-30 07:30:42.840742321 -0700 ++++ source-new/src/thread/pthread/SDL_systhread.c 2019-08-10 20:55:13.666786472 -0600 @@ -86,7 +86,11 @@ for ( i=0; sig_list[i]; ++i ) { sigaddset(&mask, sig_list[i]); @@ -379,8 +379,8 @@ diff -ruwN source/src/thread/pthread/SDL_systhread.c source-new/src/thread/pthre /* Allow ourselves to be asynchronously cancelled */ diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orbital/SDL_orbitalevents.c --- source/src/video/orbital/SDL_orbitalevents.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalevents.c 2018-12-29 15:57:00.298520310 -0700 -@@ -0,0 +1,201 @@ ++++ source-new/src/video/orbital/SDL_orbitalevents.c 2019-08-12 13:35:31.236162876 -0600 +@@ -0,0 +1,261 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -407,6 +407,7 @@ diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orb +#include "SDL.h" +#include "../../events/SDL_sysevents.h" +#include "../../events/SDL_events_c.h" ++#include "../SDL_cursor_c.h" + +#include +#include "SDL_orbitalvideo.h" @@ -420,6 +421,55 @@ diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orb +static bool last_button_left = false; +static bool last_button_middle = false; +static bool last_button_right = false; ++static int last_x = 0; ++static int last_y = 0; ++ ++/* Variable for mouse relative processing */ ++static int mouse_relative = 0; ++ ++/* Check to see if we need to enter or leave mouse relative mode */ ++ ++void ORBITAL_CheckMouseMode(_THIS) ++{ ++ if (!this->hidden->window) { ++ return; ++ } ++ ++ /* If the mouse is hidden and input is grabbed, we use relative mode */ ++ if ( !(SDL_cursorstate & CURSOR_VISIBLE) && ++ (this->input_grab != SDL_GRAB_OFF) ) { ++ if (!mouse_relative) { ++ orb_window_set_mouse_relative(this->hidden->window, true); ++ } ++ mouse_relative = 1; ++ } else { ++ if (mouse_relative) { ++ orb_window_set_mouse_relative(this->hidden->window, false); ++ } ++ mouse_relative = 0; ++ } ++} ++ ++/* Current grab mode */ ++static SDL_GrabMode grab_mode = SDL_GRAB_OFF; ++ ++SDL_GrabMode ORBITAL_GrabInput(_THIS, SDL_GrabMode mode) { ++ if (this->hidden->window) { ++ switch (mode) { ++ case SDL_GRAB_OFF: ++ orb_window_set_mouse_grab(this->hidden->window, false); ++ grab_mode = SDL_GRAB_OFF; ++ break; ++ case SDL_GRAB_ON: ++ orb_window_set_mouse_grab(this->hidden->window, true); ++ grab_mode = SDL_GRAB_ON; ++ break; ++ default: ++ break; ++ } ++ } ++ return(grab_mode); ++} + +void ORBITAL_PumpEvents(_THIS) +{ @@ -443,7 +493,17 @@ diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orb + SDL_PrivateKeyboard(oeo.key.pressed ? SDL_PRESSED : SDL_RELEASED, &keysym); + break; + case OrbEventOption_Mouse: -+ SDL_PrivateMouseMotion(0, 0, oeo.mouse.x, oeo.mouse.y); ++ if (mouse_relative) { ++ SDL_PrivateMouseMotion(0, 1, oeo.mouse.x - last_x, oeo.mouse.y - last_y); ++ } else { ++ SDL_PrivateMouseMotion(0, 0, oeo.mouse.x, oeo.mouse.y); ++ } ++ ++ last_x = oeo.mouse.x; ++ last_y = oeo.mouse.y; ++ break; ++ case OrbEventOption_MouseRelative: ++ SDL_PrivateMouseMotion(0, 1, oeo.mouse_relative.dx, oeo.mouse_relative.dy); + break; + case OrbEventOption_Button: + if (oeo.button.left ^ last_button_left) @@ -584,7 +644,7 @@ diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orb +/* end of SDL_orbitalevents.c ... */ diff -ruwN source/src/video/orbital/SDL_orbitalevents_c.h source-new/src/video/orbital/SDL_orbitalevents_c.h --- source/src/video/orbital/SDL_orbitalevents_c.h 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalevents_c.h 2018-12-29 15:57:00.302520335 -0700 ++++ source-new/src/video/orbital/SDL_orbitalevents_c.h 2019-08-12 13:21:41.975750603 -0600 @@ -0,0 +1,32 @@ +/* + SDL - Simple DirectMedia Layer @@ -620,8 +680,8 @@ diff -ruwN source/src/video/orbital/SDL_orbitalevents_c.h source-new/src/video/o +/* end of SDL_orbitalevents_c.h ... */ diff -ruwN source/src/video/orbital/SDL_orbitalmouse.c source-new/src/video/orbital/SDL_orbitalmouse.c --- source/src/video/orbital/SDL_orbitalmouse.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalmouse.c 2018-12-29 15:57:00.302520335 -0700 -@@ -0,0 +1,33 @@ ++++ source-new/src/video/orbital/SDL_orbitalmouse.c 2019-08-12 13:31:25.606869756 -0600 +@@ -0,0 +1,61 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -653,12 +713,40 @@ diff -ruwN source/src/video/orbital/SDL_orbitalmouse.c source-new/src/video/orbi + +/* The implementation dependent data for the window manager cursor */ +struct WMcursor { -+ int unused; ++ int unused; +}; ++ ++WMcursor * ORBITAL_CreateWMCursor (_THIS, ++ Uint8 * data, Uint8 * mask, int w, int h, int hot_x, int hot_y) ++{ ++ WMcursor * cursor ; ++ ++ cursor = (WMcursor *) SDL_malloc (sizeof (WMcursor)) ; ++ if (cursor == NULL) { ++ SDL_OutOfMemory () ; ++ return NULL ; ++ } ++ ++ return cursor ; ++} ++ ++void ORBITAL_FreeWMCursor (_THIS, WMcursor * cursor) ++{ ++ SDL_free (cursor) ; ++} ++ ++int ORBITAL_ShowWMCursor (_THIS, WMcursor * cursor) ++{ ++ if (!this->hidden->window) { ++ return; ++ } ++ ++ orb_window_set_mouse_cursor(this->hidden->window, cursor != NULL); ++} diff -ruwN source/src/video/orbital/SDL_orbitalmouse_c.h source-new/src/video/orbital/SDL_orbitalmouse_c.h --- source/src/video/orbital/SDL_orbitalmouse_c.h 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalmouse_c.h 2018-12-29 15:57:00.302520335 -0700 -@@ -0,0 +1,26 @@ ++++ source-new/src/video/orbital/SDL_orbitalmouse_c.h 2019-08-12 13:14:47.509444528 -0600 +@@ -0,0 +1,28 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -684,11 +772,13 @@ diff -ruwN source/src/video/orbital/SDL_orbitalmouse_c.h source-new/src/video/or + +#include "SDL_orbitalvideo.h" + -+/* Functions to be exported */ ++extern WMcursor * ORBITAL_CreateWMCursor (_THIS, Uint8 * data, Uint8 * mask, int w, int h, int hot_x, int hot_y) ; ++void ORBITAL_FreeWMCursor (_THIS, WMcursor * cursor) ; ++extern int ORBITAL_ShowWMCursor (_THIS, WMcursor * cursor) ; diff -ruwN source/src/video/orbital/SDL_orbitalvideo.c source-new/src/video/orbital/SDL_orbitalvideo.c --- source/src/video/orbital/SDL_orbitalvideo.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalvideo.c 2018-12-29 15:57:00.302520335 -0700 -@@ -0,0 +1,252 @@ ++++ source-new/src/video/orbital/SDL_orbitalvideo.c 2019-08-12 13:32:48.391306374 -0600 +@@ -0,0 +1,260 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -752,6 +842,10 @@ diff -ruwN source/src/video/orbital/SDL_orbitalvideo.c source-new/src/video/orbi +static void ORBITAL_UnlockHWSurface(_THIS, SDL_Surface *surface); +static void ORBITAL_FreeHWSurface(_THIS, SDL_Surface *surface); + ++/* Input handling */ ++static void ORBITAL_CheckMouseMode(_THIS); ++static SDL_GrabMode ORBITAL_GrabInput(_THIS, SDL_GrabMode mode); ++ +/* etc. */ +static void ORBITAL_UpdateRects(_THIS, int numrects, SDL_Rect *rects); + @@ -759,175 +853,179 @@ diff -ruwN source/src/video/orbital/SDL_orbitalvideo.c source-new/src/video/orbi + +static int ORBITAL_Available(void) +{ -+ return(1); ++ return(1); +} + +static void ORBITAL_DeleteDevice(SDL_VideoDevice *device) +{ -+ SDL_free(device->hidden); -+ SDL_free(device); ++ SDL_free(device->hidden); ++ SDL_free(device); +} + +static SDL_VideoDevice *ORBITAL_CreateDevice(int devindex) +{ -+ SDL_VideoDevice *device; ++ SDL_VideoDevice *device; + -+ /* Initialize all variables that we clean on shutdown */ -+ device = (SDL_VideoDevice *)SDL_malloc(sizeof(SDL_VideoDevice)); -+ if ( device ) { -+ SDL_memset(device, 0, (sizeof *device)); -+ device->hidden = (struct SDL_PrivateVideoData *) -+ SDL_malloc((sizeof *device->hidden)); -+ } -+ if ( (device == NULL) || (device->hidden == NULL) ) { -+ SDL_OutOfMemory(); -+ if ( device ) { -+ SDL_free(device); -+ } -+ return(0); -+ } -+ SDL_memset(device->hidden, 0, (sizeof *device->hidden)); ++ /* Initialize all variables that we clean on shutdown */ ++ device = (SDL_VideoDevice *)SDL_malloc(sizeof(SDL_VideoDevice)); ++ if ( device ) { ++ SDL_memset(device, 0, (sizeof *device)); ++ device->hidden = (struct SDL_PrivateVideoData *) ++ SDL_malloc((sizeof *device->hidden)); ++ } ++ if ( (device == NULL) || (device->hidden == NULL) ) { ++ SDL_OutOfMemory(); ++ if ( device ) { ++ SDL_free(device); ++ } ++ return(0); ++ } ++ SDL_memset(device->hidden, 0, (sizeof *device->hidden)); + -+ /* Set the function pointers */ -+ device->VideoInit = ORBITAL_VideoInit; -+ device->ListModes = ORBITAL_ListModes; -+ device->SetVideoMode = ORBITAL_SetVideoMode; -+ device->CreateYUVOverlay = NULL; -+ device->SetColors = ORBITAL_SetColors; -+ device->UpdateRects = ORBITAL_UpdateRects; -+ device->VideoQuit = ORBITAL_VideoQuit; -+ device->AllocHWSurface = ORBITAL_AllocHWSurface; -+ device->CheckHWBlit = NULL; -+ device->FillHWRect = NULL; -+ device->SetHWColorKey = NULL; -+ device->SetHWAlpha = NULL; -+ device->LockHWSurface = ORBITAL_LockHWSurface; -+ device->UnlockHWSurface = ORBITAL_UnlockHWSurface; -+ device->FlipHWSurface = NULL; -+ device->FreeHWSurface = ORBITAL_FreeHWSurface; -+ device->SetCaption = ORBITAL_SetCaption; -+ device->SetIcon = NULL; -+ device->IconifyWindow = NULL; -+ device->GrabInput = NULL; -+ device->GetWMInfo = NULL; -+ device->InitOSKeymap = ORBITAL_InitOSKeymap; -+ device->PumpEvents = ORBITAL_PumpEvents; ++ /* Set the function pointers */ ++ device->VideoInit = ORBITAL_VideoInit; ++ device->ListModes = ORBITAL_ListModes; ++ device->SetVideoMode = ORBITAL_SetVideoMode; ++ device->CreateYUVOverlay = NULL; ++ device->SetColors = ORBITAL_SetColors; ++ device->UpdateRects = ORBITAL_UpdateRects; ++ device->VideoQuit = ORBITAL_VideoQuit; ++ device->AllocHWSurface = ORBITAL_AllocHWSurface; ++ device->CheckHWBlit = NULL; ++ device->FillHWRect = NULL; ++ device->SetHWColorKey = NULL; ++ device->SetHWAlpha = NULL; ++ device->LockHWSurface = ORBITAL_LockHWSurface; ++ device->UnlockHWSurface = ORBITAL_UnlockHWSurface; ++ device->FlipHWSurface = NULL; ++ device->FreeHWSurface = ORBITAL_FreeHWSurface; ++ device->SetCaption = ORBITAL_SetCaption; ++ device->SetIcon = NULL; ++ device->IconifyWindow = NULL; ++ device->FreeWMCursor = ORBITAL_FreeWMCursor; ++ device->CreateWMCursor = ORBITAL_CreateWMCursor; ++ device->ShowWMCursor = ORBITAL_ShowWMCursor; ++ device->CheckMouseMode = ORBITAL_CheckMouseMode; ++ device->GrabInput = ORBITAL_GrabInput; ++ device->GetWMInfo = NULL; ++ device->InitOSKeymap = ORBITAL_InitOSKeymap; ++ device->PumpEvents = ORBITAL_PumpEvents; + -+ device->free = ORBITAL_DeleteDevice; ++ device->free = ORBITAL_DeleteDevice; + -+ return device; ++ return device; +} + +VideoBootStrap ORBITAL_bootstrap = { -+ ORBITALVID_DRIVER_NAME, "SDL orbital video driver", -+ ORBITAL_Available, ORBITAL_CreateDevice ++ ORBITALVID_DRIVER_NAME, "SDL orbital video driver", ++ ORBITAL_Available, ORBITAL_CreateDevice +}; + + +int ORBITAL_VideoInit(_THIS, SDL_PixelFormat *vformat) +{ -+ fprintf(stderr, "WARNING: You are using the SDL orbital video driver!\n"); ++ fprintf(stderr, "WARNING: You are using the SDL orbital video driver!\n"); + -+ /* Determine the screen depth (use default 32-bit depth) */ -+ /* we change this during the SDL_SetVideoMode implementation... */ -+ vformat->BitsPerPixel = 32; -+ vformat->BytesPerPixel = 4; ++ /* Determine the screen depth (use default 32-bit depth) */ ++ /* we change this during the SDL_SetVideoMode implementation... */ ++ vformat->BitsPerPixel = 32; ++ vformat->BytesPerPixel = 4; + -+ /* We're done! */ -+ return(0); ++ /* We're done! */ ++ return(0); +} + +SDL_Rect **ORBITAL_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags) +{ -+ if (format->BitsPerPixel != 32) -+ return NULL; ++ if (format->BitsPerPixel != 32) ++ return NULL; + -+ return (SDL_Rect **) -1; ++ return (SDL_Rect **) -1; +} + +SDL_Surface *ORBITAL_SetVideoMode(_THIS, SDL_Surface *current, -+ int width, int height, int bpp, Uint32 flags) ++ int width, int height, int bpp, Uint32 flags) +{ -+ if ( bpp != 32 ) { -+ SDL_SetError("Unsupported color depth - must use 32-bits per pixel"); -+ return(NULL); -+ } ++ if ( bpp != 32 ) { ++ SDL_SetError("Unsupported color depth - must use 32-bits per pixel"); ++ return(NULL); ++ } + -+ if (this->hidden->window) { -+ orb_window_set_size(this->hidden->window, width, height); -+ } else { -+ uint32_t orb_flags = ORB_WINDOW_ASYNC; -+ if (flags & SDL_RESIZABLE) -+ orb_flags |= ORB_WINDOW_RESIZABLE; ++ if (this->hidden->window) { ++ orb_window_set_size(this->hidden->window, width, height); ++ } else { ++ uint32_t orb_flags = ORB_WINDOW_ASYNC; ++ if (flags & SDL_RESIZABLE) ++ orb_flags |= ORB_WINDOW_RESIZABLE; + -+ this->hidden->window = orb_window_new_flags(-1, -1, width, height, "SDL", orb_flags); -+ if (!this->hidden->window) { -+ SDL_SetError("Couldn't create window for requested mode"); -+ return(NULL); -+ } -+ } ++ this->hidden->window = orb_window_new_flags(-1, -1, width, height, "SDL", orb_flags); ++ if (!this->hidden->window) { ++ SDL_SetError("Couldn't create window for requested mode"); ++ return(NULL); ++ } ++ } + -+ fprintf(stderr, "Setting mode %dx%d@%d\n", width, height, bpp); ++ fprintf(stderr, "Setting mode %dx%d@%d\n", width, height, bpp); + -+ /* Allocate the new pixel format for the screen */ -+ if ( ! SDL_ReallocFormat(current, bpp, 0x00FF0000, 0x0000FF00, 0x000000FF, 0xFF000000) ) { -+ orb_window_destroy(this->hidden->window); -+ this->hidden->window = NULL; ++ /* Allocate the new pixel format for the screen */ ++ if ( ! SDL_ReallocFormat(current, bpp, 0x00FF0000, 0x0000FF00, 0x000000FF, 0xFF000000) ) { ++ orb_window_destroy(this->hidden->window); ++ this->hidden->window = NULL; + -+ SDL_SetError("Couldn't allocate new pixel format for requested mode"); -+ return(NULL); -+ } ++ SDL_SetError("Couldn't allocate new pixel format for requested mode"); ++ return(NULL); ++ } + -+ /* Set up the new mode framebuffer */ -+ current->flags = flags & (~SDL_DOUBLEBUF); -+ current->w = width; -+ current->h = height; -+ current->pitch = width * (bpp / 8); -+ current->pixels = orb_window_data(this->hidden->window); ++ /* Set up the new mode framebuffer */ ++ current->flags = flags & (~SDL_DOUBLEBUF); ++ current->w = width; ++ current->h = height; ++ current->pitch = width * (bpp / 8); ++ current->pixels = orb_window_data(this->hidden->window); + -+ /* We're done */ -+ return(current); ++ /* We're done */ ++ return(current); +} + +static void ORBITAL_SetCaption(_THIS, const char *title, const char *icon) +{ -+ if (this->hidden->window) -+ orb_window_set_title(this->hidden->window, title); ++ if (this->hidden->window) ++ orb_window_set_title(this->hidden->window, title); +} + +/* We don't actually allow hardware surfaces other than the main one */ +static int ORBITAL_AllocHWSurface(_THIS, SDL_Surface *surface) +{ -+ return(-1); ++ return(-1); +} +static void ORBITAL_FreeHWSurface(_THIS, SDL_Surface *surface) +{ -+ return; ++ return; +} + +/* We need to wait for vertical retrace on page flipped displays */ +static int ORBITAL_LockHWSurface(_THIS, SDL_Surface *surface) +{ -+ return(0); ++ return(0); +} + +static void ORBITAL_UnlockHWSurface(_THIS, SDL_Surface *surface) +{ -+ return; ++ return; +} + +static void ORBITAL_UpdateRects(_THIS, int numrects, SDL_Rect *rects) +{ -+ if (this->hidden->window) { -+ SDL_SetAlphaChannel(this->screen, SDL_ALPHA_OPAQUE); -+ orb_window_sync(this->hidden->window); -+ } ++ if (this->hidden->window) { ++ SDL_SetAlphaChannel(this->screen, SDL_ALPHA_OPAQUE); ++ orb_window_sync(this->hidden->window); ++ } +} + +int ORBITAL_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors) +{ -+ /* do nothing of note. */ -+ return(1); ++ /* do nothing of note. */ ++ return(1); +} + +/* Note: If we are terminated, this could be called in the middle of @@ -935,15 +1033,15 @@ diff -ruwN source/src/video/orbital/SDL_orbitalvideo.c source-new/src/video/orbi +*/ +void ORBITAL_VideoQuit(_THIS) +{ -+ if (this->hidden->window) { -+ orb_window_destroy(this->hidden->window); -+ this->hidden->window = NULL; -+ this->screen->pixels = NULL; -+ } ++ if (this->hidden->window) { ++ orb_window_destroy(this->hidden->window); ++ this->hidden->window = NULL; ++ this->screen->pixels = NULL; ++ } +} diff -ruwN source/src/video/orbital/SDL_orbitalvideo.h source-new/src/video/orbital/SDL_orbitalvideo.h --- source/src/video/orbital/SDL_orbitalvideo.h 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalvideo.h 2018-12-29 15:57:00.302520335 -0700 ++++ source-new/src/video/orbital/SDL_orbitalvideo.h 2019-08-12 13:22:05.603878968 -0600 @@ -0,0 +1,39 @@ +/* + SDL - Simple DirectMedia Layer @@ -974,7 +1072,7 @@ diff -ruwN source/src/video/orbital/SDL_orbitalvideo.h source-new/src/video/orbi +#include "../SDL_sysvideo.h" + +/* Hidden "this" pointer for the video functions */ -+#define _THIS SDL_VideoDevice *this ++#define _THIS SDL_VideoDevice *this + + +/* Private display data */ @@ -986,7 +1084,7 @@ diff -ruwN source/src/video/orbital/SDL_orbitalvideo.h source-new/src/video/orbi +#endif /* _SDL_orbitalvideo_h */ diff -ruwN source/src/video/SDL_gamma.c source-new/src/video/SDL_gamma.c --- source/src/video/SDL_gamma.c 2012-01-18 23:30:06.000000000 -0700 -+++ source-new/src/video/SDL_gamma.c 2018-12-29 15:57:00.302520335 -0700 ++++ source-new/src/video/SDL_gamma.c 2019-08-10 20:55:13.670786496 -0600 @@ -35,6 +35,9 @@ #define log(x) __ieee754_log(x) #endif @@ -999,7 +1097,7 @@ diff -ruwN source/src/video/SDL_gamma.c source-new/src/video/SDL_gamma.c diff -ruwN source/src/video/SDL_sysvideo.h source-new/src/video/SDL_sysvideo.h --- source/src/video/SDL_sysvideo.h 2012-01-18 23:30:06.000000000 -0700 -+++ source-new/src/video/SDL_sysvideo.h 2018-12-29 15:57:00.302520335 -0700 ++++ source-new/src/video/SDL_sysvideo.h 2019-08-10 20:55:13.670786496 -0600 @@ -410,6 +410,9 @@ #if SDL_VIDEO_DRIVER_CACA extern VideoBootStrap CACA_bootstrap; @@ -1012,7 +1110,7 @@ diff -ruwN source/src/video/SDL_sysvideo.h source-new/src/video/SDL_sysvideo.h #endif diff -ruwN source/src/video/SDL_video.c source-new/src/video/SDL_video.c --- source/src/video/SDL_video.c 2012-01-18 23:30:06.000000000 -0700 -+++ source-new/src/video/SDL_video.c 2018-12-29 15:57:00.302520335 -0700 ++++ source-new/src/video/SDL_video.c 2019-08-10 20:55:13.670786496 -0600 @@ -126,6 +126,9 @@ #if SDL_VIDEO_DRIVER_CACA &CACA_bootstrap, From c2ef234da1aeefd3df60e5f2c0e6cc1605bac253 Mon Sep 17 00:00:00 2001 From: Xavier L'Heureux Date: Mon, 12 Aug 2019 15:45:33 -0400 Subject: [PATCH 0698/3180] Remove patches for changes that were merged upstream Libc: 0.2.61 Atty: https://github.com/softprops/atty/pull/35 --- patches/atty | 1 - patches/libc | 1 - 2 files changed, 2 deletions(-) delete mode 160000 patches/atty delete mode 160000 patches/libc diff --git a/patches/atty b/patches/atty deleted file mode 160000 index a30c9539..00000000 --- a/patches/atty +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a30c9539940d0148b86f9491c03eb2af450cd62e diff --git a/patches/libc b/patches/libc deleted file mode 160000 index f6c0ead0..00000000 --- a/patches/libc +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f6c0ead0279077dd9bda305e6c9d3ba3267390b2 From e978c51832594ef240880c35c43d51037838d470 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 12 Aug 2019 14:40:46 -0600 Subject: [PATCH 0699/3180] Fix relative mode --- recipes/sdl/redox.patch | 96 ++++++++++++++++++++--------------------- 1 file changed, 46 insertions(+), 50 deletions(-) diff --git a/recipes/sdl/redox.patch b/recipes/sdl/redox.patch index 8fd900b0..73a0c633 100644 --- a/recipes/sdl/redox.patch +++ b/recipes/sdl/redox.patch @@ -379,8 +379,8 @@ diff -ruwN source/src/thread/pthread/SDL_systhread.c source-new/src/thread/pthre /* Allow ourselves to be asynchronously cancelled */ diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orbital/SDL_orbitalevents.c --- source/src/video/orbital/SDL_orbitalevents.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalevents.c 2019-08-12 13:35:31.236162876 -0600 -@@ -0,0 +1,261 @@ ++++ source-new/src/video/orbital/SDL_orbitalevents.c 2019-08-12 14:34:59.125356217 -0600 +@@ -0,0 +1,242 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -424,51 +424,31 @@ diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orb +static int last_x = 0; +static int last_y = 0; + -+/* Variable for mouse relative processing */ -+static int mouse_relative = 0; -+ -+/* Check to see if we need to enter or leave mouse relative mode */ -+ +void ORBITAL_CheckMouseMode(_THIS) +{ -+ if (!this->hidden->window) { -+ return; -+ } -+ + /* If the mouse is hidden and input is grabbed, we use relative mode */ -+ if ( !(SDL_cursorstate & CURSOR_VISIBLE) && -+ (this->input_grab != SDL_GRAB_OFF) ) { -+ if (!mouse_relative) { -+ orb_window_set_mouse_relative(this->hidden->window, true); ++ bool mouse_relative = ++ !(SDL_cursorstate & CURSOR_VISIBLE) && ++ (this->input_grab != SDL_GRAB_OFF); ++ printf("ORBITAL_CheckMouseMode = %d\n", mouse_relative); ++ if (mouse_relative != this->hidden->mouse_relative) { ++ this->hidden->mouse_relative = mouse_relative; ++ if (this->hidden->window) { ++ orb_window_set_mouse_relative(this->hidden->window, mouse_relative); + } -+ mouse_relative = 1; -+ } else { -+ if (mouse_relative) { -+ orb_window_set_mouse_relative(this->hidden->window, false); -+ } -+ mouse_relative = 0; + } +} + -+/* Current grab mode */ -+static SDL_GrabMode grab_mode = SDL_GRAB_OFF; -+ +SDL_GrabMode ORBITAL_GrabInput(_THIS, SDL_GrabMode mode) { -+ if (this->hidden->window) { -+ switch (mode) { -+ case SDL_GRAB_OFF: -+ orb_window_set_mouse_grab(this->hidden->window, false); -+ grab_mode = SDL_GRAB_OFF; -+ break; -+ case SDL_GRAB_ON: -+ orb_window_set_mouse_grab(this->hidden->window, true); -+ grab_mode = SDL_GRAB_ON; -+ break; -+ default: -+ break; ++ bool mouse_grab = mode != SDL_GRAB_OFF; ++ printf("ORBITAL_GrabInput(%d) = %d\n", mode, mouse_grab); ++ if (mouse_grab != this->hidden->mouse_grab) { ++ this->hidden->mouse_grab = mouse_grab; ++ if (this->hidden->window) { ++ orb_window_set_mouse_grab(this->hidden->window, mouse_grab); + } + } -+ return(grab_mode); ++ return (mode); +} + +void ORBITAL_PumpEvents(_THIS) @@ -481,8 +461,9 @@ diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orb + + void* event_iter = orb_window_events(this->hidden->window); + OrbEventOption oeo = orb_events_next(event_iter); -+ + while (oeo.tag != OrbEventOption_None) { ++ found_event = true; ++ + switch (oeo.tag) { + case OrbEventOption_Key: + keysym.unicode = oeo.key.character; @@ -493,7 +474,7 @@ diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orb + SDL_PrivateKeyboard(oeo.key.pressed ? SDL_PRESSED : SDL_RELEASED, &keysym); + break; + case OrbEventOption_Mouse: -+ if (mouse_relative) { ++ if (this->hidden->mouse_relative) { + SDL_PrivateMouseMotion(0, 1, oeo.mouse.x - last_x, oeo.mouse.y - last_y); + } else { + SDL_PrivateMouseMotion(0, 0, oeo.mouse.x, oeo.mouse.y); @@ -680,8 +661,8 @@ diff -ruwN source/src/video/orbital/SDL_orbitalevents_c.h source-new/src/video/o +/* end of SDL_orbitalevents_c.h ... */ diff -ruwN source/src/video/orbital/SDL_orbitalmouse.c source-new/src/video/orbital/SDL_orbitalmouse.c --- source/src/video/orbital/SDL_orbitalmouse.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalmouse.c 2019-08-12 13:31:25.606869756 -0600 -@@ -0,0 +1,61 @@ ++++ source-new/src/video/orbital/SDL_orbitalmouse.c 2019-08-12 14:04:19.079802985 -0600 +@@ -0,0 +1,67 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -727,21 +708,27 @@ diff -ruwN source/src/video/orbital/SDL_orbitalmouse.c source-new/src/video/orbi + return NULL ; + } + ++ printf("ORBITAL_CreateWMCursor = %p\n", cursor); ++ + return cursor ; +} + +void ORBITAL_FreeWMCursor (_THIS, WMcursor * cursor) +{ ++ printf("ORBITAL_FreeWMCursor(%p)\n", cursor); + SDL_free (cursor) ; +} + +int ORBITAL_ShowWMCursor (_THIS, WMcursor * cursor) +{ -+ if (!this->hidden->window) { -+ return; ++ bool mouse_cursor = cursor != NULL; ++ printf("ORBITAL_ShowWMCursor(%p) = %d\n", cursor, mouse_cursor); ++ if (mouse_cursor != this->hidden->mouse_cursor) { ++ this->hidden->mouse_cursor = mouse_cursor; ++ if (this->hidden->window) { ++ orb_window_set_mouse_cursor(this->hidden->window, mouse_cursor); ++ } + } -+ -+ orb_window_set_mouse_cursor(this->hidden->window, cursor != NULL); +} diff -ruwN source/src/video/orbital/SDL_orbitalmouse_c.h source-new/src/video/orbital/SDL_orbitalmouse_c.h --- source/src/video/orbital/SDL_orbitalmouse_c.h 1969-12-31 17:00:00.000000000 -0700 @@ -777,8 +764,8 @@ diff -ruwN source/src/video/orbital/SDL_orbitalmouse_c.h source-new/src/video/or +extern int ORBITAL_ShowWMCursor (_THIS, WMcursor * cursor) ; diff -ruwN source/src/video/orbital/SDL_orbitalvideo.c source-new/src/video/orbital/SDL_orbitalvideo.c --- source/src/video/orbital/SDL_orbitalvideo.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalvideo.c 2019-08-12 13:32:48.391306374 -0600 -@@ -0,0 +1,260 @@ ++++ source-new/src/video/orbital/SDL_orbitalvideo.c 2019-08-12 13:52:49.188487962 -0600 +@@ -0,0 +1,265 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -963,6 +950,10 @@ diff -ruwN source/src/video/orbital/SDL_orbitalvideo.c source-new/src/video/orbi + SDL_SetError("Couldn't create window for requested mode"); + return(NULL); + } ++ ++ orb_window_set_mouse_cursor(this->hidden->window, this->hidden->mouse_cursor); ++ orb_window_set_mouse_grab(this->hidden->window, this->hidden->mouse_grab); ++ orb_window_set_mouse_relative(this->hidden->window, this->hidden->mouse_relative); + } + + fprintf(stderr, "Setting mode %dx%d@%d\n", width, height, bpp); @@ -989,8 +980,9 @@ diff -ruwN source/src/video/orbital/SDL_orbitalvideo.c source-new/src/video/orbi + +static void ORBITAL_SetCaption(_THIS, const char *title, const char *icon) +{ -+ if (this->hidden->window) ++ if (this->hidden->window) { + orb_window_set_title(this->hidden->window, title); ++ } +} + +/* We don't actually allow hardware surfaces other than the main one */ @@ -1041,8 +1033,8 @@ diff -ruwN source/src/video/orbital/SDL_orbitalvideo.c source-new/src/video/orbi +} diff -ruwN source/src/video/orbital/SDL_orbitalvideo.h source-new/src/video/orbital/SDL_orbitalvideo.h --- source/src/video/orbital/SDL_orbitalvideo.h 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalvideo.h 2019-08-12 13:22:05.603878968 -0600 -@@ -0,0 +1,39 @@ ++++ source-new/src/video/orbital/SDL_orbitalvideo.h 2019-08-12 14:06:11.392352905 -0600 +@@ -0,0 +1,43 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -1069,6 +1061,7 @@ diff -ruwN source/src/video/orbital/SDL_orbitalvideo.h source-new/src/video/orbi +#ifndef _SDL_orbitalvideo_h +#define _SDL_orbitalvideo_h + ++#include +#include "../SDL_sysvideo.h" + +/* Hidden "this" pointer for the video functions */ @@ -1079,6 +1072,9 @@ diff -ruwN source/src/video/orbital/SDL_orbitalvideo.h source-new/src/video/orbi + +struct SDL_PrivateVideoData { + void *window; ++ bool mouse_cursor; ++ bool mouse_grab; ++ bool mouse_relative; +}; + +#endif /* _SDL_orbitalvideo_h */ From 468185973ec1a8ad9525d909978a5ae63d475c58 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 12 Aug 2019 14:52:08 -0600 Subject: [PATCH 0700/3180] sdl: remove debugging --- recipes/sdl/redox.patch | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/recipes/sdl/redox.patch b/recipes/sdl/redox.patch index 73a0c633..5e0d1514 100644 --- a/recipes/sdl/redox.patch +++ b/recipes/sdl/redox.patch @@ -379,7 +379,7 @@ diff -ruwN source/src/thread/pthread/SDL_systhread.c source-new/src/thread/pthre /* Allow ourselves to be asynchronously cancelled */ diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orbital/SDL_orbitalevents.c --- source/src/video/orbital/SDL_orbitalevents.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalevents.c 2019-08-12 14:34:59.125356217 -0600 ++++ source-new/src/video/orbital/SDL_orbitalevents.c 2019-08-12 14:51:38.427129083 -0600 @@ -0,0 +1,242 @@ +/* + SDL - Simple DirectMedia Layer @@ -430,7 +430,7 @@ diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orb + bool mouse_relative = + !(SDL_cursorstate & CURSOR_VISIBLE) && + (this->input_grab != SDL_GRAB_OFF); -+ printf("ORBITAL_CheckMouseMode = %d\n", mouse_relative); ++ // printf("ORBITAL_CheckMouseMode = %d\n", mouse_relative); + if (mouse_relative != this->hidden->mouse_relative) { + this->hidden->mouse_relative = mouse_relative; + if (this->hidden->window) { @@ -441,7 +441,7 @@ diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orb + +SDL_GrabMode ORBITAL_GrabInput(_THIS, SDL_GrabMode mode) { + bool mouse_grab = mode != SDL_GRAB_OFF; -+ printf("ORBITAL_GrabInput(%d) = %d\n", mode, mouse_grab); ++ // printf("ORBITAL_GrabInput(%d) = %d\n", mode, mouse_grab); + if (mouse_grab != this->hidden->mouse_grab) { + this->hidden->mouse_grab = mouse_grab; + if (this->hidden->window) { @@ -661,8 +661,8 @@ diff -ruwN source/src/video/orbital/SDL_orbitalevents_c.h source-new/src/video/o +/* end of SDL_orbitalevents_c.h ... */ diff -ruwN source/src/video/orbital/SDL_orbitalmouse.c source-new/src/video/orbital/SDL_orbitalmouse.c --- source/src/video/orbital/SDL_orbitalmouse.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalmouse.c 2019-08-12 14:04:19.079802985 -0600 -@@ -0,0 +1,67 @@ ++++ source-new/src/video/orbital/SDL_orbitalmouse.c 2019-08-12 14:51:48.555193061 -0600 +@@ -0,0 +1,64 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -708,21 +708,18 @@ diff -ruwN source/src/video/orbital/SDL_orbitalmouse.c source-new/src/video/orbi + return NULL ; + } + -+ printf("ORBITAL_CreateWMCursor = %p\n", cursor); -+ + return cursor ; +} + +void ORBITAL_FreeWMCursor (_THIS, WMcursor * cursor) +{ -+ printf("ORBITAL_FreeWMCursor(%p)\n", cursor); + SDL_free (cursor) ; +} + +int ORBITAL_ShowWMCursor (_THIS, WMcursor * cursor) +{ + bool mouse_cursor = cursor != NULL; -+ printf("ORBITAL_ShowWMCursor(%p) = %d\n", cursor, mouse_cursor); ++ // printf("ORBITAL_ShowWMCursor(%p) = %d\n", cursor, mouse_cursor); + if (mouse_cursor != this->hidden->mouse_cursor) { + this->hidden->mouse_cursor = mouse_cursor; + if (this->hidden->window) { From fcb0f962900c0c8f2e37b725d5f145d9ca30d4d5 Mon Sep 17 00:00:00 2001 From: Fabio Di Francesco Date: Tue, 13 Aug 2019 13:39:02 +0000 Subject: [PATCH 0701/3180] nghttp2 dependency added --- recipes/freeciv/recipe.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/freeciv/recipe.sh b/recipes/freeciv/recipe.sh index 2b5d4925..47dd5e6d 100644 --- a/recipes/freeciv/recipe.sh +++ b/recipes/freeciv/recipe.sh @@ -1,6 +1,6 @@ VERSION=2.6.0 TAR=http://files.freeciv.org/stable/freeciv-$VERSION.tar.bz2 -BUILD_DEPENDS=(curl freetype libiconv liborbital libpng openssl sdl sdl_gfx sdl_image sdl_mixer sdl_ttf zlib) +BUILD_DEPENDS=(curl freetype libiconv liborbital libpng openssl nghttp2 sdl sdl_gfx sdl_image sdl_mixer sdl_ttf zlib) function recipe_version { echo "$VERSION" @@ -25,6 +25,7 @@ function recipe_build { --enable-ipv6=no \ --enable-client=sdl \ --enable-fcmp=cli \ + --with-ft-prefix="$sysroot" \ --with-sdl-prefix="$sysroot" \ ac_cv_lib_SDL_image_IMG_Load=yes \ ac_cv_lib_SDL_ttf_TTF_OpenFont=yes \ From 308656c10d51fc2fd6421c338bcfa674459a11f8 Mon Sep 17 00:00:00 2001 From: Fabio Di Francesco Date: Tue, 13 Aug 2019 13:39:29 +0000 Subject: [PATCH 0702/3180] check freetype2 fixed --- recipes/sdl_ttf/01_redox.patch | 13 +++++++------ recipes/sdl_ttf/recipe.sh | 4 ++-- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/recipes/sdl_ttf/01_redox.patch b/recipes/sdl_ttf/01_redox.patch index 1ed96943..d2b7ecd7 100644 --- a/recipes/sdl_ttf/01_redox.patch +++ b/recipes/sdl_ttf/01_redox.patch @@ -45,17 +45,18 @@ diff -ruw source/configure.in source-new/configure.in -if test "$FREETYPE_CONFIG" = "no" ; then - AC_MSG_ERROR([ -*** Unable to find FreeType2 library (http://www.freetype.org/) -+PKG_CHECK_MODULES([FT2], [freetype2 >= 7.0.1], [], [dnl -+ AC_CHECK_FT2(,,[AC_MSG_ERROR([dnl -+*** Unable to find FreeType2 library (http://www.freetype.org/)])] -+ ) - ]) ++#PKG_CHECK_MODULES([FT2], [freetype2 >= 7.0.1], [], [dnl ++# AC_CHECK_FT2(,,[AC_MSG_ERROR([dnl ++#*** Unable to find FreeType2 library (http://www.freetype.org/)])] ++# ) ++#]) +-]) -else - CFLAGS="$CFLAGS `$FREETYPE_CONFIG $freetypeconf_args --cflags`" - LIBS="$LIBS `$FREETYPE_CONFIG $freetypeconf_args --libs`" -fi +CFLAGS="$CFLAGS $FT2_CFLAGS" -+LIBS="$LIBS $FT2_LIBS" ++LIBS="$LIBS $FT2_LIBS -lfreetype -lpng -lz" dnl Check for SDL SDL_VERSION=1.2.4 diff --git a/recipes/sdl_ttf/recipe.sh b/recipes/sdl_ttf/recipe.sh index 44dfbedf..07cee556 100644 --- a/recipes/sdl_ttf/recipe.sh +++ b/recipes/sdl_ttf/recipe.sh @@ -14,10 +14,10 @@ function recipe_update { function recipe_build { sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" + export CFLAGS="-I$sysroot/include -I$sysroot/include/freetype2" export LDFLAGS="-L$sysroot/lib" ./autogen.sh - ./configure --prefix=/ --build=${BUILD} --host=${HOST} --disable-shared --disable-sdltest + ./configure --prefix=/ --build=${BUILD} --host=${HOST} --disable-shared make -j"$(nproc)" skip=1 } From 19bbf60e48c6684e59dae8b8b9287e6682592299 Mon Sep 17 00:00:00 2001 From: Fabio Di Francesco Date: Tue, 13 Aug 2019 14:30:48 +0000 Subject: [PATCH 0703/3180] apply patch + dependencies --- recipes/sdl_gfx/01_redox.patch | 20 ++++++++++++++++++++ recipes/sdl_gfx/recipe.sh | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 recipes/sdl_gfx/01_redox.patch diff --git a/recipes/sdl_gfx/01_redox.patch b/recipes/sdl_gfx/01_redox.patch new file mode 100644 index 00000000..c44c611f --- /dev/null +++ b/recipes/sdl_gfx/01_redox.patch @@ -0,0 +1,20 @@ +--- source/config.sub 2013-10-27 23:04:13.000000000 +0100 ++++ build/config.sub 2019-08-13 10:13:07.072063540 +0200 +@@ -125,7 +125,7 @@ case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | \ +- kopensolaris*-gnu* | \ ++ kopensolaris*-gnu* | redox* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` +@@ -1346,7 +1346,7 @@ case $os in + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ +- | -sym* | -kopensolaris* \ ++ | -sym* | -kopensolaris* | -redox* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ diff --git a/recipes/sdl_gfx/recipe.sh b/recipes/sdl_gfx/recipe.sh index 9a697f91..bc9566e9 100644 --- a/recipes/sdl_gfx/recipe.sh +++ b/recipes/sdl_gfx/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" ./autogen.sh - ./configure --prefix=/ --build=${BUILD} --host=${HOST} --disable-shared --disable-sdltest + ./configure --prefix=/ --build=${BUILD} --host=${HOST} --disable-shared make -j"$(nproc)" skip=1 } From 9a4f582c1377228ab10acc8a5fb91be825c0b561 Mon Sep 17 00:00:00 2001 From: Deepak Sirone Date: Tue, 13 Aug 2019 20:19:36 +0530 Subject: [PATCH 0704/3180] Add redox-fatfs --- recipes/redox-fatfs/recipe.sh | 1 + 1 file changed, 1 insertion(+) create mode 100644 recipes/redox-fatfs/recipe.sh diff --git a/recipes/redox-fatfs/recipe.sh b/recipes/redox-fatfs/recipe.sh new file mode 100644 index 00000000..c707f458 --- /dev/null +++ b/recipes/redox-fatfs/recipe.sh @@ -0,0 +1 @@ +GIT=https://gitlab.redox-os.org/redox-os/redox-fatfs From 158a8f35be468bce757b5637f5e7c410c44b214a Mon Sep 17 00:00:00 2001 From: Fabio Di Francesco Date: Tue, 13 Aug 2019 16:34:52 +0000 Subject: [PATCH 0705/3180] fix sdl2 asset path --- recipes/sdl2_gears/{ => assets}/font.ttf | Bin recipes/sdl2_gears/{ => assets}/image.png | Bin recipes/sdl2_gears/{ => assets}/music.wav | Bin recipes/sdl2_gears/gears.c | 6 +++--- recipes/sdl2_gears/recipe.sh | 14 ++++++++------ 5 files changed, 11 insertions(+), 9 deletions(-) rename recipes/sdl2_gears/{ => assets}/font.ttf (100%) rename recipes/sdl2_gears/{ => assets}/image.png (100%) rename recipes/sdl2_gears/{ => assets}/music.wav (100%) diff --git a/recipes/sdl2_gears/font.ttf b/recipes/sdl2_gears/assets/font.ttf similarity index 100% rename from recipes/sdl2_gears/font.ttf rename to recipes/sdl2_gears/assets/font.ttf diff --git a/recipes/sdl2_gears/image.png b/recipes/sdl2_gears/assets/image.png similarity index 100% rename from recipes/sdl2_gears/image.png rename to recipes/sdl2_gears/assets/image.png diff --git a/recipes/sdl2_gears/music.wav b/recipes/sdl2_gears/assets/music.wav similarity index 100% rename from recipes/sdl2_gears/music.wav rename to recipes/sdl2_gears/assets/music.wav diff --git a/recipes/sdl2_gears/gears.c b/recipes/sdl2_gears/gears.c index 97b798bf..93faf7e9 100644 --- a/recipes/sdl2_gears/gears.c +++ b/recipes/sdl2_gears/gears.c @@ -276,13 +276,13 @@ void CheckSDLError(int line) } SDL_Surface *image; -const char *IMAGE_FILE_NAME = "image.png"; +const char *IMAGE_FILE_NAME = "/games/sdl2_gears/assets/image.png"; Mix_Music *music = NULL; -const char *MUSIC_FILE_NAME = "music.wav"; +const char *MUSIC_FILE_NAME = "/games/sdl2_gears/assets/music.wav"; TTF_Font *font = NULL; -const char *TTF_FILE_NAME = "font.ttf"; +const char *TTF_FILE_NAME = "/games/sdl2_gears/assets/font.ttf"; void cleanup() { diff --git a/recipes/sdl2_gears/recipe.sh b/recipes/sdl2_gears/recipe.sh index c5809169..db33349c 100644 --- a/recipes/sdl2_gears/recipe.sh +++ b/recipes/sdl2_gears/recipe.sh @@ -11,9 +11,11 @@ function recipe_update { } function recipe_prepare { - rm -rf source + m -rf source mkdir source cp gears.c source + mkdir source/assets + cp assets/* source/assets } function recipe_build { @@ -30,17 +32,17 @@ function recipe_test { } function recipe_clean { - make clean + echo "skipping clean" skip=1 } function recipe_stage { dest="$(realpath $1)" mkdir -pv "$dest/games/sdl2_gears" - mkdir -pv "$dest/home/user" + mkdir -pv "$dest/games/sdl2_gears/assets" cp -v "sdl2_gears" "$dest/games/sdl2_gears/sdl2_gears" - cp -v "../image.png" "$dest/home/user/image.png" - cp -v "../music.wav" "$dest/home/user/music.wav" - cp -v "../font.ttf" "$dest/home/user/font.ttf" + cp -v "assets/image.png" "$dest/games/sdl2_gears/assets/image.png" + cp -v "assets/music.wav" "$dest/games/sdl2_gears/assets/music.wav" + cp -v "assets/font.ttf" "$dest/games/sdl2_gears/assets/font.ttf" skip=1 } From 24cde8584dc5f0e716033a089fe3479dc7f04de7 Mon Sep 17 00:00:00 2001 From: Steve McKay Date: Sat, 17 Aug 2019 12:41:59 -0400 Subject: [PATCH 0706/3180] Remove undeclared and unused variable Variable is written but not read and breaks the build --- recipes/sdl/redox.patch | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/recipes/sdl/redox.patch b/recipes/sdl/redox.patch index 5e0d1514..45f32ff9 100644 --- a/recipes/sdl/redox.patch +++ b/recipes/sdl/redox.patch @@ -380,7 +380,7 @@ diff -ruwN source/src/thread/pthread/SDL_systhread.c source-new/src/thread/pthre diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orbital/SDL_orbitalevents.c --- source/src/video/orbital/SDL_orbitalevents.c 1969-12-31 17:00:00.000000000 -0700 +++ source-new/src/video/orbital/SDL_orbitalevents.c 2019-08-12 14:51:38.427129083 -0600 -@@ -0,0 +1,242 @@ +@@ -0,0 +1,240 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -462,8 +462,6 @@ diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orb + void* event_iter = orb_window_events(this->hidden->window); + OrbEventOption oeo = orb_events_next(event_iter); + while (oeo.tag != OrbEventOption_None) { -+ found_event = true; -+ + switch (oeo.tag) { + case OrbEventOption_Key: + keysym.unicode = oeo.key.character; From a17a02c79cd0f374eb32cd0203453ce20fedfb71 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 26 Aug 2019 17:18:47 -0600 Subject: [PATCH 0707/3180] Move drivers back to master branch --- recipes/drivers/recipe.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/drivers/recipe.sh b/recipes/drivers/recipe.sh index 47a4bbea..6fbc2265 100644 --- a/recipes/drivers/recipe.sh +++ b/recipes/drivers/recipe.sh @@ -1,5 +1,4 @@ GIT=https://gitlab.redox-os.org/redox-os/drivers.git -BRANCH=redox-unix CARGOBUILD="build" CARGOFLAGS="--all" From 6eb28fa429d70e01344b5cbc10d4fd924420f351 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 29 Aug 2019 09:42:29 -0600 Subject: [PATCH 0708/3180] Fix compilation of libiconv and sdl --- recipes/libiconv/recipe.sh | 8 +++++++- recipes/sdl/redox.patch | 22 ++++++++++------------ 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/recipes/libiconv/recipe.sh b/recipes/libiconv/recipe.sh index fb61b792..12829415 100644 --- a/recipes/libiconv/recipe.sh +++ b/recipes/libiconv/recipe.sh @@ -13,7 +13,13 @@ function recipe_update { function recipe_build { export LDFLAGS="--static" - ./configure --build=${BUILD} --host=${HOST} --prefix='/' --disable-shared --enable-static + ./configure \ + --build="${BUILD}" \ + --host="${HOST}" \ + --prefix='/' \ + --disable-shared \ + --enable-static \ + ac_cv_have_decl_program_invocation_name=no make -j"$(nproc)" skip=1 } diff --git a/recipes/sdl/redox.patch b/recipes/sdl/redox.patch index 5e0d1514..f22b17a2 100644 --- a/recipes/sdl/redox.patch +++ b/recipes/sdl/redox.patch @@ -16,7 +16,7 @@ diff -ruwN source/configure.in source-new/configure.in @@ -685,6 +685,18 @@ fi } - + +dnl Set up the Redox Audio driver +CheckRedoxAudio() +{ @@ -35,7 +35,7 @@ diff -ruwN source/configure.in source-new/configure.in @@ -1646,6 +1658,20 @@ fi } - + +dnl Set up the Orbital video driver. +CheckOrbitalVideo() +{ @@ -340,7 +340,7 @@ diff -ruwN source/src/audio/SDL_audio.c source-new/src/audio/SDL_audio.c --- source/src/audio/SDL_audio.c 2012-01-18 23:30:06.000000000 -0700 +++ source-new/src/audio/SDL_audio.c 2019-08-10 20:55:13.662786449 -0600 @@ -36,6 +36,9 @@ - + /* Available audio drivers */ static AudioBootStrap *bootstrap[] = { +#if SDL_AUDIO_DRIVER_REDOX @@ -355,7 +355,7 @@ diff -ruwN source/src/audio/SDL_sysaudio.h source-new/src/audio/SDL_sysaudio.h @@ -102,6 +102,9 @@ SDL_AudioDevice *(*create)(int devindex); } AudioBootStrap; - + +#if SDL_AUDIO_DRIVER_REDOX +extern AudioBootStrap REDOXAUD_bootstrap; +#endif @@ -374,13 +374,13 @@ diff -ruwN source/src/thread/pthread/SDL_systhread.c source-new/src/thread/pthre + #else pthread_sigmask(SIG_BLOCK, &mask, 0); + #endif - + #ifdef PTHREAD_CANCEL_ASYNCHRONOUS /* Allow ourselves to be asynchronously cancelled */ diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orbital/SDL_orbitalevents.c --- source/src/video/orbital/SDL_orbitalevents.c 1969-12-31 17:00:00.000000000 -0700 +++ source-new/src/video/orbital/SDL_orbitalevents.c 2019-08-12 14:51:38.427129083 -0600 -@@ -0,0 +1,242 @@ +@@ -0,0 +1,240 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga @@ -462,8 +462,6 @@ diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orb + void* event_iter = orb_window_events(this->hidden->window); + OrbEventOption oeo = orb_events_next(event_iter); + while (oeo.tag != OrbEventOption_None) { -+ found_event = true; -+ + switch (oeo.tag) { + case OrbEventOption_Key: + keysym.unicode = oeo.key.character; @@ -1081,13 +1079,13 @@ diff -ruwN source/src/video/SDL_gamma.c source-new/src/video/SDL_gamma.c @@ -35,6 +35,9 @@ #define log(x) __ieee754_log(x) #endif - + +#include "e_log.h" +#define log(x) __ieee754_log(x) + #include "SDL_sysvideo.h" - - + + diff -ruwN source/src/video/SDL_sysvideo.h source-new/src/video/SDL_sysvideo.h --- source/src/video/SDL_sysvideo.h 2012-01-18 23:30:06.000000000 -0700 +++ source-new/src/video/SDL_sysvideo.h 2019-08-10 20:55:13.670786496 -0600 @@ -1121,6 +1119,6 @@ diff -ruwN source/src/video/SDL_video.c source-new/src/video/SDL_video.c - SDL_ClearSurface(mode); + // Causes blinking under Orbital + //SDL_ClearSurface(mode); - + /* Now adjust the offsets to match the desired mode */ video->offset_x = (mode->w-width)/2; From 9dcafe9acabd392014808ca053dbcbd78fd4e087 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 7 Sep 2019 20:12:07 -0600 Subject: [PATCH 0709/3180] Add sha256sums file storing a list of every file in a package and their checksum --- cook.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/cook.sh b/cook.sh index 8637a7a1..5f8396fe 100755 --- a/cook.sh +++ b/cook.sh @@ -423,7 +423,16 @@ function op { echo "depends = []" >> "stage.toml" fi + rm -rf stage/pkg mkdir -p stage/pkg + + pushd stage > /dev/null + find . -type f | cut -d / -f 2- | sort | while read file + do + sha256sum "$file" >> "pkg/$1.sha256sums" + done + popd > /dev/null + cp -v stage.toml "stage/pkg/$1.toml" pkg --target=$TARGET create stage ;; From f9ea607480180e5c5f35ea6249a7a889849fa5b0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 11 Sep 2019 20:07:42 -0600 Subject: [PATCH 0710/3180] drivers: Remove filesystem.toml --- recipes/drivers/recipe.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/drivers/recipe.sh b/recipes/drivers/recipe.sh index 6fbc2265..04add3f4 100644 --- a/recipes/drivers/recipe.sh +++ b/recipes/drivers/recipe.sh @@ -10,7 +10,6 @@ function recipe_version { function recipe_stage { mkdir -pv "$1/etc/pcid" cp -v initfs.toml "$1/etc/pcid/initfs.toml" - cp -v filesystem.toml "$1/etc/pcid/filesystem.toml" mkdir -pv "$1/etc/pcid.d" for conf in `find . -maxdepth 2 -type f -name 'config.toml'`; do From ec4b922efbf21e765ebcb0b95eed5323c9620be4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 14 Sep 2019 10:24:35 -0600 Subject: [PATCH 0711/3180] gettext: disable use of program_invocation_name --- recipes/gettext/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/gettext/recipe.sh b/recipes/gettext/recipe.sh index b3625656..dfcbf920 100644 --- a/recipes/gettext/recipe.sh +++ b/recipes/gettext/recipe.sh @@ -23,6 +23,7 @@ function recipe_build { --prefix=/ \ --disable-shared \ --enable-static \ + ac_cv_have_decl_program_invocation_name=no \ gt_cv_locale_fr=false \ gt_cv_locale_fr_utf8=false \ gt_cv_locale_ja=false \ From fae74aae262992fcf823fb71450d1e1468c343c6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 15 Sep 2019 13:37:38 -0600 Subject: [PATCH 0712/3180] Make sure git is on the right branch when running fetch --- cook.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cook.sh b/cook.sh index 5f8396fe..55e6cafb 100755 --- a/cook.sh +++ b/cook.sh @@ -119,6 +119,10 @@ function op { git remote add upstream "$GIT_UPSTREAM" git fetch upstream fi + if [ -n "$BRANCH" ] + then + git checkout "$BRANCH" + fi git pull git submodule sync --recursive git submodule update --init --recursive From 2d7f0c1ec842d723c87c7820a80616b606bf900e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 15 Sep 2019 13:40:37 -0600 Subject: [PATCH 0713/3180] Set default branch to master --- cook.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cook.sh b/cook.sh index 55e6cafb..105c6b10 100755 --- a/cook.sh +++ b/cook.sh @@ -122,6 +122,9 @@ function op { if [ -n "$BRANCH" ] then git checkout "$BRANCH" + else + #TODO: Find correct upstream default branch + git checkout master fi git pull git submodule sync --recursive From a27a641574eca14eabb10825b34cf6044ce0f604 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 15 Sep 2019 14:31:20 -0600 Subject: [PATCH 0714/3180] Set gnu-binutils branch --- recipes/gnu-binutils/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh index 53349d20..717cf746 100644 --- a/recipes/gnu-binutils/recipe.sh +++ b/recipes/gnu-binutils/recipe.sh @@ -1,4 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/binutils-gdb.git +BRANCH=redox GIT_UPSTREAM=git://sourceware.org/git/binutils-gdb.git BUILD_DEPENDS=(relibc) From e1a5a2cc22dee2f6406a5fc26b0c6e2ee7fd8ddf Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 15 Sep 2019 14:50:08 -0600 Subject: [PATCH 0715/3180] Improve fetch git branch logic --- cook.sh | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/cook.sh b/cook.sh index 105c6b10..72b36d44 100755 --- a/cook.sh +++ b/cook.sh @@ -119,14 +119,17 @@ function op { git remote add upstream "$GIT_UPSTREAM" git fetch upstream fi + + ORIGIN_BRANCH="$(git branch --remotes | grep '^ origin/HEAD -> ' | cut -d ' ' -f 5-)" if [ -n "$BRANCH" ] then - git checkout "$BRANCH" - else - #TODO: Find correct upstream default branch - git checkout master + ORIGIN_BRANCH="origin/$BRANCH" + fi + + if [ "$(git rev-parse HEAD)" != "$(git rev-parse $ORIGIN_BRANCH)" ] + then + git checkout -B "$(echo "$ORIGIN_BRANCH" | cut -d / -f 2-)" "$ORIGIN_BRANCH" fi - git pull git submodule sync --recursive git submodule update --init --recursive popd > /dev/null From f09958fdcf285a5a379b1054049079745394674a Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Wed, 18 Sep 2019 09:49:46 +1000 Subject: [PATCH 0716/3180] Allow recipes that are Cargo workspaces to select individual packages, by adding the CARGO_PACKAGE variable, which passes --package=PKG to cargo rustc. --- cook.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/cook.sh b/cook.sh index 72b36d44..9cf31f7d 100755 --- a/cook.sh +++ b/cook.sh @@ -321,10 +321,16 @@ function op { release_flag= fi + if [ -n "$CARGO_PACKAGE" ]; then + package_flag="--package=$CARGO_PACKAGE" + else + package_flag= + fi + if [ "$skip" -eq "0" ] then cp -p "$ROOT/Xargo.toml" "Xargo.toml" - "${CARGO[@]}" "$CARGOBUILD" --target "$TARGET" $release_flag $CARGOFLAGS + "${CARGO[@]}" "$CARGOBUILD" --target "$TARGET" $release_flag $package_flag $CARGOFLAGS fi popd > /dev/null ;; From 3610f7aa9df1550d335a97edd3a2bbdcd241551e Mon Sep 17 00:00:00 2001 From: AdminXVII Date: Wed, 18 Sep 2019 15:37:55 +0000 Subject: [PATCH 0717/3180] Update the nix version to avoid unreachable commit --- patches/nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/nix b/patches/nix index 6fd64569..65a419c8 160000 --- a/patches/nix +++ b/patches/nix @@ -1 +1 @@ -Subproject commit 6fd64569452536e9759c45c8f4511e6c983196f3 +Subproject commit 65a419c85be86b00ab9b694f81eeb43116620f2b From 200a526906d7b55c24cdf0a45a621415904fa017 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 22 Sep 2019 10:42:51 -0600 Subject: [PATCH 0718/3180] Follow symbolic links --- cook.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cook.sh b/cook.sh index 9cf31f7d..9ce54ae4 100755 --- a/cook.sh +++ b/cook.sh @@ -443,7 +443,7 @@ function op { mkdir -p stage/pkg pushd stage > /dev/null - find . -type f | cut -d / -f 2- | sort | while read file + find -L . -type f | cut -d / -f 2- | sort | while read file do sha256sum "$file" >> "pkg/$1.sha256sums" done From 728253812df678385bbcb6fad7338bc06cd8c104 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 22 Sep 2019 10:56:38 -0600 Subject: [PATCH 0719/3180] Fix dash recipe --- recipes/dash/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/dash/recipe.sh b/recipes/dash/recipe.sh index 9f3d22c1..725a93e7 100644 --- a/recipes/dash/recipe.sh +++ b/recipes/dash/recipe.sh @@ -19,6 +19,7 @@ function recipe_build { --prefix=/ \ --enable-static \ cross_compiling=yes + sed -i 's|#define HAVE_GETRLIMIT 1|/* #undef HAVE_GETRLIMIT */|g' config.h make -j"$(nproc)" skip=1 } From acce8a953c00b926d8a9b3da36c063c0d01303dc Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 2 Oct 2019 19:57:36 -0600 Subject: [PATCH 0720/3180] Do not use builtin_popcount in cairo and fontconfig, and fix rust-cairo --- recipes/cairo/redox.patch | 12 ++++++++++++ recipes/fontconfig/redox.patch | 14 +++++++++++++- recipes/rust-cairo/recipe.sh | 12 +++++++----- 3 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 recipes/cairo/redox.patch diff --git a/recipes/cairo/redox.patch b/recipes/cairo/redox.patch new file mode 100644 index 00000000..d02e163c --- /dev/null +++ b/recipes/cairo/redox.patch @@ -0,0 +1,12 @@ +diff -ruwN source/src/cairoint.h source-new/src/cairoint.h +--- source/src/cairoint.h 2018-08-16 19:10:53.000000000 -0600 ++++ source-new/src/cairoint.h 2019-10-02 19:55:59.131388156 -0600 +@@ -187,7 +187,7 @@ + static inline int cairo_const + _cairo_popcount (uint32_t mask) + { +-#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) ++#if !defined(__redox__) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) + return __builtin_popcount (mask); + #else + register int y; diff --git a/recipes/fontconfig/redox.patch b/recipes/fontconfig/redox.patch index 7e9e7472..6beccc26 100644 --- a/recipes/fontconfig/redox.patch +++ b/recipes/fontconfig/redox.patch @@ -1,6 +1,6 @@ diff -ruwN source/src/fccache.c source-new/src/fccache.c --- source/src/fccache.c 2019-06-10 05:36:37.000000000 -0600 -+++ source-new/src/fccache.c 2019-07-16 17:13:18.730013599 -0600 ++++ source-new/src/fccache.c 2019-10-02 19:48:10.459642095 -0600 @@ -1526,7 +1526,7 @@ #if defined(_WIN32) if (_locking (fd, _LK_LOCK, 1) == -1) @@ -19,3 +19,15 @@ diff -ruwN source/src/fccache.c source-new/src/fccache.c struct flock fl; fl.l_type = F_UNLCK; +diff -ruwN source/src/fccharset.c source-new/src/fccharset.c +--- source/src/fccharset.c 2018-06-05 04:36:38.000000000 -0600 ++++ source-new/src/fccharset.c 2019-10-02 19:48:53.082862133 -0600 +@@ -600,7 +600,7 @@ + static FcChar32 + FcCharSetPopCount (FcChar32 c1) + { +-#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) ++#if !defined(__redox__) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) + return __builtin_popcount (c1); + #else + /* hackmem 169 */ diff --git a/recipes/rust-cairo/recipe.sh b/recipes/rust-cairo/recipe.sh index f2fea6aa..8de117da 100644 --- a/recipes/rust-cairo/recipe.sh +++ b/recipes/rust-cairo/recipe.sh @@ -1,5 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/rust-cairo.git -BUILD_DEPENDS=(cairo zlib pixman freetype libpng) +BUILD_DEPENDS=(cairo expat fontconfig freetype libpng pixman zlib) CARGOFLAGS="--example gui" function recipe_build { @@ -9,10 +9,12 @@ function recipe_build { -- \ -L "${sysroot}/lib" \ -l cairo \ - -l pixman-1 \ - -l freetype \ - -l png \ - -l z + -l fontconfig \ + -l expat \ + -l pixman-1 \ + -l freetype \ + -l png \ + -l z skip=1 } From a12590a8196fa3045cd7ed5e96f9f7091903f46d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 2 Oct 2019 20:15:33 -0600 Subject: [PATCH 0721/3180] Remove atty and libc patch, fix rust-cairo-demo --- .cargo/config | 2 -- recipes/rust-cairo-demo/recipe.sh | 12 +++++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.cargo/config b/.cargo/config index c6052f61..24060f49 100644 --- a/.cargo/config +++ b/.cargo/config @@ -1,6 +1,4 @@ paths = [ - "patches/atty", - "patches/libc", "patches/mio", "patches/nix", "patches/tokio/tokio", diff --git a/recipes/rust-cairo-demo/recipe.sh b/recipes/rust-cairo-demo/recipe.sh index 9abd33d8..3b2aff83 100644 --- a/recipes/rust-cairo-demo/recipe.sh +++ b/recipes/rust-cairo-demo/recipe.sh @@ -1,5 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/rust-cairo-demo.git -BUILD_DEPENDS=(cairo zlib pixman freetype libpng) +BUILD_DEPENDS=(cairo expat fontconfig freetype libpng pixman zlib) function recipe_build { sysroot="$(realpath ../sysroot)" @@ -8,10 +8,12 @@ function recipe_build { -- \ -L "${sysroot}/lib" \ -l cairo \ - -l pixman-1 \ - -l freetype \ - -l png \ - -l z + -l fontconfig \ + -l expat \ + -l pixman-1 \ + -l freetype \ + -l png \ + -l z skip=1 } From 9d2e36d14f1c4c7ffde6c11ed71390f00676d9ad Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 2 Oct 2019 20:44:24 -0600 Subject: [PATCH 0722/3180] Fix sdl2_gears recipe --- recipes/sdl2_gears/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/sdl2_gears/recipe.sh b/recipes/sdl2_gears/recipe.sh index db33349c..11776bd2 100644 --- a/recipes/sdl2_gears/recipe.sh +++ b/recipes/sdl2_gears/recipe.sh @@ -11,7 +11,7 @@ function recipe_update { } function recipe_prepare { - m -rf source + rm -rf source mkdir source cp gears.c source mkdir source/assets From d48216d7cb44ccba3fdd42083341f01f7e815d88 Mon Sep 17 00:00:00 2001 From: AdminXVII Date: Tue, 8 Oct 2019 09:51:55 +0000 Subject: [PATCH 0723/3180] Update nix to a new version --- patches/nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/nix b/patches/nix index 65a419c8..491397e2 160000 --- a/patches/nix +++ b/patches/nix @@ -1 +1 @@ -Subproject commit 65a419c85be86b00ab9b694f81eeb43116620f2b +Subproject commit 491397e20779381fe3366adeeec2a5540e00b926 From f24afbfa33c8b3dc7d090aadaf3b117997252f55 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 19 Oct 2019 19:56:10 -0600 Subject: [PATCH 0724/3180] Use master branch of ion --- recipes/ion/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/ion/recipe.sh b/recipes/ion/recipe.sh index 38336a25..fac212ec 100644 --- a/recipes/ion/recipe.sh +++ b/recipes/ion/recipe.sh @@ -1,2 +1,2 @@ GIT=https://gitlab.redox-os.org/redox-os/ion.git -BRANCH=redox-unix +BRANCH=master From 74cbf9c34f29c4169135cef2683b8fcba0037296 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 19 Oct 2019 19:56:59 -0600 Subject: [PATCH 0725/3180] Add pkgar --- recipes/pkgar/recipe.sh | 1 + 1 file changed, 1 insertion(+) create mode 100644 recipes/pkgar/recipe.sh diff --git a/recipes/pkgar/recipe.sh b/recipes/pkgar/recipe.sh new file mode 100644 index 00000000..ca4d5f3b --- /dev/null +++ b/recipes/pkgar/recipe.sh @@ -0,0 +1 @@ +GIT=https://gitlab.redox-os.org/redox-os/pkgar.git From 3bb4cf812e98c736eb29a32ac3f8e17630fb4110 Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Sun, 20 Oct 2019 15:10:07 +1100 Subject: [PATCH 0726/3180] Add fal-rs (currently just an ext2 driver). --- recipes/fal/recipe.sh | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 recipes/fal/recipe.sh diff --git a/recipes/fal/recipe.sh b/recipes/fal/recipe.sh new file mode 100644 index 00000000..8e102368 --- /dev/null +++ b/recipes/fal/recipe.sh @@ -0,0 +1,2 @@ +GIT=https://github.com/4lDO2/fal-rs +CARGO_PACKAGE=fal-frontend-redox From 74cce55efbb7f7375a68b58ab810384385698a1b Mon Sep 17 00:00:00 2001 From: Tomas Ritter Date: Tue, 22 Oct 2019 20:24:48 +0200 Subject: [PATCH 0727/3180] Added BlockEncrypt --- recipes/block_encrypt/recipe.sh | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 recipes/block_encrypt/recipe.sh diff --git a/recipes/block_encrypt/recipe.sh b/recipes/block_encrypt/recipe.sh new file mode 100644 index 00000000..5f51f41e --- /dev/null +++ b/recipes/block_encrypt/recipe.sh @@ -0,0 +1,2 @@ +GIT=https://github.com/tomasritter/block_encrypt.git + From e1fc717b4d1dd8a0de0a07c452689aae35ba47c0 Mon Sep 17 00:00:00 2001 From: Tomas Ritter Date: Wed, 6 Nov 2019 20:51:26 +0100 Subject: [PATCH 0728/3180] Rustc compilation flags for aesni --- recipes/block_encrypt/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/block_encrypt/recipe.sh b/recipes/block_encrypt/recipe.sh index 5f51f41e..e698ea4a 100644 --- a/recipes/block_encrypt/recipe.sh +++ b/recipes/block_encrypt/recipe.sh @@ -1,2 +1,3 @@ GIT=https://github.com/tomasritter/block_encrypt.git +CARGO=(env RUSTFLAGS="$PREFIX_RUSTFLAGS -C target-feature=+aes" xargo) From 2b5294e0c368436dbee412e1e51cd32f2425a681 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 29 Nov 2019 10:00:20 -0700 Subject: [PATCH 0729/3180] Update pkgutils --- pkgutils | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgutils b/pkgutils index 7297400b..7b0095c1 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit 7297400ba80310df28f9a8df27ae4c65efafc596 +Subproject commit 7b0095c1eb4975f09a335e093e228b28ad9ff365 From 9a441faeadeb567c9b0e4d9900b9b5b3f5d7712d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 29 Nov 2019 18:28:58 -0700 Subject: [PATCH 0730/3180] Update patches --- patches/net2-rs | 2 +- patches/ring | 2 +- patches/tokio | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/patches/net2-rs b/patches/net2-rs index b2c7c1e7..be7b8559 160000 --- a/patches/net2-rs +++ b/patches/net2-rs @@ -1 +1 @@ -Subproject commit b2c7c1e7773f13eebd9b4421172d9e4b5b806ce6 +Subproject commit be7b855982e63770753a81ffc4bedf66d7f66506 diff --git a/patches/ring b/patches/ring index 61162b0e..e10e9b89 160000 --- a/patches/ring +++ b/patches/ring @@ -1 +1 @@ -Subproject commit 61162b0ea14d92df89a4d976f57712da991f26de +Subproject commit e10e9b891589b1d4bf5a5e83e999000734f04d68 diff --git a/patches/tokio b/patches/tokio index 2861dcd3..75f296e4 160000 --- a/patches/tokio +++ b/patches/tokio @@ -1 +1 @@ -Subproject commit 2861dcd338284a95e2e6b9e88510b9396f1c42b2 +Subproject commit 75f296e4b48f5d2966f2bd1cc6b04111a58bd4fd From b80c5a1b211cd40fc9b4285c3b4a387579f308c6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 30 Nov 2019 15:17:32 -0700 Subject: [PATCH 0731/3180] Update rust branch for rust package --- recipes/rust/config.toml | 2 +- recipes/rust/recipe.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/rust/config.toml b/recipes/rust/config.toml index fe9297b3..2305ee07 100644 --- a/recipes/rust/config.toml +++ b/recipes/rust/config.toml @@ -21,4 +21,4 @@ ar = "x86_64-unknown-redox-ar" linker = "x86_64-unknown-redox-gcc" # Nasty path, please fix llvm-config = "../../../bin/x86_64-unknown-redox-llvm-config" -crt-static = true +crt-static = false diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index 05718cbe..c5495d09 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -1,5 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/rust.git -BRANCH=compile-redox +BRANCH=redox-2019-11-25 BUILD_DEPENDS=(llvm) DEPENDS="gcc cargo" PREPARE_COPY=0 From 3d0cf43abba6b10bd652783fb22d6c5ed8cc1fba Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 30 Nov 2019 15:44:55 -0700 Subject: [PATCH 0732/3180] Add jobserver patch --- .gitmodules | 4 ++++ patches/jobserver-rs | 1 + 2 files changed, 5 insertions(+) create mode 160000 patches/jobserver-rs diff --git a/.gitmodules b/.gitmodules index 0835e1f1..868d3322 100644 --- a/.gitmodules +++ b/.gitmodules @@ -56,3 +56,7 @@ path = patches/nix url = https://github.com/AdminXVII/nix branch = add-redox-support +[submodule "patches/jobserver-rs"] + path = patches/jobserver-rs + url = https://gitlab.redox-os.org/redox-os/jobserver-rs.git + branch = redox diff --git a/patches/jobserver-rs b/patches/jobserver-rs new file mode 160000 index 00000000..54508e47 --- /dev/null +++ b/patches/jobserver-rs @@ -0,0 +1 @@ +Subproject commit 54508e47f2349cbd0cef9fcf6e6f0cd4bd12d91d From 08e0c43302152016c9f3a68ec3302abe4662adcf Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 6 Dec 2019 19:44:37 -0700 Subject: [PATCH 0733/3180] Update dynamic-example recipe --- recipes/dynamic-example/recipe.sh | 35 +------------------------------ 1 file changed, 1 insertion(+), 34 deletions(-) diff --git a/recipes/dynamic-example/recipe.sh b/recipes/dynamic-example/recipe.sh index d14985ba..29b01dae 100644 --- a/recipes/dynamic-example/recipe.sh +++ b/recipes/dynamic-example/recipe.sh @@ -1,35 +1,2 @@ GIT=https://gitlab.redox-os.org/redox-os/dynamic-example.git - -function recipe_version { - printf "1.0.0" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export LDFLAGS="-L$sysroot/lib" - export CPPFLAGS="-I$sysroot/include" - make prefix=/ - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - make clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - make prefix=/ DESTDIR="$dest" install - skip=1 -} +CARGOFLAGS="-- -C target-feature=-crt-static" From 689c9b34aca15030ba05b5176f2465a81b58d193 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 6 Dec 2019 20:11:21 -0700 Subject: [PATCH 0734/3180] Modify patches in order to compile rust --- .cargo/config | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.cargo/config b/.cargo/config index 24060f49..f4442537 100644 --- a/.cargo/config +++ b/.cargo/config @@ -1,4 +1,5 @@ paths = [ + "patches/jobserver-rs", "patches/mio", "patches/nix", "patches/tokio/tokio", @@ -9,7 +10,7 @@ paths = [ "patches/ring", "patches/tar-rs", "patches/termsize", - "patches/time", +# "patches/time", ] [target.aarch64-unknown-redox] From 222be380bec8c274d5e96a74d1922ac6911e5d34 Mon Sep 17 00:00:00 2001 From: Florian Blasius Date: Wed, 11 Dec 2019 22:18:09 +0100 Subject: [PATCH 0735/3180] Add orbcalculator recipe. --- recipes/calculator/recipe.sh | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 recipes/calculator/recipe.sh diff --git a/recipes/calculator/recipe.sh b/recipes/calculator/recipe.sh new file mode 100644 index 00000000..f81baf3e --- /dev/null +++ b/recipes/calculator/recipe.sh @@ -0,0 +1,2 @@ +GIT=https://gitlab.redox-os.org/redox-os/orbcalculator.git +BRANCH=master From 05eaa7e3380c6b0d4936ec6066ee065bc499a628 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 14 Dec 2019 08:34:00 -0700 Subject: [PATCH 0736/3180] Re-enable time patch --- .cargo/config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cargo/config b/.cargo/config index f4442537..e2c90b5f 100644 --- a/.cargo/config +++ b/.cargo/config @@ -10,7 +10,7 @@ paths = [ "patches/ring", "patches/tar-rs", "patches/termsize", -# "patches/time", + "patches/time", ] [target.aarch64-unknown-redox] From 7f60884da9e1df1c8a8f309e40ae29e93d9c4d0e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 18 Dec 2019 20:00:44 -0700 Subject: [PATCH 0737/3180] Update nix --- patches/nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/nix b/patches/nix index 491397e2..cc0d9fc9 160000 --- a/patches/nix +++ b/patches/nix @@ -1 +1 @@ -Subproject commit 491397e20779381fe3366adeeec2a5540e00b926 +Subproject commit cc0d9fc97166be62c6a36891380457a777b6f473 From 237dc42544fb0fa7a730fdf6d925554810302bf1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 30 Dec 2019 17:13:28 -0700 Subject: [PATCH 0738/3180] Use tar instead of git for GCC --- recipes/gcc/recipe.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index b325b329..5c7d863a 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -1,6 +1,7 @@ -GIT=https://gitlab.redox-os.org/redox-os/gcc.git -GIT_UPSTREAM=https://gcc.gnu.org/git/gcc.git -BRANCH=redox +TAR=https://gitlab.redox-os.org/redox-os/gcc/-/archive/redox/gcc-redox.tar.gz +#GIT=https://gitlab.redox-os.org/redox-os/gcc.git +#GIT_UPSTREAM=https://gcc.gnu.org/git/gcc.git +#BRANCH=redox BUILD_DEPENDS=(relibc) DEPENDS="gnu-binutils relibc" From 798c96e32118b96be6ad1557c87b72acb276d207 Mon Sep 17 00:00:00 2001 From: samuela Date: Wed, 8 Jan 2020 18:48:14 +0000 Subject: [PATCH 0739/3180] `cp -r` is deprecated on BSD/macOS. `cp -R` instead. --- recipes/ca-certificates/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/ca-certificates/recipe.sh b/recipes/ca-certificates/recipe.sh index 3f81b9ca..09e56fdf 100644 --- a/recipes/ca-certificates/recipe.sh +++ b/recipes/ca-certificates/recipe.sh @@ -40,6 +40,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" mkdir -p "$1/ssl" - cp -rL build/etc/ssl/certs "$1/ssl" + cp -RL build/etc/ssl/certs "$1/ssl" skip=1 } From c047c8797d80cb71a2c44d279cdb6b17d5ace882 Mon Sep 17 00:00:00 2001 From: samuela Date: Wed, 8 Jan 2020 19:21:41 +0000 Subject: [PATCH 0740/3180] Fix sed call to work on macOS. --- recipes/dash/recipe.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/recipes/dash/recipe.sh b/recipes/dash/recipe.sh index 725a93e7..a0974a6b 100644 --- a/recipes/dash/recipe.sh +++ b/recipes/dash/recipe.sh @@ -19,7 +19,9 @@ function recipe_build { --prefix=/ \ --enable-static \ cross_compiling=yes - sed -i 's|#define HAVE_GETRLIMIT 1|/* #undef HAVE_GETRLIMIT */|g' config.h + + # See https://stackoverflow.com/questions/4247068/sed-command-with-i-option-failing-on-mac-but-works-on-linux. + sed -i'' -e 's|#define HAVE_GETRLIMIT 1|/* #undef HAVE_GETRLIMIT */|g' config.h make -j"$(nproc)" skip=1 } From 8e10e1504d03518c22741475bb3160115c531ba8 Mon Sep 17 00:00:00 2001 From: samuela Date: Wed, 8 Jan 2020 19:44:24 +0000 Subject: [PATCH 0741/3180] Workaround for homebrew gettext when building xz. --- recipes/xz/recipe.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/recipes/xz/recipe.sh b/recipes/xz/recipe.sh index 8e483f20..1d86fb00 100644 --- a/recipes/xz/recipe.sh +++ b/recipes/xz/recipe.sh @@ -14,7 +14,12 @@ function recipe_update { function recipe_build { export CFLAGS="-static" - ./autogen.sh + # autogen.sh requires autopoint which is provided by the gettext homebrew + # formula on macOS. Unfortunately, homebrew does not install it into PATH + # because macOS provides the BSD gettext library. So we make sure to include + # it in PATH. + PATH="/usr/local/opt/gettext/bin:$PATH" ./autogen.sh + chmod +w build-aux/config.sub wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure \ From 729773dbb9243ac3179aa3803e182285b1f96db3 Mon Sep 17 00:00:00 2001 From: samuela Date: Wed, 8 Jan 2020 20:43:46 +0000 Subject: [PATCH 0742/3180] Make sure we're cross-compiling zlib. --- recipes/zlib/recipe.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/zlib/recipe.sh b/recipes/zlib/recipe.sh index 0a294e31..bbe7bd1a 100644 --- a/recipes/zlib/recipe.sh +++ b/recipes/zlib/recipe.sh @@ -12,7 +12,8 @@ function recipe_update { } function recipe_build { - ./configure --static --prefix=/ + # See https://stackoverflow.com/questions/21396988/zlib-build-not-configuring-properly-with-cross-compiler-ignores-ar. + CHOST=x86_64-unknown-redox ./configure --static --prefix=/ make -j"$(nproc)" skip=1 } From c52f8595ef9398e3e0364edb31f6a772e1120aec Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Sun, 12 Jan 2020 17:04:14 +0100 Subject: [PATCH 0743/3180] Enable OGG Vorbis in SDL2_mixer --- recipes/sdl2_mixer/recipe.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/sdl2_mixer/recipe.sh b/recipes/sdl2_mixer/recipe.sh index ad54075b..d282e05d 100644 --- a/recipes/sdl2_mixer/recipe.sh +++ b/recipes/sdl2_mixer/recipe.sh @@ -1,6 +1,6 @@ VERSION=2.0.4 TAR=https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-$VERSION.tar.gz -BUILD_DEPENDS=(sdl2 liborbital llvm mesa mesa_glu zlib) +BUILD_DEPENDS=(sdl2 liborbital llvm mesa mesa_glu zlib libogg libvorbis) function recipe_version { echo "$VERSION" @@ -16,7 +16,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" - export SDL_LIBS="-lSDL2 -lorbital $("${PKG_CONFIG}" --libs glu) -lglapi -lz -lm -lpthread -lstdc++" + export SDL_LIBS="-lSDL2 -lorbital $("${PKG_CONFIG}" --libs glu) -lglapi -lvorbis -logg -lz -lm -lpthread -lstdc++" ./autogen.sh ./configure \ --prefix=/ \ @@ -24,6 +24,7 @@ function recipe_build { --host=${HOST} \ --disable-shared \ --disable-sdltest \ + --enable-music-ogg \ --disable-music-cmd \ --disable-music-mp3 \ --disable-smpegtest \ From de09a8e06242219238db4856cca7f80738b4363c Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Sun, 12 Jan 2020 17:24:30 +0100 Subject: [PATCH 0744/3180] Add vvvvvv recipe --- recipes/vvvvvv/recipe.sh | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 recipes/vvvvvv/recipe.sh diff --git a/recipes/vvvvvv/recipe.sh b/recipes/vvvvvv/recipe.sh new file mode 100644 index 00000000..2fe0e19d --- /dev/null +++ b/recipes/vvvvvv/recipe.sh @@ -0,0 +1,38 @@ +VERSION=2.0 +GIT=https://github.com/xTibor/VVVVVV +BRANCH=redox +GIT_UPSTREAM=https://github.com/TerryCavanagh/VVVVVV +BUILD_DEPENDS=(sdl2_image sdl2_mixer sdl2 liborbital mesa mesa_glu zlib llvm libogg libvorbis) + +function recipe_version { + printf "1.0.0" + skip=1 +} + +function recipe_build { + sysroot="$(realpath ../sysroot)" + cd desktop_version + + cmake \ + -DCMAKE_INSTALL_PREFIX:PATH=/ \ + -DBUILD_STATIC=ON \ + -DBUILD_SHARED=OFF \ + -DSDL2_INCLUDE_DIRS="$sysroot/include/SDL2" \ + -DSDL2_LIBRARIES="-static -lSDL2main -lSDL2_mixer -lSDL2 $("${PKG_CONFIG}" --libs glu) -lglapi -lorbital -lz -lvorbisfile -lvorbis -logg" \ + . + + make -j"$(nproc)" + skip=1 +} + +function recipe_clean { + echo "skipping clean" + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + mkdir -pv "$1/games/vvvvvv" + cp ./desktop_version/VVVVVV "$1/games/vvvvvv" + skip=1 +} From b3d66183e8e7107a2a1c30037b154198e8e67185 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 12 Jan 2020 13:36:51 -0700 Subject: [PATCH 0745/3180] Update patches/time and pkgutils --- patches/time | 2 +- pkgutils | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/patches/time b/patches/time index fc118e57..726efec5 160000 --- a/patches/time +++ b/patches/time @@ -1 +1 @@ -Subproject commit fc118e5752aaac833808a25f0850606b675b32ec +Subproject commit 726efec5f1c47ef89ab740335439ff4fda047f8f diff --git a/pkgutils b/pkgutils index 7b0095c1..7d0755bc 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit 7b0095c1eb4975f09a335e093e228b28ad9ff365 +Subproject commit 7d0755bc5297e8600891263c0c7479fbfa9931dc From b16fe2e832595fa450b2f85e49e187d3facf3607 Mon Sep 17 00:00:00 2001 From: samuela Date: Mon, 20 Jan 2020 17:52:18 +0000 Subject: [PATCH 0746/3180] Only change the path when on macOS --- recipes/xz/recipe.sh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/recipes/xz/recipe.sh b/recipes/xz/recipe.sh index 1d86fb00..b82f8240 100644 --- a/recipes/xz/recipe.sh +++ b/recipes/xz/recipe.sh @@ -13,12 +13,16 @@ function recipe_update { function recipe_build { export CFLAGS="-static" - + # autogen.sh requires autopoint which is provided by the gettext homebrew # formula on macOS. Unfortunately, homebrew does not install it into PATH # because macOS provides the BSD gettext library. So we make sure to include - # it in PATH. - PATH="/usr/local/opt/gettext/bin:$PATH" ./autogen.sh + # it in PATH, preceding the default BSD version. + if [[ "$(uname)" == "Darwin" ]]; then + export PATH="/usr/local/opt/gettext/bin:$PATH" + fi + + ./autogen.sh chmod +w build-aux/config.sub wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub From 95d78f85e517c240b9d0400cbd39ad1025707614 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 21 Jan 2020 17:23:43 -0700 Subject: [PATCH 0747/3180] Update nix --- patches/nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/nix b/patches/nix index cc0d9fc9..64b3ea0f 160000 --- a/patches/nix +++ b/patches/nix @@ -1 +1 @@ -Subproject commit cc0d9fc97166be62c6a36891380457a777b6f473 +Subproject commit 64b3ea0fb108b9933766fd7e049e2c320636b972 From 673e8ec4701fa3870c31c50687dd26b3d582a4e7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 25 Jan 2020 18:52:46 -0700 Subject: [PATCH 0748/3180] Update vim --- recipes/vim/recipe.sh | 11 ++- recipes/vim/vim.patch | 224 +++--------------------------------------- 2 files changed, 18 insertions(+), 217 deletions(-) diff --git a/recipes/vim/recipe.sh b/recipes/vim/recipe.sh index a6e662ea..c4f9ae03 100644 --- a/recipes/vim/recipe.sh +++ b/recipes/vim/recipe.sh @@ -1,4 +1,4 @@ -VERSION=8.0.586 +VERSION=8.2 TAR=http://ftp.vim.org/vim/unix/vim-$VERSION.tar.bz2 BUILD_DEPENDS=(ncurses) DEPENDS="terminfo" @@ -17,11 +17,12 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib -static" export CPPFLAGS="-I$sysroot/include" - export vim_cv_toupper_broken=set - export vim_cv_terminfo=no + export vim_cv_toupper_broken=no + export vim_cv_tgetent=zero + export vim_cv_terminfo=yes export vim_cv_tty_group=world - export vim_cv_getcwd_broken=yes - export vim_cv_stat_ignores_slash=no + export vim_cv_getcwd_broken=no + export vim_cv_stat_ignores_slash=yes export vim_cv_memmove_handles_overlap=yes ./configure --build=${BUILD} --host=${HOST} --prefix=/ --with-tlib=ncurses make -j"$(nproc)" diff --git a/recipes/vim/vim.patch b/recipes/vim/vim.patch index a88aab2f..ac027c7f 100644 --- a/recipes/vim/vim.patch +++ b/recipes/vim/vim.patch @@ -1,212 +1,12 @@ -diff -ru source/src/channel.c source-new/src/channel.c ---- source/src/channel.c 2017-04-07 04:57:11.000000000 -0700 -+++ source-new/src/channel.c 2017-11-04 14:36:18.494841805 -0700 -@@ -852,27 +852,29 @@ - * actually able to connect. - * We detect a failure to connect when either read and write fds - * are set. Use getsockopt() to find out what kind of failure. */ -- if (FD_ISSET(sd, &rfds) || FD_ISSET(sd, &wfds)) -- { -- ret = getsockopt(sd, -- SOL_SOCKET, SO_ERROR, &so_error, &so_error_len); -- if (ret < 0 || (so_error != 0 -- && so_error != EWOULDBLOCK -- && so_error != ECONNREFUSED --# ifdef EINPROGRESS -- && so_error != EINPROGRESS --# endif -- )) -- { -- ch_errorn(channel, -- "channel_open: Connect failed with errno %d", -- so_error); -- PERROR(_(e_cannot_connect)); -- sock_close(sd); -- channel_free(channel); -- return NULL; -- } -- } -+/* -+ * if (FD_ISSET(sd, &rfds) || FD_ISSET(sd, &wfds)) -+ * { -+ * ret = getsockopt(sd, -+ * SOL_SOCKET, SO_ERROR, &so_error, &so_error_len); -+ * if (ret < 0 || (so_error != 0 -+ * && so_error != EWOULDBLOCK -+ * && so_error != ECONNREFUSED -+ *# ifdef EINPROGRESS -+ * && so_error != EINPROGRESS -+ *# endif -+ * )) -+ * { -+ * ch_errorn(channel, -+ * "channel_open: Connect failed with errno %d", -+ * so_error); -+ * PERROR(_(e_cannot_connect)); -+ * sock_close(sd); -+ * channel_free(channel); -+ * return NULL; -+ * } -+ * } -+ */ - - if (FD_ISSET(sd, &wfds) && so_error == 0) - /* Did not detect an error, connection is established. */ -diff -ru source/src/memfile.c source-new/src/memfile.c ---- source/src/memfile.c 2016-11-10 09:24:37.000000000 -0800 -+++ source-new/src/memfile.c 2017-11-04 14:36:18.494841805 -0700 -@@ -596,88 +596,88 @@ - if (hp == NULL || status == FAIL) - mfp->mf_dirty = FALSE; - -- if ((flags & MFS_FLUSH) && *p_sws != NUL) -- { --#if defined(UNIX) --# ifdef HAVE_FSYNC -+/* if ((flags & MFS_FLUSH) && *p_sws != NUL)*/ -+ /*{*/ -+/*#if defined(UNIX)*/ -+/*# ifdef HAVE_FSYNC*/ - /* - * most Unixes have the very useful fsync() function, just what we need. - */ -- if (STRCMP(p_sws, "fsync") == 0) -- { -- if (fsync(mfp->mf_fd)) -- status = FAIL; -- } -- else --# endif -- /* OpenNT is strictly POSIX (Benzinger) */ -- /* Tandem/Himalaya NSK-OSS doesn't have sync() */ -- /* No sync() on Stratus VOS */ --# if defined(__OPENNT) || defined(__TANDEM) || defined(__VOS__) -- fflush(NULL); --# else -- sync(); --# endif --#endif --#ifdef VMS -- if (STRCMP(p_sws, "fsync") == 0) -- { -- if (fsync(mfp->mf_fd)) -- status = FAIL; -- } --#endif --#ifdef SYNC_DUP_CLOSE -+ /*if (STRCMP(p_sws, "fsync") == 0)*/ -+ /*{*/ -+ /*if (fsync(mfp->mf_fd))*/ -+ /*status = FAIL;*/ -+ /*}*/ -+ /*else*/ -+/*# endif*/ -+ /*[> OpenNT is strictly POSIX (Benzinger) <]*/ -+ /*[> Tandem/Himalaya NSK-OSS doesn't have sync() <]*/ -+ /*[> No sync() on Stratus VOS <]*/ -+/*# if defined(__OPENNT) || defined(__TANDEM) || defined(__VOS__)*/ -+ /*fflush(NULL);*/ -+/*# else*/ -+ /*//sync();*/ -+/*# endif*/ -+/*#endif*/ -+/*#ifdef VMS*/ -+ /*if (STRCMP(p_sws, "fsync") == 0)*/ -+ /*{*/ -+ /*if (fsync(mfp->mf_fd))*/ -+ /*status = FAIL;*/ -+ /*}*/ -+/*#endif*/ -+/*#ifdef SYNC_DUP_CLOSE*/ - /* - * Win32 is a bit more work: Duplicate the file handle and close it. - * This should flush the file to disk. - */ -- if ((fd = dup(mfp->mf_fd)) >= 0) -- close(fd); --#endif --#ifdef AMIGA --# if defined(__AROS__) || defined(__amigaos4__) -- if (fsync(mfp->mf_fd) != 0) -- status = FAIL; --# else -+ /*if ((fd = dup(mfp->mf_fd)) >= 0)*/ -+ /*close(fd);*/ -+/*#endif*/ -+/*#ifdef AMIGA*/ -+/*# if defined(__AROS__) || defined(__amigaos4__)*/ -+ /*if (fsync(mfp->mf_fd) != 0)*/ -+ /*status = FAIL;*/ -+/*# else*/ - /* - * Flush() only exists for AmigaDos 2.0. - * For 1.3 it should be done with close() + open(), but then the risk - * is that the open() may fail and lose the file.... - */ --# ifdef FEAT_ARP -- if (dos2) --# endif --# ifdef SASC -- { -- struct UFB *fp = chkufb(mfp->mf_fd); -+/*# ifdef FEAT_ARP*/ -+ /*if (dos2)*/ -+/*# endif*/ -+/*# ifdef SASC*/ -+ /*{*/ -+ /*struct UFB *fp = chkufb(mfp->mf_fd);*/ - -- if (fp != NULL) -- Flush(fp->ufbfh); -- } --# else --# if defined(_DCC) || defined(__GNUC__) || defined(__MORPHOS__) -- { --# if defined(__GNUC__) && !defined(__MORPHOS__) && defined(__libnix__) -+ /*if (fp != NULL)*/ -+ /*Flush(fp->ufbfh);*/ -+ /*}*/ -+/*# else*/ -+/*# if defined(_DCC) || defined(__GNUC__) || defined(__MORPHOS__)*/ -+ /*{*/ -+/*# if defined(__GNUC__) && !defined(__MORPHOS__) && defined(__libnix__)*/ - /* Have function (in libnix at least), - * but ain't got no prototype anywhere. */ -- extern unsigned long fdtofh(int filedescriptor); --# endif --# if !defined(__libnix__) -- fflush(NULL); --# else -- BPTR fh = (BPTR)fdtofh(mfp->mf_fd); -+ /*extern unsigned long fdtofh(int filedescriptor);*/ -+/*# endif*/ -+/*# if !defined(__libnix__)*/ -+ /*fflush(NULL);*/ -+/*# else*/ -+ /*BPTR fh = (BPTR)fdtofh(mfp->mf_fd);*/ - -- if (fh != 0) -- Flush(fh); --# endif -- } --# else /* assume Manx */ -- Flush(_devtab[mfp->mf_fd].fd); --# endif --# endif --# endif --#endif /* AMIGA */ -- } -+ /*if (fh != 0)*/ -+ /*Flush(fh);*/ -+/*# endif*/ -+ /*}*/ -+/*# else [> assume Manx <]*/ -+ /*Flush(_devtab[mfp->mf_fd].fd);*/ -+/*# endif*/ -+/*# endif*/ -+/*# endif*/ -+/*#endif [> AMIGA <]*/ -+ /*}*/ - - got_int |= got_int_save; - +diff -ruwN source/src/memfile.c source-new/src/memfile.c +--- source/src/memfile.c 2016-11-10 10:24:37.000000000 -0700 ++++ source-new/src/memfile.c 2020-01-25 18:19:55.524324451 -0700 +@@ -615,6 +615,8 @@ + /* No sync() on Stratus VOS */ + # if defined(__OPENNT) || defined(__TANDEM) || defined(__VOS__) + fflush(NULL); ++# elif defined(__redox__) ++ fsync(mfp->mf_fd); + # else + sync(); + # endif From d03ce565865603fa36a6359be5d3f178732f409d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 26 Jan 2020 19:18:08 -0700 Subject: [PATCH 0749/3180] Fix cmatrix --- recipes/cmatrix/recipe.sh | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/recipes/cmatrix/recipe.sh b/recipes/cmatrix/recipe.sh index fc1ce368..3f2b89a6 100644 --- a/recipes/cmatrix/recipe.sh +++ b/recipes/cmatrix/recipe.sh @@ -14,10 +14,15 @@ function recipe_update { function recipe_build { sysroot="$(realpath ../sysroot)" - export LDFLAGS="-L$sysroot/lib" + export LDFLAGS="-L$sysroot/lib -static" export CPPFLAGS="-I$sysroot/include -I$sysroot/include/ncurses" autoreconf -i - ./configure --build=${BUILD} --host=${HOST} --prefix=/ --without-fonts + ./configure \ + --build=${BUILD} \ + --host=${HOST} \ + --prefix=/ \ + --without-fonts + sed -i'' -e 's|#define USE_TIOCSTI 1|/* #undef USE_TIOCSTI */|g' config.h make -j"$(nproc)" skip=1 } From 8ffed3684205d623a1751558e887fc20599cc4ca Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 31 Jan 2020 15:32:55 -0700 Subject: [PATCH 0750/3180] Fix ca-certificates --- recipes/ca-certificates/make-ca.sh | 732 +++++++++++++++++++++++ recipes/ca-certificates/make-ca.sh.patch | 30 - recipes/ca-certificates/recipe.sh | 7 +- 3 files changed, 737 insertions(+), 32 deletions(-) create mode 100644 recipes/ca-certificates/make-ca.sh delete mode 100644 recipes/ca-certificates/make-ca.sh.patch diff --git a/recipes/ca-certificates/make-ca.sh b/recipes/ca-certificates/make-ca.sh new file mode 100644 index 00000000..5150fc0c --- /dev/null +++ b/recipes/ca-certificates/make-ca.sh @@ -0,0 +1,732 @@ +#!/usr/bin/env bash +# Begin /usr/sbin/make-ca.sh +# +# Script to create OpenSSL certs directory, GnuTLS certificate bundle, NSS +# shared DB, and Java cacerts from upstream certdata.txt and local sources +# +# Authors: DJ Lucas +# Bruce Dubbs +# +# Changes: +# +# 20170425 - Use p11-kit format anchors +# - Add CKA_NSS_MOZILLA_CA_POLICY attribute for p11-kit anchors +# - Add clientAuth OpenSSL attribute and (currently unused) NSS +# CKA_TRUST_CLIENT_AUTH +# 20170119 - Show trust bits on local certs +# - Add version output for help2man +# 20161210 - Add note about --force swich when same version +# 20161126 - Add -D/--destdir switch +# 20161124 - Add -f/--force switch to bypass version check +# - Add multiple switches to allow for alternate localtions +# - Add help text +# 20161118 - Drop make-cert.pl script +# - Add support for Java and NSSDB + +# Set defaults +VERSION="20170425" +CERTDATA="certdata.txt" +PKIDIR="/etc/pki" +SSLDIR="/etc/ssl" +CERTUTIL="certutil" +KEYTOOL="keytool" +OPENSSL="openssl" +ANCHORDIR="${PKIDIR}/anchors" +CABUNDLE="${SSLDIR}/ca-bundle.crt" +CERTDIR="${SSLDIR}/certs" +KEYSTORE="${SSLDIR}/java/cacerts" +NSSDB="${PKIDIR}/nssdb" +LOCALDIR="${SSLDIR}/local" +DESTDIR="" + +# Some data in the certs have UTF-8 characters +export LANG=en_US.utf8 + +TEMPDIR=$(mktemp -d) +WORKDIR="${TEMPDIR}/work" +WITH_NSS=1 +WITH_JAVA=1 +FORCE=0 + +function get_args(){ + while test -n "${1}" ; do + case "${1}" in + -C | --certdata) + check_arg $1 $2 + CERTDATA="${2}" + shift 2 + ;; + -D | --destdir) + check_arg $1 $2 + DESTDIR="${2}" + shift 2 + ;; + -P | --pkidir) + check_arg $1 $2 + PKIDIR="${2}" + ANCHORDIR="${PKIDIR}/anchors" + NSSDB="${PKIDIR}/nssdb" + echo "${@}" | grep -e "-a " -e "--anchordir" \ + -e "-n " -e "--nssdb" > /dev/null + if test "${?}" == "0"; then + echo "Error! ${1} cannot be used with the -a/--anchordir or -n/--nssdb switches." + echo "" + exit 3 + fi + shift 2 + ;; + -S | --ssldir) + check_arg $1 $2 + SSLDIR="${2}" + CABUNDLE="${SSLDIR}/ca-bundle.crt" + CERTDIR="${SSLDIR}/certs" + KEYSTORE="${SSLDIR}/java/cacerts" + LOCALDIR="${SSLDIR}/local" + echo "${@}" | grep -e "-c " -e "--cafile" \ + -e "-d " -e "--cadir" \ + -e "-j " -e "--javacerts" > /dev/null + if test "${?}" == "0"; then + echo "Error! ${1} cannot be used with the -c/--cafile, -d/--cadir, or" + echo "-j/--javacerts switches." + echo "" + exit 3 + fi + + shift 2 + ;; + -a | --anchordir) + check_arg $1 $2 + ANCHORDIR="${2}" + echo "${@}" | grep -e "-P " -e "--pkidir" > /dev/null + if test "${?}" == "0"; then + echo "Error! ${1} cannot be used with the -P/--pkidir switch." + echo "" + exit 3 + fi + shift 2 + ;; + -c | --cafile) + check_arg $1 $2 + CABUNDLE="${2}" + echo "${@}" | grep -e "-S " -e "--ssldir" > /dev/null + if test "${?}" == "0"; then + echo "Error! ${1} cannot be used with the -S/--ssldir switch." + echo "" + exit 3 + fi + shift 2 + ;; + -d | --cadir) + check_arg $1 $2 + CADIR="${2}" + if test "${?}" == "0"; then + echo "Error! ${1} cannot be used with the -S/--ssldir switch." + echo "" + exit 3 + fi + shift 2 + ;; + -j | --javacerts) + check_arg $1 $2 + KEYSTORE="${2}" + if test "${?}" == "0"; then + echo "Error! ${1} cannot be used with the -S/--ssldir switch." + echo "" + exit 3 + fi + shift 2 + ;; + -l | --localdir) + check_arg $1 $2 + LOCALDIR="${2}" + shift 2 + ;; + -n | --nssdb) + check_arg $1 $2 + NSSDB="${2}" + echo "${@}" | grep -e "-P " -e "--pkidir" > /dev/null + if test "${?}" == "0"; then + echo "Error! ${1} cannot be used with the -P/--pkidir switch." + echo "" + exit 3 + fi + shift 2 + ;; + -k | --keytool) + check_arg $1 $2 + KEYTOOL="${2}" + shift 2 + ;; + -s | --openssl) + check_arg $1 $2 + OPENSSL="${2}" + shift 2 + ;; + -t | --certutil) + check_arg $1 $2 + CERTUTIL="${2}" + shift 2 + ;; + -f | --force) + FORCE="1" + shift 1 + ;; + -h | --help) + showhelp + exit 0 + ;; + -v | --version) + echo -e "$(basename ${0}) ${VERSION}\n" + exit 0 + ;; + *) + showhelp + exit 1 + ;; + esac + done +} + +function check_arg(){ + echo "${2}" | grep -v "^-" > /dev/null + if [ -z "$?" -o ! -n "$2" ]; then + echo "Error: $1 requires a valid argument." + exit 1 + fi +} + +function showhelp(){ + echo "" + echo "`basename ${0}` converts certdata.txt (provided by the Mozilla Foundation)" + echo "into a complete PKI distribution for use with LFS or like distributions." + echo "" + echo " -C --certdata The certdata.txt file (provided by Mozilla)" + echo " Default: ./certdata.txt" + echo "" + echo " -D --destdir Change the output directory and use relative" + echo " paths for all other values." + echo " Default: unset" + echo "" + echo " -P --pkidir The output PKI directory - Cannot be used with" + echo " the -a/--anchordir or -n/--nssdb switches" + echo " Default: /etc/pki" + echo "" + echo " -S --ssldir The output SSL root direcotry - Cannot be used" + echo " with the -c/--cafile, -d/--cadir, or" + echo " -j/--javacerts switches" + echo " Defualt: /etc/ssl" + echo "" + echo " -a --anchordir The output directory for OpenSSL trusted" + echo " CA certificates used as trust anchors." + echo " Default: \$PKIDIR/anchors" + echo "" + echo " -c --cafile The output filename for the PEM formated bundle" + echo " Default: \$SSLDIR/ca-bundle.crt" + echo "" + echo " -d --cadir The output directory for the OpenSSL trusted" + echo " CA certificates" + echo " Deault: \$SSLDIR/certs/" + echo "" + echo " -j --javacerts The output path for the Java cacerts file" + echo " Default: \$SSLDIR/java/cacerts" + echo "" + echo " -l --localdir The path to a local set of OpenSSL trusted" + echo " certificates to include in the output" + echo " Default: \$SSLDIR/local" + echo "" + echo " -n --nssdb The output path for the shared NSS DB" + echo " Default: \$PKIDIR/nssdb" + echo "" + echo " -k --keytool The path to the java keytool utility" + echo "" + echo " -s --openssl The path to the openssl utility" + echo "" + echo " -t --certutil The path the certutil utility" + echo "" + echo " -f --force Force run, even if source is not newer" + echo "" + echo " -h --help Show this help message and exit" + echo "" + echo " -v --version Show version information and exit" + echo "" + echo "Example: `basename ${0}` -f -C ~/certdata.txt" + echo "" +} + +# Convert CKA_TRUST values to trust flags for certutil +function convert_trust(){ + case $1 in + CKT_NSS_TRUSTED_DELEGATOR) + echo "C" + ;; + CKT_NSS_NOT_TRUSTED) + echo "p" + ;; + CKT_NSS_MUST_VERIFY_TRUST) + echo "" + ;; + esac +} + +function convert_trust_arg(){ + case $1 in + C) + case $2 in + sa) + echo "-addtrust serverAuth" + ;; + sm) + echo "-addtrust emailProtection" + ;; + cs) + echo "-addtrust codeSigning" + ;; + ca) + echo "-addtrust clientAuth" + ;; + esac + ;; + p) + case $2 in + sa) + echo "-addreject serverAuth" + ;; + sm) + echo "-addreject emailProtection" + ;; + cs) + echo "-addreject codeSigning" + ;; + ca) + echo "-addreject clientAuth" + ;; + esac + ;; + *) + echo "" + ;; + esac +} + +# Define p11-kit ext value constants (see p11-kit API documentation) +get-p11-val() { + case $1 in + p11sasmcs) + p11value="0%2a%06%03U%1d%25%01%01%ff%04 0%1e%06%08%2b%06%01%05%05%07%03%04%06%08%2b%06%01%05%05%07%03%01%06%08%2b%06%01%05%05%07%03%03" + ;; + + p11sasm) + p11value="0 %06%03U%1d%25%01%01%ff%04%160%14%06%08%2b%06%01%05%05%07%03%04%06%08%2b%06%01%05%05%07%03%01" + ;; + + p11sacs) + p11value="0 %06%03U%1d%25%01%01%ff%04%160%14%06%08%2b%06%01%05%05%07%03%01%06%08%2b%06%01%05%05%07%03%03" + ;; + + p11sa) + p11value="0%16%06%03U%1d%25%01%01%ff%04%0c0%0a%06%08%2b%06%01%05%05%07%03%01" + ;; + + p11smcs) + p11value="0 %06%03U%1d%25%01%01%ff%04%160%14%06%08%2b%06%01%05%05%07%03%04%06%08%2b%06%01%05%05%07%03%03" + ;; + + p11sm) + p11value="0%16%06%03U%1d%25%01%01%ff%04%0c0%0a%06%08%2b%06%01%05%05%07%03%04" + ;; + + p11cs) + p11value="0%16%06%03U%1d%25%01%01%ff%04%0c0%0a%06%08%2b%06%01%05%05%07%03%03" + ;; + + p11) + p11value="0%18%06%03U%1d%25%01%01%ff%04%0e0%0c%06%0a%2b%06%01%04%01%99w%06%0a%10" + ;; + esac +} + +# Process command line arguments +get_args $@ + +if test ! -r "${CERTDATA}"; then + echo "${CERTDATA} was not found. The certdata.txt file must be in the local" + echo "directory, or speficied with the --certdata switch." + exit 1 +fi + +test -f "${CERTUTIL}" || WITH_NSS=0 +test -f "${KEYTOOL}" || WITH_JAVA=0 + +VERSION=$(grep CVS_ID "${CERTDATA}" | cut -d " " -f 8) + +if test "${VERSION}x" == "x"; then + echo "WARNING! ${CERTDATA} has no 'Revision' in CVS_ID" + echo "Will run conversion unconditionally." + sleep 2 + VERSION="$(date -u +%Y%m%d-%H%M)" +else + if test "${FORCE}" == "1"; then + echo "Output forced. Will run conversion unconditionally." + sleep 2 + elif test "${DESTDIR}x" == "x"; then + test -f "${CABUNDLE}" && + OLDVERSION=$(grep "^VERSION:" "${CABUNDLE}" | cut -d ":" -f 2) + fi +fi + +if test "${OLDVERSION}x" == "${VERSION}x"; then + echo "No update required! Use --force to update anyway." + exit 0 +fi + +mkdir -p "${TEMPDIR}"/{certs,ssl/{certs,java},pki/{nssdb,anchors},work} +cp "${CERTDATA}" "${WORKDIR}/certdata.txt" +pushd "${WORKDIR}" > /dev/null + +if test "${WITH_NSS}" == "1"; then + # Create a blank NSS DB + "${CERTUTIL}" -N --empty-password -d "sql:${TEMPDIR}/pki/nssdb" +fi + +# Get a list of starting lines for each cert +CERTBEGINLIST=`grep -n "^# Certificate" "${WORKDIR}/certdata.txt" | \ + cut -d ":" -f1` + +# Dump individual certs to temp file +for certbegin in ${CERTBEGINLIST}; do + awk "NR==$certbegin,/^CKA_TRUST_STEP_UP_APPROVED/" "${WORKDIR}/certdata.txt" \ + > "${TEMPDIR}/certs/${certbegin}.tmp" +done + +unset CERTBEGINLIST certbegin + +for tempfile in ${TEMPDIR}/certs/*.tmp; do + # Get a name for the cert + certname="$(grep "^# Certificate" "${tempfile}" | cut -d '"' -f 2)" + + # Determine certificate trust values for SSL/TLS, S/MIME, and Code Signing + satrust="$(convert_trust `grep '^CKA_TRUST_SERVER_AUTH' ${tempfile} | \ + cut -d " " -f 3`)" + smtrust="$(convert_trust `grep '^CKA_TRUST_EMAIL_PROTECTION' ${tempfile} | \ + cut -d " " -f 3`)" + cstrust="$(convert_trust `grep '^CKA_TRUST_CODE_SIGNING' ${tempfile} | \ + cut -d " " -f 3`)" + # Not currently included in NSS certdata.txt + #catrust="$(convert_trust `grep '^CKA_TRUST_CLIENT_AUTH' ${tempfile} | \ + # cut -d " " -f 3`)" + + # Get args for OpenSSL trust settings + saarg="$(convert_trust_arg "${satrust}" sa)" + smarg="$(convert_trust_arg "${smtrust}" sm)" + csarg="$(convert_trust_arg "${cstrust}" cs)" + # Not currently included in NSS certdata.txt + #caarg="$(convert_trust_arg "${catrust}" ca)" + + # Convert to a PEM formated certificate + printf $(awk '/^CKA_VALUE/{flag=1;next}/^END/{flag=0}flag{printf $0}' \ + "${tempfile}") | "${OPENSSL}" x509 -text -inform DER -fingerprint \ + > tempfile.crt + + # Get individual values for certificates + certkey="$(${OPENSSL} x509 -in tempfile.crt -noout -pubkey)" + certcer="$(${OPENSSL} x509 -in tempfile.crt)" + certtxt="$(${OPENSSL} x509 -in tempfile.crt -noout -text)" + + # Get p11-kit label, oid, and values + p11label="$(grep -m1 "Issuer" ${tempfile} | grep -o CN=.*$ | \ + cut -d ',' -f 1 | sed 's@CN=@@')" + + # if distrusted at all, x-distrusted + if test "${satrust}" == "p" -o "${smtrust}" == "p" -o "${cstrust}" == "p" + then + # if any distrusted, x-distrusted + p11trust="x-distrusted: true" + p11oid="1.3.6.1.4.1.3319.6.10.1" + p11value="0.%06%0a%2b%06%01%04%01%99w%06%0a%01%04 0%1e%06%08%2b%06%01%05%05%07%03%04%06%08%2b%06%01%05%05%07%03%01%06%08%2b%06%01%05%05%07%03%03" + else + p11trust="trusted: true" + p11oid="2.5.29.37" + trustp11="p11" + if test "${satrust}" == "C"; then + trustp11="${trustp11}sa" + fi + if test "${smtrust}" == "C"; then + trustp11="${trustp11}sm" + fi + if test "${cstrust}" == "C"; then + trustp11="${trustp11}cs" + fi + get-p11-val "${trustp11}" + fi + + # Get a hash for the cert + keyhash=$("${OPENSSL}" x509 -noout -in tempfile.crt -hash) + + # Print information about cert + echo "Certificate: ${certname}" + echo "Keyhash: ${keyhash}" + + # Place certificate into trust anchors dir + anchorfile="${TEMPDIR}/pki/anchors/${keyhash}.pem" + echo "[p11-kit-object-v1]" >> "${anchorfile}" + echo "label: \"${p11label}\"" >> "${anchorfile}" + echo "class: x-certificate-extension" >> "${anchorfile}" + echo "object-id: ${p11oid}" >> "${anchorfile}" + echo "value: \"${p11value}\"" >> "${anchorfile}" + echo "modifiable: false" >> "${anchorfile}" + echo "${certkey}" >> "${anchorfile}" + echo "" >> "${anchorfile}" + echo "[p11-kit-object-v1]" >> "${anchorfile}" + echo "label: \"${p11label}\"" >> "${anchorfile}" + echo "${p11trust}" >> "${anchorfile}" + echo "nss-mozilla-ca-policy: true" >> "${anchorfile}" + echo "modifiable: false" >> "${anchorfile}" + echo "${certcer}" >> "${anchorfile}" + echo "${certtxt}" | sed 's@^@#@' >> "${anchorfile}" + echo "Added to p11-kit anchor directory with trust '${satrust},${smtrust},${cstrust}'." + + + # Import certificates trusted for SSL/TLS into the Java keystore and + # GnuTLS certificate bundle + if test "${satrust}x" == "Cx"; then + # Java keystore + if test "${WITH_JAVA}" == "1"; then + "${KEYTOOL}" -import -noprompt -alias "${certname}" \ + -keystore "${TEMPDIR}/ssl/java/cacerts" \ + -storepass 'changeit' -file tempfile.crt \ + 2>&1> /dev/null | \ + sed -e 's@Certificate was a@A@' -e 's@keystore@Java keystore.@' + fi + + # GnuTLS certificate bundle + cat tempfile.crt >> "${TEMPDIR}/ssl/ca-bundle.crt.tmp" + echo "Added to GnuTLS ceritificate bundle." + fi + + # Import certificate into the temporary certificate directory with + # trust arguments + "${OPENSSL}" x509 -in tempfile.crt -text -fingerprint \ + -setalias "${certname}" ${saarg} ${smarg} ${csarg} \ + > "${TEMPDIR}/ssl/certs/${keyhash}.pem" + echo "Added to OpenSSL certificate directory with trust '${satrust},${smtrust},${cstrust}'." + + # Import all certificates with trust args to the temporary NSS DB + if test "${WITH_NSS}" == "1"; then + "${CERTUTIL}" -d "sql:${TEMPDIR}/pki/nssdb" -A \ + -t "${satrust},${smtrust},${cstrust}" \ + -n "${certname}" -i tempfile.crt + echo "Added to NSS shared DB with trust '${satrust},${smtrust},${cstrust}'." + fi + + # Clean up the directory and environment as we go + rm -f tempfile.crt + unset keyhash subject certname + unset satrust smtrust cstrust catrust sarg smarg csarg caarg + unset p11trust p11oid p11value trustp11 certkey certcer certtxt + echo -e "\n" +done +unset tempfile + +# Sanity check +count=$(ls "${TEMPDIR}"/ssl/certs/*.pem | wc -l) +# Historically there have been between 152 and 165 certs +# A minimum of 140 should be safe for a rudimentry sanity check +if test "${count}" -lt "140" ; then + echo "Error! Only ${count} certificates were generated!" + echo "Exiting without update!" + echo "" + echo "${TEMPDIR} is the temporary working directory" + exit 2 +fi +unset count + +# Generate the bundle +bundlefile=`basename "${CABUNDLE}"` +bundledir=`echo "${CABUNDLE}" | sed "s@/${bundlefile}@@"` +install -vdm755 "${DESTDIR}${bundledir}" 2>&1>/dev/null +test -f "${DESTDIR}${CABUNDLE}" && mv "${DESTDIR}${CABUNDLE}" \ + "${DESTDIR}${CABUNDLE}.old" +echo "VERSION:${VERSION}" > "${DESTDIR}${CABUNDLE}" +cat "${TEMPDIR}/ssl/ca-bundle.crt.tmp" >> "${DESTDIR}${CABUNDLE}" && +rm -f "${DESTDIR}${CABUNDLE}.old" +unset bundlefile bundledir + +# Install Java Cacerts +if test "${WITH_JAVA}" == "1"; then + javafile=`basename "${KEYSTORE}"` + javadir=`echo "${KEYSTORE}" | sed "s@/${javafile}@@"` + install -vdm755 "${DESTDIR}${javadir}" 2>&1>/dev/null + test -f "${DESTDIR}${KEYSTORE}" && mv "${DESTDIR}${KEYSTORE}" \ + "${DESTDIR}${KEYSTORE}.old" + install -m644 "${TEMPDIR}/ssl/java/cacerts" "${DESTDIR}${KEYSTORE}" && + rm -f "${DESTDIR}${KEYSTORE}.old" + unset javafile javadir +fi + +# Install NSS Shared DB +if test "${WITH_NSS}" == "1"; then + sed -e "s@${TEMPDIR}/pki/nssdb@${NSSDB}@" \ + -e 's/library=/library=libnsssysinit.so/' \ + -e 's/Flags=internal/Flags=internal,moduleDBOnly/' \ + -i "${TEMPDIR}/pki/nssdb/pkcs11.txt" + test -d "${DESTDIR}${NSSDB}" && mv "${DESTDIR}${NSSDB}" \ + "${DESTDIR}${NSSDB}.old" + install -dm755 "${DESTDIR}${NSSDB}" 2>&1>/dev/null + install -m644 "${TEMPDIR}"/pki/nssdb/{cert9.db,key4.db,pkcs11.txt} \ + "${DESTDIR}${NSSDB}" && + rm -rf "${DESTDIR}${NSSDB}.old" +fi + +# Install anchors in $ANCHORDIR +test -d "${DESTDIR}${ANCHORDIR}" && mv "${DESTDIR}${ANCHORDIR}"\ + "${DESTDIR}${ANCHORDIR}.old" +install -dm755 "${DESTDIR}${ANCHORDIR}" 2>&1>/dev/null +install -m644 "${TEMPDIR}"/pki/anchors/*.pem "${DESTDIR}${ANCHORDIR}" && +rm -rf "${DESTDIR}${ANCHORDIR}.old" + +# Install certificates in $CERTDIR +test -d "${DESTDIR}${CERTDIR}" && mv "${DESTDIR}${CERTDIR}" \ + "${DESTDIR}${CERTDIR}.old" +install -dm755 "${DESTDIR}${CERTDIR}" 2>&1>/dev/null +install -m644 "${TEMPDIR}"/ssl/certs/*.pem "${DESTDIR}${CERTDIR}" && +rm -rf "${DESTDIR}${CERTDIR}.old" + +# Import any certs in $LOCALDIR +# Don't do any checking, just trust the admin +if test -d "${LOCALDIR}"; then + for cert in `find "${LOCALDIR}" -name "*.pem"`; do + # Get some information about the certificate + keyhash=$("${OPENSSL}" x509 -noout -in "${cert}" -hash) + subject=$("${OPENSSL}" x509 -noout -in "${cert}" -subject) + count=1 + while test "${count}" -lt 10; do + echo "${subject}" | cut -d "/" -f "${count}" | grep "CN=" >/dev/null \ + && break + let count++ + done + certname=$(echo "${subject}" | cut -d "/" -f "${count}" | sed 's@CN=@@') + + echo "Certificate: ${certname}" + echo "Keyhash: ${keyhash}" + + # Get trust information + trustlist=$("${OPENSSL}" x509 -in "${cert}" -text -trustout | \ + grep -A1 "Trusted Uses") + satrust="" + smtrust="" + cstrust="" + catrust="" + satrust=$(echo "${trustlist}" | \ + grep "TLS Web Server" 2>&1> /dev/null && echo "C") + smtrust=$(echo "${trustlist}" | \ + grep "E-mail Protection" 2>&1 >/dev/null && echo "C") + cstrust=$(echo "${trustlist}" | \ + grep "Code Signing" 2>&1 >/dev/null && echo "C") + catrust=$(echo "${trustlist}" | \ + grep "Client Auth" 2>&1 >/dev/null && echo "C") + + # Get reject information + rejectlist=$("${OPENSSL}" x509 -in "${cert}" -text -trustout | \ + grep -A1 "Rejected Uses") + if test "${satrust}" == ""; then satrust=$(echo "${rejectlist}" | \ + grep "TLS Web Server" 2>&1> /dev/null && echo "p"); fi + if test "${smtrust}" == ""; then smtrust=$(echo "${rejectlist}" | \ + grep "E-mail Protection" 2>&1> /dev/null && echo "p"); fi + if test "${cstrust}" == ""; then cstrust=$(echo "${rejectlist}" | \ + grep "Code Signing" 2>&1> /dev/null && echo "p"); fi + if test "${catrust}" == ""; then catrust=$(echo "${rejectlist}" | \ + grep "Client Auth" 2>&1> /dev/null && echo "p"); fi + + + # Place certificate into trust anchors dir + p11label="$(grep -m1 "Issuer" ${cert} | grep -o CN=.*$ | \ + cut -d ',' -f 1 | sed 's@CN=@@')" + + # if distrusted at all, x-distrusted + if test "${satrust}" == "p" -o "${smtrust}" == "p" -o "${cstrust}" == "p" + then + # if any distrusted, x-distrusted + p11trust="x-distrusted: true" + p11oid="1.3.6.1.4.1.3319.6.10.1" + p11value="0.%06%0a%2b%06%01%04%01%99w%06%0a%01%04 0%1e%06%08%2b%06%01%05%05%07%03%04%06%08%2b%06%01%05%05%07%03%01%06%08%2b%06%01%05%05%07%03%03" + else + p11trust="trusted: true" + p11oid="2.5.29.37" + trustp11="p11" + if test "${satrust}" == "C"; then + trustp11="${trustp11}sa" + fi + if test "${smtrust}" == "C"; then + trustp11="${trustp11}sm" + fi + if test "${cstrust}" == "C"; then + trustp11="${trustp11}cs" + fi + get-p11-val "${trustp11}" + fi + + anchorfile="${DESTDIR}${ANCHORDIR}/${keyhash}.pem" + + echo "[p11-kit-object-v1]" >> "${anchorfile}" + echo "label: \"${p11label}\"" >> "${anchorfile}" + echo "class: x-certificate-extension" >> "${anchorfile}" + echo "object-id: ${p11oid}" >> "${anchorfile}" + echo "value: \"${p11value}\"" >> "${anchorfile}" + echo "modifiable: false" >> "${anchorfile}" + echo "${certkey}" >> "${anchorfile}" + echo "" >> "${anchorfile}" + echo "[p11-kit-object-v1]" >> "${anchorfile}" + echo "label: \"${p11label}\"" >> "${anchorfile}" + echo "${p11trust}" >> "${anchorfile}" + echo "modifiable: false" >> "${anchorfile}" + echo "${certcer}" >> "${anchorfile}" + echo "${certtxt}" | sed 's@^@#@' >> "${anchorfile}" + echo "Added to p11-kit anchor directory with trust '${satrust},${smtrust},${cstrust}'." + + # Install in Java keystore + if test "${WITH_JAVA}" == "1" -a "${satrust}x" == "Cx"; then + "${KEYTOOL}" -import -noprompt -alias "${certname}" \ + -keystore "${DESTDIR}${KEYSTORE}" \ + -storepass 'changeit' -file "${cert}" 2>&1> /dev/null | \ + sed -e 's@Certificate was a@A@' -e 's@keystore@Java keystore.@' + fi + + # Append to the bundle - source should have trust info, process with + # openssl x509 to strip + if test "${satrust}x" == "Cx"; then + "${OPENSSL}" x509 -in "${cert}" -text -fingerprint \ + >> "${DESTDIR}${CABUNDLE}" + echo "Added to GnuTLS certificate bundle." + fi + + # Install into OpenSSL certificate store + "${OPENSSL}" x509 -in "${cert}" -text -fingerprint \ + -setalias "${certname}" \ + >> "${DESTDIR}${CERTDIR}/${keyhash}.pem" + echo "Added to OpenSSL certificate directory with trust '${satrust},${smtrust},${cstrust},${catrust}'." + + # Add to Shared NSS DB + if test "${WITH_NSS}" == "1"; then + "${OPENSSL}" x509 -in "${cert}" -text -fingerprint | \ + "${CERTUTIL}" -d "sql:${DESTDIR}${NSSDB}" -A \ + -t "${satrust},${smtrust},${cstrust}" \ + -n "${certname}" + echo "Added to NSS shared DB with trust '${satrust},${smtrust},${cstrust}'." + fi + + unset keyhash subject count certname + unset trustlist rejectlist satrust smtrust cstrust catrust + unset p11trust p11oid p11value trustp11 certkey certcer certtxt + echo "" + + done + unset cert +fi + +c_rehash "${DESTDIR}${CERTDIR}" 2>&1>/dev/null +popd > /dev/null + +# Clean up the mess +rm -rf "${TEMPDIR}" + +# End /usr/sbin/make-ca.sh diff --git a/recipes/ca-certificates/make-ca.sh.patch b/recipes/ca-certificates/make-ca.sh.patch deleted file mode 100644 index 648d9ca8..00000000 --- a/recipes/ca-certificates/make-ca.sh.patch +++ /dev/null @@ -1,30 +0,0 @@ ---- source/make-ca.sh 2018-08-25 17:38:12.512463896 +0200 -+++ build/make-ca.sh 2018-09-23 14:45:12.492919202 +0200 -@@ -1,4 +1,4 @@ --#!/bin/bash -+#!/usr/bin/env bash - # Begin /usr/sbin/make-ca.sh - # - # Script to create OpenSSL certs directory, GnuTLS certificate bundle, NSS -@@ -28,9 +28,9 @@ - CERTDATA="certdata.txt" - PKIDIR="/etc/pki" - SSLDIR="/etc/ssl" --CERTUTIL="/usr/bin/certutil" --KEYTOOL="/opt/jdk/bin/keytool" --OPENSSL="/usr/bin/openssl" -+CERTUTIL="certutil" -+KEYTOOL="keytool" -+OPENSSL="openssl" - ANCHORDIR="${PKIDIR}/anchors" - CABUNDLE="${SSLDIR}/ca-bundle.crt" - CERTDIR="${SSLDIR}/certs" -@@ -723,7 +723,7 @@ - unset cert - fi - --/usr/bin/c_rehash "${DESTDIR}${CERTDIR}" 2>&1>/dev/null -+c_rehash "${DESTDIR}${CERTDIR}" 2>&1>/dev/null - popd > /dev/null - - # Clean up the mess diff --git a/recipes/ca-certificates/recipe.sh b/recipes/ca-certificates/recipe.sh index 09e56fdf..e89df590 100644 --- a/recipes/ca-certificates/recipe.sh +++ b/recipes/ca-certificates/recipe.sh @@ -9,8 +9,11 @@ function recipe_fetch { mkdir source fi pushd source - curl -o make-ca.sh --time-cond make-ca.sh http://anduin.linuxfromscratch.org/BLFS/other/make-ca.sh-20170514 - curl -o certdata.txt --time-cond certdata.txt http://anduin.linuxfromscratch.org/BLFS/other/certdata.txt + cp ../make-ca.sh make-ca.sh + curl \ + -o certdata.txt \ + --time-cond certdata.txt \ + https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt popd skip=1 } From e1654fdc455ba5b48dde86c3dde5a4b8ad708183 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 18 Feb 2020 20:08:34 -0700 Subject: [PATCH 0751/3180] Fix indentation in bootloader recipe --- recipes/bootloader/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/bootloader/recipe.sh b/recipes/bootloader/recipe.sh index 510b0d80..6f9a14a2 100644 --- a/recipes/bootloader/recipe.sh +++ b/recipes/bootloader/recipe.sh @@ -11,7 +11,7 @@ function recipe_update { } function recipe_build { - nasm -f bin -o bootloader -D "ARCH_${ARCH}" -i"${ARCH}/" "${ARCH}/disk.asm" + nasm -f bin -o bootloader -D "ARCH_${ARCH}" -i"${ARCH}/" "${ARCH}/disk.asm" skip=1 } From b024d9bf69acf38fe0f04f11eebf158940bc38c6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 10 Mar 2020 21:27:59 -0600 Subject: [PATCH 0752/3180] WIP: add pkgar support --- .gitmodules | 4 ++++ cook.sh | 37 +++++++++++++++++++++++++++++++++---- pkgar | 1 + 3 files changed, 38 insertions(+), 4 deletions(-) create mode 160000 pkgar diff --git a/.gitmodules b/.gitmodules index 868d3322..cc1ec1f5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -60,3 +60,7 @@ path = patches/jobserver-rs url = https://gitlab.redox-os.org/redox-os/jobserver-rs.git branch = redox +[submodule "pkgar"] + path = pkgar + url = https://gitlab.redox-os.org/redox-os/pkgar.git + branch = master diff --git a/cook.sh b/cook.sh index 9ce54ae4..aa19f96d 100755 --- a/cook.sh +++ b/cook.sh @@ -15,15 +15,17 @@ export PREPARE_COPY=1 if [ ! "$(uname -s)" = "Redox" ] then +function docgen { + CC=cc cargo run --release --manifest-path "$ROOT/docgen/Cargo.toml" --bin docgen -- "$@" +} function pkg { - CC=cc cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- $@ + CC=cc cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- "$@" } -function docgen { - CC=cc cargo run --release --manifest-path "$ROOT/docgen/Cargo.toml" --bin docgen -- $@ +function pkgar { + CC=cc cargo run --release --manifest-path "$ROOT/pkgar/Cargo.toml" --bin pkgar -- "$@" } - fi function usage { @@ -423,6 +425,33 @@ function op { unstage) rm -rfv stage ;; + pkg) + if [ ! -e "${ROOT}/build/secret.key" ] + then + mkdir -p "${ROOT}/build" + pkgar \ + keygen \ + --secret "${ROOT}/build/secret.key" \ + --public "${ROOT}/build/public.key" + fi + + pkgar \ + create \ + --secret "${ROOT}/build/secret.key" \ + --file stage.pkg \ + stage + + if command -v pigz > /dev/null + then + pigz --force stage.pkg + else + echo "Install pigz for increased performance" + gzip --force recipes/jeremy/stage.pkg + fi + ;; + unpkg) + rm -fv stage.pkg stage.pkg.gz + ;; tar) echo "name = \"$1\"" > "stage.toml" echo "version = \"$(op $1 version)\"" >> "stage.toml" diff --git a/pkgar b/pkgar new file mode 160000 index 00000000..6855ee50 --- /dev/null +++ b/pkgar @@ -0,0 +1 @@ +Subproject commit 6855ee50a3beda271975aebce50196ebdb75d442 From bd71b54545818922d94fe297521e7c4a87347509 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 11 Mar 2020 10:32:41 -0600 Subject: [PATCH 0753/3180] Update pkgar --- .gitignore | 1 + cook.sh | 14 +++++--------- pkgar | 2 +- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index de50c96e..ad5e33de 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ source source-new source.tar stage +stage.pkg stage.sig stage.tar stage.tar.gz diff --git a/cook.sh b/cook.sh index aa19f96d..0911d266 100755 --- a/cook.sh +++ b/cook.sh @@ -42,6 +42,8 @@ function usage { echo " difftool_upstream" >&2 echo " fetch" >&2 echo " unfetch" >&2 + echo " pkg" >&2 + echo " unpkg" >&2 echo " prepare" >&2 echo " unprepare" >&2 echo " publish" >&2 @@ -69,8 +71,10 @@ function op { op $1 build op $1 stage op $1 tar + op $1 pkg ;; distclean) + op $1 unpkg op $1 untar op $1 unstage op $1 unprepare @@ -440,17 +444,9 @@ function op { --secret "${ROOT}/build/secret.key" \ --file stage.pkg \ stage - - if command -v pigz > /dev/null - then - pigz --force stage.pkg - else - echo "Install pigz for increased performance" - gzip --force recipes/jeremy/stage.pkg - fi ;; unpkg) - rm -fv stage.pkg stage.pkg.gz + rm -fv stage.pkg ;; tar) echo "name = \"$1\"" > "stage.toml" diff --git a/pkgar b/pkgar index 6855ee50..d3b5dfc7 160000 --- a/pkgar +++ b/pkgar @@ -1 +1 @@ -Subproject commit 6855ee50a3beda271975aebce50196ebdb75d442 +Subproject commit d3b5dfc7af711f32ca115bc39d45f77dac4b7b99 From d78ad13104ee530a61c9397af7a15ef089e2ce47 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 11 Mar 2020 20:14:39 -0600 Subject: [PATCH 0754/3180] Also build pkg's --- pkgar | 2 +- repo.sh | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/pkgar b/pkgar index d3b5dfc7..0b8522c8 160000 --- a/pkgar +++ b/pkgar @@ -1 +1 @@ -Subproject commit d3b5dfc7af711f32ca115bc39d45f77dac4b7b99 +Subproject commit 0b8522c860af161f72075da4683c3856e1526ea1 diff --git a/repo.sh b/repo.sh index c738e234..8c653bae 100755 --- a/repo.sh +++ b/repo.sh @@ -58,6 +58,20 @@ do echo -e "\033[01;38;5;155mrepo - $recipe up to date\033[0m" >&2 fi fi + + if [ ! -f "recipes/$recipe/stage.pkg" ] + then + echo -e "\033[01;38;5;155mrepo - packaging $recipe\033[0m" >&2 + ./cook.sh "$recipe" pkg $DEBUG + else + TIME_STAGE="$($STAT -c "%Y" recipes/$recipe/stage.tar.gz)" + TIME_PKG="$($STAT -c "%Y" recipes/$recipe/stage.pkg)" + if [ "$TIME_STAGE" -gt "$TIME_PKG" ] + then + echo -e "\033[01;38;5;155mrepo - repackaging $recipe\033[0m" >&2 + ./cook.sh "$recipe" unpkg pkg $DEBUG + fi + fi done for recipe in $recipes @@ -67,6 +81,12 @@ do echo -e "\033[01;38;5;155mrepo - publishing $recipe\033[0m" >&2 ./cook.sh $recipe publish fi + + if [ "recipes/$recipe/stage.pkg" -nt "$REPO/$recipe.pkg" ] + then + echo -e "\033[01;38;5;155mrepo - publishing $recipe\033[0m" >&2 + cp -v "recipes/$recipe/stage.pkg" "$REPO/$recipe.pkg" + fi done echo -e "\033[01;38;5;155mrepo - generating repo.toml\033[0m" >&2 From cbb8d68e0bbe26ee0082e1694172481be53c55bc Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 12 Mar 2020 20:31:38 -0600 Subject: [PATCH 0755/3180] Update pkgar --- cook.sh | 4 ++-- pkgar | 2 +- repo.sh | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cook.sh b/cook.sh index 0911d266..dfaa5851 100755 --- a/cook.sh +++ b/cook.sh @@ -442,11 +442,11 @@ function op { pkgar \ create \ --secret "${ROOT}/build/secret.key" \ - --file stage.pkg \ + --file stage.pkgar \ stage ;; unpkg) - rm -fv stage.pkg + rm -fv stage.pkgar ;; tar) echo "name = \"$1\"" > "stage.toml" diff --git a/pkgar b/pkgar index 0b8522c8..4c5a1b02 160000 --- a/pkgar +++ b/pkgar @@ -1 +1 @@ -Subproject commit 0b8522c860af161f72075da4683c3856e1526ea1 +Subproject commit 4c5a1b026e30bff7babdc241b3a3d7f1875f0a55 diff --git a/repo.sh b/repo.sh index 8c653bae..19ebf960 100755 --- a/repo.sh +++ b/repo.sh @@ -59,13 +59,13 @@ do fi fi - if [ ! -f "recipes/$recipe/stage.pkg" ] + if [ ! -f "recipes/$recipe/stage.pkgar" ] then echo -e "\033[01;38;5;155mrepo - packaging $recipe\033[0m" >&2 ./cook.sh "$recipe" pkg $DEBUG else TIME_STAGE="$($STAT -c "%Y" recipes/$recipe/stage.tar.gz)" - TIME_PKG="$($STAT -c "%Y" recipes/$recipe/stage.pkg)" + TIME_PKG="$($STAT -c "%Y" recipes/$recipe/stage.pkgar)" if [ "$TIME_STAGE" -gt "$TIME_PKG" ] then echo -e "\033[01;38;5;155mrepo - repackaging $recipe\033[0m" >&2 @@ -82,10 +82,10 @@ do ./cook.sh $recipe publish fi - if [ "recipes/$recipe/stage.pkg" -nt "$REPO/$recipe.pkg" ] + if [ "recipes/$recipe/stage.pkgar" -nt "$REPO/$recipe.pkgar" ] then echo -e "\033[01;38;5;155mrepo - publishing $recipe\033[0m" >&2 - cp -v "recipes/$recipe/stage.pkg" "$REPO/$recipe.pkg" + cp -v "recipes/$recipe/stage.pkgar" "$REPO/$recipe.pkgar" fi done From fd4da66da3763ad32122a05f36840e9a51718eff Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 12 Mar 2020 21:13:00 -0600 Subject: [PATCH 0756/3180] Update pkgar --- pkgar | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgar b/pkgar index 4c5a1b02..9db8e8f2 160000 --- a/pkgar +++ b/pkgar @@ -1 +1 @@ -Subproject commit 4c5a1b026e30bff7babdc241b3a3d7f1875f0a55 +Subproject commit 9db8e8f298b0aebc639c782d75112c4c85b3131e From 1984d544535a84d262b15ca0e2aaff7f69fd3408 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 13 Mar 2020 20:04:11 -0600 Subject: [PATCH 0757/3180] Update pkgar --- pkgar | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgar b/pkgar index 9db8e8f2..73f8802a 160000 --- a/pkgar +++ b/pkgar @@ -1 +1 @@ -Subproject commit 9db8e8f298b0aebc639c782d75112c4c85b3131e +Subproject commit 73f8802a210211f689fce84ddc172b7db10372d0 From ea92ce22bff006319f3bff1cce45c2d0bec45684 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 26 Mar 2020 20:48:02 -0600 Subject: [PATCH 0758/3180] Ignore pkgar files --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index ad5e33de..eab8ed42 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ source-new source.tar stage stage.pkg +stage.pkgar stage.sig stage.tar stage.tar.gz From ebda92aa7fd5f0183dd221107ac5a6a9c91b135f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 26 Mar 2020 20:48:25 -0600 Subject: [PATCH 0759/3180] Fix xargo deadlock in relibc recipe --- recipes/relibc/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/relibc/recipe.sh b/recipes/relibc/recipe.sh index 7518a071..87f665e5 100644 --- a/recipes/relibc/recipe.sh +++ b/recipes/relibc/recipe.sh @@ -1,12 +1,12 @@ GIT=https://gitlab.redox-os.org/redox-os/relibc.git function recipe_build { - make CARGO=xargo -j"$(nproc)" + make CARGO="env -u CARGO xargo" -j"$(nproc)" skip=1 } function recipe_stage { dest="$(realpath $1)" - make CARGO=xargo DESTDIR="$dest" install + make CARGO="env -u CARGO xargo" DESTDIR="$dest" install skip=1 } From 1d3bbddb9cc8ebb045076571888fa03ed3c2eaea Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Sun, 29 Mar 2020 11:17:58 +0200 Subject: [PATCH 0760/3180] Add the ramfs recipe. --- recipes/kernel/recipe.sh | 2 +- recipes/ramfs/recipe.sh | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 recipes/ramfs/recipe.sh diff --git a/recipes/kernel/recipe.sh b/recipes/kernel/recipe.sh index 34c789d2..a877f5d1 100644 --- a/recipes/kernel/recipe.sh +++ b/recipes/kernel/recipe.sh @@ -1,5 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/kernel.git -BUILD_DEPENDS=(drivers init nulld randd redoxfs zerod) +BUILD_DEPENDS=(drivers init nulld ramfs randd redoxfs zerod) function recipe_build { export INITFS_FOLDER="$(realpath ../sysroot)" diff --git a/recipes/ramfs/recipe.sh b/recipes/ramfs/recipe.sh new file mode 100644 index 00000000..f583f5c3 --- /dev/null +++ b/recipes/ramfs/recipe.sh @@ -0,0 +1 @@ +GIT=https://gitlab.redox-os.org/redox-os/ramfs.git From 50c3f8642cce2f541da9854a8e2c3bf677604269 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 16 Apr 2020 14:55:55 -0600 Subject: [PATCH 0761/3180] Update patches/time --- patches/time | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/time b/patches/time index 726efec5..0c24c8c1 160000 --- a/patches/time +++ b/patches/time @@ -1 +1 @@ -Subproject commit 726efec5f1c47ef89ab740335439ff4fda047f8f +Subproject commit 0c24c8c1483e17b4c7974c68dbb29d609d9c699b From 5097c70245514908477c1d032f7399390c089292 Mon Sep 17 00:00:00 2001 From: Xavier L'Heureux Date: Sun, 3 May 2020 18:55:55 -0400 Subject: [PATCH 0762/3180] Fix compilation on FreeBSD `make` is `gmake` on FreeBSD, so add a variable to include this change in command. --- config.sh | 4 +++- cook.sh | 9 +++++++-- recipes/atk/recipe.sh | 6 +++--- recipes/autoconf/recipe.sh | 6 +++--- recipes/automake/recipe.sh | 6 +++--- recipes/bash/recipe.sh | 6 +++--- recipes/bootloader/recipe.sh | 2 +- recipes/cairo/recipe.sh | 6 +++--- recipes/cairodemo/recipe.sh | 2 +- recipes/cmatrix/recipe.sh | 6 +++--- recipes/curl/recipe.sh | 6 +++--- recipes/dash/recipe.sh | 6 +++--- recipes/diffutils/recipe.sh | 6 +++--- recipes/dosbox/recipe.sh | 6 +++--- recipes/duktape/recipe.sh | 4 ++-- recipes/eduke32/recipe.sh | 4 ++-- recipes/expat/recipe.sh | 6 +++--- recipes/ffmpeg/recipe.sh | 6 +++--- recipes/fontconfig/recipe.sh | 6 +++--- recipes/freeciv/recipe.sh | 6 +++--- recipes/freeglut/recipe.sh | 6 +++--- recipes/freetype/recipe.sh | 6 +++--- recipes/fribidi/recipe.sh | 6 +++--- recipes/gawk/recipe.sh | 6 +++--- recipes/gcc/recipe.sh | 6 +++--- recipes/gdk-pixbuf/recipe.sh | 2 +- recipes/gears/recipe.sh | 2 +- recipes/gettext/recipe.sh | 6 +++--- recipes/gigalomania/recipe.sh | 6 +++--- recipes/git/recipe.sh | 6 +++--- recipes/glib/recipe.sh | 6 +++--- recipes/gnu-binutils/recipe.sh | 6 +++--- recipes/gnu-grep/recipe.sh | 6 +++--- recipes/gnu-make/recipe.sh | 6 +++--- recipes/gstreamer/recipe.sh | 6 +++--- recipes/harfbuzz/recipe.sh | 6 +++--- recipes/jansson/recipe.sh | 6 +++--- recipes/kernel/recipe.sh | 2 +- recipes/libc-bench/recipe.sh | 4 ++-- recipes/libffi/recipe.sh | 6 +++--- recipes/libiconv/recipe.sh | 6 +++--- recipes/libjpeg/recipe.sh | 6 +++--- recipes/libogg/recipe.sh | 6 +++--- recipes/liborbital/recipe.sh | 2 +- recipes/libpng/recipe.sh | 6 +++--- recipes/libsodium/recipe.sh | 6 +++--- recipes/libvorbis/recipe.sh | 6 +++--- recipes/libxml2/recipe.sh | 6 +++--- recipes/llvm/recipe.sh | 6 +++--- recipes/lua/recipe.sh | 4 ++-- recipes/mdp/recipe.sh | 6 +++--- recipes/mesa/recipe.sh | 6 +++--- recipes/mesa_glu/recipe.sh | 6 +++--- recipes/mgba/recipe.sh | 4 ++-- recipes/nasm/recipe.sh | 6 +++--- recipes/ncdu/recipe.sh | 6 +++--- recipes/ncurses/recipe.sh | 6 +++--- recipes/ncursesw/recipe.sh | 6 +++--- recipes/netsurf/recipe.sh | 6 +++--- recipes/neverball/recipe.sh | 8 ++++---- recipes/newlib/recipe.sh | 6 +++--- recipes/newlibtest/recipe.sh | 6 +++--- recipes/nghttp2/recipe.sh | 6 +++--- recipes/openjazz/recipe.sh | 6 +++--- recipes/openssl/recipe.sh | 6 +++--- recipes/openttd/recipe.sh | 6 +++--- recipes/osdemo/recipe.sh | 2 +- recipes/pango/recipe.sh | 6 +++--- recipes/patch/recipe.sh | 6 +++--- recipes/pcre/recipe.sh | 6 +++--- recipes/perl/recipe.sh | 6 +++--- recipes/pixman/recipe.sh | 6 +++--- recipes/pkg-config/recipe.sh | 6 +++--- recipes/prboom/recipe.sh | 6 +++--- recipes/python/recipe.sh | 6 +++--- recipes/qemu/recipe.sh | 6 +++--- recipes/readline/recipe.sh | 6 +++--- recipes/relibc-tests/recipe.sh | 2 +- recipes/relibc/recipe.sh | 4 ++-- recipes/rust/recipe.sh | 2 +- recipes/schismtracker/recipe.sh | 6 +++--- recipes/scummvm/recipe.sh | 6 +++--- recipes/sdl-player/recipe.sh | 4 ++-- recipes/sdl/recipe.sh | 6 +++--- recipes/sdl2/recipe.sh | 6 +++--- recipes/sdl2_image/recipe.sh | 6 +++--- recipes/sdl2_mixer/recipe.sh | 6 +++--- recipes/sdl2_ttf/recipe.sh | 6 +++--- recipes/sdl_gfx/recipe.sh | 6 +++--- recipes/sdl_image/recipe.sh | 6 +++--- recipes/sdl_mixer/recipe.sh | 6 +++--- recipes/sdl_ttf/recipe.sh | 6 +++--- recipes/sed/recipe.sh | 6 +++--- recipes/shared-mime-info/recipe.sh | 4 ++-- recipes/sopwith/recipe.sh | 6 +++--- recipes/ssh/recipe.sh | 6 +++--- recipes/syobonaction/recipe.sh | 4 ++-- recipes/timidity/recipe.sh | 6 +++--- recipes/vice/recipe.sh | 6 +++--- recipes/vim/recipe.sh | 6 +++--- recipes/vttest/recipe.sh | 6 +++--- recipes/vvvvvv/recipe.sh | 2 +- recipes/wesnoth/recipe.sh | 2 +- recipes/xz/recipe.sh | 6 +++--- recipes/zlib/recipe.sh | 6 +++--- 105 files changed, 289 insertions(+), 282 deletions(-) diff --git a/config.sh b/config.sh index 752a910c..4dc41ba3 100755 --- a/config.sh +++ b/config.sh @@ -32,7 +32,7 @@ BUILD="$(cc -dumpmachine)" export PKG_CONFIG_FOR_BUILD="pkg-config" -if [[ "$OSTYPE" == "darwin"* ]]; then +if [[ "$OSTYPE" == "darwin"* ]] || [[ "$OSTYPE" == "FreeBSD" ]]; then # GNU find FIND="gfind"; @@ -42,6 +42,8 @@ if [[ "$OSTYPE" == "darwin"* ]]; then elif [ ! -z "$(which port)" ]; then # TODO: find a programatic way of asking MacPorts for it's root dir. STAT="/opt/local/opt/coreutils/libexec/gnubin/stat"; + elif [ ! -z "$(which pkg)" ]; then + STAT="gnustat" else echo "Please install either Homebrew or MacPorts and run the boostrap script." exit 1 diff --git a/cook.sh b/cook.sh index dfaa5851..ce062f02 100755 --- a/cook.sh +++ b/cook.sh @@ -13,6 +13,11 @@ export DEBUG= export EXAMPLES= export PREPARE_COPY=1 +SHASUM="sha256sum" +if hash shasum 2>/dev/null; then + SHASUM="shasum -a 256" +fi + if [ ! "$(uname -s)" = "Redox" ] then function docgen { @@ -96,7 +101,7 @@ function op { if [ -n "$TAR_SHA256" ] then - sha256sum -c <<< "${TAR_SHA256} source.tar" + $SHASUM -c <<< "${TAR_SHA256} source.tar" fi if [ ! -d source ] @@ -470,7 +475,7 @@ function op { pushd stage > /dev/null find -L . -type f | cut -d / -f 2- | sort | while read file do - sha256sum "$file" >> "pkg/$1.sha256sums" + $SHASUM "$file" >> "pkg/$1.sha256sums" done popd > /dev/null diff --git a/recipes/atk/recipe.sh b/recipes/atk/recipe.sh index 60fd3484..da84b8e7 100755 --- a/recipes/atk/recipe.sh +++ b/recipes/atk/recipe.sh @@ -25,7 +25,7 @@ function recipe_build { --prefix=/ \ --disable-shared \ --enable-static - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -35,13 +35,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/autoconf/recipe.sh b/recipes/autoconf/recipe.sh index 2c703e47..96fbf5d2 100644 --- a/recipes/autoconf/recipe.sh +++ b/recipes/autoconf/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --build=${BUILD} --host=${HOST} --prefix='' - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -24,12 +24,12 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install skip=1 } diff --git a/recipes/automake/recipe.sh b/recipes/automake/recipe.sh index 3731ad31..b008fc60 100644 --- a/recipes/automake/recipe.sh +++ b/recipes/automake/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { sed -i 's|install-info-am install-man|install-info-am|' Makefile.in ./configure --build=${BUILD} --host=${HOST} --prefix='' - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -27,12 +27,12 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install skip=1 } diff --git a/recipes/bash/recipe.sh b/recipes/bash/recipe.sh index b4ec7805..2c8a2767 100644 --- a/recipes/bash/recipe.sh +++ b/recipes/bash/recipe.sh @@ -23,7 +23,7 @@ function recipe_build { --prefix=/ \ --disable-readline \ bash_cv_getenv_redef=no - make # -j"$(nproc)" + $REDOX_MAKE # -j"$($NPROC)" skip=1 } @@ -33,12 +33,12 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" ${MAKEFLAGS} install + $REDOX_MAKE DESTDIR="$dest" ${MAKEFLAGS} install skip=1 } diff --git a/recipes/bootloader/recipe.sh b/recipes/bootloader/recipe.sh index 6f9a14a2..14aed1fe 100644 --- a/recipes/bootloader/recipe.sh +++ b/recipes/bootloader/recipe.sh @@ -21,7 +21,7 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } diff --git a/recipes/cairo/recipe.sh b/recipes/cairo/recipe.sh index f054b88f..54deb8cb 100755 --- a/recipes/cairo/recipe.sh +++ b/recipes/cairo/recipe.sh @@ -27,7 +27,7 @@ function recipe_build { --enable-xlib=no \ --enable-script=no \ --enable-interpreter=no - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -37,13 +37,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/cairodemo/recipe.sh b/recipes/cairodemo/recipe.sh index f35d2c20..2e697652 100755 --- a/recipes/cairodemo/recipe.sh +++ b/recipes/cairodemo/recipe.sh @@ -32,7 +32,7 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } diff --git a/recipes/cmatrix/recipe.sh b/recipes/cmatrix/recipe.sh index 3f2b89a6..f5b50491 100644 --- a/recipes/cmatrix/recipe.sh +++ b/recipes/cmatrix/recipe.sh @@ -23,7 +23,7 @@ function recipe_build { --prefix=/ \ --without-fonts sed -i'' -e 's|#define USE_TIOCSTI 1|/* #undef USE_TIOCSTI */|g' config.h - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -33,12 +33,12 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install skip=1 } diff --git a/recipes/curl/recipe.sh b/recipes/curl/recipe.sh index 98b388e1..51919803 100644 --- a/recipes/curl/recipe.sh +++ b/recipes/curl/recipe.sh @@ -36,7 +36,7 @@ function recipe_build { --with-nghttp2="$sysroot" \ --with-ssl="$sysroot" \ --with-zlib="$sysroot" - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -46,13 +46,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/dash/recipe.sh b/recipes/dash/recipe.sh index a0974a6b..5df401ad 100644 --- a/recipes/dash/recipe.sh +++ b/recipes/dash/recipe.sh @@ -22,7 +22,7 @@ function recipe_build { # See https://stackoverflow.com/questions/4247068/sed-command-with-i-option-failing-on-mac-but-works-on-linux. sed -i'' -e 's|#define HAVE_GETRLIMIT 1|/* #undef HAVE_GETRLIMIT */|g' config.h - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -32,13 +32,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install ln -s "dash" "$dest/bin/sh" skip=1 } diff --git a/recipes/diffutils/recipe.sh b/recipes/diffutils/recipe.sh index c33902e7..2568e48a 100644 --- a/recipes/diffutils/recipe.sh +++ b/recipes/diffutils/recipe.sh @@ -23,7 +23,7 @@ function recipe_build { gt_cv_locale_ja=false \ gt_cv_locale_tr_utf8=false \ gt_cv_locale_zh_CN=false - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -33,13 +33,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install ${HOST}-strip "$dest"/bin/* rm -rf "$dest"/{lib,share} skip=1 diff --git a/recipes/dosbox/recipe.sh b/recipes/dosbox/recipe.sh index be1b34ea..845bdb89 100644 --- a/recipes/dosbox/recipe.sh +++ b/recipes/dosbox/recipe.sh @@ -26,7 +26,7 @@ function recipe_build { --disable-opengl \ --disable-sdltest \ --with-sdl-prefix="$sysroot" - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -36,12 +36,12 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install skip=1 } diff --git a/recipes/duktape/recipe.sh b/recipes/duktape/recipe.sh index 632e9430..d2560228 100644 --- a/recipes/duktape/recipe.sh +++ b/recipes/duktape/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { function recipe_build { sed -i "s/= gcc/= $TARGET-gcc/g" Makefile.cmdline - make -f Makefile.cmdline -j"$(nproc)" + $REDOX_MAKE -f Makefile.cmdline -j"$($NPROC)" skip=1 } @@ -23,7 +23,7 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } diff --git a/recipes/eduke32/recipe.sh b/recipes/eduke32/recipe.sh index f43d6525..72595dc7 100644 --- a/recipes/eduke32/recipe.sh +++ b/recipes/eduke32/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib -static" export SDLCONFIG="$sysroot/bin/sdl-config --prefix=$sysroot" - PLATFORM=REDOX make -j"$(nproc)" + PLATFORM=REDOX $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -28,7 +28,7 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } diff --git a/recipes/expat/recipe.sh b/recipes/expat/recipe.sh index 65a48648..68b9f60a 100644 --- a/recipes/expat/recipe.sh +++ b/recipes/expat/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { export LDFLAGS="--static" ./configure --build=${BUILD} --host=${HOST} --prefix=/ - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -24,13 +24,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/ffmpeg/recipe.sh b/recipes/ffmpeg/recipe.sh index af1a18f7..de5ea97a 100644 --- a/recipes/ffmpeg/recipe.sh +++ b/recipes/ffmpeg/recipe.sh @@ -27,7 +27,7 @@ function recipe_build { --enable-zlib \ --enable-encoder=png \ --enable-decoder=png - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -37,12 +37,12 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install skip=1 } diff --git a/recipes/fontconfig/recipe.sh b/recipes/fontconfig/recipe.sh index eba97cc8..8c459061 100755 --- a/recipes/fontconfig/recipe.sh +++ b/recipes/fontconfig/recipe.sh @@ -24,7 +24,7 @@ function recipe_build { --disable-shared \ --enable-static \ ac_cv_func_XML_SetDoctypeDeclHandler=yes - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -34,13 +34,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/freeciv/recipe.sh b/recipes/freeciv/recipe.sh index 47dd5e6d..48aa19a7 100644 --- a/recipes/freeciv/recipe.sh +++ b/recipes/freeciv/recipe.sh @@ -30,7 +30,7 @@ function recipe_build { ac_cv_lib_SDL_image_IMG_Load=yes \ ac_cv_lib_SDL_ttf_TTF_OpenFont=yes \ ac_cv_lib_SDL_gfx_rotozoomSurface=yes - make -j"$(nproc)" V=1 + $REDOX_MAKE -j"$($NPROC)" V=1 skip=1 } @@ -40,12 +40,12 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install skip=1 } diff --git a/recipes/freeglut/recipe.sh b/recipes/freeglut/recipe.sh index 3108f208..810883e4 100644 --- a/recipes/freeglut/recipe.sh +++ b/recipes/freeglut/recipe.sh @@ -23,7 +23,7 @@ function recipe_build { -D FREEGLUT_GLES=0 \ . #./configure --host="${HOST}" --prefix=/ --enable-osmesa - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -33,12 +33,12 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install skip=1 } diff --git a/recipes/freetype/recipe.sh b/recipes/freetype/recipe.sh index ea6744f4..e150fe01 100644 --- a/recipes/freetype/recipe.sh +++ b/recipes/freetype/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" ./configure --build=${BUILD} --host=${HOST} --prefix='/' - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -27,13 +27,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/fribidi/recipe.sh b/recipes/fribidi/recipe.sh index 6d28b967..4ed952c0 100755 --- a/recipes/fribidi/recipe.sh +++ b/recipes/fribidi/recipe.sh @@ -23,7 +23,7 @@ function recipe_build { --disable-shared \ --enable-static sed -i 's|#define HAVE_SYS_TIMES_H 1|/* #undef HAVE_SYS_TIMES_H */|g' config.h - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -33,13 +33,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/gawk/recipe.sh b/recipes/gawk/recipe.sh index 98e4c08f..5f57628b 100644 --- a/recipes/gawk/recipe.sh +++ b/recipes/gawk/recipe.sh @@ -9,7 +9,7 @@ function recipe_update { function recipe_build { ./configure --build=${BUILD} --host=${HOST} --prefix=/ ac_cv_func_gethostbyname=no ac_cv_func_connect=no - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -19,12 +19,12 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install skip=1 } diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index 5c7d863a..56ac71cb 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -40,7 +40,7 @@ function recipe_build { --disable-nls \ --enable-languages=c,c++ \ --enable-threads=posix - make -j "$(nproc)" all-gcc all-target-libgcc all-target-libstdc++-v3 + $REDOX_MAKE -j "$(nproc)" all-gcc all-target-libgcc all-target-libstdc++-v3 skip=1 } @@ -50,13 +50,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install-gcc install-target-libgcc install-target-libstdc++-v3 + $REDOX_MAKE DESTDIR="$dest" install-gcc install-target-libgcc install-target-libstdc++-v3 find "$dest"/{bin,libexec} -exec $STRIP {} ';' 2> /dev/null ln -s "gcc" "$1/bin/cc" skip=1 diff --git a/recipes/gdk-pixbuf/recipe.sh b/recipes/gdk-pixbuf/recipe.sh index e6dfb00d..e47210c3 100755 --- a/recipes/gdk-pixbuf/recipe.sh +++ b/recipes/gdk-pixbuf/recipe.sh @@ -68,7 +68,7 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } diff --git a/recipes/gears/recipe.sh b/recipes/gears/recipe.sh index d6e1f5ae..bf13b41c 100644 --- a/recipes/gears/recipe.sh +++ b/recipes/gears/recipe.sh @@ -30,7 +30,7 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } diff --git a/recipes/gettext/recipe.sh b/recipes/gettext/recipe.sh index dfcbf920..2e31ff24 100644 --- a/recipes/gettext/recipe.sh +++ b/recipes/gettext/recipe.sh @@ -29,7 +29,7 @@ function recipe_build { gt_cv_locale_ja=false \ gt_cv_locale_tr_utf8=false \ gt_cv_locale_zh_CN=false - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -39,13 +39,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/gigalomania/recipe.sh b/recipes/gigalomania/recipe.sh index 768365a2..2a3d295b 100644 --- a/recipes/gigalomania/recipe.sh +++ b/recipes/gigalomania/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" - make all -j"$(nproc)" + $REDOX_MAKE all -j"$($NPROC)" skip=1 } @@ -28,7 +28,7 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } @@ -36,7 +36,7 @@ function recipe_stage { dest="$(realpath $1)" bundledir="$dest/bundle" - make VERBOSE=1 DESTDIR="$dest" install + $REDOX_MAKE VERBOSE=1 DESTDIR="$dest" install rm -rf "$bundledir" skip=1 } diff --git a/recipes/git/recipe.sh b/recipes/git/recipe.sh index 728f71f8..b985b7e6 100644 --- a/recipes/git/recipe.sh +++ b/recipes/git/recipe.sh @@ -39,7 +39,7 @@ function recipe_build { ac_cv_fread_reads_directories=yes \ ac_cv_snprintf_returns_bogus=yes \ ac_cv_lib_curl_curl_global_init=yes - make "${MAKEFLAGS[@]}" -j"$(nproc)" + $REDOX_MAKE "${MAKEFLAGS[@]}" -j"$($NPROC)" skip=1 } @@ -49,13 +49,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" "${MAKEFLAGS[@]}" install + $REDOX_MAKE DESTDIR="$dest" "${MAKEFLAGS[@]}" install ${STRIP} $1/bin/* || true ${STRIP} $1/libexec/git-core/* || true rm -rf $1/share/man diff --git a/recipes/glib/recipe.sh b/recipes/glib/recipe.sh index ac105727..8522bdc0 100644 --- a/recipes/glib/recipe.sh +++ b/recipes/glib/recipe.sh @@ -23,7 +23,7 @@ function recipe_build { --disable-shared \ --enable-static sed -i 's/#define HAVE_SYS_RESOURCE_H 1/#undef HAVE_SYS_RESOURCE_H/' config.h - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -33,13 +33,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh index 717cf746..f16f944b 100644 --- a/recipes/gnu-binutils/recipe.sh +++ b/recipes/gnu-binutils/recipe.sh @@ -29,7 +29,7 @@ function recipe_build { --disable-gdb \ --disable-nls \ --disable-werror - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -39,13 +39,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install find "$dest/bin" -exec $STRIP {} ';' 2> /dev/null skip=1 } diff --git a/recipes/gnu-grep/recipe.sh b/recipes/gnu-grep/recipe.sh index 691bb7c1..5768da28 100644 --- a/recipes/gnu-grep/recipe.sh +++ b/recipes/gnu-grep/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { export LDFLAGS="-static" ./configure --build=${BUILD} --host=${HOST} --prefix=/ - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -24,13 +24,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install $HOST-strip "$1"/bin/grep rm -rf "$1"/{lib,share} skip=1 diff --git a/recipes/gnu-make/recipe.sh b/recipes/gnu-make/recipe.sh index 35be95ab..085f82ac 100644 --- a/recipes/gnu-make/recipe.sh +++ b/recipes/gnu-make/recipe.sh @@ -19,7 +19,7 @@ function recipe_build { --host=${HOST} \ --prefix=/ \ --without-guile - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -29,12 +29,12 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install skip=1 } diff --git a/recipes/gstreamer/recipe.sh b/recipes/gstreamer/recipe.sh index 9cf1a3e5..0d30ad14 100644 --- a/recipes/gstreamer/recipe.sh +++ b/recipes/gstreamer/recipe.sh @@ -27,7 +27,7 @@ function recipe_build { --disable-benchmarks \ --disable-examples \ --disable-tests - make -j"$(nproc)" V=1 + $REDOX_MAKE -j"$($NPROC)" V=1 skip=1 } @@ -37,13 +37,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/harfbuzz/recipe.sh b/recipes/harfbuzz/recipe.sh index 0b3980bf..5fdada61 100644 --- a/recipes/harfbuzz/recipe.sh +++ b/recipes/harfbuzz/recipe.sh @@ -28,7 +28,7 @@ function recipe_build { --with-glib=yes \ --with-freetype=yes \ --with-icu=no - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -38,13 +38,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/jansson/recipe.sh b/recipes/jansson/recipe.sh index 9cd618aa..d0dd49cb 100644 --- a/recipes/jansson/recipe.sh +++ b/recipes/jansson/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" ./configure --build=${BUILD} --host=${HOST} --prefix=/ - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -26,12 +26,12 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install skip=1 } diff --git a/recipes/kernel/recipe.sh b/recipes/kernel/recipe.sh index a877f5d1..162703cb 100644 --- a/recipes/kernel/recipe.sh +++ b/recipes/kernel/recipe.sh @@ -35,7 +35,7 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } diff --git a/recipes/libc-bench/recipe.sh b/recipes/libc-bench/recipe.sh index a136c82c..441a3cdc 100644 --- a/recipes/libc-bench/recipe.sh +++ b/recipes/libc-bench/recipe.sh @@ -12,7 +12,7 @@ function recipe_update { } function recipe_build { - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -22,7 +22,7 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } diff --git a/recipes/libffi/recipe.sh b/recipes/libffi/recipe.sh index ce7b6506..8fcfdb8a 100644 --- a/recipes/libffi/recipe.sh +++ b/recipes/libffi/recipe.sh @@ -23,7 +23,7 @@ function recipe_build { --prefix=/ \ --disable-shared \ --enable-static - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -33,13 +33,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/libiconv/recipe.sh b/recipes/libiconv/recipe.sh index 12829415..c171111c 100644 --- a/recipes/libiconv/recipe.sh +++ b/recipes/libiconv/recipe.sh @@ -20,7 +20,7 @@ function recipe_build { --disable-shared \ --enable-static \ ac_cv_have_decl_program_invocation_name=no - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -30,13 +30,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/libjpeg/recipe.sh b/recipes/libjpeg/recipe.sh index f37b0c34..fe92adf2 100644 --- a/recipes/libjpeg/recipe.sh +++ b/recipes/libjpeg/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { export LDFLAGS="--static" ./configure --build=${BUILD} --host=${HOST} --prefix='/' - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -24,13 +24,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/libogg/recipe.sh b/recipes/libogg/recipe.sh index e27dbd20..6c2ecfb5 100644 --- a/recipes/libogg/recipe.sh +++ b/recipes/libogg/recipe.sh @@ -19,7 +19,7 @@ function recipe_build { --build=${BUILD} \ --host=${HOST} \ --prefix='' - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -29,13 +29,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/liborbital/recipe.sh b/recipes/liborbital/recipe.sh index 7896aaec..de9d0ec1 100644 --- a/recipes/liborbital/recipe.sh +++ b/recipes/liborbital/recipe.sh @@ -2,6 +2,6 @@ GIT=https://gitlab.redox-os.org/redox-os/liborbital.git function recipe_stage { dest="$(realpath $1)" - make HOST="$HOST" DESTDIR="$dest" install + $REDOX_MAKE HOST="$HOST" DESTDIR="$dest" install skip=1 } diff --git a/recipes/libpng/recipe.sh b/recipes/libpng/recipe.sh index 6d9f93cf..0cd5d4b9 100644 --- a/recipes/libpng/recipe.sh +++ b/recipes/libpng/recipe.sh @@ -19,7 +19,7 @@ function recipe_build { chmod +w config.sub wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --build=${BUILD} --host=${HOST} --prefix='/' - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -29,13 +29,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/bin/"*-config "$dest/lib/"*.la skip=1 } diff --git a/recipes/libsodium/recipe.sh b/recipes/libsodium/recipe.sh index ce7a4c82..7884d783 100644 --- a/recipes/libsodium/recipe.sh +++ b/recipes/libsodium/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { ./autogen.sh ./configure --build=${BUILD} --host=${HOST} --prefix='/' - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -24,12 +24,12 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install skip=1 } diff --git a/recipes/libvorbis/recipe.sh b/recipes/libvorbis/recipe.sh index b5ccafd0..540d7ab5 100644 --- a/recipes/libvorbis/recipe.sh +++ b/recipes/libvorbis/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { --build=${BUILD} \ --host=${HOST} \ --prefix='' - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -28,13 +28,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/libxml2/recipe.sh b/recipes/libxml2/recipe.sh index bf3eed4b..cba66e01 100755 --- a/recipes/libxml2/recipe.sh +++ b/recipes/libxml2/recipe.sh @@ -23,7 +23,7 @@ function recipe_build { --disable-shared \ --enable-static \ --without-python - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -33,13 +33,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/llvm/recipe.sh b/recipes/llvm/recipe.sh index 923f9b18..2ea030ba 100644 --- a/recipes/llvm/recipe.sh +++ b/recipes/llvm/recipe.sh @@ -63,7 +63,7 @@ function recipe_build { ) set -x cmake "${CMAKE_ARGS[@]}" "$source" - make -j$(nproc) + $REDOX_MAKE -j$(nproc) set +x skip=1 } @@ -74,13 +74,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install find "$dest"/bin -exec $STRIP {} ';' 2> /dev/null skip=1 } diff --git a/recipes/lua/recipe.sh b/recipes/lua/recipe.sh index a24d9c08..4501a4bc 100644 --- a/recipes/lua/recipe.sh +++ b/recipes/lua/recipe.sh @@ -12,7 +12,7 @@ function recipe_update { } function recipe_build { - make generic CC="${HOST}-gcc -std=gnu99" -j"$(nproc)" + $REDOX_MAKE generic CC="${HOST}-gcc -std=gnu99" -j"$($NPROC)" skip=1 } @@ -22,7 +22,7 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } diff --git a/recipes/mdp/recipe.sh b/recipes/mdp/recipe.sh index 006a7e9f..9a84cf06 100644 --- a/recipes/mdp/recipe.sh +++ b/recipes/mdp/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include -I$sysroot/include/ncursesw" export LDFLAGS="-L$sysroot/lib" - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -26,12 +26,12 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" PREFIX="" install + $REDOX_MAKE DESTDIR="$dest" PREFIX="" install skip=1 } diff --git a/recipes/mesa/recipe.sh b/recipes/mesa/recipe.sh index 38a7a630..031dd881 100644 --- a/recipes/mesa/recipe.sh +++ b/recipes/mesa/recipe.sh @@ -37,7 +37,7 @@ function recipe_build { --enable-static \ --with-gallium-drivers=swrast \ --with-platforms=surfaceless - make V=1 -j"$(nproc)" + $REDOX_MAKE V=1 -j"$($NPROC)" skip=1 } @@ -47,14 +47,14 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { #export LLVM_CONFIG="x86_64-unknown-redox-llvm-config" dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/mesa_glu/recipe.sh b/recipes/mesa_glu/recipe.sh index 5bb29113..183d4772 100644 --- a/recipes/mesa_glu/recipe.sh +++ b/recipes/mesa_glu/recipe.sh @@ -19,7 +19,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --build=${BUILD} --host="${HOST}" --prefix=/ --enable-osmesa - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -29,13 +29,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/mgba/recipe.sh b/recipes/mgba/recipe.sh index e4da44bd..ae0e0eb1 100644 --- a/recipes/mgba/recipe.sh +++ b/recipes/mgba/recipe.sh @@ -31,7 +31,7 @@ function recipe_build { -DSDL_VERSION="1.2" \ -DSDL_LIBRARY="-lSDL -lorbital" \ .. - VERBOSE=1 make all -j"$(nproc)" + VERBOSE=1 $REDOX_MAKE all -j"$($NPROC)" skip=1 } @@ -41,7 +41,7 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } diff --git a/recipes/nasm/recipe.sh b/recipes/nasm/recipe.sh index 07b6db6c..0707da01 100644 --- a/recipes/nasm/recipe.sh +++ b/recipes/nasm/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { export LDFLAGS="-static" ./configure --build=${BUILD} --host=${HOST} --prefix="" - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -24,13 +24,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make install DESTDIR="$dest" + $REDOX_MAKE install DESTDIR="$dest" find "$dest"/bin -exec ${HOST}-strip {} ';' 2> /dev/null skip=1 } diff --git a/recipes/ncdu/recipe.sh b/recipes/ncdu/recipe.sh index 55f3e368..d4dbbb44 100644 --- a/recipes/ncdu/recipe.sh +++ b/recipes/ncdu/recipe.sh @@ -19,7 +19,7 @@ function recipe_build { --build=${BUILD} \ --host="$HOST" \ --prefix=/ - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } function recipe_test { @@ -27,11 +27,11 @@ function recipe_test { skip=1 } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath "$1")" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install skip=1 } diff --git a/recipes/ncurses/recipe.sh b/recipes/ncurses/recipe.sh index 6add4429..99d1849b 100644 --- a/recipes/ncurses/recipe.sh +++ b/recipes/ncurses/recipe.sh @@ -21,7 +21,7 @@ function recipe_build { --without-ada \ --without-tests \ cf_cv_func_mkstemp=yes - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -31,13 +31,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -rf "$1"/bin rm -rf "$1"/share/{doc,info,man} skip=1 diff --git a/recipes/ncursesw/recipe.sh b/recipes/ncursesw/recipe.sh index e2ab53f4..866d85ed 100644 --- a/recipes/ncursesw/recipe.sh +++ b/recipes/ncursesw/recipe.sh @@ -15,7 +15,7 @@ function recipe_update { function recipe_build { export CPPFLAGS="-P" ./configure --build=${BUILD} --host=${HOST} --prefix="" --enable-widec --disable-db-install - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -25,13 +25,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -rf "$1"/bin rm -rf "$1"/share/{doc,info,man} skip=1 diff --git a/recipes/netsurf/recipe.sh b/recipes/netsurf/recipe.sh index 898ac433..07cd91ec 100644 --- a/recipes/netsurf/recipe.sh +++ b/recipes/netsurf/recipe.sh @@ -20,7 +20,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib -L${PWD}/inst-${TARGET}/lib -static -Wl,--allow-multiple-definition -Wl,-Bstatic" # nghttp2 is not linked for some reason export LDFLAGS="${LDFLAGS} -lcurl -lnghttp2" - make V=1 -j"$(nproc)" + $REDOX_MAKE V=1 -j"$($NPROC)" skip=1 } @@ -30,13 +30,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install mkdir -pv "$dest/ui/apps" cp -v ../manifest "$dest/ui/apps/00_netsurf" skip=1 diff --git a/recipes/neverball/recipe.sh b/recipes/neverball/recipe.sh index 3a0b40a1..0b60264b 100644 --- a/recipes/neverball/recipe.sh +++ b/recipes/neverball/recipe.sh @@ -14,12 +14,12 @@ function recipe_update { function recipe_build { env -i PATH=/usr/bin:/bin PKG_CONFIG=pkg-config \ - make -j"$(nproc)" ENABLE_FS=stdio mapc sols + $REDOX_MAKE -j"$($NPROC)" ENABLE_FS=stdio mapc sols sysroot="$(realpath ../sysroot)" export CPPFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib -static" - make -j"$(nproc)" ENABLE_FS=stdio ENABLE_NLS=0 clean-src - make -j"$(nproc)" ENABLE_FS=stdio ENABLE_NLS=0 neverball neverputt + $REDOX_MAKE -j"$($NPROC)" ENABLE_FS=stdio ENABLE_NLS=0 clean-src + $REDOX_MAKE -j"$($NPROC)" ENABLE_FS=stdio ENABLE_NLS=0 neverball neverputt skip=1 } @@ -29,7 +29,7 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } diff --git a/recipes/newlib/recipe.sh b/recipes/newlib/recipe.sh index 36e79bd4..5270cc06 100644 --- a/recipes/newlib/recipe.sh +++ b/recipes/newlib/recipe.sh @@ -25,7 +25,7 @@ function recipe_build { popd CC= ./configure --build=${BUILD} --target="${HOST}" --prefix=/ - make all -j"$(nproc)" + $REDOX_MAKE all -j"$($NPROC)" skip=1 } @@ -36,13 +36,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install cd "$dest" mv $HOST/* ./ rmdir $HOST diff --git a/recipes/newlibtest/recipe.sh b/recipes/newlibtest/recipe.sh index d1d549d9..23cc6a2b 100644 --- a/recipes/newlibtest/recipe.sh +++ b/recipes/newlibtest/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { export CFLAGS="-static -nostdinc -I $sysroot/include -I /usr/lib/gcc/x86_64-unknown-redox/7.0.1/include/ -nostdlib -L $sysroot/lib" export CRT="$sysroot/lib/crt0.o" export CLIBS="-lc" - make all -j"$(nproc)" + $REDOX_MAKE all -j"$($NPROC)" skip=1 } @@ -26,12 +26,12 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" prefix=/ install + $REDOX_MAKE DESTDIR="$dest" prefix=/ install skip=1 } diff --git a/recipes/nghttp2/recipe.sh b/recipes/nghttp2/recipe.sh index 7b1325c4..95e921d1 100644 --- a/recipes/nghttp2/recipe.sh +++ b/recipes/nghttp2/recipe.sh @@ -19,7 +19,7 @@ function recipe_build { --host="${HOST}" \ --prefix=/ \ --enable-lib-only - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -29,13 +29,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make install DESTDIR="$dest" + $REDOX_MAKE install DESTDIR="$dest" rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/openjazz/recipe.sh b/recipes/openjazz/recipe.sh index 3ccda987..cc201d0c 100644 --- a/recipes/openjazz/recipe.sh +++ b/recipes/openjazz/recipe.sh @@ -22,7 +22,7 @@ function recipe_build { autoconf wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --build=${BUILD} --host=${HOST} --prefix='' - make -j"$(nproc)" V=1 + $REDOX_MAKE -j"$($NPROC)" V=1 skip=1 } @@ -32,12 +32,12 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install skip=1 } diff --git a/recipes/openssl/recipe.sh b/recipes/openssl/recipe.sh index b51b6680..58291a37 100644 --- a/recipes/openssl/recipe.sh +++ b/recipes/openssl/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { ./Configure no-shared no-dgram redox-$ARCH --prefix="/" - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -24,13 +24,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -rf "$1/{share,ssl}" skip=1 } diff --git a/recipes/openttd/recipe.sh b/recipes/openttd/recipe.sh index ba645240..f5a48fa2 100644 --- a/recipes/openttd/recipe.sh +++ b/recipes/openttd/recipe.sh @@ -22,7 +22,7 @@ function recipe_build { --without-liblzo2 \ --disable-network \ --without-threads - make VERBOSE=1 -j"$(nproc)" + $REDOX_MAKE VERBOSE=1 -j"$($NPROC)" skip=1 } @@ -32,7 +32,7 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } @@ -40,7 +40,7 @@ function recipe_stage { dest="$(realpath $1)" bundledir="$dest/bundle" - make VERBOSE=1 ROOT_DIR="$dest/../build/" BUNDLE_DIR="$bundledir" INSTALL_DIR="$dest" install + $REDOX_MAKE VERBOSE=1 ROOT_DIR="$dest/../build/" BUNDLE_DIR="$bundledir" INSTALL_DIR="$dest" install rm -rf "$bundledir" skip=1 } diff --git a/recipes/osdemo/recipe.sh b/recipes/osdemo/recipe.sh index c32f72a0..ef49d877 100644 --- a/recipes/osdemo/recipe.sh +++ b/recipes/osdemo/recipe.sh @@ -30,7 +30,7 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } diff --git a/recipes/pango/recipe.sh b/recipes/pango/recipe.sh index 55de27de..bd2997a7 100755 --- a/recipes/pango/recipe.sh +++ b/recipes/pango/recipe.sh @@ -24,7 +24,7 @@ function recipe_build { --prefix=/ \ --disable-shared \ --enable-static - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -34,13 +34,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/patch/recipe.sh b/recipes/patch/recipe.sh index b0c6a791..8e5a2f9e 100644 --- a/recipes/patch/recipe.sh +++ b/recipes/patch/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub autoreconf ./configure --build=${BUILD} --host=${HOST} --prefix=/ - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -26,13 +26,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install $HOST-strip $1/bin/* rm -rf "$1/"{share,lib} skip=1 diff --git a/recipes/pcre/recipe.sh b/recipes/pcre/recipe.sh index b6f3df1b..e39f4f22 100644 --- a/recipes/pcre/recipe.sh +++ b/recipes/pcre/recipe.sh @@ -22,7 +22,7 @@ function recipe_build { --prefix=/ \ --disable-shared \ --enable-static - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -32,13 +32,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/perl/recipe.sh b/recipes/perl/recipe.sh index b4bd646a..c780b5f9 100644 --- a/recipes/perl/recipe.sh +++ b/recipes/perl/recipe.sh @@ -22,7 +22,7 @@ function recipe_build { sed -i "s/^#define Netdb_name_t.*/#define Netdb_name_t const char*/" config.h # XXX sed -i 's/#define Strerror(e).*$/#define Strerror(e) strerror(e)/' config.h # echo "#define HAS_VPRINTF" >> config.h - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -32,13 +32,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -rf "$1/man" skip=1 } diff --git a/recipes/pixman/recipe.sh b/recipes/pixman/recipe.sh index 59338056..64d87a41 100755 --- a/recipes/pixman/recipe.sh +++ b/recipes/pixman/recipe.sh @@ -19,7 +19,7 @@ function recipe_build { --prefix=/ \ --disable-shared \ --enable-static - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -29,13 +29,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/pkg-config/recipe.sh b/recipes/pkg-config/recipe.sh index 6f514dae..0a5a208b 100755 --- a/recipes/pkg-config/recipe.sh +++ b/recipes/pkg-config/recipe.sh @@ -21,7 +21,7 @@ function recipe_build { --prefix="" \ --disable-shared \ --enable-static - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -31,13 +31,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { export DESTDIR="$(realpath $1)" - make install + $REDOX_MAKE install rm -f "${DESTDIR}/lib/"*.la skip=1 } diff --git a/recipes/prboom/recipe.sh b/recipes/prboom/recipe.sh index 67843791..8827ec2f 100644 --- a/recipes/prboom/recipe.sh +++ b/recipes/prboom/recipe.sh @@ -26,7 +26,7 @@ function recipe_build { --disable-gl \ --without-net \ --with-sdl-prefix="$sysroot" - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -36,12 +36,12 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install skip=1 } diff --git a/recipes/python/recipe.sh b/recipes/python/recipe.sh index 7a024f10..f0a87ab7 100644 --- a/recipes/python/recipe.sh +++ b/recipes/python/recipe.sh @@ -26,7 +26,7 @@ function recipe_build { sed -i 's|#define HAVE_PTHREAD_KILL 1|/* #undef HAVE_PTHREAD_KILL */|g' pyconfig.h sed -i 's|#define HAVE_SCHED_SETSCHEDULER 1|/* #undef HAVE_SCHED_SETSCHEDULER */|g' pyconfig.h sed -i 's|#define HAVE_SYS_RESOURCE_H 1|/* #undef HAVE_SYS_RESOURCE_H */|g' pyconfig.h - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -36,13 +36,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install -j"$(nproc)" + $REDOX_MAKE DESTDIR="$dest" install -j"$($NPROC)" "$STRIP" "$dest/bin/python3.7" "$dest/bin/python3.7m" skip=1 } diff --git a/recipes/qemu/recipe.sh b/recipes/qemu/recipe.sh index 3bb11eb7..d5666cb1 100644 --- a/recipes/qemu/recipe.sh +++ b/recipes/qemu/recipe.sh @@ -21,7 +21,7 @@ function recipe_build { --build=${BUILD} \ --host="${HOST}" \ --prefix=/ - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -31,14 +31,14 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { #export LLVM_CONFIG="x86_64-unknown-redox-llvm-config" dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/readline/recipe.sh b/recipes/readline/recipe.sh index d082c0b9..e3f2b821 100644 --- a/recipes/readline/recipe.sh +++ b/recipes/readline/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" export CFLAGS="-I$sysroot/include" ./configure --disable-shared --build=${BUILD} --host=${HOST} --prefix="" - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -27,13 +27,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -rf "$1"/share/{doc,info,man} skip=1 } diff --git a/recipes/relibc-tests/recipe.sh b/recipes/relibc-tests/recipe.sh index 56df0194..bc89e71f 100644 --- a/recipes/relibc-tests/recipe.sh +++ b/recipes/relibc-tests/recipe.sh @@ -1,7 +1,7 @@ GIT=https://gitlab.redox-os.org/redox-os/relibc.git function recipe_build { - make CARGO=xargo NATIVE_RELIBC=1 -C tests -j"$(nproc)" + $REDOX_MAKE CARGO=xargo NATIVE_RELIBC=1 -C tests -j"$($NPROC)" skip=1 } diff --git a/recipes/relibc/recipe.sh b/recipes/relibc/recipe.sh index 87f665e5..4c561da6 100644 --- a/recipes/relibc/recipe.sh +++ b/recipes/relibc/recipe.sh @@ -1,12 +1,12 @@ GIT=https://gitlab.redox-os.org/redox-os/relibc.git function recipe_build { - make CARGO="env -u CARGO xargo" -j"$(nproc)" + $REDOX_MAKE CARGO="env -u CARGO xargo" -j"$($NPROC)" skip=1 } function recipe_stage { dest="$(realpath $1)" - make CARGO="env -u CARGO xargo" DESTDIR="$dest" install + $REDOX_MAKE CARGO="env -u CARGO xargo" DESTDIR="$dest" install skip=1 } diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index c5495d09..02a3fd4e 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -28,7 +28,7 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } diff --git a/recipes/schismtracker/recipe.sh b/recipes/schismtracker/recipe.sh index 933d1efd..3d381300 100644 --- a/recipes/schismtracker/recipe.sh +++ b/recipes/schismtracker/recipe.sh @@ -20,7 +20,7 @@ function recipe_build { export SDL_CONFIG="$sysroot/bin/sdl-config" autoreconf -i ./configure --build=${BUILD} --host=${HOST} --prefix='' - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -30,12 +30,12 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install skip=1 } diff --git a/recipes/scummvm/recipe.sh b/recipes/scummvm/recipe.sh index e0303fb0..df3b2327 100644 --- a/recipes/scummvm/recipe.sh +++ b/recipes/scummvm/recipe.sh @@ -26,7 +26,7 @@ function recipe_build { --with-zlib-prefix="$sysroot" \ --disable-timidity \ --disable-mt32emu - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -36,12 +36,12 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install skip=1 } diff --git a/recipes/sdl-player/recipe.sh b/recipes/sdl-player/recipe.sh index 0aedb7f7..4af3a0a1 100644 --- a/recipes/sdl-player/recipe.sh +++ b/recipes/sdl-player/recipe.sh @@ -15,7 +15,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export CPPFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib -static" - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -25,7 +25,7 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } diff --git a/recipes/sdl/recipe.sh b/recipes/sdl/recipe.sh index 0d9aaed2..250a4055 100644 --- a/recipes/sdl/recipe.sh +++ b/recipes/sdl/recipe.sh @@ -28,7 +28,7 @@ function recipe_build { --enable-redoxaudio \ --enable-clock_gettime \ --enable-video-orbital - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -38,13 +38,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/sdl2/recipe.sh b/recipes/sdl2/recipe.sh index f8849551..8b68fe7f 100644 --- a/recipes/sdl2/recipe.sh +++ b/recipes/sdl2/recipe.sh @@ -32,7 +32,7 @@ function recipe_build { --enable-video-orbital \ --enable-redoxaudio \ --enable-cdrom - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -42,13 +42,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/sdl2_image/recipe.sh b/recipes/sdl2_image/recipe.sh index 7a52bb28..1b8ecc88 100644 --- a/recipes/sdl2_image/recipe.sh +++ b/recipes/sdl2_image/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" export SDL_LIBS="-lSDL2 -lorbital $("${PKG_CONFIG}" --libs glu) -lglapi -lz -lm -lpthread -lstdc++" ./configure --prefix=/ --build=${BUILD} --host=${HOST} --disable-shared --disable-sdltest --enable-png --enable-jpg - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -28,13 +28,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/sdl2_mixer/recipe.sh b/recipes/sdl2_mixer/recipe.sh index d282e05d..1f52295c 100644 --- a/recipes/sdl2_mixer/recipe.sh +++ b/recipes/sdl2_mixer/recipe.sh @@ -30,7 +30,7 @@ function recipe_build { --disable-smpegtest \ --disable-music-midi \ --disable-music-mod - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -40,13 +40,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/sdl2_ttf/recipe.sh b/recipes/sdl2_ttf/recipe.sh index c1a942b2..203b66ac 100644 --- a/recipes/sdl2_ttf/recipe.sh +++ b/recipes/sdl2_ttf/recipe.sh @@ -19,7 +19,7 @@ function recipe_build { export SDL_LIBS="-lSDL2 -lorbital $("${PKG_CONFIG}" --libs glu) -lglapi -lz -lm -lpthread -lstdc++" ./autogen.sh ./configure --prefix=/ --build=${BUILD} --host=${HOST} --enable-opengl --disable-shared --disable-sdltest - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -29,13 +29,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/sdl_gfx/recipe.sh b/recipes/sdl_gfx/recipe.sh index bc9566e9..4915fbcf 100644 --- a/recipes/sdl_gfx/recipe.sh +++ b/recipes/sdl_gfx/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" ./autogen.sh ./configure --prefix=/ --build=${BUILD} --host=${HOST} --disable-shared - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -28,13 +28,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/sdl_image/recipe.sh b/recipes/sdl_image/recipe.sh index c7eefdd7..2a199e88 100644 --- a/recipes/sdl_image/recipe.sh +++ b/recipes/sdl_image/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" ./autogen.sh ./configure --prefix=/ --build=${BUILD} --host=${HOST} --disable-shared --disable-sdltest --enable-png --enable-jpg - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -28,13 +28,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/sdl_mixer/recipe.sh b/recipes/sdl_mixer/recipe.sh index 072bb1e9..4dddfc6c 100644 --- a/recipes/sdl_mixer/recipe.sh +++ b/recipes/sdl_mixer/recipe.sh @@ -30,7 +30,7 @@ function recipe_build { --disable-smpegtest \ --disable-music-midi \ --disable-music-mod - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -40,13 +40,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/sdl_ttf/recipe.sh b/recipes/sdl_ttf/recipe.sh index 07cee556..dc4f19d6 100644 --- a/recipes/sdl_ttf/recipe.sh +++ b/recipes/sdl_ttf/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" ./autogen.sh ./configure --prefix=/ --build=${BUILD} --host=${HOST} --disable-shared - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -28,13 +28,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/sed/recipe.sh b/recipes/sed/recipe.sh index 90105f47..840a0bc9 100644 --- a/recipes/sed/recipe.sh +++ b/recipes/sed/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { --build=${BUILD} \ --host=${HOST} \ --prefix=/ - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -27,12 +27,12 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install skip=1 } diff --git a/recipes/shared-mime-info/recipe.sh b/recipes/shared-mime-info/recipe.sh index 93604944..e2f76402 100755 --- a/recipes/shared-mime-info/recipe.sh +++ b/recipes/shared-mime-info/recipe.sh @@ -30,13 +30,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/sopwith/recipe.sh b/recipes/sopwith/recipe.sh index 4f4603f9..7cc18a06 100644 --- a/recipes/sopwith/recipe.sh +++ b/recipes/sopwith/recipe.sh @@ -23,7 +23,7 @@ function recipe_build { --host=${HOST} \ --prefix='' \ --with-sdl-prefix="$sysroot" - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -33,12 +33,12 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install skip=1 } diff --git a/recipes/ssh/recipe.sh b/recipes/ssh/recipe.sh index f2136836..54a1917c 100644 --- a/recipes/ssh/recipe.sh +++ b/recipes/ssh/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" ./configure --build=${BUILD} --host=${HOST} --prefix=/ - make -j$(nproc) + $REDOX_MAKE -j$(nproc) skip=1 } @@ -27,12 +27,12 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install skip=1 } diff --git a/recipes/syobonaction/recipe.sh b/recipes/syobonaction/recipe.sh index f4475d1b..d50ce497 100644 --- a/recipes/syobonaction/recipe.sh +++ b/recipes/syobonaction/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { export SDL_CONFIG="${PKG_CONFIG} sdl" export CPPFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -27,7 +27,7 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } diff --git a/recipes/timidity/recipe.sh b/recipes/timidity/recipe.sh index 3c73161d..b2f2f5cf 100644 --- a/recipes/timidity/recipe.sh +++ b/recipes/timidity/recipe.sh @@ -22,7 +22,7 @@ function recipe_build { --host=${HOST} \ --prefix='' \ --enable-vt100 - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -32,13 +32,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install mkdir -pv "$1/share/timidity" echo "soundfont /share/generaluser-gs/generaluser-gs.sf2" >> "$1/share/timidity/timidity.cfg" diff --git a/recipes/vice/recipe.sh b/recipes/vice/recipe.sh index 9146c873..f2b822e5 100644 --- a/recipes/vice/recipe.sh +++ b/recipes/vice/recipe.sh @@ -31,7 +31,7 @@ function recipe_build { --disable-rs232 \ --disable-realdevice \ --disable-midi - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -41,12 +41,12 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install skip=1 } diff --git a/recipes/vim/recipe.sh b/recipes/vim/recipe.sh index c4f9ae03..f0947359 100644 --- a/recipes/vim/recipe.sh +++ b/recipes/vim/recipe.sh @@ -25,7 +25,7 @@ function recipe_build { export vim_cv_stat_ignores_slash=yes export vim_cv_memmove_handles_overlap=yes ./configure --build=${BUILD} --host=${HOST} --prefix=/ --with-tlib=ncurses - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -35,12 +35,12 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" ${MAKEFLAGS} install + $REDOX_MAKE DESTDIR="$dest" ${MAKEFLAGS} install skip=1 } diff --git a/recipes/vttest/recipe.sh b/recipes/vttest/recipe.sh index 8b2b106d..1898c5eb 100644 --- a/recipes/vttest/recipe.sh +++ b/recipes/vttest/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { --build=${BUILD} \ --host=${HOST} \ --prefix='' - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -28,12 +28,12 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install skip=1 } diff --git a/recipes/vvvvvv/recipe.sh b/recipes/vvvvvv/recipe.sh index 2fe0e19d..05debb53 100644 --- a/recipes/vvvvvv/recipe.sh +++ b/recipes/vvvvvv/recipe.sh @@ -21,7 +21,7 @@ function recipe_build { -DSDL2_LIBRARIES="-static -lSDL2main -lSDL2_mixer -lSDL2 $("${PKG_CONFIG}" --libs glu) -lglapi -lorbital -lz -lvorbisfile -lvorbis -logg" \ . - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } diff --git a/recipes/wesnoth/recipe.sh b/recipes/wesnoth/recipe.sh index b258c15b..407ba87b 100644 --- a/recipes/wesnoth/recipe.sh +++ b/recipes/wesnoth/recipe.sh @@ -49,7 +49,7 @@ function recipe_build { -DVORBISFILE_INCLUDE_DIR="${sysroot}/include" \ -DVORBISFILE_LIBRARY=vorbisfile \ .. - VERBOSE=1 make all -j"$(nproc)" + VERBOSE=1 $REDOX_MAKE all -j"$($NPROC)" set +x skip=1 } diff --git a/recipes/xz/recipe.sh b/recipes/xz/recipe.sh index b82f8240..c136f7f4 100644 --- a/recipes/xz/recipe.sh +++ b/recipes/xz/recipe.sh @@ -38,7 +38,7 @@ function recipe_build { --enable-static=yes \ --enable-threads=no \ --with-pic=no - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -48,13 +48,13 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install rm -rf "$dest/share" skip=1 } diff --git a/recipes/zlib/recipe.sh b/recipes/zlib/recipe.sh index bbe7bd1a..7bc4c5f0 100644 --- a/recipes/zlib/recipe.sh +++ b/recipes/zlib/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { # See https://stackoverflow.com/questions/21396988/zlib-build-not-configuring-properly-with-cross-compiler-ignores-ar. CHOST=x86_64-unknown-redox ./configure --static --prefix=/ - make -j"$(nproc)" + $REDOX_MAKE -j"$($NPROC)" skip=1 } @@ -24,12 +24,12 @@ function recipe_test { } function recipe_clean { - make clean + $REDOX_MAKE clean skip=1 } function recipe_stage { dest="$(realpath $1)" - make DESTDIR="$dest" install + $REDOX_MAKE DESTDIR="$dest" install skip=1 } From d0e33c53ef244272df3f81c3a7942870d72d1087 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 6 May 2020 09:15:18 -0600 Subject: [PATCH 0763/3180] Quote REDOX_MAKE variable --- recipes/atk/recipe.sh | 6 +++--- recipes/autoconf/recipe.sh | 6 +++--- recipes/automake/recipe.sh | 6 +++--- recipes/bash/recipe.sh | 6 +++--- recipes/bootloader/recipe.sh | 2 +- recipes/cairo/recipe.sh | 6 +++--- recipes/cairodemo/recipe.sh | 2 +- recipes/cmatrix/recipe.sh | 6 +++--- recipes/curl/recipe.sh | 6 +++--- recipes/dash/recipe.sh | 6 +++--- recipes/diffutils/recipe.sh | 6 +++--- recipes/dosbox/recipe.sh | 6 +++--- recipes/duktape/recipe.sh | 4 ++-- recipes/eduke32/recipe.sh | 4 ++-- recipes/expat/recipe.sh | 6 +++--- recipes/ffmpeg/recipe.sh | 6 +++--- recipes/fontconfig/recipe.sh | 6 +++--- recipes/freeciv/recipe.sh | 6 +++--- recipes/freeglut/recipe.sh | 6 +++--- recipes/freetype/recipe.sh | 6 +++--- recipes/fribidi/recipe.sh | 6 +++--- recipes/gawk/recipe.sh | 6 +++--- recipes/gcc/recipe.sh | 6 +++--- recipes/gdk-pixbuf/recipe.sh | 2 +- recipes/gears/recipe.sh | 2 +- recipes/gettext/recipe.sh | 6 +++--- recipes/gigalomania/recipe.sh | 6 +++--- recipes/git/recipe.sh | 6 +++--- recipes/glib/recipe.sh | 6 +++--- recipes/gnu-binutils/recipe.sh | 6 +++--- recipes/gnu-grep/recipe.sh | 6 +++--- recipes/gnu-make/recipe.sh | 6 +++--- recipes/gstreamer/recipe.sh | 6 +++--- recipes/harfbuzz/recipe.sh | 6 +++--- recipes/jansson/recipe.sh | 6 +++--- recipes/kernel/recipe.sh | 2 +- recipes/libc-bench/recipe.sh | 4 ++-- recipes/libffi/recipe.sh | 6 +++--- recipes/libiconv/recipe.sh | 6 +++--- recipes/libjpeg/recipe.sh | 6 +++--- recipes/libogg/recipe.sh | 6 +++--- recipes/liborbital/recipe.sh | 2 +- recipes/libpng/recipe.sh | 6 +++--- recipes/libsodium/recipe.sh | 6 +++--- recipes/libvorbis/recipe.sh | 6 +++--- recipes/libxml2/recipe.sh | 6 +++--- recipes/llvm/recipe.sh | 6 +++--- recipes/lua/recipe.sh | 4 ++-- recipes/mdp/recipe.sh | 6 +++--- recipes/mesa/recipe.sh | 6 +++--- recipes/mesa_glu/recipe.sh | 6 +++--- recipes/mgba/recipe.sh | 4 ++-- recipes/nasm/recipe.sh | 6 +++--- recipes/ncdu/recipe.sh | 6 +++--- recipes/ncurses/recipe.sh | 6 +++--- recipes/ncursesw/recipe.sh | 6 +++--- recipes/netsurf/recipe.sh | 6 +++--- recipes/neverball/recipe.sh | 8 ++++---- recipes/newlib/recipe.sh | 6 +++--- recipes/newlibtest/recipe.sh | 6 +++--- recipes/nghttp2/recipe.sh | 6 +++--- recipes/openjazz/recipe.sh | 6 +++--- recipes/openssl/recipe.sh | 6 +++--- recipes/openttd/recipe.sh | 6 +++--- recipes/osdemo/recipe.sh | 2 +- recipes/pango/recipe.sh | 6 +++--- recipes/patch/recipe.sh | 6 +++--- recipes/pcre/recipe.sh | 6 +++--- recipes/perl/recipe.sh | 6 +++--- recipes/pixman/recipe.sh | 6 +++--- recipes/pkg-config/recipe.sh | 6 +++--- recipes/prboom/recipe.sh | 6 +++--- recipes/python/recipe.sh | 6 +++--- recipes/qemu/recipe.sh | 6 +++--- recipes/readline/recipe.sh | 6 +++--- recipes/relibc-tests/recipe.sh | 2 +- recipes/relibc/recipe.sh | 4 ++-- recipes/rust/recipe.sh | 2 +- recipes/schismtracker/recipe.sh | 6 +++--- recipes/scummvm/recipe.sh | 6 +++--- recipes/sdl-player/recipe.sh | 4 ++-- recipes/sdl/recipe.sh | 6 +++--- recipes/sdl2/recipe.sh | 6 +++--- recipes/sdl2_image/recipe.sh | 6 +++--- recipes/sdl2_mixer/recipe.sh | 6 +++--- recipes/sdl2_ttf/recipe.sh | 6 +++--- recipes/sdl_gfx/recipe.sh | 6 +++--- recipes/sdl_image/recipe.sh | 6 +++--- recipes/sdl_mixer/recipe.sh | 6 +++--- recipes/sdl_ttf/recipe.sh | 6 +++--- recipes/sed/recipe.sh | 6 +++--- recipes/shared-mime-info/recipe.sh | 4 ++-- recipes/sopwith/recipe.sh | 6 +++--- recipes/ssh/recipe.sh | 6 +++--- recipes/syobonaction/recipe.sh | 4 ++-- recipes/timidity/recipe.sh | 6 +++--- recipes/vice/recipe.sh | 6 +++--- recipes/vim/recipe.sh | 6 +++--- recipes/vttest/recipe.sh | 6 +++--- recipes/vvvvvv/recipe.sh | 2 +- recipes/wesnoth/recipe.sh | 2 +- recipes/xz/recipe.sh | 6 +++--- recipes/zlib/recipe.sh | 6 +++--- 103 files changed, 279 insertions(+), 279 deletions(-) diff --git a/recipes/atk/recipe.sh b/recipes/atk/recipe.sh index da84b8e7..802853de 100755 --- a/recipes/atk/recipe.sh +++ b/recipes/atk/recipe.sh @@ -25,7 +25,7 @@ function recipe_build { --prefix=/ \ --disable-shared \ --enable-static - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -35,13 +35,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/autoconf/recipe.sh b/recipes/autoconf/recipe.sh index 96fbf5d2..ff9e0242 100644 --- a/recipes/autoconf/recipe.sh +++ b/recipes/autoconf/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --build=${BUILD} --host=${HOST} --prefix='' - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -24,12 +24,12 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install skip=1 } diff --git a/recipes/automake/recipe.sh b/recipes/automake/recipe.sh index b008fc60..92649e64 100644 --- a/recipes/automake/recipe.sh +++ b/recipes/automake/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { sed -i 's|install-info-am install-man|install-info-am|' Makefile.in ./configure --build=${BUILD} --host=${HOST} --prefix='' - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -27,12 +27,12 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install skip=1 } diff --git a/recipes/bash/recipe.sh b/recipes/bash/recipe.sh index 2c8a2767..c0a952e0 100644 --- a/recipes/bash/recipe.sh +++ b/recipes/bash/recipe.sh @@ -23,7 +23,7 @@ function recipe_build { --prefix=/ \ --disable-readline \ bash_cv_getenv_redef=no - $REDOX_MAKE # -j"$($NPROC)" + "$REDOX_MAKE" # -j"$($NPROC)" skip=1 } @@ -33,12 +33,12 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" ${MAKEFLAGS} install + "$REDOX_MAKE" DESTDIR="$dest" ${MAKEFLAGS} install skip=1 } diff --git a/recipes/bootloader/recipe.sh b/recipes/bootloader/recipe.sh index 14aed1fe..b91ed3e5 100644 --- a/recipes/bootloader/recipe.sh +++ b/recipes/bootloader/recipe.sh @@ -21,7 +21,7 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } diff --git a/recipes/cairo/recipe.sh b/recipes/cairo/recipe.sh index 54deb8cb..d20973a3 100755 --- a/recipes/cairo/recipe.sh +++ b/recipes/cairo/recipe.sh @@ -27,7 +27,7 @@ function recipe_build { --enable-xlib=no \ --enable-script=no \ --enable-interpreter=no - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -37,13 +37,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/cairodemo/recipe.sh b/recipes/cairodemo/recipe.sh index 2e697652..b26b42cf 100755 --- a/recipes/cairodemo/recipe.sh +++ b/recipes/cairodemo/recipe.sh @@ -32,7 +32,7 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } diff --git a/recipes/cmatrix/recipe.sh b/recipes/cmatrix/recipe.sh index f5b50491..d721f308 100644 --- a/recipes/cmatrix/recipe.sh +++ b/recipes/cmatrix/recipe.sh @@ -23,7 +23,7 @@ function recipe_build { --prefix=/ \ --without-fonts sed -i'' -e 's|#define USE_TIOCSTI 1|/* #undef USE_TIOCSTI */|g' config.h - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -33,12 +33,12 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install skip=1 } diff --git a/recipes/curl/recipe.sh b/recipes/curl/recipe.sh index 51919803..3222b8e0 100644 --- a/recipes/curl/recipe.sh +++ b/recipes/curl/recipe.sh @@ -36,7 +36,7 @@ function recipe_build { --with-nghttp2="$sysroot" \ --with-ssl="$sysroot" \ --with-zlib="$sysroot" - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -46,13 +46,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/dash/recipe.sh b/recipes/dash/recipe.sh index 5df401ad..b4e9ee7e 100644 --- a/recipes/dash/recipe.sh +++ b/recipes/dash/recipe.sh @@ -22,7 +22,7 @@ function recipe_build { # See https://stackoverflow.com/questions/4247068/sed-command-with-i-option-failing-on-mac-but-works-on-linux. sed -i'' -e 's|#define HAVE_GETRLIMIT 1|/* #undef HAVE_GETRLIMIT */|g' config.h - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -32,13 +32,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install ln -s "dash" "$dest/bin/sh" skip=1 } diff --git a/recipes/diffutils/recipe.sh b/recipes/diffutils/recipe.sh index 2568e48a..5d2cc77b 100644 --- a/recipes/diffutils/recipe.sh +++ b/recipes/diffutils/recipe.sh @@ -23,7 +23,7 @@ function recipe_build { gt_cv_locale_ja=false \ gt_cv_locale_tr_utf8=false \ gt_cv_locale_zh_CN=false - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -33,13 +33,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install ${HOST}-strip "$dest"/bin/* rm -rf "$dest"/{lib,share} skip=1 diff --git a/recipes/dosbox/recipe.sh b/recipes/dosbox/recipe.sh index 845bdb89..e6b121fc 100644 --- a/recipes/dosbox/recipe.sh +++ b/recipes/dosbox/recipe.sh @@ -26,7 +26,7 @@ function recipe_build { --disable-opengl \ --disable-sdltest \ --with-sdl-prefix="$sysroot" - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -36,12 +36,12 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install skip=1 } diff --git a/recipes/duktape/recipe.sh b/recipes/duktape/recipe.sh index d2560228..5b8ccb92 100644 --- a/recipes/duktape/recipe.sh +++ b/recipes/duktape/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { function recipe_build { sed -i "s/= gcc/= $TARGET-gcc/g" Makefile.cmdline - $REDOX_MAKE -f Makefile.cmdline -j"$($NPROC)" + "$REDOX_MAKE" -f Makefile.cmdline -j"$($NPROC)" skip=1 } @@ -23,7 +23,7 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } diff --git a/recipes/eduke32/recipe.sh b/recipes/eduke32/recipe.sh index 72595dc7..a67de8d4 100644 --- a/recipes/eduke32/recipe.sh +++ b/recipes/eduke32/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib -static" export SDLCONFIG="$sysroot/bin/sdl-config --prefix=$sysroot" - PLATFORM=REDOX $REDOX_MAKE -j"$($NPROC)" + PLATFORM=REDOX "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -28,7 +28,7 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } diff --git a/recipes/expat/recipe.sh b/recipes/expat/recipe.sh index 68b9f60a..9a0dbaaa 100644 --- a/recipes/expat/recipe.sh +++ b/recipes/expat/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { export LDFLAGS="--static" ./configure --build=${BUILD} --host=${HOST} --prefix=/ - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -24,13 +24,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/ffmpeg/recipe.sh b/recipes/ffmpeg/recipe.sh index de5ea97a..4ec76020 100644 --- a/recipes/ffmpeg/recipe.sh +++ b/recipes/ffmpeg/recipe.sh @@ -27,7 +27,7 @@ function recipe_build { --enable-zlib \ --enable-encoder=png \ --enable-decoder=png - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -37,12 +37,12 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install skip=1 } diff --git a/recipes/fontconfig/recipe.sh b/recipes/fontconfig/recipe.sh index 8c459061..645dd8b6 100755 --- a/recipes/fontconfig/recipe.sh +++ b/recipes/fontconfig/recipe.sh @@ -24,7 +24,7 @@ function recipe_build { --disable-shared \ --enable-static \ ac_cv_func_XML_SetDoctypeDeclHandler=yes - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -34,13 +34,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/freeciv/recipe.sh b/recipes/freeciv/recipe.sh index 48aa19a7..9caae43a 100644 --- a/recipes/freeciv/recipe.sh +++ b/recipes/freeciv/recipe.sh @@ -30,7 +30,7 @@ function recipe_build { ac_cv_lib_SDL_image_IMG_Load=yes \ ac_cv_lib_SDL_ttf_TTF_OpenFont=yes \ ac_cv_lib_SDL_gfx_rotozoomSurface=yes - $REDOX_MAKE -j"$($NPROC)" V=1 + "$REDOX_MAKE" -j"$($NPROC)" V=1 skip=1 } @@ -40,12 +40,12 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install skip=1 } diff --git a/recipes/freeglut/recipe.sh b/recipes/freeglut/recipe.sh index 810883e4..b95be4ce 100644 --- a/recipes/freeglut/recipe.sh +++ b/recipes/freeglut/recipe.sh @@ -23,7 +23,7 @@ function recipe_build { -D FREEGLUT_GLES=0 \ . #./configure --host="${HOST}" --prefix=/ --enable-osmesa - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -33,12 +33,12 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install skip=1 } diff --git a/recipes/freetype/recipe.sh b/recipes/freetype/recipe.sh index e150fe01..ae71650c 100644 --- a/recipes/freetype/recipe.sh +++ b/recipes/freetype/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" ./configure --build=${BUILD} --host=${HOST} --prefix='/' - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -27,13 +27,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/fribidi/recipe.sh b/recipes/fribidi/recipe.sh index 4ed952c0..c48a7309 100755 --- a/recipes/fribidi/recipe.sh +++ b/recipes/fribidi/recipe.sh @@ -23,7 +23,7 @@ function recipe_build { --disable-shared \ --enable-static sed -i 's|#define HAVE_SYS_TIMES_H 1|/* #undef HAVE_SYS_TIMES_H */|g' config.h - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -33,13 +33,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/gawk/recipe.sh b/recipes/gawk/recipe.sh index 5f57628b..e83aec7b 100644 --- a/recipes/gawk/recipe.sh +++ b/recipes/gawk/recipe.sh @@ -9,7 +9,7 @@ function recipe_update { function recipe_build { ./configure --build=${BUILD} --host=${HOST} --prefix=/ ac_cv_func_gethostbyname=no ac_cv_func_connect=no - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -19,12 +19,12 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install skip=1 } diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index 56ac71cb..c63ecb87 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -40,7 +40,7 @@ function recipe_build { --disable-nls \ --enable-languages=c,c++ \ --enable-threads=posix - $REDOX_MAKE -j "$(nproc)" all-gcc all-target-libgcc all-target-libstdc++-v3 + "$REDOX_MAKE" -j "$(nproc)" all-gcc all-target-libgcc all-target-libstdc++-v3 skip=1 } @@ -50,13 +50,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install-gcc install-target-libgcc install-target-libstdc++-v3 + "$REDOX_MAKE" DESTDIR="$dest" install-gcc install-target-libgcc install-target-libstdc++-v3 find "$dest"/{bin,libexec} -exec $STRIP {} ';' 2> /dev/null ln -s "gcc" "$1/bin/cc" skip=1 diff --git a/recipes/gdk-pixbuf/recipe.sh b/recipes/gdk-pixbuf/recipe.sh index e47210c3..457461dd 100755 --- a/recipes/gdk-pixbuf/recipe.sh +++ b/recipes/gdk-pixbuf/recipe.sh @@ -68,7 +68,7 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } diff --git a/recipes/gears/recipe.sh b/recipes/gears/recipe.sh index bf13b41c..ea1114b4 100644 --- a/recipes/gears/recipe.sh +++ b/recipes/gears/recipe.sh @@ -30,7 +30,7 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } diff --git a/recipes/gettext/recipe.sh b/recipes/gettext/recipe.sh index 2e31ff24..056f0959 100644 --- a/recipes/gettext/recipe.sh +++ b/recipes/gettext/recipe.sh @@ -29,7 +29,7 @@ function recipe_build { gt_cv_locale_ja=false \ gt_cv_locale_tr_utf8=false \ gt_cv_locale_zh_CN=false - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -39,13 +39,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/gigalomania/recipe.sh b/recipes/gigalomania/recipe.sh index 2a3d295b..9b29ce3b 100644 --- a/recipes/gigalomania/recipe.sh +++ b/recipes/gigalomania/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" - $REDOX_MAKE all -j"$($NPROC)" + "$REDOX_MAKE" all -j"$($NPROC)" skip=1 } @@ -28,7 +28,7 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } @@ -36,7 +36,7 @@ function recipe_stage { dest="$(realpath $1)" bundledir="$dest/bundle" - $REDOX_MAKE VERBOSE=1 DESTDIR="$dest" install + "$REDOX_MAKE" VERBOSE=1 DESTDIR="$dest" install rm -rf "$bundledir" skip=1 } diff --git a/recipes/git/recipe.sh b/recipes/git/recipe.sh index b985b7e6..ab8edf0c 100644 --- a/recipes/git/recipe.sh +++ b/recipes/git/recipe.sh @@ -39,7 +39,7 @@ function recipe_build { ac_cv_fread_reads_directories=yes \ ac_cv_snprintf_returns_bogus=yes \ ac_cv_lib_curl_curl_global_init=yes - $REDOX_MAKE "${MAKEFLAGS[@]}" -j"$($NPROC)" + "$REDOX_MAKE" "${MAKEFLAGS[@]}" -j"$($NPROC)" skip=1 } @@ -49,13 +49,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" "${MAKEFLAGS[@]}" install + "$REDOX_MAKE" DESTDIR="$dest" "${MAKEFLAGS[@]}" install ${STRIP} $1/bin/* || true ${STRIP} $1/libexec/git-core/* || true rm -rf $1/share/man diff --git a/recipes/glib/recipe.sh b/recipes/glib/recipe.sh index 8522bdc0..a04a50b6 100644 --- a/recipes/glib/recipe.sh +++ b/recipes/glib/recipe.sh @@ -23,7 +23,7 @@ function recipe_build { --disable-shared \ --enable-static sed -i 's/#define HAVE_SYS_RESOURCE_H 1/#undef HAVE_SYS_RESOURCE_H/' config.h - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -33,13 +33,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh index f16f944b..bca6e157 100644 --- a/recipes/gnu-binutils/recipe.sh +++ b/recipes/gnu-binutils/recipe.sh @@ -29,7 +29,7 @@ function recipe_build { --disable-gdb \ --disable-nls \ --disable-werror - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -39,13 +39,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install find "$dest/bin" -exec $STRIP {} ';' 2> /dev/null skip=1 } diff --git a/recipes/gnu-grep/recipe.sh b/recipes/gnu-grep/recipe.sh index 5768da28..f68e9cd2 100644 --- a/recipes/gnu-grep/recipe.sh +++ b/recipes/gnu-grep/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { export LDFLAGS="-static" ./configure --build=${BUILD} --host=${HOST} --prefix=/ - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -24,13 +24,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install $HOST-strip "$1"/bin/grep rm -rf "$1"/{lib,share} skip=1 diff --git a/recipes/gnu-make/recipe.sh b/recipes/gnu-make/recipe.sh index 085f82ac..38ee7c58 100644 --- a/recipes/gnu-make/recipe.sh +++ b/recipes/gnu-make/recipe.sh @@ -19,7 +19,7 @@ function recipe_build { --host=${HOST} \ --prefix=/ \ --without-guile - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -29,12 +29,12 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install skip=1 } diff --git a/recipes/gstreamer/recipe.sh b/recipes/gstreamer/recipe.sh index 0d30ad14..b31edf68 100644 --- a/recipes/gstreamer/recipe.sh +++ b/recipes/gstreamer/recipe.sh @@ -27,7 +27,7 @@ function recipe_build { --disable-benchmarks \ --disable-examples \ --disable-tests - $REDOX_MAKE -j"$($NPROC)" V=1 + "$REDOX_MAKE" -j"$($NPROC)" V=1 skip=1 } @@ -37,13 +37,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/harfbuzz/recipe.sh b/recipes/harfbuzz/recipe.sh index 5fdada61..f7cce890 100644 --- a/recipes/harfbuzz/recipe.sh +++ b/recipes/harfbuzz/recipe.sh @@ -28,7 +28,7 @@ function recipe_build { --with-glib=yes \ --with-freetype=yes \ --with-icu=no - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -38,13 +38,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/jansson/recipe.sh b/recipes/jansson/recipe.sh index d0dd49cb..0d73e816 100644 --- a/recipes/jansson/recipe.sh +++ b/recipes/jansson/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" ./configure --build=${BUILD} --host=${HOST} --prefix=/ - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -26,12 +26,12 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install skip=1 } diff --git a/recipes/kernel/recipe.sh b/recipes/kernel/recipe.sh index 162703cb..b30cc51c 100644 --- a/recipes/kernel/recipe.sh +++ b/recipes/kernel/recipe.sh @@ -35,7 +35,7 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } diff --git a/recipes/libc-bench/recipe.sh b/recipes/libc-bench/recipe.sh index 441a3cdc..23e63009 100644 --- a/recipes/libc-bench/recipe.sh +++ b/recipes/libc-bench/recipe.sh @@ -12,7 +12,7 @@ function recipe_update { } function recipe_build { - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -22,7 +22,7 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } diff --git a/recipes/libffi/recipe.sh b/recipes/libffi/recipe.sh index 8fcfdb8a..a78c84f6 100644 --- a/recipes/libffi/recipe.sh +++ b/recipes/libffi/recipe.sh @@ -23,7 +23,7 @@ function recipe_build { --prefix=/ \ --disable-shared \ --enable-static - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -33,13 +33,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/libiconv/recipe.sh b/recipes/libiconv/recipe.sh index c171111c..5879cc93 100644 --- a/recipes/libiconv/recipe.sh +++ b/recipes/libiconv/recipe.sh @@ -20,7 +20,7 @@ function recipe_build { --disable-shared \ --enable-static \ ac_cv_have_decl_program_invocation_name=no - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -30,13 +30,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/libjpeg/recipe.sh b/recipes/libjpeg/recipe.sh index fe92adf2..fa6d48ae 100644 --- a/recipes/libjpeg/recipe.sh +++ b/recipes/libjpeg/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { export LDFLAGS="--static" ./configure --build=${BUILD} --host=${HOST} --prefix='/' - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -24,13 +24,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/libogg/recipe.sh b/recipes/libogg/recipe.sh index 6c2ecfb5..577e7b1a 100644 --- a/recipes/libogg/recipe.sh +++ b/recipes/libogg/recipe.sh @@ -19,7 +19,7 @@ function recipe_build { --build=${BUILD} \ --host=${HOST} \ --prefix='' - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -29,13 +29,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/liborbital/recipe.sh b/recipes/liborbital/recipe.sh index de9d0ec1..8e08a8fe 100644 --- a/recipes/liborbital/recipe.sh +++ b/recipes/liborbital/recipe.sh @@ -2,6 +2,6 @@ GIT=https://gitlab.redox-os.org/redox-os/liborbital.git function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE HOST="$HOST" DESTDIR="$dest" install + "$REDOX_MAKE" HOST="$HOST" DESTDIR="$dest" install skip=1 } diff --git a/recipes/libpng/recipe.sh b/recipes/libpng/recipe.sh index 0cd5d4b9..ab3e9743 100644 --- a/recipes/libpng/recipe.sh +++ b/recipes/libpng/recipe.sh @@ -19,7 +19,7 @@ function recipe_build { chmod +w config.sub wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --build=${BUILD} --host=${HOST} --prefix='/' - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -29,13 +29,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/bin/"*-config "$dest/lib/"*.la skip=1 } diff --git a/recipes/libsodium/recipe.sh b/recipes/libsodium/recipe.sh index 7884d783..fa86e9a1 100644 --- a/recipes/libsodium/recipe.sh +++ b/recipes/libsodium/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { ./autogen.sh ./configure --build=${BUILD} --host=${HOST} --prefix='/' - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -24,12 +24,12 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install skip=1 } diff --git a/recipes/libvorbis/recipe.sh b/recipes/libvorbis/recipe.sh index 540d7ab5..fd98adbc 100644 --- a/recipes/libvorbis/recipe.sh +++ b/recipes/libvorbis/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { --build=${BUILD} \ --host=${HOST} \ --prefix='' - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -28,13 +28,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/libxml2/recipe.sh b/recipes/libxml2/recipe.sh index cba66e01..da0b938f 100755 --- a/recipes/libxml2/recipe.sh +++ b/recipes/libxml2/recipe.sh @@ -23,7 +23,7 @@ function recipe_build { --disable-shared \ --enable-static \ --without-python - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -33,13 +33,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/llvm/recipe.sh b/recipes/llvm/recipe.sh index 2ea030ba..5f70e1f8 100644 --- a/recipes/llvm/recipe.sh +++ b/recipes/llvm/recipe.sh @@ -63,7 +63,7 @@ function recipe_build { ) set -x cmake "${CMAKE_ARGS[@]}" "$source" - $REDOX_MAKE -j$(nproc) + "$REDOX_MAKE" -j$(nproc) set +x skip=1 } @@ -74,13 +74,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install find "$dest"/bin -exec $STRIP {} ';' 2> /dev/null skip=1 } diff --git a/recipes/lua/recipe.sh b/recipes/lua/recipe.sh index 4501a4bc..8bc39897 100644 --- a/recipes/lua/recipe.sh +++ b/recipes/lua/recipe.sh @@ -12,7 +12,7 @@ function recipe_update { } function recipe_build { - $REDOX_MAKE generic CC="${HOST}-gcc -std=gnu99" -j"$($NPROC)" + "$REDOX_MAKE" generic CC="${HOST}-gcc -std=gnu99" -j"$($NPROC)" skip=1 } @@ -22,7 +22,7 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } diff --git a/recipes/mdp/recipe.sh b/recipes/mdp/recipe.sh index 9a84cf06..20f24382 100644 --- a/recipes/mdp/recipe.sh +++ b/recipes/mdp/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include -I$sysroot/include/ncursesw" export LDFLAGS="-L$sysroot/lib" - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -26,12 +26,12 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" PREFIX="" install + "$REDOX_MAKE" DESTDIR="$dest" PREFIX="" install skip=1 } diff --git a/recipes/mesa/recipe.sh b/recipes/mesa/recipe.sh index 031dd881..e62c4040 100644 --- a/recipes/mesa/recipe.sh +++ b/recipes/mesa/recipe.sh @@ -37,7 +37,7 @@ function recipe_build { --enable-static \ --with-gallium-drivers=swrast \ --with-platforms=surfaceless - $REDOX_MAKE V=1 -j"$($NPROC)" + "$REDOX_MAKE" V=1 -j"$($NPROC)" skip=1 } @@ -47,14 +47,14 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { #export LLVM_CONFIG="x86_64-unknown-redox-llvm-config" dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/mesa_glu/recipe.sh b/recipes/mesa_glu/recipe.sh index 183d4772..8869ca79 100644 --- a/recipes/mesa_glu/recipe.sh +++ b/recipes/mesa_glu/recipe.sh @@ -19,7 +19,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --build=${BUILD} --host="${HOST}" --prefix=/ --enable-osmesa - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -29,13 +29,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/mgba/recipe.sh b/recipes/mgba/recipe.sh index ae0e0eb1..e37552e6 100644 --- a/recipes/mgba/recipe.sh +++ b/recipes/mgba/recipe.sh @@ -31,7 +31,7 @@ function recipe_build { -DSDL_VERSION="1.2" \ -DSDL_LIBRARY="-lSDL -lorbital" \ .. - VERBOSE=1 $REDOX_MAKE all -j"$($NPROC)" + VERBOSE=1 "$REDOX_MAKE" all -j"$($NPROC)" skip=1 } @@ -41,7 +41,7 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } diff --git a/recipes/nasm/recipe.sh b/recipes/nasm/recipe.sh index 0707da01..c419a271 100644 --- a/recipes/nasm/recipe.sh +++ b/recipes/nasm/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { export LDFLAGS="-static" ./configure --build=${BUILD} --host=${HOST} --prefix="" - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -24,13 +24,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE install DESTDIR="$dest" + "$REDOX_MAKE" install DESTDIR="$dest" find "$dest"/bin -exec ${HOST}-strip {} ';' 2> /dev/null skip=1 } diff --git a/recipes/ncdu/recipe.sh b/recipes/ncdu/recipe.sh index d4dbbb44..ca3f75b6 100644 --- a/recipes/ncdu/recipe.sh +++ b/recipes/ncdu/recipe.sh @@ -19,7 +19,7 @@ function recipe_build { --build=${BUILD} \ --host="$HOST" \ --prefix=/ - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } function recipe_test { @@ -27,11 +27,11 @@ function recipe_test { skip=1 } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath "$1")" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install skip=1 } diff --git a/recipes/ncurses/recipe.sh b/recipes/ncurses/recipe.sh index 99d1849b..0de25cd9 100644 --- a/recipes/ncurses/recipe.sh +++ b/recipes/ncurses/recipe.sh @@ -21,7 +21,7 @@ function recipe_build { --without-ada \ --without-tests \ cf_cv_func_mkstemp=yes - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -31,13 +31,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -rf "$1"/bin rm -rf "$1"/share/{doc,info,man} skip=1 diff --git a/recipes/ncursesw/recipe.sh b/recipes/ncursesw/recipe.sh index 866d85ed..407eb073 100644 --- a/recipes/ncursesw/recipe.sh +++ b/recipes/ncursesw/recipe.sh @@ -15,7 +15,7 @@ function recipe_update { function recipe_build { export CPPFLAGS="-P" ./configure --build=${BUILD} --host=${HOST} --prefix="" --enable-widec --disable-db-install - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -25,13 +25,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -rf "$1"/bin rm -rf "$1"/share/{doc,info,man} skip=1 diff --git a/recipes/netsurf/recipe.sh b/recipes/netsurf/recipe.sh index 07cd91ec..82c7ea74 100644 --- a/recipes/netsurf/recipe.sh +++ b/recipes/netsurf/recipe.sh @@ -20,7 +20,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib -L${PWD}/inst-${TARGET}/lib -static -Wl,--allow-multiple-definition -Wl,-Bstatic" # nghttp2 is not linked for some reason export LDFLAGS="${LDFLAGS} -lcurl -lnghttp2" - $REDOX_MAKE V=1 -j"$($NPROC)" + "$REDOX_MAKE" V=1 -j"$($NPROC)" skip=1 } @@ -30,13 +30,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install mkdir -pv "$dest/ui/apps" cp -v ../manifest "$dest/ui/apps/00_netsurf" skip=1 diff --git a/recipes/neverball/recipe.sh b/recipes/neverball/recipe.sh index 0b60264b..12cf43ce 100644 --- a/recipes/neverball/recipe.sh +++ b/recipes/neverball/recipe.sh @@ -14,12 +14,12 @@ function recipe_update { function recipe_build { env -i PATH=/usr/bin:/bin PKG_CONFIG=pkg-config \ - $REDOX_MAKE -j"$($NPROC)" ENABLE_FS=stdio mapc sols + "$REDOX_MAKE" -j"$($NPROC)" ENABLE_FS=stdio mapc sols sysroot="$(realpath ../sysroot)" export CPPFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib -static" - $REDOX_MAKE -j"$($NPROC)" ENABLE_FS=stdio ENABLE_NLS=0 clean-src - $REDOX_MAKE -j"$($NPROC)" ENABLE_FS=stdio ENABLE_NLS=0 neverball neverputt + "$REDOX_MAKE" -j"$($NPROC)" ENABLE_FS=stdio ENABLE_NLS=0 clean-src + "$REDOX_MAKE" -j"$($NPROC)" ENABLE_FS=stdio ENABLE_NLS=0 neverball neverputt skip=1 } @@ -29,7 +29,7 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } diff --git a/recipes/newlib/recipe.sh b/recipes/newlib/recipe.sh index 5270cc06..8b74cab1 100644 --- a/recipes/newlib/recipe.sh +++ b/recipes/newlib/recipe.sh @@ -25,7 +25,7 @@ function recipe_build { popd CC= ./configure --build=${BUILD} --target="${HOST}" --prefix=/ - $REDOX_MAKE all -j"$($NPROC)" + "$REDOX_MAKE" all -j"$($NPROC)" skip=1 } @@ -36,13 +36,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install cd "$dest" mv $HOST/* ./ rmdir $HOST diff --git a/recipes/newlibtest/recipe.sh b/recipes/newlibtest/recipe.sh index 23cc6a2b..fde9fd63 100644 --- a/recipes/newlibtest/recipe.sh +++ b/recipes/newlibtest/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { export CFLAGS="-static -nostdinc -I $sysroot/include -I /usr/lib/gcc/x86_64-unknown-redox/7.0.1/include/ -nostdlib -L $sysroot/lib" export CRT="$sysroot/lib/crt0.o" export CLIBS="-lc" - $REDOX_MAKE all -j"$($NPROC)" + "$REDOX_MAKE" all -j"$($NPROC)" skip=1 } @@ -26,12 +26,12 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" prefix=/ install + "$REDOX_MAKE" DESTDIR="$dest" prefix=/ install skip=1 } diff --git a/recipes/nghttp2/recipe.sh b/recipes/nghttp2/recipe.sh index 95e921d1..ee980382 100644 --- a/recipes/nghttp2/recipe.sh +++ b/recipes/nghttp2/recipe.sh @@ -19,7 +19,7 @@ function recipe_build { --host="${HOST}" \ --prefix=/ \ --enable-lib-only - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -29,13 +29,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE install DESTDIR="$dest" + "$REDOX_MAKE" install DESTDIR="$dest" rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/openjazz/recipe.sh b/recipes/openjazz/recipe.sh index cc201d0c..847b5d1d 100644 --- a/recipes/openjazz/recipe.sh +++ b/recipes/openjazz/recipe.sh @@ -22,7 +22,7 @@ function recipe_build { autoconf wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub ./configure --build=${BUILD} --host=${HOST} --prefix='' - $REDOX_MAKE -j"$($NPROC)" V=1 + "$REDOX_MAKE" -j"$($NPROC)" V=1 skip=1 } @@ -32,12 +32,12 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install skip=1 } diff --git a/recipes/openssl/recipe.sh b/recipes/openssl/recipe.sh index 58291a37..48b929ce 100644 --- a/recipes/openssl/recipe.sh +++ b/recipes/openssl/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { ./Configure no-shared no-dgram redox-$ARCH --prefix="/" - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -24,13 +24,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -rf "$1/{share,ssl}" skip=1 } diff --git a/recipes/openttd/recipe.sh b/recipes/openttd/recipe.sh index f5a48fa2..7dbedc01 100644 --- a/recipes/openttd/recipe.sh +++ b/recipes/openttd/recipe.sh @@ -22,7 +22,7 @@ function recipe_build { --without-liblzo2 \ --disable-network \ --without-threads - $REDOX_MAKE VERBOSE=1 -j"$($NPROC)" + "$REDOX_MAKE" VERBOSE=1 -j"$($NPROC)" skip=1 } @@ -32,7 +32,7 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } @@ -40,7 +40,7 @@ function recipe_stage { dest="$(realpath $1)" bundledir="$dest/bundle" - $REDOX_MAKE VERBOSE=1 ROOT_DIR="$dest/../build/" BUNDLE_DIR="$bundledir" INSTALL_DIR="$dest" install + "$REDOX_MAKE" VERBOSE=1 ROOT_DIR="$dest/../build/" BUNDLE_DIR="$bundledir" INSTALL_DIR="$dest" install rm -rf "$bundledir" skip=1 } diff --git a/recipes/osdemo/recipe.sh b/recipes/osdemo/recipe.sh index ef49d877..9737c853 100644 --- a/recipes/osdemo/recipe.sh +++ b/recipes/osdemo/recipe.sh @@ -30,7 +30,7 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } diff --git a/recipes/pango/recipe.sh b/recipes/pango/recipe.sh index bd2997a7..24f77bb2 100755 --- a/recipes/pango/recipe.sh +++ b/recipes/pango/recipe.sh @@ -24,7 +24,7 @@ function recipe_build { --prefix=/ \ --disable-shared \ --enable-static - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -34,13 +34,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/patch/recipe.sh b/recipes/patch/recipe.sh index 8e5a2f9e..3c65091a 100644 --- a/recipes/patch/recipe.sh +++ b/recipes/patch/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub autoreconf ./configure --build=${BUILD} --host=${HOST} --prefix=/ - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -26,13 +26,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install $HOST-strip $1/bin/* rm -rf "$1/"{share,lib} skip=1 diff --git a/recipes/pcre/recipe.sh b/recipes/pcre/recipe.sh index e39f4f22..4e51f3b5 100644 --- a/recipes/pcre/recipe.sh +++ b/recipes/pcre/recipe.sh @@ -22,7 +22,7 @@ function recipe_build { --prefix=/ \ --disable-shared \ --enable-static - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -32,13 +32,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/perl/recipe.sh b/recipes/perl/recipe.sh index c780b5f9..8e03557c 100644 --- a/recipes/perl/recipe.sh +++ b/recipes/perl/recipe.sh @@ -22,7 +22,7 @@ function recipe_build { sed -i "s/^#define Netdb_name_t.*/#define Netdb_name_t const char*/" config.h # XXX sed -i 's/#define Strerror(e).*$/#define Strerror(e) strerror(e)/' config.h # echo "#define HAS_VPRINTF" >> config.h - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -32,13 +32,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -rf "$1/man" skip=1 } diff --git a/recipes/pixman/recipe.sh b/recipes/pixman/recipe.sh index 64d87a41..70a762e1 100755 --- a/recipes/pixman/recipe.sh +++ b/recipes/pixman/recipe.sh @@ -19,7 +19,7 @@ function recipe_build { --prefix=/ \ --disable-shared \ --enable-static - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -29,13 +29,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/pkg-config/recipe.sh b/recipes/pkg-config/recipe.sh index 0a5a208b..4e1accb2 100755 --- a/recipes/pkg-config/recipe.sh +++ b/recipes/pkg-config/recipe.sh @@ -21,7 +21,7 @@ function recipe_build { --prefix="" \ --disable-shared \ --enable-static - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -31,13 +31,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { export DESTDIR="$(realpath $1)" - $REDOX_MAKE install + "$REDOX_MAKE" install rm -f "${DESTDIR}/lib/"*.la skip=1 } diff --git a/recipes/prboom/recipe.sh b/recipes/prboom/recipe.sh index 8827ec2f..4569fc60 100644 --- a/recipes/prboom/recipe.sh +++ b/recipes/prboom/recipe.sh @@ -26,7 +26,7 @@ function recipe_build { --disable-gl \ --without-net \ --with-sdl-prefix="$sysroot" - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -36,12 +36,12 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install skip=1 } diff --git a/recipes/python/recipe.sh b/recipes/python/recipe.sh index f0a87ab7..6ec06c19 100644 --- a/recipes/python/recipe.sh +++ b/recipes/python/recipe.sh @@ -26,7 +26,7 @@ function recipe_build { sed -i 's|#define HAVE_PTHREAD_KILL 1|/* #undef HAVE_PTHREAD_KILL */|g' pyconfig.h sed -i 's|#define HAVE_SCHED_SETSCHEDULER 1|/* #undef HAVE_SCHED_SETSCHEDULER */|g' pyconfig.h sed -i 's|#define HAVE_SYS_RESOURCE_H 1|/* #undef HAVE_SYS_RESOURCE_H */|g' pyconfig.h - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -36,13 +36,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install -j"$($NPROC)" + "$REDOX_MAKE" DESTDIR="$dest" install -j"$($NPROC)" "$STRIP" "$dest/bin/python3.7" "$dest/bin/python3.7m" skip=1 } diff --git a/recipes/qemu/recipe.sh b/recipes/qemu/recipe.sh index d5666cb1..a62e7d9f 100644 --- a/recipes/qemu/recipe.sh +++ b/recipes/qemu/recipe.sh @@ -21,7 +21,7 @@ function recipe_build { --build=${BUILD} \ --host="${HOST}" \ --prefix=/ - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -31,14 +31,14 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { #export LLVM_CONFIG="x86_64-unknown-redox-llvm-config" dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/readline/recipe.sh b/recipes/readline/recipe.sh index e3f2b821..72dd391f 100644 --- a/recipes/readline/recipe.sh +++ b/recipes/readline/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" export CFLAGS="-I$sysroot/include" ./configure --disable-shared --build=${BUILD} --host=${HOST} --prefix="" - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -27,13 +27,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -rf "$1"/share/{doc,info,man} skip=1 } diff --git a/recipes/relibc-tests/recipe.sh b/recipes/relibc-tests/recipe.sh index bc89e71f..4ec0a3d9 100644 --- a/recipes/relibc-tests/recipe.sh +++ b/recipes/relibc-tests/recipe.sh @@ -1,7 +1,7 @@ GIT=https://gitlab.redox-os.org/redox-os/relibc.git function recipe_build { - $REDOX_MAKE CARGO=xargo NATIVE_RELIBC=1 -C tests -j"$($NPROC)" + "$REDOX_MAKE" CARGO=xargo NATIVE_RELIBC=1 -C tests -j"$($NPROC)" skip=1 } diff --git a/recipes/relibc/recipe.sh b/recipes/relibc/recipe.sh index 4c561da6..88f3acba 100644 --- a/recipes/relibc/recipe.sh +++ b/recipes/relibc/recipe.sh @@ -1,12 +1,12 @@ GIT=https://gitlab.redox-os.org/redox-os/relibc.git function recipe_build { - $REDOX_MAKE CARGO="env -u CARGO xargo" -j"$($NPROC)" + "$REDOX_MAKE" CARGO="env -u CARGO xargo" -j"$($NPROC)" skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE CARGO="env -u CARGO xargo" DESTDIR="$dest" install + "$REDOX_MAKE" CARGO="env -u CARGO xargo" DESTDIR="$dest" install skip=1 } diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index 02a3fd4e..7a3a5fc3 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -28,7 +28,7 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } diff --git a/recipes/schismtracker/recipe.sh b/recipes/schismtracker/recipe.sh index 3d381300..5e3d9d6f 100644 --- a/recipes/schismtracker/recipe.sh +++ b/recipes/schismtracker/recipe.sh @@ -20,7 +20,7 @@ function recipe_build { export SDL_CONFIG="$sysroot/bin/sdl-config" autoreconf -i ./configure --build=${BUILD} --host=${HOST} --prefix='' - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -30,12 +30,12 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install skip=1 } diff --git a/recipes/scummvm/recipe.sh b/recipes/scummvm/recipe.sh index df3b2327..44d5dc9f 100644 --- a/recipes/scummvm/recipe.sh +++ b/recipes/scummvm/recipe.sh @@ -26,7 +26,7 @@ function recipe_build { --with-zlib-prefix="$sysroot" \ --disable-timidity \ --disable-mt32emu - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -36,12 +36,12 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install skip=1 } diff --git a/recipes/sdl-player/recipe.sh b/recipes/sdl-player/recipe.sh index 4af3a0a1..8953164d 100644 --- a/recipes/sdl-player/recipe.sh +++ b/recipes/sdl-player/recipe.sh @@ -15,7 +15,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export CPPFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib -static" - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -25,7 +25,7 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } diff --git a/recipes/sdl/recipe.sh b/recipes/sdl/recipe.sh index 250a4055..be9cbd8d 100644 --- a/recipes/sdl/recipe.sh +++ b/recipes/sdl/recipe.sh @@ -28,7 +28,7 @@ function recipe_build { --enable-redoxaudio \ --enable-clock_gettime \ --enable-video-orbital - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -38,13 +38,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/sdl2/recipe.sh b/recipes/sdl2/recipe.sh index 8b68fe7f..0bd50238 100644 --- a/recipes/sdl2/recipe.sh +++ b/recipes/sdl2/recipe.sh @@ -32,7 +32,7 @@ function recipe_build { --enable-video-orbital \ --enable-redoxaudio \ --enable-cdrom - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -42,13 +42,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/sdl2_image/recipe.sh b/recipes/sdl2_image/recipe.sh index 1b8ecc88..7fe853e1 100644 --- a/recipes/sdl2_image/recipe.sh +++ b/recipes/sdl2_image/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" export SDL_LIBS="-lSDL2 -lorbital $("${PKG_CONFIG}" --libs glu) -lglapi -lz -lm -lpthread -lstdc++" ./configure --prefix=/ --build=${BUILD} --host=${HOST} --disable-shared --disable-sdltest --enable-png --enable-jpg - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -28,13 +28,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/sdl2_mixer/recipe.sh b/recipes/sdl2_mixer/recipe.sh index 1f52295c..fe87ade3 100644 --- a/recipes/sdl2_mixer/recipe.sh +++ b/recipes/sdl2_mixer/recipe.sh @@ -30,7 +30,7 @@ function recipe_build { --disable-smpegtest \ --disable-music-midi \ --disable-music-mod - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -40,13 +40,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/sdl2_ttf/recipe.sh b/recipes/sdl2_ttf/recipe.sh index 203b66ac..b4467c54 100644 --- a/recipes/sdl2_ttf/recipe.sh +++ b/recipes/sdl2_ttf/recipe.sh @@ -19,7 +19,7 @@ function recipe_build { export SDL_LIBS="-lSDL2 -lorbital $("${PKG_CONFIG}" --libs glu) -lglapi -lz -lm -lpthread -lstdc++" ./autogen.sh ./configure --prefix=/ --build=${BUILD} --host=${HOST} --enable-opengl --disable-shared --disable-sdltest - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -29,13 +29,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/sdl_gfx/recipe.sh b/recipes/sdl_gfx/recipe.sh index 4915fbcf..089890fc 100644 --- a/recipes/sdl_gfx/recipe.sh +++ b/recipes/sdl_gfx/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" ./autogen.sh ./configure --prefix=/ --build=${BUILD} --host=${HOST} --disable-shared - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -28,13 +28,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/sdl_image/recipe.sh b/recipes/sdl_image/recipe.sh index 2a199e88..7bbf8735 100644 --- a/recipes/sdl_image/recipe.sh +++ b/recipes/sdl_image/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" ./autogen.sh ./configure --prefix=/ --build=${BUILD} --host=${HOST} --disable-shared --disable-sdltest --enable-png --enable-jpg - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -28,13 +28,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/sdl_mixer/recipe.sh b/recipes/sdl_mixer/recipe.sh index 4dddfc6c..9ed93a82 100644 --- a/recipes/sdl_mixer/recipe.sh +++ b/recipes/sdl_mixer/recipe.sh @@ -30,7 +30,7 @@ function recipe_build { --disable-smpegtest \ --disable-music-midi \ --disable-music-mod - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -40,13 +40,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/sdl_ttf/recipe.sh b/recipes/sdl_ttf/recipe.sh index dc4f19d6..ce591b55 100644 --- a/recipes/sdl_ttf/recipe.sh +++ b/recipes/sdl_ttf/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" ./autogen.sh ./configure --prefix=/ --build=${BUILD} --host=${HOST} --disable-shared - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -28,13 +28,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/sed/recipe.sh b/recipes/sed/recipe.sh index 840a0bc9..210a0d39 100644 --- a/recipes/sed/recipe.sh +++ b/recipes/sed/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { --build=${BUILD} \ --host=${HOST} \ --prefix=/ - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -27,12 +27,12 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install skip=1 } diff --git a/recipes/shared-mime-info/recipe.sh b/recipes/shared-mime-info/recipe.sh index e2f76402..90779ca4 100755 --- a/recipes/shared-mime-info/recipe.sh +++ b/recipes/shared-mime-info/recipe.sh @@ -30,13 +30,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/sopwith/recipe.sh b/recipes/sopwith/recipe.sh index 7cc18a06..5614139e 100644 --- a/recipes/sopwith/recipe.sh +++ b/recipes/sopwith/recipe.sh @@ -23,7 +23,7 @@ function recipe_build { --host=${HOST} \ --prefix='' \ --with-sdl-prefix="$sysroot" - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -33,12 +33,12 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install skip=1 } diff --git a/recipes/ssh/recipe.sh b/recipes/ssh/recipe.sh index 54a1917c..1f9ba2bd 100644 --- a/recipes/ssh/recipe.sh +++ b/recipes/ssh/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" ./configure --build=${BUILD} --host=${HOST} --prefix=/ - $REDOX_MAKE -j$(nproc) + "$REDOX_MAKE" -j$(nproc) skip=1 } @@ -27,12 +27,12 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install skip=1 } diff --git a/recipes/syobonaction/recipe.sh b/recipes/syobonaction/recipe.sh index d50ce497..dd4f5246 100644 --- a/recipes/syobonaction/recipe.sh +++ b/recipes/syobonaction/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { export SDL_CONFIG="${PKG_CONFIG} sdl" export CPPFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -27,7 +27,7 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } diff --git a/recipes/timidity/recipe.sh b/recipes/timidity/recipe.sh index b2f2f5cf..d9c58990 100644 --- a/recipes/timidity/recipe.sh +++ b/recipes/timidity/recipe.sh @@ -22,7 +22,7 @@ function recipe_build { --host=${HOST} \ --prefix='' \ --enable-vt100 - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -32,13 +32,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install mkdir -pv "$1/share/timidity" echo "soundfont /share/generaluser-gs/generaluser-gs.sf2" >> "$1/share/timidity/timidity.cfg" diff --git a/recipes/vice/recipe.sh b/recipes/vice/recipe.sh index f2b822e5..e024210d 100644 --- a/recipes/vice/recipe.sh +++ b/recipes/vice/recipe.sh @@ -31,7 +31,7 @@ function recipe_build { --disable-rs232 \ --disable-realdevice \ --disable-midi - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -41,12 +41,12 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install skip=1 } diff --git a/recipes/vim/recipe.sh b/recipes/vim/recipe.sh index f0947359..cc325653 100644 --- a/recipes/vim/recipe.sh +++ b/recipes/vim/recipe.sh @@ -25,7 +25,7 @@ function recipe_build { export vim_cv_stat_ignores_slash=yes export vim_cv_memmove_handles_overlap=yes ./configure --build=${BUILD} --host=${HOST} --prefix=/ --with-tlib=ncurses - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -35,12 +35,12 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" ${MAKEFLAGS} install + "$REDOX_MAKE" DESTDIR="$dest" ${MAKEFLAGS} install skip=1 } diff --git a/recipes/vttest/recipe.sh b/recipes/vttest/recipe.sh index 1898c5eb..a5c17fc1 100644 --- a/recipes/vttest/recipe.sh +++ b/recipes/vttest/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { --build=${BUILD} \ --host=${HOST} \ --prefix='' - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -28,12 +28,12 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install skip=1 } diff --git a/recipes/vvvvvv/recipe.sh b/recipes/vvvvvv/recipe.sh index 05debb53..110809b6 100644 --- a/recipes/vvvvvv/recipe.sh +++ b/recipes/vvvvvv/recipe.sh @@ -21,7 +21,7 @@ function recipe_build { -DSDL2_LIBRARIES="-static -lSDL2main -lSDL2_mixer -lSDL2 $("${PKG_CONFIG}" --libs glu) -lglapi -lorbital -lz -lvorbisfile -lvorbis -logg" \ . - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } diff --git a/recipes/wesnoth/recipe.sh b/recipes/wesnoth/recipe.sh index 407ba87b..a9dbef18 100644 --- a/recipes/wesnoth/recipe.sh +++ b/recipes/wesnoth/recipe.sh @@ -49,7 +49,7 @@ function recipe_build { -DVORBISFILE_INCLUDE_DIR="${sysroot}/include" \ -DVORBISFILE_LIBRARY=vorbisfile \ .. - VERBOSE=1 $REDOX_MAKE all -j"$($NPROC)" + VERBOSE=1 "$REDOX_MAKE" all -j"$($NPROC)" set +x skip=1 } diff --git a/recipes/xz/recipe.sh b/recipes/xz/recipe.sh index c136f7f4..239add35 100644 --- a/recipes/xz/recipe.sh +++ b/recipes/xz/recipe.sh @@ -38,7 +38,7 @@ function recipe_build { --enable-static=yes \ --enable-threads=no \ --with-pic=no - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -48,13 +48,13 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install rm -rf "$dest/share" skip=1 } diff --git a/recipes/zlib/recipe.sh b/recipes/zlib/recipe.sh index 7bc4c5f0..7ad2070b 100644 --- a/recipes/zlib/recipe.sh +++ b/recipes/zlib/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { function recipe_build { # See https://stackoverflow.com/questions/21396988/zlib-build-not-configuring-properly-with-cross-compiler-ignores-ar. CHOST=x86_64-unknown-redox ./configure --static --prefix=/ - $REDOX_MAKE -j"$($NPROC)" + "$REDOX_MAKE" -j"$($NPROC)" skip=1 } @@ -24,12 +24,12 @@ function recipe_test { } function recipe_clean { - $REDOX_MAKE clean + "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" - $REDOX_MAKE DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" install skip=1 } From 70bd7b46a4c26c1d7727b037ca96428eb814d7c1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 11 May 2020 19:06:51 -0600 Subject: [PATCH 0764/3180] Fix detection of SHASUM --- cook.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cook.sh b/cook.sh index ce062f02..58ebc4a4 100755 --- a/cook.sh +++ b/cook.sh @@ -13,8 +13,10 @@ export DEBUG= export EXAMPLES= export PREPARE_COPY=1 -SHASUM="sha256sum" -if hash shasum 2>/dev/null; then +if hash sha256sum 2>/dev/null +then + SHASUM="sha256sum" +else SHASUM="shasum -a 256" fi From 2d2a1070253d6718aed755ba10dc49544baac758 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 11 May 2020 20:56:38 -0600 Subject: [PATCH 0765/3180] Use pkgar for build depends --- cook.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cook.sh b/cook.sh index 58ebc4a4..1bf746be 100755 --- a/cook.sh +++ b/cook.sh @@ -277,7 +277,11 @@ function op { for i in "${BUILD_DEPENDS[@]}" do - pkg --target=$TARGET install --root sysroot "$REPO/$i.tar.gz" + pkgar \ + extract \ + sysroot \ + --file "$REPO/$i.pkgar" \ + --public "${ROOT}/build/public.key" done fi From 40e4ae839d1a9c7c9ea2bb9372efa1ea0e710208 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 20 May 2020 13:22:59 -0600 Subject: [PATCH 0766/3180] Fix fetching color --- repo.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/repo.sh b/repo.sh index 19ebf960..5084f866 100755 --- a/repo.sh +++ b/repo.sh @@ -24,7 +24,7 @@ for recipe in $recipes do if [ ! -d "recipes/$recipe/source/" ] then - echo -e "\033[01;38;5;215mrepo - fetching $recipe\033[0m" >&2 + echo -e "\033[01;38;5;155mrepo - fetching $recipe\033[0m" >&2 ./cook.sh "$recipe" fetch fi From 25fa6a502022f8b215d972e2b4115cd0325a0fed Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 20 May 2020 13:23:29 -0600 Subject: [PATCH 0767/3180] Rust-based cook binary. Currently has fetching implemented --- Cargo.lock | 304 ++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 23 ++++ src/bin/cook.rs | 302 +++++++++++++++++++++++++++++++++++++++++++ src/blake3.rs | 46 +++++++ src/lib.rs | 5 + src/progress_bar.rs | 51 ++++++++ src/recipe.rs | 112 ++++++++++++++++ src/sha256.rs | 45 +++++++ 8 files changed, 888 insertions(+) create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 src/bin/cook.rs create mode 100644 src/blake3.rs create mode 100644 src/lib.rs create mode 100644 src/progress_bar.rs create mode 100644 src/recipe.rs create mode 100644 src/sha256.rs diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 00000000..e0a5f1d0 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,304 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "arrayref" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "arrayvec" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "blake3" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.54 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "block-buffer" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "block-padding" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "byte-tools" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "byteorder" +version = "1.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "cc" +version = "1.0.54" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "crypto-mac" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "digest" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "fake-simd" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "generic-array" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "typenum 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libc" +version = "0.2.70" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "numtoa" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "opaque-debug" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "pbr" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "termion 1.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "proc-macro2" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "quote" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "redox_cookbook" +version = "0.1.0" +dependencies = [ + "blake3 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "pbr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "termion 1.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "redox_syscall" +version = "0.1.56" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "redox_termios" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "serde" +version = "1.0.110" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "serde_derive 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "serde_derive" +version = "1.0.110" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sha2" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "subtle" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "syn" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "termion" +version = "1.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "time" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "toml" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "typenum" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "unicode-xid" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[metadata] +"checksum arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" +"checksum arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" +"checksum blake3 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "68df31bdf2bbb567e5adf8f21ac125dc0e897b1381e7b841f181521f06fc3134" +"checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" +"checksum block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" +"checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" +"checksum byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" +"checksum cc 1.0.54 (registry+https://github.com/rust-lang/crates.io-index)" = "7bbb73db36c1246e9034e307d0fba23f9a2e251faa47ade70c1bd252220c8311" +"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +"checksum constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" +"checksum crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" +"checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +"checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" +"checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" +"checksum libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)" = "3baa92041a6fec78c687fa0cc2b3fae8884f743d672cf551bed1d6dac6988d0f" +"checksum numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" +"checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" +"checksum pbr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4403eb718d70c03ee279e51737782902c68cca01e870a33b6a2f9dfb50b9cd83" +"checksum proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)" = "53f5ffe53a6b28e37c9c1ce74893477864d64f74778a93a4beb43c8fa167f639" +"checksum quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "54a21852a652ad6f610c9510194f398ff6f8692e334fd1145fed931f7fbe44ea" +"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" +"checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" +"checksum serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)" = "99e7b308464d16b56eba9964e4972a3eee817760ab60d88c3f86e1fecb08204c" +"checksum serde_derive 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)" = "818fbf6bfa9a42d3bfcaca148547aa00c7b915bec71d1757aa2d44ca68771984" +"checksum sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "27044adfd2e1f077f649f59deb9490d3941d674002f7d062870a60ebe9bd47a0" +"checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" +"checksum syn 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)" = "1425de3c33b0941002740a420b1a906a350b88d08b82b2c8a01035a3f9447bac" +"checksum termion 1.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c22cec9d8978d906be5ac94bceb5a010d885c626c4c8855721a4dbd20e3ac905" +"checksum time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" +"checksum toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71a" +"checksum typenum 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" +"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" +"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" +"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 00000000..5b297bc9 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name = "redox_cookbook" +version = "0.1.0" +authors = ["Jeremy Soller "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[[bin]] +name = "cook" +path = "src/bin/cook.rs" + +[lib] +name = "cookbook" +path = "src/lib.rs" + +[dependencies] +blake3 = "0.3.3" +pbr = "1.0.2" +serde = { version = "1.0", features = ["derive"] } +sha2 = "0.8.1" +termion = "1.5.5" +toml = "0.5.6" diff --git a/src/bin/cook.rs b/src/bin/cook.rs new file mode 100644 index 00000000..aebe8684 --- /dev/null +++ b/src/bin/cook.rs @@ -0,0 +1,302 @@ +use cookbook::blake3::blake3_progress; +use cookbook::recipe::{Recipe, SourceRecipe, BuildRecipe}; +use cookbook::sha256::sha256_progress; +use std::{ + env, + fs, + path::Path, + process::{self, Command}, +}; +use termion::{color, style}; + +fn create_dir_clean(dir: &Path) -> Result<(), String> { + if dir.is_dir() { + // Remove previous directory + fs::remove_dir_all(&dir).map_err(|err| format!( + "failed to remove '{}': {}\n{:?}", + dir.display(), + err, + err + ))?; + } + // directory + fs::create_dir(&dir).map_err(|err| format!( + "failed to create '{}': {}\n{:?}", + dir.display(), + err, + err + )) +} + +fn rename(src: &Path, dst: &Path) -> Result<(), String> { + fs::rename(src, dst).map_err(|err| format!( + "failed to rename '{}' to '{}': {}\n{:?}", + src.display(), + dst.display(), + err, + err + )) +} + +fn run_command(mut command: process::Command) -> Result<(), String> { + let status = command.status().map_err(|err| format!( + "failed to run {:?}: {}\n{:#?}", + command, + err, + err + ))?; + + if ! status.success() { + return Err(format!( + "failed to run {:?}: exited with status {}", + command, + status + )); + } + + Ok(()) +} + +fn fetch(source: &SourceRecipe, recipe_dir: &Path) -> Result<(), String> { + let source_dir = recipe_dir.join("source"); + match source { + SourceRecipe::Git { git, upstream, branch, rev } => { + if ! source_dir.is_dir() { + // Create source.tmp + let source_dir_tmp = recipe_dir.join("source.tmp"); + create_dir_clean(&source_dir_tmp)?; + + // Clone the repository to source.tmp + let mut command = Command::new("git"); + command.arg("clone").arg("--recursive").arg(&git); + if let Some(branch) = branch { + command.arg("--branch").arg(&branch); + } + command.arg(&source_dir); + run_command(command)?; + + // Move source.tmp to source atomically + rename(&source_dir_tmp, &source_dir)?; + } else { + // Reset origin + let mut command = Command::new("git"); + command.arg("-C").arg(&source_dir); + command.arg("remote").arg("set-url").arg("origin").arg(&git); + run_command(command)?; + + // Fetch origin + let mut command = Command::new("git"); + command.arg("-C").arg(&source_dir); + command.arg("fetch").arg("origin"); + run_command(command)?; + } + + if let Some(upstream) = upstream { + //TODO: set upstream URL + // git remote set-url upstream "$GIT_UPSTREAM" &> /dev/null || + // git remote add upstream "$GIT_UPSTREAM" + // git fetch upstream + } + + if let Some(rev) = rev { + // Check out specified revision + let mut command = Command::new("git"); + command.arg("-C").arg(&source_dir); + command.arg("checkout").arg(&rev); + run_command(command)?; + } else { + //TODO: complicated stuff to check and reset branch to origin + // ORIGIN_BRANCH="$(git branch --remotes | grep '^ origin/HEAD -> ' | cut -d ' ' -f 5-)" + // if [ -n "$BRANCH" ] + // then + // ORIGIN_BRANCH="origin/$BRANCH" + // fi + // + // if [ "$(git rev-parse HEAD)" != "$(git rev-parse $ORIGIN_BRANCH)" ] + // then + // git checkout -B "$(echo "$ORIGIN_BRANCH" | cut -d / -f 2-)" "$ORIGIN_BRANCH" + // fi + } + + // Sync submodules URL + let mut command = Command::new("git"); + command.arg("-C").arg(&source_dir); + command.arg("submodule").arg("sync").arg("--recursive"); + run_command(command)?; + + // Update submodules + let mut command = Command::new("git"); + command.arg("-C").arg(&source_dir); + command.arg("submodule").arg("update").arg("--init").arg("--recursive"); + run_command(command)?; + }, + SourceRecipe::Tar { tar, blake3, sha256 } => { + if ! source_dir.is_dir() { + // Download tar + //TODO: replace wget + let source_tar = recipe_dir.join("source.tar"); + if ! source_tar.is_file() { + let source_tar_tmp = recipe_dir.join("source.tar.tmp"); + + let mut command = Command::new("wget"); + command.arg(&tar); + command.arg("-O").arg(&source_tar_tmp); + run_command(command)?; + + // Move source.tar.tmp to source.tar atomically + rename(&source_tar_tmp, &source_tar)?; + } + + if let Some(blake3) = blake3 { + //TODO + // Calculate blake3 + let source_tar_blake3 = blake3_progress(&source_tar).map_err(|err| format!( + "failed to calculate blake3 of '{}': {}\n{:?}", + source_tar.display(), + err, + err + ))?; + + // Check if it matches recipe + if &source_tar_blake3 != blake3 { + return Err(format!( + "calculated blake3 '{}' does not match recipe blake3 '{}'", + source_tar_blake3, + blake3 + )); + } + } + + if let Some(sha256) = sha256 { + // Calculate sha256 + let source_tar_sha256 = sha256_progress(&source_tar).map_err(|err| format!( + "failed to calculate sha256 of '{}': {}\n{:?}", + source_tar.display(), + err, + err + ))?; + + // Check if it matches recipe + if &source_tar_sha256 != sha256 { + return Err(format!( + "calculated sha256 '{}' does not match recipe sha256 '{}'", + source_tar_sha256, + sha256 + )); + } + } + + // Create source.tmp + let source_dir_tmp = recipe_dir.join("source.tmp"); + create_dir_clean(&source_dir_tmp)?; + + // Extract tar to source.tmp + //TODO: use tar crate (how to deal with compression?) + let mut command = Command::new("tar"); + command.arg("--extract"); + command.arg("--verbose"); + command.arg("--file").arg(&source_tar); + command.arg("--directory").arg(&source_dir_tmp); + run_command(command)?; + + // Move source.tmp to source atomically + rename(&source_dir_tmp, &source_dir)?; + } + } + } + + Ok(()) +} + +fn cook(recipe_name: &str) -> Result<(), String> { + //TODO: sanitize recipe name? + let recipe_dir = Path::new("recipes").join(recipe_name); + if ! recipe_dir.is_dir() { + return Err(format!( + "failed to find recipe directory '{}'", + recipe_dir.display() + )); + } + + let recipe_file = recipe_dir.join("recipe.toml"); + if ! recipe_file.is_file() { + return Err(format!( + "failed to find recipe file '{}'", + recipe_file.display() + )); + } + + let recipe_toml = fs::read_to_string(&recipe_file).map_err(|err| format!( + "failed to read recipe file '{}': {}\n{:#?}", + recipe_file.display(), + err, + err + ))?; + + let recipe: Recipe = toml::from_str(&recipe_toml).map_err(|err| format!( + "failed to parse recipe file '{}': {}\n{:#?}", + recipe_file.display(), + err, + err + ))?; + + fetch(&recipe.source, &recipe_dir).map_err(|err| format!( + "failed to fetch: {}", + err + ))?; + + Ok(()) +} + +fn main() { + let mut matching = true; + let mut quiet = false; + let mut recipe_names = Vec::new(); + for arg in env::args().skip(1) { + match arg.as_str() { + "--" if matching => matching = false, + "-q" | "--quiet" if matching => quiet = true, + _ => recipe_names.push(arg), + } + } + + for recipe_name in recipe_names.iter() { + if ! quiet { + eprintln!( + "{}{}cook - {}{}{}", + style::Bold, + color::Fg(color::AnsiValue(215)), + recipe_name, + color::Fg(color::Reset), + style::Reset, + ); + } + + match cook(recipe_name) { + Ok(()) => { + if ! quiet { + eprintln!( + "{}{}cook - {} - successful{}{}", + style::Bold, + color::Fg(color::AnsiValue(46)), + recipe_name, + color::Fg(color::Reset), + style::Reset, + ); + } + }, + Err(err) => { + eprintln!( + "{}{}cook - {} - error:{}{} {}", + style::Bold, + color::Fg(color::AnsiValue(196)), + recipe_name, + color::Fg(color::Reset), + style::Reset, + err, + ); + process::exit(1); + } + } + } +} diff --git a/src/blake3.rs b/src/blake3.rs new file mode 100644 index 00000000..acc037d3 --- /dev/null +++ b/src/blake3.rs @@ -0,0 +1,46 @@ +use blake3::Hasher; +use std::{ + fs, + io::{Read, Result}, + path::Path, + time::Duration, +}; + +use crate::progress_bar::{ProgressBar, ProgressBarRead}; + +pub fn blake3(r: &mut R) -> Result { + let mut hasher = Hasher::new(); + + let mut data = vec![0; 4 * 1024 * 1024]; + loop { + let count = r.read(&mut data)?; + if count == 0 { + break; + } + + hasher.update(&data[..count]); + } + + let hash = hasher.finalize(); + Ok(format!("{}", hash.to_hex())) +} + +pub fn blake3_progress>(path: P) -> Result { + let len = fs::metadata(&path)?.len(); + + let mut f = fs::File::open(&path)?; + + let mut pb = ProgressBar::new(len); + pb.message("blake3: "); + pb.set_max_refresh_rate(Some(Duration::new(1, 0))); + pb.set_units(pbr::Units::Bytes); + + let res = { + let mut pbr = ProgressBarRead::new(&mut pb, &mut f); + blake3(&mut pbr) + }; + + pb.finish_println(""); + + res +} diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 00000000..2fbe5353 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,5 @@ +pub mod blake3; +pub mod recipe; +pub mod sha256; + +mod progress_bar; diff --git a/src/progress_bar.rs b/src/progress_bar.rs new file mode 100644 index 00000000..c02b939d --- /dev/null +++ b/src/progress_bar.rs @@ -0,0 +1,51 @@ +pub use pbr::ProgressBar; + +use std::io::{Read, Write, Result}; + +pub struct ProgressBarRead<'p, 'r, P: Write + 'p, R: Read + 'r> { + pb: &'p mut ProgressBar

, + r: &'r mut R, +} + +impl<'p, 'r, P: Write, R: Read> ProgressBarRead<'p, 'r, P, R> { + pub fn new(pb: &'p mut ProgressBar

, r: &'r mut R) -> ProgressBarRead<'p, 'r, P, R> { + ProgressBarRead { + pb: pb, + r: r + } + } +} + +impl<'p, 'r, P: Write, R: Read> Read for ProgressBarRead<'p, 'r, P, R> { + fn read(&mut self, buf: &mut [u8]) -> Result { + let count = self.r.read(buf)?; + self.pb.add(count as u64); + Ok(count) + } +} + +pub struct ProgressBarWrite<'p, 'w, P: Write + 'p, W: Write + 'w> { + pb: &'p mut ProgressBar

, + w: &'w mut W, +} + +impl<'p, 'w, P: Write, W: Write> ProgressBarWrite<'p, 'w, P, W> { + pub fn new(pb: &'p mut ProgressBar

, w: &'w mut W) -> ProgressBarWrite<'p, 'w, P, W> { + ProgressBarWrite { + pb: pb, + w: w + } + } +} + +impl<'p, 'w, P: Write, W: Write> Write for ProgressBarWrite<'p, 'w, P, W> { + fn write(&mut self, buf: &[u8]) -> Result { + let count = self.w.write(buf)?; + self.pb.add(count as u64); + Ok(count) + } + + fn flush(&mut self) -> Result<()> { + self.w.flush() + } +} diff --git a/src/recipe.rs b/src/recipe.rs new file mode 100644 index 00000000..6ec4a918 --- /dev/null +++ b/src/recipe.rs @@ -0,0 +1,112 @@ +use serde::{Deserialize, Serialize}; + +/// Specifies how to download the source for a recipe +#[derive(Debug, Deserialize, PartialEq, Serialize)] +#[serde(untagged)] +pub enum SourceRecipe { + /// A git repository source + Git { + /// The URL for the git repository, such as https://gitlab.redox-os.org/redox-os/ion.git + git: String, + /// The URL for an upstream repository + upstream: Option, + /// The optional branch of the git repository to track, such as master. Please specify to + /// make updates to the rev easier + branch: Option, + /// The optional revision of the git repository to use for builds. Please specify for + /// reproducible builds + rev: Option, + }, + /// A tar file source + Tar { + /// The URL of a tar source + tar: String, + /// The optional blake3 sum of the tar file. Please specify this to make reproducible + /// builds more reliable + blake3: Option, + /// The optional sha256 sum of the tar file. This is a slower alternative to a blake3 sum + sha256: Option, + }, +} + +/// Specifies how to build a recipe +#[derive(Debug, Deserialize, PartialEq, Serialize)] +#[serde(tag = "template")] +pub enum BuildRecipe { + /// Will build and install using cargo + #[serde(rename = "cargo")] + Cargo, + /// Will build and install using custom commands + #[serde(rename = "custom")] + Custom { + script: String, + }, +} + +/// Everything required to build a Redox package +#[derive(Debug, Deserialize, PartialEq, Serialize)] +pub struct Recipe { + /// Specifies how to donload the source for this recipe + pub source: SourceRecipe, + /// A list of patch files to apply to the source + #[serde(default)] + pub patches: Vec, + /// Specifies how to build this recipe + pub build: BuildRecipe, +} + + +#[cfg(test)] +mod tests { + #[test] + fn git_cargo_recipe() { + use crate::recipe::{Recipe, SourceRecipe, BuildRecipe}; + + let recipe: Recipe = toml::from_str(r#" + [source] + git = "https://gitlab.redox-os.org/redox-os/acid.git" + branch = "master" + rev = "06344744d3d55a5ac9a62a6059cb363d40699bbc" + + [build] + template = "cargo" + "#).unwrap(); + + assert_eq!(recipe, Recipe { + source: SourceRecipe::Git { + git: "https://gitlab.redox-os.org/redox-os/acid.git".to_string(), + upstream: None, + branch: Some("master".to_string()), + rev: Some("06344744d3d55a5ac9a62a6059cb363d40699bbc".to_string()), + }, + patches: Vec::new(), + build: BuildRecipe::Cargo, + }); + } + + #[test] + fn tar_custom_recipe() { + use crate::recipe::{Recipe, SourceRecipe, BuildRecipe}; + + let recipe: Recipe = toml::from_str(r#" + [source] + tar = "http://downloads.xiph.org/releases/ogg/libogg-1.3.3.tar.xz" + sha256 = "4f3fc6178a533d392064f14776b23c397ed4b9f48f5de297aba73b643f955c08" + + [build] + template = "custom" + script = "make" + "#).unwrap(); + + assert_eq!(recipe, Recipe { + source: SourceRecipe::Tar { + tar: "http://downloads.xiph.org/releases/ogg/libogg-1.3.3.tar.xz".to_string(), + sha256: Some("4f3fc6178a533d392064f14776b23c397ed4b9f48f5de297aba73b643f955c08".to_string()), + }, + patches: Vec::new(), + build: BuildRecipe::Custom { + script: "make".to_string() + }, + }); + } +} diff --git a/src/sha256.rs b/src/sha256.rs new file mode 100644 index 00000000..c424e001 --- /dev/null +++ b/src/sha256.rs @@ -0,0 +1,45 @@ +use std::{ + fs, + io::{Read, Result}, + path::Path, + time::Duration, +}; +use sha2::{Digest, Sha256}; + +use crate::progress_bar::{ProgressBar, ProgressBarRead}; + +pub fn sha256(r: &mut R) -> Result { + let mut hasher = Sha256::default(); + + let mut data = vec![0; 4 * 1024 * 1024]; + loop { + let count = r.read(&mut data)?; + if count == 0 { + break; + } + + hasher.input(&data[..count]); + } + + Ok(format!("{:x}", hasher.result())) +} + +pub fn sha256_progress>(path: P) -> Result { + let len = fs::metadata(&path)?.len(); + + let mut f = fs::File::open(&path)?; + + let mut pb = ProgressBar::new(len); + pb.message("sha256: "); + pb.set_max_refresh_rate(Some(Duration::new(1, 0))); + pb.set_units(pbr::Units::Bytes); + + let res = { + let mut pbr = ProgressBarRead::new(&mut pb, &mut f); + sha256(&mut pbr) + }; + + pb.finish_println(""); + + res +} From 11a244bef324f55b02325b1dcaf7dac88676b36a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 20 May 2020 14:02:01 -0600 Subject: [PATCH 0768/3180] Implement patching --- src/bin/cook.rs | 75 +++++++++++++++++++++++++++++++++++++++++++++---- src/recipe.rs | 6 ++-- 2 files changed, 72 insertions(+), 9 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index aebe8684..03e5c089 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -4,8 +4,9 @@ use cookbook::sha256::sha256_progress; use std::{ env, fs, - path::Path, - process::{self, Command}, + io::Write, + path::{Path, PathBuf}, + process::{self, Command, Stdio}, }; use termion::{color, style}; @@ -57,7 +58,7 @@ fn run_command(mut command: process::Command) -> Result<(), String> { Ok(()) } -fn fetch(source: &SourceRecipe, recipe_dir: &Path) -> Result<(), String> { +fn fetch(recipe_dir: &Path, source: &SourceRecipe) -> Result { let source_dir = recipe_dir.join("source"); match source { SourceRecipe::Git { git, upstream, branch, rev } => { @@ -130,7 +131,7 @@ fn fetch(source: &SourceRecipe, recipe_dir: &Path) -> Result<(), String> { command.arg("submodule").arg("update").arg("--init").arg("--recursive"); run_command(command)?; }, - SourceRecipe::Tar { tar, blake3, sha256 } => { + SourceRecipe::Tar { tar, blake3, sha256, patches } => { if ! source_dir.is_dir() { // Download tar //TODO: replace wget @@ -197,15 +198,77 @@ fn fetch(source: &SourceRecipe, recipe_dir: &Path) -> Result<(), String> { command.arg("--verbose"); command.arg("--file").arg(&source_tar); command.arg("--directory").arg(&source_dir_tmp); + command.arg("--strip-components").arg("1"); run_command(command)?; + // Apply patches + for patch_name in patches { + let patch_file = recipe_dir.join(&patch_name); + if ! patch_file.is_file() { + return Err(format!( + "failed to find patch file '{}'", + patch_file.display() + )); + } + + let patch = fs::read_to_string(&patch_file).map_err(|err| format!( + "failed to read patch file '{}': {}\n{:#?}", + patch_file.display(), + err, + err + ))?; + + let mut command = Command::new("patch"); + command.arg("--directory").arg(&source_dir_tmp); + command.arg("--strip=1"); + command.stdin(Stdio::piped()); + + let mut child = command.spawn().map_err(|err| format!( + "failed to spawn {:?}: {}\n{:#?}", + command, + err, + err + ))?; + + if let Some(ref mut stdin) = child.stdin { + stdin.write_all(patch.as_bytes()).map_err(|err| format!( + "failed to write stdin of {:?}: {}\n{:#?}", + command, + err, + err + ))?; + } else { + return Err(format!( + "failed to find stdin of {:?}", + command + )); + } + + let status = child.wait().map_err(|err| format!( + "failed to run {:?}: {}\n{:#?}", + command, + err, + err + ))?; + + if ! status.success() { + return Err(format!( + "failed to run {:?}: exited with status {}", + command, + status + )); + } + + run_command(command)?; + } + // Move source.tmp to source atomically rename(&source_dir_tmp, &source_dir)?; } } } - Ok(()) + Ok(source_dir) } fn cook(recipe_name: &str) -> Result<(), String> { @@ -240,7 +303,7 @@ fn cook(recipe_name: &str) -> Result<(), String> { err ))?; - fetch(&recipe.source, &recipe_dir).map_err(|err| format!( + let source_dir = fetch(&recipe_dir, &recipe.source).map_err(|err| format!( "failed to fetch: {}", err ))?; diff --git a/src/recipe.rs b/src/recipe.rs index 6ec4a918..da6db88a 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -26,6 +26,9 @@ pub enum SourceRecipe { blake3: Option, /// The optional sha256 sum of the tar file. This is a slower alternative to a blake3 sum sha256: Option, + /// A list of patch files to apply to the source + #[serde(default)] + patches: Vec, }, } @@ -48,9 +51,6 @@ pub enum BuildRecipe { pub struct Recipe { /// Specifies how to donload the source for this recipe pub source: SourceRecipe, - /// A list of patch files to apply to the source - #[serde(default)] - pub patches: Vec, /// Specifies how to build this recipe pub build: BuildRecipe, } From fa00a61b9563f6b154a2073307e81fd4ff312cce Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 20 May 2020 14:04:16 -0600 Subject: [PATCH 0769/3180] Remove duplicate execution of patch command --- src/bin/cook.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 03e5c089..06edae0c 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -258,8 +258,6 @@ fn fetch(recipe_dir: &Path, source: &SourceRecipe) -> Result { status )); } - - run_command(command)?; } // Move source.tmp to source atomically From 204e968016f3a8a98d3076d89699f36910e0fb3f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 20 May 2020 15:44:37 -0600 Subject: [PATCH 0770/3180] Implement builds, add some recipes --- .gitignore | 6 + recipes/acid/recipe.toml | 6 + recipes/libffi/recipe.toml | 8 + recipes/libffi/redox.patch | 2820 +++++++++++++++++++++++++++++++++++ recipes/libogg/recipe.toml | 9 + recipes/libogg/redox.patch | 2833 ++++++++++++++++++++++++++++++++++++ recipes/pcre/recipe.toml | 8 + src/bin/cook.rs | 164 ++- src/recipe.rs | 3 + 9 files changed, 5819 insertions(+), 38 deletions(-) create mode 100644 recipes/acid/recipe.toml create mode 100644 recipes/libffi/recipe.toml create mode 100644 recipes/libffi/redox.patch create mode 100644 recipes/libogg/recipe.toml create mode 100644 recipes/libogg/redox.patch create mode 100644 recipes/pcre/recipe.toml diff --git a/.gitignore b/.gitignore index eab8ed42..7fd98398 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,9 @@ stage.tar.gz stage.toml sysroot xargo + + +#Added by cargo + +/target +**/*.rs.bk diff --git a/recipes/acid/recipe.toml b/recipes/acid/recipe.toml new file mode 100644 index 00000000..2c63247f --- /dev/null +++ b/recipes/acid/recipe.toml @@ -0,0 +1,6 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/acid.git" +branch = "master" + +[build] +template = "cargo" diff --git a/recipes/libffi/recipe.toml b/recipes/libffi/recipe.toml new file mode 100644 index 00000000..cebe71c4 --- /dev/null +++ b/recipes/libffi/recipe.toml @@ -0,0 +1,8 @@ +[source] +tar = "https://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz" +patches = [ + "redox.patch" +] + +[build] +template = "configure" diff --git a/recipes/libffi/redox.patch b/recipes/libffi/redox.patch new file mode 100644 index 00000000..c96d3cf9 --- /dev/null +++ b/recipes/libffi/redox.patch @@ -0,0 +1,2820 @@ +--- source/config.sub 2014-11-12 04:59:58.000000000 -0700 ++++ source-newconfig.sub 2020-05-20 15:41:56.000000000 -0600 +@@ -1,8 +1,8 @@ + #! /bin/sh + # Configuration validation subroutine script. +-# Copyright 1992-2013 Free Software Foundation, Inc. ++# Copyright 1992-2020 Free Software Foundation, Inc. + +-timestamp='2013-04-24' ++timestamp='2020-05-04' + + # This file is free software; you can redistribute it and/or modify it + # under the terms of the GNU General Public License as published by +@@ -15,7 +15,7 @@ + # General Public License for more details. + # + # You should have received a copy of the GNU General Public License +-# along with this program; if not, see . ++# along with this program; if not, see . + # + # As a special exception to the GNU General Public License, if you + # distribute this file as part of a program that contains a +@@ -25,7 +25,7 @@ + # of the GNU General Public License, version 3 ("GPLv3"). + + +-# Please send patches with a ChangeLog entry to config-patches@gnu.org. ++# Please send patches to . + # + # Configuration subroutine to validate and canonicalize a configuration type. + # Supply the specified configuration type as an argument. +@@ -33,7 +33,7 @@ + # Otherwise, we print the canonical config type on stdout and succeed. + + # You can get the latest version of this script from: +-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD ++# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + + # This file is supposed to be the same for all GNU packages + # and recognize all the CPU types, system types and aliases +@@ -53,12 +53,11 @@ + me=`echo "$0" | sed -e 's,.*/,,'` + + usage="\ +-Usage: $0 [OPTION] CPU-MFR-OPSYS +- $0 [OPTION] ALIAS ++Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + + Canonicalize a configuration name. + +-Operation modes: ++Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit +@@ -68,7 +67,7 @@ + version="\ + GNU config.sub ($timestamp) + +-Copyright 1992-2013 Free Software Foundation, Inc. ++Copyright 1992-2020 Free Software Foundation, Inc. + + This is free software; see the source for copying conditions. There is NO + warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." +@@ -90,12 +89,12 @@ + - ) # Use stdin as input. + break ;; + -* ) +- echo "$me: invalid option $1$help" ++ echo "$me: invalid option $1$help" >&2 + exit 1 ;; + + *local*) + # First pass through any local machine types. +- echo $1 ++ echo "$1" + exit ;; + + * ) +@@ -111,1209 +110,1164 @@ + exit 1;; + esac + +-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +-# Here we must recognize all the valid KERNEL-OS combinations. +-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` ++# Split fields of configuration type ++# shellcheck disable=SC2162 ++IFS="-" read field1 field2 field3 field4 <&2 ++ exit 1 ++ ;; ++ *-*-*-*) ++ basic_machine=$field1-$field2 ++ os=$field3-$field4 ++ ;; ++ *-*-*) ++ # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two ++ # parts ++ maybe_os=$field2-$field3 + case $maybe_os in +- nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ +- linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ +- knetbsd*-gnu* | netbsd*-gnu* | \ +- kopensolaris*-gnu* | \ +- storm-chaos* | os2-emx* | rtmk-nova*) +- os=-$maybe_os +- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ++ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \ ++ | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \ ++ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ ++ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ ++ | storm-chaos* | os2-emx* | rtmk-nova*) ++ basic_machine=$field1 ++ os=$maybe_os + ;; + android-linux) +- os=-linux-android +- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ++ basic_machine=$field1-unknown ++ os=linux-android + ;; + *) +- basic_machine=`echo $1 | sed 's/-[^-]*$//'` +- if [ $basic_machine != $1 ] +- then os=`echo $1 | sed 's/.*-/-/'` +- else os=; fi ++ basic_machine=$field1-$field2 ++ os=$field3 + ;; + esac +- +-### Let's recognize common machines as not being operating systems so +-### that things like config.sub decstation-3100 work. We also +-### recognize some manufacturers as not being operating systems, so we +-### can provide default operating systems below. +-case $os in +- -sun*os*) +- # Prevent following clause from handling this invalid input. + ;; +- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ +- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ +- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ +- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ +- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ +- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ +- -apple | -axis | -knuth | -cray | -microblaze*) ++ *-*) ++ # A lone config we happen to match not fitting any pattern ++ case $field1-$field2 in ++ decstation-3100) ++ basic_machine=mips-dec + os= +- basic_machine=$1 +- ;; +- -bluegene*) +- os=-cnk + ;; +- -sim | -cisco | -oki | -wec | -winbond) ++ *-*) ++ # Second component is usually, but not always the OS ++ case $field2 in ++ # Prevent following clause from handling this valid os ++ sun*os*) ++ basic_machine=$field1 ++ os=$field2 ++ ;; ++ # Manufacturers ++ dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ ++ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ ++ | unicom* | ibm* | next | hp | isi* | apollo | altos* \ ++ | convergent* | ncr* | news | 32* | 3600* | 3100* \ ++ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ ++ | ultra | tti* | harris | dolphin | highlevel | gould \ ++ | cbm | ns | masscomp | apple | axis | knuth | cray \ ++ | microblaze* | sim | cisco \ ++ | oki | wec | wrs | winbond) ++ basic_machine=$field1-$field2 + os= +- basic_machine=$1 +- ;; +- -scout) +- ;; +- -wrs) +- os=-vxworks +- basic_machine=$1 +- ;; +- -chorusos*) +- os=-chorusos +- basic_machine=$1 +- ;; +- -chorusrdb) +- os=-chorusrdb +- basic_machine=$1 +- ;; +- -hiux*) +- os=-hiuxwe2 +- ;; +- -sco6) +- os=-sco5v6 +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -sco5) +- os=-sco3.2v5 +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -sco4) +- os=-sco3.2v4 +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; +- -sco3.2.[4-9]*) +- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -sco3.2v[4-9]*) +- # Don't forget version if it is 3.2v4 or newer. +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -sco5v6*) +- # Don't forget version if it is 3.2v4 or newer. +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -sco*) +- os=-sco3.2v2 +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -udk*) +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -isc) +- os=-isc2.2 +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -clix*) +- basic_machine=clipper-intergraph +- ;; +- -isc*) +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -lynx*178) +- os=-lynxos178 +- ;; +- -lynx*5) +- os=-lynxos5 +- ;; +- -lynx*) +- os=-lynxos +- ;; +- -ptx*) +- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` +- ;; +- -windowsnt*) +- os=`echo $os | sed -e 's/windowsnt/winnt/'` +- ;; +- -psos*) +- os=-psos +- ;; +- -mint | -mint[0-9]*) +- basic_machine=m68k-atari +- os=-mint ++ *) ++ basic_machine=$field1 ++ os=$field2 + ;; + esac +- +-# Decode aliases for certain CPU-COMPANY combinations. +-case $basic_machine in +- # Recognize the basic CPU types without company name. +- # Some are omitted here because they have special meanings below. +- 1750a | 580 \ +- | a29k \ +- | aarch64 | aarch64_be \ +- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ +- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ +- | am33_2.0 \ +- | arc | arceb \ +- | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ +- | avr | avr32 \ +- | be32 | be64 \ +- | bfin \ +- | c4x | clipper \ +- | d10v | d30v | dlx | dsp16xx \ +- | epiphany \ +- | fido | fr30 | frv \ +- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ +- | hexagon \ +- | i370 | i860 | i960 | ia64 \ +- | ip2k | iq2000 \ +- | le32 | le64 \ +- | lm32 \ +- | m32c | m32r | m32rle | m68000 | m68k | m88k \ +- | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ +- | mips | mipsbe | mipseb | mipsel | mipsle \ +- | mips16 \ +- | mips64 | mips64el \ +- | mips64octeon | mips64octeonel \ +- | mips64orion | mips64orionel \ +- | mips64r5900 | mips64r5900el \ +- | mips64vr | mips64vrel \ +- | mips64vr4100 | mips64vr4100el \ +- | mips64vr4300 | mips64vr4300el \ +- | mips64vr5000 | mips64vr5000el \ +- | mips64vr5900 | mips64vr5900el \ +- | mipsisa32 | mipsisa32el \ +- | mipsisa32r2 | mipsisa32r2el \ +- | mipsisa64 | mipsisa64el \ +- | mipsisa64r2 | mipsisa64r2el \ +- | mipsisa64sb1 | mipsisa64sb1el \ +- | mipsisa64sr71k | mipsisa64sr71kel \ +- | mipsr5900 | mipsr5900el \ +- | mipstx39 | mipstx39el \ +- | mn10200 | mn10300 \ +- | moxie \ +- | mt \ +- | msp430 \ +- | nds32 | nds32le | nds32be \ +- | nios | nios2 | nios2eb | nios2el \ +- | ns16k | ns32k \ +- | open8 \ +- | or1k | or32 \ +- | pdp10 | pdp11 | pj | pjl \ +- | powerpc | powerpc64 | powerpc64le | powerpcle \ +- | pyramid \ +- | rl78 | rx \ +- | score \ +- | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ +- | sh64 | sh64le \ +- | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ +- | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ +- | spu \ +- | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ +- | ubicom32 \ +- | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ +- | we32k \ +- | x86 | xc16x | xstormy16 | xtensa \ +- | z8k | z80) +- basic_machine=$basic_machine-unknown +- ;; +- c54x) +- basic_machine=tic54x-unknown +- ;; +- c55x) +- basic_machine=tic55x-unknown +- ;; +- c6x) +- basic_machine=tic6x-unknown +- ;; +- m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) +- basic_machine=$basic_machine-unknown +- os=-none +- ;; +- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) +- ;; +- ms1) +- basic_machine=mt-unknown +- ;; +- +- strongarm | thumb | xscale) +- basic_machine=arm-unknown +- ;; +- xgate) +- basic_machine=$basic_machine-unknown +- os=-none +- ;; +- xscaleeb) +- basic_machine=armeb-unknown +- ;; +- +- xscaleel) +- basic_machine=armel-unknown +- ;; +- +- # We use `pc' rather than `unknown' +- # because (1) that's what they normally are, and +- # (2) the word "unknown" tends to confuse beginning users. +- i*86 | x86_64) +- basic_machine=$basic_machine-pc + ;; +- # Object if more than one company name word. +- *-*-*) +- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 +- exit 1 +- ;; +- # Recognize the basic CPU types with company name. +- 580-* \ +- | a29k-* \ +- | aarch64-* | aarch64_be-* \ +- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ +- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ +- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ +- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ +- | avr-* | avr32-* \ +- | be32-* | be64-* \ +- | bfin-* | bs2000-* \ +- | c[123]* | c30-* | [cjt]90-* | c4x-* \ +- | clipper-* | craynv-* | cydra-* \ +- | d10v-* | d30v-* | dlx-* \ +- | elxsi-* \ +- | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ +- | h8300-* | h8500-* \ +- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ +- | hexagon-* \ +- | i*86-* | i860-* | i960-* | ia64-* \ +- | ip2k-* | iq2000-* \ +- | le32-* | le64-* \ +- | lm32-* \ +- | m32c-* | m32r-* | m32rle-* \ +- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ +- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ +- | microblaze-* | microblazeel-* \ +- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ +- | mips16-* \ +- | mips64-* | mips64el-* \ +- | mips64octeon-* | mips64octeonel-* \ +- | mips64orion-* | mips64orionel-* \ +- | mips64r5900-* | mips64r5900el-* \ +- | mips64vr-* | mips64vrel-* \ +- | mips64vr4100-* | mips64vr4100el-* \ +- | mips64vr4300-* | mips64vr4300el-* \ +- | mips64vr5000-* | mips64vr5000el-* \ +- | mips64vr5900-* | mips64vr5900el-* \ +- | mipsisa32-* | mipsisa32el-* \ +- | mipsisa32r2-* | mipsisa32r2el-* \ +- | mipsisa64-* | mipsisa64el-* \ +- | mipsisa64r2-* | mipsisa64r2el-* \ +- | mipsisa64sb1-* | mipsisa64sb1el-* \ +- | mipsisa64sr71k-* | mipsisa64sr71kel-* \ +- | mipsr5900-* | mipsr5900el-* \ +- | mipstx39-* | mipstx39el-* \ +- | mmix-* \ +- | mt-* \ +- | msp430-* \ +- | nds32-* | nds32le-* | nds32be-* \ +- | nios-* | nios2-* | nios2eb-* | nios2el-* \ +- | none-* | np1-* | ns16k-* | ns32k-* \ +- | open8-* \ +- | orion-* \ +- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ +- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ +- | pyramid-* \ +- | rl78-* | romp-* | rs6000-* | rx-* \ +- | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ +- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ +- | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ +- | sparclite-* \ +- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ +- | tahoe-* \ +- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ +- | tile*-* \ +- | tron-* \ +- | ubicom32-* \ +- | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ +- | vax-* \ +- | we32k-* \ +- | x86-* | x86_64-* | xc16x-* | xps100-* \ +- | xstormy16-* | xtensa*-* \ +- | ymp-* \ +- | z8k-* | z80-*) +- ;; +- # Recognize the basic CPU types without company name, with glob match. +- xtensa*) +- basic_machine=$basic_machine-unknown ++ esac + ;; +- # Recognize the various machine names and aliases which stand +- # for a CPU type and a company and sometimes even an OS. ++ *) ++ # Convert single-component short-hands not valid as part of ++ # multi-component configurations. ++ case $field1 in + 386bsd) +- basic_machine=i386-unknown +- os=-bsd +- ;; +- 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) +- basic_machine=m68000-att +- ;; +- 3b*) +- basic_machine=we32k-att ++ basic_machine=i386-pc ++ os=bsd + ;; + a29khif) + basic_machine=a29k-amd +- os=-udi +- ;; +- abacus) +- basic_machine=abacus-unknown ++ os=udi + ;; + adobe68k) + basic_machine=m68010-adobe +- os=-scout ++ os=scout + ;; +- alliant | fx80) ++ alliant) + basic_machine=fx80-alliant ++ os= + ;; + altos | altos3068) + basic_machine=m68k-altos ++ os= + ;; + am29k) + basic_machine=a29k-none +- os=-bsd +- ;; +- amd64) +- basic_machine=x86_64-pc +- ;; +- amd64-*) +- basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ++ os=bsd + ;; + amdahl) + basic_machine=580-amdahl +- os=-sysv ++ os=sysv + ;; +- amiga | amiga-*) ++ amiga) + basic_machine=m68k-unknown ++ os= + ;; + amigaos | amigados) + basic_machine=m68k-unknown +- os=-amigaos ++ os=amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown +- os=-sysv4 ++ os=sysv4 + ;; + apollo68) + basic_machine=m68k-apollo +- os=-sysv ++ os=sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo +- os=-bsd ++ os=bsd + ;; + aros) + basic_machine=i386-pc +- os=-aros ++ os=aros + ;; + aux) + basic_machine=m68k-apple +- os=-aux ++ os=aux + ;; + balance) + basic_machine=ns32k-sequent +- os=-dynix ++ os=dynix + ;; + blackfin) + basic_machine=bfin-unknown +- os=-linux +- ;; +- blackfin-*) +- basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` +- os=-linux +- ;; +- bluegene*) +- basic_machine=powerpc-ibm +- os=-cnk +- ;; +- c54x-*) +- basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- c55x-*) +- basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- c6x-*) +- basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- c90) +- basic_machine=c90-cray +- os=-unicos ++ os=linux + ;; + cegcc) + basic_machine=arm-unknown +- os=-cegcc ++ os=cegcc + ;; + convex-c1) + basic_machine=c1-convex +- os=-bsd ++ os=bsd + ;; + convex-c2) + basic_machine=c2-convex +- os=-bsd ++ os=bsd + ;; + convex-c32) + basic_machine=c32-convex +- os=-bsd ++ os=bsd + ;; + convex-c34) + basic_machine=c34-convex +- os=-bsd ++ os=bsd + ;; + convex-c38) + basic_machine=c38-convex +- os=-bsd ++ os=bsd + ;; +- cray | j90) ++ cray) + basic_machine=j90-cray +- os=-unicos +- ;; +- craynv) +- basic_machine=craynv-cray +- os=-unicosmp +- ;; +- cr16 | cr16-*) +- basic_machine=cr16-unknown +- os=-elf ++ os=unicos + ;; + crds | unos) + basic_machine=m68k-crds ++ os= + ;; +- crisv32 | crisv32-* | etraxfs*) +- basic_machine=crisv32-axis +- ;; +- cris | cris-* | etrax*) +- basic_machine=cris-axis +- ;; +- crx) +- basic_machine=crx-unknown +- os=-elf +- ;; +- da30 | da30-*) ++ da30) + basic_machine=m68k-da30 ++ os= + ;; +- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) ++ decstation | pmax | pmin | dec3100 | decstatn) + basic_machine=mips-dec +- ;; +- decsystem10* | dec10*) +- basic_machine=pdp10-dec +- os=-tops10 +- ;; +- decsystem20* | dec20*) +- basic_machine=pdp10-dec +- os=-tops20 +- ;; +- delta | 3300 | motorola-3300 | motorola-delta \ +- | 3300-motorola | delta-motorola) +- basic_machine=m68k-motorola ++ os= + ;; + delta88) + basic_machine=m88k-motorola +- os=-sysv3 ++ os=sysv3 + ;; + dicos) + basic_machine=i686-pc +- os=-dicos ++ os=dicos + ;; + djgpp) + basic_machine=i586-pc +- os=-msdosdjgpp +- ;; +- dpx20 | dpx20-*) +- basic_machine=rs6000-bull +- os=-bosx +- ;; +- dpx2* | dpx2*-bull) +- basic_machine=m68k-bull +- os=-sysv3 ++ os=msdosdjgpp + ;; + ebmon29k) + basic_machine=a29k-amd +- os=-ebmon +- ;; +- elxsi) +- basic_machine=elxsi-elxsi +- os=-bsd +- ;; +- encore | umax | mmax) +- basic_machine=ns32k-encore ++ os=ebmon + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson +- os=-ose +- ;; +- fx2800) +- basic_machine=i860-alliant +- ;; +- genix) +- basic_machine=ns32k-ns ++ os=ose + ;; + gmicro) + basic_machine=tron-gmicro +- os=-sysv ++ os=sysv + ;; + go32) + basic_machine=i386-pc +- os=-go32 +- ;; +- h3050r* | hiux*) +- basic_machine=hppa1.1-hitachi +- os=-hiuxwe2 ++ os=go32 + ;; + h8300hms) + basic_machine=h8300-hitachi +- os=-hms ++ os=hms + ;; + h8300xray) + basic_machine=h8300-hitachi +- os=-xray ++ os=xray + ;; + h8500hms) + basic_machine=h8500-hitachi +- os=-hms ++ os=hms + ;; + harris) + basic_machine=m88k-harris +- os=-sysv3 ++ os=sysv3 + ;; +- hp300-*) ++ hp300 | hp300hpux) + basic_machine=m68k-hp ++ os=hpux + ;; + hp300bsd) + basic_machine=m68k-hp +- os=-bsd +- ;; +- hp300hpux) +- basic_machine=m68k-hp +- os=-hpux +- ;; +- hp3k9[0-9][0-9] | hp9[0-9][0-9]) +- basic_machine=hppa1.0-hp +- ;; +- hp9k2[0-9][0-9] | hp9k31[0-9]) +- basic_machine=m68000-hp +- ;; +- hp9k3[2-9][0-9]) +- basic_machine=m68k-hp +- ;; +- hp9k6[0-9][0-9] | hp6[0-9][0-9]) +- basic_machine=hppa1.0-hp +- ;; +- hp9k7[0-79][0-9] | hp7[0-79][0-9]) +- basic_machine=hppa1.1-hp +- ;; +- hp9k78[0-9] | hp78[0-9]) +- # FIXME: really hppa2.0-hp +- basic_machine=hppa1.1-hp +- ;; +- hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) +- # FIXME: really hppa2.0-hp +- basic_machine=hppa1.1-hp +- ;; +- hp9k8[0-9][13679] | hp8[0-9][13679]) +- basic_machine=hppa1.1-hp +- ;; +- hp9k8[0-9][0-9] | hp8[0-9][0-9]) +- basic_machine=hppa1.0-hp +- ;; +- hppa-next) +- os=-nextstep3 ++ os=bsd + ;; + hppaosf) + basic_machine=hppa1.1-hp +- os=-osf ++ os=osf + ;; + hppro) + basic_machine=hppa1.1-hp +- os=-proelf +- ;; +- i370-ibm* | ibm*) +- basic_machine=i370-ibm +- ;; +- i*86v32) +- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` +- os=-sysv32 +- ;; +- i*86v4*) +- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` +- os=-sysv4 +- ;; +- i*86v) +- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` +- os=-sysv +- ;; +- i*86sol2) +- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` +- os=-solaris2 ++ os=proelf + ;; + i386mach) + basic_machine=i386-mach +- os=-mach +- ;; +- i386-vsta | vsta) +- basic_machine=i386-unknown +- os=-vsta +- ;; +- iris | iris4d) +- basic_machine=mips-sgi +- case $os in +- -irix*) +- ;; +- *) +- os=-irix4 +- ;; +- esac ++ os=mach + ;; + isi68 | isi) + basic_machine=m68k-isi +- os=-sysv ++ os=sysv + ;; + m68knommu) + basic_machine=m68k-unknown +- os=-linux +- ;; +- m68knommu-*) +- basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` +- os=-linux +- ;; +- m88k-omron*) +- basic_machine=m88k-omron ++ os=linux + ;; + magnum | m3230) + basic_machine=mips-mips +- os=-sysv ++ os=sysv + ;; + merlin) + basic_machine=ns32k-utek +- os=-sysv +- ;; +- microblaze*) +- basic_machine=microblaze-xilinx ++ os=sysv + ;; + mingw64) + basic_machine=x86_64-pc +- os=-mingw64 ++ os=mingw64 + ;; + mingw32) +- basic_machine=i386-pc +- os=-mingw32 ++ basic_machine=i686-pc ++ os=mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown +- os=-mingw32ce +- ;; +- miniframe) +- basic_machine=m68000-convergent +- ;; +- *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) +- basic_machine=m68k-atari +- os=-mint +- ;; +- mips3*-*) +- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` +- ;; +- mips3*) +- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ++ os=mingw32ce + ;; + monitor) + basic_machine=m68k-rom68k +- os=-coff ++ os=coff + ;; + morphos) + basic_machine=powerpc-unknown +- os=-morphos ++ os=morphos ++ ;; ++ moxiebox) ++ basic_machine=moxie-unknown ++ os=moxiebox + ;; + msdos) + basic_machine=i386-pc +- os=-msdos +- ;; +- ms1-*) +- basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ++ os=msdos + ;; + msys) +- basic_machine=i386-pc +- os=-msys ++ basic_machine=i686-pc ++ os=msys + ;; + mvs) + basic_machine=i370-ibm +- os=-mvs ++ os=mvs + ;; + nacl) + basic_machine=le32-unknown +- os=-nacl ++ os=nacl + ;; + ncr3000) + basic_machine=i486-ncr +- os=-sysv4 ++ os=sysv4 + ;; + netbsd386) +- basic_machine=i386-unknown +- os=-netbsd ++ basic_machine=i386-pc ++ os=netbsd + ;; + netwinder) + basic_machine=armv4l-rebel +- os=-linux ++ os=linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony +- os=-newsos ++ os=newsos + ;; + news1000) + basic_machine=m68030-sony +- os=-newsos +- ;; +- news-3600 | risc-news) +- basic_machine=mips-sony +- os=-newsos ++ os=newsos + ;; + necv70) + basic_machine=v70-nec +- os=-sysv +- ;; +- next | m*-next ) +- basic_machine=m68k-next +- case $os in +- -nextstep* ) +- ;; +- -ns2*) +- os=-nextstep2 +- ;; +- *) +- os=-nextstep3 +- ;; +- esac ++ os=sysv + ;; + nh3000) + basic_machine=m68k-harris +- os=-cxux ++ os=cxux + ;; + nh[45]000) + basic_machine=m88k-harris +- os=-cxux ++ os=cxux + ;; + nindy960) + basic_machine=i960-intel +- os=-nindy ++ os=nindy + ;; + mon960) + basic_machine=i960-intel +- os=-mon960 ++ os=mon960 + ;; + nonstopux) + basic_machine=mips-compaq +- os=-nonstopux +- ;; +- np1) +- basic_machine=np1-gould +- ;; +- neo-tandem) +- basic_machine=neo-tandem +- ;; +- nse-tandem) +- basic_machine=nse-tandem +- ;; +- nsr-tandem) +- basic_machine=nsr-tandem +- ;; +- op50n-* | op60c-*) +- basic_machine=hppa1.1-oki +- os=-proelf +- ;; +- openrisc | openrisc-*) +- basic_machine=or32-unknown ++ os=nonstopux + ;; + os400) + basic_machine=powerpc-ibm +- os=-os400 ++ os=os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson +- os=-ose ++ os=ose + ;; + os68k) + basic_machine=m68k-none +- os=-os68k +- ;; +- pa-hitachi) +- basic_machine=hppa1.1-hitachi +- os=-hiuxwe2 ++ os=os68k + ;; + paragon) + basic_machine=i860-intel +- os=-osf ++ os=osf + ;; + parisc) + basic_machine=hppa-unknown +- os=-linux +- ;; +- parisc-*) +- basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` +- os=-linux +- ;; +- pbd) +- basic_machine=sparc-tti +- ;; +- pbb) +- basic_machine=m68k-tti +- ;; +- pc532 | pc532-*) +- basic_machine=ns32k-pc532 +- ;; +- pc98) +- basic_machine=i386-pc +- ;; +- pc98-*) +- basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- pentium | p5 | k5 | k6 | nexgen | viac3) +- basic_machine=i586-pc +- ;; +- pentiumpro | p6 | 6x86 | athlon | athlon_*) +- basic_machine=i686-pc +- ;; +- pentiumii | pentium2 | pentiumiii | pentium3) +- basic_machine=i686-pc +- ;; +- pentium4) +- basic_machine=i786-pc +- ;; +- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) +- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- pentiumpro-* | p6-* | 6x86-* | athlon-*) +- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) +- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- pentium4-*) +- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- pn) +- basic_machine=pn-gould +- ;; +- power) basic_machine=power-ibm +- ;; +- ppc | ppcbe) basic_machine=powerpc-unknown +- ;; +- ppc-* | ppcbe-*) +- basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- ppcle | powerpclittle | ppc-le | powerpc-little) +- basic_machine=powerpcle-unknown +- ;; +- ppcle-* | powerpclittle-*) +- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- ppc64) basic_machine=powerpc64-unknown +- ;; +- ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- ppc64le | powerpc64little | ppc64-le | powerpc64-little) +- basic_machine=powerpc64le-unknown +- ;; +- ppc64le-* | powerpc64little-*) +- basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- ps2) +- basic_machine=i386-ibm ++ os=linux + ;; + pw32) + basic_machine=i586-unknown +- os=-pw32 ++ os=pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc +- os=-rdos ++ os=rdos + ;; + rdos32) + basic_machine=i386-pc +- os=-rdos ++ os=rdos + ;; + rom68k) + basic_machine=m68k-rom68k +- os=-coff +- ;; +- rm[46]00) +- basic_machine=mips-siemens +- ;; +- rtpc | rtpc-*) +- basic_machine=romp-ibm +- ;; +- s390 | s390-*) +- basic_machine=s390-ibm +- ;; +- s390x | s390x-*) +- basic_machine=s390x-ibm ++ os=coff + ;; + sa29200) + basic_machine=a29k-amd +- os=-udi +- ;; +- sb1) +- basic_machine=mipsisa64sb1-unknown +- ;; +- sb1el) +- basic_machine=mipsisa64sb1el-unknown +- ;; +- sde) +- basic_machine=mipsisa32-sde +- os=-elf ++ os=udi + ;; + sei) + basic_machine=mips-sei +- os=-seiux ++ os=seiux + ;; + sequent) + basic_machine=i386-sequent +- ;; +- sh) +- basic_machine=sh-hitachi +- os=-hms +- ;; +- sh5el) +- basic_machine=sh5le-unknown +- ;; +- sh64) +- basic_machine=sh64-unknown +- ;; +- sparclite-wrs | simso-wrs) +- basic_machine=sparclite-wrs +- os=-vxworks ++ os= + ;; + sps7) + basic_machine=m68k-bull +- os=-sysv2 +- ;; +- spur) +- basic_machine=spur-unknown ++ os=sysv2 + ;; + st2000) + basic_machine=m68k-tandem ++ os= + ;; + stratus) + basic_machine=i860-stratus +- os=-sysv4 +- ;; +- strongarm-* | thumb-*) +- basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ++ os=sysv4 + ;; + sun2) + basic_machine=m68000-sun ++ os= + ;; + sun2os3) + basic_machine=m68000-sun +- os=-sunos3 ++ os=sunos3 + ;; + sun2os4) + basic_machine=m68000-sun +- os=-sunos4 ++ os=sunos4 ++ ;; ++ sun3) ++ basic_machine=m68k-sun ++ os= + ;; + sun3os3) + basic_machine=m68k-sun +- os=-sunos3 ++ os=sunos3 + ;; + sun3os4) + basic_machine=m68k-sun +- os=-sunos4 ++ os=sunos4 ++ ;; ++ sun4) ++ basic_machine=sparc-sun ++ os= + ;; + sun4os3) + basic_machine=sparc-sun +- os=-sunos3 ++ os=sunos3 + ;; + sun4os4) + basic_machine=sparc-sun +- os=-sunos4 ++ os=sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun +- os=-solaris2 +- ;; +- sun3 | sun3-*) +- basic_machine=m68k-sun +- ;; +- sun4) +- basic_machine=sparc-sun ++ os=solaris2 + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun ++ os= + ;; + sv1) + basic_machine=sv1-cray +- os=-unicos ++ os=unicos + ;; + symmetry) + basic_machine=i386-sequent +- os=-dynix ++ os=dynix + ;; + t3e) + basic_machine=alphaev5-cray +- os=-unicos ++ os=unicos + ;; + t90) + basic_machine=t90-cray +- os=-unicos +- ;; +- tile*) +- basic_machine=$basic_machine-unknown +- os=-linux-gnu +- ;; +- tx39) +- basic_machine=mipstx39-unknown +- ;; +- tx39el) +- basic_machine=mipstx39el-unknown ++ os=unicos + ;; + toad1) + basic_machine=pdp10-xkl +- os=-tops20 +- ;; +- tower | tower-32) +- basic_machine=m68k-ncr ++ os=tops20 + ;; + tpf) + basic_machine=s390x-ibm +- os=-tpf ++ os=tpf + ;; + udi29k) + basic_machine=a29k-amd +- os=-udi ++ os=udi + ;; + ultra3) + basic_machine=a29k-nyu +- os=-sym1 ++ os=sym1 + ;; + v810 | necv810) + basic_machine=v810-nec +- os=-none ++ os=none + ;; + vaxv) + basic_machine=vax-dec +- os=-sysv ++ os=sysv + ;; + vms) + basic_machine=vax-dec +- os=-vms ++ os=vms + ;; +- vpp*|vx|vx-*) +- basic_machine=f301-fujitsu ++ vsta) ++ basic_machine=i386-pc ++ os=vsta + ;; + vxworks960) + basic_machine=i960-wrs +- os=-vxworks ++ os=vxworks + ;; + vxworks68) + basic_machine=m68k-wrs +- os=-vxworks ++ os=vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs +- os=-vxworks +- ;; +- w65*) +- basic_machine=w65-wdc +- os=-none +- ;; +- w89k-*) +- basic_machine=hppa1.1-winbond +- os=-proelf ++ os=vxworks + ;; + xbox) + basic_machine=i686-pc +- os=-mingw32 +- ;; +- xps | xps100) +- basic_machine=xps100-honeywell +- ;; +- xscale-* | xscalee[bl]-*) +- basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ++ os=mingw32 + ;; + ymp) + basic_machine=ymp-cray +- os=-unicos ++ os=unicos + ;; +- z8k-*-coff) +- basic_machine=z8k-unknown +- os=-sim +- ;; +- z80-*-coff) +- basic_machine=z80-unknown +- os=-sim ++ *) ++ basic_machine=$1 ++ os= + ;; +- none) +- basic_machine=none-none +- os=-none ++ esac + ;; ++esac + ++# Decode 1-component or ad-hoc basic machines ++case $basic_machine in + # Here we handle the default manufacturer of certain CPU types. It is in + # some cases the only manufacturer, in others, it is the most popular. + w89k) +- basic_machine=hppa1.1-winbond ++ cpu=hppa1.1 ++ vendor=winbond + ;; + op50n) +- basic_machine=hppa1.1-oki ++ cpu=hppa1.1 ++ vendor=oki + ;; + op60c) +- basic_machine=hppa1.1-oki ++ cpu=hppa1.1 ++ vendor=oki + ;; +- romp) +- basic_machine=romp-ibm ++ ibm*) ++ cpu=i370 ++ vendor=ibm + ;; +- mmix) +- basic_machine=mmix-knuth ++ orion105) ++ cpu=clipper ++ vendor=highlevel + ;; +- rs6000) +- basic_machine=rs6000-ibm ++ mac | mpw | mac-mpw) ++ cpu=m68k ++ vendor=apple + ;; +- vax) +- basic_machine=vax-dec ++ pmac | pmac-mpw) ++ cpu=powerpc ++ vendor=apple + ;; +- pdp10) +- # there are many clones, so DEC is not a safe bet +- basic_machine=pdp10-unknown ++ ++ # Recognize the various machine names and aliases which stand ++ # for a CPU type and a company and sometimes even an OS. ++ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) ++ cpu=m68000 ++ vendor=att + ;; +- pdp11) +- basic_machine=pdp11-dec ++ 3b*) ++ cpu=we32k ++ vendor=att + ;; +- we32k) +- basic_machine=we32k-att ++ bluegene*) ++ cpu=powerpc ++ vendor=ibm ++ os=cnk + ;; +- sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) +- basic_machine=sh-unknown ++ decsystem10* | dec10*) ++ cpu=pdp10 ++ vendor=dec ++ os=tops10 + ;; +- sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) +- basic_machine=sparc-sun ++ decsystem20* | dec20*) ++ cpu=pdp10 ++ vendor=dec ++ os=tops20 + ;; +- cydra) +- basic_machine=cydra-cydrome ++ delta | 3300 | motorola-3300 | motorola-delta \ ++ | 3300-motorola | delta-motorola) ++ cpu=m68k ++ vendor=motorola + ;; +- orion) +- basic_machine=orion-highlevel ++ dpx2*) ++ cpu=m68k ++ vendor=bull ++ os=sysv3 + ;; +- orion105) +- basic_machine=clipper-highlevel ++ encore | umax | mmax) ++ cpu=ns32k ++ vendor=encore + ;; +- mac | mpw | mac-mpw) +- basic_machine=m68k-apple ++ elxsi) ++ cpu=elxsi ++ vendor=elxsi ++ os=${os:-bsd} + ;; +- pmac | pmac-mpw) +- basic_machine=powerpc-apple ++ fx2800) ++ cpu=i860 ++ vendor=alliant ++ ;; ++ genix) ++ cpu=ns32k ++ vendor=ns ++ ;; ++ h3050r* | hiux*) ++ cpu=hppa1.1 ++ vendor=hitachi ++ os=hiuxwe2 ++ ;; ++ hp3k9[0-9][0-9] | hp9[0-9][0-9]) ++ cpu=hppa1.0 ++ vendor=hp ++ ;; ++ hp9k2[0-9][0-9] | hp9k31[0-9]) ++ cpu=m68000 ++ vendor=hp ++ ;; ++ hp9k3[2-9][0-9]) ++ cpu=m68k ++ vendor=hp ++ ;; ++ hp9k6[0-9][0-9] | hp6[0-9][0-9]) ++ cpu=hppa1.0 ++ vendor=hp ++ ;; ++ hp9k7[0-79][0-9] | hp7[0-79][0-9]) ++ cpu=hppa1.1 ++ vendor=hp ++ ;; ++ hp9k78[0-9] | hp78[0-9]) ++ # FIXME: really hppa2.0-hp ++ cpu=hppa1.1 ++ vendor=hp ++ ;; ++ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) ++ # FIXME: really hppa2.0-hp ++ cpu=hppa1.1 ++ vendor=hp ++ ;; ++ hp9k8[0-9][13679] | hp8[0-9][13679]) ++ cpu=hppa1.1 ++ vendor=hp ++ ;; ++ hp9k8[0-9][0-9] | hp8[0-9][0-9]) ++ cpu=hppa1.0 ++ vendor=hp ++ ;; ++ i*86v32) ++ cpu=`echo "$1" | sed -e 's/86.*/86/'` ++ vendor=pc ++ os=sysv32 ++ ;; ++ i*86v4*) ++ cpu=`echo "$1" | sed -e 's/86.*/86/'` ++ vendor=pc ++ os=sysv4 ++ ;; ++ i*86v) ++ cpu=`echo "$1" | sed -e 's/86.*/86/'` ++ vendor=pc ++ os=sysv ++ ;; ++ i*86sol2) ++ cpu=`echo "$1" | sed -e 's/86.*/86/'` ++ vendor=pc ++ os=solaris2 ++ ;; ++ j90 | j90-cray) ++ cpu=j90 ++ vendor=cray ++ os=${os:-unicos} ++ ;; ++ iris | iris4d) ++ cpu=mips ++ vendor=sgi ++ case $os in ++ irix*) ++ ;; ++ *) ++ os=irix4 ++ ;; ++ esac ++ ;; ++ miniframe) ++ cpu=m68000 ++ vendor=convergent ++ ;; ++ *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) ++ cpu=m68k ++ vendor=atari ++ os=mint ++ ;; ++ news-3600 | risc-news) ++ cpu=mips ++ vendor=sony ++ os=newsos ++ ;; ++ next | m*-next) ++ cpu=m68k ++ vendor=next ++ case $os in ++ openstep*) ++ ;; ++ nextstep*) ++ ;; ++ ns2*) ++ os=nextstep2 ++ ;; ++ *) ++ os=nextstep3 ++ ;; ++ esac ++ ;; ++ np1) ++ cpu=np1 ++ vendor=gould ++ ;; ++ op50n-* | op60c-*) ++ cpu=hppa1.1 ++ vendor=oki ++ os=proelf ++ ;; ++ pa-hitachi) ++ cpu=hppa1.1 ++ vendor=hitachi ++ os=hiuxwe2 ++ ;; ++ pbd) ++ cpu=sparc ++ vendor=tti ++ ;; ++ pbb) ++ cpu=m68k ++ vendor=tti ++ ;; ++ pc532) ++ cpu=ns32k ++ vendor=pc532 ++ ;; ++ pn) ++ cpu=pn ++ vendor=gould ++ ;; ++ power) ++ cpu=power ++ vendor=ibm ++ ;; ++ ps2) ++ cpu=i386 ++ vendor=ibm ++ ;; ++ rm[46]00) ++ cpu=mips ++ vendor=siemens ++ ;; ++ rtpc | rtpc-*) ++ cpu=romp ++ vendor=ibm ++ ;; ++ sde) ++ cpu=mipsisa32 ++ vendor=sde ++ os=${os:-elf} ++ ;; ++ simso-wrs) ++ cpu=sparclite ++ vendor=wrs ++ os=vxworks ++ ;; ++ tower | tower-32) ++ cpu=m68k ++ vendor=ncr ++ ;; ++ vpp*|vx|vx-*) ++ cpu=f301 ++ vendor=fujitsu ++ ;; ++ w65) ++ cpu=w65 ++ vendor=wdc ++ ;; ++ w89k-*) ++ cpu=hppa1.1 ++ vendor=winbond ++ os=proelf ++ ;; ++ none) ++ cpu=none ++ vendor=none ++ ;; ++ leon|leon[3-9]) ++ cpu=sparc ++ vendor=$basic_machine ++ ;; ++ leon-*|leon[3-9]-*) ++ cpu=sparc ++ vendor=`echo "$basic_machine" | sed 's/-.*//'` ++ ;; ++ ++ *-*) ++ # shellcheck disable=SC2162 ++ IFS="-" read cpu vendor <&2 ++ # Recognize the canonical CPU types that are allowed with any ++ # company name. ++ case $cpu in ++ 1750a | 580 \ ++ | a29k \ ++ | aarch64 | aarch64_be \ ++ | abacus \ ++ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ ++ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ ++ | alphapca5[67] | alpha64pca5[67] \ ++ | am33_2.0 \ ++ | amdgcn \ ++ | arc | arceb \ ++ | arm | arm[lb]e | arme[lb] | armv* \ ++ | avr | avr32 \ ++ | asmjs \ ++ | ba \ ++ | be32 | be64 \ ++ | bfin | bpf | bs2000 \ ++ | c[123]* | c30 | [cjt]90 | c4x \ ++ | c8051 | clipper | craynv | csky | cydra \ ++ | d10v | d30v | dlx | dsp16xx \ ++ | e2k | elxsi | epiphany \ ++ | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ ++ | h8300 | h8500 \ ++ | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ ++ | hexagon \ ++ | i370 | i*86 | i860 | i960 | ia16 | ia64 \ ++ | ip2k | iq2000 \ ++ | k1om \ ++ | le32 | le64 \ ++ | lm32 \ ++ | m32c | m32r | m32rle \ ++ | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ ++ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ ++ | m88110 | m88k | maxq | mb | mcore | mep | metag \ ++ | microblaze | microblazeel \ ++ | mips | mipsbe | mipseb | mipsel | mipsle \ ++ | mips16 \ ++ | mips64 | mips64eb | mips64el \ ++ | mips64octeon | mips64octeonel \ ++ | mips64orion | mips64orionel \ ++ | mips64r5900 | mips64r5900el \ ++ | mips64vr | mips64vrel \ ++ | mips64vr4100 | mips64vr4100el \ ++ | mips64vr4300 | mips64vr4300el \ ++ | mips64vr5000 | mips64vr5000el \ ++ | mips64vr5900 | mips64vr5900el \ ++ | mipsisa32 | mipsisa32el \ ++ | mipsisa32r2 | mipsisa32r2el \ ++ | mipsisa32r6 | mipsisa32r6el \ ++ | mipsisa64 | mipsisa64el \ ++ | mipsisa64r2 | mipsisa64r2el \ ++ | mipsisa64r6 | mipsisa64r6el \ ++ | mipsisa64sb1 | mipsisa64sb1el \ ++ | mipsisa64sr71k | mipsisa64sr71kel \ ++ | mipsr5900 | mipsr5900el \ ++ | mipstx39 | mipstx39el \ ++ | mmix \ ++ | mn10200 | mn10300 \ ++ | moxie \ ++ | mt \ ++ | msp430 \ ++ | nds32 | nds32le | nds32be \ ++ | nfp \ ++ | nios | nios2 | nios2eb | nios2el \ ++ | none | np1 | ns16k | ns32k | nvptx \ ++ | open8 \ ++ | or1k* \ ++ | or32 \ ++ | orion \ ++ | picochip \ ++ | pdp10 | pdp11 | pj | pjl | pn | power \ ++ | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ ++ | pru \ ++ | pyramid \ ++ | riscv | riscv32 | riscv64 \ ++ | rl78 | romp | rs6000 | rx \ ++ | score \ ++ | sh | shl \ ++ | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ ++ | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ ++ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ ++ | sparclite \ ++ | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ ++ | spu \ ++ | tahoe \ ++ | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ ++ | tron \ ++ | ubicom32 \ ++ | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ ++ | vax \ ++ | visium \ ++ | w65 \ ++ | wasm32 | wasm64 \ ++ | we32k \ ++ | x86 | x86_64 | xc16x | xgate | xps100 \ ++ | xstormy16 | xtensa* \ ++ | ymp \ ++ | z8k | z80) ++ ;; ++ ++ *) ++ echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 + exit 1 + ;; + esac ++ ;; ++esac + + # Here we canonicalize certain aliases for manufacturers. +-case $basic_machine in +- *-digital*) +- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ++case $vendor in ++ digital*) ++ vendor=dec + ;; +- *-commodore*) +- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ++ commodore*) ++ vendor=cbm + ;; + *) + ;; +@@ -1321,197 +1275,244 @@ + + # Decode manufacturer-specific aliases for certain operating systems. + +-if [ x"$os" != x"" ] ++if [ x$os != x ] + then + case $os in +- # First match some system type aliases +- # that might get confused with valid system types. +- # -solaris* is a basic system type, with this one exception. +- -auroraux) +- os=-auroraux ++ # First match some system type aliases that might get confused ++ # with valid system types. ++ # solaris* is a basic system type, with this one exception. ++ auroraux) ++ os=auroraux + ;; +- -solaris1 | -solaris1.*) +- os=`echo $os | sed -e 's|solaris1|sunos4|'` ++ bluegene*) ++ os=cnk + ;; +- -solaris) +- os=-solaris2 ++ solaris1 | solaris1.*) ++ os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; +- -svr4*) +- os=-sysv4 ++ solaris) ++ os=solaris2 + ;; +- -unixware*) +- os=-sysv4.2uw ++ unixware*) ++ os=sysv4.2uw + ;; +- -gnu/linux*) ++ gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; +- # First accept the basic system types. ++ # es1800 is here to avoid being matched by es* (a different OS) ++ es1800*) ++ os=ose ++ ;; ++ # Some version numbers need modification ++ chorusos*) ++ os=chorusos ++ ;; ++ isc) ++ os=isc2.2 ++ ;; ++ sco6) ++ os=sco5v6 ++ ;; ++ sco5) ++ os=sco3.2v5 ++ ;; ++ sco4) ++ os=sco3.2v4 ++ ;; ++ sco3.2.[4-9]*) ++ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` ++ ;; ++ sco3.2v[4-9]* | sco5v6*) ++ # Don't forget version if it is 3.2v4 or newer. ++ ;; ++ scout) ++ # Don't match below ++ ;; ++ sco*) ++ os=sco3.2v2 ++ ;; ++ psos*) ++ os=psos ++ ;; ++ # Now accept the basic system types. + # The portable systems comes first. +- # Each alternative MUST END IN A *, to match a version number. +- # -sysv* is not here because it comes later, after sysvr4. +- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ +- | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ +- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ +- | -sym* | -kopensolaris* | -plan9* \ +- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ +- | -aos* | -aros* \ +- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ +- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ +- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ +- | -bitrig* | -openbsd* | -solidbsd* \ +- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ +- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ +- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ +- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ +- | -chorusos* | -chorusrdb* | -cegcc* \ +- | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ +- | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ +- | -linux-newlib* | -linux-musl* | -linux-uclibc* \ +- | -uxpv* | -beos* | -mpeix* | -udk* \ +- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ +- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ +- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ +- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ +- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ +- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ +- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) ++ # Each alternative MUST end in a * to match a version number. ++ # sysv* is not here because it comes later, after sysvr4. ++ gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ ++ | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\ ++ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ ++ | sym* | kopensolaris* | plan9* \ ++ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ ++ | aos* | aros* | cloudabi* | sortix* | twizzler* \ ++ | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ ++ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ ++ | knetbsd* | mirbsd* | netbsd* \ ++ | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \ ++ | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \ ++ | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ ++ | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ ++ | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \ ++ | chorusrdb* | cegcc* | glidix* \ ++ | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ ++ | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \ ++ | linux-newlib* | linux-musl* | linux-uclibc* \ ++ | uxpv* | beos* | mpeix* | udk* | moxiebox* \ ++ | interix* | uwin* | mks* | rhapsody* | darwin* \ ++ | openstep* | oskit* | conix* | pw32* | nonstopux* \ ++ | storm-chaos* | tops10* | tenex* | tops20* | its* \ ++ | os2* | vos* | palmos* | uclinux* | nucleus* \ ++ | morphos* | superux* | rtmk* | windiss* \ ++ | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ ++ | skyos* | haiku* | rdos* | toppers* | drops* | es* \ ++ | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ ++ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ ++ | nsk* | powerunix* | genode*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; +- -qnx*) +- case $basic_machine in +- x86-* | i*86-*) ++ qnx*) ++ case $cpu in ++ x86 | i*86) + ;; + *) +- os=-nto$os ++ os=nto-$os + ;; + esac + ;; +- -nto-qnx*) ++ hiux*) ++ os=hiuxwe2 + ;; +- -nto*) +- os=`echo $os | sed -e 's|nto|nto-qnx|'` ++ nto-qnx*) + ;; +- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ +- | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ +- | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ++ nto*) ++ os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; +- -mac*) +- os=`echo $os | sed -e 's|mac|macos|'` ++ sim | xray | os68k* | v88r* \ ++ | windows* | osx | abug | netware* | os9* \ ++ | macos* | mpw* | magic* | mmixware* | mon960* | lnews*) + ;; +- -linux-dietlibc) +- os=-linux-dietlibc ++ linux-dietlibc) ++ os=linux-dietlibc + ;; +- -linux*) ++ linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; +- -sunos5*) +- os=`echo $os | sed -e 's|sunos5|solaris2|'` ++ lynx*178) ++ os=lynxos178 ++ ;; ++ lynx*5) ++ os=lynxos5 + ;; +- -sunos6*) +- os=`echo $os | sed -e 's|sunos6|solaris3|'` ++ lynx*) ++ os=lynxos + ;; +- -opened*) +- os=-openedition ++ mac*) ++ os=`echo "$os" | sed -e 's|mac|macos|'` + ;; +- -os400*) +- os=-os400 ++ opened*) ++ os=openedition + ;; +- -wince*) +- os=-wince ++ os400*) ++ os=os400 + ;; +- -osfrose*) +- os=-osfrose ++ sunos5*) ++ os=`echo "$os" | sed -e 's|sunos5|solaris2|'` + ;; +- -osf*) +- os=-osf ++ sunos6*) ++ os=`echo "$os" | sed -e 's|sunos6|solaris3|'` + ;; +- -utek*) +- os=-bsd ++ wince*) ++ os=wince + ;; +- -dynix*) +- os=-bsd ++ utek*) ++ os=bsd + ;; +- -acis*) +- os=-aos ++ dynix*) ++ os=bsd + ;; +- -atheos*) +- os=-atheos ++ acis*) ++ os=aos + ;; +- -syllable*) +- os=-syllable ++ atheos*) ++ os=atheos + ;; +- -386bsd) +- os=-bsd ++ syllable*) ++ os=syllable + ;; +- -ctix* | -uts*) +- os=-sysv ++ 386bsd) ++ os=bsd + ;; +- -nova*) +- os=-rtmk-nova ++ ctix* | uts*) ++ os=sysv + ;; +- -ns2 ) +- os=-nextstep2 ++ nova*) ++ os=rtmk-nova + ;; +- -nsk*) +- os=-nsk ++ ns2) ++ os=nextstep2 + ;; + # Preserve the version number of sinix5. +- -sinix5.*) ++ sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; +- -sinix*) +- os=-sysv4 ++ sinix*) ++ os=sysv4 ++ ;; ++ tpf*) ++ os=tpf ++ ;; ++ triton*) ++ os=sysv3 + ;; +- -tpf*) +- os=-tpf ++ oss*) ++ os=sysv3 + ;; +- -triton*) +- os=-sysv3 ++ svr4*) ++ os=sysv4 + ;; +- -oss*) +- os=-sysv3 ++ svr3) ++ os=sysv3 + ;; +- -svr4) +- os=-sysv4 ++ sysvr4) ++ os=sysv4 + ;; +- -svr3) +- os=-sysv3 ++ # This must come after sysvr4. ++ sysv*) + ;; +- -sysvr4) +- os=-sysv4 ++ ose*) ++ os=ose + ;; +- # This must come after -sysvr4. +- -sysv*) ++ *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) ++ os=mint + ;; +- -ose*) +- os=-ose ++ zvmoe) ++ os=zvmoe + ;; +- -es1800*) +- os=-ose ++ dicos*) ++ os=dicos + ;; +- -xenix) +- os=-xenix ++ pikeos*) ++ # Until real need of OS specific support for ++ # particular features comes up, bare metal ++ # configurations are quite functional. ++ case $cpu in ++ arm*) ++ os=eabi + ;; +- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) +- os=-mint ++ *) ++ os=elf + ;; +- -aros*) +- os=-aros ++ esac + ;; +- -zvmoe) +- os=-zvmoe ++ nacl*) + ;; +- -dicos*) +- os=-dicos ++ ios) + ;; +- -nacl*) ++ none) + ;; +- -none) ++ *-eabi) + ;; + *) +- # Get rid of the `-' at the beginning of $os. +- os=`echo $os | sed 's/[^-]*-//'` +- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 ++ echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2 + exit 1 + ;; + esac +@@ -1527,261 +1528,265 @@ + # will signal an error saying that MANUFACTURER isn't an operating + # system, and we'll never get to this point. + +-case $basic_machine in ++case $cpu-$vendor in + score-*) +- os=-elf ++ os=elf + ;; + spu-*) +- os=-elf ++ os=elf + ;; + *-acorn) +- os=-riscix1.2 ++ os=riscix1.2 + ;; + arm*-rebel) +- os=-linux ++ os=linux + ;; + arm*-semi) +- os=-aout ++ os=aout + ;; + c4x-* | tic4x-*) +- os=-coff ++ os=coff ++ ;; ++ c8051-*) ++ os=elf ++ ;; ++ clipper-intergraph) ++ os=clix + ;; + hexagon-*) +- os=-elf ++ os=elf + ;; + tic54x-*) +- os=-coff ++ os=coff + ;; + tic55x-*) +- os=-coff ++ os=coff + ;; + tic6x-*) +- os=-coff ++ os=coff + ;; + # This must come before the *-dec entry. + pdp10-*) +- os=-tops20 ++ os=tops20 + ;; + pdp11-*) +- os=-none ++ os=none + ;; + *-dec | vax-*) +- os=-ultrix4.2 ++ os=ultrix4.2 + ;; + m68*-apollo) +- os=-domain ++ os=domain + ;; + i386-sun) +- os=-sunos4.0.2 ++ os=sunos4.0.2 + ;; + m68000-sun) +- os=-sunos3 ++ os=sunos3 + ;; + m68*-cisco) +- os=-aout ++ os=aout + ;; + mep-*) +- os=-elf ++ os=elf + ;; + mips*-cisco) +- os=-elf ++ os=elf + ;; + mips*-*) +- os=-elf +- ;; +- or1k-*) +- os=-elf ++ os=elf + ;; + or32-*) +- os=-coff ++ os=coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. +- os=-sysv3 ++ os=sysv3 + ;; + sparc-* | *-sun) +- os=-sunos4.1.1 ++ os=sunos4.1.1 + ;; +- *-be) +- os=-beos ++ pru-*) ++ os=elf + ;; +- *-haiku) +- os=-haiku ++ *-be) ++ os=beos + ;; + *-ibm) +- os=-aix ++ os=aix + ;; + *-knuth) +- os=-mmixware ++ os=mmixware + ;; + *-wec) +- os=-proelf ++ os=proelf + ;; + *-winbond) +- os=-proelf ++ os=proelf + ;; + *-oki) +- os=-proelf ++ os=proelf + ;; + *-hp) +- os=-hpux ++ os=hpux + ;; + *-hitachi) +- os=-hiux ++ os=hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) +- os=-sysv ++ os=sysv + ;; + *-cbm) +- os=-amigaos ++ os=amigaos + ;; + *-dg) +- os=-dgux ++ os=dgux + ;; + *-dolphin) +- os=-sysv3 ++ os=sysv3 + ;; + m68k-ccur) +- os=-rtu ++ os=rtu + ;; + m88k-omron*) +- os=-luna ++ os=luna + ;; + *-next ) +- os=-nextstep ++ os=nextstep + ;; + *-sequent) +- os=-ptx ++ os=ptx + ;; + *-crds) +- os=-unos ++ os=unos + ;; + *-ns) +- os=-genix ++ os=genix + ;; + i370-*) +- os=-mvs +- ;; +- *-next) +- os=-nextstep3 ++ os=mvs + ;; + *-gould) +- os=-sysv ++ os=sysv + ;; + *-highlevel) +- os=-bsd ++ os=bsd + ;; + *-encore) +- os=-bsd ++ os=bsd + ;; + *-sgi) +- os=-irix ++ os=irix + ;; + *-siemens) +- os=-sysv4 ++ os=sysv4 + ;; + *-masscomp) +- os=-rtu ++ os=rtu + ;; + f30[01]-fujitsu | f700-fujitsu) +- os=-uxpv ++ os=uxpv + ;; + *-rom68k) +- os=-coff ++ os=coff + ;; + *-*bug) +- os=-coff ++ os=coff + ;; + *-apple) +- os=-macos ++ os=macos + ;; + *-atari*) +- os=-mint ++ os=mint ++ ;; ++ *-wrs) ++ os=vxworks + ;; + *) +- os=-none ++ os=none + ;; + esac + fi + + # Here we handle the case where we know the os, and the CPU type, but not the + # manufacturer. We pick the logical manufacturer. +-vendor=unknown +-case $basic_machine in +- *-unknown) ++case $vendor in ++ unknown) + case $os in +- -riscix*) ++ riscix*) + vendor=acorn + ;; +- -sunos*) ++ sunos*) + vendor=sun + ;; +- -cnk*|-aix*) ++ cnk*|-aix*) + vendor=ibm + ;; +- -beos*) ++ beos*) + vendor=be + ;; +- -hpux*) ++ hpux*) + vendor=hp + ;; +- -mpeix*) ++ mpeix*) + vendor=hp + ;; +- -hiux*) ++ hiux*) + vendor=hitachi + ;; +- -unos*) ++ unos*) + vendor=crds + ;; +- -dgux*) ++ dgux*) + vendor=dg + ;; +- -luna*) ++ luna*) + vendor=omron + ;; +- -genix*) ++ genix*) + vendor=ns + ;; +- -mvs* | -opened*) ++ clix*) ++ vendor=intergraph ++ ;; ++ mvs* | opened*) + vendor=ibm + ;; +- -os400*) ++ os400*) + vendor=ibm + ;; +- -ptx*) ++ ptx*) + vendor=sequent + ;; +- -tpf*) ++ tpf*) + vendor=ibm + ;; +- -vxsim* | -vxworks* | -windiss*) ++ vxsim* | vxworks* | windiss*) + vendor=wrs + ;; +- -aux*) ++ aux*) + vendor=apple + ;; +- -hms*) ++ hms*) + vendor=hitachi + ;; +- -mpw* | -macos*) ++ mpw* | macos*) + vendor=apple + ;; +- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) ++ *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) + vendor=atari + ;; +- -vos*) ++ vos*) + vendor=stratus + ;; + esac +- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; + esac + +-echo $basic_machine$os ++echo "$cpu-$vendor-$os" + exit + + # Local variables: +-# eval: (add-hook 'write-file-hooks 'time-stamp) ++# eval: (add-hook 'before-save-hook 'time-stamp) + # time-stamp-start: "timestamp='" + # time-stamp-format: "%:y-%02m-%02d" + # time-stamp-end: "'" diff --git a/recipes/libogg/recipe.toml b/recipes/libogg/recipe.toml new file mode 100644 index 00000000..593947f5 --- /dev/null +++ b/recipes/libogg/recipe.toml @@ -0,0 +1,9 @@ +[source] +tar = "http://downloads.xiph.org/releases/ogg/libogg-1.3.3.tar.xz" +blake3 = "8220c0e4082fa26c07b10bfe31f641d2e33ebe1d1bb0b20221b7016bc8b78a3a" +patches = [ + "redox.patch" +] + +[build] +template = "configure" diff --git a/recipes/libogg/redox.patch b/recipes/libogg/redox.patch new file mode 100644 index 00000000..c07ab514 --- /dev/null +++ b/recipes/libogg/redox.patch @@ -0,0 +1,2833 @@ +--- source/config.sub 2017-11-07 13:38:55.000000000 -0700 ++++ source-new/config.sub 2020-05-20 15:34:35.000000000 -0600 +@@ -1,8 +1,8 @@ + #! /bin/sh + # Configuration validation subroutine script. +-# Copyright 1992-2016 Free Software Foundation, Inc. ++# Copyright 1992-2020 Free Software Foundation, Inc. + +-timestamp='2016-09-05' ++timestamp='2020-05-04' + + # This file is free software; you can redistribute it and/or modify it + # under the terms of the GNU General Public License as published by +@@ -15,7 +15,7 @@ + # General Public License for more details. + # + # You should have received a copy of the GNU General Public License +-# along with this program; if not, see . ++# along with this program; if not, see . + # + # As a special exception to the GNU General Public License, if you + # distribute this file as part of a program that contains a +@@ -33,7 +33,7 @@ + # Otherwise, we print the canonical config type on stdout and succeed. + + # You can get the latest version of this script from: +-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub ++# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + + # This file is supposed to be the same for all GNU packages + # and recognize all the CPU types, system types and aliases +@@ -57,7 +57,7 @@ + + Canonicalize a configuration name. + +-Operation modes: ++Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit +@@ -67,7 +67,7 @@ + version="\ + GNU config.sub ($timestamp) + +-Copyright 1992-2016 Free Software Foundation, Inc. ++Copyright 1992-2020 Free Software Foundation, Inc. + + This is free software; see the source for copying conditions. There is NO + warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." +@@ -89,12 +89,12 @@ + - ) # Use stdin as input. + break ;; + -* ) +- echo "$me: invalid option $1$help" ++ echo "$me: invalid option $1$help" >&2 + exit 1 ;; + + *local*) + # First pass through any local machine types. +- echo $1 ++ echo "$1" + exit ;; + + * ) +@@ -110,1242 +110,1164 @@ + exit 1;; + esac + +-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +-# Here we must recognize all the valid KERNEL-OS combinations. +-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` ++# Split fields of configuration type ++# shellcheck disable=SC2162 ++IFS="-" read field1 field2 field3 field4 <&2 ++ exit 1 ++ ;; ++ *-*-*-*) ++ basic_machine=$field1-$field2 ++ os=$field3-$field4 ++ ;; ++ *-*-*) ++ # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two ++ # parts ++ maybe_os=$field2-$field3 + case $maybe_os in +- nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ +- linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ +- knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ +- kopensolaris*-gnu* | cloudabi*-eabi* | \ +- storm-chaos* | os2-emx* | rtmk-nova*) +- os=-$maybe_os +- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ++ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \ ++ | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \ ++ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ ++ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ ++ | storm-chaos* | os2-emx* | rtmk-nova*) ++ basic_machine=$field1 ++ os=$maybe_os + ;; + android-linux) +- os=-linux-android +- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ++ basic_machine=$field1-unknown ++ os=linux-android + ;; + *) +- basic_machine=`echo $1 | sed 's/-[^-]*$//'` +- if [ $basic_machine != $1 ] +- then os=`echo $1 | sed 's/.*-/-/'` +- else os=; fi ++ basic_machine=$field1-$field2 ++ os=$field3 + ;; + esac +- +-### Let's recognize common machines as not being operating systems so +-### that things like config.sub decstation-3100 work. We also +-### recognize some manufacturers as not being operating systems, so we +-### can provide default operating systems below. +-case $os in +- -sun*os*) +- # Prevent following clause from handling this invalid input. + ;; +- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ +- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ +- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ +- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ +- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ +- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ +- -apple | -axis | -knuth | -cray | -microblaze*) ++ *-*) ++ # A lone config we happen to match not fitting any pattern ++ case $field1-$field2 in ++ decstation-3100) ++ basic_machine=mips-dec + os= +- basic_machine=$1 +- ;; +- -bluegene*) +- os=-cnk + ;; +- -sim | -cisco | -oki | -wec | -winbond) ++ *-*) ++ # Second component is usually, but not always the OS ++ case $field2 in ++ # Prevent following clause from handling this valid os ++ sun*os*) ++ basic_machine=$field1 ++ os=$field2 ++ ;; ++ # Manufacturers ++ dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ ++ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ ++ | unicom* | ibm* | next | hp | isi* | apollo | altos* \ ++ | convergent* | ncr* | news | 32* | 3600* | 3100* \ ++ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ ++ | ultra | tti* | harris | dolphin | highlevel | gould \ ++ | cbm | ns | masscomp | apple | axis | knuth | cray \ ++ | microblaze* | sim | cisco \ ++ | oki | wec | wrs | winbond) ++ basic_machine=$field1-$field2 + os= +- basic_machine=$1 +- ;; +- -scout) +- ;; +- -wrs) +- os=-vxworks +- basic_machine=$1 +- ;; +- -chorusos*) +- os=-chorusos +- basic_machine=$1 + ;; +- -chorusrdb) +- os=-chorusrdb +- basic_machine=$1 +- ;; +- -hiux*) +- os=-hiuxwe2 +- ;; +- -sco6) +- os=-sco5v6 +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -sco5) +- os=-sco3.2v5 +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -sco4) +- os=-sco3.2v4 +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -sco3.2.[4-9]*) +- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -sco3.2v[4-9]*) +- # Don't forget version if it is 3.2v4 or newer. +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -sco5v6*) +- # Don't forget version if it is 3.2v4 or newer. +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -sco*) +- os=-sco3.2v2 +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -udk*) +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -isc) +- os=-isc2.2 +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -clix*) +- basic_machine=clipper-intergraph +- ;; +- -isc*) +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -lynx*178) +- os=-lynxos178 +- ;; +- -lynx*5) +- os=-lynxos5 +- ;; +- -lynx*) +- os=-lynxos +- ;; +- -ptx*) +- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` +- ;; +- -windowsnt*) +- os=`echo $os | sed -e 's/windowsnt/winnt/'` +- ;; +- -psos*) +- os=-psos +- ;; +- -mint | -mint[0-9]*) +- basic_machine=m68k-atari +- os=-mint ++ *) ++ basic_machine=$field1 ++ os=$field2 + ;; + esac +- +-# Decode aliases for certain CPU-COMPANY combinations. +-case $basic_machine in +- # Recognize the basic CPU types without company name. +- # Some are omitted here because they have special meanings below. +- 1750a | 580 \ +- | a29k \ +- | aarch64 | aarch64_be \ +- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ +- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ +- | am33_2.0 \ +- | arc | arceb \ +- | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ +- | avr | avr32 \ +- | ba \ +- | be32 | be64 \ +- | bfin \ +- | c4x | c8051 | clipper \ +- | d10v | d30v | dlx | dsp16xx \ +- | e2k | epiphany \ +- | fido | fr30 | frv | ft32 \ +- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ +- | hexagon \ +- | i370 | i860 | i960 | ia64 \ +- | ip2k | iq2000 \ +- | k1om \ +- | le32 | le64 \ +- | lm32 \ +- | m32c | m32r | m32rle | m68000 | m68k | m88k \ +- | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ +- | mips | mipsbe | mipseb | mipsel | mipsle \ +- | mips16 \ +- | mips64 | mips64el \ +- | mips64octeon | mips64octeonel \ +- | mips64orion | mips64orionel \ +- | mips64r5900 | mips64r5900el \ +- | mips64vr | mips64vrel \ +- | mips64vr4100 | mips64vr4100el \ +- | mips64vr4300 | mips64vr4300el \ +- | mips64vr5000 | mips64vr5000el \ +- | mips64vr5900 | mips64vr5900el \ +- | mipsisa32 | mipsisa32el \ +- | mipsisa32r2 | mipsisa32r2el \ +- | mipsisa32r6 | mipsisa32r6el \ +- | mipsisa64 | mipsisa64el \ +- | mipsisa64r2 | mipsisa64r2el \ +- | mipsisa64r6 | mipsisa64r6el \ +- | mipsisa64sb1 | mipsisa64sb1el \ +- | mipsisa64sr71k | mipsisa64sr71kel \ +- | mipsr5900 | mipsr5900el \ +- | mipstx39 | mipstx39el \ +- | mn10200 | mn10300 \ +- | moxie \ +- | mt \ +- | msp430 \ +- | nds32 | nds32le | nds32be \ +- | nios | nios2 | nios2eb | nios2el \ +- | ns16k | ns32k \ +- | open8 | or1k | or1knd | or32 \ +- | pdp10 | pdp11 | pj | pjl \ +- | powerpc | powerpc64 | powerpc64le | powerpcle \ +- | pyramid \ +- | riscv32 | riscv64 \ +- | rl78 | rx \ +- | score \ +- | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ +- | sh64 | sh64le \ +- | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ +- | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ +- | spu \ +- | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ +- | ubicom32 \ +- | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ +- | visium \ +- | we32k \ +- | x86 | xc16x | xstormy16 | xtensa \ +- | z8k | z80) +- basic_machine=$basic_machine-unknown +- ;; +- c54x) +- basic_machine=tic54x-unknown +- ;; +- c55x) +- basic_machine=tic55x-unknown +- ;; +- c6x) +- basic_machine=tic6x-unknown +- ;; +- leon|leon[3-9]) +- basic_machine=sparc-$basic_machine +- ;; +- m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) +- basic_machine=$basic_machine-unknown +- os=-none +- ;; +- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; +- ms1) +- basic_machine=mt-unknown +- ;; +- +- strongarm | thumb | xscale) +- basic_machine=arm-unknown +- ;; +- xgate) +- basic_machine=$basic_machine-unknown +- os=-none +- ;; +- xscaleeb) +- basic_machine=armeb-unknown +- ;; +- +- xscaleel) +- basic_machine=armel-unknown +- ;; +- +- # We use `pc' rather than `unknown' +- # because (1) that's what they normally are, and +- # (2) the word "unknown" tends to confuse beginning users. +- i*86 | x86_64) +- basic_machine=$basic_machine-pc +- ;; +- # Object if more than one company name word. +- *-*-*) +- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 +- exit 1 +- ;; +- # Recognize the basic CPU types with company name. +- 580-* \ +- | a29k-* \ +- | aarch64-* | aarch64_be-* \ +- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ +- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ +- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ +- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ +- | avr-* | avr32-* \ +- | ba-* \ +- | be32-* | be64-* \ +- | bfin-* | bs2000-* \ +- | c[123]* | c30-* | [cjt]90-* | c4x-* \ +- | c8051-* | clipper-* | craynv-* | cydra-* \ +- | d10v-* | d30v-* | dlx-* \ +- | e2k-* | elxsi-* \ +- | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ +- | h8300-* | h8500-* \ +- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ +- | hexagon-* \ +- | i*86-* | i860-* | i960-* | ia64-* \ +- | ip2k-* | iq2000-* \ +- | k1om-* \ +- | le32-* | le64-* \ +- | lm32-* \ +- | m32c-* | m32r-* | m32rle-* \ +- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ +- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ +- | microblaze-* | microblazeel-* \ +- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ +- | mips16-* \ +- | mips64-* | mips64el-* \ +- | mips64octeon-* | mips64octeonel-* \ +- | mips64orion-* | mips64orionel-* \ +- | mips64r5900-* | mips64r5900el-* \ +- | mips64vr-* | mips64vrel-* \ +- | mips64vr4100-* | mips64vr4100el-* \ +- | mips64vr4300-* | mips64vr4300el-* \ +- | mips64vr5000-* | mips64vr5000el-* \ +- | mips64vr5900-* | mips64vr5900el-* \ +- | mipsisa32-* | mipsisa32el-* \ +- | mipsisa32r2-* | mipsisa32r2el-* \ +- | mipsisa32r6-* | mipsisa32r6el-* \ +- | mipsisa64-* | mipsisa64el-* \ +- | mipsisa64r2-* | mipsisa64r2el-* \ +- | mipsisa64r6-* | mipsisa64r6el-* \ +- | mipsisa64sb1-* | mipsisa64sb1el-* \ +- | mipsisa64sr71k-* | mipsisa64sr71kel-* \ +- | mipsr5900-* | mipsr5900el-* \ +- | mipstx39-* | mipstx39el-* \ +- | mmix-* \ +- | mt-* \ +- | msp430-* \ +- | nds32-* | nds32le-* | nds32be-* \ +- | nios-* | nios2-* | nios2eb-* | nios2el-* \ +- | none-* | np1-* | ns16k-* | ns32k-* \ +- | open8-* \ +- | or1k*-* \ +- | orion-* \ +- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ +- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ +- | pyramid-* \ +- | riscv32-* | riscv64-* \ +- | rl78-* | romp-* | rs6000-* | rx-* \ +- | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ +- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ +- | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ +- | sparclite-* \ +- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ +- | tahoe-* \ +- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ +- | tile*-* \ +- | tron-* \ +- | ubicom32-* \ +- | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ +- | vax-* \ +- | visium-* \ +- | we32k-* \ +- | x86-* | x86_64-* | xc16x-* | xps100-* \ +- | xstormy16-* | xtensa*-* \ +- | ymp-* \ +- | z8k-* | z80-*) +- ;; +- # Recognize the basic CPU types without company name, with glob match. +- xtensa*) +- basic_machine=$basic_machine-unknown ++ esac + ;; +- # Recognize the various machine names and aliases which stand +- # for a CPU type and a company and sometimes even an OS. ++ *) ++ # Convert single-component short-hands not valid as part of ++ # multi-component configurations. ++ case $field1 in + 386bsd) +- basic_machine=i386-unknown +- os=-bsd +- ;; +- 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) +- basic_machine=m68000-att +- ;; +- 3b*) +- basic_machine=we32k-att ++ basic_machine=i386-pc ++ os=bsd + ;; + a29khif) + basic_machine=a29k-amd +- os=-udi +- ;; +- abacus) +- basic_machine=abacus-unknown ++ os=udi + ;; + adobe68k) + basic_machine=m68010-adobe +- os=-scout ++ os=scout + ;; +- alliant | fx80) ++ alliant) + basic_machine=fx80-alliant ++ os= + ;; + altos | altos3068) + basic_machine=m68k-altos ++ os= + ;; + am29k) + basic_machine=a29k-none +- os=-bsd +- ;; +- amd64) +- basic_machine=x86_64-pc +- ;; +- amd64-*) +- basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ++ os=bsd + ;; + amdahl) + basic_machine=580-amdahl +- os=-sysv ++ os=sysv + ;; +- amiga | amiga-*) ++ amiga) + basic_machine=m68k-unknown ++ os= + ;; + amigaos | amigados) + basic_machine=m68k-unknown +- os=-amigaos ++ os=amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown +- os=-sysv4 ++ os=sysv4 + ;; + apollo68) + basic_machine=m68k-apollo +- os=-sysv ++ os=sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo +- os=-bsd ++ os=bsd + ;; + aros) + basic_machine=i386-pc +- os=-aros +- ;; +- asmjs) +- basic_machine=asmjs-unknown ++ os=aros + ;; + aux) + basic_machine=m68k-apple +- os=-aux ++ os=aux + ;; + balance) + basic_machine=ns32k-sequent +- os=-dynix ++ os=dynix + ;; + blackfin) + basic_machine=bfin-unknown +- os=-linux +- ;; +- blackfin-*) +- basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` +- os=-linux +- ;; +- bluegene*) +- basic_machine=powerpc-ibm +- os=-cnk +- ;; +- c54x-*) +- basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- c55x-*) +- basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- c6x-*) +- basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- c90) +- basic_machine=c90-cray +- os=-unicos ++ os=linux + ;; + cegcc) + basic_machine=arm-unknown +- os=-cegcc ++ os=cegcc + ;; + convex-c1) + basic_machine=c1-convex +- os=-bsd ++ os=bsd + ;; + convex-c2) + basic_machine=c2-convex +- os=-bsd ++ os=bsd + ;; + convex-c32) + basic_machine=c32-convex +- os=-bsd ++ os=bsd + ;; + convex-c34) + basic_machine=c34-convex +- os=-bsd ++ os=bsd + ;; + convex-c38) + basic_machine=c38-convex +- os=-bsd ++ os=bsd + ;; +- cray | j90) ++ cray) + basic_machine=j90-cray +- os=-unicos +- ;; +- craynv) +- basic_machine=craynv-cray +- os=-unicosmp +- ;; +- cr16 | cr16-*) +- basic_machine=cr16-unknown +- os=-elf ++ os=unicos + ;; + crds | unos) + basic_machine=m68k-crds ++ os= + ;; +- crisv32 | crisv32-* | etraxfs*) +- basic_machine=crisv32-axis +- ;; +- cris | cris-* | etrax*) +- basic_machine=cris-axis +- ;; +- crx) +- basic_machine=crx-unknown +- os=-elf +- ;; +- da30 | da30-*) ++ da30) + basic_machine=m68k-da30 ++ os= + ;; +- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) ++ decstation | pmax | pmin | dec3100 | decstatn) + basic_machine=mips-dec +- ;; +- decsystem10* | dec10*) +- basic_machine=pdp10-dec +- os=-tops10 +- ;; +- decsystem20* | dec20*) +- basic_machine=pdp10-dec +- os=-tops20 +- ;; +- delta | 3300 | motorola-3300 | motorola-delta \ +- | 3300-motorola | delta-motorola) +- basic_machine=m68k-motorola ++ os= + ;; + delta88) + basic_machine=m88k-motorola +- os=-sysv3 ++ os=sysv3 + ;; + dicos) + basic_machine=i686-pc +- os=-dicos ++ os=dicos + ;; + djgpp) + basic_machine=i586-pc +- os=-msdosdjgpp +- ;; +- dpx20 | dpx20-*) +- basic_machine=rs6000-bull +- os=-bosx +- ;; +- dpx2* | dpx2*-bull) +- basic_machine=m68k-bull +- os=-sysv3 +- ;; +- e500v[12]) +- basic_machine=powerpc-unknown +- os=$os"spe" +- ;; +- e500v[12]-*) +- basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` +- os=$os"spe" ++ os=msdosdjgpp + ;; + ebmon29k) + basic_machine=a29k-amd +- os=-ebmon +- ;; +- elxsi) +- basic_machine=elxsi-elxsi +- os=-bsd +- ;; +- encore | umax | mmax) +- basic_machine=ns32k-encore ++ os=ebmon + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson +- os=-ose +- ;; +- fx2800) +- basic_machine=i860-alliant +- ;; +- genix) +- basic_machine=ns32k-ns ++ os=ose + ;; + gmicro) + basic_machine=tron-gmicro +- os=-sysv ++ os=sysv + ;; + go32) + basic_machine=i386-pc +- os=-go32 +- ;; +- h3050r* | hiux*) +- basic_machine=hppa1.1-hitachi +- os=-hiuxwe2 ++ os=go32 + ;; + h8300hms) + basic_machine=h8300-hitachi +- os=-hms ++ os=hms + ;; + h8300xray) + basic_machine=h8300-hitachi +- os=-xray ++ os=xray + ;; + h8500hms) + basic_machine=h8500-hitachi +- os=-hms ++ os=hms + ;; + harris) + basic_machine=m88k-harris +- os=-sysv3 ++ os=sysv3 + ;; +- hp300-*) ++ hp300 | hp300hpux) + basic_machine=m68k-hp ++ os=hpux + ;; + hp300bsd) + basic_machine=m68k-hp +- os=-bsd +- ;; +- hp300hpux) +- basic_machine=m68k-hp +- os=-hpux +- ;; +- hp3k9[0-9][0-9] | hp9[0-9][0-9]) +- basic_machine=hppa1.0-hp +- ;; +- hp9k2[0-9][0-9] | hp9k31[0-9]) +- basic_machine=m68000-hp +- ;; +- hp9k3[2-9][0-9]) +- basic_machine=m68k-hp +- ;; +- hp9k6[0-9][0-9] | hp6[0-9][0-9]) +- basic_machine=hppa1.0-hp +- ;; +- hp9k7[0-79][0-9] | hp7[0-79][0-9]) +- basic_machine=hppa1.1-hp +- ;; +- hp9k78[0-9] | hp78[0-9]) +- # FIXME: really hppa2.0-hp +- basic_machine=hppa1.1-hp +- ;; +- hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) +- # FIXME: really hppa2.0-hp +- basic_machine=hppa1.1-hp +- ;; +- hp9k8[0-9][13679] | hp8[0-9][13679]) +- basic_machine=hppa1.1-hp +- ;; +- hp9k8[0-9][0-9] | hp8[0-9][0-9]) +- basic_machine=hppa1.0-hp +- ;; +- hppa-next) +- os=-nextstep3 ++ os=bsd + ;; + hppaosf) + basic_machine=hppa1.1-hp +- os=-osf ++ os=osf + ;; + hppro) + basic_machine=hppa1.1-hp +- os=-proelf +- ;; +- i370-ibm* | ibm*) +- basic_machine=i370-ibm +- ;; +- i*86v32) +- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` +- os=-sysv32 +- ;; +- i*86v4*) +- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` +- os=-sysv4 +- ;; +- i*86v) +- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` +- os=-sysv +- ;; +- i*86sol2) +- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` +- os=-solaris2 ++ os=proelf + ;; + i386mach) + basic_machine=i386-mach +- os=-mach +- ;; +- i386-vsta | vsta) +- basic_machine=i386-unknown +- os=-vsta +- ;; +- iris | iris4d) +- basic_machine=mips-sgi +- case $os in +- -irix*) +- ;; +- *) +- os=-irix4 +- ;; +- esac ++ os=mach + ;; + isi68 | isi) + basic_machine=m68k-isi +- os=-sysv +- ;; +- leon-*|leon[3-9]-*) +- basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` ++ os=sysv + ;; + m68knommu) + basic_machine=m68k-unknown +- os=-linux +- ;; +- m68knommu-*) +- basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` +- os=-linux +- ;; +- m88k-omron*) +- basic_machine=m88k-omron ++ os=linux + ;; + magnum | m3230) + basic_machine=mips-mips +- os=-sysv ++ os=sysv + ;; + merlin) + basic_machine=ns32k-utek +- os=-sysv +- ;; +- microblaze*) +- basic_machine=microblaze-xilinx ++ os=sysv + ;; + mingw64) + basic_machine=x86_64-pc +- os=-mingw64 ++ os=mingw64 + ;; + mingw32) + basic_machine=i686-pc +- os=-mingw32 ++ os=mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown +- os=-mingw32ce +- ;; +- miniframe) +- basic_machine=m68000-convergent +- ;; +- *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) +- basic_machine=m68k-atari +- os=-mint +- ;; +- mips3*-*) +- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` +- ;; +- mips3*) +- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ++ os=mingw32ce + ;; + monitor) + basic_machine=m68k-rom68k +- os=-coff ++ os=coff + ;; + morphos) + basic_machine=powerpc-unknown +- os=-morphos ++ os=morphos + ;; + moxiebox) + basic_machine=moxie-unknown +- os=-moxiebox ++ os=moxiebox + ;; + msdos) + basic_machine=i386-pc +- os=-msdos +- ;; +- ms1-*) +- basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ++ os=msdos + ;; + msys) + basic_machine=i686-pc +- os=-msys ++ os=msys + ;; + mvs) + basic_machine=i370-ibm +- os=-mvs ++ os=mvs + ;; + nacl) + basic_machine=le32-unknown +- os=-nacl ++ os=nacl + ;; + ncr3000) + basic_machine=i486-ncr +- os=-sysv4 ++ os=sysv4 + ;; + netbsd386) +- basic_machine=i386-unknown +- os=-netbsd ++ basic_machine=i386-pc ++ os=netbsd + ;; + netwinder) + basic_machine=armv4l-rebel +- os=-linux ++ os=linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony +- os=-newsos ++ os=newsos + ;; + news1000) + basic_machine=m68030-sony +- os=-newsos +- ;; +- news-3600 | risc-news) +- basic_machine=mips-sony +- os=-newsos ++ os=newsos + ;; + necv70) + basic_machine=v70-nec +- os=-sysv +- ;; +- next | m*-next ) +- basic_machine=m68k-next +- case $os in +- -nextstep* ) +- ;; +- -ns2*) +- os=-nextstep2 +- ;; +- *) +- os=-nextstep3 +- ;; +- esac ++ os=sysv + ;; + nh3000) + basic_machine=m68k-harris +- os=-cxux ++ os=cxux + ;; + nh[45]000) + basic_machine=m88k-harris +- os=-cxux ++ os=cxux + ;; + nindy960) + basic_machine=i960-intel +- os=-nindy ++ os=nindy + ;; + mon960) + basic_machine=i960-intel +- os=-mon960 ++ os=mon960 + ;; + nonstopux) + basic_machine=mips-compaq +- os=-nonstopux +- ;; +- np1) +- basic_machine=np1-gould +- ;; +- neo-tandem) +- basic_machine=neo-tandem +- ;; +- nse-tandem) +- basic_machine=nse-tandem +- ;; +- nsr-tandem) +- basic_machine=nsr-tandem +- ;; +- op50n-* | op60c-*) +- basic_machine=hppa1.1-oki +- os=-proelf +- ;; +- openrisc | openrisc-*) +- basic_machine=or32-unknown ++ os=nonstopux + ;; + os400) + basic_machine=powerpc-ibm +- os=-os400 ++ os=os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson +- os=-ose ++ os=ose + ;; + os68k) + basic_machine=m68k-none +- os=-os68k +- ;; +- pa-hitachi) +- basic_machine=hppa1.1-hitachi +- os=-hiuxwe2 ++ os=os68k + ;; + paragon) + basic_machine=i860-intel +- os=-osf ++ os=osf + ;; + parisc) + basic_machine=hppa-unknown +- os=-linux +- ;; +- parisc-*) +- basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` +- os=-linux +- ;; +- pbd) +- basic_machine=sparc-tti +- ;; +- pbb) +- basic_machine=m68k-tti +- ;; +- pc532 | pc532-*) +- basic_machine=ns32k-pc532 +- ;; +- pc98) +- basic_machine=i386-pc +- ;; +- pc98-*) +- basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- pentium | p5 | k5 | k6 | nexgen | viac3) +- basic_machine=i586-pc +- ;; +- pentiumpro | p6 | 6x86 | athlon | athlon_*) +- basic_machine=i686-pc +- ;; +- pentiumii | pentium2 | pentiumiii | pentium3) +- basic_machine=i686-pc +- ;; +- pentium4) +- basic_machine=i786-pc +- ;; +- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) +- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- pentiumpro-* | p6-* | 6x86-* | athlon-*) +- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) +- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- pentium4-*) +- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- pn) +- basic_machine=pn-gould +- ;; +- power) basic_machine=power-ibm +- ;; +- ppc | ppcbe) basic_machine=powerpc-unknown +- ;; +- ppc-* | ppcbe-*) +- basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- ppcle | powerpclittle) +- basic_machine=powerpcle-unknown +- ;; +- ppcle-* | powerpclittle-*) +- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- ppc64) basic_machine=powerpc64-unknown +- ;; +- ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- ppc64le | powerpc64little) +- basic_machine=powerpc64le-unknown +- ;; +- ppc64le-* | powerpc64little-*) +- basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- ps2) +- basic_machine=i386-ibm ++ os=linux + ;; + pw32) + basic_machine=i586-unknown +- os=-pw32 ++ os=pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc +- os=-rdos ++ os=rdos + ;; + rdos32) + basic_machine=i386-pc +- os=-rdos ++ os=rdos + ;; + rom68k) + basic_machine=m68k-rom68k +- os=-coff +- ;; +- rm[46]00) +- basic_machine=mips-siemens +- ;; +- rtpc | rtpc-*) +- basic_machine=romp-ibm +- ;; +- s390 | s390-*) +- basic_machine=s390-ibm +- ;; +- s390x | s390x-*) +- basic_machine=s390x-ibm ++ os=coff + ;; + sa29200) + basic_machine=a29k-amd +- os=-udi +- ;; +- sb1) +- basic_machine=mipsisa64sb1-unknown +- ;; +- sb1el) +- basic_machine=mipsisa64sb1el-unknown +- ;; +- sde) +- basic_machine=mipsisa32-sde +- os=-elf ++ os=udi + ;; + sei) + basic_machine=mips-sei +- os=-seiux ++ os=seiux + ;; + sequent) + basic_machine=i386-sequent +- ;; +- sh) +- basic_machine=sh-hitachi +- os=-hms +- ;; +- sh5el) +- basic_machine=sh5le-unknown +- ;; +- sh64) +- basic_machine=sh64-unknown +- ;; +- sparclite-wrs | simso-wrs) +- basic_machine=sparclite-wrs +- os=-vxworks ++ os= + ;; + sps7) + basic_machine=m68k-bull +- os=-sysv2 +- ;; +- spur) +- basic_machine=spur-unknown ++ os=sysv2 + ;; + st2000) + basic_machine=m68k-tandem ++ os= + ;; + stratus) + basic_machine=i860-stratus +- os=-sysv4 +- ;; +- strongarm-* | thumb-*) +- basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ++ os=sysv4 + ;; + sun2) + basic_machine=m68000-sun ++ os= + ;; + sun2os3) + basic_machine=m68000-sun +- os=-sunos3 ++ os=sunos3 + ;; + sun2os4) + basic_machine=m68000-sun +- os=-sunos4 ++ os=sunos4 ++ ;; ++ sun3) ++ basic_machine=m68k-sun ++ os= + ;; + sun3os3) + basic_machine=m68k-sun +- os=-sunos3 ++ os=sunos3 + ;; + sun3os4) + basic_machine=m68k-sun +- os=-sunos4 ++ os=sunos4 ++ ;; ++ sun4) ++ basic_machine=sparc-sun ++ os= + ;; + sun4os3) + basic_machine=sparc-sun +- os=-sunos3 ++ os=sunos3 + ;; + sun4os4) + basic_machine=sparc-sun +- os=-sunos4 ++ os=sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun +- os=-solaris2 +- ;; +- sun3 | sun3-*) +- basic_machine=m68k-sun +- ;; +- sun4) +- basic_machine=sparc-sun ++ os=solaris2 + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun ++ os= + ;; + sv1) + basic_machine=sv1-cray +- os=-unicos ++ os=unicos + ;; + symmetry) + basic_machine=i386-sequent +- os=-dynix ++ os=dynix + ;; + t3e) + basic_machine=alphaev5-cray +- os=-unicos ++ os=unicos + ;; + t90) + basic_machine=t90-cray +- os=-unicos +- ;; +- tile*) +- basic_machine=$basic_machine-unknown +- os=-linux-gnu +- ;; +- tx39) +- basic_machine=mipstx39-unknown +- ;; +- tx39el) +- basic_machine=mipstx39el-unknown ++ os=unicos + ;; + toad1) + basic_machine=pdp10-xkl +- os=-tops20 +- ;; +- tower | tower-32) +- basic_machine=m68k-ncr ++ os=tops20 + ;; + tpf) + basic_machine=s390x-ibm +- os=-tpf ++ os=tpf + ;; + udi29k) + basic_machine=a29k-amd +- os=-udi ++ os=udi + ;; + ultra3) + basic_machine=a29k-nyu +- os=-sym1 ++ os=sym1 + ;; + v810 | necv810) + basic_machine=v810-nec +- os=-none ++ os=none + ;; + vaxv) + basic_machine=vax-dec +- os=-sysv ++ os=sysv + ;; + vms) + basic_machine=vax-dec +- os=-vms ++ os=vms + ;; +- vpp*|vx|vx-*) +- basic_machine=f301-fujitsu ++ vsta) ++ basic_machine=i386-pc ++ os=vsta + ;; + vxworks960) + basic_machine=i960-wrs +- os=-vxworks ++ os=vxworks + ;; + vxworks68) + basic_machine=m68k-wrs +- os=-vxworks ++ os=vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs +- os=-vxworks +- ;; +- w65*) +- basic_machine=w65-wdc +- os=-none +- ;; +- w89k-*) +- basic_machine=hppa1.1-winbond +- os=-proelf ++ os=vxworks + ;; + xbox) + basic_machine=i686-pc +- os=-mingw32 +- ;; +- xps | xps100) +- basic_machine=xps100-honeywell +- ;; +- xscale-* | xscalee[bl]-*) +- basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ++ os=mingw32 + ;; + ymp) + basic_machine=ymp-cray +- os=-unicos ++ os=unicos + ;; +- z8k-*-coff) +- basic_machine=z8k-unknown +- os=-sim +- ;; +- z80-*-coff) +- basic_machine=z80-unknown +- os=-sim ++ *) ++ basic_machine=$1 ++ os= + ;; +- none) +- basic_machine=none-none +- os=-none ++ esac + ;; ++esac + ++# Decode 1-component or ad-hoc basic machines ++case $basic_machine in + # Here we handle the default manufacturer of certain CPU types. It is in + # some cases the only manufacturer, in others, it is the most popular. + w89k) +- basic_machine=hppa1.1-winbond ++ cpu=hppa1.1 ++ vendor=winbond + ;; + op50n) +- basic_machine=hppa1.1-oki ++ cpu=hppa1.1 ++ vendor=oki + ;; + op60c) +- basic_machine=hppa1.1-oki ++ cpu=hppa1.1 ++ vendor=oki + ;; +- romp) +- basic_machine=romp-ibm ++ ibm*) ++ cpu=i370 ++ vendor=ibm + ;; +- mmix) +- basic_machine=mmix-knuth ++ orion105) ++ cpu=clipper ++ vendor=highlevel + ;; +- rs6000) +- basic_machine=rs6000-ibm ++ mac | mpw | mac-mpw) ++ cpu=m68k ++ vendor=apple + ;; +- vax) +- basic_machine=vax-dec ++ pmac | pmac-mpw) ++ cpu=powerpc ++ vendor=apple + ;; +- pdp10) +- # there are many clones, so DEC is not a safe bet +- basic_machine=pdp10-unknown ++ ++ # Recognize the various machine names and aliases which stand ++ # for a CPU type and a company and sometimes even an OS. ++ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) ++ cpu=m68000 ++ vendor=att + ;; +- pdp11) +- basic_machine=pdp11-dec ++ 3b*) ++ cpu=we32k ++ vendor=att + ;; +- we32k) +- basic_machine=we32k-att ++ bluegene*) ++ cpu=powerpc ++ vendor=ibm ++ os=cnk + ;; +- sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) +- basic_machine=sh-unknown ++ decsystem10* | dec10*) ++ cpu=pdp10 ++ vendor=dec ++ os=tops10 + ;; +- sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) +- basic_machine=sparc-sun ++ decsystem20* | dec20*) ++ cpu=pdp10 ++ vendor=dec ++ os=tops20 + ;; +- cydra) +- basic_machine=cydra-cydrome ++ delta | 3300 | motorola-3300 | motorola-delta \ ++ | 3300-motorola | delta-motorola) ++ cpu=m68k ++ vendor=motorola + ;; +- orion) +- basic_machine=orion-highlevel ++ dpx2*) ++ cpu=m68k ++ vendor=bull ++ os=sysv3 + ;; +- orion105) +- basic_machine=clipper-highlevel ++ encore | umax | mmax) ++ cpu=ns32k ++ vendor=encore + ;; +- mac | mpw | mac-mpw) +- basic_machine=m68k-apple ++ elxsi) ++ cpu=elxsi ++ vendor=elxsi ++ os=${os:-bsd} + ;; +- pmac | pmac-mpw) +- basic_machine=powerpc-apple ++ fx2800) ++ cpu=i860 ++ vendor=alliant ++ ;; ++ genix) ++ cpu=ns32k ++ vendor=ns ++ ;; ++ h3050r* | hiux*) ++ cpu=hppa1.1 ++ vendor=hitachi ++ os=hiuxwe2 ++ ;; ++ hp3k9[0-9][0-9] | hp9[0-9][0-9]) ++ cpu=hppa1.0 ++ vendor=hp ++ ;; ++ hp9k2[0-9][0-9] | hp9k31[0-9]) ++ cpu=m68000 ++ vendor=hp ++ ;; ++ hp9k3[2-9][0-9]) ++ cpu=m68k ++ vendor=hp ++ ;; ++ hp9k6[0-9][0-9] | hp6[0-9][0-9]) ++ cpu=hppa1.0 ++ vendor=hp ++ ;; ++ hp9k7[0-79][0-9] | hp7[0-79][0-9]) ++ cpu=hppa1.1 ++ vendor=hp ++ ;; ++ hp9k78[0-9] | hp78[0-9]) ++ # FIXME: really hppa2.0-hp ++ cpu=hppa1.1 ++ vendor=hp ++ ;; ++ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) ++ # FIXME: really hppa2.0-hp ++ cpu=hppa1.1 ++ vendor=hp ++ ;; ++ hp9k8[0-9][13679] | hp8[0-9][13679]) ++ cpu=hppa1.1 ++ vendor=hp ++ ;; ++ hp9k8[0-9][0-9] | hp8[0-9][0-9]) ++ cpu=hppa1.0 ++ vendor=hp ++ ;; ++ i*86v32) ++ cpu=`echo "$1" | sed -e 's/86.*/86/'` ++ vendor=pc ++ os=sysv32 ++ ;; ++ i*86v4*) ++ cpu=`echo "$1" | sed -e 's/86.*/86/'` ++ vendor=pc ++ os=sysv4 ++ ;; ++ i*86v) ++ cpu=`echo "$1" | sed -e 's/86.*/86/'` ++ vendor=pc ++ os=sysv ++ ;; ++ i*86sol2) ++ cpu=`echo "$1" | sed -e 's/86.*/86/'` ++ vendor=pc ++ os=solaris2 ++ ;; ++ j90 | j90-cray) ++ cpu=j90 ++ vendor=cray ++ os=${os:-unicos} ++ ;; ++ iris | iris4d) ++ cpu=mips ++ vendor=sgi ++ case $os in ++ irix*) ++ ;; ++ *) ++ os=irix4 ++ ;; ++ esac ++ ;; ++ miniframe) ++ cpu=m68000 ++ vendor=convergent ++ ;; ++ *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) ++ cpu=m68k ++ vendor=atari ++ os=mint ++ ;; ++ news-3600 | risc-news) ++ cpu=mips ++ vendor=sony ++ os=newsos ++ ;; ++ next | m*-next) ++ cpu=m68k ++ vendor=next ++ case $os in ++ openstep*) ++ ;; ++ nextstep*) + ;; +- *-unknown) +- # Make sure to match an already-canonicalized machine name. ++ ns2*) ++ os=nextstep2 + ;; + *) +- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 ++ os=nextstep3 ++ ;; ++ esac ++ ;; ++ np1) ++ cpu=np1 ++ vendor=gould ++ ;; ++ op50n-* | op60c-*) ++ cpu=hppa1.1 ++ vendor=oki ++ os=proelf ++ ;; ++ pa-hitachi) ++ cpu=hppa1.1 ++ vendor=hitachi ++ os=hiuxwe2 ++ ;; ++ pbd) ++ cpu=sparc ++ vendor=tti ++ ;; ++ pbb) ++ cpu=m68k ++ vendor=tti ++ ;; ++ pc532) ++ cpu=ns32k ++ vendor=pc532 ++ ;; ++ pn) ++ cpu=pn ++ vendor=gould ++ ;; ++ power) ++ cpu=power ++ vendor=ibm ++ ;; ++ ps2) ++ cpu=i386 ++ vendor=ibm ++ ;; ++ rm[46]00) ++ cpu=mips ++ vendor=siemens ++ ;; ++ rtpc | rtpc-*) ++ cpu=romp ++ vendor=ibm ++ ;; ++ sde) ++ cpu=mipsisa32 ++ vendor=sde ++ os=${os:-elf} ++ ;; ++ simso-wrs) ++ cpu=sparclite ++ vendor=wrs ++ os=vxworks ++ ;; ++ tower | tower-32) ++ cpu=m68k ++ vendor=ncr ++ ;; ++ vpp*|vx|vx-*) ++ cpu=f301 ++ vendor=fujitsu ++ ;; ++ w65) ++ cpu=w65 ++ vendor=wdc ++ ;; ++ w89k-*) ++ cpu=hppa1.1 ++ vendor=winbond ++ os=proelf ++ ;; ++ none) ++ cpu=none ++ vendor=none ++ ;; ++ leon|leon[3-9]) ++ cpu=sparc ++ vendor=$basic_machine ++ ;; ++ leon-*|leon[3-9]-*) ++ cpu=sparc ++ vendor=`echo "$basic_machine" | sed 's/-.*//'` ++ ;; ++ ++ *-*) ++ # shellcheck disable=SC2162 ++ IFS="-" read cpu vendor <&2 + exit 1 + ;; + esac ++ ;; ++esac + + # Here we canonicalize certain aliases for manufacturers. +-case $basic_machine in +- *-digital*) +- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ++case $vendor in ++ digital*) ++ vendor=dec + ;; +- *-commodore*) +- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ++ commodore*) ++ vendor=cbm + ;; + *) + ;; +@@ -1353,200 +1275,244 @@ + + # Decode manufacturer-specific aliases for certain operating systems. + +-if [ x"$os" != x"" ] ++if [ x$os != x ] + then + case $os in +- # First match some system type aliases +- # that might get confused with valid system types. +- # -solaris* is a basic system type, with this one exception. +- -auroraux) +- os=-auroraux ++ # First match some system type aliases that might get confused ++ # with valid system types. ++ # solaris* is a basic system type, with this one exception. ++ auroraux) ++ os=auroraux + ;; +- -solaris1 | -solaris1.*) +- os=`echo $os | sed -e 's|solaris1|sunos4|'` ++ bluegene*) ++ os=cnk + ;; +- -solaris) +- os=-solaris2 ++ solaris1 | solaris1.*) ++ os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; +- -svr4*) +- os=-sysv4 ++ solaris) ++ os=solaris2 + ;; +- -unixware*) +- os=-sysv4.2uw ++ unixware*) ++ os=sysv4.2uw + ;; +- -gnu/linux*) ++ gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; +- # First accept the basic system types. ++ # es1800 is here to avoid being matched by es* (a different OS) ++ es1800*) ++ os=ose ++ ;; ++ # Some version numbers need modification ++ chorusos*) ++ os=chorusos ++ ;; ++ isc) ++ os=isc2.2 ++ ;; ++ sco6) ++ os=sco5v6 ++ ;; ++ sco5) ++ os=sco3.2v5 ++ ;; ++ sco4) ++ os=sco3.2v4 ++ ;; ++ sco3.2.[4-9]*) ++ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` ++ ;; ++ sco3.2v[4-9]* | sco5v6*) ++ # Don't forget version if it is 3.2v4 or newer. ++ ;; ++ scout) ++ # Don't match below ++ ;; ++ sco*) ++ os=sco3.2v2 ++ ;; ++ psos*) ++ os=psos ++ ;; ++ # Now accept the basic system types. + # The portable systems comes first. +- # Each alternative MUST END IN A *, to match a version number. +- # -sysv* is not here because it comes later, after sysvr4. +- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ +- | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ +- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ +- | -sym* | -kopensolaris* | -plan9* \ +- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ +- | -aos* | -aros* | -cloudabi* | -sortix* \ +- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ +- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ +- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ +- | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ +- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ +- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ +- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ +- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ +- | -chorusos* | -chorusrdb* | -cegcc* \ +- | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ +- | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ +- | -linux-newlib* | -linux-musl* | -linux-uclibc* \ +- | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ +- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ +- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ +- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ +- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ +- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ +- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ +- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ +- | -onefs* | -tirtos* | -phoenix*) ++ # Each alternative MUST end in a * to match a version number. ++ # sysv* is not here because it comes later, after sysvr4. ++ gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ ++ | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\ ++ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ ++ | sym* | kopensolaris* | plan9* \ ++ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ ++ | aos* | aros* | cloudabi* | sortix* | twizzler* \ ++ | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ ++ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ ++ | knetbsd* | mirbsd* | netbsd* \ ++ | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \ ++ | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \ ++ | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ ++ | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ ++ | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \ ++ | chorusrdb* | cegcc* | glidix* \ ++ | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ ++ | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \ ++ | linux-newlib* | linux-musl* | linux-uclibc* \ ++ | uxpv* | beos* | mpeix* | udk* | moxiebox* \ ++ | interix* | uwin* | mks* | rhapsody* | darwin* \ ++ | openstep* | oskit* | conix* | pw32* | nonstopux* \ ++ | storm-chaos* | tops10* | tenex* | tops20* | its* \ ++ | os2* | vos* | palmos* | uclinux* | nucleus* \ ++ | morphos* | superux* | rtmk* | windiss* \ ++ | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ ++ | skyos* | haiku* | rdos* | toppers* | drops* | es* \ ++ | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ ++ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ ++ | nsk* | powerunix* | genode*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; +- -qnx*) +- case $basic_machine in +- x86-* | i*86-*) ++ qnx*) ++ case $cpu in ++ x86 | i*86) + ;; + *) +- os=-nto$os ++ os=nto-$os + ;; + esac + ;; +- -nto-qnx*) ++ hiux*) ++ os=hiuxwe2 + ;; +- -nto*) +- os=`echo $os | sed -e 's|nto|nto-qnx|'` ++ nto-qnx*) + ;; +- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ +- | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ +- | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ++ nto*) ++ os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; +- -mac*) +- os=`echo $os | sed -e 's|mac|macos|'` ++ sim | xray | os68k* | v88r* \ ++ | windows* | osx | abug | netware* | os9* \ ++ | macos* | mpw* | magic* | mmixware* | mon960* | lnews*) + ;; +- -linux-dietlibc) +- os=-linux-dietlibc ++ linux-dietlibc) ++ os=linux-dietlibc + ;; +- -linux*) ++ linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; +- -sunos5*) +- os=`echo $os | sed -e 's|sunos5|solaris2|'` ++ lynx*178) ++ os=lynxos178 + ;; +- -sunos6*) +- os=`echo $os | sed -e 's|sunos6|solaris3|'` ++ lynx*5) ++ os=lynxos5 + ;; +- -opened*) +- os=-openedition ++ lynx*) ++ os=lynxos + ;; +- -os400*) +- os=-os400 ++ mac*) ++ os=`echo "$os" | sed -e 's|mac|macos|'` + ;; +- -wince*) +- os=-wince ++ opened*) ++ os=openedition + ;; +- -osfrose*) +- os=-osfrose ++ os400*) ++ os=os400 + ;; +- -osf*) +- os=-osf ++ sunos5*) ++ os=`echo "$os" | sed -e 's|sunos5|solaris2|'` + ;; +- -utek*) +- os=-bsd ++ sunos6*) ++ os=`echo "$os" | sed -e 's|sunos6|solaris3|'` + ;; +- -dynix*) +- os=-bsd ++ wince*) ++ os=wince + ;; +- -acis*) +- os=-aos ++ utek*) ++ os=bsd + ;; +- -atheos*) +- os=-atheos ++ dynix*) ++ os=bsd + ;; +- -syllable*) +- os=-syllable ++ acis*) ++ os=aos + ;; +- -386bsd) +- os=-bsd ++ atheos*) ++ os=atheos + ;; +- -ctix* | -uts*) +- os=-sysv ++ syllable*) ++ os=syllable + ;; +- -nova*) +- os=-rtmk-nova ++ 386bsd) ++ os=bsd + ;; +- -ns2 ) +- os=-nextstep2 ++ ctix* | uts*) ++ os=sysv + ;; +- -nsk*) +- os=-nsk ++ nova*) ++ os=rtmk-nova ++ ;; ++ ns2) ++ os=nextstep2 + ;; + # Preserve the version number of sinix5. +- -sinix5.*) ++ sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; +- -sinix*) +- os=-sysv4 ++ sinix*) ++ os=sysv4 + ;; +- -tpf*) +- os=-tpf ++ tpf*) ++ os=tpf + ;; +- -triton*) +- os=-sysv3 ++ triton*) ++ os=sysv3 + ;; +- -oss*) +- os=-sysv3 ++ oss*) ++ os=sysv3 + ;; +- -svr4) +- os=-sysv4 ++ svr4*) ++ os=sysv4 + ;; +- -svr3) +- os=-sysv3 ++ svr3) ++ os=sysv3 + ;; +- -sysvr4) +- os=-sysv4 ++ sysvr4) ++ os=sysv4 + ;; +- # This must come after -sysvr4. +- -sysv*) ++ # This must come after sysvr4. ++ sysv*) + ;; +- -ose*) +- os=-ose ++ ose*) ++ os=ose + ;; +- -es1800*) +- os=-ose ++ *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) ++ os=mint + ;; +- -xenix) +- os=-xenix ++ zvmoe) ++ os=zvmoe + ;; +- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) +- os=-mint ++ dicos*) ++ os=dicos + ;; +- -aros*) +- os=-aros ++ pikeos*) ++ # Until real need of OS specific support for ++ # particular features comes up, bare metal ++ # configurations are quite functional. ++ case $cpu in ++ arm*) ++ os=eabi + ;; +- -zvmoe) +- os=-zvmoe ++ *) ++ os=elf + ;; +- -dicos*) +- os=-dicos ++ esac + ;; +- -nacl*) ++ nacl*) + ;; +- -ios) ++ ios) ++ ;; ++ none) + ;; +- -none) ++ *-eabi) + ;; + *) +- # Get rid of the `-' at the beginning of $os. +- os=`echo $os | sed 's/[^-]*-//'` +- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 ++ echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2 + exit 1 + ;; + esac +@@ -1562,261 +1528,265 @@ + # will signal an error saying that MANUFACTURER isn't an operating + # system, and we'll never get to this point. + +-case $basic_machine in ++case $cpu-$vendor in + score-*) +- os=-elf ++ os=elf + ;; + spu-*) +- os=-elf ++ os=elf + ;; + *-acorn) +- os=-riscix1.2 ++ os=riscix1.2 + ;; + arm*-rebel) +- os=-linux ++ os=linux + ;; + arm*-semi) +- os=-aout ++ os=aout + ;; + c4x-* | tic4x-*) +- os=-coff ++ os=coff + ;; + c8051-*) +- os=-elf ++ os=elf ++ ;; ++ clipper-intergraph) ++ os=clix + ;; + hexagon-*) +- os=-elf ++ os=elf + ;; + tic54x-*) +- os=-coff ++ os=coff + ;; + tic55x-*) +- os=-coff ++ os=coff + ;; + tic6x-*) +- os=-coff ++ os=coff + ;; + # This must come before the *-dec entry. + pdp10-*) +- os=-tops20 ++ os=tops20 + ;; + pdp11-*) +- os=-none ++ os=none + ;; + *-dec | vax-*) +- os=-ultrix4.2 ++ os=ultrix4.2 + ;; + m68*-apollo) +- os=-domain ++ os=domain + ;; + i386-sun) +- os=-sunos4.0.2 ++ os=sunos4.0.2 + ;; + m68000-sun) +- os=-sunos3 ++ os=sunos3 + ;; + m68*-cisco) +- os=-aout ++ os=aout + ;; + mep-*) +- os=-elf ++ os=elf + ;; + mips*-cisco) +- os=-elf ++ os=elf + ;; + mips*-*) +- os=-elf ++ os=elf + ;; + or32-*) +- os=-coff ++ os=coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. +- os=-sysv3 ++ os=sysv3 + ;; + sparc-* | *-sun) +- os=-sunos4.1.1 ++ os=sunos4.1.1 + ;; +- *-be) +- os=-beos ++ pru-*) ++ os=elf + ;; +- *-haiku) +- os=-haiku ++ *-be) ++ os=beos + ;; + *-ibm) +- os=-aix ++ os=aix + ;; + *-knuth) +- os=-mmixware ++ os=mmixware + ;; + *-wec) +- os=-proelf ++ os=proelf + ;; + *-winbond) +- os=-proelf ++ os=proelf + ;; + *-oki) +- os=-proelf ++ os=proelf + ;; + *-hp) +- os=-hpux ++ os=hpux + ;; + *-hitachi) +- os=-hiux ++ os=hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) +- os=-sysv ++ os=sysv + ;; + *-cbm) +- os=-amigaos ++ os=amigaos + ;; + *-dg) +- os=-dgux ++ os=dgux + ;; + *-dolphin) +- os=-sysv3 ++ os=sysv3 + ;; + m68k-ccur) +- os=-rtu ++ os=rtu + ;; + m88k-omron*) +- os=-luna ++ os=luna + ;; + *-next ) +- os=-nextstep ++ os=nextstep + ;; + *-sequent) +- os=-ptx ++ os=ptx + ;; + *-crds) +- os=-unos ++ os=unos + ;; + *-ns) +- os=-genix ++ os=genix + ;; + i370-*) +- os=-mvs +- ;; +- *-next) +- os=-nextstep3 ++ os=mvs + ;; + *-gould) +- os=-sysv ++ os=sysv + ;; + *-highlevel) +- os=-bsd ++ os=bsd + ;; + *-encore) +- os=-bsd ++ os=bsd + ;; + *-sgi) +- os=-irix ++ os=irix + ;; + *-siemens) +- os=-sysv4 ++ os=sysv4 + ;; + *-masscomp) +- os=-rtu ++ os=rtu + ;; + f30[01]-fujitsu | f700-fujitsu) +- os=-uxpv ++ os=uxpv + ;; + *-rom68k) +- os=-coff ++ os=coff + ;; + *-*bug) +- os=-coff ++ os=coff + ;; + *-apple) +- os=-macos ++ os=macos + ;; + *-atari*) +- os=-mint ++ os=mint ++ ;; ++ *-wrs) ++ os=vxworks + ;; + *) +- os=-none ++ os=none + ;; + esac + fi + + # Here we handle the case where we know the os, and the CPU type, but not the + # manufacturer. We pick the logical manufacturer. +-vendor=unknown +-case $basic_machine in +- *-unknown) ++case $vendor in ++ unknown) + case $os in +- -riscix*) ++ riscix*) + vendor=acorn + ;; +- -sunos*) ++ sunos*) + vendor=sun + ;; +- -cnk*|-aix*) ++ cnk*|-aix*) + vendor=ibm + ;; +- -beos*) ++ beos*) + vendor=be + ;; +- -hpux*) ++ hpux*) + vendor=hp + ;; +- -mpeix*) ++ mpeix*) + vendor=hp + ;; +- -hiux*) ++ hiux*) + vendor=hitachi + ;; +- -unos*) ++ unos*) + vendor=crds + ;; +- -dgux*) ++ dgux*) + vendor=dg + ;; +- -luna*) ++ luna*) + vendor=omron + ;; +- -genix*) ++ genix*) + vendor=ns + ;; +- -mvs* | -opened*) ++ clix*) ++ vendor=intergraph ++ ;; ++ mvs* | opened*) + vendor=ibm + ;; +- -os400*) ++ os400*) + vendor=ibm + ;; +- -ptx*) ++ ptx*) + vendor=sequent + ;; +- -tpf*) ++ tpf*) + vendor=ibm + ;; +- -vxsim* | -vxworks* | -windiss*) ++ vxsim* | vxworks* | windiss*) + vendor=wrs + ;; +- -aux*) ++ aux*) + vendor=apple + ;; +- -hms*) ++ hms*) + vendor=hitachi + ;; +- -mpw* | -macos*) ++ mpw* | macos*) + vendor=apple + ;; +- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) ++ *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) + vendor=atari + ;; +- -vos*) ++ vos*) + vendor=stratus + ;; + esac +- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; + esac + +-echo $basic_machine$os ++echo "$cpu-$vendor-$os" + exit + + # Local variables: +-# eval: (add-hook 'write-file-hooks 'time-stamp) ++# eval: (add-hook 'before-save-hook 'time-stamp) + # time-stamp-start: "timestamp='" + # time-stamp-format: "%:y-%02m-%02d" + # time-stamp-end: "'" diff --git a/recipes/pcre/recipe.toml b/recipes/pcre/recipe.toml new file mode 100644 index 00000000..ebde0bd0 --- /dev/null +++ b/recipes/pcre/recipe.toml @@ -0,0 +1,8 @@ +[source] +tar = "https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.bz2" +patches = [ + "redox.patch" +] + +[build] +template = "configure" diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 06edae0c..e0ab5a4f 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -58,6 +58,48 @@ fn run_command(mut command: process::Command) -> Result<(), String> { Ok(()) } +fn run_command_stdin(mut command: process::Command, stdin_data: &[u8]) -> Result<(), String> { + command.stdin(Stdio::piped()); + + let mut child = command.spawn().map_err(|err| format!( + "failed to spawn {:?}: {}\n{:#?}", + command, + err, + err + ))?; + + if let Some(ref mut stdin) = child.stdin { + stdin.write_all(stdin_data).map_err(|err| format!( + "failed to write stdin of {:?}: {}\n{:#?}", + command, + err, + err + ))?; + } else { + return Err(format!( + "failed to find stdin of {:?}", + command + )); + } + + let status = child.wait().map_err(|err| format!( + "failed to run {:?}: {}\n{:#?}", + command, + err, + err + ))?; + + if ! status.success() { + return Err(format!( + "failed to run {:?}: exited with status {}", + command, + status + )); + } + + Ok(()) +} + fn fetch(recipe_dir: &Path, source: &SourceRecipe) -> Result { let source_dir = recipe_dir.join("source"); match source { @@ -73,7 +115,7 @@ fn fetch(recipe_dir: &Path, source: &SourceRecipe) -> Result { if let Some(branch) = branch { command.arg("--branch").arg(&branch); } - command.arg(&source_dir); + command.arg(&source_dir_tmp); run_command(command)?; // Move source.tmp to source atomically @@ -221,43 +263,7 @@ fn fetch(recipe_dir: &Path, source: &SourceRecipe) -> Result { let mut command = Command::new("patch"); command.arg("--directory").arg(&source_dir_tmp); command.arg("--strip=1"); - command.stdin(Stdio::piped()); - - let mut child = command.spawn().map_err(|err| format!( - "failed to spawn {:?}: {}\n{:#?}", - command, - err, - err - ))?; - - if let Some(ref mut stdin) = child.stdin { - stdin.write_all(patch.as_bytes()).map_err(|err| format!( - "failed to write stdin of {:?}: {}\n{:#?}", - command, - err, - err - ))?; - } else { - return Err(format!( - "failed to find stdin of {:?}", - command - )); - } - - let status = child.wait().map_err(|err| format!( - "failed to run {:?}: {}\n{:#?}", - command, - err, - err - ))?; - - if ! status.success() { - return Err(format!( - "failed to run {:?}: exited with status {}", - command, - status - )); - } + run_command_stdin(command, patch.as_bytes())?; } // Move source.tmp to source atomically @@ -269,6 +275,83 @@ fn fetch(recipe_dir: &Path, source: &SourceRecipe) -> Result { Ok(source_dir) } +fn build(recipe_dir: &Path, source_dir: &Path, build: &BuildRecipe) -> Result { + let stage_dir = recipe_dir.join("stage"); + if ! stage_dir.is_dir() { + // Create stage.tmp + let stage_dir_tmp = recipe_dir.join("stage.tmp"); + create_dir_clean(&stage_dir_tmp)?; + + // Create build, if it does not exist + //TODO: flag for clean builds where build is wiped out + let build_dir = recipe_dir.join("build"); + if ! build_dir.is_dir() { + create_dir_clean(&build_dir)?; + } + + //TODO: better integration with redoxer (library instead of binary) + //TODO: configurable target + match build { + BuildRecipe::Cargo => { + let mut command = Command::new("redoxer"); + command.arg("install"); + //TODO: --debug if desired + command.arg("--path").arg(&source_dir); + command.arg("--root").arg(&stage_dir_tmp); + command.env("CARGO_TARGET_DIR", &build_dir); + run_command(command)?; + }, + BuildRecipe::Configure => { + //TODO: Add more configurability, convert script to Rust + let mut command = Command::new("redoxer"); + command.arg("env"); + command.arg("bash").arg("-ex"); + //TODO: remove unwraps + command.env("COOKBOOK_STAGE", &stage_dir_tmp.canonicalize().unwrap()); + command.env("COOKBOOK_SOURCE", &source_dir.canonicalize().unwrap()); + command.current_dir(&build_dir); + run_command_stdin(command, r#" + export LDFLAGS="--static" + "${COOKBOOK_SOURCE}/configure" \ + --host="${TARGET}" \ + --prefix="" \ + --disable-shared \ + --enable-static + make -j "$(nproc)" + make install DESTDIR="${COOKBOOK_STAGE}" + + # Strip binaries + if [ -d "${COOKBOOK_STAGE}/bin" ] + then + find "${COOKBOOK_STAGE}/bin" -type f -exec "${TARGET}-strip" -v {} ';' + fi + + # Remove libtool files + if [ -d "${COOKBOOK_STAGE}/lib" ] + then + find "${COOKBOOK_STAGE}/lib" -type f -name '*.la' -exec rm -fv {} ';' + fi + "#.as_bytes())?; + }, + BuildRecipe::Custom { script } => { + let mut command = Command::new("redoxer"); + command.arg("env"); + command.arg("bash").arg("-ex"); + //TODO: remove unwraps + command.env("COOKBOOK_STAGE", &stage_dir_tmp.canonicalize().unwrap()); + command.env("COOKBOOK_SOURCE", &source_dir.canonicalize().unwrap()); + command.current_dir(&build_dir); + run_command_stdin(command, script.as_bytes())?; + }, + } + + // Move stage.tmp to stage atomically + rename(&stage_dir_tmp, &stage_dir)?; + } + + Ok(stage_dir) +} + fn cook(recipe_name: &str) -> Result<(), String> { //TODO: sanitize recipe name? let recipe_dir = Path::new("recipes").join(recipe_name); @@ -306,6 +389,11 @@ fn cook(recipe_name: &str) -> Result<(), String> { err ))?; + let stage_dir = build(&recipe_dir, &source_dir, &recipe.build).map_err(|err| format!( + "failed to build: {}", + err + ))?; + Ok(()) } diff --git a/src/recipe.rs b/src/recipe.rs index da6db88a..0fee27d3 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -39,6 +39,9 @@ pub enum BuildRecipe { /// Will build and install using cargo #[serde(rename = "cargo")] Cargo, + /// Will build and install using configure and make + #[serde(rename = "configure")] + Configure, /// Will build and install using custom commands #[serde(rename = "custom")] Custom { From ae4b56fca674e84d68c205525700fb131d16776e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 20 May 2020 16:07:55 -0600 Subject: [PATCH 0771/3180] Add zlib recipe.toml --- recipes/zlib/recipe.toml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 recipes/zlib/recipe.toml diff --git a/recipes/zlib/recipe.toml b/recipes/zlib/recipe.toml new file mode 100644 index 00000000..178a62ed --- /dev/null +++ b/recipes/zlib/recipe.toml @@ -0,0 +1,14 @@ +[source] +tar = "http://zlib.net/zlib-1.2.11.tar.gz" + +[build] +template = "custom" +script = """ + export LDFLAGS="--static" + # See https://stackoverflow.com/questions/21396988/zlib-build-not-configuring-properly-with-cross-compiler-ignores-ar. + CHOST="${TARGET}" "${COOKBOOK_SOURCE}/configure" \ + --prefix="" \ + --static + make -j "$(nproc)" + make install DESTDIR="${COOKBOOK_STAGE}" +""" From 21a4106dc76a8b21c5d041fa2a8f898a378989df Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 20 May 2020 21:16:16 -0600 Subject: [PATCH 0772/3180] Build pkgar archives, implement build depends --- Cargo.lock | 313 ++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 1 + src/bin/cook.rs | 211 ++++++++++++++++++++++++++------ src/recipe.rs | 45 +++++-- 4 files changed, 524 insertions(+), 46 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e0a5f1d0..72a25cf9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,5 +1,13 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +[[package]] +name = "ansi_term" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "arrayref" version = "0.3.6" @@ -10,6 +18,41 @@ name = "arrayvec" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "hermit-abi 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "autocfg" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "bitflags" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "blake3" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.54 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "blake3" version = "0.3.3" @@ -63,11 +106,68 @@ name = "cfg-if" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "clap" +version = "2.33.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "vec_map 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "constant_time_eq" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "crossbeam-deque" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-epoch 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memoffset 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-queue" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-utils" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "crypto-mac" version = "0.7.0" @@ -85,6 +185,11 @@ dependencies = [ "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "either" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "fake-simd" version = "0.1.2" @@ -98,11 +203,61 @@ dependencies = [ "typenum 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "getrandom" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hermit-abi" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "index-fixed" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "libc" version = "0.2.70" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "maybe-uninit" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "memoffset" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "num_cpus" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "hermit-abi 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "numtoa" version = "0.1.0" @@ -124,6 +279,29 @@ dependencies = [ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "pkgar" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "blake3 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "clap 2.33.1 (registry+https://github.com/rust-lang/crates.io-index)", + "plain 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sodalite 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "ppv-lite86" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "proc-macro2" version = "1.0.13" @@ -140,12 +318,72 @@ dependencies = [ "proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "ppv-lite86 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rayon" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-deque 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon-core 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rayon-core" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-deque 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-queue 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "redox_cookbook" version = "0.1.0" dependencies = [ "blake3 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "pbr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "termion 1.5.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -165,6 +403,11 @@ dependencies = [ "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "serde" version = "1.0.110" @@ -194,6 +437,19 @@ dependencies = [ "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "sodalite" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "index-fixed 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "strsim" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "subtle" version = "1.0.0" @@ -220,6 +476,14 @@ dependencies = [ "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "textwrap" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "time" version = "0.1.43" @@ -242,11 +506,26 @@ name = "typenum" version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "unicode-width" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "unicode-xid" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "winapi" version = "0.3.8" @@ -267,8 +546,13 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" [metadata] +"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" "checksum arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" "checksum arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" +"checksum atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +"checksum autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" +"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" +"checksum blake3 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "667d945f23cefed0b5f973af35c4bc3319caa6776fbda270e4897d8504afa8e4" "checksum blake3 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "68df31bdf2bbb567e5adf8f21ac125dc0e897b1381e7b841f181521f06fc3134" "checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" "checksum block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" @@ -276,29 +560,58 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" "checksum cc 1.0.54 (registry+https://github.com/rust-lang/crates.io-index)" = "7bbb73db36c1246e9034e307d0fba23f9a2e251faa47ade70c1bd252220c8311" "checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +"checksum clap 2.33.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bdfa80d47f954d53a35a64987ca1422f495b8d6483c0fe9f7117b36c2a792129" "checksum constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" +"checksum crossbeam-deque 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285" +"checksum crossbeam-epoch 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" +"checksum crossbeam-queue 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c695eeca1e7173472a32221542ae469b3e9aac3a4fc81f7696bcad82029493db" +"checksum crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" "checksum crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" "checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" "checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" "checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" +"checksum getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" +"checksum hermit-abi 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "91780f809e750b0a89f5544be56617ff6b1227ee485bcb06ebe10cdf89bd3b71" +"checksum index-fixed 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c63adf4f50cae82ddb03b088a55172f5044e73c8f02d029e69780717f764bbfa" +"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" "checksum libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)" = "3baa92041a6fec78c687fa0cc2b3fae8884f743d672cf551bed1d6dac6988d0f" +"checksum maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" +"checksum memoffset 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b4fc2c02a7e374099d4ee95a193111f72d2110197fe200272371758f6c3643d8" +"checksum num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" "checksum numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" "checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" "checksum pbr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4403eb718d70c03ee279e51737782902c68cca01e870a33b6a2f9dfb50b9cd83" +"checksum pkgar 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "74003f2ac9baa8600352a677bd8763088cc35498a4364abe9ae5898832015bb9" +"checksum plain 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" +"checksum ppv-lite86 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "237a5ed80e274dbc66f86bd59c1e25edc039660be53194b5fe0a482e0f2612ea" "checksum proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)" = "53f5ffe53a6b28e37c9c1ce74893477864d64f74778a93a4beb43c8fa167f639" "checksum quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "54a21852a652ad6f610c9510194f398ff6f8692e334fd1145fed931f7fbe44ea" +"checksum rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +"checksum rand_chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +"checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +"checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +"checksum rayon 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "db6ce3297f9c85e16621bb8cca38a06779ffc31bb8184e1be4bed2be4678a098" +"checksum rayon-core 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "08a89b46efaf957e52b18062fb2f4660f8b8a4dde1807ca002690868ef2c85a9" "checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" +"checksum scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" "checksum serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)" = "99e7b308464d16b56eba9964e4972a3eee817760ab60d88c3f86e1fecb08204c" "checksum serde_derive 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)" = "818fbf6bfa9a42d3bfcaca148547aa00c7b915bec71d1757aa2d44ca68771984" "checksum sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "27044adfd2e1f077f649f59deb9490d3941d674002f7d062870a60ebe9bd47a0" +"checksum sodalite 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "67643084c740297bac275b1d97901ec27ca5984be4e8f75d86a33498e0e3e61c" +"checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" "checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" "checksum syn 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)" = "1425de3c33b0941002740a420b1a906a350b88d08b82b2c8a01035a3f9447bac" "checksum termion 1.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c22cec9d8978d906be5ac94bceb5a010d885c626c4c8855721a4dbd20e3ac905" +"checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" "checksum time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" "checksum toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71a" "checksum typenum 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" +"checksum unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479" "checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" +"checksum vec_map 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" +"checksum wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" "checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/Cargo.toml b/Cargo.toml index 5b297bc9..34ce71a2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,6 +17,7 @@ path = "src/lib.rs" [dependencies] blake3 = "0.3.3" pbr = "1.0.2" +pkgar = "0.1.6" serde = { version = "1.0", features = ["derive"] } sha2 = "0.8.1" termion = "1.5.5" diff --git a/src/bin/cook.rs b/src/bin/cook.rs index e0ab5a4f..e9ed47e8 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1,5 +1,5 @@ use cookbook::blake3::blake3_progress; -use cookbook::recipe::{Recipe, SourceRecipe, BuildRecipe}; +use cookbook::recipe::{Recipe, SourceRecipe, BuildKind, BuildRecipe, PackageRecipe}; use cookbook::sha256::sha256_progress; use std::{ env, @@ -276,6 +276,32 @@ fn fetch(recipe_dir: &Path, source: &SourceRecipe) -> Result { } fn build(recipe_dir: &Path, source_dir: &Path, build: &BuildRecipe) -> Result { + let sysroot_dir = recipe_dir.join("sysroot"); + if ! sysroot_dir.is_dir() { + // Create sysroot.tmp + let sysroot_dir_tmp = recipe_dir.join("sysroot.tmp"); + create_dir_clean(&sysroot_dir_tmp)?; + + for dependency in build.dependencies.iter() { + let public_path = "build/public.key"; + //TODO: sanitize name + let archive_path = format!("recipes/{}/stage.pkgar", dependency); + pkgar::bin::extract( + public_path, + &archive_path, + sysroot_dir_tmp.to_str().unwrap() + ).map_err(|err| format!( + "failed to install '{}' in '{}': {:?}", + archive_path, + sysroot_dir_tmp.display(), + err + ))?; + } + + // Move sysroot.tmp to sysroot atomically + rename(&sysroot_dir_tmp, &sysroot_dir)?; + } + let stage_dir = recipe_dir.join("stage"); if ! stage_dir.is_dir() { // Create stage.tmp @@ -291,8 +317,8 @@ fn build(recipe_dir: &Path, source_dir: &Path, build: &BuildRecipe) -> Result { + match &build.kind { + BuildKind::Cargo => { let mut command = Command::new("redoxer"); command.arg("install"); //TODO: --debug if desired @@ -301,7 +327,7 @@ fn build(recipe_dir: &Path, source_dir: &Path, build: &BuildRecipe) -> Result { + BuildKind::Configure => { //TODO: Add more configurability, convert script to Rust let mut command = Command::new("redoxer"); command.arg("env"); @@ -309,9 +335,11 @@ fn build(recipe_dir: &Path, source_dir: &Path, build: &BuildRecipe) -> Result Result { + BuildKind::Custom { script } => { let mut command = Command::new("redoxer"); command.arg("env"); command.arg("bash").arg("-ex"); //TODO: remove unwraps command.env("COOKBOOK_STAGE", &stage_dir_tmp.canonicalize().unwrap()); command.env("COOKBOOK_SOURCE", &source_dir.canonicalize().unwrap()); + command.env("COOKBOOK_SYSROOT", &sysroot_dir.canonicalize().unwrap()); command.current_dir(&build_dir); run_command_stdin(command, script.as_bytes())?; }, @@ -352,38 +381,34 @@ fn build(recipe_dir: &Path, source_dir: &Path, build: &BuildRecipe) -> Result Result<(), String> { - //TODO: sanitize recipe name? - let recipe_dir = Path::new("recipes").join(recipe_name); - if ! recipe_dir.is_dir() { - return Err(format!( - "failed to find recipe directory '{}'", - recipe_dir.display() - )); +fn package(recipe_dir: &Path, stage_dir: &Path, package: &PackageRecipe) -> Result { + //TODO: metadata like dependencies, name, and version + + let secret_path = "build/secret.key"; + let public_path = "build/public.key"; + if ! Path::new(secret_path).is_file() || ! Path::new(public_path).is_file() { + pkgar::bin::keygen(secret_path, public_path).map_err(|err| format!( + "failed to generate pkgar keys: {:?}", + err + ))?; } - let recipe_file = recipe_dir.join("recipe.toml"); - if ! recipe_file.is_file() { - return Err(format!( - "failed to find recipe file '{}'", - recipe_file.display() - )); + let package_file = recipe_dir.join("stage.pkgar"); + if ! package_file.is_file() { + pkgar::bin::create( + secret_path, + package_file.to_str().unwrap(), + stage_dir.to_str().unwrap() + ).map_err(|err| format!( + "failed to create pkgar archive: {:?}", + err + ))?; } - let recipe_toml = fs::read_to_string(&recipe_file).map_err(|err| format!( - "failed to read recipe file '{}': {}\n{:#?}", - recipe_file.display(), - err, - err - ))?; - - let recipe: Recipe = toml::from_str(&recipe_toml).map_err(|err| format!( - "failed to parse recipe file '{}': {}\n{:#?}", - recipe_file.display(), - err, - err - ))?; + Ok(package_file) +} +fn cook(recipe_dir: &Path, recipe: &Recipe) -> Result<(), String> { let source_dir = fetch(&recipe_dir, &recipe.source).map_err(|err| format!( "failed to fetch: {}", err @@ -394,41 +419,151 @@ fn cook(recipe_name: &str) -> Result<(), String> { err ))?; + let package_file = package(&recipe_dir, &stage_dir, &recipe.package).map_err(|err| format!( + "failed to package: {}", + err + ))?; + Ok(()) } +pub struct CookRecipe { + name: String, + dir: PathBuf, + recipe: Recipe, +} + +impl CookRecipe { + pub fn new(name: String) -> Result { + //TODO: sanitize recipe name? + let dir = Path::new("recipes").join(&name); + if ! dir.is_dir() { + return Err(format!( + "failed to find recipe directory '{}'", + dir.display() + )); + } + + let file = dir.join("recipe.toml"); + if ! file.is_file() { + return Err(format!( + "failed to find recipe file '{}'", + file.display() + )); + } + + let toml = fs::read_to_string(&file).map_err(|err| format!( + "failed to read recipe file '{}': {}\n{:#?}", + file.display(), + err, + err + ))?; + + let recipe: Recipe = toml::from_str(&toml).map_err(|err| format!( + "failed to parse recipe file '{}': {}\n{:#?}", + file.display(), + err, + err + ))?; + + Ok(Self { + name, + dir, + recipe + }) + } + + //TODO: make this more efficient, smarter, and not return duplicates + pub fn new_recursive(names: &[String], recursion: usize) -> Result, String> { + if recursion == 0 { + return Err(format!( + "recursion limit while processing build dependencies: {:#?}", + names + )); + } + + let mut recipes = Vec::new(); + for name in names { + let recipe = Self::new(name.clone())?; + + let dependencies = Self::new_recursive( + &recipe.recipe.build.dependencies, + recursion - 1 + ).map_err(|err| format!( + "{}: failed on loading build dependencies:\n{}", + name, + err + ))?; + + for dependency in dependencies { + recipes.push(dependency); + } + + recipes.push(recipe); + } + + Ok(recipes) + } +} + fn main() { let mut matching = true; + let mut dry_run = false; let mut quiet = false; let mut recipe_names = Vec::new(); for arg in env::args().skip(1) { match arg.as_str() { "--" if matching => matching = false, + "-d" | "--dry-run" if matching => dry_run = true, "-q" | "--quiet" if matching => quiet = true, _ => recipe_names.push(arg), } } - for recipe_name in recipe_names.iter() { + let recipes = match CookRecipe::new_recursive(&recipe_names, 16) { + Ok(ok) => ok, + Err(err) => { + eprintln!( + "{}{}cook - error:{}{} {}", + style::Bold, + color::Fg(color::AnsiValue(196)), + color::Fg(color::Reset), + style::Reset, + err, + ); + process::exit(1); + } + }; + + for recipe in recipes { if ! quiet { eprintln!( "{}{}cook - {}{}{}", style::Bold, color::Fg(color::AnsiValue(215)), - recipe_name, + recipe.name, color::Fg(color::Reset), style::Reset, ); } - match cook(recipe_name) { + let res = if dry_run { + if ! quiet { + eprintln!("DRY RUN: {:#?}", recipe.recipe); + } + Ok(()) + } else { + cook(&recipe.dir, &recipe.recipe) + }; + + match res { Ok(()) => { if ! quiet { eprintln!( "{}{}cook - {} - successful{}{}", style::Bold, color::Fg(color::AnsiValue(46)), - recipe_name, + recipe.name, color::Fg(color::Reset), style::Reset, ); @@ -439,7 +574,7 @@ fn main() { "{}{}cook - {} - error:{}{} {}", style::Bold, color::Fg(color::AnsiValue(196)), - recipe_name, + recipe.name, color::Fg(color::Reset), style::Reset, err, diff --git a/src/recipe.rs b/src/recipe.rs index 0fee27d3..7385076b 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -35,7 +35,7 @@ pub enum SourceRecipe { /// Specifies how to build a recipe #[derive(Debug, Deserialize, PartialEq, Serialize)] #[serde(tag = "template")] -pub enum BuildRecipe { +pub enum BuildKind { /// Will build and install using cargo #[serde(rename = "cargo")] Cargo, @@ -49,6 +49,20 @@ pub enum BuildRecipe { }, } +#[derive(Debug, Deserialize, PartialEq, Serialize)] +pub struct BuildRecipe { + #[serde(flatten)] + pub kind: BuildKind, + #[serde(default)] + pub dependencies: Vec, +} + +#[derive(Debug, Default, Deserialize, PartialEq, Serialize)] +pub struct PackageRecipe { + #[serde(default)] + pub dependencies: Vec, +} + /// Everything required to build a Redox package #[derive(Debug, Deserialize, PartialEq, Serialize)] pub struct Recipe { @@ -56,6 +70,9 @@ pub struct Recipe { pub source: SourceRecipe, /// Specifies how to build this recipe pub build: BuildRecipe, + /// Specifies how to package this recipe + #[serde(default)] + pub package: PackageRecipe, } @@ -63,7 +80,7 @@ pub struct Recipe { mod tests { #[test] fn git_cargo_recipe() { - use crate::recipe::{Recipe, SourceRecipe, BuildRecipe}; + use crate::recipe::{Recipe, SourceRecipe, BuildKind, BuildRecipe, PackageRecipe}; let recipe: Recipe = toml::from_str(r#" [source] @@ -82,14 +99,19 @@ mod tests { branch: Some("master".to_string()), rev: Some("06344744d3d55a5ac9a62a6059cb363d40699bbc".to_string()), }, - patches: Vec::new(), - build: BuildRecipe::Cargo, + build: BuildRecipe { + kind: BuildKind::Cargo, + dependencies: Vec::new(), + }, + package: PackageRecipe { + dependencies: Vec::new(), + }, }); } #[test] fn tar_custom_recipe() { - use crate::recipe::{Recipe, SourceRecipe, BuildRecipe}; + use crate::recipe::{Recipe, SourceRecipe, BuildKind, BuildRecipe, PackageRecipe}; let recipe: Recipe = toml::from_str(r#" [source] @@ -104,11 +126,18 @@ mod tests { assert_eq!(recipe, Recipe { source: SourceRecipe::Tar { tar: "http://downloads.xiph.org/releases/ogg/libogg-1.3.3.tar.xz".to_string(), + blake3: None, sha256: Some("4f3fc6178a533d392064f14776b23c397ed4b9f48f5de297aba73b643f955c08".to_string()), + patches: Vec::new(), }, - patches: Vec::new(), - build: BuildRecipe::Custom { - script: "make".to_string() + build: BuildRecipe { + kind: BuildKind::Custom { + script: "make".to_string() + }, + dependencies: Vec::new(), + }, + package: PackageRecipe { + dependencies: Vec::new(), }, }); } From a555a6d865c9dc68e52aedbc893532c1743fbcc6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 20 May 2020 21:16:30 -0600 Subject: [PATCH 0773/3180] Add libxml2 and xz recipe.toml --- recipes/libxml2/recipe.toml | 33 +++++++++++++++++++++++++++++++++ recipes/xz/recipe.toml | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 recipes/libxml2/recipe.toml create mode 100644 recipes/xz/recipe.toml diff --git a/recipes/libxml2/recipe.toml b/recipes/libxml2/recipe.toml new file mode 100644 index 00000000..befedf22 --- /dev/null +++ b/recipes/libxml2/recipe.toml @@ -0,0 +1,33 @@ +[source] +tar = "ftp://xmlsoft.org/libxml2/libxml2-2.9.9.tar.gz" + +[build] +template = "custom" +dependencies = [ + "xz", + "zlib" +] +script = """ +export CFLAGS="-I'${COOKBOOK_SYSROOT}/include'" +export LDFLAGS="-L'${COOKBOOK_SYSROOT}/lib' --static" +"${COOKBOOK_SOURCE}/configure" \ + --host="${TARGET}" \ + --prefix="" \ + --disable-shared \ + --enable-static \ + --without-python +make -j "$(nproc)" +make install DESTDIR="${COOKBOOK_STAGE}" + +# Strip binaries +if [ -d "${COOKBOOK_STAGE}/bin" ] +then + find "${COOKBOOK_STAGE}/bin" -type f -exec "${TARGET}-strip" -v {} ';' +fi + +# Remove libtool files +if [ -d "${COOKBOOK_STAGE}/lib" ] +then + find "${COOKBOOK_STAGE}/lib" -type f -name '*.la' -exec rm -fv {} ';' +fi +""" diff --git a/recipes/xz/recipe.toml b/recipes/xz/recipe.toml new file mode 100644 index 00000000..8130662d --- /dev/null +++ b/recipes/xz/recipe.toml @@ -0,0 +1,34 @@ +[source] +tar = "https://codeload.github.com/xz-mirror/xz/tar.gz/v5.2.3" +patches = [ + "01-no-poll.patch", + "02-o_noctty.patch", + "03-no-signals.patch" +] + +[build] +template = "custom" +script = """ +#TODO: simpler recipe +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ + +./autogen.sh + +chmod +w build-aux/config.sub +wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + +export CFLAGS="-static" +"./configure" \ + --host="${TARGET}" \ + --prefix="" \ + --disable-lzmadec \ + --disable-lzmainfo \ + --disable-xz \ + --disable-xzdec \ + --enable-shared=no \ + --enable-static=yes \ + --enable-threads=no \ + --with-pic=no +make -j "$(nproc)" +make install DESTDIR="${COOKBOOK_STAGE}" +""" From a0b68cc4376251fef37dd2aa3848a9f0b8e8a2b1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 20 May 2020 21:19:18 -0600 Subject: [PATCH 0774/3180] Ignore new tmp files --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 7fd98398..c85b9a85 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,12 @@ build repo source +source.tmp source-new source.tar +source.tar.tmp stage +stage.tmp stage.pkg stage.pkgar stage.sig @@ -11,6 +14,7 @@ stage.tar stage.tar.gz stage.toml sysroot +sysroot.tmp xargo From ebc3e64b09bbecbd4320836c0442315fe7238d96 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 20 May 2020 21:19:30 -0600 Subject: [PATCH 0775/3180] Add ion recipe --- recipes/ion/recipe.toml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 recipes/ion/recipe.toml diff --git a/recipes/ion/recipe.toml b/recipes/ion/recipe.toml new file mode 100644 index 00000000..5ac9d452 --- /dev/null +++ b/recipes/ion/recipe.toml @@ -0,0 +1,6 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/ion.git" +branch = "master" + +[build] +template = "cargo" From 69ef10f035dc62c519d579e28c4e89938eb0747d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 21 May 2020 11:14:00 -0600 Subject: [PATCH 0776/3180] Improve ability to override cookbook items, improve C support --- src/bin/cook.rs | 154 +++++++++++++++++++++++++++++++----------------- 1 file changed, 100 insertions(+), 54 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index e9ed47e8..43c188dd 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -282,6 +282,21 @@ fn build(recipe_dir: &Path, source_dir: &Path, build: &BuildRecipe) -> Result Result { - let mut command = Command::new("redoxer"); - command.arg("install"); - //TODO: --debug if desired - command.arg("--path").arg(&source_dir); - command.arg("--root").arg(&stage_dir_tmp); - command.env("CARGO_TARGET_DIR", &build_dir); - run_command(command)?; - }, - BuildKind::Configure => { - //TODO: Add more configurability, convert script to Rust - let mut command = Command::new("redoxer"); - command.arg("env"); - command.arg("bash").arg("-ex"); - //TODO: remove unwraps - command.env("COOKBOOK_STAGE", &stage_dir_tmp.canonicalize().unwrap()); - command.env("COOKBOOK_SOURCE", &source_dir.canonicalize().unwrap()); - command.env("COOKBOOK_SYSROOT", &sysroot_dir.canonicalize().unwrap()); - command.current_dir(&build_dir); - run_command_stdin(command, r#" - export CFLAGS="-I'${COOKBOOK_SYSROOT}/include'" - export LDFLAGS="-L'${COOKBOOK_SYSROOT}/lib' --static" - "${COOKBOOK_SOURCE}/configure" \ - --host="${TARGET}" \ - --prefix="" \ - --disable-shared \ - --enable-static - make -j "$(nproc)" - make install DESTDIR="${COOKBOOK_STAGE}" + //TODO: Add more configurability, convert scripts to Rust? + let script = match &build.kind { + BuildKind::Cargo => "cookbook_cargo", + BuildKind::Configure => "cookbook_configure", + BuildKind::Custom { script } => script + }; - # Strip binaries - if [ -d "${COOKBOOK_STAGE}/bin" ] - then - find "${COOKBOOK_STAGE}/bin" -type f -exec "${TARGET}-strip" -v {} ';' - fi + let command = { + let mut command = Command::new("redoxer"); + command.arg("env"); + command.arg("bash").arg("-ex"); - # Remove libtool files - if [ -d "${COOKBOOK_STAGE}/lib" ] - then - find "${COOKBOOK_STAGE}/lib" -type f -name '*.la' -exec rm -fv {} ';' - fi - "#.as_bytes())?; - }, - BuildKind::Custom { script } => { - let mut command = Command::new("redoxer"); - command.arg("env"); - command.arg("bash").arg("-ex"); - //TODO: remove unwraps - command.env("COOKBOOK_STAGE", &stage_dir_tmp.canonicalize().unwrap()); - command.env("COOKBOOK_SOURCE", &source_dir.canonicalize().unwrap()); - command.env("COOKBOOK_SYSROOT", &sysroot_dir.canonicalize().unwrap()); - command.current_dir(&build_dir); - run_command_stdin(command, script.as_bytes())?; - }, - } + //TODO: remove unwraps + let cookbook_build = build_dir.canonicalize().unwrap(); + let cookbook_recipe = recipe_dir.canonicalize().unwrap(); + let cookbook_stage = stage_dir_tmp.canonicalize().unwrap(); + let cookbook_source = source_dir.canonicalize().unwrap(); + let cookbook_sysroot = sysroot_dir.canonicalize().unwrap(); + command.current_dir(&cookbook_build); + command.env("COOKBOOK_BUILD", &cookbook_build); + command.env("COOKBOOK_RECIPE", &cookbook_recipe); + command.env("COOKBOOK_STAGE", &cookbook_stage); + command.env("COOKBOOK_SOURCE", &cookbook_source); + command.env("COOKBOOK_SYSROOT", &cookbook_sysroot); + command + }; + + let full_script = format!("{}\n{}\n{}", pre_script, script, post_script); + run_command_stdin(command, full_script.as_bytes())?; // Move stage.tmp to stage atomically rename(&stage_dir_tmp, &stage_dir)?; From b2a60668713ceb97400997a39eea9af51e718365 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 21 May 2020 11:14:24 -0600 Subject: [PATCH 0777/3180] Simplify recipes --- recipes/acid/recipe.toml | 1 - recipes/ion/recipe.toml | 1 - recipes/libxml2/recipe.toml | 24 +++--------------------- recipes/xz/recipe.toml | 25 +++++++++++++------------ recipes/zlib/recipe.toml | 6 +++--- 5 files changed, 19 insertions(+), 38 deletions(-) diff --git a/recipes/acid/recipe.toml b/recipes/acid/recipe.toml index 2c63247f..1f126290 100644 --- a/recipes/acid/recipe.toml +++ b/recipes/acid/recipe.toml @@ -1,6 +1,5 @@ [source] git = "https://gitlab.redox-os.org/redox-os/acid.git" -branch = "master" [build] template = "cargo" diff --git a/recipes/ion/recipe.toml b/recipes/ion/recipe.toml index 5ac9d452..80c82e33 100644 --- a/recipes/ion/recipe.toml +++ b/recipes/ion/recipe.toml @@ -1,6 +1,5 @@ [source] git = "https://gitlab.redox-os.org/redox-os/ion.git" -branch = "master" [build] template = "cargo" diff --git a/recipes/libxml2/recipe.toml b/recipes/libxml2/recipe.toml index befedf22..d99963e2 100644 --- a/recipes/libxml2/recipe.toml +++ b/recipes/libxml2/recipe.toml @@ -8,26 +8,8 @@ dependencies = [ "zlib" ] script = """ -export CFLAGS="-I'${COOKBOOK_SYSROOT}/include'" -export LDFLAGS="-L'${COOKBOOK_SYSROOT}/lib' --static" -"${COOKBOOK_SOURCE}/configure" \ - --host="${TARGET}" \ - --prefix="" \ - --disable-shared \ - --enable-static \ +COOKBOOK_CONFIGURE_FLAGS+=( --without-python -make -j "$(nproc)" -make install DESTDIR="${COOKBOOK_STAGE}" - -# Strip binaries -if [ -d "${COOKBOOK_STAGE}/bin" ] -then - find "${COOKBOOK_STAGE}/bin" -type f -exec "${TARGET}-strip" -v {} ';' -fi - -# Remove libtool files -if [ -d "${COOKBOOK_STAGE}/lib" ] -then - find "${COOKBOOK_STAGE}/lib" -type f -name '*.la' -exec rm -fv {} ';' -fi +) +cookbook_configure """ diff --git a/recipes/xz/recipe.toml b/recipes/xz/recipe.toml index 8130662d..6180ff10 100644 --- a/recipes/xz/recipe.toml +++ b/recipes/xz/recipe.toml @@ -18,17 +18,18 @@ chmod +w build-aux/config.sub wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub export CFLAGS="-static" -"./configure" \ - --host="${TARGET}" \ - --prefix="" \ - --disable-lzmadec \ - --disable-lzmainfo \ - --disable-xz \ - --disable-xzdec \ - --enable-shared=no \ - --enable-static=yes \ - --enable-threads=no \ +COOKBOOK_CONFIGURE="./configure" +COOKBOOK_CONFIGURE_FLAGS=( + --host="${TARGET}" + --prefix="" + --disable-lzmadec + --disable-lzmainfo + --disable-xz + --disable-xzdec + --enable-shared=no + --enable-static=yes + --enable-threads=no --with-pic=no -make -j "$(nproc)" -make install DESTDIR="${COOKBOOK_STAGE}" +) +cookbook_configure """ diff --git a/recipes/zlib/recipe.toml b/recipes/zlib/recipe.toml index 178a62ed..11b97874 100644 --- a/recipes/zlib/recipe.toml +++ b/recipes/zlib/recipe.toml @@ -6,9 +6,9 @@ template = "custom" script = """ export LDFLAGS="--static" # See https://stackoverflow.com/questions/21396988/zlib-build-not-configuring-properly-with-cross-compiler-ignores-ar. - CHOST="${TARGET}" "${COOKBOOK_SOURCE}/configure" \ + CHOST="${TARGET}" "${COOKBOOK_CONFIGURE}" \ --prefix="" \ --static - make -j "$(nproc)" - make install DESTDIR="${COOKBOOK_STAGE}" + "${COOKBOOK_MAKE}" -j "$(nproc)" + "${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" """ From 2ea2a056ed24080eadb894ee07ad44f16b9ee7ba Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 21 May 2020 11:16:58 -0600 Subject: [PATCH 0778/3180] Add more cargo recipes --- recipes/audiod/recipe.toml | 5 +++++ recipes/contain/recipe.toml | 5 +++++ recipes/coreutils/recipe.toml | 5 +++++ recipes/extrautils/recipe.toml | 8 ++++++++ recipes/init/recipe.toml | 5 +++++ 5 files changed, 28 insertions(+) create mode 100644 recipes/audiod/recipe.toml create mode 100644 recipes/contain/recipe.toml create mode 100644 recipes/coreutils/recipe.toml create mode 100644 recipes/extrautils/recipe.toml create mode 100644 recipes/init/recipe.toml diff --git a/recipes/audiod/recipe.toml b/recipes/audiod/recipe.toml new file mode 100644 index 00000000..555fa9fa --- /dev/null +++ b/recipes/audiod/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/audiod.git" + +[build] +template = "cargo" diff --git a/recipes/contain/recipe.toml b/recipes/contain/recipe.toml new file mode 100644 index 00000000..06edc8a6 --- /dev/null +++ b/recipes/contain/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/contain.git" + +[build] +template = "cargo" diff --git a/recipes/coreutils/recipe.toml b/recipes/coreutils/recipe.toml new file mode 100644 index 00000000..e17994e4 --- /dev/null +++ b/recipes/coreutils/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/coreutils.git" + +[build] +template = "cargo" diff --git a/recipes/extrautils/recipe.toml b/recipes/extrautils/recipe.toml new file mode 100644 index 00000000..82a72f0d --- /dev/null +++ b/recipes/extrautils/recipe.toml @@ -0,0 +1,8 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/extrautils.git" + +[build] +template = "cargo" +dependencies = [ + "xz" +] diff --git a/recipes/init/recipe.toml b/recipes/init/recipe.toml new file mode 100644 index 00000000..2c8fdea1 --- /dev/null +++ b/recipes/init/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/init.git" + +[build] +template = "cargo" From 94d85accd33aa7e5c90446a9ff87e168b080df2d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 21 May 2020 11:40:08 -0600 Subject: [PATCH 0779/3180] Add optional script to transform source after patches, add more recipes --- recipes/bootloader/recipe.toml | 14 ++++++++++++++ recipes/drivers/recipe.toml | 27 +++++++++++++++++++++++++++ recipes/libiconv/recipe.toml | 14 ++++++++++++++ recipes/libjpeg/recipe.toml | 5 +++++ recipes/liborbital/recipe.toml | 10 ++++++++++ recipes/libsodium/recipe.toml | 9 +++++++++ recipes/xz/recipe.toml | 14 +++++--------- src/bin/cook.rs | 10 +++++++++- src/recipe.rs | 3 +++ 9 files changed, 96 insertions(+), 10 deletions(-) create mode 100644 recipes/bootloader/recipe.toml create mode 100644 recipes/drivers/recipe.toml create mode 100644 recipes/libiconv/recipe.toml create mode 100644 recipes/libjpeg/recipe.toml create mode 100644 recipes/liborbital/recipe.toml create mode 100644 recipes/libsodium/recipe.toml diff --git a/recipes/bootloader/recipe.toml b/recipes/bootloader/recipe.toml new file mode 100644 index 00000000..dacd541c --- /dev/null +++ b/recipes/bootloader/recipe.toml @@ -0,0 +1,14 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/bootloader.git" + +[build] +template = "custom" +script = """ +ARCH="$(echo "${TARGET}" | cut -d - -f1)" +nasm \ + -f bin \ + -o "${COOKBOOK_STAGE}/bootloader" \ + -D "ARCH_${ARCH}" \ + -i"${COOKBOOK_SOURCE}/${ARCH}/" \ + "${COOKBOOK_SOURCE}/${ARCH}/disk.asm" +""" diff --git a/recipes/drivers/recipe.toml b/recipes/drivers/recipe.toml new file mode 100644 index 00000000..fdb43769 --- /dev/null +++ b/recipes/drivers/recipe.toml @@ -0,0 +1,27 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/drivers.git" + +[build] +template = "custom" +script = """ +redoxer build --release \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --workspace + +mkdir -pv "${COOKBOOK_STAGE}/bin" +find "target/${TARGET}/release" \ + -maxdepth 1 \ + -executable \ + -type f \ + -exec cp -v {} "${COOKBOOK_STAGE}/bin/" ';' + +mkdir -pv "${COOKBOOK_STAGE}/etc/pcid" +cp -v "${COOKBOOK_SOURCE}/initfs.toml" "${COOKBOOK_STAGE}/etc/pcid/initfs.toml" + +mkdir -pv "${COOKBOOK_STAGE}/etc/pcid.d" +find "${COOKBOOK_SOURCE}" -maxdepth 2 -type f -name 'config.toml' | while read conf +do + driver="$(basename "$(dirname "$conf")")" + cp -v "$conf" "${COOKBOOK_STAGE}/etc/pcid.d/$driver.toml" +done +""" diff --git a/recipes/libiconv/recipe.toml b/recipes/libiconv/recipe.toml new file mode 100644 index 00000000..5ab4337a --- /dev/null +++ b/recipes/libiconv/recipe.toml @@ -0,0 +1,14 @@ +[source] +tar = "https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz" +patches = [ + "01_redox.patch" +] + +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + ac_cv_have_decl_program_invocation_name=no +) +cookbook_configure +""" diff --git a/recipes/libjpeg/recipe.toml b/recipes/libjpeg/recipe.toml new file mode 100644 index 00000000..47859e1d --- /dev/null +++ b/recipes/libjpeg/recipe.toml @@ -0,0 +1,5 @@ +[source] +tar = "http://ijg.org/files/jpegsrc.v9c.tar.gz" + +[build] +template = "configure" diff --git a/recipes/liborbital/recipe.toml b/recipes/liborbital/recipe.toml new file mode 100644 index 00000000..cbbe41c9 --- /dev/null +++ b/recipes/liborbital/recipe.toml @@ -0,0 +1,10 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/liborbital.git" + +[build] +template = "custom" +script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ +"${COOKBOOK_CARGO}" build --release +"${COOKBOOK_MAKE}" install HOST="${TARGET}" DESTDIR="${COOKBOOK_STAGE}" +""" diff --git a/recipes/libsodium/recipe.toml b/recipes/libsodium/recipe.toml new file mode 100644 index 00000000..cd4ed493 --- /dev/null +++ b/recipes/libsodium/recipe.toml @@ -0,0 +1,9 @@ +[source] +tar = "https://github.com/jedisct1/libsodium/archive/1.0.16.tar.gz" +patches = [ + "random.patch" +] +script = "./autogen.sh" + +[build] +template = "configure" diff --git a/recipes/xz/recipe.toml b/recipes/xz/recipe.toml index 6180ff10..3c19525a 100644 --- a/recipes/xz/recipe.toml +++ b/recipes/xz/recipe.toml @@ -5,20 +5,16 @@ patches = [ "02-o_noctty.patch", "03-no-signals.patch" ] +script = """ +./autogen.sh +chmod +w build-aux/config.sub +wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub +""" [build] template = "custom" script = """ -#TODO: simpler recipe -rsync -av --delete "${COOKBOOK_SOURCE}/" ./ - -./autogen.sh - -chmod +w build-aux/config.sub -wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub - export CFLAGS="-static" -COOKBOOK_CONFIGURE="./configure" COOKBOOK_CONFIGURE_FLAGS=( --host="${TARGET}" --prefix="" diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 43c188dd..db2d2bde 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -173,7 +173,7 @@ fn fetch(recipe_dir: &Path, source: &SourceRecipe) -> Result { command.arg("submodule").arg("update").arg("--init").arg("--recursive"); run_command(command)?; }, - SourceRecipe::Tar { tar, blake3, sha256, patches } => { + SourceRecipe::Tar { tar, blake3, sha256, patches, script } => { if ! source_dir.is_dir() { // Download tar //TODO: replace wget @@ -266,6 +266,14 @@ fn fetch(recipe_dir: &Path, source: &SourceRecipe) -> Result { run_command_stdin(command, patch.as_bytes())?; } + // Run source script + if let Some(script) = script { + let mut command = Command::new("bash"); + command.arg("-ex"); + command.current_dir(&source_dir_tmp); + run_command_stdin(command, script.as_bytes())?; + } + // Move source.tmp to source atomically rename(&source_dir_tmp, &source_dir)?; } diff --git a/src/recipe.rs b/src/recipe.rs index 7385076b..97202924 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -29,6 +29,8 @@ pub enum SourceRecipe { /// A list of patch files to apply to the source #[serde(default)] patches: Vec, + /// Optional script to run to prepare the source, such as ./autogen.sh + script: Option, }, } @@ -129,6 +131,7 @@ mod tests { blake3: None, sha256: Some("4f3fc6178a533d392064f14776b23c397ed4b9f48f5de297aba73b643f955c08".to_string()), patches: Vec::new(), + script: None, }, build: BuildRecipe { kind: BuildKind::Custom { From 28180c39ff31e029dd3791af10f43972c20e9067 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 21 May 2020 12:02:16 -0600 Subject: [PATCH 0780/3180] Set CPPFLAGS, add more recipes --- recipes/libpng/recipe.toml | 13 +++++++++++++ recipes/libvorbis/recipe.toml | 9 +++++++++ recipes/logd/recipe.toml | 5 +++++ recipes/nasm/recipe.toml | 5 +++++ recipes/netstack/recipe.toml | 5 +++++ recipes/netutils/recipe.toml | 6 ++++++ recipes/nulld/recipe.toml | 5 +++++ recipes/pkgar/recipe.toml | 5 +++++ recipes/pkgutils/recipe.toml | 5 +++++ recipes/ptyd/recipe.toml | 5 +++++ recipes/ramfs/recipe.toml | 5 +++++ recipes/redoxerd/recipe.toml | 12 ++++++++++++ recipes/redoxfs/recipe.toml | 5 +++++ recipes/sed/recipe.toml | 5 +++++ recipes/shellstorm/recipe.toml | 5 +++++ recipes/smith/recipe.toml | 5 +++++ recipes/zerod/recipe.toml | 5 +++++ src/bin/cook.rs | 1 + 18 files changed, 106 insertions(+) create mode 100644 recipes/libpng/recipe.toml create mode 100644 recipes/libvorbis/recipe.toml create mode 100644 recipes/logd/recipe.toml create mode 100644 recipes/nasm/recipe.toml create mode 100644 recipes/netstack/recipe.toml create mode 100644 recipes/netutils/recipe.toml create mode 100644 recipes/nulld/recipe.toml create mode 100644 recipes/pkgar/recipe.toml create mode 100644 recipes/pkgutils/recipe.toml create mode 100644 recipes/ptyd/recipe.toml create mode 100644 recipes/ramfs/recipe.toml create mode 100644 recipes/redoxerd/recipe.toml create mode 100644 recipes/redoxfs/recipe.toml create mode 100644 recipes/sed/recipe.toml create mode 100644 recipes/shellstorm/recipe.toml create mode 100644 recipes/smith/recipe.toml create mode 100644 recipes/zerod/recipe.toml diff --git a/recipes/libpng/recipe.toml b/recipes/libpng/recipe.toml new file mode 100644 index 00000000..ed7b95f1 --- /dev/null +++ b/recipes/libpng/recipe.toml @@ -0,0 +1,13 @@ +[source] +tar = "https://github.com/glennrp/libpng/archive/v1.6.36.tar.gz" +script = """ +chmod +w config.sub +wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub +""" + + +[build] +template = "configure" +dependencies = [ + "zlib" +] diff --git a/recipes/libvorbis/recipe.toml b/recipes/libvorbis/recipe.toml new file mode 100644 index 00000000..47facfd6 --- /dev/null +++ b/recipes/libvorbis/recipe.toml @@ -0,0 +1,9 @@ +[source] +tar = "http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.tar.xz" +sha256 = "af00bb5a784e7c9e69f56823de4637c350643deedaf333d0fa86ecdba6fcb415" + +[build] +template = "configure" +dependencies = [ + "libogg" +] diff --git a/recipes/logd/recipe.toml b/recipes/logd/recipe.toml new file mode 100644 index 00000000..6e906f11 --- /dev/null +++ b/recipes/logd/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/logd.git" + +[build] +template = "cargo" diff --git a/recipes/nasm/recipe.toml b/recipes/nasm/recipe.toml new file mode 100644 index 00000000..384cd9e1 --- /dev/null +++ b/recipes/nasm/recipe.toml @@ -0,0 +1,5 @@ +[source] +tar = "http://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.gz" + +[build] +template = "configure" diff --git a/recipes/netstack/recipe.toml b/recipes/netstack/recipe.toml new file mode 100644 index 00000000..c2a534a2 --- /dev/null +++ b/recipes/netstack/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/netstack.git" + +[build] +template = "cargo" diff --git a/recipes/netutils/recipe.toml b/recipes/netutils/recipe.toml new file mode 100644 index 00000000..e46f33a0 --- /dev/null +++ b/recipes/netutils/recipe.toml @@ -0,0 +1,6 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/netutils.git" +branch = "redox-unix" + +[build] +template = "cargo" diff --git a/recipes/nulld/recipe.toml b/recipes/nulld/recipe.toml new file mode 100644 index 00000000..f9c72546 --- /dev/null +++ b/recipes/nulld/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/nulld.git" + +[build] +template = "cargo" diff --git a/recipes/pkgar/recipe.toml b/recipes/pkgar/recipe.toml new file mode 100644 index 00000000..6770c627 --- /dev/null +++ b/recipes/pkgar/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/pkgar.git" + +[build] +template = "cargo" diff --git a/recipes/pkgutils/recipe.toml b/recipes/pkgutils/recipe.toml new file mode 100644 index 00000000..e222cb45 --- /dev/null +++ b/recipes/pkgutils/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/pkgutils.git" + +[build] +template = "cargo" diff --git a/recipes/ptyd/recipe.toml b/recipes/ptyd/recipe.toml new file mode 100644 index 00000000..6984bbd9 --- /dev/null +++ b/recipes/ptyd/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/ptyd.git" + +[build] +template = "cargo" diff --git a/recipes/ramfs/recipe.toml b/recipes/ramfs/recipe.toml new file mode 100644 index 00000000..dd8e751e --- /dev/null +++ b/recipes/ramfs/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/ramfs.git" + +[build] +template = "cargo" diff --git a/recipes/redoxerd/recipe.toml b/recipes/redoxerd/recipe.toml new file mode 100644 index 00000000..16d4a5a7 --- /dev/null +++ b/recipes/redoxerd/recipe.toml @@ -0,0 +1,12 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/redoxer.git" + +[build] +template = "custom" +script = """ +COOKBOOK_CARGO_FLAGS=( + --path "${COOKBOOK_SOURCE}/daemon" + --root "${COOKBOOK_STAGE}" +) +cookbook_cargo +""" diff --git a/recipes/redoxfs/recipe.toml b/recipes/redoxfs/recipe.toml new file mode 100644 index 00000000..31fdb491 --- /dev/null +++ b/recipes/redoxfs/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/redoxfs.git" + +[build] +template = "cargo" diff --git a/recipes/sed/recipe.toml b/recipes/sed/recipe.toml new file mode 100644 index 00000000..37f5f2fb --- /dev/null +++ b/recipes/sed/recipe.toml @@ -0,0 +1,5 @@ +[source] +tar = "http://ftp.gnu.org/gnu/sed/sed-4.4.tar.xz" + +[build] +template = "configure" diff --git a/recipes/shellstorm/recipe.toml b/recipes/shellstorm/recipe.toml new file mode 100644 index 00000000..daa6d4d4 --- /dev/null +++ b/recipes/shellstorm/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/shellstorm.git" + +[build] +template = "cargo" diff --git a/recipes/smith/recipe.toml b/recipes/smith/recipe.toml new file mode 100644 index 00000000..fabc0dee --- /dev/null +++ b/recipes/smith/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/Smith.git" + +[build] +template = "cargo" diff --git a/recipes/zerod/recipe.toml b/recipes/zerod/recipe.toml new file mode 100644 index 00000000..4606caf4 --- /dev/null +++ b/recipes/zerod/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/zerod.git" + +[build] +template = "cargo" diff --git a/src/bin/cook.rs b/src/bin/cook.rs index db2d2bde..30357942 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -345,6 +345,7 @@ export CARGO_TARGET_DIR="${COOKBOOK_BUILD}/target" # This adds the sysroot includes for most C compilation #TODO: check paths for spaces! export CFLAGS="-I${COOKBOOK_SYSROOT}/include" +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include" # This adds the sysroot libraries and compiles binaries statically for most C compilation #TODO: check paths for spaces! From 5b47f0e63e4db728035654439b0fbd999a71e493 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 21 May 2020 12:50:39 -0600 Subject: [PATCH 0781/3180] Hack repo to allow building with rust cook --- repo.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/repo.sh b/repo.sh index 5084f866..a2792d0b 100755 --- a/repo.sh +++ b/repo.sh @@ -22,6 +22,12 @@ fi for recipe in $recipes do + if [ -e "recipes/$recipe/recipe.toml" ] + then + cargo run --release -- "$recipe" + continue + fi + if [ ! -d "recipes/$recipe/source/" ] then echo -e "\033[01;38;5;155mrepo - fetching $recipe\033[0m" >&2 From 563398f5c129317b7bee6dab7580ffe2044afeb8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 21 May 2020 12:50:53 -0600 Subject: [PATCH 0782/3180] Add more recipes --- recipes/exampled/recipe.toml | 5 +++++ recipes/installer/recipe.toml | 5 +++++ recipes/ipcd/recipe.toml | 5 +++++ 3 files changed, 15 insertions(+) create mode 100644 recipes/exampled/recipe.toml create mode 100644 recipes/installer/recipe.toml create mode 100644 recipes/ipcd/recipe.toml diff --git a/recipes/exampled/recipe.toml b/recipes/exampled/recipe.toml new file mode 100644 index 00000000..e35bc734 --- /dev/null +++ b/recipes/exampled/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/exampled.git" + +[build] +template = "cargo" diff --git a/recipes/installer/recipe.toml b/recipes/installer/recipe.toml new file mode 100644 index 00000000..02353821 --- /dev/null +++ b/recipes/installer/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/installer.git" + +[build] +template = "cargo" diff --git a/recipes/ipcd/recipe.toml b/recipes/ipcd/recipe.toml new file mode 100644 index 00000000..308574d2 --- /dev/null +++ b/recipes/ipcd/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/ipcd.git" + +[build] +template = "cargo" From 11777aef25c70ecd550d7c18eb70b479fbc6aad1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 21 May 2020 13:49:41 -0600 Subject: [PATCH 0783/3180] Remove patches --- .cargo/config | 15 ----------- .gitmodules | 62 +++---------------------------------------- patches/jobserver-rs | 1 - patches/mio | 1 - patches/net2-rs | 1 - patches/nix | 1 - patches/pb | 1 - patches/platform-info | 1 - patches/ring | 1 - patches/tar-rs | 1 - patches/termsize | 1 - patches/time | 1 - patches/tokio | 1 - 13 files changed, 4 insertions(+), 84 deletions(-) delete mode 160000 patches/jobserver-rs delete mode 160000 patches/mio delete mode 160000 patches/net2-rs delete mode 160000 patches/nix delete mode 160000 patches/pb delete mode 160000 patches/platform-info delete mode 160000 patches/ring delete mode 160000 patches/tar-rs delete mode 160000 patches/termsize delete mode 160000 patches/time delete mode 160000 patches/tokio diff --git a/.cargo/config b/.cargo/config index e2c90b5f..69c4db47 100644 --- a/.cargo/config +++ b/.cargo/config @@ -1,18 +1,3 @@ -paths = [ - "patches/jobserver-rs", - "patches/mio", - "patches/nix", - "patches/tokio/tokio", - "patches/tokio/tokio-reactor", - "patches/net2-rs", - "patches/pb", - "patches/platform-info", - "patches/ring", - "patches/tar-rs", - "patches/termsize", - "patches/time", -] - [target.aarch64-unknown-redox] linker = "aarch64-unknown-redox-gcc" rustflags = [] diff --git a/.gitmodules b/.gitmodules index cc1ec1f5..849ef077 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,66 +1,12 @@ [submodule "docgen"] path = docgen url = https://gitlab.redox-os.org/redox-os/docgen.git -[submodule "pkgutils"] - path = pkgutils - url = https://gitlab.redox-os.org/redox-os/pkgutils.git branch = master -[submodule "patches/atty"] - path = patches/atty - url = https://gitlab.redox-os.org/redox-os/atty.git - branch = redox-unix -[submodule "patches/pb"] - path = patches/pb - url = https://gitlab.redox-os.org/redox-os/pb.git - branch = redox-unix -[submodule "patches/net2-rs"] - path = patches/net2-rs - url = https://gitlab.redox-os.org/redox-os/net2-rs.git - branch = redox-unix -[submodule "patches/ring"] - path = patches/ring - url = https://gitlab.redox-os.org/redox-os/ring.git - branch = redox-unix-0.13.5 -[submodule "patches/time"] - path = patches/time - url = https://gitlab.redox-os.org/redox-os/time.git - branch = redox-unix -[submodule "patches/termsize"] - path = patches/termsize - url = https://gitlab.redox-os.org/redox-os/termsize.git - branch = redox-unix -[submodule "patches/platform-info"] - path = patches/platform-info - url = https://gitlab.redox-os.org/redox-os/platform-info.git - branch = redox-unix -[submodule "patches/tar-rs"] - path = patches/tar-rs - url = https://gitlab.redox-os.org/redox-os/tar-rs.git - branch = redox-unix -[submodule "patches/liblibc"] - path = patches/liblibc - url = https://gitlab.redox-os.org/redox-os/liblibc.git - branch = redox-unix -[submodule "patches/mio"] - path = patches/mio - url = https://gitlab.redox-os.org/redox-os/mio.git - branch = redox-unix -[submodule "patches/tokio"] - path = patches/tokio - url = https://gitlab.redox-os.org/redox-os/tokio.git -[submodule "patches/libc"] - path = patches/libc - url = https://github.com/AdminXVII/libc - branch = extra-traits-redox -[submodule "patches/nix"] - path = patches/nix - url = https://github.com/AdminXVII/nix - branch = add-redox-support -[submodule "patches/jobserver-rs"] - path = patches/jobserver-rs - url = https://gitlab.redox-os.org/redox-os/jobserver-rs.git - branch = redox [submodule "pkgar"] path = pkgar url = https://gitlab.redox-os.org/redox-os/pkgar.git branch = master +[submodule "pkgutils"] + path = pkgutils + url = https://gitlab.redox-os.org/redox-os/pkgutils.git + branch = master diff --git a/patches/jobserver-rs b/patches/jobserver-rs deleted file mode 160000 index 54508e47..00000000 --- a/patches/jobserver-rs +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 54508e47f2349cbd0cef9fcf6e6f0cd4bd12d91d diff --git a/patches/mio b/patches/mio deleted file mode 160000 index c9a70849..00000000 --- a/patches/mio +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c9a70849ced97387e2607c9c466d23b130ec8901 diff --git a/patches/net2-rs b/patches/net2-rs deleted file mode 160000 index be7b8559..00000000 --- a/patches/net2-rs +++ /dev/null @@ -1 +0,0 @@ -Subproject commit be7b855982e63770753a81ffc4bedf66d7f66506 diff --git a/patches/nix b/patches/nix deleted file mode 160000 index 64b3ea0f..00000000 --- a/patches/nix +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 64b3ea0fb108b9933766fd7e049e2c320636b972 diff --git a/patches/pb b/patches/pb deleted file mode 160000 index 743300cf..00000000 --- a/patches/pb +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 743300cf9566f77962a5b550db1ba27cc922b6a5 diff --git a/patches/platform-info b/patches/platform-info deleted file mode 160000 index ff3e9789..00000000 --- a/patches/platform-info +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ff3e9789a7478d614a9e26d7016fe893ffea7713 diff --git a/patches/ring b/patches/ring deleted file mode 160000 index e10e9b89..00000000 --- a/patches/ring +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e10e9b891589b1d4bf5a5e83e999000734f04d68 diff --git a/patches/tar-rs b/patches/tar-rs deleted file mode 160000 index 5e19d818..00000000 --- a/patches/tar-rs +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5e19d818c3e67fe6215b8c244ec86d445ab4d515 diff --git a/patches/termsize b/patches/termsize deleted file mode 160000 index a63940dc..00000000 --- a/patches/termsize +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a63940dc8608bb1a8c27a06302bd8674fd25f874 diff --git a/patches/time b/patches/time deleted file mode 160000 index 0c24c8c1..00000000 --- a/patches/time +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0c24c8c1483e17b4c7974c68dbb29d609d9c699b diff --git a/patches/tokio b/patches/tokio deleted file mode 160000 index 75f296e4..00000000 --- a/patches/tokio +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 75f296e4b48f5d2966f2bd1cc6b04111a58bd4fd From 47d04ef7ac51ddcf24334547b0d3475b32e08208 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 21 May 2020 13:50:19 -0600 Subject: [PATCH 0784/3180] Improve speed of repo.sh --- repo.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/repo.sh b/repo.sh index a2792d0b..b9e3e6b4 100755 --- a/repo.sh +++ b/repo.sh @@ -20,11 +20,13 @@ then recipes="$(ls -1 recipes)" fi +cargo build --release + for recipe in $recipes do if [ -e "recipes/$recipe/recipe.toml" ] then - cargo run --release -- "$recipe" + target/release/cook "$recipe" continue fi From 00e62b35f8e10bfdee3643b9fc2211beaa4f5bd8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 21 May 2020 14:24:58 -0600 Subject: [PATCH 0785/3180] Add findutils recipe --- recipes/findutils/recipe.toml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 recipes/findutils/recipe.toml diff --git a/recipes/findutils/recipe.toml b/recipes/findutils/recipe.toml new file mode 100644 index 00000000..65ec7db4 --- /dev/null +++ b/recipes/findutils/recipe.toml @@ -0,0 +1,11 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/findutils.git" + +[build] +template = "custom" +script = """ +COOKBOOK_CARGO_FLAGS+=( + --bin find +) +cookbook_cargo +""" From bc44cb9ef560f9ed0ee06f7c1ced4246127fca41 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 21 May 2020 15:09:30 -0600 Subject: [PATCH 0786/3180] Add strace recipe --- recipes/strace/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/strace/recipe.toml diff --git a/recipes/strace/recipe.toml b/recipes/strace/recipe.toml new file mode 100644 index 00000000..e7c61004 --- /dev/null +++ b/recipes/strace/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/strace-redox.git" + +[build] +template = "cargo" From 09e1d9848d35d44b05768f8563f5b3eee2c65eb1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 21 May 2020 15:09:36 -0600 Subject: [PATCH 0787/3180] Update dependencies --- Cargo.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 72a25cf9..a2ff9778 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -423,7 +423,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.23 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -457,7 +457,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "syn" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", @@ -602,7 +602,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum sodalite 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "67643084c740297bac275b1d97901ec27ca5984be4e8f75d86a33498e0e3e61c" "checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" "checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" -"checksum syn 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)" = "1425de3c33b0941002740a420b1a906a350b88d08b82b2c8a01035a3f9447bac" +"checksum syn 1.0.23 (registry+https://github.com/rust-lang/crates.io-index)" = "95b5f192649e48a5302a13f2feb224df883b98933222369e4b3b0fe2a5447269" "checksum termion 1.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c22cec9d8978d906be5ac94bceb5a010d885c626c4c8855721a4dbd20e3ac905" "checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" "checksum time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" From f2298c4de341b8f80fd55849091580d20d58c054 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 21 May 2020 15:14:58 -0600 Subject: [PATCH 0788/3180] Add netdb recipe --- recipes/netdb/recipe.toml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 recipes/netdb/recipe.toml diff --git a/recipes/netdb/recipe.toml b/recipes/netdb/recipe.toml new file mode 100644 index 00000000..efff10a2 --- /dev/null +++ b/recipes/netdb/recipe.toml @@ -0,0 +1,8 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/netdb.git" + +[build] +template = "custom" +script = """ +cp -rv "${COOKBOOK_SOURCE}/"* "${COOKBOOK_STAGE}" +""" From 98521e6f69e7aaa6e2e405d6a8346f4889f43296 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 21 May 2020 15:31:17 -0600 Subject: [PATCH 0789/3180] Add ca-certificates and orbdata recipe --- recipes/ca-certificates/make-ca.sh | 732 ---------------------------- recipes/ca-certificates/recipe.toml | 13 + recipes/orbdata/recipe.toml | 9 + 3 files changed, 22 insertions(+), 732 deletions(-) delete mode 100644 recipes/ca-certificates/make-ca.sh create mode 100644 recipes/ca-certificates/recipe.toml create mode 100644 recipes/orbdata/recipe.toml diff --git a/recipes/ca-certificates/make-ca.sh b/recipes/ca-certificates/make-ca.sh deleted file mode 100644 index 5150fc0c..00000000 --- a/recipes/ca-certificates/make-ca.sh +++ /dev/null @@ -1,732 +0,0 @@ -#!/usr/bin/env bash -# Begin /usr/sbin/make-ca.sh -# -# Script to create OpenSSL certs directory, GnuTLS certificate bundle, NSS -# shared DB, and Java cacerts from upstream certdata.txt and local sources -# -# Authors: DJ Lucas -# Bruce Dubbs -# -# Changes: -# -# 20170425 - Use p11-kit format anchors -# - Add CKA_NSS_MOZILLA_CA_POLICY attribute for p11-kit anchors -# - Add clientAuth OpenSSL attribute and (currently unused) NSS -# CKA_TRUST_CLIENT_AUTH -# 20170119 - Show trust bits on local certs -# - Add version output for help2man -# 20161210 - Add note about --force swich when same version -# 20161126 - Add -D/--destdir switch -# 20161124 - Add -f/--force switch to bypass version check -# - Add multiple switches to allow for alternate localtions -# - Add help text -# 20161118 - Drop make-cert.pl script -# - Add support for Java and NSSDB - -# Set defaults -VERSION="20170425" -CERTDATA="certdata.txt" -PKIDIR="/etc/pki" -SSLDIR="/etc/ssl" -CERTUTIL="certutil" -KEYTOOL="keytool" -OPENSSL="openssl" -ANCHORDIR="${PKIDIR}/anchors" -CABUNDLE="${SSLDIR}/ca-bundle.crt" -CERTDIR="${SSLDIR}/certs" -KEYSTORE="${SSLDIR}/java/cacerts" -NSSDB="${PKIDIR}/nssdb" -LOCALDIR="${SSLDIR}/local" -DESTDIR="" - -# Some data in the certs have UTF-8 characters -export LANG=en_US.utf8 - -TEMPDIR=$(mktemp -d) -WORKDIR="${TEMPDIR}/work" -WITH_NSS=1 -WITH_JAVA=1 -FORCE=0 - -function get_args(){ - while test -n "${1}" ; do - case "${1}" in - -C | --certdata) - check_arg $1 $2 - CERTDATA="${2}" - shift 2 - ;; - -D | --destdir) - check_arg $1 $2 - DESTDIR="${2}" - shift 2 - ;; - -P | --pkidir) - check_arg $1 $2 - PKIDIR="${2}" - ANCHORDIR="${PKIDIR}/anchors" - NSSDB="${PKIDIR}/nssdb" - echo "${@}" | grep -e "-a " -e "--anchordir" \ - -e "-n " -e "--nssdb" > /dev/null - if test "${?}" == "0"; then - echo "Error! ${1} cannot be used with the -a/--anchordir or -n/--nssdb switches." - echo "" - exit 3 - fi - shift 2 - ;; - -S | --ssldir) - check_arg $1 $2 - SSLDIR="${2}" - CABUNDLE="${SSLDIR}/ca-bundle.crt" - CERTDIR="${SSLDIR}/certs" - KEYSTORE="${SSLDIR}/java/cacerts" - LOCALDIR="${SSLDIR}/local" - echo "${@}" | grep -e "-c " -e "--cafile" \ - -e "-d " -e "--cadir" \ - -e "-j " -e "--javacerts" > /dev/null - if test "${?}" == "0"; then - echo "Error! ${1} cannot be used with the -c/--cafile, -d/--cadir, or" - echo "-j/--javacerts switches." - echo "" - exit 3 - fi - - shift 2 - ;; - -a | --anchordir) - check_arg $1 $2 - ANCHORDIR="${2}" - echo "${@}" | grep -e "-P " -e "--pkidir" > /dev/null - if test "${?}" == "0"; then - echo "Error! ${1} cannot be used with the -P/--pkidir switch." - echo "" - exit 3 - fi - shift 2 - ;; - -c | --cafile) - check_arg $1 $2 - CABUNDLE="${2}" - echo "${@}" | grep -e "-S " -e "--ssldir" > /dev/null - if test "${?}" == "0"; then - echo "Error! ${1} cannot be used with the -S/--ssldir switch." - echo "" - exit 3 - fi - shift 2 - ;; - -d | --cadir) - check_arg $1 $2 - CADIR="${2}" - if test "${?}" == "0"; then - echo "Error! ${1} cannot be used with the -S/--ssldir switch." - echo "" - exit 3 - fi - shift 2 - ;; - -j | --javacerts) - check_arg $1 $2 - KEYSTORE="${2}" - if test "${?}" == "0"; then - echo "Error! ${1} cannot be used with the -S/--ssldir switch." - echo "" - exit 3 - fi - shift 2 - ;; - -l | --localdir) - check_arg $1 $2 - LOCALDIR="${2}" - shift 2 - ;; - -n | --nssdb) - check_arg $1 $2 - NSSDB="${2}" - echo "${@}" | grep -e "-P " -e "--pkidir" > /dev/null - if test "${?}" == "0"; then - echo "Error! ${1} cannot be used with the -P/--pkidir switch." - echo "" - exit 3 - fi - shift 2 - ;; - -k | --keytool) - check_arg $1 $2 - KEYTOOL="${2}" - shift 2 - ;; - -s | --openssl) - check_arg $1 $2 - OPENSSL="${2}" - shift 2 - ;; - -t | --certutil) - check_arg $1 $2 - CERTUTIL="${2}" - shift 2 - ;; - -f | --force) - FORCE="1" - shift 1 - ;; - -h | --help) - showhelp - exit 0 - ;; - -v | --version) - echo -e "$(basename ${0}) ${VERSION}\n" - exit 0 - ;; - *) - showhelp - exit 1 - ;; - esac - done -} - -function check_arg(){ - echo "${2}" | grep -v "^-" > /dev/null - if [ -z "$?" -o ! -n "$2" ]; then - echo "Error: $1 requires a valid argument." - exit 1 - fi -} - -function showhelp(){ - echo "" - echo "`basename ${0}` converts certdata.txt (provided by the Mozilla Foundation)" - echo "into a complete PKI distribution for use with LFS or like distributions." - echo "" - echo " -C --certdata The certdata.txt file (provided by Mozilla)" - echo " Default: ./certdata.txt" - echo "" - echo " -D --destdir Change the output directory and use relative" - echo " paths for all other values." - echo " Default: unset" - echo "" - echo " -P --pkidir The output PKI directory - Cannot be used with" - echo " the -a/--anchordir or -n/--nssdb switches" - echo " Default: /etc/pki" - echo "" - echo " -S --ssldir The output SSL root direcotry - Cannot be used" - echo " with the -c/--cafile, -d/--cadir, or" - echo " -j/--javacerts switches" - echo " Defualt: /etc/ssl" - echo "" - echo " -a --anchordir The output directory for OpenSSL trusted" - echo " CA certificates used as trust anchors." - echo " Default: \$PKIDIR/anchors" - echo "" - echo " -c --cafile The output filename for the PEM formated bundle" - echo " Default: \$SSLDIR/ca-bundle.crt" - echo "" - echo " -d --cadir The output directory for the OpenSSL trusted" - echo " CA certificates" - echo " Deault: \$SSLDIR/certs/" - echo "" - echo " -j --javacerts The output path for the Java cacerts file" - echo " Default: \$SSLDIR/java/cacerts" - echo "" - echo " -l --localdir The path to a local set of OpenSSL trusted" - echo " certificates to include in the output" - echo " Default: \$SSLDIR/local" - echo "" - echo " -n --nssdb The output path for the shared NSS DB" - echo " Default: \$PKIDIR/nssdb" - echo "" - echo " -k --keytool The path to the java keytool utility" - echo "" - echo " -s --openssl The path to the openssl utility" - echo "" - echo " -t --certutil The path the certutil utility" - echo "" - echo " -f --force Force run, even if source is not newer" - echo "" - echo " -h --help Show this help message and exit" - echo "" - echo " -v --version Show version information and exit" - echo "" - echo "Example: `basename ${0}` -f -C ~/certdata.txt" - echo "" -} - -# Convert CKA_TRUST values to trust flags for certutil -function convert_trust(){ - case $1 in - CKT_NSS_TRUSTED_DELEGATOR) - echo "C" - ;; - CKT_NSS_NOT_TRUSTED) - echo "p" - ;; - CKT_NSS_MUST_VERIFY_TRUST) - echo "" - ;; - esac -} - -function convert_trust_arg(){ - case $1 in - C) - case $2 in - sa) - echo "-addtrust serverAuth" - ;; - sm) - echo "-addtrust emailProtection" - ;; - cs) - echo "-addtrust codeSigning" - ;; - ca) - echo "-addtrust clientAuth" - ;; - esac - ;; - p) - case $2 in - sa) - echo "-addreject serverAuth" - ;; - sm) - echo "-addreject emailProtection" - ;; - cs) - echo "-addreject codeSigning" - ;; - ca) - echo "-addreject clientAuth" - ;; - esac - ;; - *) - echo "" - ;; - esac -} - -# Define p11-kit ext value constants (see p11-kit API documentation) -get-p11-val() { - case $1 in - p11sasmcs) - p11value="0%2a%06%03U%1d%25%01%01%ff%04 0%1e%06%08%2b%06%01%05%05%07%03%04%06%08%2b%06%01%05%05%07%03%01%06%08%2b%06%01%05%05%07%03%03" - ;; - - p11sasm) - p11value="0 %06%03U%1d%25%01%01%ff%04%160%14%06%08%2b%06%01%05%05%07%03%04%06%08%2b%06%01%05%05%07%03%01" - ;; - - p11sacs) - p11value="0 %06%03U%1d%25%01%01%ff%04%160%14%06%08%2b%06%01%05%05%07%03%01%06%08%2b%06%01%05%05%07%03%03" - ;; - - p11sa) - p11value="0%16%06%03U%1d%25%01%01%ff%04%0c0%0a%06%08%2b%06%01%05%05%07%03%01" - ;; - - p11smcs) - p11value="0 %06%03U%1d%25%01%01%ff%04%160%14%06%08%2b%06%01%05%05%07%03%04%06%08%2b%06%01%05%05%07%03%03" - ;; - - p11sm) - p11value="0%16%06%03U%1d%25%01%01%ff%04%0c0%0a%06%08%2b%06%01%05%05%07%03%04" - ;; - - p11cs) - p11value="0%16%06%03U%1d%25%01%01%ff%04%0c0%0a%06%08%2b%06%01%05%05%07%03%03" - ;; - - p11) - p11value="0%18%06%03U%1d%25%01%01%ff%04%0e0%0c%06%0a%2b%06%01%04%01%99w%06%0a%10" - ;; - esac -} - -# Process command line arguments -get_args $@ - -if test ! -r "${CERTDATA}"; then - echo "${CERTDATA} was not found. The certdata.txt file must be in the local" - echo "directory, or speficied with the --certdata switch." - exit 1 -fi - -test -f "${CERTUTIL}" || WITH_NSS=0 -test -f "${KEYTOOL}" || WITH_JAVA=0 - -VERSION=$(grep CVS_ID "${CERTDATA}" | cut -d " " -f 8) - -if test "${VERSION}x" == "x"; then - echo "WARNING! ${CERTDATA} has no 'Revision' in CVS_ID" - echo "Will run conversion unconditionally." - sleep 2 - VERSION="$(date -u +%Y%m%d-%H%M)" -else - if test "${FORCE}" == "1"; then - echo "Output forced. Will run conversion unconditionally." - sleep 2 - elif test "${DESTDIR}x" == "x"; then - test -f "${CABUNDLE}" && - OLDVERSION=$(grep "^VERSION:" "${CABUNDLE}" | cut -d ":" -f 2) - fi -fi - -if test "${OLDVERSION}x" == "${VERSION}x"; then - echo "No update required! Use --force to update anyway." - exit 0 -fi - -mkdir -p "${TEMPDIR}"/{certs,ssl/{certs,java},pki/{nssdb,anchors},work} -cp "${CERTDATA}" "${WORKDIR}/certdata.txt" -pushd "${WORKDIR}" > /dev/null - -if test "${WITH_NSS}" == "1"; then - # Create a blank NSS DB - "${CERTUTIL}" -N --empty-password -d "sql:${TEMPDIR}/pki/nssdb" -fi - -# Get a list of starting lines for each cert -CERTBEGINLIST=`grep -n "^# Certificate" "${WORKDIR}/certdata.txt" | \ - cut -d ":" -f1` - -# Dump individual certs to temp file -for certbegin in ${CERTBEGINLIST}; do - awk "NR==$certbegin,/^CKA_TRUST_STEP_UP_APPROVED/" "${WORKDIR}/certdata.txt" \ - > "${TEMPDIR}/certs/${certbegin}.tmp" -done - -unset CERTBEGINLIST certbegin - -for tempfile in ${TEMPDIR}/certs/*.tmp; do - # Get a name for the cert - certname="$(grep "^# Certificate" "${tempfile}" | cut -d '"' -f 2)" - - # Determine certificate trust values for SSL/TLS, S/MIME, and Code Signing - satrust="$(convert_trust `grep '^CKA_TRUST_SERVER_AUTH' ${tempfile} | \ - cut -d " " -f 3`)" - smtrust="$(convert_trust `grep '^CKA_TRUST_EMAIL_PROTECTION' ${tempfile} | \ - cut -d " " -f 3`)" - cstrust="$(convert_trust `grep '^CKA_TRUST_CODE_SIGNING' ${tempfile} | \ - cut -d " " -f 3`)" - # Not currently included in NSS certdata.txt - #catrust="$(convert_trust `grep '^CKA_TRUST_CLIENT_AUTH' ${tempfile} | \ - # cut -d " " -f 3`)" - - # Get args for OpenSSL trust settings - saarg="$(convert_trust_arg "${satrust}" sa)" - smarg="$(convert_trust_arg "${smtrust}" sm)" - csarg="$(convert_trust_arg "${cstrust}" cs)" - # Not currently included in NSS certdata.txt - #caarg="$(convert_trust_arg "${catrust}" ca)" - - # Convert to a PEM formated certificate - printf $(awk '/^CKA_VALUE/{flag=1;next}/^END/{flag=0}flag{printf $0}' \ - "${tempfile}") | "${OPENSSL}" x509 -text -inform DER -fingerprint \ - > tempfile.crt - - # Get individual values for certificates - certkey="$(${OPENSSL} x509 -in tempfile.crt -noout -pubkey)" - certcer="$(${OPENSSL} x509 -in tempfile.crt)" - certtxt="$(${OPENSSL} x509 -in tempfile.crt -noout -text)" - - # Get p11-kit label, oid, and values - p11label="$(grep -m1 "Issuer" ${tempfile} | grep -o CN=.*$ | \ - cut -d ',' -f 1 | sed 's@CN=@@')" - - # if distrusted at all, x-distrusted - if test "${satrust}" == "p" -o "${smtrust}" == "p" -o "${cstrust}" == "p" - then - # if any distrusted, x-distrusted - p11trust="x-distrusted: true" - p11oid="1.3.6.1.4.1.3319.6.10.1" - p11value="0.%06%0a%2b%06%01%04%01%99w%06%0a%01%04 0%1e%06%08%2b%06%01%05%05%07%03%04%06%08%2b%06%01%05%05%07%03%01%06%08%2b%06%01%05%05%07%03%03" - else - p11trust="trusted: true" - p11oid="2.5.29.37" - trustp11="p11" - if test "${satrust}" == "C"; then - trustp11="${trustp11}sa" - fi - if test "${smtrust}" == "C"; then - trustp11="${trustp11}sm" - fi - if test "${cstrust}" == "C"; then - trustp11="${trustp11}cs" - fi - get-p11-val "${trustp11}" - fi - - # Get a hash for the cert - keyhash=$("${OPENSSL}" x509 -noout -in tempfile.crt -hash) - - # Print information about cert - echo "Certificate: ${certname}" - echo "Keyhash: ${keyhash}" - - # Place certificate into trust anchors dir - anchorfile="${TEMPDIR}/pki/anchors/${keyhash}.pem" - echo "[p11-kit-object-v1]" >> "${anchorfile}" - echo "label: \"${p11label}\"" >> "${anchorfile}" - echo "class: x-certificate-extension" >> "${anchorfile}" - echo "object-id: ${p11oid}" >> "${anchorfile}" - echo "value: \"${p11value}\"" >> "${anchorfile}" - echo "modifiable: false" >> "${anchorfile}" - echo "${certkey}" >> "${anchorfile}" - echo "" >> "${anchorfile}" - echo "[p11-kit-object-v1]" >> "${anchorfile}" - echo "label: \"${p11label}\"" >> "${anchorfile}" - echo "${p11trust}" >> "${anchorfile}" - echo "nss-mozilla-ca-policy: true" >> "${anchorfile}" - echo "modifiable: false" >> "${anchorfile}" - echo "${certcer}" >> "${anchorfile}" - echo "${certtxt}" | sed 's@^@#@' >> "${anchorfile}" - echo "Added to p11-kit anchor directory with trust '${satrust},${smtrust},${cstrust}'." - - - # Import certificates trusted for SSL/TLS into the Java keystore and - # GnuTLS certificate bundle - if test "${satrust}x" == "Cx"; then - # Java keystore - if test "${WITH_JAVA}" == "1"; then - "${KEYTOOL}" -import -noprompt -alias "${certname}" \ - -keystore "${TEMPDIR}/ssl/java/cacerts" \ - -storepass 'changeit' -file tempfile.crt \ - 2>&1> /dev/null | \ - sed -e 's@Certificate was a@A@' -e 's@keystore@Java keystore.@' - fi - - # GnuTLS certificate bundle - cat tempfile.crt >> "${TEMPDIR}/ssl/ca-bundle.crt.tmp" - echo "Added to GnuTLS ceritificate bundle." - fi - - # Import certificate into the temporary certificate directory with - # trust arguments - "${OPENSSL}" x509 -in tempfile.crt -text -fingerprint \ - -setalias "${certname}" ${saarg} ${smarg} ${csarg} \ - > "${TEMPDIR}/ssl/certs/${keyhash}.pem" - echo "Added to OpenSSL certificate directory with trust '${satrust},${smtrust},${cstrust}'." - - # Import all certificates with trust args to the temporary NSS DB - if test "${WITH_NSS}" == "1"; then - "${CERTUTIL}" -d "sql:${TEMPDIR}/pki/nssdb" -A \ - -t "${satrust},${smtrust},${cstrust}" \ - -n "${certname}" -i tempfile.crt - echo "Added to NSS shared DB with trust '${satrust},${smtrust},${cstrust}'." - fi - - # Clean up the directory and environment as we go - rm -f tempfile.crt - unset keyhash subject certname - unset satrust smtrust cstrust catrust sarg smarg csarg caarg - unset p11trust p11oid p11value trustp11 certkey certcer certtxt - echo -e "\n" -done -unset tempfile - -# Sanity check -count=$(ls "${TEMPDIR}"/ssl/certs/*.pem | wc -l) -# Historically there have been between 152 and 165 certs -# A minimum of 140 should be safe for a rudimentry sanity check -if test "${count}" -lt "140" ; then - echo "Error! Only ${count} certificates were generated!" - echo "Exiting without update!" - echo "" - echo "${TEMPDIR} is the temporary working directory" - exit 2 -fi -unset count - -# Generate the bundle -bundlefile=`basename "${CABUNDLE}"` -bundledir=`echo "${CABUNDLE}" | sed "s@/${bundlefile}@@"` -install -vdm755 "${DESTDIR}${bundledir}" 2>&1>/dev/null -test -f "${DESTDIR}${CABUNDLE}" && mv "${DESTDIR}${CABUNDLE}" \ - "${DESTDIR}${CABUNDLE}.old" -echo "VERSION:${VERSION}" > "${DESTDIR}${CABUNDLE}" -cat "${TEMPDIR}/ssl/ca-bundle.crt.tmp" >> "${DESTDIR}${CABUNDLE}" && -rm -f "${DESTDIR}${CABUNDLE}.old" -unset bundlefile bundledir - -# Install Java Cacerts -if test "${WITH_JAVA}" == "1"; then - javafile=`basename "${KEYSTORE}"` - javadir=`echo "${KEYSTORE}" | sed "s@/${javafile}@@"` - install -vdm755 "${DESTDIR}${javadir}" 2>&1>/dev/null - test -f "${DESTDIR}${KEYSTORE}" && mv "${DESTDIR}${KEYSTORE}" \ - "${DESTDIR}${KEYSTORE}.old" - install -m644 "${TEMPDIR}/ssl/java/cacerts" "${DESTDIR}${KEYSTORE}" && - rm -f "${DESTDIR}${KEYSTORE}.old" - unset javafile javadir -fi - -# Install NSS Shared DB -if test "${WITH_NSS}" == "1"; then - sed -e "s@${TEMPDIR}/pki/nssdb@${NSSDB}@" \ - -e 's/library=/library=libnsssysinit.so/' \ - -e 's/Flags=internal/Flags=internal,moduleDBOnly/' \ - -i "${TEMPDIR}/pki/nssdb/pkcs11.txt" - test -d "${DESTDIR}${NSSDB}" && mv "${DESTDIR}${NSSDB}" \ - "${DESTDIR}${NSSDB}.old" - install -dm755 "${DESTDIR}${NSSDB}" 2>&1>/dev/null - install -m644 "${TEMPDIR}"/pki/nssdb/{cert9.db,key4.db,pkcs11.txt} \ - "${DESTDIR}${NSSDB}" && - rm -rf "${DESTDIR}${NSSDB}.old" -fi - -# Install anchors in $ANCHORDIR -test -d "${DESTDIR}${ANCHORDIR}" && mv "${DESTDIR}${ANCHORDIR}"\ - "${DESTDIR}${ANCHORDIR}.old" -install -dm755 "${DESTDIR}${ANCHORDIR}" 2>&1>/dev/null -install -m644 "${TEMPDIR}"/pki/anchors/*.pem "${DESTDIR}${ANCHORDIR}" && -rm -rf "${DESTDIR}${ANCHORDIR}.old" - -# Install certificates in $CERTDIR -test -d "${DESTDIR}${CERTDIR}" && mv "${DESTDIR}${CERTDIR}" \ - "${DESTDIR}${CERTDIR}.old" -install -dm755 "${DESTDIR}${CERTDIR}" 2>&1>/dev/null -install -m644 "${TEMPDIR}"/ssl/certs/*.pem "${DESTDIR}${CERTDIR}" && -rm -rf "${DESTDIR}${CERTDIR}.old" - -# Import any certs in $LOCALDIR -# Don't do any checking, just trust the admin -if test -d "${LOCALDIR}"; then - for cert in `find "${LOCALDIR}" -name "*.pem"`; do - # Get some information about the certificate - keyhash=$("${OPENSSL}" x509 -noout -in "${cert}" -hash) - subject=$("${OPENSSL}" x509 -noout -in "${cert}" -subject) - count=1 - while test "${count}" -lt 10; do - echo "${subject}" | cut -d "/" -f "${count}" | grep "CN=" >/dev/null \ - && break - let count++ - done - certname=$(echo "${subject}" | cut -d "/" -f "${count}" | sed 's@CN=@@') - - echo "Certificate: ${certname}" - echo "Keyhash: ${keyhash}" - - # Get trust information - trustlist=$("${OPENSSL}" x509 -in "${cert}" -text -trustout | \ - grep -A1 "Trusted Uses") - satrust="" - smtrust="" - cstrust="" - catrust="" - satrust=$(echo "${trustlist}" | \ - grep "TLS Web Server" 2>&1> /dev/null && echo "C") - smtrust=$(echo "${trustlist}" | \ - grep "E-mail Protection" 2>&1 >/dev/null && echo "C") - cstrust=$(echo "${trustlist}" | \ - grep "Code Signing" 2>&1 >/dev/null && echo "C") - catrust=$(echo "${trustlist}" | \ - grep "Client Auth" 2>&1 >/dev/null && echo "C") - - # Get reject information - rejectlist=$("${OPENSSL}" x509 -in "${cert}" -text -trustout | \ - grep -A1 "Rejected Uses") - if test "${satrust}" == ""; then satrust=$(echo "${rejectlist}" | \ - grep "TLS Web Server" 2>&1> /dev/null && echo "p"); fi - if test "${smtrust}" == ""; then smtrust=$(echo "${rejectlist}" | \ - grep "E-mail Protection" 2>&1> /dev/null && echo "p"); fi - if test "${cstrust}" == ""; then cstrust=$(echo "${rejectlist}" | \ - grep "Code Signing" 2>&1> /dev/null && echo "p"); fi - if test "${catrust}" == ""; then catrust=$(echo "${rejectlist}" | \ - grep "Client Auth" 2>&1> /dev/null && echo "p"); fi - - - # Place certificate into trust anchors dir - p11label="$(grep -m1 "Issuer" ${cert} | grep -o CN=.*$ | \ - cut -d ',' -f 1 | sed 's@CN=@@')" - - # if distrusted at all, x-distrusted - if test "${satrust}" == "p" -o "${smtrust}" == "p" -o "${cstrust}" == "p" - then - # if any distrusted, x-distrusted - p11trust="x-distrusted: true" - p11oid="1.3.6.1.4.1.3319.6.10.1" - p11value="0.%06%0a%2b%06%01%04%01%99w%06%0a%01%04 0%1e%06%08%2b%06%01%05%05%07%03%04%06%08%2b%06%01%05%05%07%03%01%06%08%2b%06%01%05%05%07%03%03" - else - p11trust="trusted: true" - p11oid="2.5.29.37" - trustp11="p11" - if test "${satrust}" == "C"; then - trustp11="${trustp11}sa" - fi - if test "${smtrust}" == "C"; then - trustp11="${trustp11}sm" - fi - if test "${cstrust}" == "C"; then - trustp11="${trustp11}cs" - fi - get-p11-val "${trustp11}" - fi - - anchorfile="${DESTDIR}${ANCHORDIR}/${keyhash}.pem" - - echo "[p11-kit-object-v1]" >> "${anchorfile}" - echo "label: \"${p11label}\"" >> "${anchorfile}" - echo "class: x-certificate-extension" >> "${anchorfile}" - echo "object-id: ${p11oid}" >> "${anchorfile}" - echo "value: \"${p11value}\"" >> "${anchorfile}" - echo "modifiable: false" >> "${anchorfile}" - echo "${certkey}" >> "${anchorfile}" - echo "" >> "${anchorfile}" - echo "[p11-kit-object-v1]" >> "${anchorfile}" - echo "label: \"${p11label}\"" >> "${anchorfile}" - echo "${p11trust}" >> "${anchorfile}" - echo "modifiable: false" >> "${anchorfile}" - echo "${certcer}" >> "${anchorfile}" - echo "${certtxt}" | sed 's@^@#@' >> "${anchorfile}" - echo "Added to p11-kit anchor directory with trust '${satrust},${smtrust},${cstrust}'." - - # Install in Java keystore - if test "${WITH_JAVA}" == "1" -a "${satrust}x" == "Cx"; then - "${KEYTOOL}" -import -noprompt -alias "${certname}" \ - -keystore "${DESTDIR}${KEYSTORE}" \ - -storepass 'changeit' -file "${cert}" 2>&1> /dev/null | \ - sed -e 's@Certificate was a@A@' -e 's@keystore@Java keystore.@' - fi - - # Append to the bundle - source should have trust info, process with - # openssl x509 to strip - if test "${satrust}x" == "Cx"; then - "${OPENSSL}" x509 -in "${cert}" -text -fingerprint \ - >> "${DESTDIR}${CABUNDLE}" - echo "Added to GnuTLS certificate bundle." - fi - - # Install into OpenSSL certificate store - "${OPENSSL}" x509 -in "${cert}" -text -fingerprint \ - -setalias "${certname}" \ - >> "${DESTDIR}${CERTDIR}/${keyhash}.pem" - echo "Added to OpenSSL certificate directory with trust '${satrust},${smtrust},${cstrust},${catrust}'." - - # Add to Shared NSS DB - if test "${WITH_NSS}" == "1"; then - "${OPENSSL}" x509 -in "${cert}" -text -fingerprint | \ - "${CERTUTIL}" -d "sql:${DESTDIR}${NSSDB}" -A \ - -t "${satrust},${smtrust},${cstrust}" \ - -n "${certname}" - echo "Added to NSS shared DB with trust '${satrust},${smtrust},${cstrust}'." - fi - - unset keyhash subject count certname - unset trustlist rejectlist satrust smtrust cstrust catrust - unset p11trust p11oid p11value trustp11 certkey certcer certtxt - echo "" - - done - unset cert -fi - -c_rehash "${DESTDIR}${CERTDIR}" 2>&1>/dev/null -popd > /dev/null - -# Clean up the mess -rm -rf "${TEMPDIR}" - -# End /usr/sbin/make-ca.sh diff --git a/recipes/ca-certificates/recipe.toml b/recipes/ca-certificates/recipe.toml new file mode 100644 index 00000000..bff2aab4 --- /dev/null +++ b/recipes/ca-certificates/recipe.toml @@ -0,0 +1,13 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/ca-certificates.git" + +[build] +template = "custom" +script = """ +curl \ + -o certdata.txt \ + --time-cond certdata.txt \ + https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt +"${COOKBOOK_SOURCE}/make-ca.sh" -D "${COOKBOOK_BUILD}" +cp -rv "${COOKBOOK_BUILD}/etc/ssl/certs" "${COOKBOOK_STAGE}/ssl" +""" diff --git a/recipes/orbdata/recipe.toml b/recipes/orbdata/recipe.toml new file mode 100644 index 00000000..efe969ad --- /dev/null +++ b/recipes/orbdata/recipe.toml @@ -0,0 +1,9 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/orbdata.git" + +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}/ui" +cp -rv "${COOKBOOK_SOURCE}/"* "${COOKBOOK_STAGE}/ui" +""" From a8d2cc47e31719902ffe279236de7658c3ab66d6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 21 May 2020 15:36:59 -0600 Subject: [PATCH 0790/3180] Add orbterm recipe, fix missing repo dir --- recipes/orbterm/recipe.toml | 12 ++++++++++++ repo.sh | 2 ++ 2 files changed, 14 insertions(+) create mode 100644 recipes/orbterm/recipe.toml diff --git a/recipes/orbterm/recipe.toml b/recipes/orbterm/recipe.toml new file mode 100644 index 00000000..0caa665d --- /dev/null +++ b/recipes/orbterm/recipe.toml @@ -0,0 +1,12 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/orbterm.git" + +[build] +template = "custom" +script = """ +COOKBOOK_CARGO_FLAGS=( + --path "${COOKBOOK_SOURCE}" + --root "${COOKBOOK_STAGE}/ui" +) +cookbook_cargo +""" diff --git a/repo.sh b/repo.sh index b9e3e6b4..b661f0cd 100755 --- a/repo.sh +++ b/repo.sh @@ -82,6 +82,8 @@ do fi done +mkdir -p "$REPO" + for recipe in $recipes do if [ "recipes/$recipe/stage.tar.gz" -nt "$REPO/$recipe.tar.gz" ] From 88101b4a88a7264225d568bdf51e66c589028502 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 21 May 2020 15:41:10 -0600 Subject: [PATCH 0791/3180] Add orbital recipe --- recipes/orbital/recipe.toml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 recipes/orbital/recipe.toml diff --git a/recipes/orbital/recipe.toml b/recipes/orbital/recipe.toml new file mode 100644 index 00000000..0ae660fd --- /dev/null +++ b/recipes/orbital/recipe.toml @@ -0,0 +1,10 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/orbital.git" + +[build] +template = "cargo" + +[package] +dependencies = [ + "orbdata" +] From b62f5a2fc52dc006f2cb6957a66c0c3c1d6763ad Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 21 May 2020 15:44:28 -0600 Subject: [PATCH 0792/3180] Add orbutils recipe and add depends to orbterm recipe --- recipes/orbterm/recipe.toml | 5 +++++ recipes/orbutils/recipe.toml | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 recipes/orbutils/recipe.toml diff --git a/recipes/orbterm/recipe.toml b/recipes/orbterm/recipe.toml index 0caa665d..16c3cdfb 100644 --- a/recipes/orbterm/recipe.toml +++ b/recipes/orbterm/recipe.toml @@ -10,3 +10,8 @@ COOKBOOK_CARGO_FLAGS=( ) cookbook_cargo """ + +[package] +depends = [ + "orbital" +] diff --git a/recipes/orbutils/recipe.toml b/recipes/orbutils/recipe.toml new file mode 100644 index 00000000..135a66ec --- /dev/null +++ b/recipes/orbutils/recipe.toml @@ -0,0 +1,17 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/orbutils.git" + +[build] +template = "custom" +script = """ +COOKBOOK_CARGO_FLAGS=( + --path "${COOKBOOK_SOURCE}" + --root "${COOKBOOK_STAGE}/ui" +) +cookbook_cargo +""" + +[package] +depends = [ + "orbital" +] From be3b553cf429ac4de45788f63a7172b93c7f4d6c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 21 May 2020 15:49:07 -0600 Subject: [PATCH 0793/3180] Add userutils recipe --- recipes/userutils/recipe.toml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 recipes/userutils/recipe.toml diff --git a/recipes/userutils/recipe.toml b/recipes/userutils/recipe.toml new file mode 100644 index 00000000..ec1920b8 --- /dev/null +++ b/recipes/userutils/recipe.toml @@ -0,0 +1,13 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/userutils.git" + +[build] +template = "custom" +script = """ +cookbook_cargo +cp -rv "${COOKBOOK_SOURCE}/res" "${COOKBOOK_STAGE}/etc" +ln -s id "${COOKBOOK_STAGE}/bin/whoami" +chmod +s "${COOKBOOK_STAGE}/bin/passwd" +chmod +s "${COOKBOOK_STAGE}/bin/sudo" +chmod +s "${COOKBOOK_STAGE}/bin/su" +""" From d4608615ed3220709dc8d760a9d18c62250478fb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 21 May 2020 13:49:41 -0600 Subject: [PATCH 0794/3180] Remove patches --- .cargo/config | 15 ----------- .gitmodules | 62 +++---------------------------------------- patches/jobserver-rs | 1 - patches/mio | 1 - patches/net2-rs | 1 - patches/nix | 1 - patches/pb | 1 - patches/platform-info | 1 - patches/ring | 1 - patches/tar-rs | 1 - patches/termsize | 1 - patches/time | 1 - patches/tokio | 1 - 13 files changed, 4 insertions(+), 84 deletions(-) delete mode 160000 patches/jobserver-rs delete mode 160000 patches/mio delete mode 160000 patches/net2-rs delete mode 160000 patches/nix delete mode 160000 patches/pb delete mode 160000 patches/platform-info delete mode 160000 patches/ring delete mode 160000 patches/tar-rs delete mode 160000 patches/termsize delete mode 160000 patches/time delete mode 160000 patches/tokio diff --git a/.cargo/config b/.cargo/config index e2c90b5f..69c4db47 100644 --- a/.cargo/config +++ b/.cargo/config @@ -1,18 +1,3 @@ -paths = [ - "patches/jobserver-rs", - "patches/mio", - "patches/nix", - "patches/tokio/tokio", - "patches/tokio/tokio-reactor", - "patches/net2-rs", - "patches/pb", - "patches/platform-info", - "patches/ring", - "patches/tar-rs", - "patches/termsize", - "patches/time", -] - [target.aarch64-unknown-redox] linker = "aarch64-unknown-redox-gcc" rustflags = [] diff --git a/.gitmodules b/.gitmodules index cc1ec1f5..849ef077 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,66 +1,12 @@ [submodule "docgen"] path = docgen url = https://gitlab.redox-os.org/redox-os/docgen.git -[submodule "pkgutils"] - path = pkgutils - url = https://gitlab.redox-os.org/redox-os/pkgutils.git branch = master -[submodule "patches/atty"] - path = patches/atty - url = https://gitlab.redox-os.org/redox-os/atty.git - branch = redox-unix -[submodule "patches/pb"] - path = patches/pb - url = https://gitlab.redox-os.org/redox-os/pb.git - branch = redox-unix -[submodule "patches/net2-rs"] - path = patches/net2-rs - url = https://gitlab.redox-os.org/redox-os/net2-rs.git - branch = redox-unix -[submodule "patches/ring"] - path = patches/ring - url = https://gitlab.redox-os.org/redox-os/ring.git - branch = redox-unix-0.13.5 -[submodule "patches/time"] - path = patches/time - url = https://gitlab.redox-os.org/redox-os/time.git - branch = redox-unix -[submodule "patches/termsize"] - path = patches/termsize - url = https://gitlab.redox-os.org/redox-os/termsize.git - branch = redox-unix -[submodule "patches/platform-info"] - path = patches/platform-info - url = https://gitlab.redox-os.org/redox-os/platform-info.git - branch = redox-unix -[submodule "patches/tar-rs"] - path = patches/tar-rs - url = https://gitlab.redox-os.org/redox-os/tar-rs.git - branch = redox-unix -[submodule "patches/liblibc"] - path = patches/liblibc - url = https://gitlab.redox-os.org/redox-os/liblibc.git - branch = redox-unix -[submodule "patches/mio"] - path = patches/mio - url = https://gitlab.redox-os.org/redox-os/mio.git - branch = redox-unix -[submodule "patches/tokio"] - path = patches/tokio - url = https://gitlab.redox-os.org/redox-os/tokio.git -[submodule "patches/libc"] - path = patches/libc - url = https://github.com/AdminXVII/libc - branch = extra-traits-redox -[submodule "patches/nix"] - path = patches/nix - url = https://github.com/AdminXVII/nix - branch = add-redox-support -[submodule "patches/jobserver-rs"] - path = patches/jobserver-rs - url = https://gitlab.redox-os.org/redox-os/jobserver-rs.git - branch = redox [submodule "pkgar"] path = pkgar url = https://gitlab.redox-os.org/redox-os/pkgar.git branch = master +[submodule "pkgutils"] + path = pkgutils + url = https://gitlab.redox-os.org/redox-os/pkgutils.git + branch = master diff --git a/patches/jobserver-rs b/patches/jobserver-rs deleted file mode 160000 index 54508e47..00000000 --- a/patches/jobserver-rs +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 54508e47f2349cbd0cef9fcf6e6f0cd4bd12d91d diff --git a/patches/mio b/patches/mio deleted file mode 160000 index c9a70849..00000000 --- a/patches/mio +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c9a70849ced97387e2607c9c466d23b130ec8901 diff --git a/patches/net2-rs b/patches/net2-rs deleted file mode 160000 index be7b8559..00000000 --- a/patches/net2-rs +++ /dev/null @@ -1 +0,0 @@ -Subproject commit be7b855982e63770753a81ffc4bedf66d7f66506 diff --git a/patches/nix b/patches/nix deleted file mode 160000 index 64b3ea0f..00000000 --- a/patches/nix +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 64b3ea0fb108b9933766fd7e049e2c320636b972 diff --git a/patches/pb b/patches/pb deleted file mode 160000 index 743300cf..00000000 --- a/patches/pb +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 743300cf9566f77962a5b550db1ba27cc922b6a5 diff --git a/patches/platform-info b/patches/platform-info deleted file mode 160000 index ff3e9789..00000000 --- a/patches/platform-info +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ff3e9789a7478d614a9e26d7016fe893ffea7713 diff --git a/patches/ring b/patches/ring deleted file mode 160000 index e10e9b89..00000000 --- a/patches/ring +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e10e9b891589b1d4bf5a5e83e999000734f04d68 diff --git a/patches/tar-rs b/patches/tar-rs deleted file mode 160000 index 5e19d818..00000000 --- a/patches/tar-rs +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5e19d818c3e67fe6215b8c244ec86d445ab4d515 diff --git a/patches/termsize b/patches/termsize deleted file mode 160000 index a63940dc..00000000 --- a/patches/termsize +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a63940dc8608bb1a8c27a06302bd8674fd25f874 diff --git a/patches/time b/patches/time deleted file mode 160000 index 0c24c8c1..00000000 --- a/patches/time +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0c24c8c1483e17b4c7974c68dbb29d609d9c699b diff --git a/patches/tokio b/patches/tokio deleted file mode 160000 index 75f296e4..00000000 --- a/patches/tokio +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 75f296e4b48f5d2966f2bd1cc6b04111a58bd4fd From f8f3718f39237ac8a2a5b08cb3ef04edfcdf23b0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 21 May 2020 20:07:11 -0600 Subject: [PATCH 0795/3180] Add ripgrep recipe --- recipes/ripgrep/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/ripgrep/recipe.toml diff --git a/recipes/ripgrep/recipe.toml b/recipes/ripgrep/recipe.toml new file mode 100644 index 00000000..b2e0cd6a --- /dev/null +++ b/recipes/ripgrep/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://github.com/jackpot51/ripgrep.git" + +[build] +template = "cargo" From 397cf47ad240ae1c2be6d3379ed5463917823255 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 21 May 2020 20:16:30 -0600 Subject: [PATCH 0796/3180] Add expat recipe --- recipes/expat/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/expat/recipe.toml diff --git a/recipes/expat/recipe.toml b/recipes/expat/recipe.toml new file mode 100644 index 00000000..47a5bd5a --- /dev/null +++ b/recipes/expat/recipe.toml @@ -0,0 +1,5 @@ +[source] +tar = "https://github.com/libexpat/libexpat/releases/download/R_2_2_6/expat-2.2.6.tar.bz2" + +[build] +template = "configure" From 275e5dbae6e1f5bfc8e2d43b9341136eb27c7ee3 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 21 May 2020 20:37:18 -0600 Subject: [PATCH 0797/3180] Repo will now re-prepare when sysroot is deleted --- repo.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/repo.sh b/repo.sh index b661f0cd..35052bb2 100755 --- a/repo.sh +++ b/repo.sh @@ -40,6 +40,10 @@ do then echo -e "\033[01;38;5;155mrepo - preparing $recipe\033[0m" >&2 ./cook.sh "$recipe" prepare + elif [ ! -d "recipes/$recipe/sysroot/" ] + then + echo -e "\033[01;38;5;155mrepo - repreparing $recipe\033[0m" >&2 + ./cook.sh "$recipe" unprepare prepare else TIME_SOURCE="$($FIND recipes/$recipe/source/ -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" TIME_BUILD="$($FIND recipes/$recipe/build/ -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" From f8edf05e54a6b771e3bc352677a4c9e60a5d4eeb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 21 May 2020 20:37:47 -0600 Subject: [PATCH 0798/3180] Add freetype and nghttp2 recipe --- recipes/freetype/recipe.toml | 9 +++++++++ recipes/nghttp2/recipe.toml | 11 +++++++++++ 2 files changed, 20 insertions(+) create mode 100644 recipes/freetype/recipe.toml create mode 100644 recipes/nghttp2/recipe.toml diff --git a/recipes/freetype/recipe.toml b/recipes/freetype/recipe.toml new file mode 100644 index 00000000..ce535b7c --- /dev/null +++ b/recipes/freetype/recipe.toml @@ -0,0 +1,9 @@ +[source] +tar = "https://download.savannah.gnu.org/releases/freetype/freetype-2.9.1.tar.gz" + +[build] +template = "configure" +dependencies = [ + "libpng", + "zlib" +] diff --git a/recipes/nghttp2/recipe.toml b/recipes/nghttp2/recipe.toml new file mode 100644 index 00000000..85d28861 --- /dev/null +++ b/recipes/nghttp2/recipe.toml @@ -0,0 +1,11 @@ +[source] +tar = "https://github.com/nghttp2/nghttp2/releases/download/v1.37.0/nghttp2-1.37.0.tar.xz" + +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE_ARGS+=( + --enable-lib-only +) +cookbook_configure +""" From e754bc2184f070763c0dde8ecded1832c249e7b9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 21 May 2020 20:48:29 -0600 Subject: [PATCH 0799/3180] Add openssl recipe and fix nghttp2 recipe --- recipes/nghttp2/recipe.toml | 2 +- recipes/openssl/recipe.toml | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 recipes/openssl/recipe.toml diff --git a/recipes/nghttp2/recipe.toml b/recipes/nghttp2/recipe.toml index 85d28861..f44d6bb7 100644 --- a/recipes/nghttp2/recipe.toml +++ b/recipes/nghttp2/recipe.toml @@ -4,7 +4,7 @@ tar = "https://github.com/nghttp2/nghttp2/releases/download/v1.37.0/nghttp2-1.37 [build] template = "custom" script = """ -COOKBOOK_CONFIGURE_ARGS+=( +COOKBOOK_CONFIGURE_FLAGS+=( --enable-lib-only ) cookbook_configure diff --git a/recipes/openssl/recipe.toml b/recipes/openssl/recipe.toml new file mode 100644 index 00000000..5b59968a --- /dev/null +++ b/recipes/openssl/recipe.toml @@ -0,0 +1,18 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/openssl.git" +branch = "redox" + +[build] +template = "custom" +script = """ +ARCH="${TARGET%%-*}" +COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/Configure" +COOKBOOK_CONFIGURE_FLAGS=( + no-shared + no-dgram + "redox-${ARCH}" + --prefix="/" +) +cookbook_configure +rm -rfv "${COOKBOOK_STAGE}/"{share,ssl} +""" From decf39197dfed0a1ee314d5e4cdb4afd54cb6e41 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 21 May 2020 20:59:20 -0600 Subject: [PATCH 0800/3180] Add patch for sed --- recipes/sed/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/sed/recipe.toml b/recipes/sed/recipe.toml index 37f5f2fb..ffb29795 100644 --- a/recipes/sed/recipe.toml +++ b/recipes/sed/recipe.toml @@ -1,5 +1,8 @@ [source] tar = "http://ftp.gnu.org/gnu/sed/sed-4.4.tar.xz" +patches = [ + "sed.patch" +] [build] template = "configure" From db9f4e40bfa393f3a879c20be9f40a9dec6f69ec Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 21 May 2020 21:13:39 -0600 Subject: [PATCH 0801/3180] Add curl recipe --- recipes/curl/recipe.toml | 39 +++++++++++++++++++++++++++++++++++++++ src/bin/cook.rs | 5 +++++ 2 files changed, 44 insertions(+) create mode 100644 recipes/curl/recipe.toml diff --git a/recipes/curl/recipe.toml b/recipes/curl/recipe.toml new file mode 100644 index 00000000..39af949f --- /dev/null +++ b/recipes/curl/recipe.toml @@ -0,0 +1,39 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/curl.git" +branch = "redox" + +[build] +template = "custom" +dependencies = [ + "nghttp2", + "openssl", + "zlib" +] +script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ +wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub +autoreconf -i +COOKBOOK_CONFIGURE="./configure" +COOKBOOK_CONFIGURE_FLAGS=( + --build="$(cc -dumpmachine)" + --host="${TARGET}" + --prefix="" + --disable-ftp + --disable-ipv6 + --disable-ntlm-wb + --disable-shared + --disable-tftp + --disable-threaded-resolver + --enable-static + --with-ca-path=/ssl/certs + --with-nghttp2="${COOKBOOK_SYSROOT}" + --with-ssl="${COOKBOOK_SYSROOT}" + --with-zlib="${COOKBOOK_SYSROOT}" +) +cookbook_configure +""" + +[package] +dependencies = [ + "ca-certificates" +] diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 30357942..585d1b81 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -339,6 +339,9 @@ fn build(recipe_dir: &Path, source_dir: &Path, build: &BuildRecipe) -> Result Date: Fri, 22 May 2020 08:22:09 -0600 Subject: [PATCH 0802/3180] Add sdl recipe --- recipes/sdl/recipe.toml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 recipes/sdl/recipe.toml diff --git a/recipes/sdl/recipe.toml b/recipes/sdl/recipe.toml new file mode 100644 index 00000000..cd55f393 --- /dev/null +++ b/recipes/sdl/recipe.toml @@ -0,0 +1,23 @@ +[source] +tar = "https://www.libsdl.org/release/SDL-1.2.15.tar.gz" +patches = [ + "redox.patch" +] +script = "./autogen.sh" + +[build] +template = "custom" +dependencies = [ + "liborbital" +] +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --disable-pulseaudio + --disable-video-x11 + --disable-loadso + --enable-redoxaudio + --enable-clock_gettime + --enable-video-orbital +) +cookbook_configure +""" From 93402359fedd3dbc0e25bf0c9657572e4980f2e1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 22 May 2020 08:28:17 -0600 Subject: [PATCH 0803/3180] Add dash recipe --- recipes/dash/recipe.toml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 recipes/dash/recipe.toml diff --git a/recipes/dash/recipe.toml b/recipes/dash/recipe.toml new file mode 100644 index 00000000..c4bc5751 --- /dev/null +++ b/recipes/dash/recipe.toml @@ -0,0 +1,21 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/dash.git" +branch = "redox" + +[build] +template = "custom" +script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ +./autogen.sh +./configure \ + --host="${TARGET}" \ + --prefix="" \ + --enable-static \ + cross_compiling=yes +# See https://stackoverflow.com/questions/4247068/sed-command-with-i-option-failing-on-mac-but-works-on-linux. +sed -i'' -e 's|#define HAVE_GETRLIMIT 1|/* #undef HAVE_GETRLIMIT */|g' config.h +# Skip configure +COOKBOOK_CONFIGURE="true" +COOKBOOK_CONFIGURE_FLAGS=() +cookbook_configure +""" From 9fefdef37fb884913e87d92edb91685b5cee0940 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 22 May 2020 08:37:02 -0600 Subject: [PATCH 0804/3180] Add uutils recipe --- recipes/uutils/recipe.toml | 98 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 recipes/uutils/recipe.toml diff --git a/recipes/uutils/recipe.toml b/recipes/uutils/recipe.toml new file mode 100644 index 00000000..c2f4f921 --- /dev/null +++ b/recipes/uutils/recipe.toml @@ -0,0 +1,98 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/uutils.git" +branch = "redox-unix" + +[build] +template = "custom" +script = """ +COOKBOOK_CARGO_FLAGS+=( + --no-default-features + --features redox + --bin uutils +) +cookbook_cargo + +BINS=( + base32 + base64 + basename + cat + chmod + cksum + comm + cp + cut + date + dircolors + dirname + echo + env + expand + expr + factor + false + fmt + fold + hashsum + head + install + join + link + ln + ls + md5sum + mkdir + mktemp + more + mv + nl + od + paste + printenv + printf + ptx + pwd + readlink + realpath + relpath + rm + rmdir + seq + sha1sum + sha224sum + sha256sum + sha3-224sum + sha3-256sum + sha3-384sum + sha3-512sum + sha384sum + sha3sum + sha512sum + shake128sum + shake256sum + shred + shuf + sleep + sort + split + sum + tac + tail + tee + test + tr + true + truncate + tsort + uname + unexpand + uniq + wc + yes +) + +for bin in "${BINS[@]}" +do + ln -sv uutils "${COOKBOOK_STAGE}/bin/$bin" +done +""" From 364867de5ba7420ea81a758232ff41c4370b4bd1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 22 May 2020 10:03:26 -0600 Subject: [PATCH 0805/3180] Add cookbook_redoxer, a wrapper to make it simpler to user redoxer --- Cargo.lock | 830 ++++++++++++++++++++++++++++++++++++ Cargo.toml | 6 + src/bin/cook.rs | 11 +- src/bin/cookbook_redoxer.rs | 10 + 4 files changed, 855 insertions(+), 2 deletions(-) create mode 100644 src/bin/cookbook_redoxer.rs diff --git a/Cargo.lock b/Cargo.lock index a2ff9778..0f30f53f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,5 +1,18 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +[[package]] +name = "addr2line" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "gimli 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "adler32" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "ansi_term" version = "0.11.0" @@ -8,6 +21,11 @@ dependencies = [ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "arg_parser" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "arrayref" version = "0.3.6" @@ -33,11 +51,57 @@ name = "autocfg" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "backtrace" +version = "0.3.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "addr2line 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "object 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "base64" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "safemem 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "base64" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "base64" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "bidir-map" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "bitflags" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "blake2b_simd" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "blake3" version = "0.2.3" @@ -91,6 +155,11 @@ name = "byte-tools" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "bytecount" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "byteorder" version = "1.3.4" @@ -125,6 +194,14 @@ name = "constant_time_eq" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "crc32fast" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "crossbeam-deque" version = "0.7.3" @@ -185,16 +262,102 @@ dependencies = [ "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "dirs" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "dirs-sys 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "dirs-sys" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_users 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "either" version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "err-derive" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro-error 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rustversion 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.23 (registry+https://github.com/rust-lang/crates.io-index)", + "synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "failure" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "backtrace 0.3.48 (registry+https://github.com/rust-lang/crates.io-index)", + "failure_derive 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "failure_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.23 (registry+https://github.com/rust-lang/crates.io-index)", + "synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "fake-simd" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "filetime" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "fixedbitset" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "fuchsia-cprng" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "fuse" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "thread-scoped 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "generic-array" version = "0.12.3" @@ -213,6 +376,11 @@ dependencies = [ "wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "gimli" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "hermit-abi" version = "0.1.13" @@ -221,11 +389,73 @@ dependencies = [ "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "httparse" +version = "1.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "hyper" +version = "0.10.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", + "traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hyper-rustls" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "hyper 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)", + "rustls 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", + "webpki 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)", + "webpki-roots 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "idna" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-normalization 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "index-fixed" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "itertools" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "keccak" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "language-tags" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "lazy_static" version = "1.4.0" @@ -236,6 +466,38 @@ name = "libc" version = "0.2.70" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "libflate" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rle-decode-fast 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "log" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "log" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "matches" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "maybe-uninit" version = "2.0.0" @@ -249,6 +511,14 @@ dependencies = [ "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "mime" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "num_cpus" version = "1.13.0" @@ -263,11 +533,34 @@ name = "numtoa" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "object" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "opaque-debug" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "ordermap" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "ordermap" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "partition-identity" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "err-derive 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "pbr" version = "1.0.2" @@ -279,6 +572,25 @@ dependencies = [ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "percent-encoding" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "petgraph" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fixedbitset 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "ordermap 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "pkg-config" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "pkgar" version = "0.1.6" @@ -302,6 +614,30 @@ name = "ppv-lite86" version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "proc-macro-error" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro-error-attr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.23 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.23 (registry+https://github.com/rust-lang/crates.io-index)", + "syn-mid 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "proc-macro2" version = "1.0.13" @@ -310,6 +646,15 @@ dependencies = [ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "proc-mounts" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "partition-identity 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "quote" version = "1.0.6" @@ -318,6 +663,27 @@ dependencies = [ "proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rand" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rand" version = "0.7.3" @@ -339,6 +705,19 @@ dependencies = [ "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rand_core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "rand_core" version = "0.5.1" @@ -377,6 +756,14 @@ dependencies = [ "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rdrand" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "redox_cookbook" version = "0.1.0" @@ -384,12 +771,66 @@ dependencies = [ "blake3 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "pbr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "pkgar 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "redoxer 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "termion 1.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "redox_installer" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arg_parser 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "failure 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_liner 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_pkgutils 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "redoxfs 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rust-argon2 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", + "termion 1.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "redox_liner" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytecount 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "termion 1.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "redox_pkgutils" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bidir-map 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "clap 2.33.1 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper-rustls 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libflate 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "ordermap 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", + "pbr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "petgraph 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_liner 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", + "sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tar 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", + "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "version-compare 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "redox_syscall" version = "0.1.56" @@ -403,11 +844,135 @@ dependencies = [ "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "redox_users" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "rust-argon2 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "redoxer" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "dirs 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-mounts 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_installer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "redoxfs 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "redoxfs" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fuse 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", + "uuid 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "remove_dir_all" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ring" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.54 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rle-decode-fast" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "rust-argon2" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2b_simd 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", + "constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rust-argon2" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "base64 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2b_simd 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", + "constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "rustls" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", + "sct 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "webpki 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rustversion" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.23 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "safemem" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "scopeguard" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "sct" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "serde" version = "1.0.110" @@ -437,6 +1002,23 @@ dependencies = [ "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "sha3" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "keccak 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "smallvec" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "sodalite" version = "0.3.0" @@ -465,6 +1047,56 @@ dependencies = [ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "syn-mid" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.23 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "synstructure" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.23 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "take_mut" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "tar" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "filetime 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "xattr 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tempfile" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "termion" version = "1.5.5" @@ -484,6 +1116,11 @@ dependencies = [ "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "thread-scoped" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "time" version = "0.1.43" @@ -493,6 +1130,14 @@ dependencies = [ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "toml" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "toml" version = "0.5.6" @@ -501,11 +1146,45 @@ dependencies = [ "serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "traitobject" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "typeable" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "typenum" version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "unicase" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "unicode-normalization" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "smallvec 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "unicode-width" version = "0.1.7" @@ -516,16 +1195,72 @@ name = "unicode-xid" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "untrusted" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "url" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "uuid" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "vec_map" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "version-compare" +version = "0.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "version_check" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "version_check" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "wasi" version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "webpki" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "webpki-roots" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "webpki 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "winapi" version = "0.3.8" @@ -545,73 +1280,168 @@ name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "xattr" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", +] + [metadata] +"checksum addr2line 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a49806b9dadc843c61e7c97e72490ad7f7220ae249012fbda9ad0609457c0543" +"checksum adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2e7343e7fc9de883d1b0341e0b13970f764c14101234857d2ddafa1cb1cac2" "checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" +"checksum arg_parser 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e9bcdf9185a4ea0d8afa7c8ad387cc3a93c3ecfa918125e000a57a42e71268d7" "checksum arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" "checksum arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" "checksum atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" "checksum autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" +"checksum backtrace 0.3.48 (registry+https://github.com/rust-lang/crates.io-index)" = "0df2f85c8a2abbe3b7d7e748052fdd9b76a0458fdeb16ad4223f5eca78c7c130" +"checksum base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" +"checksum base64 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "53d1ccbaf7d9ec9537465a97bf19edc1a4e158ecb49fc16178202238c569cc42" +"checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" +"checksum bidir-map 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6c3d05037e57974413eef55a8505df19de3cb4dc7a8f8389e1588ec492ae9c73" "checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" +"checksum blake2b_simd 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)" = "d8fb2d74254a3a0b5cac33ac9f8ed0e44aa50378d9dbb2e5d83bd21ed1dc2c8a" "checksum blake3 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "667d945f23cefed0b5f973af35c4bc3319caa6776fbda270e4897d8504afa8e4" "checksum blake3 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "68df31bdf2bbb567e5adf8f21ac125dc0e897b1381e7b841f181521f06fc3134" "checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" "checksum block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" "checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" +"checksum bytecount 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b0017894339f586ccb943b01b9555de56770c11cda818e7e3d8bd93f4ed7f46e" "checksum byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" "checksum cc 1.0.54 (registry+https://github.com/rust-lang/crates.io-index)" = "7bbb73db36c1246e9034e307d0fba23f9a2e251faa47ade70c1bd252220c8311" "checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" "checksum clap 2.33.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bdfa80d47f954d53a35a64987ca1422f495b8d6483c0fe9f7117b36c2a792129" "checksum constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" +"checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" "checksum crossbeam-deque 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285" "checksum crossbeam-epoch 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" "checksum crossbeam-queue 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c695eeca1e7173472a32221542ae469b3e9aac3a4fc81f7696bcad82029493db" "checksum crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" "checksum crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" "checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +"checksum dirs 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "13aea89a5c93364a98e9b37b2fa237effbb694d5cfe01c5b70941f7eb087d5e3" +"checksum dirs-sys 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "afa0b23de8fd801745c471deffa6e12d248f962c9fd4b4c33787b055599bde7b" "checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" +"checksum err-derive 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "22deed3a8124cff5fa835713fa105621e43bbdc46690c3a6b68328a012d350d4" +"checksum failure 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" +"checksum failure_derive 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" "checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" +"checksum filetime 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "affc17579b132fc2461adf7c575cc6e8b134ebca52c51f5411388965227dc695" +"checksum fixedbitset 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "86d4de0081402f5e88cdac65c8dcdcc73118c1a7a465e2a05f0da05843a8ea33" +"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" +"checksum fuse 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "80e57070510966bfef93662a81cb8aa2b1c7db0964354fa9921434f04b9e8660" "checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" "checksum getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" +"checksum gimli 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bcc8e0c9bce37868955864dbecd2b1ab2bdf967e6f28066d65aaac620444b65c" "checksum hermit-abi 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "91780f809e750b0a89f5544be56617ff6b1227ee485bcb06ebe10cdf89bd3b71" +"checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" +"checksum hyper 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)" = "0a0652d9a2609a968c14be1a9ea00bf4b1d64e2e1f53a1b51b6fff3a6e829273" +"checksum hyper-rustls 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "71f7b2e5858ab9e19771dc361159f09ee5031734a6f7471fe0947db0238d92b7" +"checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" "checksum index-fixed 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c63adf4f50cae82ddb03b088a55172f5044e73c8f02d029e69780717f764bbfa" +"checksum itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484" +"checksum keccak 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" +"checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" "checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" "checksum libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)" = "3baa92041a6fec78c687fa0cc2b3fae8884f743d672cf551bed1d6dac6988d0f" +"checksum libflate 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)" = "d9135df43b1f5d0e333385cb6e7897ecd1a43d7d11b91ac003f4d2c2d2401fdd" +"checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" +"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" +"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" "checksum maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" "checksum memoffset 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b4fc2c02a7e374099d4ee95a193111f72d2110197fe200272371758f6c3643d8" +"checksum mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" "checksum num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" "checksum numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" +"checksum object 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9cbca9424c482ee628fa549d9c812e2cd22f1180b9222c9200fdfa6eb31aecb2" "checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" +"checksum ordermap 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "b81cf3b8cb96aa0e73bbedfcdc9708d09fec2854ba8d474be4e6f666d7379e8b" +"checksum ordermap 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a86ed3f5f244b372d6b1a00b72ef7f8876d0bc6a78a4c9985c53614041512063" +"checksum partition-identity 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ec13ba9a0eec5c10a89f6ec1b6e9e2ef7d29b810d771355abbd1c43cae003ed6" "checksum pbr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4403eb718d70c03ee279e51737782902c68cca01e870a33b6a2f9dfb50b9cd83" +"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" +"checksum petgraph 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3659d1ee90221741f65dd128d9998311b0e40c5d3c23a62445938214abce4f" +"checksum pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)" = "05da548ad6865900e60eaba7f589cc0783590a92e940c26953ff81ddbab2d677" "checksum pkgar 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "74003f2ac9baa8600352a677bd8763088cc35498a4364abe9ae5898832015bb9" "checksum plain 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" "checksum ppv-lite86 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "237a5ed80e274dbc66f86bd59c1e25edc039660be53194b5fe0a482e0f2612ea" +"checksum proc-macro-error 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "98e9e4b82e0ef281812565ea4751049f1bdcdfccda7d3f459f2e138a40c08678" +"checksum proc-macro-error-attr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4f5444ead4e9935abd7f27dc51f7e852a0569ac888096d5ec2499470794e2e53" "checksum proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)" = "53f5ffe53a6b28e37c9c1ce74893477864d64f74778a93a4beb43c8fa167f639" +"checksum proc-mounts 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad7e9c8d1b8c20f16a84d61d7c4c0325a5837c1307a2491b509cd92fb4e4442" "checksum quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "54a21852a652ad6f610c9510194f398ff6f8692e334fd1145fed931f7fbe44ea" +"checksum rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)" = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c" +"checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" "checksum rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" "checksum rand_chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" +"checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" "checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" "checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" "checksum rayon 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "db6ce3297f9c85e16621bb8cca38a06779ffc31bb8184e1be4bed2be4678a098" "checksum rayon-core 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "08a89b46efaf957e52b18062fb2f4660f8b8a4dde1807ca002690868ef2c85a9" +"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" +"checksum redox_installer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "98346851d42e2f357b3c023b27b75da14a774c226f9636a0ed42535b72d62bde" +"checksum redox_liner 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f014f6b014591f45bdd86377ab2f01b840ddd9e33421222b84d06e244b111327" +"checksum redox_pkgutils 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf753c67a43031ca0aa5661c1808edc4f94118f1daa368df38b641de8d74a91" "checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" +"checksum redox_users 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "09b23093265f8d200fa7b4c2c76297f47e681c655f6f1285a8780d6a022f7431" +"checksum redoxer 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "32c6983b8e5e20567168c6f0f0abd300d3870ea658ac88483d658ba6b83a34c8" +"checksum redoxfs 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d2cf914a0e128dfd60c462d07ae347449959af11acf84fd9cd684bd8b89e1965" +"checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" +"checksum ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)" = "2c4db68a2e35f3497146b7e4563df7d4773a2433230c5e4b448328e31740458a" +"checksum rle-decode-fast 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cabe4fa914dec5870285fa7f71f602645da47c486e68486d2b4ceb4a343e90ac" +"checksum rust-argon2 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2bc8af4bda8e1ff4932523b94d3dd20ee30a87232323eda55903ffd71d2fb017" +"checksum rust-argon2 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9dab61250775933275e84053ac235621dfb739556d5c54a2f2e9313b7cf43a19" +"checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" +"checksum rustls 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "942b71057b31981152970d57399c25f72e27a6ee0d207a669d8304cabf44705b" +"checksum rustversion 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b3bba175698996010c4f6dce5e7f173b6eb781fce25d2cfc45e27091ce0b79f6" +"checksum safemem 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" "checksum scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +"checksum sct 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cb8f61f9e6eadd062a71c380043d28036304a4706b3c4dd001ff3387ed00745a" "checksum serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)" = "99e7b308464d16b56eba9964e4972a3eee817760ab60d88c3f86e1fecb08204c" "checksum serde_derive 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)" = "818fbf6bfa9a42d3bfcaca148547aa00c7b915bec71d1757aa2d44ca68771984" "checksum sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "27044adfd2e1f077f649f59deb9490d3941d674002f7d062870a60ebe9bd47a0" +"checksum sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecf" +"checksum smallvec 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c7cb5678e1615754284ec264d9bb5b4c27d2018577fd90ac0ceb578591ed5ee4" "checksum sodalite 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "67643084c740297bac275b1d97901ec27ca5984be4e8f75d86a33498e0e3e61c" "checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" "checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" "checksum syn 1.0.23 (registry+https://github.com/rust-lang/crates.io-index)" = "95b5f192649e48a5302a13f2feb224df883b98933222369e4b3b0fe2a5447269" +"checksum syn-mid 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7be3539f6c128a931cf19dcee741c1af532c7fd387baa739c03dd2e96479338a" +"checksum synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545" +"checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" +"checksum tar 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)" = "7160add8f178ecef9c22e9d8f8ed28bc9a39660e98b1c28d93cc026ad9619f09" +"checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" "checksum termion 1.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c22cec9d8978d906be5ac94bceb5a010d885c626c4c8855721a4dbd20e3ac905" "checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +"checksum thread-scoped 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bcbb6aa301e5d3b0b5ef639c9a9c7e2f1c944f177b460c04dc24c69b1fa2bd99" "checksum time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" +"checksum toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f" "checksum toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71a" +"checksum traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" +"checksum typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" "checksum typenum 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" +"checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" +"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" +"checksum unicode-normalization 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5479532badd04e128284890390c1e876ef7a993d0570b3597ae43dfa1d59afa4" "checksum unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479" "checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" +"checksum untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "55cd1f4b4e96b46aeb8d4855db4a7a9bd96eeeb5c6a1ab54593328761642ce2f" +"checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" +"checksum uuid 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcc7e3b898aa6f6c08e5295b6c89258d1331e9ac578cc992fb818759951bdc22" "checksum vec_map 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" +"checksum version-compare 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)" = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1" +"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" +"checksum version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "078775d0255232fb988e6fccf26ddc9d1ac274299aaedcedce21c6f72cc533ce" "checksum wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" +"checksum webpki 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)" = "17d7967316d8411ca3b01821ee6c332bde138ba4363becdb492f12e514daa17f" +"checksum webpki-roots 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "85d1f408918fd590908a70d36b7ac388db2edc221470333e4d6e5b598e44cabf" "checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +"checksum xattr 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" diff --git a/Cargo.toml b/Cargo.toml index 34ce71a2..cef0065b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,6 +3,7 @@ name = "redox_cookbook" version = "0.1.0" authors = ["Jeremy Soller "] edition = "2018" +default-run = "cook" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -10,6 +11,10 @@ edition = "2018" name = "cook" path = "src/bin/cook.rs" +[[bin]] +name = "cookbook_redoxer" +path = "src/bin/cookbook_redoxer.rs" + [lib] name = "cookbook" path = "src/lib.rs" @@ -18,6 +23,7 @@ path = "src/lib.rs" blake3 = "0.3.3" pbr = "1.0.2" pkgar = "0.1.6" +redoxer = "0.2.18" serde = { version = "1.0", features = ["derive"] } sha2 = "0.8.1" termion = "1.5.5" diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 585d1b81..d99b3f82 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -361,7 +361,7 @@ export PKG_CONFIG_LIBDIR="${COOKBOOK_SYSROOT}/lib/pkgconfig" export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" # cargo template -COOKBOOK_CARGO="redoxer" +COOKBOOK_CARGO="target/release/cookbook_redoxer" COOKBOOK_CARGO_FLAGS=( --path "${COOKBOOK_SOURCE}" --root "${COOKBOOK_STAGE}" @@ -410,7 +410,7 @@ fi }; let command = { - let mut command = Command::new("redoxer"); + let mut command = Command::new("target/release/cookbook_redoxer"); command.arg("env"); command.arg("bash").arg("-ex"); @@ -447,6 +447,13 @@ fn package(recipe_dir: &Path, stage_dir: &Path, package: &PackageRecipe) -> Resu let secret_path = "build/secret.key"; let public_path = "build/public.key"; if ! Path::new(secret_path).is_file() || ! Path::new(public_path).is_file() { + if ! Path::new("build").is_dir() { + fs::create_dir("build").map_err(|err| format!( + "failed to create 'build': {}\n{:?}", + err, + err + ))?; + } pkgar::bin::keygen(secret_path, public_path).map_err(|err| format!( "failed to generate pkgar keys: {:?}", err diff --git a/src/bin/cookbook_redoxer.rs b/src/bin/cookbook_redoxer.rs new file mode 100644 index 00000000..0a930390 --- /dev/null +++ b/src/bin/cookbook_redoxer.rs @@ -0,0 +1,10 @@ +use std::env; + +fn main() { + let mut args: Vec = env::args().collect(); + // Ensure all flags go to cargo + if args.len() >= 2 { + args.insert(2, "--".to_string()); + } + redoxer::main(&args); +} From c39511fac9b0e22aabbdd27920c4bbfb804bfbed Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 22 May 2020 10:18:36 -0600 Subject: [PATCH 0806/3180] Do not build cookbook crate from repo.sh --- repo.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/repo.sh b/repo.sh index 35052bb2..9cc912a4 100755 --- a/repo.sh +++ b/repo.sh @@ -20,8 +20,6 @@ then recipes="$(ls -1 recipes)" fi -cargo build --release - for recipe in $recipes do if [ -e "recipes/$recipe/recipe.toml" ] From 0b55c5d7ac1eab94d3e022e6bff93944a03c60e9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 22 May 2020 10:21:25 -0600 Subject: [PATCH 0807/3180] Use absolute path to cookbook_redoxer --- src/bin/cook.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index d99b3f82..2fa341d4 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -361,7 +361,7 @@ export PKG_CONFIG_LIBDIR="${COOKBOOK_SYSROOT}/lib/pkgconfig" export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" # cargo template -COOKBOOK_CARGO="target/release/cookbook_redoxer" +COOKBOOK_CARGO="${COOKBOOK_ROOT}/target/release/cookbook_redoxer" COOKBOOK_CARGO_FLAGS=( --path "${COOKBOOK_SOURCE}" --root "${COOKBOOK_STAGE}" From 73c074a08de91c37cecf2a1055552603c41297c6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 22 May 2020 10:23:35 -0600 Subject: [PATCH 0808/3180] Define path to cookbook_redoxer once --- src/bin/cook.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 2fa341d4..4f058437 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -361,7 +361,7 @@ export PKG_CONFIG_LIBDIR="${COOKBOOK_SYSROOT}/lib/pkgconfig" export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" # cargo template -COOKBOOK_CARGO="${COOKBOOK_ROOT}/target/release/cookbook_redoxer" +COOKBOOK_CARGO="${COOKBOOK_REDOXER}" COOKBOOK_CARGO_FLAGS=( --path "${COOKBOOK_SOURCE}" --root "${COOKBOOK_STAGE}" @@ -410,20 +410,22 @@ fi }; let command = { - let mut command = Command::new("target/release/cookbook_redoxer"); - command.arg("env"); - command.arg("bash").arg("-ex"); - //TODO: remove unwraps let cookbook_build = build_dir.canonicalize().unwrap(); let cookbook_recipe = recipe_dir.canonicalize().unwrap(); + let cookbook_redoxer = Path::new("target/release/cookbook_redoxer").canonicalize().unwrap(); let cookbook_root = Path::new(".").canonicalize().unwrap(); let cookbook_stage = stage_dir_tmp.canonicalize().unwrap(); let cookbook_source = source_dir.canonicalize().unwrap(); let cookbook_sysroot = sysroot_dir.canonicalize().unwrap(); + + let mut command = Command::new(&cookbook_redoxer); + command.arg("env"); + command.arg("bash").arg("-ex"); command.current_dir(&cookbook_build); command.env("COOKBOOK_BUILD", &cookbook_build); command.env("COOKBOOK_RECIPE", &cookbook_recipe); + command.env("COOKBOOK_REDOXER", &cookbook_redoxer); command.env("COOKBOOK_ROOT", &cookbook_root); command.env("COOKBOOK_STAGE", &cookbook_stage); command.env("COOKBOOK_SOURCE", &cookbook_source); From d478a1c18dbdcb5423935c0cd5bab74a7b176f38 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 22 May 2020 10:31:19 -0600 Subject: [PATCH 0809/3180] Update redoxer to 0.2.19 --- Cargo.lock | 6 +++--- Cargo.toml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0f30f53f..5cc44ab6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -771,7 +771,7 @@ dependencies = [ "blake3 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "pbr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "pkgar 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "redoxer 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "redoxer 0.2.19 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "termion 1.5.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -856,7 +856,7 @@ dependencies = [ [[package]] name = "redoxer" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "dirs 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1390,7 +1390,7 @@ dependencies = [ "checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" "checksum redox_users 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "09b23093265f8d200fa7b4c2c76297f47e681c655f6f1285a8780d6a022f7431" -"checksum redoxer 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "32c6983b8e5e20567168c6f0f0abd300d3870ea658ac88483d658ba6b83a34c8" +"checksum redoxer 0.2.19 (registry+https://github.com/rust-lang/crates.io-index)" = "9641f270dd15b5835a8e7f8d61c80fada81f4242bdc670dd48e4f7183fef97f0" "checksum redoxfs 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d2cf914a0e128dfd60c462d07ae347449959af11acf84fd9cd684bd8b89e1965" "checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" "checksum ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)" = "2c4db68a2e35f3497146b7e4563df7d4773a2433230c5e4b448328e31740458a" diff --git a/Cargo.toml b/Cargo.toml index cef0065b..a6d2a37a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,7 @@ path = "src/lib.rs" blake3 = "0.3.3" pbr = "1.0.2" pkgar = "0.1.6" -redoxer = "0.2.18" +redoxer = "0.2.19" serde = { version = "1.0", features = ["derive"] } sha2 = "0.8.1" termion = "1.5.5" From 5fdb1b84384732168bf61496cf6e491a505b7e38 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 25 May 2020 21:51:57 -0600 Subject: [PATCH 0810/3180] Use modified date to rebuild packages --- Cargo.lock | 100 ++++++++++++++++++++++------------ Cargo.toml | 7 +-- src/bin/cook.rs | 139 +++++++++++++++++++++++++++++++++++------------- 3 files changed, 171 insertions(+), 75 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5cc44ab6..f18a2b05 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -119,7 +119,7 @@ dependencies = [ [[package]] name = "blake3" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -293,10 +293,10 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro-error 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "rustversion 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.23 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", "synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -314,9 +314,9 @@ name = "failure_derive" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.23 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", "synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -620,10 +620,10 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro-error-attr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.23 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -631,16 +631,16 @@ name = "proc-macro-error-attr" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.23 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", "syn-mid 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "proc-macro2" -version = "1.0.13" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -660,7 +660,7 @@ name = "quote" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -768,14 +768,15 @@ dependencies = [ name = "redox_cookbook" version = "0.1.0" dependencies = [ - "blake3 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "blake3 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", "pbr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "pkgar 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "redoxer 0.2.19 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", "termion 1.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", + "walkdir 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -826,7 +827,7 @@ dependencies = [ "serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", "sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tar 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", + "tar 0.4.28 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "version-compare 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -949,9 +950,9 @@ name = "rustversion" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.23 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -959,6 +960,14 @@ name = "safemem" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "scopeguard" version = "1.1.0" @@ -986,14 +995,14 @@ name = "serde_derive" version = "1.0.110" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.23 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sha2" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1039,10 +1048,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "syn" -version = "1.0.23" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1052,9 +1061,9 @@ name = "syn-mid" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.23 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1062,9 +1071,9 @@ name = "synstructure" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.23 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1075,7 +1084,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "tar" -version = "0.4.27" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "filetime 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1235,9 +1244,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "version_check" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "walkdir" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "same-file 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "wasi" version = "0.9.0+wasi-snapshot-preview1" @@ -1275,6 +1294,14 @@ name = "winapi-i686-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -1305,7 +1332,7 @@ dependencies = [ "checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" "checksum blake2b_simd 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)" = "d8fb2d74254a3a0b5cac33ac9f8ed0e44aa50378d9dbb2e5d83bd21ed1dc2c8a" "checksum blake3 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "667d945f23cefed0b5f973af35c4bc3319caa6776fbda270e4897d8504afa8e4" -"checksum blake3 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "68df31bdf2bbb567e5adf8f21ac125dc0e897b1381e7b841f181521f06fc3134" +"checksum blake3 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "423897d97e11b810c9da22458400b28ec866991c711409073662eb34dc44bfff" "checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" "checksum block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" "checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" @@ -1370,7 +1397,7 @@ dependencies = [ "checksum ppv-lite86 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "237a5ed80e274dbc66f86bd59c1e25edc039660be53194b5fe0a482e0f2612ea" "checksum proc-macro-error 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "98e9e4b82e0ef281812565ea4751049f1bdcdfccda7d3f459f2e138a40c08678" "checksum proc-macro-error-attr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4f5444ead4e9935abd7f27dc51f7e852a0569ac888096d5ec2499470794e2e53" -"checksum proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)" = "53f5ffe53a6b28e37c9c1ce74893477864d64f74778a93a4beb43c8fa167f639" +"checksum proc-macro2 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)" = "1502d12e458c49a4c9cbff560d0fe0060c252bc29799ed94ca2ed4bb665a0101" "checksum proc-mounts 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad7e9c8d1b8c20f16a84d61d7c4c0325a5837c1307a2491b509cd92fb4e4442" "checksum quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "54a21852a652ad6f610c9510194f398ff6f8692e334fd1145fed931f7fbe44ea" "checksum rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)" = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c" @@ -1401,21 +1428,22 @@ dependencies = [ "checksum rustls 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "942b71057b31981152970d57399c25f72e27a6ee0d207a669d8304cabf44705b" "checksum rustversion 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b3bba175698996010c4f6dce5e7f173b6eb781fce25d2cfc45e27091ce0b79f6" "checksum safemem 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" +"checksum same-file 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" "checksum scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" "checksum sct 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cb8f61f9e6eadd062a71c380043d28036304a4706b3c4dd001ff3387ed00745a" "checksum serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)" = "99e7b308464d16b56eba9964e4972a3eee817760ab60d88c3f86e1fecb08204c" "checksum serde_derive 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)" = "818fbf6bfa9a42d3bfcaca148547aa00c7b915bec71d1757aa2d44ca68771984" -"checksum sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "27044adfd2e1f077f649f59deb9490d3941d674002f7d062870a60ebe9bd47a0" +"checksum sha2 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" "checksum sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecf" "checksum smallvec 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c7cb5678e1615754284ec264d9bb5b4c27d2018577fd90ac0ceb578591ed5ee4" "checksum sodalite 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "67643084c740297bac275b1d97901ec27ca5984be4e8f75d86a33498e0e3e61c" "checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" "checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" -"checksum syn 1.0.23 (registry+https://github.com/rust-lang/crates.io-index)" = "95b5f192649e48a5302a13f2feb224df883b98933222369e4b3b0fe2a5447269" +"checksum syn 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "f14a640819f79b72a710c0be059dce779f9339ae046c8bef12c361d56702146f" "checksum syn-mid 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7be3539f6c128a931cf19dcee741c1af532c7fd387baa739c03dd2e96479338a" "checksum synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545" "checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" -"checksum tar 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)" = "7160add8f178ecef9c22e9d8f8ed28bc9a39660e98b1c28d93cc026ad9619f09" +"checksum tar 0.4.28 (registry+https://github.com/rust-lang/crates.io-index)" = "5c058ad0bd6ccb84faa24cc44d4fc99bee8a5d7ba9ff33aa4d993122d1aeeac2" "checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" "checksum termion 1.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c22cec9d8978d906be5ac94bceb5a010d885c626c4c8855721a4dbd20e3ac905" "checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" @@ -1437,11 +1465,13 @@ dependencies = [ "checksum vec_map 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" "checksum version-compare 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)" = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1" "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" -"checksum version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "078775d0255232fb988e6fccf26ddc9d1ac274299aaedcedce21c6f72cc533ce" +"checksum version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" +"checksum walkdir 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d" "checksum wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" "checksum webpki 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)" = "17d7967316d8411ca3b01821ee6c332bde138ba4363becdb492f12e514daa17f" "checksum webpki-roots 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "85d1f408918fd590908a70d36b7ac388db2edc221470333e4d6e5b598e44cabf" "checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +"checksum winapi-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" "checksum xattr 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" diff --git a/Cargo.toml b/Cargo.toml index a6d2a37a..3d118d19 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,11 +20,12 @@ name = "cookbook" path = "src/lib.rs" [dependencies] -blake3 = "0.3.3" +blake3 = "0.3.4" pbr = "1.0.2" pkgar = "0.1.6" redoxer = "0.2.19" -serde = { version = "1.0", features = ["derive"] } -sha2 = "0.8.1" +serde = { version = "1.0.110", features = ["derive"] } +sha2 = "0.8.2" termion = "1.5.5" toml = "0.5.6" +walkdir = "2.3.1" diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 4f058437..ceda3809 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -4,25 +4,73 @@ use cookbook::sha256::sha256_progress; use std::{ env, fs, - io::Write, + io::{self, Write}, path::{Path, PathBuf}, process::{self, Command, Stdio}, + time::SystemTime, }; use termion::{color, style}; +use walkdir::WalkDir; + +fn remove_all(path: &Path) -> Result<(), String> { + if path.is_dir() { + fs::remove_dir_all(path) + } else { + fs::remove_file(path) + }.map_err(|err| format!( + "failed to remove '{}': {}\n{:?}", + path.display(), + err, + err + )) +} + +fn create_dir(dir: &Path) -> Result<(), String> { + fs::create_dir(&dir).map_err(|err| format!( + "failed to create '{}': {}\n{:?}", + dir.display(), + err, + err + )) +} fn create_dir_clean(dir: &Path) -> Result<(), String> { if dir.is_dir() { - // Remove previous directory - fs::remove_dir_all(&dir).map_err(|err| format!( - "failed to remove '{}': {}\n{:?}", - dir.display(), - err, - err - ))?; + remove_all(dir)?; } - // directory - fs::create_dir(&dir).map_err(|err| format!( - "failed to create '{}': {}\n{:?}", + create_dir(dir) +} + +fn modified(path: &Path) -> Result { + let metadata = fs::metadata(path).map_err(|err| format!( + "failed to get metadata of '{}': {}\n{:#?}", + path.display(), + err, + err + ))?; + metadata.modified().map_err(|err| format!( + "failed to get modified time of '{}': {}\n{:#?}", + path.display(), + err, + err + )) +} + +fn modified_dir(dir: &Path) -> Result { + fn modified_dir_io(dir: &Path) -> io::Result { + let mut newest = fs::metadata(dir)?.modified()?; + for entry_res in WalkDir::new(dir) { + let entry = entry_res?; + let modified = entry.metadata()?.modified()?; + if modified > newest { + newest = modified; + } + } + Ok(newest) + } + + modified_dir_io(&dir).map_err(|err| format!( + "failed to get modified time of '{}': {}\n{:#?}", dir.display(), err, err @@ -104,6 +152,7 @@ fn fetch(recipe_dir: &Path, source: &SourceRecipe) -> Result { let source_dir = recipe_dir.join("source"); match source { SourceRecipe::Git { git, upstream, branch, rev } => { + //TODO: use libgit? if ! source_dir.is_dir() { // Create source.tmp let source_dir_tmp = recipe_dir.join("source.tmp"); @@ -190,16 +239,14 @@ fn fetch(recipe_dir: &Path, source: &SourceRecipe) -> Result { rename(&source_tar_tmp, &source_tar)?; } + // Calculate blake3 + let source_tar_blake3 = blake3_progress(&source_tar).map_err(|err| format!( + "failed to calculate blake3 of '{}': {}\n{:?}", + source_tar.display(), + err, + err + ))?; if let Some(blake3) = blake3 { - //TODO - // Calculate blake3 - let source_tar_blake3 = blake3_progress(&source_tar).map_err(|err| format!( - "failed to calculate blake3 of '{}': {}\n{:?}", - source_tar.display(), - err, - err - ))?; - // Check if it matches recipe if &source_tar_blake3 != blake3 { return Err(format!( @@ -208,8 +255,16 @@ fn fetch(recipe_dir: &Path, source: &SourceRecipe) -> Result { blake3 )); } + } else { + //TODO: set blake3 hash on the recipe with something like "cook fix" + eprintln!( + "WARNING: set blake3 for '{}' to '{}'", + source_tar.display(), + source_tar_blake3 + ); } + //TODO: if blake3 is set, remove sha256 if let Some(sha256) = sha256 { // Calculate sha256 let source_tar_sha256 = sha256_progress(&source_tar).map_err(|err| format!( @@ -284,26 +339,25 @@ fn fetch(recipe_dir: &Path, source: &SourceRecipe) -> Result { } fn build(recipe_dir: &Path, source_dir: &Path, build: &BuildRecipe) -> Result { + let source_modified = modified_dir(&source_dir)?; + let sysroot_dir = recipe_dir.join("sysroot"); + // Rebuild sysroot if source is newer + //TODO: rebuild on recipe changes + if sysroot_dir.is_dir() { + if modified_dir(&sysroot_dir)? < source_modified { + remove_all(&sysroot_dir)?; + } + } if ! sysroot_dir.is_dir() { // Create sysroot.tmp let sysroot_dir_tmp = recipe_dir.join("sysroot.tmp"); create_dir_clean(&sysroot_dir_tmp)?; // Make sure sysroot/include exists - fs::create_dir(sysroot_dir_tmp.join("include")).map_err(|err| format!( - "failed to create '{}/include': {}\n{:#?}", - sysroot_dir_tmp.display(), - err, - err - ))?; + create_dir(&sysroot_dir_tmp.join("include"))?; // Make sure sysroot/lib exists - fs::create_dir(sysroot_dir_tmp.join("lib")).map_err(|err| format!( - "failed to create '{}/lib': {}\n{:#?}", - sysroot_dir_tmp.display(), - err, - err - ))?; + create_dir(&sysroot_dir_tmp.join("lib"))?; for dependency in build.dependencies.iter() { let public_path = "build/public.key"; @@ -326,6 +380,13 @@ fn build(recipe_dir: &Path, source_dir: &Path, build: &BuildRecipe) -> Result Resu let public_path = "build/public.key"; if ! Path::new(secret_path).is_file() || ! Path::new(public_path).is_file() { if ! Path::new("build").is_dir() { - fs::create_dir("build").map_err(|err| format!( - "failed to create 'build': {}\n{:?}", - err, - err - ))?; + create_dir(Path::new("build"))?; } pkgar::bin::keygen(secret_path, public_path).map_err(|err| format!( "failed to generate pkgar keys: {:?}", @@ -463,6 +520,14 @@ fn package(recipe_dir: &Path, stage_dir: &Path, package: &PackageRecipe) -> Resu } let package_file = recipe_dir.join("stage.pkgar"); + // Rebuild package if stage is newer + //TODO: rebuild on recipe changes + if package_file.is_file() { + let stage_modified = modified_dir(&stage_dir)?; + if modified(&package_file)? < stage_modified { + remove_all(&package_file)?; + } + } if ! package_file.is_file() { pkgar::bin::create( secret_path, From cf7cd7d1b53e16e59e680baf5ee3db2cb6790f87 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 25 May 2020 21:52:13 -0600 Subject: [PATCH 0811/3180] Add zlib blake3 --- recipes/zlib/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/zlib/recipe.toml b/recipes/zlib/recipe.toml index 11b97874..e33f2aff 100644 --- a/recipes/zlib/recipe.toml +++ b/recipes/zlib/recipe.toml @@ -1,5 +1,6 @@ [source] tar = "http://zlib.net/zlib-1.2.11.tar.gz" +blake3 = "20db628054c3c09edea193700ca39d3c033655529cbdc5d88f3c5da7514ad949" [build] template = "custom" From 7127732eb449ad4841c12ad3bcada25566c4b26a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 26 May 2020 08:32:41 -0600 Subject: [PATCH 0812/3180] Ignore .git paths when calculating source directory modify time --- src/bin/cook.rs | 40 +++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index ceda3809..77b80c05 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -10,7 +10,7 @@ use std::{ time::SystemTime, }; use termion::{color, style}; -use walkdir::WalkDir; +use walkdir::{DirEntry, WalkDir}; fn remove_all(path: &Path) -> Result<(), String> { if path.is_dir() { @@ -56,20 +56,31 @@ fn modified(path: &Path) -> Result { )) } -fn modified_dir(dir: &Path) -> Result { - fn modified_dir_io(dir: &Path) -> io::Result { - let mut newest = fs::metadata(dir)?.modified()?; - for entry_res in WalkDir::new(dir) { - let entry = entry_res?; - let modified = entry.metadata()?.modified()?; - if modified > newest { - newest = modified; - } +fn modified_dir_inner bool>(dir: &Path, filter: F) -> io::Result { + let mut newest = fs::metadata(dir)?.modified()?; + for entry_res in WalkDir::new(dir).into_iter().filter_entry(filter) { + let entry = entry_res?; + let modified = entry.metadata()?.modified()?; + if modified > newest { + newest = modified; } - Ok(newest) } + Ok(newest) +} - modified_dir_io(&dir).map_err(|err| format!( +fn modified_dir(dir: &Path) -> Result { + modified_dir_inner(&dir, |_| true).map_err(|err| format!( + "failed to get modified time of '{}': {}\n{:#?}", + dir.display(), + err, + err + )) +} + +fn modified_dir_ignore_git(dir: &Path) -> Result { + modified_dir_inner(&dir, |entry| { + entry.file_name().to_str().map(|s| s != ".git").unwrap_or(true) + }).map_err(|err| format!( "failed to get modified time of '{}': {}\n{:#?}", dir.display(), err, @@ -339,13 +350,14 @@ fn fetch(recipe_dir: &Path, source: &SourceRecipe) -> Result { } fn build(recipe_dir: &Path, source_dir: &Path, build: &BuildRecipe) -> Result { - let source_modified = modified_dir(&source_dir)?; + let source_modified = modified_dir_ignore_git(&source_dir)?; let sysroot_dir = recipe_dir.join("sysroot"); // Rebuild sysroot if source is newer //TODO: rebuild on recipe changes if sysroot_dir.is_dir() { if modified_dir(&sysroot_dir)? < source_modified { + eprintln!("DEBUG: '{}' newer than '{}'", source_dir.display(), sysroot_dir.display()); remove_all(&sysroot_dir)?; } } @@ -384,6 +396,7 @@ fn build(recipe_dir: &Path, source_dir: &Path, build: &BuildRecipe) -> Result Resu if package_file.is_file() { let stage_modified = modified_dir(&stage_dir)?; if modified(&package_file)? < stage_modified { + eprintln!("DEBUG: '{}' newer than '{}'", stage_dir.display(), package_file.display()); remove_all(&package_file)?; } } From 6018500e1d3f389e157899cfea848b518a7ecb4a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 28 May 2020 20:16:12 -0600 Subject: [PATCH 0813/3180] Update ca-certificates legacy recipe --- recipes/ca-certificates/recipe.sh | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/recipes/ca-certificates/recipe.sh b/recipes/ca-certificates/recipe.sh index e89df590..c41b2106 100644 --- a/recipes/ca-certificates/recipe.sh +++ b/recipes/ca-certificates/recipe.sh @@ -1,31 +1,22 @@ +GIT="https://gitlab.redox-os.org/redox-os/ca-certificates.git" + function recipe_version { date "+%Y%m%d" skip=1 } -function recipe_fetch { - if [ ! -d source ] - then - mkdir source - fi - pushd source - cp ../make-ca.sh make-ca.sh - curl \ - -o certdata.txt \ - --time-cond certdata.txt \ - https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt - popd - skip=1 -} - function recipe_update { + echo "skipping update" skip=1 } function recipe_build { rm -rf build mkdir build - chmod +x ./make-ca.sh + curl \ + -o certdata.txt \ + --time-cond certdata.txt \ + https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt ./make-ca.sh -D "$PWD/build" skip=1 } From 3570bf1f19ea51031e95834c3d0fb08124c8ae8c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 2 Jun 2020 07:44:11 -0600 Subject: [PATCH 0814/3180] Sync legacy recipe for netstack --- recipes/netstack/recipe.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/netstack/recipe.sh b/recipes/netstack/recipe.sh index a32e83c6..8b826c55 100644 --- a/recipes/netstack/recipe.sh +++ b/recipes/netstack/recipe.sh @@ -1,2 +1 @@ GIT=https://gitlab.redox-os.org/redox-os/netstack.git -BRANCH=redox-unix From 2c6ed914fe58b3b7f3828c40d1518eed558e6383 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 5 Jun 2020 13:24:48 -0600 Subject: [PATCH 0815/3180] Add randd recipe --- recipes/randd/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/randd/recipe.toml diff --git a/recipes/randd/recipe.toml b/recipes/randd/recipe.toml new file mode 100644 index 00000000..911a1d79 --- /dev/null +++ b/recipes/randd/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/randd.git" + +[build] +template = "cargo" From b51cb6b4e7252991b626ef780e2cdf488582ad86 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 10 Jun 2020 11:24:54 -0600 Subject: [PATCH 0816/3180] drivers: Do not use redoxer explicitely --- recipes/drivers/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/drivers/recipe.toml b/recipes/drivers/recipe.toml index fdb43769..0491d652 100644 --- a/recipes/drivers/recipe.toml +++ b/recipes/drivers/recipe.toml @@ -4,7 +4,7 @@ git = "https://gitlab.redox-os.org/redox-os/drivers.git" [build] template = "custom" script = """ -redoxer build --release \ +"${COOKBOOK_CARGO}" build --release \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ --workspace From 40e4a4d2b8f9d1f0d46d9865557817ae4d9e7ee8 Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Wed, 17 Jun 2020 19:02:02 +0200 Subject: [PATCH 0817/3180] Add gdbserver recipe --- recipes/gdbserver/recipe.sh | 1 + recipes/gdbserver/recipe.toml | 5 +++++ 2 files changed, 6 insertions(+) create mode 100644 recipes/gdbserver/recipe.sh create mode 100644 recipes/gdbserver/recipe.toml diff --git a/recipes/gdbserver/recipe.sh b/recipes/gdbserver/recipe.sh new file mode 100644 index 00000000..9df333cc --- /dev/null +++ b/recipes/gdbserver/recipe.sh @@ -0,0 +1 @@ +GIT=https://gitlab.redox-os.org/redox-os/gdbserver.git diff --git a/recipes/gdbserver/recipe.toml b/recipes/gdbserver/recipe.toml new file mode 100644 index 00000000..1cd96c04 --- /dev/null +++ b/recipes/gdbserver/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/gdbserver.git" + +[build] +template = "cargo" From 307eb5dd0177c949846427212c972409fa79ba82 Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Thu, 25 Jun 2020 13:12:09 +0200 Subject: [PATCH 0818/3180] Update gnu-binutils to compile GDB as well --- recipes/gnu-binutils/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh index bca6e157..edd7aaf7 100644 --- a/recipes/gnu-binutils/recipe.sh +++ b/recipes/gnu-binutils/recipe.sh @@ -26,7 +26,7 @@ function recipe_build { --prefix=/ \ --with-sysroot=/ \ --with-build-sysroot="$sysroot" \ - --disable-gdb \ + --enable-gdb \ --disable-nls \ --disable-werror "$REDOX_MAKE" -j"$($NPROC)" From 267c7486c7438b5b36ef44a15ed34123c64a4e1c Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Wed, 1 Jul 2020 15:46:44 +0200 Subject: [PATCH 0819/3180] Add libexpat to GDB --- recipes/gnu-binutils/recipe.sh | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh index edd7aaf7..204c7757 100644 --- a/recipes/gnu-binutils/recipe.sh +++ b/recipes/gnu-binutils/recipe.sh @@ -1,7 +1,7 @@ GIT=https://gitlab.redox-os.org/redox-os/binutils-gdb.git BRANCH=redox GIT_UPSTREAM=git://sourceware.org/git/binutils-gdb.git -BUILD_DEPENDS=(relibc) +BUILD_DEPENDS=(expat) function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" @@ -18,7 +18,8 @@ function recipe_build { mkdir -p "$sysroot/usr" ln -sf "$sysroot/include" "$sysroot/usr/include" ln -sf "$sysroot/lib" "$sysroot/usr/lib" - export LDFLAGS="--static" + export CPPFLAGS="-I$sysroot/include -g" + export LDFLAGS="-L$sysroot/lib -static -g" ./configure \ --build=${BUILD} \ --host=${HOST} \ @@ -27,6 +28,10 @@ function recipe_build { --with-sysroot=/ \ --with-build-sysroot="$sysroot" \ --enable-gdb \ + --with-expat \ + --with-multilib \ + --with-interwork \ + --enable-targets=x86_64-unknown-redox \ --disable-nls \ --disable-werror "$REDOX_MAKE" -j"$($NPROC)" From cab2ade5f50e4cbff5ac1f17f2307879d0920da3 Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Fri, 10 Jul 2020 22:35:25 +0200 Subject: [PATCH 0820/3180] Specify --locked to ensure reproducibility Needed to stop mass-errors for us mortals without the latest rust version, ever since redox_syscall 0.1.57 was merged. --- src/bin/cook.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 77b80c05..75d75d0f 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -439,6 +439,7 @@ COOKBOOK_CARGO="${COOKBOOK_REDOXER}" COOKBOOK_CARGO_FLAGS=( --path "${COOKBOOK_SOURCE}" --root "${COOKBOOK_STAGE}" + --locked ) function cookbook_cargo { "${COOKBOOK_CARGO}" install "${COOKBOOK_CARGO_FLAGS[@]}" From 14d4519171b3ce01c37547af0ea94fa65eae2eb6 Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Fri, 10 Jul 2020 23:15:07 +0200 Subject: [PATCH 0821/3180] Specify --locked in orbterm as well --- recipes/orbterm/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/orbterm/recipe.toml b/recipes/orbterm/recipe.toml index 16c3cdfb..0cdbea60 100644 --- a/recipes/orbterm/recipe.toml +++ b/recipes/orbterm/recipe.toml @@ -7,6 +7,7 @@ script = """ COOKBOOK_CARGO_FLAGS=( --path "${COOKBOOK_SOURCE}" --root "${COOKBOOK_STAGE}/ui" + --locked ) cookbook_cargo """ From 46bc2067a80c626a7ec3781e09045ce4c9c6a420 Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Fri, 10 Jul 2020 23:19:48 +0200 Subject: [PATCH 0822/3180] Lock orbutils --- recipes/orbutils/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/orbutils/recipe.toml b/recipes/orbutils/recipe.toml index 135a66ec..e4e3e196 100644 --- a/recipes/orbutils/recipe.toml +++ b/recipes/orbutils/recipe.toml @@ -7,6 +7,7 @@ script = """ COOKBOOK_CARGO_FLAGS=( --path "${COOKBOOK_SOURCE}" --root "${COOKBOOK_STAGE}/ui" + --locked ) cookbook_cargo """ From f6baea67ce534312b9e2a77005fb70647a6ee1bb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 13 Jul 2020 20:47:09 -0600 Subject: [PATCH 0823/3180] Fix ca-certificates install location --- recipes/ca-certificates/recipe.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/ca-certificates/recipe.toml b/recipes/ca-certificates/recipe.toml index bff2aab4..17bc5038 100644 --- a/recipes/ca-certificates/recipe.toml +++ b/recipes/ca-certificates/recipe.toml @@ -9,5 +9,6 @@ curl \ --time-cond certdata.txt \ https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt "${COOKBOOK_SOURCE}/make-ca.sh" -D "${COOKBOOK_BUILD}" -cp -rv "${COOKBOOK_BUILD}/etc/ssl/certs" "${COOKBOOK_STAGE}/ssl" +mkdir -pv "${COOKBOOK_STAGE}/ssl" +cp -rv "${COOKBOOK_BUILD}/etc/ssl/certs" "${COOKBOOK_STAGE}/ssl/certs" """ From 85bf534f77adf1cc976be8be918f9a799040a241 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 14 Jul 2020 20:39:51 -0600 Subject: [PATCH 0824/3180] Add bash recipe.toml --- recipes/bash/recipe.toml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 recipes/bash/recipe.toml diff --git a/recipes/bash/recipe.toml b/recipes/bash/recipe.toml new file mode 100644 index 00000000..b3e0ed2e --- /dev/null +++ b/recipes/bash/recipe.toml @@ -0,0 +1,21 @@ +[source] +tar = "http://ftp.gnu.org/gnu/bash/bash-4.4.tar.gz" +dependencies = [ + "gettext" +] +patches = [ + "redox.patch" +] +script = """ +wget -O support/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub +""" + +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --disable-readline + bash_cv_getenv_redef=no +) +cookbook_configure +""" From dfd25bde8b4832e9fd083774ffabe0121ff38d31 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 14 Jul 2020 20:40:14 -0600 Subject: [PATCH 0825/3180] Fix incorrect dependencies key --- recipes/orbterm/recipe.toml | 2 +- recipes/orbutils/recipe.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/orbterm/recipe.toml b/recipes/orbterm/recipe.toml index 0cdbea60..e6e23e15 100644 --- a/recipes/orbterm/recipe.toml +++ b/recipes/orbterm/recipe.toml @@ -13,6 +13,6 @@ cookbook_cargo """ [package] -depends = [ +dependencies = [ "orbital" ] diff --git a/recipes/orbutils/recipe.toml b/recipes/orbutils/recipe.toml index e4e3e196..fd6a5159 100644 --- a/recipes/orbutils/recipe.toml +++ b/recipes/orbutils/recipe.toml @@ -13,6 +13,6 @@ cookbook_cargo """ [package] -depends = [ +dependencies = [ "orbital" ] From aec6b0294ec8bc238ca8559d5835e0168079b17c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 14 Jul 2020 20:46:31 -0600 Subject: [PATCH 0826/3180] Add gettext recipe.toml --- recipes/bash/recipe.toml | 6 +++--- recipes/gettext/recipe.toml | 27 +++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 recipes/gettext/recipe.toml diff --git a/recipes/bash/recipe.toml b/recipes/bash/recipe.toml index b3e0ed2e..be87f9d6 100644 --- a/recipes/bash/recipe.toml +++ b/recipes/bash/recipe.toml @@ -1,8 +1,5 @@ [source] tar = "http://ftp.gnu.org/gnu/bash/bash-4.4.tar.gz" -dependencies = [ - "gettext" -] patches = [ "redox.patch" ] @@ -12,6 +9,9 @@ wget -O support/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/con [build] template = "custom" +dependencies = [ + "gettext" +] script = """ COOKBOOK_CONFIGURE_FLAGS+=( --disable-readline diff --git a/recipes/gettext/recipe.toml b/recipes/gettext/recipe.toml new file mode 100644 index 00000000..4460b449 --- /dev/null +++ b/recipes/gettext/recipe.toml @@ -0,0 +1,27 @@ +[source] +tar = "http://ftp.gnu.org/pub/gnu/gettext/gettext-0.19.8.1.tar.xz" +patches = [ + "redox.patch" +] +script = """ +wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub +""" + +[build] +template = "custom" +dependencies = [ + "libiconv" +] +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --disable-shared + --enable-static + ac_cv_have_decl_program_invocation_name=no + gt_cv_locale_fr=false + gt_cv_locale_fr_utf8=false + gt_cv_locale_ja=false + gt_cv_locale_tr_utf8=false + gt_cv_locale_zh_CN=false +) +cookbook_configure +""" From 9a60468f0f744c1ae4c6d473c12b71f81dd470cb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 14 Jul 2020 20:53:02 -0600 Subject: [PATCH 0827/3180] Update bash patch --- recipes/bash/redox.patch | 1355 +------------------------------------- 1 file changed, 19 insertions(+), 1336 deletions(-) diff --git a/recipes/bash/redox.patch b/recipes/bash/redox.patch index 7dba459f..21631f5c 100644 --- a/recipes/bash/redox.patch +++ b/recipes/bash/redox.patch @@ -1,6 +1,18 @@ +diff -ruwN source/builtins/ulimit.def source-new/builtins/ulimit.def +--- source/builtins/ulimit.def 2016-03-11 07:18:54.000000000 -0700 ++++ source-new/builtins/ulimit.def 2020-07-14 20:52:15.875646752 -0600 +@@ -598,7 +598,7 @@ + } + else + { +-#if defined (HAVE_RESOURCE) ++#if defined (HAVE_RESOURCE) && !defined(__redox__) + if (getrlimit (limits[ind].parameter, &limit) < 0) + return -1; + # if defined (HPUX9) diff -ruwN source/config-top.h source-new/config-top.h --- source/config-top.h 2016-05-19 12:34:02.000000000 -0600 -+++ source-new/config-top.h 2019-01-28 12:42:45.660815213 -0700 ++++ source-new/config-top.h 2020-07-14 20:50:54.546545430 -0600 @@ -63,14 +63,14 @@ /* The default value of the PATH variable. */ #ifndef DEFAULT_PATH_VALUE @@ -20,7 +32,7 @@ diff -ruwN source/config-top.h source-new/config-top.h /* Default primary and secondary prompt strings. */ diff -ruwN source/configure.ac source-new/configure.ac --- source/configure.ac 2016-09-07 14:56:28.000000000 -0600 -+++ source-new/configure.ac 2019-01-28 13:53:45.000616985 -0700 ++++ source-new/configure.ac 2020-07-14 20:50:54.550545485 -0600 @@ -90,6 +90,7 @@ *-opennt*|*-interix*) opt_bash_malloc=no ;; # Interix, now owned by Microsoft *-nsk*) opt_bash_malloc=no ;; # HP NonStop @@ -31,7 +43,7 @@ diff -ruwN source/configure.ac source-new/configure.ac # memory scrambling on free() diff -ruwN source/execute_cmd.c source-new/execute_cmd.c --- source/execute_cmd.c 2016-08-26 05:10:08.000000000 -0600 -+++ source-new/execute_cmd.c 2019-01-28 12:42:52.680865726 -0700 ++++ source-new/execute_cmd.c 2020-07-14 20:50:54.550545485 -0600 @@ -1335,15 +1335,17 @@ nullcmd = (command == 0) || (command->type == cm_simple && command->value.Simple->words == 0 && command->value.Simple->redirects == 0); if (posixly_correct && nullcmd) @@ -53,7 +65,7 @@ diff -ruwN source/execute_cmd.c source-new/execute_cmd.c old_flags = command->flags; diff -ruwN source/general.c source-new/general.c --- source/general.c 2016-08-11 09:16:56.000000000 -0600 -+++ source-new/general.c 2019-01-28 12:45:41.801895779 -0700 ++++ source-new/general.c 2020-07-14 20:50:54.550545485 -0600 @@ -476,6 +476,7 @@ void check_dev_tty () @@ -83,1338 +95,9 @@ diff -ruwN source/general.c source-new/general.c ; *p_index = i; -diff -ruwN source/general.c.orig source-new/general.c.orig ---- source/general.c.orig 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/general.c.orig 2019-01-28 12:42:40.972781097 -0700 -@@ -0,0 +1,1325 @@ -+/* general.c -- Stuff that is used by all files. */ -+ -+/* Copyright (C) 1987-2016 Free Software Foundation, Inc. -+ -+ This file is part of GNU Bash, the Bourne Again SHell. -+ -+ Bash is free software: you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation, either version 3 of the License, or -+ (at your option) any later version. -+ -+ Bash is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with Bash. If not, see . -+*/ -+ -+#include "config.h" -+ -+#include "bashtypes.h" -+#if defined (HAVE_SYS_PARAM_H) -+# include -+#endif -+#include "posixstat.h" -+ -+#if defined (HAVE_UNISTD_H) -+# include -+#endif -+ -+#include "filecntl.h" -+#include "bashansi.h" -+#include -+#include "chartypes.h" -+#include -+ -+#include "bashintl.h" -+ -+#include "shell.h" -+#include "test.h" -+#include "trap.h" -+ -+#if defined (HAVE_MBSTR_H) && defined (HAVE_MBSCHR) -+# include /* mbschr */ -+#endif -+ -+#include -+ -+#if !defined (errno) -+extern int errno; -+#endif /* !errno */ -+ -+extern int expand_aliases; -+extern int interactive_comments; -+extern int check_hashed_filenames; -+extern int source_uses_path; -+extern int source_searches_cwd; -+extern int posixly_correct; -+extern int inherit_errexit; -+ -+static char *bash_special_tilde_expansions __P((char *)); -+static int unquoted_tilde_word __P((const char *)); -+static void initialize_group_array __P((void)); -+ -+/* A standard error message to use when getcwd() returns NULL. */ -+const char * const bash_getcwd_errstr = N_("getcwd: cannot access parent directories"); -+ -+/* Do whatever is necessary to initialize `Posix mode'. */ -+void -+posix_initialize (on) -+ int on; -+{ -+ /* Things that should be turned on when posix mode is enabled. */ -+ if (on != 0) -+ { -+ interactive_comments = source_uses_path = expand_aliases = 1; -+ inherit_errexit = 1; -+ source_searches_cwd = 0; -+ } -+ -+ /* Things that should be turned on when posix mode is disabled. */ -+ if (on == 0) -+ { -+ source_searches_cwd = 1; -+ expand_aliases = interactive_shell; -+ } -+} -+ -+/* **************************************************************** */ -+/* */ -+/* Functions to convert to and from and display non-standard types */ -+/* */ -+/* **************************************************************** */ -+ -+#if defined (RLIMTYPE) -+RLIMTYPE -+string_to_rlimtype (s) -+ char *s; -+{ -+ RLIMTYPE ret; -+ int neg; -+ -+ ret = 0; -+ neg = 0; -+ while (s && *s && whitespace (*s)) -+ s++; -+ if (s && (*s == '-' || *s == '+')) -+ { -+ neg = *s == '-'; -+ s++; -+ } -+ for ( ; s && *s && DIGIT (*s); s++) -+ ret = (ret * 10) + TODIGIT (*s); -+ return (neg ? -ret : ret); -+} -+ -+void -+print_rlimtype (n, addnl) -+ RLIMTYPE n; -+ int addnl; -+{ -+ char s[INT_STRLEN_BOUND (RLIMTYPE) + 1], *p; -+ -+ p = s + sizeof(s); -+ *--p = '\0'; -+ -+ if (n < 0) -+ { -+ do -+ *--p = '0' - n % 10; -+ while ((n /= 10) != 0); -+ -+ *--p = '-'; -+ } -+ else -+ { -+ do -+ *--p = '0' + n % 10; -+ while ((n /= 10) != 0); -+ } -+ -+ printf ("%s%s", p, addnl ? "\n" : ""); -+} -+#endif /* RLIMTYPE */ -+ -+/* **************************************************************** */ -+/* */ -+/* Input Validation Functions */ -+/* */ -+/* **************************************************************** */ -+ -+/* Return non-zero if all of the characters in STRING are digits. */ -+int -+all_digits (string) -+ const char *string; -+{ -+ register const char *s; -+ -+ for (s = string; *s; s++) -+ if (DIGIT (*s) == 0) -+ return (0); -+ -+ return (1); -+} -+ -+/* Return non-zero if the characters pointed to by STRING constitute a -+ valid number. Stuff the converted number into RESULT if RESULT is -+ not null. */ -+int -+legal_number (string, result) -+ const char *string; -+ intmax_t *result; -+{ -+ intmax_t value; -+ char *ep; -+ -+ if (result) -+ *result = 0; -+ -+ if (string == 0) -+ return 0; -+ -+ errno = 0; -+ value = strtoimax (string, &ep, 10); -+ if (errno || ep == string) -+ return 0; /* errno is set on overflow or underflow */ -+ -+ /* Skip any trailing whitespace, since strtoimax does not. */ -+ while (whitespace (*ep)) -+ ep++; -+ -+ /* If *string is not '\0' but *ep is '\0' on return, the entire string -+ is valid. */ -+ if (*string && *ep == '\0') -+ { -+ if (result) -+ *result = value; -+ /* The SunOS4 implementation of strtol() will happily ignore -+ overflow conditions, so this cannot do overflow correctly -+ on those systems. */ -+ return 1; -+ } -+ -+ return (0); -+} -+ -+/* Return 1 if this token is a legal shell `identifier'; that is, it consists -+ solely of letters, digits, and underscores, and does not begin with a -+ digit. */ -+int -+legal_identifier (name) -+ const char *name; -+{ -+ register const char *s; -+ unsigned char c; -+ -+ if (!name || !(c = *name) || (legal_variable_starter (c) == 0)) -+ return (0); -+ -+ for (s = name + 1; (c = *s) != 0; s++) -+ { -+ if (legal_variable_char (c) == 0) -+ return (0); -+ } -+ return (1); -+} -+ -+/* Return 1 if NAME is a valid value that can be assigned to a nameref -+ variable. FLAGS can be 2, in which case the name is going to be used -+ to create a variable. Other values are currently unused, but could -+ be used to allow values to be stored and indirectly referenced, but -+ not used in assignments. */ -+int -+valid_nameref_value (name, flags) -+ const char *name; -+ int flags; -+{ -+ if (name == 0 || *name == 0) -+ return 0; -+ -+ /* valid identifier */ -+#if defined (ARRAY_VARS) -+ if (legal_identifier (name) || (flags != 2 && valid_array_reference (name, 0))) -+#else -+ if (legal_identifier (name)) -+#endif -+ return 1; -+ -+ return 0; -+} -+ -+int -+check_selfref (name, value, flags) -+ const char *name; -+ char *value; -+ int flags; -+{ -+ char *t; -+ -+ if (STREQ (name, value)) -+ return 1; -+ -+#if defined (ARRAY_VARS) -+ if (valid_array_reference (value, 0)) -+ { -+ t = array_variable_name (value, (char **)NULL, (int *)NULL); -+ if (t && STREQ (name, t)) -+ { -+ free (t); -+ return 1; -+ } -+ free (t); -+ } -+#endif -+ -+ return 0; /* not a self reference */ -+} -+ -+/* Make sure that WORD is a valid shell identifier, i.e. -+ does not contain a dollar sign, nor is quoted in any way. Nor -+ does it consist of all digits. If CHECK_WORD is non-zero, -+ the word is checked to ensure that it consists of only letters, -+ digits, and underscores. */ -+int -+check_identifier (word, check_word) -+ WORD_DESC *word; -+ int check_word; -+{ -+ if ((word->flags & (W_HASDOLLAR|W_QUOTED)) || all_digits (word->word)) -+ { -+ internal_error (_("`%s': not a valid identifier"), word->word); -+ return (0); -+ } -+ else if (check_word && legal_identifier (word->word) == 0) -+ { -+ internal_error (_("`%s': not a valid identifier"), word->word); -+ return (0); -+ } -+ else -+ return (1); -+} -+ -+/* Return 1 if STRING is a function name that the shell will import from -+ the environment. Currently we reject attempts to import shell functions -+ containing slashes, beginning with newlines or containing blanks. In -+ Posix mode, we require that STRING be a valid shell identifier. Not -+ used yet. */ -+int -+importable_function_name (string, len) -+ const char *string; -+ size_t len; -+{ -+ if (absolute_program (string)) /* don't allow slash */ -+ return 0; -+ if (*string == '\n') /* can't start with a newline */ -+ return 0; -+ if (shellblank (*string) || shellblank(string[len-1])) -+ return 0; -+ return (posixly_correct ? legal_identifier (string) : 1); -+} -+ -+int -+exportable_function_name (string) -+ const char *string; -+{ -+ if (absolute_program (string)) -+ return 0; -+ if (mbschr (string, '=') != 0) -+ return 0; -+ return 1; -+} -+ -+/* Return 1 if STRING comprises a valid alias name. The shell accepts -+ essentially all characters except those which must be quoted to the -+ parser (which disqualifies them from alias expansion anyway) and `/'. */ -+int -+legal_alias_name (string, flags) -+ const char *string; -+ int flags; -+{ -+ register const char *s; -+ -+ for (s = string; *s; s++) -+ if (shellbreak (*s) || shellxquote (*s) || shellexp (*s) || (*s == '/')) -+ return 0; -+ return 1; -+} -+ -+/* Returns non-zero if STRING is an assignment statement. The returned value -+ is the index of the `=' sign. */ -+int -+assignment (string, flags) -+ const char *string; -+ int flags; -+{ -+ register unsigned char c; -+ register int newi, indx; -+ -+ c = string[indx = 0]; -+ -+#if defined (ARRAY_VARS) -+ if ((legal_variable_starter (c) == 0) && (flags == 0 || c != '[')) /* ] */ -+#else -+ if (legal_variable_starter (c) == 0) -+#endif -+ return (0); -+ -+ while (c = string[indx]) -+ { -+ /* The following is safe. Note that '=' at the start of a word -+ is not an assignment statement. */ -+ if (c == '=') -+ return (indx); -+ -+#if defined (ARRAY_VARS) -+ if (c == '[') -+ { -+ newi = skipsubscript (string, indx, 0); -+ if (string[newi++] != ']') -+ return (0); -+ if (string[newi] == '+' && string[newi+1] == '=') -+ return (newi + 1); -+ return ((string[newi] == '=') ? newi : 0); -+ } -+#endif /* ARRAY_VARS */ -+ -+ /* Check for `+=' */ -+ if (c == '+' && string[indx+1] == '=') -+ return (indx + 1); -+ -+ /* Variable names in assignment statements may contain only letters, -+ digits, and `_'. */ -+ if (legal_variable_char (c) == 0) -+ return (0); -+ -+ indx++; -+ } -+ return (0); -+} -+ -+/* **************************************************************** */ -+/* */ -+/* Functions to manage files and file descriptors */ -+/* */ -+/* **************************************************************** */ -+ -+/* A function to unset no-delay mode on a file descriptor. Used in shell.c -+ to unset it on the fd passed as stdin. Should be called on stdin if -+ readline gets an EAGAIN or EWOULDBLOCK when trying to read input. */ -+ -+#if !defined (O_NDELAY) -+# if defined (FNDELAY) -+# define O_NDELAY FNDELAY -+# endif -+#endif /* O_NDELAY */ -+ -+/* Make sure no-delay mode is not set on file descriptor FD. */ -+int -+sh_unset_nodelay_mode (fd) -+ int fd; -+{ -+ int flags, bflags; -+ -+ if ((flags = fcntl (fd, F_GETFL, 0)) < 0) -+ return -1; -+ -+ bflags = 0; -+ -+ /* This is defined to O_NDELAY in filecntl.h if O_NONBLOCK is not present -+ and O_NDELAY is defined. */ -+#ifdef O_NONBLOCK -+ bflags |= O_NONBLOCK; -+#endif -+ -+#ifdef O_NDELAY -+ bflags |= O_NDELAY; -+#endif -+ -+ if (flags & bflags) -+ { -+ flags &= ~bflags; -+ return (fcntl (fd, F_SETFL, flags)); -+ } -+ -+ return 0; -+} -+ -+/* Return 1 if file descriptor FD is valid; 0 otherwise. */ -+int -+sh_validfd (fd) -+ int fd; -+{ -+ return (fcntl (fd, F_GETFD, 0) >= 0); -+} -+ -+int -+fd_ispipe (fd) -+ int fd; -+{ -+ errno = 0; -+ return ((lseek (fd, 0L, SEEK_CUR) < 0) && (errno == ESPIPE)); -+} -+ -+/* There is a bug in the NeXT 2.1 rlogind that causes opens -+ of /dev/tty to fail. */ -+ -+#if defined (__BEOS__) -+/* On BeOS, opening in non-blocking mode exposes a bug in BeOS, so turn it -+ into a no-op. This should probably go away in the future. */ -+# undef O_NONBLOCK -+# define O_NONBLOCK 0 -+#endif /* __BEOS__ */ -+ -+void -+check_dev_tty () -+{ -+#if 0 -+ int tty_fd; -+ char *tty; -+ -+ tty_fd = open ("/dev/tty", O_RDWR|O_NONBLOCK); -+ -+ if (tty_fd < 0) -+ { -+ tty = (char *)ttyname (fileno (stdin)); -+ if (tty == 0) -+ return; -+ tty_fd = open (tty, O_RDWR|O_NONBLOCK); -+ } -+ if (tty_fd >= 0) -+ close (tty_fd); -+#endif -+} -+ -+/* Return 1 if PATH1 and PATH2 are the same file. This is kind of -+ expensive. If non-NULL STP1 and STP2 point to stat structures -+ corresponding to PATH1 and PATH2, respectively. */ -+int -+same_file (path1, path2, stp1, stp2) -+ const char *path1, *path2; -+ struct stat *stp1, *stp2; -+{ -+ struct stat st1, st2; -+ -+ if (stp1 == NULL) -+ { -+ if (stat (path1, &st1) != 0) -+ return (0); -+ stp1 = &st1; -+ } -+ -+ if (stp2 == NULL) -+ { -+ if (stat (path2, &st2) != 0) -+ return (0); -+ stp2 = &st2; -+ } -+ -+ return ((stp1->st_dev == stp2->st_dev) && (stp1->st_ino == stp2->st_ino)); -+} -+ -+/* Move FD to a number close to the maximum number of file descriptors -+ allowed in the shell process, to avoid the user stepping on it with -+ redirection and causing us extra work. If CHECK_NEW is non-zero, -+ we check whether or not the file descriptors are in use before -+ duplicating FD onto them. MAXFD says where to start checking the -+ file descriptors. If it's less than 20, we get the maximum value -+ available from getdtablesize(2). */ -+int -+move_to_high_fd (fd, check_new, maxfd) -+ int fd, check_new, maxfd; -+{ -+ int script_fd, nfds, ignore; -+ -+ if (maxfd < 20) -+ { -+ nfds = getdtablesize (); -+ if (nfds <= 0) -+ nfds = 20; -+ if (nfds > HIGH_FD_MAX) -+ nfds = HIGH_FD_MAX; /* reasonable maximum */ -+ } -+ else -+ nfds = maxfd; -+ -+ for (nfds--; check_new && nfds > 3; nfds--) -+ if (fcntl (nfds, F_GETFD, &ignore) == -1) -+ break; -+ -+ if (nfds > 3 && fd != nfds && (script_fd = dup2 (fd, nfds)) != -1) -+ { -+ if (check_new == 0 || fd != fileno (stderr)) /* don't close stderr */ -+ close (fd); -+ return (script_fd); -+ } -+ -+ /* OK, we didn't find one less than our artificial maximum; return the -+ original file descriptor. */ -+ return (fd); -+} -+ -+/* Return non-zero if the characters from SAMPLE are not all valid -+ characters to be found in the first line of a shell script. We -+ check up to the first newline, or SAMPLE_LEN, whichever comes first. -+ All of the characters must be printable or whitespace. */ -+ -+int -+check_binary_file (sample, sample_len) -+ const char *sample; -+ int sample_len; -+{ -+ register int i; -+ unsigned char c; -+ -+ for (i = 0; i < sample_len; i++) -+ { -+ c = sample[i]; -+ if (c == '\n') -+ return (0); -+ if (c == '\0') -+ return (1); -+ } -+ -+ return (0); -+} -+ -+/* **************************************************************** */ -+/* */ -+/* Functions to manipulate pipes */ -+/* */ -+/* **************************************************************** */ -+ -+int -+sh_openpipe (pv) -+ int *pv; -+{ -+ int r; -+ -+ if ((r = pipe (pv)) < 0) -+ return r; -+ -+ pv[0] = move_to_high_fd (pv[0], 1, 64); -+ pv[1] = move_to_high_fd (pv[1], 1, 64); -+ -+ return 0; -+} -+ -+int -+sh_closepipe (pv) -+ int *pv; -+{ -+ if (pv[0] >= 0) -+ close (pv[0]); -+ -+ if (pv[1] >= 0) -+ close (pv[1]); -+ -+ pv[0] = pv[1] = -1; -+ return 0; -+} -+ -+/* **************************************************************** */ -+/* */ -+/* Functions to inspect pathnames */ -+/* */ -+/* **************************************************************** */ -+ -+int -+file_exists (fn) -+ const char *fn; -+{ -+ struct stat sb; -+ -+ return (stat (fn, &sb) == 0); -+} -+ -+int -+file_isdir (fn) -+ const char *fn; -+{ -+ struct stat sb; -+ -+ return ((stat (fn, &sb) == 0) && S_ISDIR (sb.st_mode)); -+} -+ -+int -+file_iswdir (fn) -+ const char *fn; -+{ -+ return (file_isdir (fn) && sh_eaccess (fn, W_OK) == 0); -+} -+ -+/* Return 1 if STRING is "." or "..", optionally followed by a directory -+ separator */ -+int -+path_dot_or_dotdot (string) -+ const char *string; -+{ -+ if (string == 0 || *string == '\0' || *string != '.') -+ return (0); -+ -+ /* string[0] == '.' */ -+ if (PATHSEP(string[1]) || (string[1] == '.' && PATHSEP(string[2]))) -+ return (1); -+ -+ return (0); -+} -+ -+/* Return 1 if STRING contains an absolute pathname, else 0. Used by `cd' -+ to decide whether or not to look up a directory name in $CDPATH. */ -+int -+absolute_pathname (string) -+ const char *string; -+{ -+ if (string == 0 || *string == '\0') -+ return (0); -+ -+ if (ABSPATH(string)) -+ return (1); -+ -+ if (string[0] == '.' && PATHSEP(string[1])) /* . and ./ */ -+ return (1); -+ -+ if (string[0] == '.' && string[1] == '.' && PATHSEP(string[2])) /* .. and ../ */ -+ return (1); -+ -+ return (0); -+} -+ -+/* Return 1 if STRING is an absolute program name; it is absolute if it -+ contains any slashes. This is used to decide whether or not to look -+ up through $PATH. */ -+int -+absolute_program (string) -+ const char *string; -+{ -+ return ((char *)mbschr (string, '/') != (char *)NULL); -+} -+ -+/* **************************************************************** */ -+/* */ -+/* Functions to manipulate pathnames */ -+/* */ -+/* **************************************************************** */ -+ -+/* Turn STRING (a pathname) into an absolute pathname, assuming that -+ DOT_PATH contains the symbolic location of `.'. This always -+ returns a new string, even if STRING was an absolute pathname to -+ begin with. */ -+char * -+make_absolute (string, dot_path) -+ const char *string, *dot_path; -+{ -+ char *result; -+ -+ if (dot_path == 0 || ABSPATH(string)) -+#ifdef __CYGWIN__ -+ { -+ char pathbuf[PATH_MAX + 1]; -+ -+ cygwin_conv_to_full_posix_path (string, pathbuf); -+ result = savestring (pathbuf); -+ } -+#else -+ result = savestring (string); -+#endif -+ else -+ result = sh_makepath (dot_path, string, 0); -+ -+ return (result); -+} -+ -+/* Return the `basename' of the pathname in STRING (the stuff after the -+ last '/'). If STRING is `/', just return it. */ -+char * -+base_pathname (string) -+ char *string; -+{ -+ char *p; -+ -+#if 0 -+ if (absolute_pathname (string) == 0) -+ return (string); -+#endif -+ -+ if (string[0] == '/' && string[1] == 0) -+ return (string); -+ -+ p = (char *)strrchr (string, '/'); -+ return (p ? ++p : string); -+} -+ -+/* Return the full pathname of FILE. Easy. Filenames that begin -+ with a '/' are returned as themselves. Other filenames have -+ the current working directory prepended. A new string is -+ returned in either case. */ -+char * -+full_pathname (file) -+ char *file; -+{ -+ char *ret; -+ -+ file = (*file == '~') ? bash_tilde_expand (file, 0) : savestring (file); -+ -+ if (ABSPATH(file)) -+ return (file); -+ -+ ret = sh_makepath ((char *)NULL, file, (MP_DOCWD|MP_RMDOT)); -+ free (file); -+ -+ return (ret); -+} -+ -+/* A slightly related function. Get the prettiest name of this -+ directory possible. */ -+static char tdir[PATH_MAX]; -+ -+/* Return a pretty pathname. If the first part of the pathname is -+ the same as $HOME, then replace that with `~'. */ -+char * -+polite_directory_format (name) -+ char *name; -+{ -+ char *home; -+ int l; -+ -+ home = get_string_value ("HOME"); -+ l = home ? strlen (home) : 0; -+ if (l > 1 && strncmp (home, name, l) == 0 && (!name[l] || name[l] == '/')) -+ { -+ strncpy (tdir + 1, name + l, sizeof(tdir) - 2); -+ tdir[0] = '~'; -+ tdir[sizeof(tdir) - 1] = '\0'; -+ return (tdir); -+ } -+ else -+ return (name); -+} -+ -+/* Trim NAME. If NAME begins with `~/', skip over tilde prefix. Trim to -+ keep any tilde prefix and PROMPT_DIRTRIM trailing directory components -+ and replace the intervening characters with `...' */ -+char * -+trim_pathname (name, maxlen) -+ char *name; -+ int maxlen; -+{ -+ int nlen, ndirs; -+ intmax_t nskip; -+ char *nbeg, *nend, *ntail, *v; -+ -+ if (name == 0 || (nlen = strlen (name)) == 0) -+ return name; -+ nend = name + nlen; -+ -+ v = get_string_value ("PROMPT_DIRTRIM"); -+ if (v == 0 || *v == 0) -+ return name; -+ if (legal_number (v, &nskip) == 0 || nskip <= 0) -+ return name; -+ -+ /* Skip over tilde prefix */ -+ nbeg = name; -+ if (name[0] == '~') -+ for (nbeg = name; *nbeg; nbeg++) -+ if (*nbeg == '/') -+ { -+ nbeg++; -+ break; -+ } -+ if (*nbeg == 0) -+ return name; -+ -+ for (ndirs = 0, ntail = nbeg; *ntail; ntail++) -+ if (*ntail == '/') -+ ndirs++; -+ if (ndirs < nskip) -+ return name; -+ -+ for (ntail = (*nend == '/') ? nend : nend - 1; ntail > nbeg; ntail--) -+ { -+ if (*ntail == '/') -+ nskip--; -+ if (nskip == 0) -+ break; -+ } -+ if (ntail == nbeg) -+ return name; -+ -+ /* Now we want to return name[0..nbeg]+"..."+ntail, modifying name in place */ -+ nlen = ntail - nbeg; -+ if (nlen <= 3) -+ return name; -+ -+ *nbeg++ = '.'; -+ *nbeg++ = '.'; -+ *nbeg++ = '.'; -+ -+ nlen = nend - ntail; -+ memmove (nbeg, ntail, nlen); -+ nbeg[nlen] = '\0'; -+ -+ return name; -+} -+ -+/* Return a printable representation of FN without special characters. The -+ caller is responsible for freeing memory if this returns something other -+ than its argument. If FLAGS is non-zero, we are printing for portable -+ re-input and should single-quote filenames appropriately. */ -+char * -+printable_filename (fn, flags) -+ char *fn; -+ int flags; -+{ -+ char *newf; -+ -+ if (ansic_shouldquote (fn)) -+ newf = ansic_quote (fn, 0, NULL); -+ else if (flags && sh_contains_shell_metas (fn)) -+ newf = sh_single_quote (fn); -+ else -+ newf = fn; -+ -+ return newf; -+} -+ -+/* Given a string containing units of information separated by colons, -+ return the next one pointed to by (P_INDEX), or NULL if there are no more. -+ Advance (P_INDEX) to the character after the colon. */ -+char * -+extract_colon_unit (string, p_index) -+ char *string; -+ int *p_index; -+{ -+ int i, start, len; -+ char *value; -+ -+ if (string == 0) -+ return (string); -+ -+ len = strlen (string); -+ if (*p_index >= len) -+ return ((char *)NULL); -+ -+ i = *p_index; -+ -+ /* Each call to this routine leaves the index pointing at a colon if -+ there is more to the path. If I is > 0, then increment past the -+ `:'. If I is 0, then the path has a leading colon. Trailing colons -+ are handled OK by the `else' part of the if statement; an empty -+ string is returned in that case. */ -+ if (i && string[i] == ':') -+ i++; -+ -+ for (start = i; string[i] && string[i] != ':'; i++) -+ ; -+ -+ *p_index = i; -+ -+ if (i == start) -+ { -+ if (string[i]) -+ (*p_index)++; -+ /* Return "" in the case of a trailing `:'. */ -+ value = (char *)xmalloc (1); -+ value[0] = '\0'; -+ } -+ else -+ value = substring (string, start, i); -+ -+ return (value); -+} -+ -+/* **************************************************************** */ -+/* */ -+/* Tilde Initialization and Expansion */ -+/* */ -+/* **************************************************************** */ -+ -+#if defined (PUSHD_AND_POPD) -+extern char *get_dirstack_from_string __P((char *)); -+#endif -+ -+static char **bash_tilde_prefixes; -+static char **bash_tilde_prefixes2; -+static char **bash_tilde_suffixes; -+static char **bash_tilde_suffixes2; -+ -+/* If tilde_expand hasn't been able to expand the text, perhaps it -+ is a special shell expansion. This function is installed as the -+ tilde_expansion_preexpansion_hook. It knows how to expand ~- and ~+. -+ If PUSHD_AND_POPD is defined, ~[+-]N expands to directories from the -+ directory stack. */ -+static char * -+bash_special_tilde_expansions (text) -+ char *text; -+{ -+ char *result; -+ -+ result = (char *)NULL; -+ -+ if (text[0] == '+' && text[1] == '\0') -+ result = get_string_value ("PWD"); -+ else if (text[0] == '-' && text[1] == '\0') -+ result = get_string_value ("OLDPWD"); -+#if defined (PUSHD_AND_POPD) -+ else if (DIGIT (*text) || ((*text == '+' || *text == '-') && DIGIT (text[1]))) -+ result = get_dirstack_from_string (text); -+#endif -+ -+ return (result ? savestring (result) : (char *)NULL); -+} -+ -+/* Initialize the tilde expander. In Bash, we handle `~-' and `~+', as -+ well as handling special tilde prefixes; `:~" and `=~' are indications -+ that we should do tilde expansion. */ -+void -+tilde_initialize () -+{ -+ static int times_called = 0; -+ -+ /* Tell the tilde expander that we want a crack first. */ -+ tilde_expansion_preexpansion_hook = bash_special_tilde_expansions; -+ -+ /* Tell the tilde expander about special strings which start a tilde -+ expansion, and the special strings that end one. Only do this once. -+ tilde_initialize () is called from within bashline_reinitialize (). */ -+ if (times_called++ == 0) -+ { -+ bash_tilde_prefixes = strvec_create (3); -+ bash_tilde_prefixes[0] = "=~"; -+ bash_tilde_prefixes[1] = ":~"; -+ bash_tilde_prefixes[2] = (char *)NULL; -+ -+ bash_tilde_prefixes2 = strvec_create (2); -+ bash_tilde_prefixes2[0] = ":~"; -+ bash_tilde_prefixes2[1] = (char *)NULL; -+ -+ tilde_additional_prefixes = bash_tilde_prefixes; -+ -+ bash_tilde_suffixes = strvec_create (3); -+ bash_tilde_suffixes[0] = ":"; -+ bash_tilde_suffixes[1] = "=~"; /* XXX - ?? */ -+ bash_tilde_suffixes[2] = (char *)NULL; -+ -+ tilde_additional_suffixes = bash_tilde_suffixes; -+ -+ bash_tilde_suffixes2 = strvec_create (2); -+ bash_tilde_suffixes2[0] = ":"; -+ bash_tilde_suffixes2[1] = (char *)NULL; -+ } -+} -+ -+/* POSIX.2, 3.6.1: A tilde-prefix consists of an unquoted tilde character -+ at the beginning of the word, followed by all of the characters preceding -+ the first unquoted slash in the word, or all the characters in the word -+ if there is no slash...If none of the characters in the tilde-prefix are -+ quoted, the characters in the tilde-prefix following the tilde shell be -+ treated as a possible login name. */ -+ -+#define TILDE_END(c) ((c) == '\0' || (c) == '/' || (c) == ':') -+ -+static int -+unquoted_tilde_word (s) -+ const char *s; -+{ -+ const char *r; -+ -+ for (r = s; TILDE_END(*r) == 0; r++) -+ { -+ switch (*r) -+ { -+ case '\\': -+ case '\'': -+ case '"': -+ return 0; -+ } -+ } -+ return 1; -+} -+ -+/* Find the end of the tilde-prefix starting at S, and return the tilde -+ prefix in newly-allocated memory. Return the length of the string in -+ *LENP. FLAGS tells whether or not we're in an assignment context -- -+ if so, `:' delimits the end of the tilde prefix as well. */ -+char * -+bash_tilde_find_word (s, flags, lenp) -+ const char *s; -+ int flags, *lenp; -+{ -+ const char *r; -+ char *ret; -+ int l; -+ -+ for (r = s; *r && *r != '/'; r++) -+ { -+ /* Short-circuit immediately if we see a quote character. Even though -+ POSIX says that `the first unquoted slash' (or `:') terminates the -+ tilde-prefix, in practice, any quoted portion of the tilde prefix -+ will cause it to not be expanded. */ -+ if (*r == '\\' || *r == '\'' || *r == '"') -+ { -+ ret = savestring (s); -+ if (lenp) -+ *lenp = 0; -+ return ret; -+ } -+ else if (flags && *r == ':') -+ break; -+ } -+ l = r - s; -+ ret = xmalloc (l + 1); -+ strncpy (ret, s, l); -+ ret[l] = '\0'; -+ if (lenp) -+ *lenp = l; -+ return ret; -+} -+ -+/* Tilde-expand S by running it through the tilde expansion library. -+ ASSIGN_P is 1 if this is a variable assignment, so the alternate -+ tilde prefixes should be enabled (`=~' and `:~', see above). If -+ ASSIGN_P is 2, we are expanding the rhs of an assignment statement, -+ so `=~' is not valid. */ -+char * -+bash_tilde_expand (s, assign_p) -+ const char *s; -+ int assign_p; -+{ -+ int old_immed, old_term, r; -+ char *ret; -+ -+#if 0 -+ old_immed = interrupt_immediately; -+ old_term = terminate_immediately; -+ /* We want to be able to interrupt tilde expansion. Ordinarily, we can just -+ jump to top_level, but we don't want to run any trap commands in a signal -+ handler context. We might be able to get away with just checking for -+ things like SIGINT and SIGQUIT. */ -+ if (any_signals_trapped () < 0) -+ interrupt_immediately = 1; -+ terminate_immediately = 1; -+#endif -+ -+ tilde_additional_prefixes = assign_p == 0 ? (char **)0 -+ : (assign_p == 2 ? bash_tilde_prefixes2 : bash_tilde_prefixes); -+ if (assign_p == 2) -+ tilde_additional_suffixes = bash_tilde_suffixes2; -+ -+ r = (*s == '~') ? unquoted_tilde_word (s) : 1; -+ ret = r ? tilde_expand (s) : savestring (s); -+ -+#if 0 -+ interrupt_immediately = old_immed; -+ terminate_immediately = old_term; -+#endif -+ -+ QUIT; -+ -+ return (ret); -+} -+ -+/* **************************************************************** */ -+/* */ -+/* Functions to manipulate and search the group list */ -+/* */ -+/* **************************************************************** */ -+ -+static int ngroups, maxgroups; -+ -+/* The set of groups that this user is a member of. */ -+static GETGROUPS_T *group_array = (GETGROUPS_T *)NULL; -+ -+#if !defined (NOGROUP) -+# define NOGROUP (gid_t) -1 -+#endif -+ -+static void -+initialize_group_array () -+{ -+ register int i; -+ -+ if (maxgroups == 0) -+ maxgroups = getmaxgroups (); -+ -+ ngroups = 0; -+ group_array = (GETGROUPS_T *)xrealloc (group_array, maxgroups * sizeof (GETGROUPS_T)); -+ -+#if defined (HAVE_GETGROUPS) -+ ngroups = getgroups (maxgroups, group_array); -+#endif -+ -+ /* If getgroups returns nothing, or the OS does not support getgroups(), -+ make sure the groups array includes at least the current gid. */ -+ if (ngroups == 0) -+ { -+ group_array[0] = current_user.gid; -+ ngroups = 1; -+ } -+ -+ /* If the primary group is not in the groups array, add it as group_array[0] -+ and shuffle everything else up 1, if there's room. */ -+ for (i = 0; i < ngroups; i++) -+ if (current_user.gid == (gid_t)group_array[i]) -+ break; -+ if (i == ngroups && ngroups < maxgroups) -+ { -+ for (i = ngroups; i > 0; i--) -+ group_array[i] = group_array[i - 1]; -+ group_array[0] = current_user.gid; -+ ngroups++; -+ } -+ -+ /* If the primary group is not group_array[0], swap group_array[0] and -+ whatever the current group is. The vast majority of systems should -+ not need this; a notable exception is Linux. */ -+ if (group_array[0] != current_user.gid) -+ { -+ for (i = 0; i < ngroups; i++) -+ if (group_array[i] == current_user.gid) -+ break; -+ if (i < ngroups) -+ { -+ group_array[i] = group_array[0]; -+ group_array[0] = current_user.gid; -+ } -+ } -+} -+ -+/* Return non-zero if GID is one that we have in our groups list. */ -+int -+#if defined (__STDC__) || defined ( _MINIX) -+group_member (gid_t gid) -+#else -+group_member (gid) -+ gid_t gid; -+#endif /* !__STDC__ && !_MINIX */ -+{ -+#if defined (HAVE_GETGROUPS) -+ register int i; -+#endif -+ -+ /* Short-circuit if possible, maybe saving a call to getgroups(). */ -+ if (gid == current_user.gid || gid == current_user.egid) -+ return (1); -+ -+#if defined (HAVE_GETGROUPS) -+ if (ngroups == 0) -+ initialize_group_array (); -+ -+ /* In case of error, the user loses. */ -+ if (ngroups <= 0) -+ return (0); -+ -+ /* Search through the list looking for GID. */ -+ for (i = 0; i < ngroups; i++) -+ if (gid == (gid_t)group_array[i]) -+ return (1); -+#endif -+ -+ return (0); -+} -+ -+char ** -+get_group_list (ngp) -+ int *ngp; -+{ -+ static char **group_vector = (char **)NULL; -+ register int i; -+ -+ if (group_vector) -+ { -+ if (ngp) -+ *ngp = ngroups; -+ return group_vector; -+ } -+ -+ if (ngroups == 0) -+ initialize_group_array (); -+ -+ if (ngroups <= 0) -+ { -+ if (ngp) -+ *ngp = 0; -+ return (char **)NULL; -+ } -+ -+ group_vector = strvec_create (ngroups); -+ for (i = 0; i < ngroups; i++) -+ group_vector[i] = itos (group_array[i]); -+ -+ if (ngp) -+ *ngp = ngroups; -+ return group_vector; -+} -+ -+int * -+get_group_array (ngp) -+ int *ngp; -+{ -+ int i; -+ static int *group_iarray = (int *)NULL; -+ -+ if (group_iarray) -+ { -+ if (ngp) -+ *ngp = ngroups; -+ return (group_iarray); -+ } -+ -+ if (ngroups == 0) -+ initialize_group_array (); -+ -+ if (ngroups <= 0) -+ { -+ if (ngp) -+ *ngp = 0; -+ return (int *)NULL; -+ } -+ -+ group_iarray = (int *)xmalloc (ngroups * sizeof (int)); -+ for (i = 0; i < ngroups; i++) -+ group_iarray[i] = (int)group_array[i]; -+ -+ if (ngp) -+ *ngp = ngroups; -+ return group_iarray; -+} -+ -+/* **************************************************************** */ -+/* */ -+/* Miscellaneous functions */ -+/* */ -+/* **************************************************************** */ -+ -+/* Return a value for PATH that is guaranteed to find all of the standard -+ utilities. This uses Posix.2 configuration variables, if present. It -+ uses a value defined in config.h as a last resort. */ -+char * -+conf_standard_path () -+{ -+#if defined (_CS_PATH) && defined (HAVE_CONFSTR) -+ char *p; -+ size_t len; -+ -+ len = (size_t)confstr (_CS_PATH, (char *)NULL, (size_t)0); -+ if (len > 0) -+ { -+ p = (char *)xmalloc (len + 2); -+ *p = '\0'; -+ confstr (_CS_PATH, p, len); -+ return (p); -+ } -+ else -+ return (savestring (STANDARD_UTILS_PATH)); -+#else /* !_CS_PATH || !HAVE_CONFSTR */ -+# if defined (CS_PATH) -+ return (savestring (CS_PATH)); -+# else -+ return (savestring (STANDARD_UTILS_PATH)); -+# endif /* !CS_PATH */ -+#endif /* !_CS_PATH || !HAVE_CONFSTR */ -+} diff -ruwN source/include/posixwait.h source-new/include/posixwait.h --- source/include/posixwait.h 2008-08-12 08:03:03.000000000 -0600 -+++ source-new/include/posixwait.h 2019-01-28 12:42:40.972781097 -0700 ++++ source-new/include/posixwait.h 2020-07-14 20:50:54.554545541 -0600 @@ -34,7 +34,7 @@ /* How to get the status of a job. For Posix, this is just an @@ -1435,7 +118,7 @@ diff -ruwN source/include/posixwait.h source-new/include/posixwait.h # define WSTOPSIG(s) ((s) >> 8) diff -ruwN source/lib/sh/getcwd.c source-new/lib/sh/getcwd.c --- source/lib/sh/getcwd.c 2012-03-10 08:48:50.000000000 -0700 -+++ source-new/lib/sh/getcwd.c 2019-01-28 14:02:28.573259186 -0700 ++++ source-new/lib/sh/getcwd.c 2020-07-14 20:50:54.554545541 -0600 @@ -20,7 +20,7 @@ #include @@ -1447,7 +130,7 @@ diff -ruwN source/lib/sh/getcwd.c source-new/lib/sh/getcwd.c #pragma alloca diff -ruwN source/sig.c source-new/sig.c --- source/sig.c 2016-02-11 13:02:45.000000000 -0700 -+++ source-new/sig.c 2019-01-28 13:48:08.303876705 -0700 ++++ source-new/sig.c 2020-07-14 20:50:54.554545541 -0600 @@ -680,7 +680,9 @@ } From a583db85ae45959a549df4ace8736e5b0635b0f0 Mon Sep 17 00:00:00 2001 From: Wren Turkal Date: Sun, 12 Jul 2020 02:14:36 -0700 Subject: [PATCH 0828/3180] Add recipe for the pci.ids db. This database contains a very comprehensive list of PCI devices and IDs to make more sense of them. The `lspci` tool in Linux uses this as it's source of data as well. Signed-off-by: Wren Turkal --- recipes/pciids/recipe.sh | 14 ++++++++++++++ recipes/pciids/recipe.toml | 9 +++++++++ 2 files changed, 23 insertions(+) create mode 100644 recipes/pciids/recipe.sh create mode 100644 recipes/pciids/recipe.toml diff --git a/recipes/pciids/recipe.sh b/recipes/pciids/recipe.sh new file mode 100644 index 00000000..2e1c48bf --- /dev/null +++ b/recipes/pciids/recipe.sh @@ -0,0 +1,14 @@ +GIT=https://github.com/pciutils/pciids.git + +function recipe_build { + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + + install -d "${dest}/share/misc/" + install pci.ids "${dest}/share/misc/" + + skip=1 +} diff --git a/recipes/pciids/recipe.toml b/recipes/pciids/recipe.toml new file mode 100644 index 00000000..dfacfc50 --- /dev/null +++ b/recipes/pciids/recipe.toml @@ -0,0 +1,9 @@ +[source] +git = "https://github.com/pciutils/pciids.git" + +[build] +template = "custom" +script = """ +install -d "${COOKBOOK_STAGE}/share/misc/" +install "${COOKBOOK_BUILD}"/pci.ids "${COOKBOOK_STAGE}/share/misc/" +""" From fd88ee9c921750a0651ed3d44eaef3468a6b3b86 Mon Sep 17 00:00:00 2001 From: Wren Turkal Date: Sun, 19 Jul 2020 01:55:06 -0700 Subject: [PATCH 0829/3180] Make clean work when a recipe has no recipe.sh. Previously, one had to have a recipe.sh in all recipe directories in order to run `make clean` successfully. This fixes that. Signed-off-by: Wren Turkal --- cook.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cook.sh b/cook.sh index 1bf746be..c269574c 100755 --- a/cook.sh +++ b/cook.sh @@ -520,7 +520,9 @@ then cd "${COOKBOOK_RECIPE}" - source recipe.sh + if [ -e recipe.sh ]; then + source recipe.sh + fi ops=() for arg in "${@:2}" From 3bd207f5b7c845e548a92aa2f26498a3542d4a12 Mon Sep 17 00:00:00 2001 From: Wren Turkal Date: Wed, 22 Jul 2020 23:18:19 -0700 Subject: [PATCH 0830/3180] Fix pciids recipe. The wrong variable was being used in the build script. Signed-off-by: Wren Turkal --- recipes/pciids/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/pciids/recipe.toml b/recipes/pciids/recipe.toml index dfacfc50..3404148b 100644 --- a/recipes/pciids/recipe.toml +++ b/recipes/pciids/recipe.toml @@ -5,5 +5,5 @@ git = "https://github.com/pciutils/pciids.git" template = "custom" script = """ install -d "${COOKBOOK_STAGE}/share/misc/" -install "${COOKBOOK_BUILD}"/pci.ids "${COOKBOOK_STAGE}/share/misc/" +install "${COOKBOOK_SOURCE}"/pci.ids "${COOKBOOK_STAGE}/share/misc/" """ From 10d3e23902e3bc1cb4cf27c1d16e6ed60e0d1a87 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 2 Aug 2020 15:27:02 -0600 Subject: [PATCH 0831/3180] Update syscall --- Cargo.lock | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f18a2b05..db76de9d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -332,7 +332,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -834,7 +834,7 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.1.56" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -842,7 +842,7 @@ name = "redox_termios" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -851,7 +851,7 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)", "rust-argon2 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -863,7 +863,7 @@ dependencies = [ "dirs 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "proc-mounts 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "redox_installer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)", "redoxfs 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -876,7 +876,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fuse 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", "uuid 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1089,7 +1089,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "filetime 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)", "xattr 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1101,7 +1101,7 @@ dependencies = [ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)", "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1113,7 +1113,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", "numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)", "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1414,7 +1414,7 @@ dependencies = [ "checksum redox_installer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "98346851d42e2f357b3c023b27b75da14a774c226f9636a0ed42535b72d62bde" "checksum redox_liner 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f014f6b014591f45bdd86377ab2f01b840ddd9e33421222b84d06e244b111327" "checksum redox_pkgutils 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf753c67a43031ca0aa5661c1808edc4f94118f1daa368df38b641de8d74a91" -"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" +"checksum redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)" = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" "checksum redox_users 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "09b23093265f8d200fa7b4c2c76297f47e681c655f6f1285a8780d6a022f7431" "checksum redoxer 0.2.19 (registry+https://github.com/rust-lang/crates.io-index)" = "9641f270dd15b5835a8e7f8d61c80fada81f4242bdc670dd48e4f7183fef97f0" From 01896e5fb0400f9554a554c4aaadfa2227687833 Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Tue, 4 Aug 2020 13:15:26 +0200 Subject: [PATCH 0832/3180] Compile gnu-binutils with pie so it works on Redox Because our dynamic linker still doesn't support global offset tables and those difficult stuffs --- recipes/gnu-binutils/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh index 204c7757..b570557e 100644 --- a/recipes/gnu-binutils/recipe.sh +++ b/recipes/gnu-binutils/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { mkdir -p "$sysroot/usr" ln -sf "$sysroot/include" "$sysroot/usr/include" ln -sf "$sysroot/lib" "$sysroot/usr/lib" - export CPPFLAGS="-I$sysroot/include -g" + export CPPFLAGS="-I$sysroot/include -pie -fPIC -g" export LDFLAGS="-L$sysroot/lib -static -g" ./configure \ --build=${BUILD} \ From 4a889c0c1c6a77541bbfef6f027b7574b21c3cc1 Mon Sep 17 00:00:00 2001 From: Wren Turkal Date: Sun, 9 Aug 2020 12:10:44 -0700 Subject: [PATCH 0833/3180] Remove customization of and update xz. I updated the recipe to use newest the raw xz upstream source and cleaned out my recipes and rebuilt. I have detected no problems. Not having to have customizations will make it easier to upgrade int the future as new versions are released. Signed-off-by: Wren Turkal --- recipes/xz/recipe.toml | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/recipes/xz/recipe.toml b/recipes/xz/recipe.toml index 3c19525a..1ba461ba 100644 --- a/recipes/xz/recipe.toml +++ b/recipes/xz/recipe.toml @@ -1,15 +1,5 @@ [source] -tar = "https://codeload.github.com/xz-mirror/xz/tar.gz/v5.2.3" -patches = [ - "01-no-poll.patch", - "02-o_noctty.patch", - "03-no-signals.patch" -] -script = """ -./autogen.sh -chmod +w build-aux/config.sub -wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub -""" +tar = "https://codeload.github.com/xz-mirror/xz/tar.gz/v5.2.5" [build] template = "custom" From 6f970f298eb4417db0c77397dcbb77b9d6b3cb8f Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Sun, 16 Aug 2020 21:21:35 +0200 Subject: [PATCH 0834/3180] Fix broken xz recipe Caused by https://gitlab.redox-os.org/redox-os/cookbook/-/merge_requests/246 --- recipes/xz/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/xz/recipe.toml b/recipes/xz/recipe.toml index 1ba461ba..31958a67 100644 --- a/recipes/xz/recipe.toml +++ b/recipes/xz/recipe.toml @@ -1,5 +1,8 @@ [source] tar = "https://codeload.github.com/xz-mirror/xz/tar.gz/v5.2.5" +script = """ +./autogen.sh +""" [build] template = "custom" From 02654031466db75254229562162400c8f3205352 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 21 Aug 2020 15:52:58 -0600 Subject: [PATCH 0835/3180] Run cookbook rust version for fetch, if possible --- fetch.sh | 6 ++++++ src/bin/cook.rs | 8 ++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/fetch.sh b/fetch.sh index 99b81134..03368c77 100755 --- a/fetch.sh +++ b/fetch.sh @@ -12,5 +12,11 @@ fi for recipe in $recipes do + if [ -e "recipes/$recipe/recipe.toml" ] + then + target/release/cook --fetch-only "$recipe" + continue + fi + ./cook.sh "$recipe" fetch done diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 75d75d0f..9f0c3f21 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -557,12 +557,14 @@ fn package(recipe_dir: &Path, stage_dir: &Path, package: &PackageRecipe) -> Resu Ok(package_file) } -fn cook(recipe_dir: &Path, recipe: &Recipe) -> Result<(), String> { +fn cook(recipe_dir: &Path, recipe: &Recipe, fetch_only: bool) -> Result<(), String> { let source_dir = fetch(&recipe_dir, &recipe.source).map_err(|err| format!( "failed to fetch: {}", err ))?; + if fetch_only { return Ok(()); } + let stage_dir = build(&recipe_dir, &source_dir, &recipe.build).map_err(|err| format!( "failed to build: {}", err @@ -658,12 +660,14 @@ impl CookRecipe { fn main() { let mut matching = true; let mut dry_run = false; + let mut fetch_only = false; let mut quiet = false; let mut recipe_names = Vec::new(); for arg in env::args().skip(1) { match arg.as_str() { "--" if matching => matching = false, "-d" | "--dry-run" if matching => dry_run = true, + "--fetch-only" if matching => fetch_only = true, "-q" | "--quiet" if matching => quiet = true, _ => recipe_names.push(arg), } @@ -702,7 +706,7 @@ fn main() { } Ok(()) } else { - cook(&recipe.dir, &recipe.recipe) + cook(&recipe.dir, &recipe.recipe, fetch_only) }; match res { From d5cb3ae2e6a4a613308b831adeefa7bedc200c75 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 21 Aug 2020 20:01:35 -0600 Subject: [PATCH 0836/3180] Add cleye recipe.toml --- recipes/cleye/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/cleye/recipe.toml diff --git a/recipes/cleye/recipe.toml b/recipes/cleye/recipe.toml new file mode 100644 index 00000000..a2da3ae2 --- /dev/null +++ b/recipes/cleye/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/cleye.git" + +[build] +template = "cargo" From 3fdde7872ab3e09aa96402c1d0475cf77b632d0d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 21 Aug 2020 20:21:15 -0600 Subject: [PATCH 0837/3180] Add recipe.toml for games --- recipes/games/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/games/recipe.toml diff --git a/recipes/games/recipe.toml b/recipes/games/recipe.toml new file mode 100644 index 00000000..50a9957f --- /dev/null +++ b/recipes/games/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/games.git" + +[build] +template = "cargo" From 2edb12922dccf6c911bfe61367270e52058086de Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 24 Aug 2020 20:56:59 -0600 Subject: [PATCH 0838/3180] Fix openttd recipe --- recipes/openttd/recipe.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/openttd/recipe.sh b/recipes/openttd/recipe.sh index 7dbedc01..0fd408f7 100644 --- a/recipes/openttd/recipe.sh +++ b/recipes/openttd/recipe.sh @@ -14,6 +14,9 @@ function recipe_update { } function recipe_build { + sysroot="$(realpath ../sysroot)" + export CFLAGS="-I$sysroot/include" + export LDFLAGS="-L$sysroot/lib --static" ./configure \ --build=${BUILD} \ --host=${HOST} \ From bc5e63fa75594f5fb4aa07d6a9bca0a745f66c1c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 24 Aug 2020 21:18:03 -0600 Subject: [PATCH 0839/3180] Remove -C lto from incompatible packages --- recipes/orbutils-background/recipe.sh | 2 +- recipes/orbutils-launcher/recipe.sh | 2 +- recipes/orbutils-orblogin/recipe.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/orbutils-background/recipe.sh b/recipes/orbutils-background/recipe.sh index 2105db9f..e4836609 100644 --- a/recipes/orbutils-background/recipe.sh +++ b/recipes/orbutils-background/recipe.sh @@ -1,4 +1,4 @@ GIT=https://gitlab.redox-os.org/redox-os/orbutils.git BINDIR=/ui/bin -CARGOFLAGS="--bin background -- -C lto" +CARGOFLAGS="--bin background" DEPENDS="orbital" diff --git a/recipes/orbutils-launcher/recipe.sh b/recipes/orbutils-launcher/recipe.sh index b2504a22..fddf4ab6 100644 --- a/recipes/orbutils-launcher/recipe.sh +++ b/recipes/orbutils-launcher/recipe.sh @@ -1,4 +1,4 @@ GIT=https://gitlab.redox-os.org/redox-os/orbutils.git BINDIR=/ui/bin -CARGOFLAGS="--bin launcher -- -C lto" +CARGOFLAGS="--bin launcher" DEPENDS="orbital" diff --git a/recipes/orbutils-orblogin/recipe.sh b/recipes/orbutils-orblogin/recipe.sh index 43aeddcd..7bf9289b 100644 --- a/recipes/orbutils-orblogin/recipe.sh +++ b/recipes/orbutils-orblogin/recipe.sh @@ -1,4 +1,4 @@ GIT=https://gitlab.redox-os.org/redox-os/orbutils.git BINDIR=/ui/bin -CARGOFLAGS="--bin orblogin -- -C lto" +CARGOFLAGS="--bin orblogin" DEPENDS="orbital" From 1b8337957315bfcda0fa5233ca8a3f14a8a2dce9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 25 Aug 2020 09:10:53 -0600 Subject: [PATCH 0840/3180] sdl2_gears: Link libogg and libvorbis --- recipes/sdl2_gears/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/sdl2_gears/recipe.sh b/recipes/sdl2_gears/recipe.sh index 11776bd2..33da8adb 100644 --- a/recipes/sdl2_gears/recipe.sh +++ b/recipes/sdl2_gears/recipe.sh @@ -1,4 +1,4 @@ -BUILD_DEPENDS=(sdl2_image sdl2_mixer sdl2_ttf sdl2 liborbital llvm mesa mesa_glu freetype libjpeg libpng zlib) +BUILD_DEPENDS=(sdl2_image sdl2_mixer sdl2_ttf sdl2 liborbital llvm mesa mesa_glu freetype libjpeg libpng libogg libvorbis zlib) function recipe_version { printf "1.0.0" @@ -21,7 +21,7 @@ function recipe_prepare { function recipe_build { sysroot="$(realpath ../sysroot)" set -x - "${CXX}" -O2 -I "$sysroot/include" -L "$sysroot/lib" gears.c -o sdl2_gears -static -lSDL2_image -lSDL2_mixer -lSDL2_ttf -lSDL2 -lorbital $("${PKG_CONFIG}" --libs glu) -lfreetype -lpng -ljpeg -lglapi -lz + "${CXX}" -O2 -I "$sysroot/include" -L "$sysroot/lib" gears.c -o sdl2_gears -static -lSDL2_image -lSDL2_mixer -lSDL2_ttf -lSDL2 -lorbital $("${PKG_CONFIG}" --libs glu) -lfreetype -lpng -ljpeg -lvorbisfile -lvorbis -logg -lglapi -lz set +x skip=1 } From 4fb9f140c56736a8ed3028694cc38d6826378da9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 25 Aug 2020 09:40:14 -0600 Subject: [PATCH 0841/3180] Update pkgutils --- pkgutils | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgutils b/pkgutils index 7d0755bc..04d8b85b 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit 7d0755bc5297e8600891263c0c7479fbfa9931dc +Subproject commit 04d8b85b70355c5faa1e82a17d3c5fe9f7dcaf6a From bafe721a5969b0121ecf63789f601de76b474990 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 25 Aug 2020 09:48:05 -0600 Subject: [PATCH 0842/3180] Update pkgutils --- pkgutils | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgutils b/pkgutils index 04d8b85b..f3112275 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit 04d8b85b70355c5faa1e82a17d3c5fe9f7dcaf6a +Subproject commit f31122755b791b7a1ffbdcbbfce22ffdc72d5f73 From 48b786e6d8fa443c8e3065cac574ab2cda51edd7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 27 Aug 2020 10:20:04 -0600 Subject: [PATCH 0843/3180] Update to origin when fetching --- src/bin/cook.rs | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 9f0c3f21..173a3f80 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -209,16 +209,23 @@ fn fetch(recipe_dir: &Path, source: &SourceRecipe) -> Result { run_command(command)?; } else { //TODO: complicated stuff to check and reset branch to origin - // ORIGIN_BRANCH="$(git branch --remotes | grep '^ origin/HEAD -> ' | cut -d ' ' -f 5-)" - // if [ -n "$BRANCH" ] - // then - // ORIGIN_BRANCH="origin/$BRANCH" - // fi - // - // if [ "$(git rev-parse HEAD)" != "$(git rev-parse $ORIGIN_BRANCH)" ] - // then - // git checkout -B "$(echo "$ORIGIN_BRANCH" | cut -d / -f 2-)" "$ORIGIN_BRANCH" - // fi + let mut command = Command::new("bash"); + command.arg("-c").arg(r#" +ORIGIN_BRANCH="$(git branch --remotes | grep '^ origin/HEAD -> ' | cut -d ' ' -f 5-)" +if [ -n "$BRANCH" ] +then + ORIGIN_BRANCH="origin/$BRANCH" +fi + +if [ "$(git rev-parse HEAD)" != "$(git rev-parse $ORIGIN_BRANCH)" ] +then + git checkout -B "$(echo "$ORIGIN_BRANCH" | cut -d / -f 2-)" "$ORIGIN_BRANCH" +fi"#); + if let Some(branch) = branch { + command.env("BRANCH", branch); + } + command.current_dir(&source_dir); + run_command(command)?; } // Sync submodules URL From 1d73c7986f41f1369db00e8759953e96fc6c64f8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 Oct 2020 10:21:20 -0600 Subject: [PATCH 0844/3180] Build legacy packaging for pkgar recipes --- repo.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/repo.sh b/repo.sh index 9cc912a4..8185f2b4 100755 --- a/repo.sh +++ b/repo.sh @@ -25,6 +25,10 @@ do if [ -e "recipes/$recipe/recipe.toml" ] then target/release/cook "$recipe" + + echo -e "\033[01;38;5;155mrepo - legacy tar for $recipe\033[0m" >&2 + ./cook.sh "$recipe" tar + continue fi From bfc3608891fce14fd4f0e508e93ae5227fcb8a5f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 10 Oct 2020 20:09:16 -0600 Subject: [PATCH 0845/3180] Create link for sh to dash --- recipes/dash/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/dash/recipe.toml b/recipes/dash/recipe.toml index c4bc5751..14a76571 100644 --- a/recipes/dash/recipe.toml +++ b/recipes/dash/recipe.toml @@ -18,4 +18,5 @@ sed -i'' -e 's|#define HAVE_GETRLIMIT 1|/* #undef HAVE_GETRLIMIT */|g' config.h COOKBOOK_CONFIGURE="true" COOKBOOK_CONFIGURE_FLAGS=() cookbook_configure +ln -s "dash" "${COOKBOOK_STAGE}/bin/sh" """ From d553dbc09dafa31579741608642dd2156c933934 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 10 Oct 2020 20:09:30 -0600 Subject: [PATCH 0846/3180] Prevent rebuilding pkgar archives --- repo.sh | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/repo.sh b/repo.sh index 8185f2b4..92aa673c 100755 --- a/repo.sh +++ b/repo.sh @@ -26,8 +26,22 @@ do then target/release/cook "$recipe" - echo -e "\033[01;38;5;155mrepo - legacy tar for $recipe\033[0m" >&2 - ./cook.sh "$recipe" tar + if [ ! -f "recipes/$recipe/stage.tar.gz" ] + then + echo -e "\033[01;38;5;155mrepo - legacy packaging $recipe\033[0m" >&2 + ./cook.sh "$recipe" tar $DEBUG + else + TIME_PKG="$($STAT -c "%Y" recipes/$recipe/stage.pkgar)" + TIME_STAGE="$($STAT -c "%Y" recipes/$recipe/stage.tar.gz)" + if [ "$TIME_PKG" -gt "$TIME_STAGE" ] + then + echo -e "\033[01;38;5;155mrepo - legacy repackaging $recipe\033[0m" >&2 + ./cook.sh "$recipe" untar tar $DEBUG + fi + fi + + # Match pkgar and tar time + touch --no-create --reference="recipes/$recipe/stage.tar.gz" "recipes/$recipe/stage.pkgar" continue fi From d0df1f76a1f0bbe4f485a56d92fc765082c3f4e2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 23 Dec 2020 12:49:46 -0700 Subject: [PATCH 0847/3180] Do not compile expat with docbook --- recipes/expat/recipe.toml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/recipes/expat/recipe.toml b/recipes/expat/recipe.toml index 47a5bd5a..7f5cd3ae 100644 --- a/recipes/expat/recipe.toml +++ b/recipes/expat/recipe.toml @@ -2,4 +2,10 @@ tar = "https://github.com/libexpat/libexpat/releases/download/R_2_2_6/expat-2.2.6.tar.bz2" [build] -template = "configure" +template = "custom" +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --without-docbook +) +cookbook_configure +""" From 8d4c66b85610bb6e759fe7e690e35c9472a1064d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 23 Dec 2020 12:56:57 -0700 Subject: [PATCH 0848/3180] Fix scummvm URL --- recipes/scummvm/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/scummvm/recipe.sh b/recipes/scummvm/recipe.sh index 44d5dc9f..97efd01d 100644 --- a/recipes/scummvm/recipe.sh +++ b/recipes/scummvm/recipe.sh @@ -1,5 +1,5 @@ VERSION=2.0.0 -TAR=https://www.scummvm.org/frs/scummvm/$VERSION/scummvm-$VERSION.tar.xz +TAR=https://downloads.scummvm.org/frs/scummvm/$VERSION/scummvm-$VERSION.tar.xz TAR_SHA256=9784418d555ba75822d229514a05cf226b8ce1a751eec425432e6b7e128fca60 BUILD_DEPENDS=(sdl liborbital freetype zlib libpng) From 52694f8e0236668b4bfbcd841d2e6b5c0c2d779e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 23 Dec 2020 13:31:49 -0700 Subject: [PATCH 0849/3180] Disable fontconfig docs --- recipes/fontconfig/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/fontconfig/recipe.sh b/recipes/fontconfig/recipe.sh index 645dd8b6..7996d983 100755 --- a/recipes/fontconfig/recipe.sh +++ b/recipes/fontconfig/recipe.sh @@ -23,6 +23,7 @@ function recipe_build { --prefix=/ \ --disable-shared \ --enable-static \ + --disable-docs \ ac_cv_func_XML_SetDoctypeDeclHandler=yes "$REDOX_MAKE" -j"$($NPROC)" skip=1 From 1e636820814db1704034a0945ba177d87690225a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 23 Dec 2020 13:45:57 -0700 Subject: [PATCH 0850/3180] Update llvm branch --- recipes/llvm/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/llvm/recipe.sh b/recipes/llvm/recipe.sh index 5f70e1f8..32dbcb90 100644 --- a/recipes/llvm/recipe.sh +++ b/recipes/llvm/recipe.sh @@ -1,6 +1,6 @@ GIT=https://gitlab.redox-os.org/redox-os/llvm-project.git GIT_UPSTREAM=https://github.com/rust-lang/llvm-project.git -BRANCH=redox +BRANCH=redox-2020-07-27 function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" From 4b8ed90022acb009428473ad6cc599b1929b9b05 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 23 Dec 2020 15:13:26 -0700 Subject: [PATCH 0851/3180] Update llvm-config extract --- bin/x86_64-unknown-redox-llvm-config | 131 ++++++++++++++++----------- 1 file changed, 77 insertions(+), 54 deletions(-) diff --git a/bin/x86_64-unknown-redox-llvm-config b/bin/x86_64-unknown-redox-llvm-config index 642e9e52..62032de2 100755 --- a/bin/x86_64-unknown-redox-llvm-config +++ b/bin/x86_64-unknown-redox-llvm-config @@ -8,70 +8,80 @@ # echo -e \"$component\": \"$(llvm-config --libs $component)\", # end components = { - "aggressiveinstcombine": "-lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "all": "-lLLVMLTO -lLLVMPasses -lLLVMObjCARCOpts -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoDWARF -lLLVMFuzzMutate -lLLVMTableGen -lLLVMDlltoolDriver -lLLVMLineEditor -lLLVMOrcJIT -lLLVMCoverage -lLLVMMIRParser -lLLVMObjectYAML -lLLVMLibDriver -lLLVMOption -lLLVMWindowsManifest -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMX86Desc -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMMCJIT -lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMCodeGen -lLLVMTarget -lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMScalarOpts -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "all-targets": "-lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMX86Desc -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMX86Utils -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "analysis": "-lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "asmparser": "-lLLVMAsmParser -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "asmprinter": "-lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "aggressiveinstcombine": "-lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "all": "-lLLVMXRay -lLLVMWindowsManifest -lLLVMTableGen -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMOrcJIT -lLLVMOrcError -lLLVMJITLink -lLLVMObjectYAML -lLLVMMIRParser -lLLVMMCA -lLLVMLTO -lLLVMPasses -lLLVMObjCARCOpts -lLLVMLineEditor -lLLVMLibDriver -lLLVMInterpreter -lLLVMFuzzMutate -lLLVMFrontendOpenMP -lLLVMMCJIT -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMDWARFLinker -lLLVMDlltoolDriver -lLLVMOption -lLLVMDebugInfoGSYM -lLLVMCoverage -lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoDWARF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMX86Desc -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMX86Utils -lLLVMX86Info -lLLVMSupport -lLLVMDemangle", + "all-targets": "-lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoDWARF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMX86Desc -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMX86Utils -lLLVMX86Info -lLLVMSupport -lLLVMDemangle", + "analysis": "-lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "asmparser": "-lLLVMAsmParser -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "asmprinter": "-lLLVMAsmPrinter -lLLVMDebugInfoDWARF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "binaryformat": "-lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "bitreader": "-lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "bitwriter": "-lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "codegen": "-lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "core": "-lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "coroutines": "-lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMScalarOpts -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "coverage": "-lLLVMCoverage -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "bitreader": "-lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", + "bitstreamreader": "-lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", + "bitwriter": "-lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "cfguard": "-lLLVMCFGuard -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "codegen": "-lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "core": "-lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "coroutines": "-lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMScalarOpts -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "coverage": "-lLLVMCoverage -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "debuginfocodeview": "-lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMSupport -lLLVMDemangle", - "debuginfodwarf": "-lLLVMDebugInfoDWARF -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "debuginfodwarf": "-lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "debuginfogsym": "-lLLVMDebugInfoGSYM -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "debuginfomsf": "-lLLVMDebugInfoMSF -lLLVMSupport -lLLVMDemangle", - "debuginfopdb": "-lLLVMDebugInfoPDB -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "debuginfopdb": "-lLLVMDebugInfoPDB -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", "demangle": "-lLLVMDemangle", - "dlltooldriver": "-lLLVMDlltoolDriver -lLLVMOption -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "engine": "-lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMX86Desc -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMMCJIT -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMRuntimeDyld -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "executionengine": "-lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMRuntimeDyld -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "fuzzmutate": "-lLLVMFuzzMutate -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "globalisel": "-lLLVMGlobalISel -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "instcombine": "-lLLVMInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "instrumentation": "-lLLVMInstrumentation -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "interpreter": "-lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "ipo": "-lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMScalarOpts -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "irreader": "-lLLVMIRReader -lLLVMBitReader -lLLVMAsmParser -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "libdriver": "-lLLVMLibDriver -lLLVMOption -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "dlltooldriver": "-lLLVMDlltoolDriver -lLLVMOption -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", + "dwarflinker": "-lLLVMDWARFLinker -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "engine": "-lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoDWARF -lLLVMCodeGen -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMX86Desc -lLLVMMCDisassembler -lLLVMX86Utils -lLLVMX86Info -lLLVMMCJIT -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMRuntimeDyld -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "executionengine": "-lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMRuntimeDyld -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "frontendopenmp": "-lLLVMFrontendOpenMP -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "fuzzmutate": "-lLLVMFuzzMutate -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "globalisel": "-lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "instcombine": "-lLLVMInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "instrumentation": "-lLLVMInstrumentation -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "interpreter": "-lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "ipo": "-lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMScalarOpts -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "irreader": "-lLLVMIRReader -lLLVMBitReader -lLLVMAsmParser -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "jitlink": "-lLLVMJITLink -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "libdriver": "-lLLVMLibDriver -lLLVMOption -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "lineeditor": "-lLLVMLineEditor -lLLVMSupport -lLLVMDemangle", - "linker": "-lLLVMLinker -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "lto": "-lLLVMLTO -lLLVMPasses -lLLVMObjCARCOpts -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "linker": "-lLLVMLinker -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "lto": "-lLLVMLTO -lLLVMPasses -lLLVMObjCARCOpts -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "mc": "-lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "mca": "-lLLVMMCA -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "mcdisassembler": "-lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "mcjit": "-lLLVMMCJIT -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMRuntimeDyld -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "mcjit": "-lLLVMMCJIT -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMRuntimeDyld -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "mcparser": "-lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "mirparser": "-lLLVMMIRParser -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMAsmParser -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "native": "-lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMX86Desc -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMX86Utils -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "nativecodegen": "-lLLVMX86CodeGen -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "objcarcopts": "-lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "object": "-lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "objectyaml": "-lLLVMObjectYAML -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMSupport -lLLVMDemangle", + "mirparser": "-lLLVMMIRParser -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMAsmParser -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "native": "-lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoDWARF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMX86Desc -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMX86Utils -lLLVMX86Info -lLLVMSupport -lLLVMDemangle", + "nativecodegen": "-lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Utils -lLLVMX86Info -lLLVMMCDisassembler -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoDWARF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "objcarcopts": "-lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "object": "-lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", + "objectyaml": "-lLLVMObjectYAML -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", "option": "-lLLVMOption -lLLVMSupport -lLLVMDemangle", - "orcjit": "-lLLVMOrcJIT -lLLVMTransformUtils -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMRuntimeDyld -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "passes": "-lLLVMPasses -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "profiledata": "-lLLVMProfileData -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "runtimedyld": "-lLLVMRuntimeDyld -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMCore -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "scalaropts": "-lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "selectiondag": "-lLLVMSelectionDAG -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "orcerror": "-lLLVMOrcError -lLLVMSupport -lLLVMDemangle", + "orcjit": "-lLLVMOrcJIT -lLLVMPasses -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMCodeGen -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMOrcError -lLLVMJITLink -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMRuntimeDyld -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "passes": "-lLLVMPasses -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "profiledata": "-lLLVMProfileData -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "remarks": "-lLLVMRemarks -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", + "runtimedyld": "-lLLVMRuntimeDyld -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "scalaropts": "-lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "selectiondag": "-lLLVMSelectionDAG -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "support": "-lLLVMSupport -lLLVMDemangle", - "symbolize": "-lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "symbolize": "-lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "tablegen": "-lLLVMTableGen -lLLVMSupport -lLLVMDemangle", - "target": "-lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "transformutils": "-lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "vectorize": "-lLLVMVectorize -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "target": "-lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "textapi": "-lLLVMTextAPI -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "transformutils": "-lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "vectorize": "-lLLVMVectorize -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "windowsmanifest": "-lLLVMWindowsManifest -lLLVMSupport -lLLVMDemangle", - "x86": "-lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMX86Desc -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMX86Utils -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "x86asmparser": "-lLLVMX86AsmParser -lLLVMX86Desc -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMObject -lLLVMBitReader -lLLVMCore -lLLVMMCDisassembler -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "x86asmprinter": "-lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMCore -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "x86codegen": "-lLLVMX86CodeGen -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "x86desc": "-lLLVMX86Desc -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMCore -lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "x86": "-lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoDWARF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMX86Desc -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMX86Utils -lLLVMX86Info -lLLVMSupport -lLLVMDemangle", + "x86asmparser": "-lLLVMX86AsmParser -lLLVMX86Desc -lLLVMX86Utils -lLLVMX86Info -lLLVMObject -lLLVMTextAPI -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMMCDisassembler -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "x86codegen": "-lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Utils -lLLVMX86Info -lLLVMMCDisassembler -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoDWARF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "x86desc": "-lLLVMX86Desc -lLLVMX86Utils -lLLVMX86Info -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "x86disassembler": "-lLLVMX86Disassembler -lLLVMX86Info -lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "x86info": "-lLLVMX86Info -lLLVMSupport -lLLVMDemangle", - "x86utils": "-lLLVMX86Utils -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "x86utils": "-lLLVMX86Utils -lLLVMSupport -lLLVMDemangle", + "xray": "-lLLVMXRay -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", } import os @@ -97,11 +107,11 @@ for arg in sys.argv[1:]: if args == []: fail("no arguments") elif args == ["--version"]: - print("8.0.0svn") + print("10.0.1") elif args == ["--cppflags"]: - print("-I" + prefix + "/include -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS") + print("-I" + prefix + "/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS") elif args == ["--cxxflags"]: - print("-I" + prefix + "/include --std=gnu++11 -fPIC -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wno-missing-field-initializers -pedantic -Wno-long-long -Wno-comment -g -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS") + print("-I" + prefix + "/include --std=c++14 -fno-exceptions -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS") elif args == ["--components"]: print(" ".join(components.keys())) elif args == ["--includedir"]: @@ -111,15 +121,28 @@ elif args == ["--ldflags"]: elif args == ["--libdir"]: print(prefix + "/lib") elif args == ["--system-libs"]: - print("") + print("-lm") elif args == ["--targets-built"]: print("X86") elif args[0] == "--libs": libs = [] + if len(args) == 1: + args.append("all") for component in args[1:]: for lib in components[component].split(" "): libs.append(lib) print(" ".join(libs)) +elif args[0] == "--libfiles": + libs = [] + if len(args) == 1: + args.append("all") + for component in args[1:]: + for lib in components[component].split(" "): + file = prefix + "/lib/lib" + lib[2:] + ".a" + libs.append(file) + print(" ".join(libs)) +elif args == ["--has-rtti"]: + print("YES") elif args[0] == "--shared-mode": print("static") else: From 7788a850089418c123c9a50ab73bedabd029f060 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 23 Dec 2020 21:15:53 -0700 Subject: [PATCH 0852/3180] Update mesa_glu --- recipes/mesa_glu/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/mesa_glu/recipe.sh b/recipes/mesa_glu/recipe.sh index 8869ca79..86b0baa0 100644 --- a/recipes/mesa_glu/recipe.sh +++ b/recipes/mesa_glu/recipe.sh @@ -1,5 +1,5 @@ -VERSION=9.0.0 -TAR=ftp://ftp.freedesktop.org/pub/mesa/glu/glu-$VERSION.tar.bz2 +VERSION=9.0.1 +TAR=ftp://ftp.freedesktop.org/pub/mesa/glu/glu-$VERSION.tar.xz BUILD_DEPENDS=(mesa) function recipe_version { From 6c3a3980f30d0bcdf0d4f6e42ed449c6e0b7f7cf Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 23 Dec 2020 21:17:06 -0700 Subject: [PATCH 0853/3180] Fix missing include in gears --- recipes/gears/gears.c | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/gears/gears.c b/recipes/gears/gears.c index 4f0e0387..14508dc6 100644 --- a/recipes/gears/gears.c +++ b/recipes/gears/gears.c @@ -14,6 +14,7 @@ #include #include #include +#include #ifndef M_PI #define M_PI 3.14159265 From bdcad6f2513bce70da425e4c883d35c716571a60 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 23 Dec 2020 21:22:59 -0700 Subject: [PATCH 0854/3180] Update mesa to use meson --- recipes/mesa/recipe.sh | 73 +++++++++++++++++++++++++++++------------- 1 file changed, 51 insertions(+), 22 deletions(-) diff --git a/recipes/mesa/recipe.sh b/recipes/mesa/recipe.sh index e62c4040..853b582e 100644 --- a/recipes/mesa/recipe.sh +++ b/recipes/mesa/recipe.sh @@ -17,27 +17,57 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1" export CPPFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1" - export LDFLAGS="-L$sysroot/lib --static" + export LDFLAGS="-L$sysroot/lib --static $("${TARGET}-llvm-config" --libfiles all)" #export LLVM_CONFIG="x86_64-unknown-redox-llvm-config" - NOCONFIGURE=1 ./autogen.sh - ./configure \ - --build=${BUILD} \ - --host="${HOST}" \ - --prefix=/ \ - --disable-dri \ - --disable-dri3 \ - --disable-driglx-direct \ - --disable-egl \ - --disable-glx \ - --disable-gbm \ - --disable-llvm-shared-libs \ - --disable-shared \ - --enable-llvm \ - --enable-gallium-osmesa \ - --enable-static \ - --with-gallium-drivers=swrast \ - --with-platforms=surfaceless - "$REDOX_MAKE" V=1 -j"$($NPROC)" + + # TODO: Fix this annoying shite + echo "[binaries]" > cross_file.txt + echo "c = '${CC}'" >> cross_file.txt + echo "cpp = '${CXX}'" >> cross_file.txt + echo "ar = '${AR}'" >> cross_file.txt + echo "strip = '${STRIP}'" >> cross_file.txt + echo "pkgconfig = '${PKG_CONFIG}'" >> cross_file.txt + echo "llvm-config = '${TARGET}-llvm-config'" >> cross_file.txt + + echo "[host_machine]" >> cross_file.txt + echo "system = 'redox'" >> cross_file.txt + echo "cpu_family = 'x86_64'" >> cross_file.txt + echo "cpu = 'x86_64'" >> cross_file.txt + echo "endian = 'little'" >> cross_file.txt + + echo "[paths]" >> cross_file.txt + echo "prefix = '/'" >> cross_file.txt + echo "libdir = 'lib'" >> cross_file.txt + echo "bindir = 'bin'" >> cross_file.txt + + unset AR + unset AS + unset CC + unset CXX + unset LD + unset NM + unset OBJCOPY + unset OBJDUMP + unset PKG_CONFIG + unset PKG_CONFIG_PATH + unset RANLIB + unset READELF + unset STRIP + + meson . _build \ + --cross-file cross_file.txt \ + --buildtype release \ + --strip \ + -Ddefault_library=static \ + -Dglx=disabled \ + -Dllvm=enabled \ + -Dosmesa=gallium \ + -Dplatforms= \ + -Dshader-cache=disabled \ + -Dshared-llvm=disabled \ + -Dshared-glapi=disabled + + ninja -C _build -v skip=1 } @@ -52,9 +82,8 @@ function recipe_clean { } function recipe_stage { - #export LLVM_CONFIG="x86_64-unknown-redox-llvm-config" dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install + DESTDIR="$dest" ninja -C _build install rm -f "$dest/lib/"*.la skip=1 } From 3e708faca17d12e8004638bc04204436c076b4be Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 23 Dec 2020 21:23:10 -0700 Subject: [PATCH 0855/3180] Fix indenting in gdk-pixbuf --- recipes/gdk-pixbuf/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/gdk-pixbuf/recipe.sh b/recipes/gdk-pixbuf/recipe.sh index 457461dd..26a41f3e 100755 --- a/recipes/gdk-pixbuf/recipe.sh +++ b/recipes/gdk-pixbuf/recipe.sh @@ -59,7 +59,7 @@ function recipe_build { -Dgir=false \ -Dx11=false ninja -C _build -v - skip=1 + skip=1 } function recipe_test { From 84535c9062c8f977e0d7c76ade8a3c751982b4d6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 23 Dec 2020 21:27:32 -0700 Subject: [PATCH 0856/3180] WIP: Add llvm-config libs to gears compilation --- recipes/gears/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/gears/recipe.sh b/recipes/gears/recipe.sh index ea1114b4..570139e9 100644 --- a/recipes/gears/recipe.sh +++ b/recipes/gears/recipe.sh @@ -19,7 +19,7 @@ function recipe_prepare { function recipe_build { sysroot="$(realpath ../sysroot)" set -x - "${CXX}" -O2 -I "$sysroot/include" -L "$sysroot/lib" gears.c -o gears -static -lorbital $("${PKG_CONFIG}" --libs glu) -lglapi -lz + "${CXX}" -O2 -I "$sysroot/include" -L "$sysroot/lib" gears.c -o gears -static -lorbital $("${PKG_CONFIG}" --libs glu) $("${TARGET}-llvm-config" --libs all) -lz set +x skip=1 } From 86d71150ae68036fc29ce51a1fba2cb62405c6d0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 15 Jan 2021 12:56:34 -0700 Subject: [PATCH 0857/3180] Update redoxer --- Cargo.lock | 732 ++++++++++++++++++++++++++++++----------------------- Cargo.toml | 2 +- 2 files changed, 415 insertions(+), 319 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index db76de9d..09dc5066 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,15 +2,20 @@ # It is not intended for manual editing. [[package]] name = "addr2line" -version = "0.12.1" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gimli 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gimli 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "adler" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "adler32" -version = "1.0.4" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -18,7 +23,7 @@ name = "ansi_term" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -33,7 +38,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "arrayvec" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -41,26 +46,27 @@ name = "atty" version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "hermit-abi 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "hermit-abi 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "autocfg" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "backtrace" -version = "0.3.48" +version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "addr2line 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", - "object 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "addr2line 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", + "miniz_oxide 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "object 0.22.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-demangle 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -68,18 +74,13 @@ name = "base64" version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "safemem 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "base64" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "base64" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -94,11 +95,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "blake2b_simd" -version = "0.5.10" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -108,27 +109,27 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.54 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.66 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "blake3" -version = "0.3.4" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.54 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.66 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crypto-mac 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -138,7 +139,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -157,17 +158,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "bytecount" -version = "0.6.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "byteorder" -version = "1.3.4" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "cc" -version = "1.0.54" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -175,9 +176,14 @@ name = "cfg-if" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "clap" -version = "2.33.1" +version = "2.33.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -185,10 +191,15 @@ dependencies = [ "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "vec_map 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "const_fn" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "constant_time_eq" version = "0.1.5" @@ -196,52 +207,51 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "crc32fast" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crossbeam-deque" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-epoch 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-epoch 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crossbeam-epoch" -version = "0.8.2" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "const_fn 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "memoffset 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "memoffset 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "crossbeam-queue" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "crossbeam-utils" -version = "0.7.2" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -254,6 +264,15 @@ dependencies = [ "subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "generic-array 0.14.4 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "digest" version = "0.8.1" @@ -262,29 +281,36 @@ dependencies = [ "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "generic-array 0.14.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "dirs" version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "dirs-sys 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "dirs-sys 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "dirs-sys" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_users 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_users 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "either" -version = "1.5.3" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -292,12 +318,12 @@ name = "err-derive" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro-error 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rustversion 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", - "synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-error 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rustversion 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)", + "synstructure 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -305,7 +331,7 @@ name = "failure" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "backtrace 0.3.48 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)", "failure_derive 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -314,10 +340,10 @@ name = "failure_derive" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", - "synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)", + "synstructure 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -327,13 +353,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "filetime" -version = "0.2.10" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -351,9 +377,9 @@ name = "fuse" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", "thread-scoped 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -367,26 +393,45 @@ dependencies = [ ] [[package]] -name = "getrandom" -version = "0.1.14" +name = "generic-array" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "typenum 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", "wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "getrandom" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", + "wasi 0.10.1+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "gimli" -version = "0.21.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "hermit-abi" -version = "0.1.13" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -430,12 +475,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-normalization 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-normalization 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "index-fixed" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -443,7 +488,7 @@ name = "itertools" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -463,7 +508,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "libc" -version = "0.2.70" +version = "0.2.82" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -471,8 +516,8 @@ name = "libflate" version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "adler32 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crc32fast 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rle-decode-fast 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -482,12 +527,12 @@ name = "log" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "log" -version = "0.4.8" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -498,17 +543,12 @@ name = "matches" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "maybe-uninit" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "memoffset" -version = "0.5.4" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -519,13 +559,22 @@ dependencies = [ "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "miniz_oxide" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "adler 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "num_cpus" version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "hermit-abi 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "hermit-abi 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -535,7 +584,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "object" -version = "0.19.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -563,13 +612,13 @@ dependencies = [ [[package]] name = "pbr" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", - "termion 1.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-channel 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -588,7 +637,7 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.17" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -597,7 +646,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "blake3 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "clap 2.33.1 (registry+https://github.com/rust-lang/crates.io-index)", + "clap 2.33.3 (registry+https://github.com/rust-lang/crates.io-index)", "plain 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -611,39 +660,37 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "ppv-lite86" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "proc-macro-error" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro-error-attr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-error-attr 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)", "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "proc-macro-error-attr" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", - "syn-mid 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "proc-macro2" -version = "1.0.17" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -657,10 +704,10 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -668,7 +715,7 @@ name = "rand" version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -678,10 +725,10 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -689,22 +736,42 @@ name = "rand" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", "rand_chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rand" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_hc 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rand_chacha" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "ppv-lite86 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "ppv-lite86 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rand_chacha" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "ppv-lite86 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rand_core" version = "0.3.1" @@ -723,7 +790,15 @@ name = "rand_core" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_core" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "getrandom 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -735,23 +810,32 @@ dependencies = [ ] [[package]] -name = "rayon" -version = "1.3.0" +name = "rand_hc" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-deque 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon-core 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rayon" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon-core 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rayon-core" -version = "1.7.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-deque 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-queue 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-channel 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -768,14 +852,14 @@ dependencies = [ name = "redox_cookbook" version = "0.1.0" dependencies = [ - "blake3 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "pbr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "blake3 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "pbr 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "pkgar 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "redoxer 0.2.19 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", + "redoxer 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", "termion 1.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", + "toml 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", "walkdir 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -786,17 +870,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arg_parser 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", "pkgar 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "redox_liner 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "redox_pkgutils 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "redoxfs 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rust-argon2 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", + "redoxfs 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rust-argon2 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", "termion 1.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", + "toml 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -804,10 +888,10 @@ name = "redox_liner" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytecount 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bytecount 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", "termion 1.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -816,18 +900,18 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bidir-map 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "clap 2.33.1 (registry+https://github.com/rust-lang/crates.io-index)", + "clap 2.33.3 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)", "hyper-rustls 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "libflate 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", "ordermap 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", - "pbr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "pbr 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "petgraph 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)", "redox_liner 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", "sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tar 0.4.28 (registry+https://github.com/rust-lang/crates.io-index)", + "tar 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "version-compare 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -837,6 +921,14 @@ name = "redox_syscall" version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "redox_syscall" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "redox_termios" version = "0.1.1" @@ -847,46 +939,46 @@ dependencies = [ [[package]] name = "redox_users" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)", - "rust-argon2 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rust-argon2 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "redoxer" -version = "0.2.19" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "dirs 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "proc-mounts 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "redox_installer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)", - "redoxfs 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "redoxfs 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "toml 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "redoxfs" -version = "0.4.1" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fuse 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", "uuid 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "remove_dir_all" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -894,9 +986,9 @@ name = "ring" version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.54 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.66 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -907,29 +999,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "rust-argon2" -version = "0.7.0" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "blake2b_simd 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2b_simd 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", "constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rust-argon2" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "base64 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", - "blake2b_simd 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", - "constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rustc-demangle" -version = "0.1.16" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -938,7 +1019,7 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)", "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", "sct 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -947,13 +1028,8 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "safemem" @@ -984,20 +1060,20 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.110" +version = "1.0.119" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde_derive 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_derive" -version = "1.0.110" +version = "1.0.119" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1023,17 +1099,12 @@ dependencies = [ "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "smallvec" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "sodalite" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "index-fixed 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "index-fixed 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1047,34 +1118,29 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "syn" -version = "1.0.25" +name = "subtle" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] -name = "syn-mid" -version = "0.5.0" +name = "syn" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "synstructure" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1084,26 +1150,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "tar" -version = "0.4.28" +version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "filetime 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "filetime 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)", "xattr 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tempfile" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)", - "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "remove_dir_all 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1111,7 +1177,7 @@ name = "termion" version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", "numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)", "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1122,7 +1188,7 @@ name = "textwrap" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1135,24 +1201,37 @@ name = "time" version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "tinyvec" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "tinyvec_macros 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "toml" version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "toml" -version = "0.5.6" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1188,20 +1267,20 @@ dependencies = [ [[package]] name = "unicode-normalization" -version = "0.1.12" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "smallvec 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tinyvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "unicode-width" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "unicode-xid" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1253,7 +1332,7 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "same-file 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "winapi-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1262,6 +1341,11 @@ name = "wasi" version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "wasi" +version = "0.10.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "webpki" version = "0.18.1" @@ -1282,7 +1366,7 @@ dependencies = [ [[package]] name = "winapi" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1299,7 +1383,7 @@ name = "winapi-util" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1312,153 +1396,164 @@ name = "xattr" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", ] [metadata] -"checksum addr2line 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a49806b9dadc843c61e7c97e72490ad7f7220ae249012fbda9ad0609457c0543" -"checksum adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2e7343e7fc9de883d1b0341e0b13970f764c14101234857d2ddafa1cb1cac2" +"checksum addr2line 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a55f82cfe485775d02112886f4169bde0c5894d75e79ead7eafe7e40a25e45f7" +"checksum adler 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" +"checksum adler32 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" "checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" "checksum arg_parser 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e9bcdf9185a4ea0d8afa7c8ad387cc3a93c3ecfa918125e000a57a42e71268d7" "checksum arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" -"checksum arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" +"checksum arrayvec 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" "checksum atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -"checksum autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" -"checksum backtrace 0.3.48 (registry+https://github.com/rust-lang/crates.io-index)" = "0df2f85c8a2abbe3b7d7e748052fdd9b76a0458fdeb16ad4223f5eca78c7c130" -"checksum base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" -"checksum base64 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "53d1ccbaf7d9ec9537465a97bf19edc1a4e158ecb49fc16178202238c569cc42" +"checksum autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" +"checksum backtrace 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = "ef5140344c85b01f9bbb4d4b7288a8aa4b3287ccef913a14bcc78a1063623598" +"checksum base64 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" "checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" "checksum bidir-map 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6c3d05037e57974413eef55a8505df19de3cb4dc7a8f8389e1588ec492ae9c73" "checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" -"checksum blake2b_simd 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)" = "d8fb2d74254a3a0b5cac33ac9f8ed0e44aa50378d9dbb2e5d83bd21ed1dc2c8a" +"checksum blake2b_simd 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)" = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" "checksum blake3 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "667d945f23cefed0b5f973af35c4bc3319caa6776fbda270e4897d8504afa8e4" -"checksum blake3 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "423897d97e11b810c9da22458400b28ec866991c711409073662eb34dc44bfff" +"checksum blake3 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "e9ff35b701f3914bdb8fad3368d822c766ef2858b2583198e41639b936f09d3f" "checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" "checksum block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" "checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" -"checksum bytecount 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b0017894339f586ccb943b01b9555de56770c11cda818e7e3d8bd93f4ed7f46e" -"checksum byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" -"checksum cc 1.0.54 (registry+https://github.com/rust-lang/crates.io-index)" = "7bbb73db36c1246e9034e307d0fba23f9a2e251faa47ade70c1bd252220c8311" +"checksum bytecount 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "72feb31ffc86498dacdbd0fcebb56138e7177a8cc5cea4516031d15ae85a742e" +"checksum byteorder 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae44d1a3d5a19df61dd0c8beb138458ac2a53a7ac09eba97d55592540004306b" +"checksum cc 1.0.66 (registry+https://github.com/rust-lang/crates.io-index)" = "4c0496836a84f8d0495758516b8621a622beb77c0fed418570e50764093ced48" "checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" -"checksum clap 2.33.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bdfa80d47f954d53a35a64987ca1422f495b8d6483c0fe9f7117b36c2a792129" +"checksum cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +"checksum clap 2.33.3 (registry+https://github.com/rust-lang/crates.io-index)" = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" +"checksum const_fn 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "28b9d6de7f49e22cf97ad17fc4036ece69300032f45f78f30b4a4482cdc3f4a6" "checksum constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" -"checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" -"checksum crossbeam-deque 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285" -"checksum crossbeam-epoch 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" -"checksum crossbeam-queue 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c695eeca1e7173472a32221542ae469b3e9aac3a4fc81f7696bcad82029493db" -"checksum crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" +"checksum crc32fast 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" +"checksum crossbeam-channel 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "dca26ee1f8d361640700bde38b2c37d8c22b3ce2d360e1fc1c74ea4b0aa7d775" +"checksum crossbeam-deque 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" +"checksum crossbeam-epoch 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a1aaa739f95311c2c7887a76863f500026092fb1dce0161dab577e559ef3569d" +"checksum crossbeam-utils 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "02d96d1e189ef58269ebe5b97953da3274d83a93af647c2ddd6f9dab28cedb8d" "checksum crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" +"checksum crypto-mac 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" "checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +"checksum digest 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" "checksum dirs 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "13aea89a5c93364a98e9b37b2fa237effbb694d5cfe01c5b70941f7eb087d5e3" -"checksum dirs-sys 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "afa0b23de8fd801745c471deffa6e12d248f962c9fd4b4c33787b055599bde7b" -"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" +"checksum dirs-sys 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "8e93d7f5705de3e49895a2b5e0b8855a1c27f080192ae9c32a6432d50741a57a" +"checksum either 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" "checksum err-derive 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "22deed3a8124cff5fa835713fa105621e43bbdc46690c3a6b68328a012d350d4" "checksum failure 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" "checksum failure_derive 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" "checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" -"checksum filetime 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "affc17579b132fc2461adf7c575cc6e8b134ebca52c51f5411388965227dc695" +"checksum filetime 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "0c122a393ea57648015bf06fbd3d372378992e86b9ff5a7a497b076a28c79efe" "checksum fixedbitset 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "86d4de0081402f5e88cdac65c8dcdcc73118c1a7a465e2a05f0da05843a8ea33" "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" "checksum fuse 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "80e57070510966bfef93662a81cb8aa2b1c7db0964354fa9921434f04b9e8660" "checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" -"checksum getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" -"checksum gimli 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bcc8e0c9bce37868955864dbecd2b1ab2bdf967e6f28066d65aaac620444b65c" -"checksum hermit-abi 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "91780f809e750b0a89f5544be56617ff6b1227ee485bcb06ebe10cdf89bd3b71" +"checksum generic-array 0.14.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" +"checksum getrandom 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +"checksum getrandom 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4060f4657be78b8e766215b02b18a2e862d83745545de804638e2b545e81aee6" +"checksum gimli 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" +"checksum hermit-abi 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8" "checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" "checksum hyper 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)" = "0a0652d9a2609a968c14be1a9ea00bf4b1d64e2e1f53a1b51b6fff3a6e829273" "checksum hyper-rustls 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "71f7b2e5858ab9e19771dc361159f09ee5031734a6f7471fe0947db0238d92b7" "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" -"checksum index-fixed 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c63adf4f50cae82ddb03b088a55172f5044e73c8f02d029e69780717f764bbfa" +"checksum index-fixed 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4161ceaf2f41b6cd3f6502f5da085d4ad4393a51e0c70ed2fce1d5698d798fae" "checksum itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484" "checksum keccak 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" "checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" "checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -"checksum libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)" = "3baa92041a6fec78c687fa0cc2b3fae8884f743d672cf551bed1d6dac6988d0f" +"checksum libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)" = "89203f3fba0a3795506acaad8ebce3c80c0af93f994d5a1d7a0b1eeb23271929" "checksum libflate 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)" = "d9135df43b1f5d0e333385cb6e7897ecd1a43d7d11b91ac003f4d2c2d2401fdd" "checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" -"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" +"checksum log 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)" = "fcf3805d4480bb5b86070dcfeb9e2cb2ebc148adb753c5cca5f884d1d65a42b2" "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" -"checksum maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" -"checksum memoffset 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b4fc2c02a7e374099d4ee95a193111f72d2110197fe200272371758f6c3643d8" +"checksum memoffset 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "157b4208e3059a8f9e78d559edc658e13df41410cb3ae03979c83130067fdd87" "checksum mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" +"checksum miniz_oxide 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d" "checksum num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" "checksum numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" -"checksum object 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9cbca9424c482ee628fa549d9c812e2cd22f1180b9222c9200fdfa6eb31aecb2" +"checksum object 0.22.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8d3b63360ec3cb337817c2dbd47ab4a0f170d285d8e5a2064600f3def1402397" "checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" "checksum ordermap 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "b81cf3b8cb96aa0e73bbedfcdc9708d09fec2854ba8d474be4e6f666d7379e8b" "checksum ordermap 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a86ed3f5f244b372d6b1a00b72ef7f8876d0bc6a78a4c9985c53614041512063" "checksum partition-identity 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ec13ba9a0eec5c10a89f6ec1b6e9e2ef7d29b810d771355abbd1c43cae003ed6" -"checksum pbr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4403eb718d70c03ee279e51737782902c68cca01e870a33b6a2f9dfb50b9cd83" +"checksum pbr 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ff5751d87f7c00ae6403eb1fcbba229b9c76c9a30de8c1cf87182177b168cea2" "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" "checksum petgraph 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3659d1ee90221741f65dd128d9998311b0e40c5d3c23a62445938214abce4f" -"checksum pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)" = "05da548ad6865900e60eaba7f589cc0783590a92e940c26953ff81ddbab2d677" +"checksum pkg-config 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)" = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" "checksum pkgar 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "74003f2ac9baa8600352a677bd8763088cc35498a4364abe9ae5898832015bb9" "checksum plain 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" -"checksum ppv-lite86 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "237a5ed80e274dbc66f86bd59c1e25edc039660be53194b5fe0a482e0f2612ea" -"checksum proc-macro-error 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "98e9e4b82e0ef281812565ea4751049f1bdcdfccda7d3f459f2e138a40c08678" -"checksum proc-macro-error-attr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4f5444ead4e9935abd7f27dc51f7e852a0569ac888096d5ec2499470794e2e53" -"checksum proc-macro2 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)" = "1502d12e458c49a4c9cbff560d0fe0060c252bc29799ed94ca2ed4bb665a0101" +"checksum ppv-lite86 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" +"checksum proc-macro-error 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +"checksum proc-macro-error-attr 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +"checksum proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)" = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" "checksum proc-mounts 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad7e9c8d1b8c20f16a84d61d7c4c0325a5837c1307a2491b509cd92fb4e4442" -"checksum quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "54a21852a652ad6f610c9510194f398ff6f8692e334fd1145fed931f7fbe44ea" +"checksum quote 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "991431c3519a3f36861882da93630ce66b52918dcf1b8e2fd66b397fc96f28df" "checksum rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)" = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c" "checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" "checksum rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +"checksum rand 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "18519b42a40024d661e1714153e9ad0c3de27cd495760ceb09710920f1098b1e" "checksum rand_chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +"checksum rand_chacha 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d" "checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" "checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" "checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +"checksum rand_core 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c026d7df8b298d90ccbbc5190bd04d85e159eaf5576caeacf8741da93ccbd2e5" "checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -"checksum rayon 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "db6ce3297f9c85e16621bb8cca38a06779ffc31bb8184e1be4bed2be4678a098" -"checksum rayon-core 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "08a89b46efaf957e52b18062fb2f4660f8b8a4dde1807ca002690868ef2c85a9" +"checksum rand_hc 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73" +"checksum rayon 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" +"checksum rayon-core 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" "checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" "checksum redox_installer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "98346851d42e2f357b3c023b27b75da14a774c226f9636a0ed42535b72d62bde" "checksum redox_liner 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f014f6b014591f45bdd86377ab2f01b840ddd9e33421222b84d06e244b111327" "checksum redox_pkgutils 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf753c67a43031ca0aa5661c1808edc4f94118f1daa368df38b641de8d74a91" "checksum redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)" = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" +"checksum redox_syscall 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "05ec8ca9416c5ea37062b502703cd7fcb207736bc294f6e0cf367ac6fc234570" "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" -"checksum redox_users 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "09b23093265f8d200fa7b4c2c76297f47e681c655f6f1285a8780d6a022f7431" -"checksum redoxer 0.2.19 (registry+https://github.com/rust-lang/crates.io-index)" = "9641f270dd15b5835a8e7f8d61c80fada81f4242bdc670dd48e4f7183fef97f0" -"checksum redoxfs 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d2cf914a0e128dfd60c462d07ae347449959af11acf84fd9cd684bd8b89e1965" -"checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" +"checksum redox_users 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" +"checksum redoxer 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)" = "0f80a9eb6af9fc219652f2a02198c44b639abaf8af8b940ad48e1b2f24b1b603" +"checksum redoxfs 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "68477c1e271b4f9e2f5e3fd5f797d1528d819ed42bf4f4edcfb9e24fea8934f2" +"checksum remove_dir_all 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" "checksum ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)" = "2c4db68a2e35f3497146b7e4563df7d4773a2433230c5e4b448328e31740458a" "checksum rle-decode-fast 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cabe4fa914dec5870285fa7f71f602645da47c486e68486d2b4ceb4a343e90ac" -"checksum rust-argon2 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2bc8af4bda8e1ff4932523b94d3dd20ee30a87232323eda55903ffd71d2fb017" -"checksum rust-argon2 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9dab61250775933275e84053ac235621dfb739556d5c54a2f2e9313b7cf43a19" -"checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" +"checksum rust-argon2 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" +"checksum rustc-demangle 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" "checksum rustls 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "942b71057b31981152970d57399c25f72e27a6ee0d207a669d8304cabf44705b" -"checksum rustversion 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b3bba175698996010c4f6dce5e7f173b6eb781fce25d2cfc45e27091ce0b79f6" +"checksum rustversion 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cb5d2a036dc6d2d8fd16fde3498b04306e29bd193bf306a57427019b823d5acd" "checksum safemem 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" "checksum same-file 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" "checksum scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" "checksum sct 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cb8f61f9e6eadd062a71c380043d28036304a4706b3c4dd001ff3387ed00745a" -"checksum serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)" = "99e7b308464d16b56eba9964e4972a3eee817760ab60d88c3f86e1fecb08204c" -"checksum serde_derive 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)" = "818fbf6bfa9a42d3bfcaca148547aa00c7b915bec71d1757aa2d44ca68771984" +"checksum serde 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)" = "9bdd36f49e35b61d49efd8aa7fc068fd295961fd2286d0b2ee9a4c7a14e99cc3" +"checksum serde_derive 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)" = "552954ce79a059ddd5fd68c271592374bd15cab2274970380c000118aeffe1cd" "checksum sha2 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" "checksum sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecf" -"checksum smallvec 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c7cb5678e1615754284ec264d9bb5b4c27d2018577fd90ac0ceb578591ed5ee4" "checksum sodalite 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "67643084c740297bac275b1d97901ec27ca5984be4e8f75d86a33498e0e3e61c" "checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" "checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" -"checksum syn 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "f14a640819f79b72a710c0be059dce779f9339ae046c8bef12c361d56702146f" -"checksum syn-mid 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7be3539f6c128a931cf19dcee741c1af532c7fd387baa739c03dd2e96479338a" -"checksum synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545" +"checksum subtle 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1e81da0851ada1f3e9d4312c704aa4f8806f0f9d69faaf8df2f3464b4a9437c2" +"checksum syn 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)" = "cc60a3d73ea6594cd712d830cc1f0390fd71542d8c8cd24e70cc54cdfd5e05d5" +"checksum synstructure 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701" "checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" -"checksum tar 0.4.28 (registry+https://github.com/rust-lang/crates.io-index)" = "5c058ad0bd6ccb84faa24cc44d4fc99bee8a5d7ba9ff33aa4d993122d1aeeac2" -"checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" +"checksum tar 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "489997b7557e9a43e192c527face4feacc78bfbe6eed67fd55c4c9e381cba290" +"checksum tempfile 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" "checksum termion 1.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c22cec9d8978d906be5ac94bceb5a010d885c626c4c8855721a4dbd20e3ac905" "checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" "checksum thread-scoped 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bcbb6aa301e5d3b0b5ef639c9a9c7e2f1c944f177b460c04dc24c69b1fa2bd99" "checksum time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" +"checksum tinyvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ccf8dbc19eb42fba10e8feaaec282fb50e2c14b2726d6301dbfeed0f73306a6f" +"checksum tinyvec_macros 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" "checksum toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f" -"checksum toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71a" +"checksum toml 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)" = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" "checksum traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" "checksum typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" "checksum typenum 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" "checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" -"checksum unicode-normalization 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5479532badd04e128284890390c1e876ef7a993d0570b3597ae43dfa1d59afa4" -"checksum unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479" -"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" +"checksum unicode-normalization 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "a13e63ab62dbe32aeee58d1c5408d35c36c392bba5d9d3142287219721afe606" +"checksum unicode-width 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" +"checksum unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" "checksum untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "55cd1f4b4e96b46aeb8d4855db4a7a9bd96eeeb5c6a1ab54593328761642ce2f" "checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" "checksum uuid 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcc7e3b898aa6f6c08e5295b6c89258d1331e9ac578cc992fb818759951bdc22" @@ -1467,10 +1562,11 @@ dependencies = [ "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" "checksum version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" "checksum walkdir 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d" +"checksum wasi 0.10.1+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" = "93c6c3420963c5c64bca373b25e77acb562081b9bb4dd5bb864187742186cea9" "checksum wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" "checksum webpki 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)" = "17d7967316d8411ca3b01821ee6c332bde138ba4363becdb492f12e514daa17f" "checksum webpki-roots 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "85d1f408918fd590908a70d36b7ac388db2edc221470333e4d6e5b598e44cabf" -"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" +"checksum winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" "checksum winapi-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/Cargo.toml b/Cargo.toml index 3d118d19..2fdcfefa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,7 @@ path = "src/lib.rs" blake3 = "0.3.4" pbr = "1.0.2" pkgar = "0.1.6" -redoxer = "0.2.19" +redoxer = "0.2.20" serde = { version = "1.0.110", features = ["derive"] } sha2 = "0.8.2" termion = "1.5.5" From ff407fdc34841ffb820d8860dbefaaf1dc9e961e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 14 Feb 2021 14:17:37 -0700 Subject: [PATCH 0858/3180] Update cook dependencies --- Cargo.lock | 1037 ++++++++++++++++++++++++++-------------------------- 1 file changed, 517 insertions(+), 520 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 09dc5066..ba48ea72 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,1570 +4,1567 @@ name = "addr2line" version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a55f82cfe485775d02112886f4169bde0c5894d75e79ead7eafe7e40a25e45f7" dependencies = [ - "gimli 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gimli", ] [[package]] name = "adler" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" [[package]] name = "adler32" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" [[package]] name = "ansi_term" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" dependencies = [ - "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi", ] [[package]] name = "arg_parser" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9bcdf9185a4ea0d8afa7c8ad387cc3a93c3ecfa918125e000a57a42e71268d7" [[package]] name = "arrayref" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" [[package]] name = "arrayvec" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] name = "atty" version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "hermit-abi", + "libc", + "winapi", ] [[package]] name = "autocfg" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "backtrace" -version = "0.3.55" +version = "0.3.56" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d117600f438b1707d4e4ae15d3595657288f8235a0eb593e80ecc98ab34e1bc" dependencies = [ - "addr2line 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", - "miniz_oxide 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "object 0.22.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-demangle 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "addr2line", + "cfg-if 1.0.0", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", ] [[package]] name = "base64" version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" dependencies = [ - "byteorder 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "safemem 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", + "safemem", ] [[package]] name = "base64" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] name = "bidir-map" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c3d05037e57974413eef55a8505df19de3cb4dc7a8f8389e1588ec492ae9c73" [[package]] name = "bitflags" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" [[package]] name = "blake2b_simd" version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" dependencies = [ - "arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "arrayvec 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayref", + "arrayvec", + "constant_time_eq", ] [[package]] name = "blake3" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "667d945f23cefed0b5f973af35c4bc3319caa6776fbda270e4897d8504afa8e4" dependencies = [ - "arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "arrayvec 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.66 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayref", + "arrayvec", + "cc", + "cfg-if 0.1.10", + "constant_time_eq", + "crypto-mac 0.7.0", + "digest 0.8.1", + "rayon", ] [[package]] name = "blake3" version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9ff35b701f3914bdb8fad3368d822c766ef2858b2583198e41639b936f09d3f" dependencies = [ - "arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "arrayvec 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.66 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "crypto-mac 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayref", + "arrayvec", + "cc", + "cfg-if 0.1.10", + "constant_time_eq", + "crypto-mac 0.8.0", + "digest 0.9.0", ] [[package]] name = "block-buffer" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" dependencies = [ - "block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "block-padding", + "byte-tools", + "byteorder", + "generic-array 0.12.3", ] [[package]] name = "block-padding" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" dependencies = [ - "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byte-tools", ] [[package]] name = "byte-tools" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" [[package]] name = "bytecount" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72feb31ffc86498dacdbd0fcebb56138e7177a8cc5cea4516031d15ae85a742e" [[package]] name = "byteorder" version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae44d1a3d5a19df61dd0c8beb138458ac2a53a7ac09eba97d55592540004306b" [[package]] name = "cc" version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c0496836a84f8d0495758516b8621a622beb77c0fed418570e50764093ced48" [[package]] name = "cfg-if" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "clap" version = "2.33.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" dependencies = [ - "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-width 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "vec_map 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ansi_term", + "atty", + "bitflags", + "strsim", + "textwrap", + "unicode-width", + "vec_map", ] [[package]] name = "const_fn" version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28b9d6de7f49e22cf97ad17fc4036ece69300032f45f78f30b4a4482cdc3f4a6" [[package]] name = "constant_time_eq" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "crc32fast" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" dependencies = [ - "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", ] [[package]] name = "crossbeam-channel" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dca26ee1f8d361640700bde38b2c37d8c22b3ce2d360e1fc1c74ea4b0aa7d775" dependencies = [ - "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", + "crossbeam-utils", ] [[package]] name = "crossbeam-deque" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" dependencies = [ - "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-epoch 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", + "crossbeam-epoch", + "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1aaa739f95311c2c7887a76863f500026092fb1dce0161dab577e559ef3569d" dependencies = [ - "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "const_fn 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "memoffset 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", + "const_fn", + "crossbeam-utils", + "lazy_static", + "memoffset", + "scopeguard", ] [[package]] name = "crossbeam-utils" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d96d1e189ef58269ebe5b97953da3274d83a93af647c2ddd6f9dab28cedb8d" dependencies = [ - "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg", + "cfg-if 1.0.0", + "lazy_static", ] [[package]] name = "crypto-mac" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" dependencies = [ - "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", - "subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array 0.12.3", + "subtle 1.0.0", ] [[package]] name = "crypto-mac" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" dependencies = [ - "generic-array 0.14.4 (registry+https://github.com/rust-lang/crates.io-index)", - "subtle 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array 0.14.4", + "subtle 2.4.0", ] [[package]] name = "digest" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" dependencies = [ - "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array 0.12.3", ] [[package]] name = "digest" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "generic-array 0.14.4 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array 0.14.4", ] [[package]] name = "dirs" version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13aea89a5c93364a98e9b37b2fa237effbb694d5cfe01c5b70941f7eb087d5e3" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "dirs-sys 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10", + "dirs-sys", ] [[package]] name = "dirs-sys" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e93d7f5705de3e49895a2b5e0b8855a1c27f080192ae9c32a6432d50741a57a" dependencies = [ - "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_users 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "redox_users", + "winapi", ] [[package]] name = "either" version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" [[package]] name = "err-derive" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22deed3a8124cff5fa835713fa105621e43bbdc46690c3a6b68328a012d350d4" dependencies = [ - "proc-macro-error 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rustversion 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)", - "synstructure 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-error", + "proc-macro2", + "quote", + "rustversion", + "syn", + "synstructure", ] [[package]] name = "failure" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" dependencies = [ - "backtrace 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace", + "failure_derive", ] [[package]] name = "failure_derive" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" dependencies = [ - "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)", - "synstructure 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", + "synstructure", ] [[package]] name = "fake-simd" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" [[package]] name = "filetime" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d34cfa13a63ae058bfa601fe9e313bbdb3746427c1459185464ce0fcf62e1e8" dependencies = [ - "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.2.5", + "winapi", ] [[package]] name = "fixedbitset" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86d4de0081402f5e88cdac65c8dcdcc73118c1a7a465e2a05f0da05843a8ea33" [[package]] name = "fuchsia-cprng" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" [[package]] name = "fuse" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80e57070510966bfef93662a81cb8aa2b1c7db0964354fa9921434f04b9e8660" dependencies = [ - "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", - "thread-scoped 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "log 0.3.9", + "pkg-config", + "thread-scoped", + "time", ] [[package]] name = "generic-array" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" dependencies = [ - "typenum 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "typenum", ] [[package]] name = "generic-array" version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" dependencies = [ - "typenum 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "typenum", + "version_check 0.9.2", ] [[package]] name = "getrandom" version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ - "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", - "wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", ] [[package]] name = "getrandom" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" dependencies = [ - "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", - "wasi 0.10.1+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", + "libc", + "wasi 0.10.2+wasi-snapshot-preview1", ] [[package]] name = "gimli" version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" [[package]] name = "hermit-abi" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c" dependencies = [ - "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", ] [[package]] name = "httparse" -version = "1.3.4" +version = "1.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "615caabe2c3160b313d52ccc905335f4ed5f10881dd63dc5699d47e90be85691" [[package]] name = "hyper" version = "0.10.16" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a0652d9a2609a968c14be1a9ea00bf4b1d64e2e1f53a1b51b6fff3a6e829273" dependencies = [ - "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", - "traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.9.3", + "httparse", + "language-tags", + "log 0.3.9", + "mime", + "num_cpus", + "time", + "traitobject", + "typeable", + "unicase", + "url", ] [[package]] name = "hyper-rustls" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71f7b2e5858ab9e19771dc361159f09ee5031734a6f7471fe0947db0238d92b7" dependencies = [ - "hyper 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)", - "rustls 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "webpki 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)", - "webpki-roots 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper", + "rustls", + "webpki", + "webpki-roots", ] [[package]] name = "idna" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" dependencies = [ - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-normalization 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "matches", + "unicode-bidi", + "unicode-normalization", ] [[package]] name = "index-fixed" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161ceaf2f41b6cd3f6502f5da085d4ad4393a51e0c70ed2fce1d5698d798fae" [[package]] name = "itertools" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484" dependencies = [ - "either 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "either", ] [[package]] name = "keccak" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "language-tags" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" [[package]] name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.82" +version = "0.2.86" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7282d924be3275cec7f6756ff4121987bc6481325397dde6ba3e7802b1a8b1c" [[package]] name = "libflate" version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9135df43b1f5d0e333385cb6e7897ecd1a43d7d11b91ac003f4d2c2d2401fdd" dependencies = [ - "adler32 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crc32fast 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rle-decode-fast 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "adler32", + "crc32fast", + "rle-decode-fast", + "take_mut", ] [[package]] name = "log" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" dependencies = [ - "log 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.14", ] [[package]] name = "log" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", ] [[package]] name = "matches" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" [[package]] name = "memoffset" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "157b4208e3059a8f9e78d559edc658e13df41410cb3ae03979c83130067fdd87" dependencies = [ - "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg", ] [[package]] name = "mime" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" dependencies = [ - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9", ] [[package]] name = "miniz_oxide" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d" dependencies = [ - "adler 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "adler", + "autocfg", ] [[package]] name = "num_cpus" version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" dependencies = [ - "hermit-abi 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", + "hermit-abi", + "libc", ] [[package]] name = "numtoa" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" [[package]] name = "object" -version = "0.22.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9a7ab5d64814df0fe4a4b5ead45ed6c5f181ee3ff04ba344313a6c80446c5d4" [[package]] name = "opaque-debug" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" [[package]] name = "ordermap" version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b81cf3b8cb96aa0e73bbedfcdc9708d09fec2854ba8d474be4e6f666d7379e8b" [[package]] name = "ordermap" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a86ed3f5f244b372d6b1a00b72ef7f8876d0bc6a78a4c9985c53614041512063" [[package]] name = "partition-identity" version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec13ba9a0eec5c10a89f6ec1b6e9e2ef7d29b810d771355abbd1c43cae003ed6" dependencies = [ - "err-derive 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "err-derive", ] [[package]] name = "pbr" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff5751d87f7c00ae6403eb1fcbba229b9c76c9a30de8c1cf87182177b168cea2" dependencies = [ - "crossbeam-channel 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-channel", + "libc", + "time", + "winapi", ] [[package]] name = "percent-encoding" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" [[package]] name = "petgraph" version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3659d1ee90221741f65dd128d9998311b0e40c5d3c23a62445938214abce4f" dependencies = [ - "fixedbitset 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "ordermap 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "fixedbitset", + "ordermap 0.3.5", ] [[package]] name = "pkg-config" version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" [[package]] name = "pkgar" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74003f2ac9baa8600352a677bd8763088cc35498a4364abe9ae5898832015bb9" dependencies = [ - "blake3 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "clap 2.33.3 (registry+https://github.com/rust-lang/crates.io-index)", - "plain 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sodalite 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "blake3 0.2.3", + "clap", + "plain", + "rand 0.7.3", + "rand_core 0.5.1", + "sodalite", ] [[package]] name = "plain" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "ppv-lite86" version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" [[package]] name = "proc-macro-error" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ - "proc-macro-error-attr 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn", + "version_check 0.9.2", ] [[package]] name = "proc-macro-error-attr" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ - "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "version_check 0.9.2", ] [[package]] name = "proc-macro2" version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" dependencies = [ - "unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid", ] [[package]] name = "proc-mounts" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ad7e9c8d1b8c20f16a84d61d7c4c0325a5837c1307a2491b509cd92fb4e4442" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "partition-identity 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", + "partition-identity", ] [[package]] name = "quote" -version = "1.0.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" dependencies = [ - "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", ] [[package]] name = "rand" version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c" dependencies = [ - "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "rand 0.4.6", ] [[package]] name = "rand" version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" dependencies = [ - "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-cprng", + "libc", + "rand_core 0.3.1", + "rdrand", + "winapi", ] [[package]] name = "rand" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" dependencies = [ - "getrandom 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc 0.2.0", ] [[package]] name = "rand" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e" dependencies = [ - "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_hc 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "rand_chacha 0.3.0", + "rand_core 0.6.2", + "rand_hc 0.3.0", ] [[package]] name = "rand_chacha" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" dependencies = [ - "ppv-lite86 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ppv-lite86", + "rand_core 0.5.1", ] [[package]] name = "rand_chacha" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d" dependencies = [ - "ppv-lite86 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ppv-lite86", + "rand_core 0.6.2", ] [[package]] name = "rand_core" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" dependencies = [ - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2", ] [[package]] name = "rand_core" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" [[package]] name = "rand_core" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" dependencies = [ - "getrandom 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom 0.1.16", ] [[package]] name = "rand_core" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7" dependencies = [ - "getrandom 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom 0.2.2", ] [[package]] name = "rand_hc" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" dependencies = [ - "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1", ] [[package]] name = "rand_hc" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73" dependencies = [ - "rand_core 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.6.2", ] [[package]] name = "rayon" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" dependencies = [ - "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-deque 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon-core 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg", + "crossbeam-deque", + "either", + "rayon-core", ] [[package]] name = "rayon-core" version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" dependencies = [ - "crossbeam-channel 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-deque 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "lazy_static", + "num_cpus", ] [[package]] name = "rdrand" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "redox_cookbook" version = "0.1.0" dependencies = [ - "blake3 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", - "pbr 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "pkgar 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "redoxer 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "termion 1.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", - "walkdir 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "blake3 0.3.7", + "pbr", + "pkgar", + "redoxer", + "serde", + "sha2", + "termion", + "toml 0.5.8", + "walkdir", ] [[package]] name = "redox_installer" version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98346851d42e2f357b3c023b27b75da14a774c226f9636a0ed42535b72d62bde" dependencies = [ - "arg_parser 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", - "pkgar 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_liner 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_pkgutils 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "redoxfs 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rust-argon2 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", - "termion 1.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", + "arg_parser", + "failure", + "libc", + "pkgar", + "rand 0.7.3", + "redox_liner", + "redox_pkgutils", + "redoxfs", + "rust-argon2", + "serde", + "serde_derive", + "termion", + "toml 0.5.8", ] [[package]] name = "redox_liner" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f014f6b014591f45bdd86377ab2f01b840ddd9e33421222b84d06e244b111327" dependencies = [ - "bytecount 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "termion 1.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-width 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "bytecount", + "itertools", + "termion", + "unicode-width", ] [[package]] name = "redox_pkgutils" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf753c67a43031ca0aa5661c1808edc4f94118f1daa368df38b641de8d74a91" dependencies = [ - "bidir-map 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "clap 2.33.3 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper-rustls 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libflate 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "ordermap 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", - "pbr 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "petgraph 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_liner 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", - "sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tar 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "version-compare 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)", + "bidir-map", + "clap", + "hyper", + "hyper-rustls", + "libflate", + "ordermap 0.2.13", + "pbr", + "petgraph", + "redox_liner", + "serde", + "serde_derive", + "sha3", + "tar", + "toml 0.4.10", + "version-compare", ] [[package]] name = "redox_syscall" version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" [[package]] name = "redox_syscall" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94341e4e44e24f6b591b59e47a8a027df12e008d73fd5672dbea9cc22f4507d9" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", ] [[package]] name = "redox_termios" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8440d8acb4fd3d277125b4bd01a6f38aee8d814b3b5fc09b3f2b825d37d3fe8f" dependencies = [ - "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.2.5", ] [[package]] name = "redox_users" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" dependencies = [ - "getrandom 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)", - "rust-argon2 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom 0.1.16", + "redox_syscall 0.1.57", + "rust-argon2", ] [[package]] name = "redoxer" version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f80a9eb6af9fc219652f2a02198c44b639abaf8af8b940ad48e1b2f24b1b603" dependencies = [ - "dirs 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-mounts 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_installer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "redoxfs 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", + "dirs", + "proc-mounts", + "redox_installer", + "redox_syscall 0.2.5", + "redoxfs", + "tempfile", + "toml 0.5.8", ] [[package]] name = "redoxfs" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68477c1e271b4f9e2f5e3fd5f797d1528d819ed42bf4f4edcfb9e24fea8934f2" dependencies = [ - "fuse 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fuse", + "libc", + "redox_syscall 0.2.5", + "time", + "uuid", ] [[package]] name = "remove_dir_all" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" dependencies = [ - "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi", ] [[package]] name = "ring" version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c4db68a2e35f3497146b7e4563df7d4773a2433230c5e4b448328e31740458a" dependencies = [ - "cc 1.0.66 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", - "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", + "lazy_static", + "libc", + "untrusted", ] [[package]] name = "rle-decode-fast" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cabe4fa914dec5870285fa7f71f602645da47c486e68486d2b4ceb4a343e90ac" [[package]] name = "rust-argon2" version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" dependencies = [ - "base64 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", - "blake2b_simd 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", - "constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.13.0", + "blake2b_simd", + "constant_time_eq", + "crossbeam-utils", ] [[package]] name = "rustc-demangle" version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" [[package]] name = "rustls" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "942b71057b31981152970d57399c25f72e27a6ee0d207a669d8304cabf44705b" dependencies = [ - "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", - "sct 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "webpki 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.9.3", + "log 0.4.14", + "ring", + "sct", + "untrusted", + "webpki", ] [[package]] name = "rustversion" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb5d2a036dc6d2d8fd16fde3498b04306e29bd193bf306a57427019b823d5acd" [[package]] name = "safemem" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" [[package]] name = "same-file" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" dependencies = [ - "winapi-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util", ] [[package]] name = "scopeguard" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "sct" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb8f61f9e6eadd062a71c380043d28036304a4706b3c4dd001ff3387ed00745a" dependencies = [ - "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", - "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ring", + "untrusted", ] [[package]] name = "serde" -version = "1.0.119" +version = "1.0.123" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d5161132722baa40d802cc70b15262b98258453e85e5d1d365c757c73869ae" dependencies = [ - "serde_derive 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.119" +version = "1.0.123" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9391c295d64fc0abb2c556bad848f33cb8296276b1ad2677d1ae1ace4f258f31" dependencies = [ - "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "sha2" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" dependencies = [ - "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "block-buffer", + "digest 0.8.1", + "fake-simd", + "opaque-debug", ] [[package]] name = "sha3" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecf" dependencies = [ - "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "keccak 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "block-buffer", + "byte-tools", + "digest 0.8.1", + "keccak", + "opaque-debug", ] [[package]] name = "sodalite" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67643084c740297bac275b1d97901ec27ca5984be4e8f75d86a33498e0e3e61c" dependencies = [ - "index-fixed 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "index-fixed", ] [[package]] name = "strsim" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] name = "subtle" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" [[package]] name = "subtle" version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e81da0851ada1f3e9d4312c704aa4f8806f0f9d69faaf8df2f3464b4a9437c2" [[package]] name = "syn" -version = "1.0.58" +version = "1.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c700597eca8a5a762beb35753ef6b94df201c81cca676604f547495a0d7f0081" dependencies = [ - "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "unicode-xid", ] [[package]] name = "synstructure" version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701" dependencies = [ - "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", + "unicode-xid", ] [[package]] name = "take_mut" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" [[package]] name = "tar" -version = "0.4.30" +version = "0.4.32" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0313546c01d59e29be4f09687bcb4fb6690cec931cc3607b6aec7a0e417f4cc6" dependencies = [ - "filetime 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)", - "xattr 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "filetime", + "libc", + "xattr", ] [[package]] name = "tempfile" version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" dependencies = [ - "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "remove_dir_all 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", + "libc", + "rand 0.8.3", + "redox_syscall 0.2.5", + "remove_dir_all", + "winapi", ] [[package]] name = "termion" -version = "1.5.5" +version = "1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "077185e2eac69c3f8379a4298e1e07cd36beb962290d4a51199acf0fdc10607e" dependencies = [ - "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", - "numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "numtoa", + "redox_syscall 0.2.5", + "redox_termios", ] [[package]] name = "textwrap" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" dependencies = [ - "unicode-width 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width", ] [[package]] name = "thread-scoped" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcbb6aa301e5d3b0b5ef639c9a9c7e2f1c944f177b460c04dc24c69b1fa2bd99" [[package]] name = "time" version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" dependencies = [ - "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "winapi", ] [[package]] name = "tinyvec" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "317cca572a0e89c3ce0ca1f1bdc9369547fe318a683418e42ac8f59d14701023" dependencies = [ - "tinyvec_macros 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tinyvec_macros", ] [[package]] name = "tinyvec_macros" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "toml" version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f" dependencies = [ - "serde 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", ] [[package]] name = "toml" version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" dependencies = [ - "serde 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", ] [[package]] name = "traitobject" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" [[package]] name = "typeable" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" [[package]] name = "typenum" version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" [[package]] name = "unicase" version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" dependencies = [ - "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.1.5", ] [[package]] name = "unicode-bidi" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" dependencies = [ - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "matches", ] [[package]] name = "unicode-normalization" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07fbfce1c8a97d547e8b5334978438d9d6ec8c20e38f56d4a4374d181493eaef" dependencies = [ - "tinyvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tinyvec", ] [[package]] name = "unicode-width" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" [[package]] name = "unicode-xid" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" [[package]] name = "untrusted" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cd1f4b4e96b46aeb8d4855db4a7a9bd96eeeb5c6a1ab54593328761642ce2f" [[package]] name = "url" version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" dependencies = [ - "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "idna", + "matches", + "percent-encoding", ] [[package]] name = "uuid" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcc7e3b898aa6f6c08e5295b6c89258d1331e9ac578cc992fb818759951bdc22" dependencies = [ - "rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.23", ] [[package]] name = "vec_map" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "version-compare" version = "0.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1" [[package]] name = "version_check" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" [[package]] name = "version_check" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" [[package]] name = "walkdir" version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d" dependencies = [ - "same-file 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "same-file", + "winapi", + "winapi-util", ] [[package]] name = "wasi" version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" [[package]] name = "wasi" -version = "0.10.1+wasi-snapshot-preview1" +version = "0.10.2+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" [[package]] name = "webpki" version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17d7967316d8411ca3b01821ee6c332bde138ba4363becdb492f12e514daa17f" dependencies = [ - "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", - "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ring", + "untrusted", ] [[package]] name = "webpki-roots" version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85d1f408918fd590908a70d36b7ac388db2edc221470333e4d6e5b598e44cabf" dependencies = [ - "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "webpki 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted", + "webpki", ] [[package]] name = "winapi" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" dependencies = [ - "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", ] [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" dependencies = [ - "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi", ] [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "xattr" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" dependencies = [ - "libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", ] - -[metadata] -"checksum addr2line 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a55f82cfe485775d02112886f4169bde0c5894d75e79ead7eafe7e40a25e45f7" -"checksum adler 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" -"checksum adler32 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" -"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" -"checksum arg_parser 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e9bcdf9185a4ea0d8afa7c8ad387cc3a93c3ecfa918125e000a57a42e71268d7" -"checksum arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" -"checksum arrayvec 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" -"checksum atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -"checksum autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" -"checksum backtrace 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = "ef5140344c85b01f9bbb4d4b7288a8aa4b3287ccef913a14bcc78a1063623598" -"checksum base64 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" -"checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" -"checksum bidir-map 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6c3d05037e57974413eef55a8505df19de3cb4dc7a8f8389e1588ec492ae9c73" -"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" -"checksum blake2b_simd 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)" = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" -"checksum blake3 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "667d945f23cefed0b5f973af35c4bc3319caa6776fbda270e4897d8504afa8e4" -"checksum blake3 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "e9ff35b701f3914bdb8fad3368d822c766ef2858b2583198e41639b936f09d3f" -"checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" -"checksum block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" -"checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" -"checksum bytecount 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "72feb31ffc86498dacdbd0fcebb56138e7177a8cc5cea4516031d15ae85a742e" -"checksum byteorder 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae44d1a3d5a19df61dd0c8beb138458ac2a53a7ac09eba97d55592540004306b" -"checksum cc 1.0.66 (registry+https://github.com/rust-lang/crates.io-index)" = "4c0496836a84f8d0495758516b8621a622beb77c0fed418570e50764093ced48" -"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" -"checksum cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -"checksum clap 2.33.3 (registry+https://github.com/rust-lang/crates.io-index)" = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" -"checksum const_fn 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "28b9d6de7f49e22cf97ad17fc4036ece69300032f45f78f30b4a4482cdc3f4a6" -"checksum constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" -"checksum crc32fast 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" -"checksum crossbeam-channel 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "dca26ee1f8d361640700bde38b2c37d8c22b3ce2d360e1fc1c74ea4b0aa7d775" -"checksum crossbeam-deque 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" -"checksum crossbeam-epoch 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a1aaa739f95311c2c7887a76863f500026092fb1dce0161dab577e559ef3569d" -"checksum crossbeam-utils 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "02d96d1e189ef58269ebe5b97953da3274d83a93af647c2ddd6f9dab28cedb8d" -"checksum crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" -"checksum crypto-mac 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" -"checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" -"checksum digest 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -"checksum dirs 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "13aea89a5c93364a98e9b37b2fa237effbb694d5cfe01c5b70941f7eb087d5e3" -"checksum dirs-sys 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "8e93d7f5705de3e49895a2b5e0b8855a1c27f080192ae9c32a6432d50741a57a" -"checksum either 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" -"checksum err-derive 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "22deed3a8124cff5fa835713fa105621e43bbdc46690c3a6b68328a012d350d4" -"checksum failure 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" -"checksum failure_derive 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" -"checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" -"checksum filetime 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "0c122a393ea57648015bf06fbd3d372378992e86b9ff5a7a497b076a28c79efe" -"checksum fixedbitset 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "86d4de0081402f5e88cdac65c8dcdcc73118c1a7a465e2a05f0da05843a8ea33" -"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" -"checksum fuse 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "80e57070510966bfef93662a81cb8aa2b1c7db0964354fa9921434f04b9e8660" -"checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" -"checksum generic-array 0.14.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" -"checksum getrandom 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -"checksum getrandom 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4060f4657be78b8e766215b02b18a2e862d83745545de804638e2b545e81aee6" -"checksum gimli 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" -"checksum hermit-abi 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8" -"checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" -"checksum hyper 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)" = "0a0652d9a2609a968c14be1a9ea00bf4b1d64e2e1f53a1b51b6fff3a6e829273" -"checksum hyper-rustls 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "71f7b2e5858ab9e19771dc361159f09ee5031734a6f7471fe0947db0238d92b7" -"checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" -"checksum index-fixed 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4161ceaf2f41b6cd3f6502f5da085d4ad4393a51e0c70ed2fce1d5698d798fae" -"checksum itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484" -"checksum keccak 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" -"checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" -"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -"checksum libc 0.2.82 (registry+https://github.com/rust-lang/crates.io-index)" = "89203f3fba0a3795506acaad8ebce3c80c0af93f994d5a1d7a0b1eeb23271929" -"checksum libflate 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)" = "d9135df43b1f5d0e333385cb6e7897ecd1a43d7d11b91ac003f4d2c2d2401fdd" -"checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" -"checksum log 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)" = "fcf3805d4480bb5b86070dcfeb9e2cb2ebc148adb753c5cca5f884d1d65a42b2" -"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" -"checksum memoffset 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "157b4208e3059a8f9e78d559edc658e13df41410cb3ae03979c83130067fdd87" -"checksum mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" -"checksum miniz_oxide 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d" -"checksum num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" -"checksum numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" -"checksum object 0.22.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8d3b63360ec3cb337817c2dbd47ab4a0f170d285d8e5a2064600f3def1402397" -"checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" -"checksum ordermap 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "b81cf3b8cb96aa0e73bbedfcdc9708d09fec2854ba8d474be4e6f666d7379e8b" -"checksum ordermap 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a86ed3f5f244b372d6b1a00b72ef7f8876d0bc6a78a4c9985c53614041512063" -"checksum partition-identity 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ec13ba9a0eec5c10a89f6ec1b6e9e2ef7d29b810d771355abbd1c43cae003ed6" -"checksum pbr 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ff5751d87f7c00ae6403eb1fcbba229b9c76c9a30de8c1cf87182177b168cea2" -"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" -"checksum petgraph 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3659d1ee90221741f65dd128d9998311b0e40c5d3c23a62445938214abce4f" -"checksum pkg-config 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)" = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" -"checksum pkgar 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "74003f2ac9baa8600352a677bd8763088cc35498a4364abe9ae5898832015bb9" -"checksum plain 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" -"checksum ppv-lite86 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" -"checksum proc-macro-error 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -"checksum proc-macro-error-attr 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -"checksum proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)" = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" -"checksum proc-mounts 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad7e9c8d1b8c20f16a84d61d7c4c0325a5837c1307a2491b509cd92fb4e4442" -"checksum quote 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "991431c3519a3f36861882da93630ce66b52918dcf1b8e2fd66b397fc96f28df" -"checksum rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)" = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c" -"checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" -"checksum rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -"checksum rand 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "18519b42a40024d661e1714153e9ad0c3de27cd495760ceb09710920f1098b1e" -"checksum rand_chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -"checksum rand_chacha 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d" -"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -"checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" -"checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -"checksum rand_core 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c026d7df8b298d90ccbbc5190bd04d85e159eaf5576caeacf8741da93ccbd2e5" -"checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -"checksum rand_hc 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73" -"checksum rayon 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" -"checksum rayon-core 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" -"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -"checksum redox_installer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "98346851d42e2f357b3c023b27b75da14a774c226f9636a0ed42535b72d62bde" -"checksum redox_liner 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f014f6b014591f45bdd86377ab2f01b840ddd9e33421222b84d06e244b111327" -"checksum redox_pkgutils 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf753c67a43031ca0aa5661c1808edc4f94118f1daa368df38b641de8d74a91" -"checksum redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)" = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" -"checksum redox_syscall 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "05ec8ca9416c5ea37062b502703cd7fcb207736bc294f6e0cf367ac6fc234570" -"checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" -"checksum redox_users 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" -"checksum redoxer 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)" = "0f80a9eb6af9fc219652f2a02198c44b639abaf8af8b940ad48e1b2f24b1b603" -"checksum redoxfs 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "68477c1e271b4f9e2f5e3fd5f797d1528d819ed42bf4f4edcfb9e24fea8934f2" -"checksum remove_dir_all 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" -"checksum ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)" = "2c4db68a2e35f3497146b7e4563df7d4773a2433230c5e4b448328e31740458a" -"checksum rle-decode-fast 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cabe4fa914dec5870285fa7f71f602645da47c486e68486d2b4ceb4a343e90ac" -"checksum rust-argon2 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" -"checksum rustc-demangle 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" -"checksum rustls 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "942b71057b31981152970d57399c25f72e27a6ee0d207a669d8304cabf44705b" -"checksum rustversion 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cb5d2a036dc6d2d8fd16fde3498b04306e29bd193bf306a57427019b823d5acd" -"checksum safemem 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" -"checksum same-file 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -"checksum scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" -"checksum sct 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cb8f61f9e6eadd062a71c380043d28036304a4706b3c4dd001ff3387ed00745a" -"checksum serde 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)" = "9bdd36f49e35b61d49efd8aa7fc068fd295961fd2286d0b2ee9a4c7a14e99cc3" -"checksum serde_derive 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)" = "552954ce79a059ddd5fd68c271592374bd15cab2274970380c000118aeffe1cd" -"checksum sha2 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" -"checksum sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecf" -"checksum sodalite 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "67643084c740297bac275b1d97901ec27ca5984be4e8f75d86a33498e0e3e61c" -"checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" -"checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" -"checksum subtle 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1e81da0851ada1f3e9d4312c704aa4f8806f0f9d69faaf8df2f3464b4a9437c2" -"checksum syn 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)" = "cc60a3d73ea6594cd712d830cc1f0390fd71542d8c8cd24e70cc54cdfd5e05d5" -"checksum synstructure 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701" -"checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" -"checksum tar 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "489997b7557e9a43e192c527face4feacc78bfbe6eed67fd55c4c9e381cba290" -"checksum tempfile 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" -"checksum termion 1.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c22cec9d8978d906be5ac94bceb5a010d885c626c4c8855721a4dbd20e3ac905" -"checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -"checksum thread-scoped 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bcbb6aa301e5d3b0b5ef639c9a9c7e2f1c944f177b460c04dc24c69b1fa2bd99" -"checksum time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" -"checksum tinyvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ccf8dbc19eb42fba10e8feaaec282fb50e2c14b2726d6301dbfeed0f73306a6f" -"checksum tinyvec_macros 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" -"checksum toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f" -"checksum toml 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)" = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" -"checksum traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" -"checksum typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" -"checksum typenum 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" -"checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" -"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" -"checksum unicode-normalization 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "a13e63ab62dbe32aeee58d1c5408d35c36c392bba5d9d3142287219721afe606" -"checksum unicode-width 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" -"checksum unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" -"checksum untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "55cd1f4b4e96b46aeb8d4855db4a7a9bd96eeeb5c6a1ab54593328761642ce2f" -"checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" -"checksum uuid 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcc7e3b898aa6f6c08e5295b6c89258d1331e9ac578cc992fb818759951bdc22" -"checksum vec_map 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" -"checksum version-compare 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)" = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1" -"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" -"checksum version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" -"checksum walkdir 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d" -"checksum wasi 0.10.1+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" = "93c6c3420963c5c64bca373b25e77acb562081b9bb4dd5bb864187742186cea9" -"checksum wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" -"checksum webpki 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)" = "17d7967316d8411ca3b01821ee6c332bde138ba4363becdb492f12e514daa17f" -"checksum webpki-roots 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "85d1f408918fd590908a70d36b7ac388db2edc221470333e4d6e5b598e44cabf" -"checksum winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -"checksum winapi-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" -"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -"checksum xattr 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" From 4c52a95cec852a935eac283bca5b5d586bb1b1e9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 28 Feb 2021 08:09:11 -0700 Subject: [PATCH 0859/3180] Use Redox mirror of config repository --- recipes/atk/recipe.sh | 2 +- recipes/autoconf/recipe.sh | 2 +- recipes/automake/recipe.sh | 2 +- recipes/bash/recipe.sh | 2 +- recipes/bash/recipe.toml | 2 +- recipes/curl/recipe.sh | 2 +- recipes/curl/recipe.toml | 2 +- recipes/dosbox/recipe.sh | 2 +- recipes/fontconfig/recipe.sh | 2 +- recipes/freeciv/recipe.sh | 2 +- recipes/gettext/recipe.sh | 2 +- recipes/gettext/recipe.toml | 2 +- recipes/harfbuzz/recipe.sh | 2 +- recipes/libffi/recipe.sh | 2 +- recipes/libogg/recipe.sh | 2 +- recipes/libpng/recipe.sh | 2 +- recipes/libpng/recipe.toml | 2 +- recipes/mesa_glu/recipe.sh | 2 +- recipes/openjazz/recipe.sh | 2 +- recipes/pango/recipe.sh | 2 +- recipes/patch/recipe.sh | 2 +- recipes/perl/recipe.sh | 2 +- recipes/pkg-config/recipe.sh | 2 +- recipes/prboom/recipe.sh | 2 +- recipes/scummvm/recipe.sh | 2 +- recipes/sopwith/recipe.sh | 2 +- recipes/timidity/recipe.sh | 2 +- recipes/vice/recipe.sh | 2 +- recipes/vttest/recipe.sh | 2 +- recipes/xz/recipe.sh | 2 +- 30 files changed, 30 insertions(+), 30 deletions(-) diff --git a/recipes/atk/recipe.sh b/recipes/atk/recipe.sh index 802853de..1451b72b 100755 --- a/recipes/atk/recipe.sh +++ b/recipes/atk/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { } function recipe_build { - wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib --static" diff --git a/recipes/autoconf/recipe.sh b/recipes/autoconf/recipe.sh index ff9e0242..28fe7211 100644 --- a/recipes/autoconf/recipe.sh +++ b/recipes/autoconf/recipe.sh @@ -12,7 +12,7 @@ function recipe_update { } function recipe_build { - wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + wget -O build-aux/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" ./configure --build=${BUILD} --host=${HOST} --prefix='' "$REDOX_MAKE" -j"$($NPROC)" skip=1 diff --git a/recipes/automake/recipe.sh b/recipes/automake/recipe.sh index 92649e64..9f97b2c0 100644 --- a/recipes/automake/recipe.sh +++ b/recipes/automake/recipe.sh @@ -12,7 +12,7 @@ function recipe_update { } function recipe_build { - wget -O lib/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + wget -O lib/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" sed -i 's|.*/doc/help2man.*|\&\& true|' Makefile.in sed -i 's|install-info-am install-man|install-info-am|' Makefile.in diff --git a/recipes/bash/recipe.sh b/recipes/bash/recipe.sh index c0a952e0..d5545b2b 100644 --- a/recipes/bash/recipe.sh +++ b/recipes/bash/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { sysroot="$PWD/../sysroot" export LDFLAGS="-L$sysroot/lib -static" export CPPFLAGS="-I$sysroot/include" - wget -O support/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + wget -O support/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" ./configure \ --build=${BUILD} \ --host=${HOST} \ diff --git a/recipes/bash/recipe.toml b/recipes/bash/recipe.toml index be87f9d6..685091a9 100644 --- a/recipes/bash/recipe.toml +++ b/recipes/bash/recipe.toml @@ -4,7 +4,7 @@ patches = [ "redox.patch" ] script = """ -wget -O support/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub +wget -O support/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" """ [build] diff --git a/recipes/curl/recipe.sh b/recipes/curl/recipe.sh index 3222b8e0..e9554ac4 100644 --- a/recipes/curl/recipe.sh +++ b/recipes/curl/recipe.sh @@ -19,7 +19,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib --static" - wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" autoreconf -i ./configure \ --prefix=/ \ diff --git a/recipes/curl/recipe.toml b/recipes/curl/recipe.toml index 39af949f..244f9c65 100644 --- a/recipes/curl/recipe.toml +++ b/recipes/curl/recipe.toml @@ -11,7 +11,7 @@ dependencies = [ ] script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ -wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub +wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" autoreconf -i COOKBOOK_CONFIGURE="./configure" COOKBOOK_CONFIGURE_FLAGS=( diff --git a/recipes/dosbox/recipe.sh b/recipes/dosbox/recipe.sh index e6b121fc..45b11c95 100644 --- a/recipes/dosbox/recipe.sh +++ b/recipes/dosbox/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { export CPPFLAGS="-I$sysroot/include/SDL" export LDFLAGS="-L$sysroot/lib -static" ./autogen.sh - wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" ./configure \ --build=${BUILD} \ --host=${HOST} \ diff --git a/recipes/fontconfig/recipe.sh b/recipes/fontconfig/recipe.sh index 7996d983..81f03409 100755 --- a/recipes/fontconfig/recipe.sh +++ b/recipes/fontconfig/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { } function recipe_build { - wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib --static" diff --git a/recipes/freeciv/recipe.sh b/recipes/freeciv/recipe.sh index 9caae43a..b62660d9 100644 --- a/recipes/freeciv/recipe.sh +++ b/recipes/freeciv/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { } function recipe_build { - wget -O bootstrap/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + wget -O bootstrap/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" diff --git a/recipes/gettext/recipe.sh b/recipes/gettext/recipe.sh index 056f0959..bffce9cc 100644 --- a/recipes/gettext/recipe.sh +++ b/recipes/gettext/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib --static" - wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + wget -O build-aux/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" ./configure \ --build=${BUILD} \ --host=${HOST} \ diff --git a/recipes/gettext/recipe.toml b/recipes/gettext/recipe.toml index 4460b449..3c653274 100644 --- a/recipes/gettext/recipe.toml +++ b/recipes/gettext/recipe.toml @@ -4,7 +4,7 @@ patches = [ "redox.patch" ] script = """ -wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub +wget -O build-aux/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" """ [build] diff --git a/recipes/harfbuzz/recipe.sh b/recipes/harfbuzz/recipe.sh index f7cce890..e36ffcc4 100644 --- a/recipes/harfbuzz/recipe.sh +++ b/recipes/harfbuzz/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib --static" - #wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + #wget -O build-aux/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" FREETYPE_CFLAGS="$("${PKG_CONFIG}" --cflags freetype2)" FREETYPE_LIBS="$("${PKG_CONFIG}" --libs freetype2)" ./configure \ diff --git a/recipes/libffi/recipe.sh b/recipes/libffi/recipe.sh index a78c84f6..b7f841c3 100644 --- a/recipes/libffi/recipe.sh +++ b/recipes/libffi/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" - wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" ./configure \ --build=${BUILD} \ --host=${HOST} \ diff --git a/recipes/libogg/recipe.sh b/recipes/libogg/recipe.sh index 577e7b1a..0472da58 100644 --- a/recipes/libogg/recipe.sh +++ b/recipes/libogg/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { } function recipe_build { - wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" ./configure \ --build=${BUILD} \ diff --git a/recipes/libpng/recipe.sh b/recipes/libpng/recipe.sh index ab3e9743..5c30af56 100644 --- a/recipes/libpng/recipe.sh +++ b/recipes/libpng/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { export CPPFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib --static" chmod +w config.sub - wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" ./configure --build=${BUILD} --host=${HOST} --prefix='/' "$REDOX_MAKE" -j"$($NPROC)" skip=1 diff --git a/recipes/libpng/recipe.toml b/recipes/libpng/recipe.toml index ed7b95f1..0c6f6942 100644 --- a/recipes/libpng/recipe.toml +++ b/recipes/libpng/recipe.toml @@ -2,7 +2,7 @@ tar = "https://github.com/glennrp/libpng/archive/v1.6.36.tar.gz" script = """ chmod +w config.sub -wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub +wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" """ diff --git a/recipes/mesa_glu/recipe.sh b/recipes/mesa_glu/recipe.sh index 86b0baa0..83667dce 100644 --- a/recipes/mesa_glu/recipe.sh +++ b/recipes/mesa_glu/recipe.sh @@ -17,7 +17,7 @@ function recipe_build { export CFLAGS="-I$sysroot/include" export CPPFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" - wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" ./configure --build=${BUILD} --host="${HOST}" --prefix=/ --enable-osmesa "$REDOX_MAKE" -j"$($NPROC)" skip=1 diff --git a/recipes/openjazz/recipe.sh b/recipes/openjazz/recipe.sh index 847b5d1d..d6a7bc67 100644 --- a/recipes/openjazz/recipe.sh +++ b/recipes/openjazz/recipe.sh @@ -20,7 +20,7 @@ function recipe_build { touch INSTALL NEWS README AUTHORS ChangeLog COPYING autoreconf -fvi autoconf - wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + wget -O build-aux/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" ./configure --build=${BUILD} --host=${HOST} --prefix='' "$REDOX_MAKE" -j"$($NPROC)" V=1 skip=1 diff --git a/recipes/pango/recipe.sh b/recipes/pango/recipe.sh index 24f77bb2..6b051eab 100755 --- a/recipes/pango/recipe.sh +++ b/recipes/pango/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { } function recipe_build { - wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib --static" diff --git a/recipes/patch/recipe.sh b/recipes/patch/recipe.sh index 3c65091a..3e46d2ab 100644 --- a/recipes/patch/recipe.sh +++ b/recipes/patch/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { function recipe_build { export LDFLAGS="-static" - wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + wget -O build-aux/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" autoreconf ./configure --build=${BUILD} --host=${HOST} --prefix=/ "$REDOX_MAKE" -j"$($NPROC)" diff --git a/recipes/perl/recipe.sh b/recipes/perl/recipe.sh index 8e03557c..39c9cce6 100644 --- a/recipes/perl/recipe.sh +++ b/recipes/perl/recipe.sh @@ -16,7 +16,7 @@ function recipe_update { function recipe_build { curl -L -O --time-cond perl-cross-1.1.6.tar.gz https://github.com/arsv/perl-cross/releases/download/1.1.6/perl-cross-1.1.6.tar.gz tar --strip-components=1 -xvf perl-cross-1.1.6.tar.gz - wget -O cnf/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + wget -O cnf/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" sysroot="$($HOST-gcc -print-sysroot)" ./configure --build=${BUILD} --target=${HOST} --prefix='/' --sysroot="$sysroot" --disable-mod=Sys-Syslog,Time-HiRes --with-libs='m' sed -i "s/^#define Netdb_name_t.*/#define Netdb_name_t const char*/" config.h # XXX diff --git a/recipes/pkg-config/recipe.sh b/recipes/pkg-config/recipe.sh index 4e1accb2..0514e916 100755 --- a/recipes/pkg-config/recipe.sh +++ b/recipes/pkg-config/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { } function recipe_build { - wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" export LDFLAGS="--static" ./configure \ --build="${BUILD}" \ diff --git a/recipes/prboom/recipe.sh b/recipes/prboom/recipe.sh index 4569fc60..77c8c8cd 100644 --- a/recipes/prboom/recipe.sh +++ b/recipes/prboom/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { export CFLAGS="-static" sysroot="$(realpath ../sysroot)" autoreconf -if - wget -O autotools/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + wget -O autotools/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" ./configure \ --prefix=/ \ --build=${BUILD} \ diff --git a/recipes/scummvm/recipe.sh b/recipes/scummvm/recipe.sh index 97efd01d..df55a301 100644 --- a/recipes/scummvm/recipe.sh +++ b/recipes/scummvm/recipe.sh @@ -14,7 +14,7 @@ function recipe_update { } function recipe_build { - wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" sysroot="$(realpath ../sysroot)" export LDFLAGS="-static" ./configure \ diff --git a/recipes/sopwith/recipe.sh b/recipes/sopwith/recipe.sh index 5614139e..678f56f7 100644 --- a/recipes/sopwith/recipe.sh +++ b/recipes/sopwith/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { } function recipe_build { - wget -O autotools/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + wget -O autotools/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include -I$sysroot/include/SDL" export LDFLAGS="-L$sysroot/lib -static" diff --git a/recipes/timidity/recipe.sh b/recipes/timidity/recipe.sh index d9c58990..4a0a1527 100644 --- a/recipes/timidity/recipe.sh +++ b/recipes/timidity/recipe.sh @@ -16,7 +16,7 @@ function recipe_update { function recipe_build { export LDFLAGS="-static" autoreconf -f -i - wget -O autoconf/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + wget -O autoconf/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" ./configure \ --build=${BUILD} \ --host=${HOST} \ diff --git a/recipes/vice/recipe.sh b/recipes/vice/recipe.sh index e024210d..1c0c64c5 100644 --- a/recipes/vice/recipe.sh +++ b/recipes/vice/recipe.sh @@ -15,7 +15,7 @@ function recipe_update { function recipe_build { sysroot="$(realpath ../sysroot)" - wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" export sdl_config="$sysroot/bin/sdl-config" export CFLAGS="-I$sysroot/include -I$sysroot/include/SDL" diff --git a/recipes/vttest/recipe.sh b/recipes/vttest/recipe.sh index a5c17fc1..35976b8d 100644 --- a/recipes/vttest/recipe.sh +++ b/recipes/vttest/recipe.sh @@ -13,7 +13,7 @@ function recipe_update { function recipe_build { export LDFLAGS="-static" - wget -O config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" ./configure \ --build=${BUILD} \ --host=${HOST} \ diff --git a/recipes/xz/recipe.sh b/recipes/xz/recipe.sh index 239add35..b22738ec 100644 --- a/recipes/xz/recipe.sh +++ b/recipes/xz/recipe.sh @@ -25,7 +25,7 @@ function recipe_build { ./autogen.sh chmod +w build-aux/config.sub - wget -O build-aux/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + wget -O build-aux/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" ./configure \ --build=${BUILD} \ --host=${HOST} \ From 86ed70defdc02734d3627782dd88f169bb240508 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 28 Feb 2021 09:53:10 -0700 Subject: [PATCH 0860/3180] Update kernel recipe for GS segment TLS --- recipes/kernel/init.rc | 3 ++- recipes/kernel/kernel_ld.sh | 17 +++++++++++++++++ recipes/kernel/recipe.sh | 6 ++++-- 3 files changed, 23 insertions(+), 3 deletions(-) create mode 100755 recipes/kernel/kernel_ld.sh diff --git a/recipes/kernel/init.rc b/recipes/kernel/init.rc index 25c5ba03..dedda2d0 100644 --- a/recipes/kernel/init.rc +++ b/recipes/kernel/init.rc @@ -6,8 +6,9 @@ randd vesad T T G stdio display:1 ps2d us +ramfs logging pcid /etc/pcid/initfs.toml -redoxfs --uuid $REDOXFS_UUID file +redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK cd file: export PATH file:/bin run.d /etc/init.d diff --git a/recipes/kernel/kernel_ld.sh b/recipes/kernel/kernel_ld.sh new file mode 100755 index 00000000..0f82b89d --- /dev/null +++ b/recipes/kernel/kernel_ld.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +set -ex + +LD="$1" +shift + +if "${LD}" -z use-gs-for-tls 2>&1 | +grep "warning: -z use-gs-for-tls ignored" &> /dev/null +then + echo "Please update your prefix:" >&2 + echo " rm -rf prefix" >&2 + echo " make prefix" >&2 + exit 1 +fi + +exec "${LD}" -z use-gs-for-tls "$@" diff --git a/recipes/kernel/recipe.sh b/recipes/kernel/recipe.sh index b30cc51c..d2b9dd6b 100644 --- a/recipes/kernel/recipe.sh +++ b/recipes/kernel/recipe.sh @@ -5,15 +5,17 @@ function recipe_build { export INITFS_FOLDER="$(realpath ../sysroot)" mkdir -pv "$INITFS_FOLDER/etc" cp -v "$(realpath ../init.rc)" "$INITFS_FOLDER/etc/init.rc" - xargo rustc \ + cargo rustc \ --lib \ --target "${ARCH}-unknown-none" \ --release \ + -Z build-std=core,alloc \ -- \ -C soft-float \ -C debuginfo=2 \ + -C lto \ --emit link=libkernel.a - "${LD}" \ + ../kernel_ld.sh "${LD}" \ --gc-sections \ -z max-page-size=0x1000 \ -T "linkers/${ARCH}.ld" \ From 2d266888d9b49d99804c620776ad4401adfa6129 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 Apr 2021 13:22:38 -0600 Subject: [PATCH 0861/3180] Disable llvmpipe for now, until it can be fixed --- recipes/gears/recipe.sh | 4 ++-- recipes/mesa/recipe.sh | 8 ++++---- recipes/neverball/recipe.sh | 4 ++-- recipes/neverball/redox.patch | 2 +- recipes/osdemo/recipe.sh | 4 ++-- recipes/sdl2_gears/recipe.sh | 4 ++-- recipes/sdl2_image/recipe.sh | 4 ++-- recipes/sdl2_mixer/recipe.sh | 4 ++-- recipes/sdl2_ttf/recipe.sh | 4 ++-- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/recipes/gears/recipe.sh b/recipes/gears/recipe.sh index 570139e9..9dba93e3 100644 --- a/recipes/gears/recipe.sh +++ b/recipes/gears/recipe.sh @@ -1,4 +1,4 @@ -BUILD_DEPENDS=(liborbital llvm mesa mesa_glu zlib) +BUILD_DEPENDS=(liborbital mesa mesa_glu zlib) function recipe_version { printf "1.0.0" @@ -19,7 +19,7 @@ function recipe_prepare { function recipe_build { sysroot="$(realpath ../sysroot)" set -x - "${CXX}" -O2 -I "$sysroot/include" -L "$sysroot/lib" gears.c -o gears -static -lorbital $("${PKG_CONFIG}" --libs glu) $("${TARGET}-llvm-config" --libs all) -lz + "${CXX}" -O2 -I "$sysroot/include" -L "$sysroot/lib" gears.c -o gears -static -lorbital $("${PKG_CONFIG}" --libs glu) -lz set +x skip=1 } diff --git a/recipes/mesa/recipe.sh b/recipes/mesa/recipe.sh index 853b582e..d9360698 100644 --- a/recipes/mesa/recipe.sh +++ b/recipes/mesa/recipe.sh @@ -1,7 +1,7 @@ GIT=https://gitlab.redox-os.org/redox-os/mesa.git GIT_UPSTREAM=git://anongit.freedesktop.org/mesa/mesa BRANCH=redox -BUILD_DEPENDS=(expat llvm zlib) +BUILD_DEPENDS=(expat zlib) function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" @@ -17,7 +17,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1" export CPPFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1" - export LDFLAGS="-L$sysroot/lib --static $("${TARGET}-llvm-config" --libfiles all)" + export LDFLAGS="-L$sysroot/lib --static" #export LLVM_CONFIG="x86_64-unknown-redox-llvm-config" # TODO: Fix this annoying shite @@ -27,7 +27,7 @@ function recipe_build { echo "ar = '${AR}'" >> cross_file.txt echo "strip = '${STRIP}'" >> cross_file.txt echo "pkgconfig = '${PKG_CONFIG}'" >> cross_file.txt - echo "llvm-config = '${TARGET}-llvm-config'" >> cross_file.txt + #echo "llvm-config = '${TARGET}-llvm-config'" >> cross_file.txt echo "[host_machine]" >> cross_file.txt echo "system = 'redox'" >> cross_file.txt @@ -60,7 +60,7 @@ function recipe_build { --strip \ -Ddefault_library=static \ -Dglx=disabled \ - -Dllvm=enabled \ + -Dllvm=disabled \ -Dosmesa=gallium \ -Dplatforms= \ -Dshader-cache=disabled \ diff --git a/recipes/neverball/recipe.sh b/recipes/neverball/recipe.sh index 12cf43ce..5e3bab5a 100644 --- a/recipes/neverball/recipe.sh +++ b/recipes/neverball/recipe.sh @@ -1,6 +1,6 @@ VERSION=1.6.0 TAR="https://neverball.org/neverball-${VERSION}.tar.gz" -BUILD_DEPENDS=(freetype libjpeg libogg liborbital libpng libvorbis llvm mesa sdl2 sdl2_ttf zlib) +BUILD_DEPENDS=(freetype libjpeg libogg liborbital libpng libvorbis mesa sdl2 sdl2_ttf zlib) function recipe_version { echo "$VERSION" @@ -17,7 +17,7 @@ function recipe_build { "$REDOX_MAKE" -j"$($NPROC)" ENABLE_FS=stdio mapc sols sysroot="$(realpath ../sysroot)" export CPPFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib -static" + export LDFLAGS="-L$sysroot/lib -static" "$REDOX_MAKE" -j"$($NPROC)" ENABLE_FS=stdio ENABLE_NLS=0 clean-src "$REDOX_MAKE" -j"$($NPROC)" ENABLE_FS=stdio ENABLE_NLS=0 neverball neverputt skip=1 diff --git a/recipes/neverball/redox.patch b/recipes/neverball/redox.patch index 9ebd2189..376893ef 100644 --- a/recipes/neverball/redox.patch +++ b/recipes/neverball/redox.patch @@ -42,7 +42,7 @@ diff -ruwN source/Makefile source-new/Makefile endif -OGL_LIBS := -lGL -+OGL_LIBS := -lorbital $(shell $(PKG_CONFIG) osmesa --libs) -lglapi ++OGL_LIBS := -lorbital $(shell $(PKG_CONFIG) osmesa --libs) ifeq ($(PLATFORM),mingw) ifneq ($(ENABLE_NLS),0) diff --git a/recipes/osdemo/recipe.sh b/recipes/osdemo/recipe.sh index 9737c853..fa797cd5 100644 --- a/recipes/osdemo/recipe.sh +++ b/recipes/osdemo/recipe.sh @@ -1,4 +1,4 @@ -BUILD_DEPENDS=(liborbital llvm mesa mesa_glu zlib) +BUILD_DEPENDS=(liborbital mesa mesa_glu zlib) function recipe_version { printf "1.0.0" @@ -19,7 +19,7 @@ function recipe_prepare { function recipe_build { sysroot="$(realpath ../sysroot)" set -x - "${CXX}" -O2 -I "$sysroot/include" -L "$sysroot/lib" osdemo.c -o osdemo -static -lorbital $("${PKG_CONFIG}" --libs glu) -lglapi -lz + "${CXX}" -O2 -I "$sysroot/include" -L "$sysroot/lib" osdemo.c -o osdemo -static -lorbital $("${PKG_CONFIG}" --libs glu) -lz set +x skip=1 } diff --git a/recipes/sdl2_gears/recipe.sh b/recipes/sdl2_gears/recipe.sh index 33da8adb..d300b48b 100644 --- a/recipes/sdl2_gears/recipe.sh +++ b/recipes/sdl2_gears/recipe.sh @@ -1,4 +1,4 @@ -BUILD_DEPENDS=(sdl2_image sdl2_mixer sdl2_ttf sdl2 liborbital llvm mesa mesa_glu freetype libjpeg libpng libogg libvorbis zlib) +BUILD_DEPENDS=(sdl2_image sdl2_mixer sdl2_ttf sdl2 liborbital mesa mesa_glu freetype libjpeg libpng libogg libvorbis zlib) function recipe_version { printf "1.0.0" @@ -21,7 +21,7 @@ function recipe_prepare { function recipe_build { sysroot="$(realpath ../sysroot)" set -x - "${CXX}" -O2 -I "$sysroot/include" -L "$sysroot/lib" gears.c -o sdl2_gears -static -lSDL2_image -lSDL2_mixer -lSDL2_ttf -lSDL2 -lorbital $("${PKG_CONFIG}" --libs glu) -lfreetype -lpng -ljpeg -lvorbisfile -lvorbis -logg -lglapi -lz + "${CXX}" -O2 -I "$sysroot/include" -L "$sysroot/lib" gears.c -o sdl2_gears -static -lSDL2_image -lSDL2_mixer -lSDL2_ttf -lSDL2 -lorbital $("${PKG_CONFIG}" --libs glu) -lfreetype -lpng -ljpeg -lvorbisfile -lvorbis -logg -lz set +x skip=1 } diff --git a/recipes/sdl2_image/recipe.sh b/recipes/sdl2_image/recipe.sh index 7fe853e1..ade62418 100644 --- a/recipes/sdl2_image/recipe.sh +++ b/recipes/sdl2_image/recipe.sh @@ -1,6 +1,6 @@ VERSION=2.0.4 TAR=https://www.libsdl.org/projects/SDL_image/release/SDL2_image-$VERSION.tar.gz -BUILD_DEPENDS=(sdl2 liborbital mesa llvm mesa mesa_glu libiconv libjpeg libpng zlib) +BUILD_DEPENDS=(sdl2 liborbital mesa mesa mesa_glu libiconv libjpeg libpng zlib) function recipe_version { echo "$VERSION" @@ -16,7 +16,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" - export SDL_LIBS="-lSDL2 -lorbital $("${PKG_CONFIG}" --libs glu) -lglapi -lz -lm -lpthread -lstdc++" + export SDL_LIBS="-lSDL2 -lorbital $("${PKG_CONFIG}" --libs glu) -lz -lm -lpthread -lstdc++" ./configure --prefix=/ --build=${BUILD} --host=${HOST} --disable-shared --disable-sdltest --enable-png --enable-jpg "$REDOX_MAKE" -j"$($NPROC)" skip=1 diff --git a/recipes/sdl2_mixer/recipe.sh b/recipes/sdl2_mixer/recipe.sh index fe87ade3..43860de6 100644 --- a/recipes/sdl2_mixer/recipe.sh +++ b/recipes/sdl2_mixer/recipe.sh @@ -1,6 +1,6 @@ VERSION=2.0.4 TAR=https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-$VERSION.tar.gz -BUILD_DEPENDS=(sdl2 liborbital llvm mesa mesa_glu zlib libogg libvorbis) +BUILD_DEPENDS=(sdl2 liborbital mesa mesa_glu zlib libogg libvorbis) function recipe_version { echo "$VERSION" @@ -16,7 +16,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" - export SDL_LIBS="-lSDL2 -lorbital $("${PKG_CONFIG}" --libs glu) -lglapi -lvorbis -logg -lz -lm -lpthread -lstdc++" + export SDL_LIBS="-lSDL2 -lorbital $("${PKG_CONFIG}" --libs glu) -lvorbis -logg -lz -lm -lpthread -lstdc++" ./autogen.sh ./configure \ --prefix=/ \ diff --git a/recipes/sdl2_ttf/recipe.sh b/recipes/sdl2_ttf/recipe.sh index b4467c54..d9688ffc 100644 --- a/recipes/sdl2_ttf/recipe.sh +++ b/recipes/sdl2_ttf/recipe.sh @@ -1,6 +1,6 @@ VERSION=2.0.15 TAR=https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-$VERSION.tar.gz -BUILD_DEPENDS=(sdl2 liborbital llvm mesa mesa_glu freetype libpng zlib) +BUILD_DEPENDS=(sdl2 liborbital mesa mesa_glu freetype libpng zlib) function recipe_version { echo "$VERSION" @@ -16,7 +16,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" - export SDL_LIBS="-lSDL2 -lorbital $("${PKG_CONFIG}" --libs glu) -lglapi -lz -lm -lpthread -lstdc++" + export SDL_LIBS="-lSDL2 -lorbital $("${PKG_CONFIG}" --libs glu) -lz -lm -lpthread -lstdc++" ./autogen.sh ./configure --prefix=/ --build=${BUILD} --host=${HOST} --enable-opengl --disable-shared --disable-sdltest "$REDOX_MAKE" -j"$($NPROC)" From 8b9d3788c40663e6cd9849ad1632cafcb7906aaa Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 Apr 2021 13:32:35 -0600 Subject: [PATCH 0862/3180] Fix vvvvvv recipe --- recipes/vvvvvv/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/vvvvvv/recipe.sh b/recipes/vvvvvv/recipe.sh index 110809b6..4b024ed4 100644 --- a/recipes/vvvvvv/recipe.sh +++ b/recipes/vvvvvv/recipe.sh @@ -2,7 +2,7 @@ VERSION=2.0 GIT=https://github.com/xTibor/VVVVVV BRANCH=redox GIT_UPSTREAM=https://github.com/TerryCavanagh/VVVVVV -BUILD_DEPENDS=(sdl2_image sdl2_mixer sdl2 liborbital mesa mesa_glu zlib llvm libogg libvorbis) +BUILD_DEPENDS=(sdl2_image sdl2_mixer sdl2 liborbital mesa mesa_glu zlib libogg libvorbis) function recipe_version { printf "1.0.0" @@ -18,7 +18,7 @@ function recipe_build { -DBUILD_STATIC=ON \ -DBUILD_SHARED=OFF \ -DSDL2_INCLUDE_DIRS="$sysroot/include/SDL2" \ - -DSDL2_LIBRARIES="-static -lSDL2main -lSDL2_mixer -lSDL2 $("${PKG_CONFIG}" --libs glu) -lglapi -lorbital -lz -lvorbisfile -lvorbis -logg" \ + -DSDL2_LIBRARIES="-static -lSDL2main -lSDL2_mixer -lSDL2 $("${PKG_CONFIG}" --libs glu) -lorbital -lz -lvorbisfile -lvorbis -logg" \ . "$REDOX_MAKE" -j"$($NPROC)" From 0c0aa91cabce51c5d74ff1aa9aa0f855d2b1444c Mon Sep 17 00:00:00 2001 From: Wesley Hershberger Date: Sun, 25 Apr 2021 14:16:49 -0400 Subject: [PATCH 0863/3180] Allow local sources This makes the source section of recipe.toml optional, so that one can simply create a recipe with a build recipe and a source folder and not have to worry about git at all just to get a program running in redox. I also ran into a situation where a source directory without a git repository in it caused cookbook to reset it's own origin URL to the URL specified in the recipe for that source directory. I added a check to prevent that happening to anybody else. --- src/bin/cook.rs | 26 ++++++++++++++++++++++---- src/recipe.rs | 10 +++++----- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 173a3f80..36c13046 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -159,10 +159,10 @@ fn run_command_stdin(mut command: process::Command, stdin_data: &[u8]) -> Result Ok(()) } -fn fetch(recipe_dir: &Path, source: &SourceRecipe) -> Result { +fn fetch(recipe_dir: &Path, source: &Option) -> Result { let source_dir = recipe_dir.join("source"); match source { - SourceRecipe::Git { git, upstream, branch, rev } => { + Some(SourceRecipe::Git { git, upstream, branch, rev }) => { //TODO: use libgit? if ! source_dir.is_dir() { // Create source.tmp @@ -181,6 +181,15 @@ fn fetch(recipe_dir: &Path, source: &SourceRecipe) -> Result { // Move source.tmp to source atomically rename(&source_dir_tmp, &source_dir)?; } else { + // Don't let this code reset the origin for the cookbook repo + let source_git_dir = source_dir.join(".git"); + if ! source_git_dir.is_dir() { + return Err(format!( + "'{}' is not a git repository, but recipe indicated git source", + source_dir.display(), + )); + } + // Reset origin let mut command = Command::new("git"); command.arg("-C").arg(&source_dir); @@ -240,7 +249,7 @@ fi"#); command.arg("submodule").arg("update").arg("--init").arg("--recursive"); run_command(command)?; }, - SourceRecipe::Tar { tar, blake3, sha256, patches, script } => { + Some(SourceRecipe::Tar { tar, blake3, sha256, patches, script }) => { if ! source_dir.is_dir() { // Download tar //TODO: replace wget @@ -350,7 +359,16 @@ fi"#); // Move source.tmp to source atomically rename(&source_dir_tmp, &source_dir)?; } - } + }, + // Local Sources + None => { + if ! source_dir.is_dir() { + return Err(format!( + "Recipe without source section expected source dir at '{}'", + source_dir.display(), + )) + } + }, } Ok(source_dir) diff --git a/src/recipe.rs b/src/recipe.rs index 97202924..fea26680 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -69,7 +69,7 @@ pub struct PackageRecipe { #[derive(Debug, Deserialize, PartialEq, Serialize)] pub struct Recipe { /// Specifies how to donload the source for this recipe - pub source: SourceRecipe, + pub source: Option, /// Specifies how to build this recipe pub build: BuildRecipe, /// Specifies how to package this recipe @@ -95,12 +95,12 @@ mod tests { "#).unwrap(); assert_eq!(recipe, Recipe { - source: SourceRecipe::Git { + source: Some(SourceRecipe::Git { git: "https://gitlab.redox-os.org/redox-os/acid.git".to_string(), upstream: None, branch: Some("master".to_string()), rev: Some("06344744d3d55a5ac9a62a6059cb363d40699bbc".to_string()), - }, + }), build: BuildRecipe { kind: BuildKind::Cargo, dependencies: Vec::new(), @@ -126,13 +126,13 @@ mod tests { "#).unwrap(); assert_eq!(recipe, Recipe { - source: SourceRecipe::Tar { + source: Some(SourceRecipe::Tar { tar: "http://downloads.xiph.org/releases/ogg/libogg-1.3.3.tar.xz".to_string(), blake3: None, sha256: Some("4f3fc6178a533d392064f14776b23c397ed4b9f48f5de297aba73b643f955c08".to_string()), patches: Vec::new(), script: None, - }, + }), build: BuildRecipe { kind: BuildKind::Custom { script: "make".to_string() From 89fad97c2a48fcf1c5eeb996682ab20a406e7ce1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 5 May 2021 19:42:20 -0600 Subject: [PATCH 0864/3180] Update dependencies --- Cargo.lock | 151 ++++++++++++++++++++++++----------------------------- 1 file changed, 69 insertions(+), 82 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ba48ea72..be3ca659 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11,9 +11,9 @@ dependencies = [ [[package]] name = "adler" -version = "0.2.3" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "adler32" @@ -67,11 +67,12 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "backtrace" -version = "0.3.56" +version = "0.3.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d117600f438b1707d4e4ae15d3595657288f8235a0eb593e80ecc98ab34e1bc" +checksum = "88fb5a785d6b44fd9d6700935608639af1b8356de1e55d5f7c2740f4faa15d82" dependencies = [ "addr2line", + "cc", "cfg-if 1.0.0", "libc", "miniz_oxide", @@ -158,7 +159,7 @@ dependencies = [ "block-padding", "byte-tools", "byteorder", - "generic-array 0.12.3", + "generic-array 0.12.4", ] [[package]] @@ -184,15 +185,15 @@ checksum = "72feb31ffc86498dacdbd0fcebb56138e7177a8cc5cea4516031d15ae85a742e" [[package]] name = "byteorder" -version = "1.4.2" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae44d1a3d5a19df61dd0c8beb138458ac2a53a7ac09eba97d55592540004306b" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "cc" -version = "1.0.66" +version = "1.0.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c0496836a84f8d0495758516b8621a622beb77c0fed418570e50764093ced48" +checksum = "e3c69b077ad434294d3ce9f1f6143a2a4b89a8a2d54ef813d85003a4fd1137fd" [[package]] name = "cfg-if" @@ -221,12 +222,6 @@ dependencies = [ "vec_map", ] -[[package]] -name = "const_fn" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b9d6de7f49e22cf97ad17fc4036ece69300032f45f78f30b4a4482cdc3f4a6" - [[package]] name = "constant_time_eq" version = "0.1.5" @@ -244,9 +239,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dca26ee1f8d361640700bde38b2c37d8c22b3ce2d360e1fc1c74ea4b0aa7d775" +checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -265,12 +260,11 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.1" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1aaa739f95311c2c7887a76863f500026092fb1dce0161dab577e559ef3569d" +checksum = "52fb27eab85b17fbb9f6fd667089e07d6a2eb8743d02639ee7f6a7a7729c9c94" dependencies = [ "cfg-if 1.0.0", - "const_fn", "crossbeam-utils", "lazy_static", "memoffset", @@ -279,9 +273,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.1" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d96d1e189ef58269ebe5b97953da3274d83a93af647c2ddd6f9dab28cedb8d" +checksum = "4feb231f0d4d6af81aed15928e58ecf5816aa62a2393e2c82f46973e92a9a278" dependencies = [ "autocfg", "cfg-if 1.0.0", @@ -294,7 +288,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" dependencies = [ - "generic-array 0.12.3", + "generic-array 0.12.4", "subtle 1.0.0", ] @@ -314,7 +308,7 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" dependencies = [ - "generic-array 0.12.3", + "generic-array 0.12.4", ] [[package]] @@ -338,9 +332,9 @@ dependencies = [ [[package]] name = "dirs-sys" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e93d7f5705de3e49895a2b5e0b8855a1c27f080192ae9c32a6432d50741a57a" +checksum = "03d86534ed367a67548dc68113a0f5db55432fdfbb6e6f9d77704397d95d5780" dependencies = [ "libc", "redox_users", @@ -403,7 +397,7 @@ checksum = "1d34cfa13a63ae058bfa601fe9e313bbdb3746427c1459185464ce0fcf62e1e8" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall 0.2.5", + "redox_syscall", "winapi", ] @@ -434,9 +428,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" +checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" dependencies = [ "typenum", ] @@ -448,7 +442,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" dependencies = [ "typenum", - "version_check 0.9.2", + "version_check 0.9.3", ] [[package]] @@ -490,9 +484,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.3.5" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "615caabe2c3160b313d52ccc905335f4ed5f10881dd63dc5699d47e90be85691" +checksum = "4a1ce40d6fc9764887c2fdc7305c3dcc429ba11ff981c1509416afd5697e4437" [[package]] name = "hyper" @@ -571,9 +565,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.86" +version = "0.2.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7282d924be3275cec7f6756ff4121987bc6481325397dde6ba3e7802b1a8b1c" +checksum = "18794a8ad5b29321f790b55d93dfba91e125cb1a9edbd4f8e3150acc771c1a5e" [[package]] name = "libflate" @@ -613,9 +607,9 @@ checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" [[package]] name = "memoffset" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "157b4208e3059a8f9e78d559edc658e13df41410cb3ae03979c83130067fdd87" +checksum = "f83fb6581e8ed1f85fd45c116db8405483899489e38406156c25eb743554361d" dependencies = [ "autocfg", ] @@ -631,9 +625,9 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d" +checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" dependencies = [ "adler", "autocfg", @@ -758,7 +752,7 @@ dependencies = [ "proc-macro2", "quote", "syn", - "version_check 0.9.2", + "version_check 0.9.3", ] [[package]] @@ -769,14 +763,14 @@ checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ "proc-macro2", "quote", - "version_check 0.9.2", + "version_check 0.9.3", ] [[package]] name = "proc-macro2" -version = "1.0.24" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" +checksum = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec" dependencies = [ "unicode-xid", ] @@ -1026,15 +1020,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.1.57" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" - -[[package]] -name = "redox_syscall" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94341e4e44e24f6b591b59e47a8a027df12e008d73fd5672dbea9cc22f4507d9" +checksum = "742739e41cd49414de871ea5e549afb7e2a3ac77b589bcbebe8c82fab37147fc" dependencies = [ "bitflags", ] @@ -1045,18 +1033,17 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8440d8acb4fd3d277125b4bd01a6f38aee8d814b3b5fc09b3f2b825d37d3fe8f" dependencies = [ - "redox_syscall 0.2.5", + "redox_syscall", ] [[package]] name = "redox_users" -version = "0.3.5" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" +checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" dependencies = [ - "getrandom 0.1.16", - "redox_syscall 0.1.57", - "rust-argon2", + "getrandom 0.2.2", + "redox_syscall", ] [[package]] @@ -1068,7 +1055,7 @@ dependencies = [ "dirs", "proc-mounts", "redox_installer", - "redox_syscall 0.2.5", + "redox_syscall", "redoxfs", "tempfile", "toml 0.5.8", @@ -1082,7 +1069,7 @@ checksum = "68477c1e271b4f9e2f5e3fd5f797d1528d819ed42bf4f4edcfb9e24fea8934f2" dependencies = [ "fuse", "libc", - "redox_syscall 0.2.5", + "redox_syscall", "time", "uuid", ] @@ -1128,9 +1115,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.18" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" +checksum = "410f7acf3cb3a44527c5d9546bad4bf4e6c460915d5f9f2fc524498bfe8f70ce" [[package]] name = "rustls" @@ -1185,18 +1172,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.123" +version = "1.0.125" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d5161132722baa40d802cc70b15262b98258453e85e5d1d365c757c73869ae" +checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.123" +version = "1.0.125" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9391c295d64fc0abb2c556bad848f33cb8296276b1ad2677d1ae1ace4f258f31" +checksum = "b093b7a2bb58203b5da3056c05b4ec1fed827dcfdb37347a8841695263b3d06d" dependencies = [ "proc-macro2", "quote", @@ -1257,9 +1244,9 @@ checksum = "1e81da0851ada1f3e9d4312c704aa4f8806f0f9d69faaf8df2f3464b4a9437c2" [[package]] name = "syn" -version = "1.0.60" +version = "1.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c700597eca8a5a762beb35753ef6b94df201c81cca676604f547495a0d7f0081" +checksum = "a1e8cdbefb79a9a5a65e0db8b47b723ee907b7c7f8496c76a1770b5c310bab82" dependencies = [ "proc-macro2", "quote", @@ -1286,9 +1273,9 @@ checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" [[package]] name = "tar" -version = "0.4.32" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0313546c01d59e29be4f09687bcb4fb6690cec931cc3607b6aec7a0e417f4cc6" +checksum = "c0bcfbd6a598361fda270d82469fff3d65089dc33e175c9a131f7b4cd395f228" dependencies = [ "filetime", "libc", @@ -1304,7 +1291,7 @@ dependencies = [ "cfg-if 1.0.0", "libc", "rand 0.8.3", - "redox_syscall 0.2.5", + "redox_syscall", "remove_dir_all", "winapi", ] @@ -1317,7 +1304,7 @@ checksum = "077185e2eac69c3f8379a4298e1e07cd36beb962290d4a51199acf0fdc10607e" dependencies = [ "libc", "numtoa", - "redox_syscall 0.2.5", + "redox_syscall", "redox_termios", ] @@ -1348,9 +1335,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317cca572a0e89c3ce0ca1f1bdc9369547fe318a683418e42ac8f59d14701023" +checksum = "5b5220f05bb7de7f3f53c7c065e1199b3172696fe2db9f9c4d8ad9b4ee74c342" dependencies = [ "tinyvec_macros", ] @@ -1393,9 +1380,9 @@ checksum = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" [[package]] name = "typenum" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" +checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06" [[package]] name = "unicase" @@ -1408,9 +1395,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" +checksum = "eeb8be209bb1c96b7c177c7420d26e04eccacb0eeae6b980e35fcb74678107e0" dependencies = [ "matches", ] @@ -1432,9 +1419,9 @@ checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" [[package]] name = "unicode-xid" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" [[package]] name = "untrusted" @@ -1482,15 +1469,15 @@ checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" [[package]] name = "version_check" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" +checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" [[package]] name = "walkdir" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d" +checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" dependencies = [ "same-file", "winapi", From 7d0e0c82db6ca5f2211de3e1d37d6dfb2ab7996e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 5 May 2021 19:59:45 -0600 Subject: [PATCH 0865/3180] Add aarch64 pkg-config binary --- bin/aarch64-unknown-redox-pkg-config | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100755 bin/aarch64-unknown-redox-pkg-config diff --git a/bin/aarch64-unknown-redox-pkg-config b/bin/aarch64-unknown-redox-pkg-config new file mode 100755 index 00000000..c1eb8323 --- /dev/null +++ b/bin/aarch64-unknown-redox-pkg-config @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_RECIPE}/sysroot" +export PKG_CONFIG_LIBDIR="${PKG_CONFIG_SYSROOT_DIR}/lib/pkgconfig" +export PKG_CONFIG_PATH="${PKG_CONFIG_SYSROOT_DIR}/share/pkgconfig" + +exec pkg-config --static "$@" From 103c51c3c9850891a3fefd1d0089571a58d6c888 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 9 May 2021 19:51:03 -0600 Subject: [PATCH 0866/3180] Update rust recipe --- recipes/rust/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index 7a3a5fc3..6cfd5138 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -1,5 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/rust.git -BRANCH=redox-2019-11-25 +BRANCH=redox-2020-07-27 BUILD_DEPENDS=(llvm) DEPENDS="gcc cargo" PREPARE_COPY=0 @@ -18,7 +18,7 @@ function recipe_build { config="$(realpath ../config.toml)" source="$(realpath ../source)" unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP - python "$source/x.py" dist --config "$config" --jobs $(nproc) --incremental + python3 "$source/x.py" dist --config "$config" --jobs $(nproc) --incremental skip=1 } From 59779a5793ee8bf219801a1f2f201123a5c6a9eb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 10 May 2021 09:44:46 -0600 Subject: [PATCH 0867/3180] Fixes for installing rust package --- recipes/rust/config.toml | 3 +++ recipes/rust/recipe.sh | 10 ++++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/recipes/rust/config.toml b/recipes/rust/config.toml index 2305ee07..45578d35 100644 --- a/recipes/rust/config.toml +++ b/recipes/rust/config.toml @@ -9,6 +9,9 @@ submodules = false tools = ["src"] verbose = 1 +[install] +prefix = "install" + [rust] backtrace = false rpath = false diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index 6cfd5138..7cd2424e 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -18,7 +18,7 @@ function recipe_build { config="$(realpath ../config.toml)" source="$(realpath ../source)" unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP - python3 "$source/x.py" dist --config "$config" --jobs $(nproc) --incremental + python3 "$source/x.py" install --config "$config" --jobs $(nproc) --incremental skip=1 } @@ -33,10 +33,8 @@ function recipe_clean { } function recipe_stage { - binpath="$1/bin" - libpath="$1/lib" - cp -frv "build/${TARGET}/stage2/bin" "$binpath" - cp -frv "build/${TARGET}/stage2/lib" "$libpath" - ${STRIP} "$binpath/"* + rsync -av --delete "install/" "$1/" + # Cannot use STRIP because it is unset in recipe_build + "${HOST}-strip" -v "$1/bin/"{rustc,rustdoc} skip=1 } From 9fbc7a61d95ae58f04b973124cc0fe03aef19af4 Mon Sep 17 00:00:00 2001 From: Noah <33094578+coolreader18@users.noreply.github.com> Date: Wed, 2 Jun 2021 15:52:28 -0500 Subject: [PATCH 0868/3180] Use the cargo-config binary directly instead of through cargo --- cook.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cook.sh b/cook.sh index c269574c..85ebddc6 100755 --- a/cook.sh +++ b/cook.sh @@ -312,7 +312,8 @@ function op { fi if [ "$skip" -eq "0" ] then - cargo config package.version | tr -d '"' + # there's an unstable built-in cargo config command, so hack around it + cargo-config config package.version | tr -d '"' fi popd > /dev/null ;; From 130ee017aff0017d3077d028184bdf6eeddd259a Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Fri, 18 Jun 2021 09:22:58 +0200 Subject: [PATCH 0869/3180] Update dependencies. --- Cargo.lock | 134 ++++++++++++++++++++++++++++------------------------- 1 file changed, 71 insertions(+), 63 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index be3ca659..552233c7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,9 +2,9 @@ # It is not intended for manual editing. [[package]] name = "addr2line" -version = "0.14.1" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a55f82cfe485775d02112886f4169bde0c5894d75e79ead7eafe7e40a25e45f7" +checksum = "e7a2e47a1fbe209ee101dd6d61285226744c6c8d3c21c8dc878ba6cb9f467f3a" dependencies = [ "gimli", ] @@ -67,9 +67,9 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "backtrace" -version = "0.3.58" +version = "0.3.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88fb5a785d6b44fd9d6700935608639af1b8356de1e55d5f7c2740f4faa15d82" +checksum = "b7815ea54e4d821e791162e078acbebfd6d8c8939cd559c9335dceb1c8ca7282" dependencies = [ "addr2line", "cc", @@ -137,9 +137,9 @@ dependencies = [ [[package]] name = "blake3" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9ff35b701f3914bdb8fad3368d822c766ef2858b2583198e41639b936f09d3f" +checksum = "b64485778c4f16a6a5a9d335e80d449ac6c70cdd6a06d2af18a6f6f775a125b3" dependencies = [ "arrayref", "arrayvec", @@ -191,9 +191,9 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "cc" -version = "1.0.67" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c69b077ad434294d3ce9f1f6143a2a4b89a8a2d54ef813d85003a4fd1137fd" +checksum = "4a72c244c1ff497a746a7e1fb3d14bd08420ecda70c8f25c7112f2781652d787" [[package]] name = "cfg-if" @@ -260,9 +260,9 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52fb27eab85b17fbb9f6fd667089e07d6a2eb8743d02639ee7f6a7a7729c9c94" +checksum = "4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -273,11 +273,10 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4feb231f0d4d6af81aed15928e58ecf5816aa62a2393e2c82f46973e92a9a278" +checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db" dependencies = [ - "autocfg", "cfg-if 1.0.0", "lazy_static", ] @@ -458,9 +457,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" +checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" dependencies = [ "cfg-if 1.0.0", "libc", @@ -469,9 +468,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.23.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" +checksum = "0e4075386626662786ddb0ec9081e7c7eeb1ba31951f447ca780ef9f5d568189" [[package]] name = "hermit-abi" @@ -484,9 +483,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1ce40d6fc9764887c2fdc7305c3dcc429ba11ff981c1509416afd5697e4437" +checksum = "f3a87b616e37e93c22fb19bcd386f02f3af5ea98a25670ad0fce773de23c5e68" [[package]] name = "hyper" @@ -565,9 +564,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.94" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18794a8ad5b29321f790b55d93dfba91e125cb1a9edbd4f8e3150acc771c1a5e" +checksum = "12b8adadd720df158f4d70dfe7ccc6adb0472d7c55ca83445f6a5ab3e36f8fb6" [[package]] name = "libflate" @@ -606,10 +605,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" [[package]] -name = "memoffset" -version = "0.6.3" +name = "memchr" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83fb6581e8ed1f85fd45c116db8405483899489e38406156c25eb743554361d" +checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc" + +[[package]] +name = "memoffset" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9" dependencies = [ "autocfg", ] @@ -651,9 +656,12 @@ checksum = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" [[package]] name = "object" -version = "0.23.0" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9a7ab5d64814df0fe4a4b5ead45ed6c5f181ee3ff04ba344313a6c80446c5d4" +checksum = "a38f2be3697a57b4060074ff41b44c16870d916ad7877c17696e063257482bc7" +dependencies = [ + "memchr", +] [[package]] name = "opaque-debug" @@ -768,9 +776,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec" +checksum = "f0d8caf72986c1a598726adc988bb5984792ef84f5ee5aa50209145ee8077038" dependencies = [ "unicode-xid", ] @@ -832,14 +840,14 @@ dependencies = [ [[package]] name = "rand" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e" +checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8" dependencies = [ "libc", - "rand_chacha 0.3.0", - "rand_core 0.6.2", - "rand_hc 0.3.0", + "rand_chacha 0.3.1", + "rand_core 0.6.3", + "rand_hc 0.3.1", ] [[package]] @@ -854,12 +862,12 @@ dependencies = [ [[package]] name = "rand_chacha" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.2", + "rand_core 0.6.3", ] [[package]] @@ -888,11 +896,11 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7" +checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" dependencies = [ - "getrandom 0.2.2", + "getrandom 0.2.3", ] [[package]] @@ -906,18 +914,18 @@ dependencies = [ [[package]] name = "rand_hc" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73" +checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7" dependencies = [ - "rand_core 0.6.2", + "rand_core 0.6.3", ] [[package]] name = "rayon" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" +checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" dependencies = [ "autocfg", "crossbeam-deque", @@ -927,9 +935,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.9.0" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" +checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -951,7 +959,7 @@ dependencies = [ name = "redox_cookbook" version = "0.1.0" dependencies = [ - "blake3 0.3.7", + "blake3 0.3.8", "pbr", "pkgar", "redoxer", @@ -1020,9 +1028,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "742739e41cd49414de871ea5e549afb7e2a3ac77b589bcbebe8c82fab37147fc" +checksum = "5ab49abadf3f9e1c4bc499e8845e152ad87d2ad2d30371841171169e9d75feee" dependencies = [ "bitflags", ] @@ -1042,7 +1050,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" dependencies = [ - "getrandom 0.2.2", + "getrandom 0.2.3", "redox_syscall", ] @@ -1135,9 +1143,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb5d2a036dc6d2d8fd16fde3498b04306e29bd193bf306a57427019b823d5acd" +checksum = "61b3909d758bb75c79f23d4736fac9433868679d3ad2ea7a61e3c25cfda9a088" [[package]] name = "safemem" @@ -1172,18 +1180,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.125" +version = "1.0.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171" +checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.125" +version = "1.0.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b093b7a2bb58203b5da3056c05b4ec1fed827dcfdb37347a8841695263b3d06d" +checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43" dependencies = [ "proc-macro2", "quote", @@ -1244,9 +1252,9 @@ checksum = "1e81da0851ada1f3e9d4312c704aa4f8806f0f9d69faaf8df2f3464b4a9437c2" [[package]] name = "syn" -version = "1.0.72" +version = "1.0.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1e8cdbefb79a9a5a65e0db8b47b723ee907b7c7f8496c76a1770b5c310bab82" +checksum = "f71489ff30030d2ae598524f61326b902466f72a0fb1a8564c001cc63425bcc7" dependencies = [ "proc-macro2", "quote", @@ -1273,9 +1281,9 @@ checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" [[package]] name = "tar" -version = "0.4.33" +version = "0.4.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0bcfbd6a598361fda270d82469fff3d65089dc33e175c9a131f7b4cd395f228" +checksum = "7d779dc6aeff029314570f666ec83f19df7280bb36ef338442cfa8c604021b80" dependencies = [ "filetime", "libc", @@ -1290,7 +1298,7 @@ checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" dependencies = [ "cfg-if 1.0.0", "libc", - "rand 0.8.3", + "rand 0.8.4", "redox_syscall", "remove_dir_all", "winapi", @@ -1404,9 +1412,9 @@ dependencies = [ [[package]] name = "unicode-normalization" -version = "0.1.17" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07fbfce1c8a97d547e8b5334978438d9d6ec8c20e38f56d4a4374d181493eaef" +checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" dependencies = [ "tinyvec", ] From 999ce1cd76607d63e1d083a73d8a9cde134252d9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 14 Jul 2021 11:56:37 -0600 Subject: [PATCH 0870/3180] Build bash recipe without parallel jobs --- recipes/bash/recipe.toml | 1 + src/bin/cook.rs | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/recipes/bash/recipe.toml b/recipes/bash/recipe.toml index 685091a9..50e25dc3 100644 --- a/recipes/bash/recipe.toml +++ b/recipes/bash/recipe.toml @@ -17,5 +17,6 @@ COOKBOOK_CONFIGURE_FLAGS+=( --disable-readline bash_cv_getenv_redef=no ) +COOKBOOK_MAKE_JOBS=1 # workaround for parallel make bugs cookbook_configure """ diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 36c13046..702ba8e6 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -479,9 +479,10 @@ COOKBOOK_CONFIGURE_FLAGS=( --enable-static ) COOKBOOK_MAKE="make" +COOKBOOK_MAKE_JOBS="$(nproc)" function cookbook_configure { "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" - "${COOKBOOK_MAKE}" -j "$(nproc)" + "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" "${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" } "#; From 0fc3effc1baf7e4411688926e5ccc04b89cb1183 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 14 Jul 2021 11:56:49 -0600 Subject: [PATCH 0871/3180] Do not use xargo by default for legacy rust builds --- cook.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cook.sh b/cook.sh index c269574c..a81505d1 100755 --- a/cook.sh +++ b/cook.sh @@ -6,7 +6,7 @@ source config.sh # Variables to be overriden by recipes export BINDIR=bin -export CARGO=(env RUSTFLAGS="$PREFIX_RUSTFLAGS -C link-arg=-zmuldefs" xargo) +export CARGO=(env RUSTFLAGS="$PREFIX_RUSTFLAGS -C link-arg=-zmuldefs" cargo) export CARGOBUILD=rustc export CARGOFLAGS= export DEBUG= From f848f9f87fba663cab86f994f5912d8d8c4cf0c6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 14 Jul 2021 12:18:51 -0600 Subject: [PATCH 0872/3180] Use cargo instead of xargo for relibc recipe --- recipes/relibc/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/relibc/recipe.sh b/recipes/relibc/recipe.sh index 88f3acba..6b0d4165 100644 --- a/recipes/relibc/recipe.sh +++ b/recipes/relibc/recipe.sh @@ -1,12 +1,12 @@ GIT=https://gitlab.redox-os.org/redox-os/relibc.git function recipe_build { - "$REDOX_MAKE" CARGO="env -u CARGO xargo" -j"$($NPROC)" + "$REDOX_MAKE" CARGO="env -u CARGO cargo" -j"$($NPROC)" skip=1 } function recipe_stage { dest="$(realpath $1)" - "$REDOX_MAKE" CARGO="env -u CARGO xargo" DESTDIR="$dest" install + "$REDOX_MAKE" CARGO="env -u CARGO cargo" DESTDIR="$dest" install skip=1 } From cf861a663a921a0e7fcd0c28e7f2900075fb8981 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 14 Jul 2021 12:24:18 -0600 Subject: [PATCH 0873/3180] Use cargo instead of xargo for rust-cairo and rust-cairo-demo --- recipes/rust-cairo-demo/recipe.sh | 2 +- recipes/rust-cairo/recipe.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/rust-cairo-demo/recipe.sh b/recipes/rust-cairo-demo/recipe.sh index 3b2aff83..13e373e6 100644 --- a/recipes/rust-cairo-demo/recipe.sh +++ b/recipes/rust-cairo-demo/recipe.sh @@ -4,7 +4,7 @@ BUILD_DEPENDS=(cairo expat fontconfig freetype libpng pixman zlib) function recipe_build { sysroot="$(realpath ../sysroot)" cp -p "$ROOT/Xargo.toml" "Xargo.toml" - xargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ + cargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ -- \ -L "${sysroot}/lib" \ -l cairo \ diff --git a/recipes/rust-cairo/recipe.sh b/recipes/rust-cairo/recipe.sh index 8de117da..b4484639 100644 --- a/recipes/rust-cairo/recipe.sh +++ b/recipes/rust-cairo/recipe.sh @@ -5,7 +5,7 @@ CARGOFLAGS="--example gui" function recipe_build { sysroot="$(realpath ../sysroot)" cp -p "$ROOT/Xargo.toml" "Xargo.toml" - xargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ + cargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ -- \ -L "${sysroot}/lib" \ -l cairo \ From a20008ee141fb8ae121b7e94d066070daaf3b1e7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 14 Jul 2021 13:07:27 -0600 Subject: [PATCH 0874/3180] Fix glium package build --- recipes/glium/recipe.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/glium/recipe.sh b/recipes/glium/recipe.sh index 1ba95196..7907194e 100644 --- a/recipes/glium/recipe.sh +++ b/recipes/glium/recipe.sh @@ -6,12 +6,11 @@ CARGOFLAGS="--example teapot" function recipe_build { sysroot="$(realpath ../sysroot)" - cp -p "$ROOT/Xargo.toml" "Xargo.toml" set -x - xargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ + cargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ -- \ -L "${sysroot}/lib" \ - -C link-args="$("${PKG_CONFIG}" --libs osmesa) -lglapi -lz -lstdc++ -lc -lgcc" + -C link-args="-Wl,-Bstatic $("${PKG_CONFIG}" --libs osmesa) -lstdc++ -lc -lgcc" set +x skip=1 } From 99f7948c73919d6bc33fada2d9c1d3b7a79d0d91 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 14 Jul 2021 13:08:30 -0600 Subject: [PATCH 0875/3180] Fix glutin package build --- recipes/glutin/recipe.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/glutin/recipe.sh b/recipes/glutin/recipe.sh index bd2beb51..459e2153 100644 --- a/recipes/glutin/recipe.sh +++ b/recipes/glutin/recipe.sh @@ -6,12 +6,11 @@ CARGOFLAGS="--example window" function recipe_build { sysroot="$(realpath ../sysroot)" - cp -p "$ROOT/Xargo.toml" "Xargo.toml" set -x - xargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ + cargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ -- \ -L "${sysroot}/lib" \ - -C link-args="$("${PKG_CONFIG}" --libs osmesa) -lglapi -lz -lstdc++ -lc -lgcc" + -C link-args="-Wl,-Bstatic $("${PKG_CONFIG}" --libs osmesa) -lstdc++ -lc -lgcc" set +x skip=1 } From a8070a35339c7afceacf6026746c4b93116e05f5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 14 Jul 2021 13:09:41 -0600 Subject: [PATCH 0876/3180] Fix kernel package build --- recipes/kernel/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/kernel/recipe.sh b/recipes/kernel/recipe.sh index d2b9dd6b..9c2b422d 100644 --- a/recipes/kernel/recipe.sh +++ b/recipes/kernel/recipe.sh @@ -7,7 +7,7 @@ function recipe_build { cp -v "$(realpath ../init.rc)" "$INITFS_FOLDER/etc/init.rc" cargo rustc \ --lib \ - --target "${ARCH}-unknown-none" \ + --target "${ARCH}-unknown-kernel" \ --release \ -Z build-std=core,alloc \ -- \ From d535c4b489c82293c1c755307791eb3a1edfe935 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 14 Jul 2021 13:11:33 -0600 Subject: [PATCH 0877/3180] Fix openjazz package build --- recipes/openjazz/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/openjazz/recipe.sh b/recipes/openjazz/recipe.sh index d6a7bc67..b9e7fc09 100644 --- a/recipes/openjazz/recipe.sh +++ b/recipes/openjazz/recipe.sh @@ -20,7 +20,7 @@ function recipe_build { touch INSTALL NEWS README AUTHORS ChangeLog COPYING autoreconf -fvi autoconf - wget -O build-aux/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" + wget -O builds/autotools/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" ./configure --build=${BUILD} --host=${HOST} --prefix='' "$REDOX_MAKE" -j"$($NPROC)" V=1 skip=1 From 425e3e760fa072ae61bd82ff2e8ff46ed556a661 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 19 Jul 2021 08:28:26 -0600 Subject: [PATCH 0878/3180] Force zlib to be linked for glium and glutin --- recipes/glium/recipe.sh | 2 +- recipes/glutin/recipe.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/glium/recipe.sh b/recipes/glium/recipe.sh index 7907194e..4a9a51ff 100644 --- a/recipes/glium/recipe.sh +++ b/recipes/glium/recipe.sh @@ -10,7 +10,7 @@ function recipe_build { cargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ -- \ -L "${sysroot}/lib" \ - -C link-args="-Wl,-Bstatic $("${PKG_CONFIG}" --libs osmesa) -lstdc++ -lc -lgcc" + -C link-args="-Wl,-Bstatic $("${PKG_CONFIG}" --libs osmesa) -lz -lstdc++ -lc -lgcc" set +x skip=1 } diff --git a/recipes/glutin/recipe.sh b/recipes/glutin/recipe.sh index 459e2153..7e3e04d7 100644 --- a/recipes/glutin/recipe.sh +++ b/recipes/glutin/recipe.sh @@ -10,7 +10,7 @@ function recipe_build { cargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ -- \ -L "${sysroot}/lib" \ - -C link-args="-Wl,-Bstatic $("${PKG_CONFIG}" --libs osmesa) -lstdc++ -lc -lgcc" + -C link-args="-Wl,-Bstatic $("${PKG_CONFIG}" --libs osmesa) -lz -lstdc++ -lc -lgcc" set +x skip=1 } From f11560d9785f76dbd80167b0e6ca02eeaca82ac4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 19 Jul 2021 08:39:04 -0600 Subject: [PATCH 0879/3180] Add libgmp --- recipes/gnu-binutils/recipe.sh | 2 +- recipes/libgmp/recipe.toml | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 recipes/libgmp/recipe.toml diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh index b570557e..a7211541 100644 --- a/recipes/gnu-binutils/recipe.sh +++ b/recipes/gnu-binutils/recipe.sh @@ -1,7 +1,7 @@ GIT=https://gitlab.redox-os.org/redox-os/binutils-gdb.git BRANCH=redox GIT_UPSTREAM=git://sourceware.org/git/binutils-gdb.git -BUILD_DEPENDS=(expat) +BUILD_DEPENDS=(expat libgmp) function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" diff --git a/recipes/libgmp/recipe.toml b/recipes/libgmp/recipe.toml new file mode 100644 index 00000000..ce91a89a --- /dev/null +++ b/recipes/libgmp/recipe.toml @@ -0,0 +1,5 @@ +[source] +tar = "https://gmplib.org/download/gmp/gmp-6.2.1.tar.xz" + +[build] +template = "configure" From e587d4e3e1c127496692d6619c5eb6676ab243f8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 5 Aug 2021 14:02:33 -0600 Subject: [PATCH 0880/3180] Add resist --- recipes/resist/recipe.toml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 recipes/resist/recipe.toml diff --git a/recipes/resist/recipe.toml b/recipes/resist/recipe.toml new file mode 100644 index 00000000..7f0ecb23 --- /dev/null +++ b/recipes/resist/recipe.toml @@ -0,0 +1,10 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/resist.git" + +[build] +template = "custom" +script = """ +cookbook_cargo +mkdir -pv "${COOKBOOK_STAGE}/share/resist" +cp -rv "${COOKBOOK_SOURCE}/"{posix,redox} "${COOKBOOK_STAGE}/share/resist" +""" From 0dacb5952f41aec6361b0fbc2f159bb74a1e1dd3 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 10 Aug 2021 16:08:32 -0600 Subject: [PATCH 0881/3180] Update pkgutils --- pkgutils | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgutils b/pkgutils index f3112275..410b9b07 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit f31122755b791b7a1ffbdcbbfce22ffdc72d5f73 +Subproject commit 410b9b0761d9c933490e9ee2c0668eea9d9af181 From 09b3dd84e325afb38d47288cb9dc9801b7fd4fdd Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 10 Aug 2021 17:32:34 -0600 Subject: [PATCH 0882/3180] Update mesa upstream --- recipes/mesa/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/mesa/recipe.sh b/recipes/mesa/recipe.sh index d9360698..22a33f86 100644 --- a/recipes/mesa/recipe.sh +++ b/recipes/mesa/recipe.sh @@ -1,5 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/mesa.git -GIT_UPSTREAM=git://anongit.freedesktop.org/mesa/mesa +GIT_UPSTREAM=https://gitlab.freedesktop.org/mesa/mesa BRANCH=redox BUILD_DEPENDS=(expat zlib) From 15cbcef62c274ae8cd2dd8622a34cd126e50f158 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 10 Aug 2021 17:32:56 -0600 Subject: [PATCH 0883/3180] Update uutils --- recipes/uutils/recipe.sh | 91 -------------------------------------- recipes/uutils/recipe.toml | 30 +++++-------- 2 files changed, 11 insertions(+), 110 deletions(-) delete mode 100644 recipes/uutils/recipe.sh diff --git a/recipes/uutils/recipe.sh b/recipes/uutils/recipe.sh deleted file mode 100644 index e032fe5a..00000000 --- a/recipes/uutils/recipe.sh +++ /dev/null @@ -1,91 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/uutils.git -BRANCH=redox-unix -GIT_UPSTREAM=https://github.com/uutils/coreutils.git -CARGOFLAGS="--no-default-features --features redox --bin uutils -- -C lto" - -BINS=( - base32 - base64 - basename - cat - chmod - cksum - comm - cp - cut - date - dircolors - dirname - echo - env - expand - expr - factor - false - fmt - fold - hashsum - head - install - join - link - ln - ls - md5sum - mkdir - mktemp - more - mv - nl - od - paste - printenv - printf - ptx - pwd - readlink - realpath - relpath - rm - rmdir - seq - sha1sum - sha224sum - sha256sum - sha3-224sum - sha3-256sum - sha3-384sum - sha3-512sum - sha384sum - sha3sum - sha512sum - shake128sum - shake256sum - shred - shuf - sleep - sort - split - sum - tac - tail - tee - test - tr - true - truncate - tsort - uname - unexpand - uniq - wc - yes -) - -function recipe_stage { - mkdir -p "$1/bin" - for bin in "${BINS[@]}" - do - ln -s uutils "$1/bin/$bin" - done -} diff --git a/recipes/uutils/recipe.toml b/recipes/uutils/recipe.toml index c2f4f921..8416f6b5 100644 --- a/recipes/uutils/recipe.toml +++ b/recipes/uutils/recipe.toml @@ -1,14 +1,14 @@ [source] git = "https://gitlab.redox-os.org/redox-os/uutils.git" -branch = "redox-unix" +branch = "redox" [build] template = "custom" script = """ COOKBOOK_CARGO_FLAGS+=( --no-default-features - --features redox - --bin uutils + --features feat_os_unix_redox + --bin coreutils ) cookbook_cargo @@ -16,15 +16,20 @@ BINS=( base32 base64 basename + basenc cat chmod cksum comm cp + csplit cut date + dd + df dircolors dirname + du echo env expand @@ -40,14 +45,14 @@ BINS=( link ln ls - md5sum mkdir mktemp - more mv nl + numfmt od paste + pr printenv printf ptx @@ -58,18 +63,6 @@ BINS=( rm rmdir seq - sha1sum - sha224sum - sha256sum - sha3-224sum - sha3-256sum - sha3-384sum - sha3-512sum - sha384sum - sha3sum - sha512sum - shake128sum - shake256sum shred shuf sleep @@ -88,11 +81,10 @@ BINS=( unexpand uniq wc - yes ) for bin in "${BINS[@]}" do - ln -sv uutils "${COOKBOOK_STAGE}/bin/$bin" + ln -sv coreutils "${COOKBOOK_STAGE}/bin/$bin" done """ From a30db23ddab0bb99916f4f61bd3cb2002fbdf33e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 10 Aug 2021 21:20:10 -0600 Subject: [PATCH 0884/3180] Disable ncurses C++ binding --- recipes/ncurses/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/ncurses/recipe.sh b/recipes/ncurses/recipe.sh index 0de25cd9..c918950b 100644 --- a/recipes/ncurses/recipe.sh +++ b/recipes/ncurses/recipe.sh @@ -19,6 +19,7 @@ function recipe_build { --prefix="" \ --disable-db-install \ --without-ada \ + --without-cxx-binding \ --without-tests \ cf_cv_func_mkstemp=yes "$REDOX_MAKE" -j"$($NPROC)" From 490a27bb116ad281970aea5a43b5bb08994dbe27 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 1 Dec 2021 08:42:53 -0700 Subject: [PATCH 0885/3180] Disable uutils uname --- recipes/uutils/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/uutils/recipe.toml b/recipes/uutils/recipe.toml index 8416f6b5..7c5214af 100644 --- a/recipes/uutils/recipe.toml +++ b/recipes/uutils/recipe.toml @@ -77,7 +77,6 @@ BINS=( true truncate tsort - uname unexpand uniq wc From 5869d5cc82db709de243cbf023f723af4177af4b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 14 Dec 2021 13:52:50 -0700 Subject: [PATCH 0886/3180] Add --bindir to llvm-config --- bin/x86_64-unknown-redox-llvm-config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bin/x86_64-unknown-redox-llvm-config b/bin/x86_64-unknown-redox-llvm-config index 62032de2..880e8722 100755 --- a/bin/x86_64-unknown-redox-llvm-config +++ b/bin/x86_64-unknown-redox-llvm-config @@ -108,6 +108,8 @@ if args == []: fail("no arguments") elif args == ["--version"]: print("10.0.1") +elif args == ["--bindir"]: + print(prefix + "/bin") elif args == ["--cppflags"]: print("-I" + prefix + "/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS") elif args == ["--cxxflags"]: From 6243558d6cdc41b07f28a7baf46c0979d4cfb8eb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 14 Dec 2021 14:19:19 -0700 Subject: [PATCH 0887/3180] Update rust recipe to latest branch --- recipes/rust/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index 7cd2424e..91e94aea 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -1,5 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/rust.git -BRANCH=redox-2020-07-27 +BRANCH=redox-2021-06-15 BUILD_DEPENDS=(llvm) DEPENDS="gcc cargo" PREPARE_COPY=0 From 5c388ffdb70848511375e0352ea6ea1eda82adf8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 15 Dec 2021 11:30:42 -0700 Subject: [PATCH 0888/3180] Update to pcre2 10.39 --- recipes/pcre/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/pcre/recipe.sh b/recipes/pcre/recipe.sh index 4e51f3b5..73f2c531 100644 --- a/recipes/pcre/recipe.sh +++ b/recipes/pcre/recipe.sh @@ -1,5 +1,5 @@ -VERSION=8.42 -TAR=https://ftp.pcre.org/pub/pcre/pcre-$VERSION.tar.bz2 +VERSION=10.39 +TAR=https://github.com/PhilipHazel/pcre2/releases/download/pcre2-${VERSION}/pcre2-${VERSION}.tar.bz2 BUILD_DEPENDS=() function recipe_version { From 0d039a3a6b9e205ffd069eacccf136a675ca6d7b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 15 Dec 2021 11:40:36 -0700 Subject: [PATCH 0889/3180] Revert "Update to pcre2 10.39" This reverts commit 5c388ffdb70848511375e0352ea6ea1eda82adf8. --- recipes/pcre/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/pcre/recipe.sh b/recipes/pcre/recipe.sh index 73f2c531..4e51f3b5 100644 --- a/recipes/pcre/recipe.sh +++ b/recipes/pcre/recipe.sh @@ -1,5 +1,5 @@ -VERSION=10.39 -TAR=https://github.com/PhilipHazel/pcre2/releases/download/pcre2-${VERSION}/pcre2-${VERSION}.tar.bz2 +VERSION=8.42 +TAR=https://ftp.pcre.org/pub/pcre/pcre-$VERSION.tar.bz2 BUILD_DEPENDS=() function recipe_version { From dbbd5b6f25c54b484d871ddd89ab33567a82955b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 15 Dec 2021 11:42:15 -0700 Subject: [PATCH 0890/3180] Fix pcre recipe link --- recipes/pcre/recipe.sh | 2 +- recipes/pcre/recipe.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/pcre/recipe.sh b/recipes/pcre/recipe.sh index 4e51f3b5..2592d111 100644 --- a/recipes/pcre/recipe.sh +++ b/recipes/pcre/recipe.sh @@ -1,5 +1,5 @@ VERSION=8.42 -TAR=https://ftp.pcre.org/pub/pcre/pcre-$VERSION.tar.bz2 +TAR=https://iweb.dl.sourceforge.net/project/pcre/pcre/$VERSION/pcre-$VERSION.tar.bz2 BUILD_DEPENDS=() function recipe_version { diff --git a/recipes/pcre/recipe.toml b/recipes/pcre/recipe.toml index ebde0bd0..1aaa994a 100644 --- a/recipes/pcre/recipe.toml +++ b/recipes/pcre/recipe.toml @@ -1,5 +1,5 @@ [source] -tar = "https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.bz2" +tar = "https://iweb.dl.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.tar.bz2" patches = [ "redox.patch" ] From d24375a02ce040c99e648b4399d2bc30c6403a54 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Mar 2022 15:38:04 -0700 Subject: [PATCH 0891/3180] Remove old recipe.sh files --- recipes/acid/recipe.sh | 1 - recipes/audiod/recipe.sh | 1 - recipes/bash/recipe.sh | 44 ----------------------- recipes/bootloader/recipe.sh | 32 ----------------- recipes/ca-certificates/recipe.sh | 39 -------------------- recipes/cleye/recipe.sh | 2 -- recipes/contain/recipe.sh | 1 - recipes/coreutils/recipe.sh | 1 - recipes/curl/recipe.sh | 58 ------------------------------ recipes/dash/recipe.sh | 44 ----------------------- recipes/drivers/recipe.sh | 20 ----------- recipes/exampled/recipe.sh | 1 - recipes/expat/recipe.sh | 36 ------------------- recipes/extrautils/recipe.sh | 2 -- recipes/findutils/recipe.sh | 3 -- recipes/freetype/recipe.sh | 39 -------------------- recipes/games/recipe.sh | 1 - recipes/gdbserver/recipe.sh | 1 - recipes/gettext/recipe.sh | 51 -------------------------- recipes/init/recipe.sh | 1 - recipes/installer/recipe.sh | 1 - recipes/ion/recipe.sh | 2 -- recipes/ipcd/recipe.sh | 2 -- recipes/libffi/recipe.sh | 45 ----------------------- recipes/libiconv/recipe.sh | 42 ---------------------- recipes/libjpeg/recipe.sh | 36 ------------------- recipes/libogg/recipe.sh | 41 --------------------- recipes/liborbital/recipe.sh | 7 ---- recipes/libpng/recipe.sh | 41 --------------------- recipes/libsodium/recipe.sh | 35 ------------------ recipes/libvorbis/recipe.sh | 40 --------------------- recipes/libxml2/recipe.sh | 45 ----------------------- recipes/logd/recipe.sh | 1 - recipes/nasm/recipe.sh | 36 ------------------- recipes/netdb/recipe.sh | 31 ---------------- recipes/netstack/recipe.sh | 1 - recipes/netutils/recipe.sh | 2 -- recipes/nghttp2/recipe.sh | 41 --------------------- recipes/nulld/recipe.sh | 2 -- recipes/openssl/recipe.sh | 36 ------------------- recipes/orbdata/recipe.sh | 32 ----------------- recipes/orbital/recipe.sh | 3 -- recipes/orbterm/recipe.sh | 4 --- recipes/orbutils/recipe.sh | 3 -- recipes/pciids/recipe.sh | 14 -------- recipes/pcre/recipe.sh | 44 ----------------------- recipes/pkgar/recipe.sh | 1 - recipes/pkgutils/recipe.sh | 1 - recipes/ptyd/recipe.sh | 2 -- recipes/ramfs/recipe.sh | 1 - recipes/randd/recipe.sh | 2 -- recipes/redoxerd/recipe.sh | 13 ------- recipes/redoxfs/recipe.sh | 1 - recipes/ripgrep/recipe.sh | 1 - recipes/sdl/recipe.sh | 50 -------------------------- recipes/sed/recipe.sh | 38 -------------------- recipes/shellstorm/recipe.sh | 1 - recipes/smith/recipe.sh | 2 -- recipes/strace/recipe.sh | 1 - recipes/userutils/recipe.sh | 43 ---------------------- recipes/xz/recipe.sh | 60 ------------------------------- recipes/zerod/recipe.sh | 2 -- recipes/zlib/recipe.sh | 35 ------------------ 63 files changed, 1219 deletions(-) delete mode 100644 recipes/acid/recipe.sh delete mode 100644 recipes/audiod/recipe.sh delete mode 100644 recipes/bash/recipe.sh delete mode 100644 recipes/bootloader/recipe.sh delete mode 100644 recipes/ca-certificates/recipe.sh delete mode 100755 recipes/cleye/recipe.sh delete mode 100644 recipes/contain/recipe.sh delete mode 100644 recipes/coreutils/recipe.sh delete mode 100644 recipes/curl/recipe.sh delete mode 100644 recipes/dash/recipe.sh delete mode 100644 recipes/drivers/recipe.sh delete mode 100644 recipes/exampled/recipe.sh delete mode 100644 recipes/expat/recipe.sh delete mode 100644 recipes/extrautils/recipe.sh delete mode 100644 recipes/findutils/recipe.sh delete mode 100644 recipes/freetype/recipe.sh delete mode 100644 recipes/games/recipe.sh delete mode 100644 recipes/gdbserver/recipe.sh delete mode 100644 recipes/gettext/recipe.sh delete mode 100644 recipes/init/recipe.sh delete mode 100644 recipes/installer/recipe.sh delete mode 100644 recipes/ion/recipe.sh delete mode 100644 recipes/ipcd/recipe.sh delete mode 100644 recipes/libffi/recipe.sh delete mode 100644 recipes/libiconv/recipe.sh delete mode 100644 recipes/libjpeg/recipe.sh delete mode 100644 recipes/libogg/recipe.sh delete mode 100644 recipes/liborbital/recipe.sh delete mode 100644 recipes/libpng/recipe.sh delete mode 100644 recipes/libsodium/recipe.sh delete mode 100644 recipes/libvorbis/recipe.sh delete mode 100755 recipes/libxml2/recipe.sh delete mode 100644 recipes/logd/recipe.sh delete mode 100644 recipes/nasm/recipe.sh delete mode 100644 recipes/netdb/recipe.sh delete mode 100644 recipes/netstack/recipe.sh delete mode 100644 recipes/netutils/recipe.sh delete mode 100644 recipes/nghttp2/recipe.sh delete mode 100644 recipes/nulld/recipe.sh delete mode 100644 recipes/openssl/recipe.sh delete mode 100644 recipes/orbdata/recipe.sh delete mode 100644 recipes/orbital/recipe.sh delete mode 100644 recipes/orbterm/recipe.sh delete mode 100644 recipes/orbutils/recipe.sh delete mode 100644 recipes/pciids/recipe.sh delete mode 100644 recipes/pcre/recipe.sh delete mode 100644 recipes/pkgar/recipe.sh delete mode 100644 recipes/pkgutils/recipe.sh delete mode 100644 recipes/ptyd/recipe.sh delete mode 100644 recipes/ramfs/recipe.sh delete mode 100644 recipes/randd/recipe.sh delete mode 100755 recipes/redoxerd/recipe.sh delete mode 100644 recipes/redoxfs/recipe.sh delete mode 100644 recipes/ripgrep/recipe.sh delete mode 100644 recipes/sdl/recipe.sh delete mode 100644 recipes/sed/recipe.sh delete mode 100644 recipes/shellstorm/recipe.sh delete mode 100755 recipes/smith/recipe.sh delete mode 100644 recipes/strace/recipe.sh delete mode 100644 recipes/userutils/recipe.sh delete mode 100644 recipes/xz/recipe.sh delete mode 100644 recipes/zerod/recipe.sh delete mode 100644 recipes/zlib/recipe.sh diff --git a/recipes/acid/recipe.sh b/recipes/acid/recipe.sh deleted file mode 100644 index 8704aff2..00000000 --- a/recipes/acid/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/acid.git diff --git a/recipes/audiod/recipe.sh b/recipes/audiod/recipe.sh deleted file mode 100644 index d082f464..00000000 --- a/recipes/audiod/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/audiod.git diff --git a/recipes/bash/recipe.sh b/recipes/bash/recipe.sh deleted file mode 100644 index d5545b2b..00000000 --- a/recipes/bash/recipe.sh +++ /dev/null @@ -1,44 +0,0 @@ -VERSION=4.4 -TAR=http://ftp.gnu.org/gnu/bash/bash-$VERSION.tar.gz -BUILD_DEPENDS=(gettext) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - sysroot="$PWD/../sysroot" - export LDFLAGS="-L$sysroot/lib -static" - export CPPFLAGS="-I$sysroot/include" - wget -O support/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix=/ \ - --disable-readline \ - bash_cv_getenv_redef=no - "$REDOX_MAKE" # -j"$($NPROC)" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" ${MAKEFLAGS} install - skip=1 -} diff --git a/recipes/bootloader/recipe.sh b/recipes/bootloader/recipe.sh deleted file mode 100644 index b91ed3e5..00000000 --- a/recipes/bootloader/recipe.sh +++ /dev/null @@ -1,32 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/bootloader.git - -function recipe_version { - echo "0.1.0" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - nasm -f bin -o bootloader -D "ARCH_${ARCH}" -i"${ARCH}/" "${ARCH}/disk.asm" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - cp -v bootloader "$dest" - skip=1 -} diff --git a/recipes/ca-certificates/recipe.sh b/recipes/ca-certificates/recipe.sh deleted file mode 100644 index c41b2106..00000000 --- a/recipes/ca-certificates/recipe.sh +++ /dev/null @@ -1,39 +0,0 @@ -GIT="https://gitlab.redox-os.org/redox-os/ca-certificates.git" - -function recipe_version { - date "+%Y%m%d" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - rm -rf build - mkdir build - curl \ - -o certdata.txt \ - --time-cond certdata.txt \ - https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt - ./make-ca.sh -D "$PWD/build" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - rm -rf build - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - mkdir -p "$1/ssl" - cp -RL build/etc/ssl/certs "$1/ssl" - skip=1 -} diff --git a/recipes/cleye/recipe.sh b/recipes/cleye/recipe.sh deleted file mode 100755 index 86eeca2b..00000000 --- a/recipes/cleye/recipe.sh +++ /dev/null @@ -1,2 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/cleye.git -GIT_UPSTREAM=https://github.com/evanandrewrose/cleye.git diff --git a/recipes/contain/recipe.sh b/recipes/contain/recipe.sh deleted file mode 100644 index b4a28108..00000000 --- a/recipes/contain/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/contain.git diff --git a/recipes/coreutils/recipe.sh b/recipes/coreutils/recipe.sh deleted file mode 100644 index f9558499..00000000 --- a/recipes/coreutils/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/coreutils.git diff --git a/recipes/curl/recipe.sh b/recipes/curl/recipe.sh deleted file mode 100644 index e9554ac4..00000000 --- a/recipes/curl/recipe.sh +++ /dev/null @@ -1,58 +0,0 @@ -VERSION="7.62.0" -#TAR=https://curl.haxx.se/download/curl-$VERSION.tar.gz -GIT=https://gitlab.redox-os.org/redox-os/curl.git -BRANCH=redox -BUILD_DEPENDS=(nghttp2 openssl zlib) -DEPENDS="ca-certificates" - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib --static" - wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" - autoreconf -i - ./configure \ - --prefix=/ \ - --build=${BUILD} \ - --host=${HOST} \ - --disable-ftp \ - --disable-ipv6 \ - --disable-ntlm-wb \ - --disable-shared \ - --disable-tftp \ - --disable-threaded-resolver \ - --enable-static \ - --with-ca-path=/ssl/certs \ - --with-nghttp2="$sysroot" \ - --with-ssl="$sysroot" \ - --with-zlib="$sysroot" - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/dash/recipe.sh b/recipes/dash/recipe.sh deleted file mode 100644 index b4e9ee7e..00000000 --- a/recipes/dash/recipe.sh +++ /dev/null @@ -1,44 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/dash.git -BRANCH=redox - -function recipe_version { - printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - ./autogen.sh - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix=/ \ - --enable-static \ - cross_compiling=yes - - # See https://stackoverflow.com/questions/4247068/sed-command-with-i-option-failing-on-mac-but-works-on-linux. - sed -i'' -e 's|#define HAVE_GETRLIMIT 1|/* #undef HAVE_GETRLIMIT */|g' config.h - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - ln -s "dash" "$dest/bin/sh" - skip=1 -} diff --git a/recipes/drivers/recipe.sh b/recipes/drivers/recipe.sh deleted file mode 100644 index 04add3f4..00000000 --- a/recipes/drivers/recipe.sh +++ /dev/null @@ -1,20 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/drivers.git -CARGOBUILD="build" -CARGOFLAGS="--all" - -function recipe_version { - echo "0.1.1" - skip=1 -} - -function recipe_stage { - mkdir -pv "$1/etc/pcid" - cp -v initfs.toml "$1/etc/pcid/initfs.toml" - - mkdir -pv "$1/etc/pcid.d" - for conf in `find . -maxdepth 2 -type f -name 'config.toml'`; do - driver=$(echo $conf | cut -d '/' -f2) - cp -v $conf "$1/etc/pcid.d/$driver.toml" - done - -} diff --git a/recipes/exampled/recipe.sh b/recipes/exampled/recipe.sh deleted file mode 100644 index b56a7b49..00000000 --- a/recipes/exampled/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/exampled.git diff --git a/recipes/expat/recipe.sh b/recipes/expat/recipe.sh deleted file mode 100644 index 9a0dbaaa..00000000 --- a/recipes/expat/recipe.sh +++ /dev/null @@ -1,36 +0,0 @@ -VERSION=2.2.6 -TAR=https://github.com/libexpat/libexpat/releases/download/R_${VERSION//./_}/expat-${VERSION}.tar.bz2 - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - export LDFLAGS="--static" - ./configure --build=${BUILD} --host=${HOST} --prefix=/ - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/extrautils/recipe.sh b/recipes/extrautils/recipe.sh deleted file mode 100644 index c046ce05..00000000 --- a/recipes/extrautils/recipe.sh +++ /dev/null @@ -1,2 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/extrautils.git -BUILD_DEPENDS=(xz) diff --git a/recipes/findutils/recipe.sh b/recipes/findutils/recipe.sh deleted file mode 100644 index e140a2f9..00000000 --- a/recipes/findutils/recipe.sh +++ /dev/null @@ -1,3 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/findutils.git -GIT_UPSTREAM=https://github.com/uutils/findutils.git -CARGOFLAGS="--bin find" diff --git a/recipes/freetype/recipe.sh b/recipes/freetype/recipe.sh deleted file mode 100644 index ae71650c..00000000 --- a/recipes/freetype/recipe.sh +++ /dev/null @@ -1,39 +0,0 @@ -VERSION=2.9.1 -TAR=https://download.savannah.gnu.org/releases/freetype/freetype-$VERSION.tar.gz -BUILD_DEPENDS=(zlib libpng) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export LDFLAGS="-L$sysroot/lib" - export CPPFLAGS="-I$sysroot/include" - ./configure --build=${BUILD} --host=${HOST} --prefix='/' - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/games/recipe.sh b/recipes/games/recipe.sh deleted file mode 100644 index b0aa22fc..00000000 --- a/recipes/games/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/games.git diff --git a/recipes/gdbserver/recipe.sh b/recipes/gdbserver/recipe.sh deleted file mode 100644 index 9df333cc..00000000 --- a/recipes/gdbserver/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/gdbserver.git diff --git a/recipes/gettext/recipe.sh b/recipes/gettext/recipe.sh deleted file mode 100644 index bffce9cc..00000000 --- a/recipes/gettext/recipe.sh +++ /dev/null @@ -1,51 +0,0 @@ -VERSION=0.19.8.1 -TAR=http://ftp.gnu.org/pub/gnu/gettext/gettext-${VERSION}.tar.xz -BUILD_DEPENDS=(libiconv) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib --static" - wget -O build-aux/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix=/ \ - --disable-shared \ - --enable-static \ - ac_cv_have_decl_program_invocation_name=no \ - gt_cv_locale_fr=false \ - gt_cv_locale_fr_utf8=false \ - gt_cv_locale_ja=false \ - gt_cv_locale_tr_utf8=false \ - gt_cv_locale_zh_CN=false - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/init/recipe.sh b/recipes/init/recipe.sh deleted file mode 100644 index bdc53785..00000000 --- a/recipes/init/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/init.git diff --git a/recipes/installer/recipe.sh b/recipes/installer/recipe.sh deleted file mode 100644 index 7717fe61..00000000 --- a/recipes/installer/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/installer.git diff --git a/recipes/ion/recipe.sh b/recipes/ion/recipe.sh deleted file mode 100644 index fac212ec..00000000 --- a/recipes/ion/recipe.sh +++ /dev/null @@ -1,2 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/ion.git -BRANCH=master diff --git a/recipes/ipcd/recipe.sh b/recipes/ipcd/recipe.sh deleted file mode 100644 index d500b644..00000000 --- a/recipes/ipcd/recipe.sh +++ /dev/null @@ -1,2 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/ipcd.git -CARGOFLAGS="--bin ipcd -- -C lto" diff --git a/recipes/libffi/recipe.sh b/recipes/libffi/recipe.sh deleted file mode 100644 index b7f841c3..00000000 --- a/recipes/libffi/recipe.sh +++ /dev/null @@ -1,45 +0,0 @@ -VERSION=3.2.1 -TAR=https://sourceware.org/pub/libffi/libffi-$VERSION.tar.gz -BUILD_DEPENDS=() - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib" - wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix=/ \ - --disable-shared \ - --enable-static - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/libiconv/recipe.sh b/recipes/libiconv/recipe.sh deleted file mode 100644 index 5879cc93..00000000 --- a/recipes/libiconv/recipe.sh +++ /dev/null @@ -1,42 +0,0 @@ -VERSION=1.15 -TAR=https://ftp.gnu.org/pub/gnu/libiconv/libiconv-$VERSION.tar.gz - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - export LDFLAGS="--static" - ./configure \ - --build="${BUILD}" \ - --host="${HOST}" \ - --prefix='/' \ - --disable-shared \ - --enable-static \ - ac_cv_have_decl_program_invocation_name=no - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/libjpeg/recipe.sh b/recipes/libjpeg/recipe.sh deleted file mode 100644 index fa6d48ae..00000000 --- a/recipes/libjpeg/recipe.sh +++ /dev/null @@ -1,36 +0,0 @@ -VERSION=9c -TAR=http://ijg.org/files/jpegsrc.v$VERSION.tar.gz - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - export LDFLAGS="--static" - ./configure --build=${BUILD} --host=${HOST} --prefix='/' - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/libogg/recipe.sh b/recipes/libogg/recipe.sh deleted file mode 100644 index 0472da58..00000000 --- a/recipes/libogg/recipe.sh +++ /dev/null @@ -1,41 +0,0 @@ -VERSION=1.3.3 -TAR=http://downloads.xiph.org/releases/ogg/libogg-$VERSION.tar.xz -TAR_SHA256=4f3fc6178a533d392064f14776b23c397ed4b9f48f5de297aba73b643f955c08 - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" - - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix='' - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/liborbital/recipe.sh b/recipes/liborbital/recipe.sh deleted file mode 100644 index 8e08a8fe..00000000 --- a/recipes/liborbital/recipe.sh +++ /dev/null @@ -1,7 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/liborbital.git - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" HOST="$HOST" DESTDIR="$dest" install - skip=1 -} diff --git a/recipes/libpng/recipe.sh b/recipes/libpng/recipe.sh deleted file mode 100644 index 5c30af56..00000000 --- a/recipes/libpng/recipe.sh +++ /dev/null @@ -1,41 +0,0 @@ -VERSION=1.6.36 -TAR=https://github.com/glennrp/libpng/archive/v${VERSION}.tar.gz -BUILD_DEPENDS=(zlib) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CPPFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib --static" - chmod +w config.sub - wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" - ./configure --build=${BUILD} --host=${HOST} --prefix='/' - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/bin/"*-config "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/libsodium/recipe.sh b/recipes/libsodium/recipe.sh deleted file mode 100644 index fa86e9a1..00000000 --- a/recipes/libsodium/recipe.sh +++ /dev/null @@ -1,35 +0,0 @@ -VERSION=1.0.16 -TAR=https://github.com/jedisct1/libsodium/archive/${VERSION}.tar.gz - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - ./autogen.sh - ./configure --build=${BUILD} --host=${HOST} --prefix='/' - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - skip=1 -} diff --git a/recipes/libvorbis/recipe.sh b/recipes/libvorbis/recipe.sh deleted file mode 100644 index fd98adbc..00000000 --- a/recipes/libvorbis/recipe.sh +++ /dev/null @@ -1,40 +0,0 @@ -VERSION=1.3.6 -TAR=http://downloads.xiph.org/releases/vorbis/libvorbis-$VERSION.tar.xz -TAR_SHA256=af00bb5a784e7c9e69f56823de4637c350643deedaf333d0fa86ecdba6fcb415 -BUILD_DEPENDS=(libogg) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix='' - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/libxml2/recipe.sh b/recipes/libxml2/recipe.sh deleted file mode 100755 index da0b938f..00000000 --- a/recipes/libxml2/recipe.sh +++ /dev/null @@ -1,45 +0,0 @@ -VERSION="2.9.9" -TAR="ftp://xmlsoft.org/libxml2/libxml2-${VERSION}.tar.gz" -BUILD_DEPENDS=() - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib --static" - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix=/ \ - --disable-shared \ - --enable-static \ - --without-python - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/logd/recipe.sh b/recipes/logd/recipe.sh deleted file mode 100644 index cffbc308..00000000 --- a/recipes/logd/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/logd.git diff --git a/recipes/nasm/recipe.sh b/recipes/nasm/recipe.sh deleted file mode 100644 index c419a271..00000000 --- a/recipes/nasm/recipe.sh +++ /dev/null @@ -1,36 +0,0 @@ -VERSION=2.14.02 -TAR=http://www.nasm.us/pub/nasm/releasebuilds/$VERSION/nasm-$VERSION.tar.gz - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - export LDFLAGS="-static" - ./configure --build=${BUILD} --host=${HOST} --prefix="" - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" install DESTDIR="$dest" - find "$dest"/bin -exec ${HOST}-strip {} ';' 2> /dev/null - skip=1 -} diff --git a/recipes/netdb/recipe.sh b/recipes/netdb/recipe.sh deleted file mode 100644 index 12503ac9..00000000 --- a/recipes/netdb/recipe.sh +++ /dev/null @@ -1,31 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/netdb.git - -function recipe_version { - printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - echo "skipping build" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - echo "skipping clean" - skip=1 -} - -function recipe_stage { - cp -r * ../stage/ - skip=1 -} diff --git a/recipes/netstack/recipe.sh b/recipes/netstack/recipe.sh deleted file mode 100644 index 8b826c55..00000000 --- a/recipes/netstack/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/netstack.git diff --git a/recipes/netutils/recipe.sh b/recipes/netutils/recipe.sh deleted file mode 100644 index 2c79d7ea..00000000 --- a/recipes/netutils/recipe.sh +++ /dev/null @@ -1,2 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/netutils.git -BRANCH=redox-unix diff --git a/recipes/nghttp2/recipe.sh b/recipes/nghttp2/recipe.sh deleted file mode 100644 index ee980382..00000000 --- a/recipes/nghttp2/recipe.sh +++ /dev/null @@ -1,41 +0,0 @@ -VERSION=1.37.0 -TAR=https://github.com/nghttp2/nghttp2/releases/download/v${VERSION}/nghttp2-${VERSION}.tar.xz - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - export CFLAGS="-static" - - ./configure \ - --build="${BUILD}" \ - --host="${HOST}" \ - --prefix=/ \ - --enable-lib-only - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" install DESTDIR="$dest" - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/nulld/recipe.sh b/recipes/nulld/recipe.sh deleted file mode 100644 index a5944d52..00000000 --- a/recipes/nulld/recipe.sh +++ /dev/null @@ -1,2 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/nulld.git -CARGOFLAGS="--bin nulld -- -C lto" diff --git a/recipes/openssl/recipe.sh b/recipes/openssl/recipe.sh deleted file mode 100644 index 48b929ce..00000000 --- a/recipes/openssl/recipe.sh +++ /dev/null @@ -1,36 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/openssl.git -BRANCH=redox -GIT_UPSTREAM=https://github.com/openssl/openssl.git - -function recipe_version { - printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - ./Configure no-shared no-dgram redox-$ARCH --prefix="/" - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -rf "$1/{share,ssl}" - skip=1 -} diff --git a/recipes/orbdata/recipe.sh b/recipes/orbdata/recipe.sh deleted file mode 100644 index 8ad1f85e..00000000 --- a/recipes/orbdata/recipe.sh +++ /dev/null @@ -1,32 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/orbdata.git - -function recipe_version { - echo "0.0.1" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - echo "skipping build" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - echo "skipping clean" - skip=1 -} - -function recipe_stage { - mkdir -pv "$1/ui" - cp -Rv ./* "$1/ui" - skip=1 -} diff --git a/recipes/orbital/recipe.sh b/recipes/orbital/recipe.sh deleted file mode 100644 index 68484f39..00000000 --- a/recipes/orbital/recipe.sh +++ /dev/null @@ -1,3 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/orbital.git -CARGOFLAGS="--bin orbital -- -C lto" -DEPENDS="orbdata" diff --git a/recipes/orbterm/recipe.sh b/recipes/orbterm/recipe.sh deleted file mode 100644 index 9976d87a..00000000 --- a/recipes/orbterm/recipe.sh +++ /dev/null @@ -1,4 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/orbterm.git -BINDIR=/ui/bin -CARGOFLAGS="--bin orbterm -- -C lto" -DEPENDS="orbital" diff --git a/recipes/orbutils/recipe.sh b/recipes/orbutils/recipe.sh deleted file mode 100644 index 281976f9..00000000 --- a/recipes/orbutils/recipe.sh +++ /dev/null @@ -1,3 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/orbutils.git -BINDIR=/ui/bin -DEPENDS="orbital" diff --git a/recipes/pciids/recipe.sh b/recipes/pciids/recipe.sh deleted file mode 100644 index 2e1c48bf..00000000 --- a/recipes/pciids/recipe.sh +++ /dev/null @@ -1,14 +0,0 @@ -GIT=https://github.com/pciutils/pciids.git - -function recipe_build { - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - - install -d "${dest}/share/misc/" - install pci.ids "${dest}/share/misc/" - - skip=1 -} diff --git a/recipes/pcre/recipe.sh b/recipes/pcre/recipe.sh deleted file mode 100644 index 2592d111..00000000 --- a/recipes/pcre/recipe.sh +++ /dev/null @@ -1,44 +0,0 @@ -VERSION=8.42 -TAR=https://iweb.dl.sourceforge.net/project/pcre/pcre/$VERSION/pcre-$VERSION.tar.bz2 -BUILD_DEPENDS=() - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib --static" - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix=/ \ - --disable-shared \ - --enable-static - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/pkgar/recipe.sh b/recipes/pkgar/recipe.sh deleted file mode 100644 index ca4d5f3b..00000000 --- a/recipes/pkgar/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/pkgar.git diff --git a/recipes/pkgutils/recipe.sh b/recipes/pkgutils/recipe.sh deleted file mode 100644 index 9af1a437..00000000 --- a/recipes/pkgutils/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/pkgutils.git diff --git a/recipes/ptyd/recipe.sh b/recipes/ptyd/recipe.sh deleted file mode 100644 index 558bbf5d..00000000 --- a/recipes/ptyd/recipe.sh +++ /dev/null @@ -1,2 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/ptyd.git -CARGOFLAGS="--bin ptyd -- -C lto" diff --git a/recipes/ramfs/recipe.sh b/recipes/ramfs/recipe.sh deleted file mode 100644 index f583f5c3..00000000 --- a/recipes/ramfs/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/ramfs.git diff --git a/recipes/randd/recipe.sh b/recipes/randd/recipe.sh deleted file mode 100644 index a3e93aad..00000000 --- a/recipes/randd/recipe.sh +++ /dev/null @@ -1,2 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/randd.git -CARGOFLAGS="--bin randd -- -C lto" diff --git a/recipes/redoxerd/recipe.sh b/recipes/redoxerd/recipe.sh deleted file mode 100755 index 6b0fbc5c..00000000 --- a/recipes/redoxerd/recipe.sh +++ /dev/null @@ -1,13 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/redoxer.git - -function recipe_update { - cd daemon -} - -function recipe_build { - cd daemon -} - -function recipe_stage { - mv daemon/target target -} diff --git a/recipes/redoxfs/recipe.sh b/recipes/redoxfs/recipe.sh deleted file mode 100644 index 40968289..00000000 --- a/recipes/redoxfs/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/redoxfs.git diff --git a/recipes/ripgrep/recipe.sh b/recipes/ripgrep/recipe.sh deleted file mode 100644 index bd154155..00000000 --- a/recipes/ripgrep/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://github.com/jackpot51/ripgrep.git diff --git a/recipes/sdl/recipe.sh b/recipes/sdl/recipe.sh deleted file mode 100644 index be9cbd8d..00000000 --- a/recipes/sdl/recipe.sh +++ /dev/null @@ -1,50 +0,0 @@ -VERSION=1.2.15 -TAR=https://www.libsdl.org/release/SDL-$VERSION.tar.gz -BUILD_DEPENDS=(liborbital) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib" - ./autogen.sh - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix=/ \ - --disable-shared \ - --disable-pulseaudio \ - --disable-video-x11 \ - --disable-loadso \ - --enable-redoxaudio \ - --enable-clock_gettime \ - --enable-video-orbital - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/sed/recipe.sh b/recipes/sed/recipe.sh deleted file mode 100644 index 210a0d39..00000000 --- a/recipes/sed/recipe.sh +++ /dev/null @@ -1,38 +0,0 @@ -VERSION=4.4 -TAR=http://ftp.gnu.org/gnu/sed/sed-$VERSION.tar.xz - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - export LDFLAGS="-static" - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix=/ - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - skip=1 -} diff --git a/recipes/shellstorm/recipe.sh b/recipes/shellstorm/recipe.sh deleted file mode 100644 index aed89c19..00000000 --- a/recipes/shellstorm/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/shellstorm.git diff --git a/recipes/smith/recipe.sh b/recipes/smith/recipe.sh deleted file mode 100755 index 20236515..00000000 --- a/recipes/smith/recipe.sh +++ /dev/null @@ -1,2 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/Smith.git -GIT_UPSTREAM=https://github.com/IGI-111/Smith.git diff --git a/recipes/strace/recipe.sh b/recipes/strace/recipe.sh deleted file mode 100644 index 0b5404dc..00000000 --- a/recipes/strace/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/strace-redox.git diff --git a/recipes/userutils/recipe.sh b/recipes/userutils/recipe.sh deleted file mode 100644 index 08015f65..00000000 --- a/recipes/userutils/recipe.sh +++ /dev/null @@ -1,43 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/userutils.git -BINS=( - id - getty - groupadd - groupmod - groupdel - login - passwd - su - sudo - useradd - usermod - userdel -) - -function recipe_stage { - # Reimplement the entire copy bc of suid - if [ "$DEBUG" == 1 ] - then - build=debug - else - build=release - fi - - mkdir -p "$1/bin" - - for bin in "${BINS[@]}" - do - "$STRIP" -v "target/$TARGET/$build/$bin" -o "$1/bin/$bin" - done - - cp -Rv "res" "$1/etc" - - ln -s id "$1/bin/whoami" - chmod +s "$1/bin/passwd" - chmod +s "$1/bin/sudo" - chmod +s "$1/bin/su" - - docgen ../source ../stage/ref - - skip=1 -} diff --git a/recipes/xz/recipe.sh b/recipes/xz/recipe.sh deleted file mode 100644 index b22738ec..00000000 --- a/recipes/xz/recipe.sh +++ /dev/null @@ -1,60 +0,0 @@ -VERSION=5.2.3 -TAR=https://codeload.github.com/xz-mirror/xz/tar.gz/v$VERSION - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - export CFLAGS="-static" - - # autogen.sh requires autopoint which is provided by the gettext homebrew - # formula on macOS. Unfortunately, homebrew does not install it into PATH - # because macOS provides the BSD gettext library. So we make sure to include - # it in PATH, preceding the default BSD version. - if [[ "$(uname)" == "Darwin" ]]; then - export PATH="/usr/local/opt/gettext/bin:$PATH" - fi - - ./autogen.sh - - chmod +w build-aux/config.sub - wget -O build-aux/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix=/ \ - --disable-lzmadec \ - --disable-lzmainfo \ - --disable-xz \ - --disable-xzdec \ - --enable-shared=no \ - --enable-static=yes \ - --enable-threads=no \ - --with-pic=no - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -rf "$dest/share" - skip=1 -} diff --git a/recipes/zerod/recipe.sh b/recipes/zerod/recipe.sh deleted file mode 100644 index 5006bda6..00000000 --- a/recipes/zerod/recipe.sh +++ /dev/null @@ -1,2 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/zerod.git -CARGOFLAGS="--bin zerod -- -C lto" diff --git a/recipes/zlib/recipe.sh b/recipes/zlib/recipe.sh deleted file mode 100644 index 7ad2070b..00000000 --- a/recipes/zlib/recipe.sh +++ /dev/null @@ -1,35 +0,0 @@ -VERSION=1.2.11 -TAR=http://zlib.net/zlib-$VERSION.tar.gz - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - # See https://stackoverflow.com/questions/21396988/zlib-build-not-configuring-properly-with-cross-compiler-ignores-ar. - CHOST=x86_64-unknown-redox ./configure --static --prefix=/ - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - skip=1 -} From f871864bc88f791686eb8bc5b3e137a61e92fbf4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Mar 2022 16:25:57 -0700 Subject: [PATCH 0892/3180] Bootloader recipe update --- recipes/bootloader/recipe.toml | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/recipes/bootloader/recipe.toml b/recipes/bootloader/recipe.toml index dacd541c..71315865 100644 --- a/recipes/bootloader/recipe.toml +++ b/recipes/bootloader/recipe.toml @@ -4,11 +4,18 @@ git = "https://gitlab.redox-os.org/redox-os/bootloader.git" [build] template = "custom" script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ + ARCH="$(echo "${TARGET}" | cut -d - -f1)" -nasm \ - -f bin \ - -o "${COOKBOOK_STAGE}/bootloader" \ - -D "ARCH_${ARCH}" \ - -i"${COOKBOOK_SOURCE}/${ARCH}/" \ - "${COOKBOOK_SOURCE}/${ARCH}/disk.asm" +if [ "${ARCH}" == "x86_64" ] +then + export TARGET="x86-unknown-none" + "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" + cp "build/${TARGET}/bootloader.bin" "${COOKBOOK_STAGE}/bootloader" +fi + +# TODO: fails due to environmental variables +# export TARGET="${ARCH}-unknown-uefi" +# cleanenv "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" +# cp "build/${TARGET}/bootloader.efi" "${COOKBOOK_STAGE}/bootloader.efi" """ From 994c6c59bd9a640cd661c8f650f7857bf2f62d49 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Mar 2022 18:48:12 -0700 Subject: [PATCH 0893/3180] Update redoxer --- Cargo.lock | 433 +++++++++++++++++++++++++++++++++++++---------------- Cargo.toml | 2 +- 2 files changed, 304 insertions(+), 131 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 552233c7..5581ac0b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,10 +1,12 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +version = 3 + [[package]] name = "addr2line" -version = "0.15.2" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7a2e47a1fbe209ee101dd6d61285226744c6c8d3c21c8dc878ba6cb9f467f3a" +checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" dependencies = [ "gimli", ] @@ -22,10 +24,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" [[package]] -name = "ansi_term" -version = "0.11.0" +name = "aes" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" +checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" +dependencies = [ + "cfg-if 1.0.0", + "cipher", + "cpufeatures", + "opaque-debug 0.3.0", +] + +[[package]] +name = "aho-corasick" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +dependencies = [ + "memchr", +] + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" dependencies = [ "winapi", ] @@ -36,6 +59,16 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9bcdf9185a4ea0d8afa7c8ad387cc3a93c3ecfa918125e000a57a42e71268d7" +[[package]] +name = "argon2" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25df3c03f1040d0069fcd3907e24e36d59f9b6fa07ba49be0eb25a794f036ba7" +dependencies = [ + "base64ct", + "blake2", +] + [[package]] name = "arrayref" version = "0.3.6" @@ -61,15 +94,15 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" -version = "0.3.60" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7815ea54e4d821e791162e078acbebfd6d8c8939cd559c9335dceb1c8ca7282" +checksum = "5e121dee8023ce33ab248d9ce1493df03c3b38a659b240096fcbd7048ff9c31f" dependencies = [ "addr2line", "cc", @@ -96,6 +129,12 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +[[package]] +name = "base64ct" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6b4d9b1225d28d360ec6a231d65af1fd99a2a095154c8040689617290569c5c" + [[package]] name = "bidir-map" version = "0.6.0" @@ -104,9 +143,18 @@ checksum = "6c3d05037e57974413eef55a8505df19de3cb4dc7a8f8389e1588ec492ae9c73" [[package]] name = "bitflags" -version = "1.2.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "blake2" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9cf849ee05b2ee5fba5e36f97ff8ec2533916700fc0758d40d92136a42f3388" +dependencies = [ + "digest 0.10.3", +] [[package]] name = "blake2b_simd" @@ -162,6 +210,15 @@ dependencies = [ "generic-array 0.12.4", ] +[[package]] +name = "block-buffer" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" +dependencies = [ + "generic-array 0.14.5", +] + [[package]] name = "block-padding" version = "0.1.5" @@ -191,9 +248,9 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "cc" -version = "1.0.68" +version = "1.0.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a72c244c1ff497a746a7e1fb3d14bd08420ecda70c8f25c7112f2781652d787" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" [[package]] name = "cfg-if" @@ -208,10 +265,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] -name = "clap" -version = "2.33.3" +name = "cipher" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" +checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" +dependencies = [ + "generic-array 0.14.5", +] + +[[package]] +name = "clap" +version = "2.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" dependencies = [ "ansi_term", "atty", @@ -229,19 +295,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] -name = "crc32fast" -version = "1.2.1" +name = "cpufeatures" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" +checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ "cfg-if 1.0.0", ] [[package]] name = "crossbeam-channel" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4" +checksum = "e54ea8bc3fb1ee042f5aace6e3c6e025d3874866da222930f70ce62aceba0bfa" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -249,9 +324,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" +checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" dependencies = [ "cfg-if 1.0.0", "crossbeam-epoch", @@ -260,9 +335,9 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.5" +version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd" +checksum = "c00d6d2ea26e8b151d99093005cb442fb9a37aeaca582a03ec70946f49ab5ed9" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -273,14 +348,24 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.5" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db" +checksum = "b5e5bed1f1c269533fa816a0a5492b3545209a205ca1a54842be180eb63a16a6" dependencies = [ "cfg-if 1.0.0", "lazy_static", ] +[[package]] +name = "crypto-common" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57952ca27b5e3606ff4dd79b0020231aaf9d6aa76dc05fd30137538c50bd3ce8" +dependencies = [ + "generic-array 0.14.5", + "typenum", +] + [[package]] name = "crypto-mac" version = "0.7.0" @@ -297,8 +382,8 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" dependencies = [ - "generic-array 0.14.4", - "subtle 2.4.0", + "generic-array 0.14.5", + "subtle 2.4.1", ] [[package]] @@ -316,7 +401,18 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "generic-array 0.14.4", + "generic-array 0.14.5", +] + +[[package]] +name = "digest" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" +dependencies = [ + "block-buffer 0.10.2", + "crypto-common", + "subtle 2.4.1", ] [[package]] @@ -346,6 +442,19 @@ version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" +[[package]] +name = "env_logger" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3" +dependencies = [ + "atty", + "humantime", + "log 0.4.14", + "regex", + "termcolor", +] + [[package]] name = "err-derive" version = "0.2.4" @@ -389,10 +498,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" [[package]] -name = "filetime" -version = "0.2.14" +name = "fastrand" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d34cfa13a63ae058bfa601fe9e313bbdb3746427c1459185464ce0fcf62e1e8" +checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf" +dependencies = [ + "instant", +] + +[[package]] +name = "filetime" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "975ccf83d8d9d0d84682850a38c8169027be83368805971cc4f238c2b245bc98" dependencies = [ "cfg-if 1.0.0", "libc", @@ -436,12 +554,12 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.4" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" +checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" dependencies = [ "typenum", - "version_check 0.9.3", + "version_check 0.9.4", ] [[package]] @@ -457,9 +575,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.3" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" +checksum = "d39cd93900197114fa1fcb7ae84ca742095eed9442088988ae74fa744e930e77" dependencies = [ "cfg-if 1.0.0", "libc", @@ -468,24 +586,30 @@ dependencies = [ [[package]] name = "gimli" -version = "0.24.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4075386626662786ddb0ec9081e7c7eeb1ba31951f447ca780ef9f5d568189" +checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" [[package]] name = "hermit-abi" -version = "0.1.18" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" dependencies = [ "libc", ] [[package]] name = "httparse" -version = "1.4.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3a87b616e37e93c22fb19bcd386f02f3af5ea98a25670ad0fce773de23c5e68" +checksum = "9100414882e15fb7feccb4897e5f0ff0ff1ca7d1a86a23208ada4d7a18e6c6c4" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" @@ -535,6 +659,15 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161ceaf2f41b6cd3f6502f5da085d4ad4393a51e0c70ed2fce1d5698d798fae" +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if 1.0.0", +] + [[package]] name = "itertools" version = "0.8.2" @@ -564,9 +697,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.97" +version = "0.2.119" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b8adadd720df158f4d70dfe7ccc6adb0472d7c55ca83445f6a5ab3e36f8fb6" +checksum = "1bf2e165bb3457c8e098ea76f3e3bc9db55f87aa90d52d0e6be741470916aaa4" [[package]] name = "libflate" @@ -600,21 +733,21 @@ dependencies = [ [[package]] name = "matches" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" +checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" [[package]] name = "memchr" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc" +checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" [[package]] name = "memoffset" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" dependencies = [ "autocfg", ] @@ -640,9 +773,9 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" dependencies = [ "hermit-abi", "libc", @@ -656,9 +789,9 @@ checksum = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" [[package]] name = "object" -version = "0.25.3" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a38f2be3697a57b4060074ff41b44c16870d916ad7877c17696e063257482bc7" +checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" dependencies = [ "memchr", ] @@ -669,6 +802,12 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" +[[package]] +name = "opaque-debug" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" + [[package]] name = "ordermap" version = "0.2.13" @@ -720,9 +859,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.19" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" +checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe" [[package]] name = "pkgar" @@ -746,9 +885,9 @@ checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "ppv-lite86" -version = "0.2.10" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" +checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" [[package]] name = "proc-macro-error" @@ -760,7 +899,7 @@ dependencies = [ "proc-macro2", "quote", "syn", - "version_check 0.9.3", + "version_check 0.9.4", ] [[package]] @@ -771,14 +910,14 @@ checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ "proc-macro2", "quote", - "version_check 0.9.3", + "version_check 0.9.4", ] [[package]] name = "proc-macro2" -version = "1.0.27" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0d8caf72986c1a598726adc988bb5984792ef84f5ee5aa50209145ee8077038" +checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" dependencies = [ "unicode-xid", ] @@ -795,9 +934,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.9" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145" dependencies = [ "proc-macro2", ] @@ -835,19 +974,18 @@ dependencies = [ "libc", "rand_chacha 0.2.2", "rand_core 0.5.1", - "rand_hc 0.2.0", + "rand_hc", ] [[package]] name = "rand" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha 0.3.1", "rand_core 0.6.3", - "rand_hc 0.3.1", ] [[package]] @@ -900,7 +1038,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" dependencies = [ - "getrandom 0.2.3", + "getrandom 0.2.5", ] [[package]] @@ -912,15 +1050,6 @@ dependencies = [ "rand_core 0.5.1", ] -[[package]] -name = "rand_hc" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7" -dependencies = [ - "rand_core 0.6.3", -] - [[package]] name = "rayon" version = "1.5.1" @@ -972,15 +1101,15 @@ dependencies = [ [[package]] name = "redox_installer" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98346851d42e2f357b3c023b27b75da14a774c226f9636a0ed42535b72d62bde" +checksum = "8feb7cd91040cf60d9663582304000838ced9dd3165b355d4f96292db5a98a47" dependencies = [ "arg_parser", "failure", "libc", "pkgar", - "rand 0.7.3", + "rand 0.8.5", "redox_liner", "redox_pkgutils", "redoxfs", @@ -1027,10 +1156,16 @@ dependencies = [ ] [[package]] -name = "redox_syscall" -version = "0.2.9" +name = "redox_simple_endian" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab49abadf3f9e1c4bc499e8845e152ad87d2ad2d30371841171169e9d75feee" +checksum = "c4e4404b4e54e59e7bb5f5236b61d8e822c2a77b2e955be8072002ff7ff8d69c" + +[[package]] +name = "redox_syscall" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8380fe0152551244f0747b1bf41737e0f8a74f97a14ccefd1148187271634f3c" dependencies = [ "bitflags", ] @@ -1050,15 +1185,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" dependencies = [ - "getrandom 0.2.3", + "getrandom 0.2.5", "redox_syscall", ] [[package]] name = "redoxer" -version = "0.2.20" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f80a9eb6af9fc219652f2a02198c44b639abaf8af8b940ad48e1b2f24b1b603" +checksum = "879e3c35af1aeeba2dc8f95ce2417861793324eac2742fdb8f533cd1ac8f113f" dependencies = [ "dirs", "proc-mounts", @@ -1071,17 +1206,43 @@ dependencies = [ [[package]] name = "redoxfs" -version = "0.4.3" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68477c1e271b4f9e2f5e3fd5f797d1528d819ed42bf4f4edcfb9e24fea8934f2" +checksum = "fd98e5e165138cdf4effae3a3be28a81931b013bc3758e33fccfcb37a4737652" dependencies = [ + "aes", + "argon2", + "base64ct", + "env_logger", "fuse", + "getrandom 0.2.5", "libc", + "log 0.4.14", + "redox_simple_endian", "redox_syscall", + "seahash", + "termion", "time", "uuid", ] +[[package]] +name = "regex" +version = "1.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" + [[package]] name = "remove_dir_all" version = "0.5.3" @@ -1105,9 +1266,9 @@ dependencies = [ [[package]] name = "rle-decode-fast" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cabe4fa914dec5870285fa7f71f602645da47c486e68486d2b4ceb4a343e90ac" +checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422" [[package]] name = "rust-argon2" @@ -1123,9 +1284,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.19" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "410f7acf3cb3a44527c5d9546bad4bf4e6c460915d5f9f2fc524498bfe8f70ce" +checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" [[package]] name = "rustls" @@ -1143,9 +1304,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61b3909d758bb75c79f23d4736fac9433868679d3ad2ea7a61e3c25cfda9a088" +checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f" [[package]] name = "safemem" @@ -1179,19 +1340,25 @@ dependencies = [ ] [[package]] -name = "serde" -version = "1.0.126" +name = "seahash" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + +[[package]] +name = "serde" +version = "1.0.136" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.126" +version = "1.0.136" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43" +checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" dependencies = [ "proc-macro2", "quote", @@ -1204,10 +1371,10 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" dependencies = [ - "block-buffer", + "block-buffer 0.7.3", "digest 0.8.1", "fake-simd", - "opaque-debug", + "opaque-debug 0.2.3", ] [[package]] @@ -1216,11 +1383,11 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecf" dependencies = [ - "block-buffer", + "block-buffer 0.7.3", "byte-tools", "digest 0.8.1", "keccak", - "opaque-debug", + "opaque-debug 0.2.3", ] [[package]] @@ -1246,15 +1413,15 @@ checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" [[package]] name = "subtle" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e81da0851ada1f3e9d4312c704aa4f8806f0f9d69faaf8df2f3464b4a9437c2" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.73" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f71489ff30030d2ae598524f61326b902466f72a0fb1a8564c001cc63425bcc7" +checksum = "8a65b3f4ffa0092e9887669db0eae07941f023991ab58ea44da8fe8e2d511c6b" dependencies = [ "proc-macro2", "quote", @@ -1263,9 +1430,9 @@ dependencies = [ [[package]] name = "synstructure" -version = "0.12.4" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ "proc-macro2", "quote", @@ -1281,9 +1448,9 @@ checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" [[package]] name = "tar" -version = "0.4.35" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d779dc6aeff029314570f666ec83f19df7280bb36ef338442cfa8c604021b80" +checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6" dependencies = [ "filetime", "libc", @@ -1292,18 +1459,27 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" +checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" dependencies = [ "cfg-if 1.0.0", + "fastrand", "libc", - "rand 0.8.4", "redox_syscall", "remove_dir_all", "winapi", ] +[[package]] +name = "termcolor" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +dependencies = [ + "winapi-util", +] + [[package]] name = "termion" version = "1.5.6" @@ -1343,9 +1519,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.2.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b5220f05bb7de7f3f53c7c065e1199b3172696fe2db9f9c4d8ad9b4ee74c342" +checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" dependencies = [ "tinyvec_macros", ] @@ -1388,9 +1564,9 @@ checksum = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" [[package]] name = "typenum" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06" +checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" [[package]] name = "unicase" @@ -1403,12 +1579,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeb8be209bb1c96b7c177c7420d26e04eccacb0eeae6b980e35fcb74678107e0" -dependencies = [ - "matches", -] +checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" [[package]] name = "unicode-normalization" @@ -1421,9 +1594,9 @@ dependencies = [ [[package]] name = "unicode-width" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" +checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" [[package]] name = "unicode-xid" @@ -1477,9 +1650,9 @@ checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" [[package]] name = "version_check" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "walkdir" diff --git a/Cargo.toml b/Cargo.toml index 2fdcfefa..0d4b32d3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,7 @@ path = "src/lib.rs" blake3 = "0.3.4" pbr = "1.0.2" pkgar = "0.1.6" -redoxer = "0.2.20" +redoxer = "0.2.24" serde = { version = "1.0.110", features = ["derive"] } sha2 = "0.8.2" termion = "1.5.5" From d51d631d81cc965b0bbc40c9f3cb4722cc6e4840 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 17 Mar 2022 08:34:47 -0600 Subject: [PATCH 0894/3180] Update kernel recipe --- recipes/kernel/init.rc | 4 +++- recipes/kernel/recipe.sh | 11 ++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/recipes/kernel/init.rc b/recipes/kernel/init.rc index dedda2d0..bfbcad7a 100644 --- a/recipes/kernel/init.rc +++ b/recipes/kernel/init.rc @@ -4,9 +4,11 @@ nulld zerod randd vesad T T G -stdio display:1 +logd debug: display:1 +stdio log: ps2d us ramfs logging +acpid pcid /etc/pcid/initfs.toml redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK cd file: diff --git a/recipes/kernel/recipe.sh b/recipes/kernel/recipe.sh index 9c2b422d..63a3a21b 100644 --- a/recipes/kernel/recipe.sh +++ b/recipes/kernel/recipe.sh @@ -1,5 +1,14 @@ GIT=https://gitlab.redox-os.org/redox-os/kernel.git -BUILD_DEPENDS=(drivers init nulld ramfs randd redoxfs zerod) +BUILD_DEPENDS=( + drivers + init + logd + nulld + ramfs + randd + redoxfs + zerod +) function recipe_build { export INITFS_FOLDER="$(realpath ../sysroot)" From 24045776b2573d307fbc3967c765f56be6e7b779 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 17 Mar 2022 10:20:35 -0600 Subject: [PATCH 0895/3180] Update pkgar --- pkgar | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgar b/pkgar index 73f8802a..2bf58075 160000 --- a/pkgar +++ b/pkgar @@ -1 +1 @@ -Subproject commit 73f8802a210211f689fce84ddc172b7db10372d0 +Subproject commit 2bf580756f63dccefc8fbe115b77e8b18025bb65 From e41ec81f192ee163f51fbc7c0e69aa215d754a93 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 17 Mar 2022 16:36:46 -0600 Subject: [PATCH 0896/3180] Adjust for new pkgar --- Cargo.lock | 275 ++++++++++++++++++++++++++++-------------------- Cargo.toml | 5 +- cook.sh | 17 +-- src/bin/cook.rs | 19 ++-- 4 files changed, 180 insertions(+), 136 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5581ac0b..a1b55f2a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -167,22 +167,6 @@ dependencies = [ "constant_time_eq", ] -[[package]] -name = "blake3" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "667d945f23cefed0b5f973af35c4bc3319caa6776fbda270e4897d8504afa8e4" -dependencies = [ - "arrayref", - "arrayvec", - "cc", - "cfg-if 0.1.10", - "constant_time_eq", - "crypto-mac 0.7.0", - "digest 0.8.1", - "rayon", -] - [[package]] name = "blake3" version = "0.3.8" @@ -194,8 +178,9 @@ dependencies = [ "cc", "cfg-if 0.1.10", "constant_time_eq", - "crypto-mac 0.8.0", + "crypto-mac", "digest 0.9.0", + "rayon", ] [[package]] @@ -314,9 +299,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e54ea8bc3fb1ee042f5aace6e3c6e025d3874866da222930f70ce62aceba0bfa" +checksum = "fdbfe11fe19ff083c48923cf179540e8cd0535903dc35e178a1fdeeb59aef51f" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -335,10 +320,11 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.7" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c00d6d2ea26e8b151d99093005cb442fb9a37aeaca582a03ec70946f49ab5ed9" +checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c" dependencies = [ + "autocfg", "cfg-if 1.0.0", "crossbeam-utils", "lazy_static", @@ -348,9 +334,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e5bed1f1c269533fa816a0a5492b3545209a205ca1a54842be180eb63a16a6" +checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38" dependencies = [ "cfg-if 1.0.0", "lazy_static", @@ -366,16 +352,6 @@ dependencies = [ "typenum", ] -[[package]] -name = "crypto-mac" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" -dependencies = [ - "generic-array 0.12.4", - "subtle 1.0.0", -] - [[package]] name = "crypto-mac" version = "0.8.0" @@ -383,7 +359,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" dependencies = [ "generic-array 0.14.5", - "subtle 2.4.1", + "subtle", ] [[package]] @@ -412,7 +388,7 @@ checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" dependencies = [ "block-buffer 0.10.2", "crypto-common", - "subtle 2.4.1", + "subtle", ] [[package]] @@ -426,10 +402,19 @@ dependencies = [ ] [[package]] -name = "dirs-sys" -version = "0.3.6" +name = "dirs" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03d86534ed367a67548dc68113a0f5db55432fdfbb6e6f9d77704397d95d5780" +checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" dependencies = [ "libc", "redox_users", @@ -469,6 +454,16 @@ dependencies = [ "synstructure", ] +[[package]] +name = "error-chain" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" +dependencies = [ + "backtrace", + "version_check 0.9.4", +] + [[package]] name = "failure" version = "0.1.8" @@ -599,6 +594,15 @@ dependencies = [ "libc", ] +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + [[package]] name = "httparse" version = "1.6.0" @@ -653,12 +657,6 @@ dependencies = [ "unicode-normalization", ] -[[package]] -name = "index-fixed" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161ceaf2f41b6cd3f6502f5da085d4ad4393a51e0c70ed2fce1d5698d798fae" - [[package]] name = "instant" version = "0.1.12" @@ -697,9 +695,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.119" +version = "0.2.120" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bf2e165bb3457c8e098ea76f3e3bc9db55f87aa90d52d0e6be741470916aaa4" +checksum = "ad5c14e80759d0939d013e6ca49930e59fc53dd8e5009132f76240c179380c09" [[package]] name = "libflate" @@ -713,6 +711,18 @@ dependencies = [ "take_mut", ] +[[package]] +name = "libsodium-sys" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b779387cd56adfbc02ea4a668e704f729be8d6a6abd2c27ca5ee537849a92fd" +dependencies = [ + "cc", + "libc", + "pkg-config", + "walkdir", +] + [[package]] name = "log" version = "0.3.9" @@ -752,6 +762,17 @@ dependencies = [ "autocfg", ] +[[package]] +name = "memsec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2af4f95d8737f4ffafbd1fb3c703cdc898868a244a59786793cba0520ebdcbdd" +dependencies = [ + "getrandom 0.1.16", + "libc", + "winapi", +] + [[package]] name = "mime" version = "0.2.6" @@ -865,16 +886,49 @@ checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe" [[package]] name = "pkgar" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74003f2ac9baa8600352a677bd8763088cc35498a4364abe9ae5898832015bb9" +checksum = "104bb0b89cb3244b3d99bb561ed56bb692584ec14333ee25b6e6e3f765a04a1c" dependencies = [ - "blake3 0.2.3", + "blake3", "clap", + "error-chain", + "pkgar-core", + "pkgar-keys", "plain", - "rand 0.7.3", - "rand_core 0.5.1", - "sodalite", + "sodiumoxide", + "user-error", +] + +[[package]] +name = "pkgar-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c79d8984e1dae9d1bfc30b90ead1d5279b90da97c1e566da6ff2d087f03ee02" +dependencies = [ + "bitflags", + "blake3", + "plain", + "sodiumoxide", +] + +[[package]] +name = "pkgar-keys" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23c2343ced644887eedccd945bd629af7bb834159937f20a2a72fc35e525fe70" +dependencies = [ + "clap", + "dirs 3.0.2", + "error-chain", + "hex", + "lazy_static", + "seckey", + "serde", + "sodiumoxide", + "termion", + "toml 0.5.8", + "user-error", ] [[package]] @@ -964,19 +1018,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", -] - [[package]] name = "rand" version = "0.8.5" @@ -984,20 +1025,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha 0.3.1", + "rand_chacha", "rand_core 0.6.3", ] -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", -] - [[package]] name = "rand_chacha" version = "0.3.1" @@ -1023,15 +1054,6 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", -] - [[package]] name = "rand_core" version = "0.6.3" @@ -1041,15 +1063,6 @@ dependencies = [ "getrandom 0.2.5", ] -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - [[package]] name = "rayon" version = "1.5.1" @@ -1088,9 +1101,10 @@ dependencies = [ name = "redox_cookbook" version = "0.1.0" dependencies = [ - "blake3 0.3.8", + "blake3", "pbr", "pkgar", + "pkgar-keys", "redoxer", "serde", "sha2", @@ -1101,9 +1115,9 @@ dependencies = [ [[package]] name = "redox_installer" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8feb7cd91040cf60d9663582304000838ced9dd3165b355d4f96292db5a98a47" +checksum = "735a7bad71e93cda883318cf30f3bcd99830a79c7917e2b3d9da4c6d1d3567e4" dependencies = [ "arg_parser", "failure", @@ -1112,6 +1126,7 @@ dependencies = [ "rand 0.8.5", "redox_liner", "redox_pkgutils", + "redox_syscall", "redoxfs", "rust-argon2", "serde", @@ -1181,21 +1196,22 @@ dependencies = [ [[package]] name = "redox_users" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" +checksum = "7776223e2696f1aa4c6b0170e83212f47296a00424305117d013dfe86fb0fe55" dependencies = [ "getrandom 0.2.5", "redox_syscall", + "thiserror", ] [[package]] name = "redoxer" -version = "0.2.24" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879e3c35af1aeeba2dc8f95ce2417861793324eac2742fdb8f533cd1ac8f113f" +checksum = "62413f6255f2ba2489b1276bf9ac84970490a4f694d02df48b958af65ce2072a" dependencies = [ - "dirs", + "dirs 2.0.2", "proc-mounts", "redox_installer", "redox_syscall", @@ -1345,6 +1361,16 @@ version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" +[[package]] +name = "seckey" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b371a3e46636d13277af1daacbecb6f5acbe653bd378a4822ecd1c67790fbb" +dependencies = [ + "getrandom 0.1.16", + "memsec", +] + [[package]] name = "serde" version = "1.0.136" @@ -1391,12 +1417,13 @@ dependencies = [ ] [[package]] -name = "sodalite" -version = "0.3.0" +name = "sodiumoxide" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67643084c740297bac275b1d97901ec27ca5984be4e8f75d86a33498e0e3e61c" +checksum = "7038b67c941e23501573cb7242ffb08709abe9b11eb74bceff875bbda024a6a8" dependencies = [ - "index-fixed", + "libc", + "libsodium-sys", ] [[package]] @@ -1405,12 +1432,6 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" -[[package]] -name = "subtle" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" - [[package]] name = "subtle" version = "2.4.1" @@ -1419,9 +1440,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a65b3f4ffa0092e9887669db0eae07941f023991ab58ea44da8fe8e2d511c6b" +checksum = "ea297be220d52398dcc07ce15a209fce436d361735ac1db700cab3b6cdfb9f54" dependencies = [ "proc-macro2", "quote", @@ -1501,6 +1522,26 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "thiserror" +version = "1.0.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "thread-scoped" version = "1.0.2" @@ -1621,6 +1662,12 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "user-error" +version = "1.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07a91d0648d862a02d641c82292791accfe66d36df75d8149ebc9768f2e36863" + [[package]] name = "uuid" version = "0.5.1" diff --git a/Cargo.toml b/Cargo.toml index 0d4b32d3..f1d43249 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,8 +22,9 @@ path = "src/lib.rs" [dependencies] blake3 = "0.3.4" pbr = "1.0.2" -pkgar = "0.1.6" -redoxer = "0.2.24" +pkgar = "0.1.7" +pkgar-keys = "0.1.0" +redoxer = "0.2.25" serde = { version = "1.0.110", features = ["derive"] } sha2 = "0.8.2" termion = "1.5.5" diff --git a/cook.sh b/cook.sh index a81505d1..5ac9471e 100755 --- a/cook.sh +++ b/cook.sh @@ -280,8 +280,8 @@ function op { pkgar \ extract \ sysroot \ - --file "$REPO/$i.pkgar" \ - --public "${ROOT}/build/public.key" + --archive "$REPO/$i.pkgar" \ + --pkey "${ROOT}/build/id_ed25519.pub.toml" done fi @@ -441,19 +441,10 @@ function op { rm -rfv stage ;; pkg) - if [ ! -e "${ROOT}/build/secret.key" ] - then - mkdir -p "${ROOT}/build" - pkgar \ - keygen \ - --secret "${ROOT}/build/secret.key" \ - --public "${ROOT}/build/public.key" - fi - pkgar \ create \ - --secret "${ROOT}/build/secret.key" \ - --file stage.pkgar \ + --archive stage.pkgar \ + --skey "${ROOT}/build/id_ed25519.toml" \ stage ;; unpkg) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 702ba8e6..1523db67 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -397,10 +397,10 @@ fn build(recipe_dir: &Path, source_dir: &Path, build: &BuildRecipe) -> Result Result { //TODO: metadata like dependencies, name, and version - let secret_path = "build/secret.key"; - let public_path = "build/public.key"; + let secret_path = "build/id_ed25519.toml"; + let public_path = "build/id_ed25519.pub.toml"; if ! Path::new(secret_path).is_file() || ! Path::new(public_path).is_file() { if ! Path::new("build").is_dir() { create_dir(Path::new("build"))?; } - pkgar::bin::keygen(secret_path, public_path).map_err(|err| format!( - "failed to generate pkgar keys: {:?}", + let (public_key, secret_key) = pkgar_keys::SecretKeyFile::new(); + public_key.save(&public_path).map_err(|err| format!( + "failed to save pkgar public key: {:?}", + err + ))?; + secret_key.save(&secret_path).map_err(|err| format!( + "failed to save pkgar secret key: {:?}", err ))?; } @@ -570,7 +575,7 @@ fn package(recipe_dir: &Path, stage_dir: &Path, package: &PackageRecipe) -> Resu } } if ! package_file.is_file() { - pkgar::bin::create( + pkgar::create( secret_path, package_file.to_str().unwrap(), stage_dir.to_str().unwrap() From 6d95f7358ea1d900bac44756cbcec2c171339a83 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 17 Mar 2022 19:56:47 -0600 Subject: [PATCH 0897/3180] Remove .crates.toml and .crates2.json --- src/bin/cook.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 1523db67..ac9c8972 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -499,6 +499,15 @@ if [ -d "${COOKBOOK_STAGE}/lib" ] then find "${COOKBOOK_STAGE}/lib" -type f -name '*.la' -exec rm -fv {} ';' fi + +# Remove cargo install files +for file in .crates.toml .crates2.json +do + if [ -f "${COOKBOOK_STAGE}/${file}" ] + then + rm -v "${COOKBOOK_STAGE}/${file}" + fi +done "#; //TODO: better integration with redoxer (library instead of binary) From 26df86075f772bc5ddc1695d99fba67e50f0b1fd Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Sun, 27 Mar 2022 11:29:00 +0200 Subject: [PATCH 0898/3180] Update syscall --- Cargo.lock | 83 +++++++++++++++++++++++++++++---------------------- Cargo.toml | 4 +-- src/sha256.rs | 4 +-- 3 files changed, 52 insertions(+), 39 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a1b55f2a..dfd80a1a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -81,6 +81,12 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" +[[package]] +name = "arrayvec" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" + [[package]] name = "atty" version = "0.2.14" @@ -163,7 +169,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" dependencies = [ "arrayref", - "arrayvec", + "arrayvec 0.5.2", "constant_time_eq", ] @@ -174,7 +180,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b64485778c4f16a6a5a9d335e80d449ac6c70cdd6a06d2af18a6f6f775a125b3" dependencies = [ "arrayref", - "arrayvec", + "arrayvec 0.5.2", "cc", "cfg-if 0.1.10", "constant_time_eq", @@ -183,6 +189,20 @@ dependencies = [ "rayon", ] +[[package]] +name = "blake3" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a08e53fc5a564bb15bfe6fae56bd71522205f1f91893f9c0116edad6496c183f" +dependencies = [ + "arrayref", + "arrayvec 0.7.2", + "cc", + "cfg-if 1.0.0", + "constant_time_eq", + "digest 0.10.3", +] + [[package]] name = "block-buffer" version = "0.7.3" @@ -281,9 +301,9 @@ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "cpufeatures" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469" +checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b" dependencies = [ "libc", ] @@ -299,9 +319,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdbfe11fe19ff083c48923cf179540e8cd0535903dc35e178a1fdeeb59aef51f" +checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -435,7 +455,7 @@ checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3" dependencies = [ "atty", "humantime", - "log 0.4.14", + "log 0.4.16", "regex", "termcolor", ] @@ -486,12 +506,6 @@ dependencies = [ "synstructure", ] -[[package]] -name = "fake-simd" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" - [[package]] name = "fastrand" version = "1.7.0" @@ -695,9 +709,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.120" +version = "0.2.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad5c14e80759d0939d013e6ca49930e59fc53dd8e5009132f76240c179380c09" +checksum = "efaa7b300f3b5fe8eb6bf21ce3895e1751d9665086af2d64b42f19701015ff4f" [[package]] name = "libflate" @@ -729,14 +743,14 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" dependencies = [ - "log 0.4.14", + "log 0.4.16", ] [[package]] name = "log" -version = "0.4.14" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" +checksum = "6389c490849ff5bc16be905ae24bc913a9c8892e19b2341dbc175e14c341c2b8" dependencies = [ "cfg-if 1.0.0", ] @@ -886,11 +900,11 @@ checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe" [[package]] name = "pkgar" -version = "0.1.7" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "104bb0b89cb3244b3d99bb561ed56bb692584ec14333ee25b6e6e3f765a04a1c" +checksum = "f4ae35c230411d75d887500217f7db5890ac918d4f2deddaa1a7b6435df18bdb" dependencies = [ - "blake3", + "blake3 0.3.8", "clap", "error-chain", "pkgar-core", @@ -907,7 +921,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c79d8984e1dae9d1bfc30b90ead1d5279b90da97c1e566da6ff2d087f03ee02" dependencies = [ "bitflags", - "blake3", + "blake3 0.3.8", "plain", "sodiumoxide", ] @@ -988,9 +1002,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.15" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145" +checksum = "632d02bff7f874a36f33ea8bb416cd484b90cc66c1194b1a1110d067a7013f58" dependencies = [ "proc-macro2", ] @@ -1101,7 +1115,7 @@ dependencies = [ name = "redox_cookbook" version = "0.1.0" dependencies = [ - "blake3", + "blake3 1.3.1", "pbr", "pkgar", "pkgar-keys", @@ -1178,9 +1192,9 @@ checksum = "c4e4404b4e54e59e7bb5f5236b61d8e822c2a77b2e955be8072002ff7ff8d69c" [[package]] name = "redox_syscall" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8380fe0152551244f0747b1bf41737e0f8a74f97a14ccefd1148187271634f3c" +checksum = "8ae183fc1b06c149f0c1793e1eb447c8b04bfe46d48e9e48bfb8d2d7ed64ecf0" dependencies = [ "bitflags", ] @@ -1233,7 +1247,7 @@ dependencies = [ "fuse", "getrandom 0.2.5", "libc", - "log 0.4.14", + "log 0.4.16", "redox_simple_endian", "redox_syscall", "seahash", @@ -1311,7 +1325,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "942b71057b31981152970d57399c25f72e27a6ee0d207a669d8304cabf44705b" dependencies = [ "base64 0.9.3", - "log 0.4.14", + "log 0.4.16", "ring", "sct", "untrusted", @@ -1393,14 +1407,13 @@ dependencies = [ [[package]] name = "sha2" -version = "0.8.2" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" +checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" dependencies = [ - "block-buffer 0.7.3", - "digest 0.8.1", - "fake-simd", - "opaque-debug 0.2.3", + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.3", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index f1d43249..97f4359e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,13 +20,13 @@ name = "cookbook" path = "src/lib.rs" [dependencies] -blake3 = "0.3.4" +blake3 = "1" pbr = "1.0.2" pkgar = "0.1.7" pkgar-keys = "0.1.0" redoxer = "0.2.25" serde = { version = "1.0.110", features = ["derive"] } -sha2 = "0.8.2" +sha2 = "0.10" termion = "1.5.5" toml = "0.5.6" walkdir = "2.3.1" diff --git a/src/sha256.rs b/src/sha256.rs index c424e001..5f85a0d1 100644 --- a/src/sha256.rs +++ b/src/sha256.rs @@ -18,10 +18,10 @@ pub fn sha256(r: &mut R) -> Result { break; } - hasher.input(&data[..count]); + hasher.update(&data[..count]); } - Ok(format!("{:x}", hasher.result())) + Ok(format!("{:x}", hasher.finalize())) } pub fn sha256_progress>(path: P) -> Result { From 8e1c797628e3171e89194dff21d2f0f6112cb71a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 28 Mar 2022 12:17:37 -0600 Subject: [PATCH 0899/3180] Update pkgar --- pkgar | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgar b/pkgar index 2bf58075..65f43a3b 160000 --- a/pkgar +++ b/pkgar @@ -1 +1 @@ -Subproject commit 2bf580756f63dccefc8fbe115b77e8b18025bb65 +Subproject commit 65f43a3bf955fde946bf4f976f044e4ffadc8912 From 9ab6d7c2d00b5f23a42c492be306760680d7f19a Mon Sep 17 00:00:00 2001 From: David Marceau Date: Mon, 28 Mar 2022 19:39:25 +0000 Subject: [PATCH 0900/3180] Update recipe.toml New location for newer zlib version 1.2.12 --- recipes/zlib/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/zlib/recipe.toml b/recipes/zlib/recipe.toml index e33f2aff..6bb6c7fe 100644 --- a/recipes/zlib/recipe.toml +++ b/recipes/zlib/recipe.toml @@ -1,6 +1,6 @@ [source] -tar = "http://zlib.net/zlib-1.2.11.tar.gz" -blake3 = "20db628054c3c09edea193700ca39d3c033655529cbdc5d88f3c5da7514ad949" +tar = "http://zlib.net/fossils/zlib-1.2.12.tar.gz" +blake3 = "b7ad5638d87c69665afaae138bab40cc9a53a7ae7da9d168303e3df6b051d2b5" [build] template = "custom" From 6bbc1750f3dece0ff816efaddf917c6626173102 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 28 Mar 2022 15:25:45 -0600 Subject: [PATCH 0901/3180] Reset blake3 hash --- recipes/zlib/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/zlib/recipe.toml b/recipes/zlib/recipe.toml index 6bb6c7fe..1d51f83a 100644 --- a/recipes/zlib/recipe.toml +++ b/recipes/zlib/recipe.toml @@ -1,6 +1,6 @@ [source] tar = "http://zlib.net/fossils/zlib-1.2.12.tar.gz" -blake3 = "b7ad5638d87c69665afaae138bab40cc9a53a7ae7da9d168303e3df6b051d2b5" +blake3 = "20db628054c3c09edea193700ca39d3c033655529cbdc5d88f3c5da7514ad949" [build] template = "custom" From 5b9b84be166ee90b2dc7c8f85568a276685e13fc Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 30 Mar 2022 07:35:32 -0600 Subject: [PATCH 0902/3180] Revert "Reset blake3 hash" This reverts commit 6bbc1750f3dece0ff816efaddf917c6626173102. --- recipes/zlib/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/zlib/recipe.toml b/recipes/zlib/recipe.toml index 1d51f83a..6bb6c7fe 100644 --- a/recipes/zlib/recipe.toml +++ b/recipes/zlib/recipe.toml @@ -1,6 +1,6 @@ [source] tar = "http://zlib.net/fossils/zlib-1.2.12.tar.gz" -blake3 = "20db628054c3c09edea193700ca39d3c033655529cbdc5d88f3c5da7514ad949" +blake3 = "b7ad5638d87c69665afaae138bab40cc9a53a7ae7da9d168303e3df6b051d2b5" [build] template = "custom" From 6fc40e264428768f9e1bc27ebac34044b9349dac Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 30 Mar 2022 11:54:54 -0600 Subject: [PATCH 0903/3180] Update Cargo.lock --- Cargo.lock | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index dfd80a1a..0549939e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -584,9 +584,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d39cd93900197114fa1fcb7ae84ca742095eed9442088988ae74fa744e930e77" +checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad" dependencies = [ "cfg-if 1.0.0", "libc", @@ -1074,7 +1074,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" dependencies = [ - "getrandom 0.2.5", + "getrandom 0.2.6", ] [[package]] @@ -1192,9 +1192,9 @@ checksum = "c4e4404b4e54e59e7bb5f5236b61d8e822c2a77b2e955be8072002ff7ff8d69c" [[package]] name = "redox_syscall" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae183fc1b06c149f0c1793e1eb447c8b04bfe46d48e9e48bfb8d2d7ed64ecf0" +checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" dependencies = [ "bitflags", ] @@ -1210,11 +1210,11 @@ dependencies = [ [[package]] name = "redox_users" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7776223e2696f1aa4c6b0170e83212f47296a00424305117d013dfe86fb0fe55" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.5", + "getrandom 0.2.6", "redox_syscall", "thiserror", ] @@ -1245,7 +1245,7 @@ dependencies = [ "base64ct", "env_logger", "fuse", - "getrandom 0.2.5", + "getrandom 0.2.6", "libc", "log 0.4.16", "redox_simple_endian", @@ -1453,9 +1453,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.89" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea297be220d52398dcc07ce15a209fce436d361735ac1db700cab3b6cdfb9f54" +checksum = "704df27628939572cd88d33f171cd6f896f4eaca85252c6e0a72d8d8287ee86f" dependencies = [ "proc-macro2", "quote", From cfd785d3f71c11fab335f6b19d1294c43cb00098 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 30 Mar 2022 13:07:29 -0600 Subject: [PATCH 0904/3180] Update LLVM --- recipes/llvm/recipe.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/llvm/recipe.sh b/recipes/llvm/recipe.sh index 32dbcb90..ab413e21 100644 --- a/recipes/llvm/recipe.sh +++ b/recipes/llvm/recipe.sh @@ -1,6 +1,6 @@ GIT=https://gitlab.redox-os.org/redox-os/llvm-project.git GIT_UPSTREAM=https://github.com/rust-lang/llvm-project.git -BRANCH=redox-2020-07-27 +BRANCH=redox-2022-03-18 function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" @@ -57,8 +57,8 @@ function recipe_build { -DLLVM_TOOL_LTO_BUILD=Off -DPYTHON_EXECUTABLE="/usr/bin/python2" -DUNIX=1 - -target="$HOST" - -I"$sysroot/include" + #-target="$HOST" + #-I"$sysroot/include" -Wno-dev ) set -x From 8bd3084cd307435be6d41779ba82e0a0ced6f5c0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 30 Mar 2022 14:19:08 -0600 Subject: [PATCH 0905/3180] Update LLVM recipe --- recipes/llvm/recipe.sh | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/recipes/llvm/recipe.sh b/recipes/llvm/recipe.sh index ab413e21..fc0e4370 100644 --- a/recipes/llvm/recipe.sh +++ b/recipes/llvm/recipe.sh @@ -29,6 +29,8 @@ function recipe_build { -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_RANLIB="$(which "${RANLIB}")" -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_INSTALL_INCLUDEDIR="include" + -DCMAKE_INSTALL_OLDINCLUDEDIR="/include" -DCMAKE_SYSTEM_NAME=Generic -DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE=$native" -DLLVM_BUILD_BENCHMARKS=Off @@ -44,7 +46,6 @@ function recipe_build { -DLLVM_INCLUDE_TESTS=Off -DLLVM_INCLUDE_UTILS=Off -DLLVM_OPTIMIZED_TABLEGEN=On - #-DLLVM_TABLEGEN="/usr/bin/llvm-tblgen-8" -DLLVM_TARGET_ARCH="$ARCH" -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_TOOL_LLVM_COV_BUILD=Off @@ -55,10 +56,10 @@ function recipe_build { -DLLVM_TOOL_LLVM_XRAY_BUILD=Off -DLLVM_TOOL_LLI_BUILD=Off -DLLVM_TOOL_LTO_BUILD=Off + -DLLVM_TOOLS_INSTALL_DIR=bin + -DLLVM_UTILS_INSTALL_DIR=bin -DPYTHON_EXECUTABLE="/usr/bin/python2" -DUNIX=1 - #-target="$HOST" - #-I"$sysroot/include" -Wno-dev ) set -x @@ -80,7 +81,12 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" + set -x "$REDOX_MAKE" DESTDIR="$dest" install - find "$dest"/bin -exec $STRIP {} ';' 2> /dev/null + mv -vT "$dest"/usr/include "$dest/include" + mv -vT "$dest"/usr/share "$dest/share" + rmdir -v "$dest"/usr + find "$dest"/bin -exec "$STRIP" -v {} ';' 2> /dev/null + set +x skip=1 } From 7969f0d2526f4270fbb6d6ee79fa47f8c7d154d9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 30 Mar 2022 14:56:45 -0600 Subject: [PATCH 0906/3180] Update llvm-config --- bin/x86_64-unknown-redox-llvm-config | 124 ++++++++++++++------------- 1 file changed, 65 insertions(+), 59 deletions(-) diff --git a/bin/x86_64-unknown-redox-llvm-config b/bin/x86_64-unknown-redox-llvm-config index 880e8722..c3658a16 100755 --- a/bin/x86_64-unknown-redox-llvm-config +++ b/bin/x86_64-unknown-redox-llvm-config @@ -8,80 +8,86 @@ # echo -e \"$component\": \"$(llvm-config --libs $component)\", # end components = { - "aggressiveinstcombine": "-lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "all": "-lLLVMXRay -lLLVMWindowsManifest -lLLVMTableGen -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMOrcJIT -lLLVMOrcError -lLLVMJITLink -lLLVMObjectYAML -lLLVMMIRParser -lLLVMMCA -lLLVMLTO -lLLVMPasses -lLLVMObjCARCOpts -lLLVMLineEditor -lLLVMLibDriver -lLLVMInterpreter -lLLVMFuzzMutate -lLLVMFrontendOpenMP -lLLVMMCJIT -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMDWARFLinker -lLLVMDlltoolDriver -lLLVMOption -lLLVMDebugInfoGSYM -lLLVMCoverage -lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoDWARF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMX86Desc -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMX86Utils -lLLVMX86Info -lLLVMSupport -lLLVMDemangle", - "all-targets": "-lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoDWARF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMX86Desc -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMX86Utils -lLLVMX86Info -lLLVMSupport -lLLVMDemangle", - "analysis": "-lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "aggressiveinstcombine": "-lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "all": "-lLLVMWindowsManifest -lLLVMXRay -lLLVMLibDriver -lLLVMDlltoolDriver -lLLVMCoverage -lLLVMLineEditor -lLLVMX86TargetMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMOrcJIT -lLLVMMCJIT -lLLVMJITLink -lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMDWP -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoGSYM -lLLVMOption -lLLVMObjectYAML -lLLVMMCA -lLLVMMCDisassembler -lLLVMLTO -lLLVMPasses -lLLVMCFGuard -lLLVMCoroutines -lLLVMObjCARCOpts -lLLVMipo -lLLVMVectorize -lLLVMLinker -lLLVMInstrumentation -lLLVMFrontendOpenMP -lLLVMFrontendOpenACC -lLLVMExtensions -lLLVMDWARFLinker -lLLVMGlobalISel -lLLVMMIRParser -lLLVMAsmPrinter -lLLVMDebugInfoMSF -lLLVMSelectionDAG -lLLVMCodeGen -lLLVMIRReader -lLLVMAsmParser -lLLVMInterfaceStub -lLLVMFileCheck -lLLVMFuzzMutate -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTableGen -lLLVMSupport -lLLVMDemangle", + "all-targets": "-lLLVMX86TargetMCA -lLLVMMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMSelectionDAG -lLLVMInstrumentation -lLLVMAsmPrinter -lLLVMDebugInfoMSF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "analysis": "-lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "asmparser": "-lLLVMAsmParser -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "asmprinter": "-lLLVMAsmPrinter -lLLVMDebugInfoDWARF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "asmprinter": "-lLLVMAsmPrinter -lLLVMDebugInfoMSF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "binaryformat": "-lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "bitreader": "-lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", "bitstreamreader": "-lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", - "bitwriter": "-lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "bitwriter": "-lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "cfguard": "-lLLVMCFGuard -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "codegen": "-lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "codegen": "-lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "core": "-lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "coroutines": "-lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMScalarOpts -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "coverage": "-lLLVMCoverage -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "debuginfocodeview": "-lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMSupport -lLLVMDemangle", - "debuginfodwarf": "-lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "debuginfogsym": "-lLLVMDebugInfoGSYM -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "coroutines": "-lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMFrontendOpenMP -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "coverage": "-lLLVMCoverage -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "debuginfocodeview": "-lLLVMDebugInfoCodeView -lLLVMSupport -lLLVMDemangle", + "debuginfodwarf": "-lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "debuginfogsym": "-lLLVMDebugInfoGSYM -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "debuginfomsf": "-lLLVMDebugInfoMSF -lLLVMSupport -lLLVMDemangle", - "debuginfopdb": "-lLLVMDebugInfoPDB -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", + "debuginfopdb": "-lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "demangle": "-lLLVMDemangle", - "dlltooldriver": "-lLLVMDlltoolDriver -lLLVMOption -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", - "dwarflinker": "-lLLVMDWARFLinker -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "engine": "-lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoDWARF -lLLVMCodeGen -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMX86Desc -lLLVMMCDisassembler -lLLVMX86Utils -lLLVMX86Info -lLLVMMCJIT -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMRuntimeDyld -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "executionengine": "-lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMRuntimeDyld -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "frontendopenmp": "-lLLVMFrontendOpenMP -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "fuzzmutate": "-lLLVMFuzzMutate -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "globalisel": "-lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "instcombine": "-lLLVMInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "instrumentation": "-lLLVMInstrumentation -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "interpreter": "-lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "ipo": "-lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMScalarOpts -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "dlltooldriver": "-lLLVMDlltoolDriver -lLLVMOption -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", + "dwarflinker": "-lLLVMDWARFLinker -lLLVMAsmPrinter -lLLVMDebugInfoMSF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "dwp": "-lLLVMDWP -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "engine": "-lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "executionengine": "-lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "extensions": "-lLLVMExtensions -lLLVMSupport -lLLVMDemangle", + "filecheck": "-lLLVMFileCheck", + "frontendopenacc": "-lLLVMFrontendOpenACC", + "frontendopenmp": "-lLLVMFrontendOpenMP -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "fuzzmutate": "-lLLVMFuzzMutate -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "globalisel": "-lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "instcombine": "-lLLVMInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "instrumentation": "-lLLVMInstrumentation -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "interfacestub": "-lLLVMInterfaceStub -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "interpreter": "-lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "ipo": "-lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMFrontendOpenMP -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "irreader": "-lLLVMIRReader -lLLVMBitReader -lLLVMAsmParser -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "jitlink": "-lLLVMJITLink -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "libdriver": "-lLLVMLibDriver -lLLVMOption -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "jitlink": "-lLLVMJITLink -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "libdriver": "-lLLVMLibDriver -lLLVMOption -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "lineeditor": "-lLLVMLineEditor -lLLVMSupport -lLLVMDemangle", - "linker": "-lLLVMLinker -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "lto": "-lLLVMLTO -lLLVMPasses -lLLVMObjCARCOpts -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "mc": "-lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "mca": "-lLLVMMCA -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "mcdisassembler": "-lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "mcjit": "-lLLVMMCJIT -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMRuntimeDyld -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "mcparser": "-lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "mirparser": "-lLLVMMIRParser -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMAsmParser -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "native": "-lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoDWARF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMX86Desc -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMX86Utils -lLLVMX86Info -lLLVMSupport -lLLVMDemangle", - "nativecodegen": "-lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Utils -lLLVMX86Info -lLLVMMCDisassembler -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoDWARF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "objcarcopts": "-lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "object": "-lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", - "objectyaml": "-lLLVMObjectYAML -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", + "linker": "-lLLVMLinker -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "lto": "-lLLVMLTO -lLLVMPasses -lLLVMCoroutines -lLLVMObjCARCOpts -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMFrontendOpenMP -lLLVMExtensions -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "mc": "-lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "mca": "-lLLVMMCA -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "mcdisassembler": "-lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "mcjit": "-lLLVMMCJIT -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "mcparser": "-lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "mirparser": "-lLLVMMIRParser -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMAsmParser -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "native": "-lLLVMX86TargetMCA -lLLVMMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMSelectionDAG -lLLVMInstrumentation -lLLVMAsmPrinter -lLLVMDebugInfoMSF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "nativecodegen": "-lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMSelectionDAG -lLLVMInstrumentation -lLLVMAsmPrinter -lLLVMDebugInfoMSF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "objcarcopts": "-lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "object": "-lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", + "objectyaml": "-lLLVMObjectYAML -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "option": "-lLLVMOption -lLLVMSupport -lLLVMDemangle", - "orcerror": "-lLLVMOrcError -lLLVMSupport -lLLVMDemangle", - "orcjit": "-lLLVMOrcJIT -lLLVMPasses -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMCodeGen -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMOrcError -lLLVMJITLink -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMRuntimeDyld -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "passes": "-lLLVMPasses -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "profiledata": "-lLLVMProfileData -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "orcjit": "-lLLVMOrcJIT -lLLVMPasses -lLLVMObjCARCOpts -lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMFrontendOpenMP -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMMCDisassembler -lLLVMJITLink -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "orcshared": "-lLLVMOrcShared -lLLVMSupport -lLLVMDemangle", + "orctargetprocess": "-lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMSupport -lLLVMDemangle", + "passes": "-lLLVMPasses -lLLVMTarget -lLLVMObjCARCOpts -lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMFrontendOpenMP -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "profiledata": "-lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "remarks": "-lLLVMRemarks -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", - "runtimedyld": "-lLLVMRuntimeDyld -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "scalaropts": "-lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "selectiondag": "-lLLVMSelectionDAG -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "runtimedyld": "-lLLVMRuntimeDyld -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "scalaropts": "-lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "selectiondag": "-lLLVMSelectionDAG -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "support": "-lLLVMSupport -lLLVMDemangle", - "symbolize": "-lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "symbolize": "-lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "tablegen": "-lLLVMTableGen -lLLVMSupport -lLLVMDemangle", - "target": "-lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "target": "-lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "textapi": "-lLLVMTextAPI -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "transformutils": "-lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "vectorize": "-lLLVMVectorize -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "transformutils": "-lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "vectorize": "-lLLVMVectorize -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "windowsmanifest": "-lLLVMWindowsManifest -lLLVMSupport -lLLVMDemangle", - "x86": "-lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoDWARF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMX86Desc -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMX86Utils -lLLVMX86Info -lLLVMSupport -lLLVMDemangle", - "x86asmparser": "-lLLVMX86AsmParser -lLLVMX86Desc -lLLVMX86Utils -lLLVMX86Info -lLLVMObject -lLLVMTextAPI -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMMCDisassembler -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "x86codegen": "-lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Utils -lLLVMX86Info -lLLVMMCDisassembler -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoDWARF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "x86desc": "-lLLVMX86Desc -lLLVMX86Utils -lLLVMX86Info -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "x86disassembler": "-lLLVMX86Disassembler -lLLVMX86Info -lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "x86info": "-lLLVMX86Info -lLLVMSupport -lLLVMDemangle", - "x86utils": "-lLLVMX86Utils -lLLVMSupport -lLLVMDemangle", - "xray": "-lLLVMXRay -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", + "x86": "-lLLVMX86TargetMCA -lLLVMMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMSelectionDAG -lLLVMInstrumentation -lLLVMAsmPrinter -lLLVMDebugInfoMSF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "x86asmparser": "-lLLVMX86AsmParser -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "x86codegen": "-lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMSelectionDAG -lLLVMInstrumentation -lLLVMAsmPrinter -lLLVMDebugInfoMSF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "x86desc": "-lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "x86disassembler": "-lLLVMX86Disassembler -lLLVMX86Info -lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "x86info": "-lLLVMX86Info -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "x86targetmca": "-lLLVMX86TargetMCA -lLLVMMCA -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "xray": "-lLLVMXRay -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", } import os @@ -107,7 +113,7 @@ for arg in sys.argv[1:]: if args == []: fail("no arguments") elif args == ["--version"]: - print("10.0.1") + print("14.0.0") elif args == ["--bindir"]: print(prefix + "/bin") elif args == ["--cppflags"]: From 7102c3f938c9dec20beb7a5ac45d4502c4b79a6d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 1 Apr 2022 17:43:19 -0600 Subject: [PATCH 0907/3180] Update rust --- recipes/rust/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index 91e94aea..be4f36c8 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -1,5 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/rust.git -BRANCH=redox-2021-06-15 +BRANCH=redox-2022-03-18 BUILD_DEPENDS=(llvm) DEPENDS="gcc cargo" PREPARE_COPY=0 From fec89f1acae7ca19990bbc12bddcd7c80b29d980 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 13 Apr 2022 09:49:35 -0600 Subject: [PATCH 0908/3180] drivers-initfs package for smaller size --- recipes/drivers-initfs/recipe.toml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 recipes/drivers-initfs/recipe.toml diff --git a/recipes/drivers-initfs/recipe.toml b/recipes/drivers-initfs/recipe.toml new file mode 100644 index 00000000..ce2e200b --- /dev/null +++ b/recipes/drivers-initfs/recipe.toml @@ -0,0 +1,30 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/drivers.git" + +[build] +template = "custom" +script = """ +BINS=( + acpid + ahcid + nvmed + pcid + ps2d + vesad +) + +mkdir -pv "${COOKBOOK_STAGE}/bin" +for bin in "${BINS[@]}" +do + "${COOKBOOK_CARGO}" rustc --release \ + --manifest-path "${COOKBOOK_SOURCE}/${bin}/Cargo.toml" \ + --bin "${bin}" \ + -- \ + -C opt-level=z \ + -C panic=abort + cp -v "target/${TARGET}/release/${bin}" "${COOKBOOK_STAGE}/bin" +done + +mkdir -pv "${COOKBOOK_STAGE}/etc/pcid" +cp -v "${COOKBOOK_SOURCE}/initfs.toml" "${COOKBOOK_STAGE}/etc/pcid/initfs.toml" +""" From 117d6e15ae2f6a0549fffd46c485634b12c0e0a1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 13 Apr 2022 13:57:48 -0600 Subject: [PATCH 0909/3180] Build shared libgcc --- recipes/gcc/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index c63ecb87..a14cfe89 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -35,7 +35,7 @@ function recipe_build { --with-sysroot=/ \ --with-build-sysroot="$sysroot" \ --enable-static \ - --disable-shared \ + --enable-shared \ --disable-dlopen \ --disable-nls \ --enable-languages=c,c++ \ From c9e203a258b5e4733f2560a78c65d4b572a7042b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 14 Apr 2022 08:18:47 -0600 Subject: [PATCH 0910/3180] Use redox coreutils df --- recipes/uutils/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/uutils/recipe.toml b/recipes/uutils/recipe.toml index 7c5214af..05964086 100644 --- a/recipes/uutils/recipe.toml +++ b/recipes/uutils/recipe.toml @@ -26,7 +26,7 @@ BINS=( cut date dd - df + #df not working, use redox coreutils dircolors dirname du From fb1809c84ec333b89705ff5eb25746389ca08d44 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 22 Jul 2022 14:57:40 -0600 Subject: [PATCH 0911/3180] Update PCRE link --- recipes/pcre/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/pcre/recipe.toml b/recipes/pcre/recipe.toml index 1aaa994a..68c4f718 100644 --- a/recipes/pcre/recipe.toml +++ b/recipes/pcre/recipe.toml @@ -1,5 +1,5 @@ [source] -tar = "https://iweb.dl.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.tar.bz2" +tar = "https://mirrors.gigenet.com/OSDN//sfnet/p/pc/pcre/pcre/8.42/pcre-8.42.tar.gz" patches = [ "redox.patch" ] From d35a769daf1a24f34fc7debf4b359245710e0b87 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 22 Jul 2022 21:29:28 -0600 Subject: [PATCH 0912/3180] Add retroarch --- recipes/retroarch/recipe.toml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 recipes/retroarch/recipe.toml diff --git a/recipes/retroarch/recipe.toml b/recipes/retroarch/recipe.toml new file mode 100644 index 00000000..4b8c0cfb --- /dev/null +++ b/recipes/retroarch/recipe.toml @@ -0,0 +1,24 @@ +[source] +git = "https://github.com/jackpot51/retroarch.git" + +[build] +template = "custom" +dependencies = [ + "liborbital", + "sdl", +] +script = """ +pushd "${COOKBOOK_SOURCE}" +./fetch-submodules.sh +popd + +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ + +COOKBOOK_CONFIGURE_FLAGS=( + --host="${TARGET}" + --prefix="/" + --disable-networking # missing ifaddrs.h + --disable-thread_storage # crash in pthread_setspecific called by sthread_tls_set +) +cookbook_configure +""" From 3c9432168c97a8d69901a2ee15800931a3fd74bd Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 23 Jul 2022 20:37:38 -0600 Subject: [PATCH 0913/3180] Re-enable llvmpipe, convert llvm and mesa to new recipe format --- recipes/gears/recipe.sh | 2 +- recipes/llvm/recipe.sh | 92 ---------------------------------------- recipes/llvm/recipe.toml | 59 ++++++++++++++++++++++++++ recipes/mesa/recipe.sh | 89 -------------------------------------- recipes/mesa/recipe.toml | 57 +++++++++++++++++++++++++ 5 files changed, 117 insertions(+), 182 deletions(-) delete mode 100644 recipes/llvm/recipe.sh create mode 100644 recipes/llvm/recipe.toml delete mode 100644 recipes/mesa/recipe.sh create mode 100644 recipes/mesa/recipe.toml diff --git a/recipes/gears/recipe.sh b/recipes/gears/recipe.sh index 9dba93e3..2b8dc8c9 100644 --- a/recipes/gears/recipe.sh +++ b/recipes/gears/recipe.sh @@ -1,4 +1,4 @@ -BUILD_DEPENDS=(liborbital mesa mesa_glu zlib) +BUILD_DEPENDS=(liborbital llvm mesa mesa_glu zlib) function recipe_version { printf "1.0.0" diff --git a/recipes/llvm/recipe.sh b/recipes/llvm/recipe.sh deleted file mode 100644 index fc0e4370..00000000 --- a/recipes/llvm/recipe.sh +++ /dev/null @@ -1,92 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/llvm-project.git -GIT_UPSTREAM=https://github.com/rust-lang/llvm-project.git -BRANCH=redox-2022-03-18 - -function recipe_version { - printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_prepare { - mkdir -p build - skip=1 -} - -function recipe_build { - native="$(realpath ../native.cmake)" - source="$(realpath ../source/llvm)" - sysroot="$(realpath ../sysroot)" - CMAKE_ARGS=( - -DCMAKE_AR="$(which "${AR}")" - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_CXX_FLAGS="--std=gnu++11" - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_RANLIB="$(which "${RANLIB}")" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_INSTALL_INCLUDEDIR="include" - -DCMAKE_INSTALL_OLDINCLUDEDIR="/include" - -DCMAKE_SYSTEM_NAME=Generic - -DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE=$native" - -DLLVM_BUILD_BENCHMARKS=Off - -DLLVM_BUILD_EXAMPLES=Off - -DLLVM_BUILD_TESTS=Off - -DLLVM_BUILD_UTILS=Off - -DLLVM_DEFAULT_TARGET_TRIPLE="$HOST" - -DLLVM_ENABLE_LTO=Off - -DLLVM_ENABLE_RTTI=On - -DLLVM_ENABLE_THREADS=On - -DLLVM_INCLUDE_BENCHMARKS=Off - -DLLVM_INCLUDE_EXAMPLES=Off - -DLLVM_INCLUDE_TESTS=Off - -DLLVM_INCLUDE_UTILS=Off - -DLLVM_OPTIMIZED_TABLEGEN=On - -DLLVM_TARGET_ARCH="$ARCH" - -DLLVM_TARGETS_TO_BUILD=X86 - -DLLVM_TOOL_LLVM_COV_BUILD=Off - -DLLVM_TOOL_LLVM_LTO_BUILD=Off - -DLLVM_TOOL_LLVM_LTO2_BUILD=Off - -DLLVM_TOOL_LLVM_PROFDATA_BUILD=Off - -DLLVM_TOOL_LLVM_RTDYLD_BUILD=Off - -DLLVM_TOOL_LLVM_XRAY_BUILD=Off - -DLLVM_TOOL_LLI_BUILD=Off - -DLLVM_TOOL_LTO_BUILD=Off - -DLLVM_TOOLS_INSTALL_DIR=bin - -DLLVM_UTILS_INSTALL_DIR=bin - -DPYTHON_EXECUTABLE="/usr/bin/python2" - -DUNIX=1 - -Wno-dev - ) - set -x - cmake "${CMAKE_ARGS[@]}" "$source" - "$REDOX_MAKE" -j$(nproc) - set +x - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - set -x - "$REDOX_MAKE" DESTDIR="$dest" install - mv -vT "$dest"/usr/include "$dest/include" - mv -vT "$dest"/usr/share "$dest/share" - rmdir -v "$dest"/usr - find "$dest"/bin -exec "$STRIP" -v {} ';' 2> /dev/null - set +x - skip=1 -} diff --git a/recipes/llvm/recipe.toml b/recipes/llvm/recipe.toml new file mode 100644 index 00000000..d7902daa --- /dev/null +++ b/recipes/llvm/recipe.toml @@ -0,0 +1,59 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/llvm-project.git" +upstream = "https://github.com/rust-lang/llvm-project.git" +branch = "redox-2022-03-18" + +[build] +template = "custom" +dependencies = [] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_AR="$(which "${TARGET}-ar")" + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_CXX_FLAGS="--std=gnu++11" + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_RANLIB="$(which "${TARGET}-ranlib")" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_INSTALL_INCLUDEDIR="include" + -DCMAKE_INSTALL_OLDINCLUDEDIR="/include" + -DCMAKE_SYSTEM_NAME=Generic + -DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE=$(realpath ../native.cmake)" + -DLLVM_BUILD_BENCHMARKS=Off + -DLLVM_BUILD_EXAMPLES=Off + -DLLVM_BUILD_TESTS=Off + -DLLVM_BUILD_UTILS=Off + -DLLVM_DEFAULT_TARGET_TRIPLE="${TARGET}" + -DLLVM_ENABLE_LTO=Off + -DLLVM_ENABLE_RTTI=On + -DLLVM_ENABLE_THREADS=On + -DLLVM_INCLUDE_BENCHMARKS=Off + -DLLVM_INCLUDE_EXAMPLES=Off + -DLLVM_INCLUDE_TESTS=Off + -DLLVM_INCLUDE_UTILS=Off + -DLLVM_OPTIMIZED_TABLEGEN=On + -DLLVM_TARGET_ARCH="$(echo "${TARGET}" | cut -d - -f1)" + -DLLVM_TARGETS_TO_BUILD=X86 # TODO: get from TARGET + -DLLVM_TOOL_LLVM_COV_BUILD=Off + -DLLVM_TOOL_LLVM_LTO_BUILD=Off + -DLLVM_TOOL_LLVM_LTO2_BUILD=Off + -DLLVM_TOOL_LLVM_PROFDATA_BUILD=Off + -DLLVM_TOOL_LLVM_RTDYLD_BUILD=Off + -DLLVM_TOOL_LLVM_XRAY_BUILD=Off + -DLLVM_TOOL_LLI_BUILD=Off + -DLLVM_TOOL_LTO_BUILD=Off + -DLLVM_TOOLS_INSTALL_DIR=bin + -DLLVM_UTILS_INSTALL_DIR=bin + -DPYTHON_EXECUTABLE="/usr/bin/python2" + -DUNIX=1 + -Wno-dev + "${COOKBOOK_SOURCE}/llvm" +) +set -x +cookbook_configure +mv -vT "${COOKBOOK_STAGE}"/usr/include "${COOKBOOK_STAGE}/include" +mv -vT "${COOKBOOK_STAGE}"/usr/share "${COOKBOOK_STAGE}/share" +rmdir -v "${COOKBOOK_STAGE}"/usr +set +x +""" diff --git a/recipes/mesa/recipe.sh b/recipes/mesa/recipe.sh deleted file mode 100644 index 22a33f86..00000000 --- a/recipes/mesa/recipe.sh +++ /dev/null @@ -1,89 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/mesa.git -GIT_UPSTREAM=https://gitlab.freedesktop.org/mesa/mesa -BRANCH=redox -BUILD_DEPENDS=(expat zlib) - -function recipe_version { - printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1" - export CPPFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1" - export LDFLAGS="-L$sysroot/lib --static" - #export LLVM_CONFIG="x86_64-unknown-redox-llvm-config" - - # TODO: Fix this annoying shite - echo "[binaries]" > cross_file.txt - echo "c = '${CC}'" >> cross_file.txt - echo "cpp = '${CXX}'" >> cross_file.txt - echo "ar = '${AR}'" >> cross_file.txt - echo "strip = '${STRIP}'" >> cross_file.txt - echo "pkgconfig = '${PKG_CONFIG}'" >> cross_file.txt - #echo "llvm-config = '${TARGET}-llvm-config'" >> cross_file.txt - - echo "[host_machine]" >> cross_file.txt - echo "system = 'redox'" >> cross_file.txt - echo "cpu_family = 'x86_64'" >> cross_file.txt - echo "cpu = 'x86_64'" >> cross_file.txt - echo "endian = 'little'" >> cross_file.txt - - echo "[paths]" >> cross_file.txt - echo "prefix = '/'" >> cross_file.txt - echo "libdir = 'lib'" >> cross_file.txt - echo "bindir = 'bin'" >> cross_file.txt - - unset AR - unset AS - unset CC - unset CXX - unset LD - unset NM - unset OBJCOPY - unset OBJDUMP - unset PKG_CONFIG - unset PKG_CONFIG_PATH - unset RANLIB - unset READELF - unset STRIP - - meson . _build \ - --cross-file cross_file.txt \ - --buildtype release \ - --strip \ - -Ddefault_library=static \ - -Dglx=disabled \ - -Dllvm=disabled \ - -Dosmesa=gallium \ - -Dplatforms= \ - -Dshader-cache=disabled \ - -Dshared-llvm=disabled \ - -Dshared-glapi=disabled - - ninja -C _build -v - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - DESTDIR="$dest" ninja -C _build install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/mesa/recipe.toml b/recipes/mesa/recipe.toml new file mode 100644 index 00000000..2366d4e3 --- /dev/null +++ b/recipes/mesa/recipe.toml @@ -0,0 +1,57 @@ +#TODO: TEST +[source] +git = "https://gitlab.redox-os.org/redox-os/mesa.git" +upstream = "https://gitlab.freedesktop.org/mesa/mesa" +branch = "redox" + +[build] +template = "custom" +dependencies = [ + "expat", + "llvm", + "zlib", +] +script = """ +export CFLAGS="-I${COOKBOOK_SYSROOT}/include -DHAVE_PTHREAD=1" +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include -DHAVE_PTHREAD=1" +export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib --static" +export LLVM_CONFIG="${TARGET}-llvm-config" + +# TODO: Fix this annoying shite +echo "[binaries]" > cross_file.txt +echo "c = '${TARGET}-gcc'" >> cross_file.txt +echo "cpp = '${TARGET}-g++'" >> cross_file.txt +echo "ar = '${TARGET}-ar'" >> cross_file.txt +echo "strip = '${TARGET}-strip'" >> cross_file.txt +echo "pkgconfig = '${TARGET}-pkg-config'" >> cross_file.txt +echo "llvm-config = '${TARGET}-llvm-config'" >> cross_file.txt + +echo "[host_machine]" >> cross_file.txt +echo "system = 'redox'" >> cross_file.txt +echo "cpu_family = 'x86_64'" >> cross_file.txt +echo "cpu = 'x86_64'" >> cross_file.txt +echo "endian = 'little'" >> cross_file.txt + +echo "[paths]" >> cross_file.txt +echo "prefix = '/'" >> cross_file.txt +echo "libdir = 'lib'" >> cross_file.txt +echo "bindir = 'bin'" >> cross_file.txt + +meson "${COOKBOOK_SOURCE}" . \ + --cross-file cross_file.txt \ + --buildtype release \ + --strip \ + -Ddefault_library=static \ + -Dglx=disabled \ + -Dllvm=enabled \ + -Dosmesa=gallium \ + -Dplatforms= \ + -Dshader-cache=disabled \ + -Dshared-llvm=disabled \ + -Dshared-glapi=disabled +ninja -v +DESTDIR="${COOKBOOK_STAGE}" ninja install +# Hack to add LLVM libs +#TODO: only add necessary LLVM libs, not all of them +sed -i "s/ -lOSMesa / -lOSMesa $("${TARGET}-llvm-config" --libs) /" "${COOKBOOK_STAGE}/lib/pkgconfig/osmesa.pc" +""" From 7ad783d5cc50ddfee856264b607404a74d0c47f8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 23 Jul 2022 20:40:02 -0600 Subject: [PATCH 0914/3180] Convert sdl2 to new recipe format --- recipes/sdl2/recipe.sh | 54 ---------------------------------------- recipes/sdl2/recipe.toml | 28 +++++++++++++++++++++ 2 files changed, 28 insertions(+), 54 deletions(-) delete mode 100644 recipes/sdl2/recipe.sh create mode 100644 recipes/sdl2/recipe.toml diff --git a/recipes/sdl2/recipe.sh b/recipes/sdl2/recipe.sh deleted file mode 100644 index 0bd50238..00000000 --- a/recipes/sdl2/recipe.sh +++ /dev/null @@ -1,54 +0,0 @@ -VERSION=2.0.9 -GIT=https://gitlab.redox-os.org/fabiao/sdl2-src.git -BUILD_DEPENDS=(liborbital mesa) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib" - ./autogen.sh - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix=/ \ - --disable-shared \ - --disable-pulseaudio \ - --disable-video-x11 \ - --disable-loadso \ - --disable-sdl-dlopen \ - --enable-threads \ - --enable-audio \ - --enable-dummyaudio \ - --enable-video-orbital \ - --enable-redoxaudio \ - --enable-cdrom - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/sdl2/recipe.toml b/recipes/sdl2/recipe.toml new file mode 100644 index 00000000..db5f10fb --- /dev/null +++ b/recipes/sdl2/recipe.toml @@ -0,0 +1,28 @@ +#TODO: TEST +[source] +git = "https://gitlab.redox-os.org/fabiao/sdl2-src.git" + +[build] +template = "custom" +dependencies = [ + "liborbital", + "mesa", +] +script = """ +COOKBOOK_CONFIGURE_FLAGS=( + --host="${TARGET}" + --prefix="/" + --disable-shared + --disable-pulseaudio + --disable-video-x11 + --disable-loadso + --disable-sdl-dlopen + --enable-threads + --enable-audio + --enable-dummyaudio + --enable-video-orbital + --enable-redoxaudio + --enable-cdrom +) +cookbook_configure +""" From e12f66fb00bab6a816f31f4cabedfbaff3ff59ea Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 23 Jul 2022 20:51:22 -0600 Subject: [PATCH 0915/3180] Convert sdl2_image to new recipe format --- recipes/sdl2_image/recipe.sh | 40 ---------------------------------- recipes/sdl2_image/recipe.toml | 27 +++++++++++++++++++++++ 2 files changed, 27 insertions(+), 40 deletions(-) delete mode 100644 recipes/sdl2_image/recipe.sh create mode 100644 recipes/sdl2_image/recipe.toml diff --git a/recipes/sdl2_image/recipe.sh b/recipes/sdl2_image/recipe.sh deleted file mode 100644 index ade62418..00000000 --- a/recipes/sdl2_image/recipe.sh +++ /dev/null @@ -1,40 +0,0 @@ -VERSION=2.0.4 -TAR=https://www.libsdl.org/projects/SDL_image/release/SDL2_image-$VERSION.tar.gz -BUILD_DEPENDS=(sdl2 liborbital mesa mesa mesa_glu libiconv libjpeg libpng zlib) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib" - export SDL_LIBS="-lSDL2 -lorbital $("${PKG_CONFIG}" --libs glu) -lz -lm -lpthread -lstdc++" - ./configure --prefix=/ --build=${BUILD} --host=${HOST} --disable-shared --disable-sdltest --enable-png --enable-jpg - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/sdl2_image/recipe.toml b/recipes/sdl2_image/recipe.toml new file mode 100644 index 00000000..1f87ce4c --- /dev/null +++ b/recipes/sdl2_image/recipe.toml @@ -0,0 +1,27 @@ +[source] +tar = "https://www.libsdl.org/projects/SDL_image/release/SDL2_image-2.0.4.tar.gz" + +[build] +template = "custom" +dependencies = [ + "libjpeg", + "liborbital", + "libpng", + "llvm", + "mesa", + "sdl2", + "zlib", +] +script = """ +export SDL_LIBS="-lSDL2 -lorbital $("${TARGET}-pkg-config" --libs osmesa) -lstdc++" +COOKBOOK_CONFIGURE_FLAGS=( + --prefix=/ + --host="${TARGET}" + --disable-shared + --disable-sdltest + --enable-png + --enable-jpg +) +set -x +cookbook_configure +""" From 2b41754db71610a46a11aa0f00c8d9c10ae30f43 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 23 Jul 2022 20:55:12 -0600 Subject: [PATCH 0916/3180] Add llvm dependency to sdl2_mixer --- recipes/sdl2_mixer/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/sdl2_mixer/recipe.sh b/recipes/sdl2_mixer/recipe.sh index 43860de6..41f101c5 100644 --- a/recipes/sdl2_mixer/recipe.sh +++ b/recipes/sdl2_mixer/recipe.sh @@ -1,6 +1,6 @@ VERSION=2.0.4 TAR=https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-$VERSION.tar.gz -BUILD_DEPENDS=(sdl2 liborbital mesa mesa_glu zlib libogg libvorbis) +BUILD_DEPENDS=(sdl2 liborbital llvm mesa zlib libogg libvorbis) function recipe_version { echo "$VERSION" @@ -16,7 +16,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" - export SDL_LIBS="-lSDL2 -lorbital $("${PKG_CONFIG}" --libs glu) -lvorbis -logg -lz -lm -lpthread -lstdc++" + export SDL_LIBS="-lSDL2 -lorbital $("${TARGET}-pkg-config" --libs osmesa) -lvorbis -logg -lz -lm -lpthread -lstdc++" ./autogen.sh ./configure \ --prefix=/ \ From 94943ee0b0a4aea10008e19714d5bd8e659e3942 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 23 Jul 2022 20:56:13 -0600 Subject: [PATCH 0917/3180] Add llvm dependency to sdl2_ttf --- recipes/sdl2_ttf/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/sdl2_ttf/recipe.sh b/recipes/sdl2_ttf/recipe.sh index d9688ffc..75c6e2d1 100644 --- a/recipes/sdl2_ttf/recipe.sh +++ b/recipes/sdl2_ttf/recipe.sh @@ -1,6 +1,6 @@ VERSION=2.0.15 TAR=https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-$VERSION.tar.gz -BUILD_DEPENDS=(sdl2 liborbital mesa mesa_glu freetype libpng zlib) +BUILD_DEPENDS=(sdl2 liborbital llvm mesa freetype libpng zlib) function recipe_version { echo "$VERSION" @@ -16,7 +16,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" export LDFLAGS="-L$sysroot/lib" - export SDL_LIBS="-lSDL2 -lorbital $("${PKG_CONFIG}" --libs glu) -lz -lm -lpthread -lstdc++" + export SDL_LIBS="-lSDL2 -lorbital $("${PKG_CONFIG}" --libs osmesa) -lz -lm -lpthread -lstdc++" ./autogen.sh ./configure --prefix=/ --build=${BUILD} --host=${HOST} --enable-opengl --disable-shared --disable-sdltest "$REDOX_MAKE" -j"$($NPROC)" From 11bb3d7779d6866e7c3fd884df4d381656bbd1b7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 23 Jul 2022 20:59:41 -0600 Subject: [PATCH 0918/3180] Add llvm dependency to sdl2_gears --- recipes/sdl2_gears/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/sdl2_gears/recipe.sh b/recipes/sdl2_gears/recipe.sh index d300b48b..30296bbc 100644 --- a/recipes/sdl2_gears/recipe.sh +++ b/recipes/sdl2_gears/recipe.sh @@ -1,4 +1,4 @@ -BUILD_DEPENDS=(sdl2_image sdl2_mixer sdl2_ttf sdl2 liborbital mesa mesa_glu freetype libjpeg libpng libogg libvorbis zlib) +BUILD_DEPENDS=(sdl2_image sdl2_mixer sdl2_ttf sdl2 liborbital llvm mesa freetype libjpeg libpng libogg libvorbis zlib) function recipe_version { printf "1.0.0" @@ -21,7 +21,7 @@ function recipe_prepare { function recipe_build { sysroot="$(realpath ../sysroot)" set -x - "${CXX}" -O2 -I "$sysroot/include" -L "$sysroot/lib" gears.c -o sdl2_gears -static -lSDL2_image -lSDL2_mixer -lSDL2_ttf -lSDL2 -lorbital $("${PKG_CONFIG}" --libs glu) -lfreetype -lpng -ljpeg -lvorbisfile -lvorbis -logg -lz + "${CXX}" -O2 -I "$sysroot/include" -L "$sysroot/lib" gears.c -o sdl2_gears -static -lSDL2_image -lSDL2_mixer -lSDL2_ttf -lSDL2 -lorbital $("${PKG_CONFIG}" --libs osmesa) -lfreetype -lpng -ljpeg -lvorbisfile -lvorbis -logg -lz set +x skip=1 } From 72ab989775f8b7b88ee62f15d6a2e2cce463d912 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 23 Jul 2022 21:06:16 -0600 Subject: [PATCH 0919/3180] Switch retroarch to sdl2 --- recipes/retroarch/recipe.toml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/recipes/retroarch/recipe.toml b/recipes/retroarch/recipe.toml index 4b8c0cfb..02a0e579 100644 --- a/recipes/retroarch/recipe.toml +++ b/recipes/retroarch/recipe.toml @@ -5,7 +5,10 @@ git = "https://github.com/jackpot51/retroarch.git" template = "custom" dependencies = [ "liborbital", - "sdl", + "llvm", + "mesa", + "sdl2", + "zlib", ] script = """ pushd "${COOKBOOK_SOURCE}" @@ -17,8 +20,11 @@ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ COOKBOOK_CONFIGURE_FLAGS=( --host="${TARGET}" --prefix="/" + --disable-builtinzlib --disable-networking # missing ifaddrs.h --disable-thread_storage # crash in pthread_setspecific called by sthread_tls_set + --enable-opengl + --enable-zlib ) cookbook_configure """ From 17aca2f42e0ea60d72dcc00404376da209d2da5b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 23 Jul 2022 21:28:16 -0600 Subject: [PATCH 0920/3180] Add retroarch networking support --- recipes/retroarch/recipe.toml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/recipes/retroarch/recipe.toml b/recipes/retroarch/recipe.toml index 02a0e579..e878cb24 100644 --- a/recipes/retroarch/recipe.toml +++ b/recipes/retroarch/recipe.toml @@ -7,6 +7,7 @@ dependencies = [ "liborbital", "llvm", "mesa", + "openssl", "sdl2", "zlib", ] @@ -20,10 +21,13 @@ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ COOKBOOK_CONFIGURE_FLAGS=( --host="${TARGET}" --prefix="/" - --disable-builtinzlib - --disable-networking # missing ifaddrs.h + --disable-builtinzlib # conflicts with zlib + --disable-discord # does not link + --disable-netplaydiscovery # missing ifaddrs.h --disable-thread_storage # crash in pthread_setspecific called by sthread_tls_set --enable-opengl + --enable-sdl2 + --enable-ssl --enable-zlib ) cookbook_configure From bce519a90b1e39397d9c5a321fc4dc34a8808083 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 24 Jul 2022 08:59:45 -0600 Subject: [PATCH 0921/3180] Update kernel recipe for new initfs format --- recipes/kernel/init.rc | 16 ----------- recipes/kernel/recipe.sh | 57 -------------------------------------- recipes/kernel/recipe.toml | 35 +++++++++++++++++++++++ 3 files changed, 35 insertions(+), 73 deletions(-) delete mode 100644 recipes/kernel/init.rc delete mode 100644 recipes/kernel/recipe.sh create mode 100644 recipes/kernel/recipe.toml diff --git a/recipes/kernel/init.rc b/recipes/kernel/init.rc deleted file mode 100644 index bfbcad7a..00000000 --- a/recipes/kernel/init.rc +++ /dev/null @@ -1,16 +0,0 @@ -export PATH /bin -export TMPDIR /tmp -nulld -zerod -randd -vesad T T G -logd debug: display:1 -stdio log: -ps2d us -ramfs logging -acpid -pcid /etc/pcid/initfs.toml -redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK -cd file: -export PATH file:/bin -run.d /etc/init.d diff --git a/recipes/kernel/recipe.sh b/recipes/kernel/recipe.sh deleted file mode 100644 index 63a3a21b..00000000 --- a/recipes/kernel/recipe.sh +++ /dev/null @@ -1,57 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/kernel.git -BUILD_DEPENDS=( - drivers - init - logd - nulld - ramfs - randd - redoxfs - zerod -) - -function recipe_build { - export INITFS_FOLDER="$(realpath ../sysroot)" - mkdir -pv "$INITFS_FOLDER/etc" - cp -v "$(realpath ../init.rc)" "$INITFS_FOLDER/etc/init.rc" - cargo rustc \ - --lib \ - --target "${ARCH}-unknown-kernel" \ - --release \ - -Z build-std=core,alloc \ - -- \ - -C soft-float \ - -C debuginfo=2 \ - -C lto \ - --emit link=libkernel.a - ../kernel_ld.sh "${LD}" \ - --gc-sections \ - -z max-page-size=0x1000 \ - -T "linkers/${ARCH}.ld" \ - -o kernel \ - libkernel.a - "${OBJCOPY}" \ - --only-keep-debug \ - kernel \ - kernel.sym - "${OBJCOPY}" \ - --strip-debug \ - kernel - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - cp -v kernel "$dest" - skip=1 -} diff --git a/recipes/kernel/recipe.toml b/recipes/kernel/recipe.toml new file mode 100644 index 00000000..330cd115 --- /dev/null +++ b/recipes/kernel/recipe.toml @@ -0,0 +1,35 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/kernel.git" + +[build] +template = "custom" +script = """ +export RUST_TARGET_PATH="${COOKBOOK_SOURCE}/targets" +ARCH="$(echo "${TARGET}" | cut -d - -f1)" +cargo rustc \ + --lib \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --target "${COOKBOOK_SOURCE}/targets/${ARCH}-unknown-kernel.json" \ + --release \ + -Z build-std=core,alloc \ + -- \ + -C soft-float \ + -C debuginfo=2 \ + -C lto \ + --emit link="${PWD}/libkernel.a" +"${COOKBOOK_RECIPE}/kernel_ld.sh" "${TARGET}-ld" \ + --gc-sections \ + -z max-page-size=0x1000 \ + -T "${COOKBOOK_SOURCE}/linkers/${ARCH}.ld" \ + -o kernel.all \ + libkernel.a +"${TARGET}-objcopy" \ + --only-keep-debug \ + kernel.all \ + kernel.sym +"${TARGET}-objcopy" \ + --strip-debug \ + kernel.all \ + kernel +cp -v kernel "${COOKBOOK_STAGE}" +""" From f0f5a079ce2e4a7300c3a49883b08cfe38e29a67 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 24 Jul 2022 09:28:50 -0600 Subject: [PATCH 0922/3180] Add llvm build dependency to neverball --- recipes/neverball/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/neverball/recipe.sh b/recipes/neverball/recipe.sh index 5e3bab5a..859b63e6 100644 --- a/recipes/neverball/recipe.sh +++ b/recipes/neverball/recipe.sh @@ -1,6 +1,6 @@ VERSION=1.6.0 TAR="https://neverball.org/neverball-${VERSION}.tar.gz" -BUILD_DEPENDS=(freetype libjpeg libogg liborbital libpng libvorbis mesa sdl2 sdl2_ttf zlib) +BUILD_DEPENDS=(freetype libjpeg libogg liborbital libpng libvorbis llvm mesa sdl2 sdl2_ttf zlib) function recipe_version { echo "$VERSION" From 8630d48dc4f0fc3dc7fe6bfc6d1d35935c925319 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 24 Jul 2022 11:15:09 -0600 Subject: [PATCH 0923/3180] Add more llvm dependencies --- recipes/osdemo/recipe.sh | 2 +- recipes/vvvvvv/recipe.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/osdemo/recipe.sh b/recipes/osdemo/recipe.sh index fa797cd5..29917025 100644 --- a/recipes/osdemo/recipe.sh +++ b/recipes/osdemo/recipe.sh @@ -1,4 +1,4 @@ -BUILD_DEPENDS=(liborbital mesa mesa_glu zlib) +BUILD_DEPENDS=(liborbital llvm mesa mesa_glu zlib) function recipe_version { printf "1.0.0" diff --git a/recipes/vvvvvv/recipe.sh b/recipes/vvvvvv/recipe.sh index 4b024ed4..cd1e3f64 100644 --- a/recipes/vvvvvv/recipe.sh +++ b/recipes/vvvvvv/recipe.sh @@ -2,7 +2,7 @@ VERSION=2.0 GIT=https://github.com/xTibor/VVVVVV BRANCH=redox GIT_UPSTREAM=https://github.com/TerryCavanagh/VVVVVV -BUILD_DEPENDS=(sdl2_image sdl2_mixer sdl2 liborbital mesa mesa_glu zlib libogg libvorbis) +BUILD_DEPENDS=(sdl2_image sdl2_mixer sdl2 liborbital llvm mesa mesa_glu zlib libogg libvorbis) function recipe_version { printf "1.0.0" From ffa76b412803738b1d358fe2cf2c21804855a2fe Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 26 Jul 2022 08:25:21 -0600 Subject: [PATCH 0924/3180] Add jeremy recipe --- recipes/jeremy/recipe.toml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 recipes/jeremy/recipe.toml diff --git a/recipes/jeremy/recipe.toml b/recipes/jeremy/recipe.toml new file mode 100644 index 00000000..8fa44be7 --- /dev/null +++ b/recipes/jeremy/recipe.toml @@ -0,0 +1,10 @@ +# This is a private repository that sets up my user +[source] +git = "https://gitlab.redox-os.org/jackpot51/jeremy.git" + +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}/home/user" +cp -rv "${COOKBOOK_SOURCE}/"* "${COOKBOOK_STAGE}/home/user" +""" From 8247c8830d5e74a2079629c9bc44ab6513079f4a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 26 Jul 2022 12:16:12 -0600 Subject: [PATCH 0925/3180] Update cookbook Cargo.lock --- Cargo.lock | 276 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 168 insertions(+), 108 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0549939e..2d6fe02a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -106,9 +106,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" -version = "0.3.64" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e121dee8023ce33ab248d9ce1493df03c3b38a659b240096fcbd7048ff9c31f" +checksum = "cab84319d616cfb654d03394f38ab7e6f0919e181b1b57e1fd15e7fb4077d9a7" dependencies = [ "addr2line", "cc", @@ -241,9 +241,9 @@ checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" [[package]] name = "bytecount" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72feb31ffc86498dacdbd0fcebb56138e7177a8cc5cea4516031d15ae85a742e" +checksum = "2c676a478f63e9fa2dd5368a42f28bba0d6c560b775f38583c8bbaa7fcd67c9c" [[package]] name = "byteorder" @@ -319,9 +319,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.4" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53" +checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -329,9 +329,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" +checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" dependencies = [ "cfg-if 1.0.0", "crossbeam-epoch", @@ -340,33 +340,33 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.8" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c" +checksum = "045ebe27666471bb549370b4b0b3e51b07f56325befa4284db65fc89c02511b1" dependencies = [ "autocfg", "cfg-if 1.0.0", "crossbeam-utils", - "lazy_static", "memoffset", + "once_cell", "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.8" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38" +checksum = "51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bc" dependencies = [ "cfg-if 1.0.0", - "lazy_static", + "once_cell", ] [[package]] name = "crypto-common" -version = "0.1.3" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57952ca27b5e3606ff4dd79b0020231aaf9d6aa76dc05fd30137538c50bd3ce8" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array 0.14.5", "typenum", @@ -443,9 +443,9 @@ dependencies = [ [[package]] name = "either" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" +checksum = "3f107b87b6afc2a64fd13cac55fe06d6c8859f12d4b14cbcdd2c67d0976781be" [[package]] name = "env_logger" @@ -455,7 +455,7 @@ checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3" dependencies = [ "atty", "humantime", - "log 0.4.16", + "log 0.4.17", "regex", "termcolor", ] @@ -508,23 +508,23 @@ dependencies = [ [[package]] name = "fastrand" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf" +checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" dependencies = [ "instant", ] [[package]] name = "filetime" -version = "0.2.15" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "975ccf83d8d9d0d84682850a38c8169027be83368805971cc4f238c2b245bc98" +checksum = "e94a7bbaa59354bc20dd75b67f23e2797b4490e9d6928203fb105c79e448c86c" dependencies = [ "cfg-if 1.0.0", "libc", "redox_syscall", - "winapi", + "windows-sys", ] [[package]] @@ -584,20 +584,20 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad" +checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" dependencies = [ "cfg-if 1.0.0", "libc", - "wasi 0.10.2+wasi-snapshot-preview1", + "wasi 0.11.0+wasi-snapshot-preview1", ] [[package]] name = "gimli" -version = "0.26.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" +checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" [[package]] name = "hermit-abi" @@ -619,9 +619,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.6.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9100414882e15fb7feccb4897e5f0ff0ff1ca7d1a86a23208ada4d7a18e6c6c4" +checksum = "496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04c" [[package]] name = "humantime" @@ -691,9 +691,9 @@ dependencies = [ [[package]] name = "keccak" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" +checksum = "f9b7d56ba4a8344d6be9729995e6b06f928af29998cdf79fe390cbf6b1fee838" [[package]] name = "language-tags" @@ -709,9 +709,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.121" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efaa7b300f3b5fe8eb6bf21ce3895e1751d9665086af2d64b42f19701015ff4f" +checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" [[package]] name = "libflate" @@ -743,14 +743,14 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" dependencies = [ - "log 0.4.16", + "log 0.4.17", ] [[package]] name = "log" -version = "0.4.16" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6389c490849ff5bc16be905ae24bc913a9c8892e19b2341dbc175e14c341c2b8" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" dependencies = [ "cfg-if 1.0.0", ] @@ -763,9 +763,9 @@ checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" [[package]] name = "memchr" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memoffset" @@ -778,13 +778,13 @@ dependencies = [ [[package]] name = "memsec" -version = "0.6.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af4f95d8737f4ffafbd1fb3c703cdc898868a244a59786793cba0520ebdcbdd" +checksum = "9ac78937f19a0c7807e45a931eac41f766f210173ec664ec046d58e6d388a5cb" dependencies = [ - "getrandom 0.1.16", + "getrandom 0.2.7", "libc", - "winapi", + "windows-sys", ] [[package]] @@ -798,12 +798,11 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.4.4" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc" dependencies = [ "adler", - "autocfg", ] [[package]] @@ -824,13 +823,19 @@ checksum = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" [[package]] name = "object" -version = "0.27.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" +checksum = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53" dependencies = [ "memchr", ] +[[package]] +name = "once_cell" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1" + [[package]] name = "opaque-debug" version = "0.2.3" @@ -894,9 +899,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" [[package]] name = "pkgar" @@ -941,7 +946,7 @@ dependencies = [ "serde", "sodiumoxide", "termion", - "toml 0.5.8", + "toml 0.5.9", "user-error", ] @@ -983,11 +988,11 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.36" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" +checksum = "c278e965f1d8cf32d6e0e96de3d3e79712178ae67986d9cf9151f51e95aac89b" dependencies = [ - "unicode-xid", + "unicode-ident", ] [[package]] @@ -1002,9 +1007,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.17" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "632d02bff7f874a36f33ea8bb416cd484b90cc66c1194b1a1110d067a7013f58" +checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804" dependencies = [ "proc-macro2", ] @@ -1074,14 +1079,14 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" dependencies = [ - "getrandom 0.2.6", + "getrandom 0.2.7", ] [[package]] name = "rayon" -version = "1.5.1" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" +checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" dependencies = [ "autocfg", "crossbeam-deque", @@ -1091,14 +1096,13 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.9.1" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" +checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f" dependencies = [ "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "lazy_static", "num_cpus", ] @@ -1123,7 +1127,7 @@ dependencies = [ "serde", "sha2", "termion", - "toml 0.5.8", + "toml 0.5.9", "walkdir", ] @@ -1146,7 +1150,7 @@ dependencies = [ "serde", "serde_derive", "termion", - "toml 0.5.8", + "toml 0.5.9", ] [[package]] @@ -1192,9 +1196,9 @@ checksum = "c4e4404b4e54e59e7bb5f5236b61d8e822c2a77b2e955be8072002ff7ff8d69c" [[package]] name = "redox_syscall" -version = "0.2.13" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" +checksum = "534cfe58d6a18cc17120fbf4635d53d14691c1fe4d951064df9bd326178d7d5a" dependencies = [ "bitflags", ] @@ -1214,16 +1218,16 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.6", + "getrandom 0.2.7", "redox_syscall", "thiserror", ] [[package]] name = "redoxer" -version = "0.2.25" +version = "0.2.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62413f6255f2ba2489b1276bf9ac84970490a4f694d02df48b958af65ce2072a" +checksum = "08faba3230278adf0e4e5227ee61627f1bdcd7662450045df02fce0cb58cc22f" dependencies = [ "dirs 2.0.2", "proc-mounts", @@ -1231,7 +1235,7 @@ dependencies = [ "redox_syscall", "redoxfs", "tempfile", - "toml 0.5.8", + "toml 0.5.9", ] [[package]] @@ -1245,9 +1249,9 @@ dependencies = [ "base64ct", "env_logger", "fuse", - "getrandom 0.2.6", + "getrandom 0.2.7", "libc", - "log 0.4.16", + "log 0.4.17", "redox_simple_endian", "redox_syscall", "seahash", @@ -1258,9 +1262,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.5.5" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286" +checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" dependencies = [ "aho-corasick", "memchr", @@ -1269,9 +1273,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.25" +version = "0.6.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" +checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" [[package]] name = "remove_dir_all" @@ -1325,7 +1329,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "942b71057b31981152970d57399c25f72e27a6ee0d207a669d8304cabf44705b" dependencies = [ "base64 0.9.3", - "log 0.4.16", + "log 0.4.17", "ring", "sct", "untrusted", @@ -1334,9 +1338,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f" +checksum = "24c8ad4f0c00e1eb5bc7614d236a7f1300e3dbd76b68cac8e06fb00b015ad8d8" [[package]] name = "safemem" @@ -1387,18 +1391,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.136" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" +checksum = "fc855a42c7967b7c369eb5860f7164ef1f6f81c20c7cc1141f2a604e18723b03" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.136" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" +checksum = "6f2122636b9fe3b81f1cb25099fcf2d3f542cdb1d45940d56c713158884a05da" dependencies = [ "proc-macro2", "quote", @@ -1453,13 +1457,13 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.90" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "704df27628939572cd88d33f171cd6f896f4eaca85252c6e0a72d8d8287ee86f" +checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", ] [[package]] @@ -1537,18 +1541,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.30" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" +checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.30" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" +checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" dependencies = [ "proc-macro2", "quote", @@ -1563,19 +1567,20 @@ checksum = "bcbb6aa301e5d3b0b5ef639c9a9c7e2f1c944f177b460c04dc24c69b1fa2bd99" [[package]] name = "time" -version = "0.1.43" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" +checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" dependencies = [ "libc", + "wasi 0.10.0+wasi-snapshot-preview1", "winapi", ] [[package]] name = "tinyvec" -version = "1.5.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" dependencies = [ "tinyvec_macros", ] @@ -1597,9 +1602,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.5.8" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" dependencies = [ "serde", ] @@ -1633,15 +1638,21 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" + +[[package]] +name = "unicode-ident" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15c61ba63f9235225a22310255a29b806b907c9b8c964bcbd0a2c70f3f2deea7" [[package]] name = "unicode-normalization" -version = "0.1.19" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" +checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6" dependencies = [ "tinyvec", ] @@ -1654,9 +1665,9 @@ checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" [[package]] name = "unicode-xid" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04" [[package]] name = "untrusted" @@ -1733,9 +1744,15 @@ checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" [[package]] name = "wasi" -version = "0.10.2+wasi-snapshot-preview1" +version = "0.10.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "webpki" @@ -1789,10 +1806,53 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "xattr" -version = "0.2.2" +name = "windows-sys" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +dependencies = [ + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" + +[[package]] +name = "windows_i686_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" + +[[package]] +name = "windows_i686_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" + +[[package]] +name = "xattr" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d1526bbe5aaeb5eb06885f4d987bcdfa5e23187055de9b83fe00156a821fabc" dependencies = [ "libc", ] From 9de09376b60c390408bf5219152812de9908e148 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 26 Jul 2022 17:23:19 -0600 Subject: [PATCH 0926/3180] Add i686 cargo config and pkg config --- .cargo/config | 4 ++++ bin/i686-unknown-redox-pkg-config | 7 +++++++ 2 files changed, 11 insertions(+) create mode 100755 bin/i686-unknown-redox-pkg-config diff --git a/.cargo/config b/.cargo/config index 69c4db47..424d6606 100644 --- a/.cargo/config +++ b/.cargo/config @@ -2,6 +2,10 @@ linker = "aarch64-unknown-redox-gcc" rustflags = [] +[target.i686-unknown-redox] +linker = "i686-unknown-redox-gcc" +rustflags = [] + [target.x86_64-unknown-redox] linker = "x86_64-unknown-redox-gcc" rustflags = [] diff --git a/bin/i686-unknown-redox-pkg-config b/bin/i686-unknown-redox-pkg-config new file mode 100755 index 00000000..c1eb8323 --- /dev/null +++ b/bin/i686-unknown-redox-pkg-config @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_RECIPE}/sysroot" +export PKG_CONFIG_LIBDIR="${PKG_CONFIG_SYSROOT_DIR}/lib/pkgconfig" +export PKG_CONFIG_PATH="${PKG_CONFIG_SYSROOT_DIR}/share/pkgconfig" + +exec pkg-config --static "$@" From 9fde2c029cedc0f14183066398f54a252a53ec9d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 26 Jul 2022 20:15:40 -0600 Subject: [PATCH 0927/3180] Only build ps2d on x86 --- recipes/drivers-initfs/recipe.toml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/recipes/drivers-initfs/recipe.toml b/recipes/drivers-initfs/recipe.toml index ce2e200b..a0eb1f4f 100644 --- a/recipes/drivers-initfs/recipe.toml +++ b/recipes/drivers-initfs/recipe.toml @@ -9,10 +9,17 @@ BINS=( ahcid nvmed pcid - ps2d vesad ) +case "${ARCH}" in + i686 | x86_64) + BINS+=(ps2d) + ;; + *) + ;; +esac + mkdir -pv "${COOKBOOK_STAGE}/bin" for bin in "${BINS[@]}" do From bf72bf38d31a058f7751df8d76f0bff6a5a60128 Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Mon, 18 Jul 2022 11:47:59 +0200 Subject: [PATCH 0928/3180] Fix relibc's recipe.toml --- recipes/relibc/recipe.toml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 recipes/relibc/recipe.toml diff --git a/recipes/relibc/recipe.toml b/recipes/relibc/recipe.toml new file mode 100644 index 00000000..a25543a2 --- /dev/null +++ b/recipes/relibc/recipe.toml @@ -0,0 +1,10 @@ +[recipe] +# TODO: Set git link once userspace_fexec is merged. +#GIT=https://gitlab.redox-os.org/redox-os/relibc.git + +[build] +template = "custom" +script = """ +cd "${COOKBOOK_SOURCE}" +"$REDOX_MAKE" CARGO="env -u CARGO cargo" -j"$($NPROC)" DESTDIR="${COOKBOOK_STAGE}" install +""" From e1f7024dba7e50ecce9bea7c7d96bff9fc41ad2a Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Mon, 18 Jul 2022 11:52:15 +0200 Subject: [PATCH 0929/3180] Add bootstrap recipe. --- recipes/bootstrap/recipe.toml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 recipes/bootstrap/recipe.toml diff --git a/recipes/bootstrap/recipe.toml b/recipes/bootstrap/recipe.toml new file mode 100644 index 00000000..9c1f730d --- /dev/null +++ b/recipes/bootstrap/recipe.toml @@ -0,0 +1,11 @@ +[recipe] +[build] +template = "custom" +script = """ +ARCH="$(echo "${TARGET}" | cut -d - -f1)" +nasm -o "${COOKBOOK_BUILD}/asm.o" -f elf64 "${COOKBOOK_SOURCE}/src/${ARCH}.asm" +cargo -Zbuild-std=core,alloc,compiler_builtins -Zbuild-std-features=compiler-builtins-mem rustc --target "${TARGET}" --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" --release --target-dir "${COOKBOOK_BUILD}" -- --emit obj="${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a" +compiler_builtins=`find "${COOKBOOK_BUILD}/x86_64-unknown-redox/release/deps/" -name "*libcompiler_builtins*.rlib"` +ld -o "${COOKBOOK_STAGE}/bootstrap" --gc-sections -T "${COOKBOOK_SOURCE}/src/${ARCH}.ld" "${COOKBOOK_BUILD}/asm.o" "${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a" "${COOKBOOK_SYSROOT}/lib/libc.a" "$compiler_builtins" +""" +dependencies = ["relibc"] From f4c9004cd87c4fb28ae333911532e1d272918d1d Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Mon, 18 Jul 2022 11:52:33 +0200 Subject: [PATCH 0930/3180] Add escalated recipe. --- recipes/escalated/recipe.toml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 recipes/escalated/recipe.toml diff --git a/recipes/escalated/recipe.toml b/recipes/escalated/recipe.toml new file mode 100644 index 00000000..f56972d3 --- /dev/null +++ b/recipes/escalated/recipe.toml @@ -0,0 +1,2 @@ +[build] +template = "cargo" From 117e4d8921a2bfbd84ad4243a6e1ca69ab6e7c32 Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Wed, 27 Jul 2022 17:59:43 +0200 Subject: [PATCH 0931/3180] Add git links for bootstrap and escalated --- recipes/bootstrap/recipe.toml | 4 +++- recipes/escalated/recipe.toml | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/recipes/bootstrap/recipe.toml b/recipes/bootstrap/recipe.toml index 9c1f730d..d923d92b 100644 --- a/recipes/bootstrap/recipe.toml +++ b/recipes/bootstrap/recipe.toml @@ -1,4 +1,6 @@ -[recipe] +[source] +git = "https://gitlab.redox-os.org/redox-os/bootstrap.git" + [build] template = "custom" script = """ diff --git a/recipes/escalated/recipe.toml b/recipes/escalated/recipe.toml index f56972d3..801bf9a8 100644 --- a/recipes/escalated/recipe.toml +++ b/recipes/escalated/recipe.toml @@ -1,2 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/escalated.git" + [build] template = "cargo" From 5d8079c1d7dfae2666a9644257b0de5aff89f3a0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 27 Jul 2022 10:16:44 -0600 Subject: [PATCH 0932/3180] Fix relibc recipe --- recipes/relibc/recipe.sh | 12 ------------ recipes/relibc/recipe.toml | 5 ++--- 2 files changed, 2 insertions(+), 15 deletions(-) delete mode 100644 recipes/relibc/recipe.sh diff --git a/recipes/relibc/recipe.sh b/recipes/relibc/recipe.sh deleted file mode 100644 index 6b0d4165..00000000 --- a/recipes/relibc/recipe.sh +++ /dev/null @@ -1,12 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/relibc.git - -function recipe_build { - "$REDOX_MAKE" CARGO="env -u CARGO cargo" -j"$($NPROC)" - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" CARGO="env -u CARGO cargo" DESTDIR="$dest" install - skip=1 -} diff --git a/recipes/relibc/recipe.toml b/recipes/relibc/recipe.toml index a25543a2..63c023bd 100644 --- a/recipes/relibc/recipe.toml +++ b/recipes/relibc/recipe.toml @@ -1,6 +1,5 @@ -[recipe] -# TODO: Set git link once userspace_fexec is merged. -#GIT=https://gitlab.redox-os.org/redox-os/relibc.git +[source] +GIT=https://gitlab.redox-os.org/redox-os/relibc.git [build] template = "custom" From f26acf55337df5259d54e87e1a63d63e8b6767e4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 27 Jul 2022 10:18:18 -0600 Subject: [PATCH 0933/3180] Fix relibc recipe syntax --- recipes/relibc/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/relibc/recipe.toml b/recipes/relibc/recipe.toml index 63c023bd..bffa5878 100644 --- a/recipes/relibc/recipe.toml +++ b/recipes/relibc/recipe.toml @@ -1,5 +1,5 @@ [source] -GIT=https://gitlab.redox-os.org/redox-os/relibc.git +git = "https://gitlab.redox-os.org/redox-os/relibc.git" [build] template = "custom" From 9724a7625ebbf1fbfc09a7fb134ae1b3e848f691 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 27 Jul 2022 11:10:55 -0600 Subject: [PATCH 0934/3180] Fix for relibc recipe --- recipes/relibc/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/relibc/recipe.toml b/recipes/relibc/recipe.toml index bffa5878..f7078a57 100644 --- a/recipes/relibc/recipe.toml +++ b/recipes/relibc/recipe.toml @@ -4,6 +4,6 @@ git = "https://gitlab.redox-os.org/redox-os/relibc.git" [build] template = "custom" script = """ -cd "${COOKBOOK_SOURCE}" +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ "$REDOX_MAKE" CARGO="env -u CARGO cargo" -j"$($NPROC)" DESTDIR="${COOKBOOK_STAGE}" install """ From 8338003430336c4f86e155efaf845b68fe5d269e Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Thu, 28 Jul 2022 14:22:08 +0200 Subject: [PATCH 0935/3180] Fix bootstrap --- recipes/bootstrap/recipe.toml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/recipes/bootstrap/recipe.toml b/recipes/bootstrap/recipe.toml index d923d92b..7b564aaa 100644 --- a/recipes/bootstrap/recipe.toml +++ b/recipes/bootstrap/recipe.toml @@ -6,8 +6,6 @@ template = "custom" script = """ ARCH="$(echo "${TARGET}" | cut -d - -f1)" nasm -o "${COOKBOOK_BUILD}/asm.o" -f elf64 "${COOKBOOK_SOURCE}/src/${ARCH}.asm" -cargo -Zbuild-std=core,alloc,compiler_builtins -Zbuild-std-features=compiler-builtins-mem rustc --target "${TARGET}" --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" --release --target-dir "${COOKBOOK_BUILD}" -- --emit obj="${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a" -compiler_builtins=`find "${COOKBOOK_BUILD}/x86_64-unknown-redox/release/deps/" -name "*libcompiler_builtins*.rlib"` -ld -o "${COOKBOOK_STAGE}/bootstrap" --gc-sections -T "${COOKBOOK_SOURCE}/src/${ARCH}.ld" "${COOKBOOK_BUILD}/asm.o" "${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a" "${COOKBOOK_SYSROOT}/lib/libc.a" "$compiler_builtins" +cargo -Zbuild-std=core,alloc,compiler_builtins -Zbuild-std-features=compiler-builtins-mem rustc --target "${TARGET}" --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" --release --target-dir "${COOKBOOK_BUILD}" -- --emit link="${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a" +ld -o "${COOKBOOK_STAGE}/bootstrap" --gc-sections -T "${COOKBOOK_SOURCE}/src/${ARCH}.ld" "${COOKBOOK_BUILD}/asm.o" "${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a" """ -dependencies = ["relibc"] From cf95f4ea031eb9659ca799bfcc3297d2ee7aeb15 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 28 Jul 2022 07:46:19 -0600 Subject: [PATCH 0936/3180] drivers-initfs: fix adding ps2d on x86 --- recipes/drivers-initfs/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/drivers-initfs/recipe.toml b/recipes/drivers-initfs/recipe.toml index a0eb1f4f..f84e5af7 100644 --- a/recipes/drivers-initfs/recipe.toml +++ b/recipes/drivers-initfs/recipe.toml @@ -12,8 +12,8 @@ BINS=( vesad ) -case "${ARCH}" in - i686 | x86_64) +case "${TARGET}" in + i686-unknown-redox | x86_64-unknown-redox) BINS+=(ps2d) ;; *) From b62ddf4f5a640ad0286863977752a6de2ab0afdf Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 1 Aug 2022 18:29:09 -0600 Subject: [PATCH 0937/3180] Add sm64ex recipe --- recipes/sm64ex/.gitignore | 1 + recipes/sm64ex/recipe.toml | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 recipes/sm64ex/.gitignore create mode 100644 recipes/sm64ex/recipe.toml diff --git a/recipes/sm64ex/.gitignore b/recipes/sm64ex/.gitignore new file mode 100644 index 00000000..09b26b18 --- /dev/null +++ b/recipes/sm64ex/.gitignore @@ -0,0 +1 @@ +/baserom.us.z64 diff --git a/recipes/sm64ex/recipe.toml b/recipes/sm64ex/recipe.toml new file mode 100644 index 00000000..f7db24b5 --- /dev/null +++ b/recipes/sm64ex/recipe.toml @@ -0,0 +1,22 @@ +[source] +git = "https://github.com/jackpot51/sm64ex.git" + +[build] +template = "custom" +dependencies = [ + "liborbital", + "llvm", + "mesa", + "sdl2", + "zlib", +] +script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ +# You must find your own ROM +cp -v "${COOKBOOK_RECIPE}/baserom.us.z64" baserom.us.z64 + +export CROSS="${TARGET}-" +"${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" +mkdir -p "${COOKBOOK_STAGE}/bin" +cp -v build/us_pc/sm64.us.f3dex2e "${COOKBOOK_STAGE}/bin/sm64" +""" From 51ea7d27dfada1b3b23c7206a73690e370c23891 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 4 Aug 2022 09:04:53 -0600 Subject: [PATCH 0938/3180] Convert readline to toml --- recipes/readline/recipe.sh | 39 ------------------- recipes/readline/recipe.toml | 11 ++++++ .../{01-config-sub.patch => redox.patch} | 0 3 files changed, 11 insertions(+), 39 deletions(-) delete mode 100644 recipes/readline/recipe.sh create mode 100644 recipes/readline/recipe.toml rename recipes/readline/{01-config-sub.patch => redox.patch} (100%) diff --git a/recipes/readline/recipe.sh b/recipes/readline/recipe.sh deleted file mode 100644 index 72dd391f..00000000 --- a/recipes/readline/recipe.sh +++ /dev/null @@ -1,39 +0,0 @@ -VERSION=7.0 -TAR=http://ftp.gnu.org/gnu/readline/readline-$VERSION.tar.gz -BUILD_DEPENDS=(ncurses) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export LDFLAGS="-L$sysroot/lib" - export CFLAGS="-I$sysroot/include" - ./configure --disable-shared --build=${BUILD} --host=${HOST} --prefix="" - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -rf "$1"/share/{doc,info,man} - skip=1 -} diff --git a/recipes/readline/recipe.toml b/recipes/readline/recipe.toml new file mode 100644 index 00000000..b863fdc2 --- /dev/null +++ b/recipes/readline/recipe.toml @@ -0,0 +1,11 @@ +[source] +tar = "http://ftp.gnu.org/gnu/readline/readline-7.0.tar.gz" +patches = [ + "redox.patch" +] + +[build] +template = "configure" +depends = [ + "ncurses", +] diff --git a/recipes/readline/01-config-sub.patch b/recipes/readline/redox.patch similarity index 100% rename from recipes/readline/01-config-sub.patch rename to recipes/readline/redox.patch From 574ac5c5b93684ef2e55049ce4aaff96fd93576d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 4 Aug 2022 09:10:20 -0600 Subject: [PATCH 0939/3180] Fixes for bash recipe --- recipes/bash/recipe.toml | 4 ++-- recipes/bash/redox.patch | 28 ++++++++++++++++++++-------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/recipes/bash/recipe.toml b/recipes/bash/recipe.toml index 50e25dc3..4505f88d 100644 --- a/recipes/bash/recipe.toml +++ b/recipes/bash/recipe.toml @@ -10,11 +10,11 @@ wget -O support/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/ra [build] template = "custom" dependencies = [ - "gettext" + "gettext", + "readline", ] script = """ COOKBOOK_CONFIGURE_FLAGS+=( - --disable-readline bash_cv_getenv_redef=no ) COOKBOOK_MAKE_JOBS=1 # workaround for parallel make bugs diff --git a/recipes/bash/redox.patch b/recipes/bash/redox.patch index 21631f5c..50a789d9 100644 --- a/recipes/bash/redox.patch +++ b/recipes/bash/redox.patch @@ -1,6 +1,18 @@ +diff -ruwN source/bashline.c source-new/bashline.c +--- source/bashline.c 2016-08-05 19:44:05.000000000 -0600 ++++ source-new/bashline.c 2022-08-04 09:09:21.816427263 -0600 +@@ -2465,7 +2465,7 @@ + const char *text; + int state; + { +-#if defined (__WIN32__) || defined (__OPENNT) || !defined (HAVE_GRP_H) ++#if defined (__WIN32__) || defined (__OPENNT) || !defined (HAVE_GRP_H) || defined(__redox__) + return ((char *)NULL); + #else + static char *gname = (char *)NULL; diff -ruwN source/builtins/ulimit.def source-new/builtins/ulimit.def --- source/builtins/ulimit.def 2016-03-11 07:18:54.000000000 -0700 -+++ source-new/builtins/ulimit.def 2020-07-14 20:52:15.875646752 -0600 ++++ source-new/builtins/ulimit.def 2022-08-04 09:07:18.413033575 -0600 @@ -598,7 +598,7 @@ } else @@ -12,7 +24,7 @@ diff -ruwN source/builtins/ulimit.def source-new/builtins/ulimit.def # if defined (HPUX9) diff -ruwN source/config-top.h source-new/config-top.h --- source/config-top.h 2016-05-19 12:34:02.000000000 -0600 -+++ source-new/config-top.h 2020-07-14 20:50:54.546545430 -0600 ++++ source-new/config-top.h 2022-08-04 09:07:18.413033575 -0600 @@ -63,14 +63,14 @@ /* The default value of the PATH variable. */ #ifndef DEFAULT_PATH_VALUE @@ -32,7 +44,7 @@ diff -ruwN source/config-top.h source-new/config-top.h /* Default primary and secondary prompt strings. */ diff -ruwN source/configure.ac source-new/configure.ac --- source/configure.ac 2016-09-07 14:56:28.000000000 -0600 -+++ source-new/configure.ac 2020-07-14 20:50:54.550545485 -0600 ++++ source-new/configure.ac 2022-08-04 09:07:18.413033575 -0600 @@ -90,6 +90,7 @@ *-opennt*|*-interix*) opt_bash_malloc=no ;; # Interix, now owned by Microsoft *-nsk*) opt_bash_malloc=no ;; # HP NonStop @@ -43,7 +55,7 @@ diff -ruwN source/configure.ac source-new/configure.ac # memory scrambling on free() diff -ruwN source/execute_cmd.c source-new/execute_cmd.c --- source/execute_cmd.c 2016-08-26 05:10:08.000000000 -0600 -+++ source-new/execute_cmd.c 2020-07-14 20:50:54.550545485 -0600 ++++ source-new/execute_cmd.c 2022-08-04 09:07:18.413033575 -0600 @@ -1335,15 +1335,17 @@ nullcmd = (command == 0) || (command->type == cm_simple && command->value.Simple->words == 0 && command->value.Simple->redirects == 0); if (posixly_correct && nullcmd) @@ -65,7 +77,7 @@ diff -ruwN source/execute_cmd.c source-new/execute_cmd.c old_flags = command->flags; diff -ruwN source/general.c source-new/general.c --- source/general.c 2016-08-11 09:16:56.000000000 -0600 -+++ source-new/general.c 2020-07-14 20:50:54.550545485 -0600 ++++ source-new/general.c 2022-08-04 09:07:18.413033575 -0600 @@ -476,6 +476,7 @@ void check_dev_tty () @@ -97,7 +109,7 @@ diff -ruwN source/general.c source-new/general.c *p_index = i; diff -ruwN source/include/posixwait.h source-new/include/posixwait.h --- source/include/posixwait.h 2008-08-12 08:03:03.000000000 -0600 -+++ source-new/include/posixwait.h 2020-07-14 20:50:54.554545541 -0600 ++++ source-new/include/posixwait.h 2022-08-04 09:07:18.413033575 -0600 @@ -34,7 +34,7 @@ /* How to get the status of a job. For Posix, this is just an @@ -118,7 +130,7 @@ diff -ruwN source/include/posixwait.h source-new/include/posixwait.h # define WSTOPSIG(s) ((s) >> 8) diff -ruwN source/lib/sh/getcwd.c source-new/lib/sh/getcwd.c --- source/lib/sh/getcwd.c 2012-03-10 08:48:50.000000000 -0700 -+++ source-new/lib/sh/getcwd.c 2020-07-14 20:50:54.554545541 -0600 ++++ source-new/lib/sh/getcwd.c 2022-08-04 09:07:18.413033575 -0600 @@ -20,7 +20,7 @@ #include @@ -130,7 +142,7 @@ diff -ruwN source/lib/sh/getcwd.c source-new/lib/sh/getcwd.c #pragma alloca diff -ruwN source/sig.c source-new/sig.c --- source/sig.c 2016-02-11 13:02:45.000000000 -0700 -+++ source-new/sig.c 2020-07-14 20:50:54.554545541 -0600 ++++ source-new/sig.c 2022-08-04 09:07:18.413033575 -0600 @@ -680,7 +680,9 @@ } From 7205a48dbe5e7df05db0259d8702e1edd6ee5548 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 4 Aug 2022 09:27:11 -0600 Subject: [PATCH 0940/3180] Make gigalomania static --- recipes/gigalomania/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/gigalomania/recipe.sh b/recipes/gigalomania/recipe.sh index 9b29ce3b..3563e6ba 100644 --- a/recipes/gigalomania/recipe.sh +++ b/recipes/gigalomania/recipe.sh @@ -16,7 +16,7 @@ function recipe_update { function recipe_build { export CPPHOST=${HOST}-g++ sysroot="$(realpath ../sysroot)" - export LDFLAGS="-L$sysroot/lib" + export LDFLAGS="-L$sysroot/lib --static" export CPPFLAGS="-I$sysroot/include" "$REDOX_MAKE" all -j"$($NPROC)" skip=1 From b90704905e8bf2e6e90359bcac0e496f8e24aec7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 4 Aug 2022 09:39:31 -0600 Subject: [PATCH 0941/3180] Compile syobonaction statically --- recipes/syobonaction/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/syobonaction/recipe.sh b/recipes/syobonaction/recipe.sh index dd4f5246..6705a916 100644 --- a/recipes/syobonaction/recipe.sh +++ b/recipes/syobonaction/recipe.sh @@ -16,7 +16,7 @@ function recipe_build { sysroot="$(realpath ../sysroot)" export SDL_CONFIG="${PKG_CONFIG} sdl" export CPPFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib" + export LDFLAGS="-L$sysroot/lib --static" "$REDOX_MAKE" -j"$($NPROC)" skip=1 } From fb22428bb1d1bc586c1058fe4787ac2a48ea329a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 4 Aug 2022 10:21:01 -0600 Subject: [PATCH 0942/3180] Use --static instead of -static for gcc/binutils --- recipes/gcc/recipe.sh | 2 +- recipes/gnu-binutils/recipe.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index a14cfe89..e7f9e420 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -26,7 +26,7 @@ function recipe_build { mkdir -p "$sysroot/usr" ln -sf "$sysroot/include" "$sysroot/usr/include" ln -sf "$sysroot/lib" "$sysroot/usr/lib" - export LDFLAGS="-static" + export LDFLAGS="--static" ./configure \ --build=${BUILD} \ --host=${HOST} \ diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh index a7211541..9d33dcd1 100644 --- a/recipes/gnu-binutils/recipe.sh +++ b/recipes/gnu-binutils/recipe.sh @@ -19,7 +19,7 @@ function recipe_build { ln -sf "$sysroot/include" "$sysroot/usr/include" ln -sf "$sysroot/lib" "$sysroot/usr/lib" export CPPFLAGS="-I$sysroot/include -pie -fPIC -g" - export LDFLAGS="-L$sysroot/lib -static -g" + export LDFLAGS="-L$sysroot/lib --static -g" ./configure \ --build=${BUILD} \ --host=${HOST} \ From 7751f79f50f5a64e0e7805ed25a99a52ba0df264 Mon Sep 17 00:00:00 2001 From: Nagy Tibor Date: Sun, 7 Aug 2022 09:14:22 +0200 Subject: [PATCH 0943/3180] Convert sdl2_mixer to new recipe format --- recipes/sdl2_mixer/recipe.sh | 52 ---------------------------------- recipes/sdl2_mixer/recipe.toml | 31 ++++++++++++++++++++ 2 files changed, 31 insertions(+), 52 deletions(-) delete mode 100644 recipes/sdl2_mixer/recipe.sh create mode 100644 recipes/sdl2_mixer/recipe.toml diff --git a/recipes/sdl2_mixer/recipe.sh b/recipes/sdl2_mixer/recipe.sh deleted file mode 100644 index 41f101c5..00000000 --- a/recipes/sdl2_mixer/recipe.sh +++ /dev/null @@ -1,52 +0,0 @@ -VERSION=2.0.4 -TAR=https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-$VERSION.tar.gz -BUILD_DEPENDS=(sdl2 liborbital llvm mesa zlib libogg libvorbis) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib" - export SDL_LIBS="-lSDL2 -lorbital $("${TARGET}-pkg-config" --libs osmesa) -lvorbis -logg -lz -lm -lpthread -lstdc++" - ./autogen.sh - ./configure \ - --prefix=/ \ - --build=${BUILD} \ - --host=${HOST} \ - --disable-shared \ - --disable-sdltest \ - --enable-music-ogg \ - --disable-music-cmd \ - --disable-music-mp3 \ - --disable-smpegtest \ - --disable-music-midi \ - --disable-music-mod - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/sdl2_mixer/recipe.toml b/recipes/sdl2_mixer/recipe.toml new file mode 100644 index 00000000..a78e19a3 --- /dev/null +++ b/recipes/sdl2_mixer/recipe.toml @@ -0,0 +1,31 @@ +[source] +tar = "https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-2.0.4.tar.gz" + +[build] +template = "custom" +dependencies = [ + "sdl2", + "liborbital", + "llvm", + "mesa", + "zlib", + "libogg", + "libvorbis", +] +script = """ +export SDL_LIBS="-lSDL2 -lorbital $("${TARGET}-pkg-config" --libs osmesa) -lvorbis -logg -lz -lm -lpthread -lstdc++" +COOKBOOK_CONFIGURE_FLAGS=( + --prefix=/ + --host="${TARGET}" + --disable-shared + --disable-sdltest + --enable-music-ogg + --disable-music-cmd + --disable-music-mp3 + --disable-smpegtest + --disable-music-midi + --disable-music-mod +) +set -x +cookbook_configure +""" From 22627b477b5d24b68b0a83c7408ac45a381decd9 Mon Sep 17 00:00:00 2001 From: Nagy Tibor Date: Sun, 7 Aug 2022 09:14:59 +0200 Subject: [PATCH 0944/3180] Add spacecadetpinball recipe --- recipes/spacecadetpinball/recipe.toml | 36 +++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 recipes/spacecadetpinball/recipe.toml diff --git a/recipes/spacecadetpinball/recipe.toml b/recipes/spacecadetpinball/recipe.toml new file mode 100644 index 00000000..1f098976 --- /dev/null +++ b/recipes/spacecadetpinball/recipe.toml @@ -0,0 +1,36 @@ +[source] +git = "https://gitlab.redox-os.org/xTibor/SpaceCadetPinball.git" +upstream = "https://github.com/k4zmu2a/SpaceCadetPinball.git" +branch = "redox" + +[build] +template = "custom" +dependencies = [ + "libogg", + "liborbital", + "libvorbis", + "llvm", + "mesa", + "sdl2", + "sdl2_mixer", + "zlib", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_VERBOSE_MAKEFILE=On + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_INSTALL_PREFIX="/" + -DSDL2_INCLUDE_DIR="${COOKBOOK_SYSROOT}/include/SDL2" + -DSDL2_LIBRARY="-lSDL2_mixer -lvorbisfile -lvorbis -logg -lSDL2 -lorbital $("${TARGET}-pkg-config" --libs osmesa)" + -DSDL2_MIXER_INCLUDE_DIR="${COOKBOOK_SYSROOT}/include/SDL2" + -DSDL2_MIXER_LIBRARY="SDL2_mixer" + "${COOKBOOK_SOURCE}" +) +set -x +cookbook_configure +mv -vT "${COOKBOOK_STAGE}"/usr/bin "${COOKBOOK_STAGE}/bin" +rmdir -v "${COOKBOOK_STAGE}"/usr +set +x +""" From a20ed3d07fae54798cfe21cd5c4f3aef5f89b603 Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Wed, 10 Aug 2022 12:12:37 +0200 Subject: [PATCH 0945/3180] Add initfs gen recipe using regular dependencies. --- recipes/initfs/init.rc | 16 ++++++++++++++++ recipes/initfs/recipe.toml | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 recipes/initfs/init.rc create mode 100644 recipes/initfs/recipe.toml diff --git a/recipes/initfs/init.rc b/recipes/initfs/init.rc new file mode 100644 index 00000000..bfbcad7a --- /dev/null +++ b/recipes/initfs/init.rc @@ -0,0 +1,16 @@ +export PATH /bin +export TMPDIR /tmp +nulld +zerod +randd +vesad T T G +logd debug: display:1 +stdio log: +ps2d us +ramfs logging +acpid +pcid /etc/pcid/initfs.toml +redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK +cd file: +export PATH file:/bin +run.d /etc/init.d diff --git a/recipes/initfs/recipe.toml b/recipes/initfs/recipe.toml new file mode 100644 index 00000000..a5b602a9 --- /dev/null +++ b/recipes/initfs/recipe.toml @@ -0,0 +1,33 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/redox-initfs.git" + +[build] +template = "custom" +dependencies = [ + "drivers-initfs", + "init", + "logd", + "nulld", + "ramfs", + "randd", + "redoxfs", + "zerod", +] +script = """ +INITFS_RM_BINS='redoxfs-ar redoxfs-mkfs' + +mkdir -p $COOKBOOK_BUILD/initfs/etc + +cp -r $COOKBOOK_SYSROOT/* $COOKBOOK_BUILD/initfs + +# TODO: Move init.rc to another recipe, perhaps initfs-misc? Then it can be installed as a regular dependency. +cp $COOKBOOK_RECIPE/init.rc $COOKBOOK_BUILD/initfs/etc/init.rc + +for bin in $INITFS_RM_BINS; do + rm -f $COOKBOOK_BUILD/initfs/bin/$bin +done + +env -u CARGO cargo run --manifest-path $COOKBOOK_SOURCE/tools/Cargo.toml --bin redox-initfs-ar -- $COOKBOOK_BUILD/initfs -o $COOKBOOK_BUILD/initfs.img + +cp $COOKBOOK_BUILD/initfs.img $COOKBOOK_STAGE/initfs +""" From 946f8a997c5d1dc5cc53370973f0d58c6d74da5d Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Wed, 10 Aug 2022 17:38:48 +0200 Subject: [PATCH 0946/3180] Quote variables --- recipes/initfs/recipe.toml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/recipes/initfs/recipe.toml b/recipes/initfs/recipe.toml index a5b602a9..689a0c96 100644 --- a/recipes/initfs/recipe.toml +++ b/recipes/initfs/recipe.toml @@ -16,18 +16,18 @@ dependencies = [ script = """ INITFS_RM_BINS='redoxfs-ar redoxfs-mkfs' -mkdir -p $COOKBOOK_BUILD/initfs/etc +mkdir -p "${COOKBOOK_BUILD}/initfs/etc" -cp -r $COOKBOOK_SYSROOT/* $COOKBOOK_BUILD/initfs +cp -r "${COOKBOOK_SYSROOT}/"* "${COOKBOOK_BUILD}/initfs" # TODO: Move init.rc to another recipe, perhaps initfs-misc? Then it can be installed as a regular dependency. -cp $COOKBOOK_RECIPE/init.rc $COOKBOOK_BUILD/initfs/etc/init.rc +cp "${COOKBOOK_RECIPE}/init.rc" "${COOKBOOK_BUILD}/initfs/etc/init.rc" -for bin in $INITFS_RM_BINS; do - rm -f $COOKBOOK_BUILD/initfs/bin/$bin +for bin in ${INITFS_RM_BINS}; do + rm -f "${COOKBOOK_BUILD}/initfs/bin/$bin" done -env -u CARGO cargo run --manifest-path $COOKBOOK_SOURCE/tools/Cargo.toml --bin redox-initfs-ar -- $COOKBOOK_BUILD/initfs -o $COOKBOOK_BUILD/initfs.img +env -u CARGO cargo run --manifest-path "${COOKBOOK_SOURCE}/tools/Cargo.toml" --bin redox-initfs-ar -- "${COOKBOOK_BUILD}/initfs" -o "${COOKBOOK_BUILD}/initfs.img" -cp $COOKBOOK_BUILD/initfs.img $COOKBOOK_STAGE/initfs +cp "${COOKBOOK_BUILD}/initfs.img" "${COOKBOOK_STAGE}/initfs" """ From 3668ccc8ae7de773652f3a9348a9112ca5d89ea4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 11 Aug 2022 08:08:55 -0600 Subject: [PATCH 0947/3180] Support i686 bootstrap --- recipes/bootstrap/recipe.toml | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/recipes/bootstrap/recipe.toml b/recipes/bootstrap/recipe.toml index 7b564aaa..9efa810c 100644 --- a/recipes/bootstrap/recipe.toml +++ b/recipes/bootstrap/recipe.toml @@ -5,7 +5,31 @@ git = "https://gitlab.redox-os.org/redox-os/bootstrap.git" template = "custom" script = """ ARCH="$(echo "${TARGET}" | cut -d - -f1)" -nasm -o "${COOKBOOK_BUILD}/asm.o" -f elf64 "${COOKBOOK_SOURCE}/src/${ARCH}.asm" -cargo -Zbuild-std=core,alloc,compiler_builtins -Zbuild-std-features=compiler-builtins-mem rustc --target "${TARGET}" --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" --release --target-dir "${COOKBOOK_BUILD}" -- --emit link="${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a" -ld -o "${COOKBOOK_STAGE}/bootstrap" --gc-sections -T "${COOKBOOK_SOURCE}/src/${ARCH}.ld" "${COOKBOOK_BUILD}/asm.o" "${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a" +case "${ARCH}" in + i686) + NASM_FORMAT=elf32 + ;; + *) + NASM_FORMAT=elf64 + ;; +esac +nasm \ + -o "${COOKBOOK_BUILD}/asm.o" \ + -f "${NASM_FORMAT}" \ + "${COOKBOOK_SOURCE}/src/${ARCH}.asm" +cargo \ + -Zbuild-std=core,alloc,compiler_builtins \ + -Zbuild-std-features=compiler-builtins-mem rustc \ + --target "${TARGET}" \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --release \ + --target-dir "${COOKBOOK_BUILD}" \ + -- \ + --emit link="${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a" +"${TARGET}-ld" \ + -o "${COOKBOOK_STAGE}/bootstrap" \ + --gc-sections \ + -T "${COOKBOOK_SOURCE}/src/${ARCH}.ld" \ + "${COOKBOOK_BUILD}/asm.o" \ + "${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a" """ From a39840612ef75275d31e4b0ae8e0a8b1a61d27c4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 17 Aug 2022 07:27:40 -0600 Subject: [PATCH 0948/3180] Build UEFI bootloader --- recipes/bootloader/recipe.toml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/recipes/bootloader/recipe.toml b/recipes/bootloader/recipe.toml index 71315865..f9360e39 100644 --- a/recipes/bootloader/recipe.toml +++ b/recipes/bootloader/recipe.toml @@ -14,8 +14,7 @@ then cp "build/${TARGET}/bootloader.bin" "${COOKBOOK_STAGE}/bootloader" fi -# TODO: fails due to environmental variables -# export TARGET="${ARCH}-unknown-uefi" -# cleanenv "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" -# cp "build/${TARGET}/bootloader.efi" "${COOKBOOK_STAGE}/bootloader.efi" +export TARGET="${ARCH}-unknown-uefi" +"${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" +cp "build/${TARGET}/bootloader.efi" "${COOKBOOK_STAGE}/bootloader.efi" """ From 71202ef03ab5fc440c381d0a171c1d4e1097c4b2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 17 Aug 2022 07:30:06 -0600 Subject: [PATCH 0949/3180] Add bios suffix to bios bootloader file --- recipes/bootloader/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/bootloader/recipe.toml b/recipes/bootloader/recipe.toml index f9360e39..2ee85966 100644 --- a/recipes/bootloader/recipe.toml +++ b/recipes/bootloader/recipe.toml @@ -11,7 +11,7 @@ if [ "${ARCH}" == "x86_64" ] then export TARGET="x86-unknown-none" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" - cp "build/${TARGET}/bootloader.bin" "${COOKBOOK_STAGE}/bootloader" + cp "build/${TARGET}/bootloader.bin" "${COOKBOOK_STAGE}/bootloader.bios" fi export TARGET="${ARCH}-unknown-uefi" From 71eb6c35f5b91a896a12c4b68ba6726bd9865cc3 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 17 Aug 2022 07:56:55 -0600 Subject: [PATCH 0950/3180] Build live bootloaders too --- recipes/bootloader/recipe.toml | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/recipes/bootloader/recipe.toml b/recipes/bootloader/recipe.toml index 2ee85966..0e7079f9 100644 --- a/recipes/bootloader/recipe.toml +++ b/recipes/bootloader/recipe.toml @@ -6,15 +6,27 @@ template = "custom" script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ +function bootloader { + export TARGET="$1" + src="$2" + dst="$3" + "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" "build/${TARGET}/${src}" + cp -v "build/${TARGET}/${src}" "${COOKBOOK_STAGE}/${dst}" +} + ARCH="$(echo "${TARGET}" | cut -d - -f1)" -if [ "${ARCH}" == "x86_64" ] + +# Build BIOS bootloader for supported architectures +if [ "${ARCH}" == "i686" -o "${ARCH}" == "x86_64" ] then - export TARGET="x86-unknown-none" - "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" - cp "build/${TARGET}/bootloader.bin" "${COOKBOOK_STAGE}/bootloader.bios" + bootloader "x86-unknown-none" bootloader.bin bootloader.bios + bootloader "x86-unknown-none" bootloader-live.bin bootloader-live.bios fi -export TARGET="${ARCH}-unknown-uefi" -"${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" -cp "build/${TARGET}/bootloader.efi" "${COOKBOOK_STAGE}/bootloader.efi" +# Build UEFI bootloader for supported architectures +if [ "${ARCH}" == "aarch64" -o "${ARCH}" == "x86_64" ] +then + bootloader "${ARCH}-unknown-uefi" bootloader.efi bootloader.efi + bootloader "${ARCH}-unknown-uefi" bootloader-live.efi bootloader-live.efi +fi """ From 546134337bd9f91330f2676d276009417e6dfd81 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 17 Aug 2022 08:10:43 -0600 Subject: [PATCH 0951/3180] Install boot files to /boot --- recipes/bootloader/recipe.toml | 4 +++- recipes/bootstrap/recipe.toml | 3 ++- recipes/initfs/recipe.toml | 3 ++- recipes/kernel/recipe.toml | 3 ++- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/recipes/bootloader/recipe.toml b/recipes/bootloader/recipe.toml index 0e7079f9..1f4e6eab 100644 --- a/recipes/bootloader/recipe.toml +++ b/recipes/bootloader/recipe.toml @@ -6,12 +6,14 @@ template = "custom" script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ +mkdir -v "${COOKBOOK_STAGE}/boot" + function bootloader { export TARGET="$1" src="$2" dst="$3" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" "build/${TARGET}/${src}" - cp -v "build/${TARGET}/${src}" "${COOKBOOK_STAGE}/${dst}" + cp -v "build/${TARGET}/${src}" "${COOKBOOK_STAGE}/boot/${dst}" } ARCH="$(echo "${TARGET}" | cut -d - -f1)" diff --git a/recipes/bootstrap/recipe.toml b/recipes/bootstrap/recipe.toml index 9efa810c..824e691b 100644 --- a/recipes/bootstrap/recipe.toml +++ b/recipes/bootstrap/recipe.toml @@ -26,8 +26,9 @@ cargo \ --target-dir "${COOKBOOK_BUILD}" \ -- \ --emit link="${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a" +mkdir -v "${COOKBOOK_STAGE}/boot" "${TARGET}-ld" \ - -o "${COOKBOOK_STAGE}/bootstrap" \ + -o "${COOKBOOK_STAGE}/boot/bootstrap" \ --gc-sections \ -T "${COOKBOOK_SOURCE}/src/${ARCH}.ld" \ "${COOKBOOK_BUILD}/asm.o" \ diff --git a/recipes/initfs/recipe.toml b/recipes/initfs/recipe.toml index 689a0c96..4f721c8e 100644 --- a/recipes/initfs/recipe.toml +++ b/recipes/initfs/recipe.toml @@ -29,5 +29,6 @@ done env -u CARGO cargo run --manifest-path "${COOKBOOK_SOURCE}/tools/Cargo.toml" --bin redox-initfs-ar -- "${COOKBOOK_BUILD}/initfs" -o "${COOKBOOK_BUILD}/initfs.img" -cp "${COOKBOOK_BUILD}/initfs.img" "${COOKBOOK_STAGE}/initfs" +mkdir -v "${COOKBOOK_STAGE}/boot" +cp "${COOKBOOK_BUILD}/initfs.img" "${COOKBOOK_STAGE}/boot/initfs" """ diff --git a/recipes/kernel/recipe.toml b/recipes/kernel/recipe.toml index 330cd115..03d037bd 100644 --- a/recipes/kernel/recipe.toml +++ b/recipes/kernel/recipe.toml @@ -31,5 +31,6 @@ cargo rustc \ --strip-debug \ kernel.all \ kernel -cp -v kernel "${COOKBOOK_STAGE}" +mkdir -v "${COOKBOOK_STAGE}/boot" +cp -v kernel "${COOKBOOK_STAGE}/boot" """ From 5fc093ca9a0b815326a15f0a65392fc3552f52d8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 19 Aug 2022 10:05:54 -0600 Subject: [PATCH 0952/3180] Simplify bootstrap recipe --- recipes/bootstrap/recipe.toml | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/recipes/bootstrap/recipe.toml b/recipes/bootstrap/recipe.toml index 824e691b..8ad318ce 100644 --- a/recipes/bootstrap/recipe.toml +++ b/recipes/bootstrap/recipe.toml @@ -5,18 +5,6 @@ git = "https://gitlab.redox-os.org/redox-os/bootstrap.git" template = "custom" script = """ ARCH="$(echo "${TARGET}" | cut -d - -f1)" -case "${ARCH}" in - i686) - NASM_FORMAT=elf32 - ;; - *) - NASM_FORMAT=elf64 - ;; -esac -nasm \ - -o "${COOKBOOK_BUILD}/asm.o" \ - -f "${NASM_FORMAT}" \ - "${COOKBOOK_SOURCE}/src/${ARCH}.asm" cargo \ -Zbuild-std=core,alloc,compiler_builtins \ -Zbuild-std-features=compiler-builtins-mem rustc \ @@ -31,6 +19,5 @@ mkdir -v "${COOKBOOK_STAGE}/boot" -o "${COOKBOOK_STAGE}/boot/bootstrap" \ --gc-sections \ -T "${COOKBOOK_SOURCE}/src/${ARCH}.ld" \ - "${COOKBOOK_BUILD}/asm.o" \ "${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a" """ From 40aacaff30daf91b7e16e57c69c63f84da04841f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 22 Aug 2022 10:06:52 -0600 Subject: [PATCH 0953/3180] Only build acpid on x86_64 --- recipes/drivers-initfs/recipe.toml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/recipes/drivers-initfs/recipe.toml b/recipes/drivers-initfs/recipe.toml index f84e5af7..26dfef38 100644 --- a/recipes/drivers-initfs/recipe.toml +++ b/recipes/drivers-initfs/recipe.toml @@ -5,7 +5,6 @@ git = "https://gitlab.redox-os.org/redox-os/drivers.git" template = "custom" script = """ BINS=( - acpid ahcid nvmed pcid @@ -13,9 +12,12 @@ BINS=( ) case "${TARGET}" in - i686-unknown-redox | x86_64-unknown-redox) + i686-unknown-redox) BINS+=(ps2d) ;; + x86_64-unknown-redox) + BINS+=(acpid ps2d) + ;; *) ;; esac From 0ad568d677196ba859c5d299cb8bca18bd158418 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 23 Aug 2022 13:17:45 -0600 Subject: [PATCH 0954/3180] Use correct gcc for openssl --- recipes/openssl/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/openssl/recipe.toml b/recipes/openssl/recipe.toml index 5b59968a..9220b1ac 100644 --- a/recipes/openssl/recipe.toml +++ b/recipes/openssl/recipe.toml @@ -13,6 +13,7 @@ COOKBOOK_CONFIGURE_FLAGS=( "redox-${ARCH}" --prefix="/" ) +export CC="${TARGET}-gcc" cookbook_configure rm -rfv "${COOKBOOK_STAGE}/"{share,ssl} """ From 603320f1968e22c83454871639468cd8c5c18aa5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 26 Aug 2022 11:17:43 -0600 Subject: [PATCH 0955/3180] Use ahcid on x86 --- recipes/drivers-initfs/recipe.toml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/recipes/drivers-initfs/recipe.toml b/recipes/drivers-initfs/recipe.toml index 26dfef38..007f1434 100644 --- a/recipes/drivers-initfs/recipe.toml +++ b/recipes/drivers-initfs/recipe.toml @@ -12,10 +12,7 @@ BINS=( ) case "${TARGET}" in - i686-unknown-redox) - BINS+=(ps2d) - ;; - x86_64-unknown-redox) + i686-unknown-redox | x86_64-unknown-redox) BINS+=(acpid ps2d) ;; *) From 14c02d0a43377f860329bd1093addd6a96d72937 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 7 Sep 2022 12:21:45 -0600 Subject: [PATCH 0956/3180] Add ided to drivers-initfs --- recipes/drivers-initfs/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/drivers-initfs/recipe.toml b/recipes/drivers-initfs/recipe.toml index 007f1434..0c11a0f8 100644 --- a/recipes/drivers-initfs/recipe.toml +++ b/recipes/drivers-initfs/recipe.toml @@ -6,6 +6,7 @@ template = "custom" script = """ BINS=( ahcid + ided nvmed pcid vesad From fdfbb09068ccea1a8371d3056a2243bf86e171f6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 7 Sep 2022 19:07:54 -0600 Subject: [PATCH 0957/3180] Only build ided on x86 --- recipes/drivers-initfs/recipe.toml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/drivers-initfs/recipe.toml b/recipes/drivers-initfs/recipe.toml index 0c11a0f8..4d0d51c8 100644 --- a/recipes/drivers-initfs/recipe.toml +++ b/recipes/drivers-initfs/recipe.toml @@ -6,7 +6,6 @@ template = "custom" script = """ BINS=( ahcid - ided nvmed pcid vesad @@ -14,7 +13,7 @@ BINS=( case "${TARGET}" in i686-unknown-redox | x86_64-unknown-redox) - BINS+=(acpid ps2d) + BINS+=(acpid ided ps2d) ;; *) ;; From 84281c13f17e983188638417cabd428d20d7a373 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 8 Sep 2022 09:16:23 -0600 Subject: [PATCH 0958/3180] Require exe wrapper for mesa build --- recipes/mesa/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/mesa/recipe.toml b/recipes/mesa/recipe.toml index 2366d4e3..9762ccf1 100644 --- a/recipes/mesa/recipe.toml +++ b/recipes/mesa/recipe.toml @@ -37,6 +37,9 @@ echo "prefix = '/'" >> cross_file.txt echo "libdir = 'lib'" >> cross_file.txt echo "bindir = 'bin'" >> cross_file.txt +echo "[properties]" >> cross_file.txt +echo "needs_exe_wrapper = true" >> cross_file.txt + meson "${COOKBOOK_SOURCE}" . \ --cross-file cross_file.txt \ --buildtype release \ From e606badcffbbcec9430155ef043954837c065a47 Mon Sep 17 00:00:00 2001 From: Fabio Di Francesco Date: Fri, 23 Sep 2022 15:15:46 +0000 Subject: [PATCH 0959/3180] recipe.sh v0.27 to v1.0.1 --- recipes/gigalomania/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/gigalomania/recipe.sh b/recipes/gigalomania/recipe.sh index 3563e6ba..6779300b 100644 --- a/recipes/gigalomania/recipe.sh +++ b/recipes/gigalomania/recipe.sh @@ -1,4 +1,4 @@ -VERSION=0.27 +VERSION=1.0.1 GIT=https://gitlab.redox-os.org/redox-os/gigalomania.git BRANCH=master BUILD_DEPENDS=(sdl_mixer sdl_image sdl liborbital libogg libpng libjpeg libvorbis zlib) From 5d94f9f7d748b0f58412443173070e851396434e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 27 Sep 2022 09:17:34 -0600 Subject: [PATCH 0960/3180] Update sdl2 repo --- recipes/sdl2/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/sdl2/recipe.toml b/recipes/sdl2/recipe.toml index db5f10fb..b13d726d 100644 --- a/recipes/sdl2/recipe.toml +++ b/recipes/sdl2/recipe.toml @@ -1,6 +1,6 @@ #TODO: TEST [source] -git = "https://gitlab.redox-os.org/fabiao/sdl2-src.git" +git = "https://gitlab.redox-os.org/redox-os/sdl2-src.git" [build] template = "custom" From 0db613c2f395823f23e5dc9ffe0d5f1cef754658 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 1 Oct 2022 16:57:20 -0600 Subject: [PATCH 0961/3180] Update winit --- recipes/winit/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/winit/recipe.sh b/recipes/winit/recipe.sh index 8f18b82c..4ac8f27c 100644 --- a/recipes/winit/recipe.sh +++ b/recipes/winit/recipe.sh @@ -1,6 +1,6 @@ GIT=https://gitlab.redox-os.org/redox-os/winit.git -GIT_UPSTREAM=https://github.com/tomaka/winit.git -BRANCH=redox +GIT_UPSTREAM=https://github.com/rust-windowing/winit.git +BRANCH=redox-0.27 CARGOFLAGS="--example window" function recipe_stage { From 1d46afdf63e270036c20aa113b3312f89ac1dea9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 1 Oct 2022 22:01:49 -0600 Subject: [PATCH 0962/3180] Update glutin --- recipes/glutin/recipe.sh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/recipes/glutin/recipe.sh b/recipes/glutin/recipe.sh index 7e3e04d7..41fc5a10 100644 --- a/recipes/glutin/recipe.sh +++ b/recipes/glutin/recipe.sh @@ -1,13 +1,12 @@ GIT=https://gitlab.redox-os.org/redox-os/glutin.git -GIT_UPSTREAM=https://github.com/tomaka/glutin.git +GIT_UPSTREAM=https://github.com/rust-windowing/glutin.git BUILD_DEPENDS=(llvm mesa zlib) -BRANCH=redox -CARGOFLAGS="--example window" +BRANCH=redox-0.29 function recipe_build { sysroot="$(realpath ../sysroot)" set -x - cargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ + cargo rustc --target "$TARGET" --release --package glutin_examples --example window \ -- \ -L "${sysroot}/lib" \ -C link-args="-Wl,-Bstatic $("${PKG_CONFIG}" --libs osmesa) -lz -lstdc++ -lc -lgcc" From 9c5886f0d84986a0476ff523c0b594d0a1a74977 Mon Sep 17 00:00:00 2001 From: Nagy Tibor Date: Tue, 4 Oct 2022 20:51:15 +0200 Subject: [PATCH 0963/3180] Fix SDL2 build Wrong repo path got specified in the SDL2 recipe when moving the project into the redox-os namespace. --- recipes/sdl2/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/sdl2/recipe.toml b/recipes/sdl2/recipe.toml index b13d726d..aa74d926 100644 --- a/recipes/sdl2/recipe.toml +++ b/recipes/sdl2/recipe.toml @@ -1,6 +1,6 @@ #TODO: TEST [source] -git = "https://gitlab.redox-os.org/redox-os/sdl2-src.git" +git = "https://gitlab.redox-os.org/redox-os/sdl2.git" [build] template = "custom" From d7913f297718887c0d743fa7f0e63b8b3042cc4e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 17 Oct 2022 11:01:14 -0600 Subject: [PATCH 0964/3180] Add libssh2 recipe --- recipes/libssh2/recipe.toml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 recipes/libssh2/recipe.toml diff --git a/recipes/libssh2/recipe.toml b/recipes/libssh2/recipe.toml new file mode 100644 index 00000000..3e2c526d --- /dev/null +++ b/recipes/libssh2/recipe.toml @@ -0,0 +1,9 @@ +[source] +tar = "https://www.libssh2.org/download/libssh2-1.10.0.tar.gz" +patches = [] + +[build] +template = "configure" +dependencies = [ + "openssl" +] From acbeb01397d3483f91e714b3dddc9d643941744b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 17 Oct 2022 11:19:35 -0600 Subject: [PATCH 0965/3180] Update nghttp2 --- recipes/nghttp2/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/nghttp2/recipe.toml b/recipes/nghttp2/recipe.toml index f44d6bb7..8ed503ed 100644 --- a/recipes/nghttp2/recipe.toml +++ b/recipes/nghttp2/recipe.toml @@ -1,5 +1,5 @@ [source] -tar = "https://github.com/nghttp2/nghttp2/releases/download/v1.37.0/nghttp2-1.37.0.tar.xz" +tar = "https://github.com/nghttp2/nghttp2/releases/download/v1.50.0/nghttp2-1.50.0.tar.xz" [build] template = "custom" From 3e081637a6723b2624cd9b5ce51a2904067666df Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 17 Oct 2022 11:52:17 -0600 Subject: [PATCH 0966/3180] Update cargo recipe --- recipes/cargo/recipe.sh | 11 ----------- recipes/cargo/recipe.toml | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 11 deletions(-) delete mode 100644 recipes/cargo/recipe.sh create mode 100644 recipes/cargo/recipe.toml diff --git a/recipes/cargo/recipe.sh b/recipes/cargo/recipe.sh deleted file mode 100644 index 2713ebec..00000000 --- a/recipes/cargo/recipe.sh +++ /dev/null @@ -1,11 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/cargo.git -GIT_UPSTREAM=https://github.com/rust-lang/cargo.git -BRANCH=redox -BUILD_DEPENDS=(curl openssl zlib) - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export DEP_OPENSSL_ROOT="$sysroot" - export OPENSSL_DIR="$sysroot" - export DEP_Z_ROOT="$sysroot" -} diff --git a/recipes/cargo/recipe.toml b/recipes/cargo/recipe.toml new file mode 100644 index 00000000..db424396 --- /dev/null +++ b/recipes/cargo/recipe.toml @@ -0,0 +1,17 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/cargo.git" +upstream = "https://github.com/rust-lang/cargo.git" +branch = "redox-2022-03-18" + +[build] +template = "custom" +dependencies = [ + "libssh2", + "openssl", + "zlib", +] +script = """ +export LIBSSH2_SYS_USE_PKG_CONFIG=1 +export LIBZ_SYS_STATIC=1 +cookbook_cargo +""" From 67438379aaf1e5b84cab8895aa156a14a0d0028e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 24 Oct 2022 21:22:24 -0600 Subject: [PATCH 0967/3180] Add cosmic-text recipe --- recipes/cosmic-text/.cargo/config | 2 ++ recipes/cosmic-text/recipe.sh | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 recipes/cosmic-text/.cargo/config create mode 100644 recipes/cosmic-text/recipe.sh diff --git a/recipes/cosmic-text/.cargo/config b/recipes/cosmic-text/.cargo/config new file mode 100644 index 00000000..b0e8868a --- /dev/null +++ b/recipes/cosmic-text/.cargo/config @@ -0,0 +1,2 @@ +[patch.crates-io] +libc = { git = "https://gitlab.redox-os.org/redox-os/liblibc.git", branch = "redox-0.2.136" } diff --git a/recipes/cosmic-text/recipe.sh b/recipes/cosmic-text/recipe.sh new file mode 100644 index 00000000..1547f24f --- /dev/null +++ b/recipes/cosmic-text/recipe.sh @@ -0,0 +1,17 @@ +GIT=https://github.com/pop-os/cosmic-text.git +BRANCH=main + +function recipe_build { + sysroot="$(realpath ../sysroot)" + set -x + cargo build --target "$TARGET" --release --package editor-orbclient + set +x + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + mkdir -pv "$dest/bin" + cp -v "target/${TARGET}/release/editor-orbclient" "$dest/bin/cosmic-text" + skip=1 +} From 86ad4bcdf015d5b795088bf072c2f0d0db3c2121 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 27 Oct 2022 12:08:26 -0600 Subject: [PATCH 0968/3180] cargo install with --no-track --- src/bin/cook.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index ac9c8972..f87c257d 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -465,6 +465,7 @@ COOKBOOK_CARGO_FLAGS=( --path "${COOKBOOK_SOURCE}" --root "${COOKBOOK_STAGE}" --locked + --no-track ) function cookbook_cargo { "${COOKBOOK_CARGO}" install "${COOKBOOK_CARGO_FLAGS[@]}" From f0c7eeda727b8fa412e5ff24a57f860453d224aa Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 2 Nov 2022 14:37:13 -0600 Subject: [PATCH 0969/3180] Change drivers-initfs opt level to s --- recipes/drivers-initfs/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/drivers-initfs/recipe.toml b/recipes/drivers-initfs/recipe.toml index 4d0d51c8..c1b84a39 100644 --- a/recipes/drivers-initfs/recipe.toml +++ b/recipes/drivers-initfs/recipe.toml @@ -26,7 +26,7 @@ do --manifest-path "${COOKBOOK_SOURCE}/${bin}/Cargo.toml" \ --bin "${bin}" \ -- \ - -C opt-level=z \ + -C opt-level=s \ -C panic=abort cp -v "target/${TARGET}/release/${bin}" "${COOKBOOK_STAGE}/bin" done From d7ce4d4d65b505a1c8428434ade5f49a143d59b2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 10 Nov 2022 12:03:32 -0700 Subject: [PATCH 0970/3180] Build packages in separate folder per target --- .gitignore | 22 +------ bin/aarch64-unknown-redox-pkg-config | 2 +- bin/i686-unknown-redox-pkg-config | 2 +- bin/x86_64-unknown-redox-llvm-config | 2 +- bin/x86_64-unknown-redox-pkg-config | 2 +- cook.sh | 87 +++++++++++++++------------- recipes/netsurf/recipe.sh | 4 +- repo.sh | 51 +++++++++------- src/bin/cook.rs | 31 ++++++---- 9 files changed, 108 insertions(+), 95 deletions(-) diff --git a/.gitignore b/.gitignore index c85b9a85..d63ce24e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,24 +1,8 @@ -build -repo +/build +/repo source source.tmp source-new source.tar source.tar.tmp -stage -stage.tmp -stage.pkg -stage.pkgar -stage.sig -stage.tar -stage.tar.gz -stage.toml -sysroot -sysroot.tmp -xargo - - -#Added by cargo - -/target -**/*.rs.bk +target diff --git a/bin/aarch64-unknown-redox-pkg-config b/bin/aarch64-unknown-redox-pkg-config index c1eb8323..0bcf777b 100755 --- a/bin/aarch64-unknown-redox-pkg-config +++ b/bin/aarch64-unknown-redox-pkg-config @@ -1,6 +1,6 @@ #!/usr/bin/env bash -export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_RECIPE}/sysroot" +export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" export PKG_CONFIG_LIBDIR="${PKG_CONFIG_SYSROOT_DIR}/lib/pkgconfig" export PKG_CONFIG_PATH="${PKG_CONFIG_SYSROOT_DIR}/share/pkgconfig" diff --git a/bin/i686-unknown-redox-pkg-config b/bin/i686-unknown-redox-pkg-config index c1eb8323..0bcf777b 100755 --- a/bin/i686-unknown-redox-pkg-config +++ b/bin/i686-unknown-redox-pkg-config @@ -1,6 +1,6 @@ #!/usr/bin/env bash -export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_RECIPE}/sysroot" +export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" export PKG_CONFIG_LIBDIR="${PKG_CONFIG_SYSROOT_DIR}/lib/pkgconfig" export PKG_CONFIG_PATH="${PKG_CONFIG_SYSROOT_DIR}/share/pkgconfig" diff --git a/bin/x86_64-unknown-redox-llvm-config b/bin/x86_64-unknown-redox-llvm-config index c3658a16..210eca97 100755 --- a/bin/x86_64-unknown-redox-llvm-config +++ b/bin/x86_64-unknown-redox-llvm-config @@ -98,7 +98,7 @@ def fail(message): print(message, file=sys.stderr) sys.exit(1) -prefix = os.environ["COOKBOOK_RECIPE"] + "/sysroot" +prefix = os.environ["COOKBOOK_SYSROOT"] args = [] link_static = False diff --git a/bin/x86_64-unknown-redox-pkg-config b/bin/x86_64-unknown-redox-pkg-config index c1eb8323..0bcf777b 100755 --- a/bin/x86_64-unknown-redox-pkg-config +++ b/bin/x86_64-unknown-redox-pkg-config @@ -1,6 +1,6 @@ #!/usr/bin/env bash -export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_RECIPE}/sysroot" +export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" export PKG_CONFIG_LIBDIR="${PKG_CONFIG_SYSROOT_DIR}/lib/pkgconfig" export PKG_CONFIG_PATH="${PKG_CONFIG_SYSROOT_DIR}/share/pkgconfig" diff --git a/cook.sh b/cook.sh index 5ac9471e..de191d27 100755 --- a/cook.sh +++ b/cook.sh @@ -266,8 +266,8 @@ function op { fi if [ "$skip" -eq "0" ] then - rm -rf sysroot - mkdir sysroot + rm -rf "${COOKBOOK_SYSROOT}" + mkdir "${COOKBOOK_SYSROOT}" if [ ${#BUILD_DEPENDS} -gt 0 ] then @@ -279,32 +279,32 @@ function op { do pkgar \ extract \ - sysroot \ + "${COOKBOOK_SYSROOT}" \ --archive "$REPO/$i.pkgar" \ --pkey "${ROOT}/build/id_ed25519.pub.toml" done fi - rm -rf build + rm -rf "${COOKBOOK_BUILD}" if [ "$PREPARE_COPY" -eq "0" ] then - mkdir build + mkdir "${COOKBOOK_BUILD}" else - cp -rp source build + cp -rp source "${COOKBOOK_BUILD}" fi for patch in *.patch do - patch -p1 -d build < "$patch" + patch -p1 -d "${COOKBOOK_BUILD}" < "$patch" done fi ;; unprepare) - rm -rf build - rm -rf sysroot + rm -rf "${COOKBOOK_BUILD}" + rm -rf "${COOKBOOK_SYSROOT}" ;; version) - pushd build > /dev/null + pushd "${COOKBOOK_BUILD}" > /dev/null skip=0 if [ "$(type -t recipe_version)" = "function" ] then @@ -317,15 +317,15 @@ function op { popd > /dev/null ;; gitversion) - if [ -d build/.git ] + if [ -d "${COOKBOOK_BUILD}"/.git ] then - echo "$(op $1 version)-$(git -C build rev-parse --short HEAD)" + echo "$(op $1 version)-$(git -C "${COOKBOOK_BUILD}" rev-parse --short HEAD)" else op $1 version fi ;; build) - pushd build > /dev/null + pushd "${COOKBOOK_BUILD}" > /dev/null skip=0 if [ "$(type -t recipe_build)" = "function" ] then @@ -352,7 +352,7 @@ function op { popd > /dev/null ;; test) - pushd build > /dev/null + pushd "${COOKBOOK_BUILD}" > /dev/null skip=0 if [ "$(type -t recipe_test)" = "function" ] then @@ -373,7 +373,7 @@ function op { popd > /dev/null ;; clean) - pushd build > /dev/null + pushd "${COOKBOOK_BUILD}" > /dev/null skip=0 if [ "$(type -t recipe_clean)" = "function" ] then @@ -387,10 +387,10 @@ function op { ;; stage) op $1 unstage - mkdir -p stage - stage="$(realpath stage)" + mkdir -p "${COOKBOOK_STAGE}" + stage="$(realpath "${COOKBOOK_STAGE}")" source="$(realpath source)" - pushd build > /dev/null + pushd "${COOKBOOK_BUILD}" > /dev/null skip=0 if [ "$(type -t recipe_stage)" = "function" ] then @@ -438,22 +438,22 @@ function op { popd > /dev/null ;; unstage) - rm -rfv stage + rm -rfv "${COOKBOOK_STAGE}" ;; pkg) pkgar \ create \ - --archive stage.pkgar \ + --archive "${COOKBOOK_STAGE}.pkgar" \ --skey "${ROOT}/build/id_ed25519.toml" \ - stage + "${COOKBOOK_STAGE}" ;; unpkg) - rm -fv stage.pkgar + rm -fv "${COOKBOOK_STAGE}.pkgar" ;; tar) - echo "name = \"$1\"" > "stage.toml" - echo "version = \"$(op $1 version)\"" >> "stage.toml" - echo "target = \"$TARGET\"" >> "stage.toml" + echo "name = \"$1\"" > "${COOKBOOK_STAGE}.toml" + echo "version = \"$(op $1 version)\"" >> "${COOKBOOK_STAGE}.toml" + echo "target = \"$TARGET\"" >> "${COOKBOOK_STAGE}.toml" # Add runtime dependencies to package if they exist if [ -n "$DEPENDS" ] @@ -461,32 +461,34 @@ function op { # Remove leading and trailing whitespace, replace whitespace between # package names with commas, and surround package names with quotes dependencies=$(echo -e "$DEPENDS" | sed -E 's/^[[:space:]]*//;s/[[:space:]]*$//;s/[[:space:]]+/,/g;s/[^, ][^, ]*/"&"/g') - echo "depends = [$dependencies]" >> "stage.toml" - else - echo "depends = []" >> "stage.toml" + echo "depends = [$dependencies]" >> "${COOKBOOK_STAGE}.toml" + else + echo "depends = []" >> "${COOKBOOK_STAGE}.toml" fi - rm -rf stage/pkg - mkdir -p stage/pkg + rm -rf "${COOKBOOK_STAGE}/pkg" + mkdir -p "${COOKBOOK_STAGE}/pkg" - pushd stage > /dev/null + pushd "${COOKBOOK_STAGE}" > /dev/null find -L . -type f | cut -d / -f 2- | sort | while read file do $SHASUM "$file" >> "pkg/$1.sha256sums" done popd > /dev/null - cp -v stage.toml "stage/pkg/$1.toml" - pkg --target=$TARGET create stage + cp -v "${COOKBOOK_STAGE}.toml" "${COOKBOOK_STAGE}/pkg/$1.toml" + pushd "$(dirname "${COOKBOOK_STAGE}")" > /dev/null + pkg --target="$TARGET" create "$(basename "${COOKBOOK_STAGE}")" + popd > /dev/null ;; untar) - rm -rfv stage.tar.gz stage.sig stage.toml + rm -rfv "${COOKBOOK_STAGE}.tar.gz" "${COOKBOOK_STAGE}.sig" "${COOKBOOK_STAGE}.toml" ;; publish) mkdir -p "$REPO" - cp -v stage.tar.gz "$REPO/$1.tar.gz" - cp -v stage.sig "$REPO/$1.sig" - cp -v stage.toml "$REPO/$1.toml" + cp -v "${COOKBOOK_STAGE}.tar.gz" "$REPO/$1.tar.gz" + cp -v "${COOKBOOK_STAGE}.sig" "$REPO/$1.sig" + cp -v "${COOKBOOK_STAGE}.toml" "$REPO/$1.toml" ;; unpublish) rm -rfv "$REPO/$1.tar.gz" "$REPO/$1.sig" "$REPO/$1.toml" @@ -503,11 +505,18 @@ then then export COOKBOOK_RECIPE="${ROOT}/recipes/$1" + TARGET_DIR="${COOKBOOK_RECIPE}/target/${TARGET}" + mkdir -p "${TARGET_DIR}" + + export COOKBOOK_BUILD="${TARGET_DIR}/build" + export COOKBOOK_STAGE="${TARGET_DIR}/stage" + export COOKBOOK_SOURCE="${COOKBOOK_RECIPE}/source" + export COOKBOOK_SYSROOT="${TARGET_DIR}/sysroot" export PKG_CONFIG_ALLOW_CROSS=1 export PKG_CONFIG_PATH= - export PKG_CONFIG_LIBDIR="${COOKBOOK_RECIPE}/sysroot/lib/pkgconfig" - export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_RECIPE}/sysroot" + export PKG_CONFIG_LIBDIR="${COOKBOOK_SYSROOT}/lib/pkgconfig" + export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" cd "${COOKBOOK_RECIPE}" diff --git a/recipes/netsurf/recipe.sh b/recipes/netsurf/recipe.sh index 82c7ea74..ac4be6ad 100644 --- a/recipes/netsurf/recipe.sh +++ b/recipes/netsurf/recipe.sh @@ -35,9 +35,9 @@ function recipe_clean { } function recipe_stage { - dest="$(realpath $1)" + dest="$(realpath "$1")" "$REDOX_MAKE" DESTDIR="$dest" install mkdir -pv "$dest/ui/apps" - cp -v ../manifest "$dest/ui/apps/00_netsurf" + cp -v "${COOKBOOK_RECIPE}/manifest" "$dest/ui/apps/00_netsurf" skip=1 } diff --git a/repo.sh b/repo.sh index 92aa673c..f85b4da9 100755 --- a/repo.sh +++ b/repo.sh @@ -22,17 +22,24 @@ fi for recipe in $recipes do - if [ -e "recipes/$recipe/recipe.toml" ] + COOKBOOK_RECIPE="recipes/$recipe" + TARGET_DIR="${COOKBOOK_RECIPE}/target/${TARGET}" + COOKBOOK_BUILD="${TARGET_DIR}/build" + COOKBOOK_STAGE="${TARGET_DIR}/stage" + COOKBOOK_SOURCE="${COOKBOOK_RECIPE}/source" + COOKBOOK_SYSROOT="${TARGET_DIR}/sysroot" + + if [ -e "${COOKBOOK_RECIPE}/recipe.toml" ] then target/release/cook "$recipe" - if [ ! -f "recipes/$recipe/stage.tar.gz" ] + if [ ! -f "${COOKBOOK_STAGE}.tar.gz" ] then echo -e "\033[01;38;5;155mrepo - legacy packaging $recipe\033[0m" >&2 ./cook.sh "$recipe" tar $DEBUG else - TIME_PKG="$($STAT -c "%Y" recipes/$recipe/stage.pkgar)" - TIME_STAGE="$($STAT -c "%Y" recipes/$recipe/stage.tar.gz)" + TIME_PKG="$($STAT -c "%Y" "${COOKBOOK_STAGE}.pkgar")" + TIME_STAGE="$($STAT -c "%Y" "${COOKBOOK_STAGE}.tar.gz")" if [ "$TIME_PKG" -gt "$TIME_STAGE" ] then echo -e "\033[01;38;5;155mrepo - legacy repackaging $recipe\033[0m" >&2 @@ -41,28 +48,28 @@ do fi # Match pkgar and tar time - touch --no-create --reference="recipes/$recipe/stage.tar.gz" "recipes/$recipe/stage.pkgar" + touch --no-create --reference="${COOKBOOK_STAGE}.tar.gz" "${COOKBOOK_STAGE}.pkgar" continue fi - if [ ! -d "recipes/$recipe/source/" ] + if [ ! -d "${COOKBOOK_SOURCE}" ] then echo -e "\033[01;38;5;155mrepo - fetching $recipe\033[0m" >&2 ./cook.sh "$recipe" fetch fi - if [ ! -d "recipes/$recipe/build/" ] + if [ ! -d "${COOKBOOK_BUILD}" ] then echo -e "\033[01;38;5;155mrepo - preparing $recipe\033[0m" >&2 ./cook.sh "$recipe" prepare - elif [ ! -d "recipes/$recipe/sysroot/" ] + elif [ ! -d "${COOKBOOK_SYSROOT}" ] then echo -e "\033[01;38;5;155mrepo - repreparing $recipe\033[0m" >&2 ./cook.sh "$recipe" unprepare prepare else - TIME_SOURCE="$($FIND recipes/$recipe/source/ -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" - TIME_BUILD="$($FIND recipes/$recipe/build/ -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" + TIME_SOURCE="$($FIND "${COOKBOOK_SOURCE}" -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" + TIME_BUILD="$($FIND "${COOKBOOK_BUILD}" -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" if [ "$TIME_SOURCE" -gt "$TIME_BUILD" ] then echo -e "\033[01;38;5;155mrepo - repreparing $recipe\033[0m" >&2 @@ -70,14 +77,14 @@ do fi fi - if [ ! -f "recipes/$recipe/stage.tar.gz" ] + if [ ! -f "${COOKBOOK_STAGE}.tar.gz" ] then echo -e "\033[01;38;5;155mrepo - building $recipe\033[0m" >&2 ./cook.sh "$recipe" build stage tar $DEBUG else - TIME_BUILD="$($FIND recipes/$recipe/build/ -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" - TIME_STAGE="$($STAT -c "%Y" recipes/$recipe/stage.tar.gz)" - TIME_RECIPE="$($FIND recipes/$recipe/{recipe.sh,*.patch} -printf '%Ts\n' | sort -nr | head -n 1)" + TIME_BUILD="$($FIND "${COOKBOOK_BUILD}" -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" + TIME_STAGE="$($STAT -c "%Y" "${COOKBOOK_STAGE}.tar.gz")" + TIME_RECIPE="$($FIND "${COOKBOOK_RECIPE}"/{recipe.sh,*.patch} -printf '%Ts\n' | sort -nr | head -n 1)" if [ "$TIME_BUILD" -gt "$TIME_STAGE" -o "$TIME_RECIPE" -gt "$TIME_STAGE" ] then echo -e "\033[01;38;5;155mrepo - rebuilding $recipe\033[0m" >&2 @@ -87,13 +94,13 @@ do fi fi - if [ ! -f "recipes/$recipe/stage.pkgar" ] + if [ ! -f "${COOKBOOK_STAGE}.pkgar" ] then echo -e "\033[01;38;5;155mrepo - packaging $recipe\033[0m" >&2 ./cook.sh "$recipe" pkg $DEBUG else - TIME_STAGE="$($STAT -c "%Y" recipes/$recipe/stage.tar.gz)" - TIME_PKG="$($STAT -c "%Y" recipes/$recipe/stage.pkgar)" + TIME_STAGE="$($STAT -c "%Y" "${COOKBOOK_STAGE}.tar.gz")" + TIME_PKG="$($STAT -c "%Y" "${COOKBOOK_STAGE}.pkgar")" if [ "$TIME_STAGE" -gt "$TIME_PKG" ] then echo -e "\033[01;38;5;155mrepo - repackaging $recipe\033[0m" >&2 @@ -106,16 +113,20 @@ mkdir -p "$REPO" for recipe in $recipes do - if [ "recipes/$recipe/stage.tar.gz" -nt "$REPO/$recipe.tar.gz" ] + COOKBOOK_RECIPE="recipes/$recipe" + TARGET_DIR="${COOKBOOK_RECIPE}/target/${TARGET}" + COOKBOOK_STAGE="${TARGET_DIR}/stage" + + if [ "${COOKBOOK_STAGE}.tar.gz" -nt "$REPO/$recipe.tar.gz" ] then echo -e "\033[01;38;5;155mrepo - publishing $recipe\033[0m" >&2 ./cook.sh $recipe publish fi - if [ "recipes/$recipe/stage.pkgar" -nt "$REPO/$recipe.pkgar" ] + if [ "${COOKBOOK_STAGE}.pkgar" -nt "$REPO/$recipe.pkgar" ] then echo -e "\033[01;38;5;155mrepo - publishing $recipe\033[0m" >&2 - cp -v "recipes/$recipe/stage.pkgar" "$REPO/$recipe.pkgar" + cp -v "${COOKBOOK_STAGE}.pkgar" "$REPO/$recipe.pkgar" fi done diff --git a/src/bin/cook.rs b/src/bin/cook.rs index f87c257d..5d36682d 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -374,10 +374,10 @@ fi"#); Ok(source_dir) } -fn build(recipe_dir: &Path, source_dir: &Path, build: &BuildRecipe) -> Result { +fn build(recipe_dir: &Path, source_dir: &Path, target_dir: &Path, build: &BuildRecipe) -> Result { let source_modified = modified_dir_ignore_git(&source_dir)?; - let sysroot_dir = recipe_dir.join("sysroot"); + let sysroot_dir = target_dir.join("sysroot"); // Rebuild sysroot if source is newer //TODO: rebuild on recipe changes if sysroot_dir.is_dir() { @@ -388,7 +388,7 @@ fn build(recipe_dir: &Path, source_dir: &Path, build: &BuildRecipe) -> Result Result Result Result Result { +fn package(recipe_dir: &Path, stage_dir: &Path, target_dir: &Path, package: &PackageRecipe) -> Result { //TODO: metadata like dependencies, name, and version let secret_path = "build/id_ed25519.toml"; @@ -574,7 +574,7 @@ fn package(recipe_dir: &Path, stage_dir: &Path, package: &PackageRecipe) -> Resu ))?; } - let package_file = recipe_dir.join("stage.pkgar"); + let package_file = target_dir.join("stage.pkgar"); // Rebuild package if stage is newer //TODO: rebuild on recipe changes if package_file.is_file() { @@ -606,12 +606,21 @@ fn cook(recipe_dir: &Path, recipe: &Recipe, fetch_only: bool) -> Result<(), Stri if fetch_only { return Ok(()); } - let stage_dir = build(&recipe_dir, &source_dir, &recipe.build).map_err(|err| format!( + let target_parent_dir = recipe_dir.join("target"); + if ! target_parent_dir.is_dir() { + create_dir(&target_parent_dir)?; + } + let target_dir = target_parent_dir.join(redoxer::target()); + if ! target_dir.is_dir() { + create_dir(&target_dir)?; + } + + let stage_dir = build(&recipe_dir, &source_dir, &target_dir, &recipe.build).map_err(|err| format!( "failed to build: {}", err ))?; - let package_file = package(&recipe_dir, &stage_dir, &recipe.package).map_err(|err| format!( + let package_file = package(&recipe_dir, &stage_dir, &target_dir, &recipe.package).map_err(|err| format!( "failed to package: {}", err ))?; From 0173c3555d8fbf0e89312b583b2a5607e210ae7a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 10 Nov 2022 16:14:04 -0700 Subject: [PATCH 0971/3180] Fix paths in llvm and rust recipes --- recipes/llvm/recipe.toml | 2 +- recipes/rust/recipe.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/llvm/recipe.toml b/recipes/llvm/recipe.toml index d7902daa..41e98cf3 100644 --- a/recipes/llvm/recipe.toml +++ b/recipes/llvm/recipe.toml @@ -19,7 +19,7 @@ COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_INSTALL_INCLUDEDIR="include" -DCMAKE_INSTALL_OLDINCLUDEDIR="/include" -DCMAKE_SYSTEM_NAME=Generic - -DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE=$(realpath ../native.cmake)" + -DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE=$(realpath "${COOKBOOK_RECIPE}/native.cmake")" -DLLVM_BUILD_BENCHMARKS=Off -DLLVM_BUILD_EXAMPLES=Off -DLLVM_BUILD_TESTS=Off diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index be4f36c8..2d1c4d36 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -15,7 +15,7 @@ function recipe_update { } function recipe_build { - config="$(realpath ../config.toml)" + config="$(realpath "${COOKBOOK_RECIPE}/config.toml")" source="$(realpath ../source)" unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP python3 "$source/x.py" install --config "$config" --jobs $(nproc) --incremental From f6f5c0321e78167780bab7f8c852f2930d56ab03 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Nov 2022 08:48:58 -0700 Subject: [PATCH 0972/3180] Remove unused cook commands --- cook.sh | 144 ----------------------------- recipes/atk/recipe.sh | 10 -- recipes/autoconf/recipe.sh | 10 -- recipes/automake/recipe.sh | 10 -- recipes/cairo/recipe.sh | 10 -- recipes/cairodemo/recipe.sh | 10 -- recipes/cmatrix/recipe.sh | 10 -- recipes/diffutils/recipe.sh | 10 -- recipes/dosbox/recipe.sh | 10 -- recipes/duktape/recipe.sh | 10 -- recipes/eduke32/recipe.sh | 10 -- recipes/ffmpeg/recipe.sh | 10 -- recipes/fontconfig/recipe.sh | 10 -- recipes/freeciv/recipe.sh | 10 -- recipes/freedoom/recipe.sh | 10 -- recipes/freeglut/recipe.sh | 10 -- recipes/fribidi/recipe.sh | 10 -- recipes/gawk/recipe.sh | 10 -- recipes/gcc/recipe.sh | 10 -- recipes/gdk-pixbuf/recipe.sh | 10 -- recipes/gears/recipe.sh | 10 -- recipes/generaluser-gs/recipe.sh | 10 -- recipes/gigalomania/recipe.sh | 10 -- recipes/git/recipe.sh | 10 -- recipes/glib/recipe.sh | 10 -- recipes/gnu-binutils/recipe.sh | 10 -- recipes/gnu-grep/recipe.sh | 10 -- recipes/gnu-make/recipe.sh | 10 -- recipes/gstreamer/recipe.sh | 10 -- recipes/harfbuzz/recipe.sh | 10 -- recipes/jansson/recipe.sh | 10 -- recipes/keyboard-sfx/recipe.sh | 10 -- recipes/libc-bench/recipe.sh | 10 -- recipes/lua/recipe.sh | 10 -- recipes/mdp/recipe.sh | 10 -- recipes/mesa_glu/recipe.sh | 10 -- recipes/mgba/recipe.sh | 10 -- recipes/ncdu/recipe.sh | 8 -- recipes/ncurses/recipe.sh | 10 -- recipes/ncursesw/recipe.sh | 10 -- recipes/netsurf/recipe.sh | 10 -- recipes/neverball/recipe.sh | 10 -- recipes/newlib/recipe.sh | 10 -- recipes/newlibtest/recipe.sh | 10 -- recipes/openjazz/recipe.sh | 10 -- recipes/openttd-opengfx/recipe.sh | 10 -- recipes/openttd-openmsx/recipe.sh | 12 --- recipes/openttd-opensfx/recipe.sh | 12 --- recipes/openttd/recipe.sh | 10 -- recipes/osdemo/recipe.sh | 10 -- recipes/pango/recipe.sh | 10 -- recipes/patch/recipe.sh | 10 -- recipes/perl/recipe.sh | 10 -- recipes/pixman/recipe.sh | 10 -- recipes/pkg-config/recipe.sh | 10 -- recipes/prboom/recipe.sh | 10 -- recipes/python/recipe.sh | 10 -- recipes/qemu/recipe.sh | 10 -- recipes/rust/recipe.sh | 14 +-- recipes/rustual-boy/recipe.sh | 4 - recipes/schismtracker/recipe.sh | 10 -- recipes/scummvm/recipe.sh | 10 -- recipes/sdl-player/recipe.sh | 10 -- recipes/sdl2_gears/recipe.sh | 10 -- recipes/sdl2_ttf/recipe.sh | 10 -- recipes/sdl_gfx/recipe.sh | 10 -- recipes/sdl_image/recipe.sh | 10 -- recipes/sdl_mixer/recipe.sh | 10 -- recipes/sdl_ttf/recipe.sh | 10 -- recipes/servo/recipe.sh | 10 -- recipes/shared-mime-info/recipe.sh | 10 -- recipes/sopwith/recipe.sh | 10 -- recipes/ssh/recipe.sh | 10 -- recipes/syobonaction/recipe.sh | 10 -- recipes/terminfo/recipe.sh | 10 -- recipes/timidity/recipe.sh | 10 -- recipes/ttf-hack/recipe.sh | 10 -- recipes/vice/recipe.sh | 10 -- recipes/vim/recipe.sh | 10 -- recipes/vttest/recipe.sh | 10 -- recipes/wesnoth/recipe.sh | 10 -- update.sh | 19 ---- 82 files changed, 1 insertion(+), 962 deletions(-) delete mode 100755 update.sh diff --git a/cook.sh b/cook.sh index de191d27..5f99f16d 100755 --- a/cook.sh +++ b/cook.sh @@ -41,28 +41,16 @@ function usage { echo " distclean" >&2 echo " build" >&2 echo " clean" >&2 - echo " diff" >&2 - echo " diff_origin" >&2 - echo " diff_upstream" >&2 - echo " difftool" >&2 - echo " difftool_origin" >&2 - echo " difftool_upstream" >&2 echo " fetch" >&2 echo " unfetch" >&2 echo " pkg" >&2 echo " unpkg" >&2 echo " prepare" >&2 echo " unprepare" >&2 - echo " publish" >&2 - echo " unpublish" >&2 echo " stage" >&2 echo " unstage" >&2 - echo " status" >&2 - echo " status_origin" >&2 - echo " status_upstream" >&2 echo " tar" >&2 echo " untar" >&2 - echo " update" >&2 echo " version" >&2 } @@ -156,108 +144,6 @@ function op { rm -f source.tar fi ;; - status) - if [ -n "$TAR" ] - then - tar --compare --file="source.tar" -C "source" --strip-components=1 2>&1 | - grep -v "tar: :" | grep -v '\(Mod time\|Mode\|Gid\|Uid\) differs' || - true - elif [ -n "$GIT" ] - then - git -C source diff --stat --color - fi - ;; - status_origin) - if [ -n "$GIT" ] - then - if [ -n "$BRANCH" ] - then - git -C source diff --stat --color "origin/$BRANCH" - else - git -C source diff --stat --color "origin/master" - fi - fi - ;; - status_upstream) - if [ -n "$GIT_UPSTREAM" ] - then - if [ -n "$BRANCH" ] - then - git -C source diff --stat --color "upstream/$BRANCH" - else - git -C source diff --stat --color "upstream/master" - fi - fi - ;; - diff) - if [ -n "$GIT" ] - then - git -C source diff - fi - ;; - diff_origin) - if [ -n "$GIT" ] - then - if [ -n "$BRANCH" ] - then - git -C source diff "origin/$BRANCH" - else - git -C source diff "origin/master" - fi - fi - ;; - diff_upstream) - if [ -n "$GIT_UPSTREAM" ] - then - if [ -n "$BRANCH" ] - then - git -C source diff "upstream/$BRANCH" - else - git -C source diff "upstream/master" - fi - fi - ;; - difftool) - if [ -n "$GIT" ] - then - git -C source difftool -d - fi - ;; - difftool_origin) - if [ -n "$GIT" ] - then - if [ -n "$BRANCH" ] - then - git -C source difftool -d "origin/$BRANCH" - else - git -C source difftool -d "origin/master" - fi - fi - ;; - difftool_upstream) - if [ -n "$GIT_UPSTREAM" ] - then - if [ -n "$BRANCH" ] - then - git -C source difftool -d "upstream/$BRANCH" - else - git -C source difftool -d "upstream/master" - fi - fi - ;; - update) - pushd source > /dev/null - skip=0 - if [ "$(type -t recipe_update)" = "function" ] - then - recipe_update - fi - if [ "$skip" -eq "0" ] - then - "${CARGO[@]}" update - fi - popd > /dev/null - ;; prepare) skip=0 if [ "$(type -t recipe_prepare)" = "function" ] @@ -351,27 +237,6 @@ function op { fi popd > /dev/null ;; - test) - pushd "${COOKBOOK_BUILD}" > /dev/null - skip=0 - if [ "$(type -t recipe_test)" = "function" ] - then - recipe_test - fi - - release_flag="--release" - if [ "$DEBUG" == 1 ] - then - release_flag= - fi - - if [ "$skip" -eq "0" ] - then - cp -p "$ROOT/Xargo.toml" "Xargo.toml" - "${CARGO[@]}" test --no-run --target "$TARGET" $release_flag $CARGOFLAGS - fi - popd > /dev/null - ;; clean) pushd "${COOKBOOK_BUILD}" > /dev/null skip=0 @@ -484,15 +349,6 @@ function op { untar) rm -rfv "${COOKBOOK_STAGE}.tar.gz" "${COOKBOOK_STAGE}.sig" "${COOKBOOK_STAGE}.toml" ;; - publish) - mkdir -p "$REPO" - cp -v "${COOKBOOK_STAGE}.tar.gz" "$REPO/$1.tar.gz" - cp -v "${COOKBOOK_STAGE}.sig" "$REPO/$1.sig" - cp -v "${COOKBOOK_STAGE}.toml" "$REPO/$1.toml" - ;; - unpublish) - rm -rfv "$REPO/$1.tar.gz" "$REPO/$1.sig" "$REPO/$1.toml" - ;; *) usage $1 ;; diff --git a/recipes/atk/recipe.sh b/recipes/atk/recipe.sh index 1451b72b..7fd1786d 100755 --- a/recipes/atk/recipe.sh +++ b/recipes/atk/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" sysroot="$(realpath ../sysroot)" @@ -29,11 +24,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/autoconf/recipe.sh b/recipes/autoconf/recipe.sh index 28fe7211..7a4c251c 100644 --- a/recipes/autoconf/recipe.sh +++ b/recipes/autoconf/recipe.sh @@ -6,11 +6,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { wget -O build-aux/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" ./configure --build=${BUILD} --host=${HOST} --prefix='' @@ -18,11 +13,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/automake/recipe.sh b/recipes/automake/recipe.sh index 9f97b2c0..e93706dc 100644 --- a/recipes/automake/recipe.sh +++ b/recipes/automake/recipe.sh @@ -6,11 +6,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { wget -O lib/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" sed -i 's|.*/doc/help2man.*|\&\& true|' Makefile.in @@ -21,11 +16,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/cairo/recipe.sh b/recipes/cairo/recipe.sh index d20973a3..3c8e5363 100755 --- a/recipes/cairo/recipe.sh +++ b/recipes/cairo/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { #Workaround to disable the not redox compatible tests printf "all:\n\ninstall:\n" > ./test/Makefile.in @@ -31,11 +26,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/cairodemo/recipe.sh b/recipes/cairodemo/recipe.sh index b26b42cf..3a42c66c 100755 --- a/recipes/cairodemo/recipe.sh +++ b/recipes/cairodemo/recipe.sh @@ -5,11 +5,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_prepare { rm -rf source mkdir source @@ -26,11 +21,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/cmatrix/recipe.sh b/recipes/cmatrix/recipe.sh index d721f308..eac097f3 100644 --- a/recipes/cmatrix/recipe.sh +++ b/recipes/cmatrix/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib -static" @@ -27,11 +22,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/diffutils/recipe.sh b/recipes/diffutils/recipe.sh index 5d2cc77b..a7f57fb8 100644 --- a/recipes/diffutils/recipe.sh +++ b/recipes/diffutils/recipe.sh @@ -6,11 +6,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { export LDFLAGS="-static" autoreconf @@ -27,11 +22,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/dosbox/recipe.sh b/recipes/dosbox/recipe.sh index 45b11c95..c45c96f1 100644 --- a/recipes/dosbox/recipe.sh +++ b/recipes/dosbox/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include/SDL" @@ -30,11 +25,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/duktape/recipe.sh b/recipes/duktape/recipe.sh index 5b8ccb92..73331707 100644 --- a/recipes/duktape/recipe.sh +++ b/recipes/duktape/recipe.sh @@ -6,22 +6,12 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sed -i "s/= gcc/= $TARGET-gcc/g" Makefile.cmdline "$REDOX_MAKE" -f Makefile.cmdline -j"$($NPROC)" skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/eduke32/recipe.sh b/recipes/eduke32/recipe.sh index a67de8d4..658c2d0d 100644 --- a/recipes/eduke32/recipe.sh +++ b/recipes/eduke32/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include -I$sysroot/include/SDL" @@ -22,11 +17,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/ffmpeg/recipe.sh b/recipes/ffmpeg/recipe.sh index 4ec76020..f067b3d5 100644 --- a/recipes/ffmpeg/recipe.sh +++ b/recipes/ffmpeg/recipe.sh @@ -8,11 +8,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$PWD/../sysroot" export CPPFLAGS="-I$sysroot/include" @@ -31,11 +26,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/fontconfig/recipe.sh b/recipes/fontconfig/recipe.sh index 81f03409..d3382aef 100755 --- a/recipes/fontconfig/recipe.sh +++ b/recipes/fontconfig/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" sysroot="$(realpath ../sysroot)" @@ -29,11 +24,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/freeciv/recipe.sh b/recipes/freeciv/recipe.sh index b62660d9..c97e02c2 100644 --- a/recipes/freeciv/recipe.sh +++ b/recipes/freeciv/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { wget -O bootstrap/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" sysroot="$(realpath ../sysroot)" @@ -34,11 +29,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/freedoom/recipe.sh b/recipes/freedoom/recipe.sh index f539fb1e..f60d7b2f 100644 --- a/recipes/freedoom/recipe.sh +++ b/recipes/freedoom/recipe.sh @@ -6,21 +6,11 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { echo "skipping build" skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { echo "skipping clean" skip=1 diff --git a/recipes/freeglut/recipe.sh b/recipes/freeglut/recipe.sh index b95be4ce..d291f77e 100644 --- a/recipes/freeglut/recipe.sh +++ b/recipes/freeglut/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" @@ -27,11 +22,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/fribidi/recipe.sh b/recipes/fribidi/recipe.sh index c48a7309..33e5eaec 100755 --- a/recipes/fribidi/recipe.sh +++ b/recipes/fribidi/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" @@ -27,11 +22,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/gawk/recipe.sh b/recipes/gawk/recipe.sh index e83aec7b..6e616566 100644 --- a/recipes/gawk/recipe.sh +++ b/recipes/gawk/recipe.sh @@ -2,22 +2,12 @@ GIT=https://gitlab.redox-os.org/redox-os/gawk.git GIT_UPSTREAM=https://git.savannah.gnu.org/git/gawk.git BRANCH=redox -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { ./configure --build=${BUILD} --host=${HOST} --prefix=/ ac_cv_func_gethostbyname=no ac_cv_func_connect=no "$REDOX_MAKE" -j"$($NPROC)" skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index e7f9e420..c6e17ae2 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -10,11 +10,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { ./contrib/download_prerequisites cp config.sub gmp/config.sub @@ -44,11 +39,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/gdk-pixbuf/recipe.sh b/recipes/gdk-pixbuf/recipe.sh index 26a41f3e..572c6441 100755 --- a/recipes/gdk-pixbuf/recipe.sh +++ b/recipes/gdk-pixbuf/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export LDFLAGS="-static" @@ -62,11 +57,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/gears/recipe.sh b/recipes/gears/recipe.sh index 2b8dc8c9..bbf3b4c2 100644 --- a/recipes/gears/recipe.sh +++ b/recipes/gears/recipe.sh @@ -5,11 +5,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_prepare { rm -rf source mkdir source @@ -24,11 +19,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/generaluser-gs/recipe.sh b/recipes/generaluser-gs/recipe.sh index 8ec0e0ef..6ce7fa84 100644 --- a/recipes/generaluser-gs/recipe.sh +++ b/recipes/generaluser-gs/recipe.sh @@ -6,21 +6,11 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { echo "skipping build" skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { echo "skipping clean" skip=1 diff --git a/recipes/gigalomania/recipe.sh b/recipes/gigalomania/recipe.sh index 6779300b..ea713c2c 100644 --- a/recipes/gigalomania/recipe.sh +++ b/recipes/gigalomania/recipe.sh @@ -8,11 +8,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { export CPPHOST=${HOST}-g++ sysroot="$(realpath ../sysroot)" @@ -22,11 +17,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/git/recipe.sh b/recipes/git/recipe.sh index ab8edf0c..eeb4ef66 100644 --- a/recipes/git/recipe.sh +++ b/recipes/git/recipe.sh @@ -22,11 +22,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib -static" @@ -43,11 +38,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/glib/recipe.sh b/recipes/glib/recipe.sh index a04a50b6..dede5aee 100644 --- a/recipes/glib/recipe.sh +++ b/recipes/glib/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" @@ -27,11 +22,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh index 9d33dcd1..1fbd7a51 100644 --- a/recipes/gnu-binutils/recipe.sh +++ b/recipes/gnu-binutils/recipe.sh @@ -8,11 +8,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" mkdir -p "$sysroot/usr" @@ -38,11 +33,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/gnu-grep/recipe.sh b/recipes/gnu-grep/recipe.sh index f68e9cd2..1731a3b1 100644 --- a/recipes/gnu-grep/recipe.sh +++ b/recipes/gnu-grep/recipe.sh @@ -6,11 +6,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { export LDFLAGS="-static" ./configure --build=${BUILD} --host=${HOST} --prefix=/ @@ -18,11 +13,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/gnu-make/recipe.sh b/recipes/gnu-make/recipe.sh index 38ee7c58..e884b055 100644 --- a/recipes/gnu-make/recipe.sh +++ b/recipes/gnu-make/recipe.sh @@ -6,11 +6,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { export CFLAGS="-DPOSIX -DNO_ARCHIVES -DNO_OUTPUT_SYNC" export LDFLAGS="-static" @@ -23,11 +18,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/gstreamer/recipe.sh b/recipes/gstreamer/recipe.sh index b31edf68..7fcf18a5 100644 --- a/recipes/gstreamer/recipe.sh +++ b/recipes/gstreamer/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" @@ -31,11 +26,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/harfbuzz/recipe.sh b/recipes/harfbuzz/recipe.sh index e36ffcc4..d61f7078 100644 --- a/recipes/harfbuzz/recipe.sh +++ b/recipes/harfbuzz/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" @@ -32,11 +27,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/jansson/recipe.sh b/recipes/jansson/recipe.sh index 0d73e816..f0091397 100644 --- a/recipes/jansson/recipe.sh +++ b/recipes/jansson/recipe.sh @@ -6,11 +6,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" @@ -20,11 +15,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/keyboard-sfx/recipe.sh b/recipes/keyboard-sfx/recipe.sh index bd0a82e3..95de8e7b 100644 --- a/recipes/keyboard-sfx/recipe.sh +++ b/recipes/keyboard-sfx/recipe.sh @@ -5,21 +5,11 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { echo "skipping build" skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { echo "skipping clean" skip=1 diff --git a/recipes/libc-bench/recipe.sh b/recipes/libc-bench/recipe.sh index 23e63009..2c0f9992 100644 --- a/recipes/libc-bench/recipe.sh +++ b/recipes/libc-bench/recipe.sh @@ -6,21 +6,11 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { "$REDOX_MAKE" -j"$($NPROC)" skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/lua/recipe.sh b/recipes/lua/recipe.sh index 8bc39897..25aff480 100644 --- a/recipes/lua/recipe.sh +++ b/recipes/lua/recipe.sh @@ -6,21 +6,11 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { "$REDOX_MAKE" generic CC="${HOST}-gcc -std=gnu99" -j"$($NPROC)" skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/mdp/recipe.sh b/recipes/mdp/recipe.sh index 20f24382..ed9236bd 100644 --- a/recipes/mdp/recipe.sh +++ b/recipes/mdp/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include -I$sysroot/include/ncursesw" @@ -20,11 +15,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/mesa_glu/recipe.sh b/recipes/mesa_glu/recipe.sh index 83667dce..6624442a 100644 --- a/recipes/mesa_glu/recipe.sh +++ b/recipes/mesa_glu/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" @@ -23,11 +18,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/mgba/recipe.sh b/recipes/mgba/recipe.sh index e37552e6..f7baad90 100644 --- a/recipes/mgba/recipe.sh +++ b/recipes/mgba/recipe.sh @@ -8,11 +8,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include -I$sysroot/include/SDL" @@ -35,11 +30,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/ncdu/recipe.sh b/recipes/ncdu/recipe.sh index ca3f75b6..4906dc59 100644 --- a/recipes/ncdu/recipe.sh +++ b/recipes/ncdu/recipe.sh @@ -7,10 +7,6 @@ function recipe_version { echo "$VERSION" skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} function recipe_build { sysroot="$PWD/../sysroot" export CPPFLAGS="-I$sysroot/include -I$sysroot/include/ncurses" @@ -22,10 +18,6 @@ function recipe_build { "$REDOX_MAKE" -j"$($NPROC)" skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/ncurses/recipe.sh b/recipes/ncurses/recipe.sh index c918950b..590cbfed 100644 --- a/recipes/ncurses/recipe.sh +++ b/recipes/ncurses/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { ./configure \ --build=${BUILD} \ @@ -26,11 +21,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/ncursesw/recipe.sh b/recipes/ncursesw/recipe.sh index 407eb073..485e2c54 100644 --- a/recipes/ncursesw/recipe.sh +++ b/recipes/ncursesw/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { export CPPFLAGS="-P" ./configure --build=${BUILD} --host=${HOST} --prefix="" --enable-widec --disable-db-install @@ -19,11 +14,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/netsurf/recipe.sh b/recipes/netsurf/recipe.sh index ac4be6ad..7813ab5a 100644 --- a/recipes/netsurf/recipe.sh +++ b/recipes/netsurf/recipe.sh @@ -8,11 +8,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export TARGET="framebuffer" @@ -24,11 +19,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/neverball/recipe.sh b/recipes/neverball/recipe.sh index 859b63e6..3edbb90e 100644 --- a/recipes/neverball/recipe.sh +++ b/recipes/neverball/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { env -i PATH=/usr/bin:/bin PKG_CONFIG=pkg-config \ "$REDOX_MAKE" -j"$($NPROC)" ENABLE_FS=stdio mapc sols @@ -23,11 +18,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/newlib/recipe.sh b/recipes/newlib/recipe.sh index 8b74cab1..acb5d422 100644 --- a/recipes/newlib/recipe.sh +++ b/recipes/newlib/recipe.sh @@ -6,11 +6,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { pushd newlib/libc/sys aclocal-1.11 -I ../.. @@ -30,11 +25,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/newlibtest/recipe.sh b/recipes/newlibtest/recipe.sh index fde9fd63..33827109 100644 --- a/recipes/newlibtest/recipe.sh +++ b/recipes/newlibtest/recipe.sh @@ -6,11 +6,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-static -nostdinc -I $sysroot/include -I /usr/lib/gcc/x86_64-unknown-redox/7.0.1/include/ -nostdlib -L $sysroot/lib" @@ -20,11 +15,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/openjazz/recipe.sh b/recipes/openjazz/recipe.sh index b9e7fc09..1a8dafbe 100644 --- a/recipes/openjazz/recipe.sh +++ b/recipes/openjazz/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include -UUSE_SOCKETS -UUSE_SDL_NET" @@ -26,11 +21,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/openttd-opengfx/recipe.sh b/recipes/openttd-opengfx/recipe.sh index 4ed7e56d..a68b27b9 100644 --- a/recipes/openttd-opengfx/recipe.sh +++ b/recipes/openttd-opengfx/recipe.sh @@ -5,21 +5,11 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { echo "skipping build" skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { echo "skipping clean" skip=1 diff --git a/recipes/openttd-openmsx/recipe.sh b/recipes/openttd-openmsx/recipe.sh index 8c4c0124..7af78cbb 100644 --- a/recipes/openttd-openmsx/recipe.sh +++ b/recipes/openttd-openmsx/recipe.sh @@ -5,21 +5,11 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { echo "skipping build" skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { echo "skipping clean" skip=1 @@ -30,5 +20,3 @@ function recipe_stage { cp -Rv ./* "$1/share/games/openttd/baseset/openmsx" skip=1 } - - diff --git a/recipes/openttd-opensfx/recipe.sh b/recipes/openttd-opensfx/recipe.sh index ab6f5122..c8219d68 100644 --- a/recipes/openttd-opensfx/recipe.sh +++ b/recipes/openttd-opensfx/recipe.sh @@ -5,21 +5,11 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { echo "skipping build" skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { echo "skipping clean" skip=1 @@ -30,5 +20,3 @@ function recipe_stage { cp -Rv ./* "$1/share/games/openttd/baseset/opensfx" skip=1 } - - diff --git a/recipes/openttd/recipe.sh b/recipes/openttd/recipe.sh index 0fd408f7..a7e079a4 100644 --- a/recipes/openttd/recipe.sh +++ b/recipes/openttd/recipe.sh @@ -8,11 +8,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" @@ -29,11 +24,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/osdemo/recipe.sh b/recipes/osdemo/recipe.sh index 29917025..99942a10 100644 --- a/recipes/osdemo/recipe.sh +++ b/recipes/osdemo/recipe.sh @@ -5,11 +5,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_prepare { rm -rf source mkdir source @@ -24,11 +19,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/pango/recipe.sh b/recipes/pango/recipe.sh index 6b051eab..c03bbd07 100755 --- a/recipes/pango/recipe.sh +++ b/recipes/pango/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" sysroot="$(realpath ../sysroot)" @@ -28,11 +23,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/patch/recipe.sh b/recipes/patch/recipe.sh index 3e46d2ab..831d1a57 100644 --- a/recipes/patch/recipe.sh +++ b/recipes/patch/recipe.sh @@ -6,11 +6,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { export LDFLAGS="-static" wget -O build-aux/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" @@ -20,11 +15,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/perl/recipe.sh b/recipes/perl/recipe.sh index 39c9cce6..4d173db4 100644 --- a/recipes/perl/recipe.sh +++ b/recipes/perl/recipe.sh @@ -8,11 +8,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { curl -L -O --time-cond perl-cross-1.1.6.tar.gz https://github.com/arsv/perl-cross/releases/download/1.1.6/perl-cross-1.1.6.tar.gz tar --strip-components=1 -xvf perl-cross-1.1.6.tar.gz @@ -26,11 +21,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/pixman/recipe.sh b/recipes/pixman/recipe.sh index 70a762e1..c6a90c9d 100755 --- a/recipes/pixman/recipe.sh +++ b/recipes/pixman/recipe.sh @@ -6,11 +6,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" ./configure \ @@ -23,11 +18,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/pkg-config/recipe.sh b/recipes/pkg-config/recipe.sh index 0514e916..50e549aa 100755 --- a/recipes/pkg-config/recipe.sh +++ b/recipes/pkg-config/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" export LDFLAGS="--static" @@ -25,11 +20,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/prboom/recipe.sh b/recipes/prboom/recipe.sh index 77c8c8cd..6fd97441 100644 --- a/recipes/prboom/recipe.sh +++ b/recipes/prboom/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { export CFLAGS="-static" sysroot="$(realpath ../sysroot)" @@ -30,11 +25,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/python/recipe.sh b/recipes/python/recipe.sh index 6ec06c19..3f3b7307 100644 --- a/recipes/python/recipe.sh +++ b/recipes/python/recipe.sh @@ -9,11 +9,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { export LDFLAGS="-static" cp ../config.site ./ @@ -30,11 +25,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/qemu/recipe.sh b/recipes/qemu/recipe.sh index a62e7d9f..f14bb48d 100644 --- a/recipes/qemu/recipe.sh +++ b/recipes/qemu/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" @@ -25,11 +20,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index 2d1c4d36..6bc59133 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -9,21 +9,9 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { - config="$(realpath "${COOKBOOK_RECIPE}/config.toml")" - source="$(realpath ../source)" unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP - python3 "$source/x.py" install --config "$config" --jobs $(nproc) --incremental - skip=1 -} - -function recipe_test { - echo "skipping test" + python3 "${COOKBOOK_SOURCE}/x.py" install --config "${COOKBOOK_RECIPE}/config.toml" --jobs $(nproc) --incremental skip=1 } diff --git a/recipes/rustual-boy/recipe.sh b/recipes/rustual-boy/recipe.sh index 80ec576b..1d5f222f 100755 --- a/recipes/rustual-boy/recipe.sh +++ b/recipes/rustual-boy/recipe.sh @@ -3,10 +3,6 @@ GIT_UPSTREAM=https://github.com/emu-rs/rustual-boy.git BRANCH="redox" DEPENDS="orbital" -function recipe_update { - cd rustual-boy-cli -} - function recipe_build { cd rustual-boy-cli } diff --git a/recipes/schismtracker/recipe.sh b/recipes/schismtracker/recipe.sh index 5e3d9d6f..fb81410f 100644 --- a/recipes/schismtracker/recipe.sh +++ b/recipes/schismtracker/recipe.sh @@ -8,11 +8,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="${PWD}/../sysroot" export CFLAGS="-I$sysroot/include -I$sysroot/include/SDL" @@ -24,11 +19,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/scummvm/recipe.sh b/recipes/scummvm/recipe.sh index df55a301..fab27b6a 100644 --- a/recipes/scummvm/recipe.sh +++ b/recipes/scummvm/recipe.sh @@ -8,11 +8,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" sysroot="$(realpath ../sysroot)" @@ -30,11 +25,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/sdl-player/recipe.sh b/recipes/sdl-player/recipe.sh index 8953164d..c948178a 100644 --- a/recipes/sdl-player/recipe.sh +++ b/recipes/sdl-player/recipe.sh @@ -6,11 +6,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export CPPFLAGS="-I$sysroot/include" @@ -19,11 +14,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/sdl2_gears/recipe.sh b/recipes/sdl2_gears/recipe.sh index 30296bbc..8ae41967 100644 --- a/recipes/sdl2_gears/recipe.sh +++ b/recipes/sdl2_gears/recipe.sh @@ -5,11 +5,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_prepare { rm -rf source mkdir source @@ -26,11 +21,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { echo "skipping clean" skip=1 diff --git a/recipes/sdl2_ttf/recipe.sh b/recipes/sdl2_ttf/recipe.sh index 75c6e2d1..b6916b8c 100644 --- a/recipes/sdl2_ttf/recipe.sh +++ b/recipes/sdl2_ttf/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" @@ -23,11 +18,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/sdl_gfx/recipe.sh b/recipes/sdl_gfx/recipe.sh index 089890fc..d3fdbba6 100644 --- a/recipes/sdl_gfx/recipe.sh +++ b/recipes/sdl_gfx/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" @@ -22,11 +17,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/sdl_image/recipe.sh b/recipes/sdl_image/recipe.sh index 7bbf8735..cda7f4fa 100644 --- a/recipes/sdl_image/recipe.sh +++ b/recipes/sdl_image/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" @@ -22,11 +17,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/sdl_mixer/recipe.sh b/recipes/sdl_mixer/recipe.sh index 9ed93a82..5781e64d 100644 --- a/recipes/sdl_mixer/recipe.sh +++ b/recipes/sdl_mixer/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" @@ -34,11 +29,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/sdl_ttf/recipe.sh b/recipes/sdl_ttf/recipe.sh index ce591b55..8b40579d 100644 --- a/recipes/sdl_ttf/recipe.sh +++ b/recipes/sdl_ttf/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include -I$sysroot/include/freetype2" @@ -22,11 +17,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/servo/recipe.sh b/recipes/servo/recipe.sh index ca27d281..a436c4c3 100644 --- a/recipes/servo/recipe.sh +++ b/recipes/servo/recipe.sh @@ -9,11 +9,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { source="$(realpath ../source)" unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP @@ -21,11 +16,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { echo "skipping clean" skip=1 diff --git a/recipes/shared-mime-info/recipe.sh b/recipes/shared-mime-info/recipe.sh index 90779ca4..005568fa 100755 --- a/recipes/shared-mime-info/recipe.sh +++ b/recipes/shared-mime-info/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" @@ -24,11 +19,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/sopwith/recipe.sh b/recipes/sopwith/recipe.sh index 678f56f7..d4603324 100644 --- a/recipes/sopwith/recipe.sh +++ b/recipes/sopwith/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { wget -O autotools/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" sysroot="$(realpath ../sysroot)" @@ -27,11 +22,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/ssh/recipe.sh b/recipes/ssh/recipe.sh index 1f9ba2bd..07b365a4 100644 --- a/recipes/ssh/recipe.sh +++ b/recipes/ssh/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib" @@ -21,11 +16,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/syobonaction/recipe.sh b/recipes/syobonaction/recipe.sh index 6705a916..5c50b4b1 100644 --- a/recipes/syobonaction/recipe.sh +++ b/recipes/syobonaction/recipe.sh @@ -7,11 +7,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export SDL_CONFIG="${PKG_CONFIG} sdl" @@ -21,11 +16,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/terminfo/recipe.sh b/recipes/terminfo/recipe.sh index 2321f0df..8fdee2fc 100644 --- a/recipes/terminfo/recipe.sh +++ b/recipes/terminfo/recipe.sh @@ -5,21 +5,11 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { echo "skipping build" skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { echo "skipping clean" skip=1 diff --git a/recipes/timidity/recipe.sh b/recipes/timidity/recipe.sh index 4a0a1527..9edf5e43 100644 --- a/recipes/timidity/recipe.sh +++ b/recipes/timidity/recipe.sh @@ -8,11 +8,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { export LDFLAGS="-static" autoreconf -f -i @@ -26,11 +21,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/ttf-hack/recipe.sh b/recipes/ttf-hack/recipe.sh index b6830726..94bf53c8 100644 --- a/recipes/ttf-hack/recipe.sh +++ b/recipes/ttf-hack/recipe.sh @@ -6,21 +6,11 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { echo "skipping build" skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { echo "skipping clean" skip=1 diff --git a/recipes/vice/recipe.sh b/recipes/vice/recipe.sh index 1c0c64c5..42da7819 100644 --- a/recipes/vice/recipe.sh +++ b/recipes/vice/recipe.sh @@ -8,11 +8,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" @@ -35,11 +30,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/vim/recipe.sh b/recipes/vim/recipe.sh index cc325653..c4dd8182 100644 --- a/recipes/vim/recipe.sh +++ b/recipes/vim/recipe.sh @@ -8,11 +8,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export LDFLAGS="-L$sysroot/lib -static" @@ -29,11 +24,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/vttest/recipe.sh b/recipes/vttest/recipe.sh index 35976b8d..f6a19fcd 100644 --- a/recipes/vttest/recipe.sh +++ b/recipes/vttest/recipe.sh @@ -6,11 +6,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { export LDFLAGS="-static" wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" @@ -22,11 +17,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { "$REDOX_MAKE" clean skip=1 diff --git a/recipes/wesnoth/recipe.sh b/recipes/wesnoth/recipe.sh index a9dbef18..03b32fa3 100644 --- a/recipes/wesnoth/recipe.sh +++ b/recipes/wesnoth/recipe.sh @@ -22,11 +22,6 @@ function recipe_version { skip=1 } -function recipe_update { - echo "skipping update" - skip=1 -} - function recipe_build { sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" @@ -54,11 +49,6 @@ function recipe_build { skip=1 } -function recipe_test { - echo "skipping test" - skip=1 -} - function recipe_clean { rm -rf build skip=1 diff --git a/update.sh b/update.sh deleted file mode 100755 index e9604c4a..00000000 --- a/update.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env bash -set -e - -source config.sh - -if [ $# = 0 ] -then - recipes="$(ls -1 recipes)" -else - recipes="$@" -fi - -for recipe in $recipes -do - if [ -d "recipes/$recipe/source" ] - then - ./cook.sh "$recipe" update - fi -done From a1607acc7438fbc0e32322b51f4adb8c28901152 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Nov 2022 11:22:12 -0700 Subject: [PATCH 0973/3180] Use system curl and nghttp2 for cargo --- recipes/cargo/recipe.toml | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/recipes/cargo/recipe.toml b/recipes/cargo/recipe.toml index db424396..dc922a7f 100644 --- a/recipes/cargo/recipe.toml +++ b/recipes/cargo/recipe.toml @@ -6,12 +6,26 @@ branch = "redox-2022-03-18" [build] template = "custom" dependencies = [ + "curl", "libssh2", + "nghttp2", "openssl", "zlib", ] script = """ export LIBSSH2_SYS_USE_PKG_CONFIG=1 export LIBZ_SYS_STATIC=1 -cookbook_cargo +export DEP_NGHTTP2_ROOT="${COOKBOOK_SYSROOT}" +export DEP_OPENSSL_ROOT="${COOKBOOK_SYSROOT}" +export DEP_Z_ROOT="${COOKBOOK_SYSROOT}" +# Force linking system nghttp2 +"${COOKBOOK_CARGO}" rustc \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --release \ + --bin cargo \ + -- \ + -L "${COOKBOOK_SYSROOT}/lib" \ + -C link-arg="-lnghttp2" +mkdir -pv "${COOKBOOK_STAGE}/bin" +cp -v "target/${TARGET}/release/cargo" "${COOKBOOK_STAGE}/bin/cargo" """ From 3a6c102086b0c2dc61e80592d0441142a71c68ce Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Nov 2022 11:53:48 -0700 Subject: [PATCH 0974/3180] Re-add cook publish and unpublish --- cook.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/cook.sh b/cook.sh index b9074fc7..aa1c03a0 100755 --- a/cook.sh +++ b/cook.sh @@ -47,6 +47,8 @@ function usage { echo " unpkg" >&2 echo " prepare" >&2 echo " unprepare" >&2 + echo " publish" >&2 + echo " unpublish" >&2 echo " stage" >&2 echo " unstage" >&2 echo " tar" >&2 @@ -350,6 +352,15 @@ function op { untar) rm -rfv "${COOKBOOK_STAGE}.tar.gz" "${COOKBOOK_STAGE}.sig" "${COOKBOOK_STAGE}.toml" ;; + publish) + mkdir -p "$REPO" + cp -v "${COOKBOOK_STAGE}.tar.gz" "$REPO/$1.tar.gz" + cp -v "${COOKBOOK_STAGE}.sig" "$REPO/$1.sig" + cp -v "${COOKBOOK_STAGE}.toml" "$REPO/$1.toml" + ;; + unpublish) + rm -rfv "$REPO/$1.tar.gz" "$REPO/$1.sig" "$REPO/$1.toml" + ;; *) usage $1 ;; From 48b55be946c2914b801581b30b9bb05099d0cd96 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 12 Nov 2022 08:06:56 -0700 Subject: [PATCH 0975/3180] Patch for duktape --- recipes/duktape/redox.patch | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 recipes/duktape/redox.patch diff --git a/recipes/duktape/redox.patch b/recipes/duktape/redox.patch new file mode 100644 index 00000000..bfbc53e8 --- /dev/null +++ b/recipes/duktape/redox.patch @@ -0,0 +1,12 @@ +diff -ruwN source/src/duk_config.h source-new/src/duk_config.h +--- source/src/duk_config.h 2017-09-22 19:06:08.000000000 -0600 ++++ source-new/src/duk_config.h 2022-11-12 08:05:16.384212164 -0700 +@@ -786,7 +786,7 @@ + /* --- Generic UNIX --- */ + #define DUK_USE_DATE_NOW_GETTIMEOFDAY + #define DUK_USE_DATE_TZO_GMTIME_R +-#define DUK_USE_DATE_PRS_STRPTIME ++#undef DUK_USE_DATE_PRS_STRPTIME + #define DUK_USE_DATE_FMT_STRFTIME + #include + #include From fb4e799d8848640724117bb61c33fad8a5c7e195 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 12 Nov 2022 09:02:44 -0700 Subject: [PATCH 0976/3180] Update netsurf and enable duktape for javascript --- recipes/netsurf/01_redox.patch | 106 ++++++++++++++++----------------- recipes/netsurf/recipe.sh | 7 +-- 2 files changed, 56 insertions(+), 57 deletions(-) diff --git a/recipes/netsurf/01_redox.patch b/recipes/netsurf/01_redox.patch index 751ae2df..521cc768 100644 --- a/recipes/netsurf/01_redox.patch +++ b/recipes/netsurf/01_redox.patch @@ -1,6 +1,26 @@ +diff -ruwN source/buildsystem/makefiles/Makefile.top source-new/buildsystem/makefiles/Makefile.top +--- source/buildsystem/makefiles/Makefile.top 2020-05-24 15:35:19.000000000 -0600 ++++ source-new/buildsystem/makefiles/Makefile.top 2022-11-12 08:54:26.232793713 -0700 +@@ -407,12 +407,16 @@ + $(Q)$(AR) $(ARFLAGS) $@ $(OBJECTS) + else + $(VQ)$(ECHO) $(ECHOFLAGS) " LINK: $@" ++ ifeq ($(COMPONENT_FOR_BUILD),yes) ++ $(Q)$(BUILD_CC) -o $@ $(OBJECTS) $(LDFLAGS) $(SHAREDLDFLAGS) ++ else + ifeq ($(CXX_IN_BUILD),yes) + $(Q)$(CXX) -o $@ $(OBJECTS) $(LDFLAGS) $(SHAREDLDFLAGS) + else + $(Q)$(CC) -o $@ $(OBJECTS) $(LDFLAGS) $(SHAREDLDFLAGS) + endif + endif ++endif + + ############################################################################### + # Autogenerated, implied rules diff -ruwN source/libnsfb/Makefile source-new/libnsfb/Makefile ---- source/libnsfb/Makefile 2017-10-16 04:09:35.000000000 -0600 -+++ source-new/libnsfb/Makefile 2018-12-29 08:29:56.855249826 -0700 +--- source/libnsfb/Makefile 2020-05-24 15:35:21.000000000 -0600 ++++ source-new/libnsfb/Makefile 2022-11-12 08:53:23.376764307 -0700 @@ -43,10 +43,10 @@ NSFB_XCB_PKG_NAMES := xcb xcb-icccm xcb-image xcb-keysyms xcb-atom @@ -13,13 +33,13 @@ diff -ruwN source/libnsfb/Makefile source-new/libnsfb/Makefile +#$(eval $(call pkg_config_package_available,NSFB_XCB_AVAILABLE,$(NSFB_XCB_PKG_NAMES))) +#$(eval $(call pkg_config_package_available,NSFB_WLD_AVAILABLE,wayland-client)) - # surfaces not detectable via pkg-config - NSFB_ABLE_AVAILABLE := no + # Flags and setup for each support library + ifeq ($(NSFB_SDL_AVAILABLE),yes) diff -ruwN source/libnsfb/src/plot.h source-new/libnsfb/src/plot.h ---- source/libnsfb/src/plot.h 2017-10-16 04:09:35.000000000 -0600 -+++ source-new/libnsfb/src/plot.h 2018-12-29 08:29:56.855249826 -0700 -@@ -36,7 +36,7 @@ - #define NSFB_BE_BYTE_ORDER +--- source/libnsfb/src/plot.h 2020-05-24 15:35:21.000000000 -0600 ++++ source-new/libnsfb/src/plot.h 2022-11-12 08:53:23.376764307 -0700 +@@ -46,7 +46,7 @@ + #error "Endian determination failed" #endif #else - #include @@ -27,23 +47,9 @@ diff -ruwN source/libnsfb/src/plot.h source-new/libnsfb/src/plot.h #if defined(__BYTE_ORDER__) #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ #define NSFB_BE_BYTE_ORDER -diff -ruwN source/netsurf/frontends/framebuffer/Makefile source-new/netsurf/frontends/framebuffer/Makefile ---- source/netsurf/frontends/framebuffer/Makefile 2017-10-16 04:09:36.000000000 -0600 -+++ source-new/netsurf/frontends/framebuffer/Makefile 2018-12-29 08:29:56.855249826 -0700 -@@ -35,8 +35,8 @@ - - # freetype is optional but does not use pkg-config - ifeq ($(NETSURF_FB_FONTLIB),freetype) -- CFLAGS += -DFB_USE_FREETYPE $(shell freetype-config --cflags) -- LDFLAGS += $(shell freetype-config --libs) -+ CFLAGS += -DFB_USE_FREETYPE $(shell $(PKG_CONFIG) --cflags freetype2) -+ LDFLAGS += $(shell $(PKG_CONFIG) --libs freetype2) - endif - - diff -ruwN source/netsurf/Makefile.config source-new/netsurf/Makefile.config --- source/netsurf/Makefile.config 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/netsurf/Makefile.config 2018-12-29 08:29:56.855249826 -0700 ++++ source-new/netsurf/Makefile.config 2022-11-12 08:53:23.376764307 -0700 @@ -0,0 +1,28 @@ +override NETSURF_HOMEPAGE := "https://www.redox-os.org/" +override NETSURF_FB_FRONTEND := sdl @@ -57,7 +63,7 @@ diff -ruwN source/netsurf/Makefile.config source-new/netsurf/Makefile.config +override NETSURF_USE_LIBICONV_PLUG := NO +override NETSURF_USE_NSSVG := NO +override NETSURF_USE_RSVG := NO -+override NETSURF_USE_DUKTAPE := NO ++override NETSURF_USE_DUKTAPE := YES +override NETSURF_USE_HARU_PDF := NO +override NETSURF_USE_VIDEO := NO + @@ -73,33 +79,27 @@ diff -ruwN source/netsurf/Makefile.config source-new/netsurf/Makefile.config +override NETSURF_FB_FONT_MONOSPACE_BOLD := Mono/Fira/Bold.ttf +override NETSURF_FB_FONT_CURSIVE := Sans/Fira/Regular.ttf +override NETSURF_FB_FONT_FANTASY := Sans/Fira/Regular.ttf -diff -ruwN source/netsurf/render/form.c source-new/netsurf/render/form.c ---- source/netsurf/render/form.c 2017-10-16 04:09:36.000000000 -0600 -+++ source-new/netsurf/render/form.c 2018-12-29 08:29:56.855249826 -0700 -@@ -1080,7 +1080,7 @@ - if (!item || !charset) - return NULL; +diff -ruwN source/netsurf/utils/config.h source-new/netsurf/utils/config.h +--- source/netsurf/utils/config.h 2020-05-24 15:35:23.000000000 -0600 ++++ source-new/netsurf/utils/config.h 2022-11-12 09:00:03.996951825 -0700 +@@ -63,7 +63,8 @@ + defined(__BEOS__) || \ + defined(__amigaos4__) || \ + defined(__AMIGA__) || \ +- defined(__MINT__)) ++ defined(__MINT__) || \ ++ defined(__redox__)) + #undef HAVE_STRPTIME + #undef HAVE_STRFTIME + #else +diff -ruwN source/nsgenbind/Makefile source-new/nsgenbind/Makefile +--- source/nsgenbind/Makefile 2020-05-24 15:35:23.000000000 -0600 ++++ source-new/nsgenbind/Makefile 2022-11-12 08:53:43.392773663 -0700 +@@ -10,6 +10,7 @@ + COMPONENT_TYPE := binary + # Component version + COMPONENT_VERSION := 0.8 ++COMPONENT_FOR_BUILD := yes -- snprintf(cset, sizeof cset, "%s//TRANSLIT", charset); -+ snprintf(cset, sizeof cset, "%s", charset); - - err = utf8_to_enc(item, cset, 0, &ret); - if (err == NSERROR_BAD_ENCODING) { -@@ -1092,7 +1092,7 @@ - /* nope, try fallback charset (if any) */ - if (fallback) { - snprintf(cset, sizeof cset, -- "%s//TRANSLIT", fallback); -+ "%s", fallback); - err = utf8_to_enc(item, cset, 0, &ret); - - if (err == NSERROR_BAD_ENCODING) { -@@ -1105,7 +1105,7 @@ - - if (err == NSERROR_BAD_ENCODING) { - /* that also failed, use 8859-1 */ -- err = utf8_to_enc(item, "ISO-8859-1//TRANSLIT", -+ err = utf8_to_enc(item, "ISO-8859-1", - 0, &ret); - if (err == NSERROR_BAD_ENCODING) { - /* and without transliteration */ + # Tooling + PREFIX ?= /opt/netsurf diff --git a/recipes/netsurf/recipe.sh b/recipes/netsurf/recipe.sh index 7813ab5a..6cc42ec8 100644 --- a/recipes/netsurf/recipe.sh +++ b/recipes/netsurf/recipe.sh @@ -1,4 +1,4 @@ -VERSION=3.7 +VERSION=3.10 TAR=http://download.netsurf-browser.org/netsurf/releases/source-full/netsurf-all-$VERSION.tar.gz BUILD_DEPENDS=(curl expat libjpeg libpng nghttp2 openssl sdl zlib freetype liborbital libiconv) DEPENDS="ca-certificates orbital" @@ -9,10 +9,9 @@ function recipe_version { } function recipe_build { - sysroot="$(realpath ../sysroot)" export TARGET="framebuffer" - export CFLAGS="-I$sysroot/include -I${PWD}/inst-${TARGET}/include" - export LDFLAGS="-L$sysroot/lib -L${PWD}/inst-${TARGET}/lib -static -Wl,--allow-multiple-definition -Wl,-Bstatic" + export CFLAGS="-I${COOKBOOK_SYSROOT}/include -I${PWD}/inst-${TARGET}/include" + export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib -L${PWD}/inst-${TARGET}/lib -static -Wl,--allow-multiple-definition -Wl,-Bstatic" # nghttp2 is not linked for some reason export LDFLAGS="${LDFLAGS} -lcurl -lnghttp2" "$REDOX_MAKE" V=1 -j"$($NPROC)" From 1bc8c229fd0bd1f064dd554dbe799a6b5ccd84b3 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 15 Nov 2022 15:34:43 -0700 Subject: [PATCH 0977/3180] Add neverball/neverputt manifests --- recipes/neverball/manifest-neverball | 5 +++++ recipes/neverball/manifest-neverputt | 5 +++++ recipes/neverball/recipe.sh | 20 +++++++++++++++++--- 3 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 recipes/neverball/manifest-neverball create mode 100644 recipes/neverball/manifest-neverputt diff --git a/recipes/neverball/manifest-neverball b/recipes/neverball/manifest-neverball new file mode 100644 index 00000000..17458f44 --- /dev/null +++ b/recipes/neverball/manifest-neverball @@ -0,0 +1,5 @@ +name=Neverball +binary=/games/neverball/neverball +icon=/ui/icons/apps/neverball.png +author=The Neverball Developers +description=Neverball diff --git a/recipes/neverball/manifest-neverputt b/recipes/neverball/manifest-neverputt new file mode 100644 index 00000000..d33f7e6d --- /dev/null +++ b/recipes/neverball/manifest-neverputt @@ -0,0 +1,5 @@ +name=Neverputt +binary=/games/neverball/neverputt +icon=/ui/icons/apps/neverputt.png +author=The Neverputt Developers +description=Neverputt diff --git a/recipes/neverball/recipe.sh b/recipes/neverball/recipe.sh index 3edbb90e..4ef17754 100644 --- a/recipes/neverball/recipe.sh +++ b/recipes/neverball/recipe.sh @@ -25,11 +25,25 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" - mkdir -p "${dest}/games/neverball" + + # Create install directories + mkdir -pv "${dest}/games/neverball" "${dest}/ui/apps" "${dest}/ui/icons/apps" + + # Copy assets + cp -rv data "${dest}/games/neverball" + + # For each game for bin in neverball neverputt do - "${STRIP}" -v "$bin" -o "${dest}/games/neverball/$bin" + # Install binary + "${STRIP}" -v "${bin}" -o "${dest}/games/neverball/${bin}" + + # Install manifest + cp -v "${COOKBOOK_RECIPE}/manifest-${bin}" "${dest}/ui/apps/${bin}" + + # Install icon + cp -v "dist/${bin}_48.png" "${dest}/ui/icons/apps/${bin}.png" done - cp -rv data "${dest}/games/neverball" + skip=1 } From 3dee807238b700e83567302d9daed168d8eb24ba Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 15 Nov 2022 15:34:56 -0700 Subject: [PATCH 0978/3180] Fix installing dotfiles from jeremy recipe --- recipes/jeremy/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/jeremy/recipe.toml b/recipes/jeremy/recipe.toml index 8fa44be7..2eeb3564 100644 --- a/recipes/jeremy/recipe.toml +++ b/recipes/jeremy/recipe.toml @@ -5,6 +5,6 @@ git = "https://gitlab.redox-os.org/jackpot51/jeremy.git" [build] template = "custom" script = """ -mkdir -pv "${COOKBOOK_STAGE}/home/user" -cp -rv "${COOKBOOK_SOURCE}/"* "${COOKBOOK_STAGE}/home/user" +mkdir -pv "${COOKBOOK_STAGE}/home" +cp -rv "${COOKBOOK_SOURCE}" "${COOKBOOK_STAGE}/home/user" """ From e94fa709232a5f9dddc14329ded750079554f93b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 15 Nov 2022 15:51:37 -0700 Subject: [PATCH 0979/3180] Add freedoom manifest and icons --- recipes/freedoom/recipe.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/recipes/freedoom/recipe.sh b/recipes/freedoom/recipe.sh index f60d7b2f..1abb0208 100644 --- a/recipes/freedoom/recipe.sh +++ b/recipes/freedoom/recipe.sh @@ -17,7 +17,7 @@ function recipe_clean { } function recipe_stage { - mkdir -pv "$1/games" "$1/share/games/doom" + mkdir -pv "$1/games" "$1/share/games/doom" "$1/ui/apps" "$1/ui/icons/apps" for file in ./*.wad do game="$(basename "$file" .wad)" @@ -29,6 +29,12 @@ function recipe_stage { echo "#!/bin/ion" > "$1$bin" echo "/games/prboom -geom 800x600 -vidmode 32 -iwad $wad" >> "$1$bin" chmod +x "$1$bin" + + echo "name=$game" | sed 's/freedoom/FreeDOOM /' > "$1/ui/apps/$game" + echo "binary=/games/$game" >> "$1/ui/apps/$game" + echo "icon=/ui/icons/apps/$game.png" >> "$1/ui/apps/$game" + + cp -v "$game.png" "$1/ui/icons/apps/$game.png" done skip=1 } From 9fcbe74846f58918a28f068aea30490e10307856 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 15 Nov 2022 15:55:37 -0700 Subject: [PATCH 0980/3180] Remove extra data from neverball manifests --- recipes/neverball/manifest-neverball | 2 -- recipes/neverball/manifest-neverputt | 2 -- 2 files changed, 4 deletions(-) diff --git a/recipes/neverball/manifest-neverball b/recipes/neverball/manifest-neverball index 17458f44..4a0a2f32 100644 --- a/recipes/neverball/manifest-neverball +++ b/recipes/neverball/manifest-neverball @@ -1,5 +1,3 @@ name=Neverball binary=/games/neverball/neverball icon=/ui/icons/apps/neverball.png -author=The Neverball Developers -description=Neverball diff --git a/recipes/neverball/manifest-neverputt b/recipes/neverball/manifest-neverputt index d33f7e6d..e7c43224 100644 --- a/recipes/neverball/manifest-neverputt +++ b/recipes/neverball/manifest-neverputt @@ -1,5 +1,3 @@ name=Neverputt binary=/games/neverball/neverputt icon=/ui/icons/apps/neverputt.png -author=The Neverputt Developers -description=Neverputt From 7eef19588dbde4564cbe1fed7444c8d8c594bf5b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 15 Nov 2022 15:57:11 -0700 Subject: [PATCH 0981/3180] Add eduke32 manifest and icon --- recipes/eduke32/icon.png | Bin 0 -> 72205 bytes recipes/eduke32/manifest | 4 ++++ recipes/eduke32/recipe.sh | 12 +++++++++--- 3 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 recipes/eduke32/icon.png create mode 100644 recipes/eduke32/manifest diff --git a/recipes/eduke32/icon.png b/recipes/eduke32/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4cbfd165068f168bdfbb9e74b60894130cedbb3e GIT binary patch literal 72205 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 Date: Wed, 16 Nov 2022 08:07:16 -0700 Subject: [PATCH 0982/3180] Fix timidity config path --- recipes/timidity/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/timidity/recipe.sh b/recipes/timidity/recipe.sh index 9edf5e43..f510cc36 100644 --- a/recipes/timidity/recipe.sh +++ b/recipes/timidity/recipe.sh @@ -30,8 +30,8 @@ function recipe_stage { dest="$(realpath $1)" "$REDOX_MAKE" DESTDIR="$dest" install - mkdir -pv "$1/share/timidity" - echo "soundfont /share/generaluser-gs/generaluser-gs.sf2" >> "$1/share/timidity/timidity.cfg" + mkdir -pv "$1/etc/timidity" + echo "soundfont /share/generaluser-gs/generaluser-gs.sf2" >> "$1/etc/timidity/timidity.cfg" skip=1 } From 3387b5a1ef3113274f6eacc7a4ad070984e213eb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 16 Nov 2022 09:13:59 -0700 Subject: [PATCH 0983/3180] Add openttd manifest and icon --- recipes/openttd/manifest | 4 ++++ recipes/openttd/recipe.sh | 7 +++++++ 2 files changed, 11 insertions(+) create mode 100644 recipes/openttd/manifest diff --git a/recipes/openttd/manifest b/recipes/openttd/manifest new file mode 100644 index 00000000..d1f4805e --- /dev/null +++ b/recipes/openttd/manifest @@ -0,0 +1,4 @@ +name=OpenTTD +binary=/games/openttd +icon=/ui/icons/apps/openttd.png + diff --git a/recipes/openttd/recipe.sh b/recipes/openttd/recipe.sh index a7e079a4..51e396f4 100644 --- a/recipes/openttd/recipe.sh +++ b/recipes/openttd/recipe.sh @@ -35,5 +35,12 @@ function recipe_stage { "$REDOX_MAKE" VERBOSE=1 ROOT_DIR="$dest/../build/" BUNDLE_DIR="$bundledir" INSTALL_DIR="$dest" install rm -rf "$bundledir" + + mkdir -pv "$1/ui/apps" + cp -v "${COOKBOOK_RECIPE}/manifest" "$1/ui/apps/openttd" + + mkdir -pv "$1/ui/icons/apps" + cp -v "media/openttd.64.png" "$1/ui/icons/apps/openttd.png" + skip=1 } From 693b94e7f6d7a1544fd055bc4910a38cddd9dfc9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 16 Nov 2022 09:14:09 -0700 Subject: [PATCH 0984/3180] Increase size of neverball/neverputt icons --- recipes/neverball/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/neverball/recipe.sh b/recipes/neverball/recipe.sh index 4ef17754..ebe767a6 100644 --- a/recipes/neverball/recipe.sh +++ b/recipes/neverball/recipe.sh @@ -42,7 +42,7 @@ function recipe_stage { cp -v "${COOKBOOK_RECIPE}/manifest-${bin}" "${dest}/ui/apps/${bin}" # Install icon - cp -v "dist/${bin}_48.png" "${dest}/ui/icons/apps/${bin}.png" + cp -v "dist/${bin}_64.png" "${dest}/ui/icons/apps/${bin}.png" done skip=1 From 4efdc2af96a413df99fd78243bf4db6d5e6a545d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 16 Nov 2022 09:32:40 -0700 Subject: [PATCH 0985/3180] Add gigalomania manifest and icon --- recipes/gigalomania/manifest | 4 ++++ recipes/gigalomania/recipe.sh | 7 +++++++ 2 files changed, 11 insertions(+) create mode 100644 recipes/gigalomania/manifest diff --git a/recipes/gigalomania/manifest b/recipes/gigalomania/manifest new file mode 100644 index 00000000..5fc5643e --- /dev/null +++ b/recipes/gigalomania/manifest @@ -0,0 +1,4 @@ +name=Gigalomania +binary=/games/gigalomania/gigalomania +icon=/ui/icons/apps/gigalomania.png + diff --git a/recipes/gigalomania/recipe.sh b/recipes/gigalomania/recipe.sh index ea713c2c..5bb39914 100644 --- a/recipes/gigalomania/recipe.sh +++ b/recipes/gigalomania/recipe.sh @@ -28,5 +28,12 @@ function recipe_stage { "$REDOX_MAKE" VERBOSE=1 DESTDIR="$dest" install rm -rf "$bundledir" + + mkdir -pv "$1/ui/apps" + cp -v "${COOKBOOK_RECIPE}/manifest" "$1/ui/apps/gigalomania" + + mkdir -pv "$1/ui/icons/apps" + cp -v "gigalomania64.png" "$1/ui/icons/apps/gigalomania.png" + skip=1 } From 71e5b5caf4542c80eb073d9fe8abcde45d3cfffe Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 16 Nov 2022 09:32:51 -0700 Subject: [PATCH 0986/3180] Add schismtracker manifest and icon --- recipes/schismtracker/manifest | 4 ++++ recipes/schismtracker/recipe.sh | 7 +++++++ 2 files changed, 11 insertions(+) create mode 100644 recipes/schismtracker/manifest diff --git a/recipes/schismtracker/manifest b/recipes/schismtracker/manifest new file mode 100644 index 00000000..8fa3914d --- /dev/null +++ b/recipes/schismtracker/manifest @@ -0,0 +1,4 @@ +name=Schism Tracker +binary=/bin/schismtracker +icon=/ui/icons/apps/schismtracker.png + diff --git a/recipes/schismtracker/recipe.sh b/recipes/schismtracker/recipe.sh index fb81410f..42e6e387 100644 --- a/recipes/schismtracker/recipe.sh +++ b/recipes/schismtracker/recipe.sh @@ -27,5 +27,12 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" "$REDOX_MAKE" DESTDIR="$dest" install + + mkdir -pv "$1/ui/apps" + cp -v "${COOKBOOK_RECIPE}/manifest" "$1/ui/apps/schismtracker" + + mkdir -pv "$1/ui/icons/apps" + cp -v "icons/schism-icon-64.png" "$1/ui/icons/apps/schismtracker.png" + skip=1 } From b8c2064441399b23a7a4631a74d841896118517f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 16 Nov 2022 09:34:04 -0700 Subject: [PATCH 0987/3180] Add dosbox manifest and icon --- recipes/dosbox/icon.png | Bin 0 -> 118262 bytes recipes/dosbox/manifest | 4 ++++ recipes/dosbox/recipe.sh | 7 +++++++ 3 files changed, 11 insertions(+) create mode 100644 recipes/dosbox/icon.png create mode 100644 recipes/dosbox/manifest diff --git a/recipes/dosbox/icon.png b/recipes/dosbox/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..91943701161a72b805073703a0e2d6fd196105ee GIT binary patch literal 118262 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 Date: Wed, 16 Nov 2022 09:41:50 -0700 Subject: [PATCH 0988/3180] Add Games category to game manifests --- recipes/dosbox/manifest | 2 +- recipes/eduke32/manifest | 2 +- recipes/freedoom/recipe.sh | 1 + recipes/gigalomania/manifest | 2 +- recipes/neverball/manifest-neverball | 1 + recipes/neverball/manifest-neverputt | 1 + recipes/openttd/manifest | 2 +- 7 files changed, 7 insertions(+), 4 deletions(-) diff --git a/recipes/dosbox/manifest b/recipes/dosbox/manifest index a60f5bd4..3403b71b 100644 --- a/recipes/dosbox/manifest +++ b/recipes/dosbox/manifest @@ -1,4 +1,4 @@ name=DOSBox +category=Games binary=/bin/dosbox icon=/ui/icons/apps/dosbox.png - diff --git a/recipes/eduke32/manifest b/recipes/eduke32/manifest index 75708295..abb25f8f 100644 --- a/recipes/eduke32/manifest +++ b/recipes/eduke32/manifest @@ -1,4 +1,4 @@ name=EDuke32 +category=Games binary=/games/eduke32 icon=/ui/icons/apps/eduke32.png - diff --git a/recipes/freedoom/recipe.sh b/recipes/freedoom/recipe.sh index 1abb0208..fabf640e 100644 --- a/recipes/freedoom/recipe.sh +++ b/recipes/freedoom/recipe.sh @@ -31,6 +31,7 @@ function recipe_stage { chmod +x "$1$bin" echo "name=$game" | sed 's/freedoom/FreeDOOM /' > "$1/ui/apps/$game" + echo "category=Games" >> "$1/ui/apps/$game" echo "binary=/games/$game" >> "$1/ui/apps/$game" echo "icon=/ui/icons/apps/$game.png" >> "$1/ui/apps/$game" diff --git a/recipes/gigalomania/manifest b/recipes/gigalomania/manifest index 5fc5643e..345713ee 100644 --- a/recipes/gigalomania/manifest +++ b/recipes/gigalomania/manifest @@ -1,4 +1,4 @@ name=Gigalomania +category=Games binary=/games/gigalomania/gigalomania icon=/ui/icons/apps/gigalomania.png - diff --git a/recipes/neverball/manifest-neverball b/recipes/neverball/manifest-neverball index 4a0a2f32..70330ee2 100644 --- a/recipes/neverball/manifest-neverball +++ b/recipes/neverball/manifest-neverball @@ -1,3 +1,4 @@ name=Neverball +category=Games binary=/games/neverball/neverball icon=/ui/icons/apps/neverball.png diff --git a/recipes/neverball/manifest-neverputt b/recipes/neverball/manifest-neverputt index e7c43224..f0c0febc 100644 --- a/recipes/neverball/manifest-neverputt +++ b/recipes/neverball/manifest-neverputt @@ -1,3 +1,4 @@ name=Neverputt +category=Games binary=/games/neverball/neverputt icon=/ui/icons/apps/neverputt.png diff --git a/recipes/openttd/manifest b/recipes/openttd/manifest index d1f4805e..7f25f355 100644 --- a/recipes/openttd/manifest +++ b/recipes/openttd/manifest @@ -1,4 +1,4 @@ name=OpenTTD +category=Games binary=/games/openttd icon=/ui/icons/apps/openttd.png - From 0e91d2d33cf073d91c901a96d7f832f231e93a61 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 16 Nov 2022 11:19:00 -0700 Subject: [PATCH 0989/3180] Add sm64ex manifest and icon --- recipes/sm64ex/manifest | 4 ++++ recipes/sm64ex/recipe.toml | 9 +++++++++ 2 files changed, 13 insertions(+) create mode 100644 recipes/sm64ex/manifest diff --git a/recipes/sm64ex/manifest b/recipes/sm64ex/manifest new file mode 100644 index 00000000..c44cadfb --- /dev/null +++ b/recipes/sm64ex/manifest @@ -0,0 +1,4 @@ +name=sm64ex +category=Games +binary=/bin/sm64 +icon=/ui/icons/apps/sm64ex.png diff --git a/recipes/sm64ex/recipe.toml b/recipes/sm64ex/recipe.toml index f7db24b5..e3d2fe73 100644 --- a/recipes/sm64ex/recipe.toml +++ b/recipes/sm64ex/recipe.toml @@ -15,8 +15,17 @@ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ # You must find your own ROM cp -v "${COOKBOOK_RECIPE}/baserom.us.z64" baserom.us.z64 +#TODO: do this in cook instead +unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP + export CROSS="${TARGET}-" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" mkdir -p "${COOKBOOK_STAGE}/bin" cp -v build/us_pc/sm64.us.f3dex2e "${COOKBOOK_STAGE}/bin/sm64" + +mkdir -pv "${COOKBOOK_STAGE}/ui/apps" +cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/sm64ex" + +mkdir -pv "${COOKBOOK_STAGE}/ui/icons/apps" +wget -O "${COOKBOOK_STAGE}/ui/icons/apps/sm64ex.png" https://evilgames.eu/texture-packs/thumb/sm64-reloaded.png """ From 36e720adb49ca417e163c20852a9f7eb342ee8a9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 16 Nov 2022 11:20:20 -0700 Subject: [PATCH 0990/3180] Change name in sm64ex manifest --- recipes/sm64ex/manifest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/sm64ex/manifest b/recipes/sm64ex/manifest index c44cadfb..38f7a22b 100644 --- a/recipes/sm64ex/manifest +++ b/recipes/sm64ex/manifest @@ -1,4 +1,4 @@ -name=sm64ex +name=Super Mario 64 EX category=Games binary=/bin/sm64 icon=/ui/icons/apps/sm64ex.png From 6adbe5927b6e4e656484adbb3016755f41407b3b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 16 Nov 2022 11:28:46 -0700 Subject: [PATCH 0991/3180] Add scummvm manifest and icon --- recipes/scummvm/icon.png | Bin 0 -> 4683 bytes recipes/scummvm/manifest | 4 ++++ recipes/scummvm/recipe.sh | 7 +++++++ 3 files changed, 11 insertions(+) create mode 100644 recipes/scummvm/icon.png create mode 100644 recipes/scummvm/manifest diff --git a/recipes/scummvm/icon.png b/recipes/scummvm/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b2953a649b9cdabca25676d8277a8db62d1c6018 GIT binary patch literal 4683 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 N002ovPDHLkV1mfc$_xMi literal 0 HcmV?d00001 diff --git a/recipes/scummvm/manifest b/recipes/scummvm/manifest new file mode 100644 index 00000000..03111f70 --- /dev/null +++ b/recipes/scummvm/manifest @@ -0,0 +1,4 @@ +name=ScummVM +category=Games +binary=/bin/scummvm +icon=/ui/icons/apps/scummvm.png diff --git a/recipes/scummvm/recipe.sh b/recipes/scummvm/recipe.sh index fab27b6a..22ee8d5c 100644 --- a/recipes/scummvm/recipe.sh +++ b/recipes/scummvm/recipe.sh @@ -33,5 +33,12 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" "$REDOX_MAKE" DESTDIR="$dest" install + + mkdir -pv "$1/ui/apps" + cp -v "${COOKBOOK_RECIPE}/manifest" "$1/ui/apps/scummvm" + + mkdir -pv "$1/ui/icons/apps" + cp -v "${COOKBOOK_RECIPE}/icon.png" "$1/ui/icons/apps/scummvm.png" + skip=1 } From 4377f74fe7cf7bd344c95c231500aacad71e13ee Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 16 Nov 2022 11:32:29 -0700 Subject: [PATCH 0992/3180] Fix bash recipe --- recipes/bash/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/bash/recipe.toml b/recipes/bash/recipe.toml index 4505f88d..e06cc7fa 100644 --- a/recipes/bash/recipe.toml +++ b/recipes/bash/recipe.toml @@ -15,6 +15,7 @@ dependencies = [ ] script = """ COOKBOOK_CONFIGURE_FLAGS+=( + ac_cv_func_wcwidth=no # TODO: add more wc functions and remove this bash_cv_getenv_redef=no ) COOKBOOK_MAKE_JOBS=1 # workaround for parallel make bugs From 7fd0772ea3eeb514ae11692cc72e2aedbac29f1d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 16 Nov 2022 11:33:38 -0700 Subject: [PATCH 0993/3180] Use vi feature with cosmic-text editor --- recipes/cosmic-text/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/cosmic-text/recipe.sh b/recipes/cosmic-text/recipe.sh index 1547f24f..8d7d37ea 100644 --- a/recipes/cosmic-text/recipe.sh +++ b/recipes/cosmic-text/recipe.sh @@ -4,7 +4,7 @@ BRANCH=main function recipe_build { sysroot="$(realpath ../sysroot)" set -x - cargo build --target "$TARGET" --release --package editor-orbclient + cargo build --target "$TARGET" --release --package editor-orbclient --features vi set +x skip=1 } From a0a827e89f56b206fe587b7a35744ec8ec8e7641 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 16 Nov 2022 12:29:33 -0700 Subject: [PATCH 0994/3180] Install not provided by uutils right now --- recipes/uutils/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/uutils/recipe.toml b/recipes/uutils/recipe.toml index 05964086..e346a12b 100644 --- a/recipes/uutils/recipe.toml +++ b/recipes/uutils/recipe.toml @@ -40,7 +40,7 @@ BINS=( fold hashsum head - install + #install need gid2grp join link ln From 7f65e45823717e11615d09f4bff146102b883aad Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 16 Nov 2022 13:53:41 -0700 Subject: [PATCH 0995/3180] Remove git folder from jeremy recipe --- recipes/jeremy/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/jeremy/recipe.toml b/recipes/jeremy/recipe.toml index 2eeb3564..47c300e0 100644 --- a/recipes/jeremy/recipe.toml +++ b/recipes/jeremy/recipe.toml @@ -7,4 +7,5 @@ template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/home" cp -rv "${COOKBOOK_SOURCE}" "${COOKBOOK_STAGE}/home/user" +rm -rf "${COOKBOOK_STAGE}/home/user/.git" """ From d8fa264c56b99d94b024270f9c647a362b985771 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 20 Nov 2022 09:59:07 -0700 Subject: [PATCH 0996/3180] Add sdl_mixer support to prboom --- recipes/prboom/recipe.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/recipes/prboom/recipe.sh b/recipes/prboom/recipe.sh index 6fd97441..25550228 100644 --- a/recipes/prboom/recipe.sh +++ b/recipes/prboom/recipe.sh @@ -1,6 +1,6 @@ VERSION=2.5.0 TAR=https://downloads.sourceforge.net/project/prboom/prboom%20stable/$VERSION/prboom-$VERSION.tar.gz -BUILD_DEPENDS=(sdl liborbital) +BUILD_DEPENDS=(sdl liborbital sdl_mixer libogg libvorbis) function recipe_version { echo "$VERSION" @@ -9,6 +9,7 @@ function recipe_version { function recipe_build { export CFLAGS="-static" + export MIXER_LIBS="-lSDL_mixer -lvorbisfile -lvorbis -logg" sysroot="$(realpath ../sysroot)" autoreconf -if wget -O autotools/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" @@ -20,7 +21,8 @@ function recipe_build { --disable-cpu-opt \ --disable-gl \ --without-net \ - --with-sdl-prefix="$sysroot" + --with-sdl-prefix="$sysroot" \ + ac_cv_lib_SDL_mixer_Mix_OpenAudio=yes "$REDOX_MAKE" -j"$($NPROC)" skip=1 } From 9f610f39219ef78875279718067829cebbfacb54 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 20 Nov 2022 11:26:26 -0700 Subject: [PATCH 0997/3180] Add sdl_mixer midi support --- recipes/sdl_mixer/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/sdl_mixer/recipe.sh b/recipes/sdl_mixer/recipe.sh index 5781e64d..be384383 100644 --- a/recipes/sdl_mixer/recipe.sh +++ b/recipes/sdl_mixer/recipe.sh @@ -18,12 +18,12 @@ function recipe_build { --build=${BUILD} \ --host=${HOST} \ --enable-music-ogg \ + --enable-music-midi \ --disable-shared \ --disable-sdltest \ --disable-music-cmd \ --disable-music-mp3 \ --disable-smpegtest \ - --disable-music-midi \ --disable-music-mod "$REDOX_MAKE" -j"$($NPROC)" skip=1 From 61480b3be6fac7454a99994c522a5c202f9d9c76 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 20 Nov 2022 12:45:38 -0700 Subject: [PATCH 0998/3180] Add freepats, use by default for sdl_mixer midi --- recipes/freepats/recipe.sh | 26 ++++++++++++++ .../sdl_mixer/{01_redox.patch => redox.patch} | 36 ++++++++++++++++--- 2 files changed, 57 insertions(+), 5 deletions(-) create mode 100644 recipes/freepats/recipe.sh rename recipes/sdl_mixer/{01_redox.patch => redox.patch} (50%) diff --git a/recipes/freepats/recipe.sh b/recipes/freepats/recipe.sh new file mode 100644 index 00000000..16006479 --- /dev/null +++ b/recipes/freepats/recipe.sh @@ -0,0 +1,26 @@ +VERSION=20060219 +GIT=https://gitlab.redox-os.org/redox-os/freepats.git + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_build { + echo "skipping build" + skip=1 +} + +function recipe_clean { + echo "skipping clean" + skip=1 +} + +function recipe_stage { + mkdir -pv "$1/share/freepats" + cp -Rv ./* "$1/share/freepats" + mkdir -pv "$1/etc/timidity" + echo "dir /share/freepats" > "$1/etc/timidity/freepats.cfg" + echo "source /share/freepats/freepats.cfg" >> "$1/etc/timidity/freepats.cfg" + skip=1 +} diff --git a/recipes/sdl_mixer/01_redox.patch b/recipes/sdl_mixer/redox.patch similarity index 50% rename from recipes/sdl_mixer/01_redox.patch rename to recipes/sdl_mixer/redox.patch index 1337ba34..c08dca81 100644 --- a/recipes/sdl_mixer/01_redox.patch +++ b/recipes/sdl_mixer/redox.patch @@ -1,6 +1,6 @@ -diff -ruw source/build-scripts/config.sub source-new/build-scripts/config.sub +diff -ruwN source/build-scripts/config.sub source-new/build-scripts/config.sub --- source/build-scripts/config.sub 2012-01-15 15:01:05.000000000 -0700 -+++ source-new/build-scripts/config.sub 2019-06-18 20:56:54.052482658 -0600 ++++ source-new/build-scripts/config.sub 2022-11-20 12:23:50.849108724 -0700 @@ -1276,7 +1276,7 @@ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ @@ -10,10 +10,9 @@ diff -ruw source/build-scripts/config.sub source-new/build-scripts/config.sub | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ -Only in source-new/build-scripts: config.sub.orig -diff -ruw source/Makefile.in source-new/Makefile.in +diff -ruwN source/Makefile.in source-new/Makefile.in --- source/Makefile.in 2012-01-15 15:01:04.000000000 -0700 -+++ source-new/Makefile.in 2019-06-18 20:57:42.376687909 -0600 ++++ source-new/Makefile.in 2022-11-20 12:23:50.849108724 -0700 @@ -66,10 +66,10 @@ $(LIBTOOL) --mode=link $(CC) -o $@ $(OBJECTS) $(VERSION_OBJECTS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS) @@ -27,3 +26,30 @@ diff -ruw source/Makefile.in source-new/Makefile.in install: all install-hdrs install-lib #install-bin install-hdrs: +diff -ruwN source/timidity/config.h source-new/timidity/config.h +--- source/timidity/config.h 2012-01-15 15:01:05.000000000 -0700 ++++ source-new/timidity/config.h 2022-11-20 12:26:04.067581857 -0700 +@@ -162,6 +162,7 @@ + then specify the library directory in the configuration file. */ + #define CONFIG_FILE "timidity.cfg" + #define CONFIG_FILE_ETC "/etc/timidity.cfg" ++#define CONFIG_FILE_ETC_TIMIDITY_FREEPATS "/etc/timidity/freepats.cfg" + + #if defined(__WIN32__) || defined(__OS2__) + #define DEFAULT_PATH "C:\\TIMIDITY" +diff -ruwN source/timidity/timidity.c source-new/timidity/timidity.c +--- source/timidity/timidity.c 2012-01-15 15:01:05.000000000 -0700 ++++ source-new/timidity/timidity.c 2022-11-20 12:26:42.248290658 -0700 +@@ -286,10 +286,12 @@ + if (!env || read_config_file(env)<0) { + if (read_config_file(CONFIG_FILE)<0) { + if (read_config_file(CONFIG_FILE_ETC)<0) { ++ if (read_config_file(CONFIG_FILE_ETC_TIMIDITY_FREEPATS)<0) { + return(-1); + } + } + } ++ } + + if (channels < 1 || channels == 3 || channels == 5 || channels > 6) return(-1); + From 97469d5e83367e61af60a93771cc40a821b2c3f8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 22 Nov 2022 15:57:18 -0700 Subject: [PATCH 0999/3180] Setup manifest for doom shareware --- recipes/freedoom/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/freedoom/recipe.sh b/recipes/freedoom/recipe.sh index fabf640e..6ff61e46 100644 --- a/recipes/freedoom/recipe.sh +++ b/recipes/freedoom/recipe.sh @@ -30,7 +30,7 @@ function recipe_stage { echo "/games/prboom -geom 800x600 -vidmode 32 -iwad $wad" >> "$1$bin" chmod +x "$1$bin" - echo "name=$game" | sed 's/freedoom/FreeDOOM /' > "$1/ui/apps/$game" + echo "name=$game" | sed 's/freedoom/FreeDOOM: Phase /' | sed 's/doom1/DOOM (Shareware)/' > "$1/ui/apps/$game" echo "category=Games" >> "$1/ui/apps/$game" echo "binary=/games/$game" >> "$1/ui/apps/$game" echo "icon=/ui/icons/apps/$game.png" >> "$1/ui/apps/$game" From 3d72057d3a309269df674c4ca874161302fa26a8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 23 Nov 2022 13:08:22 -0700 Subject: [PATCH 1000/3180] Update mesa recipe --- recipes/mesa/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/mesa/recipe.toml b/recipes/mesa/recipe.toml index 9762ccf1..7b09baf4 100644 --- a/recipes/mesa/recipe.toml +++ b/recipes/mesa/recipe.toml @@ -12,6 +12,9 @@ dependencies = [ "zlib", ] script = """ +#TODO: do this in cook instead +unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP + export CFLAGS="-I${COOKBOOK_SYSROOT}/include -DHAVE_PTHREAD=1" export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include -DHAVE_PTHREAD=1" export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib --static" From 10a8221779f6e122dc3de3a358ea8e783e2a0964 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 30 Nov 2022 07:16:12 -0700 Subject: [PATCH 1001/3180] Add iced recipe --- recipes/iced/recipe.toml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 recipes/iced/recipe.toml diff --git a/recipes/iced/recipe.toml b/recipes/iced/recipe.toml new file mode 100644 index 00000000..8d8ea507 --- /dev/null +++ b/recipes/iced/recipe.toml @@ -0,0 +1,23 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/iced.git" +branch = "redox" + +[build] +template = "custom" +dependencies = [ + "llvm", + "mesa", + "zlib" +] +script = """ + set -x + ${COOKBOOK_CARGO} rustc \ + --release \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --package styling \ + -- \ + -L "${COOKBOOK_SYSROOT}/lib" \ + -C link-args="-Wl,-Bstatic $("${PKG_CONFIG}" --libs osmesa) -lz -lstdc++ -lc -lgcc" + mkdir -pv "${COOKBOOK_STAGE}/bin" + cp -v "target/${TARGET}/release/styling" "${COOKBOOK_STAGE}/bin/iced" +""" From b9ddf201aa6484d6ff6b0a1f88a2b104dca29cf5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 30 Nov 2022 08:12:23 -0700 Subject: [PATCH 1002/3180] Convert fontconfig to recipe.toml --- recipes/fontconfig/recipe.sh | 37 ---------------------------------- recipes/fontconfig/recipe.toml | 24 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 37 deletions(-) delete mode 100755 recipes/fontconfig/recipe.sh create mode 100755 recipes/fontconfig/recipe.toml diff --git a/recipes/fontconfig/recipe.sh b/recipes/fontconfig/recipe.sh deleted file mode 100755 index d3382aef..00000000 --- a/recipes/fontconfig/recipe.sh +++ /dev/null @@ -1,37 +0,0 @@ -VERSION="2.13.91" -TAR="https://www.freedesktop.org/software/fontconfig/release/fontconfig-${VERSION}.tar.xz" -BUILD_DEPENDS=(expat freetype libpng zlib) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib --static" - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix=/ \ - --disable-shared \ - --enable-static \ - --disable-docs \ - ac_cv_func_XML_SetDoctypeDeclHandler=yes - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/fontconfig/recipe.toml b/recipes/fontconfig/recipe.toml new file mode 100755 index 00000000..055e18f8 --- /dev/null +++ b/recipes/fontconfig/recipe.toml @@ -0,0 +1,24 @@ +[source] +tar = "https://www.freedesktop.org/software/fontconfig/release/fontconfig-2.13.91.tar.xz" +patches = [ + "redox.patch" +] +script = """ +wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +""" + +[build] +template = "custom" +dependencies = [ + "expat", + "freetype", + "libpng", + "zlib", +] +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --disable-docs \ + ac_cv_func_XML_SetDoctypeDeclHandler=yes +) +cookbook_configure +""" From c7f8d1e3496988685619997645420abd17000ff1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 30 Nov 2022 08:16:23 -0700 Subject: [PATCH 1003/3180] Add recipe for crates.io index --- recipes/crates-io-index/recipe.toml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 recipes/crates-io-index/recipe.toml diff --git a/recipes/crates-io-index/recipe.toml b/recipes/crates-io-index/recipe.toml new file mode 100644 index 00000000..0f9dc13f --- /dev/null +++ b/recipes/crates-io-index/recipe.toml @@ -0,0 +1,10 @@ +[source] +git = "https://github.com/rust-lang/crates.io-index.git" + +[build] +template = "custom" +script = """ +dir="${COOKBOOK_STAGE}/home/user/.cargo/registry/index/github.com-1ecc6299db9ec823" +mkdir -pv "${dir}" +cp -rv "${COOKBOOK_SOURCE}/.git" "${dir}" +""" From 84679bf575d09436062bf1868d9a23ff094a1052 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 30 Nov 2022 15:30:43 -0700 Subject: [PATCH 1004/3180] Add WIP classicube and libcosmic recipes --- recipes/classicube/recipe.toml | 26 ++++++++++++++++++++++++++ recipes/libcosmic/recipe.toml | 23 +++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 recipes/classicube/recipe.toml create mode 100644 recipes/libcosmic/recipe.toml diff --git a/recipes/classicube/recipe.toml b/recipes/classicube/recipe.toml new file mode 100644 index 00000000..c65eb8e6 --- /dev/null +++ b/recipes/classicube/recipe.toml @@ -0,0 +1,26 @@ +[source] +git = "https://github.com/jackpot51/ClassiCube.git" + +[build] +template = "custom" +dependencies = [ + "liborbital", + "llvm", + "mesa", + "sdl2", + "zlib", +] +script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ + +"${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" -C src redox + +mkdir -pv "${COOKBOOK_STAGE}/games/classicube" +cp -v "src/ClassiCube" "${COOKBOOK_STAGE}/games/classicube" + +mkdir -pv "${COOKBOOK_STAGE}/ui/apps" +cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/classicube" + +mkdir -pv "${COOKBOOK_STAGE}/ui/icons/apps" +cp -v "${COOKBOOK_SOURCE}/misc/CCicon.png" "${COOKBOOK_STAGE}/ui/icons/apps/classicube.png" +""" diff --git a/recipes/libcosmic/recipe.toml b/recipes/libcosmic/recipe.toml new file mode 100644 index 00000000..426d7619 --- /dev/null +++ b/recipes/libcosmic/recipe.toml @@ -0,0 +1,23 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/libcosmic.git" +branch = "redox" + +[build] +template = "custom" +dependencies = [ + "llvm", + "mesa", + "zlib" +] +script = """ + set -x + ${COOKBOOK_CARGO} rustc \ + --release \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --package cosmic \ + -- \ + -L "${COOKBOOK_SYSROOT}/lib" \ + -C link-args="-Wl,-Bstatic $("${PKG_CONFIG}" --libs osmesa) -lz -lstdc++ -lc -lgcc" + mkdir -pv "${COOKBOOK_STAGE}/bin" + cp -v "target/${TARGET}/release/cosmic" "${COOKBOOK_STAGE}/bin/libcosmic" +""" From b15ae1a745dedf9db914b3f71a55c9e904f95c6b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 30 Nov 2022 18:14:25 -0700 Subject: [PATCH 1005/3180] Add classicube manifest --- recipes/classicube/manifest | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 recipes/classicube/manifest diff --git a/recipes/classicube/manifest b/recipes/classicube/manifest new file mode 100644 index 00000000..e089d084 --- /dev/null +++ b/recipes/classicube/manifest @@ -0,0 +1,4 @@ +name=ClassiCube +category=Games +binary=/games/classicube/ClassiCube +icon=/ui/icons/apps/classicube.png From 487834693999825e2a06240d1b2c97e4b45b6b3c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 Dec 2022 14:30:42 -0700 Subject: [PATCH 1006/3180] Ensure compatibility across timidity versions --- recipes/timidity/recipe.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/timidity/recipe.sh b/recipes/timidity/recipe.sh index f510cc36..6e3b8765 100644 --- a/recipes/timidity/recipe.sh +++ b/recipes/timidity/recipe.sh @@ -33,5 +33,8 @@ function recipe_stage { mkdir -pv "$1/etc/timidity" echo "soundfont /share/generaluser-gs/generaluser-gs.sf2" >> "$1/etc/timidity/timidity.cfg" + mkdir -pv "$1/share/timidity" + echo "soundfont /share/generaluser-gs/generaluser-gs.sf2" >> "$1/share/timidity/timidity.cfg" + skip=1 } From 05e0b93c6e8fa40ef3e55ba0334cb8dd4aaf4d42 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 Dec 2022 18:00:15 -0700 Subject: [PATCH 1007/3180] Improvements to freeciv recipe, still not working --- recipes/freeciv/recipe.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/recipes/freeciv/recipe.sh b/recipes/freeciv/recipe.sh index c97e02c2..bbbf7fce 100644 --- a/recipes/freeciv/recipe.sh +++ b/recipes/freeciv/recipe.sh @@ -1,4 +1,4 @@ -VERSION=2.6.0 +VERSION=2.6.6 TAR=http://files.freeciv.org/stable/freeciv-$VERSION.tar.bz2 BUILD_DEPENDS=(curl freetype libiconv liborbital libpng openssl nghttp2 sdl sdl_gfx sdl_image sdl_mixer sdl_ttf zlib) @@ -11,7 +11,8 @@ function recipe_build { wget -O bootstrap/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" sysroot="$(realpath ../sysroot)" export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib" + export LDFLAGS="-L$sysroot/lib --static" + export SDL_CONFIG="$sysroot/bin/sdl-config" ./configure \ --build=${BUILD} \ --host="$HOST" \ @@ -24,7 +25,9 @@ function recipe_build { --with-sdl-prefix="$sysroot" \ ac_cv_lib_SDL_image_IMG_Load=yes \ ac_cv_lib_SDL_ttf_TTF_OpenFont=yes \ - ac_cv_lib_SDL_gfx_rotozoomSurface=yes + ac_cv_lib_SDL_gfx_rotozoomSurface=yes \ + gui_sdl_cflags="${CFLAGS}" \ + gui_sdl_ldflags="${LDFLAGS}" "$REDOX_MAKE" -j"$($NPROC)" V=1 skip=1 } From b81575363352a6c08fc0c6301d31f935d19f3e2a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 Dec 2022 08:25:55 -0700 Subject: [PATCH 1008/3180] Add patched libc crate --- .cargo/config | 4 ++++ recipes/cosmic-text/.cargo/config | 2 -- 2 files changed, 4 insertions(+), 2 deletions(-) delete mode 100644 recipes/cosmic-text/.cargo/config diff --git a/.cargo/config b/.cargo/config index 424d6606..bb5816a4 100644 --- a/.cargo/config +++ b/.cargo/config @@ -9,3 +9,7 @@ rustflags = [] [target.x86_64-unknown-redox] linker = "x86_64-unknown-redox-gcc" rustflags = [] + +# TODO: remove patch if https://github.com/rust-lang/libc/pull/3024 is released +[patch.crates-io] +libc = { git = "https://gitlab.redox-os.org/redox-os/liblibc.git", branch = "rust-2022-03-18" } diff --git a/recipes/cosmic-text/.cargo/config b/recipes/cosmic-text/.cargo/config deleted file mode 100644 index b0e8868a..00000000 --- a/recipes/cosmic-text/.cargo/config +++ /dev/null @@ -1,2 +0,0 @@ -[patch.crates-io] -libc = { git = "https://gitlab.redox-os.org/redox-os/liblibc.git", branch = "redox-0.2.136" } From 224c7e161410dcc02837a31dcfe8fdb67efb124e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 Dec 2022 09:45:47 -0700 Subject: [PATCH 1009/3180] Fix eduke32 compilation on i686 --- recipes/eduke32/redox.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/eduke32/redox.patch b/recipes/eduke32/redox.patch index 42a3f80d..52f966ca 100644 --- a/recipes/eduke32/redox.patch +++ b/recipes/eduke32/redox.patch @@ -15,7 +15,7 @@ diff -rupwN source/Common.mak source-new/Common.mak endif +ifeq ($(PLATFORM),REDOX) -+ CROSS := x86_64-unknown-redox- ++ CROSS := $(TARGET)- +endif + CC := $(CROSS)gcc$(CROSS_SUFFIX) From 5563574c62e1ba7fe0ae1e1c344e08cdc7b6b0b3 Mon Sep 17 00:00:00 2001 From: Florian Blasius Date: Mon, 5 Dec 2022 13:43:59 +0000 Subject: [PATCH 1010/3180] Slint port of calculator --- recipes/orbutils/recipe.toml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/recipes/orbutils/recipe.toml b/recipes/orbutils/recipe.toml index fd6a5159..daa18cce 100644 --- a/recipes/orbutils/recipe.toml +++ b/recipes/orbutils/recipe.toml @@ -5,7 +5,13 @@ git = "https://gitlab.redox-os.org/redox-os/orbutils.git" template = "custom" script = """ COOKBOOK_CARGO_FLAGS=( - --path "${COOKBOOK_SOURCE}" + --path "${COOKBOOK_SOURCE}/src" + --root "${COOKBOOK_STAGE}/ui" + --locked +) +cookbook_cargo +COOKBOOK_CARGO_FLAGS=( + --path "${COOKBOOK_SOURCE}/calculator" --root "${COOKBOOK_STAGE}/ui" --locked ) @@ -14,5 +20,10 @@ cookbook_cargo [package] dependencies = [ - "orbital" + "orbital", + "expat", + "fontconfig", + "freetype", + "libpng", + "zlib", ] From 4af48ae5669c7c83a627ef182a31c089904195ee Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 5 Dec 2022 08:30:35 -0700 Subject: [PATCH 1011/3180] Fix orbutils recipe --- recipes/book/recipe.toml | 10 ++++++++++ recipes/orbutils/recipe.toml | 5 ++++- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 recipes/book/recipe.toml diff --git a/recipes/book/recipe.toml b/recipes/book/recipe.toml new file mode 100644 index 00000000..300f96de --- /dev/null +++ b/recipes/book/recipe.toml @@ -0,0 +1,10 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/book.git" + +[build] +template = "custom" +script = """ +dir="${COOKBOOK_STAGE}/share/book" +mkdir -pv "${dir}" +mdbook build --dest-dir "${dir}" "${COOKBOOK_SOURCE}" +""" diff --git a/recipes/orbutils/recipe.toml b/recipes/orbutils/recipe.toml index daa18cce..684b8814 100644 --- a/recipes/orbutils/recipe.toml +++ b/recipes/orbutils/recipe.toml @@ -1,19 +1,22 @@ [source] git = "https://gitlab.redox-os.org/redox-os/orbutils.git" +branch = "slint_port/calculator" [build] template = "custom" script = """ COOKBOOK_CARGO_FLAGS=( - --path "${COOKBOOK_SOURCE}/src" + --path "${COOKBOOK_SOURCE}/orbutils" --root "${COOKBOOK_STAGE}/ui" --locked + --no-track ) cookbook_cargo COOKBOOK_CARGO_FLAGS=( --path "${COOKBOOK_SOURCE}/calculator" --root "${COOKBOOK_STAGE}/ui" --locked + --no-track ) cookbook_cargo """ From 9a17505d3e9a868c2bac720f55562b60ab76b40f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 5 Dec 2022 08:51:18 -0700 Subject: [PATCH 1012/3180] Go back to master branch of orbutils --- recipes/orbutils/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/orbutils/recipe.toml b/recipes/orbutils/recipe.toml index 684b8814..920ed576 100644 --- a/recipes/orbutils/recipe.toml +++ b/recipes/orbutils/recipe.toml @@ -1,6 +1,5 @@ [source] git = "https://gitlab.redox-os.org/redox-os/orbutils.git" -branch = "slint_port/calculator" [build] template = "custom" From 6545cf036d733126fa02cae20f1f0e23aee627d6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 5 Dec 2022 14:29:02 -0700 Subject: [PATCH 1013/3180] Fix compilation of iced recipe --- recipes/iced/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/iced/recipe.toml b/recipes/iced/recipe.toml index 8d8ea507..2dfd3f8e 100644 --- a/recipes/iced/recipe.toml +++ b/recipes/iced/recipe.toml @@ -17,7 +17,7 @@ script = """ --package styling \ -- \ -L "${COOKBOOK_SYSROOT}/lib" \ - -C link-args="-Wl,-Bstatic $("${PKG_CONFIG}" --libs osmesa) -lz -lstdc++ -lc -lgcc" + -C link-args="-Wl,-Bstatic $("${TARGET}-pkg-config" --libs osmesa) -lz -lstdc++ -lc -lgcc" mkdir -pv "${COOKBOOK_STAGE}/bin" cp -v "target/${TARGET}/release/styling" "${COOKBOOK_STAGE}/bin/iced" """ From f1087a3ed89925e51f06b4bbd5a6bf924d3a57f9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 Dec 2022 08:44:12 -0700 Subject: [PATCH 1014/3180] Install iced tour as well as styling example --- recipes/iced/recipe.toml | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/recipes/iced/recipe.toml b/recipes/iced/recipe.toml index 2dfd3f8e..d4595a44 100644 --- a/recipes/iced/recipe.toml +++ b/recipes/iced/recipe.toml @@ -11,13 +11,16 @@ dependencies = [ ] script = """ set -x - ${COOKBOOK_CARGO} rustc \ - --release \ - --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ - --package styling \ - -- \ - -L "${COOKBOOK_SYSROOT}/lib" \ - -C link-args="-Wl,-Bstatic $("${TARGET}-pkg-config" --libs osmesa) -lz -lstdc++ -lc -lgcc" - mkdir -pv "${COOKBOOK_STAGE}/bin" - cp -v "target/${TARGET}/release/styling" "${COOKBOOK_STAGE}/bin/iced" + for example in styling tour + do + ${COOKBOOK_CARGO} rustc \ + --release \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --package "${example}" \ + -- \ + -L "${COOKBOOK_SYSROOT}/lib" \ + -C link-args="-Wl,-Bstatic $("${TARGET}-pkg-config" --libs osmesa) -lz -lstdc++ -lc -lgcc" + mkdir -pv "${COOKBOOK_STAGE}/bin" + cp -v "target/${TARGET}/release/${example}" "${COOKBOOK_STAGE}/bin/iced-${example}" + done """ From fd40e845fd6e0633dc86e2b3aecd5f8329539efc Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 Dec 2022 09:47:40 -0700 Subject: [PATCH 1015/3180] Add pop-icon-theme --- recipes/pop-icon-theme/recipe.toml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 recipes/pop-icon-theme/recipe.toml diff --git a/recipes/pop-icon-theme/recipe.toml b/recipes/pop-icon-theme/recipe.toml new file mode 100644 index 00000000..f62a877b --- /dev/null +++ b/recipes/pop-icon-theme/recipe.toml @@ -0,0 +1,9 @@ +[source] +git = "https://github.com/pop-os/icon-theme.git" + +[build] +template = "custom" +script = """ +meson setup -Dprefix=/ . "${COOKBOOK_SOURCE}" +env DESTDIR="${COOKBOOK_STAGE}" meson install +""" From d3225d91ea8902b269bec145c2783c6106493133 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 Dec 2022 15:13:02 -0700 Subject: [PATCH 1016/3180] Update glib and harfbuzz to use new recipe format --- recipes/glib/recipe.sh | 35 ------------------------------- recipes/glib/recipe.toml | 26 +++++++++++++++++++++++ recipes/harfbuzz/recipe.sh | 40 ------------------------------------ recipes/harfbuzz/recipe.toml | 22 ++++++++++++++++++++ 4 files changed, 48 insertions(+), 75 deletions(-) delete mode 100644 recipes/glib/recipe.sh create mode 100644 recipes/glib/recipe.toml delete mode 100644 recipes/harfbuzz/recipe.sh create mode 100644 recipes/harfbuzz/recipe.toml diff --git a/recipes/glib/recipe.sh b/recipes/glib/recipe.sh deleted file mode 100644 index dede5aee..00000000 --- a/recipes/glib/recipe.sh +++ /dev/null @@ -1,35 +0,0 @@ -VERSION=2.59.0 -TAR=https://download.gnome.org/sources/glib/${VERSION%.*}/glib-$VERSION.tar.xz -BUILD_DEPENDS=(gettext libffi libiconv pcre zlib) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib --static" - glib_cv_stack_grows=no glib_cv_uscore=no ./autogen.sh \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix=/ \ - --disable-shared \ - --enable-static - sed -i 's/#define HAVE_SYS_RESOURCE_H 1/#undef HAVE_SYS_RESOURCE_H/' config.h - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/glib/recipe.toml b/recipes/glib/recipe.toml new file mode 100644 index 00000000..bcb6abe6 --- /dev/null +++ b/recipes/glib/recipe.toml @@ -0,0 +1,26 @@ +[source] +tar = "https://download.gnome.org/sources/glib/2.59/glib-2.59.0.tar.xz" +patches = [ + "redox.patch" +] + +[build] +template = "custom" +dependencies = [ + "gettext", + "libffi", + "libiconv", + "pcre", + "zlib", +] +script = """ +"${COOKBOOK_SOURCE}/autogen.sh" \ + "${COOKBOOK_CONFIGURE_FLAGS[@]}" \ + glib_cv_stack_grows=no \ + glib_cv_uscore=no + +sed -i 's/#define HAVE_SYS_RESOURCE_H 1/#undef HAVE_SYS_RESOURCE_H/' config.h + +COOKBOOK_CONFIGURE="true" +cookbook_configure +""" diff --git a/recipes/harfbuzz/recipe.sh b/recipes/harfbuzz/recipe.sh deleted file mode 100644 index d61f7078..00000000 --- a/recipes/harfbuzz/recipe.sh +++ /dev/null @@ -1,40 +0,0 @@ -VERSION=2.3.0 -TAR=https://www.freedesktop.org/software/harfbuzz/release/harfbuzz-$VERSION.tar.bz2 -BUILD_DEPENDS=(freetype gettext glib libiconv libpng pcre zlib) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib --static" - #wget -O build-aux/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" - FREETYPE_CFLAGS="$("${PKG_CONFIG}" --cflags freetype2)" - FREETYPE_LIBS="$("${PKG_CONFIG}" --libs freetype2)" - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix=/ \ - --disable-shared \ - --enable-static \ - --with-glib=yes \ - --with-freetype=yes \ - --with-icu=no - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/harfbuzz/recipe.toml b/recipes/harfbuzz/recipe.toml new file mode 100644 index 00000000..f0e35352 --- /dev/null +++ b/recipes/harfbuzz/recipe.toml @@ -0,0 +1,22 @@ +[source] +tar = "https://www.freedesktop.org/software/harfbuzz/release/harfbuzz-2.3.0.tar.bz2" + +[build] +template = "custom" +dependencies = [ + "freetype", + "gettext", + "glib", + "libiconv", + "libpng", + "pcre", + "zlib" +] +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --with-glib=yes + --with-freetype=yes + --with-icu=no +) +cookbook_configure +""" From 3a8bfb973543c6c3dfefd81fcaf2866297f45cf1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 Dec 2022 15:35:52 -0700 Subject: [PATCH 1017/3180] Update webrender recipe --- recipes/webrender/recipe.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/webrender/recipe.sh b/recipes/webrender/recipe.sh index 8b640f87..774f8d33 100644 --- a/recipes/webrender/recipe.sh +++ b/recipes/webrender/recipe.sh @@ -5,17 +5,16 @@ BUILD_DEPENDS=(freetype libpng llvm mesa zlib) function recipe_build { sysroot="$(realpath ../sysroot)" - cp -p "$ROOT/Xargo.toml" "Xargo.toml" for rs in $(find examples/ -maxdepth 1 -type f -name '*.rs') do bin="$(basename "$rs" .rs)" set -x - xargo rustc --target "$TARGET" --release --manifest-path examples/Cargo.toml --bin "$bin" \ + cargo rustc --target "$TARGET" --release --manifest-path examples/Cargo.toml --bin "$bin" \ -- \ -L "${sysroot}/lib" \ -l static=freetype \ -l static=png \ - -C link-args="$("${PKG_CONFIG}" --libs osmesa) -lglapi -lz -lstdc++ -lc -lgcc" + -C link-args="-Wl,-Bstatic $("${PKG_CONFIG}" --libs osmesa) -lz -lstdc++ -lc -lgcc" set +x done skip=1 From 7aa519b04c15012a5be397d20ff763ee8f9e9e2d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 Dec 2022 15:49:07 -0700 Subject: [PATCH 1018/3180] Add more iced examples --- recipes/iced/recipe.toml | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/recipes/iced/recipe.toml b/recipes/iced/recipe.toml index d4595a44..c92d017f 100644 --- a/recipes/iced/recipe.toml +++ b/recipes/iced/recipe.toml @@ -10,17 +10,23 @@ dependencies = [ "zlib" ] script = """ - set -x - for example in styling tour - do - ${COOKBOOK_CARGO} rustc \ - --release \ - --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ - --package "${example}" \ - -- \ - -L "${COOKBOOK_SYSROOT}/lib" \ - -C link-args="-Wl,-Bstatic $("${TARGET}-pkg-config" --libs osmesa) -lz -lstdc++ -lc -lgcc" - mkdir -pv "${COOKBOOK_STAGE}/bin" - cp -v "target/${TARGET}/release/${example}" "${COOKBOOK_STAGE}/bin/iced-${example}" - done +EXAMPLES=( + game_of_life + solar_system + styling + tour +) +set -x +for example in "${EXAMPLES[@]}" +do + ${COOKBOOK_CARGO} rustc \ + --release \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --package "${example}" \ + -- \ + -L "${COOKBOOK_SYSROOT}/lib" \ + -C link-args="-Wl,-Bstatic $("${TARGET}-pkg-config" --libs osmesa) -lz -lstdc++ -lc -lgcc" + mkdir -pv "${COOKBOOK_STAGE}/bin" + cp -v "target/${TARGET}/release/${example}" "${COOKBOOK_STAGE}/bin/iced_${example}" +done """ From 5df67123ce541ff07e3a49281c6202cbe3a08fec Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 7 Dec 2022 22:35:32 -0700 Subject: [PATCH 1019/3180] Do not require mesa for iced and libcosmic --- recipes/iced/recipe.toml | 15 ++------------- recipes/libcosmic/recipe.toml | 12 ++---------- 2 files changed, 4 insertions(+), 23 deletions(-) diff --git a/recipes/iced/recipe.toml b/recipes/iced/recipe.toml index c92d017f..447f93d5 100644 --- a/recipes/iced/recipe.toml +++ b/recipes/iced/recipe.toml @@ -4,28 +4,17 @@ branch = "redox" [build] template = "custom" -dependencies = [ - "llvm", - "mesa", - "zlib" -] script = """ EXAMPLES=( - game_of_life - solar_system styling - tour ) set -x for example in "${EXAMPLES[@]}" do - ${COOKBOOK_CARGO} rustc \ + ${COOKBOOK_CARGO} build \ --release \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ - --package "${example}" \ - -- \ - -L "${COOKBOOK_SYSROOT}/lib" \ - -C link-args="-Wl,-Bstatic $("${TARGET}-pkg-config" --libs osmesa) -lz -lstdc++ -lc -lgcc" + --package "${example}" mkdir -pv "${COOKBOOK_STAGE}/bin" cp -v "target/${TARGET}/release/${example}" "${COOKBOOK_STAGE}/bin/iced_${example}" done diff --git a/recipes/libcosmic/recipe.toml b/recipes/libcosmic/recipe.toml index 426d7619..3832b9f9 100644 --- a/recipes/libcosmic/recipe.toml +++ b/recipes/libcosmic/recipe.toml @@ -4,20 +4,12 @@ branch = "redox" [build] template = "custom" -dependencies = [ - "llvm", - "mesa", - "zlib" -] script = """ set -x - ${COOKBOOK_CARGO} rustc \ + ${COOKBOOK_CARGO} build \ --release \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ - --package cosmic \ - -- \ - -L "${COOKBOOK_SYSROOT}/lib" \ - -C link-args="-Wl,-Bstatic $("${PKG_CONFIG}" --libs osmesa) -lz -lstdc++ -lc -lgcc" + --package cosmic mkdir -pv "${COOKBOOK_STAGE}/bin" cp -v "target/${TARGET}/release/cosmic" "${COOKBOOK_STAGE}/bin/libcosmic" """ From 7d31150e21d1ae62ca33a4015b0f74d217c3ba73 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 8 Dec 2022 09:15:15 -0700 Subject: [PATCH 1020/3180] Migrate glutin to new recipe format --- recipes/glutin/recipe.sh | 22 ---------------------- recipes/glutin/recipe.toml | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 22 deletions(-) delete mode 100644 recipes/glutin/recipe.sh create mode 100644 recipes/glutin/recipe.toml diff --git a/recipes/glutin/recipe.sh b/recipes/glutin/recipe.sh deleted file mode 100644 index 41fc5a10..00000000 --- a/recipes/glutin/recipe.sh +++ /dev/null @@ -1,22 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/glutin.git -GIT_UPSTREAM=https://github.com/rust-windowing/glutin.git -BUILD_DEPENDS=(llvm mesa zlib) -BRANCH=redox-0.29 - -function recipe_build { - sysroot="$(realpath ../sysroot)" - set -x - cargo rustc --target "$TARGET" --release --package glutin_examples --example window \ - -- \ - -L "${sysroot}/lib" \ - -C link-args="-Wl,-Bstatic $("${PKG_CONFIG}" --libs osmesa) -lz -lstdc++ -lc -lgcc" - set +x - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - mkdir -pv "$dest/bin" - cp -v "target/${TARGET}/release/examples/window" "$dest/bin/glutin" - skip=1 -} diff --git a/recipes/glutin/recipe.toml b/recipes/glutin/recipe.toml new file mode 100644 index 00000000..18fed532 --- /dev/null +++ b/recipes/glutin/recipe.toml @@ -0,0 +1,32 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/glutin.git" +branch = "redox-0.29" +upstream = "https://github.com/rust-windowing/glutin.git" + +[build] +template = "custom" +dependencies = [ + "llvm", + "mesa", + "zlib" +] +script = """ +EXAMPLES=( + multiwindow + transparent + window +) +for example in "${EXAMPLES[@]}" +do + cargo rustc \ + --target "$TARGET" \ + --release \ + --manifest-path "${COOKBOOK_SOURCE}/glutin_examples/Cargo.toml" \ + --example "${example}" \ + -- \ + -L "${COOKBOK_SYSROOT}/lib" \ + -C link-args="-Wl,-Bstatic $("${TARGET}-pkg-config" --libs osmesa) -lz -lstdc++ -lc -lgcc" + mkdir -pv "${COOKBOOK_STAGE}/bin" + cp -v "target/${TARGET}/release/examples/${example}" "${COOKBOOK_STAGE}/bin/glutin_${example}" +done +""" From 169faf992ddea6d2c2fc7613309b4a192104c6a1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 9 Dec 2022 11:37:12 -0700 Subject: [PATCH 1021/3180] Add noto color emoji recipe --- recipes/noto-color-emoji/recipe.toml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 recipes/noto-color-emoji/recipe.toml diff --git a/recipes/noto-color-emoji/recipe.toml b/recipes/noto-color-emoji/recipe.toml new file mode 100644 index 00000000..7dce87ee --- /dev/null +++ b/recipes/noto-color-emoji/recipe.toml @@ -0,0 +1,10 @@ +[source] +git = "https://github.com/googlefonts/noto-emoji.git" + +[build] +template = "custom" +script = """ +DEST="${COOKBOOK_STAGE}/ui/fonts/Emoji/Noto" +mkdir -pv "${DEST}" +cp -v "${COOKBOOK_SOURCE}/fonts/NotoColorEmoji.ttf" "${DEST}" +""" From b8de18bc92a17c2e8358a4ea9848fecaff40a3a7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 14 Dec 2022 20:07:48 -0700 Subject: [PATCH 1022/3180] Fix hematite recipe --- recipes/hematite/recipe.sh | 16 ---------------- recipes/hematite/recipe.toml | 23 +++++++++++++++++++++++ 2 files changed, 23 insertions(+), 16 deletions(-) delete mode 100644 recipes/hematite/recipe.sh create mode 100644 recipes/hematite/recipe.toml diff --git a/recipes/hematite/recipe.sh b/recipes/hematite/recipe.sh deleted file mode 100644 index 14014f56..00000000 --- a/recipes/hematite/recipe.sh +++ /dev/null @@ -1,16 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/hematite.git -GIT_UPSTREAM=https://github.com/PistonDevelopers/hematite.git -BUILD_DEPENDS=(llvm mesa zlib) -BRANCH=redox - -function recipe_build { - sysroot="$(realpath ../sysroot)" - cp -p "$ROOT/Xargo.toml" "Xargo.toml" - set -x - xargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ - -- \ - -L "${sysroot}/lib" \ - -C link-args="$("${PKG_CONFIG}" --libs osmesa) -lglapi -lz -lstdc++ -lc -lgcc" - set +x - skip=1 -} diff --git a/recipes/hematite/recipe.toml b/recipes/hematite/recipe.toml new file mode 100644 index 00000000..e7cbb892 --- /dev/null +++ b/recipes/hematite/recipe.toml @@ -0,0 +1,23 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/hematite.git" +branch = "redox" +upstream = "https://github.com/PistonDevelopers/hematite.git" + +[build] +template = "custom" +dependencies = [ + "llvm", + "mesa", + "zlib" +] +script = """ +cargo rustc \ + --target "$TARGET" \ + --release \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + -- \ + -L "${COOKBOK_SYSROOT}/lib" \ + -C link-args="-Wl,-Bstatic $("${TARGET}-pkg-config" --libs osmesa) -lz -lstdc++ -lc -lgcc" +mkdir -pv "${COOKBOOK_STAGE}/bin" +cp -v "target/${TARGET}/release/hematite" "${COOKBOOK_STAGE}/bin/hematite" +""" From 13c50b169ab657fccffbe40d0dbb6917dec7aa73 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 15 Dec 2022 11:53:44 -0700 Subject: [PATCH 1023/3180] Update mesa version --- recipes/mesa/recipe.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/mesa/recipe.toml b/recipes/mesa/recipe.toml index 7b09baf4..3b01cd5e 100644 --- a/recipes/mesa/recipe.toml +++ b/recipes/mesa/recipe.toml @@ -1,8 +1,7 @@ -#TODO: TEST [source] git = "https://gitlab.redox-os.org/redox-os/mesa.git" upstream = "https://gitlab.freedesktop.org/mesa/mesa" -branch = "redox" +branch = "redox-22.3.1" [build] template = "custom" @@ -48,9 +47,10 @@ meson "${COOKBOOK_SOURCE}" . \ --buildtype release \ --strip \ -Ddefault_library=static \ + -Ddri-drivers= \ -Dglx=disabled \ -Dllvm=enabled \ - -Dosmesa=gallium \ + -Dosmesa=true \ -Dplatforms= \ -Dshader-cache=disabled \ -Dshared-llvm=disabled \ From 915e52971c49fc4e3d4b937d835d7c51ab47925a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 15 Dec 2022 11:55:34 -0700 Subject: [PATCH 1024/3180] Update glutin --- recipes/glutin/recipe.toml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/recipes/glutin/recipe.toml b/recipes/glutin/recipe.toml index 18fed532..ac85fe0f 100644 --- a/recipes/glutin/recipe.toml +++ b/recipes/glutin/recipe.toml @@ -1,6 +1,6 @@ [source] git = "https://gitlab.redox-os.org/redox-os/glutin.git" -branch = "redox-0.29" +branch = "redox-0.30" upstream = "https://github.com/rust-windowing/glutin.git" [build] @@ -12,8 +12,6 @@ dependencies = [ ] script = """ EXAMPLES=( - multiwindow - transparent window ) for example in "${EXAMPLES[@]}" From 79a34ff948489c53da0d670b14cde956268a0699 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 16 Dec 2022 10:28:52 -0700 Subject: [PATCH 1025/3180] Update pathfinder recipe --- recipes/pathfinder/recipe.sh | 25 ------------------------- recipes/pathfinder/recipe.toml | 23 +++++++++++++++++++++++ 2 files changed, 23 insertions(+), 25 deletions(-) delete mode 100644 recipes/pathfinder/recipe.sh create mode 100644 recipes/pathfinder/recipe.toml diff --git a/recipes/pathfinder/recipe.sh b/recipes/pathfinder/recipe.sh deleted file mode 100644 index 37f8eb44..00000000 --- a/recipes/pathfinder/recipe.sh +++ /dev/null @@ -1,25 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/pathfinder.git -BRANCH=redox -GIT_UPSTREAM=https://github.com/servo/pathfinder.git -BUILD_DEPENDS=(llvm mesa zlib) -BRANCH=redox -CARGOFLAGS="--manifest-path examples/canvas_glutin_minimal/Cargo.toml" - -function recipe_build { - sysroot="$(realpath ../sysroot)" - cp -p "$ROOT/Xargo.toml" "Xargo.toml" - set -x - xargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ - -- \ - -L "${sysroot}/lib" \ - -C link-args="$("${PKG_CONFIG}" --libs osmesa) -lglapi -lz -lstdc++ -lc -lgcc" - set +x - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - mkdir -pv "$dest/bin" - cp -v "target/${TARGET}/release/canvas_glutin_minimal" "$dest/bin/pathfinder" - skip=1 -} diff --git a/recipes/pathfinder/recipe.toml b/recipes/pathfinder/recipe.toml new file mode 100644 index 00000000..358b0a2a --- /dev/null +++ b/recipes/pathfinder/recipe.toml @@ -0,0 +1,23 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/pathfinder.git" +branch = "redox" +upstream = "https://github.com/servo/pathfinder.git" + +[build] +template = "custom" +dependencies = [ + "llvm", + "mesa", + "zlib", +] +script = """ +cargo rustc \ + --target "$TARGET" \ + --release \ + --manifest-path "${COOKBOOK_SOURCE}/examples/canvas_glutin_minimal/Cargo.toml" \ + -- \ + -L "${COOK_SYSROOT}/lib" \ + -C link-args="-Wl,-Bstatic $("${TARGET}-pkg-config" --libs osmesa) -lz -lstdc++ -lc -lgcc" +mkdir -pv "${COOKBOOK_STAGE}/bin" +cp -v "target/${TARGET}/release/canvas_glutin_minimal" "${COOKBOOK_STAGE}/bin/pathfinder" +""" From c4fd2e16d5f7eca40c38f7916abe5619671408a8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 16 Dec 2022 14:38:54 -0700 Subject: [PATCH 1026/3180] Use SNES core by default in retroarch --- recipes/libretro-super/recipe.toml | 24 ++++++++++++++++++++++++ recipes/retroarch/recipe.toml | 9 +++++++++ 2 files changed, 33 insertions(+) create mode 100644 recipes/libretro-super/recipe.toml diff --git a/recipes/libretro-super/recipe.toml b/recipes/libretro-super/recipe.toml new file mode 100644 index 00000000..b75ec627 --- /dev/null +++ b/recipes/libretro-super/recipe.toml @@ -0,0 +1,24 @@ +[source] +git = "https://github.com/jackpot51/libretro-super.git" + +[build] +template = "custom" +dependencies = [ + "zlib", +] +script = """ +CORES=( + snes9x +) + +pushd "${COOKBOOK_SOURCE}" +./libretro-fetch.sh "${CORES[@]}" +popd + +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ + +export platform=Redox +export STATIC_LINKING=1 +./libretro-build.sh "${CORES[@]}" +./libretro-install.sh "${COOKBOOK_STAGE}/share/libretro" +""" diff --git a/recipes/retroarch/recipe.toml b/recipes/retroarch/recipe.toml index e878cb24..25a38366 100644 --- a/recipes/retroarch/recipe.toml +++ b/recipes/retroarch/recipe.toml @@ -5,6 +5,7 @@ git = "https://github.com/jackpot51/retroarch.git" template = "custom" dependencies = [ "liborbital", + "libretro-super", "llvm", "mesa", "openssl", @@ -18,17 +19,25 @@ popd rsync -av --delete "${COOKBOOK_SOURCE}/" ./ +# For now, we will statically link with the snes9x libretro +mkdir -pv "${COOKBOOK_SYSROOT}/lib" +cp -v "${COOKBOOK_SYSROOT}/share/libretro/snes9x_libretro.a" "${COOKBOOK_SYSROOT}/lib/libretro.a" + COOKBOOK_CONFIGURE_FLAGS=( --host="${TARGET}" --prefix="/" --disable-builtinzlib # conflicts with zlib --disable-discord # does not link + --disable-dylib + --disable-dynamic --disable-netplaydiscovery # missing ifaddrs.h --disable-thread_storage # crash in pthread_setspecific called by sthread_tls_set + --disable-threads # prevents hang --enable-opengl --enable-sdl2 --enable-ssl --enable-zlib + --with-libretro="-lretro -lstdc++ -lz" ) cookbook_configure """ From bb9d86a37cfa15b829d52e053a0deafde00715cb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 16 Dec 2022 19:43:15 -0700 Subject: [PATCH 1027/3180] Add libflac --- recipes/libflac/recipe.toml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 recipes/libflac/recipe.toml diff --git a/recipes/libflac/recipe.toml b/recipes/libflac/recipe.toml new file mode 100644 index 00000000..6cfe5c8e --- /dev/null +++ b/recipes/libflac/recipe.toml @@ -0,0 +1,8 @@ +[source] +tar = "https://github.com/xiph/flac/releases/download/1.4.2/flac-1.4.2.tar.xz" + +[build] +template = "configure" +dependencies = [ + "libogg", +] From 87fe6331686c8cd028b49d870ef38bb98456b0e8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 16 Dec 2022 20:15:45 -0700 Subject: [PATCH 1028/3180] Add mednafen --- recipes/mednafen/recipe.toml | 24 ++++++++++++++++++++++++ recipes/mednafen/redox.patch | 26 ++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 recipes/mednafen/recipe.toml create mode 100644 recipes/mednafen/redox.patch diff --git a/recipes/mednafen/recipe.toml b/recipes/mednafen/recipe.toml new file mode 100644 index 00000000..c4cf7850 --- /dev/null +++ b/recipes/mednafen/recipe.toml @@ -0,0 +1,24 @@ +[source] +tar = "https://mednafen.github.io/releases/files/mednafen-1.29.0.tar.xz" +patches = [ + "redox.patch", +] + +[build] +template = "custom" +dependencies = [ + #TODO: libflac + "libiconv", + "liborbital", + "llvm", + "mesa", + "sdl2", + "zlib", +] +script = """ +export SDL_LIBS="-lSDL2 -lorbital $("${TARGET}-pkg-config" --libs osmesa) -lstdc++" +COOKBOOK_CONFIGURE_FLAGS+=( + --without-libflac +) +cookbook_configure +""" diff --git a/recipes/mednafen/redox.patch b/recipes/mednafen/redox.patch new file mode 100644 index 00000000..2d323d76 --- /dev/null +++ b/recipes/mednafen/redox.patch @@ -0,0 +1,26 @@ +diff -ruwN source-old/include/mednafen/sound/SwiftResampler.cpp source/include/mednafen/sound/SwiftResampler.cpp +--- source-old/include/mednafen/sound/SwiftResampler.cpp 2022-01-18 14:16:23.000000000 -0700 ++++ source/include/mednafen/sound/SwiftResampler.cpp 2022-12-16 20:01:02.263159230 -0700 +@@ -608,6 +608,9 @@ + + if(hp_tc > 0) + { ++#ifndef M_E ++#define M_E 2.7182818284590452354 ++#endif + double tdm = (pow(2.0 - pow(M_E, -1.0), 1.0 / (hp_tc * output_rate)) - 1.0); + + //printf("%f\n", tdm); +diff -ruwN source-old/src/sound/SwiftResampler.cpp source/src/sound/SwiftResampler.cpp +--- source-old/src/sound/SwiftResampler.cpp 2022-01-18 14:16:23.000000000 -0700 ++++ source/src/sound/SwiftResampler.cpp 2022-12-16 20:01:02.263159230 -0700 +@@ -608,6 +608,9 @@ + + if(hp_tc > 0) + { ++#ifndef M_E ++#define M_E 2.7182818284590452354 ++#endif + double tdm = (pow(2.0 - pow(M_E, -1.0), 1.0 / (hp_tc * output_rate)) - 1.0); + + //printf("%f\n", tdm); From 41271c8d888e79a65e05cfb6e3e0aad6e668eb0d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 17 Dec 2022 07:25:12 -0700 Subject: [PATCH 1029/3180] Fix mednafen patch --- recipes/mednafen/redox.patch | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/recipes/mednafen/redox.patch b/recipes/mednafen/redox.patch index 2d323d76..ea58184b 100644 --- a/recipes/mednafen/redox.patch +++ b/recipes/mednafen/redox.patch @@ -1,16 +1,3 @@ -diff -ruwN source-old/include/mednafen/sound/SwiftResampler.cpp source/include/mednafen/sound/SwiftResampler.cpp ---- source-old/include/mednafen/sound/SwiftResampler.cpp 2022-01-18 14:16:23.000000000 -0700 -+++ source/include/mednafen/sound/SwiftResampler.cpp 2022-12-16 20:01:02.263159230 -0700 -@@ -608,6 +608,9 @@ - - if(hp_tc > 0) - { -+#ifndef M_E -+#define M_E 2.7182818284590452354 -+#endif - double tdm = (pow(2.0 - pow(M_E, -1.0), 1.0 / (hp_tc * output_rate)) - 1.0); - - //printf("%f\n", tdm); diff -ruwN source-old/src/sound/SwiftResampler.cpp source/src/sound/SwiftResampler.cpp --- source-old/src/sound/SwiftResampler.cpp 2022-01-18 14:16:23.000000000 -0700 +++ source/src/sound/SwiftResampler.cpp 2022-12-16 20:01:02.263159230 -0700 From cef58a73034cd4e95610e3498b10c4d44697c531 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 19 Dec 2022 08:44:38 -0700 Subject: [PATCH 1030/3180] Add initial flycast recipe --- recipes/flycast/recipe.toml | 57 +++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 recipes/flycast/recipe.toml diff --git a/recipes/flycast/recipe.toml b/recipes/flycast/recipe.toml new file mode 100644 index 00000000..546301e9 --- /dev/null +++ b/recipes/flycast/recipe.toml @@ -0,0 +1,57 @@ +[source] +git = "https://github.com/jackpot51/flycast.git" + +[build] +template = "custom" +dependencies = [ + "curl", + "libiconv", + "liborbital", + "llvm", + "mesa", + "nghttp2", + "openssl", + "sdl2", + "zlib", +] +script = """ +export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" +export CXXFLAGS="${CXXFLAGS} -D_GLIBCXX_USE_C99_MATH_TR1=1 -I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" +#TODO: don't use this +export SDL_LIBS="-lSDL2 -lorbital $("${TARGET}-pkg-config" --libs osmesa) -lstdc++" +#TODO: don't add curl +export SDL_LIBS="${SDL_LIBS} -lcurl -lnghttp2 -lssl -lcrypto" +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_VERBOSE_MAKEFILE=On + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_BUILD_TYPE=Debug + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DUSE_HOST_LIBZIP=OFF + -DUSE_OPENMP=OFF + -DUSE_VULKAN=OFF + -DZLIB_LIBRARY="-lz" + + # Hacks for cmake errors + -DHAVE___INT8_LIBZIP=False + -DHAVE___INT16_LIBZIP=False + -DHAVE___INT32_LIBZIP=False + -DHAVE___INT64_LIBZIP=False + -DHAVE_FICLONERANGE=False + -DHAVE_NULLABLE=False + + # Hack for Threads + -DCMAKE_THREAD_LIBS_INIT="-lc" + -DCMAKE_HAVE_THREADS_LIBRARY=1 + -DCMAKE_USE_WIN32_THREADS_INIT=0 + -DCMAKE_USE_PTHREADS_INIT=1 + -DTHREADS_PREFER_PTHREAD_FLAG=ON + + "${COOKBOOK_SOURCE}" +) +cookbook_configure +mv "${COOKBOOK_STAGE}/usr/"* "${COOKBOOK_STAGE}" +rmdir "${COOKBOOK_STAGE}/usr" +""" From 751d3af98ea1466bc0b4e9296374add673391bfe Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 19 Dec 2022 09:38:57 -0700 Subject: [PATCH 1031/3180] Set UNIX in flycast recipe --- recipes/flycast/recipe.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/recipes/flycast/recipe.toml b/recipes/flycast/recipe.toml index 546301e9..2a2f650b 100644 --- a/recipes/flycast/recipe.toml +++ b/recipes/flycast/recipe.toml @@ -29,6 +29,8 @@ COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DREDOX=1 + -DUNIX=1 -DUSE_HOST_LIBZIP=OFF -DUSE_OPENMP=OFF -DUSE_VULKAN=OFF From b32e733bb74e096b380f11334fcb986a810310bd Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 19 Dec 2022 10:21:41 -0700 Subject: [PATCH 1032/3180] Make flycast a release build --- recipes/flycast/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/flycast/recipe.toml b/recipes/flycast/recipe.toml index 2a2f650b..14a8b4ad 100644 --- a/recipes/flycast/recipe.toml +++ b/recipes/flycast/recipe.toml @@ -25,7 +25,7 @@ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_VERBOSE_MAKEFILE=On -DCMAKE_CROSSCOMPILING=True - -DCMAKE_BUILD_TYPE=Debug + -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" From 4c576e4f57c4798e85764ea359d8fbb11f3c390f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 19 Dec 2022 13:25:51 -0700 Subject: [PATCH 1033/3180] Build flycast in release mode with debug info --- recipes/flycast/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/flycast/recipe.toml b/recipes/flycast/recipe.toml index 14a8b4ad..cd5a8c08 100644 --- a/recipes/flycast/recipe.toml +++ b/recipes/flycast/recipe.toml @@ -25,7 +25,7 @@ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_VERBOSE_MAKEFILE=On -DCMAKE_CROSSCOMPILING=True - -DCMAKE_BUILD_TYPE=Release + -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" From 36f9511b7fe394676623261ed852c100f20f04b7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 12 Jan 2023 07:16:56 -0700 Subject: [PATCH 1034/3180] Add installer-gui recipe --- recipes/installer-gui/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/installer-gui/recipe.toml diff --git a/recipes/installer-gui/recipe.toml b/recipes/installer-gui/recipe.toml new file mode 100644 index 00000000..7c43f12c --- /dev/null +++ b/recipes/installer-gui/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/installer-gui.git" + +[build] +template = "cargo" From 18d1dd3c7890aa00a97be8b882d958c60bbe3d55 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 12 Jan 2023 21:17:54 -0700 Subject: [PATCH 1035/3180] Add libstdc++ to osmesa pkg-config libs --- recipes/mesa/recipe.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/mesa/recipe.toml b/recipes/mesa/recipe.toml index 3b01cd5e..18688f35 100644 --- a/recipes/mesa/recipe.toml +++ b/recipes/mesa/recipe.toml @@ -57,7 +57,8 @@ meson "${COOKBOOK_SOURCE}" . \ -Dshared-glapi=disabled ninja -v DESTDIR="${COOKBOOK_STAGE}" ninja install + # Hack to add LLVM libs #TODO: only add necessary LLVM libs, not all of them -sed -i "s/ -lOSMesa / -lOSMesa $("${TARGET}-llvm-config" --libs) /" "${COOKBOOK_STAGE}/lib/pkgconfig/osmesa.pc" +sed -i "s/ -lOSMesa / -lOSMesa $("${TARGET}-llvm-config" --libs) -lstdc++ /" "${COOKBOOK_STAGE}/lib/pkgconfig/osmesa.pc" """ From 1c296913903b90daa52b8d0ec90e60ff504bc470 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 12 Jan 2023 21:18:15 -0700 Subject: [PATCH 1036/3180] Require osmesa in sdl2 pkg-config --- recipes/sdl2/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/sdl2/recipe.toml b/recipes/sdl2/recipe.toml index aa74d926..c1720145 100644 --- a/recipes/sdl2/recipe.toml +++ b/recipes/sdl2/recipe.toml @@ -25,4 +25,7 @@ COOKBOOK_CONFIGURE_FLAGS=( --enable-cdrom ) cookbook_configure + +# Hack to add OSMesa +sed -i "s/Requires:/Requires: osmesa >= 8.0.0/" "${COOKBOOK_STAGE}/lib/pkgconfig/sdl2.pc" """ From 3f29d66abb60e11c3037716cfe16f4333d493c67 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 12 Jan 2023 21:20:12 -0700 Subject: [PATCH 1037/3180] Enable ffplay --- recipes/ffmpeg/recipe.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/recipes/ffmpeg/recipe.sh b/recipes/ffmpeg/recipe.sh index f067b3d5..37072bf3 100644 --- a/recipes/ffmpeg/recipe.sh +++ b/recipes/ffmpeg/recipe.sh @@ -1,7 +1,7 @@ VERSION=4.0 GIT=https://github.com/FFmpeg/FFmpeg BRANCH=release/$VERSION -BUILD_DEPENDS=(zlib) +BUILD_DEPENDS=(liborbital llvm mesa sdl2 zlib) function recipe_version { echo "$VERSION" @@ -9,9 +9,8 @@ function recipe_version { } function recipe_build { - sysroot="$PWD/../sysroot" - export CPPFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib -static" + export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include" + export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib -static" ./configure \ --enable-cross-compile \ --target-os=redox \ @@ -19,6 +18,7 @@ function recipe_build { --cross_prefix=${HOST}- \ --prefix=/ \ --disable-network \ + --enable-sdl2 \ --enable-zlib \ --enable-encoder=png \ --enable-decoder=png From 123413fe447abd3f0e9ffe1d81822554189aab26 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 17 Jan 2023 22:12:45 -0700 Subject: [PATCH 1038/3180] Update ffmpeg --- recipes/ffmpeg/recipe.sh | 38 -------------------------------------- recipes/ffmpeg/recipe.toml | 31 +++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 38 deletions(-) delete mode 100644 recipes/ffmpeg/recipe.sh create mode 100644 recipes/ffmpeg/recipe.toml diff --git a/recipes/ffmpeg/recipe.sh b/recipes/ffmpeg/recipe.sh deleted file mode 100644 index 37072bf3..00000000 --- a/recipes/ffmpeg/recipe.sh +++ /dev/null @@ -1,38 +0,0 @@ -VERSION=4.0 -GIT=https://github.com/FFmpeg/FFmpeg -BRANCH=release/$VERSION -BUILD_DEPENDS=(liborbital llvm mesa sdl2 zlib) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include" - export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib -static" - ./configure \ - --enable-cross-compile \ - --target-os=redox \ - --arch=${ARCH} \ - --cross_prefix=${HOST}- \ - --prefix=/ \ - --disable-network \ - --enable-sdl2 \ - --enable-zlib \ - --enable-encoder=png \ - --enable-decoder=png - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - skip=1 -} diff --git a/recipes/ffmpeg/recipe.toml b/recipes/ffmpeg/recipe.toml new file mode 100644 index 00000000..49a6e873 --- /dev/null +++ b/recipes/ffmpeg/recipe.toml @@ -0,0 +1,31 @@ +[source] +tar = "https://ffmpeg.org/releases/ffmpeg-5.1.2.tar.xz" +patches = [ + "ffmpeg.patch" +] + +[build] +template = "custom" +dependencies = [ + "liborbital", + "llvm", + "mesa", + "sdl2", + "zlib", +] +script = """ +ARCH="${TARGET%%-*}" +COOKBOOK_CONFIGURE_FLAGS=( + --enable-cross-compile + --target-os=redox + --arch="${ARCH}" + --cross_prefix="${TARGET}-" + --prefix=/ + --disable-network + --enable-sdl2 + --enable-zlib + --enable-encoder=png + --enable-decoder=png +) +cookbook_configure +""" From e9c125da0b5531648b55ba38c5f13a9600e8afdf Mon Sep 17 00:00:00 2001 From: Ron Williams Date: Wed, 18 Jan 2023 14:40:03 -0800 Subject: [PATCH 1039/3180] update sopwith path --- recipes/sopwith/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/sopwith/recipe.sh b/recipes/sopwith/recipe.sh index d4603324..170748c1 100644 --- a/recipes/sopwith/recipe.sh +++ b/recipes/sopwith/recipe.sh @@ -1,5 +1,5 @@ VERSION=1.8.4 -TAR=https://sourceforge.net/projects/sdl-sopwith/files/sdl_sopwith/$VERSION/sopwith-$VERSION.tar.gz +TAR=https://sourceforge.net/projects/sdl-sopwith/files/sdl_sopwith/$VERSION/sopwith-$VERSION.tar.gz/download BUILD_DEPENDS=(sdl liborbital libiconv) function recipe_version { From 6f332db93ceb10dd5202d460e27286ce24bcadc0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 20 Jan 2023 09:39:03 -0700 Subject: [PATCH 1040/3180] Use git for sdl --- recipes/sdl/recipe.toml | 6 +- recipes/sdl/redox.patch | 1124 --------------------------------------- 2 files changed, 1 insertion(+), 1129 deletions(-) delete mode 100644 recipes/sdl/redox.patch diff --git a/recipes/sdl/recipe.toml b/recipes/sdl/recipe.toml index cd55f393..f7cd34fe 100644 --- a/recipes/sdl/recipe.toml +++ b/recipes/sdl/recipe.toml @@ -1,9 +1,5 @@ [source] -tar = "https://www.libsdl.org/release/SDL-1.2.15.tar.gz" -patches = [ - "redox.patch" -] -script = "./autogen.sh" +git = "https://gitlab.redox-os.org/redox-os/sdl1.2.git" [build] template = "custom" diff --git a/recipes/sdl/redox.patch b/recipes/sdl/redox.patch deleted file mode 100644 index f22b17a2..00000000 --- a/recipes/sdl/redox.patch +++ /dev/null @@ -1,1124 +0,0 @@ -diff -ruwN source/build-scripts/config.sub source-new/build-scripts/config.sub ---- source/build-scripts/config.sub 2012-01-18 23:30:05.000000000 -0700 -+++ source-new/build-scripts/config.sub 2019-08-10 20:55:13.662786449 -0600 -@@ -1276,7 +1276,7 @@ - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ -- | -kopensolaris* \ -+ | -kopensolaris* | -redox* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ -diff -ruwN source/configure.in source-new/configure.in ---- source/configure.in 2012-01-18 23:30:05.000000000 -0700 -+++ source-new/configure.in 2019-08-10 20:55:13.662786449 -0600 -@@ -685,6 +685,18 @@ - fi - } - -+dnl Set up the Redox Audio driver -+CheckRedoxAudio() -+{ -+ AC_ARG_ENABLE(redoxaudio, -+AC_HELP_STRING([--enable-redoxaudio], [support the redox audio driver [[default=yes]]]), -+ , enable_redoxaudio=yes) -+ if test x$enable_audio = xyes -a x$enable_redoxaudio = xyes; then -+ AC_DEFINE(SDL_AUDIO_DRIVER_REDOX) -+ SOURCES="$SOURCES $srcdir/src/audio/redox/*.c" -+ fi -+} -+ - dnl See if we can use x86 assembly blitters - # NASM is available from: http://nasm.sourceforge.net - CheckNASM() -@@ -1646,6 +1658,20 @@ - fi - } - -+dnl Set up the Orbital video driver. -+CheckOrbitalVideo() -+{ -+ AC_ARG_ENABLE(video-orbital, -+AC_HELP_STRING([--enable-video-orbital], [use orbital video driver [[default=yes]]]), -+ , enable_video_orbital=yes) -+ if test x$enable_video_orbital = xyes; then -+ AC_DEFINE(SDL_VIDEO_DRIVER_ORBITAL) -+ SOURCES="$SOURCES $srcdir/src/video/orbital/*.c" -+ SDL_LIBS="$SDL_LIBS -lorbital" -+ have_video=yes -+ fi -+} -+ - dnl Check to see if OpenGL support is desired - AC_ARG_ENABLE(video-opengl, - AC_HELP_STRING([--enable-video-opengl], [include OpenGL context creation [[default=yes]]]), -@@ -1859,6 +1885,10 @@ - AC_HELP_STRING([--enable-pthread-sem], [use pthread semaphores [[default=yes]]]), - , enable_pthread_sem=yes) - case "$host" in -+ *-*-redox*) -+ pthread_cflags="-D_REENTRANT" -+ pthread_lib="-lpthread" -+ ;; - *-*-linux*|*-*-uclinux*) - pthread_cflags="-D_REENTRANT" - pthread_lib="-lpthread" -@@ -2325,10 +2355,11 @@ - have_timers=yes - fi - ;; -- *-*-linux*|*-*-uclinux*|*-*-gnu*|*-*-k*bsd*-gnu|*-*-bsdi*|*-*-freebsd*|*-*-dragonfly*|*-*-netbsd*|*-*-openbsd*|*-*-sysv5*|*-*-solaris*|*-*-hpux*|*-*-irix*|*-*-aix*|*-*-osf*) -+ *-*-linux*|*-*-uclinux*|*-*-redox*|*-*-gnu*|*-*-k*bsd*-gnu|*-*-bsdi*|*-*-freebsd*|*-*-dragonfly*|*-*-netbsd*|*-*-openbsd*|*-*-sysv5*|*-*-solaris*|*-*-hpux*|*-*-irix*|*-*-aix*|*-*-osf*) - case "$host" in - *-*-linux*) ARCH=linux ;; - *-*-uclinux*) ARCH=linux ;; -+ *-*-redox*) ARCH=redox ;; - *-*-kfreebsd*-gnu) ARCH=kfreebsd-gnu ;; - *-*-knetbsd*-gnu) ARCH=knetbsd-gnu ;; - *-*-kopenbsd*-gnu) ARCH=kopenbsd-gnu ;; -@@ -2347,8 +2378,10 @@ - esac - CheckVisibilityHidden - CheckDummyVideo -+ CheckOrbitalVideo - CheckDiskAudio - CheckDummyAudio -+ CheckRedoxAudio - CheckDLOPEN - CheckNASM - CheckAltivec -@@ -2445,6 +2478,11 @@ - SOURCES="$SOURCES $srcdir/src/cdrom/osf/*.c" - have_cdrom=yes - ;; -+ redox) -+ AC_DEFINE(SDL_CDROM_DUMMY) -+ SOURCES="$SOURCES $srcdir/src/cdrom/dummy/*.c" -+ have_cdrom=yes -+ ;; - esac - fi - # Set up files for the thread library -diff -ruwN source/include/SDL_config.h.in source-new/include/SDL_config.h.in ---- source/include/SDL_config.h.in 2012-01-18 23:30:05.000000000 -0700 -+++ source-new/include/SDL_config.h.in 2019-08-10 20:55:13.662786449 -0600 -@@ -182,6 +182,7 @@ - #undef SDL_AUDIO_DRIVER_OSS_SOUNDCARD_H - #undef SDL_AUDIO_DRIVER_PAUD - #undef SDL_AUDIO_DRIVER_QNXNTO -+#undef SDL_AUDIO_DRIVER_REDOX - #undef SDL_AUDIO_DRIVER_SNDMGR - #undef SDL_AUDIO_DRIVER_SUNAUDIO - #undef SDL_AUDIO_DRIVER_WAVEOUT -@@ -268,6 +269,7 @@ - #undef SDL_VIDEO_DRIVER_GGI - #undef SDL_VIDEO_DRIVER_IPOD - #undef SDL_VIDEO_DRIVER_NANOX -+#undef SDL_VIDEO_DRIVER_ORBITAL - #undef SDL_VIDEO_DRIVER_OS2FS - #undef SDL_VIDEO_DRIVER_PHOTON - #undef SDL_VIDEO_DRIVER_PICOGUI -diff -ruwN source/src/audio/redox/SDL_redoxaudio.c source-new/src/audio/redox/SDL_redoxaudio.c ---- source/src/audio/redox/SDL_redoxaudio.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/audio/redox/SDL_redoxaudio.c 2019-08-10 20:55:13.662786449 -0600 -@@ -0,0 +1,169 @@ -+/* -+ SDL - Simple DirectMedia Layer -+ Copyright (C) 1997-2012 Sam Lantinga -+ -+ This library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ This library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with this library; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ -+ Sam Lantinga -+ slouken@libsdl.org -+ -+ This file written by Ryan C. Gordon (icculus@icculus.org) -+*/ -+#include "SDL_config.h" -+ -+/* Output raw audio data to a file. */ -+ -+#include -+#include -+#include -+ -+#include "SDL_timer.h" -+#include "SDL_audio.h" -+#include "../SDL_audiomem.h" -+#include "../SDL_audio_c.h" -+#include "../SDL_audiodev_c.h" -+#include "SDL_redoxaudio.h" -+ -+/* The tag name used by REDOX audio */ -+#define REDOXAUD_DRIVER_NAME "redox" -+ -+/* Audio driver functions */ -+static int REDOXAUD_OpenAudio(_THIS, SDL_AudioSpec *spec); -+static void REDOXAUD_WaitAudio(_THIS); -+static void REDOXAUD_PlayAudio(_THIS); -+static Uint8 *REDOXAUD_GetAudioBuf(_THIS); -+static void REDOXAUD_CloseAudio(_THIS); -+ -+/* Audio driver bootstrap functions */ -+static int REDOXAUD_Available(void) -+{ -+ return(1); -+} -+ -+static void REDOXAUD_DeleteDevice(SDL_AudioDevice *device) -+{ -+ SDL_free(device->hidden); -+ SDL_free(device); -+} -+ -+static SDL_AudioDevice *REDOXAUD_CreateDevice(int devindex) -+{ -+ SDL_AudioDevice *this; -+ const char *envr; -+ -+ /* Initialize all variables that we clean on shutdown */ -+ this = (SDL_AudioDevice *)SDL_malloc(sizeof(SDL_AudioDevice)); -+ if ( this ) { -+ SDL_memset(this, 0, (sizeof *this)); -+ this->hidden = (struct SDL_PrivateAudioData *) -+ SDL_malloc((sizeof *this->hidden)); -+ } -+ if ( (this == NULL) || (this->hidden == NULL) ) { -+ SDL_OutOfMemory(); -+ if ( this ) { -+ SDL_free(this); -+ } -+ return(0); -+ } -+ SDL_memset(this->hidden, 0, (sizeof *this->hidden)); -+ -+ this->hidden->output = -1; -+ -+ /* Set the function pointers */ -+ this->OpenAudio = REDOXAUD_OpenAudio; -+ this->WaitAudio = REDOXAUD_WaitAudio; -+ this->PlayAudio = REDOXAUD_PlayAudio; -+ this->GetAudioBuf = REDOXAUD_GetAudioBuf; -+ this->CloseAudio = REDOXAUD_CloseAudio; -+ -+ this->free = REDOXAUD_DeleteDevice; -+ -+ return this; -+} -+ -+AudioBootStrap REDOXAUD_bootstrap = { -+ REDOXAUD_DRIVER_NAME, "Redox audio", -+ REDOXAUD_Available, REDOXAUD_CreateDevice -+}; -+ -+/* This function waits until it is possible to write a full sound buffer */ -+static void REDOXAUD_WaitAudio(_THIS) -+{} -+ -+static void REDOXAUD_PlayAudio(_THIS) -+{ -+ int written; -+ -+ /* Write the audio data */ -+ written = write(this->hidden->output, -+ this->hidden->mixbuf, -+ this->hidden->mixlen); -+ -+ /* If we couldn't write, assume fatal error for now */ -+ if ( (Uint32)written != this->hidden->mixlen ) { -+ this->enabled = 0; -+ } -+#ifdef DEBUG_AUDIO -+ fprintf(stderr, "Wrote %d bytes of audio data\n", written); -+#endif -+} -+ -+static Uint8 *REDOXAUD_GetAudioBuf(_THIS) -+{ -+ return(this->hidden->mixbuf); -+} -+ -+static void REDOXAUD_CloseAudio(_THIS) -+{ -+ if ( this->hidden->mixbuf != NULL ) { -+ SDL_FreeAudioMem(this->hidden->mixbuf); -+ this->hidden->mixbuf = NULL; -+ } -+ if ( this->hidden->output >= 0 ) { -+ close(this->hidden->output); -+ this->hidden->output = -1; -+ } -+} -+ -+static int REDOXAUD_OpenAudio(_THIS, SDL_AudioSpec *spec) -+{ -+ fprintf(stderr, "WARNING: You are using the SDL redox audio driver!\n"); -+ -+ /* Open the audio device */ -+ this->hidden->output = open("audio:", O_WRONLY); -+ if ( this->hidden->output < 0 ) { -+ perror("failed to open audio:"); -+ return(-1); -+ } -+ -+ spec->freq = 44100; -+ spec->format = AUDIO_S16; -+ spec->channels = 2; -+ SDL_CalculateAudioSpec(spec); -+ -+ /* Allocate mixing buffer */ -+ this->hidden->mixlen = spec->size; -+ this->hidden->mixbuf = (Uint8 *) SDL_AllocAudioMem(this->hidden->mixlen); -+ if ( this->hidden->mixbuf == NULL ) { -+ perror("failed to allocate audio memory"); -+ return(-1); -+ } -+ SDL_memset(this->hidden->mixbuf, spec->silence, spec->size); -+ -+ fprintf(stderr, "openaudio success\n"); -+ -+ /* We're ready to rock and roll. :-) */ -+ return(0); -+} -diff -ruwN source/src/audio/redox/SDL_redoxaudio.h source-new/src/audio/redox/SDL_redoxaudio.h ---- source/src/audio/redox/SDL_redoxaudio.h 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/audio/redox/SDL_redoxaudio.h 2019-08-10 20:55:13.662786449 -0600 -@@ -0,0 +1,40 @@ -+/* -+ SDL - Simple DirectMedia Layer -+ Copyright (C) 1997-2012 Sam Lantinga -+ -+ This library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ This library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with this library; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ -+ Sam Lantinga -+ slouken@libsdl.org -+*/ -+#include "SDL_config.h" -+ -+#ifndef _SDL_redoxaudio_h -+#define _SDL_redoxaudio_h -+ -+#include "SDL_rwops.h" -+#include "../SDL_sysaudio.h" -+ -+/* Hidden "this" pointer for the video functions */ -+#define _THIS SDL_AudioDevice *this -+ -+struct SDL_PrivateAudioData { -+ /* The file descriptor for the audio device */ -+ int output; -+ Uint8 *mixbuf; -+ Uint32 mixlen; -+}; -+ -+#endif /* _SDL_redoxaudio_h */ -diff -ruwN source/src/audio/SDL_audio.c source-new/src/audio/SDL_audio.c ---- source/src/audio/SDL_audio.c 2012-01-18 23:30:06.000000000 -0700 -+++ source-new/src/audio/SDL_audio.c 2019-08-10 20:55:13.662786449 -0600 -@@ -36,6 +36,9 @@ - - /* Available audio drivers */ - static AudioBootStrap *bootstrap[] = { -+#if SDL_AUDIO_DRIVER_REDOX -+ &REDOXAUD_bootstrap, -+#endif - #if SDL_AUDIO_DRIVER_PULSE - &PULSE_bootstrap, - #endif -diff -ruwN source/src/audio/SDL_sysaudio.h source-new/src/audio/SDL_sysaudio.h ---- source/src/audio/SDL_sysaudio.h 2012-01-18 23:30:06.000000000 -0700 -+++ source-new/src/audio/SDL_sysaudio.h 2019-08-10 20:55:13.666786472 -0600 -@@ -102,6 +102,9 @@ - SDL_AudioDevice *(*create)(int devindex); - } AudioBootStrap; - -+#if SDL_AUDIO_DRIVER_REDOX -+extern AudioBootStrap REDOXAUD_bootstrap; -+#endif - #if SDL_AUDIO_DRIVER_BSD - extern AudioBootStrap BSD_AUDIO_bootstrap; - #endif -diff -ruwN source/src/thread/pthread/SDL_systhread.c source-new/src/thread/pthread/SDL_systhread.c ---- source/src/thread/pthread/SDL_systhread.c 2012-01-18 23:30:06.000000000 -0700 -+++ source-new/src/thread/pthread/SDL_systhread.c 2019-08-10 20:55:13.666786472 -0600 -@@ -86,7 +86,11 @@ - for ( i=0; sig_list[i]; ++i ) { - sigaddset(&mask, sig_list[i]); - } -+ #if defined(__redox__) -+ sigprocmask(SIG_BLOCK, &mask, 0); -+ #else - pthread_sigmask(SIG_BLOCK, &mask, 0); -+ #endif - - #ifdef PTHREAD_CANCEL_ASYNCHRONOUS - /* Allow ourselves to be asynchronously cancelled */ -diff -ruwN source/src/video/orbital/SDL_orbitalevents.c source-new/src/video/orbital/SDL_orbitalevents.c ---- source/src/video/orbital/SDL_orbitalevents.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalevents.c 2019-08-12 14:51:38.427129083 -0600 -@@ -0,0 +1,240 @@ -+/* -+ SDL - Simple DirectMedia Layer -+ Copyright (C) 1997-2012 Sam Lantinga -+ -+ This library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ This library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with this library; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ -+ Sam Lantinga -+ slouken@libsdl.org -+*/ -+#include "SDL_config.h" -+ -+#include "SDL.h" -+#include "../../events/SDL_sysevents.h" -+#include "../../events/SDL_events_c.h" -+#include "../SDL_cursor_c.h" -+ -+#include -+#include "SDL_orbitalvideo.h" -+#include "SDL_orbitalevents_c.h" -+ -+#include -+ -+static SDLKey keymap[128]; -+ -+/* Static variables so only changes are reported */ -+static bool last_button_left = false; -+static bool last_button_middle = false; -+static bool last_button_right = false; -+static int last_x = 0; -+static int last_y = 0; -+ -+void ORBITAL_CheckMouseMode(_THIS) -+{ -+ /* If the mouse is hidden and input is grabbed, we use relative mode */ -+ bool mouse_relative = -+ !(SDL_cursorstate & CURSOR_VISIBLE) && -+ (this->input_grab != SDL_GRAB_OFF); -+ // printf("ORBITAL_CheckMouseMode = %d\n", mouse_relative); -+ if (mouse_relative != this->hidden->mouse_relative) { -+ this->hidden->mouse_relative = mouse_relative; -+ if (this->hidden->window) { -+ orb_window_set_mouse_relative(this->hidden->window, mouse_relative); -+ } -+ } -+} -+ -+SDL_GrabMode ORBITAL_GrabInput(_THIS, SDL_GrabMode mode) { -+ bool mouse_grab = mode != SDL_GRAB_OFF; -+ // printf("ORBITAL_GrabInput(%d) = %d\n", mode, mouse_grab); -+ if (mouse_grab != this->hidden->mouse_grab) { -+ this->hidden->mouse_grab = mouse_grab; -+ if (this->hidden->window) { -+ orb_window_set_mouse_grab(this->hidden->window, mouse_grab); -+ } -+ } -+ return (mode); -+} -+ -+void ORBITAL_PumpEvents(_THIS) -+{ -+ SDL_keysym keysym; -+ -+ if (!this->hidden->window) { -+ return; -+ } -+ -+ void* event_iter = orb_window_events(this->hidden->window); -+ OrbEventOption oeo = orb_events_next(event_iter); -+ while (oeo.tag != OrbEventOption_None) { -+ switch (oeo.tag) { -+ case OrbEventOption_Key: -+ keysym.unicode = oeo.key.character; -+ keysym.scancode = oeo.key.scancode; -+ keysym.sym = keymap[oeo.key.scancode]; -+ keysym.mod = KMOD_NONE; -+ -+ SDL_PrivateKeyboard(oeo.key.pressed ? SDL_PRESSED : SDL_RELEASED, &keysym); -+ break; -+ case OrbEventOption_Mouse: -+ if (this->hidden->mouse_relative) { -+ SDL_PrivateMouseMotion(0, 1, oeo.mouse.x - last_x, oeo.mouse.y - last_y); -+ } else { -+ SDL_PrivateMouseMotion(0, 0, oeo.mouse.x, oeo.mouse.y); -+ } -+ -+ last_x = oeo.mouse.x; -+ last_y = oeo.mouse.y; -+ break; -+ case OrbEventOption_MouseRelative: -+ SDL_PrivateMouseMotion(0, 1, oeo.mouse_relative.dx, oeo.mouse_relative.dy); -+ break; -+ case OrbEventOption_Button: -+ if (oeo.button.left ^ last_button_left) -+ SDL_PrivateMouseButton(oeo.button.left ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_LEFT, 0, 0); -+ if (oeo.button.middle ^ last_button_middle) -+ SDL_PrivateMouseButton(oeo.button.middle ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_MIDDLE, 0, 0); -+ if (oeo.button.right ^ last_button_right) -+ SDL_PrivateMouseButton(oeo.button.right ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_RIGHT, 0, 0); -+ -+ last_button_left = oeo.button.left; -+ last_button_middle = oeo.button.middle; -+ last_button_right = oeo.button.right; -+ break; -+ case OrbEventOption_Scroll: -+ if (oeo.scroll.y > 0) { -+ SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_WHEELUP, 0, 0); -+ SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_WHEELUP, 0, 0); -+ } else if (oeo.scroll.y < 0) { -+ SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_WHEELDOWN, 0, 0); -+ SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_WHEELDOWN, 0, 0); -+ } -+ break; -+ case OrbEventOption_Quit: -+ SDL_PrivateQuit(); -+ break; -+ case OrbEventOption_Focus: -+ SDL_PrivateAppActive(oeo.focus.focused, SDL_APPMOUSEFOCUS); -+ break; -+ case OrbEventOption_Move: -+ // oeo.move.x, oeo.move.y -+ break; -+ case OrbEventOption_Resize: -+ SDL_PrivateResize(oeo.resize.width, oeo.resize.height); -+ break; -+ case OrbEventOption_Screen: -+ // oeo.screen.width, oeo.screen.height -+ break; -+ case OrbEventOption_Unknown: -+ // oeo.unknown.code, oeo.unknown.a, oeo.unknown.b -+ break; -+ default: -+ break; -+ } -+ -+ oeo = orb_events_next(event_iter); -+ } -+ -+ orb_events_destroy(event_iter); -+} -+ -+void ORBITAL_InitOSKeymap(_THIS) -+{ -+ int i; -+ for ( i = 0; i < SDL_arraysize(keymap); ++i ) -+ keymap[i] = SDLK_UNKNOWN; -+ -+ keymap[ORB_KEY_ESC] = SDLK_ESCAPE; -+ keymap[ORB_KEY_1] = SDLK_1; -+ keymap[ORB_KEY_2] = SDLK_2; -+ keymap[ORB_KEY_3] = SDLK_3; -+ keymap[ORB_KEY_4] = SDLK_4; -+ keymap[ORB_KEY_5] = SDLK_5; -+ keymap[ORB_KEY_6] = SDLK_6; -+ keymap[ORB_KEY_7] = SDLK_7; -+ keymap[ORB_KEY_8] = SDLK_8; -+ keymap[ORB_KEY_9] = SDLK_9; -+ keymap[ORB_KEY_0] = SDLK_0; -+ keymap[ORB_KEY_MINUS] = SDLK_MINUS; -+ keymap[ORB_KEY_EQUALS] = SDLK_EQUALS; -+ keymap[ORB_KEY_BKSP] = SDLK_BACKSPACE; -+ keymap[ORB_KEY_TAB] = SDLK_TAB; -+ keymap[ORB_KEY_Q] = SDLK_q; -+ keymap[ORB_KEY_W] = SDLK_w; -+ keymap[ORB_KEY_E] = SDLK_e; -+ keymap[ORB_KEY_R] = SDLK_r; -+ keymap[ORB_KEY_T] = SDLK_t; -+ keymap[ORB_KEY_Y] = SDLK_y; -+ keymap[ORB_KEY_U] = SDLK_u; -+ keymap[ORB_KEY_I] = SDLK_i; -+ keymap[ORB_KEY_O] = SDLK_o; -+ keymap[ORB_KEY_P] = SDLK_p; -+ keymap[ORB_KEY_BRACE_OPEN] = SDLK_LEFTBRACKET; -+ keymap[ORB_KEY_BRACE_CLOSE] = SDLK_RIGHTBRACKET; -+ keymap[ORB_KEY_ENTER] = SDLK_RETURN; -+ keymap[ORB_KEY_CTRL] = SDLK_LCTRL; -+ keymap[ORB_KEY_A] = SDLK_a; -+ keymap[ORB_KEY_S] = SDLK_s; -+ keymap[ORB_KEY_D] = SDLK_d; -+ keymap[ORB_KEY_F] = SDLK_f; -+ keymap[ORB_KEY_G] = SDLK_g; -+ keymap[ORB_KEY_H] = SDLK_h; -+ keymap[ORB_KEY_J] = SDLK_j; -+ keymap[ORB_KEY_K] = SDLK_k; -+ keymap[ORB_KEY_L] = SDLK_l; -+ keymap[ORB_KEY_SEMICOLON] = SDLK_SEMICOLON; -+ keymap[ORB_KEY_QUOTE] = SDLK_QUOTE; -+ keymap[ORB_KEY_TICK] = SDLK_BACKQUOTE; -+ keymap[ORB_KEY_LEFT_SHIFT] = SDLK_LSHIFT; -+ keymap[ORB_KEY_RIGHT_SHIFT] = SDLK_RSHIFT; -+ keymap[ORB_KEY_BACKSLASH] = SDLK_BACKSLASH; -+ keymap[ORB_KEY_Z] = SDLK_z; -+ keymap[ORB_KEY_X] = SDLK_x; -+ keymap[ORB_KEY_C] = SDLK_c; -+ keymap[ORB_KEY_V] = SDLK_v; -+ keymap[ORB_KEY_B] = SDLK_b; -+ keymap[ORB_KEY_N] = SDLK_n; -+ keymap[ORB_KEY_M] = SDLK_m; -+ keymap[ORB_KEY_COMMA] = SDLK_COMMA; -+ keymap[ORB_KEY_PERIOD] = SDLK_PERIOD; -+ keymap[ORB_KEY_SLASH] = SDLK_SLASH; -+ keymap[ORB_KEY_ALT] = SDLK_LALT; -+ keymap[ORB_KEY_SPACE] = SDLK_SPACE; -+ keymap[ORB_KEY_CAPS] = SDLK_CAPSLOCK; -+ keymap[ORB_KEY_F1] = SDLK_F1; -+ keymap[ORB_KEY_F2] = SDLK_F2; -+ keymap[ORB_KEY_F3] = SDLK_F3; -+ keymap[ORB_KEY_F4] = SDLK_F4; -+ keymap[ORB_KEY_F5] = SDLK_F5; -+ keymap[ORB_KEY_F6] = SDLK_F6; -+ keymap[ORB_KEY_F7] = SDLK_F7; -+ keymap[ORB_KEY_F8] = SDLK_F8; -+ keymap[ORB_KEY_F9] = SDLK_F9; -+ keymap[ORB_KEY_F10] = SDLK_F10; -+ keymap[ORB_KEY_F11] = SDLK_F11; -+ keymap[ORB_KEY_F12] = SDLK_F12; -+ keymap[ORB_KEY_HOME] = SDLK_HOME; -+ keymap[ORB_KEY_UP] = SDLK_UP; -+ keymap[ORB_KEY_PGUP] = SDLK_PAGEUP; -+ keymap[ORB_KEY_LEFT] = SDLK_LEFT; -+ keymap[ORB_KEY_RIGHT] = SDLK_RIGHT; -+ keymap[ORB_KEY_END] = SDLK_END; -+ keymap[ORB_KEY_DOWN] = SDLK_DOWN; -+ keymap[ORB_KEY_PGDN] = SDLK_PAGEDOWN; -+ keymap[ORB_KEY_INSERT] = SDLK_INSERT; -+ keymap[ORB_KEY_DEL] = SDLK_DELETE; -+} -+ -+/* end of SDL_orbitalevents.c ... */ -diff -ruwN source/src/video/orbital/SDL_orbitalevents_c.h source-new/src/video/orbital/SDL_orbitalevents_c.h ---- source/src/video/orbital/SDL_orbitalevents_c.h 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalevents_c.h 2019-08-12 13:21:41.975750603 -0600 -@@ -0,0 +1,32 @@ -+/* -+ SDL - Simple DirectMedia Layer -+ Copyright (C) 1997-2012 Sam Lantinga -+ -+ This library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ This library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with this library; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ -+ Sam Lantinga -+ slouken@libsdl.org -+*/ -+#include "SDL_config.h" -+ -+#include "SDL_orbitalvideo.h" -+ -+/* Variables and functions exported by SDL_sysevents.c to other parts -+ of the native video subsystem (SDL_sysvideo.c) -+*/ -+extern void ORBITAL_InitOSKeymap(_THIS); -+extern void ORBITAL_PumpEvents(_THIS); -+ -+/* end of SDL_orbitalevents_c.h ... */ -diff -ruwN source/src/video/orbital/SDL_orbitalmouse.c source-new/src/video/orbital/SDL_orbitalmouse.c ---- source/src/video/orbital/SDL_orbitalmouse.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalmouse.c 2019-08-12 14:51:48.555193061 -0600 -@@ -0,0 +1,64 @@ -+/* -+ SDL - Simple DirectMedia Layer -+ Copyright (C) 1997-2012 Sam Lantinga -+ -+ This library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ This library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with this library; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ -+ Sam Lantinga -+ slouken@libsdl.org -+*/ -+#include "SDL_config.h" -+ -+#include "SDL_mouse.h" -+#include "../../events/SDL_events_c.h" -+ -+#include "SDL_orbitalmouse_c.h" -+ -+ -+/* The implementation dependent data for the window manager cursor */ -+struct WMcursor { -+ int unused; -+}; -+ -+WMcursor * ORBITAL_CreateWMCursor (_THIS, -+ Uint8 * data, Uint8 * mask, int w, int h, int hot_x, int hot_y) -+{ -+ WMcursor * cursor ; -+ -+ cursor = (WMcursor *) SDL_malloc (sizeof (WMcursor)) ; -+ if (cursor == NULL) { -+ SDL_OutOfMemory () ; -+ return NULL ; -+ } -+ -+ return cursor ; -+} -+ -+void ORBITAL_FreeWMCursor (_THIS, WMcursor * cursor) -+{ -+ SDL_free (cursor) ; -+} -+ -+int ORBITAL_ShowWMCursor (_THIS, WMcursor * cursor) -+{ -+ bool mouse_cursor = cursor != NULL; -+ // printf("ORBITAL_ShowWMCursor(%p) = %d\n", cursor, mouse_cursor); -+ if (mouse_cursor != this->hidden->mouse_cursor) { -+ this->hidden->mouse_cursor = mouse_cursor; -+ if (this->hidden->window) { -+ orb_window_set_mouse_cursor(this->hidden->window, mouse_cursor); -+ } -+ } -+} -diff -ruwN source/src/video/orbital/SDL_orbitalmouse_c.h source-new/src/video/orbital/SDL_orbitalmouse_c.h ---- source/src/video/orbital/SDL_orbitalmouse_c.h 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalmouse_c.h 2019-08-12 13:14:47.509444528 -0600 -@@ -0,0 +1,28 @@ -+/* -+ SDL - Simple DirectMedia Layer -+ Copyright (C) 1997-2012 Sam Lantinga -+ -+ This library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ This library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with this library; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ -+ Sam Lantinga -+ slouken@libsdl.org -+*/ -+#include "SDL_config.h" -+ -+#include "SDL_orbitalvideo.h" -+ -+extern WMcursor * ORBITAL_CreateWMCursor (_THIS, Uint8 * data, Uint8 * mask, int w, int h, int hot_x, int hot_y) ; -+void ORBITAL_FreeWMCursor (_THIS, WMcursor * cursor) ; -+extern int ORBITAL_ShowWMCursor (_THIS, WMcursor * cursor) ; -diff -ruwN source/src/video/orbital/SDL_orbitalvideo.c source-new/src/video/orbital/SDL_orbitalvideo.c ---- source/src/video/orbital/SDL_orbitalvideo.c 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalvideo.c 2019-08-12 13:52:49.188487962 -0600 -@@ -0,0 +1,265 @@ -+/* -+ SDL - Simple DirectMedia Layer -+ Copyright (C) 1997-2012 Sam Lantinga -+ -+ This library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ This library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with this library; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ -+ Sam Lantinga -+ slouken@libsdl.org -+*/ -+#include "SDL_config.h" -+ -+/* Orbital SDL video driver implementation -+ * -+ * Initial work by Ryan C. Gordon (icculus@icculus.org). A good portion -+ * of this was cut-and-pasted from Stephane Peter's work in the AAlib -+ * SDL video driver. Renamed to "DUMMY" by Sam Lantinga. -+ * Repurposed to ORBITAL by Jeremy Soller. -+ */ -+ -+#include "SDL_video.h" -+#include "SDL_mouse.h" -+#include "../SDL_sysvideo.h" -+#include "../SDL_pixels_c.h" -+#include "../../events/SDL_events_c.h" -+ -+#include -+#include "SDL_orbitalvideo.h" -+#include "SDL_orbitalevents_c.h" -+#include "SDL_orbitalmouse_c.h" -+ -+#include -+#include -+#include -+#include -+ -+#define ORBITALVID_DRIVER_NAME "orbital" -+ -+/* Initialization/Query functions */ -+static int ORBITAL_VideoInit(_THIS, SDL_PixelFormat *vformat); -+static SDL_Rect **ORBITAL_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags); -+static SDL_Surface *ORBITAL_SetVideoMode(_THIS, SDL_Surface *current, int width, int height, int bpp, Uint32 flags); -+static int ORBITAL_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors); -+static void ORBITAL_VideoQuit(_THIS); -+static void ORBITAL_SetCaption(_THIS, const char *title, const char *icon); -+ -+/* Hardware surface functions */ -+static int ORBITAL_AllocHWSurface(_THIS, SDL_Surface *surface); -+static int ORBITAL_LockHWSurface(_THIS, SDL_Surface *surface); -+static void ORBITAL_UnlockHWSurface(_THIS, SDL_Surface *surface); -+static void ORBITAL_FreeHWSurface(_THIS, SDL_Surface *surface); -+ -+/* Input handling */ -+static void ORBITAL_CheckMouseMode(_THIS); -+static SDL_GrabMode ORBITAL_GrabInput(_THIS, SDL_GrabMode mode); -+ -+/* etc. */ -+static void ORBITAL_UpdateRects(_THIS, int numrects, SDL_Rect *rects); -+ -+/* ORBITAL driver bootstrap functions */ -+ -+static int ORBITAL_Available(void) -+{ -+ return(1); -+} -+ -+static void ORBITAL_DeleteDevice(SDL_VideoDevice *device) -+{ -+ SDL_free(device->hidden); -+ SDL_free(device); -+} -+ -+static SDL_VideoDevice *ORBITAL_CreateDevice(int devindex) -+{ -+ SDL_VideoDevice *device; -+ -+ /* Initialize all variables that we clean on shutdown */ -+ device = (SDL_VideoDevice *)SDL_malloc(sizeof(SDL_VideoDevice)); -+ if ( device ) { -+ SDL_memset(device, 0, (sizeof *device)); -+ device->hidden = (struct SDL_PrivateVideoData *) -+ SDL_malloc((sizeof *device->hidden)); -+ } -+ if ( (device == NULL) || (device->hidden == NULL) ) { -+ SDL_OutOfMemory(); -+ if ( device ) { -+ SDL_free(device); -+ } -+ return(0); -+ } -+ SDL_memset(device->hidden, 0, (sizeof *device->hidden)); -+ -+ /* Set the function pointers */ -+ device->VideoInit = ORBITAL_VideoInit; -+ device->ListModes = ORBITAL_ListModes; -+ device->SetVideoMode = ORBITAL_SetVideoMode; -+ device->CreateYUVOverlay = NULL; -+ device->SetColors = ORBITAL_SetColors; -+ device->UpdateRects = ORBITAL_UpdateRects; -+ device->VideoQuit = ORBITAL_VideoQuit; -+ device->AllocHWSurface = ORBITAL_AllocHWSurface; -+ device->CheckHWBlit = NULL; -+ device->FillHWRect = NULL; -+ device->SetHWColorKey = NULL; -+ device->SetHWAlpha = NULL; -+ device->LockHWSurface = ORBITAL_LockHWSurface; -+ device->UnlockHWSurface = ORBITAL_UnlockHWSurface; -+ device->FlipHWSurface = NULL; -+ device->FreeHWSurface = ORBITAL_FreeHWSurface; -+ device->SetCaption = ORBITAL_SetCaption; -+ device->SetIcon = NULL; -+ device->IconifyWindow = NULL; -+ device->FreeWMCursor = ORBITAL_FreeWMCursor; -+ device->CreateWMCursor = ORBITAL_CreateWMCursor; -+ device->ShowWMCursor = ORBITAL_ShowWMCursor; -+ device->CheckMouseMode = ORBITAL_CheckMouseMode; -+ device->GrabInput = ORBITAL_GrabInput; -+ device->GetWMInfo = NULL; -+ device->InitOSKeymap = ORBITAL_InitOSKeymap; -+ device->PumpEvents = ORBITAL_PumpEvents; -+ -+ device->free = ORBITAL_DeleteDevice; -+ -+ return device; -+} -+ -+VideoBootStrap ORBITAL_bootstrap = { -+ ORBITALVID_DRIVER_NAME, "SDL orbital video driver", -+ ORBITAL_Available, ORBITAL_CreateDevice -+}; -+ -+ -+int ORBITAL_VideoInit(_THIS, SDL_PixelFormat *vformat) -+{ -+ fprintf(stderr, "WARNING: You are using the SDL orbital video driver!\n"); -+ -+ /* Determine the screen depth (use default 32-bit depth) */ -+ /* we change this during the SDL_SetVideoMode implementation... */ -+ vformat->BitsPerPixel = 32; -+ vformat->BytesPerPixel = 4; -+ -+ /* We're done! */ -+ return(0); -+} -+ -+SDL_Rect **ORBITAL_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags) -+{ -+ if (format->BitsPerPixel != 32) -+ return NULL; -+ -+ return (SDL_Rect **) -1; -+} -+ -+SDL_Surface *ORBITAL_SetVideoMode(_THIS, SDL_Surface *current, -+ int width, int height, int bpp, Uint32 flags) -+{ -+ if ( bpp != 32 ) { -+ SDL_SetError("Unsupported color depth - must use 32-bits per pixel"); -+ return(NULL); -+ } -+ -+ if (this->hidden->window) { -+ orb_window_set_size(this->hidden->window, width, height); -+ } else { -+ uint32_t orb_flags = ORB_WINDOW_ASYNC; -+ if (flags & SDL_RESIZABLE) -+ orb_flags |= ORB_WINDOW_RESIZABLE; -+ -+ this->hidden->window = orb_window_new_flags(-1, -1, width, height, "SDL", orb_flags); -+ if (!this->hidden->window) { -+ SDL_SetError("Couldn't create window for requested mode"); -+ return(NULL); -+ } -+ -+ orb_window_set_mouse_cursor(this->hidden->window, this->hidden->mouse_cursor); -+ orb_window_set_mouse_grab(this->hidden->window, this->hidden->mouse_grab); -+ orb_window_set_mouse_relative(this->hidden->window, this->hidden->mouse_relative); -+ } -+ -+ fprintf(stderr, "Setting mode %dx%d@%d\n", width, height, bpp); -+ -+ /* Allocate the new pixel format for the screen */ -+ if ( ! SDL_ReallocFormat(current, bpp, 0x00FF0000, 0x0000FF00, 0x000000FF, 0xFF000000) ) { -+ orb_window_destroy(this->hidden->window); -+ this->hidden->window = NULL; -+ -+ SDL_SetError("Couldn't allocate new pixel format for requested mode"); -+ return(NULL); -+ } -+ -+ /* Set up the new mode framebuffer */ -+ current->flags = flags & (~SDL_DOUBLEBUF); -+ current->w = width; -+ current->h = height; -+ current->pitch = width * (bpp / 8); -+ current->pixels = orb_window_data(this->hidden->window); -+ -+ /* We're done */ -+ return(current); -+} -+ -+static void ORBITAL_SetCaption(_THIS, const char *title, const char *icon) -+{ -+ if (this->hidden->window) { -+ orb_window_set_title(this->hidden->window, title); -+ } -+} -+ -+/* We don't actually allow hardware surfaces other than the main one */ -+static int ORBITAL_AllocHWSurface(_THIS, SDL_Surface *surface) -+{ -+ return(-1); -+} -+static void ORBITAL_FreeHWSurface(_THIS, SDL_Surface *surface) -+{ -+ return; -+} -+ -+/* We need to wait for vertical retrace on page flipped displays */ -+static int ORBITAL_LockHWSurface(_THIS, SDL_Surface *surface) -+{ -+ return(0); -+} -+ -+static void ORBITAL_UnlockHWSurface(_THIS, SDL_Surface *surface) -+{ -+ return; -+} -+ -+static void ORBITAL_UpdateRects(_THIS, int numrects, SDL_Rect *rects) -+{ -+ if (this->hidden->window) { -+ SDL_SetAlphaChannel(this->screen, SDL_ALPHA_OPAQUE); -+ orb_window_sync(this->hidden->window); -+ } -+} -+ -+int ORBITAL_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors) -+{ -+ /* do nothing of note. */ -+ return(1); -+} -+ -+/* Note: If we are terminated, this could be called in the middle of -+ another SDL video routine -- notably UpdateRects. -+*/ -+void ORBITAL_VideoQuit(_THIS) -+{ -+ if (this->hidden->window) { -+ orb_window_destroy(this->hidden->window); -+ this->hidden->window = NULL; -+ this->screen->pixels = NULL; -+ } -+} -diff -ruwN source/src/video/orbital/SDL_orbitalvideo.h source-new/src/video/orbital/SDL_orbitalvideo.h ---- source/src/video/orbital/SDL_orbitalvideo.h 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/src/video/orbital/SDL_orbitalvideo.h 2019-08-12 14:06:11.392352905 -0600 -@@ -0,0 +1,43 @@ -+/* -+ SDL - Simple DirectMedia Layer -+ Copyright (C) 1997-2012 Sam Lantinga -+ -+ This library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ This library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with this library; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ -+ Sam Lantinga -+ slouken@libsdl.org -+*/ -+#include "SDL_config.h" -+ -+#ifndef _SDL_orbitalvideo_h -+#define _SDL_orbitalvideo_h -+ -+#include -+#include "../SDL_sysvideo.h" -+ -+/* Hidden "this" pointer for the video functions */ -+#define _THIS SDL_VideoDevice *this -+ -+ -+/* Private display data */ -+ -+struct SDL_PrivateVideoData { -+ void *window; -+ bool mouse_cursor; -+ bool mouse_grab; -+ bool mouse_relative; -+}; -+ -+#endif /* _SDL_orbitalvideo_h */ -diff -ruwN source/src/video/SDL_gamma.c source-new/src/video/SDL_gamma.c ---- source/src/video/SDL_gamma.c 2012-01-18 23:30:06.000000000 -0700 -+++ source-new/src/video/SDL_gamma.c 2019-08-10 20:55:13.670786496 -0600 -@@ -35,6 +35,9 @@ - #define log(x) __ieee754_log(x) - #endif - -+#include "e_log.h" -+#define log(x) __ieee754_log(x) -+ - #include "SDL_sysvideo.h" - - -diff -ruwN source/src/video/SDL_sysvideo.h source-new/src/video/SDL_sysvideo.h ---- source/src/video/SDL_sysvideo.h 2012-01-18 23:30:06.000000000 -0700 -+++ source-new/src/video/SDL_sysvideo.h 2019-08-10 20:55:13.670786496 -0600 -@@ -410,6 +410,9 @@ - #if SDL_VIDEO_DRIVER_CACA - extern VideoBootStrap CACA_bootstrap; - #endif -+#if SDL_VIDEO_DRIVER_ORBITAL -+extern VideoBootStrap ORBITAL_bootstrap; -+#endif - #if SDL_VIDEO_DRIVER_DUMMY - extern VideoBootStrap DUMMY_bootstrap; - #endif -diff -ruwN source/src/video/SDL_video.c source-new/src/video/SDL_video.c ---- source/src/video/SDL_video.c 2012-01-18 23:30:06.000000000 -0700 -+++ source-new/src/video/SDL_video.c 2019-08-10 20:55:13.670786496 -0600 -@@ -126,6 +126,9 @@ - #if SDL_VIDEO_DRIVER_CACA - &CACA_bootstrap, - #endif -+#if SDL_VIDEO_DRIVER_ORBITAL -+ &ORBITAL_bootstrap, -+#endif - #if SDL_VIDEO_DRIVER_DUMMY - &DUMMY_bootstrap, - #endif -@@ -726,7 +729,8 @@ - video->offset_y = 0; - mode->offset = 0; - SDL_SetClipRect(mode, NULL); -- SDL_ClearSurface(mode); -+ // Causes blinking under Orbital -+ //SDL_ClearSurface(mode); - - /* Now adjust the offsets to match the desired mode */ - video->offset_x = (mode->w-width)/2; From 235bd483e74ea9f8f5c83e54f73fb0d02337879a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 20 Jan 2023 10:43:56 -0700 Subject: [PATCH 1041/3180] Fix eduke32 on i686 --- recipes/eduke32/redox.patch | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/recipes/eduke32/redox.patch b/recipes/eduke32/redox.patch index 52f966ca..5d5fa8af 100644 --- a/recipes/eduke32/redox.patch +++ b/recipes/eduke32/redox.patch @@ -1,6 +1,6 @@ diff -rupwN source/Common.mak source-new/Common.mak --- source/Common.mak 2018-07-14 15:36:44.000000000 -0600 -+++ source-new/Common.mak 2019-03-15 21:28:32.366856380 -0600 ++++ source-new/Common.mak 2023-01-20 10:38:24.948044222 -0700 @@ -93,7 +93,7 @@ endif ##### Makefile meta-settings @@ -21,22 +21,24 @@ diff -rupwN source/Common.mak source-new/Common.mak CC := $(CROSS)gcc$(CROSS_SUFFIX) CXX := $(CROSS)g++$(CROSS_SUFFIX) -@@ -383,6 +387,14 @@ else ifeq ($(PLATFORM),$(filter $(PLATFO +@@ -383,6 +387,16 @@ else ifeq ($(PLATFORM),$(filter $(PLATFO override NOASM := 1 else ifeq ($(PLATFORM),$(filter $(PLATFORM),BEOS SKYOS)) override NOASM := 1 +else ifeq ($(PLATFORM),REDOX) -+ override USE_OPENGL := 0 -+ override NETCODE := 0 -+ override HAVE_GTK2 := 0 + override HAVE_FLAC := 0 ++ override HAVE_GTK2 := 0 + override HAVE_XMP := 0 + override MIXERTYPE := SDL ++ override NETCODE := 0 ++ override NOASM := 1 ++ override USE_OPENGL := 0 ++ OPTOPT := -mtune=generic + SDL_TARGET := 1 endif ifneq (i386,$(strip $(IMPLICIT_ARCH))) -@@ -868,7 +880,7 @@ ifeq ($(RENDERTYPE),SDL) +@@ -868,7 +882,7 @@ ifeq ($(RENDERTYPE),SDL) SDLCONFIG := sdl2-config SDLNAME := SDL2 else ifeq ($(SDL_TARGET),1) @@ -45,7 +47,7 @@ diff -rupwN source/Common.mak source-new/Common.mak SDLNAME := SDL ifeq (0,$(RELEASE)) COMPILERFLAGS += -DNOSDLPARACHUTE -@@ -957,9 +969,11 @@ else ifeq ($(PLATFORM),WII) +@@ -957,9 +971,11 @@ else ifeq ($(PLATFORM),WII) LIBS += -laesnd_tueidj -lfat -lwiiuse -lbte -lwiikeyboard -logc else ifeq ($(SUBPLATFORM),LINUX) LIBS += -lrt @@ -58,9 +60,10 @@ diff -rupwN source/Common.mak source-new/Common.mak ifneq ($(PLATFORM),BSD) LIBS += -ldl endif +Binary files source/.Common.mak.swp and source-new/.Common.mak.swp differ diff -rupwN source/source/build/include/compat.h source-new/source/build/include/compat.h --- source/source/build/include/compat.h 2018-10-06 23:21:24.000000000 -0600 -+++ source-new/source/build/include/compat.h 2019-03-15 21:21:09.285856877 -0600 ++++ source-new/source/build/include/compat.h 2023-01-20 10:31:10.843745693 -0700 @@ -7,6 +7,9 @@ #pragma once @@ -92,7 +95,7 @@ diff -rupwN source/source/build/include/compat.h source-new/source/build/include #if defined(__cplusplus) && defined(_MSC_VER) diff -rupwN source/source/build/src/baselayer.cpp source-new/source/build/src/baselayer.cpp --- source/source/build/src/baselayer.cpp 2018-10-06 23:21:43.000000000 -0600 -+++ source-new/source/build/src/baselayer.cpp 2019-03-15 21:21:09.285856877 -0600 ++++ source-new/source/build/src/baselayer.cpp 2023-01-20 10:31:49.591772332 -0700 @@ -498,7 +498,7 @@ int32_t baselayer_init(void) void maybe_redirect_outputs(void) @@ -104,7 +107,7 @@ diff -rupwN source/source/build/src/baselayer.cpp source-new/source/build/src/ba // pipe standard outputs to files diff -rupwN source/source/build/src/sdlayer.cpp source-new/source/build/src/sdlayer.cpp --- source/source/build/src/sdlayer.cpp 2018-10-06 23:23:44.000000000 -0600 -+++ source-new/source/build/src/sdlayer.cpp 2019-03-15 21:21:09.289856979 -0600 ++++ source-new/source/build/src/sdlayer.cpp 2023-01-20 10:30:49.223730830 -0700 @@ -305,7 +305,7 @@ void wm_setapptitle(const char *name) // @@ -116,7 +119,7 @@ diff -rupwN source/source/build/src/sdlayer.cpp source-new/source/build/src/sdla #endif diff -rupwN source/source/duke3d/src/common.cpp source-new/source/duke3d/src/common.cpp --- source/source/duke3d/src/common.cpp 2018-10-06 23:20:23.000000000 -0600 -+++ source-new/source/duke3d/src/common.cpp 2019-03-15 21:21:09.289856979 -0600 ++++ source-new/source/duke3d/src/common.cpp 2023-01-20 10:30:49.223730830 -0700 @@ -1173,6 +1173,7 @@ int32_t S_OpenAudio(const char *fn, char Bfree(testfn); return origfp; @@ -132,7 +135,7 @@ diff -rupwN source/source/duke3d/src/common.cpp source-new/source/duke3d/src/com -#endif diff -rupwN source/source/duke3d/src/game.cpp source-new/source/duke3d/src/game.cpp --- source/source/duke3d/src/game.cpp 2018-10-06 23:23:48.000000000 -0600 -+++ source-new/source/duke3d/src/game.cpp 2019-03-15 21:21:09.293857082 -0600 ++++ source-new/source/duke3d/src/game.cpp 2023-01-20 10:30:49.223730830 -0700 @@ -6697,7 +6697,7 @@ MAIN_LOOP_RESTART: static char buf[128]; #ifndef GEKKO @@ -144,7 +147,7 @@ diff -rupwN source/source/duke3d/src/game.cpp source-new/source/duke3d/src/game. { diff -rupwN source/source/enet/include/enet/unix.h source-new/source/enet/include/enet/unix.h --- source/source/enet/include/enet/unix.h 2014-06-16 17:16:08.000000000 -0600 -+++ source-new/source/enet/include/enet/unix.h 2019-03-15 21:21:09.293857082 -0600 ++++ source-new/source/enet/include/enet/unix.h 2023-01-20 10:30:49.223730830 -0700 @@ -6,6 +6,7 @@ #define __ENET_UNIX_H__ From 4157cea5323c4bf06cd5637978c860f7acd881e2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 20 Jan 2023 10:53:42 -0700 Subject: [PATCH 1042/3180] Fix prboom on i686 --- recipes/prboom/recipe.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/prboom/recipe.sh b/recipes/prboom/recipe.sh index 25550228..17d52049 100644 --- a/recipes/prboom/recipe.sh +++ b/recipes/prboom/recipe.sh @@ -17,9 +17,10 @@ function recipe_build { --prefix=/ \ --build=${BUILD} \ --host=${HOST} \ - --disable-sdltest \ --disable-cpu-opt \ + --disable-i386-asm \ --disable-gl \ + --disable-sdltest \ --without-net \ --with-sdl-prefix="$sysroot" \ ac_cv_lib_SDL_mixer_Mix_OpenAudio=yes From 13ac5485ce77d52b6b8b757a7490535e19e18116 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 11 Feb 2023 14:05:19 -0700 Subject: [PATCH 1043/3180] Remove libc patch --- .cargo/config | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.cargo/config b/.cargo/config index bb5816a4..424d6606 100644 --- a/.cargo/config +++ b/.cargo/config @@ -9,7 +9,3 @@ rustflags = [] [target.x86_64-unknown-redox] linker = "x86_64-unknown-redox-gcc" rustflags = [] - -# TODO: remove patch if https://github.com/rust-lang/libc/pull/3024 is released -[patch.crates-io] -libc = { git = "https://gitlab.redox-os.org/redox-os/liblibc.git", branch = "rust-2022-03-18" } From d80823e59166e2f3d02864752bf0996907757d72 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 11 Feb 2023 14:06:28 -0700 Subject: [PATCH 1044/3180] Update llvm and rust packages --- recipes/llvm/recipe.toml | 2 +- recipes/rust/config.toml | 1 + recipes/rust/recipe.sh | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/llvm/recipe.toml b/recipes/llvm/recipe.toml index 41e98cf3..a59ee7e5 100644 --- a/recipes/llvm/recipe.toml +++ b/recipes/llvm/recipe.toml @@ -1,7 +1,7 @@ [source] git = "https://gitlab.redox-os.org/redox-os/llvm-project.git" upstream = "https://github.com/rust-lang/llvm-project.git" -branch = "redox-2022-03-18" +branch = "redox-2023-01-21" [build] template = "custom" diff --git a/recipes/rust/config.toml b/recipes/rust/config.toml index 45578d35..53a16b1d 100644 --- a/recipes/rust/config.toml +++ b/recipes/rust/config.toml @@ -1,4 +1,5 @@ [llvm] +download-ci-llvm = false static-libstdcpp = true [build] diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index 6bc59133..3be9c980 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -1,5 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/rust.git -BRANCH=redox-2022-03-18 +BRANCH=redox-2023-01-21 BUILD_DEPENDS=(llvm) DEPENDS="gcc cargo" PREPARE_COPY=0 From c27528942c4a4e66a53cc7d35489331955045187 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 11 Feb 2023 16:45:52 -0700 Subject: [PATCH 1045/3180] llvm: enable zlib, disable zstd --- recipes/llvm/recipe.toml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/recipes/llvm/recipe.toml b/recipes/llvm/recipe.toml index a59ee7e5..4f160c75 100644 --- a/recipes/llvm/recipe.toml +++ b/recipes/llvm/recipe.toml @@ -5,7 +5,9 @@ branch = "redox-2023-01-21" [build] template = "custom" -dependencies = [] +dependencies = [ + "zlib" +] script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( @@ -28,6 +30,7 @@ COOKBOOK_CONFIGURE_FLAGS=( -DLLVM_ENABLE_LTO=Off -DLLVM_ENABLE_RTTI=On -DLLVM_ENABLE_THREADS=On + -DLLVM_ENABLE_ZSTD=Off -DLLVM_INCLUDE_BENCHMARKS=Off -DLLVM_INCLUDE_EXAMPLES=Off -DLLVM_INCLUDE_TESTS=Off @@ -47,6 +50,8 @@ COOKBOOK_CONFIGURE_FLAGS=( -DLLVM_UTILS_INSTALL_DIR=bin -DPYTHON_EXECUTABLE="/usr/bin/python2" -DUNIX=1 + -DZLIB_LIBRARY=-lz + -DZLIB_INCLUDE_DIR="${COOKBOOK_SYSROOT}/include" -Wno-dev "${COOKBOOK_SOURCE}/llvm" ) From 297ac2c8aa329466c411580f9526774476472935 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 11 Feb 2023 16:54:27 -0700 Subject: [PATCH 1046/3180] Update llvm-config --- bin/x86_64-unknown-redox-llvm-config | 79 +++++++++++++++------------- 1 file changed, 41 insertions(+), 38 deletions(-) diff --git a/bin/x86_64-unknown-redox-llvm-config b/bin/x86_64-unknown-redox-llvm-config index 210eca97..35692fd7 100755 --- a/bin/x86_64-unknown-redox-llvm-config +++ b/bin/x86_64-unknown-redox-llvm-config @@ -8,21 +8,21 @@ # echo -e \"$component\": \"$(llvm-config --libs $component)\", # end components = { - "aggressiveinstcombine": "-lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "all": "-lLLVMWindowsManifest -lLLVMXRay -lLLVMLibDriver -lLLVMDlltoolDriver -lLLVMCoverage -lLLVMLineEditor -lLLVMX86TargetMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMOrcJIT -lLLVMMCJIT -lLLVMJITLink -lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMDWP -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoGSYM -lLLVMOption -lLLVMObjectYAML -lLLVMMCA -lLLVMMCDisassembler -lLLVMLTO -lLLVMPasses -lLLVMCFGuard -lLLVMCoroutines -lLLVMObjCARCOpts -lLLVMipo -lLLVMVectorize -lLLVMLinker -lLLVMInstrumentation -lLLVMFrontendOpenMP -lLLVMFrontendOpenACC -lLLVMExtensions -lLLVMDWARFLinker -lLLVMGlobalISel -lLLVMMIRParser -lLLVMAsmPrinter -lLLVMDebugInfoMSF -lLLVMSelectionDAG -lLLVMCodeGen -lLLVMIRReader -lLLVMAsmParser -lLLVMInterfaceStub -lLLVMFileCheck -lLLVMFuzzMutate -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTableGen -lLLVMSupport -lLLVMDemangle", - "all-targets": "-lLLVMX86TargetMCA -lLLVMMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMSelectionDAG -lLLVMInstrumentation -lLLVMAsmPrinter -lLLVMDebugInfoMSF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "analysis": "-lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "aggressiveinstcombine": "-lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "all": "-lLLVMWindowsManifest -lLLVMWindowsDriver -lLLVMXRay -lLLVMLibDriver -lLLVMDlltoolDriver -lLLVMCoverage -lLLVMLineEditor -lLLVMX86TargetMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMOrcJIT -lLLVMMCJIT -lLLVMJITLink -lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMDWP -lLLVMDebugInfoGSYM -lLLVMOption -lLLVMObjectYAML -lLLVMObjCopy -lLLVMMCA -lLLVMMCDisassembler -lLLVMLTO -lLLVMPasses -lLLVMCFGuard -lLLVMCoroutines -lLLVMObjCARCOpts -lLLVMipo -lLLVMVectorize -lLLVMLinker -lLLVMInstrumentation -lLLVMFrontendOpenMP -lLLVMFrontendOpenACC -lLLVMExtensions -lLLVMDWARFLinker -lLLVMGlobalISel -lLLVMMIRParser -lLLVMAsmPrinter -lLLVMSelectionDAG -lLLVMCodeGen -lLLVMIRReader -lLLVMAsmParser -lLLVMInterfaceStub -lLLVMFileCheck -lLLVMFuzzMutate -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMFuzzerCLI -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTableGen -lLLVMSupport -lLLVMDemangle", + "all-targets": "-lLLVMX86TargetMCA -lLLVMMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMSelectionDAG -lLLVMInstrumentation -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "analysis": "-lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "asmparser": "-lLLVMAsmParser -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "asmprinter": "-lLLVMAsmPrinter -lLLVMDebugInfoMSF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "asmprinter": "-lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "binaryformat": "-lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "bitreader": "-lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", "bitstreamreader": "-lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", - "bitwriter": "-lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "bitwriter": "-lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "cfguard": "-lLLVMCFGuard -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "codegen": "-lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "codegen": "-lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "core": "-lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "coroutines": "-lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMFrontendOpenMP -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "coverage": "-lLLVMCoverage -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "coroutines": "-lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMFrontendOpenMP -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "coverage": "-lLLVMCoverage -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "debuginfocodeview": "-lLLVMDebugInfoCodeView -lLLVMSupport -lLLVMDemangle", "debuginfodwarf": "-lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "debuginfogsym": "-lLLVMDebugInfoGSYM -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", @@ -30,59 +30,62 @@ components = { "debuginfopdb": "-lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "demangle": "-lLLVMDemangle", "dlltooldriver": "-lLLVMDlltoolDriver -lLLVMOption -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", - "dwarflinker": "-lLLVMDWARFLinker -lLLVMAsmPrinter -lLLVMDebugInfoMSF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "dwp": "-lLLVMDWP -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "engine": "-lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "executionengine": "-lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "dwarflinker": "-lLLVMDWARFLinker -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "dwp": "-lLLVMDWP -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "engine": "-lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "executionengine": "-lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "extensions": "-lLLVMExtensions -lLLVMSupport -lLLVMDemangle", "filecheck": "-lLLVMFileCheck", "frontendopenacc": "-lLLVMFrontendOpenACC", - "frontendopenmp": "-lLLVMFrontendOpenMP -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "fuzzmutate": "-lLLVMFuzzMutate -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "globalisel": "-lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "instcombine": "-lLLVMInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "instrumentation": "-lLLVMInstrumentation -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "frontendopenmp": "-lLLVMFrontendOpenMP -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "fuzzercli": "-lLLVMFuzzerCLI -lLLVMSupport -lLLVMDemangle", + "fuzzmutate": "-lLLVMFuzzMutate -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "globalisel": "-lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "instcombine": "-lLLVMInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "instrumentation": "-lLLVMInstrumentation -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "interfacestub": "-lLLVMInterfaceStub -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "interpreter": "-lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "ipo": "-lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMFrontendOpenMP -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "interpreter": "-lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "ipo": "-lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMFrontendOpenMP -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "irreader": "-lLLVMIRReader -lLLVMBitReader -lLLVMAsmParser -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "jitlink": "-lLLVMJITLink -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "libdriver": "-lLLVMLibDriver -lLLVMOption -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "lineeditor": "-lLLVMLineEditor -lLLVMSupport -lLLVMDemangle", - "linker": "-lLLVMLinker -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "lto": "-lLLVMLTO -lLLVMPasses -lLLVMCoroutines -lLLVMObjCARCOpts -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMFrontendOpenMP -lLLVMExtensions -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "linker": "-lLLVMLinker -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "lto": "-lLLVMLTO -lLLVMPasses -lLLVMCoroutines -lLLVMObjCARCOpts -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMFrontendOpenMP -lLLVMExtensions -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "mc": "-lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "mca": "-lLLVMMCA -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "mcdisassembler": "-lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "mcjit": "-lLLVMMCJIT -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "mcjit": "-lLLVMMCJIT -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "mcparser": "-lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "mirparser": "-lLLVMMIRParser -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMAsmParser -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "native": "-lLLVMX86TargetMCA -lLLVMMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMSelectionDAG -lLLVMInstrumentation -lLLVMAsmPrinter -lLLVMDebugInfoMSF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "nativecodegen": "-lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMSelectionDAG -lLLVMInstrumentation -lLLVMAsmPrinter -lLLVMDebugInfoMSF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "objcarcopts": "-lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "mirparser": "-lLLVMMIRParser -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMAsmParser -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "native": "-lLLVMX86TargetMCA -lLLVMMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMSelectionDAG -lLLVMInstrumentation -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "nativecodegen": "-lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMSelectionDAG -lLLVMInstrumentation -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "objcarcopts": "-lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "objcopy": "-lLLVMObjCopy -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "object": "-lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", "objectyaml": "-lLLVMObjectYAML -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "option": "-lLLVMOption -lLLVMSupport -lLLVMDemangle", - "orcjit": "-lLLVMOrcJIT -lLLVMPasses -lLLVMObjCARCOpts -lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMFrontendOpenMP -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMMCDisassembler -lLLVMJITLink -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "orcjit": "-lLLVMOrcJIT -lLLVMPasses -lLLVMObjCARCOpts -lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMFrontendOpenMP -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMMCDisassembler -lLLVMJITLink -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "orcshared": "-lLLVMOrcShared -lLLVMSupport -lLLVMDemangle", "orctargetprocess": "-lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMSupport -lLLVMDemangle", - "passes": "-lLLVMPasses -lLLVMTarget -lLLVMObjCARCOpts -lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMFrontendOpenMP -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "profiledata": "-lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "passes": "-lLLVMPasses -lLLVMTarget -lLLVMObjCARCOpts -lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMFrontendOpenMP -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "profiledata": "-lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "remarks": "-lLLVMRemarks -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", "runtimedyld": "-lLLVMRuntimeDyld -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "scalaropts": "-lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "selectiondag": "-lLLVMSelectionDAG -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "scalaropts": "-lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "selectiondag": "-lLLVMSelectionDAG -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "support": "-lLLVMSupport -lLLVMDemangle", "symbolize": "-lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "tablegen": "-lLLVMTableGen -lLLVMSupport -lLLVMDemangle", - "target": "-lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "target": "-lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "textapi": "-lLLVMTextAPI -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "transformutils": "-lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "vectorize": "-lLLVMVectorize -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "transformutils": "-lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "vectorize": "-lLLVMVectorize -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "windowsdriver": "-lLLVMWindowsDriver -lLLVMOption -lLLVMSupport -lLLVMDemangle", "windowsmanifest": "-lLLVMWindowsManifest -lLLVMSupport -lLLVMDemangle", - "x86": "-lLLVMX86TargetMCA -lLLVMMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMSelectionDAG -lLLVMInstrumentation -lLLVMAsmPrinter -lLLVMDebugInfoMSF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "x86": "-lLLVMX86TargetMCA -lLLVMMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMSelectionDAG -lLLVMInstrumentation -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "x86asmparser": "-lLLVMX86AsmParser -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "x86codegen": "-lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMSelectionDAG -lLLVMInstrumentation -lLLVMAsmPrinter -lLLVMDebugInfoMSF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", + "x86codegen": "-lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMSelectionDAG -lLLVMInstrumentation -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "x86desc": "-lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "x86disassembler": "-lLLVMX86Disassembler -lLLVMX86Info -lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", "x86info": "-lLLVMX86Info -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", @@ -113,7 +116,7 @@ for arg in sys.argv[1:]: if args == []: fail("no arguments") elif args == ["--version"]: - print("14.0.0") + print("15.0.6") elif args == ["--bindir"]: print(prefix + "/bin") elif args == ["--cppflags"]: From e97f05b035838b8c6bf0df84fada5932f6530225 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 11 Feb 2023 17:05:46 -0700 Subject: [PATCH 1047/3180] Update cargo --- recipes/cargo/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/cargo/recipe.toml b/recipes/cargo/recipe.toml index dc922a7f..a443f377 100644 --- a/recipes/cargo/recipe.toml +++ b/recipes/cargo/recipe.toml @@ -1,7 +1,7 @@ [source] git = "https://gitlab.redox-os.org/redox-os/cargo.git" upstream = "https://github.com/rust-lang/cargo.git" -branch = "redox-2022-03-18" +branch = "redox-2023-01-21" [build] template = "custom" From 04155d9cb8b4ff257e4f0934d96be4663a2e874d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 11 Feb 2023 20:01:57 -0700 Subject: [PATCH 1048/3180] rust: no longer builds rustdoc --- recipes/rust/recipe.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index 3be9c980..8a2f022b 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -23,6 +23,7 @@ function recipe_clean { function recipe_stage { rsync -av --delete "install/" "$1/" # Cannot use STRIP because it is unset in recipe_build - "${HOST}-strip" -v "$1/bin/"{rustc,rustdoc} + #TODO: rustdoc + "${HOST}-strip" -v "$1/bin/rustc" skip=1 } From d63c62a70d3f37cade2c232fcb6d57f869b7c49a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 11 Feb 2023 20:16:34 -0700 Subject: [PATCH 1049/3180] Update vttest URL --- recipes/vttest/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/vttest/recipe.sh b/recipes/vttest/recipe.sh index f6a19fcd..004be896 100644 --- a/recipes/vttest/recipe.sh +++ b/recipes/vttest/recipe.sh @@ -1,5 +1,5 @@ VERSION=20140305 -TAR=http://invisible-island.net/datafiles/release/vttest.tar.gz +TAR="https://invisible-island.net/archives/vttest/vttest-${VERSION}.tgz" function recipe_version { echo "$VERSION" From c619997825027d4b49902777acbf1b2b939b639e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 21 Feb 2023 11:52:50 -0700 Subject: [PATCH 1050/3180] Remove all references to xargo --- Xargo.toml | 10 ---------- clean.sh | 2 -- config.sh | 1 - cook.sh | 1 - recipes/block_encrypt/recipe.sh | 3 --- recipes/kernel/recipe.toml | 4 ++-- recipes/relibc-tests/recipe.sh | 2 +- recipes/rust-cairo-demo/recipe.sh | 1 - recipes/rust-cairo/recipe.sh | 1 - setup.sh | 5 ----- 10 files changed, 3 insertions(+), 27 deletions(-) delete mode 100644 Xargo.toml delete mode 100644 recipes/block_encrypt/recipe.sh diff --git a/Xargo.toml b/Xargo.toml deleted file mode 100644 index 942fbc3a..00000000 --- a/Xargo.toml +++ /dev/null @@ -1,10 +0,0 @@ -[target.aarch64-unknown-redox.dependencies.std] -features = ["panic_unwind"] - -[target.x86_64-unknown-redox.dependencies.std] -features = ["panic_unwind"] -#features = ["panic_unwind", "backtrace"] - -#[dependencies.test] -#stage = 1 - diff --git a/clean.sh b/clean.sh index 0bf362f8..f4c2eb61 100755 --- a/clean.sh +++ b/clean.sh @@ -14,5 +14,3 @@ for recipe in $recipes do ./cook.sh "$recipe" distclean done - -rm -rf xargo diff --git a/config.sh b/config.sh index 4dc41ba3..7b2d34ae 100755 --- a/config.sh +++ b/config.sh @@ -13,7 +13,6 @@ HOST="$TARGET" ROOT="$(cd `dirname "$0"` && pwd)" REPO="$ROOT/repo/$TARGET" export PATH="${ROOT}/bin:$PATH" -export XARGO_HOME="${ROOT}/xargo" export AR="${HOST}-gcc-ar" export AS="${HOST}-as" diff --git a/cook.sh b/cook.sh index aa1c03a0..f66e4f93 100755 --- a/cook.sh +++ b/cook.sh @@ -235,7 +235,6 @@ function op { if [ "$skip" -eq "0" ] then - cp -p "$ROOT/Xargo.toml" "Xargo.toml" "${CARGO[@]}" "$CARGOBUILD" --target "$TARGET" $release_flag $package_flag $CARGOFLAGS fi popd > /dev/null diff --git a/recipes/block_encrypt/recipe.sh b/recipes/block_encrypt/recipe.sh deleted file mode 100644 index e698ea4a..00000000 --- a/recipes/block_encrypt/recipe.sh +++ /dev/null @@ -1,3 +0,0 @@ -GIT=https://github.com/tomasritter/block_encrypt.git -CARGO=(env RUSTFLAGS="$PREFIX_RUSTFLAGS -C target-feature=+aes" xargo) - diff --git a/recipes/kernel/recipe.toml b/recipes/kernel/recipe.toml index 03d037bd..9ab96b28 100644 --- a/recipes/kernel/recipe.toml +++ b/recipes/kernel/recipe.toml @@ -1,5 +1,5 @@ -[source] -git = "https://gitlab.redox-os.org/redox-os/kernel.git" +#[source] +#git = "https://gitlab.redox-os.org/redox-os/kernel.git" [build] template = "custom" diff --git a/recipes/relibc-tests/recipe.sh b/recipes/relibc-tests/recipe.sh index 4ec0a3d9..dc39853b 100644 --- a/recipes/relibc-tests/recipe.sh +++ b/recipes/relibc-tests/recipe.sh @@ -1,7 +1,7 @@ GIT=https://gitlab.redox-os.org/redox-os/relibc.git function recipe_build { - "$REDOX_MAKE" CARGO=xargo NATIVE_RELIBC=1 -C tests -j"$($NPROC)" + "$REDOX_MAKE" NATIVE_RELIBC=1 -C tests -j"$($NPROC)" skip=1 } diff --git a/recipes/rust-cairo-demo/recipe.sh b/recipes/rust-cairo-demo/recipe.sh index 13e373e6..2b493d1f 100644 --- a/recipes/rust-cairo-demo/recipe.sh +++ b/recipes/rust-cairo-demo/recipe.sh @@ -3,7 +3,6 @@ BUILD_DEPENDS=(cairo expat fontconfig freetype libpng pixman zlib) function recipe_build { sysroot="$(realpath ../sysroot)" - cp -p "$ROOT/Xargo.toml" "Xargo.toml" cargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ -- \ -L "${sysroot}/lib" \ diff --git a/recipes/rust-cairo/recipe.sh b/recipes/rust-cairo/recipe.sh index b4484639..a9a5725f 100644 --- a/recipes/rust-cairo/recipe.sh +++ b/recipes/rust-cairo/recipe.sh @@ -4,7 +4,6 @@ CARGOFLAGS="--example gui" function recipe_build { sysroot="$(realpath ../sysroot)" - cp -p "$ROOT/Xargo.toml" "Xargo.toml" cargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ -- \ -L "${sysroot}/lib" \ diff --git a/setup.sh b/setup.sh index bb8e5218..25b6377a 100755 --- a/setup.sh +++ b/setup.sh @@ -16,10 +16,5 @@ then echo "Installing cargo-config" cargo install -f cargo-config fi -if [ -z "$(which xargo)" ] -then - echo "Installing xargo" - cargo install -f xargo -fi echo "cook.sh is ready to use" From 9f3631b4e6bd1d2406f2499d7fcc23d2303fcae4 Mon Sep 17 00:00:00 2001 From: Ron Williams Date: Thu, 23 Feb 2023 21:38:37 -0800 Subject: [PATCH 1051/3180] uncomment kernel source --- recipes/kernel/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/kernel/recipe.toml b/recipes/kernel/recipe.toml index 9ab96b28..03d037bd 100644 --- a/recipes/kernel/recipe.toml +++ b/recipes/kernel/recipe.toml @@ -1,5 +1,5 @@ -#[source] -#git = "https://gitlab.redox-os.org/redox-os/kernel.git" +[source] +git = "https://gitlab.redox-os.org/redox-os/kernel.git" [build] template = "custom" From 2154af0f6de2f8b1a2d68c24165d867fe60bf377 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 25 Feb 2023 10:05:22 -0700 Subject: [PATCH 1052/3180] Add cmake recipe --- recipes/cmake/recipe.toml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 recipes/cmake/recipe.toml diff --git a/recipes/cmake/recipe.toml b/recipes/cmake/recipe.toml new file mode 100644 index 00000000..7c3d24b1 --- /dev/null +++ b/recipes/cmake/recipe.toml @@ -0,0 +1,23 @@ +[source] +tar = "https://github.com/Kitware/CMake/releases/download/v3.25.2/cmake-3.25.2.tar.gz" + +[build] +template = "custom" +dependencies = [ + "openssl", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_VERBOSE_MAKEFILE=On + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_INSTALL_PREFIX="/" + "${COOKBOOK_SOURCE}" +) +set -x +cookbook_configure +mv -vT "${COOKBOOK_STAGE}"/usr/bin "${COOKBOOK_STAGE}/bin" +rmdir -v "${COOKBOOK_STAGE}"/usr +set +x +""" From 10a8b7f56669136c052d5c1f2099a5e209c6adf1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 3 Mar 2023 19:46:13 -0700 Subject: [PATCH 1053/3180] Fix compiling netsurf for i686 --- recipes/netsurf/01_redox.patch | 51 +++++++++++----------------------- 1 file changed, 16 insertions(+), 35 deletions(-) diff --git a/recipes/netsurf/01_redox.patch b/recipes/netsurf/01_redox.patch index 521cc768..6568f773 100644 --- a/recipes/netsurf/01_redox.patch +++ b/recipes/netsurf/01_redox.patch @@ -1,26 +1,6 @@ -diff -ruwN source/buildsystem/makefiles/Makefile.top source-new/buildsystem/makefiles/Makefile.top ---- source/buildsystem/makefiles/Makefile.top 2020-05-24 15:35:19.000000000 -0600 -+++ source-new/buildsystem/makefiles/Makefile.top 2022-11-12 08:54:26.232793713 -0700 -@@ -407,12 +407,16 @@ - $(Q)$(AR) $(ARFLAGS) $@ $(OBJECTS) - else - $(VQ)$(ECHO) $(ECHOFLAGS) " LINK: $@" -+ ifeq ($(COMPONENT_FOR_BUILD),yes) -+ $(Q)$(BUILD_CC) -o $@ $(OBJECTS) $(LDFLAGS) $(SHAREDLDFLAGS) -+ else - ifeq ($(CXX_IN_BUILD),yes) - $(Q)$(CXX) -o $@ $(OBJECTS) $(LDFLAGS) $(SHAREDLDFLAGS) - else - $(Q)$(CC) -o $@ $(OBJECTS) $(LDFLAGS) $(SHAREDLDFLAGS) - endif - endif -+endif - - ############################################################################### - # Autogenerated, implied rules diff -ruwN source/libnsfb/Makefile source-new/libnsfb/Makefile --- source/libnsfb/Makefile 2020-05-24 15:35:21.000000000 -0600 -+++ source-new/libnsfb/Makefile 2022-11-12 08:53:23.376764307 -0700 ++++ source-new/libnsfb/Makefile 2023-03-03 19:29:10.674915797 -0700 @@ -43,10 +43,10 @@ NSFB_XCB_PKG_NAMES := xcb xcb-icccm xcb-image xcb-keysyms xcb-atom @@ -37,7 +17,7 @@ diff -ruwN source/libnsfb/Makefile source-new/libnsfb/Makefile ifeq ($(NSFB_SDL_AVAILABLE),yes) diff -ruwN source/libnsfb/src/plot.h source-new/libnsfb/src/plot.h --- source/libnsfb/src/plot.h 2020-05-24 15:35:21.000000000 -0600 -+++ source-new/libnsfb/src/plot.h 2022-11-12 08:53:23.376764307 -0700 ++++ source-new/libnsfb/src/plot.h 2023-03-03 19:29:10.674915797 -0700 @@ -46,7 +46,7 @@ #error "Endian determination failed" #endif @@ -47,9 +27,21 @@ diff -ruwN source/libnsfb/src/plot.h source-new/libnsfb/src/plot.h #if defined(__BYTE_ORDER__) #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ #define NSFB_BE_BYTE_ORDER +diff -ruwN source/Makefile source-new/Makefile +--- source/Makefile 2020-05-24 15:34:42.000000000 -0600 ++++ source-new/Makefile 2023-03-03 19:34:34.411016536 -0700 +@@ -110,7 +110,7 @@ + + # prefixed install macro for each host sub target + define do_build_prefix_install +- $(MAKE) install --directory=$1 HOST=$(BUILD) PREFIX=$(TMP_PREFIX) Q=$(Q) DESTDIR= ++ $(MAKE) install --directory=$1 HOST=$(BUILD) PREFIX=$(TMP_PREFIX) Q=$(Q) DESTDIR= CC=cc LDFLAGS= + + endef + diff -ruwN source/netsurf/Makefile.config source-new/netsurf/Makefile.config --- source/netsurf/Makefile.config 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/netsurf/Makefile.config 2022-11-12 08:53:23.376764307 -0700 ++++ source-new/netsurf/Makefile.config 2023-03-03 19:29:10.674915797 -0700 @@ -0,0 +1,28 @@ +override NETSURF_HOMEPAGE := "https://www.redox-os.org/" +override NETSURF_FB_FRONTEND := sdl @@ -81,7 +73,7 @@ diff -ruwN source/netsurf/Makefile.config source-new/netsurf/Makefile.config +override NETSURF_FB_FONT_FANTASY := Sans/Fira/Regular.ttf diff -ruwN source/netsurf/utils/config.h source-new/netsurf/utils/config.h --- source/netsurf/utils/config.h 2020-05-24 15:35:23.000000000 -0600 -+++ source-new/netsurf/utils/config.h 2022-11-12 09:00:03.996951825 -0700 ++++ source-new/netsurf/utils/config.h 2023-03-03 19:29:10.674915797 -0700 @@ -63,7 +63,8 @@ defined(__BEOS__) || \ defined(__amigaos4__) || \ @@ -92,14 +84,3 @@ diff -ruwN source/netsurf/utils/config.h source-new/netsurf/utils/config.h #undef HAVE_STRPTIME #undef HAVE_STRFTIME #else -diff -ruwN source/nsgenbind/Makefile source-new/nsgenbind/Makefile ---- source/nsgenbind/Makefile 2020-05-24 15:35:23.000000000 -0600 -+++ source-new/nsgenbind/Makefile 2022-11-12 08:53:43.392773663 -0700 -@@ -10,6 +10,7 @@ - COMPONENT_TYPE := binary - # Component version - COMPONENT_VERSION := 0.8 -+COMPONENT_FOR_BUILD := yes - - # Tooling - PREFIX ?= /opt/netsurf From 250b9870630cace72b3b2cbff2f74f661ccac198 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 7 Mar 2023 16:19:49 -0700 Subject: [PATCH 1054/3180] Use master branch of netutils --- recipes/netutils/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/netutils/recipe.toml b/recipes/netutils/recipe.toml index e46f33a0..e101288a 100644 --- a/recipes/netutils/recipe.toml +++ b/recipes/netutils/recipe.toml @@ -1,6 +1,5 @@ [source] git = "https://gitlab.redox-os.org/redox-os/netutils.git" -branch = "redox-unix" [build] template = "cargo" From fcf42a682daab5ccb70f42ee2220e6496ba5e510 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 9 Mar 2023 09:08:26 +0000 Subject: [PATCH 1055/3180] Convert fd recipe to TOML. --- recipes/fd/recipe.sh | 1 - recipes/fd/recipe.toml | 5 +++++ 2 files changed, 5 insertions(+), 1 deletion(-) delete mode 100644 recipes/fd/recipe.sh create mode 100644 recipes/fd/recipe.toml diff --git a/recipes/fd/recipe.sh b/recipes/fd/recipe.sh deleted file mode 100644 index 8839a16f..00000000 --- a/recipes/fd/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://github.com/sharkdp/fd.git \ No newline at end of file diff --git a/recipes/fd/recipe.toml b/recipes/fd/recipe.toml new file mode 100644 index 00000000..d7d1c638 --- /dev/null +++ b/recipes/fd/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://github.com/sharkdp/fd.git" + +[build] +template = "cargo" From f9ec14a487a9819137b938c689237789a237815f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 9 Mar 2023 10:01:10 +0000 Subject: [PATCH 1056/3180] New recipes. --- recipes/perg/recipe.toml | 5 +++++ recipes/procedural-wallpapers-rs/recipe.toml | 5 +++++ recipes/tokei/recipe.toml | 4 ++++ 3 files changed, 14 insertions(+) create mode 100644 recipes/perg/recipe.toml create mode 100644 recipes/procedural-wallpapers-rs/recipe.toml create mode 100644 recipes/tokei/recipe.toml diff --git a/recipes/perg/recipe.toml b/recipes/perg/recipe.toml new file mode 100644 index 00000000..f5390a21 --- /dev/null +++ b/recipes/perg/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://github.com/guerinoni/perg.git" + +[build] +template = "cargo" diff --git a/recipes/procedural-wallpapers-rs/recipe.toml b/recipes/procedural-wallpapers-rs/recipe.toml new file mode 100644 index 00000000..de976eaf --- /dev/null +++ b/recipes/procedural-wallpapers-rs/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://github.com/lukas-kirschner/procedural-wallpapers-rs.git" + +[build] +template = "cargo" diff --git a/recipes/tokei/recipe.toml b/recipes/tokei/recipe.toml new file mode 100644 index 00000000..752ec64b --- /dev/null +++ b/recipes/tokei/recipe.toml @@ -0,0 +1,4 @@ +[source] +git = "https://github.com/XAMPPRocky/tokei.git" +[build] +template = "cargo" From 24b98879ca415972a546d995740ff8bee13ca058 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 9 Mar 2023 10:10:03 +0000 Subject: [PATCH 1057/3180] Convert calculator to TOML. --- recipes/calculator/recipe.sh | 2 -- recipes/calculator/recipe.toml | 5 +++++ 2 files changed, 5 insertions(+), 2 deletions(-) delete mode 100644 recipes/calculator/recipe.sh create mode 100644 recipes/calculator/recipe.toml diff --git a/recipes/calculator/recipe.sh b/recipes/calculator/recipe.sh deleted file mode 100644 index f81baf3e..00000000 --- a/recipes/calculator/recipe.sh +++ /dev/null @@ -1,2 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/orbcalculator.git -BRANCH=master diff --git a/recipes/calculator/recipe.toml b/recipes/calculator/recipe.toml new file mode 100644 index 00000000..33006ff5 --- /dev/null +++ b/recipes/calculator/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/orbcalculator.git" + +[build] +template = "cargo" From 36b22802ea855406d2d299ac94c878e4e637e26b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 9 Mar 2023 11:29:19 +0000 Subject: [PATCH 1058/3180] New recipe. --- recipes/shellharden/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/shellharden/recipe.toml diff --git a/recipes/shellharden/recipe.toml b/recipes/shellharden/recipe.toml new file mode 100644 index 00000000..7cdbbb3d --- /dev/null +++ b/recipes/shellharden/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://github.com/anordal/shellharden.git" + +[build] +template = "cargo" From d3bde035e2c11f0ca9189b6feb6eeadd4cda2275 Mon Sep 17 00:00:00 2001 From: Will Angenent Date: Tue, 21 Mar 2023 08:58:00 +0000 Subject: [PATCH 1059/3180] Update Cargo.lock --- Cargo.lock | 988 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 718 insertions(+), 270 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2d6fe02a..39d44582 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.17.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" +checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" dependencies = [ "gimli", ] @@ -37,13 +37,22 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "0.7.18" +version = "0.7.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" dependencies = [ "memchr", ] +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + [[package]] name = "ansi_term" version = "0.12.1" @@ -71,9 +80,9 @@ dependencies = [ [[package]] name = "arrayref" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" [[package]] name = "arrayvec" @@ -93,7 +102,7 @@ version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi", + "hermit-abi 0.1.19", "libc", "winapi", ] @@ -106,9 +115,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" -version = "0.3.66" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cab84319d616cfb654d03394f38ab7e6f0919e181b1b57e1fd15e7fb4077d9a7" +checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca" dependencies = [ "addr2line", "cc", @@ -131,15 +140,15 @@ dependencies = [ [[package]] name = "base64" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64ct" -version = "1.1.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6b4d9b1225d28d360ec6a231d65af1fd99a2a095154c8040689617290569c5c" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "bidir-map" @@ -155,11 +164,11 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "blake2" -version = "0.10.4" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9cf849ee05b2ee5fba5e36f97ff8ec2533916700fc0758d40d92136a42f3388" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" dependencies = [ - "digest 0.10.3", + "digest 0.10.6", ] [[package]] @@ -170,7 +179,7 @@ checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" dependencies = [ "arrayref", "arrayvec 0.5.2", - "constant_time_eq", + "constant_time_eq 0.1.5", ] [[package]] @@ -183,7 +192,7 @@ dependencies = [ "arrayvec 0.5.2", "cc", "cfg-if 0.1.10", - "constant_time_eq", + "constant_time_eq 0.1.5", "crypto-mac", "digest 0.9.0", "rayon", @@ -191,16 +200,16 @@ dependencies = [ [[package]] name = "blake3" -version = "1.3.1" +version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08e53fc5a564bb15bfe6fae56bd71522205f1f91893f9c0116edad6496c183f" +checksum = "42ae2468a89544a466886840aa467a25b766499f4f04bf7d9fcd10ecee9fccef" dependencies = [ "arrayref", "arrayvec 0.7.2", "cc", "cfg-if 1.0.0", - "constant_time_eq", - "digest 0.10.3", + "constant_time_eq 0.2.5", + "digest 0.10.6", ] [[package]] @@ -217,11 +226,11 @@ dependencies = [ [[package]] name = "block-buffer" -version = "0.10.2" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "generic-array 0.14.5", + "generic-array 0.14.6", ] [[package]] @@ -233,6 +242,18 @@ dependencies = [ "byte-tools", ] +[[package]] +name = "build_const" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ae4235e6dac0694637c763029ecea1a2ec9e4e06ec2729bd21ba4d9c863eb7" + +[[package]] +name = "bumpalo" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" + [[package]] name = "byte-tools" version = "0.3.1" @@ -253,9 +274,9 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "cc" -version = "1.0.73" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" [[package]] name = "cfg-if" @@ -269,13 +290,28 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "chrono" +version = "0.4.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-integer", + "num-traits", + "time", + "wasm-bindgen", + "winapi", +] + [[package]] name = "cipher" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" dependencies = [ - "generic-array 0.14.5", + "generic-array 0.14.6", ] [[package]] @@ -293,6 +329,16 @@ dependencies = [ "vec_map", ] +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + [[package]] name = "constant_time_eq" version = "0.1.5" @@ -300,14 +346,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] -name = "cpufeatures" -version = "0.2.2" +name = "constant_time_eq" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b" +checksum = "13418e745008f7349ec7e449155f419a61b92b58a99cc3616942b926825ec76b" + +[[package]] +name = "core-foundation-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" + +[[package]] +name = "cpufeatures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" dependencies = [ "libc", ] +[[package]] +name = "crc" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d663548de7f5cca343f1e0a48d14dcfb0e9eb4e079ec58883b7251539fa10aeb" +dependencies = [ + "build_const", +] + [[package]] name = "crc32fast" version = "1.3.2" @@ -319,9 +386,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -329,9 +396,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" dependencies = [ "cfg-if 1.0.0", "crossbeam-epoch", @@ -340,26 +407,24 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.10" +version = "0.9.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "045ebe27666471bb549370b4b0b3e51b07f56325befa4284db65fc89c02511b1" +checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" dependencies = [ "autocfg", "cfg-if 1.0.0", "crossbeam-utils", "memoffset", - "once_cell", "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.11" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bc" +checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" dependencies = [ "cfg-if 1.0.0", - "once_cell", ] [[package]] @@ -368,7 +433,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "generic-array 0.14.5", + "generic-array 0.14.6", "typenum", ] @@ -378,10 +443,54 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" dependencies = [ - "generic-array 0.14.5", + "generic-array 0.14.6", "subtle", ] +[[package]] +name = "cxx" +version = "1.0.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9c00419335c41018365ddf7e4d5f1c12ee3659ddcf3e01974650ba1de73d038" +dependencies = [ + "cc", + "cxxbridge-flags", + "cxxbridge-macro", + "link-cplusplus", +] + +[[package]] +name = "cxx-build" +version = "1.0.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb8307ad413a98fff033c8545ecf133e3257747b3bae935e7602aab8aa92d4ca" +dependencies = [ + "cc", + "codespan-reporting", + "once_cell", + "proc-macro2", + "quote", + "scratch", + "syn 2.0.4", +] + +[[package]] +name = "cxxbridge-flags" +version = "1.0.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edc52e2eb08915cb12596d29d55f0b5384f00d697a646dbd269b6ecb0fbd9d31" + +[[package]] +name = "cxxbridge-macro" +version = "1.0.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "631569015d0d8d54e6c241733f944042623ab6df7bc3be7466874b05fcdb1c5f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.4", +] + [[package]] name = "digest" version = "0.8.1" @@ -397,30 +506,20 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "generic-array 0.14.5", + "generic-array 0.14.6", ] [[package]] name = "digest" -version = "0.10.3" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" +checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" dependencies = [ - "block-buffer 0.10.2", + "block-buffer 0.10.4", "crypto-common", "subtle", ] -[[package]] -name = "dirs" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13aea89a5c93364a98e9b37b2fa237effbb694d5cfe01c5b70941f7eb087d5e3" -dependencies = [ - "cfg-if 0.1.10", - "dirs-sys", -] - [[package]] name = "dirs" version = "3.0.2" @@ -430,6 +529,15 @@ dependencies = [ "dirs-sys", ] +[[package]] +name = "dirs" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +dependencies = [ + "dirs-sys", +] + [[package]] name = "dirs-sys" version = "0.3.7" @@ -443,15 +551,15 @@ dependencies = [ [[package]] name = "either" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f107b87b6afc2a64fd13cac55fe06d6c8859f12d4b14cbcdd2c67d0976781be" +checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" [[package]] name = "env_logger" -version = "0.9.0" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3" +checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" dependencies = [ "atty", "humantime", @@ -461,17 +569,24 @@ dependencies = [ ] [[package]] -name = "err-derive" -version = "0.2.4" +name = "errno" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22deed3a8124cff5fa835713fa105621e43bbdc46690c3a6b68328a012d350d4" +checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", - "rustversion", - "syn", - "synstructure", + "errno-dragonfly", + "libc", + "winapi", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", ] [[package]] @@ -502,29 +617,41 @@ checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", "synstructure", ] [[package]] name = "fastrand" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" dependencies = [ "instant", ] [[package]] -name = "filetime" -version = "0.2.17" +name = "fatfs" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94a7bbaa59354bc20dd75b67f23e2797b4490e9d6928203fb105c79e448c86c" +checksum = "05669f8e7e2d7badc545c513710f0eba09c2fbef683eb859fd79c46c355048e0" +dependencies = [ + "bitflags", + "byteorder", + "chrono", + "log 0.4.17", +] + +[[package]] +name = "filetime" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a3de6e8d11b22ff9edc6d916f890800597d60f8b2da1caf2955c274638d6412" dependencies = [ "cfg-if 1.0.0", "libc", "redox_syscall", - "windows-sys", + "windows-sys 0.45.0", ] [[package]] @@ -533,6 +660,15 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86d4de0081402f5e88cdac65c8dcdcc73118c1a7a465e2a05f0da05843a8ea33" +[[package]] +name = "fscommon" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "315ce685aca5ddcc5a3e7e436ef47d4a5d0064462849b6f0f628c28140103531" +dependencies = [ + "log 0.4.17", +] + [[package]] name = "fuchsia-cprng" version = "0.1.1" @@ -540,16 +676,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" [[package]] -name = "fuse" -version = "0.3.1" +name = "fuser" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e57070510966bfef93662a81cb8aa2b1c7db0964354fa9921434f04b9e8660" +checksum = "5910691a0ececcc6eba8bb14029025c2d123e96a53db1533f6a4602861a5aaf7" dependencies = [ "libc", - "log 0.3.9", + "log 0.4.17", + "memchr", + "page_size", "pkg-config", - "thread-scoped", - "time", + "smallvec", + "users", + "zerocopy", ] [[package]] @@ -563,9 +702,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.5" +version = "0.14.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" +checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" dependencies = [ "typenum", "version_check 0.9.4", @@ -584,9 +723,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" +checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" dependencies = [ "cfg-if 1.0.0", "libc", @@ -595,9 +734,27 @@ dependencies = [ [[package]] name = "gimli" -version = "0.26.2" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" +checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" + +[[package]] +name = "gpt" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dd7365d734a70ac5dd7be791b0c96083852188df015b8c665bb2dadb108a743" +dependencies = [ + "bitflags", + "crc", + "log 0.4.17", + "uuid 0.8.2", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hermit-abi" @@ -608,6 +765,21 @@ dependencies = [ "libc", ] +[[package]] +name = "hermit-abi" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" + [[package]] name = "hex" version = "0.4.3" @@ -619,9 +791,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04c" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "humantime" @@ -660,6 +832,30 @@ dependencies = [ "webpki-roots", ] +[[package]] +name = "iana-time-zone" +version = "0.1.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "winapi", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +dependencies = [ + "cxx", + "cxx-build", +] + [[package]] name = "idna" version = "0.1.5" @@ -671,6 +867,16 @@ dependencies = [ "unicode-normalization", ] +[[package]] +name = "indexmap" +version = "1.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +dependencies = [ + "autocfg", + "hashbrown", +] + [[package]] name = "instant" version = "0.1.12" @@ -680,6 +886,17 @@ dependencies = [ "cfg-if 1.0.0", ] +[[package]] +name = "io-lifetimes" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09270fd4fa1111bc614ed2246c7ef56239a3063d5be0d1ec3b589c505d400aeb" +dependencies = [ + "hermit-abi 0.3.1", + "libc", + "windows-sys 0.45.0", +] + [[package]] name = "itertools" version = "0.8.2" @@ -690,10 +907,22 @@ dependencies = [ ] [[package]] -name = "keccak" -version = "0.1.2" +name = "js-sys" +version = "0.3.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9b7d56ba4a8344d6be9729995e6b06f928af29998cdf79fe390cbf6b1fee838" +checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "keccak" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3afef3b6eff9ce9d8ff9b3601125eec7f0c8cbac7abd14f355d053fa56c98768" +dependencies = [ + "cpufeatures", +] [[package]] name = "language-tags" @@ -709,9 +938,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.126" +version = "0.2.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" +checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" [[package]] name = "libflate" @@ -737,6 +966,21 @@ dependencies = [ "walkdir", ] +[[package]] +name = "link-cplusplus" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" +dependencies = [ + "cc", +] + +[[package]] +name = "linux-raw-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" + [[package]] name = "log" version = "0.3.9" @@ -757,9 +1001,9 @@ dependencies = [ [[package]] name = "matches" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" [[package]] name = "memchr" @@ -769,22 +1013,22 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memoffset" -version = "0.6.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" dependencies = [ "autocfg", ] [[package]] name = "memsec" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ac78937f19a0c7807e45a931eac41f766f210173ec664ec046d58e6d388a5cb" +checksum = "0fa0916b001582d253822171bd23f4a0229d32b9507fae236f5da8cad515ba7c" dependencies = [ - "getrandom 0.2.7", + "getrandom 0.2.8", "libc", - "windows-sys", + "windows-sys 0.45.0", ] [[package]] @@ -798,20 +1042,39 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.5.3" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc" +checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" dependencies = [ "adler", ] [[package]] -name = "num_cpus" -version = "1.13.1" +name = "num-integer" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" dependencies = [ - "hermit-abi", + "autocfg", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +dependencies = [ + "hermit-abi 0.2.6", "libc", ] @@ -823,18 +1086,18 @@ checksum = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" [[package]] name = "object" -version = "0.29.0" +version = "0.30.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53" +checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.13.0" +version = "1.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1" +checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" [[package]] name = "opaque-debug" @@ -861,23 +1124,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a86ed3f5f244b372d6b1a00b72ef7f8876d0bc6a78a4c9985c53614041512063" [[package]] -name = "partition-identity" -version = "0.2.8" +name = "page_size" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec13ba9a0eec5c10a89f6ec1b6e9e2ef7d29b810d771355abbd1c43cae003ed6" +checksum = "eebde548fbbf1ea81a99b128872779c437752fb99f217c45245e1a61dcd9edcd" dependencies = [ - "err-derive", + "libc", + "winapi", +] + +[[package]] +name = "partition-identity" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa925f9becb532d758b0014b472c576869910929cf4c3f8054b386f19ab9e21" +dependencies = [ + "thiserror", ] [[package]] name = "pbr" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff5751d87f7c00ae6403eb1fcbba229b9c76c9a30de8c1cf87182177b168cea2" +checksum = "ed5827dfa0d69b6c92493d6c38e633bbaa5937c153d0d7c28bf12313f8c6d514" dependencies = [ "crossbeam-channel", "libc", - "time", "winapi", ] @@ -899,9 +1171,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" +checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" [[package]] name = "pkgar" @@ -946,7 +1218,7 @@ dependencies = [ "serde", "sodiumoxide", "termion", - "toml 0.5.9", + "toml 0.5.11", "user-error", ] @@ -958,58 +1230,33 @@ checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "ppv-lite86" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn", - "version_check 0.9.4", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check 0.9.4", -] +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro2" -version = "1.0.42" +version = "1.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c278e965f1d8cf32d6e0e96de3d3e79712178ae67986d9cf9151f51e95aac89b" +checksum = "1d0e1ae9e836cc3beddd63db0df682593d7e2d3d891ae8c9083d2113e1744224" dependencies = [ "unicode-ident", ] [[package]] name = "proc-mounts" -version = "0.2.4" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ad7e9c8d1b8c20f16a84d61d7c4c0325a5837c1307a2491b509cd92fb4e4442" +checksum = "0d652f8435d0ab70bf4f3590a6a851d59604831a458086541b95238cc51ffcf2" dependencies = [ - "lazy_static", "partition-identity", ] [[package]] name = "quote" -version = "1.0.20" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804" +checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" dependencies = [ "proc-macro2", ] @@ -1045,7 +1292,7 @@ checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha", - "rand_core 0.6.3", + "rand_core 0.6.4", ] [[package]] @@ -1055,7 +1302,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.3", + "rand_core 0.6.4", ] [[package]] @@ -1075,30 +1322,28 @@ checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" [[package]] name = "rand_core" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.7", + "getrandom 0.2.8", ] [[package]] name = "rayon" -version = "1.5.3" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" +checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" dependencies = [ - "autocfg", - "crossbeam-deque", "either", "rayon-core", ] [[package]] name = "rayon-core" -version = "1.9.3" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f" +checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -1119,7 +1364,7 @@ dependencies = [ name = "redox_cookbook" version = "0.1.0" dependencies = [ - "blake3 1.3.1", + "blake3 1.3.3", "pbr", "pkgar", "pkgar-keys", @@ -1127,20 +1372,25 @@ dependencies = [ "serde", "sha2", "termion", - "toml 0.5.9", + "toml 0.5.11", "walkdir", ] [[package]] name = "redox_installer" -version = "0.2.10" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "735a7bad71e93cda883318cf30f3bcd99830a79c7917e2b3d9da4c6d1d3567e4" +checksum = "e23ecfde5f5853d0e75f4da6d9403e8f1c478abd1417eb2f98ff66a7ff582942" dependencies = [ "arg_parser", "failure", + "fatfs", + "fscommon", + "gpt", "libc", "pkgar", + "pkgar-core", + "pkgar-keys", "rand 0.8.5", "redox_liner", "redox_pkgutils", @@ -1150,7 +1400,8 @@ dependencies = [ "serde", "serde_derive", "termion", - "toml 0.5.9", + "toml 0.5.11", + "uuid 0.8.2", ] [[package]] @@ -1196,9 +1447,9 @@ checksum = "c4e4404b4e54e59e7bb5f5236b61d8e822c2a77b2e955be8072002ff7ff8d69c" [[package]] name = "redox_syscall" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534cfe58d6a18cc17120fbf4635d53d14691c1fe4d951064df9bd326178d7d5a" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ "bitflags", ] @@ -1218,53 +1469,52 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.7", + "getrandom 0.2.8", "redox_syscall", "thiserror", ] [[package]] name = "redoxer" -version = "0.2.26" +version = "0.2.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08faba3230278adf0e4e5227ee61627f1bdcd7662450045df02fce0cb58cc22f" +checksum = "2141eba0ab86d8d6d9071cd788d05bee56c48796872394d4dbaeb213663ea4a4" dependencies = [ - "dirs 2.0.2", + "dirs 4.0.0", "proc-mounts", "redox_installer", "redox_syscall", "redoxfs", "tempfile", - "toml 0.5.9", + "toml 0.7.3", ] [[package]] name = "redoxfs" -version = "0.5.0" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd98e5e165138cdf4effae3a3be28a81931b013bc3758e33fccfcb37a4737652" +checksum = "393868ca3cb7239131ee6873144c8bfaa052953ac6e8f4f68ded0fc67b206fb3" dependencies = [ "aes", "argon2", "base64ct", "env_logger", - "fuse", - "getrandom 0.2.7", + "fuser", + "getrandom 0.2.8", "libc", - "log 0.4.17", "redox_simple_endian", "redox_syscall", "seahash", "termion", "time", - "uuid", + "uuid 0.5.1", ] [[package]] name = "regex" -version = "1.6.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" +checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" dependencies = [ "aho-corasick", "memchr", @@ -1273,18 +1523,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.27" +version = "0.6.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" - -[[package]] -name = "remove_dir_all" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" -dependencies = [ - "winapi", -] +checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" [[package]] name = "ring" @@ -1310,9 +1551,9 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" dependencies = [ - "base64 0.13.0", + "base64 0.13.1", "blake2b_simd", - "constant_time_eq", + "constant_time_eq 0.1.5", "crossbeam-utils", ] @@ -1322,6 +1563,20 @@ version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" +[[package]] +name = "rustix" +version = "0.36.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db4165c9963ab29e422d6c26fbc1d37f15bace6b2810221f9d925023480fcf0e" +dependencies = [ + "bitflags", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys", + "windows-sys 0.45.0", +] + [[package]] name = "rustls" version = "0.13.1" @@ -1336,12 +1591,6 @@ dependencies = [ "webpki", ] -[[package]] -name = "rustversion" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24c8ad4f0c00e1eb5bc7614d236a7f1300e3dbd76b68cac8e06fb00b015ad8d8" - [[package]] name = "safemem" version = "0.3.3" @@ -1363,6 +1612,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +[[package]] +name = "scratch" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" + [[package]] name = "sct" version = "0.4.0" @@ -1391,33 +1646,42 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.140" +version = "1.0.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc855a42c7967b7c369eb5860f7164ef1f6f81c20c7cc1141f2a604e18723b03" +checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.140" +version = "1.0.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f2122636b9fe3b81f1cb25099fcf2d3f542cdb1d45940d56c713158884a05da" +checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.4", +] + +[[package]] +name = "serde_spanned" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0efd8caf556a6cebd3b285caf480045fcc1ac04f6bd786b09a6f11af30c4fcf4" +dependencies = [ + "serde", ] [[package]] name = "sha2" -version = "0.10.2" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" +checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" dependencies = [ "cfg-if 1.0.0", "cpufeatures", - "digest 0.10.3", + "digest 0.10.6", ] [[package]] @@ -1433,6 +1697,12 @@ dependencies = [ "opaque-debug 0.2.3", ] +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" + [[package]] name = "sodiumoxide" version = "0.2.6" @@ -1457,9 +1727,20 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.98" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c622ae390c9302e214c31013517c2061ecb2699935882c60a9b37f82f8625ae" dependencies = [ "proc-macro2", "quote", @@ -1474,7 +1755,7 @@ checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", "unicode-xid", ] @@ -1497,23 +1778,22 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +checksum = "af18f7ae1acd354b992402e9ec5864359d693cd8a79dcbef59f76891701c1e95" dependencies = [ "cfg-if 1.0.0", "fastrand", - "libc", "redox_syscall", - "remove_dir_all", - "winapi", + "rustix", + "windows-sys 0.42.0", ] [[package]] name = "termcolor" -version = "1.1.3" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" dependencies = [ "winapi-util", ] @@ -1541,35 +1821,29 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.31" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" +checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.31" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" +checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.4", ] -[[package]] -name = "thread-scoped" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcbb6aa301e5d3b0b5ef639c9a9c7e2f1c944f177b460c04dc24c69b1fa2bd99" - [[package]] name = "time" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" dependencies = [ "libc", "wasi 0.10.0+wasi-snapshot-preview1", @@ -1587,9 +1861,9 @@ dependencies = [ [[package]] name = "tinyvec_macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "toml" @@ -1602,13 +1876,47 @@ dependencies = [ [[package]] name = "toml" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ "serde", ] +[[package]] +name = "toml" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b403acf6f2bb0859c93c7f0d967cb4a75a7ac552100f9322faf64dc047669b21" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc18466501acd8ac6a3f615dd29a3438f8ca6bb3b19537138b3106e575621274" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + [[package]] name = "traitobject" version = "0.1.0" @@ -1623,9 +1931,9 @@ checksum = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" [[package]] name = "typenum" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" [[package]] name = "unicase" @@ -1638,36 +1946,36 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.8" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.2" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c61ba63f9235225a22310255a29b806b907c9b8c964bcbd0a2c70f3f2deea7" +checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" [[package]] name = "unicode-normalization" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" dependencies = [ "tinyvec", ] [[package]] name = "unicode-width" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" [[package]] name = "unicode-xid" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" [[package]] name = "untrusted" @@ -1692,6 +2000,16 @@ version = "1.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07a91d0648d862a02d641c82292791accfe66d36df75d8149ebc9768f2e36863" +[[package]] +name = "users" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24cc0f6d6f267b73e5a2cadf007ba8f9bc39c6a6f9666f8cf25ea809a153b032" +dependencies = [ + "libc", + "log 0.4.17", +] + [[package]] name = "uuid" version = "0.5.1" @@ -1701,6 +2019,15 @@ dependencies = [ "rand 0.3.23", ] +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom 0.2.8", +] + [[package]] name = "vec_map" version = "0.8.2" @@ -1727,12 +2054,11 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "walkdir" -version = "2.3.2" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" dependencies = [ "same-file", - "winapi", "winapi-util", ] @@ -1754,6 +2080,60 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasm-bindgen" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +dependencies = [ + "bumpalo", + "log 0.4.17", + "once_cell", + "proc-macro2", + "quote", + "syn 1.0.109", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" + [[package]] name = "webpki" version = "0.18.1" @@ -1807,46 +2187,93 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-sys" -version = "0.36.1" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" dependencies = [ + "windows_aarch64_gnullvm", "windows_aarch64_msvc", "windows_i686_gnu", "windows_i686_msvc", "windows_x86_64_gnu", + "windows_x86_64_gnullvm", "windows_x86_64_msvc", ] [[package]] -name = "windows_aarch64_msvc" -version = "0.36.1" +name = "windows-sys" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_i686_gnu" -version = "0.36.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_msvc" -version = "0.36.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_x86_64_gnu" -version = "0.36.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_msvc" -version = "0.36.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "winnow" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d020b441f92996c80d94ae9166e8501e59c7bb56121189dc9eab3bd8216966" +dependencies = [ + "memchr", +] [[package]] name = "xattr" @@ -1856,3 +2283,24 @@ checksum = "6d1526bbe5aaeb5eb06885f4d987bcdfa5e23187055de9b83fe00156a821fabc" dependencies = [ "libc", ] + +[[package]] +name = "zerocopy" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "332f188cc1bcf1fe1064b8c58d150f497e697f49774aa846f2dc949d9a25f236" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6505e6815af7de1746a08f69c69606bb45695a17149517680f3b2149713b19a3" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] From d2b1009a33c36774fe356d22c03019e81cc684f0 Mon Sep 17 00:00:00 2001 From: Will Angenent Date: Mon, 3 Apr 2023 19:03:14 +0100 Subject: [PATCH 1060/3180] Update redoxer --- Cargo.lock | 243 +++++++++++++++++++++++++++++++++-------------------- Cargo.toml | 2 +- 2 files changed, 153 insertions(+), 92 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 39d44582..dd8b3c4a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -230,7 +230,7 @@ version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", ] [[package]] @@ -311,7 +311,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", ] [[package]] @@ -353,15 +353,15 @@ checksum = "13418e745008f7349ec7e449155f419a61b92b58a99cc3616942b926825ec76b" [[package]] name = "core-foundation-sys" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] name = "cpufeatures" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +checksum = "280a9f2d8b3a38871a3c8a46fb80db65e5e5ed97da80c4d08bf27fb63e35e181" dependencies = [ "libc", ] @@ -433,7 +433,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", "typenum", ] @@ -443,15 +443,15 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", "subtle", ] [[package]] name = "cxx" -version = "1.0.93" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c00419335c41018365ddf7e4d5f1c12ee3659ddcf3e01974650ba1de73d038" +checksum = "f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93" dependencies = [ "cc", "cxxbridge-flags", @@ -461,9 +461,9 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.93" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb8307ad413a98fff033c8545ecf133e3257747b3bae935e7602aab8aa92d4ca" +checksum = "12cee708e8962df2aeb38f594aae5d827c022b6460ac71a7a3e2c3c2aae5a07b" dependencies = [ "cc", "codespan-reporting", @@ -471,24 +471,24 @@ dependencies = [ "proc-macro2", "quote", "scratch", - "syn 2.0.4", + "syn 2.0.13", ] [[package]] name = "cxxbridge-flags" -version = "1.0.93" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edc52e2eb08915cb12596d29d55f0b5384f00d697a646dbd269b6ecb0fbd9d31" +checksum = "7944172ae7e4068c533afbb984114a56c46e9ccddda550499caa222902c7f7bb" [[package]] name = "cxxbridge-macro" -version = "1.0.93" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "631569015d0d8d54e6c241733f944042623ab6df7bc3be7466874b05fcdb1c5f" +checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.4", + "syn 2.0.13", ] [[package]] @@ -506,7 +506,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", ] [[package]] @@ -570,13 +570,13 @@ dependencies = [ [[package]] name = "errno" -version = "0.2.8" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" +checksum = "50d6a0976c999d473fe89ad888d5a284e55366d9dc9038b1ba2aa15128c4afa0" dependencies = [ "errno-dragonfly", "libc", - "winapi", + "windows-sys", ] [[package]] @@ -650,8 +650,8 @@ checksum = "8a3de6e8d11b22ff9edc6d916f890800597d60f8b2da1caf2955c274638d6412" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall", - "windows-sys 0.45.0", + "redox_syscall 0.2.16", + "windows-sys", ] [[package]] @@ -702,9 +702,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.6" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check 0.9.4", @@ -834,16 +834,16 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.53" +version = "0.1.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" +checksum = "0722cd7114b7de04316e7ea5456a0bbb20e4adb46fd27a3697adb812cff0f37c" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "winapi", + "windows", ] [[package]] @@ -869,9 +869,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.2" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown", @@ -894,7 +894,7 @@ checksum = "09270fd4fa1111bc614ed2246c7ef56239a3063d5be0d1ec3b589c505d400aeb" dependencies = [ "hermit-abi 0.3.1", "libc", - "windows-sys 0.45.0", + "windows-sys", ] [[package]] @@ -977,9 +977,9 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.1.4" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" +checksum = "d59d8c75012853d2e872fb56bc8a2e53718e2cafe1a4c823143141c6d90c322f" [[package]] name = "log" @@ -1028,7 +1028,7 @@ checksum = "0fa0916b001582d253822171bd23f4a0229d32b9507fae236f5da8cad515ba7c" dependencies = [ "getrandom 0.2.8", "libc", - "windows-sys 0.45.0", + "windows-sys", ] [[package]] @@ -1236,9 +1236,9 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro2" -version = "1.0.52" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d0e1ae9e836cc3beddd63db0df682593d7e2d3d891ae8c9083d2113e1744224" +checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" dependencies = [ "unicode-ident", ] @@ -1394,7 +1394,7 @@ dependencies = [ "rand 0.8.5", "redox_liner", "redox_pkgutils", - "redox_syscall", + "redox_syscall 0.2.16", "redoxfs", "rust-argon2", "serde", @@ -1454,13 +1454,22 @@ dependencies = [ "bitflags", ] +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags", +] + [[package]] name = "redox_termios" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8440d8acb4fd3d277125b4bd01a6f38aee8d814b3b5fc09b3f2b825d37d3fe8f" dependencies = [ - "redox_syscall", + "redox_syscall 0.2.16", ] [[package]] @@ -1470,20 +1479,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ "getrandom 0.2.8", - "redox_syscall", + "redox_syscall 0.2.16", "thiserror", ] [[package]] name = "redoxer" -version = "0.2.30" +version = "0.2.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2141eba0ab86d8d6d9071cd788d05bee56c48796872394d4dbaeb213663ea4a4" +checksum = "7830166975364d40bd409e987ae7e282cc82a5446761d9fddcf940c13734fc92" dependencies = [ "dirs 4.0.0", "proc-mounts", "redox_installer", - "redox_syscall", + "redox_syscall 0.2.16", "redoxfs", "tempfile", "toml 0.7.3", @@ -1491,19 +1500,20 @@ dependencies = [ [[package]] name = "redoxfs" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "393868ca3cb7239131ee6873144c8bfaa052953ac6e8f4f68ded0fc67b206fb3" +checksum = "0b8f67a8da4dcf9df428cdfeaa698e539daee56087fd6df5e733d5082a74ba9a" dependencies = [ "aes", "argon2", "base64ct", "env_logger", + "failure", "fuser", "getrandom 0.2.8", "libc", "redox_simple_endian", - "redox_syscall", + "redox_syscall 0.2.16", "seahash", "termion", "time", @@ -1512,9 +1522,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.7.1" +version = "1.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" +checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d" dependencies = [ "aho-corasick", "memchr", @@ -1523,9 +1533,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.28" +version = "0.6.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "ring" @@ -1559,22 +1569,22 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" +checksum = "d4a36c42d1873f9a77c53bde094f9664d9891bc604a45b4798fd2c389ed12e5b" [[package]] name = "rustix" -version = "0.36.11" +version = "0.37.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db4165c9963ab29e422d6c26fbc1d37f15bace6b2810221f9d925023480fcf0e" +checksum = "d097081ed288dfe45699b72f5b5d648e5f15d64d900c7080273baa20c16a6849" dependencies = [ "bitflags", "errno", "io-lifetimes", "libc", "linux-raw-sys", - "windows-sys 0.45.0", + "windows-sys", ] [[package]] @@ -1646,22 +1656,22 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.158" +version = "1.0.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9" +checksum = "3c04e8343c3daeec41f58990b9d77068df31209f2af111e059e9fe9646693065" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.158" +version = "1.0.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad" +checksum = "4c614d17805b093df4b147b51339e7e44bf05ef59fba1e45d83500bcfb4d8585" dependencies = [ "proc-macro2", "quote", - "syn 2.0.4", + "syn 2.0.13", ] [[package]] @@ -1738,9 +1748,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.4" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c622ae390c9302e214c31013517c2061ecb2699935882c60a9b37f82f8625ae" +checksum = "4c9da457c5285ac1f936ebd076af6dac17a61cfe7826f2076b4d015cf47bc8ec" dependencies = [ "proc-macro2", "quote", @@ -1778,15 +1788,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.4.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af18f7ae1acd354b992402e9ec5864359d693cd8a79dcbef59f76891701c1e95" +checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998" dependencies = [ "cfg-if 1.0.0", "fastrand", - "redox_syscall", + "redox_syscall 0.3.5", "rustix", - "windows-sys 0.42.0", + "windows-sys", ] [[package]] @@ -1806,7 +1816,7 @@ checksum = "077185e2eac69c3f8379a4298e1e07cd36beb962290d4a51199acf0fdc10607e" dependencies = [ "libc", "numtoa", - "redox_syscall", + "redox_syscall 0.2.16", "redox_termios", ] @@ -1836,7 +1846,7 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.4", + "syn 2.0.13", ] [[package]] @@ -1906,9 +1916,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.19.7" +version = "0.19.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc18466501acd8ac6a3f615dd29a3438f8ca6bb3b19537138b3106e575621274" +checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" dependencies = [ "indexmap", "serde", @@ -2186,18 +2196,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows-sys" -version = "0.42.0" +name = "windows" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows-targets 0.48.0", ] [[package]] @@ -2206,7 +2210,7 @@ version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" dependencies = [ - "windows-targets", + "windows-targets 0.42.2", ] [[package]] @@ -2215,13 +2219,28 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +dependencies = [ + "windows_aarch64_gnullvm 0.48.0", + "windows_aarch64_msvc 0.48.0", + "windows_i686_gnu 0.48.0", + "windows_i686_msvc 0.48.0", + "windows_x86_64_gnu 0.48.0", + "windows_x86_64_gnullvm 0.48.0", + "windows_x86_64_msvc 0.48.0", ] [[package]] @@ -2230,36 +2249,72 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + [[package]] name = "windows_aarch64_msvc" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + [[package]] name = "windows_i686_gnu" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + [[package]] name = "windows_i686_msvc" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + [[package]] name = "windows_x86_64_gnu" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + [[package]] name = "windows_x86_64_gnullvm" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -2267,10 +2322,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] -name = "winnow" -version = "0.3.6" +name = "windows_x86_64_msvc" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d020b441f92996c80d94ae9166e8501e59c7bb56121189dc9eab3bd8216966" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] +name = "winnow" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28" dependencies = [ "memchr", ] diff --git a/Cargo.toml b/Cargo.toml index 97f4359e..0a47f1f9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,7 @@ blake3 = "1" pbr = "1.0.2" pkgar = "0.1.7" pkgar-keys = "0.1.0" -redoxer = "0.2.25" +redoxer = "0.2.31" serde = { version = "1.0.110", features = ["derive"] } sha2 = "0.10" termion = "1.5.5" From a2cfd448b0b0dd0bf745b3728195b9c43d451e0f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 3 Apr 2023 14:12:03 -0600 Subject: [PATCH 1061/3180] Convert pkg-config to toml recipe format --- recipes/pkg-config/recipe.sh | 33 --------------------------------- recipes/pkg-config/recipe.toml | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 33 deletions(-) delete mode 100755 recipes/pkg-config/recipe.sh create mode 100755 recipes/pkg-config/recipe.toml diff --git a/recipes/pkg-config/recipe.sh b/recipes/pkg-config/recipe.sh deleted file mode 100755 index 50e549aa..00000000 --- a/recipes/pkg-config/recipe.sh +++ /dev/null @@ -1,33 +0,0 @@ -VERSION="0.29.2" -TAR="https://pkg-config.freedesktop.org/releases/pkg-config-${VERSION}.tar.gz" -BUILD_DEPENDS=(gettext glib libiconv pcre) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" - export LDFLAGS="--static" - ./configure \ - --build="${BUILD}" \ - --host="${HOST}" \ - --prefix="" \ - --disable-shared \ - --enable-static - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - export DESTDIR="$(realpath $1)" - "$REDOX_MAKE" install - rm -f "${DESTDIR}/lib/"*.la - skip=1 -} diff --git a/recipes/pkg-config/recipe.toml b/recipes/pkg-config/recipe.toml new file mode 100755 index 00000000..a9424146 --- /dev/null +++ b/recipes/pkg-config/recipe.toml @@ -0,0 +1,14 @@ +[source] +tar = "https://pkg-config.freedesktop.org/releases/pkg-config-0.29.2.tar.gz" +script = """ +wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +""" + +[build] +dependencies = [ + "gettext", + "glib", + "libiconv", + "pcre", +] +template = "configure" From ed33e340f2c19777408466b036851e198aa11fce Mon Sep 17 00:00:00 2001 From: Will Angenent Date: Tue, 4 Apr 2023 20:21:05 +0100 Subject: [PATCH 1062/3180] Use gfind in MacOS for use with -executable option --- config.sh | 3 +++ recipes/drivers/recipe.toml | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/config.sh b/config.sh index 7b2d34ae..f518e5ba 100755 --- a/config.sh +++ b/config.sh @@ -51,3 +51,6 @@ else FIND="find" STAT="stat"; fi + +export FIND +export STAT diff --git a/recipes/drivers/recipe.toml b/recipes/drivers/recipe.toml index 0491d652..9de067fd 100644 --- a/recipes/drivers/recipe.toml +++ b/recipes/drivers/recipe.toml @@ -9,7 +9,7 @@ script = """ --workspace mkdir -pv "${COOKBOOK_STAGE}/bin" -find "target/${TARGET}/release" \ +${FIND} "target/${TARGET}/release" \ -maxdepth 1 \ -executable \ -type f \ @@ -19,7 +19,7 @@ mkdir -pv "${COOKBOOK_STAGE}/etc/pcid" cp -v "${COOKBOOK_SOURCE}/initfs.toml" "${COOKBOOK_STAGE}/etc/pcid/initfs.toml" mkdir -pv "${COOKBOOK_STAGE}/etc/pcid.d" -find "${COOKBOOK_SOURCE}" -maxdepth 2 -type f -name 'config.toml' | while read conf +${FIND} "${COOKBOOK_SOURCE}" -maxdepth 2 -type f -name 'config.toml' | while read conf do driver="$(basename "$(dirname "$conf")")" cp -v "$conf" "${COOKBOOK_STAGE}/etc/pcid.d/$driver.toml" From a604a0663f612636e2903a77bf85d78d522da441 Mon Sep 17 00:00:00 2001 From: Will Angenent Date: Tue, 4 Apr 2023 20:29:04 +0100 Subject: [PATCH 1063/3180] Use more portable -c and -r options to touch --- repo.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/repo.sh b/repo.sh index f85b4da9..1ca42d99 100755 --- a/repo.sh +++ b/repo.sh @@ -48,7 +48,7 @@ do fi # Match pkgar and tar time - touch --no-create --reference="${COOKBOOK_STAGE}.tar.gz" "${COOKBOOK_STAGE}.pkgar" + touch -c -r "${COOKBOOK_STAGE}.tar.gz" "${COOKBOOK_STAGE}.pkgar" continue fi From 9eebc1577644d01799bd9ab345c9905c54c90da2 Mon Sep 17 00:00:00 2001 From: Will Angenent Date: Sat, 8 Apr 2023 15:22:38 +0100 Subject: [PATCH 1064/3180] Fix packaging in MacOS Setting CC= isn't enough in MacOS, AR and RANLIB also need replacing. Without this, bits are compiled for redox instead of the host leading to linker target mismatches. --- cook.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cook.sh b/cook.sh index f66e4f93..99d20102 100755 --- a/cook.sh +++ b/cook.sh @@ -23,15 +23,15 @@ fi if [ ! "$(uname -s)" = "Redox" ] then function docgen { - CC=cc cargo run --release --manifest-path "$ROOT/docgen/Cargo.toml" --bin docgen -- "$@" + CC=cc AR=ar RANLIB=ranlib cargo run --release --manifest-path "$ROOT/docgen/Cargo.toml" --bin docgen -- "$@" } function pkg { - CC=cc cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- "$@" + CC=cc AR=ar RANLIB=ranlib cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- "$@" } function pkgar { - CC=cc cargo run --release --manifest-path "$ROOT/pkgar/Cargo.toml" --bin pkgar -- "$@" + CC=cc AR=ar RANLIB=ranlib cargo run --release --manifest-path "$ROOT/pkgar/Cargo.toml" --bin pkgar -- "$@" } fi From 4a71973e95f91b13158610b7f6e5a2bc7d9ce394 Mon Sep 17 00:00:00 2001 From: Will Angenent Date: Sat, 15 Apr 2023 08:43:53 +0100 Subject: [PATCH 1065/3180] Use POSIX -R instead of -r in copy for better portability In MacOS, -r will exit with 1 if any broken symlinks are encountered. -r is "implementation-defined" according to POSIX. -R is well defined. --- cook.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cook.sh b/cook.sh index 99d20102..ba4a7a12 100755 --- a/cook.sh +++ b/cook.sh @@ -178,7 +178,7 @@ function op { then mkdir "${COOKBOOK_BUILD}" else - cp -rp source "${COOKBOOK_BUILD}" + cp -Rp source "${COOKBOOK_BUILD}" fi for patch in *.patch From 34d36bdadc2a62562ac0accb60a9d2f8a212af1b Mon Sep 17 00:00:00 2001 From: Will Angenent Date: Sat, 15 Apr 2023 08:54:08 +0100 Subject: [PATCH 1066/3180] Use relative path for which binary --- recipes/netsurf/01_redox.patch | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/recipes/netsurf/01_redox.patch b/recipes/netsurf/01_redox.patch index 6568f773..f200853b 100644 --- a/recipes/netsurf/01_redox.patch +++ b/recipes/netsurf/01_redox.patch @@ -84,3 +84,15 @@ diff -ruwN source/netsurf/utils/config.h source-new/netsurf/utils/config.h #undef HAVE_STRPTIME #undef HAVE_STRFTIME #else + diff -ruwN source/buildsystem/makefiles/Makefile.tools source-new/buildsystem/makefiles/Makefile.tools +--- source/buildsystem/makefiles/Makefile.tools 2023-04-15 08:48:37.000000000 +0100 ++++ source-new/buildsystem/makefiles/Makefile.tools 2023-04-15 08:48:37.000000000 +0100 +@@ -135,7 +135,7 @@ + endif + + # Search the path for the compiler +- toolpath_ := $(shell /bin/which $(CC__)) ++ toolpath_ := $(shell which $(CC__)) + ifeq ($(toolpath_),) + toolpath_ := /opt/netsurf/$(HOST)/cross/bin/ + CC__ := $(toolpath_)$(HOST)-gcc From 80aebb3aae2b8245c1ecdad10804ebbe7a96be52 Mon Sep 17 00:00:00 2001 From: Will Angenent Date: Sat, 15 Apr 2023 09:16:01 +0100 Subject: [PATCH 1067/3180] Remove non portable -T option in install --- recipes/netsurf/01_redox.patch | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/recipes/netsurf/01_redox.patch b/recipes/netsurf/01_redox.patch index f200853b..e5952314 100644 --- a/recipes/netsurf/01_redox.patch +++ b/recipes/netsurf/01_redox.patch @@ -96,3 +96,15 @@ diff -ruwN source/netsurf/utils/config.h source-new/netsurf/utils/config.h ifeq ($(toolpath_),) toolpath_ := /opt/netsurf/$(HOST)/cross/bin/ CC__ := $(toolpath_)$(HOST)-gcc +diff -ruwN source/netsurf/frontends/framebuffer/Makefile source-new/netsurf/frontends/framebuffer/Makefile +--- source/netsurf/frontends/framebuffer/Makefile 2020-05-24 22:35:23.000000000 +0100 ++++ source-new/netsurf/frontends/framebuffer/Makefile 2023-04-15 09:09:18.000000000 +0100 +@@ -222,7 +222,7 @@ + install-framebuffer: + $(VQ)echo " INSTALL: $(DESTDIR)/$(PREFIX)" + $(Q)$(INSTALL) -d $(DESTDIR)/$(NETSURF_FRAMEBUFFER_BIN) +- $(Q)$(INSTALL) -T $(EXETARGET) $(DESTDIR)/$(NETSURF_FRAMEBUFFER_BIN)/netsurf-fb ++ $(Q)$(INSTALL) $(EXETARGET) $(DESTDIR)/$(NETSURF_FRAMEBUFFER_BIN)/netsurf-fb + $(Q)$(INSTALL) -d $(DESTDIR)/$(NETSURF_FRAMEBUFFER_RESOURCES) + $(Q)for F in $(NETSURF_FRAMEBUFFER_RESOURCE_LIST); do $(INSTALL) -m 644 $(FRONTEND_RESOURCES_DIR)/$$F $(DESTDIR)/$(NETSURF_FRAMEBUFFER_RESOURCES); done + $(Q)$(RM) $(DESTDIR)/$(NETSURF_FRAMEBUFFER_RESOURCES)/Messages From 24cb51e1e241a223ae15ea706a754d351de836c2 Mon Sep 17 00:00:00 2001 From: Will Angenent Date: Tue, 18 Apr 2023 18:55:11 +0100 Subject: [PATCH 1068/3180] Fix autogenerated_colors.c build dependency for svgtiny.c --- recipes/netsurf/01_redox.patch | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/recipes/netsurf/01_redox.patch b/recipes/netsurf/01_redox.patch index e5952314..b672c980 100644 --- a/recipes/netsurf/01_redox.patch +++ b/recipes/netsurf/01_redox.patch @@ -108,3 +108,15 @@ diff -ruwN source/netsurf/frontends/framebuffer/Makefile source-new/netsurf/fron $(Q)$(INSTALL) -d $(DESTDIR)/$(NETSURF_FRAMEBUFFER_RESOURCES) $(Q)for F in $(NETSURF_FRAMEBUFFER_RESOURCE_LIST); do $(INSTALL) -m 644 $(FRONTEND_RESOURCES_DIR)/$$F $(DESTDIR)/$(NETSURF_FRAMEBUFFER_RESOURCES); done $(Q)$(RM) $(DESTDIR)/$(NETSURF_FRAMEBUFFER_RESOURCES)/Messages +diff -ruwN source/buildsystem/makefiles/Makefile.top source-new/buildsystem/makefiles/Makefile.top +--- source/buildsystem/makefiles/Makefile.top 2020-05-24 22:35:19.000000000 +0100 ++++ source-new/buildsystem/makefiles/Makefile.top 2023-04-18 18:50:10.000000000 +0100 +@@ -444,7 +444,7 @@ + + define build_c + ifeq ($$(findstring $$(BUILDDIR)/$2,$$(BUILDFILES)),) +- $$(BUILDDIR)/$2: $$(BUILDDIR)/stamp $1 ++ $$(BUILDDIR)/$2: $$(BUILDDIR)/stamp $1 | $$(PRE_TARGETS) + $$(VQ)$$(ECHO) $$(ECHOFLAGS) " COMPILE: $1" + $$(Q)$$(CC) -MMD -MP $$($3) -o $$@ -c $1 + From c09b723b7d51c1ec8a29d0313ede8130fd7db36f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 19 Apr 2023 10:02:34 -0600 Subject: [PATCH 1069/3180] Use tar for noto-color-emoji --- recipes/noto-color-emoji/recipe.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/noto-color-emoji/recipe.toml b/recipes/noto-color-emoji/recipe.toml index 7dce87ee..d04d1fdc 100644 --- a/recipes/noto-color-emoji/recipe.toml +++ b/recipes/noto-color-emoji/recipe.toml @@ -1,5 +1,6 @@ [source] -git = "https://github.com/googlefonts/noto-emoji.git" +tar = "https://github.com/googlefonts/noto-emoji/archive/refs/tags/v2.038.tar.gz" +blake3 = "68967033281403aaeb0de59a95343a3cc4a76cbc9c3384cec93f2d46ac71037f" [build] template = "custom" From 35c71e561fc1b96d1509ca69d62254e548ca745d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 19 Apr 2023 10:18:51 -0600 Subject: [PATCH 1070/3180] nghttp2: Add blake3 hash --- recipes/nghttp2/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/nghttp2/recipe.toml b/recipes/nghttp2/recipe.toml index 8ed503ed..1a06c70d 100644 --- a/recipes/nghttp2/recipe.toml +++ b/recipes/nghttp2/recipe.toml @@ -1,5 +1,6 @@ [source] tar = "https://github.com/nghttp2/nghttp2/releases/download/v1.50.0/nghttp2-1.50.0.tar.xz" +blake3 = "7d85ed39d4892cc6c7054277f2c637e95a68b1e0d8b298824d5ee93177d28584" [build] template = "custom" From d2b01cfcb0361eb7e7a426de94efadf67c0cae1e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 26 Apr 2023 11:44:10 -0600 Subject: [PATCH 1071/3180] Add nushell recipe (WIP) --- recipes/nushell/recipe.toml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 recipes/nushell/recipe.toml diff --git a/recipes/nushell/recipe.toml b/recipes/nushell/recipe.toml new file mode 100644 index 00000000..95e59a5f --- /dev/null +++ b/recipes/nushell/recipe.toml @@ -0,0 +1,16 @@ +#TODO: build fails to link, we need the following in relibc +# - cfmakeraw +# - getgrgid_r +# - getgrouplist +# Additionally, openssl fails to link fprintf and sscanf + +[source] +git = "https://github.com/jackpot51/nushell.git" +branch = "redox" + +[build] +dependencies = [ + "openssl" +] +template = "cargo" + From 480037ce56dcaaee4df3dab3ec0103f58c526002 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 27 Apr 2023 17:34:53 -0600 Subject: [PATCH 1072/3180] Update pkgar --- pkgar | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgar b/pkgar index 65f43a3b..7a316443 160000 --- a/pkgar +++ b/pkgar @@ -1 +1 @@ -Subproject commit 65f43a3bf955fde946bf4f976f044e4ffadc8912 +Subproject commit 7a316443046eef7cce87f62ccc5ea26e6fb33de2 From a6b9cb2080ed1b80a91c13466615c2f340d7939b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 28 Apr 2023 08:41:11 -0600 Subject: [PATCH 1073/3180] Update nghttp2 hash --- recipes/nghttp2/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/nghttp2/recipe.toml b/recipes/nghttp2/recipe.toml index 1a06c70d..ec652b1d 100644 --- a/recipes/nghttp2/recipe.toml +++ b/recipes/nghttp2/recipe.toml @@ -1,6 +1,6 @@ [source] tar = "https://github.com/nghttp2/nghttp2/releases/download/v1.50.0/nghttp2-1.50.0.tar.xz" -blake3 = "7d85ed39d4892cc6c7054277f2c637e95a68b1e0d8b298824d5ee93177d28584" +blake3 = "ac40e313ebb5fb341f82cec8daa4795673b27ff02061dfbf980ca1dbe8dc4115" [build] template = "custom" From dedf07c26c16d77987f5a8668d64e9128136e12b Mon Sep 17 00:00:00 2001 From: Ron Williams Date: Mon, 1 May 2023 00:16:37 -0700 Subject: [PATCH 1074/3180] gitoxide recipe --- recipes/gitoxide/recipe.toml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 recipes/gitoxide/recipe.toml diff --git a/recipes/gitoxide/recipe.toml b/recipes/gitoxide/recipe.toml new file mode 100644 index 00000000..b8d800b7 --- /dev/null +++ b/recipes/gitoxide/recipe.toml @@ -0,0 +1,14 @@ +# [source] +# git = "https://github.com/Byron/gitoxide.git" + +[build] +dependencies = [ + "openssl", +] +template = "custom" +script = """ +export OPENSSL_DIR=${COOKBOOK_ROOT}/recipes/openssl/target/${TARGET}/stage +export OPENSSL_STATIC="true" +cookbook_cargo +""" + From cfa82d21b35a734cf38dc2e3503fc09ed86034e1 Mon Sep 17 00:00:00 2001 From: Ron Williams Date: Mon, 1 May 2023 07:21:12 +0000 Subject: [PATCH 1075/3180] Uncomment source section --- recipes/gitoxide/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/gitoxide/recipe.toml b/recipes/gitoxide/recipe.toml index b8d800b7..a55b5da7 100644 --- a/recipes/gitoxide/recipe.toml +++ b/recipes/gitoxide/recipe.toml @@ -1,5 +1,5 @@ -# [source] -# git = "https://github.com/Byron/gitoxide.git" +[source] +git = "https://github.com/Byron/gitoxide.git" [build] dependencies = [ From 465bcfa8c89e4909bc06424c9d528dc5fb3daacd Mon Sep 17 00:00:00 2001 From: Andrew Mackenzie Date: Tue, 2 May 2023 22:13:01 +0000 Subject: [PATCH 1076/3180] remove blank line that causes parse error in launcher --- recipes/netsurf/manifest | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/netsurf/manifest b/recipes/netsurf/manifest index cded72b2..b671cb46 100644 --- a/recipes/netsurf/manifest +++ b/recipes/netsurf/manifest @@ -4,4 +4,3 @@ icon=/ui/icons/apps/internet-web-browser.png accept=*.html author=The Netsurf Developers description=Browser for Redox - From ac1913430ae203e04d0d95926568ac2a70df5045 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 5 May 2023 13:39:51 -0600 Subject: [PATCH 1077/3180] Update redoxer to 0.2.33 --- Cargo.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index dd8b3c4a..17c46c91 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1441,9 +1441,9 @@ dependencies = [ [[package]] name = "redox_simple_endian" -version = "0.2.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4e4404b4e54e59e7bb5f5236b61d8e822c2a77b2e955be8072002ff7ff8d69c" +checksum = "175b27da3d5db1502bd20ae0917ba132d256a2b169f1686681304ebb86504eab" [[package]] name = "redox_syscall" @@ -1485,9 +1485,9 @@ dependencies = [ [[package]] name = "redoxer" -version = "0.2.31" +version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7830166975364d40bd409e987ae7e282cc82a5446761d9fddcf940c13734fc92" +checksum = "72a79e1c4ca4927f7373903a079ceced8cffaee49e204e95d8b1e499683e67b7" dependencies = [ "dirs 4.0.0", "proc-mounts", @@ -1500,9 +1500,9 @@ dependencies = [ [[package]] name = "redoxfs" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b8f67a8da4dcf9df428cdfeaa698e539daee56087fd6df5e733d5082a74ba9a" +checksum = "ff0a3a5754ac84857d321cb53f3362bb43b2b5df27d2bba556d49625dfd75126" dependencies = [ "aes", "argon2", From 0770383e1844c87c64e7ba840c0e23efa651d5b7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 6 May 2023 08:07:03 -0600 Subject: [PATCH 1078/3180] Adjust bash patch for new relibc --- recipes/bash/redox.patch | 46 ++++++++++++++-------------------------- 1 file changed, 16 insertions(+), 30 deletions(-) diff --git a/recipes/bash/redox.patch b/recipes/bash/redox.patch index 50a789d9..bbd56e25 100644 --- a/recipes/bash/redox.patch +++ b/recipes/bash/redox.patch @@ -1,6 +1,6 @@ diff -ruwN source/bashline.c source-new/bashline.c ---- source/bashline.c 2016-08-05 19:44:05.000000000 -0600 -+++ source-new/bashline.c 2022-08-04 09:09:21.816427263 -0600 +--- source/bashline.c 2023-05-06 08:05:06.270133244 -0600 ++++ source-new/bashline.c 2023-05-06 08:05:11.402125204 -0600 @@ -2465,7 +2465,7 @@ const char *text; int state; @@ -11,8 +11,8 @@ diff -ruwN source/bashline.c source-new/bashline.c #else static char *gname = (char *)NULL; diff -ruwN source/builtins/ulimit.def source-new/builtins/ulimit.def ---- source/builtins/ulimit.def 2016-03-11 07:18:54.000000000 -0700 -+++ source-new/builtins/ulimit.def 2022-08-04 09:07:18.413033575 -0600 +--- source/builtins/ulimit.def 2023-05-06 08:05:06.246133282 -0600 ++++ source-new/builtins/ulimit.def 2023-05-06 08:05:11.406125198 -0600 @@ -598,7 +598,7 @@ } else @@ -23,8 +23,8 @@ diff -ruwN source/builtins/ulimit.def source-new/builtins/ulimit.def return -1; # if defined (HPUX9) diff -ruwN source/config-top.h source-new/config-top.h ---- source/config-top.h 2016-05-19 12:34:02.000000000 -0600 -+++ source-new/config-top.h 2022-08-04 09:07:18.413033575 -0600 +--- source/config-top.h 2023-05-06 08:05:06.266133250 -0600 ++++ source-new/config-top.h 2023-05-06 08:05:11.406125198 -0600 @@ -63,14 +63,14 @@ /* The default value of the PATH variable. */ #ifndef DEFAULT_PATH_VALUE @@ -43,8 +43,8 @@ diff -ruwN source/config-top.h source-new/config-top.h /* Default primary and secondary prompt strings. */ diff -ruwN source/configure.ac source-new/configure.ac ---- source/configure.ac 2016-09-07 14:56:28.000000000 -0600 -+++ source-new/configure.ac 2022-08-04 09:07:18.413033575 -0600 +--- source/configure.ac 2023-05-06 08:05:06.266133250 -0600 ++++ source-new/configure.ac 2023-05-06 08:05:11.406125198 -0600 @@ -90,6 +90,7 @@ *-opennt*|*-interix*) opt_bash_malloc=no ;; # Interix, now owned by Microsoft *-nsk*) opt_bash_malloc=no ;; # HP NonStop @@ -54,8 +54,8 @@ diff -ruwN source/configure.ac source-new/configure.ac # memory scrambling on free() diff -ruwN source/execute_cmd.c source-new/execute_cmd.c ---- source/execute_cmd.c 2016-08-26 05:10:08.000000000 -0600 -+++ source-new/execute_cmd.c 2022-08-04 09:07:18.413033575 -0600 +--- source/execute_cmd.c 2023-05-06 08:05:06.270133244 -0600 ++++ source-new/execute_cmd.c 2023-05-06 08:05:11.406125198 -0600 @@ -1335,15 +1335,17 @@ nullcmd = (command == 0) || (command->type == cm_simple && command->value.Simple->words == 0 && command->value.Simple->redirects == 0); if (posixly_correct && nullcmd) @@ -76,8 +76,8 @@ diff -ruwN source/execute_cmd.c source-new/execute_cmd.c old_flags = command->flags; diff -ruwN source/general.c source-new/general.c ---- source/general.c 2016-08-11 09:16:56.000000000 -0600 -+++ source-new/general.c 2022-08-04 09:07:18.413033575 -0600 +--- source/general.c 2023-05-06 08:05:06.266133250 -0600 ++++ source-new/general.c 2023-05-06 08:05:11.406125198 -0600 @@ -476,6 +476,7 @@ void check_dev_tty () @@ -108,8 +108,8 @@ diff -ruwN source/general.c source-new/general.c *p_index = i; diff -ruwN source/include/posixwait.h source-new/include/posixwait.h ---- source/include/posixwait.h 2008-08-12 08:03:03.000000000 -0600 -+++ source-new/include/posixwait.h 2022-08-04 09:07:18.413033575 -0600 +--- source/include/posixwait.h 2023-05-06 08:05:06.250133275 -0600 ++++ source-new/include/posixwait.h 2023-05-06 08:05:11.406125198 -0600 @@ -34,7 +34,7 @@ /* How to get the status of a job. For Posix, this is just an @@ -129,8 +129,8 @@ diff -ruwN source/include/posixwait.h source-new/include/posixwait.h # if !defined (WSTOPSIG) # define WSTOPSIG(s) ((s) >> 8) diff -ruwN source/lib/sh/getcwd.c source-new/lib/sh/getcwd.c ---- source/lib/sh/getcwd.c 2012-03-10 08:48:50.000000000 -0700 -+++ source-new/lib/sh/getcwd.c 2022-08-04 09:07:18.413033575 -0600 +--- source/lib/sh/getcwd.c 2023-05-06 08:05:06.254133269 -0600 ++++ source-new/lib/sh/getcwd.c 2023-05-06 08:05:11.406125198 -0600 @@ -20,7 +20,7 @@ #include @@ -140,17 +140,3 @@ diff -ruwN source/lib/sh/getcwd.c source-new/lib/sh/getcwd.c #if !defined (__GNUC__) && !defined (HAVE_ALLOCA_H) && defined (_AIX) #pragma alloca -diff -ruwN source/sig.c source-new/sig.c ---- source/sig.c 2016-02-11 13:02:45.000000000 -0700 -+++ source-new/sig.c 2022-08-04 09:07:18.413033575 -0600 -@@ -680,7 +680,9 @@ - } - - /* Signal functions used by the rest of the code. */ --#if !defined (HAVE_POSIX_SIGNALS) -+#if defined(__redox__) -+// Redox already has sigprocmask -+#elif !defined (HAVE_POSIX_SIGNALS) - - /* Perform OPERATION on NEWSET, perhaps leaving information in OLDSET. */ - sigprocmask (operation, newset, oldset) From 0d62bf40e120cf8acfd14934ab55ffede5d15cc4 Mon Sep 17 00:00:00 2001 From: Andrew Mackenzie Date: Sat, 6 May 2023 18:37:38 +0000 Subject: [PATCH 1079/3180] Aarch64 drivers build --- Cargo.lock | 151 +++++++++++++++++++++--------------- Cargo.toml | 2 +- recipes/drivers/recipe.toml | 39 +++++++++- 3 files changed, 124 insertions(+), 68 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 17c46c91..2a354c46 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -37,9 +37,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "0.7.20" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04" dependencies = [ "memchr", ] @@ -250,9 +250,9 @@ checksum = "b4ae4235e6dac0694637c763029ecea1a2ec9e4e06ec2729bd21ba4d9c863eb7" [[package]] name = "bumpalo" -version = "3.12.0" +version = "3.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" +checksum = "9b1ce199063694f33ffb7dd4e0ee620741495c32833cde5aa08f02a0bf96f0c8" [[package]] name = "byte-tools" @@ -359,9 +359,9 @@ checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] name = "cpufeatures" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "280a9f2d8b3a38871a3c8a46fb80db65e5e5ed97da80c4d08bf27fb63e35e181" +checksum = "3e4c1eaa2012c47becbbad2ab175484c2a84d1185b566fb2cc5b8707343dfe58" dependencies = [ "libc", ] @@ -386,9 +386,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -471,7 +471,7 @@ dependencies = [ "proc-macro2", "quote", "scratch", - "syn 2.0.13", + "syn 2.0.15", ] [[package]] @@ -488,7 +488,7 @@ checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.13", + "syn 2.0.15", ] [[package]] @@ -549,6 +549,15 @@ dependencies = [ "winapi", ] +[[package]] +name = "ed25519" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +dependencies = [ + "signature", +] + [[package]] name = "either" version = "1.8.1" @@ -570,13 +579,13 @@ dependencies = [ [[package]] name = "errno" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d6a0976c999d473fe89ad888d5a284e55366d9dc9038b1ba2aa15128c4afa0" +checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" dependencies = [ "errno-dragonfly", "libc", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -644,14 +653,14 @@ dependencies = [ [[package]] name = "filetime" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a3de6e8d11b22ff9edc6d916f890800597d60f8b2da1caf2955c274638d6412" +checksum = "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153" dependencies = [ "cfg-if 1.0.0", "libc", "redox_syscall 0.2.16", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -723,9 +732,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" dependencies = [ "cfg-if 1.0.0", "libc", @@ -888,13 +897,13 @@ dependencies = [ [[package]] name = "io-lifetimes" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09270fd4fa1111bc614ed2246c7ef56239a3063d5be0d1ec3b589c505d400aeb" +checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" dependencies = [ "hermit-abi 0.3.1", "libc", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -917,9 +926,9 @@ dependencies = [ [[package]] name = "keccak" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3afef3b6eff9ce9d8ff9b3601125eec7f0c8cbac7abd14f355d053fa56c98768" +checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" dependencies = [ "cpufeatures", ] @@ -938,9 +947,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.140" +version = "0.2.142" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" +checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317" [[package]] name = "libflate" @@ -977,9 +986,9 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.3.1" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59d8c75012853d2e872fb56bc8a2e53718e2cafe1a4c823143141c6d90c322f" +checksum = "ece97ea872ece730aed82664c424eb4c8291e1ff2480247ccf7409044bc6479f" [[package]] name = "log" @@ -1026,9 +1035,9 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa0916b001582d253822171bd23f4a0229d32b9507fae236f5da8cad515ba7c" dependencies = [ - "getrandom 0.2.8", + "getrandom 0.2.9", "libc", - "windows-sys", + "windows-sys 0.45.0", ] [[package]] @@ -1171,15 +1180,15 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "pkgar" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4ae35c230411d75d887500217f7db5890ac918d4f2deddaa1a7b6435df18bdb" +checksum = "5ee1b29428b2ef5504069dc72473638ed17bb38952cde3f7ac0ce064547949ea" dependencies = [ "blake3 0.3.8", "clap", @@ -1193,9 +1202,9 @@ dependencies = [ [[package]] name = "pkgar-core" -version = "0.1.0" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c79d8984e1dae9d1bfc30b90ead1d5279b90da97c1e566da6ff2d087f03ee02" +checksum = "0a6e0af74b5c0a43011e56c729d87b8f7570611ce12e45ddb5c72b88e9512083" dependencies = [ "bitflags", "blake3 0.3.8", @@ -1205,9 +1214,9 @@ dependencies = [ [[package]] name = "pkgar-keys" -version = "0.1.0" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23c2343ced644887eedccd945bd629af7bb834159937f20a2a72fc35e525fe70" +checksum = "a953d6903e6948b702454c0fa571e90494a9664df6fb9e28aad7b1fbf3d2ca86" dependencies = [ "clap", "dirs 3.0.2", @@ -1326,7 +1335,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.8", + "getrandom 0.2.9", ] [[package]] @@ -1478,7 +1487,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.8", + "getrandom 0.2.9", "redox_syscall 0.2.16", "thiserror", ] @@ -1510,7 +1519,7 @@ dependencies = [ "env_logger", "failure", "fuser", - "getrandom 0.2.8", + "getrandom 0.2.9", "libc", "redox_simple_endian", "redox_syscall 0.2.16", @@ -1522,9 +1531,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.7.3" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d" +checksum = "af83e617f331cc6ae2da5443c602dfa5af81e517212d9d611a5b3ba1777b5370" dependencies = [ "aho-corasick", "memchr", @@ -1533,9 +1542,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.29" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" +checksum = "a5996294f19bd3aae0453a862ad728f60e6600695733dd5df01da90c54363a3c" [[package]] name = "ring" @@ -1569,22 +1578,22 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a36c42d1873f9a77c53bde094f9664d9891bc604a45b4798fd2c389ed12e5b" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustix" -version = "0.37.6" +version = "0.37.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d097081ed288dfe45699b72f5b5d648e5f15d64d900c7080273baa20c16a6849" +checksum = "acf8729d8542766f1b2cf77eb034d52f40d375bb8b615d0b147089946e16613d" dependencies = [ "bitflags", "errno", "io-lifetimes", "libc", "linux-raw-sys", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -1656,22 +1665,22 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.159" +version = "1.0.162" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c04e8343c3daeec41f58990b9d77068df31209f2af111e059e9fe9646693065" +checksum = "71b2f6e1ab5c2b98c05f0f35b236b22e8df7ead6ffbf51d7808da7f8817e7ab6" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.159" +version = "1.0.162" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c614d17805b093df4b147b51339e7e44bf05ef59fba1e45d83500bcfb4d8585" +checksum = "a2a0814352fd64b58489904a44ea8d90cb1a91dcb6b4f5ebabc32c8318e93cb6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.13", + "syn 2.0.15", ] [[package]] @@ -1707,6 +1716,12 @@ dependencies = [ "opaque-debug 0.2.3", ] +[[package]] +name = "signature" +version = "1.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" + [[package]] name = "smallvec" version = "1.10.0" @@ -1715,10 +1730,11 @@ checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] name = "sodiumoxide" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7038b67c941e23501573cb7242ffb08709abe9b11eb74bceff875bbda024a6a8" +checksum = "e26be3acb6c2d9a7aac28482586a7856436af4cfe7100031d219de2d2ecb0028" dependencies = [ + "ed25519", "libc", "libsodium-sys", ] @@ -1748,9 +1764,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.13" +version = "2.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c9da457c5285ac1f936ebd076af6dac17a61cfe7826f2076b4d015cf47bc8ec" +checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822" dependencies = [ "proc-macro2", "quote", @@ -1796,7 +1812,7 @@ dependencies = [ "fastrand", "redox_syscall 0.3.5", "rustix", - "windows-sys", + "windows-sys 0.45.0", ] [[package]] @@ -1846,7 +1862,7 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.13", + "syn 2.0.15", ] [[package]] @@ -2035,7 +2051,7 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom 0.2.8", + "getrandom 0.2.9", ] [[package]] @@ -2213,6 +2229,15 @@ dependencies = [ "windows-targets 0.42.2", ] +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.0", +] + [[package]] name = "windows-targets" version = "0.42.2" @@ -2329,9 +2354,9 @@ checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" [[package]] name = "winnow" -version = "0.4.1" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28" +checksum = "61de7bac303dc551fe038e2b3cef0f571087a47571ea6e79a87692ac99b99699" dependencies = [ "memchr", ] diff --git a/Cargo.toml b/Cargo.toml index 0a47f1f9..1a6ebecc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,7 @@ blake3 = "1" pbr = "1.0.2" pkgar = "0.1.7" pkgar-keys = "0.1.0" -redoxer = "0.2.31" +redoxer = "0.2" serde = { version = "1.0.110", features = ["derive"] } sha2 = "0.10" termion = "1.5.5" diff --git a/recipes/drivers/recipe.toml b/recipes/drivers/recipe.toml index 9de067fd..9dc2d05f 100644 --- a/recipes/drivers/recipe.toml +++ b/recipes/drivers/recipe.toml @@ -4,9 +4,40 @@ git = "https://gitlab.redox-os.org/redox-os/drivers.git" [build] template = "custom" script = """ -"${COOKBOOK_CARGO}" build --release \ - --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ - --workspace +# Drivers that are built on all architectures, and NOT in drivers-initfs +BINS=( alxd + e1000d + ihdad + ixgbed + rtl8168d + usbctl + usbhidd + usbscsid + xhcid +) + +# Add additional drivers to the list to build, that are not in drivers-initfs +# depending on the target architecture +case "${TARGET}" in + i686-unknown-redox | x86_64-unknown-redox) + BINS+=(ac97d bgad pcid pcspkrd sb16d vboxd) + ;; + *) + ;; +esac + +#Build each driver in the list +mkdir -pv "${COOKBOOK_STAGE}/bin" +for bin in "${BINS[@]}" +do + "${COOKBOOK_CARGO}" rustc --release \ + --manifest-path "${COOKBOOK_SOURCE}/${bin}/Cargo.toml" \ + --bin "${bin}" \ + -- \ + -C opt-level=s \ + -C panic=abort + cp -v "target/${TARGET}/release/${bin}" "${COOKBOOK_STAGE}/bin" +done mkdir -pv "${COOKBOOK_STAGE}/bin" ${FIND} "target/${TARGET}/release" \ @@ -24,4 +55,4 @@ do driver="$(basename "$(dirname "$conf")")" cp -v "$conf" "${COOKBOOK_STAGE}/etc/pcid.d/$driver.toml" done -""" +""" \ No newline at end of file From 3ea12132db5be16dfaf5334d8ed289632e7ff7d8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 8 May 2023 08:13:35 -0600 Subject: [PATCH 1080/3180] nushell: fix openssl linking issue --- recipes/nushell/recipe.toml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/recipes/nushell/recipe.toml b/recipes/nushell/recipe.toml index 95e59a5f..27c9c8d6 100644 --- a/recipes/nushell/recipe.toml +++ b/recipes/nushell/recipe.toml @@ -1,5 +1,4 @@ #TODO: build fails to link, we need the following in relibc -# - cfmakeraw # - getgrgid_r # - getgrouplist # Additionally, openssl fails to link fprintf and sscanf @@ -12,5 +11,10 @@ branch = "redox" dependencies = [ "openssl" ] -template = "cargo" +template = "custom" +script = """ +export OPENSSL_DIR="${COOKBOOK_SYSROOT}" +export OPENSSL_STATIC="true" +cookbook_cargo +""" From 2bb5ff61a4fb3351d2decc9b380c0bca251bd96d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 8 May 2023 08:13:47 -0600 Subject: [PATCH 1081/3180] gitoxide: set correct openssl directory --- recipes/gitoxide/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/gitoxide/recipe.toml b/recipes/gitoxide/recipe.toml index a55b5da7..4a531c08 100644 --- a/recipes/gitoxide/recipe.toml +++ b/recipes/gitoxide/recipe.toml @@ -7,7 +7,7 @@ dependencies = [ ] template = "custom" script = """ -export OPENSSL_DIR=${COOKBOOK_ROOT}/recipes/openssl/target/${TARGET}/stage +export OPENSSL_DIR="${COOKBOOK_SYSROOT}" export OPENSSL_STATIC="true" cookbook_cargo """ From 69f4234839ee085199eb53000faea8749086c79f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 11 May 2023 16:20:01 -0600 Subject: [PATCH 1082/3180] sdl, sdl2: Do not require semaphore --- recipes/sdl/recipe.toml | 5 +++-- recipes/sdl2/recipe.toml | 15 ++++++++------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/recipes/sdl/recipe.toml b/recipes/sdl/recipe.toml index f7cd34fe..a5a07bfc 100644 --- a/recipes/sdl/recipe.toml +++ b/recipes/sdl/recipe.toml @@ -8,11 +8,12 @@ dependencies = [ ] script = """ COOKBOOK_CONFIGURE_FLAGS+=( + --disable-loadso + --disable-pthread-sem --disable-pulseaudio --disable-video-x11 - --disable-loadso - --enable-redoxaudio --enable-clock_gettime + --enable-redoxaudio --enable-video-orbital ) cookbook_configure diff --git a/recipes/sdl2/recipe.toml b/recipes/sdl2/recipe.toml index c1720145..13916e43 100644 --- a/recipes/sdl2/recipe.toml +++ b/recipes/sdl2/recipe.toml @@ -12,17 +12,18 @@ script = """ COOKBOOK_CONFIGURE_FLAGS=( --host="${TARGET}" --prefix="/" - --disable-shared - --disable-pulseaudio - --disable-video-x11 --disable-loadso + --disable-pthread-sem + --disable-pulseaudio --disable-sdl-dlopen - --enable-threads + --disable-shared + --disable-video-x11 --enable-audio - --enable-dummyaudio - --enable-video-orbital - --enable-redoxaudio --enable-cdrom + --enable-dummyaudio + --enable-redoxaudio + --enable-threads + --enable-video-orbital ) cookbook_configure From e6a2263a9f97569e5439084a40ec02664b02988a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 17 May 2023 09:19:21 -0600 Subject: [PATCH 1083/3180] Recipe updates from https://gitlab.redox-os.org/hatred_45/cookbook/ --- recipes/autoconf/recipe.sh | 4 +- recipes/automake/recipe.sh | 4 +- recipes/bash/recipe.toml | 3 ++ recipes/dosbox/recipe.sh | 2 +- recipes/duktape/recipe.sh | 4 +- recipes/expat/recipe.toml | 6 ++- recipes/ffmpeg/recipe.toml | 3 ++ recipes/fontconfig/recipe.toml | 5 ++- recipes/freetype/recipe.toml | 6 ++- recipes/fribidi/recipe.sh | 4 +- recipes/gettext/recipe.toml | 5 ++- recipes/harfbuzz/recipe.toml | 6 ++- recipes/libffi/recipe.toml | 3 ++ recipes/libgmp/recipe.toml | 2 +- recipes/libiconv/recipe.toml | 3 ++ recipes/libjpeg/recipe.toml | 4 +- recipes/libogg/recipe.toml | 2 + recipes/libpng/recipe.toml | 5 ++- recipes/libvorbis/recipe.toml | 7 ++-- recipes/mednafen/recipe.toml | 1 + recipes/ncurses/recipe.sh | 4 +- recipes/nghttp2/recipe.toml | 7 ++-- recipes/noto-color-emoji/recipe.toml | 5 +-- recipes/patch/recipe.sh | 4 +- recipes/pcre/recipe.toml | 1 + recipes/perg/recipe.toml | 2 +- recipes/pixman/recipe.sh | 2 +- recipes/pkg-config/recipe.toml | 3 ++ recipes/readline/recipe.toml | 3 ++ recipes/xz/01-no-poll.patch | 55 ---------------------------- recipes/xz/02-o_noctty.patch | 14 ------- recipes/xz/03-no-signals.patch | 47 ------------------------ recipes/xz/recipe.toml | 5 ++- recipes/zlib/recipe.toml | 7 ++-- 34 files changed, 82 insertions(+), 156 deletions(-) delete mode 100644 recipes/xz/01-no-poll.patch delete mode 100644 recipes/xz/02-o_noctty.patch delete mode 100644 recipes/xz/03-no-signals.patch diff --git a/recipes/autoconf/recipe.sh b/recipes/autoconf/recipe.sh index 7a4c251c..750349aa 100644 --- a/recipes/autoconf/recipe.sh +++ b/recipes/autoconf/recipe.sh @@ -1,5 +1,5 @@ -VERSION=2.69 -TAR=http://ftp.gnu.org/gnu/autoconf/autoconf-$VERSION.tar.xz +VERSION=2.71 +TAR=https://ftp.gnu.org/gnu/autoconf/autoconf-$VERSION.tar.xz function recipe_version { echo "$VERSION" diff --git a/recipes/automake/recipe.sh b/recipes/automake/recipe.sh index e93706dc..22776f81 100644 --- a/recipes/automake/recipe.sh +++ b/recipes/automake/recipe.sh @@ -1,5 +1,5 @@ -VERSION=1.15 -TAR=http://ftp.gnu.org/gnu/automake/automake-$VERSION.tar.xz +VERSION=1.16.5 +TAR=https://ftp.gnu.org/gnu/automake/automake-$VERSION.tar.xz function recipe_version { echo "$VERSION" diff --git a/recipes/bash/recipe.toml b/recipes/bash/recipe.toml index e06cc7fa..198bff9d 100644 --- a/recipes/bash/recipe.toml +++ b/recipes/bash/recipe.toml @@ -1,5 +1,8 @@ [source] +#git = "https://git.savannah.gnu.org/git/bash.git" +#rev = "a0c0a00fc419b7bc08202a79134fcd5bc0427071" tar = "http://ftp.gnu.org/gnu/bash/bash-4.4.tar.gz" +blake3 = "926927c370142cffa37dfc0a310ec386493b8b558ff3cc062376898154bc7ccb" patches = [ "redox.patch" ] diff --git a/recipes/dosbox/recipe.sh b/recipes/dosbox/recipe.sh index 3cbeabf5..8aa594ea 100644 --- a/recipes/dosbox/recipe.sh +++ b/recipes/dosbox/recipe.sh @@ -1,4 +1,4 @@ -VERSION=0.74 +VERSION=0.74-3 TAR=https://sourceforge.net/projects/dosbox/files/dosbox/$VERSION/dosbox-$VERSION.tar.gz/download BUILD_DEPENDS=(sdl liborbital) diff --git a/recipes/duktape/recipe.sh b/recipes/duktape/recipe.sh index 73331707..30beb776 100644 --- a/recipes/duktape/recipe.sh +++ b/recipes/duktape/recipe.sh @@ -1,5 +1,5 @@ -VERSION=2.2.0 -TAR=http://duktape.org/duktape-$VERSION.tar.xz +VERSION=2.7.0 +TAR=https://duktape.org/duktape-$VERSION.tar.xz function recipe_version { echo "$VERSION" diff --git a/recipes/expat/recipe.toml b/recipes/expat/recipe.toml index 7f5cd3ae..718d1376 100644 --- a/recipes/expat/recipe.toml +++ b/recipes/expat/recipe.toml @@ -1,6 +1,8 @@ [source] -tar = "https://github.com/libexpat/libexpat/releases/download/R_2_2_6/expat-2.2.6.tar.bz2" - +#git = "https://github.com/libexpat/libexpat" +#rev = "654d2de0da85662fcc7644a7acd7c2dd2cfb21f0" +tar = "https://github.com/libexpat/libexpat/releases/download/R_2_5_0/expat-2.5.0.tar.xz" +blake3 = "ea89dd9a5a2e48d5e44fed38554b36a8f2e365a5091a99d08e30bfb1c15dda5e" [build] template = "custom" script = """ diff --git a/recipes/ffmpeg/recipe.toml b/recipes/ffmpeg/recipe.toml index 49a6e873..e7ee861e 100644 --- a/recipes/ffmpeg/recipe.toml +++ b/recipes/ffmpeg/recipe.toml @@ -1,5 +1,8 @@ [source] +#git = "https://git.ffmpeg.org/ffmpeg.git" +#rev = "eacfcbae690f914a4b1b4ad06999f138540cc3d8" tar = "https://ffmpeg.org/releases/ffmpeg-5.1.2.tar.xz" +blake3 = "69fddb793c6b4fb6fd1093e54c8228c3c498614be3e48c311bb3f609a12daf5f" patches = [ "ffmpeg.patch" ] diff --git a/recipes/fontconfig/recipe.toml b/recipes/fontconfig/recipe.toml index 055e18f8..b230274b 100755 --- a/recipes/fontconfig/recipe.toml +++ b/recipes/fontconfig/recipe.toml @@ -1,5 +1,8 @@ [source] -tar = "https://www.freedesktop.org/software/fontconfig/release/fontconfig-2.13.91.tar.xz" +#git = "https://gitlab.freedesktop.org/fontconfig/fontconfig" +#rev = "a919700fbde28c29ccdb1d2a8bceba80ade19e73" +tar = "https://www.freedesktop.org/software/fontconfig/release/fontconfig-2.14.2.tar.xz" +blake3 = "dc342745b8e19ecda458464a9df7cf1266d0af759b230d07f43964b34ca86581" patches = [ "redox.patch" ] diff --git a/recipes/freetype/recipe.toml b/recipes/freetype/recipe.toml index ce535b7c..8b027d15 100644 --- a/recipes/freetype/recipe.toml +++ b/recipes/freetype/recipe.toml @@ -1,6 +1,8 @@ [source] -tar = "https://download.savannah.gnu.org/releases/freetype/freetype-2.9.1.tar.gz" - +#git = "https://gitlab.freedesktop.org/freetype/freetype" +#rev = "de8b92dd7ec634e9e2b25ef534c54a3537555c11" +tar = "https://download.savannah.gnu.org/releases/freetype/freetype-2.13.0.tar.gz" +blake3 = "8bf2db46b2a406d63da15d65b12ff986c6ac9a62cc10d429b03b4db58ea78f35" [build] template = "configure" dependencies = [ diff --git a/recipes/fribidi/recipe.sh b/recipes/fribidi/recipe.sh index 33e5eaec..3cf59522 100755 --- a/recipes/fribidi/recipe.sh +++ b/recipes/fribidi/recipe.sh @@ -1,5 +1,5 @@ -VERSION="1.0.5" -TAR="https://github.com/fribidi/fribidi/releases/download/v${VERSION}/fribidi-${VERSION}.tar.bz2" +VERSION="1.0.13" +TAR="https://github.com/fribidi/fribidi/releases/download/v${VERSION}/fribidi-${VERSION}.tar.xz" BUILD_DEPENDS=() function recipe_version { diff --git a/recipes/gettext/recipe.toml b/recipes/gettext/recipe.toml index 3c653274..d22a5321 100644 --- a/recipes/gettext/recipe.toml +++ b/recipes/gettext/recipe.toml @@ -1,5 +1,8 @@ [source] -tar = "http://ftp.gnu.org/pub/gnu/gettext/gettext-0.19.8.1.tar.xz" +#git = "https://git.savannah.gnu.org/git/gettext.git" +#rev = "c737bf843616ca984c9416048a2da845e9ad3f50" +tar = "https://ftp.gnu.org/pub/gnu/gettext/gettext-0.21.1.tar.gz" +blake3 = "0d0af5a79978fbeac4641ee64480943650af99f70467353e7c3068ffd5523acd" patches = [ "redox.patch" ] diff --git a/recipes/harfbuzz/recipe.toml b/recipes/harfbuzz/recipe.toml index f0e35352..f84afeaf 100644 --- a/recipes/harfbuzz/recipe.toml +++ b/recipes/harfbuzz/recipe.toml @@ -1,6 +1,8 @@ [source] -tar = "https://www.freedesktop.org/software/harfbuzz/release/harfbuzz-2.3.0.tar.bz2" - +#git = "https://github.com/harfbuzz/harfbuzz" +#rev = "4941e95f10fe0fe658752134a42b58896fb19c42" +tar = "https://github.com/harfbuzz/harfbuzz/releases/download/7.3.0/harfbuzz-7.3.0.tar.xz" +blake3 = "6572676ffef55bd37bacdd33052bedfb07333b659371495a2a26b9825ce685c0" [build] template = "custom" dependencies = [ diff --git a/recipes/libffi/recipe.toml b/recipes/libffi/recipe.toml index cebe71c4..57436905 100644 --- a/recipes/libffi/recipe.toml +++ b/recipes/libffi/recipe.toml @@ -1,5 +1,8 @@ [source] +#git = "https://github.com/libffi/libffi" +#rev = "20562ac0427c3578250d04c6e34fb0127d4551cf" tar = "https://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz" +blake3 = "a00597a8bd26304977d7c180135e91969a175a5108bd0024a03eb0636e6cb0bf" patches = [ "redox.patch" ] diff --git a/recipes/libgmp/recipe.toml b/recipes/libgmp/recipe.toml index ce91a89a..e464785c 100644 --- a/recipes/libgmp/recipe.toml +++ b/recipes/libgmp/recipe.toml @@ -1,5 +1,5 @@ [source] tar = "https://gmplib.org/download/gmp/gmp-6.2.1.tar.xz" - +blake3 = "52cecfbbe286820d1f8bc118769008acb6451bd074fe6dea9e868d54b2ada855" [build] template = "configure" diff --git a/recipes/libiconv/recipe.toml b/recipes/libiconv/recipe.toml index 5ab4337a..b7663624 100644 --- a/recipes/libiconv/recipe.toml +++ b/recipes/libiconv/recipe.toml @@ -1,5 +1,8 @@ [source] +#git = "https://git.savannah.gnu.org/git/libiconv.git" +#rev = "941f63afe17adcb01e150e29ddb50c6fd40f1291" tar = "https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz" +blake3 = "b736af4e8245ae9f1618ef226a3bf2a998334b745520565cf413c0a7d54b6924" patches = [ "01_redox.patch" ] diff --git a/recipes/libjpeg/recipe.toml b/recipes/libjpeg/recipe.toml index 47859e1d..cfd3a69d 100644 --- a/recipes/libjpeg/recipe.toml +++ b/recipes/libjpeg/recipe.toml @@ -1,5 +1,5 @@ [source] -tar = "http://ijg.org/files/jpegsrc.v9c.tar.gz" - +tar = "http://ijg.org/files/jpegsrc.v9e.tar.gz" +blake3 = "f0d6072e15de609397cbd8428758d7054dd921dc448018111e3822b17bcbcc5d" [build] template = "configure" diff --git a/recipes/libogg/recipe.toml b/recipes/libogg/recipe.toml index 593947f5..7e61376e 100644 --- a/recipes/libogg/recipe.toml +++ b/recipes/libogg/recipe.toml @@ -1,4 +1,6 @@ [source] +#git = "https://gitlab.xiph.org/xiph/ogg" +#rev = "4380566a44b8d5e85ad511c9c17eb04197863ec5" tar = "http://downloads.xiph.org/releases/ogg/libogg-1.3.3.tar.xz" blake3 = "8220c0e4082fa26c07b10bfe31f641d2e33ebe1d1bb0b20221b7016bc8b78a3a" patches = [ diff --git a/recipes/libpng/recipe.toml b/recipes/libpng/recipe.toml index 0c6f6942..450902ed 100644 --- a/recipes/libpng/recipe.toml +++ b/recipes/libpng/recipe.toml @@ -1,5 +1,8 @@ [source] -tar = "https://github.com/glennrp/libpng/archive/v1.6.36.tar.gz" +#git = "https://github.com/glennrp/libpng" +#rev = "eddf9023206dc40974c26f589ee2ad63a4227a1e" +tar = "https://github.com/glennrp/libpng/archive/v1.6.39.tar.gz" +blake3 = "02513cc5d15ac79c4c402f2ae623425f4f80bdbbf15ebc95430fb8ccfc987996" script = """ chmod +w config.sub wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" diff --git a/recipes/libvorbis/recipe.toml b/recipes/libvorbis/recipe.toml index 47facfd6..8b2541f9 100644 --- a/recipes/libvorbis/recipe.toml +++ b/recipes/libvorbis/recipe.toml @@ -1,7 +1,8 @@ [source] -tar = "http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.tar.xz" -sha256 = "af00bb5a784e7c9e69f56823de4637c350643deedaf333d0fa86ecdba6fcb415" - +#git = "https://gitlab.xiph.org/xiph/vorbis" +#rev = "0657aee69dec8508a0011f47f3b69d7538e9d262" +tar = "https://downloads.xiph.org/releases/vorbis/libvorbis-1.3.7.tar.gz" +blake3 = "a8e88482b8d70321c8435616b0cec1a931b11445f003649774fd6940e593a254" [build] template = "configure" dependencies = [ diff --git a/recipes/mednafen/recipe.toml b/recipes/mednafen/recipe.toml index c4cf7850..829674b8 100644 --- a/recipes/mednafen/recipe.toml +++ b/recipes/mednafen/recipe.toml @@ -1,5 +1,6 @@ [source] tar = "https://mednafen.github.io/releases/files/mednafen-1.29.0.tar.xz" +blake3 = "c75c1044cdc9328b2349915a67972d6135c77eb53eb0d995788f22b7daacf79b" patches = [ "redox.patch", ] diff --git a/recipes/ncurses/recipe.sh b/recipes/ncurses/recipe.sh index 590cbfed..f20be355 100644 --- a/recipes/ncurses/recipe.sh +++ b/recipes/ncurses/recipe.sh @@ -1,5 +1,5 @@ -VERSION=6.1 -TAR=http://ftp.gnu.org/gnu/ncurses/ncurses-$VERSION.tar.gz +VERSION=6.4 +TAR=https://ftp.gnu.org/gnu/ncurses/ncurses-$VERSION.tar.gz DEPENDS="terminfo" function recipe_version { diff --git a/recipes/nghttp2/recipe.toml b/recipes/nghttp2/recipe.toml index ec652b1d..0688c1eb 100644 --- a/recipes/nghttp2/recipe.toml +++ b/recipes/nghttp2/recipe.toml @@ -1,7 +1,8 @@ [source] -tar = "https://github.com/nghttp2/nghttp2/releases/download/v1.50.0/nghttp2-1.50.0.tar.xz" -blake3 = "ac40e313ebb5fb341f82cec8daa4795673b27ff02061dfbf980ca1dbe8dc4115" - +#git = "https://github.com/nghttp2/nghttp2" +#rev = "be0491294a63d891bd12b6b1b7e372a45a5d0ffe" +tar = "https://github.com/nghttp2/nghttp2/releases/download/v1.53.0/nghttp2-1.53.0.tar.xz" +blake3 = "bad5f220a66b7e6f3df20f69f4fc7e7beca46e6c143fc63b95a2656a2e897caf" [build] template = "custom" script = """ diff --git a/recipes/noto-color-emoji/recipe.toml b/recipes/noto-color-emoji/recipe.toml index d04d1fdc..7076bb1d 100644 --- a/recipes/noto-color-emoji/recipe.toml +++ b/recipes/noto-color-emoji/recipe.toml @@ -1,7 +1,6 @@ [source] -tar = "https://github.com/googlefonts/noto-emoji/archive/refs/tags/v2.038.tar.gz" -blake3 = "68967033281403aaeb0de59a95343a3cc4a76cbc9c3384cec93f2d46ac71037f" - +git = "https://github.com/googlefonts/noto-emoji" +rev = "e8073ab740292f8d5f19b5de144087ac58044d06" [build] template = "custom" script = """ diff --git a/recipes/patch/recipe.sh b/recipes/patch/recipe.sh index 831d1a57..bcf14cce 100644 --- a/recipes/patch/recipe.sh +++ b/recipes/patch/recipe.sh @@ -1,5 +1,5 @@ -VERSION=2.7.5 -TAR=http://ftp.gnu.org/gnu/patch/patch-$VERSION.tar.xz +VERSION=2.7.6 +TAR=https://ftp.gnu.org/gnu/patch/patch-$VERSION.tar.xz function recipe_version { echo "$VERSION" diff --git a/recipes/pcre/recipe.toml b/recipes/pcre/recipe.toml index 68c4f718..fc2c92fe 100644 --- a/recipes/pcre/recipe.toml +++ b/recipes/pcre/recipe.toml @@ -1,5 +1,6 @@ [source] tar = "https://mirrors.gigenet.com/OSDN//sfnet/p/pc/pcre/pcre/8.42/pcre-8.42.tar.gz" +blake3 = "12d515ba12a816994def6b1e7196b5783fd2cfe495733a9167fa4d71dbe10248" patches = [ "redox.patch" ] diff --git a/recipes/perg/recipe.toml b/recipes/perg/recipe.toml index f5390a21..e073545d 100644 --- a/recipes/perg/recipe.toml +++ b/recipes/perg/recipe.toml @@ -1,5 +1,5 @@ [source] git = "https://github.com/guerinoni/perg.git" - +rev = "e206fab6bbd9c363c686fa7503d318304e48ddbe" [build] template = "cargo" diff --git a/recipes/pixman/recipe.sh b/recipes/pixman/recipe.sh index c6a90c9d..6db72d06 100755 --- a/recipes/pixman/recipe.sh +++ b/recipes/pixman/recipe.sh @@ -1,4 +1,4 @@ -VERSION="0.36.0" +VERSION="0.42.2" TAR=https://www.cairographics.org/releases/pixman-$VERSION.tar.gz function recipe_version { diff --git a/recipes/pkg-config/recipe.toml b/recipes/pkg-config/recipe.toml index a9424146..6a26f9ec 100755 --- a/recipes/pkg-config/recipe.toml +++ b/recipes/pkg-config/recipe.toml @@ -1,5 +1,8 @@ [source] +#git = "https://gitlab.freedesktop.org/pkg-config/pkg-config" +#rev = "edf8e6f0ea77ede073f07bff0d2ae1fc7a38103b" tar = "https://pkg-config.freedesktop.org/releases/pkg-config-0.29.2.tar.gz" +blake3 = "713372b09a1fafeec130dc9bf812a3880f2a90496af5d2194e508d91ccf667d0" script = """ wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" """ diff --git a/recipes/readline/recipe.toml b/recipes/readline/recipe.toml index b863fdc2..0a5664c3 100644 --- a/recipes/readline/recipe.toml +++ b/recipes/readline/recipe.toml @@ -1,5 +1,8 @@ [source] +#git = "https://git.savannah.gnu.org/git/readline.git" +#rev = "d49a9082c0e15bba8cd3d8cc0a994409cf823cac" tar = "http://ftp.gnu.org/gnu/readline/readline-7.0.tar.gz" +blake3 = "962483e201f36f05a5ccb507bb7330b4d4e4989fd52f41eb15ba65582ad02703" patches = [ "redox.patch" ] diff --git a/recipes/xz/01-no-poll.patch b/recipes/xz/01-no-poll.patch deleted file mode 100644 index 3c36484f..00000000 --- a/recipes/xz/01-no-poll.patch +++ /dev/null @@ -1,55 +0,0 @@ -diff -ru source/src/xz/file_io.c source-new/src/xz/file_io.c ---- source/src/xz/file_io.c 2016-12-30 03:13:57.000000000 -0800 -+++ source-new/src/xz/file_io.c 2017-08-08 12:34:08.453700076 -0700 -@@ -17,7 +17,7 @@ - #ifdef TUKLIB_DOSLIKE - # include - #else --# include -+//# include - static bool warn_fchown; - #endif - -@@ -222,7 +222,7 @@ - #endif // ENABLE_SANDBOX - - --#ifndef TUKLIB_DOSLIKE -+#if 0 - /// \brief Waits for input or output to become available or for a signal - /// - /// This uses the self-pipe trick to avoid a race condition that can occur -@@ -704,6 +704,7 @@ - // If it is something else than a regular file, wait until - // there is input available. This way reading from FIFOs - // will work when open() is used with O_NONBLOCK. -+#if 0 - if (!S_ISREG(pair->src_st.st_mode)) { - signals_unblock(); - const io_wait_ret ret = io_wait(pair, -1, true); -@@ -713,6 +714,7 @@ - goto error; - } - #endif -+#endif - - #ifdef HAVE_POSIX_FADVISE - // It will fail with some special files like FIFOs but that is fine. -@@ -1127,7 +1129,7 @@ - continue; - } - --#ifndef TUKLIB_DOSLIKE -+#if 0 - if (IS_EAGAIN_OR_EWOULDBLOCK(errno)) { - const io_wait_ret ret = io_wait(pair, - mytime_get_flush_timeout(), -@@ -1215,7 +1217,7 @@ - continue; - } - --#ifndef TUKLIB_DOSLIKE -+#if 0 - if (IS_EAGAIN_OR_EWOULDBLOCK(errno)) { - if (io_wait(pair, -1, false) == IO_WAIT_MORE) - continue; diff --git a/recipes/xz/02-o_noctty.patch b/recipes/xz/02-o_noctty.patch deleted file mode 100644 index 2ad56398..00000000 --- a/recipes/xz/02-o_noctty.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -ru source/src/common/tuklib_open_stdxxx.c source-new/src/common/tuklib_open_stdxxx.c ---- source/src/common/tuklib_open_stdxxx.c 2016-12-30 03:08:20.000000000 -0800 -+++ source-new/src/common/tuklib_open_stdxxx.c 2017-08-08 12:38:10.703829409 -0700 -@@ -35,8 +35,8 @@ - // writing to stdin would fail. However, /dev/full - // is Linux specific, and if the program tries to - // write to stdin, there's already a problem anyway. -- const int fd = open("/dev/null", O_NOCTTY -- | (i == 0 ? O_WRONLY : O_RDONLY)); -+ const int fd = open("/dev/null", -+ (i == 0 ? O_WRONLY : O_RDONLY)); - - if (fd != i) { - if (fd != -1) diff --git a/recipes/xz/03-no-signals.patch b/recipes/xz/03-no-signals.patch deleted file mode 100644 index 5fce80ea..00000000 --- a/recipes/xz/03-no-signals.patch +++ /dev/null @@ -1,47 +0,0 @@ -diff -ru source/src/xz/message.c source-new/src/xz/message.c ---- source/src/xz/message.c 2016-12-30 03:08:20.000000000 -0800 -+++ source-new/src/xz/message.c 2017-08-08 12:44:30.584447139 -0700 -@@ -135,7 +135,7 @@ - } - */ - --#ifdef SIGALRM -+#if 0 - // Establish the signal handlers which set a flag to tell us that - // progress info should be updated. - struct sigaction sa; -diff -ru source/src/xz/signals.c source-new/src/xz/signals.c ---- source/src/xz/signals.c 2016-12-30 03:08:20.000000000 -0800 -+++ source-new/src/xz/signals.c 2017-08-08 12:41:59.624111395 -0700 -@@ -53,6 +53,7 @@ - extern void - signals_init(void) - { -+#if 0 - // List of signals for which we establish the signal handler. - static const int sigs[] = { - SIGINT, -@@ -112,6 +113,7 @@ - signals_are_initialized = true; - - return; -+#endif - } - - -@@ -152,6 +154,7 @@ - extern void - signals_exit(void) - { -+#if 0 - const int sig = exit_signal; - - if (sig != 0) { -@@ -171,6 +174,7 @@ - } - - return; -+#endif - } - - #else diff --git a/recipes/xz/recipe.toml b/recipes/xz/recipe.toml index 31958a67..abf0f428 100644 --- a/recipes/xz/recipe.toml +++ b/recipes/xz/recipe.toml @@ -1,5 +1,8 @@ [source] -tar = "https://codeload.github.com/xz-mirror/xz/tar.gz/v5.2.5" +#git = "https://github.com/tukaani-project/xz" +#rev = "2327a461e1afce862c22269b80d3517801103c1b" +tar = "https://tukaani.org/xz/xz-5.4.3.tar.xz" +blake3 = "4b1b814bcf3794973fe9076d549a0edfbee01d2fd57821fe3280537ef6c7deae" script = """ ./autogen.sh """ diff --git a/recipes/zlib/recipe.toml b/recipes/zlib/recipe.toml index 6bb6c7fe..122a1d1d 100644 --- a/recipes/zlib/recipe.toml +++ b/recipes/zlib/recipe.toml @@ -1,7 +1,8 @@ [source] -tar = "http://zlib.net/fossils/zlib-1.2.12.tar.gz" -blake3 = "b7ad5638d87c69665afaae138bab40cc9a53a7ae7da9d168303e3df6b051d2b5" - +#git = "https://github.com/madler/zlib" +#rev = "04f42ceca40f73e2978b50e93806c2a18c1281fc" +tar = "https://zlib.net/zlib-1.2.13.tar.xz" +blake3 = "cc042bf8507e02f5799cf6fdb49278402a7b748defe3ade425e35e14a7c00186" [build] template = "custom" script = """ From 5ee7d682f157652ed81b2398024d0d489dc21904 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 18 May 2023 12:14:51 -0600 Subject: [PATCH 1084/3180] Recipe updates from https://gitlab.redox-os.org/hatred_45/cookbook/ --- recipes/binutils/recipe.sh | 1 - recipes/binutils/recipe.toml | 5 +++++ recipes/fd/recipe.toml | 2 +- recipes/friar/recipe.sh | 1 - recipes/friar/recipe.toml | 4 ++++ recipes/game-2048/recipe.sh | 2 -- recipes/game-2048/recipe.toml | 5 +++++ recipes/glib/recipe.toml | 3 +++ recipes/libflac/recipe.toml | 4 +++- recipes/libogg/recipe.toml | 2 +- recipes/libsodium/recipe.toml | 3 +++ recipes/libssh2/recipe.toml | 3 +++ recipes/libvorbis/recipe.toml | 4 ++-- recipes/libxml2/recipe.toml | 6 ++++-- recipes/lua/recipe.sh | 23 ----------------------- recipes/lua/recipe.toml | 11 +++++++++++ recipes/redox-fatfs/recipe.sh | 1 - recipes/redox-fatfs/recipe.toml | 4 ++++ recipes/redox-ssh/recipe.sh | 1 - recipes/redox-ssh/recipe.toml | 5 +++++ recipes/rodioplay/recipe.sh | 1 - recipes/rodioplay/recipe.toml | 5 +++++ recipes/rs-nes/recipe.sh | 3 --- recipes/rs-nes/recipe.toml | 8 ++++++++ recipes/rust64/recipe.sh | 3 --- recipes/rust64/recipe.toml | 8 ++++++++ recipes/shellharden/recipe.toml | 2 +- 27 files changed, 76 insertions(+), 44 deletions(-) delete mode 100644 recipes/binutils/recipe.sh create mode 100644 recipes/binutils/recipe.toml delete mode 100644 recipes/friar/recipe.sh create mode 100644 recipes/friar/recipe.toml delete mode 100644 recipes/game-2048/recipe.sh create mode 100644 recipes/game-2048/recipe.toml delete mode 100644 recipes/lua/recipe.sh create mode 100644 recipes/lua/recipe.toml delete mode 100644 recipes/redox-fatfs/recipe.sh create mode 100644 recipes/redox-fatfs/recipe.toml delete mode 100644 recipes/redox-ssh/recipe.sh create mode 100644 recipes/redox-ssh/recipe.toml delete mode 100644 recipes/rodioplay/recipe.sh create mode 100644 recipes/rodioplay/recipe.toml delete mode 100755 recipes/rs-nes/recipe.sh create mode 100755 recipes/rs-nes/recipe.toml delete mode 100755 recipes/rust64/recipe.sh create mode 100755 recipes/rust64/recipe.toml diff --git a/recipes/binutils/recipe.sh b/recipes/binutils/recipe.sh deleted file mode 100644 index 3083a53a..00000000 --- a/recipes/binutils/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/binutils.git diff --git a/recipes/binutils/recipe.toml b/recipes/binutils/recipe.toml new file mode 100644 index 00000000..588e511d --- /dev/null +++ b/recipes/binutils/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/binutils.git" + +[build] +template = "cargo" diff --git a/recipes/fd/recipe.toml b/recipes/fd/recipe.toml index d7d1c638..ab67ead8 100644 --- a/recipes/fd/recipe.toml +++ b/recipes/fd/recipe.toml @@ -1,5 +1,5 @@ [source] git = "https://github.com/sharkdp/fd.git" - +rev = "840a565d3aadbeb303b10a01c0aa3561924dfc46" [build] template = "cargo" diff --git a/recipes/friar/recipe.sh b/recipes/friar/recipe.sh deleted file mode 100644 index 46742910..00000000 --- a/recipes/friar/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://github.com/jackpot51/friar.git diff --git a/recipes/friar/recipe.toml b/recipes/friar/recipe.toml new file mode 100644 index 00000000..8ef92290 --- /dev/null +++ b/recipes/friar/recipe.toml @@ -0,0 +1,4 @@ +[source] +git = "https://github.com/jackpot51/friar.git" +[build] +template = "cargo" diff --git a/recipes/game-2048/recipe.sh b/recipes/game-2048/recipe.sh deleted file mode 100644 index c6a46587..00000000 --- a/recipes/game-2048/recipe.sh +++ /dev/null @@ -1,2 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/2048-rs.git -GIT_UPSTREAM=https://github.com/pierrechevalier83/2048-rs.git diff --git a/recipes/game-2048/recipe.toml b/recipes/game-2048/recipe.toml new file mode 100644 index 00000000..f1ff19de --- /dev/null +++ b/recipes/game-2048/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/2048-rs.git" +#git_upstream = "https://github.com/pierrechevalier83/2048-rs.git" +[build] +template = "cargo" diff --git a/recipes/glib/recipe.toml b/recipes/glib/recipe.toml index bcb6abe6..6dfd5a3d 100644 --- a/recipes/glib/recipe.toml +++ b/recipes/glib/recipe.toml @@ -1,5 +1,8 @@ [source] +#git = "https://gitlab.gnome.org/GNOME/glib" +#rev = "37f41eb44a7d423069ff93f44dd0baec92adad62" tar = "https://download.gnome.org/sources/glib/2.59/glib-2.59.0.tar.xz" +blake3 = "4b10f071bad767bbed9dc3ca742aac4de1f5746c03d515908e7dad4ea8334cbf" patches = [ "redox.patch" ] diff --git a/recipes/libflac/recipe.toml b/recipes/libflac/recipe.toml index 6cfe5c8e..b309c64d 100644 --- a/recipes/libflac/recipe.toml +++ b/recipes/libflac/recipe.toml @@ -1,6 +1,8 @@ [source] +#git = "https://gitlab.xiph.org/xiph/flac" +#rev = "b32e5cbf9818ca23dd22aaa75522042c16ea7d17" tar = "https://github.com/xiph/flac/releases/download/1.4.2/flac-1.4.2.tar.xz" - +blake3 = "d165b9a18eb83b6f6e9993cc2074547566df706fc61464eb17ff088fd0c88104" [build] template = "configure" dependencies = [ diff --git a/recipes/libogg/recipe.toml b/recipes/libogg/recipe.toml index 7e61376e..aa77f0ba 100644 --- a/recipes/libogg/recipe.toml +++ b/recipes/libogg/recipe.toml @@ -1,7 +1,7 @@ [source] #git = "https://gitlab.xiph.org/xiph/ogg" #rev = "4380566a44b8d5e85ad511c9c17eb04197863ec5" -tar = "http://downloads.xiph.org/releases/ogg/libogg-1.3.3.tar.xz" +tar = "https://github.com/xiph/ogg/releases/download/v1.3.3/libogg-1.3.3.tar.xz" blake3 = "8220c0e4082fa26c07b10bfe31f641d2e33ebe1d1bb0b20221b7016bc8b78a3a" patches = [ "redox.patch" diff --git a/recipes/libsodium/recipe.toml b/recipes/libsodium/recipe.toml index cd4ed493..4e9e6014 100644 --- a/recipes/libsodium/recipe.toml +++ b/recipes/libsodium/recipe.toml @@ -1,5 +1,8 @@ [source] +#git = "https://github.com/jedisct1/libsodium" +#rev = "675149b9b8b66ff44152553fb3ebf9858128363d" tar = "https://github.com/jedisct1/libsodium/archive/1.0.16.tar.gz" +blake3 = "2482633f872c173f9a42e6badb44c3efb042e783e664fdf8b1046babfa2405e7" patches = [ "random.patch" ] diff --git a/recipes/libssh2/recipe.toml b/recipes/libssh2/recipe.toml index 3e2c526d..6665e668 100644 --- a/recipes/libssh2/recipe.toml +++ b/recipes/libssh2/recipe.toml @@ -1,5 +1,8 @@ [source] +#git = "https://github.com/libssh2/libssh2" +#rev = "635caa90787220ac3773c1d5ba11f1236c22eae8" tar = "https://www.libssh2.org/download/libssh2-1.10.0.tar.gz" +blake3 = "2447216ce82c1d22301456bb02f60dfb6688f1461417b90f900c099a87f1292f" patches = [] [build] diff --git a/recipes/libvorbis/recipe.toml b/recipes/libvorbis/recipe.toml index 8b2541f9..4a963d45 100644 --- a/recipes/libvorbis/recipe.toml +++ b/recipes/libvorbis/recipe.toml @@ -1,8 +1,8 @@ [source] #git = "https://gitlab.xiph.org/xiph/vorbis" #rev = "0657aee69dec8508a0011f47f3b69d7538e9d262" -tar = "https://downloads.xiph.org/releases/vorbis/libvorbis-1.3.7.tar.gz" -blake3 = "a8e88482b8d70321c8435616b0cec1a931b11445f003649774fd6940e593a254" +tar = "https://github.com/xiph/vorbis/releases/download/v1.3.7/libvorbis-1.3.7.tar.xz" +blake3 = "c67f3f74ec26d93a5571c4404a64eb6e6587d7d77b46b552f7b410f5bc5b1f03" [build] template = "configure" dependencies = [ diff --git a/recipes/libxml2/recipe.toml b/recipes/libxml2/recipe.toml index d99963e2..8d7f1cf8 100644 --- a/recipes/libxml2/recipe.toml +++ b/recipes/libxml2/recipe.toml @@ -1,6 +1,8 @@ [source] -tar = "ftp://xmlsoft.org/libxml2/libxml2-2.9.9.tar.gz" - +#git = "https://gitlab.gnome.org/GNOME/libxml2" +#rev = "838bf42d54f94c8ff99b6e5022899a32875ed5d7" +tar = "https://download.gnome.org/sources/libxml2/2.11/libxml2-2.11.3.tar.xz" +blake3 = "0653d3750576299c4cb88740942165671b576ff93019f3d669b3f37136225ab7" [build] template = "custom" dependencies = [ diff --git a/recipes/lua/recipe.sh b/recipes/lua/recipe.sh deleted file mode 100644 index 25aff480..00000000 --- a/recipes/lua/recipe.sh +++ /dev/null @@ -1,23 +0,0 @@ -VERSION=5.3.1 -TAR=http://www.lua.org/ftp/lua-$VERSION.tar.gz - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - "$REDOX_MAKE" generic CC="${HOST}-gcc -std=gnu99" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - mkdir -pv "$1/bin" - cp src/lua src/luac "$1/bin" - skip=1 -} diff --git a/recipes/lua/recipe.toml b/recipes/lua/recipe.toml new file mode 100644 index 00000000..b0a6d8f8 --- /dev/null +++ b/recipes/lua/recipe.toml @@ -0,0 +1,11 @@ +[source] +tar = "https://www.lua.org/ftp/lua-5.4.4.tar.gz" +[build] +template = "custom" +script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ +export CC="${TARGET}-gcc -std=gnu99" +"${COOKBOOK_MAKE}" generic -j"${COOKBOOK_MAKE_JOBS}" +mkdir -pv "${COOKBOOK_STAGE}/bin" +cp src/lua src/luac "${COOKBOOK_STAGE}/bin" +""" diff --git a/recipes/redox-fatfs/recipe.sh b/recipes/redox-fatfs/recipe.sh deleted file mode 100644 index c707f458..00000000 --- a/recipes/redox-fatfs/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/redox-fatfs diff --git a/recipes/redox-fatfs/recipe.toml b/recipes/redox-fatfs/recipe.toml new file mode 100644 index 00000000..462ccfaa --- /dev/null +++ b/recipes/redox-fatfs/recipe.toml @@ -0,0 +1,4 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/redox-fatfs.git" +[build] +template = "cargo" diff --git a/recipes/redox-ssh/recipe.sh b/recipes/redox-ssh/recipe.sh deleted file mode 100644 index fb6f790a..00000000 --- a/recipes/redox-ssh/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/redox-ssh.git diff --git a/recipes/redox-ssh/recipe.toml b/recipes/redox-ssh/recipe.toml new file mode 100644 index 00000000..277727fb --- /dev/null +++ b/recipes/redox-ssh/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/redox-ssh.git" + +[build] +template = "cargo" diff --git a/recipes/rodioplay/recipe.sh b/recipes/rodioplay/recipe.sh deleted file mode 100644 index a13ee1cb..00000000 --- a/recipes/rodioplay/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/rodioplay.git diff --git a/recipes/rodioplay/recipe.toml b/recipes/rodioplay/recipe.toml new file mode 100644 index 00000000..84b246e1 --- /dev/null +++ b/recipes/rodioplay/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/rodioplay.git" + +[build] +template = "cargo" diff --git a/recipes/rs-nes/recipe.sh b/recipes/rs-nes/recipe.sh deleted file mode 100755 index 73aa9ef8..00000000 --- a/recipes/rs-nes/recipe.sh +++ /dev/null @@ -1,3 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/rs-nes.git -GIT_UPSTREAM=https://github.com/bgourlie/rs-nes.git -DEPENDS="orbital" diff --git a/recipes/rs-nes/recipe.toml b/recipes/rs-nes/recipe.toml new file mode 100755 index 00000000..26381d89 --- /dev/null +++ b/recipes/rs-nes/recipe.toml @@ -0,0 +1,8 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/rs-nes.git" +#git_upstream = "https://github.com/bgourlie/rs-nes.git" +[build] +template = "cargo" +dependencies = [ + "orbital" +] diff --git a/recipes/rust64/recipe.sh b/recipes/rust64/recipe.sh deleted file mode 100755 index 27ddfa89..00000000 --- a/recipes/rust64/recipe.sh +++ /dev/null @@ -1,3 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/rust64.git -GIT_UPSTREAM=https://github.com/kondrak/rust64.git -DEPENDS="orbital" diff --git a/recipes/rust64/recipe.toml b/recipes/rust64/recipe.toml new file mode 100755 index 00000000..47207fc5 --- /dev/null +++ b/recipes/rust64/recipe.toml @@ -0,0 +1,8 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/rust64.git" +#git_upstream = "https://github.com/kondrak/rust64.git" +[build] +template = "cargo" +dependencies = [ + "orbital" +] diff --git a/recipes/shellharden/recipe.toml b/recipes/shellharden/recipe.toml index 7cdbbb3d..b5644119 100644 --- a/recipes/shellharden/recipe.toml +++ b/recipes/shellharden/recipe.toml @@ -1,5 +1,5 @@ [source] git = "https://github.com/anordal/shellharden.git" - +rev = "bd24c99d5d1e76452b6d0749404837c1c95d923c" [build] template = "cargo" From 60bf37dd0c989ee3cff000c427cf272556fa2aab Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 18 May 2023 12:49:23 -0600 Subject: [PATCH 1085/3180] Convert some recipes to toml --- recipes/autoconf/recipe.sh | 25 ------------------------- recipes/autoconf/recipe.toml | 6 ++++++ recipes/automake/recipe.sh | 28 ---------------------------- recipes/automake/recipe.toml | 6 ++++++ recipes/cosmic-text/recipe.sh | 17 ----------------- recipes/cosmic-text/recipe.toml | 9 +++++++++ recipes/cpal/recipe.sh | 11 ----------- recipes/cpal/recipe.toml | 10 ++++++++++ recipes/orbclient/recipe.sh | 10 ---------- recipes/orbclient/recipe.toml | 8 ++++++++ recipes/orbterm/recipe.toml | 1 + recipes/winit/recipe.sh | 11 ----------- recipes/winit/recipe.toml | 10 ++++++++++ src/bin/cook.rs | 32 ++++++++++++++++++++++++++++++++ 14 files changed, 82 insertions(+), 102 deletions(-) delete mode 100644 recipes/autoconf/recipe.sh create mode 100644 recipes/autoconf/recipe.toml delete mode 100644 recipes/automake/recipe.sh create mode 100644 recipes/automake/recipe.toml delete mode 100644 recipes/cosmic-text/recipe.sh create mode 100644 recipes/cosmic-text/recipe.toml delete mode 100644 recipes/cpal/recipe.sh create mode 100644 recipes/cpal/recipe.toml delete mode 100644 recipes/orbclient/recipe.sh create mode 100644 recipes/orbclient/recipe.toml delete mode 100644 recipes/winit/recipe.sh create mode 100644 recipes/winit/recipe.toml diff --git a/recipes/autoconf/recipe.sh b/recipes/autoconf/recipe.sh deleted file mode 100644 index 750349aa..00000000 --- a/recipes/autoconf/recipe.sh +++ /dev/null @@ -1,25 +0,0 @@ -VERSION=2.71 -TAR=https://ftp.gnu.org/gnu/autoconf/autoconf-$VERSION.tar.xz - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - wget -O build-aux/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" - ./configure --build=${BUILD} --host=${HOST} --prefix='' - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - skip=1 -} diff --git a/recipes/autoconf/recipe.toml b/recipes/autoconf/recipe.toml new file mode 100644 index 00000000..a4f8df2f --- /dev/null +++ b/recipes/autoconf/recipe.toml @@ -0,0 +1,6 @@ +[source] +tar = "https://ftp.gnu.org/gnu/autoconf/autoconf-2.71.tar.xz" +blake3 = "da1cc8af8551c343de9f42af0ae53fd7dff3623487157623892b6cd7e3bb5692" + +[build] +template = "configure" diff --git a/recipes/automake/recipe.sh b/recipes/automake/recipe.sh deleted file mode 100644 index 22776f81..00000000 --- a/recipes/automake/recipe.sh +++ /dev/null @@ -1,28 +0,0 @@ -VERSION=1.16.5 -TAR=https://ftp.gnu.org/gnu/automake/automake-$VERSION.tar.xz - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - wget -O lib/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" - sed -i 's|.*/doc/help2man.*|\&\& true|' Makefile.in - sed -i 's|install-info-am install-man|install-info-am|' Makefile.in - - ./configure --build=${BUILD} --host=${HOST} --prefix='' - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - skip=1 -} diff --git a/recipes/automake/recipe.toml b/recipes/automake/recipe.toml new file mode 100644 index 00000000..c733beb9 --- /dev/null +++ b/recipes/automake/recipe.toml @@ -0,0 +1,6 @@ +[source] +tar = "https://ftp.gnu.org/gnu/automake/automake-1.16.5.tar.xz" +blake3 = "f42cfc333aaaa11f2bcb05b5b0273b8706c820c22f9ba4367f7eb920551695cd" + +[build] +template = "configure" diff --git a/recipes/cosmic-text/recipe.sh b/recipes/cosmic-text/recipe.sh deleted file mode 100644 index 8d7d37ea..00000000 --- a/recipes/cosmic-text/recipe.sh +++ /dev/null @@ -1,17 +0,0 @@ -GIT=https://github.com/pop-os/cosmic-text.git -BRANCH=main - -function recipe_build { - sysroot="$(realpath ../sysroot)" - set -x - cargo build --target "$TARGET" --release --package editor-orbclient --features vi - set +x - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - mkdir -pv "$dest/bin" - cp -v "target/${TARGET}/release/editor-orbclient" "$dest/bin/cosmic-text" - skip=1 -} diff --git a/recipes/cosmic-text/recipe.toml b/recipes/cosmic-text/recipe.toml new file mode 100644 index 00000000..32f0525b --- /dev/null +++ b/recipes/cosmic-text/recipe.toml @@ -0,0 +1,9 @@ +[source] +git = "https://github.com/pop-os/cosmic-text.git" +branch = "main" + +[build] +template = "custom" +script = """ +cookbook_cargo_packages editor-orbclient +""" diff --git a/recipes/cpal/recipe.sh b/recipes/cpal/recipe.sh deleted file mode 100644 index 2ffe7617..00000000 --- a/recipes/cpal/recipe.sh +++ /dev/null @@ -1,11 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/cpal.git -GIT_UPSTREAM=https://github.com/tomaka/cpal.git -BRANCH=redox -CARGOFLAGS="--example beep" - -function recipe_stage { - dest="$(realpath $1)" - mkdir -pv "$dest/bin" - cp -v "target/${TARGET}/release/examples/beep" "$dest/bin/cpal" - skip=1 -} diff --git a/recipes/cpal/recipe.toml b/recipes/cpal/recipe.toml new file mode 100644 index 00000000..4ff3861b --- /dev/null +++ b/recipes/cpal/recipe.toml @@ -0,0 +1,10 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/cpal.git" +branch = "redox" +upstream = "https://github.com/tomaka/cpal.git" + +[build] +template = "custom" +script = """ +cookbook_cargo_examples beep +""" diff --git a/recipes/orbclient/recipe.sh b/recipes/orbclient/recipe.sh deleted file mode 100644 index cdd0c978..00000000 --- a/recipes/orbclient/recipe.sh +++ /dev/null @@ -1,10 +0,0 @@ - -GIT=https://gitlab.redox-os.org/redox-os/orbclient.git -CARGOFLAGS="--example simple" - -function recipe_stage { - dest="$(realpath $1)" - mkdir -pv "$dest/bin" - cp -v "target/${TARGET}/release/examples/simple" "$dest/bin/orbclient" - skip=1 -} diff --git a/recipes/orbclient/recipe.toml b/recipes/orbclient/recipe.toml new file mode 100644 index 00000000..27f07e47 --- /dev/null +++ b/recipes/orbclient/recipe.toml @@ -0,0 +1,8 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/orbclient.git" + +[build] +template = "custom" +script = """ +cookbook_cargo_examples simple +""" diff --git a/recipes/orbterm/recipe.toml b/recipes/orbterm/recipe.toml index e6e23e15..86925458 100644 --- a/recipes/orbterm/recipe.toml +++ b/recipes/orbterm/recipe.toml @@ -8,6 +8,7 @@ COOKBOOK_CARGO_FLAGS=( --path "${COOKBOOK_SOURCE}" --root "${COOKBOOK_STAGE}/ui" --locked + --no-track ) cookbook_cargo """ diff --git a/recipes/winit/recipe.sh b/recipes/winit/recipe.sh deleted file mode 100644 index 4ac8f27c..00000000 --- a/recipes/winit/recipe.sh +++ /dev/null @@ -1,11 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/winit.git -GIT_UPSTREAM=https://github.com/rust-windowing/winit.git -BRANCH=redox-0.27 -CARGOFLAGS="--example window" - -function recipe_stage { - dest="$(realpath $1)" - mkdir -pv "$dest/bin" - cp -v "target/${TARGET}/release/examples/window" "$dest/bin/winit" - skip=1 -} diff --git a/recipes/winit/recipe.toml b/recipes/winit/recipe.toml new file mode 100644 index 00000000..818e6e83 --- /dev/null +++ b/recipes/winit/recipe.toml @@ -0,0 +1,10 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/winit.git" +branch = "redox-0.27" +upstream = "https://github.com/rust-windowing/winit.git" + +[build] +template = "custom" +script = """ +cookbook_cargo_examples window +""" diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 5d36682d..b055920b 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -471,6 +471,38 @@ function cookbook_cargo { "${COOKBOOK_CARGO}" install "${COOKBOOK_CARGO_FLAGS[@]}" } +# helper for installing binaries that are cargo examples +function cookbook_cargo_examples { + recipe="$(basename "${COOKBOOK_RECIPE}")" + for example in "$@" + do + "${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --example "${example}" \ + --release + mkdir -pv "${COOKBOOK_STAGE}/bin" + cp -v \ + "target/${TARGET}/release/examples/${example}" \ + "${COOKBOOK_STAGE}/bin/${recipe}_${example}" + done +} + +# helper for installing binaries that are cargo packages +function cookbook_cargo_packages { + recipe="$(basename "${COOKBOOK_RECIPE}")" + for package in "$@" + do + "${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --package "${package}" \ + --release + mkdir -pv "${COOKBOOK_STAGE}/bin" + cp -v \ + "target/${TARGET}/release/${package}" \ + "${COOKBOOK_STAGE}/bin/${recipe}_${package}" + done +} + # configure template COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/configure" COOKBOOK_CONFIGURE_FLAGS=( From 7cb4b95b0301c9984bf433af2d1e3bfb8922058d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 18 May 2023 13:17:46 -0600 Subject: [PATCH 1086/3180] Simplify cargo recipes --- recipes/findutils/recipe.toml | 5 +---- recipes/iced/recipe.toml | 14 +------------- recipes/libcosmic/recipe.toml | 8 +------- recipes/orbterm/recipe.toml | 7 +------ recipes/orbutils/recipe.toml | 28 ++++++---------------------- recipes/redoxerd/recipe.toml | 5 +---- recipes/uutils/recipe.toml | 7 +------ src/bin/cook.rs | 13 ++++++------- 8 files changed, 18 insertions(+), 69 deletions(-) diff --git a/recipes/findutils/recipe.toml b/recipes/findutils/recipe.toml index 65ec7db4..4da7c2cb 100644 --- a/recipes/findutils/recipe.toml +++ b/recipes/findutils/recipe.toml @@ -4,8 +4,5 @@ git = "https://gitlab.redox-os.org/redox-os/findutils.git" [build] template = "custom" script = """ -COOKBOOK_CARGO_FLAGS+=( - --bin find -) -cookbook_cargo +cookbook_cargo --bin find """ diff --git a/recipes/iced/recipe.toml b/recipes/iced/recipe.toml index 447f93d5..ae7dc4f1 100644 --- a/recipes/iced/recipe.toml +++ b/recipes/iced/recipe.toml @@ -5,17 +5,5 @@ branch = "redox" [build] template = "custom" script = """ -EXAMPLES=( - styling -) -set -x -for example in "${EXAMPLES[@]}" -do - ${COOKBOOK_CARGO} build \ - --release \ - --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ - --package "${example}" - mkdir -pv "${COOKBOOK_STAGE}/bin" - cp -v "target/${TARGET}/release/${example}" "${COOKBOOK_STAGE}/bin/iced_${example}" -done +cookbook_cargo_packages styling """ diff --git a/recipes/libcosmic/recipe.toml b/recipes/libcosmic/recipe.toml index 3832b9f9..cd89c2f6 100644 --- a/recipes/libcosmic/recipe.toml +++ b/recipes/libcosmic/recipe.toml @@ -5,11 +5,5 @@ branch = "redox" [build] template = "custom" script = """ - set -x - ${COOKBOOK_CARGO} build \ - --release \ - --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ - --package cosmic - mkdir -pv "${COOKBOOK_STAGE}/bin" - cp -v "target/${TARGET}/release/cosmic" "${COOKBOOK_STAGE}/bin/libcosmic" +cookbook_cargo_packages cosmic """ diff --git a/recipes/orbterm/recipe.toml b/recipes/orbterm/recipe.toml index 86925458..2d247c14 100644 --- a/recipes/orbterm/recipe.toml +++ b/recipes/orbterm/recipe.toml @@ -4,12 +4,7 @@ git = "https://gitlab.redox-os.org/redox-os/orbterm.git" [build] template = "custom" script = """ -COOKBOOK_CARGO_FLAGS=( - --path "${COOKBOOK_SOURCE}" - --root "${COOKBOOK_STAGE}/ui" - --locked - --no-track -) +COOKBOOK_STAGE="${COOKBOOK_STAGE}/ui" cookbook_cargo """ diff --git a/recipes/orbutils/recipe.toml b/recipes/orbutils/recipe.toml index 920ed576..b38bb830 100644 --- a/recipes/orbutils/recipe.toml +++ b/recipes/orbutils/recipe.toml @@ -4,28 +4,12 @@ git = "https://gitlab.redox-os.org/redox-os/orbutils.git" [build] template = "custom" script = """ -COOKBOOK_CARGO_FLAGS=( - --path "${COOKBOOK_SOURCE}/orbutils" - --root "${COOKBOOK_STAGE}/ui" - --locked - --no-track -) +COOKBOOK_STAGE="${COOKBOOK_STAGE}/ui" +ORIGINAL_SOURCE="${COOKBOOK_SOURCE}" + +COOKBOOK_SOURCE="${ORIGINAL_SOURCE}/orbutils" cookbook_cargo -COOKBOOK_CARGO_FLAGS=( - --path "${COOKBOOK_SOURCE}/calculator" - --root "${COOKBOOK_STAGE}/ui" - --locked - --no-track -) + +COOKBOOK_SOURCE="${ORIGINAL_SOURCE}/calculator" cookbook_cargo """ - -[package] -dependencies = [ - "orbital", - "expat", - "fontconfig", - "freetype", - "libpng", - "zlib", -] diff --git a/recipes/redoxerd/recipe.toml b/recipes/redoxerd/recipe.toml index 16d4a5a7..8a49ef48 100644 --- a/recipes/redoxerd/recipe.toml +++ b/recipes/redoxerd/recipe.toml @@ -4,9 +4,6 @@ git = "https://gitlab.redox-os.org/redox-os/redoxer.git" [build] template = "custom" script = """ -COOKBOOK_CARGO_FLAGS=( - --path "${COOKBOOK_SOURCE}/daemon" - --root "${COOKBOOK_STAGE}" -) +COOKBOOK_SOURCE="${COOKBOOK_SOURCE}/daemon" cookbook_cargo """ diff --git a/recipes/uutils/recipe.toml b/recipes/uutils/recipe.toml index e346a12b..c04c5718 100644 --- a/recipes/uutils/recipe.toml +++ b/recipes/uutils/recipe.toml @@ -5,12 +5,7 @@ branch = "redox" [build] template = "custom" script = """ -COOKBOOK_CARGO_FLAGS+=( - --no-default-features - --features feat_os_unix_redox - --bin coreutils -) -cookbook_cargo +cookbook_cargo --no-default-features --features feat_os_unix_redox --bin coreutils BINS=( base32 diff --git a/src/bin/cook.rs b/src/bin/cook.rs index b055920b..9fe35867 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -461,14 +461,13 @@ export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" # cargo template COOKBOOK_CARGO="${COOKBOOK_REDOXER}" -COOKBOOK_CARGO_FLAGS=( - --path "${COOKBOOK_SOURCE}" - --root "${COOKBOOK_STAGE}" - --locked - --no-track -) function cookbook_cargo { - "${COOKBOOK_CARGO}" install "${COOKBOOK_CARGO_FLAGS[@]}" + "${COOKBOOK_CARGO}" install \ + --path "${COOKBOOK_SOURCE}" \ + --root "${COOKBOOK_STAGE}" \ + --locked \ + --no-track \ + "$@" } # helper for installing binaries that are cargo examples From 93cdc8e0493d66ce8a76ff50330b15e3b32771e1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 19 May 2023 13:16:22 -0600 Subject: [PATCH 1087/3180] shared-mime-info: Add xz as build dependency --- recipes/shared-mime-info/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/shared-mime-info/recipe.sh b/recipes/shared-mime-info/recipe.sh index 005568fa..1880072a 100755 --- a/recipes/shared-mime-info/recipe.sh +++ b/recipes/shared-mime-info/recipe.sh @@ -1,6 +1,6 @@ VERSION="1.10" TAR="https://freedesktop.org/~hadess/shared-mime-info-${VERSION}.tar.xz" -BUILD_DEPENDS=(gettext glib libffi libiconv libxml2 pcre zlib) +BUILD_DEPENDS=(gettext glib libffi libiconv libxml2 pcre xz zlib) function recipe_version { echo "$VERSION" From aeca42f1261816846d89d7a93a1050f8ff84b295 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 19 May 2023 13:18:38 -0600 Subject: [PATCH 1088/3180] gdk-pixbuf: Support all architectures --- recipes/gdk-pixbuf/recipe.sh | 100 +++++++++++++++++------------------ 1 file changed, 50 insertions(+), 50 deletions(-) diff --git a/recipes/gdk-pixbuf/recipe.sh b/recipes/gdk-pixbuf/recipe.sh index 572c6441..cc6f1677 100755 --- a/recipes/gdk-pixbuf/recipe.sh +++ b/recipes/gdk-pixbuf/recipe.sh @@ -3,68 +3,68 @@ TAR="https://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/${VERSION%.*}/gdk-pixbuf BUILD_DEPENDS=(gettext glib libffi libiconv libjpeg libpng pcre shared-mime-info zlib) function recipe_version { - echo "$VERSION" - skip=1 + echo "$VERSION" + skip=1 } function recipe_build { - sysroot="$(realpath ../sysroot)" - export LDFLAGS="-static" + sysroot="$(realpath ../sysroot)" + export LDFLAGS="-static" - # TODO: Fix this annoying shite - echo "[binaries]" > cross_file.txt - echo "c = '${CC}'" >> cross_file.txt - echo "cpp = '${CXX}'" >> cross_file.txt - echo "ar = '${AR}'" >> cross_file.txt - echo "strip = '${STRIP}'" >> cross_file.txt - echo "pkgconfig = '${PKG_CONFIG}'" >> cross_file.txt + # TODO: Fix this annoying shite + echo "[binaries]" > cross_file.txt + echo "c = '${CC}'" >> cross_file.txt + echo "cpp = '${CXX}'" >> cross_file.txt + echo "ar = '${AR}'" >> cross_file.txt + echo "strip = '${STRIP}'" >> cross_file.txt + echo "pkgconfig = '${PKG_CONFIG}'" >> cross_file.txt - echo "[host_machine]" >> cross_file.txt - echo "system = 'redox'" >> cross_file.txt - echo "cpu_family = 'x86_64'" >> cross_file.txt - echo "cpu = 'x86_64'" >> cross_file.txt - echo "endian = 'little'" >> cross_file.txt + echo "[host_machine]" >> cross_file.txt + echo "system = 'redox'" >> cross_file.txt + echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt + echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt + echo "endian = 'little'" >> cross_file.txt - echo "[paths]" >> cross_file.txt - echo "prefix = '${sysroot}'" >> cross_file.txt - echo "libdir = 'lib'" >> cross_file.txt - echo "bindir = 'bin'" >> cross_file.txt + echo "[paths]" >> cross_file.txt + echo "prefix = '${sysroot}'" >> cross_file.txt + echo "libdir = 'lib'" >> cross_file.txt + echo "bindir = 'bin'" >> cross_file.txt - unset AR - unset AS - unset CC - unset CXX - unset LD - unset NM - unset OBJCOPY - unset OBJDUMP - unset PKG_CONFIG - unset RANLIB - unset READELF - unset STRIP + unset AR + unset AS + unset CC + unset CXX + unset LD + unset NM + unset OBJCOPY + unset OBJDUMP + unset PKG_CONFIG + unset RANLIB + unset READELF + unset STRIP - meson . _build \ - --cross-file cross_file.txt \ - --buildtype release \ - --strip \ - -Ddefault_library=static \ - -Dprefix=/ \ - -Dlibdir=lib \ - -Dbuiltin_loaders=all \ - -Dgir=false \ - -Dx11=false - ninja -C _build -v - skip=1 + meson . _build \ + --cross-file cross_file.txt \ + --buildtype release \ + --strip \ + -Ddefault_library=static \ + -Dprefix=/ \ + -Dlibdir=lib \ + -Dbuiltin_loaders=all \ + -Dgir=false \ + -Dx11=false + ninja -C _build -v + skip=1 } function recipe_clean { - "$REDOX_MAKE" clean - skip=1 + "$REDOX_MAKE" clean + skip=1 } function recipe_stage { - dest="$(realpath $1)" - DESTDIR="$dest" ninja -C _build -v install - rm -f "$dest/lib/"*.la - skip=1 + dest="$(realpath $1)" + DESTDIR="$dest" ninja -C _build -v install + rm -f "$dest/lib/"*.la + skip=1 } From 927e4af116aaf9e442f77bcc762367e1eae18e0e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 19 May 2023 13:18:49 -0600 Subject: [PATCH 1089/3180] gnu-binutils: support all architectures --- recipes/gnu-binutils/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh index 1fbd7a51..61ba1213 100644 --- a/recipes/gnu-binutils/recipe.sh +++ b/recipes/gnu-binutils/recipe.sh @@ -26,7 +26,7 @@ function recipe_build { --with-expat \ --with-multilib \ --with-interwork \ - --enable-targets=x86_64-unknown-redox \ + --enable-targets="${TARGET}" \ --disable-nls \ --disable-werror "$REDOX_MAKE" -j"$($NPROC)" From edfbe87e51a1d755070b44d781ffdf55e2303566 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 19 May 2023 13:19:02 -0600 Subject: [PATCH 1090/3180] mesa: support all architectures --- recipes/mesa/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/mesa/recipe.toml b/recipes/mesa/recipe.toml index 18688f35..37bbd16e 100644 --- a/recipes/mesa/recipe.toml +++ b/recipes/mesa/recipe.toml @@ -30,8 +30,8 @@ echo "llvm-config = '${TARGET}-llvm-config'" >> cross_file.txt echo "[host_machine]" >> cross_file.txt echo "system = 'redox'" >> cross_file.txt -echo "cpu_family = 'x86_64'" >> cross_file.txt -echo "cpu = 'x86_64'" >> cross_file.txt +echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt +echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt echo "endian = 'little'" >> cross_file.txt echo "[paths]" >> cross_file.txt From 2a1ac1790a7ba95284998854f99f37b476737d85 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 19 May 2023 13:30:48 -0600 Subject: [PATCH 1091/3180] Update gstreamer --- recipes/gstreamer/recipe.sh | 65 ++++++++++++++++++++++++++--------- recipes/gstreamer/redox.patch | 37 ++++++++++++++++++-- 2 files changed, 84 insertions(+), 18 deletions(-) diff --git a/recipes/gstreamer/recipe.sh b/recipes/gstreamer/recipe.sh index 7fcf18a5..d67fad18 100644 --- a/recipes/gstreamer/recipe.sh +++ b/recipes/gstreamer/recipe.sh @@ -1,4 +1,4 @@ -VERSION=1.14.4 +VERSION=1.20.6 TAR=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-$VERSION.tar.xz BUILD_DEPENDS=(gettext glib libffi libiconv pcre zlib) @@ -9,20 +9,53 @@ function recipe_version { function recipe_build { sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib --static" export GLIB_GENMARSHAL="$(which glib-genmarshal)" export GLIB_MKENUMS="$(which glib-mkenums)" - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix=/ \ - --disable-shared \ - --enable-static \ - --disable-benchmarks \ - --disable-examples \ - --disable-tests - "$REDOX_MAKE" -j"$($NPROC)" V=1 + export LDFLAGS="-static" + + # TODO: Fix this annoying shite + echo "[binaries]" > cross_file.txt + echo "c = '${CC}'" >> cross_file.txt + echo "cpp = '${CXX}'" >> cross_file.txt + echo "ar = '${AR}'" >> cross_file.txt + echo "strip = '${STRIP}'" >> cross_file.txt + echo "pkgconfig = '${PKG_CONFIG}'" >> cross_file.txt + + echo "[host_machine]" >> cross_file.txt + echo "system = 'redox'" >> cross_file.txt + echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt + echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt + echo "endian = 'little'" >> cross_file.txt + + echo "[paths]" >> cross_file.txt + echo "prefix = '${sysroot}'" >> cross_file.txt + echo "libdir = 'lib'" >> cross_file.txt + echo "bindir = 'bin'" >> cross_file.txt + + unset AR + unset AS + unset CC + unset CXX + unset LD + unset NM + unset OBJCOPY + unset OBJDUMP + unset PKG_CONFIG + unset RANLIB + unset READELF + unset STRIP + + meson . _build \ + --cross-file cross_file.txt \ + --buildtype release \ + --strip \ + -Ddefault_library=static \ + -Dprefix=/ \ + -Dlibdir=lib \ + -Dbenchmarks=disabled \ + -Dexamples=disabled \ + -Dtests=disabled + ninja -C _build -v skip=1 } @@ -32,8 +65,8 @@ function recipe_clean { } function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la + dest="$(realpath $1)" + DESTDIR="$dest" ninja -C _build -v install + rm -f "$dest/lib/"*.la skip=1 } diff --git a/recipes/gstreamer/redox.patch b/recipes/gstreamer/redox.patch index e2509f79..bffd8ffe 100644 --- a/recipes/gstreamer/redox.patch +++ b/recipes/gstreamer/redox.patch @@ -1,6 +1,6 @@ diff -ruwN source/gst/gstpoll.c source-new/gst/gstpoll.c ---- source/gst/gstpoll.c 2018-03-23 14:44:36.000000000 -0600 -+++ source-new/gst/gstpoll.c 2019-01-05 15:17:35.861961634 -0700 +--- source/gst/gstpoll.c 2023-02-23 11:23:11.000000000 -0700 ++++ source-new/gst/gstpoll.c 2023-05-19 13:22:32.365660597 -0600 @@ -85,6 +85,10 @@ #include #endif @@ -22,3 +22,36 @@ diff -ruwN source/gst/gstpoll.c source-new/gst/gstpoll.c goto no_socket_pair; nset->control_read_fd.fd = control_sock[0]; +diff -ruwN source/libs/gst/check/libcheck/meson.build source-new/libs/gst/check/libcheck/meson.build +--- source/libs/gst/check/libcheck/meson.build 2023-02-23 11:23:11.000000000 -0700 ++++ source-new/libs/gst/check/libcheck/meson.build 2023-05-19 13:26:51.285620215 -0600 +@@ -40,13 +40,13 @@ + endif + + # FIXME: check that timer_create, timer_settime, timer_delete are in rt_lib +-if not rt_lib.found() ++#if not rt_lib.found() + libcheck_files += files( + 'libcompat/timer_create.c', + 'libcompat/timer_settime.c', + 'libcompat/timer_delete.c' + ) +-endif ++#endif + + configure_file(input : 'check.h.in', + output : 'check.h', +diff -ruwN source/plugins/elements/gstfilesink.c source-new/plugins/elements/gstfilesink.c +--- source/plugins/elements/gstfilesink.c 2023-02-23 11:23:11.000000000 -0700 ++++ source-new/plugins/elements/gstfilesink.c 2023-05-19 13:23:26.885652108 -0600 +@@ -148,8 +148,10 @@ + else + g_assert_not_reached (); + ++#if !defined(__redox__) + if (o_sync) + flags |= O_SYNC; ++#endif + + fd = open (filename, flags, 0666); + From 883ed58ee353dcbd8b948e1293c91393e8f559ef Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 19 May 2023 13:35:27 -0600 Subject: [PATCH 1092/3180] harfbuzz: do not require sincosf function --- recipes/harfbuzz/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/harfbuzz/recipe.toml b/recipes/harfbuzz/recipe.toml index f84afeaf..22f21ea8 100644 --- a/recipes/harfbuzz/recipe.toml +++ b/recipes/harfbuzz/recipe.toml @@ -19,6 +19,7 @@ COOKBOOK_CONFIGURE_FLAGS+=( --with-glib=yes --with-freetype=yes --with-icu=no + ac_cv_func_sincosf=no ) cookbook_configure """ From dc15d290d8cbfd380a13a589f2cc61ba1d3e59c1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 20 May 2023 01:10:38 +0000 Subject: [PATCH 1093/3180] Fix freetype tarball link --- recipes/freetype/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/freetype/recipe.toml b/recipes/freetype/recipe.toml index 8b027d15..5785eb30 100644 --- a/recipes/freetype/recipe.toml +++ b/recipes/freetype/recipe.toml @@ -1,8 +1,8 @@ [source] #git = "https://gitlab.freedesktop.org/freetype/freetype" #rev = "de8b92dd7ec634e9e2b25ef534c54a3537555c11" -tar = "https://download.savannah.gnu.org/releases/freetype/freetype-2.13.0.tar.gz" -blake3 = "8bf2db46b2a406d63da15d65b12ff986c6ac9a62cc10d429b03b4db58ea78f35" +tar = "https://download.savannah.gnu.org/releases/freetype/freetype-2.12.1.tar.xz" +blake3 = "c4a1d8438ca4e93bb8cb9f8e70e95cd16acdc5a9f0fba496e43911175f55affd" [build] template = "configure" dependencies = [ From 1271e2adccfe30b594f145eade9a46745b5c9279 Mon Sep 17 00:00:00 2001 From: Kivimango Date: Sat, 20 May 2023 10:20:54 +0000 Subject: [PATCH 1094/3180] Add twin-commander recipe --- recipes/twin-commander/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/twin-commander/recipe.toml diff --git a/recipes/twin-commander/recipe.toml b/recipes/twin-commander/recipe.toml new file mode 100644 index 00000000..bc3caef6 --- /dev/null +++ b/recipes/twin-commander/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://github.com/kivimango/twin-commander.git" + +[build] +template = "cargo" From 68578d6d3faa2379e414fdc624e162120fbbdef9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 24 May 2023 00:36:42 +0000 Subject: [PATCH 1095/3180] Remove deprecated drivers-041 recipe --- recipes/drivers-041/recipe.sh | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 recipes/drivers-041/recipe.sh diff --git a/recipes/drivers-041/recipe.sh b/recipes/drivers-041/recipe.sh deleted file mode 100644 index ae52e81a..00000000 --- a/recipes/drivers-041/recipe.sh +++ /dev/null @@ -1,14 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/drivers.git -BRANCH=0.4.1 -CARGOFLAGS=--all - -function recipe_version { - echo "0.1.1" - skip=1 -} - -function recipe_stage { - mkdir -pv "$1/etc/pcid" - cp -v initfs.toml "$1/etc/pcid/initfs.toml" - cp -v filesystem.toml "$1/etc/pcid/filesystem.toml" -} From 1581974ca677c2c7873152c4c42cb50e704c790d Mon Sep 17 00:00:00 2001 From: Noa Date: Mon, 20 Mar 2023 15:02:37 -0500 Subject: [PATCH 1096/3180] Switch rustpython to toml recipe --- recipes/rustpython/recipe.sh | 10 ---------- recipes/rustpython/recipe.toml | 22 ++++++++++++++++++++++ 2 files changed, 22 insertions(+), 10 deletions(-) delete mode 100644 recipes/rustpython/recipe.sh create mode 100644 recipes/rustpython/recipe.toml diff --git a/recipes/rustpython/recipe.sh b/recipes/rustpython/recipe.sh deleted file mode 100644 index cdaa6787..00000000 --- a/recipes/rustpython/recipe.sh +++ /dev/null @@ -1,10 +0,0 @@ -GIT=https://github.com/RustPython/RustPython -BRANCH=redox-release -CARGOFLAGS=--no-default-features -export BUILDTIME_RUSTPYTHONPATH=/lib/rustpython/ - -function recipe_stage() { - dest="$(realpath "$1")" - mkdir -pv "$dest/lib/" - cp -r Lib "$dest/lib/rustpython" -} diff --git a/recipes/rustpython/recipe.toml b/recipes/rustpython/recipe.toml new file mode 100644 index 00000000..54f2f753 --- /dev/null +++ b/recipes/rustpython/recipe.toml @@ -0,0 +1,22 @@ +[source] +git = "https://github.com/RustPython/RustPython" +branch = "redox-release" + +[build] +dependencies = ["openssl", "zlib"] +template = "custom" +script = """ +(cd "${COOKBOOK_SOURCE}" && bash scripts/redox/uncomment-cargo.sh) +export BUILDTIME_RUSTPYTHONPATH=/lib/rustpython +export OPENSSL_DIR="${COOKBOOK_SYSROOT}" +export ZLIB_STATIC=1 +COOKBOOK_CARGO_FLAGS+=(--features ssl) +cookbook_cargo +mkdir -p "${COOKBOOK_STAGE}/lib" +rsync -aE \ + --exclude 'test/' \ + --exclude '__pycache__/' \ + --exclude '*.pyc' \ + --exclude '/README.md' \ + "${COOKBOOK_SOURCE}"/Lib/ "${COOKBOOK_STAGE}/lib/rustpython" +""" From 7aba4e66cb4dc6be39c7b3252b6f3ba0b06374c1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 31 May 2023 19:08:14 -0600 Subject: [PATCH 1097/3180] Enable more SDL2 features --- recipes/sdl2/recipe.toml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/recipes/sdl2/recipe.toml b/recipes/sdl2/recipe.toml index 13916e43..c7550df6 100644 --- a/recipes/sdl2/recipe.toml +++ b/recipes/sdl2/recipe.toml @@ -12,14 +12,10 @@ script = """ COOKBOOK_CONFIGURE_FLAGS=( --host="${TARGET}" --prefix="/" - --disable-loadso - --disable-pthread-sem --disable-pulseaudio - --disable-sdl-dlopen --disable-shared --disable-video-x11 --enable-audio - --enable-cdrom --enable-dummyaudio --enable-redoxaudio --enable-threads From 5e756a5de8263d94edc71737f5c38a0d0c1d86cf Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 9 Jun 2023 12:22:58 -0600 Subject: [PATCH 1098/3180] relibc-tests: convert to toml --- recipes/relibc-tests/recipe.sh | 13 ------------- recipes/relibc-tests/recipe.toml | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 13 deletions(-) delete mode 100644 recipes/relibc-tests/recipe.sh create mode 100644 recipes/relibc-tests/recipe.toml diff --git a/recipes/relibc-tests/recipe.sh b/recipes/relibc-tests/recipe.sh deleted file mode 100644 index dc39853b..00000000 --- a/recipes/relibc-tests/recipe.sh +++ /dev/null @@ -1,13 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/relibc.git - -function recipe_build { - "$REDOX_MAKE" NATIVE_RELIBC=1 -C tests -j"$($NPROC)" - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - mkdir -pv "$dest/share/relibc" - cp -rv "tests" "$dest/share/relibc/tests" - skip=1 -} diff --git a/recipes/relibc-tests/recipe.toml b/recipes/relibc-tests/recipe.toml new file mode 100644 index 00000000..023ac741 --- /dev/null +++ b/recipes/relibc-tests/recipe.toml @@ -0,0 +1,16 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/relibc.git" +branch = "master" + +[build] +template = "custom" +script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ +pushd tests +export CARGO_TEST="${COOKBOOK_CARGO}" +export NATIVE_RELIBC=1 +"${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" all bins_verify/relibc-tests +popd +mkdir -pv "${COOKBOOK_STAGE}/share/relibc" +cp -rv "tests" "${COOKBOOK_STAGE}/share/relibc/tests" +""" From 300e99bf523760bd29925bb0559610838a8d9ccb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 9 Jun 2023 12:46:20 -0600 Subject: [PATCH 1099/3180] rustpython: use new method for passing cargo flags --- recipes/rustpython/recipe.toml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/rustpython/recipe.toml b/recipes/rustpython/recipe.toml index 54f2f753..0d082a78 100644 --- a/recipes/rustpython/recipe.toml +++ b/recipes/rustpython/recipe.toml @@ -10,8 +10,7 @@ script = """ export BUILDTIME_RUSTPYTHONPATH=/lib/rustpython export OPENSSL_DIR="${COOKBOOK_SYSROOT}" export ZLIB_STATIC=1 -COOKBOOK_CARGO_FLAGS+=(--features ssl) -cookbook_cargo +cookbook_cargo --features ssl mkdir -p "${COOKBOOK_STAGE}/lib" rsync -aE \ --exclude 'test/' \ From f5c8f0d05209b897e701a8cfece9f36b275545e1 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Thu, 6 Jul 2023 16:22:35 +1000 Subject: [PATCH 1100/3180] drivers: add virtio* drivers Signed-off-by: Anhad Singh --- recipes/drivers-initfs/recipe.toml | 3 +++ recipes/drivers/recipe.toml | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/recipes/drivers-initfs/recipe.toml b/recipes/drivers-initfs/recipe.toml index c1b84a39..05060123 100644 --- a/recipes/drivers-initfs/recipe.toml +++ b/recipes/drivers-initfs/recipe.toml @@ -9,6 +9,9 @@ BINS=( nvmed pcid vesad + inputd + virtio-blkd + virtio-gpud ) case "${TARGET}" in diff --git a/recipes/drivers/recipe.toml b/recipes/drivers/recipe.toml index 9dc2d05f..806c041d 100644 --- a/recipes/drivers/recipe.toml +++ b/recipes/drivers/recipe.toml @@ -14,6 +14,7 @@ BINS=( alxd usbhidd usbscsid xhcid + virtio-netd ) # Add additional drivers to the list to build, that are not in drivers-initfs @@ -55,4 +56,4 @@ do driver="$(basename "$(dirname "$conf")")" cp -v "$conf" "${COOKBOOK_STAGE}/etc/pcid.d/$driver.toml" done -""" \ No newline at end of file +""" From 1c552fe0f62d417b9c54cfc6f052ded803524c40 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Thu, 6 Jul 2023 16:23:05 +1000 Subject: [PATCH 1101/3180] initfs: launch `inputd` before `vesad` Signed-off-by: Anhad Singh --- recipes/initfs/init.rc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/initfs/init.rc b/recipes/initfs/init.rc index bfbcad7a..d0cd7ac4 100644 --- a/recipes/initfs/init.rc +++ b/recipes/initfs/init.rc @@ -3,8 +3,9 @@ export TMPDIR /tmp nulld zerod randd +inputd vesad T T G -logd debug: display:1 +logd debug: display/vesa:1 stdio log: ps2d us ramfs logging From 053df828f7088748b43ab5f40081b492c0b59d2d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 7 Jul 2023 09:29:26 -0600 Subject: [PATCH 1102/3180] Add rtl8139d driver, sort driver binaries --- recipes/drivers-initfs/recipe.toml | 2 +- recipes/drivers/recipe.toml | 22 ++++++++++++---------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/recipes/drivers-initfs/recipe.toml b/recipes/drivers-initfs/recipe.toml index 05060123..1e819c83 100644 --- a/recipes/drivers-initfs/recipe.toml +++ b/recipes/drivers-initfs/recipe.toml @@ -6,10 +6,10 @@ template = "custom" script = """ BINS=( ahcid + inputd nvmed pcid vesad - inputd virtio-blkd virtio-gpud ) diff --git a/recipes/drivers/recipe.toml b/recipes/drivers/recipe.toml index 806c041d..52699ecc 100644 --- a/recipes/drivers/recipe.toml +++ b/recipes/drivers/recipe.toml @@ -5,16 +5,18 @@ git = "https://gitlab.redox-os.org/redox-os/drivers.git" template = "custom" script = """ # Drivers that are built on all architectures, and NOT in drivers-initfs -BINS=( alxd - e1000d - ihdad - ixgbed - rtl8168d - usbctl - usbhidd - usbscsid - xhcid - virtio-netd +BINS=( + alxd + e1000d + ihdad + ixgbed + rtl8139d + rtl8168d + usbctl + usbhidd + usbscsid + virtio-netd + xhcid ) # Add additional drivers to the list to build, that are not in drivers-initfs From 2035dd968b06142f430b7db258bef4e0db94fa4a Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Tue, 25 Jul 2023 19:32:35 +1000 Subject: [PATCH 1103/3180] initfs: switch to VT#3 before `run.d` * Make `vesad` allocate VTs 1..12 on startup. They can later be replaced by another display device. * Switch to VT#3 before `run.d` * Also set the mode of VT#3 to [`VtMode::Graphical`]. Signed-off-by: Anhad Singh --- recipes/initfs/init.rc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/initfs/init.rc b/recipes/initfs/init.rc index d0cd7ac4..a9f652aa 100644 --- a/recipes/initfs/init.rc +++ b/recipes/initfs/init.rc @@ -4,7 +4,7 @@ nulld zerod randd inputd -vesad T T G +vesad T T T T T T T T T T T T logd debug: display/vesa:1 stdio log: ps2d us @@ -14,4 +14,5 @@ pcid /etc/pcid/initfs.toml redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK cd file: export PATH file:/bin +inputd -G 3 run.d /etc/init.d From 209f0bcc40857c7294f29b54c56102e51b7d2427 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Tue, 25 Jul 2023 19:39:15 +1000 Subject: [PATCH 1104/3180] drivers: add `inputd` in drivers recipie Before it was just in `drivers-initfs`. Signed-off-by: Anhad Singh --- recipes/drivers/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/drivers/recipe.toml b/recipes/drivers/recipe.toml index 52699ecc..8d3f5d23 100644 --- a/recipes/drivers/recipe.toml +++ b/recipes/drivers/recipe.toml @@ -17,6 +17,7 @@ BINS=( usbscsid virtio-netd xhcid + inputd ) # Add additional drivers to the list to build, that are not in drivers-initfs From 4b659d85295925a81b38a86c48ec2eced444b2fb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 7 Aug 2023 14:22:04 -0600 Subject: [PATCH 1105/3180] Limit number of VTs, set 3 as graphical when vesad is started --- recipes/initfs/init.rc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/initfs/init.rc b/recipes/initfs/init.rc index a9f652aa..d0cd7ac4 100644 --- a/recipes/initfs/init.rc +++ b/recipes/initfs/init.rc @@ -4,7 +4,7 @@ nulld zerod randd inputd -vesad T T T T T T T T T T T T +vesad T T G logd debug: display/vesa:1 stdio log: ps2d us @@ -14,5 +14,4 @@ pcid /etc/pcid/initfs.toml redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK cd file: export PATH file:/bin -inputd -G 3 run.d /etc/init.d From df165b5b03046d69dacb51d37c7c97fc19fafc10 Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Tue, 8 Aug 2023 12:50:56 +0200 Subject: [PATCH 1106/3180] Remove kernel_ld.sh --- recipes/kernel/kernel_ld.sh | 17 ----------------- recipes/kernel/recipe.toml | 2 +- 2 files changed, 1 insertion(+), 18 deletions(-) delete mode 100755 recipes/kernel/kernel_ld.sh diff --git a/recipes/kernel/kernel_ld.sh b/recipes/kernel/kernel_ld.sh deleted file mode 100755 index 0f82b89d..00000000 --- a/recipes/kernel/kernel_ld.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash - -set -ex - -LD="$1" -shift - -if "${LD}" -z use-gs-for-tls 2>&1 | -grep "warning: -z use-gs-for-tls ignored" &> /dev/null -then - echo "Please update your prefix:" >&2 - echo " rm -rf prefix" >&2 - echo " make prefix" >&2 - exit 1 -fi - -exec "${LD}" -z use-gs-for-tls "$@" diff --git a/recipes/kernel/recipe.toml b/recipes/kernel/recipe.toml index 03d037bd..4d151de8 100644 --- a/recipes/kernel/recipe.toml +++ b/recipes/kernel/recipe.toml @@ -17,7 +17,7 @@ cargo rustc \ -C debuginfo=2 \ -C lto \ --emit link="${PWD}/libkernel.a" -"${COOKBOOK_RECIPE}/kernel_ld.sh" "${TARGET}-ld" \ +"${TARGET}-ld" \ --gc-sections \ -z max-page-size=0x1000 \ -T "${COOKBOOK_SOURCE}/linkers/${ARCH}.ld" \ From 73c662b9daa3f7e9c8deb411b8a994effac4b6a8 Mon Sep 17 00:00:00 2001 From: joshua Williams Date: Wed, 9 Aug 2023 21:15:42 +0000 Subject: [PATCH 1107/3180] Add Recipe Subfolders --- clean.sh | 2 +- cook.sh | 5 +-- fetch.sh | 5 +-- repo.sh | 9 ++++-- src/bin/cook.rs | 18 ++++++++--- src/bin/find_recipe.rs | 26 +++++++++++++++ src/bin/list_recipes.rs | 19 +++++++++++ src/lib.rs | 1 + src/recipe_find.rs | 72 +++++++++++++++++++++++++++++++++++++++++ status.sh | 5 +-- status_origin.sh | 5 +-- status_upstream.sh | 5 +-- unfetch.sh | 2 +- 13 files changed, 154 insertions(+), 20 deletions(-) create mode 100644 src/bin/find_recipe.rs create mode 100644 src/bin/list_recipes.rs create mode 100644 src/recipe_find.rs diff --git a/clean.sh b/clean.sh index f4c2eb61..d0b85abc 100755 --- a/clean.sh +++ b/clean.sh @@ -5,7 +5,7 @@ source config.sh if [ $# = 0 ] then - recipes="$(ls -1 recipes)" + recipes="$(target/release/list_recipes)" else recipes="$@" fi diff --git a/cook.sh b/cook.sh index ba4a7a12..fb010441 100755 --- a/cook.sh +++ b/cook.sh @@ -368,9 +368,10 @@ function op { if [ -n "$1" ] then - if [ -d "$ROOT/recipes/$1" ] + recipe_path=`target/release/find_recipe $1` + if [ -d "$ROOT/$recipe_path" ] then - export COOKBOOK_RECIPE="${ROOT}/recipes/$1" + export COOKBOOK_RECIPE="${ROOT}/$recipe_path" TARGET_DIR="${COOKBOOK_RECIPE}/target/${TARGET}" mkdir -p "${TARGET_DIR}" diff --git a/fetch.sh b/fetch.sh index 03368c77..1c5c57a8 100755 --- a/fetch.sh +++ b/fetch.sh @@ -5,14 +5,15 @@ source config.sh if [ $# = 0 ] then - recipes="$(ls -1 recipes)" + recipes="$(target/release/list_recipes)" else recipes="$@" fi for recipe in $recipes do - if [ -e "recipes/$recipe/recipe.toml" ] + recipe_path=`target/release/find_recipe $recipe` + if [ -e "$recipe_path/recipe.toml" ] then target/release/cook --fetch-only "$recipe" continue diff --git a/repo.sh b/repo.sh index 1ca42d99..2fad01da 100755 --- a/repo.sh +++ b/repo.sh @@ -17,12 +17,14 @@ done if [ "$recipes" == "" ] then - recipes="$(ls -1 recipes)" + recipes="$(target/release/list_recipes)" fi for recipe in $recipes do - COOKBOOK_RECIPE="recipes/$recipe" + recipe_path=`target/release/find_recipe $recipe` + echo recipe path is $recipe_path + COOKBOOK_RECIPE="$recipe_path" TARGET_DIR="${COOKBOOK_RECIPE}/target/${TARGET}" COOKBOOK_BUILD="${TARGET_DIR}/build" COOKBOOK_STAGE="${TARGET_DIR}/stage" @@ -113,7 +115,8 @@ mkdir -p "$REPO" for recipe in $recipes do - COOKBOOK_RECIPE="recipes/$recipe" + recipe_path=`target/release/find_recipe $recipe` + COOKBOOK_RECIPE="$recipe_path" TARGET_DIR="${COOKBOOK_RECIPE}/target/${TARGET}" COOKBOOK_STAGE="${TARGET_DIR}/stage" diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 9fe35867..6b00832e 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1,6 +1,7 @@ use cookbook::blake3::blake3_progress; use cookbook::recipe::{Recipe, SourceRecipe, BuildKind, BuildRecipe, PackageRecipe}; use cookbook::sha256::sha256_progress; +use cookbook::recipe_find::recipe_find; use std::{ env, fs, @@ -399,7 +400,14 @@ fn build(recipe_dir: &Path, source_dir: &Path, target_dir: &Path, build: &BuildR for dependency in build.dependencies.iter() { let public_path = "build/id_ed25519.pub.toml"; //TODO: sanitize name - let archive_path = format!("recipes/{}/target/{}/stage.pkgar", dependency, redoxer::target()); + let dependency_dir = recipe_find(dependency, Path::new("recipes"))?; + if dependency_dir.is_none() { + return Err(format!( + "failed to find recipe directory '{}'", + dependency + )); + } + let archive_path = format!("{}/target/{}/stage.pkgar", dependency_dir.unwrap().display(), redoxer::target()); pkgar::extract( public_path, &archive_path, @@ -668,14 +676,14 @@ pub struct CookRecipe { impl CookRecipe { pub fn new(name: String) -> Result { //TODO: sanitize recipe name? - let dir = Path::new("recipes").join(&name); - if ! dir.is_dir() { + let dir = recipe_find(&name, Path::new("recipes"))?; + if dir.is_none() { return Err(format!( "failed to find recipe directory '{}'", - dir.display() + name )); } - + let dir = dir.unwrap(); let file = dir.join("recipe.toml"); if ! file.is_file() { return Err(format!( diff --git a/src/bin/find_recipe.rs b/src/bin/find_recipe.rs new file mode 100644 index 00000000..ea84db43 --- /dev/null +++ b/src/bin/find_recipe.rs @@ -0,0 +1,26 @@ +use cookbook::recipe_find::recipe_find; +use std::env::args; +use std::path::Path; +use std::process::exit; +// use clap::Parser; + +fn usage() { + println!("Usage: find_recipe recipe_name"); +} +fn main() { + if args().len() != 2 { + usage(); + exit(2); + } + let result = recipe_find(&args().last().unwrap(), Path::new("recipes")); + if result.is_err() { + eprintln!("{}", result.err().unwrap()); + exit(2); + } else if result.as_ref().unwrap().is_none() { + eprintln!("recipe {} not found", &args().last().unwrap()); + exit(1); + } else { + println!("{}", result.unwrap().unwrap().display()); + exit(0); + } +} diff --git a/src/bin/list_recipes.rs b/src/bin/list_recipes.rs new file mode 100644 index 00000000..da3171e1 --- /dev/null +++ b/src/bin/list_recipes.rs @@ -0,0 +1,19 @@ +use cookbook::recipe_find::list_recipes; +use std::path::Path; +use std::process::exit; +// use clap::Parser; + +fn main() { + + let result = list_recipes( Path::new("recipes")); + if result.is_err() { + eprintln!("{}", result.err().unwrap()); + exit(2); + } else if result.as_ref().unwrap().is_empty() { + eprintln!("recipes not found"); + exit(1); + } else { + result.unwrap().iter().for_each(|recipe| println!("{}", recipe)); + exit(0); + } +} diff --git a/src/lib.rs b/src/lib.rs index 2fbe5353..572b1716 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,6 @@ pub mod blake3; pub mod recipe; pub mod sha256; +pub mod recipe_find; mod progress_bar; diff --git a/src/recipe_find.rs b/src/recipe_find.rs new file mode 100644 index 00000000..286e62a8 --- /dev/null +++ b/src/recipe_find.rs @@ -0,0 +1,72 @@ +use std::fs::{self}; +use std::path::{Path, PathBuf}; + +pub fn recipe_find(recipe: &str, dir: &Path) -> Result, String> { + let mut recipe_path = None; + if !dir.is_dir() { + return Ok(None); + } + for entry in fs::read_dir(dir).map_err(|e| e.to_string())? { + let entry = entry.map_err(|e| e.to_string())?; + if entry.file_name().to_string_lossy() == "recipe.sh" + || entry.file_name().to_string_lossy() == "recipe.toml" + { + // println!("recipe is {:?}", dir.file_name()); + if dir.file_name().unwrap().to_string_lossy() != recipe { + return Ok(None); + } else { + return Ok(Some(dir.to_path_buf())); + } + } + } + + for entry in fs::read_dir(dir).map_err(|e| e.to_string())? { + let entry = entry.map_err(|e| e.to_string())?; + if !entry.file_type().map_err(|e| e.to_string())?.is_dir() { + continue; + } + let found = recipe_find(recipe, entry.path().as_path())?; + if found.is_none() { + continue; + } + if recipe_path.is_none() { + recipe_path = found; + } else { + return Err(format!( + "recipe {} has two or more entries {}, {}", + recipe, + recipe_path.unwrap().display(), + found.unwrap().display() + )); + } + } + + Ok(recipe_path) +} + +pub fn list_recipes(dir: &Path) -> Result, String> { + let mut recipes = Vec::::new(); + if !dir.is_dir() { + return Ok(recipes); + } + for entry in fs::read_dir(dir).map_err(|e| e.to_string())? { + let entry = entry.map_err(|e| e.to_string())?; + if entry.file_name().to_string_lossy() == "recipe.sh" + || entry.file_name().to_string_lossy() == "recipe.toml" + { + recipes.push(dir.file_name().ok_or(format!("could not unwrap the filename for {:?}", dir))?.to_string_lossy().to_string()); + return Ok(recipes); + } + } + + for entry in fs::read_dir(dir).map_err(|e| e.to_string())? { + let entry = entry.map_err(|e| e.to_string())?; + if !entry.file_type().map_err(|e| e.to_string())?.is_dir() { + continue; + } + let mut found = list_recipes(entry.path().as_path())?; + recipes.append(&mut found); + } + recipes.sort(); + Ok(recipes) +} diff --git a/status.sh b/status.sh index fe715ffc..19aa856e 100755 --- a/status.sh +++ b/status.sh @@ -5,14 +5,15 @@ source config.sh if [ $# = 0 ] then - recipes="$(ls -1 recipes)" + recipes="$(target/release/list_recipes)" else recipes="$@" fi for recipe in $recipes do - if [ -d "recipes/$recipe/source" ] + recipe_path=`target/release/find_recipe $recipe` + if [ -d "$recipe_path/source" ] then status="$(COOK_QUIET=1 ./cook.sh "$recipe" status)" diff --git a/status_origin.sh b/status_origin.sh index cf3e1ab4..b82bcedc 100755 --- a/status_origin.sh +++ b/status_origin.sh @@ -5,14 +5,15 @@ source config.sh if [ $# = 0 ] then - recipes="$(ls -1 recipes)" + recipes="$(target/release/list_recipes)" else recipes="$@" fi for recipe in $recipes do - if [ -d "recipes/$recipe/source" ] + recipe_path=`target/release/find_recipe $recipe` + if [ -d "$recipe_path/source" ] then status="$(COOK_QUIET=1 ./cook.sh "$recipe" status_origin)" diff --git a/status_upstream.sh b/status_upstream.sh index defd1c53..eb150c00 100755 --- a/status_upstream.sh +++ b/status_upstream.sh @@ -5,14 +5,15 @@ source config.sh if [ $# = 0 ] then - recipes="$(ls -1 recipes)" + recipes="$(target/release/list_recipes)" else recipes="$@" fi for recipe in $recipes do - if [ -d "recipes/$recipe/source" ] + recipe_path=`target/release/find_recipe $recipe` + if [ -d "$recipe_path/source" ] then status="$(COOK_QUIET=1 ./cook.sh "$recipe" status_upstream)" diff --git a/unfetch.sh b/unfetch.sh index a63be6a7..b6877cc3 100755 --- a/unfetch.sh +++ b/unfetch.sh @@ -5,7 +5,7 @@ source config.sh if [ $# = 0 ] then - recipes="$(ls -1 recipes)" + recipes="$(target/release/list_recipes)" else recipes="$@" fi From 213a33bb43fc44145c295325971668a0fa67676c Mon Sep 17 00:00:00 2001 From: kivimango Date: Wed, 16 Aug 2023 12:14:14 +0200 Subject: [PATCH 1108/3180] Use shorthand init --- src/progress_bar.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/progress_bar.rs b/src/progress_bar.rs index c02b939d..597fb955 100644 --- a/src/progress_bar.rs +++ b/src/progress_bar.rs @@ -10,8 +10,8 @@ pub struct ProgressBarRead<'p, 'r, P: Write + 'p, R: Read + 'r> { impl<'p, 'r, P: Write, R: Read> ProgressBarRead<'p, 'r, P, R> { pub fn new(pb: &'p mut ProgressBar

, r: &'r mut R) -> ProgressBarRead<'p, 'r, P, R> { ProgressBarRead { - pb: pb, - r: r + pb, + r } } } @@ -32,8 +32,8 @@ pub struct ProgressBarWrite<'p, 'w, P: Write + 'p, W: Write + 'w> { impl<'p, 'w, P: Write, W: Write> ProgressBarWrite<'p, 'w, P, W> { pub fn new(pb: &'p mut ProgressBar

, w: &'w mut W) -> ProgressBarWrite<'p, 'w, P, W> { ProgressBarWrite { - pb: pb, - w: w + pb, + w } } } From 10ea123fd66c3a6ac8b7b0f95c45a608d03e3aca Mon Sep 17 00:00:00 2001 From: kivimango Date: Wed, 16 Aug 2023 12:15:48 +0200 Subject: [PATCH 1109/3180] Renamed unused new() to _new() --- src/progress_bar.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/progress_bar.rs b/src/progress_bar.rs index 597fb955..75eceb47 100644 --- a/src/progress_bar.rs +++ b/src/progress_bar.rs @@ -30,7 +30,7 @@ pub struct ProgressBarWrite<'p, 'w, P: Write + 'p, W: Write + 'w> { } impl<'p, 'w, P: Write, W: Write> ProgressBarWrite<'p, 'w, P, W> { - pub fn new(pb: &'p mut ProgressBar

, w: &'w mut W) -> ProgressBarWrite<'p, 'w, P, W> { + pub fn _new(pb: &'p mut ProgressBar

, w: &'w mut W) -> ProgressBarWrite<'p, 'w, P, W> { ProgressBarWrite { pb, w From 33d361d43a8b757354b345a01ffbc227a163e9bb Mon Sep 17 00:00:00 2001 From: kivimango Date: Wed, 16 Aug 2023 12:17:43 +0200 Subject: [PATCH 1110/3180] Fix compiler warnings for unused variables --- src/bin/cook.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 6b00832e..f93dac90 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -204,7 +204,7 @@ fn fetch(recipe_dir: &Path, source: &Option) -> Result /dev/null || // git remote add upstream "$GIT_UPSTREAM" @@ -593,7 +593,7 @@ done Ok(stage_dir) } -fn package(recipe_dir: &Path, stage_dir: &Path, target_dir: &Path, package: &PackageRecipe) -> Result { +fn package(_recipe_dir: &Path, stage_dir: &Path, target_dir: &Path, _package: &PackageRecipe) -> Result { //TODO: metadata like dependencies, name, and version let secret_path = "build/id_ed25519.toml"; @@ -659,7 +659,7 @@ fn cook(recipe_dir: &Path, recipe: &Recipe, fetch_only: bool) -> Result<(), Stri err ))?; - let package_file = package(&recipe_dir, &stage_dir, &target_dir, &recipe.package).map_err(|err| format!( + let _package_file = package(&recipe_dir, &stage_dir, &target_dir, &recipe.package).map_err(|err| format!( "failed to package: {}", err ))?; From 62f438cb38858f412775c70594bf699fdcd57425 Mon Sep 17 00:00:00 2001 From: kivimango Date: Wed, 16 Aug 2023 23:13:18 +0200 Subject: [PATCH 1111/3180] clippy: Fix needless_borrows --- src/bin/cook.rs | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index f93dac90..0d076c83 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -27,7 +27,7 @@ fn remove_all(path: &Path) -> Result<(), String> { } fn create_dir(dir: &Path) -> Result<(), String> { - fs::create_dir(&dir).map_err(|err| format!( + fs::create_dir(dir).map_err(|err| format!( "failed to create '{}': {}\n{:?}", dir.display(), err, @@ -70,7 +70,7 @@ fn modified_dir_inner bool>(dir: &Path, filter: F) -> io: } fn modified_dir(dir: &Path) -> Result { - modified_dir_inner(&dir, |_| true).map_err(|err| format!( + modified_dir_inner(dir, |_| true).map_err(|err| format!( "failed to get modified time of '{}': {}\n{:#?}", dir.display(), err, @@ -79,7 +79,7 @@ fn modified_dir(dir: &Path) -> Result { } fn modified_dir_ignore_git(dir: &Path) -> Result { - modified_dir_inner(&dir, |entry| { + modified_dir_inner(dir, |entry| { entry.file_name().to_str().map(|s| s != ".git").unwrap_or(true) }).map_err(|err| format!( "failed to get modified time of '{}': {}\n{:#?}", @@ -172,9 +172,9 @@ fn fetch(recipe_dir: &Path, source: &Option) -> Result) -> Result) -> Result Result { - let source_modified = modified_dir_ignore_git(&source_dir)?; + let source_modified = modified_dir_ignore_git(source_dir)?; let sysroot_dir = target_dir.join("sysroot"); // Rebuild sysroot if source is newer @@ -603,11 +603,11 @@ fn package(_recipe_dir: &Path, stage_dir: &Path, target_dir: &Path, _package: &P create_dir(Path::new("build"))?; } let (public_key, secret_key) = pkgar_keys::SecretKeyFile::new(); - public_key.save(&public_path).map_err(|err| format!( + public_key.save(public_path).map_err(|err| format!( "failed to save pkgar public key: {:?}", err ))?; - secret_key.save(&secret_path).map_err(|err| format!( + secret_key.save(secret_path).map_err(|err| format!( "failed to save pkgar secret key: {:?}", err ))?; @@ -617,7 +617,7 @@ fn package(_recipe_dir: &Path, stage_dir: &Path, target_dir: &Path, _package: &P // Rebuild package if stage is newer //TODO: rebuild on recipe changes if package_file.is_file() { - let stage_modified = modified_dir(&stage_dir)?; + let stage_modified = modified_dir(stage_dir)?; if modified(&package_file)? < stage_modified { eprintln!("DEBUG: '{}' newer than '{}'", stage_dir.display(), package_file.display()); remove_all(&package_file)?; @@ -638,7 +638,7 @@ fn package(_recipe_dir: &Path, stage_dir: &Path, target_dir: &Path, _package: &P } fn cook(recipe_dir: &Path, recipe: &Recipe, fetch_only: bool) -> Result<(), String> { - let source_dir = fetch(&recipe_dir, &recipe.source).map_err(|err| format!( + let source_dir = fetch(recipe_dir, &recipe.source).map_err(|err| format!( "failed to fetch: {}", err ))?; @@ -654,12 +654,12 @@ fn cook(recipe_dir: &Path, recipe: &Recipe, fetch_only: bool) -> Result<(), Stri create_dir(&target_dir)?; } - let stage_dir = build(&recipe_dir, &source_dir, &target_dir, &recipe.build).map_err(|err| format!( + let stage_dir = build(recipe_dir, &source_dir, &target_dir, &recipe.build).map_err(|err| format!( "failed to build: {}", err ))?; - let _package_file = package(&recipe_dir, &stage_dir, &target_dir, &recipe.package).map_err(|err| format!( + let _package_file = package(recipe_dir, &stage_dir, &target_dir, &recipe.package).map_err(|err| format!( "failed to package: {}", err ))?; From 6d245b263bba2c57c00da739b70c7966003aa29b Mon Sep 17 00:00:00 2001 From: kivimango Date: Wed, 16 Aug 2023 23:24:07 +0200 Subject: [PATCH 1112/3180] clippy: Fix nested if statements --- src/bin/cook.rs | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 0d076c83..e388fdd0 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -381,11 +381,9 @@ fn build(recipe_dir: &Path, source_dir: &Path, target_dir: &Path, build: &BuildR let sysroot_dir = target_dir.join("sysroot"); // Rebuild sysroot if source is newer //TODO: rebuild on recipe changes - if sysroot_dir.is_dir() { - if modified_dir(&sysroot_dir)? < source_modified { - eprintln!("DEBUG: '{}' newer than '{}'", source_dir.display(), sysroot_dir.display()); - remove_all(&sysroot_dir)?; - } + if sysroot_dir.is_dir() && modified_dir(&sysroot_dir)? < source_modified { + eprintln!("DEBUG: '{}' newer than '{}'", source_dir.display(), sysroot_dir.display()); + remove_all(&sysroot_dir)?; } if ! sysroot_dir.is_dir() { // Create sysroot.tmp @@ -427,12 +425,11 @@ fn build(recipe_dir: &Path, source_dir: &Path, target_dir: &Path, build: &BuildR let stage_dir = target_dir.join("stage"); // Rebuild stage if source is newer //TODO: rebuild on recipe changes - if stage_dir.is_dir() { - if modified_dir(&stage_dir)? < source_modified { - eprintln!("DEBUG: '{}' newer than '{}'", source_dir.display(), stage_dir.display()); - remove_all(&stage_dir)?; - } + if stage_dir.is_dir() && modified_dir(&stage_dir)? < source_modified { + eprintln!("DEBUG: '{}' newer than '{}'", source_dir.display(), stage_dir.display()); + remove_all(&stage_dir)?; } + if ! stage_dir.is_dir() { // Create stage.tmp let stage_dir_tmp = target_dir.join("stage.tmp"); From 0664e21e6d69cdd6924b057d2d51aa272623ab60 Mon Sep 17 00:00:00 2001 From: kivimango Date: Wed, 16 Aug 2023 23:25:18 +0200 Subject: [PATCH 1113/3180] clippy: Fix unnecessary unwrap() --- src/bin/list_recipes.rs | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/bin/list_recipes.rs b/src/bin/list_recipes.rs index da3171e1..759dbc9e 100644 --- a/src/bin/list_recipes.rs +++ b/src/bin/list_recipes.rs @@ -4,16 +4,21 @@ use std::process::exit; // use clap::Parser; fn main() { - let result = list_recipes( Path::new("recipes")); - if result.is_err() { - eprintln!("{}", result.err().unwrap()); - exit(2); - } else if result.as_ref().unwrap().is_empty() { - eprintln!("recipes not found"); - exit(1); - } else { - result.unwrap().iter().for_each(|recipe| println!("{}", recipe)); - exit(0); + + match result { + Ok(result) => { + if result.is_empty() { + eprintln!("recipes not found"); + exit(1); + } else { + result.iter().for_each(|recipe| println!("{recipe}")); + exit(0); + } + } + Err(error) => { + eprintln!("{error}"); + exit(2); + } } } From 2d5a27c2262800a8503235cfbe1b785233233d2f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 21 Aug 2023 19:20:51 +0000 Subject: [PATCH 1114/3180] Fix the zlib recipe --- recipes/zlib/recipe.toml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/recipes/zlib/recipe.toml b/recipes/zlib/recipe.toml index 122a1d1d..8e9a8709 100644 --- a/recipes/zlib/recipe.toml +++ b/recipes/zlib/recipe.toml @@ -1,8 +1,6 @@ [source] -#git = "https://github.com/madler/zlib" -#rev = "04f42ceca40f73e2978b50e93806c2a18c1281fc" -tar = "https://zlib.net/zlib-1.2.13.tar.xz" -blake3 = "cc042bf8507e02f5799cf6fdb49278402a7b748defe3ade425e35e14a7c00186" +tar = "https://www.zlib.net/fossils/zlib-1.3.tar.gz" +blake3 = "ec1abc6f672a7a6ee6f49ba544cc9529f73121b478310473be44fee22a140ebf" [build] template = "custom" script = """ From fa7a8da05e622bdf3ceffdaa31b80aac24a90f14 Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Thu, 7 Sep 2023 17:38:19 +0200 Subject: [PATCH 1115/3180] Add livedisk driver to init.rc --- recipes/drivers-initfs/recipe.toml | 1 + recipes/initfs/init.rc | 1 + 2 files changed, 2 insertions(+) diff --git a/recipes/drivers-initfs/recipe.toml b/recipes/drivers-initfs/recipe.toml index 1e819c83..fd3ab259 100644 --- a/recipes/drivers-initfs/recipe.toml +++ b/recipes/drivers-initfs/recipe.toml @@ -12,6 +12,7 @@ BINS=( vesad virtio-blkd virtio-gpud + lived ) case "${TARGET}" in diff --git a/recipes/initfs/init.rc b/recipes/initfs/init.rc index d0cd7ac4..68c6cc71 100644 --- a/recipes/initfs/init.rc +++ b/recipes/initfs/init.rc @@ -11,6 +11,7 @@ ps2d us ramfs logging acpid pcid /etc/pcid/initfs.toml +lived redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK cd file: export PATH file:/bin From 86d622203acde6e72be78fee45fb261055762645 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 7 Sep 2023 16:06:26 -0600 Subject: [PATCH 1116/3180] Update Cargo.lock --- Cargo.lock | 579 +++++++++++++++++++++++------------------------------ 1 file changed, 252 insertions(+), 327 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2a354c46..30ae7209 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.19.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ "gimli", ] @@ -37,13 +37,19 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.0.1" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04" +checksum = "0c378d78423fdad8089616f827526ee33c19f2fddbd5de1629152c9593ba4783" dependencies = [ "memchr", ] +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + [[package]] name = "android_system_properties" version = "0.1.5" @@ -92,9 +98,9 @@ checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] name = "arrayvec" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "atty" @@ -115,9 +121,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" -version = "0.3.67" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ "addr2line", "cc", @@ -162,13 +168,19 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" + [[package]] name = "blake2" version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -200,16 +212,16 @@ dependencies = [ [[package]] name = "blake3" -version = "1.3.3" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ae2468a89544a466886840aa467a25b766499f4f04bf7d9fcd10ecee9fccef" +checksum = "199c42ab6972d92c9f8995f086273d25c42fc0f7b2a1fcefba465c1352d25ba5" dependencies = [ "arrayref", - "arrayvec 0.7.2", + "arrayvec 0.7.4", "cc", "cfg-if 1.0.0", - "constant_time_eq 0.2.5", - "digest 0.10.6", + "constant_time_eq 0.3.0", + "digest 0.10.7", ] [[package]] @@ -242,17 +254,11 @@ dependencies = [ "byte-tools", ] -[[package]] -name = "build_const" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ae4235e6dac0694637c763029ecea1a2ec9e4e06ec2729bd21ba4d9c863eb7" - [[package]] name = "bumpalo" -version = "3.12.1" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b1ce199063694f33ffb7dd4e0ee620741495c32833cde5aa08f02a0bf96f0c8" +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" [[package]] name = "byte-tools" @@ -274,9 +280,12 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "cc" -version = "1.0.79" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] [[package]] name = "cfg-if" @@ -292,17 +301,16 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.24" +version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b" +checksum = "defd4e7873dbddba6c7c91e199c7fcb946abc4a6a4ac3195400bcfb01b5de877" dependencies = [ + "android-tzdata", "iana-time-zone", "js-sys", - "num-integer", "num-traits", - "time", "wasm-bindgen", - "winapi", + "windows-targets 0.48.5", ] [[package]] @@ -322,23 +330,13 @@ checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" dependencies = [ "ansi_term", "atty", - "bitflags", + "bitflags 1.3.2", "strsim", "textwrap", "unicode-width", "vec_map", ] -[[package]] -name = "codespan-reporting" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" -dependencies = [ - "termcolor", - "unicode-width", -] - [[package]] name = "constant_time_eq" version = "0.1.5" @@ -347,9 +345,9 @@ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "constant_time_eq" -version = "0.2.5" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13418e745008f7349ec7e449155f419a61b92b58a99cc3616942b926825ec76b" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" [[package]] name = "core-foundation-sys" @@ -359,22 +357,28 @@ checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] name = "cpufeatures" -version = "0.2.7" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e4c1eaa2012c47becbbad2ab175484c2a84d1185b566fb2cc5b8707343dfe58" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" dependencies = [ "libc", ] [[package]] name = "crc" -version = "1.8.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d663548de7f5cca343f1e0a48d14dcfb0e9eb4e079ec58883b7251539fa10aeb" +checksum = "86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfe" dependencies = [ - "build_const", + "crc-catalog", ] +[[package]] +name = "crc-catalog" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cace84e55f07e7301bae1c519df89cdad8cc3cd868413d3fdbdeca9ff3db484" + [[package]] name = "crc32fast" version = "1.3.2" @@ -407,9 +411,9 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.14" +version = "0.9.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" dependencies = [ "autocfg", "cfg-if 1.0.0", @@ -420,9 +424,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.15" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" dependencies = [ "cfg-if 1.0.0", ] @@ -447,50 +451,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "cxx" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93" -dependencies = [ - "cc", - "cxxbridge-flags", - "cxxbridge-macro", - "link-cplusplus", -] - -[[package]] -name = "cxx-build" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12cee708e8962df2aeb38f594aae5d827c022b6460ac71a7a3e2c3c2aae5a07b" -dependencies = [ - "cc", - "codespan-reporting", - "once_cell", - "proc-macro2", - "quote", - "scratch", - "syn 2.0.15", -] - -[[package]] -name = "cxxbridge-flags" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7944172ae7e4068c533afbb984114a56c46e9ccddda550499caa222902c7f7bb" - -[[package]] -name = "cxxbridge-macro" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.15", -] - [[package]] name = "digest" version = "0.8.1" @@ -511,9 +471,9 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", "crypto-common", @@ -560,9 +520,9 @@ dependencies = [ [[package]] name = "either" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "env_logger" @@ -572,16 +532,22 @@ checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" dependencies = [ "atty", "humantime", - "log 0.4.17", + "log 0.4.20", "regex", "termcolor", ] [[package]] -name = "errno" -version = "0.3.1" +name = "equivalent" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd" dependencies = [ "errno-dragonfly", "libc", @@ -632,12 +598,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "1.9.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] +checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" [[package]] name = "fatfs" @@ -645,21 +608,21 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05669f8e7e2d7badc545c513710f0eba09c2fbef683eb859fd79c46c355048e0" dependencies = [ - "bitflags", + "bitflags 1.3.2", "byteorder", "chrono", - "log 0.4.17", + "log 0.4.20", ] [[package]] name = "filetime" -version = "0.2.21" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153" +checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall 0.2.16", + "redox_syscall 0.3.5", "windows-sys 0.48.0", ] @@ -675,7 +638,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "315ce685aca5ddcc5a3e7e436ef47d4a5d0064462849b6f0f628c28140103531" dependencies = [ - "log 0.4.17", + "log 0.4.20", ] [[package]] @@ -691,7 +654,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5910691a0ececcc6eba8bb14029025c2d123e96a53db1533f6a4602861a5aaf7" dependencies = [ "libc", - "log 0.4.17", + "log 0.4.20", "memchr", "page_size", "pkg-config", @@ -732,9 +695,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if 1.0.0", "libc", @@ -743,27 +706,27 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.2" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" [[package]] name = "gpt" -version = "3.0.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dd7365d734a70ac5dd7be791b0c96083852188df015b8c665bb2dadb108a743" +checksum = "8283e7331b8c93b9756e0cfdbcfb90312852f953c6faf9bf741e684cc3b6ad69" dependencies = [ - "bitflags", + "bitflags 2.4.0", "crc", - "log 0.4.17", - "uuid 0.8.2", + "log 0.4.20", + "uuid 1.4.1", ] [[package]] name = "hashbrown" -version = "0.12.3" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" [[package]] name = "hermit-abi" @@ -776,18 +739,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.2.6" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" [[package]] name = "hex" @@ -843,9 +797,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.56" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0722cd7114b7de04316e7ea5456a0bbb20e4adb46fd27a3697adb812cff0f37c" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -857,12 +811,11 @@ dependencies = [ [[package]] name = "iana-time-zone-haiku" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" dependencies = [ - "cxx", - "cxx-build", + "cc", ] [[package]] @@ -878,34 +831,14 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.3" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" dependencies = [ - "autocfg", + "equivalent", "hashbrown", ] -[[package]] -name = "instant" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "io-lifetimes" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" -dependencies = [ - "hermit-abi 0.3.1", - "libc", - "windows-sys 0.48.0", -] - [[package]] name = "itertools" version = "0.8.2" @@ -917,9 +850,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.61" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" dependencies = [ "wasm-bindgen", ] @@ -947,9 +880,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.142" +version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "libflate" @@ -975,20 +908,11 @@ dependencies = [ "walkdir", ] -[[package]] -name = "link-cplusplus" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" -dependencies = [ - "cc", -] - [[package]] name = "linux-raw-sys" -version = "0.3.7" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ece97ea872ece730aed82664c424eb4c8291e1ff2480247ccf7409044bc6479f" +checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" [[package]] name = "log" @@ -996,17 +920,14 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" dependencies = [ - "log 0.4.17", + "log 0.4.20", ] [[package]] name = "log" -version = "0.4.17" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if 1.0.0", -] +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "matches" @@ -1016,15 +937,15 @@ checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" [[package]] name = "memchr" -version = "2.5.0" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" [[package]] name = "memoffset" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] @@ -1035,7 +956,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa0916b001582d253822171bd23f4a0229d32b9507fae236f5da8cad515ba7c" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", "libc", "windows-sys 0.45.0", ] @@ -1051,39 +972,29 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.6.2" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" dependencies = [ "adler", ] -[[package]] -name = "num-integer" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" -dependencies = [ - "autocfg", - "num-traits", -] - [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" dependencies = [ "autocfg", ] [[package]] name = "num_cpus" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi 0.3.2", "libc", ] @@ -1095,18 +1006,18 @@ checksum = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" [[package]] name = "object" -version = "0.30.3" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.17.1" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "opaque-debug" @@ -1206,7 +1117,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a6e0af74b5c0a43011e56c729d87b8f7570611ce12e45ddb5c72b88e9512083" dependencies = [ - "bitflags", + "bitflags 1.3.2", "blake3 0.3.8", "plain", "sodiumoxide", @@ -1245,9 +1156,9 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro2" -version = "1.0.56" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" dependencies = [ "unicode-ident", ] @@ -1263,9 +1174,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.26" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -1335,7 +1246,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", ] [[package]] @@ -1373,7 +1284,7 @@ dependencies = [ name = "redox_cookbook" version = "0.1.0" dependencies = [ - "blake3 1.3.3", + "blake3 1.4.1", "pbr", "pkgar", "pkgar-keys", @@ -1460,7 +1371,7 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ - "bitflags", + "bitflags 1.3.2", ] [[package]] @@ -1469,7 +1380,7 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" dependencies = [ - "bitflags", + "bitflags 1.3.2", ] [[package]] @@ -1487,7 +1398,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", "redox_syscall 0.2.16", "thiserror", ] @@ -1504,7 +1415,7 @@ dependencies = [ "redox_syscall 0.2.16", "redoxfs", "tempfile", - "toml 0.7.3", + "toml 0.7.6", ] [[package]] @@ -1519,7 +1430,7 @@ dependencies = [ "env_logger", "failure", "fuser", - "getrandom 0.2.9", + "getrandom 0.2.10", "libc", "redox_simple_endian", "redox_syscall 0.2.16", @@ -1531,9 +1442,21 @@ dependencies = [ [[package]] name = "regex" -version = "1.8.1" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af83e617f331cc6ae2da5443c602dfa5af81e517212d9d611a5b3ba1777b5370" +checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795" dependencies = [ "aho-corasick", "memchr", @@ -1542,9 +1465,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.7.1" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5996294f19bd3aae0453a862ad728f60e6600695733dd5df01da90c54363a3c" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" [[package]] name = "ring" @@ -1584,13 +1507,12 @@ checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustix" -version = "0.37.19" +version = "0.38.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acf8729d8542766f1b2cf77eb034d52f40d375bb8b615d0b147089946e16613d" +checksum = "c0c3dde1fc030af041adc40e79c0e7fbcf431dd24870053d187d7c66e4b87453" dependencies = [ - "bitflags", + "bitflags 2.4.0", "errno", - "io-lifetimes", "libc", "linux-raw-sys", "windows-sys 0.48.0", @@ -1603,7 +1525,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "942b71057b31981152970d57399c25f72e27a6ee0d207a669d8304cabf44705b" dependencies = [ "base64 0.9.3", - "log 0.4.17", + "log 0.4.20", "ring", "sct", "untrusted", @@ -1627,15 +1549,9 @@ dependencies = [ [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" - -[[package]] -name = "scratch" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sct" @@ -1665,42 +1581,42 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.162" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71b2f6e1ab5c2b98c05f0f35b236b22e8df7ead6ffbf51d7808da7f8817e7ab6" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.162" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2a0814352fd64b58489904a44ea8d90cb1a91dcb6b4f5ebabc32c8318e93cb6" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.31", ] [[package]] name = "serde_spanned" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0efd8caf556a6cebd3b285caf480045fcc1ac04f6bd786b09a6f11af30c4fcf4" +checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" dependencies = [ "serde", ] [[package]] name = "sha2" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" dependencies = [ "cfg-if 1.0.0", "cpufeatures", - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -1724,9 +1640,9 @@ checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" [[package]] name = "smallvec" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" [[package]] name = "sodiumoxide" @@ -1747,9 +1663,9 @@ checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] name = "subtle" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "syn" @@ -1764,9 +1680,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.15" +version = "2.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822" +checksum = "718fa2415bcb8d8bd775917a1bf12a7931b6dfa890753378538118181e0cb398" dependencies = [ "proc-macro2", "quote", @@ -1793,9 +1709,9 @@ checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" [[package]] name = "tar" -version = "0.4.38" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6" +checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" dependencies = [ "filetime", "libc", @@ -1804,15 +1720,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.5.0" +version = "3.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998" +checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" dependencies = [ "cfg-if 1.0.0", "fastrand", "redox_syscall 0.3.5", "rustix", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] @@ -1847,22 +1763,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.40" +version = "1.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.40" +version = "1.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.31", ] [[package]] @@ -1911,9 +1827,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.7.3" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b403acf6f2bb0859c93c7f0d967cb4a75a7ac552100f9322faf64dc047669b21" +checksum = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542" dependencies = [ "serde", "serde_spanned", @@ -1923,18 +1839,18 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.19.8" +version = "0.19.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" +checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" dependencies = [ "indexmap", "serde", @@ -1978,9 +1894,9 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.8" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "unicode-normalization" @@ -2033,7 +1949,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24cc0f6d6f267b73e5a2cadf007ba8f9bc39c6a6f9666f8cf25ea809a153b032" dependencies = [ "libc", - "log 0.4.17", + "log 0.4.20", ] [[package]] @@ -2051,7 +1967,16 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", +] + +[[package]] +name = "uuid" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" +dependencies = [ + "getrandom 0.2.10", ] [[package]] @@ -2080,9 +2005,9 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "walkdir" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" dependencies = [ "same-file", "winapi-util", @@ -2108,9 +2033,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" dependencies = [ "cfg-if 1.0.0", "wasm-bindgen-macro", @@ -2118,24 +2043,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" dependencies = [ "bumpalo", - "log 0.4.17", + "log 0.4.20", "once_cell", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.31", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2143,22 +2068,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.31", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "webpki" @@ -2217,7 +2142,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" dependencies = [ - "windows-targets 0.48.0", + "windows-targets 0.48.5", ] [[package]] @@ -2235,7 +2160,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.0", + "windows-targets 0.48.5", ] [[package]] @@ -2255,17 +2180,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] @@ -2276,9 +2201,9 @@ checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_msvc" @@ -2288,9 +2213,9 @@ checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_i686_gnu" @@ -2300,9 +2225,9 @@ checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_msvc" @@ -2312,9 +2237,9 @@ checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_x86_64_gnu" @@ -2324,9 +2249,9 @@ checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnullvm" @@ -2336,9 +2261,9 @@ checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_msvc" @@ -2348,33 +2273,33 @@ checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "winnow" -version = "0.4.6" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61de7bac303dc551fe038e2b3cef0f571087a47571ea6e79a87692ac99b99699" +checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc" dependencies = [ "memchr", ] [[package]] name = "xattr" -version = "0.2.3" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d1526bbe5aaeb5eb06885f4d987bcdfa5e23187055de9b83fe00156a821fabc" +checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985" dependencies = [ "libc", ] [[package]] name = "zerocopy" -version = "0.6.1" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "332f188cc1bcf1fe1064b8c58d150f497e697f49774aa846f2dc949d9a25f236" +checksum = "20707b61725734c595e840fb3704378a0cd2b9c74cc9e6e20724838fc6a1e2f9" dependencies = [ "byteorder", "zerocopy-derive", @@ -2382,11 +2307,11 @@ dependencies = [ [[package]] name = "zerocopy-derive" -version = "0.3.2" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6505e6815af7de1746a08f69c69606bb45695a17149517680f3b2149713b19a3" +checksum = "56097d5b91d711293a42be9289403896b68654625021732067eac7a4ca388a1f" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.31", ] From 8022b8ade90ab3fcc246a1636a22a36ac9a13225 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 7 Sep 2023 16:25:53 -0600 Subject: [PATCH 1117/3180] Update redoxer --- Cargo.lock | 118 +++++++++++++++-------------------------------------- 1 file changed, 32 insertions(+), 86 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 30ae7209..7546f835 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -641,12 +641,6 @@ dependencies = [ "log 0.4.20", ] -[[package]] -name = "fuchsia-cprng" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" - [[package]] name = "fuser" version = "0.12.0" @@ -719,7 +713,7 @@ dependencies = [ "bitflags 2.4.0", "crc", "log 0.4.20", - "uuid 1.4.1", + "uuid", ] [[package]] @@ -1181,29 +1175,6 @@ dependencies = [ "proc-macro2", ] -[[package]] -name = "rand" -version = "0.3.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c" -dependencies = [ - "libc", - "rand 0.4.6", -] - -[[package]] -name = "rand" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" -dependencies = [ - "fuchsia-cprng", - "libc", - "rand_core 0.3.1", - "rdrand", - "winapi", -] - [[package]] name = "rand" version = "0.8.5" @@ -1212,7 +1183,7 @@ checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha", - "rand_core 0.6.4", + "rand_core", ] [[package]] @@ -1222,24 +1193,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.4", + "rand_core", ] -[[package]] -name = "rand_core" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -dependencies = [ - "rand_core 0.4.2", -] - -[[package]] -name = "rand_core" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" - [[package]] name = "rand_core" version = "0.6.4" @@ -1249,6 +1205,12 @@ dependencies = [ "getrandom 0.2.10", ] +[[package]] +name = "range-tree" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "384c2842d4e069d5ccacf5fe1dca4ef8d07a5444329715f0fc3c61813502d4d1" + [[package]] name = "rayon" version = "1.7.0" @@ -1271,15 +1233,6 @@ dependencies = [ "num_cpus", ] -[[package]] -name = "rdrand" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -dependencies = [ - "rand_core 0.3.1", -] - [[package]] name = "redox_cookbook" version = "0.1.0" @@ -1298,9 +1251,9 @@ dependencies = [ [[package]] name = "redox_installer" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e23ecfde5f5853d0e75f4da6d9403e8f1c478abd1417eb2f98ff66a7ff582942" +checksum = "8cc9fcfc6c1685dbb258f28d39cb2c45c6da3179ec12c0cee565912e22a069ac" dependencies = [ "arg_parser", "failure", @@ -1311,17 +1264,17 @@ dependencies = [ "pkgar", "pkgar-core", "pkgar-keys", - "rand 0.8.5", + "rand", "redox_liner", "redox_pkgutils", - "redox_syscall 0.2.16", + "redox_syscall 0.4.0", "redoxfs", "rust-argon2", "serde", "serde_derive", "termion", "toml 0.5.11", - "uuid 0.8.2", + "uuid", ] [[package]] @@ -1383,6 +1336,15 @@ dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "redox_syscall" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded0bce2d41cc3c57aefa284708ced249a64acb01745dbbe72bd78610bfd644c" +dependencies = [ + "bitflags 1.3.2", +] + [[package]] name = "redox_termios" version = "0.1.2" @@ -1405,14 +1367,14 @@ dependencies = [ [[package]] name = "redoxer" -version = "0.2.33" +version = "0.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a79e1c4ca4927f7373903a079ceced8cffaee49e204e95d8b1e499683e67b7" +checksum = "28f4c43d4a8cafc66cb3e21354a135d6d01dbcdca916b72d8dd58adbf5f9ca62" dependencies = [ "dirs 4.0.0", "proc-mounts", "redox_installer", - "redox_syscall 0.2.16", + "redox_syscall 0.4.0", "redoxfs", "tempfile", "toml 0.7.6", @@ -1420,9 +1382,9 @@ dependencies = [ [[package]] name = "redoxfs" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff0a3a5754ac84857d321cb53f3362bb43b2b5df27d2bba556d49625dfd75126" +checksum = "0c1effb4750117347c5f64723b80251f7e73cd8863bdaf4116c485944e6111d0" dependencies = [ "aes", "argon2", @@ -1432,12 +1394,14 @@ dependencies = [ "fuser", "getrandom 0.2.10", "libc", + "log 0.4.20", + "range-tree", "redox_simple_endian", - "redox_syscall 0.2.16", + "redox_syscall 0.4.0", "seahash", "termion", "time", - "uuid 0.5.1", + "uuid", ] [[package]] @@ -1952,24 +1916,6 @@ dependencies = [ "log 0.4.20", ] -[[package]] -name = "uuid" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc7e3b898aa6f6c08e5295b6c89258d1331e9ac578cc992fb818759951bdc22" -dependencies = [ - "rand 0.3.23", -] - -[[package]] -name = "uuid" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" -dependencies = [ - "getrandom 0.2.10", -] - [[package]] name = "uuid" version = "1.4.1" From 2343a5fcbf8374e2745bb0c79a4d00606bd3b26a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 8 Sep 2023 13:25:12 -0600 Subject: [PATCH 1118/3180] Update binutils and gcc --- recipes/gcc/recipe.sh | 7 ++++--- recipes/gnu-binutils/recipe.sh | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh index c6e17ae2..90cefc45 100644 --- a/recipes/gcc/recipe.sh +++ b/recipes/gcc/recipe.sh @@ -1,12 +1,13 @@ -TAR=https://gitlab.redox-os.org/redox-os/gcc/-/archive/redox/gcc-redox.tar.gz +VERSION="13.2.0" +TAR="https://gitlab.redox-os.org/redox-os/gcc/-/archive/redox-${VERSION}/gcc-redox-${VERSION}.tar.gz" #GIT=https://gitlab.redox-os.org/redox-os/gcc.git #GIT_UPSTREAM=https://gcc.gnu.org/git/gcc.git -#BRANCH=redox +#BRANCH="redox-${VERSION}" BUILD_DEPENDS=(relibc) DEPENDS="gnu-binutils relibc" function recipe_version { - printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + echo "${VERSION}" skip=1 } diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh index 61ba1213..7a3ae213 100644 --- a/recipes/gnu-binutils/recipe.sh +++ b/recipes/gnu-binutils/recipe.sh @@ -1,5 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/binutils-gdb.git -BRANCH=redox +BRANCH=redox-2.41 GIT_UPSTREAM=git://sourceware.org/git/binutils-gdb.git BUILD_DEPENDS=(expat libgmp) From 95e95ab452dcc3ba9a50caa0ce90d9de5a99067b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 9 Sep 2023 07:22:51 -0600 Subject: [PATCH 1119/3180] Update bash to 5.2.15 --- recipes/bash/recipe.toml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/recipes/bash/recipe.toml b/recipes/bash/recipe.toml index 198bff9d..1361ef02 100644 --- a/recipes/bash/recipe.toml +++ b/recipes/bash/recipe.toml @@ -1,7 +1,5 @@ [source] -#git = "https://git.savannah.gnu.org/git/bash.git" -#rev = "a0c0a00fc419b7bc08202a79134fcd5bc0427071" -tar = "http://ftp.gnu.org/gnu/bash/bash-4.4.tar.gz" +tar = "http://ftp.gnu.org/gnu/bash/bash-5.2.15.tar.gz" blake3 = "926927c370142cffa37dfc0a310ec386493b8b558ff3cc062376898154bc7ccb" patches = [ "redox.patch" From e6f7479782257036b933e28de54f1f80f356c713 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 9 Sep 2023 07:54:17 -0600 Subject: [PATCH 1120/3180] Fix bash hash and patch --- recipes/bash/recipe.toml | 2 +- recipes/bash/redox.patch | 78 ++++++++++++++++++---------------------- 2 files changed, 35 insertions(+), 45 deletions(-) diff --git a/recipes/bash/recipe.toml b/recipes/bash/recipe.toml index 1361ef02..23025850 100644 --- a/recipes/bash/recipe.toml +++ b/recipes/bash/recipe.toml @@ -1,6 +1,6 @@ [source] tar = "http://ftp.gnu.org/gnu/bash/bash-5.2.15.tar.gz" -blake3 = "926927c370142cffa37dfc0a310ec386493b8b558ff3cc062376898154bc7ccb" +blake3 = "c1548e3f2a9b6de5296e18c28b3d2007985e647273e03f039efd3e489edaa41f" patches = [ "redox.patch" ] diff --git a/recipes/bash/redox.patch b/recipes/bash/redox.patch index bbd56e25..5bae4157 100644 --- a/recipes/bash/redox.patch +++ b/recipes/bash/redox.patch @@ -1,7 +1,7 @@ diff -ruwN source/bashline.c source-new/bashline.c ---- source/bashline.c 2023-05-06 08:05:06.270133244 -0600 -+++ source-new/bashline.c 2023-05-06 08:05:11.402125204 -0600 -@@ -2465,7 +2465,7 @@ +--- source/bashline.c 2022-04-17 16:37:12.000000000 -0600 ++++ source-new/bashline.c 2023-09-09 07:46:51.157322285 -0600 +@@ -2645,7 +2645,7 @@ const char *text; int state; { @@ -11,9 +11,9 @@ diff -ruwN source/bashline.c source-new/bashline.c #else static char *gname = (char *)NULL; diff -ruwN source/builtins/ulimit.def source-new/builtins/ulimit.def ---- source/builtins/ulimit.def 2023-05-06 08:05:06.246133282 -0600 -+++ source-new/builtins/ulimit.def 2023-05-06 08:05:11.406125198 -0600 -@@ -598,7 +598,7 @@ +--- source/builtins/ulimit.def 2021-11-05 07:19:53.000000000 -0600 ++++ source-new/builtins/ulimit.def 2023-09-09 07:46:51.157322285 -0600 +@@ -609,7 +609,7 @@ } else { @@ -23,9 +23,9 @@ diff -ruwN source/builtins/ulimit.def source-new/builtins/ulimit.def return -1; # if defined (HPUX9) diff -ruwN source/config-top.h source-new/config-top.h ---- source/config-top.h 2023-05-06 08:05:06.266133250 -0600 -+++ source-new/config-top.h 2023-05-06 08:05:11.406125198 -0600 -@@ -63,14 +63,14 @@ +--- source/config-top.h 2021-11-05 07:11:12.000000000 -0600 ++++ source-new/config-top.h 2023-09-09 07:49:50.705526090 -0600 +@@ -63,24 +63,24 @@ /* The default value of the PATH variable. */ #ifndef DEFAULT_PATH_VALUE #define DEFAULT_PATH_VALUE \ @@ -33,6 +33,11 @@ diff -ruwN source/config-top.h source-new/config-top.h + "/usr/local/bin;/usr/local/sbin;/usr/bin;/usr/sbin;/bin;/sbin;." #endif + /* If you want to unconditionally set a value for PATH in every restricted + shell, set this. */ +-/* #define RBASH_STATIC_PATH_VALUE "/rbin:/usr/rbin" */ ++/* #define RBASH_STATIC_PATH_VALUE "/rbin;/usr/rbin" */ + /* The value for PATH when invoking `command -p'. This is only used when the Posix.2 confstr () function, or CS_PATH define are not present. */ #ifndef STANDARD_UTILS_PATH @@ -41,44 +46,29 @@ diff -ruwN source/config-top.h source-new/config-top.h + "/bin;/usr/bin;/sbin;/usr/sbin;/etc;/usr/etc" #endif + /* The default path for enable -f */ + #ifndef DEFAULT_LOADABLE_BUILTINS_PATH + #define DEFAULT_LOADABLE_BUILTINS_PATH \ +- "/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:." ++ "/usr/local/lib/bash;/usr/lib/bash;/opt/local/lib/bash;/usr/pkg/lib/bash;/opt/pkg/lib/bash;." + #endif + /* Default primary and secondary prompt strings. */ diff -ruwN source/configure.ac source-new/configure.ac ---- source/configure.ac 2023-05-06 08:05:06.266133250 -0600 -+++ source-new/configure.ac 2023-05-06 08:05:11.406125198 -0600 -@@ -90,6 +90,7 @@ - *-opennt*|*-interix*) opt_bash_malloc=no ;; # Interix, now owned by Microsoft +--- source/configure.ac 2022-09-23 08:12:27.000000000 -0600 ++++ source-new/configure.ac 2023-09-09 07:47:28.393364561 -0600 +@@ -92,6 +92,7 @@ *-nsk*) opt_bash_malloc=no ;; # HP NonStop *-haiku*) opt_bash_malloc=no ;; # Haiku OS + *-genode*) opt_bash_malloc=no ;; # Genode has no sbrk +*-redox*) opt_bash_malloc=no ;; # Redox OS esac # memory scrambling on free() -diff -ruwN source/execute_cmd.c source-new/execute_cmd.c ---- source/execute_cmd.c 2023-05-06 08:05:06.270133244 -0600 -+++ source-new/execute_cmd.c 2023-05-06 08:05:11.406125198 -0600 -@@ -1335,15 +1335,17 @@ - nullcmd = (command == 0) || (command->type == cm_simple && command->value.Simple->words == 0 && command->value.Simple->redirects == 0); - if (posixly_correct && nullcmd) - { --#if defined (HAVE_GETRUSAGE) -+#if defined (HAVE_GETRUSAGE) && defined (HAVE_GETTIMEOFDAY) - selfb.ru_utime.tv_sec = kidsb.ru_utime.tv_sec = selfb.ru_stime.tv_sec = kidsb.ru_stime.tv_sec = 0; - selfb.ru_utime.tv_usec = kidsb.ru_utime.tv_usec = selfb.ru_stime.tv_usec = kidsb.ru_stime.tv_usec = 0; - before.tv_sec = shell_start_time; - before.tv_usec = 0; - #else -+# if defined (HAVE_TIMES) - before.tms_utime = before.tms_stime = before.tms_cutime = before.tms_cstime = 0; - tbefore = shell_start_time; - #endif -+#endif - } - - old_flags = command->flags; diff -ruwN source/general.c source-new/general.c ---- source/general.c 2023-05-06 08:05:06.266133250 -0600 -+++ source-new/general.c 2023-05-06 08:05:11.406125198 -0600 -@@ -476,6 +476,7 @@ +--- source/general.c 2022-11-23 15:10:12.000000000 -0700 ++++ source-new/general.c 2023-09-09 07:46:51.161322290 -0600 +@@ -589,6 +589,7 @@ void check_dev_tty () { @@ -86,7 +76,7 @@ diff -ruwN source/general.c source-new/general.c int tty_fd; char *tty; -@@ -490,6 +491,7 @@ +@@ -603,6 +604,7 @@ } if (tty_fd >= 0) close (tty_fd); @@ -94,7 +84,7 @@ diff -ruwN source/general.c source-new/general.c } /* Return 1 if PATH1 and PATH2 are the same file. This is kind of -@@ -909,10 +911,10 @@ +@@ -1031,10 +1033,10 @@ `:'. If I is 0, then the path has a leading colon. Trailing colons are handled OK by the `else' part of the if statement; an empty string is returned in that case. */ @@ -108,8 +98,8 @@ diff -ruwN source/general.c source-new/general.c *p_index = i; diff -ruwN source/include/posixwait.h source-new/include/posixwait.h ---- source/include/posixwait.h 2023-05-06 08:05:06.250133275 -0600 -+++ source-new/include/posixwait.h 2023-05-06 08:05:11.406125198 -0600 +--- source/include/posixwait.h 2019-03-29 11:25:52.000000000 -0600 ++++ source-new/include/posixwait.h 2023-09-09 07:46:51.161322290 -0600 @@ -34,7 +34,7 @@ /* How to get the status of a job. For Posix, this is just an @@ -129,8 +119,8 @@ diff -ruwN source/include/posixwait.h source-new/include/posixwait.h # if !defined (WSTOPSIG) # define WSTOPSIG(s) ((s) >> 8) diff -ruwN source/lib/sh/getcwd.c source-new/lib/sh/getcwd.c ---- source/lib/sh/getcwd.c 2023-05-06 08:05:06.254133269 -0600 -+++ source-new/lib/sh/getcwd.c 2023-05-06 08:05:11.406125198 -0600 +--- source/lib/sh/getcwd.c 2012-03-10 08:48:50.000000000 -0700 ++++ source-new/lib/sh/getcwd.c 2023-09-09 07:46:51.161322290 -0600 @@ -20,7 +20,7 @@ #include From 372fa01e0745756d124bbddb955215c73c6f0909 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 9 Sep 2023 08:10:15 -0600 Subject: [PATCH 1121/3180] Disable multi-byte on bash --- ...compilation-for-non-multibyte-builds.patch | 62 ++++++++++++++++ recipes/bash/recipe.toml | 8 +-- recipes/bash/redox.patch | 70 +++++++++++++------ 3 files changed, 115 insertions(+), 25 deletions(-) create mode 100644 recipes/bash/10309-parse.y-fix-compilation-for-non-multibyte-builds.patch diff --git a/recipes/bash/10309-parse.y-fix-compilation-for-non-multibyte-builds.patch b/recipes/bash/10309-parse.y-fix-compilation-for-non-multibyte-builds.patch new file mode 100644 index 00000000..1d1f28d4 --- /dev/null +++ b/recipes/bash/10309-parse.y-fix-compilation-for-non-multibyte-builds.patch @@ -0,0 +1,62 @@ +From 0217fc2816e47ee296472df71d1011f0eb2937e6 Mon Sep 17 00:00:00 2001 +From: Vincent Fazio +Date: Fri, 27 Jan 2023 14:37:26 -0600 +Subject: [PATCH] parse.y: fix compilation for non-multibyte builds + +Builds configured with --disable-multibyte or when the toolchain does +not have WCHAR support would encounter a compile error due to an +undeclared reference to shell_input_line_property in shell_getc. + +Add a HANDLE_MULTIBYTE guard to conditionally compile the block that +references shell_input_line_property in shell_getc as it's only declared +when HANDLE_MULTIBYTE is defined. + +Signed-off-by: Vincent Fazio +--- + parse.y | 2 ++ + y.tab.c | 2 ++ + 2 files changed, 4 insertions(+) + +diff --git a/parse.y b/parse.y +index 1d12e639..8f1355c6 100644 +--- a/parse.y ++++ b/parse.y +@@ -2625,6 +2625,7 @@ next_alias_char: + parser_state |= PST_ENDALIAS; + /* We need to do this to make sure last_shell_getc_is_singlebyte returns + true, since we are returning a single-byte space. */ ++#if defined (HANDLE_MULTIBYTE) + if (shell_input_line_index == shell_input_line_len && last_shell_getc_is_singlebyte == 0) + { + #if 0 +@@ -2638,6 +2639,7 @@ next_alias_char: + shell_input_line_property[shell_input_line_index - 1] = 1; + #endif + } ++#endif /* HANDLE_MULTIBYTE */ + return ' '; /* END_ALIAS */ + } + #endif +diff --git a/y.tab.c b/y.tab.c +index 50c5845b..799f730f 100644 +--- a/y.tab.c ++++ b/y.tab.c +@@ -4936,6 +4936,7 @@ next_alias_char: + parser_state |= PST_ENDALIAS; + /* We need to do this to make sure last_shell_getc_is_singlebyte returns + true, since we are returning a single-byte space. */ ++#if defined (HANDLE_MULTIBYTE) + if (shell_input_line_index == shell_input_line_len && last_shell_getc_is_singlebyte == 0) + { + #if 0 +@@ -4949,6 +4950,7 @@ next_alias_char: + shell_input_line_property[shell_input_line_index - 1] = 1; + #endif + } ++#endif /* HANDLE_MULTIBYTE */ + return ' '; /* END_ALIAS */ + } + #endif +-- +2.25.1 + diff --git a/recipes/bash/recipe.toml b/recipes/bash/recipe.toml index 23025850..d5ca540d 100644 --- a/recipes/bash/recipe.toml +++ b/recipes/bash/recipe.toml @@ -2,11 +2,9 @@ tar = "http://ftp.gnu.org/gnu/bash/bash-5.2.15.tar.gz" blake3 = "c1548e3f2a9b6de5296e18c28b3d2007985e647273e03f039efd3e489edaa41f" patches = [ - "redox.patch" + "redox.patch", + "10309-parse.y-fix-compilation-for-non-multibyte-builds.patch", ] -script = """ -wget -O support/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" -""" [build] template = "custom" @@ -17,7 +15,9 @@ dependencies = [ script = """ COOKBOOK_CONFIGURE_FLAGS+=( ac_cv_func_wcwidth=no # TODO: add more wc functions and remove this + bash_cv_func_sigsetjmp=no bash_cv_getenv_redef=no + --disable-multibyte # TODO: add more multibyte functions and remove this ) COOKBOOK_MAKE_JOBS=1 # workaround for parallel make bugs cookbook_configure diff --git a/recipes/bash/redox.patch b/recipes/bash/redox.patch index 5bae4157..3466700f 100644 --- a/recipes/bash/redox.patch +++ b/recipes/bash/redox.patch @@ -1,6 +1,6 @@ -diff -ruwN source/bashline.c source-new/bashline.c ---- source/bashline.c 2022-04-17 16:37:12.000000000 -0600 -+++ source-new/bashline.c 2023-09-09 07:46:51.157322285 -0600 +diff -ruwN bash-5.2.15/bashline.c source/bashline.c +--- bash-5.2.15/bashline.c 2022-04-17 16:37:12.000000000 -0600 ++++ source/bashline.c 2023-09-09 07:52:41.177719614 -0600 @@ -2645,7 +2645,7 @@ const char *text; int state; @@ -10,9 +10,9 @@ diff -ruwN source/bashline.c source-new/bashline.c return ((char *)NULL); #else static char *gname = (char *)NULL; -diff -ruwN source/builtins/ulimit.def source-new/builtins/ulimit.def ---- source/builtins/ulimit.def 2021-11-05 07:19:53.000000000 -0600 -+++ source-new/builtins/ulimit.def 2023-09-09 07:46:51.157322285 -0600 +diff -ruwN bash-5.2.15/builtins/ulimit.def source/builtins/ulimit.def +--- bash-5.2.15/builtins/ulimit.def 2021-11-05 07:19:53.000000000 -0600 ++++ source/builtins/ulimit.def 2023-09-09 07:52:41.177719614 -0600 @@ -609,7 +609,7 @@ } else @@ -22,9 +22,9 @@ diff -ruwN source/builtins/ulimit.def source-new/builtins/ulimit.def if (getrlimit (limits[ind].parameter, &limit) < 0) return -1; # if defined (HPUX9) -diff -ruwN source/config-top.h source-new/config-top.h ---- source/config-top.h 2021-11-05 07:11:12.000000000 -0600 -+++ source-new/config-top.h 2023-09-09 07:49:50.705526090 -0600 +diff -ruwN bash-5.2.15/config-top.h source/config-top.h +--- bash-5.2.15/config-top.h 2021-11-05 07:11:12.000000000 -0600 ++++ source/config-top.h 2023-09-09 07:52:41.177719614 -0600 @@ -63,24 +63,24 @@ /* The default value of the PATH variable. */ #ifndef DEFAULT_PATH_VALUE @@ -54,9 +54,20 @@ diff -ruwN source/config-top.h source-new/config-top.h #endif /* Default primary and secondary prompt strings. */ -diff -ruwN source/configure.ac source-new/configure.ac ---- source/configure.ac 2022-09-23 08:12:27.000000000 -0600 -+++ source-new/configure.ac 2023-09-09 07:47:28.393364561 -0600 +diff -ruwN bash-5.2.15/configure source/configure +--- bash-5.2.15/configure 2022-09-23 08:13:22.000000000 -0600 ++++ source/configure 2023-09-09 07:55:01.365878738 -0600 +@@ -3298,6 +3298,7 @@ + *-nsk*) opt_bash_malloc=no ;; # HP NonStop + *-haiku*) opt_bash_malloc=no ;; # Haiku OS + *-genode*) opt_bash_malloc=no ;; # Genode has no sbrk ++*-redox*) opt_bash_malloc=no ;; # Redox OS + esac + + # memory scrambling on free() +diff -ruwN bash-5.2.15/configure.ac source/configure.ac +--- bash-5.2.15/configure.ac 2022-09-23 08:12:27.000000000 -0600 ++++ source/configure.ac 2023-09-09 07:52:41.177719614 -0600 @@ -92,6 +92,7 @@ *-nsk*) opt_bash_malloc=no ;; # HP NonStop *-haiku*) opt_bash_malloc=no ;; # Haiku OS @@ -65,9 +76,26 @@ diff -ruwN source/configure.ac source-new/configure.ac esac # memory scrambling on free() -diff -ruwN source/general.c source-new/general.c ---- source/general.c 2022-11-23 15:10:12.000000000 -0700 -+++ source-new/general.c 2023-09-09 07:46:51.161322290 -0600 +diff -ruwN bash-5.2.15/execute_cmd.c source/execute_cmd.c +--- bash-5.2.15/execute_cmd.c 2022-12-13 10:09:02.000000000 -0700 ++++ source/execute_cmd.c 2023-09-09 08:04:16.779201158 -0600 +@@ -1379,11 +1379,11 @@ + nullcmd = (command == 0) || (command->type == cm_simple && command->value.Simple->words == 0 && command->value.Simple->redirects == 0); + if (posixly_correct && nullcmd) + { +-#if defined (HAVE_GETRUSAGE) ++#if defined (HAVE_GETRUSAGE) && defined (HAVE_GETTIMEOFDAY) + selfb.ru_utime.tv_sec = kidsb.ru_utime.tv_sec = selfb.ru_stime.tv_sec = kidsb.ru_stime.tv_sec = 0; + selfb.ru_utime.tv_usec = kidsb.ru_utime.tv_usec = selfb.ru_stime.tv_usec = kidsb.ru_stime.tv_usec = 0; + before = shellstart; +-#else ++#elif defined (HAVE_TIMES) + before.tms_utime = before.tms_stime = before.tms_cutime = before.tms_cstime = 0; + tbefore = shell_start_time; + #endif +diff -ruwN bash-5.2.15/general.c source/general.c +--- bash-5.2.15/general.c 2022-11-23 15:10:12.000000000 -0700 ++++ source/general.c 2023-09-09 07:52:41.177719614 -0600 @@ -589,6 +589,7 @@ void check_dev_tty () @@ -97,9 +125,9 @@ diff -ruwN source/general.c source-new/general.c ; *p_index = i; -diff -ruwN source/include/posixwait.h source-new/include/posixwait.h ---- source/include/posixwait.h 2019-03-29 11:25:52.000000000 -0600 -+++ source-new/include/posixwait.h 2023-09-09 07:46:51.161322290 -0600 +diff -ruwN bash-5.2.15/include/posixwait.h source/include/posixwait.h +--- bash-5.2.15/include/posixwait.h 2019-03-29 11:25:52.000000000 -0600 ++++ source/include/posixwait.h 2023-09-09 07:52:41.177719614 -0600 @@ -34,7 +34,7 @@ /* How to get the status of a job. For Posix, this is just an @@ -118,9 +146,9 @@ diff -ruwN source/include/posixwait.h source-new/include/posixwait.h # if !defined (WSTOPSIG) # define WSTOPSIG(s) ((s) >> 8) -diff -ruwN source/lib/sh/getcwd.c source-new/lib/sh/getcwd.c ---- source/lib/sh/getcwd.c 2012-03-10 08:48:50.000000000 -0700 -+++ source-new/lib/sh/getcwd.c 2023-09-09 07:46:51.161322290 -0600 +diff -ruwN bash-5.2.15/lib/sh/getcwd.c source/lib/sh/getcwd.c +--- bash-5.2.15/lib/sh/getcwd.c 2012-03-10 08:48:50.000000000 -0700 ++++ source/lib/sh/getcwd.c 2023-09-09 07:52:41.177719614 -0600 @@ -20,7 +20,7 @@ #include From 1cc47128b2bf21fdf6fff4348c05fbce6348338f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 9 Sep 2023 09:12:19 -0600 Subject: [PATCH 1122/3180] Fix bash compilation errors --- ...compilation-for-non-multibyte-builds.patch | 62 ---------- recipes/bash/recipe.toml | 3 +- recipes/bash/redox.patch | 113 ++++++++++++++++-- 3 files changed, 105 insertions(+), 73 deletions(-) delete mode 100644 recipes/bash/10309-parse.y-fix-compilation-for-non-multibyte-builds.patch diff --git a/recipes/bash/10309-parse.y-fix-compilation-for-non-multibyte-builds.patch b/recipes/bash/10309-parse.y-fix-compilation-for-non-multibyte-builds.patch deleted file mode 100644 index 1d1f28d4..00000000 --- a/recipes/bash/10309-parse.y-fix-compilation-for-non-multibyte-builds.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 0217fc2816e47ee296472df71d1011f0eb2937e6 Mon Sep 17 00:00:00 2001 -From: Vincent Fazio -Date: Fri, 27 Jan 2023 14:37:26 -0600 -Subject: [PATCH] parse.y: fix compilation for non-multibyte builds - -Builds configured with --disable-multibyte or when the toolchain does -not have WCHAR support would encounter a compile error due to an -undeclared reference to shell_input_line_property in shell_getc. - -Add a HANDLE_MULTIBYTE guard to conditionally compile the block that -references shell_input_line_property in shell_getc as it's only declared -when HANDLE_MULTIBYTE is defined. - -Signed-off-by: Vincent Fazio ---- - parse.y | 2 ++ - y.tab.c | 2 ++ - 2 files changed, 4 insertions(+) - -diff --git a/parse.y b/parse.y -index 1d12e639..8f1355c6 100644 ---- a/parse.y -+++ b/parse.y -@@ -2625,6 +2625,7 @@ next_alias_char: - parser_state |= PST_ENDALIAS; - /* We need to do this to make sure last_shell_getc_is_singlebyte returns - true, since we are returning a single-byte space. */ -+#if defined (HANDLE_MULTIBYTE) - if (shell_input_line_index == shell_input_line_len && last_shell_getc_is_singlebyte == 0) - { - #if 0 -@@ -2638,6 +2639,7 @@ next_alias_char: - shell_input_line_property[shell_input_line_index - 1] = 1; - #endif - } -+#endif /* HANDLE_MULTIBYTE */ - return ' '; /* END_ALIAS */ - } - #endif -diff --git a/y.tab.c b/y.tab.c -index 50c5845b..799f730f 100644 ---- a/y.tab.c -+++ b/y.tab.c -@@ -4936,6 +4936,7 @@ next_alias_char: - parser_state |= PST_ENDALIAS; - /* We need to do this to make sure last_shell_getc_is_singlebyte returns - true, since we are returning a single-byte space. */ -+#if defined (HANDLE_MULTIBYTE) - if (shell_input_line_index == shell_input_line_len && last_shell_getc_is_singlebyte == 0) - { - #if 0 -@@ -4949,6 +4950,7 @@ next_alias_char: - shell_input_line_property[shell_input_line_index - 1] = 1; - #endif - } -+#endif /* HANDLE_MULTIBYTE */ - return ' '; /* END_ALIAS */ - } - #endif --- -2.25.1 - diff --git a/recipes/bash/recipe.toml b/recipes/bash/recipe.toml index d5ca540d..06a56482 100644 --- a/recipes/bash/recipe.toml +++ b/recipes/bash/recipe.toml @@ -2,8 +2,7 @@ tar = "http://ftp.gnu.org/gnu/bash/bash-5.2.15.tar.gz" blake3 = "c1548e3f2a9b6de5296e18c28b3d2007985e647273e03f039efd3e489edaa41f" patches = [ - "redox.patch", - "10309-parse.y-fix-compilation-for-non-multibyte-builds.patch", + "redox.patch" ] [build] diff --git a/recipes/bash/redox.patch b/recipes/bash/redox.patch index 3466700f..ff7ac1c8 100644 --- a/recipes/bash/redox.patch +++ b/recipes/bash/redox.patch @@ -1,6 +1,6 @@ diff -ruwN bash-5.2.15/bashline.c source/bashline.c --- bash-5.2.15/bashline.c 2022-04-17 16:37:12.000000000 -0600 -+++ source/bashline.c 2023-09-09 07:52:41.177719614 -0600 ++++ source/bashline.c 2023-09-09 09:07:14.698070413 -0600 @@ -2645,7 +2645,7 @@ const char *text; int state; @@ -12,7 +12,7 @@ diff -ruwN bash-5.2.15/bashline.c source/bashline.c static char *gname = (char *)NULL; diff -ruwN bash-5.2.15/builtins/ulimit.def source/builtins/ulimit.def --- bash-5.2.15/builtins/ulimit.def 2021-11-05 07:19:53.000000000 -0600 -+++ source/builtins/ulimit.def 2023-09-09 07:52:41.177719614 -0600 ++++ source/builtins/ulimit.def 2023-09-09 09:07:14.698070413 -0600 @@ -609,7 +609,7 @@ } else @@ -24,7 +24,7 @@ diff -ruwN bash-5.2.15/builtins/ulimit.def source/builtins/ulimit.def # if defined (HPUX9) diff -ruwN bash-5.2.15/config-top.h source/config-top.h --- bash-5.2.15/config-top.h 2021-11-05 07:11:12.000000000 -0600 -+++ source/config-top.h 2023-09-09 07:52:41.177719614 -0600 ++++ source/config-top.h 2023-09-09 09:07:14.698070413 -0600 @@ -63,24 +63,24 @@ /* The default value of the PATH variable. */ #ifndef DEFAULT_PATH_VALUE @@ -56,7 +56,7 @@ diff -ruwN bash-5.2.15/config-top.h source/config-top.h /* Default primary and secondary prompt strings. */ diff -ruwN bash-5.2.15/configure source/configure --- bash-5.2.15/configure 2022-09-23 08:13:22.000000000 -0600 -+++ source/configure 2023-09-09 07:55:01.365878738 -0600 ++++ source/configure 2023-09-09 09:07:14.702070414 -0600 @@ -3298,6 +3298,7 @@ *-nsk*) opt_bash_malloc=no ;; # HP NonStop *-haiku*) opt_bash_malloc=no ;; # Haiku OS @@ -67,7 +67,7 @@ diff -ruwN bash-5.2.15/configure source/configure # memory scrambling on free() diff -ruwN bash-5.2.15/configure.ac source/configure.ac --- bash-5.2.15/configure.ac 2022-09-23 08:12:27.000000000 -0600 -+++ source/configure.ac 2023-09-09 07:52:41.177719614 -0600 ++++ source/configure.ac 2023-09-09 09:07:14.702070414 -0600 @@ -92,6 +92,7 @@ *-nsk*) opt_bash_malloc=no ;; # HP NonStop *-haiku*) opt_bash_malloc=no ;; # Haiku OS @@ -78,7 +78,7 @@ diff -ruwN bash-5.2.15/configure.ac source/configure.ac # memory scrambling on free() diff -ruwN bash-5.2.15/execute_cmd.c source/execute_cmd.c --- bash-5.2.15/execute_cmd.c 2022-12-13 10:09:02.000000000 -0700 -+++ source/execute_cmd.c 2023-09-09 08:04:16.779201158 -0600 ++++ source/execute_cmd.c 2023-09-09 09:07:14.702070414 -0600 @@ -1379,11 +1379,11 @@ nullcmd = (command == 0) || (command->type == cm_simple && command->value.Simple->words == 0 && command->value.Simple->redirects == 0); if (posixly_correct && nullcmd) @@ -95,7 +95,7 @@ diff -ruwN bash-5.2.15/execute_cmd.c source/execute_cmd.c #endif diff -ruwN bash-5.2.15/general.c source/general.c --- bash-5.2.15/general.c 2022-11-23 15:10:12.000000000 -0700 -+++ source/general.c 2023-09-09 07:52:41.177719614 -0600 ++++ source/general.c 2023-09-09 09:07:14.702070414 -0600 @@ -589,6 +589,7 @@ void check_dev_tty () @@ -127,7 +127,7 @@ diff -ruwN bash-5.2.15/general.c source/general.c *p_index = i; diff -ruwN bash-5.2.15/include/posixwait.h source/include/posixwait.h --- bash-5.2.15/include/posixwait.h 2019-03-29 11:25:52.000000000 -0600 -+++ source/include/posixwait.h 2023-09-09 07:52:41.177719614 -0600 ++++ source/include/posixwait.h 2023-09-09 09:07:14.702070414 -0600 @@ -34,7 +34,7 @@ /* How to get the status of a job. For Posix, this is just an @@ -146,9 +146,33 @@ diff -ruwN bash-5.2.15/include/posixwait.h source/include/posixwait.h # if !defined (WSTOPSIG) # define WSTOPSIG(s) ((s) >> 8) +diff -ruwN bash-5.2.15/lib/readline/input.c source/lib/readline/input.c +--- bash-5.2.15/lib/readline/input.c 2022-04-08 13:43:24.000000000 -0600 ++++ source/lib/readline/input.c 2023-09-09 09:07:14.702070414 -0600 +@@ -805,7 +805,7 @@ + int result; + unsigned char c; + int fd; +-#if defined (HAVE_PSELECT) ++#if defined (HAVE_PSELECT) || defined (HAVE_SELECT) + sigset_t empty_set; + fd_set readfds; + #endif +diff -ruwN bash-5.2.15/lib/readline/terminal.c source/lib/readline/terminal.c +--- bash-5.2.15/lib/readline/terminal.c 2022-04-05 08:44:17.000000000 -0600 ++++ source/lib/readline/terminal.c 2023-09-09 09:09:03.162131539 -0600 +@@ -102,7 +102,7 @@ + + static int tcap_initialized; + +-#if !defined (__linux__) && !defined (NCURSES_VERSION) ++#if !defined (__linux__) && !defined (NCURSES_VERSION) && !defined (__redox__) + # if defined (__EMX__) || defined (NEED_EXTERN_PC) + extern + # endif /* __EMX__ || NEED_EXTERN_PC */ diff -ruwN bash-5.2.15/lib/sh/getcwd.c source/lib/sh/getcwd.c --- bash-5.2.15/lib/sh/getcwd.c 2012-03-10 08:48:50.000000000 -0700 -+++ source/lib/sh/getcwd.c 2023-09-09 07:52:41.177719614 -0600 ++++ source/lib/sh/getcwd.c 2023-09-09 09:07:14.702070414 -0600 @@ -20,7 +20,7 @@ #include @@ -158,3 +182,74 @@ diff -ruwN bash-5.2.15/lib/sh/getcwd.c source/lib/sh/getcwd.c #if !defined (__GNUC__) && !defined (HAVE_ALLOCA_H) && defined (_AIX) #pragma alloca +diff -ruwN bash-5.2.15/lib/sh/input_avail.c source/lib/sh/input_avail.c +--- bash-5.2.15/lib/sh/input_avail.c 2021-05-24 09:16:33.000000000 -0600 ++++ source/lib/sh/input_avail.c 2023-09-09 09:07:14.702070414 -0600 +@@ -33,7 +33,7 @@ + # include + #endif /* HAVE_SYS_FILE_H */ + +-#if defined (HAVE_PSELECT) ++#if defined (HAVE_PSELECT) || defined (HAVE_SELECT) + # include + #endif + +diff -ruwN bash-5.2.15/lib/sh/strtoimax.c source/lib/sh/strtoimax.c +--- bash-5.2.15/lib/sh/strtoimax.c 2021-09-10 08:32:35.000000000 -0600 ++++ source/lib/sh/strtoimax.c 2023-09-09 09:10:21.618185121 -0600 +@@ -55,6 +55,8 @@ + extern long long strtoll PARAMS((const char *, char **, int)); + #endif + ++#if !defined (__redox__) ++ + #ifdef strtoimax + #undef strtoimax + #endif +@@ -79,6 +81,8 @@ + return (strtol (ptr, endptr, base)); + } + ++#endif ++ + #ifdef TESTING + # include + int +diff -ruwN bash-5.2.15/parse.y source/parse.y +--- bash-5.2.15/parse.y 2022-12-13 10:09:02.000000000 -0700 ++++ source/parse.y 2023-09-09 09:07:14.706070416 -0600 +@@ -2625,6 +2625,7 @@ + parser_state |= PST_ENDALIAS; + /* We need to do this to make sure last_shell_getc_is_singlebyte returns + true, since we are returning a single-byte space. */ ++#if defined (HANDLE_MULTIBYTE) + if (shell_input_line_index == shell_input_line_len && last_shell_getc_is_singlebyte == 0) + { + #if 0 +@@ -2638,6 +2639,7 @@ + shell_input_line_property[shell_input_line_index - 1] = 1; + #endif + } ++#endif /* HANDLE_MULTIBYTE */ + return ' '; /* END_ALIAS */ + } + #endif +diff -ruwN bash-5.2.15/y.tab.c source/y.tab.c +--- bash-5.2.15/y.tab.c 2022-12-13 10:09:02.000000000 -0700 ++++ source/y.tab.c 2023-09-09 09:07:14.706070416 -0600 +@@ -4936,6 +4936,7 @@ + parser_state |= PST_ENDALIAS; + /* We need to do this to make sure last_shell_getc_is_singlebyte returns + true, since we are returning a single-byte space. */ ++#if defined (HANDLE_MULTIBYTE) + if (shell_input_line_index == shell_input_line_len && last_shell_getc_is_singlebyte == 0) + { + #if 0 +@@ -4949,6 +4950,7 @@ + shell_input_line_property[shell_input_line_index - 1] = 1; + #endif + } ++#endif /* HANDLE_MULTIBYTE */ + return ' '; /* END_ALIAS */ + } + #endif From ddab2cd9e8caf4097e6e489138536bd7e5f2e817 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 9 Sep 2023 09:15:36 -0600 Subject: [PATCH 1123/3180] Always remove source.tar when unfetching --- cook.sh | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/cook.sh b/cook.sh index fb010441..c83a1be4 100755 --- a/cook.sh +++ b/cook.sh @@ -140,11 +140,7 @@ function op { fi ;; unfetch) - rm -rfv source - if [ -n "$TAR" ] - then - rm -f source.tar - fi + rm -rfv source source.tar ;; prepare) skip=0 From c3b55cb67a3fafff117c90fb2717717d23ecc1c3 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 9 Sep 2023 12:18:10 -0600 Subject: [PATCH 1124/3180] Do not build acpid for i686 --- recipes/drivers-initfs/recipe.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/drivers-initfs/recipe.toml b/recipes/drivers-initfs/recipe.toml index fd3ab259..d567c907 100644 --- a/recipes/drivers-initfs/recipe.toml +++ b/recipes/drivers-initfs/recipe.toml @@ -16,7 +16,10 @@ BINS=( ) case "${TARGET}" in - i686-unknown-redox | x86_64-unknown-redox) + i686-unknown-redox) + BINS+=(ided ps2d) + ;; + x86_64-unknown-redox) BINS+=(acpid ided ps2d) ;; *) From df08c0d9e10c1649481c9291c4e07bff0034e15a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 9 Sep 2023 19:02:48 -0600 Subject: [PATCH 1125/3180] Link bash to sh instead of dash --- recipes/bash/recipe.toml | 1 + recipes/dash/recipe.toml | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/bash/recipe.toml b/recipes/bash/recipe.toml index 06a56482..68b0f3fc 100644 --- a/recipes/bash/recipe.toml +++ b/recipes/bash/recipe.toml @@ -20,4 +20,5 @@ COOKBOOK_CONFIGURE_FLAGS+=( ) COOKBOOK_MAKE_JOBS=1 # workaround for parallel make bugs cookbook_configure +ln -s "bash" "${COOKBOOK_STAGE}/bin/sh" """ diff --git a/recipes/dash/recipe.toml b/recipes/dash/recipe.toml index 14a76571..c4bc5751 100644 --- a/recipes/dash/recipe.toml +++ b/recipes/dash/recipe.toml @@ -18,5 +18,4 @@ sed -i'' -e 's|#define HAVE_GETRLIMIT 1|/* #undef HAVE_GETRLIMIT */|g' config.h COOKBOOK_CONFIGURE="true" COOKBOOK_CONFIGURE_FLAGS=() cookbook_configure -ln -s "dash" "${COOKBOOK_STAGE}/bin/sh" """ From 01326500c5291baee25564db956d430f5a3ea2dd Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 9 Sep 2023 19:09:01 -0600 Subject: [PATCH 1126/3180] Fix vim on i686 --- recipes/vim/vim.patch | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/recipes/vim/vim.patch b/recipes/vim/vim.patch index ac027c7f..3a3643e4 100644 --- a/recipes/vim/vim.patch +++ b/recipes/vim/vim.patch @@ -1,8 +1,23 @@ +diff -ruwN source/src/libvterm/include/vterm.h source-new/src/libvterm/include/vterm.h +--- source/src/libvterm/include/vterm.h 2019-12-04 14:09:41.000000000 -0700 ++++ source-new/src/libvterm/include/vterm.h 2023-09-09 19:06:56.211783900 -0600 +@@ -15,9 +15,11 @@ + #define TRUE 1 + #define FALSE 0 + ++#if !defined (__redox__) + // from stdint.h + typedef unsigned char uint8_t; + typedef unsigned int uint32_t; ++#endif + + typedef struct VTerm VTerm; + typedef struct VTermState VTermState; diff -ruwN source/src/memfile.c source-new/src/memfile.c ---- source/src/memfile.c 2016-11-10 10:24:37.000000000 -0700 -+++ source-new/src/memfile.c 2020-01-25 18:19:55.524324451 -0700 -@@ -615,6 +615,8 @@ - /* No sync() on Stratus VOS */ +--- source/src/memfile.c 2019-12-04 13:51:25.000000000 -0700 ++++ source-new/src/memfile.c 2023-09-09 19:06:08.999846625 -0600 +@@ -610,6 +610,8 @@ + // No sync() on Stratus VOS # if defined(__OPENNT) || defined(__TANDEM) || defined(__VOS__) fflush(NULL); +# elif defined(__redox__) From 00608506faad008cbb77c15d66e2927dcb906f03 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 9 Sep 2023 20:04:21 -0600 Subject: [PATCH 1127/3180] Fix neverball recipe --- recipes/neverball/recipe.sh | 9 +++++++-- recipes/neverball/redox.patch | 18 +++++++++++++++--- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/recipes/neverball/recipe.sh b/recipes/neverball/recipe.sh index ebe767a6..4ba9d47d 100644 --- a/recipes/neverball/recipe.sh +++ b/recipes/neverball/recipe.sh @@ -8,13 +8,18 @@ function recipe_version { } function recipe_build { - env -i PATH=/usr/bin:/bin PKG_CONFIG=pkg-config \ + set -x + env -i \ + LDFLAGS="-static" \ + PATH="/usr/bin:/bin" \ + PKG_CONFIG="pkg-config" \ "$REDOX_MAKE" -j"$($NPROC)" ENABLE_FS=stdio mapc sols sysroot="$(realpath ../sysroot)" export CPPFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib -static" + export LDFLAGS="-L$sysroot/lib -static -z noexecstack" "$REDOX_MAKE" -j"$($NPROC)" ENABLE_FS=stdio ENABLE_NLS=0 clean-src "$REDOX_MAKE" -j"$($NPROC)" ENABLE_FS=stdio ENABLE_NLS=0 neverball neverputt + set +x skip=1 } diff --git a/recipes/neverball/redox.patch b/recipes/neverball/redox.patch index 376893ef..6bc6dd4b 100644 --- a/recipes/neverball/redox.patch +++ b/recipes/neverball/redox.patch @@ -1,6 +1,6 @@ -diff -ruwN source/Makefile source-new/Makefile ---- source/Makefile 2019-08-07 22:16:07.630185664 -0600 -+++ source-new/Makefile 2019-08-09 21:41:20.296942596 -0600 +diff -ruwN neverball-1.6.0/Makefile source/Makefile +--- neverball-1.6.0/Makefile 2014-05-21 07:21:43.000000000 -0600 ++++ source/Makefile 2023-09-09 20:03:22.113348963 -0600 @@ -38,11 +38,11 @@ ifeq ($(DEBUG),1) CFLAGS := -g @@ -73,3 +73,15 @@ diff -ruwN source/Makefile source-new/Makefile $(BALL_TARG) : $(BALL_OBJS) $(LINK) -o $(BALL_TARG) $(BALL_OBJS) $(LDFLAGS) $(ALL_LIBS) +diff -ruwN neverball-1.6.0/share/text.h source/share/text.h +--- neverball-1.6.0/share/text.h 2014-05-21 07:21:43.000000000 -0600 ++++ source/share/text.h 2023-09-09 20:02:10.117248865 -0600 +@@ -15,7 +15,7 @@ + + /*---------------------------------------------------------------------------*/ + +-char text_input[MAXSTR]; ++extern char text_input[MAXSTR]; + + void text_input_start(void (*cb)(int typing)); + void text_input_stop(void); From 6e46cfa923185200345c5f9e07c480a375e4342f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 11 Sep 2023 08:13:05 -0600 Subject: [PATCH 1128/3180] Update ffmpeg to 6.0, patch for binutils 2.41 --- recipes/ffmpeg/binutils-2.41.patch | 76 ++++++++++++++++++++++++++++++ recipes/ffmpeg/recipe.toml | 9 ++-- 2 files changed, 80 insertions(+), 5 deletions(-) create mode 100644 recipes/ffmpeg/binutils-2.41.patch diff --git a/recipes/ffmpeg/binutils-2.41.patch b/recipes/ffmpeg/binutils-2.41.patch new file mode 100644 index 00000000..33fd3d48 --- /dev/null +++ b/recipes/ffmpeg/binutils-2.41.patch @@ -0,0 +1,76 @@ +From effadce6c756247ea8bae32dc13bb3e6f464f0eb Mon Sep 17 00:00:00 2001 +From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= +Date: Sun, 16 Jul 2023 18:18:02 +0300 +Subject: [PATCH] avcodec/x86/mathops: clip constants used with shift + instructions within inline assembly + +Fixes assembling with binutil as >= 2.41 + +Signed-off-by: James Almer +--- + libavcodec/x86/mathops.h | 26 +++++++++++++++++++++++--- + 1 file changed, 23 insertions(+), 3 deletions(-) + +diff --git a/libavcodec/x86/mathops.h b/libavcodec/x86/mathops.h +index 6298f5ed19..ca7e2dffc1 100644 +--- a/libavcodec/x86/mathops.h ++++ b/libavcodec/x86/mathops.h +@@ -35,12 +35,20 @@ + static av_always_inline av_const int MULL(int a, int b, unsigned shift) + { + int rt, dummy; ++ if (__builtin_constant_p(shift)) + __asm__ ( + "imull %3 \n\t" + "shrdl %4, %%edx, %%eax \n\t" + :"=a"(rt), "=d"(dummy) +- :"a"(a), "rm"(b), "ci"((uint8_t)shift) ++ :"a"(a), "rm"(b), "i"(shift & 0x1F) + ); ++ else ++ __asm__ ( ++ "imull %3 \n\t" ++ "shrdl %4, %%edx, %%eax \n\t" ++ :"=a"(rt), "=d"(dummy) ++ :"a"(a), "rm"(b), "c"((uint8_t)shift) ++ ); + return rt; + } + +@@ -113,19 +121,31 @@ __asm__ volatile(\ + // avoid +32 for shift optimization (gcc should do that ...) + #define NEG_SSR32 NEG_SSR32 + static inline int32_t NEG_SSR32( int32_t a, int8_t s){ ++ if (__builtin_constant_p(s)) + __asm__ ("sarl %1, %0\n\t" + : "+r" (a) +- : "ic" ((uint8_t)(-s)) ++ : "i" (-s & 0x1F) + ); ++ else ++ __asm__ ("sarl %1, %0\n\t" ++ : "+r" (a) ++ : "c" ((uint8_t)(-s)) ++ ); + return a; + } + + #define NEG_USR32 NEG_USR32 + static inline uint32_t NEG_USR32(uint32_t a, int8_t s){ ++ if (__builtin_constant_p(s)) + __asm__ ("shrl %1, %0\n\t" + : "+r" (a) +- : "ic" ((uint8_t)(-s)) ++ : "i" (-s & 0x1F) + ); ++ else ++ __asm__ ("shrl %1, %0\n\t" ++ : "+r" (a) ++ : "c" ((uint8_t)(-s)) ++ ); + return a; + } + +-- +2.30.2 + diff --git a/recipes/ffmpeg/recipe.toml b/recipes/ffmpeg/recipe.toml index e7ee861e..1ef7aa6c 100644 --- a/recipes/ffmpeg/recipe.toml +++ b/recipes/ffmpeg/recipe.toml @@ -1,10 +1,9 @@ [source] -#git = "https://git.ffmpeg.org/ffmpeg.git" -#rev = "eacfcbae690f914a4b1b4ad06999f138540cc3d8" -tar = "https://ffmpeg.org/releases/ffmpeg-5.1.2.tar.xz" -blake3 = "69fddb793c6b4fb6fd1093e54c8228c3c498614be3e48c311bb3f609a12daf5f" +tar = "https://ffmpeg.org/releases/ffmpeg-6.0.tar.xz" +blake3 = "4879074c357102f85932673044c57c144b0c188ae58edec2a115965536ee340f" patches = [ - "ffmpeg.patch" + "ffmpeg.patch", + "binutils-2.41.patch", ] [build] From 7ffdb91e59d1ce118b31464635a059e17b2c6e52 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 11 Sep 2023 08:34:18 -0600 Subject: [PATCH 1129/3180] Add libmpfr recipe --- recipes/libmpfr/recipe.toml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 recipes/libmpfr/recipe.toml diff --git a/recipes/libmpfr/recipe.toml b/recipes/libmpfr/recipe.toml new file mode 100644 index 00000000..a1f9d91f --- /dev/null +++ b/recipes/libmpfr/recipe.toml @@ -0,0 +1,9 @@ +[source] +tar = "https://www.mpfr.org/mpfr-current/mpfr-4.2.1.tar.xz" +blake3 = "f428023b8f7569fc1178faf63265ecb6cab4505fc3fce5d8c46af70db848a334" + +[build] +dependencies = [ + "libgmp", +] +template = "configure" From 64035e22e41cd26c92c2b236e260704986471625 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 11 Sep 2023 08:34:41 -0600 Subject: [PATCH 1130/3180] gnu-binutils depends on libmpfr --- recipes/gnu-binutils/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh index 7a3ae213..19bc559b 100644 --- a/recipes/gnu-binutils/recipe.sh +++ b/recipes/gnu-binutils/recipe.sh @@ -1,7 +1,7 @@ GIT=https://gitlab.redox-os.org/redox-os/binutils-gdb.git BRANCH=redox-2.41 GIT_UPSTREAM=git://sourceware.org/git/binutils-gdb.git -BUILD_DEPENDS=(expat libgmp) +BUILD_DEPENDS=(expat libgmp libmpfr) function recipe_version { printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" From 9aef34384d8d3f6d51b85cc928a3e48ce773a49a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 11 Sep 2023 09:07:14 -0600 Subject: [PATCH 1131/3180] rustpython: hack to run cargo update after enabling redox patch --- recipes/rustpython/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/rustpython/recipe.toml b/recipes/rustpython/recipe.toml index 0d082a78..dcd992a8 100644 --- a/recipes/rustpython/recipe.toml +++ b/recipes/rustpython/recipe.toml @@ -6,7 +6,7 @@ branch = "redox-release" dependencies = ["openssl", "zlib"] template = "custom" script = """ -(cd "${COOKBOOK_SOURCE}" && bash scripts/redox/uncomment-cargo.sh) +(cd "${COOKBOOK_SOURCE}" && bash scripts/redox/uncomment-cargo.sh && cargo update) export BUILDTIME_RUSTPYTHONPATH=/lib/rustpython export OPENSSL_DIR="${COOKBOOK_SYSROOT}" export ZLIB_STATIC=1 From e0afaa57c78fe8398317d9523c44b28413698a26 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 11 Sep 2023 09:20:06 -0600 Subject: [PATCH 1132/3180] Update rust --- recipes/rust/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/rust/recipe.sh b/recipes/rust/recipe.sh index 8a2f022b..d327fb0a 100644 --- a/recipes/rust/recipe.sh +++ b/recipes/rust/recipe.sh @@ -1,5 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/rust.git -BRANCH=redox-2023-01-21 +BRANCH=redox-2023-09-07 BUILD_DEPENDS=(llvm) DEPENDS="gcc cargo" PREPARE_COPY=0 From 81b1eaa006858b3a6d954dab7e9000badcdb86c4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 11 Sep 2023 09:58:24 -0600 Subject: [PATCH 1133/3180] Remove recipe path message --- repo.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/repo.sh b/repo.sh index 2fad01da..ecfff8ee 100755 --- a/repo.sh +++ b/repo.sh @@ -23,7 +23,6 @@ fi for recipe in $recipes do recipe_path=`target/release/find_recipe $recipe` - echo recipe path is $recipe_path COOKBOOK_RECIPE="$recipe_path" TARGET_DIR="${COOKBOOK_RECIPE}/target/${TARGET}" COOKBOOK_BUILD="${TARGET_DIR}/build" From da139762b7bffd6e98b58a303d8b443189bef87c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 20 Sep 2023 09:39:20 -0600 Subject: [PATCH 1134/3180] lua: patch makefile to allow use of cross compiler --- recipes/lua/recipe.toml | 5 ++++- recipes/lua/redox.patch | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 recipes/lua/redox.patch diff --git a/recipes/lua/recipe.toml b/recipes/lua/recipe.toml index b0a6d8f8..9987f6cc 100644 --- a/recipes/lua/recipe.toml +++ b/recipes/lua/recipe.toml @@ -1,10 +1,13 @@ [source] tar = "https://www.lua.org/ftp/lua-5.4.4.tar.gz" +patches = [ + "redox.patch" +] + [build] template = "custom" script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ -export CC="${TARGET}-gcc -std=gnu99" "${COOKBOOK_MAKE}" generic -j"${COOKBOOK_MAKE_JOBS}" mkdir -pv "${COOKBOOK_STAGE}/bin" cp src/lua src/luac "${COOKBOOK_STAGE}/bin" diff --git a/recipes/lua/redox.patch b/recipes/lua/redox.patch new file mode 100644 index 00000000..1ee05dde --- /dev/null +++ b/recipes/lua/redox.patch @@ -0,0 +1,24 @@ +diff -ruwN lua-5.4.4/src/Makefile source/src/Makefile +--- lua-5.4.4/src/Makefile 2021-07-15 08:01:52.000000000 -0600 ++++ source/src/Makefile 2023-09-20 09:43:33.165057570 -0600 +@@ -4,15 +4,15 @@ + # == CHANGE THE SETTINGS BELOW TO SUIT YOUR ENVIRONMENT ======================= + + # Your platform. See PLATS for possible values. +-PLAT= guess ++PLAT= generic + +-CC= gcc -std=gnu99 ++CC= $(TARGET)-gcc -std=gnu99 + CFLAGS= -O2 -Wall -Wextra -DLUA_COMPAT_5_3 $(SYSCFLAGS) $(MYCFLAGS) +-LDFLAGS= $(SYSLDFLAGS) $(MYLDFLAGS) ++LDFLAGS= -static $(SYSLDFLAGS) $(MYLDFLAGS) + LIBS= -lm $(SYSLIBS) $(MYLIBS) + +-AR= ar rcu +-RANLIB= ranlib ++AR= $(TARGET)-ar rcu ++RANLIB= $(TARGET)-ranlib + RM= rm -f + UNAME= uname + From f1a3adf0210d6f81289f44b8048457d147f308a7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 20 Sep 2023 10:07:00 -0600 Subject: [PATCH 1135/3180] lua: remove patch, pass variables to make --- recipes/lua/recipe.toml | 11 +++++++---- recipes/lua/redox.patch | 24 ------------------------ 2 files changed, 7 insertions(+), 28 deletions(-) delete mode 100644 recipes/lua/redox.patch diff --git a/recipes/lua/recipe.toml b/recipes/lua/recipe.toml index 9987f6cc..d51b3aa1 100644 --- a/recipes/lua/recipe.toml +++ b/recipes/lua/recipe.toml @@ -1,14 +1,17 @@ [source] tar = "https://www.lua.org/ftp/lua-5.4.4.tar.gz" -patches = [ - "redox.patch" -] +blake3 = "ca54489393cd38e35d295a9c35dbf0da5336a66ddb7b2213eed6c2f3039f53b1" [build] template = "custom" script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ -"${COOKBOOK_MAKE}" generic -j"${COOKBOOK_MAKE_JOBS}" +"${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" \ + AR="${TARGET}-ar rcu" \ + CC="${TARGET}-gcc -std=gnu99" \ + RANLIB="${TARGET}-ranlib" \ + SYSLDFLAGS="-static" \ + generic mkdir -pv "${COOKBOOK_STAGE}/bin" cp src/lua src/luac "${COOKBOOK_STAGE}/bin" """ diff --git a/recipes/lua/redox.patch b/recipes/lua/redox.patch deleted file mode 100644 index 1ee05dde..00000000 --- a/recipes/lua/redox.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -ruwN lua-5.4.4/src/Makefile source/src/Makefile ---- lua-5.4.4/src/Makefile 2021-07-15 08:01:52.000000000 -0600 -+++ source/src/Makefile 2023-09-20 09:43:33.165057570 -0600 -@@ -4,15 +4,15 @@ - # == CHANGE THE SETTINGS BELOW TO SUIT YOUR ENVIRONMENT ======================= - - # Your platform. See PLATS for possible values. --PLAT= guess -+PLAT= generic - --CC= gcc -std=gnu99 -+CC= $(TARGET)-gcc -std=gnu99 - CFLAGS= -O2 -Wall -Wextra -DLUA_COMPAT_5_3 $(SYSCFLAGS) $(MYCFLAGS) --LDFLAGS= $(SYSLDFLAGS) $(MYLDFLAGS) -+LDFLAGS= -static $(SYSLDFLAGS) $(MYLDFLAGS) - LIBS= -lm $(SYSLIBS) $(MYLIBS) - --AR= ar rcu --RANLIB= ranlib -+AR= $(TARGET)-ar rcu -+RANLIB= $(TARGET)-ranlib - RM= rm -f - UNAME= uname - From b4ff0e8766fc252f299e1558a00dbdeea4b120d0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 20 Sep 2023 10:07:10 -0600 Subject: [PATCH 1136/3180] bzip2: add recipe --- recipes/bzip2/recipe.toml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 recipes/bzip2/recipe.toml diff --git a/recipes/bzip2/recipe.toml b/recipes/bzip2/recipe.toml new file mode 100644 index 00000000..3b7bf86a --- /dev/null +++ b/recipes/bzip2/recipe.toml @@ -0,0 +1,21 @@ +[source] +tar = "https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz" +blake3 = "97af3f520629c65fe41292f77e6ca798fe594d7987bfb2aebe7c6fcdc7ab5ed2" + +[build] +template = "custom" +script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ +"${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" \ + AR="${TARGET}-ar" \ + CC="${TARGET}-gcc" \ + LDFLAGS="-static" \ + PREFIX=/ \ + RANLIB="${TARGET}-ranlib" \ + libbz2.a \ + bzip2 +mkdir -pv "${COOKBOOK_STAGE}/bin" +cp -v bzip2 "${COOKBOOK_STAGE}/bin" +mkdir -pv "${COOKBOOK_STAGE}/lib" +cp -v libbz2.a "${COOKBOOK_STAGE}/lib" +""" From 277d6423533178ecde67b2ee0c504b718e5321a6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 20 Sep 2023 10:16:00 -0600 Subject: [PATCH 1137/3180] bzip2: install header file --- recipes/bzip2/recipe.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/recipes/bzip2/recipe.toml b/recipes/bzip2/recipe.toml index 3b7bf86a..e2ad7a1a 100644 --- a/recipes/bzip2/recipe.toml +++ b/recipes/bzip2/recipe.toml @@ -16,6 +16,8 @@ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ bzip2 mkdir -pv "${COOKBOOK_STAGE}/bin" cp -v bzip2 "${COOKBOOK_STAGE}/bin" +mkdir -pv "${COOKBOOK_STAGE}/include" +cp -v bzlib.h "${COOKBOOK_STAGE}/include" mkdir -pv "${COOKBOOK_STAGE}/lib" cp -v libbz2.a "${COOKBOOK_STAGE}/lib" """ From 82d5db1b95d25447fd7df440f04a8e5fcc7bd58d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 20 Sep 2023 10:50:13 -0600 Subject: [PATCH 1138/3180] devilutionx: add recipe --- recipes/devilutionx/recipe.toml | 36 +++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 recipes/devilutionx/recipe.toml diff --git a/recipes/devilutionx/recipe.toml b/recipes/devilutionx/recipe.toml new file mode 100644 index 00000000..d47fdd6e --- /dev/null +++ b/recipes/devilutionx/recipe.toml @@ -0,0 +1,36 @@ +[source] +tar = "https://github.com/diasurgical/devilutionX/archive/refs/tags/1.5.1.tar.gz" +blake3 = "8425152bf50a692573d17ba85a8445734a564a372eba2190223bf0aa04f31d86" + +[build] +template = "custom" +dependencies = [ + "libiconv", + "liborbital", + "sdl", +] +script = """ +export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include" +export CXXFLAGS="${CXXFLAGS} -I${COOKBOOK_SYSROOT}/include" +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=ON + -DCMAKE_CXX_COMPILER="${TARGET}-g++" + -DCMAKE_C_COMPILER="${TARGET}-gcc" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_VERBOSE_MAKEFILE=ON + -DBUILD_TESTING=OFF + -DDEVILUTIONX_STATIC_BZIP2=ON + -DDEVILUTIONX_STATIC_ZLIB=ON + -DDEVILUTIONX_SYSTEM_BZIP2=OFF + -DDEVILUTIONX_SYSTEM_ZLIB=OFF + -DNONET=ON + -DUSE_SDL1=ON + -DSDL_LIBRARY="-lSDL -lorbital" + "${COOKBOOK_SOURCE}" +) +cookbook_configure +mkdir -v "${COOKBOOK_STAGE}/bin" +cp -v devilutionx "${COOKBOOK_STAGE}/bin" +""" From 6abcbb4a6384d01fd1d1772ad6eb006cf158adc4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 20 Sep 2023 14:33:31 -0600 Subject: [PATCH 1139/3180] openjk: add recipe --- recipes/openjk/recipe.toml | 54 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 recipes/openjk/recipe.toml diff --git a/recipes/openjk/recipe.toml b/recipes/openjk/recipe.toml new file mode 100644 index 00000000..5e64617e --- /dev/null +++ b/recipes/openjk/recipe.toml @@ -0,0 +1,54 @@ +[source] +git = "https://github.com/jackpot51/OpenJK" +upstream = "https://github.com/JACoders/OpenJK.git" + +[build] +template = "custom" +dependencies = [ + "libjpeg", + "liborbital", + "libpng", + "llvm", + "mesa", + "sdl2", + "zlib", +] +script = """ +export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" +export CXXFLAGS="${CXXFLAGS} -I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" +cat > redox.cmake < Date: Wed, 20 Sep 2023 15:25:59 -0600 Subject: [PATCH 1140/3180] Fixes for openjk recipe --- recipes/openjk/recipe.toml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/recipes/openjk/recipe.toml b/recipes/openjk/recipe.toml index 5e64617e..ce977d90 100644 --- a/recipes/openjk/recipe.toml +++ b/recipes/openjk/recipe.toml @@ -19,6 +19,7 @@ export CXXFLAGS="${CXXFLAGS} -I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT} cat > redox.cmake < Date: Mon, 25 Sep 2023 08:56:00 -0600 Subject: [PATCH 1141/3180] ncurses: convert to new recipe format --- recipes/ncurses/recipe.sh | 35 ----------------------------------- recipes/ncurses/recipe.toml | 22 ++++++++++++++++++++++ 2 files changed, 22 insertions(+), 35 deletions(-) delete mode 100644 recipes/ncurses/recipe.sh create mode 100644 recipes/ncurses/recipe.toml diff --git a/recipes/ncurses/recipe.sh b/recipes/ncurses/recipe.sh deleted file mode 100644 index f20be355..00000000 --- a/recipes/ncurses/recipe.sh +++ /dev/null @@ -1,35 +0,0 @@ -VERSION=6.4 -TAR=https://ftp.gnu.org/gnu/ncurses/ncurses-$VERSION.tar.gz -DEPENDS="terminfo" - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix="" \ - --disable-db-install \ - --without-ada \ - --without-cxx-binding \ - --without-tests \ - cf_cv_func_mkstemp=yes - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -rf "$1"/bin - rm -rf "$1"/share/{doc,info,man} - skip=1 -} diff --git a/recipes/ncurses/recipe.toml b/recipes/ncurses/recipe.toml new file mode 100644 index 00000000..6e191319 --- /dev/null +++ b/recipes/ncurses/recipe.toml @@ -0,0 +1,22 @@ +[source] +tar = "https://ftp.gnu.org/gnu/ncurses/ncurses-6.4.tar.gz" +blake3 = "0d1c9fdf53c0ca4bd66ba707d49a079d2dd6f5a960cdec74a56e29952c4ffe73" + +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --disable-db-install + --without-ada + --without-cxx-binding + --without-tests + cf_cv_func_mkstemp=yes +) +cookbook_configure +rm -rfv "${COOKBOOK_STAGE}/bin" "${COOKBOOK_STAGE}/share/"{doc,info,man} +""" + +[package] +dependencies = [ + "terminfo", +] From b77cee379f4b03a43f6caab31881e543f7d36525 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Tue, 3 Oct 2023 09:39:45 +0200 Subject: [PATCH 1142/3180] Move debuginfo and LTO option to Cargo.toml --- recipes/kernel/recipe.toml | 2 -- 1 file changed, 2 deletions(-) diff --git a/recipes/kernel/recipe.toml b/recipes/kernel/recipe.toml index 4d151de8..3cdd91c1 100644 --- a/recipes/kernel/recipe.toml +++ b/recipes/kernel/recipe.toml @@ -14,8 +14,6 @@ cargo rustc \ -Z build-std=core,alloc \ -- \ -C soft-float \ - -C debuginfo=2 \ - -C lto \ --emit link="${PWD}/libkernel.a" "${TARGET}-ld" \ --gc-sections \ From 7bd186c5dbd2213d9b7c718f39cd0ef3daf2725a Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Tue, 3 Oct 2023 09:53:56 +0200 Subject: [PATCH 1143/3180] Make rustc directly invoke the linker --- recipes/kernel/recipe.toml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/recipes/kernel/recipe.toml b/recipes/kernel/recipe.toml index 3cdd91c1..69794d4d 100644 --- a/recipes/kernel/recipe.toml +++ b/recipes/kernel/recipe.toml @@ -7,20 +7,15 @@ script = """ export RUST_TARGET_PATH="${COOKBOOK_SOURCE}/targets" ARCH="$(echo "${TARGET}" | cut -d - -f1)" cargo rustc \ - --lib \ + --bin kernel \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ --target "${COOKBOOK_SOURCE}/targets/${ARCH}-unknown-kernel.json" \ --release \ -Z build-std=core,alloc \ -- \ -C soft-float \ - --emit link="${PWD}/libkernel.a" -"${TARGET}-ld" \ - --gc-sections \ - -z max-page-size=0x1000 \ - -T "${COOKBOOK_SOURCE}/linkers/${ARCH}.ld" \ - -o kernel.all \ - libkernel.a + -C link-arg=-T -Clink-arg="${COOKBOOK_SOURCE}/linkers/${ARCH}.ld" \ + --emit link="${PWD}/kernel.all" "${TARGET}-objcopy" \ --only-keep-debug \ kernel.all \ From c9bcdb4e3dc3088521766acf486df78f6d328b05 Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Thu, 19 Oct 2023 19:55:27 +0200 Subject: [PATCH 1144/3180] Pin escalated to avoid relibc out-of-sync issues. --- recipes/escalated/recipe.toml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/recipes/escalated/recipe.toml b/recipes/escalated/recipe.toml index 801bf9a8..8bfd1b73 100644 --- a/recipes/escalated/recipe.toml +++ b/recipes/escalated/recipe.toml @@ -1,5 +1,9 @@ [source] git = "https://gitlab.redox-os.org/redox-os/escalated.git" +# Escalated is not backwards compatible wrt relibc versions, so we pin it here +# so it's updated together with the other main submodules. +rev = "efe37543" + [build] template = "cargo" From eceb1ab5fe0ef5476d494924124e30df81c3f6d4 Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Tue, 24 Oct 2023 21:03:44 +0200 Subject: [PATCH 1145/3180] Add profiled recipe --- recipes/profiled/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/profiled/recipe.toml diff --git a/recipes/profiled/recipe.toml b/recipes/profiled/recipe.toml new file mode 100644 index 00000000..1876ca35 --- /dev/null +++ b/recipes/profiled/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/profiled.git" + +[build] +template = "cargo" From 6881fbf6e8a17297dfed48f2d413f9204c6a0c7e Mon Sep 17 00:00:00 2001 From: mattmadeofpasta Date: Tue, 24 Oct 2023 19:36:18 +0000 Subject: [PATCH 1146/3180] Download sources over https --- recipes/bash/recipe.toml | 2 +- recipes/diffutils/recipe.sh | 2 +- recipes/freeciv/recipe.sh | 2 +- recipes/gnu-binutils/recipe.sh | 2 +- recipes/jansson/recipe.sh | 2 +- recipes/libc-bench/recipe.sh | 2 +- recipes/libjpeg/recipe.toml | 2 +- recipes/nasm/recipe.toml | 2 +- recipes/ncursesw/recipe.sh | 2 +- recipes/netsurf/recipe.sh | 2 +- recipes/readline/recipe.toml | 2 +- recipes/sed/recipe.toml | 2 +- recipes/ssh/recipe.sh | 2 +- recipes/vim/recipe.sh | 5 ++++- 14 files changed, 17 insertions(+), 14 deletions(-) diff --git a/recipes/bash/recipe.toml b/recipes/bash/recipe.toml index 68b0f3fc..92359164 100644 --- a/recipes/bash/recipe.toml +++ b/recipes/bash/recipe.toml @@ -1,5 +1,5 @@ [source] -tar = "http://ftp.gnu.org/gnu/bash/bash-5.2.15.tar.gz" +tar = "https://ftp.gnu.org/gnu/bash/bash-5.2.15.tar.gz" blake3 = "c1548e3f2a9b6de5296e18c28b3d2007985e647273e03f039efd3e489edaa41f" patches = [ "redox.patch" diff --git a/recipes/diffutils/recipe.sh b/recipes/diffutils/recipe.sh index a7f57fb8..4d04c16b 100644 --- a/recipes/diffutils/recipe.sh +++ b/recipes/diffutils/recipe.sh @@ -1,5 +1,5 @@ VERSION=3.6 -TAR=http://ftp.gnu.org/gnu/diffutils/diffutils-$VERSION.tar.xz +TAR=https://ftp.gnu.org/gnu/diffutils/diffutils-$VERSION.tar.xz function recipe_version { echo "$VERSION" diff --git a/recipes/freeciv/recipe.sh b/recipes/freeciv/recipe.sh index bbbf7fce..be7e2a37 100644 --- a/recipes/freeciv/recipe.sh +++ b/recipes/freeciv/recipe.sh @@ -1,5 +1,5 @@ VERSION=2.6.6 -TAR=http://files.freeciv.org/stable/freeciv-$VERSION.tar.bz2 +TAR=https://files.freeciv.org/stable/freeciv-$VERSION.tar.bz2 BUILD_DEPENDS=(curl freetype libiconv liborbital libpng openssl nghttp2 sdl sdl_gfx sdl_image sdl_mixer sdl_ttf zlib) function recipe_version { diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh index 19bc559b..03c15d6a 100644 --- a/recipes/gnu-binutils/recipe.sh +++ b/recipes/gnu-binutils/recipe.sh @@ -1,6 +1,6 @@ GIT=https://gitlab.redox-os.org/redox-os/binutils-gdb.git BRANCH=redox-2.41 -GIT_UPSTREAM=git://sourceware.org/git/binutils-gdb.git +GIT_UPSTREAM=https://sourceware.org/git/binutils-gdb.git BUILD_DEPENDS=(expat libgmp libmpfr) function recipe_version { diff --git a/recipes/jansson/recipe.sh b/recipes/jansson/recipe.sh index f0091397..451d2544 100644 --- a/recipes/jansson/recipe.sh +++ b/recipes/jansson/recipe.sh @@ -1,5 +1,5 @@ VERSION=2.10 -TAR=http://www.digip.org/jansson/releases/jansson-$VERSION.tar.gz +TAR=https://www.digip.org/jansson/releases/jansson-$VERSION.tar.gz function recipe_version { echo "$VERSION" diff --git a/recipes/libc-bench/recipe.sh b/recipes/libc-bench/recipe.sh index 2c0f9992..df203cea 100644 --- a/recipes/libc-bench/recipe.sh +++ b/recipes/libc-bench/recipe.sh @@ -1,5 +1,5 @@ VERSION=20110206 -TAR=http://www.etalabs.net/releases/libc-bench-$VERSION.tar.gz +TAR=https://www.etalabs.net/releases/libc-bench-$VERSION.tar.gz function recipe_version { echo "$VERSION" diff --git a/recipes/libjpeg/recipe.toml b/recipes/libjpeg/recipe.toml index cfd3a69d..6cad244e 100644 --- a/recipes/libjpeg/recipe.toml +++ b/recipes/libjpeg/recipe.toml @@ -1,5 +1,5 @@ [source] -tar = "http://ijg.org/files/jpegsrc.v9e.tar.gz" +tar = "https://ijg.org/files/jpegsrc.v9e.tar.gz" blake3 = "f0d6072e15de609397cbd8428758d7054dd921dc448018111e3822b17bcbcc5d" [build] template = "configure" diff --git a/recipes/nasm/recipe.toml b/recipes/nasm/recipe.toml index 384cd9e1..57a1e774 100644 --- a/recipes/nasm/recipe.toml +++ b/recipes/nasm/recipe.toml @@ -1,5 +1,5 @@ [source] -tar = "http://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.gz" +tar = "https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.gz" [build] template = "configure" diff --git a/recipes/ncursesw/recipe.sh b/recipes/ncursesw/recipe.sh index 485e2c54..05c8e6ab 100644 --- a/recipes/ncursesw/recipe.sh +++ b/recipes/ncursesw/recipe.sh @@ -1,5 +1,5 @@ VERSION=6.0 -TAR=http://ftp.gnu.org/gnu/ncurses/ncurses-$VERSION.tar.gz +TAR=https://ftp.gnu.org/gnu/ncurses/ncurses-$VERSION.tar.gz DEPENDS="terminfo" function recipe_version { diff --git a/recipes/netsurf/recipe.sh b/recipes/netsurf/recipe.sh index 6cc42ec8..77ddf17f 100644 --- a/recipes/netsurf/recipe.sh +++ b/recipes/netsurf/recipe.sh @@ -1,5 +1,5 @@ VERSION=3.10 -TAR=http://download.netsurf-browser.org/netsurf/releases/source-full/netsurf-all-$VERSION.tar.gz +TAR=https://download.netsurf-browser.org/netsurf/releases/source-full/netsurf-all-$VERSION.tar.gz BUILD_DEPENDS=(curl expat libjpeg libpng nghttp2 openssl sdl zlib freetype liborbital libiconv) DEPENDS="ca-certificates orbital" diff --git a/recipes/readline/recipe.toml b/recipes/readline/recipe.toml index 0a5664c3..322e8f6b 100644 --- a/recipes/readline/recipe.toml +++ b/recipes/readline/recipe.toml @@ -1,7 +1,7 @@ [source] #git = "https://git.savannah.gnu.org/git/readline.git" #rev = "d49a9082c0e15bba8cd3d8cc0a994409cf823cac" -tar = "http://ftp.gnu.org/gnu/readline/readline-7.0.tar.gz" +tar = "https://ftp.gnu.org/gnu/readline/readline-7.0.tar.gz" blake3 = "962483e201f36f05a5ccb507bb7330b4d4e4989fd52f41eb15ba65582ad02703" patches = [ "redox.patch" diff --git a/recipes/sed/recipe.toml b/recipes/sed/recipe.toml index ffb29795..c9f58cec 100644 --- a/recipes/sed/recipe.toml +++ b/recipes/sed/recipe.toml @@ -1,5 +1,5 @@ [source] -tar = "http://ftp.gnu.org/gnu/sed/sed-4.4.tar.xz" +tar = "https://ftp.gnu.org/gnu/sed/sed-4.4.tar.xz" patches = [ "sed.patch" ] diff --git a/recipes/ssh/recipe.sh b/recipes/ssh/recipe.sh index 07b365a4..ef1cf953 100644 --- a/recipes/ssh/recipe.sh +++ b/recipes/ssh/recipe.sh @@ -1,5 +1,5 @@ VERSION=7.9p1 -TAR=http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-$VERSION.tar.gz +TAR=https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-$VERSION.tar.gz BUILD_DEPENDS=(openssl zlib) function recipe_version { diff --git a/recipes/vim/recipe.sh b/recipes/vim/recipe.sh index c4dd8182..f2b157ba 100644 --- a/recipes/vim/recipe.sh +++ b/recipes/vim/recipe.sh @@ -1,5 +1,8 @@ VERSION=8.2 -TAR=http://ftp.vim.org/vim/unix/vim-$VERSION.tar.bz2 +# We use `https://ftp.nluug.nl` because `ftp.vim.org` doesn't support `https` +# see https://www.vim.org/mirrors.php +TAR=https://ftp.nluug.nl/pub/vim/unix/vim-$VERSION.tar.bz2 + BUILD_DEPENDS=(ncurses) DEPENDS="terminfo" From e7dec18d997b3d05489795c4f70ca4665025e60f Mon Sep 17 00:00:00 2001 From: mattmadeofpasta Date: Tue, 24 Oct 2023 21:27:10 +0000 Subject: [PATCH 1147/3180] Download mesa-glu source over https --- recipes/mesa_glu/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/mesa_glu/recipe.sh b/recipes/mesa_glu/recipe.sh index 6624442a..175759ac 100644 --- a/recipes/mesa_glu/recipe.sh +++ b/recipes/mesa_glu/recipe.sh @@ -1,5 +1,5 @@ VERSION=9.0.1 -TAR=ftp://ftp.freedesktop.org/pub/mesa/glu/glu-$VERSION.tar.xz +TAR=https://archive.mesa3d.org/glu/glu-$VERSION.tar.xz BUILD_DEPENDS=(mesa) function recipe_version { From ea439bebf510ce150d99ca5c9f7482a095e1af26 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 4 Nov 2023 12:15:10 -0600 Subject: [PATCH 1148/3180] openjazz: revert to autoconf supporting release --- recipes/openjazz/recipe.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/recipes/openjazz/recipe.sh b/recipes/openjazz/recipe.sh index 1a8dafbe..56b0c833 100644 --- a/recipes/openjazz/recipe.sh +++ b/recipes/openjazz/recipe.sh @@ -1,5 +1,7 @@ -VERSION=0.1 -GIT=https://github.com/AlisterT/openjazz +#TODO: support cmake version 20231028 +VERSION=20190106 +TAR="https://github.com/AlisterT/openjazz/releases/download/${VERSION}/openjazz-${VERSION}.tar.xz" +TAR_SHA256="91341adcc4908db12aad6b82d2fb0125429a26585f65d7eb32d403656313eaab" BUILD_DEPENDS=(sdl liborbital zlib) function recipe_version { @@ -15,7 +17,7 @@ function recipe_build { touch INSTALL NEWS README AUTHORS ChangeLog COPYING autoreconf -fvi autoconf - wget -O builds/autotools/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" + wget -O build-aux/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" ./configure --build=${BUILD} --host=${HOST} --prefix='' "$REDOX_MAKE" -j"$($NPROC)" V=1 skip=1 From 814214fe20356a475dbaa011928e6be1eb6d992a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 5 Nov 2023 12:58:51 +0000 Subject: [PATCH 1149/3180] Move recipes to categories --- README.md | 28 ++++++++++++++++-- recipes/{ => backends}/cairo/recipe.sh | 0 recipes/{ => backends}/cairo/redox.patch | 0 recipes/{ => backends}/pango/recipe.sh | 0 recipes/{ => backends}/pango/redox.patch | 0 recipes/{ => backends}/sdl/recipe.toml | 0 recipes/{ => backends}/sdl2/recipe.toml | 0 recipes/{ => backends}/sdl2_image/recipe.toml | 0 recipes/{ => backends}/sdl2_mixer/recipe.toml | 0 recipes/{ => backends}/sdl2_mixer/redox.patch | 0 recipes/{ => backends}/sdl2_ttf/recipe.sh | 0 recipes/{ => backends}/sdl_gfx/01_redox.patch | 0 recipes/{ => backends}/sdl_gfx/recipe.sh | 0 .../{ => backends}/sdl_image/01_redox.patch | 0 recipes/{ => backends}/sdl_image/recipe.sh | 0 recipes/{ => backends}/sdl_mixer/recipe.sh | 0 recipes/{ => backends}/sdl_mixer/redox.patch | 0 recipes/{ => backends}/sdl_ttf/01_redox.patch | 0 recipes/{ => backends}/sdl_ttf/recipe.sh | 0 recipes/{ => backends}/webrender/recipe.sh | 0 recipes/{ => core}/audiod/recipe.toml | 0 recipes/{ => core}/binutils/recipe.toml | 0 recipes/{ => core}/bootloader/recipe.toml | 0 recipes/{ => core}/bootstrap/recipe.toml | 0 recipes/{ => core}/contain/recipe.toml | 0 recipes/{ => core}/coreutils/recipe.toml | 0 recipes/{ => core}/dash/recipe.toml | 0 recipes/{ => core}/drivers-initfs/recipe.toml | 0 recipes/{ => core}/drivers/recipe.toml | 0 recipes/{ => core}/escalated/recipe.toml | 0 recipes/{ => core}/extrautils/recipe.toml | 0 recipes/{ => core}/findutils/recipe.toml | 0 recipes/{ => core}/init/recipe.toml | 0 recipes/{ => core}/initfs/init.rc | 0 recipes/{ => core}/initfs/recipe.toml | 0 recipes/{ => core}/installer/recipe.toml | 0 recipes/{ => core}/ion/recipe.toml | 0 recipes/{ => core}/ipcd/recipe.toml | 0 recipes/{ => core}/kernel/recipe.toml | 0 recipes/{ => core}/logd/recipe.toml | 0 recipes/{ => core}/netdb/recipe.toml | 0 recipes/{ => core}/netstack/recipe.toml | 0 recipes/{ => core}/netutils/recipe.toml | 0 recipes/{ => core}/nulld/recipe.toml | 0 recipes/{ => core}/pkgutils/recipe.toml | 0 recipes/{ => core}/ptyd/recipe.toml | 0 recipes/{ => core}/ramfs/recipe.toml | 0 recipes/{ => core}/randd/recipe.toml | 0 recipes/{ => core}/redoxfs/recipe.toml | 0 recipes/{ => core}/relibc/recipe.toml | 0 recipes/{ => core}/userutils/recipe.toml | 0 recipes/{ => core}/uutils/recipe.toml | 0 recipes/{ => core}/zerod/recipe.toml | 0 recipes/{ => demos}/cairodemo/cairodemo.c | 0 recipes/{ => demos}/cairodemo/recipe.sh | 0 recipes/{ => demos}/cmatrix/recipe.sh | 0 recipes/{ => demos}/gears/gears.c | 0 recipes/{ => demos}/gears/recipe.sh | 0 recipes/{ => demos}/iced/recipe.toml | 0 recipes/{ => demos}/osdemo/osdemo.c | 0 recipes/{ => demos}/osdemo/recipe.sh | 0 recipes/{ => demos}/pixelcannon/recipe.sh | 0 recipes/{ => demos}/rust-cairo-demo/recipe.sh | 0 .../{ => demos}/sdl2_gears/assets/font.ttf | Bin .../{ => demos}/sdl2_gears/assets/image.png | Bin .../{ => demos}/sdl2_gears/assets/music.wav | Bin recipes/{ => demos}/sdl2_gears/gears.c | 0 recipes/{ => demos}/sdl2_gears/recipe.sh | 0 .../{ => development}/autoconf/recipe.toml | 0 .../{ => development}/automake/recipe.toml | 0 recipes/{ => development}/cargo/recipe.toml | 0 recipes/{ => development}/cmake/recipe.toml | 0 .../crates-io-index/recipe.toml | 0 recipes/{ => development}/fal/recipe.sh | 0 .../{ => development}/fontconfig/recipe.toml | 0 .../{ => development}/fontconfig/redox.patch | 0 recipes/{ => development}/gawk/recipe.sh | 0 recipes/{ => development}/gcc/recipe.sh | 0 .../{ => development}/gdbserver/recipe.toml | 0 .../{ => development}/gdk-pixbuf/recipe.sh | 0 recipes/{ => development}/gnu-make/make.patch | 0 recipes/{ => development}/gnu-make/recipe.sh | 0 recipes/{ => development}/lci/recipe.sh | 0 recipes/{ => development}/llvm/native.cmake | 0 recipes/{ => development}/llvm/recipe.toml | 0 recipes/{ => development}/lua/recipe.toml | 0 recipes/{ => development}/nasm/recipe.toml | 0 .../patch/01-no-rlimit.patch | 0 .../{ => development}/patch/02-no-chown.patch | 0 recipes/{ => development}/patch/recipe.sh | 0 recipes/{ => development}/pciids/recipe.toml | 0 recipes/{ => development}/perl/perl.patch | 0 recipes/{ => development}/perl/recipe.sh | 0 .../{ => development}/pkg-config/recipe.toml | 0 recipes/{ => development}/pkgar/recipe.toml | 0 recipes/{ => development}/python/config.site | 0 recipes/{ => development}/python/recipe.sh | 0 recipes/{ => development}/python/redox.patch | 0 .../{ => development}/redoxerd/recipe.toml | 0 recipes/{ => development}/rust/.gitignore | 0 recipes/{ => development}/rust/config.toml | 0 recipes/{ => development}/rust/recipe.sh | 0 .../{ => development}/rustpython/recipe.toml | 0 recipes/{ => development}/strace/recipe.toml | 0 recipes/{ => documentation}/book/recipe.toml | 0 recipes/{ => emulators}/dosbox/01_redox.patch | 0 recipes/{ => emulators}/dosbox/icon.png | Bin recipes/{ => emulators}/dosbox/manifest | 0 recipes/{ => emulators}/dosbox/recipe.sh | 0 recipes/{ => emulators}/flycast/recipe.toml | 0 .../libretro-super/recipe.toml | 0 recipes/{ => emulators}/mednafen/recipe.toml | 0 recipes/{ => emulators}/mednafen/redox.patch | 0 recipes/{ => emulators}/mgba/01_redox.patch | 0 recipes/{ => emulators}/mgba/recipe.sh | 0 recipes/{ => emulators}/qemu/recipe.sh | 0 recipes/{ => emulators}/qemu/redox.patch | 0 recipes/{ => emulators}/retroarch/recipe.toml | 0 recipes/{ => emulators}/rs-nes/recipe.toml | 0 recipes/{ => emulators}/rust64/recipe.toml | 0 recipes/{ => emulators}/rustual-boy/recipe.sh | 0 .../{ => emulators}/scummvm/01_redox.patch | 0 recipes/{ => emulators}/scummvm/icon.png | Bin recipes/{ => emulators}/scummvm/manifest | 0 recipes/{ => emulators}/scummvm/recipe.sh | 0 recipes/{ => emulators}/vice/01_redox.patch | 0 recipes/{ => emulators}/vice/recipe.sh | 0 recipes/{ => examples}/cpal/recipe.toml | 0 .../{ => examples}/dynamic-example/recipe.sh | 0 recipes/{ => examples}/exampled/recipe.toml | 0 recipes/{ => examples}/glium/recipe.sh | 0 recipes/{ => examples}/glutin/recipe.toml | 0 recipes/{ => examples}/orbclient/recipe.toml | 0 recipes/{ => examples}/rust-cairo/recipe.sh | 0 recipes/{ => examples}/winit/recipe.toml | 0 recipes/{ => games}/classicube/manifest | 0 recipes/{ => games}/classicube/recipe.toml | 0 recipes/{ => games}/eduke32/icon.png | Bin recipes/{ => games}/eduke32/manifest | 0 recipes/{ => games}/eduke32/recipe.sh | 0 recipes/{ => games}/eduke32/redox.patch | 0 recipes/{ => games}/freeciv/01_redox.patch | 0 recipes/{ => games}/freeciv/recipe.sh | 0 recipes/{ => games}/freedoom/recipe.sh | 0 recipes/{ => games}/game-2048/recipe.toml | 0 recipes/{ => games}/gigalomania/manifest | 0 recipes/{ => games}/gigalomania/recipe.sh | 0 recipes/{ => games}/hematite/recipe.toml | 0 .../{ => games}/neverball/manifest-neverball | 0 .../{ => games}/neverball/manifest-neverputt | 0 recipes/{ => games}/neverball/recipe.sh | 0 recipes/{ => games}/neverball/redox.patch | 0 recipes/{ => games}/openjazz/recipe.sh | 0 recipes/{ => games}/openttd-opengfx/recipe.sh | 0 recipes/{ => games}/openttd-openmsx/recipe.sh | 0 recipes/{ => games}/openttd-opensfx/recipe.sh | 0 recipes/{ => games}/openttd/01_redox.patch | 0 recipes/{ => games}/openttd/manifest | 0 recipes/{ => games}/openttd/recipe.sh | 0 recipes/{ => games}/prboom/01_redox.patch | 0 recipes/{ => games}/prboom/recipe.sh | 0 recipes/games/{ => redox-games}/recipe.toml | 0 recipes/{ => games}/sm64ex/.gitignore | 0 recipes/{ => games}/sm64ex/manifest | 0 recipes/{ => games}/sm64ex/recipe.toml | 0 recipes/{ => games}/sopwith/recipe.sh | 0 .../{ => games}/spacecadetpinball/recipe.toml | 0 .../{ => games}/syobonaction/01_redox.patch | 0 recipes/{ => games}/syobonaction/recipe.sh | 0 recipes/{ => games}/vvvvvv/recipe.sh | 0 recipes/{ => games}/wesnoth/recipe.sh | 0 recipes/{ => gui}/installer-gui/recipe.toml | 0 recipes/{ => gui}/orbdata/recipe.toml | 0 recipes/{ => gui}/orbital/recipe.toml | 0 recipes/{ => gui}/orbterm/recipe.toml | 0 .../{ => gui}/orbutils-background/recipe.sh | 0 recipes/{ => gui}/orbutils-launcher/recipe.sh | 0 recipes/{ => gui}/orbutils-orblogin/recipe.sh | 0 recipes/{ => gui}/orbutils/recipe.toml | 0 recipes/{ => gui}/periodictable/recipe.sh | 0 recipes/{ => libraries}/duktape/recipe.sh | 0 recipes/{ => libraries}/duktape/redox.patch | 0 recipes/{ => libraries}/expat/recipe.toml | 0 .../ffmpeg/binutils-2.41.patch | 0 recipes/{ => libraries}/ffmpeg/ffmpeg.patch | 0 recipes/{ => libraries}/ffmpeg/recipe.toml | 0 recipes/{ => libraries}/freeglut/recipe.sh | 0 .../freeglut/redox_cross_toolchain.cmake | 0 recipes/{ => libraries}/freetype/recipe.toml | 0 recipes/{ => libraries}/fribidi/recipe.sh | 0 recipes/{ => libraries}/glib/recipe.toml | 0 recipes/{ => libraries}/glib/redox.patch | 0 recipes/{ => libraries}/gstreamer/recipe.sh | 0 recipes/{ => libraries}/gstreamer/redox.patch | 0 recipes/{ => libraries}/harfbuzz/recipe.toml | 0 recipes/{ => libraries}/jansson/jansson.patch | 0 recipes/{ => libraries}/jansson/recipe.sh | 0 recipes/{ => libraries}/libcosmic/recipe.toml | 0 recipes/{ => libraries}/libffi/recipe.toml | 0 recipes/{ => libraries}/libffi/redox.patch | 0 recipes/{ => libraries}/libflac/recipe.toml | 0 recipes/{ => libraries}/libgmp/recipe.toml | 0 .../{ => libraries}/libiconv/01_redox.patch | 0 recipes/{ => libraries}/libiconv/recipe.toml | 0 recipes/{ => libraries}/libjpeg/recipe.toml | 0 recipes/{ => libraries}/libogg/recipe.toml | 0 recipes/{ => libraries}/libogg/redox.patch | 0 .../{ => libraries}/liborbital/recipe.toml | 0 recipes/{ => libraries}/libpng/recipe.toml | 0 .../{ => libraries}/libsodium/random.patch | 0 recipes/{ => libraries}/libsodium/recipe.toml | 0 recipes/{ => libraries}/libssh2/recipe.toml | 0 recipes/{ => libraries}/libvorbis/recipe.toml | 0 recipes/{ => libraries}/libxml2/recipe.toml | 0 recipes/{ => libraries}/mesa/recipe.toml | 0 recipes/{ => libraries}/mesa_glu/recipe.sh | 0 recipes/{ => libraries}/openssl/recipe.toml | 0 recipes/{ => libraries}/pcre/recipe.toml | 0 recipes/{ => libraries}/pcre/redox.patch | 0 recipes/{ => libraries}/pixman/recipe.sh | 0 recipes/{ => libraries}/pixman/redox.patch | 0 recipes/{ => libraries}/readline/recipe.toml | 0 recipes/{ => libraries}/readline/redox.patch | 0 .../{ => libraries}/redox-fatfs/recipe.toml | 0 recipes/{ => libraries}/zlib/recipe.toml | 0 recipes/{ => network}/netsurf/01_redox.patch | 0 recipes/{ => network}/netsurf/manifest | 0 recipes/{ => network}/netsurf/recipe.sh | 0 recipes/{ => network}/nghttp2/recipe.toml | 0 .../{ => other}/ca-certificates/recipe.toml | 0 recipes/{ => other}/generaluser-gs/recipe.sh | 0 recipes/{ => other}/jeremy/recipe.toml | 0 recipes/{ => other}/keyboard-sfx/recipe.sh | 0 .../{ => other}/noto-color-emoji/recipe.toml | 0 .../{ => other}/shared-mime-info/recipe.sh | 0 recipes/{ => other}/terminfo/recipe.sh | 0 recipes/{ => other}/ttf-hack/recipe.sh | 0 recipes/{ => shells}/bash/recipe.toml | 0 recipes/{ => shells}/bash/redox.patch | 0 recipes/{ => shells}/nushell/recipe.toml | 0 recipes/{ => sound}/freepats/recipe.sh | 0 recipes/{ => sound}/rodioplay/recipe.toml | 0 recipes/{ => sound}/timidity/recipe.sh | 0 recipes/{ => tests}/acid/recipe.toml | 0 recipes/{ => tests}/relibc-tests/recipe.toml | 0 recipes/{ => tests}/resist/recipe.toml | 0 recipes/{ => tests}/vttest/recipe.sh | 0 recipes/{ => tests}/vttest/vttest.patch | 0 recipes/{ => toolkits}/atk/recipe.sh | 0 recipes/{ => toolkits}/atk/redox.patch | 0 recipes/{ => toolkits}/servo/recipe.sh | 0 recipes/{ => tools}/calculator/recipe.toml | 0 recipes/{ => tools}/cleye/recipe.toml | 0 recipes/{ => tools}/cosmic-text/recipe.toml | 0 recipes/{ => tools}/curl/recipe.toml | 0 recipes/{ => tools}/diffutils/diffutils.patch | 0 recipes/{ => tools}/diffutils/recipe.sh | 0 recipes/{ => tools}/fd/recipe.toml | 0 recipes/{ => tools}/friar/recipe.toml | 0 recipes/{ => tools}/gettext/recipe.toml | 0 recipes/{ => tools}/gettext/redox.patch | 0 recipes/{ => tools}/git/git.patch | 0 recipes/{ => tools}/git/recipe.sh | 0 recipes/{ => tools}/gitoxide/recipe.toml | 0 recipes/{ => tools}/gnu-binutils/recipe.sh | 0 recipes/{ => tools}/gnu-grep/grep.patch | 0 recipes/{ => tools}/gnu-grep/recipe.sh | 0 recipes/{ => tools}/libc-bench/recipe.sh | 0 recipes/{ => tools}/libc-bench/redox.patch | 0 recipes/{ => tools}/miniserve/recipe.sh | 0 recipes/{ => tools}/pastel/recipe.sh | 0 recipes/{ => tools}/pathfinder/recipe.toml | 0 recipes/{ => tools}/perg/recipe.toml | 0 recipes/{ => tools}/powerline/recipe.sh | 0 .../procedural-wallpapers-rs/recipe.toml | 0 recipes/{ => tools}/redox-ssh/recipe.toml | 0 recipes/{ => tools}/ripgrep/recipe.toml | 0 .../{ => tools}/schismtracker/01_redox.patch | 0 recipes/{ => tools}/schismtracker/manifest | 0 recipes/{ => tools}/schismtracker/recipe.sh | 0 recipes/{ => tools}/sed/recipe.toml | 0 recipes/{ => tools}/sed/sed.patch | 0 recipes/{ => tools}/shellharden/recipe.toml | 0 recipes/{ => tools}/shellstorm/recipe.toml | 0 recipes/{ => tools}/smith/recipe.toml | 0 recipes/{ => tools}/sodium/recipe.sh | 0 recipes/{ => tools}/ssh/recipe.sh | 0 recipes/{ => tools}/ssh/redox.patch | 0 recipes/{ => tools}/termplay/recipe.sh | 0 recipes/{ => tools}/tokei/recipe.toml | 0 .../{ => tools}/twin-commander/recipe.toml | 0 recipes/{ => tools}/vim/recipe.sh | 0 recipes/{ => tools}/vim/vim.patch | 0 recipes/{ => tools}/xz/recipe.toml | 0 recipes/{ => tui}/mdp/recipe.sh | 0 recipes/{ => tui}/ncdu/recipe.sh | 0 recipes/{ => tui}/ncurses/recipe.toml | 0 .../{ => tui}/ncursesw/01-config-sub.patch | 0 recipes/{ => tui}/ncursesw/recipe.sh | 0 299 files changed, 26 insertions(+), 2 deletions(-) rename recipes/{ => backends}/cairo/recipe.sh (100%) rename recipes/{ => backends}/cairo/redox.patch (100%) rename recipes/{ => backends}/pango/recipe.sh (100%) rename recipes/{ => backends}/pango/redox.patch (100%) rename recipes/{ => backends}/sdl/recipe.toml (100%) rename recipes/{ => backends}/sdl2/recipe.toml (100%) rename recipes/{ => backends}/sdl2_image/recipe.toml (100%) rename recipes/{ => backends}/sdl2_mixer/recipe.toml (100%) rename recipes/{ => backends}/sdl2_mixer/redox.patch (100%) rename recipes/{ => backends}/sdl2_ttf/recipe.sh (100%) rename recipes/{ => backends}/sdl_gfx/01_redox.patch (100%) rename recipes/{ => backends}/sdl_gfx/recipe.sh (100%) rename recipes/{ => backends}/sdl_image/01_redox.patch (100%) rename recipes/{ => backends}/sdl_image/recipe.sh (100%) rename recipes/{ => backends}/sdl_mixer/recipe.sh (100%) rename recipes/{ => backends}/sdl_mixer/redox.patch (100%) rename recipes/{ => backends}/sdl_ttf/01_redox.patch (100%) rename recipes/{ => backends}/sdl_ttf/recipe.sh (100%) rename recipes/{ => backends}/webrender/recipe.sh (100%) rename recipes/{ => core}/audiod/recipe.toml (100%) rename recipes/{ => core}/binutils/recipe.toml (100%) rename recipes/{ => core}/bootloader/recipe.toml (100%) rename recipes/{ => core}/bootstrap/recipe.toml (100%) rename recipes/{ => core}/contain/recipe.toml (100%) rename recipes/{ => core}/coreutils/recipe.toml (100%) rename recipes/{ => core}/dash/recipe.toml (100%) rename recipes/{ => core}/drivers-initfs/recipe.toml (100%) rename recipes/{ => core}/drivers/recipe.toml (100%) rename recipes/{ => core}/escalated/recipe.toml (100%) rename recipes/{ => core}/extrautils/recipe.toml (100%) rename recipes/{ => core}/findutils/recipe.toml (100%) rename recipes/{ => core}/init/recipe.toml (100%) rename recipes/{ => core}/initfs/init.rc (100%) rename recipes/{ => core}/initfs/recipe.toml (100%) rename recipes/{ => core}/installer/recipe.toml (100%) rename recipes/{ => core}/ion/recipe.toml (100%) rename recipes/{ => core}/ipcd/recipe.toml (100%) rename recipes/{ => core}/kernel/recipe.toml (100%) rename recipes/{ => core}/logd/recipe.toml (100%) rename recipes/{ => core}/netdb/recipe.toml (100%) rename recipes/{ => core}/netstack/recipe.toml (100%) rename recipes/{ => core}/netutils/recipe.toml (100%) rename recipes/{ => core}/nulld/recipe.toml (100%) rename recipes/{ => core}/pkgutils/recipe.toml (100%) rename recipes/{ => core}/ptyd/recipe.toml (100%) rename recipes/{ => core}/ramfs/recipe.toml (100%) rename recipes/{ => core}/randd/recipe.toml (100%) rename recipes/{ => core}/redoxfs/recipe.toml (100%) rename recipes/{ => core}/relibc/recipe.toml (100%) rename recipes/{ => core}/userutils/recipe.toml (100%) rename recipes/{ => core}/uutils/recipe.toml (100%) rename recipes/{ => core}/zerod/recipe.toml (100%) rename recipes/{ => demos}/cairodemo/cairodemo.c (100%) rename recipes/{ => demos}/cairodemo/recipe.sh (100%) rename recipes/{ => demos}/cmatrix/recipe.sh (100%) rename recipes/{ => demos}/gears/gears.c (100%) rename recipes/{ => demos}/gears/recipe.sh (100%) rename recipes/{ => demos}/iced/recipe.toml (100%) rename recipes/{ => demos}/osdemo/osdemo.c (100%) rename recipes/{ => demos}/osdemo/recipe.sh (100%) rename recipes/{ => demos}/pixelcannon/recipe.sh (100%) rename recipes/{ => demos}/rust-cairo-demo/recipe.sh (100%) rename recipes/{ => demos}/sdl2_gears/assets/font.ttf (100%) rename recipes/{ => demos}/sdl2_gears/assets/image.png (100%) rename recipes/{ => demos}/sdl2_gears/assets/music.wav (100%) rename recipes/{ => demos}/sdl2_gears/gears.c (100%) rename recipes/{ => demos}/sdl2_gears/recipe.sh (100%) rename recipes/{ => development}/autoconf/recipe.toml (100%) rename recipes/{ => development}/automake/recipe.toml (100%) rename recipes/{ => development}/cargo/recipe.toml (100%) rename recipes/{ => development}/cmake/recipe.toml (100%) rename recipes/{ => development}/crates-io-index/recipe.toml (100%) rename recipes/{ => development}/fal/recipe.sh (100%) rename recipes/{ => development}/fontconfig/recipe.toml (100%) rename recipes/{ => development}/fontconfig/redox.patch (100%) rename recipes/{ => development}/gawk/recipe.sh (100%) rename recipes/{ => development}/gcc/recipe.sh (100%) rename recipes/{ => development}/gdbserver/recipe.toml (100%) rename recipes/{ => development}/gdk-pixbuf/recipe.sh (100%) rename recipes/{ => development}/gnu-make/make.patch (100%) rename recipes/{ => development}/gnu-make/recipe.sh (100%) rename recipes/{ => development}/lci/recipe.sh (100%) rename recipes/{ => development}/llvm/native.cmake (100%) rename recipes/{ => development}/llvm/recipe.toml (100%) rename recipes/{ => development}/lua/recipe.toml (100%) rename recipes/{ => development}/nasm/recipe.toml (100%) rename recipes/{ => development}/patch/01-no-rlimit.patch (100%) rename recipes/{ => development}/patch/02-no-chown.patch (100%) rename recipes/{ => development}/patch/recipe.sh (100%) rename recipes/{ => development}/pciids/recipe.toml (100%) rename recipes/{ => development}/perl/perl.patch (100%) rename recipes/{ => development}/perl/recipe.sh (100%) rename recipes/{ => development}/pkg-config/recipe.toml (100%) rename recipes/{ => development}/pkgar/recipe.toml (100%) rename recipes/{ => development}/python/config.site (100%) rename recipes/{ => development}/python/recipe.sh (100%) rename recipes/{ => development}/python/redox.patch (100%) rename recipes/{ => development}/redoxerd/recipe.toml (100%) rename recipes/{ => development}/rust/.gitignore (100%) rename recipes/{ => development}/rust/config.toml (100%) rename recipes/{ => development}/rust/recipe.sh (100%) rename recipes/{ => development}/rustpython/recipe.toml (100%) rename recipes/{ => development}/strace/recipe.toml (100%) rename recipes/{ => documentation}/book/recipe.toml (100%) rename recipes/{ => emulators}/dosbox/01_redox.patch (100%) rename recipes/{ => emulators}/dosbox/icon.png (100%) rename recipes/{ => emulators}/dosbox/manifest (100%) rename recipes/{ => emulators}/dosbox/recipe.sh (100%) rename recipes/{ => emulators}/flycast/recipe.toml (100%) rename recipes/{ => emulators}/libretro-super/recipe.toml (100%) rename recipes/{ => emulators}/mednafen/recipe.toml (100%) rename recipes/{ => emulators}/mednafen/redox.patch (100%) rename recipes/{ => emulators}/mgba/01_redox.patch (100%) rename recipes/{ => emulators}/mgba/recipe.sh (100%) rename recipes/{ => emulators}/qemu/recipe.sh (100%) rename recipes/{ => emulators}/qemu/redox.patch (100%) rename recipes/{ => emulators}/retroarch/recipe.toml (100%) rename recipes/{ => emulators}/rs-nes/recipe.toml (100%) rename recipes/{ => emulators}/rust64/recipe.toml (100%) rename recipes/{ => emulators}/rustual-boy/recipe.sh (100%) rename recipes/{ => emulators}/scummvm/01_redox.patch (100%) rename recipes/{ => emulators}/scummvm/icon.png (100%) rename recipes/{ => emulators}/scummvm/manifest (100%) rename recipes/{ => emulators}/scummvm/recipe.sh (100%) rename recipes/{ => emulators}/vice/01_redox.patch (100%) rename recipes/{ => emulators}/vice/recipe.sh (100%) rename recipes/{ => examples}/cpal/recipe.toml (100%) rename recipes/{ => examples}/dynamic-example/recipe.sh (100%) rename recipes/{ => examples}/exampled/recipe.toml (100%) rename recipes/{ => examples}/glium/recipe.sh (100%) rename recipes/{ => examples}/glutin/recipe.toml (100%) rename recipes/{ => examples}/orbclient/recipe.toml (100%) rename recipes/{ => examples}/rust-cairo/recipe.sh (100%) rename recipes/{ => examples}/winit/recipe.toml (100%) rename recipes/{ => games}/classicube/manifest (100%) rename recipes/{ => games}/classicube/recipe.toml (100%) rename recipes/{ => games}/eduke32/icon.png (100%) rename recipes/{ => games}/eduke32/manifest (100%) rename recipes/{ => games}/eduke32/recipe.sh (100%) rename recipes/{ => games}/eduke32/redox.patch (100%) rename recipes/{ => games}/freeciv/01_redox.patch (100%) rename recipes/{ => games}/freeciv/recipe.sh (100%) rename recipes/{ => games}/freedoom/recipe.sh (100%) rename recipes/{ => games}/game-2048/recipe.toml (100%) rename recipes/{ => games}/gigalomania/manifest (100%) rename recipes/{ => games}/gigalomania/recipe.sh (100%) rename recipes/{ => games}/hematite/recipe.toml (100%) rename recipes/{ => games}/neverball/manifest-neverball (100%) rename recipes/{ => games}/neverball/manifest-neverputt (100%) rename recipes/{ => games}/neverball/recipe.sh (100%) rename recipes/{ => games}/neverball/redox.patch (100%) rename recipes/{ => games}/openjazz/recipe.sh (100%) rename recipes/{ => games}/openttd-opengfx/recipe.sh (100%) rename recipes/{ => games}/openttd-openmsx/recipe.sh (100%) rename recipes/{ => games}/openttd-opensfx/recipe.sh (100%) rename recipes/{ => games}/openttd/01_redox.patch (100%) rename recipes/{ => games}/openttd/manifest (100%) rename recipes/{ => games}/openttd/recipe.sh (100%) rename recipes/{ => games}/prboom/01_redox.patch (100%) rename recipes/{ => games}/prboom/recipe.sh (100%) rename recipes/games/{ => redox-games}/recipe.toml (100%) rename recipes/{ => games}/sm64ex/.gitignore (100%) rename recipes/{ => games}/sm64ex/manifest (100%) rename recipes/{ => games}/sm64ex/recipe.toml (100%) rename recipes/{ => games}/sopwith/recipe.sh (100%) rename recipes/{ => games}/spacecadetpinball/recipe.toml (100%) rename recipes/{ => games}/syobonaction/01_redox.patch (100%) rename recipes/{ => games}/syobonaction/recipe.sh (100%) rename recipes/{ => games}/vvvvvv/recipe.sh (100%) rename recipes/{ => games}/wesnoth/recipe.sh (100%) rename recipes/{ => gui}/installer-gui/recipe.toml (100%) rename recipes/{ => gui}/orbdata/recipe.toml (100%) rename recipes/{ => gui}/orbital/recipe.toml (100%) rename recipes/{ => gui}/orbterm/recipe.toml (100%) rename recipes/{ => gui}/orbutils-background/recipe.sh (100%) rename recipes/{ => gui}/orbutils-launcher/recipe.sh (100%) rename recipes/{ => gui}/orbutils-orblogin/recipe.sh (100%) rename recipes/{ => gui}/orbutils/recipe.toml (100%) rename recipes/{ => gui}/periodictable/recipe.sh (100%) rename recipes/{ => libraries}/duktape/recipe.sh (100%) rename recipes/{ => libraries}/duktape/redox.patch (100%) rename recipes/{ => libraries}/expat/recipe.toml (100%) rename recipes/{ => libraries}/ffmpeg/binutils-2.41.patch (100%) rename recipes/{ => libraries}/ffmpeg/ffmpeg.patch (100%) rename recipes/{ => libraries}/ffmpeg/recipe.toml (100%) rename recipes/{ => libraries}/freeglut/recipe.sh (100%) rename recipes/{ => libraries}/freeglut/redox_cross_toolchain.cmake (100%) rename recipes/{ => libraries}/freetype/recipe.toml (100%) rename recipes/{ => libraries}/fribidi/recipe.sh (100%) rename recipes/{ => libraries}/glib/recipe.toml (100%) rename recipes/{ => libraries}/glib/redox.patch (100%) rename recipes/{ => libraries}/gstreamer/recipe.sh (100%) rename recipes/{ => libraries}/gstreamer/redox.patch (100%) rename recipes/{ => libraries}/harfbuzz/recipe.toml (100%) rename recipes/{ => libraries}/jansson/jansson.patch (100%) rename recipes/{ => libraries}/jansson/recipe.sh (100%) rename recipes/{ => libraries}/libcosmic/recipe.toml (100%) rename recipes/{ => libraries}/libffi/recipe.toml (100%) rename recipes/{ => libraries}/libffi/redox.patch (100%) rename recipes/{ => libraries}/libflac/recipe.toml (100%) rename recipes/{ => libraries}/libgmp/recipe.toml (100%) rename recipes/{ => libraries}/libiconv/01_redox.patch (100%) rename recipes/{ => libraries}/libiconv/recipe.toml (100%) rename recipes/{ => libraries}/libjpeg/recipe.toml (100%) rename recipes/{ => libraries}/libogg/recipe.toml (100%) rename recipes/{ => libraries}/libogg/redox.patch (100%) rename recipes/{ => libraries}/liborbital/recipe.toml (100%) rename recipes/{ => libraries}/libpng/recipe.toml (100%) rename recipes/{ => libraries}/libsodium/random.patch (100%) rename recipes/{ => libraries}/libsodium/recipe.toml (100%) rename recipes/{ => libraries}/libssh2/recipe.toml (100%) rename recipes/{ => libraries}/libvorbis/recipe.toml (100%) rename recipes/{ => libraries}/libxml2/recipe.toml (100%) rename recipes/{ => libraries}/mesa/recipe.toml (100%) rename recipes/{ => libraries}/mesa_glu/recipe.sh (100%) rename recipes/{ => libraries}/openssl/recipe.toml (100%) rename recipes/{ => libraries}/pcre/recipe.toml (100%) rename recipes/{ => libraries}/pcre/redox.patch (100%) rename recipes/{ => libraries}/pixman/recipe.sh (100%) rename recipes/{ => libraries}/pixman/redox.patch (100%) rename recipes/{ => libraries}/readline/recipe.toml (100%) rename recipes/{ => libraries}/readline/redox.patch (100%) rename recipes/{ => libraries}/redox-fatfs/recipe.toml (100%) rename recipes/{ => libraries}/zlib/recipe.toml (100%) rename recipes/{ => network}/netsurf/01_redox.patch (100%) rename recipes/{ => network}/netsurf/manifest (100%) rename recipes/{ => network}/netsurf/recipe.sh (100%) rename recipes/{ => network}/nghttp2/recipe.toml (100%) rename recipes/{ => other}/ca-certificates/recipe.toml (100%) rename recipes/{ => other}/generaluser-gs/recipe.sh (100%) rename recipes/{ => other}/jeremy/recipe.toml (100%) rename recipes/{ => other}/keyboard-sfx/recipe.sh (100%) rename recipes/{ => other}/noto-color-emoji/recipe.toml (100%) rename recipes/{ => other}/shared-mime-info/recipe.sh (100%) rename recipes/{ => other}/terminfo/recipe.sh (100%) rename recipes/{ => other}/ttf-hack/recipe.sh (100%) rename recipes/{ => shells}/bash/recipe.toml (100%) rename recipes/{ => shells}/bash/redox.patch (100%) rename recipes/{ => shells}/nushell/recipe.toml (100%) rename recipes/{ => sound}/freepats/recipe.sh (100%) rename recipes/{ => sound}/rodioplay/recipe.toml (100%) rename recipes/{ => sound}/timidity/recipe.sh (100%) rename recipes/{ => tests}/acid/recipe.toml (100%) rename recipes/{ => tests}/relibc-tests/recipe.toml (100%) rename recipes/{ => tests}/resist/recipe.toml (100%) rename recipes/{ => tests}/vttest/recipe.sh (100%) rename recipes/{ => tests}/vttest/vttest.patch (100%) rename recipes/{ => toolkits}/atk/recipe.sh (100%) rename recipes/{ => toolkits}/atk/redox.patch (100%) rename recipes/{ => toolkits}/servo/recipe.sh (100%) rename recipes/{ => tools}/calculator/recipe.toml (100%) rename recipes/{ => tools}/cleye/recipe.toml (100%) rename recipes/{ => tools}/cosmic-text/recipe.toml (100%) rename recipes/{ => tools}/curl/recipe.toml (100%) rename recipes/{ => tools}/diffutils/diffutils.patch (100%) rename recipes/{ => tools}/diffutils/recipe.sh (100%) rename recipes/{ => tools}/fd/recipe.toml (100%) rename recipes/{ => tools}/friar/recipe.toml (100%) rename recipes/{ => tools}/gettext/recipe.toml (100%) rename recipes/{ => tools}/gettext/redox.patch (100%) rename recipes/{ => tools}/git/git.patch (100%) rename recipes/{ => tools}/git/recipe.sh (100%) rename recipes/{ => tools}/gitoxide/recipe.toml (100%) rename recipes/{ => tools}/gnu-binutils/recipe.sh (100%) rename recipes/{ => tools}/gnu-grep/grep.patch (100%) rename recipes/{ => tools}/gnu-grep/recipe.sh (100%) rename recipes/{ => tools}/libc-bench/recipe.sh (100%) rename recipes/{ => tools}/libc-bench/redox.patch (100%) rename recipes/{ => tools}/miniserve/recipe.sh (100%) rename recipes/{ => tools}/pastel/recipe.sh (100%) rename recipes/{ => tools}/pathfinder/recipe.toml (100%) rename recipes/{ => tools}/perg/recipe.toml (100%) rename recipes/{ => tools}/powerline/recipe.sh (100%) rename recipes/{ => tools}/procedural-wallpapers-rs/recipe.toml (100%) rename recipes/{ => tools}/redox-ssh/recipe.toml (100%) rename recipes/{ => tools}/ripgrep/recipe.toml (100%) rename recipes/{ => tools}/schismtracker/01_redox.patch (100%) rename recipes/{ => tools}/schismtracker/manifest (100%) rename recipes/{ => tools}/schismtracker/recipe.sh (100%) rename recipes/{ => tools}/sed/recipe.toml (100%) rename recipes/{ => tools}/sed/sed.patch (100%) rename recipes/{ => tools}/shellharden/recipe.toml (100%) rename recipes/{ => tools}/shellstorm/recipe.toml (100%) rename recipes/{ => tools}/smith/recipe.toml (100%) rename recipes/{ => tools}/sodium/recipe.sh (100%) rename recipes/{ => tools}/ssh/recipe.sh (100%) rename recipes/{ => tools}/ssh/redox.patch (100%) rename recipes/{ => tools}/termplay/recipe.sh (100%) rename recipes/{ => tools}/tokei/recipe.toml (100%) rename recipes/{ => tools}/twin-commander/recipe.toml (100%) rename recipes/{ => tools}/vim/recipe.sh (100%) rename recipes/{ => tools}/vim/vim.patch (100%) rename recipes/{ => tools}/xz/recipe.toml (100%) rename recipes/{ => tui}/mdp/recipe.sh (100%) rename recipes/{ => tui}/ncdu/recipe.sh (100%) rename recipes/{ => tui}/ncurses/recipe.toml (100%) rename recipes/{ => tui}/ncursesw/01-config-sub.patch (100%) rename recipes/{ => tui}/ncursesw/recipe.sh (100%) diff --git a/README.md b/README.md index 7c823038..43c67d11 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,29 @@ -# cookbook -A collection of package recipes for Redox. +# Cookbook + +A collection of software ports for Redox. + +### Categories + +- `backends` - Middlewares, like SDL2 +- `core` - System components (included on `server` build) +- `demos` - Software with demos +- `development` - Any software used for development, like compilers and dependency managers +- `documentation` - Software used for documentation +- `emulators` - Console emulators or compatibility/translation layers +- `examples` - Softwares with examples +- `games` - Any kind of game +- `gui` - Graphical interfaces +- `libraries` - Software with functions for other softwares, like OpenSSL +- `network` - Networking tools +- `other` - Software that can't fit on other categories +- `shells` - Terminal interpreters +- `sound` - Software used for sound processing/production +- `tests` - Software used to test other softwares +- `toolkits` - Software used to create other softwares with a framework-like approach +- `tools` - Text editors, terminal tools and any other kind of tools +- `tui` - Graphical terminal interfaces +- `video` - Video players and video processing/production tools +- `wip` - Software that needs porting or incomplete recipes [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) diff --git a/recipes/cairo/recipe.sh b/recipes/backends/cairo/recipe.sh similarity index 100% rename from recipes/cairo/recipe.sh rename to recipes/backends/cairo/recipe.sh diff --git a/recipes/cairo/redox.patch b/recipes/backends/cairo/redox.patch similarity index 100% rename from recipes/cairo/redox.patch rename to recipes/backends/cairo/redox.patch diff --git a/recipes/pango/recipe.sh b/recipes/backends/pango/recipe.sh similarity index 100% rename from recipes/pango/recipe.sh rename to recipes/backends/pango/recipe.sh diff --git a/recipes/pango/redox.patch b/recipes/backends/pango/redox.patch similarity index 100% rename from recipes/pango/redox.patch rename to recipes/backends/pango/redox.patch diff --git a/recipes/sdl/recipe.toml b/recipes/backends/sdl/recipe.toml similarity index 100% rename from recipes/sdl/recipe.toml rename to recipes/backends/sdl/recipe.toml diff --git a/recipes/sdl2/recipe.toml b/recipes/backends/sdl2/recipe.toml similarity index 100% rename from recipes/sdl2/recipe.toml rename to recipes/backends/sdl2/recipe.toml diff --git a/recipes/sdl2_image/recipe.toml b/recipes/backends/sdl2_image/recipe.toml similarity index 100% rename from recipes/sdl2_image/recipe.toml rename to recipes/backends/sdl2_image/recipe.toml diff --git a/recipes/sdl2_mixer/recipe.toml b/recipes/backends/sdl2_mixer/recipe.toml similarity index 100% rename from recipes/sdl2_mixer/recipe.toml rename to recipes/backends/sdl2_mixer/recipe.toml diff --git a/recipes/sdl2_mixer/redox.patch b/recipes/backends/sdl2_mixer/redox.patch similarity index 100% rename from recipes/sdl2_mixer/redox.patch rename to recipes/backends/sdl2_mixer/redox.patch diff --git a/recipes/sdl2_ttf/recipe.sh b/recipes/backends/sdl2_ttf/recipe.sh similarity index 100% rename from recipes/sdl2_ttf/recipe.sh rename to recipes/backends/sdl2_ttf/recipe.sh diff --git a/recipes/sdl_gfx/01_redox.patch b/recipes/backends/sdl_gfx/01_redox.patch similarity index 100% rename from recipes/sdl_gfx/01_redox.patch rename to recipes/backends/sdl_gfx/01_redox.patch diff --git a/recipes/sdl_gfx/recipe.sh b/recipes/backends/sdl_gfx/recipe.sh similarity index 100% rename from recipes/sdl_gfx/recipe.sh rename to recipes/backends/sdl_gfx/recipe.sh diff --git a/recipes/sdl_image/01_redox.patch b/recipes/backends/sdl_image/01_redox.patch similarity index 100% rename from recipes/sdl_image/01_redox.patch rename to recipes/backends/sdl_image/01_redox.patch diff --git a/recipes/sdl_image/recipe.sh b/recipes/backends/sdl_image/recipe.sh similarity index 100% rename from recipes/sdl_image/recipe.sh rename to recipes/backends/sdl_image/recipe.sh diff --git a/recipes/sdl_mixer/recipe.sh b/recipes/backends/sdl_mixer/recipe.sh similarity index 100% rename from recipes/sdl_mixer/recipe.sh rename to recipes/backends/sdl_mixer/recipe.sh diff --git a/recipes/sdl_mixer/redox.patch b/recipes/backends/sdl_mixer/redox.patch similarity index 100% rename from recipes/sdl_mixer/redox.patch rename to recipes/backends/sdl_mixer/redox.patch diff --git a/recipes/sdl_ttf/01_redox.patch b/recipes/backends/sdl_ttf/01_redox.patch similarity index 100% rename from recipes/sdl_ttf/01_redox.patch rename to recipes/backends/sdl_ttf/01_redox.patch diff --git a/recipes/sdl_ttf/recipe.sh b/recipes/backends/sdl_ttf/recipe.sh similarity index 100% rename from recipes/sdl_ttf/recipe.sh rename to recipes/backends/sdl_ttf/recipe.sh diff --git a/recipes/webrender/recipe.sh b/recipes/backends/webrender/recipe.sh similarity index 100% rename from recipes/webrender/recipe.sh rename to recipes/backends/webrender/recipe.sh diff --git a/recipes/audiod/recipe.toml b/recipes/core/audiod/recipe.toml similarity index 100% rename from recipes/audiod/recipe.toml rename to recipes/core/audiod/recipe.toml diff --git a/recipes/binutils/recipe.toml b/recipes/core/binutils/recipe.toml similarity index 100% rename from recipes/binutils/recipe.toml rename to recipes/core/binutils/recipe.toml diff --git a/recipes/bootloader/recipe.toml b/recipes/core/bootloader/recipe.toml similarity index 100% rename from recipes/bootloader/recipe.toml rename to recipes/core/bootloader/recipe.toml diff --git a/recipes/bootstrap/recipe.toml b/recipes/core/bootstrap/recipe.toml similarity index 100% rename from recipes/bootstrap/recipe.toml rename to recipes/core/bootstrap/recipe.toml diff --git a/recipes/contain/recipe.toml b/recipes/core/contain/recipe.toml similarity index 100% rename from recipes/contain/recipe.toml rename to recipes/core/contain/recipe.toml diff --git a/recipes/coreutils/recipe.toml b/recipes/core/coreutils/recipe.toml similarity index 100% rename from recipes/coreutils/recipe.toml rename to recipes/core/coreutils/recipe.toml diff --git a/recipes/dash/recipe.toml b/recipes/core/dash/recipe.toml similarity index 100% rename from recipes/dash/recipe.toml rename to recipes/core/dash/recipe.toml diff --git a/recipes/drivers-initfs/recipe.toml b/recipes/core/drivers-initfs/recipe.toml similarity index 100% rename from recipes/drivers-initfs/recipe.toml rename to recipes/core/drivers-initfs/recipe.toml diff --git a/recipes/drivers/recipe.toml b/recipes/core/drivers/recipe.toml similarity index 100% rename from recipes/drivers/recipe.toml rename to recipes/core/drivers/recipe.toml diff --git a/recipes/escalated/recipe.toml b/recipes/core/escalated/recipe.toml similarity index 100% rename from recipes/escalated/recipe.toml rename to recipes/core/escalated/recipe.toml diff --git a/recipes/extrautils/recipe.toml b/recipes/core/extrautils/recipe.toml similarity index 100% rename from recipes/extrautils/recipe.toml rename to recipes/core/extrautils/recipe.toml diff --git a/recipes/findutils/recipe.toml b/recipes/core/findutils/recipe.toml similarity index 100% rename from recipes/findutils/recipe.toml rename to recipes/core/findutils/recipe.toml diff --git a/recipes/init/recipe.toml b/recipes/core/init/recipe.toml similarity index 100% rename from recipes/init/recipe.toml rename to recipes/core/init/recipe.toml diff --git a/recipes/initfs/init.rc b/recipes/core/initfs/init.rc similarity index 100% rename from recipes/initfs/init.rc rename to recipes/core/initfs/init.rc diff --git a/recipes/initfs/recipe.toml b/recipes/core/initfs/recipe.toml similarity index 100% rename from recipes/initfs/recipe.toml rename to recipes/core/initfs/recipe.toml diff --git a/recipes/installer/recipe.toml b/recipes/core/installer/recipe.toml similarity index 100% rename from recipes/installer/recipe.toml rename to recipes/core/installer/recipe.toml diff --git a/recipes/ion/recipe.toml b/recipes/core/ion/recipe.toml similarity index 100% rename from recipes/ion/recipe.toml rename to recipes/core/ion/recipe.toml diff --git a/recipes/ipcd/recipe.toml b/recipes/core/ipcd/recipe.toml similarity index 100% rename from recipes/ipcd/recipe.toml rename to recipes/core/ipcd/recipe.toml diff --git a/recipes/kernel/recipe.toml b/recipes/core/kernel/recipe.toml similarity index 100% rename from recipes/kernel/recipe.toml rename to recipes/core/kernel/recipe.toml diff --git a/recipes/logd/recipe.toml b/recipes/core/logd/recipe.toml similarity index 100% rename from recipes/logd/recipe.toml rename to recipes/core/logd/recipe.toml diff --git a/recipes/netdb/recipe.toml b/recipes/core/netdb/recipe.toml similarity index 100% rename from recipes/netdb/recipe.toml rename to recipes/core/netdb/recipe.toml diff --git a/recipes/netstack/recipe.toml b/recipes/core/netstack/recipe.toml similarity index 100% rename from recipes/netstack/recipe.toml rename to recipes/core/netstack/recipe.toml diff --git a/recipes/netutils/recipe.toml b/recipes/core/netutils/recipe.toml similarity index 100% rename from recipes/netutils/recipe.toml rename to recipes/core/netutils/recipe.toml diff --git a/recipes/nulld/recipe.toml b/recipes/core/nulld/recipe.toml similarity index 100% rename from recipes/nulld/recipe.toml rename to recipes/core/nulld/recipe.toml diff --git a/recipes/pkgutils/recipe.toml b/recipes/core/pkgutils/recipe.toml similarity index 100% rename from recipes/pkgutils/recipe.toml rename to recipes/core/pkgutils/recipe.toml diff --git a/recipes/ptyd/recipe.toml b/recipes/core/ptyd/recipe.toml similarity index 100% rename from recipes/ptyd/recipe.toml rename to recipes/core/ptyd/recipe.toml diff --git a/recipes/ramfs/recipe.toml b/recipes/core/ramfs/recipe.toml similarity index 100% rename from recipes/ramfs/recipe.toml rename to recipes/core/ramfs/recipe.toml diff --git a/recipes/randd/recipe.toml b/recipes/core/randd/recipe.toml similarity index 100% rename from recipes/randd/recipe.toml rename to recipes/core/randd/recipe.toml diff --git a/recipes/redoxfs/recipe.toml b/recipes/core/redoxfs/recipe.toml similarity index 100% rename from recipes/redoxfs/recipe.toml rename to recipes/core/redoxfs/recipe.toml diff --git a/recipes/relibc/recipe.toml b/recipes/core/relibc/recipe.toml similarity index 100% rename from recipes/relibc/recipe.toml rename to recipes/core/relibc/recipe.toml diff --git a/recipes/userutils/recipe.toml b/recipes/core/userutils/recipe.toml similarity index 100% rename from recipes/userutils/recipe.toml rename to recipes/core/userutils/recipe.toml diff --git a/recipes/uutils/recipe.toml b/recipes/core/uutils/recipe.toml similarity index 100% rename from recipes/uutils/recipe.toml rename to recipes/core/uutils/recipe.toml diff --git a/recipes/zerod/recipe.toml b/recipes/core/zerod/recipe.toml similarity index 100% rename from recipes/zerod/recipe.toml rename to recipes/core/zerod/recipe.toml diff --git a/recipes/cairodemo/cairodemo.c b/recipes/demos/cairodemo/cairodemo.c similarity index 100% rename from recipes/cairodemo/cairodemo.c rename to recipes/demos/cairodemo/cairodemo.c diff --git a/recipes/cairodemo/recipe.sh b/recipes/demos/cairodemo/recipe.sh similarity index 100% rename from recipes/cairodemo/recipe.sh rename to recipes/demos/cairodemo/recipe.sh diff --git a/recipes/cmatrix/recipe.sh b/recipes/demos/cmatrix/recipe.sh similarity index 100% rename from recipes/cmatrix/recipe.sh rename to recipes/demos/cmatrix/recipe.sh diff --git a/recipes/gears/gears.c b/recipes/demos/gears/gears.c similarity index 100% rename from recipes/gears/gears.c rename to recipes/demos/gears/gears.c diff --git a/recipes/gears/recipe.sh b/recipes/demos/gears/recipe.sh similarity index 100% rename from recipes/gears/recipe.sh rename to recipes/demos/gears/recipe.sh diff --git a/recipes/iced/recipe.toml b/recipes/demos/iced/recipe.toml similarity index 100% rename from recipes/iced/recipe.toml rename to recipes/demos/iced/recipe.toml diff --git a/recipes/osdemo/osdemo.c b/recipes/demos/osdemo/osdemo.c similarity index 100% rename from recipes/osdemo/osdemo.c rename to recipes/demos/osdemo/osdemo.c diff --git a/recipes/osdemo/recipe.sh b/recipes/demos/osdemo/recipe.sh similarity index 100% rename from recipes/osdemo/recipe.sh rename to recipes/demos/osdemo/recipe.sh diff --git a/recipes/pixelcannon/recipe.sh b/recipes/demos/pixelcannon/recipe.sh similarity index 100% rename from recipes/pixelcannon/recipe.sh rename to recipes/demos/pixelcannon/recipe.sh diff --git a/recipes/rust-cairo-demo/recipe.sh b/recipes/demos/rust-cairo-demo/recipe.sh similarity index 100% rename from recipes/rust-cairo-demo/recipe.sh rename to recipes/demos/rust-cairo-demo/recipe.sh diff --git a/recipes/sdl2_gears/assets/font.ttf b/recipes/demos/sdl2_gears/assets/font.ttf similarity index 100% rename from recipes/sdl2_gears/assets/font.ttf rename to recipes/demos/sdl2_gears/assets/font.ttf diff --git a/recipes/sdl2_gears/assets/image.png b/recipes/demos/sdl2_gears/assets/image.png similarity index 100% rename from recipes/sdl2_gears/assets/image.png rename to recipes/demos/sdl2_gears/assets/image.png diff --git a/recipes/sdl2_gears/assets/music.wav b/recipes/demos/sdl2_gears/assets/music.wav similarity index 100% rename from recipes/sdl2_gears/assets/music.wav rename to recipes/demos/sdl2_gears/assets/music.wav diff --git a/recipes/sdl2_gears/gears.c b/recipes/demos/sdl2_gears/gears.c similarity index 100% rename from recipes/sdl2_gears/gears.c rename to recipes/demos/sdl2_gears/gears.c diff --git a/recipes/sdl2_gears/recipe.sh b/recipes/demos/sdl2_gears/recipe.sh similarity index 100% rename from recipes/sdl2_gears/recipe.sh rename to recipes/demos/sdl2_gears/recipe.sh diff --git a/recipes/autoconf/recipe.toml b/recipes/development/autoconf/recipe.toml similarity index 100% rename from recipes/autoconf/recipe.toml rename to recipes/development/autoconf/recipe.toml diff --git a/recipes/automake/recipe.toml b/recipes/development/automake/recipe.toml similarity index 100% rename from recipes/automake/recipe.toml rename to recipes/development/automake/recipe.toml diff --git a/recipes/cargo/recipe.toml b/recipes/development/cargo/recipe.toml similarity index 100% rename from recipes/cargo/recipe.toml rename to recipes/development/cargo/recipe.toml diff --git a/recipes/cmake/recipe.toml b/recipes/development/cmake/recipe.toml similarity index 100% rename from recipes/cmake/recipe.toml rename to recipes/development/cmake/recipe.toml diff --git a/recipes/crates-io-index/recipe.toml b/recipes/development/crates-io-index/recipe.toml similarity index 100% rename from recipes/crates-io-index/recipe.toml rename to recipes/development/crates-io-index/recipe.toml diff --git a/recipes/fal/recipe.sh b/recipes/development/fal/recipe.sh similarity index 100% rename from recipes/fal/recipe.sh rename to recipes/development/fal/recipe.sh diff --git a/recipes/fontconfig/recipe.toml b/recipes/development/fontconfig/recipe.toml similarity index 100% rename from recipes/fontconfig/recipe.toml rename to recipes/development/fontconfig/recipe.toml diff --git a/recipes/fontconfig/redox.patch b/recipes/development/fontconfig/redox.patch similarity index 100% rename from recipes/fontconfig/redox.patch rename to recipes/development/fontconfig/redox.patch diff --git a/recipes/gawk/recipe.sh b/recipes/development/gawk/recipe.sh similarity index 100% rename from recipes/gawk/recipe.sh rename to recipes/development/gawk/recipe.sh diff --git a/recipes/gcc/recipe.sh b/recipes/development/gcc/recipe.sh similarity index 100% rename from recipes/gcc/recipe.sh rename to recipes/development/gcc/recipe.sh diff --git a/recipes/gdbserver/recipe.toml b/recipes/development/gdbserver/recipe.toml similarity index 100% rename from recipes/gdbserver/recipe.toml rename to recipes/development/gdbserver/recipe.toml diff --git a/recipes/gdk-pixbuf/recipe.sh b/recipes/development/gdk-pixbuf/recipe.sh similarity index 100% rename from recipes/gdk-pixbuf/recipe.sh rename to recipes/development/gdk-pixbuf/recipe.sh diff --git a/recipes/gnu-make/make.patch b/recipes/development/gnu-make/make.patch similarity index 100% rename from recipes/gnu-make/make.patch rename to recipes/development/gnu-make/make.patch diff --git a/recipes/gnu-make/recipe.sh b/recipes/development/gnu-make/recipe.sh similarity index 100% rename from recipes/gnu-make/recipe.sh rename to recipes/development/gnu-make/recipe.sh diff --git a/recipes/lci/recipe.sh b/recipes/development/lci/recipe.sh similarity index 100% rename from recipes/lci/recipe.sh rename to recipes/development/lci/recipe.sh diff --git a/recipes/llvm/native.cmake b/recipes/development/llvm/native.cmake similarity index 100% rename from recipes/llvm/native.cmake rename to recipes/development/llvm/native.cmake diff --git a/recipes/llvm/recipe.toml b/recipes/development/llvm/recipe.toml similarity index 100% rename from recipes/llvm/recipe.toml rename to recipes/development/llvm/recipe.toml diff --git a/recipes/lua/recipe.toml b/recipes/development/lua/recipe.toml similarity index 100% rename from recipes/lua/recipe.toml rename to recipes/development/lua/recipe.toml diff --git a/recipes/nasm/recipe.toml b/recipes/development/nasm/recipe.toml similarity index 100% rename from recipes/nasm/recipe.toml rename to recipes/development/nasm/recipe.toml diff --git a/recipes/patch/01-no-rlimit.patch b/recipes/development/patch/01-no-rlimit.patch similarity index 100% rename from recipes/patch/01-no-rlimit.patch rename to recipes/development/patch/01-no-rlimit.patch diff --git a/recipes/patch/02-no-chown.patch b/recipes/development/patch/02-no-chown.patch similarity index 100% rename from recipes/patch/02-no-chown.patch rename to recipes/development/patch/02-no-chown.patch diff --git a/recipes/patch/recipe.sh b/recipes/development/patch/recipe.sh similarity index 100% rename from recipes/patch/recipe.sh rename to recipes/development/patch/recipe.sh diff --git a/recipes/pciids/recipe.toml b/recipes/development/pciids/recipe.toml similarity index 100% rename from recipes/pciids/recipe.toml rename to recipes/development/pciids/recipe.toml diff --git a/recipes/perl/perl.patch b/recipes/development/perl/perl.patch similarity index 100% rename from recipes/perl/perl.patch rename to recipes/development/perl/perl.patch diff --git a/recipes/perl/recipe.sh b/recipes/development/perl/recipe.sh similarity index 100% rename from recipes/perl/recipe.sh rename to recipes/development/perl/recipe.sh diff --git a/recipes/pkg-config/recipe.toml b/recipes/development/pkg-config/recipe.toml similarity index 100% rename from recipes/pkg-config/recipe.toml rename to recipes/development/pkg-config/recipe.toml diff --git a/recipes/pkgar/recipe.toml b/recipes/development/pkgar/recipe.toml similarity index 100% rename from recipes/pkgar/recipe.toml rename to recipes/development/pkgar/recipe.toml diff --git a/recipes/python/config.site b/recipes/development/python/config.site similarity index 100% rename from recipes/python/config.site rename to recipes/development/python/config.site diff --git a/recipes/python/recipe.sh b/recipes/development/python/recipe.sh similarity index 100% rename from recipes/python/recipe.sh rename to recipes/development/python/recipe.sh diff --git a/recipes/python/redox.patch b/recipes/development/python/redox.patch similarity index 100% rename from recipes/python/redox.patch rename to recipes/development/python/redox.patch diff --git a/recipes/redoxerd/recipe.toml b/recipes/development/redoxerd/recipe.toml similarity index 100% rename from recipes/redoxerd/recipe.toml rename to recipes/development/redoxerd/recipe.toml diff --git a/recipes/rust/.gitignore b/recipes/development/rust/.gitignore similarity index 100% rename from recipes/rust/.gitignore rename to recipes/development/rust/.gitignore diff --git a/recipes/rust/config.toml b/recipes/development/rust/config.toml similarity index 100% rename from recipes/rust/config.toml rename to recipes/development/rust/config.toml diff --git a/recipes/rust/recipe.sh b/recipes/development/rust/recipe.sh similarity index 100% rename from recipes/rust/recipe.sh rename to recipes/development/rust/recipe.sh diff --git a/recipes/rustpython/recipe.toml b/recipes/development/rustpython/recipe.toml similarity index 100% rename from recipes/rustpython/recipe.toml rename to recipes/development/rustpython/recipe.toml diff --git a/recipes/strace/recipe.toml b/recipes/development/strace/recipe.toml similarity index 100% rename from recipes/strace/recipe.toml rename to recipes/development/strace/recipe.toml diff --git a/recipes/book/recipe.toml b/recipes/documentation/book/recipe.toml similarity index 100% rename from recipes/book/recipe.toml rename to recipes/documentation/book/recipe.toml diff --git a/recipes/dosbox/01_redox.patch b/recipes/emulators/dosbox/01_redox.patch similarity index 100% rename from recipes/dosbox/01_redox.patch rename to recipes/emulators/dosbox/01_redox.patch diff --git a/recipes/dosbox/icon.png b/recipes/emulators/dosbox/icon.png similarity index 100% rename from recipes/dosbox/icon.png rename to recipes/emulators/dosbox/icon.png diff --git a/recipes/dosbox/manifest b/recipes/emulators/dosbox/manifest similarity index 100% rename from recipes/dosbox/manifest rename to recipes/emulators/dosbox/manifest diff --git a/recipes/dosbox/recipe.sh b/recipes/emulators/dosbox/recipe.sh similarity index 100% rename from recipes/dosbox/recipe.sh rename to recipes/emulators/dosbox/recipe.sh diff --git a/recipes/flycast/recipe.toml b/recipes/emulators/flycast/recipe.toml similarity index 100% rename from recipes/flycast/recipe.toml rename to recipes/emulators/flycast/recipe.toml diff --git a/recipes/libretro-super/recipe.toml b/recipes/emulators/libretro-super/recipe.toml similarity index 100% rename from recipes/libretro-super/recipe.toml rename to recipes/emulators/libretro-super/recipe.toml diff --git a/recipes/mednafen/recipe.toml b/recipes/emulators/mednafen/recipe.toml similarity index 100% rename from recipes/mednafen/recipe.toml rename to recipes/emulators/mednafen/recipe.toml diff --git a/recipes/mednafen/redox.patch b/recipes/emulators/mednafen/redox.patch similarity index 100% rename from recipes/mednafen/redox.patch rename to recipes/emulators/mednafen/redox.patch diff --git a/recipes/mgba/01_redox.patch b/recipes/emulators/mgba/01_redox.patch similarity index 100% rename from recipes/mgba/01_redox.patch rename to recipes/emulators/mgba/01_redox.patch diff --git a/recipes/mgba/recipe.sh b/recipes/emulators/mgba/recipe.sh similarity index 100% rename from recipes/mgba/recipe.sh rename to recipes/emulators/mgba/recipe.sh diff --git a/recipes/qemu/recipe.sh b/recipes/emulators/qemu/recipe.sh similarity index 100% rename from recipes/qemu/recipe.sh rename to recipes/emulators/qemu/recipe.sh diff --git a/recipes/qemu/redox.patch b/recipes/emulators/qemu/redox.patch similarity index 100% rename from recipes/qemu/redox.patch rename to recipes/emulators/qemu/redox.patch diff --git a/recipes/retroarch/recipe.toml b/recipes/emulators/retroarch/recipe.toml similarity index 100% rename from recipes/retroarch/recipe.toml rename to recipes/emulators/retroarch/recipe.toml diff --git a/recipes/rs-nes/recipe.toml b/recipes/emulators/rs-nes/recipe.toml similarity index 100% rename from recipes/rs-nes/recipe.toml rename to recipes/emulators/rs-nes/recipe.toml diff --git a/recipes/rust64/recipe.toml b/recipes/emulators/rust64/recipe.toml similarity index 100% rename from recipes/rust64/recipe.toml rename to recipes/emulators/rust64/recipe.toml diff --git a/recipes/rustual-boy/recipe.sh b/recipes/emulators/rustual-boy/recipe.sh similarity index 100% rename from recipes/rustual-boy/recipe.sh rename to recipes/emulators/rustual-boy/recipe.sh diff --git a/recipes/scummvm/01_redox.patch b/recipes/emulators/scummvm/01_redox.patch similarity index 100% rename from recipes/scummvm/01_redox.patch rename to recipes/emulators/scummvm/01_redox.patch diff --git a/recipes/scummvm/icon.png b/recipes/emulators/scummvm/icon.png similarity index 100% rename from recipes/scummvm/icon.png rename to recipes/emulators/scummvm/icon.png diff --git a/recipes/scummvm/manifest b/recipes/emulators/scummvm/manifest similarity index 100% rename from recipes/scummvm/manifest rename to recipes/emulators/scummvm/manifest diff --git a/recipes/scummvm/recipe.sh b/recipes/emulators/scummvm/recipe.sh similarity index 100% rename from recipes/scummvm/recipe.sh rename to recipes/emulators/scummvm/recipe.sh diff --git a/recipes/vice/01_redox.patch b/recipes/emulators/vice/01_redox.patch similarity index 100% rename from recipes/vice/01_redox.patch rename to recipes/emulators/vice/01_redox.patch diff --git a/recipes/vice/recipe.sh b/recipes/emulators/vice/recipe.sh similarity index 100% rename from recipes/vice/recipe.sh rename to recipes/emulators/vice/recipe.sh diff --git a/recipes/cpal/recipe.toml b/recipes/examples/cpal/recipe.toml similarity index 100% rename from recipes/cpal/recipe.toml rename to recipes/examples/cpal/recipe.toml diff --git a/recipes/dynamic-example/recipe.sh b/recipes/examples/dynamic-example/recipe.sh similarity index 100% rename from recipes/dynamic-example/recipe.sh rename to recipes/examples/dynamic-example/recipe.sh diff --git a/recipes/exampled/recipe.toml b/recipes/examples/exampled/recipe.toml similarity index 100% rename from recipes/exampled/recipe.toml rename to recipes/examples/exampled/recipe.toml diff --git a/recipes/glium/recipe.sh b/recipes/examples/glium/recipe.sh similarity index 100% rename from recipes/glium/recipe.sh rename to recipes/examples/glium/recipe.sh diff --git a/recipes/glutin/recipe.toml b/recipes/examples/glutin/recipe.toml similarity index 100% rename from recipes/glutin/recipe.toml rename to recipes/examples/glutin/recipe.toml diff --git a/recipes/orbclient/recipe.toml b/recipes/examples/orbclient/recipe.toml similarity index 100% rename from recipes/orbclient/recipe.toml rename to recipes/examples/orbclient/recipe.toml diff --git a/recipes/rust-cairo/recipe.sh b/recipes/examples/rust-cairo/recipe.sh similarity index 100% rename from recipes/rust-cairo/recipe.sh rename to recipes/examples/rust-cairo/recipe.sh diff --git a/recipes/winit/recipe.toml b/recipes/examples/winit/recipe.toml similarity index 100% rename from recipes/winit/recipe.toml rename to recipes/examples/winit/recipe.toml diff --git a/recipes/classicube/manifest b/recipes/games/classicube/manifest similarity index 100% rename from recipes/classicube/manifest rename to recipes/games/classicube/manifest diff --git a/recipes/classicube/recipe.toml b/recipes/games/classicube/recipe.toml similarity index 100% rename from recipes/classicube/recipe.toml rename to recipes/games/classicube/recipe.toml diff --git a/recipes/eduke32/icon.png b/recipes/games/eduke32/icon.png similarity index 100% rename from recipes/eduke32/icon.png rename to recipes/games/eduke32/icon.png diff --git a/recipes/eduke32/manifest b/recipes/games/eduke32/manifest similarity index 100% rename from recipes/eduke32/manifest rename to recipes/games/eduke32/manifest diff --git a/recipes/eduke32/recipe.sh b/recipes/games/eduke32/recipe.sh similarity index 100% rename from recipes/eduke32/recipe.sh rename to recipes/games/eduke32/recipe.sh diff --git a/recipes/eduke32/redox.patch b/recipes/games/eduke32/redox.patch similarity index 100% rename from recipes/eduke32/redox.patch rename to recipes/games/eduke32/redox.patch diff --git a/recipes/freeciv/01_redox.patch b/recipes/games/freeciv/01_redox.patch similarity index 100% rename from recipes/freeciv/01_redox.patch rename to recipes/games/freeciv/01_redox.patch diff --git a/recipes/freeciv/recipe.sh b/recipes/games/freeciv/recipe.sh similarity index 100% rename from recipes/freeciv/recipe.sh rename to recipes/games/freeciv/recipe.sh diff --git a/recipes/freedoom/recipe.sh b/recipes/games/freedoom/recipe.sh similarity index 100% rename from recipes/freedoom/recipe.sh rename to recipes/games/freedoom/recipe.sh diff --git a/recipes/game-2048/recipe.toml b/recipes/games/game-2048/recipe.toml similarity index 100% rename from recipes/game-2048/recipe.toml rename to recipes/games/game-2048/recipe.toml diff --git a/recipes/gigalomania/manifest b/recipes/games/gigalomania/manifest similarity index 100% rename from recipes/gigalomania/manifest rename to recipes/games/gigalomania/manifest diff --git a/recipes/gigalomania/recipe.sh b/recipes/games/gigalomania/recipe.sh similarity index 100% rename from recipes/gigalomania/recipe.sh rename to recipes/games/gigalomania/recipe.sh diff --git a/recipes/hematite/recipe.toml b/recipes/games/hematite/recipe.toml similarity index 100% rename from recipes/hematite/recipe.toml rename to recipes/games/hematite/recipe.toml diff --git a/recipes/neverball/manifest-neverball b/recipes/games/neverball/manifest-neverball similarity index 100% rename from recipes/neverball/manifest-neverball rename to recipes/games/neverball/manifest-neverball diff --git a/recipes/neverball/manifest-neverputt b/recipes/games/neverball/manifest-neverputt similarity index 100% rename from recipes/neverball/manifest-neverputt rename to recipes/games/neverball/manifest-neverputt diff --git a/recipes/neverball/recipe.sh b/recipes/games/neverball/recipe.sh similarity index 100% rename from recipes/neverball/recipe.sh rename to recipes/games/neverball/recipe.sh diff --git a/recipes/neverball/redox.patch b/recipes/games/neverball/redox.patch similarity index 100% rename from recipes/neverball/redox.patch rename to recipes/games/neverball/redox.patch diff --git a/recipes/openjazz/recipe.sh b/recipes/games/openjazz/recipe.sh similarity index 100% rename from recipes/openjazz/recipe.sh rename to recipes/games/openjazz/recipe.sh diff --git a/recipes/openttd-opengfx/recipe.sh b/recipes/games/openttd-opengfx/recipe.sh similarity index 100% rename from recipes/openttd-opengfx/recipe.sh rename to recipes/games/openttd-opengfx/recipe.sh diff --git a/recipes/openttd-openmsx/recipe.sh b/recipes/games/openttd-openmsx/recipe.sh similarity index 100% rename from recipes/openttd-openmsx/recipe.sh rename to recipes/games/openttd-openmsx/recipe.sh diff --git a/recipes/openttd-opensfx/recipe.sh b/recipes/games/openttd-opensfx/recipe.sh similarity index 100% rename from recipes/openttd-opensfx/recipe.sh rename to recipes/games/openttd-opensfx/recipe.sh diff --git a/recipes/openttd/01_redox.patch b/recipes/games/openttd/01_redox.patch similarity index 100% rename from recipes/openttd/01_redox.patch rename to recipes/games/openttd/01_redox.patch diff --git a/recipes/openttd/manifest b/recipes/games/openttd/manifest similarity index 100% rename from recipes/openttd/manifest rename to recipes/games/openttd/manifest diff --git a/recipes/openttd/recipe.sh b/recipes/games/openttd/recipe.sh similarity index 100% rename from recipes/openttd/recipe.sh rename to recipes/games/openttd/recipe.sh diff --git a/recipes/prboom/01_redox.patch b/recipes/games/prboom/01_redox.patch similarity index 100% rename from recipes/prboom/01_redox.patch rename to recipes/games/prboom/01_redox.patch diff --git a/recipes/prboom/recipe.sh b/recipes/games/prboom/recipe.sh similarity index 100% rename from recipes/prboom/recipe.sh rename to recipes/games/prboom/recipe.sh diff --git a/recipes/games/recipe.toml b/recipes/games/redox-games/recipe.toml similarity index 100% rename from recipes/games/recipe.toml rename to recipes/games/redox-games/recipe.toml diff --git a/recipes/sm64ex/.gitignore b/recipes/games/sm64ex/.gitignore similarity index 100% rename from recipes/sm64ex/.gitignore rename to recipes/games/sm64ex/.gitignore diff --git a/recipes/sm64ex/manifest b/recipes/games/sm64ex/manifest similarity index 100% rename from recipes/sm64ex/manifest rename to recipes/games/sm64ex/manifest diff --git a/recipes/sm64ex/recipe.toml b/recipes/games/sm64ex/recipe.toml similarity index 100% rename from recipes/sm64ex/recipe.toml rename to recipes/games/sm64ex/recipe.toml diff --git a/recipes/sopwith/recipe.sh b/recipes/games/sopwith/recipe.sh similarity index 100% rename from recipes/sopwith/recipe.sh rename to recipes/games/sopwith/recipe.sh diff --git a/recipes/spacecadetpinball/recipe.toml b/recipes/games/spacecadetpinball/recipe.toml similarity index 100% rename from recipes/spacecadetpinball/recipe.toml rename to recipes/games/spacecadetpinball/recipe.toml diff --git a/recipes/syobonaction/01_redox.patch b/recipes/games/syobonaction/01_redox.patch similarity index 100% rename from recipes/syobonaction/01_redox.patch rename to recipes/games/syobonaction/01_redox.patch diff --git a/recipes/syobonaction/recipe.sh b/recipes/games/syobonaction/recipe.sh similarity index 100% rename from recipes/syobonaction/recipe.sh rename to recipes/games/syobonaction/recipe.sh diff --git a/recipes/vvvvvv/recipe.sh b/recipes/games/vvvvvv/recipe.sh similarity index 100% rename from recipes/vvvvvv/recipe.sh rename to recipes/games/vvvvvv/recipe.sh diff --git a/recipes/wesnoth/recipe.sh b/recipes/games/wesnoth/recipe.sh similarity index 100% rename from recipes/wesnoth/recipe.sh rename to recipes/games/wesnoth/recipe.sh diff --git a/recipes/installer-gui/recipe.toml b/recipes/gui/installer-gui/recipe.toml similarity index 100% rename from recipes/installer-gui/recipe.toml rename to recipes/gui/installer-gui/recipe.toml diff --git a/recipes/orbdata/recipe.toml b/recipes/gui/orbdata/recipe.toml similarity index 100% rename from recipes/orbdata/recipe.toml rename to recipes/gui/orbdata/recipe.toml diff --git a/recipes/orbital/recipe.toml b/recipes/gui/orbital/recipe.toml similarity index 100% rename from recipes/orbital/recipe.toml rename to recipes/gui/orbital/recipe.toml diff --git a/recipes/orbterm/recipe.toml b/recipes/gui/orbterm/recipe.toml similarity index 100% rename from recipes/orbterm/recipe.toml rename to recipes/gui/orbterm/recipe.toml diff --git a/recipes/orbutils-background/recipe.sh b/recipes/gui/orbutils-background/recipe.sh similarity index 100% rename from recipes/orbutils-background/recipe.sh rename to recipes/gui/orbutils-background/recipe.sh diff --git a/recipes/orbutils-launcher/recipe.sh b/recipes/gui/orbutils-launcher/recipe.sh similarity index 100% rename from recipes/orbutils-launcher/recipe.sh rename to recipes/gui/orbutils-launcher/recipe.sh diff --git a/recipes/orbutils-orblogin/recipe.sh b/recipes/gui/orbutils-orblogin/recipe.sh similarity index 100% rename from recipes/orbutils-orblogin/recipe.sh rename to recipes/gui/orbutils-orblogin/recipe.sh diff --git a/recipes/orbutils/recipe.toml b/recipes/gui/orbutils/recipe.toml similarity index 100% rename from recipes/orbutils/recipe.toml rename to recipes/gui/orbutils/recipe.toml diff --git a/recipes/periodictable/recipe.sh b/recipes/gui/periodictable/recipe.sh similarity index 100% rename from recipes/periodictable/recipe.sh rename to recipes/gui/periodictable/recipe.sh diff --git a/recipes/duktape/recipe.sh b/recipes/libraries/duktape/recipe.sh similarity index 100% rename from recipes/duktape/recipe.sh rename to recipes/libraries/duktape/recipe.sh diff --git a/recipes/duktape/redox.patch b/recipes/libraries/duktape/redox.patch similarity index 100% rename from recipes/duktape/redox.patch rename to recipes/libraries/duktape/redox.patch diff --git a/recipes/expat/recipe.toml b/recipes/libraries/expat/recipe.toml similarity index 100% rename from recipes/expat/recipe.toml rename to recipes/libraries/expat/recipe.toml diff --git a/recipes/ffmpeg/binutils-2.41.patch b/recipes/libraries/ffmpeg/binutils-2.41.patch similarity index 100% rename from recipes/ffmpeg/binutils-2.41.patch rename to recipes/libraries/ffmpeg/binutils-2.41.patch diff --git a/recipes/ffmpeg/ffmpeg.patch b/recipes/libraries/ffmpeg/ffmpeg.patch similarity index 100% rename from recipes/ffmpeg/ffmpeg.patch rename to recipes/libraries/ffmpeg/ffmpeg.patch diff --git a/recipes/ffmpeg/recipe.toml b/recipes/libraries/ffmpeg/recipe.toml similarity index 100% rename from recipes/ffmpeg/recipe.toml rename to recipes/libraries/ffmpeg/recipe.toml diff --git a/recipes/freeglut/recipe.sh b/recipes/libraries/freeglut/recipe.sh similarity index 100% rename from recipes/freeglut/recipe.sh rename to recipes/libraries/freeglut/recipe.sh diff --git a/recipes/freeglut/redox_cross_toolchain.cmake b/recipes/libraries/freeglut/redox_cross_toolchain.cmake similarity index 100% rename from recipes/freeglut/redox_cross_toolchain.cmake rename to recipes/libraries/freeglut/redox_cross_toolchain.cmake diff --git a/recipes/freetype/recipe.toml b/recipes/libraries/freetype/recipe.toml similarity index 100% rename from recipes/freetype/recipe.toml rename to recipes/libraries/freetype/recipe.toml diff --git a/recipes/fribidi/recipe.sh b/recipes/libraries/fribidi/recipe.sh similarity index 100% rename from recipes/fribidi/recipe.sh rename to recipes/libraries/fribidi/recipe.sh diff --git a/recipes/glib/recipe.toml b/recipes/libraries/glib/recipe.toml similarity index 100% rename from recipes/glib/recipe.toml rename to recipes/libraries/glib/recipe.toml diff --git a/recipes/glib/redox.patch b/recipes/libraries/glib/redox.patch similarity index 100% rename from recipes/glib/redox.patch rename to recipes/libraries/glib/redox.patch diff --git a/recipes/gstreamer/recipe.sh b/recipes/libraries/gstreamer/recipe.sh similarity index 100% rename from recipes/gstreamer/recipe.sh rename to recipes/libraries/gstreamer/recipe.sh diff --git a/recipes/gstreamer/redox.patch b/recipes/libraries/gstreamer/redox.patch similarity index 100% rename from recipes/gstreamer/redox.patch rename to recipes/libraries/gstreamer/redox.patch diff --git a/recipes/harfbuzz/recipe.toml b/recipes/libraries/harfbuzz/recipe.toml similarity index 100% rename from recipes/harfbuzz/recipe.toml rename to recipes/libraries/harfbuzz/recipe.toml diff --git a/recipes/jansson/jansson.patch b/recipes/libraries/jansson/jansson.patch similarity index 100% rename from recipes/jansson/jansson.patch rename to recipes/libraries/jansson/jansson.patch diff --git a/recipes/jansson/recipe.sh b/recipes/libraries/jansson/recipe.sh similarity index 100% rename from recipes/jansson/recipe.sh rename to recipes/libraries/jansson/recipe.sh diff --git a/recipes/libcosmic/recipe.toml b/recipes/libraries/libcosmic/recipe.toml similarity index 100% rename from recipes/libcosmic/recipe.toml rename to recipes/libraries/libcosmic/recipe.toml diff --git a/recipes/libffi/recipe.toml b/recipes/libraries/libffi/recipe.toml similarity index 100% rename from recipes/libffi/recipe.toml rename to recipes/libraries/libffi/recipe.toml diff --git a/recipes/libffi/redox.patch b/recipes/libraries/libffi/redox.patch similarity index 100% rename from recipes/libffi/redox.patch rename to recipes/libraries/libffi/redox.patch diff --git a/recipes/libflac/recipe.toml b/recipes/libraries/libflac/recipe.toml similarity index 100% rename from recipes/libflac/recipe.toml rename to recipes/libraries/libflac/recipe.toml diff --git a/recipes/libgmp/recipe.toml b/recipes/libraries/libgmp/recipe.toml similarity index 100% rename from recipes/libgmp/recipe.toml rename to recipes/libraries/libgmp/recipe.toml diff --git a/recipes/libiconv/01_redox.patch b/recipes/libraries/libiconv/01_redox.patch similarity index 100% rename from recipes/libiconv/01_redox.patch rename to recipes/libraries/libiconv/01_redox.patch diff --git a/recipes/libiconv/recipe.toml b/recipes/libraries/libiconv/recipe.toml similarity index 100% rename from recipes/libiconv/recipe.toml rename to recipes/libraries/libiconv/recipe.toml diff --git a/recipes/libjpeg/recipe.toml b/recipes/libraries/libjpeg/recipe.toml similarity index 100% rename from recipes/libjpeg/recipe.toml rename to recipes/libraries/libjpeg/recipe.toml diff --git a/recipes/libogg/recipe.toml b/recipes/libraries/libogg/recipe.toml similarity index 100% rename from recipes/libogg/recipe.toml rename to recipes/libraries/libogg/recipe.toml diff --git a/recipes/libogg/redox.patch b/recipes/libraries/libogg/redox.patch similarity index 100% rename from recipes/libogg/redox.patch rename to recipes/libraries/libogg/redox.patch diff --git a/recipes/liborbital/recipe.toml b/recipes/libraries/liborbital/recipe.toml similarity index 100% rename from recipes/liborbital/recipe.toml rename to recipes/libraries/liborbital/recipe.toml diff --git a/recipes/libpng/recipe.toml b/recipes/libraries/libpng/recipe.toml similarity index 100% rename from recipes/libpng/recipe.toml rename to recipes/libraries/libpng/recipe.toml diff --git a/recipes/libsodium/random.patch b/recipes/libraries/libsodium/random.patch similarity index 100% rename from recipes/libsodium/random.patch rename to recipes/libraries/libsodium/random.patch diff --git a/recipes/libsodium/recipe.toml b/recipes/libraries/libsodium/recipe.toml similarity index 100% rename from recipes/libsodium/recipe.toml rename to recipes/libraries/libsodium/recipe.toml diff --git a/recipes/libssh2/recipe.toml b/recipes/libraries/libssh2/recipe.toml similarity index 100% rename from recipes/libssh2/recipe.toml rename to recipes/libraries/libssh2/recipe.toml diff --git a/recipes/libvorbis/recipe.toml b/recipes/libraries/libvorbis/recipe.toml similarity index 100% rename from recipes/libvorbis/recipe.toml rename to recipes/libraries/libvorbis/recipe.toml diff --git a/recipes/libxml2/recipe.toml b/recipes/libraries/libxml2/recipe.toml similarity index 100% rename from recipes/libxml2/recipe.toml rename to recipes/libraries/libxml2/recipe.toml diff --git a/recipes/mesa/recipe.toml b/recipes/libraries/mesa/recipe.toml similarity index 100% rename from recipes/mesa/recipe.toml rename to recipes/libraries/mesa/recipe.toml diff --git a/recipes/mesa_glu/recipe.sh b/recipes/libraries/mesa_glu/recipe.sh similarity index 100% rename from recipes/mesa_glu/recipe.sh rename to recipes/libraries/mesa_glu/recipe.sh diff --git a/recipes/openssl/recipe.toml b/recipes/libraries/openssl/recipe.toml similarity index 100% rename from recipes/openssl/recipe.toml rename to recipes/libraries/openssl/recipe.toml diff --git a/recipes/pcre/recipe.toml b/recipes/libraries/pcre/recipe.toml similarity index 100% rename from recipes/pcre/recipe.toml rename to recipes/libraries/pcre/recipe.toml diff --git a/recipes/pcre/redox.patch b/recipes/libraries/pcre/redox.patch similarity index 100% rename from recipes/pcre/redox.patch rename to recipes/libraries/pcre/redox.patch diff --git a/recipes/pixman/recipe.sh b/recipes/libraries/pixman/recipe.sh similarity index 100% rename from recipes/pixman/recipe.sh rename to recipes/libraries/pixman/recipe.sh diff --git a/recipes/pixman/redox.patch b/recipes/libraries/pixman/redox.patch similarity index 100% rename from recipes/pixman/redox.patch rename to recipes/libraries/pixman/redox.patch diff --git a/recipes/readline/recipe.toml b/recipes/libraries/readline/recipe.toml similarity index 100% rename from recipes/readline/recipe.toml rename to recipes/libraries/readline/recipe.toml diff --git a/recipes/readline/redox.patch b/recipes/libraries/readline/redox.patch similarity index 100% rename from recipes/readline/redox.patch rename to recipes/libraries/readline/redox.patch diff --git a/recipes/redox-fatfs/recipe.toml b/recipes/libraries/redox-fatfs/recipe.toml similarity index 100% rename from recipes/redox-fatfs/recipe.toml rename to recipes/libraries/redox-fatfs/recipe.toml diff --git a/recipes/zlib/recipe.toml b/recipes/libraries/zlib/recipe.toml similarity index 100% rename from recipes/zlib/recipe.toml rename to recipes/libraries/zlib/recipe.toml diff --git a/recipes/netsurf/01_redox.patch b/recipes/network/netsurf/01_redox.patch similarity index 100% rename from recipes/netsurf/01_redox.patch rename to recipes/network/netsurf/01_redox.patch diff --git a/recipes/netsurf/manifest b/recipes/network/netsurf/manifest similarity index 100% rename from recipes/netsurf/manifest rename to recipes/network/netsurf/manifest diff --git a/recipes/netsurf/recipe.sh b/recipes/network/netsurf/recipe.sh similarity index 100% rename from recipes/netsurf/recipe.sh rename to recipes/network/netsurf/recipe.sh diff --git a/recipes/nghttp2/recipe.toml b/recipes/network/nghttp2/recipe.toml similarity index 100% rename from recipes/nghttp2/recipe.toml rename to recipes/network/nghttp2/recipe.toml diff --git a/recipes/ca-certificates/recipe.toml b/recipes/other/ca-certificates/recipe.toml similarity index 100% rename from recipes/ca-certificates/recipe.toml rename to recipes/other/ca-certificates/recipe.toml diff --git a/recipes/generaluser-gs/recipe.sh b/recipes/other/generaluser-gs/recipe.sh similarity index 100% rename from recipes/generaluser-gs/recipe.sh rename to recipes/other/generaluser-gs/recipe.sh diff --git a/recipes/jeremy/recipe.toml b/recipes/other/jeremy/recipe.toml similarity index 100% rename from recipes/jeremy/recipe.toml rename to recipes/other/jeremy/recipe.toml diff --git a/recipes/keyboard-sfx/recipe.sh b/recipes/other/keyboard-sfx/recipe.sh similarity index 100% rename from recipes/keyboard-sfx/recipe.sh rename to recipes/other/keyboard-sfx/recipe.sh diff --git a/recipes/noto-color-emoji/recipe.toml b/recipes/other/noto-color-emoji/recipe.toml similarity index 100% rename from recipes/noto-color-emoji/recipe.toml rename to recipes/other/noto-color-emoji/recipe.toml diff --git a/recipes/shared-mime-info/recipe.sh b/recipes/other/shared-mime-info/recipe.sh similarity index 100% rename from recipes/shared-mime-info/recipe.sh rename to recipes/other/shared-mime-info/recipe.sh diff --git a/recipes/terminfo/recipe.sh b/recipes/other/terminfo/recipe.sh similarity index 100% rename from recipes/terminfo/recipe.sh rename to recipes/other/terminfo/recipe.sh diff --git a/recipes/ttf-hack/recipe.sh b/recipes/other/ttf-hack/recipe.sh similarity index 100% rename from recipes/ttf-hack/recipe.sh rename to recipes/other/ttf-hack/recipe.sh diff --git a/recipes/bash/recipe.toml b/recipes/shells/bash/recipe.toml similarity index 100% rename from recipes/bash/recipe.toml rename to recipes/shells/bash/recipe.toml diff --git a/recipes/bash/redox.patch b/recipes/shells/bash/redox.patch similarity index 100% rename from recipes/bash/redox.patch rename to recipes/shells/bash/redox.patch diff --git a/recipes/nushell/recipe.toml b/recipes/shells/nushell/recipe.toml similarity index 100% rename from recipes/nushell/recipe.toml rename to recipes/shells/nushell/recipe.toml diff --git a/recipes/freepats/recipe.sh b/recipes/sound/freepats/recipe.sh similarity index 100% rename from recipes/freepats/recipe.sh rename to recipes/sound/freepats/recipe.sh diff --git a/recipes/rodioplay/recipe.toml b/recipes/sound/rodioplay/recipe.toml similarity index 100% rename from recipes/rodioplay/recipe.toml rename to recipes/sound/rodioplay/recipe.toml diff --git a/recipes/timidity/recipe.sh b/recipes/sound/timidity/recipe.sh similarity index 100% rename from recipes/timidity/recipe.sh rename to recipes/sound/timidity/recipe.sh diff --git a/recipes/acid/recipe.toml b/recipes/tests/acid/recipe.toml similarity index 100% rename from recipes/acid/recipe.toml rename to recipes/tests/acid/recipe.toml diff --git a/recipes/relibc-tests/recipe.toml b/recipes/tests/relibc-tests/recipe.toml similarity index 100% rename from recipes/relibc-tests/recipe.toml rename to recipes/tests/relibc-tests/recipe.toml diff --git a/recipes/resist/recipe.toml b/recipes/tests/resist/recipe.toml similarity index 100% rename from recipes/resist/recipe.toml rename to recipes/tests/resist/recipe.toml diff --git a/recipes/vttest/recipe.sh b/recipes/tests/vttest/recipe.sh similarity index 100% rename from recipes/vttest/recipe.sh rename to recipes/tests/vttest/recipe.sh diff --git a/recipes/vttest/vttest.patch b/recipes/tests/vttest/vttest.patch similarity index 100% rename from recipes/vttest/vttest.patch rename to recipes/tests/vttest/vttest.patch diff --git a/recipes/atk/recipe.sh b/recipes/toolkits/atk/recipe.sh similarity index 100% rename from recipes/atk/recipe.sh rename to recipes/toolkits/atk/recipe.sh diff --git a/recipes/atk/redox.patch b/recipes/toolkits/atk/redox.patch similarity index 100% rename from recipes/atk/redox.patch rename to recipes/toolkits/atk/redox.patch diff --git a/recipes/servo/recipe.sh b/recipes/toolkits/servo/recipe.sh similarity index 100% rename from recipes/servo/recipe.sh rename to recipes/toolkits/servo/recipe.sh diff --git a/recipes/calculator/recipe.toml b/recipes/tools/calculator/recipe.toml similarity index 100% rename from recipes/calculator/recipe.toml rename to recipes/tools/calculator/recipe.toml diff --git a/recipes/cleye/recipe.toml b/recipes/tools/cleye/recipe.toml similarity index 100% rename from recipes/cleye/recipe.toml rename to recipes/tools/cleye/recipe.toml diff --git a/recipes/cosmic-text/recipe.toml b/recipes/tools/cosmic-text/recipe.toml similarity index 100% rename from recipes/cosmic-text/recipe.toml rename to recipes/tools/cosmic-text/recipe.toml diff --git a/recipes/curl/recipe.toml b/recipes/tools/curl/recipe.toml similarity index 100% rename from recipes/curl/recipe.toml rename to recipes/tools/curl/recipe.toml diff --git a/recipes/diffutils/diffutils.patch b/recipes/tools/diffutils/diffutils.patch similarity index 100% rename from recipes/diffutils/diffutils.patch rename to recipes/tools/diffutils/diffutils.patch diff --git a/recipes/diffutils/recipe.sh b/recipes/tools/diffutils/recipe.sh similarity index 100% rename from recipes/diffutils/recipe.sh rename to recipes/tools/diffutils/recipe.sh diff --git a/recipes/fd/recipe.toml b/recipes/tools/fd/recipe.toml similarity index 100% rename from recipes/fd/recipe.toml rename to recipes/tools/fd/recipe.toml diff --git a/recipes/friar/recipe.toml b/recipes/tools/friar/recipe.toml similarity index 100% rename from recipes/friar/recipe.toml rename to recipes/tools/friar/recipe.toml diff --git a/recipes/gettext/recipe.toml b/recipes/tools/gettext/recipe.toml similarity index 100% rename from recipes/gettext/recipe.toml rename to recipes/tools/gettext/recipe.toml diff --git a/recipes/gettext/redox.patch b/recipes/tools/gettext/redox.patch similarity index 100% rename from recipes/gettext/redox.patch rename to recipes/tools/gettext/redox.patch diff --git a/recipes/git/git.patch b/recipes/tools/git/git.patch similarity index 100% rename from recipes/git/git.patch rename to recipes/tools/git/git.patch diff --git a/recipes/git/recipe.sh b/recipes/tools/git/recipe.sh similarity index 100% rename from recipes/git/recipe.sh rename to recipes/tools/git/recipe.sh diff --git a/recipes/gitoxide/recipe.toml b/recipes/tools/gitoxide/recipe.toml similarity index 100% rename from recipes/gitoxide/recipe.toml rename to recipes/tools/gitoxide/recipe.toml diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/tools/gnu-binutils/recipe.sh similarity index 100% rename from recipes/gnu-binutils/recipe.sh rename to recipes/tools/gnu-binutils/recipe.sh diff --git a/recipes/gnu-grep/grep.patch b/recipes/tools/gnu-grep/grep.patch similarity index 100% rename from recipes/gnu-grep/grep.patch rename to recipes/tools/gnu-grep/grep.patch diff --git a/recipes/gnu-grep/recipe.sh b/recipes/tools/gnu-grep/recipe.sh similarity index 100% rename from recipes/gnu-grep/recipe.sh rename to recipes/tools/gnu-grep/recipe.sh diff --git a/recipes/libc-bench/recipe.sh b/recipes/tools/libc-bench/recipe.sh similarity index 100% rename from recipes/libc-bench/recipe.sh rename to recipes/tools/libc-bench/recipe.sh diff --git a/recipes/libc-bench/redox.patch b/recipes/tools/libc-bench/redox.patch similarity index 100% rename from recipes/libc-bench/redox.patch rename to recipes/tools/libc-bench/redox.patch diff --git a/recipes/miniserve/recipe.sh b/recipes/tools/miniserve/recipe.sh similarity index 100% rename from recipes/miniserve/recipe.sh rename to recipes/tools/miniserve/recipe.sh diff --git a/recipes/pastel/recipe.sh b/recipes/tools/pastel/recipe.sh similarity index 100% rename from recipes/pastel/recipe.sh rename to recipes/tools/pastel/recipe.sh diff --git a/recipes/pathfinder/recipe.toml b/recipes/tools/pathfinder/recipe.toml similarity index 100% rename from recipes/pathfinder/recipe.toml rename to recipes/tools/pathfinder/recipe.toml diff --git a/recipes/perg/recipe.toml b/recipes/tools/perg/recipe.toml similarity index 100% rename from recipes/perg/recipe.toml rename to recipes/tools/perg/recipe.toml diff --git a/recipes/powerline/recipe.sh b/recipes/tools/powerline/recipe.sh similarity index 100% rename from recipes/powerline/recipe.sh rename to recipes/tools/powerline/recipe.sh diff --git a/recipes/procedural-wallpapers-rs/recipe.toml b/recipes/tools/procedural-wallpapers-rs/recipe.toml similarity index 100% rename from recipes/procedural-wallpapers-rs/recipe.toml rename to recipes/tools/procedural-wallpapers-rs/recipe.toml diff --git a/recipes/redox-ssh/recipe.toml b/recipes/tools/redox-ssh/recipe.toml similarity index 100% rename from recipes/redox-ssh/recipe.toml rename to recipes/tools/redox-ssh/recipe.toml diff --git a/recipes/ripgrep/recipe.toml b/recipes/tools/ripgrep/recipe.toml similarity index 100% rename from recipes/ripgrep/recipe.toml rename to recipes/tools/ripgrep/recipe.toml diff --git a/recipes/schismtracker/01_redox.patch b/recipes/tools/schismtracker/01_redox.patch similarity index 100% rename from recipes/schismtracker/01_redox.patch rename to recipes/tools/schismtracker/01_redox.patch diff --git a/recipes/schismtracker/manifest b/recipes/tools/schismtracker/manifest similarity index 100% rename from recipes/schismtracker/manifest rename to recipes/tools/schismtracker/manifest diff --git a/recipes/schismtracker/recipe.sh b/recipes/tools/schismtracker/recipe.sh similarity index 100% rename from recipes/schismtracker/recipe.sh rename to recipes/tools/schismtracker/recipe.sh diff --git a/recipes/sed/recipe.toml b/recipes/tools/sed/recipe.toml similarity index 100% rename from recipes/sed/recipe.toml rename to recipes/tools/sed/recipe.toml diff --git a/recipes/sed/sed.patch b/recipes/tools/sed/sed.patch similarity index 100% rename from recipes/sed/sed.patch rename to recipes/tools/sed/sed.patch diff --git a/recipes/shellharden/recipe.toml b/recipes/tools/shellharden/recipe.toml similarity index 100% rename from recipes/shellharden/recipe.toml rename to recipes/tools/shellharden/recipe.toml diff --git a/recipes/shellstorm/recipe.toml b/recipes/tools/shellstorm/recipe.toml similarity index 100% rename from recipes/shellstorm/recipe.toml rename to recipes/tools/shellstorm/recipe.toml diff --git a/recipes/smith/recipe.toml b/recipes/tools/smith/recipe.toml similarity index 100% rename from recipes/smith/recipe.toml rename to recipes/tools/smith/recipe.toml diff --git a/recipes/sodium/recipe.sh b/recipes/tools/sodium/recipe.sh similarity index 100% rename from recipes/sodium/recipe.sh rename to recipes/tools/sodium/recipe.sh diff --git a/recipes/ssh/recipe.sh b/recipes/tools/ssh/recipe.sh similarity index 100% rename from recipes/ssh/recipe.sh rename to recipes/tools/ssh/recipe.sh diff --git a/recipes/ssh/redox.patch b/recipes/tools/ssh/redox.patch similarity index 100% rename from recipes/ssh/redox.patch rename to recipes/tools/ssh/redox.patch diff --git a/recipes/termplay/recipe.sh b/recipes/tools/termplay/recipe.sh similarity index 100% rename from recipes/termplay/recipe.sh rename to recipes/tools/termplay/recipe.sh diff --git a/recipes/tokei/recipe.toml b/recipes/tools/tokei/recipe.toml similarity index 100% rename from recipes/tokei/recipe.toml rename to recipes/tools/tokei/recipe.toml diff --git a/recipes/twin-commander/recipe.toml b/recipes/tools/twin-commander/recipe.toml similarity index 100% rename from recipes/twin-commander/recipe.toml rename to recipes/tools/twin-commander/recipe.toml diff --git a/recipes/vim/recipe.sh b/recipes/tools/vim/recipe.sh similarity index 100% rename from recipes/vim/recipe.sh rename to recipes/tools/vim/recipe.sh diff --git a/recipes/vim/vim.patch b/recipes/tools/vim/vim.patch similarity index 100% rename from recipes/vim/vim.patch rename to recipes/tools/vim/vim.patch diff --git a/recipes/xz/recipe.toml b/recipes/tools/xz/recipe.toml similarity index 100% rename from recipes/xz/recipe.toml rename to recipes/tools/xz/recipe.toml diff --git a/recipes/mdp/recipe.sh b/recipes/tui/mdp/recipe.sh similarity index 100% rename from recipes/mdp/recipe.sh rename to recipes/tui/mdp/recipe.sh diff --git a/recipes/ncdu/recipe.sh b/recipes/tui/ncdu/recipe.sh similarity index 100% rename from recipes/ncdu/recipe.sh rename to recipes/tui/ncdu/recipe.sh diff --git a/recipes/ncurses/recipe.toml b/recipes/tui/ncurses/recipe.toml similarity index 100% rename from recipes/ncurses/recipe.toml rename to recipes/tui/ncurses/recipe.toml diff --git a/recipes/ncursesw/01-config-sub.patch b/recipes/tui/ncursesw/01-config-sub.patch similarity index 100% rename from recipes/ncursesw/01-config-sub.patch rename to recipes/tui/ncursesw/01-config-sub.patch diff --git a/recipes/ncursesw/recipe.sh b/recipes/tui/ncursesw/recipe.sh similarity index 100% rename from recipes/ncursesw/recipe.sh rename to recipes/tui/ncursesw/recipe.sh From 614060e30ac59fa477d525c459e8e403e67c97ea Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 5 Nov 2023 14:40:23 +0000 Subject: [PATCH 1150/3180] Change the hyperlink name and move the license badge --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 43c67d11..7b148ffa 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ A collection of software ports for Redox. - `video` - Video players and video processing/production tools - `wip` - Software that needs porting or incomplete recipes -[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) - In order for this repository to be useful, it must be set up with an environment -from the [Redox repository](https://gitlab.redox-os.org/redox-os/redox). +from the [redox](https://gitlab.redox-os.org/redox-os/redox) repository. + +[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) \ No newline at end of file From 722e19011835673b76ae0aff325331de3b517d2b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 5 Nov 2023 15:05:55 +0000 Subject: [PATCH 1151/3180] Move some recipes to categories --- README.md | 1 + recipes/{ => core}/profiled/recipe.toml | 0 recipes/{ => games}/devilutionx/recipe.toml | 0 recipes/{ => games}/openjk/recipe.toml | 0 recipes/{ => icons}/pop-icon-theme/recipe.toml | 0 recipes/{ => libraries}/libmpfr/recipe.toml | 0 recipes/{ => other}/newlib/recipe.sh | 0 recipes/{ => other}/newlibtest/recipe.sh | 0 recipes/{ => tools}/bzip2/recipe.toml | 0 recipes/{ => video}/sdl-player/recipe.sh | 0 10 files changed, 1 insertion(+) rename recipes/{ => core}/profiled/recipe.toml (100%) rename recipes/{ => games}/devilutionx/recipe.toml (100%) rename recipes/{ => games}/openjk/recipe.toml (100%) rename recipes/{ => icons}/pop-icon-theme/recipe.toml (100%) rename recipes/{ => libraries}/libmpfr/recipe.toml (100%) rename recipes/{ => other}/newlib/recipe.sh (100%) rename recipes/{ => other}/newlibtest/recipe.sh (100%) rename recipes/{ => tools}/bzip2/recipe.toml (100%) rename recipes/{ => video}/sdl-player/recipe.sh (100%) diff --git a/README.md b/README.md index 43c67d11..e64fa1d8 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ A collection of software ports for Redox. - `examples` - Softwares with examples - `games` - Any kind of game - `gui` - Graphical interfaces +- `icons` - Icon packs - `libraries` - Software with functions for other softwares, like OpenSSL - `network` - Networking tools - `other` - Software that can't fit on other categories diff --git a/recipes/profiled/recipe.toml b/recipes/core/profiled/recipe.toml similarity index 100% rename from recipes/profiled/recipe.toml rename to recipes/core/profiled/recipe.toml diff --git a/recipes/devilutionx/recipe.toml b/recipes/games/devilutionx/recipe.toml similarity index 100% rename from recipes/devilutionx/recipe.toml rename to recipes/games/devilutionx/recipe.toml diff --git a/recipes/openjk/recipe.toml b/recipes/games/openjk/recipe.toml similarity index 100% rename from recipes/openjk/recipe.toml rename to recipes/games/openjk/recipe.toml diff --git a/recipes/pop-icon-theme/recipe.toml b/recipes/icons/pop-icon-theme/recipe.toml similarity index 100% rename from recipes/pop-icon-theme/recipe.toml rename to recipes/icons/pop-icon-theme/recipe.toml diff --git a/recipes/libmpfr/recipe.toml b/recipes/libraries/libmpfr/recipe.toml similarity index 100% rename from recipes/libmpfr/recipe.toml rename to recipes/libraries/libmpfr/recipe.toml diff --git a/recipes/newlib/recipe.sh b/recipes/other/newlib/recipe.sh similarity index 100% rename from recipes/newlib/recipe.sh rename to recipes/other/newlib/recipe.sh diff --git a/recipes/newlibtest/recipe.sh b/recipes/other/newlibtest/recipe.sh similarity index 100% rename from recipes/newlibtest/recipe.sh rename to recipes/other/newlibtest/recipe.sh diff --git a/recipes/bzip2/recipe.toml b/recipes/tools/bzip2/recipe.toml similarity index 100% rename from recipes/bzip2/recipe.toml rename to recipes/tools/bzip2/recipe.toml diff --git a/recipes/sdl-player/recipe.sh b/recipes/video/sdl-player/recipe.sh similarity index 100% rename from recipes/sdl-player/recipe.sh rename to recipes/video/sdl-player/recipe.sh From 8b8083eb12b8e502f6ce01c20ff2a3da583eed37 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 5 Nov 2023 22:11:34 +0000 Subject: [PATCH 1152/3180] Add the "myfiles" recipe --- recipes/other/myfiles/recipe.toml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 recipes/other/myfiles/recipe.toml diff --git a/recipes/other/myfiles/recipe.toml b/recipes/other/myfiles/recipe.toml new file mode 100644 index 00000000..2b5bbf4a --- /dev/null +++ b/recipes/other/myfiles/recipe.toml @@ -0,0 +1,6 @@ +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/home/user +cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/home/user +""" From 4a663deb16a83c68a8f30bbfab76d41ed807415f Mon Sep 17 00:00:00 2001 From: mattmadeofpasta Date: Mon, 6 Nov 2023 09:52:50 +0000 Subject: [PATCH 1153/3180] Fix path in rust recipe --- recipes/development/rust/config.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/development/rust/config.toml b/recipes/development/rust/config.toml index 53a16b1d..b68ef0c2 100644 --- a/recipes/development/rust/config.toml +++ b/recipes/development/rust/config.toml @@ -24,5 +24,5 @@ cxx = "x86_64-unknown-redox-g++" ar = "x86_64-unknown-redox-ar" linker = "x86_64-unknown-redox-gcc" # Nasty path, please fix -llvm-config = "../../../bin/x86_64-unknown-redox-llvm-config" +llvm-config = "../../../../bin/x86_64-unknown-redox-llvm-config" crt-static = false From 5ad8cc9295d7b9e24389bb48bace6c437e1bffad Mon Sep 17 00:00:00 2001 From: mattmadeofpasta Date: Mon, 6 Nov 2023 17:50:08 +0000 Subject: [PATCH 1154/3180] Download perl source over https --- recipes/development/perl/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/development/perl/recipe.sh b/recipes/development/perl/recipe.sh index 4d173db4..eb5caac9 100644 --- a/recipes/development/perl/recipe.sh +++ b/recipes/development/perl/recipe.sh @@ -1,5 +1,5 @@ VERSION=5.24.2 -TAR=http://www.cpan.org/src/5.0/perl-$VERSION.tar.gz +TAR=https://www.cpan.org/src/5.0/perl-$VERSION.tar.gz unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP From 536118a14645af4ba28502435acd437b083b2186 Mon Sep 17 00:00:00 2001 From: mattmadeofpasta Date: Wed, 8 Nov 2023 13:11:50 +0000 Subject: [PATCH 1155/3180] Resume interrupted downloads --- cook.sh | 2 +- src/bin/cook.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cook.sh b/cook.sh index c83a1be4..29c1cde5 100755 --- a/cook.sh +++ b/cook.sh @@ -88,7 +88,7 @@ function op { then if [ ! -f source.tar ] then - wget "$TAR" -O source.tar + wget "$TAR" --continue -O source.tar fi if [ -n "$TAR_SHA256" ] diff --git a/src/bin/cook.rs b/src/bin/cook.rs index e388fdd0..e8d5a8be 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -260,7 +260,7 @@ fi"#); let mut command = Command::new("wget"); command.arg(tar); - command.arg("-O").arg(&source_tar_tmp); + command.arg("--continue").arg("-O").arg(&source_tar_tmp); run_command(command)?; // Move source.tar.tmp to source.tar atomically From 18ed91c67c0667665fc3fa58e3f45fdd02c28c8a Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Thu, 9 Nov 2023 14:43:48 +0100 Subject: [PATCH 1156/3180] Phase out / in scheme names. --- recipes/core/initfs/init.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/core/initfs/init.rc b/recipes/core/initfs/init.rc index 68c6cc71..a8f3b0b3 100644 --- a/recipes/core/initfs/init.rc +++ b/recipes/core/initfs/init.rc @@ -5,7 +5,7 @@ zerod randd inputd vesad T T G -logd debug: display/vesa:1 +logd debug: display.vesa:1 stdio log: ps2d us ramfs logging From 8f8e007fec820a4e13a74a3e941a60c6cac3ab2e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 10 Nov 2023 12:39:23 +0000 Subject: [PATCH 1157/3180] Add the "Package Policy" from the book --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index 7326bb96..6970844e 100644 --- a/README.md +++ b/README.md @@ -29,4 +29,14 @@ A collection of software ports for Redox. In order for this repository to be useful, it must be set up with an environment from the [redox](https://gitlab.redox-os.org/redox-os/redox) repository. +### Package Policy + +When you send your recipe to upstream (to become a public package), you must follow these rules: + +- Keep the static linking of libraries, there's an exception if the library/runtime is bigger than 50MB, big libraries/runtimes like LLVM can be dynamically linked. +- Respect the ABI separation of the packages, for example, if `openssl1` is available and some program need `openssl3`, you will create a recipe for `openssl3` and not rename the `openssl1`, as it will break the ABI of the dependent packages. +- If your recipe download a tarball you need to create a BLAKE3 hash for it, you can learn how to do it [here](https://doc.redox-os.org/book/ch09-03-porting-applications.html#create-a-blake3-hash-for-your-recipee). +- Verify if the recipe has some license violation, in case of doubt ask us on the [chat](https://doc.redox-os.org/book/ch13-01-chat.html). +- If your recipe is incomplete you will add it on the `wip` folder, you don't need to insert a BLAKE3 hash (it's quicker to test new tarball versions without checksum) but you need to insert a `#TODO` on the beginning of the `recipe.toml` and explain what's missing. Once the recipe is ready, add the BLAKE3 hash if needed and move the folder to the appropriate category. + [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) \ No newline at end of file From 87c7bd5d5283514c13e8ae97ba8391585c1bc3f0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 15 Nov 2023 10:28:15 -0700 Subject: [PATCH 1158/3180] Add cosmic-edit recipe --- recipes/cosmic-edit/recipe.toml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 recipes/cosmic-edit/recipe.toml diff --git a/recipes/cosmic-edit/recipe.toml b/recipes/cosmic-edit/recipe.toml new file mode 100644 index 00000000..5fe5a184 --- /dev/null +++ b/recipes/cosmic-edit/recipe.toml @@ -0,0 +1,9 @@ +[source] +git = "https://github.com/pop-os/cosmic-edit.git" +branch = "master_jammy" + +[build] +template = "custom" +script = """ +cookbook_cargo --no-default-features +""" From 823d1fe0c413876939426120a98fbcbf3b183d0a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 15 Nov 2023 11:16:08 -0700 Subject: [PATCH 1159/3180] Move cosmic-edit to gui category --- recipes/{ => gui}/cosmic-edit/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/{ => gui}/cosmic-edit/recipe.toml (100%) diff --git a/recipes/cosmic-edit/recipe.toml b/recipes/gui/cosmic-edit/recipe.toml similarity index 100% rename from recipes/cosmic-edit/recipe.toml rename to recipes/gui/cosmic-edit/recipe.toml From 4957549c75b3012f4f4e2b5183b9bcd574843ba1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 15 Nov 2023 15:06:10 -0700 Subject: [PATCH 1160/3180] Add cosmic-icons recipe --- recipes/icons/cosmic-icons/recipe.toml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 recipes/icons/cosmic-icons/recipe.toml diff --git a/recipes/icons/cosmic-icons/recipe.toml b/recipes/icons/cosmic-icons/recipe.toml new file mode 100644 index 00000000..80b95d86 --- /dev/null +++ b/recipes/icons/cosmic-icons/recipe.toml @@ -0,0 +1,9 @@ +[source] +git = "https://github.com/pop-os/cosmic-icons.git" + +[build] +template = "custom" +script = """ +cd "${COOKBOOK_SOURCE}" +just rootdir="${COOKBOOK_STAGE}" prefix="" install +""" From b99718d7dc42447efcbaf7064fc9ceb371c12109 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 15 Nov 2023 15:22:57 -0700 Subject: [PATCH 1161/3180] cosmic-edit: add manifest --- recipes/gui/cosmic-edit/manifest | 17 +++++++++++++++++ recipes/gui/cosmic-edit/recipe.toml | 2 ++ 2 files changed, 19 insertions(+) create mode 100644 recipes/gui/cosmic-edit/manifest diff --git a/recipes/gui/cosmic-edit/manifest b/recipes/gui/cosmic-edit/manifest new file mode 100644 index 00000000..d0688c7c --- /dev/null +++ b/recipes/gui/cosmic-edit/manifest @@ -0,0 +1,17 @@ +name=COSMIC Text Editor +binary=/bin/cosmic-edit +icon=/ui/icons/apps/accessories-text-editor.png +accept=*.asm +accept=*.conf +accept=*.html +accept=*.ion +accept=*.list +accept=*.lua +accept=*.md +accept=*.rc +accept=*.rs +accept=*.sh +accept=*.toml +accept=*.txt +author=Jeremy Soller +description=COSMIC Text Editor diff --git a/recipes/gui/cosmic-edit/recipe.toml b/recipes/gui/cosmic-edit/recipe.toml index 5fe5a184..9f7d00f0 100644 --- a/recipes/gui/cosmic-edit/recipe.toml +++ b/recipes/gui/cosmic-edit/recipe.toml @@ -6,4 +6,6 @@ branch = "master_jammy" template = "custom" script = """ cookbook_cargo --no-default-features +mkdir -pv "${COOKBOOK_STAGE}/ui/apps" +cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/cosmic-edit" """ From 14c5db985f961dbb34eb8ff510aa8b46df0f822f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 15 Nov 2023 15:56:21 -0700 Subject: [PATCH 1162/3180] Add fonts category and add ibm-plex and intel-one-mono fonts --- recipes/fonts/ibm-plex/recipe.toml | 14 ++++++++++++++ recipes/fonts/intel-one-mono/recipe.toml | 11 +++++++++++ .../{other => fonts}/noto-color-emoji/recipe.toml | 0 recipes/{other => fonts}/ttf-hack/recipe.sh | 0 4 files changed, 25 insertions(+) create mode 100644 recipes/fonts/ibm-plex/recipe.toml create mode 100644 recipes/fonts/intel-one-mono/recipe.toml rename recipes/{other => fonts}/noto-color-emoji/recipe.toml (100%) rename recipes/{other => fonts}/ttf-hack/recipe.sh (100%) diff --git a/recipes/fonts/ibm-plex/recipe.toml b/recipes/fonts/ibm-plex/recipe.toml new file mode 100644 index 00000000..5f68ac6f --- /dev/null +++ b/recipes/fonts/ibm-plex/recipe.toml @@ -0,0 +1,14 @@ +[source] +tar="https://github.com/IBM/plex/archive/refs/tags/v6.3.0.tar.gz" +blake3="6c67f5bf8069762eea1e31f5cca5b4e6f57ea1151b34b338046c7976072ccdef" + +[build] +template = "custom" +script = """ +for style in Mono Sans Serif +do + DEST="${COOKBOOK_STAGE}/ui/fonts/${style}/IBM-Plex" + mkdir -pv "${DEST}" + cp -v "${COOKBOOK_SOURCE}/IBM-Plex-${style}/fonts/complete/ttf/"*".ttf" "${DEST}" +done +""" diff --git a/recipes/fonts/intel-one-mono/recipe.toml b/recipes/fonts/intel-one-mono/recipe.toml new file mode 100644 index 00000000..a6dab3ae --- /dev/null +++ b/recipes/fonts/intel-one-mono/recipe.toml @@ -0,0 +1,11 @@ +[source] +tar="https://github.com/intel/intel-one-mono/archive/refs/tags/V1.3.0.tar.gz" +blake3="9caff71b0a9fe8627253c55889964612ea4ae144584a283cd2fe88b7a14a4140" + +[build] +template = "custom" +script = """ +DEST="${COOKBOOK_STAGE}/ui/fonts/Mono/Intel-One" +mkdir -pv "${DEST}" +cp -v "${COOKBOOK_SOURCE}/fonts/ttf/"*".ttf" "${DEST}" +""" diff --git a/recipes/other/noto-color-emoji/recipe.toml b/recipes/fonts/noto-color-emoji/recipe.toml similarity index 100% rename from recipes/other/noto-color-emoji/recipe.toml rename to recipes/fonts/noto-color-emoji/recipe.toml diff --git a/recipes/other/ttf-hack/recipe.sh b/recipes/fonts/ttf-hack/recipe.sh similarity index 100% rename from recipes/other/ttf-hack/recipe.sh rename to recipes/fonts/ttf-hack/recipe.sh From 5c45e5c2809709789c65e73ea28b06276759526c Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Thu, 16 Nov 2023 14:12:42 +0100 Subject: [PATCH 1163/3180] Merge nulld and zerod. --- recipes/core/initfs/recipe.toml | 1 - recipes/core/nulld/recipe.toml | 5 ----- recipes/core/zerod/recipe.toml | 10 +++++++++- 3 files changed, 9 insertions(+), 7 deletions(-) delete mode 100644 recipes/core/nulld/recipe.toml diff --git a/recipes/core/initfs/recipe.toml b/recipes/core/initfs/recipe.toml index 4f721c8e..4bc9f307 100644 --- a/recipes/core/initfs/recipe.toml +++ b/recipes/core/initfs/recipe.toml @@ -7,7 +7,6 @@ dependencies = [ "drivers-initfs", "init", "logd", - "nulld", "ramfs", "randd", "redoxfs", diff --git a/recipes/core/nulld/recipe.toml b/recipes/core/nulld/recipe.toml deleted file mode 100644 index f9c72546..00000000 --- a/recipes/core/nulld/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -[source] -git = "https://gitlab.redox-os.org/redox-os/nulld.git" - -[build] -template = "cargo" diff --git a/recipes/core/zerod/recipe.toml b/recipes/core/zerod/recipe.toml index 4606caf4..be70616f 100644 --- a/recipes/core/zerod/recipe.toml +++ b/recipes/core/zerod/recipe.toml @@ -2,4 +2,12 @@ git = "https://gitlab.redox-os.org/redox-os/zerod.git" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo --bin zerod + +# TODO: symlinks aren't supported by redox-initfs +#ln -sv zerod "${COOKBOOK_STAGE}/bin/nulld" + +cp "${COOKBOOK_STAGE}/bin/zerod" "${COOKBOOK_STAGE}/bin/nulld" +""" From 084a4dedf7497710062255fd801f28f0f7a6d9f8 Mon Sep 17 00:00:00 2001 From: mattmadeofpasta Date: Sat, 25 Nov 2023 15:39:19 +0000 Subject: [PATCH 1164/3180] Resume interrupted downloads in shell cookbook --- cook.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cook.sh b/cook.sh index 29c1cde5..de9bb119 100755 --- a/cook.sh +++ b/cook.sh @@ -88,7 +88,8 @@ function op { then if [ ! -f source.tar ] then - wget "$TAR" --continue -O source.tar + wget "$TAR" --continue -O source.tar.tmp + mv source.tar.tmp source.tar fi if [ -n "$TAR_SHA256" ] From 63db5c1eeef8d5dc52d62351b93490a198857a30 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Wed, 29 Nov 2023 14:39:25 +0100 Subject: [PATCH 1165/3180] Fix the orbutils recipes --- recipes/gui/orbutils-background/recipe.sh | 2 +- recipes/gui/orbutils-launcher/recipe.sh | 2 +- recipes/gui/orbutils-orblogin/recipe.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/gui/orbutils-background/recipe.sh b/recipes/gui/orbutils-background/recipe.sh index e4836609..bf281add 100644 --- a/recipes/gui/orbutils-background/recipe.sh +++ b/recipes/gui/orbutils-background/recipe.sh @@ -1,4 +1,4 @@ GIT=https://gitlab.redox-os.org/redox-os/orbutils.git BINDIR=/ui/bin -CARGOFLAGS="--bin background" +CARGOFLAGS="--bin background -p orbutils" DEPENDS="orbital" diff --git a/recipes/gui/orbutils-launcher/recipe.sh b/recipes/gui/orbutils-launcher/recipe.sh index fddf4ab6..daf6a4f0 100644 --- a/recipes/gui/orbutils-launcher/recipe.sh +++ b/recipes/gui/orbutils-launcher/recipe.sh @@ -1,4 +1,4 @@ GIT=https://gitlab.redox-os.org/redox-os/orbutils.git BINDIR=/ui/bin -CARGOFLAGS="--bin launcher" +CARGOFLAGS="--bin launcher -p orbutils" DEPENDS="orbital" diff --git a/recipes/gui/orbutils-orblogin/recipe.sh b/recipes/gui/orbutils-orblogin/recipe.sh index 7bf9289b..a1aae464 100644 --- a/recipes/gui/orbutils-orblogin/recipe.sh +++ b/recipes/gui/orbutils-orblogin/recipe.sh @@ -1,4 +1,4 @@ GIT=https://gitlab.redox-os.org/redox-os/orbutils.git BINDIR=/ui/bin -CARGOFLAGS="--bin orblogin" +CARGOFLAGS="--bin orblogin -p orbutils" DEPENDS="orbital" From 38c09a3fcecbfcea646494e1ee981b9a4bbd5b93 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 30 Nov 2023 18:13:53 +0000 Subject: [PATCH 1166/3180] WIP Recipes --- recipes/wip/0ad-data/recipe.toml | 9 +++ recipes/wip/0ad/recipe.toml | 26 +++++++ recipes/wip/7-zip/recipe.toml | 5 ++ recipes/wip/abi-cafe/recipe.toml | 5 ++ recipes/wip/aeruginous/recipe.toml | 5 ++ recipes/wip/aim/recipe.toml | 13 ++++ recipes/wip/alacritty/recipe.toml | 9 +++ recipes/wip/amp/recipe.toml | 5 ++ recipes/wip/anime-effects/recipe.toml | 11 +++ recipes/wip/ant/recipe.toml | 5 ++ recipes/wip/appleseed/recipe.toml | 10 +++ recipes/wip/ardour/recipe.toml | 77 +++++++++++++++++++ recipes/wip/aria2/recipe.toml | 11 +++ recipes/wip/artem/recipe.toml | 13 ++++ recipes/wip/arti/recipe.toml | 11 +++ recipes/wip/artichoke/recipe.toml | 5 ++ recipes/wip/ascii-gen/recipe.toml | 5 ++ recipes/wip/asciinema-rs/recipe.toml | 5 ++ recipes/wip/asmfish/recipe.toml | 5 ++ recipes/wip/assaultcube/recipe.toml | 14 ++++ recipes/wip/astc-encoder/recipe.toml | 5 ++ recipes/wip/astronvim/recipe.toml | 13 ++++ recipes/wip/atk2mm/recipe.toml | 5 ++ recipes/wip/atm-cli/recipe.toml | 5 ++ recipes/wip/atuin/recipe.toml | 8 ++ recipes/wip/aubio/recipe.toml | 5 ++ recipes/wip/austral-lang/recipe.toml | 5 ++ recipes/wip/authoscope/recipe.toml | 13 ++++ recipes/wip/b3sum/recipe.toml | 8 ++ recipes/wip/babl/recipe.toml | 5 ++ recipes/wip/backhand/recipe.toml | 5 ++ recipes/wip/bacon/recipe.toml | 5 ++ recipes/wip/bandwhich/recipe.toml | 5 ++ recipes/wip/bartib/recipe.toml | 5 ++ recipes/wip/bat/recipe.toml | 5 ++ recipes/wip/battle-of-wesnoth/recipe.toml | 21 +++++ recipes/wip/battop/recipe.toml | 5 ++ recipes/wip/betterspades/recipe.toml | 29 +++++++ recipes/wip/bevy-engine/recipe.toml | 16 ++++ recipes/wip/binocle/recipe.toml | 5 ++ recipes/wip/binserve/recipe.toml | 5 ++ recipes/wip/biome/recipe.toml | 8 ++ recipes/wip/birdy/recipe.toml | 5 ++ recipes/wip/bison/recipe.toml | 5 ++ recipes/wip/bita/recipe.toml | 8 ++ recipes/wip/blender-lts/recipe.toml | 42 ++++++++++ recipes/wip/blender/recipe.toml | 42 ++++++++++ recipes/wip/blogbench/recipe.toml | 5 ++ recipes/wip/bluez/recipe.toml | 6 ++ recipes/wip/boost/recipe.toml | 5 ++ recipes/wip/bottles/recipe.toml | 5 ++ recipes/wip/bottom/recipe.toml | 5 ++ recipes/wip/broot/recipe.toml | 5 ++ recipes/wip/bullet-physics/recipe.toml | 5 ++ recipes/wip/c-ray/recipe.toml | 5 ++ recipes/wip/c2rust/recipe.toml | 12 +++ recipes/wip/cackle/recipe.toml | 10 +++ recipes/wip/cairomm/recipe.toml | 5 ++ recipes/wip/call-of-ferris/recipe.toml | 5 ++ recipes/wip/capnproto/recipe.toml | 5 ++ recipes/wip/carbonyl/recipe.toml | 10 +++ recipes/wip/cargo-about/recipe.toml | 5 ++ recipes/wip/cargo-audit/recipe.toml | 14 ++++ recipes/wip/cargo-auditable/recipe.toml | 5 ++ recipes/wip/cargo-cache/recipe.toml | 5 ++ recipes/wip/cargo-crev/recipe.toml | 5 ++ recipes/wip/cargo-deny/recipe.toml | 5 ++ recipes/wip/cargo-diet/recipe.toml | 5 ++ recipes/wip/cargo-fuzz/recipe.toml | 5 ++ recipes/wip/cargo-geiger/recipe.toml | 13 ++++ recipes/wip/cargo-generate/recipe.toml | 8 ++ recipes/wip/cargo-info/recipe.toml | 5 ++ recipes/wip/cargo-msrv/recipe.toml | 5 ++ recipes/wip/cargo-mutants/recipe.toml | 5 ++ recipes/wip/cargo-nextest/recipe.toml | 8 ++ recipes/wip/cargo-remark/recipe.toml | 8 ++ recipes/wip/cargo-scaffold/recipe.toml | 13 ++++ recipes/wip/cargo-show-asm/recipe.toml | 5 ++ recipes/wip/cargo-smart-release/recipe.toml | 8 ++ recipes/wip/cargo-sweep/recipe.toml | 5 ++ recipes/wip/cargo-tarpaulin/recipe.toml | 5 ++ recipes/wip/cargo-ui/recipe.toml | 8 ++ recipes/wip/cargo-vet/recipe.toml | 5 ++ recipes/wip/cargo-watch/recipe.toml | 5 ++ recipes/wip/cargo-zigbuild/recipe.toml | 8 ++ recipes/wip/cava/recipe.toml | 9 +++ recipes/wip/cb/recipe.toml | 9 +++ recipes/wip/cbindgen/recipe.toml | 5 ++ recipes/wip/ccs-tools/recipe.toml | 5 ++ recipes/wip/celeste/recipe.toml | 9 +++ recipes/wip/chafa/recipe.toml | 11 +++ recipes/wip/charm++/recipe.toml | 5 ++ recipes/wip/chars/recipe.toml | 5 ++ recipes/wip/checkpwn/recipe.toml | 5 ++ recipes/wip/chocolate-doom/recipe.toml | 10 +++ recipes/wip/choose/recipe.toml | 5 ++ recipes/wip/chromium/recipe.toml | 34 ++++++++ recipes/wip/chuck/recipe.toml | 9 +++ recipes/wip/cicada/recipe.toml | 5 ++ recipes/wip/clamav/recipe.toml | 31 ++++++++ recipes/wip/clickhouse/recipe.toml | 11 +++ recipes/wip/clipshare-desktop/recipe.toml | 11 +++ recipes/wip/clipshare-server/recipe.toml | 11 +++ recipes/wip/clog-cli/recipe.toml | 5 ++ recipes/wip/cmus/recipe.toml | 8 ++ recipes/wip/cobalt/recipe.toml | 5 ++ recipes/wip/cockroachdb/recipe.toml | 6 ++ recipes/wip/codevis/recipe.toml | 5 ++ recipes/wip/conky/recipe.toml | 26 +++++++ recipes/wip/cosmic-epoch/recipe.toml | 20 +++++ recipes/wip/counts/recipe.toml | 5 ++ recipes/wip/cppunit/recipe.toml | 5 ++ recipes/wip/cpuminer-opt/recipe.toml | 11 +++ recipes/wip/criner/recipe.toml | 8 ++ recipes/wip/crispy-doom/recipe.toml | 10 +++ recipes/wip/crosstool-ng/recipe.toml | 5 ++ recipes/wip/cuberite/recipe.toml | 20 +++++ recipes/wip/cute/recipe.toml | 5 ++ recipes/wip/czkawka/recipe.toml | 8 ++ recipes/wip/dacapo-benchmarks/recipe.toml | 5 ++ recipes/wip/daktilo/recipe.toml | 5 ++ recipes/wip/darling/recipe.toml | 37 +++++++++ recipes/wip/dav1d/recipe.toml | 5 ++ recipes/wip/dbus/recipe.toml | 8 ++ recipes/wip/dcss/recipe.toml | 15 ++++ recipes/wip/delta/recipe.toml | 11 +++ recipes/wip/deno/recipe.toml | 9 +++ recipes/wip/deps-rs/recipe.toml | 8 ++ recipes/wip/difftastic/recipe.toml | 8 ++ recipes/wip/dim/recipe.toml | 11 +++ recipes/wip/diplomat-tool/recipe.toml | 8 ++ recipes/wip/doctave/recipe.toml | 5 ++ recipes/wip/dog/recipe.toml | 13 ++++ recipes/wip/dolphin-emu/recipe.toml | 34 ++++++++ recipes/wip/dotnet6/recipe.toml | 12 +++ recipes/wip/dotnet7/recipe.toml | 12 +++ recipes/wip/dprint/recipe.toml | 8 ++ recipes/wip/drill/recipe.toml | 8 ++ recipes/wip/dua/recipe.toml | 5 ++ recipes/wip/duckstation/recipe.toml | 27 +++++++ recipes/wip/dui/recipe.toml | 5 ++ recipes/wip/dune/recipe.toml | 5 ++ recipes/wip/dura/recipe.toml | 8 ++ recipes/wip/dust/recipe.toml | 5 ++ recipes/wip/dutree/recipe.toml | 5 ++ recipes/wip/dwarfs/recipe.toml | 32 ++++++++ recipes/wip/elfshaker/recipe.toml | 5 ++ recipes/wip/elixir/recipe.toml | 5 ++ recipes/wip/elm/recipe.toml | 5 ++ recipes/wip/emacs/recipe.toml | 5 ++ recipes/wip/embree/recipe.toml | 9 +++ recipes/wip/emplace/recipe.toml | 5 ++ recipes/wip/erdtree/recipe.toml | 5 ++ recipes/wip/erlang/recipe.toml | 16 ++++ recipes/wip/espanso/recipe.toml | 11 +++ recipes/wip/et-legacy/recipe.toml | 11 +++ recipes/wip/eudev/recipe.toml | 5 ++ recipes/wip/eva/recipe.toml | 5 ++ recipes/wip/evcxr-jupyter/recipe.toml | 8 ++ recipes/wip/evcxr-repl/recipe.toml | 8 ++ recipes/wip/eww/recipe.toml | 11 +++ recipes/wip/exa/recipe.toml | 5 ++ recipes/wip/eza/recipe.toml | 5 ++ recipes/wip/fazi/recipe.toml | 5 ++ recipes/wip/fclones/recipe.toml | 5 ++ recipes/wip/felix/recipe.toml | 5 ++ recipes/wip/fend/recipe.toml | 8 ++ recipes/wip/festival/recipe.toml | 11 +++ recipes/wip/ffizer/recipe.toml | 8 ++ recipes/wip/fftw/recipe.toml | 5 ++ recipes/wip/file/recipe.toml | 5 ++ recipes/wip/fio/recipe.toml | 5 ++ recipes/wip/firefox-esr/recipe.toml | 23 ++++++ recipes/wip/fish-shell/recipe.toml | 25 ++++++ recipes/wip/flameshot/recipe.toml | 10 +++ recipes/wip/flex/recipe.toml | 9 +++ recipes/wip/flowtime/recipe.toml | 10 +++ recipes/wip/fltk/recipe.toml | 17 ++++ recipes/wip/fontfor/recipe.toml | 5 ++ recipes/wip/fontforge/recipe.toml | 17 ++++ recipes/wip/freealut/recipe.toml | 20 +++++ recipes/wip/freshfetch/recipe.toml | 8 ++ recipes/wip/fselect/recipe.toml | 8 ++ recipes/wip/fyrox/recipe.toml | 5 ++ recipes/wip/gaffer/recipe.toml | 27 +++++++ recipes/wip/gameroy/recipe.toml | 8 ++ recipes/wip/gdb/recipe.toml | 21 +++++ recipes/wip/gegl/recipe.toml | 9 +++ recipes/wip/gem5/recipe.toml | 5 ++ recipes/wip/gengo/recipe.toml | 5 ++ recipes/wip/gerb/recipe.toml | 8 ++ recipes/wip/germ/recipe.toml | 5 ++ recipes/wip/gexiv2/recipe.toml | 5 ++ recipes/wip/gflags/recipe.toml | 5 ++ recipes/wip/ghc/recipe.toml | 5 ++ recipes/wip/gifski/recipe.toml | 5 ++ recipes/wip/gimp/recipe.toml | 27 +++++++ recipes/wip/git-absorb/recipe.toml | 5 ++ recipes/wip/git-cliff/recipe.toml | 8 ++ recipes/wip/git-ignore-generator/recipe.toml | 5 ++ recipes/wip/gitui/recipe.toml | 13 ++++ recipes/wip/glew/recipe.toml | 8 ++ recipes/wip/glfw3/recipe.toml | 24 ++++++ recipes/wip/glib2mm/recipe.toml | 5 ++ recipes/wip/glide/recipe.toml | 9 +++ recipes/wip/gmic-qt/recipe.toml | 6 ++ recipes/wip/gmic/recipe.toml | 11 +++ recipes/wip/gnome-doc-utils/recipe.toml | 5 ++ recipes/wip/gnome2-common/recipe.toml | 5 ++ recipes/wip/gnome3-common/recipe.toml | 5 ++ recipes/wip/gnu-radio/recipe.toml | 16 ++++ recipes/wip/gnupg-lts/recipe.toml | 9 +++ recipes/wip/gnupg/recipe.toml | 9 +++ recipes/wip/gnuplot/recipe.toml | 5 ++ recipes/wip/gnutls3/recipe.toml | 9 +++ recipes/wip/gobang/recipe.toml | 5 ++ recipes/wip/gobject-introspection/recipe.toml | 9 +++ recipes/wip/godot-engine4/recipe.toml | 11 +++ recipes/wip/google-test/recipe.toml | 20 +++++ recipes/wip/goxel/recipe.toml | 9 +++ recipes/wip/gperf/recipe.toml | 5 ++ recipes/wip/gpg-tui/recipe.toml | 10 +++ recipes/wip/gpgme/recipe.toml | 8 ++ recipes/wip/gphoto2/recipe.toml | 5 ++ recipes/wip/gping/recipe.toml | 8 ++ recipes/wip/gptman/recipe.toml | 8 ++ recipes/wip/graphene/recipe.toml | 5 ++ recipes/wip/graphicsmagick/recipe.toml | 16 ++++ recipes/wip/graphviz/recipe.toml | 16 ++++ recipes/wip/grex/recipe.toml | 5 ++ recipes/wip/gromacs/recipe.toml | 5 ++ recipes/wip/gtk-doc/recipe.toml | 5 ++ recipes/wip/gtk-engines/recipe.toml | 5 ++ recipes/wip/gtk2/recipe.toml | 13 ++++ recipes/wip/gtk2mm/recipe.toml | 5 ++ recipes/wip/gtk3/recipe.toml | 18 +++++ recipes/wip/gtk4/recipe.toml | 19 +++++ recipes/wip/gtk4mm/recipe.toml | 6 ++ recipes/wip/gupax/recipe.toml | 5 ++ recipes/wip/gyr/recipe.toml | 5 ++ recipes/wip/gzdoom/recipe.toml | 12 +++ recipes/wip/hadrian/recipe.toml | 5 ++ recipes/wip/halloy/recipe.toml | 5 ++ recipes/wip/hare-std/recipe.toml | 5 ++ recipes/wip/harec/recipe.toml | 5 ++ recipes/wip/hashgood/recipe.toml | 5 ++ recipes/wip/headers/recipe.toml | 5 ++ recipes/wip/heh/recipe.toml | 5 ++ recipes/wip/helix/recipe.toml | 8 ++ recipes/wip/hexyl/recipe.toml | 5 ++ recipes/wip/hgrep/recipe.toml | 5 ++ recipes/wip/hickory-dns/recipe.toml | 8 ++ recipes/wip/himalaya/recipe.toml | 8 ++ recipes/wip/honggfuzz/recipe.toml | 8 ++ recipes/wip/horsetab/recipe.toml | 5 ++ recipes/wip/hpcg/recipe.toml | 5 ++ recipes/wip/htmlq/recipe.toml | 5 ++ recipes/wip/humphrey/recipe.toml | 16 ++++ recipes/wip/hvm/recipe.toml | 5 ++ recipes/wip/hwatch/recipe.toml | 5 ++ recipes/wip/hwloc/recipe.toml | 9 +++ recipes/wip/hyperfine/recipe.toml | 5 ++ recipes/wip/hyprland/recipe.toml | 24 ++++++ recipes/wip/i2pd/recipe.toml | 25 ++++++ recipes/wip/iamb/recipe.toml | 5 ++ recipes/wip/imagemagick/recipe.toml | 5 ++ recipes/wip/imager/recipe.toml | 12 +++ recipes/wip/imlib2/recipe.toml | 10 +++ recipes/wip/incompact3d/recipe.toml | 6 ++ recipes/wip/influxdb/recipe.toml | 6 ++ recipes/wip/inih/recipe.toml | 5 ++ recipes/wip/iniparser/recipe.toml | 5 ++ recipes/wip/inko/recipe.toml | 5 ++ recipes/wip/inkscape/recipe.toml | 34 ++++++++ recipes/wip/inlyne/recipe.toml | 7 ++ recipes/wip/innernet-cli/recipe.toml | 8 ++ recipes/wip/innernet-server/recipe.toml | 11 +++ recipes/wip/intelli-shell/recipe.toml | 13 ++++ recipes/wip/interaction-calculus/recipe.toml | 5 ++ recipes/wip/intermodal/recipe.toml | 9 +++ recipes/wip/intltool/recipe.toml | 5 ++ recipes/wip/ioquake3/recipe.toml | 8 ++ recipes/wip/iotdb/recipe.toml | 5 ++ recipes/wip/irust/recipe.toml | 5 ++ recipes/wip/ispc/recipe.toml | 5 ++ recipes/wip/itstool/recipe.toml | 8 ++ recipes/wip/jless/recipe.toml | 5 ++ recipes/wip/john-the-ripper/recipe.toml | 11 +++ recipes/wip/joshuto/recipe.toml | 5 ++ recipes/wip/jql/recipe.toml | 8 ++ recipes/wip/json-c/recipe.toml | 20 +++++ recipes/wip/julia-lts/recipe.toml | 6 ++ recipes/wip/julia/recipe.toml | 6 ++ recipes/wip/just/recipe.toml | 5 ++ recipes/wip/kalker/recipe.toml | 13 ++++ recipes/wip/kanata/recipe.toml | 5 ++ recipes/wip/kani/recipe.toml | 5 ++ recipes/wip/kbt/recipe.toml | 5 ++ recipes/wip/keepassxc/recipe.toml | 32 ++++++++ recipes/wip/kerberos5/recipe.toml | 5 ++ recipes/wip/kibi/recipe.toml | 5 ++ recipes/wip/kodi/recipe.toml | 56 ++++++++++++++ recipes/wip/krita/recipe.toml | 38 +++++++++ recipes/wip/kubernetes/recipe.toml | 6 ++ recipes/wip/kvazaar/recipe.toml | 5 ++ recipes/wip/lagrange/recipe.toml | 31 ++++++++ recipes/wip/lame/recipe.toml | 5 ++ recipes/wip/lammps/recipe.toml | 5 ++ recipes/wip/lapce/recipe.toml | 5 ++ recipes/wip/lcs-image-diff/recipe.toml | 5 ++ recipes/wip/legdur/recipe.toml | 5 ++ recipes/wip/lemmeknow/recipe.toml | 5 ++ recipes/wip/lenia/recipe.toml | 5 ++ recipes/wip/less/recipe.toml | 9 +++ recipes/wip/level-zero/recipe.toml | 5 ++ recipes/wip/lfs/recipe.toml | 5 ++ recipes/wip/liba52/recipe.toml | 5 ++ recipes/wip/libadwaita/recipe.toml | 5 ++ recipes/wip/libaio/recipe.toml | 5 ++ recipes/wip/libaom/recipe.toml | 6 ++ recipes/wip/libarchive/recipe.toml | 5 ++ recipes/wip/libargon2/recipe.toml | 5 ++ recipes/wip/libass/recipe.toml | 11 +++ recipes/wip/libatomic_ops/recipe.toml | 5 ++ recipes/wip/libavif/recipe.toml | 5 ++ recipes/wip/libbluray/recipe.toml | 13 ++++ recipes/wip/libbotan/recipe.toml | 5 ++ recipes/wip/libbrotli/recipe.toml | 20 +++++ recipes/wip/libbsd/recipe.toml | 5 ++ recipes/wip/libburn/recipe.toml | 5 ++ recipes/wip/libcamera/recipe.toml | 12 +++ recipes/wip/libcap/recipe.toml | 5 ++ recipes/wip/libcups/recipe.toml | 5 ++ recipes/wip/libdecor/recipe.toml | 11 +++ recipes/wip/libdeflate/recipe.toml | 20 +++++ recipes/wip/libdvbpsi/recipe.toml | 5 ++ recipes/wip/libdvdcss/recipe.toml | 5 ++ recipes/wip/libdvdnav/recipe.toml | 5 ++ recipes/wip/libdvdread/recipe.toml | 5 ++ recipes/wip/libebml/recipe.toml | 20 +++++ recipes/wip/libedit/recipe.toml | 10 +++ recipes/wip/libenet/recipe.toml | 5 ++ recipes/wip/libepoxy/recipe.toml | 8 ++ recipes/wip/liberty-eiffel/recipe.toml | 5 ++ recipes/wip/libevdev/recipe.toml | 5 ++ recipes/wip/libevent/recipe.toml | 23 ++++++ recipes/wip/libfmt/recipe.toml | 20 +++++ recipes/wip/libfuse2/recipe.toml | 6 ++ recipes/wip/libfuse3/recipe.toml | 6 ++ recipes/wip/libgav1/recipe.toml | 6 ++ recipes/wip/libgcrypt/recipe.toml | 5 ++ recipes/wip/libgif/recipe.toml | 5 ++ recipes/wip/libgit2/recipe.toml | 23 ++++++ recipes/wip/libglm/recipe.toml | 5 ++ recipes/wip/libgloox/recipe.toml | 8 ++ recipes/wip/libgpg-error/recipe.toml | 5 ++ recipes/wip/libgphoto2/recipe.toml | 5 ++ recipes/wip/libharu/recipe.toml | 9 +++ recipes/wip/libimath/recipe.toml | 5 ++ recipes/wip/libinput/recipe.toml | 9 +++ recipes/wip/libisoburn/recipe.toml | 5 ++ recipes/wip/libisofs/recipe.toml | 5 ++ recipes/wip/libjpeg-turbo/recipe.toml | 5 ++ recipes/wip/libjxl/recipe.toml | 13 ++++ recipes/wip/liblcms/recipe.toml | 8 ++ recipes/wip/liblo/recipe.toml | 5 ++ recipes/wip/libmad/recipe.toml | 5 ++ recipes/wip/libmatroska/recipe.toml | 20 +++++ recipes/wip/libmd/recipe.toml | 5 ++ recipes/wip/libmpeg2/recipe.toml | 5 ++ recipes/wip/libmypaint/recipe.toml | 9 +++ recipes/wip/libnettle/recipe.toml | 9 +++ recipes/wip/libnlopt/recipe.toml | 5 ++ recipes/wip/libnotify/recipe.toml | 11 +++ recipes/wip/libnsl/recipe.toml | 5 ++ recipes/wip/libpcap/recipe.toml | 5 ++ recipes/wip/libpeas/recipe.toml | 5 ++ recipes/wip/libportaudio/recipe.toml | 5 ++ recipes/wip/libpthread-stubs/recipe.toml | 6 ++ recipes/wip/libraptor2/recipe.toml | 10 +++ recipes/wip/librasqal/recipe.toml | 6 ++ recipes/wip/librdf/recipe.toml | 6 ++ .../wip/libreoffice-dictionaries/recipe.toml | 5 ++ .../wip/libreoffice-translations/recipe.toml | 5 ++ recipes/wip/libreoffice/recipe.toml | 16 ++++ recipes/wip/librkcommon/recipe.toml | 8 ++ recipes/wip/librsvg/recipe.toml | 16 ++++ recipes/wip/libsamplerate/recipe.toml | 5 ++ recipes/wip/libsigc++/recipe.toml | 5 ++ recipes/wip/libsixel/recipe.toml | 16 ++++ recipes/wip/libslirp/recipe.toml | 5 ++ recipes/wip/libsndfile/recipe.toml | 10 +++ recipes/wip/libsoundio/recipe.toml | 20 +++++ recipes/wip/libspiro/recipe.toml | 5 ++ recipes/wip/libstk/recipe.toml | 5 ++ recipes/wip/libtheora/recipe.toml | 9 +++ recipes/wip/libtickit/recipe.toml | 5 ++ recipes/wip/libtiff/recipe.toml | 5 ++ recipes/wip/libtool/recipe.toml | 5 ++ recipes/wip/libunistring/recipe.toml | 5 ++ recipes/wip/libunwind/recipe.toml | 5 ++ recipes/wip/liburcu/recipe.toml | 5 ++ recipes/wip/libusb/recipe.toml | 5 ++ recipes/wip/libuuid/recipe.toml | 5 ++ recipes/wip/libuv/recipe.toml | 5 ++ recipes/wip/libva/recipe.toml | 6 ++ recipes/wip/libvncserver/recipe.toml | 27 +++++++ recipes/wip/libvpx/recipe.toml | 5 ++ recipes/wip/libvterm/recipe.toml | 5 ++ recipes/wip/libvulkan/recipe.toml | 25 ++++++ recipes/wip/libwayland/recipe.toml | 5 ++ recipes/wip/libwebp/recipe.toml | 11 +++ recipes/wip/libwebsockets/recipe.toml | 23 ++++++ recipes/wip/libwmf/recipe.toml | 5 ++ recipes/wip/libx11/recipe.toml | 5 ++ recipes/wip/libxcb/recipe.toml | 6 ++ recipes/wip/libxcomposite/recipe.toml | 5 ++ recipes/wip/libxcursor/recipe.toml | 5 ++ recipes/wip/libxfixes/recipe.toml | 6 ++ recipes/wip/libxft/recipe.toml | 5 ++ recipes/wip/libxi/recipe.toml | 5 ++ recipes/wip/libxinerama/recipe.toml | 5 ++ recipes/wip/libxkbcommon/recipe.toml | 5 ++ recipes/wip/libxkbfile/recipe.toml | 5 ++ recipes/wip/libxrandr/recipe.toml | 5 ++ recipes/wip/libxrender/recipe.toml | 5 ++ recipes/wip/libxslt/recipe.toml | 5 ++ recipes/wip/libxtrans/recipe.toml | 5 ++ recipes/wip/libxtst/recipe.toml | 5 ++ recipes/wip/libyaml/recipe.toml | 5 ++ recipes/wip/libzvbi/recipe.toml | 5 ++ recipes/wip/lilv/recipe.toml | 5 ++ recipes/wip/lineselect/recipe.toml | 5 ++ recipes/wip/liquid-dsp/recipe.toml | 12 +++ recipes/wip/livedotcom/recipe.toml | 5 ++ recipes/wip/lmms/recipe.toml | 30 ++++++++ recipes/wip/loadlibrary/recipe.toml | 8 ++ recipes/wip/lokinet/recipe.toml | 32 ++++++++ recipes/wip/lowcharts/recipe.toml | 5 ++ recipes/wip/lpm/recipe.toml | 5 ++ recipes/wip/lrdf/recipe.toml | 5 ++ recipes/wip/lsd/recipe.toml | 5 ++ recipes/wip/lsix/recipe.toml | 14 ++++ recipes/wip/lttng-ust/recipe.toml | 12 +++ recipes/wip/luajit/recipe.toml | 5 ++ recipes/wip/luxcorerender/recipe.toml | 16 ++++ recipes/wip/lv2/recipe.toml | 5 ++ recipes/wip/lychee/recipe.toml | 11 +++ recipes/wip/lynx/recipe.toml | 8 ++ recipes/wip/lz4/recipe.toml | 5 ++ recipes/wip/m4/recipe.toml | 5 ++ recipes/wip/macchina/recipe.toml | 8 ++ recipes/wip/magic-wormhole-rs/recipe.toml | 8 ++ recipes/wip/mandy/recipe.toml | 5 ++ recipes/wip/mangohud/recipe.toml | 9 +++ recipes/wip/mariadb-lts/recipe.toml | 32 ++++++++ recipes/wip/mariadb/recipe.toml | 32 ++++++++ recipes/wip/mask/recipe.toml | 5 ++ recipes/wip/matui/recipe.toml | 8 ++ recipes/wip/maven/recipe.toml | 5 ++ recipes/wip/mbedtls/recipe.toml | 21 +++++ recipes/wip/mcfly/recipe.toml | 5 ++ recipes/wip/mdbook/recipe.toml | 5 ++ recipes/wip/memcached/recipe.toml | 8 ++ recipes/wip/mesa-demos/recipe.toml | 8 ++ recipes/wip/meson/recipe.toml | 5 ++ recipes/wip/mimalloc/recipe.toml | 20 +++++ recipes/wip/minetest-data/recipe.toml | 9 +++ recipes/wip/minetest/recipe.toml | 35 +++++++++ recipes/wip/miniaudicle/recipe.toml | 10 +++ recipes/wip/minibude/recipe.toml | 5 ++ recipes/wip/miniupnpc/recipe.toml | 5 ++ recipes/wip/mnn/recipe.toml | 5 ++ recipes/wip/mongodb6/recipe.toml | 9 +++ recipes/wip/mongodb7/recipe.toml | 9 +++ recipes/wip/mono/recipe.toml | 5 ++ recipes/wip/monolith/recipe.toml | 13 ++++ recipes/wip/moonzoon/recipe.toml | 11 +++ recipes/wip/morty/recipe.toml | 5 ++ recipes/wip/mosh/recipe.toml | 10 +++ recipes/wip/motus/recipe.toml | 5 ++ recipes/wip/mpc/recipe.toml | 9 +++ recipes/wip/mpg123/recipe.toml | 5 ++ recipes/wip/mprocs/recipe.toml | 8 ++ recipes/wip/mpv/recipe.toml | 16 ++++ recipes/wip/mrbayes/recipe.toml | 5 ++ recipes/wip/musepack/recipe.toml | 5 ++ recipes/wip/mysql-server/recipe.toml | 10 +++ recipes/wip/mysql-shell/recipe.toml | 5 ++ recipes/wip/naev/recipe.toml | 17 ++++ recipes/wip/nano/recipe.toml | 8 ++ recipes/wip/ncnn/recipe.toml | 10 +++ recipes/wip/ncspot/recipe.toml | 12 +++ recipes/wip/neofetch/recipe.toml | 10 +++ recipes/wip/neovide/recipe.toml | 14 ++++ recipes/wip/neovim/recipe.toml | 28 +++++++ recipes/wip/netradiant/recipe.toml | 13 ++++ recipes/wip/nginx/recipe.toml | 5 ++ recipes/wip/ninja-build/recipe.toml | 20 +++++ recipes/wip/niri/recipe.toml | 14 ++++ recipes/wip/nlohmann-json/recipe.toml | 5 ++ recipes/wip/nmap/recipe.toml | 5 ++ recipes/wip/nodejs-lts/recipe.toml | 5 ++ recipes/wip/nodejs/recipe.toml | 5 ++ recipes/wip/nostr-rs-relay/recipe.toml | 8 ++ recipes/wip/nsh/recipe.toml | 5 ++ recipes/wip/nspr/recipe.toml | 5 ++ recipes/wip/nss-pem/recipe.toml | 20 +++++ recipes/wip/nss/recipe.toml | 5 ++ recipes/wip/ntpd-rs/recipe.toml | 5 ++ recipes/wip/numbat/recipe.toml | 8 ++ recipes/wip/obs-studio/recipe.toml | 15 ++++ recipes/wip/odilia/recipe.toml | 5 ++ recipes/wip/oidn/recipe.toml | 9 +++ recipes/wip/onednn/recipe.toml | 8 ++ recipes/wip/onefetch/recipe.toml | 5 ++ recipes/wip/onetbb/recipe.toml | 5 ++ recipes/wip/opam/recipe.toml | 5 ++ recipes/wip/openal/recipe.toml | 20 +++++ recipes/wip/openarena/recipe.toml | 12 +++ recipes/wip/openblas/recipe.toml | 6 ++ recipes/wip/opencv4/recipe.toml | 21 +++++ recipes/wip/openexr/recipe.toml | 9 +++ recipes/wip/openimageio/recipe.toml | 17 ++++ recipes/wip/openjdk11-headless/recipe.toml | 15 ++++ recipes/wip/openjdk17-headless/recipe.toml | 15 ++++ recipes/wip/openjdk21-headless/recipe.toml | 15 ++++ recipes/wip/openjdk8-headless/recipe.toml | 10 +++ recipes/wip/openlara/recipe.toml | 5 ++ recipes/wip/openmpi/recipe.toml | 8 ++ recipes/wip/openradioss/recipe.toml | 8 ++ recipes/wip/openscad/recipe.toml | 17 ++++ recipes/wip/openspades/recipe.toml | 34 ++++++++ recipes/wip/opentomb/recipe.toml | 27 +++++++ recipes/wip/opentoonz/recipe.toml | 29 +++++++ recipes/wip/openvkl/recipe.toml | 11 +++ recipes/wip/opus/recipe.toml | 5 ++ recipes/wip/opusfile/recipe.toml | 10 +++ recipes/wip/oranda/recipe.toml | 5 ++ .../orchaldir-texture-generator/recipe.toml | 8 ++ recipes/wip/orz/recipe.toml | 5 ++ recipes/wip/osirion/recipe.toml | 17 ++++ recipes/wip/ospray-studio/recipe.toml | 13 ++++ recipes/wip/ospray/recipe.toml | 13 ++++ recipes/wip/ouch/recipe.toml | 10 +++ recipes/wip/oxipng/recipe.toml | 5 ++ recipes/wip/pango2mm/recipe.toml | 5 ++ recipes/wip/parabolic/recipe.toml | 13 ++++ recipes/wip/paraview-data/recipe.toml | 5 ++ recipes/wip/paraview/recipe.toml | 6 ++ recipes/wip/pcsx2/recipe.toml | 41 ++++++++++ recipes/wip/pdbview/recipe.toml | 5 ++ recipes/wip/pdu/recipe.toml | 5 ++ recipes/wip/pifs/recipe.toml | 12 +++ recipes/wip/pinky/recipe.toml | 11 +++ recipes/wip/pipewire/recipe.toml | 5 ++ recipes/wip/pipr/recipe.toml | 5 ++ recipes/wip/pitivi/recipe.toml | 10 +++ recipes/wip/pixcil/recipe.toml | 5 ++ recipes/wip/pixi/recipe.toml | 5 ++ recipes/wip/pjsip/recipe.toml | 11 +++ recipes/wip/please/recipe.toml | 5 ++ recipes/wip/po4a/recipe.toml | 5 ++ recipes/wip/pomky/recipe.toml | 8 ++ recipes/wip/pony-lang/recipe.toml | 6 ++ recipes/wip/popt/recipe.toml | 20 +++++ recipes/wip/porsmo/recipe.toml | 5 ++ recipes/wip/postgresql16/recipe.toml | 5 ++ recipes/wip/ppsspp/recipe.toml | 28 +++++++ recipes/wip/pragha/recipe.toml | 14 ++++ recipes/wip/presenterm/recipe.toml | 5 ++ recipes/wip/primesieve/recipe.toml | 5 ++ recipes/wip/process-viewer/recipe.toml | 8 ++ recipes/wip/procs/recipe.toml | 5 ++ recipes/wip/projections/recipe.toml | 5 ++ recipes/wip/projectm/recipe.toml | 24 ++++++ recipes/wip/protobuf/recipe.toml | 5 ++ recipes/wip/pueue/recipe.toml | 8 ++ recipes/wip/pulseaudio/recipe.toml | 14 ++++ recipes/wip/pystring/recipe.toml | 5 ++ recipes/wip/python310/recipe.toml | 5 ++ recipes/wip/python312/recipe.toml | 5 ++ recipes/wip/q3rally/recipe.toml | 8 ++ recipes/wip/qbe/recipe.toml | 5 ++ recipes/wip/qrrs/recipe.toml | 5 ++ recipes/wip/qt4/recipe.toml | 5 ++ recipes/wip/qt5-3d/recipe.toml | 5 ++ recipes/wip/qt5-base/recipe.toml | 12 +++ recipes/wip/qt5-declarative/recipe.toml | 5 ++ recipes/wip/qt5-full/recipe.toml | 12 +++ recipes/wip/qt5-imageformats/recipe.toml | 5 ++ recipes/wip/qt5-multimedia/recipe.toml | 5 ++ recipes/wip/qt5-svg/recipe.toml | 5 ++ recipes/wip/qt5-tools/recipe.toml | 5 ++ recipes/wip/qt5-wayland/recipe.toml | 5 ++ recipes/wip/qt5-webengine/recipe.toml | 5 ++ recipes/wip/qt5-webview/recipe.toml | 5 ++ recipes/wip/qt5-x11extras/recipe.toml | 5 ++ recipes/wip/qt6-3d/recipe.toml | 5 ++ recipes/wip/qt6-base/recipe.toml | 12 +++ recipes/wip/qt6-charts/recipe.toml | 5 ++ recipes/wip/qt6-declarative/recipe.toml | 5 ++ recipes/wip/qt6-full/recipe.toml | 11 +++ recipes/wip/qt6-imageformats/recipe.toml | 5 ++ recipes/wip/qt6-multimedia/recipe.toml | 5 ++ recipes/wip/qt6-positioning/recipe.toml | 5 ++ recipes/wip/qt6-tools/recipe.toml | 5 ++ recipes/wip/qt6-translations/recipe.toml | 5 ++ recipes/wip/qt6-wayland/recipe.toml | 5 ++ recipes/wip/qt6-webengine/recipe.toml | 5 ++ recipes/wip/qt6-webview/recipe.toml | 5 ++ recipes/wip/quantlib/recipe.toml | 8 ++ recipes/wip/qv/recipe.toml | 5 ++ recipes/wip/rage/recipe.toml | 8 ++ recipes/wip/rargs/recipe.toml | 5 ++ recipes/wip/rattler-build/recipe.toml | 5 ++ recipes/wip/rav1e/recipe.toml | 5 ++ recipes/wip/rawtherapee/recipe.toml | 21 +++++ recipes/wip/raylib/recipe.toml | 25 ++++++ recipes/wip/rbdoom3-bfg/recipe.toml | 12 +++ recipes/wip/rclone/recipe.toml | 5 ++ recipes/wip/rdflib/recipe.toml | 5 ++ recipes/wip/recdec/recipe.toml | 24 ++++++ recipes/wip/redis/recipe.toml | 5 ++ recipes/wip/release-plz/recipe.toml | 13 ++++ recipes/wip/relish/recipe.toml | 5 ++ recipes/wip/renderdoc/recipe.toml | 26 +++++++ recipes/wip/rioterm/recipe.toml | 10 +++ recipes/wip/rip/recipe.toml | 5 ++ recipes/wip/ripasso/recipe.toml | 11 +++ recipes/wip/ripsecrets/recipe.toml | 5 ++ recipes/wip/rnnoise/recipe.toml | 5 ++ recipes/wip/rnr/recipe.toml | 5 ++ recipes/wip/rocksdb/recipe.toml | 13 ++++ recipes/wip/rodinia/recipe.toml | 5 ++ recipes/wip/rowhammer-test/recipe.toml | 5 ++ recipes/wip/rpcs3/recipe.toml | 38 +++++++++ recipes/wip/rr-debugger/recipe.toml | 9 +++ recipes/wip/rshijack/recipe.toml | 5 ++ recipes/wip/rsync/recipe.toml | 12 +++ recipes/wip/rtorrent/recipe.toml | 5 ++ recipes/wip/rubberband/recipe.toml | 5 ++ recipes/wip/ruby/recipe.toml | 11 +++ recipes/wip/ruff/recipe.toml | 8 ++ recipes/wip/ruffle/recipe.toml | 12 +++ recipes/wip/ruplacer/recipe.toml | 5 ++ recipes/wip/russ/recipe.toml | 5 ++ recipes/wip/rust-counter-strings/recipe.toml | 5 ++ recipes/wip/rust-traverse/recipe.toml | 5 ++ recipes/wip/rustcloud/recipe.toml | 8 ++ recipes/wip/rustic/recipe.toml | 5 ++ recipes/wip/rustlings/recipe.toml | 5 ++ recipes/wip/rustscan/recipe.toml | 8 ++ recipes/wip/rusty-radamsa/recipe.toml | 5 ++ recipes/wip/rusty-rain/recipe.toml | 5 ++ recipes/wip/rustyvibes/recipe.toml | 5 ++ recipes/wip/rye/recipe.toml | 13 ++++ recipes/wip/ryujinx/recipe.toml | 12 +++ recipes/wip/sad/recipe.toml | 5 ++ recipes/wip/samba/recipe.toml | 11 +++ recipes/wip/samply/recipe.toml | 5 ++ recipes/wip/sandbox/recipe.toml | 12 +++ recipes/wip/scribus/recipe.toml | 30 ++++++++ recipes/wip/sd/recipe.toml | 5 ++ recipes/wip/sdl-pango/recipe.toml | 5 ++ recipes/wip/sdl2-net/recipe.toml | 23 ++++++ recipes/wip/sdl2-pango/recipe.toml | 10 +++ recipes/wip/seatd/recipe.toml | 5 ++ recipes/wip/shaderc/recipe.toml | 20 +++++ recipes/wip/shd/recipe.toml | 8 ++ recipes/wip/sheldon/recipe.toml | 5 ++ recipes/wip/shellfirm/recipe.toml | 5 ++ recipes/wip/shockolate/recipe.toml | 46 +++++++++++ recipes/wip/shokunin/recipe.toml | 5 ++ recipes/wip/simdjson/recipe.toml | 5 ++ recipes/wip/skia/recipe.toml | 5 ++ recipes/wip/skim/recipe.toml | 5 ++ recipes/wip/smag/recipe.toml | 5 ++ recipes/wip/smartmontools/recipe.toml | 5 ++ recipes/wip/smokin-guns/recipe.toml | 7 ++ recipes/wip/sn0int/recipe.toml | 9 +++ recipes/wip/snappy/recipe.toml | 5 ++ recipes/wip/sndio/recipe.toml | 5 ++ recipes/wip/snes9x/recipe.toml | 28 +++++++ recipes/wip/sniffglue/recipe.toml | 8 ++ recipes/wip/sniffnet/recipe.toml | 9 +++ recipes/wip/sord/recipe.toml | 5 ++ recipes/wip/soundtouch/recipe.toml | 5 ++ recipes/wip/souper/recipe.toml | 20 +++++ recipes/wip/spacer/recipe.toml | 5 ++ recipes/wip/spadesx/recipe.toml | 25 ++++++ recipes/wip/specfem2d/recipe.toml | 5 ++ recipes/wip/specfem3d-globe/recipe.toml | 5 ++ recipes/wip/specfem3d/recipe.toml | 5 ++ recipes/wip/speedtest-rs/recipe.toml | 5 ++ recipes/wip/speex/recipe.toml | 5 ++ recipes/wip/speexdsp/recipe.toml | 5 ++ recipes/wip/sprinkles/recipe.toml | 5 ++ recipes/wip/sqlite3/recipe.toml | 10 +++ recipes/wip/sratom/recipe.toml | 5 ++ recipes/wip/srsran-4g/recipe.toml | 9 +++ recipes/wip/srsran-project/recipe.toml | 10 +++ recipes/wip/sshx/recipe.toml | 8 ++ recipes/wip/starship/recipe.toml | 5 ++ recipes/wip/startup-notification/recipe.toml | 5 ++ recipes/wip/stellarium/recipe.toml | 37 +++++++++ recipes/wip/stockfish/recipe.toml | 5 ++ recipes/wip/stremio/recipe.toml | 12 +++ recipes/wip/stress-ng/recipe.toml | 19 +++++ recipes/wip/sudo-rs/recipe.toml | 5 ++ recipes/wip/sued/recipe.toml | 5 ++ recipes/wip/suil/recipe.toml | 5 ++ recipes/wip/supertuxkart/recipe.toml | 35 +++++++++ recipes/wip/svg2pdf/recipe.toml | 8 ++ recipes/wip/svt-av1/recipe.toml | 5 ++ recipes/wip/svt-hevc/recipe.toml | 5 ++ recipes/wip/svt-vp9/recipe.toml | 5 ++ recipes/wip/sway/recipe.toml | 14 ++++ recipes/wip/symphonia-play/recipe.toml | 9 +++ recipes/wip/syslinux/recipe.toml | 5 ++ recipes/wip/t-rec/recipe.toml | 8 ++ recipes/wip/t4kcommon/recipe.toml | 14 ++++ recipes/wip/taglib/recipe.toml | 20 +++++ recipes/wip/tealdeer/recipe.toml | 5 ++ recipes/wip/telegram-desktop/recipe.toml | 38 +++++++++ recipes/wip/termcap/recipe.toml | 5 ++ recipes/wip/termimage/recipe.toml | 5 ++ recipes/wip/termusic/recipe.toml | 10 +++ recipes/wip/ternimal/recipe.toml | 8 ++ recipes/wip/tetanes/recipe.toml | 12 +++ recipes/wip/texel/recipe.toml | 5 ++ recipes/wip/texinfo/recipe.toml | 5 ++ recipes/wip/thwack/recipe.toml | 5 ++ recipes/wip/tin-summer/recipe.toml | 5 ++ recipes/wip/tiny/recipe.toml | 8 ++ recipes/wip/tnn/recipe.toml | 5 ++ recipes/wip/tobaru/recipe.toml | 5 ++ recipes/wip/tock/recipe.toml | 5 ++ recipes/wip/tokio-console/recipe.toml | 5 ++ recipes/wip/topgrade/recipe.toml | 5 ++ recipes/wip/tor-browser/recipe.toml | 23 ++++++ recipes/wip/tor/recipe.toml | 10 +++ recipes/wip/tori/recipe.toml | 9 +++ recipes/wip/totem-pl-parser/recipe.toml | 9 +++ recipes/wip/touchhle/recipe.toml | 8 ++ recipes/wip/tp-note/recipe.toml | 8 ++ recipes/wip/tplay/recipe.toml | 11 +++ recipes/wip/transmission/recipe.toml | 28 +++++++ recipes/wip/treq/recipe.toml | 8 ++ recipes/wip/tribler/recipe.toml | 10 +++ recipes/wip/trippy/recipe.toml | 5 ++ recipes/wip/ttyper/recipe.toml | 5 ++ recipes/wip/tui-journal/recipe.toml | 9 +++ recipes/wip/tungsten-renderer/recipe.toml | 5 ++ recipes/wip/tuxmath/recipe.toml | 15 ++++ recipes/wip/tv/recipe.toml | 5 ++ recipes/wip/tvix/recipe.toml | 5 ++ recipes/wip/twolame/recipe.toml | 5 ++ recipes/wip/typst/recipe.toml | 8 ++ recipes/wip/uget/recipe.toml | 9 +++ recipes/wip/unbound/recipe.toml | 9 +++ .../wip/unvanquished-benchmarks/recipe.toml | 5 ++ recipes/wip/unvanquished/recipe.toml | 23 ++++++ recipes/wip/upscaler/recipe.toml | 9 +++ recipes/wip/upx/recipe.toml | 5 ++ recipes/wip/usbutils/recipe.toml | 9 +++ recipes/wip/util-linux/recipe.toml | 5 ++ recipes/wip/uvg266/recipe.toml | 5 ++ recipes/wip/v86/recipe.toml | 5 ++ recipes/wip/vale-lang/recipe.toml | 5 ++ recipes/wip/vamp-plugin-sdk/recipe.toml | 8 ++ recipes/wip/veloren/recipe.toml | 15 ++++ recipes/wip/vincenzo/recipe.toml | 5 ++ recipes/wip/vita3k/recipe.toml | 25 ++++++ recipes/wip/vkpeak/recipe.toml | 8 ++ recipes/wip/vkquake/recipe.toml | 12 +++ recipes/wip/vkquake2/recipe.toml | 10 +++ recipes/wip/vlc/recipe.toml | 48 ++++++++++++ recipes/wip/volk/recipe.toml | 5 ++ recipes/wip/vulkan-tools/recipe.toml | 25 ++++++ recipes/wip/vvenc/recipe.toml | 5 ++ recipes/wip/warp/recipe.toml | 5 ++ recipes/wip/warsow/recipe.toml | 5 ++ recipes/wip/watchexec/recipe.toml | 5 ++ recipes/wip/wayland-protocols/recipe.toml | 5 ++ recipes/wip/wayland-utils/recipe.toml | 5 ++ recipes/wip/webkit/recipe.toml | 5 ++ recipes/wip/webkitgtk/recipe.toml | 8 ++ recipes/wip/wezterm/recipe.toml | 8 ++ recipes/wip/wget/recipe.toml | 8 ++ recipes/wip/wget2/recipe.toml | 15 ++++ recipes/wip/wick/recipe.toml | 5 ++ recipes/wip/wine-stable/recipe.toml | 17 ++++ recipes/wip/wireguard-rs/recipe.toml | 5 ++ recipes/wip/wireplumber/recipe.toml | 10 +++ recipes/wip/wlroots/recipe.toml | 13 ++++ recipes/wip/wolfssl5/recipe.toml | 9 +++ recipes/wip/wpaperd/recipe.toml | 8 ++ recipes/wip/wxwidgets-gtk3/recipe.toml | 14 ++++ recipes/wip/x264/recipe.toml | 5 ++ recipes/wip/x265/recipe.toml | 5 ++ recipes/wip/xaos/recipe.toml | 10 +++ recipes/wip/xash3d-fwgs/recipe.toml | 10 +++ recipes/wip/xcb-util/recipe.toml | 5 ++ recipes/wip/xcp/recipe.toml | 5 ++ recipes/wip/xdg-utils/recipe.toml | 5 ++ recipes/wip/xdotool/recipe.toml | 12 +++ recipes/wip/xemu/recipe.toml | 16 ++++ recipes/wip/xenia/recipe.toml | 15 ++++ recipes/wip/xh/recipe.toml | 5 ++ recipes/wip/xiu/recipe.toml | 13 ++++ recipes/wip/xmrig/recipe.toml | 26 +++++++ recipes/wip/xonotic/recipe.toml | 16 ++++ recipes/wip/xorriso/recipe.toml | 5 ++ recipes/wip/xwayland/recipe.toml | 10 +++ recipes/wip/xxhash/recipe.toml | 5 ++ recipes/wip/yaydl/recipe.toml | 8 ++ recipes/wip/yazi/recipe.toml | 5 ++ recipes/wip/youtube-tui/recipe.toml | 12 +++ recipes/wip/yquake2/recipe.toml | 11 +++ recipes/wip/yuzu/recipe.toml | 36 +++++++++ recipes/wip/zellig/recipe.toml | 5 ++ recipes/wip/zerospades/recipe.toml | 34 ++++++++ recipes/wip/zerotier/recipe.toml | 8 ++ recipes/wip/zet/recipe.toml | 5 ++ recipes/wip/zig/recipe.toml | 20 +++++ recipes/wip/zlib-ng/recipe.toml | 14 ++++ recipes/wip/zmusic/recipe.toml | 20 +++++ recipes/wip/zola/recipe.toml | 5 ++ recipes/wip/zoxide/recipe.toml | 5 ++ recipes/wip/zsnes/recipe.toml | 11 +++ recipes/wip/zstd/recipe.toml | 5 ++ 832 files changed, 7828 insertions(+) create mode 100644 recipes/wip/0ad-data/recipe.toml create mode 100644 recipes/wip/0ad/recipe.toml create mode 100644 recipes/wip/7-zip/recipe.toml create mode 100644 recipes/wip/abi-cafe/recipe.toml create mode 100644 recipes/wip/aeruginous/recipe.toml create mode 100644 recipes/wip/aim/recipe.toml create mode 100644 recipes/wip/alacritty/recipe.toml create mode 100644 recipes/wip/amp/recipe.toml create mode 100644 recipes/wip/anime-effects/recipe.toml create mode 100644 recipes/wip/ant/recipe.toml create mode 100644 recipes/wip/appleseed/recipe.toml create mode 100644 recipes/wip/ardour/recipe.toml create mode 100644 recipes/wip/aria2/recipe.toml create mode 100644 recipes/wip/artem/recipe.toml create mode 100644 recipes/wip/arti/recipe.toml create mode 100644 recipes/wip/artichoke/recipe.toml create mode 100644 recipes/wip/ascii-gen/recipe.toml create mode 100644 recipes/wip/asciinema-rs/recipe.toml create mode 100644 recipes/wip/asmfish/recipe.toml create mode 100644 recipes/wip/assaultcube/recipe.toml create mode 100644 recipes/wip/astc-encoder/recipe.toml create mode 100644 recipes/wip/astronvim/recipe.toml create mode 100644 recipes/wip/atk2mm/recipe.toml create mode 100644 recipes/wip/atm-cli/recipe.toml create mode 100644 recipes/wip/atuin/recipe.toml create mode 100644 recipes/wip/aubio/recipe.toml create mode 100644 recipes/wip/austral-lang/recipe.toml create mode 100644 recipes/wip/authoscope/recipe.toml create mode 100644 recipes/wip/b3sum/recipe.toml create mode 100644 recipes/wip/babl/recipe.toml create mode 100644 recipes/wip/backhand/recipe.toml create mode 100644 recipes/wip/bacon/recipe.toml create mode 100644 recipes/wip/bandwhich/recipe.toml create mode 100644 recipes/wip/bartib/recipe.toml create mode 100644 recipes/wip/bat/recipe.toml create mode 100644 recipes/wip/battle-of-wesnoth/recipe.toml create mode 100644 recipes/wip/battop/recipe.toml create mode 100644 recipes/wip/betterspades/recipe.toml create mode 100644 recipes/wip/bevy-engine/recipe.toml create mode 100644 recipes/wip/binocle/recipe.toml create mode 100644 recipes/wip/binserve/recipe.toml create mode 100644 recipes/wip/biome/recipe.toml create mode 100644 recipes/wip/birdy/recipe.toml create mode 100644 recipes/wip/bison/recipe.toml create mode 100644 recipes/wip/bita/recipe.toml create mode 100644 recipes/wip/blender-lts/recipe.toml create mode 100644 recipes/wip/blender/recipe.toml create mode 100644 recipes/wip/blogbench/recipe.toml create mode 100644 recipes/wip/bluez/recipe.toml create mode 100644 recipes/wip/boost/recipe.toml create mode 100644 recipes/wip/bottles/recipe.toml create mode 100644 recipes/wip/bottom/recipe.toml create mode 100644 recipes/wip/broot/recipe.toml create mode 100644 recipes/wip/bullet-physics/recipe.toml create mode 100644 recipes/wip/c-ray/recipe.toml create mode 100644 recipes/wip/c2rust/recipe.toml create mode 100644 recipes/wip/cackle/recipe.toml create mode 100644 recipes/wip/cairomm/recipe.toml create mode 100644 recipes/wip/call-of-ferris/recipe.toml create mode 100644 recipes/wip/capnproto/recipe.toml create mode 100644 recipes/wip/carbonyl/recipe.toml create mode 100644 recipes/wip/cargo-about/recipe.toml create mode 100644 recipes/wip/cargo-audit/recipe.toml create mode 100644 recipes/wip/cargo-auditable/recipe.toml create mode 100644 recipes/wip/cargo-cache/recipe.toml create mode 100644 recipes/wip/cargo-crev/recipe.toml create mode 100644 recipes/wip/cargo-deny/recipe.toml create mode 100644 recipes/wip/cargo-diet/recipe.toml create mode 100644 recipes/wip/cargo-fuzz/recipe.toml create mode 100644 recipes/wip/cargo-geiger/recipe.toml create mode 100644 recipes/wip/cargo-generate/recipe.toml create mode 100644 recipes/wip/cargo-info/recipe.toml create mode 100644 recipes/wip/cargo-msrv/recipe.toml create mode 100644 recipes/wip/cargo-mutants/recipe.toml create mode 100644 recipes/wip/cargo-nextest/recipe.toml create mode 100644 recipes/wip/cargo-remark/recipe.toml create mode 100644 recipes/wip/cargo-scaffold/recipe.toml create mode 100644 recipes/wip/cargo-show-asm/recipe.toml create mode 100644 recipes/wip/cargo-smart-release/recipe.toml create mode 100644 recipes/wip/cargo-sweep/recipe.toml create mode 100644 recipes/wip/cargo-tarpaulin/recipe.toml create mode 100644 recipes/wip/cargo-ui/recipe.toml create mode 100644 recipes/wip/cargo-vet/recipe.toml create mode 100644 recipes/wip/cargo-watch/recipe.toml create mode 100644 recipes/wip/cargo-zigbuild/recipe.toml create mode 100644 recipes/wip/cava/recipe.toml create mode 100644 recipes/wip/cb/recipe.toml create mode 100644 recipes/wip/cbindgen/recipe.toml create mode 100644 recipes/wip/ccs-tools/recipe.toml create mode 100644 recipes/wip/celeste/recipe.toml create mode 100644 recipes/wip/chafa/recipe.toml create mode 100644 recipes/wip/charm++/recipe.toml create mode 100644 recipes/wip/chars/recipe.toml create mode 100644 recipes/wip/checkpwn/recipe.toml create mode 100644 recipes/wip/chocolate-doom/recipe.toml create mode 100644 recipes/wip/choose/recipe.toml create mode 100644 recipes/wip/chromium/recipe.toml create mode 100644 recipes/wip/chuck/recipe.toml create mode 100644 recipes/wip/cicada/recipe.toml create mode 100644 recipes/wip/clamav/recipe.toml create mode 100644 recipes/wip/clickhouse/recipe.toml create mode 100644 recipes/wip/clipshare-desktop/recipe.toml create mode 100644 recipes/wip/clipshare-server/recipe.toml create mode 100644 recipes/wip/clog-cli/recipe.toml create mode 100644 recipes/wip/cmus/recipe.toml create mode 100644 recipes/wip/cobalt/recipe.toml create mode 100644 recipes/wip/cockroachdb/recipe.toml create mode 100644 recipes/wip/codevis/recipe.toml create mode 100644 recipes/wip/conky/recipe.toml create mode 100644 recipes/wip/cosmic-epoch/recipe.toml create mode 100644 recipes/wip/counts/recipe.toml create mode 100644 recipes/wip/cppunit/recipe.toml create mode 100644 recipes/wip/cpuminer-opt/recipe.toml create mode 100644 recipes/wip/criner/recipe.toml create mode 100644 recipes/wip/crispy-doom/recipe.toml create mode 100644 recipes/wip/crosstool-ng/recipe.toml create mode 100644 recipes/wip/cuberite/recipe.toml create mode 100644 recipes/wip/cute/recipe.toml create mode 100644 recipes/wip/czkawka/recipe.toml create mode 100644 recipes/wip/dacapo-benchmarks/recipe.toml create mode 100644 recipes/wip/daktilo/recipe.toml create mode 100644 recipes/wip/darling/recipe.toml create mode 100644 recipes/wip/dav1d/recipe.toml create mode 100644 recipes/wip/dbus/recipe.toml create mode 100644 recipes/wip/dcss/recipe.toml create mode 100644 recipes/wip/delta/recipe.toml create mode 100644 recipes/wip/deno/recipe.toml create mode 100644 recipes/wip/deps-rs/recipe.toml create mode 100644 recipes/wip/difftastic/recipe.toml create mode 100644 recipes/wip/dim/recipe.toml create mode 100644 recipes/wip/diplomat-tool/recipe.toml create mode 100644 recipes/wip/doctave/recipe.toml create mode 100644 recipes/wip/dog/recipe.toml create mode 100644 recipes/wip/dolphin-emu/recipe.toml create mode 100644 recipes/wip/dotnet6/recipe.toml create mode 100644 recipes/wip/dotnet7/recipe.toml create mode 100644 recipes/wip/dprint/recipe.toml create mode 100644 recipes/wip/drill/recipe.toml create mode 100644 recipes/wip/dua/recipe.toml create mode 100644 recipes/wip/duckstation/recipe.toml create mode 100644 recipes/wip/dui/recipe.toml create mode 100644 recipes/wip/dune/recipe.toml create mode 100644 recipes/wip/dura/recipe.toml create mode 100644 recipes/wip/dust/recipe.toml create mode 100644 recipes/wip/dutree/recipe.toml create mode 100644 recipes/wip/dwarfs/recipe.toml create mode 100644 recipes/wip/elfshaker/recipe.toml create mode 100644 recipes/wip/elixir/recipe.toml create mode 100644 recipes/wip/elm/recipe.toml create mode 100644 recipes/wip/emacs/recipe.toml create mode 100644 recipes/wip/embree/recipe.toml create mode 100644 recipes/wip/emplace/recipe.toml create mode 100644 recipes/wip/erdtree/recipe.toml create mode 100644 recipes/wip/erlang/recipe.toml create mode 100644 recipes/wip/espanso/recipe.toml create mode 100644 recipes/wip/et-legacy/recipe.toml create mode 100644 recipes/wip/eudev/recipe.toml create mode 100644 recipes/wip/eva/recipe.toml create mode 100644 recipes/wip/evcxr-jupyter/recipe.toml create mode 100644 recipes/wip/evcxr-repl/recipe.toml create mode 100644 recipes/wip/eww/recipe.toml create mode 100644 recipes/wip/exa/recipe.toml create mode 100644 recipes/wip/eza/recipe.toml create mode 100644 recipes/wip/fazi/recipe.toml create mode 100644 recipes/wip/fclones/recipe.toml create mode 100644 recipes/wip/felix/recipe.toml create mode 100644 recipes/wip/fend/recipe.toml create mode 100644 recipes/wip/festival/recipe.toml create mode 100644 recipes/wip/ffizer/recipe.toml create mode 100644 recipes/wip/fftw/recipe.toml create mode 100644 recipes/wip/file/recipe.toml create mode 100644 recipes/wip/fio/recipe.toml create mode 100644 recipes/wip/firefox-esr/recipe.toml create mode 100644 recipes/wip/fish-shell/recipe.toml create mode 100644 recipes/wip/flameshot/recipe.toml create mode 100644 recipes/wip/flex/recipe.toml create mode 100644 recipes/wip/flowtime/recipe.toml create mode 100644 recipes/wip/fltk/recipe.toml create mode 100644 recipes/wip/fontfor/recipe.toml create mode 100644 recipes/wip/fontforge/recipe.toml create mode 100644 recipes/wip/freealut/recipe.toml create mode 100644 recipes/wip/freshfetch/recipe.toml create mode 100644 recipes/wip/fselect/recipe.toml create mode 100644 recipes/wip/fyrox/recipe.toml create mode 100644 recipes/wip/gaffer/recipe.toml create mode 100644 recipes/wip/gameroy/recipe.toml create mode 100644 recipes/wip/gdb/recipe.toml create mode 100644 recipes/wip/gegl/recipe.toml create mode 100644 recipes/wip/gem5/recipe.toml create mode 100644 recipes/wip/gengo/recipe.toml create mode 100644 recipes/wip/gerb/recipe.toml create mode 100644 recipes/wip/germ/recipe.toml create mode 100644 recipes/wip/gexiv2/recipe.toml create mode 100644 recipes/wip/gflags/recipe.toml create mode 100644 recipes/wip/ghc/recipe.toml create mode 100644 recipes/wip/gifski/recipe.toml create mode 100644 recipes/wip/gimp/recipe.toml create mode 100644 recipes/wip/git-absorb/recipe.toml create mode 100644 recipes/wip/git-cliff/recipe.toml create mode 100644 recipes/wip/git-ignore-generator/recipe.toml create mode 100644 recipes/wip/gitui/recipe.toml create mode 100644 recipes/wip/glew/recipe.toml create mode 100644 recipes/wip/glfw3/recipe.toml create mode 100644 recipes/wip/glib2mm/recipe.toml create mode 100644 recipes/wip/glide/recipe.toml create mode 100644 recipes/wip/gmic-qt/recipe.toml create mode 100644 recipes/wip/gmic/recipe.toml create mode 100644 recipes/wip/gnome-doc-utils/recipe.toml create mode 100644 recipes/wip/gnome2-common/recipe.toml create mode 100644 recipes/wip/gnome3-common/recipe.toml create mode 100644 recipes/wip/gnu-radio/recipe.toml create mode 100644 recipes/wip/gnupg-lts/recipe.toml create mode 100644 recipes/wip/gnupg/recipe.toml create mode 100644 recipes/wip/gnuplot/recipe.toml create mode 100644 recipes/wip/gnutls3/recipe.toml create mode 100644 recipes/wip/gobang/recipe.toml create mode 100644 recipes/wip/gobject-introspection/recipe.toml create mode 100644 recipes/wip/godot-engine4/recipe.toml create mode 100644 recipes/wip/google-test/recipe.toml create mode 100644 recipes/wip/goxel/recipe.toml create mode 100644 recipes/wip/gperf/recipe.toml create mode 100644 recipes/wip/gpg-tui/recipe.toml create mode 100644 recipes/wip/gpgme/recipe.toml create mode 100644 recipes/wip/gphoto2/recipe.toml create mode 100644 recipes/wip/gping/recipe.toml create mode 100644 recipes/wip/gptman/recipe.toml create mode 100644 recipes/wip/graphene/recipe.toml create mode 100644 recipes/wip/graphicsmagick/recipe.toml create mode 100644 recipes/wip/graphviz/recipe.toml create mode 100644 recipes/wip/grex/recipe.toml create mode 100644 recipes/wip/gromacs/recipe.toml create mode 100644 recipes/wip/gtk-doc/recipe.toml create mode 100644 recipes/wip/gtk-engines/recipe.toml create mode 100644 recipes/wip/gtk2/recipe.toml create mode 100644 recipes/wip/gtk2mm/recipe.toml create mode 100644 recipes/wip/gtk3/recipe.toml create mode 100644 recipes/wip/gtk4/recipe.toml create mode 100644 recipes/wip/gtk4mm/recipe.toml create mode 100644 recipes/wip/gupax/recipe.toml create mode 100644 recipes/wip/gyr/recipe.toml create mode 100644 recipes/wip/gzdoom/recipe.toml create mode 100644 recipes/wip/hadrian/recipe.toml create mode 100644 recipes/wip/halloy/recipe.toml create mode 100644 recipes/wip/hare-std/recipe.toml create mode 100644 recipes/wip/harec/recipe.toml create mode 100644 recipes/wip/hashgood/recipe.toml create mode 100644 recipes/wip/headers/recipe.toml create mode 100644 recipes/wip/heh/recipe.toml create mode 100644 recipes/wip/helix/recipe.toml create mode 100644 recipes/wip/hexyl/recipe.toml create mode 100644 recipes/wip/hgrep/recipe.toml create mode 100644 recipes/wip/hickory-dns/recipe.toml create mode 100644 recipes/wip/himalaya/recipe.toml create mode 100644 recipes/wip/honggfuzz/recipe.toml create mode 100644 recipes/wip/horsetab/recipe.toml create mode 100644 recipes/wip/hpcg/recipe.toml create mode 100644 recipes/wip/htmlq/recipe.toml create mode 100644 recipes/wip/humphrey/recipe.toml create mode 100644 recipes/wip/hvm/recipe.toml create mode 100644 recipes/wip/hwatch/recipe.toml create mode 100644 recipes/wip/hwloc/recipe.toml create mode 100644 recipes/wip/hyperfine/recipe.toml create mode 100644 recipes/wip/hyprland/recipe.toml create mode 100644 recipes/wip/i2pd/recipe.toml create mode 100644 recipes/wip/iamb/recipe.toml create mode 100644 recipes/wip/imagemagick/recipe.toml create mode 100644 recipes/wip/imager/recipe.toml create mode 100644 recipes/wip/imlib2/recipe.toml create mode 100644 recipes/wip/incompact3d/recipe.toml create mode 100644 recipes/wip/influxdb/recipe.toml create mode 100644 recipes/wip/inih/recipe.toml create mode 100644 recipes/wip/iniparser/recipe.toml create mode 100644 recipes/wip/inko/recipe.toml create mode 100644 recipes/wip/inkscape/recipe.toml create mode 100644 recipes/wip/inlyne/recipe.toml create mode 100644 recipes/wip/innernet-cli/recipe.toml create mode 100644 recipes/wip/innernet-server/recipe.toml create mode 100644 recipes/wip/intelli-shell/recipe.toml create mode 100644 recipes/wip/interaction-calculus/recipe.toml create mode 100644 recipes/wip/intermodal/recipe.toml create mode 100644 recipes/wip/intltool/recipe.toml create mode 100644 recipes/wip/ioquake3/recipe.toml create mode 100644 recipes/wip/iotdb/recipe.toml create mode 100644 recipes/wip/irust/recipe.toml create mode 100644 recipes/wip/ispc/recipe.toml create mode 100644 recipes/wip/itstool/recipe.toml create mode 100644 recipes/wip/jless/recipe.toml create mode 100644 recipes/wip/john-the-ripper/recipe.toml create mode 100644 recipes/wip/joshuto/recipe.toml create mode 100644 recipes/wip/jql/recipe.toml create mode 100644 recipes/wip/json-c/recipe.toml create mode 100644 recipes/wip/julia-lts/recipe.toml create mode 100644 recipes/wip/julia/recipe.toml create mode 100644 recipes/wip/just/recipe.toml create mode 100644 recipes/wip/kalker/recipe.toml create mode 100644 recipes/wip/kanata/recipe.toml create mode 100644 recipes/wip/kani/recipe.toml create mode 100644 recipes/wip/kbt/recipe.toml create mode 100644 recipes/wip/keepassxc/recipe.toml create mode 100644 recipes/wip/kerberos5/recipe.toml create mode 100644 recipes/wip/kibi/recipe.toml create mode 100644 recipes/wip/kodi/recipe.toml create mode 100644 recipes/wip/krita/recipe.toml create mode 100644 recipes/wip/kubernetes/recipe.toml create mode 100644 recipes/wip/kvazaar/recipe.toml create mode 100644 recipes/wip/lagrange/recipe.toml create mode 100644 recipes/wip/lame/recipe.toml create mode 100644 recipes/wip/lammps/recipe.toml create mode 100644 recipes/wip/lapce/recipe.toml create mode 100644 recipes/wip/lcs-image-diff/recipe.toml create mode 100644 recipes/wip/legdur/recipe.toml create mode 100644 recipes/wip/lemmeknow/recipe.toml create mode 100644 recipes/wip/lenia/recipe.toml create mode 100644 recipes/wip/less/recipe.toml create mode 100644 recipes/wip/level-zero/recipe.toml create mode 100644 recipes/wip/lfs/recipe.toml create mode 100644 recipes/wip/liba52/recipe.toml create mode 100644 recipes/wip/libadwaita/recipe.toml create mode 100644 recipes/wip/libaio/recipe.toml create mode 100644 recipes/wip/libaom/recipe.toml create mode 100644 recipes/wip/libarchive/recipe.toml create mode 100644 recipes/wip/libargon2/recipe.toml create mode 100644 recipes/wip/libass/recipe.toml create mode 100644 recipes/wip/libatomic_ops/recipe.toml create mode 100644 recipes/wip/libavif/recipe.toml create mode 100644 recipes/wip/libbluray/recipe.toml create mode 100644 recipes/wip/libbotan/recipe.toml create mode 100644 recipes/wip/libbrotli/recipe.toml create mode 100644 recipes/wip/libbsd/recipe.toml create mode 100644 recipes/wip/libburn/recipe.toml create mode 100644 recipes/wip/libcamera/recipe.toml create mode 100644 recipes/wip/libcap/recipe.toml create mode 100644 recipes/wip/libcups/recipe.toml create mode 100644 recipes/wip/libdecor/recipe.toml create mode 100644 recipes/wip/libdeflate/recipe.toml create mode 100644 recipes/wip/libdvbpsi/recipe.toml create mode 100644 recipes/wip/libdvdcss/recipe.toml create mode 100644 recipes/wip/libdvdnav/recipe.toml create mode 100644 recipes/wip/libdvdread/recipe.toml create mode 100644 recipes/wip/libebml/recipe.toml create mode 100644 recipes/wip/libedit/recipe.toml create mode 100644 recipes/wip/libenet/recipe.toml create mode 100644 recipes/wip/libepoxy/recipe.toml create mode 100644 recipes/wip/liberty-eiffel/recipe.toml create mode 100644 recipes/wip/libevdev/recipe.toml create mode 100644 recipes/wip/libevent/recipe.toml create mode 100644 recipes/wip/libfmt/recipe.toml create mode 100644 recipes/wip/libfuse2/recipe.toml create mode 100644 recipes/wip/libfuse3/recipe.toml create mode 100644 recipes/wip/libgav1/recipe.toml create mode 100644 recipes/wip/libgcrypt/recipe.toml create mode 100644 recipes/wip/libgif/recipe.toml create mode 100644 recipes/wip/libgit2/recipe.toml create mode 100644 recipes/wip/libglm/recipe.toml create mode 100644 recipes/wip/libgloox/recipe.toml create mode 100644 recipes/wip/libgpg-error/recipe.toml create mode 100644 recipes/wip/libgphoto2/recipe.toml create mode 100644 recipes/wip/libharu/recipe.toml create mode 100644 recipes/wip/libimath/recipe.toml create mode 100644 recipes/wip/libinput/recipe.toml create mode 100644 recipes/wip/libisoburn/recipe.toml create mode 100644 recipes/wip/libisofs/recipe.toml create mode 100644 recipes/wip/libjpeg-turbo/recipe.toml create mode 100644 recipes/wip/libjxl/recipe.toml create mode 100644 recipes/wip/liblcms/recipe.toml create mode 100644 recipes/wip/liblo/recipe.toml create mode 100644 recipes/wip/libmad/recipe.toml create mode 100644 recipes/wip/libmatroska/recipe.toml create mode 100644 recipes/wip/libmd/recipe.toml create mode 100644 recipes/wip/libmpeg2/recipe.toml create mode 100644 recipes/wip/libmypaint/recipe.toml create mode 100644 recipes/wip/libnettle/recipe.toml create mode 100644 recipes/wip/libnlopt/recipe.toml create mode 100644 recipes/wip/libnotify/recipe.toml create mode 100644 recipes/wip/libnsl/recipe.toml create mode 100644 recipes/wip/libpcap/recipe.toml create mode 100644 recipes/wip/libpeas/recipe.toml create mode 100644 recipes/wip/libportaudio/recipe.toml create mode 100644 recipes/wip/libpthread-stubs/recipe.toml create mode 100644 recipes/wip/libraptor2/recipe.toml create mode 100644 recipes/wip/librasqal/recipe.toml create mode 100644 recipes/wip/librdf/recipe.toml create mode 100644 recipes/wip/libreoffice-dictionaries/recipe.toml create mode 100644 recipes/wip/libreoffice-translations/recipe.toml create mode 100644 recipes/wip/libreoffice/recipe.toml create mode 100644 recipes/wip/librkcommon/recipe.toml create mode 100644 recipes/wip/librsvg/recipe.toml create mode 100644 recipes/wip/libsamplerate/recipe.toml create mode 100644 recipes/wip/libsigc++/recipe.toml create mode 100644 recipes/wip/libsixel/recipe.toml create mode 100644 recipes/wip/libslirp/recipe.toml create mode 100644 recipes/wip/libsndfile/recipe.toml create mode 100644 recipes/wip/libsoundio/recipe.toml create mode 100644 recipes/wip/libspiro/recipe.toml create mode 100644 recipes/wip/libstk/recipe.toml create mode 100644 recipes/wip/libtheora/recipe.toml create mode 100644 recipes/wip/libtickit/recipe.toml create mode 100644 recipes/wip/libtiff/recipe.toml create mode 100644 recipes/wip/libtool/recipe.toml create mode 100644 recipes/wip/libunistring/recipe.toml create mode 100644 recipes/wip/libunwind/recipe.toml create mode 100644 recipes/wip/liburcu/recipe.toml create mode 100644 recipes/wip/libusb/recipe.toml create mode 100644 recipes/wip/libuuid/recipe.toml create mode 100644 recipes/wip/libuv/recipe.toml create mode 100644 recipes/wip/libva/recipe.toml create mode 100644 recipes/wip/libvncserver/recipe.toml create mode 100644 recipes/wip/libvpx/recipe.toml create mode 100644 recipes/wip/libvterm/recipe.toml create mode 100644 recipes/wip/libvulkan/recipe.toml create mode 100644 recipes/wip/libwayland/recipe.toml create mode 100644 recipes/wip/libwebp/recipe.toml create mode 100644 recipes/wip/libwebsockets/recipe.toml create mode 100644 recipes/wip/libwmf/recipe.toml create mode 100644 recipes/wip/libx11/recipe.toml create mode 100644 recipes/wip/libxcb/recipe.toml create mode 100644 recipes/wip/libxcomposite/recipe.toml create mode 100644 recipes/wip/libxcursor/recipe.toml create mode 100644 recipes/wip/libxfixes/recipe.toml create mode 100644 recipes/wip/libxft/recipe.toml create mode 100644 recipes/wip/libxi/recipe.toml create mode 100644 recipes/wip/libxinerama/recipe.toml create mode 100644 recipes/wip/libxkbcommon/recipe.toml create mode 100644 recipes/wip/libxkbfile/recipe.toml create mode 100644 recipes/wip/libxrandr/recipe.toml create mode 100644 recipes/wip/libxrender/recipe.toml create mode 100644 recipes/wip/libxslt/recipe.toml create mode 100644 recipes/wip/libxtrans/recipe.toml create mode 100644 recipes/wip/libxtst/recipe.toml create mode 100644 recipes/wip/libyaml/recipe.toml create mode 100644 recipes/wip/libzvbi/recipe.toml create mode 100644 recipes/wip/lilv/recipe.toml create mode 100644 recipes/wip/lineselect/recipe.toml create mode 100644 recipes/wip/liquid-dsp/recipe.toml create mode 100644 recipes/wip/livedotcom/recipe.toml create mode 100644 recipes/wip/lmms/recipe.toml create mode 100644 recipes/wip/loadlibrary/recipe.toml create mode 100644 recipes/wip/lokinet/recipe.toml create mode 100644 recipes/wip/lowcharts/recipe.toml create mode 100644 recipes/wip/lpm/recipe.toml create mode 100644 recipes/wip/lrdf/recipe.toml create mode 100644 recipes/wip/lsd/recipe.toml create mode 100644 recipes/wip/lsix/recipe.toml create mode 100644 recipes/wip/lttng-ust/recipe.toml create mode 100644 recipes/wip/luajit/recipe.toml create mode 100644 recipes/wip/luxcorerender/recipe.toml create mode 100644 recipes/wip/lv2/recipe.toml create mode 100644 recipes/wip/lychee/recipe.toml create mode 100644 recipes/wip/lynx/recipe.toml create mode 100644 recipes/wip/lz4/recipe.toml create mode 100644 recipes/wip/m4/recipe.toml create mode 100644 recipes/wip/macchina/recipe.toml create mode 100644 recipes/wip/magic-wormhole-rs/recipe.toml create mode 100644 recipes/wip/mandy/recipe.toml create mode 100644 recipes/wip/mangohud/recipe.toml create mode 100644 recipes/wip/mariadb-lts/recipe.toml create mode 100644 recipes/wip/mariadb/recipe.toml create mode 100644 recipes/wip/mask/recipe.toml create mode 100644 recipes/wip/matui/recipe.toml create mode 100644 recipes/wip/maven/recipe.toml create mode 100644 recipes/wip/mbedtls/recipe.toml create mode 100644 recipes/wip/mcfly/recipe.toml create mode 100644 recipes/wip/mdbook/recipe.toml create mode 100644 recipes/wip/memcached/recipe.toml create mode 100644 recipes/wip/mesa-demos/recipe.toml create mode 100644 recipes/wip/meson/recipe.toml create mode 100644 recipes/wip/mimalloc/recipe.toml create mode 100644 recipes/wip/minetest-data/recipe.toml create mode 100644 recipes/wip/minetest/recipe.toml create mode 100644 recipes/wip/miniaudicle/recipe.toml create mode 100644 recipes/wip/minibude/recipe.toml create mode 100644 recipes/wip/miniupnpc/recipe.toml create mode 100644 recipes/wip/mnn/recipe.toml create mode 100644 recipes/wip/mongodb6/recipe.toml create mode 100644 recipes/wip/mongodb7/recipe.toml create mode 100644 recipes/wip/mono/recipe.toml create mode 100644 recipes/wip/monolith/recipe.toml create mode 100644 recipes/wip/moonzoon/recipe.toml create mode 100644 recipes/wip/morty/recipe.toml create mode 100644 recipes/wip/mosh/recipe.toml create mode 100644 recipes/wip/motus/recipe.toml create mode 100644 recipes/wip/mpc/recipe.toml create mode 100644 recipes/wip/mpg123/recipe.toml create mode 100644 recipes/wip/mprocs/recipe.toml create mode 100644 recipes/wip/mpv/recipe.toml create mode 100644 recipes/wip/mrbayes/recipe.toml create mode 100644 recipes/wip/musepack/recipe.toml create mode 100644 recipes/wip/mysql-server/recipe.toml create mode 100644 recipes/wip/mysql-shell/recipe.toml create mode 100644 recipes/wip/naev/recipe.toml create mode 100644 recipes/wip/nano/recipe.toml create mode 100644 recipes/wip/ncnn/recipe.toml create mode 100644 recipes/wip/ncspot/recipe.toml create mode 100644 recipes/wip/neofetch/recipe.toml create mode 100644 recipes/wip/neovide/recipe.toml create mode 100644 recipes/wip/neovim/recipe.toml create mode 100644 recipes/wip/netradiant/recipe.toml create mode 100644 recipes/wip/nginx/recipe.toml create mode 100644 recipes/wip/ninja-build/recipe.toml create mode 100644 recipes/wip/niri/recipe.toml create mode 100644 recipes/wip/nlohmann-json/recipe.toml create mode 100644 recipes/wip/nmap/recipe.toml create mode 100644 recipes/wip/nodejs-lts/recipe.toml create mode 100644 recipes/wip/nodejs/recipe.toml create mode 100644 recipes/wip/nostr-rs-relay/recipe.toml create mode 100644 recipes/wip/nsh/recipe.toml create mode 100644 recipes/wip/nspr/recipe.toml create mode 100644 recipes/wip/nss-pem/recipe.toml create mode 100644 recipes/wip/nss/recipe.toml create mode 100644 recipes/wip/ntpd-rs/recipe.toml create mode 100644 recipes/wip/numbat/recipe.toml create mode 100644 recipes/wip/obs-studio/recipe.toml create mode 100644 recipes/wip/odilia/recipe.toml create mode 100644 recipes/wip/oidn/recipe.toml create mode 100644 recipes/wip/onednn/recipe.toml create mode 100644 recipes/wip/onefetch/recipe.toml create mode 100644 recipes/wip/onetbb/recipe.toml create mode 100644 recipes/wip/opam/recipe.toml create mode 100644 recipes/wip/openal/recipe.toml create mode 100644 recipes/wip/openarena/recipe.toml create mode 100644 recipes/wip/openblas/recipe.toml create mode 100644 recipes/wip/opencv4/recipe.toml create mode 100644 recipes/wip/openexr/recipe.toml create mode 100644 recipes/wip/openimageio/recipe.toml create mode 100644 recipes/wip/openjdk11-headless/recipe.toml create mode 100644 recipes/wip/openjdk17-headless/recipe.toml create mode 100644 recipes/wip/openjdk21-headless/recipe.toml create mode 100644 recipes/wip/openjdk8-headless/recipe.toml create mode 100644 recipes/wip/openlara/recipe.toml create mode 100644 recipes/wip/openmpi/recipe.toml create mode 100644 recipes/wip/openradioss/recipe.toml create mode 100644 recipes/wip/openscad/recipe.toml create mode 100644 recipes/wip/openspades/recipe.toml create mode 100644 recipes/wip/opentomb/recipe.toml create mode 100644 recipes/wip/opentoonz/recipe.toml create mode 100644 recipes/wip/openvkl/recipe.toml create mode 100644 recipes/wip/opus/recipe.toml create mode 100644 recipes/wip/opusfile/recipe.toml create mode 100644 recipes/wip/oranda/recipe.toml create mode 100644 recipes/wip/orchaldir-texture-generator/recipe.toml create mode 100644 recipes/wip/orz/recipe.toml create mode 100644 recipes/wip/osirion/recipe.toml create mode 100644 recipes/wip/ospray-studio/recipe.toml create mode 100644 recipes/wip/ospray/recipe.toml create mode 100644 recipes/wip/ouch/recipe.toml create mode 100644 recipes/wip/oxipng/recipe.toml create mode 100644 recipes/wip/pango2mm/recipe.toml create mode 100644 recipes/wip/parabolic/recipe.toml create mode 100644 recipes/wip/paraview-data/recipe.toml create mode 100644 recipes/wip/paraview/recipe.toml create mode 100644 recipes/wip/pcsx2/recipe.toml create mode 100644 recipes/wip/pdbview/recipe.toml create mode 100644 recipes/wip/pdu/recipe.toml create mode 100644 recipes/wip/pifs/recipe.toml create mode 100644 recipes/wip/pinky/recipe.toml create mode 100644 recipes/wip/pipewire/recipe.toml create mode 100644 recipes/wip/pipr/recipe.toml create mode 100644 recipes/wip/pitivi/recipe.toml create mode 100644 recipes/wip/pixcil/recipe.toml create mode 100644 recipes/wip/pixi/recipe.toml create mode 100644 recipes/wip/pjsip/recipe.toml create mode 100644 recipes/wip/please/recipe.toml create mode 100644 recipes/wip/po4a/recipe.toml create mode 100644 recipes/wip/pomky/recipe.toml create mode 100644 recipes/wip/pony-lang/recipe.toml create mode 100644 recipes/wip/popt/recipe.toml create mode 100644 recipes/wip/porsmo/recipe.toml create mode 100644 recipes/wip/postgresql16/recipe.toml create mode 100644 recipes/wip/ppsspp/recipe.toml create mode 100644 recipes/wip/pragha/recipe.toml create mode 100644 recipes/wip/presenterm/recipe.toml create mode 100644 recipes/wip/primesieve/recipe.toml create mode 100644 recipes/wip/process-viewer/recipe.toml create mode 100644 recipes/wip/procs/recipe.toml create mode 100644 recipes/wip/projections/recipe.toml create mode 100644 recipes/wip/projectm/recipe.toml create mode 100644 recipes/wip/protobuf/recipe.toml create mode 100644 recipes/wip/pueue/recipe.toml create mode 100644 recipes/wip/pulseaudio/recipe.toml create mode 100644 recipes/wip/pystring/recipe.toml create mode 100644 recipes/wip/python310/recipe.toml create mode 100644 recipes/wip/python312/recipe.toml create mode 100644 recipes/wip/q3rally/recipe.toml create mode 100644 recipes/wip/qbe/recipe.toml create mode 100644 recipes/wip/qrrs/recipe.toml create mode 100644 recipes/wip/qt4/recipe.toml create mode 100644 recipes/wip/qt5-3d/recipe.toml create mode 100644 recipes/wip/qt5-base/recipe.toml create mode 100644 recipes/wip/qt5-declarative/recipe.toml create mode 100644 recipes/wip/qt5-full/recipe.toml create mode 100644 recipes/wip/qt5-imageformats/recipe.toml create mode 100644 recipes/wip/qt5-multimedia/recipe.toml create mode 100644 recipes/wip/qt5-svg/recipe.toml create mode 100644 recipes/wip/qt5-tools/recipe.toml create mode 100644 recipes/wip/qt5-wayland/recipe.toml create mode 100644 recipes/wip/qt5-webengine/recipe.toml create mode 100644 recipes/wip/qt5-webview/recipe.toml create mode 100644 recipes/wip/qt5-x11extras/recipe.toml create mode 100644 recipes/wip/qt6-3d/recipe.toml create mode 100644 recipes/wip/qt6-base/recipe.toml create mode 100644 recipes/wip/qt6-charts/recipe.toml create mode 100644 recipes/wip/qt6-declarative/recipe.toml create mode 100644 recipes/wip/qt6-full/recipe.toml create mode 100644 recipes/wip/qt6-imageformats/recipe.toml create mode 100644 recipes/wip/qt6-multimedia/recipe.toml create mode 100644 recipes/wip/qt6-positioning/recipe.toml create mode 100644 recipes/wip/qt6-tools/recipe.toml create mode 100644 recipes/wip/qt6-translations/recipe.toml create mode 100644 recipes/wip/qt6-wayland/recipe.toml create mode 100644 recipes/wip/qt6-webengine/recipe.toml create mode 100644 recipes/wip/qt6-webview/recipe.toml create mode 100644 recipes/wip/quantlib/recipe.toml create mode 100644 recipes/wip/qv/recipe.toml create mode 100644 recipes/wip/rage/recipe.toml create mode 100644 recipes/wip/rargs/recipe.toml create mode 100644 recipes/wip/rattler-build/recipe.toml create mode 100644 recipes/wip/rav1e/recipe.toml create mode 100644 recipes/wip/rawtherapee/recipe.toml create mode 100644 recipes/wip/raylib/recipe.toml create mode 100644 recipes/wip/rbdoom3-bfg/recipe.toml create mode 100644 recipes/wip/rclone/recipe.toml create mode 100644 recipes/wip/rdflib/recipe.toml create mode 100644 recipes/wip/recdec/recipe.toml create mode 100644 recipes/wip/redis/recipe.toml create mode 100644 recipes/wip/release-plz/recipe.toml create mode 100644 recipes/wip/relish/recipe.toml create mode 100644 recipes/wip/renderdoc/recipe.toml create mode 100644 recipes/wip/rioterm/recipe.toml create mode 100644 recipes/wip/rip/recipe.toml create mode 100644 recipes/wip/ripasso/recipe.toml create mode 100644 recipes/wip/ripsecrets/recipe.toml create mode 100644 recipes/wip/rnnoise/recipe.toml create mode 100644 recipes/wip/rnr/recipe.toml create mode 100644 recipes/wip/rocksdb/recipe.toml create mode 100644 recipes/wip/rodinia/recipe.toml create mode 100644 recipes/wip/rowhammer-test/recipe.toml create mode 100644 recipes/wip/rpcs3/recipe.toml create mode 100644 recipes/wip/rr-debugger/recipe.toml create mode 100644 recipes/wip/rshijack/recipe.toml create mode 100644 recipes/wip/rsync/recipe.toml create mode 100644 recipes/wip/rtorrent/recipe.toml create mode 100644 recipes/wip/rubberband/recipe.toml create mode 100644 recipes/wip/ruby/recipe.toml create mode 100644 recipes/wip/ruff/recipe.toml create mode 100644 recipes/wip/ruffle/recipe.toml create mode 100644 recipes/wip/ruplacer/recipe.toml create mode 100644 recipes/wip/russ/recipe.toml create mode 100644 recipes/wip/rust-counter-strings/recipe.toml create mode 100644 recipes/wip/rust-traverse/recipe.toml create mode 100644 recipes/wip/rustcloud/recipe.toml create mode 100644 recipes/wip/rustic/recipe.toml create mode 100644 recipes/wip/rustlings/recipe.toml create mode 100644 recipes/wip/rustscan/recipe.toml create mode 100644 recipes/wip/rusty-radamsa/recipe.toml create mode 100644 recipes/wip/rusty-rain/recipe.toml create mode 100644 recipes/wip/rustyvibes/recipe.toml create mode 100644 recipes/wip/rye/recipe.toml create mode 100644 recipes/wip/ryujinx/recipe.toml create mode 100644 recipes/wip/sad/recipe.toml create mode 100644 recipes/wip/samba/recipe.toml create mode 100644 recipes/wip/samply/recipe.toml create mode 100644 recipes/wip/sandbox/recipe.toml create mode 100644 recipes/wip/scribus/recipe.toml create mode 100644 recipes/wip/sd/recipe.toml create mode 100644 recipes/wip/sdl-pango/recipe.toml create mode 100644 recipes/wip/sdl2-net/recipe.toml create mode 100644 recipes/wip/sdl2-pango/recipe.toml create mode 100644 recipes/wip/seatd/recipe.toml create mode 100644 recipes/wip/shaderc/recipe.toml create mode 100644 recipes/wip/shd/recipe.toml create mode 100644 recipes/wip/sheldon/recipe.toml create mode 100644 recipes/wip/shellfirm/recipe.toml create mode 100644 recipes/wip/shockolate/recipe.toml create mode 100644 recipes/wip/shokunin/recipe.toml create mode 100644 recipes/wip/simdjson/recipe.toml create mode 100644 recipes/wip/skia/recipe.toml create mode 100644 recipes/wip/skim/recipe.toml create mode 100644 recipes/wip/smag/recipe.toml create mode 100644 recipes/wip/smartmontools/recipe.toml create mode 100644 recipes/wip/smokin-guns/recipe.toml create mode 100644 recipes/wip/sn0int/recipe.toml create mode 100644 recipes/wip/snappy/recipe.toml create mode 100644 recipes/wip/sndio/recipe.toml create mode 100644 recipes/wip/snes9x/recipe.toml create mode 100644 recipes/wip/sniffglue/recipe.toml create mode 100644 recipes/wip/sniffnet/recipe.toml create mode 100644 recipes/wip/sord/recipe.toml create mode 100644 recipes/wip/soundtouch/recipe.toml create mode 100644 recipes/wip/souper/recipe.toml create mode 100644 recipes/wip/spacer/recipe.toml create mode 100644 recipes/wip/spadesx/recipe.toml create mode 100644 recipes/wip/specfem2d/recipe.toml create mode 100644 recipes/wip/specfem3d-globe/recipe.toml create mode 100644 recipes/wip/specfem3d/recipe.toml create mode 100644 recipes/wip/speedtest-rs/recipe.toml create mode 100644 recipes/wip/speex/recipe.toml create mode 100644 recipes/wip/speexdsp/recipe.toml create mode 100644 recipes/wip/sprinkles/recipe.toml create mode 100644 recipes/wip/sqlite3/recipe.toml create mode 100644 recipes/wip/sratom/recipe.toml create mode 100644 recipes/wip/srsran-4g/recipe.toml create mode 100644 recipes/wip/srsran-project/recipe.toml create mode 100644 recipes/wip/sshx/recipe.toml create mode 100644 recipes/wip/starship/recipe.toml create mode 100644 recipes/wip/startup-notification/recipe.toml create mode 100644 recipes/wip/stellarium/recipe.toml create mode 100644 recipes/wip/stockfish/recipe.toml create mode 100644 recipes/wip/stremio/recipe.toml create mode 100644 recipes/wip/stress-ng/recipe.toml create mode 100644 recipes/wip/sudo-rs/recipe.toml create mode 100644 recipes/wip/sued/recipe.toml create mode 100644 recipes/wip/suil/recipe.toml create mode 100644 recipes/wip/supertuxkart/recipe.toml create mode 100644 recipes/wip/svg2pdf/recipe.toml create mode 100644 recipes/wip/svt-av1/recipe.toml create mode 100644 recipes/wip/svt-hevc/recipe.toml create mode 100644 recipes/wip/svt-vp9/recipe.toml create mode 100644 recipes/wip/sway/recipe.toml create mode 100644 recipes/wip/symphonia-play/recipe.toml create mode 100644 recipes/wip/syslinux/recipe.toml create mode 100644 recipes/wip/t-rec/recipe.toml create mode 100644 recipes/wip/t4kcommon/recipe.toml create mode 100644 recipes/wip/taglib/recipe.toml create mode 100644 recipes/wip/tealdeer/recipe.toml create mode 100644 recipes/wip/telegram-desktop/recipe.toml create mode 100644 recipes/wip/termcap/recipe.toml create mode 100644 recipes/wip/termimage/recipe.toml create mode 100644 recipes/wip/termusic/recipe.toml create mode 100644 recipes/wip/ternimal/recipe.toml create mode 100644 recipes/wip/tetanes/recipe.toml create mode 100644 recipes/wip/texel/recipe.toml create mode 100644 recipes/wip/texinfo/recipe.toml create mode 100644 recipes/wip/thwack/recipe.toml create mode 100644 recipes/wip/tin-summer/recipe.toml create mode 100644 recipes/wip/tiny/recipe.toml create mode 100644 recipes/wip/tnn/recipe.toml create mode 100644 recipes/wip/tobaru/recipe.toml create mode 100644 recipes/wip/tock/recipe.toml create mode 100644 recipes/wip/tokio-console/recipe.toml create mode 100644 recipes/wip/topgrade/recipe.toml create mode 100644 recipes/wip/tor-browser/recipe.toml create mode 100644 recipes/wip/tor/recipe.toml create mode 100644 recipes/wip/tori/recipe.toml create mode 100644 recipes/wip/totem-pl-parser/recipe.toml create mode 100644 recipes/wip/touchhle/recipe.toml create mode 100644 recipes/wip/tp-note/recipe.toml create mode 100644 recipes/wip/tplay/recipe.toml create mode 100644 recipes/wip/transmission/recipe.toml create mode 100644 recipes/wip/treq/recipe.toml create mode 100644 recipes/wip/tribler/recipe.toml create mode 100644 recipes/wip/trippy/recipe.toml create mode 100644 recipes/wip/ttyper/recipe.toml create mode 100644 recipes/wip/tui-journal/recipe.toml create mode 100644 recipes/wip/tungsten-renderer/recipe.toml create mode 100644 recipes/wip/tuxmath/recipe.toml create mode 100644 recipes/wip/tv/recipe.toml create mode 100644 recipes/wip/tvix/recipe.toml create mode 100644 recipes/wip/twolame/recipe.toml create mode 100644 recipes/wip/typst/recipe.toml create mode 100644 recipes/wip/uget/recipe.toml create mode 100644 recipes/wip/unbound/recipe.toml create mode 100644 recipes/wip/unvanquished-benchmarks/recipe.toml create mode 100644 recipes/wip/unvanquished/recipe.toml create mode 100644 recipes/wip/upscaler/recipe.toml create mode 100644 recipes/wip/upx/recipe.toml create mode 100644 recipes/wip/usbutils/recipe.toml create mode 100644 recipes/wip/util-linux/recipe.toml create mode 100644 recipes/wip/uvg266/recipe.toml create mode 100644 recipes/wip/v86/recipe.toml create mode 100644 recipes/wip/vale-lang/recipe.toml create mode 100644 recipes/wip/vamp-plugin-sdk/recipe.toml create mode 100644 recipes/wip/veloren/recipe.toml create mode 100644 recipes/wip/vincenzo/recipe.toml create mode 100644 recipes/wip/vita3k/recipe.toml create mode 100644 recipes/wip/vkpeak/recipe.toml create mode 100644 recipes/wip/vkquake/recipe.toml create mode 100644 recipes/wip/vkquake2/recipe.toml create mode 100644 recipes/wip/vlc/recipe.toml create mode 100644 recipes/wip/volk/recipe.toml create mode 100644 recipes/wip/vulkan-tools/recipe.toml create mode 100644 recipes/wip/vvenc/recipe.toml create mode 100644 recipes/wip/warp/recipe.toml create mode 100644 recipes/wip/warsow/recipe.toml create mode 100644 recipes/wip/watchexec/recipe.toml create mode 100644 recipes/wip/wayland-protocols/recipe.toml create mode 100644 recipes/wip/wayland-utils/recipe.toml create mode 100644 recipes/wip/webkit/recipe.toml create mode 100644 recipes/wip/webkitgtk/recipe.toml create mode 100644 recipes/wip/wezterm/recipe.toml create mode 100644 recipes/wip/wget/recipe.toml create mode 100644 recipes/wip/wget2/recipe.toml create mode 100644 recipes/wip/wick/recipe.toml create mode 100644 recipes/wip/wine-stable/recipe.toml create mode 100644 recipes/wip/wireguard-rs/recipe.toml create mode 100644 recipes/wip/wireplumber/recipe.toml create mode 100644 recipes/wip/wlroots/recipe.toml create mode 100644 recipes/wip/wolfssl5/recipe.toml create mode 100644 recipes/wip/wpaperd/recipe.toml create mode 100644 recipes/wip/wxwidgets-gtk3/recipe.toml create mode 100644 recipes/wip/x264/recipe.toml create mode 100644 recipes/wip/x265/recipe.toml create mode 100644 recipes/wip/xaos/recipe.toml create mode 100644 recipes/wip/xash3d-fwgs/recipe.toml create mode 100644 recipes/wip/xcb-util/recipe.toml create mode 100644 recipes/wip/xcp/recipe.toml create mode 100644 recipes/wip/xdg-utils/recipe.toml create mode 100644 recipes/wip/xdotool/recipe.toml create mode 100644 recipes/wip/xemu/recipe.toml create mode 100644 recipes/wip/xenia/recipe.toml create mode 100644 recipes/wip/xh/recipe.toml create mode 100644 recipes/wip/xiu/recipe.toml create mode 100644 recipes/wip/xmrig/recipe.toml create mode 100644 recipes/wip/xonotic/recipe.toml create mode 100644 recipes/wip/xorriso/recipe.toml create mode 100644 recipes/wip/xwayland/recipe.toml create mode 100644 recipes/wip/xxhash/recipe.toml create mode 100644 recipes/wip/yaydl/recipe.toml create mode 100644 recipes/wip/yazi/recipe.toml create mode 100644 recipes/wip/youtube-tui/recipe.toml create mode 100644 recipes/wip/yquake2/recipe.toml create mode 100644 recipes/wip/yuzu/recipe.toml create mode 100644 recipes/wip/zellig/recipe.toml create mode 100644 recipes/wip/zerospades/recipe.toml create mode 100644 recipes/wip/zerotier/recipe.toml create mode 100644 recipes/wip/zet/recipe.toml create mode 100644 recipes/wip/zig/recipe.toml create mode 100644 recipes/wip/zlib-ng/recipe.toml create mode 100644 recipes/wip/zmusic/recipe.toml create mode 100644 recipes/wip/zola/recipe.toml create mode 100644 recipes/wip/zoxide/recipe.toml create mode 100644 recipes/wip/zsnes/recipe.toml create mode 100644 recipes/wip/zstd/recipe.toml diff --git a/recipes/wip/0ad-data/recipe.toml b/recipes/wip/0ad-data/recipe.toml new file mode 100644 index 00000000..008a3102 --- /dev/null +++ b/recipes/wip/0ad-data/recipe.toml @@ -0,0 +1,9 @@ +#TODO Not compiled or tested +[source] +tar = "https://releases.wildfiregames.com/0ad-0.0.26-alpha-unix-data.tar.xz" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/home/user/.local/share/0ad/ +cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/home/user/.local/share/0ad/ +""" diff --git a/recipes/wip/0ad/recipe.toml b/recipes/wip/0ad/recipe.toml new file mode 100644 index 00000000..dea0fc53 --- /dev/null +++ b/recipes/wip/0ad/recipe.toml @@ -0,0 +1,26 @@ +#TODO Missing script for a make build system, see https://trac.wildfiregames.com/wiki/BuildInstructions#Linux +#TODO The Atlas editor needs to be disabled with the build option "--disable-atlas" to avoid GTK3 dependency (WxWidgetsGTK) +#TODO Maybe needs to run update-workspaces.sh before +#TODO Require recipes for SpiderMonkey and libicu (Unicode) +[source] +tar = "https://releases.wildfiregames.com/0ad-0.0.26-alpha-unix-build.tar.xz" +[build] +template = "custom" +dependencies = [ + "boost", + "curl", + "libenet", + "libfmt", + "libgloox", + "libicu", + "libogg", + "libpng", + "libsodium", + "libvorbis", + "libxml2", + "miniupnpc", + "openal", + "sdl2", + "zlib", + "spidermonkey", +] diff --git a/recipes/wip/7-zip/recipe.toml b/recipes/wip/7-zip/recipe.toml new file mode 100644 index 00000000..4930f7e0 --- /dev/null +++ b/recipes/wip/7-zip/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for "make", see https://github.com/mcmilk/7-Zip/tree/master/DOC#readme +[source] +tar = "https://7-zip.org/a/7z2301-src.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/abi-cafe/recipe.toml b/recipes/wip/abi-cafe/recipe.toml new file mode 100644 index 00000000..74202b6e --- /dev/null +++ b/recipes/wip/abi-cafe/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Gankra/abi-cafe" +[build] +template = "cargo" diff --git a/recipes/wip/aeruginous/recipe.toml b/recipes/wip/aeruginous/recipe.toml new file mode 100644 index 00000000..b524503f --- /dev/null +++ b/recipes/wip/aeruginous/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/kevinmatthes/aeruginous-rs/archive/refs/tags/v3.3.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/aim/recipe.toml b/recipes/wip/aim/recipe.toml new file mode 100644 index 00000000..56f617a2 --- /dev/null +++ b/recipes/wip/aim/recipe.toml @@ -0,0 +1,13 @@ +#TODO openssl-sys crate compilation error +[source] +tar = "https://github.com/mihaigalos/aim/archive/refs/tags/1.8.5.tar.gz" +[build] +dependencies = [ + "openssl1", +] +template = "custom" +script = """ +export OPENSSL_DIR="${COOKBOOK_SYSROOT}" +export OPENSSL_STATIC="true" +cookbook_cargo +""" diff --git a/recipes/wip/alacritty/recipe.toml b/recipes/wip/alacritty/recipe.toml new file mode 100644 index 00000000..ea58e3bf --- /dev/null +++ b/recipes/wip/alacritty/recipe.toml @@ -0,0 +1,9 @@ +#TODO Not compiled or tested yet +[source] +tar = "https://github.com/alacritty/alacritty/archive/refs/tags/v0.12.3.tar.gz" +[build] +template = "cargo" +dependencies = [ + "freetype2", + "fontconfig", +] diff --git a/recipes/wip/amp/recipe.toml b/recipes/wip/amp/recipe.toml new file mode 100644 index 00000000..ccd35de4 --- /dev/null +++ b/recipes/wip/amp/recipe.toml @@ -0,0 +1,5 @@ +#TODO require a patch on the mio crate +[source] +git = "https://github.com/jmacdonald/amp" +[build] +template = "cargo" diff --git a/recipes/wip/anime-effects/recipe.toml b/recipes/wip/anime-effects/recipe.toml new file mode 100644 index 00000000..77cc8102 --- /dev/null +++ b/recipes/wip/anime-effects/recipe.toml @@ -0,0 +1,11 @@ +#TODO missing script for QMake, see https://github.com/AnimeEffectsDevs/AnimeEffects#clone--building +[source] +tar = "https://github.com/AnimeEffectsDevs/AnimeEffects/archive/refs/tags/v1.5.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "ffmpeg6", + "mesa", + "qt5-base", + "glib", +] diff --git a/recipes/wip/ant/recipe.toml b/recipes/wip/ant/recipe.toml new file mode 100644 index 00000000..034f5b00 --- /dev/null +++ b/recipes/wip/ant/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for building, see https://ant.apache.org/manual/install.html#buildingant +[source] +tar = "https://downloads.apache.org/ant/source/apache-ant-1.10.14-src.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/appleseed/recipe.toml b/recipes/wip/appleseed/recipe.toml new file mode 100644 index 00000000..044f4cc1 --- /dev/null +++ b/recipes/wip/appleseed/recipe.toml @@ -0,0 +1,10 @@ +#TODO missing script for CMake, see https://github.com/appleseedhq/appleseed/wiki/Building-appleseed-on-Linux +[source] +tar = "https://github.com/appleseedhq/appleseed/archive/refs/tags/2.1.0-beta.tar.gz" +[build] +template = "custom" +dependencies = [ + "zlib", + "qt5-base", + "libnsl", +] diff --git a/recipes/wip/ardour/recipe.toml b/recipes/wip/ardour/recipe.toml new file mode 100644 index 00000000..d6872830 --- /dev/null +++ b/recipes/wip/ardour/recipe.toml @@ -0,0 +1,77 @@ +#TODO make the dependencies work +#TODO missing script for the waf build system, see https://ardour.org/building_linux.html +[source] +tar = "https://community.ardour.org/download?architecture=x86_64&type=source" +[build] +template = "custom" +dependencies = [ + "atk", + "aubio", + "boost", + "fftw", + "freetype2", + "gdk-pixbuf", + "glib", + "gnome2-common", + "gobject-introspection", + "gtk-engines", + "gtk2", + "gtkmm", + "harfbuzz", + "itstool", + "libarchive", + "libiconv", + "libogg", + "libsamplerate", + "libsndfile", + "libusb", + "libwebsockets", + "libxslt", + "lrdf", + "nss-pem", + "pango", + "pcre", + "libraptor2", + "rdflib", + "redland", + "serd", + "sratom", + "taglib", + "termcap", + "util-linux", + "vamp-plugin-sdk", + "zlib", + "atkmm", + "cairo", + "cppunit", + "expat", + "libflac", + "fontconfig", + "fribidi", + "gettext", + "glibmm", + "gnome-doc-utils", + "gtk-doc", + "intltool", + "libjpeg", + "libffi", + "liblo", + "libpng", + "libsigc++", + "libtool", + "libvorbis", + "libxml2", + "lilv", + "lv2", + "nss-nspr", + "opus", + "pangomm", + "pixman", + "librasqal", + "readline", + "rubberband", + "sord", + "suil", + "libtiff", + "xz", +] diff --git a/recipes/wip/aria2/recipe.toml b/recipes/wip/aria2/recipe.toml new file mode 100644 index 00000000..165ff911 --- /dev/null +++ b/recipes/wip/aria2/recipe.toml @@ -0,0 +1,11 @@ +#TODO make dependencies work +[source] +tar = "https://github.com/aria2/aria2/releases/download/release-1.37.0/aria2-1.37.0.tar.xz" +[build] +template = "configure" +dependencies = [ + "openssl1", + "zlib", + "libxml2", + "libgcrypt", +] diff --git a/recipes/wip/artem/recipe.toml b/recipes/wip/artem/recipe.toml new file mode 100644 index 00000000..98e8d4d9 --- /dev/null +++ b/recipes/wip/artem/recipe.toml @@ -0,0 +1,13 @@ +#TODO openssl-sys crate error +[source] +tar = "https://github.com/FineFindus/artem/archive/refs/tags/v1.2.1.tar.gz" +[build] +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +export OPENSSL_DIR="${COOKBOOK_SYSROOT}" +export OPENSSL_STATIC="true" +cookbook_cargo +""" diff --git a/recipes/wip/arti/recipe.toml b/recipes/wip/arti/recipe.toml new file mode 100644 index 00000000..4dcefc60 --- /dev/null +++ b/recipes/wip/arti/recipe.toml @@ -0,0 +1,11 @@ +#TODO pwd-grp crate error +[source] +tar = "https://gitlab.torproject.org/tpo/core/arti/-/archive/arti-v1.1.7/arti-arti-v1.1.7.tar.gz" +[build] +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +cookbook_cargo_packages arti +""" diff --git a/recipes/wip/artichoke/recipe.toml b/recipes/wip/artichoke/recipe.toml new file mode 100644 index 00000000..89b3dd37 --- /dev/null +++ b/recipes/wip/artichoke/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled/tested yet +[source] +git = "https://github.com/artichoke/artichoke" +[build] +template = "cargo" diff --git a/recipes/wip/ascii-gen/recipe.toml b/recipes/wip/ascii-gen/recipe.toml new file mode 100644 index 00000000..fb4d0a74 --- /dev/null +++ b/recipes/wip/ascii-gen/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/thed24/ascii-gen" +[build] +template = "cargo" diff --git a/recipes/wip/asciinema-rs/recipe.toml b/recipes/wip/asciinema-rs/recipe.toml new file mode 100644 index 00000000..d403305e --- /dev/null +++ b/recipes/wip/asciinema-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO Needs to patch outdated crates +[source] +git = "https://github.com/LegNeato/asciinema-rs" +[build] +template = "cargo" diff --git a/recipes/wip/asmfish/recipe.toml b/recipes/wip/asmfish/recipe.toml new file mode 100644 index 00000000..514d29f0 --- /dev/null +++ b/recipes/wip/asmfish/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for building, see https://github.com/lantonov/asmFish#building +[source] +git = "https://github.com/lantonov/asmFish" +[build] +template = "custom" diff --git a/recipes/wip/assaultcube/recipe.toml b/recipes/wip/assaultcube/recipe.toml new file mode 100644 index 00000000..8e70c6f1 --- /dev/null +++ b/recipes/wip/assaultcube/recipe.toml @@ -0,0 +1,14 @@ +#TODO missing script for "make", see https://wiki.cubers.net/action/view/Linux_Support#Compiling_AssaultCube +[source] +tar = "https://github.com/assaultcube/AC/archive/refs/tags/v1.3.0.2.tar.gz" +[build] +template = "configure" +dependencies = [ + "sdl1", + "sdl1-image", + "openal", + "libogg", + "zlib", + "curl", + "libvorbis", +] diff --git a/recipes/wip/astc-encoder/recipe.toml b/recipes/wip/astc-encoder/recipe.toml new file mode 100644 index 00000000..d1817afb --- /dev/null +++ b/recipes/wip/astc-encoder/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/ARM-software/astc-encoder/blob/main/Docs/Building.md#macos-and-linux-using-make +[source] +tar = "https://github.com/ARM-software/astc-encoder/archive/refs/tags/4.6.1.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/astronvim/recipe.toml b/recipes/wip/astronvim/recipe.toml new file mode 100644 index 00000000..740a06ac --- /dev/null +++ b/recipes/wip/astronvim/recipe.toml @@ -0,0 +1,13 @@ +#TODO Not tested yet +[source] +git = "https://github.com/AstroNvim/AstroNvim" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/home/user/.config/nvim +cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/home/user/.config/nvim +""" +[package] +dependencies = [ + "neovim", +] diff --git a/recipes/wip/atk2mm/recipe.toml b/recipes/wip/atk2mm/recipe.toml new file mode 100644 index 00000000..385b0827 --- /dev/null +++ b/recipes/wip/atk2mm/recipe.toml @@ -0,0 +1,5 @@ +#TODO probably wrong script, see https://gitlab.gnome.org/GNOME/atkmm +[source] +tar = "https://download.gnome.org/sources/atkmm/2.36/atkmm-2.36.2.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/atm-cli/recipe.toml b/recipes/wip/atm-cli/recipe.toml new file mode 100644 index 00000000..02f0cb40 --- /dev/null +++ b/recipes/wip/atm-cli/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested yet +[source] +git = "https://github.com/allthemusicllc/atm-cli" +[build] +template = "cargo" diff --git a/recipes/wip/atuin/recipe.toml b/recipes/wip/atuin/recipe.toml new file mode 100644 index 00000000..10e3e70b --- /dev/null +++ b/recipes/wip/atuin/recipe.toml @@ -0,0 +1,8 @@ +#TODO require a patch on tokio (update the version) +[source] +tar = "https://github.com/ellie/atuin/archive/refs/tags/v14.0.1.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages atuin +""" diff --git a/recipes/wip/aubio/recipe.toml b/recipes/wip/aubio/recipe.toml new file mode 100644 index 00000000..5ca0e1c8 --- /dev/null +++ b/recipes/wip/aubio/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for the waf build system, see https://aubio.org/installation +[source] +tar = "https://aubio.org/pub/aubio-0.4.7.tar.bz2" +[build] +template = "custom" diff --git a/recipes/wip/austral-lang/recipe.toml b/recipes/wip/austral-lang/recipe.toml new file mode 100644 index 00000000..f49e021c --- /dev/null +++ b/recipes/wip/austral-lang/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for building, see https://github.com/austral/austral/#building-without-nix +[source] +git = "https://github.com/austral/austral" +[build] +template = "custom" diff --git a/recipes/wip/authoscope/recipe.toml b/recipes/wip/authoscope/recipe.toml new file mode 100644 index 00000000..e82f959c --- /dev/null +++ b/recipes/wip/authoscope/recipe.toml @@ -0,0 +1,13 @@ +#TODO funty crate version deleted by the owner +[source] +git = "https://github.com/kpcyrd/authoscope" +[build] +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +export OPENSSL_DIR="${COOKBOOK_SYSROOT}" +export OPENSSL_STATIC="true" +cookbook_cargo +""" diff --git a/recipes/wip/b3sum/recipe.toml b/recipes/wip/b3sum/recipe.toml new file mode 100644 index 00000000..9ed6015f --- /dev/null +++ b/recipes/wip/b3sum/recipe.toml @@ -0,0 +1,8 @@ +#TODO require a custom script to move the binary? +[source] +tar = "https://github.com/BLAKE3-team/BLAKE3/archive/refs/tags/1.4.1.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages blake3 +""" diff --git a/recipes/wip/babl/recipe.toml b/recipes/wip/babl/recipe.toml new file mode 100644 index 00000000..5c2226b3 --- /dev/null +++ b/recipes/wip/babl/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, see https://gitlab.gnome.org/GNOME/babl/-/blob/master/INSTALL.in?ref_type=heads +[source] +tar = "https://download.gimp.org/pub/babl/0.1/babl-0.1.106.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/backhand/recipe.toml b/recipes/wip/backhand/recipe.toml new file mode 100644 index 00000000..81e08373 --- /dev/null +++ b/recipes/wip/backhand/recipe.toml @@ -0,0 +1,5 @@ +#TODO broken program +[source] +tar = "https://github.com/wcampbell0x2a/backhand/archive/refs/tags/v0.12.0.tar.gz" +[build] +template = "cargo" \ No newline at end of file diff --git a/recipes/wip/bacon/recipe.toml b/recipes/wip/bacon/recipe.toml new file mode 100644 index 00000000..2f093f85 --- /dev/null +++ b/recipes/wip/bacon/recipe.toml @@ -0,0 +1,5 @@ +#TODO camino crate compilation error +[source] +tar = "https://github.com/Canop/bacon/archive/refs/tags/v2.8.1.tar.gz" +[build] +template = "cargo" \ No newline at end of file diff --git a/recipes/wip/bandwhich/recipe.toml b/recipes/wip/bandwhich/recipe.toml new file mode 100644 index 00000000..1863abca --- /dev/null +++ b/recipes/wip/bandwhich/recipe.toml @@ -0,0 +1,5 @@ +#TODO redox_syscall crate error +[source] +tar = "https://github.com/imsnif/bandwhich/archive/refs/tags/0.20.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/bartib/recipe.toml b/recipes/wip/bartib/recipe.toml new file mode 100644 index 00000000..48ef2c6e --- /dev/null +++ b/recipes/wip/bartib/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested yet +[source] +git = "https://github.com/nikolassv/bartib" +[build] +template = "cargo" diff --git a/recipes/wip/bat/recipe.toml b/recipes/wip/bat/recipe.toml new file mode 100644 index 00000000..e77efa84 --- /dev/null +++ b/recipes/wip/bat/recipe.toml @@ -0,0 +1,5 @@ +#TODO sys-info crate build.rs does not recognize Redox +[source] +tar = "https://github.com/sharkdp/bat/archive/refs/tags/v0.23.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/battle-of-wesnoth/recipe.toml b/recipes/wip/battle-of-wesnoth/recipe.toml new file mode 100644 index 00000000..a6e6fb33 --- /dev/null +++ b/recipes/wip/battle-of-wesnoth/recipe.toml @@ -0,0 +1,21 @@ +#TODO missing script for building, see https://github.com/wesnoth/wesnoth/blob/master/INSTALL.md +#TODO require OpenSSL 3.x +[source] +tar = "https://sourceforge.net/projects/wesnoth/files/wesnoth-1.16/wesnoth-1.16.10/wesnoth-1.16.10.tar.bz2/download" +[build] +template = "custom" +dependencies = [ + "boost", + "sdl2", + "sdl2-image", + "sdl2-mixer", + "fontconfig", + "cairo", + "pango", + "libvorbis", + "bzip2", + "zlib", + "openssl1", + "curl", + "readline", +] diff --git a/recipes/wip/battop/recipe.toml b/recipes/wip/battop/recipe.toml new file mode 100644 index 00000000..ac500c8b --- /dev/null +++ b/recipes/wip/battop/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/svartalf/rust-battop/archive/refs/tags/v0.2.4.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/betterspades/recipe.toml b/recipes/wip/betterspades/recipe.toml new file mode 100644 index 00000000..2a384ba3 --- /dev/null +++ b/recipes/wip/betterspades/recipe.toml @@ -0,0 +1,29 @@ +#TODO probably missing dependencies, see https://github.com/xtreme8000/BetterSpades#build-requirements +#TODO probably wrong script, see https://github.com/xtreme8000/BetterSpades#linux +[source] +tar = "https://github.com/xtreme8000/BetterSpades/archive/refs/tags/v0.1.5.tar.gz" +[build] +template = "custom" +dependencies = [ + "glfw3", + "openal", + "libenet", + "libdeflate", + "glew", + "mesa", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/bevy-engine/recipe.toml b/recipes/wip/bevy-engine/recipe.toml new file mode 100644 index 00000000..13fcbe6c --- /dev/null +++ b/recipes/wip/bevy-engine/recipe.toml @@ -0,0 +1,16 @@ +#TODO Not compiled or tested yet +[source] +tar = "https://github.com/bevyengine/bevy/archive/refs/tags/v0.11.1.tar.gz" +[build] +template = "custom" +script = """ +"${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --package "${hello_world}" \ + --release + --no-default-features + mkdir -pv "${COOKBOOK_STAGE}/bin" + cp -v \ + "target/${TARGET}/release/${hello_world}" \ + "${COOKBOOK_STAGE}/bin/${bevy-engine}_${hello_world}" +""" diff --git a/recipes/wip/binocle/recipe.toml b/recipes/wip/binocle/recipe.toml new file mode 100644 index 00000000..91506324 --- /dev/null +++ b/recipes/wip/binocle/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/sharkdp/binocle/archive/refs/tags/v0.3.1.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/binserve/recipe.toml b/recipes/wip/binserve/recipe.toml new file mode 100644 index 00000000..cefbf3b2 --- /dev/null +++ b/recipes/wip/binserve/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested (after a patch on the ring crate) +[source] +git = "https://github.com/mufeedvh/binserve" +[build] +template = "cargo" diff --git a/recipes/wip/biome/recipe.toml b/recipes/wip/biome/recipe.toml new file mode 100644 index 00000000..b9373367 --- /dev/null +++ b/recipes/wip/biome/recipe.toml @@ -0,0 +1,8 @@ +#TODO probably wrong script, lacking build instructions +[source] +tar = "https://github.com/biomejs/biome/archive/refs/tags/cli/v1.4.0.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages biome_cli +""" diff --git a/recipes/wip/birdy/recipe.toml b/recipes/wip/birdy/recipe.toml new file mode 100644 index 00000000..5e72cb6f --- /dev/null +++ b/recipes/wip/birdy/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/kakoc/birdy" +[build] +template = "cargo" diff --git a/recipes/wip/bison/recipe.toml b/recipes/wip/bison/recipe.toml new file mode 100644 index 00000000..bacdc687 --- /dev/null +++ b/recipes/wip/bison/recipe.toml @@ -0,0 +1,5 @@ +#TODO Compilation error +[source] +tar = "https://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/bita/recipe.toml b/recipes/wip/bita/recipe.toml new file mode 100644 index 00000000..c34af8a7 --- /dev/null +++ b/recipes/wip/bita/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/oll3/bita/archive/refs/tags/v0.11.0.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo --features rustls-tls +""" diff --git a/recipes/wip/blender-lts/recipe.toml b/recipes/wip/blender-lts/recipe.toml new file mode 100644 index 00000000..02a84dcf --- /dev/null +++ b/recipes/wip/blender-lts/recipe.toml @@ -0,0 +1,42 @@ +#TODO probably wrong script, see https://wiki.blender.org/wiki/Building_Blender/Linux/Generic_Distro +#TODO probably missing dependencies +#TODO customization - https://wiki.blender.org/wiki/Building_Blender/Options +[source] +tar = "https://download.blender.org/source/blender-3.6.5.tar.xz" +[build] +template = "custom" +dependencies = [ + "dbus", + "libdecor", + "libjpeg", + "libpng", + "freetype2", + "fontconfig", + "zstd", + "bzip2", + "xz", + "sdl2", + "libepoxy", + "shaderc", + "libxml2", + "libharu", + "mesa", + "libx11", + "libwayland", + "libxkbcommon", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/blender/recipe.toml b/recipes/wip/blender/recipe.toml new file mode 100644 index 00000000..c2384c2e --- /dev/null +++ b/recipes/wip/blender/recipe.toml @@ -0,0 +1,42 @@ +#TODO probably wrong script, see https://wiki.blender.org/wiki/Building_Blender/Linux/Generic_Distro +#TODO probably missing dependencies +#TODO customization - https://wiki.blender.org/wiki/Building_Blender/Options +[source] +tar = "https://download.blender.org/source/blender-4.0.0.tar.xz" +[build] +template = "custom" +dependencies = [ + "dbus", + "libdecor", + "libjpeg", + "libpng", + "freetype2", + "fontconfig", + "zstd", + "bzip2", + "xz", + "sdl2", + "libepoxy", + "shaderc", + "libxml2", + "libharu", + "mesa", + "libx11", + "libwayland", + "libxkbcommon", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/blogbench/recipe.toml b/recipes/wip/blogbench/recipe.toml new file mode 100644 index 00000000..b6c2aff2 --- /dev/null +++ b/recipes/wip/blogbench/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for building, see https://github.com/jedisct1/Blogbench#readme +[source] +tar = "https://github.com/jedisct1/Blogbench/releases/download/1.2/blogbench-1.2.tar.bz2" +[build] +template = "custom" diff --git a/recipes/wip/bluez/recipe.toml b/recipes/wip/bluez/recipe.toml new file mode 100644 index 00000000..d4a052a7 --- /dev/null +++ b/recipes/wip/bluez/recipe.toml @@ -0,0 +1,6 @@ +#TODO require Bluetooth drivers +#TODO build instructions - https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/INSTALL +[source] +tar = "http://www.kernel.org/pub/linux/bluetooth/bluez-5.66.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/boost/recipe.toml b/recipes/wip/boost/recipe.toml new file mode 100644 index 00000000..405fd6db --- /dev/null +++ b/recipes/wip/boost/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for building, see https://github.com/boostorg/wiki/wiki/Getting-Started%3A-Overview#installing-boost +[source] +tar = "https://boostorg.jfrog.io/artifactory/main/release/1.83.0/source/boost_1_83_0.tar.bz2" +[build] +template = "custom" diff --git a/recipes/wip/bottles/recipe.toml b/recipes/wip/bottles/recipe.toml new file mode 100644 index 00000000..746e66ee --- /dev/null +++ b/recipes/wip/bottles/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing Meson build instructions +[source] +tar = "https://github.com/bottlesdevs/Bottles/archive/refs/tags/51.9.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/bottom/recipe.toml b/recipes/wip/bottom/recipe.toml new file mode 100644 index 00000000..3951313e --- /dev/null +++ b/recipes/wip/bottom/recipe.toml @@ -0,0 +1,5 @@ +#TODO starship-battery crate compilation error +[source] +tar = "https://github.com/ClementTsang/bottom/archive/refs/tags/0.9.1.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/broot/recipe.toml b/recipes/wip/broot/recipe.toml new file mode 100644 index 00000000..a8d18595 --- /dev/null +++ b/recipes/wip/broot/recipe.toml @@ -0,0 +1,5 @@ +#TODO nix crate compilation error +[source] +tar = "https://github.com/Canop/broot/archive/refs/tags/v1.22.1.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/bullet-physics/recipe.toml b/recipes/wip/bullet-physics/recipe.toml new file mode 100644 index 00000000..f2f39442 --- /dev/null +++ b/recipes/wip/bullet-physics/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Premake or CMake, see https://github.com/bulletphysics/bullet3#build-instructions-for-bullet-using-premake-you-can-also-use-cmake-instead +[source] +tar = "https://github.com/bulletphysics/bullet3/archive/refs/tags/3.25.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/c-ray/recipe.toml b/recipes/wip/c-ray/recipe.toml new file mode 100644 index 00000000..b89e7a02 --- /dev/null +++ b/recipes/wip/c-ray/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for "make", see https://github.com/vkoskiv/c-ray#installation +[source] +git = "https://github.com/vkoskiv/c-ray" +[build] +template = "custom" diff --git a/recipes/wip/c2rust/recipe.toml b/recipes/wip/c2rust/recipe.toml new file mode 100644 index 00000000..b651bf25 --- /dev/null +++ b/recipes/wip/c2rust/recipe.toml @@ -0,0 +1,12 @@ +#TODO Can't find LLVM +[source] +tar = "https://github.com/immunant/c2rust/archive/refs/tags/v0.17.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "openssl1", + "llvm", +] +script = """ +cookbook_cargo_packages c2rust +""" diff --git a/recipes/wip/cackle/recipe.toml b/recipes/wip/cackle/recipe.toml new file mode 100644 index 00000000..1d387def --- /dev/null +++ b/recipes/wip/cackle/recipe.toml @@ -0,0 +1,10 @@ +#TODO camino crate error +#TODO Probably needs to be ported to Redox +[source] +git = "https://github.com/davidlattimore/cackle" +[build] +template = "cargo" +#script = """ +#cookbook_cargo --features unsupported-os +#""" +# Uncomment the above lines if the Cargo template doesn't work. \ No newline at end of file diff --git a/recipes/wip/cairomm/recipe.toml b/recipes/wip/cairomm/recipe.toml new file mode 100644 index 00000000..e1b46845 --- /dev/null +++ b/recipes/wip/cairomm/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, see https://cgit.freedesktop.org/cairo/tree/INSTALL +[source] +tar = "https://www.cairographics.org/releases/cairomm-1.16.2.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/call-of-ferris/recipe.toml b/recipes/wip/call-of-ferris/recipe.toml new file mode 100644 index 00000000..9c1e2d5c --- /dev/null +++ b/recipes/wip/call-of-ferris/recipe.toml @@ -0,0 +1,5 @@ +#TODO require a update on the redox_syscall crate (after a update on the libc crate) +[source] +git = "https://github.com/Andy-Python-Programmer/CallOfFerris" +[build] +template = "cargo" diff --git a/recipes/wip/capnproto/recipe.toml b/recipes/wip/capnproto/recipe.toml new file mode 100644 index 00000000..6c51dbeb --- /dev/null +++ b/recipes/wip/capnproto/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://capnproto.org/capnproto-c++-1.0.1.1.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/carbonyl/recipe.toml b/recipes/wip/carbonyl/recipe.toml new file mode 100644 index 00000000..a2936aa3 --- /dev/null +++ b/recipes/wip/carbonyl/recipe.toml @@ -0,0 +1,10 @@ +#TODO require Chromium building +[source] +tar = "https://github.com/fathyb/carbonyl/archive/refs/tags/v0.0.3.tar.gz" +[build] +template = "cargo" +dependencies = [ + "nss", + "fontconfig", + "expat", +] diff --git a/recipes/wip/cargo-about/recipe.toml b/recipes/wip/cargo-about/recipe.toml new file mode 100644 index 00000000..b1bae67f --- /dev/null +++ b/recipes/wip/cargo-about/recipe.toml @@ -0,0 +1,5 @@ +#TODO needs to update the tokio version +[source] +tar = "https://github.com/EmbarkStudios/cargo-about/archive/refs/tags/0.5.6.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/cargo-audit/recipe.toml b/recipes/wip/cargo-audit/recipe.toml new file mode 100644 index 00000000..d140bfcf --- /dev/null +++ b/recipes/wip/cargo-audit/recipe.toml @@ -0,0 +1,14 @@ +#TODO Weird error with libssh2-sys crate +[source] +tar = "https://github.com/rustsec/rustsec/archive/refs/tags/cargo-audit/v0.17.6.tar.gz" +[build] +template = "custom" +dependencies = [ + "openssl1", + "libssh2", +] +script = """ +export OPENSSL_DIR="${COOKBOOK_SYSROOT}" +export OPENSSL_STATIC="true" +cookbook_cargo_packages cargo-audit +""" diff --git a/recipes/wip/cargo-auditable/recipe.toml b/recipes/wip/cargo-auditable/recipe.toml new file mode 100644 index 00000000..69190aee --- /dev/null +++ b/recipes/wip/cargo-auditable/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/rust-secure-code/cargo-auditable" +[build] +template = "cargo" diff --git a/recipes/wip/cargo-cache/recipe.toml b/recipes/wip/cargo-cache/recipe.toml new file mode 100644 index 00000000..ed612b3d --- /dev/null +++ b/recipes/wip/cargo-cache/recipe.toml @@ -0,0 +1,5 @@ +#TODO camino crate compilation error +[source] +tar = "https://github.com/matthiaskrgr/cargo-cache/archive/refs/tags/0.8.3.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/cargo-crev/recipe.toml b/recipes/wip/cargo-crev/recipe.toml new file mode 100644 index 00000000..5baf0a56 --- /dev/null +++ b/recipes/wip/cargo-crev/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/crev-dev/cargo-crev/archive/refs/tags/v0.25.4.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/cargo-deny/recipe.toml b/recipes/wip/cargo-deny/recipe.toml new file mode 100644 index 00000000..bcba29a2 --- /dev/null +++ b/recipes/wip/cargo-deny/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/EmbarkStudios/cargo-deny/archive/refs/tags/0.14.3.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/cargo-diet/recipe.toml b/recipes/wip/cargo-diet/recipe.toml new file mode 100644 index 00000000..c17dc013 --- /dev/null +++ b/recipes/wip/cargo-diet/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/the-lean-crate/cargo-diet/archive/refs/tags/v1.2.7.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/cargo-fuzz/recipe.toml b/recipes/wip/cargo-fuzz/recipe.toml new file mode 100644 index 00000000..57600ccf --- /dev/null +++ b/recipes/wip/cargo-fuzz/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/rust-fuzz/cargo-fuzz/archive/refs/tags/0.11.2.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/cargo-geiger/recipe.toml b/recipes/wip/cargo-geiger/recipe.toml new file mode 100644 index 00000000..85965d27 --- /dev/null +++ b/recipes/wip/cargo-geiger/recipe.toml @@ -0,0 +1,13 @@ +#TODO camino crate compilation error +[source] +tar = "https://github.com/rust-secure-code/cargo-geiger/archive/refs/tags/cargo-geiger-0.11.6.tar.gz" +[build] +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +export OPENSSL_DIR="${COOKBOOK_SYSROOT}" +export OPENSSL_STATIC="true" +cookbook_cargo_packages cargo-geiger +""" diff --git a/recipes/wip/cargo-generate/recipe.toml b/recipes/wip/cargo-generate/recipe.toml new file mode 100644 index 00000000..611d30a8 --- /dev/null +++ b/recipes/wip/cargo-generate/recipe.toml @@ -0,0 +1,8 @@ +#TODO fs_at crate error +[source] +tar = "https://github.com/cargo-generate/cargo-generate/archive/refs/tags/v0.18.3.tar.gz" +[build] +template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/cargo-info/recipe.toml b/recipes/wip/cargo-info/recipe.toml new file mode 100644 index 00000000..51728369 --- /dev/null +++ b/recipes/wip/cargo-info/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://gitlab.com/imp/cargo-info/-/archive/0.7.6/cargo-info-0.7.6.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/cargo-msrv/recipe.toml b/recipes/wip/cargo-msrv/recipe.toml new file mode 100644 index 00000000..e0001a19 --- /dev/null +++ b/recipes/wip/cargo-msrv/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/foresterre/cargo-msrv/archive/refs/tags/v0.15.1.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/cargo-mutants/recipe.toml b/recipes/wip/cargo-mutants/recipe.toml new file mode 100644 index 00000000..d3241010 --- /dev/null +++ b/recipes/wip/cargo-mutants/recipe.toml @@ -0,0 +1,5 @@ +#TODO camino crate error +[source] +tar = "https://github.com/sourcefrog/cargo-mutants/archive/refs/tags/cargo-mutants-1.2.3.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/cargo-nextest/recipe.toml b/recipes/wip/cargo-nextest/recipe.toml new file mode 100644 index 00000000..c312502e --- /dev/null +++ b/recipes/wip/cargo-nextest/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/nextest-rs/nextest" +[build] +template = "custom" +script = """ +cookbook_cargo_packages cargo-nextest +""" diff --git a/recipes/wip/cargo-remark/recipe.toml b/recipes/wip/cargo-remark/recipe.toml new file mode 100644 index 00000000..4439c6c8 --- /dev/null +++ b/recipes/wip/cargo-remark/recipe.toml @@ -0,0 +1,8 @@ +#TODO camino crate error +[source] +git = "https://github.com/kobzol/cargo-remark" +[build] +template = "custom" +script = """ +cookbook_cargo --no-default-features +""" diff --git a/recipes/wip/cargo-scaffold/recipe.toml b/recipes/wip/cargo-scaffold/recipe.toml new file mode 100644 index 00000000..b93d37c9 --- /dev/null +++ b/recipes/wip/cargo-scaffold/recipe.toml @@ -0,0 +1,13 @@ +#TODO openssl-sys crate error +[source] +git = "https://github.com/iomentum/cargo-scaffold" +[build] +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +export OPENSSL_DIR="${COOKBOOK_SYSROOT}" +export OPENSSL_STATIC="true" +cookbook_cargo +""" diff --git a/recipes/wip/cargo-show-asm/recipe.toml b/recipes/wip/cargo-show-asm/recipe.toml new file mode 100644 index 00000000..d66b2f69 --- /dev/null +++ b/recipes/wip/cargo-show-asm/recipe.toml @@ -0,0 +1,5 @@ +#TODO camino crate error +[source] +git = "https://github.com/pacak/cargo-show-asm" +[build] +template = "cargo" diff --git a/recipes/wip/cargo-smart-release/recipe.toml b/recipes/wip/cargo-smart-release/recipe.toml new file mode 100644 index 00000000..8f5faae3 --- /dev/null +++ b/recipes/wip/cargo-smart-release/recipe.toml @@ -0,0 +1,8 @@ +#TODO camino crate error +[source] +git = "https://github.com/Byron/cargo-smart-release" +[build] +template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/cargo-sweep/recipe.toml b/recipes/wip/cargo-sweep/recipe.toml new file mode 100644 index 00000000..c6ef1234 --- /dev/null +++ b/recipes/wip/cargo-sweep/recipe.toml @@ -0,0 +1,5 @@ +#TODO needs to update the redox_syscall version +[source] +git = "https://github.com/holmgr/cargo-sweep" +[build] +template = "cargo" diff --git a/recipes/wip/cargo-tarpaulin/recipe.toml b/recipes/wip/cargo-tarpaulin/recipe.toml new file mode 100644 index 00000000..a1e661d5 --- /dev/null +++ b/recipes/wip/cargo-tarpaulin/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/xd009642/tarpaulin/archive/refs/tags/0.27.1.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/cargo-ui/recipe.toml b/recipes/wip/cargo-ui/recipe.toml new file mode 100644 index 00000000..a2201de4 --- /dev/null +++ b/recipes/wip/cargo-ui/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/slint-ui/cargo-ui/archive/refs/tags/v0.3.3.tar.gz" +[build] +template = "cargo" +dependencies = [ + "fontconfig", +] diff --git a/recipes/wip/cargo-vet/recipe.toml b/recipes/wip/cargo-vet/recipe.toml new file mode 100644 index 00000000..fdfc4ee8 --- /dev/null +++ b/recipes/wip/cargo-vet/recipe.toml @@ -0,0 +1,5 @@ +#TODO camino crate error (after cargo update and a patch on the ring crate) +[source] +git = "https://github.com/mozilla/cargo-vet" +[build] +template = "cargo" diff --git a/recipes/wip/cargo-watch/recipe.toml b/recipes/wip/cargo-watch/recipe.toml new file mode 100644 index 00000000..58608f2f --- /dev/null +++ b/recipes/wip/cargo-watch/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/watchexec/cargo-watch/archive/refs/tags/v8.4.1.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/cargo-zigbuild/recipe.toml b/recipes/wip/cargo-zigbuild/recipe.toml new file mode 100644 index 00000000..d98b1a85 --- /dev/null +++ b/recipes/wip/cargo-zigbuild/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested yet +[source] +tar = "https://github.com/rust-cross/cargo-zigbuild/archive/refs/tags/v0.16.12.tar.gz" +[build] +template = "cargo" +dependencies = [ + "zig" +] diff --git a/recipes/wip/cava/recipe.toml b/recipes/wip/cava/recipe.toml new file mode 100644 index 00000000..5caa78cd --- /dev/null +++ b/recipes/wip/cava/recipe.toml @@ -0,0 +1,9 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/karlstav/cava/archive/refs/tags/0.9.1.tar.gz" +[build] +template = "configure" +dependencies = [ + "ncurses", + "fftw", +] diff --git a/recipes/wip/cb/recipe.toml b/recipes/wip/cb/recipe.toml new file mode 100644 index 00000000..bf68a3b2 --- /dev/null +++ b/recipes/wip/cb/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for "make", see https://github.com/yaa110/cb#build-manually +#TODO probably wrong dependency +[source] +git = "https://github.com/yaa110/cb" +[build] +template = "custom" +dependencies = [ + "libxcb", +] diff --git a/recipes/wip/cbindgen/recipe.toml b/recipes/wip/cbindgen/recipe.toml new file mode 100644 index 00000000..48edb310 --- /dev/null +++ b/recipes/wip/cbindgen/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/mozilla/cbindgen/archive/refs/tags/0.26.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/ccs-tools/recipe.toml b/recipes/wip/ccs-tools/recipe.toml new file mode 100644 index 00000000..cc683ce5 --- /dev/null +++ b/recipes/wip/ccs-tools/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for "make", see https://github.com/UIUC-PPL/ccs_tools#readme +[source] +git = "https://github.com/UIUC-PPL/ccs_tools" +[build] +template = "custom" diff --git a/recipes/wip/celeste/recipe.toml b/recipes/wip/celeste/recipe.toml new file mode 100644 index 00000000..7436dbdd --- /dev/null +++ b/recipes/wip/celeste/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for "just" and require Go, see https://github.com/hwittenborn/celeste/blob/develop/BUILDING.md +[source] +tar = "https://github.com/hwittenborn/celeste/archive/refs/tags/v0.8.1.tar.gz" +[build] +template = "custom" +dependencies = [ + "gtk4", + "libadwaita", +] diff --git a/recipes/wip/chafa/recipe.toml b/recipes/wip/chafa/recipe.toml new file mode 100644 index 00000000..01d73967 --- /dev/null +++ b/recipes/wip/chafa/recipe.toml @@ -0,0 +1,11 @@ +#TODO can't find FreeType dependency +[source] +tar = "https://hpjansson.org/chafa/releases/chafa-1.12.4.tar.xz" +[build] +template = "configure" +dependencies = [ + "glib", + "imagemagick", + "pcre", + "freetype2", +] diff --git a/recipes/wip/charm++/recipe.toml b/recipes/wip/charm++/recipe.toml new file mode 100644 index 00000000..70f77ee7 --- /dev/null +++ b/recipes/wip/charm++/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for cross-compilation, see https://charm.readthedocs.io/en/latest/charm++/manual.html#installing-charm +[source] +tar = "http://charm.cs.illinois.edu/distrib/charm-7.0.0.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/chars/recipe.toml b/recipes/wip/chars/recipe.toml new file mode 100644 index 00000000..8b5483d6 --- /dev/null +++ b/recipes/wip/chars/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/boinkor-net/chars" +[build] +template = "cargo" diff --git a/recipes/wip/checkpwn/recipe.toml b/recipes/wip/checkpwn/recipe.toml new file mode 100644 index 00000000..9a3c5705 --- /dev/null +++ b/recipes/wip/checkpwn/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested (after patched ring crate) +[source] +git = "https://github.com/brycx/checkpwn" +[build] +template = "cargo" diff --git a/recipes/wip/chocolate-doom/recipe.toml b/recipes/wip/chocolate-doom/recipe.toml new file mode 100644 index 00000000..d718a392 --- /dev/null +++ b/recipes/wip/chocolate-doom/recipe.toml @@ -0,0 +1,10 @@ +#TODO Not compiled or tested yet +[source] +tar = "https://www.chocolate-doom.org/downloads/3.0.1/chocolate-doom-3.0.1.tar.gz" +[build] +template = "configure" +dependencies = [ + "sdl2", + "sdl2_mixer", + "sdl2_net", +] diff --git a/recipes/wip/choose/recipe.toml b/recipes/wip/choose/recipe.toml new file mode 100644 index 00000000..e9b1b8f2 --- /dev/null +++ b/recipes/wip/choose/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled after cargo update but not tested +[source] +tar = "https://github.com/theryangeary/choose/archive/refs/tags/v1.3.4.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/chromium/recipe.toml b/recipes/wip/chromium/recipe.toml new file mode 100644 index 00000000..ee11fea8 --- /dev/null +++ b/recipes/wip/chromium/recipe.toml @@ -0,0 +1,34 @@ +#TODO missing script for building, see https://chromium.googlesource.com/chromium/src/+/main/docs/linux/build_instructions.md +#TODO probably missing dependencies +#TODO require Wayland +[source] +tar = "https://commondatastorage.googleapis.com/chromium-browser-official/chromium-119.0.6045.123.tar.xz" +[build] +template = "custom" +dependencies = [ + "gtk3", + "nss", + "xdg-utils", + "libgcrypt", + "dbus", + "libva", + "libffi", + "fontconfig", + "libjpeg", + "libflac", + "libxml2", + "ffmpeg6", + "libwebp", + "opus", + "harfbuzz", + "libpng", + "freetype2", + "bzip2", + "expat", + "glib", + "cairo", + "atk", + "libcap", + "pango", + "java21", +] diff --git a/recipes/wip/chuck/recipe.toml b/recipes/wip/chuck/recipe.toml new file mode 100644 index 00000000..630ae1d6 --- /dev/null +++ b/recipes/wip/chuck/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for "make", see https://github.com/ccrma/chuck#linux +[source] +tar = "https://chuck.cs.princeton.edu/release/files/chuck-1.5.1.3.tgz" +[build] +template = "custom" +dependencies = [ + "pulseaudio", + "libsndfile", +] diff --git a/recipes/wip/cicada/recipe.toml b/recipes/wip/cicada/recipe.toml new file mode 100644 index 00000000..97de79ae --- /dev/null +++ b/recipes/wip/cicada/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for "make", see https://github.com/mitnk/cicada/blob/master/docs/install.md#option-c-via-source +[source] +tar = "https://github.com/mitnk/cicada/archive/refs/tags/v0.9.38.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/clamav/recipe.toml b/recipes/wip/clamav/recipe.toml new file mode 100644 index 00000000..82aed1b6 --- /dev/null +++ b/recipes/wip/clamav/recipe.toml @@ -0,0 +1,31 @@ +#TODO probably wrong script, see https://docs.clamav.net/manual/Installing/Installing-from-source-Unix.html +#TODO missing Sendmail Mail Filter API (Milter) +[source] +tar = "https://www.clamav.net/downloads/production/clamav-1.2.1.tar.gz" +[build] +template = "custom" +dependencies = [ + "curl", + "ncurses", + "bzip2", + "json-c", + "pcre", + "openssl1", + "libxml2", + "zlib", +] +script = """ + COOKBOOK_CONFIGURE="cmake" + COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/clickhouse/recipe.toml b/recipes/wip/clickhouse/recipe.toml new file mode 100644 index 00000000..4e785986 --- /dev/null +++ b/recipes/wip/clickhouse/recipe.toml @@ -0,0 +1,11 @@ +#TODO missing script for Cmake, see https://clickhouse.com/docs/en/development/build#how-to-build-clickhouse-on-any-linux +#TODO probably disable some submodules to use our recipes +[source] +tar = "https://github.com/ClickHouse/ClickHouse" +[build] +template = "custom" +dependencies = [ + "curl", + "openssl1", + "xz", +] diff --git a/recipes/wip/clipshare-desktop/recipe.toml b/recipes/wip/clipshare-desktop/recipe.toml new file mode 100644 index 00000000..482f745d --- /dev/null +++ b/recipes/wip/clipshare-desktop/recipe.toml @@ -0,0 +1,11 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/RastislavKish/clipshare/archive/refs/tags/v0.1.2.tar.gz" +[build] +template = "custom" +dependencies = [ + "xdotool", +] +script = """ +cookbook_cargo_packages desktop_client +""" diff --git a/recipes/wip/clipshare-server/recipe.toml b/recipes/wip/clipshare-server/recipe.toml new file mode 100644 index 00000000..5a755d33 --- /dev/null +++ b/recipes/wip/clipshare-server/recipe.toml @@ -0,0 +1,11 @@ +#TODO probably wrong script, see https://github.com/RastislavKish/clipshare#building +[source] +tar = "https://github.com/RastislavKish/clipshare/archive/refs/tags/v0.1.2.tar.gz" +[build] +template = "custom" +dependencies = [ + "xdotool", +] +script = """ +cookbook_cargo_packages server +""" diff --git a/recipes/wip/clog-cli/recipe.toml b/recipes/wip/clog-cli/recipe.toml new file mode 100644 index 00000000..961c198b --- /dev/null +++ b/recipes/wip/clog-cli/recipe.toml @@ -0,0 +1,5 @@ +#TODO Needs to patch the rustc-serialize crate and update the redox_syscall version +[source] +tar = "https://github.com/clog-tool/clog-cli/archive/refs/tags/v0.9.3.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/cmus/recipe.toml b/recipes/wip/cmus/recipe.toml new file mode 100644 index 00000000..581350c3 --- /dev/null +++ b/recipes/wip/cmus/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested yet +[source] +tar = "https://github.com/cmus/cmus/archive/refs/tags/v2.10.0.tar.gz" +[build] +template = "configure" +dependencies = [ + "ncurses", +] diff --git a/recipes/wip/cobalt/recipe.toml b/recipes/wip/cobalt/recipe.toml new file mode 100644 index 00000000..fcabfc16 --- /dev/null +++ b/recipes/wip/cobalt/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/cobalt-org/cobalt.rs/archive/refs/tags/v0.19.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/cockroachdb/recipe.toml b/recipes/wip/cockroachdb/recipe.toml new file mode 100644 index 00000000..6d548c7d --- /dev/null +++ b/recipes/wip/cockroachdb/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for Bazel, see https://cockroachlabs.atlassian.net/wiki/spaces/CRDB/pages/181338446/Getting+and+building+CockroachDB+from+source +[source] +git = "https://github.com/cockroachdb/cockroach" +rev = "0ad77cfcc5a81b96dd2f27ed608536388b680537" +[build] +template = "custom" diff --git a/recipes/wip/codevis/recipe.toml b/recipes/wip/codevis/recipe.toml new file mode 100644 index 00000000..f6172494 --- /dev/null +++ b/recipes/wip/codevis/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/sloganking/codevis/archive/refs/tags/v0.8.4.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/conky/recipe.toml b/recipes/wip/conky/recipe.toml new file mode 100644 index 00000000..5e309788 --- /dev/null +++ b/recipes/wip/conky/recipe.toml @@ -0,0 +1,26 @@ +#TODO probably wrong script, see https://conky.cc/documents/compiling +[source] +tar = "https://github.com/brndnmtthws/conky/archive/refs/tags/v1.19.6.tar.gz" +[build] +template = "custom" +dependencies = [ + "imlib2", + "ncurses", + "libxml2", + "curl", +] +script = """ + COOKBOOK_CONFIGURE="cmake" + COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/cosmic-epoch/recipe.toml b/recipes/wip/cosmic-epoch/recipe.toml new file mode 100644 index 00000000..6fbc5413 --- /dev/null +++ b/recipes/wip/cosmic-epoch/recipe.toml @@ -0,0 +1,20 @@ +#TODO missing script for "just", see https://github.com/pop-os/cosmic-epoch#testing +#TODO Dependencies will change after alpha? +[source] +git = "https://github.com/pop-os/cosmic-epoch" +[build] +template = "custom" +dependencies = [ + "mesa", + "freetype2", + "fontconfig", + "expat", + "dbus", + "gtk4", + "seatd", + "eudev3", + "libinput", + "libwayland", + "libxkbcommon", + "pipewire", +] diff --git a/recipes/wip/counts/recipe.toml b/recipes/wip/counts/recipe.toml new file mode 100644 index 00000000..d8a9c58f --- /dev/null +++ b/recipes/wip/counts/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled after cargo update but not tested +[source] +tar = "https://github.com/nnethercote/counts/archive/refs/tags/0.2.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/cppunit/recipe.toml b/recipes/wip/cppunit/recipe.toml new file mode 100644 index 00000000..047d081c --- /dev/null +++ b/recipes/wip/cppunit/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +tar = "http://dev-www.libreoffice.org/src/cppunit-1.15.1.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/cpuminer-opt/recipe.toml b/recipes/wip/cpuminer-opt/recipe.toml new file mode 100644 index 00000000..9cb93817 --- /dev/null +++ b/recipes/wip/cpuminer-opt/recipe.toml @@ -0,0 +1,11 @@ +#TODO maybe wrong template, see https://github.com/JayDDee/cpuminer-opt/wiki/Compiling-from-source +[source] +tar = "https://github.com/JayDDee/cpuminer-opt/archive/refs/tags/v23.13.tar.gz" +[build] +template = "configure" +dependencies = [ + "curl", + "jansson", + "libgmp", + "zlib", +] diff --git a/recipes/wip/criner/recipe.toml b/recipes/wip/criner/recipe.toml new file mode 100644 index 00000000..29fec40f --- /dev/null +++ b/recipes/wip/criner/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/the-lean-crate/criner/archive/refs/tags/v0.3.1.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages criner +""" diff --git a/recipes/wip/crispy-doom/recipe.toml b/recipes/wip/crispy-doom/recipe.toml new file mode 100644 index 00000000..5a480426 --- /dev/null +++ b/recipes/wip/crispy-doom/recipe.toml @@ -0,0 +1,10 @@ +#TODO Not compiled/tested yet +[source] +tar = "https://github.com/fabiangreffrath/crispy-doom/archive/refs/tags/crispy-doom-6.0.tar.gz" +[build] +template = "configure" +dependencies = [ + "sdl2", + "sdl2_mixer", + "sdl2_net", +] diff --git a/recipes/wip/crosstool-ng/recipe.toml b/recipes/wip/crosstool-ng/recipe.toml new file mode 100644 index 00000000..3c760dd5 --- /dev/null +++ b/recipes/wip/crosstool-ng/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.26.0.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/cuberite/recipe.toml b/recipes/wip/cuberite/recipe.toml new file mode 100644 index 00000000..3a0e97b7 --- /dev/null +++ b/recipes/wip/cuberite/recipe.toml @@ -0,0 +1,20 @@ +#TODO probably wrong script, see https://github.com/cuberite/cuberite/blob/master/COMPILING.md#building-1 +[source] +git = "https://github.com/cuberite/cuberite" +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/cute/recipe.toml b/recipes/wip/cute/recipe.toml new file mode 100644 index 00000000..2df51eac --- /dev/null +++ b/recipes/wip/cute/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/PThorpe92/CuTE" +[build] +template = "cargo" diff --git a/recipes/wip/czkawka/recipe.toml b/recipes/wip/czkawka/recipe.toml new file mode 100644 index 00000000..5fd3ba10 --- /dev/null +++ b/recipes/wip/czkawka/recipe.toml @@ -0,0 +1,8 @@ +#TODO Compiled but not tested yet +[source] +tar = "https://github.com/qarmin/czkawka/archive/refs/tags/6.0.0.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages czkawka_cli +""" diff --git a/recipes/wip/dacapo-benchmarks/recipe.toml b/recipes/wip/dacapo-benchmarks/recipe.toml new file mode 100644 index 00000000..198b5321 --- /dev/null +++ b/recipes/wip/dacapo-benchmarks/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for "ant", see https://github.com/dacapobench/dacapobench#building +[source] +tar = "https://github.com/dacapobench/dacapobench/archive/refs/tags/v23.11-chopin.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/daktilo/recipe.toml b/recipes/wip/daktilo/recipe.toml new file mode 100644 index 00000000..8b849f61 --- /dev/null +++ b/recipes/wip/daktilo/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/orhun/daktilo/archive/refs/tags/v0.1.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/darling/recipe.toml b/recipes/wip/darling/recipe.toml new file mode 100644 index 00000000..1fae1b1b --- /dev/null +++ b/recipes/wip/darling/recipe.toml @@ -0,0 +1,37 @@ +#TODO probably wrong script, see https://docs.darlinghq.org/build-instructions.html#building-and-installing +#TODO require Git LFS installed on host +[source] +git = "https://github.com/darlinghq/darling" +[build] +template = "custom" +dependencies = [ + "libfuse3", + "libevdev", + "cairo", + "mesa", + "libtiff", + "freetype", + "libxml2", + "fontconfig", + "libbsd", + "libgif", + "ffmpeg6", + "openssl1", + "libxkbfile", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On + -DTARGET_i386=OFF +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/dav1d/recipe.toml b/recipes/wip/dav1d/recipe.toml new file mode 100644 index 00000000..7902f573 --- /dev/null +++ b/recipes/wip/dav1d/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, see https://code.videolan.org/videolan/dav1d#compile +[source] +tar = "https://code.videolan.org/videolan/dav1d/-/archive/1.3.0/dav1d-1.3.0.tar.bz2" +[build] +template = "custom" diff --git a/recipes/wip/dbus/recipe.toml b/recipes/wip/dbus/recipe.toml new file mode 100644 index 00000000..42464ac6 --- /dev/null +++ b/recipes/wip/dbus/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing Unix sockets support? +[source] +tar = "https://dbus.freedesktop.org/releases/dbus/dbus-1.14.10.tar.xz" +[build] +template = "configure" +dependencies = [ + "expat", +] diff --git a/recipes/wip/dcss/recipe.toml b/recipes/wip/dcss/recipe.toml new file mode 100644 index 00000000..4d38be39 --- /dev/null +++ b/recipes/wip/dcss/recipe.toml @@ -0,0 +1,15 @@ +#TODO missing script for "make", see https://github.com/crawl/crawl/blob/master/crawl-ref/INSTALL.md#compiling +#TODO require DejaVu fonts +[source] +tar = "https://github.com/crawl/crawl/releases/download/0.30.0/stone_soup-0.30.0.tar.xz" +[build] +template = "custom" +dependencies = [ + "sdl2", + "sdl2-image", + "sqlite3", + "ncurses", + "pcre", + "zlib", + "libpng", +] diff --git a/recipes/wip/delta/recipe.toml b/recipes/wip/delta/recipe.toml new file mode 100644 index 00000000..de37cf6a --- /dev/null +++ b/recipes/wip/delta/recipe.toml @@ -0,0 +1,11 @@ +#TODO Not compiled or tested yet +[source] +tar = "https://github.com/dandavison/delta/archive/refs/tags/0.15.1.tar.gz" +[build] +template = "custom" +dependencies = [ + "less", +] +script = """ +cookbook_cargo_packages git-delta +""" diff --git a/recipes/wip/deno/recipe.toml b/recipes/wip/deno/recipe.toml new file mode 100644 index 00000000..a29dbde2 --- /dev/null +++ b/recipes/wip/deno/recipe.toml @@ -0,0 +1,9 @@ +#TODO v8 crate error (after cargo update -p tokio) +#TODO Add static objects for the Redox target (doesn't exist on librusty_v8 upstream) +[source] +tar = "https://github.com/denoland/deno/releases/download/v1.36.1/deno_src.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages deno +""" diff --git a/recipes/wip/deps-rs/recipe.toml b/recipes/wip/deps-rs/recipe.toml new file mode 100644 index 00000000..d6408ba8 --- /dev/null +++ b/recipes/wip/deps-rs/recipe.toml @@ -0,0 +1,8 @@ +#TODO weird libssh2 error (using cargo update) +[source] +git = "https://github.com/deps-rs/deps.rs" +[build] +template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/difftastic/recipe.toml b/recipes/wip/difftastic/recipe.toml new file mode 100644 index 00000000..3f1178d1 --- /dev/null +++ b/recipes/wip/difftastic/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled/tested yet +[source] +tar = "https://github.com/Wilfred/difftastic/archive/refs/tags/0.47.0.tar.gz" +[build] +template = "cargo" +dependencies = [ + "mimalloc", +] diff --git a/recipes/wip/dim/recipe.toml b/recipes/wip/dim/recipe.toml new file mode 100644 index 00000000..8c092578 --- /dev/null +++ b/recipes/wip/dim/recipe.toml @@ -0,0 +1,11 @@ +#TODO missing script for building, see https://github.com/Dusk-Labs/dim#running-from-source +#TODO probably missing dependencies +[source] +git = "https://github.com/Dusk-Labs/dim" +[build] +template = "custom" +dependencies = [ + "sqlite3", + "openssl1", + "ffmpeg6", +] diff --git a/recipes/wip/diplomat-tool/recipe.toml b/recipes/wip/diplomat-tool/recipe.toml new file mode 100644 index 00000000..92740cdf --- /dev/null +++ b/recipes/wip/diplomat-tool/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/rust-diplomat/diplomat/archive/refs/tags/v0.6.0.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages tool +""" diff --git a/recipes/wip/doctave/recipe.toml b/recipes/wip/doctave/recipe.toml new file mode 100644 index 00000000..af2d926b --- /dev/null +++ b/recipes/wip/doctave/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/Doctave/doctave/archive/refs/tags/0.4.2.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/dog/recipe.toml b/recipes/wip/dog/recipe.toml new file mode 100644 index 00000000..21cf748b --- /dev/null +++ b/recipes/wip/dog/recipe.toml @@ -0,0 +1,13 @@ +#TODO weird OpenSSL error? +[source] +git = "https://github.com/ogham/dog" +[build] +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +export OPENSSL_DIR="${COOKBOOK_SYSROOT}" +export OPENSSL_STATIC="true" +cookbook_cargo +""" diff --git a/recipes/wip/dolphin-emu/recipe.toml b/recipes/wip/dolphin-emu/recipe.toml new file mode 100644 index 00000000..10055660 --- /dev/null +++ b/recipes/wip/dolphin-emu/recipe.toml @@ -0,0 +1,34 @@ +#TODO probably wrong script, see https://github.com/dolphin-emu/dolphin/wiki/Building-for-Linux +#TODO probably missing dependencies +[source] +git = "https://github.com/dolphin-emu/dolphin" +[build] +template = "custom" +dependencies = [ + "ffmpeg6", + "libevdev", + "libusb", + "pango", + "cairo", + "qt6-base", + "qt6-svg", + "mesa", + "curl", + "libvulkan", + "openal", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/dotnet6/recipe.toml b/recipes/wip/dotnet6/recipe.toml new file mode 100644 index 00000000..91f88a27 --- /dev/null +++ b/recipes/wip/dotnet6/recipe.toml @@ -0,0 +1,12 @@ +#TODO Probably needs to run the "build.sh" file or wrong repository, see https://github.com/dotnet/installer#building-net-70-and-net-60 +#TODO Missing dependency recipes, see: https://github.com/dotnet/runtime/blob/main/docs/workflow/requirements/linux-requirements.md#toolchain-setup +[source] +tar = "https://github.com/dotnet/installer/archive/refs/tags/v6.0.416.tar.gz" +[build] +template = "custom" +dependencies = [ + "openssl1", + "zlib", + "kerberos5", + "lttng-ust", +] diff --git a/recipes/wip/dotnet7/recipe.toml b/recipes/wip/dotnet7/recipe.toml new file mode 100644 index 00000000..1da25df6 --- /dev/null +++ b/recipes/wip/dotnet7/recipe.toml @@ -0,0 +1,12 @@ +#TODO Probably needs to run the "build.sh" file or wrong repository, see https://github.com/dotnet/installer#building-net-70-and-net-60 +#TODO Missing dependency recipes, see: https://github.com/dotnet/runtime/blob/main/docs/workflow/requirements/linux-requirements.md#toolchain-setup +[source] +tar = "https://github.com/dotnet/installer/archive/refs/tags/v7.0.403.tar.gz" +[build] +template = "custom" +dependencies = [ + "openssl1", + "zlib", + "kerberos5", + "lttng-ust", +] diff --git a/recipes/wip/dprint/recipe.toml b/recipes/wip/dprint/recipe.toml new file mode 100644 index 00000000..9fd4e92d --- /dev/null +++ b/recipes/wip/dprint/recipe.toml @@ -0,0 +1,8 @@ +#TODO region crate error (after a patch on ring) +[source] +tar = "https://github.com/dprint/dprint/archive/refs/tags/0.41.0.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages dprint +""" diff --git a/recipes/wip/drill/recipe.toml b/recipes/wip/drill/recipe.toml new file mode 100644 index 00000000..e0fa46b3 --- /dev/null +++ b/recipes/wip/drill/recipe.toml @@ -0,0 +1,8 @@ +#TODO Compilation error (after a patch to update tokio on Cargo.toml) +[source] +tar = "https://github.com/fcsonline/drill/archive/refs/tags/0.8.3.tar.gz" +[build] +template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/dua/recipe.toml b/recipes/wip/dua/recipe.toml new file mode 100644 index 00000000..1f7cb9b5 --- /dev/null +++ b/recipes/wip/dua/recipe.toml @@ -0,0 +1,5 @@ +#TODO open crate error +[source] +tar = "https://github.com/Byron/dua-cli/archive/refs/tags/v2.20.1.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/duckstation/recipe.toml b/recipes/wip/duckstation/recipe.toml new file mode 100644 index 00000000..33eb1d0e --- /dev/null +++ b/recipes/wip/duckstation/recipe.toml @@ -0,0 +1,27 @@ +#TODO probably wrong script, see https://github.com/stenzek/duckstation#linux-1 +[source] +tar = "https://github.com/stenzek/duckstation" +[build] +template = "custom" +dependencies = [ + "sdl2", + "qt6-base", + "qt6-svg", + "qt6-tools", + "libwayland", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/dui/recipe.toml b/recipes/wip/dui/recipe.toml new file mode 100644 index 00000000..b4fac2c6 --- /dev/null +++ b/recipes/wip/dui/recipe.toml @@ -0,0 +1,5 @@ +#TODO Compiled but not tested +[source] +git = "https://gitlab.com/GregOwen/dui" +[build] +template = "cargo" diff --git a/recipes/wip/dune/recipe.toml b/recipes/wip/dune/recipe.toml new file mode 100644 index 00000000..d399f82f --- /dev/null +++ b/recipes/wip/dune/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/adam-mcdaniel/dune/archive/refs/tags/v0.1.9.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/dura/recipe.toml b/recipes/wip/dura/recipe.toml new file mode 100644 index 00000000..c0b810ef --- /dev/null +++ b/recipes/wip/dura/recipe.toml @@ -0,0 +1,8 @@ +#TODO make libgit2 dependency work +[source] +git = "https://github.com/tkellogg/dura" +[build] +template = "cargo" +dependencies = [ + "libgit2", +] diff --git a/recipes/wip/dust/recipe.toml b/recipes/wip/dust/recipe.toml new file mode 100644 index 00000000..1f2a059e --- /dev/null +++ b/recipes/wip/dust/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +tar = "https://github.com/bootandy/dust/archive/refs/tags/v0.8.6.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/dutree/recipe.toml b/recipes/wip/dutree/recipe.toml new file mode 100644 index 00000000..a11b54af --- /dev/null +++ b/recipes/wip/dutree/recipe.toml @@ -0,0 +1,5 @@ +#TODO program source code error +[source] +git = "https://github.com/nachoparker/dutree" +[build] +template = "cargo" diff --git a/recipes/wip/dwarfs/recipe.toml b/recipes/wip/dwarfs/recipe.toml new file mode 100644 index 00000000..a97778b2 --- /dev/null +++ b/recipes/wip/dwarfs/recipe.toml @@ -0,0 +1,32 @@ +#TODO probably wrong script, see https://github.com/mhx/dwarfs#building +#TODO missing dependencies, see https://github.com/mhx/dwarfs#dependencies +[source] +tar = "https://github.com/mhx/dwarfs/releases/download/v0.7.2/dwarfs-0.7.2.tar.xz" +[build] +template = "custom" +dependencies = [ + "libfuse3", + "boost", + "brotli", + "libevent", + "openssl1", + "lz4", + "xz", + "libunwind", + "libfmt", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/elfshaker/recipe.toml b/recipes/wip/elfshaker/recipe.toml new file mode 100644 index 00000000..4a777d8e --- /dev/null +++ b/recipes/wip/elfshaker/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/elfshaker/elfshaker" +[build] +template = "cargo" diff --git a/recipes/wip/elixir/recipe.toml b/recipes/wip/elixir/recipe.toml new file mode 100644 index 00000000..a1eb6f58 --- /dev/null +++ b/recipes/wip/elixir/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for "make", see https://github.com/elixir-lang/elixir#compiling-from-source +[source] +tar = "https://github.com/elixir-lang/elixir/archive/refs/tags/v1.15.7.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/elm/recipe.toml b/recipes/wip/elm/recipe.toml new file mode 100644 index 00000000..94fbea64 --- /dev/null +++ b/recipes/wip/elm/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for building, lacking build instructions +[source] +tar = "https://github.com/elm/compiler/archive/refs/tags/0.19.1.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/emacs/recipe.toml b/recipes/wip/emacs/recipe.toml new file mode 100644 index 00000000..4957776a --- /dev/null +++ b/recipes/wip/emacs/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error +[source] +tar = "https://ftp.gnu.org/gnu/emacs/emacs-28.2.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/embree/recipe.toml b/recipes/wip/embree/recipe.toml new file mode 100644 index 00000000..87bbbe8e --- /dev/null +++ b/recipes/wip/embree/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for CMake, see https://github.com/embree/embree#linux-and-macos +[source] +tar = "https://github.com/embree/embree/archive/refs/tags/v4.3.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "glfw", + "onetbb", +] diff --git a/recipes/wip/emplace/recipe.toml b/recipes/wip/emplace/recipe.toml new file mode 100644 index 00000000..511970bc --- /dev/null +++ b/recipes/wip/emplace/recipe.toml @@ -0,0 +1,5 @@ +#TODO sys-info crate error +[source] +git = "https://github.com/tversteeg/emplace" +[build] +template = "cargo" diff --git a/recipes/wip/erdtree/recipe.toml b/recipes/wip/erdtree/recipe.toml new file mode 100644 index 00000000..897cc725 --- /dev/null +++ b/recipes/wip/erdtree/recipe.toml @@ -0,0 +1,5 @@ +#TODO program source code error +[source] +tar = "https://github.com/solidiquis/erdtree/archive/refs/tags/v2.0.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/erlang/recipe.toml b/recipes/wip/erlang/recipe.toml new file mode 100644 index 00000000..02c55a5d --- /dev/null +++ b/recipes/wip/erlang/recipe.toml @@ -0,0 +1,16 @@ +#TODO probably wrong script, see https://www.erlang.org/doc/installation_guide/install +[source] +tar = "https://github.com/erlang/otp/releases/download/OTP-26.1.1/otp_src_26.1.1.tar.gz" +[build] +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +export ERL_TOP="${COOKBOOK_SOURCE}" +COOKBOOK_CONFIGURE_FLAGS+=( + --without-termcap + --enable-bootstrap-only +) +cookbook_configure +""" diff --git a/recipes/wip/espanso/recipe.toml b/recipes/wip/espanso/recipe.toml new file mode 100644 index 00000000..d2cd5033 --- /dev/null +++ b/recipes/wip/espanso/recipe.toml @@ -0,0 +1,11 @@ +#TODO missing script for building, see https://espanso.org/docs/install/linux/#wayland-compile +[source] +tar = "https://github.com/espanso/espanso/archive/refs/tags/v2.1.8.tar.gz" +[build] +template = "custom" +dependencies = [ + "libxkbcommon", + "dbus", + "wxwidgets3", + "openssl1", +] diff --git a/recipes/wip/et-legacy/recipe.toml b/recipes/wip/et-legacy/recipe.toml new file mode 100644 index 00000000..5dec0452 --- /dev/null +++ b/recipes/wip/et-legacy/recipe.toml @@ -0,0 +1,11 @@ +#TODO missing script for CMake, see https://github.com/etlegacy/etlegacy#compile-and-install +[source] +git = "https://github.com/etlegacy/etlegacy" +rev = "956269f4c13ebe31ba2a0f0b805588383209bd5b" +[build] +template = "custom" +dependencies = [ + "sdl2", + "openssl1", + "mesa", +] diff --git a/recipes/wip/eudev/recipe.toml b/recipes/wip/eudev/recipe.toml new file mode 100644 index 00000000..bdc920c7 --- /dev/null +++ b/recipes/wip/eudev/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error - POSIX header not found +[source] +tar = "https://github.com/eudev-project/eudev/releases/download/v3.2.14/eudev-3.2.14.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/eva/recipe.toml b/recipes/wip/eva/recipe.toml new file mode 100644 index 00000000..03dd23c0 --- /dev/null +++ b/recipes/wip/eva/recipe.toml @@ -0,0 +1,5 @@ +#TODO rustyline crate error +[source] +tar = "https://github.com/nerdypepper/eva/archive/refs/tags/v0.3.1.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/evcxr-jupyter/recipe.toml b/recipes/wip/evcxr-jupyter/recipe.toml new file mode 100644 index 00000000..a3c6428d --- /dev/null +++ b/recipes/wip/evcxr-jupyter/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/evcxr/evcxr/archive/refs/tags/v0.15.1.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages evcxr_jupyter +""" diff --git a/recipes/wip/evcxr-repl/recipe.toml b/recipes/wip/evcxr-repl/recipe.toml new file mode 100644 index 00000000..c18d13e7 --- /dev/null +++ b/recipes/wip/evcxr-repl/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/evcxr/evcxr/archive/refs/tags/v0.15.1.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages evcxr_repl +""" diff --git a/recipes/wip/eww/recipe.toml b/recipes/wip/eww/recipe.toml new file mode 100644 index 00000000..2d70facd --- /dev/null +++ b/recipes/wip/eww/recipe.toml @@ -0,0 +1,11 @@ +#TODO Make GTK3 work +[source] +tar = "https://github.com/elkowar/eww/archive/refs/tags/v0.4.0.tar.gz" +[build] +template = "cargo" +dependencies = [ + "gtk3", + "gdk-pixbuf", + "glib", + "cairo", +] diff --git a/recipes/wip/exa/recipe.toml b/recipes/wip/exa/recipe.toml new file mode 100644 index 00000000..37991b17 --- /dev/null +++ b/recipes/wip/exa/recipe.toml @@ -0,0 +1,5 @@ +#TODO redox_syscall crate error +[source] +git = "https://github.com/ogham/exa" +[build] +template = "cargo" diff --git a/recipes/wip/eza/recipe.toml b/recipes/wip/eza/recipe.toml new file mode 100644 index 00000000..84ace592 --- /dev/null +++ b/recipes/wip/eza/recipe.toml @@ -0,0 +1,5 @@ +#TODO outdated redox_syscall crate +[source] +tar = "https://github.com/eza-community/eza/archive/refs/tags/v0.11.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/fazi/recipe.toml b/recipes/wip/fazi/recipe.toml new file mode 100644 index 00000000..d1e35386 --- /dev/null +++ b/recipes/wip/fazi/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/landaire/fazi" +[build] +template = "cargo" diff --git a/recipes/wip/fclones/recipe.toml b/recipes/wip/fclones/recipe.toml new file mode 100644 index 00000000..a1b1318a --- /dev/null +++ b/recipes/wip/fclones/recipe.toml @@ -0,0 +1,5 @@ +#TODO file-owner crate error +[source] +tar = "https://github.com/pkolaczk/fclones/archive/refs/tags/v0.30.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/felix/recipe.toml b/recipes/wip/felix/recipe.toml new file mode 100644 index 00000000..d89ccd29 --- /dev/null +++ b/recipes/wip/felix/recipe.toml @@ -0,0 +1,5 @@ +#TODO link error: getgroups +[source] +git = "https://github.com/kyoheiu/felix" +[build] +template = "cargo" \ No newline at end of file diff --git a/recipes/wip/fend/recipe.toml b/recipes/wip/fend/recipe.toml new file mode 100644 index 00000000..4dea69f1 --- /dev/null +++ b/recipes/wip/fend/recipe.toml @@ -0,0 +1,8 @@ +#TODO compilation error (after a patch on the ring crate) +[source] +tar = "https://github.com/printfn/fend/archive/refs/tags/v1.2.2.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages fend +""" diff --git a/recipes/wip/festival/recipe.toml b/recipes/wip/festival/recipe.toml new file mode 100644 index 00000000..82640cf4 --- /dev/null +++ b/recipes/wip/festival/recipe.toml @@ -0,0 +1,11 @@ +#TODO make dbus work +[source] +git = "https://github.com/hinto-janai/festival" +[build] +template = "custom" +dependencies = [ + "dbus", +] +script = """ +cookbook_cargo_packages festival-gui +""" diff --git a/recipes/wip/ffizer/recipe.toml b/recipes/wip/ffizer/recipe.toml new file mode 100644 index 00000000..5510fe6d --- /dev/null +++ b/recipes/wip/ffizer/recipe.toml @@ -0,0 +1,8 @@ +#TODO compilation error (after a patch on the ring crate) +[source] +tar = "https://github.com/ffizer/ffizer/archive/refs/tags/2.10.3.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo --features cli +""" diff --git a/recipes/wip/fftw/recipe.toml b/recipes/wip/fftw/recipe.toml new file mode 100644 index 00000000..27b4880c --- /dev/null +++ b/recipes/wip/fftw/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error +[source] +tar = "https://fftw.org/fftw-3.3.10.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/file/recipe.toml b/recipes/wip/file/recipe.toml new file mode 100644 index 00000000..1027eba6 --- /dev/null +++ b/recipes/wip/file/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://github.com/file/file/archive/refs/tags/FILE5_44.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/fio/recipe.toml b/recipes/wip/fio/recipe.toml new file mode 100644 index 00000000..6794efee --- /dev/null +++ b/recipes/wip/fio/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/axboe/fio/archive/refs/tags/fio-3.36.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/firefox-esr/recipe.toml b/recipes/wip/firefox-esr/recipe.toml new file mode 100644 index 00000000..b98e29fd --- /dev/null +++ b/recipes/wip/firefox-esr/recipe.toml @@ -0,0 +1,23 @@ +#TODO probably wrong template, see https://firefox-source-docs.mozilla.org/setup/linux_build.html#build +[source] +tar = "https://ftp.mozilla.org/pub/firefox/releases/115.4.0esr/linux-x86_64/en-US/firefox-115.4.0esr.tar.bz2" +[build] +template = "configure" +dependencies = [ + "fontconfig", + "atk", + "cairo", + "dbus", + "libffi", + "freetype2", + "gdk-pixbuf", + "glib", + "gtk3", + "pango", + "sqlite3", + "nss-nspr", + "startup-notification", + "zlib", + "libvpx", + "ffmpeg6", +] diff --git a/recipes/wip/fish-shell/recipe.toml b/recipes/wip/fish-shell/recipe.toml new file mode 100644 index 00000000..626f51b5 --- /dev/null +++ b/recipes/wip/fish-shell/recipe.toml @@ -0,0 +1,25 @@ +#TODO probably wrong script, see https://github.com/fish-shell/fish-shell#building-from-source-all-platforms---makefile-generator +[source] +tar = "https://github.com/fish-shell/fish-shell/releases/download/3.6.1/fish-3.6.1.tar.xz" +[build] +template = "custom" +dependencies = [ + "ncurses", + "gettext", + "pcre", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/flameshot/recipe.toml b/recipes/wip/flameshot/recipe.toml new file mode 100644 index 00000000..46c50c0f --- /dev/null +++ b/recipes/wip/flameshot/recipe.toml @@ -0,0 +1,10 @@ +#TODO missing script for CMake, see https://flameshot.org/docs/installation/source-code/#compilation +[source] +tar = "https://github.com/flameshot-org/flameshot/archive/refs/tags/v12.1.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "qt5-base", + "qt5-tools", + "qt5-svg", +] diff --git a/recipes/wip/flex/recipe.toml b/recipes/wip/flex/recipe.toml new file mode 100644 index 00000000..da5b01df --- /dev/null +++ b/recipes/wip/flex/recipe.toml @@ -0,0 +1,9 @@ +#TODO Not compiled or tested yet +[source] +tar = "https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz" +[build] +template = "custom" +script = """ +./autogen.sh +cookbook_configure +""" diff --git a/recipes/wip/flowtime/recipe.toml b/recipes/wip/flowtime/recipe.toml new file mode 100644 index 00000000..bcd96a10 --- /dev/null +++ b/recipes/wip/flowtime/recipe.toml @@ -0,0 +1,10 @@ +#TODO missing script for Meson, see https://github.com/Diego-Ivan/Flowtime#building-from-source +[source] +tar = "https://github.com/Diego-Ivan/Flowtime/archive/refs/tags/v6.1.tar.gz" +[build] +template = "custom" +dependencies = [ + "gtk4", + "libxml2", + "libadwaita", +] diff --git a/recipes/wip/fltk/recipe.toml b/recipes/wip/fltk/recipe.toml new file mode 100644 index 00000000..ec8ec37a --- /dev/null +++ b/recipes/wip/fltk/recipe.toml @@ -0,0 +1,17 @@ +#TODO probably wrong script, see https://github.com/fltk/fltk/blob/master/README.Unix.txt +[source] +tar = "https://www.fltk.org/pub/fltk/1.3.8/fltk-1.3.8-source.tar.bz2" +[build] +template = "configure" +dependencies = [ + "mesa_glu", + "freeglut", + "cairo" + "fontconfig", + "glew", + "libjpeg", + "libpng", + "pango", + "zlib", + "libx11", +] diff --git a/recipes/wip/fontfor/recipe.toml b/recipes/wip/fontfor/recipe.toml new file mode 100644 index 00000000..20739efa --- /dev/null +++ b/recipes/wip/fontfor/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/7sDream/fontfor/archive/refs/tags/v0.4.1.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/fontforge/recipe.toml b/recipes/wip/fontforge/recipe.toml new file mode 100644 index 00000000..e7cb3f01 --- /dev/null +++ b/recipes/wip/fontforge/recipe.toml @@ -0,0 +1,17 @@ +#TODO missing script for Ninja, see https://github.com/fontforge/fontforge/blob/master/INSTALL.md +[source] +tar = "https://github.com/fontforge/fontforge/releases/download/20230101/fontforge-20230101.tar.xz" +[build] +template = "custom" +dependencies = [ + "libtiff", + "libjpeg", + "libpng", + "libgif", + "libxml2", + "gtk3", + "freetype2", + "pango", + "cairo", + "libspiro", +] diff --git a/recipes/wip/freealut/recipe.toml b/recipes/wip/freealut/recipe.toml new file mode 100644 index 00000000..a774784a --- /dev/null +++ b/recipes/wip/freealut/recipe.toml @@ -0,0 +1,20 @@ +#TODO probably wrong script, see https://github.com/vancegroup/freealut#building-freealut +[source] +git = "https://github.com/vancegroup/freealut" +[build] +template = "custom" +script = """ + COOKBOOK_CONFIGURE="cmake" + COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/freshfetch/recipe.toml b/recipes/wip/freshfetch/recipe.toml new file mode 100644 index 00000000..4e254a51 --- /dev/null +++ b/recipes/wip/freshfetch/recipe.toml @@ -0,0 +1,8 @@ +#TODO mlua crate error +[source] +git = "https://github.com/K4rakara/freshfetch" +[build] +template = "custom" +script = """ +cookbook_cargo_packages freshfetch +""" diff --git a/recipes/wip/fselect/recipe.toml b/recipes/wip/fselect/recipe.toml new file mode 100644 index 00000000..3152cb4c --- /dev/null +++ b/recipes/wip/fselect/recipe.toml @@ -0,0 +1,8 @@ +#TODO make the mimalloc dependency work +[source] +tar = "https://github.com/jhspetersson/fselect/archive/refs/tags/0.8.3.tar.gz" +[build] +template = "cargo" +dependencies = [ + "mimalloc", +] diff --git a/recipes/wip/fyrox/recipe.toml b/recipes/wip/fyrox/recipe.toml new file mode 100644 index 00000000..a1db1b9d --- /dev/null +++ b/recipes/wip/fyrox/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested yet +[source] +tar = "https://github.com/FyroxEngine/Fyrox/archive/refs/tags/v0.29.tar.gz" +[buiild] +template = "cargo" diff --git a/recipes/wip/gaffer/recipe.toml b/recipes/wip/gaffer/recipe.toml new file mode 100644 index 00000000..f478b47d --- /dev/null +++ b/recipes/wip/gaffer/recipe.toml @@ -0,0 +1,27 @@ +#TODO missing script for SCons, see https://github.com/gafferHQ/gaffer#building +#TODO missing dependencies, see https://github.com/GafferHQ/dependencies +[source] +tar = "https://github.com/GafferHQ/gaffer/archive/refs/tags/1.3.7.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "inkscape", + "boost", + "embree", + "libfmt", + "freetype2", + "glew", + "imath", + "llvm", + "lz4", + "libffi", + "libjpeg-turbo", + "libpng", + "libtiff", + "openexr", + "openimageio", + "openssl1", + "onetbb", + "zlib", + "qt5-full", +] diff --git a/recipes/wip/gameroy/recipe.toml b/recipes/wip/gameroy/recipe.toml new file mode 100644 index 00000000..f2286ba4 --- /dev/null +++ b/recipes/wip/gameroy/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/Rodrigodd/gameroy/archive/refs/tags/v0.3.1.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages gameroy-native +""" diff --git a/recipes/wip/gdb/recipe.toml b/recipes/wip/gdb/recipe.toml new file mode 100644 index 00000000..9cd3ba4a --- /dev/null +++ b/recipes/wip/gdb/recipe.toml @@ -0,0 +1,21 @@ +#TODO probably wrong script, see https://sourceware.org/gdb/wiki/BuildingNatively +[source] +tar = "https://ftp.gnu.org/gnu/gdb/gdb-13.2.tar.xz" +[build] +template = "custom" +dependencies = [ + "libgmp", +] +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --disable-binutils + --disable-ld + --disable-gold + --disable-gas + --disable-sim + --disable-gprof + --disable-gprofng + --disable-intl +) +cookbook_configure +""" diff --git a/recipes/wip/gegl/recipe.toml b/recipes/wip/gegl/recipe.toml new file mode 100644 index 00000000..0ca3f026 --- /dev/null +++ b/recipes/wip/gegl/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for Meson, see https://gitlab.gnome.org/GNOME/gegl/-/blob/master/docs/development.adoc?ref_type=heads#user-content-debugging +[source] +tar = "https://download.gimp.org/pub/gegl/0.4/gegl-0.4.46.tar.xz" +[build] +template = "custom" +dependencies = [ + "libpng", + "glib", +] diff --git a/recipes/wip/gem5/recipe.toml b/recipes/wip/gem5/recipe.toml new file mode 100644 index 00000000..90a64579 --- /dev/null +++ b/recipes/wip/gem5/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for SCons, see https://www.gem5.org/documentation/general_docs/building +[source] +tar = "https://github.com/gem5/gem5/archive/refs/tags/v23.0.1.0.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/gengo/recipe.toml b/recipes/wip/gengo/recipe.toml new file mode 100644 index 00000000..c5ec484a --- /dev/null +++ b/recipes/wip/gengo/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/spenserblack/gengo/archive/refs/tags/v0.5.2.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/gerb/recipe.toml b/recipes/wip/gerb/recipe.toml new file mode 100644 index 00000000..c15fa3ab --- /dev/null +++ b/recipes/wip/gerb/recipe.toml @@ -0,0 +1,8 @@ +#TODO make GTK3 work +[source] +git = "https://github.com/epilys/gerb" +[build] +template = "cargo" +dependencies = [ + "gtk3", +] diff --git a/recipes/wip/germ/recipe.toml b/recipes/wip/germ/recipe.toml new file mode 100644 index 00000000..1d7f622f --- /dev/null +++ b/recipes/wip/germ/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +git = "https://github.com/volks73/germ" +[build] +template = "cargo" diff --git a/recipes/wip/gexiv2/recipe.toml b/recipes/wip/gexiv2/recipe.toml new file mode 100644 index 00000000..16bf91bf --- /dev/null +++ b/recipes/wip/gexiv2/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, see https://gitlab.gnome.org/GNOME/gexiv2/-/blob/master/INSTALLING?ref_type=heads +[source] +tar = "https://download.gnome.org/sources/gexiv2/0.14/gexiv2-0.14.2.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/gflags/recipe.toml b/recipes/wip/gflags/recipe.toml new file mode 100644 index 00000000..e3c77b04 --- /dev/null +++ b/recipes/wip/gflags/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/gflags/gflags/blob/master/INSTALL.md#compiling-the-source-code-with-cmake +[source] +git = "https://github.com/gflags/gflags" +[build] +template = "custom" diff --git a/recipes/wip/ghc/recipe.toml b/recipes/wip/ghc/recipe.toml new file mode 100644 index 00000000..9ab877b5 --- /dev/null +++ b/recipes/wip/ghc/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Hadrian, see https://gitlab.haskell.org/ghc/ghc/-/wikis/building/hadrian +[source] +tar = "https://downloads.haskell.org/~ghc/9.8.1/ghc-9.8.1-src.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/gifski/recipe.toml b/recipes/wip/gifski/recipe.toml new file mode 100644 index 00000000..2f7a3cff --- /dev/null +++ b/recipes/wip/gifski/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/ImageOptim/gifski/archive/refs/tags/1.13.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/gimp/recipe.toml b/recipes/wip/gimp/recipe.toml new file mode 100644 index 00000000..47746828 --- /dev/null +++ b/recipes/wip/gimp/recipe.toml @@ -0,0 +1,27 @@ +#TODO make dependencies work +[source] +tar = "https://download.gimp.org/gimp/v2.10/gimp-2.10.36.tar.bz2" +[build] +template = "configure" +dependencies = [ + "gtk2", + "gobject-introspection", + "glib", + "cairo", + "pango", + "liblcms", + "libmypaint", + "gexiv2", + "gegl", + "babl", + "librsvg", + "libtiff", + "libjpeg", + "libpng", + "fontconfig", + "freetype2", + "atk", + "harfbuzz", + "bzip2", + "zlib", +] diff --git a/recipes/wip/git-absorb/recipe.toml b/recipes/wip/git-absorb/recipe.toml new file mode 100644 index 00000000..6a82a7fa --- /dev/null +++ b/recipes/wip/git-absorb/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/tummychow/git-absorb/archive/refs/tags/0.6.10.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/git-cliff/recipe.toml b/recipes/wip/git-cliff/recipe.toml new file mode 100644 index 00000000..baed0e2d --- /dev/null +++ b/recipes/wip/git-cliff/recipe.toml @@ -0,0 +1,8 @@ +#TODO compiled but not tested (after a patch on the ring crate) +[source] +tar = "https://github.com/orhun/git-cliff/archive/refs/tags/v1.2.0.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages git-cliff +""" diff --git a/recipes/wip/git-ignore-generator/recipe.toml b/recipes/wip/git-ignore-generator/recipe.toml new file mode 100644 index 00000000..aba928fb --- /dev/null +++ b/recipes/wip/git-ignore-generator/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested (after a patch on the ring crate) +[source] +tar = "https://github.com/sondr3/git-ignore/archive/refs/tags/v1.2.2.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/gitui/recipe.toml b/recipes/wip/gitui/recipe.toml new file mode 100644 index 00000000..bf1502a1 --- /dev/null +++ b/recipes/wip/gitui/recipe.toml @@ -0,0 +1,13 @@ +#TODO openssl-sys crate error +[source] +tar = "https://github.com/extrawurst/gitui/archive/refs/tags/v0.22.1.tar.gz" +[build] +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +export OPENSSL_DIR="${COOKBOOK_SYSROOT}" +export OPENSSL_STATIC="true" +cookbook_cargo +""" diff --git a/recipes/wip/glew/recipe.toml b/recipes/wip/glew/recipe.toml new file mode 100644 index 00000000..9848b0ef --- /dev/null +++ b/recipes/wip/glew/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for "make", see https://github.com/nigels-com/glew#linux-and-mac +[source] +tar = "https://github.com/nigels-com/glew/archive/refs/tags/glew-2.2.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "mesa", +] diff --git a/recipes/wip/glfw3/recipe.toml b/recipes/wip/glfw3/recipe.toml new file mode 100644 index 00000000..f60e9004 --- /dev/null +++ b/recipes/wip/glfw3/recipe.toml @@ -0,0 +1,24 @@ +#TODO probably wrong script, see https://www.glfw.org/docs/latest/compile.html +[source] +tar = "https://github.com/glfw/glfw/archive/refs/tags/3.3.8.tar.gz" +[build] +template = "custom" +dependencies = [ + "libwayland", + "libxkbcommon", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/glib2mm/recipe.toml b/recipes/wip/glib2mm/recipe.toml new file mode 100644 index 00000000..199a5601 --- /dev/null +++ b/recipes/wip/glib2mm/recipe.toml @@ -0,0 +1,5 @@ +#TODO probably wrong template, see https://gitlab.gnome.org/GNOME/glibmm#building +[source] +tar = "https://download.gnome.org/sources/glibmm/2.76/glibmm-2.76.0.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/glide/recipe.toml b/recipes/wip/glide/recipe.toml new file mode 100644 index 00000000..90a81da7 --- /dev/null +++ b/recipes/wip/glide/recipe.toml @@ -0,0 +1,9 @@ +#TODO Make GTK4 work +[source] +tar = "https://github.com/philn/glide/archive/refs/tags/0.6.0.tar.gz" +[build] +template = "cargo" +dependencies = [ + "gtk4", + "gstreamer", +] diff --git a/recipes/wip/gmic-qt/recipe.toml b/recipes/wip/gmic-qt/recipe.toml new file mode 100644 index 00000000..5477aecd --- /dev/null +++ b/recipes/wip/gmic-qt/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for building, see https://github.com/c-koi/gmic-qt#build-instructions +#TODO probably missing dependencies +[source] +tar = "https://github.com/c-koi/gmic-qt/archive/refs/tags/v.3.3.2.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/gmic/recipe.toml b/recipes/wip/gmic/recipe.toml new file mode 100644 index 00000000..1c751bb5 --- /dev/null +++ b/recipes/wip/gmic/recipe.toml @@ -0,0 +1,11 @@ +#TODO missing script for "make", see https://github.com/GreycLab/gmic-community/wiki/Building-from-Source +[source] +tar = "https://gmic.eu/files/source/gmic_3.3.2.tar.gz" +[build] +template = "custom" +dependencies = [ + "fftw", + "libpng", + "libjpeg", + "zlib", +] diff --git a/recipes/wip/gnome-doc-utils/recipe.toml b/recipes/wip/gnome-doc-utils/recipe.toml new file mode 100644 index 00000000..550623ab --- /dev/null +++ b/recipes/wip/gnome-doc-utils/recipe.toml @@ -0,0 +1,5 @@ +#TODO probably wrong template +[source] +tar = "https://download.gnome.org/sources/gnome-doc-utils/0.20/gnome-doc-utils-0.20.10.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/gnome2-common/recipe.toml b/recipes/wip/gnome2-common/recipe.toml new file mode 100644 index 00000000..be6388ff --- /dev/null +++ b/recipes/wip/gnome2-common/recipe.toml @@ -0,0 +1,5 @@ +#TODO probably wrong template +[source] +tar = "https://download.gnome.org/sources/gnome-common/2.34/gnome-common-2.34.0.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/gnome3-common/recipe.toml b/recipes/wip/gnome3-common/recipe.toml new file mode 100644 index 00000000..609f094f --- /dev/null +++ b/recipes/wip/gnome3-common/recipe.toml @@ -0,0 +1,5 @@ +#TODO Needs to determine the build system script +[source] +tar = "https://download.gnome.org/sources/gnome-common/3.18/gnome-common-3.18.0.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/gnu-radio/recipe.toml b/recipes/wip/gnu-radio/recipe.toml new file mode 100644 index 00000000..221a2219 --- /dev/null +++ b/recipes/wip/gnu-radio/recipe.toml @@ -0,0 +1,16 @@ +#TODO missing script for CMake, see https://wiki.gnuradio.org/index.php?title=LinuxInstall#For_GNU_Radio_3.10,_3.9,_and_Main_Branch +#TODO probably missing dependencies, see https://wiki.gnuradio.org/index.php?title=UbuntuInstall#Install_Dependencies +[source] +tar = "https://github.com/gnuradio/gnuradio/archive/refs/tags/v3.10.8.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "volk", + "boost", + "libgmp", + "fftw", + "sdl1", + "qt5-base", + "libusb", + "libevdev", +] diff --git a/recipes/wip/gnupg-lts/recipe.toml b/recipes/wip/gnupg-lts/recipe.toml new file mode 100644 index 00000000..f0049191 --- /dev/null +++ b/recipes/wip/gnupg-lts/recipe.toml @@ -0,0 +1,9 @@ +#TODO compilation error on libgcrypt +[source] +tar = "https://gnupg.org/ftp/gcrypt/gnupg/gnupg-2.2.41.tar.bz2" +[build] +template = "configure" +dependencies = [ + "libiconv", + "libgcrypt", +] diff --git a/recipes/wip/gnupg/recipe.toml b/recipes/wip/gnupg/recipe.toml new file mode 100644 index 00000000..3d112edb --- /dev/null +++ b/recipes/wip/gnupg/recipe.toml @@ -0,0 +1,9 @@ +#TODO compilation error on libgcrypt +[source] +tar = "https://gnupg.org/ftp/gcrypt/gnupg/gnupg-2.4.1.tar.bz2" +[build] +template = "configure" +dependencies = [ + "libiconv", + "libgcrypt", +] diff --git a/recipes/wip/gnuplot/recipe.toml b/recipes/wip/gnuplot/recipe.toml new file mode 100644 index 00000000..465bc9ae --- /dev/null +++ b/recipes/wip/gnuplot/recipe.toml @@ -0,0 +1,5 @@ +#TODO determine dependencies +[source] +tar = "https://sourceforge.net/projects/gnuplot/files/gnuplot/5.4.10/gnuplot-5.4.10.tar.gz/download" +[build] +template = "configure" diff --git a/recipes/wip/gnutls3/recipe.toml b/recipes/wip/gnutls3/recipe.toml new file mode 100644 index 00000000..f0c06d54 --- /dev/null +++ b/recipes/wip/gnutls3/recipe.toml @@ -0,0 +1,9 @@ +#TODO Weird compilation error with satisfied dependency +[source] +tar = "https://www.gnupg.org/ftp/gcrypt/gnutls/v3.6/gnutls-3.6.16.tar.xz" +[build] +template = "configure" +dependencies = [ + "libgmp", + "libnettle", +] diff --git a/recipes/wip/gobang/recipe.toml b/recipes/wip/gobang/recipe.toml new file mode 100644 index 00000000..772274f9 --- /dev/null +++ b/recipes/wip/gobang/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/TaKO8Ki/gobang" +[build] +template = "cargo" diff --git a/recipes/wip/gobject-introspection/recipe.toml b/recipes/wip/gobject-introspection/recipe.toml new file mode 100644 index 00000000..93a6f31f --- /dev/null +++ b/recipes/wip/gobject-introspection/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for Meson, see https://gi.readthedocs.io/en/latest/build_test.html +[source] +tar = "https://download.gnome.org/sources/gobject-introspection/1.76/gobject-introspection-1.76.1.tar.xz" +[build] +template = "custom" +dependencies = [ + "cairo", + "glib", +] diff --git a/recipes/wip/godot-engine4/recipe.toml b/recipes/wip/godot-engine4/recipe.toml new file mode 100644 index 00000000..727b56c8 --- /dev/null +++ b/recipes/wip/godot-engine4/recipe.toml @@ -0,0 +1,11 @@ +#TODO missing script for SCons, see https://docs.godotengine.org/en/stable/contributing/development/compiling/compiling_for_linuxbsd.html +#TODO missing dependencies +[source] +tar = "https://github.com/godotengine/godot/releases/download/4.1.3-stable/godot-4.1.3-stable.tar.xz" +[build] +template = "custom" +dependencies = [ + "libx11", + "mesa", + "mesa_glu", +] diff --git a/recipes/wip/google-test/recipe.toml b/recipes/wip/google-test/recipe.toml new file mode 100644 index 00000000..39362de3 --- /dev/null +++ b/recipes/wip/google-test/recipe.toml @@ -0,0 +1,20 @@ +#TODO probably wrong script, see https://github.com/google/googletest/blob/main/googletest/README.md +[source] +tar = "https://github.com/google/googletest/archive/refs/tags/v1.13.0.tar.gz" +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/goxel/recipe.toml b/recipes/wip/goxel/recipe.toml new file mode 100644 index 00000000..a21f65d7 --- /dev/null +++ b/recipes/wip/goxel/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for the SCons, see https://github.com/guillaumechereau/goxel#linuxbsd +[source] +tar = "https://github.com/guillaumechereau/goxel/archive/refs/tags/v0.12.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "gtk3", + "glfw3", +] diff --git a/recipes/wip/gperf/recipe.toml b/recipes/wip/gperf/recipe.toml new file mode 100644 index 00000000..ff3a4c0b --- /dev/null +++ b/recipes/wip/gperf/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not fully tested +[source] +tar = "http://ftp.gnu.org/pub/gnu/gperf/gperf-3.1.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/gpg-tui/recipe.toml b/recipes/wip/gpg-tui/recipe.toml new file mode 100644 index 00000000..0ab279ed --- /dev/null +++ b/recipes/wip/gpg-tui/recipe.toml @@ -0,0 +1,10 @@ +#TODO make dependencies work +[source] +tar = "https://github.com/orhun/gpg-tui/archive/refs/tags/v0.10.0.tar.gz" +[build] +template = "cargo" +dependencies = [ + "gnupg", + "gpgme", + "libgpg-error", +] diff --git a/recipes/wip/gpgme/recipe.toml b/recipes/wip/gpgme/recipe.toml new file mode 100644 index 00000000..dc3d7c67 --- /dev/null +++ b/recipes/wip/gpgme/recipe.toml @@ -0,0 +1,8 @@ +#TODO wait the fix of libgcrypt compilation +[source] +tar = "https://gnupg.org/ftp/gcrypt/gpgme/gpgme-1.20.0.tar.bz2" +[build] +template = "configure" +dependencies = [ + "libgcrypt", +] diff --git a/recipes/wip/gphoto2/recipe.toml b/recipes/wip/gphoto2/recipe.toml new file mode 100644 index 00000000..33345674 --- /dev/null +++ b/recipes/wip/gphoto2/recipe.toml @@ -0,0 +1,5 @@ +#TODO probably wrong template, lacking build instructions +[source] +tar = "https://sourceforge.net/projects/gphoto/files/gphoto/2.5.28/gphoto2-2.5.28.tar.xz/download" +[build] +template = "configure" diff --git a/recipes/wip/gping/recipe.toml b/recipes/wip/gping/recipe.toml new file mode 100644 index 00000000..28cf04b2 --- /dev/null +++ b/recipes/wip/gping/recipe.toml @@ -0,0 +1,8 @@ +#TODO weird error on the end of compilation +[source] +tar = "https://github.com/orf/gping/archive/refs/tags/gping-v1.12.0.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages gping +""" diff --git a/recipes/wip/gptman/recipe.toml b/recipes/wip/gptman/recipe.toml new file mode 100644 index 00000000..249051c4 --- /dev/null +++ b/recipes/wip/gptman/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled but not tested +[source] +git = "https://github.com/rust-disk-partition-management/gptman" +[build] +template = "custom" +script = """ +cookbook_cargo --features cli +""" diff --git a/recipes/wip/graphene/recipe.toml b/recipes/wip/graphene/recipe.toml new file mode 100644 index 00000000..29fa65e6 --- /dev/null +++ b/recipes/wip/graphene/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, see https://github.com/ebassi/graphene#installation +[source] +tar = "https://download.gnome.org/sources/graphene/1.10/graphene-1.10.8.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/graphicsmagick/recipe.toml b/recipes/wip/graphicsmagick/recipe.toml new file mode 100644 index 00000000..d7b12fbd --- /dev/null +++ b/recipes/wip/graphicsmagick/recipe.toml @@ -0,0 +1,16 @@ +#TODO Not compiled or tested +#TODO more features - http://www.graphicsmagick.org/README.html#add-on-libraries-programs +[source] +tar = "https://sourceforge.net/projects/graphicsmagick/files/graphicsmagick/1.3.42/GraphicsMagick-1.3.42.tar.xz/download" +[build] +template = "configure" +dependencies = [ + "bzip2", + "freetype2", + "libwebp", + "libjpeg", + "libpng", + "libtiff", + "libxml2", + "zlib", +] diff --git a/recipes/wip/graphviz/recipe.toml b/recipes/wip/graphviz/recipe.toml new file mode 100644 index 00000000..ca032bd7 --- /dev/null +++ b/recipes/wip/graphviz/recipe.toml @@ -0,0 +1,16 @@ +#TODO Not compiled or tested +#TODO customization - https://graphviz.org/download/source/#dependencies +[source] +tar = "https://gitlab.com/api/v4/projects/4207231/packages/generic/graphviz-releases/9.0.0/graphviz-9.0.0.tar.xz" +[build] +template = "configure" +dependencies = [ + "cairo", + "expat", + "freetype2", + "fontconfig", + "glib", + "libpng", + "pango", + "zlib", +] diff --git a/recipes/wip/grex/recipe.toml b/recipes/wip/grex/recipe.toml new file mode 100644 index 00000000..33b4c53c --- /dev/null +++ b/recipes/wip/grex/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +tar = "https://github.com/pemistahl/grex/archive/refs/tags/v1.4.1.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/gromacs/recipe.toml b/recipes/wip/gromacs/recipe.toml new file mode 100644 index 00000000..d4a4009f --- /dev/null +++ b/recipes/wip/gromacs/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://manual.gromacs.org/current/install-guide/index.html +[source] +tar = "https://ftp.gromacs.org/gromacs/gromacs-2023.3.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/gtk-doc/recipe.toml b/recipes/wip/gtk-doc/recipe.toml new file mode 100644 index 00000000..83e46e61 --- /dev/null +++ b/recipes/wip/gtk-doc/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.gnome.org/sources/gtk-doc/1.33/gtk-doc-1.33.2.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/gtk-engines/recipe.toml b/recipes/wip/gtk-engines/recipe.toml new file mode 100644 index 00000000..f8ef8be2 --- /dev/null +++ b/recipes/wip/gtk-engines/recipe.toml @@ -0,0 +1,5 @@ +#TODO probably wrong template +[source] +tar = "https://download.gnome.org/sources/gtk-engines/2.91/gtk-engines-2.91.1.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/gtk2/recipe.toml b/recipes/wip/gtk2/recipe.toml new file mode 100644 index 00000000..005ea8d5 --- /dev/null +++ b/recipes/wip/gtk2/recipe.toml @@ -0,0 +1,13 @@ +#TODO probably missing dependencies +[source] +tar = "https://download.gnome.org/sources/gtk%2B/2.24/gtk%2B-2.24.33.tar.xz" +[build] +template = "configure" +dependencies = [ + "glib", + "pango", + "gdk-pixbuf", + "atk", + "cairo", + "gobject-introspection", +] diff --git a/recipes/wip/gtk2mm/recipe.toml b/recipes/wip/gtk2mm/recipe.toml new file mode 100644 index 00000000..bb2dd93b --- /dev/null +++ b/recipes/wip/gtk2mm/recipe.toml @@ -0,0 +1,5 @@ +#TODO probably missing dependencies +[source] +tar = "https://download.gnome.org/sources/gtkmm/2.91/gtkmm-2.91.7.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/gtk3/recipe.toml b/recipes/wip/gtk3/recipe.toml new file mode 100644 index 00000000..aaf59bbb --- /dev/null +++ b/recipes/wip/gtk3/recipe.toml @@ -0,0 +1,18 @@ +#TODO probably missing dependencies, see https://docs.gtk.org/gtk3/building.html#dependencies +[source] +tar = "https://download.gnome.org/sources/gtk+/3.24/gtk%2B-3.24.37.tar.xz" +[build] +template = "configure" +dependencies = [ + "glib", + "gdk-pixbuf", + "pango", + "cairo", + "libepoxy", + "atk", + "gobject-introspection", + "shared-mime-info", + "graphene", + "libwayland", + "gstreamer", +] diff --git a/recipes/wip/gtk4/recipe.toml b/recipes/wip/gtk4/recipe.toml new file mode 100644 index 00000000..93608e38 --- /dev/null +++ b/recipes/wip/gtk4/recipe.toml @@ -0,0 +1,19 @@ +#TODO missing script for Meson, see https://docs.gtk.org/gtk4/building.html +[source] +tar = "https://download.gnome.org/sources/gtk/4.11/gtk-4.11.2.tar.xz" +[build] +template = "custom" +dependencies = [ + "glib", + "gdk-pixbuf", + "pango", + "cairo", + "libepoxy", + "atk", + "gobject-introspection", + "shared-mime-info", + "graphene", + "libwayland", + "libxkbcommon", + "gstreamer", +] diff --git a/recipes/wip/gtk4mm/recipe.toml b/recipes/wip/gtk4mm/recipe.toml new file mode 100644 index 00000000..1637773f --- /dev/null +++ b/recipes/wip/gtk4mm/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for Meson (probably) +#TODO probably missing dependencies +[source] +tar = "https://download.gnome.org/sources/gtkmm/4.11/gtkmm-4.11.2.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/gupax/recipe.toml b/recipes/wip/gupax/recipe.toml new file mode 100644 index 00000000..1e191fbf --- /dev/null +++ b/recipes/wip/gupax/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/hinto-janai/gupax/archive/refs/tags/v1.3.1.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/gyr/recipe.toml b/recipes/wip/gyr/recipe.toml new file mode 100644 index 00000000..97f4989f --- /dev/null +++ b/recipes/wip/gyr/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +tar = "https://git.sr.ht/~f9/gyr/archive/v0.1.3.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/gzdoom/recipe.toml b/recipes/wip/gzdoom/recipe.toml new file mode 100644 index 00000000..4d3141ba --- /dev/null +++ b/recipes/wip/gzdoom/recipe.toml @@ -0,0 +1,12 @@ +#TODO missing script for CMake, see https://zdoom.org/wiki/Compile_GZDoom_on_Linux +[source] +tar = "https://github.com/ZDoom/gzdoom/archive/refs/tags/g4.10.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "sdl2", + "mesa", + "mesa-glu", + "openal", + "zmusic", +] diff --git a/recipes/wip/hadrian/recipe.toml b/recipes/wip/hadrian/recipe.toml new file mode 100644 index 00000000..768f235f --- /dev/null +++ b/recipes/wip/hadrian/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for building, see https://github.com/ghc/hadrian +[source] +tar = "https://downloads.haskell.org/~ghc/9.8.1/hadrian-bootstrap-sources/hadrian-bootstrap-sources-9.6.2.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/halloy/recipe.toml b/recipes/wip/halloy/recipe.toml new file mode 100644 index 00000000..37398238 --- /dev/null +++ b/recipes/wip/halloy/recipe.toml @@ -0,0 +1,5 @@ +#TODO half 2.3.1 package require rustc 1.70 or newer +[source] +git = "https://github.com/squidowl/halloy" +[build] +template = "cargo" diff --git a/recipes/wip/hare-std/recipe.toml b/recipes/wip/hare-std/recipe.toml new file mode 100644 index 00000000..e94dbaee --- /dev/null +++ b/recipes/wip/hare-std/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for building, see https://harelang.org/installation/ +[source] +git = "https://git.sr.ht/~sircmpwn/hare" +[build] +template = "custom" diff --git a/recipes/wip/harec/recipe.toml b/recipes/wip/harec/recipe.toml new file mode 100644 index 00000000..0ee8c0d5 --- /dev/null +++ b/recipes/wip/harec/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://git.sr.ht/~sircmpwn/harec" +[build] +template = "configure" diff --git a/recipes/wip/hashgood/recipe.toml b/recipes/wip/hashgood/recipe.toml new file mode 100644 index 00000000..f7689c22 --- /dev/null +++ b/recipes/wip/hashgood/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/thombles/hashgood/archive/refs/tags/v0.4.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/headers/recipe.toml b/recipes/wip/headers/recipe.toml new file mode 100644 index 00000000..b1eea7f4 --- /dev/null +++ b/recipes/wip/headers/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error (related to X11?) +[source] +git = "https://github.com/transmissions11/headers" +[build] +template = "cargo" diff --git a/recipes/wip/heh/recipe.toml b/recipes/wip/heh/recipe.toml new file mode 100644 index 00000000..284fc935 --- /dev/null +++ b/recipes/wip/heh/recipe.toml @@ -0,0 +1,5 @@ +#TODO x11rb crate error +[source] +tar = "https://github.com/ndd7xv/heh/archive/refs/tags/v0.4.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/helix/recipe.toml b/recipes/wip/helix/recipe.toml new file mode 100644 index 00000000..3232d007 --- /dev/null +++ b/recipes/wip/helix/recipe.toml @@ -0,0 +1,8 @@ +#TODO helix-term error (after cargo update) +[source] +tar = "https://github.com/helix-editor/helix/releases/download/23.05/helix-23.05-source.tar.xz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages helix-term +""" diff --git a/recipes/wip/hexyl/recipe.toml b/recipes/wip/hexyl/recipe.toml new file mode 100644 index 00000000..5b9d03fc --- /dev/null +++ b/recipes/wip/hexyl/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +tar = "https://github.com/sharkdp/hexyl/archive/refs/tags/v0.13.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/hgrep/recipe.toml b/recipes/wip/hgrep/recipe.toml new file mode 100644 index 00000000..e1c5c9d1 --- /dev/null +++ b/recipes/wip/hgrep/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/rhysd/hgrep/archive/refs/tags/v0.3.3.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/hickory-dns/recipe.toml b/recipes/wip/hickory-dns/recipe.toml new file mode 100644 index 00000000..87cd6455 --- /dev/null +++ b/recipes/wip/hickory-dns/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/hickory-dns/hickory-dns/archive/refs/tags/v0.24.0.tar.gz" +[build] +template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/himalaya/recipe.toml b/recipes/wip/himalaya/recipe.toml new file mode 100644 index 00000000..d45d5b0a --- /dev/null +++ b/recipes/wip/himalaya/recipe.toml @@ -0,0 +1,8 @@ +#TODO ring crate error +[source] +tar = "https://github.com/soywod/himalaya/archive/refs/tags/v0.7.3.tar.gz" +[build] +template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/honggfuzz/recipe.toml b/recipes/wip/honggfuzz/recipe.toml new file mode 100644 index 00000000..5eea1b3a --- /dev/null +++ b/recipes/wip/honggfuzz/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for "make", see https://github.com/google/honggfuzz#installation +[source] +tar = "https://github.com/google/honggfuzz/archive/refs/tags/2.6.tar.gz" +[build] +template = "custom" +dependencies = [ + "libunwind", +] diff --git a/recipes/wip/horsetab/recipe.toml b/recipes/wip/horsetab/recipe.toml new file mode 100644 index 00000000..7b475eab --- /dev/null +++ b/recipes/wip/horsetab/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ChrisVilches/horsetab" +[build] +template = "cargo" diff --git a/recipes/wip/hpcg/recipe.toml b/recipes/wip/hpcg/recipe.toml new file mode 100644 index 00000000..fe63ce86 --- /dev/null +++ b/recipes/wip/hpcg/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for building, see https://github.com/hpcg-benchmark/hpcg/blob/master/INSTALL +[source] +git = "https://github.com/hpcg-benchmark/hpcg" +[build] +template = "custom" diff --git a/recipes/wip/htmlq/recipe.toml b/recipes/wip/htmlq/recipe.toml new file mode 100644 index 00000000..e3de72dd --- /dev/null +++ b/recipes/wip/htmlq/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +git = "https://github.com/mgdm/htmlq" +[build] +template = "cargo" diff --git a/recipes/wip/humphrey/recipe.toml b/recipes/wip/humphrey/recipe.toml new file mode 100644 index 00000000..03173fdc --- /dev/null +++ b/recipes/wip/humphrey/recipe.toml @@ -0,0 +1,16 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/w-henderson/Humphrey" +[build] +template = "custom" +script = """ +"${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --package "${humphrey_server}" \ + --release + --all-features + mkdir -pv "${COOKBOOK_STAGE}/bin" + cp -v \ + "target/${TARGET}/release/${humphrey_server}" \ + "${COOKBOOK_STAGE}/bin/${humphrey}_${humphrey_server}" +""" diff --git a/recipes/wip/hvm/recipe.toml b/recipes/wip/hvm/recipe.toml new file mode 100644 index 00000000..4bdb4831 --- /dev/null +++ b/recipes/wip/hvm/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error +[source] +git = "https://github.com/HigherOrderCO/HVM" +[build] +template = "cargo" diff --git a/recipes/wip/hwatch/recipe.toml b/recipes/wip/hwatch/recipe.toml new file mode 100644 index 00000000..e712a19e --- /dev/null +++ b/recipes/wip/hwatch/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/blacknon/hwatch/archive/refs/tags/0.3.10.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/hwloc/recipe.toml b/recipes/wip/hwloc/recipe.toml new file mode 100644 index 00000000..dd026357 --- /dev/null +++ b/recipes/wip/hwloc/recipe.toml @@ -0,0 +1,9 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.open-mpi.org/release/hwloc/v2.9/hwloc-2.9.3.tar.bz2" +[build] +template = "configure" +dependencies = [ + "libxml2", + "libevdev", +] diff --git a/recipes/wip/hyperfine/recipe.toml b/recipes/wip/hyperfine/recipe.toml new file mode 100644 index 00000000..ea9e3383 --- /dev/null +++ b/recipes/wip/hyperfine/recipe.toml @@ -0,0 +1,5 @@ +#TODO libc::RUSAGE_CHILDREN +[source] +tar = "https://github.com/sharkdp/hyperfine/archive/refs/tags/v1.17.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/hyprland/recipe.toml b/recipes/wip/hyprland/recipe.toml new file mode 100644 index 00000000..ee54a979 --- /dev/null +++ b/recipes/wip/hyprland/recipe.toml @@ -0,0 +1,24 @@ +#TODO missing CMake configuration, see https://wiki.hyprland.org/Getting-Started/Installation/#cmake-recommended +[source] +git = "https://github.com/hyprwm/Hyprland" +rev = "9afdd61adeaf413afbe853dbc5fdf6853c8bde21" +[build] +template = "custom" +dependencies = [ + "libinput", + "libxkbcommon", + "libxcb", + "pango", + "cairo", + "pixman", + "libwayland", + "seatd", + "libxrender", + "libx11", + "libxcomposite", + "libxfixes", +] +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/home/user/.local/share/wayland-sessions +cp -rv "${COOKBOOK_SOURCE}"/example/hyprland.desktop "${COOKBOOK_STAGE}"/home/user/.local/share/wayland-sessions +""" diff --git a/recipes/wip/i2pd/recipe.toml b/recipes/wip/i2pd/recipe.toml new file mode 100644 index 00000000..9467ad1c --- /dev/null +++ b/recipes/wip/i2pd/recipe.toml @@ -0,0 +1,25 @@ +#TODO probably wrong script, see https://i2pd.readthedocs.io/en/latest/devs/building/unix/ +[source] +tar = "https://github.com/PurpleI2P/i2pd/archive/refs/tags/2.48.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "boost", + "openssl1", + "zlib", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/iamb/recipe.toml b/recipes/wip/iamb/recipe.toml new file mode 100644 index 00000000..68a5583e --- /dev/null +++ b/recipes/wip/iamb/recipe.toml @@ -0,0 +1,5 @@ +#TODO Rust version error (after cargo update) +[source] +git = "https://github.com/ulyssa/iamb" +[build] +template = "cargo" diff --git a/recipes/wip/imagemagick/recipe.toml b/recipes/wip/imagemagick/recipe.toml new file mode 100644 index 00000000..85b8a730 --- /dev/null +++ b/recipes/wip/imagemagick/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +tar = "https://imagemagick.org/archive/ImageMagick-7.1.1-20.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/imager/recipe.toml b/recipes/wip/imager/recipe.toml new file mode 100644 index 00000000..b93923a1 --- /dev/null +++ b/recipes/wip/imager/recipe.toml @@ -0,0 +1,12 @@ +#TODO vmaf-sys crate error +[source] +git = "https://github.com/imager-io/imager" +[build] +template = "custom" +dependencies = [ + "xz", + "openssl1", +] +script = """ +cookbook_cargo_packages imager +""" diff --git a/recipes/wip/imlib2/recipe.toml b/recipes/wip/imlib2/recipe.toml new file mode 100644 index 00000000..22df0df1 --- /dev/null +++ b/recipes/wip/imlib2/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +[source] +tar = "https://git.enlightenment.org/old/legacy-imlib2/archive/v1.11.1.tar.gz" +[build] +template = "configure" +dependencies = [ + "libjpeg", + "libpng", + "freetype2", +] diff --git a/recipes/wip/incompact3d/recipe.toml b/recipes/wip/incompact3d/recipe.toml new file mode 100644 index 00000000..4f077165 --- /dev/null +++ b/recipes/wip/incompact3d/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for "make", see https://github.com/xcompact3d/Incompact3d#source-download-and-compilation +#TODO probably missing dependencies +[source] +tar = "https://github.com/xcompact3d/Incompact3d/archive/refs/tags/v4.0.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/influxdb/recipe.toml b/recipes/wip/influxdb/recipe.toml new file mode 100644 index 00000000..0daebc2e --- /dev/null +++ b/recipes/wip/influxdb/recipe.toml @@ -0,0 +1,6 @@ +#TODO probably wrong template, lacking build instructions +#TODO configure the CLI and service +[source] +tar = "https://github.com/influxdata/influxdb/archive/refs/tags/v2.7.3.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/inih/recipe.toml b/recipes/wip/inih/recipe.toml new file mode 100644 index 00000000..163e1f51 --- /dev/null +++ b/recipes/wip/inih/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, see https://github.com/benhoyt/inih#meson-notes +[source] +tar = "https://github.com/benhoyt/inih/archive/refs/tags/r57.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/iniparser/recipe.toml b/recipes/wip/iniparser/recipe.toml new file mode 100644 index 00000000..14630337 --- /dev/null +++ b/recipes/wip/iniparser/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for a "make", see https://github.com/ndevilla/iniparser#ii---building-project +[source] +git = "https://github.com/ndevilla/iniparser" +[build] +template = "custom" diff --git a/recipes/wip/inko/recipe.toml b/recipes/wip/inko/recipe.toml new file mode 100644 index 00000000..0f6d33df --- /dev/null +++ b/recipes/wip/inko/recipe.toml @@ -0,0 +1,5 @@ +#TODO Require LLVM 15 +[source] +tar = "https://releases.inko-lang.org/0.11.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/inkscape/recipe.toml b/recipes/wip/inkscape/recipe.toml new file mode 100644 index 00000000..1beea316 --- /dev/null +++ b/recipes/wip/inkscape/recipe.toml @@ -0,0 +1,34 @@ +#TODO probably wrong script, see https://inkscape.org/develop/getting-started/#compile +#TODO missing dependencies, see: https://gitlab.com/inkscape/inkscape-ci-docker/-/raw/master/install_dependencies.sh +[source] +tar = "https://inkscape.org/gallery/item/44467/inkscape-1.3.1.tar.xz" +[build] +template = "custom" +dependencies = [ + "boost", + "glib", + "gtk3", + "gtk3mm", + "liblcms", + "pango", + "libpng", + "readline", + "libxml2", + "libxslt", + "zlib", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/inlyne/recipe.toml b/recipes/wip/inlyne/recipe.toml new file mode 100644 index 00000000..6d1a27b5 --- /dev/null +++ b/recipes/wip/inlyne/recipe.toml @@ -0,0 +1,7 @@ +#TODO ucred::get_peer_cred +#TODO nix::sys::socket +#TODO cmsg_space! +[source] +git = "https://github.com/trimental/inlyne.git" +[build] +template = "cargo" \ No newline at end of file diff --git a/recipes/wip/innernet-cli/recipe.toml b/recipes/wip/innernet-cli/recipe.toml new file mode 100644 index 00000000..267c4202 --- /dev/null +++ b/recipes/wip/innernet-cli/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/tonarino/innernet/archive/refs/tags/v1.6.0.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages innernet +""" diff --git a/recipes/wip/innernet-server/recipe.toml b/recipes/wip/innernet-server/recipe.toml new file mode 100644 index 00000000..001e8ec5 --- /dev/null +++ b/recipes/wip/innernet-server/recipe.toml @@ -0,0 +1,11 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/tonarino/innernet/archive/refs/tags/v1.6.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "sqlite3", +] +script = """ +cookbook_cargo_packages innernet-server +""" diff --git a/recipes/wip/intelli-shell/recipe.toml b/recipes/wip/intelli-shell/recipe.toml new file mode 100644 index 00000000..5a987b15 --- /dev/null +++ b/recipes/wip/intelli-shell/recipe.toml @@ -0,0 +1,13 @@ +#TODO OpenSSL error +[source] +tar = "https://github.com/lasantosr/intelli-shell/archive/refs/tags/v0.2.6.tar.gz" +[build] +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +export OPENSSL_DIR="${COOKBOOK_SYSROOT}" +export OPENSSL_STATIC="true" +cookbook_cargo +""" diff --git a/recipes/wip/interaction-calculus/recipe.toml b/recipes/wip/interaction-calculus/recipe.toml new file mode 100644 index 00000000..f5996500 --- /dev/null +++ b/recipes/wip/interaction-calculus/recipe.toml @@ -0,0 +1,5 @@ +#TODO redox_syscall is very outdated on the dependency tree +[source] +git = "https://github.com/VictorTaelin/Interaction-Calculus" +[build] +template = "cargo" diff --git a/recipes/wip/intermodal/recipe.toml b/recipes/wip/intermodal/recipe.toml new file mode 100644 index 00000000..2efca300 --- /dev/null +++ b/recipes/wip/intermodal/recipe.toml @@ -0,0 +1,9 @@ +#TODO termios crate error +[source] +git = "https://github.com/casey/intermodal" +[build] +template = "custom" +script = """ +cookbook_cargo +mv "${COOKBOOK_STAGE}/bin/imdl" "${COOKBOOK_STAGE}/bin/intermodal" +""" diff --git a/recipes/wip/intltool/recipe.toml b/recipes/wip/intltool/recipe.toml new file mode 100644 index 00000000..3a5ae285 --- /dev/null +++ b/recipes/wip/intltool/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +tar = "https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/ioquake3/recipe.toml b/recipes/wip/ioquake3/recipe.toml new file mode 100644 index 00000000..8872ae5e --- /dev/null +++ b/recipes/wip/ioquake3/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for "make", see https://github.com/ioquake/ioq3#compilation-and-installation +[source] +git = "https://github.com/ioquake/ioq3" +[build] +template = "custom" +dependencies = [ + "sdl2", +] diff --git a/recipes/wip/iotdb/recipe.toml b/recipes/wip/iotdb/recipe.toml new file mode 100644 index 00000000..fa784278 --- /dev/null +++ b/recipes/wip/iotdb/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Maven, see https://github.com/apache/iotdb#build-iotdb-from-source +[source] +tar = "https://github.com/apache/iotdb/archive/refs/tags/v1.2.2.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/irust/recipe.toml b/recipes/wip/irust/recipe.toml new file mode 100644 index 00000000..23429571 --- /dev/null +++ b/recipes/wip/irust/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/sigmaSd/IRust/archive/refs/tags/irust@1.71.4.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/ispc/recipe.toml b/recipes/wip/ispc/recipe.toml new file mode 100644 index 00000000..eb2e49fd --- /dev/null +++ b/recipes/wip/ispc/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for building, see https://github.com/ispc/ispc/wiki/ISPC-Development-Guide#build-system +[source] +tar = "https://github.com/ispc/ispc/archive/refs/tags/v1.22.0.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/itstool/recipe.toml b/recipes/wip/itstool/recipe.toml new file mode 100644 index 00000000..15c9800e --- /dev/null +++ b/recipes/wip/itstool/recipe.toml @@ -0,0 +1,8 @@ +#TODO require a Python module for libxml2 +[source] +tar = "http://files.itstool.org/itstool/itstool-2.0.7.tar.bz2" +[build] +template = "configure" +dependencies = [ + "libxml2", +] diff --git a/recipes/wip/jless/recipe.toml b/recipes/wip/jless/recipe.toml new file mode 100644 index 00000000..257f83c6 --- /dev/null +++ b/recipes/wip/jless/recipe.toml @@ -0,0 +1,5 @@ +#TODO redox_syscall crate error +[source] +tar = "https://github.com/PaulJuliusMartinez/jless/archive/refs/tags/v0.8.0.tar.gz" +[build] +template = "cargo" \ No newline at end of file diff --git a/recipes/wip/john-the-ripper/recipe.toml b/recipes/wip/john-the-ripper/recipe.toml new file mode 100644 index 00000000..0428e4cd --- /dev/null +++ b/recipes/wip/john-the-ripper/recipe.toml @@ -0,0 +1,11 @@ +#TODO missing script for GNU Autotools, see https://github.com/openwall/john/blob/bleeding-jumbo/doc/INSTALL +[source] +tar = "https://www.openwall.com/john/k/john-1.9.0-jumbo-1.tar.xz" +[build] +template = "custom" +dependencies = [ + "openssl1", + "nss", + "kerberos5", + "libgmp", +] diff --git a/recipes/wip/joshuto/recipe.toml b/recipes/wip/joshuto/recipe.toml new file mode 100644 index 00000000..0f62d970 --- /dev/null +++ b/recipes/wip/joshuto/recipe.toml @@ -0,0 +1,5 @@ +#TODO open/trash crates error +[source] +git = "https://github.com/kamiyaa/joshuto" +[build] +template = "cargo" diff --git a/recipes/wip/jql/recipe.toml b/recipes/wip/jql/recipe.toml new file mode 100644 index 00000000..7523b71a --- /dev/null +++ b/recipes/wip/jql/recipe.toml @@ -0,0 +1,8 @@ +#TODO compiled but not tested +[source] +tar = "https://github.com/yamafaktory/jql/archive/refs/tags/jql-v6.0.8.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages jql +""" diff --git a/recipes/wip/json-c/recipe.toml b/recipes/wip/json-c/recipe.toml new file mode 100644 index 00000000..bec5a761 --- /dev/null +++ b/recipes/wip/json-c/recipe.toml @@ -0,0 +1,20 @@ +#TODO maybe wrong script, see https://github.com/json-c/json-c#build-instructions-- +[source] +tar = "https://github.com/json-c/json-c/archive/refs/tags/json-c-0.17-20230812.tar.gz" +[build] +template = "custom" +script = """ + COOKBOOK_CONFIGURE="cmake" + COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/julia-lts/recipe.toml b/recipes/wip/julia-lts/recipe.toml new file mode 100644 index 00000000..bc50e21f --- /dev/null +++ b/recipes/wip/julia-lts/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for "make" +# using the full tarball with dependencies included +[source] +tar = "https://github.com/JuliaLang/julia/releases/download/v1.6.7/julia-1.6.7-full.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/julia/recipe.toml b/recipes/wip/julia/recipe.toml new file mode 100644 index 00000000..7f973591 --- /dev/null +++ b/recipes/wip/julia/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for "make" +# using the full tarball with dependencies included +[source] +tar = "https://github.com/JuliaLang/julia/releases/download/v1.9.4/julia-1.9.4-full.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/just/recipe.toml b/recipes/wip/just/recipe.toml new file mode 100644 index 00000000..823c10ec --- /dev/null +++ b/recipes/wip/just/recipe.toml @@ -0,0 +1,5 @@ +#TODO Schemes not supported +[source] +tar = "https://github.com/casey/just/archive/refs/tags/1.13.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/kalker/recipe.toml b/recipes/wip/kalker/recipe.toml new file mode 100644 index 00000000..aee4af09 --- /dev/null +++ b/recipes/wip/kalker/recipe.toml @@ -0,0 +1,13 @@ +#TODO gmp-mpfr-sys crate error +[source] +git = "https://github.com/PaddiM8/kalker" +[build] +template = "custom" +dependencies = [ + "libgmp", + "libmpfr", + "mpc", +] +script = """ +cookbook_cargo_packages kalker +""" diff --git a/recipes/wip/kanata/recipe.toml b/recipes/wip/kanata/recipe.toml new file mode 100644 index 00000000..38b84d1a --- /dev/null +++ b/recipes/wip/kanata/recipe.toml @@ -0,0 +1,5 @@ +#TODO program error, maybe needs porting +[source] +tar = "https://github.com/jtroo/kanata/archive/refs/tags/v1.3.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/kani/recipe.toml b/recipes/wip/kani/recipe.toml new file mode 100644 index 00000000..abee6ca2 --- /dev/null +++ b/recipes/wip/kani/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +tar = "https://github.com/model-checking/kani/archive/refs/tags/kani-0.28.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/kbt/recipe.toml b/recipes/wip/kbt/recipe.toml new file mode 100644 index 00000000..edd55d9f --- /dev/null +++ b/recipes/wip/kbt/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/bloznelis/kbt/archive/refs/tags/2.0.6.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/keepassxc/recipe.toml b/recipes/wip/keepassxc/recipe.toml new file mode 100644 index 00000000..222d23a7 --- /dev/null +++ b/recipes/wip/keepassxc/recipe.toml @@ -0,0 +1,32 @@ +#TODO probably wrong script, see https://github.com/keepassxreboot/keepassxc/wiki/Building-KeePassXC#linux +#TODO probably missing dependencies, see https://github.com/keepassxreboot/keepassxc/wiki/Building-KeePassXC#required-dependencies +[source] +tar = "https://github.com/keepassxreboot/keepassxc/releases/download/2.7.6/keepassxc-2.7.6-src.tar.xz" +[build] +template = "custom" +dependencies = [ + "qt5-base", + "qt5-svg", + "zlib", + "libbotan", + "libargon2", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On + -DWITH_XC_AUTOTYPE=OFF + -DWITH_XC_UPDATECHECK=OFF + -DKEEPASSXC_BUILD_TYPE=Release + -DWITH_APP_BUNDLE=OFF +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/kerberos5/recipe.toml b/recipes/wip/kerberos5/recipe.toml new file mode 100644 index 00000000..6a785c27 --- /dev/null +++ b/recipes/wip/kerberos5/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://kerberos.org/dist/krb5/1.21/krb5-1.21.2.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/kibi/recipe.toml b/recipes/wip/kibi/recipe.toml new file mode 100644 index 00000000..0686f853 --- /dev/null +++ b/recipes/wip/kibi/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +git = "https://github.com/ilai-deutel/kibi" +[build] +template = "cargo" diff --git a/recipes/wip/kodi/recipe.toml b/recipes/wip/kodi/recipe.toml new file mode 100644 index 00000000..3ae69123 --- /dev/null +++ b/recipes/wip/kodi/recipe.toml @@ -0,0 +1,56 @@ +#TODO probably wrong script, see https://github.com/xbmc/xbmc/blob/master/docs/README.Linux.md#4-build-kodi +#TODO missing dependencies, see: https://github.com/xbmc/xbmc/blob/master/docs/README.Linux.md#3-install-the-required-packages +[source] +tar = "https://github.com/xbmc/xbmc/archive/refs/tags/20.2-Nexus.tar.gz" +[build] +template = "custom" +dependencies = [ + "libass", + "libbluray", + "mesa", + "bzip2", + "curl", + "dbus", + "libflac", + "fontconfig", + "libfmt", + "freetype2", + "fribidi", + "libgcrypt", + "libgif", + "glew", + "gnutls3", + "mesa_glu", + "libgpg-error", + "libjpeg", + "libogg", + "pcre", + "libpng", + "openssl1", + "libtiff", + "sqlite3", + "libevdev", + "libunistring", + "libva", + "libvorbis", + "libxkbcommon", + "libuuid", + "libxslt", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On + -DCORE_PLATFORM_NAME=wayland + -DAPP_RENDER_SYSTEM=gl +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/krita/recipe.toml b/recipes/wip/krita/recipe.toml new file mode 100644 index 00000000..bbe663c0 --- /dev/null +++ b/recipes/wip/krita/recipe.toml @@ -0,0 +1,38 @@ +#TODO probably wrong script, see https://docs.krita.org/en/untranslatable_pages/building_krita.html#building-on-linux +#TODO missing dependencies? +[source] +tar = "https://download.kde.org/stable/krita/5.2.1/krita-5.2.1.tar.gz" +[build] +template = "custom" +dependencies = [ + "gexiv2", + "ffmpeg6", + "fftw", + "fontconfig", + "freetype2", + "fribidi", + "libgif", + "harfbuzz", + "liblcms", + "libpng", + "libtiff", + "libwebp", + "qt5-base", + "zlib", + "libmypaint", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/kubernetes/recipe.toml b/recipes/wip/kubernetes/recipe.toml new file mode 100644 index 00000000..4485d519 --- /dev/null +++ b/recipes/wip/kubernetes/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for "make", see https://github.com/kubernetes/community/blob/master/contributors/devel/development.md#building-kubernetes-on-a-local-osshell-environment +#TODO require Go +[source] +tar = "https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.25.16.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/kvazaar/recipe.toml b/recipes/wip/kvazaar/recipe.toml new file mode 100644 index 00000000..4fefd080 --- /dev/null +++ b/recipes/wip/kvazaar/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/ultravideo/kvazaar/releases/download/v2.2.0/kvazaar-2.2.0.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/lagrange/recipe.toml b/recipes/wip/lagrange/recipe.toml new file mode 100644 index 00000000..d67691d0 --- /dev/null +++ b/recipes/wip/lagrange/recipe.toml @@ -0,0 +1,31 @@ +#TODO probably wrong script, see https://github.com/skyjake/lagrange#how-to-compile +#TODO mpg123 dependency broken +[source] +tar = "https://git.skyjake.fi/gemini/lagrange/releases/download/v1.17.4/lagrange-1.17.4.tar.gz" +[build] +template = "custom" +dependencies = [ + "sdl2", + "openssl1", + "zlib", + "harfbuzz", + "pcre", + "fribidi", + "libunistring", +] +script = """ + COOKBOOK_CONFIGURE="cmake" + COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On + -DENABLE_MPG123=OFF +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/lame/recipe.toml b/recipes/wip/lame/recipe.toml new file mode 100644 index 00000000..a95e2055 --- /dev/null +++ b/recipes/wip/lame/recipe.toml @@ -0,0 +1,5 @@ +#TODO The redox target is not supported on the configure +[source] +tar = "https://sourceforge.net/projects/lame/files/lame/3.100/lame-3.100.tar.gz/download" +[build] +template = "configure" diff --git a/recipes/wip/lammps/recipe.toml b/recipes/wip/lammps/recipe.toml new file mode 100644 index 00000000..8111665e --- /dev/null +++ b/recipes/wip/lammps/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://docs.lammps.org/Build_cmake.html +[source] +tar = "https://github.com/lammps/lammps/archive/refs/tags/stable_2Aug2023_update1.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/lapce/recipe.toml b/recipes/wip/lapce/recipe.toml new file mode 100644 index 00000000..87e7c499 --- /dev/null +++ b/recipes/wip/lapce/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://github.com/lapce/lapce/archive/refs/tags/v0.2.7.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/lcs-image-diff/recipe.toml b/recipes/wip/lcs-image-diff/recipe.toml new file mode 100644 index 00000000..fc7730a3 --- /dev/null +++ b/recipes/wip/lcs-image-diff/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/bokuweb/lcs-image-diff-rs/archive/refs/tags/0.1.7.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/legdur/recipe.toml b/recipes/wip/legdur/recipe.toml new file mode 100644 index 00000000..9b1d72e7 --- /dev/null +++ b/recipes/wip/legdur/recipe.toml @@ -0,0 +1,5 @@ +#TODO camino crate error +[source] +tar = "https://hg.sr.ht/~cyplo/legdur/archive/tip.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/lemmeknow/recipe.toml b/recipes/wip/lemmeknow/recipe.toml new file mode 100644 index 00000000..78c23477 --- /dev/null +++ b/recipes/wip/lemmeknow/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +tar = "https://github.com/swanandx/lemmeknow/archive/refs/tags/v0.8.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/lenia/recipe.toml b/recipes/wip/lenia/recipe.toml new file mode 100644 index 00000000..acdae268 --- /dev/null +++ b/recipes/wip/lenia/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/BirdbrainEngineer/lenia" +[build] +template = "cargo" diff --git a/recipes/wip/less/recipe.toml b/recipes/wip/less/recipe.toml new file mode 100644 index 00000000..8c1024a3 --- /dev/null +++ b/recipes/wip/less/recipe.toml @@ -0,0 +1,9 @@ +#TODO waiting termcap fix +[source] +tar = "https://www.greenwoodsoftware.com/less/less-633.tar.gz" +[build] +template = "configure" +dependencies = [ + "termcap", + "libvterm", +] diff --git a/recipes/wip/level-zero/recipe.toml b/recipes/wip/level-zero/recipe.toml new file mode 100644 index 00000000..f0f19fd6 --- /dev/null +++ b/recipes/wip/level-zero/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/oneapi-src/level-zero#building-and-installing +[source] +tar = "https://github.com/oneapi-src/level-zero/archive/refs/tags/v1.15.1.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/lfs/recipe.toml b/recipes/wip/lfs/recipe.toml new file mode 100644 index 00000000..6f2e456d --- /dev/null +++ b/recipes/wip/lfs/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled after cargo update, but not tested +[source] +tar = "https://github.com/Canop/lfs/archive/refs/tags/v2.6.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/liba52/recipe.toml b/recipes/wip/liba52/recipe.toml new file mode 100644 index 00000000..253cd679 --- /dev/null +++ b/recipes/wip/liba52/recipe.toml @@ -0,0 +1,5 @@ +#TODO The redox target is not supported on the configure +[source] +tar = "https://liba52.sourceforge.io/files/a52dec-0.7.4.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libadwaita/recipe.toml b/recipes/wip/libadwaita/recipe.toml new file mode 100644 index 00000000..dd5d581e --- /dev/null +++ b/recipes/wip/libadwaita/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, see https://gitlab.gnome.org/GNOME/libadwaita#building +[source] +tar = "https://download.gnome.org/sources/libadwaita/1.4/libadwaita-1.4.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/libaio/recipe.toml b/recipes/wip/libaio/recipe.toml new file mode 100644 index 00000000..60911d07 --- /dev/null +++ b/recipes/wip/libaio/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for "make", see https://pagure.io/libaio/blob/master/f/INSTALL +[source] +tar = "https://releases.pagure.org/libaio/libaio-0.3.113.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/libaom/recipe.toml b/recipes/wip/libaom/recipe.toml new file mode 100644 index 00000000..93e9708d --- /dev/null +++ b/recipes/wip/libaom/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for CMake, see https://aomedia.googlesource.com/aom/#basic-build +[source] +git = "https://aomedia.googlesource.com/aom" +rev = "aca387522ccc0a1775716923d5489dd2d4b1e628" +[build] +template = "custom" diff --git a/recipes/wip/libarchive/recipe.toml b/recipes/wip/libarchive/recipe.toml new file mode 100644 index 00000000..176b87b1 --- /dev/null +++ b/recipes/wip/libarchive/recipe.toml @@ -0,0 +1,5 @@ +#TODO Undefined reference to "getgrnam" and "getgrgid" +[source] +tar = "https://libarchive.org/downloads/libarchive-3.6.2.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libargon2/recipe.toml b/recipes/wip/libargon2/recipe.toml new file mode 100644 index 00000000..58c03e49 --- /dev/null +++ b/recipes/wip/libargon2/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for "make", see https://github.com/P-H-C/phc-winner-argon2#usage +[source] +tar = "https://github.com/P-H-C/phc-winner-argon2/archive/refs/tags/20190702.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/libass/recipe.toml b/recipes/wip/libass/recipe.toml new file mode 100644 index 00000000..99da7b48 --- /dev/null +++ b/recipes/wip/libass/recipe.toml @@ -0,0 +1,11 @@ +#TODO waiting the TOML conversion of fribidi dependency +[source] +tar = "https://github.com/libass/libass/releases/download/0.17.1/libass-0.17.1.tar.xz" +[build] +template = "configure" +dependencies = [ + "freetype2", + "zlib", + "libpng", + "fribidi", +] diff --git a/recipes/wip/libatomic_ops/recipe.toml b/recipes/wip/libatomic_ops/recipe.toml new file mode 100644 index 00000000..c222925c --- /dev/null +++ b/recipes/wip/libatomic_ops/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://github.com/ivmai/libatomic_ops/releases/download/v7.8.0/libatomic_ops-7.8.0.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libavif/recipe.toml b/recipes/wip/libavif/recipe.toml new file mode 100644 index 00000000..af6cdcd0 --- /dev/null +++ b/recipes/wip/libavif/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/AOMediaCodec/libavif#build-notes +[source] +tar = "https://github.com/AOMediaCodec/libavif/archive/refs/tags/v1.0.2.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/libbluray/recipe.toml b/recipes/wip/libbluray/recipe.toml new file mode 100644 index 00000000..169f3e63 --- /dev/null +++ b/recipes/wip/libbluray/recipe.toml @@ -0,0 +1,13 @@ +#TODO compilation error +[source] +tar = "https://download.videolan.org/pub/videolan/libbluray/1.3.4/libbluray-1.3.4.tar.bz2" +[build] +template = "configure" +dependencies = [ + "libxml2", + "freetype2", + "zlib", + "libpng", + "fontconfig", + "expat", +] diff --git a/recipes/wip/libbotan/recipe.toml b/recipes/wip/libbotan/recipe.toml new file mode 100644 index 00000000..4c678a0f --- /dev/null +++ b/recipes/wip/libbotan/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://botan.randombit.net/releases/Botan-3.2.0.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libbrotli/recipe.toml b/recipes/wip/libbrotli/recipe.toml new file mode 100644 index 00000000..caf1adc2 --- /dev/null +++ b/recipes/wip/libbrotli/recipe.toml @@ -0,0 +1,20 @@ +#TODO probably wrong script, see https://github.com/google/brotli#cmake +[source] +tar = "https://github.com/google/brotli/archive/refs/tags/v1.1.0.tar.gz" +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libbsd/recipe.toml b/recipes/wip/libbsd/recipe.toml new file mode 100644 index 00000000..ec62ca5d --- /dev/null +++ b/recipes/wip/libbsd/recipe.toml @@ -0,0 +1,5 @@ +#TODO Can't find required MD5 functions in "libc" or "libmd" +[source] +tar = "https://libbsd.freedesktop.org/releases/libbsd-0.11.7.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libburn/recipe.toml b/recipes/wip/libburn/recipe.toml new file mode 100644 index 00000000..d31d959d --- /dev/null +++ b/recipes/wip/libburn/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error +[source] +tar = "http://files.libburnia-project.org/releases/libburn-1.5.4.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libcamera/recipe.toml b/recipes/wip/libcamera/recipe.toml new file mode 100644 index 00000000..d5d78650 --- /dev/null +++ b/recipes/wip/libcamera/recipe.toml @@ -0,0 +1,12 @@ +#TODO missing script for Meson, see https://libcamera.org/getting-started.html +[source] +git = "https://git.libcamera.org/libcamera/libcamera" +[build] +template = "custom" +dependencies = [ + "libyaml", + "libevdev", + "gstreamer", + "libjpeg", + "sdl2", +] diff --git a/recipes/wip/libcap/recipe.toml b/recipes/wip/libcap/recipe.toml new file mode 100644 index 00000000..8b6fc19a --- /dev/null +++ b/recipes/wip/libcap/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for "make" (maybe need the Go), see https://git.kernel.org/pub/scm/libs/libcap/libcap.git/tree/README#n20 +[source] +tar = "https://git.kernel.org/pub/scm/libs/libcap/libcap.git/snapshot/libcap-cap/v1.2.69.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/libcups/recipe.toml b/recipes/wip/libcups/recipe.toml new file mode 100644 index 00000000..bbce4133 --- /dev/null +++ b/recipes/wip/libcups/recipe.toml @@ -0,0 +1,5 @@ +#TODO require printer drivers +[source] +tar = "https://github.com/OpenPrinting/cups/releases/download/v2.4.7/cups-2.4.7-source.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libdecor/recipe.toml b/recipes/wip/libdecor/recipe.toml new file mode 100644 index 00000000..5b842b01 --- /dev/null +++ b/recipes/wip/libdecor/recipe.toml @@ -0,0 +1,11 @@ +#TODO missing script for Meson, see https://gitlab.freedesktop.org/libdecor/libdecor#build-install +[source] +tar = "https://gitlab.freedesktop.org/libdecor/libdecor/uploads/ee5ef0f2c3a4743e8501a855d61cb397/libdecor-0.1.1.tar.xz" +[build] +template = "custom" +dependencies = [ + "cairo", + "pango", + "libwayland", + "dbus", +] diff --git a/recipes/wip/libdeflate/recipe.toml b/recipes/wip/libdeflate/recipe.toml new file mode 100644 index 00000000..34f65cb8 --- /dev/null +++ b/recipes/wip/libdeflate/recipe.toml @@ -0,0 +1,20 @@ +#TODO probably wrong script, see https://github.com/ebiggers/libdeflate#building +[source] +tar = "https://github.com/ebiggers/libdeflate/releases/download/v1.19/libdeflate-1.19.tar.gz" +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libdvbpsi/recipe.toml b/recipes/wip/libdvbpsi/recipe.toml new file mode 100644 index 00000000..4a6306c8 --- /dev/null +++ b/recipes/wip/libdvbpsi/recipe.toml @@ -0,0 +1,5 @@ +#TODO Compilation error +[source] +tar = "https://download.videolan.org/pub/libdvbpsi/1.3.3/libdvbpsi-1.3.3.tar.bz2" +[build] +template = "configure" diff --git a/recipes/wip/libdvdcss/recipe.toml b/recipes/wip/libdvdcss/recipe.toml new file mode 100644 index 00000000..62353687 --- /dev/null +++ b/recipes/wip/libdvdcss/recipe.toml @@ -0,0 +1,5 @@ +#TODO Compilation error +[source] +tar = "https://download.videolan.org/pub/libdvdcss/1.4.3/libdvdcss-1.4.3.tar.bz2" +[build] +template = "configure" diff --git a/recipes/wip/libdvdnav/recipe.toml b/recipes/wip/libdvdnav/recipe.toml new file mode 100644 index 00000000..a026fab4 --- /dev/null +++ b/recipes/wip/libdvdnav/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested yet +[source] +tar = "http://www.videolan.org/pub/videolan/libdvdnav/5.0.1/libdvdnav-5.0.1.tar.bz2" +[build] +template = "configure" diff --git a/recipes/wip/libdvdread/recipe.toml b/recipes/wip/libdvdread/recipe.toml new file mode 100644 index 00000000..3b3b4e84 --- /dev/null +++ b/recipes/wip/libdvdread/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested yet +[source] +tar = "http://www.videolan.org/pub/videolan/libdvdread/5.0.0/libdvdread-5.0.0.tar.bz2" +[build] +template = "configure" diff --git a/recipes/wip/libebml/recipe.toml b/recipes/wip/libebml/recipe.toml new file mode 100644 index 00000000..55e5e998 --- /dev/null +++ b/recipes/wip/libebml/recipe.toml @@ -0,0 +1,20 @@ +#TODO probably wrong script, see https://github.com/Matroska-Org/libebml#building-and-installing +[source] +tar = "https://dl.matroska.org/downloads/libebml/libebml-1.4.4.tar.xz" +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libedit/recipe.toml b/recipes/wip/libedit/recipe.toml new file mode 100644 index 00000000..367f46b6 --- /dev/null +++ b/recipes/wip/libedit/recipe.toml @@ -0,0 +1,10 @@ +#TODO make dependencies work +[source] +tar = "https://www.thrysoee.dk/editline/libedit-20221030-3.1.tar.gz" +[build] +template = "configure" +dependencies = [ + "ncurses", + "termcap", + "terminfo", +] \ No newline at end of file diff --git a/recipes/wip/libenet/recipe.toml b/recipes/wip/libenet/recipe.toml new file mode 100644 index 00000000..b2747475 --- /dev/null +++ b/recipes/wip/libenet/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error +[source] +tar = "http://enet.bespin.org/download/enet-1.3.17.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libepoxy/recipe.toml b/recipes/wip/libepoxy/recipe.toml new file mode 100644 index 00000000..f7ca74b0 --- /dev/null +++ b/recipes/wip/libepoxy/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for Meson, see https://github.com/anholt/libepoxy#building +[source] +tar = "https://download.gnome.org/sources/libepoxy/1.5/libepoxy-1.5.10.tar.xz" +[build] +template = "custom" +dependencies = [ + "mesa", +] diff --git a/recipes/wip/liberty-eiffel/recipe.toml b/recipes/wip/liberty-eiffel/recipe.toml new file mode 100644 index 00000000..e203558e --- /dev/null +++ b/recipes/wip/liberty-eiffel/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for "install.sh", adapt to Redox +[source] +tar = "http://download.savannah.gnu.org/releases/liberty-eiffel/bell.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/libevdev/recipe.toml b/recipes/wip/libevdev/recipe.toml new file mode 100644 index 00000000..cda62e0e --- /dev/null +++ b/recipes/wip/libevdev/recipe.toml @@ -0,0 +1,5 @@ +#TODO weird error, seems to be related to outdated compiler. +[source] +tar = "https://www.freedesktop.org/software/libevdev/libevdev-1.13.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libevent/recipe.toml b/recipes/wip/libevent/recipe.toml new file mode 100644 index 00000000..ac50438b --- /dev/null +++ b/recipes/wip/libevent/recipe.toml @@ -0,0 +1,23 @@ +#TODO probably wrong script, see https://github.com/libevent/libevent#cmake-unix +[source] +tar = "https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz" +[build] +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libfmt/recipe.toml b/recipes/wip/libfmt/recipe.toml new file mode 100644 index 00000000..3c6df91e --- /dev/null +++ b/recipes/wip/libfmt/recipe.toml @@ -0,0 +1,20 @@ +#TODO probably wrong script, see https://fmt.dev/latest/usage.html#building-the-library +[source] +tar = "https://github.com/fmtlib/fmt/archive/refs/tags/10.0.0.tar.gz" +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libfuse2/recipe.toml b/recipes/wip/libfuse2/recipe.toml new file mode 100644 index 00000000..4f20632d --- /dev/null +++ b/recipes/wip/libfuse2/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for Meson, see https://github.com/libfuse/libfuse#installation +#TODO require the "fused" daemon (equivalent to the Linux kernel module but in user-space) +[source] +tar = "https://github.com/libfuse/libfuse/releases/download/fuse-2.9.9/fuse-2.9.9.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/libfuse3/recipe.toml b/recipes/wip/libfuse3/recipe.toml new file mode 100644 index 00000000..170c3bd7 --- /dev/null +++ b/recipes/wip/libfuse3/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for Meson, see https://github.com/libfuse/libfuse#installation +#TODO require the "fused" daemon (equivalent to the Linux kernel module but in user-space) +[source] +tar = "https://github.com/libfuse/libfuse/releases/download/fuse-3.16.2/fuse-3.16.2.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/libgav1/recipe.toml b/recipes/wip/libgav1/recipe.toml new file mode 100644 index 00000000..41f67b7f --- /dev/null +++ b/recipes/wip/libgav1/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for CMake, see https://chromium.googlesource.com/codecs/libgav1/#compile +[source] +git = "https://chromium.googlesource.com/codecs/libgav1" +rev = "e386d8f1fb983200972d159b9be47fd5d0776708" +[build] +template = "custom" diff --git a/recipes/wip/libgcrypt/recipe.toml b/recipes/wip/libgcrypt/recipe.toml new file mode 100644 index 00000000..441fc1b6 --- /dev/null +++ b/recipes/wip/libgcrypt/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error +[source] +tar = "https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.10.2.tar.bz2" +[build] +template = "configure" \ No newline at end of file diff --git a/recipes/wip/libgif/recipe.toml b/recipes/wip/libgif/recipe.toml new file mode 100644 index 00000000..4f099202 --- /dev/null +++ b/recipes/wip/libgif/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://sourceforge.net/projects/giflib/files/giflib-5.2.1.tar.gz/download" +[build] +template = "configure" diff --git a/recipes/wip/libgit2/recipe.toml b/recipes/wip/libgit2/recipe.toml new file mode 100644 index 00000000..3283c74a --- /dev/null +++ b/recipes/wip/libgit2/recipe.toml @@ -0,0 +1,23 @@ +#TODO maybe wrong script, see https://github.com/libgit2/libgit2#building-libgit2---using-cmake +[source] +tar = "https://github.com/libgit2/libgit2/archive/refs/tags/v1.6.4.tar.gz" +[build] +template = "custom" +dependencies = [ + "openssl1", +] +script = """ + COOKBOOK_CONFIGURE="cmake" + COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libglm/recipe.toml b/recipes/wip/libglm/recipe.toml new file mode 100644 index 00000000..dae88cd3 --- /dev/null +++ b/recipes/wip/libglm/recipe.toml @@ -0,0 +1,5 @@ +#TODO Needs to determine the script +[source] +tar = "https://github.com/g-truc/glm/archive/refs/tags/0.9.9.8.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/libgloox/recipe.toml b/recipes/wip/libgloox/recipe.toml new file mode 100644 index 00000000..9bd0156f --- /dev/null +++ b/recipes/wip/libgloox/recipe.toml @@ -0,0 +1,8 @@ +#TODO maybe wrong template +[source] +tar = "https://camaya.net/download/gloox-1.0.27.tar.bz2" +[build] +template = "configure" +dependencies = [ + "gnutls3", +] diff --git a/recipes/wip/libgpg-error/recipe.toml b/recipes/wip/libgpg-error/recipe.toml new file mode 100644 index 00000000..ee65c313 --- /dev/null +++ b/recipes/wip/libgpg-error/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error +[source] +tar = "https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.47.tar.bz2" +[build] +template = "configure" diff --git a/recipes/wip/libgphoto2/recipe.toml b/recipes/wip/libgphoto2/recipe.toml new file mode 100644 index 00000000..4142c827 --- /dev/null +++ b/recipes/wip/libgphoto2/recipe.toml @@ -0,0 +1,5 @@ +#TODO probably wrong template, lacking build instructions +[source] +tar = "https://sourceforge.net/projects/gphoto/files/libgphoto/2.5.31/libgphoto2-2.5.31.tar.xz/download" +[build] +template = "configure" diff --git a/recipes/wip/libharu/recipe.toml b/recipes/wip/libharu/recipe.toml new file mode 100644 index 00000000..470c28a3 --- /dev/null +++ b/recipes/wip/libharu/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +tar = "https://github.com/libharu/libharu/archive/refs/tags/v2.4.3.tar.gz" +[build] +template = "custom" +script = """ +./buildconf.sh +cookbook_configure +""" diff --git a/recipes/wip/libimath/recipe.toml b/recipes/wip/libimath/recipe.toml new file mode 100644 index 00000000..fd06adcf --- /dev/null +++ b/recipes/wip/libimath/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://imath.readthedocs.io/en/latest/install.html#linux-macos +[source] +tar = "https://github.com/AcademySoftwareFoundation/Imath/archive/refs/tags/v3.1.9.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/libinput/recipe.toml b/recipes/wip/libinput/recipe.toml new file mode 100644 index 00000000..1c042c33 --- /dev/null +++ b/recipes/wip/libinput/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for Meson, see https://wayland.freedesktop.org/libinput/doc/latest/building.html#building +[source] +tar = "https://gitlab.freedesktop.org/libinput/libinput/-/archive/1.24.0/libinput-1.24.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "eudev", + "libevdev", +] diff --git a/recipes/wip/libisoburn/recipe.toml b/recipes/wip/libisoburn/recipe.toml new file mode 100644 index 00000000..47717bac --- /dev/null +++ b/recipes/wip/libisoburn/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error +[source] +tar = "http://files.libburnia-project.org/releases/libisoburn-1.5.4.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libisofs/recipe.toml b/recipes/wip/libisofs/recipe.toml new file mode 100644 index 00000000..5fa6ac52 --- /dev/null +++ b/recipes/wip/libisofs/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error +[source] +tar = "http://files.libburnia-project.org/releases/libisofs-1.5.4.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libjpeg-turbo/recipe.toml b/recipes/wip/libjpeg-turbo/recipe.toml new file mode 100644 index 00000000..80be4ed9 --- /dev/null +++ b/recipes/wip/libjpeg-turbo/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/BUILDING.md#build-procedure +[source] +tar = "https://sourceforge.net/projects/libjpeg-turbo/files/3.0.1/libjpeg-turbo-3.0.1.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/libjxl/recipe.toml b/recipes/wip/libjxl/recipe.toml new file mode 100644 index 00000000..c6e443ac --- /dev/null +++ b/recipes/wip/libjxl/recipe.toml @@ -0,0 +1,13 @@ +#TODO missing script for CMake, see https://github.com/libjxl/libjxl/blob/main/BUILDING.md +[source] +tar = "https://github.com/libjxl/libjxl/archive/refs/tags/v0.8.2.tar.gz" +[build] +template = "custom" +dependencies = [ + "libbrotli", + "libjpeg", + "libgif", + "libpng", + "libwebp", + "openexr", +] diff --git a/recipes/wip/liblcms/recipe.toml b/recipes/wip/liblcms/recipe.toml new file mode 100644 index 00000000..e1abd9a7 --- /dev/null +++ b/recipes/wip/liblcms/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/mm2/Little-CMS/releases/download/lcms2.15/lcms2-2.15.tar.gz" +[build] +template = "configure" +dependencies = [ + "libtiff", +] diff --git a/recipes/wip/liblo/recipe.toml b/recipes/wip/liblo/recipe.toml new file mode 100644 index 00000000..3e26b301 --- /dev/null +++ b/recipes/wip/liblo/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error +[source] +tar = "http://downloads.sourceforge.net/liblo/liblo-0.31.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libmad/recipe.toml b/recipes/wip/libmad/recipe.toml new file mode 100644 index 00000000..b559ea6f --- /dev/null +++ b/recipes/wip/libmad/recipe.toml @@ -0,0 +1,5 @@ +#TODO the redox target is not supported on the configure +[source] +tar = "https://sourceforge.net/projects/mad/files/libmad/0.15.1b/libmad-0.15.1b.tar.gz/download" +[build] +template = "configure" diff --git a/recipes/wip/libmatroska/recipe.toml b/recipes/wip/libmatroska/recipe.toml new file mode 100644 index 00000000..a5b2b0ba --- /dev/null +++ b/recipes/wip/libmatroska/recipe.toml @@ -0,0 +1,20 @@ +#TODO probably wrong script, see https://github.com/Matroska-Org/libmatroska#building-and-installing +[source] +tar = "https://dl.matroska.org/downloads/libmatroska/libmatroska-1.7.1.tar.xz" +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libmd/recipe.toml b/recipes/wip/libmd/recipe.toml new file mode 100644 index 00000000..998b9e41 --- /dev/null +++ b/recipes/wip/libmd/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://archive.hadrons.org/software/libmd/libmd-1.1.0.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libmpeg2/recipe.toml b/recipes/wip/libmpeg2/recipe.toml new file mode 100644 index 00000000..e93444f8 --- /dev/null +++ b/recipes/wip/libmpeg2/recipe.toml @@ -0,0 +1,5 @@ +#TODO the redox target is not supported on the configure +[source] +tar = "https://libmpeg2.sourceforge.io/files/libmpeg2-0.5.1.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libmypaint/recipe.toml b/recipes/wip/libmypaint/recipe.toml new file mode 100644 index 00000000..94ef6725 --- /dev/null +++ b/recipes/wip/libmypaint/recipe.toml @@ -0,0 +1,9 @@ +#TODO probably missing dependencies, see: https://github.com/mypaint/libmypaint/#dependencies +[source] +tar = "https://github.com/mypaint/libmypaint/releases/download/v1.6.0/libmypaint-1.6.0.tar.xz" +[build] +template = "configure" +dependencies = [ + "glib", + "gobject-introspection", +] diff --git a/recipes/wip/libnettle/recipe.toml b/recipes/wip/libnettle/recipe.toml new file mode 100644 index 00000000..819dc244 --- /dev/null +++ b/recipes/wip/libnettle/recipe.toml @@ -0,0 +1,9 @@ +#TODO compiled but not tested +[source] +tar = "https://ftp.gnu.org/gnu/nettle/nettle-3.8.1.tar.gz" +[build] +template = "configure" +depencencies = [ + "gnutls", + "libgmp", +] diff --git a/recipes/wip/libnlopt/recipe.toml b/recipes/wip/libnlopt/recipe.toml new file mode 100644 index 00000000..fe137c6a --- /dev/null +++ b/recipes/wip/libnlopt/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/stevengj/nlopt#readme +[source] +tar = "https://github.com/stevengj/nlopt/archive/refs/tags/v2.7.1.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/libnotify/recipe.toml b/recipes/wip/libnotify/recipe.toml new file mode 100644 index 00000000..456d3cd3 --- /dev/null +++ b/recipes/wip/libnotify/recipe.toml @@ -0,0 +1,11 @@ +#TODO missing script for Meson +[source] +tar = "https://download.gnome.org/sources/libnotify/0.8/libnotify-0.8.3.tar.xz" +[build] +template = "custom" +dependencies = [ + "gtk3", + "gdk-pixbuf", + "gobject-introspection", + "glib", +] diff --git a/recipes/wip/libnsl/recipe.toml b/recipes/wip/libnsl/recipe.toml new file mode 100644 index 00000000..5321c4e8 --- /dev/null +++ b/recipes/wip/libnsl/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/thkukuk/libnsl/releases/download/v2.0.1/libnsl-2.0.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libpcap/recipe.toml b/recipes/wip/libpcap/recipe.toml new file mode 100644 index 00000000..72f11ba0 --- /dev/null +++ b/recipes/wip/libpcap/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://www.tcpdump.org/release/libpcap-1.10.4.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libpeas/recipe.toml b/recipes/wip/libpeas/recipe.toml new file mode 100644 index 00000000..cf0c9090 --- /dev/null +++ b/recipes/wip/libpeas/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, see https://gitlab.gnome.org/GNOME/libpeas +[source] +tar = "https://download.gnome.org/sources/libpeas/2.0/libpeas-2.0.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/libportaudio/recipe.toml b/recipes/wip/libportaudio/recipe.toml new file mode 100644 index 00000000..138ca20e --- /dev/null +++ b/recipes/wip/libportaudio/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error and require some Linux audio server +[source] +tar = "https://github.com/PortAudio/portaudio/archive/refs/tags/v19.7.0.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libpthread-stubs/recipe.toml b/recipes/wip/libpthread-stubs/recipe.toml new file mode 100644 index 00000000..5a866354 --- /dev/null +++ b/recipes/wip/libpthread-stubs/recipe.toml @@ -0,0 +1,6 @@ +#TODO not compiled or tested +#TODO probably missing dependencies +[source] +tar = "https://www.x.org/releases/individual/xcb/libpthread-stubs-0.5.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libraptor2/recipe.toml b/recipes/wip/libraptor2/recipe.toml new file mode 100644 index 00000000..00795c49 --- /dev/null +++ b/recipes/wip/libraptor2/recipe.toml @@ -0,0 +1,10 @@ +#TODO customization - https://librdf.org/raptor/INSTALL.html +#TODO pending dependency configuration +[source] +tar = "http://download.librdf.org/source/raptor2-2.0.16.tar.gz" +[build] +template = "configure" +dependencies = [ + "libxml2", + "libxslt", +] diff --git a/recipes/wip/librasqal/recipe.toml b/recipes/wip/librasqal/recipe.toml new file mode 100644 index 00000000..420b35a7 --- /dev/null +++ b/recipes/wip/librasqal/recipe.toml @@ -0,0 +1,6 @@ +#TODO customization - https://librdf.org/rasqal/INSTALL.html +#TODO compilation error +[source] +tar = "http://download.librdf.org/source/rasqal-0.9.33.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/librdf/recipe.toml b/recipes/wip/librdf/recipe.toml new file mode 100644 index 00000000..f4d6e596 --- /dev/null +++ b/recipes/wip/librdf/recipe.toml @@ -0,0 +1,6 @@ +#TODO customization - https://librdf.org/INSTALL.html +#TODO compilation error +[source] +tar = "http://download.librdf.org/source/redland-1.0.17.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libreoffice-dictionaries/recipe.toml b/recipes/wip/libreoffice-dictionaries/recipe.toml new file mode 100644 index 00000000..c3fd184b --- /dev/null +++ b/recipes/wip/libreoffice-dictionaries/recipe.toml @@ -0,0 +1,5 @@ +#TODO probably wrong template +[source] +tar = "https://download.documentfoundation.org/libreoffice/src/7.6.2/libreoffice-dictionaries-7.6.2.1.tar.xz?idx=2" +[build] +template = "configure" diff --git a/recipes/wip/libreoffice-translations/recipe.toml b/recipes/wip/libreoffice-translations/recipe.toml new file mode 100644 index 00000000..b824492f --- /dev/null +++ b/recipes/wip/libreoffice-translations/recipe.toml @@ -0,0 +1,5 @@ +#TODO probably wrong template +[source] +tar = "https://download.documentfoundation.org/libreoffice/src/7.6.2/libreoffice-translations-7.6.2.1.tar.xz?idx=4" +[build] +template = "configure" diff --git a/recipes/wip/libreoffice/recipe.toml b/recipes/wip/libreoffice/recipe.toml new file mode 100644 index 00000000..a10532e3 --- /dev/null +++ b/recipes/wip/libreoffice/recipe.toml @@ -0,0 +1,16 @@ +#TODO missing dependencies, see https://wiki.documentfoundation.org/Development/BuildingOnLinux#Build_dependencies +[source] +tar = "https://download.documentfoundation.org/libreoffice/src/7.6.2/libreoffice-7.6.2.1.tar.xz?idx=1" +[build] +template = "configure" +dependencies = [ + "kerberos5", + "python37", + "qt5-base", + "gtk3", + "nss", + "fontconfig", + "xwayland", + "gstreamer", + "libcups", +] diff --git a/recipes/wip/librkcommon/recipe.toml b/recipes/wip/librkcommon/recipe.toml new file mode 100644 index 00000000..9472d50c --- /dev/null +++ b/recipes/wip/librkcommon/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for CMake, see https://github.com/ospray/rkcommon#building +[source] +tar = "https://github.com/ospray/rkcommon/archive/refs/tags/v1.12.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "onetbb", +] diff --git a/recipes/wip/librsvg/recipe.toml b/recipes/wip/librsvg/recipe.toml new file mode 100644 index 00000000..213c6622 --- /dev/null +++ b/recipes/wip/librsvg/recipe.toml @@ -0,0 +1,16 @@ +#TODO not compiled or tested +#TODO build instructions - https://gnome.pages.gitlab.gnome.org/librsvg/devel-docs/compiling.html +[source] +tar = "https://download.gnome.org/sources/librsvg/2.56/librsvg-2.56.0.tar.xz" +[build] +template = "configure" +dependencies = [ + "cairo", + "freetype2", + "gdk-pixbuf", + "glib", + "gobject-introspection", + "harfbuzz", + "pango", + "libxml2", +] diff --git a/recipes/wip/libsamplerate/recipe.toml b/recipes/wip/libsamplerate/recipe.toml new file mode 100644 index 00000000..b0d81424 --- /dev/null +++ b/recipes/wip/libsamplerate/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +tar = "https://github.com/libsndfile/libsamplerate/releases/download/0.2.2/libsamplerate-0.2.2.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libsigc++/recipe.toml b/recipes/wip/libsigc++/recipe.toml new file mode 100644 index 00000000..0866b515 --- /dev/null +++ b/recipes/wip/libsigc++/recipe.toml @@ -0,0 +1,5 @@ +#TODO build instructions - https://github.com/libsigcplusplus/libsigcplusplus#building-from-a-release-tarball +[source] +tar = "https://download.gnome.org/sources/libsigc++/3.6/libsigc%2B%2B-3.6.0.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libsixel/recipe.toml b/recipes/wip/libsixel/recipe.toml new file mode 100644 index 00000000..4d1d853b --- /dev/null +++ b/recipes/wip/libsixel/recipe.toml @@ -0,0 +1,16 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/saitoha/libsixel/releases/download/v1.8.6/libsixel-1.8.6.tar.gz" +[build] +template = "custom" +dependencies = [ + "libpng", + "libjpeg", +] +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --with-jpeg + --with-png +) +cookbook_configure +""" diff --git a/recipes/wip/libslirp/recipe.toml b/recipes/wip/libslirp/recipe.toml new file mode 100644 index 00000000..920ccddb --- /dev/null +++ b/recipes/wip/libslirp/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, see https://gitlab.freedesktop.org/slirp/libslirp#building +[source] +tar = "https://gitlab.freedesktop.org/slirp/libslirp/-/archive/v4.7.0/libslirp-v4.7.0.tar.bz2" +[build] +template = "custom" diff --git a/recipes/wip/libsndfile/recipe.toml b/recipes/wip/libsndfile/recipe.toml new file mode 100644 index 00000000..644eb033 --- /dev/null +++ b/recipes/wip/libsndfile/recipe.toml @@ -0,0 +1,10 @@ +#TODO compiled but not tested +[source] +tar = "https://github.com/libsndfile/libsndfile/releases/download/1.2.0/libsndfile-1.2.0.tar.xz" +[build] +template = "configure" +dependencies = [ + "libflac", + "libogg", + "libvorbis", +] diff --git a/recipes/wip/libsoundio/recipe.toml b/recipes/wip/libsoundio/recipe.toml new file mode 100644 index 00000000..2333bc3d --- /dev/null +++ b/recipes/wip/libsoundio/recipe.toml @@ -0,0 +1,20 @@ +#TODO probably wrong script, see https://github.com/andrewrk/libsoundio#building +[source] +tar = "https://github.com/andrewrk/libsoundio/archive/refs/tags/2.0.0.tar.gz" +[build] +template = "custom" +script = """ + COOKBOOK_CONFIGURE="cmake" + COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libspiro/recipe.toml b/recipes/wip/libspiro/recipe.toml new file mode 100644 index 00000000..327173ed --- /dev/null +++ b/recipes/wip/libspiro/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/fontforge/libspiro/releases/download/20221101/libspiro-dist-20221101.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libstk/recipe.toml b/recipes/wip/libstk/recipe.toml new file mode 100644 index 00000000..0a0eddd7 --- /dev/null +++ b/recipes/wip/libstk/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error +[source] +tar = "http://ccrma.stanford.edu/software/stk/release/stk-4.6.2.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libtheora/recipe.toml b/recipes/wip/libtheora/recipe.toml new file mode 100644 index 00000000..44b5772f --- /dev/null +++ b/recipes/wip/libtheora/recipe.toml @@ -0,0 +1,9 @@ +#TODO the redox target is not supported on the configure +[source] +tar = "http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.bz2" +[build] +template = "configure" +dependencies = [ + "libogg", + "libvorbis", +] diff --git a/recipes/wip/libtickit/recipe.toml b/recipes/wip/libtickit/recipe.toml new file mode 100644 index 00000000..127303ef --- /dev/null +++ b/recipes/wip/libtickit/recipe.toml @@ -0,0 +1,5 @@ +#TODO probably wrong template, see https://github.com/leonerd/libtickit +[source] +tar = "https://www.leonerd.org.uk/code/libtickit/libtickit-0.4.3.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libtiff/recipe.toml b/recipes/wip/libtiff/recipe.toml new file mode 100644 index 00000000..887e9109 --- /dev/null +++ b/recipes/wip/libtiff/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +tar = "https://download.osgeo.org/libtiff/tiff-4.5.0.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libtool/recipe.toml b/recipes/wip/libtool/recipe.toml new file mode 100644 index 00000000..1e3812b5 --- /dev/null +++ b/recipes/wip/libtool/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error +[source] +tar = "https://ftpmirror.gnu.org/libtool/libtool-2.4.6.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libunistring/recipe.toml b/recipes/wip/libunistring/recipe.toml new file mode 100644 index 00000000..a41062aa --- /dev/null +++ b/recipes/wip/libunistring/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error +[source] +tar = "https://ftp.gnu.org/gnu/libunistring/libunistring-1.1.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libunwind/recipe.toml b/recipes/wip/libunwind/recipe.toml new file mode 100644 index 00000000..6ef93f40 --- /dev/null +++ b/recipes/wip/libunwind/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error +[source] +tar = "https://download.savannah.nongnu.org/releases/libunwind/libunwind-1.6.2.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/liburcu/recipe.toml b/recipes/wip/liburcu/recipe.toml new file mode 100644 index 00000000..32f7f756 --- /dev/null +++ b/recipes/wip/liburcu/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://lttng.org/files/urcu/userspace-rcu-0.14.0.tar.bz2" +[build] +template = "configure" diff --git a/recipes/wip/libusb/recipe.toml b/recipes/wip/libusb/recipe.toml new file mode 100644 index 00000000..9bc9525b --- /dev/null +++ b/recipes/wip/libusb/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +tar = "https://github.com/libusb/libusb/releases/download/v1.0.26/libusb-1.0.26.tar.bz2" +[build] +template = "configure" diff --git a/recipes/wip/libuuid/recipe.toml b/recipes/wip/libuuid/recipe.toml new file mode 100644 index 00000000..8b72e913 --- /dev/null +++ b/recipes/wip/libuuid/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://sourceforge.net/projects/libuuid/files/libuuid-1.0.3.tar.gz/download" +[build] +template = "configure" diff --git a/recipes/wip/libuv/recipe.toml b/recipes/wip/libuv/recipe.toml new file mode 100644 index 00000000..ce2386df --- /dev/null +++ b/recipes/wip/libuv/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://dist.libuv.org/dist/v1.45.0/libuv-v1.45.0.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libva/recipe.toml b/recipes/wip/libva/recipe.toml new file mode 100644 index 00000000..7e55494c --- /dev/null +++ b/recipes/wip/libva/recipe.toml @@ -0,0 +1,6 @@ +#TODO not compiled or tested +#TODO probably require libdrm +[source] +tar = "https://github.com/intel/libva/releases/download/2.19.0/libva-2.19.0.tar.bz2" +[build] +template = "configure" diff --git a/recipes/wip/libvncserver/recipe.toml b/recipes/wip/libvncserver/recipe.toml new file mode 100644 index 00000000..5f971895 --- /dev/null +++ b/recipes/wip/libvncserver/recipe.toml @@ -0,0 +1,27 @@ +#TODO probably wrong script, see https://github.com/LibVNC/libvncserver#how-to-build +[source] +tar = "https://github.com/LibVNC/libvncserver/archive/refs/tags/LibVNCServer-0.9.14.tar.gz" +[build] +template = "custom" +dependencies = [ + "openssl1", + "ffmpeg6", + "libssh2", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On + -DWITH_OPENSSL=ON + -DWITH_GCRYPT=OFF +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libvpx/recipe.toml b/recipes/wip/libvpx/recipe.toml new file mode 100644 index 00000000..0d8dd34f --- /dev/null +++ b/recipes/wip/libvpx/recipe.toml @@ -0,0 +1,5 @@ +#TODO probably wrong template +[source] +tar = "https://chromium.googlesource.com/webm/libvpx/+archive/v1.13.0.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libvterm/recipe.toml b/recipes/wip/libvterm/recipe.toml new file mode 100644 index 00000000..f53e9877 --- /dev/null +++ b/recipes/wip/libvterm/recipe.toml @@ -0,0 +1,5 @@ +#TODO probably wrong template +[source] +tar = "https://www.leonerd.org.uk/code/libvterm/libvterm-0.3.2.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libvulkan/recipe.toml b/recipes/wip/libvulkan/recipe.toml new file mode 100644 index 00000000..70e3d229 --- /dev/null +++ b/recipes/wip/libvulkan/recipe.toml @@ -0,0 +1,25 @@ +#TODO probably wrong script, see https://github.com/KhronosGroup/Vulkan-Loader/blob/main/BUILD.md +[source] +tar = "https://github.com/KhronosGroup/Vulkan-Loader/archive/refs/tags/v1.3.270.tar.gz" +[build] +template = "custom" +dependencies = [ + "libwayland", + "libxkbcommon", + "libx11", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libwayland/recipe.toml b/recipes/wip/libwayland/recipe.toml new file mode 100644 index 00000000..bd11fb5b --- /dev/null +++ b/recipes/wip/libwayland/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, see https://gitlab.freedesktop.org/wayland/wayland/-/blob/main/README.md?ref_type=heads +[source] +tar = "https://gitlab.freedesktop.org/wayland/wayland/-/releases/1.22.0/downloads/wayland-1.22.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/libwebp/recipe.toml b/recipes/wip/libwebp/recipe.toml new file mode 100644 index 00000000..aacf2c81 --- /dev/null +++ b/recipes/wip/libwebp/recipe.toml @@ -0,0 +1,11 @@ +#TODO Not compiled or tested +[source] +tar = "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.3.2.tar.gz" +[build] +template = "configure" +dependencies = [ + "libjpeg", + "libpng", + "libtiff", + "libgif", +] diff --git a/recipes/wip/libwebsockets/recipe.toml b/recipes/wip/libwebsockets/recipe.toml new file mode 100644 index 00000000..11ff45f0 --- /dev/null +++ b/recipes/wip/libwebsockets/recipe.toml @@ -0,0 +1,23 @@ +#TODO maybe wrong script +[source] +tar = "https://github.com/warmcat/libwebsockets/archive/refs/tags/v4.3.2.tar.gz" +[build] +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libwmf/recipe.toml b/recipes/wip/libwmf/recipe.toml new file mode 100644 index 00000000..d90bdfc7 --- /dev/null +++ b/recipes/wip/libwmf/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://sourceforge.net/projects/wvware/files/libwmf/0.2.8.4/libwmf-0.2.8.4.tar.gz/download" +[build] +template = "configure" diff --git a/recipes/wip/libx11/recipe.toml b/recipes/wip/libx11/recipe.toml new file mode 100644 index 00000000..5b461668 --- /dev/null +++ b/recipes/wip/libx11/recipe.toml @@ -0,0 +1,5 @@ +#TODO maybe wrong template +[source] +tar = "https://www.x.org/releases/individual/lib/libX11-1.8.7.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libxcb/recipe.toml b/recipes/wip/libxcb/recipe.toml new file mode 100644 index 00000000..6223c0cf --- /dev/null +++ b/recipes/wip/libxcb/recipe.toml @@ -0,0 +1,6 @@ +#TODO probably missing dependencies +#TODO maybe wrong template +[source] +tar = "https://www.x.org/releases/individual/xcb/libxcb-1.16.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libxcomposite/recipe.toml b/recipes/wip/libxcomposite/recipe.toml new file mode 100644 index 00000000..5e09343d --- /dev/null +++ b/recipes/wip/libxcomposite/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/lib/libXcomposite-0.4.6.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libxcursor/recipe.toml b/recipes/wip/libxcursor/recipe.toml new file mode 100644 index 00000000..a2565763 --- /dev/null +++ b/recipes/wip/libxcursor/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/lib/libXcursor-1.2.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libxfixes/recipe.toml b/recipes/wip/libxfixes/recipe.toml new file mode 100644 index 00000000..0796ad9b --- /dev/null +++ b/recipes/wip/libxfixes/recipe.toml @@ -0,0 +1,6 @@ +#TODO probably missing dependencies +#TODO maybe wrong template +[source] +tar = "https://www.x.org/releases/individual/lib/libXfixes-6.0.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libxft/recipe.toml b/recipes/wip/libxft/recipe.toml new file mode 100644 index 00000000..b6b9b1be --- /dev/null +++ b/recipes/wip/libxft/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/lib/libXft-2.3.8.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libxi/recipe.toml b/recipes/wip/libxi/recipe.toml new file mode 100644 index 00000000..fe2284b1 --- /dev/null +++ b/recipes/wip/libxi/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/lib/libXi-1.8.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libxinerama/recipe.toml b/recipes/wip/libxinerama/recipe.toml new file mode 100644 index 00000000..923d20a9 --- /dev/null +++ b/recipes/wip/libxinerama/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/lib/libXinerama-1.1.5.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libxkbcommon/recipe.toml b/recipes/wip/libxkbcommon/recipe.toml new file mode 100644 index 00000000..6791d28b --- /dev/null +++ b/recipes/wip/libxkbcommon/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, see https://github.com/xkbcommon/libxkbcommon#building +[source] +tar = "https://xkbcommon.org/download/libxkbcommon-1.5.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/libxkbfile/recipe.toml b/recipes/wip/libxkbfile/recipe.toml new file mode 100644 index 00000000..56126d7a --- /dev/null +++ b/recipes/wip/libxkbfile/recipe.toml @@ -0,0 +1,5 @@ +#TODO maybe wrong template +[source] +tar = "https://www.x.org/releases/individual/lib/libxkbfile-1.1.2.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libxrandr/recipe.toml b/recipes/wip/libxrandr/recipe.toml new file mode 100644 index 00000000..a0f88fc9 --- /dev/null +++ b/recipes/wip/libxrandr/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/lib/libXrandr-1.5.4.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libxrender/recipe.toml b/recipes/wip/libxrender/recipe.toml new file mode 100644 index 00000000..4e38f7c1 --- /dev/null +++ b/recipes/wip/libxrender/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/lib/libXrender-0.9.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libxslt/recipe.toml b/recipes/wip/libxslt/recipe.toml new file mode 100644 index 00000000..b6e7a5ff --- /dev/null +++ b/recipes/wip/libxslt/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.gnome.org/sources/libxslt/1.1/libxslt-1.1.38.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libxtrans/recipe.toml b/recipes/wip/libxtrans/recipe.toml new file mode 100644 index 00000000..0be67c16 --- /dev/null +++ b/recipes/wip/libxtrans/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/lib/xtrans-1.4.0.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libxtst/recipe.toml b/recipes/wip/libxtst/recipe.toml new file mode 100644 index 00000000..6ec3586f --- /dev/null +++ b/recipes/wip/libxtst/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/lib/libXtst-1.2.4.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libyaml/recipe.toml b/recipes/wip/libyaml/recipe.toml new file mode 100644 index 00000000..ba2c19b2 --- /dev/null +++ b/recipes/wip/libyaml/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +tar = "http://pyyaml.org/download/libyaml/yaml-0.2.5.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libzvbi/recipe.toml b/recipes/wip/libzvbi/recipe.toml new file mode 100644 index 00000000..50240827 --- /dev/null +++ b/recipes/wip/libzvbi/recipe.toml @@ -0,0 +1,5 @@ +#TODO the redox target is not supported on the configure +[source] +tar = "https://sourceforge.net/projects/zapping/files/zvbi/0.2.35/zvbi-0.2.35.tar.bz2/download" +[build] +template = "configure" diff --git a/recipes/wip/lilv/recipe.toml b/recipes/wip/lilv/recipe.toml new file mode 100644 index 00000000..c15da008 --- /dev/null +++ b/recipes/wip/lilv/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, see https://gitlab.com/lv2/lilv/-/blob/master/INSTALL.md?ref_type=heads +[source] +tar = "https://download.drobilla.net/lilv-0.24.20.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/lineselect/recipe.toml b/recipes/wip/lineselect/recipe.toml new file mode 100644 index 00000000..d8bc9522 --- /dev/null +++ b/recipes/wip/lineselect/recipe.toml @@ -0,0 +1,5 @@ +#TODO Compiled but not tested +[source] +tar = "https://github.com/urbanogilson/lineselect/archive/refs/tags/v0.1.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/liquid-dsp/recipe.toml b/recipes/wip/liquid-dsp/recipe.toml new file mode 100644 index 00000000..9bcd6aef --- /dev/null +++ b/recipes/wip/liquid-dsp/recipe.toml @@ -0,0 +1,12 @@ +#TODO probably wrong script, see https://github.com/jgaeddert/liquid-dsp#installation-and-dependencies +[source] +tar = "https://github.com/jgaeddert/liquid-dsp/archive/refs/tags/v1.6.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "fftw", +] +script = """ +bootstrap.sh +cookbook_configure +""" diff --git a/recipes/wip/livedotcom/recipe.toml b/recipes/wip/livedotcom/recipe.toml new file mode 100644 index 00000000..fb50919e --- /dev/null +++ b/recipes/wip/livedotcom/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for the build system, see http://www.live555.com/liveMedia/#config-unix +[source] +tar = "http://www.live555.com/liveMedia/public/live555-latest.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/lmms/recipe.toml b/recipes/wip/lmms/recipe.toml new file mode 100644 index 00000000..51d57829 --- /dev/null +++ b/recipes/wip/lmms/recipe.toml @@ -0,0 +1,30 @@ +#TODO probably wrong script, see https://github.com/LMMS/lmms/wiki/Compiling#build-environment +[source] +tar = "https://github.com/LMMS/lmms/releases/download/v1.2.2/lmms_1.2.2.tar.xz" +[build] +template = "custom" +dependencies = [ + "qt5-base", + "libsamplerate", + "libvorbis", + "libogg", + "sdl2", + "fftw", + "libstk", + "fltk", +] +script = """ + COOKBOOK_CONFIGURE="cmake" + COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/loadlibrary/recipe.toml b/recipes/wip/loadlibrary/recipe.toml new file mode 100644 index 00000000..bf97a24b --- /dev/null +++ b/recipes/wip/loadlibrary/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for "make", see https://github.com/taviso/loadlibrary#building +[source] +git = "https://github.com/taviso/loadlibrary" +[build] +template = "custom" +dependencies = [ + "readline", +] diff --git a/recipes/wip/lokinet/recipe.toml b/recipes/wip/lokinet/recipe.toml new file mode 100644 index 00000000..1eda4cdb --- /dev/null +++ b/recipes/wip/lokinet/recipe.toml @@ -0,0 +1,32 @@ +#TODO probably wrong script, see https://github.com/oxen-io/lokinet/blob/dev/docs/install.md#building +[source] +tar = "https://github.com/oxen-io/lokinet/releases/download/v0.9.11/lokinet-v0.9.11.tar.xz" +[build] +template = "custom" +dependencies = [ + "libcap", + "libuv", + "libsodium", + "curl", + "libevent", + "libnettle", + "openssl1", + "unbound", + "nlohmann-json", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On + -DBUILD_SHARED_LIBS=OFF +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/lowcharts/recipe.toml b/recipes/wip/lowcharts/recipe.toml new file mode 100644 index 00000000..c5e143fa --- /dev/null +++ b/recipes/wip/lowcharts/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +tar = "https://github.com/juan-leon/lowcharts/archive/refs/tags/v0.5.8.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/lpm/recipe.toml b/recipes/wip/lpm/recipe.toml new file mode 100644 index 00000000..6013ec83 --- /dev/null +++ b/recipes/wip/lpm/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/lodosgroup/lpm" +[build] +template = "cargo" diff --git a/recipes/wip/lrdf/recipe.toml b/recipes/wip/lrdf/recipe.toml new file mode 100644 index 00000000..ec2b8b87 --- /dev/null +++ b/recipes/wip/lrdf/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://github.com/x42/LRDF/archive/refs/tags/0.5.1-rg.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/lsd/recipe.toml b/recipes/wip/lsd/recipe.toml new file mode 100644 index 00000000..c15c48e0 --- /dev/null +++ b/recipes/wip/lsd/recipe.toml @@ -0,0 +1,5 @@ +#TODO users crate error +[source] +tar = "https://github.com/lsd-rs/lsd/archive/refs/tags/0.23.1.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/lsix/recipe.toml b/recipes/wip/lsix/recipe.toml new file mode 100644 index 00000000..7a42e18d --- /dev/null +++ b/recipes/wip/lsix/recipe.toml @@ -0,0 +1,14 @@ +#TODO move to proper category +[source] +git = "https://github.com/hackerb9/lsix" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/bin +cp "${COOKBOOK_SOURCE}"/lsix "${COOKBOOK_STAGE}"/bin/lsix +chmod a+x "${COOKBOOK_STAGE}"/bin/lsix +""" +[package] +dependencies = [ + "imagemagick7", +] diff --git a/recipes/wip/lttng-ust/recipe.toml b/recipes/wip/lttng-ust/recipe.toml new file mode 100644 index 00000000..5048e150 --- /dev/null +++ b/recipes/wip/lttng-ust/recipe.toml @@ -0,0 +1,12 @@ +#TODO Not compiled or tested +[source] +tar = "http://lttng.org/files/lttng-ust/lttng-ust-2.13.6.tar.bz2" +[build] +template = "configure" +dependencies = [ + "libxml2", + "lttng", + "liburcu", + "libuuid", + "popt", +] diff --git a/recipes/wip/luajit/recipe.toml b/recipes/wip/luajit/recipe.toml new file mode 100644 index 00000000..237fe87b --- /dev/null +++ b/recipes/wip/luajit/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for "make", see https://luajit.org/install.html +[source] +tar = "https://luajit.org/download/LuaJIT-2.1.0-beta3.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/luxcorerender/recipe.toml b/recipes/wip/luxcorerender/recipe.toml new file mode 100644 index 00000000..8ae64108 --- /dev/null +++ b/recipes/wip/luxcorerender/recipe.toml @@ -0,0 +1,16 @@ +#TODO missing script for CMake, see https://wiki.luxcorerender.org/Compiling_LuxCore +#TODO probably missing dependencies +[source] +tar = "https://github.com/LuxCoreRender/LuxCore/archive/refs/tags/luxcorerender_v2.6.tar.gz" +[build] +template = "custom" +dependencies = [ + "bzip2", + "libtiff", + "libpng", + "gtk3", + "boost", + "mesa", + "openimageio", + "openexr", +] diff --git a/recipes/wip/lv2/recipe.toml b/recipes/wip/lv2/recipe.toml new file mode 100644 index 00000000..bcbb450d --- /dev/null +++ b/recipes/wip/lv2/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, see https://gitlab.com/lv2/lv2/-/blob/master/INSTALL.md +[source] +tar = "https://lv2plug.in/spec/lv2-1.18.10.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/lychee/recipe.toml b/recipes/wip/lychee/recipe.toml new file mode 100644 index 00000000..dd97a379 --- /dev/null +++ b/recipes/wip/lychee/recipe.toml @@ -0,0 +1,11 @@ +#TODO compilation error (after an update on tokio and a patch on ring) +[source] +tar = "https://github.com/lycheeverse/lychee/archive/refs/tags/v0.13.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +cookbook_cargo_packages lychee +""" diff --git a/recipes/wip/lynx/recipe.toml b/recipes/wip/lynx/recipe.toml new file mode 100644 index 00000000..bd5f5489 --- /dev/null +++ b/recipes/wip/lynx/recipe.toml @@ -0,0 +1,8 @@ +#TODO compilation error +[source] +tar = "https://invisible-island.net/archives/lynx/tarballs/lynx2.8.9rel.1.tar.gz" +[build] +template = "configure" +dependencies = [ + "ncurses", +] diff --git a/recipes/wip/lz4/recipe.toml b/recipes/wip/lz4/recipe.toml new file mode 100644 index 00000000..f95ddbcd --- /dev/null +++ b/recipes/wip/lz4/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for "make", see https://github.com/lz4/lz4#installation +[source] +tar = "https://github.com/lz4/lz4/archive/refs/tags/v1.9.4.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/m4/recipe.toml b/recipes/wip/m4/recipe.toml new file mode 100644 index 00000000..0406b950 --- /dev/null +++ b/recipes/wip/m4/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error +[source] +tar = "https://ftp.gnu.org/gnu/m4/m4-1.4.19.tar.xz" +[build] +template = "configure" \ No newline at end of file diff --git a/recipes/wip/macchina/recipe.toml b/recipes/wip/macchina/recipe.toml new file mode 100644 index 00000000..9b6de07d --- /dev/null +++ b/recipes/wip/macchina/recipe.toml @@ -0,0 +1,8 @@ +#TODO Compilation error +[source] +tar = "https://github.com/Macchina-CLI/macchina/archive/refs/tags/v6.1.8.tar.gz" +[build] +template = "cargo" +dependencies = [ + "libgit2", +] diff --git a/recipes/wip/magic-wormhole-rs/recipe.toml b/recipes/wip/magic-wormhole-rs/recipe.toml new file mode 100644 index 00000000..de80a0e4 --- /dev/null +++ b/recipes/wip/magic-wormhole-rs/recipe.toml @@ -0,0 +1,8 @@ +#TODO async-tar crate error +[source] +tar = "https://github.com/magic-wormhole/magic-wormhole.rs/archive/refs/tags/0.6.0.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages magic-wormhole +""" diff --git a/recipes/wip/mandy/recipe.toml b/recipes/wip/mandy/recipe.toml new file mode 100644 index 00000000..066078e6 --- /dev/null +++ b/recipes/wip/mandy/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/angeldollface/mandy/archive/refs/tags/v.0.3.3.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/mangohud/recipe.toml b/recipes/wip/mangohud/recipe.toml new file mode 100644 index 00000000..1ddb7f9b --- /dev/null +++ b/recipes/wip/mangohud/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for Meson, see https://github.com/flightlessmango/MangoHud#installation---build-from-source +[source] +tar = "https://github.com/flightlessmango/MangoHud/releases/download/v0.7.0/MangoHud-v0.7.0-Source.tar.xz" +[build] +template = "custom" +dependencies = [ + "mesa", + "libx11", +] diff --git a/recipes/wip/mariadb-lts/recipe.toml b/recipes/wip/mariadb-lts/recipe.toml new file mode 100644 index 00000000..f4b1b623 --- /dev/null +++ b/recipes/wip/mariadb-lts/recipe.toml @@ -0,0 +1,32 @@ +#TODO probably wrong script, see: +# https://mariadb.com/kb/en/generic-build-instructions/ +# https://mariadb.com/kb/en/cross-compiling-mariadb/ +[source] +tar = "https://archive.mariadb.org/mariadb-10.11.6/source/mariadb-10.11.6.tar.gz" +[build] +template = "custom" +dependencies = [ + "ncurses", + "zlib", + "libevent", + "openssl1", + "curl", + "libxml2", + "boost", + "libaio", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/mariadb/recipe.toml b/recipes/wip/mariadb/recipe.toml new file mode 100644 index 00000000..2d5b862b --- /dev/null +++ b/recipes/wip/mariadb/recipe.toml @@ -0,0 +1,32 @@ +#TODO probably wrong script, see: +# https://mariadb.com/kb/en/generic-build-instructions/ +# https://mariadb.com/kb/en/cross-compiling-mariadb/ +[source] +tar = "https://archive.mariadb.org/mariadb-11.2.2/source/mariadb-11.2.2.tar.gz" +[build] +template = "custom" +dependencies = [ + "ncurses", + "zlib", + "libevent", + "openssl1", + "curl", + "libxml2", + "boost", + "libaio", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/mask/recipe.toml b/recipes/wip/mask/recipe.toml new file mode 100644 index 00000000..54996308 --- /dev/null +++ b/recipes/wip/mask/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/jacobdeichert/mask/archive/refs/tags/mask/0.11.4.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/matui/recipe.toml b/recipes/wip/matui/recipe.toml new file mode 100644 index 00000000..f255bdec --- /dev/null +++ b/recipes/wip/matui/recipe.toml @@ -0,0 +1,8 @@ +#TODO xdg-home crate error +[source] +tar = "https://github.com/pkulak/matui/archive/refs/tags/v0.4.4.tar.gz" +[build] +template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/maven/recipe.toml b/recipes/wip/maven/recipe.toml new file mode 100644 index 00000000..fd7aef0a --- /dev/null +++ b/recipes/wip/maven/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for building, lacking build instructions +[source] +tar = "https://dlcdn.apache.org/maven/maven-3/3.9.5/source/apache-maven-3.9.5-src.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/mbedtls/recipe.toml b/recipes/wip/mbedtls/recipe.toml new file mode 100644 index 00000000..5163d99d --- /dev/null +++ b/recipes/wip/mbedtls/recipe.toml @@ -0,0 +1,21 @@ +#TODO probaly wrong script, see https://mbed-tls.readthedocs.io/en/latest/getting_started/building/#building-with-cmake +# They say that the CMake method is better than GNU make +[source] +tar = "https://github.com/Mbed-TLS/mbedtls/archive/refs/tags/v3.5.1.tar.gz" +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/mcfly/recipe.toml b/recipes/wip/mcfly/recipe.toml new file mode 100644 index 00000000..4f0036e4 --- /dev/null +++ b/recipes/wip/mcfly/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/cantino/mcfly/archive/refs/tags/v0.8.1.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/mdbook/recipe.toml b/recipes/wip/mdbook/recipe.toml new file mode 100644 index 00000000..31202912 --- /dev/null +++ b/recipes/wip/mdbook/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/rust-lang/mdBook/archive/refs/tags/v0.4.35.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/memcached/recipe.toml b/recipes/wip/memcached/recipe.toml new file mode 100644 index 00000000..886eff74 --- /dev/null +++ b/recipes/wip/memcached/recipe.toml @@ -0,0 +1,8 @@ +#TODO probably wrong template, see https://github.com/memcached/memcached/wiki/Install#from-source +[source] +tar = "https://www.memcached.org/files/memcached-1.6.22.tar.gz" +[build] +template = "configure" +dependencies = [ + "libevent", +] diff --git a/recipes/wip/mesa-demos/recipe.toml b/recipes/wip/mesa-demos/recipe.toml new file mode 100644 index 00000000..b99ed908 --- /dev/null +++ b/recipes/wip/mesa-demos/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for Meson, see https://gitlab.freedesktop.org/mesa/demos/-/blob/main/README.rst?ref_type=heads +[source] +tar = "https://archive.mesa3d.org/demos/mesa-demos-9.0.0.tar.xz" +[build] +template = "custom" +dependencies = [ + "freeglut", +] diff --git a/recipes/wip/meson/recipe.toml b/recipes/wip/meson/recipe.toml new file mode 100644 index 00000000..725a2e38 --- /dev/null +++ b/recipes/wip/meson/recipe.toml @@ -0,0 +1,5 @@ +#TODO create a standalone script, see https://github.com/mesonbuild/meson#creating-a-standalone-script +[source] +tar = "https://github.com/mesonbuild/meson/releases/download/1.3.0/meson-1.3.0.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/mimalloc/recipe.toml b/recipes/wip/mimalloc/recipe.toml new file mode 100644 index 00000000..ef6daeff --- /dev/null +++ b/recipes/wip/mimalloc/recipe.toml @@ -0,0 +1,20 @@ +#TODO probably wrong script, see https://github.com/microsoft/mimalloc#macos-linux-bsd-etc +[source] +tar = "https://github.com/microsoft/mimalloc/archive/refs/tags/v2.1.2.tar.gz" +[build] +template = "custom" +script = """ + COOKBOOK_CONFIGURE="cmake" + COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/minetest-data/recipe.toml b/recipes/wip/minetest-data/recipe.toml new file mode 100644 index 00000000..a05eb2fe --- /dev/null +++ b/recipes/wip/minetest-data/recipe.toml @@ -0,0 +1,9 @@ +#TODO Not tested +[source] +tar = "https://github.com/minetest/minetest_game/archive/refs/tags/5.7.0.tar.gz" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/home/user/.minetest/games/minetest_game +cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/home/user/.minetest/games/minetest_game +""" diff --git a/recipes/wip/minetest/recipe.toml b/recipes/wip/minetest/recipe.toml new file mode 100644 index 00000000..005b8009 --- /dev/null +++ b/recipes/wip/minetest/recipe.toml @@ -0,0 +1,35 @@ +#TODO probably wrong script, see https://github.com/minetest/minetest/blob/master/doc/compiling/linux.md +#TODO customization - https://github.com/minetest/minetest/tree/master/doc/compiling#cmake-options +[source] +git = "https://github.com/minetest/minetest" +branch = "stable-5" +[build] +template = "custom" +dependencies = [ + "freetype2", + "sqlite3", + "zlib", + "libpng", + "libjpeg", + "libogg", + "libvorbis", + "openal", + "curl", + "zstd", +] +script = """ +git clone --depth 1 https://github.com/minetest/irrlicht.git "${COOKBOOK_SOURCE}"/lib/irrlichtmt + COOKBOOK_CONFIGURE="cmake" + COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/miniaudicle/recipe.toml b/recipes/wip/miniaudicle/recipe.toml new file mode 100644 index 00000000..fae5ff20 --- /dev/null +++ b/recipes/wip/miniaudicle/recipe.toml @@ -0,0 +1,10 @@ +#TODO missing script for "make", see https://github.com/ccrma/miniAudicle#linux +[source] +tar = "https://github.com/ccrma/miniAudicle/archive/refs/tags/chuck-1.5.1.8.tar.gz" +[build] +template = "custom" +dependencies = [ + "pulseaudio", + "libsndfile", + "qt6-base", +] diff --git a/recipes/wip/minibude/recipe.toml b/recipes/wip/minibude/recipe.toml new file mode 100644 index 00000000..b641cd41 --- /dev/null +++ b/recipes/wip/minibude/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for "make", see https://github.com/UoB-HPC/miniBUDE#building +[source] +git = "https://github.com/UoB-HPC/miniBUDE" +[build] +template = "custom" diff --git a/recipes/wip/miniupnpc/recipe.toml b/recipes/wip/miniupnpc/recipe.toml new file mode 100644 index 00000000..56d62911 --- /dev/null +++ b/recipes/wip/miniupnpc/recipe.toml @@ -0,0 +1,5 @@ +#TODO Missing script for "make", see https://github.com/miniupnp/miniupnp/tree/master/miniupnpc#readme +[source] +tar = "http://miniupnp.free.fr/files/miniupnpc-2.2.4.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/mnn/recipe.toml b/recipes/wip/mnn/recipe.toml new file mode 100644 index 00000000..332f080c --- /dev/null +++ b/recipes/wip/mnn/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking English build instructions +[source] +tar = "https://github.com/alibaba/MNN/archive/refs/tags/2.7.1.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/mongodb6/recipe.toml b/recipes/wip/mongodb6/recipe.toml new file mode 100644 index 00000000..b0f8a054 --- /dev/null +++ b/recipes/wip/mongodb6/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for SCons, see https://github.com/mongodb/mongo/blob/master/docs/building.md +[source] +tar = "https://github.com/mongodb/mongo/archive/refs/tags/r6.0.12.tar.gz" +[build] +template = "custom" +dependencies = [ + "curl", + "xz", +] diff --git a/recipes/wip/mongodb7/recipe.toml b/recipes/wip/mongodb7/recipe.toml new file mode 100644 index 00000000..26644c14 --- /dev/null +++ b/recipes/wip/mongodb7/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for SCons, see https://github.com/mongodb/mongo/blob/master/docs/building.md +[source] +tar = "https://github.com/mongodb/mongo/archive/refs/tags/r7.1.1.tar.gz" +[build] +template = "custom" +dependencies = [ + "curl", + "xz", +] diff --git a/recipes/wip/mono/recipe.toml b/recipes/wip/mono/recipe.toml new file mode 100644 index 00000000..7af01856 --- /dev/null +++ b/recipes/wip/mono/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.mono-project.com/sources/mono/mono-6.12.0.199.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/monolith/recipe.toml b/recipes/wip/monolith/recipe.toml new file mode 100644 index 00000000..315d841a --- /dev/null +++ b/recipes/wip/monolith/recipe.toml @@ -0,0 +1,13 @@ +#TODO weird OpenSSL error on compilation (using cargo update) +[source] +tar = "https://github.com/Y2Z/monolith/archive/refs/tags/v2.7.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +export OPENSSL_DIR="${COOKBOOK_SYSROOT}" +export OPENSSL_STATIC="true" +cookbook_cargo +""" diff --git a/recipes/wip/moonzoon/recipe.toml b/recipes/wip/moonzoon/recipe.toml new file mode 100644 index 00000000..e44c482c --- /dev/null +++ b/recipes/wip/moonzoon/recipe.toml @@ -0,0 +1,11 @@ +#TODO camino crate error, require the WebAssembly target on Rustup. +[source] +git = "https://github.com/MoonZoon/MoonZoon" +[build] +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +cookbook_cargo_packages mzoon +""" diff --git a/recipes/wip/morty/recipe.toml b/recipes/wip/morty/recipe.toml new file mode 100644 index 00000000..64aff702 --- /dev/null +++ b/recipes/wip/morty/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/pulp-platform/morty/archive/refs/tags/v0.9.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/mosh/recipe.toml b/recipes/wip/mosh/recipe.toml new file mode 100644 index 00000000..c0caf8be --- /dev/null +++ b/recipes/wip/mosh/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +[source] +tar = "https://mosh.org/mosh-1.4.0.tar.gz" +[build] +template = "configure" +dependencies = [ + "openssl1", + "ncurses", + "zlib", +] diff --git a/recipes/wip/motus/recipe.toml b/recipes/wip/motus/recipe.toml new file mode 100644 index 00000000..2e881aca --- /dev/null +++ b/recipes/wip/motus/recipe.toml @@ -0,0 +1,5 @@ +#TODO x11rb crate error +[source] +tar = "https://github.com/oleiade/motus/archive/refs/tags/v0.2.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/mpc/recipe.toml b/recipes/wip/mpc/recipe.toml new file mode 100644 index 00000000..dc75b2aa --- /dev/null +++ b/recipes/wip/mpc/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +tar = "https://ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz" +[build] +template = "configure" +dependencies = [ + "libgmp", + "libmpfr", +] diff --git a/recipes/wip/mpg123/recipe.toml b/recipes/wip/mpg123/recipe.toml new file mode 100644 index 00000000..d092711f --- /dev/null +++ b/recipes/wip/mpg123/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error +[source] +tar = "https://mpg123.de/download/mpg123-1.31.3.tar.bz2" +[build] +template = "configure" diff --git a/recipes/wip/mprocs/recipe.toml b/recipes/wip/mprocs/recipe.toml new file mode 100644 index 00000000..f60eb245 --- /dev/null +++ b/recipes/wip/mprocs/recipe.toml @@ -0,0 +1,8 @@ +#TODO termios/ioctl-rs crate error +[source] +tar = "https://github.com/pvolok/mprocs/archive/refs/tags/v0.6.4.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages mprocs +""" diff --git a/recipes/wip/mpv/recipe.toml b/recipes/wip/mpv/recipe.toml new file mode 100644 index 00000000..660201cc --- /dev/null +++ b/recipes/wip/mpv/recipe.toml @@ -0,0 +1,16 @@ +#TODO missing script for Meson (use system libraries), see https://github.com/mpv-player/mpv#compilation +#TODO missing dependencies +[source] +tar = "https://github.com/mpv-player/mpv/archive/refs/tags/v0.37.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "ffmpeg6", + "libass", + "libjpeg", + "libiconv", + "zlib", + "mesa", + "libx11", + "pulseaudio", +] diff --git a/recipes/wip/mrbayes/recipe.toml b/recipes/wip/mrbayes/recipe.toml new file mode 100644 index 00000000..e145f054 --- /dev/null +++ b/recipes/wip/mrbayes/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/NBISweden/MrBayes" +[build] +template = "configure" diff --git a/recipes/wip/musepack/recipe.toml b/recipes/wip/musepack/recipe.toml new file mode 100644 index 00000000..63069b4d --- /dev/null +++ b/recipes/wip/musepack/recipe.toml @@ -0,0 +1,5 @@ +#TODO probably wrong template, check inside the tarball +[source] +tar = "https://files.musepack.net/source/musepack_src_r475.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/mysql-server/recipe.toml b/recipes/wip/mysql-server/recipe.toml new file mode 100644 index 00000000..e5b009da --- /dev/null +++ b/recipes/wip/mysql-server/recipe.toml @@ -0,0 +1,10 @@ +#TODO missing script for CMake, see https://dev.mysql.com/doc/refman/8.2/en/installing-source-distribution.html +[source] +tar = "https://dev.mysql.com/downloads/file/?id=523432" +[build] +template = "custom" +dependencies = [ + "boost", + "ncurses", + "openssl1", +] diff --git a/recipes/wip/mysql-shell/recipe.toml b/recipes/wip/mysql-shell/recipe.toml new file mode 100644 index 00000000..03b5312f --- /dev/null +++ b/recipes/wip/mysql-shell/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for cross-compilation +[source] +tar = "https://dev.mysql.com/downloads/file/?id=524161" +[build] +template = "custom" diff --git a/recipes/wip/naev/recipe.toml b/recipes/wip/naev/recipe.toml new file mode 100644 index 00000000..441bcf71 --- /dev/null +++ b/recipes/wip/naev/recipe.toml @@ -0,0 +1,17 @@ +#TODO missing script for Meson, see https://github.com/naev/naev/wiki/Compiling-on-*nix +[source] +tar = "https://github.com/naev/naev/releases/download/v0.10.6/naev-0.10.6-source.tar.xz" +[build] +template = "custom" +dependencies = [ + "sdl2", + "sdl2_image", + "libpng", + "libxml2", + "libwebp", + "mesa", + "openal", + "openblas", + "freetype2", + "libvorbis", +] diff --git a/recipes/wip/nano/recipe.toml b/recipes/wip/nano/recipe.toml new file mode 100644 index 00000000..89990c75 --- /dev/null +++ b/recipes/wip/nano/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +tar = "https://www.nano-editor.org/dist/v7/nano-7.2.tar.xz" +[build] +template = "configure" +dependencies = [ + "ncurses", +] diff --git a/recipes/wip/ncnn/recipe.toml b/recipes/wip/ncnn/recipe.toml new file mode 100644 index 00000000..ecf378d0 --- /dev/null +++ b/recipes/wip/ncnn/recipe.toml @@ -0,0 +1,10 @@ +#TODO missing script for CMake, see https://github.com/Tencent/ncnn/wiki/how-to-build#build-for-linux +[source] +git = "https://github.com/Tencent/ncnn" +[build] +template = "custom" +dependencies = [ + "protobuf", + "libvulkan", + "opencv4", +] diff --git a/recipes/wip/ncspot/recipe.toml b/recipes/wip/ncspot/recipe.toml new file mode 100644 index 00000000..d91fc803 --- /dev/null +++ b/recipes/wip/ncspot/recipe.toml @@ -0,0 +1,12 @@ +#TODO not compiled or tested +[source] +tar = "https://github.com/hrkfdn/ncspot/archive/refs/tags/v0.13.4.tar.gz" +[build] +template = "custom" +dependencies = [ + "openssl1", + "ncurses", +] +script = """ +cookbook_cargo --features rodio_backend,pancurses_backend +""" diff --git a/recipes/wip/neofetch/recipe.toml b/recipes/wip/neofetch/recipe.toml new file mode 100644 index 00000000..aeb3584b --- /dev/null +++ b/recipes/wip/neofetch/recipe.toml @@ -0,0 +1,10 @@ +#TODO Add Redox OS on the Bash script +[source] +tar = "https://github.com/dylanaraps/neofetch/archive/refs/tags/7.1.0.tar.gz" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/bin +cp "${COOKBOOK_SOURCE}"/neofetch "${COOKBOOK_STAGE}"/bin/neofetch +chmod a+x "${COOKBOOK_STAGE}"/bin/neofetch +""" diff --git a/recipes/wip/neovide/recipe.toml b/recipes/wip/neovide/recipe.toml new file mode 100644 index 00000000..7dfe0c74 --- /dev/null +++ b/recipes/wip/neovide/recipe.toml @@ -0,0 +1,14 @@ +#TODO Make neovim work +[source] +tar = "https://github.com/neovide/neovide/archive/refs/tags/0.10.4.tar.gz" +[build] +template = "cargo" +dependencies = [ + "neovim", + "openssl1", + "freetype2", + "expat", + "bzip2", + "freeglut", + "fontconfig", +] diff --git a/recipes/wip/neovim/recipe.toml b/recipes/wip/neovim/recipe.toml new file mode 100644 index 00000000..fbc0112d --- /dev/null +++ b/recipes/wip/neovim/recipe.toml @@ -0,0 +1,28 @@ +#TODO probably wrong script, see https://github.com/neovim/neovim/wiki/Installing-Neovim#install-from-source +[source] +tar = "https://github.com/neovim/neovim/archive/refs/tags/v0.9.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "luajit", + "gettext", + "less", + "libuv", + "libvterm", + "libtickit", +] +script = """ + COOKBOOK_CONFIGURE="cmake" + COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/netradiant/recipe.toml b/recipes/wip/netradiant/recipe.toml new file mode 100644 index 00000000..c8d138c2 --- /dev/null +++ b/recipes/wip/netradiant/recipe.toml @@ -0,0 +1,13 @@ +#TODO missing script for CMake, see https://gitlab.com/xonotic/netradiant#advanced-compilation +[source] +git = "https://gitlab.com/xonotic/netradiant" +[build] +template = "custom" +dependencies = [ + "libxml2", + "mesa", + "gtk2", + "libjpeg", + "libpng", + "zlib", +] diff --git a/recipes/wip/nginx/recipe.toml b/recipes/wip/nginx/recipe.toml new file mode 100644 index 00000000..a3ef1c22 --- /dev/null +++ b/recipes/wip/nginx/recipe.toml @@ -0,0 +1,5 @@ +#TODO Compilation error +[source] +tar = "https://nginx.org/download/nginx-1.24.0.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/ninja-build/recipe.toml b/recipes/wip/ninja-build/recipe.toml new file mode 100644 index 00000000..3287f198 --- /dev/null +++ b/recipes/wip/ninja-build/recipe.toml @@ -0,0 +1,20 @@ +#TODO probably wrong script, see https://github.com/ninja-build/ninja#building-ninja-itself +[source] +tar = "https://github.com/ninja-build/ninja/archive/refs/tags/v1.11.1.tar.gz" +[build] +template = "custom" +script = """ + COOKBOOK_CONFIGURE="cmake" + COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/niri/recipe.toml b/recipes/wip/niri/recipe.toml new file mode 100644 index 00000000..ca364ae5 --- /dev/null +++ b/recipes/wip/niri/recipe.toml @@ -0,0 +1,14 @@ +#TODO probably wrong script for configuration, see https://github.com/YaLTeR/niri#installation +[source] +git = "https://github.com/YaLTeR/niri" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/bin +mkdir -pv "${COOKBOOK_STAGE}"/home/user/.local/share/wayland-sessions +mkdir -pv "${COOKBOOK_STAGE}"/home/user/.local/share/xdg-desktop-portal +cp -rv "${COOKBOOK_SOURCE}"/resources/niri-session "${COOKBOOK_STAGE}"/bin +cp -rv "${COOKBOOK_SOURCE}"/resources/niri.desktop "${COOKBOOK_STAGE}"/home/user/.local/share/wayland-sessions +cp -rv "${COOKBOOK_SOURCE}"/resources/niri-portals.conf "${COOKBOOK_STAGE}"/home/user/.local/share/xdg-desktop-portal +cookbook_cargo +""" diff --git a/recipes/wip/nlohmann-json/recipe.toml b/recipes/wip/nlohmann-json/recipe.toml new file mode 100644 index 00000000..621c821e --- /dev/null +++ b/recipes/wip/nlohmann-json/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for installation, lacking a build system +[source] +tar = "https://github.com/nlohmann/json/releases/download/v3.11.2/json.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/nmap/recipe.toml b/recipes/wip/nmap/recipe.toml new file mode 100644 index 00000000..fcbd41f1 --- /dev/null +++ b/recipes/wip/nmap/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error +[source] +tar = "https://nmap.org/dist/nmap-7.94.tar.bz2" +[build] +template = "configure" \ No newline at end of file diff --git a/recipes/wip/nodejs-lts/recipe.toml b/recipes/wip/nodejs-lts/recipe.toml new file mode 100644 index 00000000..233365de --- /dev/null +++ b/recipes/wip/nodejs-lts/recipe.toml @@ -0,0 +1,5 @@ +#TODO can't find the Redox target +[source] +tar = "https://nodejs.org/dist/v18.17.1/node-v18.17.1.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/nodejs/recipe.toml b/recipes/wip/nodejs/recipe.toml new file mode 100644 index 00000000..853ff6d9 --- /dev/null +++ b/recipes/wip/nodejs/recipe.toml @@ -0,0 +1,5 @@ +#TODO can't find the Redox target +[source] +tar = "https://nodejs.org/dist/v20.6.1/node-v20.6.1.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/nostr-rs-relay/recipe.toml b/recipes/wip/nostr-rs-relay/recipe.toml new file mode 100644 index 00000000..04ad98c3 --- /dev/null +++ b/recipes/wip/nostr-rs-relay/recipe.toml @@ -0,0 +1,8 @@ +#TODO tikv-jemalloc-sys crate error +[source] +git = "https://github.com/scsibug/nostr-rs-relay" +[build] +template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/nsh/recipe.toml b/recipes/wip/nsh/recipe.toml new file mode 100644 index 00000000..81df8640 --- /dev/null +++ b/recipes/wip/nsh/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/nuta/nsh/archive/refs/tags/v0.4.2.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/nspr/recipe.toml b/recipes/wip/nspr/recipe.toml new file mode 100644 index 00000000..b714f9db --- /dev/null +++ b/recipes/wip/nspr/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested yet +[source] +tar = "https://ftp.mozilla.org/pub/nspr/releases/v4.9.6/src/nspr-4.9.6.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/nss-pem/recipe.toml b/recipes/wip/nss-pem/recipe.toml new file mode 100644 index 00000000..3124794e --- /dev/null +++ b/recipes/wip/nss-pem/recipe.toml @@ -0,0 +1,20 @@ +#TODO probably wrong script, see https://github.com/kdudka/nss-pem/blob/master/README +[source] +tar = "https://github.com/kdudka/nss-pem/releases/download/nss-pem-1.1.0/nss-pem-1.1.0.tar.xz" +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/nss/recipe.toml b/recipes/wip/nss/recipe.toml new file mode 100644 index 00000000..829abdb0 --- /dev/null +++ b/recipes/wip/nss/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_9_2_RTM/src/nss-3.9.2.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/ntpd-rs/recipe.toml b/recipes/wip/ntpd-rs/recipe.toml new file mode 100644 index 00000000..b73fd1f9 --- /dev/null +++ b/recipes/wip/ntpd-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO configure the service +[source] +tar = "https://github.com/pendulum-project/ntpd-rs/archive/refs/tags/v1.0.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/numbat/recipe.toml b/recipes/wip/numbat/recipe.toml new file mode 100644 index 00000000..fad888cf --- /dev/null +++ b/recipes/wip/numbat/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/sharkdp/numbat/archive/refs/tags/v1.8.0.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages numbat-cli +""" diff --git a/recipes/wip/obs-studio/recipe.toml b/recipes/wip/obs-studio/recipe.toml new file mode 100644 index 00000000..7e5f7b2b --- /dev/null +++ b/recipes/wip/obs-studio/recipe.toml @@ -0,0 +1,15 @@ +#TODO missing script for CMake, see https://github.com/obsproject/obs-studio/wiki/Building-OBS-Studio +#TODO determine dependencies +[source] +tar = "https://github.com/obsproject/obs-studio/archive/refs/tags/30.0.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "ffmpeg6", + "x264", + "curl", + "mbedtls", + "libwayland", + "libva", + "qt5-base", +] diff --git a/recipes/wip/odilia/recipe.toml b/recipes/wip/odilia/recipe.toml new file mode 100644 index 00000000..0dd9e671 --- /dev/null +++ b/recipes/wip/odilia/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/odilia-app/odilia" +[build] +template = "cargo" diff --git a/recipes/wip/oidn/recipe.toml b/recipes/wip/oidn/recipe.toml new file mode 100644 index 00000000..9299e39a --- /dev/null +++ b/recipes/wip/oidn/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for CMake, see https://github.com/OpenImageDenoise/oidn#compiling-on-linuxmacos +[source] +git = "https://github.com/OpenImageDenoise/oidn" +[build] +template = "custom" +dependencies = [ + "ispc", + "onetbb", +] diff --git a/recipes/wip/onednn/recipe.toml b/recipes/wip/onednn/recipe.toml new file mode 100644 index 00000000..49bcaef2 --- /dev/null +++ b/recipes/wip/onednn/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for CMake, see https://oneapi-src.github.io/oneDNN/dev_guide_build.html#linux-macos +[source] +tar = "https://github.com/oneapi-src/oneDNN/archive/refs/tags/v3.3.1.tar.gz" +[build] +template = "custom" +dependencies = [ + "onetbb", +] diff --git a/recipes/wip/onefetch/recipe.toml b/recipes/wip/onefetch/recipe.toml new file mode 100644 index 00000000..c5d2ef72 --- /dev/null +++ b/recipes/wip/onefetch/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled (after a cargo update) but hangs during execution +[source] +tar = "https://github.com/o2sh/onefetch/archive/refs/tags/2.18.1.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/onetbb/recipe.toml b/recipes/wip/onetbb/recipe.toml new file mode 100644 index 00000000..ba2275ae --- /dev/null +++ b/recipes/wip/onetbb/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/oneapi-src/oneTBB/blob/master/INSTALL.md +[source] +tar = "https://github.com/oneapi-src/oneTBB/archive/refs/tags/v2021.11.0.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/opam/recipe.toml b/recipes/wip/opam/recipe.toml new file mode 100644 index 00000000..137eb3a7 --- /dev/null +++ b/recipes/wip/opam/recipe.toml @@ -0,0 +1,5 @@ +#TODO probably wrong template, see https://github.com/ocaml/opam#compiling-this-repo +[source] +tar = "https://github.com/ocaml/opam/releases/download/2.1.5/opam-full-2.1.5.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/openal/recipe.toml b/recipes/wip/openal/recipe.toml new file mode 100644 index 00000000..b3aa3ee4 --- /dev/null +++ b/recipes/wip/openal/recipe.toml @@ -0,0 +1,20 @@ +#TODO probably wrong script, see https://openal-soft.org/#installing +[source] +tar = "https://openal-soft.org/openal-releases/openal-soft-1.23.1.tar.bz2" +[build] +template = "custom" +script = """ + COOKBOOK_CONFIGURE="cmake" + COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/openarena/recipe.toml b/recipes/wip/openarena/recipe.toml new file mode 100644 index 00000000..c1f42363 --- /dev/null +++ b/recipes/wip/openarena/recipe.toml @@ -0,0 +1,12 @@ +#TODO missing script for building, lacking build instructions +#TODO what is game code? - http://files.poulsander.com/~poul19/public_files/oa/dev088/oa-0.8.8.tar.bz2 +[source] +tar = "http://files.poulsander.com/~poul19/public_files/oa/dev088/openarena-engine-source-0.8.8.tar.bz2" +[build] +template = "custom" +dependencies = [ + "sdl1", + "openal", + "libvorbis", + "mesa", +] diff --git a/recipes/wip/openblas/recipe.toml b/recipes/wip/openblas/recipe.toml new file mode 100644 index 00000000..3b897b7a --- /dev/null +++ b/recipes/wip/openblas/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for "make", see https://github.com/OpenMathLib/OpenBLAS/wiki/Installation-Guide +#TODO require the Fortran frontend from GCC? +[source] +tar = "https://github.com/OpenMathLib/OpenBLAS/releases/download/v0.3.25/OpenBLAS-0.3.25.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/opencv4/recipe.toml b/recipes/wip/opencv4/recipe.toml new file mode 100644 index 00000000..4b7b73fb --- /dev/null +++ b/recipes/wip/opencv4/recipe.toml @@ -0,0 +1,21 @@ +#TODO probably wrong script, lacking build instructions +[source] +git = "https://github.com/opencv/opencv" +branch = "4.8.0 +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/openexr/recipe.toml b/recipes/wip/openexr/recipe.toml new file mode 100644 index 00000000..43ea9ae7 --- /dev/null +++ b/recipes/wip/openexr/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for CMake, see https://openexr.com/en/latest/install.html#linux-macos +[source] +tar = "https://github.com/AcademySoftwareFoundation/openexr/archive/refs/tags/v3.2.1.tar.gz" +[build] +template = "custom" +dependencies = [ + "libdeflate", + "libimath" +] diff --git a/recipes/wip/openimageio/recipe.toml b/recipes/wip/openimageio/recipe.toml new file mode 100644 index 00000000..14660582 --- /dev/null +++ b/recipes/wip/openimageio/recipe.toml @@ -0,0 +1,17 @@ +#TODO missing script for building, see https://github.com/AcademySoftwareFoundation/OpenImageIO/blob/master/INSTALL.md#building-openimageio-on-linux-or-os-x +[source] +tar = "https://github.com/AcademySoftwareFoundation/OpenImageIO/archive/refs/tags/v2.5.5.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "boost", + "libtiff", + "libjpeg", + "libpng", + "openexr", + "libfmt", + "opencv4", + "ffmpeg6", + "libwebp", + "freetype2", +] diff --git a/recipes/wip/openjdk11-headless/recipe.toml b/recipes/wip/openjdk11-headless/recipe.toml new file mode 100644 index 00000000..1c6649c4 --- /dev/null +++ b/recipes/wip/openjdk11-headless/recipe.toml @@ -0,0 +1,15 @@ +#TODO build instructions - https://github.com/openjdk/jdk11u/blob/master/doc/building.md +#TODO not compiled or tested +[source] +tar = "https://github.com/openjdk/jdk11u/archive/jdk-11.0.21+9.tar.gz" +[build] +template = "custom" +dependencies = [ + "fontconfig", +] +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --enable-headless-only=yes +) +cookbook_configure +""" diff --git a/recipes/wip/openjdk17-headless/recipe.toml b/recipes/wip/openjdk17-headless/recipe.toml new file mode 100644 index 00000000..32ab3771 --- /dev/null +++ b/recipes/wip/openjdk17-headless/recipe.toml @@ -0,0 +1,15 @@ +#TODO build instructions - https://github.com/openjdk/jdk17u/blob/master/doc/building.md +#TODO not compiled or tested +[source] +tar = "https://github.com/openjdk/jdk17u/archive/jdk-17.0.9+8.tar.gz" +[build] +template = "custom" +dependencies = [ + "fontconfig", +] +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --enable-headless-only=yes +) +cookbook_configure +""" diff --git a/recipes/wip/openjdk21-headless/recipe.toml b/recipes/wip/openjdk21-headless/recipe.toml new file mode 100644 index 00000000..7038d338 --- /dev/null +++ b/recipes/wip/openjdk21-headless/recipe.toml @@ -0,0 +1,15 @@ +#TODO build instructions - https://github.com/openjdk/jdk21u/blob/master/doc/building.md +#TODO not compiled or tested +[source] +tar = "https://github.com/openjdk/jdk21u/archive/jdk-21+35.tar.gz" +[build] +template = "custom" +dependencies = [ + "fontconfig", +] +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --enable-headless-only=yes +) +cookbook_configure +""" diff --git a/recipes/wip/openjdk8-headless/recipe.toml b/recipes/wip/openjdk8-headless/recipe.toml new file mode 100644 index 00000000..9b8d9180 --- /dev/null +++ b/recipes/wip/openjdk8-headless/recipe.toml @@ -0,0 +1,10 @@ +#TODO build instructions - https://github.com/openjdk/jdk8u/blob/master/doc/building.md +#TODO not compiled or tested +#TODO build it in headless mode +[source] +tar = "https://github.com/openjdk/jdk8u/archive/refs/tags/jdk8u392-b08.tar.gz" +[build] +template = "custom" +dependencies = [ + "freetype2", +] diff --git a/recipes/wip/openlara/recipe.toml b/recipes/wip/openlara/recipe.toml new file mode 100644 index 00000000..5f7318e7 --- /dev/null +++ b/recipes/wip/openlara/recipe.toml @@ -0,0 +1,5 @@ +#TODO lacking a build system +[source] +git = "https://github.com/XProger/OpenLara" +[build] +template = "custom" diff --git a/recipes/wip/openmpi/recipe.toml b/recipes/wip/openmpi/recipe.toml new file mode 100644 index 00000000..3782a238 --- /dev/null +++ b/recipes/wip/openmpi/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing dependencies, see https://docs.open-mpi.org/en/v5.0.x/installing-open-mpi/required-support-libraries.html +[source] +tar = "https://download.open-mpi.org/release/open-mpi/v5.0/openmpi-5.0.0.tar.bz2" +[build] +template = "configure" +dependencies = [ + "libevent", +] diff --git a/recipes/wip/openradioss/recipe.toml b/recipes/wip/openradioss/recipe.toml new file mode 100644 index 00000000..770045fb --- /dev/null +++ b/recipes/wip/openradioss/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for building, see https://github.com/OpenRadioss/OpenRadioss/blob/main/HOWTO.md#building-on-linux +[source] +tar = "https://github.com/OpenRadioss/OpenRadioss" +[build] +template = "custom" +dependencies = [ + "openmpi", +] diff --git a/recipes/wip/openscad/recipe.toml b/recipes/wip/openscad/recipe.toml new file mode 100644 index 00000000..c3c469ff --- /dev/null +++ b/recipes/wip/openscad/recipe.toml @@ -0,0 +1,17 @@ +#TODO missing script for building, see https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Building_on_Linux/UNIX#Build_the_OpenSCAD_binary +#TODO missing dependencies - https://github.com/openscad/openscad/#prerequisites +[source] +tar = "https://files.openscad.org/openscad-2021.01.src.tar.gz" +[build] +template = "custom" +dependencies = [ + "qt5-base", + "libgmp", + "libmpfr", + "boost", + "glew", + "glib", + "fontconfig", + "freetype2", + "harfbuzz", +] diff --git a/recipes/wip/openspades/recipe.toml b/recipes/wip/openspades/recipe.toml new file mode 100644 index 00000000..c2f0d5f8 --- /dev/null +++ b/recipes/wip/openspades/recipe.toml @@ -0,0 +1,34 @@ +#TODO probably wrong script, see https://github.com/yvt/openspades#on-unixes-from-source +# The game crash with the Wayland backend of SDL2, you need to use the "SDL_VIDEODRIVER=x11" environment variable to use XWayland +# a script to workaround this is the best solution +[source] +git = "https://github.com/yvt/openspades" +[build] +template = "custom" +dependencies = [ + "glew", + "openssl1", + "sdl2", + "sdl2-image", + "freealut", + "freetype2", + "opus", + "opusfile", + "libjpeg", + "openal", +] +script = """ + COOKBOOK_CONFIGURE="cmake" + COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/opentomb/recipe.toml b/recipes/wip/opentomb/recipe.toml new file mode 100644 index 00000000..e71bedeb --- /dev/null +++ b/recipes/wip/opentomb/recipe.toml @@ -0,0 +1,27 @@ +#TODO probably wrong script, see https://github.com/opentomb/OpenTomb#compiling +[source] +git = "https://github.com/opentomb/OpenTomb" +[build] +template = "custom" +dependencies = [ + "sdl2", + "libpng", + "zlib", + "openal", + "mesa", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/opentoonz/recipe.toml b/recipes/wip/opentoonz/recipe.toml new file mode 100644 index 00000000..5fa0ed3e --- /dev/null +++ b/recipes/wip/opentoonz/recipe.toml @@ -0,0 +1,29 @@ +#TODO probably wrong script, see https://github.com/opentoonz/opentoonz/blob/master/doc/how_to_build_linux.md +#TODO missing dependencies +[source] +tar = "https://github.com/opentoonz/opentoonz/archive/refs/tags/v1.7.1.tar.gz" +[build] +template = "custom" +dependencies = [ + "boost", + "qt5-base", + "freetype2", + "libpng", + "libmypaint", + "opencv4", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/openvkl/recipe.toml b/recipes/wip/openvkl/recipe.toml new file mode 100644 index 00000000..553089ce --- /dev/null +++ b/recipes/wip/openvkl/recipe.toml @@ -0,0 +1,11 @@ +#TODO missing script for CMake, see https://github.com/openvkl/openvkl#building-open-vkl-from-source +[source] +tar = "https://github.com/openvkl/openvkl/archive/refs/tags/v2.0.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "ispc", + "librkcommon", + "embree", + "level-zero", +] diff --git a/recipes/wip/opus/recipe.toml b/recipes/wip/opus/recipe.toml new file mode 100644 index 00000000..8191a3f5 --- /dev/null +++ b/recipes/wip/opus/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +tar = "https://downloads.xiph.org/releases/opus/opus-1.4.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/opusfile/recipe.toml b/recipes/wip/opusfile/recipe.toml new file mode 100644 index 00000000..47d9e219 --- /dev/null +++ b/recipes/wip/opusfile/recipe.toml @@ -0,0 +1,10 @@ +#TODO compiled but not tested +[source] +tar = "https://downloads.xiph.org/releases/opus/opusfile-0.12.tar.gz" +[build] +template = "configure" +dependencies = [ + "openssl1", + "libogg", + "opus", +] diff --git a/recipes/wip/oranda/recipe.toml b/recipes/wip/oranda/recipe.toml new file mode 100644 index 00000000..4962d59f --- /dev/null +++ b/recipes/wip/oranda/recipe.toml @@ -0,0 +1,5 @@ +#TODO camino crate error (after a patch on the ring crate) +[source] +tar = "https://github.com/axodotdev/oranda/archive/refs/tags/v0.3.1.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/orchaldir-texture-generator/recipe.toml b/recipes/wip/orchaldir-texture-generator/recipe.toml new file mode 100644 index 00000000..440d25e6 --- /dev/null +++ b/recipes/wip/orchaldir-texture-generator/recipe.toml @@ -0,0 +1,8 @@ +#TODO Compiled but not tested +[source] +git = "https://github.com/Orchaldir/texture_generator" +[build] +template = "custom" +script = """ +cookbook_cargo_packages texture_generator +""" diff --git a/recipes/wip/orz/recipe.toml b/recipes/wip/orz/recipe.toml new file mode 100644 index 00000000..40f26292 --- /dev/null +++ b/recipes/wip/orz/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +git = "https://github.com/richox/orz" +[build] +template = "cargo" diff --git a/recipes/wip/osirion/recipe.toml b/recipes/wip/osirion/recipe.toml new file mode 100644 index 00000000..ac2c95c5 --- /dev/null +++ b/recipes/wip/osirion/recipe.toml @@ -0,0 +1,17 @@ +#TODO Not compiled or tested +# data files - http://osirion.org/files/osirion-0.2.8-data.zip +[source] +tar = "http://osirion.org/files/osirion-0.2.8-src.tar.bz2" +[build] +template = "configure" +dependencies = [ + "zlib", + "bullet-physics", + "libpng", + "libjpeg", + "sdl2", + "mesa", + "mesa-glu", + "openal", + "libvorbis", +] diff --git a/recipes/wip/ospray-studio/recipe.toml b/recipes/wip/ospray-studio/recipe.toml new file mode 100644 index 00000000..301dafc6 --- /dev/null +++ b/recipes/wip/ospray-studio/recipe.toml @@ -0,0 +1,13 @@ +#TODO missing script for CMake, see https://github.com/ospray/ospray_studio#standard-cmake-build +[source] +tar = "https://github.com/ospray/ospray_studio/archive/refs/tags/v0.13.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "ospray", + "onetbb", + "librkcommon", + "mesa", + "glfw", + "open-image-denoise", +] diff --git a/recipes/wip/ospray/recipe.toml b/recipes/wip/ospray/recipe.toml new file mode 100644 index 00000000..96014313 --- /dev/null +++ b/recipes/wip/ospray/recipe.toml @@ -0,0 +1,13 @@ +#TODO missing script for CMake, see https://github.com/ospray/OSPRay#building-and-finding-ospray +[source] +tar = "https://github.com/ospray/OSPRay/archive/v3.0.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "librkcommon", + "embree", + "ispc", + "onetbb", + "openvkl", + "open-image-denoise", +] diff --git a/recipes/wip/ouch/recipe.toml b/recipes/wip/ouch/recipe.toml new file mode 100644 index 00000000..38717464 --- /dev/null +++ b/recipes/wip/ouch/recipe.toml @@ -0,0 +1,10 @@ +#TODO Broken bzip2 dependency +[source] +tar = "https://github.com/ouch-org/ouch/archive/refs/tags/0.4.1.tar.gz" +[build] +template = "cargo" +dependencies = [ + "zlib", + "bzip2", + "xz", +] diff --git a/recipes/wip/oxipng/recipe.toml b/recipes/wip/oxipng/recipe.toml new file mode 100644 index 00000000..efd772b8 --- /dev/null +++ b/recipes/wip/oxipng/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/shssoichiro/oxipng/archive/refs/tags/v9.0.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/pango2mm/recipe.toml b/recipes/wip/pango2mm/recipe.toml new file mode 100644 index 00000000..6bd02a5f --- /dev/null +++ b/recipes/wip/pango2mm/recipe.toml @@ -0,0 +1,5 @@ +#TODO probably wrong template +[source] +tar = "https://download.gnome.org/sources/pangomm/2.50/pangomm-2.50.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/parabolic/recipe.toml b/recipes/wip/parabolic/recipe.toml new file mode 100644 index 00000000..48f1f470 --- /dev/null +++ b/recipes/wip/parabolic/recipe.toml @@ -0,0 +1,13 @@ +#TODO missing script for Cake, see https://github.com/NickvisionApps/Parabolic/blob/main/CONTRIBUTING.md#developing-on-linux +#TODO missing dependencies - https://github.com/NickvisionApps/Parabolic/blob/main/CONTRIBUTING.md#developing-on-linux +[source] +tar = "https://github.com/NickvisionApps/Parabolic/archive/refs/tags/2023.9.1.tar.gz" +[build] +template = "custom" +dependencies = [ + "ffmpeg6", + "yt-dlp", + "gtk4", + "libadwaita", + "aria2", +] diff --git a/recipes/wip/paraview-data/recipe.toml b/recipes/wip/paraview-data/recipe.toml new file mode 100644 index 00000000..685141e2 --- /dev/null +++ b/recipes/wip/paraview-data/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for installation, lacking instructions +[source] +tar = "https://www.paraview.org/paraview-downloads/download.php?submit=Download&version=v5.11&type=data&os=Sources&downloadFile=ParaViewTestingDataFiles-v5.11.2.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/paraview/recipe.toml b/recipes/wip/paraview/recipe.toml new file mode 100644 index 00000000..0d1651a5 --- /dev/null +++ b/recipes/wip/paraview/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for CMake, see https://kitware.github.io/paraviewweb/docs/configure_and_build_pvweb.html +# build instructions (if the above doesn't work) - https://github.com/Kitware/ParaView/blob/master/Documentation/dev/build.md +[source] +tar = "https://www.paraview.org/paraview-downloads/download.php?submit=Download&version=v5.11&type=source&os=Sources&downloadFile=ParaView-v5.11.2.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/pcsx2/recipe.toml b/recipes/wip/pcsx2/recipe.toml new file mode 100644 index 00000000..7ab490d1 --- /dev/null +++ b/recipes/wip/pcsx2/recipe.toml @@ -0,0 +1,41 @@ +#TODO probably wrong script, see https://github.com/PCSX2/pcsx2/wiki/10-Building-on-Linux +#TODO probably need patches on submodules +#TODO determine dependencies - https://aur.archlinux.org/packages/pcsx2-git +[source] +git = "https://github.com/PCSX2/pcsx2.git" +[build] +template = "custom" +dependencies = [ + "sdl2", + "xz", + "libpng", + "qt6-base", + "qt6-svg", + "qt6-wayland", + "mesa", + "libaio", + "harfbuzz", + "libpcap", + "pipewire", + "libsamplerate", + "soundtouch", + "zlib", + "libxml2", + "ffmpeg6", + "libwayland", +] +script = """ + COOKBOOK_CONFIGURE="cmake" + COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/pdbview/recipe.toml b/recipes/wip/pdbview/recipe.toml new file mode 100644 index 00000000..087edd40 --- /dev/null +++ b/recipes/wip/pdbview/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/landaire/pdbview" +[build] +template = "cargo" diff --git a/recipes/wip/pdu/recipe.toml b/recipes/wip/pdu/recipe.toml new file mode 100644 index 00000000..6a923614 --- /dev/null +++ b/recipes/wip/pdu/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +tar = "https://github.com/KSXGitHub/parallel-disk-usage/archive/refs/tags/0.9.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/pifs/recipe.toml b/recipes/wip/pifs/recipe.toml new file mode 100644 index 00000000..7bc4e2b4 --- /dev/null +++ b/recipes/wip/pifs/recipe.toml @@ -0,0 +1,12 @@ +#TODO probably wrong script, see https://github.com/philipl/pifs#readme +[source] +git = "https://github.com/philipl/pifs" +[build] +template = "custom" +dependencies = [ + "libfuse2", +] +script = """ +./autogen.sh +cookbook_configure +""" diff --git a/recipes/wip/pinky/recipe.toml b/recipes/wip/pinky/recipe.toml new file mode 100644 index 00000000..fc03064d --- /dev/null +++ b/recipes/wip/pinky/recipe.toml @@ -0,0 +1,11 @@ +#TODO Not compiled or tested yet +[source] +git = "https://github.com/koute/pinky" +[build] +template = "custom" +dependencies = [ + "sdl2", +] +script = """ +cookbook_cargo_packages pinky-devui +""" diff --git a/recipes/wip/pipewire/recipe.toml b/recipes/wip/pipewire/recipe.toml new file mode 100644 index 00000000..178679dd --- /dev/null +++ b/recipes/wip/pipewire/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, see https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/INSTALL.md +[source] +tar = "https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/1.0.0/pipewire-1.0.0.tar.bz2" +[build] +template = "custom" diff --git a/recipes/wip/pipr/recipe.toml b/recipes/wip/pipr/recipe.toml new file mode 100644 index 00000000..f6d7797c --- /dev/null +++ b/recipes/wip/pipr/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error (after an update on tokio, crossterm and tui crates) +[source] +git = "https://github.com/Elkowar/pipr" +[build] +template = "cargo" diff --git a/recipes/wip/pitivi/recipe.toml b/recipes/wip/pitivi/recipe.toml new file mode 100644 index 00000000..35bbf8a5 --- /dev/null +++ b/recipes/wip/pitivi/recipe.toml @@ -0,0 +1,10 @@ +#TODO missing script for Meson, lacking build instructions +[source] +tar = "https://download.gnome.org/sources/pitivi/2023/pitivi-2023.03.tar.xz" +[build] +template = "custom" +dependencies = [ + "gtk3", + "gstreamer", + "libpeas", +] diff --git a/recipes/wip/pixcil/recipe.toml b/recipes/wip/pixcil/recipe.toml new file mode 100644 index 00000000..e518eb29 --- /dev/null +++ b/recipes/wip/pixcil/recipe.toml @@ -0,0 +1,5 @@ +#TODO require WebAssembly +[source] +tar = "https://github.com/sile/pixcil/archive/refs/tags/0.5.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/pixi/recipe.toml b/recipes/wip/pixi/recipe.toml new file mode 100644 index 00000000..4d7715f3 --- /dev/null +++ b/recipes/wip/pixi/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/prefix-dev/pixi/archive/refs/tags/v0.6.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/pjsip/recipe.toml b/recipes/wip/pjsip/recipe.toml new file mode 100644 index 00000000..a67735e6 --- /dev/null +++ b/recipes/wip/pjsip/recipe.toml @@ -0,0 +1,11 @@ +#TODO Not compiled or tested +# customization - https://docs.pjsip.org/en/latest/get-started/posix/build_instructions.html +[source] +tar = "https://github.com/pjsip/pjproject/archive/refs/tags/2.14.tar.gz" +[build] +template = "configure" +dependencies = [ + "openssl1", + "ffmpeg6", + "libvpx", +] diff --git a/recipes/wip/please/recipe.toml b/recipes/wip/please/recipe.toml new file mode 100644 index 00000000..b2e19a29 --- /dev/null +++ b/recipes/wip/please/recipe.toml @@ -0,0 +1,5 @@ +#TODO users crate error +[source] +tar = "https://gitlab.com/edneville/please/-/archive/v0.5.4/please-v0.5.4.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/po4a/recipe.toml b/recipes/wip/po4a/recipe.toml new file mode 100644 index 00000000..43aeecd3 --- /dev/null +++ b/recipes/wip/po4a/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for installation, see https://github.com/mquinson/po4a#installation +[source] +tar = "https://github.com/mquinson/po4a/releases/download/v0.69/po4a-0.69.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/pomky/recipe.toml b/recipes/wip/pomky/recipe.toml new file mode 100644 index 00000000..8ad8e0d1 --- /dev/null +++ b/recipes/wip/pomky/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled/tested yet +[source] +git = "https://github.com/developomp/pomky" +[build] +template = "cargo" +dependencies = [ + "glib", +] diff --git a/recipes/wip/pony-lang/recipe.toml b/recipes/wip/pony-lang/recipe.toml new file mode 100644 index 00000000..29da4aa4 --- /dev/null +++ b/recipes/wip/pony-lang/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for CMake, see https://github.com/ponylang/ponyc/blob/main/BUILD.md +[source] +git = "https://github.com/ponylang/ponyc" +rev = "a161b7c97666f820bbacbb328d95dc820f353edd" +[build] +template = "custom" diff --git a/recipes/wip/popt/recipe.toml b/recipes/wip/popt/recipe.toml new file mode 100644 index 00000000..ccffe913 --- /dev/null +++ b/recipes/wip/popt/recipe.toml @@ -0,0 +1,20 @@ +#TODO probably wrong script, lacking build instructions +[source] +tar = "https://ftp.osuosl.org/pub/rpm/popt/releases/popt-1.x/popt-1.19.tar.gz" +[build] +template = "custom" +script = """ + COOKBOOK_CONFIGURE="cmake" + COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" \ No newline at end of file diff --git a/recipes/wip/porsmo/recipe.toml b/recipes/wip/porsmo/recipe.toml new file mode 100644 index 00000000..e68d2c79 --- /dev/null +++ b/recipes/wip/porsmo/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/ColorCookie-dev/porsmo/archive/refs/tags/0.2.4.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/postgresql16/recipe.toml b/recipes/wip/postgresql16/recipe.toml new file mode 100644 index 00000000..ccb5ddff --- /dev/null +++ b/recipes/wip/postgresql16/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error +[source] +tar = "https://ftp.postgresql.org/pub/source/v16.0/postgresql-16.0.tar.bz2" +[build] +template = "configure" diff --git a/recipes/wip/ppsspp/recipe.toml b/recipes/wip/ppsspp/recipe.toml new file mode 100644 index 00000000..85d81cb8 --- /dev/null +++ b/recipes/wip/ppsspp/recipe.toml @@ -0,0 +1,28 @@ +#TODO probably wrong script, see https://github.com/hrydgard/ppsspp/wiki/Build-instructions#building-with-cmake-other-platforms-eg-linux +[source] +git = "https://github.com/hrydgard/ppsspp" +[build] +template = "custom" +dependencies = [ + "sdl2", + "sdl2_ttf", + "mesa", + "fontconfig", + "curl", +] +script = """ + COOKBOOK_CONFIGURE="cmake" + COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DUSING_X11_VULKAN=OFF + -DUSE_SYSTEM_LIBSDL2=ON + -DUSE_MINIUPNPC=OFF + -DUSE_FFMPEG=OFF + -DUSE_DISCORD=OFF +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" \ No newline at end of file diff --git a/recipes/wip/pragha/recipe.toml b/recipes/wip/pragha/recipe.toml new file mode 100644 index 00000000..13dd9022 --- /dev/null +++ b/recipes/wip/pragha/recipe.toml @@ -0,0 +1,14 @@ +#TODO Make GTK3 work +[source] +git = "https://github.com/pragha-music-player/pragha" +[build] +template = "configure" +dependencies = [ + "gtk3", + "glib", + "gstreamer", + "taglib", + "sqlite3", + "libpeas", + "totem-plparser", +] diff --git a/recipes/wip/presenterm/recipe.toml b/recipes/wip/presenterm/recipe.toml new file mode 100644 index 00000000..c37c764e --- /dev/null +++ b/recipes/wip/presenterm/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/mfontanini/presenterm/archive/refs/tags/0.2.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/primesieve/recipe.toml b/recipes/wip/primesieve/recipe.toml new file mode 100644 index 00000000..7a1fa564 --- /dev/null +++ b/recipes/wip/primesieve/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/kimwalisch/primesieve/blob/master/doc/BUILD.md +[source] +tar = "https://github.com/kimwalisch/primesieve/archive/refs/tags/v11.1.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/process-viewer/recipe.toml b/recipes/wip/process-viewer/recipe.toml new file mode 100644 index 00000000..bf48af60 --- /dev/null +++ b/recipes/wip/process-viewer/recipe.toml @@ -0,0 +1,8 @@ +#TODO make GTK4 work +[source] +git = "https://github.com/GuillaumeGomez/process-viewer" +[build] +template = "cargo" +dependencies = [ + "gtk4", +] diff --git a/recipes/wip/procs/recipe.toml b/recipes/wip/procs/recipe.toml new file mode 100644 index 00000000..17e3d418 --- /dev/null +++ b/recipes/wip/procs/recipe.toml @@ -0,0 +1,5 @@ +#TODO socket and pipe compilation errors +[source] +tar = "https://github.com/dalance/procs/archive/refs/tags/v0.14.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/projections/recipe.toml b/recipes/wip/projections/recipe.toml new file mode 100644 index 00000000..68c19053 --- /dev/null +++ b/recipes/wip/projections/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for "make", see https://github.com/charmplusplus/projections#compiling-projections +[source] +tar = "https://github.com/charmplusplus/projections/archive/refs/tags/7.0.0.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/projectm/recipe.toml b/recipes/wip/projectm/recipe.toml new file mode 100644 index 00000000..debfb95a --- /dev/null +++ b/recipes/wip/projectm/recipe.toml @@ -0,0 +1,24 @@ +#TODO Probably wrong script, see https://github.com/projectM-visualizer/projectm/wiki/Building-libprojectM#build-and-install-projectm +[source] +tar = "https://github.com/projectM-visualizer/projectm/archive/refs/tags/v4.0.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "mesa", + "qt5-base", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/protobuf/recipe.toml b/recipes/wip/protobuf/recipe.toml new file mode 100644 index 00000000..18bf1707 --- /dev/null +++ b/recipes/wip/protobuf/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/protocolbuffers/protobuf/blob/main/cmake/README.md +[source] +tar = "https://github.com/protocolbuffers/protobuf/releases/download/v25.1/protobuf-25.1.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/pueue/recipe.toml b/recipes/wip/pueue/recipe.toml new file mode 100644 index 00000000..be79e148 --- /dev/null +++ b/recipes/wip/pueue/recipe.toml @@ -0,0 +1,8 @@ +#TODO require a update on the tokio crate and a patch on the ring crate +[source] +tar = "https://github.com/Nukesor/pueue/archive/refs/tags/v3.1.2.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages pueue +""" diff --git a/recipes/wip/pulseaudio/recipe.toml b/recipes/wip/pulseaudio/recipe.toml new file mode 100644 index 00000000..4b017c79 --- /dev/null +++ b/recipes/wip/pulseaudio/recipe.toml @@ -0,0 +1,14 @@ +#TODO missing script for Meson, see https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/Developer/PulseAudioFromGit/ +#TODO only build the library and disable the daemon in favor of PipeWire, see https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/INSTALL.md#pulseaudio-replacement +[source] +tar = "https://freedesktop.org/software/pulseaudio/releases/pulseaudio-16.1.tar.xz" +[build] +template = "custom" +dependencies = [ + "libsndfile", + "libatomic_ops", + "speexdsp", + "libtool", + "json-c", + "gettext", +] diff --git a/recipes/wip/pystring/recipe.toml b/recipes/wip/pystring/recipe.toml new file mode 100644 index 00000000..5f1c2780 --- /dev/null +++ b/recipes/wip/pystring/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://github.com/imageworks/pystring/archive/refs/tags/v1.1.4.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/python310/recipe.toml b/recipes/wip/python310/recipe.toml new file mode 100644 index 00000000..1300d516 --- /dev/null +++ b/recipes/wip/python310/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.python.org/ftp/python/3.10.13/Python-3.10.13.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/python312/recipe.toml b/recipes/wip/python312/recipe.toml new file mode 100644 index 00000000..249c6b5a --- /dev/null +++ b/recipes/wip/python312/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/q3rally/recipe.toml b/recipes/wip/q3rally/recipe.toml new file mode 100644 index 00000000..44edffdd --- /dev/null +++ b/recipes/wip/q3rally/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for "make", see https://github.com/Q3Rally-Team/q3rally/blob/master/engine/README.md +[source] +git = "https://github.com/Q3Rally-Team/q3rally" +[build] +template = "custom" +dependencies = [ + "sdl2", +] diff --git a/recipes/wip/qbe/recipe.toml b/recipes/wip/qbe/recipe.toml new file mode 100644 index 00000000..5ed00247 --- /dev/null +++ b/recipes/wip/qbe/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for "make", see https://c9x.me/git/qbe.git/tree/README#n13 +[source] +tar = "https://c9x.me/compile/release/qbe-1.1.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/qrrs/recipe.toml b/recipes/wip/qrrs/recipe.toml new file mode 100644 index 00000000..e4220794 --- /dev/null +++ b/recipes/wip/qrrs/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/Lenivaya/qrrs/archive/refs/tags/v0.1.8.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/qt4/recipe.toml b/recipes/wip/qt4/recipe.toml new file mode 100644 index 00000000..f986a67a --- /dev/null +++ b/recipes/wip/qt4/recipe.toml @@ -0,0 +1,5 @@ +#TODO probably wrong template and missing dependencies +[source] +tar = "http://download.qt.io/official_releases/qt/4.8/4.8.7/qt-everywhere-opensource-src-4.8.7.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-3d/recipe.toml b/recipes/wip/qt5-3d/recipe.toml new file mode 100644 index 00000000..d0afd914 --- /dev/null +++ b/recipes/wip/qt5-3d/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qt3d-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-base/recipe.toml b/recipes/wip/qt5-base/recipe.toml new file mode 100644 index 00000000..7ddc02d6 --- /dev/null +++ b/recipes/wip/qt5-base/recipe.toml @@ -0,0 +1,12 @@ +#TODO build instructions - https://doc.qt.io/qt-5/linux-building.html +#TODO customization - https://doc.qt.io/qt-5/configure-options.html +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtbase-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" +dependencies = [ + "fontconfig", + "freetype2", + "mesa", + "libxkbcommon", +] diff --git a/recipes/wip/qt5-declarative/recipe.toml b/recipes/wip/qt5-declarative/recipe.toml new file mode 100644 index 00000000..e2cc2d18 --- /dev/null +++ b/recipes/wip/qt5-declarative/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtdeclarative-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-full/recipe.toml b/recipes/wip/qt5-full/recipe.toml new file mode 100644 index 00000000..b493152b --- /dev/null +++ b/recipes/wip/qt5-full/recipe.toml @@ -0,0 +1,12 @@ +#TODO build instructions - https://doc.qt.io/qt-5/linux-building.html +#TODO customization - https://doc.qt.io/qt-5/configure-options.html +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/single/qt-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" +dependencies = [ + "fontconfig", + "freetype2", + "mesa", + "libxkbcommon", +] diff --git a/recipes/wip/qt5-imageformats/recipe.toml b/recipes/wip/qt5-imageformats/recipe.toml new file mode 100644 index 00000000..7878d309 --- /dev/null +++ b/recipes/wip/qt5-imageformats/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtimageformats-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-multimedia/recipe.toml b/recipes/wip/qt5-multimedia/recipe.toml new file mode 100644 index 00000000..7e9e3bf5 --- /dev/null +++ b/recipes/wip/qt5-multimedia/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtmultimedia-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-svg/recipe.toml b/recipes/wip/qt5-svg/recipe.toml new file mode 100644 index 00000000..1116339f --- /dev/null +++ b/recipes/wip/qt5-svg/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtsvg-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-tools/recipe.toml b/recipes/wip/qt5-tools/recipe.toml new file mode 100644 index 00000000..178a9fa0 --- /dev/null +++ b/recipes/wip/qt5-tools/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qttools-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-wayland/recipe.toml b/recipes/wip/qt5-wayland/recipe.toml new file mode 100644 index 00000000..1295aec3 --- /dev/null +++ b/recipes/wip/qt5-wayland/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtwayland-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-webengine/recipe.toml b/recipes/wip/qt5-webengine/recipe.toml new file mode 100644 index 00000000..47f22b6b --- /dev/null +++ b/recipes/wip/qt5-webengine/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtwebengine-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-webview/recipe.toml b/recipes/wip/qt5-webview/recipe.toml new file mode 100644 index 00000000..b175b83c --- /dev/null +++ b/recipes/wip/qt5-webview/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtwebview-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-x11extras/recipe.toml b/recipes/wip/qt5-x11extras/recipe.toml new file mode 100644 index 00000000..834f0c57 --- /dev/null +++ b/recipes/wip/qt5-x11extras/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtx11extras-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-3d/recipe.toml b/recipes/wip/qt6-3d/recipe.toml new file mode 100644 index 00000000..0b947c67 --- /dev/null +++ b/recipes/wip/qt6-3d/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qt3d-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-base/recipe.toml b/recipes/wip/qt6-base/recipe.toml new file mode 100644 index 00000000..c233e75e --- /dev/null +++ b/recipes/wip/qt6-base/recipe.toml @@ -0,0 +1,12 @@ +#TODO build instructions - https://doc.qt.io/qt-6/linux-building.html +#TODO customization - https://doc.qt.io/qt-6/configure-options.html +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtbase-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" +dependencies = [ + "fontconfig", + "freetype2", + "mesa", + "libxkbcommon", +] diff --git a/recipes/wip/qt6-charts/recipe.toml b/recipes/wip/qt6-charts/recipe.toml new file mode 100644 index 00000000..769871e3 --- /dev/null +++ b/recipes/wip/qt6-charts/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtcharts-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-declarative/recipe.toml b/recipes/wip/qt6-declarative/recipe.toml new file mode 100644 index 00000000..0fe1ddfb --- /dev/null +++ b/recipes/wip/qt6-declarative/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtdeclarative-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-full/recipe.toml b/recipes/wip/qt6-full/recipe.toml new file mode 100644 index 00000000..83405bf3 --- /dev/null +++ b/recipes/wip/qt6-full/recipe.toml @@ -0,0 +1,11 @@ +#TODO Missing script for GNU Autotools and CMake +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/single/qt-everywhere-src-6.6.1.tar.xz" +[build] +template = "custom" +dependencies = [ + "fontconfig", + "freetype2", + "mesa", + "libxkbcommon", +] diff --git a/recipes/wip/qt6-imageformats/recipe.toml b/recipes/wip/qt6-imageformats/recipe.toml new file mode 100644 index 00000000..a07e74d8 --- /dev/null +++ b/recipes/wip/qt6-imageformats/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtimageformats-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-multimedia/recipe.toml b/recipes/wip/qt6-multimedia/recipe.toml new file mode 100644 index 00000000..20b9558c --- /dev/null +++ b/recipes/wip/qt6-multimedia/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtmultimedia-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-positioning/recipe.toml b/recipes/wip/qt6-positioning/recipe.toml new file mode 100644 index 00000000..0d9f3ab7 --- /dev/null +++ b/recipes/wip/qt6-positioning/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtpositioning-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-tools/recipe.toml b/recipes/wip/qt6-tools/recipe.toml new file mode 100644 index 00000000..6fd432fe --- /dev/null +++ b/recipes/wip/qt6-tools/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qttools-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-translations/recipe.toml b/recipes/wip/qt6-translations/recipe.toml new file mode 100644 index 00000000..379ad873 --- /dev/null +++ b/recipes/wip/qt6-translations/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qttranslations-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-wayland/recipe.toml b/recipes/wip/qt6-wayland/recipe.toml new file mode 100644 index 00000000..313ce175 --- /dev/null +++ b/recipes/wip/qt6-wayland/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtwayland-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-webengine/recipe.toml b/recipes/wip/qt6-webengine/recipe.toml new file mode 100644 index 00000000..3f06e742 --- /dev/null +++ b/recipes/wip/qt6-webengine/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtwebengine-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-webview/recipe.toml b/recipes/wip/qt6-webview/recipe.toml new file mode 100644 index 00000000..bf07b3af --- /dev/null +++ b/recipes/wip/qt6-webview/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtwebview-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/quantlib/recipe.toml b/recipes/wip/quantlib/recipe.toml new file mode 100644 index 00000000..d6f09967 --- /dev/null +++ b/recipes/wip/quantlib/recipe.toml @@ -0,0 +1,8 @@ +#TODO probably wrong template, see https://www.quantlib.org/install/linux.shtml +[source] +tar = "https://github.com/lballabio/QuantLib/releases/download/v1.32/QuantLib-1.32.tar.gz" +[build] +template = "configure" +dependencies = [ + "boost", +] diff --git a/recipes/wip/qv/recipe.toml b/recipes/wip/qv/recipe.toml new file mode 100644 index 00000000..f7658add --- /dev/null +++ b/recipes/wip/qv/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/timvw/qv/archive/refs/tags/v0.8.4.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/rage/recipe.toml b/recipes/wip/rage/recipe.toml new file mode 100644 index 00000000..79ef957b --- /dev/null +++ b/recipes/wip/rage/recipe.toml @@ -0,0 +1,8 @@ +#TODO compiled but not tested +[source] +tar = "https://github.com/str4d/rage/archive/refs/tags/v0.9.2.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages rage +""" diff --git a/recipes/wip/rargs/recipe.toml b/recipes/wip/rargs/recipe.toml new file mode 100644 index 00000000..a48ab3ae --- /dev/null +++ b/recipes/wip/rargs/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled after cargo update, not tested +[source] +git = "https://github.com/lotabout/rargs" +[build] +template = "cargo" diff --git a/recipes/wip/rattler-build/recipe.toml b/recipes/wip/rattler-build/recipe.toml new file mode 100644 index 00000000..56693d8b --- /dev/null +++ b/recipes/wip/rattler-build/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/prefix-dev/rattler-build/archive/refs/tags/v0.4.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/rav1e/recipe.toml b/recipes/wip/rav1e/recipe.toml new file mode 100644 index 00000000..9a671d6b --- /dev/null +++ b/recipes/wip/rav1e/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/xiph/rav1e" +[build] +template = "cargo" diff --git a/recipes/wip/rawtherapee/recipe.toml b/recipes/wip/rawtherapee/recipe.toml new file mode 100644 index 00000000..6e901319 --- /dev/null +++ b/recipes/wip/rawtherapee/recipe.toml @@ -0,0 +1,21 @@ +#TODO missing script for CMake, see https://rawpedia.rawtherapee.com/Linux#Compile_RawTherapee +#TODO missing dependencies, see https://rawpedia.rawtherapee.com/Linux#Dependencies +[source] +tar = "https://rawtherapee.com/shared/source/rawtherapee-5.9.tar.xz" +[build] +template = "custom" +dependencies = [ + "gexiv2", + "expat", + "fftw", + "glib", + "gtk3", + "gtk3mm", + "libjpeg", + "liblcms", + "libpng", + "librsvg", + "libsigc++", + "libtiff", + "zlib", +] diff --git a/recipes/wip/raylib/recipe.toml b/recipes/wip/raylib/recipe.toml new file mode 100644 index 00000000..5625e299 --- /dev/null +++ b/recipes/wip/raylib/recipe.toml @@ -0,0 +1,25 @@ +#TODO probably wrong script, see https://github.com/raysan5/raylib/wiki/Working-on-GNU-Linux +[source] +tar = "https://github.com/raysan5/raylib/archive/refs/tags/5.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "mesa", + "libwayland", + "libxkbcommon", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/rbdoom3-bfg/recipe.toml b/recipes/wip/rbdoom3-bfg/recipe.toml new file mode 100644 index 00000000..6e17d3ec --- /dev/null +++ b/recipes/wip/rbdoom3-bfg/recipe.toml @@ -0,0 +1,12 @@ +#TODO missing script for CMake, see https://github.com/RobertBeckebans/RBDOOM-3-BFG#compiling-on-linux- +[source] +git = "https://github.com/RobertBeckebans/RBDOOM-3-BFG" +rev = "39ae1202b4e61ccb8d8e59609f5cd62b04a62a58" +[build] +template = "custom" +dependencies = [ + "sdl2", + "openal", + "ffmpeg6", + "libvulkan", +] diff --git a/recipes/wip/rclone/recipe.toml b/recipes/wip/rclone/recipe.toml new file mode 100644 index 00000000..39e934f3 --- /dev/null +++ b/recipes/wip/rclone/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Go, see https://rclone.org/install/#source +[source] +tar = "https://github.com/rclone/rclone/releases/download/v1.64.2/rclone-v1.64.2.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/rdflib/recipe.toml b/recipes/wip/rdflib/recipe.toml new file mode 100644 index 00000000..6ca32ba5 --- /dev/null +++ b/recipes/wip/rdflib/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for installation, the "pip" method can't be used, investigate the tarball +[source] +tar = "https://github.com/RDFLib/rdflib/releases/download/7.0.0/rdflib-7.0.0.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/recdec/recipe.toml b/recipes/wip/recdec/recipe.toml new file mode 100644 index 00000000..4ce19297 --- /dev/null +++ b/recipes/wip/recdec/recipe.toml @@ -0,0 +1,24 @@ +#TODO probably wrong script, see https://github.com/avast/retdec#process +[source] +tar = "https://github.com/avast/retdec/archive/refs/tags/v5.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "openssl1", + "zlib", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/redis/recipe.toml b/recipes/wip/redis/recipe.toml new file mode 100644 index 00000000..78d52ade --- /dev/null +++ b/recipes/wip/redis/recipe.toml @@ -0,0 +1,5 @@ +#TODO Missing script for "make", see https://redis.io/docs/install/install-redis/install-redis-from-source/ +[source] +tar = "https://github.com/redis/redis/archive/7.2.0.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/release-plz/recipe.toml b/recipes/wip/release-plz/recipe.toml new file mode 100644 index 00000000..61a85afb --- /dev/null +++ b/recipes/wip/release-plz/recipe.toml @@ -0,0 +1,13 @@ +#TODO openssl-sys crate error +[source] +tar = "https://github.com/MarcoIeni/release-plz/archive/refs/tags/release-plz-v0.3.20.tar.gz" +[build] +dependencies = [ + "openssl1", +] +template = "custom" +script = """ +export OPENSSL_DIR="${COOKBOOK_SYSROOT}" +export OPENSSL_STATIC="true" +cookbook_cargo_packages release-plz +""" diff --git a/recipes/wip/relish/recipe.toml b/recipes/wip/relish/recipe.toml new file mode 100644 index 00000000..dc085262 --- /dev/null +++ b/recipes/wip/relish/recipe.toml @@ -0,0 +1,5 @@ +#TODO program error, maybe needs porting +[source] +git = "https://gitlab.com/whom/relish" +[build] +template = "cargo" diff --git a/recipes/wip/renderdoc/recipe.toml b/recipes/wip/renderdoc/recipe.toml new file mode 100644 index 00000000..b8b5b643 --- /dev/null +++ b/recipes/wip/renderdoc/recipe.toml @@ -0,0 +1,26 @@ +#TODO probably wrong script, see https://github.com/baldurk/renderdoc/blob/v1.x/docs/CONTRIBUTING/Compiling.md#linux +[source] +tar = "https://github.com/baldurk/renderdoc/archive/refs/tags/v1.29.tar.gz" +[build] +template = "custom" +dependencies = [ + "libxcb", + "mesa", + "qt5-base", + "pcre", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/rioterm/recipe.toml b/recipes/wip/rioterm/recipe.toml new file mode 100644 index 00000000..a33d8703 --- /dev/null +++ b/recipes/wip/rioterm/recipe.toml @@ -0,0 +1,10 @@ +#TODO Need to make libxkbcommon work +[source] +tar = "https://github.com/raphamorim/rio/archive/refs/tags/v0.0.25.tar.gz" +[build] +template = "cargo" +dependencies = [ + "freetype2", + "fontconfig", + "libxkbcommon", +] diff --git a/recipes/wip/rip/recipe.toml b/recipes/wip/rip/recipe.toml new file mode 100644 index 00000000..906364c6 --- /dev/null +++ b/recipes/wip/rip/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +tar = "https://github.com/nivekuil/rip/archive/refs/tags/0.13.1.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/ripasso/recipe.toml b/recipes/wip/ripasso/recipe.toml new file mode 100644 index 00000000..be0f8b77 --- /dev/null +++ b/recipes/wip/ripasso/recipe.toml @@ -0,0 +1,11 @@ +#TODO make libgpg-error dependency work (after cargo update) +[source] +git = "https://github.com/cortex/ripasso" +[build] +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +cookbook_cargo_packages ripasso-cursive +""" diff --git a/recipes/wip/ripsecrets/recipe.toml b/recipes/wip/ripsecrets/recipe.toml new file mode 100644 index 00000000..59ee12a0 --- /dev/null +++ b/recipes/wip/ripsecrets/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +git = "https://github.com/sirwart/ripsecrets" +[build] +template = "cargo" diff --git a/recipes/wip/rnnoise/recipe.toml b/recipes/wip/rnnoise/recipe.toml new file mode 100644 index 00000000..6c1a63e8 --- /dev/null +++ b/recipes/wip/rnnoise/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://gitlab.xiph.org/xiph/rnnoise" +[build] +template = "configure" diff --git a/recipes/wip/rnr/recipe.toml b/recipes/wip/rnr/recipe.toml new file mode 100644 index 00000000..333c71a9 --- /dev/null +++ b/recipes/wip/rnr/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +tar = "https://github.com/ismaelgv/rnr/archive/refs/tags/v0.4.2.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/rocksdb/recipe.toml b/recipes/wip/rocksdb/recipe.toml new file mode 100644 index 00000000..03a1d069 --- /dev/null +++ b/recipes/wip/rocksdb/recipe.toml @@ -0,0 +1,13 @@ +#TODO missing script for "make", see https://github.com/facebook/rocksdb/blob/main/INSTALL.md +[source] +tar = "https://github.com/facebook/rocksdb/archive/refs/tags/v8.8.1.tar.gz" +[build] +template = "custom" +dependencies = [ + "zlib", + "lz4", + "bzip2", + "zstd", + "snappy", + "gflags", +] diff --git a/recipes/wip/rodinia/recipe.toml b/recipes/wip/rodinia/recipe.toml new file mode 100644 index 00000000..ae1b0752 --- /dev/null +++ b/recipes/wip/rodinia/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for building, lacking build instructions +[source] +tar = "http://www.cs.virginia.edu/~skadron/lava/Rodinia/Packages/rodinia_3.1.tar.bz2" +[build] +template = "custom" diff --git a/recipes/wip/rowhammer-test/recipe.toml b/recipes/wip/rowhammer-test/recipe.toml new file mode 100644 index 00000000..3b859b95 --- /dev/null +++ b/recipes/wip/rowhammer-test/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for the "make.sh" file, see https://github.com/google/rowhammer-test#readme +[source] +git = "https://github.com/google/rowhammer-test" +[build] +template = "custom" diff --git a/recipes/wip/rpcs3/recipe.toml b/recipes/wip/rpcs3/recipe.toml new file mode 100644 index 00000000..f7b04643 --- /dev/null +++ b/recipes/wip/rpcs3/recipe.toml @@ -0,0 +1,38 @@ +#TODO probably wrong script, see https://github.com/RPCS3/rpcs3/blob/master/BUILDING.md#linux-1 +# customization - https://wiki.rpcs3.net/index.php?title=Help:Building_RPCS3#CMake_Build_Options +[source] +git = "https://github.com/RPCS3/rpcs3" +[build] +template = "custom" +dependencies = [ + "mesa", + "qt5-base", + "sdl2", + "eudev", + "glew", + "openal", + "zlib", + "libpng", + "libevdev", + "libedit", + "libvulkan", + "pulseaudio", +] +script = """ + COOKBOOK_CONFIGURE="cmake" + COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DUSE_NATIVE_INSTRUCTIONS=OFF + -DUSE_ALSA=OFF + -DUSE_PULSE=OFF + -DUSE_DISCORD_RPC=OFF + -DBUILD_LLVM_SUBMODULE=OFF + -DUSE_SYSTEM_FFMPEG=ON + -DUSE_SYSTEM_LIBPNG=ON +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" \ No newline at end of file diff --git a/recipes/wip/rr-debugger/recipe.toml b/recipes/wip/rr-debugger/recipe.toml new file mode 100644 index 00000000..6d6728bc --- /dev/null +++ b/recipes/wip/rr-debugger/recipe.toml @@ -0,0 +1,9 @@ +#TODO probably wrong template, see https://github.com/rr-debugger/rr/wiki/Building-And-Installing +[source] +tar = "https://github.com/rr-debugger/rr/archive/refs/tags/5.7.0.tar.gz" +[build] +template = "configure" +dependencies = [ + "zlib", + "capnproto", +] diff --git a/recipes/wip/rshijack/recipe.toml b/recipes/wip/rshijack/recipe.toml new file mode 100644 index 00000000..5fa48c02 --- /dev/null +++ b/recipes/wip/rshijack/recipe.toml @@ -0,0 +1,5 @@ +#TODO pnet_sys crate error +[source] +git = "https://github.com/kpcyrd/rshijack" +[build] +template = "cargo" \ No newline at end of file diff --git a/recipes/wip/rsync/recipe.toml b/recipes/wip/rsync/recipe.toml new file mode 100644 index 00000000..e5dcf210 --- /dev/null +++ b/recipes/wip/rsync/recipe.toml @@ -0,0 +1,12 @@ +#TODO make all dependencies work +[source] +tar = "https://download.samba.org/pub/rsync/src/rsync-3.2.7.tar.gz" +[build] +template = "configure" +dependencies = [ + "zstd", + "zlib", + "lz4", + "popt", + "xxhash", +] diff --git a/recipes/wip/rtorrent/recipe.toml b/recipes/wip/rtorrent/recipe.toml new file mode 100644 index 00000000..5837e19b --- /dev/null +++ b/recipes/wip/rtorrent/recipe.toml @@ -0,0 +1,5 @@ +#TODO Maybe missing libtorrent dependency +[source] +tar = "https://github.com/rakshasa/rtorrent-archive/raw/master/rtorrent-0.9.8.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/rubberband/recipe.toml b/recipes/wip/rubberband/recipe.toml new file mode 100644 index 00000000..7908a22a --- /dev/null +++ b/recipes/wip/rubberband/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, see https://hg.sr.ht/~breakfastquay/rubberband/browse/COMPILING.md?rev=tip +[source] +tar = "https://breakfastquay.com/files/releases/rubberband-3.2.1.tar.bz2" +[build] +template = "custom" diff --git a/recipes/wip/ruby/recipe.toml b/recipes/wip/ruby/recipe.toml new file mode 100644 index 00000000..389fb621 --- /dev/null +++ b/recipes/wip/ruby/recipe.toml @@ -0,0 +1,11 @@ +#TODO compilation error +[source] +tar = "https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.2.tar.gz" +[build] +template = "configure" +dependencies = [ + "openssl1", + "zlib", + "libyaml", + "libffi", +] \ No newline at end of file diff --git a/recipes/wip/ruff/recipe.toml b/recipes/wip/ruff/recipe.toml new file mode 100644 index 00000000..0f7192e1 --- /dev/null +++ b/recipes/wip/ruff/recipe.toml @@ -0,0 +1,8 @@ +#TODO nonsense rustc version requirement +[source] +tar = "https://github.com/charliermarsh/ruff/archive/refs/tags/v0.0.270.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages ruff +""" diff --git a/recipes/wip/ruffle/recipe.toml b/recipes/wip/ruffle/recipe.toml new file mode 100644 index 00000000..4d2a02b5 --- /dev/null +++ b/recipes/wip/ruffle/recipe.toml @@ -0,0 +1,12 @@ +#TODO Require headless Java +[source] +git = "https://github.com/ruffle-rs/ruffle" +[build] +template = "custom" +dependencies = [ + "openssl1", + "java19", +] +script = """ +cookbook_cargo_packages ruffle_desktop +""" diff --git a/recipes/wip/ruplacer/recipe.toml b/recipes/wip/ruplacer/recipe.toml new file mode 100644 index 00000000..7db57e9c --- /dev/null +++ b/recipes/wip/ruplacer/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled after cargo update, not tested +[source] +tar = "https://github.com/your-tools/ruplacer/archive/refs/tags/v0.8.1.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/russ/recipe.toml b/recipes/wip/russ/recipe.toml new file mode 100644 index 00000000..a1fae40b --- /dev/null +++ b/recipes/wip/russ/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/ckampfe/russ" +[build] +template = "cargo" diff --git a/recipes/wip/rust-counter-strings/recipe.toml b/recipes/wip/rust-counter-strings/recipe.toml new file mode 100644 index 00000000..6b938b1d --- /dev/null +++ b/recipes/wip/rust-counter-strings/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/thomaschaplin/rust-counter-strings" +[build] +template = "cargo" diff --git a/recipes/wip/rust-traverse/recipe.toml b/recipes/wip/rust-traverse/recipe.toml new file mode 100644 index 00000000..0a727ed2 --- /dev/null +++ b/recipes/wip/rust-traverse/recipe.toml @@ -0,0 +1,5 @@ +#TODO trash crate error +[source] +tar = "https://github.com/dmcg310/Rust-Traverse/archive/refs/tags/v1.0.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/rustcloud/recipe.toml b/recipes/wip/rustcloud/recipe.toml new file mode 100644 index 00000000..ebe05c95 --- /dev/null +++ b/recipes/wip/rustcloud/recipe.toml @@ -0,0 +1,8 @@ +#TODO mio crate error (after cargo update -p libc redox_syscall) +[source] +git = "https://github.com/cetra3/rustcloud" +[build] +template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/rustic/recipe.toml b/recipes/wip/rustic/recipe.toml new file mode 100644 index 00000000..0ed86c54 --- /dev/null +++ b/recipes/wip/rustic/recipe.toml @@ -0,0 +1,5 @@ +#TODO redox_syscall crate error +[source] +git = "https://github.com/rustic-music-player/rustic" +[build] +template = "cargo" diff --git a/recipes/wip/rustlings/recipe.toml b/recipes/wip/rustlings/recipe.toml new file mode 100644 index 00000000..ceb06c46 --- /dev/null +++ b/recipes/wip/rustlings/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/rust-lang/rustlings/archive/refs/tags/5.6.1.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/rustscan/recipe.toml b/recipes/wip/rustscan/recipe.toml new file mode 100644 index 00000000..571eca74 --- /dev/null +++ b/recipes/wip/rustscan/recipe.toml @@ -0,0 +1,8 @@ +#TODO Make nmap work +[source] +tar = "https://github.com/RustScan/RustScan/archive/refs/tags/2.1.1.tar.gz" +[build] +template = "cargo" +dependencies = [ + "nmap", +] diff --git a/recipes/wip/rusty-radamsa/recipe.toml b/recipes/wip/rusty-radamsa/recipe.toml new file mode 100644 index 00000000..cdb306c7 --- /dev/null +++ b/recipes/wip/rusty-radamsa/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/microsoft/rusty-radamsa" +[build] +template = "cargo" diff --git a/recipes/wip/rusty-rain/recipe.toml b/recipes/wip/rusty-rain/recipe.toml new file mode 100644 index 00000000..1adbe7d6 --- /dev/null +++ b/recipes/wip/rusty-rain/recipe.toml @@ -0,0 +1,5 @@ +#TODO mio crate error +[source] +tar = "https://github.com/cowboy8625/rusty-rain/archive/refs/tags/v0.3.6.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/rustyvibes/recipe.toml b/recipes/wip/rustyvibes/recipe.toml new file mode 100644 index 00000000..4678a997 --- /dev/null +++ b/recipes/wip/rustyvibes/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/KunalBagaria/rustyvibes/archive/refs/tags/v1.0.9.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/rye/recipe.toml b/recipes/wip/rye/recipe.toml new file mode 100644 index 00000000..5fccc579 --- /dev/null +++ b/recipes/wip/rye/recipe.toml @@ -0,0 +1,13 @@ +#TODO openssl-sys crate error +[source] +tar = "https://github.com/mitsuhiko/rye/archive/refs/tags/0.11.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +export OPENSSL_DIR="${COOKBOOK_SYSROOT}" +export OPENSSL_STATIC="true" +cookbook_cargo_packages rye +""" diff --git a/recipes/wip/ryujinx/recipe.toml b/recipes/wip/ryujinx/recipe.toml new file mode 100644 index 00000000..54cd98d9 --- /dev/null +++ b/recipes/wip/ryujinx/recipe.toml @@ -0,0 +1,12 @@ +#TODO missing script for dotnet, see https://github.com/Ryujinx/Ryujinx#building +#TODO require .NET Framework 8 +#TODO maybe missing dependencies +[source] +git = "https://github.com/Ryujinx/Ryujinx" +[build] +template = "custom" +dependencies = [ + "sdl2", + "freealut", + "openal", +] diff --git a/recipes/wip/sad/recipe.toml b/recipes/wip/sad/recipe.toml new file mode 100644 index 00000000..c0eb5137 --- /dev/null +++ b/recipes/wip/sad/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error +[source] +git = "https://github.com/ms-jpq/sad" +[build] +template = "cargo" diff --git a/recipes/wip/samba/recipe.toml b/recipes/wip/samba/recipe.toml new file mode 100644 index 00000000..b2cd6168 --- /dev/null +++ b/recipes/wip/samba/recipe.toml @@ -0,0 +1,11 @@ +#TODO probably wrong tarball +# filesystem support - https://wiki.samba.org/index.php/File_System_Support +[source] +tar = "https://download.samba.org/pub/samba/samba-4.19.3.tar.gz" +[build] +template = "configure" +dependencies = [ + "gnutls", + "zlib", + "kerberos5", +] diff --git a/recipes/wip/samply/recipe.toml b/recipes/wip/samply/recipe.toml new file mode 100644 index 00000000..52d05bb6 --- /dev/null +++ b/recipes/wip/samply/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/mstange/samply/archive/refs/tags/samply-v0.11.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/sandbox/recipe.toml b/recipes/wip/sandbox/recipe.toml new file mode 100644 index 00000000..da16ff1e --- /dev/null +++ b/recipes/wip/sandbox/recipe.toml @@ -0,0 +1,12 @@ +#TODO make dependencies work +[source] +git = "https://github.com/hakolao/sandbox" +[build] +template = "custom" +dependencies = [ + "libvulkan", + "libxcb", +] +script = """ +cookbook_cargo_packages sandbox +""" diff --git a/recipes/wip/scribus/recipe.toml b/recipes/wip/scribus/recipe.toml new file mode 100644 index 00000000..8e4f1982 --- /dev/null +++ b/recipes/wip/scribus/recipe.toml @@ -0,0 +1,30 @@ +#TODO probably wrong script, see https://wiki.scribus.net/canvas/Official:Compile_with_CMake +[source] +tar = "https://sourceforge.net/projects/scribus/files/scribus/1.4.8/scribus-1.4.8.tar.xz/download" +[build] +template = "custom" +dependencies = [ + "qt4", + "cairo", + "freetype2", + "libxml2", + "liblcms", + "libtiff", + "libjpeg", + "fontconfig", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/sd/recipe.toml b/recipes/wip/sd/recipe.toml new file mode 100644 index 00000000..850fd296 --- /dev/null +++ b/recipes/wip/sd/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +git = "https://github.com/chmln/sd.git" +[build] +template = "cargo" diff --git a/recipes/wip/sdl-pango/recipe.toml b/recipes/wip/sdl-pango/recipe.toml new file mode 100644 index 00000000..a8763ee6 --- /dev/null +++ b/recipes/wip/sdl-pango/recipe.toml @@ -0,0 +1,5 @@ +#TODO probably missing dependencies +[source] +tar = "https://sourceforge.net/projects/sdlpango/files/SDL_Pango/0.1.2/SDL_Pango-0.1.2.tar.gz/download" +[build] +template = "configure" diff --git a/recipes/wip/sdl2-net/recipe.toml b/recipes/wip/sdl2-net/recipe.toml new file mode 100644 index 00000000..f1523352 --- /dev/null +++ b/recipes/wip/sdl2-net/recipe.toml @@ -0,0 +1,23 @@ +#TODO probably wrong script, lacking build instructions +[source] +tar = "https://github.com/libsdl-org/SDL_net/releases/download/release-2.2.0/SDL2_net-2.2.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "sdl2", +] +script = """ + COOKBOOK_CONFIGURE="cmake" + COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/sdl2-pango/recipe.toml b/recipes/wip/sdl2-pango/recipe.toml new file mode 100644 index 00000000..93e103cb --- /dev/null +++ b/recipes/wip/sdl2-pango/recipe.toml @@ -0,0 +1,10 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/markuskimius/SDL2_Pango/archive/refs/tags/v2.1.5.tar.gz" +[build] +template = "configure" +dependencies = [ + "pango", + "freetype2", + "sdl2", +] diff --git a/recipes/wip/seatd/recipe.toml b/recipes/wip/seatd/recipe.toml new file mode 100644 index 00000000..630f8e68 --- /dev/null +++ b/recipes/wip/seatd/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, lacking build instructions +[source] +tar = "https://git.sr.ht/~kennylevinsen/seatd/archive/0.8.0.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/shaderc/recipe.toml b/recipes/wip/shaderc/recipe.toml new file mode 100644 index 00000000..b614143f --- /dev/null +++ b/recipes/wip/shaderc/recipe.toml @@ -0,0 +1,20 @@ +#TODO Probably wrong script, see https://github.com/google/shaderc#getting-and-building-shaderc +[source] +tar = "https://github.com/google/shaderc/archive/refs/tags/v2023.3.tar.gz" +[build] +template = "custom" +script = """ + COOKBOOK_CONFIGURE="cmake" + COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/shd/recipe.toml b/recipes/wip/shd/recipe.toml new file mode 100644 index 00000000..1398bffb --- /dev/null +++ b/recipes/wip/shd/recipe.toml @@ -0,0 +1,8 @@ +#TODO make the smartmontools dependency work +[source] +tar = "https://github.com/alttch/shd/archive/refs/tags/v0.1.5.tar.gz" +[build] +template = "cargo" +dependencies = [ + "smartmontools", +] diff --git a/recipes/wip/sheldon/recipe.toml b/recipes/wip/sheldon/recipe.toml new file mode 100644 index 00000000..b0e388fe --- /dev/null +++ b/recipes/wip/sheldon/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/rossmacarthur/sheldon/archive/refs/tags/0.7.3.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/shellfirm/recipe.toml b/recipes/wip/shellfirm/recipe.toml new file mode 100644 index 00000000..3e6d6223 --- /dev/null +++ b/recipes/wip/shellfirm/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/kaplanelad/shellfirm/archive/refs/tags/v0.2.7.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/shockolate/recipe.toml b/recipes/wip/shockolate/recipe.toml new file mode 100644 index 00000000..8f5ce555 --- /dev/null +++ b/recipes/wip/shockolate/recipe.toml @@ -0,0 +1,46 @@ +#TODO something wrong with keyboard input +[source] +git = "https://github.com/Interrupt/systemshock" +[build] +template = "custom" +dependencies = [ + "libogg", + "liborbital", + "libvorbis", + "mesa", + "sdl2", + "sdl2_mixer", + "zlib", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_C_FLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" + -DCMAKE_CXX_FLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" + -DCMAKE_EXE_LINKER_FLAGS="-L${COOKBOOK_SYSROOT}/lib -static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On + -DENABLE_FLUIDSYNTH=OFF + -DENABLE_SDL2=ON + -DENABLE_SOUND=ON + -DOPENGL_INCLUDE_DIR="${COOKBOOK_SYSROOT}" + -DOPENGL_opengl_LIBRARY="-lgl" + -DOPENGL_glx_LIBRARY="-lglx" + -DSDL2_MIXER_LIBRARIES="-lSDL2_mixer -lvorbisfile -lvorbis -logg -lSDL2 -lorbital $("${TARGET}-pkg-config" --libs osmesa)" + "${COOKBOOK_SOURCE}" +) +cmake "${COOKBOOK_CONFIGURE_FLAGS[@]}" +make -j "${COOKBOOK_MAKE_JOBS}" +mkdir -pv "${COOKBOOK_STAGE}/home/user/systemshock" +cp -v systemshock "${COOKBOOK_STAGE}/home/user/systemshock/systemshock" +cp -rv "${COOKBOOK_SOURCE}/shaders" "${COOKBOOK_STAGE}/home/user/systemshock/shaders" +""" +[package] +dependencies = [ + "llvm", +] diff --git a/recipes/wip/shokunin/recipe.toml b/recipes/wip/shokunin/recipe.toml new file mode 100644 index 00000000..a0d69876 --- /dev/null +++ b/recipes/wip/shokunin/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/sebastienrousseau/shokunin/archive/refs/tags/v0.0.20.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/simdjson/recipe.toml b/recipes/wip/simdjson/recipe.toml new file mode 100644 index 00000000..e334ad47 --- /dev/null +++ b/recipes/wip/simdjson/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/simdjson/simdjson/blob/master/HACKING.md#usage-cmake-on-64-bit-platforms-like-linux-freebsd-or-macos +[source] +tar = "https://github.com/simdjson/simdjson/archive/refs/tags/v3.6.0.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/skia/recipe.toml b/recipes/wip/skia/recipe.toml new file mode 100644 index 00000000..3a3665e5 --- /dev/null +++ b/recipes/wip/skia/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for GN, see https://skia.org/docs/user/build/ +[source] +git = "https://skia.googlesource.com/skia" +[build] +template = "custom" diff --git a/recipes/wip/skim/recipe.toml b/recipes/wip/skim/recipe.toml new file mode 100644 index 00000000..1c9c12cd --- /dev/null +++ b/recipes/wip/skim/recipe.toml @@ -0,0 +1,5 @@ +#TODO tuikit crate error +[source] +tar = "https://github.com/lotabout/skim/archive/refs/tags/v0.10.4.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/smag/recipe.toml b/recipes/wip/smag/recipe.toml new file mode 100644 index 00000000..2c80383a --- /dev/null +++ b/recipes/wip/smag/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/aantn/smag" +[build] +template = "cargo" diff --git a/recipes/wip/smartmontools/recipe.toml b/recipes/wip/smartmontools/recipe.toml new file mode 100644 index 00000000..0318a9cc --- /dev/null +++ b/recipes/wip/smartmontools/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error +[source] +tar = "https://sourceforge.net/projects/smartmontools/files/smartmontools/7.3/smartmontools-7.3.tar.gz/download" +[build] +template = "configure" diff --git a/recipes/wip/smokin-guns/recipe.toml b/recipes/wip/smokin-guns/recipe.toml new file mode 100644 index 00000000..1ffe7447 --- /dev/null +++ b/recipes/wip/smokin-guns/recipe.toml @@ -0,0 +1,7 @@ +#TODO missing script for "make", see https://trac.smokin-guns.org/wiki/SmokinGuns/Building/linux +#TODO bundled with the ioquake3 engine? +#TODO determine dependencies +[source] +git = "https://github.com/smokin-guns/SmokinGuns" +[build] +template = "custom" diff --git a/recipes/wip/sn0int/recipe.toml b/recipes/wip/sn0int/recipe.toml new file mode 100644 index 00000000..d5ef0c60 --- /dev/null +++ b/recipes/wip/sn0int/recipe.toml @@ -0,0 +1,9 @@ +#TODO SQLite is not working +[source] +tar = "https://github.com/kpcyrd/sn0int/archive/refs/tags/v0.25.0.tar.gz" +[build] +template = "cargo" +dependencies = [ + "libsodium", + "sqlite3", +] diff --git a/recipes/wip/snappy/recipe.toml b/recipes/wip/snappy/recipe.toml new file mode 100644 index 00000000..2962d88f --- /dev/null +++ b/recipes/wip/snappy/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/google/snappy#building +[source] +tar = "https://github.com/google/snappy/archive/refs/tags/1.1.10.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/sndio/recipe.toml b/recipes/wip/sndio/recipe.toml new file mode 100644 index 00000000..ba54af67 --- /dev/null +++ b/recipes/wip/sndio/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested yet +[source] +tar = "https://sndio.org/sndio-1.9.0.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/snes9x/recipe.toml b/recipes/wip/snes9x/recipe.toml new file mode 100644 index 00000000..a534c6a3 --- /dev/null +++ b/recipes/wip/snes9x/recipe.toml @@ -0,0 +1,28 @@ +#TODO probably wrong script, see https://github.com/snes9xgit/snes9x/wiki/Compiling +[source] +tar = "https://github.com/snes9xgit/snes9x/archive/refs/tags/1.62.3.tar.gz" +[build] +template = "custom" +dependencies = [ + "sdl2", + "gtk3mm", + "libpng", + "zlib", + "libx11", + "libepoxy", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/sniffglue/recipe.toml b/recipes/wip/sniffglue/recipe.toml new file mode 100644 index 00000000..9972734e --- /dev/null +++ b/recipes/wip/sniffglue/recipe.toml @@ -0,0 +1,8 @@ +#TODO make the libpcap dependency work +[source] +git = "https://github.com/kpcyrd/sniffglue" +[build] +template = "cargo" +dependencies = [ + "libpcap", +] diff --git a/recipes/wip/sniffnet/recipe.toml b/recipes/wip/sniffnet/recipe.toml new file mode 100644 index 00000000..2e1d214a --- /dev/null +++ b/recipes/wip/sniffnet/recipe.toml @@ -0,0 +1,9 @@ +#TODO make the libpcap dependency work +[source] +tar = "https://github.com/GyulyVGC/sniffnet/archive/refs/tags/v1.2.2.tar.gz" +[build] +template = "cargo" +dependencies = [ + "libpcap", + "fontconfig", +] diff --git a/recipes/wip/sord/recipe.toml b/recipes/wip/sord/recipe.toml new file mode 100644 index 00000000..fc03c5ed --- /dev/null +++ b/recipes/wip/sord/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, see https://gitlab.com/drobilla/sord/-/blob/master/INSTALL.md?ref_type=heads +[source] +tar = "https://download.drobilla.net/sord-0.16.14.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/soundtouch/recipe.toml b/recipes/wip/soundtouch/recipe.toml new file mode 100644 index 00000000..bbb2cf12 --- /dev/null +++ b/recipes/wip/soundtouch/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://www.surina.net/soundtouch/soundtouch-2.3.2.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/souper/recipe.toml b/recipes/wip/souper/recipe.toml new file mode 100644 index 00000000..ba91a50f --- /dev/null +++ b/recipes/wip/souper/recipe.toml @@ -0,0 +1,20 @@ +#TODO probably wrong script, see https://github.com/google/souper#building-souper +[source] +git = "https://github.com/google/souper" +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/spacer/recipe.toml b/recipes/wip/spacer/recipe.toml new file mode 100644 index 00000000..2d931bfa --- /dev/null +++ b/recipes/wip/spacer/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/samwho/spacer/archive/refs/tags/v0.3.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/spadesx/recipe.toml b/recipes/wip/spadesx/recipe.toml new file mode 100644 index 00000000..0d47d568 --- /dev/null +++ b/recipes/wip/spadesx/recipe.toml @@ -0,0 +1,25 @@ +#TODO probably wrong script, see https://github.com/SpadesX/SpadesX#installation +[source] +git = "https://github.com/SpadesX/SpadesX" +[build] +template = "custom" +dependencies = [ + "readline", + "zlib", + "json-c", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/specfem2d/recipe.toml b/recipes/wip/specfem2d/recipe.toml new file mode 100644 index 00000000..3dc74a29 --- /dev/null +++ b/recipes/wip/specfem2d/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for GNU Autotools", see https://specfem2d.readthedocs.io/en/latest/02_getting_started/ +[source] +tar = "https://github.com/SPECFEM/specfem2d/archive/refs/tags/v8.0.0.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/specfem3d-globe/recipe.toml b/recipes/wip/specfem3d-globe/recipe.toml new file mode 100644 index 00000000..6ba691af --- /dev/null +++ b/recipes/wip/specfem3d-globe/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for GNU Autotools, see https://specfem3d-globe.readthedocs.io/en/latest/02_getting_started/ +[source] +tar = "https://github.com/SPECFEM/specfem3d_globe/archive/refs/tags/v8.0.0.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/specfem3d/recipe.toml b/recipes/wip/specfem3d/recipe.toml new file mode 100644 index 00000000..7fde3ddd --- /dev/null +++ b/recipes/wip/specfem3d/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for GNU Autotools, see https://specfem3d.readthedocs.io/en/latest/02_getting_started/ +[source] +tar = "https://github.com/SPECFEM/specfem3d/archive/refs/tags/v4.0.0.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/speedtest-rs/recipe.toml b/recipes/wip/speedtest-rs/recipe.toml new file mode 100644 index 00000000..a9b3e715 --- /dev/null +++ b/recipes/wip/speedtest-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/nelsonjchen/speedtest-rs/archive/refs/tags/v0.1.4.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/speex/recipe.toml b/recipes/wip/speex/recipe.toml new file mode 100644 index 00000000..0f5ca93f --- /dev/null +++ b/recipes/wip/speex/recipe.toml @@ -0,0 +1,5 @@ +#TODO Compiled but not tested +[source] +tar = "http://downloads.xiph.org/releases/speex/speex-1.2.1.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/speexdsp/recipe.toml b/recipes/wip/speexdsp/recipe.toml new file mode 100644 index 00000000..8562d8e3 --- /dev/null +++ b/recipes/wip/speexdsp/recipe.toml @@ -0,0 +1,5 @@ +#TODO Compiled but not tested +[source] +tar = "http://downloads.xiph.org/releases/speex/speexdsp-1.2.1.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/sprinkles/recipe.toml b/recipes/wip/sprinkles/recipe.toml new file mode 100644 index 00000000..f91d5dc1 --- /dev/null +++ b/recipes/wip/sprinkles/recipe.toml @@ -0,0 +1,5 @@ +#TODO Compiled but not tested +[source] +tar = "https://github.com/KhalilOuali/sprinkles/archive/refs/tags/1.0.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/sqlite3/recipe.toml b/recipes/wip/sqlite3/recipe.toml new file mode 100644 index 00000000..3d51f081 --- /dev/null +++ b/recipes/wip/sqlite3/recipe.toml @@ -0,0 +1,10 @@ +#TODO incomplete port +[source] +tar = "https://www.sqlite.org/2023/sqlite-autoconf-3440000.tar.gz" +#blake3 = "44bc75a40d32afa71cffe149f766857c3cc41dea261b1e4645fde5f73f4c9268" +[build] +template = "custom" +script = """ +export CPPFLAGS="${CPPFLAGS} -D__minux=1 -DSQLITE_DEFAULT_UNIX_VFS='\\"unix-none\\"'" +cookbook_configure +""" diff --git a/recipes/wip/sratom/recipe.toml b/recipes/wip/sratom/recipe.toml new file mode 100644 index 00000000..d15d8d3c --- /dev/null +++ b/recipes/wip/sratom/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, see https://gitlab.com/lv2/sratom/-/blob/master/INSTALL.md?ref_type=heads +[source] +tar = "https://download.drobilla.net/sratom-0.6.14.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/srsran-4g/recipe.toml b/recipes/wip/srsran-4g/recipe.toml new file mode 100644 index 00000000..167f26a9 --- /dev/null +++ b/recipes/wip/srsran-4g/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for CMake, see https://docs.srsran.com/projects/4g/en/latest/general/source/1_installation.html#installation-from-source +[source] +tar = "https://github.com/srsran/srsRAN_4G/archive/refs/tags/release_23_11.tar.gz" +[build] +template = "custom" +dependencies = [ + "fftw", + "mbedtls", +] diff --git a/recipes/wip/srsran-project/recipe.toml b/recipes/wip/srsran-project/recipe.toml new file mode 100644 index 00000000..493295e4 --- /dev/null +++ b/recipes/wip/srsran-project/recipe.toml @@ -0,0 +1,10 @@ +#TODO missing script for CMake, see https://github.com/srsran/srsRAN_Project#build-instructions +#TODO missing dependencies +[source] +tar = "https://github.com/srsran/srsRAN_Project/archive/refs/tags/release_23_10_1.tar.gz" +[build] +template = "custom" +dependencies = [ + "fftw", + "mbedtls", +] diff --git a/recipes/wip/sshx/recipe.toml b/recipes/wip/sshx/recipe.toml new file mode 100644 index 00000000..59594b71 --- /dev/null +++ b/recipes/wip/sshx/recipe.toml @@ -0,0 +1,8 @@ +#TODO require NodeJS and NPM +[source] +tar = "https://github.com/ekzhang/sshx" +[build] +template = "custom" +script = """ +cookbook_cargo_packages sshx +""" diff --git a/recipes/wip/starship/recipe.toml b/recipes/wip/starship/recipe.toml new file mode 100644 index 00000000..e7b7a9de --- /dev/null +++ b/recipes/wip/starship/recipe.toml @@ -0,0 +1,5 @@ +#TODO nix::unistd::User +[source] +tar = "https://github.com/starship/starship/archive/refs/tags/v1.16.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/startup-notification/recipe.toml b/recipes/wip/startup-notification/recipe.toml new file mode 100644 index 00000000..8eb0370d --- /dev/null +++ b/recipes/wip/startup-notification/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error +[source] +tar = "http://www.freedesktop.org/software/startup-notification/releases/startup-notification-0.12.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/stellarium/recipe.toml b/recipes/wip/stellarium/recipe.toml new file mode 100644 index 00000000..38ded3f9 --- /dev/null +++ b/recipes/wip/stellarium/recipe.toml @@ -0,0 +1,37 @@ +#TODO probably wrong script, see https://github.com/Stellarium/stellarium/blob/master/BUILDING.md#building +#TODO missing dependencies - https://github.com/Stellarium/stellarium/blob/master/BUILDING.md#qt6 +[source] +tar = "https://github.com/Stellarium/stellarium/releases/download/v23.3/stellarium-23.3.tar.xz" +[build] +template = "custom" +dependencies = [ + "mesa", + "zlib", + "gstreamer", + "qt6-base", + "qt6-multimedia", + "qt6-webengine", + "qt6-positioning", + "qt6-charts", + "qt6-imageformats", + "qt6-translations", + "qt6-tools", + "libxkbcommon", + "gexiv2", + "libnlopt", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/stockfish/recipe.toml b/recipes/wip/stockfish/recipe.toml new file mode 100644 index 00000000..2d1310f3 --- /dev/null +++ b/recipes/wip/stockfish/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for "make", see https://disservin.github.io/stockfish-docs/pages/Compiling-from-source.html +[source] +tar = "https://github.com/official-stockfish/Stockfish/archive/refs/tags/sf_16.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/stremio/recipe.toml b/recipes/wip/stremio/recipe.toml new file mode 100644 index 00000000..bcb9d68f --- /dev/null +++ b/recipes/wip/stremio/recipe.toml @@ -0,0 +1,12 @@ +#TODO missing script for qmake and make, see https://github.com/Stremio/stremio-shell/blob/master/DEBIAN.md +#TODO probably missing dependencies, see https://github.com/Stremio/stremio-shell/blob/master/DEBIAN.md#31-install-missing-dependencies +[source] +tar = "https://github.com/Stremio/stremio-shell" +[build] +template = "custom" +dependencies = [ + "openssl1", + "mpv", + "qt5-base", + "qt5-webview", +] diff --git a/recipes/wip/stress-ng/recipe.toml b/recipes/wip/stress-ng/recipe.toml new file mode 100644 index 00000000..3453b42e --- /dev/null +++ b/recipes/wip/stress-ng/recipe.toml @@ -0,0 +1,19 @@ +#TODO missing script for "make", see https://github.com/ColinIanKing/stress-ng#building-stress-ng +#TODO missing dependencies +[source] +tar = "https://github.com/ColinIanKing/stress-ng/archive/refs/tags/V0.17.01.tar.gz" +[build] +template = "custom" +dependencies = [ + "libbsd", + "libaio", + "libcap", + "libcap", + "libgcrypt", + "libjpeg", + "libmd", + "libmpfr", + "xxhash", + "zlib", + "mesa", +] diff --git a/recipes/wip/sudo-rs/recipe.toml b/recipes/wip/sudo-rs/recipe.toml new file mode 100644 index 00000000..94f6c7b5 --- /dev/null +++ b/recipes/wip/sudo-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO requires Linux PAM, probably needs porting +[source] +tar = "https://github.com/memorysafety/sudo-rs/archive/refs/tags/v0.2.1.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/sued/recipe.toml b/recipes/wip/sued/recipe.toml new file mode 100644 index 00000000..08c2168e --- /dev/null +++ b/recipes/wip/sued/recipe.toml @@ -0,0 +1,5 @@ +#TODO wayland-commons crate error +[source] +git = "https://github.com/That1M8Head/sued" +[build] +template = "cargo" diff --git a/recipes/wip/suil/recipe.toml b/recipes/wip/suil/recipe.toml new file mode 100644 index 00000000..7aa3f608 --- /dev/null +++ b/recipes/wip/suil/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, see https://gitlab.com/lv2/suil/-/blob/master/INSTALL.md?ref_type=heads +[source] +tar = "https://download.drobilla.net/suil-0.10.18.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/supertuxkart/recipe.toml b/recipes/wip/supertuxkart/recipe.toml new file mode 100644 index 00000000..34f0bda9 --- /dev/null +++ b/recipes/wip/supertuxkart/recipe.toml @@ -0,0 +1,35 @@ +#TODO probably wrong script, see https://github.com/supertuxkart/stk-code/blob/master/INSTALL.md#compiling +[source] +tar = "https://github.com/supertuxkart/stk-code/releases/download/1.4/SuperTuxKart-1.4-src.tar.xz" +[build] +template = "custom" +dependencies = [ + "openal", + "libogg", + "libvorbis", + "freetype2", + "harfbuzz", + "curl", + "openssl1", + "libpng", + "zlib", + "libjpeg", + "sdl2", +] +script = """ + COOKBOOK_CONFIGURE="cmake" + COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On + -DNO_SHADERC=on + -DBUILD_RECORDER=off +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/svg2pdf/recipe.toml b/recipes/wip/svg2pdf/recipe.toml new file mode 100644 index 00000000..aa17f02c --- /dev/null +++ b/recipes/wip/svg2pdf/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/typst/svg2pdf/archive/refs/tags/v0.9.0.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages svg2pdf-cli +""" diff --git a/recipes/wip/svt-av1/recipe.toml b/recipes/wip/svt-av1/recipe.toml new file mode 100644 index 00000000..67975389 --- /dev/null +++ b/recipes/wip/svt-av1/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for building, see https://gitlab.com/AOMediaCodec/SVT-AV1/-/blob/master/Docs/Build-Guide.md#linux-operating-systems-64-bit +[source] +tar = "https://gitlab.com/AOMediaCodec/SVT-AV1/-/archive/v1.7.0/SVT-AV1-v1.7.0.tar.bz2" +[build] +template = "custom" diff --git a/recipes/wip/svt-hevc/recipe.toml b/recipes/wip/svt-hevc/recipe.toml new file mode 100644 index 00000000..43dd471c --- /dev/null +++ b/recipes/wip/svt-hevc/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/OpenVisualCloud/SVT-HEVC#linux-operating-systems-64-bit +[source] +tar = "https://github.com/OpenVisualCloud/SVT-HEVC/archive/refs/tags/v1.5.1.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/svt-vp9/recipe.toml b/recipes/wip/svt-vp9/recipe.toml new file mode 100644 index 00000000..134c8113 --- /dev/null +++ b/recipes/wip/svt-vp9/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/OpenVisualCloud/SVT-VP9#linux-operating-systems-64-bit +[source] +git = "https://github.com/OpenVisualCloud/SVT-VP9" +[build] +template = "custom" diff --git a/recipes/wip/sway/recipe.toml b/recipes/wip/sway/recipe.toml new file mode 100644 index 00000000..bbfaf68d --- /dev/null +++ b/recipes/wip/sway/recipe.toml @@ -0,0 +1,14 @@ +#TODO missing script for Meson, see https://github.com/swaywm/sway#compiling-from-source +[source] +tar = "https://github.com/swaywm/sway/releases/download/1.8.1/sway-1.8.1.tar.gz" +[build] +template = "custom" +dependencies = [ + "wlroots", + "libwayland", + "pcre", + "json-c", + "pango", + "cairo", + "gdk-pixbuf", +] diff --git a/recipes/wip/symphonia-play/recipe.toml b/recipes/wip/symphonia-play/recipe.toml new file mode 100644 index 00000000..ab618e9d --- /dev/null +++ b/recipes/wip/symphonia-play/recipe.toml @@ -0,0 +1,9 @@ +#TODO Compiled but not tested +[source] +git = "https://github.com/pdeljanov/Symphonia" +[build] +template = "custom" +script = """ +cookbook_cargo_packages symphonia-play +mv "${COOKBOOK_STAGE}/bin/symphonia-play_symphonia-play" "${COOKBOOK_STAGE}/bin/symphonia-play" +""" diff --git a/recipes/wip/syslinux/recipe.toml b/recipes/wip/syslinux/recipe.toml new file mode 100644 index 00000000..4cf27bda --- /dev/null +++ b/recipes/wip/syslinux/recipe.toml @@ -0,0 +1,5 @@ +#TODO Compilation error +[source] +tar = "https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/t-rec/recipe.toml b/recipes/wip/t-rec/recipe.toml new file mode 100644 index 00000000..b2ed9320 --- /dev/null +++ b/recipes/wip/t-rec/recipe.toml @@ -0,0 +1,8 @@ +#TODO require XWayland +[source] +tar = "https://github.com/sassman/t-rec-rs/archive/refs/tags/v0.7.6.tar.gz" +[build] +template = "cargo" +dependencies = [ + "imagemagick", +] diff --git a/recipes/wip/t4kcommon/recipe.toml b/recipes/wip/t4kcommon/recipe.toml new file mode 100644 index 00000000..abb1f9da --- /dev/null +++ b/recipes/wip/t4kcommon/recipe.toml @@ -0,0 +1,14 @@ +#TODO missing script for GNU Autotools, see https://github.com/tux4kids/t4kcommon/blob/master/INSTALL#L33 +[source] +git = "https://github.com/tux4kids/t4kcommon" +[build] +template = "custom" +dependencies = [ + "sdl1", + "sdl1_mixer", + "sdl1_image", + "sdl-pango", + "sdl2-net", + "libpng", + "libxml2", +] diff --git a/recipes/wip/taglib/recipe.toml b/recipes/wip/taglib/recipe.toml new file mode 100644 index 00000000..506164f0 --- /dev/null +++ b/recipes/wip/taglib/recipe.toml @@ -0,0 +1,20 @@ +#TODO probably wrong script, see https://github.com/taglib/taglib/blob/master/INSTALL.md +[source] +tar = "https://taglib.org/releases/taglib-1.13.tar.gz" +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tealdeer/recipe.toml b/recipes/wip/tealdeer/recipe.toml new file mode 100644 index 00000000..75292788 --- /dev/null +++ b/recipes/wip/tealdeer/recipe.toml @@ -0,0 +1,5 @@ +#TODO require a patch on ring and tokio on the dependency chain (locked version) +[source] +tar = "https://github.com/dbrgn/tealdeer/archive/refs/tags/v1.6.1.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/telegram-desktop/recipe.toml b/recipes/wip/telegram-desktop/recipe.toml new file mode 100644 index 00000000..6fe9c223 --- /dev/null +++ b/recipes/wip/telegram-desktop/recipe.toml @@ -0,0 +1,38 @@ +#TODO probably wrong script, lacking build instructions +[source] +tar = "https://github.com/telegramdesktop/tdesktop/releases/download/v4.11.6/tdesktop-4.11.6-full.tar.gz" +[build] +template = "custom" +dependencies = [ + "qt6-wayland", + "qt6-svg", + "qt6-imageformats", + "fontconfig", + "freetype2", + "gobject-introspection", + "glib", + "expat", + "libuuid", + "libpng", + "zlib", + "libffi", + "libpcre", + "libbsd", + "libmd", + "libbrotli", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/termcap/recipe.toml b/recipes/wip/termcap/recipe.toml new file mode 100644 index 00000000..d63ea82f --- /dev/null +++ b/recipes/wip/termcap/recipe.toml @@ -0,0 +1,5 @@ +#TODO non-sense "permission denied" error +[source] +tar = "https://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/termimage/recipe.toml b/recipes/wip/termimage/recipe.toml new file mode 100644 index 00000000..8dc08269 --- /dev/null +++ b/recipes/wip/termimage/recipe.toml @@ -0,0 +1,5 @@ +#TODO move to the proper category +[source] +tar = "https://github.com/nabijaczleweli/termimage/archive/refs/tags/v1.2.1.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/termusic/recipe.toml b/recipes/wip/termusic/recipe.toml new file mode 100644 index 00000000..da24f078 --- /dev/null +++ b/recipes/wip/termusic/recipe.toml @@ -0,0 +1,10 @@ +#TODO missing script for "make", see https://github.com/tramhao/termusic#from-source +[source] +tar = "https://github.com/tramhao/termusic/archive/refs/tags/v0.7.4.tar.gz" +[build] +template = "custom" +dependencies = [ + "gstreamer", + "dbus", + "mpv", +] diff --git a/recipes/wip/ternimal/recipe.toml b/recipes/wip/ternimal/recipe.toml new file mode 100644 index 00000000..9132d89f --- /dev/null +++ b/recipes/wip/ternimal/recipe.toml @@ -0,0 +1,8 @@ +#TODO probably wrong script, see https://github.com/p-e-w/ternimal#building +[source] +git = "https://github.com/p-e-w/ternimal" +[build] +template = "custom" +script = """ +rustc -O "${COOKBOOK_SOURCE}"/ternimal.rs +""" diff --git a/recipes/wip/tetanes/recipe.toml b/recipes/wip/tetanes/recipe.toml new file mode 100644 index 00000000..15b14017 --- /dev/null +++ b/recipes/wip/tetanes/recipe.toml @@ -0,0 +1,12 @@ +#TODO Not compiled or tested yet +[source] +git = "https://github.com/lukexor/tetanes" +[build] +template = "cargo" +dependencies = [ + "sdl2", + "sdl2_image", + "sdl2_mixer", + "sdl2_ttf", + "sdl2_gfx", +] diff --git a/recipes/wip/texel/recipe.toml b/recipes/wip/texel/recipe.toml new file mode 100644 index 00000000..b92b4a95 --- /dev/null +++ b/recipes/wip/texel/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/almindor/texel" +[build] +template = "cargo" diff --git a/recipes/wip/texinfo/recipe.toml b/recipes/wip/texinfo/recipe.toml new file mode 100644 index 00000000..f8086a21 --- /dev/null +++ b/recipes/wip/texinfo/recipe.toml @@ -0,0 +1,5 @@ +#TODO Compilation error +[source] +tar = "https://ftp.gnu.org/gnu/texinfo/texinfo-7.0.3.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/thwack/recipe.toml b/recipes/wip/thwack/recipe.toml new file mode 100644 index 00000000..14a108f9 --- /dev/null +++ b/recipes/wip/thwack/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/yykamei/thwack/archive/refs/tags/v0.8.16.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/tin-summer/recipe.toml b/recipes/wip/tin-summer/recipe.toml new file mode 100644 index 00000000..25652744 --- /dev/null +++ b/recipes/wip/tin-summer/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +tar = "https://github.com/vmchale/tin-summer/archive/refs/tags/1.21.14.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/tiny/recipe.toml b/recipes/wip/tiny/recipe.toml new file mode 100644 index 00000000..526c5ff9 --- /dev/null +++ b/recipes/wip/tiny/recipe.toml @@ -0,0 +1,8 @@ +#TODO compiled but not tested (after a patch on the ring crate) +[source] +tar = "https://github.com/osa1/tiny/archive/refs/tags/v0.11.0.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages tiny +""" diff --git a/recipes/wip/tnn/recipe.toml b/recipes/wip/tnn/recipe.toml new file mode 100644 index 00000000..c510e1da --- /dev/null +++ b/recipes/wip/tnn/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for building, see https://github.com/Tencent/TNN/blob/master/doc/en/user/compile_en.md#iv-compilex86-linux +[source] +tar = "https://github.com/Tencent/TNN/archive/refs/tags/v0.3.0.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/tobaru/recipe.toml b/recipes/wip/tobaru/recipe.toml new file mode 100644 index 00000000..75f21f57 --- /dev/null +++ b/recipes/wip/tobaru/recipe.toml @@ -0,0 +1,5 @@ +#TODO can't update libc crate version +[source] +tar = "https://github.com/cfal/tobaru/archive/refs/tags/0.7.1.tar.gz" +[build] +template = "cargo" \ No newline at end of file diff --git a/recipes/wip/tock/recipe.toml b/recipes/wip/tock/recipe.toml new file mode 100644 index 00000000..20dd9c80 --- /dev/null +++ b/recipes/wip/tock/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/nwtnni/tock" +[build] +template = "cargo" diff --git a/recipes/wip/tokio-console/recipe.toml b/recipes/wip/tokio-console/recipe.toml new file mode 100644 index 00000000..8ecf5ffd --- /dev/null +++ b/recipes/wip/tokio-console/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/tokio-rs/console" +[build] +template = "cargo" diff --git a/recipes/wip/topgrade/recipe.toml b/recipes/wip/topgrade/recipe.toml new file mode 100644 index 00000000..d8ec7d00 --- /dev/null +++ b/recipes/wip/topgrade/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +tar = "https://github.com/topgrade-rs/topgrade/archive/refs/tags/v12.0.2.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/tor-browser/recipe.toml b/recipes/wip/tor-browser/recipe.toml new file mode 100644 index 00000000..219acd69 --- /dev/null +++ b/recipes/wip/tor-browser/recipe.toml @@ -0,0 +1,23 @@ +#TODO probably wrong template, see see https://firefox-source-docs.mozilla.org/setup/linux_build.html#build +[source] +tar = "https://dist.torproject.org/torbrowser/13.0.1/src-firefox-tor-browser-115.4.0esr-13.0-1-build2.tar.xz" +[build] +template = "configure" +dependencies = [ + "fontconfig", + "atk", + "cairo", + "dbus", + "libffi", + "freetype2", + "gdk-pixbuf", + "glib", + "gtk3", + "pango", + "sqlite3", + "nss-nspr", + "startup-notification", + "zlib", + "libvpx", + "ffmpeg6", +] diff --git a/recipes/wip/tor/recipe.toml b/recipes/wip/tor/recipe.toml new file mode 100644 index 00000000..1fffe43d --- /dev/null +++ b/recipes/wip/tor/recipe.toml @@ -0,0 +1,10 @@ +#TODO Make the libevent works +[source] +tar = "https://dist.torproject.org/tor-0.4.8.9.tar.gz" +[build] +template = "configure" +dependencies = [ + "libevent", + "openssl1" + "zlib", +] diff --git a/recipes/wip/tori/recipe.toml b/recipes/wip/tori/recipe.toml new file mode 100644 index 00000000..a9c53028 --- /dev/null +++ b/recipes/wip/tori/recipe.toml @@ -0,0 +1,9 @@ +#TODO make mpv works +[source] +tar = "https://github.com/LeoRiether/tori/archive/refs/tags/v0.2.5.tar.gz" +[build] +template = "cargo" +dependencies = [ + "mpv", + "cava", +] diff --git a/recipes/wip/totem-pl-parser/recipe.toml b/recipes/wip/totem-pl-parser/recipe.toml new file mode 100644 index 00000000..8e55be1a --- /dev/null +++ b/recipes/wip/totem-pl-parser/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for Meson, lacking build instructions +[source] +tar = "https://download.gnome.org/sources/totem-pl-parser/3.26/totem-pl-parser-3.26.6.tar.xz" +[build] +template = "configure" +dependencies = [ + "libxml2", + "glib", +] diff --git a/recipes/wip/touchhle/recipe.toml b/recipes/wip/touchhle/recipe.toml new file mode 100644 index 00000000..930b42e5 --- /dev/null +++ b/recipes/wip/touchhle/recipe.toml @@ -0,0 +1,8 @@ +#TODO Boost is not working +[source] +git = "https://github.com/hikari-no-yume/touchHLE" +[build] +template = "cargo" +dependencies = [ + "boost", +] diff --git a/recipes/wip/tp-note/recipe.toml b/recipes/wip/tp-note/recipe.toml new file mode 100644 index 00000000..9ec91fef --- /dev/null +++ b/recipes/wip/tp-note/recipe.toml @@ -0,0 +1,8 @@ +#TODO require Wayland? +[source] +tar = "https://gitlab.com/getreu/tp-note/-/archive/v1.21.4/tp-note-v1.21.4.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages tp-note +""" diff --git a/recipes/wip/tplay/recipe.toml b/recipes/wip/tplay/recipe.toml new file mode 100644 index 00000000..f9ec0d3d --- /dev/null +++ b/recipes/wip/tplay/recipe.toml @@ -0,0 +1,11 @@ +#TODO Make OpenCV 4 work +[source] +tar = "https://github.com/maxcurzi/tplay/archive/refs/tags/v0.4.5.tar.gz" +[build] +template = "cargo" +dependencies = [ + "ffmpeg6", + "llvm", + "openssl1", + "opencv4", +] diff --git a/recipes/wip/transmission/recipe.toml b/recipes/wip/transmission/recipe.toml new file mode 100644 index 00000000..c47d2e97 --- /dev/null +++ b/recipes/wip/transmission/recipe.toml @@ -0,0 +1,28 @@ +#TODO probably wrong script, see https://github.com/transmission/transmission#building-a-transmission-release-from-the-command-line +[source] +tar = "https://github.com/transmission/transmission/releases/download/4.0.4/transmission-4.0.4.tar.xz" +[build] +template = "custom" +dependencies = [ + "openssl1", + "gtk3", + "glib", + "curl", + "libevent", + "miniupnpc", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/treq/recipe.toml b/recipes/wip/treq/recipe.toml new file mode 100644 index 00000000..c72d6492 --- /dev/null +++ b/recipes/wip/treq/recipe.toml @@ -0,0 +1,8 @@ +#TODO thread-id crate error (after cargo update) +[source] +tar = "https://github.com/talis-fb/TReq/archive/refs/tags/v0.4.0.tar.gz" +[build] +template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/tribler/recipe.toml b/recipes/wip/tribler/recipe.toml new file mode 100644 index 00000000..bd70a1e5 --- /dev/null +++ b/recipes/wip/tribler/recipe.toml @@ -0,0 +1,10 @@ +#TODO missing script for installation, see https://tribler.readthedocs.io/en/latest/development/development_on_linux.html +#TODO missing Python libraries +[source] +tar = "https://github.com/Tribler/tribler/releases/download/v7.13.0/Tribler-7.13.0.tar.xz" +[build] +template = "custom" +dependencies = [ + "openssl1", + "libgmp", +] diff --git a/recipes/wip/trippy/recipe.toml b/recipes/wip/trippy/recipe.toml new file mode 100644 index 00000000..0e76726b --- /dev/null +++ b/recipes/wip/trippy/recipe.toml @@ -0,0 +1,5 @@ +#TODO source code error (after cargo update) +[source] +tar = "https://github.com/fujiapple852/trippy/archive/refs/tags/0.8.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/ttyper/recipe.toml b/recipes/wip/ttyper/recipe.toml new file mode 100644 index 00000000..07320b2c --- /dev/null +++ b/recipes/wip/ttyper/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/max-niederman/ttyper/archive/refs/tags/v1.4.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/tui-journal/recipe.toml b/recipes/wip/tui-journal/recipe.toml new file mode 100644 index 00000000..1d43b04f --- /dev/null +++ b/recipes/wip/tui-journal/recipe.toml @@ -0,0 +1,9 @@ +#TODO SQLite is not working +[source] +tar = "https://github.com/AmmarAbouZor/tui-journal/archive/refs/tags/v0.2.0.tar.gz" +[build] +template = "cargo" +dependencies = [ + "openssl1", + "sqlite3", +] diff --git a/recipes/wip/tungsten-renderer/recipe.toml b/recipes/wip/tungsten-renderer/recipe.toml new file mode 100644 index 00000000..90dae7c3 --- /dev/null +++ b/recipes/wip/tungsten-renderer/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/tunabrain/tungsten#compilation +[source] +git = "https://github.com/tunabrain/tungsten" +[build] +template = "custom" diff --git a/recipes/wip/tuxmath/recipe.toml b/recipes/wip/tuxmath/recipe.toml new file mode 100644 index 00000000..17b23126 --- /dev/null +++ b/recipes/wip/tuxmath/recipe.toml @@ -0,0 +1,15 @@ +#TODO missing script for building, see https://github.com/tux4kids/tuxmath/blob/master/doc/INSTALL +[source] +git = "https://github.com/tux4kids/tuxmath" +[build] +template = "custom" +dependencies = [ + "t4kcommon", + "sdl1", + "sdl1-image", + "sdl1-mixer", + "sdl1-ttf", + "sdl2-net", + "sdl-pango", + "librsvg", +] diff --git a/recipes/wip/tv/recipe.toml b/recipes/wip/tv/recipe.toml new file mode 100644 index 00000000..913b0ee9 --- /dev/null +++ b/recipes/wip/tv/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/alexhallam/tv/archive/refs/tags/1.5.2.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/tvix/recipe.toml b/recipes/wip/tvix/recipe.toml new file mode 100644 index 00000000..9f8c2f87 --- /dev/null +++ b/recipes/wip/tvix/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/tvlfyi/tvix" +[build] +template = "cargo" diff --git a/recipes/wip/twolame/recipe.toml b/recipes/wip/twolame/recipe.toml new file mode 100644 index 00000000..74a1e63b --- /dev/null +++ b/recipes/wip/twolame/recipe.toml @@ -0,0 +1,5 @@ +#TODO Compiled but not tested +[source] +tar = "https://downloads.sourceforge.net/twolame/twolame-0.4.0.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/typst/recipe.toml b/recipes/wip/typst/recipe.toml new file mode 100644 index 00000000..839273b4 --- /dev/null +++ b/recipes/wip/typst/recipe.toml @@ -0,0 +1,8 @@ +#TODO require rustc 1.70 or newer +[source] +tar = "https://github.com/typst/typst/archive/refs/tags/v0.7.0.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages typst +""" diff --git a/recipes/wip/uget/recipe.toml b/recipes/wip/uget/recipe.toml new file mode 100644 index 00000000..ec55bee0 --- /dev/null +++ b/recipes/wip/uget/recipe.toml @@ -0,0 +1,9 @@ +#TODO Not compiled or tested +[source] +tar = "https://sourceforge.net/projects/urlget/files/uget%20%28stable%29/2.2.3/uget-2.2.3-1.tar.gz/download" +[build] +template = "configure" +dependencies = [ + "gtk3", + "curl", +] diff --git a/recipes/wip/unbound/recipe.toml b/recipes/wip/unbound/recipe.toml new file mode 100644 index 00000000..6be840fc --- /dev/null +++ b/recipes/wip/unbound/recipe.toml @@ -0,0 +1,9 @@ +#TODO Compilation error +[source] +tar = "https://nlnetlabs.nl/downloads/unbound/unbound-1.17.1.tar.gz" +[build] +template = "configure" +dependencies = [ + "expat", + "openssl1", +] diff --git a/recipes/wip/unvanquished-benchmarks/recipe.toml b/recipes/wip/unvanquished-benchmarks/recipe.toml new file mode 100644 index 00000000..6c50f557 --- /dev/null +++ b/recipes/wip/unvanquished-benchmarks/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for installation, probably data files +[source] +tar = "https://dl.unvanquished.net/benchmark/demos/unvanquished-benchmark_0.54.0.dm_86.xz" +[build] +template = "custom" diff --git a/recipes/wip/unvanquished/recipe.toml b/recipes/wip/unvanquished/recipe.toml new file mode 100644 index 00000000..792ca436 --- /dev/null +++ b/recipes/wip/unvanquished/recipe.toml @@ -0,0 +1,23 @@ +#TODO missing script for CMake, see https://github.com/DaemonEngine/Daemon#build-instructions +# data files - https://github.com/Unvanquished/Unvanquished#downloading-the-games-assets +[source] +git = "https://github.com/DaemonEngine/Daemon" +[build] +template = "custom" +dependencies = [ + "zlib", + "libgmp", + "libnettle", + "curl", + "sdl2", + "glew", + "libpng", + "libjpeg", + "libwebp", + "freetype", + "openal", + "libogg", + "libvorbis", + "opus", + "opusfile", +] diff --git a/recipes/wip/upscaler/recipe.toml b/recipes/wip/upscaler/recipe.toml new file mode 100644 index 00000000..7d805b6d --- /dev/null +++ b/recipes/wip/upscaler/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for Meson, see https://gitlab.gnome.org/World/Upscaler#meson +[source] +tar = "https://gitlab.gnome.org/World/Upscaler/-/archive/1.2.2/Upscaler-1.2.2.tar.gz" +[build] +template = "custom" +dependencies = [ + "gtk4", + "libadwaita", +] diff --git a/recipes/wip/upx/recipe.toml b/recipes/wip/upx/recipe.toml new file mode 100644 index 00000000..7d10a4a9 --- /dev/null +++ b/recipes/wip/upx/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for "make", see https://github.com/upx/upx/blob/devel/README.SRC +[source] +tar = "https://github.com/upx/upx/releases/download/v4.2.1/upx-4.2.1-src.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/usbutils/recipe.toml b/recipes/wip/usbutils/recipe.toml new file mode 100644 index 00000000..4359a058 --- /dev/null +++ b/recipes/wip/usbutils/recipe.toml @@ -0,0 +1,9 @@ +#TODO libusb needs to be patched +#TODO not compiled or tested +[source] +tar = "https://www.kernel.org/pub/linux/utils/usb/usbutils/usbutils-017.tar.xz" +[build] +template = "configure" +dependencies = [ + "libusb", +] diff --git a/recipes/wip/util-linux/recipe.toml b/recipes/wip/util-linux/recipe.toml new file mode 100644 index 00000000..dc185562 --- /dev/null +++ b/recipes/wip/util-linux/recipe.toml @@ -0,0 +1,5 @@ +#TODO probably need a script for custom build options +[source] +tar = "https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.39/util-linux-2.39.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/uvg266/recipe.toml b/recipes/wip/uvg266/recipe.toml new file mode 100644 index 00000000..ca601048 --- /dev/null +++ b/recipes/wip/uvg266/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/ultravideo/uvg266#compiling-uvg266 +[source] +tar = "https://github.com/ultravideo/uvg266/archive/refs/tags/v0.8.0.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/v86/recipe.toml b/recipes/wip/v86/recipe.toml new file mode 100644 index 00000000..ddf32ffb --- /dev/null +++ b/recipes/wip/v86/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for "make", see https://github.com/copy/v86#how-to-build-run-and-embed +[source] +git = "https://github.com/copy/v86" +[build] +template = "custom" diff --git a/recipes/wip/vale-lang/recipe.toml b/recipes/wip/vale-lang/recipe.toml new file mode 100644 index 00000000..02355873 --- /dev/null +++ b/recipes/wip/vale-lang/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/ValeLang/Vale/blob/master/build-compiler.md +[source] +git = "https://github.com/ValeLang/Vale" +[build] +template = "custom" diff --git a/recipes/wip/vamp-plugin-sdk/recipe.toml b/recipes/wip/vamp-plugin-sdk/recipe.toml new file mode 100644 index 00000000..98fdd6c4 --- /dev/null +++ b/recipes/wip/vamp-plugin-sdk/recipe.toml @@ -0,0 +1,8 @@ +#TODO compilation error +[source] +tar = "https://code.soundsoftware.ac.uk/attachments/download/2588/vamp-plugin-sdk-2.9.0.tar.gz" +[build] +template = "configure" +dependencies = [ + "libsndfile", +] diff --git a/recipes/wip/veloren/recipe.toml b/recipes/wip/veloren/recipe.toml new file mode 100644 index 00000000..96807c87 --- /dev/null +++ b/recipes/wip/veloren/recipe.toml @@ -0,0 +1,15 @@ +#TODO Not compiled or tested yet +[source] +git = "https://github.com/veloren/veloren" +[build] +template = "cargo" +dependencies = [ + "glib", + "cairo", + "pango", + "atk", + "gdk-pixbuf", + "gtk3", + "eudev3", + "mesa", +] diff --git a/recipes/wip/vincenzo/recipe.toml b/recipes/wip/vincenzo/recipe.toml new file mode 100644 index 00000000..f629fbb9 --- /dev/null +++ b/recipes/wip/vincenzo/recipe.toml @@ -0,0 +1,5 @@ +#TODO rust-serialize crate error +[source] +git = "https://github.com/gabrieldemian/vincenzo" +[build] +template = "cargo" diff --git a/recipes/wip/vita3k/recipe.toml b/recipes/wip/vita3k/recipe.toml new file mode 100644 index 00000000..3bd64755 --- /dev/null +++ b/recipes/wip/vita3k/recipe.toml @@ -0,0 +1,25 @@ +#TODO probalby wrong script, see https://github.com/Vita3K/Vita3K/blob/master/building.md#linux +[source] +git = "https://github.com/Vita3K/Vita3K" +[build] +template = "custom" +dependencies = [ + "sdl2", + "gtk3", + "openssl1", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/vkpeak/recipe.toml b/recipes/wip/vkpeak/recipe.toml new file mode 100644 index 00000000..c0fc2b9f --- /dev/null +++ b/recipes/wip/vkpeak/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for CMake, see https://github.com/nihui/vkpeak#build-from-source +[source] +git = "https://github.com/nihui/vkpeak" +[build] +template = "custom" +dependencies = [ + "libvulkan", +] diff --git a/recipes/wip/vkquake/recipe.toml b/recipes/wip/vkquake/recipe.toml new file mode 100644 index 00000000..34eb0db6 --- /dev/null +++ b/recipes/wip/vkquake/recipe.toml @@ -0,0 +1,12 @@ +#TODO missing script for Meson, see https://github.com/Novum/vkQuake#linux-1 +[source] +git = "https://github.com/Novum/vkQuake" +[build] +template = "custom" +dependencies = [ + "sdl2", + "libvulkan", + "libvorbis", + "libx11", + "libmad", +] diff --git a/recipes/wip/vkquake2/recipe.toml b/recipes/wip/vkquake2/recipe.toml new file mode 100644 index 00000000..e414f103 --- /dev/null +++ b/recipes/wip/vkquake2/recipe.toml @@ -0,0 +1,10 @@ +#TODO missing script for "make", see https://github.com/kondrak/vkQuake2#linux +[source] +tar = "https://github.com/kondrak/vkQuake2/archive/refs/tags/1.5.9.tar.gz" +[build] +template = "custom" +dependencies = [ + "mesa", + "libx11", + "libxcb", +] diff --git a/recipes/wip/vlc/recipe.toml b/recipes/wip/vlc/recipe.toml new file mode 100644 index 00000000..b1e4c078 --- /dev/null +++ b/recipes/wip/vlc/recipe.toml @@ -0,0 +1,48 @@ +#TODO port Qt4 or wxWidgets +#TODO make dependencies work +# customization - https://wiki.videolan.org/Configure/ +[source] +tar = "https://get.videolan.org/vlc/3.0.20/vlc-3.0.20.tar.xz" +[build] +template = "configure" +dependencies = [ + "libvorbis", + "libogg", + "speex", + "libflac", + "libtheora", + "x264", + "liba52", + "libmpeg2", + "lame", + "ffmpeg6", + "libmad", + "libdca", + "twolame", + "musepack", + "libass", + "libzvbi", + "opus", + "libebml", + "libmatroska", + "libdvbpsi", + "libdvdcss", + "libdvdread", + "libdvdnav", + "libbluray", + "libgpg-error", + "libgcrypt", + "gnutls", + "libxml2", + "libvncserver", + "libpng", + "libjpeg", + "libiconv", + "gettext", + "zlib", + "freetype2", + "fribidi", + "fontconfig", + "taglib", + "wxwidgets-gtk3", +] diff --git a/recipes/wip/volk/recipe.toml b/recipes/wip/volk/recipe.toml new file mode 100644 index 00000000..e244f5fc --- /dev/null +++ b/recipes/wip/volk/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/gnuradio/volk#building-on-most-x86-32-bit-and-64-bit-platforms +[source] +tar = "https://www.libvolk.org/releases/volk-3.0.0.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/vulkan-tools/recipe.toml b/recipes/wip/vulkan-tools/recipe.toml new file mode 100644 index 00000000..0b6fee09 --- /dev/null +++ b/recipes/wip/vulkan-tools/recipe.toml @@ -0,0 +1,25 @@ +#TODO probably wrong script, see https://github.com/KhronosGroup/Vulkan-Tools/blob/main/BUILD.md +[source] +git = "https://github.com/KhronosGroup/Vulkan-Tools/archive/refs/tags/v1.3.270.tar.gz" +[build] +template = "custom" +dependencies = [ + "libwayland", + "libx11", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On + -DUPDATE_DEPS=ON +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/vvenc/recipe.toml b/recipes/wip/vvenc/recipe.toml new file mode 100644 index 00000000..f3a4a679 --- /dev/null +++ b/recipes/wip/vvenc/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/fraunhoferhhi/vvenc/wiki/Build#build-using-plain-cmake +[source] +tar = "https://github.com/fraunhoferhhi/vvenc/archive/refs/tags/v1.9.1.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/warp/recipe.toml b/recipes/wip/warp/recipe.toml new file mode 100644 index 00000000..6301c1c0 --- /dev/null +++ b/recipes/wip/warp/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, see https://gitlab.gnome.org/World/warp#meson +[source] +tar = "https://gitlab.gnome.org/World/warp/-/archive/v0.6.1/warp-v0.6.1.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/warsow/recipe.toml b/recipes/wip/warsow/recipe.toml new file mode 100644 index 00000000..e7a953c1 --- /dev/null +++ b/recipes/wip/warsow/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://warsow.net/warsow_21_sdk.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/watchexec/recipe.toml b/recipes/wip/watchexec/recipe.toml new file mode 100644 index 00000000..27fd3cf5 --- /dev/null +++ b/recipes/wip/watchexec/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/watchexec/watchexec/archive/refs/tags/v1.23.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/wayland-protocols/recipe.toml b/recipes/wip/wayland-protocols/recipe.toml new file mode 100644 index 00000000..5cdbfefc --- /dev/null +++ b/recipes/wip/wayland-protocols/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, lacking build instructions +[source] +tar = "https://gitlab.freedesktop.org/wayland/wayland-protocols/-/releases/1.32/downloads/wayland-protocols-1.32.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/wayland-utils/recipe.toml b/recipes/wip/wayland-utils/recipe.toml new file mode 100644 index 00000000..bcfeb935 --- /dev/null +++ b/recipes/wip/wayland-utils/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, see https://gitlab.freedesktop.org/wayland/wayland-utils#building +[source] +tar = "https://gitlab.freedesktop.org/wayland/wayland-utils/-/releases/1.2.0/downloads/wayland-utils-1.2.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/webkit/recipe.toml b/recipes/wip/webkit/recipe.toml new file mode 100644 index 00000000..a2fad060 --- /dev/null +++ b/recipes/wip/webkit/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error +[source] +tar = "https://webkitgtk.org/releases/webkit-1.9.6.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/webkitgtk/recipe.toml b/recipes/wip/webkitgtk/recipe.toml new file mode 100644 index 00000000..9a5d426a --- /dev/null +++ b/recipes/wip/webkitgtk/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +tar = "https://webkitgtk.org/releases/webkitgtk-2.41.4.tar.xz" +[build] +template = "configure" +dependencies = [ + "gtk3", +] diff --git a/recipes/wip/wezterm/recipe.toml b/recipes/wip/wezterm/recipe.toml new file mode 100644 index 00000000..45dd51fc --- /dev/null +++ b/recipes/wip/wezterm/recipe.toml @@ -0,0 +1,8 @@ +#TODO Require Wayland +[source] +git = "https://github.com/wez/wezterm" +[build] +template = "cargo" +dependencies = [ + "libwayland", +] diff --git a/recipes/wip/wget/recipe.toml b/recipes/wip/wget/recipe.toml new file mode 100644 index 00000000..753b0ee5 --- /dev/null +++ b/recipes/wip/wget/recipe.toml @@ -0,0 +1,8 @@ +#TODO make GnuTLS work +[source] +tar = "https://ftp.gnu.org/gnu/wget/wget-1.21.4.tar.gz" +[build] +template = "configure" +dependencies = [ + "gnutls", +] diff --git a/recipes/wip/wget2/recipe.toml b/recipes/wip/wget2/recipe.toml new file mode 100644 index 00000000..74c362ec --- /dev/null +++ b/recipes/wip/wget2/recipe.toml @@ -0,0 +1,15 @@ +#TODO make dependencies work +[source] +tar = "https://ftp.gnu.org/gnu/wget/wget2-2.0.1.tar.gz" +[build] +template = "configure" +dependencies = [ + "gettext", + "libiconv", + "zlib", + "pcre", + "gnutls", + "bzip2", + "xz", + "zstd", +] diff --git a/recipes/wip/wick/recipe.toml b/recipes/wip/wick/recipe.toml new file mode 100644 index 00000000..19dc7f4f --- /dev/null +++ b/recipes/wip/wick/recipe.toml @@ -0,0 +1,5 @@ +#TODO Missing script for "just", see https://github.com/candlecorp/wick#install-from-source +[source] +tar = "https://github.com/candlecorp/wick/archive/refs/tags/0.16.1.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/wine-stable/recipe.toml b/recipes/wip/wine-stable/recipe.toml new file mode 100644 index 00000000..6b65b951 --- /dev/null +++ b/recipes/wip/wine-stable/recipe.toml @@ -0,0 +1,17 @@ +#TODO make dependencies work +[source] +tar = "https://dl.winehq.org/wine/source/8.0/wine-8.0.1.tar.xz" +[build] +template = "configure" +dependencies = [ + "dbus", + "fontconfig", + "freetype2", + "gnutls", + "libunwind", + "gstreamer", + "sdl2", + "eudev", + "libx11", + "libvulkan", +] diff --git a/recipes/wip/wireguard-rs/recipe.toml b/recipes/wip/wireguard-rs/recipe.toml new file mode 100644 index 00000000..fad7fde1 --- /dev/null +++ b/recipes/wip/wireguard-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://git.zx2c4.com/wireguard-rs" +[build] +template = "cargo" diff --git a/recipes/wip/wireplumber/recipe.toml b/recipes/wip/wireplumber/recipe.toml new file mode 100644 index 00000000..3e4b9ca9 --- /dev/null +++ b/recipes/wip/wireplumber/recipe.toml @@ -0,0 +1,10 @@ +#TODO missing script for Meson, see https://pipewire.pages.freedesktop.org/wireplumber/installing-wireplumber.html +[source] +tar = "https://gitlab.freedesktop.org/pipewire/wireplumber/-/archive/0.4.16/wireplumber-0.4.16.tar.bz2" +[build] +template = "custom" +dependencies = [ + "pipewire", + "glib", + "lua54", +] diff --git a/recipes/wip/wlroots/recipe.toml b/recipes/wip/wlroots/recipe.toml new file mode 100644 index 00000000..e52475e5 --- /dev/null +++ b/recipes/wip/wlroots/recipe.toml @@ -0,0 +1,13 @@ +#TODO missing script for Meson, see https://gitlab.freedesktop.org/wlroots/wlroots#building +[source] +tar = "https://gitlab.freedesktop.org/wlroots/wlroots/-/releases/0.17.0/downloads/wlroots-0.17.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "libwayland", + "libxcb", + "libinput", + "libxkbcommon", + "pixman", + "seatd", +] diff --git a/recipes/wip/wolfssl5/recipe.toml b/recipes/wip/wolfssl5/recipe.toml new file mode 100644 index 00000000..cbde00dc --- /dev/null +++ b/recipes/wip/wolfssl5/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +tar = "https://github.com/wolfSSL/wolfssl/archive/refs/tags/v5.6.4-stable.tar.gz" +[build] +template = "custom" +script = """ +./autogen.sh +cookbook_configure +""" diff --git a/recipes/wip/wpaperd/recipe.toml b/recipes/wip/wpaperd/recipe.toml new file mode 100644 index 00000000..e0e19f29 --- /dev/null +++ b/recipes/wip/wpaperd/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/danyspin97/wpaperd/archive/refs/tags/0.3.0.tar.gz" +[build] +template = "cargo" +dependencies = [ + "libxkbcommon", +] diff --git a/recipes/wip/wxwidgets-gtk3/recipe.toml b/recipes/wip/wxwidgets-gtk3/recipe.toml new file mode 100644 index 00000000..e5f14fb3 --- /dev/null +++ b/recipes/wip/wxwidgets-gtk3/recipe.toml @@ -0,0 +1,14 @@ +#TODO probably wrong script, see https://github.com/wxWidgets/wxWidgets/blob/master/docs/gtk/install.md +[source] +tar = "https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.4/wxWidgets-3.2.4.tar.bz2" +[build] +template = "custom" +dependencies = [ + "gtk3", +] +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --with-gtk +) +cookbook_configure +""" diff --git a/recipes/wip/x264/recipe.toml b/recipes/wip/x264/recipe.toml new file mode 100644 index 00000000..1e98f5e7 --- /dev/null +++ b/recipes/wip/x264/recipe.toml @@ -0,0 +1,5 @@ +#TODO the redox target is not supported on the configure +[source] +tar = "https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2" +[build] +template = "configure" diff --git a/recipes/wip/x265/recipe.toml b/recipes/wip/x265/recipe.toml new file mode 100644 index 00000000..c1bd95b0 --- /dev/null +++ b/recipes/wip/x265/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://bitbucket.org/multicoreware/x265_git/src/master/build/README.txt#lines-68 +[source] +tar = "https://bitbucket.org/multicoreware/x265_git/downloads/x265_3.5.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/xaos/recipe.toml b/recipes/wip/xaos/recipe.toml new file mode 100644 index 00000000..1eb2daca --- /dev/null +++ b/recipes/wip/xaos/recipe.toml @@ -0,0 +1,10 @@ +#TODO missing script for QMake, see https://github.com/xaos-project/XaoS/wiki/Developer's-Guide#build-instructions-for-version-43 +[source] +tar = "https://github.com/xaos-project/XaoS/archive/refs/tags/release-4.3.1.tar.gz" +[build] +template = "custom" +dependencies = [ + "qt6-base", + "qt5-tools", + "mesa", +] diff --git a/recipes/wip/xash3d-fwgs/recipe.toml b/recipes/wip/xash3d-fwgs/recipe.toml new file mode 100644 index 00000000..4764d81e --- /dev/null +++ b/recipes/wip/xash3d-fwgs/recipe.toml @@ -0,0 +1,10 @@ +#TODO missing script for waf, see https://github.com/FWGS/xash3d-fwgs#build-instructions +[source] +git = "https://github.com/FWGS/xash3d-fwgs" +[build] +template = "custom" +dependencies = [ + "sdl2", + "fontconfig", + "freetype2", +] diff --git a/recipes/wip/xcb-util/recipe.toml b/recipes/wip/xcb-util/recipe.toml new file mode 100644 index 00000000..d3859101 --- /dev/null +++ b/recipes/wip/xcb-util/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/lib/xcb-util-0.4.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/xcp/recipe.toml b/recipes/wip/xcp/recipe.toml new file mode 100644 index 00000000..961680a3 --- /dev/null +++ b/recipes/wip/xcp/recipe.toml @@ -0,0 +1,5 @@ +#TODO xattr crate error +[source] +tar = "https://github.com/tarka/xcp/archive/refs/tags/v0.9.4.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/xdg-utils/recipe.toml b/recipes/wip/xdg-utils/recipe.toml new file mode 100644 index 00000000..8841d3aa --- /dev/null +++ b/recipes/wip/xdg-utils/recipe.toml @@ -0,0 +1,5 @@ +#TODO compilation error +[source] +tar = "https://portland.freedesktop.org/download/xdg-utils-1.1.3.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/xdotool/recipe.toml b/recipes/wip/xdotool/recipe.toml new file mode 100644 index 00000000..1e9de48f --- /dev/null +++ b/recipes/wip/xdotool/recipe.toml @@ -0,0 +1,12 @@ +#TODO missing script for "make", see https://github.com/jordansissel/xdotool/#building--compiling +[source] +tar = "https://github.com/jordansissel/xdotool/archive/refs/tags/v3.20211022.1.tar.gz" +[build] +template = "custom" +dependencies = [ + "libx11", + "libxi", + "libxinerama", + "libxkbcommon", + "libxtst", +] diff --git a/recipes/wip/xemu/recipe.toml b/recipes/wip/xemu/recipe.toml new file mode 100644 index 00000000..a27afed6 --- /dev/null +++ b/recipes/wip/xemu/recipe.toml @@ -0,0 +1,16 @@ +#TODO probably wrong template, see https://xemu.app/docs/dev/building-from-source/#linux +#TODO maybe require patches on submodules +[source] +tar = "https://github.com/xemu-project/xemu/releases/download/v0.7.117/src.tar.gz" +[build] +template = "configure" +dependencies = [ + "sdl2", + "libepoxy", + "libsamplerate", + "pixman", + "gtk3", + "openssl1", + "libpcap", + "libslirp", +] diff --git a/recipes/wip/xenia/recipe.toml b/recipes/wip/xenia/recipe.toml new file mode 100644 index 00000000..71f27022 --- /dev/null +++ b/recipes/wip/xenia/recipe.toml @@ -0,0 +1,15 @@ +#TODO missing script for building, see https://github.com/xenia-project/xenia/blob/master/docs/building.md#linux +[source] +tar = "https://github.com/xenia-project/xenia" +[build] +template = "custom" +dependencies = [ + "gtk3", + "sdl2", + "mesa", + "lz4", + "libunwind", + "libpthread-stubs", + "libx11", + "libvulkan", +] diff --git a/recipes/wip/xh/recipe.toml b/recipes/wip/xh/recipe.toml new file mode 100644 index 00000000..1e626c1c --- /dev/null +++ b/recipes/wip/xh/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested (after a patch on the ring crate and cargo update) +[source] +tar = "https://github.com/ducaale/xh/archive/refs/tags/v0.18.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/xiu/recipe.toml b/recipes/wip/xiu/recipe.toml new file mode 100644 index 00000000..9bd18e1f --- /dev/null +++ b/recipes/wip/xiu/recipe.toml @@ -0,0 +1,13 @@ +#TODO OpenSSL error on program source code (after cargo update) +[source] +tar = "https://github.com/harlanc/xiu/archive/refs/tags/v0.6.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +export OPENSSL_DIR="${COOKBOOK_SYSROOT}" +export OPENSSL_STATIC="true" +cookbook_cargo_packages xiu +""" diff --git a/recipes/wip/xmrig/recipe.toml b/recipes/wip/xmrig/recipe.toml new file mode 100644 index 00000000..fdff9dd3 --- /dev/null +++ b/recipes/wip/xmrig/recipe.toml @@ -0,0 +1,26 @@ +#TODO probably wrong script, see https://xmrig.com/docs/miner/build/ubuntu +#TODO customization - https://xmrig.com/docs/miner/cmake-options +[source] +tar = "https://github.com/xmrig/xmrig/archive/refs/tags/v6.20.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "openssl1", + "libuv", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On + -DOPENSSL_ROOT_DIR="${COOKBOOK_SYSROOT}" +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/xonotic/recipe.toml b/recipes/wip/xonotic/recipe.toml new file mode 100644 index 00000000..413b338f --- /dev/null +++ b/recipes/wip/xonotic/recipe.toml @@ -0,0 +1,16 @@ +#TODO missing script for "make", see https://gitlab.com/xonotic/xonotic/-/wikis/Compiling +[source] +tar = "https://gitlab.com/xonotic/xonotic/-/archive/xonotic-v0.8.5/xonotic-xonotic-v0.8.5.tar.gz" +[build] +template = "custom" +dependencies = [ + "libgmp", + "sdl2", + "libjpeg", + "libpng", + "freetype2", + "libogg", + "libvorbis", + "curl", + "rsync", +] diff --git a/recipes/wip/xorriso/recipe.toml b/recipes/wip/xorriso/recipe.toml new file mode 100644 index 00000000..8a484408 --- /dev/null +++ b/recipes/wip/xorriso/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.gnu.org/software/xorriso/xorriso-1.5.6.pl02.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/xwayland/recipe.toml b/recipes/wip/xwayland/recipe.toml new file mode 100644 index 00000000..7fad169d --- /dev/null +++ b/recipes/wip/xwayland/recipe.toml @@ -0,0 +1,10 @@ +#TODO missing script for Meson, see https://wayland.freedesktop.org/xserver.html#heading_toc_j_3 +[source] +tar = "https://www.x.org/releases/individual/xserver/xwayland-23.1.1.tar.xz" +[build] +template = "custom" +dependencies = [ + "libepoxy", + "libxtrans", + "libxkbfile", +] diff --git a/recipes/wip/xxhash/recipe.toml b/recipes/wip/xxhash/recipe.toml new file mode 100644 index 00000000..1d268dbb --- /dev/null +++ b/recipes/wip/xxhash/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for building, lacking build instructions +[source] +tar = "https://github.com/Cyan4973/xxHash/archive/refs/tags/v0.8.1.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/yaydl/recipe.toml b/recipes/wip/yaydl/recipe.toml new file mode 100644 index 00000000..8671c7ac --- /dev/null +++ b/recipes/wip/yaydl/recipe.toml @@ -0,0 +1,8 @@ +#TODO compilation error (after cargo update and a patch on the ring crate) +[source] +git = "https://github.com/dertuxmalwieder/yaydl" +[build] +template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/yazi/recipe.toml b/recipes/wip/yazi/recipe.toml new file mode 100644 index 00000000..917b806e --- /dev/null +++ b/recipes/wip/yazi/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/sxyazi/yazi" +[build] +template = "cargo" diff --git a/recipes/wip/youtube-tui/recipe.toml b/recipes/wip/youtube-tui/recipe.toml new file mode 100644 index 00000000..b6429ead --- /dev/null +++ b/recipes/wip/youtube-tui/recipe.toml @@ -0,0 +1,12 @@ +#TODO compilation error +[source] +tar = "https://github.com/Siriusmart/youtube-tui/archive/refs/tags/v0.8.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "openssl1", + "mpv", +] +script = """ +cookbook_cargo --no-default-features +""" diff --git a/recipes/wip/yquake2/recipe.toml b/recipes/wip/yquake2/recipe.toml new file mode 100644 index 00000000..b907b4ff --- /dev/null +++ b/recipes/wip/yquake2/recipe.toml @@ -0,0 +1,11 @@ +#TODO missing script for "make", see https://github.com/yquake2/yquake2/blob/master/doc/020_installation.md#compiling-with-gcc-clang-or-mingw +[source] +tar = "https://deponie.yamagi.org/quake2/quake2-8.30.tar.xz" +[build] +template = "custom" +dependencies = [ + "mesa", + "openal", + "curl", + "sdl2", +] diff --git a/recipes/wip/yuzu/recipe.toml b/recipes/wip/yuzu/recipe.toml new file mode 100644 index 00000000..7d0f3eb3 --- /dev/null +++ b/recipes/wip/yuzu/recipe.toml @@ -0,0 +1,36 @@ +#TODO probably wrong script, see https://github.com/yuzu-emu/yuzu/wiki/Building-For-Linux +[source] +git = "https://github.com/yuzu-emu/yuzu" +[build] +template = "custom" +dependencies = [ + "ffmpeg6", + "sdl2", + "qt5-base", + "boost", + "libfmt", + "zlib", + "zstd", + "openssl1", + "mesa", + "lz4", + "opus", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On + -DYUZU_USE_BUNDLED_SDL2=OFF + -DYUZU_USE_EXTERNAL_SDL2=OFF + -DYUZU_USE_EXTERNAL_FFMPEG=OFF +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/zellig/recipe.toml b/recipes/wip/zellig/recipe.toml new file mode 100644 index 00000000..47429bad --- /dev/null +++ b/recipes/wip/zellig/recipe.toml @@ -0,0 +1,5 @@ +#TODO os::QueryIter +[source] +tar = "https://github.com/zellij-org/zellij/archive/refs/tags/v0.36.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/zerospades/recipe.toml b/recipes/wip/zerospades/recipe.toml new file mode 100644 index 00000000..92342625 --- /dev/null +++ b/recipes/wip/zerospades/recipe.toml @@ -0,0 +1,34 @@ +#TODO probably wrong script, see https://github.com/yvt/openspades#on-unixes-from-source +# The game crash with the Wayland backend of SDL2, you need to use the "SDL_VIDEODRIVER=x11" environment variable to use XWayland +# a script to workaround this is the best solution +[source] +git = "https://github.com/siecvi/zerospades" +[build] +template = "custom" +dependencies = [ + "glew", + "openssl1", + "sdl2", + "sdl2-image", + "freealut", + "freetype2", + "opus", + "opusfile", + "libjpeg", + "openal", +] +script = """ + COOKBOOK_CONFIGURE="cmake" + COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/zerotier/recipe.toml b/recipes/wip/zerotier/recipe.toml new file mode 100644 index 00000000..48ba3652 --- /dev/null +++ b/recipes/wip/zerotier/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for "make", see https://github.com/zerotier/ZeroTierOne#build-and-platform-notes +[source] +tar = "https://github.com/zerotier/ZeroTierOne/archive/refs/tags/1.12.2.tar.gz" +[build] +template = "custom" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/zet/recipe.toml b/recipes/wip/zet/recipe.toml new file mode 100644 index 00000000..4f9d2714 --- /dev/null +++ b/recipes/wip/zet/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled after cargo update, not tested +[source] +tar = "https://github.com/yarrow/zet/archive/refs/tags/v1.0.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/zig/recipe.toml b/recipes/wip/zig/recipe.toml new file mode 100644 index 00000000..90ceedba --- /dev/null +++ b/recipes/wip/zig/recipe.toml @@ -0,0 +1,20 @@ +#TODO probably wrong script, see https://github.com/ziglang/zig/wiki/Building-Zig-From-Source +[source] +tar = "https://ziglang.org/download/0.10.1/zig-0.10.1.tar.xz" +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/zlib-ng/recipe.toml b/recipes/wip/zlib-ng/recipe.toml new file mode 100644 index 00000000..931dcc25 --- /dev/null +++ b/recipes/wip/zlib-ng/recipe.toml @@ -0,0 +1,14 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/zlib-ng/zlib-ng/archive/refs/tags/2.1.4.tar.gz" +[build] +template = "custom" +script = """ + export LDFLAGS="--static" + # See https://stackoverflow.com/questions/21396988/zlib-build-not-configuring-properly-with-cross-compiler-ignores-ar. + CHOST="${TARGET}" "${COOKBOOK_CONFIGURE}" \ + --prefix="" \ + --static + "${COOKBOOK_MAKE}" -j "$(nproc)" + "${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" +""" diff --git a/recipes/wip/zmusic/recipe.toml b/recipes/wip/zmusic/recipe.toml new file mode 100644 index 00000000..ca37a386 --- /dev/null +++ b/recipes/wip/zmusic/recipe.toml @@ -0,0 +1,20 @@ +#TODO probably wrong script, see https://github.com/ZDoom/ZMusic#readme +[source] +git = "https://github.com/ZDoom/ZMusic" +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/zola/recipe.toml b/recipes/wip/zola/recipe.toml new file mode 100644 index 00000000..dd3d0bcf --- /dev/null +++ b/recipes/wip/zola/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/getzola/zola/archive/refs/tags/v0.17.2.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/zoxide/recipe.toml b/recipes/wip/zoxide/recipe.toml new file mode 100644 index 00000000..aff038c9 --- /dev/null +++ b/recipes/wip/zoxide/recipe.toml @@ -0,0 +1,5 @@ +#TODO compiled but not tested +[source] +tar = "https://github.com/ajeetdsouza/zoxide/archive/refs/tags/v0.9.1.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/zsnes/recipe.toml b/recipes/wip/zsnes/recipe.toml new file mode 100644 index 00000000..28de5275 --- /dev/null +++ b/recipes/wip/zsnes/recipe.toml @@ -0,0 +1,11 @@ +#TODO missing script for "make", see https://github.com/xyproto/zsnes#build +[source] +git = "https://github.com/xyproto/zsnes" +[build] +template = "custom" +dependencies = [ + "sdl1", + "zlib", + "mesa", + "libpng", +] diff --git a/recipes/wip/zstd/recipe.toml b/recipes/wip/zstd/recipe.toml new file mode 100644 index 00000000..25125f6f --- /dev/null +++ b/recipes/wip/zstd/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for building, see https://github.com/facebook/zstd#build-instructions +[source] +tar = "https://github.com/facebook/zstd/releases/download/v1.5.5/zstd-1.5.5.tar.gz" +[build] +template = "custom" From 1c6caf3156ac17f1f68b02f4d00676801ae49e4f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 1 Dec 2023 18:26:01 +0000 Subject: [PATCH 1167/3180] Update recipes --- recipes/wip/cargo-run-bin/recipe.toml | 5 +++++ recipes/wip/converseen/recipe.toml | 8 +++++++ recipes/wip/cpu-x/recipe.toml | 14 ++++++++++++ recipes/wip/hdf5/recipe.toml | 9 ++++++++ recipes/wip/hpcc/recipe.toml | 5 +++++ recipes/wip/libcpuid/recipe.toml | 6 +++++ recipes/wip/libstatgrab/recipe.toml | 5 +++++ recipes/wip/libwebp2/recipe.toml | 5 +++++ recipes/wip/odin2/recipe.toml | 11 +++++++++ recipes/wip/openfoam/recipe.toml | 9 ++++++++ recipes/wip/pciutils/recipe.toml | 8 +++++++ recipes/wip/phoronix-test-suite/recipe.toml | 5 +++++ recipes/wip/php/recipe.toml | 6 +++++ recipes/wip/qmcpack/recipe.toml | 14 ++++++++++++ recipes/wip/scotch/recipe.toml | 6 +++++ recipes/wip/tauro-monitor/recipe.toml | 5 +++++ recipes/wip/tidb-server/recipe.toml | 5 +++++ recipes/wip/toybrot/recipe.toml | 9 ++++++++ recipes/wip/varia/recipe.toml | 6 +++++ recipes/wip/webkitgtk/recipe.toml | 25 +++++++++++++++++---- recipes/wip/webkitgtk3/recipe.toml | 25 +++++++++++++++++++++ 21 files changed, 187 insertions(+), 4 deletions(-) create mode 100644 recipes/wip/cargo-run-bin/recipe.toml create mode 100644 recipes/wip/converseen/recipe.toml create mode 100644 recipes/wip/cpu-x/recipe.toml create mode 100644 recipes/wip/hdf5/recipe.toml create mode 100644 recipes/wip/hpcc/recipe.toml create mode 100644 recipes/wip/libcpuid/recipe.toml create mode 100644 recipes/wip/libstatgrab/recipe.toml create mode 100644 recipes/wip/libwebp2/recipe.toml create mode 100644 recipes/wip/odin2/recipe.toml create mode 100644 recipes/wip/openfoam/recipe.toml create mode 100644 recipes/wip/pciutils/recipe.toml create mode 100644 recipes/wip/phoronix-test-suite/recipe.toml create mode 100644 recipes/wip/php/recipe.toml create mode 100644 recipes/wip/qmcpack/recipe.toml create mode 100644 recipes/wip/scotch/recipe.toml create mode 100644 recipes/wip/tauro-monitor/recipe.toml create mode 100644 recipes/wip/tidb-server/recipe.toml create mode 100644 recipes/wip/toybrot/recipe.toml create mode 100644 recipes/wip/varia/recipe.toml create mode 100644 recipes/wip/webkitgtk3/recipe.toml diff --git a/recipes/wip/cargo-run-bin/recipe.toml b/recipes/wip/cargo-run-bin/recipe.toml new file mode 100644 index 00000000..7625128a --- /dev/null +++ b/recipes/wip/cargo-run-bin/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/dustinblackman/cargo-run-bin" +[build] +template = "cargo" diff --git a/recipes/wip/converseen/recipe.toml b/recipes/wip/converseen/recipe.toml new file mode 100644 index 00000000..40bd9848 --- /dev/null +++ b/recipes/wip/converseen/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for CMake, see https://github.com/Faster3ck/Converseen/blob/main/INSTALL.md#install-converseen-using-qt6 +[source] +tar = "https://github.com/Faster3ck/Converseen/archive/refs/tags/v0.12.0.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "qt6-base", +] diff --git a/recipes/wip/cpu-x/recipe.toml b/recipes/wip/cpu-x/recipe.toml new file mode 100644 index 00000000..39f12814 --- /dev/null +++ b/recipes/wip/cpu-x/recipe.toml @@ -0,0 +1,14 @@ +#TODO missing script for CMake, see https://github.com/TheTumultuousUnicornOfDarkness/CPU-X/wiki/manual-build#build-and-install-cpu-x +[source] +tar = "https://github.com/TheTumultuousUnicornOfDarkness/CPU-X/archive/refs/tags/v5.0.2.tar.gz" +[build] +template = "custom" +dependencies = [ + "gtk3mm", + "ncurses", + "glfw", + "libvulkan", + "libstatgrab", + "libcpuid", + "pciutils", +] diff --git a/recipes/wip/hdf5/recipe.toml b/recipes/wip/hdf5/recipe.toml new file mode 100644 index 00000000..c90f9ac7 --- /dev/null +++ b/recipes/wip/hdf5/recipe.toml @@ -0,0 +1,9 @@ +#TODO in case of errors, see https://github.com/HDFGroup/hdf5/blob/develop/release_docs/INSTALL +[source] +tar = "https://github.com/HDFGroup/hdf5/releases/download/hdf5-1_14_3/hdf5-1_14_3.tar.gz" +[build] +template = "configure" +dependencies = [ + "zlib", + "openmpi", +] diff --git a/recipes/wip/hpcc/recipe.toml b/recipes/wip/hpcc/recipe.toml new file mode 100644 index 00000000..6cc31de2 --- /dev/null +++ b/recipes/wip/hpcc/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for building, check the tarball +[source] +tar = "https://hpcchallenge.org/projectsfiles/hpcc/download/hpcc-1.5.0.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/libcpuid/recipe.toml b/recipes/wip/libcpuid/recipe.toml new file mode 100644 index 00000000..f74374a1 --- /dev/null +++ b/recipes/wip/libcpuid/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +# require a POSIX-compatible shell, see https://github.com/anrieff/libcpuid#prerequisites +[source] +tar = "https://github.com/anrieff/libcpuid/releases/download/v0.6.4/libcpuid-0.6.4.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libstatgrab/recipe.toml b/recipes/wip/libstatgrab/recipe.toml new file mode 100644 index 00000000..6213aab1 --- /dev/null +++ b/recipes/wip/libstatgrab/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/libstatgrab/libstatgrab/releases/download/LIBSTATGRAB_0_92_1/libstatgrab-0.92.1.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libwebp2/recipe.toml b/recipes/wip/libwebp2/recipe.toml new file mode 100644 index 00000000..6742fbb9 --- /dev/null +++ b/recipes/wip/libwebp2/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://chromium.googlesource.com/codecs/libwebp2/#compiling +[source] +git = "https://chromium.googlesource.com/codecs/libwebp2" +[build] +template = "custom" diff --git a/recipes/wip/odin2/recipe.toml b/recipes/wip/odin2/recipe.toml new file mode 100644 index 00000000..d66d5669 --- /dev/null +++ b/recipes/wip/odin2/recipe.toml @@ -0,0 +1,11 @@ +#TODO missing script for CMake, see https://github.com/TheWaveWarden/odin2#all-platforms +[source] +git = "https://github.com/TheWaveWarden/odin2" +[build] +template = "custom" +dependencies = [ + "mesa", + "curl", + "libx11", + "webkitgtk3", +] diff --git a/recipes/wip/openfoam/recipe.toml b/recipes/wip/openfoam/recipe.toml new file mode 100644 index 00000000..cf6e21fc --- /dev/null +++ b/recipes/wip/openfoam/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for building, see https://openfoam.org/download/11-source/ +[source] +tar = "http://dl.openfoam.org/source/11" +[build] +template = "custom" +dependencies = [ + "paraview", + "scotch", +] diff --git a/recipes/wip/pciutils/recipe.toml b/recipes/wip/pciutils/recipe.toml new file mode 100644 index 00000000..70710ff5 --- /dev/null +++ b/recipes/wip/pciutils/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for "make", see https://git.kernel.org/pub/scm/utils/pciutils/pciutils.git/tree/README#n52 +[source] +tar = "https://mirrors.edge.kernel.org/pub/software/utils/pciutils/pciutils-3.9.0.tar.xz" +[build] +template = "custom" +dependencies = [ + "zlib", +] diff --git a/recipes/wip/phoronix-test-suite/recipe.toml b/recipes/wip/phoronix-test-suite/recipe.toml new file mode 100644 index 00000000..19495073 --- /dev/null +++ b/recipes/wip/phoronix-test-suite/recipe.toml @@ -0,0 +1,5 @@ +#TODO figure out the installation script - https://github.com/phoronix-test-suite/phoronix-test-suite +[source] +tar = "https://phoronix-test-suite.com/releases/phoronix-test-suite-10.8.4.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/php/recipe.toml b/recipes/wip/php/recipe.toml new file mode 100644 index 00000000..7499fe52 --- /dev/null +++ b/recipes/wip/php/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +# in case of problems, read https://www.php.net/manual/en/install.unix.php +[source] +tar = "https://www.php.net/distributions/php-8.3.0.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qmcpack/recipe.toml b/recipes/wip/qmcpack/recipe.toml new file mode 100644 index 00000000..a48f22ce --- /dev/null +++ b/recipes/wip/qmcpack/recipe.toml @@ -0,0 +1,14 @@ +#TODO missing script for CMake, see https://qmcpack.readthedocs.io/en/develop/installation.html#building-with-cmake +#TODO probably missing dependencies +[source] +tar = "https://github.com/QMCPACK/qmcpack/archive/refs/tags/v3.17.1.tar.gz" +[build] +template = "custom" +dependencies = [ + "openmpi", + "openblas", + "hdf5", + "libxml2", + "boost", + "fftw", +] diff --git a/recipes/wip/scotch/recipe.toml b/recipes/wip/scotch/recipe.toml new file mode 100644 index 00000000..277d77d4 --- /dev/null +++ b/recipes/wip/scotch/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for CMake, see https://gitlab.inria.fr/scotch/scotch#installation +#TODO probably missing dependencies +[source] +tar = "https://gitlab.inria.fr/scotch/scotch/-/archive/v7.0.4/scotch-v7.0.4.tar.bz2" +[build] +template = "custom" diff --git a/recipes/wip/tauro-monitor/recipe.toml b/recipes/wip/tauro-monitor/recipe.toml new file mode 100644 index 00000000..7d8d7d7c --- /dev/null +++ b/recipes/wip/tauro-monitor/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, lacking installation instructions +[source] +tar = "https://github.com/taunoe/tauno-monitor/archive/refs/tags/v0.1.5.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/tidb-server/recipe.toml b/recipes/wip/tidb-server/recipe.toml new file mode 100644 index 00000000..8ddeb1a2 --- /dev/null +++ b/recipes/wip/tidb-server/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for "make", see https://pingcap.github.io/tidb-dev-guide/get-started/build-tidb-from-source.html#build +[source] +tar = "https://github.com/pingcap/tidb/archive/refs/tags/v7.5.0.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/toybrot/recipe.toml b/recipes/wip/toybrot/recipe.toml new file mode 100644 index 00000000..fdb5525e --- /dev/null +++ b/recipes/wip/toybrot/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for CMake, see https://gitlab.com/VileLasagna/toyBrot#building-toybrot +[source] +git = "https://gitlab.com/VileLasagna/toyBrot" +[build] +template = "custom" +dependencies = [ + "sdl2", + "libpng", +] diff --git a/recipes/wip/varia/recipe.toml b/recipes/wip/varia/recipe.toml new file mode 100644 index 00000000..4313ea73 --- /dev/null +++ b/recipes/wip/varia/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for Meson, see https://github.com/giantpinkrobots/varia#building +#TODO probably missing dependencies +[source] +git = "https://github.com/giantpinkrobots/varia" +[build] +template = "custom" diff --git a/recipes/wip/webkitgtk/recipe.toml b/recipes/wip/webkitgtk/recipe.toml index 9a5d426a..80442ab8 100644 --- a/recipes/wip/webkitgtk/recipe.toml +++ b/recipes/wip/webkitgtk/recipe.toml @@ -1,8 +1,25 @@ -#TODO not compiled or tested +#TODO missing script for CMake and Ninja, see https://trac.webkit.org/wiki/BuildingGtk#BuildingWebKitGTKfromareleasetarball +#TODO missing dependencies, see https://archlinux.org/packages/extra/x86_64/webkitgtk-6.0/ [source] -tar = "https://webkitgtk.org/releases/webkitgtk-2.41.4.tar.xz" +tar = "https://webkitgtk.org/releases/webkitgtk-2.42.2.tar.xz" [build] -template = "configure" +template = "custom" dependencies = [ - "gtk3", + "gtk4", + "cairo", + "fontconfig", + "freetype2", + "glib", + "gstreamer", + "harfbuzz", + "libavif", + "mesa", + "libepoxy", + "libgcrypt", + "libpng", + "libwebp", + "libxml2", + "libwayland", + "zlib", + "sqlite3", ] diff --git a/recipes/wip/webkitgtk3/recipe.toml b/recipes/wip/webkitgtk3/recipe.toml new file mode 100644 index 00000000..9dfcae28 --- /dev/null +++ b/recipes/wip/webkitgtk3/recipe.toml @@ -0,0 +1,25 @@ +#TODO missing script for CMake and Ninja, see https://trac.webkit.org/wiki/BuildingGtk#BuildingWebKitGTKfromareleasetarball +#TODO missing dependencies, see https://archlinux.org/packages/extra/x86_64/webkitgtk-6.0/ +[source] +tar = "https://webkitgtk.org/releases/webkitgtk-2.42.2.tar.xz" +[build] +template = "custom" +dependencies = [ + "gtk3", + "cairo", + "fontconfig", + "freetype2", + "glib", + "gstreamer", + "harfbuzz", + "libavif", + "mesa", + "libepoxy", + "libgcrypt", + "libpng", + "libwebp", + "libxml2", + "libwayland", + "zlib", + "sqlite3", +] From c12edda38f40312667320a56435eec5e4cc52c0b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 1 Dec 2023 22:19:50 +0000 Subject: [PATCH 1168/3180] Add recipes --- recipes/wip/boytacean/recipe.toml | 8 ++++++++ recipes/wip/finalburn-neo/recipe.toml | 9 +++++++++ recipes/wip/gameboy-emu/recipe.toml | 9 +++++++++ recipes/wip/gtkglext/recipe.toml | 5 +++++ recipes/wip/mame/recipe.toml | 12 ++++++++++++ recipes/wip/melonds/recipe.toml | 15 +++++++++++++++ recipes/wip/mimic/recipe.toml | 5 +++++ recipes/wip/mooneye-gb/recipe.toml | 8 ++++++++ recipes/wip/mupen64plus-audio-sdl/recipe.toml | 5 +++++ recipes/wip/mupen64plus-core/recipe.toml | 11 +++++++++++ recipes/wip/mupen64plus-input-sdl/recipe.toml | 5 +++++ recipes/wip/mupen64plus-ui-console/recipe.toml | 12 ++++++++++++ recipes/wip/mupen64plus-video-glide64/recipe.toml | 5 +++++ recipes/wip/mupen64plus-video-rice/recipe.toml | 5 +++++ recipes/wip/nestur/recipe.toml | 5 +++++ recipes/wip/obliteration/recipe.toml | 9 +++++++++ recipes/wip/opengmk/recipe.toml | 5 +++++ recipes/wip/pcsx-rearmed/recipe.toml | 5 +++++ recipes/wip/picodrive/recipe.toml | 5 +++++ recipes/wip/potatis/recipe.toml | 8 ++++++++ recipes/wip/ship-of-harkinian/recipe.toml | 12 ++++++++++++ recipes/wip/uoyabause/recipe.toml | 11 +++++++++++ recipes/wip/{webkitgtk => webkitgtk4}/recipe.toml | 0 23 files changed, 174 insertions(+) create mode 100644 recipes/wip/boytacean/recipe.toml create mode 100644 recipes/wip/finalburn-neo/recipe.toml create mode 100644 recipes/wip/gameboy-emu/recipe.toml create mode 100644 recipes/wip/gtkglext/recipe.toml create mode 100644 recipes/wip/mame/recipe.toml create mode 100644 recipes/wip/melonds/recipe.toml create mode 100644 recipes/wip/mimic/recipe.toml create mode 100644 recipes/wip/mooneye-gb/recipe.toml create mode 100644 recipes/wip/mupen64plus-audio-sdl/recipe.toml create mode 100644 recipes/wip/mupen64plus-core/recipe.toml create mode 100644 recipes/wip/mupen64plus-input-sdl/recipe.toml create mode 100644 recipes/wip/mupen64plus-ui-console/recipe.toml create mode 100644 recipes/wip/mupen64plus-video-glide64/recipe.toml create mode 100644 recipes/wip/mupen64plus-video-rice/recipe.toml create mode 100644 recipes/wip/nestur/recipe.toml create mode 100644 recipes/wip/obliteration/recipe.toml create mode 100644 recipes/wip/opengmk/recipe.toml create mode 100644 recipes/wip/pcsx-rearmed/recipe.toml create mode 100644 recipes/wip/picodrive/recipe.toml create mode 100644 recipes/wip/potatis/recipe.toml create mode 100644 recipes/wip/ship-of-harkinian/recipe.toml create mode 100644 recipes/wip/uoyabause/recipe.toml rename recipes/wip/{webkitgtk => webkitgtk4}/recipe.toml (100%) diff --git a/recipes/wip/boytacean/recipe.toml b/recipes/wip/boytacean/recipe.toml new file mode 100644 index 00000000..bcd4f873 --- /dev/null +++ b/recipes/wip/boytacean/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/joamag/boytacean/archive/refs/tags/0.9.16.tar.gz" +[build] +template = "cargo" +dependencies = [ + "sdl2", +] diff --git a/recipes/wip/finalburn-neo/recipe.toml b/recipes/wip/finalburn-neo/recipe.toml new file mode 100644 index 00000000..76544a9d --- /dev/null +++ b/recipes/wip/finalburn-neo/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for "make", see https://github.com/finalburnneo/FBNeo/blob/master/README-SDL.md#sdl2 +[source] +git = "https://github.com/finalburnneo/FBNeo" +[build] +template = "custom" +dependencies = [ + "sdl2", + "sdl2-image", +] diff --git a/recipes/wip/gameboy-emu/recipe.toml b/recipes/wip/gameboy-emu/recipe.toml new file mode 100644 index 00000000..b0445ae5 --- /dev/null +++ b/recipes/wip/gameboy-emu/recipe.toml @@ -0,0 +1,9 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/mohanson/gameboy" +[build] +template = "cargo" +dependencies = [ + "libwayland", + "libxkbcommon", +] diff --git a/recipes/wip/gtkglext/recipe.toml b/recipes/wip/gtkglext/recipe.toml new file mode 100644 index 00000000..a23c52c3 --- /dev/null +++ b/recipes/wip/gtkglext/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.gnome.org/sources/gtkglext/1.2/gtkglext-1.2.0.tar.bz2" +[build] +template = "configure" diff --git a/recipes/wip/mame/recipe.toml b/recipes/wip/mame/recipe.toml new file mode 100644 index 00000000..13e404f1 --- /dev/null +++ b/recipes/wip/mame/recipe.toml @@ -0,0 +1,12 @@ +#TODO missing script for "make", see https://docs.mamedev.org/initialsetup/compilingmame.html +[source] +tar = "https://github.com/mamedev/mame/archive/refs/tags/mame0261.tar.gz" +[build] +template = "custom" +dependencies = [ + "sdl2", + "sdl2-ttf", + "fontconfig", + "qt5-base", + "qt5-tools", +] diff --git a/recipes/wip/melonds/recipe.toml b/recipes/wip/melonds/recipe.toml new file mode 100644 index 00000000..ec70edb7 --- /dev/null +++ b/recipes/wip/melonds/recipe.toml @@ -0,0 +1,15 @@ +#TODO missing script for CMake, see https://github.com/melonDS-emu/melonDS#linux +[source] +tar = "https://github.com/melonDS-emu/melonDS/archive/refs/tags/0.9.5.tar.gz" +[build] +template = "custom" +dependencies = [ + "curl", + "libpcap", + "sdl2", + "qt5-base", + "qt5-multimedia", + "libslirp", + "libarchive", + "zstd", +] diff --git a/recipes/wip/mimic/recipe.toml b/recipes/wip/mimic/recipe.toml new file mode 100644 index 00000000..1a0bcf76 --- /dev/null +++ b/recipes/wip/mimic/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/jawline/Mimic" +[build] +template = "cargo" diff --git a/recipes/wip/mooneye-gb/recipe.toml b/recipes/wip/mooneye-gb/recipe.toml new file mode 100644 index 00000000..87cc4433 --- /dev/null +++ b/recipes/wip/mooneye-gb/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Gekkio/mooneye-gb" +[build] +template = "cargo" +dependencies = [ + "sdl2", +] diff --git a/recipes/wip/mupen64plus-audio-sdl/recipe.toml b/recipes/wip/mupen64plus-audio-sdl/recipe.toml new file mode 100644 index 00000000..5dfe956b --- /dev/null +++ b/recipes/wip/mupen64plus-audio-sdl/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/mupen64plus/mupen64plus-audio-sdl" +[build] +template = "custom" diff --git a/recipes/wip/mupen64plus-core/recipe.toml b/recipes/wip/mupen64plus-core/recipe.toml new file mode 100644 index 00000000..e03ca3a3 --- /dev/null +++ b/recipes/wip/mupen64plus-core/recipe.toml @@ -0,0 +1,11 @@ +#TODO missing script for "make", see https://github.com/mupen64plus/mupen64plus-core#2-building-from-source +[source] +git = "https://github.com/mupen64plus/mupen64plus-core" +[build] +template = "custom" +dependencies = [ + "sdl2", + "libpng", + "freetype2", + "zlib", +] diff --git a/recipes/wip/mupen64plus-input-sdl/recipe.toml b/recipes/wip/mupen64plus-input-sdl/recipe.toml new file mode 100644 index 00000000..8b83293a --- /dev/null +++ b/recipes/wip/mupen64plus-input-sdl/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for "make", see https://github.com/mupen64plus/mupen64plus-input-sdl/blob/master/INSTALL#L11 +[source] +git = "https://github.com/mupen64plus/mupen64plus-input-sdl" +[build] +template = "custom" diff --git a/recipes/wip/mupen64plus-ui-console/recipe.toml b/recipes/wip/mupen64plus-ui-console/recipe.toml new file mode 100644 index 00000000..634f751d --- /dev/null +++ b/recipes/wip/mupen64plus-ui-console/recipe.toml @@ -0,0 +1,12 @@ +#TODO missing script for "make", see https://github.com/mupen64plus/mupen64plus-ui-console/blob/master/INSTALL#L11 +[source] +git = "https://github.com/mupen64plus/mupen64plus-ui-console" +[build] +template = "custom" +dependencies = [ + "mupen64plus-core", + "mupen64plus-audio-sdl", + "mupen64plus-input-sdl", + "mupen64plus-video-rice", + "mupen64plus-video-glide64", +] diff --git a/recipes/wip/mupen64plus-video-glide64/recipe.toml b/recipes/wip/mupen64plus-video-glide64/recipe.toml new file mode 100644 index 00000000..67b7c6a9 --- /dev/null +++ b/recipes/wip/mupen64plus-video-glide64/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for "make", see https://github.com/mupen64plus/mupen64plus-video-glide64/blob/master/src/INSTALL +[source] +git = "https://github.com/mupen64plus/mupen64plus-video-glide64" +[build] +template = "custom" diff --git a/recipes/wip/mupen64plus-video-rice/recipe.toml b/recipes/wip/mupen64plus-video-rice/recipe.toml new file mode 100644 index 00000000..84455bfd --- /dev/null +++ b/recipes/wip/mupen64plus-video-rice/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for "make", see https://github.com/mupen64plus/mupen64plus-video-rice/blob/master/INSTALL#L11 +[source] +tar = "https://github.com/mupen64plus/mupen64plus-video-rice" +[build] +template = "custom" diff --git a/recipes/wip/nestur/recipe.toml b/recipes/wip/nestur/recipe.toml new file mode 100644 index 00000000..da00c43b --- /dev/null +++ b/recipes/wip/nestur/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/spieglt/nestur" +[build] +template = "cargo" diff --git a/recipes/wip/obliteration/recipe.toml b/recipes/wip/obliteration/recipe.toml new file mode 100644 index 00000000..80b6628f --- /dev/null +++ b/recipes/wip/obliteration/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for CMake, see https://github.com/obhq/obliteration#configure-build-system +#TODO probably missing dependencies +[source] +git = "https://github.com/obhq/obliteration" +[build] +template = "custom" +dependencies = [ + "qt6-base", +] diff --git a/recipes/wip/opengmk/recipe.toml b/recipes/wip/opengmk/recipe.toml new file mode 100644 index 00000000..389c705f --- /dev/null +++ b/recipes/wip/opengmk/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/OpenGMK/OpenGMK" +[build] +template = "cargo" diff --git a/recipes/wip/pcsx-rearmed/recipe.toml b/recipes/wip/pcsx-rearmed/recipe.toml new file mode 100644 index 00000000..21d232fb --- /dev/null +++ b/recipes/wip/pcsx-rearmed/recipe.toml @@ -0,0 +1,5 @@ +#TODO discover the dependencies, probably the same of PCSX +[source] +git = "https://github.com/notaz/pcsx_rearmed" +[build] +template = "configure" diff --git a/recipes/wip/picodrive/recipe.toml b/recipes/wip/picodrive/recipe.toml new file mode 100644 index 00000000..abd80dbb --- /dev/null +++ b/recipes/wip/picodrive/recipe.toml @@ -0,0 +1,5 @@ +#TODO discover the dependencies +[source] +git = "https://github.com/notaz/picodrive" +[build] +template = "configure" diff --git a/recipes/wip/potatis/recipe.toml b/recipes/wip/potatis/recipe.toml new file mode 100644 index 00000000..f77eb715 --- /dev/null +++ b/recipes/wip/potatis/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/henrikpersson/potatis" +[build] +template = "custom" +script = """ +cookbook_cargo_packages nes-sdl +""" diff --git a/recipes/wip/ship-of-harkinian/recipe.toml b/recipes/wip/ship-of-harkinian/recipe.toml new file mode 100644 index 00000000..4b28cc42 --- /dev/null +++ b/recipes/wip/ship-of-harkinian/recipe.toml @@ -0,0 +1,12 @@ +#TODO missing script for CMake, see https://github.com/HarbourMasters/Shipwright/blob/develop/docs/BUILDING.md#linux +[source] +git = "https://github.com/HarbourMasters/Shipwright" +rev = "818addfdda660f6b4b54edd19636d6fd9d839f28" +[build] +template = "custom" +dependencies = [ + "libx11", + "sdl2", + "libpng", + "glew", +] diff --git a/recipes/wip/uoyabause/recipe.toml b/recipes/wip/uoyabause/recipe.toml new file mode 100644 index 00000000..9d121e25 --- /dev/null +++ b/recipes/wip/uoyabause/recipe.toml @@ -0,0 +1,11 @@ +#TODO missing script for CMake, see https://github.com/devmiyax/yabause/blob/master/yabause/README.LIN#L77 +[source] +git = "https://github.com/devmiyax/yabause" +[build] +template = "custom" +dependencies = [ + "gtk2", + "sdl2", + "mesa", + "gtkglext", +] diff --git a/recipes/wip/webkitgtk/recipe.toml b/recipes/wip/webkitgtk4/recipe.toml similarity index 100% rename from recipes/wip/webkitgtk/recipe.toml rename to recipes/wip/webkitgtk4/recipe.toml From 0f00b91f4dba905e194659815e1242b218f49959 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 2 Dec 2023 01:55:50 +0000 Subject: [PATCH 1169/3180] Add a recipe --- recipes/wip/rusticnes-sdl/recipe.toml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 recipes/wip/rusticnes-sdl/recipe.toml diff --git a/recipes/wip/rusticnes-sdl/recipe.toml b/recipes/wip/rusticnes-sdl/recipe.toml new file mode 100644 index 00000000..8a1c24e2 --- /dev/null +++ b/recipes/wip/rusticnes-sdl/recipe.toml @@ -0,0 +1,9 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/zeta0134/rusticnes-sdl" +[build] +template = "cargo" +dependencies = [ + "sdl2", + "gtk3", +] From 440735984470f2ecaec96e7f104bb1e1d89ddb07 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 3 Dec 2023 21:58:17 +0000 Subject: [PATCH 1170/3180] Add recipes --- recipes/wip/debugedit/recipe.toml | 8 ++++++++ recipes/wip/doxygen/recipe.toml | 5 +++++ recipes/wip/elfutils/recipe.toml | 5 +++++ recipes/wip/ghostpdl/recipe.toml | 5 +++++ recipes/wip/ghostscript/recipe.toml | 5 +++++ recipes/wip/groff/recipe.toml | 5 +++++ recipes/wip/libqalculate/recipe.toml | 12 ++++++++++++ recipes/wip/qalculate-gtk/recipe.toml | 9 +++++++++ recipes/wip/steel/recipe.toml | 5 +++++ 9 files changed, 59 insertions(+) create mode 100644 recipes/wip/debugedit/recipe.toml create mode 100644 recipes/wip/doxygen/recipe.toml create mode 100644 recipes/wip/elfutils/recipe.toml create mode 100644 recipes/wip/ghostpdl/recipe.toml create mode 100644 recipes/wip/ghostscript/recipe.toml create mode 100644 recipes/wip/groff/recipe.toml create mode 100644 recipes/wip/libqalculate/recipe.toml create mode 100644 recipes/wip/qalculate-gtk/recipe.toml create mode 100644 recipes/wip/steel/recipe.toml diff --git a/recipes/wip/debugedit/recipe.toml b/recipes/wip/debugedit/recipe.toml new file mode 100644 index 00000000..16ef19f0 --- /dev/null +++ b/recipes/wip/debugedit/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +tar = "https://sourceware.org/ftp/debugedit/5.0/debugedit-5.0.tar.xz" +[build] +template = "configure" +dependencies = [ + "elfutils", +] diff --git a/recipes/wip/doxygen/recipe.toml b/recipes/wip/doxygen/recipe.toml new file mode 100644 index 00000000..8ca03722 --- /dev/null +++ b/recipes/wip/doxygen/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://www.doxygen.nl/manual/install.html#install_src_unix +[source] +tar = "https://www.doxygen.nl/files/doxygen-1.9.8.src.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/elfutils/recipe.toml b/recipes/wip/elfutils/recipe.toml new file mode 100644 index 00000000..9fa38f4c --- /dev/null +++ b/recipes/wip/elfutils/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://sourceware.org/elfutils/ftp/0.190/elfutils-0.190.tar.bz2" +[build] +template = "configure" diff --git a/recipes/wip/ghostpdl/recipe.toml b/recipes/wip/ghostpdl/recipe.toml new file mode 100644 index 00000000..0fdcb345 --- /dev/null +++ b/recipes/wip/ghostpdl/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10021/ghostpdl-10.02.1.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/ghostscript/recipe.toml b/recipes/wip/ghostscript/recipe.toml new file mode 100644 index 00000000..3e754ba9 --- /dev/null +++ b/recipes/wip/ghostscript/recipe.toml @@ -0,0 +1,5 @@ +#TODO customization - https://ghostscript.readthedocs.io/en/latest/Make.html +[source] +tar = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10021/ghostscript-10.02.1.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/groff/recipe.toml b/recipes/wip/groff/recipe.toml new file mode 100644 index 00000000..fea305df --- /dev/null +++ b/recipes/wip/groff/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://ftp.gnu.org/gnu/groff/groff-1.23.0.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libqalculate/recipe.toml b/recipes/wip/libqalculate/recipe.toml new file mode 100644 index 00000000..7ad5b94b --- /dev/null +++ b/recipes/wip/libqalculate/recipe.toml @@ -0,0 +1,12 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/Qalculate/libqalculate/releases/download/v4.9.0/libqalculate-4.9.0.tar.gz" +[build] +template = "configure" +dependencies = [ + "libgmp", + "libmpfr", + "libxml2", + "readline", + "libiconv", +] diff --git a/recipes/wip/qalculate-gtk/recipe.toml b/recipes/wip/qalculate-gtk/recipe.toml new file mode 100644 index 00000000..68a89d36 --- /dev/null +++ b/recipes/wip/qalculate-gtk/recipe.toml @@ -0,0 +1,9 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/Qalculate/qalculate-gtk/releases/download/v4.9.0/qalculate-gtk-4.9.0.tar.gz" +[build] +template = "configure" +dependencies = [ + "gtk3", + "libqalculate", +] diff --git a/recipes/wip/steel/recipe.toml b/recipes/wip/steel/recipe.toml new file mode 100644 index 00000000..9bc2c28e --- /dev/null +++ b/recipes/wip/steel/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/mattwparas/steel" +[build] +template = "cargo" From 46e41aa3b303187d324d7634e710ffb4ae382c3c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 4 Dec 2023 01:09:37 +0000 Subject: [PATCH 1171/3180] Add recipes --- recipes/wip/breeze-icons/recipe.toml | 5 +++ recipes/wip/kdenlive/recipe.toml | 38 ++++++++++++++++++++++ recipes/wip/kf5-archive/recipe.toml | 5 +++ recipes/wip/kf5-bookmarks/recipe.toml | 5 +++ recipes/wip/kf5-codecs/recipe.toml | 5 +++ recipes/wip/kf5-config/recipe.toml | 5 +++ recipes/wip/kf5-configwidgets/recipe.toml | 5 +++ recipes/wip/kf5-coreaddons/recipe.toml | 5 +++ recipes/wip/kf5-crash/recipe.toml | 5 +++ recipes/wip/kf5-dbusaddons/recipe.toml | 5 +++ recipes/wip/kf5-declarative/recipe.toml | 5 +++ recipes/wip/kf5-filemetadata/recipe.toml | 5 +++ recipes/wip/kf5-guiaddons/recipe.toml | 5 +++ recipes/wip/kf5-iconthemes/recipe.toml | 5 +++ recipes/wip/kf5-init/recipe.toml | 5 +++ recipes/wip/kf5-io/recipe.toml | 5 +++ recipes/wip/kf5-newstuff/recipe.toml | 5 +++ recipes/wip/kf5-notifications/recipe.toml | 5 +++ recipes/wip/kf5-notifyconfig/recipe.toml | 5 +++ recipes/wip/kf5-purpose/recipe.toml | 5 +++ recipes/wip/kf5-textwidgets/recipe.toml | 5 +++ recipes/wip/kf5-widgetaddons/recipe.toml | 5 +++ recipes/wip/kf5-xmlgui/recipe.toml | 5 +++ recipes/wip/mlt/recipe.toml | 5 +++ recipes/wip/qt5-networkauth/recipe.toml | 5 +++ recipes/wip/qt5-quickcontrols/recipe.toml | 5 +++ recipes/wip/qt5-quickcontrols2/recipe.toml | 5 +++ 27 files changed, 168 insertions(+) create mode 100644 recipes/wip/breeze-icons/recipe.toml create mode 100644 recipes/wip/kdenlive/recipe.toml create mode 100644 recipes/wip/kf5-archive/recipe.toml create mode 100644 recipes/wip/kf5-bookmarks/recipe.toml create mode 100644 recipes/wip/kf5-codecs/recipe.toml create mode 100644 recipes/wip/kf5-config/recipe.toml create mode 100644 recipes/wip/kf5-configwidgets/recipe.toml create mode 100644 recipes/wip/kf5-coreaddons/recipe.toml create mode 100644 recipes/wip/kf5-crash/recipe.toml create mode 100644 recipes/wip/kf5-dbusaddons/recipe.toml create mode 100644 recipes/wip/kf5-declarative/recipe.toml create mode 100644 recipes/wip/kf5-filemetadata/recipe.toml create mode 100644 recipes/wip/kf5-guiaddons/recipe.toml create mode 100644 recipes/wip/kf5-iconthemes/recipe.toml create mode 100644 recipes/wip/kf5-init/recipe.toml create mode 100644 recipes/wip/kf5-io/recipe.toml create mode 100644 recipes/wip/kf5-newstuff/recipe.toml create mode 100644 recipes/wip/kf5-notifications/recipe.toml create mode 100644 recipes/wip/kf5-notifyconfig/recipe.toml create mode 100644 recipes/wip/kf5-purpose/recipe.toml create mode 100644 recipes/wip/kf5-textwidgets/recipe.toml create mode 100644 recipes/wip/kf5-widgetaddons/recipe.toml create mode 100644 recipes/wip/kf5-xmlgui/recipe.toml create mode 100644 recipes/wip/mlt/recipe.toml create mode 100644 recipes/wip/qt5-networkauth/recipe.toml create mode 100644 recipes/wip/qt5-quickcontrols/recipe.toml create mode 100644 recipes/wip/qt5-quickcontrols2/recipe.toml diff --git a/recipes/wip/breeze-icons/recipe.toml b/recipes/wip/breeze-icons/recipe.toml new file mode 100644 index 00000000..d1b0d9ab --- /dev/null +++ b/recipes/wip/breeze-icons/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/breeze-icons-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kdenlive/recipe.toml b/recipes/wip/kdenlive/recipe.toml new file mode 100644 index 00000000..86c26af6 --- /dev/null +++ b/recipes/wip/kdenlive/recipe.toml @@ -0,0 +1,38 @@ +#TODO missing script for CMake, see https://invent.kde.org/multimedia/kdenlive/-/blob/master/dev-docs/build.md#build-and-install-the-projects +[source] +tar = "https://invent.kde.org/multimedia/kdenlive/-/archive/v23.08.3/kdenlive-v23.08.3.tar.bz2" +[build] +template = "custom" +dependencies = [ + "mlt", + "ffmpeg6", + "qt5-declarative", + "qt5-tools", + "qt5-multimedia", + "qt5-svg", + "qt5-quickcontrols", + "qt5-quickcontrols2", + "qt5-networkauth", + "kf5-archive", + "kf5-bookmarks", + "kf5-codecs", + "kf5-config", + "kf5-configwidgets", + "kf5-coreaddons", + "kf5-crash", + "kf5-dbusaddons", + "kf5-declarative", + "kf5-filemetadata", + "kf5-guiaddons", + "kf5-iconthemes", + "kf5-init", + "kf5-io", + "kf5-newstuff", + "kf5-notifications", + "kf5-notifyconfig", + "kf5-purpose", + "kf5-textwidgets", + "kf5-widgetaddons", + "kf5-xmlgui", + "breeze-icons", +] diff --git a/recipes/wip/kf5-archive/recipe.toml b/recipes/wip/kf5-archive/recipe.toml new file mode 100644 index 00000000..13e61b26 --- /dev/null +++ b/recipes/wip/kf5-archive/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://invent.kde.org/frameworks/karchive/-/blob/master/INSTALL?ref_type=heads +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/karchive-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-bookmarks/recipe.toml b/recipes/wip/kf5-bookmarks/recipe.toml new file mode 100644 index 00000000..765cd5dc --- /dev/null +++ b/recipes/wip/kf5-bookmarks/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kbookmarks-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-codecs/recipe.toml b/recipes/wip/kf5-codecs/recipe.toml new file mode 100644 index 00000000..f0b56093 --- /dev/null +++ b/recipes/wip/kf5-codecs/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kcodecs-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-config/recipe.toml b/recipes/wip/kf5-config/recipe.toml new file mode 100644 index 00000000..9f38c097 --- /dev/null +++ b/recipes/wip/kf5-config/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kconfig-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-configwidgets/recipe.toml b/recipes/wip/kf5-configwidgets/recipe.toml new file mode 100644 index 00000000..d99263ea --- /dev/null +++ b/recipes/wip/kf5-configwidgets/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kconfigwidgets-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-coreaddons/recipe.toml b/recipes/wip/kf5-coreaddons/recipe.toml new file mode 100644 index 00000000..0f4fe13e --- /dev/null +++ b/recipes/wip/kf5-coreaddons/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kcoreaddons-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-crash/recipe.toml b/recipes/wip/kf5-crash/recipe.toml new file mode 100644 index 00000000..9336b8e7 --- /dev/null +++ b/recipes/wip/kf5-crash/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kcrash-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-dbusaddons/recipe.toml b/recipes/wip/kf5-dbusaddons/recipe.toml new file mode 100644 index 00000000..652715d2 --- /dev/null +++ b/recipes/wip/kf5-dbusaddons/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kdbusaddons-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-declarative/recipe.toml b/recipes/wip/kf5-declarative/recipe.toml new file mode 100644 index 00000000..be266b6d --- /dev/null +++ b/recipes/wip/kf5-declarative/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kdeclarative-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-filemetadata/recipe.toml b/recipes/wip/kf5-filemetadata/recipe.toml new file mode 100644 index 00000000..850d1ff9 --- /dev/null +++ b/recipes/wip/kf5-filemetadata/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kfilemetadata-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-guiaddons/recipe.toml b/recipes/wip/kf5-guiaddons/recipe.toml new file mode 100644 index 00000000..96abf45c --- /dev/null +++ b/recipes/wip/kf5-guiaddons/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kguiaddons-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-iconthemes/recipe.toml b/recipes/wip/kf5-iconthemes/recipe.toml new file mode 100644 index 00000000..a932ef5e --- /dev/null +++ b/recipes/wip/kf5-iconthemes/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kiconthemes-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-init/recipe.toml b/recipes/wip/kf5-init/recipe.toml new file mode 100644 index 00000000..95fb36b3 --- /dev/null +++ b/recipes/wip/kf5-init/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kinit-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-io/recipe.toml b/recipes/wip/kf5-io/recipe.toml new file mode 100644 index 00000000..ac39541d --- /dev/null +++ b/recipes/wip/kf5-io/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kio-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-newstuff/recipe.toml b/recipes/wip/kf5-newstuff/recipe.toml new file mode 100644 index 00000000..d5b65faa --- /dev/null +++ b/recipes/wip/kf5-newstuff/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/knewstuff-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-notifications/recipe.toml b/recipes/wip/kf5-notifications/recipe.toml new file mode 100644 index 00000000..83226716 --- /dev/null +++ b/recipes/wip/kf5-notifications/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/knotifications-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-notifyconfig/recipe.toml b/recipes/wip/kf5-notifyconfig/recipe.toml new file mode 100644 index 00000000..f0c5d2f1 --- /dev/null +++ b/recipes/wip/kf5-notifyconfig/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/knotifyconfig-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-purpose/recipe.toml b/recipes/wip/kf5-purpose/recipe.toml new file mode 100644 index 00000000..a5422094 --- /dev/null +++ b/recipes/wip/kf5-purpose/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/purpose-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-textwidgets/recipe.toml b/recipes/wip/kf5-textwidgets/recipe.toml new file mode 100644 index 00000000..18d5489a --- /dev/null +++ b/recipes/wip/kf5-textwidgets/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/ktextwidgets-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-widgetaddons/recipe.toml b/recipes/wip/kf5-widgetaddons/recipe.toml new file mode 100644 index 00000000..51d84f75 --- /dev/null +++ b/recipes/wip/kf5-widgetaddons/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kwidgetaddons-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-xmlgui/recipe.toml b/recipes/wip/kf5-xmlgui/recipe.toml new file mode 100644 index 00000000..66bec682 --- /dev/null +++ b/recipes/wip/kf5-xmlgui/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kxmlgui-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/mlt/recipe.toml b/recipes/wip/mlt/recipe.toml new file mode 100644 index 00000000..67767cd3 --- /dev/null +++ b/recipes/wip/mlt/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/mltframework/mlt#readme +[source] +tar = "https://github.com/mltframework/mlt/releases/download/v7.22.0/mlt-7.22.0.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/qt5-networkauth/recipe.toml b/recipes/wip/qt5-networkauth/recipe.toml new file mode 100644 index 00000000..2957c31a --- /dev/null +++ b/recipes/wip/qt5-networkauth/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtnetworkauth-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-quickcontrols/recipe.toml b/recipes/wip/qt5-quickcontrols/recipe.toml new file mode 100644 index 00000000..484f41ad --- /dev/null +++ b/recipes/wip/qt5-quickcontrols/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtquickcontrols-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-quickcontrols2/recipe.toml b/recipes/wip/qt5-quickcontrols2/recipe.toml new file mode 100644 index 00000000..4bf0ef4f --- /dev/null +++ b/recipes/wip/qt5-quickcontrols2/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtquickcontrols2-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" From dfb240746863b4cb46f3bf211f97920f64df22a3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 5 Dec 2023 01:44:13 +0000 Subject: [PATCH 1172/3180] Add recipes --- recipes/wip/gdb/recipe.toml | 2 +- recipes/wip/gnome-builder/recipe.toml | 20 ++++++++++++++++++++ recipes/wip/kdevelop/recipe.toml | 25 +++++++++++++++++++++++++ recipes/wip/rqbit/recipe.toml | 5 +++++ 4 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 recipes/wip/gnome-builder/recipe.toml create mode 100644 recipes/wip/kdevelop/recipe.toml create mode 100644 recipes/wip/rqbit/recipe.toml diff --git a/recipes/wip/gdb/recipe.toml b/recipes/wip/gdb/recipe.toml index 9cd3ba4a..376f98e6 100644 --- a/recipes/wip/gdb/recipe.toml +++ b/recipes/wip/gdb/recipe.toml @@ -1,6 +1,6 @@ #TODO probably wrong script, see https://sourceware.org/gdb/wiki/BuildingNatively [source] -tar = "https://ftp.gnu.org/gnu/gdb/gdb-13.2.tar.xz" +tar = "https://ftp.gnu.org/gnu/gdb/gdb-14.1.tar.xz" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/gnome-builder/recipe.toml b/recipes/wip/gnome-builder/recipe.toml new file mode 100644 index 00000000..76712c05 --- /dev/null +++ b/recipes/wip/gnome-builder/recipe.toml @@ -0,0 +1,20 @@ +#TODO missing script for Meson, see https://builder.readthedocs.io/installation.html#via-release-tarball +#TODO missing dependencies, see https://packages.debian.org/source/trixie/gnome-builder +[source] +tar = "https://download.gnome.org/sources/gnome-builder/45/gnome-builder-45.0.tar.xz" +[build] +template = "custom" +dependencies = [ + "cairo", + "llvm", + "gdk-pixbuf", + "glib", + "gobject-introspection", + "gtk4", + "libadwaita", + "libgit2", + "libpeas", + "libxml2", + "pango", + "webkitgtk4", +] diff --git a/recipes/wip/kdevelop/recipe.toml b/recipes/wip/kdevelop/recipe.toml new file mode 100644 index 00000000..5ab3dee4 --- /dev/null +++ b/recipes/wip/kdevelop/recipe.toml @@ -0,0 +1,25 @@ +#TODO missing script for building, see https://kdevelop.org/build-it/ +#TODO missing dependencies, see https://packages.debian.org/source/trixie/kdevelop +[source] +tar = "https://invent.kde.org/kdevelop/kdevelop/-/archive/v23.08.3/kdevelop-v23.08.3.tar.bz2" +[build] +template = "custom" +dependencies = [ + "boost", + "kf5-archive", + "kf5-config", + "kf5-crash", + "kf5-declarative", + "kf5-guiaddons", + "kf5-iconthemes", + "kf5-io", + "kf5-newstuff", + "kf5-notifications", + "kf5-notifyconfig", + "kf5-purpose", + "kf5-widgetaddons", + "kf5-xmlgui", + "qt5-base", + "qt5-declarative", + "shared-mime-info", +] diff --git a/recipes/wip/rqbit/recipe.toml b/recipes/wip/rqbit/recipe.toml new file mode 100644 index 00000000..8ed10a16 --- /dev/null +++ b/recipes/wip/rqbit/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/ikatson/rqbit/archive/refs/tags/v4.0.0.tar.gz" +[build] +template = "cargo" From 3e2a6f99401618bc82f567fd2cc91976e028dc97 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 7 Dec 2023 15:30:26 +0000 Subject: [PATCH 1173/3180] Improve the README and Package Policy --- README.md | 95 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 83 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 6970844e..56aa3f6a 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,33 @@ # Cookbook -A collection of software ports for Redox. +Package system of Redox. -### Categories +This repository contains the system source code and packages inside the `recipes` folder. + +- A recipe can be a software port or system package (they use `pkgar` or `tar.gz` formats). + +**Read [this](https://doc.redox-os.org/book/ch09-03-porting-applications.html) page before porting programs to Redox** + +In order for this repository to be useful, it must be set up with an environment +from the [redox](https://gitlab.redox-os.org/redox-os/redox) repository. + +[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) + +- [Recipe Categories](#recipe-categories) +- [Package Policy](#package-policy) + - [Cross-Compilation](#cross-compilation) + - [Library Linking](#library-linking) + - [ABI stability](#abi-stability) + - [Checksum](#checksum) + - [License](#license) +- [Testing Area](#testing-area) + - [Suggestions for TODOs](#suggestions-for-todos) +- [Repository Layout](#repository-layout) +- [TODO](#todo) + +### Recipe Categories + +The categories inside the `recipes` folder. - `backends` - Middlewares, like SDL2 - `core` - System components (included on `server` build) @@ -26,17 +51,63 @@ A collection of software ports for Redox. - `video` - Video players and video processing/production tools - `wip` - Software that needs porting or incomplete recipes -In order for this repository to be useful, it must be set up with an environment -from the [redox](https://gitlab.redox-os.org/redox-os/redox) repository. - ### Package Policy -When you send your recipe to upstream (to become a public package), you must follow these rules: +Before sending your recipe to upstream (to become a public package), you must follow these rules: -- Keep the static linking of libraries, there's an exception if the library/runtime is bigger than 50MB, big libraries/runtimes like LLVM can be dynamically linked. -- Respect the ABI separation of the packages, for example, if `openssl1` is available and some program need `openssl3`, you will create a recipe for `openssl3` and not rename the `openssl1`, as it will break the ABI of the dependent packages. -- If your recipe download a tarball you need to create a BLAKE3 hash for it, you can learn how to do it [here](https://doc.redox-os.org/book/ch09-03-porting-applications.html#create-a-blake3-hash-for-your-recipee). -- Verify if the recipe has some license violation, in case of doubt ask us on the [chat](https://doc.redox-os.org/book/ch13-01-chat.html). -- If your recipe is incomplete you will add it on the `wip` folder, you don't need to insert a BLAKE3 hash (it's quicker to test new tarball versions without checksum) but you need to insert a `#TODO` on the beginning of the `recipe.toml` and explain what's missing. Once the recipe is ready, add the BLAKE3 hash if needed and move the folder to the appropriate category. +#### Cross-Compilation -[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) \ No newline at end of file +- All recipes must use our cross-compilers, a Cookbook [template](https://doc.redox-os.org/book/ch09-03-porting-applications.html#templates) does this automatically but it's not always possible, study the build system of your program/library to find these options or patch the configuration files. +- Don't hardcode the CPU architecture on the recipe script. + +#### Library Linking + +- Keep the static linking of libraries, there's an exception if the package become bigger than 100MB, big libraries/runtimes like LLVM can be dynamically linked. + +#### ABI stability + +- Respect the ABI separation of the libraries, for example, if `openssl1` is available and some program need `openssl3`, you will create a recipe for `openssl3` and not rename the `openssl1`, as it will break the dependent packages. + +#### Checksum + +- If your recipe download a tarball, you will need to create a BLAKE3 hash for it. You can learn how to do it [here](https://doc.redox-os.org/book/ch09-03-porting-applications.html#create-a-blake3-hash-for-your-recipee). + +#### License + +- Don't package programs/libraries lacking a license. +- Verify if the program has some license violation, in case of doubt ask us on the [chat](https://doc.redox-os.org/book/ch13-01-chat.html). + +### Testing Area + +Work-in-progress software ports goes to the `wip` category, be aware of these items during your packaging process: + +- A recipe is considered ready if it's mostly working inside of Redox. +- All WIP recipes must have a `#TODO` on the beginning of the `recipe.toml` and explain what is missing. +- BLAKE3 hashes for tarballs are optional (quick testing workflow) +- Try to keep the recipe with the latest stable version of the program (the porting process can take months). +- Once the recipe is ready, add the BLAKE3 hash if needed and move the folder to the appropriate category. + +#### Suggestions for TODOs + +These TODOs improve the packagers cooperation and understanding. + +- `not compiled or tested` - It means that your recipe is fully configured and don't lack necessary dependencies. +- `missing script for x, see insert-the-link-for-build-instructions-here` - It means that your recipe is lacking the cross-compilation script for some build system, where `x` is the build system name. After `see` you will insert the link for the build instructions of the program or library, it will help other packagers to insert the script for you. +- `missing dependencies, see insert-the-link-for-required-dependencies-here` - It means that the `dependencies = []` section is incomplete. +- `probably wrong script, see insert-the-link-for-build-instructions-here` - It means that you don't if your script will work. +- `probably wrong template, see insert-the-link-for-build-instructions-here` - It means that you don't know if the Cookbook template will work. +- `probably missing dependencies, see insert-the-link-for-required-dependencies-here` - It means that you don't know if the required dependencies are satisfied. + +Other TODOs are specific and won't be covered on this list. + +### Repository Layout + +- `.cargo` - Cargo configuration. +- `bin` - LLVM and pkg-config CPU targets. +- `recipes` - Package configuration files. +- `src` - Package system source code. + +### TODO + +- Convert old recipes to TOML, see [this](https://gitlab.redox-os.org/redox-os/cookbook/-/issues/174) tracking issue. +- Remove the scripts after full TOML conversion. From 6b81e39a9211bba94d5481e574fb95d835d1c71b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 7 Dec 2023 19:41:37 +0000 Subject: [PATCH 1174/3180] Fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 56aa3f6a..6a576ef7 100644 --- a/README.md +++ b/README.md @@ -94,7 +94,7 @@ These TODOs improve the packagers cooperation and understanding. - `not compiled or tested` - It means that your recipe is fully configured and don't lack necessary dependencies. - `missing script for x, see insert-the-link-for-build-instructions-here` - It means that your recipe is lacking the cross-compilation script for some build system, where `x` is the build system name. After `see` you will insert the link for the build instructions of the program or library, it will help other packagers to insert the script for you. - `missing dependencies, see insert-the-link-for-required-dependencies-here` - It means that the `dependencies = []` section is incomplete. -- `probably wrong script, see insert-the-link-for-build-instructions-here` - It means that you don't if your script will work. +- `probably wrong script, see insert-the-link-for-build-instructions-here` - It means that you don't know if your script will work. - `probably wrong template, see insert-the-link-for-build-instructions-here` - It means that you don't know if the Cookbook template will work. - `probably missing dependencies, see insert-the-link-for-required-dependencies-here` - It means that you don't know if the required dependencies are satisfied. From f75e5f5081e21213db49b3935f32ce9545e2d9f9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 8 Dec 2023 17:43:24 +0000 Subject: [PATCH 1175/3180] Add recipes --- recipes/wip/ani-cli/recipe.toml | 10 ++++++++++ recipes/wip/ani-skip/recipe.toml | 12 ++++++++++++ recipes/wip/chess-tui/recipe.toml | 5 +++++ recipes/wip/cvmfs/recipe.toml | 8 ++++++++ recipes/wip/defold-engine/recipe.toml | 18 ++++++++++++++++++ recipes/wip/dra-cla/recipe.toml | 10 ++++++++++ recipes/wip/glusterfs/recipe.toml | 14 ++++++++++++++ recipes/wip/goofys/recipe.toml | 5 +++++ recipes/wip/indexfs/recipe.toml | 11 +++++++++++ recipes/wip/jerry/recipe.toml | 10 ++++++++++ recipes/wip/kf5-activities-stats/recipe.toml | 5 +++++ recipes/wip/kf5-activities/recipe.toml | 5 +++++ recipes/wip/kf5-apidox/recipe.toml | 5 +++++ recipes/wip/kf5-attica/recipe.toml | 5 +++++ recipes/wip/kf5-auth/recipe.toml | 5 +++++ recipes/wip/kf5-baloo/recipe.toml | 5 +++++ recipes/wip/kf5-calendarcore/recipe.toml | 5 +++++ recipes/wip/kf5-cmake-modules/recipe.toml | 5 +++++ recipes/wip/kf5-cmutils/recipe.toml | 5 +++++ recipes/wip/kf5-completion/recipe.toml | 5 +++++ recipes/wip/kf5-contacts/recipe.toml | 5 +++++ recipes/wip/kf5-dav/recipe.toml | 5 +++++ recipes/wip/kf5-dnssd/recipe.toml | 5 +++++ recipes/wip/kf5-doctools/recipe.toml | 5 +++++ recipes/wip/kf5-emoticons/recipe.toml | 5 +++++ .../wip/kf5-frameworkintegration/recipe.toml | 5 +++++ recipes/wip/kf5-globalaccel/recipe.toml | 5 +++++ recipes/wip/kf5-holidays/recipe.toml | 5 +++++ recipes/wip/kf5-i18n/recipe.toml | 5 +++++ recipes/wip/kf5-idletime/recipe.toml | 5 +++++ recipes/wip/kf5-itemmodels/recipe.toml | 5 +++++ recipes/wip/kf5-itemviews/recipe.toml | 5 +++++ recipes/wip/kf5-jobwidgets/recipe.toml | 5 +++++ recipes/wip/kf5-kded/recipe.toml | 5 +++++ recipes/wip/kf5-kdesu/recipe.toml | 5 +++++ recipes/wip/kf5-kirigami/recipe.toml | 5 +++++ recipes/wip/kf5-modem-manager/recipe.toml | 5 +++++ recipes/wip/kf5-networkmanager/recipe.toml | 5 +++++ recipes/wip/kf5-package/recipe.toml | 5 +++++ recipes/wip/kf5-people/recipe.toml | 5 +++++ recipes/wip/kf5-plasma-framework/recipe.toml | 5 +++++ recipes/wip/kf5-plotting/recipe.toml | 5 +++++ recipes/wip/kf5-prison/recipe.toml | 5 +++++ recipes/wip/kf5-pty/recipe.toml | 5 +++++ recipes/wip/kf5-qqc2-desktop-style/recipe.toml | 5 +++++ recipes/wip/kf5-quickcharts/recipe.toml | 5 +++++ recipes/wip/kf5-runner/recipe.toml | 5 +++++ recipes/wip/kf5-service/recipe.toml | 5 +++++ recipes/wip/kf5-solid/recipe.toml | 5 +++++ recipes/wip/kf5-sonnet/recipe.toml | 5 +++++ recipes/wip/kf5-syndication/recipe.toml | 5 +++++ .../wip/kf5-syntax-highlighting/recipe.toml | 5 +++++ recipes/wip/kf5-texteditor/recipe.toml | 5 +++++ recipes/wip/kf5-threadweaver/recipe.toml | 5 +++++ recipes/wip/kf5-unitconversion/recipe.toml | 5 +++++ recipes/wip/kf5-wayland/recipe.toml | 5 +++++ recipes/wip/kf5-windowsystem/recipe.toml | 5 +++++ recipes/wip/lobster/recipe.toml | 10 ++++++++++ recipes/wip/moosefs/recipe.toml | 10 ++++++++++ recipes/wip/ntfs-3g/recipe.toml | 5 +++++ recipes/wip/pcmg/recipe.toml | 6 ++++++ recipes/wip/restic/recipe.toml | 6 ++++++ recipes/wip/s3fs/recipe.toml | 16 ++++++++++++++++ recipes/wip/sshfs/recipe.toml | 9 +++++++++ recipes/wip/wayshot/recipe.toml | 5 +++++ 65 files changed, 405 insertions(+) create mode 100644 recipes/wip/ani-cli/recipe.toml create mode 100644 recipes/wip/ani-skip/recipe.toml create mode 100644 recipes/wip/chess-tui/recipe.toml create mode 100644 recipes/wip/cvmfs/recipe.toml create mode 100644 recipes/wip/defold-engine/recipe.toml create mode 100644 recipes/wip/dra-cla/recipe.toml create mode 100644 recipes/wip/glusterfs/recipe.toml create mode 100644 recipes/wip/goofys/recipe.toml create mode 100644 recipes/wip/indexfs/recipe.toml create mode 100644 recipes/wip/jerry/recipe.toml create mode 100644 recipes/wip/kf5-activities-stats/recipe.toml create mode 100644 recipes/wip/kf5-activities/recipe.toml create mode 100644 recipes/wip/kf5-apidox/recipe.toml create mode 100644 recipes/wip/kf5-attica/recipe.toml create mode 100644 recipes/wip/kf5-auth/recipe.toml create mode 100644 recipes/wip/kf5-baloo/recipe.toml create mode 100644 recipes/wip/kf5-calendarcore/recipe.toml create mode 100644 recipes/wip/kf5-cmake-modules/recipe.toml create mode 100644 recipes/wip/kf5-cmutils/recipe.toml create mode 100644 recipes/wip/kf5-completion/recipe.toml create mode 100644 recipes/wip/kf5-contacts/recipe.toml create mode 100644 recipes/wip/kf5-dav/recipe.toml create mode 100644 recipes/wip/kf5-dnssd/recipe.toml create mode 100644 recipes/wip/kf5-doctools/recipe.toml create mode 100644 recipes/wip/kf5-emoticons/recipe.toml create mode 100644 recipes/wip/kf5-frameworkintegration/recipe.toml create mode 100644 recipes/wip/kf5-globalaccel/recipe.toml create mode 100644 recipes/wip/kf5-holidays/recipe.toml create mode 100644 recipes/wip/kf5-i18n/recipe.toml create mode 100644 recipes/wip/kf5-idletime/recipe.toml create mode 100644 recipes/wip/kf5-itemmodels/recipe.toml create mode 100644 recipes/wip/kf5-itemviews/recipe.toml create mode 100644 recipes/wip/kf5-jobwidgets/recipe.toml create mode 100644 recipes/wip/kf5-kded/recipe.toml create mode 100644 recipes/wip/kf5-kdesu/recipe.toml create mode 100644 recipes/wip/kf5-kirigami/recipe.toml create mode 100644 recipes/wip/kf5-modem-manager/recipe.toml create mode 100644 recipes/wip/kf5-networkmanager/recipe.toml create mode 100644 recipes/wip/kf5-package/recipe.toml create mode 100644 recipes/wip/kf5-people/recipe.toml create mode 100644 recipes/wip/kf5-plasma-framework/recipe.toml create mode 100644 recipes/wip/kf5-plotting/recipe.toml create mode 100644 recipes/wip/kf5-prison/recipe.toml create mode 100644 recipes/wip/kf5-pty/recipe.toml create mode 100644 recipes/wip/kf5-qqc2-desktop-style/recipe.toml create mode 100644 recipes/wip/kf5-quickcharts/recipe.toml create mode 100644 recipes/wip/kf5-runner/recipe.toml create mode 100644 recipes/wip/kf5-service/recipe.toml create mode 100644 recipes/wip/kf5-solid/recipe.toml create mode 100644 recipes/wip/kf5-sonnet/recipe.toml create mode 100644 recipes/wip/kf5-syndication/recipe.toml create mode 100644 recipes/wip/kf5-syntax-highlighting/recipe.toml create mode 100644 recipes/wip/kf5-texteditor/recipe.toml create mode 100644 recipes/wip/kf5-threadweaver/recipe.toml create mode 100644 recipes/wip/kf5-unitconversion/recipe.toml create mode 100644 recipes/wip/kf5-wayland/recipe.toml create mode 100644 recipes/wip/kf5-windowsystem/recipe.toml create mode 100644 recipes/wip/lobster/recipe.toml create mode 100644 recipes/wip/moosefs/recipe.toml create mode 100644 recipes/wip/ntfs-3g/recipe.toml create mode 100644 recipes/wip/pcmg/recipe.toml create mode 100644 recipes/wip/restic/recipe.toml create mode 100644 recipes/wip/s3fs/recipe.toml create mode 100644 recipes/wip/sshfs/recipe.toml create mode 100644 recipes/wip/wayshot/recipe.toml diff --git a/recipes/wip/ani-cli/recipe.toml b/recipes/wip/ani-cli/recipe.toml new file mode 100644 index 00000000..8a558756 --- /dev/null +++ b/recipes/wip/ani-cli/recipe.toml @@ -0,0 +1,10 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/pystardust/ani-cli/archive/refs/tags/v4.6.tar.gz" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/bin +cp "${COOKBOOK_SOURCE}"/ani-cli "${COOKBOOK_STAGE}"/bin/ani-cli +chmod a+x "${COOKBOOK_STAGE}"/bin/ani-cli +""" diff --git a/recipes/wip/ani-skip/recipe.toml b/recipes/wip/ani-skip/recipe.toml new file mode 100644 index 00000000..d49a055d --- /dev/null +++ b/recipes/wip/ani-skip/recipe.toml @@ -0,0 +1,12 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/synacktraa/ani-skip" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/bin +mkdir -pv "${COOKBOOK_STAGE}"/home/user/.config/mpv/scripts +cp "${COOKBOOK_SOURCE}"/ani-skip "${COOKBOOK_STAGE}"/bin/ani-skip +cp "${COOKBOOK_SOURCE}"/skip.lua "${COOKBOOK_STAGE}"/home/user/.config/mpv/scripts +chmod a+x "${COOKBOOK_STAGE}"/bin/ani-skip +""" diff --git a/recipes/wip/chess-tui/recipe.toml b/recipes/wip/chess-tui/recipe.toml new file mode 100644 index 00000000..fd4814d0 --- /dev/null +++ b/recipes/wip/chess-tui/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/thomas-mauran/chess-tui/archive/refs/tags/1.0.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/cvmfs/recipe.toml b/recipes/wip/cvmfs/recipe.toml new file mode 100644 index 00000000..a69cc76d --- /dev/null +++ b/recipes/wip/cvmfs/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for CMake, see https://cvmfs.readthedocs.io/en/stable/cpt-quickstart.html#building-from-source +[source] +tar = "https://ecsft.cern.ch/dist/cvmfs/cvmfs-2.11.2/source.tar.gz" +[build] +template = "custom" +dependencies = [ + "libfuse3", +] diff --git a/recipes/wip/defold-engine/recipe.toml b/recipes/wip/defold-engine/recipe.toml new file mode 100644 index 00000000..095e0773 --- /dev/null +++ b/recipes/wip/defold-engine/recipe.toml @@ -0,0 +1,18 @@ +#TODO missing script for building, see https://github.com/defold/defold/blob/dev/README_BUILD.md +#TODO build the editor, see https://github.com/defold/defold/blob/dev/editor/README_BUILD.md +# probably the SDKs can't run on Redox, avoid them +[source] +tar = "https://github.com/defold/defold/archive/refs/tags/1.6.2.tar.gz" +[build] +template = "custom" +dependencies = [ + "libxi", + "libxext", + "mesa-glu", + "mesa", + "curl", + "freeglut", + "libuuid", + "openal", + "ncurses", +] diff --git a/recipes/wip/dra-cla/recipe.toml b/recipes/wip/dra-cla/recipe.toml new file mode 100644 index 00000000..c749101a --- /dev/null +++ b/recipes/wip/dra-cla/recipe.toml @@ -0,0 +1,10 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/CoolnsX/dra-cla" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/bin +cp "${COOKBOOK_SOURCE}"/dra-cla "${COOKBOOK_STAGE}"/bin/dra-cla +chmod a+x "${COOKBOOK_STAGE}"/bin/dra-cla +""" diff --git a/recipes/wip/glusterfs/recipe.toml b/recipes/wip/glusterfs/recipe.toml new file mode 100644 index 00000000..0ea04e9a --- /dev/null +++ b/recipes/wip/glusterfs/recipe.toml @@ -0,0 +1,14 @@ +#TODO Not compiled or tested +#TODO probably missing dependencies, see https://docs.gluster.org/en/latest/Developer-guide/Building-GlusterFS/#build-requirements +# customization - https://docs.gluster.org/en/latest/Developer-guide/Building-GlusterFS/#configuring-for-building +[source] +tar = "https://download.gluster.org/pub/gluster/glusterfs/9/LATEST/glusterfs-9.6.tar.gz" +[build] +template = "configure" +dependencies = [ + "openssl1", + "libxml2", + "libaio", + "sqlite3", + "libfuse3", +] diff --git a/recipes/wip/goofys/recipe.toml b/recipes/wip/goofys/recipe.toml new file mode 100644 index 00000000..58f05a0d --- /dev/null +++ b/recipes/wip/goofys/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Go, see https://github.com/kahing/goofys/#installation +[source] +tar = "https://github.com/kahing/goofys/archive/refs/tags/v0.24.0.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/indexfs/recipe.toml b/recipes/wip/indexfs/recipe.toml new file mode 100644 index 00000000..90c2a470 --- /dev/null +++ b/recipes/wip/indexfs/recipe.toml @@ -0,0 +1,11 @@ +#TODO not compiled or tested +#TODO probably missing dependencies +# build instructions - https://github.com/MajenkoProjects/indexfs/blob/master/INSTALL +[source] +git = "https://github.com/MajenkoProjects/indexfs" +[build] +template = "custom" +script = """ +./autogen.sh +cookbook_configure +""" diff --git a/recipes/wip/jerry/recipe.toml b/recipes/wip/jerry/recipe.toml new file mode 100644 index 00000000..0206be2b --- /dev/null +++ b/recipes/wip/jerry/recipe.toml @@ -0,0 +1,10 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/justchokingaround/jerry" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/bin +cp "${COOKBOOK_SOURCE}"/jerry.sh "${COOKBOOK_STAGE}"/bin/jerry +chmod a+x "${COOKBOOK_STAGE}"/bin/jerry +""" diff --git a/recipes/wip/kf5-activities-stats/recipe.toml b/recipes/wip/kf5-activities-stats/recipe.toml new file mode 100644 index 00000000..81c7aa7c --- /dev/null +++ b/recipes/wip/kf5-activities-stats/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kactivities-stats-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-activities/recipe.toml b/recipes/wip/kf5-activities/recipe.toml new file mode 100644 index 00000000..515c7ac7 --- /dev/null +++ b/recipes/wip/kf5-activities/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kactivities-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-apidox/recipe.toml b/recipes/wip/kf5-apidox/recipe.toml new file mode 100644 index 00000000..b90418a7 --- /dev/null +++ b/recipes/wip/kf5-apidox/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kapidox-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-attica/recipe.toml b/recipes/wip/kf5-attica/recipe.toml new file mode 100644 index 00000000..b7098459 --- /dev/null +++ b/recipes/wip/kf5-attica/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/attica-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-auth/recipe.toml b/recipes/wip/kf5-auth/recipe.toml new file mode 100644 index 00000000..3e9b9311 --- /dev/null +++ b/recipes/wip/kf5-auth/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kauth-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-baloo/recipe.toml b/recipes/wip/kf5-baloo/recipe.toml new file mode 100644 index 00000000..b8d3c065 --- /dev/null +++ b/recipes/wip/kf5-baloo/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/baloo-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-calendarcore/recipe.toml b/recipes/wip/kf5-calendarcore/recipe.toml new file mode 100644 index 00000000..9088f659 --- /dev/null +++ b/recipes/wip/kf5-calendarcore/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kcalendarcore-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-cmake-modules/recipe.toml b/recipes/wip/kf5-cmake-modules/recipe.toml new file mode 100644 index 00000000..1a839225 --- /dev/null +++ b/recipes/wip/kf5-cmake-modules/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/extra-cmake-modules-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-cmutils/recipe.toml b/recipes/wip/kf5-cmutils/recipe.toml new file mode 100644 index 00000000..ec90f29e --- /dev/null +++ b/recipes/wip/kf5-cmutils/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kcmutils-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-completion/recipe.toml b/recipes/wip/kf5-completion/recipe.toml new file mode 100644 index 00000000..b35ef726 --- /dev/null +++ b/recipes/wip/kf5-completion/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kcompletion-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-contacts/recipe.toml b/recipes/wip/kf5-contacts/recipe.toml new file mode 100644 index 00000000..510bd9f4 --- /dev/null +++ b/recipes/wip/kf5-contacts/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kcontacts-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-dav/recipe.toml b/recipes/wip/kf5-dav/recipe.toml new file mode 100644 index 00000000..672b45d1 --- /dev/null +++ b/recipes/wip/kf5-dav/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kdav-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-dnssd/recipe.toml b/recipes/wip/kf5-dnssd/recipe.toml new file mode 100644 index 00000000..bd3bb178 --- /dev/null +++ b/recipes/wip/kf5-dnssd/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kdnssd-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-doctools/recipe.toml b/recipes/wip/kf5-doctools/recipe.toml new file mode 100644 index 00000000..fbcf600a --- /dev/null +++ b/recipes/wip/kf5-doctools/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kdoctools-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-emoticons/recipe.toml b/recipes/wip/kf5-emoticons/recipe.toml new file mode 100644 index 00000000..6465a062 --- /dev/null +++ b/recipes/wip/kf5-emoticons/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kemoticons-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-frameworkintegration/recipe.toml b/recipes/wip/kf5-frameworkintegration/recipe.toml new file mode 100644 index 00000000..4bbaac73 --- /dev/null +++ b/recipes/wip/kf5-frameworkintegration/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/frameworkintegration-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-globalaccel/recipe.toml b/recipes/wip/kf5-globalaccel/recipe.toml new file mode 100644 index 00000000..55008c2f --- /dev/null +++ b/recipes/wip/kf5-globalaccel/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kglobalaccel-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-holidays/recipe.toml b/recipes/wip/kf5-holidays/recipe.toml new file mode 100644 index 00000000..f1b9145a --- /dev/null +++ b/recipes/wip/kf5-holidays/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kholidays-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-i18n/recipe.toml b/recipes/wip/kf5-i18n/recipe.toml new file mode 100644 index 00000000..0125093c --- /dev/null +++ b/recipes/wip/kf5-i18n/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/ki18n-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-idletime/recipe.toml b/recipes/wip/kf5-idletime/recipe.toml new file mode 100644 index 00000000..8acb1b15 --- /dev/null +++ b/recipes/wip/kf5-idletime/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kidletime-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-itemmodels/recipe.toml b/recipes/wip/kf5-itemmodels/recipe.toml new file mode 100644 index 00000000..143c790b --- /dev/null +++ b/recipes/wip/kf5-itemmodels/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kitemmodels-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-itemviews/recipe.toml b/recipes/wip/kf5-itemviews/recipe.toml new file mode 100644 index 00000000..5439efad --- /dev/null +++ b/recipes/wip/kf5-itemviews/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kitemviews-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-jobwidgets/recipe.toml b/recipes/wip/kf5-jobwidgets/recipe.toml new file mode 100644 index 00000000..ec2a9b47 --- /dev/null +++ b/recipes/wip/kf5-jobwidgets/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kjobwidgets-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-kded/recipe.toml b/recipes/wip/kf5-kded/recipe.toml new file mode 100644 index 00000000..0dd64762 --- /dev/null +++ b/recipes/wip/kf5-kded/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kded-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-kdesu/recipe.toml b/recipes/wip/kf5-kdesu/recipe.toml new file mode 100644 index 00000000..53c95e5d --- /dev/null +++ b/recipes/wip/kf5-kdesu/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kdesu-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-kirigami/recipe.toml b/recipes/wip/kf5-kirigami/recipe.toml new file mode 100644 index 00000000..9bca3ddb --- /dev/null +++ b/recipes/wip/kf5-kirigami/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kirigami-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-modem-manager/recipe.toml b/recipes/wip/kf5-modem-manager/recipe.toml new file mode 100644 index 00000000..67909fc1 --- /dev/null +++ b/recipes/wip/kf5-modem-manager/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/modemmanager-qt5-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-networkmanager/recipe.toml b/recipes/wip/kf5-networkmanager/recipe.toml new file mode 100644 index 00000000..71887fc7 --- /dev/null +++ b/recipes/wip/kf5-networkmanager/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/networkmanager-qt5-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-package/recipe.toml b/recipes/wip/kf5-package/recipe.toml new file mode 100644 index 00000000..7391c379 --- /dev/null +++ b/recipes/wip/kf5-package/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kpackage-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-people/recipe.toml b/recipes/wip/kf5-people/recipe.toml new file mode 100644 index 00000000..078ece73 --- /dev/null +++ b/recipes/wip/kf5-people/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kpeople-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-plasma-framework/recipe.toml b/recipes/wip/kf5-plasma-framework/recipe.toml new file mode 100644 index 00000000..6f7b88ec --- /dev/null +++ b/recipes/wip/kf5-plasma-framework/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/plasma-framework-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-plotting/recipe.toml b/recipes/wip/kf5-plotting/recipe.toml new file mode 100644 index 00000000..4cbb3b97 --- /dev/null +++ b/recipes/wip/kf5-plotting/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kplotting-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-prison/recipe.toml b/recipes/wip/kf5-prison/recipe.toml new file mode 100644 index 00000000..3d98a469 --- /dev/null +++ b/recipes/wip/kf5-prison/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/prison-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-pty/recipe.toml b/recipes/wip/kf5-pty/recipe.toml new file mode 100644 index 00000000..048f371f --- /dev/null +++ b/recipes/wip/kf5-pty/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kpty-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-qqc2-desktop-style/recipe.toml b/recipes/wip/kf5-qqc2-desktop-style/recipe.toml new file mode 100644 index 00000000..cf907877 --- /dev/null +++ b/recipes/wip/kf5-qqc2-desktop-style/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/qqc2-desktop-style-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-quickcharts/recipe.toml b/recipes/wip/kf5-quickcharts/recipe.toml new file mode 100644 index 00000000..517a67e9 --- /dev/null +++ b/recipes/wip/kf5-quickcharts/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kquickcharts-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-runner/recipe.toml b/recipes/wip/kf5-runner/recipe.toml new file mode 100644 index 00000000..87a4f8c1 --- /dev/null +++ b/recipes/wip/kf5-runner/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/krunner-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-service/recipe.toml b/recipes/wip/kf5-service/recipe.toml new file mode 100644 index 00000000..cdf8c237 --- /dev/null +++ b/recipes/wip/kf5-service/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kservice-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-solid/recipe.toml b/recipes/wip/kf5-solid/recipe.toml new file mode 100644 index 00000000..0ddc6589 --- /dev/null +++ b/recipes/wip/kf5-solid/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/solid-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-sonnet/recipe.toml b/recipes/wip/kf5-sonnet/recipe.toml new file mode 100644 index 00000000..4f7a13eb --- /dev/null +++ b/recipes/wip/kf5-sonnet/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/sonnet-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-syndication/recipe.toml b/recipes/wip/kf5-syndication/recipe.toml new file mode 100644 index 00000000..3c97390f --- /dev/null +++ b/recipes/wip/kf5-syndication/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/syndication-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-syntax-highlighting/recipe.toml b/recipes/wip/kf5-syntax-highlighting/recipe.toml new file mode 100644 index 00000000..350a3d9f --- /dev/null +++ b/recipes/wip/kf5-syntax-highlighting/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/syntax-highlighting-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-texteditor/recipe.toml b/recipes/wip/kf5-texteditor/recipe.toml new file mode 100644 index 00000000..3165c155 --- /dev/null +++ b/recipes/wip/kf5-texteditor/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/ktexteditor-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-threadweaver/recipe.toml b/recipes/wip/kf5-threadweaver/recipe.toml new file mode 100644 index 00000000..608b567a --- /dev/null +++ b/recipes/wip/kf5-threadweaver/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/threadweaver-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-unitconversion/recipe.toml b/recipes/wip/kf5-unitconversion/recipe.toml new file mode 100644 index 00000000..9a451594 --- /dev/null +++ b/recipes/wip/kf5-unitconversion/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kunitconversion-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-wayland/recipe.toml b/recipes/wip/kf5-wayland/recipe.toml new file mode 100644 index 00000000..39003af4 --- /dev/null +++ b/recipes/wip/kf5-wayland/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kwayland-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/kf5-windowsystem/recipe.toml b/recipes/wip/kf5-windowsystem/recipe.toml new file mode 100644 index 00000000..ab5f51fc --- /dev/null +++ b/recipes/wip/kf5-windowsystem/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://download.kde.org/stable/frameworks/5.112/kwindowsystem-5.112.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/lobster/recipe.toml b/recipes/wip/lobster/recipe.toml new file mode 100644 index 00000000..5cf6e794 --- /dev/null +++ b/recipes/wip/lobster/recipe.toml @@ -0,0 +1,10 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/justchokingaround/lobster" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/bin +cp "${COOKBOOK_SOURCE}"/lobster.sh "${COOKBOOK_STAGE}"/bin/lobster +chmod a+x "${COOKBOOK_STAGE}"/bin/lobster +""" diff --git a/recipes/wip/moosefs/recipe.toml b/recipes/wip/moosefs/recipe.toml new file mode 100644 index 00000000..eaea8f28 --- /dev/null +++ b/recipes/wip/moosefs/recipe.toml @@ -0,0 +1,10 @@ +#TODO missing script for building, see https://github.com/moosefs/moosefs#source-code +[source] +tar = "https://github.com/moosefs/moosefs/archive/refs/tags/v3.0.117.tar.gz" +[build] +template = "custom" +dependencies = [ + "libfuse3", + "libpcap", + "zlib", +] diff --git a/recipes/wip/ntfs-3g/recipe.toml b/recipes/wip/ntfs-3g/recipe.toml new file mode 100644 index 00000000..cafa85f0 --- /dev/null +++ b/recipes/wip/ntfs-3g/recipe.toml @@ -0,0 +1,5 @@ +#TODO mayne needs to patch the bundled libfuse or force the libfuse3 recipe +[source] +tar = "https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2022.10.3.tgz" +[build] +template = "configure" diff --git a/recipes/wip/pcmg/recipe.toml b/recipes/wip/pcmg/recipe.toml new file mode 100644 index 00000000..c29d54d8 --- /dev/null +++ b/recipes/wip/pcmg/recipe.toml @@ -0,0 +1,6 @@ +#TODO probably wrong template +#TODO require WebAssembly +[source] +git = "https://github.com/JohnDowson/pcmg" +[build] +template = "cargo" diff --git a/recipes/wip/restic/recipe.toml b/recipes/wip/restic/recipe.toml new file mode 100644 index 00000000..f7aab431 --- /dev/null +++ b/recipes/wip/restic/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for Go, see https://restic.readthedocs.io/en/stable/020_installation.html#from-source +#TODO maybe needs to be patched +[source] +tar = "https://github.com/restic/restic/releases/download/v0.16.2/restic-0.16.2.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/s3fs/recipe.toml b/recipes/wip/s3fs/recipe.toml new file mode 100644 index 00000000..a46a19cd --- /dev/null +++ b/recipes/wip/s3fs/recipe.toml @@ -0,0 +1,16 @@ +#TODO Not compiled or tested +# build instructions - https://github.com/s3fs-fuse/s3fs-fuse/blob/master/COMPILATION.md +[source] +tar = "https://github.com/s3fs-fuse/s3fs-fuse/archive/refs/tags/v1.93.tar.gz" +[build] +template = "custom" +dependencies = [ + "libfuse2", + "curl", + "libxml2", + "openssl1", +] +script = """ +./autogen.sh +cookbook_configure +""" diff --git a/recipes/wip/sshfs/recipe.toml b/recipes/wip/sshfs/recipe.toml new file mode 100644 index 00000000..4e45b6b0 --- /dev/null +++ b/recipes/wip/sshfs/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for Meson, see https://github.com/libfuse/sshfs#installation +[source] +tar = "https://github.com/libfuse/sshfs/releases/download/sshfs-3.7.3/sshfs-3.7.3.tar.xz" +[build] +template = "custom" +dependencies = [ + "libfuse3", + "glib", +] diff --git a/recipes/wip/wayshot/recipe.toml b/recipes/wip/wayshot/recipe.toml new file mode 100644 index 00000000..a653b201 --- /dev/null +++ b/recipes/wip/wayshot/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for "make", see https://git.sr.ht/~shinyzenith/wayshot#compiling +[source] +tar = "https://git.sr.ht/~shinyzenith/wayshot/archive/43fae61e239d75b8381f1e07e09e40dc2103cc8e.tar.gz" +[build] +template = "custom" From d86380bfe6ca20686de9a3c825394dd6585d9763 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 8 Dec 2023 18:31:33 +0000 Subject: [PATCH 1176/3180] Add recipes --- recipes/wip/qt5-activeqt/recipe.toml | 5 +++++ recipes/wip/qt5-charts/recipe.toml | 5 +++++ recipes/wip/qt5-coap/recipe.toml | 5 +++++ recipes/wip/qt5-connectivity/recipe.toml | 5 +++++ recipes/wip/qt5-datavis3d/recipe.toml | 5 +++++ recipes/wip/qt5-doc/recipe.toml | 5 +++++ recipes/wip/qt5-gamepad/recipe.toml | 5 +++++ recipes/wip/qt5-graphical-effects/recipe.toml | 5 +++++ recipes/wip/qt5-knx/recipe.toml | 5 +++++ recipes/wip/qt5-location/recipe.toml | 5 +++++ recipes/wip/qt5-lottie/recipe.toml | 5 +++++ recipes/wip/qt5-mqtt/recipe.toml | 5 +++++ recipes/wip/qt5-opcua/recipe.toml | 5 +++++ recipes/wip/qt5-purchasing/recipe.toml | 5 +++++ recipes/wip/qt5-quick3d/recipe.toml | 5 +++++ recipes/wip/qt5-quicktimeline/recipe.toml | 5 +++++ recipes/wip/qt5-remoteobjects/recipe.toml | 5 +++++ recipes/wip/qt5-script/recipe.toml | 5 +++++ recipes/wip/qt5-scxml/recipe.toml | 5 +++++ recipes/wip/qt5-sensors/recipe.toml | 5 +++++ recipes/wip/qt5-serialbus/recipe.toml | 5 +++++ recipes/wip/qt5-serialport/recipe.toml | 5 +++++ recipes/wip/qt5-speech/recipe.toml | 5 +++++ recipes/wip/qt5-tqtc/recipe.toml | 5 +++++ recipes/wip/qt5-translations/recipe.toml | 5 +++++ recipes/wip/qt5-virtualkeyboard/recipe.toml | 5 +++++ recipes/wip/qt5-webchannel/recipe.toml | 5 +++++ recipes/wip/qt5-webglplugin/recipe.toml | 5 +++++ recipes/wip/qt5-websockets/recipe.toml | 5 +++++ recipes/wip/qt5-xmlpatterns/recipe.toml | 5 +++++ recipes/wip/qt6-activeqt/recipe.toml | 5 +++++ recipes/wip/qt6-connectivity/recipe.toml | 5 +++++ recipes/wip/qt6-datavis3d/recipe.toml | 5 +++++ recipes/wip/qt6-doc/recipe.toml | 5 +++++ recipes/wip/qt6-graphs/recipe.toml | 5 +++++ recipes/wip/qt6-grpc/recipe.toml | 5 +++++ recipes/wip/qt6-httpserver/recipe.toml | 5 +++++ recipes/wip/qt6-languageserver/recipe.toml | 5 +++++ recipes/wip/qt6-location/recipe.toml | 5 +++++ recipes/wip/qt6-lottie/recipe.toml | 5 +++++ recipes/wip/qt6-networkauth/recipe.toml | 5 +++++ recipes/wip/qt6-qt5compat/recipe.toml | 5 +++++ recipes/wip/qt6-quick3d/recipe.toml | 5 +++++ recipes/wip/qt6-quick3dphysics/recipe.toml | 5 +++++ recipes/wip/qt6-quickeffectmaker/recipe.toml | 5 +++++ recipes/wip/qt6-quicktimeline/recipe.toml | 5 +++++ recipes/wip/qt6-remoteobjects/recipe.toml | 5 +++++ recipes/wip/qt6-scxml/recipe.toml | 5 +++++ recipes/wip/qt6-sensors/recipe.toml | 5 +++++ recipes/wip/qt6-serialbus/recipe.toml | 5 +++++ recipes/wip/qt6-serialport/recipe.toml | 5 +++++ recipes/wip/qt6-shadertools/recipe.toml | 5 +++++ recipes/wip/qt6-speech/recipe.toml | 5 +++++ recipes/wip/qt6-svg/recipe.toml | 5 +++++ recipes/wip/qt6-virtualkeyboard/recipe.toml | 5 +++++ recipes/wip/qt6-webchannel/recipe.toml | 5 +++++ recipes/wip/qt6-websockets/recipe.toml | 5 +++++ 57 files changed, 285 insertions(+) create mode 100644 recipes/wip/qt5-activeqt/recipe.toml create mode 100644 recipes/wip/qt5-charts/recipe.toml create mode 100644 recipes/wip/qt5-coap/recipe.toml create mode 100644 recipes/wip/qt5-connectivity/recipe.toml create mode 100644 recipes/wip/qt5-datavis3d/recipe.toml create mode 100644 recipes/wip/qt5-doc/recipe.toml create mode 100644 recipes/wip/qt5-gamepad/recipe.toml create mode 100644 recipes/wip/qt5-graphical-effects/recipe.toml create mode 100644 recipes/wip/qt5-knx/recipe.toml create mode 100644 recipes/wip/qt5-location/recipe.toml create mode 100644 recipes/wip/qt5-lottie/recipe.toml create mode 100644 recipes/wip/qt5-mqtt/recipe.toml create mode 100644 recipes/wip/qt5-opcua/recipe.toml create mode 100644 recipes/wip/qt5-purchasing/recipe.toml create mode 100644 recipes/wip/qt5-quick3d/recipe.toml create mode 100644 recipes/wip/qt5-quicktimeline/recipe.toml create mode 100644 recipes/wip/qt5-remoteobjects/recipe.toml create mode 100644 recipes/wip/qt5-script/recipe.toml create mode 100644 recipes/wip/qt5-scxml/recipe.toml create mode 100644 recipes/wip/qt5-sensors/recipe.toml create mode 100644 recipes/wip/qt5-serialbus/recipe.toml create mode 100644 recipes/wip/qt5-serialport/recipe.toml create mode 100644 recipes/wip/qt5-speech/recipe.toml create mode 100644 recipes/wip/qt5-tqtc/recipe.toml create mode 100644 recipes/wip/qt5-translations/recipe.toml create mode 100644 recipes/wip/qt5-virtualkeyboard/recipe.toml create mode 100644 recipes/wip/qt5-webchannel/recipe.toml create mode 100644 recipes/wip/qt5-webglplugin/recipe.toml create mode 100644 recipes/wip/qt5-websockets/recipe.toml create mode 100644 recipes/wip/qt5-xmlpatterns/recipe.toml create mode 100644 recipes/wip/qt6-activeqt/recipe.toml create mode 100644 recipes/wip/qt6-connectivity/recipe.toml create mode 100644 recipes/wip/qt6-datavis3d/recipe.toml create mode 100644 recipes/wip/qt6-doc/recipe.toml create mode 100644 recipes/wip/qt6-graphs/recipe.toml create mode 100644 recipes/wip/qt6-grpc/recipe.toml create mode 100644 recipes/wip/qt6-httpserver/recipe.toml create mode 100644 recipes/wip/qt6-languageserver/recipe.toml create mode 100644 recipes/wip/qt6-location/recipe.toml create mode 100644 recipes/wip/qt6-lottie/recipe.toml create mode 100644 recipes/wip/qt6-networkauth/recipe.toml create mode 100644 recipes/wip/qt6-qt5compat/recipe.toml create mode 100644 recipes/wip/qt6-quick3d/recipe.toml create mode 100644 recipes/wip/qt6-quick3dphysics/recipe.toml create mode 100644 recipes/wip/qt6-quickeffectmaker/recipe.toml create mode 100644 recipes/wip/qt6-quicktimeline/recipe.toml create mode 100644 recipes/wip/qt6-remoteobjects/recipe.toml create mode 100644 recipes/wip/qt6-scxml/recipe.toml create mode 100644 recipes/wip/qt6-sensors/recipe.toml create mode 100644 recipes/wip/qt6-serialbus/recipe.toml create mode 100644 recipes/wip/qt6-serialport/recipe.toml create mode 100644 recipes/wip/qt6-shadertools/recipe.toml create mode 100644 recipes/wip/qt6-speech/recipe.toml create mode 100644 recipes/wip/qt6-svg/recipe.toml create mode 100644 recipes/wip/qt6-virtualkeyboard/recipe.toml create mode 100644 recipes/wip/qt6-webchannel/recipe.toml create mode 100644 recipes/wip/qt6-websockets/recipe.toml diff --git a/recipes/wip/qt5-activeqt/recipe.toml b/recipes/wip/qt5-activeqt/recipe.toml new file mode 100644 index 00000000..59f15040 --- /dev/null +++ b/recipes/wip/qt5-activeqt/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtactiveqt-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-charts/recipe.toml b/recipes/wip/qt5-charts/recipe.toml new file mode 100644 index 00000000..98be6cf8 --- /dev/null +++ b/recipes/wip/qt5-charts/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtcharts-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-coap/recipe.toml b/recipes/wip/qt5-coap/recipe.toml new file mode 100644 index 00000000..420b4a62 --- /dev/null +++ b/recipes/wip/qt5-coap/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtcoap-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-connectivity/recipe.toml b/recipes/wip/qt5-connectivity/recipe.toml new file mode 100644 index 00000000..15bf225c --- /dev/null +++ b/recipes/wip/qt5-connectivity/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtconnectivity-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-datavis3d/recipe.toml b/recipes/wip/qt5-datavis3d/recipe.toml new file mode 100644 index 00000000..5ea77e02 --- /dev/null +++ b/recipes/wip/qt5-datavis3d/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtdatavis3d-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-doc/recipe.toml b/recipes/wip/qt5-doc/recipe.toml new file mode 100644 index 00000000..1fa55dae --- /dev/null +++ b/recipes/wip/qt5-doc/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtdoc-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-gamepad/recipe.toml b/recipes/wip/qt5-gamepad/recipe.toml new file mode 100644 index 00000000..388f43cd --- /dev/null +++ b/recipes/wip/qt5-gamepad/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtgamepad-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-graphical-effects/recipe.toml b/recipes/wip/qt5-graphical-effects/recipe.toml new file mode 100644 index 00000000..0ace4d54 --- /dev/null +++ b/recipes/wip/qt5-graphical-effects/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtgraphicaleffects-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-knx/recipe.toml b/recipes/wip/qt5-knx/recipe.toml new file mode 100644 index 00000000..3b3a9c89 --- /dev/null +++ b/recipes/wip/qt5-knx/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtknx-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-location/recipe.toml b/recipes/wip/qt5-location/recipe.toml new file mode 100644 index 00000000..53bdbce9 --- /dev/null +++ b/recipes/wip/qt5-location/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtlocation-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-lottie/recipe.toml b/recipes/wip/qt5-lottie/recipe.toml new file mode 100644 index 00000000..2cd35ef7 --- /dev/null +++ b/recipes/wip/qt5-lottie/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtlottie-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-mqtt/recipe.toml b/recipes/wip/qt5-mqtt/recipe.toml new file mode 100644 index 00000000..02ad8a43 --- /dev/null +++ b/recipes/wip/qt5-mqtt/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtmqtt-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-opcua/recipe.toml b/recipes/wip/qt5-opcua/recipe.toml new file mode 100644 index 00000000..2d2ef6fd --- /dev/null +++ b/recipes/wip/qt5-opcua/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtopcua-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-purchasing/recipe.toml b/recipes/wip/qt5-purchasing/recipe.toml new file mode 100644 index 00000000..041a670e --- /dev/null +++ b/recipes/wip/qt5-purchasing/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtpurchasing-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-quick3d/recipe.toml b/recipes/wip/qt5-quick3d/recipe.toml new file mode 100644 index 00000000..74e77d9c --- /dev/null +++ b/recipes/wip/qt5-quick3d/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtquick3d-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-quicktimeline/recipe.toml b/recipes/wip/qt5-quicktimeline/recipe.toml new file mode 100644 index 00000000..8f16018b --- /dev/null +++ b/recipes/wip/qt5-quicktimeline/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtquicktimeline-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-remoteobjects/recipe.toml b/recipes/wip/qt5-remoteobjects/recipe.toml new file mode 100644 index 00000000..355f298b --- /dev/null +++ b/recipes/wip/qt5-remoteobjects/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtremoteobjects-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-script/recipe.toml b/recipes/wip/qt5-script/recipe.toml new file mode 100644 index 00000000..e26c7168 --- /dev/null +++ b/recipes/wip/qt5-script/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtscript-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-scxml/recipe.toml b/recipes/wip/qt5-scxml/recipe.toml new file mode 100644 index 00000000..60185699 --- /dev/null +++ b/recipes/wip/qt5-scxml/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtscxml-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-sensors/recipe.toml b/recipes/wip/qt5-sensors/recipe.toml new file mode 100644 index 00000000..85746d42 --- /dev/null +++ b/recipes/wip/qt5-sensors/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtsensors-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-serialbus/recipe.toml b/recipes/wip/qt5-serialbus/recipe.toml new file mode 100644 index 00000000..c10f4caa --- /dev/null +++ b/recipes/wip/qt5-serialbus/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtserialbus-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-serialport/recipe.toml b/recipes/wip/qt5-serialport/recipe.toml new file mode 100644 index 00000000..69b79283 --- /dev/null +++ b/recipes/wip/qt5-serialport/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtserialport-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-speech/recipe.toml b/recipes/wip/qt5-speech/recipe.toml new file mode 100644 index 00000000..08ef779b --- /dev/null +++ b/recipes/wip/qt5-speech/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtspeech-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-tqtc/recipe.toml b/recipes/wip/qt5-tqtc/recipe.toml new file mode 100644 index 00000000..9ddd7a16 --- /dev/null +++ b/recipes/wip/qt5-tqtc/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/tqtc-qt5-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-translations/recipe.toml b/recipes/wip/qt5-translations/recipe.toml new file mode 100644 index 00000000..79593507 --- /dev/null +++ b/recipes/wip/qt5-translations/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qttranslations-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-virtualkeyboard/recipe.toml b/recipes/wip/qt5-virtualkeyboard/recipe.toml new file mode 100644 index 00000000..d997c0ff --- /dev/null +++ b/recipes/wip/qt5-virtualkeyboard/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtvirtualkeyboard-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-webchannel/recipe.toml b/recipes/wip/qt5-webchannel/recipe.toml new file mode 100644 index 00000000..6f76023c --- /dev/null +++ b/recipes/wip/qt5-webchannel/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtwebchannel-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-webglplugin/recipe.toml b/recipes/wip/qt5-webglplugin/recipe.toml new file mode 100644 index 00000000..6472115a --- /dev/null +++ b/recipes/wip/qt5-webglplugin/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtwebglplugin-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-websockets/recipe.toml b/recipes/wip/qt5-websockets/recipe.toml new file mode 100644 index 00000000..bd6a5c25 --- /dev/null +++ b/recipes/wip/qt5-websockets/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtwebsockets-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt5-xmlpatterns/recipe.toml b/recipes/wip/qt5-xmlpatterns/recipe.toml new file mode 100644 index 00000000..e7892190 --- /dev/null +++ b/recipes/wip/qt5-xmlpatterns/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtxmlpatterns-everywhere-opensource-src-5.15.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-activeqt/recipe.toml b/recipes/wip/qt6-activeqt/recipe.toml new file mode 100644 index 00000000..ab07e79d --- /dev/null +++ b/recipes/wip/qt6-activeqt/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtactiveqt-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-connectivity/recipe.toml b/recipes/wip/qt6-connectivity/recipe.toml new file mode 100644 index 00000000..48cee1d2 --- /dev/null +++ b/recipes/wip/qt6-connectivity/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtconnectivity-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-datavis3d/recipe.toml b/recipes/wip/qt6-datavis3d/recipe.toml new file mode 100644 index 00000000..7b5940de --- /dev/null +++ b/recipes/wip/qt6-datavis3d/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtdatavis3d-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-doc/recipe.toml b/recipes/wip/qt6-doc/recipe.toml new file mode 100644 index 00000000..05f048e4 --- /dev/null +++ b/recipes/wip/qt6-doc/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtdoc-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-graphs/recipe.toml b/recipes/wip/qt6-graphs/recipe.toml new file mode 100644 index 00000000..317c1b17 --- /dev/null +++ b/recipes/wip/qt6-graphs/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtgraphs-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-grpc/recipe.toml b/recipes/wip/qt6-grpc/recipe.toml new file mode 100644 index 00000000..6f5f535c --- /dev/null +++ b/recipes/wip/qt6-grpc/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtgrpc-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-httpserver/recipe.toml b/recipes/wip/qt6-httpserver/recipe.toml new file mode 100644 index 00000000..110d7c57 --- /dev/null +++ b/recipes/wip/qt6-httpserver/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qthttpserver-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-languageserver/recipe.toml b/recipes/wip/qt6-languageserver/recipe.toml new file mode 100644 index 00000000..48b15cd3 --- /dev/null +++ b/recipes/wip/qt6-languageserver/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtlanguageserver-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-location/recipe.toml b/recipes/wip/qt6-location/recipe.toml new file mode 100644 index 00000000..57e3710f --- /dev/null +++ b/recipes/wip/qt6-location/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtlocation-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-lottie/recipe.toml b/recipes/wip/qt6-lottie/recipe.toml new file mode 100644 index 00000000..4ff65b68 --- /dev/null +++ b/recipes/wip/qt6-lottie/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtlottie-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-networkauth/recipe.toml b/recipes/wip/qt6-networkauth/recipe.toml new file mode 100644 index 00000000..14bcf151 --- /dev/null +++ b/recipes/wip/qt6-networkauth/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtnetworkauth-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-qt5compat/recipe.toml b/recipes/wip/qt6-qt5compat/recipe.toml new file mode 100644 index 00000000..718def1a --- /dev/null +++ b/recipes/wip/qt6-qt5compat/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qt5compat-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-quick3d/recipe.toml b/recipes/wip/qt6-quick3d/recipe.toml new file mode 100644 index 00000000..f2a9b4b6 --- /dev/null +++ b/recipes/wip/qt6-quick3d/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtquick3d-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-quick3dphysics/recipe.toml b/recipes/wip/qt6-quick3dphysics/recipe.toml new file mode 100644 index 00000000..f9b6e59b --- /dev/null +++ b/recipes/wip/qt6-quick3dphysics/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtquick3dphysics-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-quickeffectmaker/recipe.toml b/recipes/wip/qt6-quickeffectmaker/recipe.toml new file mode 100644 index 00000000..26e81064 --- /dev/null +++ b/recipes/wip/qt6-quickeffectmaker/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtquickeffectmaker-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-quicktimeline/recipe.toml b/recipes/wip/qt6-quicktimeline/recipe.toml new file mode 100644 index 00000000..65c0d783 --- /dev/null +++ b/recipes/wip/qt6-quicktimeline/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtquicktimeline-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-remoteobjects/recipe.toml b/recipes/wip/qt6-remoteobjects/recipe.toml new file mode 100644 index 00000000..8601df86 --- /dev/null +++ b/recipes/wip/qt6-remoteobjects/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtremoteobjects-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-scxml/recipe.toml b/recipes/wip/qt6-scxml/recipe.toml new file mode 100644 index 00000000..f2eabe7a --- /dev/null +++ b/recipes/wip/qt6-scxml/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtscxml-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-sensors/recipe.toml b/recipes/wip/qt6-sensors/recipe.toml new file mode 100644 index 00000000..4406fa11 --- /dev/null +++ b/recipes/wip/qt6-sensors/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtsensors-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-serialbus/recipe.toml b/recipes/wip/qt6-serialbus/recipe.toml new file mode 100644 index 00000000..acae051c --- /dev/null +++ b/recipes/wip/qt6-serialbus/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtserialbus-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-serialport/recipe.toml b/recipes/wip/qt6-serialport/recipe.toml new file mode 100644 index 00000000..35b5a92e --- /dev/null +++ b/recipes/wip/qt6-serialport/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtserialport-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-shadertools/recipe.toml b/recipes/wip/qt6-shadertools/recipe.toml new file mode 100644 index 00000000..2168fed2 --- /dev/null +++ b/recipes/wip/qt6-shadertools/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtshadertools-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-speech/recipe.toml b/recipes/wip/qt6-speech/recipe.toml new file mode 100644 index 00000000..cc8953ca --- /dev/null +++ b/recipes/wip/qt6-speech/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtspeech-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-svg/recipe.toml b/recipes/wip/qt6-svg/recipe.toml new file mode 100644 index 00000000..254293c0 --- /dev/null +++ b/recipes/wip/qt6-svg/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtsvg-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-virtualkeyboard/recipe.toml b/recipes/wip/qt6-virtualkeyboard/recipe.toml new file mode 100644 index 00000000..1698d867 --- /dev/null +++ b/recipes/wip/qt6-virtualkeyboard/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtvirtualkeyboard-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-webchannel/recipe.toml b/recipes/wip/qt6-webchannel/recipe.toml new file mode 100644 index 00000000..f8088fcd --- /dev/null +++ b/recipes/wip/qt6-webchannel/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtwebchannel-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/qt6-websockets/recipe.toml b/recipes/wip/qt6-websockets/recipe.toml new file mode 100644 index 00000000..a1982f0c --- /dev/null +++ b/recipes/wip/qt6-websockets/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtwebsockets-everywhere-src-6.6.1.tar.xz" +[build] +template = "configure" From a4c3c5aac2f099483b7093e66edf9073c3b2e4d1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 8 Dec 2023 21:39:19 +0000 Subject: [PATCH 1177/3180] Add recipes --- recipes/wip/apr-util/recipe.toml | 5 ++++ recipes/wip/apr/recipe.toml | 5 ++++ recipes/wip/astyle/recipe.toml | 5 ++++ recipes/wip/cairomm-1.0+/recipe.toml | 8 ++++++ recipes/wip/cairomm-1.16+/recipe.toml | 8 ++++++ recipes/wip/cairomm/recipe.toml | 5 ---- recipes/wip/cmark/recipe.toml | 5 ++++ recipes/wip/dspy/recipe.toml | 5 ++++ recipes/wip/enchant/recipe.toml | 5 ++++ recipes/wip/exuberant-ctags/recipe.toml | 5 ++++ recipes/wip/{glib2mm => glibmm}/recipe.toml | 5 +++- recipes/wip/gnome-builder/recipe.toml | 14 ++++++++++ recipes/wip/go/recipe.toml | 6 +++++ recipes/wip/gtk2mm/recipe.toml | 7 +++-- recipes/wip/gtk3mm/recipe.toml | 12 +++++++++ recipes/wip/gtk4mm/recipe.toml | 12 ++++++--- recipes/wip/gtksourceview/recipe.toml | 12 +++++++++ recipes/wip/json-glib/recipe.toml | 8 ++++++ recipes/wip/jsonrpc-glib/recipe.toml | 8 ++++++ recipes/wip/kdevelop/recipe.toml | 26 +++++++++++++++++- recipes/wip/kf5-parts/recipe.toml | 5 ++++ recipes/wip/kf5-sysguard/recipe.toml | 5 ++++ recipes/wip/libdex/recipe.toml | 8 ++++++ recipes/wip/libgrantlee/recipe.toml | 8 ++++++ recipes/wip/libgspell-gtk3/recipe.toml | 10 +++++++ recipes/wip/libgspell-gtk4/recipe.toml | 14 ++++++++++ recipes/wip/libhyphen/recipe.toml | 5 ++++ recipes/wip/libicu/recipe.toml | 5 ++++ recipes/wip/libkomparediff2/recipe.toml | 5 ++++ recipes/wip/libpanel/recipe.toml | 5 ++++ recipes/wip/libsoup/recipe.toml | 5 ++++ recipes/wip/libvte/recipe.toml | 5 ++++ recipes/wip/okteta/recipe.toml | 5 ++++ recipes/wip/{pango2mm => pangomm}/recipe.toml | 3 +++ recipes/wip/qt5-webkit/recipe.toml | 27 +++++++++++++++++++ recipes/wip/vala/recipe.toml | 8 ++++++ 36 files changed, 277 insertions(+), 12 deletions(-) create mode 100644 recipes/wip/apr-util/recipe.toml create mode 100644 recipes/wip/apr/recipe.toml create mode 100644 recipes/wip/astyle/recipe.toml create mode 100644 recipes/wip/cairomm-1.0+/recipe.toml create mode 100644 recipes/wip/cairomm-1.16+/recipe.toml delete mode 100644 recipes/wip/cairomm/recipe.toml create mode 100644 recipes/wip/cmark/recipe.toml create mode 100644 recipes/wip/dspy/recipe.toml create mode 100644 recipes/wip/enchant/recipe.toml create mode 100644 recipes/wip/exuberant-ctags/recipe.toml rename recipes/wip/{glib2mm => glibmm}/recipe.toml (53%) create mode 100644 recipes/wip/go/recipe.toml create mode 100644 recipes/wip/gtk3mm/recipe.toml create mode 100644 recipes/wip/gtksourceview/recipe.toml create mode 100644 recipes/wip/json-glib/recipe.toml create mode 100644 recipes/wip/jsonrpc-glib/recipe.toml create mode 100644 recipes/wip/kf5-parts/recipe.toml create mode 100644 recipes/wip/kf5-sysguard/recipe.toml create mode 100644 recipes/wip/libdex/recipe.toml create mode 100644 recipes/wip/libgrantlee/recipe.toml create mode 100644 recipes/wip/libgspell-gtk3/recipe.toml create mode 100644 recipes/wip/libgspell-gtk4/recipe.toml create mode 100644 recipes/wip/libhyphen/recipe.toml create mode 100644 recipes/wip/libicu/recipe.toml create mode 100644 recipes/wip/libkomparediff2/recipe.toml create mode 100644 recipes/wip/libpanel/recipe.toml create mode 100644 recipes/wip/libsoup/recipe.toml create mode 100644 recipes/wip/libvte/recipe.toml create mode 100644 recipes/wip/okteta/recipe.toml rename recipes/wip/{pango2mm => pangomm}/recipe.toml (82%) create mode 100644 recipes/wip/qt5-webkit/recipe.toml create mode 100644 recipes/wip/vala/recipe.toml diff --git a/recipes/wip/apr-util/recipe.toml b/recipes/wip/apr-util/recipe.toml new file mode 100644 index 00000000..a9ec5419 --- /dev/null +++ b/recipes/wip/apr-util/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://dlcdn.apache.org//apr/apr-util-1.6.3.tar.bz2" +[build] +template = "configure" diff --git a/recipes/wip/apr/recipe.toml b/recipes/wip/apr/recipe.toml new file mode 100644 index 00000000..d062a9ef --- /dev/null +++ b/recipes/wip/apr/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://dlcdn.apache.org//apr/apr-1.7.4.tar.bz2" +[build] +template = "configure" diff --git a/recipes/wip/astyle/recipe.toml b/recipes/wip/astyle/recipe.toml new file mode 100644 index 00000000..8b8db718 --- /dev/null +++ b/recipes/wip/astyle/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://astyle.sourceforge.net/install.html +[source] +tar = "https://sourceforge.net/projects/astyle/files/astyle/astyle%203.4/astyle-3.4.10.tar.bz2/download" +[build] +template = "custom" diff --git a/recipes/wip/cairomm-1.0+/recipe.toml b/recipes/wip/cairomm-1.0+/recipe.toml new file mode 100644 index 00000000..f370b5b5 --- /dev/null +++ b/recipes/wip/cairomm-1.0+/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +tar = "https://www.cairographics.org/releases/cairomm-1.15.5.tar.gz" +[build] +template = "configure" +dependencies = [ + "cairo", +] diff --git a/recipes/wip/cairomm-1.16+/recipe.toml b/recipes/wip/cairomm-1.16+/recipe.toml new file mode 100644 index 00000000..ede1e97c --- /dev/null +++ b/recipes/wip/cairomm-1.16+/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +tar = "https://www.cairographics.org/releases/cairomm-1.18.0.tar.xz" +[build] +template = "configure" +dependencies = [ + "cairo", +] diff --git a/recipes/wip/cairomm/recipe.toml b/recipes/wip/cairomm/recipe.toml deleted file mode 100644 index e1b46845..00000000 --- a/recipes/wip/cairomm/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO missing script for Meson, see https://cgit.freedesktop.org/cairo/tree/INSTALL -[source] -tar = "https://www.cairographics.org/releases/cairomm-1.16.2.tar.xz" -[build] -template = "custom" diff --git a/recipes/wip/cmark/recipe.toml b/recipes/wip/cmark/recipe.toml new file mode 100644 index 00000000..177f3d13 --- /dev/null +++ b/recipes/wip/cmark/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/commonmark/cmark#installing +[source] +tar = "https://github.com/commonmark/cmark/archive/refs/tags/0.30.3.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/dspy/recipe.toml b/recipes/wip/dspy/recipe.toml new file mode 100644 index 00000000..5b7fb753 --- /dev/null +++ b/recipes/wip/dspy/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, lacking build instructions +[source] +tar = "https://download.gnome.org/sources/dspy/1.2/dspy-1.2.1.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/enchant/recipe.toml b/recipes/wip/enchant/recipe.toml new file mode 100644 index 00000000..cb49a628 --- /dev/null +++ b/recipes/wip/enchant/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/AbiWord/enchant/releases/download/v2.6.3/enchant-2.6.3.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/exuberant-ctags/recipe.toml b/recipes/wip/exuberant-ctags/recipe.toml new file mode 100644 index 00000000..6f9a1240 --- /dev/null +++ b/recipes/wip/exuberant-ctags/recipe.toml @@ -0,0 +1,5 @@ +#TODO probably wrong template, lacking build instructions +[source] +tar = "https://sourceforge.net/projects/ctags/files/ctags/5.8/ctags-5.8.tar.gz/download" +[build] +template = "configure" diff --git a/recipes/wip/glib2mm/recipe.toml b/recipes/wip/glibmm/recipe.toml similarity index 53% rename from recipes/wip/glib2mm/recipe.toml rename to recipes/wip/glibmm/recipe.toml index 199a5601..4ed01f0c 100644 --- a/recipes/wip/glib2mm/recipe.toml +++ b/recipes/wip/glibmm/recipe.toml @@ -1,5 +1,8 @@ #TODO probably wrong template, see https://gitlab.gnome.org/GNOME/glibmm#building [source] -tar = "https://download.gnome.org/sources/glibmm/2.76/glibmm-2.76.0.tar.xz" +tar = "https://download.gnome.org/sources/glibmm/2.78/glibmm-2.78.0.tar.xz" [build] template = "configure" +dependencies = [ + "glib", +] diff --git a/recipes/wip/gnome-builder/recipe.toml b/recipes/wip/gnome-builder/recipe.toml index 76712c05..719f3e91 100644 --- a/recipes/wip/gnome-builder/recipe.toml +++ b/recipes/wip/gnome-builder/recipe.toml @@ -6,15 +6,29 @@ tar = "https://download.gnome.org/sources/gnome-builder/45/gnome-builder-45.0.ta template = "custom" dependencies = [ "cairo", + "cmark", + "dbus", + "dspy", + "enchant", "llvm", "gdk-pixbuf", "glib", "gobject-introspection", "gtk4", + "gtk4mm", + "gtksourceview", "libadwaita", + "libdex", "libgit2", + "libgspell-gtk4", + "libpanel", "libpeas", + "libsoup", + "vala", + "libvte", "libxml2", + "json-glib", + "jsonrpc-glib", "pango", "webkitgtk4", ] diff --git a/recipes/wip/go/recipe.toml b/recipes/wip/go/recipe.toml new file mode 100644 index 00000000..3ba9cabb --- /dev/null +++ b/recipes/wip/go/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for building, see https://go.dev/doc/install/source +#TODO use the Go frontend from GCC or build the official compiler? +[source] +tar = "https://go.dev/dl/go1.21.5.src.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/gtk2mm/recipe.toml b/recipes/wip/gtk2mm/recipe.toml index bb2dd93b..86f6f83d 100644 --- a/recipes/wip/gtk2mm/recipe.toml +++ b/recipes/wip/gtk2mm/recipe.toml @@ -1,5 +1,8 @@ -#TODO probably missing dependencies +#TODO determine dependencies [source] -tar = "https://download.gnome.org/sources/gtkmm/2.91/gtkmm-2.91.7.tar.gz" +tar = "https://download.gnome.org/sources/gtkmm/2.24/gtkmm-2.24.5.tar.xz" [build] template = "configure" +dependencies = [ + "gtk2", +] diff --git a/recipes/wip/gtk3mm/recipe.toml b/recipes/wip/gtk3mm/recipe.toml new file mode 100644 index 00000000..dfcbbda7 --- /dev/null +++ b/recipes/wip/gtk3mm/recipe.toml @@ -0,0 +1,12 @@ +#TODO missing script for Meson, see https://gnome.pages.gitlab.gnome.org/gtkmm-documentation/sec-install-unix-and-linux.html +[source] +tar = "https://download.gnome.org/sources/gtkmm/3.24/gtkmm-3.24.8.tar.xz" +[build] +template = "custom" +dependencies = [ + "libsigc++", + "gtk3", + "glibmm", + "cairomm-1.0+", + "pangomm", +] diff --git a/recipes/wip/gtk4mm/recipe.toml b/recipes/wip/gtk4mm/recipe.toml index 1637773f..22acdfec 100644 --- a/recipes/wip/gtk4mm/recipe.toml +++ b/recipes/wip/gtk4mm/recipe.toml @@ -1,6 +1,12 @@ -#TODO missing script for Meson (probably) -#TODO probably missing dependencies +#TODO missing script for Meson, see https://gnome.pages.gitlab.gnome.org/gtkmm-documentation/sec-install-unix-and-linux.html [source] -tar = "https://download.gnome.org/sources/gtkmm/4.11/gtkmm-4.11.2.tar.xz" +tar = "https://download.gnome.org/sources/gtkmm/4.13/gtkmm-4.13.2.tar.xz" [build] template = "custom" +dependencies = [ + "libsigc++", + "gtk4", + "glibmm", + "cairomm-1.16+", + "pangomm", +] diff --git a/recipes/wip/gtksourceview/recipe.toml b/recipes/wip/gtksourceview/recipe.toml new file mode 100644 index 00000000..7f96899f --- /dev/null +++ b/recipes/wip/gtksourceview/recipe.toml @@ -0,0 +1,12 @@ +#TODO missing script for Meson, see https://gitlab.gnome.org/GNOME/gtksourceview#installation +[source] +tar = "https://download.gnome.org/sources/gtksourceview/5.10/gtksourceview-5.10.0.tar.xz" +[build] +template = "custom" +dependencies = [ + "glib", + "gtk4", + "libxml2", + "fribidi", + "pcre", +] diff --git a/recipes/wip/json-glib/recipe.toml b/recipes/wip/json-glib/recipe.toml new file mode 100644 index 00000000..63676945 --- /dev/null +++ b/recipes/wip/json-glib/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for Meson, see https://gitlab.gnome.org/GNOME/json-glib/#build-and-installation +[source] +tar = "https://download.gnome.org/sources/json-glib/1.8/json-glib-1.8.0.tar.xz" +[build] +template = "custom" +dependencies = [ + "glib", +] diff --git a/recipes/wip/jsonrpc-glib/recipe.toml b/recipes/wip/jsonrpc-glib/recipe.toml new file mode 100644 index 00000000..65f6e609 --- /dev/null +++ b/recipes/wip/jsonrpc-glib/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for Meson, see https://gitlab.gnome.org/GNOME/jsonrpc-glib#building +[source] +tar = "https://download.gnome.org/sources/jsonrpc-glib/3.44/jsonrpc-glib-3.44.0.tar.xz" +[build] +template = "custom" +dependencies = [ + "glib", +] diff --git a/recipes/wip/kdevelop/recipe.toml b/recipes/wip/kdevelop/recipe.toml index 5ab3dee4..2edd3f1e 100644 --- a/recipes/wip/kdevelop/recipe.toml +++ b/recipes/wip/kdevelop/recipe.toml @@ -1,25 +1,49 @@ #TODO missing script for building, see https://kdevelop.org/build-it/ -#TODO missing dependencies, see https://packages.debian.org/source/trixie/kdevelop +#TODO probably missing dependencies, see https://packages.debian.org/source/trixie/kdevelop [source] tar = "https://invent.kde.org/kdevelop/kdevelop/-/archive/v23.08.3/kdevelop-v23.08.3.tar.bz2" [build] template = "custom" dependencies = [ + "apr", + "apr-util", + "astyle", "boost", + "libgrantlee", + "libkomparediff2", "kf5-archive", "kf5-config", "kf5-crash", + "kf5-cmutils", + "kf5-extra-cmake-modules", "kf5-declarative", + "kf5-doctools", "kf5-guiaddons", + "kf5-i18n", "kf5-iconthemes", + "kf5-itemmodels", + "kf5-itemviews", "kf5-io", + "kf5-jobwidgets", "kf5-newstuff", "kf5-notifications", "kf5-notifyconfig", + "kf5-parts", + "kf5-plasma-framework", "kf5-purpose", + "kf5-runner", + "kf5-service", + "kf5-sonnet", + "kf5-sysguard", + "kf5-texteditor", + "kf5-threadweaver", "kf5-widgetaddons", + "kf5-windowsystem", "kf5-xmlgui", "qt5-base", "qt5-declarative", + "qt5-tools", + "qt5-webkit", + "okteta", "shared-mime-info", ] diff --git a/recipes/wip/kf5-parts/recipe.toml b/recipes/wip/kf5-parts/recipe.toml new file mode 100644 index 00000000..5251ea3a --- /dev/null +++ b/recipes/wip/kf5-parts/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for building, lacking build instructions +[source] +tar = "https://invent.kde.org/frameworks/kparts/-/archive/v5.112.0/kparts-v5.112.0.tar.bz2" +[build] +template = "custom" diff --git a/recipes/wip/kf5-sysguard/recipe.toml b/recipes/wip/kf5-sysguard/recipe.toml new file mode 100644 index 00000000..3135b3be --- /dev/null +++ b/recipes/wip/kf5-sysguard/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for building, lacking build instructions +[source] +tar = "https://invent.kde.org/plasma/libksysguard/-/archive/v5.27.10/libksysguard-v5.27.10.tar.bz2" +[build] +template = "custom" diff --git a/recipes/wip/libdex/recipe.toml b/recipes/wip/libdex/recipe.toml new file mode 100644 index 00000000..365fcee4 --- /dev/null +++ b/recipes/wip/libdex/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for Meson, see https://gitlab.gnome.org/GNOME/libdex#building +[source] +tar = "https://download.gnome.org/sources/libdex/0.4/libdex-0.4.1.tar.xz" +[build] +template = "custom" +dependencies = [ + "glib", +] diff --git a/recipes/wip/libgrantlee/recipe.toml b/recipes/wip/libgrantlee/recipe.toml new file mode 100644 index 00000000..4a5b47f9 --- /dev/null +++ b/recipes/wip/libgrantlee/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for CMake, see https://github.com/steveire/grantlee#installation +[source] +tar = "https://github.com/steveire/grantlee/releases/download/v5.3.1/grantlee-5.3.1.tar.gz" +[build] +template = "custom" +dependencies = [ + "qt5-base", +] diff --git a/recipes/wip/libgspell-gtk3/recipe.toml b/recipes/wip/libgspell-gtk3/recipe.toml new file mode 100644 index 00000000..d045090c --- /dev/null +++ b/recipes/wip/libgspell-gtk3/recipe.toml @@ -0,0 +1,10 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.gnome.org/sources/gspell/1.12/gspell-1.12.2.tar.xz" +[build] +template = "configure" +dependencies = [ + "gtk3", + "glib", + "libicu", +] diff --git a/recipes/wip/libgspell-gtk4/recipe.toml b/recipes/wip/libgspell-gtk4/recipe.toml new file mode 100644 index 00000000..3c7ae5ef --- /dev/null +++ b/recipes/wip/libgspell-gtk4/recipe.toml @@ -0,0 +1,14 @@ +#TODO probably wrong script +[source] +tar = "https://gitlab.gnome.org/otrocodigo/gspell/-/archive/1.11.1/gspell-1.11.1.tar.bz2" +[build] +template = "custom" +dependencies = [ + "glib", + "gtk4", + "libicu", +] +script = """ +./autogen.sh +cookbook_configure +""" diff --git a/recipes/wip/libhyphen/recipe.toml b/recipes/wip/libhyphen/recipe.toml new file mode 100644 index 00000000..3ee115a8 --- /dev/null +++ b/recipes/wip/libhyphen/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for building, see https://github.com/hunspell/hyphen/blob/master/README#L49 +[source] +git = "https://github.com/hunspell/hyphen" +[build] +template = "custom" diff --git a/recipes/wip/libicu/recipe.toml b/recipes/wip/libicu/recipe.toml new file mode 100644 index 00000000..43008d2c --- /dev/null +++ b/recipes/wip/libicu/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/unicode-org/icu/releases/download/release-74-1/icu4c-74_1-src.tgz" +[build] +template = "configure" diff --git a/recipes/wip/libkomparediff2/recipe.toml b/recipes/wip/libkomparediff2/recipe.toml new file mode 100644 index 00000000..6630c5cf --- /dev/null +++ b/recipes/wip/libkomparediff2/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://invent.kde.org/sdk/libkomparediff2/-/archive/v23.08.4/libkomparediff2-v23.08.4.tar.bz2" +[build] +template = "custom" diff --git a/recipes/wip/libpanel/recipe.toml b/recipes/wip/libpanel/recipe.toml new file mode 100644 index 00000000..bceeb07b --- /dev/null +++ b/recipes/wip/libpanel/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, lacking build instructions +[source] +tar = "https://download.gnome.org/sources/libpanel/1.4/libpanel-1.4.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/libsoup/recipe.toml b/recipes/wip/libsoup/recipe.toml new file mode 100644 index 00000000..9dfd307f --- /dev/null +++ b/recipes/wip/libsoup/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, lacking build instructions +[source] +tar = "https://download.gnome.org/sources/libsoup/3.4/libsoup-3.4.4.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/libvte/recipe.toml b/recipes/wip/libvte/recipe.toml new file mode 100644 index 00000000..4c08fd16 --- /dev/null +++ b/recipes/wip/libvte/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, see https://gitlab.gnome.org/GNOME/vte/#installation +[source] +tar = "https://download.gnome.org/sources/vte/0.74/vte-0.74.1.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/okteta/recipe.toml b/recipes/wip/okteta/recipe.toml new file mode 100644 index 00000000..ef41eab2 --- /dev/null +++ b/recipes/wip/okteta/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, lacking build instructions +[source] +tar = "https://invent.kde.org/utilities/okteta/-/archive/v0.26.13/okteta-v0.26.13.tar.bz2" +[build] +template = "custom" diff --git a/recipes/wip/pango2mm/recipe.toml b/recipes/wip/pangomm/recipe.toml similarity index 82% rename from recipes/wip/pango2mm/recipe.toml rename to recipes/wip/pangomm/recipe.toml index 6bd02a5f..f7805c0f 100644 --- a/recipes/wip/pango2mm/recipe.toml +++ b/recipes/wip/pangomm/recipe.toml @@ -3,3 +3,6 @@ tar = "https://download.gnome.org/sources/pangomm/2.50/pangomm-2.50.1.tar.xz" [build] template = "configure" +dependencies = [ + "pango", +] diff --git a/recipes/wip/qt5-webkit/recipe.toml b/recipes/wip/qt5-webkit/recipe.toml new file mode 100644 index 00000000..38b70a36 --- /dev/null +++ b/recipes/wip/qt5-webkit/recipe.toml @@ -0,0 +1,27 @@ +#TODO probably wrong branch +#TODO missing script for CMake, see https://github.com/qtwebkit/qtwebkit/wiki/Building-QtWebKit-on-Linux +#TODO determine dependencies +[source] +git = "https://github.com/movableink/webkit" +[build] +template = "custom" +dependencies = [ + "qt5-base", + "qt5-guiaddons", + "qt5-connectivity", + "qt5-networkauth", + "qt5-positioning", + "qt5-sensors", + "qt5-declarative", + "qt5-webchannel", + "sqlite3", + "libicu", + "libhyphen", + "libxml2", + "libxslt", + "libjpeg-turbo", + "libpng", + "zlib", + "glib", + "gstreamer", +] diff --git a/recipes/wip/vala/recipe.toml b/recipes/wip/vala/recipe.toml new file mode 100644 index 00000000..b6cc898d --- /dev/null +++ b/recipes/wip/vala/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for building, see https://gitlab.gnome.org/GNOME/vala#building-vala +[source] +tar = "https://download.gnome.org/sources/vala/0.56/vala-0.56.14.tar.xz" +[build] +template = "custom" +dependencies = [ + "glib", +] From 88841ec8b3bdb0988e033ebd76011f959d72a454 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 10 Dec 2023 05:39:10 +0000 Subject: [PATCH 1178/3180] Update recipes --- recipes/wip/dcmtk/recipe.toml | 14 ++++++++++++ recipes/wip/emacs-pgtk/recipe.toml | 32 ++++++++++++++++++++++++++ recipes/wip/emacs/recipe.toml | 14 +++++++++++- recipes/wip/jirust/recipe.toml | 5 ++++ recipes/wip/krita/recipe.toml | 33 ++++++++++++++++++++++++++- recipes/wip/libde265/recipe.toml | 12 ++++++++++ recipes/wip/libeigen/recipe.toml | 5 ++++ recipes/wip/libgc/recipe.toml | 5 ++++ recipes/wip/libgpm/recipe.toml | 5 ++++ recipes/wip/libgsl/recipe.toml | 5 ++++ recipes/wip/libheif/recipe.toml | 9 ++++++++ recipes/wip/libiconv/recipe.toml | 5 ++++ recipes/wip/libimmer/recipe.toml | 5 ++++ recipes/wip/libjasper/recipe.toml | 5 ++++ recipes/wip/libkdcraw/recipe.toml | 9 ++++++++ recipes/wip/liblager/recipe.toml | 9 ++++++++ recipes/wip/libm17n/recipe.toml | 5 ++++ recipes/wip/libotf/recipe.toml | 5 ++++ recipes/wip/libpoppler/recipe.toml | 6 +++++ recipes/wip/libraw/recipe.toml | 11 +++++++++ recipes/wip/libseexpr-kde/recipe.toml | 8 +++++++ recipes/wip/libunibreak/recipe.toml | 5 ++++ recipes/wip/libxsimd/recipe.toml | 5 ++++ recipes/wip/libxtl/recipe.toml | 5 ++++ recipes/wip/libzug/recipe.toml | 8 +++++++ recipes/wip/opencolorio/recipe.toml | 11 +++++++++ recipes/wip/openimageio/recipe.toml | 8 ++++++- recipes/wip/openjpeg/recipe.toml | 5 ++++ 28 files changed, 251 insertions(+), 3 deletions(-) create mode 100644 recipes/wip/dcmtk/recipe.toml create mode 100644 recipes/wip/emacs-pgtk/recipe.toml create mode 100644 recipes/wip/jirust/recipe.toml create mode 100644 recipes/wip/libde265/recipe.toml create mode 100644 recipes/wip/libeigen/recipe.toml create mode 100644 recipes/wip/libgc/recipe.toml create mode 100644 recipes/wip/libgpm/recipe.toml create mode 100644 recipes/wip/libgsl/recipe.toml create mode 100644 recipes/wip/libheif/recipe.toml create mode 100644 recipes/wip/libiconv/recipe.toml create mode 100644 recipes/wip/libimmer/recipe.toml create mode 100644 recipes/wip/libjasper/recipe.toml create mode 100644 recipes/wip/libkdcraw/recipe.toml create mode 100644 recipes/wip/liblager/recipe.toml create mode 100644 recipes/wip/libm17n/recipe.toml create mode 100644 recipes/wip/libotf/recipe.toml create mode 100644 recipes/wip/libpoppler/recipe.toml create mode 100644 recipes/wip/libraw/recipe.toml create mode 100644 recipes/wip/libseexpr-kde/recipe.toml create mode 100644 recipes/wip/libunibreak/recipe.toml create mode 100644 recipes/wip/libxsimd/recipe.toml create mode 100644 recipes/wip/libxtl/recipe.toml create mode 100644 recipes/wip/libzug/recipe.toml create mode 100644 recipes/wip/opencolorio/recipe.toml create mode 100644 recipes/wip/openjpeg/recipe.toml diff --git a/recipes/wip/dcmtk/recipe.toml b/recipes/wip/dcmtk/recipe.toml new file mode 100644 index 00000000..5393073f --- /dev/null +++ b/recipes/wip/dcmtk/recipe.toml @@ -0,0 +1,14 @@ +#TODO missing script for CMake, see https://git.dcmtk.org/?p=dcmtk.git;a=blob;f=INSTALL;h=97087f9a05e65040264d90027912c736958e67f3;hb=HEAD#l667 +[source] +tar = "https://dicom.offis.de/download/dcmtk/dcmtk367/dcmtk-3.6.7.tar.gz" +[build] +template = "custom" +dependencies = [ + "libiconv", + "libicu", + "libpng", + "libxml2", + "libtiff", + "zlib", + "openjpeg", +] diff --git a/recipes/wip/emacs-pgtk/recipe.toml b/recipes/wip/emacs-pgtk/recipe.toml new file mode 100644 index 00000000..6c3d0912 --- /dev/null +++ b/recipes/wip/emacs-pgtk/recipe.toml @@ -0,0 +1,32 @@ +#TODO compilation error +[source] +tar = "https://ftp.gnu.org/gnu/emacs/emacs-29.1.tar.xz" +[build] +template = "configure" +dependencies = [ + "dbus", + "libgmp", + "libgpm", + "gnutls3", + "jansson", + "liblcms", + "sqlite3", + "libxml2", + "zlib", + "ncurses", + "cairo", + "fontconfig", + "freetype2", + "gdk-pixbuf", + "libgif", + "glib", + "gtk3", + "harfbuzz", + "libjpeg-turbo", + "pango", + "libpng", + "librsvg", + "libtiff", + "libwebp", + "libotf", +] diff --git a/recipes/wip/emacs/recipe.toml b/recipes/wip/emacs/recipe.toml index 4957776a..93030ac6 100644 --- a/recipes/wip/emacs/recipe.toml +++ b/recipes/wip/emacs/recipe.toml @@ -1,5 +1,17 @@ #TODO compilation error [source] -tar = "https://ftp.gnu.org/gnu/emacs/emacs-28.2.tar.xz" +tar = "https://ftp.gnu.org/gnu/emacs/emacs-29.1.tar.xz" [build] template = "configure" +dependencies = [ + "dbus", + "libgmp", + "libgpm", + "gnutls3", + "jansson", + "liblcms", + "sqlite3", + "libxml2", + "zlib", + "ncurses", +] diff --git a/recipes/wip/jirust/recipe.toml b/recipes/wip/jirust/recipe.toml new file mode 100644 index 00000000..02d82282 --- /dev/null +++ b/recipes/wip/jirust/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/moali87/jirust/archive/refs/tags/1.1.6.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/krita/recipe.toml b/recipes/wip/krita/recipe.toml index bbe663c0..34360573 100644 --- a/recipes/wip/krita/recipe.toml +++ b/recipes/wip/krita/recipe.toml @@ -1,5 +1,5 @@ #TODO probably wrong script, see https://docs.krita.org/en/untranslatable_pages/building_krita.html#building-on-linux -#TODO missing dependencies? +#TODO maybe missing dependencies [source] tar = "https://download.kde.org/stable/krita/5.2.1/krita-5.2.1.tar.gz" [build] @@ -18,8 +18,39 @@ dependencies = [ "libtiff", "libwebp", "qt5-base", + "qt5-svg", + "qt5-x11extras", "zlib", "libmypaint", + "boost", + "libheif", + "libjpeg-turbo", + "libjxl", + "kf5-extra-cmake-modules", + "kf5-completion", + "kf5-config", + "kf5-coreaddons", + "kf5-crash", + "kf5-guiaddons", + "kf5-i18n", + "kf5-itemviews", + "kf5-widgetaddons", + "kf5-windowsystem", + "mlt", + "opencolorio", + "openexr", + "openjpeg", + "sdl2", + "libxcb", + "libxi", + "zlib", + "libeigen", + "libgsl", + "libseexpr-kde", + "liblager", + "libunibreak", + "libxsimd", + "libxtl", ] script = """ COOKBOOK_CONFIGURE="cmake" diff --git a/recipes/wip/libde265/recipe.toml b/recipes/wip/libde265/recipe.toml new file mode 100644 index 00000000..ee50e09e --- /dev/null +++ b/recipes/wip/libde265/recipe.toml @@ -0,0 +1,12 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/strukturag/libde265/releases/download/v1.0.14/libde265-1.0.14.tar.gz" +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --disable-dec265 + --disable-sherlock265 +) +cookbook_configure +""" diff --git a/recipes/wip/libeigen/recipe.toml b/recipes/wip/libeigen/recipe.toml new file mode 100644 index 00000000..4aa38da4 --- /dev/null +++ b/recipes/wip/libeigen/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://gitlab.com/libeigen/eigen/-/blob/master/INSTALL?ref_type=heads +[source] +tar = "https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.bz2" +[build] +template = "custom" diff --git a/recipes/wip/libgc/recipe.toml b/recipes/wip/libgc/recipe.toml new file mode 100644 index 00000000..fca95b6c --- /dev/null +++ b/recipes/wip/libgc/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.hboehm.info/gc/gc_source/gc-8.2.4.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libgpm/recipe.toml b/recipes/wip/libgpm/recipe.toml new file mode 100644 index 00000000..d4f54a90 --- /dev/null +++ b/recipes/wip/libgpm/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.nico.schottelius.org/software/gpm/archives/gpm-1.20.7.tar.bz2" +[build] +template = "configure" diff --git a/recipes/wip/libgsl/recipe.toml b/recipes/wip/libgsl/recipe.toml new file mode 100644 index 00000000..49091328 --- /dev/null +++ b/recipes/wip/libgsl/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://ftp.gnu.org/gnu/gsl/gsl-2.7.1.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libheif/recipe.toml b/recipes/wip/libheif/recipe.toml new file mode 100644 index 00000000..e0239fc1 --- /dev/null +++ b/recipes/wip/libheif/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for CMake, see https://github.com/strukturag/libheif#compiling +[source] +tar = "https://github.com/strukturag/libheif/releases/download/v1.17.5/libheif-1.17.5.tar.gz" +[build] +template = "custom" +dependencies = [ + "x265", + "libde265", +] diff --git a/recipes/wip/libiconv/recipe.toml b/recipes/wip/libiconv/recipe.toml new file mode 100644 index 00000000..41cf2a78 --- /dev/null +++ b/recipes/wip/libiconv/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.17.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libimmer/recipe.toml b/recipes/wip/libimmer/recipe.toml new file mode 100644 index 00000000..655a28a9 --- /dev/null +++ b/recipes/wip/libimmer/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/arximboldi/immer#usage +[source] +tar = "https://github.com/arximboldi/immer/archive/refs/tags/v0.8.1.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/libjasper/recipe.toml b/recipes/wip/libjasper/recipe.toml new file mode 100644 index 00000000..cdbf205f --- /dev/null +++ b/recipes/wip/libjasper/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/jasper-software/jasper/blob/master/INSTALL.txt +[source] +tar = "https://github.com/jasper-software/jasper/releases/download/version-4.1.1/jasper-4.1.1.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/libkdcraw/recipe.toml b/recipes/wip/libkdcraw/recipe.toml new file mode 100644 index 00000000..575a0ba9 --- /dev/null +++ b/recipes/wip/libkdcraw/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for CMake, see https://invent.kde.org/graphics/libkdcraw/-/blob/master/README?ref_type=heads +[source] +tar = "https://invent.kde.org/graphics/libkdcraw/-/archive/v23.08.4/libkdcraw-v23.08.4.tar.bz2" +[build] +template = "custom" +dependencies = [ + "libraw", + "qt5-base", +] diff --git a/recipes/wip/liblager/recipe.toml b/recipes/wip/liblager/recipe.toml new file mode 100644 index 00000000..27ed3466 --- /dev/null +++ b/recipes/wip/liblager/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for CMake, see https://github.com/arximboldi/lager#usage +[source] +git = "https://github.com/arximboldi/lager" +[build] +template = "custom" +dependencies = [ + "libzug", + "boost", +] diff --git a/recipes/wip/libm17n/recipe.toml b/recipes/wip/libm17n/recipe.toml new file mode 100644 index 00000000..4fb2f391 --- /dev/null +++ b/recipes/wip/libm17n/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.savannah.nongnu.org/releases/m17n/m17n-lib-1.8.4.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libotf/recipe.toml b/recipes/wip/libotf/recipe.toml new file mode 100644 index 00000000..a4f7d4a6 --- /dev/null +++ b/recipes/wip/libotf/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.savannah.nongnu.org/releases/m17n/libotf-0.9.16.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libpoppler/recipe.toml b/recipes/wip/libpoppler/recipe.toml new file mode 100644 index 00000000..9d202a2c --- /dev/null +++ b/recipes/wip/libpoppler/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for CMake, see https://gitlab.freedesktop.org/poppler/poppler/-/blob/master/INSTALL?ref_type=heads +#TODO needs encoding data - https://poppler.freedesktop.org/poppler-data-0.4.12.tar.gz +[source] +tar = "https://poppler.freedesktop.org/poppler-23.12.0.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/libraw/recipe.toml b/recipes/wip/libraw/recipe.toml new file mode 100644 index 00000000..e6833966 --- /dev/null +++ b/recipes/wip/libraw/recipe.toml @@ -0,0 +1,11 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.libraw.org/data/LibRaw-0.21.1.tar.gz" +[build] +template = "configure" +dependencies = [ + "zlib", + "libjasper", + "libjpeg", + "liblcms", +] diff --git a/recipes/wip/libseexpr-kde/recipe.toml b/recipes/wip/libseexpr-kde/recipe.toml new file mode 100644 index 00000000..ff93f5f4 --- /dev/null +++ b/recipes/wip/libseexpr-kde/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for CMake, see https://invent.kde.org/graphics/kseexpr#super-impatient-cmake-building-and-installing-guide +[source] +tar = "https://invent.kde.org/graphics/kseexpr/-/archive/v4.0.4.0/kseexpr-v4.0.4.0.tar.bz2" +[build] +template = "custom" +dependencies = [ + "qt5-base", +] diff --git a/recipes/wip/libunibreak/recipe.toml b/recipes/wip/libunibreak/recipe.toml new file mode 100644 index 00000000..4f57c82d --- /dev/null +++ b/recipes/wip/libunibreak/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/adah1972/libunibreak/releases/download/libunibreak_5_1/libunibreak-5.1.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libxsimd/recipe.toml b/recipes/wip/libxsimd/recipe.toml new file mode 100644 index 00000000..a0f50efe --- /dev/null +++ b/recipes/wip/libxsimd/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/xtensor-stack/xsimd#install-from-sources +[source] +tar = "https://github.com/xtensor-stack/xsimd/archive/refs/tags/12.1.0.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/libxtl/recipe.toml b/recipes/wip/libxtl/recipe.toml new file mode 100644 index 00000000..8759e32b --- /dev/null +++ b/recipes/wip/libxtl/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/xtensor-stack/xtl#install-from-sources +[source] +tar = "https://github.com/xtensor-stack/xtl/archive/refs/tags/0.7.5.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/libzug/recipe.toml b/recipes/wip/libzug/recipe.toml new file mode 100644 index 00000000..3e0a7646 --- /dev/null +++ b/recipes/wip/libzug/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for CMake, see https://github.com/arximboldi/zug#usage +[source] +git = "https://github.com/arximboldi/zug" +[build] +template = "custom" +dependencies = [ + "boost", +] diff --git a/recipes/wip/opencolorio/recipe.toml b/recipes/wip/opencolorio/recipe.toml new file mode 100644 index 00000000..b79bb0f0 --- /dev/null +++ b/recipes/wip/opencolorio/recipe.toml @@ -0,0 +1,11 @@ +#TODO missing dependencies, see https://opencolorio.readthedocs.io/en/latest/quick_start/installation.html#dependencies +#TODO missing script for CMake, see https://opencolorio.readthedocs.io/en/latest/quick_start/installation.html +[source] +tar = "https://github.com/AcademySoftwareFoundation/OpenColorIO/archive/refs/tags/v2.3.1.tar.gz" +[build] +template = "custom" +dependencies = [ + "expat", + "imath", + "zlib", +] diff --git a/recipes/wip/openimageio/recipe.toml b/recipes/wip/openimageio/recipe.toml index 14660582..22f7041d 100644 --- a/recipes/wip/openimageio/recipe.toml +++ b/recipes/wip/openimageio/recipe.toml @@ -6,7 +6,7 @@ template = "custom" dependencies = [ "boost", "libtiff", - "libjpeg", + "libjpeg-turbo", "libpng", "openexr", "libfmt", @@ -14,4 +14,10 @@ dependencies = [ "ffmpeg6", "libwebp", "freetype2", + "libraw", + "openjpeg", + "tbb", + "libgif", + "libheif", + "libwebp", ] diff --git a/recipes/wip/openjpeg/recipe.toml b/recipes/wip/openjpeg/recipe.toml new file mode 100644 index 00000000..e1fe2624 --- /dev/null +++ b/recipes/wip/openjpeg/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/uclouvain/openjpeg/blob/master/INSTALL.md +[source] +tar = "https://github.com/uclouvain/openjpeg/archive/refs/tags/v2.5.0.tar.gz" +[build] +template = "custom" From 0499c88b246032f2c128509df5602e13e542aa1f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 10 Dec 2023 21:40:45 +0000 Subject: [PATCH 1179/3180] Update recipes --- recipes/wip/{atk2mm => atkmm}/recipe.toml | 3 +++ recipes/wip/colm/recipe.toml | 5 ++++ recipes/wip/inkscape/recipe.toml | 28 +++++++++++++++++--- recipes/wip/kodi/recipe.toml | 5 ++-- recipes/wip/lib2geom/recipe.toml | 11 ++++++++ recipes/wip/libcdio-paranoia/recipe.toml | 9 +++++++ recipes/wip/libcdio/recipe.toml | 9 +++++++ recipes/wip/libcdr/recipe.toml | 12 +++++++++ recipes/wip/libdouble-conversion/recipe.toml | 5 ++++ recipes/wip/libpugixml/recipe.toml | 5 ++++ recipes/wip/libqrcodegenc/recipe.toml | 5 ++++ recipes/wip/librevenge/recipe.toml | 9 +++++++ recipes/wip/librist/recipe.toml | 5 ++++ recipes/wip/libsrt/recipe.toml | 8 ++++++ recipes/wip/libvisio/recipe.toml | 11 ++++++++ recipes/wip/libwebsocket++/recipe.toml | 9 +++++++ recipes/wip/libwpd/recipe.toml | 10 +++++++ recipes/wip/obs-studio/recipe.toml | 21 +++++++++++++-- recipes/wip/potrace/recipe.toml | 5 ++++ recipes/wip/ragel/recipe.toml | 14 ++++++++++ recipes/wip/swig/recipe.toml | 8 ++++++ recipes/wip/waylandpp/recipe.toml | 5 ++++ 22 files changed, 195 insertions(+), 7 deletions(-) rename recipes/wip/{atk2mm => atkmm}/recipe.toml (85%) create mode 100644 recipes/wip/colm/recipe.toml create mode 100644 recipes/wip/lib2geom/recipe.toml create mode 100644 recipes/wip/libcdio-paranoia/recipe.toml create mode 100644 recipes/wip/libcdio/recipe.toml create mode 100644 recipes/wip/libcdr/recipe.toml create mode 100644 recipes/wip/libdouble-conversion/recipe.toml create mode 100644 recipes/wip/libpugixml/recipe.toml create mode 100644 recipes/wip/libqrcodegenc/recipe.toml create mode 100644 recipes/wip/librevenge/recipe.toml create mode 100644 recipes/wip/librist/recipe.toml create mode 100644 recipes/wip/libsrt/recipe.toml create mode 100644 recipes/wip/libvisio/recipe.toml create mode 100644 recipes/wip/libwebsocket++/recipe.toml create mode 100644 recipes/wip/libwpd/recipe.toml create mode 100644 recipes/wip/potrace/recipe.toml create mode 100644 recipes/wip/ragel/recipe.toml create mode 100644 recipes/wip/swig/recipe.toml create mode 100644 recipes/wip/waylandpp/recipe.toml diff --git a/recipes/wip/atk2mm/recipe.toml b/recipes/wip/atkmm/recipe.toml similarity index 85% rename from recipes/wip/atk2mm/recipe.toml rename to recipes/wip/atkmm/recipe.toml index 385b0827..de5a7a34 100644 --- a/recipes/wip/atk2mm/recipe.toml +++ b/recipes/wip/atkmm/recipe.toml @@ -3,3 +3,6 @@ tar = "https://download.gnome.org/sources/atkmm/2.36/atkmm-2.36.2.tar.xz" [build] template = "configure" +dependencies = [ + "atk", +] diff --git a/recipes/wip/colm/recipe.toml b/recipes/wip/colm/recipe.toml new file mode 100644 index 00000000..23e6acaf --- /dev/null +++ b/recipes/wip/colm/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.colm.net/files/colm/colm-0.14.7.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/inkscape/recipe.toml b/recipes/wip/inkscape/recipe.toml index 1beea316..0f0860db 100644 --- a/recipes/wip/inkscape/recipe.toml +++ b/recipes/wip/inkscape/recipe.toml @@ -7,15 +7,37 @@ template = "custom" dependencies = [ "boost", "glib", + "glibmm", "gtk3", "gtk3mm", - "liblcms", + "gdk-pixbuf", + "cairo", + "cairomm", "pango", - "libpng", + "pangomm", "readline", + "fontconfig", + "freetype2", + "imagemagick", + "potrace", + "zlib", + "lib2geom", + "atkmm", + "harfbuzz", + "libsoup", + "libsigc++", + "librsvg", + "librevenge", + "libwpd", + "libpng", + "libvisio", "libxml2", "libxslt", - "zlib", + "libcdr", + "libgsl", + "libgspell-gtk3", + "libjpeg-turbo", + "liblcms", ] script = """ COOKBOOK_CONFIGURE="cmake" diff --git a/recipes/wip/kodi/recipe.toml b/recipes/wip/kodi/recipe.toml index 3ae69123..5b9d7217 100644 --- a/recipes/wip/kodi/recipe.toml +++ b/recipes/wip/kodi/recipe.toml @@ -1,5 +1,5 @@ #TODO probably wrong script, see https://github.com/xbmc/xbmc/blob/master/docs/README.Linux.md#4-build-kodi -#TODO missing dependencies, see: https://github.com/xbmc/xbmc/blob/master/docs/README.Linux.md#3-install-the-required-packages +#TODO maybe missing dependencies, see https://archlinux.org/packages/extra/x86_64/kodi/ [source] tar = "https://github.com/xbmc/xbmc/archive/refs/tags/20.2-Nexus.tar.gz" [build] @@ -20,7 +20,7 @@ dependencies = [ "libgif", "glew", "gnutls3", - "mesa_glu", + "mesa-glu", "libgpg-error", "libjpeg", "libogg", @@ -36,6 +36,7 @@ dependencies = [ "libxkbcommon", "libuuid", "libxslt", + "pipewire", ] script = """ COOKBOOK_CONFIGURE="cmake" diff --git a/recipes/wip/lib2geom/recipe.toml b/recipes/wip/lib2geom/recipe.toml new file mode 100644 index 00000000..175db20f --- /dev/null +++ b/recipes/wip/lib2geom/recipe.toml @@ -0,0 +1,11 @@ +#TODO missing script for CMake, see https://gitlab.com/inkscape/lib2geom#building +[source] +tar = "https://gitlab.com/inkscape/lib2geom/-/archive/1.3/lib2geom-1.3.tar.bz2" +[build] +template = "custom" +dependencies = [ + "boost", + "libgsl", + "glib", + "cairo", +] diff --git a/recipes/wip/libcdio-paranoia/recipe.toml b/recipes/wip/libcdio-paranoia/recipe.toml new file mode 100644 index 00000000..c7e9e704 --- /dev/null +++ b/recipes/wip/libcdio-paranoia/recipe.toml @@ -0,0 +1,9 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/rocky/libcdio-paranoia/archive/refs/tags/release-10.2+2.0.1.tar.gz" +[build] +template = "custom" +script = """ +./autogen.sh +cookbook_configure +""" diff --git a/recipes/wip/libcdio/recipe.toml b/recipes/wip/libcdio/recipe.toml new file mode 100644 index 00000000..8af18503 --- /dev/null +++ b/recipes/wip/libcdio/recipe.toml @@ -0,0 +1,9 @@ +#TODO probably wrong script, see https://git.savannah.gnu.org/cgit/libcdio.git/tree/INSTALL +[source] +tar = "https://git.savannah.gnu.org/cgit/libcdio.git/snapshot/libcdio-release-2.1.0.tar.gz" +[build] +template = "custom" +script = """ +./autogen.sh +cookbook_configure +""" diff --git a/recipes/wip/libcdr/recipe.toml b/recipes/wip/libcdr/recipe.toml new file mode 100644 index 00000000..ae73948e --- /dev/null +++ b/recipes/wip/libcdr/recipe.toml @@ -0,0 +1,12 @@ +#TODO Not compiled or tested +[source] +tar = "https://dev-www.libreoffice.org/src/libcdr/libcdr-0.1.7.tar.xz" +[build] +template = "configure" +dependencies = [ + "boost", + "libicu", + "liblcms", + "librevenge", + "zlib", +] diff --git a/recipes/wip/libdouble-conversion/recipe.toml b/recipes/wip/libdouble-conversion/recipe.toml new file mode 100644 index 00000000..25abf63a --- /dev/null +++ b/recipes/wip/libdouble-conversion/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for building, see https://github.com/google/double-conversion#building +[source] +tar = "https://github.com/google/double-conversion/archive/refs/tags/v3.3.0.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/libpugixml/recipe.toml b/recipes/wip/libpugixml/recipe.toml new file mode 100644 index 00000000..50d08d8e --- /dev/null +++ b/recipes/wip/libpugixml/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for building, see https://pugixml.org/docs/quickstart.html#install +[source] +tar = "https://github.com/zeux/pugixml/releases/download/v1.14/pugixml-1.14.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/libqrcodegenc/recipe.toml b/recipes/wip/libqrcodegenc/recipe.toml new file mode 100644 index 00000000..6a540dad --- /dev/null +++ b/recipes/wip/libqrcodegenc/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script to build the C implementation, see https://github.com/nayuki/QR-Code-generator/tree/master/c +[source] +tar = "https://github.com/nayuki/QR-Code-generator/archive/refs/tags/v1.8.0.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/librevenge/recipe.toml b/recipes/wip/librevenge/recipe.toml new file mode 100644 index 00000000..d5b797e9 --- /dev/null +++ b/recipes/wip/librevenge/recipe.toml @@ -0,0 +1,9 @@ +#TODO Not compiled or tested +[source] +tar = "https://sourceforge.net/projects/libwpd/files/librevenge/librevenge-0.0.5/librevenge-0.0.5.tar.xz/download" +[build] +template = "configure" +dependencies = [ + "boost", + "zlib", +] diff --git a/recipes/wip/librist/recipe.toml b/recipes/wip/librist/recipe.toml new file mode 100644 index 00000000..eba735f2 --- /dev/null +++ b/recipes/wip/librist/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for Meson, see https://code.videolan.org/rist/librist#compile-using-mesonninja-linux-osx-and-windows-mingw +[source] +tar = "https://code.videolan.org/rist/librist/-/archive/v0.2.10/librist-v0.2.10.tar.bz2" +[build] +template = "custom" diff --git a/recipes/wip/libsrt/recipe.toml b/recipes/wip/libsrt/recipe.toml new file mode 100644 index 00000000..1f874220 --- /dev/null +++ b/recipes/wip/libsrt/recipe.toml @@ -0,0 +1,8 @@ +#TODO probably wrong template, see https://github.com/Haivision/srt/blob/master/docs/build/build-linux.md +[source] +tar = "https://github.com/Haivision/srt/archive/refs/tags/v1.5.3.tar.gz" +[build] +template = "configure" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/libvisio/recipe.toml b/recipes/wip/libvisio/recipe.toml new file mode 100644 index 00000000..635cdb24 --- /dev/null +++ b/recipes/wip/libvisio/recipe.toml @@ -0,0 +1,11 @@ +#TODO Not compiled or tested +[source] +tar = "https://dev-www.libreoffice.org/src/libvisio/libvisio-0.1.7.tar.xz" +[build] +template = "configure" +dependencies = [ + "boost", + "libicu", + "librevenge", + "libxml2", +] diff --git a/recipes/wip/libwebsocket++/recipe.toml b/recipes/wip/libwebsocket++/recipe.toml new file mode 100644 index 00000000..5c8de272 --- /dev/null +++ b/recipes/wip/libwebsocket++/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for installation, lacking build instructions +[source] +tar = "https://github.com/zaphoyd/websocketpp/archive/refs/tags/0.8.2.tar.gz" +[build] +template = "custom" +dependencies = [ + "openssl1", + "zlib", +] diff --git a/recipes/wip/libwpd/recipe.toml b/recipes/wip/libwpd/recipe.toml new file mode 100644 index 00000000..6b3679bd --- /dev/null +++ b/recipes/wip/libwpd/recipe.toml @@ -0,0 +1,10 @@ +#TODO Not compiled or tested +[source] +tar = "https://sourceforge.net/projects/libwpd/files/libwpd/libwpd-0.10.3/libwpd-0.10.3.tar.xz/download" +[build] +template = "configure" +dependencies = [ + "boost", + "librevenge", + "zlib", +] diff --git a/recipes/wip/obs-studio/recipe.toml b/recipes/wip/obs-studio/recipe.toml index 7e5f7b2b..a5ebbae3 100644 --- a/recipes/wip/obs-studio/recipe.toml +++ b/recipes/wip/obs-studio/recipe.toml @@ -1,10 +1,19 @@ #TODO missing script for CMake, see https://github.com/obsproject/obs-studio/wiki/Building-OBS-Studio -#TODO determine dependencies +#TODO maybe missing dependencies [source] -tar = "https://github.com/obsproject/obs-studio/archive/refs/tags/30.0.0.tar.gz" +tar = "https://github.com/obsproject/obs-studio/archive/refs/tags/30.0.1.tar.gz" [build] template = "custom" dependencies = [ + "boost", + "librsvg", + "dbus", + "fontconfig", + "freetype2", + "jansson", + "pipewire", + "mesa", + "speexdsp", "ffmpeg6", "x264", "curl", @@ -12,4 +21,12 @@ dependencies = [ "libwayland", "libva", "qt5-base", + "qt5-svg", + "qt5-x11extras", + "eudev", + "pciutils", + "libqrcodegenc", + "librist", + "libsrt", + "libwebsocket++", ] diff --git a/recipes/wip/potrace/recipe.toml b/recipes/wip/potrace/recipe.toml new file mode 100644 index 00000000..8a3d20ad --- /dev/null +++ b/recipes/wip/potrace/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://potrace.sourceforge.net/download/1.16/potrace-1.16.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/ragel/recipe.toml b/recipes/wip/ragel/recipe.toml new file mode 100644 index 00000000..c4061a20 --- /dev/null +++ b/recipes/wip/ragel/recipe.toml @@ -0,0 +1,14 @@ +#TODO missing colm directory on the GNU Autotools flag +[source] +tar = "https://www.colm.net/files/ragel/ragel-6.10.tar.gz" +[build] +template = "custom" +dependencies = [ + "colm", +] +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --with-colm= +) +cookbook_configure +""" diff --git a/recipes/wip/swig/recipe.toml b/recipes/wip/swig/recipe.toml new file mode 100644 index 00000000..a69754a1 --- /dev/null +++ b/recipes/wip/swig/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +tar = "http://prdownloads.sourceforge.net/swig/swig-4.1.1.tar.gz" +[build] +template = "configure" +dependencies = [ + "pcre", +] diff --git a/recipes/wip/waylandpp/recipe.toml b/recipes/wip/waylandpp/recipe.toml new file mode 100644 index 00000000..779130b8 --- /dev/null +++ b/recipes/wip/waylandpp/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/NilsBrause/waylandpp#building +[source] +tar = "https://github.com/NilsBrause/waylandpp/archive/refs/tags/1.0.0.tar.gz" +[build] +template = "custom" From 67b9d9c6367e362d955490b687aab19eea65b8f9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 10 Dec 2023 21:56:22 +0000 Subject: [PATCH 1180/3180] Add a recipe --- recipes/wip/novops/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/wip/novops/recipe.toml diff --git a/recipes/wip/novops/recipe.toml b/recipes/wip/novops/recipe.toml new file mode 100644 index 00000000..259af756 --- /dev/null +++ b/recipes/wip/novops/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for "make", see https://pierrebeucher.github.io/novops/install.html#from-source +[source] +tar = "https://github.com/PierreBeucher/novops/archive/refs/tags/v0.9.0.tar.gz" +[build] +template = "custom" From 7f926bf64d56d3f6caa4c6a394bffd0e4d24eaea Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 11 Dec 2023 16:10:06 +0000 Subject: [PATCH 1181/3180] Add partial ABI separation on recipe dependencies and improve names --- recipes/backends/cairo/recipe.sh | 2 +- recipes/backends/pango/recipe.sh | 2 +- .../backends/{sdl_gfx => sdl-gfx}/01_redox.patch | 0 recipes/backends/{sdl_gfx => sdl-gfx}/recipe.sh | 2 +- .../{sdl_image => sdl1-image}/01_redox.patch | 0 .../backends/{sdl_image => sdl1-image}/recipe.sh | 2 +- .../backends/{sdl_mixer => sdl1-mixer}/recipe.sh | 2 +- .../backends/{sdl_mixer => sdl1-mixer}/redox.patch | 0 .../backends/{sdl_ttf => sdl1-ttf}/01_redox.patch | 0 recipes/backends/{sdl_ttf => sdl1-ttf}/recipe.sh | 2 +- recipes/backends/{sdl => sdl1}/recipe.toml | 0 .../backends/{sdl2_image => sdl2-image}/recipe.toml | 0 .../backends/{sdl2_mixer => sdl2-mixer}/recipe.toml | 0 .../backends/{sdl2_mixer => sdl2-mixer}/redox.patch | 0 recipes/backends/{sdl2_ttf => sdl2-ttf}/recipe.sh | 2 +- recipes/backends/webrender/recipe.sh | 2 +- recipes/demos/cairodemo/recipe.sh | 2 +- recipes/demos/gears/recipe.sh | 2 +- recipes/demos/osdemo/recipe.sh | 2 +- recipes/demos/rust-cairo-demo/recipe.sh | 2 +- .../{sdl2_gears => sdl2-gears}/assets/font.ttf | Bin .../{sdl2_gears => sdl2-gears}/assets/image.png | Bin .../{sdl2_gears => sdl2-gears}/assets/music.wav | Bin recipes/demos/{sdl2_gears => sdl2-gears}/gears.c | 0 recipes/demos/{sdl2_gears => sdl2-gears}/recipe.sh | 2 +- recipes/{development => dev}/autoconf/recipe.toml | 0 recipes/{development => dev}/automake/recipe.toml | 0 recipes/{development => dev}/cargo/recipe.toml | 2 +- recipes/{development => dev}/cmake/recipe.toml | 2 +- .../crates-io-index/recipe.toml | 0 recipes/{development => dev}/fal/recipe.sh | 0 recipes/{development => dev}/fontconfig/recipe.toml | 2 +- recipes/{development => dev}/fontconfig/redox.patch | 0 recipes/{development => dev}/gawk/recipe.sh | 0 recipes/{development/gcc => dev/gcc13}/recipe.sh | 0 recipes/{development => dev}/gdbserver/recipe.toml | 0 recipes/{development => dev}/gdk-pixbuf/recipe.sh | 0 recipes/{development => dev}/gnu-make/make.patch | 0 recipes/{development => dev}/gnu-make/recipe.sh | 0 recipes/{development => dev}/lci/recipe.sh | 0 recipes/{development => dev}/llvm/native.cmake | 0 recipes/{development => dev}/llvm/recipe.toml | 0 recipes/{development/lua => dev/lua54}/recipe.toml | 0 recipes/{development => dev}/nasm/recipe.toml | 0 .../{development => dev}/patch/01-no-rlimit.patch | 0 .../{development => dev}/patch/02-no-chown.patch | 0 recipes/{development => dev}/patch/recipe.sh | 0 recipes/{development => dev}/pciids/recipe.toml | 0 recipes/{development/perl => dev/perl5}/perl.patch | 0 recipes/{development/perl => dev/perl5}/recipe.sh | 0 recipes/{development => dev}/pkg-config/recipe.toml | 0 recipes/{development => dev}/pkgar/recipe.toml | 0 .../python => dev/python37}/config.site | 0 .../{development/python => dev/python37}/recipe.sh | 2 +- .../python => dev/python37}/redox.patch | 0 recipes/{development => dev}/redoxerd/recipe.toml | 0 recipes/{development => dev}/rust/.gitignore | 0 recipes/{development => dev}/rust/config.toml | 0 recipes/{development => dev}/rust/recipe.sh | 2 +- recipes/{development => dev}/rustpython/recipe.toml | 5 ++++- recipes/{development => dev}/strace/recipe.toml | 0 recipes/{documentation => doc}/book/recipe.toml | 0 recipes/emulators/dosbox/recipe.sh | 2 +- recipes/emulators/flycast/recipe.toml | 2 +- recipes/emulators/mgba/recipe.sh | 2 +- recipes/emulators/qemu/recipe.sh | 2 +- recipes/emulators/retroarch/recipe.toml | 2 +- recipes/emulators/scummvm/recipe.sh | 2 +- recipes/emulators/vice/recipe.sh | 2 +- recipes/examples/rust-cairo/recipe.sh | 2 +- recipes/games/devilutionx/recipe.toml | 2 +- recipes/games/eduke32/recipe.sh | 2 +- recipes/games/freeciv/recipe.sh | 2 +- recipes/games/gigalomania/recipe.sh | 2 +- recipes/games/neverball/recipe.sh | 2 +- recipes/games/openjazz/recipe.sh | 2 +- recipes/games/openttd/recipe.sh | 2 +- recipes/games/prboom/recipe.sh | 2 +- recipes/games/sopwith/recipe.sh | 2 +- recipes/games/spacecadetpinball/recipe.toml | 2 +- recipes/games/syobonaction/recipe.sh | 2 +- recipes/games/vvvvvv/recipe.sh | 2 +- recipes/games/wesnoth/recipe.sh | 6 +++--- recipes/{libraries => libs}/duktape/recipe.sh | 0 recipes/{libraries => libs}/duktape/redox.patch | 0 recipes/{libraries => libs}/expat/recipe.toml | 0 .../ffmpeg => libs/ffmpeg6}/binutils-2.41.patch | 0 .../{libraries/ffmpeg => libs/ffmpeg6}/ffmpeg.patch | 0 .../{libraries/ffmpeg => libs/ffmpeg6}/recipe.toml | 0 recipes/{libraries => libs}/freeglut/recipe.sh | 2 +- .../freeglut/redox_cross_toolchain.cmake | 0 .../freetype => libs/freetype2}/recipe.toml | 0 recipes/{libraries => libs}/fribidi/recipe.sh | 0 recipes/{libraries => libs}/glib/recipe.toml | 0 recipes/{libraries => libs}/glib/redox.patch | 0 recipes/{libraries => libs}/gstreamer/recipe.sh | 0 recipes/{libraries => libs}/gstreamer/redox.patch | 0 recipes/{libraries => libs}/harfbuzz/recipe.toml | 2 +- recipes/{libraries => libs}/jansson/jansson.patch | 0 recipes/{libraries => libs}/jansson/recipe.sh | 0 recipes/{libraries => libs}/libcosmic/recipe.toml | 0 recipes/{libraries => libs}/libffi/recipe.toml | 0 recipes/{libraries => libs}/libffi/redox.patch | 0 recipes/{libraries => libs}/libflac/recipe.toml | 0 recipes/{libraries => libs}/libgmp/recipe.toml | 0 recipes/{libraries => libs}/libiconv/01_redox.patch | 0 recipes/{libraries => libs}/libiconv/recipe.toml | 0 recipes/{libraries => libs}/libjpeg/recipe.toml | 0 recipes/{libraries => libs}/libmpfr/recipe.toml | 0 recipes/{libraries => libs}/libogg/recipe.toml | 0 recipes/{libraries => libs}/libogg/redox.patch | 0 recipes/{libraries => libs}/liborbital/recipe.toml | 0 recipes/{libraries => libs}/libpng/recipe.toml | 0 recipes/{libraries => libs}/libsodium/random.patch | 0 recipes/{libraries => libs}/libsodium/recipe.toml | 0 recipes/{libraries => libs}/libssh2/recipe.toml | 2 +- recipes/{libraries => libs}/libvorbis/recipe.toml | 0 recipes/{libraries => libs}/libxml2/recipe.toml | 0 .../{libraries/mesa_glu => libs/mesa-glu}/recipe.sh | 0 recipes/{libraries => libs}/mesa/recipe.toml | 0 recipes/{tui => libs}/ncurses/recipe.toml | 0 recipes/{tui => libs}/ncursesw/01-config-sub.patch | 0 recipes/{tui => libs}/ncursesw/recipe.sh | 0 .../openssl => libs/openssl1}/recipe.toml | 0 recipes/{libraries => libs}/pcre/recipe.toml | 0 recipes/{libraries => libs}/pcre/redox.patch | 0 recipes/{libraries => libs}/pixman/recipe.sh | 0 recipes/{libraries => libs}/pixman/redox.patch | 0 recipes/{libraries => libs}/readline/recipe.toml | 0 recipes/{libraries => libs}/readline/redox.patch | 0 recipes/{libraries => libs}/redox-fatfs/recipe.toml | 0 recipes/{libraries => libs}/zlib/recipe.toml | 0 recipes/{network => net}/netsurf/01_redox.patch | 0 recipes/{network => net}/netsurf/manifest | 0 recipes/{network => net}/netsurf/recipe.sh | 2 +- recipes/{network => net}/nghttp2/recipe.toml | 0 recipes/shells/nushell/recipe.toml | 2 +- recipes/toolkits/servo/recipe.sh | 2 +- recipes/tools/curl/recipe.toml | 2 +- recipes/tools/git/recipe.sh | 2 +- recipes/tools/gitoxide/recipe.toml | 2 +- recipes/tools/miniserve/recipe.sh | 2 +- recipes/tools/schismtracker/recipe.sh | 2 +- recipes/tools/ssh/recipe.sh | 2 +- recipes/video/sdl-player/recipe.sh | 2 +- 145 files changed, 58 insertions(+), 55 deletions(-) rename recipes/backends/{sdl_gfx => sdl-gfx}/01_redox.patch (100%) rename recipes/backends/{sdl_gfx => sdl-gfx}/recipe.sh (93%) rename recipes/backends/{sdl_image => sdl1-image}/01_redox.patch (100%) rename recipes/backends/{sdl_image => sdl1-image}/recipe.sh (91%) rename recipes/backends/{sdl_mixer => sdl1-mixer}/recipe.sh (94%) rename recipes/backends/{sdl_mixer => sdl1-mixer}/redox.patch (100%) rename recipes/backends/{sdl_ttf => sdl1-ttf}/01_redox.patch (100%) rename recipes/backends/{sdl_ttf => sdl1-ttf}/recipe.sh (92%) rename recipes/backends/{sdl => sdl1}/recipe.toml (100%) rename recipes/backends/{sdl2_image => sdl2-image}/recipe.toml (100%) rename recipes/backends/{sdl2_mixer => sdl2-mixer}/recipe.toml (100%) rename recipes/backends/{sdl2_mixer => sdl2-mixer}/redox.patch (100%) rename recipes/backends/{sdl2_ttf => sdl2-ttf}/recipe.sh (92%) rename recipes/demos/{sdl2_gears => sdl2-gears}/assets/font.ttf (100%) rename recipes/demos/{sdl2_gears => sdl2-gears}/assets/image.png (100%) rename recipes/demos/{sdl2_gears => sdl2-gears}/assets/music.wav (100%) rename recipes/demos/{sdl2_gears => sdl2-gears}/gears.c (100%) rename recipes/demos/{sdl2_gears => sdl2-gears}/recipe.sh (89%) rename recipes/{development => dev}/autoconf/recipe.toml (100%) rename recipes/{development => dev}/automake/recipe.toml (100%) rename recipes/{development => dev}/cargo/recipe.toml (97%) rename recipes/{development => dev}/cmake/recipe.toml (96%) rename recipes/{development => dev}/crates-io-index/recipe.toml (100%) rename recipes/{development => dev}/fal/recipe.sh (100%) rename recipes/{development => dev}/fontconfig/recipe.toml (97%) mode change 100755 => 100644 rename recipes/{development => dev}/fontconfig/redox.patch (100%) rename recipes/{development => dev}/gawk/recipe.sh (100%) rename recipes/{development/gcc => dev/gcc13}/recipe.sh (100%) rename recipes/{development => dev}/gdbserver/recipe.toml (100%) rename recipes/{development => dev}/gdk-pixbuf/recipe.sh (100%) mode change 100755 => 100644 rename recipes/{development => dev}/gnu-make/make.patch (100%) rename recipes/{development => dev}/gnu-make/recipe.sh (100%) rename recipes/{development => dev}/lci/recipe.sh (100%) rename recipes/{development => dev}/llvm/native.cmake (100%) rename recipes/{development => dev}/llvm/recipe.toml (100%) rename recipes/{development/lua => dev/lua54}/recipe.toml (100%) rename recipes/{development => dev}/nasm/recipe.toml (100%) rename recipes/{development => dev}/patch/01-no-rlimit.patch (100%) rename recipes/{development => dev}/patch/02-no-chown.patch (100%) rename recipes/{development => dev}/patch/recipe.sh (100%) rename recipes/{development => dev}/pciids/recipe.toml (100%) rename recipes/{development/perl => dev/perl5}/perl.patch (100%) rename recipes/{development/perl => dev/perl5}/recipe.sh (100%) rename recipes/{development => dev}/pkg-config/recipe.toml (100%) mode change 100755 => 100644 rename recipes/{development => dev}/pkgar/recipe.toml (100%) rename recipes/{development/python => dev/python37}/config.site (100%) rename recipes/{development/python => dev/python37}/recipe.sh (97%) rename recipes/{development/python => dev/python37}/redox.patch (100%) rename recipes/{development => dev}/redoxerd/recipe.toml (100%) rename recipes/{development => dev}/rust/.gitignore (100%) rename recipes/{development => dev}/rust/config.toml (100%) rename recipes/{development => dev}/rust/recipe.sh (96%) rename recipes/{development => dev}/rustpython/recipe.toml (92%) rename recipes/{development => dev}/strace/recipe.toml (100%) rename recipes/{documentation => doc}/book/recipe.toml (100%) rename recipes/{libraries => libs}/duktape/recipe.sh (100%) rename recipes/{libraries => libs}/duktape/redox.patch (100%) rename recipes/{libraries => libs}/expat/recipe.toml (100%) rename recipes/{libraries/ffmpeg => libs/ffmpeg6}/binutils-2.41.patch (100%) rename recipes/{libraries/ffmpeg => libs/ffmpeg6}/ffmpeg.patch (100%) rename recipes/{libraries/ffmpeg => libs/ffmpeg6}/recipe.toml (100%) rename recipes/{libraries => libs}/freeglut/recipe.sh (96%) rename recipes/{libraries => libs}/freeglut/redox_cross_toolchain.cmake (100%) rename recipes/{libraries/freetype => libs/freetype2}/recipe.toml (100%) rename recipes/{libraries => libs}/fribidi/recipe.sh (100%) mode change 100755 => 100644 rename recipes/{libraries => libs}/glib/recipe.toml (100%) rename recipes/{libraries => libs}/glib/redox.patch (100%) rename recipes/{libraries => libs}/gstreamer/recipe.sh (100%) rename recipes/{libraries => libs}/gstreamer/redox.patch (100%) rename recipes/{libraries => libs}/harfbuzz/recipe.toml (97%) rename recipes/{libraries => libs}/jansson/jansson.patch (100%) rename recipes/{libraries => libs}/jansson/recipe.sh (100%) rename recipes/{libraries => libs}/libcosmic/recipe.toml (100%) rename recipes/{libraries => libs}/libffi/recipe.toml (100%) rename recipes/{libraries => libs}/libffi/redox.patch (100%) rename recipes/{libraries => libs}/libflac/recipe.toml (100%) rename recipes/{libraries => libs}/libgmp/recipe.toml (100%) rename recipes/{libraries => libs}/libiconv/01_redox.patch (100%) rename recipes/{libraries => libs}/libiconv/recipe.toml (100%) rename recipes/{libraries => libs}/libjpeg/recipe.toml (100%) rename recipes/{libraries => libs}/libmpfr/recipe.toml (100%) rename recipes/{libraries => libs}/libogg/recipe.toml (100%) rename recipes/{libraries => libs}/libogg/redox.patch (100%) rename recipes/{libraries => libs}/liborbital/recipe.toml (100%) rename recipes/{libraries => libs}/libpng/recipe.toml (100%) rename recipes/{libraries => libs}/libsodium/random.patch (100%) rename recipes/{libraries => libs}/libsodium/recipe.toml (100%) rename recipes/{libraries => libs}/libssh2/recipe.toml (95%) rename recipes/{libraries => libs}/libvorbis/recipe.toml (100%) rename recipes/{libraries => libs}/libxml2/recipe.toml (100%) rename recipes/{libraries/mesa_glu => libs/mesa-glu}/recipe.sh (100%) rename recipes/{libraries => libs}/mesa/recipe.toml (100%) rename recipes/{tui => libs}/ncurses/recipe.toml (100%) rename recipes/{tui => libs}/ncursesw/01-config-sub.patch (100%) rename recipes/{tui => libs}/ncursesw/recipe.sh (100%) rename recipes/{libraries/openssl => libs/openssl1}/recipe.toml (100%) rename recipes/{libraries => libs}/pcre/recipe.toml (100%) rename recipes/{libraries => libs}/pcre/redox.patch (100%) rename recipes/{libraries => libs}/pixman/recipe.sh (100%) mode change 100755 => 100644 rename recipes/{libraries => libs}/pixman/redox.patch (100%) rename recipes/{libraries => libs}/readline/recipe.toml (100%) rename recipes/{libraries => libs}/readline/redox.patch (100%) rename recipes/{libraries => libs}/redox-fatfs/recipe.toml (100%) rename recipes/{libraries => libs}/zlib/recipe.toml (100%) rename recipes/{network => net}/netsurf/01_redox.patch (100%) rename recipes/{network => net}/netsurf/manifest (100%) rename recipes/{network => net}/netsurf/recipe.sh (89%) rename recipes/{network => net}/nghttp2/recipe.toml (100%) diff --git a/recipes/backends/cairo/recipe.sh b/recipes/backends/cairo/recipe.sh index 3c8e5363..9116f701 100755 --- a/recipes/backends/cairo/recipe.sh +++ b/recipes/backends/cairo/recipe.sh @@ -1,6 +1,6 @@ VERSION="1.16.0" TAR=https://www.cairographics.org/releases/cairo-$VERSION.tar.xz -BUILD_DEPENDS=(expat freetype fontconfig libpng pixman zlib) +BUILD_DEPENDS=(expat freetype2 fontconfig libpng pixman zlib) function recipe_version { echo "$VERSION" diff --git a/recipes/backends/pango/recipe.sh b/recipes/backends/pango/recipe.sh index c03bbd07..a76a68af 100755 --- a/recipes/backends/pango/recipe.sh +++ b/recipes/backends/pango/recipe.sh @@ -1,6 +1,6 @@ VERSION="1.42.4" TAR="ftp.gnome.org/pub/GNOME/sources/pango/${VERSION%.*}/pango-${VERSION}.tar.xz" -BUILD_DEPENDS=(cairo expat fontconfig freetype fribidi gettext glib harfbuzz libffi libiconv libpng pcre pixman zlib) +BUILD_DEPENDS=(cairo expat fontconfig freetype2 fribidi gettext glib harfbuzz libffi libiconv libpng pcre pixman zlib) function recipe_version { echo "$VERSION" diff --git a/recipes/backends/sdl_gfx/01_redox.patch b/recipes/backends/sdl-gfx/01_redox.patch similarity index 100% rename from recipes/backends/sdl_gfx/01_redox.patch rename to recipes/backends/sdl-gfx/01_redox.patch diff --git a/recipes/backends/sdl_gfx/recipe.sh b/recipes/backends/sdl-gfx/recipe.sh similarity index 93% rename from recipes/backends/sdl_gfx/recipe.sh rename to recipes/backends/sdl-gfx/recipe.sh index d3fdbba6..8b4460ac 100644 --- a/recipes/backends/sdl_gfx/recipe.sh +++ b/recipes/backends/sdl-gfx/recipe.sh @@ -1,6 +1,6 @@ VERSION=2.0.25 TAR=https://sourceforge.net/projects/sdlgfx/files/SDL_gfx-$VERSION.tar.gz -BUILD_DEPENDS=(sdl liborbital libiconv) +BUILD_DEPENDS=(sdl1 liborbital libiconv) function recipe_version { echo "$VERSION" diff --git a/recipes/backends/sdl_image/01_redox.patch b/recipes/backends/sdl1-image/01_redox.patch similarity index 100% rename from recipes/backends/sdl_image/01_redox.patch rename to recipes/backends/sdl1-image/01_redox.patch diff --git a/recipes/backends/sdl_image/recipe.sh b/recipes/backends/sdl1-image/recipe.sh similarity index 91% rename from recipes/backends/sdl_image/recipe.sh rename to recipes/backends/sdl1-image/recipe.sh index cda7f4fa..76791fa7 100644 --- a/recipes/backends/sdl_image/recipe.sh +++ b/recipes/backends/sdl1-image/recipe.sh @@ -1,6 +1,6 @@ VERSION=1.2.12 TAR=https://www.libsdl.org/projects/SDL_image/release/SDL_image-$VERSION.tar.gz -BUILD_DEPENDS=(sdl liborbital libiconv libjpeg libpng zlib) +BUILD_DEPENDS=(sdl1 liborbital libiconv libjpeg libpng zlib) function recipe_version { echo "$VERSION" diff --git a/recipes/backends/sdl_mixer/recipe.sh b/recipes/backends/sdl1-mixer/recipe.sh similarity index 94% rename from recipes/backends/sdl_mixer/recipe.sh rename to recipes/backends/sdl1-mixer/recipe.sh index be384383..3213f3e8 100644 --- a/recipes/backends/sdl_mixer/recipe.sh +++ b/recipes/backends/sdl1-mixer/recipe.sh @@ -1,6 +1,6 @@ VERSION=1.2.12 TAR=https://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-$VERSION.tar.gz -BUILD_DEPENDS=(sdl liborbital libogg libvorbis) +BUILD_DEPENDS=(sdl1 liborbital libogg libvorbis) function recipe_version { echo "$VERSION" diff --git a/recipes/backends/sdl_mixer/redox.patch b/recipes/backends/sdl1-mixer/redox.patch similarity index 100% rename from recipes/backends/sdl_mixer/redox.patch rename to recipes/backends/sdl1-mixer/redox.patch diff --git a/recipes/backends/sdl_ttf/01_redox.patch b/recipes/backends/sdl1-ttf/01_redox.patch similarity index 100% rename from recipes/backends/sdl_ttf/01_redox.patch rename to recipes/backends/sdl1-ttf/01_redox.patch diff --git a/recipes/backends/sdl_ttf/recipe.sh b/recipes/backends/sdl1-ttf/recipe.sh similarity index 92% rename from recipes/backends/sdl_ttf/recipe.sh rename to recipes/backends/sdl1-ttf/recipe.sh index 8b40579d..9e77728b 100644 --- a/recipes/backends/sdl_ttf/recipe.sh +++ b/recipes/backends/sdl1-ttf/recipe.sh @@ -1,6 +1,6 @@ VERSION=2.0.11 TAR=https://www.libsdl.org/projects/SDL_ttf/release/SDL_ttf-$VERSION.tar.gz -BUILD_DEPENDS=(sdl liborbital freetype libpng zlib) +BUILD_DEPENDS=(sdl1 liborbital freetype2 libpng zlib) function recipe_version { echo "$VERSION" diff --git a/recipes/backends/sdl/recipe.toml b/recipes/backends/sdl1/recipe.toml similarity index 100% rename from recipes/backends/sdl/recipe.toml rename to recipes/backends/sdl1/recipe.toml diff --git a/recipes/backends/sdl2_image/recipe.toml b/recipes/backends/sdl2-image/recipe.toml similarity index 100% rename from recipes/backends/sdl2_image/recipe.toml rename to recipes/backends/sdl2-image/recipe.toml diff --git a/recipes/backends/sdl2_mixer/recipe.toml b/recipes/backends/sdl2-mixer/recipe.toml similarity index 100% rename from recipes/backends/sdl2_mixer/recipe.toml rename to recipes/backends/sdl2-mixer/recipe.toml diff --git a/recipes/backends/sdl2_mixer/redox.patch b/recipes/backends/sdl2-mixer/redox.patch similarity index 100% rename from recipes/backends/sdl2_mixer/redox.patch rename to recipes/backends/sdl2-mixer/redox.patch diff --git a/recipes/backends/sdl2_ttf/recipe.sh b/recipes/backends/sdl2-ttf/recipe.sh similarity index 92% rename from recipes/backends/sdl2_ttf/recipe.sh rename to recipes/backends/sdl2-ttf/recipe.sh index b6916b8c..bc365d15 100644 --- a/recipes/backends/sdl2_ttf/recipe.sh +++ b/recipes/backends/sdl2-ttf/recipe.sh @@ -1,6 +1,6 @@ VERSION=2.0.15 TAR=https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-$VERSION.tar.gz -BUILD_DEPENDS=(sdl2 liborbital llvm mesa freetype libpng zlib) +BUILD_DEPENDS=(sdl2 liborbital llvm mesa freetype2 libpng zlib) function recipe_version { echo "$VERSION" diff --git a/recipes/backends/webrender/recipe.sh b/recipes/backends/webrender/recipe.sh index 774f8d33..f68153d3 100644 --- a/recipes/backends/webrender/recipe.sh +++ b/recipes/backends/webrender/recipe.sh @@ -1,7 +1,7 @@ GIT=https://gitlab.redox-os.org/redox-os/webrender.git GIT_UPSTREAM=https://github.com/servo/webrender.git BRANCH=redox -BUILD_DEPENDS=(freetype libpng llvm mesa zlib) +BUILD_DEPENDS=(freetype2 libpng llvm mesa zlib) function recipe_build { sysroot="$(realpath ../sysroot)" diff --git a/recipes/demos/cairodemo/recipe.sh b/recipes/demos/cairodemo/recipe.sh index 3a42c66c..c92c479b 100755 --- a/recipes/demos/cairodemo/recipe.sh +++ b/recipes/demos/cairodemo/recipe.sh @@ -1,4 +1,4 @@ -BUILD_DEPENDS=(cairo expat fontconfig freetype liborbital libpng pixman zlib) +BUILD_DEPENDS=(cairo expat fontconfig freetype2 liborbital libpng pixman zlib) function recipe_version { printf "1.0.0" diff --git a/recipes/demos/gears/recipe.sh b/recipes/demos/gears/recipe.sh index bbf3b4c2..47067cf1 100644 --- a/recipes/demos/gears/recipe.sh +++ b/recipes/demos/gears/recipe.sh @@ -1,4 +1,4 @@ -BUILD_DEPENDS=(liborbital llvm mesa mesa_glu zlib) +BUILD_DEPENDS=(liborbital llvm mesa mesa-glu zlib) function recipe_version { printf "1.0.0" diff --git a/recipes/demos/osdemo/recipe.sh b/recipes/demos/osdemo/recipe.sh index 99942a10..5476214e 100644 --- a/recipes/demos/osdemo/recipe.sh +++ b/recipes/demos/osdemo/recipe.sh @@ -1,4 +1,4 @@ -BUILD_DEPENDS=(liborbital llvm mesa mesa_glu zlib) +BUILD_DEPENDS=(liborbital llvm mesa mesa-glu zlib) function recipe_version { printf "1.0.0" diff --git a/recipes/demos/rust-cairo-demo/recipe.sh b/recipes/demos/rust-cairo-demo/recipe.sh index 2b493d1f..7c1c4c28 100644 --- a/recipes/demos/rust-cairo-demo/recipe.sh +++ b/recipes/demos/rust-cairo-demo/recipe.sh @@ -1,5 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/rust-cairo-demo.git -BUILD_DEPENDS=(cairo expat fontconfig freetype libpng pixman zlib) +BUILD_DEPENDS=(cairo expat fontconfig freetype2 libpng pixman zlib) function recipe_build { sysroot="$(realpath ../sysroot)" diff --git a/recipes/demos/sdl2_gears/assets/font.ttf b/recipes/demos/sdl2-gears/assets/font.ttf similarity index 100% rename from recipes/demos/sdl2_gears/assets/font.ttf rename to recipes/demos/sdl2-gears/assets/font.ttf diff --git a/recipes/demos/sdl2_gears/assets/image.png b/recipes/demos/sdl2-gears/assets/image.png similarity index 100% rename from recipes/demos/sdl2_gears/assets/image.png rename to recipes/demos/sdl2-gears/assets/image.png diff --git a/recipes/demos/sdl2_gears/assets/music.wav b/recipes/demos/sdl2-gears/assets/music.wav similarity index 100% rename from recipes/demos/sdl2_gears/assets/music.wav rename to recipes/demos/sdl2-gears/assets/music.wav diff --git a/recipes/demos/sdl2_gears/gears.c b/recipes/demos/sdl2-gears/gears.c similarity index 100% rename from recipes/demos/sdl2_gears/gears.c rename to recipes/demos/sdl2-gears/gears.c diff --git a/recipes/demos/sdl2_gears/recipe.sh b/recipes/demos/sdl2-gears/recipe.sh similarity index 89% rename from recipes/demos/sdl2_gears/recipe.sh rename to recipes/demos/sdl2-gears/recipe.sh index 8ae41967..6da36dd2 100644 --- a/recipes/demos/sdl2_gears/recipe.sh +++ b/recipes/demos/sdl2-gears/recipe.sh @@ -1,4 +1,4 @@ -BUILD_DEPENDS=(sdl2_image sdl2_mixer sdl2_ttf sdl2 liborbital llvm mesa freetype libjpeg libpng libogg libvorbis zlib) +BUILD_DEPENDS=(sdl2-image sdl2-mixer sdl2-ttf sdl2 liborbital llvm mesa freetype2 libjpeg libpng libogg libvorbis zlib) function recipe_version { printf "1.0.0" diff --git a/recipes/development/autoconf/recipe.toml b/recipes/dev/autoconf/recipe.toml similarity index 100% rename from recipes/development/autoconf/recipe.toml rename to recipes/dev/autoconf/recipe.toml diff --git a/recipes/development/automake/recipe.toml b/recipes/dev/automake/recipe.toml similarity index 100% rename from recipes/development/automake/recipe.toml rename to recipes/dev/automake/recipe.toml diff --git a/recipes/development/cargo/recipe.toml b/recipes/dev/cargo/recipe.toml similarity index 97% rename from recipes/development/cargo/recipe.toml rename to recipes/dev/cargo/recipe.toml index a443f377..71834b91 100644 --- a/recipes/development/cargo/recipe.toml +++ b/recipes/dev/cargo/recipe.toml @@ -9,7 +9,7 @@ dependencies = [ "curl", "libssh2", "nghttp2", - "openssl", + "openssl1", "zlib", ] script = """ diff --git a/recipes/development/cmake/recipe.toml b/recipes/dev/cmake/recipe.toml similarity index 96% rename from recipes/development/cmake/recipe.toml rename to recipes/dev/cmake/recipe.toml index 7c3d24b1..77c573b7 100644 --- a/recipes/development/cmake/recipe.toml +++ b/recipes/dev/cmake/recipe.toml @@ -4,7 +4,7 @@ tar = "https://github.com/Kitware/CMake/releases/download/v3.25.2/cmake-3.25.2.t [build] template = "custom" dependencies = [ - "openssl", + "openssl1", ] script = """ COOKBOOK_CONFIGURE="cmake" diff --git a/recipes/development/crates-io-index/recipe.toml b/recipes/dev/crates-io-index/recipe.toml similarity index 100% rename from recipes/development/crates-io-index/recipe.toml rename to recipes/dev/crates-io-index/recipe.toml diff --git a/recipes/development/fal/recipe.sh b/recipes/dev/fal/recipe.sh similarity index 100% rename from recipes/development/fal/recipe.sh rename to recipes/dev/fal/recipe.sh diff --git a/recipes/development/fontconfig/recipe.toml b/recipes/dev/fontconfig/recipe.toml old mode 100755 new mode 100644 similarity index 97% rename from recipes/development/fontconfig/recipe.toml rename to recipes/dev/fontconfig/recipe.toml index b230274b..49eed3b3 --- a/recipes/development/fontconfig/recipe.toml +++ b/recipes/dev/fontconfig/recipe.toml @@ -14,7 +14,7 @@ wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master template = "custom" dependencies = [ "expat", - "freetype", + "freetype2", "libpng", "zlib", ] diff --git a/recipes/development/fontconfig/redox.patch b/recipes/dev/fontconfig/redox.patch similarity index 100% rename from recipes/development/fontconfig/redox.patch rename to recipes/dev/fontconfig/redox.patch diff --git a/recipes/development/gawk/recipe.sh b/recipes/dev/gawk/recipe.sh similarity index 100% rename from recipes/development/gawk/recipe.sh rename to recipes/dev/gawk/recipe.sh diff --git a/recipes/development/gcc/recipe.sh b/recipes/dev/gcc13/recipe.sh similarity index 100% rename from recipes/development/gcc/recipe.sh rename to recipes/dev/gcc13/recipe.sh diff --git a/recipes/development/gdbserver/recipe.toml b/recipes/dev/gdbserver/recipe.toml similarity index 100% rename from recipes/development/gdbserver/recipe.toml rename to recipes/dev/gdbserver/recipe.toml diff --git a/recipes/development/gdk-pixbuf/recipe.sh b/recipes/dev/gdk-pixbuf/recipe.sh old mode 100755 new mode 100644 similarity index 100% rename from recipes/development/gdk-pixbuf/recipe.sh rename to recipes/dev/gdk-pixbuf/recipe.sh diff --git a/recipes/development/gnu-make/make.patch b/recipes/dev/gnu-make/make.patch similarity index 100% rename from recipes/development/gnu-make/make.patch rename to recipes/dev/gnu-make/make.patch diff --git a/recipes/development/gnu-make/recipe.sh b/recipes/dev/gnu-make/recipe.sh similarity index 100% rename from recipes/development/gnu-make/recipe.sh rename to recipes/dev/gnu-make/recipe.sh diff --git a/recipes/development/lci/recipe.sh b/recipes/dev/lci/recipe.sh similarity index 100% rename from recipes/development/lci/recipe.sh rename to recipes/dev/lci/recipe.sh diff --git a/recipes/development/llvm/native.cmake b/recipes/dev/llvm/native.cmake similarity index 100% rename from recipes/development/llvm/native.cmake rename to recipes/dev/llvm/native.cmake diff --git a/recipes/development/llvm/recipe.toml b/recipes/dev/llvm/recipe.toml similarity index 100% rename from recipes/development/llvm/recipe.toml rename to recipes/dev/llvm/recipe.toml diff --git a/recipes/development/lua/recipe.toml b/recipes/dev/lua54/recipe.toml similarity index 100% rename from recipes/development/lua/recipe.toml rename to recipes/dev/lua54/recipe.toml diff --git a/recipes/development/nasm/recipe.toml b/recipes/dev/nasm/recipe.toml similarity index 100% rename from recipes/development/nasm/recipe.toml rename to recipes/dev/nasm/recipe.toml diff --git a/recipes/development/patch/01-no-rlimit.patch b/recipes/dev/patch/01-no-rlimit.patch similarity index 100% rename from recipes/development/patch/01-no-rlimit.patch rename to recipes/dev/patch/01-no-rlimit.patch diff --git a/recipes/development/patch/02-no-chown.patch b/recipes/dev/patch/02-no-chown.patch similarity index 100% rename from recipes/development/patch/02-no-chown.patch rename to recipes/dev/patch/02-no-chown.patch diff --git a/recipes/development/patch/recipe.sh b/recipes/dev/patch/recipe.sh similarity index 100% rename from recipes/development/patch/recipe.sh rename to recipes/dev/patch/recipe.sh diff --git a/recipes/development/pciids/recipe.toml b/recipes/dev/pciids/recipe.toml similarity index 100% rename from recipes/development/pciids/recipe.toml rename to recipes/dev/pciids/recipe.toml diff --git a/recipes/development/perl/perl.patch b/recipes/dev/perl5/perl.patch similarity index 100% rename from recipes/development/perl/perl.patch rename to recipes/dev/perl5/perl.patch diff --git a/recipes/development/perl/recipe.sh b/recipes/dev/perl5/recipe.sh similarity index 100% rename from recipes/development/perl/recipe.sh rename to recipes/dev/perl5/recipe.sh diff --git a/recipes/development/pkg-config/recipe.toml b/recipes/dev/pkg-config/recipe.toml old mode 100755 new mode 100644 similarity index 100% rename from recipes/development/pkg-config/recipe.toml rename to recipes/dev/pkg-config/recipe.toml diff --git a/recipes/development/pkgar/recipe.toml b/recipes/dev/pkgar/recipe.toml similarity index 100% rename from recipes/development/pkgar/recipe.toml rename to recipes/dev/pkgar/recipe.toml diff --git a/recipes/development/python/config.site b/recipes/dev/python37/config.site similarity index 100% rename from recipes/development/python/config.site rename to recipes/dev/python37/config.site diff --git a/recipes/development/python/recipe.sh b/recipes/dev/python37/recipe.sh similarity index 97% rename from recipes/development/python/recipe.sh rename to recipes/dev/python37/recipe.sh index 3f3b7307..1c92b6d6 100644 --- a/recipes/development/python/recipe.sh +++ b/recipes/dev/python37/recipe.sh @@ -1,6 +1,6 @@ VERSION=3.7.4 TAR=https://www.python.org/ftp/python/$VERSION/Python-$VERSION.tar.xz -BUILD_DEPENDS=(openssl) +BUILD_DEPENDS=(openssl1) export CONFIG_SITE=config.site diff --git a/recipes/development/python/redox.patch b/recipes/dev/python37/redox.patch similarity index 100% rename from recipes/development/python/redox.patch rename to recipes/dev/python37/redox.patch diff --git a/recipes/development/redoxerd/recipe.toml b/recipes/dev/redoxerd/recipe.toml similarity index 100% rename from recipes/development/redoxerd/recipe.toml rename to recipes/dev/redoxerd/recipe.toml diff --git a/recipes/development/rust/.gitignore b/recipes/dev/rust/.gitignore similarity index 100% rename from recipes/development/rust/.gitignore rename to recipes/dev/rust/.gitignore diff --git a/recipes/development/rust/config.toml b/recipes/dev/rust/config.toml similarity index 100% rename from recipes/development/rust/config.toml rename to recipes/dev/rust/config.toml diff --git a/recipes/development/rust/recipe.sh b/recipes/dev/rust/recipe.sh similarity index 96% rename from recipes/development/rust/recipe.sh rename to recipes/dev/rust/recipe.sh index d327fb0a..166d23a3 100644 --- a/recipes/development/rust/recipe.sh +++ b/recipes/dev/rust/recipe.sh @@ -1,7 +1,7 @@ GIT=https://gitlab.redox-os.org/redox-os/rust.git BRANCH=redox-2023-09-07 BUILD_DEPENDS=(llvm) -DEPENDS="gcc cargo" +DEPENDS="gcc13 cargo" PREPARE_COPY=0 function recipe_version { diff --git a/recipes/development/rustpython/recipe.toml b/recipes/dev/rustpython/recipe.toml similarity index 92% rename from recipes/development/rustpython/recipe.toml rename to recipes/dev/rustpython/recipe.toml index dcd992a8..5c064657 100644 --- a/recipes/development/rustpython/recipe.toml +++ b/recipes/dev/rustpython/recipe.toml @@ -3,7 +3,10 @@ git = "https://github.com/RustPython/RustPython" branch = "redox-release" [build] -dependencies = ["openssl", "zlib"] +dependencies = [ + "openssl1", + "zlib", +] template = "custom" script = """ (cd "${COOKBOOK_SOURCE}" && bash scripts/redox/uncomment-cargo.sh && cargo update) diff --git a/recipes/development/strace/recipe.toml b/recipes/dev/strace/recipe.toml similarity index 100% rename from recipes/development/strace/recipe.toml rename to recipes/dev/strace/recipe.toml diff --git a/recipes/documentation/book/recipe.toml b/recipes/doc/book/recipe.toml similarity index 100% rename from recipes/documentation/book/recipe.toml rename to recipes/doc/book/recipe.toml diff --git a/recipes/emulators/dosbox/recipe.sh b/recipes/emulators/dosbox/recipe.sh index 8aa594ea..91376e0e 100644 --- a/recipes/emulators/dosbox/recipe.sh +++ b/recipes/emulators/dosbox/recipe.sh @@ -1,6 +1,6 @@ VERSION=0.74-3 TAR=https://sourceforge.net/projects/dosbox/files/dosbox/$VERSION/dosbox-$VERSION.tar.gz/download -BUILD_DEPENDS=(sdl liborbital) +BUILD_DEPENDS=(sdl1 liborbital) function recipe_version { echo "$VERSION" diff --git a/recipes/emulators/flycast/recipe.toml b/recipes/emulators/flycast/recipe.toml index cd5a8c08..41cb8953 100644 --- a/recipes/emulators/flycast/recipe.toml +++ b/recipes/emulators/flycast/recipe.toml @@ -10,7 +10,7 @@ dependencies = [ "llvm", "mesa", "nghttp2", - "openssl", + "openssl1", "sdl2", "zlib", ] diff --git a/recipes/emulators/mgba/recipe.sh b/recipes/emulators/mgba/recipe.sh index f7baad90..1e38f3f5 100644 --- a/recipes/emulators/mgba/recipe.sh +++ b/recipes/emulators/mgba/recipe.sh @@ -1,7 +1,7 @@ VERSION=0.7 GIT=https://github.com/mgba-emu/mgba.git BRANCH=$VERSION -BUILD_DEPENDS=(sdl liborbital libiconv pixman) +BUILD_DEPENDS=(sdl1 liborbital libiconv pixman) function recipe_version { echo "$VERSION" diff --git a/recipes/emulators/qemu/recipe.sh b/recipes/emulators/qemu/recipe.sh index f14bb48d..b0c3d46d 100644 --- a/recipes/emulators/qemu/recipe.sh +++ b/recipes/emulators/qemu/recipe.sh @@ -1,6 +1,6 @@ VERSION=3.1.0 TAR=https://download.qemu.org/qemu-$VERSION.tar.xz -BUILD_DEPENDS=(curl glib libiconv libpng pcre pixman sdl zlib) +BUILD_DEPENDS=(curl glib libiconv libpng pcre pixman sdl1 zlib) function recipe_version { echo "$VERSION" diff --git a/recipes/emulators/retroarch/recipe.toml b/recipes/emulators/retroarch/recipe.toml index 25a38366..51f4019e 100644 --- a/recipes/emulators/retroarch/recipe.toml +++ b/recipes/emulators/retroarch/recipe.toml @@ -8,7 +8,7 @@ dependencies = [ "libretro-super", "llvm", "mesa", - "openssl", + "openssl1", "sdl2", "zlib", ] diff --git a/recipes/emulators/scummvm/recipe.sh b/recipes/emulators/scummvm/recipe.sh index 22ee8d5c..f772252b 100644 --- a/recipes/emulators/scummvm/recipe.sh +++ b/recipes/emulators/scummvm/recipe.sh @@ -1,7 +1,7 @@ VERSION=2.0.0 TAR=https://downloads.scummvm.org/frs/scummvm/$VERSION/scummvm-$VERSION.tar.xz TAR_SHA256=9784418d555ba75822d229514a05cf226b8ce1a751eec425432e6b7e128fca60 -BUILD_DEPENDS=(sdl liborbital freetype zlib libpng) +BUILD_DEPENDS=(sdl1 liborbital freetype2 zlib libpng) function recipe_version { echo "$VERSION" diff --git a/recipes/emulators/vice/recipe.sh b/recipes/emulators/vice/recipe.sh index 42da7819..1f5a713e 100644 --- a/recipes/emulators/vice/recipe.sh +++ b/recipes/emulators/vice/recipe.sh @@ -1,7 +1,7 @@ VERSION=3.3 TAR=https://sourceforge.net/projects/vice-emu/files/releases/vice-$VERSION.tar.gz/download TAR_SHA256=1a55b38cc988165b077808c07c52a779d181270b28c14b5c9abf4e569137431d -BUILD_DEPENDS=(sdl liborbital) +BUILD_DEPENDS=(sdl1 liborbital) function recipe_version { echo "$VERSION" diff --git a/recipes/examples/rust-cairo/recipe.sh b/recipes/examples/rust-cairo/recipe.sh index a9a5725f..033b28df 100644 --- a/recipes/examples/rust-cairo/recipe.sh +++ b/recipes/examples/rust-cairo/recipe.sh @@ -1,5 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/rust-cairo.git -BUILD_DEPENDS=(cairo expat fontconfig freetype libpng pixman zlib) +BUILD_DEPENDS=(cairo expat fontconfig freetype2 libpng pixman zlib) CARGOFLAGS="--example gui" function recipe_build { diff --git a/recipes/games/devilutionx/recipe.toml b/recipes/games/devilutionx/recipe.toml index d47fdd6e..4d505f9f 100644 --- a/recipes/games/devilutionx/recipe.toml +++ b/recipes/games/devilutionx/recipe.toml @@ -7,7 +7,7 @@ template = "custom" dependencies = [ "libiconv", "liborbital", - "sdl", + "sdl1", ] script = """ export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include" diff --git a/recipes/games/eduke32/recipe.sh b/recipes/games/eduke32/recipe.sh index 5ab7df32..855d3e18 100644 --- a/recipes/games/eduke32/recipe.sh +++ b/recipes/games/eduke32/recipe.sh @@ -1,6 +1,6 @@ VERSION=20181010-7067 TAR=https://dukeworld.com/eduke32/synthesis/$VERSION/eduke32_src_$VERSION.tar.xz -BUILD_DEPENDS=(sdl sdl_mixer liborbital libiconv libogg libvorbis) +BUILD_DEPENDS=(sdl1 sdl1-mixer liborbital libiconv libogg libvorbis) function recipe_version { echo "$VERSION" diff --git a/recipes/games/freeciv/recipe.sh b/recipes/games/freeciv/recipe.sh index be7e2a37..b2785894 100644 --- a/recipes/games/freeciv/recipe.sh +++ b/recipes/games/freeciv/recipe.sh @@ -1,6 +1,6 @@ VERSION=2.6.6 TAR=https://files.freeciv.org/stable/freeciv-$VERSION.tar.bz2 -BUILD_DEPENDS=(curl freetype libiconv liborbital libpng openssl nghttp2 sdl sdl_gfx sdl_image sdl_mixer sdl_ttf zlib) +BUILD_DEPENDS=(curl freetype2 libiconv liborbital libpng openssl1 nghttp2 sdl1 sdl-gfx sdl1-image sdl1-mixer sdl1-ttf zlib) function recipe_version { echo "$VERSION" diff --git a/recipes/games/gigalomania/recipe.sh b/recipes/games/gigalomania/recipe.sh index 5bb39914..e43d6716 100644 --- a/recipes/games/gigalomania/recipe.sh +++ b/recipes/games/gigalomania/recipe.sh @@ -1,7 +1,7 @@ VERSION=1.0.1 GIT=https://gitlab.redox-os.org/redox-os/gigalomania.git BRANCH=master -BUILD_DEPENDS=(sdl_mixer sdl_image sdl liborbital libogg libpng libjpeg libvorbis zlib) +BUILD_DEPENDS=(sdl1-mixer sdl1-image sdl1 liborbital libogg libpng libjpeg libvorbis zlib) function recipe_version { echo "$VERSION" diff --git a/recipes/games/neverball/recipe.sh b/recipes/games/neverball/recipe.sh index 4ba9d47d..4c12afda 100644 --- a/recipes/games/neverball/recipe.sh +++ b/recipes/games/neverball/recipe.sh @@ -1,6 +1,6 @@ VERSION=1.6.0 TAR="https://neverball.org/neverball-${VERSION}.tar.gz" -BUILD_DEPENDS=(freetype libjpeg libogg liborbital libpng libvorbis llvm mesa sdl2 sdl2_ttf zlib) +BUILD_DEPENDS=(freetype2 libjpeg libogg liborbital libpng libvorbis llvm mesa sdl2 sdl2-ttf zlib) function recipe_version { echo "$VERSION" diff --git a/recipes/games/openjazz/recipe.sh b/recipes/games/openjazz/recipe.sh index 56b0c833..d16191cf 100644 --- a/recipes/games/openjazz/recipe.sh +++ b/recipes/games/openjazz/recipe.sh @@ -2,7 +2,7 @@ VERSION=20190106 TAR="https://github.com/AlisterT/openjazz/releases/download/${VERSION}/openjazz-${VERSION}.tar.xz" TAR_SHA256="91341adcc4908db12aad6b82d2fb0125429a26585f65d7eb32d403656313eaab" -BUILD_DEPENDS=(sdl liborbital zlib) +BUILD_DEPENDS=(sdl1 liborbital zlib) function recipe_version { echo "$VERSION" diff --git a/recipes/games/openttd/recipe.sh b/recipes/games/openttd/recipe.sh index 51e396f4..bd15e67e 100644 --- a/recipes/games/openttd/recipe.sh +++ b/recipes/games/openttd/recipe.sh @@ -1,7 +1,7 @@ VERSION=1.8 GIT=https://github.com/OpenTTD/OpenTTD.git BRANCH=release/$VERSION -BUILD_DEPENDS=(freetype liborbital libpng sdl xz zlib) +BUILD_DEPENDS=(freetype2 liborbital libpng sdl1 xz zlib) function recipe_version { echo "$VERSION" diff --git a/recipes/games/prboom/recipe.sh b/recipes/games/prboom/recipe.sh index 17d52049..c2ce128a 100644 --- a/recipes/games/prboom/recipe.sh +++ b/recipes/games/prboom/recipe.sh @@ -1,6 +1,6 @@ VERSION=2.5.0 TAR=https://downloads.sourceforge.net/project/prboom/prboom%20stable/$VERSION/prboom-$VERSION.tar.gz -BUILD_DEPENDS=(sdl liborbital sdl_mixer libogg libvorbis) +BUILD_DEPENDS=(sdl1 liborbital sdl1-mixer libogg libvorbis) function recipe_version { echo "$VERSION" diff --git a/recipes/games/sopwith/recipe.sh b/recipes/games/sopwith/recipe.sh index 170748c1..a3ed07f9 100644 --- a/recipes/games/sopwith/recipe.sh +++ b/recipes/games/sopwith/recipe.sh @@ -1,6 +1,6 @@ VERSION=1.8.4 TAR=https://sourceforge.net/projects/sdl-sopwith/files/sdl_sopwith/$VERSION/sopwith-$VERSION.tar.gz/download -BUILD_DEPENDS=(sdl liborbital libiconv) +BUILD_DEPENDS=(sdl1 liborbital libiconv) function recipe_version { echo "$VERSION" diff --git a/recipes/games/spacecadetpinball/recipe.toml b/recipes/games/spacecadetpinball/recipe.toml index 1f098976..49683b48 100644 --- a/recipes/games/spacecadetpinball/recipe.toml +++ b/recipes/games/spacecadetpinball/recipe.toml @@ -12,7 +12,7 @@ dependencies = [ "llvm", "mesa", "sdl2", - "sdl2_mixer", + "sdl2-mixer", "zlib", ] script = """ diff --git a/recipes/games/syobonaction/recipe.sh b/recipes/games/syobonaction/recipe.sh index 5c50b4b1..dc2b7a3b 100644 --- a/recipes/games/syobonaction/recipe.sh +++ b/recipes/games/syobonaction/recipe.sh @@ -1,6 +1,6 @@ VERSION=1.0-rc3 GIT=https://github.com/angelXwind/OpenSyobonAction -BUILD_DEPENDS=(sdl liborbital sdl_mixer sdl_image sdl_gfx sdl_ttf freetype libjpeg libpng zlib libogg libvorbis) +BUILD_DEPENDS=(sdl1 liborbital sdl1-mixer sdl1-image sdl-gfx sdl1-ttf freetype2 libjpeg libpng zlib libogg libvorbis) function recipe_version { echo "$VERSION" diff --git a/recipes/games/vvvvvv/recipe.sh b/recipes/games/vvvvvv/recipe.sh index cd1e3f64..28649e57 100644 --- a/recipes/games/vvvvvv/recipe.sh +++ b/recipes/games/vvvvvv/recipe.sh @@ -2,7 +2,7 @@ VERSION=2.0 GIT=https://github.com/xTibor/VVVVVV BRANCH=redox GIT_UPSTREAM=https://github.com/TerryCavanagh/VVVVVV -BUILD_DEPENDS=(sdl2_image sdl2_mixer sdl2 liborbital llvm mesa mesa_glu zlib libogg libvorbis) +BUILD_DEPENDS=(sdl2-image sdl2-mixer sdl2 liborbital llvm mesa mesa-glu zlib libogg libvorbis) function recipe_version { printf "1.0.0" diff --git a/recipes/games/wesnoth/recipe.sh b/recipes/games/wesnoth/recipe.sh index 03b32fa3..b93029fd 100644 --- a/recipes/games/wesnoth/recipe.sh +++ b/recipes/games/wesnoth/recipe.sh @@ -3,17 +3,17 @@ GIT=https://github.com/wesnoth/wesnoth.git BRANCH=$VERSION BUILD_DEPENDS=( cairo - freetype + freetype2 glib libjpeg liborbital libpng libvorbis llvm - mesa mesa_glu + mesa mesa-glu pcre pixman - sdl2 sdl2_image sdl2_mixer sdl2_ttf + sdl2 sdl2-image sdl2-mixer sdl2-ttf zlib ) diff --git a/recipes/libraries/duktape/recipe.sh b/recipes/libs/duktape/recipe.sh similarity index 100% rename from recipes/libraries/duktape/recipe.sh rename to recipes/libs/duktape/recipe.sh diff --git a/recipes/libraries/duktape/redox.patch b/recipes/libs/duktape/redox.patch similarity index 100% rename from recipes/libraries/duktape/redox.patch rename to recipes/libs/duktape/redox.patch diff --git a/recipes/libraries/expat/recipe.toml b/recipes/libs/expat/recipe.toml similarity index 100% rename from recipes/libraries/expat/recipe.toml rename to recipes/libs/expat/recipe.toml diff --git a/recipes/libraries/ffmpeg/binutils-2.41.patch b/recipes/libs/ffmpeg6/binutils-2.41.patch similarity index 100% rename from recipes/libraries/ffmpeg/binutils-2.41.patch rename to recipes/libs/ffmpeg6/binutils-2.41.patch diff --git a/recipes/libraries/ffmpeg/ffmpeg.patch b/recipes/libs/ffmpeg6/ffmpeg.patch similarity index 100% rename from recipes/libraries/ffmpeg/ffmpeg.patch rename to recipes/libs/ffmpeg6/ffmpeg.patch diff --git a/recipes/libraries/ffmpeg/recipe.toml b/recipes/libs/ffmpeg6/recipe.toml similarity index 100% rename from recipes/libraries/ffmpeg/recipe.toml rename to recipes/libs/ffmpeg6/recipe.toml diff --git a/recipes/libraries/freeglut/recipe.sh b/recipes/libs/freeglut/recipe.sh similarity index 96% rename from recipes/libraries/freeglut/recipe.sh rename to recipes/libs/freeglut/recipe.sh index d291f77e..b9e4b08b 100644 --- a/recipes/libraries/freeglut/recipe.sh +++ b/recipes/libs/freeglut/recipe.sh @@ -1,6 +1,6 @@ TAR=https://cytranet.dl.sourceforge.net/project/freeglut/freeglut/3.0.0/freeglut-3.0.0.tar.gz -BUILD_DEPENDS=(mesa mesa_glu) +BUILD_DEPENDS=(mesa mesa-glu) function recipe_version { echo "3.0.0" diff --git a/recipes/libraries/freeglut/redox_cross_toolchain.cmake b/recipes/libs/freeglut/redox_cross_toolchain.cmake similarity index 100% rename from recipes/libraries/freeglut/redox_cross_toolchain.cmake rename to recipes/libs/freeglut/redox_cross_toolchain.cmake diff --git a/recipes/libraries/freetype/recipe.toml b/recipes/libs/freetype2/recipe.toml similarity index 100% rename from recipes/libraries/freetype/recipe.toml rename to recipes/libs/freetype2/recipe.toml diff --git a/recipes/libraries/fribidi/recipe.sh b/recipes/libs/fribidi/recipe.sh old mode 100755 new mode 100644 similarity index 100% rename from recipes/libraries/fribidi/recipe.sh rename to recipes/libs/fribidi/recipe.sh diff --git a/recipes/libraries/glib/recipe.toml b/recipes/libs/glib/recipe.toml similarity index 100% rename from recipes/libraries/glib/recipe.toml rename to recipes/libs/glib/recipe.toml diff --git a/recipes/libraries/glib/redox.patch b/recipes/libs/glib/redox.patch similarity index 100% rename from recipes/libraries/glib/redox.patch rename to recipes/libs/glib/redox.patch diff --git a/recipes/libraries/gstreamer/recipe.sh b/recipes/libs/gstreamer/recipe.sh similarity index 100% rename from recipes/libraries/gstreamer/recipe.sh rename to recipes/libs/gstreamer/recipe.sh diff --git a/recipes/libraries/gstreamer/redox.patch b/recipes/libs/gstreamer/redox.patch similarity index 100% rename from recipes/libraries/gstreamer/redox.patch rename to recipes/libs/gstreamer/redox.patch diff --git a/recipes/libraries/harfbuzz/recipe.toml b/recipes/libs/harfbuzz/recipe.toml similarity index 97% rename from recipes/libraries/harfbuzz/recipe.toml rename to recipes/libs/harfbuzz/recipe.toml index 22f21ea8..a38b1631 100644 --- a/recipes/libraries/harfbuzz/recipe.toml +++ b/recipes/libs/harfbuzz/recipe.toml @@ -6,7 +6,7 @@ blake3 = "6572676ffef55bd37bacdd33052bedfb07333b659371495a2a26b9825ce685c0" [build] template = "custom" dependencies = [ - "freetype", + "freetype2", "gettext", "glib", "libiconv", diff --git a/recipes/libraries/jansson/jansson.patch b/recipes/libs/jansson/jansson.patch similarity index 100% rename from recipes/libraries/jansson/jansson.patch rename to recipes/libs/jansson/jansson.patch diff --git a/recipes/libraries/jansson/recipe.sh b/recipes/libs/jansson/recipe.sh similarity index 100% rename from recipes/libraries/jansson/recipe.sh rename to recipes/libs/jansson/recipe.sh diff --git a/recipes/libraries/libcosmic/recipe.toml b/recipes/libs/libcosmic/recipe.toml similarity index 100% rename from recipes/libraries/libcosmic/recipe.toml rename to recipes/libs/libcosmic/recipe.toml diff --git a/recipes/libraries/libffi/recipe.toml b/recipes/libs/libffi/recipe.toml similarity index 100% rename from recipes/libraries/libffi/recipe.toml rename to recipes/libs/libffi/recipe.toml diff --git a/recipes/libraries/libffi/redox.patch b/recipes/libs/libffi/redox.patch similarity index 100% rename from recipes/libraries/libffi/redox.patch rename to recipes/libs/libffi/redox.patch diff --git a/recipes/libraries/libflac/recipe.toml b/recipes/libs/libflac/recipe.toml similarity index 100% rename from recipes/libraries/libflac/recipe.toml rename to recipes/libs/libflac/recipe.toml diff --git a/recipes/libraries/libgmp/recipe.toml b/recipes/libs/libgmp/recipe.toml similarity index 100% rename from recipes/libraries/libgmp/recipe.toml rename to recipes/libs/libgmp/recipe.toml diff --git a/recipes/libraries/libiconv/01_redox.patch b/recipes/libs/libiconv/01_redox.patch similarity index 100% rename from recipes/libraries/libiconv/01_redox.patch rename to recipes/libs/libiconv/01_redox.patch diff --git a/recipes/libraries/libiconv/recipe.toml b/recipes/libs/libiconv/recipe.toml similarity index 100% rename from recipes/libraries/libiconv/recipe.toml rename to recipes/libs/libiconv/recipe.toml diff --git a/recipes/libraries/libjpeg/recipe.toml b/recipes/libs/libjpeg/recipe.toml similarity index 100% rename from recipes/libraries/libjpeg/recipe.toml rename to recipes/libs/libjpeg/recipe.toml diff --git a/recipes/libraries/libmpfr/recipe.toml b/recipes/libs/libmpfr/recipe.toml similarity index 100% rename from recipes/libraries/libmpfr/recipe.toml rename to recipes/libs/libmpfr/recipe.toml diff --git a/recipes/libraries/libogg/recipe.toml b/recipes/libs/libogg/recipe.toml similarity index 100% rename from recipes/libraries/libogg/recipe.toml rename to recipes/libs/libogg/recipe.toml diff --git a/recipes/libraries/libogg/redox.patch b/recipes/libs/libogg/redox.patch similarity index 100% rename from recipes/libraries/libogg/redox.patch rename to recipes/libs/libogg/redox.patch diff --git a/recipes/libraries/liborbital/recipe.toml b/recipes/libs/liborbital/recipe.toml similarity index 100% rename from recipes/libraries/liborbital/recipe.toml rename to recipes/libs/liborbital/recipe.toml diff --git a/recipes/libraries/libpng/recipe.toml b/recipes/libs/libpng/recipe.toml similarity index 100% rename from recipes/libraries/libpng/recipe.toml rename to recipes/libs/libpng/recipe.toml diff --git a/recipes/libraries/libsodium/random.patch b/recipes/libs/libsodium/random.patch similarity index 100% rename from recipes/libraries/libsodium/random.patch rename to recipes/libs/libsodium/random.patch diff --git a/recipes/libraries/libsodium/recipe.toml b/recipes/libs/libsodium/recipe.toml similarity index 100% rename from recipes/libraries/libsodium/recipe.toml rename to recipes/libs/libsodium/recipe.toml diff --git a/recipes/libraries/libssh2/recipe.toml b/recipes/libs/libssh2/recipe.toml similarity index 95% rename from recipes/libraries/libssh2/recipe.toml rename to recipes/libs/libssh2/recipe.toml index 6665e668..8b620099 100644 --- a/recipes/libraries/libssh2/recipe.toml +++ b/recipes/libs/libssh2/recipe.toml @@ -8,5 +8,5 @@ patches = [] [build] template = "configure" dependencies = [ - "openssl" + "openssl1" ] diff --git a/recipes/libraries/libvorbis/recipe.toml b/recipes/libs/libvorbis/recipe.toml similarity index 100% rename from recipes/libraries/libvorbis/recipe.toml rename to recipes/libs/libvorbis/recipe.toml diff --git a/recipes/libraries/libxml2/recipe.toml b/recipes/libs/libxml2/recipe.toml similarity index 100% rename from recipes/libraries/libxml2/recipe.toml rename to recipes/libs/libxml2/recipe.toml diff --git a/recipes/libraries/mesa_glu/recipe.sh b/recipes/libs/mesa-glu/recipe.sh similarity index 100% rename from recipes/libraries/mesa_glu/recipe.sh rename to recipes/libs/mesa-glu/recipe.sh diff --git a/recipes/libraries/mesa/recipe.toml b/recipes/libs/mesa/recipe.toml similarity index 100% rename from recipes/libraries/mesa/recipe.toml rename to recipes/libs/mesa/recipe.toml diff --git a/recipes/tui/ncurses/recipe.toml b/recipes/libs/ncurses/recipe.toml similarity index 100% rename from recipes/tui/ncurses/recipe.toml rename to recipes/libs/ncurses/recipe.toml diff --git a/recipes/tui/ncursesw/01-config-sub.patch b/recipes/libs/ncursesw/01-config-sub.patch similarity index 100% rename from recipes/tui/ncursesw/01-config-sub.patch rename to recipes/libs/ncursesw/01-config-sub.patch diff --git a/recipes/tui/ncursesw/recipe.sh b/recipes/libs/ncursesw/recipe.sh similarity index 100% rename from recipes/tui/ncursesw/recipe.sh rename to recipes/libs/ncursesw/recipe.sh diff --git a/recipes/libraries/openssl/recipe.toml b/recipes/libs/openssl1/recipe.toml similarity index 100% rename from recipes/libraries/openssl/recipe.toml rename to recipes/libs/openssl1/recipe.toml diff --git a/recipes/libraries/pcre/recipe.toml b/recipes/libs/pcre/recipe.toml similarity index 100% rename from recipes/libraries/pcre/recipe.toml rename to recipes/libs/pcre/recipe.toml diff --git a/recipes/libraries/pcre/redox.patch b/recipes/libs/pcre/redox.patch similarity index 100% rename from recipes/libraries/pcre/redox.patch rename to recipes/libs/pcre/redox.patch diff --git a/recipes/libraries/pixman/recipe.sh b/recipes/libs/pixman/recipe.sh old mode 100755 new mode 100644 similarity index 100% rename from recipes/libraries/pixman/recipe.sh rename to recipes/libs/pixman/recipe.sh diff --git a/recipes/libraries/pixman/redox.patch b/recipes/libs/pixman/redox.patch similarity index 100% rename from recipes/libraries/pixman/redox.patch rename to recipes/libs/pixman/redox.patch diff --git a/recipes/libraries/readline/recipe.toml b/recipes/libs/readline/recipe.toml similarity index 100% rename from recipes/libraries/readline/recipe.toml rename to recipes/libs/readline/recipe.toml diff --git a/recipes/libraries/readline/redox.patch b/recipes/libs/readline/redox.patch similarity index 100% rename from recipes/libraries/readline/redox.patch rename to recipes/libs/readline/redox.patch diff --git a/recipes/libraries/redox-fatfs/recipe.toml b/recipes/libs/redox-fatfs/recipe.toml similarity index 100% rename from recipes/libraries/redox-fatfs/recipe.toml rename to recipes/libs/redox-fatfs/recipe.toml diff --git a/recipes/libraries/zlib/recipe.toml b/recipes/libs/zlib/recipe.toml similarity index 100% rename from recipes/libraries/zlib/recipe.toml rename to recipes/libs/zlib/recipe.toml diff --git a/recipes/network/netsurf/01_redox.patch b/recipes/net/netsurf/01_redox.patch similarity index 100% rename from recipes/network/netsurf/01_redox.patch rename to recipes/net/netsurf/01_redox.patch diff --git a/recipes/network/netsurf/manifest b/recipes/net/netsurf/manifest similarity index 100% rename from recipes/network/netsurf/manifest rename to recipes/net/netsurf/manifest diff --git a/recipes/network/netsurf/recipe.sh b/recipes/net/netsurf/recipe.sh similarity index 89% rename from recipes/network/netsurf/recipe.sh rename to recipes/net/netsurf/recipe.sh index 77ddf17f..2eda2d70 100644 --- a/recipes/network/netsurf/recipe.sh +++ b/recipes/net/netsurf/recipe.sh @@ -1,6 +1,6 @@ VERSION=3.10 TAR=https://download.netsurf-browser.org/netsurf/releases/source-full/netsurf-all-$VERSION.tar.gz -BUILD_DEPENDS=(curl expat libjpeg libpng nghttp2 openssl sdl zlib freetype liborbital libiconv) +BUILD_DEPENDS=(curl expat libjpeg libpng nghttp2 openssl1 sdl1 zlib freetype2 liborbital libiconv) DEPENDS="ca-certificates orbital" function recipe_version { diff --git a/recipes/network/nghttp2/recipe.toml b/recipes/net/nghttp2/recipe.toml similarity index 100% rename from recipes/network/nghttp2/recipe.toml rename to recipes/net/nghttp2/recipe.toml diff --git a/recipes/shells/nushell/recipe.toml b/recipes/shells/nushell/recipe.toml index 27c9c8d6..e2559c66 100644 --- a/recipes/shells/nushell/recipe.toml +++ b/recipes/shells/nushell/recipe.toml @@ -9,7 +9,7 @@ branch = "redox" [build] dependencies = [ - "openssl" + "openssl1" ] template = "custom" script = """ diff --git a/recipes/toolkits/servo/recipe.sh b/recipes/toolkits/servo/recipe.sh index a436c4c3..b24a5804 100644 --- a/recipes/toolkits/servo/recipe.sh +++ b/recipes/toolkits/servo/recipe.sh @@ -1,7 +1,7 @@ GIT=https://gitlab.redox-os.org/redox-os/servo.git GIT_UPSTREAM=https://github.com/servo/servo.git BRANCH=redox -BUILD_DEPENDS=(freetype gettext glib gstreamer harfbuzz libffi libiconv libpng openssl pcre zlib) +BUILD_DEPENDS=(freetype2 gettext glib gstreamer harfbuzz libffi libiconv libpng openssl1 pcre zlib) PREPARE_COPY=0 function recipe_version { diff --git a/recipes/tools/curl/recipe.toml b/recipes/tools/curl/recipe.toml index 244f9c65..bd28bb6e 100644 --- a/recipes/tools/curl/recipe.toml +++ b/recipes/tools/curl/recipe.toml @@ -6,7 +6,7 @@ branch = "redox" template = "custom" dependencies = [ "nghttp2", - "openssl", + "openssl1", "zlib" ] script = """ diff --git a/recipes/tools/git/recipe.sh b/recipes/tools/git/recipe.sh index eeb4ef66..0d6f14c2 100644 --- a/recipes/tools/git/recipe.sh +++ b/recipes/tools/git/recipe.sh @@ -1,6 +1,6 @@ VERSION=2.13.1 TAR=https://www.kernel.org/pub/software/scm/git/git-$VERSION.tar.xz -BUILD_DEPENDS=(zlib curl openssl expat nghttp2) +BUILD_DEPENDS=(zlib curl openssl1 expat nghttp2) DEPENDS="ca-certificates" MAKEFLAGS=( diff --git a/recipes/tools/gitoxide/recipe.toml b/recipes/tools/gitoxide/recipe.toml index 4a531c08..4bd2cf93 100644 --- a/recipes/tools/gitoxide/recipe.toml +++ b/recipes/tools/gitoxide/recipe.toml @@ -3,7 +3,7 @@ git = "https://github.com/Byron/gitoxide.git" [build] dependencies = [ - "openssl", + "openssl1", ] template = "custom" script = """ diff --git a/recipes/tools/miniserve/recipe.sh b/recipes/tools/miniserve/recipe.sh index 9ae5bb15..fdd79422 100644 --- a/recipes/tools/miniserve/recipe.sh +++ b/recipes/tools/miniserve/recipe.sh @@ -1,2 +1,2 @@ GIT=https://gitlab.redox-os.org/redox-os/miniserve -BUILD_DEPENDS=(openssl zlib) +BUILD_DEPENDS=(openssl1 zlib) diff --git a/recipes/tools/schismtracker/recipe.sh b/recipes/tools/schismtracker/recipe.sh index 42e6e387..b7941467 100644 --- a/recipes/tools/schismtracker/recipe.sh +++ b/recipes/tools/schismtracker/recipe.sh @@ -1,7 +1,7 @@ VERSION=20181223 TAR=https://github.com/schismtracker/schismtracker/archive/$VERSION.tar.gz TAR_SHA256=fc32930c611fdb78face87dbe8a3c62e70088fd8d4ad803140e0b9a0b2e72ad7 -BUILD_DEPENDS=(sdl liborbital libiconv) +BUILD_DEPENDS=(sdl12 liborbital libiconv) function recipe_version { echo "$VERSION" diff --git a/recipes/tools/ssh/recipe.sh b/recipes/tools/ssh/recipe.sh index ef1cf953..6b8e08fb 100644 --- a/recipes/tools/ssh/recipe.sh +++ b/recipes/tools/ssh/recipe.sh @@ -1,6 +1,6 @@ VERSION=7.9p1 TAR=https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-$VERSION.tar.gz -BUILD_DEPENDS=(openssl zlib) +BUILD_DEPENDS=(openssl1 zlib) function recipe_version { echo "$VERSION" diff --git a/recipes/video/sdl-player/recipe.sh b/recipes/video/sdl-player/recipe.sh index c948178a..2d419ad6 100644 --- a/recipes/video/sdl-player/recipe.sh +++ b/recipes/video/sdl-player/recipe.sh @@ -1,5 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/sdl-player.git -BUILD_DEPENDS=(ffmpeg liborbital sdl zlib) +BUILD_DEPENDS=(ffmpeg6 liborbital sdl1 zlib) function recipe_version { echo "1.0.0" From 9fde6764b184c6ec219066b53aec158e37e9394a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 11 Dec 2023 09:39:00 -0700 Subject: [PATCH 1182/3180] Remove duplicate libiconv in wip --- recipes/wip/libiconv/recipe.toml | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 recipes/wip/libiconv/recipe.toml diff --git a/recipes/wip/libiconv/recipe.toml b/recipes/wip/libiconv/recipe.toml deleted file mode 100644 index 41cf2a78..00000000 --- a/recipes/wip/libiconv/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO Not compiled or tested -[source] -tar = "https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.17.tar.gz" -[build] -template = "configure" From 343a84bdb59989ed7b44275ad23af7c1b5d26ae6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 11 Dec 2023 09:45:22 -0700 Subject: [PATCH 1183/3180] openssl1: use specific branch for version 1 --- recipes/libs/openssl1/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/libs/openssl1/recipe.toml b/recipes/libs/openssl1/recipe.toml index 9220b1ac..55b707c0 100644 --- a/recipes/libs/openssl1/recipe.toml +++ b/recipes/libs/openssl1/recipe.toml @@ -1,6 +1,6 @@ [source] git = "https://gitlab.redox-os.org/redox-os/openssl.git" -branch = "redox" +branch = "redox-v1" [build] template = "custom" From 2c516de4de16c51c3956a642d1480af6ef0e6ed3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 11 Dec 2023 17:42:44 +0000 Subject: [PATCH 1184/3180] Update recipes --- recipes/wip/{emacs => emacs-nox}/recipe.toml | 0 recipes/wip/inkscape/recipe.toml | 5 ++++- recipes/wip/keepassxc/recipe.toml | 6 +++++- recipes/wip/libart/recipe.toml | 5 +++++ recipes/wip/libaspell/recipe.toml | 5 +++++ recipes/wip/liblapack/recipe.toml | 5 +++++ 6 files changed, 24 insertions(+), 2 deletions(-) rename recipes/wip/{emacs => emacs-nox}/recipe.toml (100%) create mode 100644 recipes/wip/libart/recipe.toml create mode 100644 recipes/wip/libaspell/recipe.toml create mode 100644 recipes/wip/liblapack/recipe.toml diff --git a/recipes/wip/emacs/recipe.toml b/recipes/wip/emacs-nox/recipe.toml similarity index 100% rename from recipes/wip/emacs/recipe.toml rename to recipes/wip/emacs-nox/recipe.toml diff --git a/recipes/wip/inkscape/recipe.toml b/recipes/wip/inkscape/recipe.toml index 0f0860db..6ff6b083 100644 --- a/recipes/wip/inkscape/recipe.toml +++ b/recipes/wip/inkscape/recipe.toml @@ -1,5 +1,5 @@ #TODO probably wrong script, see https://inkscape.org/develop/getting-started/#compile -#TODO missing dependencies, see: https://gitlab.com/inkscape/inkscape-ci-docker/-/raw/master/install_dependencies.sh +#TODO missing dependencies, see https://gitlab.com/inkscape/inkscape-ci-docker/-/raw/master/install_dependencies.sh [source] tar = "https://inkscape.org/gallery/item/44467/inkscape-1.3.1.tar.xz" [build] @@ -11,6 +11,7 @@ dependencies = [ "gtk3", "gtk3mm", "gdk-pixbuf", + "gtksourceview", "cairo", "cairomm", "pango", @@ -24,6 +25,7 @@ dependencies = [ "lib2geom", "atkmm", "harfbuzz", + "libblas", "libsoup", "libsigc++", "librsvg", @@ -38,6 +40,7 @@ dependencies = [ "libgspell-gtk3", "libjpeg-turbo", "liblcms", + "liblapack", ] script = """ COOKBOOK_CONFIGURE="cmake" diff --git a/recipes/wip/keepassxc/recipe.toml b/recipes/wip/keepassxc/recipe.toml index 222d23a7..3efeb2ee 100644 --- a/recipes/wip/keepassxc/recipe.toml +++ b/recipes/wip/keepassxc/recipe.toml @@ -1,5 +1,5 @@ #TODO probably wrong script, see https://github.com/keepassxreboot/keepassxc/wiki/Building-KeePassXC#linux -#TODO probably missing dependencies, see https://github.com/keepassxreboot/keepassxc/wiki/Building-KeePassXC#required-dependencies +#TODO probably missing dependencies, see https://github.com/keepassxreboot/keepassxc/wiki/Set-up-Build-Environment-on-Linux#install-the-required-dependencies [source] tar = "https://github.com/keepassxreboot/keepassxc/releases/download/2.7.6/keepassxc-2.7.6-src.tar.xz" [build] @@ -7,9 +7,13 @@ template = "custom" dependencies = [ "qt5-base", "qt5-svg", + "qt5-x11extras", "zlib", "libbotan", "libargon2", + "libxi", + "libxtst", + "readline", ] script = """ COOKBOOK_CONFIGURE="cmake" diff --git a/recipes/wip/libart/recipe.toml b/recipes/wip/libart/recipe.toml new file mode 100644 index 00000000..8549d7bf --- /dev/null +++ b/recipes/wip/libart/recipe.toml @@ -0,0 +1,5 @@ +#TODO probably wrong template +[source] +tar = "https://download.gnome.org/sources/libart_lgpl/2.3/libart_lgpl-2.3.21.tar.bz2" +[build] +template = "configure" diff --git a/recipes/wip/libaspell/recipe.toml b/recipes/wip/libaspell/recipe.toml new file mode 100644 index 00000000..0b3dc438 --- /dev/null +++ b/recipes/wip/libaspell/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://ftp.gnu.org/gnu/aspell/aspell-0.60.8.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/liblapack/recipe.toml b/recipes/wip/liblapack/recipe.toml new file mode 100644 index 00000000..fa272d81 --- /dev/null +++ b/recipes/wip/liblapack/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/Reference-LAPACK/lapack#installation +[source] +tar = "https://github.com/Reference-LAPACK/lapack/archive/refs/tags/v3.12.0.tar.gz" +[build] +template = "custom" From b3edf8397353ff5448878b91ac3271abad3517a9 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Tue, 12 Dec 2023 02:28:08 -0800 Subject: [PATCH 1185/3180] Update uutils to latest upstream Adds `stat` to list of commands to build. --- recipes/core/uutils/recipe.toml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/core/uutils/recipe.toml b/recipes/core/uutils/recipe.toml index c04c5718..5c75f10e 100644 --- a/recipes/core/uutils/recipe.toml +++ b/recipes/core/uutils/recipe.toml @@ -1,6 +1,6 @@ [source] -git = "https://gitlab.redox-os.org/redox-os/uutils.git" -branch = "redox" +git = "https://github.com/uutils/coreutils" +rev = "181cfc885b460bbcdf2cf1c866cb1ea48c3f6009" [build] template = "custom" @@ -63,6 +63,7 @@ BINS=( sleep sort split + stat sum tac tail From f803f75590cc01ed691d8a01d990181d66f644a2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 12 Dec 2023 10:12:31 -0700 Subject: [PATCH 1186/3180] schismtracker: fix sdl recipe name --- recipes/tools/schismtracker/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/tools/schismtracker/recipe.sh b/recipes/tools/schismtracker/recipe.sh index b7941467..1151f22c 100644 --- a/recipes/tools/schismtracker/recipe.sh +++ b/recipes/tools/schismtracker/recipe.sh @@ -1,7 +1,7 @@ VERSION=20181223 TAR=https://github.com/schismtracker/schismtracker/archive/$VERSION.tar.gz TAR_SHA256=fc32930c611fdb78face87dbe8a3c62e70088fd8d4ad803140e0b9a0b2e72ad7 -BUILD_DEPENDS=(sdl12 liborbital libiconv) +BUILD_DEPENDS=(sdl1 liborbital libiconv) function recipe_version { echo "$VERSION" From d163847ae742cfd2c0e5299b348db577cc95c239 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Tue, 12 Dec 2023 18:15:25 +0100 Subject: [PATCH 1187/3180] Move -z max-page-size from the target spec to the cookbook --- recipes/core/kernel/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/core/kernel/recipe.toml b/recipes/core/kernel/recipe.toml index 69794d4d..089e16b6 100644 --- a/recipes/core/kernel/recipe.toml +++ b/recipes/core/kernel/recipe.toml @@ -15,6 +15,7 @@ cargo rustc \ -- \ -C soft-float \ -C link-arg=-T -Clink-arg="${COOKBOOK_SOURCE}/linkers/${ARCH}.ld" \ + -C link-arg=-z -Clink-arg=max-page-size=0x1000 \ --emit link="${PWD}/kernel.all" "${TARGET}-objcopy" \ --only-keep-debug \ From 2b060444776112075d8764c088b92ca96d26bb2b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 12 Dec 2023 14:11:57 -0700 Subject: [PATCH 1188/3180] Fix jansson URL --- recipes/libs/jansson/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/libs/jansson/recipe.sh b/recipes/libs/jansson/recipe.sh index 451d2544..051ddc4b 100644 --- a/recipes/libs/jansson/recipe.sh +++ b/recipes/libs/jansson/recipe.sh @@ -1,5 +1,5 @@ VERSION=2.10 -TAR=https://www.digip.org/jansson/releases/jansson-$VERSION.tar.gz +TAR=https://github.com/akheron/jansson/releases/download/v$VERSION/jansson-$VERSION.tar.gz function recipe_version { echo "$VERSION" From 80cb620b9344f7469c02fc61970c5fdcd9dc9104 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 12 Dec 2023 19:20:15 -0700 Subject: [PATCH 1189/3180] mesa-glu: convert recipe to toml --- recipes/libs/mesa-glu/recipe.sh | 31 ------------------------------- recipes/libs/mesa-glu/recipe.toml | 11 +++++++++++ 2 files changed, 11 insertions(+), 31 deletions(-) delete mode 100644 recipes/libs/mesa-glu/recipe.sh create mode 100644 recipes/libs/mesa-glu/recipe.toml diff --git a/recipes/libs/mesa-glu/recipe.sh b/recipes/libs/mesa-glu/recipe.sh deleted file mode 100644 index 175759ac..00000000 --- a/recipes/libs/mesa-glu/recipe.sh +++ /dev/null @@ -1,31 +0,0 @@ -VERSION=9.0.1 -TAR=https://archive.mesa3d.org/glu/glu-$VERSION.tar.xz -BUILD_DEPENDS=(mesa) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export CPPFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib" - wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" - ./configure --build=${BUILD} --host="${HOST}" --prefix=/ --enable-osmesa - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/libs/mesa-glu/recipe.toml b/recipes/libs/mesa-glu/recipe.toml new file mode 100644 index 00000000..9844b0c8 --- /dev/null +++ b/recipes/libs/mesa-glu/recipe.toml @@ -0,0 +1,11 @@ +[source] +tar = "https://archive.mesa3d.org/glu/glu-9.0.1.tar.xz" +blake3 = "461543526cd681bc8fa91a1ece9519188c64ce7ad130a71213bdd0867e0884c9" + +[build] +dependencies = ["mesa"] +template = "custom" +script = """ +COOKBOOK_CONFIGURE_FLAGS+=(--enable-osmesa) +cookbook_configure +""" From d5fcda1bfbe907ecca6a884ae77ef699db058f56 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 12 Dec 2023 19:22:11 -0700 Subject: [PATCH 1190/3180] jansson: convert recipe to toml --- recipes/libs/jansson/recipe.sh | 27 --------------------------- recipes/libs/jansson/recipe.toml | 6 ++++++ 2 files changed, 6 insertions(+), 27 deletions(-) delete mode 100644 recipes/libs/jansson/recipe.sh create mode 100644 recipes/libs/jansson/recipe.toml diff --git a/recipes/libs/jansson/recipe.sh b/recipes/libs/jansson/recipe.sh deleted file mode 100644 index 051ddc4b..00000000 --- a/recipes/libs/jansson/recipe.sh +++ /dev/null @@ -1,27 +0,0 @@ -VERSION=2.10 -TAR=https://github.com/akheron/jansson/releases/download/v$VERSION/jansson-$VERSION.tar.gz - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export LDFLAGS="-L$sysroot/lib" - export CPPFLAGS="-I$sysroot/include" - ./configure --build=${BUILD} --host=${HOST} --prefix=/ - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - skip=1 -} diff --git a/recipes/libs/jansson/recipe.toml b/recipes/libs/jansson/recipe.toml new file mode 100644 index 00000000..a2c3ef42 --- /dev/null +++ b/recipes/libs/jansson/recipe.toml @@ -0,0 +1,6 @@ +[source] +tar = "https://github.com/akheron/jansson/releases/download/v2.10/jansson-2.10.tar.gz" +blake3 = "3c74f374a6c7ac5e323f72d87e49e5309ca922ca26cfe4992873b31f28776624" + +[build] +template = "configure" From 510e77dacdcd351aaa8da914e203dbf4ef8f10ff Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 12 Dec 2023 19:43:55 -0700 Subject: [PATCH 1191/3180] freeglut: convert to toml, move to wip --- recipes/libs/freeglut/recipe.sh | 34 ------------- .../libs/freeglut/redox_cross_toolchain.cmake | 1 - recipes/wip/freeglut/recipe.toml | 49 +++++++++++++++++++ 3 files changed, 49 insertions(+), 35 deletions(-) delete mode 100644 recipes/libs/freeglut/recipe.sh delete mode 100644 recipes/libs/freeglut/redox_cross_toolchain.cmake create mode 100644 recipes/wip/freeglut/recipe.toml diff --git a/recipes/libs/freeglut/recipe.sh b/recipes/libs/freeglut/recipe.sh deleted file mode 100644 index b9e4b08b..00000000 --- a/recipes/libs/freeglut/recipe.sh +++ /dev/null @@ -1,34 +0,0 @@ -TAR=https://cytranet.dl.sourceforge.net/project/freeglut/freeglut/3.0.0/freeglut-3.0.0.tar.gz - -BUILD_DEPENDS=(mesa mesa-glu) - -function recipe_version { - echo "3.0.0" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export CPPFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib" - cmake \ - -D CMAKE_TOOLCHAIN_FILE=../redox_cross_toolchain.cmake \ - -D CMAKE_INSTALL_PREFIX=/ \ - -D FREEGLUT_GLES=0 \ - . - #./configure --host="${HOST}" --prefix=/ --enable-osmesa - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - skip=1 -} diff --git a/recipes/libs/freeglut/redox_cross_toolchain.cmake b/recipes/libs/freeglut/redox_cross_toolchain.cmake deleted file mode 100644 index d2a3fb7b..00000000 --- a/recipes/libs/freeglut/redox_cross_toolchain.cmake +++ /dev/null @@ -1 +0,0 @@ -SET(CMAKE_SYSTEM_NAME Redox) diff --git a/recipes/wip/freeglut/recipe.toml b/recipes/wip/freeglut/recipe.toml new file mode 100644 index 00000000..cda38252 --- /dev/null +++ b/recipes/wip/freeglut/recipe.toml @@ -0,0 +1,49 @@ +[source] +tar = "https://cytranet.dl.sourceforge.net/project/freeglut/freeglut/3.0.0/freeglut-3.0.0.tar.gz" +blake3 = "08c8874d6ddad5be4860813865d4d4e2a84c294da0f3cf82a29e43920806b0da" + +[build] +dependencies = [ + "mesa", + "mesa-glu", +] +template = "custom" +script = """ +export CFLAGS="-I${COOKBOOK_SYSROOT}/include" +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include" +export CXXFLAGS="-I${COOKBOOK_SYSROOT}/include" +export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" + +cat > redox.cmake < Date: Tue, 12 Dec 2023 19:48:42 -0700 Subject: [PATCH 1192/3180] fribidi: convert to toml --- recipes/libs/fribidi/recipe.sh | 35 -------------------------------- recipes/libs/fribidi/recipe.toml | 12 +++++++++++ 2 files changed, 12 insertions(+), 35 deletions(-) delete mode 100644 recipes/libs/fribidi/recipe.sh create mode 100644 recipes/libs/fribidi/recipe.toml diff --git a/recipes/libs/fribidi/recipe.sh b/recipes/libs/fribidi/recipe.sh deleted file mode 100644 index 3cf59522..00000000 --- a/recipes/libs/fribidi/recipe.sh +++ /dev/null @@ -1,35 +0,0 @@ -VERSION="1.0.13" -TAR="https://github.com/fribidi/fribidi/releases/download/v${VERSION}/fribidi-${VERSION}.tar.xz" -BUILD_DEPENDS=() - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib --static" - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix=/ \ - --disable-shared \ - --enable-static - sed -i 's|#define HAVE_SYS_TIMES_H 1|/* #undef HAVE_SYS_TIMES_H */|g' config.h - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/libs/fribidi/recipe.toml b/recipes/libs/fribidi/recipe.toml new file mode 100644 index 00000000..f84cda4a --- /dev/null +++ b/recipes/libs/fribidi/recipe.toml @@ -0,0 +1,12 @@ +[source] +tar = "https://github.com/fribidi/fribidi/releases/download/v1.0.13/fribidi-1.0.13.tar.xz" +blake3 = "b43d333a98e39fc25cf7ce5fd11409424cf33e74aa28ec4a727f867aea83ce39" + +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + ac_cv_header_sys_times_h=no +) +cookbook_configure +""" From 2ac416fa07049e73efc162ab6f4a7f4ac06ed100 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 13 Dec 2023 14:22:47 -0700 Subject: [PATCH 1193/3180] Convert gawk recipe to toml, move to wip --- recipes/dev/gawk/recipe.sh | 20 -------------------- recipes/wip/gawk/recipe.toml | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 20 deletions(-) delete mode 100644 recipes/dev/gawk/recipe.sh create mode 100644 recipes/wip/gawk/recipe.toml diff --git a/recipes/dev/gawk/recipe.sh b/recipes/dev/gawk/recipe.sh deleted file mode 100644 index 6e616566..00000000 --- a/recipes/dev/gawk/recipe.sh +++ /dev/null @@ -1,20 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/gawk.git -GIT_UPSTREAM=https://git.savannah.gnu.org/git/gawk.git -BRANCH=redox - -function recipe_build { - ./configure --build=${BUILD} --host=${HOST} --prefix=/ ac_cv_func_gethostbyname=no ac_cv_func_connect=no - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - skip=1 -} diff --git a/recipes/wip/gawk/recipe.toml b/recipes/wip/gawk/recipe.toml new file mode 100644 index 00000000..098055ae --- /dev/null +++ b/recipes/wip/gawk/recipe.toml @@ -0,0 +1,15 @@ +#TODO: langinfo.h +[source] +git = "https://gitlab.redox-os.org/redox-os/gawk.git" +upstream = "https://git.savannah.gnu.org/git/gawk.git" +branch = "redox" + +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + ac_cv_func_gethostbyname=no + ac_cv_func_connect=no +) +cookbook_configure +""" From 4aefbfcc1273389ed68cbbcd6f41445ab6a0a4fa Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 13 Dec 2023 14:35:31 -0700 Subject: [PATCH 1194/3180] Convert pixman recipe to toml --- recipes/libs/pixman/recipe.sh | 31 ------------------------------- recipes/libs/pixman/recipe.toml | 7 +++++++ 2 files changed, 7 insertions(+), 31 deletions(-) delete mode 100644 recipes/libs/pixman/recipe.sh create mode 100644 recipes/libs/pixman/recipe.toml diff --git a/recipes/libs/pixman/recipe.sh b/recipes/libs/pixman/recipe.sh deleted file mode 100644 index 6db72d06..00000000 --- a/recipes/libs/pixman/recipe.sh +++ /dev/null @@ -1,31 +0,0 @@ -VERSION="0.42.2" -TAR=https://www.cairographics.org/releases/pixman-$VERSION.tar.gz - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix=/ \ - --disable-shared \ - --enable-static - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/libs/pixman/recipe.toml b/recipes/libs/pixman/recipe.toml new file mode 100644 index 00000000..8c4ddf89 --- /dev/null +++ b/recipes/libs/pixman/recipe.toml @@ -0,0 +1,7 @@ +[source] +tar = "https://www.cairographics.org/releases/pixman-0.42.2.tar.gz" +blake3 = "40f8a5cb809ae218ef33c75499d0fed6cbe625b26d78e88822304947cc07f183" +patches = ["redox.patch"] + +[build] +template = "configure" From e8178a71239fb39cd1f9034d83214a78c71c09e0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 13 Dec 2023 14:38:49 -0700 Subject: [PATCH 1195/3180] Convert cairo recipe to toml --- recipes/backends/cairo/recipe.sh | 39 ------------------------------ recipes/backends/cairo/recipe.toml | 28 +++++++++++++++++++++ 2 files changed, 28 insertions(+), 39 deletions(-) delete mode 100755 recipes/backends/cairo/recipe.sh create mode 100755 recipes/backends/cairo/recipe.toml diff --git a/recipes/backends/cairo/recipe.sh b/recipes/backends/cairo/recipe.sh deleted file mode 100755 index 9116f701..00000000 --- a/recipes/backends/cairo/recipe.sh +++ /dev/null @@ -1,39 +0,0 @@ -VERSION="1.16.0" -TAR=https://www.cairographics.org/releases/cairo-$VERSION.tar.xz -BUILD_DEPENDS=(expat freetype2 fontconfig libpng pixman zlib) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - #Workaround to disable the not redox compatible tests - printf "all:\n\ninstall:\n" > ./test/Makefile.in - printf "all:\n\ninstall:\n" > ./perf/Makefile.in - - sysroot="$(realpath ../sysroot)" - export LDFLAGS="-L$sysroot/lib" - export CPPFLAGS="-I$sysroot/include" - CFLAGS="-DCAIRO_NO_MUTEX=1" ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix=/ \ - --enable-xlib=no \ - --enable-script=no \ - --enable-interpreter=no - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/backends/cairo/recipe.toml b/recipes/backends/cairo/recipe.toml new file mode 100755 index 00000000..5c818838 --- /dev/null +++ b/recipes/backends/cairo/recipe.toml @@ -0,0 +1,28 @@ +[source] +tar = "https://www.cairographics.org/releases/cairo-1.16.0.tar.xz" +blake3 = "33e88a21de1fa52405f3952647b3bfd21d5d9d394e1abbc9ddb050a8ca09e35a" +script = """ +#Workaround to disable the not redox compatible tests +printf "all:\n\ninstall:\n" > ./test/Makefile.in +printf "all:\n\ninstall:\n" > ./perf/Makefile.in +""" + +[build] +dependencies = [ + "expat", + "freetype2", + "fontconfig", + "libpng", + "pixman", + "zlib", +] +template = "custom" +script = """ +export CFLAGS="-DCAIRO_NO_MUTEX=1" +COOKBOOK_CONFIGURE_FLAGS+=( + --enable-xlib=no + --enable-script=no + --enable-interpreter=no +) +cookbook_configure +""" From 561204cb568b6d8f81123d73867e293c361d9113 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 13 Dec 2023 14:52:36 -0700 Subject: [PATCH 1196/3180] Warn and create source dir if no source provided --- src/bin/cook.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index e8d5a8be..7a2c4edd 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -364,10 +364,11 @@ fi"#); // Local Sources None => { if ! source_dir.is_dir() { - return Err(format!( - "Recipe without source section expected source dir at '{}'", + eprintln!( + "WARNING: Recipe without source section expected source dir at '{}'", source_dir.display(), - )) + ); + create_dir(&source_dir)?; } }, } From 859ba461614bd584ec9aeab0a24a9f3a2930613a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 13 Dec 2023 14:52:50 -0700 Subject: [PATCH 1197/3180] cairodemo: convert to toml --- recipes/demos/cairodemo/recipe.sh | 34 ----------------------------- recipes/demos/cairodemo/recipe.toml | 27 +++++++++++++++++++++++ 2 files changed, 27 insertions(+), 34 deletions(-) delete mode 100755 recipes/demos/cairodemo/recipe.sh create mode 100755 recipes/demos/cairodemo/recipe.toml diff --git a/recipes/demos/cairodemo/recipe.sh b/recipes/demos/cairodemo/recipe.sh deleted file mode 100755 index c92c479b..00000000 --- a/recipes/demos/cairodemo/recipe.sh +++ /dev/null @@ -1,34 +0,0 @@ -BUILD_DEPENDS=(cairo expat fontconfig freetype2 liborbital libpng pixman zlib) - -function recipe_version { - printf "1.0.0" - skip=1 -} - -function recipe_prepare { - rm -rf source - mkdir source - cp cairodemo.c source -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export LDFLAGS="-L$sysroot/lib" - export CPPFLAGS="-I$sysroot/include" - set -x - "${CXX}" $("${PKG_CONFIG}" --cflags cairo) cairodemo.c -o cairodemo -static $("${PKG_CONFIG}" --libs cairo) -lorbital - set +x - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - mkdir -pv "$dest/bin" - cp -v "cairodemo" "$dest/bin/cairodemo" - skip=1 -} diff --git a/recipes/demos/cairodemo/recipe.toml b/recipes/demos/cairodemo/recipe.toml new file mode 100755 index 00000000..c4f58aac --- /dev/null +++ b/recipes/demos/cairodemo/recipe.toml @@ -0,0 +1,27 @@ +# source is part of cookbook + +[build] +dependencies = [ + "cairo", + "expat", + "fontconfig", + "freetype2", + "liborbital", + "libpng", + "pixman", + "zlib", +] +template = "custom" +script = """ +export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include" +"${CXX}" \ + $("${PKG_CONFIG}" --cflags cairo) \ + "${COOKBOOK_RECIPE}/cairodemo.c" \ + -o cairodemo \ + -static \ + $("${PKG_CONFIG}" --libs cairo) \ + -lorbital +mkdir -pv "${COOKBOOK_STAGE}/bin" +cp -v "cairodemo" "${COOKBOOK_STAGE}/bin/cairodemo" +""" From 7e696080e928cd9f062c0c5fdf27815018bc2f62 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 13 Dec 2023 14:56:11 -0700 Subject: [PATCH 1198/3180] diffutils: convert to toml --- recipes/tools/diffutils/recipe.sh | 36 ----------------------------- recipes/tools/diffutils/recipe.toml | 21 +++++++++++++++++ 2 files changed, 21 insertions(+), 36 deletions(-) delete mode 100644 recipes/tools/diffutils/recipe.sh create mode 100644 recipes/tools/diffutils/recipe.toml diff --git a/recipes/tools/diffutils/recipe.sh b/recipes/tools/diffutils/recipe.sh deleted file mode 100644 index 4d04c16b..00000000 --- a/recipes/tools/diffutils/recipe.sh +++ /dev/null @@ -1,36 +0,0 @@ -VERSION=3.6 -TAR=https://ftp.gnu.org/gnu/diffutils/diffutils-$VERSION.tar.xz - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - export LDFLAGS="-static" - autoreconf - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix=/ \ - gt_cv_locale_fr=false \ - gt_cv_locale_fr_utf8=false \ - gt_cv_locale_ja=false \ - gt_cv_locale_tr_utf8=false \ - gt_cv_locale_zh_CN=false - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - ${HOST}-strip "$dest"/bin/* - rm -rf "$dest"/{lib,share} - skip=1 -} diff --git a/recipes/tools/diffutils/recipe.toml b/recipes/tools/diffutils/recipe.toml new file mode 100644 index 00000000..0261fc5f --- /dev/null +++ b/recipes/tools/diffutils/recipe.toml @@ -0,0 +1,21 @@ +[source] +tar = "https://ftp.gnu.org/gnu/diffutils/diffutils-3.6.tar.xz" +blake3 = "086a95093c15edcdb826e75ff4de6c2213de6fbd2eb13538d07bdc3286dfb4a4" +patches = ["diffutils.patch"] +script = """ +autoreconf +""" + +[build] +template = "custom" +script = """ +export LDFLAGS="-static" +COOKBOOK_CONFIGURE_FLAGS+=( + gt_cv_locale_fr=false + gt_cv_locale_fr_utf8=false + gt_cv_locale_ja=false + gt_cv_locale_tr_utf8=false + gt_cv_locale_zh_CN=false +) +cookbook_configure +""" From b16722b8bd0caba24897a5c5bceeb6f469357088 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 13 Dec 2023 15:53:23 -0700 Subject: [PATCH 1199/3180] sdl1-mixer: convert to toml --- recipes/backends/sdl1-mixer/recipe.sh | 42 ------------------------- recipes/backends/sdl1-mixer/recipe.toml | 29 +++++++++++++++++ 2 files changed, 29 insertions(+), 42 deletions(-) delete mode 100644 recipes/backends/sdl1-mixer/recipe.sh create mode 100644 recipes/backends/sdl1-mixer/recipe.toml diff --git a/recipes/backends/sdl1-mixer/recipe.sh b/recipes/backends/sdl1-mixer/recipe.sh deleted file mode 100644 index 3213f3e8..00000000 --- a/recipes/backends/sdl1-mixer/recipe.sh +++ /dev/null @@ -1,42 +0,0 @@ -VERSION=1.2.12 -TAR=https://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-$VERSION.tar.gz -BUILD_DEPENDS=(sdl1 liborbital libogg libvorbis) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib" - export LIBS="-lvorbis -logg" - ./autogen.sh - ./configure \ - --prefix=/ \ - --build=${BUILD} \ - --host=${HOST} \ - --enable-music-ogg \ - --enable-music-midi \ - --disable-shared \ - --disable-sdltest \ - --disable-music-cmd \ - --disable-music-mp3 \ - --disable-smpegtest \ - --disable-music-mod - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/backends/sdl1-mixer/recipe.toml b/recipes/backends/sdl1-mixer/recipe.toml new file mode 100644 index 00000000..3e19795a --- /dev/null +++ b/recipes/backends/sdl1-mixer/recipe.toml @@ -0,0 +1,29 @@ +[source] +tar = "https://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-1.2.12.tar.gz" +blake3 = "ef23bab2d42250dfdc51ce6939ee7b393973ff11a0dd3481f32180b489d2661c" +patches = ["redox.patch"] +script = """ +./autogen.sh +""" + +[build] +dependencies = [ + "libogg", + "liborbital", + "libvorbis", + "sdl1", +] +template = "custom" +script = """ +export LIBS="-lvorbis -logg" +COOKBOOK_CONFIGURE_FLAGS+=( + --enable-music-ogg + --enable-music-midi + --disable-sdltest + --disable-music-cmd + --disable-music-mp3 + --disable-smpegtest + --disable-music-mod +) +cookbook_configure +""" From 694f63120f3c1f48cf1bbbff287a12746a017165 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 13 Dec 2023 15:53:34 -0700 Subject: [PATCH 1200/3180] dosbox: convert to toml --- recipes/emulators/dosbox/recipe.sh | 44 ---------------------------- recipes/emulators/dosbox/recipe.toml | 32 ++++++++++++++++++++ 2 files changed, 32 insertions(+), 44 deletions(-) delete mode 100644 recipes/emulators/dosbox/recipe.sh create mode 100644 recipes/emulators/dosbox/recipe.toml diff --git a/recipes/emulators/dosbox/recipe.sh b/recipes/emulators/dosbox/recipe.sh deleted file mode 100644 index 91376e0e..00000000 --- a/recipes/emulators/dosbox/recipe.sh +++ /dev/null @@ -1,44 +0,0 @@ -VERSION=0.74-3 -TAR=https://sourceforge.net/projects/dosbox/files/dosbox/$VERSION/dosbox-$VERSION.tar.gz/download -BUILD_DEPENDS=(sdl1 liborbital) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include/SDL" - export CPPFLAGS="-I$sysroot/include/SDL" - export LDFLAGS="-L$sysroot/lib -static" - ./autogen.sh - wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix='' \ - --disable-opengl \ - --disable-sdltest \ - --with-sdl-prefix="$sysroot" - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - - mkdir -pv "$1/ui/apps" - cp -v "${COOKBOOK_RECIPE}/manifest" "$1/ui/apps/dosbox" - - mkdir -pv "$1/ui/icons/apps" - cp -v "${COOKBOOK_RECIPE}/icon.png" "$1/ui/icons/apps/dosbox.png" - - skip=1 -} diff --git a/recipes/emulators/dosbox/recipe.toml b/recipes/emulators/dosbox/recipe.toml new file mode 100644 index 00000000..e3cf69f1 --- /dev/null +++ b/recipes/emulators/dosbox/recipe.toml @@ -0,0 +1,32 @@ +[source] +tar = "https://sourceforge.net/projects/dosbox/files/dosbox/0.74-3/dosbox-0.74-3.tar.gz/download" +blake3 = "8bc50ffdba20579fb3080a0dca32cb939c8a3c19259aed026482c6ac069b0007" +patches = ["01_redox.patch"] +script = """ +./autogen.sh +wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +""" + +[build] +dependencies = [ + "liborbital", + "sdl1", +] +template = "custom" +script = """ +export CFLAGS="-I${COOKBOOK_SYSROOT}/include/SDL" +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/SDL" +export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib -static" +COOKBOOK_CONFIGURE_FLAGS+=( + --disable-opengl + --disable-sdltest + --with-sdl-prefix="${COOKBOOK_SYSROOT}" +) +cookbook_configure + +mkdir -pv "${COOKBOOK_STAGE}/ui/apps" +cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/dosbox" + +mkdir -pv "${COOKBOOK_STAGE}/ui/icons/apps" +cp -v "${COOKBOOK_RECIPE}/icon.png" "${COOKBOOK_STAGE}/ui/icons/apps/dosbox.png" +""" From f8fe4deadf60646b829c1b9f921eb89dfc5f3f89 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 13 Dec 2023 15:53:46 -0700 Subject: [PATCH 1201/3180] freepats: convert to toml --- recipes/sound/freepats/recipe.sh | 26 -------------------------- recipes/sound/freepats/recipe.toml | 12 ++++++++++++ 2 files changed, 12 insertions(+), 26 deletions(-) delete mode 100644 recipes/sound/freepats/recipe.sh create mode 100644 recipes/sound/freepats/recipe.toml diff --git a/recipes/sound/freepats/recipe.sh b/recipes/sound/freepats/recipe.sh deleted file mode 100644 index 16006479..00000000 --- a/recipes/sound/freepats/recipe.sh +++ /dev/null @@ -1,26 +0,0 @@ -VERSION=20060219 -GIT=https://gitlab.redox-os.org/redox-os/freepats.git - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - echo "skipping build" - skip=1 -} - -function recipe_clean { - echo "skipping clean" - skip=1 -} - -function recipe_stage { - mkdir -pv "$1/share/freepats" - cp -Rv ./* "$1/share/freepats" - mkdir -pv "$1/etc/timidity" - echo "dir /share/freepats" > "$1/etc/timidity/freepats.cfg" - echo "source /share/freepats/freepats.cfg" >> "$1/etc/timidity/freepats.cfg" - skip=1 -} diff --git a/recipes/sound/freepats/recipe.toml b/recipes/sound/freepats/recipe.toml new file mode 100644 index 00000000..67bc257f --- /dev/null +++ b/recipes/sound/freepats/recipe.toml @@ -0,0 +1,12 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/freepats.git" + +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}/share/freepats" +cp -Rv "${COOKBOOK_SOURCE}/"* "${COOKBOOK_STAGE}/share/freepats" +mkdir -pv "${COOKBOOK_STAGE}/etc/timidity" +echo "dir /share/freepats" > "${COOKBOOK_STAGE}/etc/timidity/freepats.cfg" +echo "source /share/freepats/freepats.cfg" >> "${COOKBOOK_STAGE}/etc/timidity/freepats.cfg" +""" From 9ad1b9cc00638c2055bb7393a2b267f3268bd0ed Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 13 Dec 2023 15:54:00 -0700 Subject: [PATCH 1202/3180] eduke32: convert to toml --- recipes/games/eduke32/recipe.sh | 37 ------------------------------- recipes/games/eduke32/recipe.toml | 35 +++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 37 deletions(-) delete mode 100644 recipes/games/eduke32/recipe.sh create mode 100644 recipes/games/eduke32/recipe.toml diff --git a/recipes/games/eduke32/recipe.sh b/recipes/games/eduke32/recipe.sh deleted file mode 100644 index 855d3e18..00000000 --- a/recipes/games/eduke32/recipe.sh +++ /dev/null @@ -1,37 +0,0 @@ -VERSION=20181010-7067 -TAR=https://dukeworld.com/eduke32/synthesis/$VERSION/eduke32_src_$VERSION.tar.xz -BUILD_DEPENDS=(sdl1 sdl1-mixer liborbital libiconv libogg libvorbis) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include -I$sysroot/include/SDL" - export LDFLAGS="-L$sysroot/lib -static" - export SDLCONFIG="$sysroot/bin/sdl-config --prefix=$sysroot" - - PLATFORM=REDOX "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - mkdir -pv "$1/games" - cp -v ./eduke32 "$1/games/eduke32" - cp -v ./mapster32 "$1/games/mapster32" - - mkdir -pv "$1/ui/apps" - cp -v "${COOKBOOK_RECIPE}/manifest" "$1/ui/apps/eduke32" - - mkdir -pv "$1/ui/icons/apps" - cp -v "${COOKBOOK_RECIPE}/icon.png" "$1/ui/icons/apps/eduke32.png" - - skip=1 -} diff --git a/recipes/games/eduke32/recipe.toml b/recipes/games/eduke32/recipe.toml new file mode 100644 index 00000000..e150b2c8 --- /dev/null +++ b/recipes/games/eduke32/recipe.toml @@ -0,0 +1,35 @@ +[source] +tar = "https://dukeworld.com/eduke32/synthesis/20181010-7067/eduke32_src_20181010-7067.tar.xz" +blake3 = "b0b759fe9ca51849f42669e4832ae1ae1f9ad7938529769108f7cf6a6a176558" +patches = ["redox.patch"] + +[build] +dependencies = [ + "sdl1", + "sdl1-mixer", + "liborbital", + "libiconv", + "libogg", + "libvorbis", +] +template = "custom" +script = """ +# Copy source to build directory +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ + +export CFLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL" +export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib -static" +export SDLCONFIG="${COOKBOOK_SYSROOT}/bin/sdl-config --prefix=${COOKBOOK_SYSROOT}" + +PLATFORM=REDOX "${COOKBOOK_MAKE}" -j"$($NPROC)" + +mkdir -pv "${COOKBOOK_STAGE}/games" +cp -v ./eduke32 "${COOKBOOK_STAGE}/games/eduke32" +cp -v ./mapster32 "${COOKBOOK_STAGE}/games/mapster32" + +mkdir -pv "${COOKBOOK_STAGE}/ui/apps" +cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/eduke32" + +mkdir -pv "${COOKBOOK_STAGE}/ui/icons/apps" +cp -v "${COOKBOOK_RECIPE}/icon.png" "${COOKBOOK_STAGE}/ui/icons/apps/eduke32.png" +""" From ed2ff72f7c30009efdc822c34e66b1af09bb9331 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 13 Dec 2023 15:54:09 -0700 Subject: [PATCH 1203/3180] freedoom: convert to toml --- recipes/games/freedoom/recipe.sh | 41 ------------------------------ recipes/games/freedoom/recipe.toml | 33 ++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 41 deletions(-) delete mode 100644 recipes/games/freedoom/recipe.sh create mode 100644 recipes/games/freedoom/recipe.toml diff --git a/recipes/games/freedoom/recipe.sh b/recipes/games/freedoom/recipe.sh deleted file mode 100644 index 6ff61e46..00000000 --- a/recipes/games/freedoom/recipe.sh +++ /dev/null @@ -1,41 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/freedoom.git -DEPENDS=(ion prboom) - -function recipe_version { - echo "0.11.3" - skip=1 -} - -function recipe_build { - echo "skipping build" - skip=1 -} - -function recipe_clean { - echo "skipping clean" - skip=1 -} - -function recipe_stage { - mkdir -pv "$1/games" "$1/share/games/doom" "$1/ui/apps" "$1/ui/icons/apps" - for file in ./*.wad - do - game="$(basename "$file" .wad)" - - wad="/share/games/doom/$game.wad" - cp -v "$file" "$1$wad" - - bin="/games/$game" - echo "#!/bin/ion" > "$1$bin" - echo "/games/prboom -geom 800x600 -vidmode 32 -iwad $wad" >> "$1$bin" - chmod +x "$1$bin" - - echo "name=$game" | sed 's/freedoom/FreeDOOM: Phase /' | sed 's/doom1/DOOM (Shareware)/' > "$1/ui/apps/$game" - echo "category=Games" >> "$1/ui/apps/$game" - echo "binary=/games/$game" >> "$1/ui/apps/$game" - echo "icon=/ui/icons/apps/$game.png" >> "$1/ui/apps/$game" - - cp -v "$game.png" "$1/ui/icons/apps/$game.png" - done - skip=1 -} diff --git a/recipes/games/freedoom/recipe.toml b/recipes/games/freedoom/recipe.toml new file mode 100644 index 00000000..3a4be6ed --- /dev/null +++ b/recipes/games/freedoom/recipe.toml @@ -0,0 +1,33 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/freedoom.git" + +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}/games" "${COOKBOOK_STAGE}/share/games/doom" "${COOKBOOK_STAGE}/ui/apps" "${COOKBOOK_STAGE}/ui/icons/apps" +for file in "${COOKBOOK_SOURCE}/"*.wad +do + game="$(basename "$file" .wad)" + + wad="/share/games/doom/$game.wad" + cp -v "$file" "${COOKBOOK_STAGE}$wad" + + bin="/games/$game" + echo "#!/bin/ion" > "${COOKBOOK_STAGE}$bin" + echo "/games/prboom -geom 800x600 -vidmode 32 -iwad $wad" >> "${COOKBOOK_STAGE}$bin" + chmod +x "${COOKBOOK_STAGE}$bin" + + echo "name=$game" | sed 's/freedoom/FreeDOOM: Phase /' | sed 's/doom1/DOOM (Shareware)/' > "${COOKBOOK_STAGE}/ui/apps/$game" + echo "category=Games" >> "${COOKBOOK_STAGE}/ui/apps/$game" + echo "binary=/games/$game" >> "${COOKBOOK_STAGE}/ui/apps/$game" + echo "icon=/ui/icons/apps/$game.png" >> "${COOKBOOK_STAGE}/ui/apps/$game" + + cp -v "${COOKBOOK_SOURCE}/$game.png" "${COOKBOOK_STAGE}/ui/icons/apps/$game.png" +done +""" + +[package] +dependencies = [ + "ion", + "prboom", +] From bc9ee36d5c65aad7be022bacdc0a6658481edee9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 13 Dec 2023 15:54:21 -0700 Subject: [PATCH 1204/3180] relibc: use correct variable for make --- recipes/core/relibc/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/core/relibc/recipe.toml b/recipes/core/relibc/recipe.toml index f7078a57..7213c52d 100644 --- a/recipes/core/relibc/recipe.toml +++ b/recipes/core/relibc/recipe.toml @@ -5,5 +5,5 @@ git = "https://gitlab.redox-os.org/redox-os/relibc.git" template = "custom" script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ -"$REDOX_MAKE" CARGO="env -u CARGO cargo" -j"$($NPROC)" DESTDIR="${COOKBOOK_STAGE}" install +"${COOKBOOK_MAKE}" CARGO="env -u CARGO cargo" -j"$($NPROC)" DESTDIR="${COOKBOOK_STAGE}" install """ From 6156be4571a6cd31a95b7d323bb5596fe88a3ea7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 14 Dec 2023 00:34:44 +0000 Subject: [PATCH 1205/3180] Update recipes --- recipes/wip/apitrace/recipe.toml | 6 ++++++ recipes/wip/capstone/recipe.toml | 5 +++++ recipes/wip/cling/recipe.toml | 5 +++++ recipes/wip/firedbg/recipe.toml | 5 +++++ recipes/wip/hx/recipe.toml | 5 +++++ recipes/wip/{skia => libskia}/recipe.toml | 0 recipes/wip/nano/recipe.toml | 6 +++++- recipes/wip/netop/recipe.toml | 8 ++++++++ recipes/wip/succeed2ban-tui/recipe.toml | 5 +++++ recipes/wip/svt-av1/recipe.toml | 2 +- recipes/wip/tracy/recipe.toml | 11 +++++++++++ recipes/wip/xwayland/recipe.toml | 2 +- 12 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 recipes/wip/apitrace/recipe.toml create mode 100644 recipes/wip/capstone/recipe.toml create mode 100644 recipes/wip/cling/recipe.toml create mode 100644 recipes/wip/firedbg/recipe.toml create mode 100644 recipes/wip/hx/recipe.toml rename recipes/wip/{skia => libskia}/recipe.toml (100%) create mode 100644 recipes/wip/netop/recipe.toml create mode 100644 recipes/wip/succeed2ban-tui/recipe.toml create mode 100644 recipes/wip/tracy/recipe.toml diff --git a/recipes/wip/apitrace/recipe.toml b/recipes/wip/apitrace/recipe.toml new file mode 100644 index 00000000..ab5fb810 --- /dev/null +++ b/recipes/wip/apitrace/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for CMake, see https://github.com/apitrace/apitrace/blob/master/docs/INSTALL.markdown#linux +[source] +git = "https://github.com/apitrace/apitrace" +rev = "9352fc02bba106fbbeef9e8452ef34643c0d0764" +[build] +template = "custom" diff --git a/recipes/wip/capstone/recipe.toml b/recipes/wip/capstone/recipe.toml new file mode 100644 index 00000000..8a2eea77 --- /dev/null +++ b/recipes/wip/capstone/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for building, see https://github.com/capstone-engine/capstone/blob/next/COMPILE.TXT +[source] +tar = "https://github.com/capstone-engine/capstone/archive/refs/tags/5.0.1.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/cling/recipe.toml b/recipes/wip/cling/recipe.toml new file mode 100644 index 00000000..3471b28c --- /dev/null +++ b/recipes/wip/cling/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/vgvassilev/cling#building-from-source +[source] +tar = "https://github.com/vgvassilev/cling/archive/refs/tags/v1.0.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/firedbg/recipe.toml b/recipes/wip/firedbg/recipe.toml new file mode 100644 index 00000000..15c3cf55 --- /dev/null +++ b/recipes/wip/firedbg/recipe.toml @@ -0,0 +1,5 @@ +#TODO probably wrong template, if it doesn't work use the "command" package +[source] +tar = "https://github.com/SeaQL/FireDBG.for.Rust/archive/refs/tags/1.74.1.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/hx/recipe.toml b/recipes/wip/hx/recipe.toml new file mode 100644 index 00000000..b1673a81 --- /dev/null +++ b/recipes/wip/hx/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for "make", see https://github.com/krpors/hx#compiling-and-running +[source] +tar = "https://github.com/krpors/hx/archive/refs/tags/v1.0.14.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/skia/recipe.toml b/recipes/wip/libskia/recipe.toml similarity index 100% rename from recipes/wip/skia/recipe.toml rename to recipes/wip/libskia/recipe.toml diff --git a/recipes/wip/nano/recipe.toml b/recipes/wip/nano/recipe.toml index 89990c75..0ad7927f 100644 --- a/recipes/wip/nano/recipe.toml +++ b/recipes/wip/nano/recipe.toml @@ -2,7 +2,11 @@ [source] tar = "https://www.nano-editor.org/dist/v7/nano-7.2.tar.xz" [build] -template = "configure" +template = "custom" dependencies = [ "ncurses", ] +script = """ +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include" +cookbook_configure +""" diff --git a/recipes/wip/netop/recipe.toml b/recipes/wip/netop/recipe.toml new file mode 100644 index 00000000..cdeca28a --- /dev/null +++ b/recipes/wip/netop/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ZingerLittleBee/netop" +[build] +template = "cargo" +dependencies = [ + "libpcap", +] diff --git a/recipes/wip/succeed2ban-tui/recipe.toml b/recipes/wip/succeed2ban-tui/recipe.toml new file mode 100644 index 00000000..df20b74c --- /dev/null +++ b/recipes/wip/succeed2ban-tui/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/J-Bockhofer/succeed2ban-tui" +[build] +template = "cargo" diff --git a/recipes/wip/svt-av1/recipe.toml b/recipes/wip/svt-av1/recipe.toml index 67975389..9c81d55d 100644 --- a/recipes/wip/svt-av1/recipe.toml +++ b/recipes/wip/svt-av1/recipe.toml @@ -1,5 +1,5 @@ #TODO missing script for building, see https://gitlab.com/AOMediaCodec/SVT-AV1/-/blob/master/Docs/Build-Guide.md#linux-operating-systems-64-bit [source] -tar = "https://gitlab.com/AOMediaCodec/SVT-AV1/-/archive/v1.7.0/SVT-AV1-v1.7.0.tar.bz2" +tar = "https://gitlab.com/AOMediaCodec/SVT-AV1/-/archive/v1.8.0/SVT-AV1-v1.8.0.tar.bz2" [build] template = "custom" diff --git a/recipes/wip/tracy/recipe.toml b/recipes/wip/tracy/recipe.toml new file mode 100644 index 00000000..1dd2a876 --- /dev/null +++ b/recipes/wip/tracy/recipe.toml @@ -0,0 +1,11 @@ +#TODO missing script for "make", see https://github.com/wolfpld/tracy/releases/latest/download/tracy.pdf +[source] +tar = "https://github.com/wolfpld/tracy/archive/refs/tags/v0.10.tar.gz" +[build] +template = "custom" +dependencies = [ + "glfw", + "freetype2", + "dbus", + "capstone", +] diff --git a/recipes/wip/xwayland/recipe.toml b/recipes/wip/xwayland/recipe.toml index 7fad169d..7a80c442 100644 --- a/recipes/wip/xwayland/recipe.toml +++ b/recipes/wip/xwayland/recipe.toml @@ -1,6 +1,6 @@ #TODO missing script for Meson, see https://wayland.freedesktop.org/xserver.html#heading_toc_j_3 [source] -tar = "https://www.x.org/releases/individual/xserver/xwayland-23.1.1.tar.xz" +tar = "https://www.x.org/releases/individual/xserver/xwayland-23.2.3.tar.xz" [build] template = "custom" dependencies = [ From 4accfce7dd047d58563229c7462b2161f8fc38b4 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 14 Dec 2023 06:50:15 +0000 Subject: [PATCH 1206/3180] Add recipes --- recipes/wip/avp/recipe.toml | 8 ++++++++ recipes/wip/blockish-caca/recipe.toml | 8 ++++++++ recipes/wip/festival/recipe.toml | 3 ++- recipes/wip/glou/recipe.toml | 5 +++++ recipes/wip/glsl-viewer/recipe.toml | 14 ++++++++++++++ recipes/wip/libcaca/recipe.toml | 5 +++++ recipes/wip/libdmx/recipe.toml | 5 +++++ recipes/wip/libfontenc/recipe.toml | 5 +++++ recipes/wip/libfs/recipe.toml | 5 +++++ recipes/wip/libice/recipe.toml | 5 +++++ recipes/wip/libsm/recipe.toml | 5 +++++ recipes/wip/libxau/recipe.toml | 5 +++++ recipes/wip/libxaw/recipe.toml | 5 +++++ recipes/wip/libxdamage/recipe.toml | 5 +++++ recipes/wip/libxdmcp/recipe.toml | 5 +++++ recipes/wip/libxext/recipe.toml | 5 +++++ recipes/wip/libxmu/recipe.toml | 5 +++++ recipes/wip/libxpm/recipe.toml | 5 +++++ recipes/wip/libxres/recipe.toml | 5 +++++ recipes/wip/libxss/recipe.toml | 5 +++++ recipes/wip/libxv/recipe.toml | 5 +++++ recipes/wip/libxvmc/recipe.toml | 5 +++++ recipes/wip/shadergarden/recipe.toml | 5 +++++ recipes/wip/viu/recipe.toml | 5 +++++ recipes/wip/x11proto/recipe.toml | 5 +++++ recipes/wip/zeal/recipe.toml | 12 ++++++++++++ 26 files changed, 149 insertions(+), 1 deletion(-) create mode 100644 recipes/wip/avp/recipe.toml create mode 100644 recipes/wip/blockish-caca/recipe.toml create mode 100644 recipes/wip/glou/recipe.toml create mode 100644 recipes/wip/glsl-viewer/recipe.toml create mode 100644 recipes/wip/libcaca/recipe.toml create mode 100644 recipes/wip/libdmx/recipe.toml create mode 100644 recipes/wip/libfontenc/recipe.toml create mode 100644 recipes/wip/libfs/recipe.toml create mode 100644 recipes/wip/libice/recipe.toml create mode 100644 recipes/wip/libsm/recipe.toml create mode 100644 recipes/wip/libxau/recipe.toml create mode 100644 recipes/wip/libxaw/recipe.toml create mode 100644 recipes/wip/libxdamage/recipe.toml create mode 100644 recipes/wip/libxdmcp/recipe.toml create mode 100644 recipes/wip/libxext/recipe.toml create mode 100644 recipes/wip/libxmu/recipe.toml create mode 100644 recipes/wip/libxpm/recipe.toml create mode 100644 recipes/wip/libxres/recipe.toml create mode 100644 recipes/wip/libxss/recipe.toml create mode 100644 recipes/wip/libxv/recipe.toml create mode 100644 recipes/wip/libxvmc/recipe.toml create mode 100644 recipes/wip/shadergarden/recipe.toml create mode 100644 recipes/wip/viu/recipe.toml create mode 100644 recipes/wip/x11proto/recipe.toml create mode 100644 recipes/wip/zeal/recipe.toml diff --git a/recipes/wip/avp/recipe.toml b/recipes/wip/avp/recipe.toml new file mode 100644 index 00000000..aa85c15c --- /dev/null +++ b/recipes/wip/avp/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/rust-av/avp" +[build] +template = "cargo" +dependencies = [ + "sdl2", +] diff --git a/recipes/wip/blockish-caca/recipe.toml b/recipes/wip/blockish-caca/recipe.toml new file mode 100644 index 00000000..f4b860a1 --- /dev/null +++ b/recipes/wip/blockish-caca/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/yazgoo/blockish-caca" +[build] +template = "cargo" +dependencies = [ + "libcaca", +] diff --git a/recipes/wip/festival/recipe.toml b/recipes/wip/festival/recipe.toml index 82640cf4..63ed4cb9 100644 --- a/recipes/wip/festival/recipe.toml +++ b/recipes/wip/festival/recipe.toml @@ -1,6 +1,7 @@ -#TODO make dbus work +#TODO make D-Bus work [source] git = "https://github.com/hinto-janai/festival" +rev = "512dc7bfc76341c0e06902252c634e24700d7140" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/glou/recipe.toml b/recipes/wip/glou/recipe.toml new file mode 100644 index 00000000..0a7b69f9 --- /dev/null +++ b/recipes/wip/glou/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Nurrl/glou" +[build] +template = "cargo" diff --git a/recipes/wip/glsl-viewer/recipe.toml b/recipes/wip/glsl-viewer/recipe.toml new file mode 100644 index 00000000..93c7c6a2 --- /dev/null +++ b/recipes/wip/glsl-viewer/recipe.toml @@ -0,0 +1,14 @@ +#TODO missing script for CMake, see https://github.com/patriciogonzalezvivo/glslViewer/wiki/Compile-on-linux#3-compile +#TODO determine the X11 libraries +[source] +git = "https://github.com/patriciogonzalezvivo/glslViewer" +rev = "7eb6254cb4cedf03f1c78653f90905fe0c3b48fb" +[build] +template = "custom" +dependencies = [ + "mesa-glu", + "ncurses", + "ncursesw", + "ffmpeg6", + "glfw", +] diff --git a/recipes/wip/libcaca/recipe.toml b/recipes/wip/libcaca/recipe.toml new file mode 100644 index 00000000..eda7cbe5 --- /dev/null +++ b/recipes/wip/libcaca/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "http://caca.zoy.org/files/libcaca/libcaca-0.99.beta19.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/libdmx/recipe.toml b/recipes/wip/libdmx/recipe.toml new file mode 100644 index 00000000..537e9cf1 --- /dev/null +++ b/recipes/wip/libdmx/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/lib/libdmx-1.1.5.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libfontenc/recipe.toml b/recipes/wip/libfontenc/recipe.toml new file mode 100644 index 00000000..dfedd2c4 --- /dev/null +++ b/recipes/wip/libfontenc/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/lib/libfontenc-1.1.7.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libfs/recipe.toml b/recipes/wip/libfs/recipe.toml new file mode 100644 index 00000000..b9db8b51 --- /dev/null +++ b/recipes/wip/libfs/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/lib/libFS-1.0.9.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libice/recipe.toml b/recipes/wip/libice/recipe.toml new file mode 100644 index 00000000..9ee70ad5 --- /dev/null +++ b/recipes/wip/libice/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/lib/libICE-1.1.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libsm/recipe.toml b/recipes/wip/libsm/recipe.toml new file mode 100644 index 00000000..4889b995 --- /dev/null +++ b/recipes/wip/libsm/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/lib/libSM-1.2.4.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libxau/recipe.toml b/recipes/wip/libxau/recipe.toml new file mode 100644 index 00000000..f1b2e711 --- /dev/null +++ b/recipes/wip/libxau/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/lib/libXau-1.0.11.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libxaw/recipe.toml b/recipes/wip/libxaw/recipe.toml new file mode 100644 index 00000000..a635b4ea --- /dev/null +++ b/recipes/wip/libxaw/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/lib/libXaw-1.0.15.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libxdamage/recipe.toml b/recipes/wip/libxdamage/recipe.toml new file mode 100644 index 00000000..81d83698 --- /dev/null +++ b/recipes/wip/libxdamage/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/lib/libXdamage-1.1.6.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libxdmcp/recipe.toml b/recipes/wip/libxdmcp/recipe.toml new file mode 100644 index 00000000..12234485 --- /dev/null +++ b/recipes/wip/libxdmcp/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/lib/libXdmcp-1.1.4.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libxext/recipe.toml b/recipes/wip/libxext/recipe.toml new file mode 100644 index 00000000..25037345 --- /dev/null +++ b/recipes/wip/libxext/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/lib/libXext-1.3.5.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libxmu/recipe.toml b/recipes/wip/libxmu/recipe.toml new file mode 100644 index 00000000..e2dfad11 --- /dev/null +++ b/recipes/wip/libxmu/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/lib/libXmu-1.1.4.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libxpm/recipe.toml b/recipes/wip/libxpm/recipe.toml new file mode 100644 index 00000000..158af098 --- /dev/null +++ b/recipes/wip/libxpm/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/lib/libXpm-3.5.17.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libxres/recipe.toml b/recipes/wip/libxres/recipe.toml new file mode 100644 index 00000000..0ec2ec7f --- /dev/null +++ b/recipes/wip/libxres/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/lib/libXres-1.2.2.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libxss/recipe.toml b/recipes/wip/libxss/recipe.toml new file mode 100644 index 00000000..f200cc56 --- /dev/null +++ b/recipes/wip/libxss/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/lib/libXScrnSaver-1.2.4.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libxv/recipe.toml b/recipes/wip/libxv/recipe.toml new file mode 100644 index 00000000..abc0c83e --- /dev/null +++ b/recipes/wip/libxv/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/lib/libXv-1.0.12.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libxvmc/recipe.toml b/recipes/wip/libxvmc/recipe.toml new file mode 100644 index 00000000..6607e8bf --- /dev/null +++ b/recipes/wip/libxvmc/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/lib/libXvMC-1.0.13.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/shadergarden/recipe.toml b/recipes/wip/shadergarden/recipe.toml new file mode 100644 index 00000000..60d7d78e --- /dev/null +++ b/recipes/wip/shadergarden/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/tonarino/shadergarden" +[build] +template = "cargo" diff --git a/recipes/wip/viu/recipe.toml b/recipes/wip/viu/recipe.toml new file mode 100644 index 00000000..4d0a4425 --- /dev/null +++ b/recipes/wip/viu/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/atanunq/viu/archive/refs/tags/v1.5.0.tar.gz" +[build] +template = "cargo" diff --git a/recipes/wip/x11proto/recipe.toml b/recipes/wip/x11proto/recipe.toml new file mode 100644 index 00000000..fb7df948 --- /dev/null +++ b/recipes/wip/x11proto/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://www.x.org/releases/individual/proto/xorgproto-2023.2.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/zeal/recipe.toml b/recipes/wip/zeal/recipe.toml new file mode 100644 index 00000000..39fa5a2e --- /dev/null +++ b/recipes/wip/zeal/recipe.toml @@ -0,0 +1,12 @@ +#TODO missing script for CMake, see https://github.com/zealdocs/zeal#build-instructions +[source] +tar = "https://github.com/zealdocs/zeal/releases/download/v0.7.0/zeal-0.7.0.tar.xz" +[build] +template = "custom" +dependencies = [ + "qt6-base", + "qt6-webengine", + "libarchive", + "sqlite3", + "mesa", +] From 54c12d411ad16762b06900440c0b89288facb595 Mon Sep 17 00:00:00 2001 From: Ivan Tan Date: Thu, 14 Dec 2023 11:36:50 +0000 Subject: [PATCH 1207/3180] port aarch64 && raspi3b+ --- recipes/core/drivers-initfs/recipe.toml | 19 +++++++++++++++++++ .../core/initfs/aarch64-unknown-redox/init.rc | 15 +++++++++++++++ .../aarch64-unknown-redox/init.rc.raspi3bp | 16 ++++++++++++++++ recipes/core/initfs/recipe.toml | 5 +++++ 4 files changed, 55 insertions(+) create mode 100644 recipes/core/initfs/aarch64-unknown-redox/init.rc create mode 100644 recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp diff --git a/recipes/core/drivers-initfs/recipe.toml b/recipes/core/drivers-initfs/recipe.toml index d567c907..80622ca8 100644 --- a/recipes/core/drivers-initfs/recipe.toml +++ b/recipes/core/drivers-initfs/recipe.toml @@ -15,6 +15,22 @@ BINS=( lived ) +aarch64_redefine_bin() +{ + BINS=(inputd lived) + case "${BOARD}" in + raspi3bp) + BINS+=(bcm2835-sdhcid) + ;; + raspi3b) + BINS+=(bcm2835-sdhcid) + ;; + *) + #qemu-virt + ;; + esac +} + case "${TARGET}" in i686-unknown-redox) BINS+=(ided ps2d) @@ -22,6 +38,9 @@ case "${TARGET}" in x86_64-unknown-redox) BINS+=(acpid ided ps2d) ;; + aarch64-unknown-redox) + aarch64_redefine_bin + ;; *) ;; esac diff --git a/recipes/core/initfs/aarch64-unknown-redox/init.rc b/recipes/core/initfs/aarch64-unknown-redox/init.rc new file mode 100644 index 00000000..f8f24c7b --- /dev/null +++ b/recipes/core/initfs/aarch64-unknown-redox/init.rc @@ -0,0 +1,15 @@ +export PATH /bin +export TMPDIR /tmp +nulld +zerod +randd +inputd +vesad T T G +logd debug: display.vesa:1 +stdio log: +ramfs logging +lived +redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK +cd file: +export PATH file:/bin +run.d /etc/init.d diff --git a/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp b/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp new file mode 100644 index 00000000..99750e6f --- /dev/null +++ b/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp @@ -0,0 +1,16 @@ +export PATH /bin +export TMPDIR /tmp +nulld +zerod +randd +inputd +vesad T T G +logd debug: display.vesa:1 +stdio log: +ramfs logging +lived +bcm2835-sdhcid +redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK +cd file: +export PATH file:/bin +run.d /etc/init.d diff --git a/recipes/core/initfs/recipe.toml b/recipes/core/initfs/recipe.toml index 4bc9f307..ddb39b60 100644 --- a/recipes/core/initfs/recipe.toml +++ b/recipes/core/initfs/recipe.toml @@ -21,6 +21,11 @@ cp -r "${COOKBOOK_SYSROOT}/"* "${COOKBOOK_BUILD}/initfs" # TODO: Move init.rc to another recipe, perhaps initfs-misc? Then it can be installed as a regular dependency. cp "${COOKBOOK_RECIPE}/init.rc" "${COOKBOOK_BUILD}/initfs/etc/init.rc" +if [ -e ${COOKBOOK_RECIPE}/${TARGET}/init.rc.${BOARD} ]; then + cp "${COOKBOOK_RECIPE}/${TARGET}/init.rc.${BOARD}" "${COOKBOOK_BUILD}/initfs/etc/init.rc" +elif [ -e ${COOKBOOK_RECIPE}/${TARGET}/init.rc ]; then + cp "${COOKBOOK_RECIPE}/${TARGET}/init.rc" "${COOKBOOK_BUILD}/initfs/etc/init.rc" +fi for bin in ${INITFS_RM_BINS}; do rm -f "${COOKBOOK_BUILD}/initfs/bin/$bin" From 720a31af18815c49f7138950f37b15be7438d44c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 14 Dec 2023 18:30:36 +0000 Subject: [PATCH 1208/3180] Fix the tarball link of imagemagick --- recipes/wip/imagemagick/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/imagemagick/recipe.toml b/recipes/wip/imagemagick/recipe.toml index 85b8a730..8ec99dcb 100644 --- a/recipes/wip/imagemagick/recipe.toml +++ b/recipes/wip/imagemagick/recipe.toml @@ -1,5 +1,5 @@ #TODO compiled but not tested [source] -tar = "https://imagemagick.org/archive/ImageMagick-7.1.1-20.tar.xz" +tar = "https://imagemagick.org/archive/releases/ImageMagick-7.1.1-23.tar.xz" [build] template = "configure" From d7eb1511c0be6dae75a4e18c6a30e9012e346ad9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 14 Dec 2023 19:50:54 +0000 Subject: [PATCH 1209/3180] Recipe cleanup --- recipes/dev/fontconfig/recipe.toml | 2 -- recipes/dev/pkg-config/recipe.toml | 2 -- recipes/libs/expat/recipe.toml | 2 -- recipes/libs/freetype2/recipe.toml | 2 -- recipes/libs/glib/recipe.toml | 2 -- recipes/libs/harfbuzz/recipe.toml | 2 -- recipes/libs/libffi/recipe.toml | 2 -- recipes/libs/libflac/recipe.toml | 2 -- recipes/libs/libiconv/recipe.toml | 2 -- recipes/libs/libogg/recipe.toml | 2 -- recipes/libs/libpng/recipe.toml | 2 -- recipes/libs/libsodium/recipe.toml | 2 -- recipes/libs/libssh2/recipe.toml | 2 -- recipes/libs/libvorbis/recipe.toml | 2 -- recipes/libs/libxml2/recipe.toml | 2 -- recipes/libs/readline/recipe.toml | 2 -- recipes/net/nghttp2/recipe.toml | 2 -- recipes/tools/gettext/recipe.toml | 2 -- recipes/tools/xz/recipe.toml | 2 -- 19 files changed, 38 deletions(-) diff --git a/recipes/dev/fontconfig/recipe.toml b/recipes/dev/fontconfig/recipe.toml index 49eed3b3..7dfed5a7 100644 --- a/recipes/dev/fontconfig/recipe.toml +++ b/recipes/dev/fontconfig/recipe.toml @@ -1,6 +1,4 @@ [source] -#git = "https://gitlab.freedesktop.org/fontconfig/fontconfig" -#rev = "a919700fbde28c29ccdb1d2a8bceba80ade19e73" tar = "https://www.freedesktop.org/software/fontconfig/release/fontconfig-2.14.2.tar.xz" blake3 = "dc342745b8e19ecda458464a9df7cf1266d0af759b230d07f43964b34ca86581" patches = [ diff --git a/recipes/dev/pkg-config/recipe.toml b/recipes/dev/pkg-config/recipe.toml index 6a26f9ec..ae55de3c 100644 --- a/recipes/dev/pkg-config/recipe.toml +++ b/recipes/dev/pkg-config/recipe.toml @@ -1,6 +1,4 @@ [source] -#git = "https://gitlab.freedesktop.org/pkg-config/pkg-config" -#rev = "edf8e6f0ea77ede073f07bff0d2ae1fc7a38103b" tar = "https://pkg-config.freedesktop.org/releases/pkg-config-0.29.2.tar.gz" blake3 = "713372b09a1fafeec130dc9bf812a3880f2a90496af5d2194e508d91ccf667d0" script = """ diff --git a/recipes/libs/expat/recipe.toml b/recipes/libs/expat/recipe.toml index 718d1376..f8edd593 100644 --- a/recipes/libs/expat/recipe.toml +++ b/recipes/libs/expat/recipe.toml @@ -1,6 +1,4 @@ [source] -#git = "https://github.com/libexpat/libexpat" -#rev = "654d2de0da85662fcc7644a7acd7c2dd2cfb21f0" tar = "https://github.com/libexpat/libexpat/releases/download/R_2_5_0/expat-2.5.0.tar.xz" blake3 = "ea89dd9a5a2e48d5e44fed38554b36a8f2e365a5091a99d08e30bfb1c15dda5e" [build] diff --git a/recipes/libs/freetype2/recipe.toml b/recipes/libs/freetype2/recipe.toml index 5785eb30..fd9689c2 100644 --- a/recipes/libs/freetype2/recipe.toml +++ b/recipes/libs/freetype2/recipe.toml @@ -1,6 +1,4 @@ [source] -#git = "https://gitlab.freedesktop.org/freetype/freetype" -#rev = "de8b92dd7ec634e9e2b25ef534c54a3537555c11" tar = "https://download.savannah.gnu.org/releases/freetype/freetype-2.12.1.tar.xz" blake3 = "c4a1d8438ca4e93bb8cb9f8e70e95cd16acdc5a9f0fba496e43911175f55affd" [build] diff --git a/recipes/libs/glib/recipe.toml b/recipes/libs/glib/recipe.toml index 6dfd5a3d..d63e6827 100644 --- a/recipes/libs/glib/recipe.toml +++ b/recipes/libs/glib/recipe.toml @@ -1,6 +1,4 @@ [source] -#git = "https://gitlab.gnome.org/GNOME/glib" -#rev = "37f41eb44a7d423069ff93f44dd0baec92adad62" tar = "https://download.gnome.org/sources/glib/2.59/glib-2.59.0.tar.xz" blake3 = "4b10f071bad767bbed9dc3ca742aac4de1f5746c03d515908e7dad4ea8334cbf" patches = [ diff --git a/recipes/libs/harfbuzz/recipe.toml b/recipes/libs/harfbuzz/recipe.toml index a38b1631..0decd14d 100644 --- a/recipes/libs/harfbuzz/recipe.toml +++ b/recipes/libs/harfbuzz/recipe.toml @@ -1,6 +1,4 @@ [source] -#git = "https://github.com/harfbuzz/harfbuzz" -#rev = "4941e95f10fe0fe658752134a42b58896fb19c42" tar = "https://github.com/harfbuzz/harfbuzz/releases/download/7.3.0/harfbuzz-7.3.0.tar.xz" blake3 = "6572676ffef55bd37bacdd33052bedfb07333b659371495a2a26b9825ce685c0" [build] diff --git a/recipes/libs/libffi/recipe.toml b/recipes/libs/libffi/recipe.toml index 57436905..81db1894 100644 --- a/recipes/libs/libffi/recipe.toml +++ b/recipes/libs/libffi/recipe.toml @@ -1,6 +1,4 @@ [source] -#git = "https://github.com/libffi/libffi" -#rev = "20562ac0427c3578250d04c6e34fb0127d4551cf" tar = "https://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz" blake3 = "a00597a8bd26304977d7c180135e91969a175a5108bd0024a03eb0636e6cb0bf" patches = [ diff --git a/recipes/libs/libflac/recipe.toml b/recipes/libs/libflac/recipe.toml index b309c64d..fbf20faa 100644 --- a/recipes/libs/libflac/recipe.toml +++ b/recipes/libs/libflac/recipe.toml @@ -1,6 +1,4 @@ [source] -#git = "https://gitlab.xiph.org/xiph/flac" -#rev = "b32e5cbf9818ca23dd22aaa75522042c16ea7d17" tar = "https://github.com/xiph/flac/releases/download/1.4.2/flac-1.4.2.tar.xz" blake3 = "d165b9a18eb83b6f6e9993cc2074547566df706fc61464eb17ff088fd0c88104" [build] diff --git a/recipes/libs/libiconv/recipe.toml b/recipes/libs/libiconv/recipe.toml index b7663624..3c0970b7 100644 --- a/recipes/libs/libiconv/recipe.toml +++ b/recipes/libs/libiconv/recipe.toml @@ -1,6 +1,4 @@ [source] -#git = "https://git.savannah.gnu.org/git/libiconv.git" -#rev = "941f63afe17adcb01e150e29ddb50c6fd40f1291" tar = "https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz" blake3 = "b736af4e8245ae9f1618ef226a3bf2a998334b745520565cf413c0a7d54b6924" patches = [ diff --git a/recipes/libs/libogg/recipe.toml b/recipes/libs/libogg/recipe.toml index aa77f0ba..996b764e 100644 --- a/recipes/libs/libogg/recipe.toml +++ b/recipes/libs/libogg/recipe.toml @@ -1,6 +1,4 @@ [source] -#git = "https://gitlab.xiph.org/xiph/ogg" -#rev = "4380566a44b8d5e85ad511c9c17eb04197863ec5" tar = "https://github.com/xiph/ogg/releases/download/v1.3.3/libogg-1.3.3.tar.xz" blake3 = "8220c0e4082fa26c07b10bfe31f641d2e33ebe1d1bb0b20221b7016bc8b78a3a" patches = [ diff --git a/recipes/libs/libpng/recipe.toml b/recipes/libs/libpng/recipe.toml index 450902ed..5b52c5d7 100644 --- a/recipes/libs/libpng/recipe.toml +++ b/recipes/libs/libpng/recipe.toml @@ -1,6 +1,4 @@ [source] -#git = "https://github.com/glennrp/libpng" -#rev = "eddf9023206dc40974c26f589ee2ad63a4227a1e" tar = "https://github.com/glennrp/libpng/archive/v1.6.39.tar.gz" blake3 = "02513cc5d15ac79c4c402f2ae623425f4f80bdbbf15ebc95430fb8ccfc987996" script = """ diff --git a/recipes/libs/libsodium/recipe.toml b/recipes/libs/libsodium/recipe.toml index 4e9e6014..2469d25e 100644 --- a/recipes/libs/libsodium/recipe.toml +++ b/recipes/libs/libsodium/recipe.toml @@ -1,6 +1,4 @@ [source] -#git = "https://github.com/jedisct1/libsodium" -#rev = "675149b9b8b66ff44152553fb3ebf9858128363d" tar = "https://github.com/jedisct1/libsodium/archive/1.0.16.tar.gz" blake3 = "2482633f872c173f9a42e6badb44c3efb042e783e664fdf8b1046babfa2405e7" patches = [ diff --git a/recipes/libs/libssh2/recipe.toml b/recipes/libs/libssh2/recipe.toml index 8b620099..4040960a 100644 --- a/recipes/libs/libssh2/recipe.toml +++ b/recipes/libs/libssh2/recipe.toml @@ -1,6 +1,4 @@ [source] -#git = "https://github.com/libssh2/libssh2" -#rev = "635caa90787220ac3773c1d5ba11f1236c22eae8" tar = "https://www.libssh2.org/download/libssh2-1.10.0.tar.gz" blake3 = "2447216ce82c1d22301456bb02f60dfb6688f1461417b90f900c099a87f1292f" patches = [] diff --git a/recipes/libs/libvorbis/recipe.toml b/recipes/libs/libvorbis/recipe.toml index 4a963d45..fa5717cd 100644 --- a/recipes/libs/libvorbis/recipe.toml +++ b/recipes/libs/libvorbis/recipe.toml @@ -1,6 +1,4 @@ [source] -#git = "https://gitlab.xiph.org/xiph/vorbis" -#rev = "0657aee69dec8508a0011f47f3b69d7538e9d262" tar = "https://github.com/xiph/vorbis/releases/download/v1.3.7/libvorbis-1.3.7.tar.xz" blake3 = "c67f3f74ec26d93a5571c4404a64eb6e6587d7d77b46b552f7b410f5bc5b1f03" [build] diff --git a/recipes/libs/libxml2/recipe.toml b/recipes/libs/libxml2/recipe.toml index 8d7f1cf8..465d85a8 100644 --- a/recipes/libs/libxml2/recipe.toml +++ b/recipes/libs/libxml2/recipe.toml @@ -1,6 +1,4 @@ [source] -#git = "https://gitlab.gnome.org/GNOME/libxml2" -#rev = "838bf42d54f94c8ff99b6e5022899a32875ed5d7" tar = "https://download.gnome.org/sources/libxml2/2.11/libxml2-2.11.3.tar.xz" blake3 = "0653d3750576299c4cb88740942165671b576ff93019f3d669b3f37136225ab7" [build] diff --git a/recipes/libs/readline/recipe.toml b/recipes/libs/readline/recipe.toml index 322e8f6b..c4a70779 100644 --- a/recipes/libs/readline/recipe.toml +++ b/recipes/libs/readline/recipe.toml @@ -1,6 +1,4 @@ [source] -#git = "https://git.savannah.gnu.org/git/readline.git" -#rev = "d49a9082c0e15bba8cd3d8cc0a994409cf823cac" tar = "https://ftp.gnu.org/gnu/readline/readline-7.0.tar.gz" blake3 = "962483e201f36f05a5ccb507bb7330b4d4e4989fd52f41eb15ba65582ad02703" patches = [ diff --git a/recipes/net/nghttp2/recipe.toml b/recipes/net/nghttp2/recipe.toml index 0688c1eb..94940d0f 100644 --- a/recipes/net/nghttp2/recipe.toml +++ b/recipes/net/nghttp2/recipe.toml @@ -1,6 +1,4 @@ [source] -#git = "https://github.com/nghttp2/nghttp2" -#rev = "be0491294a63d891bd12b6b1b7e372a45a5d0ffe" tar = "https://github.com/nghttp2/nghttp2/releases/download/v1.53.0/nghttp2-1.53.0.tar.xz" blake3 = "bad5f220a66b7e6f3df20f69f4fc7e7beca46e6c143fc63b95a2656a2e897caf" [build] diff --git a/recipes/tools/gettext/recipe.toml b/recipes/tools/gettext/recipe.toml index d22a5321..c0658158 100644 --- a/recipes/tools/gettext/recipe.toml +++ b/recipes/tools/gettext/recipe.toml @@ -1,6 +1,4 @@ [source] -#git = "https://git.savannah.gnu.org/git/gettext.git" -#rev = "c737bf843616ca984c9416048a2da845e9ad3f50" tar = "https://ftp.gnu.org/pub/gnu/gettext/gettext-0.21.1.tar.gz" blake3 = "0d0af5a79978fbeac4641ee64480943650af99f70467353e7c3068ffd5523acd" patches = [ diff --git a/recipes/tools/xz/recipe.toml b/recipes/tools/xz/recipe.toml index abf0f428..d36b3a7a 100644 --- a/recipes/tools/xz/recipe.toml +++ b/recipes/tools/xz/recipe.toml @@ -1,6 +1,4 @@ [source] -#git = "https://github.com/tukaani-project/xz" -#rev = "2327a461e1afce862c22269b80d3517801103c1b" tar = "https://tukaani.org/xz/xz-5.4.3.tar.xz" blake3 = "4b1b814bcf3794973fe9076d549a0edfbee01d2fd57821fe3280537ef6c7deae" script = """ From 6a1a5958a5fd1b7171859219f88248dee0dc9f00 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 14 Dec 2023 20:09:02 +0000 Subject: [PATCH 1210/3180] Update TODOs and fix alacritty --- recipes/wip/abi-cafe/recipe.toml | 2 +- recipes/wip/aeruginous/recipe.toml | 2 +- recipes/wip/alacritty/recipe.toml | 5 ++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/recipes/wip/abi-cafe/recipe.toml b/recipes/wip/abi-cafe/recipe.toml index 74202b6e..5dc58fe7 100644 --- a/recipes/wip/abi-cafe/recipe.toml +++ b/recipes/wip/abi-cafe/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after an update on the libc crate) [source] git = "https://github.com/Gankra/abi-cafe" [build] diff --git a/recipes/wip/aeruginous/recipe.toml b/recipes/wip/aeruginous/recipe.toml index b524503f..ea249d53 100644 --- a/recipes/wip/aeruginous/recipe.toml +++ b/recipes/wip/aeruginous/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] tar = "https://github.com/kevinmatthes/aeruginous-rs/archive/refs/tags/v3.3.0.tar.gz" [build] diff --git a/recipes/wip/alacritty/recipe.toml b/recipes/wip/alacritty/recipe.toml index ea58e3bf..8d34d522 100644 --- a/recipes/wip/alacritty/recipe.toml +++ b/recipes/wip/alacritty/recipe.toml @@ -2,8 +2,11 @@ [source] tar = "https://github.com/alacritty/alacritty/archive/refs/tags/v0.12.3.tar.gz" [build] -template = "cargo" +template = "custom" dependencies = [ "freetype2", "fontconfig", ] +script = """ +cookbook_cargo_packages alacritty +""" From 57b17cf84a284d7cac0324fa19e99fc3aa396aef Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 14 Dec 2023 20:15:19 +0000 Subject: [PATCH 1211/3180] Update alacritty --- recipes/wip/alacritty/recipe.toml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/recipes/wip/alacritty/recipe.toml b/recipes/wip/alacritty/recipe.toml index 8d34d522..3dbde976 100644 --- a/recipes/wip/alacritty/recipe.toml +++ b/recipes/wip/alacritty/recipe.toml @@ -8,5 +8,13 @@ dependencies = [ "fontconfig", ] script = """ -cookbook_cargo_packages alacritty +"${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --package "${alacritty}" \ + --release + --no-default-features + mkdir -pv "${COOKBOOK_STAGE}/bin" + cp -v \ + "target/${TARGET}/release/${alacritty}" \ + "${COOKBOOK_STAGE}/bin/${alacritty}_${alacritty}" """ From da40559c15b55c6999b999f88803cfdba66b5e3c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 14 Dec 2023 21:02:15 +0000 Subject: [PATCH 1212/3180] Try to fix alacritty --- recipes/wip/alacritty/recipe.toml | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/recipes/wip/alacritty/recipe.toml b/recipes/wip/alacritty/recipe.toml index 3dbde976..4cdf7358 100644 --- a/recipes/wip/alacritty/recipe.toml +++ b/recipes/wip/alacritty/recipe.toml @@ -8,13 +8,5 @@ dependencies = [ "fontconfig", ] script = """ -"${COOKBOOK_CARGO}" build \ - --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ - --package "${alacritty}" \ - --release - --no-default-features - mkdir -pv "${COOKBOOK_STAGE}/bin" - cp -v \ - "target/${TARGET}/release/${alacritty}" \ - "${COOKBOOK_STAGE}/bin/${alacritty}_${alacritty}" +cookbook_cargo --no-default-features --package alacritty """ From 0fb3e6fbb45722b863f4edc813c82ccef72f6d12 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 14 Dec 2023 21:07:18 +0000 Subject: [PATCH 1213/3180] Update alacritty --- recipes/wip/alacritty/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/alacritty/recipe.toml b/recipes/wip/alacritty/recipe.toml index 4cdf7358..b5ac2161 100644 --- a/recipes/wip/alacritty/recipe.toml +++ b/recipes/wip/alacritty/recipe.toml @@ -8,5 +8,5 @@ dependencies = [ "fontconfig", ] script = """ -cookbook_cargo --no-default-features --package alacritty +cookbook_cargo --no-default-features --bin alacritty """ From 3277a206d2b05d2e23a19a766d5445b6cb902df0 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 14 Dec 2023 21:55:29 +0000 Subject: [PATCH 1214/3180] Update alacritty --- recipes/wip/alacritty/recipe.toml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/recipes/wip/alacritty/recipe.toml b/recipes/wip/alacritty/recipe.toml index b5ac2161..cea6913a 100644 --- a/recipes/wip/alacritty/recipe.toml +++ b/recipes/wip/alacritty/recipe.toml @@ -8,5 +8,14 @@ dependencies = [ "fontconfig", ] script = """ -cookbook_cargo --no-default-features --bin alacritty +package="alacritty" +"${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --package "${package}" \ + --release + --no-default-features + mkdir -pv "${COOKBOOK_STAGE}/bin" + cp -v \ + "target/${TARGET}/release/${package}" \ + "${COOKBOOK_STAGE}/bin/${package}" """ From 4ec8581ac8e1632be5374ba067598dc03debe744 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 14 Dec 2023 22:45:18 +0000 Subject: [PATCH 1215/3180] Update recipes --- recipes/wip/alacritty/recipe.toml | 14 +++----------- recipes/wip/ani-cli/recipe.toml | 2 +- recipes/wip/ani-skip/recipe.toml | 2 +- recipes/wip/apr-util/recipe.toml | 13 +++++++++++-- recipes/wip/apr/recipe.toml | 2 +- recipes/wip/artichoke/recipe.toml | 2 +- recipes/wip/ascii-gen/recipe.toml | 2 +- recipes/wip/astronvim/recipe.toml | 6 +----- recipes/wip/atkmm/recipe.toml | 1 + recipes/wip/atm-cli/recipe.toml | 2 +- recipes/wip/bartib/recipe.toml | 2 +- recipes/wip/battop/recipe.toml | 2 +- recipes/wip/bevy-engine/recipe.toml | 7 ++++--- 13 files changed, 28 insertions(+), 29 deletions(-) diff --git a/recipes/wip/alacritty/recipe.toml b/recipes/wip/alacritty/recipe.toml index cea6913a..d8ea92be 100644 --- a/recipes/wip/alacritty/recipe.toml +++ b/recipes/wip/alacritty/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested yet +#TODO make Wayland work [source] tar = "https://github.com/alacritty/alacritty/archive/refs/tags/v0.12.3.tar.gz" [build] @@ -6,16 +6,8 @@ template = "custom" dependencies = [ "freetype2", "fontconfig", + "libwayland", ] script = """ -package="alacritty" -"${COOKBOOK_CARGO}" build \ - --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ - --package "${package}" \ - --release - --no-default-features - mkdir -pv "${COOKBOOK_STAGE}/bin" - cp -v \ - "target/${TARGET}/release/${package}" \ - "${COOKBOOK_STAGE}/bin/${package}" +cookbook_cargo_packages alacritty """ diff --git a/recipes/wip/ani-cli/recipe.toml b/recipes/wip/ani-cli/recipe.toml index 8a558756..d471cd39 100644 --- a/recipes/wip/ani-cli/recipe.toml +++ b/recipes/wip/ani-cli/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO move to the "tools" category [source] tar = "https://github.com/pystardust/ani-cli/archive/refs/tags/v4.6.tar.gz" [build] diff --git a/recipes/wip/ani-skip/recipe.toml b/recipes/wip/ani-skip/recipe.toml index d49a055d..454b15df 100644 --- a/recipes/wip/ani-skip/recipe.toml +++ b/recipes/wip/ani-skip/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO move to the "tools" category [source] git = "https://github.com/synacktraa/ani-skip" [build] diff --git a/recipes/wip/apr-util/recipe.toml b/recipes/wip/apr-util/recipe.toml index a9ec5419..414a228d 100644 --- a/recipes/wip/apr-util/recipe.toml +++ b/recipes/wip/apr-util/recipe.toml @@ -1,5 +1,14 @@ -#TODO Not compiled or tested +#TODO make apr work [source] tar = "https://dlcdn.apache.org//apr/apr-util-1.6.3.tar.bz2" [build] -template = "configure" +template = "custom" +dependencies = [ + "apr", +] +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --with-apr +) +cookbook_configure +""" diff --git a/recipes/wip/apr/recipe.toml b/recipes/wip/apr/recipe.toml index d062a9ef..13ce6850 100644 --- a/recipes/wip/apr/recipe.toml +++ b/recipes/wip/apr/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error [source] tar = "https://dlcdn.apache.org//apr/apr-1.7.4.tar.bz2" [build] diff --git a/recipes/wip/artichoke/recipe.toml b/recipes/wip/artichoke/recipe.toml index 89b3dd37..0bf2fc0c 100644 --- a/recipes/wip/artichoke/recipe.toml +++ b/recipes/wip/artichoke/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled/tested yet +#TODO iana-time-zone crate error [source] git = "https://github.com/artichoke/artichoke" [build] diff --git a/recipes/wip/ascii-gen/recipe.toml b/recipes/wip/ascii-gen/recipe.toml index fb4d0a74..f798d009 100644 --- a/recipes/wip/ascii-gen/recipe.toml +++ b/recipes/wip/ascii-gen/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/thed24/ascii-gen" [build] diff --git a/recipes/wip/astronvim/recipe.toml b/recipes/wip/astronvim/recipe.toml index 740a06ac..e1e38832 100644 --- a/recipes/wip/astronvim/recipe.toml +++ b/recipes/wip/astronvim/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not tested yet +#TODO move to the "tools" category [source] git = "https://github.com/AstroNvim/AstroNvim" [build] @@ -7,7 +7,3 @@ script = """ mkdir -pv "${COOKBOOK_STAGE}"/home/user/.config/nvim cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/home/user/.config/nvim """ -[package] -dependencies = [ - "neovim", -] diff --git a/recipes/wip/atkmm/recipe.toml b/recipes/wip/atkmm/recipe.toml index de5a7a34..903f7495 100644 --- a/recipes/wip/atkmm/recipe.toml +++ b/recipes/wip/atkmm/recipe.toml @@ -1,3 +1,4 @@ +#TODO make atk work #TODO probably wrong script, see https://gitlab.gnome.org/GNOME/atkmm [source] tar = "https://download.gnome.org/sources/atkmm/2.36/atkmm-2.36.2.tar.xz" diff --git a/recipes/wip/atm-cli/recipe.toml b/recipes/wip/atm-cli/recipe.toml index 02f0cb40..fd176fc1 100644 --- a/recipes/wip/atm-cli/recipe.toml +++ b/recipes/wip/atm-cli/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested yet +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/allthemusicllc/atm-cli" [build] diff --git a/recipes/wip/bartib/recipe.toml b/recipes/wip/bartib/recipe.toml index 48ef2c6e..e7780714 100644 --- a/recipes/wip/bartib/recipe.toml +++ b/recipes/wip/bartib/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested yet +#TODO compiled but not tested [source] git = "https://github.com/nikolassv/bartib" [build] diff --git a/recipes/wip/battop/recipe.toml b/recipes/wip/battop/recipe.toml index ac500c8b..093c8769 100644 --- a/recipes/wip/battop/recipe.toml +++ b/recipes/wip/battop/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO atty crate error (after cargo update) [source] tar = "https://github.com/svartalf/rust-battop/archive/refs/tags/v0.2.4.tar.gz" [build] diff --git a/recipes/wip/bevy-engine/recipe.toml b/recipes/wip/bevy-engine/recipe.toml index 13fcbe6c..613fdfc2 100644 --- a/recipes/wip/bevy-engine/recipe.toml +++ b/recipes/wip/bevy-engine/recipe.toml @@ -4,13 +4,14 @@ tar = "https://github.com/bevyengine/bevy/archive/refs/tags/v0.11.1.tar.gz" [build] template = "custom" script = """ +package="hello_world" "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ - --package "${hello_world}" \ + --package "${package}" \ --release --no-default-features mkdir -pv "${COOKBOOK_STAGE}/bin" cp -v \ - "target/${TARGET}/release/${hello_world}" \ - "${COOKBOOK_STAGE}/bin/${bevy-engine}_${hello_world}" + "target/${TARGET}/release/${package}" \ + "${COOKBOOK_STAGE}/bin/${package}" """ From cc964cd208522830a4bdec4acce7dbfe0f701952 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 14 Dec 2023 23:29:04 +0000 Subject: [PATCH 1216/3180] Update recipes --- recipes/wip/b3sum/recipe.toml | 8 ++++++-- recipes/wip/bevy-engine/recipe.toml | 17 ++++------------- recipes/wip/binocle/recipe.toml | 4 ++-- 3 files changed, 12 insertions(+), 17 deletions(-) diff --git a/recipes/wip/b3sum/recipe.toml b/recipes/wip/b3sum/recipe.toml index 9ed6015f..5882d6ff 100644 --- a/recipes/wip/b3sum/recipe.toml +++ b/recipes/wip/b3sum/recipe.toml @@ -1,8 +1,12 @@ -#TODO require a custom script to move the binary? +#TODO probably wrong script [source] tar = "https://github.com/BLAKE3-team/BLAKE3/archive/refs/tags/1.4.1.tar.gz" [build] template = "custom" script = """ -cookbook_cargo_packages blake3 +"${COOKBOOK_CARGO}" install \ + --path "${COOKBOOK_SOURCE}/b3sum" \ + --root "${COOKBOOK_STAGE}" \ + --locked \ + --no-track """ diff --git a/recipes/wip/bevy-engine/recipe.toml b/recipes/wip/bevy-engine/recipe.toml index 613fdfc2..fad6be0f 100644 --- a/recipes/wip/bevy-engine/recipe.toml +++ b/recipes/wip/bevy-engine/recipe.toml @@ -1,17 +1,8 @@ -#TODO Not compiled or tested yet +#TODO missing script for the "hello_world" example and the "wayland" flag [source] tar = "https://github.com/bevyengine/bevy/archive/refs/tags/v0.11.1.tar.gz" [build] template = "custom" -script = """ -package="hello_world" -"${COOKBOOK_CARGO}" build \ - --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ - --package "${package}" \ - --release - --no-default-features - mkdir -pv "${COOKBOOK_STAGE}/bin" - cp -v \ - "target/${TARGET}/release/${package}" \ - "${COOKBOOK_STAGE}/bin/${package}" -""" +dependencies = [ + "libwayland", +] diff --git a/recipes/wip/binocle/recipe.toml b/recipes/wip/binocle/recipe.toml index 91506324..b18eb77c 100644 --- a/recipes/wip/binocle/recipe.toml +++ b/recipes/wip/binocle/recipe.toml @@ -1,5 +1,5 @@ -#TODO Not compiled or tested +#TODO wgpu-hal crate error [source] -tar = "https://github.com/sharkdp/binocle/archive/refs/tags/v0.3.1.tar.gz" +tar = "https://github.com/sharkdp/binocle/archive/refs/tags/v0.3.2.tar.gz" [build] template = "cargo" From 7b4315ab4b1ef24fdfdfea78a52412c53377743c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 15 Dec 2023 23:59:23 +0000 Subject: [PATCH 1217/3180] Update recipes --- recipes/wip/binocle/recipe.toml | 2 +- recipes/wip/biome/recipe.toml | 2 +- recipes/wip/cotp/recipe.toml | 11 +++++++++++ recipes/wip/rustyvault/recipe.toml | 5 +++++ recipes/wip/swc/recipe.toml | 5 +++++ recipes/wip/sws/recipe.toml | 5 +++++ 6 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 recipes/wip/cotp/recipe.toml create mode 100644 recipes/wip/rustyvault/recipe.toml create mode 100644 recipes/wip/swc/recipe.toml create mode 100644 recipes/wip/sws/recipe.toml diff --git a/recipes/wip/binocle/recipe.toml b/recipes/wip/binocle/recipe.toml index b18eb77c..59c133c6 100644 --- a/recipes/wip/binocle/recipe.toml +++ b/recipes/wip/binocle/recipe.toml @@ -1,4 +1,4 @@ -#TODO wgpu-hal crate error +#TODO compiled but not tested [source] tar = "https://github.com/sharkdp/binocle/archive/refs/tags/v0.3.2.tar.gz" [build] diff --git a/recipes/wip/biome/recipe.toml b/recipes/wip/biome/recipe.toml index b9373367..e27f4222 100644 --- a/recipes/wip/biome/recipe.toml +++ b/recipes/wip/biome/recipe.toml @@ -1,4 +1,4 @@ -#TODO probably wrong script, lacking build instructions +#TODO tikv-jemalloc-sys crate error [source] tar = "https://github.com/biomejs/biome/archive/refs/tags/cli/v1.4.0.tar.gz" [build] diff --git a/recipes/wip/cotp/recipe.toml b/recipes/wip/cotp/recipe.toml new file mode 100644 index 00000000..e8c68d9a --- /dev/null +++ b/recipes/wip/cotp/recipe.toml @@ -0,0 +1,11 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/replydev/cotp/archive/refs/tags/v1.3.0.tar.gz" +[build] +template = "cargo" +dependencies = [ + "libxcb", + "libx11", + "libxfixes", + "libxkbcommon", +] diff --git a/recipes/wip/rustyvault/recipe.toml b/recipes/wip/rustyvault/recipe.toml new file mode 100644 index 00000000..35d68020 --- /dev/null +++ b/recipes/wip/rustyvault/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Tongsuo-Project/RustyVault" +[build] +template = "cargo" diff --git a/recipes/wip/swc/recipe.toml b/recipes/wip/swc/recipe.toml new file mode 100644 index 00000000..b313e669 --- /dev/null +++ b/recipes/wip/swc/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/swc-project/swc" +[build] +template = "cargo" diff --git a/recipes/wip/sws/recipe.toml b/recipes/wip/sws/recipe.toml new file mode 100644 index 00000000..1b243f8c --- /dev/null +++ b/recipes/wip/sws/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/static-web-server/static-web-server/archive/refs/tags/v2.24.1.tar.gz" +[build] +template = "cargo" From 6d16f5fe6432c4cb10cfc3a611117dc8ab9998cf Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 16 Dec 2023 00:16:06 +0000 Subject: [PATCH 1218/3180] Update recipes --- recipes/wip/birdy/recipe.toml | 5 ++++- recipes/wip/bita/recipe.toml | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/wip/birdy/recipe.toml b/recipes/wip/birdy/recipe.toml index 5e72cb6f..4ed855bc 100644 --- a/recipes/wip/birdy/recipe.toml +++ b/recipes/wip/birdy/recipe.toml @@ -1,5 +1,8 @@ -#TODO Not compiled or tested +#TODO make Wayland work [source] git = "https://github.com/kakoc/birdy" [build] template = "cargo" +dependencies = [ + "libwayland", +] diff --git a/recipes/wip/bita/recipe.toml b/recipes/wip/bita/recipe.toml index c34af8a7..e0c25ebe 100644 --- a/recipes/wip/bita/recipe.toml +++ b/recipes/wip/bita/recipe.toml @@ -4,5 +4,5 @@ tar = "https://github.com/oll3/bita/archive/refs/tags/v0.11.0.tar.gz" [build] template = "custom" script = """ -cookbook_cargo --features rustls-tls +cookbook_cargo --no-default-features --features rustls-tls """ From cc8c22c5ed53f22223c45f0dbfdaef9935f92f56 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 16 Dec 2023 00:35:38 +0000 Subject: [PATCH 1219/3180] Update recipes --- recipes/wip/bita/recipe.toml | 2 +- recipes/wip/blockish-caca/recipe.toml | 2 +- recipes/wip/bluez/recipe.toml | 1 + recipes/wip/c2rust/recipe.toml | 1 - 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/wip/bita/recipe.toml b/recipes/wip/bita/recipe.toml index e0c25ebe..bccc9373 100644 --- a/recipes/wip/bita/recipe.toml +++ b/recipes/wip/bita/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error (after a cargo update and a patch on the ring and tokio crates) [source] tar = "https://github.com/oll3/bita/archive/refs/tags/v0.11.0.tar.gz" [build] diff --git a/recipes/wip/blockish-caca/recipe.toml b/recipes/wip/blockish-caca/recipe.toml index f4b860a1..4a238edd 100644 --- a/recipes/wip/blockish-caca/recipe.toml +++ b/recipes/wip/blockish-caca/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make libcaca work [source] git = "https://github.com/yazgoo/blockish-caca" [build] diff --git a/recipes/wip/bluez/recipe.toml b/recipes/wip/bluez/recipe.toml index d4a052a7..2a87925f 100644 --- a/recipes/wip/bluez/recipe.toml +++ b/recipes/wip/bluez/recipe.toml @@ -1,3 +1,4 @@ +#TODO require signalfd #TODO require Bluetooth drivers #TODO build instructions - https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/INSTALL [source] diff --git a/recipes/wip/c2rust/recipe.toml b/recipes/wip/c2rust/recipe.toml index b651bf25..ef007c59 100644 --- a/recipes/wip/c2rust/recipe.toml +++ b/recipes/wip/c2rust/recipe.toml @@ -5,7 +5,6 @@ tar = "https://github.com/immunant/c2rust/archive/refs/tags/v0.17.0.tar.gz" template = "custom" dependencies = [ "openssl1", - "llvm", ] script = """ cookbook_cargo_packages c2rust From 769c1fb63f7b16fd407ddf80515316ee0cb9beb6 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 16 Dec 2023 00:37:38 +0000 Subject: [PATCH 1220/3180] Update c2rust --- recipes/wip/c2rust/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/c2rust/recipe.toml b/recipes/wip/c2rust/recipe.toml index ef007c59..4a985c93 100644 --- a/recipes/wip/c2rust/recipe.toml +++ b/recipes/wip/c2rust/recipe.toml @@ -1,6 +1,6 @@ #TODO Can't find LLVM [source] -tar = "https://github.com/immunant/c2rust/archive/refs/tags/v0.17.0.tar.gz" +git = "https://github.com/immunant/c2rust" [build] template = "custom" dependencies = [ From e8c8aa1598c94be546eace31c19db585ea34e185 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 16 Dec 2023 00:48:53 +0000 Subject: [PATCH 1221/3180] Update c2rust --- recipes/wip/c2rust/recipe.toml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/recipes/wip/c2rust/recipe.toml b/recipes/wip/c2rust/recipe.toml index 4a985c93..506e2985 100644 --- a/recipes/wip/c2rust/recipe.toml +++ b/recipes/wip/c2rust/recipe.toml @@ -1,10 +1,14 @@ -#TODO Can't find LLVM +#TODO compilation error [source] git = "https://github.com/immunant/c2rust" [build] template = "custom" dependencies = [ "openssl1", + "libffi", + "libxml2", + "zlib", + "terminfo", ] script = """ cookbook_cargo_packages c2rust From 9114cd2f7e77618ad0402c83169f62db3f1ac9a2 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 16 Dec 2023 00:49:39 +0000 Subject: [PATCH 1222/3180] Fix c2rust --- recipes/wip/c2rust/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/wip/c2rust/recipe.toml b/recipes/wip/c2rust/recipe.toml index 506e2985..f44c8d11 100644 --- a/recipes/wip/c2rust/recipe.toml +++ b/recipes/wip/c2rust/recipe.toml @@ -8,7 +8,6 @@ dependencies = [ "libffi", "libxml2", "zlib", - "terminfo", ] script = """ cookbook_cargo_packages c2rust From 4f63f3245f88e1aaa108927bf89efae8becb272e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 16 Dec 2023 01:12:28 +0000 Subject: [PATCH 1223/3180] Update recipes --- recipes/wip/c2rust/recipe.toml | 3 --- recipes/wip/call-of-ferris/recipe.toml | 2 +- recipes/wip/capnproto/recipe.toml | 2 +- recipes/wip/carbonyl/recipe.toml | 1 + recipes/wip/cargo-about/recipe.toml | 2 +- 5 files changed, 4 insertions(+), 6 deletions(-) diff --git a/recipes/wip/c2rust/recipe.toml b/recipes/wip/c2rust/recipe.toml index f44c8d11..d2d41eb9 100644 --- a/recipes/wip/c2rust/recipe.toml +++ b/recipes/wip/c2rust/recipe.toml @@ -5,9 +5,6 @@ git = "https://github.com/immunant/c2rust" template = "custom" dependencies = [ "openssl1", - "libffi", - "libxml2", - "zlib", ] script = """ cookbook_cargo_packages c2rust diff --git a/recipes/wip/call-of-ferris/recipe.toml b/recipes/wip/call-of-ferris/recipe.toml index 9c1e2d5c..5c23987a 100644 --- a/recipes/wip/call-of-ferris/recipe.toml +++ b/recipes/wip/call-of-ferris/recipe.toml @@ -1,4 +1,4 @@ -#TODO require a update on the redox_syscall crate (after a update on the libc crate) +#TODO camino crate error (after a cargo update) [source] git = "https://github.com/Andy-Python-Programmer/CallOfFerris" [build] diff --git a/recipes/wip/capnproto/recipe.toml b/recipes/wip/capnproto/recipe.toml index 6c51dbeb..70b5c344 100644 --- a/recipes/wip/capnproto/recipe.toml +++ b/recipes/wip/capnproto/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error [source] tar = "https://capnproto.org/capnproto-c++-1.0.1.1.tar.gz" [build] diff --git a/recipes/wip/carbonyl/recipe.toml b/recipes/wip/carbonyl/recipe.toml index a2936aa3..e4d43486 100644 --- a/recipes/wip/carbonyl/recipe.toml +++ b/recipes/wip/carbonyl/recipe.toml @@ -1,3 +1,4 @@ +#TODO make nss work #TODO require Chromium building [source] tar = "https://github.com/fathyb/carbonyl/archive/refs/tags/v0.0.3.tar.gz" diff --git a/recipes/wip/cargo-about/recipe.toml b/recipes/wip/cargo-about/recipe.toml index b1bae67f..8e8214f0 100644 --- a/recipes/wip/cargo-about/recipe.toml +++ b/recipes/wip/cargo-about/recipe.toml @@ -1,5 +1,5 @@ #TODO needs to update the tokio version [source] -tar = "https://github.com/EmbarkStudios/cargo-about/archive/refs/tags/0.5.6.tar.gz" +tar = "https://github.com/EmbarkStudios/cargo-about/archive/refs/tags/0.6.0.tar.gz" [build] template = "cargo" From 1871dd1fc536d45e99388585c2545ff3a1747f91 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 16 Dec 2023 01:17:41 +0000 Subject: [PATCH 1224/3180] Update recipes --- recipes/wip/cargo-about/recipe.toml | 2 +- recipes/wip/cargo-audit/recipe.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/wip/cargo-about/recipe.toml b/recipes/wip/cargo-about/recipe.toml index 8e8214f0..e2e8e8fc 100644 --- a/recipes/wip/cargo-about/recipe.toml +++ b/recipes/wip/cargo-about/recipe.toml @@ -1,4 +1,4 @@ -#TODO needs to update the tokio version +#TODO camino crate error [source] tar = "https://github.com/EmbarkStudios/cargo-about/archive/refs/tags/0.6.0.tar.gz" [build] diff --git a/recipes/wip/cargo-audit/recipe.toml b/recipes/wip/cargo-audit/recipe.toml index d140bfcf..e24a6537 100644 --- a/recipes/wip/cargo-audit/recipe.toml +++ b/recipes/wip/cargo-audit/recipe.toml @@ -1,6 +1,6 @@ #TODO Weird error with libssh2-sys crate [source] -tar = "https://github.com/rustsec/rustsec/archive/refs/tags/cargo-audit/v0.17.6.tar.gz" +tar = "https://github.com/rustsec/rustsec/archive/refs/tags/cargo-audit/v0.18.3.tar.gz" [build] template = "custom" dependencies = [ From 68d91128996b72236bca461129346d1ff6933d82 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 16 Dec 2023 03:09:55 +0000 Subject: [PATCH 1225/3180] Add recipes --- recipes/wip/cargo-audit/recipe.toml | 2 +- recipes/wip/guile/recipe.toml | 14 ++++++++++++++ recipes/wip/guix/recipe.toml | 10 ++++++++++ recipes/wip/libeditline/recipe.toml | 5 +++++ recipes/wip/nix/recipe.toml | 22 ++++++++++++++++++++++ 5 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 recipes/wip/guile/recipe.toml create mode 100644 recipes/wip/guix/recipe.toml create mode 100644 recipes/wip/libeditline/recipe.toml create mode 100644 recipes/wip/nix/recipe.toml diff --git a/recipes/wip/cargo-audit/recipe.toml b/recipes/wip/cargo-audit/recipe.toml index e24a6537..ee896023 100644 --- a/recipes/wip/cargo-audit/recipe.toml +++ b/recipes/wip/cargo-audit/recipe.toml @@ -1,4 +1,4 @@ -#TODO Weird error with libssh2-sys crate +#TODO Weird error with libssh2-sys crate (after a patch on the ring crate) [source] tar = "https://github.com/rustsec/rustsec/archive/refs/tags/cargo-audit/v0.18.3.tar.gz" [build] diff --git a/recipes/wip/guile/recipe.toml b/recipes/wip/guile/recipe.toml new file mode 100644 index 00000000..dded977d --- /dev/null +++ b/recipes/wip/guile/recipe.toml @@ -0,0 +1,14 @@ +#TODO make dependencies work +[source] +tar = "https://ftp.gnu.org/gnu/guile/guile-3.0.9.tar.xz" +[build] +template = "configure" +dependencies = [ + "libgmp", + "libiconv", + "libunistring", + "libgc", + "readline", + "libffi", + "libintl", +] diff --git a/recipes/wip/guix/recipe.toml b/recipes/wip/guix/recipe.toml new file mode 100644 index 00000000..3835ee8a --- /dev/null +++ b/recipes/wip/guix/recipe.toml @@ -0,0 +1,10 @@ +#TODO fix libgcrypt +#TODO maybe missing dependencies, see https://guix.gnu.org/manual/en/html_node/Requirements.html +[source] +tar = "https://ftpmirror.gnu.org/gnu/guix/guix-1.4.0.tar.gz" +[build] +template = "configure" +dependencies = [ + "libgcrypt", + "sqlite3", +] diff --git a/recipes/wip/libeditline/recipe.toml b/recipes/wip/libeditline/recipe.toml new file mode 100644 index 00000000..3285058c --- /dev/null +++ b/recipes/wip/libeditline/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://ftp.troglobit.com/editline/editline-1.17.1.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/nix/recipe.toml b/recipes/wip/nix/recipe.toml new file mode 100644 index 00000000..85fb911e --- /dev/null +++ b/recipes/wip/nix/recipe.toml @@ -0,0 +1,22 @@ +#TODO make dependencies work +[source] +tar = "https://github.com/NixOS/nix/archive/refs/tags/2.19.2.tar.gz" +[build] +template = "custom" +dependencies = [ + "libbrotili", + "openssl1", + "curl", + "sqlite3", + "libeditline", + "boost", + "libsodium", + "libcpuid", +] +script = """ +autoreconf -vfi +COOKBOOK_CONFIGURE_FLAGS+=( + --disable-tests +) +cookbook_configure +""" From 1f8babe0c3b0b062334a7c30a7eb839dead25318 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 16 Dec 2023 20:29:48 +0000 Subject: [PATCH 1226/3180] Add a rule for GitHub tarballs --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 6a576ef7..c04defc0 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,10 @@ Before sending your recipe to upstream (to become a public package), you must fo - All recipes must use our cross-compilers, a Cookbook [template](https://doc.redox-os.org/book/ch09-03-porting-applications.html#templates) does this automatically but it's not always possible, study the build system of your program/library to find these options or patch the configuration files. - Don't hardcode the CPU architecture on the recipe script. +#### Tarballs + +- Don't use the auto-generated tarballs from GitHub, they aren't static and don't verify the archive integrity. + #### Library Linking - Keep the static linking of libraries, there's an exception if the package become bigger than 100MB, big libraries/runtimes like LLVM can be dynamically linked. From 5e056850a427cbdb1f7af1fd05385b2e62a1ee57 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 16 Dec 2023 22:26:43 +0000 Subject: [PATCH 1227/3180] Update recipes --- recipes/wip/aeruginous/recipe.toml | 3 ++- recipes/wip/aim/recipe.toml | 3 ++- recipes/wip/alacritty/recipe.toml | 3 ++- recipes/wip/ani-cli/recipe.toml | 3 ++- recipes/wip/anime-effects/recipe.toml | 3 ++- recipes/wip/appleseed/recipe.toml | 3 ++- recipes/wip/artem/recipe.toml | 3 ++- recipes/wip/cargo-audit/recipe.toml | 2 +- recipes/wip/news-rs/recipe.toml | 6 ++++++ recipes/wip/torrust-tracker/recipe.toml | 6 ++++++ 10 files changed, 27 insertions(+), 8 deletions(-) create mode 100644 recipes/wip/news-rs/recipe.toml create mode 100644 recipes/wip/torrust-tracker/recipe.toml diff --git a/recipes/wip/aeruginous/recipe.toml b/recipes/wip/aeruginous/recipe.toml index ea249d53..3a89c0e2 100644 --- a/recipes/wip/aeruginous/recipe.toml +++ b/recipes/wip/aeruginous/recipe.toml @@ -1,5 +1,6 @@ #TODO compiled but not tested [source] -tar = "https://github.com/kevinmatthes/aeruginous-rs/archive/refs/tags/v3.3.0.tar.gz" +git = "https://github.com/kevinmatthes/aeruginous-rs" +rev = "a129a3ff2d97cc288db816d3a263991094aecbc9" [build] template = "cargo" diff --git a/recipes/wip/aim/recipe.toml b/recipes/wip/aim/recipe.toml index 56f617a2..2ea70b3c 100644 --- a/recipes/wip/aim/recipe.toml +++ b/recipes/wip/aim/recipe.toml @@ -1,6 +1,7 @@ #TODO openssl-sys crate compilation error [source] -tar = "https://github.com/mihaigalos/aim/archive/refs/tags/1.8.5.tar.gz" +git = "https://github.com/mihaigalos/aim" +rev = "bd1c6f91061cd7bc1c849a75e7616a2de90408dd" [build] dependencies = [ "openssl1", diff --git a/recipes/wip/alacritty/recipe.toml b/recipes/wip/alacritty/recipe.toml index d8ea92be..02aeb694 100644 --- a/recipes/wip/alacritty/recipe.toml +++ b/recipes/wip/alacritty/recipe.toml @@ -1,6 +1,7 @@ #TODO make Wayland work [source] -tar = "https://github.com/alacritty/alacritty/archive/refs/tags/v0.12.3.tar.gz" +git = "https://github.com/alacritty/alacritty" +rev = "5efb0690a3174dd4e21516bda59f74f3aa8ba3e3" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/ani-cli/recipe.toml b/recipes/wip/ani-cli/recipe.toml index d471cd39..8fd8bbf1 100644 --- a/recipes/wip/ani-cli/recipe.toml +++ b/recipes/wip/ani-cli/recipe.toml @@ -1,6 +1,7 @@ #TODO move to the "tools" category [source] -tar = "https://github.com/pystardust/ani-cli/archive/refs/tags/v4.6.tar.gz" +git = "https://github.com/pystardust/ani-cli" +rev = "4a77bca5d95ae755ab5ac129c2db2025feab217b" [build] template = "custom" script = """ diff --git a/recipes/wip/anime-effects/recipe.toml b/recipes/wip/anime-effects/recipe.toml index 77cc8102..afe1ac4f 100644 --- a/recipes/wip/anime-effects/recipe.toml +++ b/recipes/wip/anime-effects/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for QMake, see https://github.com/AnimeEffectsDevs/AnimeEffects#clone--building [source] -tar = "https://github.com/AnimeEffectsDevs/AnimeEffects/archive/refs/tags/v1.5.0.tar.gz" +git = "https://github.com/AnimeEffectsDevs/AnimeEffects" +rev = "6080497684809aa5c73bf015fec36e88443f6d11" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/appleseed/recipe.toml b/recipes/wip/appleseed/recipe.toml index 044f4cc1..22bf55da 100644 --- a/recipes/wip/appleseed/recipe.toml +++ b/recipes/wip/appleseed/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for CMake, see https://github.com/appleseedhq/appleseed/wiki/Building-appleseed-on-Linux [source] -tar = "https://github.com/appleseedhq/appleseed/archive/refs/tags/2.1.0-beta.tar.gz" +git = "https://github.com/appleseedhq/appleseed" +rev = "015adb503af58cb80103e0c3ddeefc20d99d204f" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/artem/recipe.toml b/recipes/wip/artem/recipe.toml index 98e8d4d9..2f6ad0ec 100644 --- a/recipes/wip/artem/recipe.toml +++ b/recipes/wip/artem/recipe.toml @@ -1,6 +1,7 @@ #TODO openssl-sys crate error [source] -tar = "https://github.com/FineFindus/artem/archive/refs/tags/v1.2.1.tar.gz" +git = "https://github.com/FineFindus/artem" +rev = "fcb2424155febea1c2763652f1e87199f1e0e0eb" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/cargo-audit/recipe.toml b/recipes/wip/cargo-audit/recipe.toml index ee896023..3315a7eb 100644 --- a/recipes/wip/cargo-audit/recipe.toml +++ b/recipes/wip/cargo-audit/recipe.toml @@ -1,4 +1,4 @@ -#TODO Weird error with libssh2-sys crate (after a patch on the ring crate) +#TODO camino crate error (after a patch on the ring crate) [source] tar = "https://github.com/rustsec/rustsec/archive/refs/tags/cargo-audit/v0.18.3.tar.gz" [build] diff --git a/recipes/wip/news-rs/recipe.toml b/recipes/wip/news-rs/recipe.toml new file mode 100644 index 00000000..89091348 --- /dev/null +++ b/recipes/wip/news-rs/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Atticus64/news" +rev = "84d7598c6ec44fa9c1ee2a42d0c73163e3c7e407" +[build] +template = "cargo" diff --git a/recipes/wip/torrust-tracker/recipe.toml b/recipes/wip/torrust-tracker/recipe.toml new file mode 100644 index 00000000..4dcaba9a --- /dev/null +++ b/recipes/wip/torrust-tracker/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/torrust/torrust-tracker" +rev = "048d35c1172d686ce85cadaa42f77d30703ca80a" +[build] +template = "cargo" From 0d8b3816eb9f73f0ba9efaceec14c7ac5b350176 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 16 Dec 2023 23:07:53 +0000 Subject: [PATCH 1228/3180] Update recipes --- recipes/wip/arti/recipe.toml | 3 ++- recipes/wip/assaultcube/recipe.toml | 3 ++- recipes/wip/astc-encoder/recipe.toml | 3 ++- recipes/wip/atuin/recipe.toml | 3 ++- recipes/wip/b3sum/recipe.toml | 3 ++- recipes/wip/backhand/recipe.toml | 10 +++++++--- recipes/wip/bacon/recipe.toml | 3 ++- recipes/wip/bandwhich/recipe.toml | 3 ++- recipes/wip/bat/recipe.toml | 3 ++- recipes/wip/battop/recipe.toml | 2 +- recipes/wip/betterspades/recipe.toml | 2 +- recipes/wip/bevy-engine/recipe.toml | 3 ++- recipes/wip/binocle/recipe.toml | 3 ++- recipes/wip/biome/recipe.toml | 3 ++- recipes/wip/bita/recipe.toml | 3 ++- recipes/wip/bottles/recipe.toml | 3 ++- recipes/wip/bottom/recipe.toml | 3 ++- recipes/wip/boytacean/recipe.toml | 3 ++- recipes/wip/broot/recipe.toml | 3 ++- recipes/wip/bullet-physics/recipe.toml | 3 ++- recipes/wip/capstone/recipe.toml | 3 ++- recipes/wip/carbonyl/recipe.toml | 2 +- recipes/wip/cargo-about/recipe.toml | 3 ++- recipes/wip/cargo-audit/recipe.toml | 3 ++- 24 files changed, 50 insertions(+), 26 deletions(-) diff --git a/recipes/wip/arti/recipe.toml b/recipes/wip/arti/recipe.toml index 4dcefc60..4f7acc99 100644 --- a/recipes/wip/arti/recipe.toml +++ b/recipes/wip/arti/recipe.toml @@ -1,6 +1,7 @@ #TODO pwd-grp crate error [source] -tar = "https://gitlab.torproject.org/tpo/core/arti/-/archive/arti-v1.1.7/arti-arti-v1.1.7.tar.gz" +git = "https://gitlab.torproject.org/tpo/core/arti" +rev = "db9a5263e7b185b90750c658dff8e5a50fce0a2e" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/assaultcube/recipe.toml b/recipes/wip/assaultcube/recipe.toml index 8e70c6f1..b1c80491 100644 --- a/recipes/wip/assaultcube/recipe.toml +++ b/recipes/wip/assaultcube/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for "make", see https://wiki.cubers.net/action/view/Linux_Support#Compiling_AssaultCube [source] -tar = "https://github.com/assaultcube/AC/archive/refs/tags/v1.3.0.2.tar.gz" +git = "https://github.com/assaultcube/AC" +rev = "1ece5af7533983bb8f827616381d282470793d90" [build] template = "configure" dependencies = [ diff --git a/recipes/wip/astc-encoder/recipe.toml b/recipes/wip/astc-encoder/recipe.toml index d1817afb..595155b6 100644 --- a/recipes/wip/astc-encoder/recipe.toml +++ b/recipes/wip/astc-encoder/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for CMake, see https://github.com/ARM-software/astc-encoder/blob/main/Docs/Building.md#macos-and-linux-using-make [source] -tar = "https://github.com/ARM-software/astc-encoder/archive/refs/tags/4.6.1.tar.gz" +git = "https://github.com/ARM-software/astc-encoder" +rev = "aeece2f609db959d1c5e43e4f00bd177ea130575" [build] template = "custom" diff --git a/recipes/wip/atuin/recipe.toml b/recipes/wip/atuin/recipe.toml index 10e3e70b..a281a26c 100644 --- a/recipes/wip/atuin/recipe.toml +++ b/recipes/wip/atuin/recipe.toml @@ -1,6 +1,7 @@ #TODO require a patch on tokio (update the version) [source] -tar = "https://github.com/ellie/atuin/archive/refs/tags/v14.0.1.tar.gz" +git = "https://github.com/ellie/atuin" +rev = "da2e58fbb17aa05510df2480f7e1d47e21e74c73" [build] template = "custom" script = """ diff --git a/recipes/wip/b3sum/recipe.toml b/recipes/wip/b3sum/recipe.toml index 5882d6ff..ede0f446 100644 --- a/recipes/wip/b3sum/recipe.toml +++ b/recipes/wip/b3sum/recipe.toml @@ -1,6 +1,7 @@ #TODO probably wrong script [source] -tar = "https://github.com/BLAKE3-team/BLAKE3/archive/refs/tags/1.4.1.tar.gz" +git = "https://github.com/BLAKE3-team/BLAKE3" +rev = "5aa53f07f7188a569cadfc5daf1522972d9a9630" [build] template = "custom" script = """ diff --git a/recipes/wip/backhand/recipe.toml b/recipes/wip/backhand/recipe.toml index 81e08373..65bf91b5 100644 --- a/recipes/wip/backhand/recipe.toml +++ b/recipes/wip/backhand/recipe.toml @@ -1,5 +1,9 @@ -#TODO broken program +#TODO not compiled or tested [source] -tar = "https://github.com/wcampbell0x2a/backhand/archive/refs/tags/v0.12.0.tar.gz" +git = "https://github.com/wcampbell0x2a/backhand" +rev = "96c83729a791526ff0a3fd8e9390740c25ae8184" [build] -template = "cargo" \ No newline at end of file +template = "custom" +script = """ +cookbook_cargo_packages backhand-cli +""" diff --git a/recipes/wip/bacon/recipe.toml b/recipes/wip/bacon/recipe.toml index 2f093f85..91d29e5d 100644 --- a/recipes/wip/bacon/recipe.toml +++ b/recipes/wip/bacon/recipe.toml @@ -1,5 +1,6 @@ #TODO camino crate compilation error [source] -tar = "https://github.com/Canop/bacon/archive/refs/tags/v2.8.1.tar.gz" +git = "https://github.com/Canop/bacon" +rev = "4ab9e68ba3003c4f6c97c07df0c2e23508890f52" [build] template = "cargo" \ No newline at end of file diff --git a/recipes/wip/bandwhich/recipe.toml b/recipes/wip/bandwhich/recipe.toml index 1863abca..3a34f634 100644 --- a/recipes/wip/bandwhich/recipe.toml +++ b/recipes/wip/bandwhich/recipe.toml @@ -1,5 +1,6 @@ #TODO redox_syscall crate error [source] -tar = "https://github.com/imsnif/bandwhich/archive/refs/tags/0.20.0.tar.gz" +git = "https://github.com/imsnif/bandwhich" +rev = "f987636f785f13fd9e96d942a6b73176c5673d1f" [build] template = "cargo" diff --git a/recipes/wip/bat/recipe.toml b/recipes/wip/bat/recipe.toml index e77efa84..0c4db9a5 100644 --- a/recipes/wip/bat/recipe.toml +++ b/recipes/wip/bat/recipe.toml @@ -1,5 +1,6 @@ #TODO sys-info crate build.rs does not recognize Redox [source] -tar = "https://github.com/sharkdp/bat/archive/refs/tags/v0.23.0.tar.gz" +git = "https://github.com/sharkdp/bat" +rev = "fc9546854f5a7b38823f4990453c6cde386bfd3b" [build] template = "cargo" diff --git a/recipes/wip/battop/recipe.toml b/recipes/wip/battop/recipe.toml index 093c8769..02e81de2 100644 --- a/recipes/wip/battop/recipe.toml +++ b/recipes/wip/battop/recipe.toml @@ -1,5 +1,5 @@ #TODO atty crate error (after cargo update) [source] -tar = "https://github.com/svartalf/rust-battop/archive/refs/tags/v0.2.4.tar.gz" +git = "https://github.com/svartalf/rust-battop" [build] template = "cargo" diff --git a/recipes/wip/betterspades/recipe.toml b/recipes/wip/betterspades/recipe.toml index 2a384ba3..1e223a36 100644 --- a/recipes/wip/betterspades/recipe.toml +++ b/recipes/wip/betterspades/recipe.toml @@ -1,7 +1,7 @@ #TODO probably missing dependencies, see https://github.com/xtreme8000/BetterSpades#build-requirements #TODO probably wrong script, see https://github.com/xtreme8000/BetterSpades#linux [source] -tar = "https://github.com/xtreme8000/BetterSpades/archive/refs/tags/v0.1.5.tar.gz" +git = "https://github.com/xtreme8000/BetterSpades" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/bevy-engine/recipe.toml b/recipes/wip/bevy-engine/recipe.toml index fad6be0f..b38c9ee8 100644 --- a/recipes/wip/bevy-engine/recipe.toml +++ b/recipes/wip/bevy-engine/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for the "hello_world" example and the "wayland" flag [source] -tar = "https://github.com/bevyengine/bevy/archive/refs/tags/v0.11.1.tar.gz" +git = "https://github.com/bevyengine/bevy" +rev = "22e39c4abf6e2fdf99ba0820b3c35db73be71347" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/binocle/recipe.toml b/recipes/wip/binocle/recipe.toml index 59c133c6..573f4d77 100644 --- a/recipes/wip/binocle/recipe.toml +++ b/recipes/wip/binocle/recipe.toml @@ -1,5 +1,6 @@ #TODO compiled but not tested [source] -tar = "https://github.com/sharkdp/binocle/archive/refs/tags/v0.3.2.tar.gz" +git = "https://github.com/sharkdp/binocle" +rev = "f7e1bfe28938b5e289e8b353bf592aa3c26ca71f" [build] template = "cargo" diff --git a/recipes/wip/biome/recipe.toml b/recipes/wip/biome/recipe.toml index e27f4222..1f3fac45 100644 --- a/recipes/wip/biome/recipe.toml +++ b/recipes/wip/biome/recipe.toml @@ -1,6 +1,7 @@ #TODO tikv-jemalloc-sys crate error [source] -tar = "https://github.com/biomejs/biome/archive/refs/tags/cli/v1.4.0.tar.gz" +git = "https://github.com/biomejs/biome" +rev = "a88751306242058374575b9f511e3c22213032b6" [build] template = "custom" script = """ diff --git a/recipes/wip/bita/recipe.toml b/recipes/wip/bita/recipe.toml index bccc9373..8131dcf3 100644 --- a/recipes/wip/bita/recipe.toml +++ b/recipes/wip/bita/recipe.toml @@ -1,6 +1,7 @@ #TODO compilation error (after a cargo update and a patch on the ring and tokio crates) [source] -tar = "https://github.com/oll3/bita/archive/refs/tags/v0.11.0.tar.gz" +git = "https://github.com/oll3/bita" +rev = "202579482b94db85e3e49e52dfba1edd498bf733" [build] template = "custom" script = """ diff --git a/recipes/wip/bottles/recipe.toml b/recipes/wip/bottles/recipe.toml index 746e66ee..ab9220a4 100644 --- a/recipes/wip/bottles/recipe.toml +++ b/recipes/wip/bottles/recipe.toml @@ -1,5 +1,6 @@ #TODO missing Meson build instructions [source] -tar = "https://github.com/bottlesdevs/Bottles/archive/refs/tags/51.9.tar.gz" +git = "https://github.com/bottlesdevs/Bottles" +rev = "0914b2e34c1800784b26ca52d1a80f06d65252fa" [build] template = "custom" diff --git a/recipes/wip/bottom/recipe.toml b/recipes/wip/bottom/recipe.toml index 3951313e..6ace3b7c 100644 --- a/recipes/wip/bottom/recipe.toml +++ b/recipes/wip/bottom/recipe.toml @@ -1,5 +1,6 @@ #TODO starship-battery crate compilation error [source] -tar = "https://github.com/ClementTsang/bottom/archive/refs/tags/0.9.1.tar.gz" +git = "https://github.com/ClementTsang/bottom" +rev = "6d251098710f3119af11ecdd8761929acb010fab" [build] template = "cargo" diff --git a/recipes/wip/boytacean/recipe.toml b/recipes/wip/boytacean/recipe.toml index bcd4f873..6c5a1ecc 100644 --- a/recipes/wip/boytacean/recipe.toml +++ b/recipes/wip/boytacean/recipe.toml @@ -1,6 +1,7 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/joamag/boytacean/archive/refs/tags/0.9.16.tar.gz" +git = "https://github.com/joamag/boytacean" +rev = "1ef4a9d1689319722dff73dec4a824a7d4289f5d" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/broot/recipe.toml b/recipes/wip/broot/recipe.toml index a8d18595..3c74af0c 100644 --- a/recipes/wip/broot/recipe.toml +++ b/recipes/wip/broot/recipe.toml @@ -1,5 +1,6 @@ #TODO nix crate compilation error [source] -tar = "https://github.com/Canop/broot/archive/refs/tags/v1.22.1.tar.gz" +git = "https://github.com/Canop/broot" +rev = "c12f94f23551cbc7142ac6677385fa28cea29d1d" [build] template = "cargo" diff --git a/recipes/wip/bullet-physics/recipe.toml b/recipes/wip/bullet-physics/recipe.toml index f2f39442..3fe74819 100644 --- a/recipes/wip/bullet-physics/recipe.toml +++ b/recipes/wip/bullet-physics/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for Premake or CMake, see https://github.com/bulletphysics/bullet3#build-instructions-for-bullet-using-premake-you-can-also-use-cmake-instead [source] -tar = "https://github.com/bulletphysics/bullet3/archive/refs/tags/3.25.tar.gz" +git = "https://github.com/bulletphysics/bullet3" +rev = "2c204c49e56ed15ec5fcfa71d199ab6d6570b3f5" [build] template = "custom" diff --git a/recipes/wip/capstone/recipe.toml b/recipes/wip/capstone/recipe.toml index 8a2eea77..c0cef751 100644 --- a/recipes/wip/capstone/recipe.toml +++ b/recipes/wip/capstone/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for building, see https://github.com/capstone-engine/capstone/blob/next/COMPILE.TXT [source] -tar = "https://github.com/capstone-engine/capstone/archive/refs/tags/5.0.1.tar.gz" +git = "https://github.com/capstone-engine/capstone" +rev = "097c04d9413c59a58b00d4d1c8d5dc0ac158ffaa" [build] template = "custom" diff --git a/recipes/wip/carbonyl/recipe.toml b/recipes/wip/carbonyl/recipe.toml index e4d43486..eb781408 100644 --- a/recipes/wip/carbonyl/recipe.toml +++ b/recipes/wip/carbonyl/recipe.toml @@ -1,7 +1,7 @@ #TODO make nss work #TODO require Chromium building [source] -tar = "https://github.com/fathyb/carbonyl/archive/refs/tags/v0.0.3.tar.gz" +git = "https://github.com/fathyb/carbonyl" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/cargo-about/recipe.toml b/recipes/wip/cargo-about/recipe.toml index e2e8e8fc..7dbdd565 100644 --- a/recipes/wip/cargo-about/recipe.toml +++ b/recipes/wip/cargo-about/recipe.toml @@ -1,5 +1,6 @@ #TODO camino crate error [source] -tar = "https://github.com/EmbarkStudios/cargo-about/archive/refs/tags/0.6.0.tar.gz" +git = "https://github.com/EmbarkStudios/cargo-about" +rev = "2f6275808e651dca7d739dbbcd45efc48f4f388d" [build] template = "cargo" diff --git a/recipes/wip/cargo-audit/recipe.toml b/recipes/wip/cargo-audit/recipe.toml index 3315a7eb..954a58b0 100644 --- a/recipes/wip/cargo-audit/recipe.toml +++ b/recipes/wip/cargo-audit/recipe.toml @@ -1,6 +1,7 @@ #TODO camino crate error (after a patch on the ring crate) [source] -tar = "https://github.com/rustsec/rustsec/archive/refs/tags/cargo-audit/v0.18.3.tar.gz" +git = "https://github.com/rustsec/rustsec" +rev = "3544515990b09441ecc12df8d0291bc6f23d3d30" [build] template = "custom" dependencies = [ From 959dc2d498cd1896df8f4a7f4facf465eea5980e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 16 Dec 2023 23:17:57 +0000 Subject: [PATCH 1229/3180] Fix cargo-auditable --- recipes/wip/cargo-auditable/recipe.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/cargo-auditable/recipe.toml b/recipes/wip/cargo-auditable/recipe.toml index 69190aee..f8ff0900 100644 --- a/recipes/wip/cargo-auditable/recipe.toml +++ b/recipes/wip/cargo-auditable/recipe.toml @@ -2,4 +2,7 @@ [source] git = "https://github.com/rust-secure-code/cargo-auditable" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages cargo-auditable +""" From 774c7f4e1bba33695f5b4607731960daa3c6b432 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 16 Dec 2023 23:22:09 +0000 Subject: [PATCH 1230/3180] Update recipes --- recipes/wip/cargo-auditable/recipe.toml | 2 +- recipes/wip/cargo-cache/recipe.toml | 3 ++- recipes/wip/cargo-crev/recipe.toml | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/recipes/wip/cargo-auditable/recipe.toml b/recipes/wip/cargo-auditable/recipe.toml index f8ff0900..c64d92fd 100644 --- a/recipes/wip/cargo-auditable/recipe.toml +++ b/recipes/wip/cargo-auditable/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/rust-secure-code/cargo-auditable" [build] diff --git a/recipes/wip/cargo-cache/recipe.toml b/recipes/wip/cargo-cache/recipe.toml index ed612b3d..b7a69111 100644 --- a/recipes/wip/cargo-cache/recipe.toml +++ b/recipes/wip/cargo-cache/recipe.toml @@ -1,5 +1,6 @@ #TODO camino crate compilation error [source] -tar = "https://github.com/matthiaskrgr/cargo-cache/archive/refs/tags/0.8.3.tar.gz" +git = "https://github.com/matthiaskrgr/cargo-cache" +rev = "f26f8b8bb1ce96481973483de9a939ff80f97d5d" [build] template = "cargo" diff --git a/recipes/wip/cargo-crev/recipe.toml b/recipes/wip/cargo-crev/recipe.toml index 5baf0a56..05f326ff 100644 --- a/recipes/wip/cargo-crev/recipe.toml +++ b/recipes/wip/cargo-crev/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/crev-dev/cargo-crev/archive/refs/tags/v0.25.4.tar.gz" +git = "https://github.com/crev-dev/cargo-crev" +rev = "be532d95731dc067302e7910164120a2e4fdf745" [build] template = "cargo" From 0eb436f7f74f86fe698be5f7a3c445add649be9a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 16 Dec 2023 23:26:38 +0000 Subject: [PATCH 1231/3180] Fix cargo-crev --- recipes/wip/cargo-crev/recipe.toml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/recipes/wip/cargo-crev/recipe.toml b/recipes/wip/cargo-crev/recipe.toml index 05f326ff..771d2cbe 100644 --- a/recipes/wip/cargo-crev/recipe.toml +++ b/recipes/wip/cargo-crev/recipe.toml @@ -3,4 +3,10 @@ git = "https://github.com/crev-dev/cargo-crev" rev = "be532d95731dc067302e7910164120a2e4fdf745" [build] -template = "cargo" +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +cookbook_cargo_packages cargo-crev +""" From a140b141f9dc94adf2fc9868f38d2b2dc915a51e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 16 Dec 2023 23:29:55 +0000 Subject: [PATCH 1232/3180] Update recipes --- recipes/wip/cargo-crev/recipe.toml | 2 +- recipes/wip/cargo-deny/recipe.toml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/wip/cargo-crev/recipe.toml b/recipes/wip/cargo-crev/recipe.toml index 771d2cbe..f2bd9719 100644 --- a/recipes/wip/cargo-crev/recipe.toml +++ b/recipes/wip/cargo-crev/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO weird error on the workspace [source] git = "https://github.com/crev-dev/cargo-crev" rev = "be532d95731dc067302e7910164120a2e4fdf745" diff --git a/recipes/wip/cargo-deny/recipe.toml b/recipes/wip/cargo-deny/recipe.toml index bcba29a2..76720093 100644 --- a/recipes/wip/cargo-deny/recipe.toml +++ b/recipes/wip/cargo-deny/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/EmbarkStudios/cargo-deny/archive/refs/tags/0.14.3.tar.gz" +git = "https://github.com/EmbarkStudios/cargo-deny" +rev = "80860f0f6c974810e9ce38655309293e8aa841e4" [build] template = "cargo" From 98824c728d97b4fa59fc77137fe80b73e0c6a625 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 17 Dec 2023 01:28:57 +0000 Subject: [PATCH 1233/3180] Update recipes --- recipes/wip/cargo-deny/recipe.toml | 2 +- recipes/wip/cargo-diet/recipe.toml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/wip/cargo-deny/recipe.toml b/recipes/wip/cargo-deny/recipe.toml index 76720093..df1e7c2e 100644 --- a/recipes/wip/cargo-deny/recipe.toml +++ b/recipes/wip/cargo-deny/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error (after a patch on the ring crate) [source] git = "https://github.com/EmbarkStudios/cargo-deny" rev = "80860f0f6c974810e9ce38655309293e8aa841e4" diff --git a/recipes/wip/cargo-diet/recipe.toml b/recipes/wip/cargo-diet/recipe.toml index c17dc013..f6a80ee4 100644 --- a/recipes/wip/cargo-diet/recipe.toml +++ b/recipes/wip/cargo-diet/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/the-lean-crate/cargo-diet/archive/refs/tags/v1.2.7.tar.gz" +git = "https://github.com/the-lean-crate/cargo-diet" +rev = "76e3691a6250c82d276b30c2ef21af7f49e24e6f" [build] template = "cargo" From 8437512c4b082c913f528a1ecc07ead0eb92a1ec Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 17 Dec 2023 01:56:43 +0000 Subject: [PATCH 1234/3180] Update recipes --- recipes/wip/cargo-diet/recipe.toml | 2 +- recipes/wip/cargo-fuzz/recipe.toml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/wip/cargo-diet/recipe.toml b/recipes/wip/cargo-diet/recipe.toml index f6a80ee4..6fa096bf 100644 --- a/recipes/wip/cargo-diet/recipe.toml +++ b/recipes/wip/cargo-diet/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO termsize crate error [source] git = "https://github.com/the-lean-crate/cargo-diet" rev = "76e3691a6250c82d276b30c2ef21af7f49e24e6f" diff --git a/recipes/wip/cargo-fuzz/recipe.toml b/recipes/wip/cargo-fuzz/recipe.toml index 57600ccf..6d9f2cc3 100644 --- a/recipes/wip/cargo-fuzz/recipe.toml +++ b/recipes/wip/cargo-fuzz/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/rust-fuzz/cargo-fuzz/archive/refs/tags/0.11.2.tar.gz" +git = "https://github.com/rust-fuzz/cargo-fuzz" +rev = "0a992ee43d91746a6a627e9977cfb27693ce3b86" [build] template = "cargo" From 6590879628ea51f980869c2d1831e5b4d266cfe5 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 17 Dec 2023 02:03:06 +0000 Subject: [PATCH 1235/3180] update recipes --- recipes/wip/cargo-fuzz/recipe.toml | 2 +- recipes/wip/cargo-geiger/recipe.toml | 5 +++-- recipes/wip/cargo-generate/recipe.toml | 3 ++- recipes/wip/cargo-info/recipe.toml | 3 ++- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/recipes/wip/cargo-fuzz/recipe.toml b/recipes/wip/cargo-fuzz/recipe.toml index 6d9f2cc3..1bc0b3a0 100644 --- a/recipes/wip/cargo-fuzz/recipe.toml +++ b/recipes/wip/cargo-fuzz/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after an update on proc-macro2) [source] git = "https://github.com/rust-fuzz/cargo-fuzz" rev = "0a992ee43d91746a6a627e9977cfb27693ce3b86" diff --git a/recipes/wip/cargo-geiger/recipe.toml b/recipes/wip/cargo-geiger/recipe.toml index 85965d27..ea680397 100644 --- a/recipes/wip/cargo-geiger/recipe.toml +++ b/recipes/wip/cargo-geiger/recipe.toml @@ -1,6 +1,7 @@ -#TODO camino crate compilation error +#TODO camino crate error [source] -tar = "https://github.com/rust-secure-code/cargo-geiger/archive/refs/tags/cargo-geiger-0.11.6.tar.gz" +git = "https://github.com/rust-secure-code/cargo-geiger" +rev = "5da482d71b2d7e0cde2ccb716c2457df4c70ca7a" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/cargo-generate/recipe.toml b/recipes/wip/cargo-generate/recipe.toml index 611d30a8..168293d1 100644 --- a/recipes/wip/cargo-generate/recipe.toml +++ b/recipes/wip/cargo-generate/recipe.toml @@ -1,6 +1,7 @@ #TODO fs_at crate error [source] -tar = "https://github.com/cargo-generate/cargo-generate/archive/refs/tags/v0.18.3.tar.gz" +git = "https://github.com/cargo-generate/cargo-generate" +rev = "f7728a02149c9120fdbe50332e9342b92621faa6" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/cargo-info/recipe.toml b/recipes/wip/cargo-info/recipe.toml index 51728369..49ec9cc4 100644 --- a/recipes/wip/cargo-info/recipe.toml +++ b/recipes/wip/cargo-info/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://gitlab.com/imp/cargo-info/-/archive/0.7.6/cargo-info-0.7.6.tar.gz" +git = "https://gitlab.com/imp/cargo-info" +rev = "8a7b4db5b7c7a19c43bf4e01c22abdb43dfcbe71" [build] template = "cargo" From 8227395ecb6298043ca1470b20a08bd0705cc770 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 17 Dec 2023 02:04:14 +0000 Subject: [PATCH 1236/3180] add dependency --- recipes/wip/cargo-info/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/wip/cargo-info/recipe.toml b/recipes/wip/cargo-info/recipe.toml index 49ec9cc4..b17b67df 100644 --- a/recipes/wip/cargo-info/recipe.toml +++ b/recipes/wip/cargo-info/recipe.toml @@ -4,3 +4,6 @@ git = "https://gitlab.com/imp/cargo-info" rev = "8a7b4db5b7c7a19c43bf4e01c22abdb43dfcbe71" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 118c0a77ae6974f21852e9ebe6c598426f863036 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 17 Dec 2023 02:08:54 +0000 Subject: [PATCH 1237/3180] update recipes --- recipes/wip/cargo-info/recipe.toml | 2 +- recipes/wip/cargo-msrv/recipe.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/wip/cargo-info/recipe.toml b/recipes/wip/cargo-info/recipe.toml index b17b67df..60bde03d 100644 --- a/recipes/wip/cargo-info/recipe.toml +++ b/recipes/wip/cargo-info/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO openssl error [source] git = "https://gitlab.com/imp/cargo-info" rev = "8a7b4db5b7c7a19c43bf4e01c22abdb43dfcbe71" diff --git a/recipes/wip/cargo-msrv/recipe.toml b/recipes/wip/cargo-msrv/recipe.toml index e0001a19..b4a03c13 100644 --- a/recipes/wip/cargo-msrv/recipe.toml +++ b/recipes/wip/cargo-msrv/recipe.toml @@ -1,5 +1,5 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/foresterre/cargo-msrv/archive/refs/tags/v0.15.1.tar.gz" +git = "https://github.com/foresterre/cargo-msrv" [build] template = "cargo" From 74bcf0f1d2c792bbff7d580f186fc9f1935212b9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 17 Dec 2023 03:14:46 +0000 Subject: [PATCH 1238/3180] update recipes --- recipes/wip/cargo-msrv/recipe.toml | 2 +- recipes/wip/cargo-mutants/recipe.toml | 4 +++- recipes/wip/cargo-tarpaulin/recipe.toml | 3 ++- recipes/wip/cargo-ui/recipe.toml | 3 ++- recipes/wip/cargo-watch/recipe.toml | 3 ++- recipes/wip/cargo-zigbuild/recipe.toml | 5 +++-- recipes/wip/cava/recipe.toml | 3 ++- recipes/wip/cb/recipe.toml | 5 +---- recipes/wip/cbindgen/recipe.toml | 3 ++- recipes/wip/celeste/recipe.toml | 3 ++- recipes/wip/chess-tui/recipe.toml | 3 ++- recipes/wip/choose/recipe.toml | 4 ++-- recipes/wip/cicada/recipe.toml | 3 ++- recipes/wip/cling/recipe.toml | 3 ++- recipes/wip/clipshare-desktop/recipe.toml | 3 ++- recipes/wip/clipshare-server/recipe.toml | 3 ++- recipes/wip/clog-cli/recipe.toml | 2 +- recipes/wip/cmark/recipe.toml | 3 ++- recipes/wip/cmus/recipe.toml | 3 ++- recipes/wip/cobalt/recipe.toml | 3 ++- recipes/wip/codevis/recipe.toml | 3 ++- recipes/wip/conky/recipe.toml | 3 ++- recipes/wip/converseen/recipe.toml | 3 ++- recipes/wip/cotp/recipe.toml | 3 ++- 24 files changed, 47 insertions(+), 29 deletions(-) diff --git a/recipes/wip/cargo-msrv/recipe.toml b/recipes/wip/cargo-msrv/recipe.toml index b4a03c13..60eac40c 100644 --- a/recipes/wip/cargo-msrv/recipe.toml +++ b/recipes/wip/cargo-msrv/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error (after a patch on ring) [source] git = "https://github.com/foresterre/cargo-msrv" [build] diff --git a/recipes/wip/cargo-mutants/recipe.toml b/recipes/wip/cargo-mutants/recipe.toml index d3241010..8a2ac5a4 100644 --- a/recipes/wip/cargo-mutants/recipe.toml +++ b/recipes/wip/cargo-mutants/recipe.toml @@ -1,5 +1,7 @@ #TODO camino crate error [source] -tar = "https://github.com/sourcefrog/cargo-mutants/archive/refs/tags/cargo-mutants-1.2.3.tar.gz" +git = "https://github.com/sourcefrog/cargo-mutants" +rev = "6c254852eb79273b87e2ec50606bf82f9a5db0b6" +rev = " [build] template = "cargo" diff --git a/recipes/wip/cargo-tarpaulin/recipe.toml b/recipes/wip/cargo-tarpaulin/recipe.toml index a1e661d5..94e775c6 100644 --- a/recipes/wip/cargo-tarpaulin/recipe.toml +++ b/recipes/wip/cargo-tarpaulin/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/xd009642/tarpaulin/archive/refs/tags/0.27.1.tar.gz" +git = "https://github.com/xd009642/tarpaulin" +rev = "669e0b4d0e1f880f118ea481b43e309bd6c9154c" [build] template = "cargo" diff --git a/recipes/wip/cargo-ui/recipe.toml b/recipes/wip/cargo-ui/recipe.toml index a2201de4..bd99c8e1 100644 --- a/recipes/wip/cargo-ui/recipe.toml +++ b/recipes/wip/cargo-ui/recipe.toml @@ -1,6 +1,7 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/slint-ui/cargo-ui/archive/refs/tags/v0.3.3.tar.gz" +git = "https://github.com/slint-ui/cargo-ui" +rev = "230652da8e9d91f109d5e4be3a5831452243ebc0" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/cargo-watch/recipe.toml b/recipes/wip/cargo-watch/recipe.toml index 58608f2f..ea70a171 100644 --- a/recipes/wip/cargo-watch/recipe.toml +++ b/recipes/wip/cargo-watch/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/watchexec/cargo-watch/archive/refs/tags/v8.4.1.tar.gz" +git = "https://github.com/watchexec/cargo-watch" +rev = "0a85f5f76bf35009233f751c91f02d31afd2b94f" [build] template = "cargo" diff --git a/recipes/wip/cargo-zigbuild/recipe.toml b/recipes/wip/cargo-zigbuild/recipe.toml index d98b1a85..fae69d6a 100644 --- a/recipes/wip/cargo-zigbuild/recipe.toml +++ b/recipes/wip/cargo-zigbuild/recipe.toml @@ -1,6 +1,7 @@ -#TODO Not compiled or tested yet +#TODO Not compiled or tested [source] -tar = "https://github.com/rust-cross/cargo-zigbuild/archive/refs/tags/v0.16.12.tar.gz" +git = "https://github.com/rust-cross/cargo-zigbuild" +rev = "52be7dd2359cfbca8f1d0c1ae36b4f7bae64bafc" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/cava/recipe.toml b/recipes/wip/cava/recipe.toml index 5caa78cd..ba6f0581 100644 --- a/recipes/wip/cava/recipe.toml +++ b/recipes/wip/cava/recipe.toml @@ -1,6 +1,7 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/karlstav/cava/archive/refs/tags/0.9.1.tar.gz" +git = "https://github.com/karlstav/cava" +rev = "81211e9e16302312ee4322a99840c110bce0e13d" [build] template = "configure" dependencies = [ diff --git a/recipes/wip/cb/recipe.toml b/recipes/wip/cb/recipe.toml index bf68a3b2..1b7ee865 100644 --- a/recipes/wip/cb/recipe.toml +++ b/recipes/wip/cb/recipe.toml @@ -1,9 +1,6 @@ #TODO missing script for "make", see https://github.com/yaa110/cb#build-manually -#TODO probably wrong dependency +#TODO add the X11 libraries [source] git = "https://github.com/yaa110/cb" [build] template = "custom" -dependencies = [ - "libxcb", -] diff --git a/recipes/wip/cbindgen/recipe.toml b/recipes/wip/cbindgen/recipe.toml index 48edb310..39423ad9 100644 --- a/recipes/wip/cbindgen/recipe.toml +++ b/recipes/wip/cbindgen/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/mozilla/cbindgen/archive/refs/tags/0.26.0.tar.gz" +git = "https://github.com/mozilla/cbindgen" +rev = "703b53c06f9fe2dbc0193d67626558cfa84a0f62" [build] template = "cargo" diff --git a/recipes/wip/celeste/recipe.toml b/recipes/wip/celeste/recipe.toml index 7436dbdd..20cf99ac 100644 --- a/recipes/wip/celeste/recipe.toml +++ b/recipes/wip/celeste/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for "just" and require Go, see https://github.com/hwittenborn/celeste/blob/develop/BUILDING.md [source] -tar = "https://github.com/hwittenborn/celeste/archive/refs/tags/v0.8.1.tar.gz" +git = "https://github.com/hwittenborn/celeste" +rev = "2ea8dc00ed001d045792e974b46264d920090606" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/chess-tui/recipe.toml b/recipes/wip/chess-tui/recipe.toml index fd4814d0..b1811105 100644 --- a/recipes/wip/chess-tui/recipe.toml +++ b/recipes/wip/chess-tui/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/thomas-mauran/chess-tui/archive/refs/tags/1.0.0.tar.gz" +git = "https://github.com/thomas-mauran/chess-tui" +rev = "b61e559b26e4de63808509fc2626730a4ff31774" [build] template = "cargo" diff --git a/recipes/wip/choose/recipe.toml b/recipes/wip/choose/recipe.toml index e9b1b8f2..cc212bdb 100644 --- a/recipes/wip/choose/recipe.toml +++ b/recipes/wip/choose/recipe.toml @@ -1,5 +1,5 @@ -#TODO compiled after cargo update but not tested +#TODO compiled but not tested (after cargo update) [source] -tar = "https://github.com/theryangeary/choose/archive/refs/tags/v1.3.4.tar.gz" +git = "https://github.com/theryangeary/choose" [build] template = "cargo" diff --git a/recipes/wip/cicada/recipe.toml b/recipes/wip/cicada/recipe.toml index 97de79ae..373953ad 100644 --- a/recipes/wip/cicada/recipe.toml +++ b/recipes/wip/cicada/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for "make", see https://github.com/mitnk/cicada/blob/master/docs/install.md#option-c-via-source [source] -tar = "https://github.com/mitnk/cicada/archive/refs/tags/v0.9.38.tar.gz" +git = "https://github.com/mitnk/cicada" +rev = "710988133335582d43c74e04d0d7f95c034e2c21" [build] template = "custom" diff --git a/recipes/wip/cling/recipe.toml b/recipes/wip/cling/recipe.toml index 3471b28c..483e3d2b 100644 --- a/recipes/wip/cling/recipe.toml +++ b/recipes/wip/cling/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for CMake, see https://github.com/vgvassilev/cling#building-from-source [source] -tar = "https://github.com/vgvassilev/cling/archive/refs/tags/v1.0.tar.gz" +git = "https://github.com/vgvassilev/cling" +rev = "ab81cdcc61f26dfd6a31fb141f1f4b335f6922be" [build] template = "custom" diff --git a/recipes/wip/clipshare-desktop/recipe.toml b/recipes/wip/clipshare-desktop/recipe.toml index 482f745d..708eb838 100644 --- a/recipes/wip/clipshare-desktop/recipe.toml +++ b/recipes/wip/clipshare-desktop/recipe.toml @@ -1,6 +1,7 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/RastislavKish/clipshare/archive/refs/tags/v0.1.2.tar.gz" +git = "https://github.com/RastislavKish/clipshare" +rev = "2afa9c5af1a5ebaa6e1e372da6e01a289d31fdb3" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/clipshare-server/recipe.toml b/recipes/wip/clipshare-server/recipe.toml index 5a755d33..afc0cb16 100644 --- a/recipes/wip/clipshare-server/recipe.toml +++ b/recipes/wip/clipshare-server/recipe.toml @@ -1,6 +1,7 @@ #TODO probably wrong script, see https://github.com/RastislavKish/clipshare#building [source] -tar = "https://github.com/RastislavKish/clipshare/archive/refs/tags/v0.1.2.tar.gz" +git = "https://github.com/RastislavKish/clipshare" +rev = "2afa9c5af1a5ebaa6e1e372da6e01a289d31fdb3" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/clog-cli/recipe.toml b/recipes/wip/clog-cli/recipe.toml index 961c198b..be39ed4d 100644 --- a/recipes/wip/clog-cli/recipe.toml +++ b/recipes/wip/clog-cli/recipe.toml @@ -1,5 +1,5 @@ #TODO Needs to patch the rustc-serialize crate and update the redox_syscall version [source] -tar = "https://github.com/clog-tool/clog-cli/archive/refs/tags/v0.9.3.tar.gz" +git = "https://github.com/clog-tool/clog-cli" [build] template = "cargo" diff --git a/recipes/wip/cmark/recipe.toml b/recipes/wip/cmark/recipe.toml index 177f3d13..59789b0b 100644 --- a/recipes/wip/cmark/recipe.toml +++ b/recipes/wip/cmark/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for CMake, see https://github.com/commonmark/cmark#installing [source] -tar = "https://github.com/commonmark/cmark/archive/refs/tags/0.30.3.tar.gz" +git = "https://github.com/commonmark/cmark" +rev = "5ba25ff40eba44c811f79ab6a792baf945b8307c" [build] template = "custom" diff --git a/recipes/wip/cmus/recipe.toml b/recipes/wip/cmus/recipe.toml index 581350c3..f93716f2 100644 --- a/recipes/wip/cmus/recipe.toml +++ b/recipes/wip/cmus/recipe.toml @@ -1,6 +1,7 @@ #TODO Not compiled or tested yet [source] -tar = "https://github.com/cmus/cmus/archive/refs/tags/v2.10.0.tar.gz" +git = "https://github.com/cmus/cmus" +rev = "ade6e2a7253d7a256e87fdac3da17c9158e6700e" [build] template = "configure" dependencies = [ diff --git a/recipes/wip/cobalt/recipe.toml b/recipes/wip/cobalt/recipe.toml index fcabfc16..1b68360a 100644 --- a/recipes/wip/cobalt/recipe.toml +++ b/recipes/wip/cobalt/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/cobalt-org/cobalt.rs/archive/refs/tags/v0.19.0.tar.gz" +git = "https://github.com/cobalt-org/cobalt.rs" +rev = "70e8e19631819c7f552b63c35f4907920d23ae22" [build] template = "cargo" diff --git a/recipes/wip/codevis/recipe.toml b/recipes/wip/codevis/recipe.toml index f6172494..30245fbe 100644 --- a/recipes/wip/codevis/recipe.toml +++ b/recipes/wip/codevis/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/sloganking/codevis/archive/refs/tags/v0.8.4.tar.gz" +git = "https://github.com/sloganking/codevis" +rev = "af85406a2e5ebe3a0c8d1cd679c8184f6f7a99d2" [build] template = "cargo" diff --git a/recipes/wip/conky/recipe.toml b/recipes/wip/conky/recipe.toml index 5e309788..a9d69bef 100644 --- a/recipes/wip/conky/recipe.toml +++ b/recipes/wip/conky/recipe.toml @@ -1,6 +1,7 @@ #TODO probably wrong script, see https://conky.cc/documents/compiling [source] -tar = "https://github.com/brndnmtthws/conky/archive/refs/tags/v1.19.6.tar.gz" +git = "https://github.com/brndnmtthws/conky" +rev = "bbdc7081aec27daafca07fc40523335a2ea0a992" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/converseen/recipe.toml b/recipes/wip/converseen/recipe.toml index 40bd9848..0992b8cd 100644 --- a/recipes/wip/converseen/recipe.toml +++ b/recipes/wip/converseen/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for CMake, see https://github.com/Faster3ck/Converseen/blob/main/INSTALL.md#install-converseen-using-qt6 [source] -tar = "https://github.com/Faster3ck/Converseen/archive/refs/tags/v0.12.0.0.tar.gz" +git = "https://github.com/Faster3ck/Converseen" +rev = "9b2821b5ed6673a7abebbe4ee42f4718ab366485" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/cotp/recipe.toml b/recipes/wip/cotp/recipe.toml index e8c68d9a..fdd9c8df 100644 --- a/recipes/wip/cotp/recipe.toml +++ b/recipes/wip/cotp/recipe.toml @@ -1,6 +1,7 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/replydev/cotp/archive/refs/tags/v1.3.0.tar.gz" +git = "https://github.com/replydev/cotp" +rev = "ac3c11dda7b66c0c70a4106b769b5db53becc558" [build] template = "cargo" dependencies = [ From 191f5b4cb69c2d6e4a5381432e738e1f16950809 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 17 Dec 2023 16:23:10 +0000 Subject: [PATCH 1239/3180] update recipes --- recipes/wip/counts/recipe.toml | 3 ++- recipes/wip/cpu-x/recipe.toml | 3 ++- recipes/wip/cpuminer-opt/recipe.toml | 3 ++- recipes/wip/criner/recipe.toml | 3 ++- recipes/wip/crispy-doom/recipe.toml | 3 ++- recipes/wip/czkawka/recipe.toml | 3 ++- recipes/wip/dacapo-benchmarks/recipe.toml | 3 ++- recipes/wip/daktilo/recipe.toml | 3 ++- recipes/wip/dav1d/recipe.toml | 3 ++- recipes/wip/dbus/recipe.toml | 2 +- recipes/wip/defold-engine/recipe.toml | 3 ++- recipes/wip/delta/recipe.toml | 3 ++- recipes/wip/difftastic/recipe.toml | 3 ++- recipes/wip/diplomat-tool/recipe.toml | 3 ++- recipes/wip/doctave/recipe.toml | 2 +- recipes/wip/dotnet6/recipe.toml | 12 ------------ recipes/wip/dotnet7/recipe.toml | 12 ------------ recipes/wip/dprint/recipe.toml | 3 ++- recipes/wip/drill/recipe.toml | 3 ++- recipes/wip/dua/recipe.toml | 3 ++- recipes/wip/dune/recipe.toml | 3 ++- recipes/wip/dust/recipe.toml | 3 ++- recipes/wip/elixir/recipe.toml | 3 ++- recipes/wip/elm/recipe.toml | 3 ++- recipes/wip/embree/recipe.toml | 3 ++- recipes/wip/erdtree/recipe.toml | 3 ++- recipes/wip/espanso/recipe.toml | 3 ++- recipes/wip/eva/recipe.toml | 2 +- recipes/wip/evcxr-jupyter/recipe.toml | 3 ++- recipes/wip/evcxr-repl/recipe.toml | 3 ++- recipes/wip/eww/recipe.toml | 2 +- recipes/wip/eza/recipe.toml | 3 ++- recipes/wip/fclones/recipe.toml | 3 ++- recipes/wip/fend/recipe.toml | 3 ++- recipes/wip/ffizer/recipe.toml | 3 ++- recipes/wip/file/recipe.toml | 3 ++- recipes/wip/fio/recipe.toml | 3 ++- 37 files changed, 66 insertions(+), 59 deletions(-) delete mode 100644 recipes/wip/dotnet6/recipe.toml delete mode 100644 recipes/wip/dotnet7/recipe.toml diff --git a/recipes/wip/counts/recipe.toml b/recipes/wip/counts/recipe.toml index d8a9c58f..96597579 100644 --- a/recipes/wip/counts/recipe.toml +++ b/recipes/wip/counts/recipe.toml @@ -1,5 +1,6 @@ #TODO compiled after cargo update but not tested [source] -tar = "https://github.com/nnethercote/counts/archive/refs/tags/0.2.0.tar.gz" +git = "https://github.com/nnethercote/counts" +rev = "b940cac134ef81cf593567a6e693b9afbe89fa2d" [build] template = "cargo" diff --git a/recipes/wip/cpu-x/recipe.toml b/recipes/wip/cpu-x/recipe.toml index 39f12814..b2912aed 100644 --- a/recipes/wip/cpu-x/recipe.toml +++ b/recipes/wip/cpu-x/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for CMake, see https://github.com/TheTumultuousUnicornOfDarkness/CPU-X/wiki/manual-build#build-and-install-cpu-x [source] -tar = "https://github.com/TheTumultuousUnicornOfDarkness/CPU-X/archive/refs/tags/v5.0.2.tar.gz" +git = "https://github.com/TheTumultuousUnicornOfDarkness/CPU-X" +rev = "b957c031a2eab2c6c88275c4616a6a5e8c8e7670" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/cpuminer-opt/recipe.toml b/recipes/wip/cpuminer-opt/recipe.toml index 9cb93817..0479327f 100644 --- a/recipes/wip/cpuminer-opt/recipe.toml +++ b/recipes/wip/cpuminer-opt/recipe.toml @@ -1,6 +1,7 @@ #TODO maybe wrong template, see https://github.com/JayDDee/cpuminer-opt/wiki/Compiling-from-source [source] -tar = "https://github.com/JayDDee/cpuminer-opt/archive/refs/tags/v23.13.tar.gz" +git = "https://github.com/JayDDee/cpuminer-opt" +rev = "9d3a46c3551655f862db74a195e769fe86266903" [build] template = "configure" dependencies = [ diff --git a/recipes/wip/criner/recipe.toml b/recipes/wip/criner/recipe.toml index 29fec40f..95ba9216 100644 --- a/recipes/wip/criner/recipe.toml +++ b/recipes/wip/criner/recipe.toml @@ -1,6 +1,7 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/the-lean-crate/criner/archive/refs/tags/v0.3.1.tar.gz" +git = "https://github.com/the-lean-crate/criner" +rev = "e0cd0e1c7937477c466d46e4fd571ddfd15fb4d7" [build] template = "custom" script = """ diff --git a/recipes/wip/crispy-doom/recipe.toml b/recipes/wip/crispy-doom/recipe.toml index 5a480426..7b2b321e 100644 --- a/recipes/wip/crispy-doom/recipe.toml +++ b/recipes/wip/crispy-doom/recipe.toml @@ -1,6 +1,7 @@ #TODO Not compiled/tested yet [source] -tar = "https://github.com/fabiangreffrath/crispy-doom/archive/refs/tags/crispy-doom-6.0.tar.gz" +git = "https://github.com/fabiangreffrath/crispy-doom" +rev = "593f5b97023ed39b7640073160c06895bbfc3d26" [build] template = "configure" dependencies = [ diff --git a/recipes/wip/czkawka/recipe.toml b/recipes/wip/czkawka/recipe.toml index 5fd3ba10..f092f1a0 100644 --- a/recipes/wip/czkawka/recipe.toml +++ b/recipes/wip/czkawka/recipe.toml @@ -1,6 +1,7 @@ #TODO Compiled but not tested yet [source] -tar = "https://github.com/qarmin/czkawka/archive/refs/tags/6.0.0.tar.gz" +git = "https://github.com/qarmin/czkawka" +rev = "44400e08af3c8f030493b8ec6fa965c7d42e560e" [build] template = "custom" script = """ diff --git a/recipes/wip/dacapo-benchmarks/recipe.toml b/recipes/wip/dacapo-benchmarks/recipe.toml index 198b5321..a4b2ff49 100644 --- a/recipes/wip/dacapo-benchmarks/recipe.toml +++ b/recipes/wip/dacapo-benchmarks/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for "ant", see https://github.com/dacapobench/dacapobench#building [source] -tar = "https://github.com/dacapobench/dacapobench/archive/refs/tags/v23.11-chopin.tar.gz" +git = "https://github.com/dacapobench/dacapobench" +rev = "fd292e92f8c40495a6ca05ff3b8a77c6c4265606" [build] template = "custom" diff --git a/recipes/wip/daktilo/recipe.toml b/recipes/wip/daktilo/recipe.toml index 8b849f61..dacc7160 100644 --- a/recipes/wip/daktilo/recipe.toml +++ b/recipes/wip/daktilo/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/orhun/daktilo/archive/refs/tags/v0.1.0.tar.gz" +git = "https://github.com/orhun/daktilo" +rev = "f51dde4e1b83fb18018ebb25ff246613a136817f" [build] template = "cargo" diff --git a/recipes/wip/dav1d/recipe.toml b/recipes/wip/dav1d/recipe.toml index 7902f573..7b5425a1 100644 --- a/recipes/wip/dav1d/recipe.toml +++ b/recipes/wip/dav1d/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for Meson, see https://code.videolan.org/videolan/dav1d#compile [source] -tar = "https://code.videolan.org/videolan/dav1d/-/archive/1.3.0/dav1d-1.3.0.tar.bz2" +git = "https://code.videolan.org/videolan/dav1d" +rev = "48035599cdd4e4415732e408c407e0c1cd1c7444" [build] template = "custom" diff --git a/recipes/wip/dbus/recipe.toml b/recipes/wip/dbus/recipe.toml index 42464ac6..c1c6b1f5 100644 --- a/recipes/wip/dbus/recipe.toml +++ b/recipes/wip/dbus/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing Unix sockets support? +#TODO missing Unix domain sockets support [source] tar = "https://dbus.freedesktop.org/releases/dbus/dbus-1.14.10.tar.xz" [build] diff --git a/recipes/wip/defold-engine/recipe.toml b/recipes/wip/defold-engine/recipe.toml index 095e0773..50de85bb 100644 --- a/recipes/wip/defold-engine/recipe.toml +++ b/recipes/wip/defold-engine/recipe.toml @@ -2,7 +2,8 @@ #TODO build the editor, see https://github.com/defold/defold/blob/dev/editor/README_BUILD.md # probably the SDKs can't run on Redox, avoid them [source] -tar = "https://github.com/defold/defold/archive/refs/tags/1.6.2.tar.gz" +git = "https://github.com/defold/defold" +rev = "4e156b7cf37a380122aada30dacbf2b590ead76b" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/delta/recipe.toml b/recipes/wip/delta/recipe.toml index de37cf6a..1ec9298b 100644 --- a/recipes/wip/delta/recipe.toml +++ b/recipes/wip/delta/recipe.toml @@ -1,6 +1,7 @@ #TODO Not compiled or tested yet [source] -tar = "https://github.com/dandavison/delta/archive/refs/tags/0.15.1.tar.gz" +git = "https://github.com/dandavison/delta" +rev = "03f1569a9aff964e9291371d9928d0584327eae2" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/difftastic/recipe.toml b/recipes/wip/difftastic/recipe.toml index 3f1178d1..71817fa9 100644 --- a/recipes/wip/difftastic/recipe.toml +++ b/recipes/wip/difftastic/recipe.toml @@ -1,6 +1,7 @@ #TODO not compiled/tested yet [source] -tar = "https://github.com/Wilfred/difftastic/archive/refs/tags/0.47.0.tar.gz" +git = "https://github.com/Wilfred/difftastic" +rev = "a67ad5b9afe31e577540f27280885652c792b103" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/diplomat-tool/recipe.toml b/recipes/wip/diplomat-tool/recipe.toml index 92740cdf..d81a37c5 100644 --- a/recipes/wip/diplomat-tool/recipe.toml +++ b/recipes/wip/diplomat-tool/recipe.toml @@ -1,6 +1,7 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/rust-diplomat/diplomat/archive/refs/tags/v0.6.0.tar.gz" +git = "https://github.com/rust-diplomat/diplomat" +rev = "01bfb4bc53211e1c2a5ea58f64205c3a06727f7d" [build] template = "custom" script = """ diff --git a/recipes/wip/doctave/recipe.toml b/recipes/wip/doctave/recipe.toml index af2d926b..1d14e22d 100644 --- a/recipes/wip/doctave/recipe.toml +++ b/recipes/wip/doctave/recipe.toml @@ -1,5 +1,5 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/Doctave/doctave/archive/refs/tags/0.4.2.tar.gz" +git = "https://github.com/Doctave/doctave" [build] template = "cargo" diff --git a/recipes/wip/dotnet6/recipe.toml b/recipes/wip/dotnet6/recipe.toml deleted file mode 100644 index 91f88a27..00000000 --- a/recipes/wip/dotnet6/recipe.toml +++ /dev/null @@ -1,12 +0,0 @@ -#TODO Probably needs to run the "build.sh" file or wrong repository, see https://github.com/dotnet/installer#building-net-70-and-net-60 -#TODO Missing dependency recipes, see: https://github.com/dotnet/runtime/blob/main/docs/workflow/requirements/linux-requirements.md#toolchain-setup -[source] -tar = "https://github.com/dotnet/installer/archive/refs/tags/v6.0.416.tar.gz" -[build] -template = "custom" -dependencies = [ - "openssl1", - "zlib", - "kerberos5", - "lttng-ust", -] diff --git a/recipes/wip/dotnet7/recipe.toml b/recipes/wip/dotnet7/recipe.toml deleted file mode 100644 index 1da25df6..00000000 --- a/recipes/wip/dotnet7/recipe.toml +++ /dev/null @@ -1,12 +0,0 @@ -#TODO Probably needs to run the "build.sh" file or wrong repository, see https://github.com/dotnet/installer#building-net-70-and-net-60 -#TODO Missing dependency recipes, see: https://github.com/dotnet/runtime/blob/main/docs/workflow/requirements/linux-requirements.md#toolchain-setup -[source] -tar = "https://github.com/dotnet/installer/archive/refs/tags/v7.0.403.tar.gz" -[build] -template = "custom" -dependencies = [ - "openssl1", - "zlib", - "kerberos5", - "lttng-ust", -] diff --git a/recipes/wip/dprint/recipe.toml b/recipes/wip/dprint/recipe.toml index 9fd4e92d..f2778bad 100644 --- a/recipes/wip/dprint/recipe.toml +++ b/recipes/wip/dprint/recipe.toml @@ -1,6 +1,7 @@ #TODO region crate error (after a patch on ring) [source] -tar = "https://github.com/dprint/dprint/archive/refs/tags/0.41.0.tar.gz" +git = "https://github.com/dprint/dprint" +rev = "1a71f9c58a076ad46ef1bb63d1585add20002f32" [build] template = "custom" script = """ diff --git a/recipes/wip/drill/recipe.toml b/recipes/wip/drill/recipe.toml index e0fa46b3..317495fc 100644 --- a/recipes/wip/drill/recipe.toml +++ b/recipes/wip/drill/recipe.toml @@ -1,6 +1,7 @@ #TODO Compilation error (after a patch to update tokio on Cargo.toml) [source] -tar = "https://github.com/fcsonline/drill/archive/refs/tags/0.8.3.tar.gz" +git = "https://github.com/fcsonline/drill" +rev = "f56d89a25fc5838da57727a75ec3340758c30318" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/dua/recipe.toml b/recipes/wip/dua/recipe.toml index 1f7cb9b5..7e26ac1e 100644 --- a/recipes/wip/dua/recipe.toml +++ b/recipes/wip/dua/recipe.toml @@ -1,5 +1,6 @@ #TODO open crate error [source] -tar = "https://github.com/Byron/dua-cli/archive/refs/tags/v2.20.1.tar.gz" +git = "https://github.com/Byron/dua-cli" +rev = "491b5587ca0e9d157b9a4f8907c35137d57983d5" [build] template = "cargo" diff --git a/recipes/wip/dune/recipe.toml b/recipes/wip/dune/recipe.toml index d399f82f..069d4f62 100644 --- a/recipes/wip/dune/recipe.toml +++ b/recipes/wip/dune/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/adam-mcdaniel/dune/archive/refs/tags/v0.1.9.tar.gz" +git = "https://github.com/adam-mcdaniel/dune" +rev = "a0750ad11341bd94c2f2808601ef4bc73d5cf445" [build] template = "cargo" diff --git a/recipes/wip/dust/recipe.toml b/recipes/wip/dust/recipe.toml index 1f2a059e..83dc0457 100644 --- a/recipes/wip/dust/recipe.toml +++ b/recipes/wip/dust/recipe.toml @@ -1,5 +1,6 @@ #TODO compiled but not tested [source] -tar = "https://github.com/bootandy/dust/archive/refs/tags/v0.8.6.tar.gz" +git = "https://github.com/bootandy/dust" +rev = "b8aab2df979004d13c84006e378297af10e20777" [build] template = "cargo" diff --git a/recipes/wip/elixir/recipe.toml b/recipes/wip/elixir/recipe.toml index a1eb6f58..33906690 100644 --- a/recipes/wip/elixir/recipe.toml +++ b/recipes/wip/elixir/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for "make", see https://github.com/elixir-lang/elixir#compiling-from-source [source] -tar = "https://github.com/elixir-lang/elixir/archive/refs/tags/v1.15.7.tar.gz" +git = "https://github.com/elixir-lang/elixir" +rev = "927b10df80ee1c1c7396e68efe00d06bc3e80420" [build] template = "custom" diff --git a/recipes/wip/elm/recipe.toml b/recipes/wip/elm/recipe.toml index 94fbea64..b379c2b6 100644 --- a/recipes/wip/elm/recipe.toml +++ b/recipes/wip/elm/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for building, lacking build instructions [source] -tar = "https://github.com/elm/compiler/archive/refs/tags/0.19.1.tar.gz" +git = "https://github.com/elm/compiler" +rev = "c9aefb6230f5e0bda03205ab0499f6e4af924495" [build] template = "custom" diff --git a/recipes/wip/embree/recipe.toml b/recipes/wip/embree/recipe.toml index 87bbbe8e..dbfb106b 100644 --- a/recipes/wip/embree/recipe.toml +++ b/recipes/wip/embree/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for CMake, see https://github.com/embree/embree#linux-and-macos [source] -tar = "https://github.com/embree/embree/archive/refs/tags/v4.3.0.tar.gz" +git = "https://github.com/embree/embree" +rev = "be0accfd0b246e2b03355b8ee7710a22c1b49240" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/erdtree/recipe.toml b/recipes/wip/erdtree/recipe.toml index 897cc725..87ea9776 100644 --- a/recipes/wip/erdtree/recipe.toml +++ b/recipes/wip/erdtree/recipe.toml @@ -1,5 +1,6 @@ #TODO program source code error [source] -tar = "https://github.com/solidiquis/erdtree/archive/refs/tags/v2.0.0.tar.gz" +git = "https://github.com/solidiquis/erdtree" +rev = "2b1db8bcc843c3fa8b634df86f94716c75ca470a" [build] template = "cargo" diff --git a/recipes/wip/espanso/recipe.toml b/recipes/wip/espanso/recipe.toml index d2cd5033..5307a450 100644 --- a/recipes/wip/espanso/recipe.toml +++ b/recipes/wip/espanso/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for building, see https://espanso.org/docs/install/linux/#wayland-compile [source] -tar = "https://github.com/espanso/espanso/archive/refs/tags/v2.1.8.tar.gz" +git = "https://github.com/espanso/espanso" +rev = "b421bcf73fa13506938d62425459d6c16c6a8d0a" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/eva/recipe.toml b/recipes/wip/eva/recipe.toml index 03dd23c0..076108f6 100644 --- a/recipes/wip/eva/recipe.toml +++ b/recipes/wip/eva/recipe.toml @@ -1,5 +1,5 @@ #TODO rustyline crate error [source] -tar = "https://github.com/nerdypepper/eva/archive/refs/tags/v0.3.1.tar.gz" +git = "https://github.com/nerdypepper/eva" [build] template = "cargo" diff --git a/recipes/wip/evcxr-jupyter/recipe.toml b/recipes/wip/evcxr-jupyter/recipe.toml index a3c6428d..240a7134 100644 --- a/recipes/wip/evcxr-jupyter/recipe.toml +++ b/recipes/wip/evcxr-jupyter/recipe.toml @@ -1,6 +1,7 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/evcxr/evcxr/archive/refs/tags/v0.15.1.tar.gz" +git = "https://github.com/evcxr/evcxr" +rev = "e6deec6060bc47297eb90674cca496c6874f99ba" [build] template = "custom" script = """ diff --git a/recipes/wip/evcxr-repl/recipe.toml b/recipes/wip/evcxr-repl/recipe.toml index c18d13e7..9be6de8f 100644 --- a/recipes/wip/evcxr-repl/recipe.toml +++ b/recipes/wip/evcxr-repl/recipe.toml @@ -1,6 +1,7 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/evcxr/evcxr/archive/refs/tags/v0.15.1.tar.gz" +git = "https://github.com/evcxr/evcxr" +rev = "e6deec6060bc47297eb90674cca496c6874f99ba" [build] template = "custom" script = """ diff --git a/recipes/wip/eww/recipe.toml b/recipes/wip/eww/recipe.toml index 2d70facd..17479c92 100644 --- a/recipes/wip/eww/recipe.toml +++ b/recipes/wip/eww/recipe.toml @@ -1,6 +1,6 @@ #TODO Make GTK3 work [source] -tar = "https://github.com/elkowar/eww/archive/refs/tags/v0.4.0.tar.gz" +git = "https://github.com/elkowar/eww" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/eza/recipe.toml b/recipes/wip/eza/recipe.toml index 84ace592..8bee56b2 100644 --- a/recipes/wip/eza/recipe.toml +++ b/recipes/wip/eza/recipe.toml @@ -1,5 +1,6 @@ #TODO outdated redox_syscall crate [source] -tar = "https://github.com/eza-community/eza/archive/refs/tags/v0.11.0.tar.gz" +git = "https://github.com/eza-community/eza" +rev = "edcf392c78abd8abea76d4f59fb639ad134a0d8b" [build] template = "cargo" diff --git a/recipes/wip/fclones/recipe.toml b/recipes/wip/fclones/recipe.toml index a1b1318a..e47ae6e3 100644 --- a/recipes/wip/fclones/recipe.toml +++ b/recipes/wip/fclones/recipe.toml @@ -1,5 +1,6 @@ #TODO file-owner crate error [source] -tar = "https://github.com/pkolaczk/fclones/archive/refs/tags/v0.30.0.tar.gz" +git = "https://github.com/pkolaczk/fclones" +rev = "a55e427dadc8eb6f6c9ecc967fb6e0bdf5257123" [build] template = "cargo" diff --git a/recipes/wip/fend/recipe.toml b/recipes/wip/fend/recipe.toml index 4dea69f1..68fdb6e3 100644 --- a/recipes/wip/fend/recipe.toml +++ b/recipes/wip/fend/recipe.toml @@ -1,6 +1,7 @@ #TODO compilation error (after a patch on the ring crate) [source] -tar = "https://github.com/printfn/fend/archive/refs/tags/v1.2.2.tar.gz" +git = "https://github.com/printfn/fend" +rev = "e2b728fcf804cfaff4bda86eff495adda81a50d7" [build] template = "custom" script = """ diff --git a/recipes/wip/ffizer/recipe.toml b/recipes/wip/ffizer/recipe.toml index 5510fe6d..2e42a720 100644 --- a/recipes/wip/ffizer/recipe.toml +++ b/recipes/wip/ffizer/recipe.toml @@ -1,6 +1,7 @@ #TODO compilation error (after a patch on the ring crate) [source] -tar = "https://github.com/ffizer/ffizer/archive/refs/tags/2.10.3.tar.gz" +git = "https://github.com/ffizer/ffizer" +rev = "050eedc1a609575b4fe21649f8995aa803b6c9bb" [build] template = "custom" script = """ diff --git a/recipes/wip/file/recipe.toml b/recipes/wip/file/recipe.toml index 1027eba6..03cd93d5 100644 --- a/recipes/wip/file/recipe.toml +++ b/recipes/wip/file/recipe.toml @@ -1,5 +1,6 @@ #TODO not compiled or tested [source] -tar = "https://github.com/file/file/archive/refs/tags/FILE5_44.tar.gz" +git = "https://github.com/file/file" +rev = "4cbd5c8f0851201d203755b76cb66ba991ffd8be" [build] template = "configure" diff --git a/recipes/wip/fio/recipe.toml b/recipes/wip/fio/recipe.toml index 6794efee..ca14abcd 100644 --- a/recipes/wip/fio/recipe.toml +++ b/recipes/wip/fio/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/axboe/fio/archive/refs/tags/fio-3.36.tar.gz" +git = "https://github.com/axboe/fio" +rev = "624e263f6acb1563471a83601ce19dfb77ac5694" [build] template = "configure" From 479554a0620d682f0d868a157c3c9b0211d2ac01 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 17 Dec 2023 20:23:29 +0000 Subject: [PATCH 1240/3180] update recipes --- recipes/wip/firedbg/recipe.toml | 3 ++- recipes/wip/flameshot/recipe.toml | 3 ++- recipes/wip/flowtime/recipe.toml | 3 ++- recipes/wip/fontfor/recipe.toml | 3 ++- recipes/wip/fselect/recipe.toml | 3 ++- recipes/wip/fyrox/recipe.toml | 3 ++- recipes/wip/gaffer/recipe.toml | 3 ++- recipes/wip/gameroy/recipe.toml | 3 ++- recipes/wip/gem5/recipe.toml | 3 ++- recipes/wip/gengo/recipe.toml | 3 ++- recipes/wip/gifski/recipe.toml | 3 ++- recipes/wip/git-absorb/recipe.toml | 3 ++- recipes/wip/git-cliff/recipe.toml | 3 ++- recipes/wip/git-ignore-generator/recipe.toml | 3 ++- recipes/wip/gitui/recipe.toml | 3 ++- recipes/wip/glew/recipe.toml | 3 ++- recipes/wip/glfw3/recipe.toml | 3 ++- recipes/wip/glide/recipe.toml | 3 ++- recipes/wip/gmic-qt/recipe.toml | 3 ++- recipes/wip/gnu-radio/recipe.toml | 3 ++- recipes/wip/goofys/recipe.toml | 3 ++- recipes/wip/goxel/recipe.toml | 3 ++- recipes/wip/gpg-tui/recipe.toml | 3 ++- recipes/wip/gping/recipe.toml | 3 ++- recipes/wip/grex/recipe.toml | 3 ++- recipes/wip/{google-test => gtest}/recipe.toml | 3 ++- recipes/wip/gupax/recipe.toml | 3 ++- recipes/wip/gyr/recipe.toml | 3 ++- recipes/wip/gzdoom/recipe.toml | 3 ++- 29 files changed, 58 insertions(+), 29 deletions(-) rename recipes/wip/{google-test => gtest}/recipe.toml (85%) diff --git a/recipes/wip/firedbg/recipe.toml b/recipes/wip/firedbg/recipe.toml index 15c3cf55..7de858c8 100644 --- a/recipes/wip/firedbg/recipe.toml +++ b/recipes/wip/firedbg/recipe.toml @@ -1,5 +1,6 @@ #TODO probably wrong template, if it doesn't work use the "command" package [source] -tar = "https://github.com/SeaQL/FireDBG.for.Rust/archive/refs/tags/1.74.1.tar.gz" +git = "https://github.com/SeaQL/FireDBG.for.Rust" +rev = "2c1ec30113e2a0c857a37beb4177884528ae69bc" [build] template = "cargo" diff --git a/recipes/wip/flameshot/recipe.toml b/recipes/wip/flameshot/recipe.toml index 46c50c0f..7c64ec64 100644 --- a/recipes/wip/flameshot/recipe.toml +++ b/recipes/wip/flameshot/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for CMake, see https://flameshot.org/docs/installation/source-code/#compilation [source] -tar = "https://github.com/flameshot-org/flameshot/archive/refs/tags/v12.1.0.tar.gz" +git = "https://github.com/flameshot-org/flameshot" +rev = "70be63d478a271da549597d69bd4868607c0a395" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/flowtime/recipe.toml b/recipes/wip/flowtime/recipe.toml index bcd96a10..abd3eda5 100644 --- a/recipes/wip/flowtime/recipe.toml +++ b/recipes/wip/flowtime/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for Meson, see https://github.com/Diego-Ivan/Flowtime#building-from-source [source] -tar = "https://github.com/Diego-Ivan/Flowtime/archive/refs/tags/v6.1.tar.gz" +git = "https://github.com/Diego-Ivan/Flowtime" +rev = "2cb1160f7f61ec0a6add292deca38a3150336f03" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/fontfor/recipe.toml b/recipes/wip/fontfor/recipe.toml index 20739efa..43d0d391 100644 --- a/recipes/wip/fontfor/recipe.toml +++ b/recipes/wip/fontfor/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/7sDream/fontfor/archive/refs/tags/v0.4.1.tar.gz" +git = "https://github.com/7sDream/fontfor" +rev = "b0d868dc5f955b58b3a5ba6c97156f4060e7474b" [build] template = "cargo" diff --git a/recipes/wip/fselect/recipe.toml b/recipes/wip/fselect/recipe.toml index 3152cb4c..e9f777c8 100644 --- a/recipes/wip/fselect/recipe.toml +++ b/recipes/wip/fselect/recipe.toml @@ -1,6 +1,7 @@ #TODO make the mimalloc dependency work [source] -tar = "https://github.com/jhspetersson/fselect/archive/refs/tags/0.8.3.tar.gz" +git = "https://github.com/jhspetersson/fselect" +rev = "94849313ee4f76752287c6887cb4b03972f0e748" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/fyrox/recipe.toml b/recipes/wip/fyrox/recipe.toml index a1db1b9d..a40f5b93 100644 --- a/recipes/wip/fyrox/recipe.toml +++ b/recipes/wip/fyrox/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested yet [source] -tar = "https://github.com/FyroxEngine/Fyrox/archive/refs/tags/v0.29.tar.gz" +git = "https://github.com/FyroxEngine/Fyrox" +rev = "8d3e2e2cf29b7eefa78d14ff92156caeed88b955" [buiild] template = "cargo" diff --git a/recipes/wip/gaffer/recipe.toml b/recipes/wip/gaffer/recipe.toml index f478b47d..d2cd5797 100644 --- a/recipes/wip/gaffer/recipe.toml +++ b/recipes/wip/gaffer/recipe.toml @@ -1,7 +1,8 @@ #TODO missing script for SCons, see https://github.com/gafferHQ/gaffer#building #TODO missing dependencies, see https://github.com/GafferHQ/dependencies [source] -tar = "https://github.com/GafferHQ/gaffer/archive/refs/tags/1.3.7.0.tar.gz" +git = "https://github.com/GafferHQ/gaffer" +rev = "9fe2e9c9025447913872d77c138a03eabcfa5df2" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/gameroy/recipe.toml b/recipes/wip/gameroy/recipe.toml index f2286ba4..af08446d 100644 --- a/recipes/wip/gameroy/recipe.toml +++ b/recipes/wip/gameroy/recipe.toml @@ -1,6 +1,7 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/Rodrigodd/gameroy/archive/refs/tags/v0.3.1.tar.gz" +git = "https://github.com/Rodrigodd/gameroy" +rev = "78d12b7a74cda37002cd2b964baaa761285925ab" [build] template = "custom" script = """ diff --git a/recipes/wip/gem5/recipe.toml b/recipes/wip/gem5/recipe.toml index 90a64579..692a8ed5 100644 --- a/recipes/wip/gem5/recipe.toml +++ b/recipes/wip/gem5/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for SCons, see https://www.gem5.org/documentation/general_docs/building [source] -tar = "https://github.com/gem5/gem5/archive/refs/tags/v23.0.1.0.tar.gz" +git = "https://github.com/gem5/gem5" +rev = "6835f0665744bba3d56921c9406ee97e841b60a0" [build] template = "custom" diff --git a/recipes/wip/gengo/recipe.toml b/recipes/wip/gengo/recipe.toml index c5ec484a..c510cbf3 100644 --- a/recipes/wip/gengo/recipe.toml +++ b/recipes/wip/gengo/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/spenserblack/gengo/archive/refs/tags/v0.5.2.tar.gz" +git = "https://github.com/spenserblack/gengo" +rev = "272e794ff895149152f942a9b71ceb39711a4fb9" [build] template = "cargo" diff --git a/recipes/wip/gifski/recipe.toml b/recipes/wip/gifski/recipe.toml index 2f7a3cff..e5a30ff0 100644 --- a/recipes/wip/gifski/recipe.toml +++ b/recipes/wip/gifski/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/ImageOptim/gifski/archive/refs/tags/1.13.0.tar.gz" +git = "https://github.com/ImageOptim/gifski" +rev = "ba659390435d79db66f2e5e0a876b5d2e8681dcb" [build] template = "cargo" diff --git a/recipes/wip/git-absorb/recipe.toml b/recipes/wip/git-absorb/recipe.toml index 6a82a7fa..eaa5c1dc 100644 --- a/recipes/wip/git-absorb/recipe.toml +++ b/recipes/wip/git-absorb/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/tummychow/git-absorb/archive/refs/tags/0.6.10.tar.gz" +git = "https://github.com/tummychow/git-absorb" +rev = "1c5aecfcc5244b8fb49c9c962387ef3713170392" [build] template = "cargo" diff --git a/recipes/wip/git-cliff/recipe.toml b/recipes/wip/git-cliff/recipe.toml index baed0e2d..9aff7b59 100644 --- a/recipes/wip/git-cliff/recipe.toml +++ b/recipes/wip/git-cliff/recipe.toml @@ -1,6 +1,7 @@ #TODO compiled but not tested (after a patch on the ring crate) [source] -tar = "https://github.com/orhun/git-cliff/archive/refs/tags/v1.2.0.tar.gz" +git = "https://github.com/orhun/git-cliff" +rev = "0af9eb24888d1a8c9b2887fbe5427985582a0f26" [build] template = "custom" script = """ diff --git a/recipes/wip/git-ignore-generator/recipe.toml b/recipes/wip/git-ignore-generator/recipe.toml index aba928fb..ee180de9 100644 --- a/recipes/wip/git-ignore-generator/recipe.toml +++ b/recipes/wip/git-ignore-generator/recipe.toml @@ -1,5 +1,6 @@ #TODO compiled but not tested (after a patch on the ring crate) [source] -tar = "https://github.com/sondr3/git-ignore/archive/refs/tags/v1.2.2.tar.gz" +git = "https://github.com/sondr3/git-ignore" +rev = "299a7149d114dbdad2c5f82617fdf36e45ccfcb0" [build] template = "cargo" diff --git a/recipes/wip/gitui/recipe.toml b/recipes/wip/gitui/recipe.toml index bf1502a1..3e349490 100644 --- a/recipes/wip/gitui/recipe.toml +++ b/recipes/wip/gitui/recipe.toml @@ -1,6 +1,7 @@ #TODO openssl-sys crate error [source] -tar = "https://github.com/extrawurst/gitui/archive/refs/tags/v0.22.1.tar.gz" +git = "https://github.com/extrawurst/gitui" +rev = "87686118768e89b5e86611b4057c05d0d7abb2bc" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/glew/recipe.toml b/recipes/wip/glew/recipe.toml index 9848b0ef..cee6aed2 100644 --- a/recipes/wip/glew/recipe.toml +++ b/recipes/wip/glew/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for "make", see https://github.com/nigels-com/glew#linux-and-mac [source] -tar = "https://github.com/nigels-com/glew/archive/refs/tags/glew-2.2.0.tar.gz" +git = "https://github.com/nigels-com/glew" +rev = "9fb23c3e61cbd2d581e33ff7d8579b572b38ee26" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/glfw3/recipe.toml b/recipes/wip/glfw3/recipe.toml index f60e9004..f4fa25d7 100644 --- a/recipes/wip/glfw3/recipe.toml +++ b/recipes/wip/glfw3/recipe.toml @@ -1,6 +1,7 @@ #TODO probably wrong script, see https://www.glfw.org/docs/latest/compile.html [source] -tar = "https://github.com/glfw/glfw/archive/refs/tags/3.3.8.tar.gz" +git = "https://github.com/glfw/glfw" +rev = "e2c92645460f680fd272fd2eed591efb2be7dc31" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/glide/recipe.toml b/recipes/wip/glide/recipe.toml index 90a81da7..92a357da 100644 --- a/recipes/wip/glide/recipe.toml +++ b/recipes/wip/glide/recipe.toml @@ -1,6 +1,7 @@ #TODO Make GTK4 work [source] -tar = "https://github.com/philn/glide/archive/refs/tags/0.6.0.tar.gz" +git = "https://github.com/philn/glide" +rev = "fc86c0e8672e0713b26edae8c6388b85d5d05177" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/gmic-qt/recipe.toml b/recipes/wip/gmic-qt/recipe.toml index 5477aecd..65567e89 100644 --- a/recipes/wip/gmic-qt/recipe.toml +++ b/recipes/wip/gmic-qt/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for building, see https://github.com/c-koi/gmic-qt#build-instructions #TODO probably missing dependencies [source] -tar = "https://github.com/c-koi/gmic-qt/archive/refs/tags/v.3.3.2.tar.gz" +git = "https://github.com/c-koi/gmic-qt" +rev = "b616829854c0e482d63b9fe8eca48e73d7cd3bd8" [build] template = "custom" diff --git a/recipes/wip/gnu-radio/recipe.toml b/recipes/wip/gnu-radio/recipe.toml index 221a2219..be5236fc 100644 --- a/recipes/wip/gnu-radio/recipe.toml +++ b/recipes/wip/gnu-radio/recipe.toml @@ -1,7 +1,8 @@ #TODO missing script for CMake, see https://wiki.gnuradio.org/index.php?title=LinuxInstall#For_GNU_Radio_3.10,_3.9,_and_Main_Branch #TODO probably missing dependencies, see https://wiki.gnuradio.org/index.php?title=UbuntuInstall#Install_Dependencies [source] -tar = "https://github.com/gnuradio/gnuradio/archive/refs/tags/v3.10.8.0.tar.gz" +git = "https://github.com/gnuradio/gnuradio" +rev = "bd928539d9eaa73736f8381cd2e60953a0eb8cb8" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/goofys/recipe.toml b/recipes/wip/goofys/recipe.toml index 58f05a0d..767ca5fc 100644 --- a/recipes/wip/goofys/recipe.toml +++ b/recipes/wip/goofys/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for Go, see https://github.com/kahing/goofys/#installation [source] -tar = "https://github.com/kahing/goofys/archive/refs/tags/v0.24.0.tar.gz" +git = "https://github.com/kahing/goofys" +rev = "45b8d78375af1b24604439d2e60c567654bcdf88" [build] template = "custom" diff --git a/recipes/wip/goxel/recipe.toml b/recipes/wip/goxel/recipe.toml index a21f65d7..a54f0fd9 100644 --- a/recipes/wip/goxel/recipe.toml +++ b/recipes/wip/goxel/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for the SCons, see https://github.com/guillaumechereau/goxel#linuxbsd [source] -tar = "https://github.com/guillaumechereau/goxel/archive/refs/tags/v0.12.0.tar.gz" +git = "https://github.com/guillaumechereau/goxel" +rev = "4cdf7bc49cbfd87e60692f49483ea60271729845" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/gpg-tui/recipe.toml b/recipes/wip/gpg-tui/recipe.toml index 0ab279ed..4035fbe6 100644 --- a/recipes/wip/gpg-tui/recipe.toml +++ b/recipes/wip/gpg-tui/recipe.toml @@ -1,6 +1,7 @@ #TODO make dependencies work [source] -tar = "https://github.com/orhun/gpg-tui/archive/refs/tags/v0.10.0.tar.gz" +git = "https://github.com/orhun/gpg-tui" +rev = "0f6e598f9beb19c0263d6fbc0bbbcb222fc704c4" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/gping/recipe.toml b/recipes/wip/gping/recipe.toml index 28cf04b2..28cdf1ed 100644 --- a/recipes/wip/gping/recipe.toml +++ b/recipes/wip/gping/recipe.toml @@ -1,6 +1,7 @@ #TODO weird error on the end of compilation [source] -tar = "https://github.com/orf/gping/archive/refs/tags/gping-v1.12.0.tar.gz" +git = "https://github.com/orf/gping" +rev = "7547db0d2d8c22cf15066d51fcd41dc57cb5b046" [build] template = "custom" script = """ diff --git a/recipes/wip/grex/recipe.toml b/recipes/wip/grex/recipe.toml index 33b4c53c..38aebbc4 100644 --- a/recipes/wip/grex/recipe.toml +++ b/recipes/wip/grex/recipe.toml @@ -1,5 +1,6 @@ #TODO compiled but not tested [source] -tar = "https://github.com/pemistahl/grex/archive/refs/tags/v1.4.1.tar.gz" +git = "https://github.com/pemistahl/grex" +rev = "9b4ccfa9cc724bce43f19c51c8d512accbad93b6" [build] template = "cargo" diff --git a/recipes/wip/google-test/recipe.toml b/recipes/wip/gtest/recipe.toml similarity index 85% rename from recipes/wip/google-test/recipe.toml rename to recipes/wip/gtest/recipe.toml index 39362de3..41358860 100644 --- a/recipes/wip/google-test/recipe.toml +++ b/recipes/wip/gtest/recipe.toml @@ -1,6 +1,7 @@ #TODO probably wrong script, see https://github.com/google/googletest/blob/main/googletest/README.md [source] -tar = "https://github.com/google/googletest/archive/refs/tags/v1.13.0.tar.gz" +git = "https://github.com/google/googletest" +rev = "f8d7d77c06936315286eb55f8de22cd23c188571" [build] template = "custom" script = """ diff --git a/recipes/wip/gupax/recipe.toml b/recipes/wip/gupax/recipe.toml index 1e191fbf..465354b2 100644 --- a/recipes/wip/gupax/recipe.toml +++ b/recipes/wip/gupax/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/hinto-janai/gupax/archive/refs/tags/v1.3.1.tar.gz" +git = "https://github.com/hinto-janai/gupax" +rev = "1bfd72a8c2a1fe0a1583933e4d94a0450d0d964c" [build] template = "cargo" diff --git a/recipes/wip/gyr/recipe.toml b/recipes/wip/gyr/recipe.toml index 97f4989f..02efa508 100644 --- a/recipes/wip/gyr/recipe.toml +++ b/recipes/wip/gyr/recipe.toml @@ -1,5 +1,6 @@ #TODO compiled but not tested [source] -tar = "https://git.sr.ht/~f9/gyr/archive/v0.1.3.tar.gz" +tar = "https://git.sr.ht/~f9/gyr" +rev = "3418fb65da1c181eade2f5f5284cf175cafb41ec" [build] template = "cargo" diff --git a/recipes/wip/gzdoom/recipe.toml b/recipes/wip/gzdoom/recipe.toml index 4d3141ba..dcbbcec2 100644 --- a/recipes/wip/gzdoom/recipe.toml +++ b/recipes/wip/gzdoom/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for CMake, see https://zdoom.org/wiki/Compile_GZDoom_on_Linux [source] -tar = "https://github.com/ZDoom/gzdoom/archive/refs/tags/g4.10.0.tar.gz" +git = "https://github.com/ZDoom/gzdoom" +rev = "6ce809efe2902e43ceaa7031b875225d3a0367de" [build] template = "custom" dependencies = [ From fe88a028a649dad8d6d469292b8cf4f751d9164f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 18 Dec 2023 01:41:33 +0000 Subject: [PATCH 1241/3180] update recipes --- recipes/wip/hashgood/recipe.toml | 3 ++- recipes/wip/heh/recipe.toml | 3 ++- recipes/wip/hexyl/recipe.toml | 3 ++- recipes/wip/hgrep/recipe.toml | 3 ++- recipes/wip/hickory-dns/recipe.toml | 3 ++- recipes/wip/himalaya/recipe.toml | 3 ++- recipes/wip/honggfuzz/recipe.toml | 3 ++- 7 files changed, 14 insertions(+), 7 deletions(-) diff --git a/recipes/wip/hashgood/recipe.toml b/recipes/wip/hashgood/recipe.toml index f7689c22..fbdfa7c1 100644 --- a/recipes/wip/hashgood/recipe.toml +++ b/recipes/wip/hashgood/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/thombles/hashgood/archive/refs/tags/v0.4.0.tar.gz" +git = "https://github.com/thombles/hashgood" +rev = "9e476ded77bd2f2289f4ebe08cdfc87332827292" [build] template = "cargo" diff --git a/recipes/wip/heh/recipe.toml b/recipes/wip/heh/recipe.toml index 284fc935..24868749 100644 --- a/recipes/wip/heh/recipe.toml +++ b/recipes/wip/heh/recipe.toml @@ -1,5 +1,6 @@ #TODO x11rb crate error [source] -tar = "https://github.com/ndd7xv/heh/archive/refs/tags/v0.4.0.tar.gz" +git = "https://github.com/ndd7xv/heh" +rev = "bd69f6657b98225796369a0563bf24f3f148046c" [build] template = "cargo" diff --git a/recipes/wip/hexyl/recipe.toml b/recipes/wip/hexyl/recipe.toml index 5b9d03fc..0aec8989 100644 --- a/recipes/wip/hexyl/recipe.toml +++ b/recipes/wip/hexyl/recipe.toml @@ -1,5 +1,6 @@ #TODO compiled but not tested [source] -tar = "https://github.com/sharkdp/hexyl/archive/refs/tags/v0.13.0.tar.gz" +git = "https://github.com/sharkdp/hexyl" +rev = "7a9234c182b19070f8707468c572b5a0e6e704d4" [build] template = "cargo" diff --git a/recipes/wip/hgrep/recipe.toml b/recipes/wip/hgrep/recipe.toml index e1c5c9d1..d0940604 100644 --- a/recipes/wip/hgrep/recipe.toml +++ b/recipes/wip/hgrep/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/rhysd/hgrep/archive/refs/tags/v0.3.3.tar.gz" +git = "https://github.com/rhysd/hgrep" +rev = "85d7271d477a41708d89e1e7bc14e94dcab149ba" [build] template = "cargo" diff --git a/recipes/wip/hickory-dns/recipe.toml b/recipes/wip/hickory-dns/recipe.toml index 87cd6455..08faaa68 100644 --- a/recipes/wip/hickory-dns/recipe.toml +++ b/recipes/wip/hickory-dns/recipe.toml @@ -1,6 +1,7 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/hickory-dns/hickory-dns/archive/refs/tags/v0.24.0.tar.gz" +git = "https://github.com/hickory-dns/hickory-dns" +rev = "408d0baca080d1b201cd33e616dc4abd160ef6c0" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/himalaya/recipe.toml b/recipes/wip/himalaya/recipe.toml index d45d5b0a..7ff03887 100644 --- a/recipes/wip/himalaya/recipe.toml +++ b/recipes/wip/himalaya/recipe.toml @@ -1,6 +1,7 @@ #TODO ring crate error [source] -tar = "https://github.com/soywod/himalaya/archive/refs/tags/v0.7.3.tar.gz" +git = "https://github.com/soywod/himalaya" +rev = "7ad1772c83f53f672d93dcf3921c722cf750d38f" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/honggfuzz/recipe.toml b/recipes/wip/honggfuzz/recipe.toml index 5eea1b3a..a4a5c4b2 100644 --- a/recipes/wip/honggfuzz/recipe.toml +++ b/recipes/wip/honggfuzz/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for "make", see https://github.com/google/honggfuzz#installation [source] -tar = "https://github.com/google/honggfuzz/archive/refs/tags/2.6.tar.gz" +git = "https://github.com/google/honggfuzz" +rev = "83a8415a372d84dcc69ac1e2c2f152190bcf76d1" [build] template = "custom" dependencies = [ From b754b1f01c53aedb40c8e49ead26a3dc16b02ed4 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 18 Dec 2023 16:49:59 +0000 Subject: [PATCH 1242/3180] update recipes --- recipes/wip/hwatch/recipe.toml | 3 ++- recipes/wip/hx/recipe.toml | 3 ++- recipes/wip/hyperfine/recipe.toml | 3 ++- recipes/wip/i2pd/recipe.toml | 3 ++- recipes/wip/imlib2/recipe.toml | 2 +- recipes/wip/incompact3d/recipe.toml | 3 ++- recipes/wip/influxdb/recipe.toml | 3 ++- recipes/wip/inih/recipe.toml | 3 ++- recipes/wip/inlyne/recipe.toml | 2 +- recipes/wip/innernet-cli/recipe.toml | 3 ++- recipes/wip/innernet-server/recipe.toml | 3 ++- recipes/wip/intelli-shell/recipe.toml | 3 ++- recipes/wip/iotdb/recipe.toml | 3 ++- recipes/wip/irust/recipe.toml | 3 ++- recipes/wip/ispc/recipe.toml | 3 ++- recipes/wip/jirust/recipe.toml | 3 ++- recipes/wip/jless/recipe.toml | 5 +++-- recipes/wip/jql/recipe.toml | 3 ++- recipes/wip/json-c/recipe.toml | 3 ++- recipes/wip/just/recipe.toml | 3 ++- recipes/wip/kanata/recipe.toml | 3 ++- recipes/wip/kani/recipe.toml | 3 ++- recipes/wip/kbt/recipe.toml | 3 ++- recipes/wip/kdenlive/recipe.toml | 3 ++- recipes/wip/kdevelop/recipe.toml | 3 ++- recipes/wip/kodi/recipe.toml | 3 ++- recipes/wip/kubernetes/recipe.toml | 3 ++- recipes/wip/lammps/recipe.toml | 3 ++- recipes/wip/lapce/recipe.toml | 3 ++- recipes/wip/lcs-image-diff/recipe.toml | 2 +- recipes/wip/legdur/recipe.toml | 2 +- recipes/wip/lemmeknow/recipe.toml | 3 ++- recipes/wip/level-zero/recipe.toml | 3 ++- recipes/wip/lfs/recipe.toml | 3 ++- 34 files changed, 65 insertions(+), 35 deletions(-) diff --git a/recipes/wip/hwatch/recipe.toml b/recipes/wip/hwatch/recipe.toml index e712a19e..392f7526 100644 --- a/recipes/wip/hwatch/recipe.toml +++ b/recipes/wip/hwatch/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/blacknon/hwatch/archive/refs/tags/0.3.10.tar.gz" +git = "https://github.com/blacknon/hwatch" +rev = "1267168468948ce4d14e61f837ac3c3474a52563" [build] template = "cargo" diff --git a/recipes/wip/hx/recipe.toml b/recipes/wip/hx/recipe.toml index b1673a81..46f32c47 100644 --- a/recipes/wip/hx/recipe.toml +++ b/recipes/wip/hx/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for "make", see https://github.com/krpors/hx#compiling-and-running [source] -tar = "https://github.com/krpors/hx/archive/refs/tags/v1.0.14.tar.gz" +git = "https://github.com/krpors/hx" +rev = "c124b40586f701e47b35628fde286d20bf9988ca" [build] template = "custom" diff --git a/recipes/wip/hyperfine/recipe.toml b/recipes/wip/hyperfine/recipe.toml index ea9e3383..b047ce11 100644 --- a/recipes/wip/hyperfine/recipe.toml +++ b/recipes/wip/hyperfine/recipe.toml @@ -1,5 +1,6 @@ #TODO libc::RUSAGE_CHILDREN [source] -tar = "https://github.com/sharkdp/hyperfine/archive/refs/tags/v1.17.0.tar.gz" +git = "https://github.com/sharkdp/hyperfine" +rev = "24a0d5da1bff11567bbf307315d11cb0e10733ec" [build] template = "cargo" diff --git a/recipes/wip/i2pd/recipe.toml b/recipes/wip/i2pd/recipe.toml index 9467ad1c..ab531aea 100644 --- a/recipes/wip/i2pd/recipe.toml +++ b/recipes/wip/i2pd/recipe.toml @@ -1,6 +1,7 @@ #TODO probably wrong script, see https://i2pd.readthedocs.io/en/latest/devs/building/unix/ [source] -tar = "https://github.com/PurpleI2P/i2pd/archive/refs/tags/2.48.0.tar.gz" +git = "https://github.com/PurpleI2P/i2pd" +rev = "beffdb9fe175a93164bd88ee0fafe1a22595ed15" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/imlib2/recipe.toml b/recipes/wip/imlib2/recipe.toml index 22df0df1..8f80cc32 100644 --- a/recipes/wip/imlib2/recipe.toml +++ b/recipes/wip/imlib2/recipe.toml @@ -1,6 +1,6 @@ #TODO not compiled or tested [source] -tar = "https://git.enlightenment.org/old/legacy-imlib2/archive/v1.11.1.tar.gz" +tar = "https://downloads.sourceforge.net/project/enlightenment/imlib2-src/1.12.1/imlib2-1.12.1.tar.xz" [build] template = "configure" dependencies = [ diff --git a/recipes/wip/incompact3d/recipe.toml b/recipes/wip/incompact3d/recipe.toml index 4f077165..fed37f9e 100644 --- a/recipes/wip/incompact3d/recipe.toml +++ b/recipes/wip/incompact3d/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for "make", see https://github.com/xcompact3d/Incompact3d#source-download-and-compilation #TODO probably missing dependencies [source] -tar = "https://github.com/xcompact3d/Incompact3d/archive/refs/tags/v4.0.tar.gz" +git = "https://github.com/xcompact3d/Incompact3d" +rev = "2546f404cf3bbf78bc745d6133173c37e46c82df" [build] template = "custom" diff --git a/recipes/wip/influxdb/recipe.toml b/recipes/wip/influxdb/recipe.toml index 0daebc2e..94012a50 100644 --- a/recipes/wip/influxdb/recipe.toml +++ b/recipes/wip/influxdb/recipe.toml @@ -1,6 +1,7 @@ #TODO probably wrong template, lacking build instructions #TODO configure the CLI and service [source] -tar = "https://github.com/influxdata/influxdb/archive/refs/tags/v2.7.3.tar.gz" +git = "https://github.com/influxdata/influxdb" +rev = "ed645d9216af16b49f8c6a49aee84341ea168180" [build] template = "cargo" diff --git a/recipes/wip/inih/recipe.toml b/recipes/wip/inih/recipe.toml index 163e1f51..014f082b 100644 --- a/recipes/wip/inih/recipe.toml +++ b/recipes/wip/inih/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for Meson, see https://github.com/benhoyt/inih#meson-notes [source] -tar = "https://github.com/benhoyt/inih/archive/refs/tags/r57.tar.gz" +git = "https://github.com/benhoyt/inih" +rev = "9cecf0643da0846e77f64d10a126d9f48b9e05e8" [build] template = "custom" diff --git a/recipes/wip/inlyne/recipe.toml b/recipes/wip/inlyne/recipe.toml index 6d1a27b5..13c6803f 100644 --- a/recipes/wip/inlyne/recipe.toml +++ b/recipes/wip/inlyne/recipe.toml @@ -2,6 +2,6 @@ #TODO nix::sys::socket #TODO cmsg_space! [source] -git = "https://github.com/trimental/inlyne.git" +git = "https://github.com/trimental/inlyne" [build] template = "cargo" \ No newline at end of file diff --git a/recipes/wip/innernet-cli/recipe.toml b/recipes/wip/innernet-cli/recipe.toml index 267c4202..f1b81434 100644 --- a/recipes/wip/innernet-cli/recipe.toml +++ b/recipes/wip/innernet-cli/recipe.toml @@ -1,6 +1,7 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/tonarino/innernet/archive/refs/tags/v1.6.0.tar.gz" +git = "https://github.com/tonarino/innernet" +rev = "8d058c8d879bdeec64506f2d34c2c55e2975ec28" [build] template = "custom" script = """ diff --git a/recipes/wip/innernet-server/recipe.toml b/recipes/wip/innernet-server/recipe.toml index 001e8ec5..dc9ebad3 100644 --- a/recipes/wip/innernet-server/recipe.toml +++ b/recipes/wip/innernet-server/recipe.toml @@ -1,6 +1,7 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/tonarino/innernet/archive/refs/tags/v1.6.0.tar.gz" +git = "https://github.com/tonarino/innernet" +rev = "8d058c8d879bdeec64506f2d34c2c55e2975ec28" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/intelli-shell/recipe.toml b/recipes/wip/intelli-shell/recipe.toml index 5a987b15..8e792504 100644 --- a/recipes/wip/intelli-shell/recipe.toml +++ b/recipes/wip/intelli-shell/recipe.toml @@ -1,6 +1,7 @@ #TODO OpenSSL error [source] -tar = "https://github.com/lasantosr/intelli-shell/archive/refs/tags/v0.2.6.tar.gz" +git = "https://github.com/lasantosr/intelli-shell" +rev = "f1a3f24c8dbc9a9a10bfc702f6feb205f433fed0" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/iotdb/recipe.toml b/recipes/wip/iotdb/recipe.toml index fa784278..7a8a2148 100644 --- a/recipes/wip/iotdb/recipe.toml +++ b/recipes/wip/iotdb/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for Maven, see https://github.com/apache/iotdb#build-iotdb-from-source [source] -tar = "https://github.com/apache/iotdb/archive/refs/tags/v1.2.2.tar.gz" +git = "https://github.com/apache/iotdb" +rev = "5d0bfb0c25082b61cb8830aa04ec34a13edccd31" [build] template = "custom" diff --git a/recipes/wip/irust/recipe.toml b/recipes/wip/irust/recipe.toml index 23429571..3966a0e9 100644 --- a/recipes/wip/irust/recipe.toml +++ b/recipes/wip/irust/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/sigmaSd/IRust/archive/refs/tags/irust@1.71.4.tar.gz" +git = "https://github.com/sigmaSd/IRust" +rev = "6f9dbaf9387b39019a44dfe5ef5397e6bb8d2a1a" [build] template = "cargo" diff --git a/recipes/wip/ispc/recipe.toml b/recipes/wip/ispc/recipe.toml index eb2e49fd..d77f6174 100644 --- a/recipes/wip/ispc/recipe.toml +++ b/recipes/wip/ispc/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for building, see https://github.com/ispc/ispc/wiki/ISPC-Development-Guide#build-system [source] -tar = "https://github.com/ispc/ispc/archive/refs/tags/v1.22.0.tar.gz" +git = "https://github.com/ispc/ispc" +rev = "bd2c42d42e0cc3da1baf92160b82d4dc820a02ee" [build] template = "custom" diff --git a/recipes/wip/jirust/recipe.toml b/recipes/wip/jirust/recipe.toml index 02d82282..48ce5273 100644 --- a/recipes/wip/jirust/recipe.toml +++ b/recipes/wip/jirust/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/moali87/jirust/archive/refs/tags/1.1.6.tar.gz" +git = "https://github.com/moali87/jirust" +rev = "6fd0d4a76ed411f7055a9ee9364f40748856f304" [build] template = "cargo" diff --git a/recipes/wip/jless/recipe.toml b/recipes/wip/jless/recipe.toml index 257f83c6..4ad09e56 100644 --- a/recipes/wip/jless/recipe.toml +++ b/recipes/wip/jless/recipe.toml @@ -1,5 +1,6 @@ #TODO redox_syscall crate error [source] -tar = "https://github.com/PaulJuliusMartinez/jless/archive/refs/tags/v0.8.0.tar.gz" +git = "https://github.com/PaulJuliusMartinez/jless" +rev = "21dd6100edb47145bb9570931bec29697bcd0d9b" [build] -template = "cargo" \ No newline at end of file +template = "cargo" diff --git a/recipes/wip/jql/recipe.toml b/recipes/wip/jql/recipe.toml index 7523b71a..029b0a3d 100644 --- a/recipes/wip/jql/recipe.toml +++ b/recipes/wip/jql/recipe.toml @@ -1,6 +1,7 @@ #TODO compiled but not tested [source] -tar = "https://github.com/yamafaktory/jql/archive/refs/tags/jql-v6.0.8.tar.gz" +git = "https://github.com/yamafaktory/jql" +rev = "af2768b279f203a58651d386f0167b229919f1c4" [build] template = "custom" script = """ diff --git a/recipes/wip/json-c/recipe.toml b/recipes/wip/json-c/recipe.toml index bec5a761..43eacf77 100644 --- a/recipes/wip/json-c/recipe.toml +++ b/recipes/wip/json-c/recipe.toml @@ -1,6 +1,7 @@ #TODO maybe wrong script, see https://github.com/json-c/json-c#build-instructions-- [source] -tar = "https://github.com/json-c/json-c/archive/refs/tags/json-c-0.17-20230812.tar.gz" +git = "https://github.com/json-c/json-c" +rev = "b4c371fa0cbc4dcbaccc359ce9e957a22988fb34" [build] template = "custom" script = """ diff --git a/recipes/wip/just/recipe.toml b/recipes/wip/just/recipe.toml index 823c10ec..429d4bed 100644 --- a/recipes/wip/just/recipe.toml +++ b/recipes/wip/just/recipe.toml @@ -1,5 +1,6 @@ #TODO Schemes not supported [source] -tar = "https://github.com/casey/just/archive/refs/tags/1.13.0.tar.gz" +git = "https://github.com/casey/just" +rev = "63c0234c968b5a12a7ecceb4ebc6540996274a85" [build] template = "cargo" diff --git a/recipes/wip/kanata/recipe.toml b/recipes/wip/kanata/recipe.toml index 38b84d1a..9d31d1a9 100644 --- a/recipes/wip/kanata/recipe.toml +++ b/recipes/wip/kanata/recipe.toml @@ -1,5 +1,6 @@ #TODO program error, maybe needs porting [source] -tar = "https://github.com/jtroo/kanata/archive/refs/tags/v1.3.0.tar.gz" +git = "https://github.com/jtroo/kanata" +rev = "d6461425764aec10b9f919968eb70b6d13c72ea6" [build] template = "cargo" diff --git a/recipes/wip/kani/recipe.toml b/recipes/wip/kani/recipe.toml index abee6ca2..b927efb5 100644 --- a/recipes/wip/kani/recipe.toml +++ b/recipes/wip/kani/recipe.toml @@ -1,5 +1,6 @@ #TODO compiled but not tested [source] -tar = "https://github.com/model-checking/kani/archive/refs/tags/kani-0.28.0.tar.gz" +git = "https://github.com/model-checking/kani" +rev = "1e6213d3e41ce1545d5129f5d71dc566d615ccb9" [build] template = "cargo" diff --git a/recipes/wip/kbt/recipe.toml b/recipes/wip/kbt/recipe.toml index edd55d9f..eb031157 100644 --- a/recipes/wip/kbt/recipe.toml +++ b/recipes/wip/kbt/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/bloznelis/kbt/archive/refs/tags/2.0.6.tar.gz" +git = "https://github.com/bloznelis/kbt" +rev = "a121e6de83044cc94343edc98eec33be20afc335" [build] template = "cargo" diff --git a/recipes/wip/kdenlive/recipe.toml b/recipes/wip/kdenlive/recipe.toml index 86c26af6..e21eb512 100644 --- a/recipes/wip/kdenlive/recipe.toml +++ b/recipes/wip/kdenlive/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for CMake, see https://invent.kde.org/multimedia/kdenlive/-/blob/master/dev-docs/build.md#build-and-install-the-projects [source] -tar = "https://invent.kde.org/multimedia/kdenlive/-/archive/v23.08.3/kdenlive-v23.08.3.tar.bz2" +git = "https://invent.kde.org/multimedia/kdenlive" +rev = "da6ecdfbba7aadf88572ac5f87aeb88ff2d80f57" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/kdevelop/recipe.toml b/recipes/wip/kdevelop/recipe.toml index 2edd3f1e..a5ff324a 100644 --- a/recipes/wip/kdevelop/recipe.toml +++ b/recipes/wip/kdevelop/recipe.toml @@ -1,7 +1,8 @@ #TODO missing script for building, see https://kdevelop.org/build-it/ #TODO probably missing dependencies, see https://packages.debian.org/source/trixie/kdevelop [source] -tar = "https://invent.kde.org/kdevelop/kdevelop/-/archive/v23.08.3/kdevelop-v23.08.3.tar.bz2" +git = "https://invent.kde.org/kdevelop/kdevelop" +rev = "3021daeb5d62bc7a7a7dec4bcc23e19d3bfdaadd" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/kodi/recipe.toml b/recipes/wip/kodi/recipe.toml index 5b9d7217..413e7f5d 100644 --- a/recipes/wip/kodi/recipe.toml +++ b/recipes/wip/kodi/recipe.toml @@ -1,7 +1,8 @@ #TODO probably wrong script, see https://github.com/xbmc/xbmc/blob/master/docs/README.Linux.md#4-build-kodi #TODO maybe missing dependencies, see https://archlinux.org/packages/extra/x86_64/kodi/ [source] -tar = "https://github.com/xbmc/xbmc/archive/refs/tags/20.2-Nexus.tar.gz" +git = "https://github.com/xbmc/xbmc" +rev = "5f418d0b133535c6675154688ac7144e34f4d436" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/kubernetes/recipe.toml b/recipes/wip/kubernetes/recipe.toml index 4485d519..fe02ac5b 100644 --- a/recipes/wip/kubernetes/recipe.toml +++ b/recipes/wip/kubernetes/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for "make", see https://github.com/kubernetes/community/blob/master/contributors/devel/development.md#building-kubernetes-on-a-local-osshell-environment #TODO require Go [source] -tar = "https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.25.16.tar.gz" +git = "https://github.com/kubernetes/kubernetes" +rev = "3f7a50f38688eb332e2a1b013678c6435d539ae6" [build] template = "custom" diff --git a/recipes/wip/lammps/recipe.toml b/recipes/wip/lammps/recipe.toml index 8111665e..c2429130 100644 --- a/recipes/wip/lammps/recipe.toml +++ b/recipes/wip/lammps/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for CMake, see https://docs.lammps.org/Build_cmake.html [source] -tar = "https://github.com/lammps/lammps/archive/refs/tags/stable_2Aug2023_update1.tar.gz" +git = "https://github.com/lammps/lammps" +rev = "27e8d0f19cfd60ff513828af74d07d2c8f3c4451" [build] template = "custom" diff --git a/recipes/wip/lapce/recipe.toml b/recipes/wip/lapce/recipe.toml index 87e7c499..2c69f5ee 100644 --- a/recipes/wip/lapce/recipe.toml +++ b/recipes/wip/lapce/recipe.toml @@ -1,5 +1,6 @@ #TODO not compiled or tested [source] -tar = "https://github.com/lapce/lapce/archive/refs/tags/v0.2.7.tar.gz" +git = "https://github.com/lapce/lapce" +rev = "cb96e5ac3f3e4e70bd18b7a1307c5406e4247164" [build] template = "cargo" diff --git a/recipes/wip/lcs-image-diff/recipe.toml b/recipes/wip/lcs-image-diff/recipe.toml index fc7730a3..7f05311b 100644 --- a/recipes/wip/lcs-image-diff/recipe.toml +++ b/recipes/wip/lcs-image-diff/recipe.toml @@ -1,5 +1,5 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/bokuweb/lcs-image-diff-rs/archive/refs/tags/0.1.7.tar.gz" +git = "https://github.com/bokuweb/lcs-image-diff-rs" [build] template = "cargo" diff --git a/recipes/wip/legdur/recipe.toml b/recipes/wip/legdur/recipe.toml index 9b1d72e7..397270b2 100644 --- a/recipes/wip/legdur/recipe.toml +++ b/recipes/wip/legdur/recipe.toml @@ -1,5 +1,5 @@ #TODO camino crate error [source] -tar = "https://hg.sr.ht/~cyplo/legdur/archive/tip.tar.gz" +git = "https://hg.sr.ht/~cyplo/legdur" [build] template = "cargo" diff --git a/recipes/wip/lemmeknow/recipe.toml b/recipes/wip/lemmeknow/recipe.toml index 78c23477..e4358102 100644 --- a/recipes/wip/lemmeknow/recipe.toml +++ b/recipes/wip/lemmeknow/recipe.toml @@ -1,5 +1,6 @@ #TODO compiled but not tested [source] -tar = "https://github.com/swanandx/lemmeknow/archive/refs/tags/v0.8.0.tar.gz" +git = "https://github.com/swanandx/lemmeknow" +rev = "f0ec298fb16e17b4c4c87c20b500e7ec1f7cd451" [build] template = "cargo" diff --git a/recipes/wip/level-zero/recipe.toml b/recipes/wip/level-zero/recipe.toml index f0f19fd6..e0064491 100644 --- a/recipes/wip/level-zero/recipe.toml +++ b/recipes/wip/level-zero/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for CMake, see https://github.com/oneapi-src/level-zero#building-and-installing [source] -tar = "https://github.com/oneapi-src/level-zero/archive/refs/tags/v1.15.1.tar.gz" +git = "https://github.com/oneapi-src/level-zero" +rev = "ea5be99d8d34480447ab1e3c7efc30d6f179b123" [build] template = "custom" diff --git a/recipes/wip/lfs/recipe.toml b/recipes/wip/lfs/recipe.toml index 6f2e456d..697f818e 100644 --- a/recipes/wip/lfs/recipe.toml +++ b/recipes/wip/lfs/recipe.toml @@ -1,5 +1,6 @@ #TODO compiled after cargo update, but not tested [source] -tar = "https://github.com/Canop/lfs/archive/refs/tags/v2.6.0.tar.gz" +git = "https://github.com/Canop/dysk" +rev = "eecc8cf86a26e840cdf1c97758a7deb3a4852e63" [build] template = "cargo" From 01ac8c4e9bb9003084cfff2027df460ad00e6264 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 18 Dec 2023 19:26:27 +0000 Subject: [PATCH 1243/3180] update recipes --- recipes/wip/{lfs => dysk}/recipe.toml | 0 recipes/wip/lib2geom/recipe.toml | 3 ++- recipes/wip/libargon2/recipe.toml | 2 +- recipes/wip/libavif/recipe.toml | 3 ++- recipes/wip/libbrotli/recipe.toml | 3 ++- recipes/wip/libcap/recipe.toml | 2 +- recipes/wip/libcdio-paranoia/recipe.toml | 3 ++- recipes/wip/libcdio/recipe.toml | 3 ++- recipes/wip/libdouble-conversion/recipe.toml | 3 ++- recipes/wip/libeigen/recipe.toml | 3 ++- recipes/wip/libfmt/recipe.toml | 3 ++- recipes/wip/libgit2/recipe.toml | 3 ++- recipes/wip/libglm/recipe.toml | 3 ++- recipes/wip/libharu/recipe.toml | 3 ++- recipes/wip/libimath/recipe.toml | 3 ++- recipes/wip/libimmer/recipe.toml | 3 ++- recipes/wip/libinput/recipe.toml | 3 ++- recipes/wip/libjxl/recipe.toml | 3 ++- recipes/wip/libkdcraw/recipe.toml | 3 ++- recipes/wip/libkomparediff2/recipe.toml | 3 ++- recipes/wip/liblapack/recipe.toml | 3 ++- recipes/wip/libnlopt/recipe.toml | 3 ++- recipes/wip/libportaudio/recipe.toml | 3 ++- recipes/wip/libqrcodegenc/recipe.toml | 3 ++- recipes/wip/librist/recipe.toml | 3 ++- recipes/wip/librkcommon/recipe.toml | 3 ++- recipes/wip/libseexpr-kde/recipe.toml | 3 ++- recipes/wip/libslirp/recipe.toml | 2 +- recipes/wip/libsoundio/recipe.toml | 3 ++- recipes/wip/libsrt/recipe.toml | 3 ++- recipes/wip/libvncserver/recipe.toml | 3 ++- recipes/wip/libvpx/recipe.toml | 3 ++- recipes/wip/libvulkan/recipe.toml | 3 ++- recipes/wip/libwebsocket++/recipe.toml | 3 ++- recipes/wip/libwebsockets/recipe.toml | 3 ++- 35 files changed, 65 insertions(+), 34 deletions(-) rename recipes/wip/{lfs => dysk}/recipe.toml (100%) diff --git a/recipes/wip/lfs/recipe.toml b/recipes/wip/dysk/recipe.toml similarity index 100% rename from recipes/wip/lfs/recipe.toml rename to recipes/wip/dysk/recipe.toml diff --git a/recipes/wip/lib2geom/recipe.toml b/recipes/wip/lib2geom/recipe.toml index 175db20f..5e6442f1 100644 --- a/recipes/wip/lib2geom/recipe.toml +++ b/recipes/wip/lib2geom/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for CMake, see https://gitlab.com/inkscape/lib2geom#building [source] -tar = "https://gitlab.com/inkscape/lib2geom/-/archive/1.3/lib2geom-1.3.tar.bz2" +tar = "https://gitlab.com/inkscape/lib2geom" +rev = "18fc32f9972dfaee597055b3226c5b7ef3bfbb4c" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/libargon2/recipe.toml b/recipes/wip/libargon2/recipe.toml index 58c03e49..c65d5ab3 100644 --- a/recipes/wip/libargon2/recipe.toml +++ b/recipes/wip/libargon2/recipe.toml @@ -1,5 +1,5 @@ #TODO missing script for "make", see https://github.com/P-H-C/phc-winner-argon2#usage [source] -tar = "https://github.com/P-H-C/phc-winner-argon2/archive/refs/tags/20190702.tar.gz" +git = "https://github.com/P-H-C/phc-winner-argon2" [build] template = "custom" diff --git a/recipes/wip/libavif/recipe.toml b/recipes/wip/libavif/recipe.toml index af6cdcd0..12a9880e 100644 --- a/recipes/wip/libavif/recipe.toml +++ b/recipes/wip/libavif/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for CMake, see https://github.com/AOMediaCodec/libavif#build-notes [source] -tar = "https://github.com/AOMediaCodec/libavif/archive/refs/tags/v1.0.2.tar.gz" +git = "https://github.com/AOMediaCodec/libavif" +rev = "ecf2dfc1ef2908e0f4ddb0fdc03dd8db831d8ae7" [build] template = "custom" diff --git a/recipes/wip/libbrotli/recipe.toml b/recipes/wip/libbrotli/recipe.toml index caf1adc2..426ae869 100644 --- a/recipes/wip/libbrotli/recipe.toml +++ b/recipes/wip/libbrotli/recipe.toml @@ -1,6 +1,7 @@ #TODO probably wrong script, see https://github.com/google/brotli#cmake [source] -tar = "https://github.com/google/brotli/archive/refs/tags/v1.1.0.tar.gz" +git = "https://github.com/google/brotli" +rev = "ed738e842d2fbdf2d6459e39267a633c4a9b2f5d" [build] template = "custom" script = """ diff --git a/recipes/wip/libcap/recipe.toml b/recipes/wip/libcap/recipe.toml index 8b6fc19a..8426663a 100644 --- a/recipes/wip/libcap/recipe.toml +++ b/recipes/wip/libcap/recipe.toml @@ -1,5 +1,5 @@ #TODO missing script for "make" (maybe need the Go), see https://git.kernel.org/pub/scm/libs/libcap/libcap.git/tree/README#n20 [source] -tar = "https://git.kernel.org/pub/scm/libs/libcap/libcap.git/snapshot/libcap-cap/v1.2.69.tar.gz" +tar = "https://kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.69.tar.xz" [build] template = "custom" diff --git a/recipes/wip/libcdio-paranoia/recipe.toml b/recipes/wip/libcdio-paranoia/recipe.toml index c7e9e704..2b7df12a 100644 --- a/recipes/wip/libcdio-paranoia/recipe.toml +++ b/recipes/wip/libcdio-paranoia/recipe.toml @@ -1,6 +1,7 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/rocky/libcdio-paranoia/archive/refs/tags/release-10.2+2.0.1.tar.gz" +git = "https://github.com/rocky/libcdio-paranoia" +rev = "db4dfff9e11c516ae35d87e568f511002ddae9d7" [build] template = "custom" script = """ diff --git a/recipes/wip/libcdio/recipe.toml b/recipes/wip/libcdio/recipe.toml index 8af18503..a3c3c8a8 100644 --- a/recipes/wip/libcdio/recipe.toml +++ b/recipes/wip/libcdio/recipe.toml @@ -1,6 +1,7 @@ #TODO probably wrong script, see https://git.savannah.gnu.org/cgit/libcdio.git/tree/INSTALL [source] -tar = "https://git.savannah.gnu.org/cgit/libcdio.git/snapshot/libcdio-release-2.1.0.tar.gz" +git = "https://git.savannah.gnu.org/cgit/libcdio.git" +rev = "9c7a2779846da161279bc1501e83c849cf89a594" [build] template = "custom" script = """ diff --git a/recipes/wip/libdouble-conversion/recipe.toml b/recipes/wip/libdouble-conversion/recipe.toml index 25abf63a..97747a35 100644 --- a/recipes/wip/libdouble-conversion/recipe.toml +++ b/recipes/wip/libdouble-conversion/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for building, see https://github.com/google/double-conversion#building [source] -tar = "https://github.com/google/double-conversion/archive/refs/tags/v3.3.0.tar.gz" +git = "https://github.com/google/double-conversion" +rev = "4f7a25d8ced8c7cf6eee6fd09d6788eaa23c9afe" [build] template = "custom" diff --git a/recipes/wip/libeigen/recipe.toml b/recipes/wip/libeigen/recipe.toml index 4aa38da4..6bf8ded0 100644 --- a/recipes/wip/libeigen/recipe.toml +++ b/recipes/wip/libeigen/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for CMake, see https://gitlab.com/libeigen/eigen/-/blob/master/INSTALL?ref_type=heads [source] -tar = "https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.bz2" +git = "https://gitlab.com/libeigen/eigen" +rev = "3147391d946bb4b6c68edd901f2add6ac1f31f8c" [build] template = "custom" diff --git a/recipes/wip/libfmt/recipe.toml b/recipes/wip/libfmt/recipe.toml index 3c6df91e..ba81a679 100644 --- a/recipes/wip/libfmt/recipe.toml +++ b/recipes/wip/libfmt/recipe.toml @@ -1,6 +1,7 @@ #TODO probably wrong script, see https://fmt.dev/latest/usage.html#building-the-library [source] -tar = "https://github.com/fmtlib/fmt/archive/refs/tags/10.0.0.tar.gz" +git = "https://github.com/fmtlib/fmt" +rev = "f5e54359df4c26b6230fc61d38aa294581393084" [build] template = "custom" script = """ diff --git a/recipes/wip/libgit2/recipe.toml b/recipes/wip/libgit2/recipe.toml index 3283c74a..8b398019 100644 --- a/recipes/wip/libgit2/recipe.toml +++ b/recipes/wip/libgit2/recipe.toml @@ -1,6 +1,7 @@ #TODO maybe wrong script, see https://github.com/libgit2/libgit2#building-libgit2---using-cmake [source] -tar = "https://github.com/libgit2/libgit2/archive/refs/tags/v1.6.4.tar.gz" +git = "https://github.com/libgit2/libgit2" +rev = "a2bde63741977ca0f4ef7db2f609df320be67a08" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/libglm/recipe.toml b/recipes/wip/libglm/recipe.toml index dae88cd3..81d65935 100644 --- a/recipes/wip/libglm/recipe.toml +++ b/recipes/wip/libglm/recipe.toml @@ -1,5 +1,6 @@ #TODO Needs to determine the script [source] -tar = "https://github.com/g-truc/glm/archive/refs/tags/0.9.9.8.tar.gz" +git = "https://github.com/g-truc/glm" +rev = "bf71a834948186f4097caa076cd2663c69a10e1e" [build] template = "custom" diff --git a/recipes/wip/libharu/recipe.toml b/recipes/wip/libharu/recipe.toml index 470c28a3..ff4d2e03 100644 --- a/recipes/wip/libharu/recipe.toml +++ b/recipes/wip/libharu/recipe.toml @@ -1,6 +1,7 @@ #TODO not compiled or tested [source] -tar = "https://github.com/libharu/libharu/archive/refs/tags/v2.4.3.tar.gz" +git = "https://github.com/libharu/libharu" +rev = "0c598becaadaef8e3d12b883f9fc2864a118c12d" [build] template = "custom" script = """ diff --git a/recipes/wip/libimath/recipe.toml b/recipes/wip/libimath/recipe.toml index fd06adcf..b149f33a 100644 --- a/recipes/wip/libimath/recipe.toml +++ b/recipes/wip/libimath/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for CMake, see https://imath.readthedocs.io/en/latest/install.html#linux-macos [source] -tar = "https://github.com/AcademySoftwareFoundation/Imath/archive/refs/tags/v3.1.9.tar.gz" +git = "https://github.com/AcademySoftwareFoundation/Imath" +rev = "d690a3fcff4e877ead5ae56c7e964595ade8a35e" [build] template = "custom" diff --git a/recipes/wip/libimmer/recipe.toml b/recipes/wip/libimmer/recipe.toml index 655a28a9..d291761e 100644 --- a/recipes/wip/libimmer/recipe.toml +++ b/recipes/wip/libimmer/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for CMake, see https://github.com/arximboldi/immer#usage [source] -tar = "https://github.com/arximboldi/immer/archive/refs/tags/v0.8.1.tar.gz" +git = "https://github.com/arximboldi/immer" +rev = "5875f7739a6c642ad58cbedadb509c86d421217e" [build] template = "custom" diff --git a/recipes/wip/libinput/recipe.toml b/recipes/wip/libinput/recipe.toml index 1c042c33..40bb422c 100644 --- a/recipes/wip/libinput/recipe.toml +++ b/recipes/wip/libinput/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for Meson, see https://wayland.freedesktop.org/libinput/doc/latest/building.html#building [source] -tar = "https://gitlab.freedesktop.org/libinput/libinput/-/archive/1.24.0/libinput-1.24.0.tar.gz" +git = "https://gitlab.freedesktop.org/libinput/libinput" +rev = "1680f2fbaa63a91739012c6b57988ab1918ea0b7" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/libjxl/recipe.toml b/recipes/wip/libjxl/recipe.toml index c6e443ac..82849ad8 100644 --- a/recipes/wip/libjxl/recipe.toml +++ b/recipes/wip/libjxl/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for CMake, see https://github.com/libjxl/libjxl/blob/main/BUILDING.md [source] -tar = "https://github.com/libjxl/libjxl/archive/refs/tags/v0.8.2.tar.gz" +git = "https://github.com/libjxl/libjxl" +rev = "954b460768c08a147abf47689ad69b0e7beff65e" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/libkdcraw/recipe.toml b/recipes/wip/libkdcraw/recipe.toml index 575a0ba9..834026d7 100644 --- a/recipes/wip/libkdcraw/recipe.toml +++ b/recipes/wip/libkdcraw/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for CMake, see https://invent.kde.org/graphics/libkdcraw/-/blob/master/README?ref_type=heads [source] -tar = "https://invent.kde.org/graphics/libkdcraw/-/archive/v23.08.4/libkdcraw-v23.08.4.tar.bz2" +git = "https://invent.kde.org/graphics/libkdcraw" +rev = "fbd01409c8009f403bccac6776fe4cfefa57d5bd" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/libkomparediff2/recipe.toml b/recipes/wip/libkomparediff2/recipe.toml index 6630c5cf..91eefe59 100644 --- a/recipes/wip/libkomparediff2/recipe.toml +++ b/recipes/wip/libkomparediff2/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for CMake, lacking build instructions [source] -tar = "https://invent.kde.org/sdk/libkomparediff2/-/archive/v23.08.4/libkomparediff2-v23.08.4.tar.bz2" +git = "https://invent.kde.org/sdk/libkomparediff2" +rev = "ea9034ee3e4952862a937255bc6cc4ee392907f6" [build] template = "custom" diff --git a/recipes/wip/liblapack/recipe.toml b/recipes/wip/liblapack/recipe.toml index fa272d81..f2d82d3e 100644 --- a/recipes/wip/liblapack/recipe.toml +++ b/recipes/wip/liblapack/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for CMake, see https://github.com/Reference-LAPACK/lapack#installation [source] -tar = "https://github.com/Reference-LAPACK/lapack/archive/refs/tags/v3.12.0.tar.gz" +git = "https://github.com/Reference-LAPACK/lapack" +rev = "04b044e020a3560ccfa9988c8a80a1fb7083fc2e" [build] template = "custom" diff --git a/recipes/wip/libnlopt/recipe.toml b/recipes/wip/libnlopt/recipe.toml index fe137c6a..b76ce21f 100644 --- a/recipes/wip/libnlopt/recipe.toml +++ b/recipes/wip/libnlopt/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for CMake, see https://github.com/stevengj/nlopt#readme [source] -tar = "https://github.com/stevengj/nlopt/archive/refs/tags/v2.7.1.tar.gz" +git = "https://github.com/stevengj/nlopt" +rev = "09b3c2a6da71cabcb98d2c8facc6b83d2321ed71" [build] template = "custom" diff --git a/recipes/wip/libportaudio/recipe.toml b/recipes/wip/libportaudio/recipe.toml index 138ca20e..c4b1ef0f 100644 --- a/recipes/wip/libportaudio/recipe.toml +++ b/recipes/wip/libportaudio/recipe.toml @@ -1,5 +1,6 @@ #TODO compilation error and require some Linux audio server [source] -tar = "https://github.com/PortAudio/portaudio/archive/refs/tags/v19.7.0.tar.gz" +git = "https://github.com/PortAudio/portaudio" +rev = "147dd722548358763a8b649b3e4b41dfffbcfbb6" [build] template = "configure" diff --git a/recipes/wip/libqrcodegenc/recipe.toml b/recipes/wip/libqrcodegenc/recipe.toml index 6a540dad..a270b5c1 100644 --- a/recipes/wip/libqrcodegenc/recipe.toml +++ b/recipes/wip/libqrcodegenc/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script to build the C implementation, see https://github.com/nayuki/QR-Code-generator/tree/master/c [source] -tar = "https://github.com/nayuki/QR-Code-generator/archive/refs/tags/v1.8.0.tar.gz" +git = "https://github.com/nayuki/QR-Code-generator" +rev = "720f62bddb7226106071d4728c292cb1df519ceb" [build] template = "custom" diff --git a/recipes/wip/librist/recipe.toml b/recipes/wip/librist/recipe.toml index eba735f2..39d44094 100644 --- a/recipes/wip/librist/recipe.toml +++ b/recipes/wip/librist/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for Meson, see https://code.videolan.org/rist/librist#compile-using-mesonninja-linux-osx-and-windows-mingw [source] -tar = "https://code.videolan.org/rist/librist/-/archive/v0.2.10/librist-v0.2.10.tar.bz2" +git = "https://code.videolan.org/rist/librist" +rev = "1e805500dc14a507598cebdd49557c32e514899f" [build] template = "custom" diff --git a/recipes/wip/librkcommon/recipe.toml b/recipes/wip/librkcommon/recipe.toml index 9472d50c..6f58a731 100644 --- a/recipes/wip/librkcommon/recipe.toml +++ b/recipes/wip/librkcommon/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for CMake, see https://github.com/ospray/rkcommon#building [source] -tar = "https://github.com/ospray/rkcommon/archive/refs/tags/v1.12.0.tar.gz" +git = "https://github.com/ospray/rkcommon" +rev = "f15291d4789a53e5980fd9b3d2639f705d675dd7" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/libseexpr-kde/recipe.toml b/recipes/wip/libseexpr-kde/recipe.toml index ff93f5f4..456e6a22 100644 --- a/recipes/wip/libseexpr-kde/recipe.toml +++ b/recipes/wip/libseexpr-kde/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for CMake, see https://invent.kde.org/graphics/kseexpr#super-impatient-cmake-building-and-installing-guide [source] -tar = "https://invent.kde.org/graphics/kseexpr/-/archive/v4.0.4.0/kseexpr-v4.0.4.0.tar.bz2" +git = "https://invent.kde.org/graphics/kseexpr" +rev = "d834b2dc6a7f452ffca4602f90b709db86a3a630" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/libslirp/recipe.toml b/recipes/wip/libslirp/recipe.toml index 920ccddb..5017b462 100644 --- a/recipes/wip/libslirp/recipe.toml +++ b/recipes/wip/libslirp/recipe.toml @@ -1,5 +1,5 @@ #TODO missing script for Meson, see https://gitlab.freedesktop.org/slirp/libslirp#building [source] -tar = "https://gitlab.freedesktop.org/slirp/libslirp/-/archive/v4.7.0/libslirp-v4.7.0.tar.bz2" +tar = "https://gitlab.freedesktop.org/slirp/libslirp/uploads/60113f60cfd6abe2c16dde9f6c81b631/libslirp-4.7.0.tar.xz" [build] template = "custom" diff --git a/recipes/wip/libsoundio/recipe.toml b/recipes/wip/libsoundio/recipe.toml index 2333bc3d..80a4e0fc 100644 --- a/recipes/wip/libsoundio/recipe.toml +++ b/recipes/wip/libsoundio/recipe.toml @@ -1,6 +1,7 @@ #TODO probably wrong script, see https://github.com/andrewrk/libsoundio#building [source] -tar = "https://github.com/andrewrk/libsoundio/archive/refs/tags/2.0.0.tar.gz" +git = "https://github.com/andrewrk/libsoundio" +rev = "dc4f84339039ac518b6cd1c0e7683e88e25be470" [build] template = "custom" script = """ diff --git a/recipes/wip/libsrt/recipe.toml b/recipes/wip/libsrt/recipe.toml index 1f874220..53732410 100644 --- a/recipes/wip/libsrt/recipe.toml +++ b/recipes/wip/libsrt/recipe.toml @@ -1,6 +1,7 @@ #TODO probably wrong template, see https://github.com/Haivision/srt/blob/master/docs/build/build-linux.md [source] -tar = "https://github.com/Haivision/srt/archive/refs/tags/v1.5.3.tar.gz" +git = "https://github.com/Haivision/srt" +rev = "09f35c0f1743e23f514cb41444504a7faeacf89e" [build] template = "configure" dependencies = [ diff --git a/recipes/wip/libvncserver/recipe.toml b/recipes/wip/libvncserver/recipe.toml index 5f971895..b56fcdce 100644 --- a/recipes/wip/libvncserver/recipe.toml +++ b/recipes/wip/libvncserver/recipe.toml @@ -1,6 +1,7 @@ #TODO probably wrong script, see https://github.com/LibVNC/libvncserver#how-to-build [source] -tar = "https://github.com/LibVNC/libvncserver/archive/refs/tags/LibVNCServer-0.9.14.tar.gz" +git = "https://github.com/LibVNC/libvncserver" +rev = "10e9eb75f73e973725dc75c373de5d89807af028" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/libvpx/recipe.toml b/recipes/wip/libvpx/recipe.toml index 0d8dd34f..c48d2aaa 100644 --- a/recipes/wip/libvpx/recipe.toml +++ b/recipes/wip/libvpx/recipe.toml @@ -1,5 +1,6 @@ #TODO probably wrong template [source] -tar = "https://chromium.googlesource.com/webm/libvpx/+archive/v1.13.0.tar.gz" +git = "https://chromium.googlesource.com/webm/libvpx" +rev = "10b9492dcf05b652e2e4b370e205bd605d421972" [build] template = "configure" diff --git a/recipes/wip/libvulkan/recipe.toml b/recipes/wip/libvulkan/recipe.toml index 70e3d229..57d35241 100644 --- a/recipes/wip/libvulkan/recipe.toml +++ b/recipes/wip/libvulkan/recipe.toml @@ -1,6 +1,7 @@ #TODO probably wrong script, see https://github.com/KhronosGroup/Vulkan-Loader/blob/main/BUILD.md [source] -tar = "https://github.com/KhronosGroup/Vulkan-Loader/archive/refs/tags/v1.3.270.tar.gz" +git = "https://github.com/KhronosGroup/Vulkan-Loader" +rev = "cf1a1eff115465b2425d287bef1e94ca62b0de1b" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/libwebsocket++/recipe.toml b/recipes/wip/libwebsocket++/recipe.toml index 5c8de272..e5c0939f 100644 --- a/recipes/wip/libwebsocket++/recipe.toml +++ b/recipes/wip/libwebsocket++/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for installation, lacking build instructions [source] -tar = "https://github.com/zaphoyd/websocketpp/archive/refs/tags/0.8.2.tar.gz" +git = "https://github.com/zaphoyd/websocketpp" +rev = "56123c87598f8b1dd471be83ca841ceae07f95ba" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/libwebsockets/recipe.toml b/recipes/wip/libwebsockets/recipe.toml index 11ff45f0..a878f665 100644 --- a/recipes/wip/libwebsockets/recipe.toml +++ b/recipes/wip/libwebsockets/recipe.toml @@ -1,6 +1,7 @@ #TODO maybe wrong script [source] -tar = "https://github.com/warmcat/libwebsockets/archive/refs/tags/v4.3.2.tar.gz" +git = "https://github.com/warmcat/libwebsockets" +rev = "4415e84c095857629863804e941b9e1c2e9347ef" [build] template = "custom" dependencies = [ From 6358067f85bab53cec85a26ca61a97f9085e7ea3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 18 Dec 2023 22:37:00 +0000 Subject: [PATCH 1244/3180] update recipes --- recipes/wip/libxsimd/recipe.toml | 3 ++- recipes/wip/libxtl/recipe.toml | 3 ++- recipes/wip/lineselect/recipe.toml | 3 ++- recipes/wip/liquid-dsp/recipe.toml | 3 ++- recipes/wip/lowcharts/recipe.toml | 3 ++- recipes/wip/lrdf/recipe.toml | 4 +++- recipes/wip/lsd/recipe.toml | 3 ++- recipes/wip/luxcorerender/recipe.toml | 3 ++- recipes/wip/lychee/recipe.toml | 3 ++- recipes/wip/lz4/recipe.toml | 3 ++- recipes/wip/macchina/recipe.toml | 3 ++- recipes/wip/magic-wormhole-rs/recipe.toml | 3 ++- recipes/wip/mame/recipe.toml | 3 ++- recipes/wip/mandy/recipe.toml | 3 ++- recipes/wip/mask/recipe.toml | 3 ++- recipes/wip/matui/recipe.toml | 3 ++- recipes/wip/mbedtls/recipe.toml | 3 ++- recipes/wip/mcfly/recipe.toml | 3 ++- recipes/wip/mdbook/recipe.toml | 3 ++- recipes/wip/melonds/recipe.toml | 3 ++- recipes/wip/mimalloc/recipe.toml | 3 ++- recipes/wip/minetest-data/recipe.toml | 3 ++- recipes/wip/miniaudicle/recipe.toml | 3 ++- recipes/wip/mnn/recipe.toml | 3 ++- recipes/wip/mongodb6/recipe.toml | 3 ++- recipes/wip/mongodb7/recipe.toml | 3 ++- recipes/wip/monolith/recipe.toml | 3 ++- recipes/wip/moosefs/recipe.toml | 3 ++- recipes/wip/morty/recipe.toml | 3 ++- recipes/wip/motus/recipe.toml | 3 ++- recipes/wip/mprocs/recipe.toml | 3 ++- recipes/wip/mpv/recipe.toml | 3 ++- recipes/wip/ncspot/recipe.toml | 3 ++- recipes/wip/neofetch/recipe.toml | 3 ++- recipes/wip/neovide/recipe.toml | 3 ++- recipes/wip/neovim/recipe.toml | 3 ++- recipes/wip/ninja-build/recipe.toml | 3 ++- recipes/wip/nix/recipe.toml | 3 ++- 38 files changed, 77 insertions(+), 38 deletions(-) diff --git a/recipes/wip/libxsimd/recipe.toml b/recipes/wip/libxsimd/recipe.toml index a0f50efe..a1970a5d 100644 --- a/recipes/wip/libxsimd/recipe.toml +++ b/recipes/wip/libxsimd/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for CMake, see https://github.com/xtensor-stack/xsimd#install-from-sources [source] -tar = "https://github.com/xtensor-stack/xsimd/archive/refs/tags/12.1.0.tar.gz" +git = "https://github.com/xtensor-stack/xsimd" +rev = "c1247bffa8fc36de7380a5cd42673a3b32f74c97" [build] template = "custom" diff --git a/recipes/wip/libxtl/recipe.toml b/recipes/wip/libxtl/recipe.toml index 8759e32b..6227f7e0 100644 --- a/recipes/wip/libxtl/recipe.toml +++ b/recipes/wip/libxtl/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for CMake, see https://github.com/xtensor-stack/xtl#install-from-sources [source] -tar = "https://github.com/xtensor-stack/xtl/archive/refs/tags/0.7.5.tar.gz" +git = "https://github.com/xtensor-stack/xtl" +rev = "c95f6c8b13ffb7f74f16d3fd6882668b79bd8412" [build] template = "custom" diff --git a/recipes/wip/lineselect/recipe.toml b/recipes/wip/lineselect/recipe.toml index d8bc9522..df864cc4 100644 --- a/recipes/wip/lineselect/recipe.toml +++ b/recipes/wip/lineselect/recipe.toml @@ -1,5 +1,6 @@ #TODO Compiled but not tested [source] -tar = "https://github.com/urbanogilson/lineselect/archive/refs/tags/v0.1.0.tar.gz" +git = "https://github.com/urbanogilson/lineselect" +rev = "080d1c62fcdd70cce0c94361ee10fd680aa92b4d" [build] template = "cargo" diff --git a/recipes/wip/liquid-dsp/recipe.toml b/recipes/wip/liquid-dsp/recipe.toml index 9bcd6aef..c037b218 100644 --- a/recipes/wip/liquid-dsp/recipe.toml +++ b/recipes/wip/liquid-dsp/recipe.toml @@ -1,6 +1,7 @@ #TODO probably wrong script, see https://github.com/jgaeddert/liquid-dsp#installation-and-dependencies [source] -tar = "https://github.com/jgaeddert/liquid-dsp/archive/refs/tags/v1.6.0.tar.gz" +git = "https://github.com/jgaeddert/liquid-dsp" +rev = "8bf87b6fe325d98c250d6911fa50518d14175d86" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/lowcharts/recipe.toml b/recipes/wip/lowcharts/recipe.toml index c5e143fa..5bc8fed1 100644 --- a/recipes/wip/lowcharts/recipe.toml +++ b/recipes/wip/lowcharts/recipe.toml @@ -1,5 +1,6 @@ #TODO compiled but not tested [source] -tar = "https://github.com/juan-leon/lowcharts/archive/refs/tags/v0.5.8.tar.gz" +git = "https://github.com/juan-leon/lowcharts" +rev = "94e3db44b5e20c155d4bf2348eb1293508772cdb" [build] template = "cargo" diff --git a/recipes/wip/lrdf/recipe.toml b/recipes/wip/lrdf/recipe.toml index ec2b8b87..0fdce42b 100644 --- a/recipes/wip/lrdf/recipe.toml +++ b/recipes/wip/lrdf/recipe.toml @@ -1,5 +1,7 @@ #TODO not compiled or tested [source] -tar = "https://github.com/x42/LRDF/archive/refs/tags/0.5.1-rg.tar.gz" +git = "https://github.com/x42/LRDF" +rev = "e61f7aa4a1e240a884e3a0cb4b2db65046cfcaa6" +rev = " [build] template = "configure" diff --git a/recipes/wip/lsd/recipe.toml b/recipes/wip/lsd/recipe.toml index c15c48e0..1ffc94fc 100644 --- a/recipes/wip/lsd/recipe.toml +++ b/recipes/wip/lsd/recipe.toml @@ -1,5 +1,6 @@ #TODO users crate error [source] -tar = "https://github.com/lsd-rs/lsd/archive/refs/tags/0.23.1.tar.gz" +git = "https://github.com/lsd-rs/lsd" +rev = "9b8ed0ef732bd0cfc0f16c0cdb0040bcff2936d5" [build] template = "cargo" diff --git a/recipes/wip/luxcorerender/recipe.toml b/recipes/wip/luxcorerender/recipe.toml index 8ae64108..dd3d10d6 100644 --- a/recipes/wip/luxcorerender/recipe.toml +++ b/recipes/wip/luxcorerender/recipe.toml @@ -1,7 +1,8 @@ #TODO missing script for CMake, see https://wiki.luxcorerender.org/Compiling_LuxCore #TODO probably missing dependencies [source] -tar = "https://github.com/LuxCoreRender/LuxCore/archive/refs/tags/luxcorerender_v2.6.tar.gz" +git = "https://github.com/LuxCoreRender/LuxCore" +rev = "c8f10e9ddf5171fa705782a3da3f48123f96a4cb" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/lychee/recipe.toml b/recipes/wip/lychee/recipe.toml index dd97a379..514b1af2 100644 --- a/recipes/wip/lychee/recipe.toml +++ b/recipes/wip/lychee/recipe.toml @@ -1,6 +1,7 @@ #TODO compilation error (after an update on tokio and a patch on ring) [source] -tar = "https://github.com/lycheeverse/lychee/archive/refs/tags/v0.13.0.tar.gz" +git = "https://github.com/lycheeverse/lychee" +rev = "75e80190fb39abd52ceabacce1073784c7bbaa5c" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/lz4/recipe.toml b/recipes/wip/lz4/recipe.toml index f95ddbcd..c3a62ca5 100644 --- a/recipes/wip/lz4/recipe.toml +++ b/recipes/wip/lz4/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for "make", see https://github.com/lz4/lz4#installation [source] -tar = "https://github.com/lz4/lz4/archive/refs/tags/v1.9.4.tar.gz" +git = "https://github.com/lz4/lz4" +rev = "5ff839680134437dbf4678f3d0c7b371d84f4964" [build] template = "custom" diff --git a/recipes/wip/macchina/recipe.toml b/recipes/wip/macchina/recipe.toml index 9b6de07d..75d4f547 100644 --- a/recipes/wip/macchina/recipe.toml +++ b/recipes/wip/macchina/recipe.toml @@ -1,6 +1,7 @@ #TODO Compilation error [source] -tar = "https://github.com/Macchina-CLI/macchina/archive/refs/tags/v6.1.8.tar.gz" +git = "https://github.com/Macchina-CLI/macchina" +rev = "f228e72bd6a84bb18c26f1665c412cf206d425a3" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/magic-wormhole-rs/recipe.toml b/recipes/wip/magic-wormhole-rs/recipe.toml index de80a0e4..c711b975 100644 --- a/recipes/wip/magic-wormhole-rs/recipe.toml +++ b/recipes/wip/magic-wormhole-rs/recipe.toml @@ -1,6 +1,7 @@ #TODO async-tar crate error [source] -tar = "https://github.com/magic-wormhole/magic-wormhole.rs/archive/refs/tags/0.6.0.tar.gz" +git = "https://github.com/magic-wormhole/magic-wormhole.rs" +rev = "8a8cba4ba70df6be258497d7deb784d00a098c43" [build] template = "custom" script = """ diff --git a/recipes/wip/mame/recipe.toml b/recipes/wip/mame/recipe.toml index 13e404f1..2e7ef6eb 100644 --- a/recipes/wip/mame/recipe.toml +++ b/recipes/wip/mame/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for "make", see https://docs.mamedev.org/initialsetup/compilingmame.html [source] -tar = "https://github.com/mamedev/mame/archive/refs/tags/mame0261.tar.gz" +git = "https://github.com/mamedev/mame" +rev = "ca50094e8d5467aed7a18c718cdff8903e1bfe27" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/mandy/recipe.toml b/recipes/wip/mandy/recipe.toml index 066078e6..4fa0e400 100644 --- a/recipes/wip/mandy/recipe.toml +++ b/recipes/wip/mandy/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/angeldollface/mandy/archive/refs/tags/v.0.3.3.tar.gz" +git = "https://github.com/angeldollface/mandy" +rev = "a64f20d0386af628af2662ed2a1e72faf9efe355" [build] template = "cargo" diff --git a/recipes/wip/mask/recipe.toml b/recipes/wip/mask/recipe.toml index 54996308..31f440fd 100644 --- a/recipes/wip/mask/recipe.toml +++ b/recipes/wip/mask/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/jacobdeichert/mask/archive/refs/tags/mask/0.11.4.tar.gz" +git = "https://github.com/jacobdeichert/mask" +rev = "a082ee0e5c0a87ccd2447d569fe3a055222864c3" [build] template = "cargo" diff --git a/recipes/wip/matui/recipe.toml b/recipes/wip/matui/recipe.toml index f255bdec..7ace36a1 100644 --- a/recipes/wip/matui/recipe.toml +++ b/recipes/wip/matui/recipe.toml @@ -1,6 +1,7 @@ #TODO xdg-home crate error [source] -tar = "https://github.com/pkulak/matui/archive/refs/tags/v0.4.4.tar.gz" +git = "https://github.com/pkulak/matui" +rev = "44397982508666e3abd3b69b401dee9496bba2d6" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/mbedtls/recipe.toml b/recipes/wip/mbedtls/recipe.toml index 5163d99d..efb6a3f5 100644 --- a/recipes/wip/mbedtls/recipe.toml +++ b/recipes/wip/mbedtls/recipe.toml @@ -1,7 +1,8 @@ #TODO probaly wrong script, see https://mbed-tls.readthedocs.io/en/latest/getting_started/building/#building-with-cmake # They say that the CMake method is better than GNU make [source] -tar = "https://github.com/Mbed-TLS/mbedtls/archive/refs/tags/v3.5.1.tar.gz" +git = "https://github.com/Mbed-TLS/mbedtls" +rev = "edb8fec9882084344a314368ac7fd957a187519c" [build] template = "custom" script = """ diff --git a/recipes/wip/mcfly/recipe.toml b/recipes/wip/mcfly/recipe.toml index 4f0036e4..9d76c251 100644 --- a/recipes/wip/mcfly/recipe.toml +++ b/recipes/wip/mcfly/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/cantino/mcfly/archive/refs/tags/v0.8.1.tar.gz" +git = "https://github.com/cantino/mcfly" +rev = "2bddd8bd83a2011a2ddaf3f00d66346673672644" [build] template = "cargo" diff --git a/recipes/wip/mdbook/recipe.toml b/recipes/wip/mdbook/recipe.toml index 31202912..e989204b 100644 --- a/recipes/wip/mdbook/recipe.toml +++ b/recipes/wip/mdbook/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/rust-lang/mdBook/archive/refs/tags/v0.4.35.tar.gz" +git = "https://github.com/rust-lang/mdBook" +rev = "b7f46213c7df8f499eca0c82e7b41804cc15e369" [build] template = "cargo" diff --git a/recipes/wip/melonds/recipe.toml b/recipes/wip/melonds/recipe.toml index ec70edb7..8fcde47e 100644 --- a/recipes/wip/melonds/recipe.toml +++ b/recipes/wip/melonds/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for CMake, see https://github.com/melonDS-emu/melonDS#linux [source] -tar = "https://github.com/melonDS-emu/melonDS/archive/refs/tags/0.9.5.tar.gz" +git = "https://github.com/melonDS-emu/melonDS" +rev = "430de6b2702bb93faa8c2004aff3fbd084db4a1e" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/mimalloc/recipe.toml b/recipes/wip/mimalloc/recipe.toml index ef6daeff..960c6168 100644 --- a/recipes/wip/mimalloc/recipe.toml +++ b/recipes/wip/mimalloc/recipe.toml @@ -1,6 +1,7 @@ #TODO probably wrong script, see https://github.com/microsoft/mimalloc#macos-linux-bsd-etc [source] -tar = "https://github.com/microsoft/mimalloc/archive/refs/tags/v2.1.2.tar.gz" +git = "https://github.com/microsoft/mimalloc" +rev = "43ce4bd7fd34bcc730c1c7471c99995597415488" [build] template = "custom" script = """ diff --git a/recipes/wip/minetest-data/recipe.toml b/recipes/wip/minetest-data/recipe.toml index a05eb2fe..e02d822f 100644 --- a/recipes/wip/minetest-data/recipe.toml +++ b/recipes/wip/minetest-data/recipe.toml @@ -1,6 +1,7 @@ #TODO Not tested [source] -tar = "https://github.com/minetest/minetest_game/archive/refs/tags/5.7.0.tar.gz" +git = "https://github.com/minetest/minetest_game" +rev = "b9c089474cc343b37f90cb8cefc4b5553af2e9ea" [build] template = "custom" script = """ diff --git a/recipes/wip/miniaudicle/recipe.toml b/recipes/wip/miniaudicle/recipe.toml index fae5ff20..7cfa2037 100644 --- a/recipes/wip/miniaudicle/recipe.toml +++ b/recipes/wip/miniaudicle/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for "make", see https://github.com/ccrma/miniAudicle#linux [source] -tar = "https://github.com/ccrma/miniAudicle/archive/refs/tags/chuck-1.5.1.8.tar.gz" +git = "https://github.com/ccrma/miniAudicle" +rev = "3ef25e881cec9ee823d9cf93346c2d6feb089007" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/mnn/recipe.toml b/recipes/wip/mnn/recipe.toml index 332f080c..e23260da 100644 --- a/recipes/wip/mnn/recipe.toml +++ b/recipes/wip/mnn/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for CMake, lacking English build instructions [source] -tar = "https://github.com/alibaba/MNN/archive/refs/tags/2.7.1.tar.gz" +git = "https://github.com/alibaba/MNN" +rev = "1ea55f467fb231655cf1e08f77d4a0f1043c4c29" [build] template = "custom" diff --git a/recipes/wip/mongodb6/recipe.toml b/recipes/wip/mongodb6/recipe.toml index b0f8a054..aed11b08 100644 --- a/recipes/wip/mongodb6/recipe.toml +++ b/recipes/wip/mongodb6/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for SCons, see https://github.com/mongodb/mongo/blob/master/docs/building.md [source] -tar = "https://github.com/mongodb/mongo/archive/refs/tags/r6.0.12.tar.gz" +git = "https://github.com/mongodb/mongo" +branch = "v6.0" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/mongodb7/recipe.toml b/recipes/wip/mongodb7/recipe.toml index 26644c14..69d167b5 100644 --- a/recipes/wip/mongodb7/recipe.toml +++ b/recipes/wip/mongodb7/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for SCons, see https://github.com/mongodb/mongo/blob/master/docs/building.md [source] -tar = "https://github.com/mongodb/mongo/archive/refs/tags/r7.1.1.tar.gz" +git = "https://github.com/mongodb/mongo" +branch = "v7.2" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/monolith/recipe.toml b/recipes/wip/monolith/recipe.toml index 315d841a..4d028c7a 100644 --- a/recipes/wip/monolith/recipe.toml +++ b/recipes/wip/monolith/recipe.toml @@ -1,6 +1,7 @@ #TODO weird OpenSSL error on compilation (using cargo update) [source] -tar = "https://github.com/Y2Z/monolith/archive/refs/tags/v2.7.0.tar.gz" +git = "https://github.com/Y2Z/monolith" +rev = "1c71e708e1e343ac2bace250e698966abbba1568" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/moosefs/recipe.toml b/recipes/wip/moosefs/recipe.toml index eaea8f28..d9936b70 100644 --- a/recipes/wip/moosefs/recipe.toml +++ b/recipes/wip/moosefs/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for building, see https://github.com/moosefs/moosefs#source-code [source] -tar = "https://github.com/moosefs/moosefs/archive/refs/tags/v3.0.117.tar.gz" +git = "https://github.com/moosefs/moosefs" +rev = "79bca600d6ddfecfcb29af2fc6632b4e3d00f1a5" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/morty/recipe.toml b/recipes/wip/morty/recipe.toml index 64aff702..fd3c251f 100644 --- a/recipes/wip/morty/recipe.toml +++ b/recipes/wip/morty/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/pulp-platform/morty/archive/refs/tags/v0.9.0.tar.gz" +git = "https://github.com/pulp-platform/morty" +rev = "a1a5b483fabc8b119a78f3c5b1921e8d6510720d" [build] template = "cargo" diff --git a/recipes/wip/motus/recipe.toml b/recipes/wip/motus/recipe.toml index 2e881aca..2375828b 100644 --- a/recipes/wip/motus/recipe.toml +++ b/recipes/wip/motus/recipe.toml @@ -1,5 +1,6 @@ #TODO x11rb crate error [source] -tar = "https://github.com/oleiade/motus/archive/refs/tags/v0.2.0.tar.gz" +git = "https://github.com/oleiade/motus" +rev = "318b33e070995f50ccd28df2c319d55bd6116a2d" [build] template = "cargo" diff --git a/recipes/wip/mprocs/recipe.toml b/recipes/wip/mprocs/recipe.toml index f60eb245..91fa7633 100644 --- a/recipes/wip/mprocs/recipe.toml +++ b/recipes/wip/mprocs/recipe.toml @@ -1,6 +1,7 @@ #TODO termios/ioctl-rs crate error [source] -tar = "https://github.com/pvolok/mprocs/archive/refs/tags/v0.6.4.tar.gz" +git = "https://github.com/pvolok/mprocs" +rev = "71b65984dba7c768b383544cd7829ab099b965a9" [build] template = "custom" script = """ diff --git a/recipes/wip/mpv/recipe.toml b/recipes/wip/mpv/recipe.toml index 660201cc..1f6ebd58 100644 --- a/recipes/wip/mpv/recipe.toml +++ b/recipes/wip/mpv/recipe.toml @@ -1,7 +1,8 @@ #TODO missing script for Meson (use system libraries), see https://github.com/mpv-player/mpv#compilation #TODO missing dependencies [source] -tar = "https://github.com/mpv-player/mpv/archive/refs/tags/v0.37.0.tar.gz" +git = "https://github.com/mpv-player/mpv" +rev = "818ce7c51a6b9179307950e919983e0909942098" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/ncspot/recipe.toml b/recipes/wip/ncspot/recipe.toml index d91fc803..3e08ba47 100644 --- a/recipes/wip/ncspot/recipe.toml +++ b/recipes/wip/ncspot/recipe.toml @@ -1,6 +1,7 @@ #TODO not compiled or tested [source] -tar = "https://github.com/hrkfdn/ncspot/archive/refs/tags/v0.13.4.tar.gz" +git = "https://github.com/hrkfdn/ncspot" +rev = "92e0852b3796601f406ebfdd697635ea63566a31" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/neofetch/recipe.toml b/recipes/wip/neofetch/recipe.toml index aeb3584b..d53772fe 100644 --- a/recipes/wip/neofetch/recipe.toml +++ b/recipes/wip/neofetch/recipe.toml @@ -1,6 +1,7 @@ #TODO Add Redox OS on the Bash script [source] -tar = "https://github.com/dylanaraps/neofetch/archive/refs/tags/7.1.0.tar.gz" +git = "https://github.com/dylanaraps/neofetch" +rev = "60d07dee6b76769d8c487a40639fb7b5a1a7bc85" [build] template = "custom" script = """ diff --git a/recipes/wip/neovide/recipe.toml b/recipes/wip/neovide/recipe.toml index 7dfe0c74..34ae4a2a 100644 --- a/recipes/wip/neovide/recipe.toml +++ b/recipes/wip/neovide/recipe.toml @@ -1,6 +1,7 @@ #TODO Make neovim work [source] -tar = "https://github.com/neovide/neovide/archive/refs/tags/0.10.4.tar.gz" +git = "https://github.com/neovide/neovide" +rev = "113955bb68bf6715c784ea0b7ee75011c55471c9" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/neovim/recipe.toml b/recipes/wip/neovim/recipe.toml index fbc0112d..205af461 100644 --- a/recipes/wip/neovim/recipe.toml +++ b/recipes/wip/neovim/recipe.toml @@ -1,6 +1,7 @@ #TODO probably wrong script, see https://github.com/neovim/neovim/wiki/Installing-Neovim#install-from-source [source] -tar = "https://github.com/neovim/neovim/archive/refs/tags/v0.9.0.tar.gz" +git = "https://github.com/neovim/neovim" +rev = "d772f697a281ce9c58bf933997b87c7f27428a60" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/ninja-build/recipe.toml b/recipes/wip/ninja-build/recipe.toml index 3287f198..badcc36c 100644 --- a/recipes/wip/ninja-build/recipe.toml +++ b/recipes/wip/ninja-build/recipe.toml @@ -1,6 +1,7 @@ #TODO probably wrong script, see https://github.com/ninja-build/ninja#building-ninja-itself [source] -tar = "https://github.com/ninja-build/ninja/archive/refs/tags/v1.11.1.tar.gz" +git = "https://github.com/ninja-build/ninja" +rev = "a524bf3f6bacd1b4ad85d719eed2737d8562f27a" [build] template = "custom" script = """ diff --git a/recipes/wip/nix/recipe.toml b/recipes/wip/nix/recipe.toml index 85fb911e..33c9fab2 100644 --- a/recipes/wip/nix/recipe.toml +++ b/recipes/wip/nix/recipe.toml @@ -1,6 +1,7 @@ #TODO make dependencies work [source] -tar = "https://github.com/NixOS/nix/archive/refs/tags/2.19.2.tar.gz" +git = "https://github.com/NixOS/nix" +rev = "50f8f1c8bc019a4c0fd098b9ac674b94cfc6af0d" [build] template = "custom" dependencies = [ From 1f93a007fb78e2a60f04837bc5c79b43b0d89e0e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 18 Dec 2023 23:12:30 +0000 Subject: [PATCH 1245/3180] update recipes --- recipes/wip/novops/recipe.toml | 3 ++- recipes/wip/nsh/recipe.toml | 3 ++- recipes/wip/ntpd-rs/recipe.toml | 3 ++- recipes/wip/numbat/recipe.toml | 3 ++- recipes/wip/obs-studio/recipe.toml | 3 ++- recipes/wip/okteta/recipe.toml | 4 +++- recipes/wip/onednn/recipe.toml | 3 ++- recipes/wip/onefetch/recipe.toml | 3 ++- recipes/wip/onetbb/recipe.toml | 3 ++- recipes/wip/opencolorio/recipe.toml | 3 ++- recipes/wip/openexr/recipe.toml | 3 ++- recipes/wip/openimageio/recipe.toml | 3 ++- recipes/wip/openjdk11-headless/recipe.toml | 3 ++- recipes/wip/openjdk17-headless/recipe.toml | 3 ++- recipes/wip/openjdk21-headless/recipe.toml | 3 ++- recipes/wip/openjdk8-headless/recipe.toml | 3 ++- recipes/wip/openjpeg/recipe.toml | 3 ++- recipes/wip/opentoonz/recipe.toml | 3 ++- recipes/wip/openvkl/recipe.toml | 3 ++- recipes/wip/oranda/recipe.toml | 3 ++- recipes/wip/ospray-studio/recipe.toml | 3 ++- recipes/wip/ospray/recipe.toml | 3 ++- 22 files changed, 45 insertions(+), 22 deletions(-) diff --git a/recipes/wip/novops/recipe.toml b/recipes/wip/novops/recipe.toml index 259af756..d79cfa24 100644 --- a/recipes/wip/novops/recipe.toml +++ b/recipes/wip/novops/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for "make", see https://pierrebeucher.github.io/novops/install.html#from-source [source] -tar = "https://github.com/PierreBeucher/novops/archive/refs/tags/v0.9.0.tar.gz" +git = "https://github.com/PierreBeucher/novops" +rev = "e0891144108a889f18448b39aebe9d5a5ac2689d" [build] template = "custom" diff --git a/recipes/wip/nsh/recipe.toml b/recipes/wip/nsh/recipe.toml index 81df8640..b834d070 100644 --- a/recipes/wip/nsh/recipe.toml +++ b/recipes/wip/nsh/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/nuta/nsh/archive/refs/tags/v0.4.2.tar.gz" +git = "https://github.com/nuta/nsh" +rev = "93fa01cd5b5bba6f1c6aaabc218f3979d0ca2360" [build] template = "cargo" diff --git a/recipes/wip/ntpd-rs/recipe.toml b/recipes/wip/ntpd-rs/recipe.toml index b73fd1f9..94e7adde 100644 --- a/recipes/wip/ntpd-rs/recipe.toml +++ b/recipes/wip/ntpd-rs/recipe.toml @@ -1,5 +1,6 @@ #TODO configure the service [source] -tar = "https://github.com/pendulum-project/ntpd-rs/archive/refs/tags/v1.0.0.tar.gz" +git = "https://github.com/pendulum-project/ntpd-rs" +rev = "913700dc79420f6db5fe1f2110d3146d7f9addfe" [build] template = "cargo" diff --git a/recipes/wip/numbat/recipe.toml b/recipes/wip/numbat/recipe.toml index fad888cf..a6d40014 100644 --- a/recipes/wip/numbat/recipe.toml +++ b/recipes/wip/numbat/recipe.toml @@ -1,6 +1,7 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/sharkdp/numbat/archive/refs/tags/v1.8.0.tar.gz" +git = "https://github.com/sharkdp/numbat" +rev = "c04afb354608ef22e475d8d6fec955ca6e823d97" [build] template = "custom" script = """ diff --git a/recipes/wip/obs-studio/recipe.toml b/recipes/wip/obs-studio/recipe.toml index a5ebbae3..fa6c0362 100644 --- a/recipes/wip/obs-studio/recipe.toml +++ b/recipes/wip/obs-studio/recipe.toml @@ -1,7 +1,8 @@ #TODO missing script for CMake, see https://github.com/obsproject/obs-studio/wiki/Building-OBS-Studio #TODO maybe missing dependencies [source] -tar = "https://github.com/obsproject/obs-studio/archive/refs/tags/30.0.1.tar.gz" +git = "https://github.com/obsproject/obs-studio" +rev = "b45a73296f4f898e2ed455023020058075c30bab" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/okteta/recipe.toml b/recipes/wip/okteta/recipe.toml index ef41eab2..f8a23a85 100644 --- a/recipes/wip/okteta/recipe.toml +++ b/recipes/wip/okteta/recipe.toml @@ -1,5 +1,7 @@ #TODO missing script for CMake, lacking build instructions +#TODO missing dependencies [source] -tar = "https://invent.kde.org/utilities/okteta/-/archive/v0.26.13/okteta-v0.26.13.tar.bz2" +git = "https://invent.kde.org/utilities/okteta" +rev = "fb6150f2dce791c96b95a12ee0c74942c1774c05" [build] template = "custom" diff --git a/recipes/wip/onednn/recipe.toml b/recipes/wip/onednn/recipe.toml index 49bcaef2..e543b6f7 100644 --- a/recipes/wip/onednn/recipe.toml +++ b/recipes/wip/onednn/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for CMake, see https://oneapi-src.github.io/oneDNN/dev_guide_build.html#linux-macos [source] -tar = "https://github.com/oneapi-src/oneDNN/archive/refs/tags/v3.3.1.tar.gz" +git = "https://github.com/oneapi-src/oneDNN" +rev = "16720eaaab9557158ff77ebf3bc610e9682928d6" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/onefetch/recipe.toml b/recipes/wip/onefetch/recipe.toml index c5d2ef72..20c6ef1c 100644 --- a/recipes/wip/onefetch/recipe.toml +++ b/recipes/wip/onefetch/recipe.toml @@ -1,5 +1,6 @@ #TODO compiled (after a cargo update) but hangs during execution [source] -tar = "https://github.com/o2sh/onefetch/archive/refs/tags/2.18.1.tar.gz" +git = "https://github.com/o2sh/onefetch" +rev = "13376155f2f8197aa9d95830298ceee007413895" [build] template = "cargo" diff --git a/recipes/wip/onetbb/recipe.toml b/recipes/wip/onetbb/recipe.toml index ba2275ae..09b6be63 100644 --- a/recipes/wip/onetbb/recipe.toml +++ b/recipes/wip/onetbb/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for CMake, see https://github.com/oneapi-src/oneTBB/blob/master/INSTALL.md [source] -tar = "https://github.com/oneapi-src/oneTBB/archive/refs/tags/v2021.11.0.tar.gz" +git = "https://github.com/oneapi-src/oneTBB" +rev = "8b829acc65569019edb896c5150d427f288e8aba" [build] template = "custom" diff --git a/recipes/wip/opencolorio/recipe.toml b/recipes/wip/opencolorio/recipe.toml index b79bb0f0..cd8155c2 100644 --- a/recipes/wip/opencolorio/recipe.toml +++ b/recipes/wip/opencolorio/recipe.toml @@ -1,7 +1,8 @@ #TODO missing dependencies, see https://opencolorio.readthedocs.io/en/latest/quick_start/installation.html#dependencies #TODO missing script for CMake, see https://opencolorio.readthedocs.io/en/latest/quick_start/installation.html [source] -tar = "https://github.com/AcademySoftwareFoundation/OpenColorIO/archive/refs/tags/v2.3.1.tar.gz" +git = "https://github.com/AcademySoftwareFoundation/OpenColorIO" +rev = "92db29b9e7e298c4c2cc67c8a74944c2e7e716e5" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/openexr/recipe.toml b/recipes/wip/openexr/recipe.toml index 43ea9ae7..edd4304c 100644 --- a/recipes/wip/openexr/recipe.toml +++ b/recipes/wip/openexr/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for CMake, see https://openexr.com/en/latest/install.html#linux-macos [source] -tar = "https://github.com/AcademySoftwareFoundation/openexr/archive/refs/tags/v3.2.1.tar.gz" +git = "https://github.com/AcademySoftwareFoundation/openexr" +rev = "737b2707a001e67f3812d86a639c3d037efe2ea8" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/openimageio/recipe.toml b/recipes/wip/openimageio/recipe.toml index 22f7041d..b36b96f1 100644 --- a/recipes/wip/openimageio/recipe.toml +++ b/recipes/wip/openimageio/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for building, see https://github.com/AcademySoftwareFoundation/OpenImageIO/blob/master/INSTALL.md#building-openimageio-on-linux-or-os-x [source] -tar = "https://github.com/AcademySoftwareFoundation/OpenImageIO/archive/refs/tags/v2.5.5.0.tar.gz" +git = "https://github.com/AcademySoftwareFoundation/OpenImageIO" +rev = "5c29caab40a3913d415ac5d37cd84983e824c75b" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/openjdk11-headless/recipe.toml b/recipes/wip/openjdk11-headless/recipe.toml index 1c6649c4..bcf47eed 100644 --- a/recipes/wip/openjdk11-headless/recipe.toml +++ b/recipes/wip/openjdk11-headless/recipe.toml @@ -1,7 +1,8 @@ #TODO build instructions - https://github.com/openjdk/jdk11u/blob/master/doc/building.md #TODO not compiled or tested [source] -tar = "https://github.com/openjdk/jdk11u/archive/jdk-11.0.21+9.tar.gz" +git = "https://github.com/openjdk/jdk11u" +rev = "09b402a6bcecce976ee17ce358b0a90ea127ab69" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/openjdk17-headless/recipe.toml b/recipes/wip/openjdk17-headless/recipe.toml index 32ab3771..0b9cd066 100644 --- a/recipes/wip/openjdk17-headless/recipe.toml +++ b/recipes/wip/openjdk17-headless/recipe.toml @@ -1,7 +1,8 @@ #TODO build instructions - https://github.com/openjdk/jdk17u/blob/master/doc/building.md #TODO not compiled or tested [source] -tar = "https://github.com/openjdk/jdk17u/archive/jdk-17.0.9+8.tar.gz" +git = "https://github.com/openjdk/jdk17u" +rev = "b78a848cc7ae5787d9ec9ea0ce843cd63b06efec" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/openjdk21-headless/recipe.toml b/recipes/wip/openjdk21-headless/recipe.toml index 7038d338..b8ca03b2 100644 --- a/recipes/wip/openjdk21-headless/recipe.toml +++ b/recipes/wip/openjdk21-headless/recipe.toml @@ -1,7 +1,8 @@ #TODO build instructions - https://github.com/openjdk/jdk21u/blob/master/doc/building.md #TODO not compiled or tested [source] -tar = "https://github.com/openjdk/jdk21u/archive/jdk-21+35.tar.gz" +git = "https://github.com/openjdk/jdk21u" +rev = "060c4f7589e7f13febd402f4dac3320f4c032b08" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/openjdk8-headless/recipe.toml b/recipes/wip/openjdk8-headless/recipe.toml index 9b8d9180..9a8fb93a 100644 --- a/recipes/wip/openjdk8-headless/recipe.toml +++ b/recipes/wip/openjdk8-headless/recipe.toml @@ -2,7 +2,8 @@ #TODO not compiled or tested #TODO build it in headless mode [source] -tar = "https://github.com/openjdk/jdk8u/archive/refs/tags/jdk8u392-b08.tar.gz" +git = "https://github.com/openjdk/jdk8u" +rev = "9c9d6b267c41e4c713cacc41befb66007cdb2601" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/openjpeg/recipe.toml b/recipes/wip/openjpeg/recipe.toml index e1fe2624..de04008a 100644 --- a/recipes/wip/openjpeg/recipe.toml +++ b/recipes/wip/openjpeg/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for CMake, see https://github.com/uclouvain/openjpeg/blob/master/INSTALL.md [source] -tar = "https://github.com/uclouvain/openjpeg/archive/refs/tags/v2.5.0.tar.gz" +git = "https://github.com/uclouvain/openjpeg" +rev = "a5891555eb49ed7cc26b2901ea680acda136d811" [build] template = "custom" diff --git a/recipes/wip/opentoonz/recipe.toml b/recipes/wip/opentoonz/recipe.toml index 5fa0ed3e..029a3153 100644 --- a/recipes/wip/opentoonz/recipe.toml +++ b/recipes/wip/opentoonz/recipe.toml @@ -1,7 +1,8 @@ #TODO probably wrong script, see https://github.com/opentoonz/opentoonz/blob/master/doc/how_to_build_linux.md #TODO missing dependencies [source] -tar = "https://github.com/opentoonz/opentoonz/archive/refs/tags/v1.7.1.tar.gz" +git = "https://github.com/opentoonz/opentoonz" +rev = "dd4cb36142ebf65a2aa74ff8575002863d3e17fc" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/openvkl/recipe.toml b/recipes/wip/openvkl/recipe.toml index 553089ce..ddad6779 100644 --- a/recipes/wip/openvkl/recipe.toml +++ b/recipes/wip/openvkl/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for CMake, see https://github.com/openvkl/openvkl#building-open-vkl-from-source [source] -tar = "https://github.com/openvkl/openvkl/archive/refs/tags/v2.0.0.tar.gz" +git = "https://github.com/openvkl/openvkl" +rev = "712bdb8035487606096d7af90a4c9bde5503515d" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/oranda/recipe.toml b/recipes/wip/oranda/recipe.toml index 4962d59f..5ccb101b 100644 --- a/recipes/wip/oranda/recipe.toml +++ b/recipes/wip/oranda/recipe.toml @@ -1,5 +1,6 @@ #TODO camino crate error (after a patch on the ring crate) [source] -tar = "https://github.com/axodotdev/oranda/archive/refs/tags/v0.3.1.tar.gz" +git = "https://github.com/axodotdev/oranda" +rev = "11790dd3fd16029b2095c5ea97efc9f6a41e68ef" [build] template = "cargo" diff --git a/recipes/wip/ospray-studio/recipe.toml b/recipes/wip/ospray-studio/recipe.toml index 301dafc6..b3c81215 100644 --- a/recipes/wip/ospray-studio/recipe.toml +++ b/recipes/wip/ospray-studio/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for CMake, see https://github.com/ospray/ospray_studio#standard-cmake-build [source] -tar = "https://github.com/ospray/ospray_studio/archive/refs/tags/v0.13.0.tar.gz" +git = "https://github.com/ospray/ospray_studio" +rev = "d2c83a67c841f1329f47cf9648a56b3dacbcdcaa" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/ospray/recipe.toml b/recipes/wip/ospray/recipe.toml index 96014313..0003178a 100644 --- a/recipes/wip/ospray/recipe.toml +++ b/recipes/wip/ospray/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for CMake, see https://github.com/ospray/OSPRay#building-and-finding-ospray [source] -tar = "https://github.com/ospray/OSPRay/archive/v3.0.0.tar.gz" +git = "https://github.com/ospray/OSPRay" +rev = "66fa8108485a8a92ff31ad2e06081bbaf391bc26" [build] template = "custom" dependencies = [ From 8eace34f143b505f69b12de041782b09dcdb971f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 19 Dec 2023 01:50:14 +0000 Subject: [PATCH 1246/3180] update recipes --- recipes/wip/ouch/recipe.toml | 5 +++-- recipes/wip/oxipng/recipe.toml | 3 ++- recipes/wip/parabolic/recipe.toml | 3 ++- recipes/wip/pdu/recipe.toml | 3 ++- recipes/wip/pipewire/recipe.toml | 3 ++- recipes/wip/pixcil/recipe.toml | 3 ++- recipes/wip/pixi/recipe.toml | 3 ++- recipes/wip/pjsip/recipe.toml | 3 ++- recipes/wip/please/recipe.toml | 3 ++- recipes/wip/porsmo/recipe.toml | 3 ++- recipes/wip/presenterm/recipe.toml | 3 ++- recipes/wip/primesieve/recipe.toml | 3 ++- recipes/wip/procs/recipe.toml | 3 ++- recipes/wip/projections/recipe.toml | 3 ++- recipes/wip/projectm/recipe.toml | 3 ++- recipes/wip/pueue/recipe.toml | 3 ++- recipes/wip/pystring/recipe.toml | 3 ++- recipes/wip/qmcpack/recipe.toml | 3 ++- recipes/wip/qrrs/recipe.toml | 3 ++- recipes/wip/qv/recipe.toml | 3 ++- recipes/wip/rage/recipe.toml | 3 ++- recipes/wip/rattler-build/recipe.toml | 3 ++- recipes/wip/raylib/recipe.toml | 3 ++- recipes/wip/recdec/recipe.toml | 3 ++- recipes/wip/redis/recipe.toml | 3 ++- recipes/wip/release-plz/recipe.toml | 3 ++- recipes/wip/renderdoc/recipe.toml | 3 ++- recipes/wip/rioterm/recipe.toml | 3 ++- recipes/wip/rip/recipe.toml | 2 +- recipes/wip/rnr/recipe.toml | 3 ++- recipes/wip/rocksdb/recipe.toml | 3 ++- recipes/wip/rqbit/recipe.toml | 3 ++- recipes/wip/rr-debugger/recipe.toml | 3 ++- recipes/wip/ruff/recipe.toml | 3 ++- recipes/wip/ruplacer/recipe.toml | 3 ++- recipes/wip/russ/recipe.toml | 2 +- recipes/wip/rust-traverse/recipe.toml | 3 ++- recipes/wip/rustlings/recipe.toml | 3 ++- recipes/wip/rustscan/recipe.toml | 3 ++- recipes/wip/rusty-rain/recipe.toml | 2 +- recipes/wip/rustyvibes/recipe.toml | 3 ++- recipes/wip/rye/recipe.toml | 3 ++- recipes/wip/s3fs/recipe.toml | 3 ++- recipes/wip/samply/recipe.toml | 3 ++- recipes/wip/scotch/recipe.toml | 3 ++- recipes/wip/sdl2-pango/recipe.toml | 3 ++- recipes/wip/seatd/recipe.toml | 3 ++- recipes/wip/shaderc/recipe.toml | 3 ++- recipes/wip/shd/recipe.toml | 3 ++- recipes/wip/sheldon/recipe.toml | 3 ++- 50 files changed, 98 insertions(+), 51 deletions(-) diff --git a/recipes/wip/ouch/recipe.toml b/recipes/wip/ouch/recipe.toml index 38717464..6a39de56 100644 --- a/recipes/wip/ouch/recipe.toml +++ b/recipes/wip/ouch/recipe.toml @@ -1,6 +1,7 @@ -#TODO Broken bzip2 dependency +#TODO not compiled or tested [source] -tar = "https://github.com/ouch-org/ouch/archive/refs/tags/0.4.1.tar.gz" +git = "https://github.com/ouch-org/ouch" +rev = "796a03a41d1412dbd0f1cf973ca88c59a4614cc8" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/oxipng/recipe.toml b/recipes/wip/oxipng/recipe.toml index efd772b8..46de5363 100644 --- a/recipes/wip/oxipng/recipe.toml +++ b/recipes/wip/oxipng/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/shssoichiro/oxipng/archive/refs/tags/v9.0.0.tar.gz" +git = "https://github.com/shssoichiro/oxipng" +rev = "e1db84fd9745f3320c08b883e4942cd5b30b98a6" [build] template = "cargo" diff --git a/recipes/wip/parabolic/recipe.toml b/recipes/wip/parabolic/recipe.toml index 48f1f470..b431172f 100644 --- a/recipes/wip/parabolic/recipe.toml +++ b/recipes/wip/parabolic/recipe.toml @@ -1,7 +1,8 @@ #TODO missing script for Cake, see https://github.com/NickvisionApps/Parabolic/blob/main/CONTRIBUTING.md#developing-on-linux #TODO missing dependencies - https://github.com/NickvisionApps/Parabolic/blob/main/CONTRIBUTING.md#developing-on-linux [source] -tar = "https://github.com/NickvisionApps/Parabolic/archive/refs/tags/2023.9.1.tar.gz" +git = "https://github.com/NickvisionApps/Parabolic" +rev = "0aeaf7ab241f7405278352e448372c720ddb85f0" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/pdu/recipe.toml b/recipes/wip/pdu/recipe.toml index 6a923614..3c682b73 100644 --- a/recipes/wip/pdu/recipe.toml +++ b/recipes/wip/pdu/recipe.toml @@ -1,5 +1,6 @@ #TODO compiled but not tested [source] -tar = "https://github.com/KSXGitHub/parallel-disk-usage/archive/refs/tags/0.9.0.tar.gz" +git = "https://github.com/KSXGitHub/parallel-disk-usage" +rev = "2b59c3b8bf5b89c80ca478478a69e3e96c36af14" [build] template = "cargo" diff --git a/recipes/wip/pipewire/recipe.toml b/recipes/wip/pipewire/recipe.toml index 178679dd..d23a5eaa 100644 --- a/recipes/wip/pipewire/recipe.toml +++ b/recipes/wip/pipewire/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for Meson, see https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/INSTALL.md [source] -tar = "https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/1.0.0/pipewire-1.0.0.tar.bz2" +git = "https://gitlab.freedesktop.org/pipewire/pipewire" +rev = "4debdcd40b055b3eaa83a8f4443aa990ea566bfe" [build] template = "custom" diff --git a/recipes/wip/pixcil/recipe.toml b/recipes/wip/pixcil/recipe.toml index e518eb29..fe5261eb 100644 --- a/recipes/wip/pixcil/recipe.toml +++ b/recipes/wip/pixcil/recipe.toml @@ -1,5 +1,6 @@ #TODO require WebAssembly [source] -tar = "https://github.com/sile/pixcil/archive/refs/tags/0.5.0.tar.gz" +git = "https://github.com/sile/pixcil" +rev = "2309661977c3191f44e730c5a17639874e497b69" [build] template = "cargo" diff --git a/recipes/wip/pixi/recipe.toml b/recipes/wip/pixi/recipe.toml index 4d7715f3..0e50616e 100644 --- a/recipes/wip/pixi/recipe.toml +++ b/recipes/wip/pixi/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/prefix-dev/pixi/archive/refs/tags/v0.6.0.tar.gz" +git = "https://github.com/prefix-dev/pixi" +rev = "40aa081fd2039d40c33a20efd4887d82ac6b66ce" [build] template = "cargo" diff --git a/recipes/wip/pjsip/recipe.toml b/recipes/wip/pjsip/recipe.toml index a67735e6..56a4fe06 100644 --- a/recipes/wip/pjsip/recipe.toml +++ b/recipes/wip/pjsip/recipe.toml @@ -1,7 +1,8 @@ #TODO Not compiled or tested # customization - https://docs.pjsip.org/en/latest/get-started/posix/build_instructions.html [source] -tar = "https://github.com/pjsip/pjproject/archive/refs/tags/2.14.tar.gz" +git = "https://github.com/pjsip/pjproject" +rev = "08578e86eea120c5ab2ab1af5a18b7840120d87b" [build] template = "configure" dependencies = [ diff --git a/recipes/wip/please/recipe.toml b/recipes/wip/please/recipe.toml index b2e19a29..02747564 100644 --- a/recipes/wip/please/recipe.toml +++ b/recipes/wip/please/recipe.toml @@ -1,5 +1,6 @@ #TODO users crate error [source] -tar = "https://gitlab.com/edneville/please/-/archive/v0.5.4/please-v0.5.4.tar.gz" +git = "https://gitlab.com/edneville/please" +rev = "68c82e4be33f52a6fc4444fd28539e11d47d0602" [build] template = "cargo" diff --git a/recipes/wip/porsmo/recipe.toml b/recipes/wip/porsmo/recipe.toml index e68d2c79..19ce156e 100644 --- a/recipes/wip/porsmo/recipe.toml +++ b/recipes/wip/porsmo/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/ColorCookie-dev/porsmo/archive/refs/tags/0.2.4.tar.gz" +git = "https://github.com/ColorCookie-dev/porsmo" +rev = "bd7eab08d8856b7499ee13672dff9a9232994d23" [build] template = "cargo" diff --git a/recipes/wip/presenterm/recipe.toml b/recipes/wip/presenterm/recipe.toml index c37c764e..fd28caf9 100644 --- a/recipes/wip/presenterm/recipe.toml +++ b/recipes/wip/presenterm/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/mfontanini/presenterm/archive/refs/tags/0.2.0.tar.gz" +git = "https://github.com/mfontanini/presenterm" +rev = "284db812aa876d43f3a7d7e8b96f75c72a9945fa" [build] template = "cargo" diff --git a/recipes/wip/primesieve/recipe.toml b/recipes/wip/primesieve/recipe.toml index 7a1fa564..566e94a2 100644 --- a/recipes/wip/primesieve/recipe.toml +++ b/recipes/wip/primesieve/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for CMake, see https://github.com/kimwalisch/primesieve/blob/master/doc/BUILD.md [source] -tar = "https://github.com/kimwalisch/primesieve/archive/refs/tags/v11.1.tar.gz" +git = "https://github.com/kimwalisch/primesieve" +rev = "f3114488ddded8edf2c201e31ad308ed9e6a9f78" [build] template = "custom" diff --git a/recipes/wip/procs/recipe.toml b/recipes/wip/procs/recipe.toml index 17e3d418..ff187c49 100644 --- a/recipes/wip/procs/recipe.toml +++ b/recipes/wip/procs/recipe.toml @@ -1,5 +1,6 @@ #TODO socket and pipe compilation errors [source] -tar = "https://github.com/dalance/procs/archive/refs/tags/v0.14.0.tar.gz" +git = "https://github.com/dalance/procs" +rev = "0378206ddc8635d37d23c53afc0189c987daeb1d" [build] template = "cargo" diff --git a/recipes/wip/projections/recipe.toml b/recipes/wip/projections/recipe.toml index 68c19053..6ff8d106 100644 --- a/recipes/wip/projections/recipe.toml +++ b/recipes/wip/projections/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for "make", see https://github.com/charmplusplus/projections#compiling-projections [source] -tar = "https://github.com/charmplusplus/projections/archive/refs/tags/7.0.0.tar.gz" +git = "https://github.com/charmplusplus/projections" +rev = "831b63af68f325c64dac307d9d2b5b07d9a21caa" [build] template = "custom" diff --git a/recipes/wip/projectm/recipe.toml b/recipes/wip/projectm/recipe.toml index debfb95a..1240f177 100644 --- a/recipes/wip/projectm/recipe.toml +++ b/recipes/wip/projectm/recipe.toml @@ -1,6 +1,7 @@ #TODO Probably wrong script, see https://github.com/projectM-visualizer/projectm/wiki/Building-libprojectM#build-and-install-projectm [source] -tar = "https://github.com/projectM-visualizer/projectm/archive/refs/tags/v4.0.0.tar.gz" +git = "https://github.com/projectM-visualizer/projectm" +rev = "422af469731559c32c93e9513cebf2fe6c2fec78" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/pueue/recipe.toml b/recipes/wip/pueue/recipe.toml index be79e148..292d5e42 100644 --- a/recipes/wip/pueue/recipe.toml +++ b/recipes/wip/pueue/recipe.toml @@ -1,6 +1,7 @@ #TODO require a update on the tokio crate and a patch on the ring crate [source] -tar = "https://github.com/Nukesor/pueue/archive/refs/tags/v3.1.2.tar.gz" +git = "https://github.com/Nukesor/pueue" +rev = "37246432f177e50555f72efcef788ea094658451" [build] template = "custom" script = """ diff --git a/recipes/wip/pystring/recipe.toml b/recipes/wip/pystring/recipe.toml index 5f1c2780..d6e408ea 100644 --- a/recipes/wip/pystring/recipe.toml +++ b/recipes/wip/pystring/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for CMake, lacking build instructions [source] -tar = "https://github.com/imageworks/pystring/archive/refs/tags/v1.1.4.tar.gz" +git = "https://github.com/imageworks/pystring" +rev = "7d16bc814ccb4cad03c300dcb77440034caa84f7" [build] template = "custom" diff --git a/recipes/wip/qmcpack/recipe.toml b/recipes/wip/qmcpack/recipe.toml index a48f22ce..6e70f0cd 100644 --- a/recipes/wip/qmcpack/recipe.toml +++ b/recipes/wip/qmcpack/recipe.toml @@ -1,7 +1,8 @@ #TODO missing script for CMake, see https://qmcpack.readthedocs.io/en/develop/installation.html#building-with-cmake #TODO probably missing dependencies [source] -tar = "https://github.com/QMCPACK/qmcpack/archive/refs/tags/v3.17.1.tar.gz" +git = "https://github.com/QMCPACK/qmcpack" +rev = "9d0d968139fc33f71dbf9159f526dd7b47f10a3b" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/qrrs/recipe.toml b/recipes/wip/qrrs/recipe.toml index e4220794..abb65153 100644 --- a/recipes/wip/qrrs/recipe.toml +++ b/recipes/wip/qrrs/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/Lenivaya/qrrs/archive/refs/tags/v0.1.8.tar.gz" +git = "https://github.com/Lenivaya/qrrs" +rev = "74ea9129a808f199afb386a38df7492cc8c7d094" [build] template = "cargo" diff --git a/recipes/wip/qv/recipe.toml b/recipes/wip/qv/recipe.toml index f7658add..4fecd5cb 100644 --- a/recipes/wip/qv/recipe.toml +++ b/recipes/wip/qv/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/timvw/qv/archive/refs/tags/v0.8.4.tar.gz" +git = "https://github.com/timvw/qv" +rev = "af0063096c6264c72c7462f4eeb0c4a7e0b1d646" [build] template = "cargo" diff --git a/recipes/wip/rage/recipe.toml b/recipes/wip/rage/recipe.toml index 79ef957b..98e38bbc 100644 --- a/recipes/wip/rage/recipe.toml +++ b/recipes/wip/rage/recipe.toml @@ -1,6 +1,7 @@ #TODO compiled but not tested [source] -tar = "https://github.com/str4d/rage/archive/refs/tags/v0.9.2.tar.gz" +git = "https://github.com/str4d/rage" +rev = "e6180f1a2004008873b8e8d40110995ecec416c4" [build] template = "custom" script = """ diff --git a/recipes/wip/rattler-build/recipe.toml b/recipes/wip/rattler-build/recipe.toml index 56693d8b..b9804a3f 100644 --- a/recipes/wip/rattler-build/recipe.toml +++ b/recipes/wip/rattler-build/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/prefix-dev/rattler-build/archive/refs/tags/v0.4.0.tar.gz" +git = "https://github.com/prefix-dev/rattler-build" +rev = "4e554ccf35e50f598f9110bfc8c8be909de203da" [build] template = "cargo" diff --git a/recipes/wip/raylib/recipe.toml b/recipes/wip/raylib/recipe.toml index 5625e299..887258ee 100644 --- a/recipes/wip/raylib/recipe.toml +++ b/recipes/wip/raylib/recipe.toml @@ -1,6 +1,7 @@ #TODO probably wrong script, see https://github.com/raysan5/raylib/wiki/Working-on-GNU-Linux [source] -tar = "https://github.com/raysan5/raylib/archive/refs/tags/5.0.tar.gz" +git = "https://github.com/raysan5/raylib" +rev = "ae50bfa2cc569c0f8d5bc4315d39db64005b1b08" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/recdec/recipe.toml b/recipes/wip/recdec/recipe.toml index 4ce19297..9e1f1049 100644 --- a/recipes/wip/recdec/recipe.toml +++ b/recipes/wip/recdec/recipe.toml @@ -1,6 +1,7 @@ #TODO probably wrong script, see https://github.com/avast/retdec#process [source] -tar = "https://github.com/avast/retdec/archive/refs/tags/v5.0.tar.gz" +git = "https://github.com/avast/retdec" +rev = "53e55b4b26e9b843787f0e06d867441e32b1604e" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/redis/recipe.toml b/recipes/wip/redis/recipe.toml index 78d52ade..f86290f1 100644 --- a/recipes/wip/redis/recipe.toml +++ b/recipes/wip/redis/recipe.toml @@ -1,5 +1,6 @@ #TODO Missing script for "make", see https://redis.io/docs/install/install-redis/install-redis-from-source/ [source] -tar = "https://github.com/redis/redis/archive/7.2.0.tar.gz" +git = "https://github.com/redis/redis" +rev = "7f4bae817614988c43c3024402d16edcbf3b3277" [build] template = "custom" diff --git a/recipes/wip/release-plz/recipe.toml b/recipes/wip/release-plz/recipe.toml index 61a85afb..3e05dd15 100644 --- a/recipes/wip/release-plz/recipe.toml +++ b/recipes/wip/release-plz/recipe.toml @@ -1,6 +1,7 @@ #TODO openssl-sys crate error [source] -tar = "https://github.com/MarcoIeni/release-plz/archive/refs/tags/release-plz-v0.3.20.tar.gz" +git = "https://github.com/MarcoIeni/release-plz" +rev = "68baf26d77a887c3ad90e4ad75ce77d9788f2442" [build] dependencies = [ "openssl1", diff --git a/recipes/wip/renderdoc/recipe.toml b/recipes/wip/renderdoc/recipe.toml index b8b5b643..8c85c67e 100644 --- a/recipes/wip/renderdoc/recipe.toml +++ b/recipes/wip/renderdoc/recipe.toml @@ -1,6 +1,7 @@ #TODO probably wrong script, see https://github.com/baldurk/renderdoc/blob/v1.x/docs/CONTRIBUTING/Compiling.md#linux [source] -tar = "https://github.com/baldurk/renderdoc/archive/refs/tags/v1.29.tar.gz" +git = "https://github.com/baldurk/renderdoc" +rev = "5f95fb95a2a225a092372e7bd0bfd2073525d3ac" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/rioterm/recipe.toml b/recipes/wip/rioterm/recipe.toml index a33d8703..f2be2bcf 100644 --- a/recipes/wip/rioterm/recipe.toml +++ b/recipes/wip/rioterm/recipe.toml @@ -1,6 +1,7 @@ #TODO Need to make libxkbcommon work [source] -tar = "https://github.com/raphamorim/rio/archive/refs/tags/v0.0.25.tar.gz" +git = "https://github.com/raphamorim/rio" +rev = "ddd99a767b2c17bbf9aa8a00f6107acc488a04e8" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/rip/recipe.toml b/recipes/wip/rip/recipe.toml index 906364c6..c7c2fe93 100644 --- a/recipes/wip/rip/recipe.toml +++ b/recipes/wip/rip/recipe.toml @@ -1,5 +1,5 @@ #TODO compiled but not tested [source] -tar = "https://github.com/nivekuil/rip/archive/refs/tags/0.13.1.tar.gz" +git = "https://github.com/nivekuil/rip" [build] template = "cargo" diff --git a/recipes/wip/rnr/recipe.toml b/recipes/wip/rnr/recipe.toml index 333c71a9..ba84b817 100644 --- a/recipes/wip/rnr/recipe.toml +++ b/recipes/wip/rnr/recipe.toml @@ -1,5 +1,6 @@ #TODO compiled but not tested [source] -tar = "https://github.com/ismaelgv/rnr/archive/refs/tags/v0.4.2.tar.gz" +git = "https://github.com/ismaelgv/rnr" +rev = "dfdf644ea8a4084ec73a349de68ef063eb47028f" [build] template = "cargo" diff --git a/recipes/wip/rocksdb/recipe.toml b/recipes/wip/rocksdb/recipe.toml index 03a1d069..844a6494 100644 --- a/recipes/wip/rocksdb/recipe.toml +++ b/recipes/wip/rocksdb/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for "make", see https://github.com/facebook/rocksdb/blob/main/INSTALL.md [source] -tar = "https://github.com/facebook/rocksdb/archive/refs/tags/v8.8.1.tar.gz" +git = "https://github.com/facebook/rocksdb" +rev = "49ce8a1064dd1ad89117899839bf136365e49e79" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/rqbit/recipe.toml b/recipes/wip/rqbit/recipe.toml index 8ed10a16..26450e7f 100644 --- a/recipes/wip/rqbit/recipe.toml +++ b/recipes/wip/rqbit/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/ikatson/rqbit/archive/refs/tags/v4.0.0.tar.gz" +git = "https://github.com/ikatson/rqbit" +rev = "3dc2e3eace2fce7c448d7fcf8360fe0f312a29c7" [build] template = "cargo" diff --git a/recipes/wip/rr-debugger/recipe.toml b/recipes/wip/rr-debugger/recipe.toml index 6d6728bc..47c07bdf 100644 --- a/recipes/wip/rr-debugger/recipe.toml +++ b/recipes/wip/rr-debugger/recipe.toml @@ -1,6 +1,7 @@ #TODO probably wrong template, see https://github.com/rr-debugger/rr/wiki/Building-And-Installing [source] -tar = "https://github.com/rr-debugger/rr/archive/refs/tags/5.7.0.tar.gz" +git = "https://github.com/rr-debugger/rr" +rev = "7cf5a12dba5aaeea9efc5ad97176b07b5614e350" [build] template = "configure" dependencies = [ diff --git a/recipes/wip/ruff/recipe.toml b/recipes/wip/ruff/recipe.toml index 0f7192e1..55454e8c 100644 --- a/recipes/wip/ruff/recipe.toml +++ b/recipes/wip/ruff/recipe.toml @@ -1,6 +1,7 @@ #TODO nonsense rustc version requirement [source] -tar = "https://github.com/charliermarsh/ruff/archive/refs/tags/v0.0.270.tar.gz" +git = "https://github.com/charliermarsh/ruff" +rev = "c014622003e9b348310d7b7be862f6ccffae7137" [build] template = "custom" script = """ diff --git a/recipes/wip/ruplacer/recipe.toml b/recipes/wip/ruplacer/recipe.toml index 7db57e9c..ec9d79b3 100644 --- a/recipes/wip/ruplacer/recipe.toml +++ b/recipes/wip/ruplacer/recipe.toml @@ -1,5 +1,6 @@ #TODO compiled after cargo update, not tested [source] -tar = "https://github.com/your-tools/ruplacer/archive/refs/tags/v0.8.1.tar.gz" +git = "https://github.com/your-tools/ruplacer" +rev = "11531fc7ae15d63199ddd92bd2487384714b8884" [build] template = "cargo" diff --git a/recipes/wip/russ/recipe.toml b/recipes/wip/russ/recipe.toml index a1fae40b..11321b10 100644 --- a/recipes/wip/russ/recipe.toml +++ b/recipes/wip/russ/recipe.toml @@ -1,5 +1,5 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/ckampfe/russ" +git = "https://github.com/ckampfe/russ" [build] template = "cargo" diff --git a/recipes/wip/rust-traverse/recipe.toml b/recipes/wip/rust-traverse/recipe.toml index 0a727ed2..d3b7e100 100644 --- a/recipes/wip/rust-traverse/recipe.toml +++ b/recipes/wip/rust-traverse/recipe.toml @@ -1,5 +1,6 @@ #TODO trash crate error [source] -tar = "https://github.com/dmcg310/Rust-Traverse/archive/refs/tags/v1.0.0.tar.gz" +git = "https://github.com/dmcg310/Rust-Traverse" +rev = "6468f7b7f081a5168399ae46a3a88f89462fa47b" [build] template = "cargo" diff --git a/recipes/wip/rustlings/recipe.toml b/recipes/wip/rustlings/recipe.toml index ceb06c46..3c579661 100644 --- a/recipes/wip/rustlings/recipe.toml +++ b/recipes/wip/rustlings/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/rust-lang/rustlings/archive/refs/tags/5.6.1.tar.gz" +git = "https://github.com/rust-lang/rustlings" +rev = "9a743f80c57cc6bf27819589a8ddb5a5579ab1a4" [build] template = "cargo" diff --git a/recipes/wip/rustscan/recipe.toml b/recipes/wip/rustscan/recipe.toml index 571eca74..0cee287f 100644 --- a/recipes/wip/rustscan/recipe.toml +++ b/recipes/wip/rustscan/recipe.toml @@ -1,6 +1,7 @@ #TODO Make nmap work [source] -tar = "https://github.com/RustScan/RustScan/archive/refs/tags/2.1.1.tar.gz" +git = "https://github.com/RustScan/RustScan" +rev = "bd32f4ead4edd662633c1dd1f569132352ed9f04" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/rusty-rain/recipe.toml b/recipes/wip/rusty-rain/recipe.toml index 1adbe7d6..e7598f28 100644 --- a/recipes/wip/rusty-rain/recipe.toml +++ b/recipes/wip/rusty-rain/recipe.toml @@ -1,5 +1,5 @@ #TODO mio crate error [source] -tar = "https://github.com/cowboy8625/rusty-rain/archive/refs/tags/v0.3.6.tar.gz" +git = "https://github.com/cowboy8625/rusty-rain" [build] template = "cargo" diff --git a/recipes/wip/rustyvibes/recipe.toml b/recipes/wip/rustyvibes/recipe.toml index 4678a997..91785947 100644 --- a/recipes/wip/rustyvibes/recipe.toml +++ b/recipes/wip/rustyvibes/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/KunalBagaria/rustyvibes/archive/refs/tags/v1.0.9.tar.gz" +git = "https://github.com/KunalBagaria/rustyvibes" +rev = "f19fdf961ae602122ed7a2b95f570be0def79c34" [build] template = "cargo" diff --git a/recipes/wip/rye/recipe.toml b/recipes/wip/rye/recipe.toml index 5fccc579..5d88c6f8 100644 --- a/recipes/wip/rye/recipe.toml +++ b/recipes/wip/rye/recipe.toml @@ -1,6 +1,7 @@ #TODO openssl-sys crate error [source] -tar = "https://github.com/mitsuhiko/rye/archive/refs/tags/0.11.0.tar.gz" +git = "https://github.com/mitsuhiko/rye" +rev = "c003223d5db575276d3ef52d31590580f3b1e97f" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/s3fs/recipe.toml b/recipes/wip/s3fs/recipe.toml index a46a19cd..acf0d086 100644 --- a/recipes/wip/s3fs/recipe.toml +++ b/recipes/wip/s3fs/recipe.toml @@ -1,7 +1,8 @@ #TODO Not compiled or tested # build instructions - https://github.com/s3fs-fuse/s3fs-fuse/blob/master/COMPILATION.md [source] -tar = "https://github.com/s3fs-fuse/s3fs-fuse/archive/refs/tags/v1.93.tar.gz" +git = "https://github.com/s3fs-fuse/s3fs-fuse" +rev = "5371cd1468c84423729c334ac997f9621b797e9f" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/samply/recipe.toml b/recipes/wip/samply/recipe.toml index 52d05bb6..1487d3c8 100644 --- a/recipes/wip/samply/recipe.toml +++ b/recipes/wip/samply/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/mstange/samply/archive/refs/tags/samply-v0.11.0.tar.gz" +git = "https://github.com/mstange/samply" +rev = "0a3dd8b1af8f67b676e4c05e7b9846754644c0d7" [build] template = "cargo" diff --git a/recipes/wip/scotch/recipe.toml b/recipes/wip/scotch/recipe.toml index 277d77d4..5a01f407 100644 --- a/recipes/wip/scotch/recipe.toml +++ b/recipes/wip/scotch/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for CMake, see https://gitlab.inria.fr/scotch/scotch#installation #TODO probably missing dependencies [source] -tar = "https://gitlab.inria.fr/scotch/scotch/-/archive/v7.0.4/scotch-v7.0.4.tar.bz2" +git = "https://gitlab.inria.fr/scotch/scotch" +rev = "82ec87f558f4acb7ccb69a079f531be380504c92" [build] template = "custom" diff --git a/recipes/wip/sdl2-pango/recipe.toml b/recipes/wip/sdl2-pango/recipe.toml index 93e103cb..3e9cb3c7 100644 --- a/recipes/wip/sdl2-pango/recipe.toml +++ b/recipes/wip/sdl2-pango/recipe.toml @@ -1,6 +1,7 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/markuskimius/SDL2_Pango/archive/refs/tags/v2.1.5.tar.gz" +git = "https://github.com/markuskimius/SDL2_Pango" +rev = "3afd884fddf8d81dbe2c140135deea0c79de31c1" [build] template = "configure" dependencies = [ diff --git a/recipes/wip/seatd/recipe.toml b/recipes/wip/seatd/recipe.toml index 630f8e68..b3731c24 100644 --- a/recipes/wip/seatd/recipe.toml +++ b/recipes/wip/seatd/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for Meson, lacking build instructions [source] -tar = "https://git.sr.ht/~kennylevinsen/seatd/archive/0.8.0.tar.gz" +git = "https://git.sr.ht/~kennylevinsen/seatd" +rev = "3e9ef69f14f630a719dd464f3c90a7932f1c8296" [build] template = "custom" diff --git a/recipes/wip/shaderc/recipe.toml b/recipes/wip/shaderc/recipe.toml index b614143f..cbc9bb1e 100644 --- a/recipes/wip/shaderc/recipe.toml +++ b/recipes/wip/shaderc/recipe.toml @@ -1,6 +1,7 @@ #TODO Probably wrong script, see https://github.com/google/shaderc#getting-and-building-shaderc [source] -tar = "https://github.com/google/shaderc/archive/refs/tags/v2023.3.tar.gz" +git = "https://github.com/google/shaderc" +rev = "3882b16417077aa8eaa7b5775920e7ba4b8a224d" [build] template = "custom" script = """ diff --git a/recipes/wip/shd/recipe.toml b/recipes/wip/shd/recipe.toml index 1398bffb..0ea59075 100644 --- a/recipes/wip/shd/recipe.toml +++ b/recipes/wip/shd/recipe.toml @@ -1,6 +1,7 @@ #TODO make the smartmontools dependency work [source] -tar = "https://github.com/alttch/shd/archive/refs/tags/v0.1.5.tar.gz" +git = "https://github.com/alttch/shd" +rev = "81fd46a7b1b2423fb9a3e3223b5b5dac79e4eda5" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/sheldon/recipe.toml b/recipes/wip/sheldon/recipe.toml index b0e388fe..a147840b 100644 --- a/recipes/wip/sheldon/recipe.toml +++ b/recipes/wip/sheldon/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/rossmacarthur/sheldon/archive/refs/tags/0.7.3.tar.gz" +git = "https://github.com/rossmacarthur/sheldon" +rev = "9a56dcfc79c6e9f9bcf8480c162c50db013bb172" [build] template = "cargo" From f00ef6edd63bd2d4b6d3617aec15e49e5dce0ac9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 19 Dec 2023 02:34:13 +0000 Subject: [PATCH 1247/3180] update recipes --- recipes/wip/shellfirm/recipe.toml | 3 ++- recipes/wip/shokunin/recipe.toml | 3 ++- recipes/wip/simdjson/recipe.toml | 3 ++- recipes/wip/skim/recipe.toml | 3 ++- recipes/wip/sn0int/recipe.toml | 3 ++- recipes/wip/snappy/recipe.toml | 3 ++- recipes/wip/snes9x/recipe.toml | 3 ++- recipes/wip/sniffnet/recipe.toml | 3 ++- recipes/wip/spacer/recipe.toml | 3 ++- recipes/wip/specfem2d/recipe.toml | 3 ++- recipes/wip/specfem3d-globe/recipe.toml | 3 ++- recipes/wip/specfem3d/recipe.toml | 3 ++- recipes/wip/speedtest-rs/recipe.toml | 3 ++- recipes/wip/sprinkles/recipe.toml | 3 ++- recipes/wip/srsran-4g/recipe.toml | 3 ++- recipes/wip/srsran-project/recipe.toml | 3 ++- recipes/wip/sshx/recipe.toml | 2 +- recipes/wip/starship/recipe.toml | 3 ++- recipes/wip/stockfish/recipe.toml | 3 ++- recipes/wip/stremio/recipe.toml | 2 +- recipes/wip/stress-ng/recipe.toml | 3 ++- recipes/wip/sudo-rs/recipe.toml | 3 ++- recipes/wip/svg2pdf/recipe.toml | 3 ++- recipes/wip/svt-av1/recipe.toml | 3 ++- recipes/wip/svt-hevc/recipe.toml | 3 ++- recipes/wip/swc/recipe.toml | 2 +- recipes/wip/sws/recipe.toml | 3 ++- recipes/wip/t-rec/recipe.toml | 3 ++- recipes/wip/tauro-monitor/recipe.toml | 3 ++- recipes/wip/tealdeer/recipe.toml | 4 ++-- recipes/wip/termimage/recipe.toml | 3 ++- recipes/wip/termusic/recipe.toml | 3 ++- recipes/wip/thwack/recipe.toml | 3 ++- recipes/wip/tidb-server/recipe.toml | 3 ++- recipes/wip/tin-summer/recipe.toml | 2 +- recipes/wip/tiny/recipe.toml | 3 ++- recipes/wip/tnn/recipe.toml | 3 ++- recipes/wip/tobaru/recipe.toml | 3 ++- recipes/wip/topgrade/recipe.toml | 3 ++- recipes/wip/tori/recipe.toml | 3 ++- recipes/wip/tp-note/recipe.toml | 3 ++- recipes/wip/tplay/recipe.toml | 3 ++- recipes/wip/tracy/recipe.toml | 3 ++- recipes/wip/treq/recipe.toml | 3 ++- recipes/wip/trippy/recipe.toml | 3 ++- recipes/wip/ttyper/recipe.toml | 3 ++- recipes/wip/tui-journal/recipe.toml | 3 ++- recipes/wip/tv/recipe.toml | 3 ++- recipes/wip/typst/recipe.toml | 3 ++- recipes/wip/upscaler/recipe.toml | 3 ++- recipes/wip/uvg266/recipe.toml | 3 ++- 51 files changed, 98 insertions(+), 52 deletions(-) diff --git a/recipes/wip/shellfirm/recipe.toml b/recipes/wip/shellfirm/recipe.toml index 3e6d6223..5124bc6f 100644 --- a/recipes/wip/shellfirm/recipe.toml +++ b/recipes/wip/shellfirm/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/kaplanelad/shellfirm/archive/refs/tags/v0.2.7.tar.gz" +git = "https://github.com/kaplanelad/shellfirm" +rev = "0587f023a1d6b58e9fdb71d9a4e8d5460ee33c77" [build] template = "cargo" diff --git a/recipes/wip/shokunin/recipe.toml b/recipes/wip/shokunin/recipe.toml index a0d69876..72ec6183 100644 --- a/recipes/wip/shokunin/recipe.toml +++ b/recipes/wip/shokunin/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/sebastienrousseau/shokunin/archive/refs/tags/v0.0.20.tar.gz" +git = "https://github.com/sebastienrousseau/shokunin" +rev = "9592f12701fb0ef3bc298f4499d2787e24fca4f3" [build] template = "cargo" diff --git a/recipes/wip/simdjson/recipe.toml b/recipes/wip/simdjson/recipe.toml index e334ad47..5b8cda08 100644 --- a/recipes/wip/simdjson/recipe.toml +++ b/recipes/wip/simdjson/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for CMake, see https://github.com/simdjson/simdjson/blob/master/HACKING.md#usage-cmake-on-64-bit-platforms-like-linux-freebsd-or-macos [source] -tar = "https://github.com/simdjson/simdjson/archive/refs/tags/v3.6.0.tar.gz" +git = "https://github.com/simdjson/simdjson" +rev = "6060be2fdf62edf4a8f51a8b0883d57d09397b30" [build] template = "custom" diff --git a/recipes/wip/skim/recipe.toml b/recipes/wip/skim/recipe.toml index 1c9c12cd..12833f49 100644 --- a/recipes/wip/skim/recipe.toml +++ b/recipes/wip/skim/recipe.toml @@ -1,5 +1,6 @@ #TODO tuikit crate error [source] -tar = "https://github.com/lotabout/skim/archive/refs/tags/v0.10.4.tar.gz" +git = "https://github.com/lotabout/skim" +rev = "db9f194c12486343ae23b37781123ff0dbfaaf16" [build] template = "cargo" diff --git a/recipes/wip/sn0int/recipe.toml b/recipes/wip/sn0int/recipe.toml index d5ef0c60..8118d68d 100644 --- a/recipes/wip/sn0int/recipe.toml +++ b/recipes/wip/sn0int/recipe.toml @@ -1,6 +1,7 @@ #TODO SQLite is not working [source] -tar = "https://github.com/kpcyrd/sn0int/archive/refs/tags/v0.25.0.tar.gz" +git = "https://github.com/kpcyrd/sn0int" +rev = "b49aba5a8a6ae09c885c1aaee03fcfc9515fb42a" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/snappy/recipe.toml b/recipes/wip/snappy/recipe.toml index 2962d88f..d97d7422 100644 --- a/recipes/wip/snappy/recipe.toml +++ b/recipes/wip/snappy/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for CMake, see https://github.com/google/snappy#building [source] -tar = "https://github.com/google/snappy/archive/refs/tags/1.1.10.tar.gz" +git = "https://github.com/google/snappy" +rev = "dc05e026488865bc69313a68bcc03ef2e4ea8e83" [build] template = "custom" diff --git a/recipes/wip/snes9x/recipe.toml b/recipes/wip/snes9x/recipe.toml index a534c6a3..277836b8 100644 --- a/recipes/wip/snes9x/recipe.toml +++ b/recipes/wip/snes9x/recipe.toml @@ -1,6 +1,7 @@ #TODO probably wrong script, see https://github.com/snes9xgit/snes9x/wiki/Compiling [source] -tar = "https://github.com/snes9xgit/snes9x/archive/refs/tags/1.62.3.tar.gz" +git = "https://github.com/snes9xgit/snes9x" +rev = "8b82d487937d9ea39f7229d280c6f6686c415fe7" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/sniffnet/recipe.toml b/recipes/wip/sniffnet/recipe.toml index 2e1d214a..a325d23f 100644 --- a/recipes/wip/sniffnet/recipe.toml +++ b/recipes/wip/sniffnet/recipe.toml @@ -1,6 +1,7 @@ #TODO make the libpcap dependency work [source] -tar = "https://github.com/GyulyVGC/sniffnet/archive/refs/tags/v1.2.2.tar.gz" +git = "https://github.com/GyulyVGC/sniffnet" +rev = "4d24bab70a6195ed9a6aac0326720ecb34154e68" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/spacer/recipe.toml b/recipes/wip/spacer/recipe.toml index 2d931bfa..147ca92c 100644 --- a/recipes/wip/spacer/recipe.toml +++ b/recipes/wip/spacer/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/samwho/spacer/archive/refs/tags/v0.3.0.tar.gz" +git = "https://github.com/samwho/spacer" +rev = "9c63225e9b93e1aa8b63e64c180ffd05b7dd4b02" [build] template = "cargo" diff --git a/recipes/wip/specfem2d/recipe.toml b/recipes/wip/specfem2d/recipe.toml index 3dc74a29..f43f635e 100644 --- a/recipes/wip/specfem2d/recipe.toml +++ b/recipes/wip/specfem2d/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for GNU Autotools", see https://specfem2d.readthedocs.io/en/latest/02_getting_started/ [source] -tar = "https://github.com/SPECFEM/specfem2d/archive/refs/tags/v8.0.0.tar.gz" +git = "https://github.com/SPECFEM/specfem2d" +rev = "0bbc7858dcd0ac9c1c64a35a41c83fa7f6847205" [build] template = "custom" diff --git a/recipes/wip/specfem3d-globe/recipe.toml b/recipes/wip/specfem3d-globe/recipe.toml index 6ba691af..8192ae27 100644 --- a/recipes/wip/specfem3d-globe/recipe.toml +++ b/recipes/wip/specfem3d-globe/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for GNU Autotools, see https://specfem3d-globe.readthedocs.io/en/latest/02_getting_started/ [source] -tar = "https://github.com/SPECFEM/specfem3d_globe/archive/refs/tags/v8.0.0.tar.gz" +git = "https://github.com/SPECFEM/specfem3d_globe" +rev = "59f5e68c468c53a07011a795e6fa1650d6be0fd9" [build] template = "custom" diff --git a/recipes/wip/specfem3d/recipe.toml b/recipes/wip/specfem3d/recipe.toml index 7fde3ddd..7247949d 100644 --- a/recipes/wip/specfem3d/recipe.toml +++ b/recipes/wip/specfem3d/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for GNU Autotools, see https://specfem3d.readthedocs.io/en/latest/02_getting_started/ [source] -tar = "https://github.com/SPECFEM/specfem3d/archive/refs/tags/v4.0.0.tar.gz" +git = "https://github.com/SPECFEM/specfem3d" +rev = "c97d521a9a19ed41523837f161c70deacdb180cc" [build] template = "custom" diff --git a/recipes/wip/speedtest-rs/recipe.toml b/recipes/wip/speedtest-rs/recipe.toml index a9b3e715..5ef6625e 100644 --- a/recipes/wip/speedtest-rs/recipe.toml +++ b/recipes/wip/speedtest-rs/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/nelsonjchen/speedtest-rs/archive/refs/tags/v0.1.4.tar.gz" +git = "https://github.com/nelsonjchen/speedtest-rs" +rev = "b512fb824ddd663ddf862d6b38f78caa3791b502" [build] template = "cargo" diff --git a/recipes/wip/sprinkles/recipe.toml b/recipes/wip/sprinkles/recipe.toml index f91d5dc1..f364fd7d 100644 --- a/recipes/wip/sprinkles/recipe.toml +++ b/recipes/wip/sprinkles/recipe.toml @@ -1,5 +1,6 @@ #TODO Compiled but not tested [source] -tar = "https://github.com/KhalilOuali/sprinkles/archive/refs/tags/1.0.0.tar.gz" +git = "https://github.com/KhalilOuali/sprinkles" +rev = "8c30f5f8e63b8fa89692ed712c52c928b42a556a" [build] template = "cargo" diff --git a/recipes/wip/srsran-4g/recipe.toml b/recipes/wip/srsran-4g/recipe.toml index 167f26a9..841b4bb8 100644 --- a/recipes/wip/srsran-4g/recipe.toml +++ b/recipes/wip/srsran-4g/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for CMake, see https://docs.srsran.com/projects/4g/en/latest/general/source/1_installation.html#installation-from-source [source] -tar = "https://github.com/srsran/srsRAN_4G/archive/refs/tags/release_23_11.tar.gz" +git = "https://github.com/srsran/srsRAN_4G" +rev = "eea87b1d893ae58e0b08bc381730c502024ae71f" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/srsran-project/recipe.toml b/recipes/wip/srsran-project/recipe.toml index 493295e4..ee445368 100644 --- a/recipes/wip/srsran-project/recipe.toml +++ b/recipes/wip/srsran-project/recipe.toml @@ -1,7 +1,8 @@ #TODO missing script for CMake, see https://github.com/srsran/srsRAN_Project#build-instructions #TODO missing dependencies [source] -tar = "https://github.com/srsran/srsRAN_Project/archive/refs/tags/release_23_10_1.tar.gz" +git = "https://github.com/srsran/srsRAN_Project" +rev = "374200deefd8e1b96fab7328525fd593a808a641" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/sshx/recipe.toml b/recipes/wip/sshx/recipe.toml index 59594b71..3d9fce2a 100644 --- a/recipes/wip/sshx/recipe.toml +++ b/recipes/wip/sshx/recipe.toml @@ -1,6 +1,6 @@ #TODO require NodeJS and NPM [source] -tar = "https://github.com/ekzhang/sshx" +git = "https://github.com/ekzhang/sshx" [build] template = "custom" script = """ diff --git a/recipes/wip/starship/recipe.toml b/recipes/wip/starship/recipe.toml index e7b7a9de..e8eb76a0 100644 --- a/recipes/wip/starship/recipe.toml +++ b/recipes/wip/starship/recipe.toml @@ -1,5 +1,6 @@ #TODO nix::unistd::User [source] -tar = "https://github.com/starship/starship/archive/refs/tags/v1.16.0.tar.gz" +git = "https://github.com/starship/starship" +rev = "dcf7b7646c4610947765d76cf4e024a60576b2cd" [build] template = "cargo" diff --git a/recipes/wip/stockfish/recipe.toml b/recipes/wip/stockfish/recipe.toml index 2d1310f3..61fc0a4e 100644 --- a/recipes/wip/stockfish/recipe.toml +++ b/recipes/wip/stockfish/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for "make", see https://disservin.github.io/stockfish-docs/pages/Compiling-from-source.html [source] -tar = "https://github.com/official-stockfish/Stockfish/archive/refs/tags/sf_16.tar.gz" +git = "https://github.com/official-stockfish/Stockfish" +rev = "68e1e9b3811e16cad014b590d7443b9063b3eb52" [build] template = "custom" diff --git a/recipes/wip/stremio/recipe.toml b/recipes/wip/stremio/recipe.toml index bcb9d68f..491776ee 100644 --- a/recipes/wip/stremio/recipe.toml +++ b/recipes/wip/stremio/recipe.toml @@ -1,7 +1,7 @@ #TODO missing script for qmake and make, see https://github.com/Stremio/stremio-shell/blob/master/DEBIAN.md #TODO probably missing dependencies, see https://github.com/Stremio/stremio-shell/blob/master/DEBIAN.md#31-install-missing-dependencies [source] -tar = "https://github.com/Stremio/stremio-shell" +git = "https://github.com/Stremio/stremio-shell" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/stress-ng/recipe.toml b/recipes/wip/stress-ng/recipe.toml index 3453b42e..18e67354 100644 --- a/recipes/wip/stress-ng/recipe.toml +++ b/recipes/wip/stress-ng/recipe.toml @@ -1,7 +1,8 @@ #TODO missing script for "make", see https://github.com/ColinIanKing/stress-ng#building-stress-ng #TODO missing dependencies [source] -tar = "https://github.com/ColinIanKing/stress-ng/archive/refs/tags/V0.17.01.tar.gz" +git = "https://github.com/ColinIanKing/stress-ng" +rev = "8c39f5a2d9b199189456f414afd9e536dae69d1b" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/sudo-rs/recipe.toml b/recipes/wip/sudo-rs/recipe.toml index 94f6c7b5..8e02feb2 100644 --- a/recipes/wip/sudo-rs/recipe.toml +++ b/recipes/wip/sudo-rs/recipe.toml @@ -1,5 +1,6 @@ #TODO requires Linux PAM, probably needs porting [source] -tar = "https://github.com/memorysafety/sudo-rs/archive/refs/tags/v0.2.1.tar.gz" +git = "https://github.com/memorysafety/sudo-rs" +rev = "195d6f851904ab00357f040eef35e31abaebbe1b" [build] template = "cargo" diff --git a/recipes/wip/svg2pdf/recipe.toml b/recipes/wip/svg2pdf/recipe.toml index aa17f02c..5ee3f736 100644 --- a/recipes/wip/svg2pdf/recipe.toml +++ b/recipes/wip/svg2pdf/recipe.toml @@ -1,6 +1,7 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/typst/svg2pdf/archive/refs/tags/v0.9.0.tar.gz" +git = "https://github.com/typst/svg2pdf" +rev = "7d13eab7f01a9ab1577cfb348eead05726658c53" [build] template = "custom" script = """ diff --git a/recipes/wip/svt-av1/recipe.toml b/recipes/wip/svt-av1/recipe.toml index 9c81d55d..8d0875f9 100644 --- a/recipes/wip/svt-av1/recipe.toml +++ b/recipes/wip/svt-av1/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for building, see https://gitlab.com/AOMediaCodec/SVT-AV1/-/blob/master/Docs/Build-Guide.md#linux-operating-systems-64-bit [source] -tar = "https://gitlab.com/AOMediaCodec/SVT-AV1/-/archive/v1.8.0/SVT-AV1-v1.8.0.tar.bz2" +git = "https://gitlab.com/AOMediaCodec/SVT-AV1" +rev = "59645eea34e2815b627b8293aa3af254eddd0d69" [build] template = "custom" diff --git a/recipes/wip/svt-hevc/recipe.toml b/recipes/wip/svt-hevc/recipe.toml index 43dd471c..b52fae9e 100644 --- a/recipes/wip/svt-hevc/recipe.toml +++ b/recipes/wip/svt-hevc/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for CMake, see https://github.com/OpenVisualCloud/SVT-HEVC#linux-operating-systems-64-bit [source] -tar = "https://github.com/OpenVisualCloud/SVT-HEVC/archive/refs/tags/v1.5.1.tar.gz" +git = "https://github.com/OpenVisualCloud/SVT-HEVC" +rev = "b65eba07e6dee37407631cc441561960838b0333" [build] template = "custom" diff --git a/recipes/wip/swc/recipe.toml b/recipes/wip/swc/recipe.toml index b313e669..51a9e777 100644 --- a/recipes/wip/swc/recipe.toml +++ b/recipes/wip/swc/recipe.toml @@ -1,5 +1,5 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/swc-project/swc" +git = "https://github.com/swc-project/swc" [build] template = "cargo" diff --git a/recipes/wip/sws/recipe.toml b/recipes/wip/sws/recipe.toml index 1b243f8c..d144dc1d 100644 --- a/recipes/wip/sws/recipe.toml +++ b/recipes/wip/sws/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/static-web-server/static-web-server/archive/refs/tags/v2.24.1.tar.gz" +git = "https://github.com/static-web-server/static-web-server" +rev = "98a5cc40d276f3dac3c2c36530b966b213fb9ffc" [build] template = "cargo" diff --git a/recipes/wip/t-rec/recipe.toml b/recipes/wip/t-rec/recipe.toml index b2ed9320..370bd2d5 100644 --- a/recipes/wip/t-rec/recipe.toml +++ b/recipes/wip/t-rec/recipe.toml @@ -1,6 +1,7 @@ #TODO require XWayland [source] -tar = "https://github.com/sassman/t-rec-rs/archive/refs/tags/v0.7.6.tar.gz" +git = "https://github.com/sassman/t-rec-rs" +rev = "da911b978e9e87a917c7c865e5aa4d833209d9e0" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/tauro-monitor/recipe.toml b/recipes/wip/tauro-monitor/recipe.toml index 7d8d7d7c..3ed900d7 100644 --- a/recipes/wip/tauro-monitor/recipe.toml +++ b/recipes/wip/tauro-monitor/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for Meson, lacking installation instructions [source] -tar = "https://github.com/taunoe/tauno-monitor/archive/refs/tags/v0.1.5.tar.gz" +git = "https://github.com/taunoe/tauno-monitor" +rev = "fecab98710bf6918141f34709f4ee1a055413056" [build] template = "custom" diff --git a/recipes/wip/tealdeer/recipe.toml b/recipes/wip/tealdeer/recipe.toml index 75292788..bb96675e 100644 --- a/recipes/wip/tealdeer/recipe.toml +++ b/recipes/wip/tealdeer/recipe.toml @@ -1,5 +1,5 @@ -#TODO require a patch on ring and tokio on the dependency chain (locked version) +#TODO require a patch on ring [source] -tar = "https://github.com/dbrgn/tealdeer/archive/refs/tags/v1.6.1.tar.gz" +git = "https://github.com/dbrgn/tealdeer" [build] template = "cargo" diff --git a/recipes/wip/termimage/recipe.toml b/recipes/wip/termimage/recipe.toml index 8dc08269..3caabda1 100644 --- a/recipes/wip/termimage/recipe.toml +++ b/recipes/wip/termimage/recipe.toml @@ -1,5 +1,6 @@ #TODO move to the proper category [source] -tar = "https://github.com/nabijaczleweli/termimage/archive/refs/tags/v1.2.1.tar.gz" +git = "https://github.com/nabijaczleweli/termimage" +rev = "6156416a61fc5bfe78bdbda71e7f11f77a9adf9e" [build] template = "cargo" diff --git a/recipes/wip/termusic/recipe.toml b/recipes/wip/termusic/recipe.toml index da24f078..b1ee4370 100644 --- a/recipes/wip/termusic/recipe.toml +++ b/recipes/wip/termusic/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for "make", see https://github.com/tramhao/termusic#from-source [source] -tar = "https://github.com/tramhao/termusic/archive/refs/tags/v0.7.4.tar.gz" +git = "https://github.com/tramhao/termusic" +rev = "109405465bd5873567b5387c20e9b149e477b176" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/thwack/recipe.toml b/recipes/wip/thwack/recipe.toml index 14a108f9..f22c8865 100644 --- a/recipes/wip/thwack/recipe.toml +++ b/recipes/wip/thwack/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/yykamei/thwack/archive/refs/tags/v0.8.16.tar.gz" +git = "https://github.com/yykamei/thwack" +rev = "6763a2a9da03ffb746580c69f8d77161e5f6ba4e" [build] template = "cargo" diff --git a/recipes/wip/tidb-server/recipe.toml b/recipes/wip/tidb-server/recipe.toml index 8ddeb1a2..088b3fe4 100644 --- a/recipes/wip/tidb-server/recipe.toml +++ b/recipes/wip/tidb-server/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for "make", see https://pingcap.github.io/tidb-dev-guide/get-started/build-tidb-from-source.html#build [source] -tar = "https://github.com/pingcap/tidb/archive/refs/tags/v7.5.0.tar.gz" +git = "https://github.com/pingcap/tidb" +rev = "8445821f105477d5e31de9d8451b7fbf35a02cd1" [build] template = "custom" diff --git a/recipes/wip/tin-summer/recipe.toml b/recipes/wip/tin-summer/recipe.toml index 25652744..0434379e 100644 --- a/recipes/wip/tin-summer/recipe.toml +++ b/recipes/wip/tin-summer/recipe.toml @@ -1,5 +1,5 @@ #TODO compiled but not tested [source] -tar = "https://github.com/vmchale/tin-summer/archive/refs/tags/1.21.14.tar.gz" +git = "https://github.com/vmchale/tin-summer" [build] template = "cargo" diff --git a/recipes/wip/tiny/recipe.toml b/recipes/wip/tiny/recipe.toml index 526c5ff9..67932d7e 100644 --- a/recipes/wip/tiny/recipe.toml +++ b/recipes/wip/tiny/recipe.toml @@ -1,6 +1,7 @@ #TODO compiled but not tested (after a patch on the ring crate) [source] -tar = "https://github.com/osa1/tiny/archive/refs/tags/v0.11.0.tar.gz" +git = "https://github.com/osa1/tiny" +rev = "939fe1a689cd622161a43da445ebc6718478040d" [build] template = "custom" script = """ diff --git a/recipes/wip/tnn/recipe.toml b/recipes/wip/tnn/recipe.toml index c510e1da..6d4224a6 100644 --- a/recipes/wip/tnn/recipe.toml +++ b/recipes/wip/tnn/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for building, see https://github.com/Tencent/TNN/blob/master/doc/en/user/compile_en.md#iv-compilex86-linux [source] -tar = "https://github.com/Tencent/TNN/archive/refs/tags/v0.3.0.tar.gz" +git = "https://github.com/Tencent/TNN" +rev = "491dfc8653e200b5e8a428069638e191662a0882" [build] template = "custom" diff --git a/recipes/wip/tobaru/recipe.toml b/recipes/wip/tobaru/recipe.toml index 75f21f57..ea15f4ab 100644 --- a/recipes/wip/tobaru/recipe.toml +++ b/recipes/wip/tobaru/recipe.toml @@ -1,5 +1,6 @@ #TODO can't update libc crate version [source] -tar = "https://github.com/cfal/tobaru/archive/refs/tags/0.7.1.tar.gz" +git = "https://github.com/cfal/tobaru" +rev = "95afac34f0c54694ef0e114e87555f8e671d9f1b" [build] template = "cargo" \ No newline at end of file diff --git a/recipes/wip/topgrade/recipe.toml b/recipes/wip/topgrade/recipe.toml index d8ec7d00..9e819332 100644 --- a/recipes/wip/topgrade/recipe.toml +++ b/recipes/wip/topgrade/recipe.toml @@ -1,5 +1,6 @@ #TODO compiled but not tested [source] -tar = "https://github.com/topgrade-rs/topgrade/archive/refs/tags/v12.0.2.tar.gz" +git = "https://github.com/topgrade-rs/topgrade" +rev = "41c6d1cd9ab86254ffd29945b91e5e1b8eeebf64" [build] template = "cargo" diff --git a/recipes/wip/tori/recipe.toml b/recipes/wip/tori/recipe.toml index a9c53028..9426e337 100644 --- a/recipes/wip/tori/recipe.toml +++ b/recipes/wip/tori/recipe.toml @@ -1,6 +1,7 @@ #TODO make mpv works [source] -tar = "https://github.com/LeoRiether/tori/archive/refs/tags/v0.2.5.tar.gz" +git = "https://github.com/LeoRiether/tori" +rev = "422e5bbb1477b6fdd3a56e0db1b3553ce362e153" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/tp-note/recipe.toml b/recipes/wip/tp-note/recipe.toml index 9ec91fef..ed93890b 100644 --- a/recipes/wip/tp-note/recipe.toml +++ b/recipes/wip/tp-note/recipe.toml @@ -1,6 +1,7 @@ #TODO require Wayland? [source] -tar = "https://gitlab.com/getreu/tp-note/-/archive/v1.21.4/tp-note-v1.21.4.tar.gz" +git = "https://gitlab.com/getreu/tp-note" +rev = "1a8241211382efafb37961888aebc0065d56a95e" [build] template = "custom" script = """ diff --git a/recipes/wip/tplay/recipe.toml b/recipes/wip/tplay/recipe.toml index f9ec0d3d..a922c6ec 100644 --- a/recipes/wip/tplay/recipe.toml +++ b/recipes/wip/tplay/recipe.toml @@ -1,6 +1,7 @@ #TODO Make OpenCV 4 work [source] -tar = "https://github.com/maxcurzi/tplay/archive/refs/tags/v0.4.5.tar.gz" +git = "https://github.com/maxcurzi/tplay" +rev = "f32d5d3df7e3c6a873d1b113ef3b707b016b3a69" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/tracy/recipe.toml b/recipes/wip/tracy/recipe.toml index 1dd2a876..ee0859e3 100644 --- a/recipes/wip/tracy/recipe.toml +++ b/recipes/wip/tracy/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for "make", see https://github.com/wolfpld/tracy/releases/latest/download/tracy.pdf [source] -tar = "https://github.com/wolfpld/tracy/archive/refs/tags/v0.10.tar.gz" +git = "https://github.com/wolfpld/tracy" +rev = "37aff70dfa50cf6307b3fee6074d627dc2929143" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/treq/recipe.toml b/recipes/wip/treq/recipe.toml index c72d6492..90203d2f 100644 --- a/recipes/wip/treq/recipe.toml +++ b/recipes/wip/treq/recipe.toml @@ -1,6 +1,7 @@ #TODO thread-id crate error (after cargo update) [source] -tar = "https://github.com/talis-fb/TReq/archive/refs/tags/v0.4.0.tar.gz" +git = "https://github.com/talis-fb/TReq" +rev = "74a5d919fe34aff6c8f3f2a614e107f0dca70caf" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/trippy/recipe.toml b/recipes/wip/trippy/recipe.toml index 0e76726b..59d98fe9 100644 --- a/recipes/wip/trippy/recipe.toml +++ b/recipes/wip/trippy/recipe.toml @@ -1,5 +1,6 @@ #TODO source code error (after cargo update) [source] -tar = "https://github.com/fujiapple852/trippy/archive/refs/tags/0.8.0.tar.gz" +git = "https://github.com/fujiapple852/trippy" +rev = "388b99c495da48c548c72ff94e9d23a2f125e186" [build] template = "cargo" diff --git a/recipes/wip/ttyper/recipe.toml b/recipes/wip/ttyper/recipe.toml index 07320b2c..cb7464c8 100644 --- a/recipes/wip/ttyper/recipe.toml +++ b/recipes/wip/ttyper/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/max-niederman/ttyper/archive/refs/tags/v1.4.0.tar.gz" +git = "https://github.com/max-niederman/ttyper" +rev = "662a6682984afa6efca707b693ae68622e52ac24" [build] template = "cargo" diff --git a/recipes/wip/tui-journal/recipe.toml b/recipes/wip/tui-journal/recipe.toml index 1d43b04f..376b2c3c 100644 --- a/recipes/wip/tui-journal/recipe.toml +++ b/recipes/wip/tui-journal/recipe.toml @@ -1,6 +1,7 @@ #TODO SQLite is not working [source] -tar = "https://github.com/AmmarAbouZor/tui-journal/archive/refs/tags/v0.2.0.tar.gz" +git = "https://github.com/AmmarAbouZor/tui-journal" +rev = "40943d8b4081d61cd549398ff68c6f219444167b" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/tv/recipe.toml b/recipes/wip/tv/recipe.toml index 913b0ee9..d14fb0d7 100644 --- a/recipes/wip/tv/recipe.toml +++ b/recipes/wip/tv/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/alexhallam/tv/archive/refs/tags/1.5.2.tar.gz" +git = "https://github.com/alexhallam/tv" +rev = "ec8f7cf81f201e0046c0047dc5ed840c4e9f6e3b" [build] template = "cargo" diff --git a/recipes/wip/typst/recipe.toml b/recipes/wip/typst/recipe.toml index 839273b4..293b9fc6 100644 --- a/recipes/wip/typst/recipe.toml +++ b/recipes/wip/typst/recipe.toml @@ -1,6 +1,7 @@ #TODO require rustc 1.70 or newer [source] -tar = "https://github.com/typst/typst/archive/refs/tags/v0.7.0.tar.gz" +git = "https://github.com/typst/typst" +rev = "70ca0d257bb4ba927f63260e20443f244e0bb58c" [build] template = "custom" script = """ diff --git a/recipes/wip/upscaler/recipe.toml b/recipes/wip/upscaler/recipe.toml index 7d805b6d..b9393e38 100644 --- a/recipes/wip/upscaler/recipe.toml +++ b/recipes/wip/upscaler/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for Meson, see https://gitlab.gnome.org/World/Upscaler#meson [source] -tar = "https://gitlab.gnome.org/World/Upscaler/-/archive/1.2.2/Upscaler-1.2.2.tar.gz" +git = "https://gitlab.gnome.org/World/Upscaler" +rev = "30c2a8411fac281ed548189a9fea45dc9efe5b68" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/uvg266/recipe.toml b/recipes/wip/uvg266/recipe.toml index ca601048..052bdece 100644 --- a/recipes/wip/uvg266/recipe.toml +++ b/recipes/wip/uvg266/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for CMake, see https://github.com/ultravideo/uvg266#compiling-uvg266 [source] -tar = "https://github.com/ultravideo/uvg266/archive/refs/tags/v0.8.0.tar.gz" +git = "https://github.com/ultravideo/uvg266" +rev = "9add13b7053a6ba3f6b22bf82728e01fc437a447" [build] template = "custom" From d8e098f4ef18da624855e9fd93b2e142183f931e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 19 Dec 2023 03:05:23 +0000 Subject: [PATCH 1248/3180] update recipes --- recipes/wip/lib2geom/recipe.toml | 2 +- recipes/wip/lrdf/recipe.toml | 1 - recipes/wip/viu/recipe.toml | 3 ++- recipes/wip/vkquake2/recipe.toml | 3 ++- recipes/wip/vulkan-tools/recipe.toml | 3 ++- recipes/wip/vvenc/recipe.toml | 3 ++- recipes/wip/warp/recipe.toml | 3 ++- recipes/wip/watchexec/recipe.toml | 3 ++- recipes/wip/waylandpp/recipe.toml | 3 ++- recipes/wip/wayshot/recipe.toml | 3 ++- recipes/wip/wick/recipe.toml | 3 ++- recipes/wip/wireplumber/recipe.toml | 3 ++- recipes/wip/wolfssl5/recipe.toml | 3 ++- recipes/wip/wpaperd/recipe.toml | 3 ++- recipes/wip/x264/recipe.toml | 2 +- recipes/wip/xaos/recipe.toml | 3 ++- recipes/wip/xcp/recipe.toml | 3 ++- recipes/wip/xdotool/recipe.toml | 3 ++- recipes/wip/xenia/recipe.toml | 2 +- recipes/wip/xh/recipe.toml | 3 ++- recipes/wip/xiu/recipe.toml | 3 ++- recipes/wip/xmrig/recipe.toml | 3 ++- recipes/wip/xonotic/recipe.toml | 3 ++- recipes/wip/xxhash/recipe.toml | 3 ++- recipes/wip/youtube-tui/recipe.toml | 3 ++- recipes/wip/zellig/recipe.toml | 3 ++- recipes/wip/zerotier/recipe.toml | 3 ++- recipes/wip/zet/recipe.toml | 3 ++- recipes/wip/zlib-ng/recipe.toml | 3 ++- recipes/wip/zola/recipe.toml | 3 ++- recipes/wip/zoxide/recipe.toml | 3 ++- 31 files changed, 57 insertions(+), 31 deletions(-) diff --git a/recipes/wip/lib2geom/recipe.toml b/recipes/wip/lib2geom/recipe.toml index 5e6442f1..ff0659d3 100644 --- a/recipes/wip/lib2geom/recipe.toml +++ b/recipes/wip/lib2geom/recipe.toml @@ -1,6 +1,6 @@ #TODO missing script for CMake, see https://gitlab.com/inkscape/lib2geom#building [source] -tar = "https://gitlab.com/inkscape/lib2geom" +git = "https://gitlab.com/inkscape/lib2geom" rev = "18fc32f9972dfaee597055b3226c5b7ef3bfbb4c" [build] template = "custom" diff --git a/recipes/wip/lrdf/recipe.toml b/recipes/wip/lrdf/recipe.toml index 0fdce42b..39988f67 100644 --- a/recipes/wip/lrdf/recipe.toml +++ b/recipes/wip/lrdf/recipe.toml @@ -2,6 +2,5 @@ [source] git = "https://github.com/x42/LRDF" rev = "e61f7aa4a1e240a884e3a0cb4b2db65046cfcaa6" -rev = " [build] template = "configure" diff --git a/recipes/wip/viu/recipe.toml b/recipes/wip/viu/recipe.toml index 4d0a4425..e0e7237b 100644 --- a/recipes/wip/viu/recipe.toml +++ b/recipes/wip/viu/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/atanunq/viu/archive/refs/tags/v1.5.0.tar.gz" +git = "https://github.com/atanunq/viu" +rev = "af8f2ae90040baeeb24b92adedc645edc4ea0e85" [build] template = "cargo" diff --git a/recipes/wip/vkquake2/recipe.toml b/recipes/wip/vkquake2/recipe.toml index e414f103..5aef8b98 100644 --- a/recipes/wip/vkquake2/recipe.toml +++ b/recipes/wip/vkquake2/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for "make", see https://github.com/kondrak/vkQuake2#linux [source] -tar = "https://github.com/kondrak/vkQuake2/archive/refs/tags/1.5.9.tar.gz" +git = "https://github.com/kondrak/vkQuake2" +rev = "bdd39b142fbadf581fd9d904968a83fb9b4a929a" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/vulkan-tools/recipe.toml b/recipes/wip/vulkan-tools/recipe.toml index 0b6fee09..0007f1d0 100644 --- a/recipes/wip/vulkan-tools/recipe.toml +++ b/recipes/wip/vulkan-tools/recipe.toml @@ -1,6 +1,7 @@ #TODO probably wrong script, see https://github.com/KhronosGroup/Vulkan-Tools/blob/main/BUILD.md [source] -git = "https://github.com/KhronosGroup/Vulkan-Tools/archive/refs/tags/v1.3.270.tar.gz" +git = "https://github.com/KhronosGroup/Vulkan-Tools" +rev = "7e75f4d389799129b79f90d1401f15f511796dbd" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/vvenc/recipe.toml b/recipes/wip/vvenc/recipe.toml index f3a4a679..faa98972 100644 --- a/recipes/wip/vvenc/recipe.toml +++ b/recipes/wip/vvenc/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for CMake, see https://github.com/fraunhoferhhi/vvenc/wiki/Build#build-using-plain-cmake [source] -tar = "https://github.com/fraunhoferhhi/vvenc/archive/refs/tags/v1.9.1.tar.gz" +git = "https://github.com/fraunhoferhhi/vvenc" +rev = "eea6fce28c8e822a0ece7a343a10fd5d6dd0e7bb" [build] template = "custom" diff --git a/recipes/wip/warp/recipe.toml b/recipes/wip/warp/recipe.toml index 6301c1c0..5efe91cb 100644 --- a/recipes/wip/warp/recipe.toml +++ b/recipes/wip/warp/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for Meson, see https://gitlab.gnome.org/World/warp#meson [source] -tar = "https://gitlab.gnome.org/World/warp/-/archive/v0.6.1/warp-v0.6.1.tar.gz" +git = "https://gitlab.gnome.org/World/warp" +rev = "1daa60691aa1a697acaff55450dcccb085023fc7" [build] template = "custom" diff --git a/recipes/wip/watchexec/recipe.toml b/recipes/wip/watchexec/recipe.toml index 27fd3cf5..7aa961c7 100644 --- a/recipes/wip/watchexec/recipe.toml +++ b/recipes/wip/watchexec/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/watchexec/watchexec/archive/refs/tags/v1.23.0.tar.gz" +git = "https://github.com/watchexec/watchexec" +rev = "a72ff0e1426ff95f76788bbd23e1a7473068f1e0" [build] template = "cargo" diff --git a/recipes/wip/waylandpp/recipe.toml b/recipes/wip/waylandpp/recipe.toml index 779130b8..5f5473f0 100644 --- a/recipes/wip/waylandpp/recipe.toml +++ b/recipes/wip/waylandpp/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for CMake, see https://github.com/NilsBrause/waylandpp#building [source] -tar = "https://github.com/NilsBrause/waylandpp/archive/refs/tags/1.0.0.tar.gz" +git = "https://github.com/NilsBrause/waylandpp" +rev = "4321ed5c7b4bffa41b8a2a13dc7f3ece1191f4f3" [build] template = "custom" diff --git a/recipes/wip/wayshot/recipe.toml b/recipes/wip/wayshot/recipe.toml index a653b201..55d9223c 100644 --- a/recipes/wip/wayshot/recipe.toml +++ b/recipes/wip/wayshot/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for "make", see https://git.sr.ht/~shinyzenith/wayshot#compiling [source] -tar = "https://git.sr.ht/~shinyzenith/wayshot/archive/43fae61e239d75b8381f1e07e09e40dc2103cc8e.tar.gz" +git = "https://git.sr.ht/~shinyzenith/wayshot" +rev = "d3cdd329fe8263d5eca2ff62635fcb6b6ae57645" [build] template = "custom" diff --git a/recipes/wip/wick/recipe.toml b/recipes/wip/wick/recipe.toml index 19dc7f4f..30abca8d 100644 --- a/recipes/wip/wick/recipe.toml +++ b/recipes/wip/wick/recipe.toml @@ -1,5 +1,6 @@ #TODO Missing script for "just", see https://github.com/candlecorp/wick#install-from-source [source] -tar = "https://github.com/candlecorp/wick/archive/refs/tags/0.16.1.tar.gz" +git = "https://github.com/candlecorp/wick" +rev = "7d498210c0cb729ee9b96d6fb226e0db3a514cba" [build] template = "custom" diff --git a/recipes/wip/wireplumber/recipe.toml b/recipes/wip/wireplumber/recipe.toml index 3e4b9ca9..34a5804f 100644 --- a/recipes/wip/wireplumber/recipe.toml +++ b/recipes/wip/wireplumber/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for Meson, see https://pipewire.pages.freedesktop.org/wireplumber/installing-wireplumber.html [source] -tar = "https://gitlab.freedesktop.org/pipewire/wireplumber/-/archive/0.4.16/wireplumber-0.4.16.tar.bz2" +git = "https://gitlab.freedesktop.org/pipewire/wireplumber" +rev = "d3eb77b292655cef333a8f4cab4e861415bc37c2" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/wolfssl5/recipe.toml b/recipes/wip/wolfssl5/recipe.toml index cbde00dc..4fa81176 100644 --- a/recipes/wip/wolfssl5/recipe.toml +++ b/recipes/wip/wolfssl5/recipe.toml @@ -1,6 +1,7 @@ #TODO not compiled or tested [source] -tar = "https://github.com/wolfSSL/wolfssl/archive/refs/tags/v5.6.4-stable.tar.gz" +git = "https://github.com/wolfSSL/wolfssl" +rev = "37884f864d6fd9b04f44677cb04da15d0c9d6526" [build] template = "custom" script = """ diff --git a/recipes/wip/wpaperd/recipe.toml b/recipes/wip/wpaperd/recipe.toml index e0e19f29..306dd051 100644 --- a/recipes/wip/wpaperd/recipe.toml +++ b/recipes/wip/wpaperd/recipe.toml @@ -1,6 +1,7 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/danyspin97/wpaperd/archive/refs/tags/0.3.0.tar.gz" +git = "https://github.com/danyspin97/wpaperd" +rev = "a99e4e3d8c05a933a3f428329c2883e635feca14" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/x264/recipe.toml b/recipes/wip/x264/recipe.toml index 1e98f5e7..d606c949 100644 --- a/recipes/wip/x264/recipe.toml +++ b/recipes/wip/x264/recipe.toml @@ -1,5 +1,5 @@ #TODO the redox target is not supported on the configure [source] -tar = "https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2" +git = "https://code.videolan.org/videolan/x264" [build] template = "configure" diff --git a/recipes/wip/xaos/recipe.toml b/recipes/wip/xaos/recipe.toml index 1eb2daca..f5fb5b79 100644 --- a/recipes/wip/xaos/recipe.toml +++ b/recipes/wip/xaos/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for QMake, see https://github.com/xaos-project/XaoS/wiki/Developer's-Guide#build-instructions-for-version-43 [source] -tar = "https://github.com/xaos-project/XaoS/archive/refs/tags/release-4.3.1.tar.gz" +git = "https://github.com/xaos-project/XaoS" +rev = "7f36177f32a23eea88911afb90878046912d7e2d" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/xcp/recipe.toml b/recipes/wip/xcp/recipe.toml index 961680a3..c64bd2cd 100644 --- a/recipes/wip/xcp/recipe.toml +++ b/recipes/wip/xcp/recipe.toml @@ -1,5 +1,6 @@ #TODO xattr crate error [source] -tar = "https://github.com/tarka/xcp/archive/refs/tags/v0.9.4.tar.gz" +git = "https://github.com/tarka/xcp" +rev = "7713084d0ea1e683b6e97fdee8db5c353ba1f37b" [build] template = "cargo" diff --git a/recipes/wip/xdotool/recipe.toml b/recipes/wip/xdotool/recipe.toml index 1e9de48f..3763ad06 100644 --- a/recipes/wip/xdotool/recipe.toml +++ b/recipes/wip/xdotool/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for "make", see https://github.com/jordansissel/xdotool/#building--compiling [source] -tar = "https://github.com/jordansissel/xdotool/archive/refs/tags/v3.20211022.1.tar.gz" +git = "https://github.com/jordansissel/xdotool" +rev = "eb489de1b4fb3fd0cd935d68ae16ecd4c653ac7d" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/xenia/recipe.toml b/recipes/wip/xenia/recipe.toml index 71f27022..8b2dc8fb 100644 --- a/recipes/wip/xenia/recipe.toml +++ b/recipes/wip/xenia/recipe.toml @@ -1,6 +1,6 @@ #TODO missing script for building, see https://github.com/xenia-project/xenia/blob/master/docs/building.md#linux [source] -tar = "https://github.com/xenia-project/xenia" +git = "https://github.com/xenia-project/xenia" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/xh/recipe.toml b/recipes/wip/xh/recipe.toml index 1e626c1c..d0e3343d 100644 --- a/recipes/wip/xh/recipe.toml +++ b/recipes/wip/xh/recipe.toml @@ -1,5 +1,6 @@ #TODO compiled but not tested (after a patch on the ring crate and cargo update) [source] -tar = "https://github.com/ducaale/xh/archive/refs/tags/v0.18.0.tar.gz" +git = "https://github.com/ducaale/xh" +rev = "b694c7776b4e016cd5dfcbff42be6729fbdaa0af" [build] template = "cargo" diff --git a/recipes/wip/xiu/recipe.toml b/recipes/wip/xiu/recipe.toml index 9bd18e1f..73bb398a 100644 --- a/recipes/wip/xiu/recipe.toml +++ b/recipes/wip/xiu/recipe.toml @@ -1,6 +1,7 @@ #TODO OpenSSL error on program source code (after cargo update) [source] -tar = "https://github.com/harlanc/xiu/archive/refs/tags/v0.6.0.tar.gz" +git = "https://github.com/harlanc/xiu" +rev = "80f20d7056d7b9a1de239c6a46ce45e5043e916c" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/xmrig/recipe.toml b/recipes/wip/xmrig/recipe.toml index fdff9dd3..5c62f184 100644 --- a/recipes/wip/xmrig/recipe.toml +++ b/recipes/wip/xmrig/recipe.toml @@ -1,7 +1,8 @@ #TODO probably wrong script, see https://xmrig.com/docs/miner/build/ubuntu #TODO customization - https://xmrig.com/docs/miner/cmake-options [source] -tar = "https://github.com/xmrig/xmrig/archive/refs/tags/v6.20.0.tar.gz" +git = "https://github.com/xmrig/xmrig" +rev = "8084ff37a5c8935c649a2e362da0fe570c79a2c2" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/xonotic/recipe.toml b/recipes/wip/xonotic/recipe.toml index 413b338f..ee358495 100644 --- a/recipes/wip/xonotic/recipe.toml +++ b/recipes/wip/xonotic/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for "make", see https://gitlab.com/xonotic/xonotic/-/wikis/Compiling [source] -tar = "https://gitlab.com/xonotic/xonotic/-/archive/xonotic-v0.8.5/xonotic-xonotic-v0.8.5.tar.gz" +git = "https://gitlab.com/xonotic/xonotic" +rev = "0100f2c8d7947267292db66714c1af55039809ad" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/xxhash/recipe.toml b/recipes/wip/xxhash/recipe.toml index 1d268dbb..20f05653 100644 --- a/recipes/wip/xxhash/recipe.toml +++ b/recipes/wip/xxhash/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for building, lacking build instructions [source] -tar = "https://github.com/Cyan4973/xxHash/archive/refs/tags/v0.8.1.tar.gz" +git = "https://github.com/Cyan4973/xxHash" +rev = "bbb27a5efb85b92a0486cf361a8635715a53f6ba" [build] template = "custom" diff --git a/recipes/wip/youtube-tui/recipe.toml b/recipes/wip/youtube-tui/recipe.toml index b6429ead..d722c369 100644 --- a/recipes/wip/youtube-tui/recipe.toml +++ b/recipes/wip/youtube-tui/recipe.toml @@ -1,6 +1,7 @@ #TODO compilation error [source] -tar = "https://github.com/Siriusmart/youtube-tui/archive/refs/tags/v0.8.0.tar.gz" +git = "https://github.com/Siriusmart/youtube-tui" +rev = "f321f7c1e9b41644b976ea8672807c3062908c5c" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/zellig/recipe.toml b/recipes/wip/zellig/recipe.toml index 47429bad..54bc606b 100644 --- a/recipes/wip/zellig/recipe.toml +++ b/recipes/wip/zellig/recipe.toml @@ -1,5 +1,6 @@ #TODO os::QueryIter [source] -tar = "https://github.com/zellij-org/zellij/archive/refs/tags/v0.36.0.tar.gz" +git = "https://github.com/zellij-org/zellij" +rev = "d9b956bc40cd1b526b683291d3d55673a191b5a2" [build] template = "cargo" diff --git a/recipes/wip/zerotier/recipe.toml b/recipes/wip/zerotier/recipe.toml index 48ba3652..cbaaa9ae 100644 --- a/recipes/wip/zerotier/recipe.toml +++ b/recipes/wip/zerotier/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for "make", see https://github.com/zerotier/ZeroTierOne#build-and-platform-notes [source] -tar = "https://github.com/zerotier/ZeroTierOne/archive/refs/tags/1.12.2.tar.gz" +git = "https://github.com/zerotier/ZeroTierOne" +rev = "327eb9013b39809835a912c9117a0b9669f4661f" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/zet/recipe.toml b/recipes/wip/zet/recipe.toml index 4f9d2714..72455b52 100644 --- a/recipes/wip/zet/recipe.toml +++ b/recipes/wip/zet/recipe.toml @@ -1,5 +1,6 @@ #TODO compiled after cargo update, not tested [source] -tar = "https://github.com/yarrow/zet/archive/refs/tags/v1.0.0.tar.gz" +git = "https://github.com/yarrow/zet" +rev = "c1ee170d6a910650a668ad8180dd40f1787d1733" [build] template = "cargo" diff --git a/recipes/wip/zlib-ng/recipe.toml b/recipes/wip/zlib-ng/recipe.toml index 931dcc25..ce3cefbf 100644 --- a/recipes/wip/zlib-ng/recipe.toml +++ b/recipes/wip/zlib-ng/recipe.toml @@ -1,6 +1,7 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/zlib-ng/zlib-ng/archive/refs/tags/2.1.4.tar.gz" +git = "https://github.com/zlib-ng/zlib-ng" +rev = "2bc66887ddc0c50776811a27be68e34430d665e1" [build] template = "custom" script = """ diff --git a/recipes/wip/zola/recipe.toml b/recipes/wip/zola/recipe.toml index dd3d0bcf..bc9eb927 100644 --- a/recipes/wip/zola/recipe.toml +++ b/recipes/wip/zola/recipe.toml @@ -1,5 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://github.com/getzola/zola/archive/refs/tags/v0.17.2.tar.gz" +git = "https://github.com/getzola/zola" +rev = "77c87f5e2f20ee90cf73cc98fa5f3fb096bcfffd" [build] template = "cargo" diff --git a/recipes/wip/zoxide/recipe.toml b/recipes/wip/zoxide/recipe.toml index aff038c9..c077dac5 100644 --- a/recipes/wip/zoxide/recipe.toml +++ b/recipes/wip/zoxide/recipe.toml @@ -1,5 +1,6 @@ #TODO compiled but not tested [source] -tar = "https://github.com/ajeetdsouza/zoxide/archive/refs/tags/v0.9.1.tar.gz" +git = "https://github.com/ajeetdsouza/zoxide" +rev = "1bfcdfacf22fe22ff05ad2813aac7c0d14dfba36" [build] template = "cargo" From c57c8780476bcbfe561d643c9b8ad28a7068f39c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 19 Dec 2023 03:09:03 +0000 Subject: [PATCH 1249/3180] fix gyr --- recipes/wip/gyr/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/gyr/recipe.toml b/recipes/wip/gyr/recipe.toml index 02efa508..c15042a5 100644 --- a/recipes/wip/gyr/recipe.toml +++ b/recipes/wip/gyr/recipe.toml @@ -1,6 +1,6 @@ #TODO compiled but not tested [source] -tar = "https://git.sr.ht/~f9/gyr" +git = "https://git.sr.ht/~f9/gyr" rev = "3418fb65da1c181eade2f5f5284cf175cafb41ec" [build] template = "cargo" From e25b0e070e708cc594b09f40c3957105565f41a8 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 19 Dec 2023 06:19:39 +0000 Subject: [PATCH 1250/3180] new recipes --- recipes/wip/battleship-rs/recipe.toml | 5 +++++ recipes/wip/cosmic-term/recipe.toml | 5 +++++ recipes/wip/desed/recipe.toml | 5 +++++ recipes/wip/game-of-life-rs/recipe.toml | 5 +++++ recipes/wip/maze-tui/recipe.toml | 5 +++++ recipes/wip/minesweep-rs/recipe.toml | 6 ++++++ recipes/wip/nerd-fonts/recipe.toml | 10 ++++++++++ recipes/wip/nomad/recipe.toml | 6 ++++++ recipes/wip/oatmeal/recipe.toml | 6 ++++++ recipes/wip/oxc/recipe.toml | 8 ++++++++ recipes/wip/oxycards/recipe.toml | 5 +++++ recipes/wip/repgrep/recipe.toml | 6 ++++++ recipes/wip/rust-sadari-cli/recipe.toml | 5 +++++ recipes/wip/tenere/recipe.toml | 6 ++++++ recipes/wip/tic-tac-toe-rs/recipe.toml | 5 +++++ 15 files changed, 88 insertions(+) create mode 100644 recipes/wip/battleship-rs/recipe.toml create mode 100644 recipes/wip/cosmic-term/recipe.toml create mode 100644 recipes/wip/desed/recipe.toml create mode 100644 recipes/wip/game-of-life-rs/recipe.toml create mode 100644 recipes/wip/maze-tui/recipe.toml create mode 100644 recipes/wip/minesweep-rs/recipe.toml create mode 100644 recipes/wip/nerd-fonts/recipe.toml create mode 100644 recipes/wip/nomad/recipe.toml create mode 100644 recipes/wip/oatmeal/recipe.toml create mode 100644 recipes/wip/oxc/recipe.toml create mode 100644 recipes/wip/oxycards/recipe.toml create mode 100644 recipes/wip/repgrep/recipe.toml create mode 100644 recipes/wip/rust-sadari-cli/recipe.toml create mode 100644 recipes/wip/tenere/recipe.toml create mode 100644 recipes/wip/tic-tac-toe-rs/recipe.toml diff --git a/recipes/wip/battleship-rs/recipe.toml b/recipes/wip/battleship-rs/recipe.toml new file mode 100644 index 00000000..d0bf3cdf --- /dev/null +++ b/recipes/wip/battleship-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/deepu105/battleship-rs" +[build] +template = "cargo" diff --git a/recipes/wip/cosmic-term/recipe.toml b/recipes/wip/cosmic-term/recipe.toml new file mode 100644 index 00000000..3535d7ed --- /dev/null +++ b/recipes/wip/cosmic-term/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/pop-os/cosmic-term" +[build] +template = "cargo" diff --git a/recipes/wip/desed/recipe.toml b/recipes/wip/desed/recipe.toml new file mode 100644 index 00000000..d131398c --- /dev/null +++ b/recipes/wip/desed/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/SoptikHa2/desed" +[build] +template = "cargo" diff --git a/recipes/wip/game-of-life-rs/recipe.toml b/recipes/wip/game-of-life-rs/recipe.toml new file mode 100644 index 00000000..85d5a1e7 --- /dev/null +++ b/recipes/wip/game-of-life-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/kachark/game-of-life-rs" +[build] +template = "cargo" diff --git a/recipes/wip/maze-tui/recipe.toml b/recipes/wip/maze-tui/recipe.toml new file mode 100644 index 00000000..079cbf89 --- /dev/null +++ b/recipes/wip/maze-tui/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/agl-alexglopez/maze-tui" +[build] +template = "cargo" diff --git a/recipes/wip/minesweep-rs/recipe.toml b/recipes/wip/minesweep-rs/recipe.toml new file mode 100644 index 00000000..0af0af58 --- /dev/null +++ b/recipes/wip/minesweep-rs/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/cpcloud/minesweep-rs" +rev = "9ed752aa9670b0e5220a25923dca50adb0a92c6f" +[build] +template = "cargo" diff --git a/recipes/wip/nerd-fonts/recipe.toml b/recipes/wip/nerd-fonts/recipe.toml new file mode 100644 index 00000000..bf4e0738 --- /dev/null +++ b/recipes/wip/nerd-fonts/recipe.toml @@ -0,0 +1,10 @@ +#TODO probably wrong script +[source] +git = "https://github.com/ryanoasis/nerd-fonts" +rev = "7b41c66a1ef0c4ac5884a4203cb53c0901217e32" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/ui/fonts +cp -rv "${COOKBOOK_SOURCE}"/patched-fonts/* "${COOKBOOK_STAGE}"/ui/fonts +""" diff --git a/recipes/wip/nomad/recipe.toml b/recipes/wip/nomad/recipe.toml new file mode 100644 index 00000000..6987f10a --- /dev/null +++ b/recipes/wip/nomad/recipe.toml @@ -0,0 +1,6 @@ +#TODO not compiled or tested +#TODO require Nerd Fonts +[source] +git = "https://github.com/JosephLai241/nomad" +[build] +template = "cargo" diff --git a/recipes/wip/oatmeal/recipe.toml b/recipes/wip/oatmeal/recipe.toml new file mode 100644 index 00000000..ef910a83 --- /dev/null +++ b/recipes/wip/oatmeal/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/dustinblackman/oatmeal" +rev = "96f08a7b65c7be249a9f8497e247cc920c08459d" +[build] +template = "cargo" diff --git a/recipes/wip/oxc/recipe.toml b/recipes/wip/oxc/recipe.toml new file mode 100644 index 00000000..d5b2d966 --- /dev/null +++ b/recipes/wip/oxc/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/oxc-project/oxc" +[build] +template = "custom" +script = """ +cookbook_cargo_packages oxc +""" diff --git a/recipes/wip/oxycards/recipe.toml b/recipes/wip/oxycards/recipe.toml new file mode 100644 index 00000000..596fa61f --- /dev/null +++ b/recipes/wip/oxycards/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/BrookJeynes/oxycards" +[build] +template = "cargo" diff --git a/recipes/wip/repgrep/recipe.toml b/recipes/wip/repgrep/recipe.toml new file mode 100644 index 00000000..491a9194 --- /dev/null +++ b/recipes/wip/repgrep/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/acheronfail/repgrep" +rev = "2e270809de00d0aefda272016afb6b5cf1ac4af5" +[build] +template = "cargo" diff --git a/recipes/wip/rust-sadari-cli/recipe.toml b/recipes/wip/rust-sadari-cli/recipe.toml new file mode 100644 index 00000000..e5be108c --- /dev/null +++ b/recipes/wip/rust-sadari-cli/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/24seconds/rust-sadari-cli" +[build] +template = "cargo" diff --git a/recipes/wip/tenere/recipe.toml b/recipes/wip/tenere/recipe.toml new file mode 100644 index 00000000..ca06a8cc --- /dev/null +++ b/recipes/wip/tenere/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/pythops/tenere" +rev = "46fe89004dfc461f64b61c9f6c7e8c161aed707c" +[build] +template = "cargo" diff --git a/recipes/wip/tic-tac-toe-rs/recipe.toml b/recipes/wip/tic-tac-toe-rs/recipe.toml new file mode 100644 index 00000000..8d02ed9c --- /dev/null +++ b/recipes/wip/tic-tac-toe-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/thomas-mauran/tic-tac-toe" +[build] +template = "cargo" From 13c5bf4253361eea880ed0665155631a115a6a24 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 19 Dec 2023 23:41:45 +0000 Subject: [PATCH 1251/3180] new recipes --- recipes/wip/cube-timer/recipe.toml | 5 +++++ recipes/wip/diskonaut/recipe.toml | 5 +++++ recipes/wip/exhaust/recipe.toml | 5 +++++ recipes/wip/fzf-make/recipe.toml | 6 ++++++ recipes/wip/glicol-cli/recipe.toml | 5 +++++ recipes/wip/igrep/recipe.toml | 6 ++++++ recipes/wip/lazy-etherscan/recipe.toml | 5 +++++ recipes/wip/lemurs/recipe.toml | 6 ++++++ recipes/wip/libdotconf/recipe.toml | 5 +++++ recipes/wip/logss/recipe.toml | 5 +++++ recipes/wip/oha/recipe.toml | 9 +++++++++ recipes/wip/rex/recipe.toml | 6 ++++++ recipes/wip/rusty-krab-manager/recipe.toml | 5 +++++ recipes/wip/speech-dispatcher/recipe.toml | 10 ++++++++++ recipes/wip/taskserver/recipe.toml | 5 +++++ recipes/wip/taskwarrior-tui/recipe.toml | 6 ++++++ recipes/wip/taskwarrior/recipe.toml | 5 +++++ recipes/wip/termchat/recipe.toml | 8 ++++++++ recipes/wip/termscp/recipe.toml | 12 ++++++++++++ recipes/wip/thesaurust/recipe.toml | 5 +++++ recipes/wip/tick-rs/recipe.toml | 6 ++++++ recipes/wip/todolist-rs/recipe.toml | 5 +++++ recipes/wip/tsuchita/recipe.toml | 5 +++++ recipes/wip/tts-tui/recipe.toml | 9 +++++++++ recipes/wip/twitch-tui/recipe.toml | 6 ++++++ recipes/wip/vector/recipe.toml | 6 ++++++ recipes/wip/xplr/recipe.toml | 6 ++++++ recipes/wip/zenith/recipe.toml | 9 +++++++++ 28 files changed, 176 insertions(+) create mode 100644 recipes/wip/cube-timer/recipe.toml create mode 100644 recipes/wip/diskonaut/recipe.toml create mode 100644 recipes/wip/exhaust/recipe.toml create mode 100644 recipes/wip/fzf-make/recipe.toml create mode 100644 recipes/wip/glicol-cli/recipe.toml create mode 100644 recipes/wip/igrep/recipe.toml create mode 100644 recipes/wip/lazy-etherscan/recipe.toml create mode 100644 recipes/wip/lemurs/recipe.toml create mode 100644 recipes/wip/libdotconf/recipe.toml create mode 100644 recipes/wip/logss/recipe.toml create mode 100644 recipes/wip/oha/recipe.toml create mode 100644 recipes/wip/rex/recipe.toml create mode 100644 recipes/wip/rusty-krab-manager/recipe.toml create mode 100644 recipes/wip/speech-dispatcher/recipe.toml create mode 100644 recipes/wip/taskserver/recipe.toml create mode 100644 recipes/wip/taskwarrior-tui/recipe.toml create mode 100644 recipes/wip/taskwarrior/recipe.toml create mode 100644 recipes/wip/termchat/recipe.toml create mode 100644 recipes/wip/termscp/recipe.toml create mode 100644 recipes/wip/thesaurust/recipe.toml create mode 100644 recipes/wip/tick-rs/recipe.toml create mode 100644 recipes/wip/todolist-rs/recipe.toml create mode 100644 recipes/wip/tsuchita/recipe.toml create mode 100644 recipes/wip/tts-tui/recipe.toml create mode 100644 recipes/wip/twitch-tui/recipe.toml create mode 100644 recipes/wip/vector/recipe.toml create mode 100644 recipes/wip/xplr/recipe.toml create mode 100644 recipes/wip/zenith/recipe.toml diff --git a/recipes/wip/cube-timer/recipe.toml b/recipes/wip/cube-timer/recipe.toml new file mode 100644 index 00000000..a6f6a9dd --- /dev/null +++ b/recipes/wip/cube-timer/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/paarthmadan/cube" +[build] +template = "cargo" diff --git a/recipes/wip/diskonaut/recipe.toml b/recipes/wip/diskonaut/recipe.toml new file mode 100644 index 00000000..40bd4487 --- /dev/null +++ b/recipes/wip/diskonaut/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/imsnif/diskonaut" +[build] +template = "cargo" diff --git a/recipes/wip/exhaust/recipe.toml b/recipes/wip/exhaust/recipe.toml new file mode 100644 index 00000000..38b427ed --- /dev/null +++ b/recipes/wip/exhaust/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/heyrict/exhaust" +[build] +template = "cargo" diff --git a/recipes/wip/fzf-make/recipe.toml b/recipes/wip/fzf-make/recipe.toml new file mode 100644 index 00000000..8c81344b --- /dev/null +++ b/recipes/wip/fzf-make/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/kyu08/fzf-make" +rev = "e334513f976f42f4174c4dd175da653f248ec9b8" +[build] +template = "cargo" diff --git a/recipes/wip/glicol-cli/recipe.toml b/recipes/wip/glicol-cli/recipe.toml new file mode 100644 index 00000000..d07c182a --- /dev/null +++ b/recipes/wip/glicol-cli/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/glicol/glicol-cli" +[build] +template = "cargo" diff --git a/recipes/wip/igrep/recipe.toml b/recipes/wip/igrep/recipe.toml new file mode 100644 index 00000000..b6c617ce --- /dev/null +++ b/recipes/wip/igrep/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/konradsz/igrep" +rev = "8588755641e64cd40e569893e03628cf83cfc59f" +[build] +template = "cargo" diff --git a/recipes/wip/lazy-etherscan/recipe.toml b/recipes/wip/lazy-etherscan/recipe.toml new file mode 100644 index 00000000..c8e8522e --- /dev/null +++ b/recipes/wip/lazy-etherscan/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/woxjro/lazy-etherscan" +[build] +template = "cargo" diff --git a/recipes/wip/lemurs/recipe.toml b/recipes/wip/lemurs/recipe.toml new file mode 100644 index 00000000..ca1aa08c --- /dev/null +++ b/recipes/wip/lemurs/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for configuration, see https://github.com/coastalwhite/lemurs#compiling-from-source +[source] +git = "https://github.com/coastalwhite/lemurs" +rev = "37963b8ff6945ae8bdbabee658e5e36d0f67b84a" +[build] +template = "custom" diff --git a/recipes/wip/libdotconf/recipe.toml b/recipes/wip/libdotconf/recipe.toml new file mode 100644 index 00000000..e8fa0062 --- /dev/null +++ b/recipes/wip/libdotconf/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing "configure" file, see https://github.com/williamh/dotconf/blob/master/INSTALL +[source] +git = "https://github.com/williamh/dotconf" +[build] +template = "custom" diff --git a/recipes/wip/logss/recipe.toml b/recipes/wip/logss/recipe.toml new file mode 100644 index 00000000..3eb54ddd --- /dev/null +++ b/recipes/wip/logss/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/todoesverso/logss" +[build] +template = "cargo" diff --git a/recipes/wip/oha/recipe.toml b/recipes/wip/oha/recipe.toml new file mode 100644 index 00000000..64e7bf67 --- /dev/null +++ b/recipes/wip/oha/recipe.toml @@ -0,0 +1,9 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/hatoo/oha" +rev = "2c88d2acc0b4773089faaa959debaec15ef355a8" +[build] +template = "custom" +script = """ +cookbook_cargo --no-default-features --features rustls +""" diff --git a/recipes/wip/rex/recipe.toml b/recipes/wip/rex/recipe.toml new file mode 100644 index 00000000..e669d8db --- /dev/null +++ b/recipes/wip/rex/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/TheRustyPickle/Rex" +rev = "096eace40e33f48bf7216c4b6f2c9cc84287e47d" +[build] +template = "cargo" diff --git a/recipes/wip/rusty-krab-manager/recipe.toml b/recipes/wip/rusty-krab-manager/recipe.toml new file mode 100644 index 00000000..a5e3b608 --- /dev/null +++ b/recipes/wip/rusty-krab-manager/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/aryakaul/rusty-krab-manager" +[build] +template = "cargo" diff --git a/recipes/wip/speech-dispatcher/recipe.toml b/recipes/wip/speech-dispatcher/recipe.toml new file mode 100644 index 00000000..d33df461 --- /dev/null +++ b/recipes/wip/speech-dispatcher/recipe.toml @@ -0,0 +1,10 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/brailcom/speechd/releases/download/0.11.5/speech-dispatcher-0.11.5.tar.gz" +[build] +template = "configure" +dependencies = [ + "glib", + "libsndfile", + "libdotconf", +] diff --git a/recipes/wip/taskserver/recipe.toml b/recipes/wip/taskserver/recipe.toml new file mode 100644 index 00000000..5b82fbe1 --- /dev/null +++ b/recipes/wip/taskserver/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://taskwarrior.org/download/#quick-setup +[source] +tar = "https://github.com/GothenburgBitFactory/taskserver/releases/download/v1.1.0/taskd-1.1.0.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/taskwarrior-tui/recipe.toml b/recipes/wip/taskwarrior-tui/recipe.toml new file mode 100644 index 00000000..fa9e77b3 --- /dev/null +++ b/recipes/wip/taskwarrior-tui/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/kdheepak/taskwarrior-tui" +rev = "fe171ea35a5bfe794e2d822aa03f7b7db2f86616" +[build] +template = "cargo" diff --git a/recipes/wip/taskwarrior/recipe.toml b/recipes/wip/taskwarrior/recipe.toml new file mode 100644 index 00000000..354fefe6 --- /dev/null +++ b/recipes/wip/taskwarrior/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://taskwarrior.org/download/#quick-setup +[source] +tar = "https://github.com/GothenburgBitFactory/taskwarrior/releases/download/v2.6.2/task-2.6.2.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/termchat/recipe.toml b/recipes/wip/termchat/recipe.toml new file mode 100644 index 00000000..5bad5604 --- /dev/null +++ b/recipes/wip/termchat/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/lemunozm/termchat" +[build] +template = "custom" +script = """ +cookbook_cargo --all-features +""" diff --git a/recipes/wip/termscp/recipe.toml b/recipes/wip/termscp/recipe.toml new file mode 100644 index 00000000..52c75cff --- /dev/null +++ b/recipes/wip/termscp/recipe.toml @@ -0,0 +1,12 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/veeso/termscp" +rev = "ef8dbb6305fd1573446a254b9be759a1f13724af" +[build] +template = "custom" +dependencies = [ + "dbus", +] +script = """ +cookbook_cargo --no-default-features +""" diff --git a/recipes/wip/thesaurust/recipe.toml b/recipes/wip/thesaurust/recipe.toml new file mode 100644 index 00000000..d53a5871 --- /dev/null +++ b/recipes/wip/thesaurust/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/QuietPigeon2001/thesaurust" +[build] +template = "cargo" diff --git a/recipes/wip/tick-rs/recipe.toml b/recipes/wip/tick-rs/recipe.toml new file mode 100644 index 00000000..aa7aaece --- /dev/null +++ b/recipes/wip/tick-rs/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/tarkah/tickrs" +rev = "8a04f5411adf72fc08146eab0632765f1002e9e6" +[build] +template = "cargo" diff --git a/recipes/wip/todolist-rs/recipe.toml b/recipes/wip/todolist-rs/recipe.toml new file mode 100644 index 00000000..12e53cbc --- /dev/null +++ b/recipes/wip/todolist-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ebubekirgungor/todolist-rust" +[build] +template = "cargo" diff --git a/recipes/wip/tsuchita/recipe.toml b/recipes/wip/tsuchita/recipe.toml new file mode 100644 index 00000000..33a71e0d --- /dev/null +++ b/recipes/wip/tsuchita/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/kamiyaa/tsuchita" +[build] +template = "cargo" diff --git a/recipes/wip/tts-tui/recipe.toml b/recipes/wip/tts-tui/recipe.toml new file mode 100644 index 00000000..f12250d3 --- /dev/null +++ b/recipes/wip/tts-tui/recipe.toml @@ -0,0 +1,9 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/lesleyrs/tts-tui" +rev = "820689ba21ead76981376b7dfed17bfc59e5b013" +[build] +template = "cargo" +dependencies = [ + "speech-dispatcher", +] diff --git a/recipes/wip/twitch-tui/recipe.toml b/recipes/wip/twitch-tui/recipe.toml new file mode 100644 index 00000000..c6864ff1 --- /dev/null +++ b/recipes/wip/twitch-tui/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Xithrius/twitch-tui" +rev = "4c382da4afcb7b994e1a7659addfb55fde9518df" +[build] +template = "cargo" diff --git a/recipes/wip/vector/recipe.toml b/recipes/wip/vector/recipe.toml new file mode 100644 index 00000000..dae19e43 --- /dev/null +++ b/recipes/wip/vector/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for "make", see https://vector.dev/docs/setup/installation/manual/from-source/ +[source] +git = "https://github.com/vectordotdev/vector" +rev = "86f1c22d7f00d7d80210a2704ea9f5061f74ee55" +[build] +template = "custom" diff --git a/recipes/wip/xplr/recipe.toml b/recipes/wip/xplr/recipe.toml new file mode 100644 index 00000000..4d20e045 --- /dev/null +++ b/recipes/wip/xplr/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/sayanarijit/xplr" +rev = "8af1647c090d84416feb77a9c9874629433c8314" +[build] +template = "cargo" diff --git a/recipes/wip/zenith/recipe.toml b/recipes/wip/zenith/recipe.toml new file mode 100644 index 00000000..3dcea592 --- /dev/null +++ b/recipes/wip/zenith/recipe.toml @@ -0,0 +1,9 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/bvaisvil/zenith" +rev = "798999e2563e25636fef6c1a587f949ed264ad41" +[build] +template = "build-system" +dependencies = [ + "library1", +] From 0f8df7b5e4d18f3561ac8a701a1701d833f495ca Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 20 Dec 2023 10:56:52 +0000 Subject: [PATCH 1252/3180] remove kubernetes --- recipes/wip/kubernetes/recipe.toml | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 recipes/wip/kubernetes/recipe.toml diff --git a/recipes/wip/kubernetes/recipe.toml b/recipes/wip/kubernetes/recipe.toml deleted file mode 100644 index fe02ac5b..00000000 --- a/recipes/wip/kubernetes/recipe.toml +++ /dev/null @@ -1,7 +0,0 @@ -#TODO missing script for "make", see https://github.com/kubernetes/community/blob/master/contributors/devel/development.md#building-kubernetes-on-a-local-osshell-environment -#TODO require Go -[source] -git = "https://github.com/kubernetes/kubernetes" -rev = "3f7a50f38688eb332e2a1b013678c6435d539ae6" -[build] -template = "custom" From f379847f9b0acfa31578a6ce30cf4e16546baca7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 20 Dec 2023 12:58:28 +0000 Subject: [PATCH 1253/3180] new recipes --- recipes/wip/valgrind/recipe.toml | 5 +++++ recipes/wip/verrou/recipe.toml | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 recipes/wip/valgrind/recipe.toml create mode 100644 recipes/wip/verrou/recipe.toml diff --git a/recipes/wip/valgrind/recipe.toml b/recipes/wip/valgrind/recipe.toml new file mode 100644 index 00000000..65962b2e --- /dev/null +++ b/recipes/wip/valgrind/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://sourceware.org/pub/valgrind/valgrind-3.22.0.tar.bz2" +[build] +template = "configure" diff --git a/recipes/wip/verrou/recipe.toml b/recipes/wip/verrou/recipe.toml new file mode 100644 index 00000000..674ae38a --- /dev/null +++ b/recipes/wip/verrou/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/edf-hpc/verrou/releases/download/v2.5.0/valgrind-3.21.0_verrou-2.5.0.tar.gz" +[build] +template = "configure" From 02c0fd36f81a2e0352727532fe49430121901be2 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 20 Dec 2023 14:08:14 +0000 Subject: [PATCH 1254/3180] update recipes --- recipes/wip/cargo-run-bin/recipe.toml | 2 +- recipes/wip/cargo-sweep/recipe.toml | 2 +- recipes/wip/cargo-tarpaulin/recipe.toml | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/wip/cargo-run-bin/recipe.toml b/recipes/wip/cargo-run-bin/recipe.toml index 7625128a..4101bffc 100644 --- a/recipes/wip/cargo-run-bin/recipe.toml +++ b/recipes/wip/cargo-run-bin/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error [source] git = "https://github.com/dustinblackman/cargo-run-bin" [build] diff --git a/recipes/wip/cargo-sweep/recipe.toml b/recipes/wip/cargo-sweep/recipe.toml index c6ef1234..1fd87697 100644 --- a/recipes/wip/cargo-sweep/recipe.toml +++ b/recipes/wip/cargo-sweep/recipe.toml @@ -1,4 +1,4 @@ -#TODO needs to update the redox_syscall version +#TODO compiled but not tested [source] git = "https://github.com/holmgr/cargo-sweep" [build] diff --git a/recipes/wip/cargo-tarpaulin/recipe.toml b/recipes/wip/cargo-tarpaulin/recipe.toml index 94e775c6..252655ac 100644 --- a/recipes/wip/cargo-tarpaulin/recipe.toml +++ b/recipes/wip/cargo-tarpaulin/recipe.toml @@ -4,3 +4,6 @@ git = "https://github.com/xd009642/tarpaulin" rev = "669e0b4d0e1f880f118ea481b43e309bd6c9154c" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 2850b6a1fd3fc1b8cff20140ec4cbfbe8a96f6b5 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 20 Dec 2023 14:42:24 +0000 Subject: [PATCH 1255/3180] update recipes --- recipes/wip/cargo-tarpaulin/recipe.toml | 2 +- recipes/wip/cargo-ui/recipe.toml | 6 +++++- recipes/wip/cargo-watch/recipe.toml | 2 +- recipes/wip/cbindgen/recipe.toml | 2 +- recipes/wip/chars/recipe.toml | 5 ++++- 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/recipes/wip/cargo-tarpaulin/recipe.toml b/recipes/wip/cargo-tarpaulin/recipe.toml index 252655ac..82b843a8 100644 --- a/recipes/wip/cargo-tarpaulin/recipe.toml +++ b/recipes/wip/cargo-tarpaulin/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/xd009642/tarpaulin" rev = "669e0b4d0e1f880f118ea481b43e309bd6c9154c" diff --git a/recipes/wip/cargo-ui/recipe.toml b/recipes/wip/cargo-ui/recipe.toml index bd99c8e1..b9d15c0a 100644 --- a/recipes/wip/cargo-ui/recipe.toml +++ b/recipes/wip/cargo-ui/recipe.toml @@ -3,7 +3,11 @@ git = "https://github.com/slint-ui/cargo-ui" rev = "230652da8e9d91f109d5e4be3a5831452243ebc0" [build] -template = "cargo" +template = "custom" dependencies = [ "fontconfig", + "libxkbcommon", ] +script = """ +cookbook_cargo --no-default-features slint-backend-gl-all +""" diff --git a/recipes/wip/cargo-watch/recipe.toml b/recipes/wip/cargo-watch/recipe.toml index ea70a171..0e09d91b 100644 --- a/recipes/wip/cargo-watch/recipe.toml +++ b/recipes/wip/cargo-watch/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO xdg-home crate error [source] git = "https://github.com/watchexec/cargo-watch" rev = "0a85f5f76bf35009233f751c91f02d31afd2b94f" diff --git a/recipes/wip/cbindgen/recipe.toml b/recipes/wip/cbindgen/recipe.toml index 39423ad9..f49d0b14 100644 --- a/recipes/wip/cbindgen/recipe.toml +++ b/recipes/wip/cbindgen/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/mozilla/cbindgen" rev = "703b53c06f9fe2dbc0193d67626558cfa84a0f62" diff --git a/recipes/wip/chars/recipe.toml b/recipes/wip/chars/recipe.toml index 8b5483d6..deb44bd3 100644 --- a/recipes/wip/chars/recipe.toml +++ b/recipes/wip/chars/recipe.toml @@ -2,4 +2,7 @@ [source] git = "https://github.com/boinkor-net/chars" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages chars +""" From efc09e557dcba1a96183a4c00be53ae52473d007 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 20 Dec 2023 15:54:39 +0000 Subject: [PATCH 1256/3180] update recipes --- recipes/wip/chars/recipe.toml | 2 +- recipes/wip/chess-tui/recipe.toml | 2 +- recipes/wip/clog-cli/recipe.toml | 2 +- recipes/wip/cobalt/recipe.toml | 2 +- recipes/wip/codevis/recipe.toml | 3 +-- recipes/wip/colm/recipe.toml | 2 +- recipes/wip/cosmic-term/recipe.toml | 2 +- recipes/wip/counts/recipe.toml | 3 +-- recipes/wip/cpuminer-opt/recipe.toml | 1 + recipes/wip/criner/recipe.toml | 4 +++- 10 files changed, 12 insertions(+), 11 deletions(-) diff --git a/recipes/wip/chars/recipe.toml b/recipes/wip/chars/recipe.toml index deb44bd3..931cd8f2 100644 --- a/recipes/wip/chars/recipe.toml +++ b/recipes/wip/chars/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/boinkor-net/chars" [build] diff --git a/recipes/wip/chess-tui/recipe.toml b/recipes/wip/chess-tui/recipe.toml index b1811105..095d9265 100644 --- a/recipes/wip/chess-tui/recipe.toml +++ b/recipes/wip/chess-tui/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/thomas-mauran/chess-tui" rev = "b61e559b26e4de63808509fc2626730a4ff31774" diff --git a/recipes/wip/clog-cli/recipe.toml b/recipes/wip/clog-cli/recipe.toml index be39ed4d..6c355c2b 100644 --- a/recipes/wip/clog-cli/recipe.toml +++ b/recipes/wip/clog-cli/recipe.toml @@ -1,4 +1,4 @@ -#TODO Needs to patch the rustc-serialize crate and update the redox_syscall version +#TODO rust-serialize crate error (after cargo update) [source] git = "https://github.com/clog-tool/clog-cli" [build] diff --git a/recipes/wip/cobalt/recipe.toml b/recipes/wip/cobalt/recipe.toml index 1b68360a..74cda0e0 100644 --- a/recipes/wip/cobalt/recipe.toml +++ b/recipes/wip/cobalt/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error (after an update on proc-macro2) [source] git = "https://github.com/cobalt-org/cobalt.rs" rev = "70e8e19631819c7f552b63c35f4907920d23ae22" diff --git a/recipes/wip/codevis/recipe.toml b/recipes/wip/codevis/recipe.toml index 30245fbe..b951a05c 100644 --- a/recipes/wip/codevis/recipe.toml +++ b/recipes/wip/codevis/recipe.toml @@ -1,6 +1,5 @@ -#TODO Not compiled or tested +#TODO open crate error [source] git = "https://github.com/sloganking/codevis" -rev = "af85406a2e5ebe3a0c8d1cd679c8184f6f7a99d2" [build] template = "cargo" diff --git a/recipes/wip/colm/recipe.toml b/recipes/wip/colm/recipe.toml index 23e6acaf..21a0e1db 100644 --- a/recipes/wip/colm/recipe.toml +++ b/recipes/wip/colm/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error [source] tar = "https://www.colm.net/files/colm/colm-0.14.7.tar.gz" [build] diff --git a/recipes/wip/cosmic-term/recipe.toml b/recipes/wip/cosmic-term/recipe.toml index 3535d7ed..5ee76928 100644 --- a/recipes/wip/cosmic-term/recipe.toml +++ b/recipes/wip/cosmic-term/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO mio crate error [source] git = "https://github.com/pop-os/cosmic-term" [build] diff --git a/recipes/wip/counts/recipe.toml b/recipes/wip/counts/recipe.toml index 96597579..b8821b00 100644 --- a/recipes/wip/counts/recipe.toml +++ b/recipes/wip/counts/recipe.toml @@ -1,6 +1,5 @@ -#TODO compiled after cargo update but not tested +#TODO compiled but not tested [source] git = "https://github.com/nnethercote/counts" -rev = "b940cac134ef81cf593567a6e693b9afbe89fa2d" [build] template = "cargo" diff --git a/recipes/wip/cpuminer-opt/recipe.toml b/recipes/wip/cpuminer-opt/recipe.toml index 0479327f..b3910305 100644 --- a/recipes/wip/cpuminer-opt/recipe.toml +++ b/recipes/wip/cpuminer-opt/recipe.toml @@ -1,4 +1,5 @@ #TODO maybe wrong template, see https://github.com/JayDDee/cpuminer-opt/wiki/Compiling-from-source +#TODO fix jansson dependency [source] git = "https://github.com/JayDDee/cpuminer-opt" rev = "9d3a46c3551655f862db74a195e769fe86266903" diff --git a/recipes/wip/criner/recipe.toml b/recipes/wip/criner/recipe.toml index 95ba9216..9a7f599d 100644 --- a/recipes/wip/criner/recipe.toml +++ b/recipes/wip/criner/recipe.toml @@ -1,9 +1,11 @@ #TODO Not compiled or tested [source] git = "https://github.com/the-lean-crate/criner" -rev = "e0cd0e1c7937477c466d46e4fd571ddfd15fb4d7" [build] template = "custom" +dependencies = [ + "openssl1", +] script = """ cookbook_cargo_packages criner """ From d93df653fe39a75c00351f70374266f6f1be6d36 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 20 Dec 2023 16:15:53 +0000 Subject: [PATCH 1257/3180] update recipes --- recipes/wip/chocolate-doom/recipe.toml | 4 ++-- recipes/wip/criner/recipe.toml | 3 ++- recipes/wip/crispy-doom/recipe.toml | 4 ++-- recipes/wip/crosstool-ng/recipe.toml | 3 +++ 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/recipes/wip/chocolate-doom/recipe.toml b/recipes/wip/chocolate-doom/recipe.toml index d718a392..3dd25cc5 100644 --- a/recipes/wip/chocolate-doom/recipe.toml +++ b/recipes/wip/chocolate-doom/recipe.toml @@ -5,6 +5,6 @@ tar = "https://www.chocolate-doom.org/downloads/3.0.1/chocolate-doom-3.0.1.tar.g template = "configure" dependencies = [ "sdl2", - "sdl2_mixer", - "sdl2_net", + "sdl2-mixer", + "sdl2-net", ] diff --git a/recipes/wip/criner/recipe.toml b/recipes/wip/criner/recipe.toml index 9a7f599d..2226020f 100644 --- a/recipes/wip/criner/recipe.toml +++ b/recipes/wip/criner/recipe.toml @@ -1,4 +1,5 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) +#TODO missing script to properly move th binary [source] git = "https://github.com/the-lean-crate/criner" [build] diff --git a/recipes/wip/crispy-doom/recipe.toml b/recipes/wip/crispy-doom/recipe.toml index 7b2b321e..dac4ac51 100644 --- a/recipes/wip/crispy-doom/recipe.toml +++ b/recipes/wip/crispy-doom/recipe.toml @@ -6,6 +6,6 @@ rev = "593f5b97023ed39b7640073160c06895bbfc3d26" template = "configure" dependencies = [ "sdl2", - "sdl2_mixer", - "sdl2_net", + "sdl2-mixer", + "sdl2-net", ] diff --git a/recipes/wip/crosstool-ng/recipe.toml b/recipes/wip/crosstool-ng/recipe.toml index 3c760dd5..6dc7a375 100644 --- a/recipes/wip/crosstool-ng/recipe.toml +++ b/recipes/wip/crosstool-ng/recipe.toml @@ -3,3 +3,6 @@ tar = "http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.26.0.tar.xz" [build] template = "configure" +dependencies = [ + "libtool", +] From 8106efff261b5c7a858bd706dc43c8d235b5219f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 20 Dec 2023 16:36:37 +0000 Subject: [PATCH 1258/3180] update recipes --- recipes/wip/crosstool-ng/recipe.toml | 5 +---- recipes/wip/cube-timer/recipe.toml | 2 +- recipes/wip/cute/recipe.toml | 3 +++ 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/recipes/wip/crosstool-ng/recipe.toml b/recipes/wip/crosstool-ng/recipe.toml index 6dc7a375..f64605fd 100644 --- a/recipes/wip/crosstool-ng/recipe.toml +++ b/recipes/wip/crosstool-ng/recipe.toml @@ -1,8 +1,5 @@ -#TODO Not compiled or tested +#TODO can't find libtool [source] tar = "http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.26.0.tar.xz" [build] template = "configure" -dependencies = [ - "libtool", -] diff --git a/recipes/wip/cube-timer/recipe.toml b/recipes/wip/cube-timer/recipe.toml index a6f6a9dd..bb95b0e5 100644 --- a/recipes/wip/cube-timer/recipe.toml +++ b/recipes/wip/cube-timer/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/paarthmadan/cube" [build] diff --git a/recipes/wip/cute/recipe.toml b/recipes/wip/cute/recipe.toml index 2df51eac..76834cfc 100644 --- a/recipes/wip/cute/recipe.toml +++ b/recipes/wip/cute/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/PThorpe92/CuTE" [build] template = "cargo" +dependencies = [ + "openssl1", +] From d599525b5526d19f610dc80bc71c33c6ab15250e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 20 Dec 2023 17:17:09 +0000 Subject: [PATCH 1259/3180] update recipes --- recipes/wip/cute/recipe.toml | 2 +- recipes/wip/czkawka/recipe.toml | 2 +- recipes/wip/daktilo/recipe.toml | 2 +- recipes/wip/dbus/recipe.toml | 1 + recipes/wip/debugedit/recipe.toml | 2 +- recipes/wip/delta/recipe.toml | 2 +- recipes/wip/deps-rs/recipe.toml | 2 +- recipes/wip/desed/recipe.toml | 2 +- recipes/wip/difftastic/recipe.toml | 2 +- recipes/wip/{diplomat-tool => diplomat}/recipe.toml | 5 +---- 10 files changed, 10 insertions(+), 12 deletions(-) rename recipes/wip/{diplomat-tool => diplomat}/recipe.toml (68%) diff --git a/recipes/wip/cute/recipe.toml b/recipes/wip/cute/recipe.toml index 76834cfc..ce07247e 100644 --- a/recipes/wip/cute/recipe.toml +++ b/recipes/wip/cute/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO x11rb crate error [source] git = "https://github.com/PThorpe92/CuTE" [build] diff --git a/recipes/wip/czkawka/recipe.toml b/recipes/wip/czkawka/recipe.toml index f092f1a0..7286668b 100644 --- a/recipes/wip/czkawka/recipe.toml +++ b/recipes/wip/czkawka/recipe.toml @@ -1,4 +1,4 @@ -#TODO Compiled but not tested yet +#TODO Compiled but not tested [source] git = "https://github.com/qarmin/czkawka" rev = "44400e08af3c8f030493b8ec6fa965c7d42e560e" diff --git a/recipes/wip/daktilo/recipe.toml b/recipes/wip/daktilo/recipe.toml index dacc7160..f26e0e91 100644 --- a/recipes/wip/daktilo/recipe.toml +++ b/recipes/wip/daktilo/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO rdev crate error [source] git = "https://github.com/orhun/daktilo" rev = "f51dde4e1b83fb18018ebb25ff246613a136817f" diff --git a/recipes/wip/dbus/recipe.toml b/recipes/wip/dbus/recipe.toml index c1c6b1f5..faea5d4a 100644 --- a/recipes/wip/dbus/recipe.toml +++ b/recipes/wip/dbus/recipe.toml @@ -1,4 +1,5 @@ #TODO missing Unix domain sockets support +#TODO compilation error [source] tar = "https://dbus.freedesktop.org/releases/dbus/dbus-1.14.10.tar.xz" [build] diff --git a/recipes/wip/debugedit/recipe.toml b/recipes/wip/debugedit/recipe.toml index 16ef19f0..c7c0b40d 100644 --- a/recipes/wip/debugedit/recipe.toml +++ b/recipes/wip/debugedit/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make elfutils work [source] tar = "https://sourceware.org/ftp/debugedit/5.0/debugedit-5.0.tar.xz" [build] diff --git a/recipes/wip/delta/recipe.toml b/recipes/wip/delta/recipe.toml index 1ec9298b..55d9306a 100644 --- a/recipes/wip/delta/recipe.toml +++ b/recipes/wip/delta/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested yet +#TODO make the "less" dependency work [source] git = "https://github.com/dandavison/delta" rev = "03f1569a9aff964e9291371d9928d0584327eae2" diff --git a/recipes/wip/deps-rs/recipe.toml b/recipes/wip/deps-rs/recipe.toml index d6408ba8..6409f788 100644 --- a/recipes/wip/deps-rs/recipe.toml +++ b/recipes/wip/deps-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO weird libssh2 error (using cargo update) +#TODO camino crate error [source] git = "https://github.com/deps-rs/deps.rs" [build] diff --git a/recipes/wip/desed/recipe.toml b/recipes/wip/desed/recipe.toml index d131398c..55224c7e 100644 --- a/recipes/wip/desed/recipe.toml +++ b/recipes/wip/desed/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/SoptikHa2/desed" [build] diff --git a/recipes/wip/difftastic/recipe.toml b/recipes/wip/difftastic/recipe.toml index 71817fa9..9278735b 100644 --- a/recipes/wip/difftastic/recipe.toml +++ b/recipes/wip/difftastic/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled/tested yet +#TODO make mimalloc work [source] git = "https://github.com/Wilfred/difftastic" rev = "a67ad5b9afe31e577540f27280885652c792b103" diff --git a/recipes/wip/diplomat-tool/recipe.toml b/recipes/wip/diplomat/recipe.toml similarity index 68% rename from recipes/wip/diplomat-tool/recipe.toml rename to recipes/wip/diplomat/recipe.toml index d81a37c5..c58b01d0 100644 --- a/recipes/wip/diplomat-tool/recipe.toml +++ b/recipes/wip/diplomat/recipe.toml @@ -3,7 +3,4 @@ git = "https://github.com/rust-diplomat/diplomat" rev = "01bfb4bc53211e1c2a5ea58f64205c3a06727f7d" [build] -template = "custom" -script = """ -cookbook_cargo_packages tool -""" +template = "cargo" From f60b407037efe449182f5b70e0aaafac2b76b3e1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 20 Dec 2023 17:18:45 +0000 Subject: [PATCH 1260/3180] update diplomat --- recipes/wip/diplomat/recipe.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/diplomat/recipe.toml b/recipes/wip/diplomat/recipe.toml index c58b01d0..e572e3a3 100644 --- a/recipes/wip/diplomat/recipe.toml +++ b/recipes/wip/diplomat/recipe.toml @@ -3,4 +3,7 @@ git = "https://github.com/rust-diplomat/diplomat" rev = "01bfb4bc53211e1c2a5ea58f64205c3a06727f7d" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages diplomat +""" From f8eb303eef06302c9e18c28d181415203d46b7e4 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 20 Dec 2023 17:41:09 +0000 Subject: [PATCH 1261/3180] update recipes --- recipes/wip/diplomat/recipe.toml | 2 +- recipes/wip/diskonaut/recipe.toml | 2 +- recipes/wip/doctave/recipe.toml | 2 +- recipes/wip/dog/recipe.toml | 2 +- recipes/wip/dprint/recipe.toml | 2 +- recipes/wip/dra-cla/recipe.toml | 2 +- recipes/wip/drill/recipe.toml | 1 - 7 files changed, 6 insertions(+), 7 deletions(-) diff --git a/recipes/wip/diplomat/recipe.toml b/recipes/wip/diplomat/recipe.toml index e572e3a3..e28a7749 100644 --- a/recipes/wip/diplomat/recipe.toml +++ b/recipes/wip/diplomat/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO missing script to properly move the binary [source] git = "https://github.com/rust-diplomat/diplomat" rev = "01bfb4bc53211e1c2a5ea58f64205c3a06727f7d" diff --git a/recipes/wip/diskonaut/recipe.toml b/recipes/wip/diskonaut/recipe.toml index 40bd4487..91f898b8 100644 --- a/recipes/wip/diskonaut/recipe.toml +++ b/recipes/wip/diskonaut/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO outdated redox_syscall crate (after cargo update) [source] git = "https://github.com/imsnif/diskonaut" [build] diff --git a/recipes/wip/doctave/recipe.toml b/recipes/wip/doctave/recipe.toml index 1d14e22d..a15f8e2e 100644 --- a/recipes/wip/doctave/recipe.toml +++ b/recipes/wip/doctave/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/Doctave/doctave" [build] diff --git a/recipes/wip/dog/recipe.toml b/recipes/wip/dog/recipe.toml index 21cf748b..e3304a53 100644 --- a/recipes/wip/dog/recipe.toml +++ b/recipes/wip/dog/recipe.toml @@ -1,4 +1,4 @@ -#TODO weird OpenSSL error? +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/ogham/dog" [build] diff --git a/recipes/wip/dprint/recipe.toml b/recipes/wip/dprint/recipe.toml index f2778bad..ebdd2cac 100644 --- a/recipes/wip/dprint/recipe.toml +++ b/recipes/wip/dprint/recipe.toml @@ -1,4 +1,4 @@ -#TODO region crate error (after a patch on ring) +#TODO region crate error [source] git = "https://github.com/dprint/dprint" rev = "1a71f9c58a076ad46ef1bb63d1585add20002f32" diff --git a/recipes/wip/dra-cla/recipe.toml b/recipes/wip/dra-cla/recipe.toml index c749101a..04370b48 100644 --- a/recipes/wip/dra-cla/recipe.toml +++ b/recipes/wip/dra-cla/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO move to proper category [source] git = "https://github.com/CoolnsX/dra-cla" [build] diff --git a/recipes/wip/drill/recipe.toml b/recipes/wip/drill/recipe.toml index 317495fc..d3da8a89 100644 --- a/recipes/wip/drill/recipe.toml +++ b/recipes/wip/drill/recipe.toml @@ -1,7 +1,6 @@ #TODO Compilation error (after a patch to update tokio on Cargo.toml) [source] git = "https://github.com/fcsonline/drill" -rev = "f56d89a25fc5838da57727a75ec3340758c30318" [build] template = "cargo" dependencies = [ From 2fff6820cbfda68fd30f532b766ca785bd681d04 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 20 Dec 2023 17:50:54 +0000 Subject: [PATCH 1262/3180] update recipes --- recipes/wip/drill/recipe.toml | 2 +- recipes/wip/dune/recipe.toml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/drill/recipe.toml b/recipes/wip/drill/recipe.toml index d3da8a89..87c8b781 100644 --- a/recipes/wip/drill/recipe.toml +++ b/recipes/wip/drill/recipe.toml @@ -1,4 +1,4 @@ -#TODO Compilation error (after a patch to update tokio on Cargo.toml) +#TODO OpenSSL error (after a cargo update and a patch to update tokio on Cargo.toml) [source] git = "https://github.com/fcsonline/drill" [build] diff --git a/recipes/wip/dune/recipe.toml b/recipes/wip/dune/recipe.toml index 069d4f62..70869942 100644 --- a/recipes/wip/dune/recipe.toml +++ b/recipes/wip/dune/recipe.toml @@ -1,6 +1,5 @@ #TODO Not compiled or tested [source] git = "https://github.com/adam-mcdaniel/dune" -rev = "a0750ad11341bd94c2f2808601ef4bc73d5cf445" [build] template = "cargo" From 20661cee89f0f5eea4a736df43bdcca9cef604af Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 20 Dec 2023 18:42:14 +0000 Subject: [PATCH 1263/3180] update recipes --- recipes/wip/aim/recipe.toml | 1 - recipes/wip/arti/recipe.toml | 1 - recipes/wip/atuin/recipe.toml | 1 - recipes/wip/bacon/recipe.toml | 1 - recipes/wip/bandwhich/recipe.toml | 1 - recipes/wip/bat/recipe.toml | 1 - recipes/wip/biome/recipe.toml | 1 - recipes/wip/bita/recipe.toml | 1 - recipes/wip/bottom/recipe.toml | 1 - recipes/wip/broot/recipe.toml | 1 - recipes/wip/cargo-about/recipe.toml | 1 - recipes/wip/cargo-audit/recipe.toml | 1 - recipes/wip/cargo-cache/recipe.toml | 1 - recipes/wip/cargo-deny/recipe.toml | 1 - recipes/wip/cargo-diet/recipe.toml | 1 - recipes/wip/cargo-fuzz/recipe.toml | 1 - recipes/wip/cargo-geiger/recipe.toml | 1 - recipes/wip/cargo-generate/recipe.toml | 1 - recipes/wip/cargo-mutants/recipe.toml | 1 - recipes/wip/cargo-tarpaulin/recipe.toml | 1 - recipes/wip/cargo-watch/recipe.toml | 1 - recipes/wip/cobalt/recipe.toml | 1 - recipes/wip/daktilo/recipe.toml | 1 - recipes/wip/deno/recipe.toml | 2 +- recipes/wip/dprint/recipe.toml | 1 - recipes/wip/dua/recipe.toml | 1 - recipes/wip/dune/recipe.toml | 2 +- 27 files changed, 2 insertions(+), 27 deletions(-) diff --git a/recipes/wip/aim/recipe.toml b/recipes/wip/aim/recipe.toml index 2ea70b3c..e6300a9a 100644 --- a/recipes/wip/aim/recipe.toml +++ b/recipes/wip/aim/recipe.toml @@ -1,7 +1,6 @@ #TODO openssl-sys crate compilation error [source] git = "https://github.com/mihaigalos/aim" -rev = "bd1c6f91061cd7bc1c849a75e7616a2de90408dd" [build] dependencies = [ "openssl1", diff --git a/recipes/wip/arti/recipe.toml b/recipes/wip/arti/recipe.toml index 4f7acc99..b36e3191 100644 --- a/recipes/wip/arti/recipe.toml +++ b/recipes/wip/arti/recipe.toml @@ -1,7 +1,6 @@ #TODO pwd-grp crate error [source] git = "https://gitlab.torproject.org/tpo/core/arti" -rev = "db9a5263e7b185b90750c658dff8e5a50fce0a2e" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/atuin/recipe.toml b/recipes/wip/atuin/recipe.toml index a281a26c..406fd48d 100644 --- a/recipes/wip/atuin/recipe.toml +++ b/recipes/wip/atuin/recipe.toml @@ -1,7 +1,6 @@ #TODO require a patch on tokio (update the version) [source] git = "https://github.com/ellie/atuin" -rev = "da2e58fbb17aa05510df2480f7e1d47e21e74c73" [build] template = "custom" script = """ diff --git a/recipes/wip/bacon/recipe.toml b/recipes/wip/bacon/recipe.toml index 91d29e5d..eb359238 100644 --- a/recipes/wip/bacon/recipe.toml +++ b/recipes/wip/bacon/recipe.toml @@ -1,6 +1,5 @@ #TODO camino crate compilation error [source] git = "https://github.com/Canop/bacon" -rev = "4ab9e68ba3003c4f6c97c07df0c2e23508890f52" [build] template = "cargo" \ No newline at end of file diff --git a/recipes/wip/bandwhich/recipe.toml b/recipes/wip/bandwhich/recipe.toml index 3a34f634..72c8ff2a 100644 --- a/recipes/wip/bandwhich/recipe.toml +++ b/recipes/wip/bandwhich/recipe.toml @@ -1,6 +1,5 @@ #TODO redox_syscall crate error [source] git = "https://github.com/imsnif/bandwhich" -rev = "f987636f785f13fd9e96d942a6b73176c5673d1f" [build] template = "cargo" diff --git a/recipes/wip/bat/recipe.toml b/recipes/wip/bat/recipe.toml index 0c4db9a5..d01b0cd2 100644 --- a/recipes/wip/bat/recipe.toml +++ b/recipes/wip/bat/recipe.toml @@ -1,6 +1,5 @@ #TODO sys-info crate build.rs does not recognize Redox [source] git = "https://github.com/sharkdp/bat" -rev = "fc9546854f5a7b38823f4990453c6cde386bfd3b" [build] template = "cargo" diff --git a/recipes/wip/biome/recipe.toml b/recipes/wip/biome/recipe.toml index 1f3fac45..b1342d7d 100644 --- a/recipes/wip/biome/recipe.toml +++ b/recipes/wip/biome/recipe.toml @@ -1,7 +1,6 @@ #TODO tikv-jemalloc-sys crate error [source] git = "https://github.com/biomejs/biome" -rev = "a88751306242058374575b9f511e3c22213032b6" [build] template = "custom" script = """ diff --git a/recipes/wip/bita/recipe.toml b/recipes/wip/bita/recipe.toml index 8131dcf3..4e9fd988 100644 --- a/recipes/wip/bita/recipe.toml +++ b/recipes/wip/bita/recipe.toml @@ -1,7 +1,6 @@ #TODO compilation error (after a cargo update and a patch on the ring and tokio crates) [source] git = "https://github.com/oll3/bita" -rev = "202579482b94db85e3e49e52dfba1edd498bf733" [build] template = "custom" script = """ diff --git a/recipes/wip/bottom/recipe.toml b/recipes/wip/bottom/recipe.toml index 6ace3b7c..1032de52 100644 --- a/recipes/wip/bottom/recipe.toml +++ b/recipes/wip/bottom/recipe.toml @@ -1,6 +1,5 @@ #TODO starship-battery crate compilation error [source] git = "https://github.com/ClementTsang/bottom" -rev = "6d251098710f3119af11ecdd8761929acb010fab" [build] template = "cargo" diff --git a/recipes/wip/broot/recipe.toml b/recipes/wip/broot/recipe.toml index 3c74af0c..c41912d7 100644 --- a/recipes/wip/broot/recipe.toml +++ b/recipes/wip/broot/recipe.toml @@ -1,6 +1,5 @@ #TODO nix crate compilation error [source] git = "https://github.com/Canop/broot" -rev = "c12f94f23551cbc7142ac6677385fa28cea29d1d" [build] template = "cargo" diff --git a/recipes/wip/cargo-about/recipe.toml b/recipes/wip/cargo-about/recipe.toml index 7dbdd565..b0efb1ff 100644 --- a/recipes/wip/cargo-about/recipe.toml +++ b/recipes/wip/cargo-about/recipe.toml @@ -1,6 +1,5 @@ #TODO camino crate error [source] git = "https://github.com/EmbarkStudios/cargo-about" -rev = "2f6275808e651dca7d739dbbcd45efc48f4f388d" [build] template = "cargo" diff --git a/recipes/wip/cargo-audit/recipe.toml b/recipes/wip/cargo-audit/recipe.toml index 954a58b0..826180ae 100644 --- a/recipes/wip/cargo-audit/recipe.toml +++ b/recipes/wip/cargo-audit/recipe.toml @@ -1,7 +1,6 @@ #TODO camino crate error (after a patch on the ring crate) [source] git = "https://github.com/rustsec/rustsec" -rev = "3544515990b09441ecc12df8d0291bc6f23d3d30" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/cargo-cache/recipe.toml b/recipes/wip/cargo-cache/recipe.toml index b7a69111..a7c248a5 100644 --- a/recipes/wip/cargo-cache/recipe.toml +++ b/recipes/wip/cargo-cache/recipe.toml @@ -1,6 +1,5 @@ #TODO camino crate compilation error [source] git = "https://github.com/matthiaskrgr/cargo-cache" -rev = "f26f8b8bb1ce96481973483de9a939ff80f97d5d" [build] template = "cargo" diff --git a/recipes/wip/cargo-deny/recipe.toml b/recipes/wip/cargo-deny/recipe.toml index df1e7c2e..bd0f8c9f 100644 --- a/recipes/wip/cargo-deny/recipe.toml +++ b/recipes/wip/cargo-deny/recipe.toml @@ -1,6 +1,5 @@ #TODO camino crate error (after a patch on the ring crate) [source] git = "https://github.com/EmbarkStudios/cargo-deny" -rev = "80860f0f6c974810e9ce38655309293e8aa841e4" [build] template = "cargo" diff --git a/recipes/wip/cargo-diet/recipe.toml b/recipes/wip/cargo-diet/recipe.toml index 6fa096bf..76e2a85e 100644 --- a/recipes/wip/cargo-diet/recipe.toml +++ b/recipes/wip/cargo-diet/recipe.toml @@ -1,6 +1,5 @@ #TODO termsize crate error [source] git = "https://github.com/the-lean-crate/cargo-diet" -rev = "76e3691a6250c82d276b30c2ef21af7f49e24e6f" [build] template = "cargo" diff --git a/recipes/wip/cargo-fuzz/recipe.toml b/recipes/wip/cargo-fuzz/recipe.toml index 1bc0b3a0..30db380b 100644 --- a/recipes/wip/cargo-fuzz/recipe.toml +++ b/recipes/wip/cargo-fuzz/recipe.toml @@ -1,6 +1,5 @@ #TODO compiled but not tested (after an update on proc-macro2) [source] git = "https://github.com/rust-fuzz/cargo-fuzz" -rev = "0a992ee43d91746a6a627e9977cfb27693ce3b86" [build] template = "cargo" diff --git a/recipes/wip/cargo-geiger/recipe.toml b/recipes/wip/cargo-geiger/recipe.toml index ea680397..863ce563 100644 --- a/recipes/wip/cargo-geiger/recipe.toml +++ b/recipes/wip/cargo-geiger/recipe.toml @@ -1,7 +1,6 @@ #TODO camino crate error [source] git = "https://github.com/rust-secure-code/cargo-geiger" -rev = "5da482d71b2d7e0cde2ccb716c2457df4c70ca7a" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/cargo-generate/recipe.toml b/recipes/wip/cargo-generate/recipe.toml index 168293d1..7eed481a 100644 --- a/recipes/wip/cargo-generate/recipe.toml +++ b/recipes/wip/cargo-generate/recipe.toml @@ -1,7 +1,6 @@ #TODO fs_at crate error [source] git = "https://github.com/cargo-generate/cargo-generate" -rev = "f7728a02149c9120fdbe50332e9342b92621faa6" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/cargo-mutants/recipe.toml b/recipes/wip/cargo-mutants/recipe.toml index 8a2ac5a4..916d3144 100644 --- a/recipes/wip/cargo-mutants/recipe.toml +++ b/recipes/wip/cargo-mutants/recipe.toml @@ -1,7 +1,6 @@ #TODO camino crate error [source] git = "https://github.com/sourcefrog/cargo-mutants" -rev = "6c254852eb79273b87e2ec50606bf82f9a5db0b6" rev = " [build] template = "cargo" diff --git a/recipes/wip/cargo-tarpaulin/recipe.toml b/recipes/wip/cargo-tarpaulin/recipe.toml index 82b843a8..85ed8020 100644 --- a/recipes/wip/cargo-tarpaulin/recipe.toml +++ b/recipes/wip/cargo-tarpaulin/recipe.toml @@ -1,7 +1,6 @@ #TODO camino crate error [source] git = "https://github.com/xd009642/tarpaulin" -rev = "669e0b4d0e1f880f118ea481b43e309bd6c9154c" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/cargo-watch/recipe.toml b/recipes/wip/cargo-watch/recipe.toml index 0e09d91b..69056dcf 100644 --- a/recipes/wip/cargo-watch/recipe.toml +++ b/recipes/wip/cargo-watch/recipe.toml @@ -1,6 +1,5 @@ #TODO xdg-home crate error [source] git = "https://github.com/watchexec/cargo-watch" -rev = "0a85f5f76bf35009233f751c91f02d31afd2b94f" [build] template = "cargo" diff --git a/recipes/wip/cobalt/recipe.toml b/recipes/wip/cobalt/recipe.toml index 74cda0e0..c73644e0 100644 --- a/recipes/wip/cobalt/recipe.toml +++ b/recipes/wip/cobalt/recipe.toml @@ -1,6 +1,5 @@ #TODO compilation error (after an update on proc-macro2) [source] git = "https://github.com/cobalt-org/cobalt.rs" -rev = "70e8e19631819c7f552b63c35f4907920d23ae22" [build] template = "cargo" diff --git a/recipes/wip/daktilo/recipe.toml b/recipes/wip/daktilo/recipe.toml index f26e0e91..94f77363 100644 --- a/recipes/wip/daktilo/recipe.toml +++ b/recipes/wip/daktilo/recipe.toml @@ -1,6 +1,5 @@ #TODO rdev crate error [source] git = "https://github.com/orhun/daktilo" -rev = "f51dde4e1b83fb18018ebb25ff246613a136817f" [build] template = "cargo" diff --git a/recipes/wip/deno/recipe.toml b/recipes/wip/deno/recipe.toml index a29dbde2..cd4c6882 100644 --- a/recipes/wip/deno/recipe.toml +++ b/recipes/wip/deno/recipe.toml @@ -1,7 +1,7 @@ #TODO v8 crate error (after cargo update -p tokio) #TODO Add static objects for the Redox target (doesn't exist on librusty_v8 upstream) [source] -tar = "https://github.com/denoland/deno/releases/download/v1.36.1/deno_src.tar.gz" +git = "https://github.com/denoland/deno" [build] template = "custom" script = """ diff --git a/recipes/wip/dprint/recipe.toml b/recipes/wip/dprint/recipe.toml index ebdd2cac..4077bad0 100644 --- a/recipes/wip/dprint/recipe.toml +++ b/recipes/wip/dprint/recipe.toml @@ -1,7 +1,6 @@ #TODO region crate error [source] git = "https://github.com/dprint/dprint" -rev = "1a71f9c58a076ad46ef1bb63d1585add20002f32" [build] template = "custom" script = """ diff --git a/recipes/wip/dua/recipe.toml b/recipes/wip/dua/recipe.toml index 7e26ac1e..4a1ca2c9 100644 --- a/recipes/wip/dua/recipe.toml +++ b/recipes/wip/dua/recipe.toml @@ -1,6 +1,5 @@ #TODO open crate error [source] git = "https://github.com/Byron/dua-cli" -rev = "491b5587ca0e9d157b9a4f8907c35137d57983d5" [build] template = "cargo" diff --git a/recipes/wip/dune/recipe.toml b/recipes/wip/dune/recipe.toml index 70869942..ec50d999 100644 --- a/recipes/wip/dune/recipe.toml +++ b/recipes/wip/dune/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/adam-mcdaniel/dune" [build] From 377e7b637fe9a13ada4266cb9ccf9c548db07af6 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 20 Dec 2023 19:16:05 +0000 Subject: [PATCH 1264/3180] update recipes --- recipes/wip/atuin/recipe.toml | 2 +- recipes/wip/backhand/recipe.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/wip/atuin/recipe.toml b/recipes/wip/atuin/recipe.toml index 406fd48d..02e3054c 100644 --- a/recipes/wip/atuin/recipe.toml +++ b/recipes/wip/atuin/recipe.toml @@ -1,4 +1,4 @@ -#TODO require a patch on tokio (update the version) +#TODO require Wayland [source] git = "https://github.com/ellie/atuin" [build] diff --git a/recipes/wip/backhand/recipe.toml b/recipes/wip/backhand/recipe.toml index 65bf91b5..74562aef 100644 --- a/recipes/wip/backhand/recipe.toml +++ b/recipes/wip/backhand/recipe.toml @@ -5,5 +5,5 @@ rev = "96c83729a791526ff0a3fd8e9390740c25ae8184" [build] template = "custom" script = """ -cookbook_cargo_packages backhand-cli +cookbook_cargo --bin backhand-cli """ From a9a9da9870b1d7f1530d3e179987292d2010e21a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 20 Dec 2023 19:19:36 +0000 Subject: [PATCH 1265/3180] update backhand --- recipes/wip/backhand/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/backhand/recipe.toml b/recipes/wip/backhand/recipe.toml index 74562aef..56cbb5ee 100644 --- a/recipes/wip/backhand/recipe.toml +++ b/recipes/wip/backhand/recipe.toml @@ -5,5 +5,5 @@ rev = "96c83729a791526ff0a3fd8e9390740c25ae8184" [build] template = "custom" script = """ -cookbook_cargo --bin backhand-cli +cookbook_cargo_packages backhand """ From bc7717c3a5b7abc1b411cf104c24187e1532ec07 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 20 Dec 2023 19:20:19 +0000 Subject: [PATCH 1266/3180] update backhand --- recipes/wip/backhand/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/wip/backhand/recipe.toml b/recipes/wip/backhand/recipe.toml index 56cbb5ee..6c201ade 100644 --- a/recipes/wip/backhand/recipe.toml +++ b/recipes/wip/backhand/recipe.toml @@ -1,7 +1,6 @@ #TODO not compiled or tested [source] git = "https://github.com/wcampbell0x2a/backhand" -rev = "96c83729a791526ff0a3fd8e9390740c25ae8184" [build] template = "custom" script = """ From 8d76377ac92875cf88da91be04da9e1dca9e39a5 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 20 Dec 2023 20:59:55 +0000 Subject: [PATCH 1267/3180] update recipes --- recipes/wip/backhand/recipe.toml | 2 +- recipes/wip/clog-cli/recipe.toml | 2 +- recipes/wip/dutree/recipe.toml | 2 +- recipes/wip/dysk/recipe.toml | 3 +-- recipes/wip/elfshaker/recipe.toml | 2 +- recipes/wip/elfutils/recipe.toml | 2 +- recipes/wip/emacs-nox/recipe.toml | 1 + recipes/wip/emacs-pgtk/recipe.toml | 1 + recipes/wip/enchant/recipe.toml | 3 +++ recipes/wip/vincenzo/recipe.toml | 2 +- 10 files changed, 12 insertions(+), 8 deletions(-) diff --git a/recipes/wip/backhand/recipe.toml b/recipes/wip/backhand/recipe.toml index 6c201ade..9d023ed6 100644 --- a/recipes/wip/backhand/recipe.toml +++ b/recipes/wip/backhand/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO missing script to properly move the binary [source] git = "https://github.com/wcampbell0x2a/backhand" [build] diff --git a/recipes/wip/clog-cli/recipe.toml b/recipes/wip/clog-cli/recipe.toml index 6c355c2b..5ca5e390 100644 --- a/recipes/wip/clog-cli/recipe.toml +++ b/recipes/wip/clog-cli/recipe.toml @@ -1,4 +1,4 @@ -#TODO rust-serialize crate error (after cargo update) +#TODO rustc-serialize crate error (after cargo update) [source] git = "https://github.com/clog-tool/clog-cli" [build] diff --git a/recipes/wip/dutree/recipe.toml b/recipes/wip/dutree/recipe.toml index a11b54af..61bbb15e 100644 --- a/recipes/wip/dutree/recipe.toml +++ b/recipes/wip/dutree/recipe.toml @@ -1,4 +1,4 @@ -#TODO program source code error +#TODO program source code error (after cargo update) [source] git = "https://github.com/nachoparker/dutree" [build] diff --git a/recipes/wip/dysk/recipe.toml b/recipes/wip/dysk/recipe.toml index 697f818e..60e551ba 100644 --- a/recipes/wip/dysk/recipe.toml +++ b/recipes/wip/dysk/recipe.toml @@ -1,6 +1,5 @@ -#TODO compiled after cargo update, but not tested +#TODO nix crate error [source] git = "https://github.com/Canop/dysk" -rev = "eecc8cf86a26e840cdf1c97758a7deb3a4852e63" [build] template = "cargo" diff --git a/recipes/wip/elfshaker/recipe.toml b/recipes/wip/elfshaker/recipe.toml index 4a777d8e..00835dc5 100644 --- a/recipes/wip/elfshaker/recipe.toml +++ b/recipes/wip/elfshaker/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO rustc-serialize crate error (after an update on proc-macro2 and patch on ring) [source] git = "https://github.com/elfshaker/elfshaker" [build] diff --git a/recipes/wip/elfutils/recipe.toml b/recipes/wip/elfutils/recipe.toml index 9fa38f4c..dcc701ab 100644 --- a/recipes/wip/elfutils/recipe.toml +++ b/recipes/wip/elfutils/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error [source] tar = "https://sourceware.org/elfutils/ftp/0.190/elfutils-0.190.tar.bz2" [build] diff --git a/recipes/wip/emacs-nox/recipe.toml b/recipes/wip/emacs-nox/recipe.toml index 93030ac6..481a5065 100644 --- a/recipes/wip/emacs-nox/recipe.toml +++ b/recipes/wip/emacs-nox/recipe.toml @@ -1,4 +1,5 @@ #TODO compilation error +#TODO make dependencies work [source] tar = "https://ftp.gnu.org/gnu/emacs/emacs-29.1.tar.xz" [build] diff --git a/recipes/wip/emacs-pgtk/recipe.toml b/recipes/wip/emacs-pgtk/recipe.toml index 6c3d0912..97670776 100644 --- a/recipes/wip/emacs-pgtk/recipe.toml +++ b/recipes/wip/emacs-pgtk/recipe.toml @@ -1,4 +1,5 @@ #TODO compilation error +#TODO make dependencies work [source] tar = "https://ftp.gnu.org/gnu/emacs/emacs-29.1.tar.xz" [build] diff --git a/recipes/wip/enchant/recipe.toml b/recipes/wip/enchant/recipe.toml index cb49a628..bb755e74 100644 --- a/recipes/wip/enchant/recipe.toml +++ b/recipes/wip/enchant/recipe.toml @@ -3,3 +3,6 @@ tar = "https://github.com/AbiWord/enchant/releases/download/v2.6.3/enchant-2.6.3.tar.gz" [build] template = "configure" +dependencies = [ + "glib", +] diff --git a/recipes/wip/vincenzo/recipe.toml b/recipes/wip/vincenzo/recipe.toml index f629fbb9..bc9c0146 100644 --- a/recipes/wip/vincenzo/recipe.toml +++ b/recipes/wip/vincenzo/recipe.toml @@ -1,4 +1,4 @@ -#TODO rust-serialize crate error +#TODO rustc-serialize crate error [source] git = "https://github.com/gabrieldemian/vincenzo" [build] From 5be9ec75615f16ee2facc3233a7e93f157041c66 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 20 Dec 2023 21:58:57 +0000 Subject: [PATCH 1268/3180] update recipes --- recipes/wip/enchant/recipe.toml | 3 ++- recipes/wip/evcxr-jupyter/recipe.toml | 3 +-- recipes/wip/evcxr-repl/recipe.toml | 3 +-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/recipes/wip/enchant/recipe.toml b/recipes/wip/enchant/recipe.toml index bb755e74..0f45a1fb 100644 --- a/recipes/wip/enchant/recipe.toml +++ b/recipes/wip/enchant/recipe.toml @@ -1,8 +1,9 @@ -#TODO Not compiled or tested +#TODO can't find glib [source] tar = "https://github.com/AbiWord/enchant/releases/download/v2.6.3/enchant-2.6.3.tar.gz" [build] template = "configure" dependencies = [ "glib", + "pcre", ] diff --git a/recipes/wip/evcxr-jupyter/recipe.toml b/recipes/wip/evcxr-jupyter/recipe.toml index 240a7134..5227b1b6 100644 --- a/recipes/wip/evcxr-jupyter/recipe.toml +++ b/recipes/wip/evcxr-jupyter/recipe.toml @@ -1,7 +1,6 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/evcxr/evcxr" -rev = "e6deec6060bc47297eb90674cca496c6874f99ba" [build] template = "custom" script = """ diff --git a/recipes/wip/evcxr-repl/recipe.toml b/recipes/wip/evcxr-repl/recipe.toml index 9be6de8f..ea87ac27 100644 --- a/recipes/wip/evcxr-repl/recipe.toml +++ b/recipes/wip/evcxr-repl/recipe.toml @@ -1,7 +1,6 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/evcxr/evcxr" -rev = "e6deec6060bc47297eb90674cca496c6874f99ba" [build] template = "custom" script = """ From ae77189a3890e001a18d0eec8015a43f8f43e9de Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 20 Dec 2023 22:46:56 +0000 Subject: [PATCH 1269/3180] update crates --- recipes/wip/exa/recipe.toml | 2 +- recipes/wip/exhaust/recipe.toml | 2 +- recipes/wip/exuberant-ctags/recipe.toml | 2 +- recipes/wip/eza/recipe.toml | 1 - 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/recipes/wip/exa/recipe.toml b/recipes/wip/exa/recipe.toml index 37991b17..c45f909b 100644 --- a/recipes/wip/exa/recipe.toml +++ b/recipes/wip/exa/recipe.toml @@ -1,4 +1,4 @@ -#TODO redox_syscall crate error +#TODO outdated redox_syscall crate (after cargo update) [source] git = "https://github.com/ogham/exa" [build] diff --git a/recipes/wip/exhaust/recipe.toml b/recipes/wip/exhaust/recipe.toml index 38b427ed..7a9b8254 100644 --- a/recipes/wip/exhaust/recipe.toml +++ b/recipes/wip/exhaust/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO outdated redox_syscall crate [source] git = "https://github.com/heyrict/exhaust" [build] diff --git a/recipes/wip/exuberant-ctags/recipe.toml b/recipes/wip/exuberant-ctags/recipe.toml index 6f9a1240..cfb512f6 100644 --- a/recipes/wip/exuberant-ctags/recipe.toml +++ b/recipes/wip/exuberant-ctags/recipe.toml @@ -1,4 +1,4 @@ -#TODO probably wrong template, lacking build instructions +#TODO compilation error - permission denied [source] tar = "https://sourceforge.net/projects/ctags/files/ctags/5.8/ctags-5.8.tar.gz/download" [build] diff --git a/recipes/wip/eza/recipe.toml b/recipes/wip/eza/recipe.toml index 8bee56b2..e746d395 100644 --- a/recipes/wip/eza/recipe.toml +++ b/recipes/wip/eza/recipe.toml @@ -1,6 +1,5 @@ #TODO outdated redox_syscall crate [source] git = "https://github.com/eza-community/eza" -rev = "edcf392c78abd8abea76d4f59fb639ad134a0d8b" [build] template = "cargo" From 74620a753e6cce40c353b48cd162bb1b26b273cf Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 20 Dec 2023 23:34:26 +0000 Subject: [PATCH 1270/3180] update fazi --- recipes/wip/fazi/recipe.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/fazi/recipe.toml b/recipes/wip/fazi/recipe.toml index d1e35386..e85d69fc 100644 --- a/recipes/wip/fazi/recipe.toml +++ b/recipes/wip/fazi/recipe.toml @@ -2,4 +2,7 @@ [source] git = "https://github.com/landaire/fazi" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_examples simple_harness +""" From c22fed1156199c9724cbd58d3dd0341672bc4607 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 20 Dec 2023 23:37:36 +0000 Subject: [PATCH 1271/3180] update fazi --- recipes/wip/fazi/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/fazi/recipe.toml b/recipes/wip/fazi/recipe.toml index e85d69fc..29623e38 100644 --- a/recipes/wip/fazi/recipe.toml +++ b/recipes/wip/fazi/recipe.toml @@ -4,5 +4,5 @@ git = "https://github.com/landaire/fazi" [build] template = "custom" script = """ -cookbook_cargo_examples simple_harness +cookbook_cargo_packages fazi """ From e617653ed183408004603f73f0d0eb6579aa1cf6 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 20 Dec 2023 23:45:26 +0000 Subject: [PATCH 1272/3180] update recipes --- recipes/wip/fazi/recipe.toml | 2 +- recipes/wip/fclones/recipe.toml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/fazi/recipe.toml b/recipes/wip/fazi/recipe.toml index 29623e38..9ed656e7 100644 --- a/recipes/wip/fazi/recipe.toml +++ b/recipes/wip/fazi/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO library source code error [source] git = "https://github.com/landaire/fazi" [build] diff --git a/recipes/wip/fclones/recipe.toml b/recipes/wip/fclones/recipe.toml index e47ae6e3..5337458a 100644 --- a/recipes/wip/fclones/recipe.toml +++ b/recipes/wip/fclones/recipe.toml @@ -1,6 +1,5 @@ #TODO file-owner crate error [source] git = "https://github.com/pkolaczk/fclones" -rev = "a55e427dadc8eb6f6c9ecc967fb6e0bdf5257123" [build] template = "cargo" From fb8f4124d49eb5a7a9e2d33163a310e7851606f7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 20 Dec 2023 23:47:23 +0000 Subject: [PATCH 1273/3180] update fclones --- recipes/wip/fclones/recipe.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/fclones/recipe.toml b/recipes/wip/fclones/recipe.toml index 5337458a..ecde7ce9 100644 --- a/recipes/wip/fclones/recipe.toml +++ b/recipes/wip/fclones/recipe.toml @@ -2,4 +2,7 @@ [source] git = "https://github.com/pkolaczk/fclones" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages fclones +""" From 509506a6583ef5458cfec292016edbc73eae231e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 00:05:13 +0000 Subject: [PATCH 1274/3180] update recipes --- recipes/wip/felix/recipe.toml | 4 ++-- recipes/wip/fend/recipe.toml | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/wip/felix/recipe.toml b/recipes/wip/felix/recipe.toml index d89ccd29..814ce381 100644 --- a/recipes/wip/felix/recipe.toml +++ b/recipes/wip/felix/recipe.toml @@ -1,5 +1,5 @@ -#TODO link error: getgroups +#TODO compiled but not tested [source] git = "https://github.com/kyoheiu/felix" [build] -template = "cargo" \ No newline at end of file +template = "cargo" diff --git a/recipes/wip/fend/recipe.toml b/recipes/wip/fend/recipe.toml index 68fdb6e3..c0cc54e0 100644 --- a/recipes/wip/fend/recipe.toml +++ b/recipes/wip/fend/recipe.toml @@ -1,7 +1,6 @@ #TODO compilation error (after a patch on the ring crate) [source] git = "https://github.com/printfn/fend" -rev = "e2b728fcf804cfaff4bda86eff495adda81a50d7" [build] template = "custom" script = """ From 89f9f3b49fe5e9a4dc12520e389e8b2b36eba939 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 00:27:23 +0000 Subject: [PATCH 1275/3180] update recipes --- recipes/wip/fend/recipe.toml | 2 +- recipes/wip/ffizer/recipe.toml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/fend/recipe.toml b/recipes/wip/fend/recipe.toml index c0cc54e0..3066ea69 100644 --- a/recipes/wip/fend/recipe.toml +++ b/recipes/wip/fend/recipe.toml @@ -1,4 +1,4 @@ -#TODO compilation error (after a patch on the ring crate) +#TODO compiled but not tested [source] git = "https://github.com/printfn/fend" [build] diff --git a/recipes/wip/ffizer/recipe.toml b/recipes/wip/ffizer/recipe.toml index 2e42a720..91dc24e3 100644 --- a/recipes/wip/ffizer/recipe.toml +++ b/recipes/wip/ffizer/recipe.toml @@ -1,7 +1,6 @@ #TODO compilation error (after a patch on the ring crate) [source] git = "https://github.com/ffizer/ffizer" -rev = "050eedc1a609575b4fe21649f8995aa803b6c9bb" [build] template = "custom" script = """ From 35c98606a7f90f6f1e81acdb09f62d1aeaf7d0d7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 00:31:31 +0000 Subject: [PATCH 1276/3180] add ffizer dependency --- recipes/wip/ffizer/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/wip/ffizer/recipe.toml b/recipes/wip/ffizer/recipe.toml index 91dc24e3..0cd537a2 100644 --- a/recipes/wip/ffizer/recipe.toml +++ b/recipes/wip/ffizer/recipe.toml @@ -3,6 +3,9 @@ git = "https://github.com/ffizer/ffizer" [build] template = "custom" +dependencies = [ + "openssl1", +] script = """ cookbook_cargo --features cli """ From 9afb69e33e1dece54d32e72517c204d3a4a29aea Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 00:41:32 +0000 Subject: [PATCH 1277/3180] update recipes --- recipes/wip/ffizer/recipe.toml | 2 +- recipes/wip/file/recipe.toml | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/wip/ffizer/recipe.toml b/recipes/wip/ffizer/recipe.toml index 0cd537a2..f0160056 100644 --- a/recipes/wip/ffizer/recipe.toml +++ b/recipes/wip/ffizer/recipe.toml @@ -1,4 +1,4 @@ -#TODO compilation error (after a patch on the ring crate) +#TODO libssh2-sys crate error [source] git = "https://github.com/ffizer/ffizer" [build] diff --git a/recipes/wip/file/recipe.toml b/recipes/wip/file/recipe.toml index 03cd93d5..14603c90 100644 --- a/recipes/wip/file/recipe.toml +++ b/recipes/wip/file/recipe.toml @@ -1,6 +1,5 @@ #TODO not compiled or tested [source] -git = "https://github.com/file/file" -rev = "4cbd5c8f0851201d203755b76cb66ba991ffd8be" +tar = "https://astron.com/pub/file/file-5.45.tar.gz" [build] template = "configure" From 94280c8cb7975d36a64acb14a2465def8da233fd Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 00:47:29 +0000 Subject: [PATCH 1278/3180] update recipes --- recipes/wip/file/recipe.toml | 2 +- recipes/wip/fio/recipe.toml | 2 +- recipes/wip/firedbg/recipe.toml | 7 +++++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/recipes/wip/file/recipe.toml b/recipes/wip/file/recipe.toml index 14603c90..b8bc7572 100644 --- a/recipes/wip/file/recipe.toml +++ b/recipes/wip/file/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compilation error [source] tar = "https://astron.com/pub/file/file-5.45.tar.gz" [build] diff --git a/recipes/wip/fio/recipe.toml b/recipes/wip/fio/recipe.toml index ca14abcd..80c3bd76 100644 --- a/recipes/wip/fio/recipe.toml +++ b/recipes/wip/fio/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO configuration problem [source] git = "https://github.com/axboe/fio" rev = "624e263f6acb1563471a83601ce19dfb77ac5694" diff --git a/recipes/wip/firedbg/recipe.toml b/recipes/wip/firedbg/recipe.toml index 7de858c8..0a96574f 100644 --- a/recipes/wip/firedbg/recipe.toml +++ b/recipes/wip/firedbg/recipe.toml @@ -1,6 +1,9 @@ -#TODO probably wrong template, if it doesn't work use the "command" package +#TODO [source] git = "https://github.com/SeaQL/FireDBG.for.Rust" rev = "2c1ec30113e2a0c857a37beb4177884528ae69bc" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages command +""" From 54de9becbea26a5f00b098a95925d6ff84a65561 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 00:49:49 +0000 Subject: [PATCH 1279/3180] update firedbg --- recipes/wip/firedbg/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/firedbg/recipe.toml b/recipes/wip/firedbg/recipe.toml index 0a96574f..a76594c3 100644 --- a/recipes/wip/firedbg/recipe.toml +++ b/recipes/wip/firedbg/recipe.toml @@ -5,5 +5,5 @@ rev = "2c1ec30113e2a0c857a37beb4177884528ae69bc" [build] template = "custom" script = """ -cookbook_cargo_packages command +cookbook_cargo_packages firedbg """ From f05325173b84023ec38de4b2de3765b854643dd1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 00:50:15 +0000 Subject: [PATCH 1280/3180] update firedbg --- recipes/wip/firedbg/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/firedbg/recipe.toml b/recipes/wip/firedbg/recipe.toml index a76594c3..8ef0d28f 100644 --- a/recipes/wip/firedbg/recipe.toml +++ b/recipes/wip/firedbg/recipe.toml @@ -5,5 +5,5 @@ rev = "2c1ec30113e2a0c857a37beb4177884528ae69bc" [build] template = "custom" script = """ -cookbook_cargo_packages firedbg +cookbook_cargo_packages firedbg-cli """ From 2fd0fbf8beea8777f407d8f4e63226d76c88189f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 01:08:18 +0000 Subject: [PATCH 1281/3180] update recipes --- recipes/wip/firedbg/recipe.toml | 2 +- recipes/wip/flex/recipe.toml | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/recipes/wip/firedbg/recipe.toml b/recipes/wip/firedbg/recipe.toml index 8ef0d28f..005131f1 100644 --- a/recipes/wip/firedbg/recipe.toml +++ b/recipes/wip/firedbg/recipe.toml @@ -1,4 +1,4 @@ -#TODO +#TODO missing script to properly move the binary [source] git = "https://github.com/SeaQL/FireDBG.for.Rust" rev = "2c1ec30113e2a0c857a37beb4177884528ae69bc" diff --git a/recipes/wip/flex/recipe.toml b/recipes/wip/flex/recipe.toml index da5b01df..8591dd04 100644 --- a/recipes/wip/flex/recipe.toml +++ b/recipes/wip/flex/recipe.toml @@ -2,8 +2,4 @@ [source] tar = "https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz" [build] -template = "custom" -script = """ -./autogen.sh -cookbook_configure -""" +template = "configure" From 33dd1f469518f76fca8df78c81d60d251f2a7ec1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 01:32:01 +0000 Subject: [PATCH 1282/3180] update recipes --- recipes/wip/flex/recipe.toml | 2 +- recipes/wip/fltk/recipe.toml | 2 +- recipes/wip/fontfor/recipe.toml | 2 +- recipes/wip/freeglut/recipe.toml | 6 +++--- recipes/wip/{fyrox => fyrox-template}/recipe.toml | 5 ++++- 5 files changed, 10 insertions(+), 7 deletions(-) rename recipes/wip/{fyrox => fyrox-template}/recipe.toml (65%) diff --git a/recipes/wip/flex/recipe.toml b/recipes/wip/flex/recipe.toml index 8591dd04..da86f681 100644 --- a/recipes/wip/flex/recipe.toml +++ b/recipes/wip/flex/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested yet +#TODO configuration error [source] tar = "https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz" [build] diff --git a/recipes/wip/fltk/recipe.toml b/recipes/wip/fltk/recipe.toml index ec8ec37a..c2e062dc 100644 --- a/recipes/wip/fltk/recipe.toml +++ b/recipes/wip/fltk/recipe.toml @@ -4,7 +4,7 @@ tar = "https://www.fltk.org/pub/fltk/1.3.8/fltk-1.3.8-source.tar.bz2" [build] template = "configure" dependencies = [ - "mesa_glu", + "mesa-glu", "freeglut", "cairo" "fontconfig", diff --git a/recipes/wip/fontfor/recipe.toml b/recipes/wip/fontfor/recipe.toml index 43d0d391..fe9e020f 100644 --- a/recipes/wip/fontfor/recipe.toml +++ b/recipes/wip/fontfor/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/7sDream/fontfor" rev = "b0d868dc5f955b58b3a5ba6c97156f4060e7474b" diff --git a/recipes/wip/freeglut/recipe.toml b/recipes/wip/freeglut/recipe.toml index cda38252..59b8e5fc 100644 --- a/recipes/wip/freeglut/recipe.toml +++ b/recipes/wip/freeglut/recipe.toml @@ -1,7 +1,7 @@ +#TODO make Wayland work [source] -tar = "https://cytranet.dl.sourceforge.net/project/freeglut/freeglut/3.0.0/freeglut-3.0.0.tar.gz" -blake3 = "08c8874d6ddad5be4860813865d4d4e2a84c294da0f3cf82a29e43920806b0da" - +tar = "https://github.com/freeglut/freeglut/releases/download/v3.4.0/freeglut-3.4.0.tar.gz" +#blake3 = "08c8874d6ddad5be4860813865d4d4e2a84c294da0f3cf82a29e43920806b0da" [build] dependencies = [ "mesa", diff --git a/recipes/wip/fyrox/recipe.toml b/recipes/wip/fyrox-template/recipe.toml similarity index 65% rename from recipes/wip/fyrox/recipe.toml rename to recipes/wip/fyrox-template/recipe.toml index a40f5b93..b886068e 100644 --- a/recipes/wip/fyrox/recipe.toml +++ b/recipes/wip/fyrox-template/recipe.toml @@ -3,4 +3,7 @@ git = "https://github.com/FyroxEngine/Fyrox" rev = "8d3e2e2cf29b7eefa78d14ff92156caeed88b955" [buiild] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages fyrox-template +""" From fce50d3531335410486523d064dbfefe8536d78a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 01:32:37 +0000 Subject: [PATCH 1283/3180] fix typo --- recipes/wip/fyrox-template/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/fyrox-template/recipe.toml b/recipes/wip/fyrox-template/recipe.toml index b886068e..9534176b 100644 --- a/recipes/wip/fyrox-template/recipe.toml +++ b/recipes/wip/fyrox-template/recipe.toml @@ -2,7 +2,7 @@ [source] git = "https://github.com/FyroxEngine/Fyrox" rev = "8d3e2e2cf29b7eefa78d14ff92156caeed88b955" -[buiild] +[build] template = "custom" script = """ cookbook_cargo_packages fyrox-template From 35bac0bd94691bc0a352b881aa6941d94bf6b9d6 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 01:42:06 +0000 Subject: [PATCH 1284/3180] update recipes --- recipes/wip/fyrox-editor/recipe.toml | 9 +++++++++ recipes/wip/fyrox-template/recipe.toml | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 recipes/wip/fyrox-editor/recipe.toml diff --git a/recipes/wip/fyrox-editor/recipe.toml b/recipes/wip/fyrox-editor/recipe.toml new file mode 100644 index 00000000..f50cfff0 --- /dev/null +++ b/recipes/wip/fyrox-editor/recipe.toml @@ -0,0 +1,9 @@ +#TODO +[source] +git = "https://github.com/FyroxEngine/Fyrox" +rev = "8d3e2e2cf29b7eefa78d14ff92156caeed88b955" +[build] +template = "custom" +script = """ +cookbook_cargo_packages editor +""" diff --git a/recipes/wip/fyrox-template/recipe.toml b/recipes/wip/fyrox-template/recipe.toml index 9534176b..aee6ccf1 100644 --- a/recipes/wip/fyrox-template/recipe.toml +++ b/recipes/wip/fyrox-template/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested yet +#TODO compiled but not tested [source] git = "https://github.com/FyroxEngine/Fyrox" rev = "8d3e2e2cf29b7eefa78d14ff92156caeed88b955" From cb37b6a028a4995221ec28e12d24b3930756a526 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 01:49:23 +0000 Subject: [PATCH 1285/3180] update recipes --- recipes/wip/fyrox-editor/recipe.toml | 9 --------- recipes/wip/fzf-make/recipe.toml | 3 +-- 2 files changed, 1 insertion(+), 11 deletions(-) delete mode 100644 recipes/wip/fyrox-editor/recipe.toml diff --git a/recipes/wip/fyrox-editor/recipe.toml b/recipes/wip/fyrox-editor/recipe.toml deleted file mode 100644 index f50cfff0..00000000 --- a/recipes/wip/fyrox-editor/recipe.toml +++ /dev/null @@ -1,9 +0,0 @@ -#TODO -[source] -git = "https://github.com/FyroxEngine/Fyrox" -rev = "8d3e2e2cf29b7eefa78d14ff92156caeed88b955" -[build] -template = "custom" -script = """ -cookbook_cargo_packages editor -""" diff --git a/recipes/wip/fzf-make/recipe.toml b/recipes/wip/fzf-make/recipe.toml index 8c81344b..a6dd4da9 100644 --- a/recipes/wip/fzf-make/recipe.toml +++ b/recipes/wip/fzf-make/recipe.toml @@ -1,6 +1,5 @@ -#TODO Not compiled or tested +#TODO termios crate error [source] git = "https://github.com/kyu08/fzf-make" -rev = "e334513f976f42f4174c4dd175da653f248ec9b8" [build] template = "cargo" From 0a3ce0110624a6858d64d3074a30279da5dfd5fe Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 02:12:52 +0000 Subject: [PATCH 1286/3180] update recipes --- recipes/wip/game-of-life-rs/recipe.toml | 2 +- recipes/wip/gameroy/recipe.toml | 5 ++++- recipes/wip/gdb/recipe.toml | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/recipes/wip/game-of-life-rs/recipe.toml b/recipes/wip/game-of-life-rs/recipe.toml index 85d5a1e7..45d14fcb 100644 --- a/recipes/wip/game-of-life-rs/recipe.toml +++ b/recipes/wip/game-of-life-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/kachark/game-of-life-rs" [build] diff --git a/recipes/wip/gameroy/recipe.toml b/recipes/wip/gameroy/recipe.toml index af08446d..be4a1493 100644 --- a/recipes/wip/gameroy/recipe.toml +++ b/recipes/wip/gameroy/recipe.toml @@ -1,9 +1,12 @@ -#TODO Not compiled or tested +#TODO make Wayland work [source] git = "https://github.com/Rodrigodd/gameroy" rev = "78d12b7a74cda37002cd2b964baaa761285925ab" [build] template = "custom" +dependencies = [ + "libwayland", +] script = """ cookbook_cargo_packages gameroy-native """ diff --git a/recipes/wip/gdb/recipe.toml b/recipes/wip/gdb/recipe.toml index 376f98e6..5538f64e 100644 --- a/recipes/wip/gdb/recipe.toml +++ b/recipes/wip/gdb/recipe.toml @@ -5,6 +5,7 @@ tar = "https://ftp.gnu.org/gnu/gdb/gdb-14.1.tar.xz" template = "custom" dependencies = [ "libgmp", + "libmpfr", ] script = """ COOKBOOK_CONFIGURE_FLAGS+=( From 9280bc7c100107a5eceb117d186e66c8a448f913 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 02:26:08 +0000 Subject: [PATCH 1287/3180] update recipes --- recipes/wip/gdb/recipe.toml | 2 +- recipes/wip/gengo/recipe.toml | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/wip/gdb/recipe.toml b/recipes/wip/gdb/recipe.toml index 5538f64e..1f1c2da2 100644 --- a/recipes/wip/gdb/recipe.toml +++ b/recipes/wip/gdb/recipe.toml @@ -1,4 +1,4 @@ -#TODO probably wrong script, see https://sourceware.org/gdb/wiki/BuildingNatively +#TODO compiled but not tested [source] tar = "https://ftp.gnu.org/gnu/gdb/gdb-14.1.tar.xz" [build] diff --git a/recipes/wip/gengo/recipe.toml b/recipes/wip/gengo/recipe.toml index c510cbf3..ac259c0a 100644 --- a/recipes/wip/gengo/recipe.toml +++ b/recipes/wip/gengo/recipe.toml @@ -3,4 +3,7 @@ git = "https://github.com/spenserblack/gengo" rev = "272e794ff895149152f942a9b71ceb39711a4fb9" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages gengo +""" From 7cdcbd9ff3b03dfa9a6914fefce1ef5a58e7ad6c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 02:48:19 +0000 Subject: [PATCH 1288/3180] update recipes --- recipes/wip/gengo/recipe.toml | 2 +- recipes/wip/ghostpdl/recipe.toml | 2 +- recipes/wip/ghostscript/recipe.toml | 1 + recipes/wip/gifski/recipe.toml | 2 +- recipes/wip/git-absorb/recipe.toml | 1 - 5 files changed, 4 insertions(+), 4 deletions(-) diff --git a/recipes/wip/gengo/recipe.toml b/recipes/wip/gengo/recipe.toml index ac259c0a..632823fd 100644 --- a/recipes/wip/gengo/recipe.toml +++ b/recipes/wip/gengo/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO missing script to properly move the binary [source] git = "https://github.com/spenserblack/gengo" rev = "272e794ff895149152f942a9b71ceb39711a4fb9" diff --git a/recipes/wip/ghostpdl/recipe.toml b/recipes/wip/ghostpdl/recipe.toml index 0fdcb345..b6ebf1d7 100644 --- a/recipes/wip/ghostpdl/recipe.toml +++ b/recipes/wip/ghostpdl/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO error on the libtiff configure script [source] tar = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10021/ghostpdl-10.02.1.tar.gz" [build] diff --git a/recipes/wip/ghostscript/recipe.toml b/recipes/wip/ghostscript/recipe.toml index 3e754ba9..feced6db 100644 --- a/recipes/wip/ghostscript/recipe.toml +++ b/recipes/wip/ghostscript/recipe.toml @@ -1,3 +1,4 @@ +#TODO error on the libtiff configure script #TODO customization - https://ghostscript.readthedocs.io/en/latest/Make.html [source] tar = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10021/ghostscript-10.02.1.tar.gz" diff --git a/recipes/wip/gifski/recipe.toml b/recipes/wip/gifski/recipe.toml index e5a30ff0..04acabad 100644 --- a/recipes/wip/gifski/recipe.toml +++ b/recipes/wip/gifski/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/ImageOptim/gifski" rev = "ba659390435d79db66f2e5e0a876b5d2e8681dcb" diff --git a/recipes/wip/git-absorb/recipe.toml b/recipes/wip/git-absorb/recipe.toml index eaa5c1dc..76652e8e 100644 --- a/recipes/wip/git-absorb/recipe.toml +++ b/recipes/wip/git-absorb/recipe.toml @@ -1,6 +1,5 @@ #TODO Not compiled or tested [source] git = "https://github.com/tummychow/git-absorb" -rev = "1c5aecfcc5244b8fb49c9c962387ef3713170392" [build] template = "cargo" From de5f2c3bdbb089d738bad1cfe4d2e1d5d4d3cb04 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 02:54:22 +0000 Subject: [PATCH 1289/3180] update recipes --- recipes/wip/git-absorb/recipe.toml | 2 +- recipes/wip/git-cliff/recipe.toml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/git-absorb/recipe.toml b/recipes/wip/git-absorb/recipe.toml index 76652e8e..698827f1 100644 --- a/recipes/wip/git-absorb/recipe.toml +++ b/recipes/wip/git-absorb/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/tummychow/git-absorb" [build] diff --git a/recipes/wip/git-cliff/recipe.toml b/recipes/wip/git-cliff/recipe.toml index 9aff7b59..5e4506d2 100644 --- a/recipes/wip/git-cliff/recipe.toml +++ b/recipes/wip/git-cliff/recipe.toml @@ -1,7 +1,6 @@ #TODO compiled but not tested (after a patch on the ring crate) [source] git = "https://github.com/orhun/git-cliff" -rev = "0af9eb24888d1a8c9b2887fbe5427985582a0f26" [build] template = "custom" script = """ From d7e4517ca881607e0cbaf5082df6395a0a0626ec Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 02:57:35 +0000 Subject: [PATCH 1290/3180] update git-ignore-generator --- recipes/wip/git-ignore-generator/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/wip/git-ignore-generator/recipe.toml b/recipes/wip/git-ignore-generator/recipe.toml index ee180de9..9b0c9e25 100644 --- a/recipes/wip/git-ignore-generator/recipe.toml +++ b/recipes/wip/git-ignore-generator/recipe.toml @@ -1,6 +1,5 @@ #TODO compiled but not tested (after a patch on the ring crate) [source] git = "https://github.com/sondr3/git-ignore" -rev = "299a7149d114dbdad2c5f82617fdf36e45ccfcb0" [build] template = "cargo" From 6b5e28618f1bdf62cf9c15d485a316e9b75ce3d6 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 03:45:30 +0000 Subject: [PATCH 1291/3180] update recipes --- recipes/wip/git-ignore-generator/recipe.toml | 2 +- recipes/wip/glicol-cli/recipe.toml | 2 +- recipes/wip/glou/recipe.toml | 2 +- recipes/wip/gobang/recipe.toml | 2 +- recipes/wip/gphoto2/recipe.toml | 5 ++++- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/recipes/wip/git-ignore-generator/recipe.toml b/recipes/wip/git-ignore-generator/recipe.toml index 9b0c9e25..320e0d61 100644 --- a/recipes/wip/git-ignore-generator/recipe.toml +++ b/recipes/wip/git-ignore-generator/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested (after a patch on the ring crate) +#TODO compiled but not tested (after a cargo update and a patch on the ring crate) [source] git = "https://github.com/sondr3/git-ignore" [build] diff --git a/recipes/wip/glicol-cli/recipe.toml b/recipes/wip/glicol-cli/recipe.toml index d07c182a..7b6ae425 100644 --- a/recipes/wip/glicol-cli/recipe.toml +++ b/recipes/wip/glicol-cli/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/glicol/glicol-cli" [build] diff --git a/recipes/wip/glou/recipe.toml b/recipes/wip/glou/recipe.toml index 0a7b69f9..646f237e 100644 --- a/recipes/wip/glou/recipe.toml +++ b/recipes/wip/glou/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO x11rb crate error [source] git = "https://github.com/Nurrl/glou" [build] diff --git a/recipes/wip/gobang/recipe.toml b/recipes/wip/gobang/recipe.toml index 772274f9..6a20b6d0 100644 --- a/recipes/wip/gobang/recipe.toml +++ b/recipes/wip/gobang/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO mio crate error (after cargo update and patch on ring) [source] git = "https://github.com/TaKO8Ki/gobang" [build] diff --git a/recipes/wip/gphoto2/recipe.toml b/recipes/wip/gphoto2/recipe.toml index 33345674..f05f1012 100644 --- a/recipes/wip/gphoto2/recipe.toml +++ b/recipes/wip/gphoto2/recipe.toml @@ -1,5 +1,8 @@ -#TODO probably wrong template, lacking build instructions +#TODO [source] tar = "https://sourceforge.net/projects/gphoto/files/gphoto/2.5.28/gphoto2-2.5.28.tar.xz/download" [build] template = "configure" +dependencies = [ + "libgphoto2", +] From ea15062cfaada61464db534b0698529024d6476e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 13:01:53 +0000 Subject: [PATCH 1292/3180] update recipes --- recipes/wip/gphoto2/recipe.toml | 2 +- recipes/wip/gping/recipe.toml | 2 +- recipes/wip/gptman/recipe.toml | 2 +- recipes/wip/graphicsmagick/recipe.toml | 3 ++- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/recipes/wip/gphoto2/recipe.toml b/recipes/wip/gphoto2/recipe.toml index f05f1012..c56c36ba 100644 --- a/recipes/wip/gphoto2/recipe.toml +++ b/recipes/wip/gphoto2/recipe.toml @@ -1,4 +1,4 @@ -#TODO +#TODO make libgphoto2 work [source] tar = "https://sourceforge.net/projects/gphoto/files/gphoto/2.5.28/gphoto2-2.5.28.tar.xz/download" [build] diff --git a/recipes/wip/gping/recipe.toml b/recipes/wip/gping/recipe.toml index 28cdf1ed..d265a0b3 100644 --- a/recipes/wip/gping/recipe.toml +++ b/recipes/wip/gping/recipe.toml @@ -1,4 +1,4 @@ -#TODO weird error on the end of compilation +#TODO program source code error [source] git = "https://github.com/orf/gping" rev = "7547db0d2d8c22cf15066d51fcd41dc57cb5b046" diff --git a/recipes/wip/gptman/recipe.toml b/recipes/wip/gptman/recipe.toml index 249051c4..8f39ae24 100644 --- a/recipes/wip/gptman/recipe.toml +++ b/recipes/wip/gptman/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled but not tested +#TODO outdated redox_syscall crate [source] git = "https://github.com/rust-disk-partition-management/gptman" [build] diff --git a/recipes/wip/graphicsmagick/recipe.toml b/recipes/wip/graphicsmagick/recipe.toml index d7b12fbd..81e62d43 100644 --- a/recipes/wip/graphicsmagick/recipe.toml +++ b/recipes/wip/graphicsmagick/recipe.toml @@ -1,4 +1,5 @@ #TODO Not compiled or tested +#TODO fix libwebp #TODO more features - http://www.graphicsmagick.org/README.html#add-on-libraries-programs [source] tar = "https://sourceforge.net/projects/graphicsmagick/files/graphicsmagick/1.3.42/GraphicsMagick-1.3.42.tar.xz/download" @@ -7,7 +8,7 @@ template = "configure" dependencies = [ "bzip2", "freetype2", - "libwebp", + #"libwebp", "libjpeg", "libpng", "libtiff", From 17a1cb9e106ae679d0dd990a123af85f226d0d6d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 13:20:50 +0000 Subject: [PATCH 1293/3180] update recipes --- recipes/wip/graphicsmagick/recipe.toml | 2 +- recipes/wip/groff/recipe.toml | 2 +- recipes/wip/gtk-doc/recipe.toml | 4 ++-- recipes/wip/gtk-engines/recipe.toml | 2 +- recipes/wip/gtkglext/recipe.toml | 2 +- recipes/wip/gupax/recipe.toml | 2 +- recipes/wip/halloy/recipe.toml | 5 ++++- 7 files changed, 11 insertions(+), 8 deletions(-) diff --git a/recipes/wip/graphicsmagick/recipe.toml b/recipes/wip/graphicsmagick/recipe.toml index 81e62d43..9711bca1 100644 --- a/recipes/wip/graphicsmagick/recipe.toml +++ b/recipes/wip/graphicsmagick/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error - missing sys/poll.h #TODO fix libwebp #TODO more features - http://www.graphicsmagick.org/README.html#add-on-libraries-programs [source] diff --git a/recipes/wip/groff/recipe.toml b/recipes/wip/groff/recipe.toml index fea305df..b851b18d 100644 --- a/recipes/wip/groff/recipe.toml +++ b/recipes/wip/groff/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error - port fseterr.c [source] tar = "https://ftp.gnu.org/gnu/groff/groff-1.23.0.tar.gz" [build] diff --git a/recipes/wip/gtk-doc/recipe.toml b/recipes/wip/gtk-doc/recipe.toml index 83e46e61..423615c0 100644 --- a/recipes/wip/gtk-doc/recipe.toml +++ b/recipes/wip/gtk-doc/recipe.toml @@ -1,5 +1,5 @@ -#TODO not compiled or tested +#TODO missing script for Meson [source] tar = "https://download.gnome.org/sources/gtk-doc/1.33/gtk-doc-1.33.2.tar.xz" [build] -template = "configure" +template = "custom" diff --git a/recipes/wip/gtk-engines/recipe.toml b/recipes/wip/gtk-engines/recipe.toml index f8ef8be2..6366c8ce 100644 --- a/recipes/wip/gtk-engines/recipe.toml +++ b/recipes/wip/gtk-engines/recipe.toml @@ -1,4 +1,4 @@ -#TODO probably wrong template +#TODO configuration problem, can't recognize the Redox target [source] tar = "https://download.gnome.org/sources/gtk-engines/2.91/gtk-engines-2.91.1.tar.gz" [build] diff --git a/recipes/wip/gtkglext/recipe.toml b/recipes/wip/gtkglext/recipe.toml index a23c52c3..479bdf19 100644 --- a/recipes/wip/gtkglext/recipe.toml +++ b/recipes/wip/gtkglext/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO configuration problem, can't recognize the Redox target [source] tar = "https://download.gnome.org/sources/gtkglext/1.2/gtkglext-1.2.0.tar.bz2" [build] diff --git a/recipes/wip/gupax/recipe.toml b/recipes/wip/gupax/recipe.toml index 465354b2..df5aa802 100644 --- a/recipes/wip/gupax/recipe.toml +++ b/recipes/wip/gupax/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO openssl-sys crate error [source] git = "https://github.com/hinto-janai/gupax" rev = "1bfd72a8c2a1fe0a1583933e4d94a0450d0d964c" diff --git a/recipes/wip/halloy/recipe.toml b/recipes/wip/halloy/recipe.toml index 37398238..ab783038 100644 --- a/recipes/wip/halloy/recipe.toml +++ b/recipes/wip/halloy/recipe.toml @@ -1,5 +1,8 @@ -#TODO half 2.3.1 package require rustc 1.70 or newer +#TODO (after cargo update) [source] git = "https://github.com/squidowl/halloy" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 492a884ec733e5405c22c15271b486fb43babe09 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 13:31:40 +0000 Subject: [PATCH 1294/3180] update recipes --- recipes/wip/halloy/recipe.toml | 2 +- recipes/wip/harec/recipe.toml | 2 +- recipes/wip/hashgood/recipe.toml | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/wip/halloy/recipe.toml b/recipes/wip/halloy/recipe.toml index ab783038..a25cebc5 100644 --- a/recipes/wip/halloy/recipe.toml +++ b/recipes/wip/halloy/recipe.toml @@ -1,4 +1,4 @@ -#TODO (after cargo update) +#TODO xdg-home crate error (after cargo update) [source] git = "https://github.com/squidowl/halloy" [build] diff --git a/recipes/wip/harec/recipe.toml b/recipes/wip/harec/recipe.toml index 0ee8c0d5..d94249c0 100644 --- a/recipes/wip/harec/recipe.toml +++ b/recipes/wip/harec/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO configuration problem, can't recognize the Redox triple [source] git = "https://git.sr.ht/~sircmpwn/harec" [build] diff --git a/recipes/wip/hashgood/recipe.toml b/recipes/wip/hashgood/recipe.toml index fbdfa7c1..95542371 100644 --- a/recipes/wip/hashgood/recipe.toml +++ b/recipes/wip/hashgood/recipe.toml @@ -1,6 +1,5 @@ #TODO Not compiled or tested [source] git = "https://github.com/thombles/hashgood" -rev = "9e476ded77bd2f2289f4ebe08cdfc87332827292" [build] template = "cargo" From 48c064b76e6153393759c9fb134580ad34a44383 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 13:35:51 +0000 Subject: [PATCH 1295/3180] update recipes --- recipes/wip/hashgood/recipe.toml | 2 +- recipes/wip/headers/recipe.toml | 5 ++++- recipes/wip/helix/recipe.toml | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/recipes/wip/hashgood/recipe.toml b/recipes/wip/hashgood/recipe.toml index 95542371..ec0778f2 100644 --- a/recipes/wip/hashgood/recipe.toml +++ b/recipes/wip/hashgood/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/thombles/hashgood" [build] diff --git a/recipes/wip/headers/recipe.toml b/recipes/wip/headers/recipe.toml index b1eea7f4..70db59f0 100644 --- a/recipes/wip/headers/recipe.toml +++ b/recipes/wip/headers/recipe.toml @@ -1,5 +1,8 @@ -#TODO compilation error (related to X11?) +#TODO make libxcb work [source] git = "https://github.com/transmissions11/headers" [build] template = "cargo" +dependencies = [ + "libxcb", +] diff --git a/recipes/wip/helix/recipe.toml b/recipes/wip/helix/recipe.toml index 3232d007..2dd795d4 100644 --- a/recipes/wip/helix/recipe.toml +++ b/recipes/wip/helix/recipe.toml @@ -1,6 +1,6 @@ #TODO helix-term error (after cargo update) [source] -tar = "https://github.com/helix-editor/helix/releases/download/23.05/helix-23.05-source.tar.xz" +tar = "https://github.com/helix-editor/helix" [build] template = "custom" script = """ From 2b80588ab08baaff8649fc403d7c466a7b15d33e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 13:37:11 +0000 Subject: [PATCH 1296/3180] update helix --- recipes/wip/helix/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/helix/recipe.toml b/recipes/wip/helix/recipe.toml index 2dd795d4..f3203e04 100644 --- a/recipes/wip/helix/recipe.toml +++ b/recipes/wip/helix/recipe.toml @@ -1,6 +1,6 @@ #TODO helix-term error (after cargo update) [source] -tar = "https://github.com/helix-editor/helix" +tar = "https://github.com/helix-editor/helix/releases/download/23.10/helix-23.10-source.tar.xz" [build] template = "custom" script = """ From b03153dcea425f20dfa5bd529c24fe7aa3664394 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 13:46:02 +0000 Subject: [PATCH 1297/3180] update helix --- recipes/wip/helix/recipe.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/wip/helix/recipe.toml b/recipes/wip/helix/recipe.toml index f3203e04..27490396 100644 --- a/recipes/wip/helix/recipe.toml +++ b/recipes/wip/helix/recipe.toml @@ -1,4 +1,5 @@ -#TODO helix-term error (after cargo update) +#TODO program source code error +#TODO configuration - https://docs.helix-editor.com/install.html#configuring-helixs-runtime-files [source] tar = "https://github.com/helix-editor/helix/releases/download/23.10/helix-23.10-source.tar.xz" [build] From 49fdd0c8c90871b24669be34517268081490e3a1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 13:55:41 +0000 Subject: [PATCH 1298/3180] update recipes --- recipes/wip/hgrep/recipe.toml | 2 +- recipes/wip/hickory-dns/recipe.toml | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/recipes/wip/hgrep/recipe.toml b/recipes/wip/hgrep/recipe.toml index d0940604..518bafce 100644 --- a/recipes/wip/hgrep/recipe.toml +++ b/recipes/wip/hgrep/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error, missing mimalloc sys/syscall.h [source] git = "https://github.com/rhysd/hgrep" rev = "85d7271d477a41708d89e1e7bc14e94dcab149ba" diff --git a/recipes/wip/hickory-dns/recipe.toml b/recipes/wip/hickory-dns/recipe.toml index 08faaa68..a8c2df1d 100644 --- a/recipes/wip/hickory-dns/recipe.toml +++ b/recipes/wip/hickory-dns/recipe.toml @@ -3,7 +3,19 @@ git = "https://github.com/hickory-dns/hickory-dns" rev = "408d0baca080d1b201cd33e616dc4abd160ef6c0" [build] -template = "cargo" +template = "custom" dependencies = [ "openssl1", ] +script = """ +package="hickory-dns" +"${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --package "${package}" \ + --release + --all-features + mkdir -pv "${COOKBOOK_STAGE}/bin" + cp -v \ + "target/${TARGET}/release/${package}" \ + "${COOKBOOK_STAGE}/bin/${package}" +""" From f8c43f6d7f3e576779b41e9199ea86048bea572b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 14:06:18 +0000 Subject: [PATCH 1299/3180] update hickory-dns --- recipes/wip/hickory-dns/recipe.toml | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/recipes/wip/hickory-dns/recipe.toml b/recipes/wip/hickory-dns/recipe.toml index a8c2df1d..1bcedca4 100644 --- a/recipes/wip/hickory-dns/recipe.toml +++ b/recipes/wip/hickory-dns/recipe.toml @@ -8,14 +8,5 @@ dependencies = [ "openssl1", ] script = """ -package="hickory-dns" -"${COOKBOOK_CARGO}" build \ - --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ - --package "${package}" \ - --release - --all-features - mkdir -pv "${COOKBOOK_STAGE}/bin" - cp -v \ - "target/${TARGET}/release/${package}" \ - "${COOKBOOK_STAGE}/bin/${package}" +cookbook_cargo -p hickory-dns --all-features """ From 86c774c3525afaa4855796e8597ad5c884c8a7d7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 14:07:21 +0000 Subject: [PATCH 1300/3180] fix script --- recipes/wip/hickory-dns/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/hickory-dns/recipe.toml b/recipes/wip/hickory-dns/recipe.toml index 1bcedca4..8b8ecd88 100644 --- a/recipes/wip/hickory-dns/recipe.toml +++ b/recipes/wip/hickory-dns/recipe.toml @@ -8,5 +8,5 @@ dependencies = [ "openssl1", ] script = """ -cookbook_cargo -p hickory-dns --all-features +cookbook_cargo -- -p hickory-dns --all-features """ From 0b860a87bbfc8d90a92f789521dfa1270062406e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 14:09:00 +0000 Subject: [PATCH 1301/3180] update script --- recipes/wip/hickory-dns/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/hickory-dns/recipe.toml b/recipes/wip/hickory-dns/recipe.toml index 8b8ecd88..e3571760 100644 --- a/recipes/wip/hickory-dns/recipe.toml +++ b/recipes/wip/hickory-dns/recipe.toml @@ -8,5 +8,5 @@ dependencies = [ "openssl1", ] script = """ -cookbook_cargo -- -p hickory-dns --all-features +cookbook_cargo_packages hickory-dns --all-features """ From c526ad94176358d13a312d143a8c56f79eca66a7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 14:16:19 +0000 Subject: [PATCH 1302/3180] update hickory-dns --- recipes/wip/hickory-dns/recipe.toml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/recipes/wip/hickory-dns/recipe.toml b/recipes/wip/hickory-dns/recipe.toml index e3571760..ab799bfb 100644 --- a/recipes/wip/hickory-dns/recipe.toml +++ b/recipes/wip/hickory-dns/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/hickory-dns/hickory-dns" rev = "408d0baca080d1b201cd33e616dc4abd160ef6c0" @@ -8,5 +8,14 @@ dependencies = [ "openssl1", ] script = """ -cookbook_cargo_packages hickory-dns --all-features +package=hickory-dns" +"${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --package "${package}" \ + --release + --all-features + mkdir -pv "${COOKBOOK_STAGE}/bin" + cp -v \ + "target/${TARGET}/release/${package}" \ + "${COOKBOOK_STAGE}/bin/${package}" """ From 13169092f30cdb6e693b647cd820acf0d379d4e5 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 14:50:07 +0000 Subject: [PATCH 1303/3180] update recipe --- recipes/wip/himalaya/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/wip/himalaya/recipe.toml b/recipes/wip/himalaya/recipe.toml index 7ff03887..91a9b9eb 100644 --- a/recipes/wip/himalaya/recipe.toml +++ b/recipes/wip/himalaya/recipe.toml @@ -1,7 +1,6 @@ #TODO ring crate error [source] git = "https://github.com/soywod/himalaya" -rev = "7ad1772c83f53f672d93dcf3921c722cf750d38f" [build] template = "cargo" dependencies = [ From 6be009333516b5658240dc5ec1c463650d779b27 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 14:57:50 +0000 Subject: [PATCH 1304/3180] update recipes --- recipes/wip/himalaya/recipe.toml | 2 +- recipes/wip/horsetab/recipe.toml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/himalaya/recipe.toml b/recipes/wip/himalaya/recipe.toml index 91a9b9eb..f4de5306 100644 --- a/recipes/wip/himalaya/recipe.toml +++ b/recipes/wip/himalaya/recipe.toml @@ -1,4 +1,4 @@ -#TODO ring crate error +#TODO xdg-home crate error (after a patch on ring) [source] git = "https://github.com/soywod/himalaya" [build] diff --git a/recipes/wip/horsetab/recipe.toml b/recipes/wip/horsetab/recipe.toml index 7b475eab..e46d3802 100644 --- a/recipes/wip/horsetab/recipe.toml +++ b/recipes/wip/horsetab/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/ChrisVilches/horsetab" [build] template = "cargo" +dependencies = [ + "openssl1", +] From d78fa08fb2e9ce1c9a6bac2fffbb631a9c0c98a9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 15:04:09 +0000 Subject: [PATCH 1305/3180] update recipes --- recipes/wip/horsetab/recipe.toml | 2 +- recipes/wip/humphrey/recipe.toml | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/recipes/wip/horsetab/recipe.toml b/recipes/wip/horsetab/recipe.toml index e46d3802..203af168 100644 --- a/recipes/wip/horsetab/recipe.toml +++ b/recipes/wip/horsetab/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO rdev crate error [source] git = "https://github.com/ChrisVilches/horsetab" [build] diff --git a/recipes/wip/humphrey/recipe.toml b/recipes/wip/humphrey/recipe.toml index 03173fdc..5ed0afeb 100644 --- a/recipes/wip/humphrey/recipe.toml +++ b/recipes/wip/humphrey/recipe.toml @@ -4,13 +4,14 @@ git = "https://github.com/w-henderson/Humphrey" [build] template = "custom" script = """ +package="humphrey_server" "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ - --package "${humphrey_server}" \ + --package "${package}" \ --release --all-features mkdir -pv "${COOKBOOK_STAGE}/bin" cp -v \ - "target/${TARGET}/release/${humphrey_server}" \ - "${COOKBOOK_STAGE}/bin/${humphrey}_${humphrey_server}" + "target/${TARGET}/release/${package}" \ + "${COOKBOOK_STAGE}/bin/${package}" """ From ed715a541881df81984045338a9676815ef70703 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 15:28:17 +0000 Subject: [PATCH 1306/3180] update recipes --- recipes/wip/humphrey/recipe.toml | 2 +- recipes/wip/hvm/recipe.toml | 2 +- recipes/wip/hwatch/recipe.toml | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/wip/humphrey/recipe.toml b/recipes/wip/humphrey/recipe.toml index 5ed0afeb..ad98210c 100644 --- a/recipes/wip/humphrey/recipe.toml +++ b/recipes/wip/humphrey/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/w-henderson/Humphrey" [build] diff --git a/recipes/wip/hvm/recipe.toml b/recipes/wip/hvm/recipe.toml index 4bdb4831..27791717 100644 --- a/recipes/wip/hvm/recipe.toml +++ b/recipes/wip/hvm/recipe.toml @@ -1,4 +1,4 @@ -#TODO compilation error +#TODO compiled but not tested [source] git = "https://github.com/HigherOrderCO/HVM" [build] diff --git a/recipes/wip/hwatch/recipe.toml b/recipes/wip/hwatch/recipe.toml index 392f7526..21725ebd 100644 --- a/recipes/wip/hwatch/recipe.toml +++ b/recipes/wip/hwatch/recipe.toml @@ -1,6 +1,5 @@ #TODO Not compiled or tested [source] git = "https://github.com/blacknon/hwatch" -rev = "1267168468948ce4d14e61f837ac3c3474a52563" [build] template = "cargo" From 393be9c43d2368258e379e9e3818559c0f76f235 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 15:33:07 +0000 Subject: [PATCH 1307/3180] update recipes --- recipes/wip/hwatch/recipe.toml | 2 +- recipes/wip/hyperfine/recipe.toml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/hwatch/recipe.toml b/recipes/wip/hwatch/recipe.toml index 21725ebd..a11f1669 100644 --- a/recipes/wip/hwatch/recipe.toml +++ b/recipes/wip/hwatch/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO async-io crate error (after cargo update) [source] git = "https://github.com/blacknon/hwatch" [build] diff --git a/recipes/wip/hyperfine/recipe.toml b/recipes/wip/hyperfine/recipe.toml index b047ce11..a51d22b5 100644 --- a/recipes/wip/hyperfine/recipe.toml +++ b/recipes/wip/hyperfine/recipe.toml @@ -1,6 +1,5 @@ #TODO libc::RUSAGE_CHILDREN [source] git = "https://github.com/sharkdp/hyperfine" -rev = "24a0d5da1bff11567bbf307315d11cb0e10733ec" [build] template = "cargo" From 8a258055a7cf7e7ead51e17062e1a8afddec5d6d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 16:05:19 +0000 Subject: [PATCH 1308/3180] update recipes --- recipes/wip/iamb/recipe.toml | 2 +- recipes/wip/igrep/recipe.toml | 2 +- recipes/wip/imlib2/recipe.toml | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/wip/iamb/recipe.toml b/recipes/wip/iamb/recipe.toml index 68a5583e..92a67f27 100644 --- a/recipes/wip/iamb/recipe.toml +++ b/recipes/wip/iamb/recipe.toml @@ -1,4 +1,4 @@ -#TODO Rust version error (after cargo update) +#TODO x11rb crate error (after a patch on ring) [source] git = "https://github.com/ulyssa/iamb" [build] diff --git a/recipes/wip/igrep/recipe.toml b/recipes/wip/igrep/recipe.toml index b6c617ce..e55b7b3a 100644 --- a/recipes/wip/igrep/recipe.toml +++ b/recipes/wip/igrep/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/konradsz/igrep" rev = "8588755641e64cd40e569893e03628cf83cfc59f" diff --git a/recipes/wip/imlib2/recipe.toml b/recipes/wip/imlib2/recipe.toml index 8f80cc32..e4efb22b 100644 --- a/recipes/wip/imlib2/recipe.toml +++ b/recipes/wip/imlib2/recipe.toml @@ -7,4 +7,5 @@ dependencies = [ "libjpeg", "libpng", "freetype2", + "zlib", ] From 0ba1d626d31d733f328c16df648813b69d7ccb51 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 16:08:49 +0000 Subject: [PATCH 1309/3180] update recipe --- recipes/wip/imlib2/recipe.toml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/recipes/wip/imlib2/recipe.toml b/recipes/wip/imlib2/recipe.toml index e4efb22b..f6266939 100644 --- a/recipes/wip/imlib2/recipe.toml +++ b/recipes/wip/imlib2/recipe.toml @@ -2,10 +2,16 @@ [source] tar = "https://downloads.sourceforge.net/project/enlightenment/imlib2-src/1.12.1/imlib2-1.12.1.tar.xz" [build] -template = "configure" +template = "custom" dependencies = [ "libjpeg", "libpng", "freetype2", "zlib", ] +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --without-x +) +cookbook_configure +""" From 0291009ccee2a43b96ca39379f457cee9d35bbe8 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 16:59:58 +0000 Subject: [PATCH 1310/3180] update recipes --- recipes/wip/imlib2/recipe.toml | 2 +- recipes/wip/influxdb/recipe.toml | 2 +- recipes/wip/innernet-cli/recipe.toml | 2 +- recipes/wip/innernet-server/recipe.toml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/recipes/wip/imlib2/recipe.toml b/recipes/wip/imlib2/recipe.toml index f6266939..e4e84b31 100644 --- a/recipes/wip/imlib2/recipe.toml +++ b/recipes/wip/imlib2/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compilation error - unknown type name "sigjmp_buf" [source] tar = "https://downloads.sourceforge.net/project/enlightenment/imlib2-src/1.12.1/imlib2-1.12.1.tar.xz" [build] diff --git a/recipes/wip/influxdb/recipe.toml b/recipes/wip/influxdb/recipe.toml index 94012a50..5d7b22e6 100644 --- a/recipes/wip/influxdb/recipe.toml +++ b/recipes/wip/influxdb/recipe.toml @@ -1,4 +1,4 @@ -#TODO probably wrong template, lacking build instructions +#TODO nonsense error "Cargo.toml doesn't exist" #TODO configure the CLI and service [source] git = "https://github.com/influxdata/influxdb" diff --git a/recipes/wip/innernet-cli/recipe.toml b/recipes/wip/innernet-cli/recipe.toml index f1b81434..7b721672 100644 --- a/recipes/wip/innernet-cli/recipe.toml +++ b/recipes/wip/innernet-cli/recipe.toml @@ -5,5 +5,5 @@ rev = "8d058c8d879bdeec64506f2d34c2c55e2975ec28" [build] template = "custom" script = """ -cookbook_cargo_packages innernet +cookbook_cargo_packages client """ diff --git a/recipes/wip/innernet-server/recipe.toml b/recipes/wip/innernet-server/recipe.toml index dc9ebad3..466a65f6 100644 --- a/recipes/wip/innernet-server/recipe.toml +++ b/recipes/wip/innernet-server/recipe.toml @@ -8,5 +8,5 @@ dependencies = [ "sqlite3", ] script = """ -cookbook_cargo_packages innernet-server +cookbook_cargo_packages server """ From d78401c6b00ae8546e1f5db616b75b0851bf6626 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 17:03:37 +0000 Subject: [PATCH 1311/3180] update recipes --- recipes/wip/innernet-cli/recipe.toml | 3 +-- recipes/wip/innernet-server/recipe.toml | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/recipes/wip/innernet-cli/recipe.toml b/recipes/wip/innernet-cli/recipe.toml index 7b721672..331b1f05 100644 --- a/recipes/wip/innernet-cli/recipe.toml +++ b/recipes/wip/innernet-cli/recipe.toml @@ -1,7 +1,6 @@ -#TODO Not compiled or tested +#TODO Not compiled or tested (after an update on proc-macro2) [source] git = "https://github.com/tonarino/innernet" -rev = "8d058c8d879bdeec64506f2d34c2c55e2975ec28" [build] template = "custom" script = """ diff --git a/recipes/wip/innernet-server/recipe.toml b/recipes/wip/innernet-server/recipe.toml index 466a65f6..73bddfec 100644 --- a/recipes/wip/innernet-server/recipe.toml +++ b/recipes/wip/innernet-server/recipe.toml @@ -1,7 +1,6 @@ #TODO Not compiled or tested [source] git = "https://github.com/tonarino/innernet" -rev = "8d058c8d879bdeec64506f2d34c2c55e2975ec28" [build] template = "custom" dependencies = [ From a974514a535d8abbac9821de08d4712eecfd495b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 21:30:33 +0000 Subject: [PATCH 1312/3180] update recipes --- recipes/wip/innernet-cli/recipe.toml | 2 +- recipes/wip/interaction-calculus/recipe.toml | 2 +- recipes/wip/irust/recipe.toml | 5 ++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/recipes/wip/innernet-cli/recipe.toml b/recipes/wip/innernet-cli/recipe.toml index 331b1f05..07405ab2 100644 --- a/recipes/wip/innernet-cli/recipe.toml +++ b/recipes/wip/innernet-cli/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested (after an update on proc-macro2) +#TODO shared crate error [source] git = "https://github.com/tonarino/innernet" [build] diff --git a/recipes/wip/interaction-calculus/recipe.toml b/recipes/wip/interaction-calculus/recipe.toml index f5996500..a6ebf958 100644 --- a/recipes/wip/interaction-calculus/recipe.toml +++ b/recipes/wip/interaction-calculus/recipe.toml @@ -1,4 +1,4 @@ -#TODO redox_syscall is very outdated on the dependency tree +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/VictorTaelin/Interaction-Calculus" [build] diff --git a/recipes/wip/irust/recipe.toml b/recipes/wip/irust/recipe.toml index 3966a0e9..3268fc15 100644 --- a/recipes/wip/irust/recipe.toml +++ b/recipes/wip/irust/recipe.toml @@ -3,4 +3,7 @@ git = "https://github.com/sigmaSd/IRust" rev = "6f9dbaf9387b39019a44dfe5ef5397e6bb8d2a1a" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages irust +""" From 61a17a7daefd8bd50642923f8e5789859995a7e7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 21:38:44 +0000 Subject: [PATCH 1313/3180] update recipes --- recipes/wip/irust/recipe.toml | 2 +- recipes/wip/jerry/recipe.toml | 2 +- recipes/wip/jirust/recipe.toml | 2 +- recipes/wip/jless/recipe.toml | 1 - 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/recipes/wip/irust/recipe.toml b/recipes/wip/irust/recipe.toml index 3268fc15..71065b17 100644 --- a/recipes/wip/irust/recipe.toml +++ b/recipes/wip/irust/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/sigmaSd/IRust" rev = "6f9dbaf9387b39019a44dfe5ef5397e6bb8d2a1a" diff --git a/recipes/wip/jerry/recipe.toml b/recipes/wip/jerry/recipe.toml index 0206be2b..7d5c1f1b 100644 --- a/recipes/wip/jerry/recipe.toml +++ b/recipes/wip/jerry/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO move to proper category [source] git = "https://github.com/justchokingaround/jerry" [build] diff --git a/recipes/wip/jirust/recipe.toml b/recipes/wip/jirust/recipe.toml index 48ce5273..1840d47b 100644 --- a/recipes/wip/jirust/recipe.toml +++ b/recipes/wip/jirust/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO openssl-sys crate error [source] git = "https://github.com/moali87/jirust" rev = "6fd0d4a76ed411f7055a9ee9364f40748856f304" diff --git a/recipes/wip/jless/recipe.toml b/recipes/wip/jless/recipe.toml index 4ad09e56..71e68a3c 100644 --- a/recipes/wip/jless/recipe.toml +++ b/recipes/wip/jless/recipe.toml @@ -1,6 +1,5 @@ #TODO redox_syscall crate error [source] git = "https://github.com/PaulJuliusMartinez/jless" -rev = "21dd6100edb47145bb9570931bec29697bcd0d9b" [build] template = "cargo" From f8b6869e2a3f945013a895af34d77c62953ab1ed Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 21:43:06 +0000 Subject: [PATCH 1314/3180] update recipes --- recipes/wip/jless/recipe.toml | 2 +- recipes/wip/joshuto/recipe.toml | 2 +- recipes/wip/just/recipe.toml | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/wip/jless/recipe.toml b/recipes/wip/jless/recipe.toml index 71e68a3c..463ec7e8 100644 --- a/recipes/wip/jless/recipe.toml +++ b/recipes/wip/jless/recipe.toml @@ -1,4 +1,4 @@ -#TODO redox_syscall crate error +#TODO outdated redox_syscall crate (after cargo update) [source] git = "https://github.com/PaulJuliusMartinez/jless" [build] diff --git a/recipes/wip/joshuto/recipe.toml b/recipes/wip/joshuto/recipe.toml index 0f62d970..f4eeb9e3 100644 --- a/recipes/wip/joshuto/recipe.toml +++ b/recipes/wip/joshuto/recipe.toml @@ -1,4 +1,4 @@ -#TODO open/trash crates error +#TODO open and trash crates error [source] git = "https://github.com/kamiyaa/joshuto" [build] diff --git a/recipes/wip/just/recipe.toml b/recipes/wip/just/recipe.toml index 429d4bed..4db06b7f 100644 --- a/recipes/wip/just/recipe.toml +++ b/recipes/wip/just/recipe.toml @@ -1,6 +1,5 @@ #TODO Schemes not supported [source] git = "https://github.com/casey/just" -rev = "63c0234c968b5a12a7ecceb4ebc6540996274a85" [build] template = "cargo" From bde83b20decc2bed8eef5fc494fdcdd2a59193e8 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 22:18:04 +0000 Subject: [PATCH 1315/3180] update just --- recipes/wip/just/recipe.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/just/recipe.toml b/recipes/wip/just/recipe.toml index 4db06b7f..33ce5b60 100644 --- a/recipes/wip/just/recipe.toml +++ b/recipes/wip/just/recipe.toml @@ -2,4 +2,7 @@ [source] git = "https://github.com/casey/just" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages just +""" From c6971ffd6bed4b87359b52914108439b3ccf19a3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 23:07:50 +0000 Subject: [PATCH 1316/3180] update recipes --- recipes/wip/just/recipe.toml | 2 +- recipes/wip/kalker/recipe.toml | 2 +- recipes/wip/kanata/recipe.toml | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/wip/just/recipe.toml b/recipes/wip/just/recipe.toml index 33ce5b60..b6050290 100644 --- a/recipes/wip/just/recipe.toml +++ b/recipes/wip/just/recipe.toml @@ -1,4 +1,4 @@ -#TODO Schemes not supported +#TODO camino crate error [source] git = "https://github.com/casey/just" [build] diff --git a/recipes/wip/kalker/recipe.toml b/recipes/wip/kalker/recipe.toml index aee4af09..242c9ccd 100644 --- a/recipes/wip/kalker/recipe.toml +++ b/recipes/wip/kalker/recipe.toml @@ -1,4 +1,4 @@ -#TODO gmp-mpfr-sys crate error +#TODO gmp-mpfr-sys crate error (after cargo update) [source] git = "https://github.com/PaddiM8/kalker" [build] diff --git a/recipes/wip/kanata/recipe.toml b/recipes/wip/kanata/recipe.toml index 9d31d1a9..9aaff11a 100644 --- a/recipes/wip/kanata/recipe.toml +++ b/recipes/wip/kanata/recipe.toml @@ -1,6 +1,5 @@ #TODO program error, maybe needs porting [source] git = "https://github.com/jtroo/kanata" -rev = "d6461425764aec10b9f919968eb70b6d13c72ea6" [build] template = "cargo" From e25682509f955b00b1effcccd6fc3f6a81934e54 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 23:14:23 +0000 Subject: [PATCH 1317/3180] update recipes --- recipes/wip/kanata/recipe.toml | 2 +- recipes/wip/kbt/recipe.toml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/kanata/recipe.toml b/recipes/wip/kanata/recipe.toml index 9aaff11a..1f3db36c 100644 --- a/recipes/wip/kanata/recipe.toml +++ b/recipes/wip/kanata/recipe.toml @@ -1,4 +1,4 @@ -#TODO program error, maybe needs porting +#TODO kanata-parser crate error [source] git = "https://github.com/jtroo/kanata" [build] diff --git a/recipes/wip/kbt/recipe.toml b/recipes/wip/kbt/recipe.toml index eb031157..370bed77 100644 --- a/recipes/wip/kbt/recipe.toml +++ b/recipes/wip/kbt/recipe.toml @@ -1,6 +1,5 @@ #TODO Not compiled or tested [source] git = "https://github.com/bloznelis/kbt" -rev = "a121e6de83044cc94343edc98eec33be20afc335" [build] template = "cargo" From e29791f8db5a47313df1991abcba7a243751203b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 23:46:52 +0000 Subject: [PATCH 1318/3180] update recipes --- recipes/wip/kbt/recipe.toml | 2 +- recipes/wip/kerberos5/recipe.toml | 4 ++-- recipes/wip/kvazaar/recipe.toml | 2 +- recipes/wip/lame/recipe.toml | 2 +- recipes/wip/lapce/recipe.toml | 2 +- recipes/wip/lazy-etherscan/recipe.toml | 2 +- recipes/wip/lcs-image-diff/recipe.toml | 2 +- recipes/wip/lenia/recipe.toml | 2 +- recipes/wip/liba52/recipe.toml | 2 +- recipes/wip/libart/recipe.toml | 2 +- recipes/wip/libaspell/recipe.toml | 2 +- recipes/wip/libass/recipe.toml | 1 + 12 files changed, 13 insertions(+), 12 deletions(-) diff --git a/recipes/wip/kbt/recipe.toml b/recipes/wip/kbt/recipe.toml index 370bed77..9010e8fe 100644 --- a/recipes/wip/kbt/recipe.toml +++ b/recipes/wip/kbt/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO outdated redox_syscall crate (after cargo update) [source] git = "https://github.com/bloznelis/kbt" [build] diff --git a/recipes/wip/kerberos5/recipe.toml b/recipes/wip/kerberos5/recipe.toml index 6a785c27..b54d36e5 100644 --- a/recipes/wip/kerberos5/recipe.toml +++ b/recipes/wip/kerberos5/recipe.toml @@ -1,5 +1,5 @@ -#TODO Not compiled or tested +#TODO missing script for building, lacking build instructions [source] tar = "https://kerberos.org/dist/krb5/1.21/krb5-1.21.2.tar.gz" [build] -template = "configure" +template = "custom" diff --git a/recipes/wip/kvazaar/recipe.toml b/recipes/wip/kvazaar/recipe.toml index 4fefd080..d8739d01 100644 --- a/recipes/wip/kvazaar/recipe.toml +++ b/recipes/wip/kvazaar/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error [source] tar = "https://github.com/ultravideo/kvazaar/releases/download/v2.2.0/kvazaar-2.2.0.tar.xz" [build] diff --git a/recipes/wip/lame/recipe.toml b/recipes/wip/lame/recipe.toml index a95e2055..3464919c 100644 --- a/recipes/wip/lame/recipe.toml +++ b/recipes/wip/lame/recipe.toml @@ -1,4 +1,4 @@ -#TODO The redox target is not supported on the configure +#TODO The redox target is not supported on the configure script [source] tar = "https://sourceforge.net/projects/lame/files/lame/3.100/lame-3.100.tar.gz/download" [build] diff --git a/recipes/wip/lapce/recipe.toml b/recipes/wip/lapce/recipe.toml index 2c69f5ee..73d39d65 100644 --- a/recipes/wip/lapce/recipe.toml +++ b/recipes/wip/lapce/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO openssl-sys crate error [source] git = "https://github.com/lapce/lapce" rev = "cb96e5ac3f3e4e70bd18b7a1307c5406e4247164" diff --git a/recipes/wip/lazy-etherscan/recipe.toml b/recipes/wip/lazy-etherscan/recipe.toml index c8e8522e..2bdf5b45 100644 --- a/recipes/wip/lazy-etherscan/recipe.toml +++ b/recipes/wip/lazy-etherscan/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/woxjro/lazy-etherscan" [build] diff --git a/recipes/wip/lcs-image-diff/recipe.toml b/recipes/wip/lcs-image-diff/recipe.toml index 7f05311b..f0ab1a30 100644 --- a/recipes/wip/lcs-image-diff/recipe.toml +++ b/recipes/wip/lcs-image-diff/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/bokuweb/lcs-image-diff-rs" [build] diff --git a/recipes/wip/lenia/recipe.toml b/recipes/wip/lenia/recipe.toml index acdae268..fa5768ac 100644 --- a/recipes/wip/lenia/recipe.toml +++ b/recipes/wip/lenia/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO winit crate error (after cargo update) [source] git = "https://github.com/BirdbrainEngineer/lenia" [build] diff --git a/recipes/wip/liba52/recipe.toml b/recipes/wip/liba52/recipe.toml index 253cd679..bc324e0b 100644 --- a/recipes/wip/liba52/recipe.toml +++ b/recipes/wip/liba52/recipe.toml @@ -1,4 +1,4 @@ -#TODO The redox target is not supported on the configure +#TODO The redox target is not supported on the configure script [source] tar = "https://liba52.sourceforge.io/files/a52dec-0.7.4.tar.gz" [build] diff --git a/recipes/wip/libart/recipe.toml b/recipes/wip/libart/recipe.toml index 8549d7bf..3d82494f 100644 --- a/recipes/wip/libart/recipe.toml +++ b/recipes/wip/libart/recipe.toml @@ -1,4 +1,4 @@ -#TODO probably wrong template +#TODO can't recognize the Redox target [source] tar = "https://download.gnome.org/sources/libart_lgpl/2.3/libart_lgpl-2.3.21.tar.bz2" [build] diff --git a/recipes/wip/libaspell/recipe.toml b/recipes/wip/libaspell/recipe.toml index 0b3dc438..8b07b9a6 100644 --- a/recipes/wip/libaspell/recipe.toml +++ b/recipes/wip/libaspell/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO can't recognize Redox target [source] tar = "https://ftp.gnu.org/gnu/aspell/aspell-0.60.8.tar.gz" [build] diff --git a/recipes/wip/libass/recipe.toml b/recipes/wip/libass/recipe.toml index 99da7b48..f4a98f5c 100644 --- a/recipes/wip/libass/recipe.toml +++ b/recipes/wip/libass/recipe.toml @@ -8,4 +8,5 @@ dependencies = [ "zlib", "libpng", "fribidi", + "harfbuzz", ] From 24e7b508a795a8894a9f276b74dd4d0b742fb399 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 21 Dec 2023 23:54:39 +0000 Subject: [PATCH 1319/3180] update libass --- recipes/wip/libass/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/libass/recipe.toml b/recipes/wip/libass/recipe.toml index f4a98f5c..e9d545fa 100644 --- a/recipes/wip/libass/recipe.toml +++ b/recipes/wip/libass/recipe.toml @@ -9,4 +9,5 @@ dependencies = [ "libpng", "fribidi", "harfbuzz", + "glib", ] From 4e3878a06bc620b66b43321584e3550368a445f2 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 00:13:02 +0000 Subject: [PATCH 1320/3180] add dependency --- recipes/wip/libass/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/libass/recipe.toml b/recipes/wip/libass/recipe.toml index e9d545fa..bbb92a3d 100644 --- a/recipes/wip/libass/recipe.toml +++ b/recipes/wip/libass/recipe.toml @@ -10,4 +10,5 @@ dependencies = [ "fribidi", "harfbuzz", "glib", + "pcre", ] From 3cda50a8a51450f2fea64820f23ac880325cfbfb Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 00:13:52 +0000 Subject: [PATCH 1321/3180] add dependency --- recipes/wip/libass/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/libass/recipe.toml b/recipes/wip/libass/recipe.toml index bbb92a3d..31b2a51c 100644 --- a/recipes/wip/libass/recipe.toml +++ b/recipes/wip/libass/recipe.toml @@ -11,4 +11,5 @@ dependencies = [ "harfbuzz", "glib", "pcre", + "fontconfig", ] From a0a881a54264b215a25b9dee24239ab2b0b734ab Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 00:20:54 +0000 Subject: [PATCH 1322/3180] update recipes --- recipes/wip/libass/recipe.toml | 2 +- recipes/wip/libatomic_ops/recipe.toml | 2 +- recipes/wip/libbotan/recipe.toml | 4 ++-- recipes/wip/libcaca/recipe.toml | 2 +- recipes/wip/libcdio/recipe.toml | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/recipes/wip/libass/recipe.toml b/recipes/wip/libass/recipe.toml index 31b2a51c..6f31ce99 100644 --- a/recipes/wip/libass/recipe.toml +++ b/recipes/wip/libass/recipe.toml @@ -1,4 +1,4 @@ -#TODO waiting the TOML conversion of fribidi dependency +#TODO can't detect fontconfig [source] tar = "https://github.com/libass/libass/releases/download/0.17.1/libass-0.17.1.tar.xz" [build] diff --git a/recipes/wip/libatomic_ops/recipe.toml b/recipes/wip/libatomic_ops/recipe.toml index c222925c..80fbbf3a 100644 --- a/recipes/wip/libatomic_ops/recipe.toml +++ b/recipes/wip/libatomic_ops/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] tar = "https://github.com/ivmai/libatomic_ops/releases/download/v7.8.0/libatomic_ops-7.8.0.tar.gz" [build] diff --git a/recipes/wip/libbotan/recipe.toml b/recipes/wip/libbotan/recipe.toml index 4c678a0f..e7d29598 100644 --- a/recipes/wip/libbotan/recipe.toml +++ b/recipes/wip/libbotan/recipe.toml @@ -1,5 +1,5 @@ -#TODO Not compiled or tested +#TODO missing script for building [source] tar = "https://botan.randombit.net/releases/Botan-3.2.0.tar.xz" [build] -template = "configure" +template = "custom" diff --git a/recipes/wip/libcaca/recipe.toml b/recipes/wip/libcaca/recipe.toml index eda7cbe5..651250de 100644 --- a/recipes/wip/libcaca/recipe.toml +++ b/recipes/wip/libcaca/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO can't recognize Redox target [source] tar = "http://caca.zoy.org/files/libcaca/libcaca-0.99.beta19.tar.gz" [build] diff --git a/recipes/wip/libcdio/recipe.toml b/recipes/wip/libcdio/recipe.toml index a3c3c8a8..7f170dbe 100644 --- a/recipes/wip/libcdio/recipe.toml +++ b/recipes/wip/libcdio/recipe.toml @@ -1,6 +1,6 @@ #TODO probably wrong script, see https://git.savannah.gnu.org/cgit/libcdio.git/tree/INSTALL [source] -git = "https://git.savannah.gnu.org/cgit/libcdio.git" +git = "https://git.savannah.gnu.org/git/libcdio.git" rev = "9c7a2779846da161279bc1501e83c849cf89a594" [build] template = "custom" From d34e7ac552617f87b907467801b0a13257a87e83 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 00:31:34 +0000 Subject: [PATCH 1323/3180] update recipes --- recipes/wip/libcdio-paranoia/recipe.toml | 6 +----- recipes/wip/libcdio/recipe.toml | 6 +----- recipes/wip/libcpuid/recipe.toml | 2 +- recipes/wip/libcups/recipe.toml | 3 +++ 4 files changed, 6 insertions(+), 11 deletions(-) diff --git a/recipes/wip/libcdio-paranoia/recipe.toml b/recipes/wip/libcdio-paranoia/recipe.toml index 2b7df12a..71b44b42 100644 --- a/recipes/wip/libcdio-paranoia/recipe.toml +++ b/recipes/wip/libcdio-paranoia/recipe.toml @@ -1,10 +1,6 @@ -#TODO Not compiled or tested +#TODO missing script for building [source] git = "https://github.com/rocky/libcdio-paranoia" rev = "db4dfff9e11c516ae35d87e568f511002ddae9d7" [build] template = "custom" -script = """ -./autogen.sh -cookbook_configure -""" diff --git a/recipes/wip/libcdio/recipe.toml b/recipes/wip/libcdio/recipe.toml index 7f170dbe..6ac59552 100644 --- a/recipes/wip/libcdio/recipe.toml +++ b/recipes/wip/libcdio/recipe.toml @@ -1,10 +1,6 @@ -#TODO probably wrong script, see https://git.savannah.gnu.org/cgit/libcdio.git/tree/INSTALL +#TODO missing script for building, see https://git.savannah.gnu.org/cgit/libcdio.git/tree/INSTALL [source] git = "https://git.savannah.gnu.org/git/libcdio.git" rev = "9c7a2779846da161279bc1501e83c849cf89a594" [build] template = "custom" -script = """ -./autogen.sh -cookbook_configure -""" diff --git a/recipes/wip/libcpuid/recipe.toml b/recipes/wip/libcpuid/recipe.toml index f74374a1..b3eb9112 100644 --- a/recipes/wip/libcpuid/recipe.toml +++ b/recipes/wip/libcpuid/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO libtool error # require a POSIX-compatible shell, see https://github.com/anrieff/libcpuid#prerequisites [source] tar = "https://github.com/anrieff/libcpuid/releases/download/v0.6.4/libcpuid-0.6.4.tar.gz" diff --git a/recipes/wip/libcups/recipe.toml b/recipes/wip/libcups/recipe.toml index bbce4133..f54b6cb4 100644 --- a/recipes/wip/libcups/recipe.toml +++ b/recipes/wip/libcups/recipe.toml @@ -3,3 +3,6 @@ tar = "https://github.com/OpenPrinting/cups/releases/download/v2.4.7/cups-2.4.7-source.tar.gz" [build] template = "configure" +dependencies = [ + "gnutls3", +] From bc15ad56536d7b2fbc18b8e80e52a243c70f881f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 01:44:03 +0000 Subject: [PATCH 1324/3180] update recipes --- recipes/wip/libcups/recipe.toml | 2 +- recipes/wip/libde265/recipe.toml | 2 +- recipes/wip/libdmx/recipe.toml | 2 +- recipes/wip/libdvdnav/recipe.toml | 2 +- recipes/wip/libdvdread/recipe.toml | 2 +- recipes/wip/libeditline/recipe.toml | 2 +- recipes/wip/libevdev/recipe.toml | 2 +- recipes/wip/libfontenc/recipe.toml | 6 +++++- recipes/wip/libfs/recipe.toml | 2 +- recipes/wip/libgc/recipe.toml | 2 +- recipes/wip/libgif/recipe.toml | 4 ++-- recipes/wip/libgloox/recipe.toml | 2 +- recipes/wip/libgphoto2/recipe.toml | 2 +- recipes/wip/libgpm/recipe.toml | 4 ++-- recipes/wip/libgsl/recipe.toml | 2 +- recipes/wip/libice/recipe.toml | 6 +++++- recipes/wip/libicu/recipe.toml | 4 ++-- recipes/wip/liblcms/recipe.toml | 2 +- recipes/wip/libm17n/recipe.toml | 2 +- recipes/wip/libmad/recipe.toml | 2 +- recipes/wip/libmd/recipe.toml | 2 +- recipes/wip/libmpeg2/recipe.toml | 2 +- recipes/wip/libnettle/recipe.toml | 2 +- recipes/wip/libnsl/recipe.toml | 2 +- recipes/wip/libotf/recipe.toml | 2 +- recipes/wip/libpcap/recipe.toml | 2 +- recipes/wip/libportaudio/recipe.toml | 3 ++- recipes/wip/libpthread-stubs/recipe.toml | 3 +-- recipes/wip/libqalculate/recipe.toml | 1 + 29 files changed, 41 insertions(+), 32 deletions(-) diff --git a/recipes/wip/libcups/recipe.toml b/recipes/wip/libcups/recipe.toml index f54b6cb4..d4137cf1 100644 --- a/recipes/wip/libcups/recipe.toml +++ b/recipes/wip/libcups/recipe.toml @@ -1,4 +1,4 @@ -#TODO require printer drivers +#TODO make gnutls work [source] tar = "https://github.com/OpenPrinting/cups/releases/download/v2.4.7/cups-2.4.7-source.tar.gz" [build] diff --git a/recipes/wip/libde265/recipe.toml b/recipes/wip/libde265/recipe.toml index ee50e09e..a8a013c2 100644 --- a/recipes/wip/libde265/recipe.toml +++ b/recipes/wip/libde265/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error [source] tar = "https://github.com/strukturag/libde265/releases/download/v1.0.14/libde265-1.0.14.tar.gz" [build] diff --git a/recipes/wip/libdmx/recipe.toml b/recipes/wip/libdmx/recipe.toml index 537e9cf1..240e2b35 100644 --- a/recipes/wip/libdmx/recipe.toml +++ b/recipes/wip/libdmx/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO xorg-macros package not found [source] tar = "https://www.x.org/releases/individual/lib/libdmx-1.1.5.tar.xz" [build] diff --git a/recipes/wip/libdvdnav/recipe.toml b/recipes/wip/libdvdnav/recipe.toml index a026fab4..f785c104 100644 --- a/recipes/wip/libdvdnav/recipe.toml +++ b/recipes/wip/libdvdnav/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested yet +#TODO can't recognize Redox target [source] tar = "http://www.videolan.org/pub/videolan/libdvdnav/5.0.1/libdvdnav-5.0.1.tar.bz2" [build] diff --git a/recipes/wip/libdvdread/recipe.toml b/recipes/wip/libdvdread/recipe.toml index 3b3b4e84..cab3ed44 100644 --- a/recipes/wip/libdvdread/recipe.toml +++ b/recipes/wip/libdvdread/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested yet +#TODO can't recognize Redox target [source] tar = "http://www.videolan.org/pub/videolan/libdvdread/5.0.0/libdvdread-5.0.0.tar.bz2" [build] diff --git a/recipes/wip/libeditline/recipe.toml b/recipes/wip/libeditline/recipe.toml index 3285058c..1cbc13cd 100644 --- a/recipes/wip/libeditline/recipe.toml +++ b/recipes/wip/libeditline/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] tar = "https://ftp.troglobit.com/editline/editline-1.17.1.tar.xz" [build] diff --git a/recipes/wip/libevdev/recipe.toml b/recipes/wip/libevdev/recipe.toml index cda62e0e..2c77621d 100644 --- a/recipes/wip/libevdev/recipe.toml +++ b/recipes/wip/libevdev/recipe.toml @@ -1,4 +1,4 @@ -#TODO weird error, seems to be related to outdated compiler. +#TODO compilation error [source] tar = "https://www.freedesktop.org/software/libevdev/libevdev-1.13.1.tar.xz" [build] diff --git a/recipes/wip/libfontenc/recipe.toml b/recipes/wip/libfontenc/recipe.toml index dfedd2c4..a5f77a67 100644 --- a/recipes/wip/libfontenc/recipe.toml +++ b/recipes/wip/libfontenc/recipe.toml @@ -1,5 +1,9 @@ -#TODO Not compiled or tested +#TODO xorg-macros package not found +#TODO fontutil package not found [source] tar = "https://www.x.org/releases/individual/lib/libfontenc-1.1.7.tar.xz" [build] template = "configure" +dependencies = [ + "zlib", +] diff --git a/recipes/wip/libfs/recipe.toml b/recipes/wip/libfs/recipe.toml index b9db8b51..2e1e7cc3 100644 --- a/recipes/wip/libfs/recipe.toml +++ b/recipes/wip/libfs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO xorg-macros package not found [source] tar = "https://www.x.org/releases/individual/lib/libFS-1.0.9.tar.xz" [build] diff --git a/recipes/wip/libgc/recipe.toml b/recipes/wip/libgc/recipe.toml index fca95b6c..37b45eb6 100644 --- a/recipes/wip/libgc/recipe.toml +++ b/recipes/wip/libgc/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error - pthreads not supported by the GC on this platform [source] tar = "https://www.hboehm.info/gc/gc_source/gc-8.2.4.tar.gz" [build] diff --git a/recipes/wip/libgif/recipe.toml b/recipes/wip/libgif/recipe.toml index 4f099202..b7352080 100644 --- a/recipes/wip/libgif/recipe.toml +++ b/recipes/wip/libgif/recipe.toml @@ -1,5 +1,5 @@ -#TODO Not compiled or tested +#TODO missing script for building [source] tar = "https://sourceforge.net/projects/giflib/files/giflib-5.2.1.tar.gz/download" [build] -template = "configure" +template = "custom" diff --git a/recipes/wip/libgloox/recipe.toml b/recipes/wip/libgloox/recipe.toml index 9bd0156f..ca7c6d0e 100644 --- a/recipes/wip/libgloox/recipe.toml +++ b/recipes/wip/libgloox/recipe.toml @@ -1,4 +1,4 @@ -#TODO maybe wrong template +#TODO make gnutls work [source] tar = "https://camaya.net/download/gloox-1.0.27.tar.bz2" [build] diff --git a/recipes/wip/libgphoto2/recipe.toml b/recipes/wip/libgphoto2/recipe.toml index 4142c827..59879f13 100644 --- a/recipes/wip/libgphoto2/recipe.toml +++ b/recipes/wip/libgphoto2/recipe.toml @@ -1,4 +1,4 @@ -#TODO probably wrong template, lacking build instructions +#TODO can't find libtool [source] tar = "https://sourceforge.net/projects/gphoto/files/libgphoto/2.5.31/libgphoto2-2.5.31.tar.xz/download" [build] diff --git a/recipes/wip/libgpm/recipe.toml b/recipes/wip/libgpm/recipe.toml index d4f54a90..7899340c 100644 --- a/recipes/wip/libgpm/recipe.toml +++ b/recipes/wip/libgpm/recipe.toml @@ -1,5 +1,5 @@ -#TODO Not compiled or tested +#TODO missing script for building [source] tar = "https://www.nico.schottelius.org/software/gpm/archives/gpm-1.20.7.tar.bz2" [build] -template = "configure" +template = "custom" diff --git a/recipes/wip/libgsl/recipe.toml b/recipes/wip/libgsl/recipe.toml index 49091328..2fdf67a3 100644 --- a/recipes/wip/libgsl/recipe.toml +++ b/recipes/wip/libgsl/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO can't recognize Redox target [source] tar = "https://ftp.gnu.org/gnu/gsl/gsl-2.7.1.tar.gz" [build] diff --git a/recipes/wip/libice/recipe.toml b/recipes/wip/libice/recipe.toml index 9ee70ad5..d5eb4ec1 100644 --- a/recipes/wip/libice/recipe.toml +++ b/recipes/wip/libice/recipe.toml @@ -1,5 +1,9 @@ -#TODO Not compiled or tested +#TODO missing packages [source] tar = "https://www.x.org/releases/individual/lib/libICE-1.1.1.tar.xz" [build] template = "configure" +dependencies = [ + "libxtrans", + "x11proto", +] diff --git a/recipes/wip/libicu/recipe.toml b/recipes/wip/libicu/recipe.toml index 43008d2c..98cc9072 100644 --- a/recipes/wip/libicu/recipe.toml +++ b/recipes/wip/libicu/recipe.toml @@ -1,5 +1,5 @@ -#TODO Not compiled or tested +#TODO missing script for building [source] tar = "https://github.com/unicode-org/icu/releases/download/release-74-1/icu4c-74_1-src.tgz" [build] -template = "configure" +template = "custom" diff --git a/recipes/wip/liblcms/recipe.toml b/recipes/wip/liblcms/recipe.toml index e1abd9a7..ac36be80 100644 --- a/recipes/wip/liblcms/recipe.toml +++ b/recipes/wip/liblcms/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] tar = "https://github.com/mm2/Little-CMS/releases/download/lcms2.15/lcms2-2.15.tar.gz" [build] diff --git a/recipes/wip/libm17n/recipe.toml b/recipes/wip/libm17n/recipe.toml index 4fb2f391..ed33577e 100644 --- a/recipes/wip/libm17n/recipe.toml +++ b/recipes/wip/libm17n/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO missing plural.h [source] tar = "https://download.savannah.nongnu.org/releases/m17n/m17n-lib-1.8.4.tar.gz" [build] diff --git a/recipes/wip/libmad/recipe.toml b/recipes/wip/libmad/recipe.toml index b559ea6f..2912e2f4 100644 --- a/recipes/wip/libmad/recipe.toml +++ b/recipes/wip/libmad/recipe.toml @@ -1,4 +1,4 @@ -#TODO the redox target is not supported on the configure +#TODO the redox target is not supported on the configure script [source] tar = "https://sourceforge.net/projects/mad/files/libmad/0.15.1b/libmad-0.15.1b.tar.gz/download" [build] diff --git a/recipes/wip/libmd/recipe.toml b/recipes/wip/libmd/recipe.toml index 998b9e41..51d27a9a 100644 --- a/recipes/wip/libmd/recipe.toml +++ b/recipes/wip/libmd/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] tar = "https://archive.hadrons.org/software/libmd/libmd-1.1.0.tar.xz" [build] diff --git a/recipes/wip/libmpeg2/recipe.toml b/recipes/wip/libmpeg2/recipe.toml index e93444f8..10196b8a 100644 --- a/recipes/wip/libmpeg2/recipe.toml +++ b/recipes/wip/libmpeg2/recipe.toml @@ -1,4 +1,4 @@ -#TODO the redox target is not supported on the configure +#TODO the redox target is not supported on the configure script [source] tar = "https://libmpeg2.sourceforge.io/files/libmpeg2-0.5.1.tar.gz" [build] diff --git a/recipes/wip/libnettle/recipe.toml b/recipes/wip/libnettle/recipe.toml index 819dc244..a403ab32 100644 --- a/recipes/wip/libnettle/recipe.toml +++ b/recipes/wip/libnettle/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO make gnutls work [source] tar = "https://ftp.gnu.org/gnu/nettle/nettle-3.8.1.tar.gz" [build] diff --git a/recipes/wip/libnsl/recipe.toml b/recipes/wip/libnsl/recipe.toml index 5321c4e8..f334c00e 100644 --- a/recipes/wip/libnsl/recipe.toml +++ b/recipes/wip/libnsl/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO missing headers for compilation [source] tar = "https://github.com/thkukuk/libnsl/releases/download/v2.0.1/libnsl-2.0.1.tar.xz" [build] diff --git a/recipes/wip/libotf/recipe.toml b/recipes/wip/libotf/recipe.toml index a4f7d4a6..fe52d509 100644 --- a/recipes/wip/libotf/recipe.toml +++ b/recipes/wip/libotf/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO can't recognize redox target [source] tar = "https://download.savannah.nongnu.org/releases/m17n/libotf-0.9.16.tar.gz" [build] diff --git a/recipes/wip/libpcap/recipe.toml b/recipes/wip/libpcap/recipe.toml index 72f11ba0..00e2d6af 100644 --- a/recipes/wip/libpcap/recipe.toml +++ b/recipes/wip/libpcap/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compilation error [source] tar = "https://www.tcpdump.org/release/libpcap-1.10.4.tar.gz" [build] diff --git a/recipes/wip/libportaudio/recipe.toml b/recipes/wip/libportaudio/recipe.toml index c4b1ef0f..3c0d5255 100644 --- a/recipes/wip/libportaudio/recipe.toml +++ b/recipes/wip/libportaudio/recipe.toml @@ -1,4 +1,5 @@ -#TODO compilation error and require some Linux audio server +#TODO compilation error +#TODO require some Linux audio server [source] git = "https://github.com/PortAudio/portaudio" rev = "147dd722548358763a8b649b3e4b41dfffbcfbb6" diff --git a/recipes/wip/libpthread-stubs/recipe.toml b/recipes/wip/libpthread-stubs/recipe.toml index 5a866354..878a40f4 100644 --- a/recipes/wip/libpthread-stubs/recipe.toml +++ b/recipes/wip/libpthread-stubs/recipe.toml @@ -1,5 +1,4 @@ -#TODO not compiled or tested -#TODO probably missing dependencies +#TODO compiled but not tested [source] tar = "https://www.x.org/releases/individual/xcb/libpthread-stubs-0.5.tar.xz" [build] diff --git a/recipes/wip/libqalculate/recipe.toml b/recipes/wip/libqalculate/recipe.toml index 7ad5b94b..90d86a45 100644 --- a/recipes/wip/libqalculate/recipe.toml +++ b/recipes/wip/libqalculate/recipe.toml @@ -9,4 +9,5 @@ dependencies = [ "libxml2", "readline", "libiconv", + "curl", ] From 9cc244099e0e10e327b0b4420283996545972b5b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 01:45:22 +0000 Subject: [PATCH 1325/3180] update recipe --- recipes/wip/libqalculate/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/libqalculate/recipe.toml b/recipes/wip/libqalculate/recipe.toml index 90d86a45..0403ecdd 100644 --- a/recipes/wip/libqalculate/recipe.toml +++ b/recipes/wip/libqalculate/recipe.toml @@ -9,5 +9,6 @@ dependencies = [ "libxml2", "readline", "libiconv", + "libicu", "curl", ] From 7b93531a22694055c9eb3673b7fb2f5b696b9648 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 01:49:24 +0000 Subject: [PATCH 1326/3180] update recipes --- recipes/wip/libqalculate/recipe.toml | 2 +- recipes/wip/libraw/recipe.toml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/wip/libqalculate/recipe.toml b/recipes/wip/libqalculate/recipe.toml index 0403ecdd..361db8c4 100644 --- a/recipes/wip/libqalculate/recipe.toml +++ b/recipes/wip/libqalculate/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make libicu work [source] tar = "https://github.com/Qalculate/libqalculate/releases/download/v4.9.0/libqalculate-4.9.0.tar.gz" [build] diff --git a/recipes/wip/libraw/recipe.toml b/recipes/wip/libraw/recipe.toml index e6833966..35563a9b 100644 --- a/recipes/wip/libraw/recipe.toml +++ b/recipes/wip/libraw/recipe.toml @@ -1,11 +1,12 @@ #TODO Not compiled or tested +#TODO make libjasper work [source] tar = "https://www.libraw.org/data/LibRaw-0.21.1.tar.gz" [build] template = "configure" dependencies = [ "zlib", - "libjasper", + #"libjasper", "libjpeg", "liblcms", ] From b21b804ae934d137644bbafce94bc290413bc268 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 01:53:21 +0000 Subject: [PATCH 1327/3180] update recipes --- recipes/wip/libraw/recipe.toml | 2 +- recipes/wip/librevenge/recipe.toml | 2 +- recipes/wip/librsvg/recipe.toml | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/wip/libraw/recipe.toml b/recipes/wip/libraw/recipe.toml index 35563a9b..78275719 100644 --- a/recipes/wip/libraw/recipe.toml +++ b/recipes/wip/libraw/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error #TODO make libjasper work [source] tar = "https://www.libraw.org/data/LibRaw-0.21.1.tar.gz" diff --git a/recipes/wip/librevenge/recipe.toml b/recipes/wip/librevenge/recipe.toml index d5b797e9..d380c0c4 100644 --- a/recipes/wip/librevenge/recipe.toml +++ b/recipes/wip/librevenge/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make boost work [source] tar = "https://sourceforge.net/projects/libwpd/files/librevenge/librevenge-0.0.5/librevenge-0.0.5.tar.xz/download" [build] diff --git a/recipes/wip/librsvg/recipe.toml b/recipes/wip/librsvg/recipe.toml index 213c6622..148b0ab9 100644 --- a/recipes/wip/librsvg/recipe.toml +++ b/recipes/wip/librsvg/recipe.toml @@ -7,7 +7,6 @@ template = "configure" dependencies = [ "cairo", "freetype2", - "gdk-pixbuf", "glib", "gobject-introspection", "harfbuzz", From eaee2ae1cbc7b5b6ce8ca6e77c2c3b2a759ccb55 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 01:57:34 +0000 Subject: [PATCH 1328/3180] update recipes --- recipes/wip/librsvg/recipe.toml | 2 +- recipes/wip/libsigc++/recipe.toml | 4 ++-- recipes/wip/libsixel/recipe.toml | 2 +- recipes/wip/libsm/recipe.toml | 5 +++++ 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/recipes/wip/librsvg/recipe.toml b/recipes/wip/librsvg/recipe.toml index 148b0ab9..0036b835 100644 --- a/recipes/wip/librsvg/recipe.toml +++ b/recipes/wip/librsvg/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO make dependencies work #TODO build instructions - https://gnome.pages.gitlab.gnome.org/librsvg/devel-docs/compiling.html [source] tar = "https://download.gnome.org/sources/librsvg/2.56/librsvg-2.56.0.tar.xz" diff --git a/recipes/wip/libsigc++/recipe.toml b/recipes/wip/libsigc++/recipe.toml index 0866b515..250a61fc 100644 --- a/recipes/wip/libsigc++/recipe.toml +++ b/recipes/wip/libsigc++/recipe.toml @@ -1,5 +1,5 @@ -#TODO build instructions - https://github.com/libsigcplusplus/libsigcplusplus#building-from-a-release-tarball +#TODO missing script for building, see https://github.com/libsigcplusplus/libsigcplusplus#building-from-a-release-tarball [source] tar = "https://download.gnome.org/sources/libsigc++/3.6/libsigc%2B%2B-3.6.0.tar.xz" [build] -template = "configure" +template = "custom" diff --git a/recipes/wip/libsixel/recipe.toml b/recipes/wip/libsixel/recipe.toml index 4d1d853b..94078fda 100644 --- a/recipes/wip/libsixel/recipe.toml +++ b/recipes/wip/libsixel/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO can't find libjpeg [source] tar = "https://github.com/saitoha/libsixel/releases/download/v1.8.6/libsixel-1.8.6.tar.gz" [build] diff --git a/recipes/wip/libsm/recipe.toml b/recipes/wip/libsm/recipe.toml index 4889b995..9a5cb79f 100644 --- a/recipes/wip/libsm/recipe.toml +++ b/recipes/wip/libsm/recipe.toml @@ -3,3 +3,8 @@ tar = "https://www.x.org/releases/individual/lib/libSM-1.2.4.tar.xz" [build] template = "configure" +dependencies = [ + "libice", + "libxtrans", + "x11proto", +] From fa49212dac97637b096c0563264ddb2467375f0a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 02:10:23 +0000 Subject: [PATCH 1329/3180] update recipes --- recipes/wip/libsm/recipe.toml | 2 +- recipes/wip/libspiro/recipe.toml | 2 +- recipes/wip/libsrt/recipe.toml | 2 +- recipes/wip/libstatgrab/recipe.toml | 2 +- recipes/wip/libtheora/recipe.toml | 2 +- recipes/wip/libtickit/recipe.toml | 4 ++-- recipes/wip/libunibreak/recipe.toml | 2 +- recipes/wip/liburcu/recipe.toml | 2 +- recipes/wip/libuuid/recipe.toml | 2 +- recipes/wip/libuv/recipe.toml | 4 ++-- recipes/wip/libva/recipe.toml | 2 +- recipes/wip/libvisio/recipe.toml | 2 +- recipes/wip/libvpx/recipe.toml | 2 +- recipes/wip/libvterm/recipe.toml | 2 +- 14 files changed, 16 insertions(+), 16 deletions(-) diff --git a/recipes/wip/libsm/recipe.toml b/recipes/wip/libsm/recipe.toml index 9a5cb79f..bcf789e4 100644 --- a/recipes/wip/libsm/recipe.toml +++ b/recipes/wip/libsm/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make dependencies work [source] tar = "https://www.x.org/releases/individual/lib/libSM-1.2.4.tar.xz" [build] diff --git a/recipes/wip/libspiro/recipe.toml b/recipes/wip/libspiro/recipe.toml index 327173ed..fbba5edc 100644 --- a/recipes/wip/libspiro/recipe.toml +++ b/recipes/wip/libspiro/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] tar = "https://github.com/fontforge/libspiro/releases/download/20221101/libspiro-dist-20221101.tar.gz" [build] diff --git a/recipes/wip/libsrt/recipe.toml b/recipes/wip/libsrt/recipe.toml index 53732410..d163fd07 100644 --- a/recipes/wip/libsrt/recipe.toml +++ b/recipes/wip/libsrt/recipe.toml @@ -1,4 +1,4 @@ -#TODO probably wrong template, see https://github.com/Haivision/srt/blob/master/docs/build/build-linux.md +#TODO CMake error, see https://github.com/Haivision/srt/blob/master/docs/build/build-linux.md [source] git = "https://github.com/Haivision/srt" rev = "09f35c0f1743e23f514cb41444504a7faeacf89e" diff --git a/recipes/wip/libstatgrab/recipe.toml b/recipes/wip/libstatgrab/recipe.toml index 6213aab1..8bdc5a32 100644 --- a/recipes/wip/libstatgrab/recipe.toml +++ b/recipes/wip/libstatgrab/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error [source] tar = "https://github.com/libstatgrab/libstatgrab/releases/download/LIBSTATGRAB_0_92_1/libstatgrab-0.92.1.tar.gz" [build] diff --git a/recipes/wip/libtheora/recipe.toml b/recipes/wip/libtheora/recipe.toml index 44b5772f..78e901d9 100644 --- a/recipes/wip/libtheora/recipe.toml +++ b/recipes/wip/libtheora/recipe.toml @@ -1,4 +1,4 @@ -#TODO the redox target is not supported on the configure +#TODO the redox target is not supported on the configure script [source] tar = "http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.bz2" [build] diff --git a/recipes/wip/libtickit/recipe.toml b/recipes/wip/libtickit/recipe.toml index 127303ef..bc3f1018 100644 --- a/recipes/wip/libtickit/recipe.toml +++ b/recipes/wip/libtickit/recipe.toml @@ -1,5 +1,5 @@ -#TODO probably wrong template, see https://github.com/leonerd/libtickit +#TODO missing script for building, see https://github.com/leonerd/libtickit [source] tar = "https://www.leonerd.org.uk/code/libtickit/libtickit-0.4.3.tar.gz" [build] -template = "configure" +template = "custom" diff --git a/recipes/wip/libunibreak/recipe.toml b/recipes/wip/libunibreak/recipe.toml index 4f57c82d..83b0efb6 100644 --- a/recipes/wip/libunibreak/recipe.toml +++ b/recipes/wip/libunibreak/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] tar = "https://github.com/adah1972/libunibreak/releases/download/libunibreak_5_1/libunibreak-5.1.tar.gz" [build] diff --git a/recipes/wip/liburcu/recipe.toml b/recipes/wip/liburcu/recipe.toml index 32f7f756..c47ad54b 100644 --- a/recipes/wip/liburcu/recipe.toml +++ b/recipes/wip/liburcu/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO can't configure pthread support [source] tar = "https://lttng.org/files/urcu/userspace-rcu-0.14.0.tar.bz2" [build] diff --git a/recipes/wip/libuuid/recipe.toml b/recipes/wip/libuuid/recipe.toml index 8b72e913..392012da 100644 --- a/recipes/wip/libuuid/recipe.toml +++ b/recipes/wip/libuuid/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO can't recognize Redox target [source] tar = "https://sourceforge.net/projects/libuuid/files/libuuid-1.0.3.tar.gz/download" [build] diff --git a/recipes/wip/libuv/recipe.toml b/recipes/wip/libuv/recipe.toml index ce2386df..5d6685d6 100644 --- a/recipes/wip/libuv/recipe.toml +++ b/recipes/wip/libuv/recipe.toml @@ -1,5 +1,5 @@ -#TODO not compiled or tested +#TODO missing script for building [source] tar = "https://dist.libuv.org/dist/v1.45.0/libuv-v1.45.0.tar.gz" [build] -template = "configure" +template = "custom" diff --git a/recipes/wip/libva/recipe.toml b/recipes/wip/libva/recipe.toml index 7e55494c..24af9a36 100644 --- a/recipes/wip/libva/recipe.toml +++ b/recipes/wip/libva/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO can't recognize the redox target #TODO probably require libdrm [source] tar = "https://github.com/intel/libva/releases/download/2.19.0/libva-2.19.0.tar.bz2" diff --git a/recipes/wip/libvisio/recipe.toml b/recipes/wip/libvisio/recipe.toml index 635cdb24..73d32a0b 100644 --- a/recipes/wip/libvisio/recipe.toml +++ b/recipes/wip/libvisio/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make dependencies work [source] tar = "https://dev-www.libreoffice.org/src/libvisio/libvisio-0.1.7.tar.xz" [build] diff --git a/recipes/wip/libvpx/recipe.toml b/recipes/wip/libvpx/recipe.toml index c48d2aaa..977a6a1f 100644 --- a/recipes/wip/libvpx/recipe.toml +++ b/recipes/wip/libvpx/recipe.toml @@ -1,4 +1,4 @@ -#TODO probably wrong template +#TODO error with the redox target [source] git = "https://chromium.googlesource.com/webm/libvpx" rev = "10b9492dcf05b652e2e4b370e205bd605d421972" diff --git a/recipes/wip/libvterm/recipe.toml b/recipes/wip/libvterm/recipe.toml index f53e9877..812086cc 100644 --- a/recipes/wip/libvterm/recipe.toml +++ b/recipes/wip/libvterm/recipe.toml @@ -1,5 +1,5 @@ #TODO probably wrong template [source] -tar = "https://www.leonerd.org.uk/code/libvterm/libvterm-0.3.2.tar.gz" +tar = "https://launchpad.net/libvterm/trunk/v0.3/+download/libvterm-0.3.3.tar.gz" [build] template = "configure" From a036b5caf24f769e17993af86748815aaa0673a2 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 02:15:14 +0000 Subject: [PATCH 1330/3180] update recipes --- recipes/wip/libvterm/recipe.toml | 2 +- recipes/wip/libwebp/recipe.toml | 2 +- recipes/wip/libwmf/recipe.toml | 2 +- recipes/wip/libwpd/recipe.toml | 2 +- recipes/wip/libx11/recipe.toml | 3 +++ 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/recipes/wip/libvterm/recipe.toml b/recipes/wip/libvterm/recipe.toml index 812086cc..cf68b3dc 100644 --- a/recipes/wip/libvterm/recipe.toml +++ b/recipes/wip/libvterm/recipe.toml @@ -1,4 +1,4 @@ -#TODO probably wrong template +#TODO missing script for "make" [source] tar = "https://launchpad.net/libvterm/trunk/v0.3/+download/libvterm-0.3.3.tar.gz" [build] diff --git a/recipes/wip/libwebp/recipe.toml b/recipes/wip/libwebp/recipe.toml index aacf2c81..f53d70b7 100644 --- a/recipes/wip/libwebp/recipe.toml +++ b/recipes/wip/libwebp/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make libgif work [source] tar = "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.3.2.tar.gz" [build] diff --git a/recipes/wip/libwmf/recipe.toml b/recipes/wip/libwmf/recipe.toml index d90bdfc7..ac4840f2 100644 --- a/recipes/wip/libwmf/recipe.toml +++ b/recipes/wip/libwmf/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO can't recognize the redox target [source] tar = "https://sourceforge.net/projects/wvware/files/libwmf/0.2.8.4/libwmf-0.2.8.4.tar.gz/download" [build] diff --git a/recipes/wip/libwpd/recipe.toml b/recipes/wip/libwpd/recipe.toml index 6b3679bd..5370ab7d 100644 --- a/recipes/wip/libwpd/recipe.toml +++ b/recipes/wip/libwpd/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make dependencies work [source] tar = "https://sourceforge.net/projects/libwpd/files/libwpd/libwpd-0.10.3/libwpd-0.10.3.tar.xz/download" [build] diff --git a/recipes/wip/libx11/recipe.toml b/recipes/wip/libx11/recipe.toml index 5b461668..93048090 100644 --- a/recipes/wip/libx11/recipe.toml +++ b/recipes/wip/libx11/recipe.toml @@ -3,3 +3,6 @@ tar = "https://www.x.org/releases/individual/lib/libX11-1.8.7.tar.xz" [build] template = "configure" +dependencies = [ + "x11proto", +] From 085ebe7c6fad085b102bbbae127d43d07c0e87f8 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 02:17:25 +0000 Subject: [PATCH 1331/3180] update recipes --- recipes/wip/libx11/recipe.toml | 2 +- recipes/wip/libxau/recipe.toml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/libx11/recipe.toml b/recipes/wip/libx11/recipe.toml index 93048090..987fae69 100644 --- a/recipes/wip/libx11/recipe.toml +++ b/recipes/wip/libx11/recipe.toml @@ -1,4 +1,4 @@ -#TODO maybe wrong template +#TODO directory error [source] tar = "https://www.x.org/releases/individual/lib/libX11-1.8.7.tar.xz" [build] diff --git a/recipes/wip/libxau/recipe.toml b/recipes/wip/libxau/recipe.toml index f1b2e711..69dba479 100644 --- a/recipes/wip/libxau/recipe.toml +++ b/recipes/wip/libxau/recipe.toml @@ -3,3 +3,6 @@ tar = "https://www.x.org/releases/individual/lib/libXau-1.0.11.tar.xz" [build] template = "configure" +dependencies = [ + "x11proto", +] From 39be1fa4101a68ddbc39632ff33fd8101263a07b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 02:46:24 +0000 Subject: [PATCH 1332/3180] update recipes --- recipes/wip/libxau/recipe.toml | 2 +- recipes/wip/libxaw/recipe.toml | 8 +++++++- recipes/wip/libxcb/recipe.toml | 3 +-- recipes/wip/libxcomposite/recipe.toml | 6 +++++- recipes/wip/libxcursor/recipe.toml | 7 ++++++- recipes/wip/libxdamage/recipe.toml | 7 ++++++- recipes/wip/libxdmcp/recipe.toml | 3 +++ 7 files changed, 29 insertions(+), 7 deletions(-) diff --git a/recipes/wip/libxau/recipe.toml b/recipes/wip/libxau/recipe.toml index 69dba479..45f5fdca 100644 --- a/recipes/wip/libxau/recipe.toml +++ b/recipes/wip/libxau/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] tar = "https://www.x.org/releases/individual/lib/libXau-1.0.11.tar.xz" [build] diff --git a/recipes/wip/libxaw/recipe.toml b/recipes/wip/libxaw/recipe.toml index a635b4ea..507f16fb 100644 --- a/recipes/wip/libxaw/recipe.toml +++ b/recipes/wip/libxaw/recipe.toml @@ -1,5 +1,11 @@ -#TODO Not compiled or tested +#TODO make dependencies work [source] tar = "https://www.x.org/releases/individual/lib/libXaw-1.0.15.tar.xz" [build] template = "configure" +dependencies = [ + "libx11", + "x11proto", + "libxext", + "libxmu", +] \ No newline at end of file diff --git a/recipes/wip/libxcb/recipe.toml b/recipes/wip/libxcb/recipe.toml index 6223c0cf..1d210db6 100644 --- a/recipes/wip/libxcb/recipe.toml +++ b/recipes/wip/libxcb/recipe.toml @@ -1,5 +1,4 @@ -#TODO probably missing dependencies -#TODO maybe wrong template +#TODO missing xcb-proto package [source] tar = "https://www.x.org/releases/individual/xcb/libxcb-1.16.tar.xz" [build] diff --git a/recipes/wip/libxcomposite/recipe.toml b/recipes/wip/libxcomposite/recipe.toml index 5e09343d..ff65809d 100644 --- a/recipes/wip/libxcomposite/recipe.toml +++ b/recipes/wip/libxcomposite/recipe.toml @@ -1,5 +1,9 @@ -#TODO Not compiled or tested +#TODO make dependencies work [source] tar = "https://www.x.org/releases/individual/lib/libXcomposite-0.4.6.tar.xz" [build] template = "configure" +dependencies = [ + "libx11", + "x11proto", +] diff --git a/recipes/wip/libxcursor/recipe.toml b/recipes/wip/libxcursor/recipe.toml index a2565763..882f1fad 100644 --- a/recipes/wip/libxcursor/recipe.toml +++ b/recipes/wip/libxcursor/recipe.toml @@ -1,5 +1,10 @@ -#TODO Not compiled or tested +#TODO make dependencies work [source] tar = "https://www.x.org/releases/individual/lib/libXcursor-1.2.1.tar.xz" [build] template = "configure" +dependencies = [ + "libx11", + "libxfixes", + "libxrender", +] diff --git a/recipes/wip/libxdamage/recipe.toml b/recipes/wip/libxdamage/recipe.toml index 81d83698..bf3281b4 100644 --- a/recipes/wip/libxdamage/recipe.toml +++ b/recipes/wip/libxdamage/recipe.toml @@ -1,5 +1,10 @@ -#TODO Not compiled or tested +#TODO missing dependencies [source] tar = "https://www.x.org/releases/individual/lib/libXdamage-1.1.6.tar.xz" [build] template = "configure" +dependencies = [ + "libxfixes", + "libx11", + "x11proto", +] diff --git a/recipes/wip/libxdmcp/recipe.toml b/recipes/wip/libxdmcp/recipe.toml index 12234485..d9db0851 100644 --- a/recipes/wip/libxdmcp/recipe.toml +++ b/recipes/wip/libxdmcp/recipe.toml @@ -3,3 +3,6 @@ tar = "https://www.x.org/releases/individual/lib/libXdmcp-1.1.4.tar.xz" [build] template = "configure" +dependencies = [ + "x11proto", +] From cf76426e6521bffb705f2b924889baefe38b37f4 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 02:49:55 +0000 Subject: [PATCH 1333/3180] update recipes --- recipes/wip/libxdmcp/recipe.toml | 2 +- recipes/wip/libxext/recipe.toml | 2 +- recipes/wip/libxfixes/recipe.toml | 8 ++++++-- recipes/wip/libxft/recipe.toml | 4 ++++ 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/recipes/wip/libxdmcp/recipe.toml b/recipes/wip/libxdmcp/recipe.toml index d9db0851..1f82fdb5 100644 --- a/recipes/wip/libxdmcp/recipe.toml +++ b/recipes/wip/libxdmcp/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] tar = "https://www.x.org/releases/individual/lib/libXdmcp-1.1.4.tar.xz" [build] diff --git a/recipes/wip/libxext/recipe.toml b/recipes/wip/libxext/recipe.toml index 25037345..bccc86cc 100644 --- a/recipes/wip/libxext/recipe.toml +++ b/recipes/wip/libxext/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO missing dependencies [source] tar = "https://www.x.org/releases/individual/lib/libXext-1.3.5.tar.xz" [build] diff --git a/recipes/wip/libxfixes/recipe.toml b/recipes/wip/libxfixes/recipe.toml index 0796ad9b..57128164 100644 --- a/recipes/wip/libxfixes/recipe.toml +++ b/recipes/wip/libxfixes/recipe.toml @@ -1,6 +1,10 @@ -#TODO probably missing dependencies -#TODO maybe wrong template +#TODO missing dependencies [source] tar = "https://www.x.org/releases/individual/lib/libXfixes-6.0.1.tar.xz" [build] template = "configure" +dependencies = [ + "x11proto", + "libx11", + "libxext", +] diff --git a/recipes/wip/libxft/recipe.toml b/recipes/wip/libxft/recipe.toml index b6b9b1be..c6df73b3 100644 --- a/recipes/wip/libxft/recipe.toml +++ b/recipes/wip/libxft/recipe.toml @@ -3,3 +3,7 @@ tar = "https://www.x.org/releases/individual/lib/libXft-2.3.8.tar.xz" [build] template = "configure" +dependencies = [ + "libxrender", + "libx11", +] From 0577d211f146941a2e1965a88bf6d16fa9bec2f9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 03:00:47 +0000 Subject: [PATCH 1334/3180] update recipes --- recipes/wip/libxft/recipe.toml | 2 +- recipes/wip/libxi/recipe.toml | 2 +- recipes/wip/libxinerama/recipe.toml | 2 +- recipes/wip/libxkbfile/recipe.toml | 5 ++++- recipes/wip/libxmu/recipe.toml | 6 +++++- recipes/wip/libxpm/recipe.toml | 4 ++++ 6 files changed, 16 insertions(+), 5 deletions(-) diff --git a/recipes/wip/libxft/recipe.toml b/recipes/wip/libxft/recipe.toml index c6df73b3..f775c0df 100644 --- a/recipes/wip/libxft/recipe.toml +++ b/recipes/wip/libxft/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO missing xorg-macros package [source] tar = "https://www.x.org/releases/individual/lib/libXft-2.3.8.tar.xz" [build] diff --git a/recipes/wip/libxi/recipe.toml b/recipes/wip/libxi/recipe.toml index fe2284b1..7cabbec2 100644 --- a/recipes/wip/libxi/recipe.toml +++ b/recipes/wip/libxi/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO missing dependencies [source] tar = "https://www.x.org/releases/individual/lib/libXi-1.8.1.tar.xz" [build] diff --git a/recipes/wip/libxinerama/recipe.toml b/recipes/wip/libxinerama/recipe.toml index 923d20a9..36533eb8 100644 --- a/recipes/wip/libxinerama/recipe.toml +++ b/recipes/wip/libxinerama/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO missing xorg-macros package [source] tar = "https://www.x.org/releases/individual/lib/libXinerama-1.1.5.tar.xz" [build] diff --git a/recipes/wip/libxkbfile/recipe.toml b/recipes/wip/libxkbfile/recipe.toml index 56126d7a..9a9d3124 100644 --- a/recipes/wip/libxkbfile/recipe.toml +++ b/recipes/wip/libxkbfile/recipe.toml @@ -1,5 +1,8 @@ -#TODO maybe wrong template +#TODO missing kbproto package [source] tar = "https://www.x.org/releases/individual/lib/libxkbfile-1.1.2.tar.xz" [build] template = "configure" +dependencies =[ + "libx11", +] diff --git a/recipes/wip/libxmu/recipe.toml b/recipes/wip/libxmu/recipe.toml index e2dfad11..129a978e 100644 --- a/recipes/wip/libxmu/recipe.toml +++ b/recipes/wip/libxmu/recipe.toml @@ -1,5 +1,9 @@ -#TODO Not compiled or tested +#TODO missing dependencies [source] tar = "https://www.x.org/releases/individual/lib/libXmu-1.1.4.tar.xz" [build] template = "configure" +dependencies = [ + "libx11", + "libxext", +] diff --git a/recipes/wip/libxpm/recipe.toml b/recipes/wip/libxpm/recipe.toml index 158af098..bb4f847b 100644 --- a/recipes/wip/libxpm/recipe.toml +++ b/recipes/wip/libxpm/recipe.toml @@ -3,3 +3,7 @@ tar = "https://www.x.org/releases/individual/lib/libXpm-3.5.17.tar.xz" [build] template = "configure" +dependencies = [ + "libx11", + "x11proto", +] From 7e5a0f1c13f1f27cabc56ede5a55641c83025623 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 03:16:13 +0000 Subject: [PATCH 1335/3180] update recipes --- recipes/wip/libxpm/recipe.toml | 2 +- recipes/wip/libxrandr/recipe.toml | 2 +- recipes/wip/libxrender/recipe.toml | 2 +- recipes/wip/libxres/recipe.toml | 2 +- recipes/wip/libxslt/recipe.toml | 2 +- recipes/wip/libxss/recipe.toml | 2 +- recipes/wip/libxtrans/recipe.toml | 2 +- recipes/wip/libxtst/recipe.toml | 7 ++++++- recipes/wip/libxv/recipe.toml | 2 +- recipes/wip/libxvmc/recipe.toml | 2 +- recipes/wip/libzvbi/recipe.toml | 2 +- recipes/wip/lobster/recipe.toml | 2 +- recipes/wip/logss/recipe.toml | 2 +- recipes/wip/lpm/recipe.toml | 5 ++++- 14 files changed, 22 insertions(+), 14 deletions(-) diff --git a/recipes/wip/libxpm/recipe.toml b/recipes/wip/libxpm/recipe.toml index bb4f847b..a67def34 100644 --- a/recipes/wip/libxpm/recipe.toml +++ b/recipes/wip/libxpm/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO directory error [source] tar = "https://www.x.org/releases/individual/lib/libXpm-3.5.17.tar.xz" [build] diff --git a/recipes/wip/libxrandr/recipe.toml b/recipes/wip/libxrandr/recipe.toml index a0f88fc9..c19cfada 100644 --- a/recipes/wip/libxrandr/recipe.toml +++ b/recipes/wip/libxrandr/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO missing xorg-macros package [source] tar = "https://www.x.org/releases/individual/lib/libXrandr-1.5.4.tar.xz" [build] diff --git a/recipes/wip/libxrender/recipe.toml b/recipes/wip/libxrender/recipe.toml index 4e38f7c1..c09ffbce 100644 --- a/recipes/wip/libxrender/recipe.toml +++ b/recipes/wip/libxrender/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO missing xorg-macros package [source] tar = "https://www.x.org/releases/individual/lib/libXrender-0.9.11.tar.xz" [build] diff --git a/recipes/wip/libxres/recipe.toml b/recipes/wip/libxres/recipe.toml index 0ec2ec7f..af7194ca 100644 --- a/recipes/wip/libxres/recipe.toml +++ b/recipes/wip/libxres/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO missing xorg-macros package [source] tar = "https://www.x.org/releases/individual/lib/libXres-1.2.2.tar.xz" [build] diff --git a/recipes/wip/libxslt/recipe.toml b/recipes/wip/libxslt/recipe.toml index b6e7a5ff..272d5c53 100644 --- a/recipes/wip/libxslt/recipe.toml +++ b/recipes/wip/libxslt/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO require Python 3.10 [source] tar = "https://download.gnome.org/sources/libxslt/1.1/libxslt-1.1.38.tar.xz" [build] diff --git a/recipes/wip/libxss/recipe.toml b/recipes/wip/libxss/recipe.toml index f200cc56..e1aab827 100644 --- a/recipes/wip/libxss/recipe.toml +++ b/recipes/wip/libxss/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO missing xorg-macros package [source] tar = "https://www.x.org/releases/individual/lib/libXScrnSaver-1.2.4.tar.xz" [build] diff --git a/recipes/wip/libxtrans/recipe.toml b/recipes/wip/libxtrans/recipe.toml index 0be67c16..cc5387ed 100644 --- a/recipes/wip/libxtrans/recipe.toml +++ b/recipes/wip/libxtrans/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] tar = "https://www.x.org/releases/individual/lib/xtrans-1.4.0.tar.gz" [build] diff --git a/recipes/wip/libxtst/recipe.toml b/recipes/wip/libxtst/recipe.toml index 6ec3586f..fd8a1f1d 100644 --- a/recipes/wip/libxtst/recipe.toml +++ b/recipes/wip/libxtst/recipe.toml @@ -1,5 +1,10 @@ -#TODO Not compiled or tested +#TODO missing dependencies [source] tar = "https://www.x.org/releases/individual/lib/libXtst-1.2.4.tar.xz" [build] template = "configure" +dependencies = [ + "libx11", + "libxi", + "libxext", +] \ No newline at end of file diff --git a/recipes/wip/libxv/recipe.toml b/recipes/wip/libxv/recipe.toml index abc0c83e..b7e0e649 100644 --- a/recipes/wip/libxv/recipe.toml +++ b/recipes/wip/libxv/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO missing xorg-macros package [source] tar = "https://www.x.org/releases/individual/lib/libXv-1.0.12.tar.xz" [build] diff --git a/recipes/wip/libxvmc/recipe.toml b/recipes/wip/libxvmc/recipe.toml index 6607e8bf..e89d95ff 100644 --- a/recipes/wip/libxvmc/recipe.toml +++ b/recipes/wip/libxvmc/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO missing xorg-macros package [source] tar = "https://www.x.org/releases/individual/lib/libXvMC-1.0.13.tar.xz" [build] diff --git a/recipes/wip/libzvbi/recipe.toml b/recipes/wip/libzvbi/recipe.toml index 50240827..5c2df511 100644 --- a/recipes/wip/libzvbi/recipe.toml +++ b/recipes/wip/libzvbi/recipe.toml @@ -1,4 +1,4 @@ -#TODO the redox target is not supported on the configure +#TODO the redox target is not supported on the configure script [source] tar = "https://sourceforge.net/projects/zapping/files/zvbi/0.2.35/zvbi-0.2.35.tar.bz2/download" [build] diff --git a/recipes/wip/lobster/recipe.toml b/recipes/wip/lobster/recipe.toml index 5cf6e794..04a277f7 100644 --- a/recipes/wip/lobster/recipe.toml +++ b/recipes/wip/lobster/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO move to proper category [source] git = "https://github.com/justchokingaround/lobster" [build] diff --git a/recipes/wip/logss/recipe.toml b/recipes/wip/logss/recipe.toml index 3eb54ddd..2ce605ed 100644 --- a/recipes/wip/logss/recipe.toml +++ b/recipes/wip/logss/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/todoesverso/logss" [build] diff --git a/recipes/wip/lpm/recipe.toml b/recipes/wip/lpm/recipe.toml index 6013ec83..ab9a0d50 100644 --- a/recipes/wip/lpm/recipe.toml +++ b/recipes/wip/lpm/recipe.toml @@ -2,4 +2,7 @@ [source] git = "https://github.com/lodosgroup/lpm" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages lpm +""" From fb3ef9d8c6de3710f371de5950505ada2d9f0c94 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 03:19:26 +0000 Subject: [PATCH 1336/3180] update recipes --- recipes/wip/lpm/recipe.toml | 2 +- recipes/wip/lrdf/recipe.toml | 2 +- recipes/wip/lsd/recipe.toml | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/wip/lpm/recipe.toml b/recipes/wip/lpm/recipe.toml index ab9a0d50..d872ed5f 100644 --- a/recipes/wip/lpm/recipe.toml +++ b/recipes/wip/lpm/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error [source] git = "https://github.com/lodosgroup/lpm" [build] diff --git a/recipes/wip/lrdf/recipe.toml b/recipes/wip/lrdf/recipe.toml index 39988f67..8029412d 100644 --- a/recipes/wip/lrdf/recipe.toml +++ b/recipes/wip/lrdf/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO configuration error [source] git = "https://github.com/x42/LRDF" rev = "e61f7aa4a1e240a884e3a0cb4b2db65046cfcaa6" diff --git a/recipes/wip/lsd/recipe.toml b/recipes/wip/lsd/recipe.toml index 1ffc94fc..11b9cd05 100644 --- a/recipes/wip/lsd/recipe.toml +++ b/recipes/wip/lsd/recipe.toml @@ -1,6 +1,5 @@ #TODO users crate error [source] git = "https://github.com/lsd-rs/lsd" -rev = "9b8ed0ef732bd0cfc0f16c0cdb0040bcff2936d5" [build] template = "cargo" From 70c69e29e1df35a4b73a985053719b23e1be15c1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 03:27:16 +0000 Subject: [PATCH 1337/3180] update recipes --- recipes/wip/lsd/recipe.toml | 2 +- recipes/wip/lttng-ust/recipe.toml | 2 +- recipes/wip/lychee/recipe.toml | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/wip/lsd/recipe.toml b/recipes/wip/lsd/recipe.toml index 11b9cd05..7a4a539a 100644 --- a/recipes/wip/lsd/recipe.toml +++ b/recipes/wip/lsd/recipe.toml @@ -1,4 +1,4 @@ -#TODO users crate error +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/lsd-rs/lsd" [build] diff --git a/recipes/wip/lttng-ust/recipe.toml b/recipes/wip/lttng-ust/recipe.toml index 5048e150..fa22fa07 100644 --- a/recipes/wip/lttng-ust/recipe.toml +++ b/recipes/wip/lttng-ust/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make dependencies work [source] tar = "http://lttng.org/files/lttng-ust/lttng-ust-2.13.6.tar.bz2" [build] diff --git a/recipes/wip/lychee/recipe.toml b/recipes/wip/lychee/recipe.toml index 514b1af2..42fec69c 100644 --- a/recipes/wip/lychee/recipe.toml +++ b/recipes/wip/lychee/recipe.toml @@ -1,7 +1,6 @@ #TODO compilation error (after an update on tokio and a patch on ring) [source] git = "https://github.com/lycheeverse/lychee" -rev = "75e80190fb39abd52ceabacce1073784c7bbaa5c" [build] template = "custom" dependencies = [ From 5aabcd3757131e4c6b29f0655c4c07c8a9c26045 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 03:37:26 +0000 Subject: [PATCH 1338/3180] update recipes --- recipes/wip/lychee/recipe.toml | 2 +- recipes/wip/macchina/recipe.toml | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/recipes/wip/lychee/recipe.toml b/recipes/wip/lychee/recipe.toml index 42fec69c..b441f801 100644 --- a/recipes/wip/lychee/recipe.toml +++ b/recipes/wip/lychee/recipe.toml @@ -1,4 +1,4 @@ -#TODO compilation error (after an update on tokio and a patch on ring) +#TODO async-io crate error (after cargo update) [source] git = "https://github.com/lycheeverse/lychee" [build] diff --git a/recipes/wip/macchina/recipe.toml b/recipes/wip/macchina/recipe.toml index 75d4f547..e408351a 100644 --- a/recipes/wip/macchina/recipe.toml +++ b/recipes/wip/macchina/recipe.toml @@ -1,9 +1,6 @@ -#TODO Compilation error +#TODO [source] git = "https://github.com/Macchina-CLI/macchina" rev = "f228e72bd6a84bb18c26f1665c412cf206d425a3" [build] template = "cargo" -dependencies = [ - "libgit2", -] From 41527d7ce0ae4a64d55c17dd429dff54518dc71a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 03:38:25 +0000 Subject: [PATCH 1339/3180] update macchina --- recipes/wip/macchina/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/wip/macchina/recipe.toml b/recipes/wip/macchina/recipe.toml index e408351a..9e0dc3d7 100644 --- a/recipes/wip/macchina/recipe.toml +++ b/recipes/wip/macchina/recipe.toml @@ -1,6 +1,5 @@ #TODO [source] git = "https://github.com/Macchina-CLI/macchina" -rev = "f228e72bd6a84bb18c26f1665c412cf206d425a3" [build] template = "cargo" From 68588a05f533f65c63028060e9cfcf4ba47878c7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 03:45:39 +0000 Subject: [PATCH 1340/3180] update recipes --- recipes/wip/macchina/recipe.toml | 2 +- recipes/wip/magic-wormhole-rs/recipe.toml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/macchina/recipe.toml b/recipes/wip/macchina/recipe.toml index 9e0dc3d7..64665967 100644 --- a/recipes/wip/macchina/recipe.toml +++ b/recipes/wip/macchina/recipe.toml @@ -1,4 +1,4 @@ -#TODO +#TODO libmacchina crate error (after cargo update) [source] git = "https://github.com/Macchina-CLI/macchina" [build] diff --git a/recipes/wip/magic-wormhole-rs/recipe.toml b/recipes/wip/magic-wormhole-rs/recipe.toml index c711b975..61ac61bf 100644 --- a/recipes/wip/magic-wormhole-rs/recipe.toml +++ b/recipes/wip/magic-wormhole-rs/recipe.toml @@ -1,7 +1,6 @@ #TODO async-tar crate error [source] git = "https://github.com/magic-wormhole/magic-wormhole.rs" -rev = "8a8cba4ba70df6be258497d7deb784d00a098c43" [build] template = "custom" script = """ From e1820626424eb8182110de7025d982fbde3720cf Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 03:50:34 +0000 Subject: [PATCH 1341/3180] update recipes --- recipes/wip/magic-wormhole-rs/recipe.toml | 2 +- recipes/wip/mandy/recipe.toml | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/wip/magic-wormhole-rs/recipe.toml b/recipes/wip/magic-wormhole-rs/recipe.toml index 61ac61bf..c79ab628 100644 --- a/recipes/wip/magic-wormhole-rs/recipe.toml +++ b/recipes/wip/magic-wormhole-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO async-tar crate error +#TODO async-tar and rustix crates error [source] git = "https://github.com/magic-wormhole/magic-wormhole.rs" [build] diff --git a/recipes/wip/mandy/recipe.toml b/recipes/wip/mandy/recipe.toml index 4fa0e400..dc48793b 100644 --- a/recipes/wip/mandy/recipe.toml +++ b/recipes/wip/mandy/recipe.toml @@ -3,4 +3,7 @@ git = "https://github.com/angeldollface/mandy" rev = "a64f20d0386af628af2662ed2a1e72faf9efe355" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages mandy-bin +""" From d24ccdbde6e261dfa5ff91ddaf3c31160b2bd2da Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 03:52:58 +0000 Subject: [PATCH 1342/3180] add dependency --- recipes/wip/mandy/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/wip/mandy/recipe.toml b/recipes/wip/mandy/recipe.toml index dc48793b..ff7a1733 100644 --- a/recipes/wip/mandy/recipe.toml +++ b/recipes/wip/mandy/recipe.toml @@ -4,6 +4,9 @@ git = "https://github.com/angeldollface/mandy" rev = "a64f20d0386af628af2662ed2a1e72faf9efe355" [build] template = "custom" +dependencies = [ + "openssl1", +] script = """ cookbook_cargo_packages mandy-bin """ From 17a209b14bb6dea8a98515b13607228f35062dde Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 11:13:37 +0000 Subject: [PATCH 1343/3180] update recipes --- recipes/wip/mandy/recipe.toml | 2 +- recipes/wip/mask/recipe.toml | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/wip/mandy/recipe.toml b/recipes/wip/mandy/recipe.toml index ff7a1733..aaa9a7e2 100644 --- a/recipes/wip/mandy/recipe.toml +++ b/recipes/wip/mandy/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO libssh2-sys crate error [source] git = "https://github.com/angeldollface/mandy" rev = "a64f20d0386af628af2662ed2a1e72faf9efe355" diff --git a/recipes/wip/mask/recipe.toml b/recipes/wip/mask/recipe.toml index 31f440fd..533500ac 100644 --- a/recipes/wip/mask/recipe.toml +++ b/recipes/wip/mask/recipe.toml @@ -3,4 +3,7 @@ git = "https://github.com/jacobdeichert/mask" rev = "a082ee0e5c0a87ccd2447d569fe3a055222864c3" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages mask +""" From 36ba741b93b09a32790c06de0c543ec15a26ee71 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 11:14:41 +0000 Subject: [PATCH 1344/3180] update mask --- recipes/wip/mask/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/wip/mask/recipe.toml b/recipes/wip/mask/recipe.toml index 533500ac..0c373adb 100644 --- a/recipes/wip/mask/recipe.toml +++ b/recipes/wip/mask/recipe.toml @@ -1,7 +1,6 @@ #TODO Not compiled or tested [source] git = "https://github.com/jacobdeichert/mask" -rev = "a082ee0e5c0a87ccd2447d569fe3a055222864c3" [build] template = "custom" script = """ From cbae1c5f0f7adbe173af9d4220aac741b9d01eff Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 11:25:26 +0000 Subject: [PATCH 1345/3180] update recipes --- recipes/wip/mask/recipe.toml | 2 +- recipes/wip/matui/recipe.toml | 1 - recipes/wip/maze-tui/recipe.toml | 4 ++-- recipes/wip/mcfly/recipe.toml | 3 +-- 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/recipes/wip/mask/recipe.toml b/recipes/wip/mask/recipe.toml index 0c373adb..9d52b13b 100644 --- a/recipes/wip/mask/recipe.toml +++ b/recipes/wip/mask/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/jacobdeichert/mask" [build] diff --git a/recipes/wip/matui/recipe.toml b/recipes/wip/matui/recipe.toml index 7ace36a1..7d9b4344 100644 --- a/recipes/wip/matui/recipe.toml +++ b/recipes/wip/matui/recipe.toml @@ -1,7 +1,6 @@ #TODO xdg-home crate error [source] git = "https://github.com/pkulak/matui" -rev = "44397982508666e3abd3b69b401dee9496bba2d6" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/maze-tui/recipe.toml b/recipes/wip/maze-tui/recipe.toml index 079cbf89..7e7101a9 100644 --- a/recipes/wip/maze-tui/recipe.toml +++ b/recipes/wip/maze-tui/recipe.toml @@ -1,5 +1,5 @@ -#TODO Not compiled or tested +#TODO go to the "maze_progs" folder and build "run_tui" and "run_maze" [source] git = "https://github.com/agl-alexglopez/maze-tui" [build] -template = "cargo" +template = "custom" diff --git a/recipes/wip/mcfly/recipe.toml b/recipes/wip/mcfly/recipe.toml index 9d76c251..3f8b56a6 100644 --- a/recipes/wip/mcfly/recipe.toml +++ b/recipes/wip/mcfly/recipe.toml @@ -1,6 +1,5 @@ -#TODO Not compiled or tested +#TODO program source code error [source] git = "https://github.com/cantino/mcfly" -rev = "2bddd8bd83a2011a2ddaf3f00d66346673672644" [build] template = "cargo" From 9f3f847f37d16b22600b397eb1f4bba4974cd8e1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 11:44:40 +0000 Subject: [PATCH 1346/3180] update recipes --- recipes/wip/mdbook/recipe.toml | 2 +- recipes/wip/memcached/recipe.toml | 1 + recipes/wip/mesa-demos/recipe.toml | 1 + recipes/wip/mimic/recipe.toml | 2 +- recipes/wip/minesweep-rs/recipe.toml | 1 - 5 files changed, 4 insertions(+), 3 deletions(-) diff --git a/recipes/wip/mdbook/recipe.toml b/recipes/wip/mdbook/recipe.toml index e989204b..8def8940 100644 --- a/recipes/wip/mdbook/recipe.toml +++ b/recipes/wip/mdbook/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/rust-lang/mdBook" rev = "b7f46213c7df8f499eca0c82e7b41804cc15e369" diff --git a/recipes/wip/memcached/recipe.toml b/recipes/wip/memcached/recipe.toml index 886eff74..89f494be 100644 --- a/recipes/wip/memcached/recipe.toml +++ b/recipes/wip/memcached/recipe.toml @@ -1,4 +1,5 @@ #TODO probably wrong template, see https://github.com/memcached/memcached/wiki/Install#from-source +#TODO make libevent works [source] tar = "https://www.memcached.org/files/memcached-1.6.22.tar.gz" [build] diff --git a/recipes/wip/mesa-demos/recipe.toml b/recipes/wip/mesa-demos/recipe.toml index b99ed908..b2314349 100644 --- a/recipes/wip/mesa-demos/recipe.toml +++ b/recipes/wip/mesa-demos/recipe.toml @@ -1,4 +1,5 @@ #TODO missing script for Meson, see https://gitlab.freedesktop.org/mesa/demos/-/blob/main/README.rst?ref_type=heads +#TODO make freeglut works [source] tar = "https://archive.mesa3d.org/demos/mesa-demos-9.0.0.tar.xz" [build] diff --git a/recipes/wip/mimic/recipe.toml b/recipes/wip/mimic/recipe.toml index 1a0bcf76..1b3bb273 100644 --- a/recipes/wip/mimic/recipe.toml +++ b/recipes/wip/mimic/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO mio crate error (even after cargo update) [source] git = "https://github.com/jawline/Mimic" [build] diff --git a/recipes/wip/minesweep-rs/recipe.toml b/recipes/wip/minesweep-rs/recipe.toml index 0af0af58..22b5745e 100644 --- a/recipes/wip/minesweep-rs/recipe.toml +++ b/recipes/wip/minesweep-rs/recipe.toml @@ -1,6 +1,5 @@ #TODO Not compiled or tested [source] git = "https://github.com/cpcloud/minesweep-rs" -rev = "9ed752aa9670b0e5220a25923dca50adb0a92c6f" [build] template = "cargo" From 76dbf0bc44e63dd10ba1e3ad7c4a68d358bfaf84 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 11:51:18 +0000 Subject: [PATCH 1347/3180] update recipes --- recipes/wip/minesweep-rs/recipe.toml | 2 +- recipes/wip/mono/recipe.toml | 2 +- recipes/wip/monolith/recipe.toml | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/wip/minesweep-rs/recipe.toml b/recipes/wip/minesweep-rs/recipe.toml index 22b5745e..882a5c6e 100644 --- a/recipes/wip/minesweep-rs/recipe.toml +++ b/recipes/wip/minesweep-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO ratatui crate error [source] git = "https://github.com/cpcloud/minesweep-rs" [build] diff --git a/recipes/wip/mono/recipe.toml b/recipes/wip/mono/recipe.toml index 7af01856..c3920fa5 100644 --- a/recipes/wip/mono/recipe.toml +++ b/recipes/wip/mono/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO can't recognize the redox target [source] tar = "https://download.mono-project.com/sources/mono/mono-6.12.0.199.tar.xz" [build] diff --git a/recipes/wip/monolith/recipe.toml b/recipes/wip/monolith/recipe.toml index 4d028c7a..bd5b88e9 100644 --- a/recipes/wip/monolith/recipe.toml +++ b/recipes/wip/monolith/recipe.toml @@ -1,7 +1,6 @@ #TODO weird OpenSSL error on compilation (using cargo update) [source] git = "https://github.com/Y2Z/monolith" -rev = "1c71e708e1e343ac2bace250e698966abbba1568" [build] template = "custom" dependencies = [ From ca17f134ae8186502aca134849e20758b67eb59b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 12:09:49 +0000 Subject: [PATCH 1348/3180] update recipes --- recipes/wip/monolith/recipe.toml | 2 +- recipes/wip/morty/recipe.toml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/monolith/recipe.toml b/recipes/wip/monolith/recipe.toml index bd5b88e9..de4096e2 100644 --- a/recipes/wip/monolith/recipe.toml +++ b/recipes/wip/monolith/recipe.toml @@ -1,4 +1,4 @@ -#TODO weird OpenSSL error on compilation (using cargo update) +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/Y2Z/monolith" [build] diff --git a/recipes/wip/morty/recipe.toml b/recipes/wip/morty/recipe.toml index fd3c251f..052ee9c8 100644 --- a/recipes/wip/morty/recipe.toml +++ b/recipes/wip/morty/recipe.toml @@ -1,6 +1,5 @@ #TODO Not compiled or tested [source] git = "https://github.com/pulp-platform/morty" -rev = "a1a5b483fabc8b119a78f3c5b1921e8d6510720d" [build] template = "cargo" From 61a628c6d38baf9856fa74843a9f25ede52a322c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 13:24:08 +0000 Subject: [PATCH 1349/3180] update recipes --- recipes/wip/morty/recipe.toml | 2 +- recipes/wip/mosh/recipe.toml | 2 +- recipes/wip/mpc/recipe.toml | 2 +- recipes/wip/mprocs/recipe.toml | 3 +-- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/recipes/wip/morty/recipe.toml b/recipes/wip/morty/recipe.toml index 052ee9c8..42fd49ae 100644 --- a/recipes/wip/morty/recipe.toml +++ b/recipes/wip/morty/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/pulp-platform/morty" [build] diff --git a/recipes/wip/mosh/recipe.toml b/recipes/wip/mosh/recipe.toml index c0caf8be..03d120ac 100644 --- a/recipes/wip/mosh/recipe.toml +++ b/recipes/wip/mosh/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO missing headers [source] tar = "https://mosh.org/mosh-1.4.0.tar.gz" [build] diff --git a/recipes/wip/mpc/recipe.toml b/recipes/wip/mpc/recipe.toml index dc75b2aa..bb6d1d4b 100644 --- a/recipes/wip/mpc/recipe.toml +++ b/recipes/wip/mpc/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] tar = "https://ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz" [build] diff --git a/recipes/wip/mprocs/recipe.toml b/recipes/wip/mprocs/recipe.toml index 91fa7633..adf78fec 100644 --- a/recipes/wip/mprocs/recipe.toml +++ b/recipes/wip/mprocs/recipe.toml @@ -1,7 +1,6 @@ -#TODO termios/ioctl-rs crate error +#TODO termios and ioctl-rs crates error [source] git = "https://github.com/pvolok/mprocs" -rev = "71b65984dba7c768b383544cd7829ab099b965a9" [build] template = "custom" script = """ From 29e79c24407a6fa16a6f0657772ee5712af62acb Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 13:58:08 +0000 Subject: [PATCH 1350/3180] update recipes --- recipes/wip/mprocs/recipe.toml | 2 +- recipes/wip/mrbayes/recipe.toml | 2 +- recipes/wip/musepack/recipe.toml | 4 ++-- recipes/wip/naev/recipe.toml | 2 +- recipes/wip/ncspot/recipe.toml | 2 +- recipes/wip/neovide/recipe.toml | 2 +- recipes/wip/nestur/recipe.toml | 2 +- recipes/wip/netop/recipe.toml | 2 +- recipes/wip/news-rs/recipe.toml | 1 - 9 files changed, 9 insertions(+), 10 deletions(-) diff --git a/recipes/wip/mprocs/recipe.toml b/recipes/wip/mprocs/recipe.toml index adf78fec..374be7af 100644 --- a/recipes/wip/mprocs/recipe.toml +++ b/recipes/wip/mprocs/recipe.toml @@ -1,4 +1,4 @@ -#TODO termios and ioctl-rs crates error +#TODO termios crates error (after cargo update) [source] git = "https://github.com/pvolok/mprocs" [build] diff --git a/recipes/wip/mrbayes/recipe.toml b/recipes/wip/mrbayes/recipe.toml index e145f054..64cbe798 100644 --- a/recipes/wip/mrbayes/recipe.toml +++ b/recipes/wip/mrbayes/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO don't recognize the redox target [source] git = "https://github.com/NBISweden/MrBayes" [build] diff --git a/recipes/wip/musepack/recipe.toml b/recipes/wip/musepack/recipe.toml index 63069b4d..713b1ba0 100644 --- a/recipes/wip/musepack/recipe.toml +++ b/recipes/wip/musepack/recipe.toml @@ -1,5 +1,5 @@ -#TODO probably wrong template, check inside the tarball +#TODO missing script for building, verify the tarball [source] tar = "https://files.musepack.net/source/musepack_src_r475.tar.gz" [build] -template = "configure" +template = "custom" diff --git a/recipes/wip/naev/recipe.toml b/recipes/wip/naev/recipe.toml index 441bcf71..87fc343b 100644 --- a/recipes/wip/naev/recipe.toml +++ b/recipes/wip/naev/recipe.toml @@ -5,7 +5,7 @@ tar = "https://github.com/naev/naev/releases/download/v0.10.6/naev-0.10.6-source template = "custom" dependencies = [ "sdl2", - "sdl2_image", + "sdl2-image", "libpng", "libxml2", "libwebp", diff --git a/recipes/wip/ncspot/recipe.toml b/recipes/wip/ncspot/recipe.toml index 3e08ba47..37e72505 100644 --- a/recipes/wip/ncspot/recipe.toml +++ b/recipes/wip/ncspot/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO ncurses crate error [source] git = "https://github.com/hrkfdn/ncspot" rev = "92e0852b3796601f406ebfdd697635ea63566a31" diff --git a/recipes/wip/neovide/recipe.toml b/recipes/wip/neovide/recipe.toml index 34ae4a2a..a9e37650 100644 --- a/recipes/wip/neovide/recipe.toml +++ b/recipes/wip/neovide/recipe.toml @@ -1,4 +1,4 @@ -#TODO Make neovim work +#TODO Make neovim and freeglut work [source] git = "https://github.com/neovide/neovide" rev = "113955bb68bf6715c784ea0b7ee75011c55471c9" diff --git a/recipes/wip/nestur/recipe.toml b/recipes/wip/nestur/recipe.toml index da00c43b..33a86d50 100644 --- a/recipes/wip/nestur/recipe.toml +++ b/recipes/wip/nestur/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error [source] git = "https://github.com/spieglt/nestur" [build] diff --git a/recipes/wip/netop/recipe.toml b/recipes/wip/netop/recipe.toml index cdeca28a..c298bc7b 100644 --- a/recipes/wip/netop/recipe.toml +++ b/recipes/wip/netop/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make libpcap work [source] git = "https://github.com/ZingerLittleBee/netop" [build] diff --git a/recipes/wip/news-rs/recipe.toml b/recipes/wip/news-rs/recipe.toml index 89091348..b54da26c 100644 --- a/recipes/wip/news-rs/recipe.toml +++ b/recipes/wip/news-rs/recipe.toml @@ -1,6 +1,5 @@ #TODO Not compiled or tested [source] git = "https://github.com/Atticus64/news" -rev = "84d7598c6ec44fa9c1ee2a42d0c73163e3c7e407" [build] template = "cargo" From 56a4017dc7261722f50a831e565a032c22dc1eb3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 15:03:04 +0000 Subject: [PATCH 1351/3180] update recipes --- recipes/wip/news-rs/recipe.toml | 2 +- recipes/wip/niri/recipe.toml | 4 ++++ recipes/wip/nomad/recipe.toml | 3 +++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/recipes/wip/news-rs/recipe.toml b/recipes/wip/news-rs/recipe.toml index b54da26c..8f5b6ef2 100644 --- a/recipes/wip/news-rs/recipe.toml +++ b/recipes/wip/news-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO mio crate error (after cargo update) [source] git = "https://github.com/Atticus64/news" [build] diff --git a/recipes/wip/niri/recipe.toml b/recipes/wip/niri/recipe.toml index ca364ae5..76763e59 100644 --- a/recipes/wip/niri/recipe.toml +++ b/recipes/wip/niri/recipe.toml @@ -1,8 +1,12 @@ +#TODO Port Smithay #TODO probably wrong script for configuration, see https://github.com/YaLTeR/niri#installation [source] git = "https://github.com/YaLTeR/niri" [build] template = "custom" +dependencies = [ + "libwayland", +] script = """ mkdir -pv "${COOKBOOK_STAGE}"/bin mkdir -pv "${COOKBOOK_STAGE}"/home/user/.local/share/wayland-sessions diff --git a/recipes/wip/nomad/recipe.toml b/recipes/wip/nomad/recipe.toml index 6987f10a..abcc9ed2 100644 --- a/recipes/wip/nomad/recipe.toml +++ b/recipes/wip/nomad/recipe.toml @@ -4,3 +4,6 @@ git = "https://github.com/JosephLai241/nomad" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 031b28f2264850d06ac111d02e65162e0a679465 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 15:09:30 +0000 Subject: [PATCH 1352/3180] update recipes --- recipes/wip/nomad/recipe.toml | 2 +- recipes/wip/nsh/recipe.toml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/nomad/recipe.toml b/recipes/wip/nomad/recipe.toml index abcc9ed2..896bc7e1 100644 --- a/recipes/wip/nomad/recipe.toml +++ b/recipes/wip/nomad/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO sys-info crate error #TODO require Nerd Fonts [source] git = "https://github.com/JosephLai241/nomad" diff --git a/recipes/wip/nsh/recipe.toml b/recipes/wip/nsh/recipe.toml index b834d070..9dd411cd 100644 --- a/recipes/wip/nsh/recipe.toml +++ b/recipes/wip/nsh/recipe.toml @@ -1,6 +1,5 @@ #TODO Not compiled or tested [source] git = "https://github.com/nuta/nsh" -rev = "93fa01cd5b5bba6f1c6aaabc218f3979d0ca2360" [build] template = "cargo" From ef367d87af49235750d96c5271c5365e7b770c56 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 15:18:29 +0000 Subject: [PATCH 1353/3180] update recipes --- recipes/wip/nsh/recipe.toml | 2 +- recipes/wip/nspr/recipe.toml | 4 ++-- recipes/wip/nss/recipe.toml | 4 ++-- recipes/wip/ntfs-3g/recipe.toml | 2 +- recipes/wip/ntpd-rs/recipe.toml | 5 ++++- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/recipes/wip/nsh/recipe.toml b/recipes/wip/nsh/recipe.toml index 9dd411cd..69a1e4fd 100644 --- a/recipes/wip/nsh/recipe.toml +++ b/recipes/wip/nsh/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO mio crate error [source] git = "https://github.com/nuta/nsh" [build] diff --git a/recipes/wip/nspr/recipe.toml b/recipes/wip/nspr/recipe.toml index b714f9db..1d29eda4 100644 --- a/recipes/wip/nspr/recipe.toml +++ b/recipes/wip/nspr/recipe.toml @@ -1,5 +1,5 @@ -#TODO Not compiled or tested yet +#TODO missing script for building [source] tar = "https://ftp.mozilla.org/pub/nspr/releases/v4.9.6/src/nspr-4.9.6.tar.gz" [build] -template = "configure" +template = "custom" diff --git a/recipes/wip/nss/recipe.toml b/recipes/wip/nss/recipe.toml index 829abdb0..b9ffd1a5 100644 --- a/recipes/wip/nss/recipe.toml +++ b/recipes/wip/nss/recipe.toml @@ -1,5 +1,5 @@ -#TODO Not compiled or tested +#TODO missing script for building [source] tar = "https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_9_2_RTM/src/nss-3.9.2.tar.gz" [build] -template = "configure" +template = "custom" diff --git a/recipes/wip/ntfs-3g/recipe.toml b/recipes/wip/ntfs-3g/recipe.toml index cafa85f0..81e68ead 100644 --- a/recipes/wip/ntfs-3g/recipe.toml +++ b/recipes/wip/ntfs-3g/recipe.toml @@ -1,4 +1,4 @@ -#TODO mayne needs to patch the bundled libfuse or force the libfuse3 recipe +#TODO port to redox [source] tar = "https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2022.10.3.tgz" [build] diff --git a/recipes/wip/ntpd-rs/recipe.toml b/recipes/wip/ntpd-rs/recipe.toml index 94e7adde..ab14eeca 100644 --- a/recipes/wip/ntpd-rs/recipe.toml +++ b/recipes/wip/ntpd-rs/recipe.toml @@ -3,4 +3,7 @@ git = "https://github.com/pendulum-project/ntpd-rs" rev = "913700dc79420f6db5fe1f2110d3146d7f9addfe" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages ntpd-rs +""" From b6b0340fd62eb3684058ae8e4c645aa8bfd4b7e4 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 15:19:21 +0000 Subject: [PATCH 1354/3180] update recipe --- recipes/wip/ntpd-rs/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/ntpd-rs/recipe.toml b/recipes/wip/ntpd-rs/recipe.toml index ab14eeca..7448eba3 100644 --- a/recipes/wip/ntpd-rs/recipe.toml +++ b/recipes/wip/ntpd-rs/recipe.toml @@ -5,5 +5,5 @@ rev = "913700dc79420f6db5fe1f2110d3146d7f9addfe" [build] template = "custom" script = """ -cookbook_cargo_packages ntpd-rs +cookbook_cargo_packages ntpd """ From 2f107890c47264373ce51e8e1485872104a2ab26 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 15:23:13 +0000 Subject: [PATCH 1355/3180] update recipe --- recipes/wip/ntpd-rs/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/wip/ntpd-rs/recipe.toml b/recipes/wip/ntpd-rs/recipe.toml index 7448eba3..d9e7b1e7 100644 --- a/recipes/wip/ntpd-rs/recipe.toml +++ b/recipes/wip/ntpd-rs/recipe.toml @@ -1,7 +1,6 @@ #TODO configure the service [source] git = "https://github.com/pendulum-project/ntpd-rs" -rev = "913700dc79420f6db5fe1f2110d3146d7f9addfe" [build] template = "custom" script = """ From 9b1a9e4cd5288a3aa1f8c8030e3ba4e11d83b9dc Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 15:43:44 +0000 Subject: [PATCH 1356/3180] update recipes --- recipes/wip/ntpd-rs/recipe.toml | 1 + recipes/wip/numbat/recipe.toml | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/ntpd-rs/recipe.toml b/recipes/wip/ntpd-rs/recipe.toml index d9e7b1e7..888a9392 100644 --- a/recipes/wip/ntpd-rs/recipe.toml +++ b/recipes/wip/ntpd-rs/recipe.toml @@ -1,3 +1,4 @@ +#TODO program source code error #TODO configure the service [source] git = "https://github.com/pendulum-project/ntpd-rs" diff --git a/recipes/wip/numbat/recipe.toml b/recipes/wip/numbat/recipe.toml index a6d40014..9ba5f6af 100644 --- a/recipes/wip/numbat/recipe.toml +++ b/recipes/wip/numbat/recipe.toml @@ -1,7 +1,6 @@ #TODO Not compiled or tested [source] git = "https://github.com/sharkdp/numbat" -rev = "c04afb354608ef22e475d8d6fec955ca6e823d97" [build] template = "custom" script = """ From d230e2bd89babd6cefffa1db610e7f866aba2c0f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 16:14:25 +0000 Subject: [PATCH 1357/3180] update recipes --- recipes/wip/numbat/recipe.toml | 3 ++- recipes/wip/oatmeal/recipe.toml | 2 +- recipes/wip/odilia/recipe.toml | 5 ++++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/recipes/wip/numbat/recipe.toml b/recipes/wip/numbat/recipe.toml index 9ba5f6af..9b5ee67e 100644 --- a/recipes/wip/numbat/recipe.toml +++ b/recipes/wip/numbat/recipe.toml @@ -1,4 +1,5 @@ -#TODO Not compiled or tested +#TODO compiled but not tested +#TODO missing script to properly move the binary [source] git = "https://github.com/sharkdp/numbat" [build] diff --git a/recipes/wip/oatmeal/recipe.toml b/recipes/wip/oatmeal/recipe.toml index ef910a83..76aad242 100644 --- a/recipes/wip/oatmeal/recipe.toml +++ b/recipes/wip/oatmeal/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO openssl-sys crate error [source] git = "https://github.com/dustinblackman/oatmeal" rev = "96f08a7b65c7be249a9f8497e247cc920c08459d" diff --git a/recipes/wip/odilia/recipe.toml b/recipes/wip/odilia/recipe.toml index 0dd9e671..635fb5cd 100644 --- a/recipes/wip/odilia/recipe.toml +++ b/recipes/wip/odilia/recipe.toml @@ -2,4 +2,7 @@ [source] git = "https://github.com/odilia-app/odilia" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages odilia +""" From 4d224e8c0bec073a64e04c03d1d937d993139dd7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 16:29:14 +0000 Subject: [PATCH 1358/3180] update recipes --- recipes/wip/odilia/recipe.toml | 2 +- recipes/wip/oha/recipe.toml | 2 +- recipes/wip/onefetch/recipe.toml | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/recipes/wip/odilia/recipe.toml b/recipes/wip/odilia/recipe.toml index 635fb5cd..f26083d0 100644 --- a/recipes/wip/odilia/recipe.toml +++ b/recipes/wip/odilia/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO xdg-home crate error (after cargo update) [source] git = "https://github.com/odilia-app/odilia" [build] diff --git a/recipes/wip/oha/recipe.toml b/recipes/wip/oha/recipe.toml index 64e7bf67..276d245a 100644 --- a/recipes/wip/oha/recipe.toml +++ b/recipes/wip/oha/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO jmalloc-sys crate error [source] git = "https://github.com/hatoo/oha" rev = "2c88d2acc0b4773089faaa959debaec15ef355a8" diff --git a/recipes/wip/onefetch/recipe.toml b/recipes/wip/onefetch/recipe.toml index 20c6ef1c..4e30b9f7 100644 --- a/recipes/wip/onefetch/recipe.toml +++ b/recipes/wip/onefetch/recipe.toml @@ -1,6 +1,5 @@ -#TODO compiled (after a cargo update) but hangs during execution +#TODO [source] git = "https://github.com/o2sh/onefetch" -rev = "13376155f2f8197aa9d95830298ceee007413895" [build] template = "cargo" From 728137e5a074a073936f506102146de67410ed1c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 16:59:17 +0000 Subject: [PATCH 1359/3180] update recipes --- recipes/wip/onefetch/recipe.toml | 2 +- recipes/wip/opam/recipe.toml | 3 ++- recipes/wip/openblas/recipe.toml | 2 +- recipes/wip/opengmk/recipe.toml | 5 ++++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/recipes/wip/onefetch/recipe.toml b/recipes/wip/onefetch/recipe.toml index 4e30b9f7..395d8d75 100644 --- a/recipes/wip/onefetch/recipe.toml +++ b/recipes/wip/onefetch/recipe.toml @@ -1,4 +1,4 @@ -#TODO +#TODO compiled but not tested [source] git = "https://github.com/o2sh/onefetch" [build] diff --git a/recipes/wip/opam/recipe.toml b/recipes/wip/opam/recipe.toml index 137eb3a7..1ad624f4 100644 --- a/recipes/wip/opam/recipe.toml +++ b/recipes/wip/opam/recipe.toml @@ -1,4 +1,5 @@ -#TODO probably wrong template, see https://github.com/ocaml/opam#compiling-this-repo +#TODO configuration problem +#TODO require the OCaml compiler on the host [source] tar = "https://github.com/ocaml/opam/releases/download/2.1.5/opam-full-2.1.5.tar.gz" [build] diff --git a/recipes/wip/openblas/recipe.toml b/recipes/wip/openblas/recipe.toml index 3b897b7a..0608466b 100644 --- a/recipes/wip/openblas/recipe.toml +++ b/recipes/wip/openblas/recipe.toml @@ -1,5 +1,5 @@ #TODO missing script for "make", see https://github.com/OpenMathLib/OpenBLAS/wiki/Installation-Guide -#TODO require the Fortran frontend from GCC? +#TODO require the Fortran frontend from GCC [source] tar = "https://github.com/OpenMathLib/OpenBLAS/releases/download/v0.3.25/OpenBLAS-0.3.25.tar.gz" [build] diff --git a/recipes/wip/opengmk/recipe.toml b/recipes/wip/opengmk/recipe.toml index 389c705f..86be5b31 100644 --- a/recipes/wip/opengmk/recipe.toml +++ b/recipes/wip/opengmk/recipe.toml @@ -2,4 +2,7 @@ [source] git = "https://github.com/OpenGMK/OpenGMK" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages opengmk +""" From c5367428339e7182f6b2b472bef678502ad7da47 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 17:01:57 +0000 Subject: [PATCH 1360/3180] update recipe --- recipes/wip/opengmk/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/opengmk/recipe.toml b/recipes/wip/opengmk/recipe.toml index 86be5b31..fb7a2b20 100644 --- a/recipes/wip/opengmk/recipe.toml +++ b/recipes/wip/opengmk/recipe.toml @@ -4,5 +4,5 @@ git = "https://github.com/OpenGMK/OpenGMK" [build] template = "custom" script = """ -cookbook_cargo_packages opengmk +cookbook_cargo_packages gm8emulator """ From 8a35113412a3a2d270d19c9f3716a54ac44dddbf Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 17:12:50 +0000 Subject: [PATCH 1361/3180] update recipes --- recipes/wip/opengmk/recipe.toml | 2 +- recipes/wip/openjdk11-headless/recipe.toml | 2 +- recipes/wip/openmpi/recipe.toml | 1 + recipes/wip/oranda/recipe.toml | 1 - 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/wip/opengmk/recipe.toml b/recipes/wip/opengmk/recipe.toml index fb7a2b20..5c0a004d 100644 --- a/recipes/wip/opengmk/recipe.toml +++ b/recipes/wip/opengmk/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO libsoundio-sys crate error, require ALSA (needs to be ported) [source] git = "https://github.com/OpenGMK/OpenGMK" [build] diff --git a/recipes/wip/openjdk11-headless/recipe.toml b/recipes/wip/openjdk11-headless/recipe.toml index bcf47eed..a7df7776 100644 --- a/recipes/wip/openjdk11-headless/recipe.toml +++ b/recipes/wip/openjdk11-headless/recipe.toml @@ -1,5 +1,5 @@ +#TODO permission denied on the configure script #TODO build instructions - https://github.com/openjdk/jdk11u/blob/master/doc/building.md -#TODO not compiled or tested [source] git = "https://github.com/openjdk/jdk11u" rev = "09b402a6bcecce976ee17ce358b0a90ea127ab69" diff --git a/recipes/wip/openmpi/recipe.toml b/recipes/wip/openmpi/recipe.toml index 3782a238..3b922fb5 100644 --- a/recipes/wip/openmpi/recipe.toml +++ b/recipes/wip/openmpi/recipe.toml @@ -1,4 +1,5 @@ #TODO missing dependencies, see https://docs.open-mpi.org/en/v5.0.x/installing-open-mpi/required-support-libraries.html +#TODO make libevent works [source] tar = "https://download.open-mpi.org/release/open-mpi/v5.0/openmpi-5.0.0.tar.bz2" [build] diff --git a/recipes/wip/oranda/recipe.toml b/recipes/wip/oranda/recipe.toml index 5ccb101b..2dea2400 100644 --- a/recipes/wip/oranda/recipe.toml +++ b/recipes/wip/oranda/recipe.toml @@ -1,6 +1,5 @@ #TODO camino crate error (after a patch on the ring crate) [source] git = "https://github.com/axodotdev/oranda" -rev = "11790dd3fd16029b2095c5ea97efc9f6a41e68ef" [build] template = "cargo" From ed4c34f6dda941ed4fc1fe28a0401036a2a4f031 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 19:24:37 +0000 Subject: [PATCH 1362/3180] update recipes --- recipes/wip/oranda/recipe.toml | 2 +- recipes/wip/osirion/recipe.toml | 2 +- recipes/wip/ouch/recipe.toml | 2 +- recipes/wip/oxc/recipe.toml | 2 +- recipes/wip/oxipng/recipe.toml | 2 +- recipes/wip/oxycards/recipe.toml | 2 +- recipes/wip/pcmg/recipe.toml | 2 +- recipes/wip/pdbview/recipe.toml | 2 +- recipes/wip/php/recipe.toml | 3 +++ 9 files changed, 11 insertions(+), 8 deletions(-) diff --git a/recipes/wip/oranda/recipe.toml b/recipes/wip/oranda/recipe.toml index 2dea2400..ec095ebf 100644 --- a/recipes/wip/oranda/recipe.toml +++ b/recipes/wip/oranda/recipe.toml @@ -1,4 +1,4 @@ -#TODO camino crate error (after a patch on the ring crate) +#TODO camino crate error [source] git = "https://github.com/axodotdev/oranda" [build] diff --git a/recipes/wip/osirion/recipe.toml b/recipes/wip/osirion/recipe.toml index ac2c95c5..5f982c2d 100644 --- a/recipes/wip/osirion/recipe.toml +++ b/recipes/wip/osirion/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make dependencies work # data files - http://osirion.org/files/osirion-0.2.8-data.zip [source] tar = "http://osirion.org/files/osirion-0.2.8-src.tar.bz2" diff --git a/recipes/wip/ouch/recipe.toml b/recipes/wip/ouch/recipe.toml index 6a39de56..84ca3749 100644 --- a/recipes/wip/ouch/recipe.toml +++ b/recipes/wip/ouch/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compilation error [source] git = "https://github.com/ouch-org/ouch" rev = "796a03a41d1412dbd0f1cf973ca88c59a4614cc8" diff --git a/recipes/wip/oxc/recipe.toml b/recipes/wip/oxc/recipe.toml index d5b2d966..7d57d15c 100644 --- a/recipes/wip/oxc/recipe.toml +++ b/recipes/wip/oxc/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO can't fetch the submodules because they need login [source] git = "https://github.com/oxc-project/oxc" [build] diff --git a/recipes/wip/oxipng/recipe.toml b/recipes/wip/oxipng/recipe.toml index 46de5363..cbf17605 100644 --- a/recipes/wip/oxipng/recipe.toml +++ b/recipes/wip/oxipng/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/shssoichiro/oxipng" rev = "e1db84fd9745f3320c08b883e4942cd5b30b98a6" diff --git a/recipes/wip/oxycards/recipe.toml b/recipes/wip/oxycards/recipe.toml index 596fa61f..391aa834 100644 --- a/recipes/wip/oxycards/recipe.toml +++ b/recipes/wip/oxycards/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/BrookJeynes/oxycards" [build] diff --git a/recipes/wip/pcmg/recipe.toml b/recipes/wip/pcmg/recipe.toml index c29d54d8..c5186fcd 100644 --- a/recipes/wip/pcmg/recipe.toml +++ b/recipes/wip/pcmg/recipe.toml @@ -1,4 +1,4 @@ -#TODO probably wrong template +#TODO x11rb crate error #TODO require WebAssembly [source] git = "https://github.com/JohnDowson/pcmg" diff --git a/recipes/wip/pdbview/recipe.toml b/recipes/wip/pdbview/recipe.toml index 087edd40..9c7be752 100644 --- a/recipes/wip/pdbview/recipe.toml +++ b/recipes/wip/pdbview/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/landaire/pdbview" [build] diff --git a/recipes/wip/php/recipe.toml b/recipes/wip/php/recipe.toml index 7499fe52..fab69602 100644 --- a/recipes/wip/php/recipe.toml +++ b/recipes/wip/php/recipe.toml @@ -4,3 +4,6 @@ tar = "https://www.php.net/distributions/php-8.3.0.tar.xz" [build] template = "configure" +dependencies = [ + "libxml2", +] From 90dd668984dcc8ace5b97e38eb993f1d4ae55cbb Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 19:28:02 +0000 Subject: [PATCH 1363/3180] add dependency --- recipes/wip/php/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/php/recipe.toml b/recipes/wip/php/recipe.toml index fab69602..98c2e345 100644 --- a/recipes/wip/php/recipe.toml +++ b/recipes/wip/php/recipe.toml @@ -6,4 +6,5 @@ tar = "https://www.php.net/distributions/php-8.3.0.tar.xz" template = "configure" dependencies = [ "libxml2", + "sqlite3", ] From ef3ce95fb5e9f04c94a3128f61884ab08e753b31 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 19:29:17 +0000 Subject: [PATCH 1364/3180] add dependency --- recipes/wip/php/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/php/recipe.toml b/recipes/wip/php/recipe.toml index 98c2e345..5e879021 100644 --- a/recipes/wip/php/recipe.toml +++ b/recipes/wip/php/recipe.toml @@ -7,4 +7,5 @@ template = "configure" dependencies = [ "libxml2", "sqlite3", + "libiconv", ] From 164887b81cac9ed7dffdd9d0d20da240dc9862fb Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Dec 2023 19:33:11 +0000 Subject: [PATCH 1365/3180] update recipes --- recipes/wip/php/recipe.toml | 2 +- recipes/wip/picodrive/recipe.toml | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/recipes/wip/php/recipe.toml b/recipes/wip/php/recipe.toml index 5e879021..b82e6f59 100644 --- a/recipes/wip/php/recipe.toml +++ b/recipes/wip/php/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO can't detect libiconv # in case of problems, read https://www.php.net/manual/en/install.unix.php [source] tar = "https://www.php.net/distributions/php-8.3.0.tar.xz" diff --git a/recipes/wip/picodrive/recipe.toml b/recipes/wip/picodrive/recipe.toml index abd80dbb..08655459 100644 --- a/recipes/wip/picodrive/recipe.toml +++ b/recipes/wip/picodrive/recipe.toml @@ -1,5 +1,13 @@ +#TODO configuration problem #TODO discover the dependencies [source] git = "https://github.com/notaz/picodrive" [build] -template = "configure" +template = "custom" +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --platform=generic + --sound-drivers=sdl +) +cookbook_configure +""" From b7e5d3c01992c5523e10c7bf937ea1aa67320b6d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 01:03:49 +0000 Subject: [PATCH 1366/3180] update recipes --- recipes/wip/pifs/recipe.toml | 1 + recipes/wip/pipr/recipe.toml | 2 +- recipes/wip/pixcil/recipe.toml | 6 +++++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/recipes/wip/pifs/recipe.toml b/recipes/wip/pifs/recipe.toml index 7bc4e2b4..e7ab1909 100644 --- a/recipes/wip/pifs/recipe.toml +++ b/recipes/wip/pifs/recipe.toml @@ -1,3 +1,4 @@ +#TODO make libfuse 2.x works #TODO probably wrong script, see https://github.com/philipl/pifs#readme [source] git = "https://github.com/philipl/pifs" diff --git a/recipes/wip/pipr/recipe.toml b/recipes/wip/pipr/recipe.toml index f6d7797c..33e24f7d 100644 --- a/recipes/wip/pipr/recipe.toml +++ b/recipes/wip/pipr/recipe.toml @@ -1,4 +1,4 @@ -#TODO compilation error (after an update on tokio, crossterm and tui crates) +#TODO mio crate error (after cargo update) [source] git = "https://github.com/Elkowar/pipr" [build] diff --git a/recipes/wip/pixcil/recipe.toml b/recipes/wip/pixcil/recipe.toml index fe5261eb..072c29cb 100644 --- a/recipes/wip/pixcil/recipe.toml +++ b/recipes/wip/pixcil/recipe.toml @@ -1,6 +1,10 @@ +#TODO #TODO require WebAssembly [source] git = "https://github.com/sile/pixcil" rev = "2309661977c3191f44e730c5a17639874e497b69" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages pixcil +""" From 4fe413bbd2150450561e24634d2a5de4bcda26aa Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 01:09:07 +0000 Subject: [PATCH 1367/3180] update recipes --- recipes/wip/pixcil/recipe.toml | 3 ++- recipes/wip/pixi/recipe.toml | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/recipes/wip/pixcil/recipe.toml b/recipes/wip/pixcil/recipe.toml index 072c29cb..27af213b 100644 --- a/recipes/wip/pixcil/recipe.toml +++ b/recipes/wip/pixcil/recipe.toml @@ -1,4 +1,5 @@ -#TODO +#TODO compiled but not tested +#TODO missing script to properly move the binary #TODO require WebAssembly [source] git = "https://github.com/sile/pixcil" diff --git a/recipes/wip/pixi/recipe.toml b/recipes/wip/pixi/recipe.toml index 0e50616e..ec87a1d0 100644 --- a/recipes/wip/pixi/recipe.toml +++ b/recipes/wip/pixi/recipe.toml @@ -4,3 +4,6 @@ git = "https://github.com/prefix-dev/pixi" rev = "40aa081fd2039d40c33a20efd4887d82ac6b66ce" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 1d9e22ebed0d0351a05e6eca727136a2ccf3598b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 01:15:00 +0000 Subject: [PATCH 1368/3180] update pixi --- recipes/wip/pixi/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/wip/pixi/recipe.toml b/recipes/wip/pixi/recipe.toml index ec87a1d0..6b8483cf 100644 --- a/recipes/wip/pixi/recipe.toml +++ b/recipes/wip/pixi/recipe.toml @@ -1,7 +1,6 @@ #TODO Not compiled or tested [source] git = "https://github.com/prefix-dev/pixi" -rev = "40aa081fd2039d40c33a20efd4887d82ac6b66ce" [build] template = "cargo" dependencies = [ From 6bf4d5ea0470fe0dff02244a911d870619d2e495 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 01:56:06 +0000 Subject: [PATCH 1369/3180] update recipes --- recipes/wip/pixi/recipe.toml | 2 +- recipes/wip/please/recipe.toml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/pixi/recipe.toml b/recipes/wip/pixi/recipe.toml index 6b8483cf..0ebe5237 100644 --- a/recipes/wip/pixi/recipe.toml +++ b/recipes/wip/pixi/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO fs4 crate error (after cargo update) [source] git = "https://github.com/prefix-dev/pixi" [build] diff --git a/recipes/wip/please/recipe.toml b/recipes/wip/please/recipe.toml index 02747564..53eef6fd 100644 --- a/recipes/wip/please/recipe.toml +++ b/recipes/wip/please/recipe.toml @@ -1,6 +1,5 @@ #TODO users crate error [source] git = "https://gitlab.com/edneville/please" -rev = "68c82e4be33f52a6fc4444fd28539e11d47d0602" [build] template = "cargo" From dd0542ab6da016f2177e94ff2b33fe2542279150 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 01:59:51 +0000 Subject: [PATCH 1370/3180] update recipes --- recipes/wip/please/recipe.toml | 2 +- recipes/wip/pomky/recipe.toml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/wip/please/recipe.toml b/recipes/wip/please/recipe.toml index 53eef6fd..e681b3cc 100644 --- a/recipes/wip/please/recipe.toml +++ b/recipes/wip/please/recipe.toml @@ -1,4 +1,4 @@ -#TODO users crate error +#TODO users crate error (after cargo update) [source] git = "https://gitlab.com/edneville/please" [build] diff --git a/recipes/wip/pomky/recipe.toml b/recipes/wip/pomky/recipe.toml index 8ad8e0d1..f1836a94 100644 --- a/recipes/wip/pomky/recipe.toml +++ b/recipes/wip/pomky/recipe.toml @@ -5,4 +5,5 @@ git = "https://github.com/developomp/pomky" template = "cargo" dependencies = [ "glib", + "pcre", ] From b7f9e8ac879cc1bd3f383f0cffa52bf984146400 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 02:37:55 +0000 Subject: [PATCH 1371/3180] update recipes --- recipes/wip/pomky/recipe.toml | 3 ++- recipes/wip/porsmo/recipe.toml | 3 +-- recipes/wip/potrace/recipe.toml | 3 +++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/recipes/wip/pomky/recipe.toml b/recipes/wip/pomky/recipe.toml index f1836a94..b8973736 100644 --- a/recipes/wip/pomky/recipe.toml +++ b/recipes/wip/pomky/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled/tested yet +#TODO waiting gdk-pixbuf conversion to TOML [source] git = "https://github.com/developomp/pomky" [build] @@ -6,4 +6,5 @@ template = "cargo" dependencies = [ "glib", "pcre", + "gdk-pixbuf", ] diff --git a/recipes/wip/porsmo/recipe.toml b/recipes/wip/porsmo/recipe.toml index 19ce156e..3662af37 100644 --- a/recipes/wip/porsmo/recipe.toml +++ b/recipes/wip/porsmo/recipe.toml @@ -1,6 +1,5 @@ -#TODO Not compiled or tested +#TODO xdg-home crate error [source] git = "https://github.com/ColorCookie-dev/porsmo" -rev = "bd7eab08d8856b7499ee13672dff9a9232994d23" [build] template = "cargo" diff --git a/recipes/wip/potrace/recipe.toml b/recipes/wip/potrace/recipe.toml index 8a3d20ad..e542be12 100644 --- a/recipes/wip/potrace/recipe.toml +++ b/recipes/wip/potrace/recipe.toml @@ -3,3 +3,6 @@ tar = "https://potrace.sourceforge.net/download/1.16/potrace-1.16.tar.gz" [build] template = "configure" +dependencies = [ + "zlib", +] From d4eeb6b705c1704cfb2624c78c11cd081f8e2d85 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 03:00:59 +0000 Subject: [PATCH 1372/3180] update recipes --- recipes/wip/potrace/recipe.toml | 2 +- recipes/wip/presenterm/recipe.toml | 2 +- recipes/wip/procs/recipe.toml | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/wip/potrace/recipe.toml b/recipes/wip/potrace/recipe.toml index e542be12..62379b65 100644 --- a/recipes/wip/potrace/recipe.toml +++ b/recipes/wip/potrace/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] tar = "https://potrace.sourceforge.net/download/1.16/potrace-1.16.tar.gz" [build] diff --git a/recipes/wip/presenterm/recipe.toml b/recipes/wip/presenterm/recipe.toml index fd28caf9..fbf6212b 100644 --- a/recipes/wip/presenterm/recipe.toml +++ b/recipes/wip/presenterm/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/mfontanini/presenterm" rev = "284db812aa876d43f3a7d7e8b96f75c72a9945fa" diff --git a/recipes/wip/procs/recipe.toml b/recipes/wip/procs/recipe.toml index ff187c49..0103a549 100644 --- a/recipes/wip/procs/recipe.toml +++ b/recipes/wip/procs/recipe.toml @@ -1,6 +1,5 @@ #TODO socket and pipe compilation errors [source] git = "https://github.com/dalance/procs" -rev = "0378206ddc8635d37d23c53afc0189c987daeb1d" [build] template = "cargo" From ec827adcba9244201449d44c5e8d498b07a814c7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 03:06:00 +0000 Subject: [PATCH 1373/3180] update recipes --- recipes/wip/procs/recipe.toml | 2 +- recipes/wip/pueue/recipe.toml | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/wip/procs/recipe.toml b/recipes/wip/procs/recipe.toml index 0103a549..da481c03 100644 --- a/recipes/wip/procs/recipe.toml +++ b/recipes/wip/procs/recipe.toml @@ -1,4 +1,4 @@ -#TODO socket and pipe compilation errors +#TODO async-io and rustix crates error (after cargo update) [source] git = "https://github.com/dalance/procs" [build] diff --git a/recipes/wip/pueue/recipe.toml b/recipes/wip/pueue/recipe.toml index 292d5e42..3d38b591 100644 --- a/recipes/wip/pueue/recipe.toml +++ b/recipes/wip/pueue/recipe.toml @@ -1,7 +1,6 @@ -#TODO require a update on the tokio crate and a patch on the ring crate +#TODO [source] git = "https://github.com/Nukesor/pueue" -rev = "37246432f177e50555f72efcef788ea094658451" [build] template = "custom" script = """ From 33ec38425ddfa5e0e84ef37142d333ed8ff28056 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 04:28:15 +0000 Subject: [PATCH 1374/3180] update recipes --- recipes/wip/pueue/recipe.toml | 2 +- recipes/wip/python310/recipe.toml | 2 +- recipes/wip/python312/recipe.toml | 2 +- recipes/wip/qrrs/recipe.toml | 2 +- recipes/wip/qt4/recipe.toml | 2 +- recipes/wip/qt5-base/recipe.toml | 1 + recipes/wip/qt6-base/recipe.toml | 1 + recipes/wip/quantlib/recipe.toml | 1 + recipes/wip/qv/recipe.toml | 1 - 9 files changed, 8 insertions(+), 6 deletions(-) diff --git a/recipes/wip/pueue/recipe.toml b/recipes/wip/pueue/recipe.toml index 3d38b591..bd1ed8cd 100644 --- a/recipes/wip/pueue/recipe.toml +++ b/recipes/wip/pueue/recipe.toml @@ -1,4 +1,4 @@ -#TODO +#TODO pueue_lib crate error (after cargo update and a patch on ring) [source] git = "https://github.com/Nukesor/pueue" [build] diff --git a/recipes/wip/python310/recipe.toml b/recipes/wip/python310/recipe.toml index 1300d516..c2d9436e 100644 --- a/recipes/wip/python310/recipe.toml +++ b/recipes/wip/python310/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO configuration error [source] tar = "https://www.python.org/ftp/python/3.10.13/Python-3.10.13.tar.xz" [build] diff --git a/recipes/wip/python312/recipe.toml b/recipes/wip/python312/recipe.toml index 249c6b5a..51c7f232 100644 --- a/recipes/wip/python312/recipe.toml +++ b/recipes/wip/python312/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO configuration error [source] tar = "https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tar.xz" [build] diff --git a/recipes/wip/qrrs/recipe.toml b/recipes/wip/qrrs/recipe.toml index abb65153..9a6b99fc 100644 --- a/recipes/wip/qrrs/recipe.toml +++ b/recipes/wip/qrrs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/Lenivaya/qrrs" rev = "74ea9129a808f199afb386a38df7492cc8c7d094" diff --git a/recipes/wip/qt4/recipe.toml b/recipes/wip/qt4/recipe.toml index f986a67a..7b903dc3 100644 --- a/recipes/wip/qt4/recipe.toml +++ b/recipes/wip/qt4/recipe.toml @@ -1,4 +1,4 @@ -#TODO probably wrong template and missing dependencies +#TODO find a tarball link [source] tar = "http://download.qt.io/official_releases/qt/4.8/4.8.7/qt-everywhere-opensource-src-4.8.7.tar.gz" [build] diff --git a/recipes/wip/qt5-base/recipe.toml b/recipes/wip/qt5-base/recipe.toml index 7ddc02d6..69c6c810 100644 --- a/recipes/wip/qt5-base/recipe.toml +++ b/recipes/wip/qt5-base/recipe.toml @@ -1,3 +1,4 @@ +#TODO make libxkbcommon work #TODO build instructions - https://doc.qt.io/qt-5/linux-building.html #TODO customization - https://doc.qt.io/qt-5/configure-options.html [source] diff --git a/recipes/wip/qt6-base/recipe.toml b/recipes/wip/qt6-base/recipe.toml index c233e75e..5b2ca35a 100644 --- a/recipes/wip/qt6-base/recipe.toml +++ b/recipes/wip/qt6-base/recipe.toml @@ -1,3 +1,4 @@ +#TODO make libxkbcommon work #TODO build instructions - https://doc.qt.io/qt-6/linux-building.html #TODO customization - https://doc.qt.io/qt-6/configure-options.html [source] diff --git a/recipes/wip/quantlib/recipe.toml b/recipes/wip/quantlib/recipe.toml index d6f09967..bcecf3c0 100644 --- a/recipes/wip/quantlib/recipe.toml +++ b/recipes/wip/quantlib/recipe.toml @@ -1,3 +1,4 @@ +#TODO make boost work #TODO probably wrong template, see https://www.quantlib.org/install/linux.shtml [source] tar = "https://github.com/lballabio/QuantLib/releases/download/v1.32/QuantLib-1.32.tar.gz" diff --git a/recipes/wip/qv/recipe.toml b/recipes/wip/qv/recipe.toml index 4fecd5cb..b05433de 100644 --- a/recipes/wip/qv/recipe.toml +++ b/recipes/wip/qv/recipe.toml @@ -1,6 +1,5 @@ #TODO Not compiled or tested [source] git = "https://github.com/timvw/qv" -rev = "af0063096c6264c72c7462f4eeb0c4a7e0b1d646" [build] template = "cargo" From 21844c2d877c41f921269d7c7a87ab5a0a44171b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 05:49:00 +0000 Subject: [PATCH 1375/3180] update recipes --- recipes/wip/qv/recipe.toml | 2 +- recipes/wip/rargs/recipe.toml | 2 +- recipes/wip/rattler-build/recipe.toml | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/wip/qv/recipe.toml b/recipes/wip/qv/recipe.toml index b05433de..81812e89 100644 --- a/recipes/wip/qv/recipe.toml +++ b/recipes/wip/qv/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO deltalake crate error (after a patch on ring) [source] git = "https://github.com/timvw/qv" [build] diff --git a/recipes/wip/rargs/recipe.toml b/recipes/wip/rargs/recipe.toml index a48ab3ae..17c52706 100644 --- a/recipes/wip/rargs/recipe.toml +++ b/recipes/wip/rargs/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled after cargo update, not tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/lotabout/rargs" [build] diff --git a/recipes/wip/rattler-build/recipe.toml b/recipes/wip/rattler-build/recipe.toml index b9804a3f..857baeb8 100644 --- a/recipes/wip/rattler-build/recipe.toml +++ b/recipes/wip/rattler-build/recipe.toml @@ -4,3 +4,6 @@ git = "https://github.com/prefix-dev/rattler-build" rev = "4e554ccf35e50f598f9110bfc8c8be909de203da" [build] template = "cargo" +dependencies = [ + "openssl1", +] From cfa6f0148a4918657e6b2cafb3c39620f005e85d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 06:28:50 +0000 Subject: [PATCH 1376/3180] update recipes --- recipes/wip/rattler-build/recipe.toml | 2 +- recipes/wip/rav1e/recipe.toml | 2 +- recipes/wip/relish/recipe.toml | 2 +- recipes/wip/repgrep/recipe.toml | 2 +- recipes/wip/rex/recipe.toml | 1 - 5 files changed, 4 insertions(+), 5 deletions(-) diff --git a/recipes/wip/rattler-build/recipe.toml b/recipes/wip/rattler-build/recipe.toml index 857baeb8..301bee9d 100644 --- a/recipes/wip/rattler-build/recipe.toml +++ b/recipes/wip/rattler-build/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO openssl error [source] git = "https://github.com/prefix-dev/rattler-build" rev = "4e554ccf35e50f598f9110bfc8c8be909de203da" diff --git a/recipes/wip/rav1e/recipe.toml b/recipes/wip/rav1e/recipe.toml index 9a671d6b..37083ead 100644 --- a/recipes/wip/rav1e/recipe.toml +++ b/recipes/wip/rav1e/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO libc crate error - RUSAGE_SELF [source] git = "https://github.com/xiph/rav1e" [build] diff --git a/recipes/wip/relish/recipe.toml b/recipes/wip/relish/recipe.toml index dc085262..2692cf18 100644 --- a/recipes/wip/relish/recipe.toml +++ b/recipes/wip/relish/recipe.toml @@ -1,4 +1,4 @@ -#TODO program error, maybe needs porting +#TODO program source code error [source] git = "https://gitlab.com/whom/relish" [build] diff --git a/recipes/wip/repgrep/recipe.toml b/recipes/wip/repgrep/recipe.toml index 491a9194..00d6868a 100644 --- a/recipes/wip/repgrep/recipe.toml +++ b/recipes/wip/repgrep/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/acheronfail/repgrep" rev = "2e270809de00d0aefda272016afb6b5cf1ac4af5" diff --git a/recipes/wip/rex/recipe.toml b/recipes/wip/rex/recipe.toml index e669d8db..75b5b07b 100644 --- a/recipes/wip/rex/recipe.toml +++ b/recipes/wip/rex/recipe.toml @@ -1,6 +1,5 @@ #TODO Not compiled or tested [source] git = "https://github.com/TheRustyPickle/Rex" -rev = "096eace40e33f48bf7216c4b6f2c9cc84287e47d" [build] template = "cargo" From 12b63612cd1e99c7d2fd55cd1eef9dffc7c92db8 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 06:29:42 +0000 Subject: [PATCH 1377/3180] add dependency --- recipes/wip/rex/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/wip/rex/recipe.toml b/recipes/wip/rex/recipe.toml index 75b5b07b..c71e7dbf 100644 --- a/recipes/wip/rex/recipe.toml +++ b/recipes/wip/rex/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/TheRustyPickle/Rex" [build] template = "cargo" +dependencies = [ + "openssl1", +] From f4153a5da034edab9ff938fd6cb0890417ef30e1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 06:47:00 +0000 Subject: [PATCH 1378/3180] update recipes --- recipes/wip/rex/recipe.toml | 2 +- recipes/wip/ripasso/recipe.toml | 3 ++- recipes/wip/rnnoise/recipe.toml | 4 ++-- recipes/wip/rqbit/recipe.toml | 5 ++++- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/recipes/wip/rex/recipe.toml b/recipes/wip/rex/recipe.toml index c71e7dbf..7dbf3460 100644 --- a/recipes/wip/rex/recipe.toml +++ b/recipes/wip/rex/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO rex-tui crate error (after cargo update) [source] git = "https://github.com/TheRustyPickle/Rex" [build] diff --git a/recipes/wip/ripasso/recipe.toml b/recipes/wip/ripasso/recipe.toml index be0f8b77..fd10be75 100644 --- a/recipes/wip/ripasso/recipe.toml +++ b/recipes/wip/ripasso/recipe.toml @@ -1,10 +1,11 @@ -#TODO make libgpg-error dependency work (after cargo update) +#TODO make libgpg-error dependency work [source] git = "https://github.com/cortex/ripasso" [build] template = "custom" dependencies = [ "openssl1", + "libgpg-error", ] script = """ cookbook_cargo_packages ripasso-cursive diff --git a/recipes/wip/rnnoise/recipe.toml b/recipes/wip/rnnoise/recipe.toml index 6c1a63e8..1ba959ad 100644 --- a/recipes/wip/rnnoise/recipe.toml +++ b/recipes/wip/rnnoise/recipe.toml @@ -1,5 +1,5 @@ -#TODO Not compiled or tested +#TODO missing script for building [source] git = "https://gitlab.xiph.org/xiph/rnnoise" [build] -template = "configure" +template = "custom" diff --git a/recipes/wip/rqbit/recipe.toml b/recipes/wip/rqbit/recipe.toml index 26450e7f..8a48165e 100644 --- a/recipes/wip/rqbit/recipe.toml +++ b/recipes/wip/rqbit/recipe.toml @@ -3,4 +3,7 @@ git = "https://github.com/ikatson/rqbit" rev = "3dc2e3eace2fce7c448d7fcf8360fe0f312a29c7" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages rqbit +""" From c91774fb928487fc32486a84ded424cbedf04c47 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 06:48:17 +0000 Subject: [PATCH 1379/3180] add dependency --- recipes/wip/rqbit/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/wip/rqbit/recipe.toml b/recipes/wip/rqbit/recipe.toml index 8a48165e..0c1aa55b 100644 --- a/recipes/wip/rqbit/recipe.toml +++ b/recipes/wip/rqbit/recipe.toml @@ -4,6 +4,9 @@ git = "https://github.com/ikatson/rqbit" rev = "3dc2e3eace2fce7c448d7fcf8360fe0f312a29c7" [build] template = "custom" +dependencies = [ + "openssl1", +] script = """ cookbook_cargo_packages rqbit """ From 006f6c1fb560b5b3eec9d2f9641d8ced30f51ec8 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 06:54:40 +0000 Subject: [PATCH 1380/3180] update recipe --- recipes/wip/rqbit/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/wip/rqbit/recipe.toml b/recipes/wip/rqbit/recipe.toml index 0c1aa55b..72f68ccc 100644 --- a/recipes/wip/rqbit/recipe.toml +++ b/recipes/wip/rqbit/recipe.toml @@ -1,7 +1,6 @@ #TODO Not compiled or tested [source] git = "https://github.com/ikatson/rqbit" -rev = "3dc2e3eace2fce7c448d7fcf8360fe0f312a29c7" [build] template = "custom" dependencies = [ From 1f3fc1c421beaad1b1c683ed41d2c493bc82f6af Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 07:13:58 +0000 Subject: [PATCH 1381/3180] update recipes --- recipes/wip/rqbit/recipe.toml | 2 +- recipes/wip/rr-debugger/recipe.toml | 1 + recipes/wip/rshijack/recipe.toml | 4 ++-- recipes/wip/rtorrent/recipe.toml | 2 +- recipes/wip/ruff/recipe.toml | 7 ++----- 5 files changed, 7 insertions(+), 9 deletions(-) diff --git a/recipes/wip/rqbit/recipe.toml b/recipes/wip/rqbit/recipe.toml index 72f68ccc..347aaf0f 100644 --- a/recipes/wip/rqbit/recipe.toml +++ b/recipes/wip/rqbit/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO network-interface crate error [source] git = "https://github.com/ikatson/rqbit" [build] diff --git a/recipes/wip/rr-debugger/recipe.toml b/recipes/wip/rr-debugger/recipe.toml index 47c07bdf..d1fc5443 100644 --- a/recipes/wip/rr-debugger/recipe.toml +++ b/recipes/wip/rr-debugger/recipe.toml @@ -1,3 +1,4 @@ +#TODO make capnproto work #TODO probably wrong template, see https://github.com/rr-debugger/rr/wiki/Building-And-Installing [source] git = "https://github.com/rr-debugger/rr" diff --git a/recipes/wip/rshijack/recipe.toml b/recipes/wip/rshijack/recipe.toml index 5fa48c02..3feeee34 100644 --- a/recipes/wip/rshijack/recipe.toml +++ b/recipes/wip/rshijack/recipe.toml @@ -1,5 +1,5 @@ -#TODO pnet_sys crate error +#TODO pnet_sys crate error (after cargo update) [source] git = "https://github.com/kpcyrd/rshijack" [build] -template = "cargo" \ No newline at end of file +template = "cargo" diff --git a/recipes/wip/rtorrent/recipe.toml b/recipes/wip/rtorrent/recipe.toml index 5837e19b..69a93bfb 100644 --- a/recipes/wip/rtorrent/recipe.toml +++ b/recipes/wip/rtorrent/recipe.toml @@ -1,4 +1,4 @@ -#TODO Maybe missing libtorrent dependency +#TODO can't find pthreads support [source] tar = "https://github.com/rakshasa/rtorrent-archive/raw/master/rtorrent-0.9.8.tar.gz" [build] diff --git a/recipes/wip/ruff/recipe.toml b/recipes/wip/ruff/recipe.toml index 55454e8c..cd97b2ad 100644 --- a/recipes/wip/ruff/recipe.toml +++ b/recipes/wip/ruff/recipe.toml @@ -1,9 +1,6 @@ #TODO nonsense rustc version requirement [source] git = "https://github.com/charliermarsh/ruff" -rev = "c014622003e9b348310d7b7be862f6ccffae7137" +rev = "0263f2715eba81aee471e3dd5a50ea5f9426cbb1" [build] -template = "custom" -script = """ -cookbook_cargo_packages ruff -""" +template = "cargo" From 41d205fcc712ccd00355c8fe2842e72280376e06 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 07:17:23 +0000 Subject: [PATCH 1382/3180] update recipe --- recipes/wip/ruff/recipe.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/ruff/recipe.toml b/recipes/wip/ruff/recipe.toml index cd97b2ad..f5a07e99 100644 --- a/recipes/wip/ruff/recipe.toml +++ b/recipes/wip/ruff/recipe.toml @@ -3,4 +3,7 @@ git = "https://github.com/charliermarsh/ruff" rev = "0263f2715eba81aee471e3dd5a50ea5f9426cbb1" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages ruff_cli +""" From 24491dc6a7b9300a97b86ddda9f9b60719bfa708 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 07:23:52 +0000 Subject: [PATCH 1383/3180] update recipes --- recipes/wip/ruff/recipe.toml | 2 +- recipes/wip/ruffle/recipe.toml | 4 ++-- recipes/wip/ruplacer/recipe.toml | 1 - 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/recipes/wip/ruff/recipe.toml b/recipes/wip/ruff/recipe.toml index f5a07e99..877e340e 100644 --- a/recipes/wip/ruff/recipe.toml +++ b/recipes/wip/ruff/recipe.toml @@ -1,4 +1,4 @@ -#TODO nonsense rustc version requirement +#TODO tikv-jemalloc-sys crate error [source] git = "https://github.com/charliermarsh/ruff" rev = "0263f2715eba81aee471e3dd5a50ea5f9426cbb1" diff --git a/recipes/wip/ruffle/recipe.toml b/recipes/wip/ruffle/recipe.toml index 4d2a02b5..5ff1ca06 100644 --- a/recipes/wip/ruffle/recipe.toml +++ b/recipes/wip/ruffle/recipe.toml @@ -1,11 +1,11 @@ -#TODO Require headless Java +#TODO make openjdk19-headless work [source] git = "https://github.com/ruffle-rs/ruffle" [build] template = "custom" dependencies = [ "openssl1", - "java19", + "openjdk19-headless", ] script = """ cookbook_cargo_packages ruffle_desktop diff --git a/recipes/wip/ruplacer/recipe.toml b/recipes/wip/ruplacer/recipe.toml index ec9d79b3..e5cc34d6 100644 --- a/recipes/wip/ruplacer/recipe.toml +++ b/recipes/wip/ruplacer/recipe.toml @@ -1,6 +1,5 @@ #TODO compiled after cargo update, not tested [source] git = "https://github.com/your-tools/ruplacer" -rev = "11531fc7ae15d63199ddd92bd2487384714b8884" [build] template = "cargo" From c42efa6af01c3ea365ce6639e2e5084b67e4028d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 07:28:34 +0000 Subject: [PATCH 1384/3180] update recipe --- recipes/wip/ruffle/recipe.toml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/ruffle/recipe.toml b/recipes/wip/ruffle/recipe.toml index 5ff1ca06..74b26e2e 100644 --- a/recipes/wip/ruffle/recipe.toml +++ b/recipes/wip/ruffle/recipe.toml @@ -1,11 +1,10 @@ -#TODO make openjdk19-headless work +#TODO [source] git = "https://github.com/ruffle-rs/ruffle" [build] template = "custom" dependencies = [ "openssl1", - "openjdk19-headless", ] script = """ cookbook_cargo_packages ruffle_desktop From 53f939c63e62eab9e44c2d12c37b151013ead4aa Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 08:30:56 +0000 Subject: [PATCH 1385/3180] update recipes --- recipes/wip/ruffle/recipe.toml | 2 +- recipes/wip/ruplacer/recipe.toml | 2 +- recipes/wip/russ/recipe.toml | 2 +- recipes/wip/rust-counter-strings/recipe.toml | 2 +- recipes/wip/rust-sadari-cli/recipe.toml | 2 +- recipes/wip/rust-traverse/recipe.toml | 1 - 6 files changed, 5 insertions(+), 6 deletions(-) diff --git a/recipes/wip/ruffle/recipe.toml b/recipes/wip/ruffle/recipe.toml index 74b26e2e..3b794390 100644 --- a/recipes/wip/ruffle/recipe.toml +++ b/recipes/wip/ruffle/recipe.toml @@ -1,4 +1,4 @@ -#TODO +#TODO make Wayland work [source] git = "https://github.com/ruffle-rs/ruffle" [build] diff --git a/recipes/wip/ruplacer/recipe.toml b/recipes/wip/ruplacer/recipe.toml index e5cc34d6..c709c641 100644 --- a/recipes/wip/ruplacer/recipe.toml +++ b/recipes/wip/ruplacer/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled after cargo update, not tested +#TODO compiled but not tested [source] git = "https://github.com/your-tools/ruplacer" [build] diff --git a/recipes/wip/russ/recipe.toml b/recipes/wip/russ/recipe.toml index 11321b10..d8c50bc5 100644 --- a/recipes/wip/russ/recipe.toml +++ b/recipes/wip/russ/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO require Wayland (after cargo update) [source] git = "https://github.com/ckampfe/russ" [build] diff --git a/recipes/wip/rust-counter-strings/recipe.toml b/recipes/wip/rust-counter-strings/recipe.toml index 6b938b1d..e1622638 100644 --- a/recipes/wip/rust-counter-strings/recipe.toml +++ b/recipes/wip/rust-counter-strings/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/thomaschaplin/rust-counter-strings" [build] diff --git a/recipes/wip/rust-sadari-cli/recipe.toml b/recipes/wip/rust-sadari-cli/recipe.toml index e5be108c..f9001a89 100644 --- a/recipes/wip/rust-sadari-cli/recipe.toml +++ b/recipes/wip/rust-sadari-cli/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/24seconds/rust-sadari-cli" [build] diff --git a/recipes/wip/rust-traverse/recipe.toml b/recipes/wip/rust-traverse/recipe.toml index d3b7e100..9c405e2f 100644 --- a/recipes/wip/rust-traverse/recipe.toml +++ b/recipes/wip/rust-traverse/recipe.toml @@ -1,6 +1,5 @@ #TODO trash crate error [source] git = "https://github.com/dmcg310/Rust-Traverse" -rev = "6468f7b7f081a5168399ae46a3a88f89462fa47b" [build] template = "cargo" From 2be3a8f86c4667d31b63e433befa6c8d48eeeab3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 09:20:15 +0000 Subject: [PATCH 1386/3180] update recipes --- recipes/wip/rustcloud/recipe.toml | 2 +- recipes/wip/rustic/recipe.toml | 2 +- recipes/wip/rustlings/recipe.toml | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/wip/rustcloud/recipe.toml b/recipes/wip/rustcloud/recipe.toml index ebe05c95..93bca25d 100644 --- a/recipes/wip/rustcloud/recipe.toml +++ b/recipes/wip/rustcloud/recipe.toml @@ -1,4 +1,4 @@ -#TODO mio crate error (after cargo update -p libc redox_syscall) +#TODO openssl error (after cargo update) [source] git = "https://github.com/cetra3/rustcloud" [build] diff --git a/recipes/wip/rustic/recipe.toml b/recipes/wip/rustic/recipe.toml index 0ed86c54..2ad92438 100644 --- a/recipes/wip/rustic/recipe.toml +++ b/recipes/wip/rustic/recipe.toml @@ -1,4 +1,4 @@ -#TODO redox_syscall crate error +#TODO can't update the crates, patch the "fragile" crate version [source] git = "https://github.com/rustic-music-player/rustic" [build] diff --git a/recipes/wip/rustlings/recipe.toml b/recipes/wip/rustlings/recipe.toml index 3c579661..11a606c3 100644 --- a/recipes/wip/rustlings/recipe.toml +++ b/recipes/wip/rustlings/recipe.toml @@ -1,6 +1,5 @@ #TODO Not compiled or tested [source] git = "https://github.com/rust-lang/rustlings" -rev = "9a743f80c57cc6bf27819589a8ddb5a5579ab1a4" [build] template = "cargo" From c0a90eabc815ff52f49bb7e2e4c9748ce0948754 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 10:01:30 +0000 Subject: [PATCH 1387/3180] update recipes --- recipes/wip/rustlings/recipe.toml | 2 +- recipes/wip/rusty-krab-manager/recipe.toml | 2 +- recipes/wip/rusty-radamsa/recipe.toml | 2 +- recipes/wip/rusty-rain/recipe.toml | 2 +- recipes/wip/rustyvault/recipe.toml | 3 +++ 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/recipes/wip/rustlings/recipe.toml b/recipes/wip/rustlings/recipe.toml index 11a606c3..0d335328 100644 --- a/recipes/wip/rustlings/recipe.toml +++ b/recipes/wip/rustlings/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/rust-lang/rustlings" [build] diff --git a/recipes/wip/rusty-krab-manager/recipe.toml b/recipes/wip/rusty-krab-manager/recipe.toml index a5e3b608..59f972cb 100644 --- a/recipes/wip/rusty-krab-manager/recipe.toml +++ b/recipes/wip/rusty-krab-manager/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO xdg-home and nix crates error (after cargo update) [source] git = "https://github.com/aryakaul/rusty-krab-manager" [build] diff --git a/recipes/wip/rusty-radamsa/recipe.toml b/recipes/wip/rusty-radamsa/recipe.toml index cdb306c7..fdb789ae 100644 --- a/recipes/wip/rusty-radamsa/recipe.toml +++ b/recipes/wip/rusty-radamsa/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/microsoft/rusty-radamsa" [build] diff --git a/recipes/wip/rusty-rain/recipe.toml b/recipes/wip/rusty-rain/recipe.toml index e7598f28..0b0760d1 100644 --- a/recipes/wip/rusty-rain/recipe.toml +++ b/recipes/wip/rusty-rain/recipe.toml @@ -1,4 +1,4 @@ -#TODO mio crate error +#TODO compiled but not tested [source] git = "https://github.com/cowboy8625/rusty-rain" [build] diff --git a/recipes/wip/rustyvault/recipe.toml b/recipes/wip/rustyvault/recipe.toml index 35d68020..9db0a97f 100644 --- a/recipes/wip/rustyvault/recipe.toml +++ b/recipes/wip/rustyvault/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/Tongsuo-Project/RustyVault" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 014fe22d040fb3baf75f98c6713b5433512abfef Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 10:07:13 +0000 Subject: [PATCH 1388/3180] update recipes --- recipes/wip/rustyvault/recipe.toml | 2 +- recipes/wip/rustyvibes/recipe.toml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/rustyvault/recipe.toml b/recipes/wip/rustyvault/recipe.toml index 9db0a97f..61d8b998 100644 --- a/recipes/wip/rustyvault/recipe.toml +++ b/recipes/wip/rustyvault/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO async-io and rustix crates error [source] git = "https://github.com/Tongsuo-Project/RustyVault" [build] diff --git a/recipes/wip/rustyvibes/recipe.toml b/recipes/wip/rustyvibes/recipe.toml index 91785947..83b80433 100644 --- a/recipes/wip/rustyvibes/recipe.toml +++ b/recipes/wip/rustyvibes/recipe.toml @@ -1,6 +1,5 @@ #TODO Not compiled or tested [source] git = "https://github.com/KunalBagaria/rustyvibes" -rev = "f19fdf961ae602122ed7a2b95f570be0def79c34" [build] template = "cargo" From 42598950a95f4986242999ced54d9a72be95fbaf Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 10:12:58 +0000 Subject: [PATCH 1389/3180] update recipes --- recipes/wip/rustyvibes/recipe.toml | 2 +- recipes/wip/sad/recipe.toml | 2 +- recipes/wip/samply/recipe.toml | 5 ++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/recipes/wip/rustyvibes/recipe.toml b/recipes/wip/rustyvibes/recipe.toml index 83b80433..5c56fb6b 100644 --- a/recipes/wip/rustyvibes/recipe.toml +++ b/recipes/wip/rustyvibes/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO slice-deque crate error [source] git = "https://github.com/KunalBagaria/rustyvibes" [build] diff --git a/recipes/wip/sad/recipe.toml b/recipes/wip/sad/recipe.toml index c0eb5137..67fee17b 100644 --- a/recipes/wip/sad/recipe.toml +++ b/recipes/wip/sad/recipe.toml @@ -1,4 +1,4 @@ -#TODO compilation error +#TODO compiled but not tested [source] git = "https://github.com/ms-jpq/sad" [build] diff --git a/recipes/wip/samply/recipe.toml b/recipes/wip/samply/recipe.toml index 1487d3c8..9008b902 100644 --- a/recipes/wip/samply/recipe.toml +++ b/recipes/wip/samply/recipe.toml @@ -3,4 +3,7 @@ git = "https://github.com/mstange/samply" rev = "0a3dd8b1af8f67b676e4c05e7b9846754644c0d7" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages samply +""" From c77dca64a3c659f34dc709d6f7a682c528b9be85 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 10:18:41 +0000 Subject: [PATCH 1390/3180] update recipes --- recipes/wip/samply/recipe.toml | 7 ++----- recipes/wip/sdl-pango/recipe.toml | 1 + recipes/wip/shadergarden/recipe.toml | 3 +++ recipes/wip/sheldon/recipe.toml | 3 +++ 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/recipes/wip/samply/recipe.toml b/recipes/wip/samply/recipe.toml index 9008b902..75f5c6a0 100644 --- a/recipes/wip/samply/recipe.toml +++ b/recipes/wip/samply/recipe.toml @@ -1,9 +1,6 @@ -#TODO Not compiled or tested +#TODO can't find the Cargo.toml [source] git = "https://github.com/mstange/samply" rev = "0a3dd8b1af8f67b676e4c05e7b9846754644c0d7" [build] -template = "custom" -script = """ -cookbook_cargo_packages samply -""" +template = "cargo" diff --git a/recipes/wip/sdl-pango/recipe.toml b/recipes/wip/sdl-pango/recipe.toml index a8763ee6..ca5de378 100644 --- a/recipes/wip/sdl-pango/recipe.toml +++ b/recipes/wip/sdl-pango/recipe.toml @@ -1,3 +1,4 @@ +#TODO can't recognize the redox target #TODO probably missing dependencies [source] tar = "https://sourceforge.net/projects/sdlpango/files/SDL_Pango/0.1.2/SDL_Pango-0.1.2.tar.gz/download" diff --git a/recipes/wip/shadergarden/recipe.toml b/recipes/wip/shadergarden/recipe.toml index 60d7d78e..e626a652 100644 --- a/recipes/wip/shadergarden/recipe.toml +++ b/recipes/wip/shadergarden/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/tonarino/shadergarden" [build] template = "cargo" +dependencies = [ + "ffmpeg6", +] diff --git a/recipes/wip/sheldon/recipe.toml b/recipes/wip/sheldon/recipe.toml index a147840b..6c86f111 100644 --- a/recipes/wip/sheldon/recipe.toml +++ b/recipes/wip/sheldon/recipe.toml @@ -4,3 +4,6 @@ git = "https://github.com/rossmacarthur/sheldon" rev = "9a56dcfc79c6e9f9bcf8480c162c50db013bb172" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 19c67d0c00df212815ad32ee069494d3acf9ca26 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 10:24:59 +0000 Subject: [PATCH 1391/3180] update recipes --- recipes/wip/sheldon/recipe.toml | 2 +- recipes/wip/shellfirm/recipe.toml | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/wip/sheldon/recipe.toml b/recipes/wip/sheldon/recipe.toml index 6c86f111..b2629083 100644 --- a/recipes/wip/sheldon/recipe.toml +++ b/recipes/wip/sheldon/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO libssh2-sys crate error [source] git = "https://github.com/rossmacarthur/sheldon" rev = "9a56dcfc79c6e9f9bcf8480c162c50db013bb172" diff --git a/recipes/wip/shellfirm/recipe.toml b/recipes/wip/shellfirm/recipe.toml index 5124bc6f..9c56da93 100644 --- a/recipes/wip/shellfirm/recipe.toml +++ b/recipes/wip/shellfirm/recipe.toml @@ -3,4 +3,7 @@ git = "https://github.com/kaplanelad/shellfirm" rev = "0587f023a1d6b58e9fdb71d9a4e8d5460ee33c77" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages shellfirm +""" From fd1d035f8b1703e5fca3695a2e5b1121dde98532 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 10:25:57 +0000 Subject: [PATCH 1392/3180] update recipe --- recipes/wip/shellfirm/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/wip/shellfirm/recipe.toml b/recipes/wip/shellfirm/recipe.toml index 9c56da93..17b65d43 100644 --- a/recipes/wip/shellfirm/recipe.toml +++ b/recipes/wip/shellfirm/recipe.toml @@ -1,7 +1,6 @@ #TODO Not compiled or tested [source] git = "https://github.com/kaplanelad/shellfirm" -rev = "0587f023a1d6b58e9fdb71d9a4e8d5460ee33c77" [build] template = "custom" script = """ From 3376b398a3b2b1e9b8d9560963dc2a8bb539f130 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 10:30:34 +0000 Subject: [PATCH 1393/3180] update recipes --- recipes/wip/shellfirm/recipe.toml | 2 +- recipes/wip/shokunin/recipe.toml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/shellfirm/recipe.toml b/recipes/wip/shellfirm/recipe.toml index 17b65d43..78fc9d44 100644 --- a/recipes/wip/shellfirm/recipe.toml +++ b/recipes/wip/shellfirm/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/kaplanelad/shellfirm" [build] diff --git a/recipes/wip/shokunin/recipe.toml b/recipes/wip/shokunin/recipe.toml index 72ec6183..af65d243 100644 --- a/recipes/wip/shokunin/recipe.toml +++ b/recipes/wip/shokunin/recipe.toml @@ -4,3 +4,6 @@ git = "https://github.com/sebastienrousseau/shokunin" rev = "9592f12701fb0ef3bc298f4499d2787e24fca4f3" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 904303e55c5f4a4598ba6f581cc370b171c7006c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 10:31:49 +0000 Subject: [PATCH 1394/3180] update recipes --- recipes/wip/shokunin/recipe.toml | 2 +- recipes/wip/skim/recipe.toml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/shokunin/recipe.toml b/recipes/wip/shokunin/recipe.toml index af65d243..65a19227 100644 --- a/recipes/wip/shokunin/recipe.toml +++ b/recipes/wip/shokunin/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO openssl-sys crate error [source] git = "https://github.com/sebastienrousseau/shokunin" rev = "9592f12701fb0ef3bc298f4499d2787e24fca4f3" diff --git a/recipes/wip/skim/recipe.toml b/recipes/wip/skim/recipe.toml index 12833f49..dc94308e 100644 --- a/recipes/wip/skim/recipe.toml +++ b/recipes/wip/skim/recipe.toml @@ -1,6 +1,5 @@ #TODO tuikit crate error [source] git = "https://github.com/lotabout/skim" -rev = "db9f194c12486343ae23b37781123ff0dbfaaf16" [build] template = "cargo" From 6b7361c458be30be1d91b57714b101423c6ce539 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 10:37:19 +0000 Subject: [PATCH 1395/3180] update recipes --- recipes/wip/skim/recipe.toml | 2 +- recipes/wip/smag/recipe.toml | 2 +- recipes/wip/sn0int/recipe.toml | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/wip/skim/recipe.toml b/recipes/wip/skim/recipe.toml index dc94308e..af6c973a 100644 --- a/recipes/wip/skim/recipe.toml +++ b/recipes/wip/skim/recipe.toml @@ -1,4 +1,4 @@ -#TODO tuikit crate error +#TODO tuikit crate error (after cargo update) [source] git = "https://github.com/lotabout/skim" [build] diff --git a/recipes/wip/smag/recipe.toml b/recipes/wip/smag/recipe.toml index 2c80383a..3ae1702c 100644 --- a/recipes/wip/smag/recipe.toml +++ b/recipes/wip/smag/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO outdated redox_syscall crate (after cargo update) [source] git = "https://github.com/aantn/smag" [build] diff --git a/recipes/wip/sn0int/recipe.toml b/recipes/wip/sn0int/recipe.toml index 8118d68d..1a08e719 100644 --- a/recipes/wip/sn0int/recipe.toml +++ b/recipes/wip/sn0int/recipe.toml @@ -1,7 +1,6 @@ #TODO SQLite is not working [source] git = "https://github.com/kpcyrd/sn0int" -rev = "b49aba5a8a6ae09c885c1aaee03fcfc9515fb42a" [build] template = "cargo" dependencies = [ From b6285b6714162c134688151ac91fec814264f486 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 10:45:26 +0000 Subject: [PATCH 1396/3180] update recipes --- recipes/wip/sn0int/recipe.toml | 2 +- recipes/wip/sndio/recipe.toml | 2 +- recipes/wip/soundtouch/recipe.toml | 4 ++-- recipes/wip/spacer/recipe.toml | 2 +- recipes/wip/speedtest-rs/recipe.toml | 1 - 5 files changed, 5 insertions(+), 6 deletions(-) diff --git a/recipes/wip/sn0int/recipe.toml b/recipes/wip/sn0int/recipe.toml index 1a08e719..39292b7e 100644 --- a/recipes/wip/sn0int/recipe.toml +++ b/recipes/wip/sn0int/recipe.toml @@ -1,4 +1,4 @@ -#TODO SQLite is not working +#TODO outdated redox_syscall crate [source] git = "https://github.com/kpcyrd/sn0int" [build] diff --git a/recipes/wip/sndio/recipe.toml b/recipes/wip/sndio/recipe.toml index ba54af67..a7fa0705 100644 --- a/recipes/wip/sndio/recipe.toml +++ b/recipes/wip/sndio/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested yet +#TODO configuration problem [source] tar = "https://sndio.org/sndio-1.9.0.tar.gz" [build] diff --git a/recipes/wip/soundtouch/recipe.toml b/recipes/wip/soundtouch/recipe.toml index bbb2cf12..e5e493ed 100644 --- a/recipes/wip/soundtouch/recipe.toml +++ b/recipes/wip/soundtouch/recipe.toml @@ -1,5 +1,5 @@ -#TODO not compiled or tested +#TODO missing script for building [source] tar = "https://www.surina.net/soundtouch/soundtouch-2.3.2.tar.gz" [build] -template = "configure" +template = "custom" diff --git a/recipes/wip/spacer/recipe.toml b/recipes/wip/spacer/recipe.toml index 147ca92c..8893c7cc 100644 --- a/recipes/wip/spacer/recipe.toml +++ b/recipes/wip/spacer/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/samwho/spacer" rev = "9c63225e9b93e1aa8b63e64c180ffd05b7dd4b02" diff --git a/recipes/wip/speedtest-rs/recipe.toml b/recipes/wip/speedtest-rs/recipe.toml index 5ef6625e..086c233e 100644 --- a/recipes/wip/speedtest-rs/recipe.toml +++ b/recipes/wip/speedtest-rs/recipe.toml @@ -1,6 +1,5 @@ #TODO Not compiled or tested [source] git = "https://github.com/nelsonjchen/speedtest-rs" -rev = "b512fb824ddd663ddf862d6b38f78caa3791b502" [build] template = "cargo" From 546a9587f3d33e09626ece580cb45ea2962cad9a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 10:46:42 +0000 Subject: [PATCH 1397/3180] add dependency --- recipes/wip/speedtest-rs/recipe.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/speedtest-rs/recipe.toml b/recipes/wip/speedtest-rs/recipe.toml index 086c233e..541bd1b7 100644 --- a/recipes/wip/speedtest-rs/recipe.toml +++ b/recipes/wip/speedtest-rs/recipe.toml @@ -1,5 +1,8 @@ -#TODO Not compiled or tested +#TODO Not compiled or tested (after cargo update) [source] git = "https://github.com/nelsonjchen/speedtest-rs" [build] template = "cargo" +dependencies = [ + "openssl1", +] From d7bd2f9c3e3f9c3023630a90afba779ed928f3a9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 10:56:35 +0000 Subject: [PATCH 1398/3180] update recipes --- recipes/wip/speedtest-rs/recipe.toml | 2 +- recipes/wip/sqlite3/recipe.toml | 1 + recipes/wip/sshx/recipe.toml | 1 + recipes/wip/starship/recipe.toml | 1 - 4 files changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/wip/speedtest-rs/recipe.toml b/recipes/wip/speedtest-rs/recipe.toml index 541bd1b7..7e32c6f2 100644 --- a/recipes/wip/speedtest-rs/recipe.toml +++ b/recipes/wip/speedtest-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested (after cargo update) +#TODO openssl-sys crate error (after cargo update) [source] git = "https://github.com/nelsonjchen/speedtest-rs" [build] diff --git a/recipes/wip/sqlite3/recipe.toml b/recipes/wip/sqlite3/recipe.toml index 3d51f081..8c242f61 100644 --- a/recipes/wip/sqlite3/recipe.toml +++ b/recipes/wip/sqlite3/recipe.toml @@ -1,3 +1,4 @@ +#TODO compiled but not tested #TODO incomplete port [source] tar = "https://www.sqlite.org/2023/sqlite-autoconf-3440000.tar.gz" diff --git a/recipes/wip/sshx/recipe.toml b/recipes/wip/sshx/recipe.toml index 3d9fce2a..4a752c85 100644 --- a/recipes/wip/sshx/recipe.toml +++ b/recipes/wip/sshx/recipe.toml @@ -1,3 +1,4 @@ +#TODO program source code error (after cargo update) #TODO require NodeJS and NPM [source] git = "https://github.com/ekzhang/sshx" diff --git a/recipes/wip/starship/recipe.toml b/recipes/wip/starship/recipe.toml index e8eb76a0..908477fb 100644 --- a/recipes/wip/starship/recipe.toml +++ b/recipes/wip/starship/recipe.toml @@ -1,6 +1,5 @@ #TODO nix::unistd::User [source] git = "https://github.com/starship/starship" -rev = "dcf7b7646c4610947765d76cf4e024a60576b2cd" [build] template = "cargo" From b9ca8753b41d7731c7cf6c60694508fcb21fb8af Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 11:03:35 +0000 Subject: [PATCH 1399/3180] update recipes --- recipes/wip/starship/recipe.toml | 1 + recipes/wip/steel/recipe.toml | 3 +++ 2 files changed, 4 insertions(+) diff --git a/recipes/wip/starship/recipe.toml b/recipes/wip/starship/recipe.toml index 908477fb..18582e82 100644 --- a/recipes/wip/starship/recipe.toml +++ b/recipes/wip/starship/recipe.toml @@ -1,3 +1,4 @@ +#TODO xdg-home crate error #TODO nix::unistd::User [source] git = "https://github.com/starship/starship" diff --git a/recipes/wip/steel/recipe.toml b/recipes/wip/steel/recipe.toml index 9bc2c28e..bfa9b713 100644 --- a/recipes/wip/steel/recipe.toml +++ b/recipes/wip/steel/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/mattwparas/steel" [build] template = "cargo" +dependencies = [ + "openssl1", +] From a68324010a8356f101bde0dadc86312e9ac07a14 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 15:42:31 +0000 Subject: [PATCH 1400/3180] update recipes --- recipes/wip/steel/recipe.toml | 2 +- recipes/wip/succeed2ban-tui/recipe.toml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/steel/recipe.toml b/recipes/wip/steel/recipe.toml index bfa9b713..7bbde1ae 100644 --- a/recipes/wip/steel/recipe.toml +++ b/recipes/wip/steel/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO rustyline crate error [source] git = "https://github.com/mattwparas/steel" [build] diff --git a/recipes/wip/succeed2ban-tui/recipe.toml b/recipes/wip/succeed2ban-tui/recipe.toml index df20b74c..ba59e330 100644 --- a/recipes/wip/succeed2ban-tui/recipe.toml +++ b/recipes/wip/succeed2ban-tui/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/J-Bockhofer/succeed2ban-tui" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 0b5e680e1fd5f0ea52d95e588373807cedb5f797 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 15:53:28 +0000 Subject: [PATCH 1401/3180] update recipes --- recipes/wip/succeed2ban-tui/recipe.toml | 2 +- recipes/wip/sudo-rs/recipe.toml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/succeed2ban-tui/recipe.toml b/recipes/wip/succeed2ban-tui/recipe.toml index ba59e330..f48d3eb0 100644 --- a/recipes/wip/succeed2ban-tui/recipe.toml +++ b/recipes/wip/succeed2ban-tui/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO libsystemd crate error (needs porting) [source] git = "https://github.com/J-Bockhofer/succeed2ban-tui" [build] diff --git a/recipes/wip/sudo-rs/recipe.toml b/recipes/wip/sudo-rs/recipe.toml index 8e02feb2..b81f1ced 100644 --- a/recipes/wip/sudo-rs/recipe.toml +++ b/recipes/wip/sudo-rs/recipe.toml @@ -1,6 +1,5 @@ #TODO requires Linux PAM, probably needs porting [source] git = "https://github.com/memorysafety/sudo-rs" -rev = "195d6f851904ab00357f040eef35e31abaebbe1b" [build] template = "cargo" From ba63db068f57775f05e582afcd1a7c215f9d58a5 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 16:52:24 +0000 Subject: [PATCH 1402/3180] update recipes --- recipes/wip/sudo-rs/recipe.toml | 3 ++- recipes/wip/svg2pdf/recipe.toml | 3 ++- recipes/wip/swc/recipe.toml | 5 ++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/recipes/wip/sudo-rs/recipe.toml b/recipes/wip/sudo-rs/recipe.toml index b81f1ced..f0daeb47 100644 --- a/recipes/wip/sudo-rs/recipe.toml +++ b/recipes/wip/sudo-rs/recipe.toml @@ -1,4 +1,5 @@ -#TODO requires Linux PAM, probably needs porting +#TODO libc crate error +#TODO requires Linux PAM [source] git = "https://github.com/memorysafety/sudo-rs" [build] diff --git a/recipes/wip/svg2pdf/recipe.toml b/recipes/wip/svg2pdf/recipe.toml index 5ee3f736..28624b91 100644 --- a/recipes/wip/svg2pdf/recipe.toml +++ b/recipes/wip/svg2pdf/recipe.toml @@ -1,4 +1,5 @@ -#TODO Not compiled or tested +#TODO compiled but not tested +#TODO missing script to properly move the binary [source] git = "https://github.com/typst/svg2pdf" rev = "7d13eab7f01a9ab1577cfb348eead05726658c53" diff --git a/recipes/wip/swc/recipe.toml b/recipes/wip/swc/recipe.toml index 51a9e777..112eaa7f 100644 --- a/recipes/wip/swc/recipe.toml +++ b/recipes/wip/swc/recipe.toml @@ -2,4 +2,7 @@ [source] git = "https://github.com/swc-project/swc" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages swc_cli_impl +""" From 578abd0b6ef8ecbe4cf9dcfe4a9fd33b3f0a2856 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 17:19:01 +0000 Subject: [PATCH 1403/3180] update recipes --- recipes/wip/swc/recipe.toml | 3 ++- recipes/wip/swig/recipe.toml | 2 +- recipes/wip/sws/recipe.toml | 2 +- recipes/wip/symphonia-play/recipe.toml | 3 ++- recipes/wip/taskwarrior-tui/recipe.toml | 1 - 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/recipes/wip/swc/recipe.toml b/recipes/wip/swc/recipe.toml index 112eaa7f..2fcddac6 100644 --- a/recipes/wip/swc/recipe.toml +++ b/recipes/wip/swc/recipe.toml @@ -1,4 +1,5 @@ -#TODO Not compiled or tested +#TODO compiled but not tested +#TODO missing script to properly move the binary [source] git = "https://github.com/swc-project/swc" [build] diff --git a/recipes/wip/swig/recipe.toml b/recipes/wip/swig/recipe.toml index a69754a1..57843073 100644 --- a/recipes/wip/swig/recipe.toml +++ b/recipes/wip/swig/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO missing pcre2.h [source] tar = "http://prdownloads.sourceforge.net/swig/swig-4.1.1.tar.gz" [build] diff --git a/recipes/wip/sws/recipe.toml b/recipes/wip/sws/recipe.toml index d144dc1d..795bf933 100644 --- a/recipes/wip/sws/recipe.toml +++ b/recipes/wip/sws/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO signal-hook crate error [source] git = "https://github.com/static-web-server/static-web-server" rev = "98a5cc40d276f3dac3c2c36530b966b213fb9ffc" diff --git a/recipes/wip/symphonia-play/recipe.toml b/recipes/wip/symphonia-play/recipe.toml index ab618e9d..b6f2a409 100644 --- a/recipes/wip/symphonia-play/recipe.toml +++ b/recipes/wip/symphonia-play/recipe.toml @@ -1,4 +1,5 @@ -#TODO Compiled but not tested +#TODO compiled and tested +#TODO cpal can't find an audio device [source] git = "https://github.com/pdeljanov/Symphonia" [build] diff --git a/recipes/wip/taskwarrior-tui/recipe.toml b/recipes/wip/taskwarrior-tui/recipe.toml index fa9e77b3..dad7897d 100644 --- a/recipes/wip/taskwarrior-tui/recipe.toml +++ b/recipes/wip/taskwarrior-tui/recipe.toml @@ -1,6 +1,5 @@ #TODO Not compiled or tested [source] git = "https://github.com/kdheepak/taskwarrior-tui" -rev = "fe171ea35a5bfe794e2d822aa03f7b7db2f86616" [build] template = "cargo" From c2b5a27d85b053f34f092e99968dfd37061d8a40 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 17:32:27 +0000 Subject: [PATCH 1404/3180] update recipes --- recipes/wip/taskwarrior-tui/recipe.toml | 2 +- recipes/wip/tealdeer/recipe.toml | 2 +- recipes/wip/tenere/recipe.toml | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/wip/taskwarrior-tui/recipe.toml b/recipes/wip/taskwarrior-tui/recipe.toml index dad7897d..a786a283 100644 --- a/recipes/wip/taskwarrior-tui/recipe.toml +++ b/recipes/wip/taskwarrior-tui/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO rustyline crate error (after cargo update) [source] git = "https://github.com/kdheepak/taskwarrior-tui" [build] diff --git a/recipes/wip/tealdeer/recipe.toml b/recipes/wip/tealdeer/recipe.toml index bb96675e..1b4ad595 100644 --- a/recipes/wip/tealdeer/recipe.toml +++ b/recipes/wip/tealdeer/recipe.toml @@ -1,4 +1,4 @@ -#TODO require a patch on ring +#TODO program source code error (after cargo update) [source] git = "https://github.com/dbrgn/tealdeer" [build] diff --git a/recipes/wip/tenere/recipe.toml b/recipes/wip/tenere/recipe.toml index ca06a8cc..68f5cb23 100644 --- a/recipes/wip/tenere/recipe.toml +++ b/recipes/wip/tenere/recipe.toml @@ -1,6 +1,5 @@ #TODO Not compiled or tested [source] git = "https://github.com/pythops/tenere" -rev = "46fe89004dfc461f64b61c9f6c7e8c161aed707c" [build] template = "cargo" From f08bdf7eb18aacc827e900520fc85a9184a29d81 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 18:13:08 +0000 Subject: [PATCH 1405/3180] update recipes --- recipes/wip/tenere/recipe.toml | 2 +- recipes/wip/termchat/recipe.toml | 2 +- recipes/wip/termscp/recipe.toml | 2 +- recipes/wip/tetanes/recipe.toml | 8 ++++---- recipes/wip/texel/recipe.toml | 2 +- recipes/wip/thesaurust/recipe.toml | 3 +++ 6 files changed, 11 insertions(+), 8 deletions(-) diff --git a/recipes/wip/tenere/recipe.toml b/recipes/wip/tenere/recipe.toml index 68f5cb23..5bb99003 100644 --- a/recipes/wip/tenere/recipe.toml +++ b/recipes/wip/tenere/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO sys-info crate error [source] git = "https://github.com/pythops/tenere" [build] diff --git a/recipes/wip/termchat/recipe.toml b/recipes/wip/termchat/recipe.toml index 5bad5604..9e5675c9 100644 --- a/recipes/wip/termchat/recipe.toml +++ b/recipes/wip/termchat/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO update the mio crate to 0.8.x [source] git = "https://github.com/lemunozm/termchat" [build] diff --git a/recipes/wip/termscp/recipe.toml b/recipes/wip/termscp/recipe.toml index 52c75cff..d47fd2d0 100644 --- a/recipes/wip/termscp/recipe.toml +++ b/recipes/wip/termscp/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make dbus work [source] git = "https://github.com/veeso/termscp" rev = "ef8dbb6305fd1573446a254b9be759a1f13724af" diff --git a/recipes/wip/tetanes/recipe.toml b/recipes/wip/tetanes/recipe.toml index 15b14017..e374365f 100644 --- a/recipes/wip/tetanes/recipe.toml +++ b/recipes/wip/tetanes/recipe.toml @@ -5,8 +5,8 @@ git = "https://github.com/lukexor/tetanes" template = "cargo" dependencies = [ "sdl2", - "sdl2_image", - "sdl2_mixer", - "sdl2_ttf", - "sdl2_gfx", + "sdl2-image", + "sdl2-mixer", + "sdl2-ttf", + "sdl2-gfx", ] diff --git a/recipes/wip/texel/recipe.toml b/recipes/wip/texel/recipe.toml index b92b4a95..3e9cbfb3 100644 --- a/recipes/wip/texel/recipe.toml +++ b/recipes/wip/texel/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/almindor/texel" [build] diff --git a/recipes/wip/thesaurust/recipe.toml b/recipes/wip/thesaurust/recipe.toml index d53a5871..357b20b9 100644 --- a/recipes/wip/thesaurust/recipe.toml +++ b/recipes/wip/thesaurust/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/QuietPigeon2001/thesaurust" [build] template = "cargo" +dependencies = [ + "openssl1", +] From c2b21a6a5b5ab59c54b1c54000c19555fb4a180b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 18:29:40 +0000 Subject: [PATCH 1406/3180] update recipes --- recipes/wip/thesaurust/recipe.toml | 2 +- recipes/wip/thwack/recipe.toml | 2 +- recipes/wip/tic-tac-toe-rs/recipe.toml | 2 +- recipes/wip/tick-rs/recipe.toml | 2 +- recipes/wip/tiny/recipe.toml | 1 - 5 files changed, 4 insertions(+), 5 deletions(-) diff --git a/recipes/wip/thesaurust/recipe.toml b/recipes/wip/thesaurust/recipe.toml index 357b20b9..9bc83665 100644 --- a/recipes/wip/thesaurust/recipe.toml +++ b/recipes/wip/thesaurust/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO openssl error [source] git = "https://github.com/QuietPigeon2001/thesaurust" [build] diff --git a/recipes/wip/thwack/recipe.toml b/recipes/wip/thwack/recipe.toml index f22c8865..4bb38dd3 100644 --- a/recipes/wip/thwack/recipe.toml +++ b/recipes/wip/thwack/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make Wayland work [source] git = "https://github.com/yykamei/thwack" rev = "6763a2a9da03ffb746580c69f8d77161e5f6ba4e" diff --git a/recipes/wip/tic-tac-toe-rs/recipe.toml b/recipes/wip/tic-tac-toe-rs/recipe.toml index 8d02ed9c..446d0e38 100644 --- a/recipes/wip/tic-tac-toe-rs/recipe.toml +++ b/recipes/wip/tic-tac-toe-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/thomas-mauran/tic-tac-toe" [build] diff --git a/recipes/wip/tick-rs/recipe.toml b/recipes/wip/tick-rs/recipe.toml index aa7aaece..ff47e73f 100644 --- a/recipes/wip/tick-rs/recipe.toml +++ b/recipes/wip/tick-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO openssl-sys crate error [source] git = "https://github.com/tarkah/tickrs" rev = "8a04f5411adf72fc08146eab0632765f1002e9e6" diff --git a/recipes/wip/tiny/recipe.toml b/recipes/wip/tiny/recipe.toml index 67932d7e..1ce1f8c5 100644 --- a/recipes/wip/tiny/recipe.toml +++ b/recipes/wip/tiny/recipe.toml @@ -1,7 +1,6 @@ #TODO compiled but not tested (after a patch on the ring crate) [source] git = "https://github.com/osa1/tiny" -rev = "939fe1a689cd622161a43da445ebc6718478040d" [build] template = "custom" script = """ From 1a27d16964e13f817fa0d8cc66fed4fd63b4a1ab Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 19:00:08 +0000 Subject: [PATCH 1407/3180] update recipes --- recipes/wip/tiny/recipe.toml | 2 +- recipes/wip/tobaru/recipe.toml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/tiny/recipe.toml b/recipes/wip/tiny/recipe.toml index 1ce1f8c5..e262610b 100644 --- a/recipes/wip/tiny/recipe.toml +++ b/recipes/wip/tiny/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested (after a patch on the ring crate) +#TODO compiled but not tested (after cargo update and a patch on ring) [source] git = "https://github.com/osa1/tiny" [build] diff --git a/recipes/wip/tobaru/recipe.toml b/recipes/wip/tobaru/recipe.toml index ea15f4ab..64ef9b38 100644 --- a/recipes/wip/tobaru/recipe.toml +++ b/recipes/wip/tobaru/recipe.toml @@ -1,6 +1,5 @@ #TODO can't update libc crate version [source] git = "https://github.com/cfal/tobaru" -rev = "95afac34f0c54694ef0e114e87555f8e671d9f1b" [build] template = "cargo" \ No newline at end of file From d0155212ea6f8ff08392bf1033478203c0126d0a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 19:12:40 +0000 Subject: [PATCH 1408/3180] update recipes --- recipes/wip/tobaru/recipe.toml | 4 ++-- recipes/wip/tock/recipe.toml | 2 +- recipes/wip/todolist-rs/recipe.toml | 5 ----- recipes/wip/tokio-console/recipe.toml | 5 ++++- 4 files changed, 7 insertions(+), 9 deletions(-) delete mode 100644 recipes/wip/todolist-rs/recipe.toml diff --git a/recipes/wip/tobaru/recipe.toml b/recipes/wip/tobaru/recipe.toml index 64ef9b38..88761712 100644 --- a/recipes/wip/tobaru/recipe.toml +++ b/recipes/wip/tobaru/recipe.toml @@ -1,5 +1,5 @@ -#TODO can't update libc crate version +#TODO compiled but not tested (after a patch on ring) [source] git = "https://github.com/cfal/tobaru" [build] -template = "cargo" \ No newline at end of file +template = "cargo" diff --git a/recipes/wip/tock/recipe.toml b/recipes/wip/tock/recipe.toml index 20dd9c80..97cda917 100644 --- a/recipes/wip/tock/recipe.toml +++ b/recipes/wip/tock/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/nwtnni/tock" [build] diff --git a/recipes/wip/todolist-rs/recipe.toml b/recipes/wip/todolist-rs/recipe.toml deleted file mode 100644 index 12e53cbc..00000000 --- a/recipes/wip/todolist-rs/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO Not compiled or tested -[source] -git = "https://github.com/ebubekirgungor/todolist-rust" -[build] -template = "cargo" diff --git a/recipes/wip/tokio-console/recipe.toml b/recipes/wip/tokio-console/recipe.toml index 8ecf5ffd..f4e78fa9 100644 --- a/recipes/wip/tokio-console/recipe.toml +++ b/recipes/wip/tokio-console/recipe.toml @@ -2,4 +2,7 @@ [source] git = "https://github.com/tokio-rs/console" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages tokio-console +""" From 4cd536e2c2812a7aee3e7c641e133b81517ec101 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 19:21:46 +0000 Subject: [PATCH 1409/3180] update recipes --- recipes/wip/tokio-console/recipe.toml | 2 +- recipes/wip/tori/recipe.toml | 2 +- recipes/wip/torrust-tracker/recipe.toml | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/wip/tokio-console/recipe.toml b/recipes/wip/tokio-console/recipe.toml index f4e78fa9..d89d5682 100644 --- a/recipes/wip/tokio-console/recipe.toml +++ b/recipes/wip/tokio-console/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/tokio-rs/console" [build] diff --git a/recipes/wip/tori/recipe.toml b/recipes/wip/tori/recipe.toml index 9426e337..fba6d741 100644 --- a/recipes/wip/tori/recipe.toml +++ b/recipes/wip/tori/recipe.toml @@ -1,4 +1,4 @@ -#TODO make mpv works +#TODO make dependencies work [source] git = "https://github.com/LeoRiether/tori" rev = "422e5bbb1477b6fdd3a56e0db1b3553ce362e153" diff --git a/recipes/wip/torrust-tracker/recipe.toml b/recipes/wip/torrust-tracker/recipe.toml index 4dcaba9a..6ba3b8cb 100644 --- a/recipes/wip/torrust-tracker/recipe.toml +++ b/recipes/wip/torrust-tracker/recipe.toml @@ -1,6 +1,5 @@ #TODO Not compiled or tested [source] git = "https://github.com/torrust/torrust-tracker" -rev = "048d35c1172d686ce85cadaa42f77d30703ca80a" [build] template = "cargo" From 0c0f9dbc2c1dd696f00c238f196b0e995e562fda Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 19:26:27 +0000 Subject: [PATCH 1410/3180] update recipes --- recipes/wip/torrust-tracker/recipe.toml | 2 +- recipes/wip/touchhle/recipe.toml | 2 +- recipes/wip/tp-note/recipe.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/wip/torrust-tracker/recipe.toml b/recipes/wip/torrust-tracker/recipe.toml index 6ba3b8cb..5cb78e4d 100644 --- a/recipes/wip/torrust-tracker/recipe.toml +++ b/recipes/wip/torrust-tracker/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO openssl-sys crate error [source] git = "https://github.com/torrust/torrust-tracker" [build] diff --git a/recipes/wip/touchhle/recipe.toml b/recipes/wip/touchhle/recipe.toml index 930b42e5..3d42bb64 100644 --- a/recipes/wip/touchhle/recipe.toml +++ b/recipes/wip/touchhle/recipe.toml @@ -1,4 +1,4 @@ -#TODO Boost is not working +#TODO make boost work [source] git = "https://github.com/hikari-no-yume/touchHLE" [build] diff --git a/recipes/wip/tp-note/recipe.toml b/recipes/wip/tp-note/recipe.toml index ed93890b..86674921 100644 --- a/recipes/wip/tp-note/recipe.toml +++ b/recipes/wip/tp-note/recipe.toml @@ -5,5 +5,5 @@ rev = "1a8241211382efafb37961888aebc0065d56a95e" [build] template = "custom" script = """ -cookbook_cargo_packages tp-note +cookbook_cargo_packages tpnote """ From 1d95ab462670078805228408045b9680bea7e503 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 19:29:57 +0000 Subject: [PATCH 1411/3180] update recipes --- recipes/wip/tp-note/recipe.toml | 2 +- recipes/wip/treq/recipe.toml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/tp-note/recipe.toml b/recipes/wip/tp-note/recipe.toml index 86674921..48bd6a75 100644 --- a/recipes/wip/tp-note/recipe.toml +++ b/recipes/wip/tp-note/recipe.toml @@ -1,4 +1,4 @@ -#TODO require Wayland? +#TODO make Wayland work [source] git = "https://gitlab.com/getreu/tp-note" rev = "1a8241211382efafb37961888aebc0065d56a95e" diff --git a/recipes/wip/treq/recipe.toml b/recipes/wip/treq/recipe.toml index 90203d2f..e3ec1df6 100644 --- a/recipes/wip/treq/recipe.toml +++ b/recipes/wip/treq/recipe.toml @@ -1,7 +1,6 @@ #TODO thread-id crate error (after cargo update) [source] git = "https://github.com/talis-fb/TReq" -rev = "74a5d919fe34aff6c8f3f2a614e107f0dca70caf" [build] template = "cargo" dependencies = [ From 158f735784ccb802c14b390da0b2a01748b2edab Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 20:05:12 +0000 Subject: [PATCH 1412/3180] update recipes --- recipes/wip/treq/recipe.toml | 2 +- recipes/wip/trippy/recipe.toml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/treq/recipe.toml b/recipes/wip/treq/recipe.toml index e3ec1df6..28e94d8f 100644 --- a/recipes/wip/treq/recipe.toml +++ b/recipes/wip/treq/recipe.toml @@ -1,4 +1,4 @@ -#TODO thread-id crate error (after cargo update) +#TODO openssl error (after cargo update) [source] git = "https://github.com/talis-fb/TReq" [build] diff --git a/recipes/wip/trippy/recipe.toml b/recipes/wip/trippy/recipe.toml index 59d98fe9..f442edaf 100644 --- a/recipes/wip/trippy/recipe.toml +++ b/recipes/wip/trippy/recipe.toml @@ -1,6 +1,5 @@ #TODO source code error (after cargo update) [source] git = "https://github.com/fujiapple852/trippy" -rev = "388b99c495da48c548c72ff94e9d23a2f125e186" [build] template = "cargo" From 7567afa53d4b18843646f638bda81917341e7bac Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 20:18:04 +0000 Subject: [PATCH 1413/3180] update recipes --- recipes/wip/trippy/recipe.toml | 2 +- recipes/wip/tsuchita/recipe.toml | 2 +- recipes/wip/tts-tui/recipe.toml | 2 +- recipes/wip/ttyper/recipe.toml | 2 +- recipes/wip/tui-journal/recipe.toml | 2 +- recipes/wip/tv/recipe.toml | 1 - 6 files changed, 5 insertions(+), 6 deletions(-) diff --git a/recipes/wip/trippy/recipe.toml b/recipes/wip/trippy/recipe.toml index f442edaf..d17e376e 100644 --- a/recipes/wip/trippy/recipe.toml +++ b/recipes/wip/trippy/recipe.toml @@ -1,4 +1,4 @@ -#TODO source code error (after cargo update) +#TODO source code error [source] git = "https://github.com/fujiapple852/trippy" [build] diff --git a/recipes/wip/tsuchita/recipe.toml b/recipes/wip/tsuchita/recipe.toml index 33a71e0d..ff2a0534 100644 --- a/recipes/wip/tsuchita/recipe.toml +++ b/recipes/wip/tsuchita/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO update mio to 0.8 (after cargo update) [source] git = "https://github.com/kamiyaa/tsuchita" [build] diff --git a/recipes/wip/tts-tui/recipe.toml b/recipes/wip/tts-tui/recipe.toml index f12250d3..18e9ba7c 100644 --- a/recipes/wip/tts-tui/recipe.toml +++ b/recipes/wip/tts-tui/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make speech-dispatcher work [source] git = "https://github.com/lesleyrs/tts-tui" rev = "820689ba21ead76981376b7dfed17bfc59e5b013" diff --git a/recipes/wip/ttyper/recipe.toml b/recipes/wip/ttyper/recipe.toml index cb7464c8..e1ffc188 100644 --- a/recipes/wip/ttyper/recipe.toml +++ b/recipes/wip/ttyper/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/max-niederman/ttyper" rev = "662a6682984afa6efca707b693ae68622e52ac24" diff --git a/recipes/wip/tui-journal/recipe.toml b/recipes/wip/tui-journal/recipe.toml index 376b2c3c..5d54f961 100644 --- a/recipes/wip/tui-journal/recipe.toml +++ b/recipes/wip/tui-journal/recipe.toml @@ -1,4 +1,4 @@ -#TODO SQLite is not working +#TODO make Wayland work [source] git = "https://github.com/AmmarAbouZor/tui-journal" rev = "40943d8b4081d61cd549398ff68c6f219444167b" diff --git a/recipes/wip/tv/recipe.toml b/recipes/wip/tv/recipe.toml index d14fb0d7..18d07db3 100644 --- a/recipes/wip/tv/recipe.toml +++ b/recipes/wip/tv/recipe.toml @@ -1,6 +1,5 @@ #TODO Not compiled or tested [source] git = "https://github.com/alexhallam/tv" -rev = "ec8f7cf81f201e0046c0047dc5ed840c4e9f6e3b" [build] template = "cargo" From a9a9d279c1a71ca01da50212c7bc08917191483b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 20:38:42 +0000 Subject: [PATCH 1414/3180] update recipes --- recipes/wip/tv/recipe.toml | 2 +- recipes/wip/tvix/recipe.toml | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/wip/tv/recipe.toml b/recipes/wip/tv/recipe.toml index 18d07db3..2071fe2f 100644 --- a/recipes/wip/tv/recipe.toml +++ b/recipes/wip/tv/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO update mio to 0.8 (after cargo update) [source] git = "https://github.com/alexhallam/tv" [build] diff --git a/recipes/wip/tvix/recipe.toml b/recipes/wip/tvix/recipe.toml index 9f8c2f87..0102a39c 100644 --- a/recipes/wip/tvix/recipe.toml +++ b/recipes/wip/tvix/recipe.toml @@ -2,4 +2,7 @@ [source] git = "https://github.com/tvlfyi/tvix" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages tvix-cli +""" From 8e66cd00d23ea726a19b4582efbfde9299a36187 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 20:55:25 +0000 Subject: [PATCH 1415/3180] update recipes --- recipes/wip/tvix/recipe.toml | 2 +- recipes/wip/twitch-tui/recipe.toml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/tvix/recipe.toml b/recipes/wip/tvix/recipe.toml index 0102a39c..12bf6c21 100644 --- a/recipes/wip/tvix/recipe.toml +++ b/recipes/wip/tvix/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO tvix-castore crate error (after cargo update) [source] git = "https://github.com/tvlfyi/tvix" [build] diff --git a/recipes/wip/twitch-tui/recipe.toml b/recipes/wip/twitch-tui/recipe.toml index c6864ff1..053f130d 100644 --- a/recipes/wip/twitch-tui/recipe.toml +++ b/recipes/wip/twitch-tui/recipe.toml @@ -4,3 +4,6 @@ git = "https://github.com/Xithrius/twitch-tui" rev = "4c382da4afcb7b994e1a7659addfb55fde9518df" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 33064268e8035d459d81448d53256bef3a4caca7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 20:59:38 +0000 Subject: [PATCH 1416/3180] update recipe --- recipes/wip/twitch-tui/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/wip/twitch-tui/recipe.toml b/recipes/wip/twitch-tui/recipe.toml index 053f130d..ea3bea90 100644 --- a/recipes/wip/twitch-tui/recipe.toml +++ b/recipes/wip/twitch-tui/recipe.toml @@ -1,7 +1,6 @@ #TODO Not compiled or tested [source] git = "https://github.com/Xithrius/twitch-tui" -rev = "4c382da4afcb7b994e1a7659addfb55fde9518df" [build] template = "cargo" dependencies = [ From d5241a86b9786522b05142588008f6d508090851 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 21:32:01 +0000 Subject: [PATCH 1417/3180] update recipes --- recipes/wip/twitch-tui/recipe.toml | 2 +- recipes/wip/typst/recipe.toml | 3 ++- recipes/wip/usbutils/recipe.toml | 3 +-- recipes/wip/util-linux/recipe.toml | 2 +- recipes/wip/valgrind/recipe.toml | 2 +- recipes/wip/veloren/recipe.toml | 2 +- recipes/wip/verrou/recipe.toml | 2 +- recipes/wip/vincenzo/recipe.toml | 5 ++++- 8 files changed, 12 insertions(+), 9 deletions(-) diff --git a/recipes/wip/twitch-tui/recipe.toml b/recipes/wip/twitch-tui/recipe.toml index ea3bea90..28a16657 100644 --- a/recipes/wip/twitch-tui/recipe.toml +++ b/recipes/wip/twitch-tui/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO rustyline crate error [source] git = "https://github.com/Xithrius/twitch-tui" [build] diff --git a/recipes/wip/typst/recipe.toml b/recipes/wip/typst/recipe.toml index 293b9fc6..be14591e 100644 --- a/recipes/wip/typst/recipe.toml +++ b/recipes/wip/typst/recipe.toml @@ -1,4 +1,5 @@ -#TODO require rustc 1.70 or newer +#TODO compiled but not tested +#TODO missing script to properly move the binary [source] git = "https://github.com/typst/typst" rev = "70ca0d257bb4ba927f63260e20443f244e0bb58c" diff --git a/recipes/wip/usbutils/recipe.toml b/recipes/wip/usbutils/recipe.toml index 4359a058..ea3c222e 100644 --- a/recipes/wip/usbutils/recipe.toml +++ b/recipes/wip/usbutils/recipe.toml @@ -1,5 +1,4 @@ -#TODO libusb needs to be patched -#TODO not compiled or tested +#TODO compilation error [source] tar = "https://www.kernel.org/pub/linux/utils/usb/usbutils/usbutils-017.tar.xz" [build] diff --git a/recipes/wip/util-linux/recipe.toml b/recipes/wip/util-linux/recipe.toml index dc185562..0355aa69 100644 --- a/recipes/wip/util-linux/recipe.toml +++ b/recipes/wip/util-linux/recipe.toml @@ -1,4 +1,4 @@ -#TODO probably need a script for custom build options +#TODO compilation error [source] tar = "https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.39/util-linux-2.39.tar.xz" [build] diff --git a/recipes/wip/valgrind/recipe.toml b/recipes/wip/valgrind/recipe.toml index 65962b2e..720d81fa 100644 --- a/recipes/wip/valgrind/recipe.toml +++ b/recipes/wip/valgrind/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO port to redox [source] tar = "https://sourceware.org/pub/valgrind/valgrind-3.22.0.tar.bz2" [build] diff --git a/recipes/wip/veloren/recipe.toml b/recipes/wip/veloren/recipe.toml index 96807c87..e1db8ba7 100644 --- a/recipes/wip/veloren/recipe.toml +++ b/recipes/wip/veloren/recipe.toml @@ -10,6 +10,6 @@ dependencies = [ "atk", "gdk-pixbuf", "gtk3", - "eudev3", + "eudev", "mesa", ] diff --git a/recipes/wip/verrou/recipe.toml b/recipes/wip/verrou/recipe.toml index 674ae38a..0417a70d 100644 --- a/recipes/wip/verrou/recipe.toml +++ b/recipes/wip/verrou/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO port to redox [source] tar = "https://github.com/edf-hpc/verrou/releases/download/v2.5.0/valgrind-3.21.0_verrou-2.5.0.tar.gz" [build] diff --git a/recipes/wip/vincenzo/recipe.toml b/recipes/wip/vincenzo/recipe.toml index bc9c0146..e01c47e0 100644 --- a/recipes/wip/vincenzo/recipe.toml +++ b/recipes/wip/vincenzo/recipe.toml @@ -2,4 +2,7 @@ [source] git = "https://github.com/gabrieldemian/vincenzo" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages vcz +""" From df08998fdcc35fe7f0f5d14adb766e1a88d0d084 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 21:42:17 +0000 Subject: [PATCH 1418/3180] update recipes --- recipes/wip/vincenzo/recipe.toml | 2 +- recipes/wip/viu/recipe.toml | 2 +- recipes/wip/watchexec/recipe.toml | 5 ++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/recipes/wip/vincenzo/recipe.toml b/recipes/wip/vincenzo/recipe.toml index e01c47e0..db93c07a 100644 --- a/recipes/wip/vincenzo/recipe.toml +++ b/recipes/wip/vincenzo/recipe.toml @@ -1,4 +1,4 @@ -#TODO rustc-serialize crate error +#TODO compiled but not tested [source] git = "https://github.com/gabrieldemian/vincenzo" [build] diff --git a/recipes/wip/viu/recipe.toml b/recipes/wip/viu/recipe.toml index e0e7237b..f4aad872 100644 --- a/recipes/wip/viu/recipe.toml +++ b/recipes/wip/viu/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/atanunq/viu" rev = "af8f2ae90040baeeb24b92adedc645edc4ea0e85" diff --git a/recipes/wip/watchexec/recipe.toml b/recipes/wip/watchexec/recipe.toml index 7aa961c7..11705ad4 100644 --- a/recipes/wip/watchexec/recipe.toml +++ b/recipes/wip/watchexec/recipe.toml @@ -3,4 +3,7 @@ git = "https://github.com/watchexec/watchexec" rev = "a72ff0e1426ff95f76788bbd23e1a7473068f1e0" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages watchexec-cli +""" From b63a6f986bd51b2fa4bb67fcd221c75e37069d91 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 21:49:55 +0000 Subject: [PATCH 1419/3180] update recipe --- recipes/wip/watchexec/recipe.toml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/watchexec/recipe.toml b/recipes/wip/watchexec/recipe.toml index 11705ad4..0dedb846 100644 --- a/recipes/wip/watchexec/recipe.toml +++ b/recipes/wip/watchexec/recipe.toml @@ -1,7 +1,6 @@ -#TODO Not compiled or tested +#TODO xdg-home and nix crates error [source] git = "https://github.com/watchexec/watchexec" -rev = "a72ff0e1426ff95f76788bbd23e1a7473068f1e0" [build] template = "custom" script = """ From 36d4ada4ea9fb6bff8ce505a5c0896bcb7032409 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 22:00:14 +0000 Subject: [PATCH 1420/3180] update recipe --- recipes/wip/wezterm/recipe.toml | 3 --- 1 file changed, 3 deletions(-) diff --git a/recipes/wip/wezterm/recipe.toml b/recipes/wip/wezterm/recipe.toml index 45dd51fc..0c0825b9 100644 --- a/recipes/wip/wezterm/recipe.toml +++ b/recipes/wip/wezterm/recipe.toml @@ -3,6 +3,3 @@ git = "https://github.com/wez/wezterm" [build] template = "cargo" -dependencies = [ - "libwayland", -] From 46853091da25c9e3b0e6e3c068d67bb3d5b7b852 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 22:26:29 +0000 Subject: [PATCH 1421/3180] update recipes --- recipes/wip/wezterm/recipe.toml | 7 ++++++- recipes/wip/wireguard-rs/recipe.toml | 2 +- recipes/wip/wpaperd/recipe.toml | 2 +- recipes/wip/x11proto/recipe.toml | 2 +- recipes/wip/x264/recipe.toml | 2 +- recipes/wip/xaos/recipe.toml | 1 - recipes/wip/xcb-util/recipe.toml | 3 +++ 7 files changed, 13 insertions(+), 6 deletions(-) diff --git a/recipes/wip/wezterm/recipe.toml b/recipes/wip/wezterm/recipe.toml index 0c0825b9..28f972a1 100644 --- a/recipes/wip/wezterm/recipe.toml +++ b/recipes/wip/wezterm/recipe.toml @@ -1,5 +1,10 @@ +#TODO probably wrong script, see https://wezfurlong.org/wezterm/install/source.html #TODO Require Wayland [source] git = "https://github.com/wez/wezterm" [build] -template = "cargo" +template = "custom" +script = """ +./get-deps +cookbook_cargo_packages wezterm +""" diff --git a/recipes/wip/wireguard-rs/recipe.toml b/recipes/wip/wireguard-rs/recipe.toml index fad7fde1..9722b4af 100644 --- a/recipes/wip/wireguard-rs/recipe.toml +++ b/recipes/wip/wireguard-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO update mio to 0.8 (after cargo update) [source] git = "https://git.zx2c4.com/wireguard-rs" [build] diff --git a/recipes/wip/wpaperd/recipe.toml b/recipes/wip/wpaperd/recipe.toml index 306dd051..83a7423c 100644 --- a/recipes/wip/wpaperd/recipe.toml +++ b/recipes/wip/wpaperd/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make libxkbcommon work [source] git = "https://github.com/danyspin97/wpaperd" rev = "a99e4e3d8c05a933a3f428329c2883e635feca14" diff --git a/recipes/wip/x11proto/recipe.toml b/recipes/wip/x11proto/recipe.toml index fb7df948..b02e686f 100644 --- a/recipes/wip/x11proto/recipe.toml +++ b/recipes/wip/x11proto/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] tar = "https://www.x.org/releases/individual/proto/xorgproto-2023.2.tar.xz" [build] diff --git a/recipes/wip/x264/recipe.toml b/recipes/wip/x264/recipe.toml index d606c949..2bf5be8b 100644 --- a/recipes/wip/x264/recipe.toml +++ b/recipes/wip/x264/recipe.toml @@ -1,4 +1,4 @@ -#TODO the redox target is not supported on the configure +#TODO the redox target is not supported on the configure script [source] git = "https://code.videolan.org/videolan/x264" [build] diff --git a/recipes/wip/xaos/recipe.toml b/recipes/wip/xaos/recipe.toml index f5fb5b79..a13d2112 100644 --- a/recipes/wip/xaos/recipe.toml +++ b/recipes/wip/xaos/recipe.toml @@ -6,6 +6,5 @@ rev = "7f36177f32a23eea88911afb90878046912d7e2d" template = "custom" dependencies = [ "qt6-base", - "qt5-tools", "mesa", ] diff --git a/recipes/wip/xcb-util/recipe.toml b/recipes/wip/xcb-util/recipe.toml index d3859101..9b4d79f1 100644 --- a/recipes/wip/xcb-util/recipe.toml +++ b/recipes/wip/xcb-util/recipe.toml @@ -3,3 +3,6 @@ tar = "https://www.x.org/releases/individual/lib/xcb-util-0.4.1.tar.xz" [build] template = "configure" +dependencies = [ + "libxcb", +] From df1c1082ce68bc755b05e3a730a74f4427178578 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 22:27:34 +0000 Subject: [PATCH 1422/3180] update recipes --- recipes/wip/xcb-util/recipe.toml | 2 +- recipes/wip/xcp/recipe.toml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/xcb-util/recipe.toml b/recipes/wip/xcb-util/recipe.toml index 9b4d79f1..0a264761 100644 --- a/recipes/wip/xcb-util/recipe.toml +++ b/recipes/wip/xcb-util/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make libxcb work [source] tar = "https://www.x.org/releases/individual/lib/xcb-util-0.4.1.tar.xz" [build] diff --git a/recipes/wip/xcp/recipe.toml b/recipes/wip/xcp/recipe.toml index c64bd2cd..95bb2153 100644 --- a/recipes/wip/xcp/recipe.toml +++ b/recipes/wip/xcp/recipe.toml @@ -1,6 +1,5 @@ #TODO xattr crate error [source] git = "https://github.com/tarka/xcp" -rev = "7713084d0ea1e683b6e97fdee8db5c353ba1f37b" [build] template = "cargo" From 02e74a8ebdbd2c09b1ac23d2c40aa06a177be90d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 22:46:10 +0000 Subject: [PATCH 1423/3180] update recipes --- recipes/wip/xcp/recipe.toml | 2 +- recipes/wip/xh/recipe.toml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/xcp/recipe.toml b/recipes/wip/xcp/recipe.toml index 95bb2153..e3a7a91b 100644 --- a/recipes/wip/xcp/recipe.toml +++ b/recipes/wip/xcp/recipe.toml @@ -1,4 +1,4 @@ -#TODO xattr crate error +#TODO compiled but not tested [source] git = "https://github.com/tarka/xcp" [build] diff --git a/recipes/wip/xh/recipe.toml b/recipes/wip/xh/recipe.toml index d0e3343d..b65b5319 100644 --- a/recipes/wip/xh/recipe.toml +++ b/recipes/wip/xh/recipe.toml @@ -1,6 +1,5 @@ #TODO compiled but not tested (after a patch on the ring crate and cargo update) [source] git = "https://github.com/ducaale/xh" -rev = "b694c7776b4e016cd5dfcbff42be6729fbdaa0af" [build] template = "cargo" From 2d834add879b09b22f57ea804994fd5080fe9e69 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 23:20:59 +0000 Subject: [PATCH 1424/3180] update recipes --- recipes/wip/xh/recipe.toml | 2 +- recipes/wip/xiu/recipe.toml | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/wip/xh/recipe.toml b/recipes/wip/xh/recipe.toml index b65b5319..9d65aecc 100644 --- a/recipes/wip/xh/recipe.toml +++ b/recipes/wip/xh/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested (after a patch on the ring crate and cargo update) +#TODO network-interface crate error (after cargo update) [source] git = "https://github.com/ducaale/xh" [build] diff --git a/recipes/wip/xiu/recipe.toml b/recipes/wip/xiu/recipe.toml index 73bb398a..74ad8dee 100644 --- a/recipes/wip/xiu/recipe.toml +++ b/recipes/wip/xiu/recipe.toml @@ -1,7 +1,6 @@ -#TODO OpenSSL error on program source code (after cargo update) +#TODO openssl error (after cargo update) [source] git = "https://github.com/harlanc/xiu" -rev = "80f20d7056d7b9a1de239c6a46ce45e5043e916c" [build] template = "custom" dependencies = [ From 0ae535ee5a5ec0a3a0fbc887e9f7b97737003a2a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Dec 2023 23:27:58 +0000 Subject: [PATCH 1425/3180] update recipes --- recipes/wip/xiu/recipe.toml | 2 +- recipes/wip/xorriso/recipe.toml | 2 +- recipes/wip/xplr/recipe.toml | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/recipes/wip/xiu/recipe.toml b/recipes/wip/xiu/recipe.toml index 74ad8dee..608310b8 100644 --- a/recipes/wip/xiu/recipe.toml +++ b/recipes/wip/xiu/recipe.toml @@ -1,4 +1,4 @@ -#TODO openssl error (after cargo update) +#TODO webrtc-util crate error (after cargo update) [source] git = "https://github.com/harlanc/xiu" [build] diff --git a/recipes/wip/xorriso/recipe.toml b/recipes/wip/xorriso/recipe.toml index 8a484408..119d299a 100644 --- a/recipes/wip/xorriso/recipe.toml +++ b/recipes/wip/xorriso/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO can't recognize the redox target [source] tar = "https://www.gnu.org/software/xorriso/xorriso-1.5.6.pl02.tar.gz" [build] diff --git a/recipes/wip/xplr/recipe.toml b/recipes/wip/xplr/recipe.toml index 4d20e045..85d594b9 100644 --- a/recipes/wip/xplr/recipe.toml +++ b/recipes/wip/xplr/recipe.toml @@ -1,6 +1,5 @@ -#TODO Not compiled or tested +#TODO tuikit crate error [source] git = "https://github.com/sayanarijit/xplr" -rev = "8af1647c090d84416feb77a9c9874629433c8314" [build] template = "cargo" From db7ab9673507ab9737f2bed4bce5aad49594b307 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 24 Dec 2023 00:15:36 +0000 Subject: [PATCH 1426/3180] update recipes --- recipes/wip/yaydl/recipe.toml | 2 +- recipes/wip/yazi/recipe.toml | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/wip/yaydl/recipe.toml b/recipes/wip/yaydl/recipe.toml index 8671c7ac..df880e5f 100644 --- a/recipes/wip/yaydl/recipe.toml +++ b/recipes/wip/yaydl/recipe.toml @@ -1,4 +1,4 @@ -#TODO compilation error (after cargo update and a patch on the ring crate) +#TODO compilation error (after cargo update) [source] git = "https://github.com/dertuxmalwieder/yaydl" [build] diff --git a/recipes/wip/yazi/recipe.toml b/recipes/wip/yazi/recipe.toml index 917b806e..d9e016db 100644 --- a/recipes/wip/yazi/recipe.toml +++ b/recipes/wip/yazi/recipe.toml @@ -2,4 +2,7 @@ [source] git = "https://github.com/sxyazi/yazi" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages yazi-fm +""" From b6ee4bfa76e1a97fec954de3ae5fcff0b68f0003 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 24 Dec 2023 00:26:35 +0000 Subject: [PATCH 1427/3180] update recipes --- recipes/wip/yazi/recipe.toml | 2 +- recipes/wip/youtube-tui/recipe.toml | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/wip/yazi/recipe.toml b/recipes/wip/yazi/recipe.toml index d9e016db..c35a14cd 100644 --- a/recipes/wip/yazi/recipe.toml +++ b/recipes/wip/yazi/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO trash and mlua-sys crate errors [source] git = "https://github.com/sxyazi/yazi" [build] diff --git a/recipes/wip/youtube-tui/recipe.toml b/recipes/wip/youtube-tui/recipe.toml index d722c369..13d4bae3 100644 --- a/recipes/wip/youtube-tui/recipe.toml +++ b/recipes/wip/youtube-tui/recipe.toml @@ -1,4 +1,4 @@ -#TODO compilation error +#TODO [source] git = "https://github.com/Siriusmart/youtube-tui" rev = "f321f7c1e9b41644b976ea8672807c3062908c5c" @@ -6,7 +6,6 @@ rev = "f321f7c1e9b41644b976ea8672807c3062908c5c" template = "custom" dependencies = [ "openssl1", - "mpv", ] script = """ cookbook_cargo --no-default-features From cb2524892ff06e235ae3743299c9ec767dfdc1e9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 24 Dec 2023 00:30:48 +0000 Subject: [PATCH 1428/3180] update recipes --- recipes/wip/youtube-tui/recipe.toml | 2 +- recipes/wip/{zellig => zellij}/recipe.toml | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename recipes/wip/{zellig => zellij}/recipe.toml (100%) diff --git a/recipes/wip/youtube-tui/recipe.toml b/recipes/wip/youtube-tui/recipe.toml index 13d4bae3..960b6a71 100644 --- a/recipes/wip/youtube-tui/recipe.toml +++ b/recipes/wip/youtube-tui/recipe.toml @@ -1,4 +1,4 @@ -#TODO +#TODO openssl error [source] git = "https://github.com/Siriusmart/youtube-tui" rev = "f321f7c1e9b41644b976ea8672807c3062908c5c" diff --git a/recipes/wip/zellig/recipe.toml b/recipes/wip/zellij/recipe.toml similarity index 100% rename from recipes/wip/zellig/recipe.toml rename to recipes/wip/zellij/recipe.toml From c839113428c2eaf0008aaae7f2a1ffb70449a291 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 24 Dec 2023 00:32:50 +0000 Subject: [PATCH 1429/3180] update recipe --- recipes/wip/zellij/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/wip/zellij/recipe.toml b/recipes/wip/zellij/recipe.toml index 54bc606b..4cc676f2 100644 --- a/recipes/wip/zellij/recipe.toml +++ b/recipes/wip/zellij/recipe.toml @@ -1,6 +1,5 @@ #TODO os::QueryIter [source] git = "https://github.com/zellij-org/zellij" -rev = "d9b956bc40cd1b526b683291d3d55673a191b5a2" [build] template = "cargo" From 03fe0f18bd555dc32c8206370efe607532184e09 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 24 Dec 2023 00:53:11 +0000 Subject: [PATCH 1430/3180] update recipes --- recipes/wip/zellij/recipe.toml | 2 +- recipes/wip/zenith/recipe.toml | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/recipes/wip/zellij/recipe.toml b/recipes/wip/zellij/recipe.toml index 4cc676f2..ead436fc 100644 --- a/recipes/wip/zellij/recipe.toml +++ b/recipes/wip/zellij/recipe.toml @@ -1,4 +1,4 @@ -#TODO os::QueryIter +#TODO openssl-sys crate error (after cargo update) [source] git = "https://github.com/zellij-org/zellij" [build] diff --git a/recipes/wip/zenith/recipe.toml b/recipes/wip/zenith/recipe.toml index 3dcea592..61e6a809 100644 --- a/recipes/wip/zenith/recipe.toml +++ b/recipes/wip/zenith/recipe.toml @@ -3,7 +3,4 @@ git = "https://github.com/bvaisvil/zenith" rev = "798999e2563e25636fef6c1a587f949ed264ad41" [build] -template = "build-system" -dependencies = [ - "library1", -] +template = "cargo" From 872fab620543017507117293ac9a5b5dc3216f1e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 24 Dec 2023 00:55:47 +0000 Subject: [PATCH 1431/3180] update recipe --- recipes/wip/zenith/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/wip/zenith/recipe.toml b/recipes/wip/zenith/recipe.toml index 61e6a809..7cbeb6e4 100644 --- a/recipes/wip/zenith/recipe.toml +++ b/recipes/wip/zenith/recipe.toml @@ -1,6 +1,5 @@ #TODO Not compiled or tested [source] git = "https://github.com/bvaisvil/zenith" -rev = "798999e2563e25636fef6c1a587f949ed264ad41" [build] template = "cargo" From de7043e1fa4891c8621f9183e517676cea3ee8fd Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 24 Dec 2023 01:13:30 +0000 Subject: [PATCH 1432/3180] update recipes --- recipes/wip/zenith/recipe.toml | 2 +- recipes/wip/zet/recipe.toml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/zenith/recipe.toml b/recipes/wip/zenith/recipe.toml index 7cbeb6e4..3e425ebe 100644 --- a/recipes/wip/zenith/recipe.toml +++ b/recipes/wip/zenith/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO async-io and rustix crate errors (after cargo update) [source] git = "https://github.com/bvaisvil/zenith" [build] diff --git a/recipes/wip/zet/recipe.toml b/recipes/wip/zet/recipe.toml index 72455b52..25c1df91 100644 --- a/recipes/wip/zet/recipe.toml +++ b/recipes/wip/zet/recipe.toml @@ -1,6 +1,5 @@ #TODO compiled after cargo update, not tested [source] git = "https://github.com/yarrow/zet" -rev = "c1ee170d6a910650a668ad8180dd40f1787d1733" [build] template = "cargo" From 8c19906e78f1eae5799c459d2839560ade32716f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 24 Dec 2023 01:27:45 +0000 Subject: [PATCH 1433/3180] update recipes --- recipes/wip/zet/recipe.toml | 2 +- recipes/wip/zlib-ng/recipe.toml | 2 +- recipes/wip/zola/recipe.toml | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/recipes/wip/zet/recipe.toml b/recipes/wip/zet/recipe.toml index 25c1df91..02ec04cd 100644 --- a/recipes/wip/zet/recipe.toml +++ b/recipes/wip/zet/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled after cargo update, not tested +#TODO compiled but not tested [source] git = "https://github.com/yarrow/zet" [build] diff --git a/recipes/wip/zlib-ng/recipe.toml b/recipes/wip/zlib-ng/recipe.toml index ce3cefbf..33171a7e 100644 --- a/recipes/wip/zlib-ng/recipe.toml +++ b/recipes/wip/zlib-ng/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/zlib-ng/zlib-ng" rev = "2bc66887ddc0c50776811a27be68e34430d665e1" diff --git a/recipes/wip/zola/recipe.toml b/recipes/wip/zola/recipe.toml index bc9eb927..6ff72a66 100644 --- a/recipes/wip/zola/recipe.toml +++ b/recipes/wip/zola/recipe.toml @@ -1,6 +1,5 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/getzola/zola" -rev = "77c87f5e2f20ee90cf73cc98fa5f3fb096bcfffd" [build] template = "cargo" From 1cbf3731f5e4c4e74bba1f04350772c79e14e3cf Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 24 Dec 2023 01:32:35 +0000 Subject: [PATCH 1434/3180] remove cosmic-epoch --- recipes/wip/cosmic-epoch/recipe.toml | 20 -------------------- 1 file changed, 20 deletions(-) delete mode 100644 recipes/wip/cosmic-epoch/recipe.toml diff --git a/recipes/wip/cosmic-epoch/recipe.toml b/recipes/wip/cosmic-epoch/recipe.toml deleted file mode 100644 index 6fbc5413..00000000 --- a/recipes/wip/cosmic-epoch/recipe.toml +++ /dev/null @@ -1,20 +0,0 @@ -#TODO missing script for "just", see https://github.com/pop-os/cosmic-epoch#testing -#TODO Dependencies will change after alpha? -[source] -git = "https://github.com/pop-os/cosmic-epoch" -[build] -template = "custom" -dependencies = [ - "mesa", - "freetype2", - "fontconfig", - "expat", - "dbus", - "gtk4", - "seatd", - "eudev3", - "libinput", - "libwayland", - "libxkbcommon", - "pipewire", -] From b8df5c8f1218277d7e1af222a1b97ac30cde5fb8 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 24 Dec 2023 02:51:08 +0000 Subject: [PATCH 1435/3180] new recipes --- recipes/wip/ast-grep/recipe.toml | 9 +++++++++ recipes/wip/lldap/recipe.toml | 8 ++++++++ recipes/wip/oculante/recipe.toml | 12 ++++++++++++ recipes/wip/pinnacle/recipe.toml | 15 +++++++++++++++ 4 files changed, 44 insertions(+) create mode 100644 recipes/wip/ast-grep/recipe.toml create mode 100644 recipes/wip/lldap/recipe.toml create mode 100644 recipes/wip/oculante/recipe.toml create mode 100644 recipes/wip/pinnacle/recipe.toml diff --git a/recipes/wip/ast-grep/recipe.toml b/recipes/wip/ast-grep/recipe.toml new file mode 100644 index 00000000..674f09eb --- /dev/null +++ b/recipes/wip/ast-grep/recipe.toml @@ -0,0 +1,9 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ast-grep/ast-grep" +rev = "74c54fc3e322c6017bc043e199420644ad961ff5" +[build] +template = "custom" +script = """ +cookbook_cargo_packages ast-grep +""" diff --git a/recipes/wip/lldap/recipe.toml b/recipes/wip/lldap/recipe.toml new file mode 100644 index 00000000..99a5b05f --- /dev/null +++ b/recipes/wip/lldap/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/lldap/lldap" +[build] +template = "custom" +script = """ +cookbook_cargo_packages lldap +""" diff --git a/recipes/wip/oculante/recipe.toml b/recipes/wip/oculante/recipe.toml new file mode 100644 index 00000000..f538a9d2 --- /dev/null +++ b/recipes/wip/oculante/recipe.toml @@ -0,0 +1,12 @@ +#TODO Not compiled or tested +#TODO probably missing dependencies +[source] +git = "https://github.com/woelper/oculante" +rev = "25b6ae94f743988be216dfd341dde159337d193d" +[build] +template = "cargo" +dependencies = [ + "libxcb", + "libxfixes", + "gtk3", +] diff --git a/recipes/wip/pinnacle/recipe.toml b/recipes/wip/pinnacle/recipe.toml new file mode 100644 index 00000000..12baefb2 --- /dev/null +++ b/recipes/wip/pinnacle/recipe.toml @@ -0,0 +1,15 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/pinnacle-comp/pinnacle" +[build] +template = "custom" +dependencies = [ + "libwayland", + "libxkbcommon", + "libinput", + "libeudev", + "seatd", +] +script = """ +cookbook_cargo_packages pinnacle +""" From 47b7acca312137f2b8e644f575cf81c27903131f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 24 Dec 2023 16:57:21 +0000 Subject: [PATCH 1436/3180] update recipes --- recipes/wip/cosmic-term/recipe.toml | 2 +- recipes/wip/flamegraph/recipe.toml | 8 ++++++++ recipes/wip/gobang/recipe.toml | 2 +- recipes/wip/mimic/recipe.toml | 2 +- recipes/wip/news-rs/recipe.toml | 2 +- recipes/wip/nsh/recipe.toml | 2 +- recipes/wip/pipr/recipe.toml | 2 +- recipes/wip/pure/recipe.toml | 10 ++++++++++ recipes/wip/ruffle/recipe.toml | 1 + 9 files changed, 25 insertions(+), 6 deletions(-) create mode 100644 recipes/wip/flamegraph/recipe.toml create mode 100644 recipes/wip/pure/recipe.toml diff --git a/recipes/wip/cosmic-term/recipe.toml b/recipes/wip/cosmic-term/recipe.toml index 5ee76928..199d73c7 100644 --- a/recipes/wip/cosmic-term/recipe.toml +++ b/recipes/wip/cosmic-term/recipe.toml @@ -1,4 +1,4 @@ -#TODO mio crate error +#TODO update mio to 0.8 [source] git = "https://github.com/pop-os/cosmic-term" [build] diff --git a/recipes/wip/flamegraph/recipe.toml b/recipes/wip/flamegraph/recipe.toml new file mode 100644 index 00000000..21a22105 --- /dev/null +++ b/recipes/wip/flamegraph/recipe.toml @@ -0,0 +1,8 @@ +#TODO require DTrace support +[source] +git = "https://github.com/flamegraph-rs/flamegraph" +[build] +template = "custom" +script = """ +cookbook_cargo_packages flamegraph +""" diff --git a/recipes/wip/gobang/recipe.toml b/recipes/wip/gobang/recipe.toml index 6a20b6d0..275810a1 100644 --- a/recipes/wip/gobang/recipe.toml +++ b/recipes/wip/gobang/recipe.toml @@ -1,4 +1,4 @@ -#TODO mio crate error (after cargo update and patch on ring) +#TODO update mio to 0.8 (after cargo update and patch on ring) [source] git = "https://github.com/TaKO8Ki/gobang" [build] diff --git a/recipes/wip/mimic/recipe.toml b/recipes/wip/mimic/recipe.toml index 1b3bb273..7122d7c4 100644 --- a/recipes/wip/mimic/recipe.toml +++ b/recipes/wip/mimic/recipe.toml @@ -1,4 +1,4 @@ -#TODO mio crate error (even after cargo update) +#TODO update mio to 0.8 [source] git = "https://github.com/jawline/Mimic" [build] diff --git a/recipes/wip/news-rs/recipe.toml b/recipes/wip/news-rs/recipe.toml index 8f5b6ef2..44177d64 100644 --- a/recipes/wip/news-rs/recipe.toml +++ b/recipes/wip/news-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO mio crate error (after cargo update) +#TODO update mio to 0.8 (after cargo update) [source] git = "https://github.com/Atticus64/news" [build] diff --git a/recipes/wip/nsh/recipe.toml b/recipes/wip/nsh/recipe.toml index 69a1e4fd..50c41198 100644 --- a/recipes/wip/nsh/recipe.toml +++ b/recipes/wip/nsh/recipe.toml @@ -1,4 +1,4 @@ -#TODO mio crate error +#TODO update mio to 0.8 [source] git = "https://github.com/nuta/nsh" [build] diff --git a/recipes/wip/pipr/recipe.toml b/recipes/wip/pipr/recipe.toml index 33e24f7d..08ca75d9 100644 --- a/recipes/wip/pipr/recipe.toml +++ b/recipes/wip/pipr/recipe.toml @@ -1,4 +1,4 @@ -#TODO mio crate error (after cargo update) +#TODO update mio to 0.8 (after cargo update) [source] git = "https://github.com/Elkowar/pipr" [build] diff --git a/recipes/wip/pure/recipe.toml b/recipes/wip/pure/recipe.toml new file mode 100644 index 00000000..dfd1da30 --- /dev/null +++ b/recipes/wip/pure/recipe.toml @@ -0,0 +1,10 @@ +#TODO move to proper category +[source] +git = "https://github.com/sindresorhus/pure" +rev = "87e6f5dd4c793f6d980532205aaefe196780606f" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/home/user/.zsh/pure +cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/home/user/.zsh/pure +""" diff --git a/recipes/wip/ruffle/recipe.toml b/recipes/wip/ruffle/recipe.toml index 3b794390..207b03bb 100644 --- a/recipes/wip/ruffle/recipe.toml +++ b/recipes/wip/ruffle/recipe.toml @@ -5,6 +5,7 @@ git = "https://github.com/ruffle-rs/ruffle" template = "custom" dependencies = [ "openssl1", + "gtk3", ] script = """ cookbook_cargo_packages ruffle_desktop From f1336e913105fb4f54641118e09c127ef9232fcb Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 27 Dec 2023 22:21:18 +0000 Subject: [PATCH 1437/3180] add fuga --- recipes/wip/fuga/recipe.toml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 recipes/wip/fuga/recipe.toml diff --git a/recipes/wip/fuga/recipe.toml b/recipes/wip/fuga/recipe.toml new file mode 100644 index 00000000..56c8be5d --- /dev/null +++ b/recipes/wip/fuga/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/liebe-magi/fuga" +[build] +template = "custom" +script = """ +cookbook_cargo_packages fuga +""" From 55909038718065a152cf5be4fac9d86c6af7661d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 28 Dec 2023 00:57:47 +0000 Subject: [PATCH 1438/3180] new recipes --- recipes/wip/moon/recipe.toml | 9 +++++++++ recipes/wip/proto/recipe.toml | 8 ++++++++ 2 files changed, 17 insertions(+) create mode 100644 recipes/wip/moon/recipe.toml create mode 100644 recipes/wip/proto/recipe.toml diff --git a/recipes/wip/moon/recipe.toml b/recipes/wip/moon/recipe.toml new file mode 100644 index 00000000..47d023d9 --- /dev/null +++ b/recipes/wip/moon/recipe.toml @@ -0,0 +1,9 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/moonrepo/moon" +rev = "2d60d2cff16b37063ec5242451d086871bce7fd5" +[build] +template = "custom" +script = """ +cookbook_cargo_packages moon_cli +""" diff --git a/recipes/wip/proto/recipe.toml b/recipes/wip/proto/recipe.toml new file mode 100644 index 00000000..dae4a215 --- /dev/null +++ b/recipes/wip/proto/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/moonrepo/proto/releases/download/v0.26.2/source.tar.gz" +[build] +template = "custom" +script = """ +cookbook_cargo_packages proto_cli +""" From ff012fe81c91dcadc45a1d0c766f7611ab2d82fd Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 28 Dec 2023 03:44:10 +0000 Subject: [PATCH 1439/3180] update ruby version --- recipes/wip/ruby/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/wip/ruby/recipe.toml b/recipes/wip/ruby/recipe.toml index 389fb621..ec366718 100644 --- a/recipes/wip/ruby/recipe.toml +++ b/recipes/wip/ruby/recipe.toml @@ -1,6 +1,6 @@ #TODO compilation error [source] -tar = "https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.2.tar.gz" +tar = "https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0.tar.gz" [build] template = "configure" dependencies = [ @@ -8,4 +8,4 @@ dependencies = [ "zlib", "libyaml", "libffi", -] \ No newline at end of file +] From a9b3369fa7e147cc9ba5f927a930a3bddf9d282e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 29 Dec 2023 09:37:56 +0000 Subject: [PATCH 1440/3180] new recipes --- recipes/wip/nakamoto-wallet/recipe.toml | 8 ++++++++ recipes/wip/weylus/recipe.toml | 26 +++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 recipes/wip/nakamoto-wallet/recipe.toml create mode 100644 recipes/wip/weylus/recipe.toml diff --git a/recipes/wip/nakamoto-wallet/recipe.toml b/recipes/wip/nakamoto-wallet/recipe.toml new file mode 100644 index 00000000..e9e2230f --- /dev/null +++ b/recipes/wip/nakamoto-wallet/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/cloudhead/nakamoto" +[build] +template = "custom" +script = """ +cookbook_cargo_packages nakamoto-wallet +""" diff --git a/recipes/wip/weylus/recipe.toml b/recipes/wip/weylus/recipe.toml new file mode 100644 index 00000000..6d7f2209 --- /dev/null +++ b/recipes/wip/weylus/recipe.toml @@ -0,0 +1,26 @@ +#TODO port to redox +#TODO build instructions - https://github.com/H-M-H/Weylus#building +[source] +git = "https://github.com/H-M-H/Weylus" +[build] +template = "custom" +dependencies = [ + "pango", + "gstreamer", + "dbus", + "libx11", + "libxext", + "libxft", + "libxinerama", + "libxcursor", + "libxi", + "libxv", + "libxfixes", + "libxtst", + "libxrender", + "libxrandr", + "libxcomposite", +] +script = """ +cookbook_cargo_packages weylus +""" From a71b13da6f9a9900e0f606cecc3a58788ca5cf6b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 29 Dec 2023 10:29:46 +0000 Subject: [PATCH 1441/3180] add satty --- recipes/wip/satty/recipe.toml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 recipes/wip/satty/recipe.toml diff --git a/recipes/wip/satty/recipe.toml b/recipes/wip/satty/recipe.toml new file mode 100644 index 00000000..7dfcb0a1 --- /dev/null +++ b/recipes/wip/satty/recipe.toml @@ -0,0 +1,20 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/gabm/Satty" +[build] +template = "custom" +dependencies = [ + "gtk4", + "libadwaita", + "cairo", + "glib", + "pango", + "gdk-pixbuf", +] +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/home/user/.local/share/applications +mkdir -pv "${COOKBOOK_STAGE}"/home/user/.local/share/icons/hicolor/scalable/apps +cp -rv "${COOKBOOK_SOURCE}"/satty.desktop "${COOKBOOK_STAGE}"/home/user/.local/share/applications +cp -rv "${COOKBOOK_SOURCE}"/assets/satty.svg "${COOKBOOK_STAGE}"/home/user/.local/share/icons/hicolor/scalable/apps +cookbook_cargo_packages satty +""" From 3b1cc7326a38e90f2f11ca7a8cb75f1ef5f956cc Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 30 Dec 2023 12:03:18 +0000 Subject: [PATCH 1442/3180] add tailspin --- recipes/wip/tailspin/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/wip/tailspin/recipe.toml diff --git a/recipes/wip/tailspin/recipe.toml b/recipes/wip/tailspin/recipe.toml new file mode 100644 index 00000000..8923eef1 --- /dev/null +++ b/recipes/wip/tailspin/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/bensadeh/tailspin" +[build] +template = "cargo" From eee3b462c5fda37a64747fae2661e404bd65de5b Mon Sep 17 00:00:00 2001 From: Ron Williams Date: Sat, 30 Dec 2023 21:48:32 -0800 Subject: [PATCH 1443/3180] add --nonstop option to not exit on error --- repo.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/repo.sh b/repo.sh index ecfff8ee..a0adabed 100755 --- a/repo.sh +++ b/repo.sh @@ -10,6 +10,9 @@ do if [ "$arg" == "--debug" ] then DEBUG=--debug + elif [ "$arg" == "--nonstop" ] + then + set +e else recipes+=" $arg" fi From c09a583daceaa292ec37d22086ba69570883a799 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 31 Dec 2023 21:05:13 +0000 Subject: [PATCH 1444/3180] new recipes --- recipes/wip/havn/recipe.toml | 5 +++++ recipes/wip/netscanner/recipe.toml | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 recipes/wip/havn/recipe.toml create mode 100644 recipes/wip/netscanner/recipe.toml diff --git a/recipes/wip/havn/recipe.toml b/recipes/wip/havn/recipe.toml new file mode 100644 index 00000000..ea1e8e55 --- /dev/null +++ b/recipes/wip/havn/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/mrjackwills/havn" +[build] +template = "cargo" diff --git a/recipes/wip/netscanner/recipe.toml b/recipes/wip/netscanner/recipe.toml new file mode 100644 index 00000000..8a5e2d7e --- /dev/null +++ b/recipes/wip/netscanner/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Chleba/netscanner" +[build] +template = "cargo" From 904ad8f61c516dcb415de5ed289bd8f9e1337de4 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 1 Jan 2024 17:02:58 +0000 Subject: [PATCH 1445/3180] update recipes --- recipes/wip/battleship-rs/recipe.toml | 2 +- recipes/wip/fuga/recipe.toml | 2 +- recipes/wip/havn/recipe.toml | 2 +- recipes/wip/nakamoto-wallet/recipe.toml | 2 +- recipes/wip/proto/recipe.toml | 4 ++-- recipes/wip/tailspin/recipe.toml | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/recipes/wip/battleship-rs/recipe.toml b/recipes/wip/battleship-rs/recipe.toml index d0bf3cdf..2c7344fa 100644 --- a/recipes/wip/battleship-rs/recipe.toml +++ b/recipes/wip/battleship-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/deepu105/battleship-rs" [build] diff --git a/recipes/wip/fuga/recipe.toml b/recipes/wip/fuga/recipe.toml index 56c8be5d..1376c997 100644 --- a/recipes/wip/fuga/recipe.toml +++ b/recipes/wip/fuga/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/liebe-magi/fuga" [build] diff --git a/recipes/wip/havn/recipe.toml b/recipes/wip/havn/recipe.toml index ea1e8e55..f8076d7b 100644 --- a/recipes/wip/havn/recipe.toml +++ b/recipes/wip/havn/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/mrjackwills/havn" [build] diff --git a/recipes/wip/nakamoto-wallet/recipe.toml b/recipes/wip/nakamoto-wallet/recipe.toml index e9e2230f..2fecaf7d 100644 --- a/recipes/wip/nakamoto-wallet/recipe.toml +++ b/recipes/wip/nakamoto-wallet/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO hidapi crate error - redox not supported (after cargo update) [source] git = "https://github.com/cloudhead/nakamoto" [build] diff --git a/recipes/wip/proto/recipe.toml b/recipes/wip/proto/recipe.toml index dae4a215..135771ae 100644 --- a/recipes/wip/proto/recipe.toml +++ b/recipes/wip/proto/recipe.toml @@ -1,6 +1,6 @@ -#TODO Not compiled or tested +#TODO fs-set-times crate error [source] -tar = "https://github.com/moonrepo/proto/releases/download/v0.26.2/source.tar.gz" +git = "https://github.com/moonrepo/proto" [build] template = "custom" script = """ diff --git a/recipes/wip/tailspin/recipe.toml b/recipes/wip/tailspin/recipe.toml index 8923eef1..288cd556 100644 --- a/recipes/wip/tailspin/recipe.toml +++ b/recipes/wip/tailspin/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/bensadeh/tailspin" [build] From 146531804ae5b902c85fd8eaea5270d71586b8b5 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 1 Jan 2024 17:17:04 +0000 Subject: [PATCH 1446/3180] update recipe --- recipes/wip/moon/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/wip/moon/recipe.toml b/recipes/wip/moon/recipe.toml index 47d023d9..6183cc5f 100644 --- a/recipes/wip/moon/recipe.toml +++ b/recipes/wip/moon/recipe.toml @@ -1,7 +1,6 @@ #TODO Not compiled or tested [source] git = "https://github.com/moonrepo/moon" -rev = "2d60d2cff16b37063ec5242451d086871bce7fd5" [build] template = "custom" script = """ From 3a5325ce4e9b881ceffe3c2bf5d2b6a4f2037f0c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 1 Jan 2024 18:41:25 +0000 Subject: [PATCH 1447/3180] update TODOs --- recipes/wip/ast-grep/recipe.toml | 2 +- recipes/wip/cotp/recipe.toml | 2 +- recipes/wip/lldap/recipe.toml | 2 +- recipes/wip/moon/recipe.toml | 2 +- recipes/wip/netscanner/recipe.toml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/recipes/wip/ast-grep/recipe.toml b/recipes/wip/ast-grep/recipe.toml index 674f09eb..9c99833d 100644 --- a/recipes/wip/ast-grep/recipe.toml +++ b/recipes/wip/ast-grep/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error [source] git = "https://github.com/ast-grep/ast-grep" rev = "74c54fc3e322c6017bc043e199420644ad961ff5" diff --git a/recipes/wip/cotp/recipe.toml b/recipes/wip/cotp/recipe.toml index fdd9c8df..4e51b826 100644 --- a/recipes/wip/cotp/recipe.toml +++ b/recipes/wip/cotp/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make dependencies work [source] git = "https://github.com/replydev/cotp" rev = "ac3c11dda7b66c0c70a4106b769b5db53becc558" diff --git a/recipes/wip/lldap/recipe.toml b/recipes/wip/lldap/recipe.toml index 99a5b05f..e97d8e79 100644 --- a/recipes/wip/lldap/recipe.toml +++ b/recipes/wip/lldap/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO program source code error (after cargo update and a patch on ring) [source] git = "https://github.com/lldap/lldap" [build] diff --git a/recipes/wip/moon/recipe.toml b/recipes/wip/moon/recipe.toml index 6183cc5f..c285304d 100644 --- a/recipes/wip/moon/recipe.toml +++ b/recipes/wip/moon/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO openssl-sys crate error (after cargo update) [source] git = "https://github.com/moonrepo/moon" [build] diff --git a/recipes/wip/netscanner/recipe.toml b/recipes/wip/netscanner/recipe.toml index 8a5e2d7e..8bcd33cc 100644 --- a/recipes/wip/netscanner/recipe.toml +++ b/recipes/wip/netscanner/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO pnet_sys crate error [source] git = "https://github.com/Chleba/netscanner" [build] From 907ef8f531f825312daabcd359b4efe674264e8e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 2 Jan 2024 03:21:43 +0000 Subject: [PATCH 1448/3180] add csvlens --- recipes/wip/csvlens/recipe.toml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 recipes/wip/csvlens/recipe.toml diff --git a/recipes/wip/csvlens/recipe.toml b/recipes/wip/csvlens/recipe.toml new file mode 100644 index 00000000..5b08178c --- /dev/null +++ b/recipes/wip/csvlens/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/YS-L/csvlens" +rev = "d023864c9959b4febc6c599266b1203130ca0d87" +[build] +template = "cargo" From 0195fc3a490a4dfe36926aa92e0cdcf5d4a18a0e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 2 Jan 2024 13:55:04 +0000 Subject: [PATCH 1449/3180] update recipe --- recipes/wip/csvlens/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/wip/csvlens/recipe.toml b/recipes/wip/csvlens/recipe.toml index 5b08178c..bf03a032 100644 --- a/recipes/wip/csvlens/recipe.toml +++ b/recipes/wip/csvlens/recipe.toml @@ -1,6 +1,5 @@ #TODO Not compiled or tested [source] git = "https://github.com/YS-L/csvlens" -rev = "d023864c9959b4febc6c599266b1203130ca0d87" [build] template = "cargo" From 15a7c3c9bdaa5915533bd5fc8712575372225f37 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 2 Jan 2024 14:06:08 +0000 Subject: [PATCH 1450/3180] update TODO --- recipes/wip/csvlens/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/csvlens/recipe.toml b/recipes/wip/csvlens/recipe.toml index bf03a032..a9c5707d 100644 --- a/recipes/wip/csvlens/recipe.toml +++ b/recipes/wip/csvlens/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/YS-L/csvlens" [build] From e92c36b6dfb9d7f32d9184e8987076b471e40f45 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 2 Jan 2024 15:38:35 +0000 Subject: [PATCH 1451/3180] update fyrox-template --- recipes/wip/fyrox-template/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/wip/fyrox-template/recipe.toml b/recipes/wip/fyrox-template/recipe.toml index aee6ccf1..bcc6ec0b 100644 --- a/recipes/wip/fyrox-template/recipe.toml +++ b/recipes/wip/fyrox-template/recipe.toml @@ -1,7 +1,6 @@ #TODO compiled but not tested [source] git = "https://github.com/FyroxEngine/Fyrox" -rev = "8d3e2e2cf29b7eefa78d14ff92156caeed88b955" [build] template = "custom" script = """ From 172af2af2dccb6d5dfdc89d9c4bd8c1714cff692 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 2 Jan 2024 16:42:49 +0000 Subject: [PATCH 1452/3180] update recipe --- recipes/wip/dust/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/wip/dust/recipe.toml b/recipes/wip/dust/recipe.toml index 83dc0457..62382ff0 100644 --- a/recipes/wip/dust/recipe.toml +++ b/recipes/wip/dust/recipe.toml @@ -1,6 +1,5 @@ #TODO compiled but not tested [source] git = "https://github.com/bootandy/dust" -rev = "b8aab2df979004d13c84006e378297af10e20777" [build] template = "cargo" From 312c14eb295aca6379fb148109b8043c7f4e38b3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 2 Jan 2024 17:12:51 +0000 Subject: [PATCH 1453/3180] update TODO --- recipes/wip/germ/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/germ/recipe.toml b/recipes/wip/germ/recipe.toml index 1d7f622f..c3a582da 100644 --- a/recipes/wip/germ/recipe.toml +++ b/recipes/wip/germ/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/volks73/germ" [build] From 49fbc27c84ebc2599684713ba669e194d1c381f7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 2 Jan 2024 17:42:51 +0000 Subject: [PATCH 1454/3180] update TODO --- recipes/wip/htmlq/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/htmlq/recipe.toml b/recipes/wip/htmlq/recipe.toml index e3de72dd..5c3c402f 100644 --- a/recipes/wip/htmlq/recipe.toml +++ b/recipes/wip/htmlq/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/mgdm/htmlq" [build] From 01b887f65b7a65cecd7276fbf83d8bd99477665e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 2 Jan 2024 17:58:41 +0000 Subject: [PATCH 1455/3180] update TODOs --- recipes/wip/hickory-dns/recipe.toml | 2 +- recipes/wip/humphrey/recipe.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/wip/hickory-dns/recipe.toml b/recipes/wip/hickory-dns/recipe.toml index ab799bfb..8d9e8b5c 100644 --- a/recipes/wip/hickory-dns/recipe.toml +++ b/recipes/wip/hickory-dns/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO wrong script [source] git = "https://github.com/hickory-dns/hickory-dns" rev = "408d0baca080d1b201cd33e616dc4abd160ef6c0" diff --git a/recipes/wip/humphrey/recipe.toml b/recipes/wip/humphrey/recipe.toml index ad98210c..a3dadf1d 100644 --- a/recipes/wip/humphrey/recipe.toml +++ b/recipes/wip/humphrey/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO wrong script [source] git = "https://github.com/w-henderson/Humphrey" [build] From 96bc19f37de8977d511b891dd5d4cf7a30982695 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 2 Jan 2024 18:12:08 +0000 Subject: [PATCH 1456/3180] update recipe --- recipes/wip/lowcharts/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/wip/lowcharts/recipe.toml b/recipes/wip/lowcharts/recipe.toml index 5bc8fed1..8c163313 100644 --- a/recipes/wip/lowcharts/recipe.toml +++ b/recipes/wip/lowcharts/recipe.toml @@ -1,6 +1,5 @@ #TODO compiled but not tested [source] git = "https://github.com/juan-leon/lowcharts" -rev = "94e3db44b5e20c155d4bf2348eb1293508772cdb" [build] template = "cargo" From 00c4604691fbe2bdf1aca5a09b0a01ef3f620571 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 2 Jan 2024 18:13:35 +0000 Subject: [PATCH 1457/3180] update TODO --- recipes/wip/lowcharts/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/lowcharts/recipe.toml b/recipes/wip/lowcharts/recipe.toml index 8c163313..3051b04b 100644 --- a/recipes/wip/lowcharts/recipe.toml +++ b/recipes/wip/lowcharts/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/juan-leon/lowcharts" [build] From e39360bee2f710dcde1f02616af910b692b52e34 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 2 Jan 2024 18:59:04 +0000 Subject: [PATCH 1458/3180] update recipe --- recipes/wip/pdu/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/wip/pdu/recipe.toml b/recipes/wip/pdu/recipe.toml index 3c682b73..c10635aa 100644 --- a/recipes/wip/pdu/recipe.toml +++ b/recipes/wip/pdu/recipe.toml @@ -1,6 +1,5 @@ #TODO compiled but not tested [source] git = "https://github.com/KSXGitHub/parallel-disk-usage" -rev = "2b59c3b8bf5b89c80ca478478a69e3e96c36af14" [build] template = "cargo" From 207b66b98de5e32ff82d12efb12669b5f2714570 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 2 Jan 2024 19:01:05 +0000 Subject: [PATCH 1459/3180] update TODO --- recipes/wip/pdu/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/pdu/recipe.toml b/recipes/wip/pdu/recipe.toml index c10635aa..f49d5d92 100644 --- a/recipes/wip/pdu/recipe.toml +++ b/recipes/wip/pdu/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO compilation error [source] git = "https://github.com/KSXGitHub/parallel-disk-usage" [build] From 1e63df15b469218daef2095a546907ba236d1ab6 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 2 Jan 2024 19:43:55 +0000 Subject: [PATCH 1460/3180] update TODO --- recipes/wip/rip/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/rip/recipe.toml b/recipes/wip/rip/recipe.toml index c7c2fe93..4b2fbd18 100644 --- a/recipes/wip/rip/recipe.toml +++ b/recipes/wip/rip/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/nivekuil/rip" [build] From 5e15cca76c11dbc7392cb06697fdac0f0a658e67 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 2 Jan 2024 19:54:27 +0000 Subject: [PATCH 1461/3180] update recipe --- recipes/wip/rnr/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/wip/rnr/recipe.toml b/recipes/wip/rnr/recipe.toml index ba84b817..fa70050c 100644 --- a/recipes/wip/rnr/recipe.toml +++ b/recipes/wip/rnr/recipe.toml @@ -1,6 +1,5 @@ #TODO compiled but not tested [source] git = "https://github.com/ismaelgv/rnr" -rev = "dfdf644ea8a4084ec73a349de68ef063eb47028f" [build] template = "cargo" From e003d48fc8c04a44b9550ed79d9c2c7af0a954d9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 2 Jan 2024 19:56:02 +0000 Subject: [PATCH 1462/3180] update TODO --- recipes/wip/rnr/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/rnr/recipe.toml b/recipes/wip/rnr/recipe.toml index fa70050c..64cd9e57 100644 --- a/recipes/wip/rnr/recipe.toml +++ b/recipes/wip/rnr/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/ismaelgv/rnr" [build] From 6ab13e96080f5fa0718d29bd93b72b4c21b15ca9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 3 Jan 2024 00:07:03 +0000 Subject: [PATCH 1463/3180] update recipe --- recipes/wip/topgrade/recipe.toml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/topgrade/recipe.toml b/recipes/wip/topgrade/recipe.toml index 9e819332..7009eb0e 100644 --- a/recipes/wip/topgrade/recipe.toml +++ b/recipes/wip/topgrade/recipe.toml @@ -1,6 +1,5 @@ -#TODO compiled but not tested +#TODO xdg-home crate error [source] git = "https://github.com/topgrade-rs/topgrade" -rev = "41c6d1cd9ab86254ffd29945b91e5e1b8eeebf64" [build] template = "cargo" From e7483f2e5424ecdcad91b6a5e3e4ab0c7e720316 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 3 Jan 2024 04:07:09 +0000 Subject: [PATCH 1464/3180] update TODOs --- recipes/wip/ascii-gen/recipe.toml | 2 +- recipes/wip/binocle/recipe.toml | 2 +- recipes/wip/chess-tui/recipe.toml | 2 +- recipes/wip/glicol-cli/recipe.toml | 2 +- recipes/wip/gyr/recipe.toml | 2 +- recipes/wip/igrep/recipe.toml | 2 +- recipes/wip/kibi/recipe.toml | 2 +- recipes/wip/mdbook/recipe.toml | 2 +- recipes/wip/oxipng/recipe.toml | 2 +- recipes/wip/presenterm/recipe.toml | 2 +- recipes/wip/rusty-rain/recipe.toml | 2 +- recipes/wip/spacer/recipe.toml | 2 +- recipes/wip/ttyper/recipe.toml | 2 +- recipes/wip/viu/recipe.toml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/recipes/wip/ascii-gen/recipe.toml b/recipes/wip/ascii-gen/recipe.toml index f798d009..b0b4ee05 100644 --- a/recipes/wip/ascii-gen/recipe.toml +++ b/recipes/wip/ascii-gen/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO move to proper category [source] git = "https://github.com/thed24/ascii-gen" [build] diff --git a/recipes/wip/binocle/recipe.toml b/recipes/wip/binocle/recipe.toml index 573f4d77..d6e91e91 100644 --- a/recipes/wip/binocle/recipe.toml +++ b/recipes/wip/binocle/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO "No suitable wgpu::Adapter found" error on execution [source] git = "https://github.com/sharkdp/binocle" rev = "f7e1bfe28938b5e289e8b353bf592aa3c26ca71f" diff --git a/recipes/wip/chess-tui/recipe.toml b/recipes/wip/chess-tui/recipe.toml index 095d9265..4589182a 100644 --- a/recipes/wip/chess-tui/recipe.toml +++ b/recipes/wip/chess-tui/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO move to proper category [source] git = "https://github.com/thomas-mauran/chess-tui" rev = "b61e559b26e4de63808509fc2626730a4ff31774" diff --git a/recipes/wip/glicol-cli/recipe.toml b/recipes/wip/glicol-cli/recipe.toml index 7b6ae425..e0ef61c9 100644 --- a/recipes/wip/glicol-cli/recipe.toml +++ b/recipes/wip/glicol-cli/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO failed to find output device [source] git = "https://github.com/glicol/glicol-cli" [build] diff --git a/recipes/wip/gyr/recipe.toml b/recipes/wip/gyr/recipe.toml index c15042a5..81436704 100644 --- a/recipes/wip/gyr/recipe.toml +++ b/recipes/wip/gyr/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO move to proper category [source] git = "https://git.sr.ht/~f9/gyr" rev = "3418fb65da1c181eade2f5f5284cf175cafb41ec" diff --git a/recipes/wip/igrep/recipe.toml b/recipes/wip/igrep/recipe.toml index e55b7b3a..0f7ac5f4 100644 --- a/recipes/wip/igrep/recipe.toml +++ b/recipes/wip/igrep/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO move to proper category [source] git = "https://github.com/konradsz/igrep" rev = "8588755641e64cd40e569893e03628cf83cfc59f" diff --git a/recipes/wip/kibi/recipe.toml b/recipes/wip/kibi/recipe.toml index 0686f853..5e90d535 100644 --- a/recipes/wip/kibi/recipe.toml +++ b/recipes/wip/kibi/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO move to proper category [source] git = "https://github.com/ilai-deutel/kibi" [build] diff --git a/recipes/wip/mdbook/recipe.toml b/recipes/wip/mdbook/recipe.toml index 8def8940..aeb1bbac 100644 --- a/recipes/wip/mdbook/recipe.toml +++ b/recipes/wip/mdbook/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO move to proper category [source] git = "https://github.com/rust-lang/mdBook" rev = "b7f46213c7df8f499eca0c82e7b41804cc15e369" diff --git a/recipes/wip/oxipng/recipe.toml b/recipes/wip/oxipng/recipe.toml index cbf17605..b6c8fd16 100644 --- a/recipes/wip/oxipng/recipe.toml +++ b/recipes/wip/oxipng/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO working but don't exit [source] git = "https://github.com/shssoichiro/oxipng" rev = "e1db84fd9745f3320c08b883e4942cd5b30b98a6" diff --git a/recipes/wip/presenterm/recipe.toml b/recipes/wip/presenterm/recipe.toml index fbf6212b..d6b16180 100644 --- a/recipes/wip/presenterm/recipe.toml +++ b/recipes/wip/presenterm/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO move to proper category [source] git = "https://github.com/mfontanini/presenterm" rev = "284db812aa876d43f3a7d7e8b96f75c72a9945fa" diff --git a/recipes/wip/rusty-rain/recipe.toml b/recipes/wip/rusty-rain/recipe.toml index 0b0760d1..e1e799b2 100644 --- a/recipes/wip/rusty-rain/recipe.toml +++ b/recipes/wip/rusty-rain/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO working but don't exit and hang the orbterm window [source] git = "https://github.com/cowboy8625/rusty-rain" [build] diff --git a/recipes/wip/spacer/recipe.toml b/recipes/wip/spacer/recipe.toml index 8893c7cc..701f19bc 100644 --- a/recipes/wip/spacer/recipe.toml +++ b/recipes/wip/spacer/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO move to proper category [source] git = "https://github.com/samwho/spacer" rev = "9c63225e9b93e1aa8b63e64c180ffd05b7dd4b02" diff --git a/recipes/wip/ttyper/recipe.toml b/recipes/wip/ttyper/recipe.toml index e1ffc188..d671e517 100644 --- a/recipes/wip/ttyper/recipe.toml +++ b/recipes/wip/ttyper/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO replace the prompt with nothing on execution [source] git = "https://github.com/max-niederman/ttyper" rev = "662a6682984afa6efca707b693ae68622e52ac24" diff --git a/recipes/wip/viu/recipe.toml b/recipes/wip/viu/recipe.toml index f4aad872..779ad204 100644 --- a/recipes/wip/viu/recipe.toml +++ b/recipes/wip/viu/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO working but don't exit [source] git = "https://github.com/atanunq/viu" rev = "af8f2ae90040baeeb24b92adedc645edc4ea0e85" From 1cce55095cf99061783cf6e897e2ee177c4eb4fe Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 3 Jan 2024 12:16:10 -0700 Subject: [PATCH 1465/3180] Add cosmic-term --- recipes/gui/cosmic-term/manifest | 5 +++++ recipes/gui/cosmic-term/recipe.toml | 11 +++++++++++ 2 files changed, 16 insertions(+) create mode 100644 recipes/gui/cosmic-term/manifest create mode 100644 recipes/gui/cosmic-term/recipe.toml diff --git a/recipes/gui/cosmic-term/manifest b/recipes/gui/cosmic-term/manifest new file mode 100644 index 00000000..2b6f00d1 --- /dev/null +++ b/recipes/gui/cosmic-term/manifest @@ -0,0 +1,5 @@ +name=COSMIC Terminal +binary=/bin/cosmic-term +icon=/ui/icons/apps/utilities-terminal.png +author=Jeremy Soller +description=COSMIC Terminal diff --git a/recipes/gui/cosmic-term/recipe.toml b/recipes/gui/cosmic-term/recipe.toml new file mode 100644 index 00000000..98bbe595 --- /dev/null +++ b/recipes/gui/cosmic-term/recipe.toml @@ -0,0 +1,11 @@ +[source] +git = "https://github.com/pop-os/cosmic-term.git" +branch = "master_jammy" + +[build] +template = "custom" +script = """ +cookbook_cargo --no-default-features +mkdir -pv "${COOKBOOK_STAGE}/ui/apps" +cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/cosmic-term" +""" From d616a5d1aaff821c31a86c1df7bb260983df5b6a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 3 Jan 2024 12:28:57 -0700 Subject: [PATCH 1466/3180] Remove wip cosmic-term --- recipes/wip/cosmic-term/recipe.toml | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 recipes/wip/cosmic-term/recipe.toml diff --git a/recipes/wip/cosmic-term/recipe.toml b/recipes/wip/cosmic-term/recipe.toml deleted file mode 100644 index 199d73c7..00000000 --- a/recipes/wip/cosmic-term/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO update mio to 0.8 -[source] -git = "https://github.com/pop-os/cosmic-term" -[build] -template = "cargo" From 0b3322aa61e420a97bee77a2219c1f946380e394 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 3 Jan 2024 13:08:38 -0700 Subject: [PATCH 1467/3180] nano: fix include path and promote to tools --- recipes/{wip => tools}/nano/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename recipes/{wip => tools}/nano/recipe.toml (77%) diff --git a/recipes/wip/nano/recipe.toml b/recipes/tools/nano/recipe.toml similarity index 77% rename from recipes/wip/nano/recipe.toml rename to recipes/tools/nano/recipe.toml index 0ad7927f..e049a291 100644 --- a/recipes/wip/nano/recipe.toml +++ b/recipes/tools/nano/recipe.toml @@ -7,6 +7,6 @@ dependencies = [ "ncurses", ] script = """ -export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include" +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" cookbook_configure """ From aa2884eed048f1f3c68ba54277d267d0970462ad Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Wed, 3 Jan 2024 21:42:53 +0100 Subject: [PATCH 1468/3180] Move most games from /games to /usr/games --- recipes/demos/sdl2-gears/gears.c | 6 +++--- recipes/demos/sdl2-gears/recipe.sh | 12 ++++++------ recipes/games/classicube/manifest | 2 +- recipes/games/classicube/recipe.toml | 4 ++-- recipes/games/eduke32/manifest | 2 +- recipes/games/eduke32/recipe.toml | 6 +++--- recipes/games/freedoom/recipe.toml | 8 ++++---- recipes/games/neverball/manifest-neverball | 2 +- recipes/games/neverball/manifest-neverputt | 2 +- recipes/games/neverball/recipe.sh | 6 +++--- recipes/games/vvvvvv/recipe.sh | 4 ++-- 11 files changed, 27 insertions(+), 27 deletions(-) diff --git a/recipes/demos/sdl2-gears/gears.c b/recipes/demos/sdl2-gears/gears.c index 93faf7e9..887e0085 100644 --- a/recipes/demos/sdl2-gears/gears.c +++ b/recipes/demos/sdl2-gears/gears.c @@ -276,13 +276,13 @@ void CheckSDLError(int line) } SDL_Surface *image; -const char *IMAGE_FILE_NAME = "/games/sdl2_gears/assets/image.png"; +const char *IMAGE_FILE_NAME = "/usr/games/sdl2_gears/assets/image.png"; Mix_Music *music = NULL; -const char *MUSIC_FILE_NAME = "/games/sdl2_gears/assets/music.wav"; +const char *MUSIC_FILE_NAME = "/usr/games/sdl2_gears/assets/music.wav"; TTF_Font *font = NULL; -const char *TTF_FILE_NAME = "/games/sdl2_gears/assets/font.ttf"; +const char *TTF_FILE_NAME = "/usr/games/sdl2_gears/assets/font.ttf"; void cleanup() { diff --git a/recipes/demos/sdl2-gears/recipe.sh b/recipes/demos/sdl2-gears/recipe.sh index 6da36dd2..949a0072 100644 --- a/recipes/demos/sdl2-gears/recipe.sh +++ b/recipes/demos/sdl2-gears/recipe.sh @@ -28,11 +28,11 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" - mkdir -pv "$dest/games/sdl2_gears" - mkdir -pv "$dest/games/sdl2_gears/assets" - cp -v "sdl2_gears" "$dest/games/sdl2_gears/sdl2_gears" - cp -v "assets/image.png" "$dest/games/sdl2_gears/assets/image.png" - cp -v "assets/music.wav" "$dest/games/sdl2_gears/assets/music.wav" - cp -v "assets/font.ttf" "$dest/games/sdl2_gears/assets/font.ttf" + mkdir -pv "$dest/usr/games/sdl2_gears" + mkdir -pv "$dest/usr/games/sdl2_gears/assets" + cp -v "sdl2_gears" "$dest/usr/games/sdl2_gears/sdl2_gears" + cp -v "assets/image.png" "$dest/usr/games/sdl2_gears/assets/image.png" + cp -v "assets/music.wav" "$dest/usr/games/sdl2_gears/assets/music.wav" + cp -v "assets/font.ttf" "$dest/usr/games/sdl2_gears/assets/font.ttf" skip=1 } diff --git a/recipes/games/classicube/manifest b/recipes/games/classicube/manifest index e089d084..681eca1b 100644 --- a/recipes/games/classicube/manifest +++ b/recipes/games/classicube/manifest @@ -1,4 +1,4 @@ name=ClassiCube category=Games -binary=/games/classicube/ClassiCube +binary=/usr/games/classicube/ClassiCube icon=/ui/icons/apps/classicube.png diff --git a/recipes/games/classicube/recipe.toml b/recipes/games/classicube/recipe.toml index c65eb8e6..59196821 100644 --- a/recipes/games/classicube/recipe.toml +++ b/recipes/games/classicube/recipe.toml @@ -15,8 +15,8 @@ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" -C src redox -mkdir -pv "${COOKBOOK_STAGE}/games/classicube" -cp -v "src/ClassiCube" "${COOKBOOK_STAGE}/games/classicube" +mkdir -pv "${COOKBOOK_STAGE}/usr/games/classicube" +cp -v "src/ClassiCube" "${COOKBOOK_STAGE}/usr/games/classicube" mkdir -pv "${COOKBOOK_STAGE}/ui/apps" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/classicube" diff --git a/recipes/games/eduke32/manifest b/recipes/games/eduke32/manifest index abb25f8f..27dfe096 100644 --- a/recipes/games/eduke32/manifest +++ b/recipes/games/eduke32/manifest @@ -1,4 +1,4 @@ name=EDuke32 category=Games -binary=/games/eduke32 +binary=/usr/games/eduke32 icon=/ui/icons/apps/eduke32.png diff --git a/recipes/games/eduke32/recipe.toml b/recipes/games/eduke32/recipe.toml index e150b2c8..b0532d44 100644 --- a/recipes/games/eduke32/recipe.toml +++ b/recipes/games/eduke32/recipe.toml @@ -23,9 +23,9 @@ export SDLCONFIG="${COOKBOOK_SYSROOT}/bin/sdl-config --prefix=${COOKBOOK_SYSROOT PLATFORM=REDOX "${COOKBOOK_MAKE}" -j"$($NPROC)" -mkdir -pv "${COOKBOOK_STAGE}/games" -cp -v ./eduke32 "${COOKBOOK_STAGE}/games/eduke32" -cp -v ./mapster32 "${COOKBOOK_STAGE}/games/mapster32" +mkdir -pv "${COOKBOOK_STAGE}/usr/games" +cp -v ./eduke32 "${COOKBOOK_STAGE}/usr/games/eduke32" +cp -v ./mapster32 "${COOKBOOK_STAGE}/usr/games/mapster32" mkdir -pv "${COOKBOOK_STAGE}/ui/apps" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/eduke32" diff --git a/recipes/games/freedoom/recipe.toml b/recipes/games/freedoom/recipe.toml index 3a4be6ed..fdba3bed 100644 --- a/recipes/games/freedoom/recipe.toml +++ b/recipes/games/freedoom/recipe.toml @@ -4,7 +4,7 @@ git = "https://gitlab.redox-os.org/redox-os/freedoom.git" [build] template = "custom" script = """ -mkdir -pv "${COOKBOOK_STAGE}/games" "${COOKBOOK_STAGE}/share/games/doom" "${COOKBOOK_STAGE}/ui/apps" "${COOKBOOK_STAGE}/ui/icons/apps" +mkdir -pv "${COOKBOOK_STAGE}/usr/games" "${COOKBOOK_STAGE}/share/games/doom" "${COOKBOOK_STAGE}/ui/apps" "${COOKBOOK_STAGE}/ui/icons/apps" for file in "${COOKBOOK_SOURCE}/"*.wad do game="$(basename "$file" .wad)" @@ -12,14 +12,14 @@ do wad="/share/games/doom/$game.wad" cp -v "$file" "${COOKBOOK_STAGE}$wad" - bin="/games/$game" + bin="/usr/games/$game" echo "#!/bin/ion" > "${COOKBOOK_STAGE}$bin" - echo "/games/prboom -geom 800x600 -vidmode 32 -iwad $wad" >> "${COOKBOOK_STAGE}$bin" + echo "/usr/games/prboom -geom 800x600 -vidmode 32 -iwad $wad" >> "${COOKBOOK_STAGE}$bin" chmod +x "${COOKBOOK_STAGE}$bin" echo "name=$game" | sed 's/freedoom/FreeDOOM: Phase /' | sed 's/doom1/DOOM (Shareware)/' > "${COOKBOOK_STAGE}/ui/apps/$game" echo "category=Games" >> "${COOKBOOK_STAGE}/ui/apps/$game" - echo "binary=/games/$game" >> "${COOKBOOK_STAGE}/ui/apps/$game" + echo "binary=/usr/games/$game" >> "${COOKBOOK_STAGE}/ui/apps/$game" echo "icon=/ui/icons/apps/$game.png" >> "${COOKBOOK_STAGE}/ui/apps/$game" cp -v "${COOKBOOK_SOURCE}/$game.png" "${COOKBOOK_STAGE}/ui/icons/apps/$game.png" diff --git a/recipes/games/neverball/manifest-neverball b/recipes/games/neverball/manifest-neverball index 70330ee2..431aadb3 100644 --- a/recipes/games/neverball/manifest-neverball +++ b/recipes/games/neverball/manifest-neverball @@ -1,4 +1,4 @@ name=Neverball category=Games -binary=/games/neverball/neverball +binary=/usr/games/neverball/neverball icon=/ui/icons/apps/neverball.png diff --git a/recipes/games/neverball/manifest-neverputt b/recipes/games/neverball/manifest-neverputt index f0c0febc..debe4f67 100644 --- a/recipes/games/neverball/manifest-neverputt +++ b/recipes/games/neverball/manifest-neverputt @@ -1,4 +1,4 @@ name=Neverputt category=Games -binary=/games/neverball/neverputt +binary=/usr/games/neverball/neverputt icon=/ui/icons/apps/neverputt.png diff --git a/recipes/games/neverball/recipe.sh b/recipes/games/neverball/recipe.sh index 4c12afda..ba83e15e 100644 --- a/recipes/games/neverball/recipe.sh +++ b/recipes/games/neverball/recipe.sh @@ -32,16 +32,16 @@ function recipe_stage { dest="$(realpath $1)" # Create install directories - mkdir -pv "${dest}/games/neverball" "${dest}/ui/apps" "${dest}/ui/icons/apps" + mkdir -pv "${dest}/usr/games/neverball" "${dest}/ui/apps" "${dest}/ui/icons/apps" # Copy assets - cp -rv data "${dest}/games/neverball" + cp -rv data "${dest}/usr/games/neverball" # For each game for bin in neverball neverputt do # Install binary - "${STRIP}" -v "${bin}" -o "${dest}/games/neverball/${bin}" + "${STRIP}" -v "${bin}" -o "${dest}/usr/games/neverball/${bin}" # Install manifest cp -v "${COOKBOOK_RECIPE}/manifest-${bin}" "${dest}/ui/apps/${bin}" diff --git a/recipes/games/vvvvvv/recipe.sh b/recipes/games/vvvvvv/recipe.sh index 28649e57..531e3697 100644 --- a/recipes/games/vvvvvv/recipe.sh +++ b/recipes/games/vvvvvv/recipe.sh @@ -32,7 +32,7 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" - mkdir -pv "$1/games/vvvvvv" - cp ./desktop_version/VVVVVV "$1/games/vvvvvv" + mkdir -pv "$1/usr/games/vvvvvv" + cp ./desktop_version/VVVVVV "$1/usr/games/vvvvvv" skip=1 } From 7a1f87073041a1da59943740868a64ce4cc59b07 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Wed, 3 Jan 2024 21:43:44 +0100 Subject: [PATCH 1469/3180] Move the remaining couple of games to /usr/games --- recipes/games/gigalomania/manifest | 2 +- recipes/games/gigalomania/recipe.sh | 2 +- recipes/games/openttd/manifest | 2 +- recipes/games/openttd/recipe.sh | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/recipes/games/gigalomania/manifest b/recipes/games/gigalomania/manifest index 345713ee..94fb93b6 100644 --- a/recipes/games/gigalomania/manifest +++ b/recipes/games/gigalomania/manifest @@ -1,4 +1,4 @@ name=Gigalomania category=Games -binary=/games/gigalomania/gigalomania +binary=/usr/games/gigalomania/gigalomania icon=/ui/icons/apps/gigalomania.png diff --git a/recipes/games/gigalomania/recipe.sh b/recipes/games/gigalomania/recipe.sh index e43d6716..d29aad06 100644 --- a/recipes/games/gigalomania/recipe.sh +++ b/recipes/games/gigalomania/recipe.sh @@ -26,7 +26,7 @@ function recipe_stage { dest="$(realpath $1)" bundledir="$dest/bundle" - "$REDOX_MAKE" VERBOSE=1 DESTDIR="$dest" install + "$REDOX_MAKE" VERBOSE=1 DESTDIR="$dest/usr" install rm -rf "$bundledir" mkdir -pv "$1/ui/apps" diff --git a/recipes/games/openttd/manifest b/recipes/games/openttd/manifest index 7f25f355..79405498 100644 --- a/recipes/games/openttd/manifest +++ b/recipes/games/openttd/manifest @@ -1,4 +1,4 @@ name=OpenTTD category=Games -binary=/games/openttd +binary=/usr/games/openttd icon=/ui/icons/apps/openttd.png diff --git a/recipes/games/openttd/recipe.sh b/recipes/games/openttd/recipe.sh index bd15e67e..ff766abf 100644 --- a/recipes/games/openttd/recipe.sh +++ b/recipes/games/openttd/recipe.sh @@ -33,7 +33,7 @@ function recipe_stage { dest="$(realpath $1)" bundledir="$dest/bundle" - "$REDOX_MAKE" VERBOSE=1 ROOT_DIR="$dest/../build/" BUNDLE_DIR="$bundledir" INSTALL_DIR="$dest" install + "$REDOX_MAKE" VERBOSE=1 ROOT_DIR="$dest/../build/" BUNDLE_DIR="$bundledir" INSTALL_DIR="$dest/usr" install rm -rf "$bundledir" mkdir -pv "$1/ui/apps" From b4610465dbe3ef481c81816c2d8f6cd15e1c9e6a Mon Sep 17 00:00:00 2001 From: bjorn3 <4397-bjorn3@users.noreply.gitlab.redox-os.org> Date: Wed, 3 Jan 2024 22:44:33 +0000 Subject: [PATCH 1470/3180] Move prboom too --- recipes/games/prboom/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/games/prboom/recipe.sh b/recipes/games/prboom/recipe.sh index c2ce128a..319f2103 100644 --- a/recipes/games/prboom/recipe.sh +++ b/recipes/games/prboom/recipe.sh @@ -35,6 +35,6 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest/usr" install skip=1 } From 9ce94b0f7e9c12f113462822eda6aa3c9af0e834 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 4 Jan 2024 00:22:02 +0000 Subject: [PATCH 1471/3180] update TODOs --- recipes/wip/bartib/recipe.toml | 2 +- recipes/wip/counts/recipe.toml | 2 +- recipes/wip/dust/recipe.toml | 2 +- recipes/wip/felix/recipe.toml | 2 +- recipes/wip/havn/recipe.toml | 2 +- recipes/wip/hexyl/recipe.toml | 2 +- recipes/wip/lemmeknow/recipe.toml | 2 +- recipes/wip/logss/recipe.toml | 2 +- recipes/wip/orz/recipe.toml | 2 +- recipes/wip/qrrs/recipe.toml | 2 +- recipes/wip/ripsecrets/recipe.toml | 2 +- recipes/wip/ruplacer/recipe.toml | 2 +- recipes/wip/rust-counter-strings/recipe.toml | 2 +- recipes/wip/sd/recipe.toml | 2 +- recipes/wip/tin-summer/recipe.toml | 2 +- recipes/wip/tock/recipe.toml | 2 +- recipes/wip/xcp/recipe.toml | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/recipes/wip/bartib/recipe.toml b/recipes/wip/bartib/recipe.toml index e7780714..f6459ec3 100644 --- a/recipes/wip/bartib/recipe.toml +++ b/recipes/wip/bartib/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO move to proper category [source] git = "https://github.com/nikolassv/bartib" [build] diff --git a/recipes/wip/counts/recipe.toml b/recipes/wip/counts/recipe.toml index b8821b00..9687e614 100644 --- a/recipes/wip/counts/recipe.toml +++ b/recipes/wip/counts/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO move to proper category [source] git = "https://github.com/nnethercote/counts" [build] diff --git a/recipes/wip/dust/recipe.toml b/recipes/wip/dust/recipe.toml index 62382ff0..ecc1b10b 100644 --- a/recipes/wip/dust/recipe.toml +++ b/recipes/wip/dust/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO working but don't draw the size bars [source] git = "https://github.com/bootandy/dust" [build] diff --git a/recipes/wip/felix/recipe.toml b/recipes/wip/felix/recipe.toml index 814ce381..fff28508 100644 --- a/recipes/wip/felix/recipe.toml +++ b/recipes/wip/felix/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO replace the terminal prompt with nothing on execution [source] git = "https://github.com/kyoheiu/felix" [build] diff --git a/recipes/wip/havn/recipe.toml b/recipes/wip/havn/recipe.toml index f8076d7b..649f040e 100644 --- a/recipes/wip/havn/recipe.toml +++ b/recipes/wip/havn/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO scanning loop, broken Redox support [source] git = "https://github.com/mrjackwills/havn" [build] diff --git a/recipes/wip/hexyl/recipe.toml b/recipes/wip/hexyl/recipe.toml index 0aec8989..18b94602 100644 --- a/recipes/wip/hexyl/recipe.toml +++ b/recipes/wip/hexyl/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO move to proper category [source] git = "https://github.com/sharkdp/hexyl" rev = "7a9234c182b19070f8707468c572b5a0e6e704d4" diff --git a/recipes/wip/lemmeknow/recipe.toml b/recipes/wip/lemmeknow/recipe.toml index e4358102..2dff0577 100644 --- a/recipes/wip/lemmeknow/recipe.toml +++ b/recipes/wip/lemmeknow/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO move to proper category [source] git = "https://github.com/swanandx/lemmeknow" rev = "f0ec298fb16e17b4c4c87c20b500e7ec1f7cd451" diff --git a/recipes/wip/logss/recipe.toml b/recipes/wip/logss/recipe.toml index 2ce605ed..abd52481 100644 --- a/recipes/wip/logss/recipe.toml +++ b/recipes/wip/logss/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO broken and don't exit [source] git = "https://github.com/todoesverso/logss" [build] diff --git a/recipes/wip/orz/recipe.toml b/recipes/wip/orz/recipe.toml index 40f26292..758d9665 100644 --- a/recipes/wip/orz/recipe.toml +++ b/recipes/wip/orz/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO don't run [source] git = "https://github.com/richox/orz" [build] diff --git a/recipes/wip/qrrs/recipe.toml b/recipes/wip/qrrs/recipe.toml index 9a6b99fc..a3723d66 100644 --- a/recipes/wip/qrrs/recipe.toml +++ b/recipes/wip/qrrs/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO move to proper category [source] git = "https://github.com/Lenivaya/qrrs" rev = "74ea9129a808f199afb386a38df7492cc8c7d094" diff --git a/recipes/wip/ripsecrets/recipe.toml b/recipes/wip/ripsecrets/recipe.toml index 59ee12a0..0899018f 100644 --- a/recipes/wip/ripsecrets/recipe.toml +++ b/recipes/wip/ripsecrets/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO move to proper category [source] git = "https://github.com/sirwart/ripsecrets" [build] diff --git a/recipes/wip/ruplacer/recipe.toml b/recipes/wip/ruplacer/recipe.toml index c709c641..a196b7c0 100644 --- a/recipes/wip/ruplacer/recipe.toml +++ b/recipes/wip/ruplacer/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO move to proper category [source] git = "https://github.com/your-tools/ruplacer" [build] diff --git a/recipes/wip/rust-counter-strings/recipe.toml b/recipes/wip/rust-counter-strings/recipe.toml index e1622638..a472f814 100644 --- a/recipes/wip/rust-counter-strings/recipe.toml +++ b/recipes/wip/rust-counter-strings/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO move to proper category [source] git = "https://github.com/thomaschaplin/rust-counter-strings" [build] diff --git a/recipes/wip/sd/recipe.toml b/recipes/wip/sd/recipe.toml index 850fd296..0cc6f03c 100644 --- a/recipes/wip/sd/recipe.toml +++ b/recipes/wip/sd/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO relibc function not implemented [source] git = "https://github.com/chmln/sd.git" [build] diff --git a/recipes/wip/tin-summer/recipe.toml b/recipes/wip/tin-summer/recipe.toml index 0434379e..a7a39420 100644 --- a/recipes/wip/tin-summer/recipe.toml +++ b/recipes/wip/tin-summer/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO move to proper category [source] git = "https://github.com/vmchale/tin-summer" [build] diff --git a/recipes/wip/tock/recipe.toml b/recipes/wip/tock/recipe.toml index 97cda917..0d558e25 100644 --- a/recipes/wip/tock/recipe.toml +++ b/recipes/wip/tock/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO working but don't exit [source] git = "https://github.com/nwtnni/tock" [build] diff --git a/recipes/wip/xcp/recipe.toml b/recipes/wip/xcp/recipe.toml index e3a7a91b..9e27e994 100644 --- a/recipes/wip/xcp/recipe.toml +++ b/recipes/wip/xcp/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO move to proper category [source] git = "https://github.com/tarka/xcp" [build] From 76ad7ed87d763ea663a099dd18e34a3b1f217c99 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 4 Jan 2024 01:26:51 +0000 Subject: [PATCH 1472/3180] update recipes --- recipes/wip/cava/recipe.toml | 6 +++++- recipes/wip/clamav/recipe.toml | 1 + recipes/wip/cmus/recipe.toml | 6 +++++- recipes/wip/conky/recipe.toml | 1 + recipes/wip/dcss/recipe.toml | 3 +++ recipes/wip/emacs-nox/recipe.toml | 6 +++++- recipes/wip/emacs-pgtk/recipe.toml | 6 +++++- recipes/wip/fish-shell/recipe.toml | 1 + recipes/wip/hickory-dns/recipe.toml | 10 +++++----- recipes/wip/libedit/recipe.toml | 8 ++++++-- recipes/wip/lynx/recipe.toml | 8 ++++++-- recipes/wip/mariadb/recipe.toml | 1 + recipes/wip/mosh/recipe.toml | 8 ++++++-- recipes/wip/ncspot/recipe.toml | 1 + 14 files changed, 51 insertions(+), 15 deletions(-) diff --git a/recipes/wip/cava/recipe.toml b/recipes/wip/cava/recipe.toml index ba6f0581..ec0f1555 100644 --- a/recipes/wip/cava/recipe.toml +++ b/recipes/wip/cava/recipe.toml @@ -3,8 +3,12 @@ git = "https://github.com/karlstav/cava" rev = "81211e9e16302312ee4322a99840c110bce0e13d" [build] -template = "configure" +template = "custom" dependencies = [ "ncurses", "fftw", ] +script = """ +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" +cookbook_configure +""" diff --git a/recipes/wip/clamav/recipe.toml b/recipes/wip/clamav/recipe.toml index 82aed1b6..23435660 100644 --- a/recipes/wip/clamav/recipe.toml +++ b/recipes/wip/clamav/recipe.toml @@ -15,6 +15,7 @@ dependencies = [ "zlib", ] script = """ +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release diff --git a/recipes/wip/cmus/recipe.toml b/recipes/wip/cmus/recipe.toml index f93716f2..b6c63760 100644 --- a/recipes/wip/cmus/recipe.toml +++ b/recipes/wip/cmus/recipe.toml @@ -3,7 +3,11 @@ git = "https://github.com/cmus/cmus" rev = "ade6e2a7253d7a256e87fdac3da17c9158e6700e" [build] -template = "configure" +template = "custom" dependencies = [ "ncurses", ] +script = """ +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" +cookbook_configure +""" diff --git a/recipes/wip/conky/recipe.toml b/recipes/wip/conky/recipe.toml index a9d69bef..ca3945b3 100644 --- a/recipes/wip/conky/recipe.toml +++ b/recipes/wip/conky/recipe.toml @@ -11,6 +11,7 @@ dependencies = [ "curl", ] script = """ +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release diff --git a/recipes/wip/dcss/recipe.toml b/recipes/wip/dcss/recipe.toml index 4d38be39..29895a7d 100644 --- a/recipes/wip/dcss/recipe.toml +++ b/recipes/wip/dcss/recipe.toml @@ -13,3 +13,6 @@ dependencies = [ "zlib", "libpng", ] +script = """ +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" +""" diff --git a/recipes/wip/emacs-nox/recipe.toml b/recipes/wip/emacs-nox/recipe.toml index 481a5065..c6b9117a 100644 --- a/recipes/wip/emacs-nox/recipe.toml +++ b/recipes/wip/emacs-nox/recipe.toml @@ -3,7 +3,7 @@ [source] tar = "https://ftp.gnu.org/gnu/emacs/emacs-29.1.tar.xz" [build] -template = "configure" +template = "custom" dependencies = [ "dbus", "libgmp", @@ -16,3 +16,7 @@ dependencies = [ "zlib", "ncurses", ] +script = """ +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" +cookbook_configure +""" diff --git a/recipes/wip/emacs-pgtk/recipe.toml b/recipes/wip/emacs-pgtk/recipe.toml index 97670776..e72ad0d0 100644 --- a/recipes/wip/emacs-pgtk/recipe.toml +++ b/recipes/wip/emacs-pgtk/recipe.toml @@ -3,7 +3,7 @@ [source] tar = "https://ftp.gnu.org/gnu/emacs/emacs-29.1.tar.xz" [build] -template = "configure" +template = "custom" dependencies = [ "dbus", "libgmp", @@ -31,3 +31,7 @@ dependencies = [ "libwebp", "libotf", ] +script = """ +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" +cookbook_configure +""" diff --git a/recipes/wip/fish-shell/recipe.toml b/recipes/wip/fish-shell/recipe.toml index 626f51b5..8ac57d38 100644 --- a/recipes/wip/fish-shell/recipe.toml +++ b/recipes/wip/fish-shell/recipe.toml @@ -9,6 +9,7 @@ dependencies = [ "pcre", ] script = """ +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release diff --git a/recipes/wip/hickory-dns/recipe.toml b/recipes/wip/hickory-dns/recipe.toml index 8d9e8b5c..5d3bb1a0 100644 --- a/recipes/wip/hickory-dns/recipe.toml +++ b/recipes/wip/hickory-dns/recipe.toml @@ -1,4 +1,4 @@ -#TODO wrong script +#TODO compiled but not tested [source] git = "https://github.com/hickory-dns/hickory-dns" rev = "408d0baca080d1b201cd33e616dc4abd160ef6c0" @@ -8,14 +8,14 @@ dependencies = [ "openssl1", ] script = """ -package=hickory-dns" +binary=hickory-dns "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ - --package "${package}" \ + --bin "${binary}" \ --release --all-features mkdir -pv "${COOKBOOK_STAGE}/bin" cp -v \ - "target/${TARGET}/release/${package}" \ - "${COOKBOOK_STAGE}/bin/${package}" + "target/${TARGET}/release/${binary}" \ + "${COOKBOOK_STAGE}/bin/${binary}" """ diff --git a/recipes/wip/libedit/recipe.toml b/recipes/wip/libedit/recipe.toml index 367f46b6..c00a8c38 100644 --- a/recipes/wip/libedit/recipe.toml +++ b/recipes/wip/libedit/recipe.toml @@ -2,9 +2,13 @@ [source] tar = "https://www.thrysoee.dk/editline/libedit-20221030-3.1.tar.gz" [build] -template = "configure" +template = "custom" dependencies = [ "ncurses", "termcap", "terminfo", -] \ No newline at end of file +] +script = """ +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" +cookbook_configure +""" diff --git a/recipes/wip/lynx/recipe.toml b/recipes/wip/lynx/recipe.toml index bd5f5489..1ac40e8d 100644 --- a/recipes/wip/lynx/recipe.toml +++ b/recipes/wip/lynx/recipe.toml @@ -1,8 +1,12 @@ -#TODO compilation error +#TODO not compiled or tested [source] tar = "https://invisible-island.net/archives/lynx/tarballs/lynx2.8.9rel.1.tar.gz" [build] -template = "configure" +template = "custom" dependencies = [ "ncurses", ] +script = """ +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" +cookbook_configure +""" diff --git a/recipes/wip/mariadb/recipe.toml b/recipes/wip/mariadb/recipe.toml index 2d5b862b..4b8d6556 100644 --- a/recipes/wip/mariadb/recipe.toml +++ b/recipes/wip/mariadb/recipe.toml @@ -16,6 +16,7 @@ dependencies = [ "libaio", ] script = """ +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release diff --git a/recipes/wip/mosh/recipe.toml b/recipes/wip/mosh/recipe.toml index 03d120ac..d2eb5a40 100644 --- a/recipes/wip/mosh/recipe.toml +++ b/recipes/wip/mosh/recipe.toml @@ -1,10 +1,14 @@ -#TODO missing headers +#TODO not compiled or tested [source] tar = "https://mosh.org/mosh-1.4.0.tar.gz" [build] -template = "configure" +template = "custom" dependencies = [ "openssl1", "ncurses", "zlib", ] +script = """ +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" +cookbook_configure +""" diff --git a/recipes/wip/ncspot/recipe.toml b/recipes/wip/ncspot/recipe.toml index 37e72505..4af546db 100644 --- a/recipes/wip/ncspot/recipe.toml +++ b/recipes/wip/ncspot/recipe.toml @@ -9,5 +9,6 @@ dependencies = [ "ncurses", ] script = """ +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" cookbook_cargo --features rodio_backend,pancurses_backend """ From ff75cd808e26fd05a1587722593d73ddfdbe726b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 4 Jan 2024 16:29:41 +0000 Subject: [PATCH 1473/3180] add rustyink --- recipes/wip/rustyink/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/wip/rustyink/recipe.toml diff --git a/recipes/wip/rustyink/recipe.toml b/recipes/wip/rustyink/recipe.toml new file mode 100644 index 00000000..e170c724 --- /dev/null +++ b/recipes/wip/rustyink/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/arjunkomath/rustyink" +[build] +template = "cargo" From 32b4d66ebe35f6574b7cbc3bbb461bdc325c561b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 4 Jan 2024 18:00:08 +0000 Subject: [PATCH 1474/3180] add wepl --- recipes/wip/wepl/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/wip/wepl/recipe.toml diff --git a/recipes/wip/wepl/recipe.toml b/recipes/wip/wepl/recipe.toml new file mode 100644 index 00000000..19df7d20 --- /dev/null +++ b/recipes/wip/wepl/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/rylev/wepl" +[build] +template = "cargo" From b44c20e23876798c320971ce0e434113d24f7504 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 4 Jan 2024 13:47:33 -0700 Subject: [PATCH 1475/3180] Add recipe for cosmic-files --- recipes/gui/cosmic-files/manifest | 5 +++++ recipes/gui/cosmic-files/recipe.toml | 11 +++++++++++ 2 files changed, 16 insertions(+) create mode 100644 recipes/gui/cosmic-files/manifest create mode 100644 recipes/gui/cosmic-files/recipe.toml diff --git a/recipes/gui/cosmic-files/manifest b/recipes/gui/cosmic-files/manifest new file mode 100644 index 00000000..df778a48 --- /dev/null +++ b/recipes/gui/cosmic-files/manifest @@ -0,0 +1,5 @@ +name=COSMIC File Manager +binary=/bin/cosmic-files +icon=/ui/icons/apps/system-file-manager.png +author=Jeremy Soller +description=COSMIC File Manager diff --git a/recipes/gui/cosmic-files/recipe.toml b/recipes/gui/cosmic-files/recipe.toml new file mode 100644 index 00000000..2347849b --- /dev/null +++ b/recipes/gui/cosmic-files/recipe.toml @@ -0,0 +1,11 @@ +[source] +git = "https://github.com/pop-os/cosmic-files.git" +branch = "master_jammy" + +[build] +template = "custom" +script = """ +cookbook_cargo --no-default-features +mkdir -pv "${COOKBOOK_STAGE}/ui/apps" +cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/cosmic-files" +""" From 39941bbfbb1e9fd1bfd4b10be72f21c48a7e1611 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sun, 7 Jan 2024 18:13:02 +0100 Subject: [PATCH 1476/3180] Also search for init configs in /usr/lib/init.d This will allow moving the system init configs to this place, keeping /etc/init.d for local overrides. --- recipes/core/initfs/init.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/core/initfs/init.rc b/recipes/core/initfs/init.rc index a8f3b0b3..4e34c3e2 100644 --- a/recipes/core/initfs/init.rc +++ b/recipes/core/initfs/init.rc @@ -15,4 +15,4 @@ lived redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK cd file: export PATH file:/bin -run.d /etc/init.d +run.d /usr/lib/init.d /etc/init.d From 5fed46f97e14baa8a5b195437b64585fe0b918d9 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Mon, 8 Jan 2024 19:41:23 +0100 Subject: [PATCH 1477/3180] Significantly simplify src/blake3.rs by using the new update_reader method --- Cargo.lock | 7 +++---- Cargo.toml | 2 +- src/blake3.rs | 33 +++++---------------------------- 3 files changed, 9 insertions(+), 33 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7546f835..8771f6eb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -212,16 +212,15 @@ dependencies = [ [[package]] name = "blake3" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "199c42ab6972d92c9f8995f086273d25c42fc0f7b2a1fcefba465c1352d25ba5" +checksum = "0231f06152bf547e9c2b5194f247cd97aacf6dcd8b15d8e5ec0663f64580da87" dependencies = [ "arrayref", "arrayvec 0.7.4", "cc", "cfg-if 1.0.0", "constant_time_eq 0.3.0", - "digest 0.10.7", ] [[package]] @@ -1237,7 +1236,7 @@ dependencies = [ name = "redox_cookbook" version = "0.1.0" dependencies = [ - "blake3 1.4.1", + "blake3 1.5.0", "pbr", "pkgar", "pkgar-keys", diff --git a/Cargo.toml b/Cargo.toml index 1a6ebecc..3d33a986 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,7 +20,7 @@ name = "cookbook" path = "src/lib.rs" [dependencies] -blake3 = "1" +blake3 = "1.5" pbr = "1.0.2" pkgar = "0.1.7" pkgar-keys = "0.1.0" diff --git a/src/blake3.rs b/src/blake3.rs index acc037d3..746b829d 100644 --- a/src/blake3.rs +++ b/src/blake3.rs @@ -1,30 +1,8 @@ use blake3::Hasher; -use std::{ - fs, - io::{Read, Result}, - path::Path, - time::Duration, -}; +use std::{fs, io::Result, path::Path, time::Duration}; use crate::progress_bar::{ProgressBar, ProgressBarRead}; -pub fn blake3(r: &mut R) -> Result { - let mut hasher = Hasher::new(); - - let mut data = vec![0; 4 * 1024 * 1024]; - loop { - let count = r.read(&mut data)?; - if count == 0 { - break; - } - - hasher.update(&data[..count]); - } - - let hash = hasher.finalize(); - Ok(format!("{}", hash.to_hex())) -} - pub fn blake3_progress>(path: P) -> Result { let len = fs::metadata(&path)?.len(); @@ -35,12 +13,11 @@ pub fn blake3_progress>(path: P) -> Result { pb.set_max_refresh_rate(Some(Duration::new(1, 0))); pb.set_units(pbr::Units::Bytes); - let res = { - let mut pbr = ProgressBarRead::new(&mut pb, &mut f); - blake3(&mut pbr) - }; + let mut pbr = ProgressBarRead::new(&mut pb, &mut f); + let hash = Hasher::new().update_reader(&mut pbr)?.finalize(); + let res = format!("{}", hash.to_hex()); pb.finish_println(""); - res + Ok(res) } From 64ea29f63bbb2b67ac2ae03497cdd331548c2a71 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Mon, 8 Jan 2024 19:42:50 +0100 Subject: [PATCH 1478/3180] Remove ProgressBarWrite It is unused. --- src/progress_bar.rs | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/src/progress_bar.rs b/src/progress_bar.rs index 75eceb47..5033cd8e 100644 --- a/src/progress_bar.rs +++ b/src/progress_bar.rs @@ -23,29 +23,3 @@ impl<'p, 'r, P: Write, R: Read> Read for ProgressBarRead<'p, 'r, P, R> { Ok(count) } } - -pub struct ProgressBarWrite<'p, 'w, P: Write + 'p, W: Write + 'w> { - pb: &'p mut ProgressBar

, - w: &'w mut W, -} - -impl<'p, 'w, P: Write, W: Write> ProgressBarWrite<'p, 'w, P, W> { - pub fn _new(pb: &'p mut ProgressBar

, w: &'w mut W) -> ProgressBarWrite<'p, 'w, P, W> { - ProgressBarWrite { - pb, - w - } - } -} - -impl<'p, 'w, P: Write, W: Write> Write for ProgressBarWrite<'p, 'w, P, W> { - fn write(&mut self, buf: &[u8]) -> Result { - let count = self.w.write(buf)?; - self.pb.add(count as u64); - Ok(count) - } - - fn flush(&mut self) -> Result<()> { - self.w.flush() - } -} From 48e5ef02eb7ce371060baffee16c266782290445 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Mon, 8 Jan 2024 19:48:06 +0100 Subject: [PATCH 1479/3180] Compare actual filenames rather than their lossy conversions This is both faster and more correct. --- src/recipe_find.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/recipe_find.rs b/src/recipe_find.rs index 286e62a8..1cb55169 100644 --- a/src/recipe_find.rs +++ b/src/recipe_find.rs @@ -1,3 +1,4 @@ +use std::ffi::OsStr; use std::fs::{self}; use std::path::{Path, PathBuf}; @@ -8,11 +9,11 @@ pub fn recipe_find(recipe: &str, dir: &Path) -> Result, String> } for entry in fs::read_dir(dir).map_err(|e| e.to_string())? { let entry = entry.map_err(|e| e.to_string())?; - if entry.file_name().to_string_lossy() == "recipe.sh" - || entry.file_name().to_string_lossy() == "recipe.toml" + if entry.file_name() == OsStr::new("recipe.sh") + || entry.file_name() == OsStr::new("recipe.toml") { // println!("recipe is {:?}", dir.file_name()); - if dir.file_name().unwrap().to_string_lossy() != recipe { + if dir.file_name().unwrap() != OsStr::new(recipe) { return Ok(None); } else { return Ok(Some(dir.to_path_buf())); @@ -51,8 +52,8 @@ pub fn list_recipes(dir: &Path) -> Result, String> { } for entry in fs::read_dir(dir).map_err(|e| e.to_string())? { let entry = entry.map_err(|e| e.to_string())?; - if entry.file_name().to_string_lossy() == "recipe.sh" - || entry.file_name().to_string_lossy() == "recipe.toml" + if entry.file_name() == OsStr::new("recipe.sh") + || entry.file_name() == OsStr::new("recipe.toml") { recipes.push(dir.file_name().ok_or(format!("could not unwrap the filename for {:?}", dir))?.to_string_lossy().to_string()); return Ok(recipes); From e2540c49ad8fc6333e8a4b330d9a5ff0d6d713da Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 8 Jan 2024 18:51:42 +0000 Subject: [PATCH 1480/3180] Migrate the template scripts to /usr --- src/bin/cook.rs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 7a2c4edd..f1cf4c51 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -485,10 +485,10 @@ function cookbook_cargo_examples { --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ --example "${example}" \ --release - mkdir -pv "${COOKBOOK_STAGE}/bin" + mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ "target/${TARGET}/release/examples/${example}" \ - "${COOKBOOK_STAGE}/bin/${recipe}_${example}" + "${COOKBOOK_STAGE}/usr/bin/${recipe}_${example}" done } @@ -501,10 +501,10 @@ function cookbook_cargo_packages { --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ --package "${package}" \ --release - mkdir -pv "${COOKBOOK_STAGE}/bin" + mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ "target/${TARGET}/release/${package}" \ - "${COOKBOOK_STAGE}/bin/${recipe}_${package}" + "${COOKBOOK_STAGE}/usr/bin/${recipe}_${package}" done } @@ -532,12 +532,22 @@ then find "${COOKBOOK_STAGE}/bin" -type f -exec "${TARGET}-strip" -v {} ';' fi +if [ -d "${COOKBOOK_STAGE}/usr/bin" ] +then + find "${COOKBOOK_STAGE}/usr/bin" -type f -exec "${TARGET}-strip" -v {} ';' +fi + # Remove libtool files if [ -d "${COOKBOOK_STAGE}/lib" ] then find "${COOKBOOK_STAGE}/lib" -type f -name '*.la' -exec rm -fv {} ';' fi +if [ -d "${COOKBOOK_STAGE}/usr/lib" ] +then + find "${COOKBOOK_STAGE}/usr/lib" -type f -name '*.la' -exec rm -fv {} ';' +fi + # Remove cargo install files for file in .crates.toml .crates2.json do From 91f885bddb9e146bc25dfd301dea464b1261b8c6 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Mon, 8 Jan 2024 20:00:30 +0100 Subject: [PATCH 1481/3180] Remove sha256 support Sha256 is slower than blake3 and all recipes use blake3 now. --- Cargo.lock | 12 ------------ Cargo.toml | 1 - src/bin/cook.rs | 25 ++----------------------- src/lib.rs | 1 - src/recipe.rs | 7 ++----- src/sha256.rs | 45 --------------------------------------------- 6 files changed, 4 insertions(+), 87 deletions(-) delete mode 100644 src/sha256.rs diff --git a/Cargo.lock b/Cargo.lock index 8771f6eb..22e97a6a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1242,7 +1242,6 @@ dependencies = [ "pkgar-keys", "redoxer", "serde", - "sha2", "termion", "toml 0.5.11", "walkdir", @@ -1571,17 +1570,6 @@ dependencies = [ "serde", ] -[[package]] -name = "sha2" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" -dependencies = [ - "cfg-if 1.0.0", - "cpufeatures", - "digest 0.10.7", -] - [[package]] name = "sha3" version = "0.8.2" diff --git a/Cargo.toml b/Cargo.toml index 3d33a986..1ed0450d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,7 +26,6 @@ pkgar = "0.1.7" pkgar-keys = "0.1.0" redoxer = "0.2" serde = { version = "1.0.110", features = ["derive"] } -sha2 = "0.10" termion = "1.5.5" toml = "0.5.6" walkdir = "2.3.1" diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 7a2c4edd..2c037993 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1,6 +1,5 @@ use cookbook::blake3::blake3_progress; use cookbook::recipe::{Recipe, SourceRecipe, BuildKind, BuildRecipe, PackageRecipe}; -use cookbook::sha256::sha256_progress; use cookbook::recipe_find::recipe_find; use std::{ env, @@ -250,7 +249,7 @@ fi"#); command.arg("submodule").arg("update").arg("--init").arg("--recursive"); run_command(command)?; }, - Some(SourceRecipe::Tar { tar, blake3, sha256, patches, script }) => { + Some(SourceRecipe::Tar { tar, blake3, patches, script }) => { if ! source_dir.is_dir() { // Download tar //TODO: replace wget @@ -292,26 +291,6 @@ fi"#); ); } - //TODO: if blake3 is set, remove sha256 - if let Some(sha256) = sha256 { - // Calculate sha256 - let source_tar_sha256 = sha256_progress(&source_tar).map_err(|err| format!( - "failed to calculate sha256 of '{}': {}\n{:?}", - source_tar.display(), - err, - err - ))?; - - // Check if it matches recipe - if &source_tar_sha256 != sha256 { - return Err(format!( - "calculated sha256 '{}' does not match recipe sha256 '{}'", - source_tar_sha256, - sha256 - )); - } - } - // Create source.tmp let source_dir_tmp = recipe_dir.join("source.tmp"); create_dir_clean(&source_dir_tmp)?; @@ -430,7 +409,7 @@ fn build(recipe_dir: &Path, source_dir: &Path, target_dir: &Path, build: &BuildR eprintln!("DEBUG: '{}' newer than '{}'", source_dir.display(), stage_dir.display()); remove_all(&stage_dir)?; } - + if ! stage_dir.is_dir() { // Create stage.tmp let stage_dir_tmp = target_dir.join("stage.tmp"); diff --git a/src/lib.rs b/src/lib.rs index 572b1716..29b67806 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,5 @@ pub mod blake3; pub mod recipe; -pub mod sha256; pub mod recipe_find; mod progress_bar; diff --git a/src/recipe.rs b/src/recipe.rs index fea26680..197396c7 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -24,8 +24,6 @@ pub enum SourceRecipe { /// The optional blake3 sum of the tar file. Please specify this to make reproducible /// builds more reliable blake3: Option, - /// The optional sha256 sum of the tar file. This is a slower alternative to a blake3 sum - sha256: Option, /// A list of patch files to apply to the source #[serde(default)] patches: Vec, @@ -118,7 +116,7 @@ mod tests { let recipe: Recipe = toml::from_str(r#" [source] tar = "http://downloads.xiph.org/releases/ogg/libogg-1.3.3.tar.xz" - sha256 = "4f3fc6178a533d392064f14776b23c397ed4b9f48f5de297aba73b643f955c08" + sha256 = "8220c0e4082fa26c07b10bfe31f641d2e33ebe1d1bb0b20221b7016bc8b78a3a" [build] template = "custom" @@ -128,8 +126,7 @@ mod tests { assert_eq!(recipe, Recipe { source: Some(SourceRecipe::Tar { tar: "http://downloads.xiph.org/releases/ogg/libogg-1.3.3.tar.xz".to_string(), - blake3: None, - sha256: Some("4f3fc6178a533d392064f14776b23c397ed4b9f48f5de297aba73b643f955c08".to_string()), + blake3: Some("8220c0e4082fa26c07b10bfe31f641d2e33ebe1d1bb0b20221b7016bc8b78a3a".to_string()), patches: Vec::new(), script: None, }), diff --git a/src/sha256.rs b/src/sha256.rs deleted file mode 100644 index 5f85a0d1..00000000 --- a/src/sha256.rs +++ /dev/null @@ -1,45 +0,0 @@ -use std::{ - fs, - io::{Read, Result}, - path::Path, - time::Duration, -}; -use sha2::{Digest, Sha256}; - -use crate::progress_bar::{ProgressBar, ProgressBarRead}; - -pub fn sha256(r: &mut R) -> Result { - let mut hasher = Sha256::default(); - - let mut data = vec![0; 4 * 1024 * 1024]; - loop { - let count = r.read(&mut data)?; - if count == 0 { - break; - } - - hasher.update(&data[..count]); - } - - Ok(format!("{:x}", hasher.finalize())) -} - -pub fn sha256_progress>(path: P) -> Result { - let len = fs::metadata(&path)?.len(); - - let mut f = fs::File::open(&path)?; - - let mut pb = ProgressBar::new(len); - pb.message("sha256: "); - pb.set_max_refresh_rate(Some(Duration::new(1, 0))); - pb.set_units(pbr::Units::Bytes); - - let res = { - let mut pbr = ProgressBarRead::new(&mut pb, &mut f); - sha256(&mut pbr) - }; - - pb.finish_println(""); - - res -} From 93bb93f429a861a986f5708bc376f9b8a48e5da3 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Mon, 8 Jan 2024 21:05:12 +0100 Subject: [PATCH 1482/3180] Remove setup.sh It isn't used anywhere --- setup.sh | 20 -------------------- 1 file changed, 20 deletions(-) delete mode 100755 setup.sh diff --git a/setup.sh b/setup.sh deleted file mode 100755 index 25b6377a..00000000 --- a/setup.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env bash -set -e - -echo "Downloading latest pkgutils" -git submodule update --init --remote pkgutils -cargo update --manifest-path pkgutils/Cargo.toml - -echo "Defaulting to rust nightly" -rustup override set nightly -echo "Update rust nightly" -rustup update nightly -echo "Downloading rust source" -rustup component add rust-src -if [ -z "$(which cargo-config)" ] -then - echo "Installing cargo-config" - cargo install -f cargo-config -fi - -echo "cook.sh is ready to use" From 8209fa04c92c26f7a094e582b26c788b95c4b85d Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Mon, 8 Jan 2024 21:26:24 +0100 Subject: [PATCH 1483/3180] Convert fal recipe to toml and move to wip --- recipes/dev/fal/recipe.sh | 2 -- recipes/wip/fal/recipe.toml | 6 ++++++ 2 files changed, 6 insertions(+), 2 deletions(-) delete mode 100644 recipes/dev/fal/recipe.sh create mode 100644 recipes/wip/fal/recipe.toml diff --git a/recipes/dev/fal/recipe.sh b/recipes/dev/fal/recipe.sh deleted file mode 100644 index 8e102368..00000000 --- a/recipes/dev/fal/recipe.sh +++ /dev/null @@ -1,2 +0,0 @@ -GIT=https://github.com/4lDO2/fal-rs -CARGO_PACKAGE=fal-frontend-redox diff --git a/recipes/wip/fal/recipe.toml b/recipes/wip/fal/recipe.toml new file mode 100644 index 00000000..c8e48a47 --- /dev/null +++ b/recipes/wip/fal/recipe.toml @@ -0,0 +1,6 @@ +[source] +git = "https://github.com/4lDO2/fal-rs" + +[build] +template = "custom" +script = "cookbook_cargo_packages fal-frontend-redox" From adaf1c9631174a21f12413019876541906f0f0e2 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Mon, 8 Jan 2024 21:33:55 +0100 Subject: [PATCH 1484/3180] Convert lci recipe to toml --- recipes/dev/lci/recipe.sh | 1 - recipes/dev/lci/recipe.toml | 5 +++++ 2 files changed, 5 insertions(+), 1 deletion(-) delete mode 100644 recipes/dev/lci/recipe.sh create mode 100644 recipes/dev/lci/recipe.toml diff --git a/recipes/dev/lci/recipe.sh b/recipes/dev/lci/recipe.sh deleted file mode 100644 index c1c88b90..00000000 --- a/recipes/dev/lci/recipe.sh +++ /dev/null @@ -1 +0,0 @@ -GIT=https://github.com/jD91mZM2/rust-lci diff --git a/recipes/dev/lci/recipe.toml b/recipes/dev/lci/recipe.toml new file mode 100644 index 00000000..2f5e1cf4 --- /dev/null +++ b/recipes/dev/lci/recipe.toml @@ -0,0 +1,5 @@ +[source] +git = "https://github.com/jD91mZM2/rust-lci" + +[build] +template = "cargo" From 6b90326bca390329ab89164b622cd9ad714a9fcb Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Mon, 8 Jan 2024 21:45:59 +0100 Subject: [PATCH 1485/3180] Make sure to install recipes using the cargo template get installed in /usr/bin too --- src/bin/cook.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 2badc351..c6983d6e 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -449,7 +449,7 @@ COOKBOOK_CARGO="${COOKBOOK_REDOXER}" function cookbook_cargo { "${COOKBOOK_CARGO}" install \ --path "${COOKBOOK_SOURCE}" \ - --root "${COOKBOOK_STAGE}" \ + --root "${COOKBOOK_STAGE}/usr" \ --locked \ --no-track \ "$@" From 32be1a9c2715f049752c36528bfec2c8c950f829 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 8 Jan 2024 20:55:39 +0000 Subject: [PATCH 1486/3180] Remove the nano TODO --- recipes/tools/nano/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/tools/nano/recipe.toml b/recipes/tools/nano/recipe.toml index e049a291..1d23c047 100644 --- a/recipes/tools/nano/recipe.toml +++ b/recipes/tools/nano/recipe.toml @@ -1,4 +1,3 @@ -#TODO not compiled or tested [source] tar = "https://www.nano-editor.org/dist/v7/nano-7.2.tar.xz" [build] From a2ec53a47a382435b6e977fef5ced7a14b0f0efd Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Mon, 8 Jan 2024 21:57:37 +0100 Subject: [PATCH 1487/3180] Convert sodium recipe to toml --- recipes/tools/sodium/recipe.sh | 10 ---------- recipes/tools/sodium/recipe.toml | 18 ++++++++++++++++++ 2 files changed, 18 insertions(+), 10 deletions(-) delete mode 100644 recipes/tools/sodium/recipe.sh create mode 100644 recipes/tools/sodium/recipe.toml diff --git a/recipes/tools/sodium/recipe.sh b/recipes/tools/sodium/recipe.sh deleted file mode 100644 index 5572b9ae..00000000 --- a/recipes/tools/sodium/recipe.sh +++ /dev/null @@ -1,10 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/sodium.git -BINDIR="/ui/bin" -CARGOFLAGS="--features orbital" - -function recipe_stage { - mkdir -pv "$1/ui/apps" - cp -v manifest "$1/ui/apps/sodium" - mkdir -pv "$1/ui/icons" - cp -v icon.png "$1/ui/icons/sodium.png" -} diff --git a/recipes/tools/sodium/recipe.toml b/recipes/tools/sodium/recipe.toml new file mode 100644 index 00000000..5986392b --- /dev/null +++ b/recipes/tools/sodium/recipe.toml @@ -0,0 +1,18 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/sodium.git" + +[build] +template = "custom" +script = """ +"${COOKBOOK_CARGO}" install \ + --path "${COOKBOOK_SOURCE}" \ + --root "${COOKBOOK_STAGE}/ui" \ + --locked \ + --no-track \ + --features orbital + +mkdir -pv "${COOKBOOK_STAGE}/ui/apps" +cp -v ${COOKBOOK_SOURCE}/manifest "${COOKBOOK_STAGE}/ui/apps/sodium" +mkdir -pv "${COOKBOOK_STAGE}/ui/icons" +cp -v ${COOKBOOK_SOURCE}/icon.png "${COOKBOOK_STAGE}/ui/icons/sodium.png" +""" From b8ec6bc78a628b238c0008777e308b6560f758d1 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Mon, 8 Jan 2024 22:16:57 +0100 Subject: [PATCH 1488/3180] Make the drivers and drivers-initfs recipes agnostic to package location --- recipes/core/drivers-initfs/recipe.toml | 3 ++- recipes/core/drivers/recipe.toml | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/recipes/core/drivers-initfs/recipe.toml b/recipes/core/drivers-initfs/recipe.toml index 80622ca8..ddb2e209 100644 --- a/recipes/core/drivers-initfs/recipe.toml +++ b/recipes/core/drivers-initfs/recipe.toml @@ -49,7 +49,8 @@ mkdir -pv "${COOKBOOK_STAGE}/bin" for bin in "${BINS[@]}" do "${COOKBOOK_CARGO}" rustc --release \ - --manifest-path "${COOKBOOK_SOURCE}/${bin}/Cargo.toml" \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + -p "${bin}" \ --bin "${bin}" \ -- \ -C opt-level=s \ diff --git a/recipes/core/drivers/recipe.toml b/recipes/core/drivers/recipe.toml index 8d3f5d23..076d703e 100644 --- a/recipes/core/drivers/recipe.toml +++ b/recipes/core/drivers/recipe.toml @@ -35,7 +35,8 @@ mkdir -pv "${COOKBOOK_STAGE}/bin" for bin in "${BINS[@]}" do "${COOKBOOK_CARGO}" rustc --release \ - --manifest-path "${COOKBOOK_SOURCE}/${bin}/Cargo.toml" \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + -p "${bin}" \ --bin "${bin}" \ -- \ -C opt-level=s \ From c5979ec5baea6f15e38f3b2edf53ef69acdffd64 Mon Sep 17 00:00:00 2001 From: Ron Williams Date: Mon, 8 Jan 2024 13:40:29 -0800 Subject: [PATCH 1489/3180] add debug option and disable strip if desired --- src/bin/cook.rs | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index c6983d6e..9c78ebc6 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -444,6 +444,16 @@ export PKG_CONFIG_PATH= export PKG_CONFIG_LIBDIR="${COOKBOOK_SYSROOT}/lib/pkgconfig" export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" +# To build the debug version of a Cargo program, add COOKBOOK_DEBUG=true, and +# to not strip symbols from the final package, add COOKBOOK_NOSTRIP=true to the recipe +# (or to your environment) before calling cookbook_cargo or cookbook_cargo_packages +build_type=release +if [ ! -z "${COOKBOOK_DEBUG}" ] +then + install_flags=--debug + build_type=debug +fi + # cargo template COOKBOOK_CARGO="${COOKBOOK_REDOXER}" function cookbook_cargo { @@ -452,6 +462,7 @@ function cookbook_cargo { --root "${COOKBOOK_STAGE}/usr" \ --locked \ --no-track \ + ${install_flags} \ "$@" } @@ -463,10 +474,10 @@ function cookbook_cargo_examples { "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ --example "${example}" \ - --release + --${build_type} mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ - "target/${TARGET}/release/examples/${example}" \ + "target/${TARGET}/${build_type}/examples/${example}" \ "${COOKBOOK_STAGE}/usr/bin/${recipe}_${example}" done } @@ -479,10 +490,10 @@ function cookbook_cargo_packages { "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ --package "${package}" \ - --release + --${build_type} mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ - "target/${TARGET}/release/${package}" \ + "target/${TARGET}/${build_type}/${package}" \ "${COOKBOOK_STAGE}/usr/bin/${recipe}_${package}" done } @@ -506,12 +517,12 @@ function cookbook_configure { let post_script = r#"# Common post script # Strip binaries -if [ -d "${COOKBOOK_STAGE}/bin" ] +if [ -d "${COOKBOOK_STAGE}/bin" ] && [ -z "${COOKBOOK_NOSTRIP}" ] then find "${COOKBOOK_STAGE}/bin" -type f -exec "${TARGET}-strip" -v {} ';' fi -if [ -d "${COOKBOOK_STAGE}/usr/bin" ] +if [ -d "${COOKBOOK_STAGE}/usr/bin" ] && [ -z "${COOKBOOK_NOSTRIP}" ] then find "${COOKBOOK_STAGE}/usr/bin" -type f -exec "${TARGET}-strip" -v {} ';' fi From 21c62f8d899a18b7bd4a5ff508e053606ac2bf28 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 8 Jan 2024 14:52:07 -0700 Subject: [PATCH 1490/3180] userutils, uutils, zerod: use /usr/bin --- recipes/core/userutils/recipe.toml | 8 ++++---- recipes/core/uutils/recipe.toml | 2 +- recipes/core/zerod/recipe.toml | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/recipes/core/userutils/recipe.toml b/recipes/core/userutils/recipe.toml index ec1920b8..ef6c897b 100644 --- a/recipes/core/userutils/recipe.toml +++ b/recipes/core/userutils/recipe.toml @@ -6,8 +6,8 @@ template = "custom" script = """ cookbook_cargo cp -rv "${COOKBOOK_SOURCE}/res" "${COOKBOOK_STAGE}/etc" -ln -s id "${COOKBOOK_STAGE}/bin/whoami" -chmod +s "${COOKBOOK_STAGE}/bin/passwd" -chmod +s "${COOKBOOK_STAGE}/bin/sudo" -chmod +s "${COOKBOOK_STAGE}/bin/su" +ln -s id "${COOKBOOK_STAGE}/usr/bin/whoami" +chmod +s "${COOKBOOK_STAGE}/usr/bin/passwd" +chmod +s "${COOKBOOK_STAGE}/usr/bin/sudo" +chmod +s "${COOKBOOK_STAGE}/usr/bin/su" """ diff --git a/recipes/core/uutils/recipe.toml b/recipes/core/uutils/recipe.toml index 5c75f10e..3f25cc78 100644 --- a/recipes/core/uutils/recipe.toml +++ b/recipes/core/uutils/recipe.toml @@ -80,6 +80,6 @@ BINS=( for bin in "${BINS[@]}" do - ln -sv coreutils "${COOKBOOK_STAGE}/bin/$bin" + ln -sv coreutils "${COOKBOOK_STAGE}/usr/bin/$bin" done """ diff --git a/recipes/core/zerod/recipe.toml b/recipes/core/zerod/recipe.toml index be70616f..0e8a3384 100644 --- a/recipes/core/zerod/recipe.toml +++ b/recipes/core/zerod/recipe.toml @@ -7,7 +7,7 @@ script = """ cookbook_cargo --bin zerod # TODO: symlinks aren't supported by redox-initfs -#ln -sv zerod "${COOKBOOK_STAGE}/bin/nulld" +#ln -sv zerod "${COOKBOOK_STAGE}/usr/bin/nulld" -cp "${COOKBOOK_STAGE}/bin/zerod" "${COOKBOOK_STAGE}/bin/nulld" +cp "${COOKBOOK_STAGE}/usr/bin/zerod" "${COOKBOOK_STAGE}/usr/bin/nulld" """ From a19a406e4dfe4363dd7f757525920cb7adfe059f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 8 Jan 2024 15:56:37 -0700 Subject: [PATCH 1491/3180] initfs: move /usr/bin executables to /bin --- recipes/core/initfs/recipe.toml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/recipes/core/initfs/recipe.toml b/recipes/core/initfs/recipe.toml index ddb39b60..6c468e71 100644 --- a/recipes/core/initfs/recipe.toml +++ b/recipes/core/initfs/recipe.toml @@ -27,6 +27,14 @@ elif [ -e ${COOKBOOK_RECIPE}/${TARGET}/init.rc ]; then cp "${COOKBOOK_RECIPE}/${TARGET}/init.rc" "${COOKBOOK_BUILD}/initfs/etc/init.rc" fi +# Move /usr/bin files to /bin +mkdir -p "${COOKBOOK_BUILD}/initfs/bin" +if [ -d "${COOKBOOK_BUILD}/initfs/usr/bin" ] +then + mv "${COOKBOOK_BUILD}/initfs/usr/bin/"* "${COOKBOOK_BUILD}/initfs/bin" + rmdir "${COOKBOOK_BUILD}/initfs/usr/bin" +fi + for bin in ${INITFS_RM_BINS}; do rm -f "${COOKBOOK_BUILD}/initfs/bin/$bin" done From 30b01b4326c5063b864a210b252795cb9202815d Mon Sep 17 00:00:00 2001 From: Ron Williams Date: Tue, 9 Jan 2024 16:23:24 -0800 Subject: [PATCH 1492/3180] correct install path for orbutils and orbterm --- recipes/gui/orbterm/recipe.toml | 8 ++++++-- recipes/gui/orbutils/recipe.toml | 15 ++++++++++++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/recipes/gui/orbterm/recipe.toml b/recipes/gui/orbterm/recipe.toml index 2d247c14..84aefb2d 100644 --- a/recipes/gui/orbterm/recipe.toml +++ b/recipes/gui/orbterm/recipe.toml @@ -4,8 +4,12 @@ git = "https://gitlab.redox-os.org/redox-os/orbterm.git" [build] template = "custom" script = """ -COOKBOOK_STAGE="${COOKBOOK_STAGE}/ui" -cookbook_cargo +"${COOKBOOK_CARGO}" install \ + --path "${COOKBOOK_SOURCE}" \ + --root "${COOKBOOK_STAGE}/ui" \ + --locked \ + --no-track \ + ${install_flags} """ [package] diff --git a/recipes/gui/orbutils/recipe.toml b/recipes/gui/orbutils/recipe.toml index b38bb830..9e36357d 100644 --- a/recipes/gui/orbutils/recipe.toml +++ b/recipes/gui/orbutils/recipe.toml @@ -4,12 +4,21 @@ git = "https://gitlab.redox-os.org/redox-os/orbutils.git" [build] template = "custom" script = """ -COOKBOOK_STAGE="${COOKBOOK_STAGE}/ui" ORIGINAL_SOURCE="${COOKBOOK_SOURCE}" COOKBOOK_SOURCE="${ORIGINAL_SOURCE}/orbutils" -cookbook_cargo +"${COOKBOOK_CARGO}" install \ + --path "${COOKBOOK_SOURCE}" \ + --root "${COOKBOOK_STAGE}/ui" \ + --locked \ + --no-track \ + ${install_flags} COOKBOOK_SOURCE="${ORIGINAL_SOURCE}/calculator" -cookbook_cargo +"${COOKBOOK_CARGO}" install \ + --path "${COOKBOOK_SOURCE}" \ + --root "${COOKBOOK_STAGE}/ui" \ + --locked \ + --no-track \ + ${install_flags} """ From b48e5bd629d27152c93742ec29d92d578e18eaa1 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Tue, 9 Jan 2024 11:56:34 +0100 Subject: [PATCH 1493/3180] Update pkgutils --- Cargo.lock | 160 ++++++++++++++++++++--------------------------------- pkgutils | 2 +- 2 files changed, 61 insertions(+), 101 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 22e97a6a..6a39a6d1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -32,7 +32,7 @@ dependencies = [ "cfg-if 1.0.0", "cipher", "cpufeatures", - "opaque-debug 0.3.0", + "opaque-debug", ] [[package]] @@ -158,9 +158,9 @@ checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "bidir-map" -version = "0.6.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c3d05037e57974413eef55a8505df19de3cb4dc7a8f8389e1588ec492ae9c73" +checksum = "75bf05cf4e05e803d8458ba57c61201b90068fa39f9200962fa401cd5f9ab403" [[package]] name = "bitflags" @@ -225,14 +225,12 @@ dependencies = [ [[package]] name = "block-buffer" -version = "0.7.3" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" dependencies = [ "block-padding", - "byte-tools", - "byteorder", - "generic-array 0.12.4", + "generic-array", ] [[package]] @@ -241,17 +239,14 @@ version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "generic-array 0.14.7", + "generic-array", ] [[package]] name = "block-padding" -version = "0.1.5" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" -dependencies = [ - "byte-tools", -] +checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" [[package]] name = "bumpalo" @@ -259,12 +254,6 @@ version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" -[[package]] -name = "byte-tools" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" - [[package]] name = "bytecount" version = "0.6.3" @@ -318,7 +307,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" dependencies = [ - "generic-array 0.14.7", + "generic-array", ] [[package]] @@ -436,7 +425,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "generic-array 0.14.7", + "generic-array", "typenum", ] @@ -446,26 +435,17 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" dependencies = [ - "generic-array 0.14.7", + "generic-array", "subtle", ] -[[package]] -name = "digest" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" -dependencies = [ - "generic-array 0.12.4", -] - [[package]] name = "digest" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "generic-array 0.14.7", + "generic-array", ] [[package]] @@ -627,9 +607,9 @@ dependencies = [ [[package]] name = "fixedbitset" -version = "0.1.9" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86d4de0081402f5e88cdac65c8dcdcc73118c1a7a465e2a05f0da05843a8ea33" +checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" [[package]] name = "fscommon" @@ -656,15 +636,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "generic-array" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" -dependencies = [ - "typenum", -] - [[package]] name = "generic-array" version = "0.14.7" @@ -715,6 +686,12 @@ dependencies = [ "uuid", ] +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + [[package]] name = "hashbrown" version = "0.14.0" @@ -822,6 +799,16 @@ dependencies = [ "unicode-normalization", ] +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + [[package]] name = "indexmap" version = "2.0.0" @@ -829,7 +816,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.14.0", ] [[package]] @@ -879,14 +866,22 @@ checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "libflate" -version = "0.1.27" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9135df43b1f5d0e333385cb6e7897ecd1a43d7d11b91ac003f4d2c2d2401fdd" +checksum = "5ff4ae71b685bbad2f2f391fe74f6b7659a34871c08b210fdc039e43bee07d18" dependencies = [ "adler32", "crc32fast", + "libflate_lz77", +] + +[[package]] +name = "libflate_lz77" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a52d3a8bfc85f250440e4424db7d857e241a3aebbbe301f3eb606ab15c39acbf" +dependencies = [ "rle-decode-fast", - "take_mut", ] [[package]] @@ -1012,30 +1007,12 @@ version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" -[[package]] -name = "opaque-debug" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" - [[package]] name = "opaque-debug" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" -[[package]] -name = "ordermap" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b81cf3b8cb96aa0e73bbedfcdc9708d09fec2854ba8d474be4e6f666d7379e8b" - -[[package]] -name = "ordermap" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a86ed3f5f244b372d6b1a00b72ef7f8876d0bc6a78a4c9985c53614041512063" - [[package]] name = "page_size" version = "0.4.2" @@ -1074,12 +1051,12 @@ checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" [[package]] name = "petgraph" -version = "0.4.13" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3659d1ee90221741f65dd128d9998311b0e40c5d3c23a62445938214abce4f" +checksum = "467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7" dependencies = [ "fixedbitset", - "ordermap 0.3.5", + "indexmap 1.9.3", ] [[package]] @@ -1249,9 +1226,9 @@ dependencies = [ [[package]] name = "redox_installer" -version = "0.2.13" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cc9fcfc6c1685dbb258f28d39cb2c45c6da3179ec12c0cee565912e22a069ac" +checksum = "a69427a6b5ecba62c7899af4153392d7871b144735df74913b22f093f6d568b3" dependencies = [ "arg_parser", "failure", @@ -1289,16 +1266,16 @@ dependencies = [ [[package]] name = "redox_pkgutils" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdf753c67a43031ca0aa5661c1808edc4f94118f1daa368df38b641de8d74a91" +checksum = "b362a4e7daec262c20460d92bd35a7d8f25311af7211ead38bdd419e6b90a9f9" dependencies = [ "bidir-map", "clap", "hyper", "hyper-rustls", + "indexmap 1.9.3", "libflate", - "ordermap 0.2.13", "pbr", "petgraph", "redox_liner", @@ -1306,7 +1283,7 @@ dependencies = [ "serde_derive", "sha3", "tar", - "toml 0.4.10", + "toml 0.5.11", "version-compare", ] @@ -1380,15 +1357,14 @@ dependencies = [ [[package]] name = "redoxfs" -version = "0.5.8" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c1effb4750117347c5f64723b80251f7e73cd8863bdaf4116c485944e6111d0" +checksum = "ab8570858b6b17849dce23eab63f7e659bb274c933da061b85e60010e53a3df7" dependencies = [ "aes", "argon2", "base64ct", "env_logger", - "failure", "fuser", "getrandom 0.2.10", "libc", @@ -1572,15 +1548,14 @@ dependencies = [ [[package]] name = "sha3" -version = "0.8.2" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecf" +checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" dependencies = [ - "block-buffer 0.7.3", - "byte-tools", - "digest 0.8.1", + "block-buffer 0.9.0", + "digest 0.9.0", "keccak", - "opaque-debug 0.2.3", + "opaque-debug", ] [[package]] @@ -1652,12 +1627,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "take_mut" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" - [[package]] name = "tar" version = "0.4.40" @@ -1758,15 +1727,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" -[[package]] -name = "toml" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f" -dependencies = [ - "serde", -] - [[package]] name = "toml" version = "0.5.11" @@ -1803,7 +1763,7 @@ version = "0.19.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" dependencies = [ - "indexmap", + "indexmap 2.0.0", "serde", "serde_spanned", "toml_datetime", diff --git a/pkgutils b/pkgutils index 410b9b07..ded66a6e 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit 410b9b0761d9c933490e9ee2c0668eea9d9af181 +Subproject commit ded66a6e557c6384026d2394b7624a12d66f53d7 From 0618174ab98be2ab4496b692b9d160ebd8bec456 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 10 Jan 2024 18:20:46 +0000 Subject: [PATCH 1494/3180] Migrate some WIP recipes to /usr --- recipes/wip/ani-cli/recipe.toml | 6 +++--- recipes/wip/ani-skip/recipe.toml | 6 +++--- recipes/wip/dra-cla/recipe.toml | 6 +++--- recipes/wip/hickory-dns/recipe.toml | 4 ++-- recipes/wip/humphrey/recipe.toml | 14 +++++++------- recipes/wip/intermodal/recipe.toml | 2 +- recipes/wip/jerry/recipe.toml | 6 +++--- recipes/wip/lobster/recipe.toml | 6 +++--- recipes/wip/lsix/recipe.toml | 10 +++------- recipes/wip/neofetch/recipe.toml | 6 +++--- recipes/wip/niri/recipe.toml | 4 ++-- recipes/wip/symphonia-play/recipe.toml | 2 +- 12 files changed, 34 insertions(+), 38 deletions(-) diff --git a/recipes/wip/ani-cli/recipe.toml b/recipes/wip/ani-cli/recipe.toml index 8fd8bbf1..bac9aae4 100644 --- a/recipes/wip/ani-cli/recipe.toml +++ b/recipes/wip/ani-cli/recipe.toml @@ -5,7 +5,7 @@ rev = "4a77bca5d95ae755ab5ac129c2db2025feab217b" [build] template = "custom" script = """ -mkdir -pv "${COOKBOOK_STAGE}"/bin -cp "${COOKBOOK_SOURCE}"/ani-cli "${COOKBOOK_STAGE}"/bin/ani-cli -chmod a+x "${COOKBOOK_STAGE}"/bin/ani-cli +mkdir -pv "${COOKBOOK_STAGE}"/usr/bin +cp "${COOKBOOK_SOURCE}"/ani-cli "${COOKBOOK_STAGE}"/usr/bin/ani-cli +chmod a+x "${COOKBOOK_STAGE}"/usr/bin/ani-cli """ diff --git a/recipes/wip/ani-skip/recipe.toml b/recipes/wip/ani-skip/recipe.toml index 454b15df..7af44b1f 100644 --- a/recipes/wip/ani-skip/recipe.toml +++ b/recipes/wip/ani-skip/recipe.toml @@ -4,9 +4,9 @@ git = "https://github.com/synacktraa/ani-skip" [build] template = "custom" script = """ -mkdir -pv "${COOKBOOK_STAGE}"/bin +mkdir -pv "${COOKBOOK_STAGE}"/usr/bin mkdir -pv "${COOKBOOK_STAGE}"/home/user/.config/mpv/scripts -cp "${COOKBOOK_SOURCE}"/ani-skip "${COOKBOOK_STAGE}"/bin/ani-skip +cp "${COOKBOOK_SOURCE}"/ani-skip "${COOKBOOK_STAGE}"/usr/bin/ani-skip cp "${COOKBOOK_SOURCE}"/skip.lua "${COOKBOOK_STAGE}"/home/user/.config/mpv/scripts -chmod a+x "${COOKBOOK_STAGE}"/bin/ani-skip +chmod a+x "${COOKBOOK_STAGE}"/usr/bin/ani-skip """ diff --git a/recipes/wip/dra-cla/recipe.toml b/recipes/wip/dra-cla/recipe.toml index 04370b48..c201a2d1 100644 --- a/recipes/wip/dra-cla/recipe.toml +++ b/recipes/wip/dra-cla/recipe.toml @@ -4,7 +4,7 @@ git = "https://github.com/CoolnsX/dra-cla" [build] template = "custom" script = """ -mkdir -pv "${COOKBOOK_STAGE}"/bin -cp "${COOKBOOK_SOURCE}"/dra-cla "${COOKBOOK_STAGE}"/bin/dra-cla -chmod a+x "${COOKBOOK_STAGE}"/bin/dra-cla +mkdir -pv "${COOKBOOK_STAGE}"/usr/bin +cp "${COOKBOOK_SOURCE}"/dra-cla "${COOKBOOK_STAGE}"/usr/bin/dra-cla +chmod a+x "${COOKBOOK_STAGE}"/usr/bin/dra-cla """ diff --git a/recipes/wip/hickory-dns/recipe.toml b/recipes/wip/hickory-dns/recipe.toml index 5d3bb1a0..399ad9fc 100644 --- a/recipes/wip/hickory-dns/recipe.toml +++ b/recipes/wip/hickory-dns/recipe.toml @@ -14,8 +14,8 @@ binary=hickory-dns --bin "${binary}" \ --release --all-features - mkdir -pv "${COOKBOOK_STAGE}/bin" + mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ "target/${TARGET}/release/${binary}" \ - "${COOKBOOK_STAGE}/bin/${binary}" + "${COOKBOOK_STAGE}/usr/bin/${binary}" """ diff --git a/recipes/wip/humphrey/recipe.toml b/recipes/wip/humphrey/recipe.toml index a3dadf1d..19c4e438 100644 --- a/recipes/wip/humphrey/recipe.toml +++ b/recipes/wip/humphrey/recipe.toml @@ -1,17 +1,17 @@ -#TODO wrong script +#TODO not compiled or tested [source] git = "https://github.com/w-henderson/Humphrey" [build] template = "custom" script = """ -package="humphrey_server" +binary=humphrey_server "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ - --package "${package}" \ + --bin "${binary}" \ --release - --all-features - mkdir -pv "${COOKBOOK_STAGE}/bin" + --all-features + mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ - "target/${TARGET}/release/${package}" \ - "${COOKBOOK_STAGE}/bin/${package}" + "target/${TARGET}/release/${binary}" \ + "${COOKBOOK_STAGE}/usr/bin/${binary}" """ diff --git a/recipes/wip/intermodal/recipe.toml b/recipes/wip/intermodal/recipe.toml index 2efca300..493823ff 100644 --- a/recipes/wip/intermodal/recipe.toml +++ b/recipes/wip/intermodal/recipe.toml @@ -5,5 +5,5 @@ git = "https://github.com/casey/intermodal" template = "custom" script = """ cookbook_cargo -mv "${COOKBOOK_STAGE}/bin/imdl" "${COOKBOOK_STAGE}/bin/intermodal" +mv "${COOKBOOK_STAGE}/usr/bin/imdl" "${COOKBOOK_STAGE}/usr/bin/intermodal" """ diff --git a/recipes/wip/jerry/recipe.toml b/recipes/wip/jerry/recipe.toml index 7d5c1f1b..5e32f69e 100644 --- a/recipes/wip/jerry/recipe.toml +++ b/recipes/wip/jerry/recipe.toml @@ -4,7 +4,7 @@ git = "https://github.com/justchokingaround/jerry" [build] template = "custom" script = """ -mkdir -pv "${COOKBOOK_STAGE}"/bin -cp "${COOKBOOK_SOURCE}"/jerry.sh "${COOKBOOK_STAGE}"/bin/jerry -chmod a+x "${COOKBOOK_STAGE}"/bin/jerry +mkdir -pv "${COOKBOOK_STAGE}"/usr/bin +cp "${COOKBOOK_SOURCE}"/jerry.sh "${COOKBOOK_STAGE}"/usr/bin/jerry +chmod a+x "${COOKBOOK_STAGE}"/usr/bin/jerry """ diff --git a/recipes/wip/lobster/recipe.toml b/recipes/wip/lobster/recipe.toml index 04a277f7..0c32de9f 100644 --- a/recipes/wip/lobster/recipe.toml +++ b/recipes/wip/lobster/recipe.toml @@ -4,7 +4,7 @@ git = "https://github.com/justchokingaround/lobster" [build] template = "custom" script = """ -mkdir -pv "${COOKBOOK_STAGE}"/bin -cp "${COOKBOOK_SOURCE}"/lobster.sh "${COOKBOOK_STAGE}"/bin/lobster -chmod a+x "${COOKBOOK_STAGE}"/bin/lobster +mkdir -pv "${COOKBOOK_STAGE}"/usr/bin +cp "${COOKBOOK_SOURCE}"/lobster.sh "${COOKBOOK_STAGE}"/usr/bin/lobster +chmod a+x "${COOKBOOK_STAGE}"/usr/bin/lobster """ diff --git a/recipes/wip/lsix/recipe.toml b/recipes/wip/lsix/recipe.toml index 7a42e18d..0e48e66a 100644 --- a/recipes/wip/lsix/recipe.toml +++ b/recipes/wip/lsix/recipe.toml @@ -4,11 +4,7 @@ git = "https://github.com/hackerb9/lsix" [build] template = "custom" script = """ -mkdir -pv "${COOKBOOK_STAGE}"/bin -cp "${COOKBOOK_SOURCE}"/lsix "${COOKBOOK_STAGE}"/bin/lsix -chmod a+x "${COOKBOOK_STAGE}"/bin/lsix +mkdir -pv "${COOKBOOK_STAGE}"/usr/bin +cp "${COOKBOOK_SOURCE}"/lsix "${COOKBOOK_STAGE}"/usr/bin/lsix +chmod a+x "${COOKBOOK_STAGE}"/usr/bin/lsix """ -[package] -dependencies = [ - "imagemagick7", -] diff --git a/recipes/wip/neofetch/recipe.toml b/recipes/wip/neofetch/recipe.toml index d53772fe..f1438fbd 100644 --- a/recipes/wip/neofetch/recipe.toml +++ b/recipes/wip/neofetch/recipe.toml @@ -5,7 +5,7 @@ rev = "60d07dee6b76769d8c487a40639fb7b5a1a7bc85" [build] template = "custom" script = """ -mkdir -pv "${COOKBOOK_STAGE}"/bin -cp "${COOKBOOK_SOURCE}"/neofetch "${COOKBOOK_STAGE}"/bin/neofetch -chmod a+x "${COOKBOOK_STAGE}"/bin/neofetch +mkdir -pv "${COOKBOOK_STAGE}"/usr/bin +cp "${COOKBOOK_SOURCE}"/neofetch "${COOKBOOK_STAGE}"/usr/bin/neofetch +chmod a+x "${COOKBOOK_STAGE}"/usr/bin/neofetch """ diff --git a/recipes/wip/niri/recipe.toml b/recipes/wip/niri/recipe.toml index 76763e59..582004fe 100644 --- a/recipes/wip/niri/recipe.toml +++ b/recipes/wip/niri/recipe.toml @@ -8,10 +8,10 @@ dependencies = [ "libwayland", ] script = """ -mkdir -pv "${COOKBOOK_STAGE}"/bin +mkdir -pv "${COOKBOOK_STAGE}"/usr/bin mkdir -pv "${COOKBOOK_STAGE}"/home/user/.local/share/wayland-sessions mkdir -pv "${COOKBOOK_STAGE}"/home/user/.local/share/xdg-desktop-portal -cp -rv "${COOKBOOK_SOURCE}"/resources/niri-session "${COOKBOOK_STAGE}"/bin +cp -rv "${COOKBOOK_SOURCE}"/resources/niri-session "${COOKBOOK_STAGE}"/usr/bin cp -rv "${COOKBOOK_SOURCE}"/resources/niri.desktop "${COOKBOOK_STAGE}"/home/user/.local/share/wayland-sessions cp -rv "${COOKBOOK_SOURCE}"/resources/niri-portals.conf "${COOKBOOK_STAGE}"/home/user/.local/share/xdg-desktop-portal cookbook_cargo diff --git a/recipes/wip/symphonia-play/recipe.toml b/recipes/wip/symphonia-play/recipe.toml index b6f2a409..09f2292b 100644 --- a/recipes/wip/symphonia-play/recipe.toml +++ b/recipes/wip/symphonia-play/recipe.toml @@ -6,5 +6,5 @@ git = "https://github.com/pdeljanov/Symphonia" template = "custom" script = """ cookbook_cargo_packages symphonia-play -mv "${COOKBOOK_STAGE}/bin/symphonia-play_symphonia-play" "${COOKBOOK_STAGE}/bin/symphonia-play" +mv "${COOKBOOK_STAGE}/usr/bin/symphonia-play_symphonia-play" "${COOKBOOK_STAGE}/usr/bin/symphonia-play" """ From 903ec672921b74e1c17e7e53b548f0a33e90eda1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 10 Jan 2024 18:27:37 +0000 Subject: [PATCH 1495/3180] migrate more recipes to /usr --- recipes/wip/0ad-data/recipe.toml | 4 ++-- recipes/wip/hyprland/recipe.toml | 4 ++-- recipes/wip/niri/recipe.toml | 8 ++++---- recipes/wip/satty/recipe.toml | 8 ++++---- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/recipes/wip/0ad-data/recipe.toml b/recipes/wip/0ad-data/recipe.toml index 008a3102..73243c0b 100644 --- a/recipes/wip/0ad-data/recipe.toml +++ b/recipes/wip/0ad-data/recipe.toml @@ -4,6 +4,6 @@ tar = "https://releases.wildfiregames.com/0ad-0.0.26-alpha-unix-data.tar.xz" [build] template = "custom" script = """ -mkdir -pv "${COOKBOOK_STAGE}"/home/user/.local/share/0ad/ -cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/home/user/.local/share/0ad/ +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/0ad/ +cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/share/0ad/ """ diff --git a/recipes/wip/hyprland/recipe.toml b/recipes/wip/hyprland/recipe.toml index ee54a979..a4b04d72 100644 --- a/recipes/wip/hyprland/recipe.toml +++ b/recipes/wip/hyprland/recipe.toml @@ -19,6 +19,6 @@ dependencies = [ "libxfixes", ] script = """ -mkdir -pv "${COOKBOOK_STAGE}"/home/user/.local/share/wayland-sessions -cp -rv "${COOKBOOK_SOURCE}"/example/hyprland.desktop "${COOKBOOK_STAGE}"/home/user/.local/share/wayland-sessions +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/wayland-sessions +cp -rv "${COOKBOOK_SOURCE}"/example/hyprland.desktop "${COOKBOOK_STAGE}"/usr/share/wayland-sessions """ diff --git a/recipes/wip/niri/recipe.toml b/recipes/wip/niri/recipe.toml index 582004fe..861d7114 100644 --- a/recipes/wip/niri/recipe.toml +++ b/recipes/wip/niri/recipe.toml @@ -9,10 +9,10 @@ dependencies = [ ] script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/bin -mkdir -pv "${COOKBOOK_STAGE}"/home/user/.local/share/wayland-sessions -mkdir -pv "${COOKBOOK_STAGE}"/home/user/.local/share/xdg-desktop-portal +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/wayland-sessions +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/xdg-desktop-portal cp -rv "${COOKBOOK_SOURCE}"/resources/niri-session "${COOKBOOK_STAGE}"/usr/bin -cp -rv "${COOKBOOK_SOURCE}"/resources/niri.desktop "${COOKBOOK_STAGE}"/home/user/.local/share/wayland-sessions -cp -rv "${COOKBOOK_SOURCE}"/resources/niri-portals.conf "${COOKBOOK_STAGE}"/home/user/.local/share/xdg-desktop-portal +cp -rv "${COOKBOOK_SOURCE}"/resources/niri.desktop "${COOKBOOK_STAGE}"/usr/share/wayland-sessions +cp -rv "${COOKBOOK_SOURCE}"/resources/niri-portals.conf "${COOKBOOK_STAGE}"/usr/share/xdg-desktop-portal cookbook_cargo """ diff --git a/recipes/wip/satty/recipe.toml b/recipes/wip/satty/recipe.toml index 7dfcb0a1..4e403a7d 100644 --- a/recipes/wip/satty/recipe.toml +++ b/recipes/wip/satty/recipe.toml @@ -12,9 +12,9 @@ dependencies = [ "gdk-pixbuf", ] script = """ -mkdir -pv "${COOKBOOK_STAGE}"/home/user/.local/share/applications -mkdir -pv "${COOKBOOK_STAGE}"/home/user/.local/share/icons/hicolor/scalable/apps -cp -rv "${COOKBOOK_SOURCE}"/satty.desktop "${COOKBOOK_STAGE}"/home/user/.local/share/applications -cp -rv "${COOKBOOK_SOURCE}"/assets/satty.svg "${COOKBOOK_STAGE}"/home/user/.local/share/icons/hicolor/scalable/apps +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/applications +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/icons/hicolor/scalable/apps +cp -rv "${COOKBOOK_SOURCE}"/satty.desktop "${COOKBOOK_STAGE}"/usr/share/applications +cp -rv "${COOKBOOK_SOURCE}"/assets/satty.svg "${COOKBOOK_STAGE}"/usr/share/icons/hicolor/scalable/apps cookbook_cargo_packages satty """ From 428de5c520e207bcec295bb75ea8c9010d759e9f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 10 Jan 2024 18:42:06 +0000 Subject: [PATCH 1496/3180] Remove hardcoded path on minetest-data recipe --- recipes/wip/minetest-data/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/wip/minetest-data/recipe.toml b/recipes/wip/minetest-data/recipe.toml index e02d822f..eebc0011 100644 --- a/recipes/wip/minetest-data/recipe.toml +++ b/recipes/wip/minetest-data/recipe.toml @@ -5,6 +5,6 @@ rev = "b9c089474cc343b37f90cb8cefc4b5553af2e9ea" [build] template = "custom" script = """ -mkdir -pv "${COOKBOOK_STAGE}"/home/user/.minetest/games/minetest_game -cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/home/user/.minetest/games/minetest_game +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/minetest/games/minetest_game +cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/share/minetest/games/minetest_game """ From f845feb35215967ba5c350822cb6733ec9b534e1 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Fri, 12 Jan 2024 13:49:06 +0100 Subject: [PATCH 1497/3180] Rebuild sysroot if dependencies change This make a simple make r.initfs enough to rebuild the initfs when changing drivers. Previously make cr.initfs was necessary which rebuilds redox-initfs-ar from scratch. --- src/bin/cook.rs | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 9c78ebc6..b2bf5c86 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -356,12 +356,26 @@ fi"#); } fn build(recipe_dir: &Path, source_dir: &Path, target_dir: &Path, build: &BuildRecipe) -> Result { + let mut dep_pkgars = vec![]; + for dependency in build.dependencies.iter() { + //TODO: sanitize name + let dependency_dir = recipe_find(dependency, Path::new("recipes"))?; + if dependency_dir.is_none() { + return Err(format!( + "failed to find recipe directory '{}'", + dependency + )); + } + dep_pkgars.push(dependency_dir.unwrap().join("target").join(redoxer::target()).join("stage.pkgar")); + } + let source_modified = modified_dir_ignore_git(source_dir)?; + let deps_modified = dep_pkgars.iter().map(|pkgar| modified(pkgar)).max().unwrap_or(Ok(SystemTime::UNIX_EPOCH))?; let sysroot_dir = target_dir.join("sysroot"); // Rebuild sysroot if source is newer //TODO: rebuild on recipe changes - if sysroot_dir.is_dir() && modified_dir(&sysroot_dir)? < source_modified { + if sysroot_dir.is_dir() && (modified_dir(&sysroot_dir)? < source_modified || modified_dir(&sysroot_dir)? < deps_modified) { eprintln!("DEBUG: '{}' newer than '{}'", source_dir.display(), sysroot_dir.display()); remove_all(&sysroot_dir)?; } @@ -375,24 +389,15 @@ fn build(recipe_dir: &Path, source_dir: &Path, target_dir: &Path, build: &BuildR // Make sure sysroot/lib exists create_dir(&sysroot_dir_tmp.join("lib"))?; - for dependency in build.dependencies.iter() { + for archive_path in dep_pkgars { let public_path = "build/id_ed25519.pub.toml"; - //TODO: sanitize name - let dependency_dir = recipe_find(dependency, Path::new("recipes"))?; - if dependency_dir.is_none() { - return Err(format!( - "failed to find recipe directory '{}'", - dependency - )); - } - let archive_path = format!("{}/target/{}/stage.pkgar", dependency_dir.unwrap().display(), redoxer::target()); pkgar::extract( public_path, &archive_path, sysroot_dir_tmp.to_str().unwrap() ).map_err(|err| format!( "failed to install '{}' in '{}': {:?}", - archive_path, + archive_path.display(), sysroot_dir_tmp.display(), err ))?; @@ -405,7 +410,7 @@ fn build(recipe_dir: &Path, source_dir: &Path, target_dir: &Path, build: &BuildR let stage_dir = target_dir.join("stage"); // Rebuild stage if source is newer //TODO: rebuild on recipe changes - if stage_dir.is_dir() && modified_dir(&stage_dir)? < source_modified { + if stage_dir.is_dir() && (modified_dir(&stage_dir)? < source_modified || modified_dir(&stage_dir)? < deps_modified) { eprintln!("DEBUG: '{}' newer than '{}'", source_dir.display(), stage_dir.display()); remove_all(&stage_dir)?; } From ea3b696975551a9ba46752ae2887c481b1d2ea34 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 12 Jan 2024 15:13:32 -0700 Subject: [PATCH 1498/3180] wip/libnettle: fix recipe --- recipes/wip/libnettle/recipe.toml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/recipes/wip/libnettle/recipe.toml b/recipes/wip/libnettle/recipe.toml index a403ab32..79a2a647 100644 --- a/recipes/wip/libnettle/recipe.toml +++ b/recipes/wip/libnettle/recipe.toml @@ -1,9 +1,9 @@ -#TODO make gnutls work [source] -tar = "https://ftp.gnu.org/gnu/nettle/nettle-3.8.1.tar.gz" +tar = "https://ftp.gnu.org/gnu/nettle/nettle-3.9.1.tar.gz" +blake3 = "e4bfbda32f4fdf5ed96c152efe3a3867193b690faa5378d02a2a6fd052ee3393" + [build] template = "configure" -depencencies = [ - "gnutls", - "libgmp", +dependencies = [ + "libgmp" ] From 25297b28cc2a6bde5fff6f837084fa6699c33453 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 12 Jan 2024 15:15:50 -0700 Subject: [PATCH 1499/3180] Promote libnettle to libs --- recipes/libs/libnettle/recipe.toml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 recipes/libs/libnettle/recipe.toml diff --git a/recipes/libs/libnettle/recipe.toml b/recipes/libs/libnettle/recipe.toml new file mode 100644 index 00000000..79a2a647 --- /dev/null +++ b/recipes/libs/libnettle/recipe.toml @@ -0,0 +1,9 @@ +[source] +tar = "https://ftp.gnu.org/gnu/nettle/nettle-3.9.1.tar.gz" +blake3 = "e4bfbda32f4fdf5ed96c152efe3a3867193b690faa5378d02a2a6fd052ee3393" + +[build] +template = "configure" +dependencies = [ + "libgmp" +] From 894a3cf9eea3679bef660e1b943dddf37961b226 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 12 Jan 2024 15:16:07 -0700 Subject: [PATCH 1500/3180] Remove old libnettle recipe --- recipes/wip/libnettle/recipe.toml | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 recipes/wip/libnettle/recipe.toml diff --git a/recipes/wip/libnettle/recipe.toml b/recipes/wip/libnettle/recipe.toml deleted file mode 100644 index 79a2a647..00000000 --- a/recipes/wip/libnettle/recipe.toml +++ /dev/null @@ -1,9 +0,0 @@ -[source] -tar = "https://ftp.gnu.org/gnu/nettle/nettle-3.9.1.tar.gz" -blake3 = "e4bfbda32f4fdf5ed96c152efe3a3867193b690faa5378d02a2a6fd052ee3393" - -[build] -template = "configure" -dependencies = [ - "libgmp" -] From 098bc5ce1543730d5cf3ecf75c85d96e0940064e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 12 Jan 2024 15:16:37 -0700 Subject: [PATCH 1501/3180] Make progress on gnutls3 --- recipes/wip/gnutls3/recipe.toml | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/recipes/wip/gnutls3/recipe.toml b/recipes/wip/gnutls3/recipe.toml index f0c06d54..ca15e3d4 100644 --- a/recipes/wip/gnutls3/recipe.toml +++ b/recipes/wip/gnutls3/recipe.toml @@ -1,9 +1,19 @@ -#TODO Weird compilation error with satisfied dependency +#TODO: needs sendmsg [source] -tar = "https://www.gnupg.org/ftp/gcrypt/gnutls/v3.6/gnutls-3.6.16.tar.xz" +tar = "https://www.gnupg.org/ftp/gcrypt/gnutls/v3.7/gnutls-3.7.10.tar.xz" +blake3 = "edcd8a505867226722ae50e0e9bb2bf57a1f38b5674a3028e26f69d2d61957e6" + [build] -template = "configure" +template = "custom" dependencies = [ "libgmp", "libnettle", ] +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --with-included-libtasn1 + --with-included-unistring + --without-p11-kit +) +cookbook_configure +""" From 8281a16572e71986868d9dc11cd381a9a98c99cf Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 12 Jan 2024 15:16:49 -0700 Subject: [PATCH 1502/3180] Make progress on samba --- recipes/wip/samba/answers.txt | 4 ++++ recipes/wip/samba/recipe.toml | 33 ++++++++++++++++++++++++++------- 2 files changed, 30 insertions(+), 7 deletions(-) create mode 100644 recipes/wip/samba/answers.txt diff --git a/recipes/wip/samba/answers.txt b/recipes/wip/samba/answers.txt new file mode 100644 index 00000000..f9dc37fb --- /dev/null +++ b/recipes/wip/samba/answers.txt @@ -0,0 +1,4 @@ +Checking for HAVE_LITTLE_ENDIAN - runtime: OK +Checking for large file support without additional flags: OK +Checking for HAVE_SECURE_MKSTEMP: OK +Checking for HAVE_MREMAP: OK diff --git a/recipes/wip/samba/recipe.toml b/recipes/wip/samba/recipe.toml index b2cd6168..b4cc087b 100644 --- a/recipes/wip/samba/recipe.toml +++ b/recipes/wip/samba/recipe.toml @@ -1,11 +1,30 @@ -#TODO probably wrong tarball -# filesystem support - https://wiki.samba.org/index.php/File_System_Support +#TODO: needs gnutls3 to compile [source] -tar = "https://download.samba.org/pub/samba/samba-4.19.3.tar.gz" +git = "https://gitlab.redox-os.org/redox-os/samba.git" +upstream = "https://github.com/samba-team/samba.git" + [build] -template = "configure" +template = "custom" dependencies = [ - "gnutls", - "zlib", - "kerberos5", + "gnutls3" ] +script = """ +rsync -av --delete --exclude .git "${COOKBOOK_SOURCE}/" ./ +cp -v "${COOKBOOK_RECIPE}/answers.txt" answers.txt + +COOKBOOK_CONFIGURE_FLAGS=( + --builtin-libraries=ALL + --cross-compile + --cross-answers=answers.txt + --disable-python + --disable-rpath + --enable-fhs + --host="${TARGET}" + --localstatedir=/var + --prefix=/usr + --sysconfdir=/etc + --with-static-modules=ALL + --without-ad-dc +) +cookbook_configure +""" From c5179b59f0079029c1e8e520905ee5c460ed0d51 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 12 Jan 2024 15:50:42 -0700 Subject: [PATCH 1503/3180] gnutls3: disable ipv6 --- recipes/wip/gnutls3/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/gnutls3/recipe.toml b/recipes/wip/gnutls3/recipe.toml index ca15e3d4..8325c63b 100644 --- a/recipes/wip/gnutls3/recipe.toml +++ b/recipes/wip/gnutls3/recipe.toml @@ -14,6 +14,7 @@ COOKBOOK_CONFIGURE_FLAGS+=( --with-included-libtasn1 --with-included-unistring --without-p11-kit + gl_cv_socket_ipv6=no ) cookbook_configure """ From 536650c50f020bcc53b9df4a68a390931df35f89 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 12 Jan 2024 16:02:50 -0700 Subject: [PATCH 1504/3180] Promote libarchive to libs --- recipes/{wip => libs}/libarchive/recipe.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) rename recipes/{wip => libs}/libarchive/recipe.toml (57%) diff --git a/recipes/wip/libarchive/recipe.toml b/recipes/libs/libarchive/recipe.toml similarity index 57% rename from recipes/wip/libarchive/recipe.toml rename to recipes/libs/libarchive/recipe.toml index 176b87b1..b5686e0b 100644 --- a/recipes/wip/libarchive/recipe.toml +++ b/recipes/libs/libarchive/recipe.toml @@ -1,5 +1,6 @@ -#TODO Undefined reference to "getgrnam" and "getgrgid" [source] tar = "https://libarchive.org/downloads/libarchive-3.6.2.tar.xz" +blake3 = "f98695fe81235a74fa3fc2c3ba0f0d4f13ea15f9be3850b83e304cf5d78be710" + [build] template = "configure" From 66ef28905a41dc88f9a36980207bfce0b3a155f6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 12 Jan 2024 20:37:15 -0700 Subject: [PATCH 1505/3180] samba: update recipe and answers --- recipes/wip/samba/answers.txt | 1 + recipes/wip/samba/recipe.toml | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/recipes/wip/samba/answers.txt b/recipes/wip/samba/answers.txt index f9dc37fb..54c200d0 100644 --- a/recipes/wip/samba/answers.txt +++ b/recipes/wip/samba/answers.txt @@ -2,3 +2,4 @@ Checking for HAVE_LITTLE_ENDIAN - runtime: OK Checking for large file support without additional flags: OK Checking for HAVE_SECURE_MKSTEMP: OK Checking for HAVE_MREMAP: OK +Checking whether setreuid is available: OK diff --git a/recipes/wip/samba/recipe.toml b/recipes/wip/samba/recipe.toml index b4cc087b..68ba87be 100644 --- a/recipes/wip/samba/recipe.toml +++ b/recipes/wip/samba/recipe.toml @@ -1,4 +1,4 @@ -#TODO: needs gnutls3 to compile +#TODO: needs libmodule-build-parse-yapp-perl dependency [source] git = "https://gitlab.redox-os.org/redox-os/samba.git" upstream = "https://github.com/samba-team/samba.git" @@ -6,7 +6,11 @@ upstream = "https://github.com/samba-team/samba.git" [build] template = "custom" dependencies = [ - "gnutls3" + "gnutls3", + "libarchive", + "libnettle", + "jansson", + "zlib", ] script = """ rsync -av --delete --exclude .git "${COOKBOOK_SOURCE}/" ./ @@ -23,8 +27,14 @@ COOKBOOK_CONFIGURE_FLAGS=( --localstatedir=/var --prefix=/usr --sysconfdir=/etc - --with-static-modules=ALL + --with-static-modules=ALL,!vfs_snapper + --without-acl-support --without-ad-dc + --without-ads + --without-gettext + --without-ldap + --without-libunwind + --without-pam ) cookbook_configure """ From 1d19222629ffece2525b28b59dd2af3361cad24e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 13 Jan 2024 09:52:26 +0000 Subject: [PATCH 1506/3180] add recipes --- recipes/wip/bvr/recipe.toml | 5 +++++ recipes/wip/conceal/recipe.toml | 5 +++++ recipes/wip/lan-mouse/recipe.toml | 9 +++++++++ recipes/wip/wasmtime/recipe.toml | 6 ++++++ 4 files changed, 25 insertions(+) create mode 100644 recipes/wip/bvr/recipe.toml create mode 100644 recipes/wip/conceal/recipe.toml create mode 100644 recipes/wip/lan-mouse/recipe.toml create mode 100644 recipes/wip/wasmtime/recipe.toml diff --git a/recipes/wip/bvr/recipe.toml b/recipes/wip/bvr/recipe.toml new file mode 100644 index 00000000..023e4ab4 --- /dev/null +++ b/recipes/wip/bvr/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Avarel/bvr" +[build] +template = "cargo" diff --git a/recipes/wip/conceal/recipe.toml b/recipes/wip/conceal/recipe.toml new file mode 100644 index 00000000..38806edb --- /dev/null +++ b/recipes/wip/conceal/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/TD-Sky/conceal" +[build] +template = "cargo" diff --git a/recipes/wip/lan-mouse/recipe.toml b/recipes/wip/lan-mouse/recipe.toml new file mode 100644 index 00000000..c5cb6e9d --- /dev/null +++ b/recipes/wip/lan-mouse/recipe.toml @@ -0,0 +1,9 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/feschber/lan-mouse" +[build] +template = "cargo" +dependencies = [ + "libadwaita", + "gtk4", +] diff --git a/recipes/wip/wasmtime/recipe.toml b/recipes/wip/wasmtime/recipe.toml new file mode 100644 index 00000000..f433a457 --- /dev/null +++ b/recipes/wip/wasmtime/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/bytecodealliance/wasmtime" +rev = "6613acd1e4817957a4a7745125ef063b43c273a7" +[build] +template = "cargo" From 775909d2b318a2b71dbfacae583e8775a2dd9000 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 13 Jan 2024 09:59:36 +0000 Subject: [PATCH 1507/3180] add recipes --- recipes/wip/finch/recipe.toml | 14 ++++++++++++++ recipes/wip/pidgin/recipe.toml | 5 +++++ 2 files changed, 19 insertions(+) create mode 100644 recipes/wip/finch/recipe.toml create mode 100644 recipes/wip/pidgin/recipe.toml diff --git a/recipes/wip/finch/recipe.toml b/recipes/wip/finch/recipe.toml new file mode 100644 index 00000000..c7a57854 --- /dev/null +++ b/recipes/wip/finch/recipe.toml @@ -0,0 +1,14 @@ +#TODO missing dependencies +[source] +tar = "https://sourceforge.net/projects/pidgin/files/Pidgin/2.14.12/pidgin-2.14.12.tar.bz2" +[build] +template = "custom" +dependencies = [ + "ncurses", +] +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --disable-gtkui +) +cookbook_configure +""" diff --git a/recipes/wip/pidgin/recipe.toml b/recipes/wip/pidgin/recipe.toml new file mode 100644 index 00000000..8ac64716 --- /dev/null +++ b/recipes/wip/pidgin/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing dependencies +[source] +tar = "https://sourceforge.net/projects/pidgin/files/Pidgin/2.14.12/pidgin-2.14.12.tar.bz2" +[build] +template = "configure" From 673cde7b02edb23615da63b8e81404c19484dd2c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 13 Jan 2024 10:01:31 +0000 Subject: [PATCH 1508/3180] update pulseaudio version --- recipes/wip/pulseaudio/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/pulseaudio/recipe.toml b/recipes/wip/pulseaudio/recipe.toml index 4b017c79..1fe3b86f 100644 --- a/recipes/wip/pulseaudio/recipe.toml +++ b/recipes/wip/pulseaudio/recipe.toml @@ -1,7 +1,7 @@ #TODO missing script for Meson, see https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/Developer/PulseAudioFromGit/ #TODO only build the library and disable the daemon in favor of PipeWire, see https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/INSTALL.md#pulseaudio-replacement [source] -tar = "https://freedesktop.org/software/pulseaudio/releases/pulseaudio-16.1.tar.xz" +tar = "https://freedesktop.org/software/pulseaudio/releases/pulseaudio-17.0.tar.xz" [build] template = "custom" dependencies = [ From 2787dad963246961820d7d3b226d29a9ba650489 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sun, 14 Jan 2024 18:35:57 +0100 Subject: [PATCH 1509/3180] Fix for the introduction of fbcond --- recipes/core/drivers-initfs/recipe.toml | 1 + recipes/core/initfs/aarch64-unknown-redox/init.rc | 5 +++-- recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp | 5 +++-- recipes/core/initfs/init.rc | 5 +++-- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/recipes/core/drivers-initfs/recipe.toml b/recipes/core/drivers-initfs/recipe.toml index ddb2e209..0f6fd6a9 100644 --- a/recipes/core/drivers-initfs/recipe.toml +++ b/recipes/core/drivers-initfs/recipe.toml @@ -6,6 +6,7 @@ template = "custom" script = """ BINS=( ahcid + fbcond inputd nvmed pcid diff --git a/recipes/core/initfs/aarch64-unknown-redox/init.rc b/recipes/core/initfs/aarch64-unknown-redox/init.rc index f8f24c7b..2d316063 100644 --- a/recipes/core/initfs/aarch64-unknown-redox/init.rc +++ b/recipes/core/initfs/aarch64-unknown-redox/init.rc @@ -4,8 +4,9 @@ nulld zerod randd inputd -vesad T T G -logd debug: display.vesa:1 +vesad G G G +fbcond 1 2 +logd debug: fbcon:1 stdio log: ramfs logging lived diff --git a/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp b/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp index 99750e6f..7f194593 100644 --- a/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp +++ b/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp @@ -4,8 +4,9 @@ nulld zerod randd inputd -vesad T T G -logd debug: display.vesa:1 +vesad G G G +fbcond 1 2 +logd debug: fbcon:1 stdio log: ramfs logging lived diff --git a/recipes/core/initfs/init.rc b/recipes/core/initfs/init.rc index 4e34c3e2..f2f3726e 100644 --- a/recipes/core/initfs/init.rc +++ b/recipes/core/initfs/init.rc @@ -4,8 +4,9 @@ nulld zerod randd inputd -vesad T T G -logd debug: display.vesa:1 +vesad G G G +fbcond 1 2 +logd debug: fbcon:1 stdio log: ps2d us ramfs logging From 4aa830982226b9adc53f4679c2f3711125347c3e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 16 Jan 2024 14:52:19 +0000 Subject: [PATCH 1510/3180] update recipes --- recipes/wip/sqlite3/recipe.toml | 2 +- recipes/wip/symbiants/recipe.toml | 5 +++++ recipes/wip/xwayland/recipe.toml | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 recipes/wip/symbiants/recipe.toml diff --git a/recipes/wip/sqlite3/recipe.toml b/recipes/wip/sqlite3/recipe.toml index 8c242f61..60b3aeb3 100644 --- a/recipes/wip/sqlite3/recipe.toml +++ b/recipes/wip/sqlite3/recipe.toml @@ -1,7 +1,7 @@ #TODO compiled but not tested #TODO incomplete port [source] -tar = "https://www.sqlite.org/2023/sqlite-autoconf-3440000.tar.gz" +tar = "https://www.sqlite.org/2024/sqlite-autoconf-3450000.tar.gz" #blake3 = "44bc75a40d32afa71cffe149f766857c3cc41dea261b1e4645fde5f73f4c9268" [build] template = "custom" diff --git a/recipes/wip/symbiants/recipe.toml b/recipes/wip/symbiants/recipe.toml new file mode 100644 index 00000000..43daf59d --- /dev/null +++ b/recipes/wip/symbiants/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/MeoMix/symbiants" +[build] +template = "cargo" diff --git a/recipes/wip/xwayland/recipe.toml b/recipes/wip/xwayland/recipe.toml index 7a80c442..fa972b23 100644 --- a/recipes/wip/xwayland/recipe.toml +++ b/recipes/wip/xwayland/recipe.toml @@ -1,6 +1,6 @@ #TODO missing script for Meson, see https://wayland.freedesktop.org/xserver.html#heading_toc_j_3 [source] -tar = "https://www.x.org/releases/individual/xserver/xwayland-23.2.3.tar.xz" +tar = "https://www.x.org/releases/individual/xserver/xwayland-23.2.4.tar.xz" [build] template = "custom" dependencies = [ From 957cfbd005c303e4e74408c71e80750ae5f350a7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 18 Jan 2024 13:41:32 -0700 Subject: [PATCH 1511/3180] initfs: use new scheme format --- recipes/core/initfs/aarch64-unknown-redox/init.rc | 12 ++++++------ .../initfs/aarch64-unknown-redox/init.rc.raspi3bp | 12 ++++++------ recipes/core/initfs/init.rc | 12 ++++++------ 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/recipes/core/initfs/aarch64-unknown-redox/init.rc b/recipes/core/initfs/aarch64-unknown-redox/init.rc index 2d316063..feb70b6a 100644 --- a/recipes/core/initfs/aarch64-unknown-redox/init.rc +++ b/recipes/core/initfs/aarch64-unknown-redox/init.rc @@ -1,4 +1,4 @@ -export PATH /bin +export PATH /scheme/initfs/bin export TMPDIR /tmp nulld zerod @@ -6,11 +6,11 @@ randd inputd vesad G G G fbcond 1 2 -logd debug: fbcon:1 -stdio log: +logd /scheme/debug /scheme/fbcon/1 +stdio /scheme/log ramfs logging lived redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK -cd file: -export PATH file:/bin -run.d /etc/init.d +cd / +export PATH /bin +run.d /usr/lib/init.d /etc/init.d diff --git a/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp b/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp index 7f194593..b21c365d 100644 --- a/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp +++ b/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp @@ -1,4 +1,4 @@ -export PATH /bin +export PATH /scheme/initfs/bin export TMPDIR /tmp nulld zerod @@ -6,12 +6,12 @@ randd inputd vesad G G G fbcond 1 2 -logd debug: fbcon:1 -stdio log: +logd /scheme/debug /scheme/fbcon/1 +stdio /scheme/log ramfs logging lived bcm2835-sdhcid redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK -cd file: -export PATH file:/bin -run.d /etc/init.d +cd / +export PATH /bin +run.d /usr/lib/init.d /etc/init.d diff --git a/recipes/core/initfs/init.rc b/recipes/core/initfs/init.rc index f2f3726e..6b459dcd 100644 --- a/recipes/core/initfs/init.rc +++ b/recipes/core/initfs/init.rc @@ -1,4 +1,4 @@ -export PATH /bin +export PATH /scheme/initfs/bin export TMPDIR /tmp nulld zerod @@ -6,14 +6,14 @@ randd inputd vesad G G G fbcond 1 2 -logd debug: fbcon:1 -stdio log: +logd /scheme/debug /scheme/fbcon/1 +stdio /scheme/log ps2d us ramfs logging acpid -pcid /etc/pcid/initfs.toml +pcid /scheme/initfs/etc/pcid/initfs.toml lived redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK -cd file: -export PATH file:/bin +cd / +export PATH /bin run.d /usr/lib/init.d /etc/init.d From efcc131e05f9f4994f60f1236e3f8a24406ac721 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 18 Jan 2024 13:57:55 -0700 Subject: [PATCH 1512/3180] Remove unimplemented status scripts --- status.sh | 25 ------------------------- status_origin.sh | 25 ------------------------- status_upstream.sh | 25 ------------------------- 3 files changed, 75 deletions(-) delete mode 100755 status.sh delete mode 100755 status_origin.sh delete mode 100755 status_upstream.sh diff --git a/status.sh b/status.sh deleted file mode 100755 index 19aa856e..00000000 --- a/status.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env bash -set -e - -source config.sh - -if [ $# = 0 ] -then - recipes="$(target/release/list_recipes)" -else - recipes="$@" -fi - -for recipe in $recipes -do - recipe_path=`target/release/find_recipe $recipe` - if [ -d "$recipe_path/source" ] - then - status="$(COOK_QUIET=1 ./cook.sh "$recipe" status)" - - if [ -n "$status" ] - then - echo -e "\e[1m$recipe\e[0m\n$status" - fi - fi -done diff --git a/status_origin.sh b/status_origin.sh deleted file mode 100755 index b82bcedc..00000000 --- a/status_origin.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env bash -set -e - -source config.sh - -if [ $# = 0 ] -then - recipes="$(target/release/list_recipes)" -else - recipes="$@" -fi - -for recipe in $recipes -do - recipe_path=`target/release/find_recipe $recipe` - if [ -d "$recipe_path/source" ] - then - status="$(COOK_QUIET=1 ./cook.sh "$recipe" status_origin)" - - if [ -n "$status" ] - then - echo -e "\e[1m$recipe\e[0m\n$status" - fi - fi -done diff --git a/status_upstream.sh b/status_upstream.sh deleted file mode 100755 index eb150c00..00000000 --- a/status_upstream.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env bash -set -e - -source config.sh - -if [ $# = 0 ] -then - recipes="$(target/release/list_recipes)" -else - recipes="$@" -fi - -for recipe in $recipes -do - recipe_path=`target/release/find_recipe $recipe` - if [ -d "$recipe_path/source" ] - then - status="$(COOK_QUIET=1 ./cook.sh "$recipe" status_upstream)" - - if [ -n "$status" ] - then - echo -e "\e[1m$recipe\e[0m\n$status" - fi - fi -done From ffa8588a7e49cb901074c5deb66e80d6b026056a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 18 Jan 2024 14:02:17 -0700 Subject: [PATCH 1513/3180] sodium: move binary to /usr/bin --- recipes/tools/sodium/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/tools/sodium/recipe.toml b/recipes/tools/sodium/recipe.toml index 5986392b..559e7323 100644 --- a/recipes/tools/sodium/recipe.toml +++ b/recipes/tools/sodium/recipe.toml @@ -6,7 +6,7 @@ template = "custom" script = """ "${COOKBOOK_CARGO}" install \ --path "${COOKBOOK_SOURCE}" \ - --root "${COOKBOOK_STAGE}/ui" \ + --root "${COOKBOOK_STAGE}/usr" \ --locked \ --no-track \ --features orbital From 54f9f7e4b475169c77b60ae5b9b28cb5600dd4dc Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 18 Jan 2024 14:03:34 -0700 Subject: [PATCH 1514/3180] periodictable: move binary to /usr/bin --- recipes/gui/periodictable/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/gui/periodictable/recipe.sh b/recipes/gui/periodictable/recipe.sh index e1ea5540..e364766e 100644 --- a/recipes/gui/periodictable/recipe.sh +++ b/recipes/gui/periodictable/recipe.sh @@ -1,5 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/periodictable.git -BINDIR="/ui/bin" +BINDIR="/usr/bin" DEPENDS="orbital" function recipe_stage { From d41153c95e775656dc12fd2a1527a44914c91bc7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 18 Jan 2024 14:04:25 -0700 Subject: [PATCH 1515/3180] pixelcannon: move binary to /usr/bin --- recipes/demos/pixelcannon/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/demos/pixelcannon/recipe.sh b/recipes/demos/pixelcannon/recipe.sh index 1b140e72..82c6393a 100644 --- a/recipes/demos/pixelcannon/recipe.sh +++ b/recipes/demos/pixelcannon/recipe.sh @@ -1,5 +1,5 @@ GIT=https://github.com/jackpot51/pixelcannon.git -BINDIR=/ui/bin +BINDIR=/usr/bin DEPENDS="orbital" function recipe_stage { From 3d5280df401669203d56c60e154213d23d613311 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 18 Jan 2024 14:05:58 -0700 Subject: [PATCH 1516/3180] orbterm,orbutils: move binaries to /usr/bin --- recipes/gui/orbterm/recipe.toml | 2 +- recipes/gui/orbutils-background/recipe.sh | 2 +- recipes/gui/orbutils-launcher/recipe.sh | 2 +- recipes/gui/orbutils-orblogin/recipe.sh | 2 +- recipes/gui/orbutils/recipe.toml | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/recipes/gui/orbterm/recipe.toml b/recipes/gui/orbterm/recipe.toml index 84aefb2d..d2f1e3fd 100644 --- a/recipes/gui/orbterm/recipe.toml +++ b/recipes/gui/orbterm/recipe.toml @@ -6,7 +6,7 @@ template = "custom" script = """ "${COOKBOOK_CARGO}" install \ --path "${COOKBOOK_SOURCE}" \ - --root "${COOKBOOK_STAGE}/ui" \ + --root "${COOKBOOK_STAGE}/usr" \ --locked \ --no-track \ ${install_flags} diff --git a/recipes/gui/orbutils-background/recipe.sh b/recipes/gui/orbutils-background/recipe.sh index bf281add..237d8b02 100644 --- a/recipes/gui/orbutils-background/recipe.sh +++ b/recipes/gui/orbutils-background/recipe.sh @@ -1,4 +1,4 @@ GIT=https://gitlab.redox-os.org/redox-os/orbutils.git -BINDIR=/ui/bin +BINDIR=/usr/bin CARGOFLAGS="--bin background -p orbutils" DEPENDS="orbital" diff --git a/recipes/gui/orbutils-launcher/recipe.sh b/recipes/gui/orbutils-launcher/recipe.sh index daf6a4f0..4b4975b5 100644 --- a/recipes/gui/orbutils-launcher/recipe.sh +++ b/recipes/gui/orbutils-launcher/recipe.sh @@ -1,4 +1,4 @@ GIT=https://gitlab.redox-os.org/redox-os/orbutils.git -BINDIR=/ui/bin +BINDIR=/usr/bin CARGOFLAGS="--bin launcher -p orbutils" DEPENDS="orbital" diff --git a/recipes/gui/orbutils-orblogin/recipe.sh b/recipes/gui/orbutils-orblogin/recipe.sh index a1aae464..a7dd5f53 100644 --- a/recipes/gui/orbutils-orblogin/recipe.sh +++ b/recipes/gui/orbutils-orblogin/recipe.sh @@ -1,4 +1,4 @@ GIT=https://gitlab.redox-os.org/redox-os/orbutils.git -BINDIR=/ui/bin +BINDIR=/usr/bin CARGOFLAGS="--bin orblogin -p orbutils" DEPENDS="orbital" diff --git a/recipes/gui/orbutils/recipe.toml b/recipes/gui/orbutils/recipe.toml index 9e36357d..f284dea2 100644 --- a/recipes/gui/orbutils/recipe.toml +++ b/recipes/gui/orbutils/recipe.toml @@ -9,7 +9,7 @@ ORIGINAL_SOURCE="${COOKBOOK_SOURCE}" COOKBOOK_SOURCE="${ORIGINAL_SOURCE}/orbutils" "${COOKBOOK_CARGO}" install \ --path "${COOKBOOK_SOURCE}" \ - --root "${COOKBOOK_STAGE}/ui" \ + --root "${COOKBOOK_STAGE}/usr" \ --locked \ --no-track \ ${install_flags} @@ -17,7 +17,7 @@ COOKBOOK_SOURCE="${ORIGINAL_SOURCE}/orbutils" COOKBOOK_SOURCE="${ORIGINAL_SOURCE}/calculator" "${COOKBOOK_CARGO}" install \ --path "${COOKBOOK_SOURCE}" \ - --root "${COOKBOOK_STAGE}/ui" \ + --root "${COOKBOOK_STAGE}/usr" \ --locked \ --no-track \ ${install_flags} From 6faa5c2f8c5b4f6fac1658ff8b39b028caf269ad Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 18 Jan 2024 14:06:35 -0700 Subject: [PATCH 1517/3180] pastel: move binary to /usr/bin --- recipes/tools/pastel/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/tools/pastel/recipe.sh b/recipes/tools/pastel/recipe.sh index cabba6d2..987a251f 100644 --- a/recipes/tools/pastel/recipe.sh +++ b/recipes/tools/pastel/recipe.sh @@ -1,6 +1,6 @@ GIT=https://gitlab.redox-os.org/redox-os/pastel.git GIT_UPSTREAM=https://github.com/robbycerantola/pastel.git -BINDIR=/ui/bin +BINDIR=/usr/bin DEPENDS="orbital" function recipe_stage { @@ -9,7 +9,7 @@ function recipe_stage { mkdir "$1/ui/apps" cat > "$1/ui/apps/pastel" <<-EOF name=Pastel - binary=/ui/bin/pastel + binary=/usr/bin/pastel icon=/ui/pastel/accessories-bitmap-editor.png accept=*.bmp accept=*.jpg From 5286755009b8700c1d55b7765a97aca87d67a010 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 18 Jan 2024 14:11:42 -0700 Subject: [PATCH 1518/3180] initfs: set PATH to /usr/bin --- recipes/core/initfs/aarch64-unknown-redox/init.rc | 2 +- recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp | 2 +- recipes/core/initfs/init.rc | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/core/initfs/aarch64-unknown-redox/init.rc b/recipes/core/initfs/aarch64-unknown-redox/init.rc index feb70b6a..da835dfe 100644 --- a/recipes/core/initfs/aarch64-unknown-redox/init.rc +++ b/recipes/core/initfs/aarch64-unknown-redox/init.rc @@ -12,5 +12,5 @@ ramfs logging lived redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK cd / -export PATH /bin +export PATH /usr/bin run.d /usr/lib/init.d /etc/init.d diff --git a/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp b/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp index b21c365d..581476db 100644 --- a/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp +++ b/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp @@ -13,5 +13,5 @@ lived bcm2835-sdhcid redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK cd / -export PATH /bin +export PATH /usr/bin run.d /usr/lib/init.d /etc/init.d diff --git a/recipes/core/initfs/init.rc b/recipes/core/initfs/init.rc index 6b459dcd..7837d237 100644 --- a/recipes/core/initfs/init.rc +++ b/recipes/core/initfs/init.rc @@ -15,5 +15,5 @@ pcid /scheme/initfs/etc/pcid/initfs.toml lived redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK cd / -export PATH /bin +export PATH /usr/bin run.d /usr/lib/init.d /etc/init.d From ffb7c2ca278328d06295121785651159552de1ed Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 18 Jan 2024 15:17:21 -0700 Subject: [PATCH 1519/3180] initfs: unset variables only meant for initfs drivers --- recipes/core/initfs/aarch64-unknown-redox/init.rc | 4 ++++ recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp | 4 ++++ recipes/core/initfs/init.rc | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/recipes/core/initfs/aarch64-unknown-redox/init.rc b/recipes/core/initfs/aarch64-unknown-redox/init.rc index da835dfe..f794e3ca 100644 --- a/recipes/core/initfs/aarch64-unknown-redox/init.rc +++ b/recipes/core/initfs/aarch64-unknown-redox/init.rc @@ -5,12 +5,16 @@ zerod randd inputd vesad G G G +unset FRAMEBUFFER_ADDR FRAMEBUFFER_VIRT FRAMEBUFFER_WIDTH FRAMEBUFFER_HEIGHT FRAMEBUFFER_STRIDE +#TODO: unset FRAMEBUFFER1 and beyond? fbcond 1 2 logd /scheme/debug /scheme/fbcon/1 stdio /scheme/log ramfs logging lived +unset DISK_LIVE_ADDR DISK_LIVE_SIZE redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK +unset REDOXFS_UUID REDOXFS_BLOCK REDOXFS_PASSWORD_ADDR REDOXFS_PASSWORD_SIZE cd / export PATH /usr/bin run.d /usr/lib/init.d /etc/init.d diff --git a/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp b/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp index 581476db..6f109e94 100644 --- a/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp +++ b/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp @@ -5,13 +5,17 @@ zerod randd inputd vesad G G G +unset FRAMEBUFFER_ADDR FRAMEBUFFER_VIRT FRAMEBUFFER_WIDTH FRAMEBUFFER_HEIGHT FRAMEBUFFER_STRIDE +#TODO: unset FRAMEBUFFER1 and beyond? fbcond 1 2 logd /scheme/debug /scheme/fbcon/1 stdio /scheme/log ramfs logging lived +unset DISK_LIVE_ADDR DISK_LIVE_SIZE bcm2835-sdhcid redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK +unset REDOXFS_UUID REDOXFS_BLOCK REDOXFS_PASSWORD_ADDR REDOXFS_PASSWORD_SIZE cd / export PATH /usr/bin run.d /usr/lib/init.d /etc/init.d diff --git a/recipes/core/initfs/init.rc b/recipes/core/initfs/init.rc index 7837d237..9f80f648 100644 --- a/recipes/core/initfs/init.rc +++ b/recipes/core/initfs/init.rc @@ -5,6 +5,8 @@ zerod randd inputd vesad G G G +unset FRAMEBUFFER_ADDR FRAMEBUFFER_VIRT FRAMEBUFFER_WIDTH FRAMEBUFFER_HEIGHT FRAMEBUFFER_STRIDE +#TODO: unset FRAMEBUFFER1 and beyond? fbcond 1 2 logd /scheme/debug /scheme/fbcon/1 stdio /scheme/log @@ -13,7 +15,9 @@ ramfs logging acpid pcid /scheme/initfs/etc/pcid/initfs.toml lived +unset DISK_LIVE_ADDR DISK_LIVE_SIZE redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK +unset REDOXFS_UUID REDOXFS_BLOCK REDOXFS_PASSWORD_ADDR REDOXFS_PASSWORD_SIZE cd / export PATH /usr/bin run.d /usr/lib/init.d /etc/init.d From 97b5dff9bd322f571da05481f21b66f53032637e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 18 Jan 2024 15:59:19 -0700 Subject: [PATCH 1520/3180] spacecadetpinball: add manifest --- recipes/games/spacecadetpinball/recipe.toml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/recipes/games/spacecadetpinball/recipe.toml b/recipes/games/spacecadetpinball/recipe.toml index 49683b48..706605aa 100644 --- a/recipes/games/spacecadetpinball/recipe.toml +++ b/recipes/games/spacecadetpinball/recipe.toml @@ -21,16 +21,20 @@ COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_VERBOSE_MAKEFILE=On -DCMAKE_CROSSCOMPILING=True -DCMAKE_BUILD_TYPE=Release - -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_INSTALL_PREFIX="/usr" -DSDL2_INCLUDE_DIR="${COOKBOOK_SYSROOT}/include/SDL2" -DSDL2_LIBRARY="-lSDL2_mixer -lvorbisfile -lvorbis -logg -lSDL2 -lorbital $("${TARGET}-pkg-config" --libs osmesa)" -DSDL2_MIXER_INCLUDE_DIR="${COOKBOOK_SYSROOT}/include/SDL2" -DSDL2_MIXER_LIBRARY="SDL2_mixer" "${COOKBOOK_SOURCE}" ) -set -x cookbook_configure -mv -vT "${COOKBOOK_STAGE}"/usr/bin "${COOKBOOK_STAGE}/bin" -rmdir -v "${COOKBOOK_STAGE}"/usr -set +x + +mkdir -pv "${COOKBOOK_STAGE}/ui/apps" +cat > "${COOKBOOK_STAGE}"/ui/apps/spacecadetpinball < Date: Sat, 20 Jan 2024 00:19:30 +0000 Subject: [PATCH 1521/3180] add recipes --- recipes/wip/angryoxide/recipe.toml | 6 ++++++ recipes/wip/mhv/recipe.toml | 5 +++++ 2 files changed, 11 insertions(+) create mode 100644 recipes/wip/angryoxide/recipe.toml create mode 100644 recipes/wip/mhv/recipe.toml diff --git a/recipes/wip/angryoxide/recipe.toml b/recipes/wip/angryoxide/recipe.toml new file mode 100644 index 00000000..73d3e89f --- /dev/null +++ b/recipes/wip/angryoxide/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +#TODO in case of errors, read https://github.com/Ragnt/AngryOxide#building-from-source +[source] +git = "https://github.com/Ragnt/AngryOxide" +[build] +template = "cargo" diff --git a/recipes/wip/mhv/recipe.toml b/recipes/wip/mhv/recipe.toml new file mode 100644 index 00000000..9a17655e --- /dev/null +++ b/recipes/wip/mhv/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/jgardona/mhv" +[build] +template = "cargo" From 036cba5208cb1570c48bb65063126e386925597f Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Thu, 25 Jan 2024 15:07:47 +0100 Subject: [PATCH 1522/3180] Use cargo env vars to build drivers with opt-level=s and panic=abort --- recipes/core/drivers-initfs/recipe.toml | 10 ++++------ recipes/core/drivers/recipe.toml | 10 ++++------ 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/recipes/core/drivers-initfs/recipe.toml b/recipes/core/drivers-initfs/recipe.toml index 0f6fd6a9..3d10a417 100644 --- a/recipes/core/drivers-initfs/recipe.toml +++ b/recipes/core/drivers-initfs/recipe.toml @@ -47,15 +47,13 @@ case "${TARGET}" in esac mkdir -pv "${COOKBOOK_STAGE}/bin" +export CARGO_PROFILE_RELEASE_OPT_LEVEL=s +export CARGO_PROFILE_RELEASE_PANIC=abort for bin in "${BINS[@]}" do - "${COOKBOOK_CARGO}" rustc --release \ + "${COOKBOOK_CARGO}" build --release \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ - -p "${bin}" \ - --bin "${bin}" \ - -- \ - -C opt-level=s \ - -C panic=abort + -p "${bin}" cp -v "target/${TARGET}/release/${bin}" "${COOKBOOK_STAGE}/bin" done diff --git a/recipes/core/drivers/recipe.toml b/recipes/core/drivers/recipe.toml index 076d703e..024306fe 100644 --- a/recipes/core/drivers/recipe.toml +++ b/recipes/core/drivers/recipe.toml @@ -32,15 +32,13 @@ esac #Build each driver in the list mkdir -pv "${COOKBOOK_STAGE}/bin" +export CARGO_PROFILE_RELEASE_OPT_LEVEL=s +export CARGO_PROFILE_RELEASE_PANIC=abort for bin in "${BINS[@]}" do - "${COOKBOOK_CARGO}" rustc --release \ + "${COOKBOOK_CARGO}" build --release \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ - -p "${bin}" \ - --bin "${bin}" \ - -- \ - -C opt-level=s \ - -C panic=abort + -p "${bin}" cp -v "target/${TARGET}/release/${bin}" "${COOKBOOK_STAGE}/bin" done From 66730fed634f4b3d37ba1a1c5a4dc7cf94ac55b8 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Thu, 25 Jan 2024 15:14:01 +0100 Subject: [PATCH 1523/3180] Build all drivers in parallel --- recipes/core/drivers-initfs/recipe.toml | 6 +++--- recipes/core/drivers/recipe.toml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/recipes/core/drivers-initfs/recipe.toml b/recipes/core/drivers-initfs/recipe.toml index 3d10a417..e1e91f5b 100644 --- a/recipes/core/drivers-initfs/recipe.toml +++ b/recipes/core/drivers-initfs/recipe.toml @@ -49,11 +49,11 @@ esac mkdir -pv "${COOKBOOK_STAGE}/bin" export CARGO_PROFILE_RELEASE_OPT_LEVEL=s export CARGO_PROFILE_RELEASE_PANIC=abort +"${COOKBOOK_CARGO}" build --release \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + $(for bin in "${BINS[@]}"; do echo "-p" "${bin}"; done) for bin in "${BINS[@]}" do - "${COOKBOOK_CARGO}" build --release \ - --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ - -p "${bin}" cp -v "target/${TARGET}/release/${bin}" "${COOKBOOK_STAGE}/bin" done diff --git a/recipes/core/drivers/recipe.toml b/recipes/core/drivers/recipe.toml index 024306fe..cccd2729 100644 --- a/recipes/core/drivers/recipe.toml +++ b/recipes/core/drivers/recipe.toml @@ -34,11 +34,11 @@ esac mkdir -pv "${COOKBOOK_STAGE}/bin" export CARGO_PROFILE_RELEASE_OPT_LEVEL=s export CARGO_PROFILE_RELEASE_PANIC=abort +"${COOKBOOK_CARGO}" build --release \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + $(for bin in "${BINS[@]}"; do echo "-p" "${bin}"; done) for bin in "${BINS[@]}" do - "${COOKBOOK_CARGO}" build --release \ - --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ - -p "${bin}" cp -v "target/${TARGET}/release/${bin}" "${COOKBOOK_STAGE}/bin" done From 15d9970802462ddc551d1f4f66506fa5b8f54146 Mon Sep 17 00:00:00 2001 From: Ron Williams Date: Sat, 27 Jan 2024 13:23:27 +0000 Subject: [PATCH 1524/3180] move helix to tools, with working recipe, plus fix COOKBOOK_DEBUG --- recipes/tools/helix/recipe.toml | 16 ++++++++++++++++ recipes/wip/helix/recipe.toml | 9 --------- src/bin/cook.rs | 7 +++++-- 3 files changed, 21 insertions(+), 11 deletions(-) create mode 100644 recipes/tools/helix/recipe.toml delete mode 100644 recipes/wip/helix/recipe.toml diff --git a/recipes/tools/helix/recipe.toml b/recipes/tools/helix/recipe.toml new file mode 100644 index 00000000..09b59488 --- /dev/null +++ b/recipes/tools/helix/recipe.toml @@ -0,0 +1,16 @@ +#TODO signal handling is disabled, it should be re-enabled when Redox is ready +#TODO language files are not built, only the "hx" editor is built +#TODO Consider adding `export RUSTFLAGS+="-C target-feature=-crt-static"` when adding language support +#TODO configuration - https://docs.helix-editor.com/install.html#configuring-helixs-runtime-files +[source] +git = "https://gitlab.redox-os.org/redox-os/helix.git" +branch = "redox" + +[build] +template = "custom" +script = """ +export HELIX_DISABLE_AUTO_GRAMMAR_BUILD=1 +COOKBOOK_SOURCE+="/helix-term" +cookbook_cargo +""" + diff --git a/recipes/wip/helix/recipe.toml b/recipes/wip/helix/recipe.toml deleted file mode 100644 index 27490396..00000000 --- a/recipes/wip/helix/recipe.toml +++ /dev/null @@ -1,9 +0,0 @@ -#TODO program source code error -#TODO configuration - https://docs.helix-editor.com/install.html#configuring-helixs-runtime-files -[source] -tar = "https://github.com/helix-editor/helix/releases/download/23.10/helix-23.10-source.tar.xz" -[build] -template = "custom" -script = """ -cookbook_cargo_packages helix-term -""" diff --git a/src/bin/cook.rs b/src/bin/cook.rs index b2bf5c86..5767d7ca 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -453,9 +453,12 @@ export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" # to not strip symbols from the final package, add COOKBOOK_NOSTRIP=true to the recipe # (or to your environment) before calling cookbook_cargo or cookbook_cargo_packages build_type=release +install_flags= +build_flags=--release if [ ! -z "${COOKBOOK_DEBUG}" ] then install_flags=--debug + build_flags= build_type=debug fi @@ -479,7 +482,7 @@ function cookbook_cargo_examples { "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ --example "${example}" \ - --${build_type} + ${build_flags} mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ "target/${TARGET}/${build_type}/examples/${example}" \ @@ -495,7 +498,7 @@ function cookbook_cargo_packages { "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ --package "${package}" \ - --${build_type} + ${build_flags} mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ "target/${TARGET}/${build_type}/${package}" \ From 799c23cb3d4aea3c1f2f4de425c4ac0bb8124d95 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 29 Jan 2024 00:04:09 +0000 Subject: [PATCH 1525/3180] update recipes --- recipes/wip/festival/recipe.toml | 1 - recipes/wip/wine-stable/recipe.toml | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/festival/recipe.toml b/recipes/wip/festival/recipe.toml index 63ed4cb9..c754ffbe 100644 --- a/recipes/wip/festival/recipe.toml +++ b/recipes/wip/festival/recipe.toml @@ -1,7 +1,6 @@ #TODO make D-Bus work [source] git = "https://github.com/hinto-janai/festival" -rev = "512dc7bfc76341c0e06902252c634e24700d7140" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/wine-stable/recipe.toml b/recipes/wip/wine-stable/recipe.toml index 6b65b951..c92e6520 100644 --- a/recipes/wip/wine-stable/recipe.toml +++ b/recipes/wip/wine-stable/recipe.toml @@ -1,6 +1,6 @@ #TODO make dependencies work [source] -tar = "https://dl.winehq.org/wine/source/8.0/wine-8.0.1.tar.xz" +tar = "https://dl.winehq.org/wine/source/9.0/wine-9.0.tar.xz" [build] template = "configure" dependencies = [ From 200a248f822aad526ef63a825b5994d20d5040d1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 29 Jan 2024 01:18:56 +0000 Subject: [PATCH 1526/3180] update TODO --- recipes/wip/legdur/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/legdur/recipe.toml b/recipes/wip/legdur/recipe.toml index 397270b2..ae827f4f 100644 --- a/recipes/wip/legdur/recipe.toml +++ b/recipes/wip/legdur/recipe.toml @@ -1,3 +1,4 @@ +#TODO the repository can't be cloned because it's using the Mercurial now? what doesn't makes sense #TODO camino crate error [source] git = "https://hg.sr.ht/~cyplo/legdur" From 946f67b9647c590aeee5bd150432d5d03b8dea4c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 29 Jan 2024 01:31:36 +0000 Subject: [PATCH 1527/3180] add mercurial recipe --- recipes/wip/mercurial/recipe.toml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 recipes/wip/mercurial/recipe.toml diff --git a/recipes/wip/mercurial/recipe.toml b/recipes/wip/mercurial/recipe.toml new file mode 100644 index 00000000..6a57d38c --- /dev/null +++ b/recipes/wip/mercurial/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for GNU Make, see https://wiki.mercurial-scm.org/UnixInstall +#TODO require CPython header files +[source] +tar = "https://www.mercurial-scm.org/release/mercurial-6.6.2.tar.gz" +[build] +template = "custom" From d57b0d6887f8df816ea6d5b7d4572b4cfe68402c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 30 Jan 2024 18:55:08 -0700 Subject: [PATCH 1528/3180] cosmic-edit,files,term: use master branch --- recipes/gui/cosmic-edit/recipe.toml | 2 +- recipes/gui/cosmic-files/recipe.toml | 2 +- recipes/gui/cosmic-term/recipe.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/gui/cosmic-edit/recipe.toml b/recipes/gui/cosmic-edit/recipe.toml index 9f7d00f0..c4c609c3 100644 --- a/recipes/gui/cosmic-edit/recipe.toml +++ b/recipes/gui/cosmic-edit/recipe.toml @@ -1,6 +1,6 @@ [source] git = "https://github.com/pop-os/cosmic-edit.git" -branch = "master_jammy" +branch = "master" [build] template = "custom" diff --git a/recipes/gui/cosmic-files/recipe.toml b/recipes/gui/cosmic-files/recipe.toml index 2347849b..31327010 100644 --- a/recipes/gui/cosmic-files/recipe.toml +++ b/recipes/gui/cosmic-files/recipe.toml @@ -1,6 +1,6 @@ [source] git = "https://github.com/pop-os/cosmic-files.git" -branch = "master_jammy" +branch = "master" [build] template = "custom" diff --git a/recipes/gui/cosmic-term/recipe.toml b/recipes/gui/cosmic-term/recipe.toml index 98bbe595..dde24188 100644 --- a/recipes/gui/cosmic-term/recipe.toml +++ b/recipes/gui/cosmic-term/recipe.toml @@ -1,6 +1,6 @@ [source] git = "https://github.com/pop-os/cosmic-term.git" -branch = "master_jammy" +branch = "master" [build] template = "custom" From 3b252615e388de003a603f5d12a0aa5b53def7b7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 Feb 2024 16:15:20 -0700 Subject: [PATCH 1529/3180] ppsspp update --- recipes/wip/ppsspp/recipe.toml | 49 +++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/recipes/wip/ppsspp/recipe.toml b/recipes/wip/ppsspp/recipe.toml index 85d81cb8..c5ed3d3f 100644 --- a/recipes/wip/ppsspp/recipe.toml +++ b/recipes/wip/ppsspp/recipe.toml @@ -1,28 +1,41 @@ -#TODO probably wrong script, see https://github.com/hrydgard/ppsspp/wiki/Build-instructions#building-with-cmake-other-platforms-eg-linux [source] -git = "https://github.com/hrydgard/ppsspp" +git = "https://github.com/jackpot51/ppsspp" + [build] template = "custom" dependencies = [ - "sdl2", - "sdl2_ttf", + "liborbital", + "llvm", "mesa", - "fontconfig", - "curl", + "mesa-glu", + "sdl2", + "zlib", ] script = """ - COOKBOOK_CONFIGURE="cmake" - COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DUSING_X11_VULKAN=OFF - -DUSE_SYSTEM_LIBSDL2=ON - -DUSE_MINIUPNPC=OFF - -DUSE_FFMPEG=OFF +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_C_FLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" + -DCMAKE_CXX_FLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" + -DCMAKE_EXE_LINKER_FLAGS="-L${COOKBOOK_SYSROOT}/lib -static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On + -DOPENGL_opengl_LIBRARY="/dev/null" + -DOPENGL_glx_LIBRARY="/dev/null" -DUSE_DISCORD=OFF -"${COOKBOOK_SOURCE}" + -DUSE_FFMPEG=OFF + -DUSE_MINIUPNPC=OFF + -DUSE_SYSTEM_LIBSDL2=ON + -DUSING_EGL=OFF + -DUSING_FBDEV=OFF + -DUSING_GLES2=OFF + -DUSING_X11_VULKAN=OFF + -DUNIX=ON + "${COOKBOOK_SOURCE}" ) cookbook_configure -""" \ No newline at end of file +""" From 1d3ab5afcd6ec4ae3e97d570451f0d7d71f7061e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 3 Feb 2024 13:56:28 -0700 Subject: [PATCH 1530/3180] Add wip/boxedwine recipe --- recipes/wip/boxedwine/recipe.toml | 86 +++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 recipes/wip/boxedwine/recipe.toml diff --git a/recipes/wip/boxedwine/recipe.toml b/recipes/wip/boxedwine/recipe.toml new file mode 100644 index 00000000..feeb4ac2 --- /dev/null +++ b/recipes/wip/boxedwine/recipe.toml @@ -0,0 +1,86 @@ +[source] +git = "https://github.com/jackpot51/Boxedwine" + +[build] +template = "custom" +dependencies = [ + "curl", + "liborbital", + "llvm", + "mesa", + "mesa-glu", + "nghttp2", + "openssl1", + "sdl2", + "zlib", +] +script = """ +mkdir -p "${COOKBOOK_STAGE}/bin" +cd "${COOKBOOK_SOURCE}/project/linux" +#TODO: USE MAKEFILE +#TODO: USE X64 CPU CORE +${TARGET}-gcc -std=c++17 -O2 \ + -Wall \ + -Wno-delete-incomplete \ + -Wno-unused-result \ + -Wno-unknown-pragmas \ + -Wno-unused-local-typedefs \ + -Wno-unused-variable \ + -Wno-unused-function \ + -Wno-unused-but-set-variable \ + -I "${COOKBOOK_SYSROOT}/include/SDL2" \ + -I../../include \ + -I../../lib/glew/include \ + -I../../lib/imgui \ + ../../lib/imgui/imgui.cpp \ + ../../lib/pugixml/src/*.cpp \ + ../../lib/imgui/imgui_draw.cpp \ + ../../lib/imgui/imgui_widgets.cpp \ + ../../lib/imgui/examples/imgui_impl_opengl2.cpp \ + ../../lib/imgui/examples/imgui_impl_sdl.cpp \ + ../../lib/imgui/addon/imguitinyfiledialogs.cpp \ + ../../source/sdl/*.cpp \ + ../../source/sdl/singleThreaded/*.cpp \ + ../../lib/glew/src/glew.cpp \ + ../../source/ui/*.cpp \ + ../../source/ui/controls/*.cpp \ + ../../source/ui/data/*.cpp \ + ../../source/ui/opengl/*.cpp \ + ../../source/ui/utils/*.cpp \ + ../../platform/sdl/*.cpp \ + ../../platform/linux/*.cpp \ + ../../source/emulation/cpu/*.cpp \ + ../../source/emulation/cpu/common/*.cpp \ + ../../source/emulation/cpu/normal/*.cpp \ + ../../source/emulation/softmmu/*.cpp \ + ../../source/io/*.cpp \ + ../../source/kernel/*.cpp \ + ../../source/kernel/devs/*.cpp \ + ../../source/kernel/proc/*.cpp \ + ../../source/kernel/sys/*.cpp \ + ../../source/kernel/loader/*.cpp \ + ../../source/util/*.cpp \ + ../../source/opengl/sdl/*.cpp \ + ../../source/opengl/*.cpp \ + ../../lib/tiny-process/process.cpp \ + ../../lib/tiny-process/process_unix.cpp \ + ../../lib/zlib/contrib/minizip/ioapi.c \ + ../../lib/zlib/contrib/minizip/mztools.c \ + ../../lib/zlib/contrib/minizip/unzip.c \ + ../../lib/zlib/contrib/minizip/zip.c \ + `${PKG_CONFIG} libcurl --cflags --libs` \ + `${PKG_CONFIG} sdl2 --cflags --libs` \ + -lz \ + -lstdc++ \ + "-DGLH=" \ + -DBOXEDWINE_64 \ + -DBOXEDWINE_HAS_SETJMP \ + -DBOXEDWINE_OPENGL_IMGUI_V2 \ + -DBOXEDWINE_OPENGL_SDL \ + -DBOXEDWINE_POSIX \ + -DBOXEDWINE_ZLIB \ + -DGLEW_OSMESA \ + -DSDL2=1 \ + -DSIMDE_SSE2_NO_NATIVE \ + -o "${COOKBOOK_STAGE}/bin/boxedwine" +""" From 54d7a69f2dfc7cc328fad7fb17c522031dcb4a84 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 3 Feb 2024 14:46:15 -0700 Subject: [PATCH 1531/3180] Statically compile boxedwine --- recipes/wip/boxedwine/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/boxedwine/recipe.toml b/recipes/wip/boxedwine/recipe.toml index feeb4ac2..57c61762 100644 --- a/recipes/wip/boxedwine/recipe.toml +++ b/recipes/wip/boxedwine/recipe.toml @@ -82,5 +82,6 @@ ${TARGET}-gcc -std=c++17 -O2 \ -DGLEW_OSMESA \ -DSDL2=1 \ -DSIMDE_SSE2_NO_NATIVE \ + -static \ -o "${COOKBOOK_STAGE}/bin/boxedwine" """ From 362dce35aecff59115261a12b6b2b764cdbb324a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 4 Feb 2024 02:13:22 +0000 Subject: [PATCH 1532/3180] add recipes --- recipes/wip/clipcat/recipe.toml | 8 ++++++++ recipes/wip/kalc/recipe.toml | 5 +++++ recipes/wip/run/recipe.toml | 5 +++++ recipes/wip/rustytube/recipe.toml | 5 +++++ 4 files changed, 23 insertions(+) create mode 100644 recipes/wip/clipcat/recipe.toml create mode 100644 recipes/wip/kalc/recipe.toml create mode 100644 recipes/wip/run/recipe.toml create mode 100644 recipes/wip/rustytube/recipe.toml diff --git a/recipes/wip/clipcat/recipe.toml b/recipes/wip/clipcat/recipe.toml new file mode 100644 index 00000000..70adc0cf --- /dev/null +++ b/recipes/wip/clipcat/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/xrelkd/clipcat" +[build] +template = "custom" +script = """ +cookbook_cargo_packages clipcatd clipcatctl clipcat-menu +""" diff --git a/recipes/wip/kalc/recipe.toml b/recipes/wip/kalc/recipe.toml new file mode 100644 index 00000000..499b4fe8 --- /dev/null +++ b/recipes/wip/kalc/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/bgkillas/kalc" +[build] +template = "cargo" diff --git a/recipes/wip/run/recipe.toml b/recipes/wip/run/recipe.toml new file mode 100644 index 00000000..6cbbfa07 --- /dev/null +++ b/recipes/wip/run/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/LyonSyonII/run" +[build] +template = "cargo" diff --git a/recipes/wip/rustytube/recipe.toml b/recipes/wip/rustytube/recipe.toml new file mode 100644 index 00000000..c59604ed --- /dev/null +++ b/recipes/wip/rustytube/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/opensourcecheemsburgers/RustyTube" +[build] +template = "cargo" From 97246ace26e96d397fecc3fec486a452e954852a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 7 Feb 2024 02:01:56 +0000 Subject: [PATCH 1533/3180] Rename the Helix binary to fix a conflict with other recipe --- recipes/tools/helix/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/tools/helix/recipe.toml b/recipes/tools/helix/recipe.toml index 09b59488..a4a50cc3 100644 --- a/recipes/tools/helix/recipe.toml +++ b/recipes/tools/helix/recipe.toml @@ -12,5 +12,6 @@ script = """ export HELIX_DISABLE_AUTO_GRAMMAR_BUILD=1 COOKBOOK_SOURCE+="/helix-term" cookbook_cargo +mv "${COOKBOOK_STAGE}/usr/bin/hx" "${COOKBOOK_STAGE}/usr/bin/helix" """ From d05c46db7c584eb15639d3231311a8a4ceba42d6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 7 Feb 2024 15:37:20 -0700 Subject: [PATCH 1534/3180] Update libwayland recipe from mesa recipe --- recipes/wip/libwayland/recipe.toml | 43 ++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/recipes/wip/libwayland/recipe.toml b/recipes/wip/libwayland/recipe.toml index bd11fb5b..7e6e0129 100644 --- a/recipes/wip/libwayland/recipe.toml +++ b/recipes/wip/libwayland/recipe.toml @@ -1,5 +1,48 @@ #TODO missing script for Meson, see https://gitlab.freedesktop.org/wayland/wayland/-/blob/main/README.md?ref_type=heads [source] tar = "https://gitlab.freedesktop.org/wayland/wayland/-/releases/1.22.0/downloads/wayland-1.22.0.tar.xz" + [build] +dependencies = [ + "libffi" +] template = "custom" +script = """ +#TODO: do this in cook instead +unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP + +export CFLAGS="-I${COOKBOOK_SYSROOT}/include -DHAVE_PTHREAD=1" +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include -DHAVE_PTHREAD=1" +export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib --static" +export LLVM_CONFIG="${TARGET}-llvm-config" + +# TODO: Fix this annoying shite +echo "[binaries]" > cross_file.txt +echo "c = '${TARGET}-gcc'" >> cross_file.txt +echo "cpp = '${TARGET}-g++'" >> cross_file.txt +echo "ar = '${TARGET}-ar'" >> cross_file.txt +echo "strip = '${TARGET}-strip'" >> cross_file.txt +echo "pkgconfig = '${TARGET}-pkg-config'" >> cross_file.txt +echo "llvm-config = '${TARGET}-llvm-config'" >> cross_file.txt + +echo "[host_machine]" >> cross_file.txt +echo "system = 'redox'" >> cross_file.txt +echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt +echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt +echo "endian = 'little'" >> cross_file.txt + +echo "[paths]" >> cross_file.txt +echo "prefix = '/'" >> cross_file.txt +echo "libdir = 'lib'" >> cross_file.txt +echo "bindir = 'bin'" >> cross_file.txt + +echo "[properties]" >> cross_file.txt +echo "needs_exe_wrapper = true" >> cross_file.txt + +meson "${COOKBOOK_SOURCE}" . \ + --cross-file cross_file.txt \ + --buildtype release \ + --strip \ + -Ddefault_library=static +DESTDIR="${COOKBOOK_STAGE}" ninja install +""" From ac090c745dadbd25c9abd70b6b0feef45ff5fe50 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 7 Feb 2024 15:40:30 -0700 Subject: [PATCH 1535/3180] Add expat and libxml2 to libwayland recipe --- recipes/wip/libwayland/recipe.toml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/recipes/wip/libwayland/recipe.toml b/recipes/wip/libwayland/recipe.toml index 7e6e0129..0cbe6be5 100644 --- a/recipes/wip/libwayland/recipe.toml +++ b/recipes/wip/libwayland/recipe.toml @@ -3,10 +3,12 @@ tar = "https://gitlab.freedesktop.org/wayland/wayland/-/releases/1.22.0/downloads/wayland-1.22.0.tar.xz" [build] -dependencies = [ - "libffi" -] template = "custom" +dependencies = [ + "expat", + "libffi", + "libxml2", +] script = """ #TODO: do this in cook instead unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP From 1d1d03b7f3a7b7e1f01d2019290758597ca04928 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 10 Feb 2024 10:16:37 +0000 Subject: [PATCH 1536/3180] add pixelsort --- recipes/wip/pixelsort/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/wip/pixelsort/recipe.toml diff --git a/recipes/wip/pixelsort/recipe.toml b/recipes/wip/pixelsort/recipe.toml new file mode 100644 index 00000000..60ea4266 --- /dev/null +++ b/recipes/wip/pixelsort/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Void-ux/pixelsort" +[build] +template = "cargo" From 00df333dde4420bc81988d1b5edb937aafc203e3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 10 Feb 2024 10:37:32 +0000 Subject: [PATCH 1537/3180] move the WIP libraries to a category --- .../{ => libs/kf5-activities}/kf5-activities-stats/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-apidox/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-archive/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-attica/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-auth/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-baloo/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-bookmarks/recipe.toml | 0 .../wip/{ => libs/kf5-activities}/kf5-calendarcore/recipe.toml | 0 .../wip/{ => libs/kf5-activities}/kf5-cmake-modules/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-cmutils/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-codecs/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-completion/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-config/recipe.toml | 0 .../wip/{ => libs/kf5-activities}/kf5-configwidgets/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-contacts/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-coreaddons/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-crash/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-dav/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-dbusaddons/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-declarative/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-dnssd/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-doctools/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-emoticons/recipe.toml | 0 .../wip/{ => libs/kf5-activities}/kf5-filemetadata/recipe.toml | 0 .../kf5-activities}/kf5-frameworkintegration/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-globalaccel/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-guiaddons/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-holidays/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-i18n/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-iconthemes/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-idletime/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-init/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-io/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-itemmodels/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-itemviews/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-jobwidgets/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-kded/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-kdesu/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-kirigami/recipe.toml | 0 .../wip/{ => libs/kf5-activities}/kf5-modem-manager/recipe.toml | 0 .../wip/{ => libs/kf5-activities}/kf5-networkmanager/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-newstuff/recipe.toml | 0 .../wip/{ => libs/kf5-activities}/kf5-notifications/recipe.toml | 0 .../wip/{ => libs/kf5-activities}/kf5-notifyconfig/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-package/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-parts/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-people/recipe.toml | 0 .../{ => libs/kf5-activities}/kf5-plasma-framework/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-plotting/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-prison/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-pty/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-purpose/recipe.toml | 0 .../{ => libs/kf5-activities}/kf5-qqc2-desktop-style/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-quickcharts/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-runner/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-service/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-solid/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-sonnet/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-syndication/recipe.toml | 0 .../{ => libs/kf5-activities}/kf5-syntax-highlighting/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-sysguard/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-texteditor/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-textwidgets/recipe.toml | 0 .../wip/{ => libs/kf5-activities}/kf5-threadweaver/recipe.toml | 0 .../wip/{ => libs/kf5-activities}/kf5-unitconversion/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-wayland/recipe.toml | 0 .../wip/{ => libs/kf5-activities}/kf5-widgetaddons/recipe.toml | 0 .../wip/{ => libs/kf5-activities}/kf5-windowsystem/recipe.toml | 0 recipes/wip/{ => libs/kf5-activities}/kf5-xmlgui/recipe.toml | 0 recipes/wip/{ => libs}/kf5-activities/recipe.toml | 0 recipes/wip/{ => libs/librdf}/lib2geom/recipe.toml | 0 recipes/wip/{ => libs/librdf}/liba52/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libadwaita/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libaio/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libaom/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libargon2/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libart/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libaspell/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libass/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libatomic_ops/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libavif/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libbluray/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libbotan/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libbrotli/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libbsd/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libburn/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libcaca/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libcamera/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libcap/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libcdio-paranoia/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libcdio/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libcdr/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libcpuid/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libcups/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libde265/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libdecor/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libdeflate/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libdex/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libdmx/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libdotconf/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libdouble-conversion/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libdvbpsi/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libdvdcss/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libdvdnav/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libdvdread/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libebml/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libedit/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libeditline/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libeigen/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libenet/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libepoxy/recipe.toml | 0 recipes/wip/{ => libs/librdf}/liberty-eiffel/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libevdev/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libevent/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libfmt/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libfontenc/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libfs/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libfuse2/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libfuse3/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libgav1/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libgc/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libgcrypt/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libgif/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libgit2/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libglm/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libgloox/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libgpg-error/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libgphoto2/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libgpm/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libgrantlee/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libgsl/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libgspell-gtk3/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libgspell-gtk4/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libharu/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libheif/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libhyphen/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libice/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libicu/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libimath/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libimmer/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libinput/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libisoburn/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libisofs/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libjasper/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libjpeg-turbo/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libjxl/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libkdcraw/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libkomparediff2/recipe.toml | 0 recipes/wip/{ => libs/librdf}/liblager/recipe.toml | 0 recipes/wip/{ => libs/librdf}/liblapack/recipe.toml | 0 recipes/wip/{ => libs/librdf}/liblcms/recipe.toml | 0 recipes/wip/{ => libs/librdf}/liblo/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libm17n/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libmad/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libmatroska/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libmd/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libmpeg2/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libmypaint/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libnlopt/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libnotify/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libnsl/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libotf/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libpanel/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libpcap/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libpeas/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libpoppler/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libportaudio/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libpthread-stubs/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libpugixml/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libqalculate/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libqrcodegenc/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libraptor2/recipe.toml | 0 recipes/wip/{ => libs/librdf}/librasqal/recipe.toml | 0 recipes/wip/{ => libs/librdf}/libraw/recipe.toml | 0 recipes/wip/{ => libs}/librdf/recipe.toml | 0 recipes/wip/{ => libs}/librevenge/recipe.toml | 0 recipes/wip/{ => libs}/librist/recipe.toml | 0 recipes/wip/{ => libs}/librkcommon/recipe.toml | 0 recipes/wip/{ => libs}/librsvg/recipe.toml | 0 recipes/wip/{ => libs}/libsamplerate/recipe.toml | 0 recipes/wip/{ => libs}/libseexpr-kde/recipe.toml | 0 recipes/wip/{ => libs}/libsigc++/recipe.toml | 0 recipes/wip/{ => libs}/libsixel/recipe.toml | 0 recipes/wip/{ => libs}/libskia/recipe.toml | 0 recipes/wip/{ => libs}/libslirp/recipe.toml | 0 recipes/wip/{ => libs}/libsm/recipe.toml | 0 recipes/wip/{ => libs}/libsndfile/recipe.toml | 0 recipes/wip/{ => libs}/libsoundio/recipe.toml | 0 recipes/wip/{ => libs}/libsoup/recipe.toml | 0 recipes/wip/{ => libs}/libspiro/recipe.toml | 0 recipes/wip/{ => libs}/libsrt/recipe.toml | 0 recipes/wip/{ => libs}/libstatgrab/recipe.toml | 0 recipes/wip/{ => libs}/libstk/recipe.toml | 0 recipes/wip/{ => libs}/libtheora/recipe.toml | 0 recipes/wip/{ => libs}/libtickit/recipe.toml | 0 recipes/wip/{ => libs}/libtiff/recipe.toml | 0 recipes/wip/{ => libs}/libtool/recipe.toml | 0 recipes/wip/{ => libs}/libunibreak/recipe.toml | 0 recipes/wip/{ => libs}/libunistring/recipe.toml | 0 recipes/wip/{ => libs}/libunwind/recipe.toml | 0 recipes/wip/{ => libs}/liburcu/recipe.toml | 0 recipes/wip/{ => libs}/libusb/recipe.toml | 0 recipes/wip/{ => libs}/libuuid/recipe.toml | 0 recipes/wip/{ => libs}/libuv/recipe.toml | 0 recipes/wip/{ => libs}/libva/recipe.toml | 0 recipes/wip/{ => libs}/libvisio/recipe.toml | 0 recipes/wip/{ => libs}/libvncserver/recipe.toml | 0 recipes/wip/{ => libs}/libvpx/recipe.toml | 0 recipes/wip/{ => libs}/libvte/recipe.toml | 0 recipes/wip/{ => libs}/libvterm/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libwayland/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libwebp/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libwebp2/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libwebsocket++/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libwebsockets/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libwmf/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libwpd/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libx11/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxau/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxaw/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxcb/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxcomposite/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxcursor/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxdamage/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxdmcp/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxext/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxfixes/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxft/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxi/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxinerama/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxkbcommon/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxkbfile/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxmu/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxpm/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxrandr/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxrender/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxres/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxsimd/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxslt/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxss/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxtl/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxtrans/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxtst/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxv/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libxvmc/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libyaml/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libzug/recipe.toml | 0 recipes/wip/{ => libs/libvulkan}/libzvbi/recipe.toml | 0 recipes/wip/{ => libs}/libvulkan/recipe.toml | 0 recipes/wip/{ => libs}/qt5-3d/recipe.toml | 0 recipes/wip/{ => libs}/qt5-activeqt/recipe.toml | 0 recipes/wip/{ => libs}/qt5-charts/recipe.toml | 0 recipes/wip/{ => libs}/qt5-coap/recipe.toml | 0 recipes/wip/{ => libs}/qt5-connectivity/recipe.toml | 0 recipes/wip/{ => libs}/qt5-datavis3d/recipe.toml | 0 recipes/wip/{ => libs}/qt5-declarative/recipe.toml | 0 recipes/wip/{ => libs}/qt5-doc/recipe.toml | 0 recipes/wip/{ => libs}/qt5-gamepad/recipe.toml | 0 recipes/wip/{ => libs}/qt5-graphical-effects/recipe.toml | 0 recipes/wip/{ => libs}/qt5-imageformats/recipe.toml | 0 recipes/wip/{ => libs}/qt5-knx/recipe.toml | 0 recipes/wip/{ => libs}/qt5-location/recipe.toml | 0 recipes/wip/{ => libs}/qt5-lottie/recipe.toml | 0 recipes/wip/{ => libs}/qt5-mqtt/recipe.toml | 0 recipes/wip/{ => libs}/qt5-multimedia/recipe.toml | 0 recipes/wip/{ => libs}/qt5-networkauth/recipe.toml | 0 recipes/wip/{ => libs}/qt5-opcua/recipe.toml | 0 recipes/wip/{ => libs}/qt5-purchasing/recipe.toml | 0 recipes/wip/{ => libs}/qt5-quick3d/recipe.toml | 0 recipes/wip/{ => libs}/qt5-quickcontrols/recipe.toml | 0 recipes/wip/{ => libs}/qt5-quickcontrols2/recipe.toml | 0 recipes/wip/{ => libs}/qt5-quicktimeline/recipe.toml | 0 recipes/wip/{ => libs}/qt5-remoteobjects/recipe.toml | 0 recipes/wip/{ => libs}/qt5-script/recipe.toml | 0 recipes/wip/{ => libs}/qt5-scxml/recipe.toml | 0 recipes/wip/{ => libs}/qt5-sensors/recipe.toml | 0 recipes/wip/{ => libs}/qt5-serialbus/recipe.toml | 0 recipes/wip/{ => libs}/qt5-serialport/recipe.toml | 0 recipes/wip/{ => libs}/qt5-speech/recipe.toml | 0 recipes/wip/{ => libs}/qt5-svg/recipe.toml | 0 recipes/wip/{ => libs}/qt5-tools/recipe.toml | 0 recipes/wip/{ => libs}/qt5-tqtc/recipe.toml | 0 recipes/wip/{ => libs}/qt5-translations/recipe.toml | 0 recipes/wip/{ => libs}/qt5-virtualkeyboard/recipe.toml | 0 recipes/wip/{ => libs}/qt5-wayland/recipe.toml | 0 recipes/wip/{ => libs}/qt5-webchannel/recipe.toml | 0 recipes/wip/{ => libs}/qt5-webengine/recipe.toml | 0 recipes/wip/{ => libs}/qt5-webglplugin/recipe.toml | 0 recipes/wip/{ => libs}/qt5-webkit/recipe.toml | 0 recipes/wip/{ => libs}/qt5-websockets/recipe.toml | 0 recipes/wip/{ => libs}/qt5-webview/recipe.toml | 0 recipes/wip/{ => libs}/qt5-x11extras/recipe.toml | 0 recipes/wip/{ => libs}/qt5-xmlpatterns/recipe.toml | 0 recipes/wip/{ => libs}/qt6-3d/recipe.toml | 0 recipes/wip/{ => libs}/qt6-activeqt/recipe.toml | 0 recipes/wip/{ => libs}/qt6-charts/recipe.toml | 0 recipes/wip/{ => libs}/qt6-connectivity/recipe.toml | 0 recipes/wip/{ => libs}/qt6-datavis3d/recipe.toml | 0 recipes/wip/{ => libs}/qt6-declarative/recipe.toml | 0 recipes/wip/{ => libs}/qt6-doc/recipe.toml | 0 recipes/wip/{ => libs}/qt6-graphs/recipe.toml | 0 recipes/wip/{ => libs}/qt6-grpc/recipe.toml | 0 recipes/wip/{ => libs}/qt6-httpserver/recipe.toml | 0 recipes/wip/{ => libs}/qt6-imageformats/recipe.toml | 0 recipes/wip/{ => libs}/qt6-languageserver/recipe.toml | 0 recipes/wip/{ => libs}/qt6-location/recipe.toml | 0 recipes/wip/{ => libs}/qt6-lottie/recipe.toml | 0 recipes/wip/{ => libs}/qt6-multimedia/recipe.toml | 0 recipes/wip/{ => libs}/qt6-networkauth/recipe.toml | 0 recipes/wip/{ => libs}/qt6-positioning/recipe.toml | 0 recipes/wip/{ => libs}/qt6-qt5compat/recipe.toml | 0 recipes/wip/{ => libs}/qt6-quick3d/recipe.toml | 0 recipes/wip/{ => libs}/qt6-quick3dphysics/recipe.toml | 0 recipes/wip/{ => libs}/qt6-quickeffectmaker/recipe.toml | 0 recipes/wip/{ => libs}/qt6-quicktimeline/recipe.toml | 0 recipes/wip/{ => libs}/qt6-remoteobjects/recipe.toml | 0 recipes/wip/{ => libs}/qt6-scxml/recipe.toml | 0 recipes/wip/{ => libs}/qt6-sensors/recipe.toml | 0 recipes/wip/{ => libs}/qt6-serialbus/recipe.toml | 0 recipes/wip/{ => libs}/qt6-serialport/recipe.toml | 0 recipes/wip/{ => libs}/qt6-shadertools/recipe.toml | 0 recipes/wip/{ => libs}/qt6-speech/recipe.toml | 0 recipes/wip/{ => libs}/qt6-svg/recipe.toml | 0 recipes/wip/{ => libs}/qt6-tools/recipe.toml | 0 recipes/wip/{ => libs}/qt6-translations/recipe.toml | 0 recipes/wip/{ => libs}/qt6-virtualkeyboard/recipe.toml | 0 recipes/wip/{ => libs}/qt6-wayland/recipe.toml | 0 recipes/wip/{ => libs}/qt6-webchannel/recipe.toml | 0 recipes/wip/{ => libs}/qt6-webengine/recipe.toml | 0 recipes/wip/{ => libs}/qt6-websockets/recipe.toml | 0 recipes/wip/{ => libs}/qt6-webview/recipe.toml | 0 331 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => libs/kf5-activities}/kf5-activities-stats/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-apidox/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-archive/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-attica/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-auth/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-baloo/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-bookmarks/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-calendarcore/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-cmake-modules/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-cmutils/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-codecs/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-completion/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-config/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-configwidgets/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-contacts/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-coreaddons/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-crash/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-dav/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-dbusaddons/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-declarative/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-dnssd/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-doctools/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-emoticons/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-filemetadata/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-frameworkintegration/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-globalaccel/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-guiaddons/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-holidays/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-i18n/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-iconthemes/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-idletime/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-init/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-io/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-itemmodels/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-itemviews/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-jobwidgets/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-kded/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-kdesu/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-kirigami/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-modem-manager/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-networkmanager/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-newstuff/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-notifications/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-notifyconfig/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-package/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-parts/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-people/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-plasma-framework/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-plotting/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-prison/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-pty/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-purpose/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-qqc2-desktop-style/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-quickcharts/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-runner/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-service/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-solid/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-sonnet/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-syndication/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-syntax-highlighting/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-sysguard/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-texteditor/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-textwidgets/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-threadweaver/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-unitconversion/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-wayland/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-widgetaddons/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-windowsystem/recipe.toml (100%) rename recipes/wip/{ => libs/kf5-activities}/kf5-xmlgui/recipe.toml (100%) rename recipes/wip/{ => libs}/kf5-activities/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/lib2geom/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/liba52/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libadwaita/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libaio/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libaom/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libargon2/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libart/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libaspell/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libass/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libatomic_ops/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libavif/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libbluray/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libbotan/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libbrotli/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libbsd/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libburn/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libcaca/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libcamera/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libcap/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libcdio-paranoia/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libcdio/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libcdr/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libcpuid/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libcups/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libde265/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libdecor/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libdeflate/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libdex/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libdmx/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libdotconf/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libdouble-conversion/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libdvbpsi/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libdvdcss/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libdvdnav/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libdvdread/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libebml/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libedit/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libeditline/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libeigen/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libenet/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libepoxy/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/liberty-eiffel/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libevdev/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libevent/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libfmt/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libfontenc/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libfs/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libfuse2/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libfuse3/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libgav1/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libgc/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libgcrypt/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libgif/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libgit2/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libglm/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libgloox/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libgpg-error/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libgphoto2/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libgpm/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libgrantlee/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libgsl/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libgspell-gtk3/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libgspell-gtk4/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libharu/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libheif/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libhyphen/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libice/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libicu/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libimath/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libimmer/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libinput/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libisoburn/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libisofs/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libjasper/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libjpeg-turbo/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libjxl/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libkdcraw/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libkomparediff2/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/liblager/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/liblapack/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/liblcms/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/liblo/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libm17n/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libmad/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libmatroska/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libmd/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libmpeg2/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libmypaint/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libnlopt/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libnotify/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libnsl/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libotf/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libpanel/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libpcap/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libpeas/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libpoppler/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libportaudio/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libpthread-stubs/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libpugixml/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libqalculate/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libqrcodegenc/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libraptor2/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/librasqal/recipe.toml (100%) rename recipes/wip/{ => libs/librdf}/libraw/recipe.toml (100%) rename recipes/wip/{ => libs}/librdf/recipe.toml (100%) rename recipes/wip/{ => libs}/librevenge/recipe.toml (100%) rename recipes/wip/{ => libs}/librist/recipe.toml (100%) rename recipes/wip/{ => libs}/librkcommon/recipe.toml (100%) rename recipes/wip/{ => libs}/librsvg/recipe.toml (100%) rename recipes/wip/{ => libs}/libsamplerate/recipe.toml (100%) rename recipes/wip/{ => libs}/libseexpr-kde/recipe.toml (100%) rename recipes/wip/{ => libs}/libsigc++/recipe.toml (100%) rename recipes/wip/{ => libs}/libsixel/recipe.toml (100%) rename recipes/wip/{ => libs}/libskia/recipe.toml (100%) rename recipes/wip/{ => libs}/libslirp/recipe.toml (100%) rename recipes/wip/{ => libs}/libsm/recipe.toml (100%) rename recipes/wip/{ => libs}/libsndfile/recipe.toml (100%) rename recipes/wip/{ => libs}/libsoundio/recipe.toml (100%) rename recipes/wip/{ => libs}/libsoup/recipe.toml (100%) rename recipes/wip/{ => libs}/libspiro/recipe.toml (100%) rename recipes/wip/{ => libs}/libsrt/recipe.toml (100%) rename recipes/wip/{ => libs}/libstatgrab/recipe.toml (100%) rename recipes/wip/{ => libs}/libstk/recipe.toml (100%) rename recipes/wip/{ => libs}/libtheora/recipe.toml (100%) rename recipes/wip/{ => libs}/libtickit/recipe.toml (100%) rename recipes/wip/{ => libs}/libtiff/recipe.toml (100%) rename recipes/wip/{ => libs}/libtool/recipe.toml (100%) rename recipes/wip/{ => libs}/libunibreak/recipe.toml (100%) rename recipes/wip/{ => libs}/libunistring/recipe.toml (100%) rename recipes/wip/{ => libs}/libunwind/recipe.toml (100%) rename recipes/wip/{ => libs}/liburcu/recipe.toml (100%) rename recipes/wip/{ => libs}/libusb/recipe.toml (100%) rename recipes/wip/{ => libs}/libuuid/recipe.toml (100%) rename recipes/wip/{ => libs}/libuv/recipe.toml (100%) rename recipes/wip/{ => libs}/libva/recipe.toml (100%) rename recipes/wip/{ => libs}/libvisio/recipe.toml (100%) rename recipes/wip/{ => libs}/libvncserver/recipe.toml (100%) rename recipes/wip/{ => libs}/libvpx/recipe.toml (100%) rename recipes/wip/{ => libs}/libvte/recipe.toml (100%) rename recipes/wip/{ => libs}/libvterm/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libwayland/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libwebp/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libwebp2/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libwebsocket++/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libwebsockets/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libwmf/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libwpd/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libx11/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxau/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxaw/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxcb/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxcomposite/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxcursor/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxdamage/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxdmcp/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxext/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxfixes/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxft/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxi/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxinerama/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxkbcommon/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxkbfile/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxmu/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxpm/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxrandr/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxrender/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxres/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxsimd/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxslt/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxss/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxtl/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxtrans/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxtst/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxv/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libxvmc/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libyaml/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libzug/recipe.toml (100%) rename recipes/wip/{ => libs/libvulkan}/libzvbi/recipe.toml (100%) rename recipes/wip/{ => libs}/libvulkan/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-3d/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-activeqt/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-charts/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-coap/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-connectivity/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-datavis3d/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-declarative/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-doc/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-gamepad/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-graphical-effects/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-imageformats/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-knx/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-location/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-lottie/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-mqtt/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-multimedia/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-networkauth/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-opcua/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-purchasing/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-quick3d/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-quickcontrols/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-quickcontrols2/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-quicktimeline/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-remoteobjects/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-script/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-scxml/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-sensors/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-serialbus/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-serialport/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-speech/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-svg/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-tools/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-tqtc/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-translations/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-virtualkeyboard/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-wayland/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-webchannel/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-webengine/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-webglplugin/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-webkit/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-websockets/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-webview/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-x11extras/recipe.toml (100%) rename recipes/wip/{ => libs}/qt5-xmlpatterns/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-3d/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-activeqt/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-charts/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-connectivity/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-datavis3d/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-declarative/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-doc/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-graphs/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-grpc/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-httpserver/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-imageformats/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-languageserver/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-location/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-lottie/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-multimedia/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-networkauth/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-positioning/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-qt5compat/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-quick3d/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-quick3dphysics/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-quickeffectmaker/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-quicktimeline/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-remoteobjects/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-scxml/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-sensors/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-serialbus/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-serialport/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-shadertools/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-speech/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-svg/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-tools/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-translations/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-virtualkeyboard/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-wayland/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-webchannel/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-webengine/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-websockets/recipe.toml (100%) rename recipes/wip/{ => libs}/qt6-webview/recipe.toml (100%) diff --git a/recipes/wip/kf5-activities-stats/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-activities-stats/recipe.toml similarity index 100% rename from recipes/wip/kf5-activities-stats/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-activities-stats/recipe.toml diff --git a/recipes/wip/kf5-apidox/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-apidox/recipe.toml similarity index 100% rename from recipes/wip/kf5-apidox/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-apidox/recipe.toml diff --git a/recipes/wip/kf5-archive/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-archive/recipe.toml similarity index 100% rename from recipes/wip/kf5-archive/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-archive/recipe.toml diff --git a/recipes/wip/kf5-attica/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-attica/recipe.toml similarity index 100% rename from recipes/wip/kf5-attica/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-attica/recipe.toml diff --git a/recipes/wip/kf5-auth/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-auth/recipe.toml similarity index 100% rename from recipes/wip/kf5-auth/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-auth/recipe.toml diff --git a/recipes/wip/kf5-baloo/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-baloo/recipe.toml similarity index 100% rename from recipes/wip/kf5-baloo/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-baloo/recipe.toml diff --git a/recipes/wip/kf5-bookmarks/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-bookmarks/recipe.toml similarity index 100% rename from recipes/wip/kf5-bookmarks/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-bookmarks/recipe.toml diff --git a/recipes/wip/kf5-calendarcore/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-calendarcore/recipe.toml similarity index 100% rename from recipes/wip/kf5-calendarcore/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-calendarcore/recipe.toml diff --git a/recipes/wip/kf5-cmake-modules/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-cmake-modules/recipe.toml similarity index 100% rename from recipes/wip/kf5-cmake-modules/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-cmake-modules/recipe.toml diff --git a/recipes/wip/kf5-cmutils/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-cmutils/recipe.toml similarity index 100% rename from recipes/wip/kf5-cmutils/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-cmutils/recipe.toml diff --git a/recipes/wip/kf5-codecs/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-codecs/recipe.toml similarity index 100% rename from recipes/wip/kf5-codecs/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-codecs/recipe.toml diff --git a/recipes/wip/kf5-completion/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-completion/recipe.toml similarity index 100% rename from recipes/wip/kf5-completion/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-completion/recipe.toml diff --git a/recipes/wip/kf5-config/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-config/recipe.toml similarity index 100% rename from recipes/wip/kf5-config/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-config/recipe.toml diff --git a/recipes/wip/kf5-configwidgets/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-configwidgets/recipe.toml similarity index 100% rename from recipes/wip/kf5-configwidgets/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-configwidgets/recipe.toml diff --git a/recipes/wip/kf5-contacts/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-contacts/recipe.toml similarity index 100% rename from recipes/wip/kf5-contacts/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-contacts/recipe.toml diff --git a/recipes/wip/kf5-coreaddons/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-coreaddons/recipe.toml similarity index 100% rename from recipes/wip/kf5-coreaddons/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-coreaddons/recipe.toml diff --git a/recipes/wip/kf5-crash/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-crash/recipe.toml similarity index 100% rename from recipes/wip/kf5-crash/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-crash/recipe.toml diff --git a/recipes/wip/kf5-dav/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-dav/recipe.toml similarity index 100% rename from recipes/wip/kf5-dav/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-dav/recipe.toml diff --git a/recipes/wip/kf5-dbusaddons/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-dbusaddons/recipe.toml similarity index 100% rename from recipes/wip/kf5-dbusaddons/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-dbusaddons/recipe.toml diff --git a/recipes/wip/kf5-declarative/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-declarative/recipe.toml similarity index 100% rename from recipes/wip/kf5-declarative/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-declarative/recipe.toml diff --git a/recipes/wip/kf5-dnssd/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-dnssd/recipe.toml similarity index 100% rename from recipes/wip/kf5-dnssd/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-dnssd/recipe.toml diff --git a/recipes/wip/kf5-doctools/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-doctools/recipe.toml similarity index 100% rename from recipes/wip/kf5-doctools/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-doctools/recipe.toml diff --git a/recipes/wip/kf5-emoticons/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-emoticons/recipe.toml similarity index 100% rename from recipes/wip/kf5-emoticons/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-emoticons/recipe.toml diff --git a/recipes/wip/kf5-filemetadata/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-filemetadata/recipe.toml similarity index 100% rename from recipes/wip/kf5-filemetadata/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-filemetadata/recipe.toml diff --git a/recipes/wip/kf5-frameworkintegration/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-frameworkintegration/recipe.toml similarity index 100% rename from recipes/wip/kf5-frameworkintegration/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-frameworkintegration/recipe.toml diff --git a/recipes/wip/kf5-globalaccel/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-globalaccel/recipe.toml similarity index 100% rename from recipes/wip/kf5-globalaccel/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-globalaccel/recipe.toml diff --git a/recipes/wip/kf5-guiaddons/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-guiaddons/recipe.toml similarity index 100% rename from recipes/wip/kf5-guiaddons/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-guiaddons/recipe.toml diff --git a/recipes/wip/kf5-holidays/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-holidays/recipe.toml similarity index 100% rename from recipes/wip/kf5-holidays/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-holidays/recipe.toml diff --git a/recipes/wip/kf5-i18n/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-i18n/recipe.toml similarity index 100% rename from recipes/wip/kf5-i18n/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-i18n/recipe.toml diff --git a/recipes/wip/kf5-iconthemes/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-iconthemes/recipe.toml similarity index 100% rename from recipes/wip/kf5-iconthemes/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-iconthemes/recipe.toml diff --git a/recipes/wip/kf5-idletime/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-idletime/recipe.toml similarity index 100% rename from recipes/wip/kf5-idletime/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-idletime/recipe.toml diff --git a/recipes/wip/kf5-init/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-init/recipe.toml similarity index 100% rename from recipes/wip/kf5-init/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-init/recipe.toml diff --git a/recipes/wip/kf5-io/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-io/recipe.toml similarity index 100% rename from recipes/wip/kf5-io/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-io/recipe.toml diff --git a/recipes/wip/kf5-itemmodels/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-itemmodels/recipe.toml similarity index 100% rename from recipes/wip/kf5-itemmodels/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-itemmodels/recipe.toml diff --git a/recipes/wip/kf5-itemviews/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-itemviews/recipe.toml similarity index 100% rename from recipes/wip/kf5-itemviews/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-itemviews/recipe.toml diff --git a/recipes/wip/kf5-jobwidgets/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-jobwidgets/recipe.toml similarity index 100% rename from recipes/wip/kf5-jobwidgets/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-jobwidgets/recipe.toml diff --git a/recipes/wip/kf5-kded/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-kded/recipe.toml similarity index 100% rename from recipes/wip/kf5-kded/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-kded/recipe.toml diff --git a/recipes/wip/kf5-kdesu/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-kdesu/recipe.toml similarity index 100% rename from recipes/wip/kf5-kdesu/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-kdesu/recipe.toml diff --git a/recipes/wip/kf5-kirigami/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-kirigami/recipe.toml similarity index 100% rename from recipes/wip/kf5-kirigami/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-kirigami/recipe.toml diff --git a/recipes/wip/kf5-modem-manager/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-modem-manager/recipe.toml similarity index 100% rename from recipes/wip/kf5-modem-manager/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-modem-manager/recipe.toml diff --git a/recipes/wip/kf5-networkmanager/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-networkmanager/recipe.toml similarity index 100% rename from recipes/wip/kf5-networkmanager/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-networkmanager/recipe.toml diff --git a/recipes/wip/kf5-newstuff/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-newstuff/recipe.toml similarity index 100% rename from recipes/wip/kf5-newstuff/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-newstuff/recipe.toml diff --git a/recipes/wip/kf5-notifications/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-notifications/recipe.toml similarity index 100% rename from recipes/wip/kf5-notifications/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-notifications/recipe.toml diff --git a/recipes/wip/kf5-notifyconfig/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-notifyconfig/recipe.toml similarity index 100% rename from recipes/wip/kf5-notifyconfig/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-notifyconfig/recipe.toml diff --git a/recipes/wip/kf5-package/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-package/recipe.toml similarity index 100% rename from recipes/wip/kf5-package/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-package/recipe.toml diff --git a/recipes/wip/kf5-parts/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-parts/recipe.toml similarity index 100% rename from recipes/wip/kf5-parts/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-parts/recipe.toml diff --git a/recipes/wip/kf5-people/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-people/recipe.toml similarity index 100% rename from recipes/wip/kf5-people/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-people/recipe.toml diff --git a/recipes/wip/kf5-plasma-framework/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-plasma-framework/recipe.toml similarity index 100% rename from recipes/wip/kf5-plasma-framework/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-plasma-framework/recipe.toml diff --git a/recipes/wip/kf5-plotting/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-plotting/recipe.toml similarity index 100% rename from recipes/wip/kf5-plotting/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-plotting/recipe.toml diff --git a/recipes/wip/kf5-prison/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-prison/recipe.toml similarity index 100% rename from recipes/wip/kf5-prison/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-prison/recipe.toml diff --git a/recipes/wip/kf5-pty/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-pty/recipe.toml similarity index 100% rename from recipes/wip/kf5-pty/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-pty/recipe.toml diff --git a/recipes/wip/kf5-purpose/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-purpose/recipe.toml similarity index 100% rename from recipes/wip/kf5-purpose/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-purpose/recipe.toml diff --git a/recipes/wip/kf5-qqc2-desktop-style/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-qqc2-desktop-style/recipe.toml similarity index 100% rename from recipes/wip/kf5-qqc2-desktop-style/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-qqc2-desktop-style/recipe.toml diff --git a/recipes/wip/kf5-quickcharts/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-quickcharts/recipe.toml similarity index 100% rename from recipes/wip/kf5-quickcharts/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-quickcharts/recipe.toml diff --git a/recipes/wip/kf5-runner/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-runner/recipe.toml similarity index 100% rename from recipes/wip/kf5-runner/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-runner/recipe.toml diff --git a/recipes/wip/kf5-service/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-service/recipe.toml similarity index 100% rename from recipes/wip/kf5-service/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-service/recipe.toml diff --git a/recipes/wip/kf5-solid/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-solid/recipe.toml similarity index 100% rename from recipes/wip/kf5-solid/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-solid/recipe.toml diff --git a/recipes/wip/kf5-sonnet/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-sonnet/recipe.toml similarity index 100% rename from recipes/wip/kf5-sonnet/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-sonnet/recipe.toml diff --git a/recipes/wip/kf5-syndication/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-syndication/recipe.toml similarity index 100% rename from recipes/wip/kf5-syndication/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-syndication/recipe.toml diff --git a/recipes/wip/kf5-syntax-highlighting/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-syntax-highlighting/recipe.toml similarity index 100% rename from recipes/wip/kf5-syntax-highlighting/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-syntax-highlighting/recipe.toml diff --git a/recipes/wip/kf5-sysguard/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-sysguard/recipe.toml similarity index 100% rename from recipes/wip/kf5-sysguard/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-sysguard/recipe.toml diff --git a/recipes/wip/kf5-texteditor/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-texteditor/recipe.toml similarity index 100% rename from recipes/wip/kf5-texteditor/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-texteditor/recipe.toml diff --git a/recipes/wip/kf5-textwidgets/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-textwidgets/recipe.toml similarity index 100% rename from recipes/wip/kf5-textwidgets/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-textwidgets/recipe.toml diff --git a/recipes/wip/kf5-threadweaver/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-threadweaver/recipe.toml similarity index 100% rename from recipes/wip/kf5-threadweaver/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-threadweaver/recipe.toml diff --git a/recipes/wip/kf5-unitconversion/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-unitconversion/recipe.toml similarity index 100% rename from recipes/wip/kf5-unitconversion/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-unitconversion/recipe.toml diff --git a/recipes/wip/kf5-wayland/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-wayland/recipe.toml similarity index 100% rename from recipes/wip/kf5-wayland/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-wayland/recipe.toml diff --git a/recipes/wip/kf5-widgetaddons/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-widgetaddons/recipe.toml similarity index 100% rename from recipes/wip/kf5-widgetaddons/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-widgetaddons/recipe.toml diff --git a/recipes/wip/kf5-windowsystem/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-windowsystem/recipe.toml similarity index 100% rename from recipes/wip/kf5-windowsystem/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-windowsystem/recipe.toml diff --git a/recipes/wip/kf5-xmlgui/recipe.toml b/recipes/wip/libs/kf5-activities/kf5-xmlgui/recipe.toml similarity index 100% rename from recipes/wip/kf5-xmlgui/recipe.toml rename to recipes/wip/libs/kf5-activities/kf5-xmlgui/recipe.toml diff --git a/recipes/wip/kf5-activities/recipe.toml b/recipes/wip/libs/kf5-activities/recipe.toml similarity index 100% rename from recipes/wip/kf5-activities/recipe.toml rename to recipes/wip/libs/kf5-activities/recipe.toml diff --git a/recipes/wip/lib2geom/recipe.toml b/recipes/wip/libs/librdf/lib2geom/recipe.toml similarity index 100% rename from recipes/wip/lib2geom/recipe.toml rename to recipes/wip/libs/librdf/lib2geom/recipe.toml diff --git a/recipes/wip/liba52/recipe.toml b/recipes/wip/libs/librdf/liba52/recipe.toml similarity index 100% rename from recipes/wip/liba52/recipe.toml rename to recipes/wip/libs/librdf/liba52/recipe.toml diff --git a/recipes/wip/libadwaita/recipe.toml b/recipes/wip/libs/librdf/libadwaita/recipe.toml similarity index 100% rename from recipes/wip/libadwaita/recipe.toml rename to recipes/wip/libs/librdf/libadwaita/recipe.toml diff --git a/recipes/wip/libaio/recipe.toml b/recipes/wip/libs/librdf/libaio/recipe.toml similarity index 100% rename from recipes/wip/libaio/recipe.toml rename to recipes/wip/libs/librdf/libaio/recipe.toml diff --git a/recipes/wip/libaom/recipe.toml b/recipes/wip/libs/librdf/libaom/recipe.toml similarity index 100% rename from recipes/wip/libaom/recipe.toml rename to recipes/wip/libs/librdf/libaom/recipe.toml diff --git a/recipes/wip/libargon2/recipe.toml b/recipes/wip/libs/librdf/libargon2/recipe.toml similarity index 100% rename from recipes/wip/libargon2/recipe.toml rename to recipes/wip/libs/librdf/libargon2/recipe.toml diff --git a/recipes/wip/libart/recipe.toml b/recipes/wip/libs/librdf/libart/recipe.toml similarity index 100% rename from recipes/wip/libart/recipe.toml rename to recipes/wip/libs/librdf/libart/recipe.toml diff --git a/recipes/wip/libaspell/recipe.toml b/recipes/wip/libs/librdf/libaspell/recipe.toml similarity index 100% rename from recipes/wip/libaspell/recipe.toml rename to recipes/wip/libs/librdf/libaspell/recipe.toml diff --git a/recipes/wip/libass/recipe.toml b/recipes/wip/libs/librdf/libass/recipe.toml similarity index 100% rename from recipes/wip/libass/recipe.toml rename to recipes/wip/libs/librdf/libass/recipe.toml diff --git a/recipes/wip/libatomic_ops/recipe.toml b/recipes/wip/libs/librdf/libatomic_ops/recipe.toml similarity index 100% rename from recipes/wip/libatomic_ops/recipe.toml rename to recipes/wip/libs/librdf/libatomic_ops/recipe.toml diff --git a/recipes/wip/libavif/recipe.toml b/recipes/wip/libs/librdf/libavif/recipe.toml similarity index 100% rename from recipes/wip/libavif/recipe.toml rename to recipes/wip/libs/librdf/libavif/recipe.toml diff --git a/recipes/wip/libbluray/recipe.toml b/recipes/wip/libs/librdf/libbluray/recipe.toml similarity index 100% rename from recipes/wip/libbluray/recipe.toml rename to recipes/wip/libs/librdf/libbluray/recipe.toml diff --git a/recipes/wip/libbotan/recipe.toml b/recipes/wip/libs/librdf/libbotan/recipe.toml similarity index 100% rename from recipes/wip/libbotan/recipe.toml rename to recipes/wip/libs/librdf/libbotan/recipe.toml diff --git a/recipes/wip/libbrotli/recipe.toml b/recipes/wip/libs/librdf/libbrotli/recipe.toml similarity index 100% rename from recipes/wip/libbrotli/recipe.toml rename to recipes/wip/libs/librdf/libbrotli/recipe.toml diff --git a/recipes/wip/libbsd/recipe.toml b/recipes/wip/libs/librdf/libbsd/recipe.toml similarity index 100% rename from recipes/wip/libbsd/recipe.toml rename to recipes/wip/libs/librdf/libbsd/recipe.toml diff --git a/recipes/wip/libburn/recipe.toml b/recipes/wip/libs/librdf/libburn/recipe.toml similarity index 100% rename from recipes/wip/libburn/recipe.toml rename to recipes/wip/libs/librdf/libburn/recipe.toml diff --git a/recipes/wip/libcaca/recipe.toml b/recipes/wip/libs/librdf/libcaca/recipe.toml similarity index 100% rename from recipes/wip/libcaca/recipe.toml rename to recipes/wip/libs/librdf/libcaca/recipe.toml diff --git a/recipes/wip/libcamera/recipe.toml b/recipes/wip/libs/librdf/libcamera/recipe.toml similarity index 100% rename from recipes/wip/libcamera/recipe.toml rename to recipes/wip/libs/librdf/libcamera/recipe.toml diff --git a/recipes/wip/libcap/recipe.toml b/recipes/wip/libs/librdf/libcap/recipe.toml similarity index 100% rename from recipes/wip/libcap/recipe.toml rename to recipes/wip/libs/librdf/libcap/recipe.toml diff --git a/recipes/wip/libcdio-paranoia/recipe.toml b/recipes/wip/libs/librdf/libcdio-paranoia/recipe.toml similarity index 100% rename from recipes/wip/libcdio-paranoia/recipe.toml rename to recipes/wip/libs/librdf/libcdio-paranoia/recipe.toml diff --git a/recipes/wip/libcdio/recipe.toml b/recipes/wip/libs/librdf/libcdio/recipe.toml similarity index 100% rename from recipes/wip/libcdio/recipe.toml rename to recipes/wip/libs/librdf/libcdio/recipe.toml diff --git a/recipes/wip/libcdr/recipe.toml b/recipes/wip/libs/librdf/libcdr/recipe.toml similarity index 100% rename from recipes/wip/libcdr/recipe.toml rename to recipes/wip/libs/librdf/libcdr/recipe.toml diff --git a/recipes/wip/libcpuid/recipe.toml b/recipes/wip/libs/librdf/libcpuid/recipe.toml similarity index 100% rename from recipes/wip/libcpuid/recipe.toml rename to recipes/wip/libs/librdf/libcpuid/recipe.toml diff --git a/recipes/wip/libcups/recipe.toml b/recipes/wip/libs/librdf/libcups/recipe.toml similarity index 100% rename from recipes/wip/libcups/recipe.toml rename to recipes/wip/libs/librdf/libcups/recipe.toml diff --git a/recipes/wip/libde265/recipe.toml b/recipes/wip/libs/librdf/libde265/recipe.toml similarity index 100% rename from recipes/wip/libde265/recipe.toml rename to recipes/wip/libs/librdf/libde265/recipe.toml diff --git a/recipes/wip/libdecor/recipe.toml b/recipes/wip/libs/librdf/libdecor/recipe.toml similarity index 100% rename from recipes/wip/libdecor/recipe.toml rename to recipes/wip/libs/librdf/libdecor/recipe.toml diff --git a/recipes/wip/libdeflate/recipe.toml b/recipes/wip/libs/librdf/libdeflate/recipe.toml similarity index 100% rename from recipes/wip/libdeflate/recipe.toml rename to recipes/wip/libs/librdf/libdeflate/recipe.toml diff --git a/recipes/wip/libdex/recipe.toml b/recipes/wip/libs/librdf/libdex/recipe.toml similarity index 100% rename from recipes/wip/libdex/recipe.toml rename to recipes/wip/libs/librdf/libdex/recipe.toml diff --git a/recipes/wip/libdmx/recipe.toml b/recipes/wip/libs/librdf/libdmx/recipe.toml similarity index 100% rename from recipes/wip/libdmx/recipe.toml rename to recipes/wip/libs/librdf/libdmx/recipe.toml diff --git a/recipes/wip/libdotconf/recipe.toml b/recipes/wip/libs/librdf/libdotconf/recipe.toml similarity index 100% rename from recipes/wip/libdotconf/recipe.toml rename to recipes/wip/libs/librdf/libdotconf/recipe.toml diff --git a/recipes/wip/libdouble-conversion/recipe.toml b/recipes/wip/libs/librdf/libdouble-conversion/recipe.toml similarity index 100% rename from recipes/wip/libdouble-conversion/recipe.toml rename to recipes/wip/libs/librdf/libdouble-conversion/recipe.toml diff --git a/recipes/wip/libdvbpsi/recipe.toml b/recipes/wip/libs/librdf/libdvbpsi/recipe.toml similarity index 100% rename from recipes/wip/libdvbpsi/recipe.toml rename to recipes/wip/libs/librdf/libdvbpsi/recipe.toml diff --git a/recipes/wip/libdvdcss/recipe.toml b/recipes/wip/libs/librdf/libdvdcss/recipe.toml similarity index 100% rename from recipes/wip/libdvdcss/recipe.toml rename to recipes/wip/libs/librdf/libdvdcss/recipe.toml diff --git a/recipes/wip/libdvdnav/recipe.toml b/recipes/wip/libs/librdf/libdvdnav/recipe.toml similarity index 100% rename from recipes/wip/libdvdnav/recipe.toml rename to recipes/wip/libs/librdf/libdvdnav/recipe.toml diff --git a/recipes/wip/libdvdread/recipe.toml b/recipes/wip/libs/librdf/libdvdread/recipe.toml similarity index 100% rename from recipes/wip/libdvdread/recipe.toml rename to recipes/wip/libs/librdf/libdvdread/recipe.toml diff --git a/recipes/wip/libebml/recipe.toml b/recipes/wip/libs/librdf/libebml/recipe.toml similarity index 100% rename from recipes/wip/libebml/recipe.toml rename to recipes/wip/libs/librdf/libebml/recipe.toml diff --git a/recipes/wip/libedit/recipe.toml b/recipes/wip/libs/librdf/libedit/recipe.toml similarity index 100% rename from recipes/wip/libedit/recipe.toml rename to recipes/wip/libs/librdf/libedit/recipe.toml diff --git a/recipes/wip/libeditline/recipe.toml b/recipes/wip/libs/librdf/libeditline/recipe.toml similarity index 100% rename from recipes/wip/libeditline/recipe.toml rename to recipes/wip/libs/librdf/libeditline/recipe.toml diff --git a/recipes/wip/libeigen/recipe.toml b/recipes/wip/libs/librdf/libeigen/recipe.toml similarity index 100% rename from recipes/wip/libeigen/recipe.toml rename to recipes/wip/libs/librdf/libeigen/recipe.toml diff --git a/recipes/wip/libenet/recipe.toml b/recipes/wip/libs/librdf/libenet/recipe.toml similarity index 100% rename from recipes/wip/libenet/recipe.toml rename to recipes/wip/libs/librdf/libenet/recipe.toml diff --git a/recipes/wip/libepoxy/recipe.toml b/recipes/wip/libs/librdf/libepoxy/recipe.toml similarity index 100% rename from recipes/wip/libepoxy/recipe.toml rename to recipes/wip/libs/librdf/libepoxy/recipe.toml diff --git a/recipes/wip/liberty-eiffel/recipe.toml b/recipes/wip/libs/librdf/liberty-eiffel/recipe.toml similarity index 100% rename from recipes/wip/liberty-eiffel/recipe.toml rename to recipes/wip/libs/librdf/liberty-eiffel/recipe.toml diff --git a/recipes/wip/libevdev/recipe.toml b/recipes/wip/libs/librdf/libevdev/recipe.toml similarity index 100% rename from recipes/wip/libevdev/recipe.toml rename to recipes/wip/libs/librdf/libevdev/recipe.toml diff --git a/recipes/wip/libevent/recipe.toml b/recipes/wip/libs/librdf/libevent/recipe.toml similarity index 100% rename from recipes/wip/libevent/recipe.toml rename to recipes/wip/libs/librdf/libevent/recipe.toml diff --git a/recipes/wip/libfmt/recipe.toml b/recipes/wip/libs/librdf/libfmt/recipe.toml similarity index 100% rename from recipes/wip/libfmt/recipe.toml rename to recipes/wip/libs/librdf/libfmt/recipe.toml diff --git a/recipes/wip/libfontenc/recipe.toml b/recipes/wip/libs/librdf/libfontenc/recipe.toml similarity index 100% rename from recipes/wip/libfontenc/recipe.toml rename to recipes/wip/libs/librdf/libfontenc/recipe.toml diff --git a/recipes/wip/libfs/recipe.toml b/recipes/wip/libs/librdf/libfs/recipe.toml similarity index 100% rename from recipes/wip/libfs/recipe.toml rename to recipes/wip/libs/librdf/libfs/recipe.toml diff --git a/recipes/wip/libfuse2/recipe.toml b/recipes/wip/libs/librdf/libfuse2/recipe.toml similarity index 100% rename from recipes/wip/libfuse2/recipe.toml rename to recipes/wip/libs/librdf/libfuse2/recipe.toml diff --git a/recipes/wip/libfuse3/recipe.toml b/recipes/wip/libs/librdf/libfuse3/recipe.toml similarity index 100% rename from recipes/wip/libfuse3/recipe.toml rename to recipes/wip/libs/librdf/libfuse3/recipe.toml diff --git a/recipes/wip/libgav1/recipe.toml b/recipes/wip/libs/librdf/libgav1/recipe.toml similarity index 100% rename from recipes/wip/libgav1/recipe.toml rename to recipes/wip/libs/librdf/libgav1/recipe.toml diff --git a/recipes/wip/libgc/recipe.toml b/recipes/wip/libs/librdf/libgc/recipe.toml similarity index 100% rename from recipes/wip/libgc/recipe.toml rename to recipes/wip/libs/librdf/libgc/recipe.toml diff --git a/recipes/wip/libgcrypt/recipe.toml b/recipes/wip/libs/librdf/libgcrypt/recipe.toml similarity index 100% rename from recipes/wip/libgcrypt/recipe.toml rename to recipes/wip/libs/librdf/libgcrypt/recipe.toml diff --git a/recipes/wip/libgif/recipe.toml b/recipes/wip/libs/librdf/libgif/recipe.toml similarity index 100% rename from recipes/wip/libgif/recipe.toml rename to recipes/wip/libs/librdf/libgif/recipe.toml diff --git a/recipes/wip/libgit2/recipe.toml b/recipes/wip/libs/librdf/libgit2/recipe.toml similarity index 100% rename from recipes/wip/libgit2/recipe.toml rename to recipes/wip/libs/librdf/libgit2/recipe.toml diff --git a/recipes/wip/libglm/recipe.toml b/recipes/wip/libs/librdf/libglm/recipe.toml similarity index 100% rename from recipes/wip/libglm/recipe.toml rename to recipes/wip/libs/librdf/libglm/recipe.toml diff --git a/recipes/wip/libgloox/recipe.toml b/recipes/wip/libs/librdf/libgloox/recipe.toml similarity index 100% rename from recipes/wip/libgloox/recipe.toml rename to recipes/wip/libs/librdf/libgloox/recipe.toml diff --git a/recipes/wip/libgpg-error/recipe.toml b/recipes/wip/libs/librdf/libgpg-error/recipe.toml similarity index 100% rename from recipes/wip/libgpg-error/recipe.toml rename to recipes/wip/libs/librdf/libgpg-error/recipe.toml diff --git a/recipes/wip/libgphoto2/recipe.toml b/recipes/wip/libs/librdf/libgphoto2/recipe.toml similarity index 100% rename from recipes/wip/libgphoto2/recipe.toml rename to recipes/wip/libs/librdf/libgphoto2/recipe.toml diff --git a/recipes/wip/libgpm/recipe.toml b/recipes/wip/libs/librdf/libgpm/recipe.toml similarity index 100% rename from recipes/wip/libgpm/recipe.toml rename to recipes/wip/libs/librdf/libgpm/recipe.toml diff --git a/recipes/wip/libgrantlee/recipe.toml b/recipes/wip/libs/librdf/libgrantlee/recipe.toml similarity index 100% rename from recipes/wip/libgrantlee/recipe.toml rename to recipes/wip/libs/librdf/libgrantlee/recipe.toml diff --git a/recipes/wip/libgsl/recipe.toml b/recipes/wip/libs/librdf/libgsl/recipe.toml similarity index 100% rename from recipes/wip/libgsl/recipe.toml rename to recipes/wip/libs/librdf/libgsl/recipe.toml diff --git a/recipes/wip/libgspell-gtk3/recipe.toml b/recipes/wip/libs/librdf/libgspell-gtk3/recipe.toml similarity index 100% rename from recipes/wip/libgspell-gtk3/recipe.toml rename to recipes/wip/libs/librdf/libgspell-gtk3/recipe.toml diff --git a/recipes/wip/libgspell-gtk4/recipe.toml b/recipes/wip/libs/librdf/libgspell-gtk4/recipe.toml similarity index 100% rename from recipes/wip/libgspell-gtk4/recipe.toml rename to recipes/wip/libs/librdf/libgspell-gtk4/recipe.toml diff --git a/recipes/wip/libharu/recipe.toml b/recipes/wip/libs/librdf/libharu/recipe.toml similarity index 100% rename from recipes/wip/libharu/recipe.toml rename to recipes/wip/libs/librdf/libharu/recipe.toml diff --git a/recipes/wip/libheif/recipe.toml b/recipes/wip/libs/librdf/libheif/recipe.toml similarity index 100% rename from recipes/wip/libheif/recipe.toml rename to recipes/wip/libs/librdf/libheif/recipe.toml diff --git a/recipes/wip/libhyphen/recipe.toml b/recipes/wip/libs/librdf/libhyphen/recipe.toml similarity index 100% rename from recipes/wip/libhyphen/recipe.toml rename to recipes/wip/libs/librdf/libhyphen/recipe.toml diff --git a/recipes/wip/libice/recipe.toml b/recipes/wip/libs/librdf/libice/recipe.toml similarity index 100% rename from recipes/wip/libice/recipe.toml rename to recipes/wip/libs/librdf/libice/recipe.toml diff --git a/recipes/wip/libicu/recipe.toml b/recipes/wip/libs/librdf/libicu/recipe.toml similarity index 100% rename from recipes/wip/libicu/recipe.toml rename to recipes/wip/libs/librdf/libicu/recipe.toml diff --git a/recipes/wip/libimath/recipe.toml b/recipes/wip/libs/librdf/libimath/recipe.toml similarity index 100% rename from recipes/wip/libimath/recipe.toml rename to recipes/wip/libs/librdf/libimath/recipe.toml diff --git a/recipes/wip/libimmer/recipe.toml b/recipes/wip/libs/librdf/libimmer/recipe.toml similarity index 100% rename from recipes/wip/libimmer/recipe.toml rename to recipes/wip/libs/librdf/libimmer/recipe.toml diff --git a/recipes/wip/libinput/recipe.toml b/recipes/wip/libs/librdf/libinput/recipe.toml similarity index 100% rename from recipes/wip/libinput/recipe.toml rename to recipes/wip/libs/librdf/libinput/recipe.toml diff --git a/recipes/wip/libisoburn/recipe.toml b/recipes/wip/libs/librdf/libisoburn/recipe.toml similarity index 100% rename from recipes/wip/libisoburn/recipe.toml rename to recipes/wip/libs/librdf/libisoburn/recipe.toml diff --git a/recipes/wip/libisofs/recipe.toml b/recipes/wip/libs/librdf/libisofs/recipe.toml similarity index 100% rename from recipes/wip/libisofs/recipe.toml rename to recipes/wip/libs/librdf/libisofs/recipe.toml diff --git a/recipes/wip/libjasper/recipe.toml b/recipes/wip/libs/librdf/libjasper/recipe.toml similarity index 100% rename from recipes/wip/libjasper/recipe.toml rename to recipes/wip/libs/librdf/libjasper/recipe.toml diff --git a/recipes/wip/libjpeg-turbo/recipe.toml b/recipes/wip/libs/librdf/libjpeg-turbo/recipe.toml similarity index 100% rename from recipes/wip/libjpeg-turbo/recipe.toml rename to recipes/wip/libs/librdf/libjpeg-turbo/recipe.toml diff --git a/recipes/wip/libjxl/recipe.toml b/recipes/wip/libs/librdf/libjxl/recipe.toml similarity index 100% rename from recipes/wip/libjxl/recipe.toml rename to recipes/wip/libs/librdf/libjxl/recipe.toml diff --git a/recipes/wip/libkdcraw/recipe.toml b/recipes/wip/libs/librdf/libkdcraw/recipe.toml similarity index 100% rename from recipes/wip/libkdcraw/recipe.toml rename to recipes/wip/libs/librdf/libkdcraw/recipe.toml diff --git a/recipes/wip/libkomparediff2/recipe.toml b/recipes/wip/libs/librdf/libkomparediff2/recipe.toml similarity index 100% rename from recipes/wip/libkomparediff2/recipe.toml rename to recipes/wip/libs/librdf/libkomparediff2/recipe.toml diff --git a/recipes/wip/liblager/recipe.toml b/recipes/wip/libs/librdf/liblager/recipe.toml similarity index 100% rename from recipes/wip/liblager/recipe.toml rename to recipes/wip/libs/librdf/liblager/recipe.toml diff --git a/recipes/wip/liblapack/recipe.toml b/recipes/wip/libs/librdf/liblapack/recipe.toml similarity index 100% rename from recipes/wip/liblapack/recipe.toml rename to recipes/wip/libs/librdf/liblapack/recipe.toml diff --git a/recipes/wip/liblcms/recipe.toml b/recipes/wip/libs/librdf/liblcms/recipe.toml similarity index 100% rename from recipes/wip/liblcms/recipe.toml rename to recipes/wip/libs/librdf/liblcms/recipe.toml diff --git a/recipes/wip/liblo/recipe.toml b/recipes/wip/libs/librdf/liblo/recipe.toml similarity index 100% rename from recipes/wip/liblo/recipe.toml rename to recipes/wip/libs/librdf/liblo/recipe.toml diff --git a/recipes/wip/libm17n/recipe.toml b/recipes/wip/libs/librdf/libm17n/recipe.toml similarity index 100% rename from recipes/wip/libm17n/recipe.toml rename to recipes/wip/libs/librdf/libm17n/recipe.toml diff --git a/recipes/wip/libmad/recipe.toml b/recipes/wip/libs/librdf/libmad/recipe.toml similarity index 100% rename from recipes/wip/libmad/recipe.toml rename to recipes/wip/libs/librdf/libmad/recipe.toml diff --git a/recipes/wip/libmatroska/recipe.toml b/recipes/wip/libs/librdf/libmatroska/recipe.toml similarity index 100% rename from recipes/wip/libmatroska/recipe.toml rename to recipes/wip/libs/librdf/libmatroska/recipe.toml diff --git a/recipes/wip/libmd/recipe.toml b/recipes/wip/libs/librdf/libmd/recipe.toml similarity index 100% rename from recipes/wip/libmd/recipe.toml rename to recipes/wip/libs/librdf/libmd/recipe.toml diff --git a/recipes/wip/libmpeg2/recipe.toml b/recipes/wip/libs/librdf/libmpeg2/recipe.toml similarity index 100% rename from recipes/wip/libmpeg2/recipe.toml rename to recipes/wip/libs/librdf/libmpeg2/recipe.toml diff --git a/recipes/wip/libmypaint/recipe.toml b/recipes/wip/libs/librdf/libmypaint/recipe.toml similarity index 100% rename from recipes/wip/libmypaint/recipe.toml rename to recipes/wip/libs/librdf/libmypaint/recipe.toml diff --git a/recipes/wip/libnlopt/recipe.toml b/recipes/wip/libs/librdf/libnlopt/recipe.toml similarity index 100% rename from recipes/wip/libnlopt/recipe.toml rename to recipes/wip/libs/librdf/libnlopt/recipe.toml diff --git a/recipes/wip/libnotify/recipe.toml b/recipes/wip/libs/librdf/libnotify/recipe.toml similarity index 100% rename from recipes/wip/libnotify/recipe.toml rename to recipes/wip/libs/librdf/libnotify/recipe.toml diff --git a/recipes/wip/libnsl/recipe.toml b/recipes/wip/libs/librdf/libnsl/recipe.toml similarity index 100% rename from recipes/wip/libnsl/recipe.toml rename to recipes/wip/libs/librdf/libnsl/recipe.toml diff --git a/recipes/wip/libotf/recipe.toml b/recipes/wip/libs/librdf/libotf/recipe.toml similarity index 100% rename from recipes/wip/libotf/recipe.toml rename to recipes/wip/libs/librdf/libotf/recipe.toml diff --git a/recipes/wip/libpanel/recipe.toml b/recipes/wip/libs/librdf/libpanel/recipe.toml similarity index 100% rename from recipes/wip/libpanel/recipe.toml rename to recipes/wip/libs/librdf/libpanel/recipe.toml diff --git a/recipes/wip/libpcap/recipe.toml b/recipes/wip/libs/librdf/libpcap/recipe.toml similarity index 100% rename from recipes/wip/libpcap/recipe.toml rename to recipes/wip/libs/librdf/libpcap/recipe.toml diff --git a/recipes/wip/libpeas/recipe.toml b/recipes/wip/libs/librdf/libpeas/recipe.toml similarity index 100% rename from recipes/wip/libpeas/recipe.toml rename to recipes/wip/libs/librdf/libpeas/recipe.toml diff --git a/recipes/wip/libpoppler/recipe.toml b/recipes/wip/libs/librdf/libpoppler/recipe.toml similarity index 100% rename from recipes/wip/libpoppler/recipe.toml rename to recipes/wip/libs/librdf/libpoppler/recipe.toml diff --git a/recipes/wip/libportaudio/recipe.toml b/recipes/wip/libs/librdf/libportaudio/recipe.toml similarity index 100% rename from recipes/wip/libportaudio/recipe.toml rename to recipes/wip/libs/librdf/libportaudio/recipe.toml diff --git a/recipes/wip/libpthread-stubs/recipe.toml b/recipes/wip/libs/librdf/libpthread-stubs/recipe.toml similarity index 100% rename from recipes/wip/libpthread-stubs/recipe.toml rename to recipes/wip/libs/librdf/libpthread-stubs/recipe.toml diff --git a/recipes/wip/libpugixml/recipe.toml b/recipes/wip/libs/librdf/libpugixml/recipe.toml similarity index 100% rename from recipes/wip/libpugixml/recipe.toml rename to recipes/wip/libs/librdf/libpugixml/recipe.toml diff --git a/recipes/wip/libqalculate/recipe.toml b/recipes/wip/libs/librdf/libqalculate/recipe.toml similarity index 100% rename from recipes/wip/libqalculate/recipe.toml rename to recipes/wip/libs/librdf/libqalculate/recipe.toml diff --git a/recipes/wip/libqrcodegenc/recipe.toml b/recipes/wip/libs/librdf/libqrcodegenc/recipe.toml similarity index 100% rename from recipes/wip/libqrcodegenc/recipe.toml rename to recipes/wip/libs/librdf/libqrcodegenc/recipe.toml diff --git a/recipes/wip/libraptor2/recipe.toml b/recipes/wip/libs/librdf/libraptor2/recipe.toml similarity index 100% rename from recipes/wip/libraptor2/recipe.toml rename to recipes/wip/libs/librdf/libraptor2/recipe.toml diff --git a/recipes/wip/librasqal/recipe.toml b/recipes/wip/libs/librdf/librasqal/recipe.toml similarity index 100% rename from recipes/wip/librasqal/recipe.toml rename to recipes/wip/libs/librdf/librasqal/recipe.toml diff --git a/recipes/wip/libraw/recipe.toml b/recipes/wip/libs/librdf/libraw/recipe.toml similarity index 100% rename from recipes/wip/libraw/recipe.toml rename to recipes/wip/libs/librdf/libraw/recipe.toml diff --git a/recipes/wip/librdf/recipe.toml b/recipes/wip/libs/librdf/recipe.toml similarity index 100% rename from recipes/wip/librdf/recipe.toml rename to recipes/wip/libs/librdf/recipe.toml diff --git a/recipes/wip/librevenge/recipe.toml b/recipes/wip/libs/librevenge/recipe.toml similarity index 100% rename from recipes/wip/librevenge/recipe.toml rename to recipes/wip/libs/librevenge/recipe.toml diff --git a/recipes/wip/librist/recipe.toml b/recipes/wip/libs/librist/recipe.toml similarity index 100% rename from recipes/wip/librist/recipe.toml rename to recipes/wip/libs/librist/recipe.toml diff --git a/recipes/wip/librkcommon/recipe.toml b/recipes/wip/libs/librkcommon/recipe.toml similarity index 100% rename from recipes/wip/librkcommon/recipe.toml rename to recipes/wip/libs/librkcommon/recipe.toml diff --git a/recipes/wip/librsvg/recipe.toml b/recipes/wip/libs/librsvg/recipe.toml similarity index 100% rename from recipes/wip/librsvg/recipe.toml rename to recipes/wip/libs/librsvg/recipe.toml diff --git a/recipes/wip/libsamplerate/recipe.toml b/recipes/wip/libs/libsamplerate/recipe.toml similarity index 100% rename from recipes/wip/libsamplerate/recipe.toml rename to recipes/wip/libs/libsamplerate/recipe.toml diff --git a/recipes/wip/libseexpr-kde/recipe.toml b/recipes/wip/libs/libseexpr-kde/recipe.toml similarity index 100% rename from recipes/wip/libseexpr-kde/recipe.toml rename to recipes/wip/libs/libseexpr-kde/recipe.toml diff --git a/recipes/wip/libsigc++/recipe.toml b/recipes/wip/libs/libsigc++/recipe.toml similarity index 100% rename from recipes/wip/libsigc++/recipe.toml rename to recipes/wip/libs/libsigc++/recipe.toml diff --git a/recipes/wip/libsixel/recipe.toml b/recipes/wip/libs/libsixel/recipe.toml similarity index 100% rename from recipes/wip/libsixel/recipe.toml rename to recipes/wip/libs/libsixel/recipe.toml diff --git a/recipes/wip/libskia/recipe.toml b/recipes/wip/libs/libskia/recipe.toml similarity index 100% rename from recipes/wip/libskia/recipe.toml rename to recipes/wip/libs/libskia/recipe.toml diff --git a/recipes/wip/libslirp/recipe.toml b/recipes/wip/libs/libslirp/recipe.toml similarity index 100% rename from recipes/wip/libslirp/recipe.toml rename to recipes/wip/libs/libslirp/recipe.toml diff --git a/recipes/wip/libsm/recipe.toml b/recipes/wip/libs/libsm/recipe.toml similarity index 100% rename from recipes/wip/libsm/recipe.toml rename to recipes/wip/libs/libsm/recipe.toml diff --git a/recipes/wip/libsndfile/recipe.toml b/recipes/wip/libs/libsndfile/recipe.toml similarity index 100% rename from recipes/wip/libsndfile/recipe.toml rename to recipes/wip/libs/libsndfile/recipe.toml diff --git a/recipes/wip/libsoundio/recipe.toml b/recipes/wip/libs/libsoundio/recipe.toml similarity index 100% rename from recipes/wip/libsoundio/recipe.toml rename to recipes/wip/libs/libsoundio/recipe.toml diff --git a/recipes/wip/libsoup/recipe.toml b/recipes/wip/libs/libsoup/recipe.toml similarity index 100% rename from recipes/wip/libsoup/recipe.toml rename to recipes/wip/libs/libsoup/recipe.toml diff --git a/recipes/wip/libspiro/recipe.toml b/recipes/wip/libs/libspiro/recipe.toml similarity index 100% rename from recipes/wip/libspiro/recipe.toml rename to recipes/wip/libs/libspiro/recipe.toml diff --git a/recipes/wip/libsrt/recipe.toml b/recipes/wip/libs/libsrt/recipe.toml similarity index 100% rename from recipes/wip/libsrt/recipe.toml rename to recipes/wip/libs/libsrt/recipe.toml diff --git a/recipes/wip/libstatgrab/recipe.toml b/recipes/wip/libs/libstatgrab/recipe.toml similarity index 100% rename from recipes/wip/libstatgrab/recipe.toml rename to recipes/wip/libs/libstatgrab/recipe.toml diff --git a/recipes/wip/libstk/recipe.toml b/recipes/wip/libs/libstk/recipe.toml similarity index 100% rename from recipes/wip/libstk/recipe.toml rename to recipes/wip/libs/libstk/recipe.toml diff --git a/recipes/wip/libtheora/recipe.toml b/recipes/wip/libs/libtheora/recipe.toml similarity index 100% rename from recipes/wip/libtheora/recipe.toml rename to recipes/wip/libs/libtheora/recipe.toml diff --git a/recipes/wip/libtickit/recipe.toml b/recipes/wip/libs/libtickit/recipe.toml similarity index 100% rename from recipes/wip/libtickit/recipe.toml rename to recipes/wip/libs/libtickit/recipe.toml diff --git a/recipes/wip/libtiff/recipe.toml b/recipes/wip/libs/libtiff/recipe.toml similarity index 100% rename from recipes/wip/libtiff/recipe.toml rename to recipes/wip/libs/libtiff/recipe.toml diff --git a/recipes/wip/libtool/recipe.toml b/recipes/wip/libs/libtool/recipe.toml similarity index 100% rename from recipes/wip/libtool/recipe.toml rename to recipes/wip/libs/libtool/recipe.toml diff --git a/recipes/wip/libunibreak/recipe.toml b/recipes/wip/libs/libunibreak/recipe.toml similarity index 100% rename from recipes/wip/libunibreak/recipe.toml rename to recipes/wip/libs/libunibreak/recipe.toml diff --git a/recipes/wip/libunistring/recipe.toml b/recipes/wip/libs/libunistring/recipe.toml similarity index 100% rename from recipes/wip/libunistring/recipe.toml rename to recipes/wip/libs/libunistring/recipe.toml diff --git a/recipes/wip/libunwind/recipe.toml b/recipes/wip/libs/libunwind/recipe.toml similarity index 100% rename from recipes/wip/libunwind/recipe.toml rename to recipes/wip/libs/libunwind/recipe.toml diff --git a/recipes/wip/liburcu/recipe.toml b/recipes/wip/libs/liburcu/recipe.toml similarity index 100% rename from recipes/wip/liburcu/recipe.toml rename to recipes/wip/libs/liburcu/recipe.toml diff --git a/recipes/wip/libusb/recipe.toml b/recipes/wip/libs/libusb/recipe.toml similarity index 100% rename from recipes/wip/libusb/recipe.toml rename to recipes/wip/libs/libusb/recipe.toml diff --git a/recipes/wip/libuuid/recipe.toml b/recipes/wip/libs/libuuid/recipe.toml similarity index 100% rename from recipes/wip/libuuid/recipe.toml rename to recipes/wip/libs/libuuid/recipe.toml diff --git a/recipes/wip/libuv/recipe.toml b/recipes/wip/libs/libuv/recipe.toml similarity index 100% rename from recipes/wip/libuv/recipe.toml rename to recipes/wip/libs/libuv/recipe.toml diff --git a/recipes/wip/libva/recipe.toml b/recipes/wip/libs/libva/recipe.toml similarity index 100% rename from recipes/wip/libva/recipe.toml rename to recipes/wip/libs/libva/recipe.toml diff --git a/recipes/wip/libvisio/recipe.toml b/recipes/wip/libs/libvisio/recipe.toml similarity index 100% rename from recipes/wip/libvisio/recipe.toml rename to recipes/wip/libs/libvisio/recipe.toml diff --git a/recipes/wip/libvncserver/recipe.toml b/recipes/wip/libs/libvncserver/recipe.toml similarity index 100% rename from recipes/wip/libvncserver/recipe.toml rename to recipes/wip/libs/libvncserver/recipe.toml diff --git a/recipes/wip/libvpx/recipe.toml b/recipes/wip/libs/libvpx/recipe.toml similarity index 100% rename from recipes/wip/libvpx/recipe.toml rename to recipes/wip/libs/libvpx/recipe.toml diff --git a/recipes/wip/libvte/recipe.toml b/recipes/wip/libs/libvte/recipe.toml similarity index 100% rename from recipes/wip/libvte/recipe.toml rename to recipes/wip/libs/libvte/recipe.toml diff --git a/recipes/wip/libvterm/recipe.toml b/recipes/wip/libs/libvterm/recipe.toml similarity index 100% rename from recipes/wip/libvterm/recipe.toml rename to recipes/wip/libs/libvterm/recipe.toml diff --git a/recipes/wip/libwayland/recipe.toml b/recipes/wip/libs/libvulkan/libwayland/recipe.toml similarity index 100% rename from recipes/wip/libwayland/recipe.toml rename to recipes/wip/libs/libvulkan/libwayland/recipe.toml diff --git a/recipes/wip/libwebp/recipe.toml b/recipes/wip/libs/libvulkan/libwebp/recipe.toml similarity index 100% rename from recipes/wip/libwebp/recipe.toml rename to recipes/wip/libs/libvulkan/libwebp/recipe.toml diff --git a/recipes/wip/libwebp2/recipe.toml b/recipes/wip/libs/libvulkan/libwebp2/recipe.toml similarity index 100% rename from recipes/wip/libwebp2/recipe.toml rename to recipes/wip/libs/libvulkan/libwebp2/recipe.toml diff --git a/recipes/wip/libwebsocket++/recipe.toml b/recipes/wip/libs/libvulkan/libwebsocket++/recipe.toml similarity index 100% rename from recipes/wip/libwebsocket++/recipe.toml rename to recipes/wip/libs/libvulkan/libwebsocket++/recipe.toml diff --git a/recipes/wip/libwebsockets/recipe.toml b/recipes/wip/libs/libvulkan/libwebsockets/recipe.toml similarity index 100% rename from recipes/wip/libwebsockets/recipe.toml rename to recipes/wip/libs/libvulkan/libwebsockets/recipe.toml diff --git a/recipes/wip/libwmf/recipe.toml b/recipes/wip/libs/libvulkan/libwmf/recipe.toml similarity index 100% rename from recipes/wip/libwmf/recipe.toml rename to recipes/wip/libs/libvulkan/libwmf/recipe.toml diff --git a/recipes/wip/libwpd/recipe.toml b/recipes/wip/libs/libvulkan/libwpd/recipe.toml similarity index 100% rename from recipes/wip/libwpd/recipe.toml rename to recipes/wip/libs/libvulkan/libwpd/recipe.toml diff --git a/recipes/wip/libx11/recipe.toml b/recipes/wip/libs/libvulkan/libx11/recipe.toml similarity index 100% rename from recipes/wip/libx11/recipe.toml rename to recipes/wip/libs/libvulkan/libx11/recipe.toml diff --git a/recipes/wip/libxau/recipe.toml b/recipes/wip/libs/libvulkan/libxau/recipe.toml similarity index 100% rename from recipes/wip/libxau/recipe.toml rename to recipes/wip/libs/libvulkan/libxau/recipe.toml diff --git a/recipes/wip/libxaw/recipe.toml b/recipes/wip/libs/libvulkan/libxaw/recipe.toml similarity index 100% rename from recipes/wip/libxaw/recipe.toml rename to recipes/wip/libs/libvulkan/libxaw/recipe.toml diff --git a/recipes/wip/libxcb/recipe.toml b/recipes/wip/libs/libvulkan/libxcb/recipe.toml similarity index 100% rename from recipes/wip/libxcb/recipe.toml rename to recipes/wip/libs/libvulkan/libxcb/recipe.toml diff --git a/recipes/wip/libxcomposite/recipe.toml b/recipes/wip/libs/libvulkan/libxcomposite/recipe.toml similarity index 100% rename from recipes/wip/libxcomposite/recipe.toml rename to recipes/wip/libs/libvulkan/libxcomposite/recipe.toml diff --git a/recipes/wip/libxcursor/recipe.toml b/recipes/wip/libs/libvulkan/libxcursor/recipe.toml similarity index 100% rename from recipes/wip/libxcursor/recipe.toml rename to recipes/wip/libs/libvulkan/libxcursor/recipe.toml diff --git a/recipes/wip/libxdamage/recipe.toml b/recipes/wip/libs/libvulkan/libxdamage/recipe.toml similarity index 100% rename from recipes/wip/libxdamage/recipe.toml rename to recipes/wip/libs/libvulkan/libxdamage/recipe.toml diff --git a/recipes/wip/libxdmcp/recipe.toml b/recipes/wip/libs/libvulkan/libxdmcp/recipe.toml similarity index 100% rename from recipes/wip/libxdmcp/recipe.toml rename to recipes/wip/libs/libvulkan/libxdmcp/recipe.toml diff --git a/recipes/wip/libxext/recipe.toml b/recipes/wip/libs/libvulkan/libxext/recipe.toml similarity index 100% rename from recipes/wip/libxext/recipe.toml rename to recipes/wip/libs/libvulkan/libxext/recipe.toml diff --git a/recipes/wip/libxfixes/recipe.toml b/recipes/wip/libs/libvulkan/libxfixes/recipe.toml similarity index 100% rename from recipes/wip/libxfixes/recipe.toml rename to recipes/wip/libs/libvulkan/libxfixes/recipe.toml diff --git a/recipes/wip/libxft/recipe.toml b/recipes/wip/libs/libvulkan/libxft/recipe.toml similarity index 100% rename from recipes/wip/libxft/recipe.toml rename to recipes/wip/libs/libvulkan/libxft/recipe.toml diff --git a/recipes/wip/libxi/recipe.toml b/recipes/wip/libs/libvulkan/libxi/recipe.toml similarity index 100% rename from recipes/wip/libxi/recipe.toml rename to recipes/wip/libs/libvulkan/libxi/recipe.toml diff --git a/recipes/wip/libxinerama/recipe.toml b/recipes/wip/libs/libvulkan/libxinerama/recipe.toml similarity index 100% rename from recipes/wip/libxinerama/recipe.toml rename to recipes/wip/libs/libvulkan/libxinerama/recipe.toml diff --git a/recipes/wip/libxkbcommon/recipe.toml b/recipes/wip/libs/libvulkan/libxkbcommon/recipe.toml similarity index 100% rename from recipes/wip/libxkbcommon/recipe.toml rename to recipes/wip/libs/libvulkan/libxkbcommon/recipe.toml diff --git a/recipes/wip/libxkbfile/recipe.toml b/recipes/wip/libs/libvulkan/libxkbfile/recipe.toml similarity index 100% rename from recipes/wip/libxkbfile/recipe.toml rename to recipes/wip/libs/libvulkan/libxkbfile/recipe.toml diff --git a/recipes/wip/libxmu/recipe.toml b/recipes/wip/libs/libvulkan/libxmu/recipe.toml similarity index 100% rename from recipes/wip/libxmu/recipe.toml rename to recipes/wip/libs/libvulkan/libxmu/recipe.toml diff --git a/recipes/wip/libxpm/recipe.toml b/recipes/wip/libs/libvulkan/libxpm/recipe.toml similarity index 100% rename from recipes/wip/libxpm/recipe.toml rename to recipes/wip/libs/libvulkan/libxpm/recipe.toml diff --git a/recipes/wip/libxrandr/recipe.toml b/recipes/wip/libs/libvulkan/libxrandr/recipe.toml similarity index 100% rename from recipes/wip/libxrandr/recipe.toml rename to recipes/wip/libs/libvulkan/libxrandr/recipe.toml diff --git a/recipes/wip/libxrender/recipe.toml b/recipes/wip/libs/libvulkan/libxrender/recipe.toml similarity index 100% rename from recipes/wip/libxrender/recipe.toml rename to recipes/wip/libs/libvulkan/libxrender/recipe.toml diff --git a/recipes/wip/libxres/recipe.toml b/recipes/wip/libs/libvulkan/libxres/recipe.toml similarity index 100% rename from recipes/wip/libxres/recipe.toml rename to recipes/wip/libs/libvulkan/libxres/recipe.toml diff --git a/recipes/wip/libxsimd/recipe.toml b/recipes/wip/libs/libvulkan/libxsimd/recipe.toml similarity index 100% rename from recipes/wip/libxsimd/recipe.toml rename to recipes/wip/libs/libvulkan/libxsimd/recipe.toml diff --git a/recipes/wip/libxslt/recipe.toml b/recipes/wip/libs/libvulkan/libxslt/recipe.toml similarity index 100% rename from recipes/wip/libxslt/recipe.toml rename to recipes/wip/libs/libvulkan/libxslt/recipe.toml diff --git a/recipes/wip/libxss/recipe.toml b/recipes/wip/libs/libvulkan/libxss/recipe.toml similarity index 100% rename from recipes/wip/libxss/recipe.toml rename to recipes/wip/libs/libvulkan/libxss/recipe.toml diff --git a/recipes/wip/libxtl/recipe.toml b/recipes/wip/libs/libvulkan/libxtl/recipe.toml similarity index 100% rename from recipes/wip/libxtl/recipe.toml rename to recipes/wip/libs/libvulkan/libxtl/recipe.toml diff --git a/recipes/wip/libxtrans/recipe.toml b/recipes/wip/libs/libvulkan/libxtrans/recipe.toml similarity index 100% rename from recipes/wip/libxtrans/recipe.toml rename to recipes/wip/libs/libvulkan/libxtrans/recipe.toml diff --git a/recipes/wip/libxtst/recipe.toml b/recipes/wip/libs/libvulkan/libxtst/recipe.toml similarity index 100% rename from recipes/wip/libxtst/recipe.toml rename to recipes/wip/libs/libvulkan/libxtst/recipe.toml diff --git a/recipes/wip/libxv/recipe.toml b/recipes/wip/libs/libvulkan/libxv/recipe.toml similarity index 100% rename from recipes/wip/libxv/recipe.toml rename to recipes/wip/libs/libvulkan/libxv/recipe.toml diff --git a/recipes/wip/libxvmc/recipe.toml b/recipes/wip/libs/libvulkan/libxvmc/recipe.toml similarity index 100% rename from recipes/wip/libxvmc/recipe.toml rename to recipes/wip/libs/libvulkan/libxvmc/recipe.toml diff --git a/recipes/wip/libyaml/recipe.toml b/recipes/wip/libs/libvulkan/libyaml/recipe.toml similarity index 100% rename from recipes/wip/libyaml/recipe.toml rename to recipes/wip/libs/libvulkan/libyaml/recipe.toml diff --git a/recipes/wip/libzug/recipe.toml b/recipes/wip/libs/libvulkan/libzug/recipe.toml similarity index 100% rename from recipes/wip/libzug/recipe.toml rename to recipes/wip/libs/libvulkan/libzug/recipe.toml diff --git a/recipes/wip/libzvbi/recipe.toml b/recipes/wip/libs/libvulkan/libzvbi/recipe.toml similarity index 100% rename from recipes/wip/libzvbi/recipe.toml rename to recipes/wip/libs/libvulkan/libzvbi/recipe.toml diff --git a/recipes/wip/libvulkan/recipe.toml b/recipes/wip/libs/libvulkan/recipe.toml similarity index 100% rename from recipes/wip/libvulkan/recipe.toml rename to recipes/wip/libs/libvulkan/recipe.toml diff --git a/recipes/wip/qt5-3d/recipe.toml b/recipes/wip/libs/qt5-3d/recipe.toml similarity index 100% rename from recipes/wip/qt5-3d/recipe.toml rename to recipes/wip/libs/qt5-3d/recipe.toml diff --git a/recipes/wip/qt5-activeqt/recipe.toml b/recipes/wip/libs/qt5-activeqt/recipe.toml similarity index 100% rename from recipes/wip/qt5-activeqt/recipe.toml rename to recipes/wip/libs/qt5-activeqt/recipe.toml diff --git a/recipes/wip/qt5-charts/recipe.toml b/recipes/wip/libs/qt5-charts/recipe.toml similarity index 100% rename from recipes/wip/qt5-charts/recipe.toml rename to recipes/wip/libs/qt5-charts/recipe.toml diff --git a/recipes/wip/qt5-coap/recipe.toml b/recipes/wip/libs/qt5-coap/recipe.toml similarity index 100% rename from recipes/wip/qt5-coap/recipe.toml rename to recipes/wip/libs/qt5-coap/recipe.toml diff --git a/recipes/wip/qt5-connectivity/recipe.toml b/recipes/wip/libs/qt5-connectivity/recipe.toml similarity index 100% rename from recipes/wip/qt5-connectivity/recipe.toml rename to recipes/wip/libs/qt5-connectivity/recipe.toml diff --git a/recipes/wip/qt5-datavis3d/recipe.toml b/recipes/wip/libs/qt5-datavis3d/recipe.toml similarity index 100% rename from recipes/wip/qt5-datavis3d/recipe.toml rename to recipes/wip/libs/qt5-datavis3d/recipe.toml diff --git a/recipes/wip/qt5-declarative/recipe.toml b/recipes/wip/libs/qt5-declarative/recipe.toml similarity index 100% rename from recipes/wip/qt5-declarative/recipe.toml rename to recipes/wip/libs/qt5-declarative/recipe.toml diff --git a/recipes/wip/qt5-doc/recipe.toml b/recipes/wip/libs/qt5-doc/recipe.toml similarity index 100% rename from recipes/wip/qt5-doc/recipe.toml rename to recipes/wip/libs/qt5-doc/recipe.toml diff --git a/recipes/wip/qt5-gamepad/recipe.toml b/recipes/wip/libs/qt5-gamepad/recipe.toml similarity index 100% rename from recipes/wip/qt5-gamepad/recipe.toml rename to recipes/wip/libs/qt5-gamepad/recipe.toml diff --git a/recipes/wip/qt5-graphical-effects/recipe.toml b/recipes/wip/libs/qt5-graphical-effects/recipe.toml similarity index 100% rename from recipes/wip/qt5-graphical-effects/recipe.toml rename to recipes/wip/libs/qt5-graphical-effects/recipe.toml diff --git a/recipes/wip/qt5-imageformats/recipe.toml b/recipes/wip/libs/qt5-imageformats/recipe.toml similarity index 100% rename from recipes/wip/qt5-imageformats/recipe.toml rename to recipes/wip/libs/qt5-imageformats/recipe.toml diff --git a/recipes/wip/qt5-knx/recipe.toml b/recipes/wip/libs/qt5-knx/recipe.toml similarity index 100% rename from recipes/wip/qt5-knx/recipe.toml rename to recipes/wip/libs/qt5-knx/recipe.toml diff --git a/recipes/wip/qt5-location/recipe.toml b/recipes/wip/libs/qt5-location/recipe.toml similarity index 100% rename from recipes/wip/qt5-location/recipe.toml rename to recipes/wip/libs/qt5-location/recipe.toml diff --git a/recipes/wip/qt5-lottie/recipe.toml b/recipes/wip/libs/qt5-lottie/recipe.toml similarity index 100% rename from recipes/wip/qt5-lottie/recipe.toml rename to recipes/wip/libs/qt5-lottie/recipe.toml diff --git a/recipes/wip/qt5-mqtt/recipe.toml b/recipes/wip/libs/qt5-mqtt/recipe.toml similarity index 100% rename from recipes/wip/qt5-mqtt/recipe.toml rename to recipes/wip/libs/qt5-mqtt/recipe.toml diff --git a/recipes/wip/qt5-multimedia/recipe.toml b/recipes/wip/libs/qt5-multimedia/recipe.toml similarity index 100% rename from recipes/wip/qt5-multimedia/recipe.toml rename to recipes/wip/libs/qt5-multimedia/recipe.toml diff --git a/recipes/wip/qt5-networkauth/recipe.toml b/recipes/wip/libs/qt5-networkauth/recipe.toml similarity index 100% rename from recipes/wip/qt5-networkauth/recipe.toml rename to recipes/wip/libs/qt5-networkauth/recipe.toml diff --git a/recipes/wip/qt5-opcua/recipe.toml b/recipes/wip/libs/qt5-opcua/recipe.toml similarity index 100% rename from recipes/wip/qt5-opcua/recipe.toml rename to recipes/wip/libs/qt5-opcua/recipe.toml diff --git a/recipes/wip/qt5-purchasing/recipe.toml b/recipes/wip/libs/qt5-purchasing/recipe.toml similarity index 100% rename from recipes/wip/qt5-purchasing/recipe.toml rename to recipes/wip/libs/qt5-purchasing/recipe.toml diff --git a/recipes/wip/qt5-quick3d/recipe.toml b/recipes/wip/libs/qt5-quick3d/recipe.toml similarity index 100% rename from recipes/wip/qt5-quick3d/recipe.toml rename to recipes/wip/libs/qt5-quick3d/recipe.toml diff --git a/recipes/wip/qt5-quickcontrols/recipe.toml b/recipes/wip/libs/qt5-quickcontrols/recipe.toml similarity index 100% rename from recipes/wip/qt5-quickcontrols/recipe.toml rename to recipes/wip/libs/qt5-quickcontrols/recipe.toml diff --git a/recipes/wip/qt5-quickcontrols2/recipe.toml b/recipes/wip/libs/qt5-quickcontrols2/recipe.toml similarity index 100% rename from recipes/wip/qt5-quickcontrols2/recipe.toml rename to recipes/wip/libs/qt5-quickcontrols2/recipe.toml diff --git a/recipes/wip/qt5-quicktimeline/recipe.toml b/recipes/wip/libs/qt5-quicktimeline/recipe.toml similarity index 100% rename from recipes/wip/qt5-quicktimeline/recipe.toml rename to recipes/wip/libs/qt5-quicktimeline/recipe.toml diff --git a/recipes/wip/qt5-remoteobjects/recipe.toml b/recipes/wip/libs/qt5-remoteobjects/recipe.toml similarity index 100% rename from recipes/wip/qt5-remoteobjects/recipe.toml rename to recipes/wip/libs/qt5-remoteobjects/recipe.toml diff --git a/recipes/wip/qt5-script/recipe.toml b/recipes/wip/libs/qt5-script/recipe.toml similarity index 100% rename from recipes/wip/qt5-script/recipe.toml rename to recipes/wip/libs/qt5-script/recipe.toml diff --git a/recipes/wip/qt5-scxml/recipe.toml b/recipes/wip/libs/qt5-scxml/recipe.toml similarity index 100% rename from recipes/wip/qt5-scxml/recipe.toml rename to recipes/wip/libs/qt5-scxml/recipe.toml diff --git a/recipes/wip/qt5-sensors/recipe.toml b/recipes/wip/libs/qt5-sensors/recipe.toml similarity index 100% rename from recipes/wip/qt5-sensors/recipe.toml rename to recipes/wip/libs/qt5-sensors/recipe.toml diff --git a/recipes/wip/qt5-serialbus/recipe.toml b/recipes/wip/libs/qt5-serialbus/recipe.toml similarity index 100% rename from recipes/wip/qt5-serialbus/recipe.toml rename to recipes/wip/libs/qt5-serialbus/recipe.toml diff --git a/recipes/wip/qt5-serialport/recipe.toml b/recipes/wip/libs/qt5-serialport/recipe.toml similarity index 100% rename from recipes/wip/qt5-serialport/recipe.toml rename to recipes/wip/libs/qt5-serialport/recipe.toml diff --git a/recipes/wip/qt5-speech/recipe.toml b/recipes/wip/libs/qt5-speech/recipe.toml similarity index 100% rename from recipes/wip/qt5-speech/recipe.toml rename to recipes/wip/libs/qt5-speech/recipe.toml diff --git a/recipes/wip/qt5-svg/recipe.toml b/recipes/wip/libs/qt5-svg/recipe.toml similarity index 100% rename from recipes/wip/qt5-svg/recipe.toml rename to recipes/wip/libs/qt5-svg/recipe.toml diff --git a/recipes/wip/qt5-tools/recipe.toml b/recipes/wip/libs/qt5-tools/recipe.toml similarity index 100% rename from recipes/wip/qt5-tools/recipe.toml rename to recipes/wip/libs/qt5-tools/recipe.toml diff --git a/recipes/wip/qt5-tqtc/recipe.toml b/recipes/wip/libs/qt5-tqtc/recipe.toml similarity index 100% rename from recipes/wip/qt5-tqtc/recipe.toml rename to recipes/wip/libs/qt5-tqtc/recipe.toml diff --git a/recipes/wip/qt5-translations/recipe.toml b/recipes/wip/libs/qt5-translations/recipe.toml similarity index 100% rename from recipes/wip/qt5-translations/recipe.toml rename to recipes/wip/libs/qt5-translations/recipe.toml diff --git a/recipes/wip/qt5-virtualkeyboard/recipe.toml b/recipes/wip/libs/qt5-virtualkeyboard/recipe.toml similarity index 100% rename from recipes/wip/qt5-virtualkeyboard/recipe.toml rename to recipes/wip/libs/qt5-virtualkeyboard/recipe.toml diff --git a/recipes/wip/qt5-wayland/recipe.toml b/recipes/wip/libs/qt5-wayland/recipe.toml similarity index 100% rename from recipes/wip/qt5-wayland/recipe.toml rename to recipes/wip/libs/qt5-wayland/recipe.toml diff --git a/recipes/wip/qt5-webchannel/recipe.toml b/recipes/wip/libs/qt5-webchannel/recipe.toml similarity index 100% rename from recipes/wip/qt5-webchannel/recipe.toml rename to recipes/wip/libs/qt5-webchannel/recipe.toml diff --git a/recipes/wip/qt5-webengine/recipe.toml b/recipes/wip/libs/qt5-webengine/recipe.toml similarity index 100% rename from recipes/wip/qt5-webengine/recipe.toml rename to recipes/wip/libs/qt5-webengine/recipe.toml diff --git a/recipes/wip/qt5-webglplugin/recipe.toml b/recipes/wip/libs/qt5-webglplugin/recipe.toml similarity index 100% rename from recipes/wip/qt5-webglplugin/recipe.toml rename to recipes/wip/libs/qt5-webglplugin/recipe.toml diff --git a/recipes/wip/qt5-webkit/recipe.toml b/recipes/wip/libs/qt5-webkit/recipe.toml similarity index 100% rename from recipes/wip/qt5-webkit/recipe.toml rename to recipes/wip/libs/qt5-webkit/recipe.toml diff --git a/recipes/wip/qt5-websockets/recipe.toml b/recipes/wip/libs/qt5-websockets/recipe.toml similarity index 100% rename from recipes/wip/qt5-websockets/recipe.toml rename to recipes/wip/libs/qt5-websockets/recipe.toml diff --git a/recipes/wip/qt5-webview/recipe.toml b/recipes/wip/libs/qt5-webview/recipe.toml similarity index 100% rename from recipes/wip/qt5-webview/recipe.toml rename to recipes/wip/libs/qt5-webview/recipe.toml diff --git a/recipes/wip/qt5-x11extras/recipe.toml b/recipes/wip/libs/qt5-x11extras/recipe.toml similarity index 100% rename from recipes/wip/qt5-x11extras/recipe.toml rename to recipes/wip/libs/qt5-x11extras/recipe.toml diff --git a/recipes/wip/qt5-xmlpatterns/recipe.toml b/recipes/wip/libs/qt5-xmlpatterns/recipe.toml similarity index 100% rename from recipes/wip/qt5-xmlpatterns/recipe.toml rename to recipes/wip/libs/qt5-xmlpatterns/recipe.toml diff --git a/recipes/wip/qt6-3d/recipe.toml b/recipes/wip/libs/qt6-3d/recipe.toml similarity index 100% rename from recipes/wip/qt6-3d/recipe.toml rename to recipes/wip/libs/qt6-3d/recipe.toml diff --git a/recipes/wip/qt6-activeqt/recipe.toml b/recipes/wip/libs/qt6-activeqt/recipe.toml similarity index 100% rename from recipes/wip/qt6-activeqt/recipe.toml rename to recipes/wip/libs/qt6-activeqt/recipe.toml diff --git a/recipes/wip/qt6-charts/recipe.toml b/recipes/wip/libs/qt6-charts/recipe.toml similarity index 100% rename from recipes/wip/qt6-charts/recipe.toml rename to recipes/wip/libs/qt6-charts/recipe.toml diff --git a/recipes/wip/qt6-connectivity/recipe.toml b/recipes/wip/libs/qt6-connectivity/recipe.toml similarity index 100% rename from recipes/wip/qt6-connectivity/recipe.toml rename to recipes/wip/libs/qt6-connectivity/recipe.toml diff --git a/recipes/wip/qt6-datavis3d/recipe.toml b/recipes/wip/libs/qt6-datavis3d/recipe.toml similarity index 100% rename from recipes/wip/qt6-datavis3d/recipe.toml rename to recipes/wip/libs/qt6-datavis3d/recipe.toml diff --git a/recipes/wip/qt6-declarative/recipe.toml b/recipes/wip/libs/qt6-declarative/recipe.toml similarity index 100% rename from recipes/wip/qt6-declarative/recipe.toml rename to recipes/wip/libs/qt6-declarative/recipe.toml diff --git a/recipes/wip/qt6-doc/recipe.toml b/recipes/wip/libs/qt6-doc/recipe.toml similarity index 100% rename from recipes/wip/qt6-doc/recipe.toml rename to recipes/wip/libs/qt6-doc/recipe.toml diff --git a/recipes/wip/qt6-graphs/recipe.toml b/recipes/wip/libs/qt6-graphs/recipe.toml similarity index 100% rename from recipes/wip/qt6-graphs/recipe.toml rename to recipes/wip/libs/qt6-graphs/recipe.toml diff --git a/recipes/wip/qt6-grpc/recipe.toml b/recipes/wip/libs/qt6-grpc/recipe.toml similarity index 100% rename from recipes/wip/qt6-grpc/recipe.toml rename to recipes/wip/libs/qt6-grpc/recipe.toml diff --git a/recipes/wip/qt6-httpserver/recipe.toml b/recipes/wip/libs/qt6-httpserver/recipe.toml similarity index 100% rename from recipes/wip/qt6-httpserver/recipe.toml rename to recipes/wip/libs/qt6-httpserver/recipe.toml diff --git a/recipes/wip/qt6-imageformats/recipe.toml b/recipes/wip/libs/qt6-imageformats/recipe.toml similarity index 100% rename from recipes/wip/qt6-imageformats/recipe.toml rename to recipes/wip/libs/qt6-imageformats/recipe.toml diff --git a/recipes/wip/qt6-languageserver/recipe.toml b/recipes/wip/libs/qt6-languageserver/recipe.toml similarity index 100% rename from recipes/wip/qt6-languageserver/recipe.toml rename to recipes/wip/libs/qt6-languageserver/recipe.toml diff --git a/recipes/wip/qt6-location/recipe.toml b/recipes/wip/libs/qt6-location/recipe.toml similarity index 100% rename from recipes/wip/qt6-location/recipe.toml rename to recipes/wip/libs/qt6-location/recipe.toml diff --git a/recipes/wip/qt6-lottie/recipe.toml b/recipes/wip/libs/qt6-lottie/recipe.toml similarity index 100% rename from recipes/wip/qt6-lottie/recipe.toml rename to recipes/wip/libs/qt6-lottie/recipe.toml diff --git a/recipes/wip/qt6-multimedia/recipe.toml b/recipes/wip/libs/qt6-multimedia/recipe.toml similarity index 100% rename from recipes/wip/qt6-multimedia/recipe.toml rename to recipes/wip/libs/qt6-multimedia/recipe.toml diff --git a/recipes/wip/qt6-networkauth/recipe.toml b/recipes/wip/libs/qt6-networkauth/recipe.toml similarity index 100% rename from recipes/wip/qt6-networkauth/recipe.toml rename to recipes/wip/libs/qt6-networkauth/recipe.toml diff --git a/recipes/wip/qt6-positioning/recipe.toml b/recipes/wip/libs/qt6-positioning/recipe.toml similarity index 100% rename from recipes/wip/qt6-positioning/recipe.toml rename to recipes/wip/libs/qt6-positioning/recipe.toml diff --git a/recipes/wip/qt6-qt5compat/recipe.toml b/recipes/wip/libs/qt6-qt5compat/recipe.toml similarity index 100% rename from recipes/wip/qt6-qt5compat/recipe.toml rename to recipes/wip/libs/qt6-qt5compat/recipe.toml diff --git a/recipes/wip/qt6-quick3d/recipe.toml b/recipes/wip/libs/qt6-quick3d/recipe.toml similarity index 100% rename from recipes/wip/qt6-quick3d/recipe.toml rename to recipes/wip/libs/qt6-quick3d/recipe.toml diff --git a/recipes/wip/qt6-quick3dphysics/recipe.toml b/recipes/wip/libs/qt6-quick3dphysics/recipe.toml similarity index 100% rename from recipes/wip/qt6-quick3dphysics/recipe.toml rename to recipes/wip/libs/qt6-quick3dphysics/recipe.toml diff --git a/recipes/wip/qt6-quickeffectmaker/recipe.toml b/recipes/wip/libs/qt6-quickeffectmaker/recipe.toml similarity index 100% rename from recipes/wip/qt6-quickeffectmaker/recipe.toml rename to recipes/wip/libs/qt6-quickeffectmaker/recipe.toml diff --git a/recipes/wip/qt6-quicktimeline/recipe.toml b/recipes/wip/libs/qt6-quicktimeline/recipe.toml similarity index 100% rename from recipes/wip/qt6-quicktimeline/recipe.toml rename to recipes/wip/libs/qt6-quicktimeline/recipe.toml diff --git a/recipes/wip/qt6-remoteobjects/recipe.toml b/recipes/wip/libs/qt6-remoteobjects/recipe.toml similarity index 100% rename from recipes/wip/qt6-remoteobjects/recipe.toml rename to recipes/wip/libs/qt6-remoteobjects/recipe.toml diff --git a/recipes/wip/qt6-scxml/recipe.toml b/recipes/wip/libs/qt6-scxml/recipe.toml similarity index 100% rename from recipes/wip/qt6-scxml/recipe.toml rename to recipes/wip/libs/qt6-scxml/recipe.toml diff --git a/recipes/wip/qt6-sensors/recipe.toml b/recipes/wip/libs/qt6-sensors/recipe.toml similarity index 100% rename from recipes/wip/qt6-sensors/recipe.toml rename to recipes/wip/libs/qt6-sensors/recipe.toml diff --git a/recipes/wip/qt6-serialbus/recipe.toml b/recipes/wip/libs/qt6-serialbus/recipe.toml similarity index 100% rename from recipes/wip/qt6-serialbus/recipe.toml rename to recipes/wip/libs/qt6-serialbus/recipe.toml diff --git a/recipes/wip/qt6-serialport/recipe.toml b/recipes/wip/libs/qt6-serialport/recipe.toml similarity index 100% rename from recipes/wip/qt6-serialport/recipe.toml rename to recipes/wip/libs/qt6-serialport/recipe.toml diff --git a/recipes/wip/qt6-shadertools/recipe.toml b/recipes/wip/libs/qt6-shadertools/recipe.toml similarity index 100% rename from recipes/wip/qt6-shadertools/recipe.toml rename to recipes/wip/libs/qt6-shadertools/recipe.toml diff --git a/recipes/wip/qt6-speech/recipe.toml b/recipes/wip/libs/qt6-speech/recipe.toml similarity index 100% rename from recipes/wip/qt6-speech/recipe.toml rename to recipes/wip/libs/qt6-speech/recipe.toml diff --git a/recipes/wip/qt6-svg/recipe.toml b/recipes/wip/libs/qt6-svg/recipe.toml similarity index 100% rename from recipes/wip/qt6-svg/recipe.toml rename to recipes/wip/libs/qt6-svg/recipe.toml diff --git a/recipes/wip/qt6-tools/recipe.toml b/recipes/wip/libs/qt6-tools/recipe.toml similarity index 100% rename from recipes/wip/qt6-tools/recipe.toml rename to recipes/wip/libs/qt6-tools/recipe.toml diff --git a/recipes/wip/qt6-translations/recipe.toml b/recipes/wip/libs/qt6-translations/recipe.toml similarity index 100% rename from recipes/wip/qt6-translations/recipe.toml rename to recipes/wip/libs/qt6-translations/recipe.toml diff --git a/recipes/wip/qt6-virtualkeyboard/recipe.toml b/recipes/wip/libs/qt6-virtualkeyboard/recipe.toml similarity index 100% rename from recipes/wip/qt6-virtualkeyboard/recipe.toml rename to recipes/wip/libs/qt6-virtualkeyboard/recipe.toml diff --git a/recipes/wip/qt6-wayland/recipe.toml b/recipes/wip/libs/qt6-wayland/recipe.toml similarity index 100% rename from recipes/wip/qt6-wayland/recipe.toml rename to recipes/wip/libs/qt6-wayland/recipe.toml diff --git a/recipes/wip/qt6-webchannel/recipe.toml b/recipes/wip/libs/qt6-webchannel/recipe.toml similarity index 100% rename from recipes/wip/qt6-webchannel/recipe.toml rename to recipes/wip/libs/qt6-webchannel/recipe.toml diff --git a/recipes/wip/qt6-webengine/recipe.toml b/recipes/wip/libs/qt6-webengine/recipe.toml similarity index 100% rename from recipes/wip/qt6-webengine/recipe.toml rename to recipes/wip/libs/qt6-webengine/recipe.toml diff --git a/recipes/wip/qt6-websockets/recipe.toml b/recipes/wip/libs/qt6-websockets/recipe.toml similarity index 100% rename from recipes/wip/qt6-websockets/recipe.toml rename to recipes/wip/libs/qt6-websockets/recipe.toml diff --git a/recipes/wip/qt6-webview/recipe.toml b/recipes/wip/libs/qt6-webview/recipe.toml similarity index 100% rename from recipes/wip/qt6-webview/recipe.toml rename to recipes/wip/libs/qt6-webview/recipe.toml From 6105bf7e06533ffd502e22e67324283bf71e22e7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 10 Feb 2024 11:04:05 +0000 Subject: [PATCH 1538/3180] move more WIP recipes to categories --- recipes/wip/{ => dev}/cargo-about/recipe.toml | 0 recipes/wip/{ => dev}/cargo-audit/recipe.toml | 0 recipes/wip/{ => dev}/cargo-auditable/recipe.toml | 0 recipes/wip/{ => dev}/cargo-cache/recipe.toml | 0 recipes/wip/{ => dev}/cargo-crev/recipe.toml | 0 recipes/wip/{ => dev}/cargo-deny/recipe.toml | 0 recipes/wip/{ => dev}/cargo-diet/recipe.toml | 0 recipes/wip/{ => dev}/cargo-fuzz/recipe.toml | 0 recipes/wip/{ => dev}/cargo-geiger/recipe.toml | 0 recipes/wip/{ => dev}/cargo-generate/recipe.toml | 0 recipes/wip/{ => dev}/cargo-info/recipe.toml | 0 recipes/wip/{ => dev}/cargo-msrv/recipe.toml | 0 recipes/wip/{ => dev}/cargo-mutants/recipe.toml | 0 recipes/wip/{ => dev}/cargo-nextest/recipe.toml | 0 recipes/wip/{ => dev}/cargo-remark/recipe.toml | 0 recipes/wip/{ => dev}/cargo-run-bin/recipe.toml | 0 recipes/wip/{ => dev}/cargo-scaffold/recipe.toml | 0 recipes/wip/{ => dev}/cargo-show-asm/recipe.toml | 0 recipes/wip/{ => dev}/cargo-smart-release/recipe.toml | 0 recipes/wip/{ => dev}/cargo-sweep/recipe.toml | 0 recipes/wip/{ => dev}/cargo-tarpaulin/recipe.toml | 0 recipes/wip/{ => dev}/cargo-ui/recipe.toml | 0 recipes/wip/{ => dev}/cargo-vet/recipe.toml | 0 recipes/wip/{ => dev}/cargo-watch/recipe.toml | 0 recipes/wip/{ => dev}/cargo-zigbuild/recipe.toml | 0 recipes/wip/{ => dev}/deps-rs/recipe.toml | 0 recipes/wip/{ => games/0ad}/0ad-data/recipe.toml | 0 recipes/wip/{ => games/0ad}/asmfish/recipe.toml | 0 recipes/wip/{ => games/0ad}/battle-of-wesnoth/recipe.toml | 0 recipes/wip/{ => games/0ad}/battleship-rs/recipe.toml | 0 recipes/wip/{ => games/0ad}/betterspades/recipe.toml | 0 recipes/wip/{ => games/0ad}/bevy-engine/recipe.toml | 0 recipes/wip/{ => games/0ad}/call-of-ferris/recipe.toml | 0 recipes/wip/{ => games/0ad}/chess-tui/recipe.toml | 0 recipes/wip/{ => games/0ad}/chocolate-doom/recipe.toml | 0 recipes/wip/{ => games/0ad}/crispy-doom/recipe.toml | 0 recipes/wip/{ => games/0ad}/cuberite/recipe.toml | 0 recipes/wip/{ => games/0ad}/dcss/recipe.toml | 0 recipes/wip/{ => games/0ad}/et-legacy/recipe.toml | 0 recipes/wip/{ => games/0ad}/game-of-life-rs/recipe.toml | 0 recipes/wip/{ => games/0ad}/ioquake3/recipe.toml | 0 recipes/wip/{ => games/0ad}/minesweep-rs/recipe.toml | 0 recipes/wip/{ => games/0ad}/minetest-data/recipe.toml | 0 recipes/wip/{ => games/0ad}/minetest/recipe.toml | 0 recipes/wip/{ => games/0ad}/openarena/recipe.toml | 0 recipes/wip/{ => games/0ad}/openlara/recipe.toml | 0 recipes/wip/{ => games/0ad}/openspades/recipe.toml | 0 recipes/wip/{ => games/0ad}/rbdoom3-bfg/recipe.toml | 0 recipes/wip/{ => games}/0ad/recipe.toml | 0 recipes/wip/{ => games/0ad}/stockfish/recipe.toml | 0 recipes/wip/{ => games/0ad}/supertuxkart/recipe.toml | 0 recipes/wip/{ => games/0ad}/tic-tac-toe-rs/recipe.toml | 0 recipes/wip/{ => games/0ad}/unvanquished-benchmarks/recipe.toml | 0 recipes/wip/{ => games/0ad}/unvanquished/recipe.toml | 0 recipes/wip/{ => games/0ad}/veloren/recipe.toml | 0 recipes/wip/{ => games/0ad}/vkquake/recipe.toml | 0 recipes/wip/{ => games/0ad}/vkquake2/recipe.toml | 0 recipes/wip/{ => games/0ad}/warsow/recipe.toml | 0 recipes/wip/{ => games/0ad}/xash3d-fwgs/recipe.toml | 0 recipes/wip/{ => games/0ad}/yquake2/recipe.toml | 0 recipes/wip/{ => games/0ad}/zerospades/recipe.toml | 0 recipes/wip/{ => tools}/termimage/recipe.toml | 0 recipes/wip/{ => tools}/topgrade/recipe.toml | 0 recipes/wip/{ => tui}/gyr/recipe.toml | 0 recipes/wip/{ => tui}/twitch-tui/recipe.toml | 0 65 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => dev}/cargo-about/recipe.toml (100%) rename recipes/wip/{ => dev}/cargo-audit/recipe.toml (100%) rename recipes/wip/{ => dev}/cargo-auditable/recipe.toml (100%) rename recipes/wip/{ => dev}/cargo-cache/recipe.toml (100%) rename recipes/wip/{ => dev}/cargo-crev/recipe.toml (100%) rename recipes/wip/{ => dev}/cargo-deny/recipe.toml (100%) rename recipes/wip/{ => dev}/cargo-diet/recipe.toml (100%) rename recipes/wip/{ => dev}/cargo-fuzz/recipe.toml (100%) rename recipes/wip/{ => dev}/cargo-geiger/recipe.toml (100%) rename recipes/wip/{ => dev}/cargo-generate/recipe.toml (100%) rename recipes/wip/{ => dev}/cargo-info/recipe.toml (100%) rename recipes/wip/{ => dev}/cargo-msrv/recipe.toml (100%) rename recipes/wip/{ => dev}/cargo-mutants/recipe.toml (100%) rename recipes/wip/{ => dev}/cargo-nextest/recipe.toml (100%) rename recipes/wip/{ => dev}/cargo-remark/recipe.toml (100%) rename recipes/wip/{ => dev}/cargo-run-bin/recipe.toml (100%) rename recipes/wip/{ => dev}/cargo-scaffold/recipe.toml (100%) rename recipes/wip/{ => dev}/cargo-show-asm/recipe.toml (100%) rename recipes/wip/{ => dev}/cargo-smart-release/recipe.toml (100%) rename recipes/wip/{ => dev}/cargo-sweep/recipe.toml (100%) rename recipes/wip/{ => dev}/cargo-tarpaulin/recipe.toml (100%) rename recipes/wip/{ => dev}/cargo-ui/recipe.toml (100%) rename recipes/wip/{ => dev}/cargo-vet/recipe.toml (100%) rename recipes/wip/{ => dev}/cargo-watch/recipe.toml (100%) rename recipes/wip/{ => dev}/cargo-zigbuild/recipe.toml (100%) rename recipes/wip/{ => dev}/deps-rs/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/0ad-data/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/asmfish/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/battle-of-wesnoth/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/battleship-rs/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/betterspades/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/bevy-engine/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/call-of-ferris/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/chess-tui/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/chocolate-doom/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/crispy-doom/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/cuberite/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/dcss/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/et-legacy/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/game-of-life-rs/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/ioquake3/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/minesweep-rs/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/minetest-data/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/minetest/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/openarena/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/openlara/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/openspades/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/rbdoom3-bfg/recipe.toml (100%) rename recipes/wip/{ => games}/0ad/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/stockfish/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/supertuxkart/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/tic-tac-toe-rs/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/unvanquished-benchmarks/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/unvanquished/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/veloren/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/vkquake/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/vkquake2/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/warsow/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/xash3d-fwgs/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/yquake2/recipe.toml (100%) rename recipes/wip/{ => games/0ad}/zerospades/recipe.toml (100%) rename recipes/wip/{ => tools}/termimage/recipe.toml (100%) rename recipes/wip/{ => tools}/topgrade/recipe.toml (100%) rename recipes/wip/{ => tui}/gyr/recipe.toml (100%) rename recipes/wip/{ => tui}/twitch-tui/recipe.toml (100%) diff --git a/recipes/wip/cargo-about/recipe.toml b/recipes/wip/dev/cargo-about/recipe.toml similarity index 100% rename from recipes/wip/cargo-about/recipe.toml rename to recipes/wip/dev/cargo-about/recipe.toml diff --git a/recipes/wip/cargo-audit/recipe.toml b/recipes/wip/dev/cargo-audit/recipe.toml similarity index 100% rename from recipes/wip/cargo-audit/recipe.toml rename to recipes/wip/dev/cargo-audit/recipe.toml diff --git a/recipes/wip/cargo-auditable/recipe.toml b/recipes/wip/dev/cargo-auditable/recipe.toml similarity index 100% rename from recipes/wip/cargo-auditable/recipe.toml rename to recipes/wip/dev/cargo-auditable/recipe.toml diff --git a/recipes/wip/cargo-cache/recipe.toml b/recipes/wip/dev/cargo-cache/recipe.toml similarity index 100% rename from recipes/wip/cargo-cache/recipe.toml rename to recipes/wip/dev/cargo-cache/recipe.toml diff --git a/recipes/wip/cargo-crev/recipe.toml b/recipes/wip/dev/cargo-crev/recipe.toml similarity index 100% rename from recipes/wip/cargo-crev/recipe.toml rename to recipes/wip/dev/cargo-crev/recipe.toml diff --git a/recipes/wip/cargo-deny/recipe.toml b/recipes/wip/dev/cargo-deny/recipe.toml similarity index 100% rename from recipes/wip/cargo-deny/recipe.toml rename to recipes/wip/dev/cargo-deny/recipe.toml diff --git a/recipes/wip/cargo-diet/recipe.toml b/recipes/wip/dev/cargo-diet/recipe.toml similarity index 100% rename from recipes/wip/cargo-diet/recipe.toml rename to recipes/wip/dev/cargo-diet/recipe.toml diff --git a/recipes/wip/cargo-fuzz/recipe.toml b/recipes/wip/dev/cargo-fuzz/recipe.toml similarity index 100% rename from recipes/wip/cargo-fuzz/recipe.toml rename to recipes/wip/dev/cargo-fuzz/recipe.toml diff --git a/recipes/wip/cargo-geiger/recipe.toml b/recipes/wip/dev/cargo-geiger/recipe.toml similarity index 100% rename from recipes/wip/cargo-geiger/recipe.toml rename to recipes/wip/dev/cargo-geiger/recipe.toml diff --git a/recipes/wip/cargo-generate/recipe.toml b/recipes/wip/dev/cargo-generate/recipe.toml similarity index 100% rename from recipes/wip/cargo-generate/recipe.toml rename to recipes/wip/dev/cargo-generate/recipe.toml diff --git a/recipes/wip/cargo-info/recipe.toml b/recipes/wip/dev/cargo-info/recipe.toml similarity index 100% rename from recipes/wip/cargo-info/recipe.toml rename to recipes/wip/dev/cargo-info/recipe.toml diff --git a/recipes/wip/cargo-msrv/recipe.toml b/recipes/wip/dev/cargo-msrv/recipe.toml similarity index 100% rename from recipes/wip/cargo-msrv/recipe.toml rename to recipes/wip/dev/cargo-msrv/recipe.toml diff --git a/recipes/wip/cargo-mutants/recipe.toml b/recipes/wip/dev/cargo-mutants/recipe.toml similarity index 100% rename from recipes/wip/cargo-mutants/recipe.toml rename to recipes/wip/dev/cargo-mutants/recipe.toml diff --git a/recipes/wip/cargo-nextest/recipe.toml b/recipes/wip/dev/cargo-nextest/recipe.toml similarity index 100% rename from recipes/wip/cargo-nextest/recipe.toml rename to recipes/wip/dev/cargo-nextest/recipe.toml diff --git a/recipes/wip/cargo-remark/recipe.toml b/recipes/wip/dev/cargo-remark/recipe.toml similarity index 100% rename from recipes/wip/cargo-remark/recipe.toml rename to recipes/wip/dev/cargo-remark/recipe.toml diff --git a/recipes/wip/cargo-run-bin/recipe.toml b/recipes/wip/dev/cargo-run-bin/recipe.toml similarity index 100% rename from recipes/wip/cargo-run-bin/recipe.toml rename to recipes/wip/dev/cargo-run-bin/recipe.toml diff --git a/recipes/wip/cargo-scaffold/recipe.toml b/recipes/wip/dev/cargo-scaffold/recipe.toml similarity index 100% rename from recipes/wip/cargo-scaffold/recipe.toml rename to recipes/wip/dev/cargo-scaffold/recipe.toml diff --git a/recipes/wip/cargo-show-asm/recipe.toml b/recipes/wip/dev/cargo-show-asm/recipe.toml similarity index 100% rename from recipes/wip/cargo-show-asm/recipe.toml rename to recipes/wip/dev/cargo-show-asm/recipe.toml diff --git a/recipes/wip/cargo-smart-release/recipe.toml b/recipes/wip/dev/cargo-smart-release/recipe.toml similarity index 100% rename from recipes/wip/cargo-smart-release/recipe.toml rename to recipes/wip/dev/cargo-smart-release/recipe.toml diff --git a/recipes/wip/cargo-sweep/recipe.toml b/recipes/wip/dev/cargo-sweep/recipe.toml similarity index 100% rename from recipes/wip/cargo-sweep/recipe.toml rename to recipes/wip/dev/cargo-sweep/recipe.toml diff --git a/recipes/wip/cargo-tarpaulin/recipe.toml b/recipes/wip/dev/cargo-tarpaulin/recipe.toml similarity index 100% rename from recipes/wip/cargo-tarpaulin/recipe.toml rename to recipes/wip/dev/cargo-tarpaulin/recipe.toml diff --git a/recipes/wip/cargo-ui/recipe.toml b/recipes/wip/dev/cargo-ui/recipe.toml similarity index 100% rename from recipes/wip/cargo-ui/recipe.toml rename to recipes/wip/dev/cargo-ui/recipe.toml diff --git a/recipes/wip/cargo-vet/recipe.toml b/recipes/wip/dev/cargo-vet/recipe.toml similarity index 100% rename from recipes/wip/cargo-vet/recipe.toml rename to recipes/wip/dev/cargo-vet/recipe.toml diff --git a/recipes/wip/cargo-watch/recipe.toml b/recipes/wip/dev/cargo-watch/recipe.toml similarity index 100% rename from recipes/wip/cargo-watch/recipe.toml rename to recipes/wip/dev/cargo-watch/recipe.toml diff --git a/recipes/wip/cargo-zigbuild/recipe.toml b/recipes/wip/dev/cargo-zigbuild/recipe.toml similarity index 100% rename from recipes/wip/cargo-zigbuild/recipe.toml rename to recipes/wip/dev/cargo-zigbuild/recipe.toml diff --git a/recipes/wip/deps-rs/recipe.toml b/recipes/wip/dev/deps-rs/recipe.toml similarity index 100% rename from recipes/wip/deps-rs/recipe.toml rename to recipes/wip/dev/deps-rs/recipe.toml diff --git a/recipes/wip/0ad-data/recipe.toml b/recipes/wip/games/0ad/0ad-data/recipe.toml similarity index 100% rename from recipes/wip/0ad-data/recipe.toml rename to recipes/wip/games/0ad/0ad-data/recipe.toml diff --git a/recipes/wip/asmfish/recipe.toml b/recipes/wip/games/0ad/asmfish/recipe.toml similarity index 100% rename from recipes/wip/asmfish/recipe.toml rename to recipes/wip/games/0ad/asmfish/recipe.toml diff --git a/recipes/wip/battle-of-wesnoth/recipe.toml b/recipes/wip/games/0ad/battle-of-wesnoth/recipe.toml similarity index 100% rename from recipes/wip/battle-of-wesnoth/recipe.toml rename to recipes/wip/games/0ad/battle-of-wesnoth/recipe.toml diff --git a/recipes/wip/battleship-rs/recipe.toml b/recipes/wip/games/0ad/battleship-rs/recipe.toml similarity index 100% rename from recipes/wip/battleship-rs/recipe.toml rename to recipes/wip/games/0ad/battleship-rs/recipe.toml diff --git a/recipes/wip/betterspades/recipe.toml b/recipes/wip/games/0ad/betterspades/recipe.toml similarity index 100% rename from recipes/wip/betterspades/recipe.toml rename to recipes/wip/games/0ad/betterspades/recipe.toml diff --git a/recipes/wip/bevy-engine/recipe.toml b/recipes/wip/games/0ad/bevy-engine/recipe.toml similarity index 100% rename from recipes/wip/bevy-engine/recipe.toml rename to recipes/wip/games/0ad/bevy-engine/recipe.toml diff --git a/recipes/wip/call-of-ferris/recipe.toml b/recipes/wip/games/0ad/call-of-ferris/recipe.toml similarity index 100% rename from recipes/wip/call-of-ferris/recipe.toml rename to recipes/wip/games/0ad/call-of-ferris/recipe.toml diff --git a/recipes/wip/chess-tui/recipe.toml b/recipes/wip/games/0ad/chess-tui/recipe.toml similarity index 100% rename from recipes/wip/chess-tui/recipe.toml rename to recipes/wip/games/0ad/chess-tui/recipe.toml diff --git a/recipes/wip/chocolate-doom/recipe.toml b/recipes/wip/games/0ad/chocolate-doom/recipe.toml similarity index 100% rename from recipes/wip/chocolate-doom/recipe.toml rename to recipes/wip/games/0ad/chocolate-doom/recipe.toml diff --git a/recipes/wip/crispy-doom/recipe.toml b/recipes/wip/games/0ad/crispy-doom/recipe.toml similarity index 100% rename from recipes/wip/crispy-doom/recipe.toml rename to recipes/wip/games/0ad/crispy-doom/recipe.toml diff --git a/recipes/wip/cuberite/recipe.toml b/recipes/wip/games/0ad/cuberite/recipe.toml similarity index 100% rename from recipes/wip/cuberite/recipe.toml rename to recipes/wip/games/0ad/cuberite/recipe.toml diff --git a/recipes/wip/dcss/recipe.toml b/recipes/wip/games/0ad/dcss/recipe.toml similarity index 100% rename from recipes/wip/dcss/recipe.toml rename to recipes/wip/games/0ad/dcss/recipe.toml diff --git a/recipes/wip/et-legacy/recipe.toml b/recipes/wip/games/0ad/et-legacy/recipe.toml similarity index 100% rename from recipes/wip/et-legacy/recipe.toml rename to recipes/wip/games/0ad/et-legacy/recipe.toml diff --git a/recipes/wip/game-of-life-rs/recipe.toml b/recipes/wip/games/0ad/game-of-life-rs/recipe.toml similarity index 100% rename from recipes/wip/game-of-life-rs/recipe.toml rename to recipes/wip/games/0ad/game-of-life-rs/recipe.toml diff --git a/recipes/wip/ioquake3/recipe.toml b/recipes/wip/games/0ad/ioquake3/recipe.toml similarity index 100% rename from recipes/wip/ioquake3/recipe.toml rename to recipes/wip/games/0ad/ioquake3/recipe.toml diff --git a/recipes/wip/minesweep-rs/recipe.toml b/recipes/wip/games/0ad/minesweep-rs/recipe.toml similarity index 100% rename from recipes/wip/minesweep-rs/recipe.toml rename to recipes/wip/games/0ad/minesweep-rs/recipe.toml diff --git a/recipes/wip/minetest-data/recipe.toml b/recipes/wip/games/0ad/minetest-data/recipe.toml similarity index 100% rename from recipes/wip/minetest-data/recipe.toml rename to recipes/wip/games/0ad/minetest-data/recipe.toml diff --git a/recipes/wip/minetest/recipe.toml b/recipes/wip/games/0ad/minetest/recipe.toml similarity index 100% rename from recipes/wip/minetest/recipe.toml rename to recipes/wip/games/0ad/minetest/recipe.toml diff --git a/recipes/wip/openarena/recipe.toml b/recipes/wip/games/0ad/openarena/recipe.toml similarity index 100% rename from recipes/wip/openarena/recipe.toml rename to recipes/wip/games/0ad/openarena/recipe.toml diff --git a/recipes/wip/openlara/recipe.toml b/recipes/wip/games/0ad/openlara/recipe.toml similarity index 100% rename from recipes/wip/openlara/recipe.toml rename to recipes/wip/games/0ad/openlara/recipe.toml diff --git a/recipes/wip/openspades/recipe.toml b/recipes/wip/games/0ad/openspades/recipe.toml similarity index 100% rename from recipes/wip/openspades/recipe.toml rename to recipes/wip/games/0ad/openspades/recipe.toml diff --git a/recipes/wip/rbdoom3-bfg/recipe.toml b/recipes/wip/games/0ad/rbdoom3-bfg/recipe.toml similarity index 100% rename from recipes/wip/rbdoom3-bfg/recipe.toml rename to recipes/wip/games/0ad/rbdoom3-bfg/recipe.toml diff --git a/recipes/wip/0ad/recipe.toml b/recipes/wip/games/0ad/recipe.toml similarity index 100% rename from recipes/wip/0ad/recipe.toml rename to recipes/wip/games/0ad/recipe.toml diff --git a/recipes/wip/stockfish/recipe.toml b/recipes/wip/games/0ad/stockfish/recipe.toml similarity index 100% rename from recipes/wip/stockfish/recipe.toml rename to recipes/wip/games/0ad/stockfish/recipe.toml diff --git a/recipes/wip/supertuxkart/recipe.toml b/recipes/wip/games/0ad/supertuxkart/recipe.toml similarity index 100% rename from recipes/wip/supertuxkart/recipe.toml rename to recipes/wip/games/0ad/supertuxkart/recipe.toml diff --git a/recipes/wip/tic-tac-toe-rs/recipe.toml b/recipes/wip/games/0ad/tic-tac-toe-rs/recipe.toml similarity index 100% rename from recipes/wip/tic-tac-toe-rs/recipe.toml rename to recipes/wip/games/0ad/tic-tac-toe-rs/recipe.toml diff --git a/recipes/wip/unvanquished-benchmarks/recipe.toml b/recipes/wip/games/0ad/unvanquished-benchmarks/recipe.toml similarity index 100% rename from recipes/wip/unvanquished-benchmarks/recipe.toml rename to recipes/wip/games/0ad/unvanquished-benchmarks/recipe.toml diff --git a/recipes/wip/unvanquished/recipe.toml b/recipes/wip/games/0ad/unvanquished/recipe.toml similarity index 100% rename from recipes/wip/unvanquished/recipe.toml rename to recipes/wip/games/0ad/unvanquished/recipe.toml diff --git a/recipes/wip/veloren/recipe.toml b/recipes/wip/games/0ad/veloren/recipe.toml similarity index 100% rename from recipes/wip/veloren/recipe.toml rename to recipes/wip/games/0ad/veloren/recipe.toml diff --git a/recipes/wip/vkquake/recipe.toml b/recipes/wip/games/0ad/vkquake/recipe.toml similarity index 100% rename from recipes/wip/vkquake/recipe.toml rename to recipes/wip/games/0ad/vkquake/recipe.toml diff --git a/recipes/wip/vkquake2/recipe.toml b/recipes/wip/games/0ad/vkquake2/recipe.toml similarity index 100% rename from recipes/wip/vkquake2/recipe.toml rename to recipes/wip/games/0ad/vkquake2/recipe.toml diff --git a/recipes/wip/warsow/recipe.toml b/recipes/wip/games/0ad/warsow/recipe.toml similarity index 100% rename from recipes/wip/warsow/recipe.toml rename to recipes/wip/games/0ad/warsow/recipe.toml diff --git a/recipes/wip/xash3d-fwgs/recipe.toml b/recipes/wip/games/0ad/xash3d-fwgs/recipe.toml similarity index 100% rename from recipes/wip/xash3d-fwgs/recipe.toml rename to recipes/wip/games/0ad/xash3d-fwgs/recipe.toml diff --git a/recipes/wip/yquake2/recipe.toml b/recipes/wip/games/0ad/yquake2/recipe.toml similarity index 100% rename from recipes/wip/yquake2/recipe.toml rename to recipes/wip/games/0ad/yquake2/recipe.toml diff --git a/recipes/wip/zerospades/recipe.toml b/recipes/wip/games/0ad/zerospades/recipe.toml similarity index 100% rename from recipes/wip/zerospades/recipe.toml rename to recipes/wip/games/0ad/zerospades/recipe.toml diff --git a/recipes/wip/termimage/recipe.toml b/recipes/wip/tools/termimage/recipe.toml similarity index 100% rename from recipes/wip/termimage/recipe.toml rename to recipes/wip/tools/termimage/recipe.toml diff --git a/recipes/wip/topgrade/recipe.toml b/recipes/wip/tools/topgrade/recipe.toml similarity index 100% rename from recipes/wip/topgrade/recipe.toml rename to recipes/wip/tools/topgrade/recipe.toml diff --git a/recipes/wip/gyr/recipe.toml b/recipes/wip/tui/gyr/recipe.toml similarity index 100% rename from recipes/wip/gyr/recipe.toml rename to recipes/wip/tui/gyr/recipe.toml diff --git a/recipes/wip/twitch-tui/recipe.toml b/recipes/wip/tui/twitch-tui/recipe.toml similarity index 100% rename from recipes/wip/twitch-tui/recipe.toml rename to recipes/wip/tui/twitch-tui/recipe.toml From b62c62fb67ebd5b052fb7dc642dbe7e7a4531d79 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 10 Feb 2024 11:24:21 +0000 Subject: [PATCH 1539/3180] move recipes --- recipes/wip/{ => abi-cafe}/apitrace/recipe.toml | 0 recipes/wip/{ => abi-cafe}/astronvim/recipe.toml | 0 recipes/wip/{ => abi-cafe}/c2rust/recipe.toml | 0 recipes/wip/{ => abi-cafe}/cbindgen/recipe.toml | 0 recipes/wip/{ => abi-cafe}/chars/recipe.toml | 0 recipes/wip/{ => abi-cafe}/cling/recipe.toml | 0 recipes/wip/{ => abi-cafe}/cppunit/recipe.toml | 0 recipes/wip/{ => abi-cafe}/crosstool-ng/recipe.toml | 0 recipes/wip/{ => abi-cafe}/deno/recipe.toml | 0 recipes/wip/{ => abi-cafe}/difftastic/recipe.toml | 0 recipes/wip/{ => abi-cafe}/diplomat/recipe.toml | 0 recipes/wip/{ => abi-cafe}/doxygen/recipe.toml | 0 recipes/wip/{ => abi-cafe}/elfshaker/recipe.toml | 0 recipes/wip/{ => abi-cafe}/elixir/recipe.toml | 0 recipes/wip/{ => abi-cafe}/elm/recipe.toml | 0 recipes/wip/{ => abi-cafe}/erlang/recipe.toml | 0 recipes/wip/{ => abi-cafe}/evcxr-jupyter/recipe.toml | 0 recipes/wip/{ => abi-cafe}/evcxr-repl/recipe.toml | 0 recipes/wip/{ => abi-cafe}/fal/recipe.toml | 0 recipes/wip/{ => abi-cafe}/firedbg/recipe.toml | 0 recipes/wip/{ => abi-cafe}/flamegraph/recipe.toml | 0 recipes/wip/{ => abi-cafe}/fyrox-template/recipe.toml | 0 recipes/wip/{ => abi-cafe}/gdb/recipe.toml | 0 recipes/wip/{ => abi-cafe}/ghc/recipe.toml | 0 recipes/wip/{ => abi-cafe}/ghostpdl/recipe.toml | 0 recipes/wip/{ => abi-cafe}/ghostscript/recipe.toml | 0 recipes/wip/{ => abi-cafe}/git-absorb/recipe.toml | 0 recipes/wip/{ => abi-cafe}/git-cliff/recipe.toml | 0 recipes/wip/{ => abi-cafe}/git-ignore-generator/recipe.toml | 0 recipes/wip/{ => abi-cafe}/gitui/recipe.toml | 0 recipes/wip/{ => abi-cafe}/gnome-builder/recipe.toml | 0 recipes/wip/{ => abi-cafe}/godot-engine4/recipe.toml | 0 recipes/wip/{ => abi-cafe}/hadrian/recipe.toml | 0 recipes/wip/{ => abi-cafe}/hare-std/recipe.toml | 0 recipes/wip/{ => abi-cafe}/harec/recipe.toml | 0 recipes/wip/{ => abi-cafe}/hexyl/recipe.toml | 0 recipes/wip/{ => abi-cafe}/hvm/recipe.toml | 0 recipes/wip/{ => abi-cafe}/julia-lts/recipe.toml | 0 recipes/wip/{ => abi-cafe}/julia/recipe.toml | 0 recipes/wip/{ => abi-cafe}/kani/recipe.toml | 0 recipes/wip/{ => abi-cafe}/kdevelop/recipe.toml | 0 recipes/wip/{ => abi-cafe}/luajit/recipe.toml | 0 recipes/wip/{ => abi-cafe}/meson/recipe.toml | 0 recipes/wip/{ => abi-cafe}/moonzoon/recipe.toml | 0 recipes/wip/{ => abi-cafe}/openjdk11-headless/recipe.toml | 0 recipes/wip/{ => abi-cafe}/openjdk17-headless/recipe.toml | 0 recipes/wip/{ => abi-cafe}/openjdk21-headless/recipe.toml | 0 recipes/wip/{ => abi-cafe}/openjdk8-headless/recipe.toml | 0 recipes/wip/{ => abi-cafe}/oxc/recipe.toml | 0 recipes/wip/{ => abi-cafe}/pony-lang/recipe.toml | 0 recipes/wip/{ => abi-cafe}/renderdoc/recipe.toml | 0 recipes/wip/{ => abi-cafe}/rr-debugger/recipe.toml | 0 recipes/wip/{ => abi-cafe}/rust-counter-strings/recipe.toml | 0 recipes/wip/{ => abi-cafe}/samply/recipe.toml | 0 recipes/wip/{ => abi-cafe}/shaderc/recipe.toml | 0 recipes/wip/{ => abi-cafe}/tokio-console/recipe.toml | 0 recipes/wip/{ => abi-cafe}/tracy/recipe.toml | 0 recipes/wip/{ => abi-cafe}/vala/recipe.toml | 0 recipes/wip/{ => abi-cafe}/vale-lang/recipe.toml | 0 recipes/wip/{ => abi-cafe}/valgrind/recipe.toml | 0 recipes/wip/{ => abi-cafe}/wasmtime/recipe.toml | 0 recipes/wip/{ => abi-cafe}/zig/recipe.toml | 0 recipes/wip/{games/0ad => }/bevy-engine/recipe.toml | 0 63 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => abi-cafe}/apitrace/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/astronvim/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/c2rust/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/cbindgen/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/chars/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/cling/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/cppunit/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/crosstool-ng/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/deno/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/difftastic/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/diplomat/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/doxygen/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/elfshaker/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/elixir/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/elm/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/erlang/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/evcxr-jupyter/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/evcxr-repl/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/fal/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/firedbg/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/flamegraph/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/fyrox-template/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/gdb/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/ghc/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/ghostpdl/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/ghostscript/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/git-absorb/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/git-cliff/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/git-ignore-generator/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/gitui/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/gnome-builder/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/godot-engine4/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/hadrian/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/hare-std/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/harec/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/hexyl/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/hvm/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/julia-lts/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/julia/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/kani/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/kdevelop/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/luajit/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/meson/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/moonzoon/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/openjdk11-headless/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/openjdk17-headless/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/openjdk21-headless/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/openjdk8-headless/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/oxc/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/pony-lang/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/renderdoc/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/rr-debugger/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/rust-counter-strings/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/samply/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/shaderc/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/tokio-console/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/tracy/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/vala/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/vale-lang/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/valgrind/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/wasmtime/recipe.toml (100%) rename recipes/wip/{ => abi-cafe}/zig/recipe.toml (100%) rename recipes/wip/{games/0ad => }/bevy-engine/recipe.toml (100%) diff --git a/recipes/wip/apitrace/recipe.toml b/recipes/wip/abi-cafe/apitrace/recipe.toml similarity index 100% rename from recipes/wip/apitrace/recipe.toml rename to recipes/wip/abi-cafe/apitrace/recipe.toml diff --git a/recipes/wip/astronvim/recipe.toml b/recipes/wip/abi-cafe/astronvim/recipe.toml similarity index 100% rename from recipes/wip/astronvim/recipe.toml rename to recipes/wip/abi-cafe/astronvim/recipe.toml diff --git a/recipes/wip/c2rust/recipe.toml b/recipes/wip/abi-cafe/c2rust/recipe.toml similarity index 100% rename from recipes/wip/c2rust/recipe.toml rename to recipes/wip/abi-cafe/c2rust/recipe.toml diff --git a/recipes/wip/cbindgen/recipe.toml b/recipes/wip/abi-cafe/cbindgen/recipe.toml similarity index 100% rename from recipes/wip/cbindgen/recipe.toml rename to recipes/wip/abi-cafe/cbindgen/recipe.toml diff --git a/recipes/wip/chars/recipe.toml b/recipes/wip/abi-cafe/chars/recipe.toml similarity index 100% rename from recipes/wip/chars/recipe.toml rename to recipes/wip/abi-cafe/chars/recipe.toml diff --git a/recipes/wip/cling/recipe.toml b/recipes/wip/abi-cafe/cling/recipe.toml similarity index 100% rename from recipes/wip/cling/recipe.toml rename to recipes/wip/abi-cafe/cling/recipe.toml diff --git a/recipes/wip/cppunit/recipe.toml b/recipes/wip/abi-cafe/cppunit/recipe.toml similarity index 100% rename from recipes/wip/cppunit/recipe.toml rename to recipes/wip/abi-cafe/cppunit/recipe.toml diff --git a/recipes/wip/crosstool-ng/recipe.toml b/recipes/wip/abi-cafe/crosstool-ng/recipe.toml similarity index 100% rename from recipes/wip/crosstool-ng/recipe.toml rename to recipes/wip/abi-cafe/crosstool-ng/recipe.toml diff --git a/recipes/wip/deno/recipe.toml b/recipes/wip/abi-cafe/deno/recipe.toml similarity index 100% rename from recipes/wip/deno/recipe.toml rename to recipes/wip/abi-cafe/deno/recipe.toml diff --git a/recipes/wip/difftastic/recipe.toml b/recipes/wip/abi-cafe/difftastic/recipe.toml similarity index 100% rename from recipes/wip/difftastic/recipe.toml rename to recipes/wip/abi-cafe/difftastic/recipe.toml diff --git a/recipes/wip/diplomat/recipe.toml b/recipes/wip/abi-cafe/diplomat/recipe.toml similarity index 100% rename from recipes/wip/diplomat/recipe.toml rename to recipes/wip/abi-cafe/diplomat/recipe.toml diff --git a/recipes/wip/doxygen/recipe.toml b/recipes/wip/abi-cafe/doxygen/recipe.toml similarity index 100% rename from recipes/wip/doxygen/recipe.toml rename to recipes/wip/abi-cafe/doxygen/recipe.toml diff --git a/recipes/wip/elfshaker/recipe.toml b/recipes/wip/abi-cafe/elfshaker/recipe.toml similarity index 100% rename from recipes/wip/elfshaker/recipe.toml rename to recipes/wip/abi-cafe/elfshaker/recipe.toml diff --git a/recipes/wip/elixir/recipe.toml b/recipes/wip/abi-cafe/elixir/recipe.toml similarity index 100% rename from recipes/wip/elixir/recipe.toml rename to recipes/wip/abi-cafe/elixir/recipe.toml diff --git a/recipes/wip/elm/recipe.toml b/recipes/wip/abi-cafe/elm/recipe.toml similarity index 100% rename from recipes/wip/elm/recipe.toml rename to recipes/wip/abi-cafe/elm/recipe.toml diff --git a/recipes/wip/erlang/recipe.toml b/recipes/wip/abi-cafe/erlang/recipe.toml similarity index 100% rename from recipes/wip/erlang/recipe.toml rename to recipes/wip/abi-cafe/erlang/recipe.toml diff --git a/recipes/wip/evcxr-jupyter/recipe.toml b/recipes/wip/abi-cafe/evcxr-jupyter/recipe.toml similarity index 100% rename from recipes/wip/evcxr-jupyter/recipe.toml rename to recipes/wip/abi-cafe/evcxr-jupyter/recipe.toml diff --git a/recipes/wip/evcxr-repl/recipe.toml b/recipes/wip/abi-cafe/evcxr-repl/recipe.toml similarity index 100% rename from recipes/wip/evcxr-repl/recipe.toml rename to recipes/wip/abi-cafe/evcxr-repl/recipe.toml diff --git a/recipes/wip/fal/recipe.toml b/recipes/wip/abi-cafe/fal/recipe.toml similarity index 100% rename from recipes/wip/fal/recipe.toml rename to recipes/wip/abi-cafe/fal/recipe.toml diff --git a/recipes/wip/firedbg/recipe.toml b/recipes/wip/abi-cafe/firedbg/recipe.toml similarity index 100% rename from recipes/wip/firedbg/recipe.toml rename to recipes/wip/abi-cafe/firedbg/recipe.toml diff --git a/recipes/wip/flamegraph/recipe.toml b/recipes/wip/abi-cafe/flamegraph/recipe.toml similarity index 100% rename from recipes/wip/flamegraph/recipe.toml rename to recipes/wip/abi-cafe/flamegraph/recipe.toml diff --git a/recipes/wip/fyrox-template/recipe.toml b/recipes/wip/abi-cafe/fyrox-template/recipe.toml similarity index 100% rename from recipes/wip/fyrox-template/recipe.toml rename to recipes/wip/abi-cafe/fyrox-template/recipe.toml diff --git a/recipes/wip/gdb/recipe.toml b/recipes/wip/abi-cafe/gdb/recipe.toml similarity index 100% rename from recipes/wip/gdb/recipe.toml rename to recipes/wip/abi-cafe/gdb/recipe.toml diff --git a/recipes/wip/ghc/recipe.toml b/recipes/wip/abi-cafe/ghc/recipe.toml similarity index 100% rename from recipes/wip/ghc/recipe.toml rename to recipes/wip/abi-cafe/ghc/recipe.toml diff --git a/recipes/wip/ghostpdl/recipe.toml b/recipes/wip/abi-cafe/ghostpdl/recipe.toml similarity index 100% rename from recipes/wip/ghostpdl/recipe.toml rename to recipes/wip/abi-cafe/ghostpdl/recipe.toml diff --git a/recipes/wip/ghostscript/recipe.toml b/recipes/wip/abi-cafe/ghostscript/recipe.toml similarity index 100% rename from recipes/wip/ghostscript/recipe.toml rename to recipes/wip/abi-cafe/ghostscript/recipe.toml diff --git a/recipes/wip/git-absorb/recipe.toml b/recipes/wip/abi-cafe/git-absorb/recipe.toml similarity index 100% rename from recipes/wip/git-absorb/recipe.toml rename to recipes/wip/abi-cafe/git-absorb/recipe.toml diff --git a/recipes/wip/git-cliff/recipe.toml b/recipes/wip/abi-cafe/git-cliff/recipe.toml similarity index 100% rename from recipes/wip/git-cliff/recipe.toml rename to recipes/wip/abi-cafe/git-cliff/recipe.toml diff --git a/recipes/wip/git-ignore-generator/recipe.toml b/recipes/wip/abi-cafe/git-ignore-generator/recipe.toml similarity index 100% rename from recipes/wip/git-ignore-generator/recipe.toml rename to recipes/wip/abi-cafe/git-ignore-generator/recipe.toml diff --git a/recipes/wip/gitui/recipe.toml b/recipes/wip/abi-cafe/gitui/recipe.toml similarity index 100% rename from recipes/wip/gitui/recipe.toml rename to recipes/wip/abi-cafe/gitui/recipe.toml diff --git a/recipes/wip/gnome-builder/recipe.toml b/recipes/wip/abi-cafe/gnome-builder/recipe.toml similarity index 100% rename from recipes/wip/gnome-builder/recipe.toml rename to recipes/wip/abi-cafe/gnome-builder/recipe.toml diff --git a/recipes/wip/godot-engine4/recipe.toml b/recipes/wip/abi-cafe/godot-engine4/recipe.toml similarity index 100% rename from recipes/wip/godot-engine4/recipe.toml rename to recipes/wip/abi-cafe/godot-engine4/recipe.toml diff --git a/recipes/wip/hadrian/recipe.toml b/recipes/wip/abi-cafe/hadrian/recipe.toml similarity index 100% rename from recipes/wip/hadrian/recipe.toml rename to recipes/wip/abi-cafe/hadrian/recipe.toml diff --git a/recipes/wip/hare-std/recipe.toml b/recipes/wip/abi-cafe/hare-std/recipe.toml similarity index 100% rename from recipes/wip/hare-std/recipe.toml rename to recipes/wip/abi-cafe/hare-std/recipe.toml diff --git a/recipes/wip/harec/recipe.toml b/recipes/wip/abi-cafe/harec/recipe.toml similarity index 100% rename from recipes/wip/harec/recipe.toml rename to recipes/wip/abi-cafe/harec/recipe.toml diff --git a/recipes/wip/hexyl/recipe.toml b/recipes/wip/abi-cafe/hexyl/recipe.toml similarity index 100% rename from recipes/wip/hexyl/recipe.toml rename to recipes/wip/abi-cafe/hexyl/recipe.toml diff --git a/recipes/wip/hvm/recipe.toml b/recipes/wip/abi-cafe/hvm/recipe.toml similarity index 100% rename from recipes/wip/hvm/recipe.toml rename to recipes/wip/abi-cafe/hvm/recipe.toml diff --git a/recipes/wip/julia-lts/recipe.toml b/recipes/wip/abi-cafe/julia-lts/recipe.toml similarity index 100% rename from recipes/wip/julia-lts/recipe.toml rename to recipes/wip/abi-cafe/julia-lts/recipe.toml diff --git a/recipes/wip/julia/recipe.toml b/recipes/wip/abi-cafe/julia/recipe.toml similarity index 100% rename from recipes/wip/julia/recipe.toml rename to recipes/wip/abi-cafe/julia/recipe.toml diff --git a/recipes/wip/kani/recipe.toml b/recipes/wip/abi-cafe/kani/recipe.toml similarity index 100% rename from recipes/wip/kani/recipe.toml rename to recipes/wip/abi-cafe/kani/recipe.toml diff --git a/recipes/wip/kdevelop/recipe.toml b/recipes/wip/abi-cafe/kdevelop/recipe.toml similarity index 100% rename from recipes/wip/kdevelop/recipe.toml rename to recipes/wip/abi-cafe/kdevelop/recipe.toml diff --git a/recipes/wip/luajit/recipe.toml b/recipes/wip/abi-cafe/luajit/recipe.toml similarity index 100% rename from recipes/wip/luajit/recipe.toml rename to recipes/wip/abi-cafe/luajit/recipe.toml diff --git a/recipes/wip/meson/recipe.toml b/recipes/wip/abi-cafe/meson/recipe.toml similarity index 100% rename from recipes/wip/meson/recipe.toml rename to recipes/wip/abi-cafe/meson/recipe.toml diff --git a/recipes/wip/moonzoon/recipe.toml b/recipes/wip/abi-cafe/moonzoon/recipe.toml similarity index 100% rename from recipes/wip/moonzoon/recipe.toml rename to recipes/wip/abi-cafe/moonzoon/recipe.toml diff --git a/recipes/wip/openjdk11-headless/recipe.toml b/recipes/wip/abi-cafe/openjdk11-headless/recipe.toml similarity index 100% rename from recipes/wip/openjdk11-headless/recipe.toml rename to recipes/wip/abi-cafe/openjdk11-headless/recipe.toml diff --git a/recipes/wip/openjdk17-headless/recipe.toml b/recipes/wip/abi-cafe/openjdk17-headless/recipe.toml similarity index 100% rename from recipes/wip/openjdk17-headless/recipe.toml rename to recipes/wip/abi-cafe/openjdk17-headless/recipe.toml diff --git a/recipes/wip/openjdk21-headless/recipe.toml b/recipes/wip/abi-cafe/openjdk21-headless/recipe.toml similarity index 100% rename from recipes/wip/openjdk21-headless/recipe.toml rename to recipes/wip/abi-cafe/openjdk21-headless/recipe.toml diff --git a/recipes/wip/openjdk8-headless/recipe.toml b/recipes/wip/abi-cafe/openjdk8-headless/recipe.toml similarity index 100% rename from recipes/wip/openjdk8-headless/recipe.toml rename to recipes/wip/abi-cafe/openjdk8-headless/recipe.toml diff --git a/recipes/wip/oxc/recipe.toml b/recipes/wip/abi-cafe/oxc/recipe.toml similarity index 100% rename from recipes/wip/oxc/recipe.toml rename to recipes/wip/abi-cafe/oxc/recipe.toml diff --git a/recipes/wip/pony-lang/recipe.toml b/recipes/wip/abi-cafe/pony-lang/recipe.toml similarity index 100% rename from recipes/wip/pony-lang/recipe.toml rename to recipes/wip/abi-cafe/pony-lang/recipe.toml diff --git a/recipes/wip/renderdoc/recipe.toml b/recipes/wip/abi-cafe/renderdoc/recipe.toml similarity index 100% rename from recipes/wip/renderdoc/recipe.toml rename to recipes/wip/abi-cafe/renderdoc/recipe.toml diff --git a/recipes/wip/rr-debugger/recipe.toml b/recipes/wip/abi-cafe/rr-debugger/recipe.toml similarity index 100% rename from recipes/wip/rr-debugger/recipe.toml rename to recipes/wip/abi-cafe/rr-debugger/recipe.toml diff --git a/recipes/wip/rust-counter-strings/recipe.toml b/recipes/wip/abi-cafe/rust-counter-strings/recipe.toml similarity index 100% rename from recipes/wip/rust-counter-strings/recipe.toml rename to recipes/wip/abi-cafe/rust-counter-strings/recipe.toml diff --git a/recipes/wip/samply/recipe.toml b/recipes/wip/abi-cafe/samply/recipe.toml similarity index 100% rename from recipes/wip/samply/recipe.toml rename to recipes/wip/abi-cafe/samply/recipe.toml diff --git a/recipes/wip/shaderc/recipe.toml b/recipes/wip/abi-cafe/shaderc/recipe.toml similarity index 100% rename from recipes/wip/shaderc/recipe.toml rename to recipes/wip/abi-cafe/shaderc/recipe.toml diff --git a/recipes/wip/tokio-console/recipe.toml b/recipes/wip/abi-cafe/tokio-console/recipe.toml similarity index 100% rename from recipes/wip/tokio-console/recipe.toml rename to recipes/wip/abi-cafe/tokio-console/recipe.toml diff --git a/recipes/wip/tracy/recipe.toml b/recipes/wip/abi-cafe/tracy/recipe.toml similarity index 100% rename from recipes/wip/tracy/recipe.toml rename to recipes/wip/abi-cafe/tracy/recipe.toml diff --git a/recipes/wip/vala/recipe.toml b/recipes/wip/abi-cafe/vala/recipe.toml similarity index 100% rename from recipes/wip/vala/recipe.toml rename to recipes/wip/abi-cafe/vala/recipe.toml diff --git a/recipes/wip/vale-lang/recipe.toml b/recipes/wip/abi-cafe/vale-lang/recipe.toml similarity index 100% rename from recipes/wip/vale-lang/recipe.toml rename to recipes/wip/abi-cafe/vale-lang/recipe.toml diff --git a/recipes/wip/valgrind/recipe.toml b/recipes/wip/abi-cafe/valgrind/recipe.toml similarity index 100% rename from recipes/wip/valgrind/recipe.toml rename to recipes/wip/abi-cafe/valgrind/recipe.toml diff --git a/recipes/wip/wasmtime/recipe.toml b/recipes/wip/abi-cafe/wasmtime/recipe.toml similarity index 100% rename from recipes/wip/wasmtime/recipe.toml rename to recipes/wip/abi-cafe/wasmtime/recipe.toml diff --git a/recipes/wip/zig/recipe.toml b/recipes/wip/abi-cafe/zig/recipe.toml similarity index 100% rename from recipes/wip/zig/recipe.toml rename to recipes/wip/abi-cafe/zig/recipe.toml diff --git a/recipes/wip/games/0ad/bevy-engine/recipe.toml b/recipes/wip/bevy-engine/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/bevy-engine/recipe.toml rename to recipes/wip/bevy-engine/recipe.toml From 87f5a3d7489642b9c8f19ba3397f64ef77154c8c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 10 Feb 2024 11:31:06 +0000 Subject: [PATCH 1540/3180] move recipes --- recipes/wip/{ => emulators}/boxedwine/recipe.toml | 0 recipes/wip/{ => emulators}/boytacean/recipe.toml | 0 recipes/wip/{ => emulators}/dolphin-emu/recipe.toml | 0 recipes/wip/{ => emulators}/duckstation/recipe.toml | 0 recipes/wip/{ => emulators}/finalburn-neo/recipe.toml | 0 recipes/wip/{ => emulators}/gameboy-emu/recipe.toml | 0 recipes/wip/{ => emulators}/mame/recipe.toml | 0 recipes/wip/{ => emulators}/obliteration/recipe.toml | 0 recipes/wip/{ => emulators}/pcsx-rearmed/recipe.toml | 0 recipes/wip/{ => emulators}/pcsx2/recipe.toml | 0 recipes/wip/{ => emulators}/ppsspp/recipe.toml | 0 recipes/wip/{ => emulators}/rpcs3/recipe.toml | 0 recipes/wip/{ => emulators}/ruffle/recipe.toml | 0 recipes/wip/{ => emulators}/wine-stable/recipe.toml | 0 recipes/wip/{ => emulators}/xemu/recipe.toml | 0 recipes/wip/{ => emulators}/xenia/recipe.toml | 0 recipes/wip/{ => emulators}/zsnes/recipe.toml | 0 17 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => emulators}/boxedwine/recipe.toml (100%) rename recipes/wip/{ => emulators}/boytacean/recipe.toml (100%) rename recipes/wip/{ => emulators}/dolphin-emu/recipe.toml (100%) rename recipes/wip/{ => emulators}/duckstation/recipe.toml (100%) rename recipes/wip/{ => emulators}/finalburn-neo/recipe.toml (100%) rename recipes/wip/{ => emulators}/gameboy-emu/recipe.toml (100%) rename recipes/wip/{ => emulators}/mame/recipe.toml (100%) rename recipes/wip/{ => emulators}/obliteration/recipe.toml (100%) rename recipes/wip/{ => emulators}/pcsx-rearmed/recipe.toml (100%) rename recipes/wip/{ => emulators}/pcsx2/recipe.toml (100%) rename recipes/wip/{ => emulators}/ppsspp/recipe.toml (100%) rename recipes/wip/{ => emulators}/rpcs3/recipe.toml (100%) rename recipes/wip/{ => emulators}/ruffle/recipe.toml (100%) rename recipes/wip/{ => emulators}/wine-stable/recipe.toml (100%) rename recipes/wip/{ => emulators}/xemu/recipe.toml (100%) rename recipes/wip/{ => emulators}/xenia/recipe.toml (100%) rename recipes/wip/{ => emulators}/zsnes/recipe.toml (100%) diff --git a/recipes/wip/boxedwine/recipe.toml b/recipes/wip/emulators/boxedwine/recipe.toml similarity index 100% rename from recipes/wip/boxedwine/recipe.toml rename to recipes/wip/emulators/boxedwine/recipe.toml diff --git a/recipes/wip/boytacean/recipe.toml b/recipes/wip/emulators/boytacean/recipe.toml similarity index 100% rename from recipes/wip/boytacean/recipe.toml rename to recipes/wip/emulators/boytacean/recipe.toml diff --git a/recipes/wip/dolphin-emu/recipe.toml b/recipes/wip/emulators/dolphin-emu/recipe.toml similarity index 100% rename from recipes/wip/dolphin-emu/recipe.toml rename to recipes/wip/emulators/dolphin-emu/recipe.toml diff --git a/recipes/wip/duckstation/recipe.toml b/recipes/wip/emulators/duckstation/recipe.toml similarity index 100% rename from recipes/wip/duckstation/recipe.toml rename to recipes/wip/emulators/duckstation/recipe.toml diff --git a/recipes/wip/finalburn-neo/recipe.toml b/recipes/wip/emulators/finalburn-neo/recipe.toml similarity index 100% rename from recipes/wip/finalburn-neo/recipe.toml rename to recipes/wip/emulators/finalburn-neo/recipe.toml diff --git a/recipes/wip/gameboy-emu/recipe.toml b/recipes/wip/emulators/gameboy-emu/recipe.toml similarity index 100% rename from recipes/wip/gameboy-emu/recipe.toml rename to recipes/wip/emulators/gameboy-emu/recipe.toml diff --git a/recipes/wip/mame/recipe.toml b/recipes/wip/emulators/mame/recipe.toml similarity index 100% rename from recipes/wip/mame/recipe.toml rename to recipes/wip/emulators/mame/recipe.toml diff --git a/recipes/wip/obliteration/recipe.toml b/recipes/wip/emulators/obliteration/recipe.toml similarity index 100% rename from recipes/wip/obliteration/recipe.toml rename to recipes/wip/emulators/obliteration/recipe.toml diff --git a/recipes/wip/pcsx-rearmed/recipe.toml b/recipes/wip/emulators/pcsx-rearmed/recipe.toml similarity index 100% rename from recipes/wip/pcsx-rearmed/recipe.toml rename to recipes/wip/emulators/pcsx-rearmed/recipe.toml diff --git a/recipes/wip/pcsx2/recipe.toml b/recipes/wip/emulators/pcsx2/recipe.toml similarity index 100% rename from recipes/wip/pcsx2/recipe.toml rename to recipes/wip/emulators/pcsx2/recipe.toml diff --git a/recipes/wip/ppsspp/recipe.toml b/recipes/wip/emulators/ppsspp/recipe.toml similarity index 100% rename from recipes/wip/ppsspp/recipe.toml rename to recipes/wip/emulators/ppsspp/recipe.toml diff --git a/recipes/wip/rpcs3/recipe.toml b/recipes/wip/emulators/rpcs3/recipe.toml similarity index 100% rename from recipes/wip/rpcs3/recipe.toml rename to recipes/wip/emulators/rpcs3/recipe.toml diff --git a/recipes/wip/ruffle/recipe.toml b/recipes/wip/emulators/ruffle/recipe.toml similarity index 100% rename from recipes/wip/ruffle/recipe.toml rename to recipes/wip/emulators/ruffle/recipe.toml diff --git a/recipes/wip/wine-stable/recipe.toml b/recipes/wip/emulators/wine-stable/recipe.toml similarity index 100% rename from recipes/wip/wine-stable/recipe.toml rename to recipes/wip/emulators/wine-stable/recipe.toml diff --git a/recipes/wip/xemu/recipe.toml b/recipes/wip/emulators/xemu/recipe.toml similarity index 100% rename from recipes/wip/xemu/recipe.toml rename to recipes/wip/emulators/xemu/recipe.toml diff --git a/recipes/wip/xenia/recipe.toml b/recipes/wip/emulators/xenia/recipe.toml similarity index 100% rename from recipes/wip/xenia/recipe.toml rename to recipes/wip/emulators/xenia/recipe.toml diff --git a/recipes/wip/zsnes/recipe.toml b/recipes/wip/emulators/zsnes/recipe.toml similarity index 100% rename from recipes/wip/zsnes/recipe.toml rename to recipes/wip/emulators/zsnes/recipe.toml From c19c5b8ec9f5a91a11c33ef04eb025417480a2c9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 10 Feb 2024 11:36:08 +0000 Subject: [PATCH 1541/3180] move recipes --- recipes/wip/{ => ardour}/festival/recipe.toml | 0 recipes/wip/{ => ardour}/lmms/recipe.toml | 0 recipes/wip/{ => ardour}/pragha/recipe.toml | 0 recipes/wip/{ => security/capstone}/clamav/recipe.toml | 0 recipes/wip/{ => security}/capstone/recipe.toml | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => ardour}/festival/recipe.toml (100%) rename recipes/wip/{ => ardour}/lmms/recipe.toml (100%) rename recipes/wip/{ => ardour}/pragha/recipe.toml (100%) rename recipes/wip/{ => security/capstone}/clamav/recipe.toml (100%) rename recipes/wip/{ => security}/capstone/recipe.toml (100%) diff --git a/recipes/wip/festival/recipe.toml b/recipes/wip/ardour/festival/recipe.toml similarity index 100% rename from recipes/wip/festival/recipe.toml rename to recipes/wip/ardour/festival/recipe.toml diff --git a/recipes/wip/lmms/recipe.toml b/recipes/wip/ardour/lmms/recipe.toml similarity index 100% rename from recipes/wip/lmms/recipe.toml rename to recipes/wip/ardour/lmms/recipe.toml diff --git a/recipes/wip/pragha/recipe.toml b/recipes/wip/ardour/pragha/recipe.toml similarity index 100% rename from recipes/wip/pragha/recipe.toml rename to recipes/wip/ardour/pragha/recipe.toml diff --git a/recipes/wip/clamav/recipe.toml b/recipes/wip/security/capstone/clamav/recipe.toml similarity index 100% rename from recipes/wip/clamav/recipe.toml rename to recipes/wip/security/capstone/clamav/recipe.toml diff --git a/recipes/wip/capstone/recipe.toml b/recipes/wip/security/capstone/recipe.toml similarity index 100% rename from recipes/wip/capstone/recipe.toml rename to recipes/wip/security/capstone/recipe.toml From 9385a828596bec4e50a5f4a86fcc737f317d9832 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 10 Feb 2024 11:39:38 +0000 Subject: [PATCH 1542/3180] move recipes --- recipes/wip/security/{capstone => }/clamav/recipe.toml | 0 recipes/wip/{ => video}/anime-effects/recipe.toml | 0 recipes/wip/{ => video}/kdenlive/recipe.toml | 0 recipes/wip/{ => video}/mpv/recipe.toml | 0 recipes/wip/{ => video}/pitivi/recipe.toml | 0 recipes/wip/{ => video}/tplay/recipe.toml | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/security/{capstone => }/clamav/recipe.toml (100%) rename recipes/wip/{ => video}/anime-effects/recipe.toml (100%) rename recipes/wip/{ => video}/kdenlive/recipe.toml (100%) rename recipes/wip/{ => video}/mpv/recipe.toml (100%) rename recipes/wip/{ => video}/pitivi/recipe.toml (100%) rename recipes/wip/{ => video}/tplay/recipe.toml (100%) diff --git a/recipes/wip/security/capstone/clamav/recipe.toml b/recipes/wip/security/clamav/recipe.toml similarity index 100% rename from recipes/wip/security/capstone/clamav/recipe.toml rename to recipes/wip/security/clamav/recipe.toml diff --git a/recipes/wip/anime-effects/recipe.toml b/recipes/wip/video/anime-effects/recipe.toml similarity index 100% rename from recipes/wip/anime-effects/recipe.toml rename to recipes/wip/video/anime-effects/recipe.toml diff --git a/recipes/wip/kdenlive/recipe.toml b/recipes/wip/video/kdenlive/recipe.toml similarity index 100% rename from recipes/wip/kdenlive/recipe.toml rename to recipes/wip/video/kdenlive/recipe.toml diff --git a/recipes/wip/mpv/recipe.toml b/recipes/wip/video/mpv/recipe.toml similarity index 100% rename from recipes/wip/mpv/recipe.toml rename to recipes/wip/video/mpv/recipe.toml diff --git a/recipes/wip/pitivi/recipe.toml b/recipes/wip/video/pitivi/recipe.toml similarity index 100% rename from recipes/wip/pitivi/recipe.toml rename to recipes/wip/video/pitivi/recipe.toml diff --git a/recipes/wip/tplay/recipe.toml b/recipes/wip/video/tplay/recipe.toml similarity index 100% rename from recipes/wip/tplay/recipe.toml rename to recipes/wip/video/tplay/recipe.toml From 1fe12a7ede4b10da73edb88abd435b8327144086 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 10 Feb 2024 12:12:33 +0000 Subject: [PATCH 1543/3180] move recipes --- recipes/wip/{ => dev}/abi-cafe/apitrace/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/astronvim/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/c2rust/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/cbindgen/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/chars/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/cling/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/cppunit/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/crosstool-ng/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/deno/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/difftastic/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/diplomat/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/doxygen/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/elfshaker/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/elixir/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/elm/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/erlang/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/evcxr-jupyter/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/evcxr-repl/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/fal/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/firedbg/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/flamegraph/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/fyrox-template/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/gdb/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/ghc/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/ghostpdl/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/ghostscript/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/git-absorb/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/git-cliff/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/git-ignore-generator/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/gitui/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/gnome-builder/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/godot-engine4/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/hadrian/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/hare-std/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/harec/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/hexyl/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/hvm/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/julia-lts/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/julia/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/kani/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/kdevelop/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/luajit/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/meson/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/moonzoon/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/openjdk11-headless/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/openjdk17-headless/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/openjdk21-headless/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/openjdk8-headless/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/oxc/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/pony-lang/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/renderdoc/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/rr-debugger/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/rust-counter-strings/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/samply/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/shaderc/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/tokio-console/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/tracy/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/vala/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/vale-lang/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/valgrind/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/wasmtime/recipe.toml | 0 recipes/wip/{ => dev}/abi-cafe/zig/recipe.toml | 0 recipes/wip/{ => shells}/fish-shell/recipe.toml | 0 recipes/wip/{ => shells}/nsh/recipe.toml | 0 recipes/wip/{ => ship-of-harkinian}/assaultcube/recipe.toml | 0 recipes/wip/{ => ship-of-harkinian}/shockolate/recipe.toml | 0 recipes/wip/{ => ship-of-harkinian}/smokin-guns/recipe.toml | 0 recipes/wip/{ => ship-of-harkinian}/xonotic/recipe.toml | 0 69 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => dev}/abi-cafe/apitrace/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/astronvim/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/c2rust/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/cbindgen/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/chars/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/cling/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/cppunit/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/crosstool-ng/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/deno/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/difftastic/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/diplomat/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/doxygen/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/elfshaker/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/elixir/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/elm/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/erlang/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/evcxr-jupyter/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/evcxr-repl/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/fal/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/firedbg/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/flamegraph/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/fyrox-template/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/gdb/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/ghc/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/ghostpdl/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/ghostscript/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/git-absorb/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/git-cliff/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/git-ignore-generator/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/gitui/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/gnome-builder/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/godot-engine4/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/hadrian/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/hare-std/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/harec/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/hexyl/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/hvm/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/julia-lts/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/julia/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/kani/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/kdevelop/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/luajit/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/meson/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/moonzoon/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/openjdk11-headless/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/openjdk17-headless/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/openjdk21-headless/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/openjdk8-headless/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/oxc/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/pony-lang/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/renderdoc/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/rr-debugger/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/rust-counter-strings/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/samply/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/shaderc/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/tokio-console/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/tracy/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/vala/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/vale-lang/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/valgrind/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/wasmtime/recipe.toml (100%) rename recipes/wip/{ => dev}/abi-cafe/zig/recipe.toml (100%) rename recipes/wip/{ => shells}/fish-shell/recipe.toml (100%) rename recipes/wip/{ => shells}/nsh/recipe.toml (100%) rename recipes/wip/{ => ship-of-harkinian}/assaultcube/recipe.toml (100%) rename recipes/wip/{ => ship-of-harkinian}/shockolate/recipe.toml (100%) rename recipes/wip/{ => ship-of-harkinian}/smokin-guns/recipe.toml (100%) rename recipes/wip/{ => ship-of-harkinian}/xonotic/recipe.toml (100%) diff --git a/recipes/wip/abi-cafe/apitrace/recipe.toml b/recipes/wip/dev/abi-cafe/apitrace/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/apitrace/recipe.toml rename to recipes/wip/dev/abi-cafe/apitrace/recipe.toml diff --git a/recipes/wip/abi-cafe/astronvim/recipe.toml b/recipes/wip/dev/abi-cafe/astronvim/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/astronvim/recipe.toml rename to recipes/wip/dev/abi-cafe/astronvim/recipe.toml diff --git a/recipes/wip/abi-cafe/c2rust/recipe.toml b/recipes/wip/dev/abi-cafe/c2rust/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/c2rust/recipe.toml rename to recipes/wip/dev/abi-cafe/c2rust/recipe.toml diff --git a/recipes/wip/abi-cafe/cbindgen/recipe.toml b/recipes/wip/dev/abi-cafe/cbindgen/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/cbindgen/recipe.toml rename to recipes/wip/dev/abi-cafe/cbindgen/recipe.toml diff --git a/recipes/wip/abi-cafe/chars/recipe.toml b/recipes/wip/dev/abi-cafe/chars/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/chars/recipe.toml rename to recipes/wip/dev/abi-cafe/chars/recipe.toml diff --git a/recipes/wip/abi-cafe/cling/recipe.toml b/recipes/wip/dev/abi-cafe/cling/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/cling/recipe.toml rename to recipes/wip/dev/abi-cafe/cling/recipe.toml diff --git a/recipes/wip/abi-cafe/cppunit/recipe.toml b/recipes/wip/dev/abi-cafe/cppunit/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/cppunit/recipe.toml rename to recipes/wip/dev/abi-cafe/cppunit/recipe.toml diff --git a/recipes/wip/abi-cafe/crosstool-ng/recipe.toml b/recipes/wip/dev/abi-cafe/crosstool-ng/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/crosstool-ng/recipe.toml rename to recipes/wip/dev/abi-cafe/crosstool-ng/recipe.toml diff --git a/recipes/wip/abi-cafe/deno/recipe.toml b/recipes/wip/dev/abi-cafe/deno/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/deno/recipe.toml rename to recipes/wip/dev/abi-cafe/deno/recipe.toml diff --git a/recipes/wip/abi-cafe/difftastic/recipe.toml b/recipes/wip/dev/abi-cafe/difftastic/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/difftastic/recipe.toml rename to recipes/wip/dev/abi-cafe/difftastic/recipe.toml diff --git a/recipes/wip/abi-cafe/diplomat/recipe.toml b/recipes/wip/dev/abi-cafe/diplomat/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/diplomat/recipe.toml rename to recipes/wip/dev/abi-cafe/diplomat/recipe.toml diff --git a/recipes/wip/abi-cafe/doxygen/recipe.toml b/recipes/wip/dev/abi-cafe/doxygen/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/doxygen/recipe.toml rename to recipes/wip/dev/abi-cafe/doxygen/recipe.toml diff --git a/recipes/wip/abi-cafe/elfshaker/recipe.toml b/recipes/wip/dev/abi-cafe/elfshaker/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/elfshaker/recipe.toml rename to recipes/wip/dev/abi-cafe/elfshaker/recipe.toml diff --git a/recipes/wip/abi-cafe/elixir/recipe.toml b/recipes/wip/dev/abi-cafe/elixir/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/elixir/recipe.toml rename to recipes/wip/dev/abi-cafe/elixir/recipe.toml diff --git a/recipes/wip/abi-cafe/elm/recipe.toml b/recipes/wip/dev/abi-cafe/elm/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/elm/recipe.toml rename to recipes/wip/dev/abi-cafe/elm/recipe.toml diff --git a/recipes/wip/abi-cafe/erlang/recipe.toml b/recipes/wip/dev/abi-cafe/erlang/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/erlang/recipe.toml rename to recipes/wip/dev/abi-cafe/erlang/recipe.toml diff --git a/recipes/wip/abi-cafe/evcxr-jupyter/recipe.toml b/recipes/wip/dev/abi-cafe/evcxr-jupyter/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/evcxr-jupyter/recipe.toml rename to recipes/wip/dev/abi-cafe/evcxr-jupyter/recipe.toml diff --git a/recipes/wip/abi-cafe/evcxr-repl/recipe.toml b/recipes/wip/dev/abi-cafe/evcxr-repl/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/evcxr-repl/recipe.toml rename to recipes/wip/dev/abi-cafe/evcxr-repl/recipe.toml diff --git a/recipes/wip/abi-cafe/fal/recipe.toml b/recipes/wip/dev/abi-cafe/fal/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/fal/recipe.toml rename to recipes/wip/dev/abi-cafe/fal/recipe.toml diff --git a/recipes/wip/abi-cafe/firedbg/recipe.toml b/recipes/wip/dev/abi-cafe/firedbg/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/firedbg/recipe.toml rename to recipes/wip/dev/abi-cafe/firedbg/recipe.toml diff --git a/recipes/wip/abi-cafe/flamegraph/recipe.toml b/recipes/wip/dev/abi-cafe/flamegraph/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/flamegraph/recipe.toml rename to recipes/wip/dev/abi-cafe/flamegraph/recipe.toml diff --git a/recipes/wip/abi-cafe/fyrox-template/recipe.toml b/recipes/wip/dev/abi-cafe/fyrox-template/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/fyrox-template/recipe.toml rename to recipes/wip/dev/abi-cafe/fyrox-template/recipe.toml diff --git a/recipes/wip/abi-cafe/gdb/recipe.toml b/recipes/wip/dev/abi-cafe/gdb/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/gdb/recipe.toml rename to recipes/wip/dev/abi-cafe/gdb/recipe.toml diff --git a/recipes/wip/abi-cafe/ghc/recipe.toml b/recipes/wip/dev/abi-cafe/ghc/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/ghc/recipe.toml rename to recipes/wip/dev/abi-cafe/ghc/recipe.toml diff --git a/recipes/wip/abi-cafe/ghostpdl/recipe.toml b/recipes/wip/dev/abi-cafe/ghostpdl/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/ghostpdl/recipe.toml rename to recipes/wip/dev/abi-cafe/ghostpdl/recipe.toml diff --git a/recipes/wip/abi-cafe/ghostscript/recipe.toml b/recipes/wip/dev/abi-cafe/ghostscript/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/ghostscript/recipe.toml rename to recipes/wip/dev/abi-cafe/ghostscript/recipe.toml diff --git a/recipes/wip/abi-cafe/git-absorb/recipe.toml b/recipes/wip/dev/abi-cafe/git-absorb/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/git-absorb/recipe.toml rename to recipes/wip/dev/abi-cafe/git-absorb/recipe.toml diff --git a/recipes/wip/abi-cafe/git-cliff/recipe.toml b/recipes/wip/dev/abi-cafe/git-cliff/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/git-cliff/recipe.toml rename to recipes/wip/dev/abi-cafe/git-cliff/recipe.toml diff --git a/recipes/wip/abi-cafe/git-ignore-generator/recipe.toml b/recipes/wip/dev/abi-cafe/git-ignore-generator/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/git-ignore-generator/recipe.toml rename to recipes/wip/dev/abi-cafe/git-ignore-generator/recipe.toml diff --git a/recipes/wip/abi-cafe/gitui/recipe.toml b/recipes/wip/dev/abi-cafe/gitui/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/gitui/recipe.toml rename to recipes/wip/dev/abi-cafe/gitui/recipe.toml diff --git a/recipes/wip/abi-cafe/gnome-builder/recipe.toml b/recipes/wip/dev/abi-cafe/gnome-builder/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/gnome-builder/recipe.toml rename to recipes/wip/dev/abi-cafe/gnome-builder/recipe.toml diff --git a/recipes/wip/abi-cafe/godot-engine4/recipe.toml b/recipes/wip/dev/abi-cafe/godot-engine4/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/godot-engine4/recipe.toml rename to recipes/wip/dev/abi-cafe/godot-engine4/recipe.toml diff --git a/recipes/wip/abi-cafe/hadrian/recipe.toml b/recipes/wip/dev/abi-cafe/hadrian/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/hadrian/recipe.toml rename to recipes/wip/dev/abi-cafe/hadrian/recipe.toml diff --git a/recipes/wip/abi-cafe/hare-std/recipe.toml b/recipes/wip/dev/abi-cafe/hare-std/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/hare-std/recipe.toml rename to recipes/wip/dev/abi-cafe/hare-std/recipe.toml diff --git a/recipes/wip/abi-cafe/harec/recipe.toml b/recipes/wip/dev/abi-cafe/harec/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/harec/recipe.toml rename to recipes/wip/dev/abi-cafe/harec/recipe.toml diff --git a/recipes/wip/abi-cafe/hexyl/recipe.toml b/recipes/wip/dev/abi-cafe/hexyl/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/hexyl/recipe.toml rename to recipes/wip/dev/abi-cafe/hexyl/recipe.toml diff --git a/recipes/wip/abi-cafe/hvm/recipe.toml b/recipes/wip/dev/abi-cafe/hvm/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/hvm/recipe.toml rename to recipes/wip/dev/abi-cafe/hvm/recipe.toml diff --git a/recipes/wip/abi-cafe/julia-lts/recipe.toml b/recipes/wip/dev/abi-cafe/julia-lts/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/julia-lts/recipe.toml rename to recipes/wip/dev/abi-cafe/julia-lts/recipe.toml diff --git a/recipes/wip/abi-cafe/julia/recipe.toml b/recipes/wip/dev/abi-cafe/julia/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/julia/recipe.toml rename to recipes/wip/dev/abi-cafe/julia/recipe.toml diff --git a/recipes/wip/abi-cafe/kani/recipe.toml b/recipes/wip/dev/abi-cafe/kani/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/kani/recipe.toml rename to recipes/wip/dev/abi-cafe/kani/recipe.toml diff --git a/recipes/wip/abi-cafe/kdevelop/recipe.toml b/recipes/wip/dev/abi-cafe/kdevelop/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/kdevelop/recipe.toml rename to recipes/wip/dev/abi-cafe/kdevelop/recipe.toml diff --git a/recipes/wip/abi-cafe/luajit/recipe.toml b/recipes/wip/dev/abi-cafe/luajit/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/luajit/recipe.toml rename to recipes/wip/dev/abi-cafe/luajit/recipe.toml diff --git a/recipes/wip/abi-cafe/meson/recipe.toml b/recipes/wip/dev/abi-cafe/meson/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/meson/recipe.toml rename to recipes/wip/dev/abi-cafe/meson/recipe.toml diff --git a/recipes/wip/abi-cafe/moonzoon/recipe.toml b/recipes/wip/dev/abi-cafe/moonzoon/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/moonzoon/recipe.toml rename to recipes/wip/dev/abi-cafe/moonzoon/recipe.toml diff --git a/recipes/wip/abi-cafe/openjdk11-headless/recipe.toml b/recipes/wip/dev/abi-cafe/openjdk11-headless/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/openjdk11-headless/recipe.toml rename to recipes/wip/dev/abi-cafe/openjdk11-headless/recipe.toml diff --git a/recipes/wip/abi-cafe/openjdk17-headless/recipe.toml b/recipes/wip/dev/abi-cafe/openjdk17-headless/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/openjdk17-headless/recipe.toml rename to recipes/wip/dev/abi-cafe/openjdk17-headless/recipe.toml diff --git a/recipes/wip/abi-cafe/openjdk21-headless/recipe.toml b/recipes/wip/dev/abi-cafe/openjdk21-headless/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/openjdk21-headless/recipe.toml rename to recipes/wip/dev/abi-cafe/openjdk21-headless/recipe.toml diff --git a/recipes/wip/abi-cafe/openjdk8-headless/recipe.toml b/recipes/wip/dev/abi-cafe/openjdk8-headless/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/openjdk8-headless/recipe.toml rename to recipes/wip/dev/abi-cafe/openjdk8-headless/recipe.toml diff --git a/recipes/wip/abi-cafe/oxc/recipe.toml b/recipes/wip/dev/abi-cafe/oxc/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/oxc/recipe.toml rename to recipes/wip/dev/abi-cafe/oxc/recipe.toml diff --git a/recipes/wip/abi-cafe/pony-lang/recipe.toml b/recipes/wip/dev/abi-cafe/pony-lang/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/pony-lang/recipe.toml rename to recipes/wip/dev/abi-cafe/pony-lang/recipe.toml diff --git a/recipes/wip/abi-cafe/recipe.toml b/recipes/wip/dev/abi-cafe/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/recipe.toml rename to recipes/wip/dev/abi-cafe/recipe.toml diff --git a/recipes/wip/abi-cafe/renderdoc/recipe.toml b/recipes/wip/dev/abi-cafe/renderdoc/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/renderdoc/recipe.toml rename to recipes/wip/dev/abi-cafe/renderdoc/recipe.toml diff --git a/recipes/wip/abi-cafe/rr-debugger/recipe.toml b/recipes/wip/dev/abi-cafe/rr-debugger/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/rr-debugger/recipe.toml rename to recipes/wip/dev/abi-cafe/rr-debugger/recipe.toml diff --git a/recipes/wip/abi-cafe/rust-counter-strings/recipe.toml b/recipes/wip/dev/abi-cafe/rust-counter-strings/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/rust-counter-strings/recipe.toml rename to recipes/wip/dev/abi-cafe/rust-counter-strings/recipe.toml diff --git a/recipes/wip/abi-cafe/samply/recipe.toml b/recipes/wip/dev/abi-cafe/samply/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/samply/recipe.toml rename to recipes/wip/dev/abi-cafe/samply/recipe.toml diff --git a/recipes/wip/abi-cafe/shaderc/recipe.toml b/recipes/wip/dev/abi-cafe/shaderc/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/shaderc/recipe.toml rename to recipes/wip/dev/abi-cafe/shaderc/recipe.toml diff --git a/recipes/wip/abi-cafe/tokio-console/recipe.toml b/recipes/wip/dev/abi-cafe/tokio-console/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/tokio-console/recipe.toml rename to recipes/wip/dev/abi-cafe/tokio-console/recipe.toml diff --git a/recipes/wip/abi-cafe/tracy/recipe.toml b/recipes/wip/dev/abi-cafe/tracy/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/tracy/recipe.toml rename to recipes/wip/dev/abi-cafe/tracy/recipe.toml diff --git a/recipes/wip/abi-cafe/vala/recipe.toml b/recipes/wip/dev/abi-cafe/vala/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/vala/recipe.toml rename to recipes/wip/dev/abi-cafe/vala/recipe.toml diff --git a/recipes/wip/abi-cafe/vale-lang/recipe.toml b/recipes/wip/dev/abi-cafe/vale-lang/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/vale-lang/recipe.toml rename to recipes/wip/dev/abi-cafe/vale-lang/recipe.toml diff --git a/recipes/wip/abi-cafe/valgrind/recipe.toml b/recipes/wip/dev/abi-cafe/valgrind/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/valgrind/recipe.toml rename to recipes/wip/dev/abi-cafe/valgrind/recipe.toml diff --git a/recipes/wip/abi-cafe/wasmtime/recipe.toml b/recipes/wip/dev/abi-cafe/wasmtime/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/wasmtime/recipe.toml rename to recipes/wip/dev/abi-cafe/wasmtime/recipe.toml diff --git a/recipes/wip/abi-cafe/zig/recipe.toml b/recipes/wip/dev/abi-cafe/zig/recipe.toml similarity index 100% rename from recipes/wip/abi-cafe/zig/recipe.toml rename to recipes/wip/dev/abi-cafe/zig/recipe.toml diff --git a/recipes/wip/fish-shell/recipe.toml b/recipes/wip/shells/fish-shell/recipe.toml similarity index 100% rename from recipes/wip/fish-shell/recipe.toml rename to recipes/wip/shells/fish-shell/recipe.toml diff --git a/recipes/wip/nsh/recipe.toml b/recipes/wip/shells/nsh/recipe.toml similarity index 100% rename from recipes/wip/nsh/recipe.toml rename to recipes/wip/shells/nsh/recipe.toml diff --git a/recipes/wip/assaultcube/recipe.toml b/recipes/wip/ship-of-harkinian/assaultcube/recipe.toml similarity index 100% rename from recipes/wip/assaultcube/recipe.toml rename to recipes/wip/ship-of-harkinian/assaultcube/recipe.toml diff --git a/recipes/wip/shockolate/recipe.toml b/recipes/wip/ship-of-harkinian/shockolate/recipe.toml similarity index 100% rename from recipes/wip/shockolate/recipe.toml rename to recipes/wip/ship-of-harkinian/shockolate/recipe.toml diff --git a/recipes/wip/smokin-guns/recipe.toml b/recipes/wip/ship-of-harkinian/smokin-guns/recipe.toml similarity index 100% rename from recipes/wip/smokin-guns/recipe.toml rename to recipes/wip/ship-of-harkinian/smokin-guns/recipe.toml diff --git a/recipes/wip/xonotic/recipe.toml b/recipes/wip/ship-of-harkinian/xonotic/recipe.toml similarity index 100% rename from recipes/wip/xonotic/recipe.toml rename to recipes/wip/ship-of-harkinian/xonotic/recipe.toml From bef35afafd4ac41f92eef26401f8aa18694b30b7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 10 Feb 2024 12:21:24 +0000 Subject: [PATCH 1544/3180] move recipes --- recipes/wip/{ => gui}/gtk2/recipe.toml | 0 recipes/wip/{ => gui}/gtk3/recipe.toml | 0 recipes/wip/{ => gui}/gtk4/recipe.toml | 0 recipes/wip/{ => gui}/niri/recipe.toml | 0 recipes/wip/{ => gui}/qt4/recipe.toml | 0 recipes/wip/{ => gui}/qt5-base/recipe.toml | 0 recipes/wip/{ => gui}/qt5-full/recipe.toml | 0 recipes/wip/{ => gui}/qt6-base/recipe.toml | 0 recipes/wip/{ => gui}/qt6-full/recipe.toml | 0 recipes/wip/{ => sound}/ardour/recipe.toml | 0 recipes/wip/{ardour => sound}/festival/recipe.toml | 0 recipes/wip/{ardour => sound}/lmms/recipe.toml | 0 recipes/wip/{ardour => sound}/pragha/recipe.toml | 0 13 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => gui}/gtk2/recipe.toml (100%) rename recipes/wip/{ => gui}/gtk3/recipe.toml (100%) rename recipes/wip/{ => gui}/gtk4/recipe.toml (100%) rename recipes/wip/{ => gui}/niri/recipe.toml (100%) rename recipes/wip/{ => gui}/qt4/recipe.toml (100%) rename recipes/wip/{ => gui}/qt5-base/recipe.toml (100%) rename recipes/wip/{ => gui}/qt5-full/recipe.toml (100%) rename recipes/wip/{ => gui}/qt6-base/recipe.toml (100%) rename recipes/wip/{ => gui}/qt6-full/recipe.toml (100%) rename recipes/wip/{ => sound}/ardour/recipe.toml (100%) rename recipes/wip/{ardour => sound}/festival/recipe.toml (100%) rename recipes/wip/{ardour => sound}/lmms/recipe.toml (100%) rename recipes/wip/{ardour => sound}/pragha/recipe.toml (100%) diff --git a/recipes/wip/gtk2/recipe.toml b/recipes/wip/gui/gtk2/recipe.toml similarity index 100% rename from recipes/wip/gtk2/recipe.toml rename to recipes/wip/gui/gtk2/recipe.toml diff --git a/recipes/wip/gtk3/recipe.toml b/recipes/wip/gui/gtk3/recipe.toml similarity index 100% rename from recipes/wip/gtk3/recipe.toml rename to recipes/wip/gui/gtk3/recipe.toml diff --git a/recipes/wip/gtk4/recipe.toml b/recipes/wip/gui/gtk4/recipe.toml similarity index 100% rename from recipes/wip/gtk4/recipe.toml rename to recipes/wip/gui/gtk4/recipe.toml diff --git a/recipes/wip/niri/recipe.toml b/recipes/wip/gui/niri/recipe.toml similarity index 100% rename from recipes/wip/niri/recipe.toml rename to recipes/wip/gui/niri/recipe.toml diff --git a/recipes/wip/qt4/recipe.toml b/recipes/wip/gui/qt4/recipe.toml similarity index 100% rename from recipes/wip/qt4/recipe.toml rename to recipes/wip/gui/qt4/recipe.toml diff --git a/recipes/wip/qt5-base/recipe.toml b/recipes/wip/gui/qt5-base/recipe.toml similarity index 100% rename from recipes/wip/qt5-base/recipe.toml rename to recipes/wip/gui/qt5-base/recipe.toml diff --git a/recipes/wip/qt5-full/recipe.toml b/recipes/wip/gui/qt5-full/recipe.toml similarity index 100% rename from recipes/wip/qt5-full/recipe.toml rename to recipes/wip/gui/qt5-full/recipe.toml diff --git a/recipes/wip/qt6-base/recipe.toml b/recipes/wip/gui/qt6-base/recipe.toml similarity index 100% rename from recipes/wip/qt6-base/recipe.toml rename to recipes/wip/gui/qt6-base/recipe.toml diff --git a/recipes/wip/qt6-full/recipe.toml b/recipes/wip/gui/qt6-full/recipe.toml similarity index 100% rename from recipes/wip/qt6-full/recipe.toml rename to recipes/wip/gui/qt6-full/recipe.toml diff --git a/recipes/wip/ardour/recipe.toml b/recipes/wip/sound/ardour/recipe.toml similarity index 100% rename from recipes/wip/ardour/recipe.toml rename to recipes/wip/sound/ardour/recipe.toml diff --git a/recipes/wip/ardour/festival/recipe.toml b/recipes/wip/sound/festival/recipe.toml similarity index 100% rename from recipes/wip/ardour/festival/recipe.toml rename to recipes/wip/sound/festival/recipe.toml diff --git a/recipes/wip/ardour/lmms/recipe.toml b/recipes/wip/sound/lmms/recipe.toml similarity index 100% rename from recipes/wip/ardour/lmms/recipe.toml rename to recipes/wip/sound/lmms/recipe.toml diff --git a/recipes/wip/ardour/pragha/recipe.toml b/recipes/wip/sound/pragha/recipe.toml similarity index 100% rename from recipes/wip/ardour/pragha/recipe.toml rename to recipes/wip/sound/pragha/recipe.toml From 48d35807be5a15038380bf6384fe6e980bbf4b77 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 10 Feb 2024 14:16:02 +0000 Subject: [PATCH 1545/3180] move recipes --- recipes/wip/{ => math}/fend/recipe.toml | 0 recipes/wip/{ => math}/kalc/recipe.toml | 0 recipes/wip/{ => math}/kalker/recipe.toml | 0 recipes/wip/{ => net}/tor-browser/recipe.toml | 0 recipes/wip/{ => net}/tor/recipe.toml | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => math}/fend/recipe.toml (100%) rename recipes/wip/{ => math}/kalc/recipe.toml (100%) rename recipes/wip/{ => math}/kalker/recipe.toml (100%) rename recipes/wip/{ => net}/tor-browser/recipe.toml (100%) rename recipes/wip/{ => net}/tor/recipe.toml (100%) diff --git a/recipes/wip/fend/recipe.toml b/recipes/wip/math/fend/recipe.toml similarity index 100% rename from recipes/wip/fend/recipe.toml rename to recipes/wip/math/fend/recipe.toml diff --git a/recipes/wip/kalc/recipe.toml b/recipes/wip/math/kalc/recipe.toml similarity index 100% rename from recipes/wip/kalc/recipe.toml rename to recipes/wip/math/kalc/recipe.toml diff --git a/recipes/wip/kalker/recipe.toml b/recipes/wip/math/kalker/recipe.toml similarity index 100% rename from recipes/wip/kalker/recipe.toml rename to recipes/wip/math/kalker/recipe.toml diff --git a/recipes/wip/tor-browser/recipe.toml b/recipes/wip/net/tor-browser/recipe.toml similarity index 100% rename from recipes/wip/tor-browser/recipe.toml rename to recipes/wip/net/tor-browser/recipe.toml diff --git a/recipes/wip/tor/recipe.toml b/recipes/wip/net/tor/recipe.toml similarity index 100% rename from recipes/wip/tor/recipe.toml rename to recipes/wip/net/tor/recipe.toml From 9b2d97bf1a31bba8cea89edf69395b177b93d151 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 10 Feb 2024 15:04:19 +0000 Subject: [PATCH 1546/3180] move recipes --- recipes/wip/{ => 7-zip}/aim/recipe.toml | 0 recipes/wip/{ => 7-zip}/amp/recipe.toml | 0 recipes/wip/{ => 7-zip}/ani-cli/recipe.toml | 0 recipes/wip/{ => 7-zip}/ani-skip/recipe.toml | 0 recipes/wip/{ => 7-zip}/aria2/recipe.toml | 0 recipes/wip/{ => 7-zip}/ascii-gen/recipe.toml | 0 recipes/wip/{ => 7-zip}/asciinema-rs/recipe.toml | 0 recipes/wip/{ => 7-zip}/ast-grep/recipe.toml | 0 recipes/wip/{ => 7-zip}/b3sum/recipe.toml | 0 recipes/wip/{ => 7-zip}/bat/recipe.toml | 0 recipes/wip/{ => 7-zip}/battop/recipe.toml | 0 recipes/wip/{ => 7-zip}/binserve/recipe.toml | 0 recipes/wip/{ => 7-zip}/blender-lts/recipe.toml | 0 recipes/wip/{ => 7-zip}/blender/recipe.toml | 0 recipes/wip/{ => 7-zip}/blockish-caca/recipe.toml | 0 recipes/wip/{ => 7-zip}/bottles/recipe.toml | 0 recipes/wip/{ => 7-zip}/bottom/recipe.toml | 0 recipes/wip/{ => 7-zip}/carbonyl/recipe.toml | 0 recipes/wip/{ => 7-zip}/cava/recipe.toml | 0 recipes/wip/{ => 7-zip}/chafa/recipe.toml | 0 recipes/wip/{ => 7-zip}/chuck/recipe.toml | 0 recipes/wip/{ => 7-zip}/clipcat/recipe.toml | 0 recipes/wip/{ => 7-zip}/clipshare-desktop/recipe.toml | 0 recipes/wip/{ => 7-zip}/clipshare-server/recipe.toml | 0 recipes/wip/{ => 7-zip}/conky/recipe.toml | 0 recipes/wip/{ => 7-zip}/converseen/recipe.toml | 0 recipes/wip/{ => 7-zip}/cpu-x/recipe.toml | 0 recipes/wip/{ => 7-zip}/czkawka/recipe.toml | 0 recipes/wip/{ => 7-zip}/daktilo/recipe.toml | 0 recipes/wip/{ => 7-zip}/delta/recipe.toml | 0 recipes/wip/{ => 7-zip}/dutree/recipe.toml | 0 recipes/wip/{ => 7-zip}/elfutils/recipe.toml | 0 recipes/wip/{ => 7-zip}/emacs-nox/recipe.toml | 0 recipes/wip/{ => 7-zip}/emacs-pgtk/recipe.toml | 0 recipes/wip/{ => 7-zip}/erdtree/recipe.toml | 0 recipes/wip/{ => 7-zip}/espanso/recipe.toml | 0 recipes/wip/{ => 7-zip}/eza/recipe.toml | 0 recipes/wip/{ => 7-zip}/felix/recipe.toml | 0 recipes/wip/{ => 7-zip}/ffizer/recipe.toml | 0 recipes/wip/{ => 7-zip}/flameshot/recipe.toml | 0 recipes/wip/{ => 7-zip}/freshfetch/recipe.toml | 0 recipes/wip/{ => 7-zip}/gimp/recipe.toml | 0 recipes/wip/{ => 7-zip}/glsl-viewer/recipe.toml | 0 recipes/wip/{ => 7-zip}/gnupg-lts/recipe.toml | 0 recipes/wip/{ => 7-zip}/gnupg/recipe.toml | 0 recipes/wip/{ => 7-zip}/hgrep/recipe.toml | 0 recipes/wip/{ => 7-zip}/hx/recipe.toml | 0 recipes/wip/{ => 7-zip}/hyperfine/recipe.toml | 0 recipes/wip/{ => 7-zip}/igrep/recipe.toml | 0 recipes/wip/{ => 7-zip}/imager/recipe.toml | 0 recipes/wip/{ => 7-zip}/just/recipe.toml | 0 recipes/wip/{ => 7-zip}/keepassxc/recipe.toml | 0 recipes/wip/{ => 7-zip}/kibi/recipe.toml | 0 recipes/wip/{ => 7-zip}/kodi/recipe.toml | 0 recipes/wip/{ => 7-zip}/krita/recipe.toml | 0 recipes/wip/{ => 7-zip}/lcs-image-diff/recipe.toml | 0 recipes/wip/{ => 7-zip}/lemmeknow/recipe.toml | 0 recipes/wip/{ => 7-zip}/libreoffice/recipe.toml | 0 recipes/wip/{ => 7-zip}/lsd/recipe.toml | 0 recipes/wip/{ => 7-zip}/lsix/recipe.toml | 0 recipes/wip/{ => 7-zip}/macchina/recipe.toml | 0 recipes/wip/{ => 7-zip}/magic-wormhole-rs/recipe.toml | 0 recipes/wip/{ => 7-zip}/mandy/recipe.toml | 0 recipes/wip/{ => 7-zip}/mangohud/recipe.toml | 0 recipes/wip/{ => 7-zip}/mdbook/recipe.toml | 0 recipes/wip/{ => 7-zip}/mercurial/recipe.toml | 0 recipes/wip/{ => 7-zip}/miniaudicle/recipe.toml | 0 recipes/wip/{ => 7-zip}/mosh/recipe.toml | 0 recipes/wip/{ => 7-zip}/mprocs/recipe.toml | 0 recipes/wip/{ => 7-zip}/neofetch/recipe.toml | 0 recipes/wip/{ => 7-zip}/neovim/recipe.toml | 0 recipes/wip/{ => 7-zip}/news-rs/recipe.toml | 0 recipes/wip/{ => 7-zip}/nginx/recipe.toml | 0 recipes/wip/{ => 7-zip}/nix/recipe.toml | 0 recipes/wip/{ => 7-zip}/obs-studio/recipe.toml | 0 recipes/wip/{ => 7-zip}/odin2/recipe.toml | 0 recipes/wip/{ => 7-zip}/onefetch/recipe.toml | 0 recipes/wip/{ => 7-zip}/oranda/recipe.toml | 0 recipes/wip/{ => 7-zip}/orchaldir-texture-generator/recipe.toml | 0 recipes/wip/{ => 7-zip}/orz/recipe.toml | 0 recipes/wip/{ => 7-zip}/ouch/recipe.toml | 0 recipes/wip/{ => 7-zip}/oxipng/recipe.toml | 0 recipes/wip/{ => 7-zip}/parabolic/recipe.toml | 0 recipes/wip/{ => 7-zip}/pciutils/recipe.toml | 0 recipes/wip/{ => 7-zip}/pdbview/recipe.toml | 0 recipes/wip/{ => 7-zip}/pdu/recipe.toml | 0 recipes/wip/{ => 7-zip}/pidgin/recipe.toml | 0 recipes/wip/{ => 7-zip}/pipr/recipe.toml | 0 recipes/wip/{ => 7-zip}/pixcil/recipe.toml | 0 recipes/wip/{ => 7-zip}/pixelsort/recipe.toml | 0 recipes/wip/{ => 7-zip}/please/recipe.toml | 0 recipes/wip/{ => 7-zip}/presenterm/recipe.toml | 0 recipes/wip/{ => 7-zip}/process-viewer/recipe.toml | 0 recipes/wip/{ => 7-zip}/procs/recipe.toml | 0 recipes/wip/{ => 7-zip}/pueue/recipe.toml | 0 recipes/wip/{ => 7-zip}/qalculate-gtk/recipe.toml | 0 recipes/wip/{ => 7-zip}/qrrs/recipe.toml | 0 recipes/wip/{ => 7-zip}/repgrep/recipe.toml | 0 recipes/wip/{ => 7-zip}/rioterm/recipe.toml | 0 recipes/wip/{ => 7-zip}/rip/recipe.toml | 0 recipes/wip/{ => 7-zip}/ripasso/recipe.toml | 0 recipes/wip/{ => 7-zip}/ripsecrets/recipe.toml | 0 recipes/wip/{ => 7-zip}/rnr/recipe.toml | 0 recipes/wip/{ => 7-zip}/rsync/recipe.toml | 0 recipes/wip/{ => 7-zip}/rtorrent/recipe.toml | 0 recipes/wip/{ => 7-zip}/run/recipe.toml | 0 recipes/wip/{ => 7-zip}/ruplacer/recipe.toml | 0 recipes/wip/{ => 7-zip}/rustlings/recipe.toml | 0 recipes/wip/{ => 7-zip}/rustytube/recipe.toml | 0 recipes/wip/{ => 7-zip}/scribus/recipe.toml | 0 recipes/wip/{ => 7-zip}/shellfirm/recipe.toml | 0 recipes/wip/{ => 7-zip}/shokunin/recipe.toml | 0 recipes/wip/{ => 7-zip}/spacer/recipe.toml | 0 recipes/wip/{ => 7-zip}/sshx/recipe.toml | 0 recipes/wip/{ => 7-zip}/starship/recipe.toml | 0 recipes/wip/{ => 7-zip}/stellarium/recipe.toml | 0 recipes/wip/{ => 7-zip}/stress-ng/recipe.toml | 0 recipes/wip/{ => 7-zip}/sudo-rs/recipe.toml | 0 recipes/wip/{ => 7-zip}/svg2pdf/recipe.toml | 0 recipes/wip/{ => 7-zip}/swc/recipe.toml | 0 recipes/wip/{ => 7-zip}/sws/recipe.toml | 0 recipes/wip/{ => 7-zip}/t-rec/recipe.toml | 0 recipes/wip/{ => 7-zip}/taskserver/recipe.toml | 0 recipes/wip/{ => 7-zip}/taskwarrior-tui/recipe.toml | 0 recipes/wip/{ => 7-zip}/taskwarrior/recipe.toml | 0 recipes/wip/{ => 7-zip}/tauro-monitor/recipe.toml | 0 recipes/wip/{ => 7-zip}/tts-tui/recipe.toml | 0 recipes/wip/{ => 7-zip}/ttyper/recipe.toml | 0 recipes/wip/{ => 7-zip}/tvix/recipe.toml | 0 recipes/wip/{ => 7-zip}/uget/recipe.toml | 0 recipes/wip/{ => 7-zip}/upscaler/recipe.toml | 0 recipes/wip/{ => 7-zip}/upx/recipe.toml | 0 recipes/wip/{ => 7-zip}/v86/recipe.toml | 0 recipes/wip/{ => 7-zip}/vincenzo/recipe.toml | 0 recipes/wip/{ => 7-zip}/watchexec/recipe.toml | 0 recipes/wip/{ => 7-zip}/wayshot/recipe.toml | 0 recipes/wip/{ => 7-zip}/wezterm/recipe.toml | 0 recipes/wip/{ => 7-zip}/wpaperd/recipe.toml | 0 recipes/wip/{ => 7-zip}/xcp/recipe.toml | 0 recipes/wip/{ => 7-zip}/xh/recipe.toml | 0 recipes/wip/{ => 7-zip}/xiu/recipe.toml | 0 recipes/wip/{ => 7-zip}/xorriso/recipe.toml | 0 recipes/wip/{ => 7-zip}/zellij/recipe.toml | 0 143 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => 7-zip}/aim/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/amp/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/ani-cli/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/ani-skip/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/aria2/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/ascii-gen/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/asciinema-rs/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/ast-grep/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/b3sum/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/bat/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/battop/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/binserve/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/blender-lts/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/blender/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/blockish-caca/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/bottles/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/bottom/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/carbonyl/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/cava/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/chafa/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/chuck/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/clipcat/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/clipshare-desktop/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/clipshare-server/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/conky/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/converseen/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/cpu-x/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/czkawka/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/daktilo/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/delta/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/dutree/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/elfutils/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/emacs-nox/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/emacs-pgtk/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/erdtree/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/espanso/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/eza/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/felix/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/ffizer/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/flameshot/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/freshfetch/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/gimp/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/glsl-viewer/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/gnupg-lts/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/gnupg/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/hgrep/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/hx/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/hyperfine/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/igrep/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/imager/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/just/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/keepassxc/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/kibi/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/kodi/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/krita/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/lcs-image-diff/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/lemmeknow/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/libreoffice/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/lsd/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/lsix/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/macchina/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/magic-wormhole-rs/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/mandy/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/mangohud/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/mdbook/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/mercurial/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/miniaudicle/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/mosh/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/mprocs/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/neofetch/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/neovim/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/news-rs/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/nginx/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/nix/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/obs-studio/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/odin2/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/onefetch/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/oranda/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/orchaldir-texture-generator/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/orz/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/ouch/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/oxipng/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/parabolic/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/pciutils/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/pdbview/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/pdu/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/pidgin/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/pipr/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/pixcil/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/pixelsort/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/please/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/presenterm/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/process-viewer/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/procs/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/pueue/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/qalculate-gtk/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/qrrs/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/repgrep/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/rioterm/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/rip/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/ripasso/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/ripsecrets/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/rnr/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/rsync/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/rtorrent/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/run/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/ruplacer/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/rustlings/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/rustytube/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/scribus/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/shellfirm/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/shokunin/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/spacer/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/sshx/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/starship/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/stellarium/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/stress-ng/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/sudo-rs/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/svg2pdf/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/swc/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/sws/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/t-rec/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/taskserver/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/taskwarrior-tui/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/taskwarrior/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/tauro-monitor/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/tts-tui/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/ttyper/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/tvix/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/uget/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/upscaler/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/upx/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/v86/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/vincenzo/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/watchexec/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/wayshot/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/wezterm/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/wpaperd/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/xcp/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/xh/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/xiu/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/xorriso/recipe.toml (100%) rename recipes/wip/{ => 7-zip}/zellij/recipe.toml (100%) diff --git a/recipes/wip/aim/recipe.toml b/recipes/wip/7-zip/aim/recipe.toml similarity index 100% rename from recipes/wip/aim/recipe.toml rename to recipes/wip/7-zip/aim/recipe.toml diff --git a/recipes/wip/amp/recipe.toml b/recipes/wip/7-zip/amp/recipe.toml similarity index 100% rename from recipes/wip/amp/recipe.toml rename to recipes/wip/7-zip/amp/recipe.toml diff --git a/recipes/wip/ani-cli/recipe.toml b/recipes/wip/7-zip/ani-cli/recipe.toml similarity index 100% rename from recipes/wip/ani-cli/recipe.toml rename to recipes/wip/7-zip/ani-cli/recipe.toml diff --git a/recipes/wip/ani-skip/recipe.toml b/recipes/wip/7-zip/ani-skip/recipe.toml similarity index 100% rename from recipes/wip/ani-skip/recipe.toml rename to recipes/wip/7-zip/ani-skip/recipe.toml diff --git a/recipes/wip/aria2/recipe.toml b/recipes/wip/7-zip/aria2/recipe.toml similarity index 100% rename from recipes/wip/aria2/recipe.toml rename to recipes/wip/7-zip/aria2/recipe.toml diff --git a/recipes/wip/ascii-gen/recipe.toml b/recipes/wip/7-zip/ascii-gen/recipe.toml similarity index 100% rename from recipes/wip/ascii-gen/recipe.toml rename to recipes/wip/7-zip/ascii-gen/recipe.toml diff --git a/recipes/wip/asciinema-rs/recipe.toml b/recipes/wip/7-zip/asciinema-rs/recipe.toml similarity index 100% rename from recipes/wip/asciinema-rs/recipe.toml rename to recipes/wip/7-zip/asciinema-rs/recipe.toml diff --git a/recipes/wip/ast-grep/recipe.toml b/recipes/wip/7-zip/ast-grep/recipe.toml similarity index 100% rename from recipes/wip/ast-grep/recipe.toml rename to recipes/wip/7-zip/ast-grep/recipe.toml diff --git a/recipes/wip/b3sum/recipe.toml b/recipes/wip/7-zip/b3sum/recipe.toml similarity index 100% rename from recipes/wip/b3sum/recipe.toml rename to recipes/wip/7-zip/b3sum/recipe.toml diff --git a/recipes/wip/bat/recipe.toml b/recipes/wip/7-zip/bat/recipe.toml similarity index 100% rename from recipes/wip/bat/recipe.toml rename to recipes/wip/7-zip/bat/recipe.toml diff --git a/recipes/wip/battop/recipe.toml b/recipes/wip/7-zip/battop/recipe.toml similarity index 100% rename from recipes/wip/battop/recipe.toml rename to recipes/wip/7-zip/battop/recipe.toml diff --git a/recipes/wip/binserve/recipe.toml b/recipes/wip/7-zip/binserve/recipe.toml similarity index 100% rename from recipes/wip/binserve/recipe.toml rename to recipes/wip/7-zip/binserve/recipe.toml diff --git a/recipes/wip/blender-lts/recipe.toml b/recipes/wip/7-zip/blender-lts/recipe.toml similarity index 100% rename from recipes/wip/blender-lts/recipe.toml rename to recipes/wip/7-zip/blender-lts/recipe.toml diff --git a/recipes/wip/blender/recipe.toml b/recipes/wip/7-zip/blender/recipe.toml similarity index 100% rename from recipes/wip/blender/recipe.toml rename to recipes/wip/7-zip/blender/recipe.toml diff --git a/recipes/wip/blockish-caca/recipe.toml b/recipes/wip/7-zip/blockish-caca/recipe.toml similarity index 100% rename from recipes/wip/blockish-caca/recipe.toml rename to recipes/wip/7-zip/blockish-caca/recipe.toml diff --git a/recipes/wip/bottles/recipe.toml b/recipes/wip/7-zip/bottles/recipe.toml similarity index 100% rename from recipes/wip/bottles/recipe.toml rename to recipes/wip/7-zip/bottles/recipe.toml diff --git a/recipes/wip/bottom/recipe.toml b/recipes/wip/7-zip/bottom/recipe.toml similarity index 100% rename from recipes/wip/bottom/recipe.toml rename to recipes/wip/7-zip/bottom/recipe.toml diff --git a/recipes/wip/carbonyl/recipe.toml b/recipes/wip/7-zip/carbonyl/recipe.toml similarity index 100% rename from recipes/wip/carbonyl/recipe.toml rename to recipes/wip/7-zip/carbonyl/recipe.toml diff --git a/recipes/wip/cava/recipe.toml b/recipes/wip/7-zip/cava/recipe.toml similarity index 100% rename from recipes/wip/cava/recipe.toml rename to recipes/wip/7-zip/cava/recipe.toml diff --git a/recipes/wip/chafa/recipe.toml b/recipes/wip/7-zip/chafa/recipe.toml similarity index 100% rename from recipes/wip/chafa/recipe.toml rename to recipes/wip/7-zip/chafa/recipe.toml diff --git a/recipes/wip/chuck/recipe.toml b/recipes/wip/7-zip/chuck/recipe.toml similarity index 100% rename from recipes/wip/chuck/recipe.toml rename to recipes/wip/7-zip/chuck/recipe.toml diff --git a/recipes/wip/clipcat/recipe.toml b/recipes/wip/7-zip/clipcat/recipe.toml similarity index 100% rename from recipes/wip/clipcat/recipe.toml rename to recipes/wip/7-zip/clipcat/recipe.toml diff --git a/recipes/wip/clipshare-desktop/recipe.toml b/recipes/wip/7-zip/clipshare-desktop/recipe.toml similarity index 100% rename from recipes/wip/clipshare-desktop/recipe.toml rename to recipes/wip/7-zip/clipshare-desktop/recipe.toml diff --git a/recipes/wip/clipshare-server/recipe.toml b/recipes/wip/7-zip/clipshare-server/recipe.toml similarity index 100% rename from recipes/wip/clipshare-server/recipe.toml rename to recipes/wip/7-zip/clipshare-server/recipe.toml diff --git a/recipes/wip/conky/recipe.toml b/recipes/wip/7-zip/conky/recipe.toml similarity index 100% rename from recipes/wip/conky/recipe.toml rename to recipes/wip/7-zip/conky/recipe.toml diff --git a/recipes/wip/converseen/recipe.toml b/recipes/wip/7-zip/converseen/recipe.toml similarity index 100% rename from recipes/wip/converseen/recipe.toml rename to recipes/wip/7-zip/converseen/recipe.toml diff --git a/recipes/wip/cpu-x/recipe.toml b/recipes/wip/7-zip/cpu-x/recipe.toml similarity index 100% rename from recipes/wip/cpu-x/recipe.toml rename to recipes/wip/7-zip/cpu-x/recipe.toml diff --git a/recipes/wip/czkawka/recipe.toml b/recipes/wip/7-zip/czkawka/recipe.toml similarity index 100% rename from recipes/wip/czkawka/recipe.toml rename to recipes/wip/7-zip/czkawka/recipe.toml diff --git a/recipes/wip/daktilo/recipe.toml b/recipes/wip/7-zip/daktilo/recipe.toml similarity index 100% rename from recipes/wip/daktilo/recipe.toml rename to recipes/wip/7-zip/daktilo/recipe.toml diff --git a/recipes/wip/delta/recipe.toml b/recipes/wip/7-zip/delta/recipe.toml similarity index 100% rename from recipes/wip/delta/recipe.toml rename to recipes/wip/7-zip/delta/recipe.toml diff --git a/recipes/wip/dutree/recipe.toml b/recipes/wip/7-zip/dutree/recipe.toml similarity index 100% rename from recipes/wip/dutree/recipe.toml rename to recipes/wip/7-zip/dutree/recipe.toml diff --git a/recipes/wip/elfutils/recipe.toml b/recipes/wip/7-zip/elfutils/recipe.toml similarity index 100% rename from recipes/wip/elfutils/recipe.toml rename to recipes/wip/7-zip/elfutils/recipe.toml diff --git a/recipes/wip/emacs-nox/recipe.toml b/recipes/wip/7-zip/emacs-nox/recipe.toml similarity index 100% rename from recipes/wip/emacs-nox/recipe.toml rename to recipes/wip/7-zip/emacs-nox/recipe.toml diff --git a/recipes/wip/emacs-pgtk/recipe.toml b/recipes/wip/7-zip/emacs-pgtk/recipe.toml similarity index 100% rename from recipes/wip/emacs-pgtk/recipe.toml rename to recipes/wip/7-zip/emacs-pgtk/recipe.toml diff --git a/recipes/wip/erdtree/recipe.toml b/recipes/wip/7-zip/erdtree/recipe.toml similarity index 100% rename from recipes/wip/erdtree/recipe.toml rename to recipes/wip/7-zip/erdtree/recipe.toml diff --git a/recipes/wip/espanso/recipe.toml b/recipes/wip/7-zip/espanso/recipe.toml similarity index 100% rename from recipes/wip/espanso/recipe.toml rename to recipes/wip/7-zip/espanso/recipe.toml diff --git a/recipes/wip/eza/recipe.toml b/recipes/wip/7-zip/eza/recipe.toml similarity index 100% rename from recipes/wip/eza/recipe.toml rename to recipes/wip/7-zip/eza/recipe.toml diff --git a/recipes/wip/felix/recipe.toml b/recipes/wip/7-zip/felix/recipe.toml similarity index 100% rename from recipes/wip/felix/recipe.toml rename to recipes/wip/7-zip/felix/recipe.toml diff --git a/recipes/wip/ffizer/recipe.toml b/recipes/wip/7-zip/ffizer/recipe.toml similarity index 100% rename from recipes/wip/ffizer/recipe.toml rename to recipes/wip/7-zip/ffizer/recipe.toml diff --git a/recipes/wip/flameshot/recipe.toml b/recipes/wip/7-zip/flameshot/recipe.toml similarity index 100% rename from recipes/wip/flameshot/recipe.toml rename to recipes/wip/7-zip/flameshot/recipe.toml diff --git a/recipes/wip/freshfetch/recipe.toml b/recipes/wip/7-zip/freshfetch/recipe.toml similarity index 100% rename from recipes/wip/freshfetch/recipe.toml rename to recipes/wip/7-zip/freshfetch/recipe.toml diff --git a/recipes/wip/gimp/recipe.toml b/recipes/wip/7-zip/gimp/recipe.toml similarity index 100% rename from recipes/wip/gimp/recipe.toml rename to recipes/wip/7-zip/gimp/recipe.toml diff --git a/recipes/wip/glsl-viewer/recipe.toml b/recipes/wip/7-zip/glsl-viewer/recipe.toml similarity index 100% rename from recipes/wip/glsl-viewer/recipe.toml rename to recipes/wip/7-zip/glsl-viewer/recipe.toml diff --git a/recipes/wip/gnupg-lts/recipe.toml b/recipes/wip/7-zip/gnupg-lts/recipe.toml similarity index 100% rename from recipes/wip/gnupg-lts/recipe.toml rename to recipes/wip/7-zip/gnupg-lts/recipe.toml diff --git a/recipes/wip/gnupg/recipe.toml b/recipes/wip/7-zip/gnupg/recipe.toml similarity index 100% rename from recipes/wip/gnupg/recipe.toml rename to recipes/wip/7-zip/gnupg/recipe.toml diff --git a/recipes/wip/hgrep/recipe.toml b/recipes/wip/7-zip/hgrep/recipe.toml similarity index 100% rename from recipes/wip/hgrep/recipe.toml rename to recipes/wip/7-zip/hgrep/recipe.toml diff --git a/recipes/wip/hx/recipe.toml b/recipes/wip/7-zip/hx/recipe.toml similarity index 100% rename from recipes/wip/hx/recipe.toml rename to recipes/wip/7-zip/hx/recipe.toml diff --git a/recipes/wip/hyperfine/recipe.toml b/recipes/wip/7-zip/hyperfine/recipe.toml similarity index 100% rename from recipes/wip/hyperfine/recipe.toml rename to recipes/wip/7-zip/hyperfine/recipe.toml diff --git a/recipes/wip/igrep/recipe.toml b/recipes/wip/7-zip/igrep/recipe.toml similarity index 100% rename from recipes/wip/igrep/recipe.toml rename to recipes/wip/7-zip/igrep/recipe.toml diff --git a/recipes/wip/imager/recipe.toml b/recipes/wip/7-zip/imager/recipe.toml similarity index 100% rename from recipes/wip/imager/recipe.toml rename to recipes/wip/7-zip/imager/recipe.toml diff --git a/recipes/wip/just/recipe.toml b/recipes/wip/7-zip/just/recipe.toml similarity index 100% rename from recipes/wip/just/recipe.toml rename to recipes/wip/7-zip/just/recipe.toml diff --git a/recipes/wip/keepassxc/recipe.toml b/recipes/wip/7-zip/keepassxc/recipe.toml similarity index 100% rename from recipes/wip/keepassxc/recipe.toml rename to recipes/wip/7-zip/keepassxc/recipe.toml diff --git a/recipes/wip/kibi/recipe.toml b/recipes/wip/7-zip/kibi/recipe.toml similarity index 100% rename from recipes/wip/kibi/recipe.toml rename to recipes/wip/7-zip/kibi/recipe.toml diff --git a/recipes/wip/kodi/recipe.toml b/recipes/wip/7-zip/kodi/recipe.toml similarity index 100% rename from recipes/wip/kodi/recipe.toml rename to recipes/wip/7-zip/kodi/recipe.toml diff --git a/recipes/wip/krita/recipe.toml b/recipes/wip/7-zip/krita/recipe.toml similarity index 100% rename from recipes/wip/krita/recipe.toml rename to recipes/wip/7-zip/krita/recipe.toml diff --git a/recipes/wip/lcs-image-diff/recipe.toml b/recipes/wip/7-zip/lcs-image-diff/recipe.toml similarity index 100% rename from recipes/wip/lcs-image-diff/recipe.toml rename to recipes/wip/7-zip/lcs-image-diff/recipe.toml diff --git a/recipes/wip/lemmeknow/recipe.toml b/recipes/wip/7-zip/lemmeknow/recipe.toml similarity index 100% rename from recipes/wip/lemmeknow/recipe.toml rename to recipes/wip/7-zip/lemmeknow/recipe.toml diff --git a/recipes/wip/libreoffice/recipe.toml b/recipes/wip/7-zip/libreoffice/recipe.toml similarity index 100% rename from recipes/wip/libreoffice/recipe.toml rename to recipes/wip/7-zip/libreoffice/recipe.toml diff --git a/recipes/wip/lsd/recipe.toml b/recipes/wip/7-zip/lsd/recipe.toml similarity index 100% rename from recipes/wip/lsd/recipe.toml rename to recipes/wip/7-zip/lsd/recipe.toml diff --git a/recipes/wip/lsix/recipe.toml b/recipes/wip/7-zip/lsix/recipe.toml similarity index 100% rename from recipes/wip/lsix/recipe.toml rename to recipes/wip/7-zip/lsix/recipe.toml diff --git a/recipes/wip/macchina/recipe.toml b/recipes/wip/7-zip/macchina/recipe.toml similarity index 100% rename from recipes/wip/macchina/recipe.toml rename to recipes/wip/7-zip/macchina/recipe.toml diff --git a/recipes/wip/magic-wormhole-rs/recipe.toml b/recipes/wip/7-zip/magic-wormhole-rs/recipe.toml similarity index 100% rename from recipes/wip/magic-wormhole-rs/recipe.toml rename to recipes/wip/7-zip/magic-wormhole-rs/recipe.toml diff --git a/recipes/wip/mandy/recipe.toml b/recipes/wip/7-zip/mandy/recipe.toml similarity index 100% rename from recipes/wip/mandy/recipe.toml rename to recipes/wip/7-zip/mandy/recipe.toml diff --git a/recipes/wip/mangohud/recipe.toml b/recipes/wip/7-zip/mangohud/recipe.toml similarity index 100% rename from recipes/wip/mangohud/recipe.toml rename to recipes/wip/7-zip/mangohud/recipe.toml diff --git a/recipes/wip/mdbook/recipe.toml b/recipes/wip/7-zip/mdbook/recipe.toml similarity index 100% rename from recipes/wip/mdbook/recipe.toml rename to recipes/wip/7-zip/mdbook/recipe.toml diff --git a/recipes/wip/mercurial/recipe.toml b/recipes/wip/7-zip/mercurial/recipe.toml similarity index 100% rename from recipes/wip/mercurial/recipe.toml rename to recipes/wip/7-zip/mercurial/recipe.toml diff --git a/recipes/wip/miniaudicle/recipe.toml b/recipes/wip/7-zip/miniaudicle/recipe.toml similarity index 100% rename from recipes/wip/miniaudicle/recipe.toml rename to recipes/wip/7-zip/miniaudicle/recipe.toml diff --git a/recipes/wip/mosh/recipe.toml b/recipes/wip/7-zip/mosh/recipe.toml similarity index 100% rename from recipes/wip/mosh/recipe.toml rename to recipes/wip/7-zip/mosh/recipe.toml diff --git a/recipes/wip/mprocs/recipe.toml b/recipes/wip/7-zip/mprocs/recipe.toml similarity index 100% rename from recipes/wip/mprocs/recipe.toml rename to recipes/wip/7-zip/mprocs/recipe.toml diff --git a/recipes/wip/neofetch/recipe.toml b/recipes/wip/7-zip/neofetch/recipe.toml similarity index 100% rename from recipes/wip/neofetch/recipe.toml rename to recipes/wip/7-zip/neofetch/recipe.toml diff --git a/recipes/wip/neovim/recipe.toml b/recipes/wip/7-zip/neovim/recipe.toml similarity index 100% rename from recipes/wip/neovim/recipe.toml rename to recipes/wip/7-zip/neovim/recipe.toml diff --git a/recipes/wip/news-rs/recipe.toml b/recipes/wip/7-zip/news-rs/recipe.toml similarity index 100% rename from recipes/wip/news-rs/recipe.toml rename to recipes/wip/7-zip/news-rs/recipe.toml diff --git a/recipes/wip/nginx/recipe.toml b/recipes/wip/7-zip/nginx/recipe.toml similarity index 100% rename from recipes/wip/nginx/recipe.toml rename to recipes/wip/7-zip/nginx/recipe.toml diff --git a/recipes/wip/nix/recipe.toml b/recipes/wip/7-zip/nix/recipe.toml similarity index 100% rename from recipes/wip/nix/recipe.toml rename to recipes/wip/7-zip/nix/recipe.toml diff --git a/recipes/wip/obs-studio/recipe.toml b/recipes/wip/7-zip/obs-studio/recipe.toml similarity index 100% rename from recipes/wip/obs-studio/recipe.toml rename to recipes/wip/7-zip/obs-studio/recipe.toml diff --git a/recipes/wip/odin2/recipe.toml b/recipes/wip/7-zip/odin2/recipe.toml similarity index 100% rename from recipes/wip/odin2/recipe.toml rename to recipes/wip/7-zip/odin2/recipe.toml diff --git a/recipes/wip/onefetch/recipe.toml b/recipes/wip/7-zip/onefetch/recipe.toml similarity index 100% rename from recipes/wip/onefetch/recipe.toml rename to recipes/wip/7-zip/onefetch/recipe.toml diff --git a/recipes/wip/oranda/recipe.toml b/recipes/wip/7-zip/oranda/recipe.toml similarity index 100% rename from recipes/wip/oranda/recipe.toml rename to recipes/wip/7-zip/oranda/recipe.toml diff --git a/recipes/wip/orchaldir-texture-generator/recipe.toml b/recipes/wip/7-zip/orchaldir-texture-generator/recipe.toml similarity index 100% rename from recipes/wip/orchaldir-texture-generator/recipe.toml rename to recipes/wip/7-zip/orchaldir-texture-generator/recipe.toml diff --git a/recipes/wip/orz/recipe.toml b/recipes/wip/7-zip/orz/recipe.toml similarity index 100% rename from recipes/wip/orz/recipe.toml rename to recipes/wip/7-zip/orz/recipe.toml diff --git a/recipes/wip/ouch/recipe.toml b/recipes/wip/7-zip/ouch/recipe.toml similarity index 100% rename from recipes/wip/ouch/recipe.toml rename to recipes/wip/7-zip/ouch/recipe.toml diff --git a/recipes/wip/oxipng/recipe.toml b/recipes/wip/7-zip/oxipng/recipe.toml similarity index 100% rename from recipes/wip/oxipng/recipe.toml rename to recipes/wip/7-zip/oxipng/recipe.toml diff --git a/recipes/wip/parabolic/recipe.toml b/recipes/wip/7-zip/parabolic/recipe.toml similarity index 100% rename from recipes/wip/parabolic/recipe.toml rename to recipes/wip/7-zip/parabolic/recipe.toml diff --git a/recipes/wip/pciutils/recipe.toml b/recipes/wip/7-zip/pciutils/recipe.toml similarity index 100% rename from recipes/wip/pciutils/recipe.toml rename to recipes/wip/7-zip/pciutils/recipe.toml diff --git a/recipes/wip/pdbview/recipe.toml b/recipes/wip/7-zip/pdbview/recipe.toml similarity index 100% rename from recipes/wip/pdbview/recipe.toml rename to recipes/wip/7-zip/pdbview/recipe.toml diff --git a/recipes/wip/pdu/recipe.toml b/recipes/wip/7-zip/pdu/recipe.toml similarity index 100% rename from recipes/wip/pdu/recipe.toml rename to recipes/wip/7-zip/pdu/recipe.toml diff --git a/recipes/wip/pidgin/recipe.toml b/recipes/wip/7-zip/pidgin/recipe.toml similarity index 100% rename from recipes/wip/pidgin/recipe.toml rename to recipes/wip/7-zip/pidgin/recipe.toml diff --git a/recipes/wip/pipr/recipe.toml b/recipes/wip/7-zip/pipr/recipe.toml similarity index 100% rename from recipes/wip/pipr/recipe.toml rename to recipes/wip/7-zip/pipr/recipe.toml diff --git a/recipes/wip/pixcil/recipe.toml b/recipes/wip/7-zip/pixcil/recipe.toml similarity index 100% rename from recipes/wip/pixcil/recipe.toml rename to recipes/wip/7-zip/pixcil/recipe.toml diff --git a/recipes/wip/pixelsort/recipe.toml b/recipes/wip/7-zip/pixelsort/recipe.toml similarity index 100% rename from recipes/wip/pixelsort/recipe.toml rename to recipes/wip/7-zip/pixelsort/recipe.toml diff --git a/recipes/wip/please/recipe.toml b/recipes/wip/7-zip/please/recipe.toml similarity index 100% rename from recipes/wip/please/recipe.toml rename to recipes/wip/7-zip/please/recipe.toml diff --git a/recipes/wip/presenterm/recipe.toml b/recipes/wip/7-zip/presenterm/recipe.toml similarity index 100% rename from recipes/wip/presenterm/recipe.toml rename to recipes/wip/7-zip/presenterm/recipe.toml diff --git a/recipes/wip/process-viewer/recipe.toml b/recipes/wip/7-zip/process-viewer/recipe.toml similarity index 100% rename from recipes/wip/process-viewer/recipe.toml rename to recipes/wip/7-zip/process-viewer/recipe.toml diff --git a/recipes/wip/procs/recipe.toml b/recipes/wip/7-zip/procs/recipe.toml similarity index 100% rename from recipes/wip/procs/recipe.toml rename to recipes/wip/7-zip/procs/recipe.toml diff --git a/recipes/wip/pueue/recipe.toml b/recipes/wip/7-zip/pueue/recipe.toml similarity index 100% rename from recipes/wip/pueue/recipe.toml rename to recipes/wip/7-zip/pueue/recipe.toml diff --git a/recipes/wip/qalculate-gtk/recipe.toml b/recipes/wip/7-zip/qalculate-gtk/recipe.toml similarity index 100% rename from recipes/wip/qalculate-gtk/recipe.toml rename to recipes/wip/7-zip/qalculate-gtk/recipe.toml diff --git a/recipes/wip/qrrs/recipe.toml b/recipes/wip/7-zip/qrrs/recipe.toml similarity index 100% rename from recipes/wip/qrrs/recipe.toml rename to recipes/wip/7-zip/qrrs/recipe.toml diff --git a/recipes/wip/repgrep/recipe.toml b/recipes/wip/7-zip/repgrep/recipe.toml similarity index 100% rename from recipes/wip/repgrep/recipe.toml rename to recipes/wip/7-zip/repgrep/recipe.toml diff --git a/recipes/wip/rioterm/recipe.toml b/recipes/wip/7-zip/rioterm/recipe.toml similarity index 100% rename from recipes/wip/rioterm/recipe.toml rename to recipes/wip/7-zip/rioterm/recipe.toml diff --git a/recipes/wip/rip/recipe.toml b/recipes/wip/7-zip/rip/recipe.toml similarity index 100% rename from recipes/wip/rip/recipe.toml rename to recipes/wip/7-zip/rip/recipe.toml diff --git a/recipes/wip/ripasso/recipe.toml b/recipes/wip/7-zip/ripasso/recipe.toml similarity index 100% rename from recipes/wip/ripasso/recipe.toml rename to recipes/wip/7-zip/ripasso/recipe.toml diff --git a/recipes/wip/ripsecrets/recipe.toml b/recipes/wip/7-zip/ripsecrets/recipe.toml similarity index 100% rename from recipes/wip/ripsecrets/recipe.toml rename to recipes/wip/7-zip/ripsecrets/recipe.toml diff --git a/recipes/wip/rnr/recipe.toml b/recipes/wip/7-zip/rnr/recipe.toml similarity index 100% rename from recipes/wip/rnr/recipe.toml rename to recipes/wip/7-zip/rnr/recipe.toml diff --git a/recipes/wip/rsync/recipe.toml b/recipes/wip/7-zip/rsync/recipe.toml similarity index 100% rename from recipes/wip/rsync/recipe.toml rename to recipes/wip/7-zip/rsync/recipe.toml diff --git a/recipes/wip/rtorrent/recipe.toml b/recipes/wip/7-zip/rtorrent/recipe.toml similarity index 100% rename from recipes/wip/rtorrent/recipe.toml rename to recipes/wip/7-zip/rtorrent/recipe.toml diff --git a/recipes/wip/run/recipe.toml b/recipes/wip/7-zip/run/recipe.toml similarity index 100% rename from recipes/wip/run/recipe.toml rename to recipes/wip/7-zip/run/recipe.toml diff --git a/recipes/wip/ruplacer/recipe.toml b/recipes/wip/7-zip/ruplacer/recipe.toml similarity index 100% rename from recipes/wip/ruplacer/recipe.toml rename to recipes/wip/7-zip/ruplacer/recipe.toml diff --git a/recipes/wip/rustlings/recipe.toml b/recipes/wip/7-zip/rustlings/recipe.toml similarity index 100% rename from recipes/wip/rustlings/recipe.toml rename to recipes/wip/7-zip/rustlings/recipe.toml diff --git a/recipes/wip/rustytube/recipe.toml b/recipes/wip/7-zip/rustytube/recipe.toml similarity index 100% rename from recipes/wip/rustytube/recipe.toml rename to recipes/wip/7-zip/rustytube/recipe.toml diff --git a/recipes/wip/scribus/recipe.toml b/recipes/wip/7-zip/scribus/recipe.toml similarity index 100% rename from recipes/wip/scribus/recipe.toml rename to recipes/wip/7-zip/scribus/recipe.toml diff --git a/recipes/wip/shellfirm/recipe.toml b/recipes/wip/7-zip/shellfirm/recipe.toml similarity index 100% rename from recipes/wip/shellfirm/recipe.toml rename to recipes/wip/7-zip/shellfirm/recipe.toml diff --git a/recipes/wip/shokunin/recipe.toml b/recipes/wip/7-zip/shokunin/recipe.toml similarity index 100% rename from recipes/wip/shokunin/recipe.toml rename to recipes/wip/7-zip/shokunin/recipe.toml diff --git a/recipes/wip/spacer/recipe.toml b/recipes/wip/7-zip/spacer/recipe.toml similarity index 100% rename from recipes/wip/spacer/recipe.toml rename to recipes/wip/7-zip/spacer/recipe.toml diff --git a/recipes/wip/sshx/recipe.toml b/recipes/wip/7-zip/sshx/recipe.toml similarity index 100% rename from recipes/wip/sshx/recipe.toml rename to recipes/wip/7-zip/sshx/recipe.toml diff --git a/recipes/wip/starship/recipe.toml b/recipes/wip/7-zip/starship/recipe.toml similarity index 100% rename from recipes/wip/starship/recipe.toml rename to recipes/wip/7-zip/starship/recipe.toml diff --git a/recipes/wip/stellarium/recipe.toml b/recipes/wip/7-zip/stellarium/recipe.toml similarity index 100% rename from recipes/wip/stellarium/recipe.toml rename to recipes/wip/7-zip/stellarium/recipe.toml diff --git a/recipes/wip/stress-ng/recipe.toml b/recipes/wip/7-zip/stress-ng/recipe.toml similarity index 100% rename from recipes/wip/stress-ng/recipe.toml rename to recipes/wip/7-zip/stress-ng/recipe.toml diff --git a/recipes/wip/sudo-rs/recipe.toml b/recipes/wip/7-zip/sudo-rs/recipe.toml similarity index 100% rename from recipes/wip/sudo-rs/recipe.toml rename to recipes/wip/7-zip/sudo-rs/recipe.toml diff --git a/recipes/wip/svg2pdf/recipe.toml b/recipes/wip/7-zip/svg2pdf/recipe.toml similarity index 100% rename from recipes/wip/svg2pdf/recipe.toml rename to recipes/wip/7-zip/svg2pdf/recipe.toml diff --git a/recipes/wip/swc/recipe.toml b/recipes/wip/7-zip/swc/recipe.toml similarity index 100% rename from recipes/wip/swc/recipe.toml rename to recipes/wip/7-zip/swc/recipe.toml diff --git a/recipes/wip/sws/recipe.toml b/recipes/wip/7-zip/sws/recipe.toml similarity index 100% rename from recipes/wip/sws/recipe.toml rename to recipes/wip/7-zip/sws/recipe.toml diff --git a/recipes/wip/t-rec/recipe.toml b/recipes/wip/7-zip/t-rec/recipe.toml similarity index 100% rename from recipes/wip/t-rec/recipe.toml rename to recipes/wip/7-zip/t-rec/recipe.toml diff --git a/recipes/wip/taskserver/recipe.toml b/recipes/wip/7-zip/taskserver/recipe.toml similarity index 100% rename from recipes/wip/taskserver/recipe.toml rename to recipes/wip/7-zip/taskserver/recipe.toml diff --git a/recipes/wip/taskwarrior-tui/recipe.toml b/recipes/wip/7-zip/taskwarrior-tui/recipe.toml similarity index 100% rename from recipes/wip/taskwarrior-tui/recipe.toml rename to recipes/wip/7-zip/taskwarrior-tui/recipe.toml diff --git a/recipes/wip/taskwarrior/recipe.toml b/recipes/wip/7-zip/taskwarrior/recipe.toml similarity index 100% rename from recipes/wip/taskwarrior/recipe.toml rename to recipes/wip/7-zip/taskwarrior/recipe.toml diff --git a/recipes/wip/tauro-monitor/recipe.toml b/recipes/wip/7-zip/tauro-monitor/recipe.toml similarity index 100% rename from recipes/wip/tauro-monitor/recipe.toml rename to recipes/wip/7-zip/tauro-monitor/recipe.toml diff --git a/recipes/wip/tts-tui/recipe.toml b/recipes/wip/7-zip/tts-tui/recipe.toml similarity index 100% rename from recipes/wip/tts-tui/recipe.toml rename to recipes/wip/7-zip/tts-tui/recipe.toml diff --git a/recipes/wip/ttyper/recipe.toml b/recipes/wip/7-zip/ttyper/recipe.toml similarity index 100% rename from recipes/wip/ttyper/recipe.toml rename to recipes/wip/7-zip/ttyper/recipe.toml diff --git a/recipes/wip/tvix/recipe.toml b/recipes/wip/7-zip/tvix/recipe.toml similarity index 100% rename from recipes/wip/tvix/recipe.toml rename to recipes/wip/7-zip/tvix/recipe.toml diff --git a/recipes/wip/uget/recipe.toml b/recipes/wip/7-zip/uget/recipe.toml similarity index 100% rename from recipes/wip/uget/recipe.toml rename to recipes/wip/7-zip/uget/recipe.toml diff --git a/recipes/wip/upscaler/recipe.toml b/recipes/wip/7-zip/upscaler/recipe.toml similarity index 100% rename from recipes/wip/upscaler/recipe.toml rename to recipes/wip/7-zip/upscaler/recipe.toml diff --git a/recipes/wip/upx/recipe.toml b/recipes/wip/7-zip/upx/recipe.toml similarity index 100% rename from recipes/wip/upx/recipe.toml rename to recipes/wip/7-zip/upx/recipe.toml diff --git a/recipes/wip/v86/recipe.toml b/recipes/wip/7-zip/v86/recipe.toml similarity index 100% rename from recipes/wip/v86/recipe.toml rename to recipes/wip/7-zip/v86/recipe.toml diff --git a/recipes/wip/vincenzo/recipe.toml b/recipes/wip/7-zip/vincenzo/recipe.toml similarity index 100% rename from recipes/wip/vincenzo/recipe.toml rename to recipes/wip/7-zip/vincenzo/recipe.toml diff --git a/recipes/wip/watchexec/recipe.toml b/recipes/wip/7-zip/watchexec/recipe.toml similarity index 100% rename from recipes/wip/watchexec/recipe.toml rename to recipes/wip/7-zip/watchexec/recipe.toml diff --git a/recipes/wip/wayshot/recipe.toml b/recipes/wip/7-zip/wayshot/recipe.toml similarity index 100% rename from recipes/wip/wayshot/recipe.toml rename to recipes/wip/7-zip/wayshot/recipe.toml diff --git a/recipes/wip/wezterm/recipe.toml b/recipes/wip/7-zip/wezterm/recipe.toml similarity index 100% rename from recipes/wip/wezterm/recipe.toml rename to recipes/wip/7-zip/wezterm/recipe.toml diff --git a/recipes/wip/wpaperd/recipe.toml b/recipes/wip/7-zip/wpaperd/recipe.toml similarity index 100% rename from recipes/wip/wpaperd/recipe.toml rename to recipes/wip/7-zip/wpaperd/recipe.toml diff --git a/recipes/wip/xcp/recipe.toml b/recipes/wip/7-zip/xcp/recipe.toml similarity index 100% rename from recipes/wip/xcp/recipe.toml rename to recipes/wip/7-zip/xcp/recipe.toml diff --git a/recipes/wip/xh/recipe.toml b/recipes/wip/7-zip/xh/recipe.toml similarity index 100% rename from recipes/wip/xh/recipe.toml rename to recipes/wip/7-zip/xh/recipe.toml diff --git a/recipes/wip/xiu/recipe.toml b/recipes/wip/7-zip/xiu/recipe.toml similarity index 100% rename from recipes/wip/xiu/recipe.toml rename to recipes/wip/7-zip/xiu/recipe.toml diff --git a/recipes/wip/xorriso/recipe.toml b/recipes/wip/7-zip/xorriso/recipe.toml similarity index 100% rename from recipes/wip/xorriso/recipe.toml rename to recipes/wip/7-zip/xorriso/recipe.toml diff --git a/recipes/wip/zellij/recipe.toml b/recipes/wip/7-zip/zellij/recipe.toml similarity index 100% rename from recipes/wip/zellij/recipe.toml rename to recipes/wip/7-zip/zellij/recipe.toml From 04d1308f48e81eace8c254a4511209114a7d6e97 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 10 Feb 2024 22:41:07 +0000 Subject: [PATCH 1547/3180] add crates-tui --- recipes/wip/crates-tui/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/wip/crates-tui/recipe.toml diff --git a/recipes/wip/crates-tui/recipe.toml b/recipes/wip/crates-tui/recipe.toml new file mode 100644 index 00000000..8af7a014 --- /dev/null +++ b/recipes/wip/crates-tui/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ratatui-org/crates-tui" +[build] +template = "cargo" From 021ec7ddf0fb0e335492e5270621a669e262e63f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 10 Feb 2024 18:08:27 -0700 Subject: [PATCH 1548/3180] Build boxedwine executable in build directory --- recipes/wip/emulators/boxedwine/recipe.toml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/wip/emulators/boxedwine/recipe.toml b/recipes/wip/emulators/boxedwine/recipe.toml index 57c61762..2d2507c0 100644 --- a/recipes/wip/emulators/boxedwine/recipe.toml +++ b/recipes/wip/emulators/boxedwine/recipe.toml @@ -15,7 +15,6 @@ dependencies = [ "zlib", ] script = """ -mkdir -p "${COOKBOOK_STAGE}/bin" cd "${COOKBOOK_SOURCE}/project/linux" #TODO: USE MAKEFILE #TODO: USE X64 CPU CORE @@ -83,5 +82,7 @@ ${TARGET}-gcc -std=c++17 -O2 \ -DSDL2=1 \ -DSIMDE_SSE2_NO_NATIVE \ -static \ - -o "${COOKBOOK_STAGE}/bin/boxedwine" + -o "${COOKBOOK_BUILD}/boxedwine" +mkdir -p "${COOKBOOK_STAGE}/bin" +cp -v "${COOKBOOK_BUILD}/boxedwine" "${COOKBOOK_STAGE}/bin/boxedwine" """ From 58a28f581a8a173b8a3b9949d0aff5ac9328db8b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 10 Feb 2024 18:54:33 -0700 Subject: [PATCH 1549/3180] Merge examples category with demos --- recipes/{examples => demos}/cpal/recipe.toml | 0 recipes/{examples => demos}/dynamic-example/recipe.sh | 0 recipes/{examples => demos}/exampled/recipe.toml | 0 recipes/{examples => demos}/glium/recipe.sh | 0 recipes/{examples => demos}/glutin/recipe.toml | 0 recipes/{examples => demos}/orbclient/recipe.toml | 0 recipes/{examples => demos}/rust-cairo/recipe.sh | 0 recipes/demos/winit/recipe.toml | 9 +++++++++ recipes/examples/winit/recipe.toml | 10 ---------- 9 files changed, 9 insertions(+), 10 deletions(-) rename recipes/{examples => demos}/cpal/recipe.toml (100%) rename recipes/{examples => demos}/dynamic-example/recipe.sh (100%) rename recipes/{examples => demos}/exampled/recipe.toml (100%) rename recipes/{examples => demos}/glium/recipe.sh (100%) rename recipes/{examples => demos}/glutin/recipe.toml (100%) rename recipes/{examples => demos}/orbclient/recipe.toml (100%) rename recipes/{examples => demos}/rust-cairo/recipe.sh (100%) create mode 100644 recipes/demos/winit/recipe.toml delete mode 100644 recipes/examples/winit/recipe.toml diff --git a/recipes/examples/cpal/recipe.toml b/recipes/demos/cpal/recipe.toml similarity index 100% rename from recipes/examples/cpal/recipe.toml rename to recipes/demos/cpal/recipe.toml diff --git a/recipes/examples/dynamic-example/recipe.sh b/recipes/demos/dynamic-example/recipe.sh similarity index 100% rename from recipes/examples/dynamic-example/recipe.sh rename to recipes/demos/dynamic-example/recipe.sh diff --git a/recipes/examples/exampled/recipe.toml b/recipes/demos/exampled/recipe.toml similarity index 100% rename from recipes/examples/exampled/recipe.toml rename to recipes/demos/exampled/recipe.toml diff --git a/recipes/examples/glium/recipe.sh b/recipes/demos/glium/recipe.sh similarity index 100% rename from recipes/examples/glium/recipe.sh rename to recipes/demos/glium/recipe.sh diff --git a/recipes/examples/glutin/recipe.toml b/recipes/demos/glutin/recipe.toml similarity index 100% rename from recipes/examples/glutin/recipe.toml rename to recipes/demos/glutin/recipe.toml diff --git a/recipes/examples/orbclient/recipe.toml b/recipes/demos/orbclient/recipe.toml similarity index 100% rename from recipes/examples/orbclient/recipe.toml rename to recipes/demos/orbclient/recipe.toml diff --git a/recipes/examples/rust-cairo/recipe.sh b/recipes/demos/rust-cairo/recipe.sh similarity index 100% rename from recipes/examples/rust-cairo/recipe.sh rename to recipes/demos/rust-cairo/recipe.sh diff --git a/recipes/demos/winit/recipe.toml b/recipes/demos/winit/recipe.toml new file mode 100644 index 00000000..731075d3 --- /dev/null +++ b/recipes/demos/winit/recipe.toml @@ -0,0 +1,9 @@ +[source] +git = "https://github.com/pop-os/winit.git" +branch = "winit-0.29" + +[build] +template = "custom" +script = """ +cookbook_cargo_examples cursor_grab drag_window window window_debug +""" diff --git a/recipes/examples/winit/recipe.toml b/recipes/examples/winit/recipe.toml deleted file mode 100644 index 818e6e83..00000000 --- a/recipes/examples/winit/recipe.toml +++ /dev/null @@ -1,10 +0,0 @@ -[source] -git = "https://gitlab.redox-os.org/redox-os/winit.git" -branch = "redox-0.27" -upstream = "https://github.com/rust-windowing/winit.git" - -[build] -template = "custom" -script = """ -cookbook_cargo_examples window -""" From 6c241618539e5e75f8d2390abc4437c4d1ca72e7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 11 Feb 2024 14:08:48 +0000 Subject: [PATCH 1550/3180] fix IDE mistake --- recipes/wip/{7-zip => tools}/aim/recipe.toml | 0 recipes/wip/{7-zip => tools}/amp/recipe.toml | 0 recipes/wip/{7-zip => tools}/ani-cli/recipe.toml | 0 recipes/wip/{7-zip => tools}/ani-skip/recipe.toml | 0 recipes/wip/{7-zip => tools}/aria2/recipe.toml | 0 recipes/wip/{7-zip => tools}/ascii-gen/recipe.toml | 0 recipes/wip/{7-zip => tools}/asciinema-rs/recipe.toml | 0 recipes/wip/{7-zip => tools}/ast-grep/recipe.toml | 0 recipes/wip/{7-zip => tools}/b3sum/recipe.toml | 0 recipes/wip/{7-zip => tools}/bat/recipe.toml | 0 recipes/wip/{7-zip => tools}/battop/recipe.toml | 0 recipes/wip/{7-zip => tools}/binserve/recipe.toml | 0 recipes/wip/{7-zip => tools}/blender-lts/recipe.toml | 0 recipes/wip/{7-zip => tools}/blender/recipe.toml | 0 recipes/wip/{7-zip => tools}/blockish-caca/recipe.toml | 0 recipes/wip/{7-zip => tools}/bottles/recipe.toml | 0 recipes/wip/{7-zip => tools}/bottom/recipe.toml | 0 recipes/wip/{7-zip => tools}/carbonyl/recipe.toml | 0 recipes/wip/{7-zip => tools}/cava/recipe.toml | 0 recipes/wip/{7-zip => tools}/chafa/recipe.toml | 0 recipes/wip/{7-zip => tools}/chuck/recipe.toml | 0 recipes/wip/{7-zip => tools}/clipcat/recipe.toml | 0 recipes/wip/{7-zip => tools}/clipshare-desktop/recipe.toml | 0 recipes/wip/{7-zip => tools}/clipshare-server/recipe.toml | 0 recipes/wip/{7-zip => tools}/conky/recipe.toml | 0 recipes/wip/{7-zip => tools}/converseen/recipe.toml | 0 recipes/wip/{7-zip => tools}/cpu-x/recipe.toml | 0 recipes/wip/{7-zip => tools}/czkawka/recipe.toml | 0 recipes/wip/{7-zip => tools}/daktilo/recipe.toml | 0 recipes/wip/{7-zip => tools}/delta/recipe.toml | 0 recipes/wip/{7-zip => tools}/dutree/recipe.toml | 0 recipes/wip/{7-zip => tools}/elfutils/recipe.toml | 0 recipes/wip/{7-zip => tools}/emacs-nox/recipe.toml | 0 recipes/wip/{7-zip => tools}/emacs-pgtk/recipe.toml | 0 recipes/wip/{7-zip => tools}/erdtree/recipe.toml | 0 recipes/wip/{7-zip => tools}/espanso/recipe.toml | 0 recipes/wip/{7-zip => tools}/eza/recipe.toml | 0 recipes/wip/{7-zip => tools}/felix/recipe.toml | 0 recipes/wip/{7-zip => tools}/ffizer/recipe.toml | 0 recipes/wip/{7-zip => tools}/flameshot/recipe.toml | 0 recipes/wip/{7-zip => tools}/freshfetch/recipe.toml | 0 recipes/wip/{7-zip => tools}/gimp/recipe.toml | 0 recipes/wip/{7-zip => tools}/glsl-viewer/recipe.toml | 0 recipes/wip/{7-zip => tools}/gnupg-lts/recipe.toml | 0 recipes/wip/{7-zip => tools}/gnupg/recipe.toml | 0 recipes/wip/{7-zip => tools}/hgrep/recipe.toml | 0 recipes/wip/{7-zip => tools}/hx/recipe.toml | 0 recipes/wip/{7-zip => tools}/hyperfine/recipe.toml | 0 recipes/wip/{7-zip => tools}/igrep/recipe.toml | 0 recipes/wip/{7-zip => tools}/imager/recipe.toml | 0 recipes/wip/{7-zip => tools}/just/recipe.toml | 0 recipes/wip/{7-zip => tools}/keepassxc/recipe.toml | 0 recipes/wip/{7-zip => tools}/kibi/recipe.toml | 0 recipes/wip/{7-zip => tools}/kodi/recipe.toml | 0 recipes/wip/{7-zip => tools}/krita/recipe.toml | 0 recipes/wip/{7-zip => tools}/lcs-image-diff/recipe.toml | 0 recipes/wip/{7-zip => tools}/lemmeknow/recipe.toml | 0 recipes/wip/{7-zip => tools}/libreoffice/recipe.toml | 0 recipes/wip/{7-zip => tools}/lsd/recipe.toml | 0 recipes/wip/{7-zip => tools}/lsix/recipe.toml | 0 recipes/wip/{7-zip => tools}/macchina/recipe.toml | 0 recipes/wip/{7-zip => tools}/magic-wormhole-rs/recipe.toml | 0 recipes/wip/{7-zip => tools}/mandy/recipe.toml | 0 recipes/wip/{7-zip => tools}/mangohud/recipe.toml | 0 recipes/wip/{7-zip => tools}/mdbook/recipe.toml | 0 recipes/wip/{7-zip => tools}/mercurial/recipe.toml | 0 recipes/wip/{7-zip => tools}/miniaudicle/recipe.toml | 0 recipes/wip/{7-zip => tools}/mosh/recipe.toml | 0 recipes/wip/{7-zip => tools}/mprocs/recipe.toml | 0 recipes/wip/{7-zip => tools}/neofetch/recipe.toml | 0 recipes/wip/{7-zip => tools}/neovim/recipe.toml | 0 recipes/wip/{7-zip => tools}/news-rs/recipe.toml | 0 recipes/wip/{7-zip => tools}/nginx/recipe.toml | 0 recipes/wip/{7-zip => tools}/nix/recipe.toml | 0 recipes/wip/{7-zip => tools}/obs-studio/recipe.toml | 0 recipes/wip/{7-zip => tools}/odin2/recipe.toml | 0 recipes/wip/{7-zip => tools}/onefetch/recipe.toml | 0 recipes/wip/{7-zip => tools}/oranda/recipe.toml | 0 .../wip/{7-zip => tools}/orchaldir-texture-generator/recipe.toml | 0 recipes/wip/{7-zip => tools}/orz/recipe.toml | 0 recipes/wip/{7-zip => tools}/ouch/recipe.toml | 0 recipes/wip/{7-zip => tools}/oxipng/recipe.toml | 0 recipes/wip/{7-zip => tools}/parabolic/recipe.toml | 0 recipes/wip/{7-zip => tools}/pciutils/recipe.toml | 0 recipes/wip/{7-zip => tools}/pdbview/recipe.toml | 0 recipes/wip/{7-zip => tools}/pdu/recipe.toml | 0 recipes/wip/{7-zip => tools}/pidgin/recipe.toml | 0 recipes/wip/{7-zip => tools}/pipr/recipe.toml | 0 recipes/wip/{7-zip => tools}/pixcil/recipe.toml | 0 recipes/wip/{7-zip => tools}/pixelsort/recipe.toml | 0 recipes/wip/{7-zip => tools}/please/recipe.toml | 0 recipes/wip/{7-zip => tools}/presenterm/recipe.toml | 0 recipes/wip/{7-zip => tools}/process-viewer/recipe.toml | 0 recipes/wip/{7-zip => tools}/procs/recipe.toml | 0 recipes/wip/{7-zip => tools}/pueue/recipe.toml | 0 recipes/wip/{7-zip => tools}/qalculate-gtk/recipe.toml | 0 recipes/wip/{7-zip => tools}/qrrs/recipe.toml | 0 recipes/wip/{7-zip => tools}/repgrep/recipe.toml | 0 recipes/wip/{7-zip => tools}/rioterm/recipe.toml | 0 recipes/wip/{7-zip => tools}/rip/recipe.toml | 0 recipes/wip/{7-zip => tools}/ripasso/recipe.toml | 0 recipes/wip/{7-zip => tools}/ripsecrets/recipe.toml | 0 recipes/wip/{7-zip => tools}/rnr/recipe.toml | 0 recipes/wip/{7-zip => tools}/rsync/recipe.toml | 0 recipes/wip/{7-zip => tools}/rtorrent/recipe.toml | 0 recipes/wip/{7-zip => tools}/run/recipe.toml | 0 recipes/wip/{7-zip => tools}/ruplacer/recipe.toml | 0 recipes/wip/{7-zip => tools}/rustlings/recipe.toml | 0 recipes/wip/{7-zip => tools}/rustytube/recipe.toml | 0 recipes/wip/{7-zip => tools}/scribus/recipe.toml | 0 recipes/wip/{7-zip => tools}/shellfirm/recipe.toml | 0 recipes/wip/{7-zip => tools}/shokunin/recipe.toml | 0 recipes/wip/{7-zip => tools}/spacer/recipe.toml | 0 recipes/wip/{7-zip => tools}/sshx/recipe.toml | 0 recipes/wip/{7-zip => tools}/starship/recipe.toml | 0 recipes/wip/{7-zip => tools}/stellarium/recipe.toml | 0 recipes/wip/{7-zip => tools}/stress-ng/recipe.toml | 0 recipes/wip/{7-zip => tools}/sudo-rs/recipe.toml | 0 recipes/wip/{7-zip => tools}/svg2pdf/recipe.toml | 0 recipes/wip/{7-zip => tools}/swc/recipe.toml | 0 recipes/wip/{7-zip => tools}/sws/recipe.toml | 0 recipes/wip/{7-zip => tools}/t-rec/recipe.toml | 0 recipes/wip/{7-zip => tools}/taskserver/recipe.toml | 0 recipes/wip/{7-zip => tools}/taskwarrior-tui/recipe.toml | 0 recipes/wip/{7-zip => tools}/taskwarrior/recipe.toml | 0 recipes/wip/{7-zip => tools}/tauro-monitor/recipe.toml | 0 recipes/wip/{7-zip => tools}/tts-tui/recipe.toml | 0 recipes/wip/{7-zip => tools}/ttyper/recipe.toml | 0 recipes/wip/{7-zip => tools}/tvix/recipe.toml | 0 recipes/wip/{7-zip => tools}/uget/recipe.toml | 0 recipes/wip/{7-zip => tools}/upscaler/recipe.toml | 0 recipes/wip/{7-zip => tools}/upx/recipe.toml | 0 recipes/wip/{7-zip => tools}/v86/recipe.toml | 0 recipes/wip/{7-zip => tools}/vincenzo/recipe.toml | 0 recipes/wip/{7-zip => tools}/watchexec/recipe.toml | 0 recipes/wip/{7-zip => tools}/wayshot/recipe.toml | 0 recipes/wip/{7-zip => tools}/wezterm/recipe.toml | 0 recipes/wip/{7-zip => tools}/wpaperd/recipe.toml | 0 recipes/wip/{7-zip => tools}/xcp/recipe.toml | 0 recipes/wip/{7-zip => tools}/xh/recipe.toml | 0 recipes/wip/{7-zip => tools}/xiu/recipe.toml | 0 recipes/wip/{7-zip => tools}/xorriso/recipe.toml | 0 recipes/wip/{7-zip => tools}/zellij/recipe.toml | 0 143 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{7-zip => tools}/aim/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/amp/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/ani-cli/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/ani-skip/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/aria2/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/ascii-gen/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/asciinema-rs/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/ast-grep/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/b3sum/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/bat/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/battop/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/binserve/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/blender-lts/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/blender/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/blockish-caca/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/bottles/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/bottom/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/carbonyl/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/cava/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/chafa/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/chuck/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/clipcat/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/clipshare-desktop/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/clipshare-server/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/conky/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/converseen/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/cpu-x/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/czkawka/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/daktilo/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/delta/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/dutree/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/elfutils/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/emacs-nox/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/emacs-pgtk/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/erdtree/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/espanso/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/eza/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/felix/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/ffizer/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/flameshot/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/freshfetch/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/gimp/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/glsl-viewer/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/gnupg-lts/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/gnupg/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/hgrep/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/hx/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/hyperfine/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/igrep/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/imager/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/just/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/keepassxc/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/kibi/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/kodi/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/krita/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/lcs-image-diff/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/lemmeknow/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/libreoffice/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/lsd/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/lsix/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/macchina/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/magic-wormhole-rs/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/mandy/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/mangohud/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/mdbook/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/mercurial/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/miniaudicle/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/mosh/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/mprocs/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/neofetch/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/neovim/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/news-rs/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/nginx/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/nix/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/obs-studio/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/odin2/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/onefetch/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/oranda/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/orchaldir-texture-generator/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/orz/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/ouch/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/oxipng/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/parabolic/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/pciutils/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/pdbview/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/pdu/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/pidgin/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/pipr/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/pixcil/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/pixelsort/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/please/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/presenterm/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/process-viewer/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/procs/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/pueue/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/qalculate-gtk/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/qrrs/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/repgrep/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/rioterm/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/rip/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/ripasso/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/ripsecrets/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/rnr/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/rsync/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/rtorrent/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/run/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/ruplacer/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/rustlings/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/rustytube/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/scribus/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/shellfirm/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/shokunin/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/spacer/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/sshx/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/starship/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/stellarium/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/stress-ng/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/sudo-rs/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/svg2pdf/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/swc/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/sws/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/t-rec/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/taskserver/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/taskwarrior-tui/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/taskwarrior/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/tauro-monitor/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/tts-tui/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/ttyper/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/tvix/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/uget/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/upscaler/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/upx/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/v86/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/vincenzo/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/watchexec/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/wayshot/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/wezterm/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/wpaperd/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/xcp/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/xh/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/xiu/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/xorriso/recipe.toml (100%) rename recipes/wip/{7-zip => tools}/zellij/recipe.toml (100%) diff --git a/recipes/wip/7-zip/aim/recipe.toml b/recipes/wip/tools/aim/recipe.toml similarity index 100% rename from recipes/wip/7-zip/aim/recipe.toml rename to recipes/wip/tools/aim/recipe.toml diff --git a/recipes/wip/7-zip/amp/recipe.toml b/recipes/wip/tools/amp/recipe.toml similarity index 100% rename from recipes/wip/7-zip/amp/recipe.toml rename to recipes/wip/tools/amp/recipe.toml diff --git a/recipes/wip/7-zip/ani-cli/recipe.toml b/recipes/wip/tools/ani-cli/recipe.toml similarity index 100% rename from recipes/wip/7-zip/ani-cli/recipe.toml rename to recipes/wip/tools/ani-cli/recipe.toml diff --git a/recipes/wip/7-zip/ani-skip/recipe.toml b/recipes/wip/tools/ani-skip/recipe.toml similarity index 100% rename from recipes/wip/7-zip/ani-skip/recipe.toml rename to recipes/wip/tools/ani-skip/recipe.toml diff --git a/recipes/wip/7-zip/aria2/recipe.toml b/recipes/wip/tools/aria2/recipe.toml similarity index 100% rename from recipes/wip/7-zip/aria2/recipe.toml rename to recipes/wip/tools/aria2/recipe.toml diff --git a/recipes/wip/7-zip/ascii-gen/recipe.toml b/recipes/wip/tools/ascii-gen/recipe.toml similarity index 100% rename from recipes/wip/7-zip/ascii-gen/recipe.toml rename to recipes/wip/tools/ascii-gen/recipe.toml diff --git a/recipes/wip/7-zip/asciinema-rs/recipe.toml b/recipes/wip/tools/asciinema-rs/recipe.toml similarity index 100% rename from recipes/wip/7-zip/asciinema-rs/recipe.toml rename to recipes/wip/tools/asciinema-rs/recipe.toml diff --git a/recipes/wip/7-zip/ast-grep/recipe.toml b/recipes/wip/tools/ast-grep/recipe.toml similarity index 100% rename from recipes/wip/7-zip/ast-grep/recipe.toml rename to recipes/wip/tools/ast-grep/recipe.toml diff --git a/recipes/wip/7-zip/b3sum/recipe.toml b/recipes/wip/tools/b3sum/recipe.toml similarity index 100% rename from recipes/wip/7-zip/b3sum/recipe.toml rename to recipes/wip/tools/b3sum/recipe.toml diff --git a/recipes/wip/7-zip/bat/recipe.toml b/recipes/wip/tools/bat/recipe.toml similarity index 100% rename from recipes/wip/7-zip/bat/recipe.toml rename to recipes/wip/tools/bat/recipe.toml diff --git a/recipes/wip/7-zip/battop/recipe.toml b/recipes/wip/tools/battop/recipe.toml similarity index 100% rename from recipes/wip/7-zip/battop/recipe.toml rename to recipes/wip/tools/battop/recipe.toml diff --git a/recipes/wip/7-zip/binserve/recipe.toml b/recipes/wip/tools/binserve/recipe.toml similarity index 100% rename from recipes/wip/7-zip/binserve/recipe.toml rename to recipes/wip/tools/binserve/recipe.toml diff --git a/recipes/wip/7-zip/blender-lts/recipe.toml b/recipes/wip/tools/blender-lts/recipe.toml similarity index 100% rename from recipes/wip/7-zip/blender-lts/recipe.toml rename to recipes/wip/tools/blender-lts/recipe.toml diff --git a/recipes/wip/7-zip/blender/recipe.toml b/recipes/wip/tools/blender/recipe.toml similarity index 100% rename from recipes/wip/7-zip/blender/recipe.toml rename to recipes/wip/tools/blender/recipe.toml diff --git a/recipes/wip/7-zip/blockish-caca/recipe.toml b/recipes/wip/tools/blockish-caca/recipe.toml similarity index 100% rename from recipes/wip/7-zip/blockish-caca/recipe.toml rename to recipes/wip/tools/blockish-caca/recipe.toml diff --git a/recipes/wip/7-zip/bottles/recipe.toml b/recipes/wip/tools/bottles/recipe.toml similarity index 100% rename from recipes/wip/7-zip/bottles/recipe.toml rename to recipes/wip/tools/bottles/recipe.toml diff --git a/recipes/wip/7-zip/bottom/recipe.toml b/recipes/wip/tools/bottom/recipe.toml similarity index 100% rename from recipes/wip/7-zip/bottom/recipe.toml rename to recipes/wip/tools/bottom/recipe.toml diff --git a/recipes/wip/7-zip/carbonyl/recipe.toml b/recipes/wip/tools/carbonyl/recipe.toml similarity index 100% rename from recipes/wip/7-zip/carbonyl/recipe.toml rename to recipes/wip/tools/carbonyl/recipe.toml diff --git a/recipes/wip/7-zip/cava/recipe.toml b/recipes/wip/tools/cava/recipe.toml similarity index 100% rename from recipes/wip/7-zip/cava/recipe.toml rename to recipes/wip/tools/cava/recipe.toml diff --git a/recipes/wip/7-zip/chafa/recipe.toml b/recipes/wip/tools/chafa/recipe.toml similarity index 100% rename from recipes/wip/7-zip/chafa/recipe.toml rename to recipes/wip/tools/chafa/recipe.toml diff --git a/recipes/wip/7-zip/chuck/recipe.toml b/recipes/wip/tools/chuck/recipe.toml similarity index 100% rename from recipes/wip/7-zip/chuck/recipe.toml rename to recipes/wip/tools/chuck/recipe.toml diff --git a/recipes/wip/7-zip/clipcat/recipe.toml b/recipes/wip/tools/clipcat/recipe.toml similarity index 100% rename from recipes/wip/7-zip/clipcat/recipe.toml rename to recipes/wip/tools/clipcat/recipe.toml diff --git a/recipes/wip/7-zip/clipshare-desktop/recipe.toml b/recipes/wip/tools/clipshare-desktop/recipe.toml similarity index 100% rename from recipes/wip/7-zip/clipshare-desktop/recipe.toml rename to recipes/wip/tools/clipshare-desktop/recipe.toml diff --git a/recipes/wip/7-zip/clipshare-server/recipe.toml b/recipes/wip/tools/clipshare-server/recipe.toml similarity index 100% rename from recipes/wip/7-zip/clipshare-server/recipe.toml rename to recipes/wip/tools/clipshare-server/recipe.toml diff --git a/recipes/wip/7-zip/conky/recipe.toml b/recipes/wip/tools/conky/recipe.toml similarity index 100% rename from recipes/wip/7-zip/conky/recipe.toml rename to recipes/wip/tools/conky/recipe.toml diff --git a/recipes/wip/7-zip/converseen/recipe.toml b/recipes/wip/tools/converseen/recipe.toml similarity index 100% rename from recipes/wip/7-zip/converseen/recipe.toml rename to recipes/wip/tools/converseen/recipe.toml diff --git a/recipes/wip/7-zip/cpu-x/recipe.toml b/recipes/wip/tools/cpu-x/recipe.toml similarity index 100% rename from recipes/wip/7-zip/cpu-x/recipe.toml rename to recipes/wip/tools/cpu-x/recipe.toml diff --git a/recipes/wip/7-zip/czkawka/recipe.toml b/recipes/wip/tools/czkawka/recipe.toml similarity index 100% rename from recipes/wip/7-zip/czkawka/recipe.toml rename to recipes/wip/tools/czkawka/recipe.toml diff --git a/recipes/wip/7-zip/daktilo/recipe.toml b/recipes/wip/tools/daktilo/recipe.toml similarity index 100% rename from recipes/wip/7-zip/daktilo/recipe.toml rename to recipes/wip/tools/daktilo/recipe.toml diff --git a/recipes/wip/7-zip/delta/recipe.toml b/recipes/wip/tools/delta/recipe.toml similarity index 100% rename from recipes/wip/7-zip/delta/recipe.toml rename to recipes/wip/tools/delta/recipe.toml diff --git a/recipes/wip/7-zip/dutree/recipe.toml b/recipes/wip/tools/dutree/recipe.toml similarity index 100% rename from recipes/wip/7-zip/dutree/recipe.toml rename to recipes/wip/tools/dutree/recipe.toml diff --git a/recipes/wip/7-zip/elfutils/recipe.toml b/recipes/wip/tools/elfutils/recipe.toml similarity index 100% rename from recipes/wip/7-zip/elfutils/recipe.toml rename to recipes/wip/tools/elfutils/recipe.toml diff --git a/recipes/wip/7-zip/emacs-nox/recipe.toml b/recipes/wip/tools/emacs-nox/recipe.toml similarity index 100% rename from recipes/wip/7-zip/emacs-nox/recipe.toml rename to recipes/wip/tools/emacs-nox/recipe.toml diff --git a/recipes/wip/7-zip/emacs-pgtk/recipe.toml b/recipes/wip/tools/emacs-pgtk/recipe.toml similarity index 100% rename from recipes/wip/7-zip/emacs-pgtk/recipe.toml rename to recipes/wip/tools/emacs-pgtk/recipe.toml diff --git a/recipes/wip/7-zip/erdtree/recipe.toml b/recipes/wip/tools/erdtree/recipe.toml similarity index 100% rename from recipes/wip/7-zip/erdtree/recipe.toml rename to recipes/wip/tools/erdtree/recipe.toml diff --git a/recipes/wip/7-zip/espanso/recipe.toml b/recipes/wip/tools/espanso/recipe.toml similarity index 100% rename from recipes/wip/7-zip/espanso/recipe.toml rename to recipes/wip/tools/espanso/recipe.toml diff --git a/recipes/wip/7-zip/eza/recipe.toml b/recipes/wip/tools/eza/recipe.toml similarity index 100% rename from recipes/wip/7-zip/eza/recipe.toml rename to recipes/wip/tools/eza/recipe.toml diff --git a/recipes/wip/7-zip/felix/recipe.toml b/recipes/wip/tools/felix/recipe.toml similarity index 100% rename from recipes/wip/7-zip/felix/recipe.toml rename to recipes/wip/tools/felix/recipe.toml diff --git a/recipes/wip/7-zip/ffizer/recipe.toml b/recipes/wip/tools/ffizer/recipe.toml similarity index 100% rename from recipes/wip/7-zip/ffizer/recipe.toml rename to recipes/wip/tools/ffizer/recipe.toml diff --git a/recipes/wip/7-zip/flameshot/recipe.toml b/recipes/wip/tools/flameshot/recipe.toml similarity index 100% rename from recipes/wip/7-zip/flameshot/recipe.toml rename to recipes/wip/tools/flameshot/recipe.toml diff --git a/recipes/wip/7-zip/freshfetch/recipe.toml b/recipes/wip/tools/freshfetch/recipe.toml similarity index 100% rename from recipes/wip/7-zip/freshfetch/recipe.toml rename to recipes/wip/tools/freshfetch/recipe.toml diff --git a/recipes/wip/7-zip/gimp/recipe.toml b/recipes/wip/tools/gimp/recipe.toml similarity index 100% rename from recipes/wip/7-zip/gimp/recipe.toml rename to recipes/wip/tools/gimp/recipe.toml diff --git a/recipes/wip/7-zip/glsl-viewer/recipe.toml b/recipes/wip/tools/glsl-viewer/recipe.toml similarity index 100% rename from recipes/wip/7-zip/glsl-viewer/recipe.toml rename to recipes/wip/tools/glsl-viewer/recipe.toml diff --git a/recipes/wip/7-zip/gnupg-lts/recipe.toml b/recipes/wip/tools/gnupg-lts/recipe.toml similarity index 100% rename from recipes/wip/7-zip/gnupg-lts/recipe.toml rename to recipes/wip/tools/gnupg-lts/recipe.toml diff --git a/recipes/wip/7-zip/gnupg/recipe.toml b/recipes/wip/tools/gnupg/recipe.toml similarity index 100% rename from recipes/wip/7-zip/gnupg/recipe.toml rename to recipes/wip/tools/gnupg/recipe.toml diff --git a/recipes/wip/7-zip/hgrep/recipe.toml b/recipes/wip/tools/hgrep/recipe.toml similarity index 100% rename from recipes/wip/7-zip/hgrep/recipe.toml rename to recipes/wip/tools/hgrep/recipe.toml diff --git a/recipes/wip/7-zip/hx/recipe.toml b/recipes/wip/tools/hx/recipe.toml similarity index 100% rename from recipes/wip/7-zip/hx/recipe.toml rename to recipes/wip/tools/hx/recipe.toml diff --git a/recipes/wip/7-zip/hyperfine/recipe.toml b/recipes/wip/tools/hyperfine/recipe.toml similarity index 100% rename from recipes/wip/7-zip/hyperfine/recipe.toml rename to recipes/wip/tools/hyperfine/recipe.toml diff --git a/recipes/wip/7-zip/igrep/recipe.toml b/recipes/wip/tools/igrep/recipe.toml similarity index 100% rename from recipes/wip/7-zip/igrep/recipe.toml rename to recipes/wip/tools/igrep/recipe.toml diff --git a/recipes/wip/7-zip/imager/recipe.toml b/recipes/wip/tools/imager/recipe.toml similarity index 100% rename from recipes/wip/7-zip/imager/recipe.toml rename to recipes/wip/tools/imager/recipe.toml diff --git a/recipes/wip/7-zip/just/recipe.toml b/recipes/wip/tools/just/recipe.toml similarity index 100% rename from recipes/wip/7-zip/just/recipe.toml rename to recipes/wip/tools/just/recipe.toml diff --git a/recipes/wip/7-zip/keepassxc/recipe.toml b/recipes/wip/tools/keepassxc/recipe.toml similarity index 100% rename from recipes/wip/7-zip/keepassxc/recipe.toml rename to recipes/wip/tools/keepassxc/recipe.toml diff --git a/recipes/wip/7-zip/kibi/recipe.toml b/recipes/wip/tools/kibi/recipe.toml similarity index 100% rename from recipes/wip/7-zip/kibi/recipe.toml rename to recipes/wip/tools/kibi/recipe.toml diff --git a/recipes/wip/7-zip/kodi/recipe.toml b/recipes/wip/tools/kodi/recipe.toml similarity index 100% rename from recipes/wip/7-zip/kodi/recipe.toml rename to recipes/wip/tools/kodi/recipe.toml diff --git a/recipes/wip/7-zip/krita/recipe.toml b/recipes/wip/tools/krita/recipe.toml similarity index 100% rename from recipes/wip/7-zip/krita/recipe.toml rename to recipes/wip/tools/krita/recipe.toml diff --git a/recipes/wip/7-zip/lcs-image-diff/recipe.toml b/recipes/wip/tools/lcs-image-diff/recipe.toml similarity index 100% rename from recipes/wip/7-zip/lcs-image-diff/recipe.toml rename to recipes/wip/tools/lcs-image-diff/recipe.toml diff --git a/recipes/wip/7-zip/lemmeknow/recipe.toml b/recipes/wip/tools/lemmeknow/recipe.toml similarity index 100% rename from recipes/wip/7-zip/lemmeknow/recipe.toml rename to recipes/wip/tools/lemmeknow/recipe.toml diff --git a/recipes/wip/7-zip/libreoffice/recipe.toml b/recipes/wip/tools/libreoffice/recipe.toml similarity index 100% rename from recipes/wip/7-zip/libreoffice/recipe.toml rename to recipes/wip/tools/libreoffice/recipe.toml diff --git a/recipes/wip/7-zip/lsd/recipe.toml b/recipes/wip/tools/lsd/recipe.toml similarity index 100% rename from recipes/wip/7-zip/lsd/recipe.toml rename to recipes/wip/tools/lsd/recipe.toml diff --git a/recipes/wip/7-zip/lsix/recipe.toml b/recipes/wip/tools/lsix/recipe.toml similarity index 100% rename from recipes/wip/7-zip/lsix/recipe.toml rename to recipes/wip/tools/lsix/recipe.toml diff --git a/recipes/wip/7-zip/macchina/recipe.toml b/recipes/wip/tools/macchina/recipe.toml similarity index 100% rename from recipes/wip/7-zip/macchina/recipe.toml rename to recipes/wip/tools/macchina/recipe.toml diff --git a/recipes/wip/7-zip/magic-wormhole-rs/recipe.toml b/recipes/wip/tools/magic-wormhole-rs/recipe.toml similarity index 100% rename from recipes/wip/7-zip/magic-wormhole-rs/recipe.toml rename to recipes/wip/tools/magic-wormhole-rs/recipe.toml diff --git a/recipes/wip/7-zip/mandy/recipe.toml b/recipes/wip/tools/mandy/recipe.toml similarity index 100% rename from recipes/wip/7-zip/mandy/recipe.toml rename to recipes/wip/tools/mandy/recipe.toml diff --git a/recipes/wip/7-zip/mangohud/recipe.toml b/recipes/wip/tools/mangohud/recipe.toml similarity index 100% rename from recipes/wip/7-zip/mangohud/recipe.toml rename to recipes/wip/tools/mangohud/recipe.toml diff --git a/recipes/wip/7-zip/mdbook/recipe.toml b/recipes/wip/tools/mdbook/recipe.toml similarity index 100% rename from recipes/wip/7-zip/mdbook/recipe.toml rename to recipes/wip/tools/mdbook/recipe.toml diff --git a/recipes/wip/7-zip/mercurial/recipe.toml b/recipes/wip/tools/mercurial/recipe.toml similarity index 100% rename from recipes/wip/7-zip/mercurial/recipe.toml rename to recipes/wip/tools/mercurial/recipe.toml diff --git a/recipes/wip/7-zip/miniaudicle/recipe.toml b/recipes/wip/tools/miniaudicle/recipe.toml similarity index 100% rename from recipes/wip/7-zip/miniaudicle/recipe.toml rename to recipes/wip/tools/miniaudicle/recipe.toml diff --git a/recipes/wip/7-zip/mosh/recipe.toml b/recipes/wip/tools/mosh/recipe.toml similarity index 100% rename from recipes/wip/7-zip/mosh/recipe.toml rename to recipes/wip/tools/mosh/recipe.toml diff --git a/recipes/wip/7-zip/mprocs/recipe.toml b/recipes/wip/tools/mprocs/recipe.toml similarity index 100% rename from recipes/wip/7-zip/mprocs/recipe.toml rename to recipes/wip/tools/mprocs/recipe.toml diff --git a/recipes/wip/7-zip/neofetch/recipe.toml b/recipes/wip/tools/neofetch/recipe.toml similarity index 100% rename from recipes/wip/7-zip/neofetch/recipe.toml rename to recipes/wip/tools/neofetch/recipe.toml diff --git a/recipes/wip/7-zip/neovim/recipe.toml b/recipes/wip/tools/neovim/recipe.toml similarity index 100% rename from recipes/wip/7-zip/neovim/recipe.toml rename to recipes/wip/tools/neovim/recipe.toml diff --git a/recipes/wip/7-zip/news-rs/recipe.toml b/recipes/wip/tools/news-rs/recipe.toml similarity index 100% rename from recipes/wip/7-zip/news-rs/recipe.toml rename to recipes/wip/tools/news-rs/recipe.toml diff --git a/recipes/wip/7-zip/nginx/recipe.toml b/recipes/wip/tools/nginx/recipe.toml similarity index 100% rename from recipes/wip/7-zip/nginx/recipe.toml rename to recipes/wip/tools/nginx/recipe.toml diff --git a/recipes/wip/7-zip/nix/recipe.toml b/recipes/wip/tools/nix/recipe.toml similarity index 100% rename from recipes/wip/7-zip/nix/recipe.toml rename to recipes/wip/tools/nix/recipe.toml diff --git a/recipes/wip/7-zip/obs-studio/recipe.toml b/recipes/wip/tools/obs-studio/recipe.toml similarity index 100% rename from recipes/wip/7-zip/obs-studio/recipe.toml rename to recipes/wip/tools/obs-studio/recipe.toml diff --git a/recipes/wip/7-zip/odin2/recipe.toml b/recipes/wip/tools/odin2/recipe.toml similarity index 100% rename from recipes/wip/7-zip/odin2/recipe.toml rename to recipes/wip/tools/odin2/recipe.toml diff --git a/recipes/wip/7-zip/onefetch/recipe.toml b/recipes/wip/tools/onefetch/recipe.toml similarity index 100% rename from recipes/wip/7-zip/onefetch/recipe.toml rename to recipes/wip/tools/onefetch/recipe.toml diff --git a/recipes/wip/7-zip/oranda/recipe.toml b/recipes/wip/tools/oranda/recipe.toml similarity index 100% rename from recipes/wip/7-zip/oranda/recipe.toml rename to recipes/wip/tools/oranda/recipe.toml diff --git a/recipes/wip/7-zip/orchaldir-texture-generator/recipe.toml b/recipes/wip/tools/orchaldir-texture-generator/recipe.toml similarity index 100% rename from recipes/wip/7-zip/orchaldir-texture-generator/recipe.toml rename to recipes/wip/tools/orchaldir-texture-generator/recipe.toml diff --git a/recipes/wip/7-zip/orz/recipe.toml b/recipes/wip/tools/orz/recipe.toml similarity index 100% rename from recipes/wip/7-zip/orz/recipe.toml rename to recipes/wip/tools/orz/recipe.toml diff --git a/recipes/wip/7-zip/ouch/recipe.toml b/recipes/wip/tools/ouch/recipe.toml similarity index 100% rename from recipes/wip/7-zip/ouch/recipe.toml rename to recipes/wip/tools/ouch/recipe.toml diff --git a/recipes/wip/7-zip/oxipng/recipe.toml b/recipes/wip/tools/oxipng/recipe.toml similarity index 100% rename from recipes/wip/7-zip/oxipng/recipe.toml rename to recipes/wip/tools/oxipng/recipe.toml diff --git a/recipes/wip/7-zip/parabolic/recipe.toml b/recipes/wip/tools/parabolic/recipe.toml similarity index 100% rename from recipes/wip/7-zip/parabolic/recipe.toml rename to recipes/wip/tools/parabolic/recipe.toml diff --git a/recipes/wip/7-zip/pciutils/recipe.toml b/recipes/wip/tools/pciutils/recipe.toml similarity index 100% rename from recipes/wip/7-zip/pciutils/recipe.toml rename to recipes/wip/tools/pciutils/recipe.toml diff --git a/recipes/wip/7-zip/pdbview/recipe.toml b/recipes/wip/tools/pdbview/recipe.toml similarity index 100% rename from recipes/wip/7-zip/pdbview/recipe.toml rename to recipes/wip/tools/pdbview/recipe.toml diff --git a/recipes/wip/7-zip/pdu/recipe.toml b/recipes/wip/tools/pdu/recipe.toml similarity index 100% rename from recipes/wip/7-zip/pdu/recipe.toml rename to recipes/wip/tools/pdu/recipe.toml diff --git a/recipes/wip/7-zip/pidgin/recipe.toml b/recipes/wip/tools/pidgin/recipe.toml similarity index 100% rename from recipes/wip/7-zip/pidgin/recipe.toml rename to recipes/wip/tools/pidgin/recipe.toml diff --git a/recipes/wip/7-zip/pipr/recipe.toml b/recipes/wip/tools/pipr/recipe.toml similarity index 100% rename from recipes/wip/7-zip/pipr/recipe.toml rename to recipes/wip/tools/pipr/recipe.toml diff --git a/recipes/wip/7-zip/pixcil/recipe.toml b/recipes/wip/tools/pixcil/recipe.toml similarity index 100% rename from recipes/wip/7-zip/pixcil/recipe.toml rename to recipes/wip/tools/pixcil/recipe.toml diff --git a/recipes/wip/7-zip/pixelsort/recipe.toml b/recipes/wip/tools/pixelsort/recipe.toml similarity index 100% rename from recipes/wip/7-zip/pixelsort/recipe.toml rename to recipes/wip/tools/pixelsort/recipe.toml diff --git a/recipes/wip/7-zip/please/recipe.toml b/recipes/wip/tools/please/recipe.toml similarity index 100% rename from recipes/wip/7-zip/please/recipe.toml rename to recipes/wip/tools/please/recipe.toml diff --git a/recipes/wip/7-zip/presenterm/recipe.toml b/recipes/wip/tools/presenterm/recipe.toml similarity index 100% rename from recipes/wip/7-zip/presenterm/recipe.toml rename to recipes/wip/tools/presenterm/recipe.toml diff --git a/recipes/wip/7-zip/process-viewer/recipe.toml b/recipes/wip/tools/process-viewer/recipe.toml similarity index 100% rename from recipes/wip/7-zip/process-viewer/recipe.toml rename to recipes/wip/tools/process-viewer/recipe.toml diff --git a/recipes/wip/7-zip/procs/recipe.toml b/recipes/wip/tools/procs/recipe.toml similarity index 100% rename from recipes/wip/7-zip/procs/recipe.toml rename to recipes/wip/tools/procs/recipe.toml diff --git a/recipes/wip/7-zip/pueue/recipe.toml b/recipes/wip/tools/pueue/recipe.toml similarity index 100% rename from recipes/wip/7-zip/pueue/recipe.toml rename to recipes/wip/tools/pueue/recipe.toml diff --git a/recipes/wip/7-zip/qalculate-gtk/recipe.toml b/recipes/wip/tools/qalculate-gtk/recipe.toml similarity index 100% rename from recipes/wip/7-zip/qalculate-gtk/recipe.toml rename to recipes/wip/tools/qalculate-gtk/recipe.toml diff --git a/recipes/wip/7-zip/qrrs/recipe.toml b/recipes/wip/tools/qrrs/recipe.toml similarity index 100% rename from recipes/wip/7-zip/qrrs/recipe.toml rename to recipes/wip/tools/qrrs/recipe.toml diff --git a/recipes/wip/7-zip/repgrep/recipe.toml b/recipes/wip/tools/repgrep/recipe.toml similarity index 100% rename from recipes/wip/7-zip/repgrep/recipe.toml rename to recipes/wip/tools/repgrep/recipe.toml diff --git a/recipes/wip/7-zip/rioterm/recipe.toml b/recipes/wip/tools/rioterm/recipe.toml similarity index 100% rename from recipes/wip/7-zip/rioterm/recipe.toml rename to recipes/wip/tools/rioterm/recipe.toml diff --git a/recipes/wip/7-zip/rip/recipe.toml b/recipes/wip/tools/rip/recipe.toml similarity index 100% rename from recipes/wip/7-zip/rip/recipe.toml rename to recipes/wip/tools/rip/recipe.toml diff --git a/recipes/wip/7-zip/ripasso/recipe.toml b/recipes/wip/tools/ripasso/recipe.toml similarity index 100% rename from recipes/wip/7-zip/ripasso/recipe.toml rename to recipes/wip/tools/ripasso/recipe.toml diff --git a/recipes/wip/7-zip/ripsecrets/recipe.toml b/recipes/wip/tools/ripsecrets/recipe.toml similarity index 100% rename from recipes/wip/7-zip/ripsecrets/recipe.toml rename to recipes/wip/tools/ripsecrets/recipe.toml diff --git a/recipes/wip/7-zip/rnr/recipe.toml b/recipes/wip/tools/rnr/recipe.toml similarity index 100% rename from recipes/wip/7-zip/rnr/recipe.toml rename to recipes/wip/tools/rnr/recipe.toml diff --git a/recipes/wip/7-zip/rsync/recipe.toml b/recipes/wip/tools/rsync/recipe.toml similarity index 100% rename from recipes/wip/7-zip/rsync/recipe.toml rename to recipes/wip/tools/rsync/recipe.toml diff --git a/recipes/wip/7-zip/rtorrent/recipe.toml b/recipes/wip/tools/rtorrent/recipe.toml similarity index 100% rename from recipes/wip/7-zip/rtorrent/recipe.toml rename to recipes/wip/tools/rtorrent/recipe.toml diff --git a/recipes/wip/7-zip/run/recipe.toml b/recipes/wip/tools/run/recipe.toml similarity index 100% rename from recipes/wip/7-zip/run/recipe.toml rename to recipes/wip/tools/run/recipe.toml diff --git a/recipes/wip/7-zip/ruplacer/recipe.toml b/recipes/wip/tools/ruplacer/recipe.toml similarity index 100% rename from recipes/wip/7-zip/ruplacer/recipe.toml rename to recipes/wip/tools/ruplacer/recipe.toml diff --git a/recipes/wip/7-zip/rustlings/recipe.toml b/recipes/wip/tools/rustlings/recipe.toml similarity index 100% rename from recipes/wip/7-zip/rustlings/recipe.toml rename to recipes/wip/tools/rustlings/recipe.toml diff --git a/recipes/wip/7-zip/rustytube/recipe.toml b/recipes/wip/tools/rustytube/recipe.toml similarity index 100% rename from recipes/wip/7-zip/rustytube/recipe.toml rename to recipes/wip/tools/rustytube/recipe.toml diff --git a/recipes/wip/7-zip/scribus/recipe.toml b/recipes/wip/tools/scribus/recipe.toml similarity index 100% rename from recipes/wip/7-zip/scribus/recipe.toml rename to recipes/wip/tools/scribus/recipe.toml diff --git a/recipes/wip/7-zip/shellfirm/recipe.toml b/recipes/wip/tools/shellfirm/recipe.toml similarity index 100% rename from recipes/wip/7-zip/shellfirm/recipe.toml rename to recipes/wip/tools/shellfirm/recipe.toml diff --git a/recipes/wip/7-zip/shokunin/recipe.toml b/recipes/wip/tools/shokunin/recipe.toml similarity index 100% rename from recipes/wip/7-zip/shokunin/recipe.toml rename to recipes/wip/tools/shokunin/recipe.toml diff --git a/recipes/wip/7-zip/spacer/recipe.toml b/recipes/wip/tools/spacer/recipe.toml similarity index 100% rename from recipes/wip/7-zip/spacer/recipe.toml rename to recipes/wip/tools/spacer/recipe.toml diff --git a/recipes/wip/7-zip/sshx/recipe.toml b/recipes/wip/tools/sshx/recipe.toml similarity index 100% rename from recipes/wip/7-zip/sshx/recipe.toml rename to recipes/wip/tools/sshx/recipe.toml diff --git a/recipes/wip/7-zip/starship/recipe.toml b/recipes/wip/tools/starship/recipe.toml similarity index 100% rename from recipes/wip/7-zip/starship/recipe.toml rename to recipes/wip/tools/starship/recipe.toml diff --git a/recipes/wip/7-zip/stellarium/recipe.toml b/recipes/wip/tools/stellarium/recipe.toml similarity index 100% rename from recipes/wip/7-zip/stellarium/recipe.toml rename to recipes/wip/tools/stellarium/recipe.toml diff --git a/recipes/wip/7-zip/stress-ng/recipe.toml b/recipes/wip/tools/stress-ng/recipe.toml similarity index 100% rename from recipes/wip/7-zip/stress-ng/recipe.toml rename to recipes/wip/tools/stress-ng/recipe.toml diff --git a/recipes/wip/7-zip/sudo-rs/recipe.toml b/recipes/wip/tools/sudo-rs/recipe.toml similarity index 100% rename from recipes/wip/7-zip/sudo-rs/recipe.toml rename to recipes/wip/tools/sudo-rs/recipe.toml diff --git a/recipes/wip/7-zip/svg2pdf/recipe.toml b/recipes/wip/tools/svg2pdf/recipe.toml similarity index 100% rename from recipes/wip/7-zip/svg2pdf/recipe.toml rename to recipes/wip/tools/svg2pdf/recipe.toml diff --git a/recipes/wip/7-zip/swc/recipe.toml b/recipes/wip/tools/swc/recipe.toml similarity index 100% rename from recipes/wip/7-zip/swc/recipe.toml rename to recipes/wip/tools/swc/recipe.toml diff --git a/recipes/wip/7-zip/sws/recipe.toml b/recipes/wip/tools/sws/recipe.toml similarity index 100% rename from recipes/wip/7-zip/sws/recipe.toml rename to recipes/wip/tools/sws/recipe.toml diff --git a/recipes/wip/7-zip/t-rec/recipe.toml b/recipes/wip/tools/t-rec/recipe.toml similarity index 100% rename from recipes/wip/7-zip/t-rec/recipe.toml rename to recipes/wip/tools/t-rec/recipe.toml diff --git a/recipes/wip/7-zip/taskserver/recipe.toml b/recipes/wip/tools/taskserver/recipe.toml similarity index 100% rename from recipes/wip/7-zip/taskserver/recipe.toml rename to recipes/wip/tools/taskserver/recipe.toml diff --git a/recipes/wip/7-zip/taskwarrior-tui/recipe.toml b/recipes/wip/tools/taskwarrior-tui/recipe.toml similarity index 100% rename from recipes/wip/7-zip/taskwarrior-tui/recipe.toml rename to recipes/wip/tools/taskwarrior-tui/recipe.toml diff --git a/recipes/wip/7-zip/taskwarrior/recipe.toml b/recipes/wip/tools/taskwarrior/recipe.toml similarity index 100% rename from recipes/wip/7-zip/taskwarrior/recipe.toml rename to recipes/wip/tools/taskwarrior/recipe.toml diff --git a/recipes/wip/7-zip/tauro-monitor/recipe.toml b/recipes/wip/tools/tauro-monitor/recipe.toml similarity index 100% rename from recipes/wip/7-zip/tauro-monitor/recipe.toml rename to recipes/wip/tools/tauro-monitor/recipe.toml diff --git a/recipes/wip/7-zip/tts-tui/recipe.toml b/recipes/wip/tools/tts-tui/recipe.toml similarity index 100% rename from recipes/wip/7-zip/tts-tui/recipe.toml rename to recipes/wip/tools/tts-tui/recipe.toml diff --git a/recipes/wip/7-zip/ttyper/recipe.toml b/recipes/wip/tools/ttyper/recipe.toml similarity index 100% rename from recipes/wip/7-zip/ttyper/recipe.toml rename to recipes/wip/tools/ttyper/recipe.toml diff --git a/recipes/wip/7-zip/tvix/recipe.toml b/recipes/wip/tools/tvix/recipe.toml similarity index 100% rename from recipes/wip/7-zip/tvix/recipe.toml rename to recipes/wip/tools/tvix/recipe.toml diff --git a/recipes/wip/7-zip/uget/recipe.toml b/recipes/wip/tools/uget/recipe.toml similarity index 100% rename from recipes/wip/7-zip/uget/recipe.toml rename to recipes/wip/tools/uget/recipe.toml diff --git a/recipes/wip/7-zip/upscaler/recipe.toml b/recipes/wip/tools/upscaler/recipe.toml similarity index 100% rename from recipes/wip/7-zip/upscaler/recipe.toml rename to recipes/wip/tools/upscaler/recipe.toml diff --git a/recipes/wip/7-zip/upx/recipe.toml b/recipes/wip/tools/upx/recipe.toml similarity index 100% rename from recipes/wip/7-zip/upx/recipe.toml rename to recipes/wip/tools/upx/recipe.toml diff --git a/recipes/wip/7-zip/v86/recipe.toml b/recipes/wip/tools/v86/recipe.toml similarity index 100% rename from recipes/wip/7-zip/v86/recipe.toml rename to recipes/wip/tools/v86/recipe.toml diff --git a/recipes/wip/7-zip/vincenzo/recipe.toml b/recipes/wip/tools/vincenzo/recipe.toml similarity index 100% rename from recipes/wip/7-zip/vincenzo/recipe.toml rename to recipes/wip/tools/vincenzo/recipe.toml diff --git a/recipes/wip/7-zip/watchexec/recipe.toml b/recipes/wip/tools/watchexec/recipe.toml similarity index 100% rename from recipes/wip/7-zip/watchexec/recipe.toml rename to recipes/wip/tools/watchexec/recipe.toml diff --git a/recipes/wip/7-zip/wayshot/recipe.toml b/recipes/wip/tools/wayshot/recipe.toml similarity index 100% rename from recipes/wip/7-zip/wayshot/recipe.toml rename to recipes/wip/tools/wayshot/recipe.toml diff --git a/recipes/wip/7-zip/wezterm/recipe.toml b/recipes/wip/tools/wezterm/recipe.toml similarity index 100% rename from recipes/wip/7-zip/wezterm/recipe.toml rename to recipes/wip/tools/wezterm/recipe.toml diff --git a/recipes/wip/7-zip/wpaperd/recipe.toml b/recipes/wip/tools/wpaperd/recipe.toml similarity index 100% rename from recipes/wip/7-zip/wpaperd/recipe.toml rename to recipes/wip/tools/wpaperd/recipe.toml diff --git a/recipes/wip/7-zip/xcp/recipe.toml b/recipes/wip/tools/xcp/recipe.toml similarity index 100% rename from recipes/wip/7-zip/xcp/recipe.toml rename to recipes/wip/tools/xcp/recipe.toml diff --git a/recipes/wip/7-zip/xh/recipe.toml b/recipes/wip/tools/xh/recipe.toml similarity index 100% rename from recipes/wip/7-zip/xh/recipe.toml rename to recipes/wip/tools/xh/recipe.toml diff --git a/recipes/wip/7-zip/xiu/recipe.toml b/recipes/wip/tools/xiu/recipe.toml similarity index 100% rename from recipes/wip/7-zip/xiu/recipe.toml rename to recipes/wip/tools/xiu/recipe.toml diff --git a/recipes/wip/7-zip/xorriso/recipe.toml b/recipes/wip/tools/xorriso/recipe.toml similarity index 100% rename from recipes/wip/7-zip/xorriso/recipe.toml rename to recipes/wip/tools/xorriso/recipe.toml diff --git a/recipes/wip/7-zip/zellij/recipe.toml b/recipes/wip/tools/zellij/recipe.toml similarity index 100% rename from recipes/wip/7-zip/zellij/recipe.toml rename to recipes/wip/tools/zellij/recipe.toml From 2cc68c63f68ae02f79730ff86bb12681dcbd02b3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 11 Feb 2024 14:30:52 +0000 Subject: [PATCH 1551/3180] move recipes --- recipes/wip/{ => benchmarks}/phoronix-test-suite/recipe.toml | 0 recipes/wip/{ => dev}/ninja-build/recipe.toml | 0 recipes/wip/{ => dev}/nodejs-lts/recipe.toml | 0 recipes/wip/{ => dev}/nodejs/recipe.toml | 0 recipes/wip/{ => dev}/protobuf/recipe.toml | 0 recipes/wip/{ => dev}/python310/recipe.toml | 0 recipes/wip/{ => dev}/python312/recipe.toml | 0 recipes/wip/{ => dev}/qbe/recipe.toml | 0 recipes/wip/{ => dev}/rattler-build/recipe.toml | 0 recipes/wip/{ => net}/firefox-esr/recipe.toml | 0 recipes/wip/{ => net}/lagrange/recipe.toml | 0 recipes/wip/{ => tools}/7-zip/recipe.toml | 0 recipes/wip/{ => tools}/alacritty/recipe.toml | 0 13 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => benchmarks}/phoronix-test-suite/recipe.toml (100%) rename recipes/wip/{ => dev}/ninja-build/recipe.toml (100%) rename recipes/wip/{ => dev}/nodejs-lts/recipe.toml (100%) rename recipes/wip/{ => dev}/nodejs/recipe.toml (100%) rename recipes/wip/{ => dev}/protobuf/recipe.toml (100%) rename recipes/wip/{ => dev}/python310/recipe.toml (100%) rename recipes/wip/{ => dev}/python312/recipe.toml (100%) rename recipes/wip/{ => dev}/qbe/recipe.toml (100%) rename recipes/wip/{ => dev}/rattler-build/recipe.toml (100%) rename recipes/wip/{ => net}/firefox-esr/recipe.toml (100%) rename recipes/wip/{ => net}/lagrange/recipe.toml (100%) rename recipes/wip/{ => tools}/7-zip/recipe.toml (100%) rename recipes/wip/{ => tools}/alacritty/recipe.toml (100%) diff --git a/recipes/wip/phoronix-test-suite/recipe.toml b/recipes/wip/benchmarks/phoronix-test-suite/recipe.toml similarity index 100% rename from recipes/wip/phoronix-test-suite/recipe.toml rename to recipes/wip/benchmarks/phoronix-test-suite/recipe.toml diff --git a/recipes/wip/ninja-build/recipe.toml b/recipes/wip/dev/ninja-build/recipe.toml similarity index 100% rename from recipes/wip/ninja-build/recipe.toml rename to recipes/wip/dev/ninja-build/recipe.toml diff --git a/recipes/wip/nodejs-lts/recipe.toml b/recipes/wip/dev/nodejs-lts/recipe.toml similarity index 100% rename from recipes/wip/nodejs-lts/recipe.toml rename to recipes/wip/dev/nodejs-lts/recipe.toml diff --git a/recipes/wip/nodejs/recipe.toml b/recipes/wip/dev/nodejs/recipe.toml similarity index 100% rename from recipes/wip/nodejs/recipe.toml rename to recipes/wip/dev/nodejs/recipe.toml diff --git a/recipes/wip/protobuf/recipe.toml b/recipes/wip/dev/protobuf/recipe.toml similarity index 100% rename from recipes/wip/protobuf/recipe.toml rename to recipes/wip/dev/protobuf/recipe.toml diff --git a/recipes/wip/python310/recipe.toml b/recipes/wip/dev/python310/recipe.toml similarity index 100% rename from recipes/wip/python310/recipe.toml rename to recipes/wip/dev/python310/recipe.toml diff --git a/recipes/wip/python312/recipe.toml b/recipes/wip/dev/python312/recipe.toml similarity index 100% rename from recipes/wip/python312/recipe.toml rename to recipes/wip/dev/python312/recipe.toml diff --git a/recipes/wip/qbe/recipe.toml b/recipes/wip/dev/qbe/recipe.toml similarity index 100% rename from recipes/wip/qbe/recipe.toml rename to recipes/wip/dev/qbe/recipe.toml diff --git a/recipes/wip/rattler-build/recipe.toml b/recipes/wip/dev/rattler-build/recipe.toml similarity index 100% rename from recipes/wip/rattler-build/recipe.toml rename to recipes/wip/dev/rattler-build/recipe.toml diff --git a/recipes/wip/firefox-esr/recipe.toml b/recipes/wip/net/firefox-esr/recipe.toml similarity index 100% rename from recipes/wip/firefox-esr/recipe.toml rename to recipes/wip/net/firefox-esr/recipe.toml diff --git a/recipes/wip/lagrange/recipe.toml b/recipes/wip/net/lagrange/recipe.toml similarity index 100% rename from recipes/wip/lagrange/recipe.toml rename to recipes/wip/net/lagrange/recipe.toml diff --git a/recipes/wip/7-zip/recipe.toml b/recipes/wip/tools/7-zip/recipe.toml similarity index 100% rename from recipes/wip/7-zip/recipe.toml rename to recipes/wip/tools/7-zip/recipe.toml diff --git a/recipes/wip/alacritty/recipe.toml b/recipes/wip/tools/alacritty/recipe.toml similarity index 100% rename from recipes/wip/alacritty/recipe.toml rename to recipes/wip/tools/alacritty/recipe.toml From aaa912ce8cf56ca627d854def733ebe2ab935051 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 11 Feb 2024 21:29:31 +0000 Subject: [PATCH 1552/3180] update recipes --- recipes/wip/{ => emulators}/snes9x/recipe.toml | 0 recipes/wip/rebels-in-the-sky/recipe.toml | 6 ++++++ recipes/wip/spidey/recipe.toml | 5 +++++ recipes/wip/stremio/recipe.toml | 12 ------------ 4 files changed, 11 insertions(+), 12 deletions(-) rename recipes/wip/{ => emulators}/snes9x/recipe.toml (100%) create mode 100644 recipes/wip/rebels-in-the-sky/recipe.toml create mode 100644 recipes/wip/spidey/recipe.toml delete mode 100644 recipes/wip/stremio/recipe.toml diff --git a/recipes/wip/snes9x/recipe.toml b/recipes/wip/emulators/snes9x/recipe.toml similarity index 100% rename from recipes/wip/snes9x/recipe.toml rename to recipes/wip/emulators/snes9x/recipe.toml diff --git a/recipes/wip/rebels-in-the-sky/recipe.toml b/recipes/wip/rebels-in-the-sky/recipe.toml new file mode 100644 index 00000000..0ee3ecf8 --- /dev/null +++ b/recipes/wip/rebels-in-the-sky/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ricott1/rebels-in-the-sky" +rev = "decd5fa822e667e283fc1f0e52b5d75cedf2c35f" +[build] +template = "cargo" diff --git a/recipes/wip/spidey/recipe.toml b/recipes/wip/spidey/recipe.toml new file mode 100644 index 00000000..2dcb31af --- /dev/null +++ b/recipes/wip/spidey/recipe.toml @@ -0,0 +1,5 @@ +#TODO needs to determine the build method (Cargo or Meson) +[source] +git = "https://github.com/kdwk/Spidey" +[build] +template = "custom" diff --git a/recipes/wip/stremio/recipe.toml b/recipes/wip/stremio/recipe.toml deleted file mode 100644 index 491776ee..00000000 --- a/recipes/wip/stremio/recipe.toml +++ /dev/null @@ -1,12 +0,0 @@ -#TODO missing script for qmake and make, see https://github.com/Stremio/stremio-shell/blob/master/DEBIAN.md -#TODO probably missing dependencies, see https://github.com/Stremio/stremio-shell/blob/master/DEBIAN.md#31-install-missing-dependencies -[source] -git = "https://github.com/Stremio/stremio-shell" -[build] -template = "custom" -dependencies = [ - "openssl1", - "mpv", - "qt5-base", - "qt5-webview", -] From f4f446b9d2de5b16ef5c6db1abf60d7bf1e74579 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 11 Feb 2024 23:12:10 +0000 Subject: [PATCH 1553/3180] move recipes --- recipes/wip/{ => libs/openal}/openblas/recipe.toml | 0 recipes/wip/{ => libs/openal}/opencv4/recipe.toml | 0 recipes/wip/{ => libs/openal}/openjpeg/recipe.toml | 0 recipes/wip/{ => libs/openal}/opus/recipe.toml | 0 recipes/wip/{ => libs/openal}/opusfile/recipe.toml | 0 recipes/wip/{ => libs/openal}/raylib/recipe.toml | 0 recipes/wip/{ => libs/openal}/rdflib/recipe.toml | 0 recipes/wip/{ => libs}/openal/recipe.toml | 0 recipes/wip/{ => math}/numbat/recipe.toml | 0 recipes/wip/{ => net}/i2pd/recipe.toml | 0 recipes/wip/{ => net}/lokinet/recipe.toml | 0 recipes/wip/{ => net}/lynx/recipe.toml | 0 recipes/wip/{ => net}/netscanner/recipe.toml | 0 recipes/wip/{ => net}/nmap/recipe.toml | 0 recipes/wip/{ => net}/nostr-rs-relay/recipe.toml | 0 recipes/wip/{ => net}/ntpd-rs/recipe.toml | 0 recipes/wip/{ => net}/telegram-desktop/recipe.toml | 0 recipes/wip/{ => security}/sn0int/recipe.toml | 0 recipes/wip/{ => security}/sniffglue/recipe.toml | 0 recipes/wip/{ => security}/sniffnet/recipe.toml | 0 recipes/wip/{ => sound}/pulseaudio/recipe.toml | 0 recipes/wip/{ => sound}/sndio/recipe.toml | 0 recipes/wip/{ => sound}/symphonia-play/recipe.toml | 0 recipes/wip/{ => tools}/vlc/recipe.toml | 0 recipes/wip/{ => web}/chromium/recipe.toml | 0 recipes/wip/{net => web}/firefox-esr/recipe.toml | 0 26 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => libs/openal}/openblas/recipe.toml (100%) rename recipes/wip/{ => libs/openal}/opencv4/recipe.toml (100%) rename recipes/wip/{ => libs/openal}/openjpeg/recipe.toml (100%) rename recipes/wip/{ => libs/openal}/opus/recipe.toml (100%) rename recipes/wip/{ => libs/openal}/opusfile/recipe.toml (100%) rename recipes/wip/{ => libs/openal}/raylib/recipe.toml (100%) rename recipes/wip/{ => libs/openal}/rdflib/recipe.toml (100%) rename recipes/wip/{ => libs}/openal/recipe.toml (100%) rename recipes/wip/{ => math}/numbat/recipe.toml (100%) rename recipes/wip/{ => net}/i2pd/recipe.toml (100%) rename recipes/wip/{ => net}/lokinet/recipe.toml (100%) rename recipes/wip/{ => net}/lynx/recipe.toml (100%) rename recipes/wip/{ => net}/netscanner/recipe.toml (100%) rename recipes/wip/{ => net}/nmap/recipe.toml (100%) rename recipes/wip/{ => net}/nostr-rs-relay/recipe.toml (100%) rename recipes/wip/{ => net}/ntpd-rs/recipe.toml (100%) rename recipes/wip/{ => net}/telegram-desktop/recipe.toml (100%) rename recipes/wip/{ => security}/sn0int/recipe.toml (100%) rename recipes/wip/{ => security}/sniffglue/recipe.toml (100%) rename recipes/wip/{ => security}/sniffnet/recipe.toml (100%) rename recipes/wip/{ => sound}/pulseaudio/recipe.toml (100%) rename recipes/wip/{ => sound}/sndio/recipe.toml (100%) rename recipes/wip/{ => sound}/symphonia-play/recipe.toml (100%) rename recipes/wip/{ => tools}/vlc/recipe.toml (100%) rename recipes/wip/{ => web}/chromium/recipe.toml (100%) rename recipes/wip/{net => web}/firefox-esr/recipe.toml (100%) diff --git a/recipes/wip/openblas/recipe.toml b/recipes/wip/libs/openal/openblas/recipe.toml similarity index 100% rename from recipes/wip/openblas/recipe.toml rename to recipes/wip/libs/openal/openblas/recipe.toml diff --git a/recipes/wip/opencv4/recipe.toml b/recipes/wip/libs/openal/opencv4/recipe.toml similarity index 100% rename from recipes/wip/opencv4/recipe.toml rename to recipes/wip/libs/openal/opencv4/recipe.toml diff --git a/recipes/wip/openjpeg/recipe.toml b/recipes/wip/libs/openal/openjpeg/recipe.toml similarity index 100% rename from recipes/wip/openjpeg/recipe.toml rename to recipes/wip/libs/openal/openjpeg/recipe.toml diff --git a/recipes/wip/opus/recipe.toml b/recipes/wip/libs/openal/opus/recipe.toml similarity index 100% rename from recipes/wip/opus/recipe.toml rename to recipes/wip/libs/openal/opus/recipe.toml diff --git a/recipes/wip/opusfile/recipe.toml b/recipes/wip/libs/openal/opusfile/recipe.toml similarity index 100% rename from recipes/wip/opusfile/recipe.toml rename to recipes/wip/libs/openal/opusfile/recipe.toml diff --git a/recipes/wip/raylib/recipe.toml b/recipes/wip/libs/openal/raylib/recipe.toml similarity index 100% rename from recipes/wip/raylib/recipe.toml rename to recipes/wip/libs/openal/raylib/recipe.toml diff --git a/recipes/wip/rdflib/recipe.toml b/recipes/wip/libs/openal/rdflib/recipe.toml similarity index 100% rename from recipes/wip/rdflib/recipe.toml rename to recipes/wip/libs/openal/rdflib/recipe.toml diff --git a/recipes/wip/openal/recipe.toml b/recipes/wip/libs/openal/recipe.toml similarity index 100% rename from recipes/wip/openal/recipe.toml rename to recipes/wip/libs/openal/recipe.toml diff --git a/recipes/wip/numbat/recipe.toml b/recipes/wip/math/numbat/recipe.toml similarity index 100% rename from recipes/wip/numbat/recipe.toml rename to recipes/wip/math/numbat/recipe.toml diff --git a/recipes/wip/i2pd/recipe.toml b/recipes/wip/net/i2pd/recipe.toml similarity index 100% rename from recipes/wip/i2pd/recipe.toml rename to recipes/wip/net/i2pd/recipe.toml diff --git a/recipes/wip/lokinet/recipe.toml b/recipes/wip/net/lokinet/recipe.toml similarity index 100% rename from recipes/wip/lokinet/recipe.toml rename to recipes/wip/net/lokinet/recipe.toml diff --git a/recipes/wip/lynx/recipe.toml b/recipes/wip/net/lynx/recipe.toml similarity index 100% rename from recipes/wip/lynx/recipe.toml rename to recipes/wip/net/lynx/recipe.toml diff --git a/recipes/wip/netscanner/recipe.toml b/recipes/wip/net/netscanner/recipe.toml similarity index 100% rename from recipes/wip/netscanner/recipe.toml rename to recipes/wip/net/netscanner/recipe.toml diff --git a/recipes/wip/nmap/recipe.toml b/recipes/wip/net/nmap/recipe.toml similarity index 100% rename from recipes/wip/nmap/recipe.toml rename to recipes/wip/net/nmap/recipe.toml diff --git a/recipes/wip/nostr-rs-relay/recipe.toml b/recipes/wip/net/nostr-rs-relay/recipe.toml similarity index 100% rename from recipes/wip/nostr-rs-relay/recipe.toml rename to recipes/wip/net/nostr-rs-relay/recipe.toml diff --git a/recipes/wip/ntpd-rs/recipe.toml b/recipes/wip/net/ntpd-rs/recipe.toml similarity index 100% rename from recipes/wip/ntpd-rs/recipe.toml rename to recipes/wip/net/ntpd-rs/recipe.toml diff --git a/recipes/wip/telegram-desktop/recipe.toml b/recipes/wip/net/telegram-desktop/recipe.toml similarity index 100% rename from recipes/wip/telegram-desktop/recipe.toml rename to recipes/wip/net/telegram-desktop/recipe.toml diff --git a/recipes/wip/sn0int/recipe.toml b/recipes/wip/security/sn0int/recipe.toml similarity index 100% rename from recipes/wip/sn0int/recipe.toml rename to recipes/wip/security/sn0int/recipe.toml diff --git a/recipes/wip/sniffglue/recipe.toml b/recipes/wip/security/sniffglue/recipe.toml similarity index 100% rename from recipes/wip/sniffglue/recipe.toml rename to recipes/wip/security/sniffglue/recipe.toml diff --git a/recipes/wip/sniffnet/recipe.toml b/recipes/wip/security/sniffnet/recipe.toml similarity index 100% rename from recipes/wip/sniffnet/recipe.toml rename to recipes/wip/security/sniffnet/recipe.toml diff --git a/recipes/wip/pulseaudio/recipe.toml b/recipes/wip/sound/pulseaudio/recipe.toml similarity index 100% rename from recipes/wip/pulseaudio/recipe.toml rename to recipes/wip/sound/pulseaudio/recipe.toml diff --git a/recipes/wip/sndio/recipe.toml b/recipes/wip/sound/sndio/recipe.toml similarity index 100% rename from recipes/wip/sndio/recipe.toml rename to recipes/wip/sound/sndio/recipe.toml diff --git a/recipes/wip/symphonia-play/recipe.toml b/recipes/wip/sound/symphonia-play/recipe.toml similarity index 100% rename from recipes/wip/symphonia-play/recipe.toml rename to recipes/wip/sound/symphonia-play/recipe.toml diff --git a/recipes/wip/vlc/recipe.toml b/recipes/wip/tools/vlc/recipe.toml similarity index 100% rename from recipes/wip/vlc/recipe.toml rename to recipes/wip/tools/vlc/recipe.toml diff --git a/recipes/wip/chromium/recipe.toml b/recipes/wip/web/chromium/recipe.toml similarity index 100% rename from recipes/wip/chromium/recipe.toml rename to recipes/wip/web/chromium/recipe.toml diff --git a/recipes/wip/net/firefox-esr/recipe.toml b/recipes/wip/web/firefox-esr/recipe.toml similarity index 100% rename from recipes/wip/net/firefox-esr/recipe.toml rename to recipes/wip/web/firefox-esr/recipe.toml From cd406620ab189da82471e4acba500a2589aa9a29 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 13 Feb 2024 12:28:54 +0000 Subject: [PATCH 1554/3180] move recipes --- recipes/wip/{ => demos}/mesa-demos/recipe.toml | 0 recipes/wip/{ => finance}/nakamoto-wallet/recipe.toml | 0 recipes/wip/{ => fuse}/dwarfs/recipe.toml | 0 recipes/wip/{ => fuse}/ntfs-3g/recipe.toml | 0 recipes/wip/{ => fuse}/pifs/recipe.toml | 0 recipes/wip/{ => fuse}/s3fs/recipe.toml | 0 recipes/wip/{ => fuse}/sshfs/recipe.toml | 0 recipes/wip/{ => games}/gzdoom/recipe.toml | 0 recipes/wip/{tools => graphics}/blender-lts/recipe.toml | 0 recipes/wip/{tools => graphics}/blender/recipe.toml | 0 recipes/wip/{tools => graphics}/gimp/recipe.toml | 0 recipes/wip/{ => graphics}/graphicsmagick/recipe.toml | 0 recipes/wip/{ => graphics}/graphviz/recipe.toml | 0 recipes/wip/{ => graphics}/imagemagick/recipe.toml | 0 recipes/wip/{ => graphics}/inkscape/recipe.toml | 0 recipes/wip/{tools => graphics}/krita/recipe.toml | 0 16 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => demos}/mesa-demos/recipe.toml (100%) rename recipes/wip/{ => finance}/nakamoto-wallet/recipe.toml (100%) rename recipes/wip/{ => fuse}/dwarfs/recipe.toml (100%) rename recipes/wip/{ => fuse}/ntfs-3g/recipe.toml (100%) rename recipes/wip/{ => fuse}/pifs/recipe.toml (100%) rename recipes/wip/{ => fuse}/s3fs/recipe.toml (100%) rename recipes/wip/{ => fuse}/sshfs/recipe.toml (100%) rename recipes/wip/{ => games}/gzdoom/recipe.toml (100%) rename recipes/wip/{tools => graphics}/blender-lts/recipe.toml (100%) rename recipes/wip/{tools => graphics}/blender/recipe.toml (100%) rename recipes/wip/{tools => graphics}/gimp/recipe.toml (100%) rename recipes/wip/{ => graphics}/graphicsmagick/recipe.toml (100%) rename recipes/wip/{ => graphics}/graphviz/recipe.toml (100%) rename recipes/wip/{ => graphics}/imagemagick/recipe.toml (100%) rename recipes/wip/{ => graphics}/inkscape/recipe.toml (100%) rename recipes/wip/{tools => graphics}/krita/recipe.toml (100%) diff --git a/recipes/wip/mesa-demos/recipe.toml b/recipes/wip/demos/mesa-demos/recipe.toml similarity index 100% rename from recipes/wip/mesa-demos/recipe.toml rename to recipes/wip/demos/mesa-demos/recipe.toml diff --git a/recipes/wip/nakamoto-wallet/recipe.toml b/recipes/wip/finance/nakamoto-wallet/recipe.toml similarity index 100% rename from recipes/wip/nakamoto-wallet/recipe.toml rename to recipes/wip/finance/nakamoto-wallet/recipe.toml diff --git a/recipes/wip/dwarfs/recipe.toml b/recipes/wip/fuse/dwarfs/recipe.toml similarity index 100% rename from recipes/wip/dwarfs/recipe.toml rename to recipes/wip/fuse/dwarfs/recipe.toml diff --git a/recipes/wip/ntfs-3g/recipe.toml b/recipes/wip/fuse/ntfs-3g/recipe.toml similarity index 100% rename from recipes/wip/ntfs-3g/recipe.toml rename to recipes/wip/fuse/ntfs-3g/recipe.toml diff --git a/recipes/wip/pifs/recipe.toml b/recipes/wip/fuse/pifs/recipe.toml similarity index 100% rename from recipes/wip/pifs/recipe.toml rename to recipes/wip/fuse/pifs/recipe.toml diff --git a/recipes/wip/s3fs/recipe.toml b/recipes/wip/fuse/s3fs/recipe.toml similarity index 100% rename from recipes/wip/s3fs/recipe.toml rename to recipes/wip/fuse/s3fs/recipe.toml diff --git a/recipes/wip/sshfs/recipe.toml b/recipes/wip/fuse/sshfs/recipe.toml similarity index 100% rename from recipes/wip/sshfs/recipe.toml rename to recipes/wip/fuse/sshfs/recipe.toml diff --git a/recipes/wip/gzdoom/recipe.toml b/recipes/wip/games/gzdoom/recipe.toml similarity index 100% rename from recipes/wip/gzdoom/recipe.toml rename to recipes/wip/games/gzdoom/recipe.toml diff --git a/recipes/wip/tools/blender-lts/recipe.toml b/recipes/wip/graphics/blender-lts/recipe.toml similarity index 100% rename from recipes/wip/tools/blender-lts/recipe.toml rename to recipes/wip/graphics/blender-lts/recipe.toml diff --git a/recipes/wip/tools/blender/recipe.toml b/recipes/wip/graphics/blender/recipe.toml similarity index 100% rename from recipes/wip/tools/blender/recipe.toml rename to recipes/wip/graphics/blender/recipe.toml diff --git a/recipes/wip/tools/gimp/recipe.toml b/recipes/wip/graphics/gimp/recipe.toml similarity index 100% rename from recipes/wip/tools/gimp/recipe.toml rename to recipes/wip/graphics/gimp/recipe.toml diff --git a/recipes/wip/graphicsmagick/recipe.toml b/recipes/wip/graphics/graphicsmagick/recipe.toml similarity index 100% rename from recipes/wip/graphicsmagick/recipe.toml rename to recipes/wip/graphics/graphicsmagick/recipe.toml diff --git a/recipes/wip/graphviz/recipe.toml b/recipes/wip/graphics/graphviz/recipe.toml similarity index 100% rename from recipes/wip/graphviz/recipe.toml rename to recipes/wip/graphics/graphviz/recipe.toml diff --git a/recipes/wip/imagemagick/recipe.toml b/recipes/wip/graphics/imagemagick/recipe.toml similarity index 100% rename from recipes/wip/imagemagick/recipe.toml rename to recipes/wip/graphics/imagemagick/recipe.toml diff --git a/recipes/wip/inkscape/recipe.toml b/recipes/wip/graphics/inkscape/recipe.toml similarity index 100% rename from recipes/wip/inkscape/recipe.toml rename to recipes/wip/graphics/inkscape/recipe.toml diff --git a/recipes/wip/tools/krita/recipe.toml b/recipes/wip/graphics/krita/recipe.toml similarity index 100% rename from recipes/wip/tools/krita/recipe.toml rename to recipes/wip/graphics/krita/recipe.toml From 29bfced5ab5323e35b71d47248c8f32ee3037e9e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 13 Feb 2024 12:32:38 +0000 Subject: [PATCH 1555/3180] move recipes --- recipes/wip/games/{0ad => }/0ad-data/recipe.toml | 0 recipes/wip/games/{0ad => }/asmfish/recipe.toml | 0 recipes/wip/games/{0ad => }/battle-of-wesnoth/recipe.toml | 0 recipes/wip/games/{0ad => }/battleship-rs/recipe.toml | 0 recipes/wip/games/{0ad => }/betterspades/recipe.toml | 0 recipes/wip/games/{0ad => }/call-of-ferris/recipe.toml | 0 recipes/wip/games/{0ad => }/chess-tui/recipe.toml | 0 recipes/wip/games/{0ad => }/chocolate-doom/recipe.toml | 0 recipes/wip/games/{0ad => }/crispy-doom/recipe.toml | 0 recipes/wip/games/{0ad => }/cuberite/recipe.toml | 0 recipes/wip/games/{0ad => }/dcss/recipe.toml | 0 recipes/wip/games/{0ad => }/et-legacy/recipe.toml | 0 recipes/wip/games/{0ad => }/game-of-life-rs/recipe.toml | 0 recipes/wip/games/{0ad => }/ioquake3/recipe.toml | 0 recipes/wip/games/{0ad => }/minesweep-rs/recipe.toml | 0 recipes/wip/games/{0ad => }/minetest-data/recipe.toml | 0 recipes/wip/games/{0ad => }/minetest/recipe.toml | 0 recipes/wip/{ => games}/naev/recipe.toml | 0 recipes/wip/games/{0ad => }/openarena/recipe.toml | 0 recipes/wip/games/{0ad => }/openlara/recipe.toml | 0 recipes/wip/games/{0ad => }/openspades/recipe.toml | 0 recipes/wip/games/{0ad => }/rbdoom3-bfg/recipe.toml | 0 recipes/wip/games/{0ad => }/stockfish/recipe.toml | 0 recipes/wip/games/{0ad => }/supertuxkart/recipe.toml | 0 recipes/wip/games/{0ad => }/tic-tac-toe-rs/recipe.toml | 0 recipes/wip/games/{0ad => }/unvanquished-benchmarks/recipe.toml | 0 recipes/wip/games/{0ad => }/unvanquished/recipe.toml | 0 recipes/wip/games/{0ad => }/veloren/recipe.toml | 0 recipes/wip/games/{0ad => }/vkquake/recipe.toml | 0 recipes/wip/games/{0ad => }/vkquake2/recipe.toml | 0 recipes/wip/games/{0ad => }/warsow/recipe.toml | 0 recipes/wip/games/{0ad => }/xash3d-fwgs/recipe.toml | 0 recipes/wip/games/{0ad => }/yquake2/recipe.toml | 0 recipes/wip/games/{0ad => }/zerospades/recipe.toml | 0 recipes/wip/{ => net}/arti/recipe.toml | 0 35 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/games/{0ad => }/0ad-data/recipe.toml (100%) rename recipes/wip/games/{0ad => }/asmfish/recipe.toml (100%) rename recipes/wip/games/{0ad => }/battle-of-wesnoth/recipe.toml (100%) rename recipes/wip/games/{0ad => }/battleship-rs/recipe.toml (100%) rename recipes/wip/games/{0ad => }/betterspades/recipe.toml (100%) rename recipes/wip/games/{0ad => }/call-of-ferris/recipe.toml (100%) rename recipes/wip/games/{0ad => }/chess-tui/recipe.toml (100%) rename recipes/wip/games/{0ad => }/chocolate-doom/recipe.toml (100%) rename recipes/wip/games/{0ad => }/crispy-doom/recipe.toml (100%) rename recipes/wip/games/{0ad => }/cuberite/recipe.toml (100%) rename recipes/wip/games/{0ad => }/dcss/recipe.toml (100%) rename recipes/wip/games/{0ad => }/et-legacy/recipe.toml (100%) rename recipes/wip/games/{0ad => }/game-of-life-rs/recipe.toml (100%) rename recipes/wip/games/{0ad => }/ioquake3/recipe.toml (100%) rename recipes/wip/games/{0ad => }/minesweep-rs/recipe.toml (100%) rename recipes/wip/games/{0ad => }/minetest-data/recipe.toml (100%) rename recipes/wip/games/{0ad => }/minetest/recipe.toml (100%) rename recipes/wip/{ => games}/naev/recipe.toml (100%) rename recipes/wip/games/{0ad => }/openarena/recipe.toml (100%) rename recipes/wip/games/{0ad => }/openlara/recipe.toml (100%) rename recipes/wip/games/{0ad => }/openspades/recipe.toml (100%) rename recipes/wip/games/{0ad => }/rbdoom3-bfg/recipe.toml (100%) rename recipes/wip/games/{0ad => }/stockfish/recipe.toml (100%) rename recipes/wip/games/{0ad => }/supertuxkart/recipe.toml (100%) rename recipes/wip/games/{0ad => }/tic-tac-toe-rs/recipe.toml (100%) rename recipes/wip/games/{0ad => }/unvanquished-benchmarks/recipe.toml (100%) rename recipes/wip/games/{0ad => }/unvanquished/recipe.toml (100%) rename recipes/wip/games/{0ad => }/veloren/recipe.toml (100%) rename recipes/wip/games/{0ad => }/vkquake/recipe.toml (100%) rename recipes/wip/games/{0ad => }/vkquake2/recipe.toml (100%) rename recipes/wip/games/{0ad => }/warsow/recipe.toml (100%) rename recipes/wip/games/{0ad => }/xash3d-fwgs/recipe.toml (100%) rename recipes/wip/games/{0ad => }/yquake2/recipe.toml (100%) rename recipes/wip/games/{0ad => }/zerospades/recipe.toml (100%) rename recipes/wip/{ => net}/arti/recipe.toml (100%) diff --git a/recipes/wip/games/0ad/0ad-data/recipe.toml b/recipes/wip/games/0ad-data/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/0ad-data/recipe.toml rename to recipes/wip/games/0ad-data/recipe.toml diff --git a/recipes/wip/games/0ad/asmfish/recipe.toml b/recipes/wip/games/asmfish/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/asmfish/recipe.toml rename to recipes/wip/games/asmfish/recipe.toml diff --git a/recipes/wip/games/0ad/battle-of-wesnoth/recipe.toml b/recipes/wip/games/battle-of-wesnoth/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/battle-of-wesnoth/recipe.toml rename to recipes/wip/games/battle-of-wesnoth/recipe.toml diff --git a/recipes/wip/games/0ad/battleship-rs/recipe.toml b/recipes/wip/games/battleship-rs/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/battleship-rs/recipe.toml rename to recipes/wip/games/battleship-rs/recipe.toml diff --git a/recipes/wip/games/0ad/betterspades/recipe.toml b/recipes/wip/games/betterspades/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/betterspades/recipe.toml rename to recipes/wip/games/betterspades/recipe.toml diff --git a/recipes/wip/games/0ad/call-of-ferris/recipe.toml b/recipes/wip/games/call-of-ferris/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/call-of-ferris/recipe.toml rename to recipes/wip/games/call-of-ferris/recipe.toml diff --git a/recipes/wip/games/0ad/chess-tui/recipe.toml b/recipes/wip/games/chess-tui/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/chess-tui/recipe.toml rename to recipes/wip/games/chess-tui/recipe.toml diff --git a/recipes/wip/games/0ad/chocolate-doom/recipe.toml b/recipes/wip/games/chocolate-doom/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/chocolate-doom/recipe.toml rename to recipes/wip/games/chocolate-doom/recipe.toml diff --git a/recipes/wip/games/0ad/crispy-doom/recipe.toml b/recipes/wip/games/crispy-doom/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/crispy-doom/recipe.toml rename to recipes/wip/games/crispy-doom/recipe.toml diff --git a/recipes/wip/games/0ad/cuberite/recipe.toml b/recipes/wip/games/cuberite/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/cuberite/recipe.toml rename to recipes/wip/games/cuberite/recipe.toml diff --git a/recipes/wip/games/0ad/dcss/recipe.toml b/recipes/wip/games/dcss/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/dcss/recipe.toml rename to recipes/wip/games/dcss/recipe.toml diff --git a/recipes/wip/games/0ad/et-legacy/recipe.toml b/recipes/wip/games/et-legacy/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/et-legacy/recipe.toml rename to recipes/wip/games/et-legacy/recipe.toml diff --git a/recipes/wip/games/0ad/game-of-life-rs/recipe.toml b/recipes/wip/games/game-of-life-rs/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/game-of-life-rs/recipe.toml rename to recipes/wip/games/game-of-life-rs/recipe.toml diff --git a/recipes/wip/games/0ad/ioquake3/recipe.toml b/recipes/wip/games/ioquake3/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/ioquake3/recipe.toml rename to recipes/wip/games/ioquake3/recipe.toml diff --git a/recipes/wip/games/0ad/minesweep-rs/recipe.toml b/recipes/wip/games/minesweep-rs/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/minesweep-rs/recipe.toml rename to recipes/wip/games/minesweep-rs/recipe.toml diff --git a/recipes/wip/games/0ad/minetest-data/recipe.toml b/recipes/wip/games/minetest-data/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/minetest-data/recipe.toml rename to recipes/wip/games/minetest-data/recipe.toml diff --git a/recipes/wip/games/0ad/minetest/recipe.toml b/recipes/wip/games/minetest/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/minetest/recipe.toml rename to recipes/wip/games/minetest/recipe.toml diff --git a/recipes/wip/naev/recipe.toml b/recipes/wip/games/naev/recipe.toml similarity index 100% rename from recipes/wip/naev/recipe.toml rename to recipes/wip/games/naev/recipe.toml diff --git a/recipes/wip/games/0ad/openarena/recipe.toml b/recipes/wip/games/openarena/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/openarena/recipe.toml rename to recipes/wip/games/openarena/recipe.toml diff --git a/recipes/wip/games/0ad/openlara/recipe.toml b/recipes/wip/games/openlara/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/openlara/recipe.toml rename to recipes/wip/games/openlara/recipe.toml diff --git a/recipes/wip/games/0ad/openspades/recipe.toml b/recipes/wip/games/openspades/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/openspades/recipe.toml rename to recipes/wip/games/openspades/recipe.toml diff --git a/recipes/wip/games/0ad/rbdoom3-bfg/recipe.toml b/recipes/wip/games/rbdoom3-bfg/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/rbdoom3-bfg/recipe.toml rename to recipes/wip/games/rbdoom3-bfg/recipe.toml diff --git a/recipes/wip/games/0ad/stockfish/recipe.toml b/recipes/wip/games/stockfish/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/stockfish/recipe.toml rename to recipes/wip/games/stockfish/recipe.toml diff --git a/recipes/wip/games/0ad/supertuxkart/recipe.toml b/recipes/wip/games/supertuxkart/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/supertuxkart/recipe.toml rename to recipes/wip/games/supertuxkart/recipe.toml diff --git a/recipes/wip/games/0ad/tic-tac-toe-rs/recipe.toml b/recipes/wip/games/tic-tac-toe-rs/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/tic-tac-toe-rs/recipe.toml rename to recipes/wip/games/tic-tac-toe-rs/recipe.toml diff --git a/recipes/wip/games/0ad/unvanquished-benchmarks/recipe.toml b/recipes/wip/games/unvanquished-benchmarks/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/unvanquished-benchmarks/recipe.toml rename to recipes/wip/games/unvanquished-benchmarks/recipe.toml diff --git a/recipes/wip/games/0ad/unvanquished/recipe.toml b/recipes/wip/games/unvanquished/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/unvanquished/recipe.toml rename to recipes/wip/games/unvanquished/recipe.toml diff --git a/recipes/wip/games/0ad/veloren/recipe.toml b/recipes/wip/games/veloren/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/veloren/recipe.toml rename to recipes/wip/games/veloren/recipe.toml diff --git a/recipes/wip/games/0ad/vkquake/recipe.toml b/recipes/wip/games/vkquake/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/vkquake/recipe.toml rename to recipes/wip/games/vkquake/recipe.toml diff --git a/recipes/wip/games/0ad/vkquake2/recipe.toml b/recipes/wip/games/vkquake2/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/vkquake2/recipe.toml rename to recipes/wip/games/vkquake2/recipe.toml diff --git a/recipes/wip/games/0ad/warsow/recipe.toml b/recipes/wip/games/warsow/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/warsow/recipe.toml rename to recipes/wip/games/warsow/recipe.toml diff --git a/recipes/wip/games/0ad/xash3d-fwgs/recipe.toml b/recipes/wip/games/xash3d-fwgs/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/xash3d-fwgs/recipe.toml rename to recipes/wip/games/xash3d-fwgs/recipe.toml diff --git a/recipes/wip/games/0ad/yquake2/recipe.toml b/recipes/wip/games/yquake2/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/yquake2/recipe.toml rename to recipes/wip/games/yquake2/recipe.toml diff --git a/recipes/wip/games/0ad/zerospades/recipe.toml b/recipes/wip/games/zerospades/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/zerospades/recipe.toml rename to recipes/wip/games/zerospades/recipe.toml diff --git a/recipes/wip/arti/recipe.toml b/recipes/wip/net/arti/recipe.toml similarity index 100% rename from recipes/wip/arti/recipe.toml rename to recipes/wip/net/arti/recipe.toml From 03aeb579700aa3c2f83746b4a46aaea9ba94b3ef Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 13 Feb 2024 12:41:00 +0000 Subject: [PATCH 1556/3180] move recipes --- recipes/wip/{ => demos}/bevy-engine/recipe.toml | 0 recipes/wip/{ => office}/libreoffice-dictionaries/recipe.toml | 0 recipes/wip/{ => office}/libreoffice-translations/recipe.toml | 0 recipes/wip/{tools => office}/libreoffice/recipe.toml | 0 recipes/wip/{ => security}/cotp/recipe.toml | 0 recipes/wip/{ => wayland}/sway/recipe.toml | 0 recipes/wip/{ => wayland}/wayland-protocols/recipe.toml | 0 recipes/wip/{ => wayland}/wayland-utils/recipe.toml | 0 recipes/wip/{ => wayland}/waylandpp/recipe.toml | 0 recipes/wip/{ => wayland}/xwayland/recipe.toml | 0 10 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => demos}/bevy-engine/recipe.toml (100%) rename recipes/wip/{ => office}/libreoffice-dictionaries/recipe.toml (100%) rename recipes/wip/{ => office}/libreoffice-translations/recipe.toml (100%) rename recipes/wip/{tools => office}/libreoffice/recipe.toml (100%) rename recipes/wip/{ => security}/cotp/recipe.toml (100%) rename recipes/wip/{ => wayland}/sway/recipe.toml (100%) rename recipes/wip/{ => wayland}/wayland-protocols/recipe.toml (100%) rename recipes/wip/{ => wayland}/wayland-utils/recipe.toml (100%) rename recipes/wip/{ => wayland}/waylandpp/recipe.toml (100%) rename recipes/wip/{ => wayland}/xwayland/recipe.toml (100%) diff --git a/recipes/wip/bevy-engine/recipe.toml b/recipes/wip/demos/bevy-engine/recipe.toml similarity index 100% rename from recipes/wip/bevy-engine/recipe.toml rename to recipes/wip/demos/bevy-engine/recipe.toml diff --git a/recipes/wip/libreoffice-dictionaries/recipe.toml b/recipes/wip/office/libreoffice-dictionaries/recipe.toml similarity index 100% rename from recipes/wip/libreoffice-dictionaries/recipe.toml rename to recipes/wip/office/libreoffice-dictionaries/recipe.toml diff --git a/recipes/wip/libreoffice-translations/recipe.toml b/recipes/wip/office/libreoffice-translations/recipe.toml similarity index 100% rename from recipes/wip/libreoffice-translations/recipe.toml rename to recipes/wip/office/libreoffice-translations/recipe.toml diff --git a/recipes/wip/tools/libreoffice/recipe.toml b/recipes/wip/office/libreoffice/recipe.toml similarity index 100% rename from recipes/wip/tools/libreoffice/recipe.toml rename to recipes/wip/office/libreoffice/recipe.toml diff --git a/recipes/wip/cotp/recipe.toml b/recipes/wip/security/cotp/recipe.toml similarity index 100% rename from recipes/wip/cotp/recipe.toml rename to recipes/wip/security/cotp/recipe.toml diff --git a/recipes/wip/sway/recipe.toml b/recipes/wip/wayland/sway/recipe.toml similarity index 100% rename from recipes/wip/sway/recipe.toml rename to recipes/wip/wayland/sway/recipe.toml diff --git a/recipes/wip/wayland-protocols/recipe.toml b/recipes/wip/wayland/wayland-protocols/recipe.toml similarity index 100% rename from recipes/wip/wayland-protocols/recipe.toml rename to recipes/wip/wayland/wayland-protocols/recipe.toml diff --git a/recipes/wip/wayland-utils/recipe.toml b/recipes/wip/wayland/wayland-utils/recipe.toml similarity index 100% rename from recipes/wip/wayland-utils/recipe.toml rename to recipes/wip/wayland/wayland-utils/recipe.toml diff --git a/recipes/wip/waylandpp/recipe.toml b/recipes/wip/wayland/waylandpp/recipe.toml similarity index 100% rename from recipes/wip/waylandpp/recipe.toml rename to recipes/wip/wayland/waylandpp/recipe.toml diff --git a/recipes/wip/xwayland/recipe.toml b/recipes/wip/wayland/xwayland/recipe.toml similarity index 100% rename from recipes/wip/xwayland/recipe.toml rename to recipes/wip/wayland/xwayland/recipe.toml From e3aa8ba8b4a48e08f4c7b50353b87f0830808b46 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 13 Feb 2024 13:09:35 +0000 Subject: [PATCH 1557/3180] move recipes --- recipes/wip/{ => db}/cockroachdb/recipe.toml | 0 recipes/wip/{ => db}/influxdb/recipe.toml | 0 recipes/wip/{ => db}/mariadb-lts/recipe.toml | 0 recipes/wip/{ => db}/mariadb/recipe.toml | 0 recipes/wip/{ => db}/mongodb6/recipe.toml | 0 recipes/wip/{ => db}/mongodb7/recipe.toml | 0 recipes/wip/{ => db}/mysql-server/recipe.toml | 0 recipes/wip/{ => db}/mysql-shell/recipe.toml | 0 recipes/wip/{ => db}/postgresql16/recipe.toml | 0 recipes/wip/{ => dev}/defold-engine/recipe.toml | 0 recipes/wip/{ => fuse}/cvmfs/recipe.toml | 0 recipes/wip/{ => libs}/boost/recipe.toml | 0 recipes/wip/{ => net}/transmission/recipe.toml | 0 recipes/wip/{ => wayland}/hyprland/recipe.toml | 0 recipes/wip/{gui => wayland}/niri/recipe.toml | 0 15 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => db}/cockroachdb/recipe.toml (100%) rename recipes/wip/{ => db}/influxdb/recipe.toml (100%) rename recipes/wip/{ => db}/mariadb-lts/recipe.toml (100%) rename recipes/wip/{ => db}/mariadb/recipe.toml (100%) rename recipes/wip/{ => db}/mongodb6/recipe.toml (100%) rename recipes/wip/{ => db}/mongodb7/recipe.toml (100%) rename recipes/wip/{ => db}/mysql-server/recipe.toml (100%) rename recipes/wip/{ => db}/mysql-shell/recipe.toml (100%) rename recipes/wip/{ => db}/postgresql16/recipe.toml (100%) rename recipes/wip/{ => dev}/defold-engine/recipe.toml (100%) rename recipes/wip/{ => fuse}/cvmfs/recipe.toml (100%) rename recipes/wip/{ => libs}/boost/recipe.toml (100%) rename recipes/wip/{ => net}/transmission/recipe.toml (100%) rename recipes/wip/{ => wayland}/hyprland/recipe.toml (100%) rename recipes/wip/{gui => wayland}/niri/recipe.toml (100%) diff --git a/recipes/wip/cockroachdb/recipe.toml b/recipes/wip/db/cockroachdb/recipe.toml similarity index 100% rename from recipes/wip/cockroachdb/recipe.toml rename to recipes/wip/db/cockroachdb/recipe.toml diff --git a/recipes/wip/influxdb/recipe.toml b/recipes/wip/db/influxdb/recipe.toml similarity index 100% rename from recipes/wip/influxdb/recipe.toml rename to recipes/wip/db/influxdb/recipe.toml diff --git a/recipes/wip/mariadb-lts/recipe.toml b/recipes/wip/db/mariadb-lts/recipe.toml similarity index 100% rename from recipes/wip/mariadb-lts/recipe.toml rename to recipes/wip/db/mariadb-lts/recipe.toml diff --git a/recipes/wip/mariadb/recipe.toml b/recipes/wip/db/mariadb/recipe.toml similarity index 100% rename from recipes/wip/mariadb/recipe.toml rename to recipes/wip/db/mariadb/recipe.toml diff --git a/recipes/wip/mongodb6/recipe.toml b/recipes/wip/db/mongodb6/recipe.toml similarity index 100% rename from recipes/wip/mongodb6/recipe.toml rename to recipes/wip/db/mongodb6/recipe.toml diff --git a/recipes/wip/mongodb7/recipe.toml b/recipes/wip/db/mongodb7/recipe.toml similarity index 100% rename from recipes/wip/mongodb7/recipe.toml rename to recipes/wip/db/mongodb7/recipe.toml diff --git a/recipes/wip/mysql-server/recipe.toml b/recipes/wip/db/mysql-server/recipe.toml similarity index 100% rename from recipes/wip/mysql-server/recipe.toml rename to recipes/wip/db/mysql-server/recipe.toml diff --git a/recipes/wip/mysql-shell/recipe.toml b/recipes/wip/db/mysql-shell/recipe.toml similarity index 100% rename from recipes/wip/mysql-shell/recipe.toml rename to recipes/wip/db/mysql-shell/recipe.toml diff --git a/recipes/wip/postgresql16/recipe.toml b/recipes/wip/db/postgresql16/recipe.toml similarity index 100% rename from recipes/wip/postgresql16/recipe.toml rename to recipes/wip/db/postgresql16/recipe.toml diff --git a/recipes/wip/defold-engine/recipe.toml b/recipes/wip/dev/defold-engine/recipe.toml similarity index 100% rename from recipes/wip/defold-engine/recipe.toml rename to recipes/wip/dev/defold-engine/recipe.toml diff --git a/recipes/wip/cvmfs/recipe.toml b/recipes/wip/fuse/cvmfs/recipe.toml similarity index 100% rename from recipes/wip/cvmfs/recipe.toml rename to recipes/wip/fuse/cvmfs/recipe.toml diff --git a/recipes/wip/boost/recipe.toml b/recipes/wip/libs/boost/recipe.toml similarity index 100% rename from recipes/wip/boost/recipe.toml rename to recipes/wip/libs/boost/recipe.toml diff --git a/recipes/wip/transmission/recipe.toml b/recipes/wip/net/transmission/recipe.toml similarity index 100% rename from recipes/wip/transmission/recipe.toml rename to recipes/wip/net/transmission/recipe.toml diff --git a/recipes/wip/hyprland/recipe.toml b/recipes/wip/wayland/hyprland/recipe.toml similarity index 100% rename from recipes/wip/hyprland/recipe.toml rename to recipes/wip/wayland/hyprland/recipe.toml diff --git a/recipes/wip/gui/niri/recipe.toml b/recipes/wip/wayland/niri/recipe.toml similarity index 100% rename from recipes/wip/gui/niri/recipe.toml rename to recipes/wip/wayland/niri/recipe.toml From e9145af115d2e3574995fa909975a0e8546ae6b9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 13 Feb 2024 13:35:33 +0000 Subject: [PATCH 1558/3180] move recipes --- recipes/wip/{ => benchmarks}/dacapo-benchmarks/recipe.toml | 0 recipes/wip/{ => dev}/debugedit/recipe.toml | 0 recipes/wip/{ => emulators}/mupen64plus-audio-sdl/recipe.toml | 0 recipes/wip/{ => emulators}/mupen64plus-core/recipe.toml | 0 recipes/wip/{ => emulators}/mupen64plus-input-sdl/recipe.toml | 0 recipes/wip/{ => emulators}/mupen64plus-ui-console/recipe.toml | 0 recipes/wip/{ => emulators}/mupen64plus-video-glide64/recipe.toml | 0 recipes/wip/{ => emulators}/mupen64plus-video-rice/recipe.toml | 0 recipes/wip/{ => games}/ship-of-harkinian/assaultcube/recipe.toml | 0 recipes/wip/{ => games}/ship-of-harkinian/recipe.toml | 0 recipes/wip/{ => games}/ship-of-harkinian/shockolate/recipe.toml | 0 recipes/wip/{ => games}/ship-of-harkinian/smokin-guns/recipe.toml | 0 recipes/wip/{ => games}/ship-of-harkinian/xonotic/recipe.toml | 0 recipes/wip/{ => sound}/aubio/recipe.toml | 0 14 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => benchmarks}/dacapo-benchmarks/recipe.toml (100%) rename recipes/wip/{ => dev}/debugedit/recipe.toml (100%) rename recipes/wip/{ => emulators}/mupen64plus-audio-sdl/recipe.toml (100%) rename recipes/wip/{ => emulators}/mupen64plus-core/recipe.toml (100%) rename recipes/wip/{ => emulators}/mupen64plus-input-sdl/recipe.toml (100%) rename recipes/wip/{ => emulators}/mupen64plus-ui-console/recipe.toml (100%) rename recipes/wip/{ => emulators}/mupen64plus-video-glide64/recipe.toml (100%) rename recipes/wip/{ => emulators}/mupen64plus-video-rice/recipe.toml (100%) rename recipes/wip/{ => games}/ship-of-harkinian/assaultcube/recipe.toml (100%) rename recipes/wip/{ => games}/ship-of-harkinian/recipe.toml (100%) rename recipes/wip/{ => games}/ship-of-harkinian/shockolate/recipe.toml (100%) rename recipes/wip/{ => games}/ship-of-harkinian/smokin-guns/recipe.toml (100%) rename recipes/wip/{ => games}/ship-of-harkinian/xonotic/recipe.toml (100%) rename recipes/wip/{ => sound}/aubio/recipe.toml (100%) diff --git a/recipes/wip/dacapo-benchmarks/recipe.toml b/recipes/wip/benchmarks/dacapo-benchmarks/recipe.toml similarity index 100% rename from recipes/wip/dacapo-benchmarks/recipe.toml rename to recipes/wip/benchmarks/dacapo-benchmarks/recipe.toml diff --git a/recipes/wip/debugedit/recipe.toml b/recipes/wip/dev/debugedit/recipe.toml similarity index 100% rename from recipes/wip/debugedit/recipe.toml rename to recipes/wip/dev/debugedit/recipe.toml diff --git a/recipes/wip/mupen64plus-audio-sdl/recipe.toml b/recipes/wip/emulators/mupen64plus-audio-sdl/recipe.toml similarity index 100% rename from recipes/wip/mupen64plus-audio-sdl/recipe.toml rename to recipes/wip/emulators/mupen64plus-audio-sdl/recipe.toml diff --git a/recipes/wip/mupen64plus-core/recipe.toml b/recipes/wip/emulators/mupen64plus-core/recipe.toml similarity index 100% rename from recipes/wip/mupen64plus-core/recipe.toml rename to recipes/wip/emulators/mupen64plus-core/recipe.toml diff --git a/recipes/wip/mupen64plus-input-sdl/recipe.toml b/recipes/wip/emulators/mupen64plus-input-sdl/recipe.toml similarity index 100% rename from recipes/wip/mupen64plus-input-sdl/recipe.toml rename to recipes/wip/emulators/mupen64plus-input-sdl/recipe.toml diff --git a/recipes/wip/mupen64plus-ui-console/recipe.toml b/recipes/wip/emulators/mupen64plus-ui-console/recipe.toml similarity index 100% rename from recipes/wip/mupen64plus-ui-console/recipe.toml rename to recipes/wip/emulators/mupen64plus-ui-console/recipe.toml diff --git a/recipes/wip/mupen64plus-video-glide64/recipe.toml b/recipes/wip/emulators/mupen64plus-video-glide64/recipe.toml similarity index 100% rename from recipes/wip/mupen64plus-video-glide64/recipe.toml rename to recipes/wip/emulators/mupen64plus-video-glide64/recipe.toml diff --git a/recipes/wip/mupen64plus-video-rice/recipe.toml b/recipes/wip/emulators/mupen64plus-video-rice/recipe.toml similarity index 100% rename from recipes/wip/mupen64plus-video-rice/recipe.toml rename to recipes/wip/emulators/mupen64plus-video-rice/recipe.toml diff --git a/recipes/wip/ship-of-harkinian/assaultcube/recipe.toml b/recipes/wip/games/ship-of-harkinian/assaultcube/recipe.toml similarity index 100% rename from recipes/wip/ship-of-harkinian/assaultcube/recipe.toml rename to recipes/wip/games/ship-of-harkinian/assaultcube/recipe.toml diff --git a/recipes/wip/ship-of-harkinian/recipe.toml b/recipes/wip/games/ship-of-harkinian/recipe.toml similarity index 100% rename from recipes/wip/ship-of-harkinian/recipe.toml rename to recipes/wip/games/ship-of-harkinian/recipe.toml diff --git a/recipes/wip/ship-of-harkinian/shockolate/recipe.toml b/recipes/wip/games/ship-of-harkinian/shockolate/recipe.toml similarity index 100% rename from recipes/wip/ship-of-harkinian/shockolate/recipe.toml rename to recipes/wip/games/ship-of-harkinian/shockolate/recipe.toml diff --git a/recipes/wip/ship-of-harkinian/smokin-guns/recipe.toml b/recipes/wip/games/ship-of-harkinian/smokin-guns/recipe.toml similarity index 100% rename from recipes/wip/ship-of-harkinian/smokin-guns/recipe.toml rename to recipes/wip/games/ship-of-harkinian/smokin-guns/recipe.toml diff --git a/recipes/wip/ship-of-harkinian/xonotic/recipe.toml b/recipes/wip/games/ship-of-harkinian/xonotic/recipe.toml similarity index 100% rename from recipes/wip/ship-of-harkinian/xonotic/recipe.toml rename to recipes/wip/games/ship-of-harkinian/xonotic/recipe.toml diff --git a/recipes/wip/aubio/recipe.toml b/recipes/wip/sound/aubio/recipe.toml similarity index 100% rename from recipes/wip/aubio/recipe.toml rename to recipes/wip/sound/aubio/recipe.toml From 4a5d3ff4907796d7d2447780fac69db7d779357d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 13 Feb 2024 13:36:48 +0000 Subject: [PATCH 1559/3180] remove duplicated recipe --- .../wip/games/battle-of-wesnoth/recipe.toml | 21 ------------------- 1 file changed, 21 deletions(-) delete mode 100644 recipes/wip/games/battle-of-wesnoth/recipe.toml diff --git a/recipes/wip/games/battle-of-wesnoth/recipe.toml b/recipes/wip/games/battle-of-wesnoth/recipe.toml deleted file mode 100644 index a6e6fb33..00000000 --- a/recipes/wip/games/battle-of-wesnoth/recipe.toml +++ /dev/null @@ -1,21 +0,0 @@ -#TODO missing script for building, see https://github.com/wesnoth/wesnoth/blob/master/INSTALL.md -#TODO require OpenSSL 3.x -[source] -tar = "https://sourceforge.net/projects/wesnoth/files/wesnoth-1.16/wesnoth-1.16.10/wesnoth-1.16.10.tar.bz2/download" -[build] -template = "custom" -dependencies = [ - "boost", - "sdl2", - "sdl2-image", - "sdl2-mixer", - "fontconfig", - "cairo", - "pango", - "libvorbis", - "bzip2", - "zlib", - "openssl1", - "curl", - "readline", -] From 7a45edd4e7fd9d197fe0f0ba60a8691963f9f772 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 13 Feb 2024 13:47:16 +0000 Subject: [PATCH 1560/3180] move recipes --- recipes/wip/{ => dev}/go/recipe.toml | 0 recipes/wip/{ => dev}/php/recipe.toml | 0 recipes/wip/{ => security}/john-the-ripper/recipe.toml | 0 recipes/wip/{ => services}/dbus/recipe.toml | 0 recipes/wip/{ => services}/eudev/recipe.toml | 0 recipes/wip/{ => services}/pipewire/recipe.toml | 0 recipes/wip/{ => services}/seatd/recipe.toml | 0 7 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => dev}/go/recipe.toml (100%) rename recipes/wip/{ => dev}/php/recipe.toml (100%) rename recipes/wip/{ => security}/john-the-ripper/recipe.toml (100%) rename recipes/wip/{ => services}/dbus/recipe.toml (100%) rename recipes/wip/{ => services}/eudev/recipe.toml (100%) rename recipes/wip/{ => services}/pipewire/recipe.toml (100%) rename recipes/wip/{ => services}/seatd/recipe.toml (100%) diff --git a/recipes/wip/go/recipe.toml b/recipes/wip/dev/go/recipe.toml similarity index 100% rename from recipes/wip/go/recipe.toml rename to recipes/wip/dev/go/recipe.toml diff --git a/recipes/wip/php/recipe.toml b/recipes/wip/dev/php/recipe.toml similarity index 100% rename from recipes/wip/php/recipe.toml rename to recipes/wip/dev/php/recipe.toml diff --git a/recipes/wip/john-the-ripper/recipe.toml b/recipes/wip/security/john-the-ripper/recipe.toml similarity index 100% rename from recipes/wip/john-the-ripper/recipe.toml rename to recipes/wip/security/john-the-ripper/recipe.toml diff --git a/recipes/wip/dbus/recipe.toml b/recipes/wip/services/dbus/recipe.toml similarity index 100% rename from recipes/wip/dbus/recipe.toml rename to recipes/wip/services/dbus/recipe.toml diff --git a/recipes/wip/eudev/recipe.toml b/recipes/wip/services/eudev/recipe.toml similarity index 100% rename from recipes/wip/eudev/recipe.toml rename to recipes/wip/services/eudev/recipe.toml diff --git a/recipes/wip/pipewire/recipe.toml b/recipes/wip/services/pipewire/recipe.toml similarity index 100% rename from recipes/wip/pipewire/recipe.toml rename to recipes/wip/services/pipewire/recipe.toml diff --git a/recipes/wip/seatd/recipe.toml b/recipes/wip/services/seatd/recipe.toml similarity index 100% rename from recipes/wip/seatd/recipe.toml rename to recipes/wip/services/seatd/recipe.toml From dd6ecc57d82c829f95610201743eb656e24c86ec Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 13 Feb 2024 13:48:07 +0000 Subject: [PATCH 1561/3180] remove a recipe --- recipes/wip/ryujinx/recipe.toml | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 recipes/wip/ryujinx/recipe.toml diff --git a/recipes/wip/ryujinx/recipe.toml b/recipes/wip/ryujinx/recipe.toml deleted file mode 100644 index 54cd98d9..00000000 --- a/recipes/wip/ryujinx/recipe.toml +++ /dev/null @@ -1,12 +0,0 @@ -#TODO missing script for dotnet, see https://github.com/Ryujinx/Ryujinx#building -#TODO require .NET Framework 8 -#TODO maybe missing dependencies -[source] -git = "https://github.com/Ryujinx/Ryujinx" -[build] -template = "custom" -dependencies = [ - "sdl2", - "freealut", - "openal", -] From 97c3ba1183c980588c11b718a9815dca3c47dd26 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 13 Feb 2024 18:18:57 +0000 Subject: [PATCH 1562/3180] move recipes --- recipes/wip/{ => fonts}/fontfor/recipe.toml | 0 recipes/wip/{ => fonts}/fontforge/recipe.toml | 0 recipes/wip/{ => libs}/freealut/recipe.toml | 0 recipes/wip/{ => libs}/freeglut/recipe.toml | 0 recipes/wip/{ => net}/spadesx/recipe.toml | 0 recipes/wip/{ => security}/rowhammer-test/recipe.toml | 0 recipes/wip/{ => security}/rshijack/recipe.toml | 0 7 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => fonts}/fontfor/recipe.toml (100%) rename recipes/wip/{ => fonts}/fontforge/recipe.toml (100%) rename recipes/wip/{ => libs}/freealut/recipe.toml (100%) rename recipes/wip/{ => libs}/freeglut/recipe.toml (100%) rename recipes/wip/{ => net}/spadesx/recipe.toml (100%) rename recipes/wip/{ => security}/rowhammer-test/recipe.toml (100%) rename recipes/wip/{ => security}/rshijack/recipe.toml (100%) diff --git a/recipes/wip/fontfor/recipe.toml b/recipes/wip/fonts/fontfor/recipe.toml similarity index 100% rename from recipes/wip/fontfor/recipe.toml rename to recipes/wip/fonts/fontfor/recipe.toml diff --git a/recipes/wip/fontforge/recipe.toml b/recipes/wip/fonts/fontforge/recipe.toml similarity index 100% rename from recipes/wip/fontforge/recipe.toml rename to recipes/wip/fonts/fontforge/recipe.toml diff --git a/recipes/wip/freealut/recipe.toml b/recipes/wip/libs/freealut/recipe.toml similarity index 100% rename from recipes/wip/freealut/recipe.toml rename to recipes/wip/libs/freealut/recipe.toml diff --git a/recipes/wip/freeglut/recipe.toml b/recipes/wip/libs/freeglut/recipe.toml similarity index 100% rename from recipes/wip/freeglut/recipe.toml rename to recipes/wip/libs/freeglut/recipe.toml diff --git a/recipes/wip/spadesx/recipe.toml b/recipes/wip/net/spadesx/recipe.toml similarity index 100% rename from recipes/wip/spadesx/recipe.toml rename to recipes/wip/net/spadesx/recipe.toml diff --git a/recipes/wip/rowhammer-test/recipe.toml b/recipes/wip/security/rowhammer-test/recipe.toml similarity index 100% rename from recipes/wip/rowhammer-test/recipe.toml rename to recipes/wip/security/rowhammer-test/recipe.toml diff --git a/recipes/wip/rshijack/recipe.toml b/recipes/wip/security/rshijack/recipe.toml similarity index 100% rename from recipes/wip/rshijack/recipe.toml rename to recipes/wip/security/rshijack/recipe.toml From d6d37c9fbb5f50c9eff15543018f456de8a36e26 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 14 Feb 2024 06:56:50 +0000 Subject: [PATCH 1563/3180] move recipes --- recipes/wip/{ => demos}/lenia/recipe.toml | 0 recipes/wip/{ => dev}/artichoke/recipe.toml | 0 recipes/wip/{ => dev}/bison/recipe.toml | 0 recipes/wip/{ => dev}/inko/recipe.toml | 0 recipes/wip/{ => doc}/doctave/recipe.toml | 0 recipes/wip/{ => emulators}/darling/recipe.toml | 0 recipes/wip/{ => gnome2-common}/gnome3-common/recipe.toml | 0 recipes/wip/{ => gnome2-common}/gnutls3/recipe.toml | 0 recipes/wip/{ => gnome2-common}/gobject-introspection/recipe.toml | 0 recipes/wip/{ => gnome2-common}/imlib2/recipe.toml | 0 recipes/wip/{ => gnome2-common}/iniparser/recipe.toml | 0 recipes/wip/{ => libs}/fftw/recipe.toml | 0 recipes/wip/{ => libs}/fltk/recipe.toml | 0 recipes/wip/{ => libs}/glew/recipe.toml | 0 recipes/wip/{ => libs}/glfw3/recipe.toml | 0 recipes/wip/{ => libs/gtk-engines}/gtk2mm/recipe.toml | 0 recipes/wip/{ => libs/gtk-engines}/gtk3mm/recipe.toml | 0 recipes/wip/{ => libs/gtk-engines}/gtk4mm/recipe.toml | 0 recipes/wip/{ => libs/gtk-engines}/gtkglext/recipe.toml | 0 recipes/wip/{ => libs/gtk-engines}/gtksourceview/recipe.toml | 0 recipes/wip/{ => libs}/gtk-engines/recipe.toml | 0 recipes/wip/{ => libs}/m4/recipe.toml | 0 recipes/wip/{ => libs}/maven/recipe.toml | 0 23 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => demos}/lenia/recipe.toml (100%) rename recipes/wip/{ => dev}/artichoke/recipe.toml (100%) rename recipes/wip/{ => dev}/bison/recipe.toml (100%) rename recipes/wip/{ => dev}/inko/recipe.toml (100%) rename recipes/wip/{ => doc}/doctave/recipe.toml (100%) rename recipes/wip/{ => emulators}/darling/recipe.toml (100%) rename recipes/wip/{ => gnome2-common}/gnome3-common/recipe.toml (100%) rename recipes/wip/{ => gnome2-common}/gnutls3/recipe.toml (100%) rename recipes/wip/{ => gnome2-common}/gobject-introspection/recipe.toml (100%) rename recipes/wip/{ => gnome2-common}/imlib2/recipe.toml (100%) rename recipes/wip/{ => gnome2-common}/iniparser/recipe.toml (100%) rename recipes/wip/{ => libs}/fftw/recipe.toml (100%) rename recipes/wip/{ => libs}/fltk/recipe.toml (100%) rename recipes/wip/{ => libs}/glew/recipe.toml (100%) rename recipes/wip/{ => libs}/glfw3/recipe.toml (100%) rename recipes/wip/{ => libs/gtk-engines}/gtk2mm/recipe.toml (100%) rename recipes/wip/{ => libs/gtk-engines}/gtk3mm/recipe.toml (100%) rename recipes/wip/{ => libs/gtk-engines}/gtk4mm/recipe.toml (100%) rename recipes/wip/{ => libs/gtk-engines}/gtkglext/recipe.toml (100%) rename recipes/wip/{ => libs/gtk-engines}/gtksourceview/recipe.toml (100%) rename recipes/wip/{ => libs}/gtk-engines/recipe.toml (100%) rename recipes/wip/{ => libs}/m4/recipe.toml (100%) rename recipes/wip/{ => libs}/maven/recipe.toml (100%) diff --git a/recipes/wip/lenia/recipe.toml b/recipes/wip/demos/lenia/recipe.toml similarity index 100% rename from recipes/wip/lenia/recipe.toml rename to recipes/wip/demos/lenia/recipe.toml diff --git a/recipes/wip/artichoke/recipe.toml b/recipes/wip/dev/artichoke/recipe.toml similarity index 100% rename from recipes/wip/artichoke/recipe.toml rename to recipes/wip/dev/artichoke/recipe.toml diff --git a/recipes/wip/bison/recipe.toml b/recipes/wip/dev/bison/recipe.toml similarity index 100% rename from recipes/wip/bison/recipe.toml rename to recipes/wip/dev/bison/recipe.toml diff --git a/recipes/wip/inko/recipe.toml b/recipes/wip/dev/inko/recipe.toml similarity index 100% rename from recipes/wip/inko/recipe.toml rename to recipes/wip/dev/inko/recipe.toml diff --git a/recipes/wip/doctave/recipe.toml b/recipes/wip/doc/doctave/recipe.toml similarity index 100% rename from recipes/wip/doctave/recipe.toml rename to recipes/wip/doc/doctave/recipe.toml diff --git a/recipes/wip/darling/recipe.toml b/recipes/wip/emulators/darling/recipe.toml similarity index 100% rename from recipes/wip/darling/recipe.toml rename to recipes/wip/emulators/darling/recipe.toml diff --git a/recipes/wip/gnome3-common/recipe.toml b/recipes/wip/gnome2-common/gnome3-common/recipe.toml similarity index 100% rename from recipes/wip/gnome3-common/recipe.toml rename to recipes/wip/gnome2-common/gnome3-common/recipe.toml diff --git a/recipes/wip/gnutls3/recipe.toml b/recipes/wip/gnome2-common/gnutls3/recipe.toml similarity index 100% rename from recipes/wip/gnutls3/recipe.toml rename to recipes/wip/gnome2-common/gnutls3/recipe.toml diff --git a/recipes/wip/gobject-introspection/recipe.toml b/recipes/wip/gnome2-common/gobject-introspection/recipe.toml similarity index 100% rename from recipes/wip/gobject-introspection/recipe.toml rename to recipes/wip/gnome2-common/gobject-introspection/recipe.toml diff --git a/recipes/wip/imlib2/recipe.toml b/recipes/wip/gnome2-common/imlib2/recipe.toml similarity index 100% rename from recipes/wip/imlib2/recipe.toml rename to recipes/wip/gnome2-common/imlib2/recipe.toml diff --git a/recipes/wip/iniparser/recipe.toml b/recipes/wip/gnome2-common/iniparser/recipe.toml similarity index 100% rename from recipes/wip/iniparser/recipe.toml rename to recipes/wip/gnome2-common/iniparser/recipe.toml diff --git a/recipes/wip/fftw/recipe.toml b/recipes/wip/libs/fftw/recipe.toml similarity index 100% rename from recipes/wip/fftw/recipe.toml rename to recipes/wip/libs/fftw/recipe.toml diff --git a/recipes/wip/fltk/recipe.toml b/recipes/wip/libs/fltk/recipe.toml similarity index 100% rename from recipes/wip/fltk/recipe.toml rename to recipes/wip/libs/fltk/recipe.toml diff --git a/recipes/wip/glew/recipe.toml b/recipes/wip/libs/glew/recipe.toml similarity index 100% rename from recipes/wip/glew/recipe.toml rename to recipes/wip/libs/glew/recipe.toml diff --git a/recipes/wip/glfw3/recipe.toml b/recipes/wip/libs/glfw3/recipe.toml similarity index 100% rename from recipes/wip/glfw3/recipe.toml rename to recipes/wip/libs/glfw3/recipe.toml diff --git a/recipes/wip/gtk2mm/recipe.toml b/recipes/wip/libs/gtk-engines/gtk2mm/recipe.toml similarity index 100% rename from recipes/wip/gtk2mm/recipe.toml rename to recipes/wip/libs/gtk-engines/gtk2mm/recipe.toml diff --git a/recipes/wip/gtk3mm/recipe.toml b/recipes/wip/libs/gtk-engines/gtk3mm/recipe.toml similarity index 100% rename from recipes/wip/gtk3mm/recipe.toml rename to recipes/wip/libs/gtk-engines/gtk3mm/recipe.toml diff --git a/recipes/wip/gtk4mm/recipe.toml b/recipes/wip/libs/gtk-engines/gtk4mm/recipe.toml similarity index 100% rename from recipes/wip/gtk4mm/recipe.toml rename to recipes/wip/libs/gtk-engines/gtk4mm/recipe.toml diff --git a/recipes/wip/gtkglext/recipe.toml b/recipes/wip/libs/gtk-engines/gtkglext/recipe.toml similarity index 100% rename from recipes/wip/gtkglext/recipe.toml rename to recipes/wip/libs/gtk-engines/gtkglext/recipe.toml diff --git a/recipes/wip/gtksourceview/recipe.toml b/recipes/wip/libs/gtk-engines/gtksourceview/recipe.toml similarity index 100% rename from recipes/wip/gtksourceview/recipe.toml rename to recipes/wip/libs/gtk-engines/gtksourceview/recipe.toml diff --git a/recipes/wip/gtk-engines/recipe.toml b/recipes/wip/libs/gtk-engines/recipe.toml similarity index 100% rename from recipes/wip/gtk-engines/recipe.toml rename to recipes/wip/libs/gtk-engines/recipe.toml diff --git a/recipes/wip/m4/recipe.toml b/recipes/wip/libs/m4/recipe.toml similarity index 100% rename from recipes/wip/m4/recipe.toml rename to recipes/wip/libs/m4/recipe.toml diff --git a/recipes/wip/maven/recipe.toml b/recipes/wip/libs/maven/recipe.toml similarity index 100% rename from recipes/wip/maven/recipe.toml rename to recipes/wip/libs/maven/recipe.toml From 1bf33106fa3dcac2187e1ee1a8556c5d5a7743a7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 15 Feb 2024 02:29:25 +0000 Subject: [PATCH 1564/3180] add recipes --- recipes/wip/games/uqm/recipe.toml | 13 +++++++++++++ recipes/wip/net/freenginx/recipe.toml | 5 +++++ recipes/wip/net/nginx/recipe.toml | 5 +++++ 3 files changed, 23 insertions(+) create mode 100644 recipes/wip/games/uqm/recipe.toml create mode 100644 recipes/wip/net/freenginx/recipe.toml create mode 100644 recipes/wip/net/nginx/recipe.toml diff --git a/recipes/wip/games/uqm/recipe.toml b/recipes/wip/games/uqm/recipe.toml new file mode 100644 index 00000000..1d01c0a1 --- /dev/null +++ b/recipes/wip/games/uqm/recipe.toml @@ -0,0 +1,13 @@ +#TODO download game data - https://sourceforge.net/projects/sc2/files/UQM/0.8/uqm-0.8.0-content.uqm/download +#TODO missing script, read the INSTALL file inside the tarball +[source] +tar = "https://sourceforge.net/projects/sc2/files/UQM/0.8/uqm-0.8.0-src.tgz/download" +[build] +template = "custom" +dependencies = [ + "sdl2", + "libpng", + "libogg", + "libvorbis", + "zlib", +] diff --git a/recipes/wip/net/freenginx/recipe.toml b/recipes/wip/net/freenginx/recipe.toml new file mode 100644 index 00000000..ce2a0602 --- /dev/null +++ b/recipes/wip/net/freenginx/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://freenginx.org/download/nginx-1.24.0.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/net/nginx/recipe.toml b/recipes/wip/net/nginx/recipe.toml new file mode 100644 index 00000000..ddd37cd9 --- /dev/null +++ b/recipes/wip/net/nginx/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://nginx.org/download/nginx-1.24.0.tar.gz" +[build] +template = "configure" From 92080548bcd42902a8f91e88df1436b7c7aca216 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 15 Feb 2024 02:43:47 +0000 Subject: [PATCH 1565/3180] move recipes --- recipes/wip/{ => benchmarks}/hpcc/recipe.toml | 0 recipes/wip/{ => benchmarks}/hpcg/recipe.toml | 0 recipes/wip/{ => fuse}/glusterfs/recipe.toml | 0 recipes/wip/{ => fuse}/indexfs/recipe.toml | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => benchmarks}/hpcc/recipe.toml (100%) rename recipes/wip/{ => benchmarks}/hpcg/recipe.toml (100%) rename recipes/wip/{ => fuse}/glusterfs/recipe.toml (100%) rename recipes/wip/{ => fuse}/indexfs/recipe.toml (100%) diff --git a/recipes/wip/hpcc/recipe.toml b/recipes/wip/benchmarks/hpcc/recipe.toml similarity index 100% rename from recipes/wip/hpcc/recipe.toml rename to recipes/wip/benchmarks/hpcc/recipe.toml diff --git a/recipes/wip/hpcg/recipe.toml b/recipes/wip/benchmarks/hpcg/recipe.toml similarity index 100% rename from recipes/wip/hpcg/recipe.toml rename to recipes/wip/benchmarks/hpcg/recipe.toml diff --git a/recipes/wip/glusterfs/recipe.toml b/recipes/wip/fuse/glusterfs/recipe.toml similarity index 100% rename from recipes/wip/glusterfs/recipe.toml rename to recipes/wip/fuse/glusterfs/recipe.toml diff --git a/recipes/wip/indexfs/recipe.toml b/recipes/wip/fuse/indexfs/recipe.toml similarity index 100% rename from recipes/wip/indexfs/recipe.toml rename to recipes/wip/fuse/indexfs/recipe.toml From cbcf9cd70e17eeef0435574606d1bfa05dc1816e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 15 Feb 2024 02:58:43 +0000 Subject: [PATCH 1566/3180] add a recipe --- recipes/wip/net/httpd/recipe.toml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 recipes/wip/net/httpd/recipe.toml diff --git a/recipes/wip/net/httpd/recipe.toml b/recipes/wip/net/httpd/recipe.toml new file mode 100644 index 00000000..dd31170f --- /dev/null +++ b/recipes/wip/net/httpd/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +tar = "https://dlcdn.apache.org/httpd/httpd-2.4.58.tar.bz2" +[build] +template = "configure" +dependencies = [ + "pcre", +] From f46f4c26fb6448c86970b6bd9eb609c2662833bd Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 15 Feb 2024 05:42:46 +0000 Subject: [PATCH 1567/3180] add a recipe --- recipes/wip/tools/envio/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/wip/tools/envio/recipe.toml diff --git a/recipes/wip/tools/envio/recipe.toml b/recipes/wip/tools/envio/recipe.toml new file mode 100644 index 00000000..5bb3ccf9 --- /dev/null +++ b/recipes/wip/tools/envio/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/envio-cli/envio" +[build] +template = "cargo" From 24ca94376f27585aad15f384fc6df1f2c414f741 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 15 Feb 2024 08:22:13 +0000 Subject: [PATCH 1568/3180] move recipes --- recipes/wip/{ => codecs}/dav1d/recipe.toml | 0 recipes/wip/{ => codecs}/kvazaar/recipe.toml | 0 recipes/wip/{ => codecs}/svt-av1/recipe.toml | 0 recipes/wip/{ => codecs}/svt-hevc/recipe.toml | 0 recipes/wip/{ => codecs}/svt-vp9/recipe.toml | 0 recipes/wip/{ => tools}/tock/recipe.toml | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => codecs}/dav1d/recipe.toml (100%) rename recipes/wip/{ => codecs}/kvazaar/recipe.toml (100%) rename recipes/wip/{ => codecs}/svt-av1/recipe.toml (100%) rename recipes/wip/{ => codecs}/svt-hevc/recipe.toml (100%) rename recipes/wip/{ => codecs}/svt-vp9/recipe.toml (100%) rename recipes/wip/{ => tools}/tock/recipe.toml (100%) diff --git a/recipes/wip/dav1d/recipe.toml b/recipes/wip/codecs/dav1d/recipe.toml similarity index 100% rename from recipes/wip/dav1d/recipe.toml rename to recipes/wip/codecs/dav1d/recipe.toml diff --git a/recipes/wip/kvazaar/recipe.toml b/recipes/wip/codecs/kvazaar/recipe.toml similarity index 100% rename from recipes/wip/kvazaar/recipe.toml rename to recipes/wip/codecs/kvazaar/recipe.toml diff --git a/recipes/wip/svt-av1/recipe.toml b/recipes/wip/codecs/svt-av1/recipe.toml similarity index 100% rename from recipes/wip/svt-av1/recipe.toml rename to recipes/wip/codecs/svt-av1/recipe.toml diff --git a/recipes/wip/svt-hevc/recipe.toml b/recipes/wip/codecs/svt-hevc/recipe.toml similarity index 100% rename from recipes/wip/svt-hevc/recipe.toml rename to recipes/wip/codecs/svt-hevc/recipe.toml diff --git a/recipes/wip/svt-vp9/recipe.toml b/recipes/wip/codecs/svt-vp9/recipe.toml similarity index 100% rename from recipes/wip/svt-vp9/recipe.toml rename to recipes/wip/codecs/svt-vp9/recipe.toml diff --git a/recipes/wip/tock/recipe.toml b/recipes/wip/tools/tock/recipe.toml similarity index 100% rename from recipes/wip/tock/recipe.toml rename to recipes/wip/tools/tock/recipe.toml From 31f35cda4c566444e92fc2fbeb11721b826025d1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 15 Feb 2024 09:21:18 +0000 Subject: [PATCH 1569/3180] add a recipe --- recipes/wip/tools/unicorn/recipe.toml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 recipes/wip/tools/unicorn/recipe.toml diff --git a/recipes/wip/tools/unicorn/recipe.toml b/recipes/wip/tools/unicorn/recipe.toml new file mode 100644 index 00000000..826e4001 --- /dev/null +++ b/recipes/wip/tools/unicorn/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for CMake, read https://github.com/unicorn-engine/unicorn/blob/master/docs/COMPILE.md +[source] +git = "https://github.com/unicorn-engine/unicorn" +rev = "e9c1c17f6df8f8f5da85ee80ad527452db5870ce" +[build] +template = "custom" From 42786e46b55abb5af6894439d338212dcf082492 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 15 Feb 2024 09:37:50 +0000 Subject: [PATCH 1570/3180] move recipes --- recipes/wip/{ => dev}/ant/recipe.toml | 0 recipes/wip/{ => dev}/apr-util/recipe.toml | 0 recipes/wip/{ => dev}/apr/recipe.toml | 0 recipes/wip/{ => dev}/austral-lang/recipe.toml | 0 recipes/wip/{ => dev}/binocle/recipe.toml | 0 recipes/wip/{ => dev}/biome/recipe.toml | 0 recipes/wip/{ => dev}/crates-tui/recipe.toml | 0 recipes/wip/{ => dev}/criner/recipe.toml | 0 recipes/wip/{ => irust}/gawk/recipe.toml | 0 recipes/wip/{ => irust}/intltool/recipe.toml | 0 recipes/wip/{ => libs}/mbedtls/recipe.toml | 0 recipes/wip/{ => libs}/mpc/recipe.toml | 0 recipes/wip/{ => libs}/mpg123/recipe.toml | 0 recipes/wip/{ => libs}/wolfssl5/recipe.toml | 0 14 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => dev}/ant/recipe.toml (100%) rename recipes/wip/{ => dev}/apr-util/recipe.toml (100%) rename recipes/wip/{ => dev}/apr/recipe.toml (100%) rename recipes/wip/{ => dev}/austral-lang/recipe.toml (100%) rename recipes/wip/{ => dev}/binocle/recipe.toml (100%) rename recipes/wip/{ => dev}/biome/recipe.toml (100%) rename recipes/wip/{ => dev}/crates-tui/recipe.toml (100%) rename recipes/wip/{ => dev}/criner/recipe.toml (100%) rename recipes/wip/{ => irust}/gawk/recipe.toml (100%) rename recipes/wip/{ => irust}/intltool/recipe.toml (100%) rename recipes/wip/{ => libs}/mbedtls/recipe.toml (100%) rename recipes/wip/{ => libs}/mpc/recipe.toml (100%) rename recipes/wip/{ => libs}/mpg123/recipe.toml (100%) rename recipes/wip/{ => libs}/wolfssl5/recipe.toml (100%) diff --git a/recipes/wip/ant/recipe.toml b/recipes/wip/dev/ant/recipe.toml similarity index 100% rename from recipes/wip/ant/recipe.toml rename to recipes/wip/dev/ant/recipe.toml diff --git a/recipes/wip/apr-util/recipe.toml b/recipes/wip/dev/apr-util/recipe.toml similarity index 100% rename from recipes/wip/apr-util/recipe.toml rename to recipes/wip/dev/apr-util/recipe.toml diff --git a/recipes/wip/apr/recipe.toml b/recipes/wip/dev/apr/recipe.toml similarity index 100% rename from recipes/wip/apr/recipe.toml rename to recipes/wip/dev/apr/recipe.toml diff --git a/recipes/wip/austral-lang/recipe.toml b/recipes/wip/dev/austral-lang/recipe.toml similarity index 100% rename from recipes/wip/austral-lang/recipe.toml rename to recipes/wip/dev/austral-lang/recipe.toml diff --git a/recipes/wip/binocle/recipe.toml b/recipes/wip/dev/binocle/recipe.toml similarity index 100% rename from recipes/wip/binocle/recipe.toml rename to recipes/wip/dev/binocle/recipe.toml diff --git a/recipes/wip/biome/recipe.toml b/recipes/wip/dev/biome/recipe.toml similarity index 100% rename from recipes/wip/biome/recipe.toml rename to recipes/wip/dev/biome/recipe.toml diff --git a/recipes/wip/crates-tui/recipe.toml b/recipes/wip/dev/crates-tui/recipe.toml similarity index 100% rename from recipes/wip/crates-tui/recipe.toml rename to recipes/wip/dev/crates-tui/recipe.toml diff --git a/recipes/wip/criner/recipe.toml b/recipes/wip/dev/criner/recipe.toml similarity index 100% rename from recipes/wip/criner/recipe.toml rename to recipes/wip/dev/criner/recipe.toml diff --git a/recipes/wip/gawk/recipe.toml b/recipes/wip/irust/gawk/recipe.toml similarity index 100% rename from recipes/wip/gawk/recipe.toml rename to recipes/wip/irust/gawk/recipe.toml diff --git a/recipes/wip/intltool/recipe.toml b/recipes/wip/irust/intltool/recipe.toml similarity index 100% rename from recipes/wip/intltool/recipe.toml rename to recipes/wip/irust/intltool/recipe.toml diff --git a/recipes/wip/mbedtls/recipe.toml b/recipes/wip/libs/mbedtls/recipe.toml similarity index 100% rename from recipes/wip/mbedtls/recipe.toml rename to recipes/wip/libs/mbedtls/recipe.toml diff --git a/recipes/wip/mpc/recipe.toml b/recipes/wip/libs/mpc/recipe.toml similarity index 100% rename from recipes/wip/mpc/recipe.toml rename to recipes/wip/libs/mpc/recipe.toml diff --git a/recipes/wip/mpg123/recipe.toml b/recipes/wip/libs/mpg123/recipe.toml similarity index 100% rename from recipes/wip/mpg123/recipe.toml rename to recipes/wip/libs/mpg123/recipe.toml diff --git a/recipes/wip/wolfssl5/recipe.toml b/recipes/wip/libs/wolfssl5/recipe.toml similarity index 100% rename from recipes/wip/wolfssl5/recipe.toml rename to recipes/wip/libs/wolfssl5/recipe.toml From b17711249cd59d0afe33e53d432923df8a95bcba Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 15 Feb 2024 09:47:49 +0000 Subject: [PATCH 1571/3180] move recipes --- recipes/wip/{ => tools}/aeruginous/recipe.toml | 0 recipes/wip/{ => tools}/artem/recipe.toml | 0 recipes/wip/{ => tools}/atm-cli/recipe.toml | 0 recipes/wip/{ => tools}/bandwhich/recipe.toml | 0 recipes/wip/{ => tools}/bartib/recipe.toml | 0 recipes/wip/{ => tools}/choose/recipe.toml | 0 recipes/wip/{ => tools}/clog-cli/recipe.toml | 0 recipes/wip/{ => tools}/desed/recipe.toml | 0 recipes/wip/{ => tools}/diskonaut/recipe.toml | 0 recipes/wip/{ => tools}/dog/recipe.toml | 0 recipes/wip/{ => tools}/dprint/recipe.toml | 0 recipes/wip/{ => tools}/dra-cla/recipe.toml | 0 recipes/wip/{ => tools}/eva/recipe.toml | 0 recipes/wip/{ => tools}/exa/recipe.toml | 0 recipes/wip/{ => tools}/fclones/recipe.toml | 0 recipes/wip/{ => tools}/flowtime/recipe.toml | 0 recipes/wip/{ => tools}/fselect/recipe.toml | 0 recipes/wip/{ => tools}/fuga/recipe.toml | 0 recipes/wip/{ => tools}/fzf-make/recipe.toml | 0 recipes/wip/{ => tools}/gifski/recipe.toml | 0 recipes/wip/{ => tools}/glicol-cli/recipe.toml | 0 recipes/wip/{ => tools}/gnu-radio/recipe.toml | 0 recipes/wip/{ => tools}/gnuplot/recipe.toml | 0 recipes/wip/{ => tools}/goxel/recipe.toml | 0 recipes/wip/{ => tools}/gpg-tui/recipe.toml | 0 recipes/wip/{ => tools}/gphoto2/recipe.toml | 0 recipes/wip/{ => tools}/gptman/recipe.toml | 0 recipes/wip/{ => tools}/guix/recipe.toml | 0 recipes/wip/{ => tools}/himalaya/recipe.toml | 0 recipes/wip/{ => tools}/humphrey/recipe.toml | 0 recipes/wip/{ => tools}/hwatch/recipe.toml | 0 recipes/wip/{ => tools}/iamb/recipe.toml | 0 recipes/wip/{ => tools}/inlyne/recipe.toml | 0 recipes/wip/{ => tools}/innernet-cli/recipe.toml | 0 recipes/wip/{ => tools}/innernet-server/recipe.toml | 0 recipes/wip/{ => tools}/intelli-shell/recipe.toml | 0 recipes/wip/{ => tools}/intermodal/recipe.toml | 0 recipes/wip/{ => tools}/jirust/recipe.toml | 0 recipes/wip/{ => tools}/lan-mouse/recipe.toml | 0 recipes/wip/{ => tools}/lapce/recipe.toml | 0 recipes/wip/{ => tools}/lazy-etherscan/recipe.toml | 0 recipes/wip/{ => tools}/legdur/recipe.toml | 0 recipes/wip/{ => tools}/lineselect/recipe.toml | 0 recipes/wip/{ => tools}/logss/recipe.toml | 0 recipes/wip/{ => tools}/lowcharts/recipe.toml | 0 recipes/wip/{ => tools}/matui/recipe.toml | 0 recipes/wip/{ => tools}/neovide/recipe.toml | 0 recipes/wip/{ => tools}/rage/recipe.toml | 0 recipes/wip/{ => tools}/rargs/recipe.toml | 0 recipes/wip/{ => tools}/rclone/recipe.toml | 0 50 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => tools}/aeruginous/recipe.toml (100%) rename recipes/wip/{ => tools}/artem/recipe.toml (100%) rename recipes/wip/{ => tools}/atm-cli/recipe.toml (100%) rename recipes/wip/{ => tools}/bandwhich/recipe.toml (100%) rename recipes/wip/{ => tools}/bartib/recipe.toml (100%) rename recipes/wip/{ => tools}/choose/recipe.toml (100%) rename recipes/wip/{ => tools}/clog-cli/recipe.toml (100%) rename recipes/wip/{ => tools}/desed/recipe.toml (100%) rename recipes/wip/{ => tools}/diskonaut/recipe.toml (100%) rename recipes/wip/{ => tools}/dog/recipe.toml (100%) rename recipes/wip/{ => tools}/dprint/recipe.toml (100%) rename recipes/wip/{ => tools}/dra-cla/recipe.toml (100%) rename recipes/wip/{ => tools}/eva/recipe.toml (100%) rename recipes/wip/{ => tools}/exa/recipe.toml (100%) rename recipes/wip/{ => tools}/fclones/recipe.toml (100%) rename recipes/wip/{ => tools}/flowtime/recipe.toml (100%) rename recipes/wip/{ => tools}/fselect/recipe.toml (100%) rename recipes/wip/{ => tools}/fuga/recipe.toml (100%) rename recipes/wip/{ => tools}/fzf-make/recipe.toml (100%) rename recipes/wip/{ => tools}/gifski/recipe.toml (100%) rename recipes/wip/{ => tools}/glicol-cli/recipe.toml (100%) rename recipes/wip/{ => tools}/gnu-radio/recipe.toml (100%) rename recipes/wip/{ => tools}/gnuplot/recipe.toml (100%) rename recipes/wip/{ => tools}/goxel/recipe.toml (100%) rename recipes/wip/{ => tools}/gpg-tui/recipe.toml (100%) rename recipes/wip/{ => tools}/gphoto2/recipe.toml (100%) rename recipes/wip/{ => tools}/gptman/recipe.toml (100%) rename recipes/wip/{ => tools}/guix/recipe.toml (100%) rename recipes/wip/{ => tools}/himalaya/recipe.toml (100%) rename recipes/wip/{ => tools}/humphrey/recipe.toml (100%) rename recipes/wip/{ => tools}/hwatch/recipe.toml (100%) rename recipes/wip/{ => tools}/iamb/recipe.toml (100%) rename recipes/wip/{ => tools}/inlyne/recipe.toml (100%) rename recipes/wip/{ => tools}/innernet-cli/recipe.toml (100%) rename recipes/wip/{ => tools}/innernet-server/recipe.toml (100%) rename recipes/wip/{ => tools}/intelli-shell/recipe.toml (100%) rename recipes/wip/{ => tools}/intermodal/recipe.toml (100%) rename recipes/wip/{ => tools}/jirust/recipe.toml (100%) rename recipes/wip/{ => tools}/lan-mouse/recipe.toml (100%) rename recipes/wip/{ => tools}/lapce/recipe.toml (100%) rename recipes/wip/{ => tools}/lazy-etherscan/recipe.toml (100%) rename recipes/wip/{ => tools}/legdur/recipe.toml (100%) rename recipes/wip/{ => tools}/lineselect/recipe.toml (100%) rename recipes/wip/{ => tools}/logss/recipe.toml (100%) rename recipes/wip/{ => tools}/lowcharts/recipe.toml (100%) rename recipes/wip/{ => tools}/matui/recipe.toml (100%) rename recipes/wip/{ => tools}/neovide/recipe.toml (100%) rename recipes/wip/{ => tools}/rage/recipe.toml (100%) rename recipes/wip/{ => tools}/rargs/recipe.toml (100%) rename recipes/wip/{ => tools}/rclone/recipe.toml (100%) diff --git a/recipes/wip/aeruginous/recipe.toml b/recipes/wip/tools/aeruginous/recipe.toml similarity index 100% rename from recipes/wip/aeruginous/recipe.toml rename to recipes/wip/tools/aeruginous/recipe.toml diff --git a/recipes/wip/artem/recipe.toml b/recipes/wip/tools/artem/recipe.toml similarity index 100% rename from recipes/wip/artem/recipe.toml rename to recipes/wip/tools/artem/recipe.toml diff --git a/recipes/wip/atm-cli/recipe.toml b/recipes/wip/tools/atm-cli/recipe.toml similarity index 100% rename from recipes/wip/atm-cli/recipe.toml rename to recipes/wip/tools/atm-cli/recipe.toml diff --git a/recipes/wip/bandwhich/recipe.toml b/recipes/wip/tools/bandwhich/recipe.toml similarity index 100% rename from recipes/wip/bandwhich/recipe.toml rename to recipes/wip/tools/bandwhich/recipe.toml diff --git a/recipes/wip/bartib/recipe.toml b/recipes/wip/tools/bartib/recipe.toml similarity index 100% rename from recipes/wip/bartib/recipe.toml rename to recipes/wip/tools/bartib/recipe.toml diff --git a/recipes/wip/choose/recipe.toml b/recipes/wip/tools/choose/recipe.toml similarity index 100% rename from recipes/wip/choose/recipe.toml rename to recipes/wip/tools/choose/recipe.toml diff --git a/recipes/wip/clog-cli/recipe.toml b/recipes/wip/tools/clog-cli/recipe.toml similarity index 100% rename from recipes/wip/clog-cli/recipe.toml rename to recipes/wip/tools/clog-cli/recipe.toml diff --git a/recipes/wip/desed/recipe.toml b/recipes/wip/tools/desed/recipe.toml similarity index 100% rename from recipes/wip/desed/recipe.toml rename to recipes/wip/tools/desed/recipe.toml diff --git a/recipes/wip/diskonaut/recipe.toml b/recipes/wip/tools/diskonaut/recipe.toml similarity index 100% rename from recipes/wip/diskonaut/recipe.toml rename to recipes/wip/tools/diskonaut/recipe.toml diff --git a/recipes/wip/dog/recipe.toml b/recipes/wip/tools/dog/recipe.toml similarity index 100% rename from recipes/wip/dog/recipe.toml rename to recipes/wip/tools/dog/recipe.toml diff --git a/recipes/wip/dprint/recipe.toml b/recipes/wip/tools/dprint/recipe.toml similarity index 100% rename from recipes/wip/dprint/recipe.toml rename to recipes/wip/tools/dprint/recipe.toml diff --git a/recipes/wip/dra-cla/recipe.toml b/recipes/wip/tools/dra-cla/recipe.toml similarity index 100% rename from recipes/wip/dra-cla/recipe.toml rename to recipes/wip/tools/dra-cla/recipe.toml diff --git a/recipes/wip/eva/recipe.toml b/recipes/wip/tools/eva/recipe.toml similarity index 100% rename from recipes/wip/eva/recipe.toml rename to recipes/wip/tools/eva/recipe.toml diff --git a/recipes/wip/exa/recipe.toml b/recipes/wip/tools/exa/recipe.toml similarity index 100% rename from recipes/wip/exa/recipe.toml rename to recipes/wip/tools/exa/recipe.toml diff --git a/recipes/wip/fclones/recipe.toml b/recipes/wip/tools/fclones/recipe.toml similarity index 100% rename from recipes/wip/fclones/recipe.toml rename to recipes/wip/tools/fclones/recipe.toml diff --git a/recipes/wip/flowtime/recipe.toml b/recipes/wip/tools/flowtime/recipe.toml similarity index 100% rename from recipes/wip/flowtime/recipe.toml rename to recipes/wip/tools/flowtime/recipe.toml diff --git a/recipes/wip/fselect/recipe.toml b/recipes/wip/tools/fselect/recipe.toml similarity index 100% rename from recipes/wip/fselect/recipe.toml rename to recipes/wip/tools/fselect/recipe.toml diff --git a/recipes/wip/fuga/recipe.toml b/recipes/wip/tools/fuga/recipe.toml similarity index 100% rename from recipes/wip/fuga/recipe.toml rename to recipes/wip/tools/fuga/recipe.toml diff --git a/recipes/wip/fzf-make/recipe.toml b/recipes/wip/tools/fzf-make/recipe.toml similarity index 100% rename from recipes/wip/fzf-make/recipe.toml rename to recipes/wip/tools/fzf-make/recipe.toml diff --git a/recipes/wip/gifski/recipe.toml b/recipes/wip/tools/gifski/recipe.toml similarity index 100% rename from recipes/wip/gifski/recipe.toml rename to recipes/wip/tools/gifski/recipe.toml diff --git a/recipes/wip/glicol-cli/recipe.toml b/recipes/wip/tools/glicol-cli/recipe.toml similarity index 100% rename from recipes/wip/glicol-cli/recipe.toml rename to recipes/wip/tools/glicol-cli/recipe.toml diff --git a/recipes/wip/gnu-radio/recipe.toml b/recipes/wip/tools/gnu-radio/recipe.toml similarity index 100% rename from recipes/wip/gnu-radio/recipe.toml rename to recipes/wip/tools/gnu-radio/recipe.toml diff --git a/recipes/wip/gnuplot/recipe.toml b/recipes/wip/tools/gnuplot/recipe.toml similarity index 100% rename from recipes/wip/gnuplot/recipe.toml rename to recipes/wip/tools/gnuplot/recipe.toml diff --git a/recipes/wip/goxel/recipe.toml b/recipes/wip/tools/goxel/recipe.toml similarity index 100% rename from recipes/wip/goxel/recipe.toml rename to recipes/wip/tools/goxel/recipe.toml diff --git a/recipes/wip/gpg-tui/recipe.toml b/recipes/wip/tools/gpg-tui/recipe.toml similarity index 100% rename from recipes/wip/gpg-tui/recipe.toml rename to recipes/wip/tools/gpg-tui/recipe.toml diff --git a/recipes/wip/gphoto2/recipe.toml b/recipes/wip/tools/gphoto2/recipe.toml similarity index 100% rename from recipes/wip/gphoto2/recipe.toml rename to recipes/wip/tools/gphoto2/recipe.toml diff --git a/recipes/wip/gptman/recipe.toml b/recipes/wip/tools/gptman/recipe.toml similarity index 100% rename from recipes/wip/gptman/recipe.toml rename to recipes/wip/tools/gptman/recipe.toml diff --git a/recipes/wip/guix/recipe.toml b/recipes/wip/tools/guix/recipe.toml similarity index 100% rename from recipes/wip/guix/recipe.toml rename to recipes/wip/tools/guix/recipe.toml diff --git a/recipes/wip/himalaya/recipe.toml b/recipes/wip/tools/himalaya/recipe.toml similarity index 100% rename from recipes/wip/himalaya/recipe.toml rename to recipes/wip/tools/himalaya/recipe.toml diff --git a/recipes/wip/humphrey/recipe.toml b/recipes/wip/tools/humphrey/recipe.toml similarity index 100% rename from recipes/wip/humphrey/recipe.toml rename to recipes/wip/tools/humphrey/recipe.toml diff --git a/recipes/wip/hwatch/recipe.toml b/recipes/wip/tools/hwatch/recipe.toml similarity index 100% rename from recipes/wip/hwatch/recipe.toml rename to recipes/wip/tools/hwatch/recipe.toml diff --git a/recipes/wip/iamb/recipe.toml b/recipes/wip/tools/iamb/recipe.toml similarity index 100% rename from recipes/wip/iamb/recipe.toml rename to recipes/wip/tools/iamb/recipe.toml diff --git a/recipes/wip/inlyne/recipe.toml b/recipes/wip/tools/inlyne/recipe.toml similarity index 100% rename from recipes/wip/inlyne/recipe.toml rename to recipes/wip/tools/inlyne/recipe.toml diff --git a/recipes/wip/innernet-cli/recipe.toml b/recipes/wip/tools/innernet-cli/recipe.toml similarity index 100% rename from recipes/wip/innernet-cli/recipe.toml rename to recipes/wip/tools/innernet-cli/recipe.toml diff --git a/recipes/wip/innernet-server/recipe.toml b/recipes/wip/tools/innernet-server/recipe.toml similarity index 100% rename from recipes/wip/innernet-server/recipe.toml rename to recipes/wip/tools/innernet-server/recipe.toml diff --git a/recipes/wip/intelli-shell/recipe.toml b/recipes/wip/tools/intelli-shell/recipe.toml similarity index 100% rename from recipes/wip/intelli-shell/recipe.toml rename to recipes/wip/tools/intelli-shell/recipe.toml diff --git a/recipes/wip/intermodal/recipe.toml b/recipes/wip/tools/intermodal/recipe.toml similarity index 100% rename from recipes/wip/intermodal/recipe.toml rename to recipes/wip/tools/intermodal/recipe.toml diff --git a/recipes/wip/jirust/recipe.toml b/recipes/wip/tools/jirust/recipe.toml similarity index 100% rename from recipes/wip/jirust/recipe.toml rename to recipes/wip/tools/jirust/recipe.toml diff --git a/recipes/wip/lan-mouse/recipe.toml b/recipes/wip/tools/lan-mouse/recipe.toml similarity index 100% rename from recipes/wip/lan-mouse/recipe.toml rename to recipes/wip/tools/lan-mouse/recipe.toml diff --git a/recipes/wip/lapce/recipe.toml b/recipes/wip/tools/lapce/recipe.toml similarity index 100% rename from recipes/wip/lapce/recipe.toml rename to recipes/wip/tools/lapce/recipe.toml diff --git a/recipes/wip/lazy-etherscan/recipe.toml b/recipes/wip/tools/lazy-etherscan/recipe.toml similarity index 100% rename from recipes/wip/lazy-etherscan/recipe.toml rename to recipes/wip/tools/lazy-etherscan/recipe.toml diff --git a/recipes/wip/legdur/recipe.toml b/recipes/wip/tools/legdur/recipe.toml similarity index 100% rename from recipes/wip/legdur/recipe.toml rename to recipes/wip/tools/legdur/recipe.toml diff --git a/recipes/wip/lineselect/recipe.toml b/recipes/wip/tools/lineselect/recipe.toml similarity index 100% rename from recipes/wip/lineselect/recipe.toml rename to recipes/wip/tools/lineselect/recipe.toml diff --git a/recipes/wip/logss/recipe.toml b/recipes/wip/tools/logss/recipe.toml similarity index 100% rename from recipes/wip/logss/recipe.toml rename to recipes/wip/tools/logss/recipe.toml diff --git a/recipes/wip/lowcharts/recipe.toml b/recipes/wip/tools/lowcharts/recipe.toml similarity index 100% rename from recipes/wip/lowcharts/recipe.toml rename to recipes/wip/tools/lowcharts/recipe.toml diff --git a/recipes/wip/matui/recipe.toml b/recipes/wip/tools/matui/recipe.toml similarity index 100% rename from recipes/wip/matui/recipe.toml rename to recipes/wip/tools/matui/recipe.toml diff --git a/recipes/wip/neovide/recipe.toml b/recipes/wip/tools/neovide/recipe.toml similarity index 100% rename from recipes/wip/neovide/recipe.toml rename to recipes/wip/tools/neovide/recipe.toml diff --git a/recipes/wip/rage/recipe.toml b/recipes/wip/tools/rage/recipe.toml similarity index 100% rename from recipes/wip/rage/recipe.toml rename to recipes/wip/tools/rage/recipe.toml diff --git a/recipes/wip/rargs/recipe.toml b/recipes/wip/tools/rargs/recipe.toml similarity index 100% rename from recipes/wip/rargs/recipe.toml rename to recipes/wip/tools/rargs/recipe.toml diff --git a/recipes/wip/rclone/recipe.toml b/recipes/wip/tools/rclone/recipe.toml similarity index 100% rename from recipes/wip/rclone/recipe.toml rename to recipes/wip/tools/rclone/recipe.toml From 1ba13669028d80748755bd87fad2a789d5b6f5e8 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 15 Feb 2024 10:05:01 +0000 Subject: [PATCH 1572/3180] update recipes --- recipes/wip/{ => codecs}/uvg266/recipe.toml | 0 recipes/wip/{ => codecs}/x264/recipe.toml | 0 recipes/wip/{ => codecs}/x265/recipe.toml | 0 recipes/wip/{ => emulators}/touchhle/recipe.toml | 0 recipes/wip/{ => emulators}/vita3k/recipe.toml | 0 recipes/wip/{ => fuse}/goofys/recipe.toml | 0 recipes/wip/{ => fuse}/moosefs/recipe.toml | 0 recipes/wip/{ => games}/tuxmath/recipe.toml | 0 recipes/wip/{ => graphics}/openscad/recipe.toml | 0 recipes/wip/{ => graphics}/ospray-studio/recipe.toml | 0 recipes/wip/{ => graphics}/ospray/recipe.toml | 0 recipes/wip/{ => graphics}/paraview-data/recipe.toml | 0 recipes/wip/{ => graphics}/paraview/recipe.toml | 0 recipes/wip/{ => science}/specfem2d/recipe.toml | 0 recipes/wip/{ => science}/specfem3d-globe/recipe.toml | 0 recipes/wip/{ => science}/specfem3d/recipe.toml | 0 recipes/wip/{ => services}/wireplumber/recipe.toml | 0 recipes/wip/{ => sound}/cmus/recipe.toml | 0 recipes/wip/{ => sound}/termusic/recipe.toml | 0 recipes/wip/{ => tools}/sad/recipe.toml | 0 recipes/wip/{ => tools}/sd/recipe.toml | 0 recipes/wip/{ => tools}/shd/recipe.toml | 0 recipes/wip/{ => tools}/spidey/recipe.toml | 0 recipes/wip/{ => tools}/succeed2ban-tui/recipe.toml | 0 recipes/wip/{ => tools}/tailspin/recipe.toml | 0 recipes/wip/tribler/recipe.toml | 10 ---------- 26 files changed, 10 deletions(-) rename recipes/wip/{ => codecs}/uvg266/recipe.toml (100%) rename recipes/wip/{ => codecs}/x264/recipe.toml (100%) rename recipes/wip/{ => codecs}/x265/recipe.toml (100%) rename recipes/wip/{ => emulators}/touchhle/recipe.toml (100%) rename recipes/wip/{ => emulators}/vita3k/recipe.toml (100%) rename recipes/wip/{ => fuse}/goofys/recipe.toml (100%) rename recipes/wip/{ => fuse}/moosefs/recipe.toml (100%) rename recipes/wip/{ => games}/tuxmath/recipe.toml (100%) rename recipes/wip/{ => graphics}/openscad/recipe.toml (100%) rename recipes/wip/{ => graphics}/ospray-studio/recipe.toml (100%) rename recipes/wip/{ => graphics}/ospray/recipe.toml (100%) rename recipes/wip/{ => graphics}/paraview-data/recipe.toml (100%) rename recipes/wip/{ => graphics}/paraview/recipe.toml (100%) rename recipes/wip/{ => science}/specfem2d/recipe.toml (100%) rename recipes/wip/{ => science}/specfem3d-globe/recipe.toml (100%) rename recipes/wip/{ => science}/specfem3d/recipe.toml (100%) rename recipes/wip/{ => services}/wireplumber/recipe.toml (100%) rename recipes/wip/{ => sound}/cmus/recipe.toml (100%) rename recipes/wip/{ => sound}/termusic/recipe.toml (100%) rename recipes/wip/{ => tools}/sad/recipe.toml (100%) rename recipes/wip/{ => tools}/sd/recipe.toml (100%) rename recipes/wip/{ => tools}/shd/recipe.toml (100%) rename recipes/wip/{ => tools}/spidey/recipe.toml (100%) rename recipes/wip/{ => tools}/succeed2ban-tui/recipe.toml (100%) rename recipes/wip/{ => tools}/tailspin/recipe.toml (100%) delete mode 100644 recipes/wip/tribler/recipe.toml diff --git a/recipes/wip/uvg266/recipe.toml b/recipes/wip/codecs/uvg266/recipe.toml similarity index 100% rename from recipes/wip/uvg266/recipe.toml rename to recipes/wip/codecs/uvg266/recipe.toml diff --git a/recipes/wip/x264/recipe.toml b/recipes/wip/codecs/x264/recipe.toml similarity index 100% rename from recipes/wip/x264/recipe.toml rename to recipes/wip/codecs/x264/recipe.toml diff --git a/recipes/wip/x265/recipe.toml b/recipes/wip/codecs/x265/recipe.toml similarity index 100% rename from recipes/wip/x265/recipe.toml rename to recipes/wip/codecs/x265/recipe.toml diff --git a/recipes/wip/touchhle/recipe.toml b/recipes/wip/emulators/touchhle/recipe.toml similarity index 100% rename from recipes/wip/touchhle/recipe.toml rename to recipes/wip/emulators/touchhle/recipe.toml diff --git a/recipes/wip/vita3k/recipe.toml b/recipes/wip/emulators/vita3k/recipe.toml similarity index 100% rename from recipes/wip/vita3k/recipe.toml rename to recipes/wip/emulators/vita3k/recipe.toml diff --git a/recipes/wip/goofys/recipe.toml b/recipes/wip/fuse/goofys/recipe.toml similarity index 100% rename from recipes/wip/goofys/recipe.toml rename to recipes/wip/fuse/goofys/recipe.toml diff --git a/recipes/wip/moosefs/recipe.toml b/recipes/wip/fuse/moosefs/recipe.toml similarity index 100% rename from recipes/wip/moosefs/recipe.toml rename to recipes/wip/fuse/moosefs/recipe.toml diff --git a/recipes/wip/tuxmath/recipe.toml b/recipes/wip/games/tuxmath/recipe.toml similarity index 100% rename from recipes/wip/tuxmath/recipe.toml rename to recipes/wip/games/tuxmath/recipe.toml diff --git a/recipes/wip/openscad/recipe.toml b/recipes/wip/graphics/openscad/recipe.toml similarity index 100% rename from recipes/wip/openscad/recipe.toml rename to recipes/wip/graphics/openscad/recipe.toml diff --git a/recipes/wip/ospray-studio/recipe.toml b/recipes/wip/graphics/ospray-studio/recipe.toml similarity index 100% rename from recipes/wip/ospray-studio/recipe.toml rename to recipes/wip/graphics/ospray-studio/recipe.toml diff --git a/recipes/wip/ospray/recipe.toml b/recipes/wip/graphics/ospray/recipe.toml similarity index 100% rename from recipes/wip/ospray/recipe.toml rename to recipes/wip/graphics/ospray/recipe.toml diff --git a/recipes/wip/paraview-data/recipe.toml b/recipes/wip/graphics/paraview-data/recipe.toml similarity index 100% rename from recipes/wip/paraview-data/recipe.toml rename to recipes/wip/graphics/paraview-data/recipe.toml diff --git a/recipes/wip/paraview/recipe.toml b/recipes/wip/graphics/paraview/recipe.toml similarity index 100% rename from recipes/wip/paraview/recipe.toml rename to recipes/wip/graphics/paraview/recipe.toml diff --git a/recipes/wip/specfem2d/recipe.toml b/recipes/wip/science/specfem2d/recipe.toml similarity index 100% rename from recipes/wip/specfem2d/recipe.toml rename to recipes/wip/science/specfem2d/recipe.toml diff --git a/recipes/wip/specfem3d-globe/recipe.toml b/recipes/wip/science/specfem3d-globe/recipe.toml similarity index 100% rename from recipes/wip/specfem3d-globe/recipe.toml rename to recipes/wip/science/specfem3d-globe/recipe.toml diff --git a/recipes/wip/specfem3d/recipe.toml b/recipes/wip/science/specfem3d/recipe.toml similarity index 100% rename from recipes/wip/specfem3d/recipe.toml rename to recipes/wip/science/specfem3d/recipe.toml diff --git a/recipes/wip/wireplumber/recipe.toml b/recipes/wip/services/wireplumber/recipe.toml similarity index 100% rename from recipes/wip/wireplumber/recipe.toml rename to recipes/wip/services/wireplumber/recipe.toml diff --git a/recipes/wip/cmus/recipe.toml b/recipes/wip/sound/cmus/recipe.toml similarity index 100% rename from recipes/wip/cmus/recipe.toml rename to recipes/wip/sound/cmus/recipe.toml diff --git a/recipes/wip/termusic/recipe.toml b/recipes/wip/sound/termusic/recipe.toml similarity index 100% rename from recipes/wip/termusic/recipe.toml rename to recipes/wip/sound/termusic/recipe.toml diff --git a/recipes/wip/sad/recipe.toml b/recipes/wip/tools/sad/recipe.toml similarity index 100% rename from recipes/wip/sad/recipe.toml rename to recipes/wip/tools/sad/recipe.toml diff --git a/recipes/wip/sd/recipe.toml b/recipes/wip/tools/sd/recipe.toml similarity index 100% rename from recipes/wip/sd/recipe.toml rename to recipes/wip/tools/sd/recipe.toml diff --git a/recipes/wip/shd/recipe.toml b/recipes/wip/tools/shd/recipe.toml similarity index 100% rename from recipes/wip/shd/recipe.toml rename to recipes/wip/tools/shd/recipe.toml diff --git a/recipes/wip/spidey/recipe.toml b/recipes/wip/tools/spidey/recipe.toml similarity index 100% rename from recipes/wip/spidey/recipe.toml rename to recipes/wip/tools/spidey/recipe.toml diff --git a/recipes/wip/succeed2ban-tui/recipe.toml b/recipes/wip/tools/succeed2ban-tui/recipe.toml similarity index 100% rename from recipes/wip/succeed2ban-tui/recipe.toml rename to recipes/wip/tools/succeed2ban-tui/recipe.toml diff --git a/recipes/wip/tailspin/recipe.toml b/recipes/wip/tools/tailspin/recipe.toml similarity index 100% rename from recipes/wip/tailspin/recipe.toml rename to recipes/wip/tools/tailspin/recipe.toml diff --git a/recipes/wip/tribler/recipe.toml b/recipes/wip/tribler/recipe.toml deleted file mode 100644 index bd70a1e5..00000000 --- a/recipes/wip/tribler/recipe.toml +++ /dev/null @@ -1,10 +0,0 @@ -#TODO missing script for installation, see https://tribler.readthedocs.io/en/latest/development/development_on_linux.html -#TODO missing Python libraries -[source] -tar = "https://github.com/Tribler/tribler/releases/download/v7.13.0/Tribler-7.13.0.tar.xz" -[build] -template = "custom" -dependencies = [ - "openssl1", - "libgmp", -] From 56dbe11545efd9f8b2f6cb655240aa7360ea9299 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 15 Feb 2024 10:08:56 +0000 Subject: [PATCH 1573/3180] move recipes --- recipes/wip/{ => dev}/guile/recipe.toml | 0 recipes/wip/{ => emulators}/uoyabause/recipe.toml | 0 recipes/wip/{ => tools}/csvlens/recipe.toml | 0 recipes/wip/{ => tools}/joshuto/recipe.toml | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => dev}/guile/recipe.toml (100%) rename recipes/wip/{ => emulators}/uoyabause/recipe.toml (100%) rename recipes/wip/{ => tools}/csvlens/recipe.toml (100%) rename recipes/wip/{ => tools}/joshuto/recipe.toml (100%) diff --git a/recipes/wip/guile/recipe.toml b/recipes/wip/dev/guile/recipe.toml similarity index 100% rename from recipes/wip/guile/recipe.toml rename to recipes/wip/dev/guile/recipe.toml diff --git a/recipes/wip/uoyabause/recipe.toml b/recipes/wip/emulators/uoyabause/recipe.toml similarity index 100% rename from recipes/wip/uoyabause/recipe.toml rename to recipes/wip/emulators/uoyabause/recipe.toml diff --git a/recipes/wip/csvlens/recipe.toml b/recipes/wip/tools/csvlens/recipe.toml similarity index 100% rename from recipes/wip/csvlens/recipe.toml rename to recipes/wip/tools/csvlens/recipe.toml diff --git a/recipes/wip/joshuto/recipe.toml b/recipes/wip/tools/joshuto/recipe.toml similarity index 100% rename from recipes/wip/joshuto/recipe.toml rename to recipes/wip/tools/joshuto/recipe.toml From e6ead1d760525b40ac1ef06dae77b95717b6660e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 12 Feb 2024 14:33:31 -0700 Subject: [PATCH 1574/3180] Install netsurf in /usr --- recipes/net/netsurf/manifest | 2 +- recipes/net/netsurf/recipe.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/net/netsurf/manifest b/recipes/net/netsurf/manifest index b671cb46..b1edac6a 100644 --- a/recipes/net/netsurf/manifest +++ b/recipes/net/netsurf/manifest @@ -1,5 +1,5 @@ name=Netsurf -binary=/bin/netsurf-fb +binary=/usr/bin/netsurf-fb icon=/ui/icons/apps/internet-web-browser.png accept=*.html author=The Netsurf Developers diff --git a/recipes/net/netsurf/recipe.sh b/recipes/net/netsurf/recipe.sh index 2eda2d70..640d957e 100644 --- a/recipes/net/netsurf/recipe.sh +++ b/recipes/net/netsurf/recipe.sh @@ -14,7 +14,7 @@ function recipe_build { export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib -L${PWD}/inst-${TARGET}/lib -static -Wl,--allow-multiple-definition -Wl,-Bstatic" # nghttp2 is not linked for some reason export LDFLAGS="${LDFLAGS} -lcurl -lnghttp2" - "$REDOX_MAKE" V=1 -j"$($NPROC)" + "$REDOX_MAKE" PREFIX=/usr V=1 -j"$($NPROC)" skip=1 } @@ -25,7 +25,7 @@ function recipe_clean { function recipe_stage { dest="$(realpath "$1")" - "$REDOX_MAKE" DESTDIR="$dest" install + "$REDOX_MAKE" DESTDIR="$dest" PREFIX=/usr install mkdir -pv "$dest/ui/apps" cp -v "${COOKBOOK_RECIPE}/manifest" "$dest/ui/apps/00_netsurf" skip=1 From f09ea5a5d2c61c8b7ca688001c49f9b1386dde1c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 16 Feb 2024 01:42:41 +0000 Subject: [PATCH 1575/3180] move recipes --- recipes/wip/{ => dev}/fonts/fontfor/recipe.toml | 0 recipes/wip/{ => dev}/fonts/fontforge/recipe.toml | 0 recipes/wip/{ => dev/fonts}/nerd-fonts/recipe.toml | 0 recipes/wip/{ => dev}/honggfuzz/recipe.toml | 0 recipes/wip/{ => dev}/irust/gawk/recipe.toml | 0 recipes/wip/{ => dev}/irust/intltool/recipe.toml | 0 recipes/wip/{ => dev}/irust/recipe.toml | 0 recipes/wip/{ => dev}/lttng-ust/recipe.toml | 0 recipes/wip/{ => dev}/mono/recipe.toml | 0 recipes/wip/{ => dev}/moon/recipe.toml | 0 recipes/wip/{ => dev}/proto/recipe.toml | 0 recipes/wip/{ => dev}/rye/recipe.toml | 0 recipes/wip/{ => dev}/vkpeak/recipe.toml | 0 recipes/wip/{ => dev}/zola/recipe.toml | 0 recipes/wip/{ => emulators}/melonds/recipe.toml | 0 recipes/wip/{ => emulators}/mooneye-gb/recipe.toml | 0 recipes/wip/{ => games}/opentomb/recipe.toml | 0 recipes/wip/{ => games}/osirion/recipe.toml | 0 recipes/wip/{ => graphics}/c-ray/recipe.toml | 0 recipes/wip/{ => graphics}/cmark/recipe.toml | 0 recipes/wip/{ => graphics}/gmic-qt/recipe.toml | 0 recipes/wip/{ => graphics}/gmic/recipe.toml | 0 recipes/wip/{ => graphics}/incompact3d/recipe.toml | 0 recipes/wip/{ => libs}/hdf5/recipe.toml | 0 recipes/wip/{ => libs}/hwloc/recipe.toml | 0 recipes/wip/{ => libs}/json-c/recipe.toml | 0 recipes/wip/{ => libs}/json-glib/recipe.toml | 0 recipes/wip/{ => libs}/jsonrpc-glib/recipe.toml | 0 recipes/wip/{ => libs}/kerberos5/recipe.toml | 0 recipes/wip/{ => libs}/lame/recipe.toml | 0 recipes/wip/{ => libs}/musepack/recipe.toml | 0 recipes/wip/{ => libs}/nlohmann-json/recipe.toml | 0 recipes/wip/{ => libs}/sdl-pango/recipe.toml | 0 recipes/wip/{ => libs}/sdl2-net/recipe.toml | 0 recipes/wip/{ => libs}/sdl2-pango/recipe.toml | 0 recipes/wip/{ => libs}/simdjson/recipe.toml | 0 recipes/wip/{ => libs}/speex/recipe.toml | 0 recipes/wip/{ => libs}/speexdsp/recipe.toml | 0 recipes/wip/{ => net}/halloy/recipe.toml | 0 recipes/wip/{ => net}/speedtest-rs/recipe.toml | 0 recipes/wip/{ => net}/tiny/recipe.toml | 0 recipes/wip/{ => net}/trippy/recipe.toml | 0 recipes/wip/{ => net}/wget/recipe.toml | 0 recipes/wip/{ => net}/wget2/recipe.toml | 0 recipes/wip/{ => net}/wireguard-rs/recipe.toml | 0 recipes/wip/{ => net}/yaydl/recipe.toml | 0 recipes/wip/{ => net}/yazi/recipe.toml | 0 recipes/wip/{ => net}/zerotier/recipe.toml | 0 recipes/wip/{ => services}/hickory-dns/recipe.toml | 0 recipes/wip/{ => tools}/cpuminer-opt/recipe.toml | 0 recipes/wip/{ => tools}/cute/recipe.toml | 0 recipes/wip/{ => tools}/util-linux/recipe.toml | 0 recipes/wip/{ => video}/avp/recipe.toml | 0 recipes/wip/{ => video}/glide/recipe.toml | 0 54 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => dev}/fonts/fontfor/recipe.toml (100%) rename recipes/wip/{ => dev}/fonts/fontforge/recipe.toml (100%) rename recipes/wip/{ => dev/fonts}/nerd-fonts/recipe.toml (100%) rename recipes/wip/{ => dev}/honggfuzz/recipe.toml (100%) rename recipes/wip/{ => dev}/irust/gawk/recipe.toml (100%) rename recipes/wip/{ => dev}/irust/intltool/recipe.toml (100%) rename recipes/wip/{ => dev}/irust/recipe.toml (100%) rename recipes/wip/{ => dev}/lttng-ust/recipe.toml (100%) rename recipes/wip/{ => dev}/mono/recipe.toml (100%) rename recipes/wip/{ => dev}/moon/recipe.toml (100%) rename recipes/wip/{ => dev}/proto/recipe.toml (100%) rename recipes/wip/{ => dev}/rye/recipe.toml (100%) rename recipes/wip/{ => dev}/vkpeak/recipe.toml (100%) rename recipes/wip/{ => dev}/zola/recipe.toml (100%) rename recipes/wip/{ => emulators}/melonds/recipe.toml (100%) rename recipes/wip/{ => emulators}/mooneye-gb/recipe.toml (100%) rename recipes/wip/{ => games}/opentomb/recipe.toml (100%) rename recipes/wip/{ => games}/osirion/recipe.toml (100%) rename recipes/wip/{ => graphics}/c-ray/recipe.toml (100%) rename recipes/wip/{ => graphics}/cmark/recipe.toml (100%) rename recipes/wip/{ => graphics}/gmic-qt/recipe.toml (100%) rename recipes/wip/{ => graphics}/gmic/recipe.toml (100%) rename recipes/wip/{ => graphics}/incompact3d/recipe.toml (100%) rename recipes/wip/{ => libs}/hdf5/recipe.toml (100%) rename recipes/wip/{ => libs}/hwloc/recipe.toml (100%) rename recipes/wip/{ => libs}/json-c/recipe.toml (100%) rename recipes/wip/{ => libs}/json-glib/recipe.toml (100%) rename recipes/wip/{ => libs}/jsonrpc-glib/recipe.toml (100%) rename recipes/wip/{ => libs}/kerberos5/recipe.toml (100%) rename recipes/wip/{ => libs}/lame/recipe.toml (100%) rename recipes/wip/{ => libs}/musepack/recipe.toml (100%) rename recipes/wip/{ => libs}/nlohmann-json/recipe.toml (100%) rename recipes/wip/{ => libs}/sdl-pango/recipe.toml (100%) rename recipes/wip/{ => libs}/sdl2-net/recipe.toml (100%) rename recipes/wip/{ => libs}/sdl2-pango/recipe.toml (100%) rename recipes/wip/{ => libs}/simdjson/recipe.toml (100%) rename recipes/wip/{ => libs}/speex/recipe.toml (100%) rename recipes/wip/{ => libs}/speexdsp/recipe.toml (100%) rename recipes/wip/{ => net}/halloy/recipe.toml (100%) rename recipes/wip/{ => net}/speedtest-rs/recipe.toml (100%) rename recipes/wip/{ => net}/tiny/recipe.toml (100%) rename recipes/wip/{ => net}/trippy/recipe.toml (100%) rename recipes/wip/{ => net}/wget/recipe.toml (100%) rename recipes/wip/{ => net}/wget2/recipe.toml (100%) rename recipes/wip/{ => net}/wireguard-rs/recipe.toml (100%) rename recipes/wip/{ => net}/yaydl/recipe.toml (100%) rename recipes/wip/{ => net}/yazi/recipe.toml (100%) rename recipes/wip/{ => net}/zerotier/recipe.toml (100%) rename recipes/wip/{ => services}/hickory-dns/recipe.toml (100%) rename recipes/wip/{ => tools}/cpuminer-opt/recipe.toml (100%) rename recipes/wip/{ => tools}/cute/recipe.toml (100%) rename recipes/wip/{ => tools}/util-linux/recipe.toml (100%) rename recipes/wip/{ => video}/avp/recipe.toml (100%) rename recipes/wip/{ => video}/glide/recipe.toml (100%) diff --git a/recipes/wip/fonts/fontfor/recipe.toml b/recipes/wip/dev/fonts/fontfor/recipe.toml similarity index 100% rename from recipes/wip/fonts/fontfor/recipe.toml rename to recipes/wip/dev/fonts/fontfor/recipe.toml diff --git a/recipes/wip/fonts/fontforge/recipe.toml b/recipes/wip/dev/fonts/fontforge/recipe.toml similarity index 100% rename from recipes/wip/fonts/fontforge/recipe.toml rename to recipes/wip/dev/fonts/fontforge/recipe.toml diff --git a/recipes/wip/nerd-fonts/recipe.toml b/recipes/wip/dev/fonts/nerd-fonts/recipe.toml similarity index 100% rename from recipes/wip/nerd-fonts/recipe.toml rename to recipes/wip/dev/fonts/nerd-fonts/recipe.toml diff --git a/recipes/wip/honggfuzz/recipe.toml b/recipes/wip/dev/honggfuzz/recipe.toml similarity index 100% rename from recipes/wip/honggfuzz/recipe.toml rename to recipes/wip/dev/honggfuzz/recipe.toml diff --git a/recipes/wip/irust/gawk/recipe.toml b/recipes/wip/dev/irust/gawk/recipe.toml similarity index 100% rename from recipes/wip/irust/gawk/recipe.toml rename to recipes/wip/dev/irust/gawk/recipe.toml diff --git a/recipes/wip/irust/intltool/recipe.toml b/recipes/wip/dev/irust/intltool/recipe.toml similarity index 100% rename from recipes/wip/irust/intltool/recipe.toml rename to recipes/wip/dev/irust/intltool/recipe.toml diff --git a/recipes/wip/irust/recipe.toml b/recipes/wip/dev/irust/recipe.toml similarity index 100% rename from recipes/wip/irust/recipe.toml rename to recipes/wip/dev/irust/recipe.toml diff --git a/recipes/wip/lttng-ust/recipe.toml b/recipes/wip/dev/lttng-ust/recipe.toml similarity index 100% rename from recipes/wip/lttng-ust/recipe.toml rename to recipes/wip/dev/lttng-ust/recipe.toml diff --git a/recipes/wip/mono/recipe.toml b/recipes/wip/dev/mono/recipe.toml similarity index 100% rename from recipes/wip/mono/recipe.toml rename to recipes/wip/dev/mono/recipe.toml diff --git a/recipes/wip/moon/recipe.toml b/recipes/wip/dev/moon/recipe.toml similarity index 100% rename from recipes/wip/moon/recipe.toml rename to recipes/wip/dev/moon/recipe.toml diff --git a/recipes/wip/proto/recipe.toml b/recipes/wip/dev/proto/recipe.toml similarity index 100% rename from recipes/wip/proto/recipe.toml rename to recipes/wip/dev/proto/recipe.toml diff --git a/recipes/wip/rye/recipe.toml b/recipes/wip/dev/rye/recipe.toml similarity index 100% rename from recipes/wip/rye/recipe.toml rename to recipes/wip/dev/rye/recipe.toml diff --git a/recipes/wip/vkpeak/recipe.toml b/recipes/wip/dev/vkpeak/recipe.toml similarity index 100% rename from recipes/wip/vkpeak/recipe.toml rename to recipes/wip/dev/vkpeak/recipe.toml diff --git a/recipes/wip/zola/recipe.toml b/recipes/wip/dev/zola/recipe.toml similarity index 100% rename from recipes/wip/zola/recipe.toml rename to recipes/wip/dev/zola/recipe.toml diff --git a/recipes/wip/melonds/recipe.toml b/recipes/wip/emulators/melonds/recipe.toml similarity index 100% rename from recipes/wip/melonds/recipe.toml rename to recipes/wip/emulators/melonds/recipe.toml diff --git a/recipes/wip/mooneye-gb/recipe.toml b/recipes/wip/emulators/mooneye-gb/recipe.toml similarity index 100% rename from recipes/wip/mooneye-gb/recipe.toml rename to recipes/wip/emulators/mooneye-gb/recipe.toml diff --git a/recipes/wip/opentomb/recipe.toml b/recipes/wip/games/opentomb/recipe.toml similarity index 100% rename from recipes/wip/opentomb/recipe.toml rename to recipes/wip/games/opentomb/recipe.toml diff --git a/recipes/wip/osirion/recipe.toml b/recipes/wip/games/osirion/recipe.toml similarity index 100% rename from recipes/wip/osirion/recipe.toml rename to recipes/wip/games/osirion/recipe.toml diff --git a/recipes/wip/c-ray/recipe.toml b/recipes/wip/graphics/c-ray/recipe.toml similarity index 100% rename from recipes/wip/c-ray/recipe.toml rename to recipes/wip/graphics/c-ray/recipe.toml diff --git a/recipes/wip/cmark/recipe.toml b/recipes/wip/graphics/cmark/recipe.toml similarity index 100% rename from recipes/wip/cmark/recipe.toml rename to recipes/wip/graphics/cmark/recipe.toml diff --git a/recipes/wip/gmic-qt/recipe.toml b/recipes/wip/graphics/gmic-qt/recipe.toml similarity index 100% rename from recipes/wip/gmic-qt/recipe.toml rename to recipes/wip/graphics/gmic-qt/recipe.toml diff --git a/recipes/wip/gmic/recipe.toml b/recipes/wip/graphics/gmic/recipe.toml similarity index 100% rename from recipes/wip/gmic/recipe.toml rename to recipes/wip/graphics/gmic/recipe.toml diff --git a/recipes/wip/incompact3d/recipe.toml b/recipes/wip/graphics/incompact3d/recipe.toml similarity index 100% rename from recipes/wip/incompact3d/recipe.toml rename to recipes/wip/graphics/incompact3d/recipe.toml diff --git a/recipes/wip/hdf5/recipe.toml b/recipes/wip/libs/hdf5/recipe.toml similarity index 100% rename from recipes/wip/hdf5/recipe.toml rename to recipes/wip/libs/hdf5/recipe.toml diff --git a/recipes/wip/hwloc/recipe.toml b/recipes/wip/libs/hwloc/recipe.toml similarity index 100% rename from recipes/wip/hwloc/recipe.toml rename to recipes/wip/libs/hwloc/recipe.toml diff --git a/recipes/wip/json-c/recipe.toml b/recipes/wip/libs/json-c/recipe.toml similarity index 100% rename from recipes/wip/json-c/recipe.toml rename to recipes/wip/libs/json-c/recipe.toml diff --git a/recipes/wip/json-glib/recipe.toml b/recipes/wip/libs/json-glib/recipe.toml similarity index 100% rename from recipes/wip/json-glib/recipe.toml rename to recipes/wip/libs/json-glib/recipe.toml diff --git a/recipes/wip/jsonrpc-glib/recipe.toml b/recipes/wip/libs/jsonrpc-glib/recipe.toml similarity index 100% rename from recipes/wip/jsonrpc-glib/recipe.toml rename to recipes/wip/libs/jsonrpc-glib/recipe.toml diff --git a/recipes/wip/kerberos5/recipe.toml b/recipes/wip/libs/kerberos5/recipe.toml similarity index 100% rename from recipes/wip/kerberos5/recipe.toml rename to recipes/wip/libs/kerberos5/recipe.toml diff --git a/recipes/wip/lame/recipe.toml b/recipes/wip/libs/lame/recipe.toml similarity index 100% rename from recipes/wip/lame/recipe.toml rename to recipes/wip/libs/lame/recipe.toml diff --git a/recipes/wip/musepack/recipe.toml b/recipes/wip/libs/musepack/recipe.toml similarity index 100% rename from recipes/wip/musepack/recipe.toml rename to recipes/wip/libs/musepack/recipe.toml diff --git a/recipes/wip/nlohmann-json/recipe.toml b/recipes/wip/libs/nlohmann-json/recipe.toml similarity index 100% rename from recipes/wip/nlohmann-json/recipe.toml rename to recipes/wip/libs/nlohmann-json/recipe.toml diff --git a/recipes/wip/sdl-pango/recipe.toml b/recipes/wip/libs/sdl-pango/recipe.toml similarity index 100% rename from recipes/wip/sdl-pango/recipe.toml rename to recipes/wip/libs/sdl-pango/recipe.toml diff --git a/recipes/wip/sdl2-net/recipe.toml b/recipes/wip/libs/sdl2-net/recipe.toml similarity index 100% rename from recipes/wip/sdl2-net/recipe.toml rename to recipes/wip/libs/sdl2-net/recipe.toml diff --git a/recipes/wip/sdl2-pango/recipe.toml b/recipes/wip/libs/sdl2-pango/recipe.toml similarity index 100% rename from recipes/wip/sdl2-pango/recipe.toml rename to recipes/wip/libs/sdl2-pango/recipe.toml diff --git a/recipes/wip/simdjson/recipe.toml b/recipes/wip/libs/simdjson/recipe.toml similarity index 100% rename from recipes/wip/simdjson/recipe.toml rename to recipes/wip/libs/simdjson/recipe.toml diff --git a/recipes/wip/speex/recipe.toml b/recipes/wip/libs/speex/recipe.toml similarity index 100% rename from recipes/wip/speex/recipe.toml rename to recipes/wip/libs/speex/recipe.toml diff --git a/recipes/wip/speexdsp/recipe.toml b/recipes/wip/libs/speexdsp/recipe.toml similarity index 100% rename from recipes/wip/speexdsp/recipe.toml rename to recipes/wip/libs/speexdsp/recipe.toml diff --git a/recipes/wip/halloy/recipe.toml b/recipes/wip/net/halloy/recipe.toml similarity index 100% rename from recipes/wip/halloy/recipe.toml rename to recipes/wip/net/halloy/recipe.toml diff --git a/recipes/wip/speedtest-rs/recipe.toml b/recipes/wip/net/speedtest-rs/recipe.toml similarity index 100% rename from recipes/wip/speedtest-rs/recipe.toml rename to recipes/wip/net/speedtest-rs/recipe.toml diff --git a/recipes/wip/tiny/recipe.toml b/recipes/wip/net/tiny/recipe.toml similarity index 100% rename from recipes/wip/tiny/recipe.toml rename to recipes/wip/net/tiny/recipe.toml diff --git a/recipes/wip/trippy/recipe.toml b/recipes/wip/net/trippy/recipe.toml similarity index 100% rename from recipes/wip/trippy/recipe.toml rename to recipes/wip/net/trippy/recipe.toml diff --git a/recipes/wip/wget/recipe.toml b/recipes/wip/net/wget/recipe.toml similarity index 100% rename from recipes/wip/wget/recipe.toml rename to recipes/wip/net/wget/recipe.toml diff --git a/recipes/wip/wget2/recipe.toml b/recipes/wip/net/wget2/recipe.toml similarity index 100% rename from recipes/wip/wget2/recipe.toml rename to recipes/wip/net/wget2/recipe.toml diff --git a/recipes/wip/wireguard-rs/recipe.toml b/recipes/wip/net/wireguard-rs/recipe.toml similarity index 100% rename from recipes/wip/wireguard-rs/recipe.toml rename to recipes/wip/net/wireguard-rs/recipe.toml diff --git a/recipes/wip/yaydl/recipe.toml b/recipes/wip/net/yaydl/recipe.toml similarity index 100% rename from recipes/wip/yaydl/recipe.toml rename to recipes/wip/net/yaydl/recipe.toml diff --git a/recipes/wip/yazi/recipe.toml b/recipes/wip/net/yazi/recipe.toml similarity index 100% rename from recipes/wip/yazi/recipe.toml rename to recipes/wip/net/yazi/recipe.toml diff --git a/recipes/wip/zerotier/recipe.toml b/recipes/wip/net/zerotier/recipe.toml similarity index 100% rename from recipes/wip/zerotier/recipe.toml rename to recipes/wip/net/zerotier/recipe.toml diff --git a/recipes/wip/hickory-dns/recipe.toml b/recipes/wip/services/hickory-dns/recipe.toml similarity index 100% rename from recipes/wip/hickory-dns/recipe.toml rename to recipes/wip/services/hickory-dns/recipe.toml diff --git a/recipes/wip/cpuminer-opt/recipe.toml b/recipes/wip/tools/cpuminer-opt/recipe.toml similarity index 100% rename from recipes/wip/cpuminer-opt/recipe.toml rename to recipes/wip/tools/cpuminer-opt/recipe.toml diff --git a/recipes/wip/cute/recipe.toml b/recipes/wip/tools/cute/recipe.toml similarity index 100% rename from recipes/wip/cute/recipe.toml rename to recipes/wip/tools/cute/recipe.toml diff --git a/recipes/wip/util-linux/recipe.toml b/recipes/wip/tools/util-linux/recipe.toml similarity index 100% rename from recipes/wip/util-linux/recipe.toml rename to recipes/wip/tools/util-linux/recipe.toml diff --git a/recipes/wip/avp/recipe.toml b/recipes/wip/video/avp/recipe.toml similarity index 100% rename from recipes/wip/avp/recipe.toml rename to recipes/wip/video/avp/recipe.toml diff --git a/recipes/wip/glide/recipe.toml b/recipes/wip/video/glide/recipe.toml similarity index 100% rename from recipes/wip/glide/recipe.toml rename to recipes/wip/video/glide/recipe.toml From 71de33d770094e039a6f3de3af2bbb9c8f3b0606 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 16 Feb 2024 21:42:08 +0000 Subject: [PATCH 1576/3180] move recipes --- recipes/wip/{ => db}/rocksdb/recipe.toml | 0 recipes/wip/{ => db}/sqlite3/recipe.toml | 0 recipes/wip/{ => dev}/pixi/recipe.toml | 0 recipes/wip/{ => dev}/redis/recipe.toml | 0 recipes/wip/{ => dev}/ruby/recipe.toml | 0 recipes/wip/{ => dev}/ruff/recipe.toml | 0 recipes/wip/{ => libs}/lrdf/recipe.toml | 0 recipes/wip/{ => libs}/mimalloc/recipe.toml | 0 recipes/wip/{ => libs}/mlt/recipe.toml | 0 recipes/wip/{ => libs}/opencolorio/recipe.toml | 0 recipes/wip/{ => libs}/openexr/recipe.toml | 0 recipes/wip/{ => libs}/openimageio/recipe.toml | 0 recipes/wip/{ => libs}/openmpi/recipe.toml | 0 recipes/wip/{ => libs}/pangomm/recipe.toml | 0 recipes/wip/{ => libs}/pystring/recipe.toml | 0 recipes/wip/{ => libs}/totem-pl-parser/recipe.toml | 0 recipes/wip/{ => libs}/twolame/recipe.toml | 0 recipes/wip/{ => libs}/vamp-plugin-sdk/recipe.toml | 0 recipes/wip/{ => libs}/webkit/recipe.toml | 0 recipes/wip/{ => libs}/webkitgtk3/recipe.toml | 0 recipes/wip/{ => libs}/webkitgtk4/recipe.toml | 0 recipes/wip/{ => libs}/wxwidgets-gtk3/recipe.toml | 0 recipes/wip/{ => libs}/zlib-ng/recipe.toml | 0 recipes/wip/{ => libs}/zmusic/recipe.toml | 0 recipes/wip/{ => tools}/backhand/recipe.toml | 0 recipes/wip/{ => tools}/tin-summer/recipe.toml | 0 recipes/wip/{ => tools}/torrust-tracker/recipe.toml | 0 recipes/wip/{ => tools}/tp-note/recipe.toml | 0 recipes/wip/{ => tools}/treq/recipe.toml | 0 recipes/wip/{ => tools}/tui-journal/recipe.toml | 0 30 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => db}/rocksdb/recipe.toml (100%) rename recipes/wip/{ => db}/sqlite3/recipe.toml (100%) rename recipes/wip/{ => dev}/pixi/recipe.toml (100%) rename recipes/wip/{ => dev}/redis/recipe.toml (100%) rename recipes/wip/{ => dev}/ruby/recipe.toml (100%) rename recipes/wip/{ => dev}/ruff/recipe.toml (100%) rename recipes/wip/{ => libs}/lrdf/recipe.toml (100%) rename recipes/wip/{ => libs}/mimalloc/recipe.toml (100%) rename recipes/wip/{ => libs}/mlt/recipe.toml (100%) rename recipes/wip/{ => libs}/opencolorio/recipe.toml (100%) rename recipes/wip/{ => libs}/openexr/recipe.toml (100%) rename recipes/wip/{ => libs}/openimageio/recipe.toml (100%) rename recipes/wip/{ => libs}/openmpi/recipe.toml (100%) rename recipes/wip/{ => libs}/pangomm/recipe.toml (100%) rename recipes/wip/{ => libs}/pystring/recipe.toml (100%) rename recipes/wip/{ => libs}/totem-pl-parser/recipe.toml (100%) rename recipes/wip/{ => libs}/twolame/recipe.toml (100%) rename recipes/wip/{ => libs}/vamp-plugin-sdk/recipe.toml (100%) rename recipes/wip/{ => libs}/webkit/recipe.toml (100%) rename recipes/wip/{ => libs}/webkitgtk3/recipe.toml (100%) rename recipes/wip/{ => libs}/webkitgtk4/recipe.toml (100%) rename recipes/wip/{ => libs}/wxwidgets-gtk3/recipe.toml (100%) rename recipes/wip/{ => libs}/zlib-ng/recipe.toml (100%) rename recipes/wip/{ => libs}/zmusic/recipe.toml (100%) rename recipes/wip/{ => tools}/backhand/recipe.toml (100%) rename recipes/wip/{ => tools}/tin-summer/recipe.toml (100%) rename recipes/wip/{ => tools}/torrust-tracker/recipe.toml (100%) rename recipes/wip/{ => tools}/tp-note/recipe.toml (100%) rename recipes/wip/{ => tools}/treq/recipe.toml (100%) rename recipes/wip/{ => tools}/tui-journal/recipe.toml (100%) diff --git a/recipes/wip/rocksdb/recipe.toml b/recipes/wip/db/rocksdb/recipe.toml similarity index 100% rename from recipes/wip/rocksdb/recipe.toml rename to recipes/wip/db/rocksdb/recipe.toml diff --git a/recipes/wip/sqlite3/recipe.toml b/recipes/wip/db/sqlite3/recipe.toml similarity index 100% rename from recipes/wip/sqlite3/recipe.toml rename to recipes/wip/db/sqlite3/recipe.toml diff --git a/recipes/wip/pixi/recipe.toml b/recipes/wip/dev/pixi/recipe.toml similarity index 100% rename from recipes/wip/pixi/recipe.toml rename to recipes/wip/dev/pixi/recipe.toml diff --git a/recipes/wip/redis/recipe.toml b/recipes/wip/dev/redis/recipe.toml similarity index 100% rename from recipes/wip/redis/recipe.toml rename to recipes/wip/dev/redis/recipe.toml diff --git a/recipes/wip/ruby/recipe.toml b/recipes/wip/dev/ruby/recipe.toml similarity index 100% rename from recipes/wip/ruby/recipe.toml rename to recipes/wip/dev/ruby/recipe.toml diff --git a/recipes/wip/ruff/recipe.toml b/recipes/wip/dev/ruff/recipe.toml similarity index 100% rename from recipes/wip/ruff/recipe.toml rename to recipes/wip/dev/ruff/recipe.toml diff --git a/recipes/wip/lrdf/recipe.toml b/recipes/wip/libs/lrdf/recipe.toml similarity index 100% rename from recipes/wip/lrdf/recipe.toml rename to recipes/wip/libs/lrdf/recipe.toml diff --git a/recipes/wip/mimalloc/recipe.toml b/recipes/wip/libs/mimalloc/recipe.toml similarity index 100% rename from recipes/wip/mimalloc/recipe.toml rename to recipes/wip/libs/mimalloc/recipe.toml diff --git a/recipes/wip/mlt/recipe.toml b/recipes/wip/libs/mlt/recipe.toml similarity index 100% rename from recipes/wip/mlt/recipe.toml rename to recipes/wip/libs/mlt/recipe.toml diff --git a/recipes/wip/opencolorio/recipe.toml b/recipes/wip/libs/opencolorio/recipe.toml similarity index 100% rename from recipes/wip/opencolorio/recipe.toml rename to recipes/wip/libs/opencolorio/recipe.toml diff --git a/recipes/wip/openexr/recipe.toml b/recipes/wip/libs/openexr/recipe.toml similarity index 100% rename from recipes/wip/openexr/recipe.toml rename to recipes/wip/libs/openexr/recipe.toml diff --git a/recipes/wip/openimageio/recipe.toml b/recipes/wip/libs/openimageio/recipe.toml similarity index 100% rename from recipes/wip/openimageio/recipe.toml rename to recipes/wip/libs/openimageio/recipe.toml diff --git a/recipes/wip/openmpi/recipe.toml b/recipes/wip/libs/openmpi/recipe.toml similarity index 100% rename from recipes/wip/openmpi/recipe.toml rename to recipes/wip/libs/openmpi/recipe.toml diff --git a/recipes/wip/pangomm/recipe.toml b/recipes/wip/libs/pangomm/recipe.toml similarity index 100% rename from recipes/wip/pangomm/recipe.toml rename to recipes/wip/libs/pangomm/recipe.toml diff --git a/recipes/wip/pystring/recipe.toml b/recipes/wip/libs/pystring/recipe.toml similarity index 100% rename from recipes/wip/pystring/recipe.toml rename to recipes/wip/libs/pystring/recipe.toml diff --git a/recipes/wip/totem-pl-parser/recipe.toml b/recipes/wip/libs/totem-pl-parser/recipe.toml similarity index 100% rename from recipes/wip/totem-pl-parser/recipe.toml rename to recipes/wip/libs/totem-pl-parser/recipe.toml diff --git a/recipes/wip/twolame/recipe.toml b/recipes/wip/libs/twolame/recipe.toml similarity index 100% rename from recipes/wip/twolame/recipe.toml rename to recipes/wip/libs/twolame/recipe.toml diff --git a/recipes/wip/vamp-plugin-sdk/recipe.toml b/recipes/wip/libs/vamp-plugin-sdk/recipe.toml similarity index 100% rename from recipes/wip/vamp-plugin-sdk/recipe.toml rename to recipes/wip/libs/vamp-plugin-sdk/recipe.toml diff --git a/recipes/wip/webkit/recipe.toml b/recipes/wip/libs/webkit/recipe.toml similarity index 100% rename from recipes/wip/webkit/recipe.toml rename to recipes/wip/libs/webkit/recipe.toml diff --git a/recipes/wip/webkitgtk3/recipe.toml b/recipes/wip/libs/webkitgtk3/recipe.toml similarity index 100% rename from recipes/wip/webkitgtk3/recipe.toml rename to recipes/wip/libs/webkitgtk3/recipe.toml diff --git a/recipes/wip/webkitgtk4/recipe.toml b/recipes/wip/libs/webkitgtk4/recipe.toml similarity index 100% rename from recipes/wip/webkitgtk4/recipe.toml rename to recipes/wip/libs/webkitgtk4/recipe.toml diff --git a/recipes/wip/wxwidgets-gtk3/recipe.toml b/recipes/wip/libs/wxwidgets-gtk3/recipe.toml similarity index 100% rename from recipes/wip/wxwidgets-gtk3/recipe.toml rename to recipes/wip/libs/wxwidgets-gtk3/recipe.toml diff --git a/recipes/wip/zlib-ng/recipe.toml b/recipes/wip/libs/zlib-ng/recipe.toml similarity index 100% rename from recipes/wip/zlib-ng/recipe.toml rename to recipes/wip/libs/zlib-ng/recipe.toml diff --git a/recipes/wip/zmusic/recipe.toml b/recipes/wip/libs/zmusic/recipe.toml similarity index 100% rename from recipes/wip/zmusic/recipe.toml rename to recipes/wip/libs/zmusic/recipe.toml diff --git a/recipes/wip/backhand/recipe.toml b/recipes/wip/tools/backhand/recipe.toml similarity index 100% rename from recipes/wip/backhand/recipe.toml rename to recipes/wip/tools/backhand/recipe.toml diff --git a/recipes/wip/tin-summer/recipe.toml b/recipes/wip/tools/tin-summer/recipe.toml similarity index 100% rename from recipes/wip/tin-summer/recipe.toml rename to recipes/wip/tools/tin-summer/recipe.toml diff --git a/recipes/wip/torrust-tracker/recipe.toml b/recipes/wip/tools/torrust-tracker/recipe.toml similarity index 100% rename from recipes/wip/torrust-tracker/recipe.toml rename to recipes/wip/tools/torrust-tracker/recipe.toml diff --git a/recipes/wip/tp-note/recipe.toml b/recipes/wip/tools/tp-note/recipe.toml similarity index 100% rename from recipes/wip/tp-note/recipe.toml rename to recipes/wip/tools/tp-note/recipe.toml diff --git a/recipes/wip/treq/recipe.toml b/recipes/wip/tools/treq/recipe.toml similarity index 100% rename from recipes/wip/treq/recipe.toml rename to recipes/wip/tools/treq/recipe.toml diff --git a/recipes/wip/tui-journal/recipe.toml b/recipes/wip/tools/tui-journal/recipe.toml similarity index 100% rename from recipes/wip/tui-journal/recipe.toml rename to recipes/wip/tools/tui-journal/recipe.toml From 4a38ae105a0b190f26c46631757df10b9b27f23a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 16 Feb 2024 21:58:07 +0000 Subject: [PATCH 1577/3180] move recipes --- recipes/wip/{ => db}/iotdb/recipe.toml | 0 recipes/wip/{ => db}/tidb-server/recipe.toml | 0 recipes/wip/{ => dev}/gegl/recipe.toml | 0 recipes/wip/{ => dev}/gexiv2/recipe.toml | 0 recipes/wip/{ => dev}/glibmm/recipe.toml | 0 recipes/wip/{ => dev}/gperf/recipe.toml | 0 recipes/wip/{ => dev}/graphene/recipe.toml | 0 recipes/wip/{ => dev}/gtest/recipe.toml | 0 recipes/wip/{ => dev}/ispc/recipe.toml | 0 recipes/wip/{ => dev}/loadlibrary/recipe.toml | 0 recipes/wip/{ => emulators}/yuzu/recipe.toml | 0 recipes/wip/{ => graphics}/embree/recipe.toml | 0 recipes/wip/{ => graphics}/gaffer/recipe.toml | 0 recipes/wip/{ => libs}/bullet-physics/recipe.toml | 0 recipes/wip/{ => libs}/cairomm-1.0+/recipe.toml | 0 recipes/wip/{ => libs}/cairomm-1.16+/recipe.toml | 0 recipes/wip/{ => libs}/gnome2-common/recipe.toml | 0 recipes/wip/{gnome2-common => libs}/gnome3-common/recipe.toml | 0 recipes/wip/{gnome2-common => libs}/gnutls3/recipe.toml | 0 .../wip/{gnome2-common => libs}/gobject-introspection/recipe.toml | 0 recipes/wip/{gnome2-common => libs}/imlib2/recipe.toml | 0 recipes/wip/{gnome2-common => libs}/iniparser/recipe.toml | 0 recipes/wip/{ => libs}/livedotcom/recipe.toml | 0 recipes/wip/{ => tools}/checkpwn/recipe.toml | 0 recipes/wip/{ => tools}/emplace/recipe.toml | 0 recipes/wip/{ => tools}/gping/recipe.toml | 0 recipes/wip/{ => tools}/lz4/recipe.toml | 0 recipes/wip/{ => tools}/maze-tui/recipe.toml | 0 recipes/wip/{ => tools}/potrace/recipe.toml | 0 recipes/wip/{ => tools}/rusty-krab-manager/recipe.toml | 0 recipes/wip/{ => tools}/typst/recipe.toml | 0 recipes/wip/{ => tools}/usbutils/recipe.toml | 0 recipes/wip/{ => tools}/vulkan-tools/recipe.toml | 0 recipes/wip/{ => tools}/wick/recipe.toml | 0 recipes/wip/{ => tools}/xmrig/recipe.toml | 0 recipes/wip/{ => tools}/youtube-tui/recipe.toml | 0 recipes/wip/{ => tools}/zstd/recipe.toml | 0 recipes/wip/{ => wayland}/wlroots/recipe.toml | 0 38 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => db}/iotdb/recipe.toml (100%) rename recipes/wip/{ => db}/tidb-server/recipe.toml (100%) rename recipes/wip/{ => dev}/gegl/recipe.toml (100%) rename recipes/wip/{ => dev}/gexiv2/recipe.toml (100%) rename recipes/wip/{ => dev}/glibmm/recipe.toml (100%) rename recipes/wip/{ => dev}/gperf/recipe.toml (100%) rename recipes/wip/{ => dev}/graphene/recipe.toml (100%) rename recipes/wip/{ => dev}/gtest/recipe.toml (100%) rename recipes/wip/{ => dev}/ispc/recipe.toml (100%) rename recipes/wip/{ => dev}/loadlibrary/recipe.toml (100%) rename recipes/wip/{ => emulators}/yuzu/recipe.toml (100%) rename recipes/wip/{ => graphics}/embree/recipe.toml (100%) rename recipes/wip/{ => graphics}/gaffer/recipe.toml (100%) rename recipes/wip/{ => libs}/bullet-physics/recipe.toml (100%) rename recipes/wip/{ => libs}/cairomm-1.0+/recipe.toml (100%) rename recipes/wip/{ => libs}/cairomm-1.16+/recipe.toml (100%) rename recipes/wip/{ => libs}/gnome2-common/recipe.toml (100%) rename recipes/wip/{gnome2-common => libs}/gnome3-common/recipe.toml (100%) rename recipes/wip/{gnome2-common => libs}/gnutls3/recipe.toml (100%) rename recipes/wip/{gnome2-common => libs}/gobject-introspection/recipe.toml (100%) rename recipes/wip/{gnome2-common => libs}/imlib2/recipe.toml (100%) rename recipes/wip/{gnome2-common => libs}/iniparser/recipe.toml (100%) rename recipes/wip/{ => libs}/livedotcom/recipe.toml (100%) rename recipes/wip/{ => tools}/checkpwn/recipe.toml (100%) rename recipes/wip/{ => tools}/emplace/recipe.toml (100%) rename recipes/wip/{ => tools}/gping/recipe.toml (100%) rename recipes/wip/{ => tools}/lz4/recipe.toml (100%) rename recipes/wip/{ => tools}/maze-tui/recipe.toml (100%) rename recipes/wip/{ => tools}/potrace/recipe.toml (100%) rename recipes/wip/{ => tools}/rusty-krab-manager/recipe.toml (100%) rename recipes/wip/{ => tools}/typst/recipe.toml (100%) rename recipes/wip/{ => tools}/usbutils/recipe.toml (100%) rename recipes/wip/{ => tools}/vulkan-tools/recipe.toml (100%) rename recipes/wip/{ => tools}/wick/recipe.toml (100%) rename recipes/wip/{ => tools}/xmrig/recipe.toml (100%) rename recipes/wip/{ => tools}/youtube-tui/recipe.toml (100%) rename recipes/wip/{ => tools}/zstd/recipe.toml (100%) rename recipes/wip/{ => wayland}/wlroots/recipe.toml (100%) diff --git a/recipes/wip/iotdb/recipe.toml b/recipes/wip/db/iotdb/recipe.toml similarity index 100% rename from recipes/wip/iotdb/recipe.toml rename to recipes/wip/db/iotdb/recipe.toml diff --git a/recipes/wip/tidb-server/recipe.toml b/recipes/wip/db/tidb-server/recipe.toml similarity index 100% rename from recipes/wip/tidb-server/recipe.toml rename to recipes/wip/db/tidb-server/recipe.toml diff --git a/recipes/wip/gegl/recipe.toml b/recipes/wip/dev/gegl/recipe.toml similarity index 100% rename from recipes/wip/gegl/recipe.toml rename to recipes/wip/dev/gegl/recipe.toml diff --git a/recipes/wip/gexiv2/recipe.toml b/recipes/wip/dev/gexiv2/recipe.toml similarity index 100% rename from recipes/wip/gexiv2/recipe.toml rename to recipes/wip/dev/gexiv2/recipe.toml diff --git a/recipes/wip/glibmm/recipe.toml b/recipes/wip/dev/glibmm/recipe.toml similarity index 100% rename from recipes/wip/glibmm/recipe.toml rename to recipes/wip/dev/glibmm/recipe.toml diff --git a/recipes/wip/gperf/recipe.toml b/recipes/wip/dev/gperf/recipe.toml similarity index 100% rename from recipes/wip/gperf/recipe.toml rename to recipes/wip/dev/gperf/recipe.toml diff --git a/recipes/wip/graphene/recipe.toml b/recipes/wip/dev/graphene/recipe.toml similarity index 100% rename from recipes/wip/graphene/recipe.toml rename to recipes/wip/dev/graphene/recipe.toml diff --git a/recipes/wip/gtest/recipe.toml b/recipes/wip/dev/gtest/recipe.toml similarity index 100% rename from recipes/wip/gtest/recipe.toml rename to recipes/wip/dev/gtest/recipe.toml diff --git a/recipes/wip/ispc/recipe.toml b/recipes/wip/dev/ispc/recipe.toml similarity index 100% rename from recipes/wip/ispc/recipe.toml rename to recipes/wip/dev/ispc/recipe.toml diff --git a/recipes/wip/loadlibrary/recipe.toml b/recipes/wip/dev/loadlibrary/recipe.toml similarity index 100% rename from recipes/wip/loadlibrary/recipe.toml rename to recipes/wip/dev/loadlibrary/recipe.toml diff --git a/recipes/wip/yuzu/recipe.toml b/recipes/wip/emulators/yuzu/recipe.toml similarity index 100% rename from recipes/wip/yuzu/recipe.toml rename to recipes/wip/emulators/yuzu/recipe.toml diff --git a/recipes/wip/embree/recipe.toml b/recipes/wip/graphics/embree/recipe.toml similarity index 100% rename from recipes/wip/embree/recipe.toml rename to recipes/wip/graphics/embree/recipe.toml diff --git a/recipes/wip/gaffer/recipe.toml b/recipes/wip/graphics/gaffer/recipe.toml similarity index 100% rename from recipes/wip/gaffer/recipe.toml rename to recipes/wip/graphics/gaffer/recipe.toml diff --git a/recipes/wip/bullet-physics/recipe.toml b/recipes/wip/libs/bullet-physics/recipe.toml similarity index 100% rename from recipes/wip/bullet-physics/recipe.toml rename to recipes/wip/libs/bullet-physics/recipe.toml diff --git a/recipes/wip/cairomm-1.0+/recipe.toml b/recipes/wip/libs/cairomm-1.0+/recipe.toml similarity index 100% rename from recipes/wip/cairomm-1.0+/recipe.toml rename to recipes/wip/libs/cairomm-1.0+/recipe.toml diff --git a/recipes/wip/cairomm-1.16+/recipe.toml b/recipes/wip/libs/cairomm-1.16+/recipe.toml similarity index 100% rename from recipes/wip/cairomm-1.16+/recipe.toml rename to recipes/wip/libs/cairomm-1.16+/recipe.toml diff --git a/recipes/wip/gnome2-common/recipe.toml b/recipes/wip/libs/gnome2-common/recipe.toml similarity index 100% rename from recipes/wip/gnome2-common/recipe.toml rename to recipes/wip/libs/gnome2-common/recipe.toml diff --git a/recipes/wip/gnome2-common/gnome3-common/recipe.toml b/recipes/wip/libs/gnome3-common/recipe.toml similarity index 100% rename from recipes/wip/gnome2-common/gnome3-common/recipe.toml rename to recipes/wip/libs/gnome3-common/recipe.toml diff --git a/recipes/wip/gnome2-common/gnutls3/recipe.toml b/recipes/wip/libs/gnutls3/recipe.toml similarity index 100% rename from recipes/wip/gnome2-common/gnutls3/recipe.toml rename to recipes/wip/libs/gnutls3/recipe.toml diff --git a/recipes/wip/gnome2-common/gobject-introspection/recipe.toml b/recipes/wip/libs/gobject-introspection/recipe.toml similarity index 100% rename from recipes/wip/gnome2-common/gobject-introspection/recipe.toml rename to recipes/wip/libs/gobject-introspection/recipe.toml diff --git a/recipes/wip/gnome2-common/imlib2/recipe.toml b/recipes/wip/libs/imlib2/recipe.toml similarity index 100% rename from recipes/wip/gnome2-common/imlib2/recipe.toml rename to recipes/wip/libs/imlib2/recipe.toml diff --git a/recipes/wip/gnome2-common/iniparser/recipe.toml b/recipes/wip/libs/iniparser/recipe.toml similarity index 100% rename from recipes/wip/gnome2-common/iniparser/recipe.toml rename to recipes/wip/libs/iniparser/recipe.toml diff --git a/recipes/wip/livedotcom/recipe.toml b/recipes/wip/libs/livedotcom/recipe.toml similarity index 100% rename from recipes/wip/livedotcom/recipe.toml rename to recipes/wip/libs/livedotcom/recipe.toml diff --git a/recipes/wip/checkpwn/recipe.toml b/recipes/wip/tools/checkpwn/recipe.toml similarity index 100% rename from recipes/wip/checkpwn/recipe.toml rename to recipes/wip/tools/checkpwn/recipe.toml diff --git a/recipes/wip/emplace/recipe.toml b/recipes/wip/tools/emplace/recipe.toml similarity index 100% rename from recipes/wip/emplace/recipe.toml rename to recipes/wip/tools/emplace/recipe.toml diff --git a/recipes/wip/gping/recipe.toml b/recipes/wip/tools/gping/recipe.toml similarity index 100% rename from recipes/wip/gping/recipe.toml rename to recipes/wip/tools/gping/recipe.toml diff --git a/recipes/wip/lz4/recipe.toml b/recipes/wip/tools/lz4/recipe.toml similarity index 100% rename from recipes/wip/lz4/recipe.toml rename to recipes/wip/tools/lz4/recipe.toml diff --git a/recipes/wip/maze-tui/recipe.toml b/recipes/wip/tools/maze-tui/recipe.toml similarity index 100% rename from recipes/wip/maze-tui/recipe.toml rename to recipes/wip/tools/maze-tui/recipe.toml diff --git a/recipes/wip/potrace/recipe.toml b/recipes/wip/tools/potrace/recipe.toml similarity index 100% rename from recipes/wip/potrace/recipe.toml rename to recipes/wip/tools/potrace/recipe.toml diff --git a/recipes/wip/rusty-krab-manager/recipe.toml b/recipes/wip/tools/rusty-krab-manager/recipe.toml similarity index 100% rename from recipes/wip/rusty-krab-manager/recipe.toml rename to recipes/wip/tools/rusty-krab-manager/recipe.toml diff --git a/recipes/wip/typst/recipe.toml b/recipes/wip/tools/typst/recipe.toml similarity index 100% rename from recipes/wip/typst/recipe.toml rename to recipes/wip/tools/typst/recipe.toml diff --git a/recipes/wip/usbutils/recipe.toml b/recipes/wip/tools/usbutils/recipe.toml similarity index 100% rename from recipes/wip/usbutils/recipe.toml rename to recipes/wip/tools/usbutils/recipe.toml diff --git a/recipes/wip/vulkan-tools/recipe.toml b/recipes/wip/tools/vulkan-tools/recipe.toml similarity index 100% rename from recipes/wip/vulkan-tools/recipe.toml rename to recipes/wip/tools/vulkan-tools/recipe.toml diff --git a/recipes/wip/wick/recipe.toml b/recipes/wip/tools/wick/recipe.toml similarity index 100% rename from recipes/wip/wick/recipe.toml rename to recipes/wip/tools/wick/recipe.toml diff --git a/recipes/wip/xmrig/recipe.toml b/recipes/wip/tools/xmrig/recipe.toml similarity index 100% rename from recipes/wip/xmrig/recipe.toml rename to recipes/wip/tools/xmrig/recipe.toml diff --git a/recipes/wip/youtube-tui/recipe.toml b/recipes/wip/tools/youtube-tui/recipe.toml similarity index 100% rename from recipes/wip/youtube-tui/recipe.toml rename to recipes/wip/tools/youtube-tui/recipe.toml diff --git a/recipes/wip/zstd/recipe.toml b/recipes/wip/tools/zstd/recipe.toml similarity index 100% rename from recipes/wip/zstd/recipe.toml rename to recipes/wip/tools/zstd/recipe.toml diff --git a/recipes/wip/wlroots/recipe.toml b/recipes/wip/wayland/wlroots/recipe.toml similarity index 100% rename from recipes/wip/wlroots/recipe.toml rename to recipes/wip/wayland/wlroots/recipe.toml From 2187ed89ab1a05a1a7bc4b4b1c6fbd939a76fa65 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 16 Feb 2024 22:05:40 +0000 Subject: [PATCH 1578/3180] move recipes --- recipes/wip/{ => doc}/gnome-doc-utils/recipe.toml | 0 recipes/wip/{ => doc}/gtk-doc/recipe.toml | 0 recipes/wip/{ => graphics}/luxcorerender/recipe.toml | 0 recipes/wip/{ => graphics}/tungsten-renderer/recipe.toml | 0 recipes/wip/{ => icons}/breeze-icons/recipe.toml | 0 recipes/wip/{ => libs}/atkmm/recipe.toml | 0 recipes/wip/{ => libs}/lammps/recipe.toml | 0 recipes/wip/{ => tools}/less/recipe.toml | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => doc}/gnome-doc-utils/recipe.toml (100%) rename recipes/wip/{ => doc}/gtk-doc/recipe.toml (100%) rename recipes/wip/{ => graphics}/luxcorerender/recipe.toml (100%) rename recipes/wip/{ => graphics}/tungsten-renderer/recipe.toml (100%) rename recipes/wip/{ => icons}/breeze-icons/recipe.toml (100%) rename recipes/wip/{ => libs}/atkmm/recipe.toml (100%) rename recipes/wip/{ => libs}/lammps/recipe.toml (100%) rename recipes/wip/{ => tools}/less/recipe.toml (100%) diff --git a/recipes/wip/gnome-doc-utils/recipe.toml b/recipes/wip/doc/gnome-doc-utils/recipe.toml similarity index 100% rename from recipes/wip/gnome-doc-utils/recipe.toml rename to recipes/wip/doc/gnome-doc-utils/recipe.toml diff --git a/recipes/wip/gtk-doc/recipe.toml b/recipes/wip/doc/gtk-doc/recipe.toml similarity index 100% rename from recipes/wip/gtk-doc/recipe.toml rename to recipes/wip/doc/gtk-doc/recipe.toml diff --git a/recipes/wip/luxcorerender/recipe.toml b/recipes/wip/graphics/luxcorerender/recipe.toml similarity index 100% rename from recipes/wip/luxcorerender/recipe.toml rename to recipes/wip/graphics/luxcorerender/recipe.toml diff --git a/recipes/wip/tungsten-renderer/recipe.toml b/recipes/wip/graphics/tungsten-renderer/recipe.toml similarity index 100% rename from recipes/wip/tungsten-renderer/recipe.toml rename to recipes/wip/graphics/tungsten-renderer/recipe.toml diff --git a/recipes/wip/breeze-icons/recipe.toml b/recipes/wip/icons/breeze-icons/recipe.toml similarity index 100% rename from recipes/wip/breeze-icons/recipe.toml rename to recipes/wip/icons/breeze-icons/recipe.toml diff --git a/recipes/wip/atkmm/recipe.toml b/recipes/wip/libs/atkmm/recipe.toml similarity index 100% rename from recipes/wip/atkmm/recipe.toml rename to recipes/wip/libs/atkmm/recipe.toml diff --git a/recipes/wip/lammps/recipe.toml b/recipes/wip/libs/lammps/recipe.toml similarity index 100% rename from recipes/wip/lammps/recipe.toml rename to recipes/wip/libs/lammps/recipe.toml diff --git a/recipes/wip/less/recipe.toml b/recipes/wip/tools/less/recipe.toml similarity index 100% rename from recipes/wip/less/recipe.toml rename to recipes/wip/tools/less/recipe.toml From ba6880686a60ce8ae2c2b21ec2155a284a6fb3be Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 16 Feb 2024 22:19:34 +0000 Subject: [PATCH 1579/3180] move recipes --- recipes/wip/{ => codecs}/rav1e/recipe.toml | 0 recipes/wip/{ => demos}/rusty-rain/recipe.toml | 0 recipes/wip/{ => demos}/ternimal/recipe.toml | 0 recipes/wip/{ => demos}/xaos/recipe.toml | 0 recipes/wip/{ => emulators}/rusticnes-sdl/recipe.toml | 0 recipes/wip/{ => emulators}/tetanes/recipe.toml | 0 recipes/wip/{ => games}/rebels-in-the-sky/recipe.toml | 0 recipes/wip/{ => libs}/projectm/recipe.toml | 0 recipes/wip/{ => libs}/startup-notification/recipe.toml | 0 recipes/wip/{ => libs}/t4kcommon/recipe.toml | 0 recipes/wip/{ => libs}/taglib/recipe.toml | 0 recipes/wip/{ => libs}/termcap/recipe.toml | 0 recipes/wip/{ => net}/nspr/recipe.toml | 0 recipes/wip/{ => net}/nss-pem/recipe.toml | 0 recipes/wip/{ => net}/nss/recipe.toml | 0 recipes/wip/{ => security}/angryoxide/recipe.toml | 0 recipes/wip/{ => sound}/ncspot/recipe.toml | 0 recipes/wip/{ => sound}/rustcloud/recipe.toml | 0 recipes/wip/{ => tools}/interaction-calculus/recipe.toml | 0 19 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => codecs}/rav1e/recipe.toml (100%) rename recipes/wip/{ => demos}/rusty-rain/recipe.toml (100%) rename recipes/wip/{ => demos}/ternimal/recipe.toml (100%) rename recipes/wip/{ => demos}/xaos/recipe.toml (100%) rename recipes/wip/{ => emulators}/rusticnes-sdl/recipe.toml (100%) rename recipes/wip/{ => emulators}/tetanes/recipe.toml (100%) rename recipes/wip/{ => games}/rebels-in-the-sky/recipe.toml (100%) rename recipes/wip/{ => libs}/projectm/recipe.toml (100%) rename recipes/wip/{ => libs}/startup-notification/recipe.toml (100%) rename recipes/wip/{ => libs}/t4kcommon/recipe.toml (100%) rename recipes/wip/{ => libs}/taglib/recipe.toml (100%) rename recipes/wip/{ => libs}/termcap/recipe.toml (100%) rename recipes/wip/{ => net}/nspr/recipe.toml (100%) rename recipes/wip/{ => net}/nss-pem/recipe.toml (100%) rename recipes/wip/{ => net}/nss/recipe.toml (100%) rename recipes/wip/{ => security}/angryoxide/recipe.toml (100%) rename recipes/wip/{ => sound}/ncspot/recipe.toml (100%) rename recipes/wip/{ => sound}/rustcloud/recipe.toml (100%) rename recipes/wip/{ => tools}/interaction-calculus/recipe.toml (100%) diff --git a/recipes/wip/rav1e/recipe.toml b/recipes/wip/codecs/rav1e/recipe.toml similarity index 100% rename from recipes/wip/rav1e/recipe.toml rename to recipes/wip/codecs/rav1e/recipe.toml diff --git a/recipes/wip/rusty-rain/recipe.toml b/recipes/wip/demos/rusty-rain/recipe.toml similarity index 100% rename from recipes/wip/rusty-rain/recipe.toml rename to recipes/wip/demos/rusty-rain/recipe.toml diff --git a/recipes/wip/ternimal/recipe.toml b/recipes/wip/demos/ternimal/recipe.toml similarity index 100% rename from recipes/wip/ternimal/recipe.toml rename to recipes/wip/demos/ternimal/recipe.toml diff --git a/recipes/wip/xaos/recipe.toml b/recipes/wip/demos/xaos/recipe.toml similarity index 100% rename from recipes/wip/xaos/recipe.toml rename to recipes/wip/demos/xaos/recipe.toml diff --git a/recipes/wip/rusticnes-sdl/recipe.toml b/recipes/wip/emulators/rusticnes-sdl/recipe.toml similarity index 100% rename from recipes/wip/rusticnes-sdl/recipe.toml rename to recipes/wip/emulators/rusticnes-sdl/recipe.toml diff --git a/recipes/wip/tetanes/recipe.toml b/recipes/wip/emulators/tetanes/recipe.toml similarity index 100% rename from recipes/wip/tetanes/recipe.toml rename to recipes/wip/emulators/tetanes/recipe.toml diff --git a/recipes/wip/rebels-in-the-sky/recipe.toml b/recipes/wip/games/rebels-in-the-sky/recipe.toml similarity index 100% rename from recipes/wip/rebels-in-the-sky/recipe.toml rename to recipes/wip/games/rebels-in-the-sky/recipe.toml diff --git a/recipes/wip/projectm/recipe.toml b/recipes/wip/libs/projectm/recipe.toml similarity index 100% rename from recipes/wip/projectm/recipe.toml rename to recipes/wip/libs/projectm/recipe.toml diff --git a/recipes/wip/startup-notification/recipe.toml b/recipes/wip/libs/startup-notification/recipe.toml similarity index 100% rename from recipes/wip/startup-notification/recipe.toml rename to recipes/wip/libs/startup-notification/recipe.toml diff --git a/recipes/wip/t4kcommon/recipe.toml b/recipes/wip/libs/t4kcommon/recipe.toml similarity index 100% rename from recipes/wip/t4kcommon/recipe.toml rename to recipes/wip/libs/t4kcommon/recipe.toml diff --git a/recipes/wip/taglib/recipe.toml b/recipes/wip/libs/taglib/recipe.toml similarity index 100% rename from recipes/wip/taglib/recipe.toml rename to recipes/wip/libs/taglib/recipe.toml diff --git a/recipes/wip/termcap/recipe.toml b/recipes/wip/libs/termcap/recipe.toml similarity index 100% rename from recipes/wip/termcap/recipe.toml rename to recipes/wip/libs/termcap/recipe.toml diff --git a/recipes/wip/nspr/recipe.toml b/recipes/wip/net/nspr/recipe.toml similarity index 100% rename from recipes/wip/nspr/recipe.toml rename to recipes/wip/net/nspr/recipe.toml diff --git a/recipes/wip/nss-pem/recipe.toml b/recipes/wip/net/nss-pem/recipe.toml similarity index 100% rename from recipes/wip/nss-pem/recipe.toml rename to recipes/wip/net/nss-pem/recipe.toml diff --git a/recipes/wip/nss/recipe.toml b/recipes/wip/net/nss/recipe.toml similarity index 100% rename from recipes/wip/nss/recipe.toml rename to recipes/wip/net/nss/recipe.toml diff --git a/recipes/wip/angryoxide/recipe.toml b/recipes/wip/security/angryoxide/recipe.toml similarity index 100% rename from recipes/wip/angryoxide/recipe.toml rename to recipes/wip/security/angryoxide/recipe.toml diff --git a/recipes/wip/ncspot/recipe.toml b/recipes/wip/sound/ncspot/recipe.toml similarity index 100% rename from recipes/wip/ncspot/recipe.toml rename to recipes/wip/sound/ncspot/recipe.toml diff --git a/recipes/wip/rustcloud/recipe.toml b/recipes/wip/sound/rustcloud/recipe.toml similarity index 100% rename from recipes/wip/rustcloud/recipe.toml rename to recipes/wip/sound/rustcloud/recipe.toml diff --git a/recipes/wip/interaction-calculus/recipe.toml b/recipes/wip/tools/interaction-calculus/recipe.toml similarity index 100% rename from recipes/wip/interaction-calculus/recipe.toml rename to recipes/wip/tools/interaction-calculus/recipe.toml From 40986bf8510376b7f527b7b659f31bd7ff58aed7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 16 Feb 2024 22:53:58 +0000 Subject: [PATCH 1580/3180] move recipes --- recipes/wip/{ => benchmarks}/blogbench/recipe.toml | 0 recipes/wip/bluez/recipe.toml | 7 ------- recipes/wip/{ => db}/clickhouse/recipe.toml | 0 recipes/wip/{ => dev}/cackle/recipe.toml | 0 recipes/wip/{ => dev}/capnproto/recipe.toml | 0 recipes/wip/{ => dev}/ccs-tools/recipe.toml | 0 recipes/wip/{ => dev}/charm++/recipe.toml | 0 recipes/wip/{ => dev}/codevis/recipe.toml | 0 recipes/wip/{ => dev}/colm/recipe.toml | 0 recipes/wip/{ => graphics}/appleseed/recipe.toml | 0 recipes/wip/{ => libs}/babl/recipe.toml | 0 recipes/wip/{ => net}/bita/recipe.toml | 0 recipes/wip/{ => net}/celeste/recipe.toml | 0 recipes/wip/{ => net}/cobalt/recipe.toml | 0 recipes/wip/{ => security}/authoscope/recipe.toml | 0 recipes/wip/{ => shells}/cicada/recipe.toml | 0 recipes/wip/{ => tools}/astc-encoder/recipe.toml | 0 recipes/wip/{ => tools}/astyle/recipe.toml | 0 recipes/wip/{ => tools}/atuin/recipe.toml | 0 recipes/wip/{ => tools}/bacon/recipe.toml | 0 recipes/wip/{ => tools}/birdy/recipe.toml | 0 recipes/wip/{ => tools}/broot/recipe.toml | 0 recipes/wip/{ => tools}/bvr/recipe.toml | 0 recipes/wip/{ => tools}/cb/recipe.toml | 0 24 files changed, 7 deletions(-) rename recipes/wip/{ => benchmarks}/blogbench/recipe.toml (100%) delete mode 100644 recipes/wip/bluez/recipe.toml rename recipes/wip/{ => db}/clickhouse/recipe.toml (100%) rename recipes/wip/{ => dev}/cackle/recipe.toml (100%) rename recipes/wip/{ => dev}/capnproto/recipe.toml (100%) rename recipes/wip/{ => dev}/ccs-tools/recipe.toml (100%) rename recipes/wip/{ => dev}/charm++/recipe.toml (100%) rename recipes/wip/{ => dev}/codevis/recipe.toml (100%) rename recipes/wip/{ => dev}/colm/recipe.toml (100%) rename recipes/wip/{ => graphics}/appleseed/recipe.toml (100%) rename recipes/wip/{ => libs}/babl/recipe.toml (100%) rename recipes/wip/{ => net}/bita/recipe.toml (100%) rename recipes/wip/{ => net}/celeste/recipe.toml (100%) rename recipes/wip/{ => net}/cobalt/recipe.toml (100%) rename recipes/wip/{ => security}/authoscope/recipe.toml (100%) rename recipes/wip/{ => shells}/cicada/recipe.toml (100%) rename recipes/wip/{ => tools}/astc-encoder/recipe.toml (100%) rename recipes/wip/{ => tools}/astyle/recipe.toml (100%) rename recipes/wip/{ => tools}/atuin/recipe.toml (100%) rename recipes/wip/{ => tools}/bacon/recipe.toml (100%) rename recipes/wip/{ => tools}/birdy/recipe.toml (100%) rename recipes/wip/{ => tools}/broot/recipe.toml (100%) rename recipes/wip/{ => tools}/bvr/recipe.toml (100%) rename recipes/wip/{ => tools}/cb/recipe.toml (100%) diff --git a/recipes/wip/blogbench/recipe.toml b/recipes/wip/benchmarks/blogbench/recipe.toml similarity index 100% rename from recipes/wip/blogbench/recipe.toml rename to recipes/wip/benchmarks/blogbench/recipe.toml diff --git a/recipes/wip/bluez/recipe.toml b/recipes/wip/bluez/recipe.toml deleted file mode 100644 index 2a87925f..00000000 --- a/recipes/wip/bluez/recipe.toml +++ /dev/null @@ -1,7 +0,0 @@ -#TODO require signalfd -#TODO require Bluetooth drivers -#TODO build instructions - https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/INSTALL -[source] -tar = "http://www.kernel.org/pub/linux/bluetooth/bluez-5.66.tar.xz" -[build] -template = "configure" diff --git a/recipes/wip/clickhouse/recipe.toml b/recipes/wip/db/clickhouse/recipe.toml similarity index 100% rename from recipes/wip/clickhouse/recipe.toml rename to recipes/wip/db/clickhouse/recipe.toml diff --git a/recipes/wip/cackle/recipe.toml b/recipes/wip/dev/cackle/recipe.toml similarity index 100% rename from recipes/wip/cackle/recipe.toml rename to recipes/wip/dev/cackle/recipe.toml diff --git a/recipes/wip/capnproto/recipe.toml b/recipes/wip/dev/capnproto/recipe.toml similarity index 100% rename from recipes/wip/capnproto/recipe.toml rename to recipes/wip/dev/capnproto/recipe.toml diff --git a/recipes/wip/ccs-tools/recipe.toml b/recipes/wip/dev/ccs-tools/recipe.toml similarity index 100% rename from recipes/wip/ccs-tools/recipe.toml rename to recipes/wip/dev/ccs-tools/recipe.toml diff --git a/recipes/wip/charm++/recipe.toml b/recipes/wip/dev/charm++/recipe.toml similarity index 100% rename from recipes/wip/charm++/recipe.toml rename to recipes/wip/dev/charm++/recipe.toml diff --git a/recipes/wip/codevis/recipe.toml b/recipes/wip/dev/codevis/recipe.toml similarity index 100% rename from recipes/wip/codevis/recipe.toml rename to recipes/wip/dev/codevis/recipe.toml diff --git a/recipes/wip/colm/recipe.toml b/recipes/wip/dev/colm/recipe.toml similarity index 100% rename from recipes/wip/colm/recipe.toml rename to recipes/wip/dev/colm/recipe.toml diff --git a/recipes/wip/appleseed/recipe.toml b/recipes/wip/graphics/appleseed/recipe.toml similarity index 100% rename from recipes/wip/appleseed/recipe.toml rename to recipes/wip/graphics/appleseed/recipe.toml diff --git a/recipes/wip/babl/recipe.toml b/recipes/wip/libs/babl/recipe.toml similarity index 100% rename from recipes/wip/babl/recipe.toml rename to recipes/wip/libs/babl/recipe.toml diff --git a/recipes/wip/bita/recipe.toml b/recipes/wip/net/bita/recipe.toml similarity index 100% rename from recipes/wip/bita/recipe.toml rename to recipes/wip/net/bita/recipe.toml diff --git a/recipes/wip/celeste/recipe.toml b/recipes/wip/net/celeste/recipe.toml similarity index 100% rename from recipes/wip/celeste/recipe.toml rename to recipes/wip/net/celeste/recipe.toml diff --git a/recipes/wip/cobalt/recipe.toml b/recipes/wip/net/cobalt/recipe.toml similarity index 100% rename from recipes/wip/cobalt/recipe.toml rename to recipes/wip/net/cobalt/recipe.toml diff --git a/recipes/wip/authoscope/recipe.toml b/recipes/wip/security/authoscope/recipe.toml similarity index 100% rename from recipes/wip/authoscope/recipe.toml rename to recipes/wip/security/authoscope/recipe.toml diff --git a/recipes/wip/cicada/recipe.toml b/recipes/wip/shells/cicada/recipe.toml similarity index 100% rename from recipes/wip/cicada/recipe.toml rename to recipes/wip/shells/cicada/recipe.toml diff --git a/recipes/wip/astc-encoder/recipe.toml b/recipes/wip/tools/astc-encoder/recipe.toml similarity index 100% rename from recipes/wip/astc-encoder/recipe.toml rename to recipes/wip/tools/astc-encoder/recipe.toml diff --git a/recipes/wip/astyle/recipe.toml b/recipes/wip/tools/astyle/recipe.toml similarity index 100% rename from recipes/wip/astyle/recipe.toml rename to recipes/wip/tools/astyle/recipe.toml diff --git a/recipes/wip/atuin/recipe.toml b/recipes/wip/tools/atuin/recipe.toml similarity index 100% rename from recipes/wip/atuin/recipe.toml rename to recipes/wip/tools/atuin/recipe.toml diff --git a/recipes/wip/bacon/recipe.toml b/recipes/wip/tools/bacon/recipe.toml similarity index 100% rename from recipes/wip/bacon/recipe.toml rename to recipes/wip/tools/bacon/recipe.toml diff --git a/recipes/wip/birdy/recipe.toml b/recipes/wip/tools/birdy/recipe.toml similarity index 100% rename from recipes/wip/birdy/recipe.toml rename to recipes/wip/tools/birdy/recipe.toml diff --git a/recipes/wip/broot/recipe.toml b/recipes/wip/tools/broot/recipe.toml similarity index 100% rename from recipes/wip/broot/recipe.toml rename to recipes/wip/tools/broot/recipe.toml diff --git a/recipes/wip/bvr/recipe.toml b/recipes/wip/tools/bvr/recipe.toml similarity index 100% rename from recipes/wip/bvr/recipe.toml rename to recipes/wip/tools/bvr/recipe.toml diff --git a/recipes/wip/cb/recipe.toml b/recipes/wip/tools/cb/recipe.toml similarity index 100% rename from recipes/wip/cb/recipe.toml rename to recipes/wip/tools/cb/recipe.toml From 931e3caa062d2a4bb854d552de04387faa8c5d1c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 17 Feb 2024 00:39:27 +0000 Subject: [PATCH 1581/3180] move recipes --- recipes/wip/{ => dev}/fazi/recipe.toml | 0 recipes/wip/{ => gui}/eww/recipe.toml | 10 +++++++--- recipes/wip/{ => libs}/dcmtk/recipe.toml | 0 recipes/wip/{ => libs}/dspy/recipe.toml | 0 recipes/wip/{ => net}/drill/recipe.toml | 0 recipes/wip/{ => shells}/dune/recipe.toml | 0 recipes/wip/{ => tools}/conceal/recipe.toml | 0 recipes/wip/{ => tools}/counts/recipe.toml | 0 recipes/wip/{ => tools}/cube-timer/recipe.toml | 0 recipes/wip/{ => tools}/dim/recipe.toml | 0 recipes/wip/{ => tools}/dua/recipe.toml | 0 recipes/wip/{ => tools}/dui/recipe.toml | 0 recipes/wip/{ => tools}/dura/recipe.toml | 0 recipes/wip/{ => tools}/dust/recipe.toml | 0 recipes/wip/{ => tools}/dysk/recipe.toml | 0 recipes/wip/{ => tools}/enchant/recipe.toml | 0 recipes/wip/{ => tools}/exhaust/recipe.toml | 0 recipes/wip/{ => tools}/exuberant-ctags/recipe.toml | 0 18 files changed, 7 insertions(+), 3 deletions(-) rename recipes/wip/{ => dev}/fazi/recipe.toml (100%) rename recipes/wip/{ => gui}/eww/recipe.toml (54%) rename recipes/wip/{ => libs}/dcmtk/recipe.toml (100%) rename recipes/wip/{ => libs}/dspy/recipe.toml (100%) rename recipes/wip/{ => net}/drill/recipe.toml (100%) rename recipes/wip/{ => shells}/dune/recipe.toml (100%) rename recipes/wip/{ => tools}/conceal/recipe.toml (100%) rename recipes/wip/{ => tools}/counts/recipe.toml (100%) rename recipes/wip/{ => tools}/cube-timer/recipe.toml (100%) rename recipes/wip/{ => tools}/dim/recipe.toml (100%) rename recipes/wip/{ => tools}/dua/recipe.toml (100%) rename recipes/wip/{ => tools}/dui/recipe.toml (100%) rename recipes/wip/{ => tools}/dura/recipe.toml (100%) rename recipes/wip/{ => tools}/dust/recipe.toml (100%) rename recipes/wip/{ => tools}/dysk/recipe.toml (100%) rename recipes/wip/{ => tools}/enchant/recipe.toml (100%) rename recipes/wip/{ => tools}/exhaust/recipe.toml (100%) rename recipes/wip/{ => tools}/exuberant-ctags/recipe.toml (100%) diff --git a/recipes/wip/fazi/recipe.toml b/recipes/wip/dev/fazi/recipe.toml similarity index 100% rename from recipes/wip/fazi/recipe.toml rename to recipes/wip/dev/fazi/recipe.toml diff --git a/recipes/wip/eww/recipe.toml b/recipes/wip/gui/eww/recipe.toml similarity index 54% rename from recipes/wip/eww/recipe.toml rename to recipes/wip/gui/eww/recipe.toml index 17479c92..43f11788 100644 --- a/recipes/wip/eww/recipe.toml +++ b/recipes/wip/gui/eww/recipe.toml @@ -1,11 +1,15 @@ -#TODO Make GTK3 work +#TODO Not compiled or tested [source] git = "https://github.com/elkowar/eww" [build] -template = "cargo" +template = "custom" dependencies = [ "gtk3", + "pango", + "cairo", "gdk-pixbuf", "glib", - "cairo", ] +script = """ +cookbook_cargo_packages eww +""" diff --git a/recipes/wip/dcmtk/recipe.toml b/recipes/wip/libs/dcmtk/recipe.toml similarity index 100% rename from recipes/wip/dcmtk/recipe.toml rename to recipes/wip/libs/dcmtk/recipe.toml diff --git a/recipes/wip/dspy/recipe.toml b/recipes/wip/libs/dspy/recipe.toml similarity index 100% rename from recipes/wip/dspy/recipe.toml rename to recipes/wip/libs/dspy/recipe.toml diff --git a/recipes/wip/drill/recipe.toml b/recipes/wip/net/drill/recipe.toml similarity index 100% rename from recipes/wip/drill/recipe.toml rename to recipes/wip/net/drill/recipe.toml diff --git a/recipes/wip/dune/recipe.toml b/recipes/wip/shells/dune/recipe.toml similarity index 100% rename from recipes/wip/dune/recipe.toml rename to recipes/wip/shells/dune/recipe.toml diff --git a/recipes/wip/conceal/recipe.toml b/recipes/wip/tools/conceal/recipe.toml similarity index 100% rename from recipes/wip/conceal/recipe.toml rename to recipes/wip/tools/conceal/recipe.toml diff --git a/recipes/wip/counts/recipe.toml b/recipes/wip/tools/counts/recipe.toml similarity index 100% rename from recipes/wip/counts/recipe.toml rename to recipes/wip/tools/counts/recipe.toml diff --git a/recipes/wip/cube-timer/recipe.toml b/recipes/wip/tools/cube-timer/recipe.toml similarity index 100% rename from recipes/wip/cube-timer/recipe.toml rename to recipes/wip/tools/cube-timer/recipe.toml diff --git a/recipes/wip/dim/recipe.toml b/recipes/wip/tools/dim/recipe.toml similarity index 100% rename from recipes/wip/dim/recipe.toml rename to recipes/wip/tools/dim/recipe.toml diff --git a/recipes/wip/dua/recipe.toml b/recipes/wip/tools/dua/recipe.toml similarity index 100% rename from recipes/wip/dua/recipe.toml rename to recipes/wip/tools/dua/recipe.toml diff --git a/recipes/wip/dui/recipe.toml b/recipes/wip/tools/dui/recipe.toml similarity index 100% rename from recipes/wip/dui/recipe.toml rename to recipes/wip/tools/dui/recipe.toml diff --git a/recipes/wip/dura/recipe.toml b/recipes/wip/tools/dura/recipe.toml similarity index 100% rename from recipes/wip/dura/recipe.toml rename to recipes/wip/tools/dura/recipe.toml diff --git a/recipes/wip/dust/recipe.toml b/recipes/wip/tools/dust/recipe.toml similarity index 100% rename from recipes/wip/dust/recipe.toml rename to recipes/wip/tools/dust/recipe.toml diff --git a/recipes/wip/dysk/recipe.toml b/recipes/wip/tools/dysk/recipe.toml similarity index 100% rename from recipes/wip/dysk/recipe.toml rename to recipes/wip/tools/dysk/recipe.toml diff --git a/recipes/wip/enchant/recipe.toml b/recipes/wip/tools/enchant/recipe.toml similarity index 100% rename from recipes/wip/enchant/recipe.toml rename to recipes/wip/tools/enchant/recipe.toml diff --git a/recipes/wip/exhaust/recipe.toml b/recipes/wip/tools/exhaust/recipe.toml similarity index 100% rename from recipes/wip/exhaust/recipe.toml rename to recipes/wip/tools/exhaust/recipe.toml diff --git a/recipes/wip/exuberant-ctags/recipe.toml b/recipes/wip/tools/exuberant-ctags/recipe.toml similarity index 100% rename from recipes/wip/exuberant-ctags/recipe.toml rename to recipes/wip/tools/exuberant-ctags/recipe.toml From 109eea06490ada399a9e9c133b04daec514f3bf6 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 17 Feb 2024 20:30:48 +0000 Subject: [PATCH 1582/3180] move recipes --- recipes/wip/{ => benchmarks}/fio/recipe.toml | 0 recipes/wip/{ => db}/gobang/recipe.toml | 0 recipes/wip/{ => dev}/flex/recipe.toml | 0 recipes/wip/{ => dev}/gem5/recipe.toml | 0 recipes/wip/{ => emulators}/gameroy/recipe.toml | 0 recipes/wip/{ => finance}/gupax/recipe.toml | 0 recipes/wip/{dev => }/fonts/fontfor/recipe.toml | 0 recipes/wip/{dev => }/fonts/fontforge/recipe.toml | 0 recipes/wip/{ => fonts}/gerb/recipe.toml | 0 recipes/wip/{dev => }/fonts/nerd-fonts/recipe.toml | 0 recipes/wip/{ => graphics}/glou/recipe.toml | 0 recipes/wip/{ => libs}/gflags/recipe.toml | 0 recipes/wip/{ => libs}/gpgme/recipe.toml | 0 recipes/wip/{ => science}/gromacs/recipe.toml | 0 recipes/wip/{ => security}/hashgood/recipe.toml | 0 recipes/wip/{ => tools}/file/recipe.toml | 0 recipes/wip/{ => tools}/gengo/recipe.toml | 0 recipes/wip/{ => tools}/germ/recipe.toml | 0 recipes/wip/{ => tools}/grex/recipe.toml | 0 recipes/wip/{ => tools}/groff/recipe.toml | 0 recipes/wip/{ => tui}/finch/recipe.toml | 0 21 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => benchmarks}/fio/recipe.toml (100%) rename recipes/wip/{ => db}/gobang/recipe.toml (100%) rename recipes/wip/{ => dev}/flex/recipe.toml (100%) rename recipes/wip/{ => dev}/gem5/recipe.toml (100%) rename recipes/wip/{ => emulators}/gameroy/recipe.toml (100%) rename recipes/wip/{ => finance}/gupax/recipe.toml (100%) rename recipes/wip/{dev => }/fonts/fontfor/recipe.toml (100%) rename recipes/wip/{dev => }/fonts/fontforge/recipe.toml (100%) rename recipes/wip/{ => fonts}/gerb/recipe.toml (100%) rename recipes/wip/{dev => }/fonts/nerd-fonts/recipe.toml (100%) rename recipes/wip/{ => graphics}/glou/recipe.toml (100%) rename recipes/wip/{ => libs}/gflags/recipe.toml (100%) rename recipes/wip/{ => libs}/gpgme/recipe.toml (100%) rename recipes/wip/{ => science}/gromacs/recipe.toml (100%) rename recipes/wip/{ => security}/hashgood/recipe.toml (100%) rename recipes/wip/{ => tools}/file/recipe.toml (100%) rename recipes/wip/{ => tools}/gengo/recipe.toml (100%) rename recipes/wip/{ => tools}/germ/recipe.toml (100%) rename recipes/wip/{ => tools}/grex/recipe.toml (100%) rename recipes/wip/{ => tools}/groff/recipe.toml (100%) rename recipes/wip/{ => tui}/finch/recipe.toml (100%) diff --git a/recipes/wip/fio/recipe.toml b/recipes/wip/benchmarks/fio/recipe.toml similarity index 100% rename from recipes/wip/fio/recipe.toml rename to recipes/wip/benchmarks/fio/recipe.toml diff --git a/recipes/wip/gobang/recipe.toml b/recipes/wip/db/gobang/recipe.toml similarity index 100% rename from recipes/wip/gobang/recipe.toml rename to recipes/wip/db/gobang/recipe.toml diff --git a/recipes/wip/flex/recipe.toml b/recipes/wip/dev/flex/recipe.toml similarity index 100% rename from recipes/wip/flex/recipe.toml rename to recipes/wip/dev/flex/recipe.toml diff --git a/recipes/wip/gem5/recipe.toml b/recipes/wip/dev/gem5/recipe.toml similarity index 100% rename from recipes/wip/gem5/recipe.toml rename to recipes/wip/dev/gem5/recipe.toml diff --git a/recipes/wip/gameroy/recipe.toml b/recipes/wip/emulators/gameroy/recipe.toml similarity index 100% rename from recipes/wip/gameroy/recipe.toml rename to recipes/wip/emulators/gameroy/recipe.toml diff --git a/recipes/wip/gupax/recipe.toml b/recipes/wip/finance/gupax/recipe.toml similarity index 100% rename from recipes/wip/gupax/recipe.toml rename to recipes/wip/finance/gupax/recipe.toml diff --git a/recipes/wip/dev/fonts/fontfor/recipe.toml b/recipes/wip/fonts/fontfor/recipe.toml similarity index 100% rename from recipes/wip/dev/fonts/fontfor/recipe.toml rename to recipes/wip/fonts/fontfor/recipe.toml diff --git a/recipes/wip/dev/fonts/fontforge/recipe.toml b/recipes/wip/fonts/fontforge/recipe.toml similarity index 100% rename from recipes/wip/dev/fonts/fontforge/recipe.toml rename to recipes/wip/fonts/fontforge/recipe.toml diff --git a/recipes/wip/gerb/recipe.toml b/recipes/wip/fonts/gerb/recipe.toml similarity index 100% rename from recipes/wip/gerb/recipe.toml rename to recipes/wip/fonts/gerb/recipe.toml diff --git a/recipes/wip/dev/fonts/nerd-fonts/recipe.toml b/recipes/wip/fonts/nerd-fonts/recipe.toml similarity index 100% rename from recipes/wip/dev/fonts/nerd-fonts/recipe.toml rename to recipes/wip/fonts/nerd-fonts/recipe.toml diff --git a/recipes/wip/glou/recipe.toml b/recipes/wip/graphics/glou/recipe.toml similarity index 100% rename from recipes/wip/glou/recipe.toml rename to recipes/wip/graphics/glou/recipe.toml diff --git a/recipes/wip/gflags/recipe.toml b/recipes/wip/libs/gflags/recipe.toml similarity index 100% rename from recipes/wip/gflags/recipe.toml rename to recipes/wip/libs/gflags/recipe.toml diff --git a/recipes/wip/gpgme/recipe.toml b/recipes/wip/libs/gpgme/recipe.toml similarity index 100% rename from recipes/wip/gpgme/recipe.toml rename to recipes/wip/libs/gpgme/recipe.toml diff --git a/recipes/wip/gromacs/recipe.toml b/recipes/wip/science/gromacs/recipe.toml similarity index 100% rename from recipes/wip/gromacs/recipe.toml rename to recipes/wip/science/gromacs/recipe.toml diff --git a/recipes/wip/hashgood/recipe.toml b/recipes/wip/security/hashgood/recipe.toml similarity index 100% rename from recipes/wip/hashgood/recipe.toml rename to recipes/wip/security/hashgood/recipe.toml diff --git a/recipes/wip/file/recipe.toml b/recipes/wip/tools/file/recipe.toml similarity index 100% rename from recipes/wip/file/recipe.toml rename to recipes/wip/tools/file/recipe.toml diff --git a/recipes/wip/gengo/recipe.toml b/recipes/wip/tools/gengo/recipe.toml similarity index 100% rename from recipes/wip/gengo/recipe.toml rename to recipes/wip/tools/gengo/recipe.toml diff --git a/recipes/wip/germ/recipe.toml b/recipes/wip/tools/germ/recipe.toml similarity index 100% rename from recipes/wip/germ/recipe.toml rename to recipes/wip/tools/germ/recipe.toml diff --git a/recipes/wip/grex/recipe.toml b/recipes/wip/tools/grex/recipe.toml similarity index 100% rename from recipes/wip/grex/recipe.toml rename to recipes/wip/tools/grex/recipe.toml diff --git a/recipes/wip/groff/recipe.toml b/recipes/wip/tools/groff/recipe.toml similarity index 100% rename from recipes/wip/groff/recipe.toml rename to recipes/wip/tools/groff/recipe.toml diff --git a/recipes/wip/finch/recipe.toml b/recipes/wip/tui/finch/recipe.toml similarity index 100% rename from recipes/wip/finch/recipe.toml rename to recipes/wip/tui/finch/recipe.toml From cb3ddab159e1709328c83d00c3a388ff5446ed92 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 17 Feb 2024 20:47:31 +0000 Subject: [PATCH 1583/3180] move recipes --- recipes/wip/{ => dev}/headers/recipe.toml | 0 recipes/wip/{tools => finance}/xmrig/recipe.toml | 0 recipes/wip/heh/recipe.toml | 1 - recipes/wip/{ => net}/havn/recipe.toml | 0 4 files changed, 1 deletion(-) rename recipes/wip/{ => dev}/headers/recipe.toml (100%) rename recipes/wip/{tools => finance}/xmrig/recipe.toml (100%) rename recipes/wip/{ => net}/havn/recipe.toml (100%) diff --git a/recipes/wip/headers/recipe.toml b/recipes/wip/dev/headers/recipe.toml similarity index 100% rename from recipes/wip/headers/recipe.toml rename to recipes/wip/dev/headers/recipe.toml diff --git a/recipes/wip/tools/xmrig/recipe.toml b/recipes/wip/finance/xmrig/recipe.toml similarity index 100% rename from recipes/wip/tools/xmrig/recipe.toml rename to recipes/wip/finance/xmrig/recipe.toml diff --git a/recipes/wip/heh/recipe.toml b/recipes/wip/heh/recipe.toml index 24868749..6da963ed 100644 --- a/recipes/wip/heh/recipe.toml +++ b/recipes/wip/heh/recipe.toml @@ -1,6 +1,5 @@ #TODO x11rb crate error [source] git = "https://github.com/ndd7xv/heh" -rev = "bd69f6657b98225796369a0563bf24f3f148046c" [build] template = "cargo" diff --git a/recipes/wip/havn/recipe.toml b/recipes/wip/net/havn/recipe.toml similarity index 100% rename from recipes/wip/havn/recipe.toml rename to recipes/wip/net/havn/recipe.toml From 049dec12e8e511892734a85b396b4833138c6d88 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 17 Feb 2024 21:22:32 +0000 Subject: [PATCH 1584/3180] move recipes --- recipes/wip/{ => dev}/htmlq/recipe.toml | 0 recipes/wip/{ => dev}/level-zero/recipe.toml | 0 recipes/wip/{ => libs}/inih/recipe.toml | 0 recipes/wip/{ => libs}/lilv/recipe.toml | 0 recipes/wip/liquid-dsp/recipe.toml | 6 +----- recipes/wip/{ => services}/lemurs/recipe.toml | 0 recipes/wip/{ => tools}/horsetab/recipe.toml | 0 recipes/wip/{ => tools}/itstool/recipe.toml | 0 recipes/wip/{ => tools}/jless/recipe.toml | 0 recipes/wip/{ => tools}/jql/recipe.toml | 0 recipes/wip/{ => tools}/kanata/recipe.toml | 0 recipes/wip/{ => tools}/kbt/recipe.toml | 0 recipes/wip/{ => tui}/heh/recipe.toml | 0 recipes/wip/{ => video}/jerry/recipe.toml | 0 14 files changed, 1 insertion(+), 5 deletions(-) rename recipes/wip/{ => dev}/htmlq/recipe.toml (100%) rename recipes/wip/{ => dev}/level-zero/recipe.toml (100%) rename recipes/wip/{ => libs}/inih/recipe.toml (100%) rename recipes/wip/{ => libs}/lilv/recipe.toml (100%) rename recipes/wip/{ => services}/lemurs/recipe.toml (100%) rename recipes/wip/{ => tools}/horsetab/recipe.toml (100%) rename recipes/wip/{ => tools}/itstool/recipe.toml (100%) rename recipes/wip/{ => tools}/jless/recipe.toml (100%) rename recipes/wip/{ => tools}/jql/recipe.toml (100%) rename recipes/wip/{ => tools}/kanata/recipe.toml (100%) rename recipes/wip/{ => tools}/kbt/recipe.toml (100%) rename recipes/wip/{ => tui}/heh/recipe.toml (100%) rename recipes/wip/{ => video}/jerry/recipe.toml (100%) diff --git a/recipes/wip/htmlq/recipe.toml b/recipes/wip/dev/htmlq/recipe.toml similarity index 100% rename from recipes/wip/htmlq/recipe.toml rename to recipes/wip/dev/htmlq/recipe.toml diff --git a/recipes/wip/level-zero/recipe.toml b/recipes/wip/dev/level-zero/recipe.toml similarity index 100% rename from recipes/wip/level-zero/recipe.toml rename to recipes/wip/dev/level-zero/recipe.toml diff --git a/recipes/wip/inih/recipe.toml b/recipes/wip/libs/inih/recipe.toml similarity index 100% rename from recipes/wip/inih/recipe.toml rename to recipes/wip/libs/inih/recipe.toml diff --git a/recipes/wip/lilv/recipe.toml b/recipes/wip/libs/lilv/recipe.toml similarity index 100% rename from recipes/wip/lilv/recipe.toml rename to recipes/wip/libs/lilv/recipe.toml diff --git a/recipes/wip/liquid-dsp/recipe.toml b/recipes/wip/liquid-dsp/recipe.toml index c037b218..05a48643 100644 --- a/recipes/wip/liquid-dsp/recipe.toml +++ b/recipes/wip/liquid-dsp/recipe.toml @@ -1,4 +1,4 @@ -#TODO probably wrong script, see https://github.com/jgaeddert/liquid-dsp#installation-and-dependencies +#TODO missing script, see https://github.com/jgaeddert/liquid-dsp#installation-and-dependencies [source] git = "https://github.com/jgaeddert/liquid-dsp" rev = "8bf87b6fe325d98c250d6911fa50518d14175d86" @@ -7,7 +7,3 @@ template = "custom" dependencies = [ "fftw", ] -script = """ -bootstrap.sh -cookbook_configure -""" diff --git a/recipes/wip/lemurs/recipe.toml b/recipes/wip/services/lemurs/recipe.toml similarity index 100% rename from recipes/wip/lemurs/recipe.toml rename to recipes/wip/services/lemurs/recipe.toml diff --git a/recipes/wip/horsetab/recipe.toml b/recipes/wip/tools/horsetab/recipe.toml similarity index 100% rename from recipes/wip/horsetab/recipe.toml rename to recipes/wip/tools/horsetab/recipe.toml diff --git a/recipes/wip/itstool/recipe.toml b/recipes/wip/tools/itstool/recipe.toml similarity index 100% rename from recipes/wip/itstool/recipe.toml rename to recipes/wip/tools/itstool/recipe.toml diff --git a/recipes/wip/jless/recipe.toml b/recipes/wip/tools/jless/recipe.toml similarity index 100% rename from recipes/wip/jless/recipe.toml rename to recipes/wip/tools/jless/recipe.toml diff --git a/recipes/wip/jql/recipe.toml b/recipes/wip/tools/jql/recipe.toml similarity index 100% rename from recipes/wip/jql/recipe.toml rename to recipes/wip/tools/jql/recipe.toml diff --git a/recipes/wip/kanata/recipe.toml b/recipes/wip/tools/kanata/recipe.toml similarity index 100% rename from recipes/wip/kanata/recipe.toml rename to recipes/wip/tools/kanata/recipe.toml diff --git a/recipes/wip/kbt/recipe.toml b/recipes/wip/tools/kbt/recipe.toml similarity index 100% rename from recipes/wip/kbt/recipe.toml rename to recipes/wip/tools/kbt/recipe.toml diff --git a/recipes/wip/heh/recipe.toml b/recipes/wip/tui/heh/recipe.toml similarity index 100% rename from recipes/wip/heh/recipe.toml rename to recipes/wip/tui/heh/recipe.toml diff --git a/recipes/wip/jerry/recipe.toml b/recipes/wip/video/jerry/recipe.toml similarity index 100% rename from recipes/wip/jerry/recipe.toml rename to recipes/wip/video/jerry/recipe.toml From 110ce421d581e6313e3057a69a8fbb2a23332a7c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 17 Feb 2024 22:09:10 +0000 Subject: [PATCH 1585/3180] move recipes --- recipes/wip/{ => benchmarks}/minibude/recipe.toml | 0 recipes/wip/{ => db}/memcached/recipe.toml | 0 recipes/wip/{ => dev}/mnn/recipe.toml | 0 recipes/wip/{ => dev}/morty/recipe.toml | 0 recipes/wip/{ => dev}/ncnn/recipe.toml | 0 recipes/wip/{ => dev}/netradiant/recipe.toml | 0 recipes/wip/{ => emulators}/mimic/recipe.toml | 0 recipes/wip/{ => emulators}/nestur/recipe.toml | 0 recipes/wip/{ => libs}/liquid-dsp/recipe.toml | 0 recipes/wip/{ => libs}/lv2/recipe.toml | 0 recipes/wip/lpm/recipe.toml | 8 -------- recipes/wip/{ => net}/lldap/recipe.toml | 0 recipes/wip/{ => net}/lychee/recipe.toml | 0 recipes/wip/{ => net}/miniupnpc/recipe.toml | 0 recipes/wip/{ => net}/netop/recipe.toml | 0 recipes/wip/{ => science}/mrbayes/recipe.toml | 0 recipes/wip/{ => security}/motus/recipe.toml | 0 recipes/wip/{ => tools}/mask/recipe.toml | 0 recipes/wip/{ => tools}/mcfly/recipe.toml | 0 recipes/wip/{ => tools}/mhv/recipe.toml | 0 recipes/wip/{ => video}/lobster/recipe.toml | 0 recipes/wip/{ => web}/monolith/recipe.toml | 0 22 files changed, 8 deletions(-) rename recipes/wip/{ => benchmarks}/minibude/recipe.toml (100%) rename recipes/wip/{ => db}/memcached/recipe.toml (100%) rename recipes/wip/{ => dev}/mnn/recipe.toml (100%) rename recipes/wip/{ => dev}/morty/recipe.toml (100%) rename recipes/wip/{ => dev}/ncnn/recipe.toml (100%) rename recipes/wip/{ => dev}/netradiant/recipe.toml (100%) rename recipes/wip/{ => emulators}/mimic/recipe.toml (100%) rename recipes/wip/{ => emulators}/nestur/recipe.toml (100%) rename recipes/wip/{ => libs}/liquid-dsp/recipe.toml (100%) rename recipes/wip/{ => libs}/lv2/recipe.toml (100%) delete mode 100644 recipes/wip/lpm/recipe.toml rename recipes/wip/{ => net}/lldap/recipe.toml (100%) rename recipes/wip/{ => net}/lychee/recipe.toml (100%) rename recipes/wip/{ => net}/miniupnpc/recipe.toml (100%) rename recipes/wip/{ => net}/netop/recipe.toml (100%) rename recipes/wip/{ => science}/mrbayes/recipe.toml (100%) rename recipes/wip/{ => security}/motus/recipe.toml (100%) rename recipes/wip/{ => tools}/mask/recipe.toml (100%) rename recipes/wip/{ => tools}/mcfly/recipe.toml (100%) rename recipes/wip/{ => tools}/mhv/recipe.toml (100%) rename recipes/wip/{ => video}/lobster/recipe.toml (100%) rename recipes/wip/{ => web}/monolith/recipe.toml (100%) diff --git a/recipes/wip/minibude/recipe.toml b/recipes/wip/benchmarks/minibude/recipe.toml similarity index 100% rename from recipes/wip/minibude/recipe.toml rename to recipes/wip/benchmarks/minibude/recipe.toml diff --git a/recipes/wip/memcached/recipe.toml b/recipes/wip/db/memcached/recipe.toml similarity index 100% rename from recipes/wip/memcached/recipe.toml rename to recipes/wip/db/memcached/recipe.toml diff --git a/recipes/wip/mnn/recipe.toml b/recipes/wip/dev/mnn/recipe.toml similarity index 100% rename from recipes/wip/mnn/recipe.toml rename to recipes/wip/dev/mnn/recipe.toml diff --git a/recipes/wip/morty/recipe.toml b/recipes/wip/dev/morty/recipe.toml similarity index 100% rename from recipes/wip/morty/recipe.toml rename to recipes/wip/dev/morty/recipe.toml diff --git a/recipes/wip/ncnn/recipe.toml b/recipes/wip/dev/ncnn/recipe.toml similarity index 100% rename from recipes/wip/ncnn/recipe.toml rename to recipes/wip/dev/ncnn/recipe.toml diff --git a/recipes/wip/netradiant/recipe.toml b/recipes/wip/dev/netradiant/recipe.toml similarity index 100% rename from recipes/wip/netradiant/recipe.toml rename to recipes/wip/dev/netradiant/recipe.toml diff --git a/recipes/wip/mimic/recipe.toml b/recipes/wip/emulators/mimic/recipe.toml similarity index 100% rename from recipes/wip/mimic/recipe.toml rename to recipes/wip/emulators/mimic/recipe.toml diff --git a/recipes/wip/nestur/recipe.toml b/recipes/wip/emulators/nestur/recipe.toml similarity index 100% rename from recipes/wip/nestur/recipe.toml rename to recipes/wip/emulators/nestur/recipe.toml diff --git a/recipes/wip/liquid-dsp/recipe.toml b/recipes/wip/libs/liquid-dsp/recipe.toml similarity index 100% rename from recipes/wip/liquid-dsp/recipe.toml rename to recipes/wip/libs/liquid-dsp/recipe.toml diff --git a/recipes/wip/lv2/recipe.toml b/recipes/wip/libs/lv2/recipe.toml similarity index 100% rename from recipes/wip/lv2/recipe.toml rename to recipes/wip/libs/lv2/recipe.toml diff --git a/recipes/wip/lpm/recipe.toml b/recipes/wip/lpm/recipe.toml deleted file mode 100644 index d872ed5f..00000000 --- a/recipes/wip/lpm/recipe.toml +++ /dev/null @@ -1,8 +0,0 @@ -#TODO compilation error -[source] -git = "https://github.com/lodosgroup/lpm" -[build] -template = "custom" -script = """ -cookbook_cargo_packages lpm -""" diff --git a/recipes/wip/lldap/recipe.toml b/recipes/wip/net/lldap/recipe.toml similarity index 100% rename from recipes/wip/lldap/recipe.toml rename to recipes/wip/net/lldap/recipe.toml diff --git a/recipes/wip/lychee/recipe.toml b/recipes/wip/net/lychee/recipe.toml similarity index 100% rename from recipes/wip/lychee/recipe.toml rename to recipes/wip/net/lychee/recipe.toml diff --git a/recipes/wip/miniupnpc/recipe.toml b/recipes/wip/net/miniupnpc/recipe.toml similarity index 100% rename from recipes/wip/miniupnpc/recipe.toml rename to recipes/wip/net/miniupnpc/recipe.toml diff --git a/recipes/wip/netop/recipe.toml b/recipes/wip/net/netop/recipe.toml similarity index 100% rename from recipes/wip/netop/recipe.toml rename to recipes/wip/net/netop/recipe.toml diff --git a/recipes/wip/mrbayes/recipe.toml b/recipes/wip/science/mrbayes/recipe.toml similarity index 100% rename from recipes/wip/mrbayes/recipe.toml rename to recipes/wip/science/mrbayes/recipe.toml diff --git a/recipes/wip/motus/recipe.toml b/recipes/wip/security/motus/recipe.toml similarity index 100% rename from recipes/wip/motus/recipe.toml rename to recipes/wip/security/motus/recipe.toml diff --git a/recipes/wip/mask/recipe.toml b/recipes/wip/tools/mask/recipe.toml similarity index 100% rename from recipes/wip/mask/recipe.toml rename to recipes/wip/tools/mask/recipe.toml diff --git a/recipes/wip/mcfly/recipe.toml b/recipes/wip/tools/mcfly/recipe.toml similarity index 100% rename from recipes/wip/mcfly/recipe.toml rename to recipes/wip/tools/mcfly/recipe.toml diff --git a/recipes/wip/mhv/recipe.toml b/recipes/wip/tools/mhv/recipe.toml similarity index 100% rename from recipes/wip/mhv/recipe.toml rename to recipes/wip/tools/mhv/recipe.toml diff --git a/recipes/wip/lobster/recipe.toml b/recipes/wip/video/lobster/recipe.toml similarity index 100% rename from recipes/wip/lobster/recipe.toml rename to recipes/wip/video/lobster/recipe.toml diff --git a/recipes/wip/monolith/recipe.toml b/recipes/wip/web/monolith/recipe.toml similarity index 100% rename from recipes/wip/monolith/recipe.toml rename to recipes/wip/web/monolith/recipe.toml From c1343fab614660f47566f130020c9c004cc33a2e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 17 Feb 2024 23:36:16 +0000 Subject: [PATCH 1586/3180] move recipes --- recipes/wip/{ => dev}/novops/recipe.toml | 0 recipes/wip/{ => dev}/opam/recipe.toml | 0 recipes/wip/{ => dev}/openradioss/recipe.toml | 0 recipes/wip/{ => doc}/po4a/recipe.toml | 0 recipes/wip/{ => emulators}/opengmk/recipe.toml | 0 recipes/wip/{ => emulators}/picodrive/recipe.toml | 0 recipes/wip/{ => emulators}/pinky/recipe.toml | 0 recipes/wip/{ => games}/oxycards/recipe.toml | 0 recipes/wip/{ => graphics}/oculante/recipe.toml | 0 recipes/wip/{ => graphics}/opentoonz/recipe.toml | 0 recipes/wip/{ => libs}/oidn/recipe.toml | 0 recipes/wip/{ => libs}/onednn/recipe.toml | 0 recipes/wip/{ => libs}/onetbb/recipe.toml | 0 recipes/wip/{ => libs}/openvkl/recipe.toml | 0 recipes/wip/{ => libs}/pjsip/recipe.toml | 0 recipes/wip/{ => libs}/popt/recipe.toml | 0 recipes/wip/{ => net}/oha/recipe.toml | 0 recipes/wip/{ => science}/openfoam/recipe.toml | 0 recipes/wip/{ => sound}/pcmg/recipe.toml | 0 recipes/wip/{ => tools}/nomad/recipe.toml | 0 recipes/wip/{ => tools}/odilia/recipe.toml | 0 recipes/wip/{ => tools}/okteta/recipe.toml | 0 recipes/wip/{ => tools}/pomky/recipe.toml | 0 recipes/wip/{ => tools}/porsmo/recipe.toml | 0 recipes/wip/{ => tui}/oatmeal/recipe.toml | 0 recipes/wip/{ => wayland}/pinnacle/recipe.toml | 0 26 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => dev}/novops/recipe.toml (100%) rename recipes/wip/{ => dev}/opam/recipe.toml (100%) rename recipes/wip/{ => dev}/openradioss/recipe.toml (100%) rename recipes/wip/{ => doc}/po4a/recipe.toml (100%) rename recipes/wip/{ => emulators}/opengmk/recipe.toml (100%) rename recipes/wip/{ => emulators}/picodrive/recipe.toml (100%) rename recipes/wip/{ => emulators}/pinky/recipe.toml (100%) rename recipes/wip/{ => games}/oxycards/recipe.toml (100%) rename recipes/wip/{ => graphics}/oculante/recipe.toml (100%) rename recipes/wip/{ => graphics}/opentoonz/recipe.toml (100%) rename recipes/wip/{ => libs}/oidn/recipe.toml (100%) rename recipes/wip/{ => libs}/onednn/recipe.toml (100%) rename recipes/wip/{ => libs}/onetbb/recipe.toml (100%) rename recipes/wip/{ => libs}/openvkl/recipe.toml (100%) rename recipes/wip/{ => libs}/pjsip/recipe.toml (100%) rename recipes/wip/{ => libs}/popt/recipe.toml (100%) rename recipes/wip/{ => net}/oha/recipe.toml (100%) rename recipes/wip/{ => science}/openfoam/recipe.toml (100%) rename recipes/wip/{ => sound}/pcmg/recipe.toml (100%) rename recipes/wip/{ => tools}/nomad/recipe.toml (100%) rename recipes/wip/{ => tools}/odilia/recipe.toml (100%) rename recipes/wip/{ => tools}/okteta/recipe.toml (100%) rename recipes/wip/{ => tools}/pomky/recipe.toml (100%) rename recipes/wip/{ => tools}/porsmo/recipe.toml (100%) rename recipes/wip/{ => tui}/oatmeal/recipe.toml (100%) rename recipes/wip/{ => wayland}/pinnacle/recipe.toml (100%) diff --git a/recipes/wip/novops/recipe.toml b/recipes/wip/dev/novops/recipe.toml similarity index 100% rename from recipes/wip/novops/recipe.toml rename to recipes/wip/dev/novops/recipe.toml diff --git a/recipes/wip/opam/recipe.toml b/recipes/wip/dev/opam/recipe.toml similarity index 100% rename from recipes/wip/opam/recipe.toml rename to recipes/wip/dev/opam/recipe.toml diff --git a/recipes/wip/openradioss/recipe.toml b/recipes/wip/dev/openradioss/recipe.toml similarity index 100% rename from recipes/wip/openradioss/recipe.toml rename to recipes/wip/dev/openradioss/recipe.toml diff --git a/recipes/wip/po4a/recipe.toml b/recipes/wip/doc/po4a/recipe.toml similarity index 100% rename from recipes/wip/po4a/recipe.toml rename to recipes/wip/doc/po4a/recipe.toml diff --git a/recipes/wip/opengmk/recipe.toml b/recipes/wip/emulators/opengmk/recipe.toml similarity index 100% rename from recipes/wip/opengmk/recipe.toml rename to recipes/wip/emulators/opengmk/recipe.toml diff --git a/recipes/wip/picodrive/recipe.toml b/recipes/wip/emulators/picodrive/recipe.toml similarity index 100% rename from recipes/wip/picodrive/recipe.toml rename to recipes/wip/emulators/picodrive/recipe.toml diff --git a/recipes/wip/pinky/recipe.toml b/recipes/wip/emulators/pinky/recipe.toml similarity index 100% rename from recipes/wip/pinky/recipe.toml rename to recipes/wip/emulators/pinky/recipe.toml diff --git a/recipes/wip/oxycards/recipe.toml b/recipes/wip/games/oxycards/recipe.toml similarity index 100% rename from recipes/wip/oxycards/recipe.toml rename to recipes/wip/games/oxycards/recipe.toml diff --git a/recipes/wip/oculante/recipe.toml b/recipes/wip/graphics/oculante/recipe.toml similarity index 100% rename from recipes/wip/oculante/recipe.toml rename to recipes/wip/graphics/oculante/recipe.toml diff --git a/recipes/wip/opentoonz/recipe.toml b/recipes/wip/graphics/opentoonz/recipe.toml similarity index 100% rename from recipes/wip/opentoonz/recipe.toml rename to recipes/wip/graphics/opentoonz/recipe.toml diff --git a/recipes/wip/oidn/recipe.toml b/recipes/wip/libs/oidn/recipe.toml similarity index 100% rename from recipes/wip/oidn/recipe.toml rename to recipes/wip/libs/oidn/recipe.toml diff --git a/recipes/wip/onednn/recipe.toml b/recipes/wip/libs/onednn/recipe.toml similarity index 100% rename from recipes/wip/onednn/recipe.toml rename to recipes/wip/libs/onednn/recipe.toml diff --git a/recipes/wip/onetbb/recipe.toml b/recipes/wip/libs/onetbb/recipe.toml similarity index 100% rename from recipes/wip/onetbb/recipe.toml rename to recipes/wip/libs/onetbb/recipe.toml diff --git a/recipes/wip/openvkl/recipe.toml b/recipes/wip/libs/openvkl/recipe.toml similarity index 100% rename from recipes/wip/openvkl/recipe.toml rename to recipes/wip/libs/openvkl/recipe.toml diff --git a/recipes/wip/pjsip/recipe.toml b/recipes/wip/libs/pjsip/recipe.toml similarity index 100% rename from recipes/wip/pjsip/recipe.toml rename to recipes/wip/libs/pjsip/recipe.toml diff --git a/recipes/wip/popt/recipe.toml b/recipes/wip/libs/popt/recipe.toml similarity index 100% rename from recipes/wip/popt/recipe.toml rename to recipes/wip/libs/popt/recipe.toml diff --git a/recipes/wip/oha/recipe.toml b/recipes/wip/net/oha/recipe.toml similarity index 100% rename from recipes/wip/oha/recipe.toml rename to recipes/wip/net/oha/recipe.toml diff --git a/recipes/wip/openfoam/recipe.toml b/recipes/wip/science/openfoam/recipe.toml similarity index 100% rename from recipes/wip/openfoam/recipe.toml rename to recipes/wip/science/openfoam/recipe.toml diff --git a/recipes/wip/pcmg/recipe.toml b/recipes/wip/sound/pcmg/recipe.toml similarity index 100% rename from recipes/wip/pcmg/recipe.toml rename to recipes/wip/sound/pcmg/recipe.toml diff --git a/recipes/wip/nomad/recipe.toml b/recipes/wip/tools/nomad/recipe.toml similarity index 100% rename from recipes/wip/nomad/recipe.toml rename to recipes/wip/tools/nomad/recipe.toml diff --git a/recipes/wip/odilia/recipe.toml b/recipes/wip/tools/odilia/recipe.toml similarity index 100% rename from recipes/wip/odilia/recipe.toml rename to recipes/wip/tools/odilia/recipe.toml diff --git a/recipes/wip/okteta/recipe.toml b/recipes/wip/tools/okteta/recipe.toml similarity index 100% rename from recipes/wip/okteta/recipe.toml rename to recipes/wip/tools/okteta/recipe.toml diff --git a/recipes/wip/pomky/recipe.toml b/recipes/wip/tools/pomky/recipe.toml similarity index 100% rename from recipes/wip/pomky/recipe.toml rename to recipes/wip/tools/pomky/recipe.toml diff --git a/recipes/wip/porsmo/recipe.toml b/recipes/wip/tools/porsmo/recipe.toml similarity index 100% rename from recipes/wip/porsmo/recipe.toml rename to recipes/wip/tools/porsmo/recipe.toml diff --git a/recipes/wip/oatmeal/recipe.toml b/recipes/wip/tui/oatmeal/recipe.toml similarity index 100% rename from recipes/wip/oatmeal/recipe.toml rename to recipes/wip/tui/oatmeal/recipe.toml diff --git a/recipes/wip/pinnacle/recipe.toml b/recipes/wip/wayland/pinnacle/recipe.toml similarity index 100% rename from recipes/wip/pinnacle/recipe.toml rename to recipes/wip/wayland/pinnacle/recipe.toml From 77cb6456f70dc09feb6921de163527906dfaa9e7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 18 Feb 2024 00:04:49 +0000 Subject: [PATCH 1587/3180] move recipes --- recipes/wip/{ => benchmarks}/rodinia/recipe.toml | 0 recipes/wip/{ => dev}/projections/recipe.toml | 0 recipes/wip/{ => dev}/ragel/recipe.toml | 0 recipes/wip/{ => dev}/release-plz/recipe.toml | 0 recipes/wip/{ => dev}/rusty-radamsa/recipe.toml | 0 recipes/wip/{ => emulators}/potatis/recipe.toml | 0 recipes/wip/{ => finance}/rex/recipe.toml | 0 recipes/wip/{ => games}/q3rally/recipe.toml | 0 recipes/wip/{ => games}/rust-sadari-cli/recipe.toml | 0 recipes/wip/{ => games}/sandbox/recipe.toml | 0 recipes/wip/{ => graphics}/rawtherapee/recipe.toml | 0 recipes/wip/{ => graphics}/satty/recipe.toml | 0 recipes/wip/{ => libs}/quantlib/recipe.toml | 0 recipes/wip/{ => libs}/rnnoise/recipe.toml | 0 recipes/wip/{ => libs}/rubberband/recipe.toml | 0 recipes/wip/{ => libs}/scotch/recipe.toml | 0 recipes/wip/{ => math}/primesieve/recipe.toml | 0 recipes/wip/{ => net}/rqbit/recipe.toml | 0 recipes/wip/{ => net}/rustscan/recipe.toml | 0 recipes/wip/{ => net}/samba/answers.txt | 0 recipes/wip/{ => net}/samba/recipe.toml | 0 recipes/wip/{ => science}/qmcpack/recipe.toml | 0 recipes/wip/{ => security}/recdec/recipe.toml | 0 recipes/wip/{ => security}/rustyvault/recipe.toml | 0 recipes/wip/{ => shells}/pure/recipe.toml | 0 recipes/wip/{ => shells}/relish/recipe.toml | 0 recipes/wip/{ => sound}/rustic/recipe.toml | 0 recipes/wip/{ => sound}/rustyvibes/recipe.toml | 0 recipes/wip/{ => tools}/qv/recipe.toml | 0 recipes/wip/{ => tools}/restic/recipe.toml | 0 recipes/wip/{ => tui}/russ/recipe.toml | 0 recipes/wip/{ => tui}/rust-traverse/recipe.toml | 0 recipes/wip/{ => web}/rustyink/recipe.toml | 0 33 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => benchmarks}/rodinia/recipe.toml (100%) rename recipes/wip/{ => dev}/projections/recipe.toml (100%) rename recipes/wip/{ => dev}/ragel/recipe.toml (100%) rename recipes/wip/{ => dev}/release-plz/recipe.toml (100%) rename recipes/wip/{ => dev}/rusty-radamsa/recipe.toml (100%) rename recipes/wip/{ => emulators}/potatis/recipe.toml (100%) rename recipes/wip/{ => finance}/rex/recipe.toml (100%) rename recipes/wip/{ => games}/q3rally/recipe.toml (100%) rename recipes/wip/{ => games}/rust-sadari-cli/recipe.toml (100%) rename recipes/wip/{ => games}/sandbox/recipe.toml (100%) rename recipes/wip/{ => graphics}/rawtherapee/recipe.toml (100%) rename recipes/wip/{ => graphics}/satty/recipe.toml (100%) rename recipes/wip/{ => libs}/quantlib/recipe.toml (100%) rename recipes/wip/{ => libs}/rnnoise/recipe.toml (100%) rename recipes/wip/{ => libs}/rubberband/recipe.toml (100%) rename recipes/wip/{ => libs}/scotch/recipe.toml (100%) rename recipes/wip/{ => math}/primesieve/recipe.toml (100%) rename recipes/wip/{ => net}/rqbit/recipe.toml (100%) rename recipes/wip/{ => net}/rustscan/recipe.toml (100%) rename recipes/wip/{ => net}/samba/answers.txt (100%) rename recipes/wip/{ => net}/samba/recipe.toml (100%) rename recipes/wip/{ => science}/qmcpack/recipe.toml (100%) rename recipes/wip/{ => security}/recdec/recipe.toml (100%) rename recipes/wip/{ => security}/rustyvault/recipe.toml (100%) rename recipes/wip/{ => shells}/pure/recipe.toml (100%) rename recipes/wip/{ => shells}/relish/recipe.toml (100%) rename recipes/wip/{ => sound}/rustic/recipe.toml (100%) rename recipes/wip/{ => sound}/rustyvibes/recipe.toml (100%) rename recipes/wip/{ => tools}/qv/recipe.toml (100%) rename recipes/wip/{ => tools}/restic/recipe.toml (100%) rename recipes/wip/{ => tui}/russ/recipe.toml (100%) rename recipes/wip/{ => tui}/rust-traverse/recipe.toml (100%) rename recipes/wip/{ => web}/rustyink/recipe.toml (100%) diff --git a/recipes/wip/rodinia/recipe.toml b/recipes/wip/benchmarks/rodinia/recipe.toml similarity index 100% rename from recipes/wip/rodinia/recipe.toml rename to recipes/wip/benchmarks/rodinia/recipe.toml diff --git a/recipes/wip/projections/recipe.toml b/recipes/wip/dev/projections/recipe.toml similarity index 100% rename from recipes/wip/projections/recipe.toml rename to recipes/wip/dev/projections/recipe.toml diff --git a/recipes/wip/ragel/recipe.toml b/recipes/wip/dev/ragel/recipe.toml similarity index 100% rename from recipes/wip/ragel/recipe.toml rename to recipes/wip/dev/ragel/recipe.toml diff --git a/recipes/wip/release-plz/recipe.toml b/recipes/wip/dev/release-plz/recipe.toml similarity index 100% rename from recipes/wip/release-plz/recipe.toml rename to recipes/wip/dev/release-plz/recipe.toml diff --git a/recipes/wip/rusty-radamsa/recipe.toml b/recipes/wip/dev/rusty-radamsa/recipe.toml similarity index 100% rename from recipes/wip/rusty-radamsa/recipe.toml rename to recipes/wip/dev/rusty-radamsa/recipe.toml diff --git a/recipes/wip/potatis/recipe.toml b/recipes/wip/emulators/potatis/recipe.toml similarity index 100% rename from recipes/wip/potatis/recipe.toml rename to recipes/wip/emulators/potatis/recipe.toml diff --git a/recipes/wip/rex/recipe.toml b/recipes/wip/finance/rex/recipe.toml similarity index 100% rename from recipes/wip/rex/recipe.toml rename to recipes/wip/finance/rex/recipe.toml diff --git a/recipes/wip/q3rally/recipe.toml b/recipes/wip/games/q3rally/recipe.toml similarity index 100% rename from recipes/wip/q3rally/recipe.toml rename to recipes/wip/games/q3rally/recipe.toml diff --git a/recipes/wip/rust-sadari-cli/recipe.toml b/recipes/wip/games/rust-sadari-cli/recipe.toml similarity index 100% rename from recipes/wip/rust-sadari-cli/recipe.toml rename to recipes/wip/games/rust-sadari-cli/recipe.toml diff --git a/recipes/wip/sandbox/recipe.toml b/recipes/wip/games/sandbox/recipe.toml similarity index 100% rename from recipes/wip/sandbox/recipe.toml rename to recipes/wip/games/sandbox/recipe.toml diff --git a/recipes/wip/rawtherapee/recipe.toml b/recipes/wip/graphics/rawtherapee/recipe.toml similarity index 100% rename from recipes/wip/rawtherapee/recipe.toml rename to recipes/wip/graphics/rawtherapee/recipe.toml diff --git a/recipes/wip/satty/recipe.toml b/recipes/wip/graphics/satty/recipe.toml similarity index 100% rename from recipes/wip/satty/recipe.toml rename to recipes/wip/graphics/satty/recipe.toml diff --git a/recipes/wip/quantlib/recipe.toml b/recipes/wip/libs/quantlib/recipe.toml similarity index 100% rename from recipes/wip/quantlib/recipe.toml rename to recipes/wip/libs/quantlib/recipe.toml diff --git a/recipes/wip/rnnoise/recipe.toml b/recipes/wip/libs/rnnoise/recipe.toml similarity index 100% rename from recipes/wip/rnnoise/recipe.toml rename to recipes/wip/libs/rnnoise/recipe.toml diff --git a/recipes/wip/rubberband/recipe.toml b/recipes/wip/libs/rubberband/recipe.toml similarity index 100% rename from recipes/wip/rubberband/recipe.toml rename to recipes/wip/libs/rubberband/recipe.toml diff --git a/recipes/wip/scotch/recipe.toml b/recipes/wip/libs/scotch/recipe.toml similarity index 100% rename from recipes/wip/scotch/recipe.toml rename to recipes/wip/libs/scotch/recipe.toml diff --git a/recipes/wip/primesieve/recipe.toml b/recipes/wip/math/primesieve/recipe.toml similarity index 100% rename from recipes/wip/primesieve/recipe.toml rename to recipes/wip/math/primesieve/recipe.toml diff --git a/recipes/wip/rqbit/recipe.toml b/recipes/wip/net/rqbit/recipe.toml similarity index 100% rename from recipes/wip/rqbit/recipe.toml rename to recipes/wip/net/rqbit/recipe.toml diff --git a/recipes/wip/rustscan/recipe.toml b/recipes/wip/net/rustscan/recipe.toml similarity index 100% rename from recipes/wip/rustscan/recipe.toml rename to recipes/wip/net/rustscan/recipe.toml diff --git a/recipes/wip/samba/answers.txt b/recipes/wip/net/samba/answers.txt similarity index 100% rename from recipes/wip/samba/answers.txt rename to recipes/wip/net/samba/answers.txt diff --git a/recipes/wip/samba/recipe.toml b/recipes/wip/net/samba/recipe.toml similarity index 100% rename from recipes/wip/samba/recipe.toml rename to recipes/wip/net/samba/recipe.toml diff --git a/recipes/wip/qmcpack/recipe.toml b/recipes/wip/science/qmcpack/recipe.toml similarity index 100% rename from recipes/wip/qmcpack/recipe.toml rename to recipes/wip/science/qmcpack/recipe.toml diff --git a/recipes/wip/recdec/recipe.toml b/recipes/wip/security/recdec/recipe.toml similarity index 100% rename from recipes/wip/recdec/recipe.toml rename to recipes/wip/security/recdec/recipe.toml diff --git a/recipes/wip/rustyvault/recipe.toml b/recipes/wip/security/rustyvault/recipe.toml similarity index 100% rename from recipes/wip/rustyvault/recipe.toml rename to recipes/wip/security/rustyvault/recipe.toml diff --git a/recipes/wip/pure/recipe.toml b/recipes/wip/shells/pure/recipe.toml similarity index 100% rename from recipes/wip/pure/recipe.toml rename to recipes/wip/shells/pure/recipe.toml diff --git a/recipes/wip/relish/recipe.toml b/recipes/wip/shells/relish/recipe.toml similarity index 100% rename from recipes/wip/relish/recipe.toml rename to recipes/wip/shells/relish/recipe.toml diff --git a/recipes/wip/rustic/recipe.toml b/recipes/wip/sound/rustic/recipe.toml similarity index 100% rename from recipes/wip/rustic/recipe.toml rename to recipes/wip/sound/rustic/recipe.toml diff --git a/recipes/wip/rustyvibes/recipe.toml b/recipes/wip/sound/rustyvibes/recipe.toml similarity index 100% rename from recipes/wip/rustyvibes/recipe.toml rename to recipes/wip/sound/rustyvibes/recipe.toml diff --git a/recipes/wip/qv/recipe.toml b/recipes/wip/tools/qv/recipe.toml similarity index 100% rename from recipes/wip/qv/recipe.toml rename to recipes/wip/tools/qv/recipe.toml diff --git a/recipes/wip/restic/recipe.toml b/recipes/wip/tools/restic/recipe.toml similarity index 100% rename from recipes/wip/restic/recipe.toml rename to recipes/wip/tools/restic/recipe.toml diff --git a/recipes/wip/russ/recipe.toml b/recipes/wip/tui/russ/recipe.toml similarity index 100% rename from recipes/wip/russ/recipe.toml rename to recipes/wip/tui/russ/recipe.toml diff --git a/recipes/wip/rust-traverse/recipe.toml b/recipes/wip/tui/rust-traverse/recipe.toml similarity index 100% rename from recipes/wip/rust-traverse/recipe.toml rename to recipes/wip/tui/rust-traverse/recipe.toml diff --git a/recipes/wip/rustyink/recipe.toml b/recipes/wip/web/rustyink/recipe.toml similarity index 100% rename from recipes/wip/rustyink/recipe.toml rename to recipes/wip/web/rustyink/recipe.toml From 26aea3409a1b757b9c60b08e63632c85041d1c8e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 18 Feb 2024 01:07:00 +0000 Subject: [PATCH 1588/3180] move recipes --- recipes/wip/{ => dev}/souper/recipe.toml | 0 recipes/wip/{ => dev}/steel/recipe.toml | 0 recipes/wip/{ => dev}/swig/recipe.toml | 0 recipes/wip/{ => dev}/tnn/recipe.toml | 0 recipes/wip/{ => doc}/texinfo/recipe.toml | 0 recipes/wip/{ => finance}/tick-rs/recipe.toml | 0 recipes/wip/{ => games}/symbiants/recipe.toml | 0 recipes/wip/{ => graphics}/shadergarden/recipe.toml | 0 recipes/wip/{ => graphics}/smag/recipe.toml | 0 recipes/wip/{ => graphics}/texel/recipe.toml | 0 recipes/wip/{ => libs}/snappy/recipe.toml | 0 recipes/wip/{ => libs}/sord/recipe.toml | 0 recipes/wip/{ => libs}/soundtouch/recipe.toml | 0 recipes/wip/{ => libs}/sratom/recipe.toml | 0 recipes/wip/{ => libs}/suil/recipe.toml | 0 recipes/wip/{ => net}/srsran-4g/recipe.toml | 0 recipes/wip/{ => net}/srsran-project/recipe.toml | 0 recipes/wip/{ => net}/termchat/recipe.toml | 0 recipes/wip/{ => net}/tobaru/recipe.toml | 0 recipes/wip/{ => shells}/sheldon/recipe.toml | 0 recipes/wip/{ => sound}/speech-dispatcher/recipe.toml | 0 recipes/wip/syslinux/recipe.toml | 5 ----- recipes/wip/{ => tools}/skim/recipe.toml | 0 recipes/wip/{ => tools}/smartmontools/recipe.toml | 0 recipes/wip/{ => tools}/sprinkles/recipe.toml | 0 recipes/wip/{ => tools}/sued/recipe.toml | 0 recipes/wip/{ => tools}/tealdeer/recipe.toml | 0 recipes/wip/{ => tools}/thwack/recipe.toml | 0 recipes/wip/{ => tui}/tenere/recipe.toml | 0 recipes/wip/{ => tui}/termscp/recipe.toml | 0 recipes/wip/{ => tui}/thesaurust/recipe.toml | 0 31 files changed, 5 deletions(-) rename recipes/wip/{ => dev}/souper/recipe.toml (100%) rename recipes/wip/{ => dev}/steel/recipe.toml (100%) rename recipes/wip/{ => dev}/swig/recipe.toml (100%) rename recipes/wip/{ => dev}/tnn/recipe.toml (100%) rename recipes/wip/{ => doc}/texinfo/recipe.toml (100%) rename recipes/wip/{ => finance}/tick-rs/recipe.toml (100%) rename recipes/wip/{ => games}/symbiants/recipe.toml (100%) rename recipes/wip/{ => graphics}/shadergarden/recipe.toml (100%) rename recipes/wip/{ => graphics}/smag/recipe.toml (100%) rename recipes/wip/{ => graphics}/texel/recipe.toml (100%) rename recipes/wip/{ => libs}/snappy/recipe.toml (100%) rename recipes/wip/{ => libs}/sord/recipe.toml (100%) rename recipes/wip/{ => libs}/soundtouch/recipe.toml (100%) rename recipes/wip/{ => libs}/sratom/recipe.toml (100%) rename recipes/wip/{ => libs}/suil/recipe.toml (100%) rename recipes/wip/{ => net}/srsran-4g/recipe.toml (100%) rename recipes/wip/{ => net}/srsran-project/recipe.toml (100%) rename recipes/wip/{ => net}/termchat/recipe.toml (100%) rename recipes/wip/{ => net}/tobaru/recipe.toml (100%) rename recipes/wip/{ => shells}/sheldon/recipe.toml (100%) rename recipes/wip/{ => sound}/speech-dispatcher/recipe.toml (100%) delete mode 100644 recipes/wip/syslinux/recipe.toml rename recipes/wip/{ => tools}/skim/recipe.toml (100%) rename recipes/wip/{ => tools}/smartmontools/recipe.toml (100%) rename recipes/wip/{ => tools}/sprinkles/recipe.toml (100%) rename recipes/wip/{ => tools}/sued/recipe.toml (100%) rename recipes/wip/{ => tools}/tealdeer/recipe.toml (100%) rename recipes/wip/{ => tools}/thwack/recipe.toml (100%) rename recipes/wip/{ => tui}/tenere/recipe.toml (100%) rename recipes/wip/{ => tui}/termscp/recipe.toml (100%) rename recipes/wip/{ => tui}/thesaurust/recipe.toml (100%) diff --git a/recipes/wip/souper/recipe.toml b/recipes/wip/dev/souper/recipe.toml similarity index 100% rename from recipes/wip/souper/recipe.toml rename to recipes/wip/dev/souper/recipe.toml diff --git a/recipes/wip/steel/recipe.toml b/recipes/wip/dev/steel/recipe.toml similarity index 100% rename from recipes/wip/steel/recipe.toml rename to recipes/wip/dev/steel/recipe.toml diff --git a/recipes/wip/swig/recipe.toml b/recipes/wip/dev/swig/recipe.toml similarity index 100% rename from recipes/wip/swig/recipe.toml rename to recipes/wip/dev/swig/recipe.toml diff --git a/recipes/wip/tnn/recipe.toml b/recipes/wip/dev/tnn/recipe.toml similarity index 100% rename from recipes/wip/tnn/recipe.toml rename to recipes/wip/dev/tnn/recipe.toml diff --git a/recipes/wip/texinfo/recipe.toml b/recipes/wip/doc/texinfo/recipe.toml similarity index 100% rename from recipes/wip/texinfo/recipe.toml rename to recipes/wip/doc/texinfo/recipe.toml diff --git a/recipes/wip/tick-rs/recipe.toml b/recipes/wip/finance/tick-rs/recipe.toml similarity index 100% rename from recipes/wip/tick-rs/recipe.toml rename to recipes/wip/finance/tick-rs/recipe.toml diff --git a/recipes/wip/symbiants/recipe.toml b/recipes/wip/games/symbiants/recipe.toml similarity index 100% rename from recipes/wip/symbiants/recipe.toml rename to recipes/wip/games/symbiants/recipe.toml diff --git a/recipes/wip/shadergarden/recipe.toml b/recipes/wip/graphics/shadergarden/recipe.toml similarity index 100% rename from recipes/wip/shadergarden/recipe.toml rename to recipes/wip/graphics/shadergarden/recipe.toml diff --git a/recipes/wip/smag/recipe.toml b/recipes/wip/graphics/smag/recipe.toml similarity index 100% rename from recipes/wip/smag/recipe.toml rename to recipes/wip/graphics/smag/recipe.toml diff --git a/recipes/wip/texel/recipe.toml b/recipes/wip/graphics/texel/recipe.toml similarity index 100% rename from recipes/wip/texel/recipe.toml rename to recipes/wip/graphics/texel/recipe.toml diff --git a/recipes/wip/snappy/recipe.toml b/recipes/wip/libs/snappy/recipe.toml similarity index 100% rename from recipes/wip/snappy/recipe.toml rename to recipes/wip/libs/snappy/recipe.toml diff --git a/recipes/wip/sord/recipe.toml b/recipes/wip/libs/sord/recipe.toml similarity index 100% rename from recipes/wip/sord/recipe.toml rename to recipes/wip/libs/sord/recipe.toml diff --git a/recipes/wip/soundtouch/recipe.toml b/recipes/wip/libs/soundtouch/recipe.toml similarity index 100% rename from recipes/wip/soundtouch/recipe.toml rename to recipes/wip/libs/soundtouch/recipe.toml diff --git a/recipes/wip/sratom/recipe.toml b/recipes/wip/libs/sratom/recipe.toml similarity index 100% rename from recipes/wip/sratom/recipe.toml rename to recipes/wip/libs/sratom/recipe.toml diff --git a/recipes/wip/suil/recipe.toml b/recipes/wip/libs/suil/recipe.toml similarity index 100% rename from recipes/wip/suil/recipe.toml rename to recipes/wip/libs/suil/recipe.toml diff --git a/recipes/wip/srsran-4g/recipe.toml b/recipes/wip/net/srsran-4g/recipe.toml similarity index 100% rename from recipes/wip/srsran-4g/recipe.toml rename to recipes/wip/net/srsran-4g/recipe.toml diff --git a/recipes/wip/srsran-project/recipe.toml b/recipes/wip/net/srsran-project/recipe.toml similarity index 100% rename from recipes/wip/srsran-project/recipe.toml rename to recipes/wip/net/srsran-project/recipe.toml diff --git a/recipes/wip/termchat/recipe.toml b/recipes/wip/net/termchat/recipe.toml similarity index 100% rename from recipes/wip/termchat/recipe.toml rename to recipes/wip/net/termchat/recipe.toml diff --git a/recipes/wip/tobaru/recipe.toml b/recipes/wip/net/tobaru/recipe.toml similarity index 100% rename from recipes/wip/tobaru/recipe.toml rename to recipes/wip/net/tobaru/recipe.toml diff --git a/recipes/wip/sheldon/recipe.toml b/recipes/wip/shells/sheldon/recipe.toml similarity index 100% rename from recipes/wip/sheldon/recipe.toml rename to recipes/wip/shells/sheldon/recipe.toml diff --git a/recipes/wip/speech-dispatcher/recipe.toml b/recipes/wip/sound/speech-dispatcher/recipe.toml similarity index 100% rename from recipes/wip/speech-dispatcher/recipe.toml rename to recipes/wip/sound/speech-dispatcher/recipe.toml diff --git a/recipes/wip/syslinux/recipe.toml b/recipes/wip/syslinux/recipe.toml deleted file mode 100644 index 4cf27bda..00000000 --- a/recipes/wip/syslinux/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO Compilation error -[source] -tar = "https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz" -[build] -template = "configure" diff --git a/recipes/wip/skim/recipe.toml b/recipes/wip/tools/skim/recipe.toml similarity index 100% rename from recipes/wip/skim/recipe.toml rename to recipes/wip/tools/skim/recipe.toml diff --git a/recipes/wip/smartmontools/recipe.toml b/recipes/wip/tools/smartmontools/recipe.toml similarity index 100% rename from recipes/wip/smartmontools/recipe.toml rename to recipes/wip/tools/smartmontools/recipe.toml diff --git a/recipes/wip/sprinkles/recipe.toml b/recipes/wip/tools/sprinkles/recipe.toml similarity index 100% rename from recipes/wip/sprinkles/recipe.toml rename to recipes/wip/tools/sprinkles/recipe.toml diff --git a/recipes/wip/sued/recipe.toml b/recipes/wip/tools/sued/recipe.toml similarity index 100% rename from recipes/wip/sued/recipe.toml rename to recipes/wip/tools/sued/recipe.toml diff --git a/recipes/wip/tealdeer/recipe.toml b/recipes/wip/tools/tealdeer/recipe.toml similarity index 100% rename from recipes/wip/tealdeer/recipe.toml rename to recipes/wip/tools/tealdeer/recipe.toml diff --git a/recipes/wip/thwack/recipe.toml b/recipes/wip/tools/thwack/recipe.toml similarity index 100% rename from recipes/wip/thwack/recipe.toml rename to recipes/wip/tools/thwack/recipe.toml diff --git a/recipes/wip/tenere/recipe.toml b/recipes/wip/tui/tenere/recipe.toml similarity index 100% rename from recipes/wip/tenere/recipe.toml rename to recipes/wip/tui/tenere/recipe.toml diff --git a/recipes/wip/termscp/recipe.toml b/recipes/wip/tui/termscp/recipe.toml similarity index 100% rename from recipes/wip/termscp/recipe.toml rename to recipes/wip/tui/termscp/recipe.toml diff --git a/recipes/wip/thesaurust/recipe.toml b/recipes/wip/tui/thesaurust/recipe.toml similarity index 100% rename from recipes/wip/thesaurust/recipe.toml rename to recipes/wip/tui/thesaurust/recipe.toml From 300d83f9377b2cede31bbb30bda57d6399dffec6 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 18 Feb 2024 01:29:09 +0000 Subject: [PATCH 1589/3180] move recipes --- recipes/wip/{ => codecs}/vvenc/recipe.toml | 0 recipes/wip/{ => dev}/tv/recipe.toml | 0 recipes/wip/{ => dev}/verrou/recipe.toml | 0 recipes/wip/{ => dev}/wepl/recipe.toml | 0 recipes/wip/{ => dev}/zeal/recipe.toml | 0 recipes/wip/{ => graphics}/toybrot/recipe.toml | 0 recipes/wip/{ => graphics}/viu/recipe.toml | 0 recipes/wip/{ => libs}/volk/recipe.toml | 0 recipes/wip/{ => libs}/x11proto/recipe.toml | 0 recipes/wip/{ => libs}/xcb-util/recipe.toml | 0 recipes/wip/{ => libs}/xxhash/recipe.toml | 0 recipes/wip/{ => net}/unbound/recipe.toml | 0 recipes/wip/{ => net}/varia/recipe.toml | 0 recipes/wip/{ => net}/warp/recipe.toml | 0 recipes/wip/{ => shells}/zoxide/recipe.toml | 0 recipes/wip/{ => sound}/tori/recipe.toml | 0 recipes/wip/{ => tools}/tsuchita/recipe.toml | 0 recipes/wip/{ => tools}/vector/recipe.toml | 0 recipes/wip/{ => tools}/weylus/recipe.toml | 0 recipes/wip/{ => tools}/xdg-utils/recipe.toml | 0 recipes/wip/{ => tools}/xdotool/recipe.toml | 0 recipes/wip/{ => tools}/zet/recipe.toml | 0 recipes/wip/{ => tui}/xplr/recipe.toml | 0 recipes/wip/{ => tui}/zenith/recipe.toml | 0 24 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => codecs}/vvenc/recipe.toml (100%) rename recipes/wip/{ => dev}/tv/recipe.toml (100%) rename recipes/wip/{ => dev}/verrou/recipe.toml (100%) rename recipes/wip/{ => dev}/wepl/recipe.toml (100%) rename recipes/wip/{ => dev}/zeal/recipe.toml (100%) rename recipes/wip/{ => graphics}/toybrot/recipe.toml (100%) rename recipes/wip/{ => graphics}/viu/recipe.toml (100%) rename recipes/wip/{ => libs}/volk/recipe.toml (100%) rename recipes/wip/{ => libs}/x11proto/recipe.toml (100%) rename recipes/wip/{ => libs}/xcb-util/recipe.toml (100%) rename recipes/wip/{ => libs}/xxhash/recipe.toml (100%) rename recipes/wip/{ => net}/unbound/recipe.toml (100%) rename recipes/wip/{ => net}/varia/recipe.toml (100%) rename recipes/wip/{ => net}/warp/recipe.toml (100%) rename recipes/wip/{ => shells}/zoxide/recipe.toml (100%) rename recipes/wip/{ => sound}/tori/recipe.toml (100%) rename recipes/wip/{ => tools}/tsuchita/recipe.toml (100%) rename recipes/wip/{ => tools}/vector/recipe.toml (100%) rename recipes/wip/{ => tools}/weylus/recipe.toml (100%) rename recipes/wip/{ => tools}/xdg-utils/recipe.toml (100%) rename recipes/wip/{ => tools}/xdotool/recipe.toml (100%) rename recipes/wip/{ => tools}/zet/recipe.toml (100%) rename recipes/wip/{ => tui}/xplr/recipe.toml (100%) rename recipes/wip/{ => tui}/zenith/recipe.toml (100%) diff --git a/recipes/wip/vvenc/recipe.toml b/recipes/wip/codecs/vvenc/recipe.toml similarity index 100% rename from recipes/wip/vvenc/recipe.toml rename to recipes/wip/codecs/vvenc/recipe.toml diff --git a/recipes/wip/tv/recipe.toml b/recipes/wip/dev/tv/recipe.toml similarity index 100% rename from recipes/wip/tv/recipe.toml rename to recipes/wip/dev/tv/recipe.toml diff --git a/recipes/wip/verrou/recipe.toml b/recipes/wip/dev/verrou/recipe.toml similarity index 100% rename from recipes/wip/verrou/recipe.toml rename to recipes/wip/dev/verrou/recipe.toml diff --git a/recipes/wip/wepl/recipe.toml b/recipes/wip/dev/wepl/recipe.toml similarity index 100% rename from recipes/wip/wepl/recipe.toml rename to recipes/wip/dev/wepl/recipe.toml diff --git a/recipes/wip/zeal/recipe.toml b/recipes/wip/dev/zeal/recipe.toml similarity index 100% rename from recipes/wip/zeal/recipe.toml rename to recipes/wip/dev/zeal/recipe.toml diff --git a/recipes/wip/toybrot/recipe.toml b/recipes/wip/graphics/toybrot/recipe.toml similarity index 100% rename from recipes/wip/toybrot/recipe.toml rename to recipes/wip/graphics/toybrot/recipe.toml diff --git a/recipes/wip/viu/recipe.toml b/recipes/wip/graphics/viu/recipe.toml similarity index 100% rename from recipes/wip/viu/recipe.toml rename to recipes/wip/graphics/viu/recipe.toml diff --git a/recipes/wip/volk/recipe.toml b/recipes/wip/libs/volk/recipe.toml similarity index 100% rename from recipes/wip/volk/recipe.toml rename to recipes/wip/libs/volk/recipe.toml diff --git a/recipes/wip/x11proto/recipe.toml b/recipes/wip/libs/x11proto/recipe.toml similarity index 100% rename from recipes/wip/x11proto/recipe.toml rename to recipes/wip/libs/x11proto/recipe.toml diff --git a/recipes/wip/xcb-util/recipe.toml b/recipes/wip/libs/xcb-util/recipe.toml similarity index 100% rename from recipes/wip/xcb-util/recipe.toml rename to recipes/wip/libs/xcb-util/recipe.toml diff --git a/recipes/wip/xxhash/recipe.toml b/recipes/wip/libs/xxhash/recipe.toml similarity index 100% rename from recipes/wip/xxhash/recipe.toml rename to recipes/wip/libs/xxhash/recipe.toml diff --git a/recipes/wip/unbound/recipe.toml b/recipes/wip/net/unbound/recipe.toml similarity index 100% rename from recipes/wip/unbound/recipe.toml rename to recipes/wip/net/unbound/recipe.toml diff --git a/recipes/wip/varia/recipe.toml b/recipes/wip/net/varia/recipe.toml similarity index 100% rename from recipes/wip/varia/recipe.toml rename to recipes/wip/net/varia/recipe.toml diff --git a/recipes/wip/warp/recipe.toml b/recipes/wip/net/warp/recipe.toml similarity index 100% rename from recipes/wip/warp/recipe.toml rename to recipes/wip/net/warp/recipe.toml diff --git a/recipes/wip/zoxide/recipe.toml b/recipes/wip/shells/zoxide/recipe.toml similarity index 100% rename from recipes/wip/zoxide/recipe.toml rename to recipes/wip/shells/zoxide/recipe.toml diff --git a/recipes/wip/tori/recipe.toml b/recipes/wip/sound/tori/recipe.toml similarity index 100% rename from recipes/wip/tori/recipe.toml rename to recipes/wip/sound/tori/recipe.toml diff --git a/recipes/wip/tsuchita/recipe.toml b/recipes/wip/tools/tsuchita/recipe.toml similarity index 100% rename from recipes/wip/tsuchita/recipe.toml rename to recipes/wip/tools/tsuchita/recipe.toml diff --git a/recipes/wip/vector/recipe.toml b/recipes/wip/tools/vector/recipe.toml similarity index 100% rename from recipes/wip/vector/recipe.toml rename to recipes/wip/tools/vector/recipe.toml diff --git a/recipes/wip/weylus/recipe.toml b/recipes/wip/tools/weylus/recipe.toml similarity index 100% rename from recipes/wip/weylus/recipe.toml rename to recipes/wip/tools/weylus/recipe.toml diff --git a/recipes/wip/xdg-utils/recipe.toml b/recipes/wip/tools/xdg-utils/recipe.toml similarity index 100% rename from recipes/wip/xdg-utils/recipe.toml rename to recipes/wip/tools/xdg-utils/recipe.toml diff --git a/recipes/wip/xdotool/recipe.toml b/recipes/wip/tools/xdotool/recipe.toml similarity index 100% rename from recipes/wip/xdotool/recipe.toml rename to recipes/wip/tools/xdotool/recipe.toml diff --git a/recipes/wip/zet/recipe.toml b/recipes/wip/tools/zet/recipe.toml similarity index 100% rename from recipes/wip/zet/recipe.toml rename to recipes/wip/tools/zet/recipe.toml diff --git a/recipes/wip/xplr/recipe.toml b/recipes/wip/tui/xplr/recipe.toml similarity index 100% rename from recipes/wip/xplr/recipe.toml rename to recipes/wip/tui/xplr/recipe.toml diff --git a/recipes/wip/zenith/recipe.toml b/recipes/wip/tui/zenith/recipe.toml similarity index 100% rename from recipes/wip/zenith/recipe.toml rename to recipes/wip/tui/zenith/recipe.toml From fa7698e2aafed629d1fa39f582c360ea960d164e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 19 Feb 2024 14:17:38 +0000 Subject: [PATCH 1590/3180] Add new categories, move recipes and update the README --- README.md | 28 +++++++++---------- recipes/{dev => core}/pkgar/recipe.toml | 0 recipes/{dev => core}/redoxerd/recipe.toml | 0 recipes/{dev => core}/strace/recipe.toml | 0 recipes/{tools => dev}/git/git.patch | 0 recipes/{tools => dev}/git/recipe.sh | 0 recipes/{tools => dev}/gitoxide/recipe.toml | 0 .../procedural-wallpapers-rs/recipe.toml | 0 recipes/{toolkits => libs}/atk/recipe.sh | 0 recipes/{toolkits => libs}/atk/redox.patch | 0 recipes/{backends => libs}/cairo/recipe.toml | 0 recipes/{backends => libs}/cairo/redox.patch | 0 recipes/{net => libs}/nghttp2/recipe.toml | 0 recipes/{backends => libs}/pango/recipe.sh | 0 recipes/{backends => libs}/pango/redox.patch | 0 .../{backends => libs}/sdl-gfx/01_redox.patch | 0 recipes/{backends => libs}/sdl-gfx/recipe.sh | 0 .../sdl1-image/01_redox.patch | 0 .../{backends => libs}/sdl1-image/recipe.sh | 0 .../{backends => libs}/sdl1-mixer/recipe.toml | 0 .../{backends => libs}/sdl1-mixer/redox.patch | 0 .../sdl1-ttf/01_redox.patch | 0 recipes/{backends => libs}/sdl1-ttf/recipe.sh | 0 recipes/{backends => libs}/sdl1/recipe.toml | 0 .../{backends => libs}/sdl2-image/recipe.toml | 0 .../{backends => libs}/sdl2-mixer/recipe.toml | 0 .../{backends => libs}/sdl2-mixer/redox.patch | 0 recipes/{backends => libs}/sdl2-ttf/recipe.sh | 0 recipes/{backends => libs}/sdl2/recipe.toml | 0 .../{backends => libs}/webrender/recipe.sh | 0 .../{tools => math}/calculator/recipe.toml | 0 recipes/{tools => net}/curl/recipe.toml | 0 recipes/{gui => tools}/cosmic-edit/manifest | 0 .../{gui => tools}/cosmic-edit/recipe.toml | 0 recipes/{gui => tools}/cosmic-files/manifest | 0 .../{gui => tools}/cosmic-files/recipe.toml | 0 recipes/{gui => tools}/cosmic-term/manifest | 0 .../{gui => tools}/cosmic-term/recipe.toml | 0 .../{gui => tools}/periodictable/recipe.sh | 0 recipes/tools/{ => ssh}/redox-ssh/recipe.toml | 0 recipes/{net => web}/netsurf/01_redox.patch | 0 recipes/{net => web}/netsurf/manifest | 0 recipes/{net => web}/netsurf/recipe.sh | 0 recipes/{toolkits => web}/servo/recipe.sh | 0 44 files changed, 14 insertions(+), 14 deletions(-) rename recipes/{dev => core}/pkgar/recipe.toml (100%) rename recipes/{dev => core}/redoxerd/recipe.toml (100%) rename recipes/{dev => core}/strace/recipe.toml (100%) rename recipes/{tools => dev}/git/git.patch (100%) rename recipes/{tools => dev}/git/recipe.sh (100%) rename recipes/{tools => dev}/gitoxide/recipe.toml (100%) rename recipes/{tools => graphics}/procedural-wallpapers-rs/recipe.toml (100%) rename recipes/{toolkits => libs}/atk/recipe.sh (100%) mode change 100755 => 100644 rename recipes/{toolkits => libs}/atk/redox.patch (100%) rename recipes/{backends => libs}/cairo/recipe.toml (100%) mode change 100755 => 100644 rename recipes/{backends => libs}/cairo/redox.patch (100%) rename recipes/{net => libs}/nghttp2/recipe.toml (100%) rename recipes/{backends => libs}/pango/recipe.sh (100%) mode change 100755 => 100644 rename recipes/{backends => libs}/pango/redox.patch (100%) rename recipes/{backends => libs}/sdl-gfx/01_redox.patch (100%) rename recipes/{backends => libs}/sdl-gfx/recipe.sh (100%) rename recipes/{backends => libs}/sdl1-image/01_redox.patch (100%) rename recipes/{backends => libs}/sdl1-image/recipe.sh (100%) rename recipes/{backends => libs}/sdl1-mixer/recipe.toml (100%) rename recipes/{backends => libs}/sdl1-mixer/redox.patch (100%) rename recipes/{backends => libs}/sdl1-ttf/01_redox.patch (100%) rename recipes/{backends => libs}/sdl1-ttf/recipe.sh (100%) rename recipes/{backends => libs}/sdl1/recipe.toml (100%) rename recipes/{backends => libs}/sdl2-image/recipe.toml (100%) rename recipes/{backends => libs}/sdl2-mixer/recipe.toml (100%) rename recipes/{backends => libs}/sdl2-mixer/redox.patch (100%) rename recipes/{backends => libs}/sdl2-ttf/recipe.sh (100%) rename recipes/{backends => libs}/sdl2/recipe.toml (100%) rename recipes/{backends => libs}/webrender/recipe.sh (100%) rename recipes/{tools => math}/calculator/recipe.toml (100%) rename recipes/{tools => net}/curl/recipe.toml (100%) rename recipes/{gui => tools}/cosmic-edit/manifest (100%) rename recipes/{gui => tools}/cosmic-edit/recipe.toml (100%) rename recipes/{gui => tools}/cosmic-files/manifest (100%) rename recipes/{gui => tools}/cosmic-files/recipe.toml (100%) rename recipes/{gui => tools}/cosmic-term/manifest (100%) rename recipes/{gui => tools}/cosmic-term/recipe.toml (100%) rename recipes/{gui => tools}/periodictable/recipe.sh (100%) rename recipes/tools/{ => ssh}/redox-ssh/recipe.toml (100%) rename recipes/{net => web}/netsurf/01_redox.patch (100%) rename recipes/{net => web}/netsurf/manifest (100%) rename recipes/{net => web}/netsurf/recipe.sh (100%) rename recipes/{toolkits => web}/servo/recipe.sh (100%) diff --git a/README.md b/README.md index c04defc0..68f6053b 100644 --- a/README.md +++ b/README.md @@ -29,26 +29,26 @@ from the [redox](https://gitlab.redox-os.org/redox-os/redox) repository. The categories inside the `recipes` folder. -- `backends` - Middlewares, like SDL2 -- `core` - System components (included on `server` build) -- `demos` - Software with demos -- `development` - Any software used for development, like compilers and dependency managers -- `documentation` - Software used for documentation -- `emulators` - Console emulators or compatibility/translation layers -- `examples` - Softwares with examples +- `core` - System components +- `demos` - Programs with demos and examples +- `dev` - Programs used for development and programming languages, like compilers and dependency managers +- `doc` - Programs used for documentation +- `emulators` - Console emulators or compatibility layers - `games` - Any kind of game +- `graphics` - Programs used for graphics processing or production - `gui` - Graphical interfaces - `icons` - Icon packs -- `libraries` - Software with functions for other softwares, like OpenSSL -- `network` - Networking tools +- `libs` - Software with functions for other softwares, like OpenSSL +- `math` - Programs used for calculations +- `net` - Networking tools - `other` - Software that can't fit on other categories -- `shells` - Terminal interpreters -- `sound` - Software used for sound processing/production +- `shells` - Terminal interpreters and extensions +- `sound` - Software used for sound processing or production - `tests` - Software used to test other softwares -- `toolkits` - Software used to create other softwares with a framework-like approach - `tools` - Text editors, terminal tools and any other kind of tools -- `tui` - Graphical terminal interfaces -- `video` - Video players and video processing/production tools +- `tui` - Programs with a [terminal user interface](https://en.wikipedia.org/wiki/Text-based_user_interface) +- `video` - Programs used for video playback, processing and production +- `web` - World Wide Web browsers and tools - `wip` - Software that needs porting or incomplete recipes ### Package Policy diff --git a/recipes/dev/pkgar/recipe.toml b/recipes/core/pkgar/recipe.toml similarity index 100% rename from recipes/dev/pkgar/recipe.toml rename to recipes/core/pkgar/recipe.toml diff --git a/recipes/dev/redoxerd/recipe.toml b/recipes/core/redoxerd/recipe.toml similarity index 100% rename from recipes/dev/redoxerd/recipe.toml rename to recipes/core/redoxerd/recipe.toml diff --git a/recipes/dev/strace/recipe.toml b/recipes/core/strace/recipe.toml similarity index 100% rename from recipes/dev/strace/recipe.toml rename to recipes/core/strace/recipe.toml diff --git a/recipes/tools/git/git.patch b/recipes/dev/git/git.patch similarity index 100% rename from recipes/tools/git/git.patch rename to recipes/dev/git/git.patch diff --git a/recipes/tools/git/recipe.sh b/recipes/dev/git/recipe.sh similarity index 100% rename from recipes/tools/git/recipe.sh rename to recipes/dev/git/recipe.sh diff --git a/recipes/tools/gitoxide/recipe.toml b/recipes/dev/gitoxide/recipe.toml similarity index 100% rename from recipes/tools/gitoxide/recipe.toml rename to recipes/dev/gitoxide/recipe.toml diff --git a/recipes/tools/procedural-wallpapers-rs/recipe.toml b/recipes/graphics/procedural-wallpapers-rs/recipe.toml similarity index 100% rename from recipes/tools/procedural-wallpapers-rs/recipe.toml rename to recipes/graphics/procedural-wallpapers-rs/recipe.toml diff --git a/recipes/toolkits/atk/recipe.sh b/recipes/libs/atk/recipe.sh old mode 100755 new mode 100644 similarity index 100% rename from recipes/toolkits/atk/recipe.sh rename to recipes/libs/atk/recipe.sh diff --git a/recipes/toolkits/atk/redox.patch b/recipes/libs/atk/redox.patch similarity index 100% rename from recipes/toolkits/atk/redox.patch rename to recipes/libs/atk/redox.patch diff --git a/recipes/backends/cairo/recipe.toml b/recipes/libs/cairo/recipe.toml old mode 100755 new mode 100644 similarity index 100% rename from recipes/backends/cairo/recipe.toml rename to recipes/libs/cairo/recipe.toml diff --git a/recipes/backends/cairo/redox.patch b/recipes/libs/cairo/redox.patch similarity index 100% rename from recipes/backends/cairo/redox.patch rename to recipes/libs/cairo/redox.patch diff --git a/recipes/net/nghttp2/recipe.toml b/recipes/libs/nghttp2/recipe.toml similarity index 100% rename from recipes/net/nghttp2/recipe.toml rename to recipes/libs/nghttp2/recipe.toml diff --git a/recipes/backends/pango/recipe.sh b/recipes/libs/pango/recipe.sh old mode 100755 new mode 100644 similarity index 100% rename from recipes/backends/pango/recipe.sh rename to recipes/libs/pango/recipe.sh diff --git a/recipes/backends/pango/redox.patch b/recipes/libs/pango/redox.patch similarity index 100% rename from recipes/backends/pango/redox.patch rename to recipes/libs/pango/redox.patch diff --git a/recipes/backends/sdl-gfx/01_redox.patch b/recipes/libs/sdl-gfx/01_redox.patch similarity index 100% rename from recipes/backends/sdl-gfx/01_redox.patch rename to recipes/libs/sdl-gfx/01_redox.patch diff --git a/recipes/backends/sdl-gfx/recipe.sh b/recipes/libs/sdl-gfx/recipe.sh similarity index 100% rename from recipes/backends/sdl-gfx/recipe.sh rename to recipes/libs/sdl-gfx/recipe.sh diff --git a/recipes/backends/sdl1-image/01_redox.patch b/recipes/libs/sdl1-image/01_redox.patch similarity index 100% rename from recipes/backends/sdl1-image/01_redox.patch rename to recipes/libs/sdl1-image/01_redox.patch diff --git a/recipes/backends/sdl1-image/recipe.sh b/recipes/libs/sdl1-image/recipe.sh similarity index 100% rename from recipes/backends/sdl1-image/recipe.sh rename to recipes/libs/sdl1-image/recipe.sh diff --git a/recipes/backends/sdl1-mixer/recipe.toml b/recipes/libs/sdl1-mixer/recipe.toml similarity index 100% rename from recipes/backends/sdl1-mixer/recipe.toml rename to recipes/libs/sdl1-mixer/recipe.toml diff --git a/recipes/backends/sdl1-mixer/redox.patch b/recipes/libs/sdl1-mixer/redox.patch similarity index 100% rename from recipes/backends/sdl1-mixer/redox.patch rename to recipes/libs/sdl1-mixer/redox.patch diff --git a/recipes/backends/sdl1-ttf/01_redox.patch b/recipes/libs/sdl1-ttf/01_redox.patch similarity index 100% rename from recipes/backends/sdl1-ttf/01_redox.patch rename to recipes/libs/sdl1-ttf/01_redox.patch diff --git a/recipes/backends/sdl1-ttf/recipe.sh b/recipes/libs/sdl1-ttf/recipe.sh similarity index 100% rename from recipes/backends/sdl1-ttf/recipe.sh rename to recipes/libs/sdl1-ttf/recipe.sh diff --git a/recipes/backends/sdl1/recipe.toml b/recipes/libs/sdl1/recipe.toml similarity index 100% rename from recipes/backends/sdl1/recipe.toml rename to recipes/libs/sdl1/recipe.toml diff --git a/recipes/backends/sdl2-image/recipe.toml b/recipes/libs/sdl2-image/recipe.toml similarity index 100% rename from recipes/backends/sdl2-image/recipe.toml rename to recipes/libs/sdl2-image/recipe.toml diff --git a/recipes/backends/sdl2-mixer/recipe.toml b/recipes/libs/sdl2-mixer/recipe.toml similarity index 100% rename from recipes/backends/sdl2-mixer/recipe.toml rename to recipes/libs/sdl2-mixer/recipe.toml diff --git a/recipes/backends/sdl2-mixer/redox.patch b/recipes/libs/sdl2-mixer/redox.patch similarity index 100% rename from recipes/backends/sdl2-mixer/redox.patch rename to recipes/libs/sdl2-mixer/redox.patch diff --git a/recipes/backends/sdl2-ttf/recipe.sh b/recipes/libs/sdl2-ttf/recipe.sh similarity index 100% rename from recipes/backends/sdl2-ttf/recipe.sh rename to recipes/libs/sdl2-ttf/recipe.sh diff --git a/recipes/backends/sdl2/recipe.toml b/recipes/libs/sdl2/recipe.toml similarity index 100% rename from recipes/backends/sdl2/recipe.toml rename to recipes/libs/sdl2/recipe.toml diff --git a/recipes/backends/webrender/recipe.sh b/recipes/libs/webrender/recipe.sh similarity index 100% rename from recipes/backends/webrender/recipe.sh rename to recipes/libs/webrender/recipe.sh diff --git a/recipes/tools/calculator/recipe.toml b/recipes/math/calculator/recipe.toml similarity index 100% rename from recipes/tools/calculator/recipe.toml rename to recipes/math/calculator/recipe.toml diff --git a/recipes/tools/curl/recipe.toml b/recipes/net/curl/recipe.toml similarity index 100% rename from recipes/tools/curl/recipe.toml rename to recipes/net/curl/recipe.toml diff --git a/recipes/gui/cosmic-edit/manifest b/recipes/tools/cosmic-edit/manifest similarity index 100% rename from recipes/gui/cosmic-edit/manifest rename to recipes/tools/cosmic-edit/manifest diff --git a/recipes/gui/cosmic-edit/recipe.toml b/recipes/tools/cosmic-edit/recipe.toml similarity index 100% rename from recipes/gui/cosmic-edit/recipe.toml rename to recipes/tools/cosmic-edit/recipe.toml diff --git a/recipes/gui/cosmic-files/manifest b/recipes/tools/cosmic-files/manifest similarity index 100% rename from recipes/gui/cosmic-files/manifest rename to recipes/tools/cosmic-files/manifest diff --git a/recipes/gui/cosmic-files/recipe.toml b/recipes/tools/cosmic-files/recipe.toml similarity index 100% rename from recipes/gui/cosmic-files/recipe.toml rename to recipes/tools/cosmic-files/recipe.toml diff --git a/recipes/gui/cosmic-term/manifest b/recipes/tools/cosmic-term/manifest similarity index 100% rename from recipes/gui/cosmic-term/manifest rename to recipes/tools/cosmic-term/manifest diff --git a/recipes/gui/cosmic-term/recipe.toml b/recipes/tools/cosmic-term/recipe.toml similarity index 100% rename from recipes/gui/cosmic-term/recipe.toml rename to recipes/tools/cosmic-term/recipe.toml diff --git a/recipes/gui/periodictable/recipe.sh b/recipes/tools/periodictable/recipe.sh similarity index 100% rename from recipes/gui/periodictable/recipe.sh rename to recipes/tools/periodictable/recipe.sh diff --git a/recipes/tools/redox-ssh/recipe.toml b/recipes/tools/ssh/redox-ssh/recipe.toml similarity index 100% rename from recipes/tools/redox-ssh/recipe.toml rename to recipes/tools/ssh/redox-ssh/recipe.toml diff --git a/recipes/net/netsurf/01_redox.patch b/recipes/web/netsurf/01_redox.patch similarity index 100% rename from recipes/net/netsurf/01_redox.patch rename to recipes/web/netsurf/01_redox.patch diff --git a/recipes/net/netsurf/manifest b/recipes/web/netsurf/manifest similarity index 100% rename from recipes/net/netsurf/manifest rename to recipes/web/netsurf/manifest diff --git a/recipes/net/netsurf/recipe.sh b/recipes/web/netsurf/recipe.sh similarity index 100% rename from recipes/net/netsurf/recipe.sh rename to recipes/web/netsurf/recipe.sh diff --git a/recipes/toolkits/servo/recipe.sh b/recipes/web/servo/recipe.sh similarity index 100% rename from recipes/toolkits/servo/recipe.sh rename to recipes/web/servo/recipe.sh From 07dce1c599897788944e271bca7ec50959a57e20 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 20 Feb 2024 21:26:12 +0000 Subject: [PATCH 1591/3180] add recipes --- recipes/wip/demos/tenki/recipe.toml | 6 ++++++ recipes/wip/security/cve-rs/recipe.toml | 5 +++++ recipes/wip/tui/rust-kanban/recipe.toml | 5 +++++ recipes/wip/tui/syndicationd/recipe.toml | 8 ++++++++ 4 files changed, 24 insertions(+) create mode 100644 recipes/wip/demos/tenki/recipe.toml create mode 100644 recipes/wip/security/cve-rs/recipe.toml create mode 100644 recipes/wip/tui/rust-kanban/recipe.toml create mode 100644 recipes/wip/tui/syndicationd/recipe.toml diff --git a/recipes/wip/demos/tenki/recipe.toml b/recipes/wip/demos/tenki/recipe.toml new file mode 100644 index 00000000..147814ab --- /dev/null +++ b/recipes/wip/demos/tenki/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ckaznable/tenki" +rev = "f59ba2125d46bc22680a4d2ee63b5ce864e00209" +[build] +template = "cargo" diff --git a/recipes/wip/security/cve-rs/recipe.toml b/recipes/wip/security/cve-rs/recipe.toml new file mode 100644 index 00000000..87830e3c --- /dev/null +++ b/recipes/wip/security/cve-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Speykious/cve-rs" +[build] +template = "cargo" diff --git a/recipes/wip/tui/rust-kanban/recipe.toml b/recipes/wip/tui/rust-kanban/recipe.toml new file mode 100644 index 00000000..48b192d4 --- /dev/null +++ b/recipes/wip/tui/rust-kanban/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/yashs662/rust_kanban" +[build] +template = "cargo" diff --git a/recipes/wip/tui/syndicationd/recipe.toml b/recipes/wip/tui/syndicationd/recipe.toml new file mode 100644 index 00000000..11ab61bc --- /dev/null +++ b/recipes/wip/tui/syndicationd/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ymgyt/syndicationd" +[build] +template = "custom" +script = """ +cookbook_cargo_packages synd-term +""" From c6b3cc91a41f26df6212c28707a8b0f6d098a6b2 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 21 Feb 2024 23:52:20 +0000 Subject: [PATCH 1592/3180] move recipes --- recipes/wip/dev/{abi-cafe => }/apitrace/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/astronvim/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/c2rust/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/cbindgen/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/chars/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/cling/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/cppunit/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/crosstool-ng/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/deno/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/difftastic/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/diplomat/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/doxygen/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/elfshaker/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/elixir/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/elm/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/erlang/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/evcxr-jupyter/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/evcxr-repl/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/fal/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/firedbg/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/flamegraph/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/fyrox-template/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/gdb/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/ghc/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/ghostpdl/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/ghostscript/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/git-absorb/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/git-cliff/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/git-ignore-generator/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/gitui/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/gnome-builder/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/godot-engine4/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/hadrian/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/hare-std/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/harec/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/hexyl/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/hvm/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/julia-lts/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/julia/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/kani/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/kdevelop/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/luajit/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/meson/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/moonzoon/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/openjdk11-headless/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/openjdk17-headless/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/openjdk21-headless/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/openjdk8-headless/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/oxc/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/pony-lang/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/renderdoc/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/rr-debugger/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/rust-counter-strings/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/samply/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/shaderc/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/tokio-console/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/tracy/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/vala/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/vale-lang/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/valgrind/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/wasmtime/recipe.toml | 0 recipes/wip/dev/{abi-cafe => }/zig/recipe.toml | 0 62 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/dev/{abi-cafe => }/apitrace/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/astronvim/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/c2rust/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/cbindgen/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/chars/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/cling/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/cppunit/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/crosstool-ng/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/deno/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/difftastic/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/diplomat/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/doxygen/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/elfshaker/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/elixir/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/elm/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/erlang/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/evcxr-jupyter/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/evcxr-repl/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/fal/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/firedbg/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/flamegraph/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/fyrox-template/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/gdb/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/ghc/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/ghostpdl/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/ghostscript/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/git-absorb/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/git-cliff/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/git-ignore-generator/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/gitui/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/gnome-builder/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/godot-engine4/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/hadrian/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/hare-std/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/harec/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/hexyl/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/hvm/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/julia-lts/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/julia/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/kani/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/kdevelop/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/luajit/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/meson/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/moonzoon/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/openjdk11-headless/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/openjdk17-headless/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/openjdk21-headless/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/openjdk8-headless/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/oxc/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/pony-lang/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/renderdoc/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/rr-debugger/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/rust-counter-strings/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/samply/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/shaderc/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/tokio-console/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/tracy/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/vala/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/vale-lang/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/valgrind/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/wasmtime/recipe.toml (100%) rename recipes/wip/dev/{abi-cafe => }/zig/recipe.toml (100%) diff --git a/recipes/wip/dev/abi-cafe/apitrace/recipe.toml b/recipes/wip/dev/apitrace/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/apitrace/recipe.toml rename to recipes/wip/dev/apitrace/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/astronvim/recipe.toml b/recipes/wip/dev/astronvim/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/astronvim/recipe.toml rename to recipes/wip/dev/astronvim/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/c2rust/recipe.toml b/recipes/wip/dev/c2rust/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/c2rust/recipe.toml rename to recipes/wip/dev/c2rust/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/cbindgen/recipe.toml b/recipes/wip/dev/cbindgen/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/cbindgen/recipe.toml rename to recipes/wip/dev/cbindgen/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/chars/recipe.toml b/recipes/wip/dev/chars/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/chars/recipe.toml rename to recipes/wip/dev/chars/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/cling/recipe.toml b/recipes/wip/dev/cling/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/cling/recipe.toml rename to recipes/wip/dev/cling/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/cppunit/recipe.toml b/recipes/wip/dev/cppunit/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/cppunit/recipe.toml rename to recipes/wip/dev/cppunit/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/crosstool-ng/recipe.toml b/recipes/wip/dev/crosstool-ng/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/crosstool-ng/recipe.toml rename to recipes/wip/dev/crosstool-ng/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/deno/recipe.toml b/recipes/wip/dev/deno/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/deno/recipe.toml rename to recipes/wip/dev/deno/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/difftastic/recipe.toml b/recipes/wip/dev/difftastic/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/difftastic/recipe.toml rename to recipes/wip/dev/difftastic/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/diplomat/recipe.toml b/recipes/wip/dev/diplomat/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/diplomat/recipe.toml rename to recipes/wip/dev/diplomat/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/doxygen/recipe.toml b/recipes/wip/dev/doxygen/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/doxygen/recipe.toml rename to recipes/wip/dev/doxygen/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/elfshaker/recipe.toml b/recipes/wip/dev/elfshaker/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/elfshaker/recipe.toml rename to recipes/wip/dev/elfshaker/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/elixir/recipe.toml b/recipes/wip/dev/elixir/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/elixir/recipe.toml rename to recipes/wip/dev/elixir/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/elm/recipe.toml b/recipes/wip/dev/elm/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/elm/recipe.toml rename to recipes/wip/dev/elm/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/erlang/recipe.toml b/recipes/wip/dev/erlang/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/erlang/recipe.toml rename to recipes/wip/dev/erlang/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/evcxr-jupyter/recipe.toml b/recipes/wip/dev/evcxr-jupyter/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/evcxr-jupyter/recipe.toml rename to recipes/wip/dev/evcxr-jupyter/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/evcxr-repl/recipe.toml b/recipes/wip/dev/evcxr-repl/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/evcxr-repl/recipe.toml rename to recipes/wip/dev/evcxr-repl/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/fal/recipe.toml b/recipes/wip/dev/fal/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/fal/recipe.toml rename to recipes/wip/dev/fal/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/firedbg/recipe.toml b/recipes/wip/dev/firedbg/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/firedbg/recipe.toml rename to recipes/wip/dev/firedbg/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/flamegraph/recipe.toml b/recipes/wip/dev/flamegraph/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/flamegraph/recipe.toml rename to recipes/wip/dev/flamegraph/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/fyrox-template/recipe.toml b/recipes/wip/dev/fyrox-template/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/fyrox-template/recipe.toml rename to recipes/wip/dev/fyrox-template/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/gdb/recipe.toml b/recipes/wip/dev/gdb/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/gdb/recipe.toml rename to recipes/wip/dev/gdb/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/ghc/recipe.toml b/recipes/wip/dev/ghc/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/ghc/recipe.toml rename to recipes/wip/dev/ghc/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/ghostpdl/recipe.toml b/recipes/wip/dev/ghostpdl/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/ghostpdl/recipe.toml rename to recipes/wip/dev/ghostpdl/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/ghostscript/recipe.toml b/recipes/wip/dev/ghostscript/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/ghostscript/recipe.toml rename to recipes/wip/dev/ghostscript/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/git-absorb/recipe.toml b/recipes/wip/dev/git-absorb/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/git-absorb/recipe.toml rename to recipes/wip/dev/git-absorb/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/git-cliff/recipe.toml b/recipes/wip/dev/git-cliff/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/git-cliff/recipe.toml rename to recipes/wip/dev/git-cliff/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/git-ignore-generator/recipe.toml b/recipes/wip/dev/git-ignore-generator/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/git-ignore-generator/recipe.toml rename to recipes/wip/dev/git-ignore-generator/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/gitui/recipe.toml b/recipes/wip/dev/gitui/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/gitui/recipe.toml rename to recipes/wip/dev/gitui/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/gnome-builder/recipe.toml b/recipes/wip/dev/gnome-builder/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/gnome-builder/recipe.toml rename to recipes/wip/dev/gnome-builder/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/godot-engine4/recipe.toml b/recipes/wip/dev/godot-engine4/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/godot-engine4/recipe.toml rename to recipes/wip/dev/godot-engine4/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/hadrian/recipe.toml b/recipes/wip/dev/hadrian/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/hadrian/recipe.toml rename to recipes/wip/dev/hadrian/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/hare-std/recipe.toml b/recipes/wip/dev/hare-std/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/hare-std/recipe.toml rename to recipes/wip/dev/hare-std/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/harec/recipe.toml b/recipes/wip/dev/harec/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/harec/recipe.toml rename to recipes/wip/dev/harec/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/hexyl/recipe.toml b/recipes/wip/dev/hexyl/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/hexyl/recipe.toml rename to recipes/wip/dev/hexyl/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/hvm/recipe.toml b/recipes/wip/dev/hvm/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/hvm/recipe.toml rename to recipes/wip/dev/hvm/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/julia-lts/recipe.toml b/recipes/wip/dev/julia-lts/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/julia-lts/recipe.toml rename to recipes/wip/dev/julia-lts/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/julia/recipe.toml b/recipes/wip/dev/julia/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/julia/recipe.toml rename to recipes/wip/dev/julia/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/kani/recipe.toml b/recipes/wip/dev/kani/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/kani/recipe.toml rename to recipes/wip/dev/kani/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/kdevelop/recipe.toml b/recipes/wip/dev/kdevelop/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/kdevelop/recipe.toml rename to recipes/wip/dev/kdevelop/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/luajit/recipe.toml b/recipes/wip/dev/luajit/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/luajit/recipe.toml rename to recipes/wip/dev/luajit/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/meson/recipe.toml b/recipes/wip/dev/meson/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/meson/recipe.toml rename to recipes/wip/dev/meson/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/moonzoon/recipe.toml b/recipes/wip/dev/moonzoon/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/moonzoon/recipe.toml rename to recipes/wip/dev/moonzoon/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/openjdk11-headless/recipe.toml b/recipes/wip/dev/openjdk11-headless/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/openjdk11-headless/recipe.toml rename to recipes/wip/dev/openjdk11-headless/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/openjdk17-headless/recipe.toml b/recipes/wip/dev/openjdk17-headless/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/openjdk17-headless/recipe.toml rename to recipes/wip/dev/openjdk17-headless/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/openjdk21-headless/recipe.toml b/recipes/wip/dev/openjdk21-headless/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/openjdk21-headless/recipe.toml rename to recipes/wip/dev/openjdk21-headless/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/openjdk8-headless/recipe.toml b/recipes/wip/dev/openjdk8-headless/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/openjdk8-headless/recipe.toml rename to recipes/wip/dev/openjdk8-headless/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/oxc/recipe.toml b/recipes/wip/dev/oxc/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/oxc/recipe.toml rename to recipes/wip/dev/oxc/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/pony-lang/recipe.toml b/recipes/wip/dev/pony-lang/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/pony-lang/recipe.toml rename to recipes/wip/dev/pony-lang/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/renderdoc/recipe.toml b/recipes/wip/dev/renderdoc/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/renderdoc/recipe.toml rename to recipes/wip/dev/renderdoc/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/rr-debugger/recipe.toml b/recipes/wip/dev/rr-debugger/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/rr-debugger/recipe.toml rename to recipes/wip/dev/rr-debugger/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/rust-counter-strings/recipe.toml b/recipes/wip/dev/rust-counter-strings/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/rust-counter-strings/recipe.toml rename to recipes/wip/dev/rust-counter-strings/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/samply/recipe.toml b/recipes/wip/dev/samply/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/samply/recipe.toml rename to recipes/wip/dev/samply/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/shaderc/recipe.toml b/recipes/wip/dev/shaderc/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/shaderc/recipe.toml rename to recipes/wip/dev/shaderc/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/tokio-console/recipe.toml b/recipes/wip/dev/tokio-console/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/tokio-console/recipe.toml rename to recipes/wip/dev/tokio-console/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/tracy/recipe.toml b/recipes/wip/dev/tracy/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/tracy/recipe.toml rename to recipes/wip/dev/tracy/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/vala/recipe.toml b/recipes/wip/dev/vala/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/vala/recipe.toml rename to recipes/wip/dev/vala/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/vale-lang/recipe.toml b/recipes/wip/dev/vale-lang/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/vale-lang/recipe.toml rename to recipes/wip/dev/vale-lang/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/valgrind/recipe.toml b/recipes/wip/dev/valgrind/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/valgrind/recipe.toml rename to recipes/wip/dev/valgrind/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/wasmtime/recipe.toml b/recipes/wip/dev/wasmtime/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/wasmtime/recipe.toml rename to recipes/wip/dev/wasmtime/recipe.toml diff --git a/recipes/wip/dev/abi-cafe/zig/recipe.toml b/recipes/wip/dev/zig/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/zig/recipe.toml rename to recipes/wip/dev/zig/recipe.toml From 3f7112597ea0cf75548c054076e0933a8459a033 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 22 Feb 2024 00:23:00 +0000 Subject: [PATCH 1593/3180] add a recipe --- recipes/wip/video/cheese/recipe.toml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 recipes/wip/video/cheese/recipe.toml diff --git a/recipes/wip/video/cheese/recipe.toml b/recipes/wip/video/cheese/recipe.toml new file mode 100644 index 00000000..8866dea1 --- /dev/null +++ b/recipes/wip/video/cheese/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for Meson, see https://gitlab.gnome.org/GNOME/cheese +#TODO maybe need GStreamer as dependency +[source] +tar = "https://download.gnome.org/sources/cheese/44/cheese-44.1.tar.xz" +[build] +template = "custom" From b18322bc2af97f3325fb45efc73ab83a4bf3f1ba Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 22 Feb 2024 03:31:34 +0000 Subject: [PATCH 1594/3180] move recipes --- recipes/wip/dev/{irust => }/gawk/recipe.toml | 0 recipes/wip/dev/{irust => }/intltool/recipe.toml | 0 recipes/wip/games/{ship-of-harkinian => }/assaultcube/recipe.toml | 0 recipes/wip/games/{ship-of-harkinian => }/shockolate/recipe.toml | 0 recipes/wip/games/{ship-of-harkinian => }/smokin-guns/recipe.toml | 0 recipes/wip/games/{ship-of-harkinian => }/xonotic/recipe.toml | 0 recipes/wip/libs/{gtk-engines => }/gtk2mm/recipe.toml | 0 recipes/wip/libs/{gtk-engines => }/gtk3mm/recipe.toml | 0 recipes/wip/libs/{gtk-engines => }/gtk4mm/recipe.toml | 0 recipes/wip/libs/{gtk-engines => }/gtkglext/recipe.toml | 0 recipes/wip/libs/{gtk-engines => }/gtksourceview/recipe.toml | 0 .../libs/{kf5-activities => }/kf5-activities-stats/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-apidox/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-archive/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-attica/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-auth/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-baloo/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-bookmarks/recipe.toml | 0 .../wip/libs/{kf5-activities => }/kf5-calendarcore/recipe.toml | 0 .../wip/libs/{kf5-activities => }/kf5-cmake-modules/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-cmutils/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-codecs/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-completion/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-config/recipe.toml | 0 .../wip/libs/{kf5-activities => }/kf5-configwidgets/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-contacts/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-coreaddons/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-crash/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-dav/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-dbusaddons/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-declarative/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-dnssd/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-doctools/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-emoticons/recipe.toml | 0 .../wip/libs/{kf5-activities => }/kf5-filemetadata/recipe.toml | 0 .../{kf5-activities => }/kf5-frameworkintegration/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-globalaccel/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-guiaddons/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-holidays/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-i18n/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-iconthemes/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-idletime/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-init/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-io/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-itemmodels/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-itemviews/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-jobwidgets/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-kded/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-kdesu/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-kirigami/recipe.toml | 0 .../wip/libs/{kf5-activities => }/kf5-modem-manager/recipe.toml | 0 .../wip/libs/{kf5-activities => }/kf5-networkmanager/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-newstuff/recipe.toml | 0 .../wip/libs/{kf5-activities => }/kf5-notifications/recipe.toml | 0 .../wip/libs/{kf5-activities => }/kf5-notifyconfig/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-package/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-parts/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-people/recipe.toml | 0 .../libs/{kf5-activities => }/kf5-plasma-framework/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-plotting/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-prison/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-pty/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-purpose/recipe.toml | 0 .../libs/{kf5-activities => }/kf5-qqc2-desktop-style/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-quickcharts/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-runner/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-service/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-solid/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-sonnet/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-syndication/recipe.toml | 0 .../libs/{kf5-activities => }/kf5-syntax-highlighting/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-sysguard/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-texteditor/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-textwidgets/recipe.toml | 0 .../wip/libs/{kf5-activities => }/kf5-threadweaver/recipe.toml | 0 .../wip/libs/{kf5-activities => }/kf5-unitconversion/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-wayland/recipe.toml | 0 .../wip/libs/{kf5-activities => }/kf5-widgetaddons/recipe.toml | 0 .../wip/libs/{kf5-activities => }/kf5-windowsystem/recipe.toml | 0 recipes/wip/libs/{kf5-activities => }/kf5-xmlgui/recipe.toml | 0 recipes/wip/libs/{librdf => }/lib2geom/recipe.toml | 0 recipes/wip/libs/{librdf => }/liba52/recipe.toml | 0 recipes/wip/libs/{librdf => }/libadwaita/recipe.toml | 0 recipes/wip/libs/{librdf => }/libaio/recipe.toml | 0 recipes/wip/libs/{librdf => }/libaom/recipe.toml | 0 recipes/wip/libs/{librdf => }/libargon2/recipe.toml | 0 recipes/wip/libs/{librdf => }/libart/recipe.toml | 0 recipes/wip/libs/{librdf => }/libaspell/recipe.toml | 0 recipes/wip/libs/{librdf => }/libass/recipe.toml | 0 recipes/wip/libs/{librdf => }/libatomic_ops/recipe.toml | 0 recipes/wip/libs/{librdf => }/libavif/recipe.toml | 0 recipes/wip/libs/{librdf => }/libbluray/recipe.toml | 0 recipes/wip/libs/{librdf => }/libbotan/recipe.toml | 0 recipes/wip/libs/{librdf => }/libbrotli/recipe.toml | 0 recipes/wip/libs/{librdf => }/libbsd/recipe.toml | 0 recipes/wip/libs/{librdf => }/libburn/recipe.toml | 0 recipes/wip/libs/{librdf => }/libcaca/recipe.toml | 0 recipes/wip/libs/{librdf => }/libcamera/recipe.toml | 0 recipes/wip/libs/{librdf => }/libcap/recipe.toml | 0 recipes/wip/libs/{librdf => }/libcdio-paranoia/recipe.toml | 0 recipes/wip/libs/{librdf => }/libcdio/recipe.toml | 0 recipes/wip/libs/{librdf => }/libcdr/recipe.toml | 0 recipes/wip/libs/{librdf => }/libcpuid/recipe.toml | 0 recipes/wip/libs/{librdf => }/libcups/recipe.toml | 0 recipes/wip/libs/{librdf => }/libde265/recipe.toml | 0 recipes/wip/libs/{librdf => }/libdecor/recipe.toml | 0 recipes/wip/libs/{librdf => }/libdeflate/recipe.toml | 0 recipes/wip/libs/{librdf => }/libdex/recipe.toml | 0 recipes/wip/libs/{librdf => }/libdmx/recipe.toml | 0 recipes/wip/libs/{librdf => }/libdotconf/recipe.toml | 0 recipes/wip/libs/{librdf => }/libdouble-conversion/recipe.toml | 0 recipes/wip/libs/{librdf => }/libdvbpsi/recipe.toml | 0 recipes/wip/libs/{librdf => }/libdvdcss/recipe.toml | 0 recipes/wip/libs/{librdf => }/libdvdnav/recipe.toml | 0 recipes/wip/libs/{librdf => }/libdvdread/recipe.toml | 0 recipes/wip/libs/{librdf => }/libebml/recipe.toml | 0 recipes/wip/libs/{librdf => }/libedit/recipe.toml | 0 recipes/wip/libs/{librdf => }/libeditline/recipe.toml | 0 recipes/wip/libs/{librdf => }/libeigen/recipe.toml | 0 recipes/wip/libs/{librdf => }/libenet/recipe.toml | 0 recipes/wip/libs/{librdf => }/libepoxy/recipe.toml | 0 recipes/wip/libs/{librdf => }/liberty-eiffel/recipe.toml | 0 recipes/wip/libs/{librdf => }/libevdev/recipe.toml | 0 recipes/wip/libs/{librdf => }/libevent/recipe.toml | 0 recipes/wip/libs/{librdf => }/libfmt/recipe.toml | 0 recipes/wip/libs/{librdf => }/libfontenc/recipe.toml | 0 recipes/wip/libs/{librdf => }/libfs/recipe.toml | 0 recipes/wip/libs/{librdf => }/libfuse2/recipe.toml | 0 recipes/wip/libs/{librdf => }/libfuse3/recipe.toml | 0 recipes/wip/libs/{librdf => }/libgav1/recipe.toml | 0 recipes/wip/libs/{librdf => }/libgc/recipe.toml | 0 recipes/wip/libs/{librdf => }/libgcrypt/recipe.toml | 0 recipes/wip/libs/{librdf => }/libgif/recipe.toml | 0 recipes/wip/libs/{librdf => }/libgit2/recipe.toml | 0 recipes/wip/libs/{librdf => }/libglm/recipe.toml | 0 recipes/wip/libs/{librdf => }/libgloox/recipe.toml | 0 recipes/wip/libs/{librdf => }/libgpg-error/recipe.toml | 0 recipes/wip/libs/{librdf => }/libgphoto2/recipe.toml | 0 recipes/wip/libs/{librdf => }/libgpm/recipe.toml | 0 recipes/wip/libs/{librdf => }/libgrantlee/recipe.toml | 0 recipes/wip/libs/{librdf => }/libgsl/recipe.toml | 0 recipes/wip/libs/{librdf => }/libgspell-gtk3/recipe.toml | 0 recipes/wip/libs/{librdf => }/libgspell-gtk4/recipe.toml | 0 recipes/wip/libs/{librdf => }/libharu/recipe.toml | 0 recipes/wip/libs/{librdf => }/libheif/recipe.toml | 0 recipes/wip/libs/{librdf => }/libhyphen/recipe.toml | 0 recipes/wip/libs/{librdf => }/libice/recipe.toml | 0 recipes/wip/libs/{librdf => }/libicu/recipe.toml | 0 recipes/wip/libs/{librdf => }/libimath/recipe.toml | 0 recipes/wip/libs/{librdf => }/libimmer/recipe.toml | 0 recipes/wip/libs/{librdf => }/libinput/recipe.toml | 0 recipes/wip/libs/{librdf => }/libisoburn/recipe.toml | 0 recipes/wip/libs/{librdf => }/libisofs/recipe.toml | 0 recipes/wip/libs/{librdf => }/libjasper/recipe.toml | 0 recipes/wip/libs/{librdf => }/libjpeg-turbo/recipe.toml | 0 recipes/wip/libs/{librdf => }/libjxl/recipe.toml | 0 recipes/wip/libs/{librdf => }/libkdcraw/recipe.toml | 0 recipes/wip/libs/{librdf => }/libkomparediff2/recipe.toml | 0 recipes/wip/libs/{librdf => }/liblager/recipe.toml | 0 recipes/wip/libs/{librdf => }/liblapack/recipe.toml | 0 recipes/wip/libs/{librdf => }/liblcms/recipe.toml | 0 recipes/wip/libs/{librdf => }/liblo/recipe.toml | 0 recipes/wip/libs/{librdf => }/libm17n/recipe.toml | 0 recipes/wip/libs/{librdf => }/libmad/recipe.toml | 0 recipes/wip/libs/{librdf => }/libmatroska/recipe.toml | 0 recipes/wip/libs/{librdf => }/libmd/recipe.toml | 0 recipes/wip/libs/{librdf => }/libmpeg2/recipe.toml | 0 recipes/wip/libs/{librdf => }/libmypaint/recipe.toml | 0 recipes/wip/libs/{librdf => }/libnlopt/recipe.toml | 0 recipes/wip/libs/{librdf => }/libnotify/recipe.toml | 0 recipes/wip/libs/{librdf => }/libnsl/recipe.toml | 0 recipes/wip/libs/{librdf => }/libotf/recipe.toml | 0 recipes/wip/libs/{librdf => }/libpanel/recipe.toml | 0 recipes/wip/libs/{librdf => }/libpcap/recipe.toml | 0 recipes/wip/libs/{librdf => }/libpeas/recipe.toml | 0 recipes/wip/libs/{librdf => }/libpoppler/recipe.toml | 0 recipes/wip/libs/{librdf => }/libportaudio/recipe.toml | 0 recipes/wip/libs/{librdf => }/libpthread-stubs/recipe.toml | 0 recipes/wip/libs/{librdf => }/libpugixml/recipe.toml | 0 recipes/wip/libs/{librdf => }/libqalculate/recipe.toml | 0 recipes/wip/libs/{librdf => }/libqrcodegenc/recipe.toml | 0 recipes/wip/libs/{librdf => }/libraptor2/recipe.toml | 0 recipes/wip/libs/{librdf => }/librasqal/recipe.toml | 0 recipes/wip/libs/{librdf => }/libraw/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libwayland/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libwebp/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libwebp2/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libwebsocket++/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libwebsockets/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libwmf/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libwpd/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libx11/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxau/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxaw/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxcb/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxcomposite/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxcursor/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxdamage/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxdmcp/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxext/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxfixes/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxft/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxi/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxinerama/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxkbcommon/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxkbfile/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxmu/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxpm/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxrandr/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxrender/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxres/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxsimd/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxslt/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxss/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxtl/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxtrans/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxtst/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxv/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libxvmc/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libyaml/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libzug/recipe.toml | 0 recipes/wip/libs/{libvulkan => }/libzvbi/recipe.toml | 0 recipes/wip/libs/{openal => }/openblas/recipe.toml | 0 recipes/wip/libs/{openal => }/opencv4/recipe.toml | 0 recipes/wip/libs/{openal => }/openjpeg/recipe.toml | 0 recipes/wip/libs/{openal => }/opus/recipe.toml | 0 recipes/wip/libs/{openal => }/opusfile/recipe.toml | 0 recipes/wip/libs/{openal => }/raylib/recipe.toml | 0 recipes/wip/libs/{openal => }/rdflib/recipe.toml | 0 229 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/dev/{irust => }/gawk/recipe.toml (100%) rename recipes/wip/dev/{irust => }/intltool/recipe.toml (100%) rename recipes/wip/games/{ship-of-harkinian => }/assaultcube/recipe.toml (100%) rename recipes/wip/games/{ship-of-harkinian => }/shockolate/recipe.toml (100%) rename recipes/wip/games/{ship-of-harkinian => }/smokin-guns/recipe.toml (100%) rename recipes/wip/games/{ship-of-harkinian => }/xonotic/recipe.toml (100%) rename recipes/wip/libs/{gtk-engines => }/gtk2mm/recipe.toml (100%) rename recipes/wip/libs/{gtk-engines => }/gtk3mm/recipe.toml (100%) rename recipes/wip/libs/{gtk-engines => }/gtk4mm/recipe.toml (100%) rename recipes/wip/libs/{gtk-engines => }/gtkglext/recipe.toml (100%) rename recipes/wip/libs/{gtk-engines => }/gtksourceview/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-activities-stats/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-apidox/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-archive/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-attica/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-auth/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-baloo/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-bookmarks/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-calendarcore/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-cmake-modules/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-cmutils/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-codecs/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-completion/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-config/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-configwidgets/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-contacts/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-coreaddons/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-crash/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-dav/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-dbusaddons/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-declarative/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-dnssd/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-doctools/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-emoticons/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-filemetadata/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-frameworkintegration/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-globalaccel/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-guiaddons/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-holidays/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-i18n/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-iconthemes/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-idletime/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-init/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-io/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-itemmodels/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-itemviews/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-jobwidgets/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-kded/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-kdesu/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-kirigami/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-modem-manager/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-networkmanager/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-newstuff/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-notifications/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-notifyconfig/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-package/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-parts/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-people/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-plasma-framework/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-plotting/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-prison/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-pty/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-purpose/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-qqc2-desktop-style/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-quickcharts/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-runner/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-service/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-solid/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-sonnet/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-syndication/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-syntax-highlighting/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-sysguard/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-texteditor/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-textwidgets/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-threadweaver/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-unitconversion/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-wayland/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-widgetaddons/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-windowsystem/recipe.toml (100%) rename recipes/wip/libs/{kf5-activities => }/kf5-xmlgui/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/lib2geom/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/liba52/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libadwaita/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libaio/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libaom/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libargon2/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libart/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libaspell/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libass/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libatomic_ops/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libavif/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libbluray/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libbotan/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libbrotli/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libbsd/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libburn/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libcaca/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libcamera/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libcap/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libcdio-paranoia/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libcdio/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libcdr/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libcpuid/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libcups/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libde265/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libdecor/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libdeflate/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libdex/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libdmx/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libdotconf/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libdouble-conversion/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libdvbpsi/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libdvdcss/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libdvdnav/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libdvdread/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libebml/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libedit/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libeditline/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libeigen/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libenet/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libepoxy/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/liberty-eiffel/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libevdev/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libevent/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libfmt/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libfontenc/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libfs/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libfuse2/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libfuse3/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libgav1/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libgc/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libgcrypt/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libgif/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libgit2/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libglm/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libgloox/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libgpg-error/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libgphoto2/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libgpm/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libgrantlee/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libgsl/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libgspell-gtk3/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libgspell-gtk4/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libharu/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libheif/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libhyphen/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libice/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libicu/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libimath/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libimmer/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libinput/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libisoburn/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libisofs/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libjasper/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libjpeg-turbo/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libjxl/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libkdcraw/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libkomparediff2/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/liblager/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/liblapack/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/liblcms/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/liblo/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libm17n/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libmad/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libmatroska/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libmd/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libmpeg2/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libmypaint/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libnlopt/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libnotify/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libnsl/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libotf/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libpanel/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libpcap/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libpeas/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libpoppler/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libportaudio/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libpthread-stubs/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libpugixml/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libqalculate/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libqrcodegenc/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libraptor2/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/librasqal/recipe.toml (100%) rename recipes/wip/libs/{librdf => }/libraw/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libwayland/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libwebp/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libwebp2/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libwebsocket++/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libwebsockets/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libwmf/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libwpd/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libx11/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxau/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxaw/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxcb/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxcomposite/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxcursor/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxdamage/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxdmcp/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxext/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxfixes/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxft/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxi/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxinerama/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxkbcommon/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxkbfile/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxmu/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxpm/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxrandr/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxrender/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxres/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxsimd/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxslt/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxss/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxtl/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxtrans/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxtst/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxv/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libxvmc/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libyaml/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libzug/recipe.toml (100%) rename recipes/wip/libs/{libvulkan => }/libzvbi/recipe.toml (100%) rename recipes/wip/libs/{openal => }/openblas/recipe.toml (100%) rename recipes/wip/libs/{openal => }/opencv4/recipe.toml (100%) rename recipes/wip/libs/{openal => }/openjpeg/recipe.toml (100%) rename recipes/wip/libs/{openal => }/opus/recipe.toml (100%) rename recipes/wip/libs/{openal => }/opusfile/recipe.toml (100%) rename recipes/wip/libs/{openal => }/raylib/recipe.toml (100%) rename recipes/wip/libs/{openal => }/rdflib/recipe.toml (100%) diff --git a/recipes/wip/dev/irust/gawk/recipe.toml b/recipes/wip/dev/gawk/recipe.toml similarity index 100% rename from recipes/wip/dev/irust/gawk/recipe.toml rename to recipes/wip/dev/gawk/recipe.toml diff --git a/recipes/wip/dev/irust/intltool/recipe.toml b/recipes/wip/dev/intltool/recipe.toml similarity index 100% rename from recipes/wip/dev/irust/intltool/recipe.toml rename to recipes/wip/dev/intltool/recipe.toml diff --git a/recipes/wip/games/ship-of-harkinian/assaultcube/recipe.toml b/recipes/wip/games/assaultcube/recipe.toml similarity index 100% rename from recipes/wip/games/ship-of-harkinian/assaultcube/recipe.toml rename to recipes/wip/games/assaultcube/recipe.toml diff --git a/recipes/wip/games/ship-of-harkinian/shockolate/recipe.toml b/recipes/wip/games/shockolate/recipe.toml similarity index 100% rename from recipes/wip/games/ship-of-harkinian/shockolate/recipe.toml rename to recipes/wip/games/shockolate/recipe.toml diff --git a/recipes/wip/games/ship-of-harkinian/smokin-guns/recipe.toml b/recipes/wip/games/smokin-guns/recipe.toml similarity index 100% rename from recipes/wip/games/ship-of-harkinian/smokin-guns/recipe.toml rename to recipes/wip/games/smokin-guns/recipe.toml diff --git a/recipes/wip/games/ship-of-harkinian/xonotic/recipe.toml b/recipes/wip/games/xonotic/recipe.toml similarity index 100% rename from recipes/wip/games/ship-of-harkinian/xonotic/recipe.toml rename to recipes/wip/games/xonotic/recipe.toml diff --git a/recipes/wip/libs/gtk-engines/gtk2mm/recipe.toml b/recipes/wip/libs/gtk2mm/recipe.toml similarity index 100% rename from recipes/wip/libs/gtk-engines/gtk2mm/recipe.toml rename to recipes/wip/libs/gtk2mm/recipe.toml diff --git a/recipes/wip/libs/gtk-engines/gtk3mm/recipe.toml b/recipes/wip/libs/gtk3mm/recipe.toml similarity index 100% rename from recipes/wip/libs/gtk-engines/gtk3mm/recipe.toml rename to recipes/wip/libs/gtk3mm/recipe.toml diff --git a/recipes/wip/libs/gtk-engines/gtk4mm/recipe.toml b/recipes/wip/libs/gtk4mm/recipe.toml similarity index 100% rename from recipes/wip/libs/gtk-engines/gtk4mm/recipe.toml rename to recipes/wip/libs/gtk4mm/recipe.toml diff --git a/recipes/wip/libs/gtk-engines/gtkglext/recipe.toml b/recipes/wip/libs/gtkglext/recipe.toml similarity index 100% rename from recipes/wip/libs/gtk-engines/gtkglext/recipe.toml rename to recipes/wip/libs/gtkglext/recipe.toml diff --git a/recipes/wip/libs/gtk-engines/gtksourceview/recipe.toml b/recipes/wip/libs/gtksourceview/recipe.toml similarity index 100% rename from recipes/wip/libs/gtk-engines/gtksourceview/recipe.toml rename to recipes/wip/libs/gtksourceview/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-activities-stats/recipe.toml b/recipes/wip/libs/kf5-activities-stats/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-activities-stats/recipe.toml rename to recipes/wip/libs/kf5-activities-stats/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-apidox/recipe.toml b/recipes/wip/libs/kf5-apidox/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-apidox/recipe.toml rename to recipes/wip/libs/kf5-apidox/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-archive/recipe.toml b/recipes/wip/libs/kf5-archive/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-archive/recipe.toml rename to recipes/wip/libs/kf5-archive/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-attica/recipe.toml b/recipes/wip/libs/kf5-attica/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-attica/recipe.toml rename to recipes/wip/libs/kf5-attica/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-auth/recipe.toml b/recipes/wip/libs/kf5-auth/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-auth/recipe.toml rename to recipes/wip/libs/kf5-auth/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-baloo/recipe.toml b/recipes/wip/libs/kf5-baloo/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-baloo/recipe.toml rename to recipes/wip/libs/kf5-baloo/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-bookmarks/recipe.toml b/recipes/wip/libs/kf5-bookmarks/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-bookmarks/recipe.toml rename to recipes/wip/libs/kf5-bookmarks/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-calendarcore/recipe.toml b/recipes/wip/libs/kf5-calendarcore/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-calendarcore/recipe.toml rename to recipes/wip/libs/kf5-calendarcore/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-cmake-modules/recipe.toml b/recipes/wip/libs/kf5-cmake-modules/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-cmake-modules/recipe.toml rename to recipes/wip/libs/kf5-cmake-modules/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-cmutils/recipe.toml b/recipes/wip/libs/kf5-cmutils/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-cmutils/recipe.toml rename to recipes/wip/libs/kf5-cmutils/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-codecs/recipe.toml b/recipes/wip/libs/kf5-codecs/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-codecs/recipe.toml rename to recipes/wip/libs/kf5-codecs/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-completion/recipe.toml b/recipes/wip/libs/kf5-completion/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-completion/recipe.toml rename to recipes/wip/libs/kf5-completion/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-config/recipe.toml b/recipes/wip/libs/kf5-config/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-config/recipe.toml rename to recipes/wip/libs/kf5-config/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-configwidgets/recipe.toml b/recipes/wip/libs/kf5-configwidgets/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-configwidgets/recipe.toml rename to recipes/wip/libs/kf5-configwidgets/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-contacts/recipe.toml b/recipes/wip/libs/kf5-contacts/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-contacts/recipe.toml rename to recipes/wip/libs/kf5-contacts/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-coreaddons/recipe.toml b/recipes/wip/libs/kf5-coreaddons/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-coreaddons/recipe.toml rename to recipes/wip/libs/kf5-coreaddons/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-crash/recipe.toml b/recipes/wip/libs/kf5-crash/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-crash/recipe.toml rename to recipes/wip/libs/kf5-crash/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-dav/recipe.toml b/recipes/wip/libs/kf5-dav/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-dav/recipe.toml rename to recipes/wip/libs/kf5-dav/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-dbusaddons/recipe.toml b/recipes/wip/libs/kf5-dbusaddons/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-dbusaddons/recipe.toml rename to recipes/wip/libs/kf5-dbusaddons/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-declarative/recipe.toml b/recipes/wip/libs/kf5-declarative/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-declarative/recipe.toml rename to recipes/wip/libs/kf5-declarative/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-dnssd/recipe.toml b/recipes/wip/libs/kf5-dnssd/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-dnssd/recipe.toml rename to recipes/wip/libs/kf5-dnssd/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-doctools/recipe.toml b/recipes/wip/libs/kf5-doctools/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-doctools/recipe.toml rename to recipes/wip/libs/kf5-doctools/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-emoticons/recipe.toml b/recipes/wip/libs/kf5-emoticons/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-emoticons/recipe.toml rename to recipes/wip/libs/kf5-emoticons/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-filemetadata/recipe.toml b/recipes/wip/libs/kf5-filemetadata/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-filemetadata/recipe.toml rename to recipes/wip/libs/kf5-filemetadata/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-frameworkintegration/recipe.toml b/recipes/wip/libs/kf5-frameworkintegration/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-frameworkintegration/recipe.toml rename to recipes/wip/libs/kf5-frameworkintegration/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-globalaccel/recipe.toml b/recipes/wip/libs/kf5-globalaccel/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-globalaccel/recipe.toml rename to recipes/wip/libs/kf5-globalaccel/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-guiaddons/recipe.toml b/recipes/wip/libs/kf5-guiaddons/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-guiaddons/recipe.toml rename to recipes/wip/libs/kf5-guiaddons/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-holidays/recipe.toml b/recipes/wip/libs/kf5-holidays/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-holidays/recipe.toml rename to recipes/wip/libs/kf5-holidays/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-i18n/recipe.toml b/recipes/wip/libs/kf5-i18n/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-i18n/recipe.toml rename to recipes/wip/libs/kf5-i18n/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-iconthemes/recipe.toml b/recipes/wip/libs/kf5-iconthemes/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-iconthemes/recipe.toml rename to recipes/wip/libs/kf5-iconthemes/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-idletime/recipe.toml b/recipes/wip/libs/kf5-idletime/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-idletime/recipe.toml rename to recipes/wip/libs/kf5-idletime/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-init/recipe.toml b/recipes/wip/libs/kf5-init/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-init/recipe.toml rename to recipes/wip/libs/kf5-init/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-io/recipe.toml b/recipes/wip/libs/kf5-io/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-io/recipe.toml rename to recipes/wip/libs/kf5-io/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-itemmodels/recipe.toml b/recipes/wip/libs/kf5-itemmodels/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-itemmodels/recipe.toml rename to recipes/wip/libs/kf5-itemmodels/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-itemviews/recipe.toml b/recipes/wip/libs/kf5-itemviews/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-itemviews/recipe.toml rename to recipes/wip/libs/kf5-itemviews/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-jobwidgets/recipe.toml b/recipes/wip/libs/kf5-jobwidgets/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-jobwidgets/recipe.toml rename to recipes/wip/libs/kf5-jobwidgets/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-kded/recipe.toml b/recipes/wip/libs/kf5-kded/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-kded/recipe.toml rename to recipes/wip/libs/kf5-kded/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-kdesu/recipe.toml b/recipes/wip/libs/kf5-kdesu/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-kdesu/recipe.toml rename to recipes/wip/libs/kf5-kdesu/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-kirigami/recipe.toml b/recipes/wip/libs/kf5-kirigami/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-kirigami/recipe.toml rename to recipes/wip/libs/kf5-kirigami/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-modem-manager/recipe.toml b/recipes/wip/libs/kf5-modem-manager/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-modem-manager/recipe.toml rename to recipes/wip/libs/kf5-modem-manager/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-networkmanager/recipe.toml b/recipes/wip/libs/kf5-networkmanager/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-networkmanager/recipe.toml rename to recipes/wip/libs/kf5-networkmanager/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-newstuff/recipe.toml b/recipes/wip/libs/kf5-newstuff/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-newstuff/recipe.toml rename to recipes/wip/libs/kf5-newstuff/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-notifications/recipe.toml b/recipes/wip/libs/kf5-notifications/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-notifications/recipe.toml rename to recipes/wip/libs/kf5-notifications/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-notifyconfig/recipe.toml b/recipes/wip/libs/kf5-notifyconfig/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-notifyconfig/recipe.toml rename to recipes/wip/libs/kf5-notifyconfig/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-package/recipe.toml b/recipes/wip/libs/kf5-package/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-package/recipe.toml rename to recipes/wip/libs/kf5-package/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-parts/recipe.toml b/recipes/wip/libs/kf5-parts/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-parts/recipe.toml rename to recipes/wip/libs/kf5-parts/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-people/recipe.toml b/recipes/wip/libs/kf5-people/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-people/recipe.toml rename to recipes/wip/libs/kf5-people/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-plasma-framework/recipe.toml b/recipes/wip/libs/kf5-plasma-framework/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-plasma-framework/recipe.toml rename to recipes/wip/libs/kf5-plasma-framework/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-plotting/recipe.toml b/recipes/wip/libs/kf5-plotting/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-plotting/recipe.toml rename to recipes/wip/libs/kf5-plotting/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-prison/recipe.toml b/recipes/wip/libs/kf5-prison/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-prison/recipe.toml rename to recipes/wip/libs/kf5-prison/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-pty/recipe.toml b/recipes/wip/libs/kf5-pty/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-pty/recipe.toml rename to recipes/wip/libs/kf5-pty/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-purpose/recipe.toml b/recipes/wip/libs/kf5-purpose/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-purpose/recipe.toml rename to recipes/wip/libs/kf5-purpose/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-qqc2-desktop-style/recipe.toml b/recipes/wip/libs/kf5-qqc2-desktop-style/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-qqc2-desktop-style/recipe.toml rename to recipes/wip/libs/kf5-qqc2-desktop-style/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-quickcharts/recipe.toml b/recipes/wip/libs/kf5-quickcharts/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-quickcharts/recipe.toml rename to recipes/wip/libs/kf5-quickcharts/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-runner/recipe.toml b/recipes/wip/libs/kf5-runner/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-runner/recipe.toml rename to recipes/wip/libs/kf5-runner/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-service/recipe.toml b/recipes/wip/libs/kf5-service/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-service/recipe.toml rename to recipes/wip/libs/kf5-service/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-solid/recipe.toml b/recipes/wip/libs/kf5-solid/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-solid/recipe.toml rename to recipes/wip/libs/kf5-solid/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-sonnet/recipe.toml b/recipes/wip/libs/kf5-sonnet/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-sonnet/recipe.toml rename to recipes/wip/libs/kf5-sonnet/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-syndication/recipe.toml b/recipes/wip/libs/kf5-syndication/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-syndication/recipe.toml rename to recipes/wip/libs/kf5-syndication/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-syntax-highlighting/recipe.toml b/recipes/wip/libs/kf5-syntax-highlighting/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-syntax-highlighting/recipe.toml rename to recipes/wip/libs/kf5-syntax-highlighting/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-sysguard/recipe.toml b/recipes/wip/libs/kf5-sysguard/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-sysguard/recipe.toml rename to recipes/wip/libs/kf5-sysguard/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-texteditor/recipe.toml b/recipes/wip/libs/kf5-texteditor/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-texteditor/recipe.toml rename to recipes/wip/libs/kf5-texteditor/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-textwidgets/recipe.toml b/recipes/wip/libs/kf5-textwidgets/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-textwidgets/recipe.toml rename to recipes/wip/libs/kf5-textwidgets/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-threadweaver/recipe.toml b/recipes/wip/libs/kf5-threadweaver/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-threadweaver/recipe.toml rename to recipes/wip/libs/kf5-threadweaver/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-unitconversion/recipe.toml b/recipes/wip/libs/kf5-unitconversion/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-unitconversion/recipe.toml rename to recipes/wip/libs/kf5-unitconversion/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-wayland/recipe.toml b/recipes/wip/libs/kf5-wayland/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-wayland/recipe.toml rename to recipes/wip/libs/kf5-wayland/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-widgetaddons/recipe.toml b/recipes/wip/libs/kf5-widgetaddons/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-widgetaddons/recipe.toml rename to recipes/wip/libs/kf5-widgetaddons/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-windowsystem/recipe.toml b/recipes/wip/libs/kf5-windowsystem/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-windowsystem/recipe.toml rename to recipes/wip/libs/kf5-windowsystem/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/kf5-xmlgui/recipe.toml b/recipes/wip/libs/kf5-xmlgui/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/kf5-xmlgui/recipe.toml rename to recipes/wip/libs/kf5-xmlgui/recipe.toml diff --git a/recipes/wip/libs/librdf/lib2geom/recipe.toml b/recipes/wip/libs/lib2geom/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/lib2geom/recipe.toml rename to recipes/wip/libs/lib2geom/recipe.toml diff --git a/recipes/wip/libs/librdf/liba52/recipe.toml b/recipes/wip/libs/liba52/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/liba52/recipe.toml rename to recipes/wip/libs/liba52/recipe.toml diff --git a/recipes/wip/libs/librdf/libadwaita/recipe.toml b/recipes/wip/libs/libadwaita/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libadwaita/recipe.toml rename to recipes/wip/libs/libadwaita/recipe.toml diff --git a/recipes/wip/libs/librdf/libaio/recipe.toml b/recipes/wip/libs/libaio/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libaio/recipe.toml rename to recipes/wip/libs/libaio/recipe.toml diff --git a/recipes/wip/libs/librdf/libaom/recipe.toml b/recipes/wip/libs/libaom/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libaom/recipe.toml rename to recipes/wip/libs/libaom/recipe.toml diff --git a/recipes/wip/libs/librdf/libargon2/recipe.toml b/recipes/wip/libs/libargon2/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libargon2/recipe.toml rename to recipes/wip/libs/libargon2/recipe.toml diff --git a/recipes/wip/libs/librdf/libart/recipe.toml b/recipes/wip/libs/libart/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libart/recipe.toml rename to recipes/wip/libs/libart/recipe.toml diff --git a/recipes/wip/libs/librdf/libaspell/recipe.toml b/recipes/wip/libs/libaspell/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libaspell/recipe.toml rename to recipes/wip/libs/libaspell/recipe.toml diff --git a/recipes/wip/libs/librdf/libass/recipe.toml b/recipes/wip/libs/libass/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libass/recipe.toml rename to recipes/wip/libs/libass/recipe.toml diff --git a/recipes/wip/libs/librdf/libatomic_ops/recipe.toml b/recipes/wip/libs/libatomic_ops/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libatomic_ops/recipe.toml rename to recipes/wip/libs/libatomic_ops/recipe.toml diff --git a/recipes/wip/libs/librdf/libavif/recipe.toml b/recipes/wip/libs/libavif/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libavif/recipe.toml rename to recipes/wip/libs/libavif/recipe.toml diff --git a/recipes/wip/libs/librdf/libbluray/recipe.toml b/recipes/wip/libs/libbluray/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libbluray/recipe.toml rename to recipes/wip/libs/libbluray/recipe.toml diff --git a/recipes/wip/libs/librdf/libbotan/recipe.toml b/recipes/wip/libs/libbotan/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libbotan/recipe.toml rename to recipes/wip/libs/libbotan/recipe.toml diff --git a/recipes/wip/libs/librdf/libbrotli/recipe.toml b/recipes/wip/libs/libbrotli/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libbrotli/recipe.toml rename to recipes/wip/libs/libbrotli/recipe.toml diff --git a/recipes/wip/libs/librdf/libbsd/recipe.toml b/recipes/wip/libs/libbsd/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libbsd/recipe.toml rename to recipes/wip/libs/libbsd/recipe.toml diff --git a/recipes/wip/libs/librdf/libburn/recipe.toml b/recipes/wip/libs/libburn/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libburn/recipe.toml rename to recipes/wip/libs/libburn/recipe.toml diff --git a/recipes/wip/libs/librdf/libcaca/recipe.toml b/recipes/wip/libs/libcaca/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libcaca/recipe.toml rename to recipes/wip/libs/libcaca/recipe.toml diff --git a/recipes/wip/libs/librdf/libcamera/recipe.toml b/recipes/wip/libs/libcamera/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libcamera/recipe.toml rename to recipes/wip/libs/libcamera/recipe.toml diff --git a/recipes/wip/libs/librdf/libcap/recipe.toml b/recipes/wip/libs/libcap/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libcap/recipe.toml rename to recipes/wip/libs/libcap/recipe.toml diff --git a/recipes/wip/libs/librdf/libcdio-paranoia/recipe.toml b/recipes/wip/libs/libcdio-paranoia/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libcdio-paranoia/recipe.toml rename to recipes/wip/libs/libcdio-paranoia/recipe.toml diff --git a/recipes/wip/libs/librdf/libcdio/recipe.toml b/recipes/wip/libs/libcdio/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libcdio/recipe.toml rename to recipes/wip/libs/libcdio/recipe.toml diff --git a/recipes/wip/libs/librdf/libcdr/recipe.toml b/recipes/wip/libs/libcdr/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libcdr/recipe.toml rename to recipes/wip/libs/libcdr/recipe.toml diff --git a/recipes/wip/libs/librdf/libcpuid/recipe.toml b/recipes/wip/libs/libcpuid/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libcpuid/recipe.toml rename to recipes/wip/libs/libcpuid/recipe.toml diff --git a/recipes/wip/libs/librdf/libcups/recipe.toml b/recipes/wip/libs/libcups/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libcups/recipe.toml rename to recipes/wip/libs/libcups/recipe.toml diff --git a/recipes/wip/libs/librdf/libde265/recipe.toml b/recipes/wip/libs/libde265/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libde265/recipe.toml rename to recipes/wip/libs/libde265/recipe.toml diff --git a/recipes/wip/libs/librdf/libdecor/recipe.toml b/recipes/wip/libs/libdecor/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libdecor/recipe.toml rename to recipes/wip/libs/libdecor/recipe.toml diff --git a/recipes/wip/libs/librdf/libdeflate/recipe.toml b/recipes/wip/libs/libdeflate/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libdeflate/recipe.toml rename to recipes/wip/libs/libdeflate/recipe.toml diff --git a/recipes/wip/libs/librdf/libdex/recipe.toml b/recipes/wip/libs/libdex/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libdex/recipe.toml rename to recipes/wip/libs/libdex/recipe.toml diff --git a/recipes/wip/libs/librdf/libdmx/recipe.toml b/recipes/wip/libs/libdmx/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libdmx/recipe.toml rename to recipes/wip/libs/libdmx/recipe.toml diff --git a/recipes/wip/libs/librdf/libdotconf/recipe.toml b/recipes/wip/libs/libdotconf/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libdotconf/recipe.toml rename to recipes/wip/libs/libdotconf/recipe.toml diff --git a/recipes/wip/libs/librdf/libdouble-conversion/recipe.toml b/recipes/wip/libs/libdouble-conversion/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libdouble-conversion/recipe.toml rename to recipes/wip/libs/libdouble-conversion/recipe.toml diff --git a/recipes/wip/libs/librdf/libdvbpsi/recipe.toml b/recipes/wip/libs/libdvbpsi/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libdvbpsi/recipe.toml rename to recipes/wip/libs/libdvbpsi/recipe.toml diff --git a/recipes/wip/libs/librdf/libdvdcss/recipe.toml b/recipes/wip/libs/libdvdcss/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libdvdcss/recipe.toml rename to recipes/wip/libs/libdvdcss/recipe.toml diff --git a/recipes/wip/libs/librdf/libdvdnav/recipe.toml b/recipes/wip/libs/libdvdnav/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libdvdnav/recipe.toml rename to recipes/wip/libs/libdvdnav/recipe.toml diff --git a/recipes/wip/libs/librdf/libdvdread/recipe.toml b/recipes/wip/libs/libdvdread/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libdvdread/recipe.toml rename to recipes/wip/libs/libdvdread/recipe.toml diff --git a/recipes/wip/libs/librdf/libebml/recipe.toml b/recipes/wip/libs/libebml/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libebml/recipe.toml rename to recipes/wip/libs/libebml/recipe.toml diff --git a/recipes/wip/libs/librdf/libedit/recipe.toml b/recipes/wip/libs/libedit/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libedit/recipe.toml rename to recipes/wip/libs/libedit/recipe.toml diff --git a/recipes/wip/libs/librdf/libeditline/recipe.toml b/recipes/wip/libs/libeditline/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libeditline/recipe.toml rename to recipes/wip/libs/libeditline/recipe.toml diff --git a/recipes/wip/libs/librdf/libeigen/recipe.toml b/recipes/wip/libs/libeigen/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libeigen/recipe.toml rename to recipes/wip/libs/libeigen/recipe.toml diff --git a/recipes/wip/libs/librdf/libenet/recipe.toml b/recipes/wip/libs/libenet/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libenet/recipe.toml rename to recipes/wip/libs/libenet/recipe.toml diff --git a/recipes/wip/libs/librdf/libepoxy/recipe.toml b/recipes/wip/libs/libepoxy/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libepoxy/recipe.toml rename to recipes/wip/libs/libepoxy/recipe.toml diff --git a/recipes/wip/libs/librdf/liberty-eiffel/recipe.toml b/recipes/wip/libs/liberty-eiffel/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/liberty-eiffel/recipe.toml rename to recipes/wip/libs/liberty-eiffel/recipe.toml diff --git a/recipes/wip/libs/librdf/libevdev/recipe.toml b/recipes/wip/libs/libevdev/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libevdev/recipe.toml rename to recipes/wip/libs/libevdev/recipe.toml diff --git a/recipes/wip/libs/librdf/libevent/recipe.toml b/recipes/wip/libs/libevent/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libevent/recipe.toml rename to recipes/wip/libs/libevent/recipe.toml diff --git a/recipes/wip/libs/librdf/libfmt/recipe.toml b/recipes/wip/libs/libfmt/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libfmt/recipe.toml rename to recipes/wip/libs/libfmt/recipe.toml diff --git a/recipes/wip/libs/librdf/libfontenc/recipe.toml b/recipes/wip/libs/libfontenc/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libfontenc/recipe.toml rename to recipes/wip/libs/libfontenc/recipe.toml diff --git a/recipes/wip/libs/librdf/libfs/recipe.toml b/recipes/wip/libs/libfs/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libfs/recipe.toml rename to recipes/wip/libs/libfs/recipe.toml diff --git a/recipes/wip/libs/librdf/libfuse2/recipe.toml b/recipes/wip/libs/libfuse2/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libfuse2/recipe.toml rename to recipes/wip/libs/libfuse2/recipe.toml diff --git a/recipes/wip/libs/librdf/libfuse3/recipe.toml b/recipes/wip/libs/libfuse3/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libfuse3/recipe.toml rename to recipes/wip/libs/libfuse3/recipe.toml diff --git a/recipes/wip/libs/librdf/libgav1/recipe.toml b/recipes/wip/libs/libgav1/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libgav1/recipe.toml rename to recipes/wip/libs/libgav1/recipe.toml diff --git a/recipes/wip/libs/librdf/libgc/recipe.toml b/recipes/wip/libs/libgc/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libgc/recipe.toml rename to recipes/wip/libs/libgc/recipe.toml diff --git a/recipes/wip/libs/librdf/libgcrypt/recipe.toml b/recipes/wip/libs/libgcrypt/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libgcrypt/recipe.toml rename to recipes/wip/libs/libgcrypt/recipe.toml diff --git a/recipes/wip/libs/librdf/libgif/recipe.toml b/recipes/wip/libs/libgif/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libgif/recipe.toml rename to recipes/wip/libs/libgif/recipe.toml diff --git a/recipes/wip/libs/librdf/libgit2/recipe.toml b/recipes/wip/libs/libgit2/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libgit2/recipe.toml rename to recipes/wip/libs/libgit2/recipe.toml diff --git a/recipes/wip/libs/librdf/libglm/recipe.toml b/recipes/wip/libs/libglm/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libglm/recipe.toml rename to recipes/wip/libs/libglm/recipe.toml diff --git a/recipes/wip/libs/librdf/libgloox/recipe.toml b/recipes/wip/libs/libgloox/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libgloox/recipe.toml rename to recipes/wip/libs/libgloox/recipe.toml diff --git a/recipes/wip/libs/librdf/libgpg-error/recipe.toml b/recipes/wip/libs/libgpg-error/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libgpg-error/recipe.toml rename to recipes/wip/libs/libgpg-error/recipe.toml diff --git a/recipes/wip/libs/librdf/libgphoto2/recipe.toml b/recipes/wip/libs/libgphoto2/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libgphoto2/recipe.toml rename to recipes/wip/libs/libgphoto2/recipe.toml diff --git a/recipes/wip/libs/librdf/libgpm/recipe.toml b/recipes/wip/libs/libgpm/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libgpm/recipe.toml rename to recipes/wip/libs/libgpm/recipe.toml diff --git a/recipes/wip/libs/librdf/libgrantlee/recipe.toml b/recipes/wip/libs/libgrantlee/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libgrantlee/recipe.toml rename to recipes/wip/libs/libgrantlee/recipe.toml diff --git a/recipes/wip/libs/librdf/libgsl/recipe.toml b/recipes/wip/libs/libgsl/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libgsl/recipe.toml rename to recipes/wip/libs/libgsl/recipe.toml diff --git a/recipes/wip/libs/librdf/libgspell-gtk3/recipe.toml b/recipes/wip/libs/libgspell-gtk3/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libgspell-gtk3/recipe.toml rename to recipes/wip/libs/libgspell-gtk3/recipe.toml diff --git a/recipes/wip/libs/librdf/libgspell-gtk4/recipe.toml b/recipes/wip/libs/libgspell-gtk4/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libgspell-gtk4/recipe.toml rename to recipes/wip/libs/libgspell-gtk4/recipe.toml diff --git a/recipes/wip/libs/librdf/libharu/recipe.toml b/recipes/wip/libs/libharu/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libharu/recipe.toml rename to recipes/wip/libs/libharu/recipe.toml diff --git a/recipes/wip/libs/librdf/libheif/recipe.toml b/recipes/wip/libs/libheif/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libheif/recipe.toml rename to recipes/wip/libs/libheif/recipe.toml diff --git a/recipes/wip/libs/librdf/libhyphen/recipe.toml b/recipes/wip/libs/libhyphen/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libhyphen/recipe.toml rename to recipes/wip/libs/libhyphen/recipe.toml diff --git a/recipes/wip/libs/librdf/libice/recipe.toml b/recipes/wip/libs/libice/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libice/recipe.toml rename to recipes/wip/libs/libice/recipe.toml diff --git a/recipes/wip/libs/librdf/libicu/recipe.toml b/recipes/wip/libs/libicu/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libicu/recipe.toml rename to recipes/wip/libs/libicu/recipe.toml diff --git a/recipes/wip/libs/librdf/libimath/recipe.toml b/recipes/wip/libs/libimath/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libimath/recipe.toml rename to recipes/wip/libs/libimath/recipe.toml diff --git a/recipes/wip/libs/librdf/libimmer/recipe.toml b/recipes/wip/libs/libimmer/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libimmer/recipe.toml rename to recipes/wip/libs/libimmer/recipe.toml diff --git a/recipes/wip/libs/librdf/libinput/recipe.toml b/recipes/wip/libs/libinput/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libinput/recipe.toml rename to recipes/wip/libs/libinput/recipe.toml diff --git a/recipes/wip/libs/librdf/libisoburn/recipe.toml b/recipes/wip/libs/libisoburn/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libisoburn/recipe.toml rename to recipes/wip/libs/libisoburn/recipe.toml diff --git a/recipes/wip/libs/librdf/libisofs/recipe.toml b/recipes/wip/libs/libisofs/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libisofs/recipe.toml rename to recipes/wip/libs/libisofs/recipe.toml diff --git a/recipes/wip/libs/librdf/libjasper/recipe.toml b/recipes/wip/libs/libjasper/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libjasper/recipe.toml rename to recipes/wip/libs/libjasper/recipe.toml diff --git a/recipes/wip/libs/librdf/libjpeg-turbo/recipe.toml b/recipes/wip/libs/libjpeg-turbo/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libjpeg-turbo/recipe.toml rename to recipes/wip/libs/libjpeg-turbo/recipe.toml diff --git a/recipes/wip/libs/librdf/libjxl/recipe.toml b/recipes/wip/libs/libjxl/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libjxl/recipe.toml rename to recipes/wip/libs/libjxl/recipe.toml diff --git a/recipes/wip/libs/librdf/libkdcraw/recipe.toml b/recipes/wip/libs/libkdcraw/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libkdcraw/recipe.toml rename to recipes/wip/libs/libkdcraw/recipe.toml diff --git a/recipes/wip/libs/librdf/libkomparediff2/recipe.toml b/recipes/wip/libs/libkomparediff2/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libkomparediff2/recipe.toml rename to recipes/wip/libs/libkomparediff2/recipe.toml diff --git a/recipes/wip/libs/librdf/liblager/recipe.toml b/recipes/wip/libs/liblager/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/liblager/recipe.toml rename to recipes/wip/libs/liblager/recipe.toml diff --git a/recipes/wip/libs/librdf/liblapack/recipe.toml b/recipes/wip/libs/liblapack/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/liblapack/recipe.toml rename to recipes/wip/libs/liblapack/recipe.toml diff --git a/recipes/wip/libs/librdf/liblcms/recipe.toml b/recipes/wip/libs/liblcms/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/liblcms/recipe.toml rename to recipes/wip/libs/liblcms/recipe.toml diff --git a/recipes/wip/libs/librdf/liblo/recipe.toml b/recipes/wip/libs/liblo/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/liblo/recipe.toml rename to recipes/wip/libs/liblo/recipe.toml diff --git a/recipes/wip/libs/librdf/libm17n/recipe.toml b/recipes/wip/libs/libm17n/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libm17n/recipe.toml rename to recipes/wip/libs/libm17n/recipe.toml diff --git a/recipes/wip/libs/librdf/libmad/recipe.toml b/recipes/wip/libs/libmad/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libmad/recipe.toml rename to recipes/wip/libs/libmad/recipe.toml diff --git a/recipes/wip/libs/librdf/libmatroska/recipe.toml b/recipes/wip/libs/libmatroska/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libmatroska/recipe.toml rename to recipes/wip/libs/libmatroska/recipe.toml diff --git a/recipes/wip/libs/librdf/libmd/recipe.toml b/recipes/wip/libs/libmd/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libmd/recipe.toml rename to recipes/wip/libs/libmd/recipe.toml diff --git a/recipes/wip/libs/librdf/libmpeg2/recipe.toml b/recipes/wip/libs/libmpeg2/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libmpeg2/recipe.toml rename to recipes/wip/libs/libmpeg2/recipe.toml diff --git a/recipes/wip/libs/librdf/libmypaint/recipe.toml b/recipes/wip/libs/libmypaint/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libmypaint/recipe.toml rename to recipes/wip/libs/libmypaint/recipe.toml diff --git a/recipes/wip/libs/librdf/libnlopt/recipe.toml b/recipes/wip/libs/libnlopt/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libnlopt/recipe.toml rename to recipes/wip/libs/libnlopt/recipe.toml diff --git a/recipes/wip/libs/librdf/libnotify/recipe.toml b/recipes/wip/libs/libnotify/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libnotify/recipe.toml rename to recipes/wip/libs/libnotify/recipe.toml diff --git a/recipes/wip/libs/librdf/libnsl/recipe.toml b/recipes/wip/libs/libnsl/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libnsl/recipe.toml rename to recipes/wip/libs/libnsl/recipe.toml diff --git a/recipes/wip/libs/librdf/libotf/recipe.toml b/recipes/wip/libs/libotf/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libotf/recipe.toml rename to recipes/wip/libs/libotf/recipe.toml diff --git a/recipes/wip/libs/librdf/libpanel/recipe.toml b/recipes/wip/libs/libpanel/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libpanel/recipe.toml rename to recipes/wip/libs/libpanel/recipe.toml diff --git a/recipes/wip/libs/librdf/libpcap/recipe.toml b/recipes/wip/libs/libpcap/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libpcap/recipe.toml rename to recipes/wip/libs/libpcap/recipe.toml diff --git a/recipes/wip/libs/librdf/libpeas/recipe.toml b/recipes/wip/libs/libpeas/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libpeas/recipe.toml rename to recipes/wip/libs/libpeas/recipe.toml diff --git a/recipes/wip/libs/librdf/libpoppler/recipe.toml b/recipes/wip/libs/libpoppler/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libpoppler/recipe.toml rename to recipes/wip/libs/libpoppler/recipe.toml diff --git a/recipes/wip/libs/librdf/libportaudio/recipe.toml b/recipes/wip/libs/libportaudio/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libportaudio/recipe.toml rename to recipes/wip/libs/libportaudio/recipe.toml diff --git a/recipes/wip/libs/librdf/libpthread-stubs/recipe.toml b/recipes/wip/libs/libpthread-stubs/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libpthread-stubs/recipe.toml rename to recipes/wip/libs/libpthread-stubs/recipe.toml diff --git a/recipes/wip/libs/librdf/libpugixml/recipe.toml b/recipes/wip/libs/libpugixml/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libpugixml/recipe.toml rename to recipes/wip/libs/libpugixml/recipe.toml diff --git a/recipes/wip/libs/librdf/libqalculate/recipe.toml b/recipes/wip/libs/libqalculate/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libqalculate/recipe.toml rename to recipes/wip/libs/libqalculate/recipe.toml diff --git a/recipes/wip/libs/librdf/libqrcodegenc/recipe.toml b/recipes/wip/libs/libqrcodegenc/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libqrcodegenc/recipe.toml rename to recipes/wip/libs/libqrcodegenc/recipe.toml diff --git a/recipes/wip/libs/librdf/libraptor2/recipe.toml b/recipes/wip/libs/libraptor2/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libraptor2/recipe.toml rename to recipes/wip/libs/libraptor2/recipe.toml diff --git a/recipes/wip/libs/librdf/librasqal/recipe.toml b/recipes/wip/libs/librasqal/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/librasqal/recipe.toml rename to recipes/wip/libs/librasqal/recipe.toml diff --git a/recipes/wip/libs/librdf/libraw/recipe.toml b/recipes/wip/libs/libraw/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/libraw/recipe.toml rename to recipes/wip/libs/libraw/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libwayland/recipe.toml b/recipes/wip/libs/libwayland/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libwayland/recipe.toml rename to recipes/wip/libs/libwayland/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libwebp/recipe.toml b/recipes/wip/libs/libwebp/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libwebp/recipe.toml rename to recipes/wip/libs/libwebp/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libwebp2/recipe.toml b/recipes/wip/libs/libwebp2/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libwebp2/recipe.toml rename to recipes/wip/libs/libwebp2/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libwebsocket++/recipe.toml b/recipes/wip/libs/libwebsocket++/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libwebsocket++/recipe.toml rename to recipes/wip/libs/libwebsocket++/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libwebsockets/recipe.toml b/recipes/wip/libs/libwebsockets/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libwebsockets/recipe.toml rename to recipes/wip/libs/libwebsockets/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libwmf/recipe.toml b/recipes/wip/libs/libwmf/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libwmf/recipe.toml rename to recipes/wip/libs/libwmf/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libwpd/recipe.toml b/recipes/wip/libs/libwpd/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libwpd/recipe.toml rename to recipes/wip/libs/libwpd/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libx11/recipe.toml b/recipes/wip/libs/libx11/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libx11/recipe.toml rename to recipes/wip/libs/libx11/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxau/recipe.toml b/recipes/wip/libs/libxau/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxau/recipe.toml rename to recipes/wip/libs/libxau/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxaw/recipe.toml b/recipes/wip/libs/libxaw/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxaw/recipe.toml rename to recipes/wip/libs/libxaw/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxcb/recipe.toml b/recipes/wip/libs/libxcb/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxcb/recipe.toml rename to recipes/wip/libs/libxcb/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxcomposite/recipe.toml b/recipes/wip/libs/libxcomposite/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxcomposite/recipe.toml rename to recipes/wip/libs/libxcomposite/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxcursor/recipe.toml b/recipes/wip/libs/libxcursor/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxcursor/recipe.toml rename to recipes/wip/libs/libxcursor/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxdamage/recipe.toml b/recipes/wip/libs/libxdamage/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxdamage/recipe.toml rename to recipes/wip/libs/libxdamage/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxdmcp/recipe.toml b/recipes/wip/libs/libxdmcp/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxdmcp/recipe.toml rename to recipes/wip/libs/libxdmcp/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxext/recipe.toml b/recipes/wip/libs/libxext/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxext/recipe.toml rename to recipes/wip/libs/libxext/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxfixes/recipe.toml b/recipes/wip/libs/libxfixes/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxfixes/recipe.toml rename to recipes/wip/libs/libxfixes/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxft/recipe.toml b/recipes/wip/libs/libxft/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxft/recipe.toml rename to recipes/wip/libs/libxft/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxi/recipe.toml b/recipes/wip/libs/libxi/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxi/recipe.toml rename to recipes/wip/libs/libxi/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxinerama/recipe.toml b/recipes/wip/libs/libxinerama/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxinerama/recipe.toml rename to recipes/wip/libs/libxinerama/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxkbcommon/recipe.toml b/recipes/wip/libs/libxkbcommon/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxkbcommon/recipe.toml rename to recipes/wip/libs/libxkbcommon/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxkbfile/recipe.toml b/recipes/wip/libs/libxkbfile/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxkbfile/recipe.toml rename to recipes/wip/libs/libxkbfile/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxmu/recipe.toml b/recipes/wip/libs/libxmu/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxmu/recipe.toml rename to recipes/wip/libs/libxmu/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxpm/recipe.toml b/recipes/wip/libs/libxpm/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxpm/recipe.toml rename to recipes/wip/libs/libxpm/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxrandr/recipe.toml b/recipes/wip/libs/libxrandr/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxrandr/recipe.toml rename to recipes/wip/libs/libxrandr/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxrender/recipe.toml b/recipes/wip/libs/libxrender/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxrender/recipe.toml rename to recipes/wip/libs/libxrender/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxres/recipe.toml b/recipes/wip/libs/libxres/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxres/recipe.toml rename to recipes/wip/libs/libxres/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxsimd/recipe.toml b/recipes/wip/libs/libxsimd/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxsimd/recipe.toml rename to recipes/wip/libs/libxsimd/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxslt/recipe.toml b/recipes/wip/libs/libxslt/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxslt/recipe.toml rename to recipes/wip/libs/libxslt/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxss/recipe.toml b/recipes/wip/libs/libxss/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxss/recipe.toml rename to recipes/wip/libs/libxss/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxtl/recipe.toml b/recipes/wip/libs/libxtl/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxtl/recipe.toml rename to recipes/wip/libs/libxtl/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxtrans/recipe.toml b/recipes/wip/libs/libxtrans/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxtrans/recipe.toml rename to recipes/wip/libs/libxtrans/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxtst/recipe.toml b/recipes/wip/libs/libxtst/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxtst/recipe.toml rename to recipes/wip/libs/libxtst/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxv/recipe.toml b/recipes/wip/libs/libxv/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxv/recipe.toml rename to recipes/wip/libs/libxv/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libxvmc/recipe.toml b/recipes/wip/libs/libxvmc/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libxvmc/recipe.toml rename to recipes/wip/libs/libxvmc/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libyaml/recipe.toml b/recipes/wip/libs/libyaml/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libyaml/recipe.toml rename to recipes/wip/libs/libyaml/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libzug/recipe.toml b/recipes/wip/libs/libzug/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libzug/recipe.toml rename to recipes/wip/libs/libzug/recipe.toml diff --git a/recipes/wip/libs/libvulkan/libzvbi/recipe.toml b/recipes/wip/libs/libzvbi/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/libzvbi/recipe.toml rename to recipes/wip/libs/libzvbi/recipe.toml diff --git a/recipes/wip/libs/openal/openblas/recipe.toml b/recipes/wip/libs/openblas/recipe.toml similarity index 100% rename from recipes/wip/libs/openal/openblas/recipe.toml rename to recipes/wip/libs/openblas/recipe.toml diff --git a/recipes/wip/libs/openal/opencv4/recipe.toml b/recipes/wip/libs/opencv4/recipe.toml similarity index 100% rename from recipes/wip/libs/openal/opencv4/recipe.toml rename to recipes/wip/libs/opencv4/recipe.toml diff --git a/recipes/wip/libs/openal/openjpeg/recipe.toml b/recipes/wip/libs/openjpeg/recipe.toml similarity index 100% rename from recipes/wip/libs/openal/openjpeg/recipe.toml rename to recipes/wip/libs/openjpeg/recipe.toml diff --git a/recipes/wip/libs/openal/opus/recipe.toml b/recipes/wip/libs/opus/recipe.toml similarity index 100% rename from recipes/wip/libs/openal/opus/recipe.toml rename to recipes/wip/libs/opus/recipe.toml diff --git a/recipes/wip/libs/openal/opusfile/recipe.toml b/recipes/wip/libs/opusfile/recipe.toml similarity index 100% rename from recipes/wip/libs/openal/opusfile/recipe.toml rename to recipes/wip/libs/opusfile/recipe.toml diff --git a/recipes/wip/libs/openal/raylib/recipe.toml b/recipes/wip/libs/raylib/recipe.toml similarity index 100% rename from recipes/wip/libs/openal/raylib/recipe.toml rename to recipes/wip/libs/raylib/recipe.toml diff --git a/recipes/wip/libs/openal/rdflib/recipe.toml b/recipes/wip/libs/rdflib/recipe.toml similarity index 100% rename from recipes/wip/libs/openal/rdflib/recipe.toml rename to recipes/wip/libs/rdflib/recipe.toml From a4e22c6b8f2328a78ea00cc9f4d0152ab8a0126b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 23 Feb 2024 19:34:13 +0000 Subject: [PATCH 1595/3180] Rename and move the "ssh" recipe --- recipes/{tools/ssh => net/openssh}/recipe.sh | 0 recipes/{tools/ssh => net/openssh}/redox-ssh/recipe.toml | 0 recipes/{tools/ssh => net/openssh}/redox.patch | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename recipes/{tools/ssh => net/openssh}/recipe.sh (100%) rename recipes/{tools/ssh => net/openssh}/redox-ssh/recipe.toml (100%) rename recipes/{tools/ssh => net/openssh}/redox.patch (100%) diff --git a/recipes/tools/ssh/recipe.sh b/recipes/net/openssh/recipe.sh similarity index 100% rename from recipes/tools/ssh/recipe.sh rename to recipes/net/openssh/recipe.sh diff --git a/recipes/tools/ssh/redox-ssh/recipe.toml b/recipes/net/openssh/redox-ssh/recipe.toml similarity index 100% rename from recipes/tools/ssh/redox-ssh/recipe.toml rename to recipes/net/openssh/redox-ssh/recipe.toml diff --git a/recipes/tools/ssh/redox.patch b/recipes/net/openssh/redox.patch similarity index 100% rename from recipes/tools/ssh/redox.patch rename to recipes/net/openssh/redox.patch From 047d1a2a02f2398d208d3f16f92d8076bdf8f685 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 24 Feb 2024 02:38:50 +0000 Subject: [PATCH 1596/3180] Fix the ncurses location in some recipes --- recipes/wip/db/mariadb-lts/recipe.toml | 1 + recipes/wip/db/mysql-server/recipe.toml | 3 +++ recipes/wip/dev/defold-engine/recipe.toml | 3 +++ recipes/wip/tools/cpu-x/recipe.toml | 3 +++ recipes/wip/tools/glsl-viewer/recipe.toml | 3 +++ 5 files changed, 13 insertions(+) diff --git a/recipes/wip/db/mariadb-lts/recipe.toml b/recipes/wip/db/mariadb-lts/recipe.toml index f4b1b623..3e4dffa6 100644 --- a/recipes/wip/db/mariadb-lts/recipe.toml +++ b/recipes/wip/db/mariadb-lts/recipe.toml @@ -16,6 +16,7 @@ dependencies = [ "libaio", ] script = """ +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release diff --git a/recipes/wip/db/mysql-server/recipe.toml b/recipes/wip/db/mysql-server/recipe.toml index e5b009da..02c84e73 100644 --- a/recipes/wip/db/mysql-server/recipe.toml +++ b/recipes/wip/db/mysql-server/recipe.toml @@ -8,3 +8,6 @@ dependencies = [ "ncurses", "openssl1", ] +script = """ +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" +""" diff --git a/recipes/wip/dev/defold-engine/recipe.toml b/recipes/wip/dev/defold-engine/recipe.toml index 50de85bb..13d89a56 100644 --- a/recipes/wip/dev/defold-engine/recipe.toml +++ b/recipes/wip/dev/defold-engine/recipe.toml @@ -17,3 +17,6 @@ dependencies = [ "openal", "ncurses", ] +script = """ +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" +""" diff --git a/recipes/wip/tools/cpu-x/recipe.toml b/recipes/wip/tools/cpu-x/recipe.toml index b2912aed..cb21b5c2 100644 --- a/recipes/wip/tools/cpu-x/recipe.toml +++ b/recipes/wip/tools/cpu-x/recipe.toml @@ -13,3 +13,6 @@ dependencies = [ "libcpuid", "pciutils", ] +script = """ +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" +""" diff --git a/recipes/wip/tools/glsl-viewer/recipe.toml b/recipes/wip/tools/glsl-viewer/recipe.toml index 93c7c6a2..f5d95190 100644 --- a/recipes/wip/tools/glsl-viewer/recipe.toml +++ b/recipes/wip/tools/glsl-viewer/recipe.toml @@ -12,3 +12,6 @@ dependencies = [ "ffmpeg6", "glfw", ] +script = """ +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" +""" From 7a2dd1ae0e2bd77102d32a59fea6f14baf5b8806 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 24 Feb 2024 02:45:22 +0000 Subject: [PATCH 1597/3180] add a recipe --- recipes/wip/video/snapshot/recipe.toml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 recipes/wip/video/snapshot/recipe.toml diff --git a/recipes/wip/video/snapshot/recipe.toml b/recipes/wip/video/snapshot/recipe.toml new file mode 100644 index 00000000..6c5a1db4 --- /dev/null +++ b/recipes/wip/video/snapshot/recipe.toml @@ -0,0 +1,11 @@ +#TODO maybe wrong template, see https://gitlab.gnome.org/GNOME/snapshot +[source] +tar = "https://download.gnome.org/sources/snapshot/45/snapshot-45.2.tar.xz" +[build] +template = "cargo" +dependencies = [ + "glib", + "gtk4", + "libadwaita", + "gstreamer", +] From 00407cd0b5bfeadadcd3df0906e20adf61c9d1e3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 25 Feb 2024 20:34:33 +0000 Subject: [PATCH 1598/3180] add recipes --- recipes/wip/dev/uv/recipe.toml | 8 ++++++++ recipes/wip/games/sshattrick/recipe.toml | 5 +++++ recipes/wip/net/attractorr/recipe.toml | 8 ++++++++ 3 files changed, 21 insertions(+) create mode 100644 recipes/wip/dev/uv/recipe.toml create mode 100644 recipes/wip/games/sshattrick/recipe.toml create mode 100644 recipes/wip/net/attractorr/recipe.toml diff --git a/recipes/wip/dev/uv/recipe.toml b/recipes/wip/dev/uv/recipe.toml new file mode 100644 index 00000000..f49fd26a --- /dev/null +++ b/recipes/wip/dev/uv/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/astral-sh/uv" +[build] +template = "custom" +script = """ +cookbook_cargo_packages uv +""" diff --git a/recipes/wip/games/sshattrick/recipe.toml b/recipes/wip/games/sshattrick/recipe.toml new file mode 100644 index 00000000..3de4f77c --- /dev/null +++ b/recipes/wip/games/sshattrick/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ricott1/sshattrick" +[build] +template = "cargo" diff --git a/recipes/wip/net/attractorr/recipe.toml b/recipes/wip/net/attractorr/recipe.toml new file mode 100644 index 00000000..0906ec07 --- /dev/null +++ b/recipes/wip/net/attractorr/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/rnestler/attractorr" +[build] +template = "cargo" +dependencies = [ + "openssl1", +] From 85c9962e16f7ef0def6112c8563dc218f37a32af Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 25 Feb 2024 20:36:46 +0000 Subject: [PATCH 1599/3180] add a recipe --- recipes/wip/sound/audeye/recipe.toml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 recipes/wip/sound/audeye/recipe.toml diff --git a/recipes/wip/sound/audeye/recipe.toml b/recipes/wip/sound/audeye/recipe.toml new file mode 100644 index 00000000..20870cef --- /dev/null +++ b/recipes/wip/sound/audeye/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/maxmarsc/audeye" +[build] +template = "cargo" +dependencies = [ + "libsndfile", +] From 5688d5e7f3a4f6928a0e9bfe46c040d53b863867 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 26 Feb 2024 00:07:27 +0000 Subject: [PATCH 1600/3180] add a recipe dependency --- recipes/wip/dev/uv/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/wip/dev/uv/recipe.toml b/recipes/wip/dev/uv/recipe.toml index f49fd26a..e63c82aa 100644 --- a/recipes/wip/dev/uv/recipe.toml +++ b/recipes/wip/dev/uv/recipe.toml @@ -3,6 +3,9 @@ git = "https://github.com/astral-sh/uv" [build] template = "custom" +dependencies = [ + "openssl1", +] script = """ cookbook_cargo_packages uv """ From b5ecb61003a462604d879d4471a2cc2a76be8969 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 26 Feb 2024 00:44:45 +0000 Subject: [PATCH 1601/3180] update TODOs --- recipes/wip/dev/uv/recipe.toml | 2 +- recipes/wip/net/attractorr/recipe.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/wip/dev/uv/recipe.toml b/recipes/wip/dev/uv/recipe.toml index e63c82aa..92f9eb1d 100644 --- a/recipes/wip/dev/uv/recipe.toml +++ b/recipes/wip/dev/uv/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO pubgrub crate error [source] git = "https://github.com/astral-sh/uv" [build] diff --git a/recipes/wip/net/attractorr/recipe.toml b/recipes/wip/net/attractorr/recipe.toml index 0906ec07..89201545 100644 --- a/recipes/wip/net/attractorr/recipe.toml +++ b/recipes/wip/net/attractorr/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/rnestler/attractorr" [build] From 0f0ebd8842ee7b8ce3b5aa2631fa0007cbfb2be2 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 26 Feb 2024 16:53:22 +0000 Subject: [PATCH 1602/3180] add a recipe --- recipes/wip/sound/audacity/recipe.toml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 recipes/wip/sound/audacity/recipe.toml diff --git a/recipes/wip/sound/audacity/recipe.toml b/recipes/wip/sound/audacity/recipe.toml new file mode 100644 index 00000000..399c75a0 --- /dev/null +++ b/recipes/wip/sound/audacity/recipe.toml @@ -0,0 +1,11 @@ +#TODO missing script for CMake, see https://github.com/audacity/audacity/blob/master/BUILDING.md +#TODO use the GTK2 or wxWidgets frontend? +#TODO probably need audio server patching +[source] +tar = "https://github.com/audacity/audacity/releases/download/Audacity-3.4.2/audacity-sources-3.4.2.tar.gz" +[build] +template = "custom" +dependencies = [ + "gtk2", + "libuuid", +] From cad6d8f852c03f253d682a8309e4f47acbd9f7af Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 26 Feb 2024 19:42:16 +0000 Subject: [PATCH 1603/3180] Add the Celestia recipe --- recipes/wip/science/celestia/recipe.toml | 35 ++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 recipes/wip/science/celestia/recipe.toml diff --git a/recipes/wip/science/celestia/recipe.toml b/recipes/wip/science/celestia/recipe.toml new file mode 100644 index 00000000..28b7436d --- /dev/null +++ b/recipes/wip/science/celestia/recipe.toml @@ -0,0 +1,35 @@ +#TODO probably wrong script, see https://github.com/CelestiaProject/Celestia/blob/master/INSTALL.md#celestia-install-instructions-for-unix +#TODO finish the recipes of some dependencies +#TODO the SDL2 frontend is limited, Qt6 or Qt5 is preferred +[source] +tar = "https://github.com/CelestiaProject/Celestia/releases/download/1.6.4/celestia-1.6.4.tar.xz" +[build] +template = "custom" +dependencies = [ + "mesa", + "mesa-glu", + "sdl2", + "libepoxy", + "libeigen", + "libfmt", + "freetype2", + "libpng", + "libjpeg", + "luajit", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On + -DENABLE_INTERFACE=ON +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" From b8eaf498ba9d2ee97468120ddd92908059f4cf7f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 26 Feb 2024 20:03:31 +0000 Subject: [PATCH 1604/3180] Add the Celestia data --- recipes/wip/science/celestia-data/recipe.toml | 5 +++++ recipes/wip/science/celestia/recipe.toml | 1 + 2 files changed, 6 insertions(+) create mode 100644 recipes/wip/science/celestia-data/recipe.toml diff --git a/recipes/wip/science/celestia-data/recipe.toml b/recipes/wip/science/celestia-data/recipe.toml new file mode 100644 index 00000000..a3175e28 --- /dev/null +++ b/recipes/wip/science/celestia-data/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://github.com/CelestiaProject/Celestia/blob/master/INSTALL.md#installing-the-content +[source] +git = "https://github.com/CelestiaProject/CelestiaContent" +[build] +template = "custom" diff --git a/recipes/wip/science/celestia/recipe.toml b/recipes/wip/science/celestia/recipe.toml index 28b7436d..f4793712 100644 --- a/recipes/wip/science/celestia/recipe.toml +++ b/recipes/wip/science/celestia/recipe.toml @@ -29,6 +29,7 @@ COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On -DENABLE_INTERFACE=ON + -DENABLE_SDL=On "${COOKBOOK_SOURCE}" ) cookbook_configure From a5834227a2ed91330cacb719c7bc58c8a55485e5 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 26 Feb 2024 23:46:51 +0000 Subject: [PATCH 1605/3180] add recipes --- recipes/wip/libs/libgdal/recipe.toml | 5 +++++ recipes/wip/science/openspace/recipe.toml | 10 ++++++++++ recipes/wip/tools/dead-ringer/recipe.toml | 6 ++++++ 3 files changed, 21 insertions(+) create mode 100644 recipes/wip/libs/libgdal/recipe.toml create mode 100644 recipes/wip/science/openspace/recipe.toml create mode 100644 recipes/wip/tools/dead-ringer/recipe.toml diff --git a/recipes/wip/libs/libgdal/recipe.toml b/recipes/wip/libs/libgdal/recipe.toml new file mode 100644 index 00000000..6980efe2 --- /dev/null +++ b/recipes/wip/libs/libgdal/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for CMake, see https://gdal.org/development/building_from_source.html +[source] +tar = "https://github.com/OSGeo/gdal/releases/download/v3.8.4/gdal-3.8.4.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/science/openspace/recipe.toml b/recipes/wip/science/openspace/recipe.toml new file mode 100644 index 00000000..092c47d2 --- /dev/null +++ b/recipes/wip/science/openspace/recipe.toml @@ -0,0 +1,10 @@ +#TODO missing script for CMake, see https://docs.openspaceproject.com/en/latest/dev/compiling/index.html# +[source] +git = "https://github.com/OpenSpace/OpenSpace" +rev = "b3681167a3b95d49ac7aa7d06b07cbd88c687e9a" +[build] +template = "custom" +dependencies = [ + "qt6-base", + "libgdal", +] diff --git a/recipes/wip/tools/dead-ringer/recipe.toml b/recipes/wip/tools/dead-ringer/recipe.toml new file mode 100644 index 00000000..da77c3c5 --- /dev/null +++ b/recipes/wip/tools/dead-ringer/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ztroop/dead-ringer" +rev = "c35398134a1bc3c44c1ddf24749b4a7643306870" +[build] +template = "cargo" From 51af072adeab18392a663f7b774ab08a32584b58 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 27 Feb 2024 21:31:38 +0000 Subject: [PATCH 1606/3180] add recipes --- recipes/wip/dev/kicad/recipe.toml | 18 ++++++++++++++++++ recipes/wip/dev/ngspice/recipe.toml | 15 +++++++++++++++ recipes/wip/dev/opencascade/recipe.toml | 11 +++++++++++ recipes/wip/dev/tcl/recipe.toml | 9 +++++++++ recipes/wip/dev/tk/recipe.toml | 9 +++++++++ recipes/wip/libs/wxpython/recipe.toml | 8 ++++++++ recipes/wip/tools/toipe/recipe.toml | 5 +++++ 7 files changed, 75 insertions(+) create mode 100644 recipes/wip/dev/kicad/recipe.toml create mode 100644 recipes/wip/dev/ngspice/recipe.toml create mode 100644 recipes/wip/dev/opencascade/recipe.toml create mode 100644 recipes/wip/dev/tcl/recipe.toml create mode 100644 recipes/wip/dev/tk/recipe.toml create mode 100644 recipes/wip/libs/wxpython/recipe.toml create mode 100644 recipes/wip/tools/toipe/recipe.toml diff --git a/recipes/wip/dev/kicad/recipe.toml b/recipes/wip/dev/kicad/recipe.toml new file mode 100644 index 00000000..e06a2bdc --- /dev/null +++ b/recipes/wip/dev/kicad/recipe.toml @@ -0,0 +1,18 @@ +#TODO missing script for CMake, see https://dev-docs.kicad.org/en/build/linux/ +#TODO maybe missing dependencies, see https://dev-docs.kicad.org/en/build/getting-started/ +[source] +git = "https://gitlab.com/kicad/code/kicad" +rev = "942661fc10e172febf9d9990de2471d4b1020618" +[build] +template = "custom" +dependencies = [ + "wxwidgets-gtk3", + "cairo", + "boost", + "glew", + "zlib", + "freeglut", + "glm", + "curl", + "ngspice", +] diff --git a/recipes/wip/dev/ngspice/recipe.toml b/recipes/wip/dev/ngspice/recipe.toml new file mode 100644 index 00000000..d8e6f1ab --- /dev/null +++ b/recipes/wip/dev/ngspice/recipe.toml @@ -0,0 +1,15 @@ +#TODO maybe wrong script, see https://sourceforge.net/p/ngspice/ngspice/ci/master/tree/INSTALL +#TODO maybe missing dependencies +[source] +tar = "https://sourceforge.net/projects/ngspice/files/ng-spice-rework/42/ngspice-42.tar.gz/download" +[build] +template = "custom" +script = """ +cd release +COOKBOOK_CONFIGURE_FLAGS+=( + --with-x + --with-readline=yes + --disable-debug +) +cookbook_configure +""" diff --git a/recipes/wip/dev/opencascade/recipe.toml b/recipes/wip/dev/opencascade/recipe.toml new file mode 100644 index 00000000..cc45ac6a --- /dev/null +++ b/recipes/wip/dev/opencascade/recipe.toml @@ -0,0 +1,11 @@ +#TODO missing script for CMake, see https://dev.opencascade.org/doc/overview/html/build_upgrade__building_occt.html +#TODO missing dependencies, see https://dev.opencascade.org/doc/overview/html/build_upgrade_building_3rdparty.html#build_3rdparty_linux +[source] +tar = "https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/V7_8_0.tar.gz" +[build] +template = "custom" +dependencies = [ + "freetype2", + "tcl", + "tk", +] diff --git a/recipes/wip/dev/tcl/recipe.toml b/recipes/wip/dev/tcl/recipe.toml new file mode 100644 index 00000000..ea2c70a2 --- /dev/null +++ b/recipes/wip/dev/tcl/recipe.toml @@ -0,0 +1,9 @@ +#TODO maybe wrong template, see https://www.tcl.tk/doc/howto/compile.html#unix +[source] +tar = "http://prdownloads.sourceforge.net/tcl/tcl8.6.13-src.tar.gz" +[build] +template = "custom" +script = """ +cd unix +cookbook_configure +""" \ No newline at end of file diff --git a/recipes/wip/dev/tk/recipe.toml b/recipes/wip/dev/tk/recipe.toml new file mode 100644 index 00000000..a52bfa6f --- /dev/null +++ b/recipes/wip/dev/tk/recipe.toml @@ -0,0 +1,9 @@ +#TODO maybe wrong template, see https://www.tcl.tk/doc/howto/compile.html#unix +[source] +tar = "http://prdownloads.sourceforge.net/tcl/tk8.6.13-src.tar.gz" +[build] +template = "custom" +script = """ +cd unix +cookbook_configure +""" diff --git a/recipes/wip/libs/wxpython/recipe.toml b/recipes/wip/libs/wxpython/recipe.toml new file mode 100644 index 00000000..d75808cb --- /dev/null +++ b/recipes/wip/libs/wxpython/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for Python, see https://wiki.wxpython.org/How%20to%20install%20wxPython#Installing_wxPython_from_source +[source] +tar = "https://files.pythonhosted.org/packages/aa/64/d749e767a8ce7bdc3d533334e03bb1106fc4e4803d16f931fada9007ee13/wxPython-4.2.1.tar.gz" +[build] +template = "custom" +dependencies = [ + "wxwidgets-gtk3", +] diff --git a/recipes/wip/tools/toipe/recipe.toml b/recipes/wip/tools/toipe/recipe.toml new file mode 100644 index 00000000..5ee874ad --- /dev/null +++ b/recipes/wip/tools/toipe/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Samyak2/toipe" +[build] +template = "cargo" From db1d4664bdfc8f65543e2dff92a1f19c073ec1a7 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Wed, 28 Feb 2024 20:51:15 +0100 Subject: [PATCH 1607/3180] Find pcid config files in driver category subdirectories --- recipes/core/drivers/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/core/drivers/recipe.toml b/recipes/core/drivers/recipe.toml index cccd2729..b40d8666 100644 --- a/recipes/core/drivers/recipe.toml +++ b/recipes/core/drivers/recipe.toml @@ -53,7 +53,7 @@ mkdir -pv "${COOKBOOK_STAGE}/etc/pcid" cp -v "${COOKBOOK_SOURCE}/initfs.toml" "${COOKBOOK_STAGE}/etc/pcid/initfs.toml" mkdir -pv "${COOKBOOK_STAGE}/etc/pcid.d" -${FIND} "${COOKBOOK_SOURCE}" -maxdepth 2 -type f -name 'config.toml' | while read conf +${FIND} "${COOKBOOK_SOURCE}" -maxdepth 3 -type f -name 'config.toml' | while read conf do driver="$(basename "$(dirname "$conf")")" cp -v "$conf" "${COOKBOOK_STAGE}/etc/pcid.d/$driver.toml" From 0f2eccb10bb338239c57e9e3f17a0893c1a38c01 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 28 Feb 2024 20:55:20 +0000 Subject: [PATCH 1608/3180] add recipes --- recipes/wip/emulators/trapezoid/recipe.toml | 5 +++++ recipes/wip/net/simple-http-server/recipe.toml | 5 +++++ recipes/wip/sound/neothesia/recipe.toml | 8 ++++++++ recipes/wip/tools/rusty-psn-cli/recipe.toml | 11 +++++++++++ recipes/wip/tools/rusty-psn-gui/recipe.toml | 8 ++++++++ 5 files changed, 37 insertions(+) create mode 100644 recipes/wip/emulators/trapezoid/recipe.toml create mode 100644 recipes/wip/net/simple-http-server/recipe.toml create mode 100644 recipes/wip/sound/neothesia/recipe.toml create mode 100644 recipes/wip/tools/rusty-psn-cli/recipe.toml create mode 100644 recipes/wip/tools/rusty-psn-gui/recipe.toml diff --git a/recipes/wip/emulators/trapezoid/recipe.toml b/recipes/wip/emulators/trapezoid/recipe.toml new file mode 100644 index 00000000..1977a640 --- /dev/null +++ b/recipes/wip/emulators/trapezoid/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Amjad50/Trapezoid" +[build] +template = "cargo" diff --git a/recipes/wip/net/simple-http-server/recipe.toml b/recipes/wip/net/simple-http-server/recipe.toml new file mode 100644 index 00000000..f8a88573 --- /dev/null +++ b/recipes/wip/net/simple-http-server/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/TheWaWaR/simple-http-server" +[build] +template = "cargo" diff --git a/recipes/wip/sound/neothesia/recipe.toml b/recipes/wip/sound/neothesia/recipe.toml new file mode 100644 index 00000000..ffe95121 --- /dev/null +++ b/recipes/wip/sound/neothesia/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/PolyMeilex/Neothesia" +[build] +template = "custom" +script = """ +cookbook_cargo_packages neothesia +""" diff --git a/recipes/wip/tools/rusty-psn-cli/recipe.toml b/recipes/wip/tools/rusty-psn-cli/recipe.toml new file mode 100644 index 00000000..558abe14 --- /dev/null +++ b/recipes/wip/tools/rusty-psn-cli/recipe.toml @@ -0,0 +1,11 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/RainbowCookie32/rusty-psn" +[build] +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +cookbook_cargo --features cli +""" diff --git a/recipes/wip/tools/rusty-psn-gui/recipe.toml b/recipes/wip/tools/rusty-psn-gui/recipe.toml new file mode 100644 index 00000000..8298b981 --- /dev/null +++ b/recipes/wip/tools/rusty-psn-gui/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/RainbowCookie32/rusty-psn" +[build] +template = "cargo" +dependencies = [ + "openssl1", +] From fdae16683c5fcdfbe2ba6977727c7a4230622b84 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 28 Feb 2024 21:37:08 +0000 Subject: [PATCH 1609/3180] add recipes --- recipes/wip/emulators/8086-emulator/recipe.toml | 5 +++++ recipes/wip/emulators/clementine/recipe.toml | 5 +++++ recipes/wip/emulators/martypc/recipe.toml | 9 +++++++++ recipes/wip/emulators/rboy/recipe.toml | 5 +++++ recipes/wip/emulators/rust-u2f/recipe.toml | 6 ++++++ recipes/wip/emulators/rustzx/recipe.toml | 11 +++++++++++ recipes/wip/emulators/rvemu/recipe.toml | 8 ++++++++ recipes/wip/emulators/scemu/recipe.toml | 5 +++++ 8 files changed, 54 insertions(+) create mode 100644 recipes/wip/emulators/8086-emulator/recipe.toml create mode 100644 recipes/wip/emulators/clementine/recipe.toml create mode 100644 recipes/wip/emulators/martypc/recipe.toml create mode 100644 recipes/wip/emulators/rboy/recipe.toml create mode 100644 recipes/wip/emulators/rust-u2f/recipe.toml create mode 100644 recipes/wip/emulators/rustzx/recipe.toml create mode 100644 recipes/wip/emulators/rvemu/recipe.toml create mode 100644 recipes/wip/emulators/scemu/recipe.toml diff --git a/recipes/wip/emulators/8086-emulator/recipe.toml b/recipes/wip/emulators/8086-emulator/recipe.toml new file mode 100644 index 00000000..09d02c03 --- /dev/null +++ b/recipes/wip/emulators/8086-emulator/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/YJDoc2/8086-Emulator" +[build] +template = "cargo" diff --git a/recipes/wip/emulators/clementine/recipe.toml b/recipes/wip/emulators/clementine/recipe.toml new file mode 100644 index 00000000..acc805bd --- /dev/null +++ b/recipes/wip/emulators/clementine/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/RIP-Comm/clementine" +[build] +template = "cargo" diff --git a/recipes/wip/emulators/martypc/recipe.toml b/recipes/wip/emulators/martypc/recipe.toml new file mode 100644 index 00000000..50afde34 --- /dev/null +++ b/recipes/wip/emulators/martypc/recipe.toml @@ -0,0 +1,9 @@ +#TODO maybe wrong script, see https://github.com/dbalsom/martypc/blob/version_0_2_0/BUILDING.md#building-for-linux +[source] +git = "https://github.com/dbalsom/martypc" +[build] +template = "custom" +script = """ +cd install +cookbook_cargo +""" diff --git a/recipes/wip/emulators/rboy/recipe.toml b/recipes/wip/emulators/rboy/recipe.toml new file mode 100644 index 00000000..bbff10c7 --- /dev/null +++ b/recipes/wip/emulators/rboy/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/mvdnes/rboy" +[build] +template = "cargo" diff --git a/recipes/wip/emulators/rust-u2f/recipe.toml b/recipes/wip/emulators/rust-u2f/recipe.toml new file mode 100644 index 00000000..547b23ff --- /dev/null +++ b/recipes/wip/emulators/rust-u2f/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for GNU Make, see https://github.com/danstiner/rust-u2f#building +#TODO missing service for Redox +[source] +git = "https://github.com/danstiner/rust-u2f" +[build] +template = "custom" diff --git a/recipes/wip/emulators/rustzx/recipe.toml b/recipes/wip/emulators/rustzx/recipe.toml new file mode 100644 index 00000000..a2986190 --- /dev/null +++ b/recipes/wip/emulators/rustzx/recipe.toml @@ -0,0 +1,11 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/rustzx/rustzx" +[build] +template = "custom" +dependencies = [ + "sdl2", +] +script = """ +cookbook_cargo_packages rustzx +""" diff --git a/recipes/wip/emulators/rvemu/recipe.toml b/recipes/wip/emulators/rvemu/recipe.toml new file mode 100644 index 00000000..d616ce45 --- /dev/null +++ b/recipes/wip/emulators/rvemu/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/d0iasm/rvemu" +[build] +template = "custom" +script = """ +cookbook_cargo_packages rvemu-cli +""" diff --git a/recipes/wip/emulators/scemu/recipe.toml b/recipes/wip/emulators/scemu/recipe.toml new file mode 100644 index 00000000..5c358699 --- /dev/null +++ b/recipes/wip/emulators/scemu/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/sha0coder/scemu" +[build] +template = "cargo" From def586a5a18b54f75c693f248cdf220db5dcf7b3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 29 Feb 2024 00:31:17 +0000 Subject: [PATCH 1610/3180] add recipes --- recipes/wip/emulators/meru/recipe.toml | 8 ++++++++ recipes/wip/emulators/mipsy/recipe.toml | 8 ++++++++ recipes/wip/emulators/rustboy-advance-ng/recipe.toml | 12 ++++++++++++ recipes/wip/emulators/wie/recipe.toml | 8 ++++++++ 4 files changed, 36 insertions(+) create mode 100644 recipes/wip/emulators/meru/recipe.toml create mode 100644 recipes/wip/emulators/mipsy/recipe.toml create mode 100644 recipes/wip/emulators/rustboy-advance-ng/recipe.toml create mode 100644 recipes/wip/emulators/wie/recipe.toml diff --git a/recipes/wip/emulators/meru/recipe.toml b/recipes/wip/emulators/meru/recipe.toml new file mode 100644 index 00000000..c92eff6a --- /dev/null +++ b/recipes/wip/emulators/meru/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/tanakh/meru" +[build] +template = "custom" +script = """ +cookbook_cargo_packages meru +""" diff --git a/recipes/wip/emulators/mipsy/recipe.toml b/recipes/wip/emulators/mipsy/recipe.toml new file mode 100644 index 00000000..17d84101 --- /dev/null +++ b/recipes/wip/emulators/mipsy/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/insou22/mipsy" +[build] +template = "custom" +script = """ +cookbook_cargo_packages mipsy +""" diff --git a/recipes/wip/emulators/rustboy-advance-ng/recipe.toml b/recipes/wip/emulators/rustboy-advance-ng/recipe.toml new file mode 100644 index 00000000..93b94fb3 --- /dev/null +++ b/recipes/wip/emulators/rustboy-advance-ng/recipe.toml @@ -0,0 +1,12 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/michelhe/rustboyadvance-ng" +[build] +template = "custom" +dependencies = [ + "sdl2", + "sdl2-image", +] +script = """ +cookbook_cargo_packages rustboyadvance-sdl2 +""" diff --git a/recipes/wip/emulators/wie/recipe.toml b/recipes/wip/emulators/wie/recipe.toml new file mode 100644 index 00000000..665fc5a2 --- /dev/null +++ b/recipes/wip/emulators/wie/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/dlunch/wie" +[build] +template = "custom" +script = """ +cookbook_cargo_packages wie_cli +""" From 387abb7d75c1f9eb2f21ff7d952667f7c467f91a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 1 Mar 2024 00:11:53 +0000 Subject: [PATCH 1611/3180] add recipes --- recipes/wip/emulators/gopher64/recipe.toml | 8 ++++++++ recipes/wip/emulators/jgenesis/recipe.toml | 11 +++++++++++ recipes/wip/emulators/rpsx/recipe.toml | 8 ++++++++ recipes/wip/net/moonfire-nvr-server/recipe.toml | 12 ++++++++++++ recipes/wip/net/vsd/recipe.toml | 11 +++++++++++ recipes/wip/video/gyroflow/recipe.toml | 11 +++++++++++ recipes/wip/video/smoothie-rs/recipe.toml | 5 +++++ recipes/wip/video/timelens/recipe.toml | 8 ++++++++ recipes/wip/video/vidmerger/recipe.toml | 8 ++++++++ 9 files changed, 82 insertions(+) create mode 100644 recipes/wip/emulators/gopher64/recipe.toml create mode 100644 recipes/wip/emulators/jgenesis/recipe.toml create mode 100644 recipes/wip/emulators/rpsx/recipe.toml create mode 100644 recipes/wip/net/moonfire-nvr-server/recipe.toml create mode 100644 recipes/wip/net/vsd/recipe.toml create mode 100644 recipes/wip/video/gyroflow/recipe.toml create mode 100644 recipes/wip/video/smoothie-rs/recipe.toml create mode 100644 recipes/wip/video/timelens/recipe.toml create mode 100644 recipes/wip/video/vidmerger/recipe.toml diff --git a/recipes/wip/emulators/gopher64/recipe.toml b/recipes/wip/emulators/gopher64/recipe.toml new file mode 100644 index 00000000..864f953d --- /dev/null +++ b/recipes/wip/emulators/gopher64/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/gopher64/gopher64" +[build] +template = "cargo" +dependencies = [ + "sdl2", +] diff --git a/recipes/wip/emulators/jgenesis/recipe.toml b/recipes/wip/emulators/jgenesis/recipe.toml new file mode 100644 index 00000000..e1e132d8 --- /dev/null +++ b/recipes/wip/emulators/jgenesis/recipe.toml @@ -0,0 +1,11 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/jsgroth/jgenesis" +[build] +template = "custom" +dependencies = [ + "sdl2", +] +script = """ +cookbook_cargo_packages jgenesis-cli +""" diff --git a/recipes/wip/emulators/rpsx/recipe.toml b/recipes/wip/emulators/rpsx/recipe.toml new file mode 100644 index 00000000..289d7a83 --- /dev/null +++ b/recipes/wip/emulators/rpsx/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/KieronJ/rpsx" +[build] +template = "cargo" +dependencies = [ + "sdl2", +] diff --git a/recipes/wip/net/moonfire-nvr-server/recipe.toml b/recipes/wip/net/moonfire-nvr-server/recipe.toml new file mode 100644 index 00000000..a289bbe0 --- /dev/null +++ b/recipes/wip/net/moonfire-nvr-server/recipe.toml @@ -0,0 +1,12 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/scottlamb/moonfire-nvr" +[build] +template = "custom" +dependencies = [ + "sqlite3", +] +script = """ +cd server +cookbook_cargo +""" diff --git a/recipes/wip/net/vsd/recipe.toml b/recipes/wip/net/vsd/recipe.toml new file mode 100644 index 00000000..5252a5d1 --- /dev/null +++ b/recipes/wip/net/vsd/recipe.toml @@ -0,0 +1,11 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/clitic/vsd" +[build] +template = "custom" +dependencies = [ + "ffmpeg6", +] +script = """ +cookbook_cargo_packages vsd +""" diff --git a/recipes/wip/video/gyroflow/recipe.toml b/recipes/wip/video/gyroflow/recipe.toml new file mode 100644 index 00000000..0c3211dd --- /dev/null +++ b/recipes/wip/video/gyroflow/recipe.toml @@ -0,0 +1,11 @@ +#TODO maybe missing dependencies, see https://github.com/gyroflow/gyroflow/blob/master/_scripts/linux.just +[source] +git = "https://github.com/gyroflow/gyroflow" +[build] +template = "cargo" +dependencies = [ + "fontconfig", + "freetype2", + "ffmpeg6", + "qt6-base", +] diff --git a/recipes/wip/video/smoothie-rs/recipe.toml b/recipes/wip/video/smoothie-rs/recipe.toml new file mode 100644 index 00000000..4e0027b0 --- /dev/null +++ b/recipes/wip/video/smoothie-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/couleur-tweak-tips/smoothie-rs" +[build] +template = "cargo" diff --git a/recipes/wip/video/timelens/recipe.toml b/recipes/wip/video/timelens/recipe.toml new file mode 100644 index 00000000..c4a3ccd4 --- /dev/null +++ b/recipes/wip/video/timelens/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/timelens/timelens" +[build] +template = "cargo" +dependencies = [ + "gstreamer", +] diff --git a/recipes/wip/video/vidmerger/recipe.toml b/recipes/wip/video/vidmerger/recipe.toml new file mode 100644 index 00000000..47fd9ce2 --- /dev/null +++ b/recipes/wip/video/vidmerger/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/tgotwig/vidmerger" +[build] +template = "cargo" +dependencies = [ + "ffmpeg6", +] From 5047c6cfc523ad05ada4b6bab36ae94962c8894a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 1 Mar 2024 01:05:47 +0000 Subject: [PATCH 1612/3180] add recipes --- recipes/wip/graphics/reve/recipe.toml | 8 ++++++++ recipes/wip/libs/libzimg/recipe.toml | 10 ++++++++++ recipes/wip/sound/soundboard/recipe.toml | 8 ++++++++ recipes/wip/video/av1an/recipe.toml | 11 +++++++++++ recipes/wip/video/vapoursynth/recipe.toml | 13 +++++++++++++ 5 files changed, 50 insertions(+) create mode 100644 recipes/wip/graphics/reve/recipe.toml create mode 100644 recipes/wip/libs/libzimg/recipe.toml create mode 100644 recipes/wip/sound/soundboard/recipe.toml create mode 100644 recipes/wip/video/av1an/recipe.toml create mode 100644 recipes/wip/video/vapoursynth/recipe.toml diff --git a/recipes/wip/graphics/reve/recipe.toml b/recipes/wip/graphics/reve/recipe.toml new file mode 100644 index 00000000..4ca336cd --- /dev/null +++ b/recipes/wip/graphics/reve/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ONdraid/reve" +[build] +template = "custom" +script = """ +cookbook_cargo --features reve-cli reve-gui +""" diff --git a/recipes/wip/libs/libzimg/recipe.toml b/recipes/wip/libs/libzimg/recipe.toml new file mode 100644 index 00000000..32841a0b --- /dev/null +++ b/recipes/wip/libs/libzimg/recipe.toml @@ -0,0 +1,10 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/sekrit-twc/zimg" +rev = "e5b0de6bebbcbc66732ed5afaafef6b2c7dfef87" +[build] +template = "custom" +script = """ +./autogen.sh +cookbook_configure +""" diff --git a/recipes/wip/sound/soundboard/recipe.toml b/recipes/wip/sound/soundboard/recipe.toml new file mode 100644 index 00000000..9e12ec27 --- /dev/null +++ b/recipes/wip/sound/soundboard/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/gamebooster/soundboard" +[build] +template = "custom" +script = """ +cookbook_cargo --features full +""" diff --git a/recipes/wip/video/av1an/recipe.toml b/recipes/wip/video/av1an/recipe.toml new file mode 100644 index 00000000..2fca23e5 --- /dev/null +++ b/recipes/wip/video/av1an/recipe.toml @@ -0,0 +1,11 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/master-of-zen/Av1an" +[build] +template = "custom" +dependencies = [ + "ffmpeg6", +] +script = """ +cookbook_cargo_packages av1an +""" diff --git a/recipes/wip/video/vapoursynth/recipe.toml b/recipes/wip/video/vapoursynth/recipe.toml new file mode 100644 index 00000000..c10572db --- /dev/null +++ b/recipes/wip/video/vapoursynth/recipe.toml @@ -0,0 +1,13 @@ +#TODO maybe wrong script, see https://vapoursynth.com/doc/installation.html#linux-and-os-x-compilation +[source] +git = "https://github.com/vapoursynth/vapoursynth" +rev = "3157049549a0940359b37004aeeeebd8f1db665e" +[build] +template = "custom" +dependencies = [ + "library1", +] +script = """ +./autogen.sh +cookbook_configure +""" From d0249be5dd2444eb8832f34c89dd93b20d9a4ec3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 1 Mar 2024 02:39:55 +0000 Subject: [PATCH 1613/3180] add recipes --- recipes/wip/games/vong/recipe.toml | 5 +++++ recipes/wip/net/crab-dlna/recipe.toml | 5 +++++ recipes/wip/net/spis/recipe.toml | 8 ++++++++ recipes/wip/services/coppwr/recipe.toml | 9 +++++++++ recipes/wip/video/pipeline/recipe.toml | 16 ++++++++++++++++ 5 files changed, 43 insertions(+) create mode 100644 recipes/wip/games/vong/recipe.toml create mode 100644 recipes/wip/net/crab-dlna/recipe.toml create mode 100644 recipes/wip/net/spis/recipe.toml create mode 100644 recipes/wip/services/coppwr/recipe.toml create mode 100644 recipes/wip/video/pipeline/recipe.toml diff --git a/recipes/wip/games/vong/recipe.toml b/recipes/wip/games/vong/recipe.toml new file mode 100644 index 00000000..71b32405 --- /dev/null +++ b/recipes/wip/games/vong/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/simbleau/vong" +[build] +template = "cargo" diff --git a/recipes/wip/net/crab-dlna/recipe.toml b/recipes/wip/net/crab-dlna/recipe.toml new file mode 100644 index 00000000..d2997e5a --- /dev/null +++ b/recipes/wip/net/crab-dlna/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/gabrielmagno/crab-dlna" +[build] +template = "cargo" diff --git a/recipes/wip/net/spis/recipe.toml b/recipes/wip/net/spis/recipe.toml new file mode 100644 index 00000000..08072da6 --- /dev/null +++ b/recipes/wip/net/spis/recipe.toml @@ -0,0 +1,8 @@ +#TODO maybe incomplete script, see the Makefile on the repository +[source] +git = "https://github.com/gbbirkisson/spis" +[build] +template = "custom" +script = """ +cookbook_cargo_packages spis-server +""" diff --git a/recipes/wip/services/coppwr/recipe.toml b/recipes/wip/services/coppwr/recipe.toml new file mode 100644 index 00000000..332d267b --- /dev/null +++ b/recipes/wip/services/coppwr/recipe.toml @@ -0,0 +1,9 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/dimtpap/coppwr" +rev = "f4e664b860b89801ec60eee479802f00af3cfdfc" +[build] +template = "cargo" +dependencies = [ + "pipewire", +] diff --git a/recipes/wip/video/pipeline/recipe.toml b/recipes/wip/video/pipeline/recipe.toml new file mode 100644 index 00000000..cf41c34c --- /dev/null +++ b/recipes/wip/video/pipeline/recipe.toml @@ -0,0 +1,16 @@ +#TODO Not compiled or tested +[source] +tar = "https://gitlab.com/schmiddi-on-mobile/pipeline/-/package_files/114831818/download" +[build] +template = "custom" +dependencies = [ + "gtk4", + "glib", + "libadwaita", + "gdk-pixbuf", +] +script = """ +cookbook_cargo +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/glib-2.0/schemas +cp -rv "${COOKBOOK_SOURCE}"/data/de.schmidhuberj.tubefeeder.gschema.xml "${COOKBOOK_STAGE}"/usr/share/glib-2.0/schemas +""" From 264a0598f9072645ade8c63b18ea766e6040b22c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 1 Mar 2024 20:07:36 +0000 Subject: [PATCH 1614/3180] add recipes --- recipes/wip/graphics/derive-rs/recipe.toml | 5 +++++ recipes/wip/graphics/pixsort/recipe.toml | 5 +++++ recipes/wip/science/vidoxide/recipe.toml | 8 ++++++++ recipes/wip/tools/gptube-cli/recipe.toml | 5 +++++ recipes/wip/video/streamlib/recipe.toml | 5 +++++ recipes/wip/video/sub-batch/recipe.toml | 6 ++++++ recipes/wip/video/teres/recipe.toml | 8 ++++++++ recipes/wip/video/yt-chanvids/recipe.toml | 5 +++++ 8 files changed, 47 insertions(+) create mode 100644 recipes/wip/graphics/derive-rs/recipe.toml create mode 100644 recipes/wip/graphics/pixsort/recipe.toml create mode 100644 recipes/wip/science/vidoxide/recipe.toml create mode 100644 recipes/wip/tools/gptube-cli/recipe.toml create mode 100644 recipes/wip/video/streamlib/recipe.toml create mode 100644 recipes/wip/video/sub-batch/recipe.toml create mode 100644 recipes/wip/video/teres/recipe.toml create mode 100644 recipes/wip/video/yt-chanvids/recipe.toml diff --git a/recipes/wip/graphics/derive-rs/recipe.toml b/recipes/wip/graphics/derive-rs/recipe.toml new file mode 100644 index 00000000..354a2f68 --- /dev/null +++ b/recipes/wip/graphics/derive-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO very outdated crates +[source] +git = "https://github.com/erik/derive.rs" +[build] +template = "cargo" diff --git a/recipes/wip/graphics/pixsort/recipe.toml b/recipes/wip/graphics/pixsort/recipe.toml new file mode 100644 index 00000000..9ba2b060 --- /dev/null +++ b/recipes/wip/graphics/pixsort/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/1jz/pixsort" +[build] +template = "cargo" diff --git a/recipes/wip/science/vidoxide/recipe.toml b/recipes/wip/science/vidoxide/recipe.toml new file mode 100644 index 00000000..396e3923 --- /dev/null +++ b/recipes/wip/science/vidoxide/recipe.toml @@ -0,0 +1,8 @@ +#TODO require camera drivers, see https://github.com/GreatAttractor/vidoxide#3-building +[source] +git = "https://github.com/GreatAttractor/vidoxide" +[build] +template = "cargo" +dependencies = [ + "gtk3", +] diff --git a/recipes/wip/tools/gptube-cli/recipe.toml b/recipes/wip/tools/gptube-cli/recipe.toml new file mode 100644 index 00000000..098bdd20 --- /dev/null +++ b/recipes/wip/tools/gptube-cli/recipe.toml @@ -0,0 +1,5 @@ +#TODO Seems to search for yt-dlp, see https://github.com/ZmoleCristian/gptube-cli/blob/main/Makefile +[source] +git = "https://github.com/ZmoleCristian/gptube-cli" +[build] +template = "cargo" diff --git a/recipes/wip/video/streamlib/recipe.toml b/recipes/wip/video/streamlib/recipe.toml new file mode 100644 index 00000000..a8508b7d --- /dev/null +++ b/recipes/wip/video/streamlib/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/streamlib/streamlib" +[build] +template = "cargo" diff --git a/recipes/wip/video/sub-batch/recipe.toml b/recipes/wip/video/sub-batch/recipe.toml new file mode 100644 index 00000000..40b48c27 --- /dev/null +++ b/recipes/wip/video/sub-batch/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/kl/sub-batch" +rev = "a63ba33c6d0fdcb0e7a83da1c16bd8a19a43472b" +[build] +template = "cargo" diff --git a/recipes/wip/video/teres/recipe.toml b/recipes/wip/video/teres/recipe.toml new file mode 100644 index 00000000..8387be1f --- /dev/null +++ b/recipes/wip/video/teres/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing dependencies, see https://github.com/animafps/teres/blob/main/CONTRIBUTING.md +[source] +git = "https://github.com/animafps/teres" +[build] +template = "cargo" +dependencies = [ + "ffmpeg6", +] diff --git a/recipes/wip/video/yt-chanvids/recipe.toml b/recipes/wip/video/yt-chanvids/recipe.toml new file mode 100644 index 00000000..b97f2d99 --- /dev/null +++ b/recipes/wip/video/yt-chanvids/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/daniel-araujo/yt-chanvids" +[build] +template = "cargo" From 41261be4cc1fc3a0c857702d0cee58ce248511b7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 1 Mar 2024 21:59:42 +0000 Subject: [PATCH 1615/3180] add recipes --- recipes/wip/dev/oxidizer/recipe.toml | 5 +++++ recipes/wip/graphics/rscale2x/recipe.toml | 5 +++++ recipes/wip/graphics/upscaler-rs/recipe.toml | 5 +++++ recipes/wip/net/anime-downloader/recipe.toml | 6 ++++++ recipes/wip/video/detect-scene-change/recipe.toml | 5 +++++ recipes/wip/video/gopro-assembler/recipe.toml | 5 +++++ recipes/wip/video/trimmeroni/recipe.toml | 5 +++++ recipes/wip/video/video4discord/recipe.toml | 5 +++++ recipes/wip/web/vidium/recipe.toml | 5 +++++ 9 files changed, 46 insertions(+) create mode 100644 recipes/wip/dev/oxidizer/recipe.toml create mode 100644 recipes/wip/graphics/rscale2x/recipe.toml create mode 100644 recipes/wip/graphics/upscaler-rs/recipe.toml create mode 100644 recipes/wip/net/anime-downloader/recipe.toml create mode 100644 recipes/wip/video/detect-scene-change/recipe.toml create mode 100644 recipes/wip/video/gopro-assembler/recipe.toml create mode 100644 recipes/wip/video/trimmeroni/recipe.toml create mode 100644 recipes/wip/video/video4discord/recipe.toml create mode 100644 recipes/wip/web/vidium/recipe.toml diff --git a/recipes/wip/dev/oxidizer/recipe.toml b/recipes/wip/dev/oxidizer/recipe.toml new file mode 100644 index 00000000..00d3f166 --- /dev/null +++ b/recipes/wip/dev/oxidizer/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ix/oxidizer" +[build] +template = "cargo" diff --git a/recipes/wip/graphics/rscale2x/recipe.toml b/recipes/wip/graphics/rscale2x/recipe.toml new file mode 100644 index 00000000..8463be9a --- /dev/null +++ b/recipes/wip/graphics/rscale2x/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ahmetmutlugun/rscale2x" +[build] +template = "cargo" diff --git a/recipes/wip/graphics/upscaler-rs/recipe.toml b/recipes/wip/graphics/upscaler-rs/recipe.toml new file mode 100644 index 00000000..4a717342 --- /dev/null +++ b/recipes/wip/graphics/upscaler-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/DhruvDh/upscaler" +[build] +template = "cargo" diff --git a/recipes/wip/net/anime-downloader/recipe.toml b/recipes/wip/net/anime-downloader/recipe.toml new file mode 100644 index 00000000..3451f0bd --- /dev/null +++ b/recipes/wip/net/anime-downloader/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/B0SEmc/Anime-Downloader" +rev = "36439fcf8665a363d95fe0e56de69909d0ff381b" +[build] +template = "cargo" diff --git a/recipes/wip/video/detect-scene-change/recipe.toml b/recipes/wip/video/detect-scene-change/recipe.toml new file mode 100644 index 00000000..48c23e72 --- /dev/null +++ b/recipes/wip/video/detect-scene-change/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/soruly/detect-scene-change" +[build] +template = "cargo" diff --git a/recipes/wip/video/gopro-assembler/recipe.toml b/recipes/wip/video/gopro-assembler/recipe.toml new file mode 100644 index 00000000..a0a32b50 --- /dev/null +++ b/recipes/wip/video/gopro-assembler/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/alichtman/gopro-chaptered-video-assembler" +[build] +template = "cargo" diff --git a/recipes/wip/video/trimmeroni/recipe.toml b/recipes/wip/video/trimmeroni/recipe.toml new file mode 100644 index 00000000..079cbf14 --- /dev/null +++ b/recipes/wip/video/trimmeroni/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/outfrost/trimmeroni" +[build] +template = "cargo" diff --git a/recipes/wip/video/video4discord/recipe.toml b/recipes/wip/video/video4discord/recipe.toml new file mode 100644 index 00000000..b7faa52e --- /dev/null +++ b/recipes/wip/video/video4discord/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Seebass22/video4discord" +[build] +template = "cargo" diff --git a/recipes/wip/web/vidium/recipe.toml b/recipes/wip/web/vidium/recipe.toml new file mode 100644 index 00000000..3b99091c --- /dev/null +++ b/recipes/wip/web/vidium/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/s-panferov/vidium" +[build] +template = "cargo" From 547d4cca24c3802def904a55a6d541dd16641267 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 4 Mar 2024 15:48:34 -0700 Subject: [PATCH 1616/3180] cosmic-text: fix example package to install --- recipes/tools/cosmic-text/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/tools/cosmic-text/recipe.toml b/recipes/tools/cosmic-text/recipe.toml index 32f0525b..353feb35 100644 --- a/recipes/tools/cosmic-text/recipe.toml +++ b/recipes/tools/cosmic-text/recipe.toml @@ -5,5 +5,5 @@ branch = "main" [build] template = "custom" script = """ -cookbook_cargo_packages editor-orbclient +cookbook_cargo_packages editor """ From ab807fab5921362fe5e4201a735a8dd7782d5818 Mon Sep 17 00:00:00 2001 From: Bendeguz Pisch Date: Tue, 5 Mar 2024 18:05:15 +0000 Subject: [PATCH 1617/3180] Update ZSTD recipe status and add simple build script --- recipes/wip/tools/zstd/recipe.toml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/recipes/wip/tools/zstd/recipe.toml b/recipes/wip/tools/zstd/recipe.toml index 25125f6f..b7bc0a79 100644 --- a/recipes/wip/tools/zstd/recipe.toml +++ b/recipes/wip/tools/zstd/recipe.toml @@ -1,5 +1,15 @@ -#TODO missing script for building, see https://github.com/facebook/zstd#build-instructions +#TODO waiting for openat implementation, building without openat fails +#NOTE although project supports building without openat, but the corresponding #if check +# checks for the presence of st_mtime, and if it exists it falsely assumes that AT_FDCWD is supported too +# for more info see starting from programs/util.c line 262: #if (PLATFORM_POSIX_VERSION >= 200809L) && defined(st_mtime) + [source] tar = "https://github.com/facebook/zstd/releases/download/v1.5.5/zstd-1.5.5.tar.gz" + [build] template = "custom" +script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ +${COOKBOOK_MAKE} +""" + From dbb65ed51af135a750c39d8e830f38da8d9fa687 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 5 Mar 2024 23:12:08 +0000 Subject: [PATCH 1618/3180] update recipes --- recipes/wip/codecs/wavpack/recipe.toml | 5 +++++ recipes/wip/libs/opus/recipe.toml | 2 +- recipes/wip/tui/gitu/recipe.toml | 5 +++++ recipes/wip/{dev => tui}/gitui/recipe.toml | 0 4 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 recipes/wip/codecs/wavpack/recipe.toml create mode 100644 recipes/wip/tui/gitu/recipe.toml rename recipes/wip/{dev => tui}/gitui/recipe.toml (100%) diff --git a/recipes/wip/codecs/wavpack/recipe.toml b/recipes/wip/codecs/wavpack/recipe.toml new file mode 100644 index 00000000..3dc61207 --- /dev/null +++ b/recipes/wip/codecs/wavpack/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/dbry/WavPack/releases/download/5.7.0/wavpack-5.7.0.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libs/opus/recipe.toml b/recipes/wip/libs/opus/recipe.toml index 8191a3f5..0f63e463 100644 --- a/recipes/wip/libs/opus/recipe.toml +++ b/recipes/wip/libs/opus/recipe.toml @@ -1,5 +1,5 @@ #TODO compiled but not tested [source] -tar = "https://downloads.xiph.org/releases/opus/opus-1.4.tar.gz" +tar = "https://downloads.xiph.org/releases/opus/opus-1.5.1.tar.gz" [build] template = "configure" diff --git a/recipes/wip/tui/gitu/recipe.toml b/recipes/wip/tui/gitu/recipe.toml new file mode 100644 index 00000000..6ba44f7b --- /dev/null +++ b/recipes/wip/tui/gitu/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/altsem/gitu" +[build] +template = "cargo" diff --git a/recipes/wip/dev/gitui/recipe.toml b/recipes/wip/tui/gitui/recipe.toml similarity index 100% rename from recipes/wip/dev/gitui/recipe.toml rename to recipes/wip/tui/gitui/recipe.toml From a02dbe3bfcaf5930d5bc751fffef2067638c19de Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 5 Mar 2024 23:12:39 +0000 Subject: [PATCH 1619/3180] rename the opus recipe --- recipes/wip/libs/{opus => libopus}/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/libs/{opus => libopus}/recipe.toml (100%) diff --git a/recipes/wip/libs/opus/recipe.toml b/recipes/wip/libs/libopus/recipe.toml similarity index 100% rename from recipes/wip/libs/opus/recipe.toml rename to recipes/wip/libs/libopus/recipe.toml From 5ef4bf10c28a60ae6b2e6faa20c7617ac3b1a2e1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 7 Mar 2024 09:43:34 +0000 Subject: [PATCH 1620/3180] add recipes --- recipes/wip/dev/omnibor-rs/recipe.toml | 17 +++++++++++++++++ recipes/wip/finance/bitcoin-core/recipe.toml | 15 +++++++++++++++ recipes/wip/finance/electrs/recipe.toml | 5 +++++ recipes/wip/finance/floresta/recipe.toml | 8 ++++++++ recipes/wip/finance/liana/recipe.toml | 5 +++++ recipes/wip/finance/nakatoshi/recipe.toml | 5 +++++ recipes/wip/finance/ord/recipe.toml | 8 ++++++++ .../wip/finance/rusty-blockparser/recipe.toml | 5 +++++ recipes/wip/games/endless-sky/recipe.toml | 16 ++++++++++++++++ recipes/wip/security/plutus-rustus/recipe.toml | 5 +++++ 10 files changed, 89 insertions(+) create mode 100644 recipes/wip/dev/omnibor-rs/recipe.toml create mode 100644 recipes/wip/finance/bitcoin-core/recipe.toml create mode 100644 recipes/wip/finance/electrs/recipe.toml create mode 100644 recipes/wip/finance/floresta/recipe.toml create mode 100644 recipes/wip/finance/liana/recipe.toml create mode 100644 recipes/wip/finance/nakatoshi/recipe.toml create mode 100644 recipes/wip/finance/ord/recipe.toml create mode 100644 recipes/wip/finance/rusty-blockparser/recipe.toml create mode 100644 recipes/wip/games/endless-sky/recipe.toml create mode 100644 recipes/wip/security/plutus-rustus/recipe.toml diff --git a/recipes/wip/dev/omnibor-rs/recipe.toml b/recipes/wip/dev/omnibor-rs/recipe.toml new file mode 100644 index 00000000..3a9e19bd --- /dev/null +++ b/recipes/wip/dev/omnibor-rs/recipe.toml @@ -0,0 +1,17 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/omnibor/omnibor-rs" +[build] +template = "custom" +script = """ +binary=omnibor +"${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --bin "${binary}" \ + --release + --build-binary + mkdir -pv "${COOKBOOK_STAGE}/usr/bin" + cp -v \ + "target/${TARGET}/release/${binary}" \ + "${COOKBOOK_STAGE}/usr/bin/${binary}" +""" diff --git a/recipes/wip/finance/bitcoin-core/recipe.toml b/recipes/wip/finance/bitcoin-core/recipe.toml new file mode 100644 index 00000000..f8b7be25 --- /dev/null +++ b/recipes/wip/finance/bitcoin-core/recipe.toml @@ -0,0 +1,15 @@ +#TODO Not compiled or tested +[source] +tar = "https://bitcoincore.org/bin/bitcoin-core-26.0/bitcoin-26.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "boost", + "libevent", +] +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --disable-wallet +) +cookbook_configure +""" diff --git a/recipes/wip/finance/electrs/recipe.toml b/recipes/wip/finance/electrs/recipe.toml new file mode 100644 index 00000000..f24a8659 --- /dev/null +++ b/recipes/wip/finance/electrs/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing runtime dependencies, see https://github.com/romanz/electrs/blob/master/doc/install.md#build-dependencies +[source] +git = "https://github.com/romanz/electrs" +[build] +template = "cargo" diff --git a/recipes/wip/finance/floresta/recipe.toml b/recipes/wip/finance/floresta/recipe.toml new file mode 100644 index 00000000..7143cbcf --- /dev/null +++ b/recipes/wip/finance/floresta/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Davidson-Souza/Floresta" +[build] +template = "custom" +script = """ +cookbook_cargo_packages florestad +""" diff --git a/recipes/wip/finance/liana/recipe.toml b/recipes/wip/finance/liana/recipe.toml new file mode 100644 index 00000000..487850f6 --- /dev/null +++ b/recipes/wip/finance/liana/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/wizardsardine/liana" +[build] +template = "cargo" diff --git a/recipes/wip/finance/nakatoshi/recipe.toml b/recipes/wip/finance/nakatoshi/recipe.toml new file mode 100644 index 00000000..f30e23b4 --- /dev/null +++ b/recipes/wip/finance/nakatoshi/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ndelvalle/nakatoshi" +[build] +template = "cargo" diff --git a/recipes/wip/finance/ord/recipe.toml b/recipes/wip/finance/ord/recipe.toml new file mode 100644 index 00000000..f02b88e0 --- /dev/null +++ b/recipes/wip/finance/ord/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ordinals/ord" +[build] +template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/finance/rusty-blockparser/recipe.toml b/recipes/wip/finance/rusty-blockparser/recipe.toml new file mode 100644 index 00000000..054984c2 --- /dev/null +++ b/recipes/wip/finance/rusty-blockparser/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/gcarq/rusty-blockparser" +[build] +template = "cargo" diff --git a/recipes/wip/games/endless-sky/recipe.toml b/recipes/wip/games/endless-sky/recipe.toml new file mode 100644 index 00000000..24f29a4c --- /dev/null +++ b/recipes/wip/games/endless-sky/recipe.toml @@ -0,0 +1,16 @@ +#TODO missing script for CMake, see https://github.com/endless-sky/endless-sky/blob/master/docs/readme-cmake.md#building-the-game +[source] +git = "https://github.com/endless-sky/endless-sky" +rev = "95e72950e1554392666fa41bb18c978868aa6611" +[build] +template = "custom" +dependencies = [ + "sdl2", + "libpng", + "libjpeg", + "mesa", + "glew", + "openal", + "libmad", + "libuuid", +] diff --git a/recipes/wip/security/plutus-rustus/recipe.toml b/recipes/wip/security/plutus-rustus/recipe.toml new file mode 100644 index 00000000..5df54054 --- /dev/null +++ b/recipes/wip/security/plutus-rustus/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/a137x/plutus-rustus" +[build] +template = "cargo" From 6bf343e513658a2172219417096249f83c64de5b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 7 Mar 2024 09:45:23 +0000 Subject: [PATCH 1621/3180] move recipes --- recipes/wip/{finance => net}/bitcoin-core/recipe.toml | 0 recipes/wip/{finance => net}/electrs/recipe.toml | 0 recipes/wip/{finance => net}/floresta/recipe.toml | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{finance => net}/bitcoin-core/recipe.toml (100%) rename recipes/wip/{finance => net}/electrs/recipe.toml (100%) rename recipes/wip/{finance => net}/floresta/recipe.toml (100%) diff --git a/recipes/wip/finance/bitcoin-core/recipe.toml b/recipes/wip/net/bitcoin-core/recipe.toml similarity index 100% rename from recipes/wip/finance/bitcoin-core/recipe.toml rename to recipes/wip/net/bitcoin-core/recipe.toml diff --git a/recipes/wip/finance/electrs/recipe.toml b/recipes/wip/net/electrs/recipe.toml similarity index 100% rename from recipes/wip/finance/electrs/recipe.toml rename to recipes/wip/net/electrs/recipe.toml diff --git a/recipes/wip/finance/floresta/recipe.toml b/recipes/wip/net/floresta/recipe.toml similarity index 100% rename from recipes/wip/finance/floresta/recipe.toml rename to recipes/wip/net/floresta/recipe.toml From 5c3e9faed34987038ed1a2771717be6fb3180bff Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 7 Mar 2024 19:19:49 +0000 Subject: [PATCH 1622/3180] add a recipe --- recipes/wip/dev/srgn/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/wip/dev/srgn/recipe.toml diff --git a/recipes/wip/dev/srgn/recipe.toml b/recipes/wip/dev/srgn/recipe.toml new file mode 100644 index 00000000..9b9621c2 --- /dev/null +++ b/recipes/wip/dev/srgn/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/alexpovel/srgn" +[build] +template = "cargo" From 65b9c07c998a11348dd67064fc821d0cc8062639 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 7 Mar 2024 19:10:45 -0700 Subject: [PATCH 1623/3180] Add WIP cosmic-player --- recipes/wip/tools/cosmic-player/manifest | 10 ++++++++++ recipes/wip/tools/cosmic-player/recipe.toml | 20 ++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 recipes/wip/tools/cosmic-player/manifest create mode 100644 recipes/wip/tools/cosmic-player/recipe.toml diff --git a/recipes/wip/tools/cosmic-player/manifest b/recipes/wip/tools/cosmic-player/manifest new file mode 100644 index 00000000..7b4df7ce --- /dev/null +++ b/recipes/wip/tools/cosmic-player/manifest @@ -0,0 +1,10 @@ +name=COSMIC Media Player +binary=/usr/bin/cosmic-player +icon=/ui/icons/apps/multimedia-photo-viewer.png +author=Jeremy Soller +description=COSMIC Media Player +accept=*.avi +accept=*.mkv +accept=*.mov +accept=*.mp4 +accept=*.ogv diff --git a/recipes/wip/tools/cosmic-player/recipe.toml b/recipes/wip/tools/cosmic-player/recipe.toml new file mode 100644 index 00000000..bd26691a --- /dev/null +++ b/recipes/wip/tools/cosmic-player/recipe.toml @@ -0,0 +1,20 @@ +[source] +git = "https://github.com/pop-os/cosmic-player.git" +branch = "master" + +[build] +dependencies = [ + "ffmpeg6", + "liborbital", + "llvm", + "mesa", + "sdl2", + "zlib", +] +template = "custom" +script = """ +unset CC +cookbook_cargo --no-default-features --features static --verbose +mkdir -pv "${COOKBOOK_STAGE}/ui/apps" +cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/cosmic-player" +""" From 77b547ee95557da9112f51d65aa79417cc01c5d8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 8 Mar 2024 14:10:37 -0700 Subject: [PATCH 1624/3180] Fix sopwith URL --- recipes/games/sopwith/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/games/sopwith/recipe.sh b/recipes/games/sopwith/recipe.sh index a3ed07f9..a5ea9783 100644 --- a/recipes/games/sopwith/recipe.sh +++ b/recipes/games/sopwith/recipe.sh @@ -1,5 +1,5 @@ VERSION=1.8.4 -TAR=https://sourceforge.net/projects/sdl-sopwith/files/sdl_sopwith/$VERSION/sopwith-$VERSION.tar.gz/download +TAR="https://github.com/fragglet/sdl-sopwith/releases/download/sdl-sopwith-${VERSION}/sopwith-${VERSION}.tar.gz" BUILD_DEPENDS=(sdl1 liborbital libiconv) function recipe_version { From 6abaee504007212c2f451dbf065c0ef6a3738308 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sun, 10 Mar 2024 13:27:51 +0100 Subject: [PATCH 1625/3180] Set RUST_BACKTRACE=1 in init.rc This helps with debugging panics. --- recipes/core/initfs/init.rc | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/core/initfs/init.rc b/recipes/core/initfs/init.rc index 9f80f648..6ccaeb60 100644 --- a/recipes/core/initfs/init.rc +++ b/recipes/core/initfs/init.rc @@ -1,5 +1,6 @@ export PATH /scheme/initfs/bin export TMPDIR /tmp +export RUST_BACKTRACE 1 nulld zerod randd From 2d4e4f30e74db2a5c05e7714c648f66d99e41d4d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 10 Mar 2024 16:42:23 +0000 Subject: [PATCH 1626/3180] add recipes --- recipes/wip/libs/libpcsclite/recipe.toml | 5 +++++ recipes/wip/security/veracrypt/recipe.toml | 10 ++++++++++ recipes/wip/tools/tinywasm/recipe.toml | 8 ++++++++ 3 files changed, 23 insertions(+) create mode 100644 recipes/wip/libs/libpcsclite/recipe.toml create mode 100644 recipes/wip/security/veracrypt/recipe.toml create mode 100644 recipes/wip/tools/tinywasm/recipe.toml diff --git a/recipes/wip/libs/libpcsclite/recipe.toml b/recipes/wip/libs/libpcsclite/recipe.toml new file mode 100644 index 00000000..0ddfc519 --- /dev/null +++ b/recipes/wip/libs/libpcsclite/recipe.toml @@ -0,0 +1,5 @@ +#TODO probably wrong template +[source] +tar = "https://pcsclite.apdu.fr/files/pcsc-lite-2.0.3.tar.bz2" +[build] +template = "configure" diff --git a/recipes/wip/security/veracrypt/recipe.toml b/recipes/wip/security/veracrypt/recipe.toml new file mode 100644 index 00000000..94fb9b6d --- /dev/null +++ b/recipes/wip/security/veracrypt/recipe.toml @@ -0,0 +1,10 @@ +#TODO missing script for GNU Make, see https://www.veracrypt.fr/en/CompilingGuidelineLinux.html#CompileVeraCrypt +[source] +tar = "https://launchpad.net/veracrypt/trunk/1.26.7/+download/VeraCrypt_1.26.7_Source.tar.bz2" +[build] +template = "custom" +dependencies = [ + "libfuse3", + "libpcsclite", + "wxwidgets-gtk3", +] diff --git a/recipes/wip/tools/tinywasm/recipe.toml b/recipes/wip/tools/tinywasm/recipe.toml new file mode 100644 index 00000000..1eb5f37f --- /dev/null +++ b/recipes/wip/tools/tinywasm/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/explodingcamera/tinywasm" +[build] +template = "custom" +script = """ +cookbook_cargo_packages tinywasm-cli +""" From 109ad72b831e5c11e92020f617c7ba0a451d797f Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sun, 10 Mar 2024 19:38:39 +0100 Subject: [PATCH 1627/3180] Pass bootstrap code to redox-initfs-ar for inclusion in the initfs --- recipes/core/initfs/recipe.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/core/initfs/recipe.toml b/recipes/core/initfs/recipe.toml index 6c468e71..b4e18623 100644 --- a/recipes/core/initfs/recipe.toml +++ b/recipes/core/initfs/recipe.toml @@ -4,6 +4,7 @@ git = "https://gitlab.redox-os.org/redox-os/redox-initfs.git" [build] template = "custom" dependencies = [ + "bootstrap", "drivers-initfs", "init", "logd", @@ -39,7 +40,7 @@ for bin in ${INITFS_RM_BINS}; do rm -f "${COOKBOOK_BUILD}/initfs/bin/$bin" done -env -u CARGO cargo run --manifest-path "${COOKBOOK_SOURCE}/tools/Cargo.toml" --bin redox-initfs-ar -- "${COOKBOOK_BUILD}/initfs" -o "${COOKBOOK_BUILD}/initfs.img" +env -u CARGO cargo run --manifest-path "${COOKBOOK_SOURCE}/tools/Cargo.toml" --bin redox-initfs-ar -- "${COOKBOOK_BUILD}/initfs" "${COOKBOOK_SYSROOT}/boot/bootstrap" -o "${COOKBOOK_BUILD}/initfs.img" mkdir -v "${COOKBOOK_STAGE}/boot" cp "${COOKBOOK_BUILD}/initfs.img" "${COOKBOOK_STAGE}/boot/initfs" From 1c72cace8083ba911b49a0228fcff3772ded0734 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 11 Mar 2024 01:45:08 +0000 Subject: [PATCH 1628/3180] update the ruffle recipe --- recipes/wip/emulators/ruffle/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/emulators/ruffle/recipe.toml b/recipes/wip/emulators/ruffle/recipe.toml index 207b03bb..f984e5c9 100644 --- a/recipes/wip/emulators/ruffle/recipe.toml +++ b/recipes/wip/emulators/ruffle/recipe.toml @@ -1,4 +1,4 @@ -#TODO make Wayland work +#TODO not compiled or tested [source] git = "https://github.com/ruffle-rs/ruffle" [build] From deb6973b91435ca48bfa2b18dc519518042e5ba8 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 11 Mar 2024 03:29:36 +0000 Subject: [PATCH 1629/3180] add recipes --- recipes/wip/services/grub/recipe.toml | 5 +++++ recipes/wip/tools/busybox/recipe.toml | 6 ++++++ recipes/wip/tools/toybox/recipe.toml | 5 +++++ recipes/wip/tools/ventoy/recipe.toml | 7 +++++++ 4 files changed, 23 insertions(+) create mode 100644 recipes/wip/services/grub/recipe.toml create mode 100644 recipes/wip/tools/busybox/recipe.toml create mode 100644 recipes/wip/tools/toybox/recipe.toml create mode 100644 recipes/wip/tools/ventoy/recipe.toml diff --git a/recipes/wip/services/grub/recipe.toml b/recipes/wip/services/grub/recipe.toml new file mode 100644 index 00000000..f674fb2b --- /dev/null +++ b/recipes/wip/services/grub/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://ftp.gnu.org/gnu/grub/grub-2.12.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/tools/busybox/recipe.toml b/recipes/wip/tools/busybox/recipe.toml new file mode 100644 index 00000000..58bc56af --- /dev/null +++ b/recipes/wip/tools/busybox/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for GNU Make, see https://www.busybox.net/FAQ.html#configure +#TODO cross-compilation - https://www.busybox.net/FAQ.html#build +[source] +tar = "https://www.busybox.net/downloads/busybox-1.36.1.tar.bz2" +[build] +template = "custom" diff --git a/recipes/wip/tools/toybox/recipe.toml b/recipes/wip/tools/toybox/recipe.toml new file mode 100644 index 00000000..8d159db2 --- /dev/null +++ b/recipes/wip/tools/toybox/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for GNU Make, see https://www.landley.net/toybox/code.html#building +[source] +tar = "https://www.landley.net/toybox/downloads/toybox-0.8.9.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/tools/ventoy/recipe.toml b/recipes/wip/tools/ventoy/recipe.toml new file mode 100644 index 00000000..8d1e6bae --- /dev/null +++ b/recipes/wip/tools/ventoy/recipe.toml @@ -0,0 +1,7 @@ +#TODO missing script for cross-compilation, see https://github.com/ventoy/Ventoy/blob/master/DOC/BuildVentoyFromSource.txt +#TODO missing dependencies, try to figure out what it needs at build-time and runtime +[source] +git = "https://github.com/ventoy/Ventoy" +rev = "3f65f0ef03e4aebcd14f233ca808a4f894657802" +[build] +template = "custom" From 4847833f49f83554acc2a9bf9a22214868d9b39d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 11 Mar 2024 15:27:56 +0000 Subject: [PATCH 1630/3180] Improve the package policies --- README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 68f6053b..d4b06acb 100644 --- a/README.md +++ b/README.md @@ -57,8 +57,8 @@ Before sending your recipe to upstream (to become a public package), you must fo #### Cross-Compilation -- All recipes must use our cross-compilers, a Cookbook [template](https://doc.redox-os.org/book/ch09-03-porting-applications.html#templates) does this automatically but it's not always possible, study the build system of your program/library to find these options or patch the configuration files. -- Don't hardcode the CPU architecture on the recipe script. +- All recipes must use our cross-compilers, a Cookbook [template](https://doc.redox-os.org/book/ch09-03-porting-applications.html#templates) does this automatically but it's not always possible, study the build system of your program or library to find these options or patch the configuration files. +- Don't hardcode the CPU architecture on the recipe script (this would break the multi-arch support). #### Tarballs @@ -66,7 +66,8 @@ Before sending your recipe to upstream (to become a public package), you must fo #### Library Linking -- Keep the static linking of libraries, there's an exception if the package become bigger than 100MB, big libraries/runtimes like LLVM can be dynamically linked. +- Keep the static linking of libraries to reduce the launch time and improve security. +- If your package is bigger than 50MB, dynamic link big libraries until your package is equal or less than 50MB (to reduce the RAM usage). #### ABI stability @@ -78,8 +79,9 @@ Before sending your recipe to upstream (to become a public package), you must fo #### License -- Don't package programs/libraries lacking a license. +- Don't package programs or libraries lacking a license. - Verify if the program has some license violation, in case of doubt ask us on the [chat](https://doc.redox-os.org/book/ch13-01-chat.html). +- Non-free programs and assets should go to a subcategory of the `nonfree` category and be approved per license. ### Testing Area From 23f9df17897434030ed66d8f157349a231d45f98 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 11 Mar 2024 15:30:12 +0000 Subject: [PATCH 1631/3180] Remove the cve-rs recipe --- recipes/wip/security/cve-rs/recipe.toml | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 recipes/wip/security/cve-rs/recipe.toml diff --git a/recipes/wip/security/cve-rs/recipe.toml b/recipes/wip/security/cve-rs/recipe.toml deleted file mode 100644 index 87830e3c..00000000 --- a/recipes/wip/security/cve-rs/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO Not compiled or tested -[source] -git = "https://github.com/Speykious/cve-rs" -[build] -template = "cargo" From 5257e212979a62ed8d7ff8f9615e69aaf4e5b0d3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 11 Mar 2024 15:32:12 +0000 Subject: [PATCH 1632/3180] Move the OpenSpades recipes to the nonfree category --- recipes/wip/{ => nonfree}/games/openspades/recipe.toml | 0 recipes/wip/{ => nonfree}/games/zerospades/recipe.toml | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => nonfree}/games/openspades/recipe.toml (100%) rename recipes/wip/{ => nonfree}/games/zerospades/recipe.toml (100%) diff --git a/recipes/wip/games/openspades/recipe.toml b/recipes/wip/nonfree/games/openspades/recipe.toml similarity index 100% rename from recipes/wip/games/openspades/recipe.toml rename to recipes/wip/nonfree/games/openspades/recipe.toml diff --git a/recipes/wip/games/zerospades/recipe.toml b/recipes/wip/nonfree/games/zerospades/recipe.toml similarity index 100% rename from recipes/wip/games/zerospades/recipe.toml rename to recipes/wip/nonfree/games/zerospades/recipe.toml From 72d5b757d69e72a7cb9ccb70b039b039fd369979 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 12 Mar 2024 20:15:37 +0000 Subject: [PATCH 1633/3180] add recipes --- recipes/wip/benchmarks/divan/recipe.toml | 8 ++++++++ recipes/wip/dev/rgit/recipe.toml | 5 +++++ recipes/wip/net/boringtun/recipe.toml | 8 ++++++++ recipes/wip/net/dufs/recipe.toml | 5 +++++ recipes/wip/tools/rix/recipe.toml | 5 +++++ recipes/wip/video/lecturecut/recipe.toml | 5 +++++ 6 files changed, 36 insertions(+) create mode 100644 recipes/wip/benchmarks/divan/recipe.toml create mode 100644 recipes/wip/dev/rgit/recipe.toml create mode 100644 recipes/wip/net/boringtun/recipe.toml create mode 100644 recipes/wip/net/dufs/recipe.toml create mode 100644 recipes/wip/tools/rix/recipe.toml create mode 100644 recipes/wip/video/lecturecut/recipe.toml diff --git a/recipes/wip/benchmarks/divan/recipe.toml b/recipes/wip/benchmarks/divan/recipe.toml new file mode 100644 index 00000000..87116a09 --- /dev/null +++ b/recipes/wip/benchmarks/divan/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/nvzqz/divan" +[build] +template = "custom" +script = """ +cookbook_cargo_packages examples +""" diff --git a/recipes/wip/dev/rgit/recipe.toml b/recipes/wip/dev/rgit/recipe.toml new file mode 100644 index 00000000..2f628a6f --- /dev/null +++ b/recipes/wip/dev/rgit/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/w4/rgit" +[build] +template = "cargo" diff --git a/recipes/wip/net/boringtun/recipe.toml b/recipes/wip/net/boringtun/recipe.toml new file mode 100644 index 00000000..5ca7af78 --- /dev/null +++ b/recipes/wip/net/boringtun/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/cloudflare/boringtun" +[build] +template = "custom" +script = """ +cookbook_cargo_packages boringtun-cli +""" diff --git a/recipes/wip/net/dufs/recipe.toml b/recipes/wip/net/dufs/recipe.toml new file mode 100644 index 00000000..3bd1e128 --- /dev/null +++ b/recipes/wip/net/dufs/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/sigoden/dufs" +[build] +template = "cargo" diff --git a/recipes/wip/tools/rix/recipe.toml b/recipes/wip/tools/rix/recipe.toml new file mode 100644 index 00000000..ba9f08d7 --- /dev/null +++ b/recipes/wip/tools/rix/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/urbas/rix" +[build] +template = "cargo" diff --git a/recipes/wip/video/lecturecut/recipe.toml b/recipes/wip/video/lecturecut/recipe.toml new file mode 100644 index 00000000..398da518 --- /dev/null +++ b/recipes/wip/video/lecturecut/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/LectureCut/CLI" +[build] +template = "cargo" From 4168ff5d68cfa671ac978b9e0dac3211608d083a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 12 Mar 2024 20:32:51 +0000 Subject: [PATCH 1634/3180] update recipes --- recipes/wip/games/openspades-free/recipe.toml | 34 +++++++++++++++++++ recipes/wip/games/zerospades-free/recipe.toml | 34 +++++++++++++++++++ recipes/wip/libs/glew/recipe.toml | 1 + recipes/wip/{gui => libs}/gtk2/recipe.toml | 1 + recipes/wip/{gui => libs}/gtk3/recipe.toml | 1 + recipes/wip/{gui => libs}/gtk4/recipe.toml | 1 + recipes/wip/{gui => libs}/qt4/recipe.toml | 1 + .../wip/{gui => libs}/qt5-base/recipe.toml | 1 + .../wip/{gui => libs}/qt5-full/recipe.toml | 1 + .../wip/{gui => libs}/qt6-base/recipe.toml | 1 + .../wip/{gui => libs}/qt6-full/recipe.toml | 1 + recipes/wip/libs/raylib/recipe.toml | 2 +- .../wip/nonfree/games/openspades/recipe.toml | 3 +- .../wip/nonfree/games/zerospades/recipe.toml | 3 +- 14 files changed, 80 insertions(+), 5 deletions(-) create mode 100644 recipes/wip/games/openspades-free/recipe.toml create mode 100644 recipes/wip/games/zerospades-free/recipe.toml rename recipes/wip/{gui => libs}/gtk2/recipe.toml (92%) rename recipes/wip/{gui => libs}/gtk3/recipe.toml (94%) rename recipes/wip/{gui => libs}/gtk4/recipe.toml (94%) rename recipes/wip/{gui => libs}/qt4/recipe.toml (88%) rename recipes/wip/{gui => libs}/qt5-base/recipe.toml (94%) rename recipes/wip/{gui => libs}/qt5-full/recipe.toml (94%) rename recipes/wip/{gui => libs}/qt6-base/recipe.toml (94%) rename recipes/wip/{gui => libs}/qt6-full/recipe.toml (92%) diff --git a/recipes/wip/games/openspades-free/recipe.toml b/recipes/wip/games/openspades-free/recipe.toml new file mode 100644 index 00000000..21606356 --- /dev/null +++ b/recipes/wip/games/openspades-free/recipe.toml @@ -0,0 +1,34 @@ +#TODO probably wrong script, see https://github.com/yvt/openspades#on-unixes-from-source +#TODO port GLEW to Orbital +#TODO add the FOSS assets on the script, see https://github.com/DeathByDenim/openspades-free-pak +[source] +git = "https://github.com/yvt/openspades" +[build] +template = "custom" +dependencies = [ + "glew", + "openssl1", + "sdl2", + "sdl2-image", + "freealut", + "freetype2", + "opus", + "opusfile", + "libjpeg", + "openal", +] +script = """ + COOKBOOK_CONFIGURE="cmake" + COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/games/zerospades-free/recipe.toml b/recipes/wip/games/zerospades-free/recipe.toml new file mode 100644 index 00000000..d1ebbce8 --- /dev/null +++ b/recipes/wip/games/zerospades-free/recipe.toml @@ -0,0 +1,34 @@ +#TODO probably wrong script, see https://github.com/yvt/openspades#on-unixes-from-source +#TODO port GLEW to Orbital +#TODO add the FOSS assets on the script, see https://github.com/DeathByDenim/openspades-free-pak +[source] +git = "https://github.com/siecvi/zerospades" +[build] +template = "custom" +dependencies = [ + "glew", + "openssl1", + "sdl2", + "sdl2-image", + "freealut", + "freetype2", + "opus", + "opusfile", + "libjpeg", + "openal", +] +script = """ + COOKBOOK_CONFIGURE="cmake" + COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/glew/recipe.toml b/recipes/wip/libs/glew/recipe.toml index cee6aed2..e78040e7 100644 --- a/recipes/wip/libs/glew/recipe.toml +++ b/recipes/wip/libs/glew/recipe.toml @@ -1,4 +1,5 @@ #TODO missing script for "make", see https://github.com/nigels-com/glew#linux-and-mac +#TODO port to Orbital [source] git = "https://github.com/nigels-com/glew" rev = "9fb23c3e61cbd2d581e33ff7d8579b572b38ee26" diff --git a/recipes/wip/gui/gtk2/recipe.toml b/recipes/wip/libs/gtk2/recipe.toml similarity index 92% rename from recipes/wip/gui/gtk2/recipe.toml rename to recipes/wip/libs/gtk2/recipe.toml index 005ea8d5..377c4f87 100644 --- a/recipes/wip/gui/gtk2/recipe.toml +++ b/recipes/wip/libs/gtk2/recipe.toml @@ -1,4 +1,5 @@ #TODO probably missing dependencies +#TODO port to Orbital [source] tar = "https://download.gnome.org/sources/gtk%2B/2.24/gtk%2B-2.24.33.tar.xz" [build] diff --git a/recipes/wip/gui/gtk3/recipe.toml b/recipes/wip/libs/gtk3/recipe.toml similarity index 94% rename from recipes/wip/gui/gtk3/recipe.toml rename to recipes/wip/libs/gtk3/recipe.toml index aaf59bbb..0172cb38 100644 --- a/recipes/wip/gui/gtk3/recipe.toml +++ b/recipes/wip/libs/gtk3/recipe.toml @@ -1,4 +1,5 @@ #TODO probably missing dependencies, see https://docs.gtk.org/gtk3/building.html#dependencies +#TODO port to Orbital [source] tar = "https://download.gnome.org/sources/gtk+/3.24/gtk%2B-3.24.37.tar.xz" [build] diff --git a/recipes/wip/gui/gtk4/recipe.toml b/recipes/wip/libs/gtk4/recipe.toml similarity index 94% rename from recipes/wip/gui/gtk4/recipe.toml rename to recipes/wip/libs/gtk4/recipe.toml index 93608e38..9212093f 100644 --- a/recipes/wip/gui/gtk4/recipe.toml +++ b/recipes/wip/libs/gtk4/recipe.toml @@ -1,4 +1,5 @@ #TODO missing script for Meson, see https://docs.gtk.org/gtk4/building.html +#TODO port to Orbital [source] tar = "https://download.gnome.org/sources/gtk/4.11/gtk-4.11.2.tar.xz" [build] diff --git a/recipes/wip/gui/qt4/recipe.toml b/recipes/wip/libs/qt4/recipe.toml similarity index 88% rename from recipes/wip/gui/qt4/recipe.toml rename to recipes/wip/libs/qt4/recipe.toml index 7b903dc3..92e1abe5 100644 --- a/recipes/wip/gui/qt4/recipe.toml +++ b/recipes/wip/libs/qt4/recipe.toml @@ -1,4 +1,5 @@ #TODO find a tarball link +#TODO port to Orbital [source] tar = "http://download.qt.io/official_releases/qt/4.8/4.8.7/qt-everywhere-opensource-src-4.8.7.tar.gz" [build] diff --git a/recipes/wip/gui/qt5-base/recipe.toml b/recipes/wip/libs/qt5-base/recipe.toml similarity index 94% rename from recipes/wip/gui/qt5-base/recipe.toml rename to recipes/wip/libs/qt5-base/recipe.toml index 69c6c810..4ee45eea 100644 --- a/recipes/wip/gui/qt5-base/recipe.toml +++ b/recipes/wip/libs/qt5-base/recipe.toml @@ -1,4 +1,5 @@ #TODO make libxkbcommon work +#TODO port to Orbital #TODO build instructions - https://doc.qt.io/qt-5/linux-building.html #TODO customization - https://doc.qt.io/qt-5/configure-options.html [source] diff --git a/recipes/wip/gui/qt5-full/recipe.toml b/recipes/wip/libs/qt5-full/recipe.toml similarity index 94% rename from recipes/wip/gui/qt5-full/recipe.toml rename to recipes/wip/libs/qt5-full/recipe.toml index b493152b..238eafcb 100644 --- a/recipes/wip/gui/qt5-full/recipe.toml +++ b/recipes/wip/libs/qt5-full/recipe.toml @@ -1,3 +1,4 @@ +#TODO port to Orbital #TODO build instructions - https://doc.qt.io/qt-5/linux-building.html #TODO customization - https://doc.qt.io/qt-5/configure-options.html [source] diff --git a/recipes/wip/gui/qt6-base/recipe.toml b/recipes/wip/libs/qt6-base/recipe.toml similarity index 94% rename from recipes/wip/gui/qt6-base/recipe.toml rename to recipes/wip/libs/qt6-base/recipe.toml index 5b2ca35a..c470068c 100644 --- a/recipes/wip/gui/qt6-base/recipe.toml +++ b/recipes/wip/libs/qt6-base/recipe.toml @@ -1,4 +1,5 @@ #TODO make libxkbcommon work +#TODO port to Orbital #TODO build instructions - https://doc.qt.io/qt-6/linux-building.html #TODO customization - https://doc.qt.io/qt-6/configure-options.html [source] diff --git a/recipes/wip/gui/qt6-full/recipe.toml b/recipes/wip/libs/qt6-full/recipe.toml similarity index 92% rename from recipes/wip/gui/qt6-full/recipe.toml rename to recipes/wip/libs/qt6-full/recipe.toml index 83405bf3..8dd76934 100644 --- a/recipes/wip/gui/qt6-full/recipe.toml +++ b/recipes/wip/libs/qt6-full/recipe.toml @@ -1,3 +1,4 @@ +#TODO port to Orbital #TODO Missing script for GNU Autotools and CMake [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/single/qt-everywhere-src-6.6.1.tar.xz" diff --git a/recipes/wip/libs/raylib/recipe.toml b/recipes/wip/libs/raylib/recipe.toml index 887258ee..cdd626f5 100644 --- a/recipes/wip/libs/raylib/recipe.toml +++ b/recipes/wip/libs/raylib/recipe.toml @@ -1,3 +1,4 @@ +#TODO port to Orbital #TODO probably wrong script, see https://github.com/raysan5/raylib/wiki/Working-on-GNU-Linux [source] git = "https://github.com/raysan5/raylib" @@ -6,7 +7,6 @@ rev = "ae50bfa2cc569c0f8d5bc4315d39db64005b1b08" template = "custom" dependencies = [ "mesa", - "libwayland", "libxkbcommon", ] script = """ diff --git a/recipes/wip/nonfree/games/openspades/recipe.toml b/recipes/wip/nonfree/games/openspades/recipe.toml index c2f0d5f8..798717fb 100644 --- a/recipes/wip/nonfree/games/openspades/recipe.toml +++ b/recipes/wip/nonfree/games/openspades/recipe.toml @@ -1,6 +1,5 @@ #TODO probably wrong script, see https://github.com/yvt/openspades#on-unixes-from-source -# The game crash with the Wayland backend of SDL2, you need to use the "SDL_VIDEODRIVER=x11" environment variable to use XWayland -# a script to workaround this is the best solution +#TODO port GLEW to Orbital [source] git = "https://github.com/yvt/openspades" [build] diff --git a/recipes/wip/nonfree/games/zerospades/recipe.toml b/recipes/wip/nonfree/games/zerospades/recipe.toml index 92342625..ba270adf 100644 --- a/recipes/wip/nonfree/games/zerospades/recipe.toml +++ b/recipes/wip/nonfree/games/zerospades/recipe.toml @@ -1,6 +1,5 @@ #TODO probably wrong script, see https://github.com/yvt/openspades#on-unixes-from-source -# The game crash with the Wayland backend of SDL2, you need to use the "SDL_VIDEODRIVER=x11" environment variable to use XWayland -# a script to workaround this is the best solution +#TODO port GLEW to Orbital [source] git = "https://github.com/siecvi/zerospades" [build] From a89e9d9ebe34baf83f03e943432dc0a5424b44d4 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 12 Mar 2024 20:52:35 +0000 Subject: [PATCH 1635/3180] update recipes --- recipes/wip/emulators/gameroy/recipe.toml | 5 +---- recipes/wip/libs/freeglut/recipe.toml | 2 +- recipes/wip/tools/alacritty/recipe.toml | 3 +-- recipes/wip/tools/birdy/recipe.toml | 5 +---- recipes/wip/tools/thwack/recipe.toml | 2 +- recipes/wip/tools/tp-note/recipe.toml | 2 +- recipes/wip/tools/tui-journal/recipe.toml | 2 +- 7 files changed, 7 insertions(+), 14 deletions(-) diff --git a/recipes/wip/emulators/gameroy/recipe.toml b/recipes/wip/emulators/gameroy/recipe.toml index be4a1493..5ab46748 100644 --- a/recipes/wip/emulators/gameroy/recipe.toml +++ b/recipes/wip/emulators/gameroy/recipe.toml @@ -1,12 +1,9 @@ -#TODO make Wayland work +#TODO port to Orbital [source] git = "https://github.com/Rodrigodd/gameroy" rev = "78d12b7a74cda37002cd2b964baaa761285925ab" [build] template = "custom" -dependencies = [ - "libwayland", -] script = """ cookbook_cargo_packages gameroy-native """ diff --git a/recipes/wip/libs/freeglut/recipe.toml b/recipes/wip/libs/freeglut/recipe.toml index 59b8e5fc..f2b576ad 100644 --- a/recipes/wip/libs/freeglut/recipe.toml +++ b/recipes/wip/libs/freeglut/recipe.toml @@ -1,4 +1,4 @@ -#TODO make Wayland work +#TODO port to Orbital [source] tar = "https://github.com/freeglut/freeglut/releases/download/v3.4.0/freeglut-3.4.0.tar.gz" #blake3 = "08c8874d6ddad5be4860813865d4d4e2a84c294da0f3cf82a29e43920806b0da" diff --git a/recipes/wip/tools/alacritty/recipe.toml b/recipes/wip/tools/alacritty/recipe.toml index 02aeb694..b8668e9b 100644 --- a/recipes/wip/tools/alacritty/recipe.toml +++ b/recipes/wip/tools/alacritty/recipe.toml @@ -1,4 +1,4 @@ -#TODO make Wayland work +#TODO port to Orbital [source] git = "https://github.com/alacritty/alacritty" rev = "5efb0690a3174dd4e21516bda59f74f3aa8ba3e3" @@ -7,7 +7,6 @@ template = "custom" dependencies = [ "freetype2", "fontconfig", - "libwayland", ] script = """ cookbook_cargo_packages alacritty diff --git a/recipes/wip/tools/birdy/recipe.toml b/recipes/wip/tools/birdy/recipe.toml index 4ed855bc..faeba89e 100644 --- a/recipes/wip/tools/birdy/recipe.toml +++ b/recipes/wip/tools/birdy/recipe.toml @@ -1,8 +1,5 @@ -#TODO make Wayland work +#TODO port to Orbital [source] git = "https://github.com/kakoc/birdy" [build] template = "cargo" -dependencies = [ - "libwayland", -] diff --git a/recipes/wip/tools/thwack/recipe.toml b/recipes/wip/tools/thwack/recipe.toml index 4bb38dd3..9b2ec86f 100644 --- a/recipes/wip/tools/thwack/recipe.toml +++ b/recipes/wip/tools/thwack/recipe.toml @@ -1,4 +1,4 @@ -#TODO make Wayland work +#TODO port to Orbital [source] git = "https://github.com/yykamei/thwack" rev = "6763a2a9da03ffb746580c69f8d77161e5f6ba4e" diff --git a/recipes/wip/tools/tp-note/recipe.toml b/recipes/wip/tools/tp-note/recipe.toml index 48bd6a75..c359fb84 100644 --- a/recipes/wip/tools/tp-note/recipe.toml +++ b/recipes/wip/tools/tp-note/recipe.toml @@ -1,4 +1,4 @@ -#TODO make Wayland work +#TODO port to Orbital [source] git = "https://gitlab.com/getreu/tp-note" rev = "1a8241211382efafb37961888aebc0065d56a95e" diff --git a/recipes/wip/tools/tui-journal/recipe.toml b/recipes/wip/tools/tui-journal/recipe.toml index 5d54f961..b7213fbf 100644 --- a/recipes/wip/tools/tui-journal/recipe.toml +++ b/recipes/wip/tools/tui-journal/recipe.toml @@ -1,4 +1,4 @@ -#TODO make Wayland work +#TODO port to Orbital [source] git = "https://github.com/AmmarAbouZor/tui-journal" rev = "40943d8b4081d61cd549398ff68c6f219444167b" From d0378b5c485ef7943e744ebeda4ecc453c7cd7b7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 12 Mar 2024 23:11:27 +0000 Subject: [PATCH 1636/3180] add recipes --- recipes/wip/sound/scope-tui/recipe.toml | 5 +++++ recipes/wip/sound/tuisic/recipe.toml | 5 +++++ recipes/wip/tui/sshs/recipe.toml | 6 ++++++ recipes/wip/tui/tooters/recipe.toml | 5 +++++ 4 files changed, 21 insertions(+) create mode 100644 recipes/wip/sound/scope-tui/recipe.toml create mode 100644 recipes/wip/sound/tuisic/recipe.toml create mode 100644 recipes/wip/tui/sshs/recipe.toml create mode 100644 recipes/wip/tui/tooters/recipe.toml diff --git a/recipes/wip/sound/scope-tui/recipe.toml b/recipes/wip/sound/scope-tui/recipe.toml new file mode 100644 index 00000000..dcdfe088 --- /dev/null +++ b/recipes/wip/sound/scope-tui/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/alemidev/scope-tui" +[build] +template = "cargo" diff --git a/recipes/wip/sound/tuisic/recipe.toml b/recipes/wip/sound/tuisic/recipe.toml new file mode 100644 index 00000000..8fc5416b --- /dev/null +++ b/recipes/wip/sound/tuisic/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/saubuny/tuisic" +[build] +template = "cargo" diff --git a/recipes/wip/tui/sshs/recipe.toml b/recipes/wip/tui/sshs/recipe.toml new file mode 100644 index 00000000..cc2426db --- /dev/null +++ b/recipes/wip/tui/sshs/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/quantumsheep/sshs" +rev = "116cb8d0b360e8bb47acfdb3398702f89d866b12" +[build] +template = "cargo" diff --git a/recipes/wip/tui/tooters/recipe.toml b/recipes/wip/tui/tooters/recipe.toml new file mode 100644 index 00000000..90ce36f0 --- /dev/null +++ b/recipes/wip/tui/tooters/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/joshka/tooters" +[build] +template = "cargo" From ba49d0213b06f718009c96c97c2f8adfa231a171 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 15 Mar 2024 12:10:43 +0000 Subject: [PATCH 1637/3180] add recipes --- recipes/wip/net/slumber/recipe.toml | 5 +++++ recipes/wip/tools/rfz/recipe.toml | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 recipes/wip/net/slumber/recipe.toml create mode 100644 recipes/wip/tools/rfz/recipe.toml diff --git a/recipes/wip/net/slumber/recipe.toml b/recipes/wip/net/slumber/recipe.toml new file mode 100644 index 00000000..c2e81460 --- /dev/null +++ b/recipes/wip/net/slumber/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/LucasPickering/slumber" +[build] +template = "cargo" diff --git a/recipes/wip/tools/rfz/recipe.toml b/recipes/wip/tools/rfz/recipe.toml new file mode 100644 index 00000000..51e93ca1 --- /dev/null +++ b/recipes/wip/tools/rfz/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/MangoTzara/rfz" +[build] +template = "cargo" From 0310f47f24896915d33e9ee87acf1e86382c8f1f Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Fri, 15 Mar 2024 13:40:54 +0100 Subject: [PATCH 1638/3180] Set max-page-size for linking bootstrap Without this the virtual addresses will not match the file offsets for the final initfs blob on AArch64 as there it will align to 64k by default. --- recipes/core/bootstrap/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/core/bootstrap/recipe.toml b/recipes/core/bootstrap/recipe.toml index 8ad318ce..90bff591 100644 --- a/recipes/core/bootstrap/recipe.toml +++ b/recipes/core/bootstrap/recipe.toml @@ -19,5 +19,6 @@ mkdir -v "${COOKBOOK_STAGE}/boot" -o "${COOKBOOK_STAGE}/boot/bootstrap" \ --gc-sections \ -T "${COOKBOOK_SOURCE}/src/${ARCH}.ld" \ + -z max-page-size=4096 \ "${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a" """ From 61ae6cf32807d572feff3c981e2f9c18c43a6df3 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 16 Mar 2024 21:28:48 +0100 Subject: [PATCH 1639/3180] Run pcid on aarch64 --- recipes/core/drivers-initfs/recipe.toml | 30 +++++++++++-------- recipes/core/drivers/recipe.toml | 3 +- .../core/initfs/aarch64-unknown-redox/init.rc | 2 ++ 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/recipes/core/drivers-initfs/recipe.toml b/recipes/core/drivers-initfs/recipe.toml index e1e91f5b..74a1f482 100644 --- a/recipes/core/drivers-initfs/recipe.toml +++ b/recipes/core/drivers-initfs/recipe.toml @@ -5,42 +5,48 @@ git = "https://gitlab.redox-os.org/redox-os/drivers.git" template = "custom" script = """ BINS=( - ahcid fbcond inputd nvmed pcid vesad - virtio-blkd - virtio-gpud lived ) -aarch64_redefine_bin() +virt_bins() +{ + BINS+=(virtio-blkd virtio-gpud) +} + +x86_common_bins() +{ + BINS+=(ahcid ided ps2d vesad) + virt_bins +} + +aarch64_bins() { - BINS=(inputd lived) case "${BOARD}" in - raspi3bp) - BINS+=(bcm2835-sdhcid) - ;; - raspi3b) + raspi3b | raspi3bp) BINS+=(bcm2835-sdhcid) ;; *) #qemu-virt + virt_bins ;; esac } case "${TARGET}" in i686-unknown-redox) - BINS+=(ided ps2d) + x86_common_bins ;; x86_64-unknown-redox) - BINS+=(acpid ided ps2d) + x86_common_bins + BINS+=(acpid) ;; aarch64-unknown-redox) - aarch64_redefine_bin + aarch64_bins ;; *) ;; diff --git a/recipes/core/drivers/recipe.toml b/recipes/core/drivers/recipe.toml index b40d8666..3df8bc52 100644 --- a/recipes/core/drivers/recipe.toml +++ b/recipes/core/drivers/recipe.toml @@ -10,6 +10,7 @@ BINS=( e1000d ihdad ixgbed + pcid rtl8139d rtl8168d usbctl @@ -24,7 +25,7 @@ BINS=( # depending on the target architecture case "${TARGET}" in i686-unknown-redox | x86_64-unknown-redox) - BINS+=(ac97d bgad pcid pcspkrd sb16d vboxd) + BINS+=(ac97d bgad pcspkrd sb16d vboxd) ;; *) ;; diff --git a/recipes/core/initfs/aarch64-unknown-redox/init.rc b/recipes/core/initfs/aarch64-unknown-redox/init.rc index f794e3ca..3acd2580 100644 --- a/recipes/core/initfs/aarch64-unknown-redox/init.rc +++ b/recipes/core/initfs/aarch64-unknown-redox/init.rc @@ -1,5 +1,6 @@ export PATH /scheme/initfs/bin export TMPDIR /tmp +export RUST_BACKTRACE 1 nulld zerod randd @@ -11,6 +12,7 @@ fbcond 1 2 logd /scheme/debug /scheme/fbcon/1 stdio /scheme/log ramfs logging +pcid /scheme/initfs/etc/pcid/initfs.toml lived unset DISK_LIVE_ADDR DISK_LIVE_SIZE redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK From 8db9b7fe3028fb6245e643dcd65004c1fabdc26e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 19 Mar 2024 15:33:28 +0000 Subject: [PATCH 1640/3180] add recipes --- recipes/wip/demos/gfx-shader-watch/recipe.toml | 8 ++++++++ recipes/wip/demos/if-watch/recipe.toml | 8 ++++++++ recipes/wip/graphics/watch-stl/recipe.toml | 5 +++++ recipes/wip/net/vpncloud/recipe.toml | 6 ++++++ recipes/wip/tools/chromazone/recipe.toml | 5 +++++ recipes/wip/tools/funzzy/recipe.toml | 5 +++++ recipes/wip/tools/kami/recipe.toml | 6 ++++++ recipes/wip/tools/watchmen/recipe.toml | 8 ++++++++ 8 files changed, 51 insertions(+) create mode 100644 recipes/wip/demos/gfx-shader-watch/recipe.toml create mode 100644 recipes/wip/demos/if-watch/recipe.toml create mode 100644 recipes/wip/graphics/watch-stl/recipe.toml create mode 100644 recipes/wip/net/vpncloud/recipe.toml create mode 100644 recipes/wip/tools/chromazone/recipe.toml create mode 100644 recipes/wip/tools/funzzy/recipe.toml create mode 100644 recipes/wip/tools/kami/recipe.toml create mode 100644 recipes/wip/tools/watchmen/recipe.toml diff --git a/recipes/wip/demos/gfx-shader-watch/recipe.toml b/recipes/wip/demos/gfx-shader-watch/recipe.toml new file mode 100644 index 00000000..f79d3baf --- /dev/null +++ b/recipes/wip/demos/gfx-shader-watch/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/alexheretic/gfx-shader-watch" +[build] +template = "custom" +script = """ +cookbook_cargo_examples watch-shaders +""" diff --git a/recipes/wip/demos/if-watch/recipe.toml b/recipes/wip/demos/if-watch/recipe.toml new file mode 100644 index 00000000..78c60464 --- /dev/null +++ b/recipes/wip/demos/if-watch/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/mxinden/if-watch" +[build] +template = "custom" +script = """ +cookbook_cargo_examples if_watch +""" diff --git a/recipes/wip/graphics/watch-stl/recipe.toml b/recipes/wip/graphics/watch-stl/recipe.toml new file mode 100644 index 00000000..e957bb25 --- /dev/null +++ b/recipes/wip/graphics/watch-stl/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/bddap/watch-stl-rust" +[build] +template = "cargo" diff --git a/recipes/wip/net/vpncloud/recipe.toml b/recipes/wip/net/vpncloud/recipe.toml new file mode 100644 index 00000000..a5e830cc --- /dev/null +++ b/recipes/wip/net/vpncloud/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +#TODO require Ruby and asciidoctor at runtime +[source] +git = "https://github.com/dswd/vpncloud" +[build] +template = "cargo" diff --git a/recipes/wip/tools/chromazone/recipe.toml b/recipes/wip/tools/chromazone/recipe.toml new file mode 100644 index 00000000..ed4d6000 --- /dev/null +++ b/recipes/wip/tools/chromazone/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/matze/chromazone" +[build] +template = "cargo" diff --git a/recipes/wip/tools/funzzy/recipe.toml b/recipes/wip/tools/funzzy/recipe.toml new file mode 100644 index 00000000..cd3933a9 --- /dev/null +++ b/recipes/wip/tools/funzzy/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/cristianoliveira/funzzy" +[build] +template = "cargo" diff --git a/recipes/wip/tools/kami/recipe.toml b/recipes/wip/tools/kami/recipe.toml new file mode 100644 index 00000000..6fe7cfb0 --- /dev/null +++ b/recipes/wip/tools/kami/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +#TODO require bat and mpv at runtime +[source] +git = "https://github.com/mrfluffy-dev/kami" +[build] +template = "cargo" diff --git a/recipes/wip/tools/watchmen/recipe.toml b/recipes/wip/tools/watchmen/recipe.toml new file mode 100644 index 00000000..3294395d --- /dev/null +++ b/recipes/wip/tools/watchmen/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ahriroot/watchmen" +[build] +template = "custom" +script = """ +cookbook_cargo_packages watchmen watchmend +""" From b83c70c43056b902e76afa0a6cb86e27adbce262 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 19 Mar 2024 12:17:07 -0600 Subject: [PATCH 1641/3180] Fix redox-ssh path --- recipes/net/{openssh => }/redox-ssh/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/net/{openssh => }/redox-ssh/recipe.toml (100%) diff --git a/recipes/net/openssh/redox-ssh/recipe.toml b/recipes/net/redox-ssh/recipe.toml similarity index 100% rename from recipes/net/openssh/redox-ssh/recipe.toml rename to recipes/net/redox-ssh/recipe.toml From 1d45ae81aa34849ec020dd702c4ef72bff824740 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 19 Mar 2024 18:21:37 +0000 Subject: [PATCH 1642/3180] update recipes --- recipes/wip/emulators/ruffle/recipe.toml | 1 - recipes/wip/sound/neothesia/recipe.toml | 2 +- recipes/wip/tools/onefetch/recipe.toml | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/wip/emulators/ruffle/recipe.toml b/recipes/wip/emulators/ruffle/recipe.toml index f984e5c9..67c6c8f6 100644 --- a/recipes/wip/emulators/ruffle/recipe.toml +++ b/recipes/wip/emulators/ruffle/recipe.toml @@ -5,7 +5,6 @@ git = "https://github.com/ruffle-rs/ruffle" template = "custom" dependencies = [ "openssl1", - "gtk3", ] script = """ cookbook_cargo_packages ruffle_desktop diff --git a/recipes/wip/sound/neothesia/recipe.toml b/recipes/wip/sound/neothesia/recipe.toml index ffe95121..cf5f58de 100644 --- a/recipes/wip/sound/neothesia/recipe.toml +++ b/recipes/wip/sound/neothesia/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO midir crate error [source] git = "https://github.com/PolyMeilex/Neothesia" [build] diff --git a/recipes/wip/tools/onefetch/recipe.toml b/recipes/wip/tools/onefetch/recipe.toml index 395d8d75..869176da 100644 --- a/recipes/wip/tools/onefetch/recipe.toml +++ b/recipes/wip/tools/onefetch/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO update rustc version [source] git = "https://github.com/o2sh/onefetch" [build] From a0a0ad407c664d33a3aac9c7b0bc1345fecacd57 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 19 Mar 2024 18:38:22 +0000 Subject: [PATCH 1643/3180] update recipes --- recipes/wip/benchmarks/divan/recipe.toml | 2 +- recipes/wip/emulators/ruffle/recipe.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/wip/benchmarks/divan/recipe.toml b/recipes/wip/benchmarks/divan/recipe.toml index 87116a09..766c3702 100644 --- a/recipes/wip/benchmarks/divan/recipe.toml +++ b/recipes/wip/benchmarks/divan/recipe.toml @@ -4,5 +4,5 @@ git = "https://github.com/nvzqz/divan" [build] template = "custom" script = """ -cookbook_cargo_packages examples +cookbook_cargo_examples examples """ diff --git a/recipes/wip/emulators/ruffle/recipe.toml b/recipes/wip/emulators/ruffle/recipe.toml index 67c6c8f6..e2147038 100644 --- a/recipes/wip/emulators/ruffle/recipe.toml +++ b/recipes/wip/emulators/ruffle/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO camino crate error [source] git = "https://github.com/ruffle-rs/ruffle" [build] From 3ffeb0d350d2cb9adc7795933ecb2217e631565d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 19 Mar 2024 18:40:45 +0000 Subject: [PATCH 1644/3180] update recipes --- recipes/wip/benchmarks/divan/recipe.toml | 8 -------- recipes/wip/codecs/wavpack/recipe.toml | 3 +++ 2 files changed, 3 insertions(+), 8 deletions(-) delete mode 100644 recipes/wip/benchmarks/divan/recipe.toml diff --git a/recipes/wip/benchmarks/divan/recipe.toml b/recipes/wip/benchmarks/divan/recipe.toml deleted file mode 100644 index 766c3702..00000000 --- a/recipes/wip/benchmarks/divan/recipe.toml +++ /dev/null @@ -1,8 +0,0 @@ -#TODO Not compiled or tested -[source] -git = "https://github.com/nvzqz/divan" -[build] -template = "custom" -script = """ -cookbook_cargo_examples examples -""" diff --git a/recipes/wip/codecs/wavpack/recipe.toml b/recipes/wip/codecs/wavpack/recipe.toml index 3dc61207..a9aa8555 100644 --- a/recipes/wip/codecs/wavpack/recipe.toml +++ b/recipes/wip/codecs/wavpack/recipe.toml @@ -3,3 +3,6 @@ tar = "https://github.com/dbry/WavPack/releases/download/5.7.0/wavpack-5.7.0.tar.xz" [build] template = "configure" +dependencies = [ + "libiconv", +] From c88e5ee8ef4c03c64fa4674b7d2c3aa2399e3f8a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 19 Mar 2024 18:56:38 +0000 Subject: [PATCH 1645/3180] update recipes --- recipes/wip/codecs/wavpack/recipe.toml | 2 +- recipes/wip/demos/tenki/recipe.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/wip/codecs/wavpack/recipe.toml b/recipes/wip/codecs/wavpack/recipe.toml index a9aa8555..3f4a28a8 100644 --- a/recipes/wip/codecs/wavpack/recipe.toml +++ b/recipes/wip/codecs/wavpack/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error - missing header [source] tar = "https://github.com/dbry/WavPack/releases/download/5.7.0/wavpack-5.7.0.tar.xz" [build] diff --git a/recipes/wip/demos/tenki/recipe.toml b/recipes/wip/demos/tenki/recipe.toml index 147814ab..bf49337a 100644 --- a/recipes/wip/demos/tenki/recipe.toml +++ b/recipes/wip/demos/tenki/recipe.toml @@ -1,6 +1,6 @@ #TODO Not compiled or tested [source] git = "https://github.com/ckaznable/tenki" -rev = "f59ba2125d46bc22680a4d2ee63b5ce864e00209" +rev = "9cf863f925e42eb30f7613db89469d739add7362" [build] template = "cargo" From b6c79c370a8cd6f0842ce776c8a4656d4e2f4995 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 20 Mar 2024 01:24:21 +0000 Subject: [PATCH 1646/3180] update recipes --- recipes/wip/demos/gfx-shader-watch/recipe.toml | 2 +- recipes/wip/demos/if-watch/recipe.toml | 2 +- recipes/wip/demos/tenki/recipe.toml | 2 +- recipes/wip/dev/crates-tui/recipe.toml | 3 +++ recipes/wip/tools/just/recipe.toml | 2 +- 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/recipes/wip/demos/gfx-shader-watch/recipe.toml b/recipes/wip/demos/gfx-shader-watch/recipe.toml index f79d3baf..22564a19 100644 --- a/recipes/wip/demos/gfx-shader-watch/recipe.toml +++ b/recipes/wip/demos/gfx-shader-watch/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO glutin crate error [source] git = "https://github.com/alexheretic/gfx-shader-watch" [build] diff --git a/recipes/wip/demos/if-watch/recipe.toml b/recipes/wip/demos/if-watch/recipe.toml index 78c60464..be84f4aa 100644 --- a/recipes/wip/demos/if-watch/recipe.toml +++ b/recipes/wip/demos/if-watch/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO require the "smol" feature flag [source] git = "https://github.com/mxinden/if-watch" [build] diff --git a/recipes/wip/demos/tenki/recipe.toml b/recipes/wip/demos/tenki/recipe.toml index bf49337a..cdf07a19 100644 --- a/recipes/wip/demos/tenki/recipe.toml +++ b/recipes/wip/demos/tenki/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/ckaznable/tenki" rev = "9cf863f925e42eb30f7613db89469d739add7362" diff --git a/recipes/wip/dev/crates-tui/recipe.toml b/recipes/wip/dev/crates-tui/recipe.toml index 8af7a014..ab62173a 100644 --- a/recipes/wip/dev/crates-tui/recipe.toml +++ b/recipes/wip/dev/crates-tui/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/ratatui-org/crates-tui" [build] template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/tools/just/recipe.toml b/recipes/wip/tools/just/recipe.toml index b6050290..a732109f 100644 --- a/recipes/wip/tools/just/recipe.toml +++ b/recipes/wip/tools/just/recipe.toml @@ -1,4 +1,4 @@ -#TODO camino crate error +#TODO camino and target crate error [source] git = "https://github.com/casey/just" [build] From 258fe12de646b918548c574135667755038a70f2 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 20 Mar 2024 15:23:00 +0000 Subject: [PATCH 1647/3180] update recipes --- recipes/wip/dev/crates-tui/recipe.toml | 2 +- recipes/wip/dev/oxidizer/recipe.toml | 2 +- recipes/wip/dev/wasmtime/recipe.toml | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/recipes/wip/dev/crates-tui/recipe.toml b/recipes/wip/dev/crates-tui/recipe.toml index ab62173a..6a37b770 100644 --- a/recipes/wip/dev/crates-tui/recipe.toml +++ b/recipes/wip/dev/crates-tui/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO port to the Orbital clipboard [source] git = "https://github.com/ratatui-org/crates-tui" [build] diff --git a/recipes/wip/dev/oxidizer/recipe.toml b/recipes/wip/dev/oxidizer/recipe.toml index 00d3f166..62b3afe9 100644 --- a/recipes/wip/dev/oxidizer/recipe.toml +++ b/recipes/wip/dev/oxidizer/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO rustc-serialize crate error [source] git = "https://github.com/ix/oxidizer" [build] diff --git a/recipes/wip/dev/wasmtime/recipe.toml b/recipes/wip/dev/wasmtime/recipe.toml index f433a457..a8f9539c 100644 --- a/recipes/wip/dev/wasmtime/recipe.toml +++ b/recipes/wip/dev/wasmtime/recipe.toml @@ -1,6 +1,5 @@ -#TODO Not compiled or tested +#TODO fs-set-times crate error [source] git = "https://github.com/bytecodealliance/wasmtime" -rev = "6613acd1e4817957a4a7745125ef063b43c273a7" [build] template = "cargo" From 499adeb9f60550b01f08150d7f87d51a4883393b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Mar 2024 12:49:07 +0000 Subject: [PATCH 1648/3180] update recipes --- recipes/wip/dev/omnibor-rs/recipe.toml | 2 +- recipes/wip/dev/rgit/recipe.toml | 3 +++ recipes/wip/dev/srgn/recipe.toml | 5 ----- recipes/wip/dev/wepl/recipe.toml | 2 +- 4 files changed, 5 insertions(+), 7 deletions(-) delete mode 100644 recipes/wip/dev/srgn/recipe.toml diff --git a/recipes/wip/dev/omnibor-rs/recipe.toml b/recipes/wip/dev/omnibor-rs/recipe.toml index 3a9e19bd..2f407ee9 100644 --- a/recipes/wip/dev/omnibor-rs/recipe.toml +++ b/recipes/wip/dev/omnibor-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO Bash error with the "--build-binary" Cargo flag [source] git = "https://github.com/omnibor/omnibor-rs" [build] diff --git a/recipes/wip/dev/rgit/recipe.toml b/recipes/wip/dev/rgit/recipe.toml index 2f628a6f..ddaff052 100644 --- a/recipes/wip/dev/rgit/recipe.toml +++ b/recipes/wip/dev/rgit/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/w4/rgit" [build] template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/dev/srgn/recipe.toml b/recipes/wip/dev/srgn/recipe.toml deleted file mode 100644 index 9b9621c2..00000000 --- a/recipes/wip/dev/srgn/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO Not compiled or tested -[source] -git = "https://github.com/alexpovel/srgn" -[build] -template = "cargo" diff --git a/recipes/wip/dev/wepl/recipe.toml b/recipes/wip/dev/wepl/recipe.toml index 19df7d20..351e6ef0 100644 --- a/recipes/wip/dev/wepl/recipe.toml +++ b/recipes/wip/dev/wepl/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO fs-set-times crate error [source] git = "https://github.com/rylev/wepl" [build] From ad5116f116f6a979011d424de8a05e38ad4a168a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Mar 2024 13:59:24 +0000 Subject: [PATCH 1649/3180] update TODOs --- recipes/wip/dev/rgit/recipe.toml | 2 +- recipes/wip/emulators/8086-emulator/recipe.toml | 2 +- recipes/wip/emulators/clementine/recipe.toml | 2 +- recipes/wip/emulators/gameboy-emu/recipe.toml | 3 +-- recipes/wip/emulators/meru/recipe.toml | 2 +- recipes/wip/emulators/mipsy/recipe.toml | 2 +- recipes/wip/emulators/rboy/recipe.toml | 2 +- 7 files changed, 7 insertions(+), 8 deletions(-) diff --git a/recipes/wip/dev/rgit/recipe.toml b/recipes/wip/dev/rgit/recipe.toml index ddaff052..8531793b 100644 --- a/recipes/wip/dev/rgit/recipe.toml +++ b/recipes/wip/dev/rgit/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error [source] git = "https://github.com/w4/rgit" [build] diff --git a/recipes/wip/emulators/8086-emulator/recipe.toml b/recipes/wip/emulators/8086-emulator/recipe.toml index 09d02c03..50be9e79 100644 --- a/recipes/wip/emulators/8086-emulator/recipe.toml +++ b/recipes/wip/emulators/8086-emulator/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/YJDoc2/8086-Emulator" [build] diff --git a/recipes/wip/emulators/clementine/recipe.toml b/recipes/wip/emulators/clementine/recipe.toml index acc805bd..475ea534 100644 --- a/recipes/wip/emulators/clementine/recipe.toml +++ b/recipes/wip/emulators/clementine/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO the webbrowser crate needs to be ported [source] git = "https://github.com/RIP-Comm/clementine" [build] diff --git a/recipes/wip/emulators/gameboy-emu/recipe.toml b/recipes/wip/emulators/gameboy-emu/recipe.toml index b0445ae5..027df352 100644 --- a/recipes/wip/emulators/gameboy-emu/recipe.toml +++ b/recipes/wip/emulators/gameboy-emu/recipe.toml @@ -1,9 +1,8 @@ -#TODO Not compiled or tested +#TODO update the Redox support in the minifb crate [source] git = "https://github.com/mohanson/gameboy" [build] template = "cargo" dependencies = [ - "libwayland", "libxkbcommon", ] diff --git a/recipes/wip/emulators/meru/recipe.toml b/recipes/wip/emulators/meru/recipe.toml index c92eff6a..12184349 100644 --- a/recipes/wip/emulators/meru/recipe.toml +++ b/recipes/wip/emulators/meru/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO value-bag crate error [source] git = "https://github.com/tanakh/meru" [build] diff --git a/recipes/wip/emulators/mipsy/recipe.toml b/recipes/wip/emulators/mipsy/recipe.toml index 17d84101..108aec67 100644 --- a/recipes/wip/emulators/mipsy/recipe.toml +++ b/recipes/wip/emulators/mipsy/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO users crate error [source] git = "https://github.com/insou22/mipsy" [build] diff --git a/recipes/wip/emulators/rboy/recipe.toml b/recipes/wip/emulators/rboy/recipe.toml index bbff10c7..d66e4e92 100644 --- a/recipes/wip/emulators/rboy/recipe.toml +++ b/recipes/wip/emulators/rboy/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO glutin crate error [source] git = "https://github.com/mvdnes/rboy" [build] From 53ffbd40ff4071a59eb77ad91c9fae13d3d91b98 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Mar 2024 14:39:32 +0000 Subject: [PATCH 1650/3180] update recipes --- recipes/wip/emulators/rvemu/recipe.toml | 2 +- recipes/wip/emulators/scemu/recipe.toml | 2 +- recipes/wip/emulators/trapezoid/recipe.toml | 5 ++- recipes/wip/emulators/wie/recipe.toml | 2 +- recipes/wip/emulators/yuzu/recipe.toml | 36 --------------------- 5 files changed, 7 insertions(+), 40 deletions(-) delete mode 100644 recipes/wip/emulators/yuzu/recipe.toml diff --git a/recipes/wip/emulators/rvemu/recipe.toml b/recipes/wip/emulators/rvemu/recipe.toml index d616ce45..695b600b 100644 --- a/recipes/wip/emulators/rvemu/recipe.toml +++ b/recipes/wip/emulators/rvemu/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/d0iasm/rvemu" [build] diff --git a/recipes/wip/emulators/scemu/recipe.toml b/recipes/wip/emulators/scemu/recipe.toml index 5c358699..d2917c6c 100644 --- a/recipes/wip/emulators/scemu/recipe.toml +++ b/recipes/wip/emulators/scemu/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/sha0coder/scemu" [build] diff --git a/recipes/wip/emulators/trapezoid/recipe.toml b/recipes/wip/emulators/trapezoid/recipe.toml index 1977a640..5d171151 100644 --- a/recipes/wip/emulators/trapezoid/recipe.toml +++ b/recipes/wip/emulators/trapezoid/recipe.toml @@ -1,5 +1,8 @@ -#TODO Not compiled or tested +#TODO make shaderc work [source] git = "https://github.com/Amjad50/Trapezoid" [build] template = "cargo" +dependencies = [ + "shaderc", +] diff --git a/recipes/wip/emulators/wie/recipe.toml b/recipes/wip/emulators/wie/recipe.toml index 665fc5a2..a24022ce 100644 --- a/recipes/wip/emulators/wie/recipe.toml +++ b/recipes/wip/emulators/wie/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error [source] git = "https://github.com/dlunch/wie" [build] diff --git a/recipes/wip/emulators/yuzu/recipe.toml b/recipes/wip/emulators/yuzu/recipe.toml deleted file mode 100644 index 7d0f3eb3..00000000 --- a/recipes/wip/emulators/yuzu/recipe.toml +++ /dev/null @@ -1,36 +0,0 @@ -#TODO probably wrong script, see https://github.com/yuzu-emu/yuzu/wiki/Building-For-Linux -[source] -git = "https://github.com/yuzu-emu/yuzu" -[build] -template = "custom" -dependencies = [ - "ffmpeg6", - "sdl2", - "qt5-base", - "boost", - "libfmt", - "zlib", - "zstd", - "openssl1", - "mesa", - "lz4", - "opus", -] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On - -DYUZU_USE_BUNDLED_SDL2=OFF - -DYUZU_USE_EXTERNAL_SDL2=OFF - -DYUZU_USE_EXTERNAL_FFMPEG=OFF -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" From 9527b88707b5e67697d2ab592104097e640c72b1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Mar 2024 16:04:17 +0000 Subject: [PATCH 1651/3180] update recipes --- recipes/wip/finance/liana/recipe.toml | 2 +- recipes/wip/finance/nakatoshi/recipe.toml | 2 +- recipes/wip/finance/ord/recipe.toml | 2 +- recipes/wip/games/rebels-in-the-sky/recipe.toml | 2 +- recipes/wip/games/sshattrick/recipe.toml | 2 +- recipes/wip/games/symbiants/recipe.toml | 2 +- recipes/wip/games/vong/recipe.toml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/recipes/wip/finance/liana/recipe.toml b/recipes/wip/finance/liana/recipe.toml index 487850f6..2418680b 100644 --- a/recipes/wip/finance/liana/recipe.toml +++ b/recipes/wip/finance/liana/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/wizardsardine/liana" [build] diff --git a/recipes/wip/finance/nakatoshi/recipe.toml b/recipes/wip/finance/nakatoshi/recipe.toml index f30e23b4..8bc38c88 100644 --- a/recipes/wip/finance/nakatoshi/recipe.toml +++ b/recipes/wip/finance/nakatoshi/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/ndelvalle/nakatoshi" [build] diff --git a/recipes/wip/finance/ord/recipe.toml b/recipes/wip/finance/ord/recipe.toml index f02b88e0..16044aa4 100644 --- a/recipes/wip/finance/ord/recipe.toml +++ b/recipes/wip/finance/ord/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO the ring crate needs to be updated [source] git = "https://github.com/ordinals/ord" [build] diff --git a/recipes/wip/games/rebels-in-the-sky/recipe.toml b/recipes/wip/games/rebels-in-the-sky/recipe.toml index 0ee3ecf8..acc3a38b 100644 --- a/recipes/wip/games/rebels-in-the-sky/recipe.toml +++ b/recipes/wip/games/rebels-in-the-sky/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO async-io and rustix crate error [source] git = "https://github.com/ricott1/rebels-in-the-sky" rev = "decd5fa822e667e283fc1f0e52b5d75cedf2c35f" diff --git a/recipes/wip/games/sshattrick/recipe.toml b/recipes/wip/games/sshattrick/recipe.toml index 3de4f77c..4a046702 100644 --- a/recipes/wip/games/sshattrick/recipe.toml +++ b/recipes/wip/games/sshattrick/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO curve25519-dalek crate error [source] git = "https://github.com/ricott1/sshattrick" [build] diff --git a/recipes/wip/games/symbiants/recipe.toml b/recipes/wip/games/symbiants/recipe.toml index 43daf59d..e336e508 100644 --- a/recipes/wip/games/symbiants/recipe.toml +++ b/recipes/wip/games/symbiants/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO the Bevy engine require rustc 1.76 or newer [source] git = "https://github.com/MeoMix/symbiants" [build] diff --git a/recipes/wip/games/vong/recipe.toml b/recipes/wip/games/vong/recipe.toml index 71b32405..621013b7 100644 --- a/recipes/wip/games/vong/recipe.toml +++ b/recipes/wip/games/vong/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/simbleau/vong" [build] From f5ff05c0f6618435f385ed773056efb6a5ff17fd Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Mar 2024 16:18:51 +0000 Subject: [PATCH 1652/3180] update recipes --- recipes/wip/graphics/pixsort/recipe.toml | 2 +- recipes/wip/graphics/reve/recipe.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/wip/graphics/pixsort/recipe.toml b/recipes/wip/graphics/pixsort/recipe.toml index 9ba2b060..45e2998d 100644 --- a/recipes/wip/graphics/pixsort/recipe.toml +++ b/recipes/wip/graphics/pixsort/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/1jz/pixsort" [build] diff --git a/recipes/wip/graphics/reve/recipe.toml b/recipes/wip/graphics/reve/recipe.toml index 4ca336cd..4008ebe1 100644 --- a/recipes/wip/graphics/reve/recipe.toml +++ b/recipes/wip/graphics/reve/recipe.toml @@ -4,5 +4,5 @@ git = "https://github.com/ONdraid/reve" [build] template = "custom" script = """ -cookbook_cargo --features reve-cli reve-gui +cookbook_cargo --features reve-cli """ From 35fe5bf25dd3ce84b2038881036face7be5e10ce Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Mar 2024 16:19:40 +0000 Subject: [PATCH 1653/3180] update recipe --- recipes/wip/graphics/reve/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/graphics/reve/recipe.toml b/recipes/wip/graphics/reve/recipe.toml index 4008ebe1..229ff7ea 100644 --- a/recipes/wip/graphics/reve/recipe.toml +++ b/recipes/wip/graphics/reve/recipe.toml @@ -4,5 +4,5 @@ git = "https://github.com/ONdraid/reve" [build] template = "custom" script = """ -cookbook_cargo --features reve-cli +cookbook_cargo_packages reve-cli """ From b9754af4a3932f2140e6035e351f9d5c30496fe7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Mar 2024 16:56:45 +0000 Subject: [PATCH 1654/3180] update recipes --- recipes/wip/graphics/reve/recipe.toml | 2 +- recipes/wip/graphics/rscale2x/recipe.toml | 2 +- recipes/wip/graphics/upscaler-rs/recipe.toml | 2 +- recipes/wip/graphics/watch-stl/recipe.toml | 2 +- recipes/wip/libs/libzimg/recipe.toml | 6 +----- recipes/wip/math/kalc/recipe.toml | 5 +++++ 6 files changed, 10 insertions(+), 9 deletions(-) diff --git a/recipes/wip/graphics/reve/recipe.toml b/recipes/wip/graphics/reve/recipe.toml index 229ff7ea..4bf45de0 100644 --- a/recipes/wip/graphics/reve/recipe.toml +++ b/recipes/wip/graphics/reve/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO clearscreen crate error (after cargo update) [source] git = "https://github.com/ONdraid/reve" [build] diff --git a/recipes/wip/graphics/rscale2x/recipe.toml b/recipes/wip/graphics/rscale2x/recipe.toml index 8463be9a..769df6d5 100644 --- a/recipes/wip/graphics/rscale2x/recipe.toml +++ b/recipes/wip/graphics/rscale2x/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/ahmetmutlugun/rscale2x" [build] diff --git a/recipes/wip/graphics/upscaler-rs/recipe.toml b/recipes/wip/graphics/upscaler-rs/recipe.toml index 4a717342..ecb4e7aa 100644 --- a/recipes/wip/graphics/upscaler-rs/recipe.toml +++ b/recipes/wip/graphics/upscaler-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/DhruvDh/upscaler" [build] diff --git a/recipes/wip/graphics/watch-stl/recipe.toml b/recipes/wip/graphics/watch-stl/recipe.toml index e957bb25..d68c738e 100644 --- a/recipes/wip/graphics/watch-stl/recipe.toml +++ b/recipes/wip/graphics/watch-stl/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO update the winit version [source] git = "https://github.com/bddap/watch-stl-rust" [build] diff --git a/recipes/wip/libs/libzimg/recipe.toml b/recipes/wip/libs/libzimg/recipe.toml index 32841a0b..cdb86d5d 100644 --- a/recipes/wip/libs/libzimg/recipe.toml +++ b/recipes/wip/libs/libzimg/recipe.toml @@ -1,10 +1,6 @@ -#TODO Not compiled or tested +#TODO missing script [source] git = "https://github.com/sekrit-twc/zimg" rev = "e5b0de6bebbcbc66732ed5afaafef6b2c7dfef87" [build] template = "custom" -script = """ -./autogen.sh -cookbook_configure -""" diff --git a/recipes/wip/math/kalc/recipe.toml b/recipes/wip/math/kalc/recipe.toml index 499b4fe8..42a791af 100644 --- a/recipes/wip/math/kalc/recipe.toml +++ b/recipes/wip/math/kalc/recipe.toml @@ -3,3 +3,8 @@ git = "https://github.com/bgkillas/kalc" [build] template = "cargo" +dependencies = [ + "libgmp", + "libmpfr", + "libmpc", +] From 1e7503daf709f4ec817bc4922e5f22eb77185e59 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Mar 2024 16:57:29 +0000 Subject: [PATCH 1655/3180] update recipe --- recipes/wip/math/kalc/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/math/kalc/recipe.toml b/recipes/wip/math/kalc/recipe.toml index 42a791af..dfa51c96 100644 --- a/recipes/wip/math/kalc/recipe.toml +++ b/recipes/wip/math/kalc/recipe.toml @@ -6,5 +6,5 @@ template = "cargo" dependencies = [ "libgmp", "libmpfr", - "libmpc", + "mpc", ] From 574b17f843aa1a7ff1c8f80ae1780344d175c574 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Mar 2024 18:07:08 +0000 Subject: [PATCH 1656/3180] update recipes --- recipes/wip/math/kalc/recipe.toml | 7 +------ recipes/wip/net/anime-downloader/recipe.toml | 3 +-- recipes/wip/net/crab-dlna/recipe.toml | 2 +- recipes/wip/net/simple-http-server/recipe.toml | 3 +++ 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/recipes/wip/math/kalc/recipe.toml b/recipes/wip/math/kalc/recipe.toml index dfa51c96..6217dc97 100644 --- a/recipes/wip/math/kalc/recipe.toml +++ b/recipes/wip/math/kalc/recipe.toml @@ -1,10 +1,5 @@ -#TODO Not compiled or tested +#TODO gmp-mpfr-sys crate error [source] git = "https://github.com/bgkillas/kalc" [build] template = "cargo" -dependencies = [ - "libgmp", - "libmpfr", - "mpc", -] diff --git a/recipes/wip/net/anime-downloader/recipe.toml b/recipes/wip/net/anime-downloader/recipe.toml index 3451f0bd..5c9b93fd 100644 --- a/recipes/wip/net/anime-downloader/recipe.toml +++ b/recipes/wip/net/anime-downloader/recipe.toml @@ -1,6 +1,5 @@ -#TODO Not compiled or tested +#TODO port to Orbital [source] git = "https://github.com/B0SEmc/Anime-Downloader" -rev = "36439fcf8665a363d95fe0e56de69909d0ff381b" [build] template = "cargo" diff --git a/recipes/wip/net/crab-dlna/recipe.toml b/recipes/wip/net/crab-dlna/recipe.toml index d2997e5a..4a6217f8 100644 --- a/recipes/wip/net/crab-dlna/recipe.toml +++ b/recipes/wip/net/crab-dlna/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO get_if_addrs crate error [source] git = "https://github.com/gabrielmagno/crab-dlna" [build] diff --git a/recipes/wip/net/simple-http-server/recipe.toml b/recipes/wip/net/simple-http-server/recipe.toml index f8a88573..a269ad81 100644 --- a/recipes/wip/net/simple-http-server/recipe.toml +++ b/recipes/wip/net/simple-http-server/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/TheWaWaR/simple-http-server" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 6f29e06bbab7c229cbc2ca64bd0241621674a50e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Mar 2024 20:01:15 +0000 Subject: [PATCH 1657/3180] update recipes --- recipes/wip/net/boringtun/recipe.toml | 2 +- recipes/wip/net/dufs/recipe.toml | 2 +- recipes/wip/net/floresta/recipe.toml | 2 +- recipes/wip/net/simple-http-server/recipe.toml | 2 +- recipes/wip/net/slumber/recipe.toml | 2 +- recipes/wip/net/vpncloud/recipe.toml | 2 +- recipes/wip/security/angryoxide/recipe.toml | 2 +- recipes/wip/services/grub/recipe.toml | 2 +- recipes/wip/sound/audeye/recipe.toml | 2 +- recipes/wip/sound/soundboard/recipe.toml | 3 +++ 10 files changed, 12 insertions(+), 9 deletions(-) diff --git a/recipes/wip/net/boringtun/recipe.toml b/recipes/wip/net/boringtun/recipe.toml index 5ca7af78..2f4e2531 100644 --- a/recipes/wip/net/boringtun/recipe.toml +++ b/recipes/wip/net/boringtun/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO source code error [source] git = "https://github.com/cloudflare/boringtun" [build] diff --git a/recipes/wip/net/dufs/recipe.toml b/recipes/wip/net/dufs/recipe.toml index 3bd1e128..3949986d 100644 --- a/recipes/wip/net/dufs/recipe.toml +++ b/recipes/wip/net/dufs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO if-addrs crate error [source] git = "https://github.com/sigoden/dufs" [build] diff --git a/recipes/wip/net/floresta/recipe.toml b/recipes/wip/net/floresta/recipe.toml index 7143cbcf..5ce87777 100644 --- a/recipes/wip/net/floresta/recipe.toml +++ b/recipes/wip/net/floresta/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error [source] git = "https://github.com/Davidson-Souza/Floresta" [build] diff --git a/recipes/wip/net/simple-http-server/recipe.toml b/recipes/wip/net/simple-http-server/recipe.toml index a269ad81..e654b507 100644 --- a/recipes/wip/net/simple-http-server/recipe.toml +++ b/recipes/wip/net/simple-http-server/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO open crate error [source] git = "https://github.com/TheWaWaR/simple-http-server" [build] diff --git a/recipes/wip/net/slumber/recipe.toml b/recipes/wip/net/slumber/recipe.toml index c2e81460..cae7f660 100644 --- a/recipes/wip/net/slumber/recipe.toml +++ b/recipes/wip/net/slumber/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO port to Orbital [source] git = "https://github.com/LucasPickering/slumber" [build] diff --git a/recipes/wip/net/vpncloud/recipe.toml b/recipes/wip/net/vpncloud/recipe.toml index a5e830cc..ced2c226 100644 --- a/recipes/wip/net/vpncloud/recipe.toml +++ b/recipes/wip/net/vpncloud/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO libc and nix crate error #TODO require Ruby and asciidoctor at runtime [source] git = "https://github.com/dswd/vpncloud" diff --git a/recipes/wip/security/angryoxide/recipe.toml b/recipes/wip/security/angryoxide/recipe.toml index 73d3e89f..6363cae7 100644 --- a/recipes/wip/security/angryoxide/recipe.toml +++ b/recipes/wip/security/angryoxide/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO port to Orbital #TODO in case of errors, read https://github.com/Ragnt/AngryOxide#building-from-source [source] git = "https://github.com/Ragnt/AngryOxide" diff --git a/recipes/wip/services/grub/recipe.toml b/recipes/wip/services/grub/recipe.toml index f674fb2b..e314bc84 100644 --- a/recipes/wip/services/grub/recipe.toml +++ b/recipes/wip/services/grub/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error [source] tar = "https://ftp.gnu.org/gnu/grub/grub-2.12.tar.xz" [build] diff --git a/recipes/wip/sound/audeye/recipe.toml b/recipes/wip/sound/audeye/recipe.toml index 20870cef..2ed21939 100644 --- a/recipes/wip/sound/audeye/recipe.toml +++ b/recipes/wip/sound/audeye/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error [source] git = "https://github.com/maxmarsc/audeye" [build] diff --git a/recipes/wip/sound/soundboard/recipe.toml b/recipes/wip/sound/soundboard/recipe.toml index 9e12ec27..74c1e05c 100644 --- a/recipes/wip/sound/soundboard/recipe.toml +++ b/recipes/wip/sound/soundboard/recipe.toml @@ -6,3 +6,6 @@ template = "custom" script = """ cookbook_cargo --features full """ +dependencies = [ + "glib", +] From 1b5c1fd42bc4a4fb1f7901b8c1aaac0e87051c90 Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Sat, 23 Mar 2024 14:08:43 +0100 Subject: [PATCH 1658/3180] Fix make clean. --- Cargo.lock | 7 +++++++ clean.sh | 4 ++-- cook.sh | 13 ++++++++++--- fetch.sh | 10 ++++------ src/bin/list_recipes.rs | 16 ++++++++++++++-- src/recipe_find.rs | 13 +++++++++---- unfetch.sh | 4 ++-- 7 files changed, 48 insertions(+), 19 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6a39a6d1..dae3c033 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -68,6 +68,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "anyhow" +version = "1.0.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247" + [[package]] name = "arg_parser" version = "0.1.0" @@ -1213,6 +1219,7 @@ dependencies = [ name = "redox_cookbook" version = "0.1.0" dependencies = [ + "anyhow", "blake3 1.5.0", "pbr", "pkgar", diff --git a/clean.sh b/clean.sh index d0b85abc..7aba7ca8 100755 --- a/clean.sh +++ b/clean.sh @@ -10,7 +10,7 @@ else recipes="$@" fi -for recipe in $recipes +for recipe_path in $recipes do - ./cook.sh "$recipe" distclean + ./cook.sh "$recipe_path" distclean done diff --git a/cook.sh b/cook.sh index de9bb119..22445a04 100755 --- a/cook.sh +++ b/cook.sh @@ -365,7 +365,14 @@ function op { if [ -n "$1" ] then - recipe_path=`target/release/find_recipe $1` + if (echo "$1" | grep '.*/.*' >/dev/null); then + recipe_name=$(basename "$1") + recipe_path="recipes/$1" + else + recipe_name="$1" + recipe_path=`target/release/find_recipe $recipe_name` + fi + if [ -d "$ROOT/$recipe_path" ] then export COOKBOOK_RECIPE="${ROOT}/$recipe_path" @@ -402,10 +409,10 @@ then for i in "${ops[@]}" do - op "$1" "$i" + op "$recipe_name" "$i" done else - echo "cook.sh: recipe '$1' not found" >&2 + echo "cook.sh: recipe '$recipe_name' at not found" >&2 exit 1 fi else diff --git a/fetch.sh b/fetch.sh index 1c5c57a8..b83caa6e 100755 --- a/fetch.sh +++ b/fetch.sh @@ -10,14 +10,12 @@ else recipes="$@" fi -for recipe in $recipes +for recipe_path in $recipes do - recipe_path=`target/release/find_recipe $recipe` if [ -e "$recipe_path/recipe.toml" ] then - target/release/cook --fetch-only "$recipe" - continue + target/release/cook --fetch-only "$recipe_path" + else + ./cook.sh "$recipe_path" fetch fi - - ./cook.sh "$recipe" fetch done diff --git a/src/bin/list_recipes.rs b/src/bin/list_recipes.rs index 759dbc9e..95264c9d 100644 --- a/src/bin/list_recipes.rs +++ b/src/bin/list_recipes.rs @@ -4,7 +4,9 @@ use std::process::exit; // use clap::Parser; fn main() { - let result = list_recipes( Path::new("recipes")); + let print_short = std::env::args().nth(1).map_or(false, |a| a == "-s" || a == "--short"); + + let result = list_recipes( Path::new("recipes"), Default::default()); match result { Ok(result) => { @@ -12,7 +14,17 @@ fn main() { eprintln!("recipes not found"); exit(1); } else { - result.iter().for_each(|recipe| println!("{recipe}")); + for path in result { + let Some(file_name) = path.file_name() else { + continue; + }; + + if print_short { + println!("{}", file_name.to_string_lossy()); + } else { + println!("{}", path.to_string_lossy()); + } + } exit(0); } } diff --git a/src/recipe_find.rs b/src/recipe_find.rs index 1cb55169..8354264e 100644 --- a/src/recipe_find.rs +++ b/src/recipe_find.rs @@ -45,8 +45,8 @@ pub fn recipe_find(recipe: &str, dir: &Path) -> Result, String> Ok(recipe_path) } -pub fn list_recipes(dir: &Path) -> Result, String> { - let mut recipes = Vec::::new(); +pub fn list_recipes(dir: &Path, prefix: PathBuf) -> Result, String> { + let mut recipes = Vec::::new(); if !dir.is_dir() { return Ok(recipes); } @@ -55,7 +55,7 @@ pub fn list_recipes(dir: &Path) -> Result, String> { if entry.file_name() == OsStr::new("recipe.sh") || entry.file_name() == OsStr::new("recipe.toml") { - recipes.push(dir.file_name().ok_or(format!("could not unwrap the filename for {:?}", dir))?.to_string_lossy().to_string()); + recipes.push(prefix); return Ok(recipes); } } @@ -65,7 +65,12 @@ pub fn list_recipes(dir: &Path) -> Result, String> { if !entry.file_type().map_err(|e| e.to_string())?.is_dir() { continue; } - let mut found = list_recipes(entry.path().as_path())?; + let name = entry.file_name(); + let Some(name) = name.to_str() else { + eprintln!("invalid UTF-8 for entry {entry:?}"); + continue; + }; + let mut found = list_recipes(entry.path().as_path(), prefix.join(name))?; recipes.append(&mut found); } recipes.sort(); diff --git a/unfetch.sh b/unfetch.sh index b6877cc3..eb73178c 100755 --- a/unfetch.sh +++ b/unfetch.sh @@ -10,7 +10,7 @@ else recipes="$@" fi -for recipe in $recipes +for recipe_path in $recipes do - ./cook.sh "$recipe" unfetch + ./cook.sh "$recipe_path" unfetch done From 99d559c80fd33b45ac55b463a67ba54bd6297c91 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Mar 2024 13:24:27 +0000 Subject: [PATCH 1659/3180] Remove the nginx duplication --- recipes/wip/net/nginx/recipe.toml | 2 +- recipes/wip/tools/nginx/recipe.toml | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) delete mode 100644 recipes/wip/tools/nginx/recipe.toml diff --git a/recipes/wip/net/nginx/recipe.toml b/recipes/wip/net/nginx/recipe.toml index ddd37cd9..a3ef1c22 100644 --- a/recipes/wip/net/nginx/recipe.toml +++ b/recipes/wip/net/nginx/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO Compilation error [source] tar = "https://nginx.org/download/nginx-1.24.0.tar.gz" [build] diff --git a/recipes/wip/tools/nginx/recipe.toml b/recipes/wip/tools/nginx/recipe.toml deleted file mode 100644 index a3ef1c22..00000000 --- a/recipes/wip/tools/nginx/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO Compilation error -[source] -tar = "https://nginx.org/download/nginx-1.24.0.tar.gz" -[build] -template = "configure" From 921972fb6575aa3730c50709d8fe63071b684a92 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Mar 2024 15:32:05 +0000 Subject: [PATCH 1660/3180] update TODOs --- recipes/wip/sound/scope-tui/recipe.toml | 2 +- recipes/wip/sound/tuisic/recipe.toml | 2 +- recipes/wip/tools/bvr/recipe.toml | 2 +- recipes/wip/tools/clipcat/recipe.toml | 2 +- recipes/wip/tools/conceal/recipe.toml | 2 +- recipes/wip/tools/dead-ringer/recipe.toml | 2 +- recipes/wip/tools/envio/recipe.toml | 2 +- recipes/wip/tools/lan-mouse/recipe.toml | 2 +- recipes/wip/tools/mhv/recipe.toml | 2 +- recipes/wip/tools/pixelsort/recipe.toml | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/recipes/wip/sound/scope-tui/recipe.toml b/recipes/wip/sound/scope-tui/recipe.toml index dcdfe088..9af76bc5 100644 --- a/recipes/wip/sound/scope-tui/recipe.toml +++ b/recipes/wip/sound/scope-tui/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/alemidev/scope-tui" [build] diff --git a/recipes/wip/sound/tuisic/recipe.toml b/recipes/wip/sound/tuisic/recipe.toml index 8fc5416b..00dae88d 100644 --- a/recipes/wip/sound/tuisic/recipe.toml +++ b/recipes/wip/sound/tuisic/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO rustc-serialize crate error [source] git = "https://github.com/saubuny/tuisic" [build] diff --git a/recipes/wip/tools/bvr/recipe.toml b/recipes/wip/tools/bvr/recipe.toml index 023e4ab4..ef583d5d 100644 --- a/recipes/wip/tools/bvr/recipe.toml +++ b/recipes/wip/tools/bvr/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO port to Orbital [source] git = "https://github.com/Avarel/bvr" [build] diff --git a/recipes/wip/tools/clipcat/recipe.toml b/recipes/wip/tools/clipcat/recipe.toml index 70adc0cf..f1a12c1a 100644 --- a/recipes/wip/tools/clipcat/recipe.toml +++ b/recipes/wip/tools/clipcat/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO port to Orbital [source] git = "https://github.com/xrelkd/clipcat" [build] diff --git a/recipes/wip/tools/conceal/recipe.toml b/recipes/wip/tools/conceal/recipe.toml index 38806edb..4d6aa7a4 100644 --- a/recipes/wip/tools/conceal/recipe.toml +++ b/recipes/wip/tools/conceal/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/TD-Sky/conceal" [build] diff --git a/recipes/wip/tools/dead-ringer/recipe.toml b/recipes/wip/tools/dead-ringer/recipe.toml index da77c3c5..349c29f2 100644 --- a/recipes/wip/tools/dead-ringer/recipe.toml +++ b/recipes/wip/tools/dead-ringer/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/ztroop/dead-ringer" rev = "c35398134a1bc3c44c1ddf24749b4a7643306870" diff --git a/recipes/wip/tools/envio/recipe.toml b/recipes/wip/tools/envio/recipe.toml index 5bb3ccf9..6cff5cd1 100644 --- a/recipes/wip/tools/envio/recipe.toml +++ b/recipes/wip/tools/envio/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO require rustc 1.75 or newer [source] git = "https://github.com/envio-cli/envio" [build] diff --git a/recipes/wip/tools/lan-mouse/recipe.toml b/recipes/wip/tools/lan-mouse/recipe.toml index c5cb6e9d..10f922d3 100644 --- a/recipes/wip/tools/lan-mouse/recipe.toml +++ b/recipes/wip/tools/lan-mouse/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make GTK4 work [source] git = "https://github.com/feschber/lan-mouse" [build] diff --git a/recipes/wip/tools/mhv/recipe.toml b/recipes/wip/tools/mhv/recipe.toml index 9a17655e..e0c3e158 100644 --- a/recipes/wip/tools/mhv/recipe.toml +++ b/recipes/wip/tools/mhv/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/jgardona/mhv" [build] diff --git a/recipes/wip/tools/pixelsort/recipe.toml b/recipes/wip/tools/pixelsort/recipe.toml index 60ea4266..d1a974ba 100644 --- a/recipes/wip/tools/pixelsort/recipe.toml +++ b/recipes/wip/tools/pixelsort/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/Void-ux/pixelsort" [build] From 34f5b98255ced18b8addc0f355d830a4c50f1664 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Mar 2024 15:44:52 +0000 Subject: [PATCH 1661/3180] update recipe --- recipes/wip/tools/run/recipe.toml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/recipes/wip/tools/run/recipe.toml b/recipes/wip/tools/run/recipe.toml index 6cbbfa07..fa2c06bd 100644 --- a/recipes/wip/tools/run/recipe.toml +++ b/recipes/wip/tools/run/recipe.toml @@ -2,4 +2,8 @@ [source] git = "https://github.com/LyonSyonII/run" [build] -template = "cargo" +template = "custom" +script = """ +cd "${COOKBOOK_SOURCE}"/cli +cookbook_cargo +""" From 0461640461d65a20ab91274f80de74104ba2d131 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Mar 2024 16:35:25 +0000 Subject: [PATCH 1662/3180] update recipes --- recipes/wip/tools/rfz/recipe.toml | 2 +- recipes/wip/tools/rix/recipe.toml | 2 +- recipes/wip/tools/run/recipe.toml | 2 +- recipes/wip/tools/rusty-psn-cli/recipe.toml | 2 +- recipes/wip/tools/rusty-psn-gui/recipe.toml | 2 +- recipes/wip/tools/rustytube/recipe.toml | 5 ----- recipes/wip/tools/tinywasm/recipe.toml | 2 +- recipes/wip/tools/toipe/recipe.toml | 2 +- 8 files changed, 7 insertions(+), 12 deletions(-) delete mode 100644 recipes/wip/tools/rustytube/recipe.toml diff --git a/recipes/wip/tools/rfz/recipe.toml b/recipes/wip/tools/rfz/recipe.toml index 51e93ca1..eb11559a 100644 --- a/recipes/wip/tools/rfz/recipe.toml +++ b/recipes/wip/tools/rfz/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/MangoTzara/rfz" [build] diff --git a/recipes/wip/tools/rix/recipe.toml b/recipes/wip/tools/rix/recipe.toml index ba9f08d7..3b0da13b 100644 --- a/recipes/wip/tools/rix/recipe.toml +++ b/recipes/wip/tools/rix/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error [source] git = "https://github.com/urbas/rix" [build] diff --git a/recipes/wip/tools/run/recipe.toml b/recipes/wip/tools/run/recipe.toml index fa2c06bd..a15e18f5 100644 --- a/recipes/wip/tools/run/recipe.toml +++ b/recipes/wip/tools/run/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO fix the script [source] git = "https://github.com/LyonSyonII/run" [build] diff --git a/recipes/wip/tools/rusty-psn-cli/recipe.toml b/recipes/wip/tools/rusty-psn-cli/recipe.toml index 558abe14..9306f067 100644 --- a/recipes/wip/tools/rusty-psn-cli/recipe.toml +++ b/recipes/wip/tools/rusty-psn-cli/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO port to Orbital [source] git = "https://github.com/RainbowCookie32/rusty-psn" [build] diff --git a/recipes/wip/tools/rusty-psn-gui/recipe.toml b/recipes/wip/tools/rusty-psn-gui/recipe.toml index 8298b981..40478c79 100644 --- a/recipes/wip/tools/rusty-psn-gui/recipe.toml +++ b/recipes/wip/tools/rusty-psn-gui/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO port to Orbital [source] git = "https://github.com/RainbowCookie32/rusty-psn" [build] diff --git a/recipes/wip/tools/rustytube/recipe.toml b/recipes/wip/tools/rustytube/recipe.toml deleted file mode 100644 index c59604ed..00000000 --- a/recipes/wip/tools/rustytube/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO Not compiled or tested -[source] -git = "https://github.com/opensourcecheemsburgers/RustyTube" -[build] -template = "cargo" diff --git a/recipes/wip/tools/tinywasm/recipe.toml b/recipes/wip/tools/tinywasm/recipe.toml index 1eb5f37f..52119d08 100644 --- a/recipes/wip/tools/tinywasm/recipe.toml +++ b/recipes/wip/tools/tinywasm/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO configuration error [source] git = "https://github.com/explodingcamera/tinywasm" [build] diff --git a/recipes/wip/tools/toipe/recipe.toml b/recipes/wip/tools/toipe/recipe.toml index 5ee874ad..5b093d2f 100644 --- a/recipes/wip/tools/toipe/recipe.toml +++ b/recipes/wip/tools/toipe/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/Samyak2/toipe" [build] From 0b6e6c5d13f10db73f29f3d408b9cf8a697b605b Mon Sep 17 00:00:00 2001 From: Bendeguz Pisch Date: Sun, 24 Mar 2024 17:39:51 +0000 Subject: [PATCH 1663/3180] APR recipe update --- recipes/wip/dev/apr/recipe.toml | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/recipes/wip/dev/apr/recipe.toml b/recipes/wip/dev/apr/recipe.toml index 13ce6850..c7d60c60 100644 --- a/recipes/wip/dev/apr/recipe.toml +++ b/recipes/wip/dev/apr/recipe.toml @@ -1,5 +1,21 @@ -#TODO compilation error +#TODO compiled but not tested +#NOTE Please do not remove expat dependency -- while it's not direct, apr-util build breaks if apr does not have it. + [source] tar = "https://dlcdn.apache.org//apr/apr-1.7.4.tar.bz2" [build] -template = "configure" +template = "custom" +dependencies = [ + "expat", +] +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + ac_cv_file__dev_zero=yes + apr_cv_process_shared_works=yes + apr_cv_mutex_robust_shared=no + apr_cv_tcp_nodelay_with_cork=yes +) +cookbook_configure +""" + + From 45f0de3250c4f27d75e6b5b6f911c23a0dc6156e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 24 Mar 2024 20:46:27 +0000 Subject: [PATCH 1664/3180] update recipes --- recipes/wip/tools/chromazone/recipe.toml | 2 +- recipes/wip/tools/funzzy/recipe.toml | 2 +- recipes/wip/tools/kami/recipe.toml | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/wip/tools/chromazone/recipe.toml b/recipes/wip/tools/chromazone/recipe.toml index ed4d6000..0e3be8f0 100644 --- a/recipes/wip/tools/chromazone/recipe.toml +++ b/recipes/wip/tools/chromazone/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/matze/chromazone" [build] diff --git a/recipes/wip/tools/funzzy/recipe.toml b/recipes/wip/tools/funzzy/recipe.toml index cd3933a9..37ee569b 100644 --- a/recipes/wip/tools/funzzy/recipe.toml +++ b/recipes/wip/tools/funzzy/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/cristianoliveira/funzzy" [build] diff --git a/recipes/wip/tools/kami/recipe.toml b/recipes/wip/tools/kami/recipe.toml index 6fe7cfb0..104a1952 100644 --- a/recipes/wip/tools/kami/recipe.toml +++ b/recipes/wip/tools/kami/recipe.toml @@ -4,3 +4,6 @@ git = "https://github.com/mrfluffy-dev/kami" [build] template = "cargo" +dependencies = [ + "openssl!', +] From a3096ef766718dad2011dabff4b88a70f626e4cf Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 24 Mar 2024 20:53:42 +0000 Subject: [PATCH 1665/3180] fix typo --- recipes/wip/tools/kami/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/tools/kami/recipe.toml b/recipes/wip/tools/kami/recipe.toml index 104a1952..ef839fd1 100644 --- a/recipes/wip/tools/kami/recipe.toml +++ b/recipes/wip/tools/kami/recipe.toml @@ -5,5 +5,5 @@ git = "https://github.com/mrfluffy-dev/kami" [build] template = "cargo" dependencies = [ - "openssl!', + "openssl1', ] From fbbd4d76b896bbfb710178bf4236b175b3c74c5d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 24 Mar 2024 21:01:48 +0000 Subject: [PATCH 1666/3180] fix other typo --- recipes/wip/tools/kami/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/tools/kami/recipe.toml b/recipes/wip/tools/kami/recipe.toml index ef839fd1..67099368 100644 --- a/recipes/wip/tools/kami/recipe.toml +++ b/recipes/wip/tools/kami/recipe.toml @@ -5,5 +5,5 @@ git = "https://github.com/mrfluffy-dev/kami" [build] template = "cargo" dependencies = [ - "openssl1', + "openssl1", ] From bf011229956358f5aed064179577c00e4f03d9c2 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 24 Mar 2024 21:37:48 +0000 Subject: [PATCH 1667/3180] update recipes --- recipes/wip/tools/kami/recipe.toml | 2 +- recipes/wip/tools/watchmen/recipe.toml | 2 +- recipes/wip/tui/rust-kanban/recipe.toml | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/wip/tools/kami/recipe.toml b/recipes/wip/tools/kami/recipe.toml index 67099368..d1d72db8 100644 --- a/recipes/wip/tools/kami/recipe.toml +++ b/recipes/wip/tools/kami/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO termsize crate error (after cargo update) #TODO require bat and mpv at runtime [source] git = "https://github.com/mrfluffy-dev/kami" diff --git a/recipes/wip/tools/watchmen/recipe.toml b/recipes/wip/tools/watchmen/recipe.toml index 3294395d..a50d22ba 100644 --- a/recipes/wip/tools/watchmen/recipe.toml +++ b/recipes/wip/tools/watchmen/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/ahriroot/watchmen" [build] diff --git a/recipes/wip/tui/rust-kanban/recipe.toml b/recipes/wip/tui/rust-kanban/recipe.toml index 48b192d4..16c70dc5 100644 --- a/recipes/wip/tui/rust-kanban/recipe.toml +++ b/recipes/wip/tui/rust-kanban/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/yashs662/rust_kanban" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 63675d76dc5147aea0abb69dc55a075cb080a60f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 25 Mar 2024 02:07:24 +0000 Subject: [PATCH 1668/3180] update recipes --- recipes/wip/tui/gitu/recipe.toml | 2 +- recipes/wip/tui/rust-kanban/recipe.toml | 2 +- recipes/wip/tui/sshs/recipe.toml | 2 +- recipes/wip/tui/syndicationd/recipe.toml | 2 +- recipes/wip/tui/tooters/recipe.toml | 3 +++ 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/recipes/wip/tui/gitu/recipe.toml b/recipes/wip/tui/gitu/recipe.toml index 6ba44f7b..bfff8af6 100644 --- a/recipes/wip/tui/gitu/recipe.toml +++ b/recipes/wip/tui/gitu/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO update the redox_syscall crate version [source] git = "https://github.com/altsem/gitu" [build] diff --git a/recipes/wip/tui/rust-kanban/recipe.toml b/recipes/wip/tui/rust-kanban/recipe.toml index 16c70dc5..017dbaae 100644 --- a/recipes/wip/tui/rust-kanban/recipe.toml +++ b/recipes/wip/tui/rust-kanban/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/yashs662/rust_kanban" [build] diff --git a/recipes/wip/tui/sshs/recipe.toml b/recipes/wip/tui/sshs/recipe.toml index cc2426db..760d6e13 100644 --- a/recipes/wip/tui/sshs/recipe.toml +++ b/recipes/wip/tui/sshs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/quantumsheep/sshs" rev = "116cb8d0b360e8bb47acfdb3398702f89d866b12" diff --git a/recipes/wip/tui/syndicationd/recipe.toml b/recipes/wip/tui/syndicationd/recipe.toml index 11ab61bc..4cff8c65 100644 --- a/recipes/wip/tui/syndicationd/recipe.toml +++ b/recipes/wip/tui/syndicationd/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO synd-term crate error [source] git = "https://github.com/ymgyt/syndicationd" [build] diff --git a/recipes/wip/tui/tooters/recipe.toml b/recipes/wip/tui/tooters/recipe.toml index 90ce36f0..c0a7b372 100644 --- a/recipes/wip/tui/tooters/recipe.toml +++ b/recipes/wip/tui/tooters/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/joshka/tooters" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 71f5be2db45e94272316a555de3e6166cde9d00e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 25 Mar 2024 02:26:45 +0000 Subject: [PATCH 1669/3180] update recipes --- recipes/wip/tui/tooters/recipe.toml | 2 +- recipes/wip/video/detect-scene-change/recipe.toml | 3 +++ recipes/wip/video/gopro-assembler/recipe.toml | 2 +- recipes/wip/video/smoothie-rs/recipe.toml | 2 +- recipes/wip/video/streamlib/recipe.toml | 3 +++ 5 files changed, 9 insertions(+), 3 deletions(-) diff --git a/recipes/wip/tui/tooters/recipe.toml b/recipes/wip/tui/tooters/recipe.toml index c0a7b372..382f4bde 100644 --- a/recipes/wip/tui/tooters/recipe.toml +++ b/recipes/wip/tui/tooters/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO port the webbrowser crate [source] git = "https://github.com/joshka/tooters" [build] diff --git a/recipes/wip/video/detect-scene-change/recipe.toml b/recipes/wip/video/detect-scene-change/recipe.toml index 48c23e72..f23ff2f2 100644 --- a/recipes/wip/video/detect-scene-change/recipe.toml +++ b/recipes/wip/video/detect-scene-change/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/soruly/detect-scene-change" [build] template = "cargo" +dependencies = [ + "ffmpeg6", +] diff --git a/recipes/wip/video/gopro-assembler/recipe.toml b/recipes/wip/video/gopro-assembler/recipe.toml index a0a32b50..b260cf57 100644 --- a/recipes/wip/video/gopro-assembler/recipe.toml +++ b/recipes/wip/video/gopro-assembler/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/alichtman/gopro-chaptered-video-assembler" [build] diff --git a/recipes/wip/video/smoothie-rs/recipe.toml b/recipes/wip/video/smoothie-rs/recipe.toml index 4e0027b0..1a1846a7 100644 --- a/recipes/wip/video/smoothie-rs/recipe.toml +++ b/recipes/wip/video/smoothie-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO rfd crate error [source] git = "https://github.com/couleur-tweak-tips/smoothie-rs" [build] diff --git a/recipes/wip/video/streamlib/recipe.toml b/recipes/wip/video/streamlib/recipe.toml index a8508b7d..f8b214c3 100644 --- a/recipes/wip/video/streamlib/recipe.toml +++ b/recipes/wip/video/streamlib/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/streamlib/streamlib" [build] template = "cargo" +dependencies = [ + "openssl1", +] From e6d3be8fed5e52b998e7df5a39e9843eeafb9fea Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 25 Mar 2024 02:56:17 +0000 Subject: [PATCH 1670/3180] update recipes --- recipes/wip/video/streamlib/recipe.toml | 2 +- recipes/wip/video/sub-batch/recipe.toml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/video/streamlib/recipe.toml b/recipes/wip/video/streamlib/recipe.toml index f8b214c3..bf692d7c 100644 --- a/recipes/wip/video/streamlib/recipe.toml +++ b/recipes/wip/video/streamlib/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO shared_child crate error [source] git = "https://github.com/streamlib/streamlib" [build] diff --git a/recipes/wip/video/sub-batch/recipe.toml b/recipes/wip/video/sub-batch/recipe.toml index 40b48c27..56cff4db 100644 --- a/recipes/wip/video/sub-batch/recipe.toml +++ b/recipes/wip/video/sub-batch/recipe.toml @@ -1,6 +1,5 @@ #TODO Not compiled or tested [source] git = "https://github.com/kl/sub-batch" -rev = "a63ba33c6d0fdcb0e7a83da1c16bd8a19a43472b" [build] template = "cargo" From 39c77b1c96c4ae8f31953f6ec357873ff9a87180 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 25 Mar 2024 03:17:17 +0000 Subject: [PATCH 1671/3180] update recipes --- recipes/wip/video/sub-batch/recipe.toml | 2 +- recipes/wip/video/trimmeroni/recipe.toml | 2 +- recipes/wip/video/video4discord/recipe.toml | 5 ++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/recipes/wip/video/sub-batch/recipe.toml b/recipes/wip/video/sub-batch/recipe.toml index 56cff4db..09263a7e 100644 --- a/recipes/wip/video/sub-batch/recipe.toml +++ b/recipes/wip/video/sub-batch/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO interprocess crate error [source] git = "https://github.com/kl/sub-batch" [build] diff --git a/recipes/wip/video/trimmeroni/recipe.toml b/recipes/wip/video/trimmeroni/recipe.toml index 079cbf14..2666aa2d 100644 --- a/recipes/wip/video/trimmeroni/recipe.toml +++ b/recipes/wip/video/trimmeroni/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/outfrost/trimmeroni" [build] diff --git a/recipes/wip/video/video4discord/recipe.toml b/recipes/wip/video/video4discord/recipe.toml index b7faa52e..05f2beb4 100644 --- a/recipes/wip/video/video4discord/recipe.toml +++ b/recipes/wip/video/video4discord/recipe.toml @@ -2,4 +2,7 @@ [source] git = "https://github.com/Seebass22/video4discord" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages video4discord +""" From dd52ab5fa833c029a5a11561f2e405b0779c6b44 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 25 Mar 2024 03:22:19 +0000 Subject: [PATCH 1672/3180] update recipes --- recipes/wip/video/video4discord/recipe.toml | 2 +- recipes/wip/video/yt-chanvids/recipe.toml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/video/video4discord/recipe.toml b/recipes/wip/video/video4discord/recipe.toml index 05f2beb4..975d69ba 100644 --- a/recipes/wip/video/video4discord/recipe.toml +++ b/recipes/wip/video/video4discord/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/Seebass22/video4discord" [build] diff --git a/recipes/wip/video/yt-chanvids/recipe.toml b/recipes/wip/video/yt-chanvids/recipe.toml index b97f2d99..88e0a5f7 100644 --- a/recipes/wip/video/yt-chanvids/recipe.toml +++ b/recipes/wip/video/yt-chanvids/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/daniel-araujo/yt-chanvids" [build] template = "cargo" +dependencies = [ + "openssl1", +] From b41f3a5f8890cff7c2c9ddae8064495feba2c1dc Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 25 Mar 2024 03:27:21 +0000 Subject: [PATCH 1673/3180] update recipes --- recipes/wip/video/lecturecut/recipe.toml | 2 +- recipes/wip/video/yt-chanvids/recipe.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/wip/video/lecturecut/recipe.toml b/recipes/wip/video/lecturecut/recipe.toml index 398da518..23b3e1c1 100644 --- a/recipes/wip/video/lecturecut/recipe.toml +++ b/recipes/wip/video/lecturecut/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO update the redox_syscall crate version (after cargo update) [source] git = "https://github.com/LectureCut/CLI" [build] diff --git a/recipes/wip/video/yt-chanvids/recipe.toml b/recipes/wip/video/yt-chanvids/recipe.toml index 88e0a5f7..c9a0bf71 100644 --- a/recipes/wip/video/yt-chanvids/recipe.toml +++ b/recipes/wip/video/yt-chanvids/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/daniel-araujo/yt-chanvids" [build] From 1b7bf57bc9f54e2a6f2f6881e8727621ffc365da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= Date: Mon, 22 Jan 2024 22:30:56 +0100 Subject: [PATCH 1674/3180] apr: fix build --- recipes/wip/dev/apr-util/recipe.toml | 23 +++- recipes/wip/dev/apr-util/redox.patch | 41 +++++++ recipes/wip/dev/apr/recipe.toml | 18 +-- recipes/wip/dev/apr/redox.patch | 175 +++++++++++++++++++++++++++ 4 files changed, 241 insertions(+), 16 deletions(-) create mode 100644 recipes/wip/dev/apr-util/redox.patch create mode 100644 recipes/wip/dev/apr/redox.patch diff --git a/recipes/wip/dev/apr-util/recipe.toml b/recipes/wip/dev/apr-util/recipe.toml index 414a228d..e2ce43a0 100644 --- a/recipes/wip/dev/apr-util/recipe.toml +++ b/recipes/wip/dev/apr-util/recipe.toml @@ -1,14 +1,29 @@ -#TODO make apr work [source] -tar = "https://dlcdn.apache.org//apr/apr-util-1.6.3.tar.bz2" +tar = "https://archive.apache.org/dist/apr/apr-util-1.6.0.tar.bz2" +patches = [ + "redox.patch", +] [build] template = "custom" dependencies = [ "apr", + "expat", ] script = """ COOKBOOK_CONFIGURE_FLAGS+=( - --with-apr + --with-apr="${COOKBOOK_SYSROOT}" ) -cookbook_configure +export CFLAGS="-I${COOKBOOK_SYSROOT}/include/ -I${COOKBOOK_SYSROOT}/include/apr-1 " +ls ${COOKBOOK_SYSROOT}/include/ +export CFLAGS_="${CFLAGS}" +cd ${COOKBOOK_SOURCE} +autoreconf -fi +"${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" +sed -i build/rules.mk -e "s;\\(apr_builddir=\\)\\(.*\\);\\1${COOKBOOK_SYSROOT}\\2;" \\ + -e "s;--mode=link;& --tag=CC;g" -e "s;--mode=compile;& --tag=CC -v;g" \\ + +sed -i build/rules.mk -e "/apr_builders=/s;apr_builders=;apr_builders=${COOKBOOK_SYSROOT};" +sed -i build/rules.mk -e "/^CFLAGS=/s;=.*;=${CFLAGS_};" +"${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" +"${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" """ diff --git a/recipes/wip/dev/apr-util/redox.patch b/recipes/wip/dev/apr-util/redox.patch new file mode 100644 index 00000000..33ab356e --- /dev/null +++ b/recipes/wip/dev/apr-util/redox.patch @@ -0,0 +1,41 @@ +diff --git a/apu-config.in b/apu-config.in +index 82109e5..2d005c9 100644 +--- a/apu-config.in ++++ b/apu-config.in +@@ -140,12 +140,12 @@ while test $# -gt 0; do + ;; + --includes) + if test "$location" = "installed"; then +- flags="$flags -I$includedir $INCLUDES" ++ flags="$flags $INCLUDES" + elif test "$location" = "source"; then +- flags="$flags -I$APU_SOURCE_DIR/include $INCLUDES" ++ flags="$flags $INCLUDES" + else + # this is for VPATH builds +- flags="$flags -I$APU_BUILD_DIR/include -I$APU_SOURCE_DIR/include $INCLUDES" ++ flags="$flags $INCLUDES" + fi + ;; + --ldflags) +@@ -162,9 +162,9 @@ while test $# -gt 0; do + --link-ld) + if test "$location" = "installed"; then + ### avoid using -L if libdir is a "standard" location like /usr/lib +- flags="$flags -L$libdir -l$APRUTIL_LIBNAME" ++ flags="$flags -l$APRUTIL_LIBNAME" + else +- flags="$flags -L$APU_BUILD_DIR -l$APRUTIL_LIBNAME" ++ flags="$flags -l$APRUTIL_LIBNAME" + fi + ;; + --link-libtool) +@@ -178,7 +178,7 @@ while test $# -gt 0; do + ### avoid using -L if libdir is a "standard" location like /usr/lib + # Since the user is specifying they are linking with libtool, we + # *know* that -R will be recognized by libtool. +- flags="$flags -L$libdir -R$libdir -l$APRUTIL_LIBNAME" ++ flags="$flags -l$APRUTIL_LIBNAME" + else + flags="$flags $LA_FILE" + fi diff --git a/recipes/wip/dev/apr/recipe.toml b/recipes/wip/dev/apr/recipe.toml index c7d60c60..1f53150a 100644 --- a/recipes/wip/dev/apr/recipe.toml +++ b/recipes/wip/dev/apr/recipe.toml @@ -1,21 +1,15 @@ -#TODO compiled but not tested -#NOTE Please do not remove expat dependency -- while it's not direct, apr-util build breaks if apr does not have it. - [source] tar = "https://dlcdn.apache.org//apr/apr-1.7.4.tar.bz2" +patches = ["redox.patch"] [build] template = "custom" -dependencies = [ - "expat", -] script = """ COOKBOOK_CONFIGURE_FLAGS+=( - ac_cv_file__dev_zero=yes - apr_cv_process_shared_works=yes - apr_cv_mutex_robust_shared=no - apr_cv_tcp_nodelay_with_cork=yes +ac_cv_file__dev_zero=yes +ac_cv_working_getaddrinfo=no +apr_cv_process_shared_works=yes +apr_cv_mutex_robust_shared=yes +apr_cv_tcp_nodelay_with_cork=no ) cookbook_configure """ - - diff --git a/recipes/wip/dev/apr/redox.patch b/recipes/wip/dev/apr/redox.patch new file mode 100644 index 00000000..9d630485 --- /dev/null +++ b/recipes/wip/dev/apr/redox.patch @@ -0,0 +1,175 @@ +diff --git a/apr-config.in b/apr-config.in +index 626d3b0..b79d471 100644 +--- a/apr-config.in ++++ b/apr-config.in +@@ -180,14 +180,14 @@ while test $# -gt 0; do + ;; + --includes) + if test "$location" = "installed"; then +- flags="$flags -I$includedir $EXTRA_INCLUDES" ++ flags="$flags $EXTRA_INCLUDES" + elif test "$location" = "crosscompile"; then +- flags="$flags -I$APR_TARGET_DIR/$includedir $EXTRA_INCLUDES" ++ flags="$flags $EXTRA_INCLUDES" + elif test "$location" = "source"; then +- flags="$flags -I$APR_SOURCE_DIR/include $EXTRA_INCLUDES" ++ flags="$flags $EXTRA_INCLUDES" + else + # this is for VPATH builds +- flags="$flags -I$APR_BUILD_DIR/include -I$APR_SOURCE_DIR/include $EXTRA_INCLUDES" ++ flags="$flags $EXTRA_INCLUDES" + fi + ;; + --srcdir) +@@ -214,12 +214,12 @@ while test $# -gt 0; do + --link-ld) + if test "$location" = "installed"; then + ### avoid using -L if libdir is a "standard" location like /usr/lib +- flags="$flags -L$libdir -l${APR_LIBNAME}" ++ flags="$flags -l${APR_LIBNAME}" + elif test "$location" = "crosscompile"; then +- flags="$flags -L$APR_TARGET_DIR/$libdir -l${APR_LIBNAME}" ++ flags="$flags -l${APR_LIBNAME}" + else + ### this surely can't work since the library is in .libs? +- flags="$flags -L$APR_BUILD_DIR -l${APR_LIBNAME}" ++ flags="$flags -l${APR_LIBNAME}" + fi + ;; + --link-libtool) +@@ -233,9 +233,9 @@ while test $# -gt 0; do + ### avoid using -L if libdir is a "standard" location like /usr/lib + # Since the user is specifying they are linking with libtool, we + # *know* that -R will be recognized by libtool. +- flags="$flags -L$libdir -R$libdir -l${APR_LIBNAME}" ++ flags="$flags -l${APR_LIBNAME}" + elif test "$location" = "crosscompile"; then +- flags="$flags -L${APR_TARGET_DIR}/$libdir -l${APR_LIBNAME}" ++ flags="$flags -l${APR_LIBNAME}" + else + flags="$flags $LA_FILE" + fi +diff --git a/file_io/unix/open.c b/file_io/unix/open.c +index 49eb727..7b28aba 100644 +--- a/file_io/unix/open.c ++++ b/file_io/unix/open.c +@@ -101,12 +101,15 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, + #endif + + if ((flag & APR_FOPEN_READ) && (flag & APR_FOPEN_WRITE)) { ++ fprintf(stderr, "afo flag RDRW\n"); + oflags = O_RDWR; + } + else if (flag & APR_FOPEN_READ) { ++ fprintf(stderr, "afo flag RDONLY\n"); + oflags = O_RDONLY; + } + else if (flag & APR_FOPEN_WRITE) { ++ fprintf(stderr, "afo flag WRONLY\n"); + oflags = O_WRONLY; + } + else { +@@ -114,8 +117,10 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, + } + + if (flag & APR_FOPEN_CREATE) { ++ fprintf(stderr, "afo flag CREAT\n"); + oflags |= O_CREAT; + if (flag & APR_FOPEN_EXCL) { ++ fprintf(stderr, "afo flag EXCL\n"); + oflags |= O_EXCL; + } + } +@@ -124,19 +129,23 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, + } + + if (flag & APR_FOPEN_APPEND) { ++ fprintf(stderr, "afo flag APPEND\n"); + oflags |= O_APPEND; + } + if (flag & APR_FOPEN_TRUNCATE) { ++ fprintf(stderr, "afo flag TRUNC\n"); + oflags |= O_TRUNC; + } + #ifdef O_BINARY + if (flag & APR_FOPEN_BINARY) { ++ fprintf(stderr, "afo flag BINARY\n"); + oflags |= O_BINARY; + } + #endif + + if (flag & APR_FOPEN_NONBLOCK) { + #ifdef O_NONBLOCK ++ fprintf(stderr, "afo flag NONBLOCK\n"); + oflags |= O_NONBLOCK; + #else + return APR_ENOTIMPL; +@@ -147,14 +156,17 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, + /* Introduced in Linux 2.6.23. Silently ignored on earlier Linux kernels. + */ + if (!(flag & APR_FOPEN_NOCLEANUP)) { ++ fprintf(stderr, "afo flag CLOEXEC\n"); + oflags |= O_CLOEXEC; + } + #endif + + #if APR_HAS_LARGE_FILES && defined(_LARGEFILE64_SOURCE) ++ fprintf(stderr, "afo flag LARGEFILE\n"); + oflags |= O_LARGEFILE; + #elif defined(O_LARGEFILE) + if (flag & APR_FOPEN_LARGEFILE) { ++ fprintf(stderr, "afo flag LARGEFILE\n"); + oflags |= O_LARGEFILE; + } + #endif +@@ -164,18 +176,22 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, + rv = apr_thread_mutex_create(&thlock, + APR_THREAD_MUTEX_DEFAULT, pool); + if (rv) { ++ fprintf(stderr, "afo ret 1 %d\n", rv); + return rv; + } + } + #endif + + if (perm == APR_OS_DEFAULT) { ++ fprintf(stderr, "open %d %s\n", oflags, fname); + fd = open(fname, oflags, 0666); + } + else { ++ fprintf(stderr, "open %s %d %d\n", fname, oflags, apr_unix_perms2mode(perm)); + fd = open(fname, oflags, apr_unix_perms2mode(perm)); + } + if (fd < 0) { ++ fprintf(stderr, "afo ret 2 %d\n", errno); + return errno; + } + if (!(flag & APR_FOPEN_NOCLEANUP)) { +@@ -188,12 +204,14 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, + + if ((flags = fcntl(fd, F_GETFD)) == -1) { + close(fd); ++ fprintf(stderr, "afo ret 3 %d\n", errno); + return errno; + } + if ((flags & FD_CLOEXEC) == 0) { + flags |= FD_CLOEXEC; + if (fcntl(fd, F_SETFD, flags) == -1) { + close(fd); ++ fprintf(stderr, "afo ret 4 %d\n", errno); + return errno; + } + } +diff --git a/network_io/unix/sockopt.c b/network_io/unix/sockopt.c +index 6194e9b..a903f91 100644 +--- a/network_io/unix/sockopt.c ++++ b/network_io/unix/sockopt.c +@@ -372,7 +372,7 @@ apr_status_t apr_socket_opt_get(apr_socket_t *sock, + + apr_status_t apr_socket_atmark(apr_socket_t *sock, int *atmark) + { +-#ifndef BEOS_R5 ++#if !defined(BEOS_R5) && !defined(__redox__) + int oobmark; + + if (ioctl(sock->socketdes, SIOCATMARK, (void*) &oobmark) < 0) From a57a25da8a148eb63b88d955714fa62d6707552c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= Date: Sat, 10 Feb 2024 17:40:44 +0100 Subject: [PATCH 1675/3180] add gdbm --- recipes/wip/libs/gdbm/recipe.toml | 7 +++ recipes/wip/libs/gdbm/redox.patch | 77 +++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 recipes/wip/libs/gdbm/recipe.toml create mode 100644 recipes/wip/libs/gdbm/redox.patch diff --git a/recipes/wip/libs/gdbm/recipe.toml b/recipes/wip/libs/gdbm/recipe.toml new file mode 100644 index 00000000..4703a3ae --- /dev/null +++ b/recipes/wip/libs/gdbm/recipe.toml @@ -0,0 +1,7 @@ +[source] +tar="https://ftp.gnu.org/gnu/gdbm/gdbm-1.23.tar.gz" +patches = [ + "redox.patch", +] +[build] +template = "configure" diff --git a/recipes/wip/libs/gdbm/redox.patch b/recipes/wip/libs/gdbm/redox.patch new file mode 100644 index 00000000..d18ee614 --- /dev/null +++ b/recipes/wip/libs/gdbm/redox.patch @@ -0,0 +1,77 @@ +diff --git a/build-aux/config.sub b/build-aux/config.sub +index 7ffe373..e2368e0 100755 +--- a/build-aux/config.sub ++++ b/build-aux/config.sub +@@ -1393,7 +1393,7 @@ case $os in + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ +- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) ++ | -skyos* | -haiku* | -rdos* | -redox* | -toppers* | -drops* | -es* | -tirtos*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) +diff --git a/tools/gdbmshell.c b/tools/gdbmshell.c +index 22c4938..bf75dc8 100644 +--- a/tools/gdbmshell.c ++++ b/tools/gdbmshell.c +@@ -2890,16 +2890,6 @@ struct timing + struct timeval sys; + }; + +-void +-timing_start (struct timing *t) +-{ +- struct rusage r; +- gettimeofday (&t->real, NULL); +- getrusage (RUSAGE_SELF, &r); +- t->user = r.ru_utime; +- t->sys = r.ru_stime; +-} +- + static inline struct timeval + timeval_sub (struct timeval a, struct timeval b) + { +@@ -2916,19 +2906,6 @@ timeval_sub (struct timeval a, struct timeval b) + return diff; + } + +-void +-timing_stop (struct timing *t) +-{ +- struct rusage r; +- struct timeval now; +- +- gettimeofday (&now, NULL); +- getrusage (RUSAGE_SELF, &r); +- t->real = timeval_sub (now, t->real); +- t->user = timeval_sub (r.ru_utime, t->user); +- t->sys = timeval_sub (r.ru_stime, t->sys); +-} +- + static int + argsprep (struct command *cmd, struct gdbmarglist *arglist, + struct command_param *param) +@@ -3047,22 +3024,12 @@ run_command (struct command *cmd, struct gdbmarglist *arglist) + else + cenv.fp = stdout; + +- timing_start (&tm); + rc = cmd->handler (¶m, &cenv); +- timing_stop (&tm); + if (cmd->end) + cmd->end (cenv.data); + else if (cenv.data) + free (cenv.data); + +- if (variable_is_true ("timing")) +- { +- fprintf (cenv.fp, "[%s r=%lu.%06lu u=%lu.%06lu s=%lu.%06lu]\n", +- cmd->name, +- tm.real.tv_sec, tm.real.tv_usec, +- tm.user.tv_sec, tm.user.tv_usec, +- tm.sys.tv_sec, tm.sys.tv_usec); +- } + + if (pagfp) + pclose (pagfp); From 960579a5f70b79ebf6207063a07abce7984e2083 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= Date: Sat, 10 Feb 2024 17:18:06 +0100 Subject: [PATCH 1676/3180] libuuid: make it build --- recipes/wip/libs/libuuid/recipe.toml | 4 +++- recipes/wip/libs/libuuid/redox.patch | 26 ++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 recipes/wip/libs/libuuid/redox.patch diff --git a/recipes/wip/libs/libuuid/recipe.toml b/recipes/wip/libs/libuuid/recipe.toml index 392012da..8a9947f9 100644 --- a/recipes/wip/libs/libuuid/recipe.toml +++ b/recipes/wip/libs/libuuid/recipe.toml @@ -1,5 +1,7 @@ -#TODO can't recognize Redox target [source] tar = "https://sourceforge.net/projects/libuuid/files/libuuid-1.0.3.tar.gz/download" +patches = [ + "redox.patch" +] [build] template = "configure" diff --git a/recipes/wip/libs/libuuid/redox.patch b/recipes/wip/libs/libuuid/redox.patch new file mode 100644 index 00000000..3b98fa75 --- /dev/null +++ b/recipes/wip/libs/libuuid/redox.patch @@ -0,0 +1,26 @@ +diff --git a/config.sub b/config.sub +index 52f04bc..4a352eb 100755 +--- a/config.sub ++++ b/config.sub +@@ -1376,7 +1376,7 @@ case $os in + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ +- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) ++ | -skyos* | -haiku* | -rdos* | -redox* | -toppers* | -drops* | -es*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) +diff --git a/randutils.c b/randutils.c +index 80893d3..a39168d 100644 +--- a/randutils.c ++++ b/randutils.c +@@ -13,7 +13,7 @@ + #include + #include + +-#include ++// #include + + #include "randutils.h" + From c02abc834ea41002def870ec1905b1c3516bac30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= Date: Sat, 10 Feb 2024 17:21:09 +0100 Subject: [PATCH 1677/3180] libxcrypt: add --- recipes/wip/libs/libxcrypt/recipe.toml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 recipes/wip/libs/libxcrypt/recipe.toml diff --git a/recipes/wip/libs/libxcrypt/recipe.toml b/recipes/wip/libs/libxcrypt/recipe.toml new file mode 100644 index 00000000..6f6779ac --- /dev/null +++ b/recipes/wip/libs/libxcrypt/recipe.toml @@ -0,0 +1,4 @@ +[source] +tar = "https://github.com/besser82/libxcrypt/releases/download/v4.4.36/libxcrypt-4.4.36.tar.xz" +[build] +template = "configure" From aa5e6fe129bbf58725084927d6c3b1ba84266b86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= Date: Sat, 10 Feb 2024 17:41:20 +0100 Subject: [PATCH 1678/3180] add apache-httpd --- recipes/wip/net/apache-httpd/recipe.toml | 50 +++ recipes/wip/net/apache-httpd/redox.patch | 436 +++++++++++++++++++++++ 2 files changed, 486 insertions(+) create mode 100644 recipes/wip/net/apache-httpd/recipe.toml create mode 100644 recipes/wip/net/apache-httpd/redox.patch diff --git a/recipes/wip/net/apache-httpd/recipe.toml b/recipes/wip/net/apache-httpd/recipe.toml new file mode 100644 index 00000000..f792ff85 --- /dev/null +++ b/recipes/wip/net/apache-httpd/recipe.toml @@ -0,0 +1,50 @@ +#apache-httpd +[source] +tar="https://dlcdn.apache.org/httpd/httpd-2.4.58.tar.bz2" +patches = [ + "redox.patch", +] +[build] +dependencies = [ + "apr", + "apr-util", + "curl", + "expat", + "gdbm", + "libuuid", + "libxcrypt", + "libxml2", + "openssl1", + "pcre", + "zlib", +] + +template = "custom" +script = """ +# cookbook_configure + +export COOKBOOK_MAKE_JOBS=1 +export CPPFLAGS="$CPPFLAGS -I${COOKBOOK_SYSROOT}/include/apr-1 -DDEBUG=1" +export LTFLAGS="$LTFLAGS -Wall" +COOKBOOK_CONFIGURE_FLAGS=( + --build=$(/usr/bin/cc -dumpmachine) + --host=${TARGET} + --with-apr=$COOKBOOK_SYSROOT + --with-apr-util=$COOKBOOK_SYSROOT + --enable-unixd=static + --enable-authz_core=static + --enable-authz_host=static + ac_cv_prog_PCRE_CONFIG=$COOKBOOK_SYSROOT/bin/pcre-config + ap_cv_void_ptr_lt_long=no +) +cd ${COOKBOOK_SOURCE} +sed -i build/rules.mk.in -e 's/--mode=compile/& --tag=CC/' +sed -i build/rules.mk.in -e 's/--mode=link/& --tag=CC/' +"${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" +"${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" +"${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" +sed -s 's/^LoadModule /# &/' -i ${COOKBOOK_STAGE}/usr/local/apache2/conf/httpd.conf +sed -s 's/^User daemon/User user/' -i ${COOKBOOK_STAGE}/usr/local/apache2/conf/httpd.conf +sed -s 's/^Group daemon/Group #1000/' -i ${COOKBOOK_STAGE}/usr/local/apache2/conf/httpd.conf +touch ${COOKBOOK_STAGE}/usr/local/apache2/logs/keep_dir +""" diff --git a/recipes/wip/net/apache-httpd/redox.patch b/recipes/wip/net/apache-httpd/redox.patch new file mode 100644 index 00000000..c31d17e0 --- /dev/null +++ b/recipes/wip/net/apache-httpd/redox.patch @@ -0,0 +1,436 @@ +diff --git a/Makefile.in b/Makefile.in +index ebf7a16..296e661 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -1,5 +1,5 @@ + +-SUBDIRS = srclib os server modules support ++SUBDIRS = srclib os server modules + CLEAN_SUBDIRS = test + + PROGRAM_NAME = $(progname) +@@ -7,9 +7,10 @@ PROGRAM_SOURCES = modules.c + PROGRAM_LDADD = buildmark.o $(HTTPD_LDFLAGS) $(PROGRAM_DEPENDENCIES) $(PCRE_LIBS) $(EXTRA_LIBS) $(AP_LIBS) $(LIBS) + PROGRAM_PRELINK = $(COMPILE) -c $(top_srcdir)/server/buildmark.c + PROGRAM_DEPENDENCIES = \ ++ -lc \ ++ $(MPM_LIB) \ + server/libmain.la \ + $(BUILTIN_LIBS) \ +- $(MPM_LIB) \ + os/$(OS_DIR)/libos.la + + sbin_PROGRAMS = $(PROGRAM_NAME) +@@ -290,28 +291,7 @@ install-man: + cd $(DESTDIR)$(manualdir) && find . -name ".svn" -type d -print | xargs rm -rf 2>/dev/null || true; \ + fi + +-install-suexec: install-suexec-$(INSTALL_SUEXEC) +- +-install-suexec-binary: +- @if test -f $(builddir)/support/suexec; then \ +- test -d $(DESTDIR)$(sbindir) || $(MKINSTALLDIRS) $(DESTDIR)$(sbindir); \ +- $(INSTALL_PROGRAM) $(top_builddir)/support/suexec $(DESTDIR)$(sbindir); \ +- fi +- +-install-suexec-setuid: install-suexec-binary +- @if test -f $(builddir)/support/suexec; then \ +- chmod 4755 $(DESTDIR)$(sbindir)/suexec; \ +- fi +- +-install-suexec-caps: install-suexec-binary +- @if test -f $(builddir)/support/suexec; then \ +- setcap 'cap_setuid,cap_setgid+pe' $(DESTDIR)$(sbindir)/suexec; \ +- fi +- +-suexec: +- cd support && $(MAKE) suexec +- +-x-local-distclean: ++-local-distclean: + @rm -rf autom4te.cache + + # XXX: This looks awfully platform-specific [read: bad form and style] +diff --git a/configure b/configure +index 6eb60fd..46b490e 100755 +--- a/configure ++++ b/configure +@@ -4998,7 +4998,7 @@ else + done + if test $apr_addto_duplicate = "0"; then + test "x$silent" != "xyes" && echo " adding \"$i\" to LDFLAGS" +- LDFLAGS="$LDFLAGS $i" ++ # LDFLAGS="$LDFLAGS $i" + fi + done + fi +@@ -5006,6 +5006,7 @@ else + APU_BINDIR=`$apu_config --bindir` + APU_INCLUDEDIR=`$apu_config --includedir` + APU_INCLUDES=`$apu_config --includes` ++ echo "$apu_config --includes" = "$APU_INCLUDES" + APU_VERSION=`$apu_config --version` + APU_CONFIG="$APU_BINDIR/apu-`echo ${APU_VERSION} | sed 's,\..*,,'`-config" + fi +@@ -6268,9 +6269,9 @@ $as_echo "$as_me: Using external PCRE library from $PCRE_CONFIG" >&6;} + + if test "x$PCRE_LIBS" = "x"; then + test "x$silent" != "xyes" && echo " setting PCRE_LIBS to \"`$PCRE_CONFIG --libs8 2>/dev/null || $PCRE_CONFIG --libs`\"" +- PCRE_LIBS="`$PCRE_CONFIG --libs8 2>/dev/null || $PCRE_CONFIG --libs`" ++ PCRE_LIBS="-lpcre" + else +- apr_addto_bugger="`$PCRE_CONFIG --libs8 2>/dev/null || $PCRE_CONFIG --libs`" ++ apr_addto_bugger="-lpcre" + for i in $apr_addto_bugger; do + apr_addto_duplicate="0" + for j in $PCRE_LIBS; do +@@ -40691,9 +40692,11 @@ fi + + + if test x${apu_found} != xobsolete; then +- AP_LIBS="$AP_LIBS `$apu_config --avoid-ldap --link-libtool --libs`" ++ # AP_LIBS="$AP_LIBS `$apu_config --avoid-ldap --link-libtool --libs`" -ldb-5.3 ++ AP_LIBS="$AP_LIBS -laprutil-1 -lgdbm -lexpat" + fi +-AP_LIBS="$AP_LIBS `$apr_config --link-libtool --libs`" ++# AP_LIBS="$AP_LIBS `$apr_config --link-libtool --libs`" ++AP_LIBS="$AP_LIBS -lapr-1 -luuid -lrt -lcrypt -lpthread -ldl" + + APACHE_VAR_SUBST="$APACHE_VAR_SUBST AP_LIBS" + +diff --git a/os/unix/unixd.c b/os/unix/unixd.c +index 0245720..cd241d2 100644 +--- a/os/unix/unixd.c ++++ b/os/unix/unixd.c +@@ -231,31 +231,6 @@ AP_DECLARE(apr_status_t) ap_unixd_set_proc_mutex_perms(apr_proc_mutex_t *pmutex) + apr_lockmech_e mech = proc_mutex_mech(pmutex); + + switch(mech) { +-#if APR_HAS_SYSVSEM_SERIALIZE +- case APR_LOCK_SYSVSEM: +- { +- apr_os_proc_mutex_t ospmutex; +-#if !APR_HAVE_UNION_SEMUN +- union semun { +- long val; +- struct semid_ds *buf; +- unsigned short *array; +- }; +-#endif +- union semun ick; +- struct semid_ds buf = { { 0 } }; +- +- apr_os_proc_mutex_get(&ospmutex, pmutex); +- buf.sem_perm.uid = ap_unixd_config.user_id; +- buf.sem_perm.gid = ap_unixd_config.group_id; +- buf.sem_perm.mode = 0600; +- ick.buf = &buf; +- if (semctl(ospmutex.crossproc, 0, IPC_SET, ick) < 0) { +- return errno; +- } +- } +- break; +-#endif + #if APR_HAS_FLOCK_SERIALIZE + case APR_LOCK_FLOCK: + { +diff --git a/server/Makefile.in b/server/Makefile.in +index 8111877..0449553 100644 +--- a/server/Makefile.in ++++ b/server/Makefile.in +@@ -1,5 +1,5 @@ + +-CLEAN_TARGETS = gen_test_char test_char.h \ ++CLEAN_TARGETS = \ + ApacheCoreOS2.def httpd.exp export_files \ + exports.c export_vars.h + +@@ -24,12 +24,6 @@ TARGETS = delete-exports $(LTLIBRARY_NAME) $(CORE_IMPLIB_FILE) export_vars.h htt + include $(top_builddir)/build/rules.mk + include $(top_srcdir)/build/library.mk + +-gen_test_char_OBJECTS = gen_test_char.lo +-gen_test_char: $(gen_test_char_OBJECTS) +- $(LINK) $(EXTRA_LDFLAGS) $(gen_test_char_OBJECTS) $(EXTRA_LIBS) +- +-test_char.h: gen_test_char +- ./gen_test_char > test_char.h + + util.lo: test_char.h + +diff --git a/server/gen_test_char.c b/server/gen_test_char.c +deleted file mode 100644 +index 248216b..0000000 +--- a/server/gen_test_char.c ++++ /dev/null +@@ -1,192 +0,0 @@ +-/* Licensed to the Apache Software Foundation (ASF) under one or more +- * contributor license agreements. See the NOTICE file distributed with +- * this work for additional information regarding copyright ownership. +- * The ASF licenses this file to You under the Apache License, Version 2.0 +- * (the "License"); you may not use this file except in compliance with +- * the License. You may obtain a copy of the License at +- * +- * http://www.apache.org/licenses/LICENSE-2.0 +- * +- * Unless required by applicable law or agreed to in writing, software +- * distributed under the License is distributed on an "AS IS" BASIS, +- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +- * See the License for the specific language governing permissions and +- * limitations under the License. +- */ +- +-#ifdef CROSS_COMPILE +- +-#include +-#define apr_isalnum(c) (isalnum(((unsigned char)(c)))) +-#define apr_isalpha(c) (isalpha(((unsigned char)(c)))) +-#define apr_iscntrl(c) (iscntrl(((unsigned char)(c)))) +-#define apr_isprint(c) (isprint(((unsigned char)(c)))) +-#define APR_HAVE_STDIO_H 1 +-#define APR_HAVE_STRING_H 1 +- +-#else +- +-#include "apr.h" +-#include "apr_lib.h" +- +-#endif +- +-#if defined(WIN32) || defined(OS2) +-#define NEED_ENHANCED_ESCAPES +-#endif +- +-#if APR_HAVE_STDIO_H +-#include +-#endif +-#if APR_HAVE_STRING_H +-#include +-#endif +- +-/* A bunch of functions in util.c scan strings looking for certain characters. +- * To make that more efficient we encode a lookup table. +- */ +-#define T_ESCAPE_SHELL_CMD (0x01) +-#define T_ESCAPE_PATH_SEGMENT (0x02) +-#define T_OS_ESCAPE_PATH (0x04) +-#define T_HTTP_TOKEN_STOP (0x08) +-#define T_ESCAPE_LOGITEM (0x10) +-#define T_ESCAPE_FORENSIC (0x20) +-#define T_ESCAPE_URLENCODED (0x40) +-#define T_HTTP_CTRLS (0x80) +-#define T_VCHAR_OBSTEXT (0x100) +-#define T_URI_UNRESERVED (0x200) +- +-int main(int argc, char *argv[]) +-{ +- unsigned c; +- unsigned short flags; +- +- printf("/* this file is automatically generated by gen_test_char, " +- "do not edit */\n" +- "#define T_ESCAPE_SHELL_CMD (%u)\n" +- "#define T_ESCAPE_PATH_SEGMENT (%u)\n" +- "#define T_OS_ESCAPE_PATH (%u)\n" +- "#define T_HTTP_TOKEN_STOP (%u)\n" +- "#define T_ESCAPE_LOGITEM (%u)\n" +- "#define T_ESCAPE_FORENSIC (%u)\n" +- "#define T_ESCAPE_URLENCODED (%u)\n" +- "#define T_HTTP_CTRLS (%u)\n" +- "#define T_VCHAR_OBSTEXT (%u)\n" +- "#define T_URI_UNRESERVED (%u)\n" +- "\n" +- "static const unsigned short test_char_table[256] = {", +- T_ESCAPE_SHELL_CMD, +- T_ESCAPE_PATH_SEGMENT, +- T_OS_ESCAPE_PATH, +- T_HTTP_TOKEN_STOP, +- T_ESCAPE_LOGITEM, +- T_ESCAPE_FORENSIC, +- T_ESCAPE_URLENCODED, +- T_HTTP_CTRLS, +- T_VCHAR_OBSTEXT, +- T_URI_UNRESERVED +- ); +- +- for (c = 0; c < 256; ++c) { +- flags = 0; +- if (c % 8 == 0) +- printf("\n "); +- +- /* escape_shell_cmd */ +-#ifdef NEED_ENHANCED_ESCAPES +- /* Win32/OS2 have many of the same vulnerable characters +- * as Unix sh, plus the carriage return and percent char. +- * The proper escaping of these characters varies from unix +- * since Win32/OS2 use carets or doubled-double quotes, +- * and neither lf nor cr can be escaped. We escape unix +- * specific as well, to assure that cross-compiled unix +- * applications behave similarly when invoked on win32/os2. +- * +- * Rem please keep in-sync with apr's list in win32/filesys.c +- */ +- if (c && strchr("&;`'\"|*?~<>^()[]{}$\\\n\r%", c)) { +- flags |= T_ESCAPE_SHELL_CMD; +- } +-#else +- if (c && strchr("&;`'\"|*?~<>^()[]{}$\\\n", c)) { +- flags |= T_ESCAPE_SHELL_CMD; +- } +-#endif +- +- if (!apr_isalnum(c) && !strchr("$-_.+!*'(),:@&=~", c)) { +- flags |= T_ESCAPE_PATH_SEGMENT; +- } +- +- if (!apr_isalnum(c) && !strchr("$-_.+!*'(),:;@&=/~", c)) { +- flags |= T_OS_ESCAPE_PATH; +- } +- +- if (!apr_isalnum(c) && !strchr(".-*_ ", c)) { +- flags |= T_ESCAPE_URLENCODED; +- } +- +- /* Stop for any non-'token' character, including ctrls, obs-text, +- * and "tspecials" (RFC2068) a.k.a. "separators" (RFC2616), which +- * is easier to express as characters remaining in the ASCII token set +- */ +- if (!c || !(apr_isalnum(c) || strchr("!#$%&'*+-.^_`|~", c))) { +- flags |= T_HTTP_TOKEN_STOP; +- } +- +- /* Catch CTRLs other than VCHAR, HT and SP, and obs-text (RFC7230 3.2) +- * This includes only the C0 plane, not C1 (which is obs-text itself.) +- * XXX: We should verify that all ASCII C0 ctrls/DEL corresponding to +- * the current EBCDIC translation are captured, and ASCII C1 ctrls +- * corresponding are all permitted (as they fall under obs-text rule) +- */ +- if (!c || (apr_iscntrl(c) && c != '\t')) { +- flags |= T_HTTP_CTRLS; +- } +- +- /* From RFC3986, the specific sets of gen-delims, sub-delims (2.2), +- * and unreserved (2.3) that are possible somewhere within a URI. +- * Spec requires all others to be %XX encoded, including obs-text. +- */ +- if (c && !apr_iscntrl(c) && c != ' ') { +- flags |= T_VCHAR_OBSTEXT; +- } +- +- /* For logging, escape all control characters, +- * double quotes (because they delimit the request in the log file) +- * backslashes (because we use backslash for escaping) +- * and 8-bit chars with the high bit set +- */ +- if (c && (!apr_isprint(c) || c == '"' || c == '\\' || apr_iscntrl(c))) { +- flags |= T_ESCAPE_LOGITEM; +- } +- +- /* For forensic logging, escape all control characters, top bit set, +- * :, | (used as delimiters) and % (used for escaping). +- */ +- if (!apr_isprint(c) || c == ':' || c == '|' || c == '%' +- || apr_iscntrl(c) || !c) { +- flags |= T_ESCAPE_FORENSIC; +- } +- +- /* Characters in the RFC 3986 "unreserved" set. +- * https://datatracker.ietf.org/doc/html/rfc3986#section-2.3 */ +- if (c && (apr_isalnum(c) || strchr("-._~", c))) { +- flags |= T_URI_UNRESERVED; +- } +- +- printf("0x%03x%c", flags, (c < 255) ? ',' : ' '); +- } +- +- printf("\n};\n\n"); +- +- printf( +- "/* we assume the folks using this ensure 0 <= c < 256... which means\n" +- " * you need a cast to (unsigned char) first, you can't just plug a\n" +- " * char in here and get it to work, because if char is signed then it\n" +- " * will first be sign extended.\n" +- " */\n" +- "#define TEST_CHAR(c, f) (test_char_table[(unsigned char)(c)] & (f))\n" +- ); +- +- return 0; +-} +diff --git a/server/mpm_fdqueue.c b/server/mpm_fdqueue.c +index 3697ca7..9f9d36e 100644 +--- a/server/mpm_fdqueue.c ++++ b/server/mpm_fdqueue.c +@@ -17,6 +17,7 @@ + #include "mpm_fdqueue.h" + + #if APR_HAS_THREADS ++#warning "apr_has_threads" + + #include + +@@ -531,4 +532,6 @@ apr_status_t ap_queue_term(fd_queue_t *queue) + return queue_interrupt(queue, 1, 1); + } + ++#else ++#warning "no apr_has_threads" + #endif /* APR_HAS_THREADS */ +diff --git a/server/test_char.h b/server/test_char.h +new file mode 100644 +index 0000000..ebd7395 +--- /dev/null ++++ b/server/test_char.h +@@ -0,0 +1,53 @@ ++/* this file is automatically generated by gen_test_char, do not edit */ ++#define T_ESCAPE_SHELL_CMD (1) ++#define T_ESCAPE_PATH_SEGMENT (2) ++#define T_OS_ESCAPE_PATH (4) ++#define T_HTTP_TOKEN_STOP (8) ++#define T_ESCAPE_LOGITEM (16) ++#define T_ESCAPE_FORENSIC (32) ++#define T_ESCAPE_URLENCODED (64) ++#define T_HTTP_CTRLS (128) ++#define T_VCHAR_OBSTEXT (256) ++#define T_URI_UNRESERVED (512) ++ ++static const unsigned short test_char_table[256] = { ++ 0x0a8,0x0fe,0x0fe,0x0fe,0x0fe,0x0fe,0x0fe,0x0fe, ++ 0x0fe,0x07e,0x0ff,0x0fe,0x0fe,0x0fe,0x0fe,0x0fe, ++ 0x0fe,0x0fe,0x0fe,0x0fe,0x0fe,0x0fe,0x0fe,0x0fe, ++ 0x0fe,0x0fe,0x0fe,0x0fe,0x0fe,0x0fe,0x0fe,0x0fe, ++ 0x00e,0x140,0x15f,0x146,0x141,0x166,0x141,0x141, ++ 0x149,0x149,0x101,0x140,0x148,0x300,0x300,0x14a, ++ 0x300,0x300,0x300,0x300,0x300,0x300,0x300,0x300, ++ 0x300,0x300,0x168,0x14b,0x14f,0x148,0x14f,0x14f, ++ 0x148,0x300,0x300,0x300,0x300,0x300,0x300,0x300, ++ 0x300,0x300,0x300,0x300,0x300,0x300,0x300,0x300, ++ 0x300,0x300,0x300,0x300,0x300,0x300,0x300,0x300, ++ 0x300,0x300,0x300,0x14f,0x15f,0x14f,0x147,0x300, ++ 0x147,0x300,0x300,0x300,0x300,0x300,0x300,0x300, ++ 0x300,0x300,0x300,0x300,0x300,0x300,0x300,0x300, ++ 0x300,0x300,0x300,0x300,0x300,0x300,0x300,0x300, ++ 0x300,0x300,0x300,0x14f,0x167,0x14f,0x341,0x0fe, ++ 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, ++ 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, ++ 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, ++ 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, ++ 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, ++ 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, ++ 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, ++ 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, ++ 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, ++ 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, ++ 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, ++ 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, ++ 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, ++ 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, ++ 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, ++ 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e ++}; ++ ++/* we assume the folks using this ensure 0 <= c < 256... which means ++ * you need a cast to (unsigned char) first, you can't just plug a ++ * char in here and get it to work, because if char is signed then it ++ * will first be sign extended. ++ */ ++#define TEST_CHAR(c, f) (test_char_table[(unsigned char)(c)] & (f)) From 7c73f7b642805d6605242ef1f06245f44362a394 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 26 Mar 2024 02:16:54 +0000 Subject: [PATCH 1679/3180] Remove the old Apache HTTP server recipe --- recipes/wip/net/httpd/recipe.toml | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 recipes/wip/net/httpd/recipe.toml diff --git a/recipes/wip/net/httpd/recipe.toml b/recipes/wip/net/httpd/recipe.toml deleted file mode 100644 index dd31170f..00000000 --- a/recipes/wip/net/httpd/recipe.toml +++ /dev/null @@ -1,8 +0,0 @@ -#TODO Not compiled or tested -[source] -tar = "https://dlcdn.apache.org/httpd/httpd-2.4.58.tar.bz2" -[build] -template = "configure" -dependencies = [ - "pcre", -] From 6649a2d18b2b1e6ce42f64bcb6beabd2d0a59d3d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 26 Mar 2024 06:02:11 +0000 Subject: [PATCH 1680/3180] add recipes --- recipes/wip/services/limine/recipe.toml | 5 +++++ recipes/wip/tools/hawkeye/recipe.toml | 9 +++++++++ 2 files changed, 14 insertions(+) create mode 100644 recipes/wip/services/limine/recipe.toml create mode 100644 recipes/wip/tools/hawkeye/recipe.toml diff --git a/recipes/wip/services/limine/recipe.toml b/recipes/wip/services/limine/recipe.toml new file mode 100644 index 00000000..e1c42861 --- /dev/null +++ b/recipes/wip/services/limine/recipe.toml @@ -0,0 +1,5 @@ +#TODO maybe wrong template, see https://github.com/limine-bootloader/limine#building-the-bootloader +[source] +tar = "https://github.com/limine-bootloader/limine/releases/download/v7.2.0/limine-7.2.0.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/tools/hawkeye/recipe.toml b/recipes/wip/tools/hawkeye/recipe.toml new file mode 100644 index 00000000..495f90c3 --- /dev/null +++ b/recipes/wip/tools/hawkeye/recipe.toml @@ -0,0 +1,9 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/korandoru/hawkeye" +rev = "4795c3f0a1bdbb2e129fa367d378e0597d12b42c" +[build] +template = "custom" +script = """ +cookbook_cargo_packages cli fmt +""" From 88728b8ebe37ce2cb634a5e4d5d55f72d7b18eea Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 26 Mar 2024 17:47:25 +0000 Subject: [PATCH 1681/3180] update recipes --- recipes/wip/graphics/blender-lts/recipe.toml | 3 +-- recipes/wip/graphics/blender/recipe.toml | 5 ++--- recipes/wip/libs/libxkbcommon/recipe.toml | 1 + 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/recipes/wip/graphics/blender-lts/recipe.toml b/recipes/wip/graphics/blender-lts/recipe.toml index 02a84dcf..ded92edc 100644 --- a/recipes/wip/graphics/blender-lts/recipe.toml +++ b/recipes/wip/graphics/blender-lts/recipe.toml @@ -1,5 +1,6 @@ #TODO probably wrong script, see https://wiki.blender.org/wiki/Building_Blender/Linux/Generic_Distro #TODO probably missing dependencies +#TODO port to Orbital #TODO customization - https://wiki.blender.org/wiki/Building_Blender/Options [source] tar = "https://download.blender.org/source/blender-3.6.5.tar.xz" @@ -21,8 +22,6 @@ dependencies = [ "libxml2", "libharu", "mesa", - "libx11", - "libwayland", "libxkbcommon", ] script = """ diff --git a/recipes/wip/graphics/blender/recipe.toml b/recipes/wip/graphics/blender/recipe.toml index c2384c2e..bb9e7d8a 100644 --- a/recipes/wip/graphics/blender/recipe.toml +++ b/recipes/wip/graphics/blender/recipe.toml @@ -1,8 +1,9 @@ #TODO probably wrong script, see https://wiki.blender.org/wiki/Building_Blender/Linux/Generic_Distro #TODO probably missing dependencies +#TODO port to Orbital #TODO customization - https://wiki.blender.org/wiki/Building_Blender/Options [source] -tar = "https://download.blender.org/source/blender-4.0.0.tar.xz" +tar = "https://download.blender.org/source/blender-4.1.0.tar.xz" [build] template = "custom" dependencies = [ @@ -21,8 +22,6 @@ dependencies = [ "libxml2", "libharu", "mesa", - "libx11", - "libwayland", "libxkbcommon", ] script = """ diff --git a/recipes/wip/libs/libxkbcommon/recipe.toml b/recipes/wip/libs/libxkbcommon/recipe.toml index 6791d28b..20b8eb02 100644 --- a/recipes/wip/libs/libxkbcommon/recipe.toml +++ b/recipes/wip/libs/libxkbcommon/recipe.toml @@ -1,4 +1,5 @@ #TODO missing script for Meson, see https://github.com/xkbcommon/libxkbcommon#building +#TODO port to Orbital [source] tar = "https://xkbcommon.org/download/libxkbcommon-1.5.0.tar.xz" [build] From dcde95aa07f345e6008bd2217e49a96113955fcb Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 26 Mar 2024 17:49:16 +0000 Subject: [PATCH 1682/3180] Remove a TODO --- recipes/wip/libs/libxkbcommon/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/wip/libs/libxkbcommon/recipe.toml b/recipes/wip/libs/libxkbcommon/recipe.toml index 20b8eb02..6791d28b 100644 --- a/recipes/wip/libs/libxkbcommon/recipe.toml +++ b/recipes/wip/libs/libxkbcommon/recipe.toml @@ -1,5 +1,4 @@ #TODO missing script for Meson, see https://github.com/xkbcommon/libxkbcommon#building -#TODO port to Orbital [source] tar = "https://xkbcommon.org/download/libxkbcommon-1.5.0.tar.xz" [build] From 7f984cb41eb74a590ad6c193381cb02d440e340d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 27 Mar 2024 20:41:06 +0000 Subject: [PATCH 1683/3180] add recipes --- recipes/wip/dev/lurk/recipe.toml | 5 +++++ recipes/wip/tools/omega/recipe.toml | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 recipes/wip/dev/lurk/recipe.toml create mode 100644 recipes/wip/tools/omega/recipe.toml diff --git a/recipes/wip/dev/lurk/recipe.toml b/recipes/wip/dev/lurk/recipe.toml new file mode 100644 index 00000000..7807ab92 --- /dev/null +++ b/recipes/wip/dev/lurk/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/JakWai01/lurk" +[build] +template = "cargo" diff --git a/recipes/wip/tools/omega/recipe.toml b/recipes/wip/tools/omega/recipe.toml new file mode 100644 index 00000000..975ff2a5 --- /dev/null +++ b/recipes/wip/tools/omega/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/nwrenger/omega" +[build] +template = "cargo" From 3bfe48e37744c93eef125b5d64e79f063d100cab Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 30 Mar 2024 22:00:11 +0000 Subject: [PATCH 1684/3180] add recipes --- recipes/wip/dev/bugstalker/recipe.toml | 8 ++++++++ recipes/wip/tools/goldboot/recipe.toml | 8 ++++++++ 2 files changed, 16 insertions(+) create mode 100644 recipes/wip/dev/bugstalker/recipe.toml create mode 100644 recipes/wip/tools/goldboot/recipe.toml diff --git a/recipes/wip/dev/bugstalker/recipe.toml b/recipes/wip/dev/bugstalker/recipe.toml new file mode 100644 index 00000000..f6ae329f --- /dev/null +++ b/recipes/wip/dev/bugstalker/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/godzie44/BugStalker" +[build] +template = "cargo" +dependencies = [ + "libunwind", +] diff --git a/recipes/wip/tools/goldboot/recipe.toml b/recipes/wip/tools/goldboot/recipe.toml new file mode 100644 index 00000000..aee8d26d --- /dev/null +++ b/recipes/wip/tools/goldboot/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/fossable/goldboot" +[build] +template = "custom" +script = """ +cookbook_cargo_packages goldboot +""" From 42f8282839a158f23c39497d423734064218122a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 1 Apr 2024 08:51:44 -0600 Subject: [PATCH 1685/3180] orbutils: install manifests --- recipes/gui/orbutils/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/gui/orbutils/recipe.toml b/recipes/gui/orbutils/recipe.toml index f284dea2..520c7f6a 100644 --- a/recipes/gui/orbutils/recipe.toml +++ b/recipes/gui/orbutils/recipe.toml @@ -6,6 +6,9 @@ template = "custom" script = """ ORIGINAL_SOURCE="${COOKBOOK_SOURCE}" +mkdir -pv "${COOKBOOK_STAGE}/ui" +cp -rv "${COOKBOOK_SOURCE}/apps" "${COOKBOOK_STAGE}/ui/apps" + COOKBOOK_SOURCE="${ORIGINAL_SOURCE}/orbutils" "${COOKBOOK_CARGO}" install \ --path "${COOKBOOK_SOURCE}" \ From ad787d52a0096c2ed4e262610daa61fd0ab56ac8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 1 Apr 2024 10:17:38 -0600 Subject: [PATCH 1686/3180] orbterm: install manifest --- recipes/gui/orbterm/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/gui/orbterm/recipe.toml b/recipes/gui/orbterm/recipe.toml index d2f1e3fd..2b52b776 100644 --- a/recipes/gui/orbterm/recipe.toml +++ b/recipes/gui/orbterm/recipe.toml @@ -4,6 +4,9 @@ git = "https://gitlab.redox-os.org/redox-os/orbterm.git" [build] template = "custom" script = """ +mkdir -pv "${COOKBOOK_STAGE}/ui" +cp -rv "${COOKBOOK_SOURCE}/apps" "${COOKBOOK_STAGE}/ui/apps" + "${COOKBOOK_CARGO}" install \ --path "${COOKBOOK_SOURCE}" \ --root "${COOKBOOK_STAGE}/usr" \ From 449df2a017fd5a6a5404c5d6c9adc3bbf32aad53 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 1 Apr 2024 10:18:03 -0600 Subject: [PATCH 1687/3180] Update Cargo.lock --- Cargo.lock | 7 ------- 1 file changed, 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index dae3c033..6a39a6d1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -68,12 +68,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "anyhow" -version = "1.0.81" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247" - [[package]] name = "arg_parser" version = "0.1.0" @@ -1219,7 +1213,6 @@ dependencies = [ name = "redox_cookbook" version = "0.1.0" dependencies = [ - "anyhow", "blake3 1.5.0", "pbr", "pkgar", From 6b8f59180a915b46233ea16f5f07e7fcd2901292 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 1 Apr 2024 10:26:35 -0600 Subject: [PATCH 1688/3180] gnu-binutils: disable LTO --- recipes/tools/gnu-binutils/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/tools/gnu-binutils/recipe.sh b/recipes/tools/gnu-binutils/recipe.sh index 03c15d6a..f87b12bc 100644 --- a/recipes/tools/gnu-binutils/recipe.sh +++ b/recipes/tools/gnu-binutils/recipe.sh @@ -27,6 +27,7 @@ function recipe_build { --with-multilib \ --with-interwork \ --enable-targets="${TARGET}" \ + --disable-lto \ --disable-nls \ --disable-werror "$REDOX_MAKE" -j"$($NPROC)" From 97aa876f2af4c3a3cb08bde9180e461d4ebc438a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 1 Apr 2024 11:06:17 -0600 Subject: [PATCH 1689/3180] gcc13: disable LTO --- recipes/dev/gcc13/recipe.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/recipes/dev/gcc13/recipe.sh b/recipes/dev/gcc13/recipe.sh index 90cefc45..fef38205 100644 --- a/recipes/dev/gcc13/recipe.sh +++ b/recipes/dev/gcc13/recipe.sh @@ -30,11 +30,13 @@ function recipe_build { --prefix=/ \ --with-sysroot=/ \ --with-build-sysroot="$sysroot" \ - --enable-static \ - --enable-shared \ + --with-static-standard-libraries \ --disable-dlopen \ + --disable-lto \ --disable-nls \ --enable-languages=c,c++ \ + --enable-shared \ + --enable-static \ --enable-threads=posix "$REDOX_MAKE" -j "$(nproc)" all-gcc all-target-libgcc all-target-libstdc++-v3 skip=1 From 69a63abb9e59d94628b36cb26e68638a531e850e Mon Sep 17 00:00:00 2001 From: Jordan McCallum Date: Mon, 1 Apr 2024 08:41:31 +1000 Subject: [PATCH 1690/3180] xz: update and change to git the xz backdoor caused github to disable the repo. Changing to the tukaani git to allow builds to happen. Moved from tarball to git clone for building xz to avoid any other potential tarball poisoning by JiaT75, using the commit tagged as 5.2.5; the latest full release tag available without any commits by JiaT75. --- recipes/tools/xz/recipe.toml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/recipes/tools/xz/recipe.toml b/recipes/tools/xz/recipe.toml index d36b3a7a..87eb02ea 100644 --- a/recipes/tools/xz/recipe.toml +++ b/recipes/tools/xz/recipe.toml @@ -1,13 +1,12 @@ [source] -tar = "https://tukaani.org/xz/xz-5.4.3.tar.xz" -blake3 = "4b1b814bcf3794973fe9076d549a0edfbee01d2fd57821fe3280537ef6c7deae" -script = """ -./autogen.sh -""" +git = "https://git.tukaani.org/xz.git" +# v5.2.5 +rev = "2327a461e1afce862c22269b80d3517801103c1b" [build] template = "custom" script = """ +(cd ${COOKBOOK_SOURCE} && ./autogen.sh) export CFLAGS="-static" COOKBOOK_CONFIGURE_FLAGS=( --host="${TARGET}" From 66d16a665995a2822684af8aae134382e08e93a0 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 5 Apr 2024 21:33:58 +0000 Subject: [PATCH 1691/3180] add recipes --- recipes/wip/dev/cargo-hack/recipe.toml | 5 +++++ recipes/wip/dev/cargo-machete/recipe.toml | 5 +++++ recipes/wip/dev/wrecc/recipe.toml | 5 +++++ recipes/wip/sound/asak/recipe.toml | 5 +++++ recipes/wip/tools/objdiff/recipe.toml | 8 ++++++++ 5 files changed, 28 insertions(+) create mode 100644 recipes/wip/dev/cargo-hack/recipe.toml create mode 100644 recipes/wip/dev/cargo-machete/recipe.toml create mode 100644 recipes/wip/dev/wrecc/recipe.toml create mode 100644 recipes/wip/sound/asak/recipe.toml create mode 100644 recipes/wip/tools/objdiff/recipe.toml diff --git a/recipes/wip/dev/cargo-hack/recipe.toml b/recipes/wip/dev/cargo-hack/recipe.toml new file mode 100644 index 00000000..616dbdb9 --- /dev/null +++ b/recipes/wip/dev/cargo-hack/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/taiki-e/cargo-hack" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-machete/recipe.toml b/recipes/wip/dev/cargo-machete/recipe.toml new file mode 100644 index 00000000..7ac6f664 --- /dev/null +++ b/recipes/wip/dev/cargo-machete/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/bnjbvr/cargo-machete" +[build] +template = "cargo" diff --git a/recipes/wip/dev/wrecc/recipe.toml b/recipes/wip/dev/wrecc/recipe.toml new file mode 100644 index 00000000..276f7622 --- /dev/null +++ b/recipes/wip/dev/wrecc/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/PhilippRados/wrecc" +[build] +template = "cargo" diff --git a/recipes/wip/sound/asak/recipe.toml b/recipes/wip/sound/asak/recipe.toml new file mode 100644 index 00000000..eec34c56 --- /dev/null +++ b/recipes/wip/sound/asak/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/chaosprint/asak" +[build] +template = "cargo" diff --git a/recipes/wip/tools/objdiff/recipe.toml b/recipes/wip/tools/objdiff/recipe.toml new file mode 100644 index 00000000..66a58844 --- /dev/null +++ b/recipes/wip/tools/objdiff/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/encounter/objdiff" +[build] +template = "custom" +script = """ +cookbook_cargo_packages objdiff-gui +""" From 6333691210fbf6b660ec6c70ddebad664bd1dd69 Mon Sep 17 00:00:00 2001 From: Chad Williamson Date: Sun, 7 Apr 2024 16:01:11 -0500 Subject: [PATCH 1692/3180] Update uutils recipe --- recipes/core/uutils/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/core/uutils/recipe.toml b/recipes/core/uutils/recipe.toml index 3f25cc78..e438e754 100644 --- a/recipes/core/uutils/recipe.toml +++ b/recipes/core/uutils/recipe.toml @@ -1,6 +1,6 @@ [source] git = "https://github.com/uutils/coreutils" -rev = "181cfc885b460bbcdf2cf1c866cb1ea48c3f6009" +rev = "a75b8a0f676172b2a2d680adb4faf2fa7e1fa41c" [build] template = "custom" From fe660c5b51a893010225b0bb39691c631f5deb93 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 7 Apr 2024 22:12:10 +0000 Subject: [PATCH 1693/3180] Use latest GitHub release hash for uutils --- recipes/core/uutils/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/core/uutils/recipe.toml b/recipes/core/uutils/recipe.toml index e438e754..da50db77 100644 --- a/recipes/core/uutils/recipe.toml +++ b/recipes/core/uutils/recipe.toml @@ -1,6 +1,6 @@ [source] git = "https://github.com/uutils/coreutils" -rev = "a75b8a0f676172b2a2d680adb4faf2fa7e1fa41c" +rev = "68c77b4bd129bdc12d03cc74fe0f817d2df75894" [build] template = "custom" From 2c62ed7da6b458712357d8572c0fd91ae0b7497a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 9 Apr 2024 14:12:32 +0000 Subject: [PATCH 1694/3180] Add a recipe for "Hello World" examples --- recipes/dev/hello-world/recipe.toml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 recipes/dev/hello-world/recipe.toml diff --git a/recipes/dev/hello-world/recipe.toml b/recipes/dev/hello-world/recipe.toml new file mode 100644 index 00000000..23d7120d --- /dev/null +++ b/recipes/dev/hello-world/recipe.toml @@ -0,0 +1,9 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/leachim6/hello-world" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/hello-world +cp -rv "${COOKBOOK_SOURCE}"/[#,a-z] "${COOKBOOK_STAGE}"/usr/share/hello-world +""" From 9c1b24de870b2f65a1e437a31d842f3a0af6511e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 14 Apr 2024 17:20:19 +0000 Subject: [PATCH 1695/3180] Add recipes --- recipes/wip/dev/cargo-goggles/recipe.toml | 5 +++++ recipes/wip/dev/cargo-semver-checks/recipe.toml | 5 +++++ recipes/wip/tools/nickel/recipe.toml | 9 +++++++++ recipes/wip/tui/nyaa-rs/recipe.toml | 5 +++++ recipes/wip/tui/terminusdm/recipe.toml | 6 ++++++ 5 files changed, 30 insertions(+) create mode 100644 recipes/wip/dev/cargo-goggles/recipe.toml create mode 100644 recipes/wip/dev/cargo-semver-checks/recipe.toml create mode 100644 recipes/wip/tools/nickel/recipe.toml create mode 100644 recipes/wip/tui/nyaa-rs/recipe.toml create mode 100644 recipes/wip/tui/terminusdm/recipe.toml diff --git a/recipes/wip/dev/cargo-goggles/recipe.toml b/recipes/wip/dev/cargo-goggles/recipe.toml new file mode 100644 index 00000000..7e15385e --- /dev/null +++ b/recipes/wip/dev/cargo-goggles/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/M4SS-Code/cargo-goggles" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-semver-checks/recipe.toml b/recipes/wip/dev/cargo-semver-checks/recipe.toml new file mode 100644 index 00000000..a8a6894a --- /dev/null +++ b/recipes/wip/dev/cargo-semver-checks/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/obi1kenobi/cargo-semver-checks" +[build] +template = "cargo" diff --git a/recipes/wip/tools/nickel/recipe.toml b/recipes/wip/tools/nickel/recipe.toml new file mode 100644 index 00000000..82be3444 --- /dev/null +++ b/recipes/wip/tools/nickel/recipe.toml @@ -0,0 +1,9 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/tweag/nickel" +rev = "13ffc851aed22b4c7d9630cd423e627304b7ea8f" +[build] +template = "custom" +script = """ +cookbook_cargo_packages nickel-lang-cli +""" diff --git a/recipes/wip/tui/nyaa-rs/recipe.toml b/recipes/wip/tui/nyaa-rs/recipe.toml new file mode 100644 index 00000000..00f7d662 --- /dev/null +++ b/recipes/wip/tui/nyaa-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Beastwick18/nyaa" +[build] +template = "cargo" diff --git a/recipes/wip/tui/terminusdm/recipe.toml b/recipes/wip/tui/terminusdm/recipe.toml new file mode 100644 index 00000000..7eb159d7 --- /dev/null +++ b/recipes/wip/tui/terminusdm/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/sumoduduk/terminusdm" +rev = "ed95a51bec282238e73d4215f4d97e6c7356e415" +[build] +template = "cargo" From af512019dcd722102b366f047eb1fbf9e966ccb8 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 15 Apr 2024 01:07:03 +0000 Subject: [PATCH 1696/3180] Add the Ubuntu wallpapers recipe --- recipes/artwork/ubuntu-wallpapers/recipe.toml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 recipes/artwork/ubuntu-wallpapers/recipe.toml diff --git a/recipes/artwork/ubuntu-wallpapers/recipe.toml b/recipes/artwork/ubuntu-wallpapers/recipe.toml new file mode 100644 index 00000000..b9100d49 --- /dev/null +++ b/recipes/artwork/ubuntu-wallpapers/recipe.toml @@ -0,0 +1,9 @@ +[source] +tar = "https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/ubuntu-wallpapers/23.10.4/ubuntu-wallpapers_23.10.4.orig.tar.gz" +blake3 = "1e479d0aa48fe3f2961a2dac28c3ed397a29616cf6e7d73f5ceb6fabfd6449e1" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/wallpapers +cp -rv "${COOKBOOK_SOURCE}"/ubuntu-wallpapers-23.10.4/*.{jpg,png} "${COOKBOOK_STAGE}"/usr/share/wallpapers +""" From be8f305752adedefe4da3bd1b0c7d086f59bd19e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 15 Apr 2024 01:36:06 +0000 Subject: [PATCH 1697/3180] Add the PopOS wallpapers recipe --- recipes/artwork/pop-wallpapers/recipe.toml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 recipes/artwork/pop-wallpapers/recipe.toml diff --git a/recipes/artwork/pop-wallpapers/recipe.toml b/recipes/artwork/pop-wallpapers/recipe.toml new file mode 100644 index 00000000..dc4e25b4 --- /dev/null +++ b/recipes/artwork/pop-wallpapers/recipe.toml @@ -0,0 +1,8 @@ +[source] +git = "https://github.com/pop-os/wallpapers" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/wallpapers +cp -rv "${COOKBOOK_SOURCE}"/original/* "${COOKBOOK_STAGE}"/usr/share/wallpapers +""" From 18044c27456ca771271d11174b96572602baea7c Mon Sep 17 00:00:00 2001 From: Chad Williamson Date: Sun, 14 Apr 2024 21:13:04 -0500 Subject: [PATCH 1698/3180] Bump uutils to version with fix for mv bug --- recipes/core/uutils/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/core/uutils/recipe.toml b/recipes/core/uutils/recipe.toml index da50db77..c62c6ed1 100644 --- a/recipes/core/uutils/recipe.toml +++ b/recipes/core/uutils/recipe.toml @@ -1,6 +1,6 @@ [source] git = "https://github.com/uutils/coreutils" -rev = "68c77b4bd129bdc12d03cc74fe0f817d2df75894" +rev = "9d82fa3b9abd3d359afae0b6b9eb2a22b93b9a1c" [build] template = "custom" From 4c9812da532739cd67c7ade0eaea6892a3298fcd Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 15 Apr 2024 18:15:16 +0000 Subject: [PATCH 1699/3180] Add a recipe --- recipes/wip/dev/add-determinism/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/wip/dev/add-determinism/recipe.toml diff --git a/recipes/wip/dev/add-determinism/recipe.toml b/recipes/wip/dev/add-determinism/recipe.toml new file mode 100644 index 00000000..089eb038 --- /dev/null +++ b/recipes/wip/dev/add-determinism/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/keszybz/add-determinism" +[build] +template = "cargo" From 6edd77a51a748e435d0d7fc4b1d3b89b54004dbe Mon Sep 17 00:00:00 2001 From: bpisch Date: Tue, 16 Apr 2024 10:00:23 +0200 Subject: [PATCH 1700/3180] Add dependencies and a basic build script to postgresql16 recipe, and update the top status line. --- recipes/wip/db/postgresql16/recipe.toml | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/recipes/wip/db/postgresql16/recipe.toml b/recipes/wip/db/postgresql16/recipe.toml index ccb5ddff..b439b54b 100644 --- a/recipes/wip/db/postgresql16/recipe.toml +++ b/recipes/wip/db/postgresql16/recipe.toml @@ -1,5 +1,18 @@ -#TODO compilation error +#TODO waiting on sigjmp_buf and related POSIX functions in relibc [source] tar = "https://ftp.postgresql.org/pub/source/v16.0/postgresql-16.0.tar.bz2" [build] -template = "configure" +template = "custom" +dependencies = [ + "readline", + "zlib", +] +script = """ +cp "${COOKBOOK_SOURCE}/src/backend/utils/errcodes.h" "${COOKBOOK_SOURCE}/src/include/utils/errcodes.h" +COOKBOOK_CONFIGURE_FLAGS+=( + --without-icu + --without-readline + --with-template=redox +) +cookbook_configure +""" From 5e7f2ef9e18aa3403abcc3abf8763d7f6a6776b9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 17 Apr 2024 18:37:41 +0000 Subject: [PATCH 1701/3180] Add the "redict" and "valkey" recipes --- recipes/wip/dev/redict/recipe.toml | 6 ++++++ recipes/wip/dev/valkey/recipe.toml | 6 ++++++ 2 files changed, 12 insertions(+) create mode 100644 recipes/wip/dev/redict/recipe.toml create mode 100644 recipes/wip/dev/valkey/recipe.toml diff --git a/recipes/wip/dev/redict/recipe.toml b/recipes/wip/dev/redict/recipe.toml new file mode 100644 index 00000000..7e7ed8cb --- /dev/null +++ b/recipes/wip/dev/redict/recipe.toml @@ -0,0 +1,6 @@ +#TODO Missing script for "make", see https://redict.io/docs/install/#installing-from-source +[source] +git = "https://codeberg.org/redict/redict" +rev = "5684cdbd9f2aefb494dfb346292d4322319d236b" +[build] +template = "custom" diff --git a/recipes/wip/dev/valkey/recipe.toml b/recipes/wip/dev/valkey/recipe.toml new file mode 100644 index 00000000..ec17f5de --- /dev/null +++ b/recipes/wip/dev/valkey/recipe.toml @@ -0,0 +1,6 @@ +#TODO Missing script for "make", see https://github.com/valkey-io/valkey#building-valkey +[source] +git = "https://github.com/valkey-io/valkey" +rev = "26388270f197bce84817eea0a73d687d58442654" +[build] +template = "custom" From f91af382720413eb33a83b600531d1bf5989678c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 17 Apr 2024 19:48:25 +0000 Subject: [PATCH 1702/3180] update the bitcoin-core version --- recipes/wip/net/bitcoin-core/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/net/bitcoin-core/recipe.toml b/recipes/wip/net/bitcoin-core/recipe.toml index f8b7be25..b596d03c 100644 --- a/recipes/wip/net/bitcoin-core/recipe.toml +++ b/recipes/wip/net/bitcoin-core/recipe.toml @@ -1,6 +1,6 @@ #TODO Not compiled or tested [source] -tar = "https://bitcoincore.org/bin/bitcoin-core-26.0/bitcoin-26.0.tar.gz" +tar = "https://bitcoincore.org/bin/bitcoin-core-27.0/bitcoin-27.0.tar.gz" [build] template = "custom" dependencies = [ From f9b8d90fa75aea72a956acad0d8c18439bde063c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 19 Apr 2024 09:07:21 -0600 Subject: [PATCH 1703/3180] pkgar: fix recipe --- recipes/core/pkgar/recipe.toml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/recipes/core/pkgar/recipe.toml b/recipes/core/pkgar/recipe.toml index 6770c627..5ad0c751 100644 --- a/recipes/core/pkgar/recipe.toml +++ b/recipes/core/pkgar/recipe.toml @@ -2,4 +2,11 @@ git = "https://gitlab.redox-os.org/redox-os/pkgar.git" [build] -template = "cargo" +template = "custom" +script = """ +"${COOKBOOK_CARGO}" install \ + --path "${COOKBOOK_SOURCE}/pkgar" \ + --root "${COOKBOOK_STAGE}/usr" \ + --locked \ + --no-track +""" From 32bf3a666106635f3ce74879d894d27dad1f53cd Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 19 Apr 2024 09:08:08 -0600 Subject: [PATCH 1704/3180] drivers: install usbhubd --- recipes/core/drivers/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/core/drivers/recipe.toml b/recipes/core/drivers/recipe.toml index 3df8bc52..84619553 100644 --- a/recipes/core/drivers/recipe.toml +++ b/recipes/core/drivers/recipe.toml @@ -15,6 +15,7 @@ BINS=( rtl8168d usbctl usbhidd + usbhubd usbscsid virtio-netd xhcid From cac2f2e2ad3bf63e9471765c7904f718fdcfaa75 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 19 Apr 2024 09:11:34 -0600 Subject: [PATCH 1705/3180] Update dependencies --- Cargo.lock | 674 +++++++++++++++++++++++++++++++---------------------- pkgar | 2 +- pkgutils | 2 +- 3 files changed, 403 insertions(+), 275 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6a39a6d1..ed5aef80 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -37,9 +37,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.0.5" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c378d78423fdad8089616f827526ee33c19f2fddbd5de1629152c9593ba4783" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -115,15 +115,15 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" dependencies = [ "addr2line", "cc", @@ -170,9 +170,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" [[package]] name = "blake2" @@ -212,9 +212,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0231f06152bf547e9c2b5194f247cd97aacf6dcd8b15d8e5ec0663f64580da87" +checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" dependencies = [ "arrayref", "arrayvec 0.7.4", @@ -250,30 +250,27 @@ checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytecount" -version = "0.6.3" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c676a478f63e9fa2dd5368a42f28bba0d6c560b775f38583c8bbaa7fcd67c9c" +checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cc" -version = "1.0.83" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" -dependencies = [ - "libc", -] +checksum = "17f6e324229dc011159fcc089755d1e2e216a90d43a7dea6853ca740b84f35e7" [[package]] name = "cfg-if" @@ -289,16 +286,16 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.30" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defd4e7873dbddba6c7c91e199c7fcb946abc4a6a4ac3195400bcfb01b5de877" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "wasm-bindgen", - "windows-targets 0.48.5", + "windows-targets 0.52.5", ] [[package]] @@ -339,85 +336,76 @@ checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "cpufeatures" -version = "0.2.9" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] [[package]] name = "crc" -version = "3.0.1" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfe" +checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" dependencies = [ "crc-catalog", ] [[package]] name = "crc-catalog" -version = "2.2.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cace84e55f07e7301bae1c519df89cdad8cc3cd868413d3fdbdeca9ff3db484" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" dependencies = [ "cfg-if 1.0.0", ] [[package]] name = "crossbeam-channel" -version = "0.5.8" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" dependencies = [ - "cfg-if 1.0.0", "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ - "cfg-if 1.0.0", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.15" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg", - "cfg-if 1.0.0", "crossbeam-utils", - "memoffset", - "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if 1.0.0", -] +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" [[package]] name = "crypto-common" @@ -465,16 +453,16 @@ version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309" dependencies = [ - "dirs-sys", + "dirs-sys 0.3.7", ] [[package]] name = "dirs" -version = "4.0.0" +version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" dependencies = [ - "dirs-sys", + "dirs-sys 0.4.1", ] [[package]] @@ -488,6 +476,18 @@ dependencies = [ "winapi", ] +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + [[package]] name = "ed25519" version = "1.5.3" @@ -499,9 +499,9 @@ dependencies = [ [[package]] name = "either" -version = "1.9.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" [[package]] name = "env_logger" @@ -511,7 +511,7 @@ checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" dependencies = [ "atty", "humantime", - "log 0.4.20", + "log 0.4.21", "regex", "termcolor", ] @@ -524,23 +524,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.3" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys 0.48.0", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" -dependencies = [ - "cc", "libc", + "windows-sys 0.52.0", ] [[package]] @@ -577,9 +566,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.0" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" +checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" [[package]] name = "fatfs" @@ -590,19 +579,19 @@ dependencies = [ "bitflags 1.3.2", "byteorder", "chrono", - "log 0.4.20", + "log 0.4.21", ] [[package]] name = "filetime" -version = "0.2.22" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" +checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall 0.3.5", - "windows-sys 0.48.0", + "redox_syscall 0.4.1", + "windows-sys 0.52.0", ] [[package]] @@ -617,7 +606,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "315ce685aca5ddcc5a3e7e436ef47d4a5d0064462849b6f0f628c28140103531" dependencies = [ - "log 0.4.20", + "log 0.4.21", ] [[package]] @@ -627,7 +616,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5910691a0ececcc6eba8bb14029025c2d123e96a53db1533f6a4602861a5aaf7" dependencies = [ "libc", - "log 0.4.20", + "log 0.4.21", "memchr", "page_size", "pkg-config", @@ -659,9 +648,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" dependencies = [ "cfg-if 1.0.0", "libc", @@ -670,9 +659,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "gpt" @@ -680,9 +669,9 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8283e7331b8c93b9756e0cfdbcfb90312852f953c6faf9bf741e684cc3b6ad69" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.5.0", "crc", - "log 0.4.20", + "log 0.4.21", "uuid", ] @@ -694,9 +683,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.0" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" [[package]] name = "hermit-abi" @@ -709,9 +698,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.2" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "hex" @@ -767,16 +756,16 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.57" +version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows", + "windows-core", ] [[package]] @@ -811,12 +800,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.0.0" +version = "2.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown 0.14.0", + "hashbrown 0.14.3", ] [[package]] @@ -830,18 +819,18 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] [[package]] name = "keccak" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" dependencies = [ "cpufeatures", ] @@ -860,9 +849,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.147" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "libflate" @@ -884,6 +873,28 @@ dependencies = [ "rle-decode-fast", ] +[[package]] +name = "libredox" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" +dependencies = [ + "bitflags 2.5.0", + "libc", + "redox_syscall 0.4.1", +] + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.5.0", + "libc", + "redox_syscall 0.5.1", +] + [[package]] name = "libsodium-sys" version = "0.2.7" @@ -898,9 +909,9 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.4.5" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[package]] name = "log" @@ -908,14 +919,14 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" dependencies = [ - "log 0.4.20", + "log 0.4.21", ] [[package]] name = "log" -version = "0.4.20" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "matches" @@ -925,18 +936,9 @@ checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" [[package]] name = "memchr" -version = "2.6.3" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" - -[[package]] -name = "memoffset" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" -dependencies = [ - "autocfg", -] +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" [[package]] name = "memsec" @@ -944,7 +946,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa0916b001582d253822171bd23f4a0229d32b9507fae236f5da8cad515ba7c" dependencies = [ - "getrandom 0.2.10", + "getrandom 0.2.14", "libc", "windows-sys 0.45.0", ] @@ -960,18 +962,18 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" dependencies = [ "adler", ] [[package]] name = "num-traits" -version = "0.2.16" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" dependencies = [ "autocfg", ] @@ -982,7 +984,7 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.2", + "hermit-abi 0.3.9", "libc", ] @@ -994,24 +996,30 @@ checksum = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" [[package]] name = "object" -version = "0.32.1" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "opaque-debug" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "page_size" @@ -1061,9 +1069,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.27" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "pkgar" @@ -1107,7 +1115,7 @@ dependencies = [ "seckey", "serde", "sodiumoxide", - "termion", + "termion 1.5.6", "toml 0.5.11", "user-error", ] @@ -1126,9 +1134,9 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" dependencies = [ "unicode-ident", ] @@ -1144,9 +1152,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.33" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -1178,7 +1186,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.10", + "getrandom 0.2.14", ] [[package]] @@ -1189,9 +1197,9 @@ checksum = "384c2842d4e069d5ccacf5fe1dca4ef8d07a5444329715f0fc3c61813502d4d1" [[package]] name = "rayon" -version = "1.7.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" dependencies = [ "either", "rayon-core", @@ -1199,36 +1207,40 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.11.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ - "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "num_cpus", ] +[[package]] +name = "redox-path" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436d45c2b6a5b159d43da708e62b25be3a4a3d5550d654b72216ade4c4bfd717" + [[package]] name = "redox_cookbook" version = "0.1.0" dependencies = [ - "blake3 1.5.0", + "blake3 1.5.1", "pbr", "pkgar", "pkgar-keys", "redoxer", "serde", - "termion", + "termion 1.5.6", "toml 0.5.11", "walkdir", ] [[package]] name = "redox_installer" -version = "0.2.15" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69427a6b5ecba62c7899af4153392d7871b144735df74913b22f093f6d568b3" +checksum = "028991941c66e07348f5d04c8600f96756395ca9961906fce9d3ed68db4a36c5" dependencies = [ "arg_parser", "failure", @@ -1242,25 +1254,26 @@ dependencies = [ "rand", "redox_liner", "redox_pkgutils", - "redox_syscall 0.4.0", + "redox_syscall 0.5.1", "redoxfs", "rust-argon2", "serde", "serde_derive", - "termion", - "toml 0.5.11", + "termion 1.5.6", + "toml 0.8.12", "uuid", ] [[package]] name = "redox_liner" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f014f6b014591f45bdd86377ab2f01b840ddd9e33421222b84d06e244b111327" +checksum = "63c3dc5996de1508c9dad60461f6a5b9611d9c31610c29d3ff4ec97df408671c" dependencies = [ "bytecount", "itertools", - "termion", + "strip-ansi-escapes", + "termion 2.0.3", "unicode-width", ] @@ -1304,85 +1317,84 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.3.5" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ "bitflags 1.3.2", ] [[package]] name = "redox_syscall" -version = "0.4.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded0bce2d41cc3c57aefa284708ced249a64acb01745dbbe72bd78610bfd644c" +checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.5.0", ] [[package]] name = "redox_termios" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8440d8acb4fd3d277125b4bd01a6f38aee8d814b3b5fc09b3f2b825d37d3fe8f" -dependencies = [ - "redox_syscall 0.2.16", -] +checksum = "20145670ba436b55d91fc92d25e71160fbfbdd57831631c8d7d36377a476f1cb" [[package]] name = "redox_users" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ - "getrandom 0.2.10", - "redox_syscall 0.2.16", + "getrandom 0.2.14", + "libredox 0.1.3", "thiserror", ] [[package]] name = "redoxer" -version = "0.2.34" +version = "0.2.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28f4c43d4a8cafc66cb3e21354a135d6d01dbcdca916b72d8dd58adbf5f9ca62" +checksum = "bfd3777d546d0845e2d03c3ce7927ed74a048d489dafe775373855040e07fef5" dependencies = [ - "dirs 4.0.0", + "dirs 5.0.1", "proc-mounts", "redox_installer", - "redox_syscall 0.4.0", + "redox_syscall 0.5.1", "redoxfs", "tempfile", - "toml 0.7.6", + "toml 0.8.12", ] [[package]] name = "redoxfs" -version = "0.5.13" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab8570858b6b17849dce23eab63f7e659bb274c933da061b85e60010e53a3df7" +checksum = "53fd4a89861ecb0c40d804dd1b686a86896a7ba162ef5cb484ed68e5c5b0837d" dependencies = [ "aes", "argon2", "base64ct", "env_logger", "fuser", - "getrandom 0.2.10", + "getrandom 0.2.14", "libc", - "log 0.4.20", + "libredox 0.1.3", + "log 0.4.21", "range-tree", + "redox-path", "redox_simple_endian", - "redox_syscall 0.4.0", + "redox_syscall 0.5.1", "seahash", - "termion", + "termion 2.0.3", "time", "uuid", ] [[package]] name = "regex" -version = "1.9.5" +version = "1.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" dependencies = [ "aho-corasick", "memchr", @@ -1392,9 +1404,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.8" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" dependencies = [ "aho-corasick", "memchr", @@ -1403,9 +1415,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.7.5" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" [[package]] name = "ring" @@ -1445,15 +1457,15 @@ checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustix" -version = "0.38.11" +version = "0.38.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0c3dde1fc030af041adc40e79c0e7fbcf431dd24870053d187d7c66e4b87453" +checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.5.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -1463,7 +1475,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "942b71057b31981152970d57399c25f72e27a6ee0d207a669d8304cabf44705b" dependencies = [ "base64 0.9.3", - "log 0.4.20", + "log 0.4.21", "ring", "sct", "untrusted", @@ -1485,12 +1497,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - [[package]] name = "sct" version = "0.4.0" @@ -1519,29 +1525,29 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.188" +version = "1.0.198" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.188" +version = "1.0.198" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" +checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.60", ] [[package]] name = "serde_spanned" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" +checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" dependencies = [ "serde", ] @@ -1566,9 +1572,9 @@ checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" [[package]] name = "smallvec" -version = "1.11.0" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "sodiumoxide" @@ -1581,6 +1587,15 @@ dependencies = [ "libsodium-sys", ] +[[package]] +name = "strip-ansi-escapes" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "011cbb39cf7c1f62871aea3cc46e5817b0937b49e9447370c93cacbe93a766d8" +dependencies = [ + "vte", +] + [[package]] name = "strsim" version = "0.8.0" @@ -1606,9 +1621,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.31" +version = "2.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "718fa2415bcb8d8bd775917a1bf12a7931b6dfa890753378538118181e0cb398" +checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" dependencies = [ "proc-macro2", "quote", @@ -1640,22 +1655,21 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.8.0" +version = "3.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ "cfg-if 1.0.0", "fastrand", - "redox_syscall 0.3.5", "rustix", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "termcolor" -version = "1.2.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ "winapi-util", ] @@ -1672,6 +1686,18 @@ dependencies = [ "redox_termios", ] +[[package]] +name = "termion" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4648c7def6f2043b2568617b9f9b75eae88ca185dbc1f1fda30e95a85d49d7d" +dependencies = [ + "libc", + "libredox 0.0.2", + "numtoa", + "redox_termios", +] + [[package]] name = "textwrap" version = "0.11.0" @@ -1683,22 +1709,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.48" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7" +checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.48" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35" +checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.60", ] [[package]] @@ -1738,9 +1764,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.7.6" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542" +checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" dependencies = [ "serde", "serde_spanned", @@ -1750,20 +1776,20 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.19.14" +version = "0.22.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" +checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" dependencies = [ - "indexmap 2.0.0", + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", @@ -1784,9 +1810,9 @@ checksum = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" [[package]] name = "typenum" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unicase" @@ -1799,30 +1825,30 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] [[package]] name = "unicode-width" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" [[package]] name = "unicode-xid" @@ -1860,16 +1886,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24cc0f6d6f267b73e5a2cadf007ba8f9bc39c6a6f9666f8cf25ea809a153b032" dependencies = [ "libc", - "log 0.4.20", + "log 0.4.21", ] [[package]] -name = "uuid" -version = "1.4.1" +name = "utf8parse" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "uuid" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" dependencies = [ - "getrandom 0.2.10", + "getrandom 0.2.14", ] [[package]] @@ -1897,10 +1929,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] -name = "walkdir" -version = "2.4.0" +name = "vte" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +checksum = "6cbce692ab4ca2f1f3047fcf732430249c0e971bfdd2b234cf2c47ad93af5983" +dependencies = [ + "arrayvec 0.5.2", + "utf8parse", + "vte_generate_state_changes", +] + +[[package]] +name = "vte_generate_state_changes" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d257817081c7dffcdbab24b9e62d2def62e2ff7d00b1c20062551e6cccc145ff" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", "winapi-util", @@ -1926,9 +1979,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if 1.0.0", "wasm-bindgen-macro", @@ -1936,24 +1989,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", - "log 0.4.20", + "log 0.4.21", "once_cell", "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.60", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1961,22 +2014,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.60", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "webpki" @@ -2016,9 +2069,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ "winapi", ] @@ -2030,12 +2083,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows" -version = "0.48.0" +name = "windows-core" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.48.5", + "windows-targets 0.52.5", ] [[package]] @@ -2056,6 +2109,15 @@ dependencies = [ "windows-targets 0.48.5", ] +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.5", +] + [[package]] name = "windows-targets" version = "0.42.2" @@ -2086,6 +2148,22 @@ dependencies = [ "windows_x86_64_msvc 0.48.5", ] +[[package]] +name = "windows-targets" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +dependencies = [ + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" @@ -2098,6 +2176,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" + [[package]] name = "windows_aarch64_msvc" version = "0.42.2" @@ -2110,6 +2194,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" + [[package]] name = "windows_i686_gnu" version = "0.42.2" @@ -2122,6 +2212,18 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +[[package]] +name = "windows_i686_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" + [[package]] name = "windows_i686_msvc" version = "0.42.2" @@ -2134,6 +2236,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +[[package]] +name = "windows_i686_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" + [[package]] name = "windows_x86_64_gnu" version = "0.42.2" @@ -2146,6 +2254,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" + [[package]] name = "windows_x86_64_gnullvm" version = "0.42.2" @@ -2158,6 +2272,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" + [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -2171,28 +2291,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] -name = "winnow" -version = "0.5.15" +name = "windows_x86_64_msvc" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" + +[[package]] +name = "winnow" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0c976aaaa0e1f90dbb21e9587cdaf1d9679a1cde8875c0d6bd83ab96a208352" dependencies = [ "memchr", ] [[package]] name = "xattr" -version = "1.0.1" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985" +checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" dependencies = [ "libc", + "linux-raw-sys", + "rustix", ] [[package]] name = "zerocopy" -version = "0.6.4" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20707b61725734c595e840fb3704378a0cd2b9c74cc9e6e20724838fc6a1e2f9" +checksum = "854e949ac82d619ee9a14c66a1b674ac730422372ccb759ce0c39cabcf2bf8e6" dependencies = [ "byteorder", "zerocopy-derive", @@ -2200,11 +2328,11 @@ dependencies = [ [[package]] name = "zerocopy-derive" -version = "0.6.4" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56097d5b91d711293a42be9289403896b68654625021732067eac7a4ca388a1f" +checksum = "125139de3f6b9d625c39e2efdd73d41bdac468ccd556556440e322be0e1bbd91" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.60", ] diff --git a/pkgar b/pkgar index 7a316443..0ab40f34 160000 --- a/pkgar +++ b/pkgar @@ -1 +1 @@ -Subproject commit 7a316443046eef7cce87f62ccc5ea26e6fb33de2 +Subproject commit 0ab40f343fc578d8893e78f0ff9de02adad4e36f diff --git a/pkgutils b/pkgutils index ded66a6e..87e2dc87 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit ded66a6e557c6384026d2394b7624a12d66f53d7 +Subproject commit 87e2dc87076f37a47b914adb8aa1e7ad54e85942 From 8bbca988b689835dd9316c5e7c6f719892f246d8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 19 Apr 2024 13:26:50 -0600 Subject: [PATCH 1706/3180] Update pkgar --- pkgar | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgar b/pkgar index 0ab40f34..8397098e 160000 --- a/pkgar +++ b/pkgar @@ -1 +1 @@ -Subproject commit 0ab40f343fc578d8893e78f0ff9de02adad4e36f +Subproject commit 8397098ecbea980eb89e9d596d99379f52ae53ee From ceb4425801074c0ed30f36cc67c4e6e0493bfe6d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 19 Apr 2024 13:31:28 -0600 Subject: [PATCH 1707/3180] Update dependencies --- Cargo.lock | 312 +++++++++++++++++------------------------------------ 1 file changed, 97 insertions(+), 215 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ed5aef80..ce0faa2c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -449,20 +449,21 @@ dependencies = [ [[package]] name = "dirs" -version = "3.0.2" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309" +checksum = "13aea89a5c93364a98e9b37b2fa237effbb694d5cfe01c5b70941f7eb087d5e3" dependencies = [ - "dirs-sys 0.3.7", + "cfg-if 0.1.10", + "dirs-sys", ] [[package]] name = "dirs" -version = "5.0.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309" dependencies = [ - "dirs-sys 0.4.1", + "dirs-sys", ] [[package]] @@ -476,18 +477,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "dirs-sys" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" -dependencies = [ - "libc", - "option-ext", - "redox_users", - "windows-sys 0.48.0", -] - [[package]] name = "ed25519" version = "1.5.3" @@ -517,10 +506,18 @@ dependencies = [ ] [[package]] -name = "equivalent" -version = "1.0.1" +name = "err-derive" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "22deed3a8124cff5fa835713fa105621e43bbdc46690c3a6b68328a012d350d4" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", + "synstructure", +] [[package]] name = "errno" @@ -681,12 +678,6 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -[[package]] -name = "hashbrown" -version = "0.14.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" - [[package]] name = "hermit-abi" version = "0.1.19" @@ -795,17 +786,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", - "hashbrown 0.12.3", -] - -[[package]] -name = "indexmap" -version = "2.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" -dependencies = [ - "equivalent", - "hashbrown 0.14.3", + "hashbrown", ] [[package]] @@ -892,7 +873,6 @@ checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ "bitflags 2.5.0", "libc", - "redox_syscall 0.5.1", ] [[package]] @@ -1015,12 +995,6 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" -[[package]] -name = "option-ext" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" - [[package]] name = "page_size" version = "0.4.2" @@ -1033,11 +1007,11 @@ dependencies = [ [[package]] name = "partition-identity" -version = "0.3.0" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa925f9becb532d758b0014b472c576869910929cf4c3f8054b386f19ab9e21" +checksum = "ec13ba9a0eec5c10a89f6ec1b6e9e2ef7d29b810d771355abbd1c43cae003ed6" dependencies = [ - "thiserror", + "err-derive", ] [[package]] @@ -1064,7 +1038,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7" dependencies = [ "fixedbitset", - "indexmap 1.9.3", + "indexmap", ] [[package]] @@ -1075,9 +1049,9 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "pkgar" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee1b29428b2ef5504069dc72473638ed17bb38952cde3f7ac0ce064547949ea" +checksum = "e90066e07c6e14de3202a290c8efa3d48e7d04168cc7b8289c8c5b37ab9731f6" dependencies = [ "blake3 0.3.8", "clap", @@ -1091,9 +1065,9 @@ dependencies = [ [[package]] name = "pkgar-core" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e0af74b5c0a43011e56c729d87b8f7570611ce12e45ddb5c72b88e9512083" +checksum = "72f98fdae3bb27eb4fc81b1f3e695d700fc0a35b2c9108fb7bac4e1bc82c2681" dependencies = [ "bitflags 1.3.2", "blake3 0.3.8", @@ -1103,9 +1077,9 @@ dependencies = [ [[package]] name = "pkgar-keys" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a953d6903e6948b702454c0fa571e90494a9664df6fb9e28aad7b1fbf3d2ca86" +checksum = "4d26018171b350c3679001b354ffb91fe77f3bf0fa207cd044c60dd3c6fef8bf" dependencies = [ "clap", "dirs 3.0.2", @@ -1115,8 +1089,8 @@ dependencies = [ "seckey", "serde", "sodiumoxide", - "termion 1.5.6", - "toml 0.5.11", + "termion 3.0.0", + "toml", "user-error", ] @@ -1132,6 +1106,30 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check 0.9.4", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check 0.9.4", +] + [[package]] name = "proc-macro2" version = "1.0.81" @@ -1143,10 +1141,11 @@ dependencies = [ [[package]] name = "proc-mounts" -version = "0.3.0" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d652f8435d0ab70bf4f3590a6a851d59604831a458086541b95238cc51ffcf2" +checksum = "2ad7e9c8d1b8c20f16a84d61d7c4c0325a5837c1307a2491b509cd92fb4e4442" dependencies = [ + "lazy_static", "partition-identity", ] @@ -1215,12 +1214,6 @@ dependencies = [ "crossbeam-utils", ] -[[package]] -name = "redox-path" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436d45c2b6a5b159d43da708e62b25be3a4a3d5550d654b72216ade4c4bfd717" - [[package]] name = "redox_cookbook" version = "0.1.0" @@ -1232,15 +1225,15 @@ dependencies = [ "redoxer", "serde", "termion 1.5.6", - "toml 0.5.11", + "toml", "walkdir", ] [[package]] name = "redox_installer" -version = "0.2.18" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "028991941c66e07348f5d04c8600f96756395ca9961906fce9d3ed68db4a36c5" +checksum = "a69427a6b5ecba62c7899af4153392d7871b144735df74913b22f093f6d568b3" dependencies = [ "arg_parser", "failure", @@ -1254,13 +1247,13 @@ dependencies = [ "rand", "redox_liner", "redox_pkgutils", - "redox_syscall 0.5.1", + "redox_syscall 0.4.1", "redoxfs", "rust-argon2", "serde", "serde_derive", "termion 1.5.6", - "toml 0.8.12", + "toml", "uuid", ] @@ -1287,7 +1280,7 @@ dependencies = [ "clap", "hyper", "hyper-rustls", - "indexmap 1.9.3", + "indexmap", "libflate", "pbr", "petgraph", @@ -1296,7 +1289,7 @@ dependencies = [ "serde_derive", "sha3", "tar", - "toml 0.5.11", + "toml", "version-compare", ] @@ -1324,15 +1317,6 @@ dependencies = [ "bitflags 1.3.2", ] -[[package]] -name = "redox_syscall" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" -dependencies = [ - "bitflags 2.5.0", -] - [[package]] name = "redox_termios" version = "0.1.3" @@ -1352,24 +1336,24 @@ dependencies = [ [[package]] name = "redoxer" -version = "0.2.42" +version = "0.2.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfd3777d546d0845e2d03c3ce7927ed74a048d489dafe775373855040e07fef5" +checksum = "dc3efc0796606b9a513cba68b3b9cb93ccf2a34ccfc662f7f4395769e844e484" dependencies = [ - "dirs 5.0.1", + "dirs 2.0.2", "proc-mounts", "redox_installer", - "redox_syscall 0.5.1", + "redox_syscall 0.2.16", "redoxfs", "tempfile", - "toml 0.8.12", + "toml", ] [[package]] name = "redoxfs" -version = "0.6.3" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fd4a89861ecb0c40d804dd1b686a86896a7ba162ef5cb484ed68e5c5b0837d" +checksum = "ab8570858b6b17849dce23eab63f7e659bb274c933da061b85e60010e53a3df7" dependencies = [ "aes", "argon2", @@ -1378,14 +1362,12 @@ dependencies = [ "fuser", "getrandom 0.2.14", "libc", - "libredox 0.1.3", "log 0.4.21", "range-tree", - "redox-path", "redox_simple_endian", - "redox_syscall 0.5.1", + "redox_syscall 0.4.1", "seahash", - "termion 2.0.3", + "termion 1.5.6", "time", "uuid", ] @@ -1482,6 +1464,12 @@ dependencies = [ "webpki", ] +[[package]] +name = "rustversion" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47" + [[package]] name = "safemem" version = "0.3.3" @@ -1525,31 +1513,22 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.198" +version = "1.0.115" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc" +checksum = "e54c9a88f2da7238af84b5101443f0c0d0a3bbdc455e34a5c9497b1903ed55d5" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.198" +version = "1.0.115" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9" +checksum = "609feed1d0a73cc36a0182a840a9b37b4a82f0b1150369f0536a9e3f2a31dc48" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", -] - -[[package]] -name = "serde_spanned" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" -dependencies = [ - "serde", + "syn 1.0.109", ] [[package]] @@ -1698,6 +1677,18 @@ dependencies = [ "redox_termios", ] +[[package]] +name = "termion" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "417813675a504dfbbf21bfde32c03e5bf9f2413999962b479023c02848c1c7a5" +dependencies = [ + "libc", + "libredox 0.0.2", + "numtoa", + "redox_termios", +] + [[package]] name = "textwrap" version = "0.11.0" @@ -1762,40 +1753,6 @@ dependencies = [ "serde", ] -[[package]] -name = "toml" -version = "0.8.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit", -] - -[[package]] -name = "toml_datetime" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_edit" -version = "0.22.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" -dependencies = [ - "indexmap 2.2.6", - "serde", - "serde_spanned", - "toml_datetime", - "winnow", -] - [[package]] name = "traitobject" version = "0.1.0" @@ -2100,15 +2057,6 @@ dependencies = [ "windows-targets 0.42.2", ] -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - [[package]] name = "windows-sys" version = "0.52.0" @@ -2133,21 +2081,6 @@ dependencies = [ "windows_x86_64_msvc 0.42.2", ] -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - [[package]] name = "windows-targets" version = "0.52.5" @@ -2170,12 +2103,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.52.5" @@ -2188,12 +2115,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - [[package]] name = "windows_aarch64_msvc" version = "0.52.5" @@ -2206,12 +2127,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - [[package]] name = "windows_i686_gnu" version = "0.52.5" @@ -2230,12 +2145,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - [[package]] name = "windows_i686_msvc" version = "0.52.5" @@ -2248,12 +2157,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - [[package]] name = "windows_x86_64_gnu" version = "0.52.5" @@ -2266,12 +2169,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.5" @@ -2284,27 +2181,12 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - [[package]] name = "windows_x86_64_msvc" version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" -[[package]] -name = "winnow" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0c976aaaa0e1f90dbb21e9587cdaf1d9679a1cde8875c0d6bd83ab96a208352" -dependencies = [ - "memchr", -] - [[package]] name = "xattr" version = "1.3.1" From 6ee7b3f47f63dec5325cfee13279ec5a821d2931 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 19 Apr 2024 13:37:42 -0600 Subject: [PATCH 1708/3180] Update dependencies --- Cargo.lock | 200 ++++++++++++++++++++++++++++++++++------------------- Cargo.toml | 2 +- 2 files changed, 129 insertions(+), 73 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ce0faa2c..89dacb4a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -447,23 +447,22 @@ dependencies = [ "subtle", ] -[[package]] -name = "dirs" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13aea89a5c93364a98e9b37b2fa237effbb694d5cfe01c5b70941f7eb087d5e3" -dependencies = [ - "cfg-if 0.1.10", - "dirs-sys", -] - [[package]] name = "dirs" version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309" dependencies = [ - "dirs-sys", + "dirs-sys 0.3.7", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys 0.4.1", ] [[package]] @@ -477,6 +476,18 @@ dependencies = [ "winapi", ] +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + [[package]] name = "ed25519" version = "1.5.3" @@ -505,20 +516,6 @@ dependencies = [ "termcolor", ] -[[package]] -name = "err-derive" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22deed3a8124cff5fa835713fa105621e43bbdc46690c3a6b68328a012d350d4" -dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", - "rustversion", - "syn 1.0.109", - "synstructure", -] - [[package]] name = "errno" version = "0.3.8" @@ -873,6 +870,7 @@ checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ "bitflags 2.5.0", "libc", + "redox_syscall 0.5.1", ] [[package]] @@ -995,6 +993,12 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + [[package]] name = "page_size" version = "0.4.2" @@ -1007,11 +1011,11 @@ dependencies = [ [[package]] name = "partition-identity" -version = "0.2.8" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec13ba9a0eec5c10a89f6ec1b6e9e2ef7d29b810d771355abbd1c43cae003ed6" +checksum = "9fa925f9becb532d758b0014b472c576869910929cf4c3f8054b386f19ab9e21" dependencies = [ - "err-derive", + "thiserror", ] [[package]] @@ -1106,30 +1110,6 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check 0.9.4", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check 0.9.4", -] - [[package]] name = "proc-macro2" version = "1.0.81" @@ -1141,11 +1121,10 @@ dependencies = [ [[package]] name = "proc-mounts" -version = "0.2.4" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ad7e9c8d1b8c20f16a84d61d7c4c0325a5837c1307a2491b509cd92fb4e4442" +checksum = "0d652f8435d0ab70bf4f3590a6a851d59604831a458086541b95238cc51ffcf2" dependencies = [ - "lazy_static", "partition-identity", ] @@ -1214,6 +1193,12 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "redox-path" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436d45c2b6a5b159d43da708e62b25be3a4a3d5550d654b72216ade4c4bfd717" + [[package]] name = "redox_cookbook" version = "0.1.0" @@ -1231,9 +1216,9 @@ dependencies = [ [[package]] name = "redox_installer" -version = "0.2.15" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69427a6b5ecba62c7899af4153392d7871b144735df74913b22f093f6d568b3" +checksum = "0efb5711c1bfc53b6201632dd298434c61dc815ae943be8e88f63dd80618118f" dependencies = [ "arg_parser", "failure", @@ -1247,7 +1232,7 @@ dependencies = [ "rand", "redox_liner", "redox_pkgutils", - "redox_syscall 0.4.1", + "redox_syscall 0.5.1", "redoxfs", "rust-argon2", "serde", @@ -1317,6 +1302,15 @@ dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "redox_syscall" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" +dependencies = [ + "bitflags 2.5.0", +] + [[package]] name = "redox_termios" version = "0.1.3" @@ -1336,14 +1330,14 @@ dependencies = [ [[package]] name = "redoxer" -version = "0.2.28" +version = "0.2.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc3efc0796606b9a513cba68b3b9cb93ccf2a34ccfc662f7f4395769e844e484" +checksum = "3e6ddabc210616226d8a45599bca0a6e05e3cb5aeaa1385ce5e769ac94c77e31" dependencies = [ - "dirs 2.0.2", + "dirs 5.0.1", "proc-mounts", "redox_installer", - "redox_syscall 0.2.16", + "redox_syscall 0.5.1", "redoxfs", "tempfile", "toml", @@ -1351,9 +1345,9 @@ dependencies = [ [[package]] name = "redoxfs" -version = "0.5.13" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab8570858b6b17849dce23eab63f7e659bb274c933da061b85e60010e53a3df7" +checksum = "53fd4a89861ecb0c40d804dd1b686a86896a7ba162ef5cb484ed68e5c5b0837d" dependencies = [ "aes", "argon2", @@ -1362,12 +1356,14 @@ dependencies = [ "fuser", "getrandom 0.2.14", "libc", + "libredox 0.1.3", "log 0.4.21", "range-tree", + "redox-path", "redox_simple_endian", - "redox_syscall 0.4.1", + "redox_syscall 0.5.1", "seahash", - "termion 1.5.6", + "termion 2.0.3", "time", "uuid", ] @@ -1464,12 +1460,6 @@ dependencies = [ "webpki", ] -[[package]] -name = "rustversion" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47" - [[package]] name = "safemem" version = "0.3.3" @@ -2057,6 +2047,15 @@ dependencies = [ "windows-targets 0.42.2", ] +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + [[package]] name = "windows-sys" version = "0.52.0" @@ -2081,6 +2080,21 @@ dependencies = [ "windows_x86_64_msvc 0.42.2", ] +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + [[package]] name = "windows-targets" version = "0.52.5" @@ -2103,6 +2117,12 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + [[package]] name = "windows_aarch64_gnullvm" version = "0.52.5" @@ -2115,6 +2135,12 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + [[package]] name = "windows_aarch64_msvc" version = "0.52.5" @@ -2127,6 +2153,12 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + [[package]] name = "windows_i686_gnu" version = "0.52.5" @@ -2145,6 +2177,12 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + [[package]] name = "windows_i686_msvc" version = "0.52.5" @@ -2157,6 +2195,12 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + [[package]] name = "windows_x86_64_gnu" version = "0.52.5" @@ -2169,6 +2213,12 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + [[package]] name = "windows_x86_64_gnullvm" version = "0.52.5" @@ -2181,6 +2231,12 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + [[package]] name = "windows_x86_64_msvc" version = "0.52.5" diff --git a/Cargo.toml b/Cargo.toml index 1ed0450d..17eeb805 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,7 +25,7 @@ pbr = "1.0.2" pkgar = "0.1.7" pkgar-keys = "0.1.0" redoxer = "0.2" -serde = { version = "1.0.110", features = ["derive"] } +serde = { version = "=1.0.115", features = ["derive"] } termion = "1.5.5" toml = "0.5.6" walkdir = "2.3.1" From b7b2b9b98ea92107aa8be26aa5f009dc72aba143 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 20 Apr 2024 02:47:19 +0000 Subject: [PATCH 1709/3180] Add a recipe --- recipes/wip/dev/bite/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/wip/dev/bite/recipe.toml diff --git a/recipes/wip/dev/bite/recipe.toml b/recipes/wip/dev/bite/recipe.toml new file mode 100644 index 00000000..8d35e8aa --- /dev/null +++ b/recipes/wip/dev/bite/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/WINSDK/bite" +[build] +template = "cargo" From 525e4d5b3dc728afc842aef9c7b11570225e3d37 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 20 Apr 2024 18:43:45 +0000 Subject: [PATCH 1710/3180] Add recipes --- recipes/wip/dev/cargo-compete/recipe.toml | 5 +++++ recipes/wip/dev/probe-rs/recipe.toml | 11 +++++++++++ recipes/wip/graphics/simp/recipe.toml | 11 +++++++++++ recipes/wip/net/rustdesk-server/recipe.toml | 5 +++++ recipes/wip/security/sss-cli/recipe.toml | 5 +++++ 5 files changed, 37 insertions(+) create mode 100644 recipes/wip/dev/cargo-compete/recipe.toml create mode 100644 recipes/wip/dev/probe-rs/recipe.toml create mode 100644 recipes/wip/graphics/simp/recipe.toml create mode 100644 recipes/wip/net/rustdesk-server/recipe.toml create mode 100644 recipes/wip/security/sss-cli/recipe.toml diff --git a/recipes/wip/dev/cargo-compete/recipe.toml b/recipes/wip/dev/cargo-compete/recipe.toml new file mode 100644 index 00000000..8f8563fa --- /dev/null +++ b/recipes/wip/dev/cargo-compete/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/qryxip/cargo-compete" +[build] +template = "cargo" diff --git a/recipes/wip/dev/probe-rs/recipe.toml b/recipes/wip/dev/probe-rs/recipe.toml new file mode 100644 index 00000000..9afdaeee --- /dev/null +++ b/recipes/wip/dev/probe-rs/recipe.toml @@ -0,0 +1,11 @@ +#TODO maybe missing dependencies +[source] +git = "https://github.com/probe-rs/probe-rs" +[build] +template = "custom" +dependencies = [ + "libudev", +] +script = """ +cookbook_cargo --features cli +""" diff --git a/recipes/wip/graphics/simp/recipe.toml b/recipes/wip/graphics/simp/recipe.toml new file mode 100644 index 00000000..8f7b19e8 --- /dev/null +++ b/recipes/wip/graphics/simp/recipe.toml @@ -0,0 +1,11 @@ +#TODO missing dependencies, see https://github.com/Kl4rry/simp#system-dependencies +[source] +git = "https://github.com/Kl4rry/simp" +rev = "195b2ef334e4c72ba8f44ee8af9f5cc0c259cc52" +[build] +template = "cargo" +dependencies = [ + "gtk3", + "openssl1", + "libxkbcommon", +] diff --git a/recipes/wip/net/rustdesk-server/recipe.toml b/recipes/wip/net/rustdesk-server/recipe.toml new file mode 100644 index 00000000..fe3eb469 --- /dev/null +++ b/recipes/wip/net/rustdesk-server/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/rustdesk/rustdesk-server" +[build] +template = "cargo" diff --git a/recipes/wip/security/sss-cli/recipe.toml b/recipes/wip/security/sss-cli/recipe.toml new file mode 100644 index 00000000..dbd8cfed --- /dev/null +++ b/recipes/wip/security/sss-cli/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/dsprenkels/sss-cli" +[build] +template = "cargo" From 4c683c6c12d63a8369e82911b0c35e302018a527 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 20 Apr 2024 23:31:46 +0000 Subject: [PATCH 1711/3180] Add recipes --- recipes/wip/demos/fractal-rs/recipe.toml | 8 ++++++++ recipes/wip/dev/cargo-equip/recipe.toml | 5 +++++ recipes/wip/dev/quicktest/recipe.toml | 6 ++++++ recipes/wip/finance/btc-vanity/recipe.toml | 5 +++++ recipes/wip/graphics/kantig/recipe.toml | 5 +++++ recipes/wip/security/veldora/recipe.toml | 5 +++++ recipes/wip/tools/lucid/recipe.toml | 5 +++++ recipes/wip/tools/rfetch/recipe.toml | 5 +++++ 8 files changed, 44 insertions(+) create mode 100644 recipes/wip/demos/fractal-rs/recipe.toml create mode 100644 recipes/wip/dev/cargo-equip/recipe.toml create mode 100644 recipes/wip/dev/quicktest/recipe.toml create mode 100644 recipes/wip/finance/btc-vanity/recipe.toml create mode 100644 recipes/wip/graphics/kantig/recipe.toml create mode 100644 recipes/wip/security/veldora/recipe.toml create mode 100644 recipes/wip/tools/lucid/recipe.toml create mode 100644 recipes/wip/tools/rfetch/recipe.toml diff --git a/recipes/wip/demos/fractal-rs/recipe.toml b/recipes/wip/demos/fractal-rs/recipe.toml new file mode 100644 index 00000000..2032d1bd --- /dev/null +++ b/recipes/wip/demos/fractal-rs/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/aetherknight/fractal-rs" +[build] +template = "custom" +script = """ +cookbook_cargo_packages fractal-piston +""" diff --git a/recipes/wip/dev/cargo-equip/recipe.toml b/recipes/wip/dev/cargo-equip/recipe.toml new file mode 100644 index 00000000..de7655a6 --- /dev/null +++ b/recipes/wip/dev/cargo-equip/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/qryxip/cargo-equip" +[build] +template = "cargo" diff --git a/recipes/wip/dev/quicktest/recipe.toml b/recipes/wip/dev/quicktest/recipe.toml new file mode 100644 index 00000000..24cbc2d5 --- /dev/null +++ b/recipes/wip/dev/quicktest/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/LuchoBazz/quicktest" +rev = "f4d32f87d350a725b47d5bc92756e7be208cd466" +[build] +template = "cargo" diff --git a/recipes/wip/finance/btc-vanity/recipe.toml b/recipes/wip/finance/btc-vanity/recipe.toml new file mode 100644 index 00000000..d9855593 --- /dev/null +++ b/recipes/wip/finance/btc-vanity/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Emivvvvv/btc-vanity" +[build] +template = "cargo" diff --git a/recipes/wip/graphics/kantig/recipe.toml b/recipes/wip/graphics/kantig/recipe.toml new file mode 100644 index 00000000..4814f097 --- /dev/null +++ b/recipes/wip/graphics/kantig/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/DenSASoftware/kantig" +[build] +template = "cargo" diff --git a/recipes/wip/security/veldora/recipe.toml b/recipes/wip/security/veldora/recipe.toml new file mode 100644 index 00000000..6c81e6af --- /dev/null +++ b/recipes/wip/security/veldora/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/tamton-aquib/veldora" +[build] +template = "cargo" diff --git a/recipes/wip/tools/lucid/recipe.toml b/recipes/wip/tools/lucid/recipe.toml new file mode 100644 index 00000000..9a75dbe7 --- /dev/null +++ b/recipes/wip/tools/lucid/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/sharkdp/lucid" +[build] +template = "cargo" diff --git a/recipes/wip/tools/rfetch/recipe.toml b/recipes/wip/tools/rfetch/recipe.toml new file mode 100644 index 00000000..0b2ddf21 --- /dev/null +++ b/recipes/wip/tools/rfetch/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/kamui-fin/rfetch" +[build] +template = "cargo" From 0b2007e054436c3f4995093b65788e425badd7d4 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 20 Apr 2024 23:32:18 +0000 Subject: [PATCH 1712/3180] update the simp recipe --- recipes/wip/graphics/simp/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/wip/graphics/simp/recipe.toml b/recipes/wip/graphics/simp/recipe.toml index 8f7b19e8..bfaceec1 100644 --- a/recipes/wip/graphics/simp/recipe.toml +++ b/recipes/wip/graphics/simp/recipe.toml @@ -5,7 +5,6 @@ rev = "195b2ef334e4c72ba8f44ee8af9f5cc0c259cc52" [build] template = "cargo" dependencies = [ - "gtk3", "openssl1", "libxkbcommon", ] From d19dc7f02e247a1ce5f793df3938b68d196f7557 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 21 Apr 2024 09:27:11 +0000 Subject: [PATCH 1713/3180] Add a recipe --- recipes/wip/net/hinoki/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/wip/net/hinoki/recipe.toml diff --git a/recipes/wip/net/hinoki/recipe.toml b/recipes/wip/net/hinoki/recipe.toml new file mode 100644 index 00000000..c64c258c --- /dev/null +++ b/recipes/wip/net/hinoki/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/jplatte/hinoki" +[build] +template = "cargo" From f74f642705229ca63188532461f784c2bea4c88a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 21 Apr 2024 14:17:17 +0000 Subject: [PATCH 1714/3180] Add recipes --- recipes/wip/demos/ferris-says/recipe.toml | 5 +++++ recipes/wip/dev/cargo-outofdate/recipe.toml | 5 +++++ recipes/wip/dev/jaq/recipe.toml | 8 ++++++++ recipes/wip/games/bevy-combat/recipe.toml | 5 +++++ recipes/wip/graphics/jxl-oxide/recipe.toml | 8 ++++++++ recipes/wip/net/turn-rs/recipe.toml | 8 ++++++++ recipes/wip/tools/crunchy-cli/recipe.toml | 6 ++++++ recipes/wip/tools/epub2txt/recipe.toml | 5 +++++ recipes/wip/tools/snappy-rs/recipe.toml | 8 ++++++++ recipes/wip/tools/unzrip/recipe.toml | 5 +++++ 10 files changed, 63 insertions(+) create mode 100644 recipes/wip/demos/ferris-says/recipe.toml create mode 100644 recipes/wip/dev/cargo-outofdate/recipe.toml create mode 100644 recipes/wip/dev/jaq/recipe.toml create mode 100644 recipes/wip/games/bevy-combat/recipe.toml create mode 100644 recipes/wip/graphics/jxl-oxide/recipe.toml create mode 100644 recipes/wip/net/turn-rs/recipe.toml create mode 100644 recipes/wip/tools/crunchy-cli/recipe.toml create mode 100644 recipes/wip/tools/epub2txt/recipe.toml create mode 100644 recipes/wip/tools/snappy-rs/recipe.toml create mode 100644 recipes/wip/tools/unzrip/recipe.toml diff --git a/recipes/wip/demos/ferris-says/recipe.toml b/recipes/wip/demos/ferris-says/recipe.toml new file mode 100644 index 00000000..f42b0fcc --- /dev/null +++ b/recipes/wip/demos/ferris-says/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/rust-lang/ferris-says" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-outofdate/recipe.toml b/recipes/wip/dev/cargo-outofdate/recipe.toml new file mode 100644 index 00000000..27864de3 --- /dev/null +++ b/recipes/wip/dev/cargo-outofdate/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/quininer/cargo-outofdate" +[build] +template = "cargo" diff --git a/recipes/wip/dev/jaq/recipe.toml b/recipes/wip/dev/jaq/recipe.toml new file mode 100644 index 00000000..c78159a2 --- /dev/null +++ b/recipes/wip/dev/jaq/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/01mf02/jaq" +[build] +template = "custom" +script = """ +cookbook_cargo_packages jaq +""" diff --git a/recipes/wip/games/bevy-combat/recipe.toml b/recipes/wip/games/bevy-combat/recipe.toml new file mode 100644 index 00000000..8a6afa27 --- /dev/null +++ b/recipes/wip/games/bevy-combat/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ElliotB256/bevy_combat" +[build] +template = "cargo" diff --git a/recipes/wip/graphics/jxl-oxide/recipe.toml b/recipes/wip/graphics/jxl-oxide/recipe.toml new file mode 100644 index 00000000..d025db41 --- /dev/null +++ b/recipes/wip/graphics/jxl-oxide/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/tirr-c/jxl-oxide" +[build] +template = "custom" +script = """ +cookbook_cargo_packages jxl-oxide-cli +""" diff --git a/recipes/wip/net/turn-rs/recipe.toml b/recipes/wip/net/turn-rs/recipe.toml new file mode 100644 index 00000000..8cc52065 --- /dev/null +++ b/recipes/wip/net/turn-rs/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/mycrl/turn-rs" +[build] +template = "custom" +script = """ +cookbook_cargo_packages cli turn-server +""" diff --git a/recipes/wip/tools/crunchy-cli/recipe.toml b/recipes/wip/tools/crunchy-cli/recipe.toml new file mode 100644 index 00000000..e866bbd9 --- /dev/null +++ b/recipes/wip/tools/crunchy-cli/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/crunchy-labs/crunchy-cli" +rev = "8fff807ae68b61931aa8b1c899b8c8bba4df0784" +[build] +template = "cargo" diff --git a/recipes/wip/tools/epub2txt/recipe.toml b/recipes/wip/tools/epub2txt/recipe.toml new file mode 100644 index 00000000..cbe24729 --- /dev/null +++ b/recipes/wip/tools/epub2txt/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/quininer/epub2txt" +[build] +template = "cargo" diff --git a/recipes/wip/tools/snappy-rs/recipe.toml b/recipes/wip/tools/snappy-rs/recipe.toml new file mode 100644 index 00000000..63e390a5 --- /dev/null +++ b/recipes/wip/tools/snappy-rs/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/BurntSushi/rust-snappy" +[build] +template = "custom" +script = """ +cookbook_cargo_packages szip +""" diff --git a/recipes/wip/tools/unzrip/recipe.toml b/recipes/wip/tools/unzrip/recipe.toml new file mode 100644 index 00000000..c90407d8 --- /dev/null +++ b/recipes/wip/tools/unzrip/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/quininer/unzrip" +[build] +template = "cargo" From 7ee1fa9a962aadd2bde1ffe9efdd66eeaf999585 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 21 Apr 2024 14:48:35 +0000 Subject: [PATCH 1715/3180] Add recipes --- recipes/wip/games/leafish/recipe.toml | 9 +++++++++ recipes/wip/tools/rusync/recipe.toml | 5 +++++ recipes/wip/tools/skyspell/recipe.toml | 12 ++++++++++++ 3 files changed, 26 insertions(+) create mode 100644 recipes/wip/games/leafish/recipe.toml create mode 100644 recipes/wip/tools/rusync/recipe.toml create mode 100644 recipes/wip/tools/skyspell/recipe.toml diff --git a/recipes/wip/games/leafish/recipe.toml b/recipes/wip/games/leafish/recipe.toml new file mode 100644 index 00000000..ff29d95e --- /dev/null +++ b/recipes/wip/games/leafish/recipe.toml @@ -0,0 +1,9 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Lea-fish/Leafish" +[build] +template = "cargo" +dependencies = [ + "gtk3", + "openssl1", +] diff --git a/recipes/wip/tools/rusync/recipe.toml b/recipes/wip/tools/rusync/recipe.toml new file mode 100644 index 00000000..21258e5b --- /dev/null +++ b/recipes/wip/tools/rusync/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/your-tools/rusync" +[build] +template = "cargo" diff --git a/recipes/wip/tools/skyspell/recipe.toml b/recipes/wip/tools/skyspell/recipe.toml new file mode 100644 index 00000000..2a8c80c9 --- /dev/null +++ b/recipes/wip/tools/skyspell/recipe.toml @@ -0,0 +1,12 @@ +#TODO missing an enchant backend and dictionary, see https://github.com/your-tools/skyspell#installation +[source] +git = "https://github.com/your-tools/skyspell" +[build] +template = "custom" +dependencies = [ + "sqlite3", + "enchant", +] +script = """ +cookbook_cargo_packages skyspell +""" From 6e5201b9c51e37d6d855c0c1fff7e7e9a2bd57bc Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 22 Apr 2024 08:59:07 +0000 Subject: [PATCH 1716/3180] Add recipes --- recipes/wip/dev/clippy/recipe.toml | 5 +++++ recipes/wip/dev/crater/recipe.toml | 5 +++++ recipes/wip/dev/rust-analyzer/recipe.toml | 5 +++++ recipes/wip/dev/rustfmt/recipe.toml | 5 +++++ recipes/wip/dev/rustup/recipe.toml | 5 +++++ recipes/wip/tools/lines-rs/recipe.toml | 5 +++++ 6 files changed, 30 insertions(+) create mode 100644 recipes/wip/dev/clippy/recipe.toml create mode 100644 recipes/wip/dev/crater/recipe.toml create mode 100644 recipes/wip/dev/rust-analyzer/recipe.toml create mode 100644 recipes/wip/dev/rustfmt/recipe.toml create mode 100644 recipes/wip/dev/rustup/recipe.toml create mode 100644 recipes/wip/tools/lines-rs/recipe.toml diff --git a/recipes/wip/dev/clippy/recipe.toml b/recipes/wip/dev/clippy/recipe.toml new file mode 100644 index 00000000..db81cc48 --- /dev/null +++ b/recipes/wip/dev/clippy/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/rust-lang/rust-clippy" +[build] +template = "cargo" diff --git a/recipes/wip/dev/crater/recipe.toml b/recipes/wip/dev/crater/recipe.toml new file mode 100644 index 00000000..36433fe7 --- /dev/null +++ b/recipes/wip/dev/crater/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/rust-lang/crater" +[build] +template = "cargo" diff --git a/recipes/wip/dev/rust-analyzer/recipe.toml b/recipes/wip/dev/rust-analyzer/recipe.toml new file mode 100644 index 00000000..d74f1c31 --- /dev/null +++ b/recipes/wip/dev/rust-analyzer/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/rust-lang/rust-analyzer" +[build] +template = "cargo" diff --git a/recipes/wip/dev/rustfmt/recipe.toml b/recipes/wip/dev/rustfmt/recipe.toml new file mode 100644 index 00000000..7bac4a36 --- /dev/null +++ b/recipes/wip/dev/rustfmt/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/rust-lang/rustfmt" +[build] +template = "cargo" diff --git a/recipes/wip/dev/rustup/recipe.toml b/recipes/wip/dev/rustup/recipe.toml new file mode 100644 index 00000000..33463a87 --- /dev/null +++ b/recipes/wip/dev/rustup/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/rust-lang/rustup" +[build] +template = "cargo" diff --git a/recipes/wip/tools/lines-rs/recipe.toml b/recipes/wip/tools/lines-rs/recipe.toml new file mode 100644 index 00000000..b14c5cd6 --- /dev/null +++ b/recipes/wip/tools/lines-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ryanfowler/lines" +[build] +template = "cargo" From 4aaa7fd65feabedded3cb8aef2c6cc41fe2bc596 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 22 Apr 2024 09:06:03 +0000 Subject: [PATCH 1717/3180] Add a recipe --- recipes/wip/dev/jq/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/wip/dev/jq/recipe.toml diff --git a/recipes/wip/dev/jq/recipe.toml b/recipes/wip/dev/jq/recipe.toml new file mode 100644 index 00000000..72364e72 --- /dev/null +++ b/recipes/wip/dev/jq/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-1.7.1.tar.gz" +[build] +template = "configure" From 2deb578e6cb66ec33b521a6aee70e150049fa7d5 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 22 Apr 2024 09:10:55 +0000 Subject: [PATCH 1718/3180] update the simp recipe --- recipes/wip/graphics/simp/recipe.toml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/recipes/wip/graphics/simp/recipe.toml b/recipes/wip/graphics/simp/recipe.toml index bfaceec1..2fb2e960 100644 --- a/recipes/wip/graphics/simp/recipe.toml +++ b/recipes/wip/graphics/simp/recipe.toml @@ -4,7 +4,3 @@ git = "https://github.com/Kl4rry/simp" rev = "195b2ef334e4c72ba8f44ee8af9f5cc0c259cc52" [build] template = "cargo" -dependencies = [ - "openssl1", - "libxkbcommon", -] From 9fd50c85c36a4ab57c7a4c02bfd08a20314ed1f1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 22 Apr 2024 09:12:16 +0000 Subject: [PATCH 1719/3180] rename a recipe --- recipes/wip/dev/{godot-engine4 => godot4}/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/dev/{godot-engine4 => godot4}/recipe.toml (100%) diff --git a/recipes/wip/dev/godot-engine4/recipe.toml b/recipes/wip/dev/godot4/recipe.toml similarity index 100% rename from recipes/wip/dev/godot-engine4/recipe.toml rename to recipes/wip/dev/godot4/recipe.toml From 1bf1849458f7efd7b13b172d2ffce4608c01452d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 22 Apr 2024 09:32:17 +0000 Subject: [PATCH 1720/3180] add a recipe --- recipes/wip/dev/piccolo/recipe.toml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 recipes/wip/dev/piccolo/recipe.toml diff --git a/recipes/wip/dev/piccolo/recipe.toml b/recipes/wip/dev/piccolo/recipe.toml new file mode 100644 index 00000000..e12ae622 --- /dev/null +++ b/recipes/wip/dev/piccolo/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/kyren/piccolo" +[build] +template = "custom" +script = """ +cookbook_cargo_examples interpreter +""" From cd7504a20518f69c997a9e9fa1651870e2a46368 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 22 Apr 2024 10:45:30 +0000 Subject: [PATCH 1721/3180] add recipes --- recipes/wip/dev/cargo-c/recipe.toml | 5 +++++ recipes/wip/dev/py-spy/recipe.toml | 5 +++++ recipes/wip/dev/pyapp/recipe.toml | 5 +++++ recipes/wip/dev/pylyzer/recipe.toml | 5 +++++ recipes/wip/dev/pyscan/recipe.toml | 5 +++++ recipes/wip/dev/python-launcher/recipe.toml | 5 +++++ recipes/wip/graphics/dssim/recipe.toml | 5 +++++ recipes/wip/security/weggli/recipe.toml | 5 +++++ 8 files changed, 40 insertions(+) create mode 100644 recipes/wip/dev/cargo-c/recipe.toml create mode 100644 recipes/wip/dev/py-spy/recipe.toml create mode 100644 recipes/wip/dev/pyapp/recipe.toml create mode 100644 recipes/wip/dev/pylyzer/recipe.toml create mode 100644 recipes/wip/dev/pyscan/recipe.toml create mode 100644 recipes/wip/dev/python-launcher/recipe.toml create mode 100644 recipes/wip/graphics/dssim/recipe.toml create mode 100644 recipes/wip/security/weggli/recipe.toml diff --git a/recipes/wip/dev/cargo-c/recipe.toml b/recipes/wip/dev/cargo-c/recipe.toml new file mode 100644 index 00000000..67263532 --- /dev/null +++ b/recipes/wip/dev/cargo-c/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/lu-zero/cargo-c" +[build] +template = "cargo" diff --git a/recipes/wip/dev/py-spy/recipe.toml b/recipes/wip/dev/py-spy/recipe.toml new file mode 100644 index 00000000..3e07e5b5 --- /dev/null +++ b/recipes/wip/dev/py-spy/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/benfred/py-spy" +[build] +template = "cargo" diff --git a/recipes/wip/dev/pyapp/recipe.toml b/recipes/wip/dev/pyapp/recipe.toml new file mode 100644 index 00000000..48178700 --- /dev/null +++ b/recipes/wip/dev/pyapp/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ofek/pyapp" +[build] +template = "cargo" diff --git a/recipes/wip/dev/pylyzer/recipe.toml b/recipes/wip/dev/pylyzer/recipe.toml new file mode 100644 index 00000000..bef4e30f --- /dev/null +++ b/recipes/wip/dev/pylyzer/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/mtshiba/pylyzer" +[build] +template = "cargo" diff --git a/recipes/wip/dev/pyscan/recipe.toml b/recipes/wip/dev/pyscan/recipe.toml new file mode 100644 index 00000000..81303e52 --- /dev/null +++ b/recipes/wip/dev/pyscan/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/aswinnnn/pyscan" +[build] +template = "cargo" diff --git a/recipes/wip/dev/python-launcher/recipe.toml b/recipes/wip/dev/python-launcher/recipe.toml new file mode 100644 index 00000000..046d65c6 --- /dev/null +++ b/recipes/wip/dev/python-launcher/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/brettcannon/python-launcher" +[build] +template = "cargo" diff --git a/recipes/wip/graphics/dssim/recipe.toml b/recipes/wip/graphics/dssim/recipe.toml new file mode 100644 index 00000000..af5795f2 --- /dev/null +++ b/recipes/wip/graphics/dssim/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/kornelski/dssim" +[build] +template = "cargo" diff --git a/recipes/wip/security/weggli/recipe.toml b/recipes/wip/security/weggli/recipe.toml new file mode 100644 index 00000000..621a9930 --- /dev/null +++ b/recipes/wip/security/weggli/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/weggli-rs/weggli" +[build] +template = "cargo" From d433823c9c6d73538422ac4307628002598f6d7a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 22 Apr 2024 15:29:45 -0600 Subject: [PATCH 1722/3180] Update pkgar --- Cargo.lock | 132 +++++++++++++++++++++++++++++++++++++++++------------ Cargo.toml | 4 +- pkgar | 2 +- 3 files changed, 106 insertions(+), 32 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 89dacb4a..c7f74687 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -268,9 +268,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cc" -version = "1.0.94" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17f6e324229dc011159fcc089755d1e2e216a90d43a7dea6853ca740b84f35e7" +checksum = "d32a725bc159af97c3e629873bb9f88fb8cf8a4867175f76dc987815ea07c83b" [[package]] name = "cfg-if" @@ -516,6 +516,12 @@ dependencies = [ "termcolor", ] +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + [[package]] name = "errno" version = "0.3.8" @@ -675,6 +681,12 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +[[package]] +name = "hashbrown" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" + [[package]] name = "hermit-abi" version = "0.1.19" @@ -783,7 +795,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", - "hashbrown", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +dependencies = [ + "equivalent", + "hashbrown 0.14.3", ] [[package]] @@ -1042,7 +1064,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7" dependencies = [ "fixedbitset", - "indexmap", + "indexmap 1.9.3", ] [[package]] @@ -1053,9 +1075,9 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "pkgar" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e90066e07c6e14de3202a290c8efa3d48e7d04168cc7b8289c8c5b37ab9731f6" +checksum = "7db73ac12bcc6ef86766a0aa1300cc673f2d834b0b7ed812364a3aa78f472c2d" dependencies = [ "blake3 0.3.8", "clap", @@ -1069,9 +1091,9 @@ dependencies = [ [[package]] name = "pkgar-core" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72f98fdae3bb27eb4fc81b1f3e695d700fc0a35b2c9108fb7bac4e1bc82c2681" +checksum = "02f04f9e2ed9db0dd7b21b76c4b35ebb32c01915035b6bffda1b5935485c2341" dependencies = [ "bitflags 1.3.2", "blake3 0.3.8", @@ -1081,9 +1103,9 @@ dependencies = [ [[package]] name = "pkgar-keys" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d26018171b350c3679001b354ffb91fe77f3bf0fa207cd044c60dd3c6fef8bf" +checksum = "2c9fec0d56214207b3afccec2c69ec31ecc3eebdce80045ca6df2fbcf737b69a" dependencies = [ "clap", "dirs 3.0.2", @@ -1094,7 +1116,7 @@ dependencies = [ "serde", "sodiumoxide", "termion 3.0.0", - "toml", + "toml 0.8.12", "user-error", ] @@ -1210,15 +1232,15 @@ dependencies = [ "redoxer", "serde", "termion 1.5.6", - "toml", + "toml 0.8.12", "walkdir", ] [[package]] name = "redox_installer" -version = "0.2.19" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0efb5711c1bfc53b6201632dd298434c61dc815ae943be8e88f63dd80618118f" +checksum = "d0fa6d449163b0bf648a282affbade42a51d25d7858412278d5c6c76970afef4" dependencies = [ "arg_parser", "failure", @@ -1238,7 +1260,7 @@ dependencies = [ "serde", "serde_derive", "termion 1.5.6", - "toml", + "toml 0.8.12", "uuid", ] @@ -1265,7 +1287,7 @@ dependencies = [ "clap", "hyper", "hyper-rustls", - "indexmap", + "indexmap 1.9.3", "libflate", "pbr", "petgraph", @@ -1274,7 +1296,7 @@ dependencies = [ "serde_derive", "sha3", "tar", - "toml", + "toml 0.5.11", "version-compare", ] @@ -1340,7 +1362,7 @@ dependencies = [ "redox_syscall 0.5.1", "redoxfs", "tempfile", - "toml", + "toml 0.5.11", ] [[package]] @@ -1435,9 +1457,9 @@ checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustix" -version = "0.38.32" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ "bitflags 2.5.0", "errno", @@ -1503,22 +1525,31 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.115" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e54c9a88f2da7238af84b5101443f0c0d0a3bbdc455e34a5c9497b1903ed55d5" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.115" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "609feed1d0a73cc36a0182a840a9b37b4a82f0b1150369f0536a9e3f2a31dc48" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.60", +] + +[[package]] +name = "serde_spanned" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +dependencies = [ + "serde", ] [[package]] @@ -1690,18 +1721,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.58" +version = "1.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.58" +version = "1.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66" dependencies = [ "proc-macro2", "quote", @@ -1743,6 +1774,40 @@ dependencies = [ "serde", ] +[[package]] +name = "toml" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" +dependencies = [ + "indexmap 2.2.6", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + [[package]] name = "traitobject" version = "0.1.0" @@ -2243,6 +2308,15 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +[[package]] +name = "winnow" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0c976aaaa0e1f90dbb21e9587cdaf1d9679a1cde8875c0d6bd83ab96a208352" +dependencies = [ + "memchr", +] + [[package]] name = "xattr" version = "1.3.1" diff --git a/Cargo.toml b/Cargo.toml index 17eeb805..026776f4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,7 +25,7 @@ pbr = "1.0.2" pkgar = "0.1.7" pkgar-keys = "0.1.0" redoxer = "0.2" -serde = { version = "=1.0.115", features = ["derive"] } +serde = { version = "=1.0.197", features = ["derive"] } termion = "1.5.5" -toml = "0.5.6" +toml = "0.8" walkdir = "2.3.1" diff --git a/pkgar b/pkgar index 8397098e..d27bae67 160000 --- a/pkgar +++ b/pkgar @@ -1 +1 @@ -Subproject commit 8397098ecbea980eb89e9d596d99379f52ae53ee +Subproject commit d27bae671963627d5d00aa789d1473b93b9c2998 From 78508eb198d5e063635f0fbe2ae62a78d169a572 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 26 Apr 2024 04:20:51 +0000 Subject: [PATCH 1723/3180] Update recipes --- recipes/wip/dev/rust-analyzer/recipe.toml | 5 ++++- recipes/wip/net/nginx/recipe.toml | 2 +- recipes/wip/sound/audacity/recipe.toml | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/recipes/wip/dev/rust-analyzer/recipe.toml b/recipes/wip/dev/rust-analyzer/recipe.toml index d74f1c31..4c846d59 100644 --- a/recipes/wip/dev/rust-analyzer/recipe.toml +++ b/recipes/wip/dev/rust-analyzer/recipe.toml @@ -2,4 +2,7 @@ [source] git = "https://github.com/rust-lang/rust-analyzer" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages rust-analyzer +""" diff --git a/recipes/wip/net/nginx/recipe.toml b/recipes/wip/net/nginx/recipe.toml index a3ef1c22..26da4eee 100644 --- a/recipes/wip/net/nginx/recipe.toml +++ b/recipes/wip/net/nginx/recipe.toml @@ -1,5 +1,5 @@ #TODO Compilation error [source] -tar = "https://nginx.org/download/nginx-1.24.0.tar.gz" +tar = "https://nginx.org/download/nginx-1.26.0.tar.gz" [build] template = "configure" diff --git a/recipes/wip/sound/audacity/recipe.toml b/recipes/wip/sound/audacity/recipe.toml index 399c75a0..9aaca635 100644 --- a/recipes/wip/sound/audacity/recipe.toml +++ b/recipes/wip/sound/audacity/recipe.toml @@ -2,7 +2,7 @@ #TODO use the GTK2 or wxWidgets frontend? #TODO probably need audio server patching [source] -tar = "https://github.com/audacity/audacity/releases/download/Audacity-3.4.2/audacity-sources-3.4.2.tar.gz" +tar = "https://github.com/audacity/audacity/releases/download/Audacity-3.5.1/audacity-sources-3.5.1.tar.gz" [build] template = "custom" dependencies = [ From 38df972b5b961fbff42a94103cbb134df74e370f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 28 Apr 2024 10:41:24 +0000 Subject: [PATCH 1724/3180] Update recipes --- recipes/wip/dev/clippy/recipe.toml | 2 +- recipes/wip/dev/crater/recipe.toml | 3 +++ recipes/wip/dev/rust-analyzer/recipe.toml | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/wip/dev/clippy/recipe.toml b/recipes/wip/dev/clippy/recipe.toml index db81cc48..88ba74e6 100644 --- a/recipes/wip/dev/clippy/recipe.toml +++ b/recipes/wip/dev/clippy/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO serde crate error [source] git = "https://github.com/rust-lang/rust-clippy" [build] diff --git a/recipes/wip/dev/crater/recipe.toml b/recipes/wip/dev/crater/recipe.toml index 36433fe7..f8f873a5 100644 --- a/recipes/wip/dev/crater/recipe.toml +++ b/recipes/wip/dev/crater/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/rust-lang/crater" [build] template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/dev/rust-analyzer/recipe.toml b/recipes/wip/dev/rust-analyzer/recipe.toml index 4c846d59..5c419b9c 100644 --- a/recipes/wip/dev/rust-analyzer/recipe.toml +++ b/recipes/wip/dev/rust-analyzer/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO require rustc 1.76 or newer [source] git = "https://github.com/rust-lang/rust-analyzer" [build] From ad8fb45adfc2d3f2ff2acd76cd0c3bef370d74b9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 28 Apr 2024 11:07:40 +0000 Subject: [PATCH 1725/3180] Update recipes --- recipes/wip/dev/add-determinism/recipe.toml | 2 +- recipes/wip/dev/bite/recipe.toml | 2 +- recipes/wip/dev/cargo-c/recipe.toml | 2 +- recipes/wip/dev/cargo-cache/recipe.toml | 2 +- recipes/wip/dev/cargo-compete/recipe.toml | 2 +- recipes/wip/dev/cargo-equip/recipe.toml | 3 +++ recipes/wip/dev/crater/recipe.toml | 2 +- 7 files changed, 9 insertions(+), 6 deletions(-) diff --git a/recipes/wip/dev/add-determinism/recipe.toml b/recipes/wip/dev/add-determinism/recipe.toml index 089eb038..3d645ff8 100644 --- a/recipes/wip/dev/add-determinism/recipe.toml +++ b/recipes/wip/dev/add-determinism/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO pyo3-ffi crate error [source] git = "https://github.com/keszybz/add-determinism" [build] diff --git a/recipes/wip/dev/bite/recipe.toml b/recipes/wip/dev/bite/recipe.toml index 8d35e8aa..4a3d0ddf 100644 --- a/recipes/wip/dev/bite/recipe.toml +++ b/recipes/wip/dev/bite/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO rfd crate error [source] git = "https://github.com/WINSDK/bite" [build] diff --git a/recipes/wip/dev/cargo-c/recipe.toml b/recipes/wip/dev/cargo-c/recipe.toml index 67263532..6f410ef5 100644 --- a/recipes/wip/dev/cargo-c/recipe.toml +++ b/recipes/wip/dev/cargo-c/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO require rustc 1.75 or newer [source] git = "https://github.com/lu-zero/cargo-c" [build] diff --git a/recipes/wip/dev/cargo-cache/recipe.toml b/recipes/wip/dev/cargo-cache/recipe.toml index a7c248a5..8bdb0ca0 100644 --- a/recipes/wip/dev/cargo-cache/recipe.toml +++ b/recipes/wip/dev/cargo-cache/recipe.toml @@ -1,4 +1,4 @@ -#TODO camino crate compilation error +#TODO camino crate error [source] git = "https://github.com/matthiaskrgr/cargo-cache" [build] diff --git a/recipes/wip/dev/cargo-compete/recipe.toml b/recipes/wip/dev/cargo-compete/recipe.toml index 8f8563fa..b602fb79 100644 --- a/recipes/wip/dev/cargo-compete/recipe.toml +++ b/recipes/wip/dev/cargo-compete/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO serde crate error (after cargo update) [source] git = "https://github.com/qryxip/cargo-compete" [build] diff --git a/recipes/wip/dev/cargo-equip/recipe.toml b/recipes/wip/dev/cargo-equip/recipe.toml index de7655a6..d7568ada 100644 --- a/recipes/wip/dev/cargo-equip/recipe.toml +++ b/recipes/wip/dev/cargo-equip/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/qryxip/cargo-equip" [build] template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/dev/crater/recipe.toml b/recipes/wip/dev/crater/recipe.toml index f8f873a5..88865b97 100644 --- a/recipes/wip/dev/crater/recipe.toml +++ b/recipes/wip/dev/crater/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/rust-lang/crater" [build] From c8438b2698661b559f2583ac5aa881fa10ba832b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 28 Apr 2024 11:15:03 +0000 Subject: [PATCH 1726/3180] Update recipes --- recipes/wip/dev/cargo-equip/recipe.toml | 2 +- recipes/wip/dev/cargo-goggles/recipe.toml | 2 +- recipes/wip/dev/cargo-hack/recipe.toml | 2 +- recipes/wip/dev/cargo-outofdate/recipe.toml | 3 +++ 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/recipes/wip/dev/cargo-equip/recipe.toml b/recipes/wip/dev/cargo-equip/recipe.toml index d7568ada..a0a8fc9d 100644 --- a/recipes/wip/dev/cargo-equip/recipe.toml +++ b/recipes/wip/dev/cargo-equip/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/qryxip/cargo-equip" [build] diff --git a/recipes/wip/dev/cargo-goggles/recipe.toml b/recipes/wip/dev/cargo-goggles/recipe.toml index 7e15385e..95b73e1f 100644 --- a/recipes/wip/dev/cargo-goggles/recipe.toml +++ b/recipes/wip/dev/cargo-goggles/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO serde crate error [source] git = "https://github.com/M4SS-Code/cargo-goggles" [build] diff --git a/recipes/wip/dev/cargo-hack/recipe.toml b/recipes/wip/dev/cargo-hack/recipe.toml index 616dbdb9..f609428e 100644 --- a/recipes/wip/dev/cargo-hack/recipe.toml +++ b/recipes/wip/dev/cargo-hack/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO serde crate error [source] git = "https://github.com/taiki-e/cargo-hack" [build] diff --git a/recipes/wip/dev/cargo-outofdate/recipe.toml b/recipes/wip/dev/cargo-outofdate/recipe.toml index 27864de3..18b5ab37 100644 --- a/recipes/wip/dev/cargo-outofdate/recipe.toml +++ b/recipes/wip/dev/cargo-outofdate/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/quininer/cargo-outofdate" [build] template = "cargo" +dependencies = [ + "openssl1", +] From c37f08828715614190c5a2350d7ce73882cf499c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 28 Apr 2024 11:43:06 +0000 Subject: [PATCH 1727/3180] Update TODOs --- recipes/wip/dev/cargo-outofdate/recipe.toml | 2 +- recipes/wip/dev/cargo-semver-checks/recipe.toml | 2 +- recipes/wip/dev/jaq/recipe.toml | 2 +- recipes/wip/dev/jq/recipe.toml | 2 +- recipes/wip/dev/lurk/recipe.toml | 2 +- recipes/wip/dev/piccolo/recipe.toml | 2 +- recipes/wip/dev/py-spy/recipe.toml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/recipes/wip/dev/cargo-outofdate/recipe.toml b/recipes/wip/dev/cargo-outofdate/recipe.toml index 18b5ab37..d2ab8415 100644 --- a/recipes/wip/dev/cargo-outofdate/recipe.toml +++ b/recipes/wip/dev/cargo-outofdate/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO cargo-util crate error [source] git = "https://github.com/quininer/cargo-outofdate" [build] diff --git a/recipes/wip/dev/cargo-semver-checks/recipe.toml b/recipes/wip/dev/cargo-semver-checks/recipe.toml index a8a6894a..f1b86896 100644 --- a/recipes/wip/dev/cargo-semver-checks/recipe.toml +++ b/recipes/wip/dev/cargo-semver-checks/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO serde crate error [source] git = "https://github.com/obi1kenobi/cargo-semver-checks" [build] diff --git a/recipes/wip/dev/jaq/recipe.toml b/recipes/wip/dev/jaq/recipe.toml index c78159a2..309ad16a 100644 --- a/recipes/wip/dev/jaq/recipe.toml +++ b/recipes/wip/dev/jaq/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO mimalloc error [source] git = "https://github.com/01mf02/jaq" [build] diff --git a/recipes/wip/dev/jq/recipe.toml b/recipes/wip/dev/jq/recipe.toml index 72364e72..26932f40 100644 --- a/recipes/wip/dev/jq/recipe.toml +++ b/recipes/wip/dev/jq/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO undefined reference [source] tar = "https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-1.7.1.tar.gz" [build] diff --git a/recipes/wip/dev/lurk/recipe.toml b/recipes/wip/dev/lurk/recipe.toml index 7807ab92..a94e58fe 100644 --- a/recipes/wip/dev/lurk/recipe.toml +++ b/recipes/wip/dev/lurk/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO users crate error [source] git = "https://github.com/JakWai01/lurk" [build] diff --git a/recipes/wip/dev/piccolo/recipe.toml b/recipes/wip/dev/piccolo/recipe.toml index e12ae622..af85d93c 100644 --- a/recipes/wip/dev/piccolo/recipe.toml +++ b/recipes/wip/dev/piccolo/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/kyren/piccolo" [build] diff --git a/recipes/wip/dev/py-spy/recipe.toml b/recipes/wip/dev/py-spy/recipe.toml index 3e07e5b5..369a2141 100644 --- a/recipes/wip/dev/py-spy/recipe.toml +++ b/recipes/wip/dev/py-spy/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO proc-maps crate error [source] git = "https://github.com/benfred/py-spy" [build] From 50cf623da0aa420a62b3b43fc1dcc47bba57b8c3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 28 Apr 2024 16:55:57 +0000 Subject: [PATCH 1728/3180] Add recipes --- recipes/wip/libs/libssh/recipe.toml | 9 +++++++++ recipes/wip/tools/remmina/recipe.toml | 21 +++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 recipes/wip/libs/libssh/recipe.toml create mode 100644 recipes/wip/tools/remmina/recipe.toml diff --git a/recipes/wip/libs/libssh/recipe.toml b/recipes/wip/libs/libssh/recipe.toml new file mode 100644 index 00000000..1b5594a8 --- /dev/null +++ b/recipes/wip/libs/libssh/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for CMake, see https://git.libssh.org/projects/libssh.git/tree/INSTALL#n36 +[source] +tar = "https://www.libssh.org/files/0.10/libssh-0.10.6.tar.xz" +[build] +template = "custom" +dependencies = [ + "zlib", + "openssl1", +] diff --git a/recipes/wip/tools/remmina/recipe.toml b/recipes/wip/tools/remmina/recipe.toml new file mode 100644 index 00000000..2adb757e --- /dev/null +++ b/recipes/wip/tools/remmina/recipe.toml @@ -0,0 +1,21 @@ +#TODO missing script for CMake, see https://gitlab.com/Remmina/Remmina/-/wikis/Compilation/Compilation-guide +#TODO dependencies need a cleanup (outdated and up-to-date information is mixed in the build instructions) +[source] +git = "https://gitlab.com/Remmina/Remmina" +rev = "2a455eadd6462457d08c2d066c5c245e0dee3bf9" +[build] +template = "custom" +dependencies = [ + "openssl1", + "libxml2", + "gstreamer", + "ffmpeg6", + "gtk3", + "libgcrypt", + "libssh", + "libvte", + "libjpeg", + "gnutls3", + "libsodium", + "pcre", +] From 41cb39eb4e6b3f99cd1cc4fc88a7c6bff43de977 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 29 Apr 2024 19:57:06 +0000 Subject: [PATCH 1729/3180] Update recipes --- recipes/wip/dev/pyapp/recipe.toml | 2 +- recipes/wip/dev/pylyzer/recipe.toml | 2 +- recipes/wip/dev/pyscan/recipe.toml | 5 ++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/recipes/wip/dev/pyapp/recipe.toml b/recipes/wip/dev/pyapp/recipe.toml index 48178700..b9468f34 100644 --- a/recipes/wip/dev/pyapp/recipe.toml +++ b/recipes/wip/dev/pyapp/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO serde crate error [source] git = "https://github.com/ofek/pyapp" [build] diff --git a/recipes/wip/dev/pylyzer/recipe.toml b/recipes/wip/dev/pylyzer/recipe.toml index bef4e30f..8fe7955f 100644 --- a/recipes/wip/dev/pylyzer/recipe.toml +++ b/recipes/wip/dev/pylyzer/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO erg_compiler crate error [source] git = "https://github.com/mtshiba/pylyzer" [build] diff --git a/recipes/wip/dev/pyscan/recipe.toml b/recipes/wip/dev/pyscan/recipe.toml index 81303e52..f4484885 100644 --- a/recipes/wip/dev/pyscan/recipe.toml +++ b/recipes/wip/dev/pyscan/recipe.toml @@ -1,5 +1,8 @@ -#TODO Not compiled or tested +#TODO (after cargo update) [source] git = "https://github.com/aswinnnn/pyscan" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 9ae1f1c9695a15e028c8bb09ce1d09ec707662f7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 29 Apr 2024 21:27:35 +0000 Subject: [PATCH 1730/3180] Update recipes --- recipes/wip/dev/pyscan/recipe.toml | 2 +- recipes/wip/dev/python-launcher/recipe.toml | 2 +- recipes/wip/dev/quicktest/recipe.toml | 2 +- recipes/wip/dev/rustfmt/recipe.toml | 2 +- recipes/wip/dev/rustup/recipe.toml | 3 +++ 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/recipes/wip/dev/pyscan/recipe.toml b/recipes/wip/dev/pyscan/recipe.toml index f4484885..b7192497 100644 --- a/recipes/wip/dev/pyscan/recipe.toml +++ b/recipes/wip/dev/pyscan/recipe.toml @@ -1,4 +1,4 @@ -#TODO (after cargo update) +#TODO serde crate error (after cargo update) [source] git = "https://github.com/aswinnnn/pyscan" [build] diff --git a/recipes/wip/dev/python-launcher/recipe.toml b/recipes/wip/dev/python-launcher/recipe.toml index 046d65c6..210ac4c8 100644 --- a/recipes/wip/dev/python-launcher/recipe.toml +++ b/recipes/wip/dev/python-launcher/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO serde crate error (after cargo update) [source] git = "https://github.com/brettcannon/python-launcher" [build] diff --git a/recipes/wip/dev/quicktest/recipe.toml b/recipes/wip/dev/quicktest/recipe.toml index 24cbc2d5..0c504bb7 100644 --- a/recipes/wip/dev/quicktest/recipe.toml +++ b/recipes/wip/dev/quicktest/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO serde crate error [source] git = "https://github.com/LuchoBazz/quicktest" rev = "f4d32f87d350a725b47d5bc92756e7be208cd466" diff --git a/recipes/wip/dev/rustfmt/recipe.toml b/recipes/wip/dev/rustfmt/recipe.toml index 7bac4a36..cf20d525 100644 --- a/recipes/wip/dev/rustfmt/recipe.toml +++ b/recipes/wip/dev/rustfmt/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO serde crate error (after cargo update) [source] git = "https://github.com/rust-lang/rustfmt" [build] diff --git a/recipes/wip/dev/rustup/recipe.toml b/recipes/wip/dev/rustup/recipe.toml index 33463a87..2dd33bad 100644 --- a/recipes/wip/dev/rustup/recipe.toml +++ b/recipes/wip/dev/rustup/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/rust-lang/rustup" [build] template = "cargo" +dependencies = [ + "openssl1", +] From cc908e338ae43cfd4ca4618df377f0cb88a94a7e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 29 Apr 2024 21:36:16 +0000 Subject: [PATCH 1731/3180] Update TODOs --- recipes/wip/dev/rustup/recipe.toml | 2 +- recipes/wip/dev/wrecc/recipe.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/wip/dev/rustup/recipe.toml b/recipes/wip/dev/rustup/recipe.toml index 2dd33bad..7292221e 100644 --- a/recipes/wip/dev/rustup/recipe.toml +++ b/recipes/wip/dev/rustup/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO serde crate error [source] git = "https://github.com/rust-lang/rustup" [build] diff --git a/recipes/wip/dev/wrecc/recipe.toml b/recipes/wip/dev/wrecc/recipe.toml index 276f7622..d1ac6f53 100644 --- a/recipes/wip/dev/wrecc/recipe.toml +++ b/recipes/wip/dev/wrecc/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/PhilippRados/wrecc" [build] From 795fa142c3d50d3c878d4717080661461e171640 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 1 May 2024 14:05:51 -0600 Subject: [PATCH 1732/3180] pop-icon-theme: do not install cursors --- recipes/icons/pop-icon-theme/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/icons/pop-icon-theme/recipe.toml b/recipes/icons/pop-icon-theme/recipe.toml index f62a877b..4ef0b483 100644 --- a/recipes/icons/pop-icon-theme/recipe.toml +++ b/recipes/icons/pop-icon-theme/recipe.toml @@ -6,4 +6,7 @@ template = "custom" script = """ meson setup -Dprefix=/ . "${COOKBOOK_SOURCE}" env DESTDIR="${COOKBOOK_STAGE}" meson install +#TODO: reduce cursors folder size: https://github.com/pop-os/icon-theme/issues/136 +rm -rf "${COOKBOOK_STAGE}/share/icons/Pop/cursors" +rm -rf "${COOKBOOK_STAGE}/share/icons/Pop/cursor.theme" """ From 60bfcd7c376cb0a6e79511b6c50cafa4b6cc9e6f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 1 May 2024 14:21:24 -0600 Subject: [PATCH 1733/3180] cosmic-edit,cosmic-files: sort app manifests --- recipes/tools/cosmic-edit/recipe.toml | 2 +- recipes/tools/cosmic-files/recipe.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/tools/cosmic-edit/recipe.toml b/recipes/tools/cosmic-edit/recipe.toml index c4c609c3..7af455cf 100644 --- a/recipes/tools/cosmic-edit/recipe.toml +++ b/recipes/tools/cosmic-edit/recipe.toml @@ -7,5 +7,5 @@ template = "custom" script = """ cookbook_cargo --no-default-features mkdir -pv "${COOKBOOK_STAGE}/ui/apps" -cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/cosmic-edit" +cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/30_cosmic-edit" """ diff --git a/recipes/tools/cosmic-files/recipe.toml b/recipes/tools/cosmic-files/recipe.toml index 31327010..45bdd719 100644 --- a/recipes/tools/cosmic-files/recipe.toml +++ b/recipes/tools/cosmic-files/recipe.toml @@ -7,5 +7,5 @@ template = "custom" script = """ cookbook_cargo --no-default-features mkdir -pv "${COOKBOOK_STAGE}/ui/apps" -cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/cosmic-files" +cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/20_cosmic-files" """ From 9aaba0707b85daa9af2bc065c64070e07e40e72a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 1 May 2024 15:18:32 -0600 Subject: [PATCH 1734/3180] shared-mime-info: only include database, not binaries --- recipes/other/shared-mime-info/recipe.sh | 32 ---------------------- recipes/other/shared-mime-info/recipe.toml | 15 ++++++++++ 2 files changed, 15 insertions(+), 32 deletions(-) delete mode 100755 recipes/other/shared-mime-info/recipe.sh create mode 100755 recipes/other/shared-mime-info/recipe.toml diff --git a/recipes/other/shared-mime-info/recipe.sh b/recipes/other/shared-mime-info/recipe.sh deleted file mode 100755 index 1880072a..00000000 --- a/recipes/other/shared-mime-info/recipe.sh +++ /dev/null @@ -1,32 +0,0 @@ -VERSION="1.10" -TAR="https://freedesktop.org/~hadess/shared-mime-info-${VERSION}.tar.xz" -BUILD_DEPENDS=(gettext glib libffi libiconv libxml2 pcre xz zlib) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib --static" - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix=/ - make - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/other/shared-mime-info/recipe.toml b/recipes/other/shared-mime-info/recipe.toml new file mode 100755 index 00000000..efa95d46 --- /dev/null +++ b/recipes/other/shared-mime-info/recipe.toml @@ -0,0 +1,15 @@ +# This does not build update-mime-database to avoid bringing in C code to Redox +[source] +tar = "https://gitlab.freedesktop.org/xdg/shared-mime-info/-/archive/2.4/shared-mime-info-2.4.tar.gz" +blake3 = "ad130f2f923ab3d5455c643e6257abf3598339fdd134ad0fac4e5dbbbf070eb9" + +[build] +template = "custom" +script = """ +mkdir -p "${COOKBOOK_STAGE}/usr/share/mime/packages" +msgfmt --xml \ + --template="${COOKBOOK_SOURCE}/data/freedesktop.org.xml.in" \ + -d "${COOKBOOK_SOURCE}/po" \ + -o "${COOKBOOK_STAGE}/usr/share/mime/packages/freedesktop.org.xml" +update-mime-database -V "${COOKBOOK_STAGE}/usr/share/mime" +""" From e31eb523079ff2ac71d0d1b30e4937d0928de0ff Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 2 May 2024 12:28:59 -0600 Subject: [PATCH 1735/3180] orbutils: Move launcher to its own folder --- recipes/gui/orbutils/recipe.toml | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/recipes/gui/orbutils/recipe.toml b/recipes/gui/orbutils/recipe.toml index 520c7f6a..89871fb1 100644 --- a/recipes/gui/orbutils/recipe.toml +++ b/recipes/gui/orbutils/recipe.toml @@ -4,24 +4,16 @@ git = "https://gitlab.redox-os.org/redox-os/orbutils.git" [build] template = "custom" script = """ -ORIGINAL_SOURCE="${COOKBOOK_SOURCE}" - mkdir -pv "${COOKBOOK_STAGE}/ui" cp -rv "${COOKBOOK_SOURCE}/apps" "${COOKBOOK_STAGE}/ui/apps" -COOKBOOK_SOURCE="${ORIGINAL_SOURCE}/orbutils" -"${COOKBOOK_CARGO}" install \ - --path "${COOKBOOK_SOURCE}" \ - --root "${COOKBOOK_STAGE}/usr" \ - --locked \ - --no-track \ - ${install_flags} - -COOKBOOK_SOURCE="${ORIGINAL_SOURCE}/calculator" -"${COOKBOOK_CARGO}" install \ - --path "${COOKBOOK_SOURCE}" \ - --root "${COOKBOOK_STAGE}/usr" \ - --locked \ - --no-track \ - ${install_flags} +for project in orbutils calculator launcher +do + "${COOKBOOK_CARGO}" install \ + --path "${COOKBOOK_SOURCE}/${project}" \ + --root "${COOKBOOK_STAGE}/usr" \ + --locked \ + --no-track \ + ${install_flags} +done """ From 430fe8b190ba767aa4b2a84cb73dc3303deb423a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 6 May 2024 15:30:38 -0600 Subject: [PATCH 1736/3180] cosmic-term: change manifest order --- recipes/tools/cosmic-term/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/tools/cosmic-term/recipe.toml b/recipes/tools/cosmic-term/recipe.toml index dde24188..ec06ea5b 100644 --- a/recipes/tools/cosmic-term/recipe.toml +++ b/recipes/tools/cosmic-term/recipe.toml @@ -7,5 +7,5 @@ template = "custom" script = """ cookbook_cargo --no-default-features mkdir -pv "${COOKBOOK_STAGE}/ui/apps" -cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/cosmic-term" +cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/10_cosmic-term" """ From d9bcdb8011bf94c4fe0d42582d29108be6008cca Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 7 May 2024 20:38:18 +0000 Subject: [PATCH 1737/3180] Add recipes --- recipes/wip/dev/cargo-binutils/recipe.toml | 5 +++++ recipes/wip/dev/dtool/recipe.toml | 5 +++++ recipes/wip/dev/kickstart/recipe.toml | 5 +++++ recipes/wip/dev/license-generator/recipe.toml | 5 +++++ recipes/wip/dev/svd2rust/recipe.toml | 5 +++++ recipes/wip/graphics/flowbetween/recipe.toml | 11 +++++++++++ recipes/wip/graphics/rimage/recipe.toml | 5 +++++ recipes/wip/tools/diffy/recipe.toml | 5 +++++ recipes/wip/tools/hl/recipe.toml | 5 +++++ recipes/wip/tools/minmon/recipe.toml | 5 +++++ recipes/wip/tools/tl-rs/recipe.toml | 5 +++++ 11 files changed, 61 insertions(+) create mode 100644 recipes/wip/dev/cargo-binutils/recipe.toml create mode 100644 recipes/wip/dev/dtool/recipe.toml create mode 100644 recipes/wip/dev/kickstart/recipe.toml create mode 100644 recipes/wip/dev/license-generator/recipe.toml create mode 100644 recipes/wip/dev/svd2rust/recipe.toml create mode 100644 recipes/wip/graphics/flowbetween/recipe.toml create mode 100644 recipes/wip/graphics/rimage/recipe.toml create mode 100644 recipes/wip/tools/diffy/recipe.toml create mode 100644 recipes/wip/tools/hl/recipe.toml create mode 100644 recipes/wip/tools/minmon/recipe.toml create mode 100644 recipes/wip/tools/tl-rs/recipe.toml diff --git a/recipes/wip/dev/cargo-binutils/recipe.toml b/recipes/wip/dev/cargo-binutils/recipe.toml new file mode 100644 index 00000000..f84307fc --- /dev/null +++ b/recipes/wip/dev/cargo-binutils/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/rust-embedded/cargo-binutils" +[build] +template = "cargo" diff --git a/recipes/wip/dev/dtool/recipe.toml b/recipes/wip/dev/dtool/recipe.toml new file mode 100644 index 00000000..720824b2 --- /dev/null +++ b/recipes/wip/dev/dtool/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/guoxbin/dtool" +[build] +template = "cargo" diff --git a/recipes/wip/dev/kickstart/recipe.toml b/recipes/wip/dev/kickstart/recipe.toml new file mode 100644 index 00000000..5559ada0 --- /dev/null +++ b/recipes/wip/dev/kickstart/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Keats/kickstart" +[build] +template = "cargo" diff --git a/recipes/wip/dev/license-generator/recipe.toml b/recipes/wip/dev/license-generator/recipe.toml new file mode 100644 index 00000000..72349853 --- /dev/null +++ b/recipes/wip/dev/license-generator/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/azu/license-generator" +[build] +template = "cargo" diff --git a/recipes/wip/dev/svd2rust/recipe.toml b/recipes/wip/dev/svd2rust/recipe.toml new file mode 100644 index 00000000..0825eacf --- /dev/null +++ b/recipes/wip/dev/svd2rust/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/rust-embedded/svd2rust" +[build] +template = "cargo" diff --git a/recipes/wip/graphics/flowbetween/recipe.toml b/recipes/wip/graphics/flowbetween/recipe.toml new file mode 100644 index 00000000..4f92bf38 --- /dev/null +++ b/recipes/wip/graphics/flowbetween/recipe.toml @@ -0,0 +1,11 @@ +#TODO maybe missing dependencies, see https://github.com/Logicalshift/flowbetween/blob/master/user_interfaces/gtk_ui/Cargo.toml#L11 +[source] +git = "https://github.com/Logicalshift/flowbetween" +[build] +template = "custom" +dependencies = [ + "gtk3", +] +script = """ +cookbook_cargo --features gtk +""" diff --git a/recipes/wip/graphics/rimage/recipe.toml b/recipes/wip/graphics/rimage/recipe.toml new file mode 100644 index 00000000..0792b172 --- /dev/null +++ b/recipes/wip/graphics/rimage/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/SalOne22/rimage" +[build] +template = "cargo" diff --git a/recipes/wip/tools/diffy/recipe.toml b/recipes/wip/tools/diffy/recipe.toml new file mode 100644 index 00000000..93c0c49e --- /dev/null +++ b/recipes/wip/tools/diffy/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/bmwill/diffy" +[build] +template = "cargo" diff --git a/recipes/wip/tools/hl/recipe.toml b/recipes/wip/tools/hl/recipe.toml new file mode 100644 index 00000000..9eb58d96 --- /dev/null +++ b/recipes/wip/tools/hl/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/pamburus/hl" +[build] +template = "cargo" diff --git a/recipes/wip/tools/minmon/recipe.toml b/recipes/wip/tools/minmon/recipe.toml new file mode 100644 index 00000000..bae2593b --- /dev/null +++ b/recipes/wip/tools/minmon/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/flo-at/minmon" +[build] +template = "cargo" diff --git a/recipes/wip/tools/tl-rs/recipe.toml b/recipes/wip/tools/tl-rs/recipe.toml new file mode 100644 index 00000000..691ab2e3 --- /dev/null +++ b/recipes/wip/tools/tl-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/NewDawn0/tl" +[build] +template = "cargo" From 897adc9f58149f8e765344bdcb79c16be278f0ec Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 7 May 2024 21:38:35 +0000 Subject: [PATCH 1738/3180] Add recipes --- recipes/wip/dev/cargo-workspaces/recipe.toml | 9 +++++++++ recipes/wip/dev/git-grab/recipe.toml | 5 +++++ recipes/wip/dev/xbuild/recipe.toml | 8 ++++++++ recipes/wip/net/updns/recipe.toml | 5 +++++ recipes/wip/tools/eureka/recipe.toml | 5 +++++ recipes/wip/tools/scrying/recipe.toml | 5 +++++ recipes/wip/tools/teip/recipe.toml | 5 +++++ 7 files changed, 42 insertions(+) create mode 100644 recipes/wip/dev/cargo-workspaces/recipe.toml create mode 100644 recipes/wip/dev/git-grab/recipe.toml create mode 100644 recipes/wip/dev/xbuild/recipe.toml create mode 100644 recipes/wip/net/updns/recipe.toml create mode 100644 recipes/wip/tools/eureka/recipe.toml create mode 100644 recipes/wip/tools/scrying/recipe.toml create mode 100644 recipes/wip/tools/teip/recipe.toml diff --git a/recipes/wip/dev/cargo-workspaces/recipe.toml b/recipes/wip/dev/cargo-workspaces/recipe.toml new file mode 100644 index 00000000..28aca625 --- /dev/null +++ b/recipes/wip/dev/cargo-workspaces/recipe.toml @@ -0,0 +1,9 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/pksunkara/cargo-workspaces" +[build] +template = "custom" +script = """ +COOKBOOK_SOURCE="${COOKBOOK_SOURCE}"/cargo-workspaces +cookbook_cargo +""" diff --git a/recipes/wip/dev/git-grab/recipe.toml b/recipes/wip/dev/git-grab/recipe.toml new file mode 100644 index 00000000..278ca098 --- /dev/null +++ b/recipes/wip/dev/git-grab/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/wezm/git-grab" +[build] +template = "cargo" diff --git a/recipes/wip/dev/xbuild/recipe.toml b/recipes/wip/dev/xbuild/recipe.toml new file mode 100644 index 00000000..13846d05 --- /dev/null +++ b/recipes/wip/dev/xbuild/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/rust-mobile/xbuild" +[build] +template = "custom" +script = """ +cookbook_cargo_packages xbuild +""" diff --git a/recipes/wip/net/updns/recipe.toml b/recipes/wip/net/updns/recipe.toml new file mode 100644 index 00000000..8abe8049 --- /dev/null +++ b/recipes/wip/net/updns/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/wyhaya/updns" +[build] +template = "cargo" diff --git a/recipes/wip/tools/eureka/recipe.toml b/recipes/wip/tools/eureka/recipe.toml new file mode 100644 index 00000000..255315b3 --- /dev/null +++ b/recipes/wip/tools/eureka/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/simeg/eureka" +[build] +template = "cargo" diff --git a/recipes/wip/tools/scrying/recipe.toml b/recipes/wip/tools/scrying/recipe.toml new file mode 100644 index 00000000..beeb0196 --- /dev/null +++ b/recipes/wip/tools/scrying/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/nccgroup/scrying" +[build] +template = "cargo" diff --git a/recipes/wip/tools/teip/recipe.toml b/recipes/wip/tools/teip/recipe.toml new file mode 100644 index 00000000..49bc47fc --- /dev/null +++ b/recipes/wip/tools/teip/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/greymd/teip" +[build] +template = "cargo" From 3010658d6aa99e98e77c1d0b17f7e66d7e08f91c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 8 May 2024 01:09:09 +0000 Subject: [PATCH 1739/3180] Add recipes --- recipes/wip/dev/auto-commit/recipe.toml | 5 +++++ recipes/wip/dev/bender/recipe.toml | 5 +++++ recipes/wip/dev/code-minimap/recipe.toml | 5 +++++ recipes/wip/dev/git-tool/recipe.toml | 5 +++++ recipes/wip/dev/grcov/recipe.toml | 5 +++++ recipes/wip/graphics/ocrs/recipe.toml | 8 ++++++++ recipes/wip/math/rink/recipe.toml | 8 ++++++++ recipes/wip/security/keyscope/recipe.toml | 5 +++++ recipes/wip/tools/conserve/recipe.toml | 5 +++++ recipes/wip/tools/fennec/recipe.toml | 5 +++++ 10 files changed, 56 insertions(+) create mode 100644 recipes/wip/dev/auto-commit/recipe.toml create mode 100644 recipes/wip/dev/bender/recipe.toml create mode 100644 recipes/wip/dev/code-minimap/recipe.toml create mode 100644 recipes/wip/dev/git-tool/recipe.toml create mode 100644 recipes/wip/dev/grcov/recipe.toml create mode 100644 recipes/wip/graphics/ocrs/recipe.toml create mode 100644 recipes/wip/math/rink/recipe.toml create mode 100644 recipes/wip/security/keyscope/recipe.toml create mode 100644 recipes/wip/tools/conserve/recipe.toml create mode 100644 recipes/wip/tools/fennec/recipe.toml diff --git a/recipes/wip/dev/auto-commit/recipe.toml b/recipes/wip/dev/auto-commit/recipe.toml new file mode 100644 index 00000000..f5fb80a1 --- /dev/null +++ b/recipes/wip/dev/auto-commit/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/m1guelpf/auto-commit" +[build] +template = "cargo" diff --git a/recipes/wip/dev/bender/recipe.toml b/recipes/wip/dev/bender/recipe.toml new file mode 100644 index 00000000..7cc88637 --- /dev/null +++ b/recipes/wip/dev/bender/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/pulp-platform/bender" +[build] +template = "cargo" diff --git a/recipes/wip/dev/code-minimap/recipe.toml b/recipes/wip/dev/code-minimap/recipe.toml new file mode 100644 index 00000000..4a38cfe4 --- /dev/null +++ b/recipes/wip/dev/code-minimap/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/wfxr/code-minimap" +[build] +template = "cargo" diff --git a/recipes/wip/dev/git-tool/recipe.toml b/recipes/wip/dev/git-tool/recipe.toml new file mode 100644 index 00000000..d75db7d4 --- /dev/null +++ b/recipes/wip/dev/git-tool/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/SierraSoftworks/git-tool" +[build] +template = "cargo" diff --git a/recipes/wip/dev/grcov/recipe.toml b/recipes/wip/dev/grcov/recipe.toml new file mode 100644 index 00000000..08220168 --- /dev/null +++ b/recipes/wip/dev/grcov/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/mozilla/grcov" +[build] +template = "cargo" diff --git a/recipes/wip/graphics/ocrs/recipe.toml b/recipes/wip/graphics/ocrs/recipe.toml new file mode 100644 index 00000000..70baa607 --- /dev/null +++ b/recipes/wip/graphics/ocrs/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/robertknight/ocrs" +[build] +template = "custom" +script = """ +cookbook_cargo_packages ocrs-cli +""" diff --git a/recipes/wip/math/rink/recipe.toml b/recipes/wip/math/rink/recipe.toml new file mode 100644 index 00000000..19a7820e --- /dev/null +++ b/recipes/wip/math/rink/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/tiffany352/rink-rs" +[build] +template = "custom" +script = """ +cookbook_cargo_packages cli +""" diff --git a/recipes/wip/security/keyscope/recipe.toml b/recipes/wip/security/keyscope/recipe.toml new file mode 100644 index 00000000..489bd7a5 --- /dev/null +++ b/recipes/wip/security/keyscope/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/SpectralOps/keyscope" +[build] +template = "cargo" diff --git a/recipes/wip/tools/conserve/recipe.toml b/recipes/wip/tools/conserve/recipe.toml new file mode 100644 index 00000000..4fa0455d --- /dev/null +++ b/recipes/wip/tools/conserve/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/sourcefrog/conserve" +[build] +template = "cargo" diff --git a/recipes/wip/tools/fennec/recipe.toml b/recipes/wip/tools/fennec/recipe.toml new file mode 100644 index 00000000..66e4868a --- /dev/null +++ b/recipes/wip/tools/fennec/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/AbdulRhmanAlfaifi/Fennec" +[build] +template = "cargo" From fc5ddc742ee3ddccb3783346a063a9ba22da33d5 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 8 May 2024 03:03:15 +0000 Subject: [PATCH 1740/3180] Add recipes --- recipes/wip/dev/allocscope/recipe.toml | 14 ++++++++++++++ recipes/wip/dev/colmena/recipe.toml | 5 +++++ recipes/wip/dev/rbasefind/recipe.toml | 5 +++++ recipes/wip/tools/arrow-tools/recipe.toml | 8 ++++++++ recipes/wip/tools/bdt/recipe.toml | 5 +++++ recipes/wip/tools/caesium/recipe.toml | 5 +++++ recipes/wip/tools/diffr/recipe.toml | 5 +++++ recipes/wip/tools/halp/recipe.toml | 5 +++++ recipes/wip/tools/rana/recipe.toml | 5 +++++ recipes/wip/tools/rq/recipe.toml | 5 +++++ 10 files changed, 62 insertions(+) create mode 100644 recipes/wip/dev/allocscope/recipe.toml create mode 100644 recipes/wip/dev/colmena/recipe.toml create mode 100644 recipes/wip/dev/rbasefind/recipe.toml create mode 100644 recipes/wip/tools/arrow-tools/recipe.toml create mode 100644 recipes/wip/tools/bdt/recipe.toml create mode 100644 recipes/wip/tools/caesium/recipe.toml create mode 100644 recipes/wip/tools/diffr/recipe.toml create mode 100644 recipes/wip/tools/halp/recipe.toml create mode 100644 recipes/wip/tools/rana/recipe.toml create mode 100644 recipes/wip/tools/rq/recipe.toml diff --git a/recipes/wip/dev/allocscope/recipe.toml b/recipes/wip/dev/allocscope/recipe.toml new file mode 100644 index 00000000..bb6bef10 --- /dev/null +++ b/recipes/wip/dev/allocscope/recipe.toml @@ -0,0 +1,14 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/matt-kimball/allocscope" +[build] +template = "custom" +dependencies = [ + "libiberty", + "ncurses", + "sqlite3", + "libunwind", +] +script = """ +cookbook_cargo_packages allocscope-trace allocscope-view +""" diff --git a/recipes/wip/dev/colmena/recipe.toml b/recipes/wip/dev/colmena/recipe.toml new file mode 100644 index 00000000..42889b7e --- /dev/null +++ b/recipes/wip/dev/colmena/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/zhaofengli/colmena" +[build] +template = "cargo" diff --git a/recipes/wip/dev/rbasefind/recipe.toml b/recipes/wip/dev/rbasefind/recipe.toml new file mode 100644 index 00000000..651f870e --- /dev/null +++ b/recipes/wip/dev/rbasefind/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/sgayou/rbasefind" +[build] +template = "cargo" diff --git a/recipes/wip/tools/arrow-tools/recipe.toml b/recipes/wip/tools/arrow-tools/recipe.toml new file mode 100644 index 00000000..92a14641 --- /dev/null +++ b/recipes/wip/tools/arrow-tools/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/domoritz/arrow-tools" +[build] +template = "custom" +script = """ +cookbook_cargo_packages csv2arrow csv2parquet json2arrow json2parquet +""" diff --git a/recipes/wip/tools/bdt/recipe.toml b/recipes/wip/tools/bdt/recipe.toml new file mode 100644 index 00000000..81bace06 --- /dev/null +++ b/recipes/wip/tools/bdt/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/datafusion-contrib/bdt" +[build] +template = "cargo" diff --git a/recipes/wip/tools/caesium/recipe.toml b/recipes/wip/tools/caesium/recipe.toml new file mode 100644 index 00000000..e8c6b227 --- /dev/null +++ b/recipes/wip/tools/caesium/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Lymphatus/caesium-clt" +[build] +template = "cargo" diff --git a/recipes/wip/tools/diffr/recipe.toml b/recipes/wip/tools/diffr/recipe.toml new file mode 100644 index 00000000..0c0552ce --- /dev/null +++ b/recipes/wip/tools/diffr/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/mookid/diffr" +[build] +template = "cargo" diff --git a/recipes/wip/tools/halp/recipe.toml b/recipes/wip/tools/halp/recipe.toml new file mode 100644 index 00000000..a533cb55 --- /dev/null +++ b/recipes/wip/tools/halp/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/orhun/halp" +[build] +template = "cargo" diff --git a/recipes/wip/tools/rana/recipe.toml b/recipes/wip/tools/rana/recipe.toml new file mode 100644 index 00000000..4fa83830 --- /dev/null +++ b/recipes/wip/tools/rana/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/grunch/rana" +[build] +template = "cargo" diff --git a/recipes/wip/tools/rq/recipe.toml b/recipes/wip/tools/rq/recipe.toml new file mode 100644 index 00000000..d7b4d409 --- /dev/null +++ b/recipes/wip/tools/rq/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/dflemstr/rq" +[build] +template = "cargo" From 30af9c9a61c79424b4151ab85edc322e264fc1f9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 8 May 2024 03:42:07 +0000 Subject: [PATCH 1741/3180] Add recipes --- recipes/wip/benchmarks/rpc-perf/recipe.toml | 6 ++++++ recipes/wip/dev/git-interactive-rebase-tool/recipe.toml | 5 +++++ recipes/wip/dev/mise/recipe.toml | 5 +++++ recipes/wip/graphics/hdr10plus-tool/recipe.toml | 8 ++++++++ recipes/wip/net/bore/recipe.toml | 5 +++++ recipes/wip/net/realm/recipe.toml | 5 +++++ recipes/wip/security/dfir-toolkit/recipe.toml | 5 +++++ recipes/wip/security/vagga/recipe.toml | 5 +++++ recipes/wip/tools/navi/recipe.toml | 5 +++++ recipes/wip/video/alass/recipe.toml | 8 ++++++++ recipes/wip/web/dirble/recipe.toml | 5 +++++ 11 files changed, 62 insertions(+) create mode 100644 recipes/wip/benchmarks/rpc-perf/recipe.toml create mode 100644 recipes/wip/dev/git-interactive-rebase-tool/recipe.toml create mode 100644 recipes/wip/dev/mise/recipe.toml create mode 100644 recipes/wip/graphics/hdr10plus-tool/recipe.toml create mode 100644 recipes/wip/net/bore/recipe.toml create mode 100644 recipes/wip/net/realm/recipe.toml create mode 100644 recipes/wip/security/dfir-toolkit/recipe.toml create mode 100644 recipes/wip/security/vagga/recipe.toml create mode 100644 recipes/wip/tools/navi/recipe.toml create mode 100644 recipes/wip/video/alass/recipe.toml create mode 100644 recipes/wip/web/dirble/recipe.toml diff --git a/recipes/wip/benchmarks/rpc-perf/recipe.toml b/recipes/wip/benchmarks/rpc-perf/recipe.toml new file mode 100644 index 00000000..f251c9dd --- /dev/null +++ b/recipes/wip/benchmarks/rpc-perf/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/twitter/rpc-perf" + +[build] +template = "cargo" diff --git a/recipes/wip/dev/git-interactive-rebase-tool/recipe.toml b/recipes/wip/dev/git-interactive-rebase-tool/recipe.toml new file mode 100644 index 00000000..5ed90170 --- /dev/null +++ b/recipes/wip/dev/git-interactive-rebase-tool/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/MitMaro/git-interactive-rebase-tool" +[build] +template = "cargo" diff --git a/recipes/wip/dev/mise/recipe.toml b/recipes/wip/dev/mise/recipe.toml new file mode 100644 index 00000000..b5014883 --- /dev/null +++ b/recipes/wip/dev/mise/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/jdx/mise" +[build] +template = "cargo" diff --git a/recipes/wip/graphics/hdr10plus-tool/recipe.toml b/recipes/wip/graphics/hdr10plus-tool/recipe.toml new file mode 100644 index 00000000..b222fe91 --- /dev/null +++ b/recipes/wip/graphics/hdr10plus-tool/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/quietvoid/hdr10plus_tool" +[build] +template = "cargo" +dependencies = [ + "fontconfig", +] diff --git a/recipes/wip/net/bore/recipe.toml b/recipes/wip/net/bore/recipe.toml new file mode 100644 index 00000000..264a4adb --- /dev/null +++ b/recipes/wip/net/bore/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ekzhang/bore" +[build] +template = "cargo" diff --git a/recipes/wip/net/realm/recipe.toml b/recipes/wip/net/realm/recipe.toml new file mode 100644 index 00000000..be7d217b --- /dev/null +++ b/recipes/wip/net/realm/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/zhboner/realm" +[build] +template = "cargo" diff --git a/recipes/wip/security/dfir-toolkit/recipe.toml b/recipes/wip/security/dfir-toolkit/recipe.toml new file mode 100644 index 00000000..f80994c0 --- /dev/null +++ b/recipes/wip/security/dfir-toolkit/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/dfir-dd/dfir-toolkit" +[build] +template = "cargo" diff --git a/recipes/wip/security/vagga/recipe.toml b/recipes/wip/security/vagga/recipe.toml new file mode 100644 index 00000000..f1da02ed --- /dev/null +++ b/recipes/wip/security/vagga/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/tailhook/vagga" +[build] +template = "cargo" diff --git a/recipes/wip/tools/navi/recipe.toml b/recipes/wip/tools/navi/recipe.toml new file mode 100644 index 00000000..5a025fd6 --- /dev/null +++ b/recipes/wip/tools/navi/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/denisidoro/navi" +[build] +template = "cargo" diff --git a/recipes/wip/video/alass/recipe.toml b/recipes/wip/video/alass/recipe.toml new file mode 100644 index 00000000..60987edb --- /dev/null +++ b/recipes/wip/video/alass/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/kaegi/alass" +[build] +template = "custom" +script = """ +cookbook_cargo_packages alass-cli +""" diff --git a/recipes/wip/web/dirble/recipe.toml b/recipes/wip/web/dirble/recipe.toml new file mode 100644 index 00000000..633264a9 --- /dev/null +++ b/recipes/wip/web/dirble/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Isona/dirble" +[build] +template = "cargo" From 49901b0a2dd388f997481266760345906bc75110 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 8 May 2024 04:12:55 +0000 Subject: [PATCH 1742/3180] Add recipes --- recipes/wip/dev/cargo-component/recipe.toml | 5 +++++ recipes/wip/dev/cargo-make/recipe.toml | 5 +++++ recipes/wip/dev/cargo-wasi/recipe.toml | 5 +++++ recipes/wip/dev/deploy-rs/recipe.toml | 9 +++++++++ recipes/wip/dev/jco/recipe.toml | 5 +++++ recipes/wip/dev/wasm-pack/recipe.toml | 5 +++++ recipes/wip/dev/wasm-tools/recipe.toml | 5 +++++ recipes/wip/security/feroxbuster/recipe.toml | 5 +++++ recipes/wip/video/dovi-tool/recipe.toml | 5 +++++ 9 files changed, 49 insertions(+) create mode 100644 recipes/wip/dev/cargo-component/recipe.toml create mode 100644 recipes/wip/dev/cargo-make/recipe.toml create mode 100644 recipes/wip/dev/cargo-wasi/recipe.toml create mode 100644 recipes/wip/dev/deploy-rs/recipe.toml create mode 100644 recipes/wip/dev/jco/recipe.toml create mode 100644 recipes/wip/dev/wasm-pack/recipe.toml create mode 100644 recipes/wip/dev/wasm-tools/recipe.toml create mode 100644 recipes/wip/security/feroxbuster/recipe.toml create mode 100644 recipes/wip/video/dovi-tool/recipe.toml diff --git a/recipes/wip/dev/cargo-component/recipe.toml b/recipes/wip/dev/cargo-component/recipe.toml new file mode 100644 index 00000000..601e17e5 --- /dev/null +++ b/recipes/wip/dev/cargo-component/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/bytecodealliance/cargo-component" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-make/recipe.toml b/recipes/wip/dev/cargo-make/recipe.toml new file mode 100644 index 00000000..a8967ea3 --- /dev/null +++ b/recipes/wip/dev/cargo-make/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/sagiegurari/cargo-make" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-wasi/recipe.toml b/recipes/wip/dev/cargo-wasi/recipe.toml new file mode 100644 index 00000000..08610531 --- /dev/null +++ b/recipes/wip/dev/cargo-wasi/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/bytecodealliance/cargo-wasi" +[build] +template = "cargo" diff --git a/recipes/wip/dev/deploy-rs/recipe.toml b/recipes/wip/dev/deploy-rs/recipe.toml new file mode 100644 index 00000000..ac1cc143 --- /dev/null +++ b/recipes/wip/dev/deploy-rs/recipe.toml @@ -0,0 +1,9 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/serokell/deploy-rs" +[build] +template = "custom" +script = """ +mv "${COOKBOOK_STAGE}/usr/bin/deploy" "${COOKBOOK_STAGE}/usr/bin/deploy-rs" +cookbook_cargo +""" diff --git a/recipes/wip/dev/jco/recipe.toml b/recipes/wip/dev/jco/recipe.toml new file mode 100644 index 00000000..9279ec01 --- /dev/null +++ b/recipes/wip/dev/jco/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/bytecodealliance/jco" +[build] +template = "cargo" diff --git a/recipes/wip/dev/wasm-pack/recipe.toml b/recipes/wip/dev/wasm-pack/recipe.toml new file mode 100644 index 00000000..87513804 --- /dev/null +++ b/recipes/wip/dev/wasm-pack/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/rustwasm/wasm-pack" +[build] +template = "cargo" diff --git a/recipes/wip/dev/wasm-tools/recipe.toml b/recipes/wip/dev/wasm-tools/recipe.toml new file mode 100644 index 00000000..b06eeefe --- /dev/null +++ b/recipes/wip/dev/wasm-tools/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/bytecodealliance/wasm-tools" +[build] +template = "cargo" diff --git a/recipes/wip/security/feroxbuster/recipe.toml b/recipes/wip/security/feroxbuster/recipe.toml new file mode 100644 index 00000000..df9666ad --- /dev/null +++ b/recipes/wip/security/feroxbuster/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/epi052/feroxbuster" +[build] +template = "cargo" diff --git a/recipes/wip/video/dovi-tool/recipe.toml b/recipes/wip/video/dovi-tool/recipe.toml new file mode 100644 index 00000000..177b2422 --- /dev/null +++ b/recipes/wip/video/dovi-tool/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/quietvoid/dovi_tool" +[build] +template = "cargo" From ffa5dd35ec2ebb41e112aafacef134adbc348ac6 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 9 May 2024 15:54:24 +0000 Subject: [PATCH 1743/3180] Add recipes --- recipes/wip/dev/gfold/recipe.toml | 8 ++++++++ recipes/wip/dev/leetup/recipe.toml | 5 +++++ recipes/wip/dev/ucd-generate/recipe.toml | 5 +++++ recipes/wip/science/scidataflow/recipe.toml | 5 +++++ 4 files changed, 23 insertions(+) create mode 100644 recipes/wip/dev/gfold/recipe.toml create mode 100644 recipes/wip/dev/leetup/recipe.toml create mode 100644 recipes/wip/dev/ucd-generate/recipe.toml create mode 100644 recipes/wip/science/scidataflow/recipe.toml diff --git a/recipes/wip/dev/gfold/recipe.toml b/recipes/wip/dev/gfold/recipe.toml new file mode 100644 index 00000000..59d41633 --- /dev/null +++ b/recipes/wip/dev/gfold/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/nickgerace/gfold" +[build] +template = "custom" +script = """ +cookbook_cargo_packages gfold +""" diff --git a/recipes/wip/dev/leetup/recipe.toml b/recipes/wip/dev/leetup/recipe.toml new file mode 100644 index 00000000..95569337 --- /dev/null +++ b/recipes/wip/dev/leetup/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/dragfire/leetup" +[build] +template = "cargo" diff --git a/recipes/wip/dev/ucd-generate/recipe.toml b/recipes/wip/dev/ucd-generate/recipe.toml new file mode 100644 index 00000000..8fd688e0 --- /dev/null +++ b/recipes/wip/dev/ucd-generate/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/BurntSushi/ucd-generate" +[build] +template = "cargo" diff --git a/recipes/wip/science/scidataflow/recipe.toml b/recipes/wip/science/scidataflow/recipe.toml new file mode 100644 index 00000000..31918e7c --- /dev/null +++ b/recipes/wip/science/scidataflow/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/vsbuffalo/scidataflow" +[build] +template = "cargo" From 4a2870ee12bf1708e6046f8f185bc9a7ba91d940 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 9 May 2024 15:55:55 +0000 Subject: [PATCH 1744/3180] Build the CLI frontend on objdiff --- recipes/wip/tools/objdiff/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/tools/objdiff/recipe.toml b/recipes/wip/tools/objdiff/recipe.toml index 66a58844..a8dd0b51 100644 --- a/recipes/wip/tools/objdiff/recipe.toml +++ b/recipes/wip/tools/objdiff/recipe.toml @@ -4,5 +4,5 @@ git = "https://github.com/encounter/objdiff" [build] template = "custom" script = """ -cookbook_cargo_packages objdiff-gui +cookbook_cargo_packages objdiff-gui objdiff-cli """ From 49d55f9edd44dd00c7466622b6b7162605d5cb59 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 9 May 2024 16:47:51 +0000 Subject: [PATCH 1745/3180] Add recipes --- recipes/wip/dev/git-graph/recipe.toml | 5 +++++ recipes/wip/dev/git-subset/recipe.toml | 5 +++++ recipes/wip/dev/projclean/recipe.toml | 5 +++++ recipes/wip/security/airgorah/recipe.toml | 8 ++++++++ recipes/wip/security/binsec/recipe.toml | 5 +++++ recipes/wip/tools/cyme/recipe.toml | 5 +++++ recipes/wip/tools/dispatch/recipe.toml | 5 +++++ recipes/wip/tools/pfetch-rs/recipe.toml | 5 +++++ recipes/wip/tools/xsv/recipe.toml | 5 +++++ recipes/wip/video/imdb-rename/recipe.toml | 5 +++++ 10 files changed, 53 insertions(+) create mode 100644 recipes/wip/dev/git-graph/recipe.toml create mode 100644 recipes/wip/dev/git-subset/recipe.toml create mode 100644 recipes/wip/dev/projclean/recipe.toml create mode 100644 recipes/wip/security/airgorah/recipe.toml create mode 100644 recipes/wip/security/binsec/recipe.toml create mode 100644 recipes/wip/tools/cyme/recipe.toml create mode 100644 recipes/wip/tools/dispatch/recipe.toml create mode 100644 recipes/wip/tools/pfetch-rs/recipe.toml create mode 100644 recipes/wip/tools/xsv/recipe.toml create mode 100644 recipes/wip/video/imdb-rename/recipe.toml diff --git a/recipes/wip/dev/git-graph/recipe.toml b/recipes/wip/dev/git-graph/recipe.toml new file mode 100644 index 00000000..bfc5f5a4 --- /dev/null +++ b/recipes/wip/dev/git-graph/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/mlange-42/git-graph" +[build] +template = "cargo" diff --git a/recipes/wip/dev/git-subset/recipe.toml b/recipes/wip/dev/git-subset/recipe.toml new file mode 100644 index 00000000..13e43a7b --- /dev/null +++ b/recipes/wip/dev/git-subset/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/jasonwhite/git-subset" +[build] +template = "cargo" diff --git a/recipes/wip/dev/projclean/recipe.toml b/recipes/wip/dev/projclean/recipe.toml new file mode 100644 index 00000000..ebfe22c4 --- /dev/null +++ b/recipes/wip/dev/projclean/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/sigoden/projclean" +[build] +template = "cargo" diff --git a/recipes/wip/security/airgorah/recipe.toml b/recipes/wip/security/airgorah/recipe.toml new file mode 100644 index 00000000..3ed7994e --- /dev/null +++ b/recipes/wip/security/airgorah/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/martin-olivier/airgorah" +[build] +template = "cargo" +dependencies = [ + "gtk4", +] diff --git a/recipes/wip/security/binsec/recipe.toml b/recipes/wip/security/binsec/recipe.toml new file mode 100644 index 00000000..968ba666 --- /dev/null +++ b/recipes/wip/security/binsec/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ex0dus-0x/binsec" +[build] +template = "cargo" diff --git a/recipes/wip/tools/cyme/recipe.toml b/recipes/wip/tools/cyme/recipe.toml new file mode 100644 index 00000000..dfb039fe --- /dev/null +++ b/recipes/wip/tools/cyme/recipe.toml @@ -0,0 +1,5 @@ +#TODO port to Redox +[source] +git = "https://github.com/tuna-f1sh/cyme" +[build] +template = "cargo" diff --git a/recipes/wip/tools/dispatch/recipe.toml b/recipes/wip/tools/dispatch/recipe.toml new file mode 100644 index 00000000..d308af5b --- /dev/null +++ b/recipes/wip/tools/dispatch/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/brianyu28/dispatch" +[build] +template = "cargo" diff --git a/recipes/wip/tools/pfetch-rs/recipe.toml b/recipes/wip/tools/pfetch-rs/recipe.toml new file mode 100644 index 00000000..a376b30a --- /dev/null +++ b/recipes/wip/tools/pfetch-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Gobidev/pfetch-rs" +[build] +template = "cargo" diff --git a/recipes/wip/tools/xsv/recipe.toml b/recipes/wip/tools/xsv/recipe.toml new file mode 100644 index 00000000..c2fcf5fc --- /dev/null +++ b/recipes/wip/tools/xsv/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/BurntSushi/xsv" +[build] +template = "cargo" diff --git a/recipes/wip/video/imdb-rename/recipe.toml b/recipes/wip/video/imdb-rename/recipe.toml new file mode 100644 index 00000000..51b828cc --- /dev/null +++ b/recipes/wip/video/imdb-rename/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/BurntSushi/imdb-rename" +[build] +template = "cargo" From d63b675c741a5409b5dd2ad29829c8a48d9e4864 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 9 May 2024 20:28:07 +0000 Subject: [PATCH 1746/3180] Add recipes --- recipes/wip/benchmarks/canbench/recipe.toml | 8 ++++++++ recipes/wip/benchmarks/cargo-benchcmp/recipe.toml | 5 +++++ recipes/wip/dev/boon/recipe.toml | 5 +++++ recipes/wip/dev/dfx/recipe.toml | 8 ++++++++ recipes/wip/dev/stgit/recipe.toml | 5 +++++ recipes/wip/net/rustypaste/recipe.toml | 5 +++++ recipes/wip/science/polypolish/recipe.toml | 5 +++++ recipes/wip/services/runst/recipe.toml | 9 +++++++++ recipes/wip/tools/menyoki/recipe.toml | 5 +++++ recipes/wip/tools/mkisofs-rs/recipe.toml | 5 +++++ 10 files changed, 60 insertions(+) create mode 100644 recipes/wip/benchmarks/canbench/recipe.toml create mode 100644 recipes/wip/benchmarks/cargo-benchcmp/recipe.toml create mode 100644 recipes/wip/dev/boon/recipe.toml create mode 100644 recipes/wip/dev/dfx/recipe.toml create mode 100644 recipes/wip/dev/stgit/recipe.toml create mode 100644 recipes/wip/net/rustypaste/recipe.toml create mode 100644 recipes/wip/science/polypolish/recipe.toml create mode 100644 recipes/wip/services/runst/recipe.toml create mode 100644 recipes/wip/tools/menyoki/recipe.toml create mode 100644 recipes/wip/tools/mkisofs-rs/recipe.toml diff --git a/recipes/wip/benchmarks/canbench/recipe.toml b/recipes/wip/benchmarks/canbench/recipe.toml new file mode 100644 index 00000000..26ee7e54 --- /dev/null +++ b/recipes/wip/benchmarks/canbench/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/dfinity/canbench" +[build] +template = "custom" +script = """ +cookbook_cargo_packages canbench +""" diff --git a/recipes/wip/benchmarks/cargo-benchcmp/recipe.toml b/recipes/wip/benchmarks/cargo-benchcmp/recipe.toml new file mode 100644 index 00000000..20a17594 --- /dev/null +++ b/recipes/wip/benchmarks/cargo-benchcmp/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/BurntSushi/cargo-benchcmp" +[build] +template = "cargo" diff --git a/recipes/wip/dev/boon/recipe.toml b/recipes/wip/dev/boon/recipe.toml new file mode 100644 index 00000000..5a497b21 --- /dev/null +++ b/recipes/wip/dev/boon/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/camchenry/boon" +[build] +template = "cargo" diff --git a/recipes/wip/dev/dfx/recipe.toml b/recipes/wip/dev/dfx/recipe.toml new file mode 100644 index 00000000..92769e5f --- /dev/null +++ b/recipes/wip/dev/dfx/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/dfinity/sdk" +[build] +template = "custom" +script = """ +cookbook_cargo_packages dfx +""" diff --git a/recipes/wip/dev/stgit/recipe.toml b/recipes/wip/dev/stgit/recipe.toml new file mode 100644 index 00000000..7f9a60d1 --- /dev/null +++ b/recipes/wip/dev/stgit/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/stacked-git/stgit" +[build] +template = "cargo" diff --git a/recipes/wip/net/rustypaste/recipe.toml b/recipes/wip/net/rustypaste/recipe.toml new file mode 100644 index 00000000..566ffdb1 --- /dev/null +++ b/recipes/wip/net/rustypaste/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/orhun/rustypaste-cli" +[build] +template = "cargo" diff --git a/recipes/wip/science/polypolish/recipe.toml b/recipes/wip/science/polypolish/recipe.toml new file mode 100644 index 00000000..0f0d2598 --- /dev/null +++ b/recipes/wip/science/polypolish/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/rrwick/Polypolish" +[build] +template = "cargo" diff --git a/recipes/wip/services/runst/recipe.toml b/recipes/wip/services/runst/recipe.toml new file mode 100644 index 00000000..85601331 --- /dev/null +++ b/recipes/wip/services/runst/recipe.toml @@ -0,0 +1,9 @@ +#TODO port to Orbital +[source] +git = "https://github.com/orhun/runst" +[build] +template = "cargo" +dependencies = [ + "glib", + "pango", +] diff --git a/recipes/wip/tools/menyoki/recipe.toml b/recipes/wip/tools/menyoki/recipe.toml new file mode 100644 index 00000000..79cdea7f --- /dev/null +++ b/recipes/wip/tools/menyoki/recipe.toml @@ -0,0 +1,5 @@ +#TODO port to Orbital, see https://github.com/orhun/menyoki/blob/master/IMPLEMENTATION.md#implementing-for-other-platforms +[source] +git = "https://github.com/orhun/menyoki" +[build] +template = "cargo" diff --git a/recipes/wip/tools/mkisofs-rs/recipe.toml b/recipes/wip/tools/mkisofs-rs/recipe.toml new file mode 100644 index 00000000..be3c7d27 --- /dev/null +++ b/recipes/wip/tools/mkisofs-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/marysaka/mkisofs-rs" +[build] +template = "cargo" From c83f2ed50f1d487f166a2cb4e2e9b1d713b268e0 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 9 May 2024 20:43:17 +0000 Subject: [PATCH 1747/3180] Add recipes --- recipes/wip/dev/espmonitor/recipe.toml | 8 ++++++++ recipes/wip/dev/memtest-vulkan/recipe.toml | 5 +++++ recipes/wip/graphics/matugen/recipe.toml | 5 +++++ recipes/wip/tools/hoard/recipe.toml | 5 +++++ recipes/wip/tools/rusty/recipe.toml | 5 +++++ 5 files changed, 28 insertions(+) create mode 100644 recipes/wip/dev/espmonitor/recipe.toml create mode 100644 recipes/wip/dev/memtest-vulkan/recipe.toml create mode 100644 recipes/wip/graphics/matugen/recipe.toml create mode 100644 recipes/wip/tools/hoard/recipe.toml create mode 100644 recipes/wip/tools/rusty/recipe.toml diff --git a/recipes/wip/dev/espmonitor/recipe.toml b/recipes/wip/dev/espmonitor/recipe.toml new file mode 100644 index 00000000..cc23026d --- /dev/null +++ b/recipes/wip/dev/espmonitor/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/esp-rs/espmonitor" +[build] +template = "custom" +script = """ +cookbook_cargo_packages espmonitor cargo-espmonitor +""" diff --git a/recipes/wip/dev/memtest-vulkan/recipe.toml b/recipes/wip/dev/memtest-vulkan/recipe.toml new file mode 100644 index 00000000..540689c9 --- /dev/null +++ b/recipes/wip/dev/memtest-vulkan/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/GpuZelenograd/memtest_vulkan" +[build] +template = "cargo" diff --git a/recipes/wip/graphics/matugen/recipe.toml b/recipes/wip/graphics/matugen/recipe.toml new file mode 100644 index 00000000..9f12b258 --- /dev/null +++ b/recipes/wip/graphics/matugen/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/InioX/matugen" +[build] +template = "cargo" diff --git a/recipes/wip/tools/hoard/recipe.toml b/recipes/wip/tools/hoard/recipe.toml new file mode 100644 index 00000000..446a1b75 --- /dev/null +++ b/recipes/wip/tools/hoard/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Hyde46/hoard" +[build] +template = "cargo" diff --git a/recipes/wip/tools/rusty/recipe.toml b/recipes/wip/tools/rusty/recipe.toml new file mode 100644 index 00000000..bedc4ba3 --- /dev/null +++ b/recipes/wip/tools/rusty/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/zahidkhawaja/rusty" +[build] +template = "cargo" From b9116617c19b9c184d7f152a8a83396264a5b3ad Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 11 May 2024 04:50:16 +0000 Subject: [PATCH 1748/3180] Add recipes --- recipes/wip/dev/licensure/recipe.toml | 5 +++++ recipes/wip/dev/precious/recipe.toml | 5 +++++ recipes/wip/finance/apcacli/recipe.toml | 5 +++++ recipes/wip/games/tetromino/recipe.toml | 5 +++++ recipes/wip/graphics/dify/recipe.toml | 5 +++++ recipes/wip/libs/libhidapi/recipe.toml | 9 +++++++++ recipes/wip/security/nitrocli/recipe.toml | 8 ++++++++ recipes/wip/tools/notnow/recipe.toml | 5 +++++ recipes/wip/tools/sam/recipe.toml | 8 ++++++++ recipes/wip/tools/tq/recipe.toml | 5 +++++ 10 files changed, 60 insertions(+) create mode 100644 recipes/wip/dev/licensure/recipe.toml create mode 100644 recipes/wip/dev/precious/recipe.toml create mode 100644 recipes/wip/finance/apcacli/recipe.toml create mode 100644 recipes/wip/games/tetromino/recipe.toml create mode 100644 recipes/wip/graphics/dify/recipe.toml create mode 100644 recipes/wip/libs/libhidapi/recipe.toml create mode 100644 recipes/wip/security/nitrocli/recipe.toml create mode 100644 recipes/wip/tools/notnow/recipe.toml create mode 100644 recipes/wip/tools/sam/recipe.toml create mode 100644 recipes/wip/tools/tq/recipe.toml diff --git a/recipes/wip/dev/licensure/recipe.toml b/recipes/wip/dev/licensure/recipe.toml new file mode 100644 index 00000000..9d7fdab0 --- /dev/null +++ b/recipes/wip/dev/licensure/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/chasinglogic/licensure" +[build] +template = "cargo" diff --git a/recipes/wip/dev/precious/recipe.toml b/recipes/wip/dev/precious/recipe.toml new file mode 100644 index 00000000..8036581d --- /dev/null +++ b/recipes/wip/dev/precious/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/houseabsolute/precious" +[build] +template = "cargo" diff --git a/recipes/wip/finance/apcacli/recipe.toml b/recipes/wip/finance/apcacli/recipe.toml new file mode 100644 index 00000000..8782aa9a --- /dev/null +++ b/recipes/wip/finance/apcacli/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/d-e-s-o/apcacli" +[build] +template = "cargo" diff --git a/recipes/wip/games/tetromino/recipe.toml b/recipes/wip/games/tetromino/recipe.toml new file mode 100644 index 00000000..5bc28f71 --- /dev/null +++ b/recipes/wip/games/tetromino/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/d-e-s-o/tetromino" +[build] +template = "cargo" diff --git a/recipes/wip/graphics/dify/recipe.toml b/recipes/wip/graphics/dify/recipe.toml new file mode 100644 index 00000000..ca5050b3 --- /dev/null +++ b/recipes/wip/graphics/dify/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/jihchi/dify" +[build] +template = "cargo" diff --git a/recipes/wip/libs/libhidapi/recipe.toml b/recipes/wip/libs/libhidapi/recipe.toml new file mode 100644 index 00000000..2589679f --- /dev/null +++ b/recipes/wip/libs/libhidapi/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for CMake, see https://github.com/libusb/hidapi/blob/master/BUILD.cmake.md +[source] +git = "https://github.com/libusb/hidapi" +rev = "d3013f0af3f4029d82872c1a9487ea461a56dee4" +[build] +template = "custom" +dependencies = [ + "libiconv", +] diff --git a/recipes/wip/security/nitrocli/recipe.toml b/recipes/wip/security/nitrocli/recipe.toml new file mode 100644 index 00000000..d900ea32 --- /dev/null +++ b/recipes/wip/security/nitrocli/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/d-e-s-o/nitrocli" +[build] +template = "cargo" +dependencies = [ + "libhidapi", +] diff --git a/recipes/wip/tools/notnow/recipe.toml b/recipes/wip/tools/notnow/recipe.toml new file mode 100644 index 00000000..fe2e9ddc --- /dev/null +++ b/recipes/wip/tools/notnow/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/d-e-s-o/notnow" +[build] +template = "cargo" diff --git a/recipes/wip/tools/sam/recipe.toml b/recipes/wip/tools/sam/recipe.toml new file mode 100644 index 00000000..e64ecdb7 --- /dev/null +++ b/recipes/wip/tools/sam/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/r-zenine/sam" +[build] +template = "custom" +script = """ +cookbook_cargo_packages sam-cli +""" diff --git a/recipes/wip/tools/tq/recipe.toml b/recipes/wip/tools/tq/recipe.toml new file mode 100644 index 00000000..2dcef6e9 --- /dev/null +++ b/recipes/wip/tools/tq/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/cryptaliagy/tq-rs" +[build] +template = "cargo" From b5dd8a4ebf3b8677093a2741dd48ef664fde4ffb Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 11 May 2024 05:40:40 +0000 Subject: [PATCH 1749/3180] Add recipes --- recipes/wip/dev/alt/recipe.toml | 5 +++++ recipes/wip/dev/git-chain/recipe.toml | 5 +++++ recipes/wip/dev/git-repo-manager/recipe.toml | 5 +++++ recipes/wip/dev/knope/recipe.toml | 8 ++++++++ recipes/wip/dev/omni/recipe.toml | 5 +++++ recipes/wip/graphics/pilka/recipe.toml | 5 +++++ 6 files changed, 33 insertions(+) create mode 100644 recipes/wip/dev/alt/recipe.toml create mode 100644 recipes/wip/dev/git-chain/recipe.toml create mode 100644 recipes/wip/dev/git-repo-manager/recipe.toml create mode 100644 recipes/wip/dev/knope/recipe.toml create mode 100644 recipes/wip/dev/omni/recipe.toml create mode 100644 recipes/wip/graphics/pilka/recipe.toml diff --git a/recipes/wip/dev/alt/recipe.toml b/recipes/wip/dev/alt/recipe.toml new file mode 100644 index 00000000..b94637f6 --- /dev/null +++ b/recipes/wip/dev/alt/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/dotboris/alt" +[build] +template = "cargo" diff --git a/recipes/wip/dev/git-chain/recipe.toml b/recipes/wip/dev/git-chain/recipe.toml new file mode 100644 index 00000000..8ca1be28 --- /dev/null +++ b/recipes/wip/dev/git-chain/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/dashed/git-chain" +[build] +template = "cargo" diff --git a/recipes/wip/dev/git-repo-manager/recipe.toml b/recipes/wip/dev/git-repo-manager/recipe.toml new file mode 100644 index 00000000..f40c4586 --- /dev/null +++ b/recipes/wip/dev/git-repo-manager/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/hakoerber/git-repo-manager" +[build] +template = "cargo" diff --git a/recipes/wip/dev/knope/recipe.toml b/recipes/wip/dev/knope/recipe.toml new file mode 100644 index 00000000..1b3f8c92 --- /dev/null +++ b/recipes/wip/dev/knope/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/knope-dev/knope" +[build] +template = "custom" +script = """ +cookbook_cargo_packages knope +""" diff --git a/recipes/wip/dev/omni/recipe.toml b/recipes/wip/dev/omni/recipe.toml new file mode 100644 index 00000000..527c20a9 --- /dev/null +++ b/recipes/wip/dev/omni/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/XaF/omni" +[build] +template = "cargo" diff --git a/recipes/wip/graphics/pilka/recipe.toml b/recipes/wip/graphics/pilka/recipe.toml new file mode 100644 index 00000000..412fc14b --- /dev/null +++ b/recipes/wip/graphics/pilka/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/pudnax/pilka" +[build] +template = "cargo" From a8fff3d2157e63d2edaa5a808b21c65b0a5b4a16 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 11 May 2024 05:41:23 +0000 Subject: [PATCH 1750/3180] Update a recipe --- recipes/wip/benchmarks/rpc-perf/recipe.toml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/benchmarks/rpc-perf/recipe.toml b/recipes/wip/benchmarks/rpc-perf/recipe.toml index f251c9dd..2e08d05b 100644 --- a/recipes/wip/benchmarks/rpc-perf/recipe.toml +++ b/recipes/wip/benchmarks/rpc-perf/recipe.toml @@ -1,6 +1,5 @@ #TODO Not compiled or tested [source] -git = "https://github.com/twitter/rpc-perf" - +git = "https://github.com/iopsystems/rpc-perf" [build] template = "cargo" From b9b43f70434a01f0e3b35a4ea749b2699871a512 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 11 May 2024 10:19:39 +0000 Subject: [PATCH 1751/3180] Add recipes --- recipes/wip/tools/dfm/recipe.toml | 5 +++++ recipes/wip/tools/sigi/recipe.toml | 5 +++++ recipes/wip/tools/wethr/recipe.toml | 5 +++++ recipes/wip/tools/xdvdfs/recipe.toml | 8 ++++++++ 4 files changed, 23 insertions(+) create mode 100644 recipes/wip/tools/dfm/recipe.toml create mode 100644 recipes/wip/tools/sigi/recipe.toml create mode 100644 recipes/wip/tools/wethr/recipe.toml create mode 100644 recipes/wip/tools/xdvdfs/recipe.toml diff --git a/recipes/wip/tools/dfm/recipe.toml b/recipes/wip/tools/dfm/recipe.toml new file mode 100644 index 00000000..d0c4a322 --- /dev/null +++ b/recipes/wip/tools/dfm/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/chasinglogic/dfm" +[build] +template = "cargo" diff --git a/recipes/wip/tools/sigi/recipe.toml b/recipes/wip/tools/sigi/recipe.toml new file mode 100644 index 00000000..5e5aa2a6 --- /dev/null +++ b/recipes/wip/tools/sigi/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/sigi-cli/sigi" +[build] +template = "cargo" diff --git a/recipes/wip/tools/wethr/recipe.toml b/recipes/wip/tools/wethr/recipe.toml new file mode 100644 index 00000000..b8daba7e --- /dev/null +++ b/recipes/wip/tools/wethr/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/risoflora/wethr" +[build] +template = "cargo" diff --git a/recipes/wip/tools/xdvdfs/recipe.toml b/recipes/wip/tools/xdvdfs/recipe.toml new file mode 100644 index 00000000..22287ea1 --- /dev/null +++ b/recipes/wip/tools/xdvdfs/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/antangelo/xdvdfs" +[build] +template = "custom" +script = """ +cookbook_cargo_packages xdvdfs-cli +""" From d098bad2dcbd5edd14a092a92d01ab75f799fcef Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 12 May 2024 03:39:29 +0000 Subject: [PATCH 1752/3180] Add recipes --- recipes/wip/dev/alquitran/recipe.toml | 5 +++++ recipes/wip/dev/git-tools/recipe.toml | 5 +++++ recipes/wip/dev/necessist/recipe.toml | 11 +++++++++++ recipes/wip/dev/resym/recipe.toml | 8 ++++++++ recipes/wip/dev/sccache/recipe.toml | 5 +++++ recipes/wip/dev/wasmer/recipe.toml | 5 +++++ recipes/wip/net/arp-scanner/recipe.toml | 5 +++++ recipes/wip/security/apbf/recipe.toml | 5 +++++ recipes/wip/security/burrow/recipe.toml | 8 ++++++++ recipes/wip/tools/dotr/recipe.toml | 5 +++++ 10 files changed, 62 insertions(+) create mode 100644 recipes/wip/dev/alquitran/recipe.toml create mode 100644 recipes/wip/dev/git-tools/recipe.toml create mode 100644 recipes/wip/dev/necessist/recipe.toml create mode 100644 recipes/wip/dev/resym/recipe.toml create mode 100644 recipes/wip/dev/sccache/recipe.toml create mode 100644 recipes/wip/dev/wasmer/recipe.toml create mode 100644 recipes/wip/net/arp-scanner/recipe.toml create mode 100644 recipes/wip/security/apbf/recipe.toml create mode 100644 recipes/wip/security/burrow/recipe.toml create mode 100644 recipes/wip/tools/dotr/recipe.toml diff --git a/recipes/wip/dev/alquitran/recipe.toml b/recipes/wip/dev/alquitran/recipe.toml new file mode 100644 index 00000000..081dbeed --- /dev/null +++ b/recipes/wip/dev/alquitran/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ferivoz/alquitran" +[build] +template = "cargo" diff --git a/recipes/wip/dev/git-tools/recipe.toml b/recipes/wip/dev/git-tools/recipe.toml new file mode 100644 index 00000000..c61f957c --- /dev/null +++ b/recipes/wip/dev/git-tools/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/cecton/git-tools" +[build] +template = "cargo" diff --git a/recipes/wip/dev/necessist/recipe.toml b/recipes/wip/dev/necessist/recipe.toml new file mode 100644 index 00000000..e44760f0 --- /dev/null +++ b/recipes/wip/dev/necessist/recipe.toml @@ -0,0 +1,11 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/trailofbits/necessist" +[build] +template = "custom" +dependencies = [ + "sqlite3", +] +script = """ +cookbook_cargo_packages necessist +""" diff --git a/recipes/wip/dev/resym/recipe.toml b/recipes/wip/dev/resym/recipe.toml new file mode 100644 index 00000000..187ad973 --- /dev/null +++ b/recipes/wip/dev/resym/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ergrelet/resym" +[build] +template = "custom" +script = """ +cookbook_cargo_packages resym resymc +""" diff --git a/recipes/wip/dev/sccache/recipe.toml b/recipes/wip/dev/sccache/recipe.toml new file mode 100644 index 00000000..de3e0bc3 --- /dev/null +++ b/recipes/wip/dev/sccache/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/mozilla/sccache" +[build] +template = "cargo" diff --git a/recipes/wip/dev/wasmer/recipe.toml b/recipes/wip/dev/wasmer/recipe.toml new file mode 100644 index 00000000..0a915331 --- /dev/null +++ b/recipes/wip/dev/wasmer/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/wasmerio/wasmer" +[build] +template = "cargo" diff --git a/recipes/wip/net/arp-scanner/recipe.toml b/recipes/wip/net/arp-scanner/recipe.toml new file mode 100644 index 00000000..8bc0446d --- /dev/null +++ b/recipes/wip/net/arp-scanner/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/kongbytes/arp-scan-rs" +[build] +template = "cargo" diff --git a/recipes/wip/security/apbf/recipe.toml b/recipes/wip/security/apbf/recipe.toml new file mode 100644 index 00000000..c0af6e79 --- /dev/null +++ b/recipes/wip/security/apbf/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://gitlab.com/timvisee/apbf" +[build] +template = "cargo" diff --git a/recipes/wip/security/burrow/recipe.toml b/recipes/wip/security/burrow/recipe.toml new file mode 100644 index 00000000..19b3a43c --- /dev/null +++ b/recipes/wip/security/burrow/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/hackclub/burrow" +[build] +template = "custom" +script = """ +cookbook_cargo_packages burrow +""" diff --git a/recipes/wip/tools/dotr/recipe.toml b/recipes/wip/tools/dotr/recipe.toml new file mode 100644 index 00000000..7a26903c --- /dev/null +++ b/recipes/wip/tools/dotr/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/dpc/dotr" +[build] +template = "cargo" From d271ca3711dccc44b362fe45bc3b2ecb214595b6 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 12 May 2024 04:34:14 +0000 Subject: [PATCH 1753/3180] Add recipes --- recipes/wip/benchmarks/cargo-criterion/recipe.toml | 5 +++++ recipes/wip/dev/cargo-vendor-filterer/recipe.toml | 5 +++++ recipes/wip/dev/commit/recipe.toml | 5 +++++ recipes/wip/dev/gex/recipe.toml | 5 +++++ recipes/wip/dev/lading/recipe.toml | 8 ++++++++ recipes/wip/games/offline-chess-puzzles/recipe.toml | 5 +++++ recipes/wip/security/kanha/recipe.toml | 5 +++++ recipes/wip/tools/haylxon/recipe.toml | 5 +++++ recipes/wip/tools/patchelf/recipe.toml | 5 +++++ 9 files changed, 48 insertions(+) create mode 100644 recipes/wip/benchmarks/cargo-criterion/recipe.toml create mode 100644 recipes/wip/dev/cargo-vendor-filterer/recipe.toml create mode 100644 recipes/wip/dev/commit/recipe.toml create mode 100644 recipes/wip/dev/gex/recipe.toml create mode 100644 recipes/wip/dev/lading/recipe.toml create mode 100644 recipes/wip/games/offline-chess-puzzles/recipe.toml create mode 100644 recipes/wip/security/kanha/recipe.toml create mode 100644 recipes/wip/tools/haylxon/recipe.toml create mode 100644 recipes/wip/tools/patchelf/recipe.toml diff --git a/recipes/wip/benchmarks/cargo-criterion/recipe.toml b/recipes/wip/benchmarks/cargo-criterion/recipe.toml new file mode 100644 index 00000000..5e684034 --- /dev/null +++ b/recipes/wip/benchmarks/cargo-criterion/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/bheisler/cargo-criterion" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-vendor-filterer/recipe.toml b/recipes/wip/dev/cargo-vendor-filterer/recipe.toml new file mode 100644 index 00000000..e82569a5 --- /dev/null +++ b/recipes/wip/dev/cargo-vendor-filterer/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/coreos/cargo-vendor-filterer" +[build] +template = "cargo" diff --git a/recipes/wip/dev/commit/recipe.toml b/recipes/wip/dev/commit/recipe.toml new file mode 100644 index 00000000..a685242c --- /dev/null +++ b/recipes/wip/dev/commit/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/alt-art/commit" +[build] +template = "cargo" diff --git a/recipes/wip/dev/gex/recipe.toml b/recipes/wip/dev/gex/recipe.toml new file mode 100644 index 00000000..7ab5fb34 --- /dev/null +++ b/recipes/wip/dev/gex/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Piturnah/gex" +[build] +template = "cargo" diff --git a/recipes/wip/dev/lading/recipe.toml b/recipes/wip/dev/lading/recipe.toml new file mode 100644 index 00000000..940ca999 --- /dev/null +++ b/recipes/wip/dev/lading/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/DataDog/lading" +[build] +template = "custom" +script = """ +cookbook_cargo_packages lading +""" diff --git a/recipes/wip/games/offline-chess-puzzles/recipe.toml b/recipes/wip/games/offline-chess-puzzles/recipe.toml new file mode 100644 index 00000000..a679a4b5 --- /dev/null +++ b/recipes/wip/games/offline-chess-puzzles/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/brianch/offline-chess-puzzles" +[build] +template = "cargo" diff --git a/recipes/wip/security/kanha/recipe.toml b/recipes/wip/security/kanha/recipe.toml new file mode 100644 index 00000000..29019f60 --- /dev/null +++ b/recipes/wip/security/kanha/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/pwnwriter/kanha" +[build] +template = "cargo" diff --git a/recipes/wip/tools/haylxon/recipe.toml b/recipes/wip/tools/haylxon/recipe.toml new file mode 100644 index 00000000..38346aea --- /dev/null +++ b/recipes/wip/tools/haylxon/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/pwnwriter/haylxon" +[build] +template = "cargo" diff --git a/recipes/wip/tools/patchelf/recipe.toml b/recipes/wip/tools/patchelf/recipe.toml new file mode 100644 index 00000000..33c108fd --- /dev/null +++ b/recipes/wip/tools/patchelf/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://github.com/NixOS/patchelf/releases/download/0.18.0/patchelf-0.18.0.tar.bz2" +[build] +template = "configure" From ca8fcbca4f03c19144e17029201148a75f26191d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 12 May 2024 06:16:42 +0000 Subject: [PATCH 1754/3180] Add recipes --- recipes/wip/dev/pxp/recipe.toml | 8 ++++++++ recipes/wip/dev/pyrev/recipe.toml | 5 +++++ recipes/wip/doc/newdoc/recipe.toml | 5 +++++ recipes/wip/doc/tendril-wiki/recipe.toml | 8 ++++++++ recipes/wip/net/dqy/recipe.toml | 8 ++++++++ recipes/wip/security/stegano/recipe.toml | 8 ++++++++ recipes/wip/tools/bacup/recipe.toml | 6 ++++++ recipes/wip/tools/ruke/recipe.toml | 5 +++++ recipes/wip/tools/task-maker-rs/recipe.toml | 5 +++++ recipes/wip/tools/wayback-rs/recipe.toml | 5 +++++ 10 files changed, 63 insertions(+) create mode 100644 recipes/wip/dev/pxp/recipe.toml create mode 100644 recipes/wip/dev/pyrev/recipe.toml create mode 100644 recipes/wip/doc/newdoc/recipe.toml create mode 100644 recipes/wip/doc/tendril-wiki/recipe.toml create mode 100644 recipes/wip/net/dqy/recipe.toml create mode 100644 recipes/wip/security/stegano/recipe.toml create mode 100644 recipes/wip/tools/bacup/recipe.toml create mode 100644 recipes/wip/tools/ruke/recipe.toml create mode 100644 recipes/wip/tools/task-maker-rs/recipe.toml create mode 100644 recipes/wip/tools/wayback-rs/recipe.toml diff --git a/recipes/wip/dev/pxp/recipe.toml b/recipes/wip/dev/pxp/recipe.toml new file mode 100644 index 00000000..616f7bbf --- /dev/null +++ b/recipes/wip/dev/pxp/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/pxp-lang/pxp" +[build] +template = "custom" +script = """ +cookbook_cargo_packages pxp-tools +""" diff --git a/recipes/wip/dev/pyrev/recipe.toml b/recipes/wip/dev/pyrev/recipe.toml new file mode 100644 index 00000000..5b68664b --- /dev/null +++ b/recipes/wip/dev/pyrev/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/hacbit/pyrev" +[build] +template = "cargo" diff --git a/recipes/wip/doc/newdoc/recipe.toml b/recipes/wip/doc/newdoc/recipe.toml new file mode 100644 index 00000000..1bb42996 --- /dev/null +++ b/recipes/wip/doc/newdoc/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/redhat-documentation/newdoc" +[build] +template = "cargo" diff --git a/recipes/wip/doc/tendril-wiki/recipe.toml b/recipes/wip/doc/tendril-wiki/recipe.toml new file mode 100644 index 00000000..b7fc364a --- /dev/null +++ b/recipes/wip/doc/tendril-wiki/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/jamestthompson3/tendril-wiki" +[build] +template = "custom" +script = """ +cookbook_cargo_packages bin +""" diff --git a/recipes/wip/net/dqy/recipe.toml b/recipes/wip/net/dqy/recipe.toml new file mode 100644 index 00000000..aa30ae25 --- /dev/null +++ b/recipes/wip/net/dqy/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/dandyvica/dqy" +[build] +template = "custom" +script = """ +cookbook_cargo_packages dqy +""" diff --git a/recipes/wip/security/stegano/recipe.toml b/recipes/wip/security/stegano/recipe.toml new file mode 100644 index 00000000..9e8618d8 --- /dev/null +++ b/recipes/wip/security/stegano/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/steganogram/stegano-rs" +[build] +template = "custom" +script = """ +cookbook_cargo_packages stegano-cli +""" diff --git a/recipes/wip/tools/bacup/recipe.toml b/recipes/wip/tools/bacup/recipe.toml new file mode 100644 index 00000000..f0416671 --- /dev/null +++ b/recipes/wip/tools/bacup/recipe.toml @@ -0,0 +1,6 @@ +#TODO Not compiled or tested +#TODO create a service +[source] +git = "https://github.com/galeone/bacup" +[build] +template = "cargo" diff --git a/recipes/wip/tools/ruke/recipe.toml b/recipes/wip/tools/ruke/recipe.toml new file mode 100644 index 00000000..5377fbc3 --- /dev/null +++ b/recipes/wip/tools/ruke/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/kauefraga/ruke" +[build] +template = "cargo" diff --git a/recipes/wip/tools/task-maker-rs/recipe.toml b/recipes/wip/tools/task-maker-rs/recipe.toml new file mode 100644 index 00000000..d5440553 --- /dev/null +++ b/recipes/wip/tools/task-maker-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/edomora97/task-maker-rust" +[build] +template = "cargo" diff --git a/recipes/wip/tools/wayback-rs/recipe.toml b/recipes/wip/tools/wayback-rs/recipe.toml new file mode 100644 index 00000000..206d5264 --- /dev/null +++ b/recipes/wip/tools/wayback-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Neolex-Security/WaybackRust" +[build] +template = "cargo" From bf46ddd899ffa07ef150e0ce96013451a6808a64 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 12 May 2024 07:05:04 +0000 Subject: [PATCH 1755/3180] Add recipes --- recipes/wip/dev/cargo-temp/recipe.toml | 5 +++++ recipes/wip/dev/icemaker/recipe.toml | 5 +++++ recipes/wip/dev/protofetch/recipe.toml | 5 +++++ recipes/wip/graphics/dominant-colours/recipe.toml | 5 +++++ recipes/wip/graphics/rascii/recipe.toml | 5 +++++ recipes/wip/science/alevin-fry/recipe.toml | 5 +++++ recipes/wip/science/oarfish/recipe.toml | 5 +++++ recipes/wip/science/piscem/recipe.toml | 5 +++++ recipes/wip/science/simpleaf/recipe.toml | 5 +++++ recipes/wip/tools/dply/recipe.toml | 5 +++++ 10 files changed, 50 insertions(+) create mode 100644 recipes/wip/dev/cargo-temp/recipe.toml create mode 100644 recipes/wip/dev/icemaker/recipe.toml create mode 100644 recipes/wip/dev/protofetch/recipe.toml create mode 100644 recipes/wip/graphics/dominant-colours/recipe.toml create mode 100644 recipes/wip/graphics/rascii/recipe.toml create mode 100644 recipes/wip/science/alevin-fry/recipe.toml create mode 100644 recipes/wip/science/oarfish/recipe.toml create mode 100644 recipes/wip/science/piscem/recipe.toml create mode 100644 recipes/wip/science/simpleaf/recipe.toml create mode 100644 recipes/wip/tools/dply/recipe.toml diff --git a/recipes/wip/dev/cargo-temp/recipe.toml b/recipes/wip/dev/cargo-temp/recipe.toml new file mode 100644 index 00000000..77375da9 --- /dev/null +++ b/recipes/wip/dev/cargo-temp/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/yozhgoor/cargo-temp" +[build] +template = "cargo" diff --git a/recipes/wip/dev/icemaker/recipe.toml b/recipes/wip/dev/icemaker/recipe.toml new file mode 100644 index 00000000..0959582b --- /dev/null +++ b/recipes/wip/dev/icemaker/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/matthiaskrgr/icemaker" +[build] +template = "cargo" diff --git a/recipes/wip/dev/protofetch/recipe.toml b/recipes/wip/dev/protofetch/recipe.toml new file mode 100644 index 00000000..e3c3c110 --- /dev/null +++ b/recipes/wip/dev/protofetch/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/coralogix/protofetch" +[build] +template = "cargo" diff --git a/recipes/wip/graphics/dominant-colours/recipe.toml b/recipes/wip/graphics/dominant-colours/recipe.toml new file mode 100644 index 00000000..ba3dde09 --- /dev/null +++ b/recipes/wip/graphics/dominant-colours/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/alexwlchan/dominant_colours" +[build] +template = "cargo" diff --git a/recipes/wip/graphics/rascii/recipe.toml b/recipes/wip/graphics/rascii/recipe.toml new file mode 100644 index 00000000..2450966f --- /dev/null +++ b/recipes/wip/graphics/rascii/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/orhnk/RASCII" +[build] +template = "cargo" diff --git a/recipes/wip/science/alevin-fry/recipe.toml b/recipes/wip/science/alevin-fry/recipe.toml new file mode 100644 index 00000000..e529c491 --- /dev/null +++ b/recipes/wip/science/alevin-fry/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/COMBINE-lab/alevin-fry" +[build] +template = "cargo" diff --git a/recipes/wip/science/oarfish/recipe.toml b/recipes/wip/science/oarfish/recipe.toml new file mode 100644 index 00000000..7012f9e3 --- /dev/null +++ b/recipes/wip/science/oarfish/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/COMBINE-lab/oarfish" +[build] +template = "cargo" diff --git a/recipes/wip/science/piscem/recipe.toml b/recipes/wip/science/piscem/recipe.toml new file mode 100644 index 00000000..5096d0a2 --- /dev/null +++ b/recipes/wip/science/piscem/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/COMBINE-lab/piscem" +[build] +template = "cargo" diff --git a/recipes/wip/science/simpleaf/recipe.toml b/recipes/wip/science/simpleaf/recipe.toml new file mode 100644 index 00000000..af212504 --- /dev/null +++ b/recipes/wip/science/simpleaf/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/COMBINE-lab/simpleaf" +[build] +template = "cargo" diff --git a/recipes/wip/tools/dply/recipe.toml b/recipes/wip/tools/dply/recipe.toml new file mode 100644 index 00000000..eebee3f0 --- /dev/null +++ b/recipes/wip/tools/dply/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/vincev/dply-rs" +[build] +template = "cargo" From ab60a07ee32de567aa2939033d73f76bc2fa993d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 12 May 2024 07:22:56 +0000 Subject: [PATCH 1756/3180] Add recipes --- recipes/wip/dev/cargo-http-registry/recipe.toml | 5 +++++ recipes/wip/tools/caligula/recipe.toml | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 recipes/wip/dev/cargo-http-registry/recipe.toml create mode 100644 recipes/wip/tools/caligula/recipe.toml diff --git a/recipes/wip/dev/cargo-http-registry/recipe.toml b/recipes/wip/dev/cargo-http-registry/recipe.toml new file mode 100644 index 00000000..d2320b6f --- /dev/null +++ b/recipes/wip/dev/cargo-http-registry/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/d-e-s-o/cargo-http-registry" +[build] +template = "cargo" diff --git a/recipes/wip/tools/caligula/recipe.toml b/recipes/wip/tools/caligula/recipe.toml new file mode 100644 index 00000000..b4e44f90 --- /dev/null +++ b/recipes/wip/tools/caligula/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ifd3f/caligula" +[build] +template = "cargo" From b9e8b300ad7d319b5dcc439aa4f44f6c83922bc9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 12 May 2024 08:10:04 +0000 Subject: [PATCH 1757/3180] Add recipes --- recipes/wip/dev/cargo-all-features/recipe.toml | 5 +++++ recipes/wip/dev/cargo-careful/recipe.toml | 5 +++++ recipes/wip/dev/cargo-llvm-lines/recipe.toml | 5 +++++ recipes/wip/dev/cargo-public-api/recipe.toml | 8 ++++++++ recipes/wip/dev/cargo-spellcheck/recipe.toml | 5 +++++ recipes/wip/dev/cargo-supply-chain/recipe.toml | 5 +++++ recipes/wip/dev/cargo-tally/recipe.toml | 5 +++++ recipes/wip/dev/cargo-wizard/recipe.toml | 5 +++++ recipes/wip/dev/panamax/recipe.toml | 5 +++++ recipes/wip/dev/rust-script/recipe.toml | 5 +++++ recipes/wip/dev/scriptisto/recipe.toml | 5 +++++ 11 files changed, 58 insertions(+) create mode 100644 recipes/wip/dev/cargo-all-features/recipe.toml create mode 100644 recipes/wip/dev/cargo-careful/recipe.toml create mode 100644 recipes/wip/dev/cargo-llvm-lines/recipe.toml create mode 100644 recipes/wip/dev/cargo-public-api/recipe.toml create mode 100644 recipes/wip/dev/cargo-spellcheck/recipe.toml create mode 100644 recipes/wip/dev/cargo-supply-chain/recipe.toml create mode 100644 recipes/wip/dev/cargo-tally/recipe.toml create mode 100644 recipes/wip/dev/cargo-wizard/recipe.toml create mode 100644 recipes/wip/dev/panamax/recipe.toml create mode 100644 recipes/wip/dev/rust-script/recipe.toml create mode 100644 recipes/wip/dev/scriptisto/recipe.toml diff --git a/recipes/wip/dev/cargo-all-features/recipe.toml b/recipes/wip/dev/cargo-all-features/recipe.toml new file mode 100644 index 00000000..1575b32d --- /dev/null +++ b/recipes/wip/dev/cargo-all-features/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/frewsxcv/cargo-all-features" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-careful/recipe.toml b/recipes/wip/dev/cargo-careful/recipe.toml new file mode 100644 index 00000000..6d0bcf07 --- /dev/null +++ b/recipes/wip/dev/cargo-careful/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/RalfJung/cargo-careful" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-llvm-lines/recipe.toml b/recipes/wip/dev/cargo-llvm-lines/recipe.toml new file mode 100644 index 00000000..bf7b26b3 --- /dev/null +++ b/recipes/wip/dev/cargo-llvm-lines/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/dtolnay/cargo-llvm-lines" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-public-api/recipe.toml b/recipes/wip/dev/cargo-public-api/recipe.toml new file mode 100644 index 00000000..eb8fcaa6 --- /dev/null +++ b/recipes/wip/dev/cargo-public-api/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Enselic/cargo-public-api" +[build] +template = "custom" +script = """ +cookbook_cargo_packages cargo-public-api +""" diff --git a/recipes/wip/dev/cargo-spellcheck/recipe.toml b/recipes/wip/dev/cargo-spellcheck/recipe.toml new file mode 100644 index 00000000..3c846f83 --- /dev/null +++ b/recipes/wip/dev/cargo-spellcheck/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/drahnr/cargo-spellcheck" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-supply-chain/recipe.toml b/recipes/wip/dev/cargo-supply-chain/recipe.toml new file mode 100644 index 00000000..735281e5 --- /dev/null +++ b/recipes/wip/dev/cargo-supply-chain/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/rust-secure-code/cargo-supply-chain" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-tally/recipe.toml b/recipes/wip/dev/cargo-tally/recipe.toml new file mode 100644 index 00000000..d56583bd --- /dev/null +++ b/recipes/wip/dev/cargo-tally/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/dtolnay/cargo-tally" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-wizard/recipe.toml b/recipes/wip/dev/cargo-wizard/recipe.toml new file mode 100644 index 00000000..ed3d2f2b --- /dev/null +++ b/recipes/wip/dev/cargo-wizard/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Kobzol/cargo-wizard" +[build] +template = "cargo" diff --git a/recipes/wip/dev/panamax/recipe.toml b/recipes/wip/dev/panamax/recipe.toml new file mode 100644 index 00000000..3f70016c --- /dev/null +++ b/recipes/wip/dev/panamax/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/panamax-rs/panamax" +[build] +template = "cargo" diff --git a/recipes/wip/dev/rust-script/recipe.toml b/recipes/wip/dev/rust-script/recipe.toml new file mode 100644 index 00000000..e57bb3a8 --- /dev/null +++ b/recipes/wip/dev/rust-script/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/fornwall/rust-script" +[build] +template = "cargo" diff --git a/recipes/wip/dev/scriptisto/recipe.toml b/recipes/wip/dev/scriptisto/recipe.toml new file mode 100644 index 00000000..1c6e5f1b --- /dev/null +++ b/recipes/wip/dev/scriptisto/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/igor-petruk/scriptisto" +[build] +template = "cargo" From 6c8f7dd7b3edd04c28b545e4297e8cafe136eb65 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 12 May 2024 08:30:11 +0000 Subject: [PATCH 1758/3180] Add recipes --- recipes/wip/dev/cargo-bloat/recipe.toml | 5 +++++ recipes/wip/dev/cargo-dist/recipe.toml | 8 ++++++++ recipes/wip/dev/cargo-leptos/recipe.toml | 5 +++++ recipes/wip/dev/cargo-license/recipe.toml | 5 +++++ recipes/wip/dev/cargo-llvm-cov/recipe.toml | 5 +++++ recipes/wip/dev/cargo-modules/recipe.toml | 5 +++++ recipes/wip/dev/cargo-udeps/recipe.toml | 5 +++++ recipes/wip/dev/cargo-update/recipe.toml | 11 +++++++++++ recipes/wip/dev/ktra/recipe.toml | 5 +++++ recipes/wip/dev/twiggy/recipe.toml | 8 ++++++++ 10 files changed, 62 insertions(+) create mode 100644 recipes/wip/dev/cargo-bloat/recipe.toml create mode 100644 recipes/wip/dev/cargo-dist/recipe.toml create mode 100644 recipes/wip/dev/cargo-leptos/recipe.toml create mode 100644 recipes/wip/dev/cargo-license/recipe.toml create mode 100644 recipes/wip/dev/cargo-llvm-cov/recipe.toml create mode 100644 recipes/wip/dev/cargo-modules/recipe.toml create mode 100644 recipes/wip/dev/cargo-udeps/recipe.toml create mode 100644 recipes/wip/dev/cargo-update/recipe.toml create mode 100644 recipes/wip/dev/ktra/recipe.toml create mode 100644 recipes/wip/dev/twiggy/recipe.toml diff --git a/recipes/wip/dev/cargo-bloat/recipe.toml b/recipes/wip/dev/cargo-bloat/recipe.toml new file mode 100644 index 00000000..6052b926 --- /dev/null +++ b/recipes/wip/dev/cargo-bloat/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/RazrFalcon/cargo-bloat" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-dist/recipe.toml b/recipes/wip/dev/cargo-dist/recipe.toml new file mode 100644 index 00000000..05415867 --- /dev/null +++ b/recipes/wip/dev/cargo-dist/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/axodotdev/cargo-dist" +[build] +template = "custom" +script = """ +cookbook_cargo_packages cargo-dist +""" diff --git a/recipes/wip/dev/cargo-leptos/recipe.toml b/recipes/wip/dev/cargo-leptos/recipe.toml new file mode 100644 index 00000000..77b5c4d0 --- /dev/null +++ b/recipes/wip/dev/cargo-leptos/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/leptos-rs/cargo-leptos" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-license/recipe.toml b/recipes/wip/dev/cargo-license/recipe.toml new file mode 100644 index 00000000..8673e0e5 --- /dev/null +++ b/recipes/wip/dev/cargo-license/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/onur/cargo-license" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-llvm-cov/recipe.toml b/recipes/wip/dev/cargo-llvm-cov/recipe.toml new file mode 100644 index 00000000..725ccbd7 --- /dev/null +++ b/recipes/wip/dev/cargo-llvm-cov/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/taiki-e/cargo-llvm-cov" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-modules/recipe.toml b/recipes/wip/dev/cargo-modules/recipe.toml new file mode 100644 index 00000000..379cc1c6 --- /dev/null +++ b/recipes/wip/dev/cargo-modules/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/regexident/cargo-modules" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-udeps/recipe.toml b/recipes/wip/dev/cargo-udeps/recipe.toml new file mode 100644 index 00000000..0a0f7c25 --- /dev/null +++ b/recipes/wip/dev/cargo-udeps/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/est31/cargo-udeps" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-update/recipe.toml b/recipes/wip/dev/cargo-update/recipe.toml new file mode 100644 index 00000000..f5016b40 --- /dev/null +++ b/recipes/wip/dev/cargo-update/recipe.toml @@ -0,0 +1,11 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/nabijaczleweli/cargo-update" +[build] +template = "cargo" +dependencies = [ + "curl", + "openssl1", + "libssh2", + "libgit2", +] diff --git a/recipes/wip/dev/ktra/recipe.toml b/recipes/wip/dev/ktra/recipe.toml new file mode 100644 index 00000000..36ed8bc4 --- /dev/null +++ b/recipes/wip/dev/ktra/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/moriturus/ktra" +[build] +template = "cargo" diff --git a/recipes/wip/dev/twiggy/recipe.toml b/recipes/wip/dev/twiggy/recipe.toml new file mode 100644 index 00000000..11d05de4 --- /dev/null +++ b/recipes/wip/dev/twiggy/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/rustwasm/twiggy" +[build] +template = "custom" +script = """ +cookbook_cargo_packages twiggy +""" From ebbf7d3c8ee64041859b9e832de12792f70a0f7d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 12 May 2024 08:37:28 +0000 Subject: [PATCH 1759/3180] Add recipes --- recipes/wip/dev/cargo-edit/recipe.toml | 5 +++++ recipes/wip/dev/cargo-expand/recipe.toml | 5 +++++ recipes/wip/dev/cargo-feature/recipe.toml | 5 +++++ recipes/wip/dev/cargo-lambda/recipe.toml | 8 ++++++++ recipes/wip/dev/cargo-release/recipe.toml | 5 +++++ 5 files changed, 28 insertions(+) create mode 100644 recipes/wip/dev/cargo-edit/recipe.toml create mode 100644 recipes/wip/dev/cargo-expand/recipe.toml create mode 100644 recipes/wip/dev/cargo-feature/recipe.toml create mode 100644 recipes/wip/dev/cargo-lambda/recipe.toml create mode 100644 recipes/wip/dev/cargo-release/recipe.toml diff --git a/recipes/wip/dev/cargo-edit/recipe.toml b/recipes/wip/dev/cargo-edit/recipe.toml new file mode 100644 index 00000000..72ba49a1 --- /dev/null +++ b/recipes/wip/dev/cargo-edit/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/killercup/cargo-edit" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-expand/recipe.toml b/recipes/wip/dev/cargo-expand/recipe.toml new file mode 100644 index 00000000..c0d3619b --- /dev/null +++ b/recipes/wip/dev/cargo-expand/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/dtolnay/cargo-expand" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-feature/recipe.toml b/recipes/wip/dev/cargo-feature/recipe.toml new file mode 100644 index 00000000..bb4e3713 --- /dev/null +++ b/recipes/wip/dev/cargo-feature/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Riey/cargo-feature" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-lambda/recipe.toml b/recipes/wip/dev/cargo-lambda/recipe.toml new file mode 100644 index 00000000..aacaf669 --- /dev/null +++ b/recipes/wip/dev/cargo-lambda/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/cargo-lambda/cargo-lambda" +[build] +template = "custom" +script = """ +cookbook_cargo_packages cargo-lambda-cli +""" diff --git a/recipes/wip/dev/cargo-release/recipe.toml b/recipes/wip/dev/cargo-release/recipe.toml new file mode 100644 index 00000000..34efab75 --- /dev/null +++ b/recipes/wip/dev/cargo-release/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/crate-ci/cargo-release" +[build] +template = "cargo" From 9c9254a26596aca82a98ff67571edb99c708b733 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 15 May 2024 02:48:26 +0000 Subject: [PATCH 1760/3180] Update TODO --- recipes/wip/games/rbdoom3-bfg/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/games/rbdoom3-bfg/recipe.toml b/recipes/wip/games/rbdoom3-bfg/recipe.toml index 6e17d3ec..620794db 100644 --- a/recipes/wip/games/rbdoom3-bfg/recipe.toml +++ b/recipes/wip/games/rbdoom3-bfg/recipe.toml @@ -1,4 +1,5 @@ #TODO missing script for CMake, see https://github.com/RobertBeckebans/RBDOOM-3-BFG#compiling-on-linux- +#TODO require the Vulkan SDK, see https://vulkan.lunarg.com/ [source] git = "https://github.com/RobertBeckebans/RBDOOM-3-BFG" rev = "39ae1202b4e61ccb8d8e59609f5cd62b04a62a58" From fbbecfe1b60a43430ef9863838651bfd22f8ab46 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 15 May 2024 19:00:17 +0000 Subject: [PATCH 1761/3180] Add recipes --- recipes/wip/dev/cargo-checkmate/recipe.toml | 5 +++++ recipes/wip/dev/cargo-guppy/recipe.toml | 8 ++++++++ recipes/wip/dev/cargo-hakari/recipe.toml | 8 ++++++++ recipes/wip/dev/cargo-limit/recipe.toml | 5 +++++ recipes/wip/dev/cargo-rdme/recipe.toml | 5 +++++ recipes/wip/dev/cargo-wasix/recipe.toml | 5 +++++ recipes/wip/dev/gist-rs/recipe.toml | 5 +++++ recipes/wip/dev/gitlab-cargo-shim/recipe.toml | 5 +++++ recipes/wip/dev/rhack/recipe.toml | 5 +++++ recipes/wip/dev/stitch/recipe.toml | 5 +++++ recipes/wip/dev/wasmi/recipe.toml | 8 ++++++++ 11 files changed, 64 insertions(+) create mode 100644 recipes/wip/dev/cargo-checkmate/recipe.toml create mode 100644 recipes/wip/dev/cargo-guppy/recipe.toml create mode 100644 recipes/wip/dev/cargo-hakari/recipe.toml create mode 100644 recipes/wip/dev/cargo-limit/recipe.toml create mode 100644 recipes/wip/dev/cargo-rdme/recipe.toml create mode 100644 recipes/wip/dev/cargo-wasix/recipe.toml create mode 100644 recipes/wip/dev/gist-rs/recipe.toml create mode 100644 recipes/wip/dev/gitlab-cargo-shim/recipe.toml create mode 100644 recipes/wip/dev/rhack/recipe.toml create mode 100644 recipes/wip/dev/stitch/recipe.toml create mode 100644 recipes/wip/dev/wasmi/recipe.toml diff --git a/recipes/wip/dev/cargo-checkmate/recipe.toml b/recipes/wip/dev/cargo-checkmate/recipe.toml new file mode 100644 index 00000000..a90449c3 --- /dev/null +++ b/recipes/wip/dev/cargo-checkmate/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/cargo-checkmate/cargo-checkmate" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-guppy/recipe.toml b/recipes/wip/dev/cargo-guppy/recipe.toml new file mode 100644 index 00000000..b1023cbc --- /dev/null +++ b/recipes/wip/dev/cargo-guppy/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/guppy-rs/guppy" +[build] +template = "custom" +script = """ +cookbook_cargo_packages cargo-guppy +""" diff --git a/recipes/wip/dev/cargo-hakari/recipe.toml b/recipes/wip/dev/cargo-hakari/recipe.toml new file mode 100644 index 00000000..5a3e01d4 --- /dev/null +++ b/recipes/wip/dev/cargo-hakari/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/guppy-rs/guppy" +[build] +template = "custom" +script = """ +cookbook_cargo_packages cargo-hakari +""" diff --git a/recipes/wip/dev/cargo-limit/recipe.toml b/recipes/wip/dev/cargo-limit/recipe.toml new file mode 100644 index 00000000..82e7be32 --- /dev/null +++ b/recipes/wip/dev/cargo-limit/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/cargo-limit/cargo-limit" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-rdme/recipe.toml b/recipes/wip/dev/cargo-rdme/recipe.toml new file mode 100644 index 00000000..b63566cf --- /dev/null +++ b/recipes/wip/dev/cargo-rdme/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/orium/cargo-rdme" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-wasix/recipe.toml b/recipes/wip/dev/cargo-wasix/recipe.toml new file mode 100644 index 00000000..1aeb180b --- /dev/null +++ b/recipes/wip/dev/cargo-wasix/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/wasix-org/cargo-wasix" +[build] +template = "cargo" diff --git a/recipes/wip/dev/gist-rs/recipe.toml b/recipes/wip/dev/gist-rs/recipe.toml new file mode 100644 index 00000000..29abdf65 --- /dev/null +++ b/recipes/wip/dev/gist-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/oz/gist" +[build] +template = "cargo" diff --git a/recipes/wip/dev/gitlab-cargo-shim/recipe.toml b/recipes/wip/dev/gitlab-cargo-shim/recipe.toml new file mode 100644 index 00000000..30868a9f --- /dev/null +++ b/recipes/wip/dev/gitlab-cargo-shim/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/w4/gitlab-cargo-shim" +[build] +template = "cargo" diff --git a/recipes/wip/dev/rhack/recipe.toml b/recipes/wip/dev/rhack/recipe.toml new file mode 100644 index 00000000..03eed4da --- /dev/null +++ b/recipes/wip/dev/rhack/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/nakabonne/rhack" +[build] +template = "cargo" diff --git a/recipes/wip/dev/stitch/recipe.toml b/recipes/wip/dev/stitch/recipe.toml new file mode 100644 index 00000000..989da3af --- /dev/null +++ b/recipes/wip/dev/stitch/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/makepad/stitch" +[build] +template = "cargo" diff --git a/recipes/wip/dev/wasmi/recipe.toml b/recipes/wip/dev/wasmi/recipe.toml new file mode 100644 index 00000000..5e2d820f --- /dev/null +++ b/recipes/wip/dev/wasmi/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/wasmi-labs/wasmi" +[build] +template = "custom" +script = """ +cookbook_cargo_packages wasmi_cli +""" From ebb7692080839ce55bdbb63e337e9e0b947afea9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 15 May 2024 19:08:14 +0000 Subject: [PATCH 1762/3180] Add recipes --- recipes/wip/dev/cargo-clone/recipe.toml | 8 ++++++++ recipes/wip/dev/cargo-patch/recipe.toml | 5 +++++ 2 files changed, 13 insertions(+) create mode 100644 recipes/wip/dev/cargo-clone/recipe.toml create mode 100644 recipes/wip/dev/cargo-patch/recipe.toml diff --git a/recipes/wip/dev/cargo-clone/recipe.toml b/recipes/wip/dev/cargo-clone/recipe.toml new file mode 100644 index 00000000..cc70d6c0 --- /dev/null +++ b/recipes/wip/dev/cargo-clone/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/JanLikar/cargo-clone" +[build] +template = "custom" +script = """ +cookbook_cargo_packages cargo-clone +""" diff --git a/recipes/wip/dev/cargo-patch/recipe.toml b/recipes/wip/dev/cargo-patch/recipe.toml new file mode 100644 index 00000000..0f647cbf --- /dev/null +++ b/recipes/wip/dev/cargo-patch/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/itmettkeDE/cargo-patch" +[build] +template = "cargo" From 3aad334fa49dfe4aa7890ea5c3da4bfd3966bd60 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 16 May 2024 07:46:16 +0000 Subject: [PATCH 1763/3180] Add recipes --- recipes/wip/dev/cargo-docs-rs/recipe.toml | 5 +++++ recipes/wip/dev/cargo-hackerman/recipe.toml | 5 +++++ recipes/wip/dev/cargo-multivers/recipe.toml | 5 +++++ recipes/wip/dev/cargo-px/recipe.toml | 5 +++++ recipes/wip/dev/cargo-shear/recipe.toml | 5 +++++ recipes/wip/dev/cargo-trim/recipe.toml | 5 +++++ recipes/wip/dev/cargo-unfmt/recipe.toml | 5 +++++ recipes/wip/dev/cargo-unmaintained/recipe.toml | 5 +++++ recipes/wip/security/cargo-scan/recipe.toml | 5 +++++ 9 files changed, 45 insertions(+) create mode 100644 recipes/wip/dev/cargo-docs-rs/recipe.toml create mode 100644 recipes/wip/dev/cargo-hackerman/recipe.toml create mode 100644 recipes/wip/dev/cargo-multivers/recipe.toml create mode 100644 recipes/wip/dev/cargo-px/recipe.toml create mode 100644 recipes/wip/dev/cargo-shear/recipe.toml create mode 100644 recipes/wip/dev/cargo-trim/recipe.toml create mode 100644 recipes/wip/dev/cargo-unfmt/recipe.toml create mode 100644 recipes/wip/dev/cargo-unmaintained/recipe.toml create mode 100644 recipes/wip/security/cargo-scan/recipe.toml diff --git a/recipes/wip/dev/cargo-docs-rs/recipe.toml b/recipes/wip/dev/cargo-docs-rs/recipe.toml new file mode 100644 index 00000000..6570a407 --- /dev/null +++ b/recipes/wip/dev/cargo-docs-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/dtolnay/cargo-docs-rs" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-hackerman/recipe.toml b/recipes/wip/dev/cargo-hackerman/recipe.toml new file mode 100644 index 00000000..5bb6b7f4 --- /dev/null +++ b/recipes/wip/dev/cargo-hackerman/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/pacak/hackerman" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-multivers/recipe.toml b/recipes/wip/dev/cargo-multivers/recipe.toml new file mode 100644 index 00000000..db28a44a --- /dev/null +++ b/recipes/wip/dev/cargo-multivers/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ronnychevalier/cargo-multivers" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-px/recipe.toml b/recipes/wip/dev/cargo-px/recipe.toml new file mode 100644 index 00000000..ded1090d --- /dev/null +++ b/recipes/wip/dev/cargo-px/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/LukeMathWalker/cargo-px" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-shear/recipe.toml b/recipes/wip/dev/cargo-shear/recipe.toml new file mode 100644 index 00000000..8e9619a6 --- /dev/null +++ b/recipes/wip/dev/cargo-shear/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Boshen/cargo-shear" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-trim/recipe.toml b/recipes/wip/dev/cargo-trim/recipe.toml new file mode 100644 index 00000000..36e15b27 --- /dev/null +++ b/recipes/wip/dev/cargo-trim/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/iamsauravsharma/cargo-trim" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-unfmt/recipe.toml b/recipes/wip/dev/cargo-unfmt/recipe.toml new file mode 100644 index 00000000..6897501a --- /dev/null +++ b/recipes/wip/dev/cargo-unfmt/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/fprasx/cargo-unfmt" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-unmaintained/recipe.toml b/recipes/wip/dev/cargo-unmaintained/recipe.toml new file mode 100644 index 00000000..99138612 --- /dev/null +++ b/recipes/wip/dev/cargo-unmaintained/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/trailofbits/cargo-unmaintained" +[build] +template = "cargo" diff --git a/recipes/wip/security/cargo-scan/recipe.toml b/recipes/wip/security/cargo-scan/recipe.toml new file mode 100644 index 00000000..b5289b51 --- /dev/null +++ b/recipes/wip/security/cargo-scan/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/PLSysSec/cargo-scan" +[build] +template = "cargo" From dd50567cb54b9d4af8885baeacc921656a81b95a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 17 May 2024 09:28:09 -0600 Subject: [PATCH 1764/3180] Add dejavu fonts --- recipes/fonts/dejavu/recipe.toml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 recipes/fonts/dejavu/recipe.toml diff --git a/recipes/fonts/dejavu/recipe.toml b/recipes/fonts/dejavu/recipe.toml new file mode 100644 index 00000000..d89e20e2 --- /dev/null +++ b/recipes/fonts/dejavu/recipe.toml @@ -0,0 +1,11 @@ +[source] +tar="http://sourceforge.net/projects/dejavu/files/dejavu/2.37/dejavu-fonts-ttf-2.37.tar.bz2" +blake3="b702bac8a0f8e0802758549da3b4d8041c3c83c3894e1e8a960eab53af18cce8" + +[build] +template = "custom" +script = """ +DEST="${COOKBOOK_STAGE}/usr/share/fonts/truetype/dejavu" +mkdir -pv "${DEST}" +cp -v "${COOKBOOK_SOURCE}/ttf/"* "${DEST}" +""" From 01dff4922302814e338660f95ba29caff9f67b4f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 17 May 2024 09:32:53 -0600 Subject: [PATCH 1765/3180] dejavu: install to /ui/fonts --- recipes/fonts/dejavu/recipe.toml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/recipes/fonts/dejavu/recipe.toml b/recipes/fonts/dejavu/recipe.toml index d89e20e2..c97c6db1 100644 --- a/recipes/fonts/dejavu/recipe.toml +++ b/recipes/fonts/dejavu/recipe.toml @@ -5,7 +5,11 @@ blake3="b702bac8a0f8e0802758549da3b4d8041c3c83c3894e1e8a960eab53af18cce8" [build] template = "custom" script = """ -DEST="${COOKBOOK_STAGE}/usr/share/fonts/truetype/dejavu" -mkdir -pv "${DEST}" -cp -v "${COOKBOOK_SOURCE}/ttf/"* "${DEST}" +#TODO: Mono style included in Sans directory +for style in Sans Serif +do + DEST="${COOKBOOK_STAGE}/ui/fonts/${style}/DejaVu" + mkdir -pv "${DEST}" + cp -v "${COOKBOOK_SOURCE}/ttf/DejaVu${style}"*".ttf" "${DEST}" +done """ From 95cbdc87ec9b53a767173b213661a6d5a54f1893 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 17 May 2024 22:51:21 +0000 Subject: [PATCH 1766/3180] Add a recipe --- recipes/wip/dev/coq-of-rust/recipe.toml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 recipes/wip/dev/coq-of-rust/recipe.toml diff --git a/recipes/wip/dev/coq-of-rust/recipe.toml b/recipes/wip/dev/coq-of-rust/recipe.toml new file mode 100644 index 00000000..6d89cfbe --- /dev/null +++ b/recipes/wip/dev/coq-of-rust/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/formal-land/coq-of-rust" +[build] +template = "custom" +script = """ +cookbook_cargo_packages lib cli +""" From a652fbc0a99aa0051efca44a1ab77faad2e7f4e4 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 17 May 2024 23:26:01 +0000 Subject: [PATCH 1767/3180] Add recipes --- recipes/wip/benchmarks/glassbench/recipe.toml | 5 +++++ recipes/wip/dev/cargo-clone-crate/recipe.toml | 5 +++++ recipes/wip/dev/cargo-get/recipe.toml | 5 +++++ recipes/wip/dev/cargo-qtest/recipe.toml | 5 +++++ recipes/wip/dev/cargo-whatfeatures/recipe.toml | 8 ++++++++ recipes/wip/dev/kondo/recipe.toml | 8 ++++++++ recipes/wip/dev/rust-to-npm/recipe.toml | 8 ++++++++ 7 files changed, 44 insertions(+) create mode 100644 recipes/wip/benchmarks/glassbench/recipe.toml create mode 100644 recipes/wip/dev/cargo-clone-crate/recipe.toml create mode 100644 recipes/wip/dev/cargo-get/recipe.toml create mode 100644 recipes/wip/dev/cargo-qtest/recipe.toml create mode 100644 recipes/wip/dev/cargo-whatfeatures/recipe.toml create mode 100644 recipes/wip/dev/kondo/recipe.toml create mode 100644 recipes/wip/dev/rust-to-npm/recipe.toml diff --git a/recipes/wip/benchmarks/glassbench/recipe.toml b/recipes/wip/benchmarks/glassbench/recipe.toml new file mode 100644 index 00000000..d9365c2d --- /dev/null +++ b/recipes/wip/benchmarks/glassbench/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Canop/glassbench" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-clone-crate/recipe.toml b/recipes/wip/dev/cargo-clone-crate/recipe.toml new file mode 100644 index 00000000..676829b5 --- /dev/null +++ b/recipes/wip/dev/cargo-clone-crate/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ehuss/cargo-clone-crate" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-get/recipe.toml b/recipes/wip/dev/cargo-get/recipe.toml new file mode 100644 index 00000000..e37c8e1d --- /dev/null +++ b/recipes/wip/dev/cargo-get/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/nicolaiunrein/cargo-get" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-qtest/recipe.toml b/recipes/wip/dev/cargo-qtest/recipe.toml new file mode 100644 index 00000000..ad3c7c4a --- /dev/null +++ b/recipes/wip/dev/cargo-qtest/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/onur-ozkan/cargo-qtest" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-whatfeatures/recipe.toml b/recipes/wip/dev/cargo-whatfeatures/recipe.toml new file mode 100644 index 00000000..c263e47e --- /dev/null +++ b/recipes/wip/dev/cargo-whatfeatures/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/museun/cargo-whatfeatures" +[build] +template = "custom" +script = """ +cookbook_cargo --features rustls +""" diff --git a/recipes/wip/dev/kondo/recipe.toml b/recipes/wip/dev/kondo/recipe.toml new file mode 100644 index 00000000..b6cd907c --- /dev/null +++ b/recipes/wip/dev/kondo/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/tbillington/kondo" +[build] +template = "custom" +script = """ +cookbook_cargo_packages kondo +""" diff --git a/recipes/wip/dev/rust-to-npm/recipe.toml b/recipes/wip/dev/rust-to-npm/recipe.toml new file mode 100644 index 00000000..d0981895 --- /dev/null +++ b/recipes/wip/dev/rust-to-npm/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/a11ywatch/rust-to-npm" +[build] +template = "custom" +script = """ +cookbook_cargo_packages cli +""" From e5ae609e9fe87df184f9e19cf4c5a05526b16d54 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 19 May 2024 01:38:08 +0000 Subject: [PATCH 1768/3180] Add recipes --- recipes/wip/dev/cargo-auto/recipe.toml | 5 +++++ recipes/wip/dev/cargo-depsize/recipe.toml | 5 +++++ recipes/wip/dev/cargo-feature-combinations/recipe.toml | 5 +++++ recipes/wip/dev/cargo-ft/recipe.toml | 5 +++++ recipes/wip/dev/cargo-list/recipe.toml | 5 +++++ recipes/wip/dev/cargo-lockup/recipe.toml | 5 +++++ recipes/wip/dev/cargo-selector/recipe.toml | 5 +++++ recipes/wip/dev/cargo-workspace-version/recipe.toml | 5 +++++ recipes/wip/dev/margo/recipe.toml | 5 +++++ recipes/wip/tools/byteblitz/recipe.toml | 5 +++++ 10 files changed, 50 insertions(+) create mode 100644 recipes/wip/dev/cargo-auto/recipe.toml create mode 100644 recipes/wip/dev/cargo-depsize/recipe.toml create mode 100644 recipes/wip/dev/cargo-feature-combinations/recipe.toml create mode 100644 recipes/wip/dev/cargo-ft/recipe.toml create mode 100644 recipes/wip/dev/cargo-list/recipe.toml create mode 100644 recipes/wip/dev/cargo-lockup/recipe.toml create mode 100644 recipes/wip/dev/cargo-selector/recipe.toml create mode 100644 recipes/wip/dev/cargo-workspace-version/recipe.toml create mode 100644 recipes/wip/dev/margo/recipe.toml create mode 100644 recipes/wip/tools/byteblitz/recipe.toml diff --git a/recipes/wip/dev/cargo-auto/recipe.toml b/recipes/wip/dev/cargo-auto/recipe.toml new file mode 100644 index 00000000..710ea3b7 --- /dev/null +++ b/recipes/wip/dev/cargo-auto/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/automation-tasks-rs/cargo-auto" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-depsize/recipe.toml b/recipes/wip/dev/cargo-depsize/recipe.toml new file mode 100644 index 00000000..31dbae49 --- /dev/null +++ b/recipes/wip/dev/cargo-depsize/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Alfex4936/cargo-depsize" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-feature-combinations/recipe.toml b/recipes/wip/dev/cargo-feature-combinations/recipe.toml new file mode 100644 index 00000000..9151eb05 --- /dev/null +++ b/recipes/wip/dev/cargo-feature-combinations/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/romnn/cargo-feature-combinations" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-ft/recipe.toml b/recipes/wip/dev/cargo-ft/recipe.toml new file mode 100644 index 00000000..f9a14468 --- /dev/null +++ b/recipes/wip/dev/cargo-ft/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/stormshield/cargo-ft" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-list/recipe.toml b/recipes/wip/dev/cargo-list/recipe.toml new file mode 100644 index 00000000..cc318f01 --- /dev/null +++ b/recipes/wip/dev/cargo-list/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/qtfkwk/cargo-list" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-lockup/recipe.toml b/recipes/wip/dev/cargo-lockup/recipe.toml new file mode 100644 index 00000000..ad1e8b9d --- /dev/null +++ b/recipes/wip/dev/cargo-lockup/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/collinoc/cargo-lookup" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-selector/recipe.toml b/recipes/wip/dev/cargo-selector/recipe.toml new file mode 100644 index 00000000..df47eede --- /dev/null +++ b/recipes/wip/dev/cargo-selector/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/lusingander/cargo-selector" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-workspace-version/recipe.toml b/recipes/wip/dev/cargo-workspace-version/recipe.toml new file mode 100644 index 00000000..2e5e25f2 --- /dev/null +++ b/recipes/wip/dev/cargo-workspace-version/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ava-labs/cargo-workspace-version" +[build] +template = "cargo" diff --git a/recipes/wip/dev/margo/recipe.toml b/recipes/wip/dev/margo/recipe.toml new file mode 100644 index 00000000..f12d0d03 --- /dev/null +++ b/recipes/wip/dev/margo/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/integer32llc/margo" +[build] +template = "cargo" diff --git a/recipes/wip/tools/byteblitz/recipe.toml b/recipes/wip/tools/byteblitz/recipe.toml new file mode 100644 index 00000000..5fc94502 --- /dev/null +++ b/recipes/wip/tools/byteblitz/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/noahra/byteblitz" +[build] +template = "cargo" From 6fd95ac36cd14dc3b7d925c314d21e47a7b56d76 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 19 May 2024 02:19:37 +0000 Subject: [PATCH 1769/3180] Add recipes --- recipes/wip/dev/cargo-attribution/recipe.toml | 5 +++++ recipes/wip/dev/cargo-check-deadlock/recipe.toml | 5 +++++ recipes/wip/dev/cargo-docs/recipe.toml | 5 +++++ recipes/wip/dev/cargo-duplicates/recipe.toml | 5 +++++ recipes/wip/dev/cargo-featalign/recipe.toml | 5 +++++ recipes/wip/dev/cargo-gc/recipe.toml | 5 +++++ recipes/wip/dev/cargo-leet/recipe.toml | 5 +++++ recipes/wip/dev/cargo-single-line/recipe.toml | 5 +++++ recipes/wip/dev/cargo-sync-rdme/recipe.toml | 5 +++++ recipes/wip/dev/cargo-trend/recipe.toml | 5 +++++ recipes/wip/dev/ecargo/recipe.toml | 5 +++++ recipes/wip/dev/lockdiff/recipe.toml | 5 +++++ 12 files changed, 60 insertions(+) create mode 100644 recipes/wip/dev/cargo-attribution/recipe.toml create mode 100644 recipes/wip/dev/cargo-check-deadlock/recipe.toml create mode 100644 recipes/wip/dev/cargo-docs/recipe.toml create mode 100644 recipes/wip/dev/cargo-duplicates/recipe.toml create mode 100644 recipes/wip/dev/cargo-featalign/recipe.toml create mode 100644 recipes/wip/dev/cargo-gc/recipe.toml create mode 100644 recipes/wip/dev/cargo-leet/recipe.toml create mode 100644 recipes/wip/dev/cargo-single-line/recipe.toml create mode 100644 recipes/wip/dev/cargo-sync-rdme/recipe.toml create mode 100644 recipes/wip/dev/cargo-trend/recipe.toml create mode 100644 recipes/wip/dev/ecargo/recipe.toml create mode 100644 recipes/wip/dev/lockdiff/recipe.toml diff --git a/recipes/wip/dev/cargo-attribution/recipe.toml b/recipes/wip/dev/cargo-attribution/recipe.toml new file mode 100644 index 00000000..63ca7144 --- /dev/null +++ b/recipes/wip/dev/cargo-attribution/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ameknite/cargo-attribution" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-check-deadlock/recipe.toml b/recipes/wip/dev/cargo-check-deadlock/recipe.toml new file mode 100644 index 00000000..001253e0 --- /dev/null +++ b/recipes/wip/dev/cargo-check-deadlock/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/hlisdero/cargo-check-deadlock" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-docs/recipe.toml b/recipes/wip/dev/cargo-docs/recipe.toml new file mode 100644 index 00000000..230df133 --- /dev/null +++ b/recipes/wip/dev/cargo-docs/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/btwiuse/cargo-docs" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-duplicates/recipe.toml b/recipes/wip/dev/cargo-duplicates/recipe.toml new file mode 100644 index 00000000..c0150263 --- /dev/null +++ b/recipes/wip/dev/cargo-duplicates/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Keruspe/cargo-duplicates" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-featalign/recipe.toml b/recipes/wip/dev/cargo-featalign/recipe.toml new file mode 100644 index 00000000..880931a9 --- /dev/null +++ b/recipes/wip/dev/cargo-featalign/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/hack-ink/cargo-featalign" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-gc/recipe.toml b/recipes/wip/dev/cargo-gc/recipe.toml new file mode 100644 index 00000000..e5d2e85a --- /dev/null +++ b/recipes/wip/dev/cargo-gc/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/waynexia/cargo-gc" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-leet/recipe.toml b/recipes/wip/dev/cargo-leet/recipe.toml new file mode 100644 index 00000000..49941b4e --- /dev/null +++ b/recipes/wip/dev/cargo-leet/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/rust-practice/cargo-leet" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-single-line/recipe.toml b/recipes/wip/dev/cargo-single-line/recipe.toml new file mode 100644 index 00000000..f6e16f5d --- /dev/null +++ b/recipes/wip/dev/cargo-single-line/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/mexus/cargo-single-line" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-sync-rdme/recipe.toml b/recipes/wip/dev/cargo-sync-rdme/recipe.toml new file mode 100644 index 00000000..2d1ff6f5 --- /dev/null +++ b/recipes/wip/dev/cargo-sync-rdme/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/gifnksm/cargo-sync-rdme" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-trend/recipe.toml b/recipes/wip/dev/cargo-trend/recipe.toml new file mode 100644 index 00000000..17dc0d5d --- /dev/null +++ b/recipes/wip/dev/cargo-trend/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/dalance/cargo-trend" +[build] +template = "cargo" diff --git a/recipes/wip/dev/ecargo/recipe.toml b/recipes/wip/dev/ecargo/recipe.toml new file mode 100644 index 00000000..9c0e0de3 --- /dev/null +++ b/recipes/wip/dev/ecargo/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/crumblingstatue/ecargo" +[build] +template = "cargo" diff --git a/recipes/wip/dev/lockdiff/recipe.toml b/recipes/wip/dev/lockdiff/recipe.toml new file mode 100644 index 00000000..c01e0795 --- /dev/null +++ b/recipes/wip/dev/lockdiff/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/your-tools/lockdiff" +[build] +template = "cargo" From 661d05771116698a03f676f7180d0cd742dc174b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 19 May 2024 02:42:46 +0000 Subject: [PATCH 1770/3180] Add recipes --- recipes/wip/dev/cargo-derivefmt/recipe.toml | 8 ++++++++ recipes/wip/dev/cargo-files/recipe.toml | 8 ++++++++ recipes/wip/dev/cargo-fixture/recipe.toml | 5 +++++ recipes/wip/dev/cargo-loc/recipe.toml | 5 +++++ recipes/wip/dev/zepter/recipe.toml | 5 +++++ recipes/wip/finance/cargo-fund/recipe.toml | 5 +++++ 6 files changed, 36 insertions(+) create mode 100644 recipes/wip/dev/cargo-derivefmt/recipe.toml create mode 100644 recipes/wip/dev/cargo-files/recipe.toml create mode 100644 recipes/wip/dev/cargo-fixture/recipe.toml create mode 100644 recipes/wip/dev/cargo-loc/recipe.toml create mode 100644 recipes/wip/dev/zepter/recipe.toml create mode 100644 recipes/wip/finance/cargo-fund/recipe.toml diff --git a/recipes/wip/dev/cargo-derivefmt/recipe.toml b/recipes/wip/dev/cargo-derivefmt/recipe.toml new file mode 100644 index 00000000..64e26180 --- /dev/null +++ b/recipes/wip/dev/cargo-derivefmt/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/dcchut/cargo-derivefmt" +[build] +template = "custom" +script = """ +cookbook_cargo_packages cargo-derivefmt +""" diff --git a/recipes/wip/dev/cargo-files/recipe.toml b/recipes/wip/dev/cargo-files/recipe.toml new file mode 100644 index 00000000..c092ce7b --- /dev/null +++ b/recipes/wip/dev/cargo-files/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/dcchut/cargo-files" +[build] +template = "custom" +script = """ +cookbook_cargo_packages cargo-files +""" diff --git a/recipes/wip/dev/cargo-fixture/recipe.toml b/recipes/wip/dev/cargo-fixture/recipe.toml new file mode 100644 index 00000000..b0a7a83a --- /dev/null +++ b/recipes/wip/dev/cargo-fixture/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/vojtechkral/cargo-fixture" +[build] +template = "cargo" diff --git a/recipes/wip/dev/cargo-loc/recipe.toml b/recipes/wip/dev/cargo-loc/recipe.toml new file mode 100644 index 00000000..d2261b84 --- /dev/null +++ b/recipes/wip/dev/cargo-loc/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Shnatsel/cargo-loc" +[build] +template = "cargo" diff --git a/recipes/wip/dev/zepter/recipe.toml b/recipes/wip/dev/zepter/recipe.toml new file mode 100644 index 00000000..8f888c6e --- /dev/null +++ b/recipes/wip/dev/zepter/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/ggwpez/zepter" +[build] +template = "cargo" diff --git a/recipes/wip/finance/cargo-fund/recipe.toml b/recipes/wip/finance/cargo-fund/recipe.toml new file mode 100644 index 00000000..1b5697be --- /dev/null +++ b/recipes/wip/finance/cargo-fund/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/acfoltzer/cargo-fund" +[build] +template = "cargo" From 3db63b9024bd93e69c54f4b9c5b586b63e7053be Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 27 May 2024 08:59:28 -0600 Subject: [PATCH 1771/3180] Add cosmic-reader --- recipes/tools/cosmic-reader/manifest | 6 ++++++ recipes/tools/cosmic-reader/recipe.toml | 11 +++++++++++ 2 files changed, 17 insertions(+) create mode 100644 recipes/tools/cosmic-reader/manifest create mode 100644 recipes/tools/cosmic-reader/recipe.toml diff --git a/recipes/tools/cosmic-reader/manifest b/recipes/tools/cosmic-reader/manifest new file mode 100644 index 00000000..99f5ab65 --- /dev/null +++ b/recipes/tools/cosmic-reader/manifest @@ -0,0 +1,6 @@ +name=COSMIC Reader +binary=/bin/cosmic-reader +icon=/ui/icons/apps/accessories-text-editor.png +accept=*.pdf +author=Jeremy Soller +description=COSMIC Reader diff --git a/recipes/tools/cosmic-reader/recipe.toml b/recipes/tools/cosmic-reader/recipe.toml new file mode 100644 index 00000000..14635d13 --- /dev/null +++ b/recipes/tools/cosmic-reader/recipe.toml @@ -0,0 +1,11 @@ +[source] +git = "https://github.com/pop-os/cosmic-reader.git" +branch = "master" + +[build] +template = "custom" +script = """ +cookbook_cargo --no-default-features +mkdir -pv "${COOKBOOK_STAGE}/ui/apps" +cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/40_cosmic-reader" +""" From 09f6ea4b5e5e865a48ce25d0df80373a321742e8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 27 May 2024 09:39:45 -0600 Subject: [PATCH 1772/3180] Update dependencies --- Cargo.lock | 152 ++++++++++++++++++++++++++--------------------------- 1 file changed, 76 insertions(+), 76 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c7f74687..f9b3c5f1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -115,9 +115,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "backtrace" @@ -268,9 +268,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cc" -version = "1.0.95" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32a725bc159af97c3e629873bb9f88fb8cf8a4867175f76dc987815ea07c83b" +checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f" [[package]] name = "cfg-if" @@ -366,18 +366,18 @@ checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "crc32fast" -version = "1.4.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if 1.0.0", ] [[package]] name = "crossbeam-channel" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" dependencies = [ "crossbeam-utils", ] @@ -403,9 +403,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crypto-common" @@ -499,9 +499,15 @@ dependencies = [ [[package]] name = "either" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" +checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" + +[[package]] +name = "endian-num" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad847bb2094f110bbdd6fa564894ca4556fd978958e93985420d680d3cb6d14" [[package]] name = "env_logger" @@ -524,9 +530,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", @@ -566,9 +572,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.2" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "fatfs" @@ -648,9 +654,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if 1.0.0", "libc", @@ -683,9 +689,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hermit-abi" @@ -805,7 +811,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.14.5", ] [[package]] @@ -849,9 +855,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "libflate" @@ -909,9 +915,9 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "log" @@ -946,7 +952,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa0916b001582d253822171bd23f4a0229d32b9507fae236f5da8cad515ba7c" dependencies = [ - "getrandom 0.2.14", + "getrandom 0.2.15", "libc", "windows-sys 0.45.0", ] @@ -962,18 +968,18 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" dependencies = [ "adler", ] [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] @@ -1116,7 +1122,7 @@ dependencies = [ "serde", "sodiumoxide", "termion 3.0.0", - "toml 0.8.12", + "toml 0.8.13", "user-error", ] @@ -1134,9 +1140,9 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro2" -version = "1.0.81" +version = "1.0.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" +checksum = "ec96c6a92621310b51366f1e28d05ef11489516e93be030060e5fc12024a49d6" dependencies = [ "unicode-ident", ] @@ -1186,7 +1192,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.14", + "getrandom 0.2.15", ] [[package]] @@ -1232,7 +1238,7 @@ dependencies = [ "redoxer", "serde", "termion 1.5.6", - "toml 0.8.12", + "toml 0.8.13", "walkdir", ] @@ -1260,7 +1266,7 @@ dependencies = [ "serde", "serde_derive", "termion 1.5.6", - "toml 0.8.12", + "toml 0.8.13", "uuid", ] @@ -1300,12 +1306,6 @@ dependencies = [ "version-compare", ] -[[package]] -name = "redox_simple_endian" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175b27da3d5db1502bd20ae0917ba132d256a2b169f1686681304ebb86504eab" - [[package]] name = "redox_syscall" version = "0.2.16" @@ -1345,7 +1345,7 @@ version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ - "getrandom 0.2.14", + "getrandom 0.2.15", "libredox 0.1.3", "thiserror", ] @@ -1367,22 +1367,22 @@ dependencies = [ [[package]] name = "redoxfs" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fd4a89861ecb0c40d804dd1b686a86896a7ba162ef5cb484ed68e5c5b0837d" +checksum = "45ebd559766fa473d5324f662e23841e32534fd3cabab409e377e59c2e00e82b" dependencies = [ "aes", "argon2", "base64ct", + "endian-num", "env_logger", "fuser", - "getrandom 0.2.14", + "getrandom 0.2.15", "libc", "libredox 0.1.3", "log 0.4.21", "range-tree", "redox-path", - "redox_simple_endian", "redox_syscall 0.5.1", "seahash", "termion 2.0.3", @@ -1451,9 +1451,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustix" @@ -1540,14 +1540,14 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.66", ] [[package]] name = "serde_spanned" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" dependencies = [ "serde", ] @@ -1621,9 +1621,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.60" +version = "2.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" +checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" dependencies = [ "proc-macro2", "quote", @@ -1721,22 +1721,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.59" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa" +checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.59" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66" +checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.66", ] [[package]] @@ -1776,9 +1776,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.12" +version = "0.8.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" +checksum = "a4e43f8cc456c9704c851ae29c67e17ef65d2c30017c17a9765b89c382dc8bba" dependencies = [ "serde", "serde_spanned", @@ -1788,18 +1788,18 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.22.12" +version = "0.22.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" +checksum = "c127785850e8c20836d49732ae6abfa47616e60bf9d9f57c43c250361a9db96c" dependencies = [ "indexmap 2.2.6", "serde", @@ -1858,9 +1858,9 @@ dependencies = [ [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" [[package]] name = "unicode-xid" @@ -1913,7 +1913,7 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" dependencies = [ - "getrandom 0.2.14", + "getrandom 0.2.15", ] [[package]] @@ -2010,7 +2010,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.66", "wasm-bindgen-shared", ] @@ -2032,7 +2032,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.66", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2081,11 +2081,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" dependencies = [ - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -2310,9 +2310,9 @@ checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" [[package]] name = "winnow" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0c976aaaa0e1f90dbb21e9587cdaf1d9679a1cde8875c0d6bd83ab96a208352" +checksum = "c3c52e9c97a68071b23e836c9380edae937f17b9c4667bd021973efc689f618d" dependencies = [ "memchr", ] @@ -2346,5 +2346,5 @@ checksum = "125139de3f6b9d625c39e2efdd73d41bdac468ccd556556440e322be0e1bbd91" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.66", ] From 74e18a5fb51dd8da6f4b49ee39fc7ccba58c5e65 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 29 May 2024 09:54:05 -0600 Subject: [PATCH 1773/3180] Update llvm and rust --- recipes/dev/llvm/recipe.toml | 2 +- recipes/dev/rust/config.toml | 1 + recipes/dev/rust/recipe.sh | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/dev/llvm/recipe.toml b/recipes/dev/llvm/recipe.toml index 4f160c75..daeb31ad 100644 --- a/recipes/dev/llvm/recipe.toml +++ b/recipes/dev/llvm/recipe.toml @@ -1,7 +1,7 @@ [source] git = "https://gitlab.redox-os.org/redox-os/llvm-project.git" upstream = "https://github.com/rust-lang/llvm-project.git" -branch = "redox-2023-01-21" +branch = "redox-2024-05-11" [build] template = "custom" diff --git a/recipes/dev/rust/config.toml b/recipes/dev/rust/config.toml index b68ef0c2..40a3dd01 100644 --- a/recipes/dev/rust/config.toml +++ b/recipes/dev/rust/config.toml @@ -12,6 +12,7 @@ verbose = 1 [install] prefix = "install" +sysconfdir = "etc" [rust] backtrace = false diff --git a/recipes/dev/rust/recipe.sh b/recipes/dev/rust/recipe.sh index 166d23a3..81cd8a97 100644 --- a/recipes/dev/rust/recipe.sh +++ b/recipes/dev/rust/recipe.sh @@ -1,5 +1,5 @@ GIT=https://gitlab.redox-os.org/redox-os/rust.git -BRANCH=redox-2023-09-07 +BRANCH=redox-2024-05-11 BUILD_DEPENDS=(llvm) DEPENDS="gcc13 cargo" PREPARE_COPY=0 From 0a3262428a18fdef2ad754951bedf0c7922d6972 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 29 May 2024 14:28:36 -0600 Subject: [PATCH 1774/3180] Update mesa --- recipes/libs/mesa/recipe.toml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/libs/mesa/recipe.toml b/recipes/libs/mesa/recipe.toml index 37bbd16e..4b05987a 100644 --- a/recipes/libs/mesa/recipe.toml +++ b/recipes/libs/mesa/recipe.toml @@ -1,7 +1,7 @@ [source] git = "https://gitlab.redox-os.org/redox-os/mesa.git" upstream = "https://gitlab.freedesktop.org/mesa/mesa" -branch = "redox-22.3.1" +branch = "redox-24.0" [build] template = "custom" @@ -47,7 +47,6 @@ meson "${COOKBOOK_SOURCE}" . \ --buildtype release \ --strip \ -Ddefault_library=static \ - -Ddri-drivers= \ -Dglx=disabled \ -Dllvm=enabled \ -Dosmesa=true \ From 5385028bf8fa7a1f4f46073da517e5bc4d4eb8c6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 29 May 2024 15:54:26 -0600 Subject: [PATCH 1775/3180] Update llvm-config emulation --- bin/x86_64-unknown-redox-llvm-config | 183 ++++++++++++++------------- 1 file changed, 98 insertions(+), 85 deletions(-) diff --git a/bin/x86_64-unknown-redox-llvm-config b/bin/x86_64-unknown-redox-llvm-config index 35692fd7..387d7e30 100755 --- a/bin/x86_64-unknown-redox-llvm-config +++ b/bin/x86_64-unknown-redox-llvm-config @@ -8,89 +8,102 @@ # echo -e \"$component\": \"$(llvm-config --libs $component)\", # end components = { - "aggressiveinstcombine": "-lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "all": "-lLLVMWindowsManifest -lLLVMWindowsDriver -lLLVMXRay -lLLVMLibDriver -lLLVMDlltoolDriver -lLLVMCoverage -lLLVMLineEditor -lLLVMX86TargetMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMOrcJIT -lLLVMMCJIT -lLLVMJITLink -lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMDWP -lLLVMDebugInfoGSYM -lLLVMOption -lLLVMObjectYAML -lLLVMObjCopy -lLLVMMCA -lLLVMMCDisassembler -lLLVMLTO -lLLVMPasses -lLLVMCFGuard -lLLVMCoroutines -lLLVMObjCARCOpts -lLLVMipo -lLLVMVectorize -lLLVMLinker -lLLVMInstrumentation -lLLVMFrontendOpenMP -lLLVMFrontendOpenACC -lLLVMExtensions -lLLVMDWARFLinker -lLLVMGlobalISel -lLLVMMIRParser -lLLVMAsmPrinter -lLLVMSelectionDAG -lLLVMCodeGen -lLLVMIRReader -lLLVMAsmParser -lLLVMInterfaceStub -lLLVMFileCheck -lLLVMFuzzMutate -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMFuzzerCLI -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTableGen -lLLVMSupport -lLLVMDemangle", - "all-targets": "-lLLVMX86TargetMCA -lLLVMMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMSelectionDAG -lLLVMInstrumentation -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "analysis": "-lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "asmparser": "-lLLVMAsmParser -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "asmprinter": "-lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "binaryformat": "-lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "bitreader": "-lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", - "bitstreamreader": "-lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", - "bitwriter": "-lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "cfguard": "-lLLVMCFGuard -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "codegen": "-lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "core": "-lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "coroutines": "-lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMFrontendOpenMP -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "coverage": "-lLLVMCoverage -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "debuginfocodeview": "-lLLVMDebugInfoCodeView -lLLVMSupport -lLLVMDemangle", - "debuginfodwarf": "-lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "debuginfogsym": "-lLLVMDebugInfoGSYM -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "debuginfomsf": "-lLLVMDebugInfoMSF -lLLVMSupport -lLLVMDemangle", - "debuginfopdb": "-lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "demangle": "-lLLVMDemangle", - "dlltooldriver": "-lLLVMDlltoolDriver -lLLVMOption -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", - "dwarflinker": "-lLLVMDWARFLinker -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "dwp": "-lLLVMDWP -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "engine": "-lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "executionengine": "-lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "extensions": "-lLLVMExtensions -lLLVMSupport -lLLVMDemangle", - "filecheck": "-lLLVMFileCheck", - "frontendopenacc": "-lLLVMFrontendOpenACC", - "frontendopenmp": "-lLLVMFrontendOpenMP -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "fuzzercli": "-lLLVMFuzzerCLI -lLLVMSupport -lLLVMDemangle", - "fuzzmutate": "-lLLVMFuzzMutate -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "globalisel": "-lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "instcombine": "-lLLVMInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "instrumentation": "-lLLVMInstrumentation -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "interfacestub": "-lLLVMInterfaceStub -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "interpreter": "-lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "ipo": "-lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMFrontendOpenMP -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "irreader": "-lLLVMIRReader -lLLVMBitReader -lLLVMAsmParser -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "jitlink": "-lLLVMJITLink -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "libdriver": "-lLLVMLibDriver -lLLVMOption -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "lineeditor": "-lLLVMLineEditor -lLLVMSupport -lLLVMDemangle", - "linker": "-lLLVMLinker -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "lto": "-lLLVMLTO -lLLVMPasses -lLLVMCoroutines -lLLVMObjCARCOpts -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMFrontendOpenMP -lLLVMExtensions -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "mc": "-lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "mca": "-lLLVMMCA -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "mcdisassembler": "-lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "mcjit": "-lLLVMMCJIT -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "mcparser": "-lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "mirparser": "-lLLVMMIRParser -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMAsmParser -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "native": "-lLLVMX86TargetMCA -lLLVMMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMSelectionDAG -lLLVMInstrumentation -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "nativecodegen": "-lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMSelectionDAG -lLLVMInstrumentation -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "objcarcopts": "-lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "objcopy": "-lLLVMObjCopy -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "object": "-lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", - "objectyaml": "-lLLVMObjectYAML -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "option": "-lLLVMOption -lLLVMSupport -lLLVMDemangle", - "orcjit": "-lLLVMOrcJIT -lLLVMPasses -lLLVMObjCARCOpts -lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMFrontendOpenMP -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMMCDisassembler -lLLVMJITLink -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "orcshared": "-lLLVMOrcShared -lLLVMSupport -lLLVMDemangle", - "orctargetprocess": "-lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMSupport -lLLVMDemangle", - "passes": "-lLLVMPasses -lLLVMTarget -lLLVMObjCARCOpts -lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMFrontendOpenMP -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "profiledata": "-lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "remarks": "-lLLVMRemarks -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", - "runtimedyld": "-lLLVMRuntimeDyld -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "scalaropts": "-lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "selectiondag": "-lLLVMSelectionDAG -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "support": "-lLLVMSupport -lLLVMDemangle", - "symbolize": "-lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "tablegen": "-lLLVMTableGen -lLLVMSupport -lLLVMDemangle", - "target": "-lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "textapi": "-lLLVMTextAPI -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "transformutils": "-lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "vectorize": "-lLLVMVectorize -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "windowsdriver": "-lLLVMWindowsDriver -lLLVMOption -lLLVMSupport -lLLVMDemangle", - "windowsmanifest": "-lLLVMWindowsManifest -lLLVMSupport -lLLVMDemangle", - "x86": "-lLLVMX86TargetMCA -lLLVMMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMSelectionDAG -lLLVMInstrumentation -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "x86asmparser": "-lLLVMX86AsmParser -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "x86codegen": "-lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMSelectionDAG -lLLVMInstrumentation -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "x86desc": "-lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "x86disassembler": "-lLLVMX86Disassembler -lLLVMX86Info -lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "x86info": "-lLLVMX86Info -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "x86targetmca": "-lLLVMX86TargetMCA -lLLVMMCA -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle", - "xray": "-lLLVMXRay -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle", + 'aggressiveinstcombine': '-lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'all': '-lLLVMWindowsManifest -lLLVMXRay -lLLVMLibDriver -lLLVMDlltoolDriver -lLLVMTextAPIBinaryReader -lLLVMCoverage -lLLVMLineEditor -lLLVMX86TargetMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMOrcDebugging -lLLVMOrcJIT -lLLVMWindowsDriver -lLLVMMCJIT -lLLVMJITLink -lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMDWP -lLLVMDebugInfoLogicalView -lLLVMDebugInfoGSYM -lLLVMOption -lLLVMObjectYAML -lLLVMObjCopy -lLLVMMCA -lLLVMMCDisassembler -lLLVMLTO -lLLVMPasses -lLLVMHipStdPar -lLLVMCFGuard -lLLVMCoroutines -lLLVMipo -lLLVMVectorize -lLLVMLinker -lLLVMInstrumentation -lLLVMFrontendOpenMP -lLLVMFrontendOffloading -lLLVMFrontendOpenACC -lLLVMFrontendHLSL -lLLVMFrontendDriver -lLLVMExtensions -lLLVMDWARFLinkerParallel -lLLVMDWARFLinkerClassic -lLLVMDWARFLinker -lLLVMGlobalISel -lLLVMMIRParser -lLLVMAsmPrinter -lLLVMSelectionDAG -lLLVMCodeGen -lLLVMTarget -lLLVMObjCARCOpts -lLLVMCodeGenTypes -lLLVMIRPrinter -lLLVMInterfaceStub -lLLVMFileCheck -lLLVMFuzzMutate -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMFuzzerCLI -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMTableGen -lLLVMSupport -lLLVMDemangle', + 'all-targets': '-lLLVMX86TargetMCA -lLLVMMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMInstrumentation -lLLVMIRPrinter -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMCFGuard -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'analysis': '-lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'asmparser': '-lLLVMAsmParser -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'asmprinter': '-lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'binaryformat': '-lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'bitreader': '-lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle', + 'bitstreamreader': '-lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle', + 'bitwriter': '-lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'cfguard': '-lLLVMCFGuard -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'codegen': '-lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'codegentypes': '-lLLVMCodeGenTypes -lLLVMSupport -lLLVMDemangle', + 'core': '-lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'coroutines': '-lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMFrontendOpenMP -lLLVMFrontendOffloading -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'coverage': '-lLLVMCoverage -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'debuginfobtf': '-lLLVMDebugInfoBTF -lLLVMSupport -lLLVMDemangle', + 'debuginfocodeview': '-lLLVMDebugInfoCodeView -lLLVMSupport -lLLVMDemangle', + 'debuginfodwarf': '-lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'debuginfogsym': '-lLLVMDebugInfoGSYM -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'debuginfologicalview': '-lLLVMDebugInfoLogicalView -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'debuginfomsf': '-lLLVMDebugInfoMSF -lLLVMSupport -lLLVMDemangle', + 'debuginfopdb': '-lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'demangle': '-lLLVMDemangle', + 'dlltooldriver': '-lLLVMDlltoolDriver -lLLVMOption -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle', + 'dwarflinker': '-lLLVMDWARFLinker -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'dwarflinkerclassic': '-lLLVMDWARFLinkerClassic -lLLVMDWARFLinker -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'dwarflinkerparallel': '-lLLVMDWARFLinkerParallel -lLLVMDWARFLinker -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'dwp': '-lLLVMDWP -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'engine': '-lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'executionengine': '-lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'extensions': '-lLLVMExtensions -lLLVMSupport -lLLVMDemangle', + 'filecheck': '-lLLVMFileCheck', + 'frontenddriver': '-lLLVMFrontendDriver -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'frontendhlsl': '-lLLVMFrontendHLSL -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'frontendoffloading': '-lLLVMFrontendOffloading -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'frontendopenacc': '-lLLVMFrontendOpenACC', + 'frontendopenmp': '-lLLVMFrontendOpenMP -lLLVMFrontendOffloading -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'fuzzercli': '-lLLVMFuzzerCLI -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'fuzzmutate': '-lLLVMFuzzMutate -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'globalisel': '-lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'hipstdpar': '-lLLVMHipStdPar -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'instcombine': '-lLLVMInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'instrumentation': '-lLLVMInstrumentation -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'interfacestub': '-lLLVMInterfaceStub -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'interpreter': '-lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'ipo': '-lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMFrontendOpenMP -lLLVMFrontendOffloading -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'irprinter': '-lLLVMIRPrinter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'irreader': '-lLLVMIRReader -lLLVMBitReader -lLLVMAsmParser -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'jitlink': '-lLLVMJITLink -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMOption -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'libdriver': '-lLLVMLibDriver -lLLVMOption -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'lineeditor': '-lLLVMLineEditor -lLLVMSupport -lLLVMDemangle', + 'linker': '-lLLVMLinker -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'lto': '-lLLVMLTO -lLLVMPasses -lLLVMIRPrinter -lLLVMHipStdPar -lLLVMCoroutines -lLLVMCFGuard -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMFrontendOpenMP -lLLVMFrontendOffloading -lLLVMExtensions -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMObjCARCOpts -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'mc': '-lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'mca': '-lLLVMMCA -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'mcdisassembler': '-lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'mcjit': '-lLLVMMCJIT -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'mcparser': '-lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'mirparser': '-lLLVMMIRParser -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMAsmParser -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'native': '-lLLVMX86TargetMCA -lLLVMMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMInstrumentation -lLLVMIRPrinter -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMCFGuard -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'nativecodegen': '-lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMInstrumentation -lLLVMIRPrinter -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMCFGuard -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'objcarcopts': '-lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'objcopy': '-lLLVMObjCopy -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'object': '-lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle', + 'objectyaml': '-lLLVMObjectYAML -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'option': '-lLLVMOption -lLLVMSupport -lLLVMDemangle', + 'orcdebugging': '-lLLVMOrcDebugging -lLLVMOrcJIT -lLLVMPasses -lLLVMIRPrinter -lLLVMHipStdPar -lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMFrontendOpenMP -lLLVMFrontendOffloading -lLLVMCodeGen -lLLVMScalarOpts -lLLVMInstCombine -lLLVMObjCARCOpts -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMCFGuard -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMWindowsDriver -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMRuntimeDyld -lLLVMJITLink -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMOption -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'orcjit': '-lLLVMOrcJIT -lLLVMPasses -lLLVMIRPrinter -lLLVMHipStdPar -lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMFrontendOpenMP -lLLVMFrontendOffloading -lLLVMCodeGen -lLLVMScalarOpts -lLLVMInstCombine -lLLVMObjCARCOpts -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMCFGuard -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMWindowsDriver -lLLVMJITLink -lLLVMOption -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'orcshared': '-lLLVMOrcShared -lLLVMSupport -lLLVMDemangle', + 'orctargetprocess': '-lLLVMOrcTargetProcess -lLLVMTargetParser -lLLVMOrcShared -lLLVMSupport -lLLVMDemangle', + 'passes': '-lLLVMPasses -lLLVMIRPrinter -lLLVMHipStdPar -lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMFrontendOpenMP -lLLVMFrontendOffloading -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMObjCARCOpts -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMCFGuard -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'profiledata': '-lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'remarks': '-lLLVMRemarks -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle', + 'runtimedyld': '-lLLVMRuntimeDyld -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'scalaropts': '-lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'selectiondag': '-lLLVMSelectionDAG -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'support': '-lLLVMSupport -lLLVMDemangle', + 'symbolize': '-lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'tablegen': '-lLLVMTableGen -lLLVMSupport -lLLVMDemangle', + 'target': '-lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'targetparser': '-lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'textapi': '-lLLVMTextAPI -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'textapibinaryreader': '-lLLVMTextAPIBinaryReader -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle', + 'transformutils': '-lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'vectorize': '-lLLVMVectorize -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'windowsdriver': '-lLLVMWindowsDriver -lLLVMTargetParser -lLLVMOption -lLLVMSupport -lLLVMDemangle', + 'windowsmanifest': '-lLLVMWindowsManifest -lLLVMSupport -lLLVMDemangle', + 'x86': '-lLLVMX86TargetMCA -lLLVMMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMInstrumentation -lLLVMIRPrinter -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMCFGuard -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'x86asmparser': '-lLLVMX86AsmParser -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMCodeGenTypes -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'x86codegen': '-lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMInstrumentation -lLLVMIRPrinter -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMCFGuard -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'x86desc': '-lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMCodeGenTypes -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'x86disassembler': '-lLLVMX86Disassembler -lLLVMX86Info -lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'x86info': '-lLLVMX86Info -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', + 'x86targetmca': '-lLLVMX86TargetMCA -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMMCParser -lLLVMMCA -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMCodeGenTypes -lLLVMSupport -lLLVMDemangle', + 'xray': '-lLLVMXRay -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle', } import os @@ -116,13 +129,13 @@ for arg in sys.argv[1:]: if args == []: fail("no arguments") elif args == ["--version"]: - print("15.0.6") + print("18.1.4") elif args == ["--bindir"]: print(prefix + "/bin") elif args == ["--cppflags"]: print("-I" + prefix + "/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS") elif args == ["--cxxflags"]: - print("-I" + prefix + "/include --std=c++14 -fno-exceptions -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS") + print("-I" + prefix + "/include --std=c++17 -fno-exceptions -funwind-tables -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS") elif args == ["--components"]: print(" ".join(components.keys())) elif args == ["--includedir"]: From 3b9833cb5ecf9bd4e8913a67ec313f059f41aed0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 29 May 2024 20:22:53 -0600 Subject: [PATCH 1776/3180] Add libpsl --- recipes/libs/libpsl/recipe.toml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 recipes/libs/libpsl/recipe.toml diff --git a/recipes/libs/libpsl/recipe.toml b/recipes/libs/libpsl/recipe.toml new file mode 100644 index 00000000..ae522669 --- /dev/null +++ b/recipes/libs/libpsl/recipe.toml @@ -0,0 +1,6 @@ +[source] +tar = "https://github.com/rockdaboot/libpsl/releases/download/0.21.5/libpsl-0.21.5.tar.lz" +blake3 = "91318b7b876b12ff4649b7a0d6f6ed4ab1ab44f48a49508c8978ab7b4ccf3298" + +[build] +template = "configure" From 70128730540e9c2d59d04242aa23790becc5e163 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 29 May 2024 20:23:08 -0600 Subject: [PATCH 1777/3180] Update nghttp2 to 1.62.1 --- recipes/libs/nghttp2/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/libs/nghttp2/recipe.toml b/recipes/libs/nghttp2/recipe.toml index 94940d0f..81ef6277 100644 --- a/recipes/libs/nghttp2/recipe.toml +++ b/recipes/libs/nghttp2/recipe.toml @@ -1,6 +1,6 @@ [source] -tar = "https://github.com/nghttp2/nghttp2/releases/download/v1.53.0/nghttp2-1.53.0.tar.xz" -blake3 = "bad5f220a66b7e6f3df20f69f4fc7e7beca46e6c143fc63b95a2656a2e897caf" +tar = "https://github.com/nghttp2/nghttp2/releases/download/v1.62.1/nghttp2-1.62.1.tar.xz" +blake3 = "77b1c0fed8e97db0aa7d6e1a5ed16e5a053093ed0006b7c747dca290d694f3af" [build] template = "custom" script = """ From 04651fd7a731857dcb29aa3dee8294826087164d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 29 May 2024 20:23:27 -0600 Subject: [PATCH 1778/3180] Update curl to 8.6.0 --- recipes/net/curl/recipe.toml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/recipes/net/curl/recipe.toml b/recipes/net/curl/recipe.toml index bd28bb6e..b9569030 100644 --- a/recipes/net/curl/recipe.toml +++ b/recipes/net/curl/recipe.toml @@ -1,10 +1,12 @@ [source] git = "https://gitlab.redox-os.org/redox-os/curl.git" -branch = "redox" +branch = "redox-8.6" +upstream = "https://github.com/curl/curl.git" [build] template = "custom" dependencies = [ + "libpsl", "nghttp2", "openssl1", "zlib" From 52bc28fdb1cb43e8de1d9f221253ca5e85563495 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 29 May 2024 20:40:06 -0600 Subject: [PATCH 1779/3180] Add libpsl build dependency to flycast --- recipes/emulators/flycast/recipe.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/emulators/flycast/recipe.toml b/recipes/emulators/flycast/recipe.toml index 41cb8953..595cefa9 100644 --- a/recipes/emulators/flycast/recipe.toml +++ b/recipes/emulators/flycast/recipe.toml @@ -7,6 +7,7 @@ dependencies = [ "curl", "libiconv", "liborbital", + "libpsl", "llvm", "mesa", "nghttp2", @@ -20,7 +21,7 @@ export CXXFLAGS="${CXXFLAGS} -D_GLIBCXX_USE_C99_MATH_TR1=1 -I${COOKBOOK_SYSROOT} #TODO: don't use this export SDL_LIBS="-lSDL2 -lorbital $("${TARGET}-pkg-config" --libs osmesa) -lstdc++" #TODO: don't add curl -export SDL_LIBS="${SDL_LIBS} -lcurl -lnghttp2 -lssl -lcrypto" +export SDL_LIBS="${SDL_LIBS} -lcurl -lnghttp2 -lpsl -lssl -lcrypto" COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_VERBOSE_MAKEFILE=On From 60fa79bbbf7bb3a127496a0d08fd0cf4d0936a72 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 30 May 2024 08:55:18 +0000 Subject: [PATCH 1780/3180] Add recipes --- recipes/wip/dev/get-blessed/recipe.toml | 5 +++++ recipes/wip/finance/pushtx/recipe.toml | 8 ++++++++ recipes/wip/net/hurl/recipe.toml | 13 +++++++++++++ recipes/wip/net/vopono/recipe.toml | 5 +++++ recipes/wip/security/flawz/recipe.toml | 5 +++++ recipes/wip/tools/helix-gpui/recipe.toml | 5 +++++ recipes/wip/tools/hired/recipe.toml | 5 +++++ recipes/wip/tools/lddtree-rs/recipe.toml | 5 +++++ 8 files changed, 51 insertions(+) create mode 100644 recipes/wip/dev/get-blessed/recipe.toml create mode 100644 recipes/wip/finance/pushtx/recipe.toml create mode 100644 recipes/wip/net/hurl/recipe.toml create mode 100644 recipes/wip/net/vopono/recipe.toml create mode 100644 recipes/wip/security/flawz/recipe.toml create mode 100644 recipes/wip/tools/helix-gpui/recipe.toml create mode 100644 recipes/wip/tools/hired/recipe.toml create mode 100644 recipes/wip/tools/lddtree-rs/recipe.toml diff --git a/recipes/wip/dev/get-blessed/recipe.toml b/recipes/wip/dev/get-blessed/recipe.toml new file mode 100644 index 00000000..d2af7004 --- /dev/null +++ b/recipes/wip/dev/get-blessed/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/josueBarretogit/get_blessed_rs" +[build] +template = "cargo" diff --git a/recipes/wip/finance/pushtx/recipe.toml b/recipes/wip/finance/pushtx/recipe.toml new file mode 100644 index 00000000..0078b9d5 --- /dev/null +++ b/recipes/wip/finance/pushtx/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/alfred-hodler/pushtx" +[build] +template = "custom" +script = """ +cookbook_cargo_packages pushtx-cli +""" diff --git a/recipes/wip/net/hurl/recipe.toml b/recipes/wip/net/hurl/recipe.toml new file mode 100644 index 00000000..9cb9a7e7 --- /dev/null +++ b/recipes/wip/net/hurl/recipe.toml @@ -0,0 +1,13 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/Orange-OpenSource/hurl" +[build] +template = "cargo" +dependencies = [ + "openssl1", + "curl", + "libxml2", +] +script = """ +cookbook_cargo_packages hurl +""" diff --git a/recipes/wip/net/vopono/recipe.toml b/recipes/wip/net/vopono/recipe.toml new file mode 100644 index 00000000..73dba8f8 --- /dev/null +++ b/recipes/wip/net/vopono/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/jamesmcm/vopono" +[build] +template = "cargo" diff --git a/recipes/wip/security/flawz/recipe.toml b/recipes/wip/security/flawz/recipe.toml new file mode 100644 index 00000000..b61afd83 --- /dev/null +++ b/recipes/wip/security/flawz/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/orhun/flawz" +[build] +template = "cargo" diff --git a/recipes/wip/tools/helix-gpui/recipe.toml b/recipes/wip/tools/helix-gpui/recipe.toml new file mode 100644 index 00000000..8497aad9 --- /dev/null +++ b/recipes/wip/tools/helix-gpui/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/polachok/helix-gpui" +[build] +template = "cargo" diff --git a/recipes/wip/tools/hired/recipe.toml b/recipes/wip/tools/hired/recipe.toml new file mode 100644 index 00000000..c9b1d27a --- /dev/null +++ b/recipes/wip/tools/hired/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/sidju/hired" +[build] +template = "cargo" diff --git a/recipes/wip/tools/lddtree-rs/recipe.toml b/recipes/wip/tools/lddtree-rs/recipe.toml new file mode 100644 index 00000000..4aa0d9ef --- /dev/null +++ b/recipes/wip/tools/lddtree-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/messense/lddtree-rs" +[build] +template = "cargo" From 20465f86f058605c353dfa5db73edbec4e4c7ed2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 30 May 2024 11:37:45 -0600 Subject: [PATCH 1781/3180] Set crt-static to true in rust recipe --- recipes/dev/rust/config.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/dev/rust/config.toml b/recipes/dev/rust/config.toml index 40a3dd01..180cfd09 100644 --- a/recipes/dev/rust/config.toml +++ b/recipes/dev/rust/config.toml @@ -26,4 +26,4 @@ ar = "x86_64-unknown-redox-ar" linker = "x86_64-unknown-redox-gcc" # Nasty path, please fix llvm-config = "../../../../bin/x86_64-unknown-redox-llvm-config" -crt-static = false +crt-static = true From 9e1a11cd59711e527368a8d5a34117a7bb44401d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 31 May 2024 15:28:09 +0000 Subject: [PATCH 1782/3180] Add recipes --- recipes/wip/dev/radicle/recipe.toml | 8 ++++++++ recipes/wip/security/openpgp-ca/recipe.toml | 8 ++++++++ recipes/wip/security/sq/recipe.toml | 5 +++++ recipes/wip/security/sqop/recipe.toml | 5 +++++ recipes/wip/security/sqv/recipe.toml | 5 +++++ recipes/wip/tui/radicle-tui/recipe.toml | 5 +++++ 6 files changed, 36 insertions(+) create mode 100644 recipes/wip/dev/radicle/recipe.toml create mode 100644 recipes/wip/security/openpgp-ca/recipe.toml create mode 100644 recipes/wip/security/sq/recipe.toml create mode 100644 recipes/wip/security/sqop/recipe.toml create mode 100644 recipes/wip/security/sqv/recipe.toml create mode 100644 recipes/wip/tui/radicle-tui/recipe.toml diff --git a/recipes/wip/dev/radicle/recipe.toml b/recipes/wip/dev/radicle/recipe.toml new file mode 100644 index 00000000..230ebfa0 --- /dev/null +++ b/recipes/wip/dev/radicle/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://seed.radicle.xyz/z3gqcJUoA1n9HaHKufZs5FCSGazv5.git" +[build] +template = "custom" +script = """ +cookbook_cargo_packages radicle-cli radicle-node radicle-remote-helper +""" diff --git a/recipes/wip/security/openpgp-ca/recipe.toml b/recipes/wip/security/openpgp-ca/recipe.toml new file mode 100644 index 00000000..b46591a9 --- /dev/null +++ b/recipes/wip/security/openpgp-ca/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +git = "https://gitlab.com/openpgp-ca/openpgp-ca" +[build] +template = "custom" +script = """ +cookbook_cargo_packages openpgp-ca openpgp-ca-restd +""" diff --git a/recipes/wip/security/sq/recipe.toml b/recipes/wip/security/sq/recipe.toml new file mode 100644 index 00000000..d8be236f --- /dev/null +++ b/recipes/wip/security/sq/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://gitlab.com/sequoia-pgp/sequoia-sq" +[build] +template = "cargo" diff --git a/recipes/wip/security/sqop/recipe.toml b/recipes/wip/security/sqop/recipe.toml new file mode 100644 index 00000000..c60c1972 --- /dev/null +++ b/recipes/wip/security/sqop/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://gitlab.com/sequoia-pgp/sequoia-sop" +[build] +template = "cargo" diff --git a/recipes/wip/security/sqv/recipe.toml b/recipes/wip/security/sqv/recipe.toml new file mode 100644 index 00000000..988682ab --- /dev/null +++ b/recipes/wip/security/sqv/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://gitlab.com/sequoia-pgp/sequoia-sqv" +[build] +template = "cargo" diff --git a/recipes/wip/tui/radicle-tui/recipe.toml b/recipes/wip/tui/radicle-tui/recipe.toml new file mode 100644 index 00000000..da31915c --- /dev/null +++ b/recipes/wip/tui/radicle-tui/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://seed.radicle.xyz/z39mP9rQAaGmERfUMPULfPUi473tY.git" +[build] +template = "cargo" From 38d6e0108db43d4c2b59f76639f489c7ce6b248a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 3 Jun 2024 08:13:34 +0000 Subject: [PATCH 1783/3180] Add recipes --- recipes/wip/libs/lzlib/recipe.toml | 5 +++++ recipes/wip/tools/lzip/recipe.toml | 5 +++++ recipes/wip/tools/plzip/recipe.toml | 8 ++++++++ recipes/wip/tools/tarlz/recipe.toml | 8 ++++++++ recipes/wip/tools/vulkan-tools/recipe.toml | 5 +---- 5 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 recipes/wip/libs/lzlib/recipe.toml create mode 100644 recipes/wip/tools/lzip/recipe.toml create mode 100644 recipes/wip/tools/plzip/recipe.toml create mode 100644 recipes/wip/tools/tarlz/recipe.toml diff --git a/recipes/wip/libs/lzlib/recipe.toml b/recipes/wip/libs/lzlib/recipe.toml new file mode 100644 index 00000000..15b2f153 --- /dev/null +++ b/recipes/wip/libs/lzlib/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.savannah.gnu.org/releases/lzip/lzlib/lzlib-1.14.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/tools/lzip/recipe.toml b/recipes/wip/tools/lzip/recipe.toml new file mode 100644 index 00000000..1d59f02c --- /dev/null +++ b/recipes/wip/tools/lzip/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.savannah.gnu.org/releases/lzip/lzip-1.24.1.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/tools/plzip/recipe.toml b/recipes/wip/tools/plzip/recipe.toml new file mode 100644 index 00000000..3fac5705 --- /dev/null +++ b/recipes/wip/tools/plzip/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.savannah.gnu.org/releases/lzip/plzip/plzip-1.11.tar.gz" +[build] +template = "configure" +dependencies = [ + "lzlib", +] diff --git a/recipes/wip/tools/tarlz/recipe.toml b/recipes/wip/tools/tarlz/recipe.toml new file mode 100644 index 00000000..5972ff99 --- /dev/null +++ b/recipes/wip/tools/tarlz/recipe.toml @@ -0,0 +1,8 @@ +#TODO Not compiled or tested +[source] +tar = "https://download.savannah.gnu.org/releases/lzip/tarlz/tarlz-0.25.tar.lz" +[build] +template = "configure" +dependencies = [ + "lzlib", +] diff --git a/recipes/wip/tools/vulkan-tools/recipe.toml b/recipes/wip/tools/vulkan-tools/recipe.toml index 0007f1d0..9b95301e 100644 --- a/recipes/wip/tools/vulkan-tools/recipe.toml +++ b/recipes/wip/tools/vulkan-tools/recipe.toml @@ -1,13 +1,10 @@ +#TODO probably need to be ported to Orbital #TODO probably wrong script, see https://github.com/KhronosGroup/Vulkan-Tools/blob/main/BUILD.md [source] git = "https://github.com/KhronosGroup/Vulkan-Tools" rev = "7e75f4d389799129b79f90d1401f15f511796dbd" [build] template = "custom" -dependencies = [ - "libwayland", - "libx11", -] script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( From 52af1871a751362665b8f8254b5fa457b269937d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 3 Jun 2024 10:52:44 +0000 Subject: [PATCH 1784/3180] Add a recipe --- recipes/wip/tui/otree/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/wip/tui/otree/recipe.toml diff --git a/recipes/wip/tui/otree/recipe.toml b/recipes/wip/tui/otree/recipe.toml new file mode 100644 index 00000000..a0bc14f5 --- /dev/null +++ b/recipes/wip/tui/otree/recipe.toml @@ -0,0 +1,5 @@ +#TODO Not compiled or tested +[source] +git = "https://github.com/fioncat/otree" +[build] +template = "cargo" From 5e66c2fb2699333d635bee1be236993f89f4fbf5 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 7 Jun 2024 18:55:31 +0000 Subject: [PATCH 1785/3180] Add ABI separation on the LLVM recipe --- recipes/demos/gears/recipe.sh | 2 +- recipes/demos/glium/recipe.sh | 2 +- recipes/demos/osdemo/recipe.sh | 2 +- recipes/demos/sdl2-gears/recipe.sh | 2 +- recipes/dev/{llvm => llvm18}/native.cmake | 0 recipes/dev/{llvm => llvm18}/recipe.toml | 0 recipes/dev/rust/recipe.sh | 2 +- recipes/games/classicube/recipe.toml | 2 +- recipes/games/hematite/recipe.toml | 2 +- recipes/games/neverball/recipe.sh | 2 +- recipes/games/openjk/recipe.toml | 2 +- recipes/games/sm64ex/recipe.toml | 2 +- recipes/games/spacecadetpinball/recipe.toml | 2 +- recipes/games/vvvvvv/recipe.sh | 2 +- recipes/games/wesnoth/recipe.sh | 2 +- recipes/libs/ffmpeg6/recipe.toml | 2 +- recipes/libs/mesa/recipe.toml | 2 +- recipes/libs/sdl2-image/recipe.toml | 2 +- recipes/libs/sdl2-mixer/recipe.toml | 2 +- recipes/libs/sdl2-ttf/recipe.sh | 2 +- recipes/libs/webrender/recipe.sh | 2 +- 21 files changed, 19 insertions(+), 19 deletions(-) rename recipes/dev/{llvm => llvm18}/native.cmake (100%) rename recipes/dev/{llvm => llvm18}/recipe.toml (100%) diff --git a/recipes/demos/gears/recipe.sh b/recipes/demos/gears/recipe.sh index 47067cf1..b43a70fe 100644 --- a/recipes/demos/gears/recipe.sh +++ b/recipes/demos/gears/recipe.sh @@ -1,4 +1,4 @@ -BUILD_DEPENDS=(liborbital llvm mesa mesa-glu zlib) +BUILD_DEPENDS=(liborbital llvm18 mesa mesa-glu zlib) function recipe_version { printf "1.0.0" diff --git a/recipes/demos/glium/recipe.sh b/recipes/demos/glium/recipe.sh index 4a9a51ff..455618c1 100644 --- a/recipes/demos/glium/recipe.sh +++ b/recipes/demos/glium/recipe.sh @@ -1,6 +1,6 @@ GIT=https://gitlab.redox-os.org/redox-os/glium.git GIT_UPSTREAM=https://github.com/glium/glium.git -BUILD_DEPENDS=(llvm mesa zlib) +BUILD_DEPENDS=(llvm18 mesa zlib) BRANCH=redox CARGOFLAGS="--example teapot" diff --git a/recipes/demos/osdemo/recipe.sh b/recipes/demos/osdemo/recipe.sh index 5476214e..c222548f 100644 --- a/recipes/demos/osdemo/recipe.sh +++ b/recipes/demos/osdemo/recipe.sh @@ -1,4 +1,4 @@ -BUILD_DEPENDS=(liborbital llvm mesa mesa-glu zlib) +BUILD_DEPENDS=(liborbital llvm18 mesa mesa-glu zlib) function recipe_version { printf "1.0.0" diff --git a/recipes/demos/sdl2-gears/recipe.sh b/recipes/demos/sdl2-gears/recipe.sh index 949a0072..ae0f8c4e 100644 --- a/recipes/demos/sdl2-gears/recipe.sh +++ b/recipes/demos/sdl2-gears/recipe.sh @@ -1,4 +1,4 @@ -BUILD_DEPENDS=(sdl2-image sdl2-mixer sdl2-ttf sdl2 liborbital llvm mesa freetype2 libjpeg libpng libogg libvorbis zlib) +BUILD_DEPENDS=(sdl2-image sdl2-mixer sdl2-ttf sdl2 liborbital llvm18 mesa freetype2 libjpeg libpng libogg libvorbis zlib) function recipe_version { printf "1.0.0" diff --git a/recipes/dev/llvm/native.cmake b/recipes/dev/llvm18/native.cmake similarity index 100% rename from recipes/dev/llvm/native.cmake rename to recipes/dev/llvm18/native.cmake diff --git a/recipes/dev/llvm/recipe.toml b/recipes/dev/llvm18/recipe.toml similarity index 100% rename from recipes/dev/llvm/recipe.toml rename to recipes/dev/llvm18/recipe.toml diff --git a/recipes/dev/rust/recipe.sh b/recipes/dev/rust/recipe.sh index 81cd8a97..fb417a31 100644 --- a/recipes/dev/rust/recipe.sh +++ b/recipes/dev/rust/recipe.sh @@ -1,6 +1,6 @@ GIT=https://gitlab.redox-os.org/redox-os/rust.git BRANCH=redox-2024-05-11 -BUILD_DEPENDS=(llvm) +BUILD_DEPENDS=(llvm18) DEPENDS="gcc13 cargo" PREPARE_COPY=0 diff --git a/recipes/games/classicube/recipe.toml b/recipes/games/classicube/recipe.toml index 59196821..d78d3c5a 100644 --- a/recipes/games/classicube/recipe.toml +++ b/recipes/games/classicube/recipe.toml @@ -5,7 +5,7 @@ git = "https://github.com/jackpot51/ClassiCube.git" template = "custom" dependencies = [ "liborbital", - "llvm", + "llvm18", "mesa", "sdl2", "zlib", diff --git a/recipes/games/hematite/recipe.toml b/recipes/games/hematite/recipe.toml index e7cbb892..c3424044 100644 --- a/recipes/games/hematite/recipe.toml +++ b/recipes/games/hematite/recipe.toml @@ -6,7 +6,7 @@ upstream = "https://github.com/PistonDevelopers/hematite.git" [build] template = "custom" dependencies = [ - "llvm", + "llvm18", "mesa", "zlib" ] diff --git a/recipes/games/neverball/recipe.sh b/recipes/games/neverball/recipe.sh index ba83e15e..c1ce70eb 100644 --- a/recipes/games/neverball/recipe.sh +++ b/recipes/games/neverball/recipe.sh @@ -1,6 +1,6 @@ VERSION=1.6.0 TAR="https://neverball.org/neverball-${VERSION}.tar.gz" -BUILD_DEPENDS=(freetype2 libjpeg libogg liborbital libpng libvorbis llvm mesa sdl2 sdl2-ttf zlib) +BUILD_DEPENDS=(freetype2 libjpeg libogg liborbital libpng libvorbis llvm18 mesa sdl2 sdl2-ttf zlib) function recipe_version { echo "$VERSION" diff --git a/recipes/games/openjk/recipe.toml b/recipes/games/openjk/recipe.toml index ce977d90..6e5b3c13 100644 --- a/recipes/games/openjk/recipe.toml +++ b/recipes/games/openjk/recipe.toml @@ -8,7 +8,7 @@ dependencies = [ "libjpeg", "liborbital", "libpng", - "llvm", + "llvm18", "mesa", "sdl2", "zlib", diff --git a/recipes/games/sm64ex/recipe.toml b/recipes/games/sm64ex/recipe.toml index e3d2fe73..25a94005 100644 --- a/recipes/games/sm64ex/recipe.toml +++ b/recipes/games/sm64ex/recipe.toml @@ -5,7 +5,7 @@ git = "https://github.com/jackpot51/sm64ex.git" template = "custom" dependencies = [ "liborbital", - "llvm", + "llvm18", "mesa", "sdl2", "zlib", diff --git a/recipes/games/spacecadetpinball/recipe.toml b/recipes/games/spacecadetpinball/recipe.toml index 706605aa..39da0f0e 100644 --- a/recipes/games/spacecadetpinball/recipe.toml +++ b/recipes/games/spacecadetpinball/recipe.toml @@ -9,7 +9,7 @@ dependencies = [ "libogg", "liborbital", "libvorbis", - "llvm", + "llvm18", "mesa", "sdl2", "sdl2-mixer", diff --git a/recipes/games/vvvvvv/recipe.sh b/recipes/games/vvvvvv/recipe.sh index 531e3697..7964cafb 100644 --- a/recipes/games/vvvvvv/recipe.sh +++ b/recipes/games/vvvvvv/recipe.sh @@ -2,7 +2,7 @@ VERSION=2.0 GIT=https://github.com/xTibor/VVVVVV BRANCH=redox GIT_UPSTREAM=https://github.com/TerryCavanagh/VVVVVV -BUILD_DEPENDS=(sdl2-image sdl2-mixer sdl2 liborbital llvm mesa mesa-glu zlib libogg libvorbis) +BUILD_DEPENDS=(sdl2-image sdl2-mixer sdl2 liborbital llvm18 mesa mesa-glu zlib libogg libvorbis) function recipe_version { printf "1.0.0" diff --git a/recipes/games/wesnoth/recipe.sh b/recipes/games/wesnoth/recipe.sh index b93029fd..26fc0739 100644 --- a/recipes/games/wesnoth/recipe.sh +++ b/recipes/games/wesnoth/recipe.sh @@ -9,7 +9,7 @@ BUILD_DEPENDS=( liborbital libpng libvorbis - llvm + llvm18 mesa mesa-glu pcre pixman diff --git a/recipes/libs/ffmpeg6/recipe.toml b/recipes/libs/ffmpeg6/recipe.toml index 1ef7aa6c..c31a11c2 100644 --- a/recipes/libs/ffmpeg6/recipe.toml +++ b/recipes/libs/ffmpeg6/recipe.toml @@ -10,7 +10,7 @@ patches = [ template = "custom" dependencies = [ "liborbital", - "llvm", + "llvm18", "mesa", "sdl2", "zlib", diff --git a/recipes/libs/mesa/recipe.toml b/recipes/libs/mesa/recipe.toml index 4b05987a..9fd73d09 100644 --- a/recipes/libs/mesa/recipe.toml +++ b/recipes/libs/mesa/recipe.toml @@ -7,7 +7,7 @@ branch = "redox-24.0" template = "custom" dependencies = [ "expat", - "llvm", + "llvm18", "zlib", ] script = """ diff --git a/recipes/libs/sdl2-image/recipe.toml b/recipes/libs/sdl2-image/recipe.toml index 1f87ce4c..4c36128e 100644 --- a/recipes/libs/sdl2-image/recipe.toml +++ b/recipes/libs/sdl2-image/recipe.toml @@ -7,7 +7,7 @@ dependencies = [ "libjpeg", "liborbital", "libpng", - "llvm", + "llvm18", "mesa", "sdl2", "zlib", diff --git a/recipes/libs/sdl2-mixer/recipe.toml b/recipes/libs/sdl2-mixer/recipe.toml index a78e19a3..3f2c1e86 100644 --- a/recipes/libs/sdl2-mixer/recipe.toml +++ b/recipes/libs/sdl2-mixer/recipe.toml @@ -6,7 +6,7 @@ template = "custom" dependencies = [ "sdl2", "liborbital", - "llvm", + "llvm18", "mesa", "zlib", "libogg", diff --git a/recipes/libs/sdl2-ttf/recipe.sh b/recipes/libs/sdl2-ttf/recipe.sh index bc365d15..d6e4a81c 100644 --- a/recipes/libs/sdl2-ttf/recipe.sh +++ b/recipes/libs/sdl2-ttf/recipe.sh @@ -1,6 +1,6 @@ VERSION=2.0.15 TAR=https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-$VERSION.tar.gz -BUILD_DEPENDS=(sdl2 liborbital llvm mesa freetype2 libpng zlib) +BUILD_DEPENDS=(sdl2 liborbital llvm18 mesa freetype2 libpng zlib) function recipe_version { echo "$VERSION" diff --git a/recipes/libs/webrender/recipe.sh b/recipes/libs/webrender/recipe.sh index f68153d3..a275c3fb 100644 --- a/recipes/libs/webrender/recipe.sh +++ b/recipes/libs/webrender/recipe.sh @@ -1,7 +1,7 @@ GIT=https://gitlab.redox-os.org/redox-os/webrender.git GIT_UPSTREAM=https://github.com/servo/webrender.git BRANCH=redox -BUILD_DEPENDS=(freetype2 libpng llvm mesa zlib) +BUILD_DEPENDS=(freetype2 libpng llvm18 mesa zlib) function recipe_build { sysroot="$(realpath ../sysroot)" From ca8a2c433c80606469c2657df85d8f1edb9f9d6e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 8 Jun 2024 16:13:47 +0000 Subject: [PATCH 1786/3180] Add recipes --- recipes/wip/dev/loco/recipe.toml | 5 +++++ recipes/wip/tools/posixutils-rs/recipe.toml | 9 +++++++++ 2 files changed, 14 insertions(+) create mode 100644 recipes/wip/dev/loco/recipe.toml create mode 100644 recipes/wip/tools/posixutils-rs/recipe.toml diff --git a/recipes/wip/dev/loco/recipe.toml b/recipes/wip/dev/loco/recipe.toml new file mode 100644 index 00000000..6f0350df --- /dev/null +++ b/recipes/wip/dev/loco/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/loco-rs/loco" +[build] +template = "cargo" diff --git a/recipes/wip/tools/posixutils-rs/recipe.toml b/recipes/wip/tools/posixutils-rs/recipe.toml new file mode 100644 index 00000000..c49fdb2c --- /dev/null +++ b/recipes/wip/tools/posixutils-rs/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/rustcoreutils/posixutils-rs" +[build] +template = "custom" +script = """ +cookbook_cargo_packages calc datetime dev display file \ +fs misc pathnames plib process screen sys text tree users xform +""" From 0f24bb42e01ca8fb3d35a83a174425a04cf9ba19 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 8 Jun 2024 16:20:18 +0000 Subject: [PATCH 1787/3180] Update the loco recipe --- recipes/wip/dev/loco/recipe.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/dev/loco/recipe.toml b/recipes/wip/dev/loco/recipe.toml index 6f0350df..abd88d44 100644 --- a/recipes/wip/dev/loco/recipe.toml +++ b/recipes/wip/dev/loco/recipe.toml @@ -2,4 +2,7 @@ [source] git = "https://github.com/loco-rs/loco" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages loco-cli +""" From 9c24db29fefd40aaa45d72ac535753be3f3abf4f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 8 Jun 2024 18:09:15 +0000 Subject: [PATCH 1788/3180] Update recipes --- recipes/wip/games/bevy-combat/recipe.toml | 2 +- recipes/wip/games/offline-chess-puzzles/recipe.toml | 3 +++ recipes/wip/games/tetromino/recipe.toml | 2 +- recipes/wip/tools/macchina/recipe.toml | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/recipes/wip/games/bevy-combat/recipe.toml b/recipes/wip/games/bevy-combat/recipe.toml index 8a6afa27..0e7a0791 100644 --- a/recipes/wip/games/bevy-combat/recipe.toml +++ b/recipes/wip/games/bevy-combat/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/ElliotB256/bevy_combat" [build] diff --git a/recipes/wip/games/offline-chess-puzzles/recipe.toml b/recipes/wip/games/offline-chess-puzzles/recipe.toml index a679a4b5..a8cc69d4 100644 --- a/recipes/wip/games/offline-chess-puzzles/recipe.toml +++ b/recipes/wip/games/offline-chess-puzzles/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/brianch/offline-chess-puzzles" [build] template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/games/tetromino/recipe.toml b/recipes/wip/games/tetromino/recipe.toml index 5bc28f71..d9bc34bb 100644 --- a/recipes/wip/games/tetromino/recipe.toml +++ b/recipes/wip/games/tetromino/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO glutin crate error [source] git = "https://github.com/d-e-s-o/tetromino" [build] diff --git a/recipes/wip/tools/macchina/recipe.toml b/recipes/wip/tools/macchina/recipe.toml index 64665967..524a1d55 100644 --- a/recipes/wip/tools/macchina/recipe.toml +++ b/recipes/wip/tools/macchina/recipe.toml @@ -1,4 +1,4 @@ -#TODO libmacchina crate error (after cargo update) +#TODO if-addrs crate error [source] git = "https://github.com/Macchina-CLI/macchina" [build] From 9c5215f89fe737b89abb36cbcb33eefb09fc2187 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 8 Jun 2024 18:30:14 +0000 Subject: [PATCH 1789/3180] Update recipes --- recipes/wip/games/offline-chess-puzzles/recipe.toml | 2 +- recipes/wip/security/apbf/recipe.toml | 2 +- recipes/wip/security/burrow/recipe.toml | 2 +- recipes/wip/security/feroxbuster/recipe.toml | 2 +- recipes/wip/security/openpgp-ca/recipe.toml | 3 +++ 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/recipes/wip/games/offline-chess-puzzles/recipe.toml b/recipes/wip/games/offline-chess-puzzles/recipe.toml index a8cc69d4..48a9d0f1 100644 --- a/recipes/wip/games/offline-chess-puzzles/recipe.toml +++ b/recipes/wip/games/offline-chess-puzzles/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO iced_winit crate error [source] git = "https://github.com/brianch/offline-chess-puzzles" [build] diff --git a/recipes/wip/security/apbf/recipe.toml b/recipes/wip/security/apbf/recipe.toml index c0af6e79..6552c417 100644 --- a/recipes/wip/security/apbf/recipe.toml +++ b/recipes/wip/security/apbf/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://gitlab.com/timvisee/apbf" [build] diff --git a/recipes/wip/security/burrow/recipe.toml b/recipes/wip/security/burrow/recipe.toml index 19b3a43c..af63cfcb 100644 --- a/recipes/wip/security/burrow/recipe.toml +++ b/recipes/wip/security/burrow/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO cargo package error [source] git = "https://github.com/hackclub/burrow" [build] diff --git a/recipes/wip/security/feroxbuster/recipe.toml b/recipes/wip/security/feroxbuster/recipe.toml index df9666ad..1fb0944b 100644 --- a/recipes/wip/security/feroxbuster/recipe.toml +++ b/recipes/wip/security/feroxbuster/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO openssl-sys crate error [source] git = "https://github.com/epi052/feroxbuster" [build] diff --git a/recipes/wip/security/openpgp-ca/recipe.toml b/recipes/wip/security/openpgp-ca/recipe.toml index b46591a9..17bac6a4 100644 --- a/recipes/wip/security/openpgp-ca/recipe.toml +++ b/recipes/wip/security/openpgp-ca/recipe.toml @@ -6,3 +6,6 @@ template = "custom" script = """ cookbook_cargo_packages openpgp-ca openpgp-ca-restd """ +dependencies = [ + "openssl1", +] From 785dcfbefbe600163edb6e15ee3e70611402a9a4 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 8 Jun 2024 18:44:01 +0000 Subject: [PATCH 1790/3180] Update recipes --- recipes/wip/libs/libpcsclite/recipe.toml | 2 +- recipes/wip/security/binsec/recipe.toml | 2 +- recipes/wip/security/flawz/recipe.toml | 3 +++ recipes/wip/security/openpgp-ca/recipe.toml | 3 ++- recipes/wip/security/sqv/recipe.toml | 5 ++++- 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/recipes/wip/libs/libpcsclite/recipe.toml b/recipes/wip/libs/libpcsclite/recipe.toml index 0ddfc519..4c96c3a8 100644 --- a/recipes/wip/libs/libpcsclite/recipe.toml +++ b/recipes/wip/libs/libpcsclite/recipe.toml @@ -1,4 +1,4 @@ -#TODO probably wrong template +#TODO require POSIX threads support [source] tar = "https://pcsclite.apdu.fr/files/pcsc-lite-2.0.3.tar.bz2" [build] diff --git a/recipes/wip/security/binsec/recipe.toml b/recipes/wip/security/binsec/recipe.toml index 968ba666..d64eabdb 100644 --- a/recipes/wip/security/binsec/recipe.toml +++ b/recipes/wip/security/binsec/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO yara-sys crate error (after cargo update) [source] git = "https://github.com/ex0dus-0x/binsec" [build] diff --git a/recipes/wip/security/flawz/recipe.toml b/recipes/wip/security/flawz/recipe.toml index b61afd83..be2921f1 100644 --- a/recipes/wip/security/flawz/recipe.toml +++ b/recipes/wip/security/flawz/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/orhun/flawz" [build] template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/security/openpgp-ca/recipe.toml b/recipes/wip/security/openpgp-ca/recipe.toml index 17bac6a4..6e553f21 100644 --- a/recipes/wip/security/openpgp-ca/recipe.toml +++ b/recipes/wip/security/openpgp-ca/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make the libpcsclite dependency work [source] git = "https://gitlab.com/openpgp-ca/openpgp-ca" [build] @@ -8,4 +8,5 @@ cookbook_cargo_packages openpgp-ca openpgp-ca-restd """ dependencies = [ "openssl1", + "libpcsclite", ] diff --git a/recipes/wip/security/sqv/recipe.toml b/recipes/wip/security/sqv/recipe.toml index 988682ab..90fe2024 100644 --- a/recipes/wip/security/sqv/recipe.toml +++ b/recipes/wip/security/sqv/recipe.toml @@ -1,5 +1,8 @@ -#TODO Not compiled or tested +#TODO make libnettle work [source] git = "https://gitlab.com/sequoia-pgp/sequoia-sqv" [build] template = "cargo" +dependencies = [ + "libnettle", +] From 4e29b6c9539a8e5a3c7689e5da69e420819ab28b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 8 Jun 2024 18:46:54 +0000 Subject: [PATCH 1791/3180] Update recipes --- recipes/wip/security/flawz/recipe.toml | 2 +- recipes/wip/security/sq/recipe.toml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/security/flawz/recipe.toml b/recipes/wip/security/flawz/recipe.toml index be2921f1..dc7e0441 100644 --- a/recipes/wip/security/flawz/recipe.toml +++ b/recipes/wip/security/flawz/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO webbrowser crate error [source] git = "https://github.com/orhun/flawz" [build] diff --git a/recipes/wip/security/sq/recipe.toml b/recipes/wip/security/sq/recipe.toml index d8be236f..5e4bd980 100644 --- a/recipes/wip/security/sq/recipe.toml +++ b/recipes/wip/security/sq/recipe.toml @@ -3,3 +3,6 @@ git = "https://gitlab.com/sequoia-pgp/sequoia-sq" [build] template = "cargo" +dependencies = [ + "openssl1", +] From d472a1e15d09241df41c48eb6697d760946f4ba9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 8 Jun 2024 18:50:55 +0000 Subject: [PATCH 1792/3180] Update recipes --- recipes/wip/security/keyscope/recipe.toml | 5 ++++- recipes/wip/security/sq/recipe.toml | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/recipes/wip/security/keyscope/recipe.toml b/recipes/wip/security/keyscope/recipe.toml index 489bd7a5..7dd56915 100644 --- a/recipes/wip/security/keyscope/recipe.toml +++ b/recipes/wip/security/keyscope/recipe.toml @@ -2,4 +2,7 @@ [source] git = "https://github.com/SpectralOps/keyscope" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages keyscope +""" diff --git a/recipes/wip/security/sq/recipe.toml b/recipes/wip/security/sq/recipe.toml index 5e4bd980..7cb30143 100644 --- a/recipes/wip/security/sq/recipe.toml +++ b/recipes/wip/security/sq/recipe.toml @@ -1,8 +1,9 @@ -#TODO Not compiled or tested +#TODO make libnettle work [source] git = "https://gitlab.com/sequoia-pgp/sequoia-sq" [build] template = "cargo" dependencies = [ "openssl1", + "libnettle", ] From 9cd55779abe3bb9b4b8042b3e4828bd984466309 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 8 Jun 2024 18:51:59 +0000 Subject: [PATCH 1793/3180] Update the keyscope recipe --- recipes/wip/security/keyscope/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/wip/security/keyscope/recipe.toml b/recipes/wip/security/keyscope/recipe.toml index 7dd56915..2e256576 100644 --- a/recipes/wip/security/keyscope/recipe.toml +++ b/recipes/wip/security/keyscope/recipe.toml @@ -3,6 +3,9 @@ git = "https://github.com/SpectralOps/keyscope" [build] template = "custom" +dependencies = [ + "openssl1", +] script = """ cookbook_cargo_packages keyscope """ From 96312239e10f14b7fcf42ae2d4ac30b031a30328 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 8 Jun 2024 18:55:58 +0000 Subject: [PATCH 1794/3180] Update recipes --- recipes/wip/security/cargo-scan/recipe.toml | 3 +++ recipes/wip/security/keyscope/recipe.toml | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/security/cargo-scan/recipe.toml b/recipes/wip/security/cargo-scan/recipe.toml index b5289b51..58bc7c26 100644 --- a/recipes/wip/security/cargo-scan/recipe.toml +++ b/recipes/wip/security/cargo-scan/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/PLSysSec/cargo-scan" [build] template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/security/keyscope/recipe.toml b/recipes/wip/security/keyscope/recipe.toml index 2e256576..0cbb3cd4 100644 --- a/recipes/wip/security/keyscope/recipe.toml +++ b/recipes/wip/security/keyscope/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/SpectralOps/keyscope" [build] From 1ac55f1c701033bde9ca788008c916885f964a62 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 8 Jun 2024 18:57:40 +0000 Subject: [PATCH 1795/3180] Update cargo-scan TODO --- recipes/wip/security/cargo-scan/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/security/cargo-scan/recipe.toml b/recipes/wip/security/cargo-scan/recipe.toml index 58bc7c26..35a573fb 100644 --- a/recipes/wip/security/cargo-scan/recipe.toml +++ b/recipes/wip/security/cargo-scan/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO ahash crate error [source] git = "https://github.com/PLSysSec/cargo-scan" [build] From 4e9ef6e1f4fe1d1ca1e9ab1f8a61cb55517c1ddc Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 8 Jun 2024 19:20:42 +0000 Subject: [PATCH 1796/3180] Add a recipe --- recipes/wip/libs/rustls-openssl-compat/recipe.toml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 recipes/wip/libs/rustls-openssl-compat/recipe.toml diff --git a/recipes/wip/libs/rustls-openssl-compat/recipe.toml b/recipes/wip/libs/rustls-openssl-compat/recipe.toml new file mode 100644 index 00000000..1d0a435b --- /dev/null +++ b/recipes/wip/libs/rustls-openssl-compat/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for GNU Make +[source] +git = "https://github.com/rustls/rustls-openssl-compat" +[build] +template = "custom" +script = """ +COOKBOOK_SOURCE="${COOKBOOK_SOURCE}/rustls-libssl" +""" From 200f22fd46c9d9bbc34435e1f715268e2770e339 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 8 Jun 2024 19:47:50 +0000 Subject: [PATCH 1797/3180] Add recipes --- recipes/wip/demos/notan-examples/recipe.toml | 9 +++++++++ recipes/wip/net/meli/recipe.toml | 11 +++++++++++ 2 files changed, 20 insertions(+) create mode 100644 recipes/wip/demos/notan-examples/recipe.toml create mode 100644 recipes/wip/net/meli/recipe.toml diff --git a/recipes/wip/demos/notan-examples/recipe.toml b/recipes/wip/demos/notan-examples/recipe.toml new file mode 100644 index 00000000..e86306be --- /dev/null +++ b/recipes/wip/demos/notan-examples/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Nazariglez/notan" +[build] +template = "custom" +script = """ +cookbook_cargo_examples renderer_cube draw_path_flower \ +game_pong game_of_life +""" diff --git a/recipes/wip/net/meli/recipe.toml b/recipes/wip/net/meli/recipe.toml new file mode 100644 index 00000000..a8cb523a --- /dev/null +++ b/recipes/wip/net/meli/recipe.toml @@ -0,0 +1,11 @@ +#TODO not compiled or tested +[source] +git = "https://git.meli-email.org/meli/meli" +[build] +template = "custom" +dependencies = [ + "sqlite3", +] +script = """ +cookbook_cargo_packages meli +""" From 738aa352bdaa185d2511393beedc53adba3eac5f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 8 Jun 2024 20:26:06 +0000 Subject: [PATCH 1798/3180] Update recipes --- recipes/wip/security/dfir-toolkit/recipe.toml | 3 +++ recipes/wip/security/veldora/recipe.toml | 2 +- recipes/wip/security/weggli/recipe.toml | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/wip/security/dfir-toolkit/recipe.toml b/recipes/wip/security/dfir-toolkit/recipe.toml index f80994c0..0117993b 100644 --- a/recipes/wip/security/dfir-toolkit/recipe.toml +++ b/recipes/wip/security/dfir-toolkit/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/dfir-dd/dfir-toolkit" [build] template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/security/veldora/recipe.toml b/recipes/wip/security/veldora/recipe.toml index 6c81e6af..c6eb25b5 100644 --- a/recipes/wip/security/veldora/recipe.toml +++ b/recipes/wip/security/veldora/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/tamton-aquib/veldora" [build] diff --git a/recipes/wip/security/weggli/recipe.toml b/recipes/wip/security/weggli/recipe.toml index 621a9930..7347cd43 100644 --- a/recipes/wip/security/weggli/recipe.toml +++ b/recipes/wip/security/weggli/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO source code error [source] git = "https://github.com/weggli-rs/weggli" [build] From 6ca4a5c8266e97ed58dd600ebb446e599f5bb3b9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 8 Jun 2024 20:54:05 +0000 Subject: [PATCH 1799/3180] Update recipes --- recipes/wip/graphics/dominant-colours/recipe.toml | 2 +- recipes/wip/graphics/hdr10plus-tool/recipe.toml | 2 +- recipes/wip/graphics/matugen/recipe.toml | 2 +- recipes/wip/graphics/oculante/recipe.toml | 6 +----- recipes/wip/graphics/pilka/recipe.toml | 2 +- recipes/wip/security/dfir-toolkit/recipe.toml | 2 +- recipes/wip/security/kanha/recipe.toml | 2 +- recipes/wip/security/sqop/recipe.toml | 5 ++++- recipes/wip/security/sss-cli/recipe.toml | 2 +- recipes/wip/security/stegano/recipe.toml | 2 +- recipes/wip/security/vagga/recipe.toml | 2 +- 11 files changed, 14 insertions(+), 15 deletions(-) diff --git a/recipes/wip/graphics/dominant-colours/recipe.toml b/recipes/wip/graphics/dominant-colours/recipe.toml index ba3dde09..cc92e191 100644 --- a/recipes/wip/graphics/dominant-colours/recipe.toml +++ b/recipes/wip/graphics/dominant-colours/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/alexwlchan/dominant_colours" [build] diff --git a/recipes/wip/graphics/hdr10plus-tool/recipe.toml b/recipes/wip/graphics/hdr10plus-tool/recipe.toml index b222fe91..b0d08f3c 100644 --- a/recipes/wip/graphics/hdr10plus-tool/recipe.toml +++ b/recipes/wip/graphics/hdr10plus-tool/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO yeslogic-fontconfig-sys crate error [source] git = "https://github.com/quietvoid/hdr10plus_tool" [build] diff --git a/recipes/wip/graphics/matugen/recipe.toml b/recipes/wip/graphics/matugen/recipe.toml index 9f12b258..7c3374d4 100644 --- a/recipes/wip/graphics/matugen/recipe.toml +++ b/recipes/wip/graphics/matugen/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/InioX/matugen" [build] diff --git a/recipes/wip/graphics/oculante/recipe.toml b/recipes/wip/graphics/oculante/recipe.toml index f538a9d2..72e854d0 100644 --- a/recipes/wip/graphics/oculante/recipe.toml +++ b/recipes/wip/graphics/oculante/recipe.toml @@ -1,12 +1,8 @@ -#TODO Not compiled or tested -#TODO probably missing dependencies +#TODO needs to be ported to Orbital [source] git = "https://github.com/woelper/oculante" -rev = "25b6ae94f743988be216dfd341dde159337d193d" [build] template = "cargo" dependencies = [ - "libxcb", - "libxfixes", "gtk3", ] diff --git a/recipes/wip/graphics/pilka/recipe.toml b/recipes/wip/graphics/pilka/recipe.toml index 412fc14b..ce576d59 100644 --- a/recipes/wip/graphics/pilka/recipe.toml +++ b/recipes/wip/graphics/pilka/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO winit crate error (after cargo update) [source] git = "https://github.com/pudnax/pilka" [build] diff --git a/recipes/wip/security/dfir-toolkit/recipe.toml b/recipes/wip/security/dfir-toolkit/recipe.toml index 0117993b..94dc1f6b 100644 --- a/recipes/wip/security/dfir-toolkit/recipe.toml +++ b/recipes/wip/security/dfir-toolkit/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO forensic-rs crate error [source] git = "https://github.com/dfir-dd/dfir-toolkit" [build] diff --git a/recipes/wip/security/kanha/recipe.toml b/recipes/wip/security/kanha/recipe.toml index 29019f60..a951070b 100644 --- a/recipes/wip/security/kanha/recipe.toml +++ b/recipes/wip/security/kanha/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO linking error (after cargo update) [source] git = "https://github.com/pwnwriter/kanha" [build] diff --git a/recipes/wip/security/sqop/recipe.toml b/recipes/wip/security/sqop/recipe.toml index c60c1972..8d567852 100644 --- a/recipes/wip/security/sqop/recipe.toml +++ b/recipes/wip/security/sqop/recipe.toml @@ -1,5 +1,8 @@ -#TODO Not compiled or tested +#TODO make libnettle work [source] git = "https://gitlab.com/sequoia-pgp/sequoia-sop" [build] template = "cargo" +dependencies = [ + "libnettle", +] diff --git a/recipes/wip/security/sss-cli/recipe.toml b/recipes/wip/security/sss-cli/recipe.toml index dbd8cfed..89916685 100644 --- a/recipes/wip/security/sss-cli/recipe.toml +++ b/recipes/wip/security/sss-cli/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO source code error (after cargo update) [source] git = "https://github.com/dsprenkels/sss-cli" [build] diff --git a/recipes/wip/security/stegano/recipe.toml b/recipes/wip/security/stegano/recipe.toml index 9e8618d8..1e67ce41 100644 --- a/recipes/wip/security/stegano/recipe.toml +++ b/recipes/wip/security/stegano/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO require a command to move the binary [source] git = "https://github.com/steganogram/stegano-rs" [build] diff --git a/recipes/wip/security/vagga/recipe.toml b/recipes/wip/security/vagga/recipe.toml index f1da02ed..e284538b 100644 --- a/recipes/wip/security/vagga/recipe.toml +++ b/recipes/wip/security/vagga/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO libc and nix crate errors (after cargo update) [source] git = "https://github.com/tailhook/vagga" [build] From 7e238339c94ec2df9c4d8260b71b51e4bf5aaf68 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sun, 9 Jun 2024 16:56:10 +0200 Subject: [PATCH 1800/3180] Fix divergence between aarch64 init.rc and init.rc.raspi3bp --- recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp b/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp index 6f109e94..5c7962c3 100644 --- a/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp +++ b/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp @@ -1,5 +1,6 @@ export PATH /scheme/initfs/bin export TMPDIR /tmp +export RUST_BACKTRACE 1 nulld zerod randd From e47df787a48f119ba111d133d7f2933dcee5c526 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 9 Jun 2024 22:31:41 +0000 Subject: [PATCH 1801/3180] Update recipes --- recipes/wip/demos/notan-examples/recipe.toml | 2 +- recipes/wip/net/lynx/recipe.toml | 2 +- recipes/wip/tools/mosh/recipe.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/wip/demos/notan-examples/recipe.toml b/recipes/wip/demos/notan-examples/recipe.toml index e86306be..6a73d375 100644 --- a/recipes/wip/demos/notan-examples/recipe.toml +++ b/recipes/wip/demos/notan-examples/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO environment leak on CMake [source] git = "https://github.com/Nazariglez/notan" [build] diff --git a/recipes/wip/net/lynx/recipe.toml b/recipes/wip/net/lynx/recipe.toml index 1ac40e8d..6b8a6800 100644 --- a/recipes/wip/net/lynx/recipe.toml +++ b/recipes/wip/net/lynx/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compilation error [source] tar = "https://invisible-island.net/archives/lynx/tarballs/lynx2.8.9rel.1.tar.gz" [build] diff --git a/recipes/wip/tools/mosh/recipe.toml b/recipes/wip/tools/mosh/recipe.toml index d2eb5a40..8302a982 100644 --- a/recipes/wip/tools/mosh/recipe.toml +++ b/recipes/wip/tools/mosh/recipe.toml @@ -1,6 +1,6 @@ #TODO not compiled or tested [source] -tar = "https://mosh.org/mosh-1.4.0.tar.gz" +tar = "https://github.com/mobile-shell/mosh/releases/download/mosh-1.4.0/mosh-1.4.0.tar.gz" [build] template = "custom" dependencies = [ From adedb15da5a710fbc7d8666720cdc2fd667dc10c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 9 Jun 2024 22:42:10 +0000 Subject: [PATCH 1802/3180] Update recipes --- recipes/wip/net/meli/recipe.toml | 2 +- recipes/wip/tools/mosh/recipe.toml | 2 +- recipes/wip/tools/posixutils-rs/recipe.toml | 27 +++++++++++++++++++-- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/recipes/wip/net/meli/recipe.toml b/recipes/wip/net/meli/recipe.toml index a8cb523a..82aab325 100644 --- a/recipes/wip/net/meli/recipe.toml +++ b/recipes/wip/net/meli/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO ahash crate error [source] git = "https://git.meli-email.org/meli/meli" [build] diff --git a/recipes/wip/tools/mosh/recipe.toml b/recipes/wip/tools/mosh/recipe.toml index 8302a982..f5dcad4f 100644 --- a/recipes/wip/tools/mosh/recipe.toml +++ b/recipes/wip/tools/mosh/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO missing header files [source] tar = "https://github.com/mobile-shell/mosh/releases/download/mosh-1.4.0/mosh-1.4.0.tar.gz" [build] diff --git a/recipes/wip/tools/posixutils-rs/recipe.toml b/recipes/wip/tools/posixutils-rs/recipe.toml index c49fdb2c..22a99c63 100644 --- a/recipes/wip/tools/posixutils-rs/recipe.toml +++ b/recipes/wip/tools/posixutils-rs/recipe.toml @@ -4,6 +4,29 @@ git = "https://github.com/rustcoreutils/posixutils-rs" [build] template = "custom" script = """ -cookbook_cargo_packages calc datetime dev display file \ -fs misc pathnames plib process screen sys text tree users xform +cookbook_cargo + +BIN=( + calc + datetime + dev + display + file + fs + misc + pathnames + plib + process + screen + sys + text + tree + users + xform +) + +for bin in "${BINS[@]}" +do + ln -sv coreutils "${COOKBOOK_STAGE}/usr/bin/$bin" +done """ From 75ee7e502cb8bb06121006555b55e51f655a0ef1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 9 Jun 2024 22:48:02 +0000 Subject: [PATCH 1803/3180] Update a recipe --- recipes/wip/tools/posixutils-rs/recipe.toml | 47 +++++++++++---------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/recipes/wip/tools/posixutils-rs/recipe.toml b/recipes/wip/tools/posixutils-rs/recipe.toml index 22a99c63..c4f31bea 100644 --- a/recipes/wip/tools/posixutils-rs/recipe.toml +++ b/recipes/wip/tools/posixutils-rs/recipe.toml @@ -4,29 +4,30 @@ git = "https://github.com/rustcoreutils/posixutils-rs" [build] template = "custom" script = """ -cookbook_cargo +cookbook_cargo --bin calc datetime dev display file \ +fs misc pathnames plib process screen sys text tree users xform -BIN=( - calc - datetime - dev - display - file - fs - misc - pathnames - plib - process - screen - sys - text - tree - users - xform -) +#BIN=( +# calc +# datetime +# dev +# display +# file +# fs +# misc +# pathnames +# plib +# process +# screen +# sys +# text +# tree +# users +# xform +#) -for bin in "${BINS[@]}" -do - ln -sv coreutils "${COOKBOOK_STAGE}/usr/bin/$bin" -done +#for bin in "${BINS[@]}" +#do +# ln -sv coreutils "${COOKBOOK_STAGE}/usr/bin/$bin" +#done """ From d1334b80c9546ff393b0640b19b0cec215150db1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 9 Jun 2024 22:51:05 +0000 Subject: [PATCH 1804/3180] Update recipes --- recipes/wip/tools/humphrey/recipe.toml | 2 +- recipes/wip/tools/posixutils-rs/recipe.toml | 30 +-------------------- 2 files changed, 2 insertions(+), 30 deletions(-) diff --git a/recipes/wip/tools/humphrey/recipe.toml b/recipes/wip/tools/humphrey/recipe.toml index 19c4e438..05a08b66 100644 --- a/recipes/wip/tools/humphrey/recipe.toml +++ b/recipes/wip/tools/humphrey/recipe.toml @@ -4,7 +4,7 @@ git = "https://github.com/w-henderson/Humphrey" [build] template = "custom" script = """ -binary=humphrey_server +binary=humphrey "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ --bin "${binary}" \ diff --git a/recipes/wip/tools/posixutils-rs/recipe.toml b/recipes/wip/tools/posixutils-rs/recipe.toml index c4f31bea..29125ae1 100644 --- a/recipes/wip/tools/posixutils-rs/recipe.toml +++ b/recipes/wip/tools/posixutils-rs/recipe.toml @@ -1,33 +1,5 @@ -#TODO not compiled or tested +#TODO require a customized Cargo script [source] git = "https://github.com/rustcoreutils/posixutils-rs" [build] template = "custom" -script = """ -cookbook_cargo --bin calc datetime dev display file \ -fs misc pathnames plib process screen sys text tree users xform - -#BIN=( -# calc -# datetime -# dev -# display -# file -# fs -# misc -# pathnames -# plib -# process -# screen -# sys -# text -# tree -# users -# xform -#) - -#for bin in "${BINS[@]}" -#do -# ln -sv coreutils "${COOKBOOK_STAGE}/usr/bin/$bin" -#done -""" From 98f558ec4c7ea41a72a2565ee0ba37032b9c4d4e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 9 Jun 2024 22:59:01 +0000 Subject: [PATCH 1805/3180] Update recipes --- recipes/wip/libs/cairomm-1.16+/recipe.toml | 6 +++++- recipes/wip/tools/humphrey/recipe.toml | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/recipes/wip/libs/cairomm-1.16+/recipe.toml b/recipes/wip/libs/cairomm-1.16+/recipe.toml index ede1e97c..860a4c04 100644 --- a/recipes/wip/libs/cairomm-1.16+/recipe.toml +++ b/recipes/wip/libs/cairomm-1.16+/recipe.toml @@ -2,7 +2,11 @@ [source] tar = "https://www.cairographics.org/releases/cairomm-1.18.0.tar.xz" [build] -template = "configure" +template = "custom" dependencies = [ "cairo", ] +script = """ +./autogen.sh +cookbook_configure +""" diff --git a/recipes/wip/tools/humphrey/recipe.toml b/recipes/wip/tools/humphrey/recipe.toml index 05a08b66..a0943689 100644 --- a/recipes/wip/tools/humphrey/recipe.toml +++ b/recipes/wip/tools/humphrey/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO Bash can't detect the "--all-features" flag on the script [source] git = "https://github.com/w-henderson/Humphrey" [build] From 4e8b81c2731a9e29cfb45e9b58541441f3e23172 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 9 Jun 2024 23:45:42 +0000 Subject: [PATCH 1806/3180] Update recipes --- recipes/wip/libs/cairomm-1.0+/recipe.toml | 2 +- recipes/wip/libs/cairomm-1.16+/recipe.toml | 2 +- recipes/wip/libs/libharu/recipe.toml | 2 +- recipes/wip/libs/wolfssl5/recipe.toml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/recipes/wip/libs/cairomm-1.0+/recipe.toml b/recipes/wip/libs/cairomm-1.0+/recipe.toml index f370b5b5..81b53b05 100644 --- a/recipes/wip/libs/cairomm-1.0+/recipe.toml +++ b/recipes/wip/libs/cairomm-1.0+/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO patch the GNU Autotools configuration to recognize Redox [source] tar = "https://www.cairographics.org/releases/cairomm-1.15.5.tar.gz" [build] diff --git a/recipes/wip/libs/cairomm-1.16+/recipe.toml b/recipes/wip/libs/cairomm-1.16+/recipe.toml index 860a4c04..d0c90e71 100644 --- a/recipes/wip/libs/cairomm-1.16+/recipe.toml +++ b/recipes/wip/libs/cairomm-1.16+/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO the tarball contents aren't copied to the "build" folder [source] tar = "https://www.cairographics.org/releases/cairomm-1.18.0.tar.xz" [build] diff --git a/recipes/wip/libs/libharu/recipe.toml b/recipes/wip/libs/libharu/recipe.toml index ff4d2e03..48171d07 100644 --- a/recipes/wip/libs/libharu/recipe.toml +++ b/recipes/wip/libs/libharu/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO the git repository contents aren't copied to the "build" folder [source] git = "https://github.com/libharu/libharu" rev = "0c598becaadaef8e3d12b883f9fc2864a118c12d" diff --git a/recipes/wip/libs/wolfssl5/recipe.toml b/recipes/wip/libs/wolfssl5/recipe.toml index 4fa81176..028670df 100644 --- a/recipes/wip/libs/wolfssl5/recipe.toml +++ b/recipes/wip/libs/wolfssl5/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO the git repository contents aren't copied to the "build" folder [source] git = "https://github.com/wolfSSL/wolfssl" rev = "37884f864d6fd9b04f44677cb04da15d0c9d6526" From a4d91cd66c1ba7b6ad436fc586e045836e9d010a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 02:39:36 +0000 Subject: [PATCH 1807/3180] Update recipes --- recipes/wip/benchmarks/canbench/recipe.toml | 2 +- recipes/wip/benchmarks/cargo-criterion/recipe.toml | 2 +- recipes/wip/graphics/dify/recipe.toml | 2 +- recipes/wip/graphics/dssim/recipe.toml | 2 +- recipes/wip/graphics/jxl-oxide/recipe.toml | 2 +- recipes/wip/graphics/kantig/recipe.toml | 2 +- recipes/wip/graphics/ocrs/recipe.toml | 2 +- recipes/wip/graphics/rascii/recipe.toml | 2 +- recipes/wip/graphics/rimage/recipe.toml | 2 +- recipes/wip/libs/lzlib/recipe.toml | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/recipes/wip/benchmarks/canbench/recipe.toml b/recipes/wip/benchmarks/canbench/recipe.toml index 26ee7e54..383443b2 100644 --- a/recipes/wip/benchmarks/canbench/recipe.toml +++ b/recipes/wip/benchmarks/canbench/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/dfinity/canbench" [build] diff --git a/recipes/wip/benchmarks/cargo-criterion/recipe.toml b/recipes/wip/benchmarks/cargo-criterion/recipe.toml index 5e684034..6ba7cb27 100644 --- a/recipes/wip/benchmarks/cargo-criterion/recipe.toml +++ b/recipes/wip/benchmarks/cargo-criterion/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/bheisler/cargo-criterion" [build] diff --git a/recipes/wip/graphics/dify/recipe.toml b/recipes/wip/graphics/dify/recipe.toml index ca5050b3..4c782143 100644 --- a/recipes/wip/graphics/dify/recipe.toml +++ b/recipes/wip/graphics/dify/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/jihchi/dify" [build] diff --git a/recipes/wip/graphics/dssim/recipe.toml b/recipes/wip/graphics/dssim/recipe.toml index af5795f2..2a61ed07 100644 --- a/recipes/wip/graphics/dssim/recipe.toml +++ b/recipes/wip/graphics/dssim/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/kornelski/dssim" [build] diff --git a/recipes/wip/graphics/jxl-oxide/recipe.toml b/recipes/wip/graphics/jxl-oxide/recipe.toml index d025db41..57db5289 100644 --- a/recipes/wip/graphics/jxl-oxide/recipe.toml +++ b/recipes/wip/graphics/jxl-oxide/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO missing header on compilation [source] git = "https://github.com/tirr-c/jxl-oxide" [build] diff --git a/recipes/wip/graphics/kantig/recipe.toml b/recipes/wip/graphics/kantig/recipe.toml index 4814f097..b3700a09 100644 --- a/recipes/wip/graphics/kantig/recipe.toml +++ b/recipes/wip/graphics/kantig/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/DenSASoftware/kantig" [build] diff --git a/recipes/wip/graphics/ocrs/recipe.toml b/recipes/wip/graphics/ocrs/recipe.toml index 70baa607..ec623d78 100644 --- a/recipes/wip/graphics/ocrs/recipe.toml +++ b/recipes/wip/graphics/ocrs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO add a command to move the executable to a propeer folder [source] git = "https://github.com/robertknight/ocrs" [build] diff --git a/recipes/wip/graphics/rascii/recipe.toml b/recipes/wip/graphics/rascii/recipe.toml index 2450966f..2eeb5a11 100644 --- a/recipes/wip/graphics/rascii/recipe.toml +++ b/recipes/wip/graphics/rascii/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/orhnk/RASCII" [build] diff --git a/recipes/wip/graphics/rimage/recipe.toml b/recipes/wip/graphics/rimage/recipe.toml index 0792b172..34b0f135 100644 --- a/recipes/wip/graphics/rimage/recipe.toml +++ b/recipes/wip/graphics/rimage/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/SalOne22/rimage" [build] diff --git a/recipes/wip/libs/lzlib/recipe.toml b/recipes/wip/libs/lzlib/recipe.toml index 15b2f153..a092f870 100644 --- a/recipes/wip/libs/lzlib/recipe.toml +++ b/recipes/wip/libs/lzlib/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] tar = "https://download.savannah.gnu.org/releases/lzip/lzlib/lzlib-1.14.tar.gz" [build] From e5ef46e86c978c93b9d36832e4d954524f34d3da Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 02:49:36 +0000 Subject: [PATCH 1808/3180] Update recipes --- recipes/wip/benchmarks/cargo-benchcmp/recipe.toml | 2 +- recipes/wip/benchmarks/glassbench/recipe.toml | 5 ++++- recipes/wip/benchmarks/rpc-perf/recipe.toml | 5 ++++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/recipes/wip/benchmarks/cargo-benchcmp/recipe.toml b/recipes/wip/benchmarks/cargo-benchcmp/recipe.toml index 20a17594..90833c27 100644 --- a/recipes/wip/benchmarks/cargo-benchcmp/recipe.toml +++ b/recipes/wip/benchmarks/cargo-benchcmp/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/BurntSushi/cargo-benchcmp" [build] diff --git a/recipes/wip/benchmarks/glassbench/recipe.toml b/recipes/wip/benchmarks/glassbench/recipe.toml index d9365c2d..d794bd47 100644 --- a/recipes/wip/benchmarks/glassbench/recipe.toml +++ b/recipes/wip/benchmarks/glassbench/recipe.toml @@ -2,4 +2,7 @@ [source] git = "https://github.com/Canop/glassbench" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_examples lettersorter +""" diff --git a/recipes/wip/benchmarks/rpc-perf/recipe.toml b/recipes/wip/benchmarks/rpc-perf/recipe.toml index 2e08d05b..be0a4045 100644 --- a/recipes/wip/benchmarks/rpc-perf/recipe.toml +++ b/recipes/wip/benchmarks/rpc-perf/recipe.toml @@ -1,5 +1,8 @@ -#TODO Not compiled or tested +#TODO make zstd work [source] git = "https://github.com/iopsystems/rpc-perf" [build] template = "cargo" +dependencies = [ + "zstd", +] From f4170e62ec64d2ac3dcf5e41e2beaa3875555b7a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 02:50:40 +0000 Subject: [PATCH 1809/3180] Rename a recipe --- .../wip/benchmarks/{glassbench => glassbench-example}/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/benchmarks/{glassbench => glassbench-example}/recipe.toml (100%) diff --git a/recipes/wip/benchmarks/glassbench/recipe.toml b/recipes/wip/benchmarks/glassbench-example/recipe.toml similarity index 100% rename from recipes/wip/benchmarks/glassbench/recipe.toml rename to recipes/wip/benchmarks/glassbench-example/recipe.toml From 73f75d127aebcc88109afb06cb40f15b870dd6fc Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 02:52:47 +0000 Subject: [PATCH 1810/3180] Remove a recipe --- recipes/wip/benchmarks/glassbench-example/recipe.toml | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 recipes/wip/benchmarks/glassbench-example/recipe.toml diff --git a/recipes/wip/benchmarks/glassbench-example/recipe.toml b/recipes/wip/benchmarks/glassbench-example/recipe.toml deleted file mode 100644 index d794bd47..00000000 --- a/recipes/wip/benchmarks/glassbench-example/recipe.toml +++ /dev/null @@ -1,8 +0,0 @@ -#TODO Not compiled or tested -[source] -git = "https://github.com/Canop/glassbench" -[build] -template = "custom" -script = """ -cookbook_cargo_examples lettersorter -""" From 4f7a07bea9af53fb18f18eb01759af0dbd1841ee Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 09:20:31 +0000 Subject: [PATCH 1811/3180] Update a recipe --- recipes/wip/demos/ferris-says/recipe.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/demos/ferris-says/recipe.toml b/recipes/wip/demos/ferris-says/recipe.toml index f42b0fcc..e505773a 100644 --- a/recipes/wip/demos/ferris-says/recipe.toml +++ b/recipes/wip/demos/ferris-says/recipe.toml @@ -2,4 +2,7 @@ [source] git = "https://github.com/rust-lang/ferris-says" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages fsays +""" From 2e4b2a72cf6f42797762f0c60564091be64d012b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 09:49:04 +0000 Subject: [PATCH 1812/3180] Update recipes --- recipes/wip/demos/ferris-says/recipe.toml | 2 +- recipes/wip/demos/fractal-rs/recipe.toml | 2 +- recipes/wip/doc/tendril-wiki/recipe.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/wip/demos/ferris-says/recipe.toml b/recipes/wip/demos/ferris-says/recipe.toml index e505773a..4bf90364 100644 --- a/recipes/wip/demos/ferris-says/recipe.toml +++ b/recipes/wip/demos/ferris-says/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/rust-lang/ferris-says" [build] diff --git a/recipes/wip/demos/fractal-rs/recipe.toml b/recipes/wip/demos/fractal-rs/recipe.toml index 2032d1bd..f31f377d 100644 --- a/recipes/wip/demos/fractal-rs/recipe.toml +++ b/recipes/wip/demos/fractal-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO glutin crate error [source] git = "https://github.com/aetherknight/fractal-rs" [build] diff --git a/recipes/wip/doc/tendril-wiki/recipe.toml b/recipes/wip/doc/tendril-wiki/recipe.toml index b7fc364a..c6b151d8 100644 --- a/recipes/wip/doc/tendril-wiki/recipe.toml +++ b/recipes/wip/doc/tendril-wiki/recipe.toml @@ -4,5 +4,5 @@ git = "https://github.com/jamestthompson3/tendril-wiki" [build] template = "custom" script = """ -cookbook_cargo_packages bin +cookbook_cargo_packages tendril """ From 5cac96e2a61671ba913f1eaeebc68fa89e2cca75 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 09:50:53 +0000 Subject: [PATCH 1813/3180] Update a recipe --- recipes/wip/doc/tendril-wiki/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/doc/tendril-wiki/recipe.toml b/recipes/wip/doc/tendril-wiki/recipe.toml index c6b151d8..7e3c7e85 100644 --- a/recipes/wip/doc/tendril-wiki/recipe.toml +++ b/recipes/wip/doc/tendril-wiki/recipe.toml @@ -4,5 +4,5 @@ git = "https://github.com/jamestthompson3/tendril-wiki" [build] template = "custom" script = """ -cookbook_cargo_packages tendril +cookbook_cargo_packages tendril@1.0.10 """ From cd150aea24a2d8cc840abb97181cbc25d115d378 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 10:08:48 +0000 Subject: [PATCH 1814/3180] Update recipes --- recipes/wip/doc/newdoc/recipe.toml | 2 +- recipes/wip/doc/tendril-wiki/recipe.toml | 2 +- recipes/wip/tools/crunchy-cli/recipe.toml | 1 - recipes/wip/tools/xdvdfs/recipe.toml | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/recipes/wip/doc/newdoc/recipe.toml b/recipes/wip/doc/newdoc/recipe.toml index 1bb42996..42e18817 100644 --- a/recipes/wip/doc/newdoc/recipe.toml +++ b/recipes/wip/doc/newdoc/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/redhat-documentation/newdoc" [build] diff --git a/recipes/wip/doc/tendril-wiki/recipe.toml b/recipes/wip/doc/tendril-wiki/recipe.toml index 7e3c7e85..044af2b6 100644 --- a/recipes/wip/doc/tendril-wiki/recipe.toml +++ b/recipes/wip/doc/tendril-wiki/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO require a patch to update the ring crate [source] git = "https://github.com/jamestthompson3/tendril-wiki" [build] diff --git a/recipes/wip/tools/crunchy-cli/recipe.toml b/recipes/wip/tools/crunchy-cli/recipe.toml index e866bbd9..adb5d6c5 100644 --- a/recipes/wip/tools/crunchy-cli/recipe.toml +++ b/recipes/wip/tools/crunchy-cli/recipe.toml @@ -1,6 +1,5 @@ #TODO Not compiled or tested [source] git = "https://github.com/crunchy-labs/crunchy-cli" -rev = "8fff807ae68b61931aa8b1c899b8c8bba4df0784" [build] template = "cargo" diff --git a/recipes/wip/tools/xdvdfs/recipe.toml b/recipes/wip/tools/xdvdfs/recipe.toml index 22287ea1..0e6c3787 100644 --- a/recipes/wip/tools/xdvdfs/recipe.toml +++ b/recipes/wip/tools/xdvdfs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO require a command to move the executable to a proper folder [source] git = "https://github.com/antangelo/xdvdfs" [build] From 6ab06a80c4091c7ddcc7463f44f93dcc9a37f701 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 10:10:22 +0000 Subject: [PATCH 1815/3180] Update a recipe --- recipes/wip/tools/crunchy-cli/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/wip/tools/crunchy-cli/recipe.toml b/recipes/wip/tools/crunchy-cli/recipe.toml index adb5d6c5..5b33a0e4 100644 --- a/recipes/wip/tools/crunchy-cli/recipe.toml +++ b/recipes/wip/tools/crunchy-cli/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/crunchy-labs/crunchy-cli" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 960faf027fdd1e853864e765433a8e7e63dad29a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 10:13:36 +0000 Subject: [PATCH 1816/3180] Update recipes --- recipes/wip/tools/crunchy-cli/recipe.toml | 2 +- recipes/wip/tools/objdiff/recipe.toml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/tools/crunchy-cli/recipe.toml b/recipes/wip/tools/crunchy-cli/recipe.toml index 5b33a0e4..d651b3a0 100644 --- a/recipes/wip/tools/crunchy-cli/recipe.toml +++ b/recipes/wip/tools/crunchy-cli/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO fs2 crate error [source] git = "https://github.com/crunchy-labs/crunchy-cli" [build] diff --git a/recipes/wip/tools/objdiff/recipe.toml b/recipes/wip/tools/objdiff/recipe.toml index a8dd0b51..391f183c 100644 --- a/recipes/wip/tools/objdiff/recipe.toml +++ b/recipes/wip/tools/objdiff/recipe.toml @@ -3,6 +3,9 @@ git = "https://github.com/encounter/objdiff" [build] template = "custom" +dependencies = [ + "openssl1", +] script = """ cookbook_cargo_packages objdiff-gui objdiff-cli """ From 36fd13c2dc0edaa6125caf113659536da54b142d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 10:15:08 +0000 Subject: [PATCH 1817/3180] Update a recipe --- recipes/wip/tools/objdiff/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/tools/objdiff/recipe.toml b/recipes/wip/tools/objdiff/recipe.toml index 391f183c..9cecf445 100644 --- a/recipes/wip/tools/objdiff/recipe.toml +++ b/recipes/wip/tools/objdiff/recipe.toml @@ -5,6 +5,7 @@ git = "https://github.com/encounter/objdiff" template = "custom" dependencies = [ "openssl1", + "fontconfig", ] script = """ cookbook_cargo_packages objdiff-gui objdiff-cli From f465aa617ba136c4ae5661260a915ae963cd3c4c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 10:19:03 +0000 Subject: [PATCH 1818/3180] Update recipes --- recipes/wip/tools/helix-gpui/recipe.toml | 3 +++ recipes/wip/tools/objdiff/recipe.toml | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/tools/helix-gpui/recipe.toml b/recipes/wip/tools/helix-gpui/recipe.toml index 8497aad9..af2a614f 100644 --- a/recipes/wip/tools/helix-gpui/recipe.toml +++ b/recipes/wip/tools/helix-gpui/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/polachok/helix-gpui" [build] template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/tools/objdiff/recipe.toml b/recipes/wip/tools/objdiff/recipe.toml index 9cecf445..36994df5 100644 --- a/recipes/wip/tools/objdiff/recipe.toml +++ b/recipes/wip/tools/objdiff/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO can't find the fontconfig dependency [source] git = "https://github.com/encounter/objdiff" [build] From 78e07c5a79fb84795deb3fc175c420ad77f121d6 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 10:28:09 +0000 Subject: [PATCH 1819/3180] Update recipes --- recipes/wip/tools/helix-gpui/recipe.toml | 3 ++- recipes/wip/tools/rana/recipe.toml | 2 +- recipes/wip/tools/tl-rs/recipe.toml | 3 +++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/recipes/wip/tools/helix-gpui/recipe.toml b/recipes/wip/tools/helix-gpui/recipe.toml index af2a614f..91e2d934 100644 --- a/recipes/wip/tools/helix-gpui/recipe.toml +++ b/recipes/wip/tools/helix-gpui/recipe.toml @@ -1,8 +1,9 @@ -#TODO Not compiled or tested +#TODO can't find the fontconfig dependency [source] git = "https://github.com/polachok/helix-gpui" [build] template = "cargo" dependencies = [ "openssl1", + "fontconfig", ] diff --git a/recipes/wip/tools/rana/recipe.toml b/recipes/wip/tools/rana/recipe.toml index 4fa83830..9ce7417a 100644 --- a/recipes/wip/tools/rana/recipe.toml +++ b/recipes/wip/tools/rana/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/grunch/rana" [build] diff --git a/recipes/wip/tools/tl-rs/recipe.toml b/recipes/wip/tools/tl-rs/recipe.toml index 691ab2e3..70b332f5 100644 --- a/recipes/wip/tools/tl-rs/recipe.toml +++ b/recipes/wip/tools/tl-rs/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/NewDawn0/tl" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 419f4385cd7baf0531442dc2c7729a164b605a4a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 10:48:58 +0000 Subject: [PATCH 1820/3180] Update recipes --- recipes/wip/tools/arrow-tools/recipe.toml | 2 +- recipes/wip/tools/conserve/recipe.toml | 2 +- recipes/wip/tools/goldboot/recipe.toml | 2 +- recipes/wip/tools/lzip/recipe.toml | 2 +- recipes/wip/tools/rq/recipe.toml | 2 +- recipes/wip/tools/tl-rs/recipe.toml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/recipes/wip/tools/arrow-tools/recipe.toml b/recipes/wip/tools/arrow-tools/recipe.toml index 92a14641..08d9ab15 100644 --- a/recipes/wip/tools/arrow-tools/recipe.toml +++ b/recipes/wip/tools/arrow-tools/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/domoritz/arrow-tools" [build] diff --git a/recipes/wip/tools/conserve/recipe.toml b/recipes/wip/tools/conserve/recipe.toml index 4fa0455d..d46236ce 100644 --- a/recipes/wip/tools/conserve/recipe.toml +++ b/recipes/wip/tools/conserve/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/sourcefrog/conserve" [build] diff --git a/recipes/wip/tools/goldboot/recipe.toml b/recipes/wip/tools/goldboot/recipe.toml index aee8d26d..b9faf4a0 100644 --- a/recipes/wip/tools/goldboot/recipe.toml +++ b/recipes/wip/tools/goldboot/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO use a data type that don't download the private git submodules [source] git = "https://github.com/fossable/goldboot" [build] diff --git a/recipes/wip/tools/lzip/recipe.toml b/recipes/wip/tools/lzip/recipe.toml index 1d59f02c..070f1835 100644 --- a/recipes/wip/tools/lzip/recipe.toml +++ b/recipes/wip/tools/lzip/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] tar = "https://download.savannah.gnu.org/releases/lzip/lzip-1.24.1.tar.gz" [build] diff --git a/recipes/wip/tools/rq/recipe.toml b/recipes/wip/tools/rq/recipe.toml index d7b4d409..b38d99f0 100644 --- a/recipes/wip/tools/rq/recipe.toml +++ b/recipes/wip/tools/rq/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO record-query crate error [source] git = "https://github.com/dflemstr/rq" [build] diff --git a/recipes/wip/tools/tl-rs/recipe.toml b/recipes/wip/tools/tl-rs/recipe.toml index 70b332f5..cc90fe4a 100644 --- a/recipes/wip/tools/tl-rs/recipe.toml +++ b/recipes/wip/tools/tl-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/NewDawn0/tl" [build] From 8240507e9e0da71469e74986141f170ad30ea855 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 11:31:47 +0000 Subject: [PATCH 1821/3180] Update recipes --- recipes/wip/tools/bacup/recipe.toml | 2 +- recipes/wip/tools/diffr/recipe.toml | 2 +- recipes/wip/tools/diffy/recipe.toml | 5 ++++- recipes/wip/tools/lines-rs/recipe.toml | 2 +- recipes/wip/tools/minmon/recipe.toml | 2 +- recipes/wip/tools/ruke/recipe.toml | 2 +- recipes/wip/tools/sam/recipe.toml | 3 ++- recipes/wip/tools/snappy-rs/recipe.toml | 2 +- 8 files changed, 12 insertions(+), 8 deletions(-) diff --git a/recipes/wip/tools/bacup/recipe.toml b/recipes/wip/tools/bacup/recipe.toml index f0416671..fec97a8c 100644 --- a/recipes/wip/tools/bacup/recipe.toml +++ b/recipes/wip/tools/bacup/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO tokio-tar crate error #TODO create a service [source] git = "https://github.com/galeone/bacup" diff --git a/recipes/wip/tools/diffr/recipe.toml b/recipes/wip/tools/diffr/recipe.toml index 0c0552ce..1d0abdae 100644 --- a/recipes/wip/tools/diffr/recipe.toml +++ b/recipes/wip/tools/diffr/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/mookid/diffr" [build] diff --git a/recipes/wip/tools/diffy/recipe.toml b/recipes/wip/tools/diffy/recipe.toml index 93c0c49e..d138b0d6 100644 --- a/recipes/wip/tools/diffy/recipe.toml +++ b/recipes/wip/tools/diffy/recipe.toml @@ -2,4 +2,7 @@ [source] git = "https://github.com/bmwill/diffy" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages diffy +""" diff --git a/recipes/wip/tools/lines-rs/recipe.toml b/recipes/wip/tools/lines-rs/recipe.toml index b14c5cd6..20f90c92 100644 --- a/recipes/wip/tools/lines-rs/recipe.toml +++ b/recipes/wip/tools/lines-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO jemalloc-sys crate error [source] git = "https://github.com/ryanfowler/lines" [build] diff --git a/recipes/wip/tools/minmon/recipe.toml b/recipes/wip/tools/minmon/recipe.toml index bae2593b..5c6f9e96 100644 --- a/recipes/wip/tools/minmon/recipe.toml +++ b/recipes/wip/tools/minmon/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO port to redox [source] git = "https://github.com/flo-at/minmon" [build] diff --git a/recipes/wip/tools/ruke/recipe.toml b/recipes/wip/tools/ruke/recipe.toml index 5377fbc3..da95233a 100644 --- a/recipes/wip/tools/ruke/recipe.toml +++ b/recipes/wip/tools/ruke/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/kauefraga/ruke" [build] diff --git a/recipes/wip/tools/sam/recipe.toml b/recipes/wip/tools/sam/recipe.toml index e64ecdb7..45b56c87 100644 --- a/recipes/wip/tools/sam/recipe.toml +++ b/recipes/wip/tools/sam/recipe.toml @@ -1,4 +1,5 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) +#TODO add a command to properly move the executable [source] git = "https://github.com/r-zenine/sam" [build] diff --git a/recipes/wip/tools/snappy-rs/recipe.toml b/recipes/wip/tools/snappy-rs/recipe.toml index 63e390a5..dcb9e3ff 100644 --- a/recipes/wip/tools/snappy-rs/recipe.toml +++ b/recipes/wip/tools/snappy-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/BurntSushi/rust-snappy" [build] From 635bc488f3ac004b7797a1bddaad84da99ee1e9c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 11:49:44 +0000 Subject: [PATCH 1822/3180] Update recipes --- recipes/wip/tools/diffy/recipe.toml | 3 ++- recipes/wip/tools/haylxon/recipe.toml | 2 +- recipes/wip/tools/hoard/recipe.toml | 3 +++ recipes/wip/tools/tarlz/recipe.toml | 2 +- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/recipes/wip/tools/diffy/recipe.toml b/recipes/wip/tools/diffy/recipe.toml index d138b0d6..91eaa010 100644 --- a/recipes/wip/tools/diffy/recipe.toml +++ b/recipes/wip/tools/diffy/recipe.toml @@ -1,4 +1,5 @@ -#TODO Not compiled or tested +#TODO add a command to properly move the executable +#TODO compiled but not tested [source] git = "https://github.com/bmwill/diffy" [build] diff --git a/recipes/wip/tools/haylxon/recipe.toml b/recipes/wip/tools/haylxon/recipe.toml index 38346aea..cbcf1627 100644 --- a/recipes/wip/tools/haylxon/recipe.toml +++ b/recipes/wip/tools/haylxon/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/pwnwriter/haylxon" [build] diff --git a/recipes/wip/tools/hoard/recipe.toml b/recipes/wip/tools/hoard/recipe.toml index 446a1b75..3495a7be 100644 --- a/recipes/wip/tools/hoard/recipe.toml +++ b/recipes/wip/tools/hoard/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/Hyde46/hoard" [build] template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/tools/tarlz/recipe.toml b/recipes/wip/tools/tarlz/recipe.toml index 5972ff99..0985a0c2 100644 --- a/recipes/wip/tools/tarlz/recipe.toml +++ b/recipes/wip/tools/tarlz/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO missing header files [source] tar = "https://download.savannah.gnu.org/releases/lzip/tarlz/tarlz-0.25.tar.lz" [build] From d01e2bd383e3d5962fe50bb55997382de91b1881 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 13:07:39 +0000 Subject: [PATCH 1823/3180] Update recipes --- recipes/wip/tools/bdt/recipe.toml | 2 +- recipes/wip/tools/dply/recipe.toml | 2 +- recipes/wip/tools/halp/recipe.toml | 2 +- recipes/wip/tools/hawkeye/recipe.toml | 1 - recipes/wip/tools/hoard/recipe.toml | 2 +- recipes/wip/tools/task-maker-rs/recipe.toml | 2 +- recipes/wip/tools/wethr/recipe.toml | 2 +- 7 files changed, 6 insertions(+), 7 deletions(-) diff --git a/recipes/wip/tools/bdt/recipe.toml b/recipes/wip/tools/bdt/recipe.toml index 81bace06..d768d010 100644 --- a/recipes/wip/tools/bdt/recipe.toml +++ b/recipes/wip/tools/bdt/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO ahash crate error [source] git = "https://github.com/datafusion-contrib/bdt" [build] diff --git a/recipes/wip/tools/dply/recipe.toml b/recipes/wip/tools/dply/recipe.toml index eebee3f0..9db02c74 100644 --- a/recipes/wip/tools/dply/recipe.toml +++ b/recipes/wip/tools/dply/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO jemalloc-sys crate error [source] git = "https://github.com/vincev/dply-rs" [build] diff --git a/recipes/wip/tools/halp/recipe.toml b/recipes/wip/tools/halp/recipe.toml index a533cb55..c0dcf76c 100644 --- a/recipes/wip/tools/halp/recipe.toml +++ b/recipes/wip/tools/halp/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/orhun/halp" [build] diff --git a/recipes/wip/tools/hawkeye/recipe.toml b/recipes/wip/tools/hawkeye/recipe.toml index 495f90c3..e59fd767 100644 --- a/recipes/wip/tools/hawkeye/recipe.toml +++ b/recipes/wip/tools/hawkeye/recipe.toml @@ -1,7 +1,6 @@ #TODO Not compiled or tested [source] git = "https://github.com/korandoru/hawkeye" -rev = "4795c3f0a1bdbb2e129fa367d378e0597d12b42c" [build] template = "custom" script = """ diff --git a/recipes/wip/tools/hoard/recipe.toml b/recipes/wip/tools/hoard/recipe.toml index 3495a7be..6377a00c 100644 --- a/recipes/wip/tools/hoard/recipe.toml +++ b/recipes/wip/tools/hoard/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO aws-lc-sys crate error [source] git = "https://github.com/Hyde46/hoard" [build] diff --git a/recipes/wip/tools/task-maker-rs/recipe.toml b/recipes/wip/tools/task-maker-rs/recipe.toml index d5440553..4bd809eb 100644 --- a/recipes/wip/tools/task-maker-rs/recipe.toml +++ b/recipes/wip/tools/task-maker-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO tabox crate error [source] git = "https://github.com/edomora97/task-maker-rust" [build] diff --git a/recipes/wip/tools/wethr/recipe.toml b/recipes/wip/tools/wethr/recipe.toml index b8daba7e..8f8561cb 100644 --- a/recipes/wip/tools/wethr/recipe.toml +++ b/recipes/wip/tools/wethr/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/risoflora/wethr" [build] From 3ba633dfcd59054070b5345e71d8dd61dc002745 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 13:09:22 +0000 Subject: [PATCH 1824/3180] Update a recipe --- recipes/wip/tools/hawkeye/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/tools/hawkeye/recipe.toml b/recipes/wip/tools/hawkeye/recipe.toml index e59fd767..64025cc8 100644 --- a/recipes/wip/tools/hawkeye/recipe.toml +++ b/recipes/wip/tools/hawkeye/recipe.toml @@ -4,5 +4,5 @@ git = "https://github.com/korandoru/hawkeye" [build] template = "custom" script = """ -cookbook_cargo_packages cli fmt +cookbook_cargo_packages hawkeye hawkeye-fmt """ From 251560bd32fc6d6799ecba7ef148b2fe8adec200 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 18:39:19 +0000 Subject: [PATCH 1825/3180] Update recipes --- recipes/wip/tools/byteblitz/recipe.toml | 2 +- recipes/wip/tools/eureka/recipe.toml | 5 ++++- recipes/wip/tools/hawkeye/recipe.toml | 3 ++- recipes/wip/tools/hl/recipe.toml | 2 +- recipes/wip/tools/mkisofs-rs/recipe.toml | 2 +- recipes/wip/tools/sigi/recipe.toml | 2 +- recipes/wip/tools/tq/recipe.toml | 2 +- recipes/wip/tools/xsv/recipe.toml | 2 +- 8 files changed, 12 insertions(+), 8 deletions(-) diff --git a/recipes/wip/tools/byteblitz/recipe.toml b/recipes/wip/tools/byteblitz/recipe.toml index 5fc94502..63113dab 100644 --- a/recipes/wip/tools/byteblitz/recipe.toml +++ b/recipes/wip/tools/byteblitz/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/noahra/byteblitz" [build] diff --git a/recipes/wip/tools/eureka/recipe.toml b/recipes/wip/tools/eureka/recipe.toml index 255315b3..868265a9 100644 --- a/recipes/wip/tools/eureka/recipe.toml +++ b/recipes/wip/tools/eureka/recipe.toml @@ -1,5 +1,8 @@ -#TODO Not compiled or tested +#TODO Not compiled or tested (after cargo update) [source] git = "https://github.com/simeg/eureka" [build] template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/tools/hawkeye/recipe.toml b/recipes/wip/tools/hawkeye/recipe.toml index 64025cc8..acdd976c 100644 --- a/recipes/wip/tools/hawkeye/recipe.toml +++ b/recipes/wip/tools/hawkeye/recipe.toml @@ -1,4 +1,5 @@ -#TODO Not compiled or tested +#TODO compiled but not tested +#TODO add a command to properly move the executable [source] git = "https://github.com/korandoru/hawkeye" [build] diff --git a/recipes/wip/tools/hl/recipe.toml b/recipes/wip/tools/hl/recipe.toml index 9eb58d96..b6a227d5 100644 --- a/recipes/wip/tools/hl/recipe.toml +++ b/recipes/wip/tools/hl/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/pamburus/hl" [build] diff --git a/recipes/wip/tools/mkisofs-rs/recipe.toml b/recipes/wip/tools/mkisofs-rs/recipe.toml index be3c7d27..99e60349 100644 --- a/recipes/wip/tools/mkisofs-rs/recipe.toml +++ b/recipes/wip/tools/mkisofs-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/marysaka/mkisofs-rs" [build] diff --git a/recipes/wip/tools/sigi/recipe.toml b/recipes/wip/tools/sigi/recipe.toml index 5e5aa2a6..1c5a0e49 100644 --- a/recipes/wip/tools/sigi/recipe.toml +++ b/recipes/wip/tools/sigi/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO rustyline crate error [source] git = "https://github.com/sigi-cli/sigi" [build] diff --git a/recipes/wip/tools/tq/recipe.toml b/recipes/wip/tools/tq/recipe.toml index 2dcef6e9..652d0c5a 100644 --- a/recipes/wip/tools/tq/recipe.toml +++ b/recipes/wip/tools/tq/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/cryptaliagy/tq-rs" [build] diff --git a/recipes/wip/tools/xsv/recipe.toml b/recipes/wip/tools/xsv/recipe.toml index c2fcf5fc..9dec0d29 100644 --- a/recipes/wip/tools/xsv/recipe.toml +++ b/recipes/wip/tools/xsv/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO update the redox_syscall version on the dependency tree [source] git = "https://github.com/BurntSushi/xsv" [build] From d4825a0ec2c8e54128e14601b2fb25b276ae70bc Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 19:27:38 +0000 Subject: [PATCH 1826/3180] Update recipes --- recipes/wip/tools/caesium/recipe.toml | 2 +- recipes/wip/tools/caligula/recipe.toml | 2 +- recipes/wip/tools/dfm/recipe.toml | 2 +- recipes/wip/tools/eureka/recipe.toml | 2 +- recipes/wip/tools/hired/recipe.toml | 2 +- recipes/wip/tools/innernet-server/recipe.toml | 2 +- recipes/wip/tools/omega/recipe.toml | 2 +- recipes/wip/tools/patchelf/recipe.toml | 2 +- recipes/wip/tools/plzip/recipe.toml | 2 +- recipes/wip/tools/teip/recipe.toml | 2 +- recipes/wip/tools/wayback-rs/recipe.toml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/recipes/wip/tools/caesium/recipe.toml b/recipes/wip/tools/caesium/recipe.toml index e8c6b227..457b418f 100644 --- a/recipes/wip/tools/caesium/recipe.toml +++ b/recipes/wip/tools/caesium/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/Lymphatus/caesium-clt" [build] diff --git a/recipes/wip/tools/caligula/recipe.toml b/recipes/wip/tools/caligula/recipe.toml index b4e44f90..1afbb95a 100644 --- a/recipes/wip/tools/caligula/recipe.toml +++ b/recipes/wip/tools/caligula/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO process_path crate error [source] git = "https://github.com/ifd3f/caligula" [build] diff --git a/recipes/wip/tools/dfm/recipe.toml b/recipes/wip/tools/dfm/recipe.toml index d0c4a322..8b19829d 100644 --- a/recipes/wip/tools/dfm/recipe.toml +++ b/recipes/wip/tools/dfm/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO port to redox [source] git = "https://github.com/chasinglogic/dfm" [build] diff --git a/recipes/wip/tools/eureka/recipe.toml b/recipes/wip/tools/eureka/recipe.toml index 868265a9..7f376b93 100644 --- a/recipes/wip/tools/eureka/recipe.toml +++ b/recipes/wip/tools/eureka/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested (after cargo update) +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/simeg/eureka" [build] diff --git a/recipes/wip/tools/hired/recipe.toml b/recipes/wip/tools/hired/recipe.toml index c9b1d27a..a2611dd4 100644 --- a/recipes/wip/tools/hired/recipe.toml +++ b/recipes/wip/tools/hired/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/sidju/hired" [build] diff --git a/recipes/wip/tools/innernet-server/recipe.toml b/recipes/wip/tools/innernet-server/recipe.toml index 73bddfec..71f9f5ee 100644 --- a/recipes/wip/tools/innernet-server/recipe.toml +++ b/recipes/wip/tools/innernet-server/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO shared crate error [source] git = "https://github.com/tonarino/innernet" [build] diff --git a/recipes/wip/tools/omega/recipe.toml b/recipes/wip/tools/omega/recipe.toml index 975ff2a5..28acedfe 100644 --- a/recipes/wip/tools/omega/recipe.toml +++ b/recipes/wip/tools/omega/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO missing headers [source] git = "https://github.com/nwrenger/omega" [build] diff --git a/recipes/wip/tools/patchelf/recipe.toml b/recipes/wip/tools/patchelf/recipe.toml index 33c108fd..84e86bf2 100644 --- a/recipes/wip/tools/patchelf/recipe.toml +++ b/recipes/wip/tools/patchelf/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] tar = "https://github.com/NixOS/patchelf/releases/download/0.18.0/patchelf-0.18.0.tar.bz2" [build] diff --git a/recipes/wip/tools/plzip/recipe.toml b/recipes/wip/tools/plzip/recipe.toml index 3fac5705..73142532 100644 --- a/recipes/wip/tools/plzip/recipe.toml +++ b/recipes/wip/tools/plzip/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO missing headers [source] tar = "https://download.savannah.gnu.org/releases/lzip/plzip/plzip-1.11.tar.gz" [build] diff --git a/recipes/wip/tools/teip/recipe.toml b/recipes/wip/tools/teip/recipe.toml index 49bc47fc..f18744a5 100644 --- a/recipes/wip/tools/teip/recipe.toml +++ b/recipes/wip/tools/teip/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/greymd/teip" [build] diff --git a/recipes/wip/tools/wayback-rs/recipe.toml b/recipes/wip/tools/wayback-rs/recipe.toml index 206d5264..8265b083 100644 --- a/recipes/wip/tools/wayback-rs/recipe.toml +++ b/recipes/wip/tools/wayback-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO openssl-sys crate error [source] git = "https://github.com/Neolex-Security/WaybackRust" [build] From b4381a50de1c7e1bd0baf34a59f483393b931c0d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 19:36:21 +0000 Subject: [PATCH 1827/3180] Update a recipe --- recipes/wip/tools/dispatch/recipe.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/tools/dispatch/recipe.toml b/recipes/wip/tools/dispatch/recipe.toml index d308af5b..b064e5f5 100644 --- a/recipes/wip/tools/dispatch/recipe.toml +++ b/recipes/wip/tools/dispatch/recipe.toml @@ -1,5 +1,8 @@ -#TODO Not compiled or tested +#TODO Not compiled or tested (after cargo update) [source] git = "https://github.com/brianyu28/dispatch" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 8ef94e2cc8ac2af301e20260d5cecbc4d1175d17 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 19:59:26 +0000 Subject: [PATCH 1828/3180] Update recipes --- recipes/wip/tools/dispatch/recipe.toml | 2 +- recipes/wip/tools/epub2txt/recipe.toml | 2 +- recipes/wip/tools/navi/recipe.toml | 2 +- recipes/wip/tools/notnow/recipe.toml | 2 +- recipes/wip/tools/rusty/recipe.toml | 5 ++++- recipes/wip/tools/rusync/recipe.toml | 2 +- recipes/wip/tools/unzrip/recipe.toml | 5 ++++- 7 files changed, 13 insertions(+), 7 deletions(-) diff --git a/recipes/wip/tools/dispatch/recipe.toml b/recipes/wip/tools/dispatch/recipe.toml index b064e5f5..ac547168 100644 --- a/recipes/wip/tools/dispatch/recipe.toml +++ b/recipes/wip/tools/dispatch/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested (after cargo update) +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/brianyu28/dispatch" [build] diff --git a/recipes/wip/tools/epub2txt/recipe.toml b/recipes/wip/tools/epub2txt/recipe.toml index cbe24729..ca3a78ad 100644 --- a/recipes/wip/tools/epub2txt/recipe.toml +++ b/recipes/wip/tools/epub2txt/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/quininer/epub2txt" [build] diff --git a/recipes/wip/tools/navi/recipe.toml b/recipes/wip/tools/navi/recipe.toml index 5a025fd6..15f021f9 100644 --- a/recipes/wip/tools/navi/recipe.toml +++ b/recipes/wip/tools/navi/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO fs_at and libc crate errors (after cargo update) [source] git = "https://github.com/denisidoro/navi" [build] diff --git a/recipes/wip/tools/notnow/recipe.toml b/recipes/wip/tools/notnow/recipe.toml index fe2e9ddc..9d7e5b2c 100644 --- a/recipes/wip/tools/notnow/recipe.toml +++ b/recipes/wip/tools/notnow/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/d-e-s-o/notnow" [build] diff --git a/recipes/wip/tools/rusty/recipe.toml b/recipes/wip/tools/rusty/recipe.toml index bedc4ba3..3140ba40 100644 --- a/recipes/wip/tools/rusty/recipe.toml +++ b/recipes/wip/tools/rusty/recipe.toml @@ -1,5 +1,8 @@ -#TODO Not compiled or tested +#TODO Not compiled or tested (after cargo update) [source] git = "https://github.com/zahidkhawaja/rusty" [build] template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/tools/rusync/recipe.toml b/recipes/wip/tools/rusync/recipe.toml index 21258e5b..605353d4 100644 --- a/recipes/wip/tools/rusync/recipe.toml +++ b/recipes/wip/tools/rusync/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/your-tools/rusync" [build] diff --git a/recipes/wip/tools/unzrip/recipe.toml b/recipes/wip/tools/unzrip/recipe.toml index c90407d8..e31e1140 100644 --- a/recipes/wip/tools/unzrip/recipe.toml +++ b/recipes/wip/tools/unzrip/recipe.toml @@ -1,5 +1,8 @@ -#TODO Not compiled or tested +#TODO make zstd work (after cargo update) [source] git = "https://github.com/quininer/unzrip" [build] template = "cargo" +dependencies = [ + "zstd", +] From 348815e5f82cde9d0b76a3cf801fd6376f1a179e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 20:19:51 +0000 Subject: [PATCH 1829/3180] Update recipes --- recipes/wip/tools/rusty/recipe.toml | 2 +- recipes/wip/tools/scrying/recipe.toml | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/wip/tools/rusty/recipe.toml b/recipes/wip/tools/rusty/recipe.toml index 3140ba40..5c28bf27 100644 --- a/recipes/wip/tools/rusty/recipe.toml +++ b/recipes/wip/tools/rusty/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested (after cargo update) +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/zahidkhawaja/rusty" [build] diff --git a/recipes/wip/tools/scrying/recipe.toml b/recipes/wip/tools/scrying/recipe.toml index beeb0196..39f58171 100644 --- a/recipes/wip/tools/scrying/recipe.toml +++ b/recipes/wip/tools/scrying/recipe.toml @@ -1,5 +1,8 @@ -#TODO Not compiled or tested +#TODO Not compiled or tested (after cargo update) [source] git = "https://github.com/nccgroup/scrying" [build] template = "cargo" +dependencies = [ + "openssl1", +] From b6c075f12dfde8f6bc1fde3fa55e5b159bba49c3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 20:39:44 +0000 Subject: [PATCH 1830/3180] Update recipes --- recipes/wip/tools/nickel/recipe.toml | 1 - recipes/wip/tools/pfetch-rs/recipe.toml | 2 +- recipes/wip/tools/scrying/recipe.toml | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/wip/tools/nickel/recipe.toml b/recipes/wip/tools/nickel/recipe.toml index 82be3444..aa49f9ed 100644 --- a/recipes/wip/tools/nickel/recipe.toml +++ b/recipes/wip/tools/nickel/recipe.toml @@ -1,7 +1,6 @@ #TODO Not compiled or tested [source] git = "https://github.com/tweag/nickel" -rev = "13ffc851aed22b4c7d9630cd423e627304b7ea8f" [build] template = "custom" script = """ diff --git a/recipes/wip/tools/pfetch-rs/recipe.toml b/recipes/wip/tools/pfetch-rs/recipe.toml index a376b30a..14a10962 100644 --- a/recipes/wip/tools/pfetch-rs/recipe.toml +++ b/recipes/wip/tools/pfetch-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO if-addrs crate error [source] git = "https://github.com/Gobidev/pfetch-rs" [build] diff --git a/recipes/wip/tools/scrying/recipe.toml b/recipes/wip/tools/scrying/recipe.toml index 39f58171..5b38311f 100644 --- a/recipes/wip/tools/scrying/recipe.toml +++ b/recipes/wip/tools/scrying/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested (after cargo update) +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/nccgroup/scrying" [build] From c8104f6d2c3cadc7bc65e85acbb145fd77ecae5b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 20:59:40 +0000 Subject: [PATCH 1831/3180] Update recipes --- recipes/wip/finance/apcacli/recipe.toml | 3 +++ recipes/wip/finance/btc-vanity/recipe.toml | 2 +- recipes/wip/finance/rusty-blockparser/recipe.toml | 2 +- recipes/wip/tools/dotr/recipe.toml | 2 +- recipes/wip/tools/fennec/recipe.toml | 2 +- recipes/wip/tools/lddtree-rs/recipe.toml | 2 +- recipes/wip/tools/lucid/recipe.toml | 2 +- recipes/wip/tools/nickel/recipe.toml | 2 +- recipes/wip/tools/rfetch/recipe.toml | 2 +- 9 files changed, 11 insertions(+), 8 deletions(-) diff --git a/recipes/wip/finance/apcacli/recipe.toml b/recipes/wip/finance/apcacli/recipe.toml index 8782aa9a..d288822b 100644 --- a/recipes/wip/finance/apcacli/recipe.toml +++ b/recipes/wip/finance/apcacli/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/d-e-s-o/apcacli" [build] template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/finance/btc-vanity/recipe.toml b/recipes/wip/finance/btc-vanity/recipe.toml index d9855593..a6f64b89 100644 --- a/recipes/wip/finance/btc-vanity/recipe.toml +++ b/recipes/wip/finance/btc-vanity/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/Emivvvvv/btc-vanity" [build] diff --git a/recipes/wip/finance/rusty-blockparser/recipe.toml b/recipes/wip/finance/rusty-blockparser/recipe.toml index 054984c2..c7c853e1 100644 --- a/recipes/wip/finance/rusty-blockparser/recipe.toml +++ b/recipes/wip/finance/rusty-blockparser/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO fs2 crate error [source] git = "https://github.com/gcarq/rusty-blockparser" [build] diff --git a/recipes/wip/tools/dotr/recipe.toml b/recipes/wip/tools/dotr/recipe.toml index 7a26903c..4e865387 100644 --- a/recipes/wip/tools/dotr/recipe.toml +++ b/recipes/wip/tools/dotr/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/dpc/dotr" [build] diff --git a/recipes/wip/tools/fennec/recipe.toml b/recipes/wip/tools/fennec/recipe.toml index 66e4868a..e6213efc 100644 --- a/recipes/wip/tools/fennec/recipe.toml +++ b/recipes/wip/tools/fennec/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO update ring version (after cargo update) [source] git = "https://github.com/AbdulRhmanAlfaifi/Fennec" [build] diff --git a/recipes/wip/tools/lddtree-rs/recipe.toml b/recipes/wip/tools/lddtree-rs/recipe.toml index 4aa0d9ef..62fd4918 100644 --- a/recipes/wip/tools/lddtree-rs/recipe.toml +++ b/recipes/wip/tools/lddtree-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/messense/lddtree-rs" [build] diff --git a/recipes/wip/tools/lucid/recipe.toml b/recipes/wip/tools/lucid/recipe.toml index 9a75dbe7..6aef6188 100644 --- a/recipes/wip/tools/lucid/recipe.toml +++ b/recipes/wip/tools/lucid/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO nix crate error [source] git = "https://github.com/sharkdp/lucid" [build] diff --git a/recipes/wip/tools/nickel/recipe.toml b/recipes/wip/tools/nickel/recipe.toml index aa49f9ed..6715cb82 100644 --- a/recipes/wip/tools/nickel/recipe.toml +++ b/recipes/wip/tools/nickel/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO rustyline crate error [source] git = "https://github.com/tweag/nickel" [build] diff --git a/recipes/wip/tools/rfetch/recipe.toml b/recipes/wip/tools/rfetch/recipe.toml index 0b2ddf21..3a1287cb 100644 --- a/recipes/wip/tools/rfetch/recipe.toml +++ b/recipes/wip/tools/rfetch/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO nix crate error (after cargo update) [source] git = "https://github.com/kamui-fin/rfetch" [build] From 665482f59ad0914c18ee82c07972237c8d1e91f3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 21:07:20 +0000 Subject: [PATCH 1832/3180] Update recipes --- recipes/wip/finance/apcacli/recipe.toml | 2 +- recipes/wip/finance/cargo-fund/recipe.toml | 3 +++ recipes/wip/finance/pushtx/recipe.toml | 3 ++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/recipes/wip/finance/apcacli/recipe.toml b/recipes/wip/finance/apcacli/recipe.toml index d288822b..e2fdc08b 100644 --- a/recipes/wip/finance/apcacli/recipe.toml +++ b/recipes/wip/finance/apcacli/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/d-e-s-o/apcacli" [build] diff --git a/recipes/wip/finance/cargo-fund/recipe.toml b/recipes/wip/finance/cargo-fund/recipe.toml index 1b5697be..2f09bccb 100644 --- a/recipes/wip/finance/cargo-fund/recipe.toml +++ b/recipes/wip/finance/cargo-fund/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/acfoltzer/cargo-fund" [build] template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/finance/pushtx/recipe.toml b/recipes/wip/finance/pushtx/recipe.toml index 0078b9d5..43b24cf7 100644 --- a/recipes/wip/finance/pushtx/recipe.toml +++ b/recipes/wip/finance/pushtx/recipe.toml @@ -1,4 +1,5 @@ -#TODO Not compiled or tested +#TODO compiled but not tested +#TODO add a command to properly move the executable [source] git = "https://github.com/alfred-hodler/pushtx" [build] From 5646c308065efd343fcc2a9083b6a136c59ddaa7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 21:31:47 +0000 Subject: [PATCH 1833/3180] Update recipes --- recipes/wip/dev/cargo-expand/recipe.toml | 2 +- recipes/wip/dev/cargo-workspaces/recipe.toml | 2 +- recipes/wip/dev/rhack/recipe.toml | 2 +- recipes/wip/dev/scriptisto/recipe.toml | 2 +- recipes/wip/dev/stitch/recipe.toml | 2 +- recipes/wip/finance/cargo-fund/recipe.toml | 2 +- recipes/wip/sound/asak/recipe.toml | 2 +- recipes/wip/sound/cmus/recipe.toml | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/recipes/wip/dev/cargo-expand/recipe.toml b/recipes/wip/dev/cargo-expand/recipe.toml index c0d3619b..6fb87a60 100644 --- a/recipes/wip/dev/cargo-expand/recipe.toml +++ b/recipes/wip/dev/cargo-expand/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/dtolnay/cargo-expand" [build] diff --git a/recipes/wip/dev/cargo-workspaces/recipe.toml b/recipes/wip/dev/cargo-workspaces/recipe.toml index 28aca625..29f8f64e 100644 --- a/recipes/wip/dev/cargo-workspaces/recipe.toml +++ b/recipes/wip/dev/cargo-workspaces/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/pksunkara/cargo-workspaces" [build] diff --git a/recipes/wip/dev/rhack/recipe.toml b/recipes/wip/dev/rhack/recipe.toml index 03eed4da..0b6e1fa4 100644 --- a/recipes/wip/dev/rhack/recipe.toml +++ b/recipes/wip/dev/rhack/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/nakabonne/rhack" [build] diff --git a/recipes/wip/dev/scriptisto/recipe.toml b/recipes/wip/dev/scriptisto/recipe.toml index 1c6e5f1b..899292df 100644 --- a/recipes/wip/dev/scriptisto/recipe.toml +++ b/recipes/wip/dev/scriptisto/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO users crate error [source] git = "https://github.com/igor-petruk/scriptisto" [build] diff --git a/recipes/wip/dev/stitch/recipe.toml b/recipes/wip/dev/stitch/recipe.toml index 989da3af..22ecab47 100644 --- a/recipes/wip/dev/stitch/recipe.toml +++ b/recipes/wip/dev/stitch/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/makepad/stitch" [build] diff --git a/recipes/wip/finance/cargo-fund/recipe.toml b/recipes/wip/finance/cargo-fund/recipe.toml index 2f09bccb..cb40c033 100644 --- a/recipes/wip/finance/cargo-fund/recipe.toml +++ b/recipes/wip/finance/cargo-fund/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/acfoltzer/cargo-fund" [build] diff --git a/recipes/wip/sound/asak/recipe.toml b/recipes/wip/sound/asak/recipe.toml index eec34c56..b644b33c 100644 --- a/recipes/wip/sound/asak/recipe.toml +++ b/recipes/wip/sound/asak/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/chaosprint/asak" [build] diff --git a/recipes/wip/sound/cmus/recipe.toml b/recipes/wip/sound/cmus/recipe.toml index b6c63760..df673f22 100644 --- a/recipes/wip/sound/cmus/recipe.toml +++ b/recipes/wip/sound/cmus/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested yet +#TODO can't detect the configure script [source] git = "https://github.com/cmus/cmus" rev = "ade6e2a7253d7a256e87fdac3da17c9158e6700e" From 0b11a2e6ae780f378862aec5fb372367814dff38 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 22:56:42 +0000 Subject: [PATCH 1834/3180] Update TODOs --- recipes/wip/dev/alquitran/recipe.toml | 2 +- recipes/wip/dev/alt/recipe.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/wip/dev/alquitran/recipe.toml b/recipes/wip/dev/alquitran/recipe.toml index 081dbeed..c008c9ee 100644 --- a/recipes/wip/dev/alquitran/recipe.toml +++ b/recipes/wip/dev/alquitran/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/ferivoz/alquitran" [build] diff --git a/recipes/wip/dev/alt/recipe.toml b/recipes/wip/dev/alt/recipe.toml index b94637f6..1c0a6893 100644 --- a/recipes/wip/dev/alt/recipe.toml +++ b/recipes/wip/dev/alt/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/dotboris/alt" [build] From c31c3f12a9bdceaa5a0c7830bfe577d3a8c3c66e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 23:02:20 +0000 Subject: [PATCH 1835/3180] Try to fix a recipe --- recipes/wip/tools/tarlz/recipe.toml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/recipes/wip/tools/tarlz/recipe.toml b/recipes/wip/tools/tarlz/recipe.toml index 0985a0c2..85a48612 100644 --- a/recipes/wip/tools/tarlz/recipe.toml +++ b/recipes/wip/tools/tarlz/recipe.toml @@ -2,7 +2,11 @@ [source] tar = "https://download.savannah.gnu.org/releases/lzip/tarlz/tarlz-0.25.tar.lz" [build] -template = "configure" +template = "custom" dependencies = [ "lzlib", ] +script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" +cookbook_configure +""" From aa3c5cce96b2834069169aee74f3733837ac9e17 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 10 Jun 2024 23:06:06 +0000 Subject: [PATCH 1836/3180] Try to fix a recipe --- recipes/wip/libs/cairomm-1.16+/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/libs/cairomm-1.16+/recipe.toml b/recipes/wip/libs/cairomm-1.16+/recipe.toml index d0c90e71..b0077bb6 100644 --- a/recipes/wip/libs/cairomm-1.16+/recipe.toml +++ b/recipes/wip/libs/cairomm-1.16+/recipe.toml @@ -7,6 +7,7 @@ dependencies = [ "cairo", ] script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./autogen.sh cookbook_configure """ From cf472d970b8561c14bb30b74d6cb9bf54fb2017c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 08:47:39 +0000 Subject: [PATCH 1837/3180] Revert a command --- recipes/wip/libs/cairomm-1.16+/recipe.toml | 1 - recipes/wip/tools/tarlz/recipe.toml | 1 - 2 files changed, 2 deletions(-) diff --git a/recipes/wip/libs/cairomm-1.16+/recipe.toml b/recipes/wip/libs/cairomm-1.16+/recipe.toml index b0077bb6..d0c90e71 100644 --- a/recipes/wip/libs/cairomm-1.16+/recipe.toml +++ b/recipes/wip/libs/cairomm-1.16+/recipe.toml @@ -7,7 +7,6 @@ dependencies = [ "cairo", ] script = """ -rsync -av --delete "${COOKBOOK_SOURCE}/" ./autogen.sh cookbook_configure """ diff --git a/recipes/wip/tools/tarlz/recipe.toml b/recipes/wip/tools/tarlz/recipe.toml index 85a48612..65c47789 100644 --- a/recipes/wip/tools/tarlz/recipe.toml +++ b/recipes/wip/tools/tarlz/recipe.toml @@ -7,6 +7,5 @@ dependencies = [ "lzlib", ] script = """ -rsync -av --delete "${COOKBOOK_SOURCE}/" cookbook_configure """ From 67de51f13dca55b3353b9cd83d252a1c7695f639 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 09:13:42 +0000 Subject: [PATCH 1838/3180] Update a recipe --- recipes/wip/dev/auto-commit/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/wip/dev/auto-commit/recipe.toml b/recipes/wip/dev/auto-commit/recipe.toml index f5fb80a1..454f0ae9 100644 --- a/recipes/wip/dev/auto-commit/recipe.toml +++ b/recipes/wip/dev/auto-commit/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/m1guelpf/auto-commit" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 8b542a2442411021967800780bf40d54f3ee8add Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 09:18:41 +0000 Subject: [PATCH 1839/3180] Update recipes --- recipes/wip/dev/auto-commit/recipe.toml | 2 +- recipes/wip/dev/bender/recipe.toml | 2 +- recipes/wip/dev/boon/recipe.toml | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/wip/dev/auto-commit/recipe.toml b/recipes/wip/dev/auto-commit/recipe.toml index 454f0ae9..008262f5 100644 --- a/recipes/wip/dev/auto-commit/recipe.toml +++ b/recipes/wip/dev/auto-commit/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/m1guelpf/auto-commit" [build] diff --git a/recipes/wip/dev/bender/recipe.toml b/recipes/wip/dev/bender/recipe.toml index 7cc88637..49828f81 100644 --- a/recipes/wip/dev/bender/recipe.toml +++ b/recipes/wip/dev/bender/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/pulp-platform/bender" [build] diff --git a/recipes/wip/dev/boon/recipe.toml b/recipes/wip/dev/boon/recipe.toml index 5a497b21..f4de5ecc 100644 --- a/recipes/wip/dev/boon/recipe.toml +++ b/recipes/wip/dev/boon/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/camchenry/boon" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 98d91665bb7f3ff1fe02f0c721283ecaf792b0e3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 09:24:31 +0000 Subject: [PATCH 1840/3180] Update recipes --- recipes/wip/dev/boon/recipe.toml | 2 +- recipes/wip/dev/bugstalker/recipe.toml | 2 +- recipes/wip/dev/cargo-all-features/recipe.toml | 2 +- recipes/wip/dev/cargo-attribution/recipe.toml | 2 +- recipes/wip/dev/cargo-auto/recipe.toml | 3 +++ 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/recipes/wip/dev/boon/recipe.toml b/recipes/wip/dev/boon/recipe.toml index f4de5ecc..297beb48 100644 --- a/recipes/wip/dev/boon/recipe.toml +++ b/recipes/wip/dev/boon/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO libc crate error [source] git = "https://github.com/camchenry/boon" [build] diff --git a/recipes/wip/dev/bugstalker/recipe.toml b/recipes/wip/dev/bugstalker/recipe.toml index f6ae329f..ccbd8a29 100644 --- a/recipes/wip/dev/bugstalker/recipe.toml +++ b/recipes/wip/dev/bugstalker/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make the dependency work [source] git = "https://github.com/godzie44/BugStalker" [build] diff --git a/recipes/wip/dev/cargo-all-features/recipe.toml b/recipes/wip/dev/cargo-all-features/recipe.toml index 1575b32d..e4eba3c7 100644 --- a/recipes/wip/dev/cargo-all-features/recipe.toml +++ b/recipes/wip/dev/cargo-all-features/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/frewsxcv/cargo-all-features" [build] diff --git a/recipes/wip/dev/cargo-attribution/recipe.toml b/recipes/wip/dev/cargo-attribution/recipe.toml index 63ca7144..f85099b9 100644 --- a/recipes/wip/dev/cargo-attribution/recipe.toml +++ b/recipes/wip/dev/cargo-attribution/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/ameknite/cargo-attribution" [build] diff --git a/recipes/wip/dev/cargo-auto/recipe.toml b/recipes/wip/dev/cargo-auto/recipe.toml index 710ea3b7..58d4379d 100644 --- a/recipes/wip/dev/cargo-auto/recipe.toml +++ b/recipes/wip/dev/cargo-auto/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/automation-tasks-rs/cargo-auto" [build] template = "cargo" +dependencies = [ + "openssl1", +] From e3b329401402f702746d1f6ee8a57fa532600bc0 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 09:32:25 +0000 Subject: [PATCH 1841/3180] Update recipes --- recipes/wip/dev/cargo-auto/recipe.toml | 2 +- recipes/wip/dev/cargo-binutils/recipe.toml | 2 +- recipes/wip/dev/cargo-bloat/recipe.toml | 2 +- recipes/wip/dev/cargo-careful/recipe.toml | 2 +- recipes/wip/dev/cargo-check-deadlock/recipe.toml | 2 +- recipes/wip/dev/cargo-checkmate/recipe.toml | 2 +- recipes/wip/dev/cargo-clone/recipe.toml | 3 +++ 7 files changed, 9 insertions(+), 6 deletions(-) diff --git a/recipes/wip/dev/cargo-auto/recipe.toml b/recipes/wip/dev/cargo-auto/recipe.toml index 58d4379d..e2ca13dc 100644 --- a/recipes/wip/dev/cargo-auto/recipe.toml +++ b/recipes/wip/dev/cargo-auto/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/automation-tasks-rs/cargo-auto" [build] diff --git a/recipes/wip/dev/cargo-binutils/recipe.toml b/recipes/wip/dev/cargo-binutils/recipe.toml index f84307fc..7cde054a 100644 --- a/recipes/wip/dev/cargo-binutils/recipe.toml +++ b/recipes/wip/dev/cargo-binutils/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/rust-embedded/cargo-binutils" [build] diff --git a/recipes/wip/dev/cargo-bloat/recipe.toml b/recipes/wip/dev/cargo-bloat/recipe.toml index 6052b926..3b402d03 100644 --- a/recipes/wip/dev/cargo-bloat/recipe.toml +++ b/recipes/wip/dev/cargo-bloat/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/RazrFalcon/cargo-bloat" [build] diff --git a/recipes/wip/dev/cargo-careful/recipe.toml b/recipes/wip/dev/cargo-careful/recipe.toml index 6d0bcf07..4c10161c 100644 --- a/recipes/wip/dev/cargo-careful/recipe.toml +++ b/recipes/wip/dev/cargo-careful/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/RalfJung/cargo-careful" [build] diff --git a/recipes/wip/dev/cargo-check-deadlock/recipe.toml b/recipes/wip/dev/cargo-check-deadlock/recipe.toml index 001253e0..1bbf81ce 100644 --- a/recipes/wip/dev/cargo-check-deadlock/recipe.toml +++ b/recipes/wip/dev/cargo-check-deadlock/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO require the components rust-src rustc-dev llvm-tools-preview to be installed [source] git = "https://github.com/hlisdero/cargo-check-deadlock" [build] diff --git a/recipes/wip/dev/cargo-checkmate/recipe.toml b/recipes/wip/dev/cargo-checkmate/recipe.toml index a90449c3..445481f3 100644 --- a/recipes/wip/dev/cargo-checkmate/recipe.toml +++ b/recipes/wip/dev/cargo-checkmate/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/cargo-checkmate/cargo-checkmate" [build] diff --git a/recipes/wip/dev/cargo-clone/recipe.toml b/recipes/wip/dev/cargo-clone/recipe.toml index cc70d6c0..2750381e 100644 --- a/recipes/wip/dev/cargo-clone/recipe.toml +++ b/recipes/wip/dev/cargo-clone/recipe.toml @@ -3,6 +3,9 @@ git = "https://github.com/JanLikar/cargo-clone" [build] template = "custom" +dependencies = [ + "openssl1", +] script = """ cookbook_cargo_packages cargo-clone """ From 4846c2ccece4674ddf2d5c6510c19cdfb722fd47 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 09:39:00 +0000 Subject: [PATCH 1842/3180] Update recipes --- recipes/wip/dev/cargo-clone-crate/recipe.toml | 3 +++ recipes/wip/dev/cargo-clone/recipe.toml | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/dev/cargo-clone-crate/recipe.toml b/recipes/wip/dev/cargo-clone-crate/recipe.toml index 676829b5..1767fb99 100644 --- a/recipes/wip/dev/cargo-clone-crate/recipe.toml +++ b/recipes/wip/dev/cargo-clone-crate/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/ehuss/cargo-clone-crate" [build] template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/dev/cargo-clone/recipe.toml b/recipes/wip/dev/cargo-clone/recipe.toml index 2750381e..b3fe303f 100644 --- a/recipes/wip/dev/cargo-clone/recipe.toml +++ b/recipes/wip/dev/cargo-clone/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO cargo-util crate error [source] git = "https://github.com/JanLikar/cargo-clone" [build] From d9f8258fad1867642952b20108d349e4a7e3234d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 09:46:22 +0000 Subject: [PATCH 1843/3180] Update recipes --- recipes/wip/dev/cargo-clone-crate/recipe.toml | 2 +- recipes/wip/dev/cargo-component/recipe.toml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/dev/cargo-clone-crate/recipe.toml b/recipes/wip/dev/cargo-clone-crate/recipe.toml index 1767fb99..80e32573 100644 --- a/recipes/wip/dev/cargo-clone-crate/recipe.toml +++ b/recipes/wip/dev/cargo-clone-crate/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/ehuss/cargo-clone-crate" [build] diff --git a/recipes/wip/dev/cargo-component/recipe.toml b/recipes/wip/dev/cargo-component/recipe.toml index 601e17e5..4a32c1ed 100644 --- a/recipes/wip/dev/cargo-component/recipe.toml +++ b/recipes/wip/dev/cargo-component/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/bytecodealliance/cargo-component" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 21cae987e7def10e9bbd95cd4a5a6de41757a8b4 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 10:45:38 +0000 Subject: [PATCH 1844/3180] Update recipes --- recipes/wip/dev/cargo-component/recipe.toml | 2 +- recipes/wip/dev/cargo-depsize/recipe.toml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/dev/cargo-component/recipe.toml b/recipes/wip/dev/cargo-component/recipe.toml index 4a32c1ed..bacbc60a 100644 --- a/recipes/wip/dev/cargo-component/recipe.toml +++ b/recipes/wip/dev/cargo-component/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/bytecodealliance/cargo-component" [build] diff --git a/recipes/wip/dev/cargo-depsize/recipe.toml b/recipes/wip/dev/cargo-depsize/recipe.toml index 31dbae49..4f6e8176 100644 --- a/recipes/wip/dev/cargo-depsize/recipe.toml +++ b/recipes/wip/dev/cargo-depsize/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/Alfex4936/cargo-depsize" [build] template = "cargo" +dependencies = [ + "openssl1", +] From fca300153c557f2b4f8ff1867a98ca92eb071712 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 11:08:50 +0000 Subject: [PATCH 1845/3180] Update recipes --- recipes/wip/dev/cargo-depsize/recipe.toml | 2 +- recipes/wip/dev/cargo-derivefmt/recipe.toml | 2 +- recipes/wip/dev/cargo-dist/recipe.toml | 2 +- recipes/wip/dev/cargo-docs-rs/recipe.toml | 2 +- recipes/wip/dev/cargo-docs/recipe.toml | 2 +- recipes/wip/dev/cargo-duplicates/recipe.toml | 3 +++ 6 files changed, 8 insertions(+), 5 deletions(-) diff --git a/recipes/wip/dev/cargo-depsize/recipe.toml b/recipes/wip/dev/cargo-depsize/recipe.toml index 4f6e8176..1c08a4e6 100644 --- a/recipes/wip/dev/cargo-depsize/recipe.toml +++ b/recipes/wip/dev/cargo-depsize/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO cargo-util crate error [source] git = "https://github.com/Alfex4936/cargo-depsize" [build] diff --git a/recipes/wip/dev/cargo-derivefmt/recipe.toml b/recipes/wip/dev/cargo-derivefmt/recipe.toml index 64e26180..ce753166 100644 --- a/recipes/wip/dev/cargo-derivefmt/recipe.toml +++ b/recipes/wip/dev/cargo-derivefmt/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/dcchut/cargo-derivefmt" [build] diff --git a/recipes/wip/dev/cargo-dist/recipe.toml b/recipes/wip/dev/cargo-dist/recipe.toml index 05415867..16736256 100644 --- a/recipes/wip/dev/cargo-dist/recipe.toml +++ b/recipes/wip/dev/cargo-dist/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/axodotdev/cargo-dist" [build] diff --git a/recipes/wip/dev/cargo-docs-rs/recipe.toml b/recipes/wip/dev/cargo-docs-rs/recipe.toml index 6570a407..660e65e1 100644 --- a/recipes/wip/dev/cargo-docs-rs/recipe.toml +++ b/recipes/wip/dev/cargo-docs-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/dtolnay/cargo-docs-rs" [build] diff --git a/recipes/wip/dev/cargo-docs/recipe.toml b/recipes/wip/dev/cargo-docs/recipe.toml index 230df133..c19b8e18 100644 --- a/recipes/wip/dev/cargo-docs/recipe.toml +++ b/recipes/wip/dev/cargo-docs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO openssl-sys crate error [source] git = "https://github.com/btwiuse/cargo-docs" [build] diff --git a/recipes/wip/dev/cargo-duplicates/recipe.toml b/recipes/wip/dev/cargo-duplicates/recipe.toml index c0150263..e0e52ca5 100644 --- a/recipes/wip/dev/cargo-duplicates/recipe.toml +++ b/recipes/wip/dev/cargo-duplicates/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/Keruspe/cargo-duplicates" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 66b96bef910eb147c7f4c6437100357a65f22135 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 11:11:53 +0000 Subject: [PATCH 1846/3180] Update recipes --- recipes/wip/dev/cargo-duplicates/recipe.toml | 2 +- recipes/wip/dev/cargo-edit/recipe.toml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/dev/cargo-duplicates/recipe.toml b/recipes/wip/dev/cargo-duplicates/recipe.toml index e0e52ca5..4b842c46 100644 --- a/recipes/wip/dev/cargo-duplicates/recipe.toml +++ b/recipes/wip/dev/cargo-duplicates/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO cargo-util crate error [source] git = "https://github.com/Keruspe/cargo-duplicates" [build] diff --git a/recipes/wip/dev/cargo-edit/recipe.toml b/recipes/wip/dev/cargo-edit/recipe.toml index 72ba49a1..4f84cdb0 100644 --- a/recipes/wip/dev/cargo-edit/recipe.toml +++ b/recipes/wip/dev/cargo-edit/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/killercup/cargo-edit" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 2ff5a7927d6861ec2f98ddc86dc6323e4d38d257 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 12:12:54 +0000 Subject: [PATCH 1847/3180] Update recipes --- recipes/wip/dev/cargo-edit/recipe.toml | 2 +- recipes/wip/dev/cargo-featalign/recipe.toml | 2 +- recipes/wip/dev/cargo-feature-combinations/recipe.toml | 2 +- recipes/wip/dev/cargo-feature/recipe.toml | 2 +- recipes/wip/dev/cargo-files/recipe.toml | 2 +- recipes/wip/dev/cargo-fixture/recipe.toml | 2 +- recipes/wip/dev/cargo-ft/recipe.toml | 2 +- recipes/wip/dev/cargo-gc/recipe.toml | 2 +- recipes/wip/dev/cargo-get/recipe.toml | 2 +- recipes/wip/dev/cargo-guppy/recipe.toml | 2 +- recipes/wip/dev/cargo-hackerman/recipe.toml | 2 +- recipes/wip/dev/cargo-hakari/recipe.toml | 2 +- recipes/wip/dev/cargo-http-registry/recipe.toml | 3 +++ 13 files changed, 15 insertions(+), 12 deletions(-) diff --git a/recipes/wip/dev/cargo-edit/recipe.toml b/recipes/wip/dev/cargo-edit/recipe.toml index 4f84cdb0..a833b92a 100644 --- a/recipes/wip/dev/cargo-edit/recipe.toml +++ b/recipes/wip/dev/cargo-edit/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/killercup/cargo-edit" [build] diff --git a/recipes/wip/dev/cargo-featalign/recipe.toml b/recipes/wip/dev/cargo-featalign/recipe.toml index 880931a9..23bbf929 100644 --- a/recipes/wip/dev/cargo-featalign/recipe.toml +++ b/recipes/wip/dev/cargo-featalign/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/hack-ink/cargo-featalign" [build] diff --git a/recipes/wip/dev/cargo-feature-combinations/recipe.toml b/recipes/wip/dev/cargo-feature-combinations/recipe.toml index 9151eb05..146c8710 100644 --- a/recipes/wip/dev/cargo-feature-combinations/recipe.toml +++ b/recipes/wip/dev/cargo-feature-combinations/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/romnn/cargo-feature-combinations" [build] diff --git a/recipes/wip/dev/cargo-feature/recipe.toml b/recipes/wip/dev/cargo-feature/recipe.toml index bb4e3713..b713840e 100644 --- a/recipes/wip/dev/cargo-feature/recipe.toml +++ b/recipes/wip/dev/cargo-feature/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/Riey/cargo-feature" [build] diff --git a/recipes/wip/dev/cargo-files/recipe.toml b/recipes/wip/dev/cargo-files/recipe.toml index c092ce7b..9fb302b7 100644 --- a/recipes/wip/dev/cargo-files/recipe.toml +++ b/recipes/wip/dev/cargo-files/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/dcchut/cargo-files" [build] diff --git a/recipes/wip/dev/cargo-fixture/recipe.toml b/recipes/wip/dev/cargo-fixture/recipe.toml index b0a7a83a..9e914954 100644 --- a/recipes/wip/dev/cargo-fixture/recipe.toml +++ b/recipes/wip/dev/cargo-fixture/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO async-io and rustix crates error [source] git = "https://github.com/vojtechkral/cargo-fixture" [build] diff --git a/recipes/wip/dev/cargo-ft/recipe.toml b/recipes/wip/dev/cargo-ft/recipe.toml index f9a14468..9d5ef4d8 100644 --- a/recipes/wip/dev/cargo-ft/recipe.toml +++ b/recipes/wip/dev/cargo-ft/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/stormshield/cargo-ft" [build] diff --git a/recipes/wip/dev/cargo-gc/recipe.toml b/recipes/wip/dev/cargo-gc/recipe.toml index e5d2e85a..4a321ea3 100644 --- a/recipes/wip/dev/cargo-gc/recipe.toml +++ b/recipes/wip/dev/cargo-gc/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/waynexia/cargo-gc" [build] diff --git a/recipes/wip/dev/cargo-get/recipe.toml b/recipes/wip/dev/cargo-get/recipe.toml index e37c8e1d..53a41880 100644 --- a/recipes/wip/dev/cargo-get/recipe.toml +++ b/recipes/wip/dev/cargo-get/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/nicolaiunrein/cargo-get" [build] diff --git a/recipes/wip/dev/cargo-guppy/recipe.toml b/recipes/wip/dev/cargo-guppy/recipe.toml index b1023cbc..8db3eff8 100644 --- a/recipes/wip/dev/cargo-guppy/recipe.toml +++ b/recipes/wip/dev/cargo-guppy/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/guppy-rs/guppy" [build] diff --git a/recipes/wip/dev/cargo-hackerman/recipe.toml b/recipes/wip/dev/cargo-hackerman/recipe.toml index 5bb6b7f4..e356801d 100644 --- a/recipes/wip/dev/cargo-hackerman/recipe.toml +++ b/recipes/wip/dev/cargo-hackerman/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/pacak/hackerman" [build] diff --git a/recipes/wip/dev/cargo-hakari/recipe.toml b/recipes/wip/dev/cargo-hakari/recipe.toml index 5a3e01d4..a99ae45a 100644 --- a/recipes/wip/dev/cargo-hakari/recipe.toml +++ b/recipes/wip/dev/cargo-hakari/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO atomicwrites and rustix crates error [source] git = "https://github.com/guppy-rs/guppy" [build] diff --git a/recipes/wip/dev/cargo-http-registry/recipe.toml b/recipes/wip/dev/cargo-http-registry/recipe.toml index d2320b6f..a7e541c9 100644 --- a/recipes/wip/dev/cargo-http-registry/recipe.toml +++ b/recipes/wip/dev/cargo-http-registry/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/d-e-s-o/cargo-http-registry" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 03820ee33c22c3e76ffce20165f57ebb66798e17 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 12:20:06 +0000 Subject: [PATCH 1848/3180] Update recipes --- recipes/wip/dev/cargo-http-registry/recipe.toml | 2 +- recipes/wip/dev/cargo-lambda/recipe.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/wip/dev/cargo-http-registry/recipe.toml b/recipes/wip/dev/cargo-http-registry/recipe.toml index a7e541c9..fb51cdf9 100644 --- a/recipes/wip/dev/cargo-http-registry/recipe.toml +++ b/recipes/wip/dev/cargo-http-registry/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/d-e-s-o/cargo-http-registry" [build] diff --git a/recipes/wip/dev/cargo-lambda/recipe.toml b/recipes/wip/dev/cargo-lambda/recipe.toml index aacaf669..3e36827f 100644 --- a/recipes/wip/dev/cargo-lambda/recipe.toml +++ b/recipes/wip/dev/cargo-lambda/recipe.toml @@ -4,5 +4,5 @@ git = "https://github.com/cargo-lambda/cargo-lambda" [build] template = "custom" script = """ -cookbook_cargo_packages cargo-lambda-cli +cookbook_cargo_packages cargo-lambda """ From 0b4a1def8a35fc83c9545c081594620826cb2cb3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 12:29:27 +0000 Subject: [PATCH 1849/3180] Update recipes --- recipes/wip/dev/cargo-lambda/recipe.toml | 2 +- recipes/wip/dev/cargo-leet/recipe.toml | 2 +- recipes/wip/dev/cargo-leptos/recipe.toml | 2 +- recipes/wip/dev/cargo-license/recipe.toml | 2 +- recipes/wip/dev/cargo-limit/recipe.toml | 2 +- recipes/wip/dev/cargo-list/recipe.toml | 3 +++ 6 files changed, 8 insertions(+), 5 deletions(-) diff --git a/recipes/wip/dev/cargo-lambda/recipe.toml b/recipes/wip/dev/cargo-lambda/recipe.toml index 3e36827f..95bff1a1 100644 --- a/recipes/wip/dev/cargo-lambda/recipe.toml +++ b/recipes/wip/dev/cargo-lambda/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/cargo-lambda/cargo-lambda" [build] diff --git a/recipes/wip/dev/cargo-leet/recipe.toml b/recipes/wip/dev/cargo-leet/recipe.toml index 49941b4e..0e8956b1 100644 --- a/recipes/wip/dev/cargo-leet/recipe.toml +++ b/recipes/wip/dev/cargo-leet/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/rust-practice/cargo-leet" [build] diff --git a/recipes/wip/dev/cargo-leptos/recipe.toml b/recipes/wip/dev/cargo-leptos/recipe.toml index 77b5c4d0..60bfc093 100644 --- a/recipes/wip/dev/cargo-leptos/recipe.toml +++ b/recipes/wip/dev/cargo-leptos/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/leptos-rs/cargo-leptos" [build] diff --git a/recipes/wip/dev/cargo-license/recipe.toml b/recipes/wip/dev/cargo-license/recipe.toml index 8673e0e5..7ba34dee 100644 --- a/recipes/wip/dev/cargo-license/recipe.toml +++ b/recipes/wip/dev/cargo-license/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/onur/cargo-license" [build] diff --git a/recipes/wip/dev/cargo-limit/recipe.toml b/recipes/wip/dev/cargo-limit/recipe.toml index 82e7be32..a7bfeca5 100644 --- a/recipes/wip/dev/cargo-limit/recipe.toml +++ b/recipes/wip/dev/cargo-limit/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/cargo-limit/cargo-limit" [build] diff --git a/recipes/wip/dev/cargo-list/recipe.toml b/recipes/wip/dev/cargo-list/recipe.toml index cc318f01..b1d4b77c 100644 --- a/recipes/wip/dev/cargo-list/recipe.toml +++ b/recipes/wip/dev/cargo-list/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/qtfkwk/cargo-list" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 05a2d50e2b7618b166171807089fca1cc0bd7a1d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 12:48:40 +0000 Subject: [PATCH 1850/3180] Update recipes --- recipes/wip/dev/cargo-list/recipe.toml | 2 +- recipes/wip/dev/cargo-llvm-cov/recipe.toml | 2 +- recipes/wip/dev/cargo-llvm-lines/recipe.toml | 2 +- recipes/wip/dev/cargo-loc/recipe.toml | 2 +- recipes/wip/dev/cargo-lockup/recipe.toml | 2 +- recipes/wip/dev/cargo-machete/recipe.toml | 2 +- recipes/wip/dev/cargo-make/recipe.toml | 2 +- recipes/wip/dev/cargo-modules/recipe.toml | 2 +- recipes/wip/dev/cargo-nextest/recipe.toml | 2 +- recipes/wip/dev/cargo-patch/recipe.toml | 3 +++ 10 files changed, 12 insertions(+), 9 deletions(-) diff --git a/recipes/wip/dev/cargo-list/recipe.toml b/recipes/wip/dev/cargo-list/recipe.toml index b1d4b77c..4959c583 100644 --- a/recipes/wip/dev/cargo-list/recipe.toml +++ b/recipes/wip/dev/cargo-list/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO update the redox_syscall crate version on the dependency tree [source] git = "https://github.com/qtfkwk/cargo-list" [build] diff --git a/recipes/wip/dev/cargo-llvm-cov/recipe.toml b/recipes/wip/dev/cargo-llvm-cov/recipe.toml index 725ccbd7..0edd437f 100644 --- a/recipes/wip/dev/cargo-llvm-cov/recipe.toml +++ b/recipes/wip/dev/cargo-llvm-cov/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/taiki-e/cargo-llvm-cov" [build] diff --git a/recipes/wip/dev/cargo-llvm-lines/recipe.toml b/recipes/wip/dev/cargo-llvm-lines/recipe.toml index bf7b26b3..e9fefa36 100644 --- a/recipes/wip/dev/cargo-llvm-lines/recipe.toml +++ b/recipes/wip/dev/cargo-llvm-lines/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/dtolnay/cargo-llvm-lines" [build] diff --git a/recipes/wip/dev/cargo-loc/recipe.toml b/recipes/wip/dev/cargo-loc/recipe.toml index d2261b84..0e1af283 100644 --- a/recipes/wip/dev/cargo-loc/recipe.toml +++ b/recipes/wip/dev/cargo-loc/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/Shnatsel/cargo-loc" [build] diff --git a/recipes/wip/dev/cargo-lockup/recipe.toml b/recipes/wip/dev/cargo-lockup/recipe.toml index ad1e8b9d..0e0fe239 100644 --- a/recipes/wip/dev/cargo-lockup/recipe.toml +++ b/recipes/wip/dev/cargo-lockup/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/collinoc/cargo-lookup" [build] diff --git a/recipes/wip/dev/cargo-machete/recipe.toml b/recipes/wip/dev/cargo-machete/recipe.toml index 7ac6f664..7fcd1a66 100644 --- a/recipes/wip/dev/cargo-machete/recipe.toml +++ b/recipes/wip/dev/cargo-machete/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/bnjbvr/cargo-machete" [build] diff --git a/recipes/wip/dev/cargo-make/recipe.toml b/recipes/wip/dev/cargo-make/recipe.toml index a8967ea3..3c7599e7 100644 --- a/recipes/wip/dev/cargo-make/recipe.toml +++ b/recipes/wip/dev/cargo-make/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/sagiegurari/cargo-make" [build] diff --git a/recipes/wip/dev/cargo-modules/recipe.toml b/recipes/wip/dev/cargo-modules/recipe.toml index 379cc1c6..e8e49b79 100644 --- a/recipes/wip/dev/cargo-modules/recipe.toml +++ b/recipes/wip/dev/cargo-modules/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/regexident/cargo-modules" [build] diff --git a/recipes/wip/dev/cargo-nextest/recipe.toml b/recipes/wip/dev/cargo-nextest/recipe.toml index c312502e..43f484da 100644 --- a/recipes/wip/dev/cargo-nextest/recipe.toml +++ b/recipes/wip/dev/cargo-nextest/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO shared_child and libc crates error [source] git = "https://github.com/nextest-rs/nextest" [build] diff --git a/recipes/wip/dev/cargo-patch/recipe.toml b/recipes/wip/dev/cargo-patch/recipe.toml index 0f647cbf..51cedcbb 100644 --- a/recipes/wip/dev/cargo-patch/recipe.toml +++ b/recipes/wip/dev/cargo-patch/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/itmettkeDE/cargo-patch" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 0a6dde75fad2c2f0ea4a283bfe895b4f57fe8326 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 12:55:12 +0000 Subject: [PATCH 1851/3180] Update recipes --- recipes/wip/dev/cargo-patch/recipe.toml | 2 +- recipes/wip/dev/cargo-public-api/recipe.toml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/dev/cargo-patch/recipe.toml b/recipes/wip/dev/cargo-patch/recipe.toml index 51cedcbb..34a3a686 100644 --- a/recipes/wip/dev/cargo-patch/recipe.toml +++ b/recipes/wip/dev/cargo-patch/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO ahash crate error [source] git = "https://github.com/itmettkeDE/cargo-patch" [build] diff --git a/recipes/wip/dev/cargo-public-api/recipe.toml b/recipes/wip/dev/cargo-public-api/recipe.toml index eb8fcaa6..b6f0acd8 100644 --- a/recipes/wip/dev/cargo-public-api/recipe.toml +++ b/recipes/wip/dev/cargo-public-api/recipe.toml @@ -3,6 +3,9 @@ git = "https://github.com/Enselic/cargo-public-api" [build] template = "custom" +dependencies = [ + "openssl1", +] script = """ cookbook_cargo_packages cargo-public-api """ From 87b926bdf8fe1b3473df64e16a7a468a2bf66eee Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 13:24:07 +0000 Subject: [PATCH 1852/3180] Update recipes --- recipes/wip/dev/cargo-public-api/recipe.toml | 2 +- recipes/wip/dev/cargo-px/recipe.toml | 2 +- recipes/wip/dev/cargo-qtest/recipe.toml | 2 +- recipes/wip/dev/cargo-rdme/recipe.toml | 2 +- recipes/wip/dev/cargo-release/recipe.toml | 2 +- recipes/wip/dev/cargo-selector/recipe.toml | 2 +- recipes/wip/dev/cargo-shear/recipe.toml | 2 +- recipes/wip/dev/cargo-single-line/recipe.toml | 2 +- recipes/wip/dev/cargo-spellcheck/recipe.toml | 3 +++ recipes/wip/dev/cargo-supply-chain/recipe.toml | 2 +- recipes/wip/dev/cargo-sync-rdme/recipe.toml | 2 +- recipes/wip/dev/cargo-tally/recipe.toml | 2 +- recipes/wip/dev/cargo-temp/recipe.toml | 2 +- 13 files changed, 15 insertions(+), 12 deletions(-) diff --git a/recipes/wip/dev/cargo-public-api/recipe.toml b/recipes/wip/dev/cargo-public-api/recipe.toml index b6f0acd8..3583dd6b 100644 --- a/recipes/wip/dev/cargo-public-api/recipe.toml +++ b/recipes/wip/dev/cargo-public-api/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/Enselic/cargo-public-api" [build] diff --git a/recipes/wip/dev/cargo-px/recipe.toml b/recipes/wip/dev/cargo-px/recipe.toml index ded1090d..f317d168 100644 --- a/recipes/wip/dev/cargo-px/recipe.toml +++ b/recipes/wip/dev/cargo-px/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO ahash crate error [source] git = "https://github.com/LukeMathWalker/cargo-px" [build] diff --git a/recipes/wip/dev/cargo-qtest/recipe.toml b/recipes/wip/dev/cargo-qtest/recipe.toml index ad3c7c4a..ace273e9 100644 --- a/recipes/wip/dev/cargo-qtest/recipe.toml +++ b/recipes/wip/dev/cargo-qtest/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/onur-ozkan/cargo-qtest" [build] diff --git a/recipes/wip/dev/cargo-rdme/recipe.toml b/recipes/wip/dev/cargo-rdme/recipe.toml index b63566cf..47435ad9 100644 --- a/recipes/wip/dev/cargo-rdme/recipe.toml +++ b/recipes/wip/dev/cargo-rdme/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/orium/cargo-rdme" [build] diff --git a/recipes/wip/dev/cargo-release/recipe.toml b/recipes/wip/dev/cargo-release/recipe.toml index 34efab75..1322d13f 100644 --- a/recipes/wip/dev/cargo-release/recipe.toml +++ b/recipes/wip/dev/cargo-release/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO openssl-sys crate error [source] git = "https://github.com/crate-ci/cargo-release" [build] diff --git a/recipes/wip/dev/cargo-selector/recipe.toml b/recipes/wip/dev/cargo-selector/recipe.toml index df47eede..844aa3ec 100644 --- a/recipes/wip/dev/cargo-selector/recipe.toml +++ b/recipes/wip/dev/cargo-selector/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/lusingander/cargo-selector" [build] diff --git a/recipes/wip/dev/cargo-shear/recipe.toml b/recipes/wip/dev/cargo-shear/recipe.toml index 8e9619a6..77ae7800 100644 --- a/recipes/wip/dev/cargo-shear/recipe.toml +++ b/recipes/wip/dev/cargo-shear/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/Boshen/cargo-shear" [build] diff --git a/recipes/wip/dev/cargo-single-line/recipe.toml b/recipes/wip/dev/cargo-single-line/recipe.toml index f6e16f5d..d338daa5 100644 --- a/recipes/wip/dev/cargo-single-line/recipe.toml +++ b/recipes/wip/dev/cargo-single-line/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/mexus/cargo-single-line" [build] diff --git a/recipes/wip/dev/cargo-spellcheck/recipe.toml b/recipes/wip/dev/cargo-spellcheck/recipe.toml index 3c846f83..673f2e91 100644 --- a/recipes/wip/dev/cargo-spellcheck/recipe.toml +++ b/recipes/wip/dev/cargo-spellcheck/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/drahnr/cargo-spellcheck" [build] template = "cargo" +dependencies = [ + "llvm18", +] diff --git a/recipes/wip/dev/cargo-supply-chain/recipe.toml b/recipes/wip/dev/cargo-supply-chain/recipe.toml index 735281e5..9ce9539f 100644 --- a/recipes/wip/dev/cargo-supply-chain/recipe.toml +++ b/recipes/wip/dev/cargo-supply-chain/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error (after cargo update) [source] git = "https://github.com/rust-secure-code/cargo-supply-chain" [build] diff --git a/recipes/wip/dev/cargo-sync-rdme/recipe.toml b/recipes/wip/dev/cargo-sync-rdme/recipe.toml index 2d1ff6f5..f5b5205b 100644 --- a/recipes/wip/dev/cargo-sync-rdme/recipe.toml +++ b/recipes/wip/dev/cargo-sync-rdme/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/gifnksm/cargo-sync-rdme" [build] diff --git a/recipes/wip/dev/cargo-tally/recipe.toml b/recipes/wip/dev/cargo-tally/recipe.toml index d56583bd..4ddf19b2 100644 --- a/recipes/wip/dev/cargo-tally/recipe.toml +++ b/recipes/wip/dev/cargo-tally/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/dtolnay/cargo-tally" [build] diff --git a/recipes/wip/dev/cargo-temp/recipe.toml b/recipes/wip/dev/cargo-temp/recipe.toml index 77375da9..1256d37a 100644 --- a/recipes/wip/dev/cargo-temp/recipe.toml +++ b/recipes/wip/dev/cargo-temp/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/yozhgoor/cargo-temp" [build] From f5b4358d9ef7e1e45cb4dd8d2ca005428d5ceb00 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 13:36:29 +0000 Subject: [PATCH 1853/3180] Update recipes --- recipes/wip/dev/cargo-trim/recipe.toml | 2 +- recipes/wip/dev/cargo-udeps/recipe.toml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/dev/cargo-trim/recipe.toml b/recipes/wip/dev/cargo-trim/recipe.toml index 36e15b27..aedfce42 100644 --- a/recipes/wip/dev/cargo-trim/recipe.toml +++ b/recipes/wip/dev/cargo-trim/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error [source] git = "https://github.com/iamsauravsharma/cargo-trim" [build] diff --git a/recipes/wip/dev/cargo-udeps/recipe.toml b/recipes/wip/dev/cargo-udeps/recipe.toml index 0a0f7c25..a74d9953 100644 --- a/recipes/wip/dev/cargo-udeps/recipe.toml +++ b/recipes/wip/dev/cargo-udeps/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/est31/cargo-udeps" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 503b1f8e5e03904991dbeba805a7a3a7fa0816bb Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 13:43:28 +0000 Subject: [PATCH 1854/3180] Update recipes --- recipes/wip/dev/cargo-udeps/recipe.toml | 2 +- recipes/wip/dev/cargo-ui/recipe.toml | 2 +- recipes/wip/dev/cargo-unfmt/recipe.toml | 2 +- recipes/wip/dev/cargo-unmaintained/recipe.toml | 3 +++ 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/recipes/wip/dev/cargo-udeps/recipe.toml b/recipes/wip/dev/cargo-udeps/recipe.toml index a74d9953..558e9db2 100644 --- a/recipes/wip/dev/cargo-udeps/recipe.toml +++ b/recipes/wip/dev/cargo-udeps/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO cargo-util crate error [source] git = "https://github.com/est31/cargo-udeps" [build] diff --git a/recipes/wip/dev/cargo-ui/recipe.toml b/recipes/wip/dev/cargo-ui/recipe.toml index b9d15c0a..9ea0143f 100644 --- a/recipes/wip/dev/cargo-ui/recipe.toml +++ b/recipes/wip/dev/cargo-ui/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make libxkbcommon work [source] git = "https://github.com/slint-ui/cargo-ui" rev = "230652da8e9d91f109d5e4be3a5831452243ebc0" diff --git a/recipes/wip/dev/cargo-unfmt/recipe.toml b/recipes/wip/dev/cargo-unfmt/recipe.toml index 6897501a..c152514d 100644 --- a/recipes/wip/dev/cargo-unfmt/recipe.toml +++ b/recipes/wip/dev/cargo-unfmt/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/fprasx/cargo-unfmt" [build] diff --git a/recipes/wip/dev/cargo-unmaintained/recipe.toml b/recipes/wip/dev/cargo-unmaintained/recipe.toml index 99138612..16b074ba 100644 --- a/recipes/wip/dev/cargo-unmaintained/recipe.toml +++ b/recipes/wip/dev/cargo-unmaintained/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/trailofbits/cargo-unmaintained" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 7a87b79719216e710e9756e37990a735590878df Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 11 Jun 2024 09:04:54 -0600 Subject: [PATCH 1855/3180] Disable libpsl requirement in curl --- recipes/emulators/flycast/recipe.toml | 1 - recipes/net/curl/recipe.toml | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/emulators/flycast/recipe.toml b/recipes/emulators/flycast/recipe.toml index 595cefa9..8cce16b8 100644 --- a/recipes/emulators/flycast/recipe.toml +++ b/recipes/emulators/flycast/recipe.toml @@ -7,7 +7,6 @@ dependencies = [ "curl", "libiconv", "liborbital", - "libpsl", "llvm", "mesa", "nghttp2", diff --git a/recipes/net/curl/recipe.toml b/recipes/net/curl/recipe.toml index b9569030..69078f6f 100644 --- a/recipes/net/curl/recipe.toml +++ b/recipes/net/curl/recipe.toml @@ -6,7 +6,7 @@ upstream = "https://github.com/curl/curl.git" [build] template = "custom" dependencies = [ - "libpsl", + #TODO: git fails to build when this is a dependency: "libpsl", "nghttp2", "openssl1", "zlib" @@ -31,6 +31,7 @@ COOKBOOK_CONFIGURE_FLAGS=( --with-nghttp2="${COOKBOOK_SYSROOT}" --with-ssl="${COOKBOOK_SYSROOT}" --with-zlib="${COOKBOOK_SYSROOT}" + --without-libpsl ) cookbook_configure """ From 39c8a321ebb44933ac6efec9261dbf9d15b140f0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 11 Jun 2024 09:09:20 -0600 Subject: [PATCH 1856/3180] Replace llvm with llvm18 in all recipes --- recipes/demos/glutin/recipe.toml | 2 +- recipes/emulators/flycast/recipe.toml | 2 +- recipes/emulators/mednafen/recipe.toml | 2 +- recipes/emulators/retroarch/recipe.toml | 2 +- recipes/tools/pathfinder/recipe.toml | 2 +- recipes/wip/dev/gnome-builder/recipe.toml | 2 +- recipes/wip/emulators/boxedwine/recipe.toml | 2 +- recipes/wip/emulators/ppsspp/recipe.toml | 2 +- recipes/wip/games/shockolate/recipe.toml | 2 +- recipes/wip/graphics/gaffer/recipe.toml | 2 +- recipes/wip/tools/cosmic-player/recipe.toml | 2 +- recipes/wip/video/tplay/recipe.toml | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/recipes/demos/glutin/recipe.toml b/recipes/demos/glutin/recipe.toml index ac85fe0f..1d3a416e 100644 --- a/recipes/demos/glutin/recipe.toml +++ b/recipes/demos/glutin/recipe.toml @@ -6,7 +6,7 @@ upstream = "https://github.com/rust-windowing/glutin.git" [build] template = "custom" dependencies = [ - "llvm", + "llvm18", "mesa", "zlib" ] diff --git a/recipes/emulators/flycast/recipe.toml b/recipes/emulators/flycast/recipe.toml index 8cce16b8..97da4dda 100644 --- a/recipes/emulators/flycast/recipe.toml +++ b/recipes/emulators/flycast/recipe.toml @@ -7,7 +7,7 @@ dependencies = [ "curl", "libiconv", "liborbital", - "llvm", + "llvm18", "mesa", "nghttp2", "openssl1", diff --git a/recipes/emulators/mednafen/recipe.toml b/recipes/emulators/mednafen/recipe.toml index 829674b8..e17b10e9 100644 --- a/recipes/emulators/mednafen/recipe.toml +++ b/recipes/emulators/mednafen/recipe.toml @@ -11,7 +11,7 @@ dependencies = [ #TODO: libflac "libiconv", "liborbital", - "llvm", + "llvm18", "mesa", "sdl2", "zlib", diff --git a/recipes/emulators/retroarch/recipe.toml b/recipes/emulators/retroarch/recipe.toml index 51f4019e..e830377e 100644 --- a/recipes/emulators/retroarch/recipe.toml +++ b/recipes/emulators/retroarch/recipe.toml @@ -6,7 +6,7 @@ template = "custom" dependencies = [ "liborbital", "libretro-super", - "llvm", + "llvm18", "mesa", "openssl1", "sdl2", diff --git a/recipes/tools/pathfinder/recipe.toml b/recipes/tools/pathfinder/recipe.toml index 358b0a2a..d867a230 100644 --- a/recipes/tools/pathfinder/recipe.toml +++ b/recipes/tools/pathfinder/recipe.toml @@ -6,7 +6,7 @@ upstream = "https://github.com/servo/pathfinder.git" [build] template = "custom" dependencies = [ - "llvm", + "llvm18", "mesa", "zlib", ] diff --git a/recipes/wip/dev/gnome-builder/recipe.toml b/recipes/wip/dev/gnome-builder/recipe.toml index 719f3e91..53b8683f 100644 --- a/recipes/wip/dev/gnome-builder/recipe.toml +++ b/recipes/wip/dev/gnome-builder/recipe.toml @@ -10,7 +10,7 @@ dependencies = [ "dbus", "dspy", "enchant", - "llvm", + "llvm18", "gdk-pixbuf", "glib", "gobject-introspection", diff --git a/recipes/wip/emulators/boxedwine/recipe.toml b/recipes/wip/emulators/boxedwine/recipe.toml index 2d2507c0..f6970436 100644 --- a/recipes/wip/emulators/boxedwine/recipe.toml +++ b/recipes/wip/emulators/boxedwine/recipe.toml @@ -6,7 +6,7 @@ template = "custom" dependencies = [ "curl", "liborbital", - "llvm", + "llvm18", "mesa", "mesa-glu", "nghttp2", diff --git a/recipes/wip/emulators/ppsspp/recipe.toml b/recipes/wip/emulators/ppsspp/recipe.toml index c5ed3d3f..5ce00a6f 100644 --- a/recipes/wip/emulators/ppsspp/recipe.toml +++ b/recipes/wip/emulators/ppsspp/recipe.toml @@ -5,7 +5,7 @@ git = "https://github.com/jackpot51/ppsspp" template = "custom" dependencies = [ "liborbital", - "llvm", + "llvm18", "mesa", "mesa-glu", "sdl2", diff --git a/recipes/wip/games/shockolate/recipe.toml b/recipes/wip/games/shockolate/recipe.toml index 8f5ce555..89267100 100644 --- a/recipes/wip/games/shockolate/recipe.toml +++ b/recipes/wip/games/shockolate/recipe.toml @@ -42,5 +42,5 @@ cp -rv "${COOKBOOK_SOURCE}/shaders" "${COOKBOOK_STAGE}/home/user/systemshock/sha """ [package] dependencies = [ - "llvm", + "llvm18", ] diff --git a/recipes/wip/graphics/gaffer/recipe.toml b/recipes/wip/graphics/gaffer/recipe.toml index d2cd5797..8a8ec0f5 100644 --- a/recipes/wip/graphics/gaffer/recipe.toml +++ b/recipes/wip/graphics/gaffer/recipe.toml @@ -13,7 +13,7 @@ dependencies = [ "freetype2", "glew", "imath", - "llvm", + "llvm18", "lz4", "libffi", "libjpeg-turbo", diff --git a/recipes/wip/tools/cosmic-player/recipe.toml b/recipes/wip/tools/cosmic-player/recipe.toml index bd26691a..ec0f1a58 100644 --- a/recipes/wip/tools/cosmic-player/recipe.toml +++ b/recipes/wip/tools/cosmic-player/recipe.toml @@ -6,7 +6,7 @@ branch = "master" dependencies = [ "ffmpeg6", "liborbital", - "llvm", + "llvm18", "mesa", "sdl2", "zlib", diff --git a/recipes/wip/video/tplay/recipe.toml b/recipes/wip/video/tplay/recipe.toml index a922c6ec..df5a777e 100644 --- a/recipes/wip/video/tplay/recipe.toml +++ b/recipes/wip/video/tplay/recipe.toml @@ -6,7 +6,7 @@ rev = "f32d5d3df7e3c6a873d1b113ef3b707b016b3a69" template = "cargo" dependencies = [ "ffmpeg6", - "llvm", + "llvm18", "openssl1", "opencv4", ] From 0a3c8d1e3992b56fad7e01a0a4822cbe92635787 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 11 Jun 2024 09:13:14 -0600 Subject: [PATCH 1857/3180] Remove -lpsl from flycast --- recipes/emulators/flycast/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/emulators/flycast/recipe.toml b/recipes/emulators/flycast/recipe.toml index 97da4dda..1b0c84a3 100644 --- a/recipes/emulators/flycast/recipe.toml +++ b/recipes/emulators/flycast/recipe.toml @@ -20,7 +20,7 @@ export CXXFLAGS="${CXXFLAGS} -D_GLIBCXX_USE_C99_MATH_TR1=1 -I${COOKBOOK_SYSROOT} #TODO: don't use this export SDL_LIBS="-lSDL2 -lorbital $("${TARGET}-pkg-config" --libs osmesa) -lstdc++" #TODO: don't add curl -export SDL_LIBS="${SDL_LIBS} -lcurl -lnghttp2 -lpsl -lssl -lcrypto" +export SDL_LIBS="${SDL_LIBS} -lcurl -lnghttp2 -lssl -lcrypto" COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_VERBOSE_MAKEFILE=On From cf53f33c5d28f5744f5494cfe830802868d6cc3b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 16:34:35 +0000 Subject: [PATCH 1858/3180] Update recipes --- recipes/wip/dev/cargo-unmaintained/recipe.toml | 2 +- recipes/wip/dev/cargo-update/recipe.toml | 2 +- recipes/wip/dev/cargo-vendor-filterer/recipe.toml | 2 +- recipes/wip/dev/cargo-wasi/recipe.toml | 2 +- recipes/wip/dev/cargo-wasix/recipe.toml | 2 +- recipes/wip/dev/cargo-whatfeatures/recipe.toml | 3 +++ 6 files changed, 8 insertions(+), 5 deletions(-) diff --git a/recipes/wip/dev/cargo-unmaintained/recipe.toml b/recipes/wip/dev/cargo-unmaintained/recipe.toml index 16b074ba..bb667444 100644 --- a/recipes/wip/dev/cargo-unmaintained/recipe.toml +++ b/recipes/wip/dev/cargo-unmaintained/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after a camino crate patch) [source] git = "https://github.com/trailofbits/cargo-unmaintained" [build] diff --git a/recipes/wip/dev/cargo-update/recipe.toml b/recipes/wip/dev/cargo-update/recipe.toml index f5016b40..22e60891 100644 --- a/recipes/wip/dev/cargo-update/recipe.toml +++ b/recipes/wip/dev/cargo-update/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error [source] git = "https://github.com/nabijaczleweli/cargo-update" [build] diff --git a/recipes/wip/dev/cargo-vendor-filterer/recipe.toml b/recipes/wip/dev/cargo-vendor-filterer/recipe.toml index e82569a5..cf007087 100644 --- a/recipes/wip/dev/cargo-vendor-filterer/recipe.toml +++ b/recipes/wip/dev/cargo-vendor-filterer/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/coreos/cargo-vendor-filterer" [build] diff --git a/recipes/wip/dev/cargo-wasi/recipe.toml b/recipes/wip/dev/cargo-wasi/recipe.toml index 08610531..a08d2924 100644 --- a/recipes/wip/dev/cargo-wasi/recipe.toml +++ b/recipes/wip/dev/cargo-wasi/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO fs2 crate error [source] git = "https://github.com/bytecodealliance/cargo-wasi" [build] diff --git a/recipes/wip/dev/cargo-wasix/recipe.toml b/recipes/wip/dev/cargo-wasix/recipe.toml index 1aeb180b..2030bf92 100644 --- a/recipes/wip/dev/cargo-wasix/recipe.toml +++ b/recipes/wip/dev/cargo-wasix/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO fs2 crate error [source] git = "https://github.com/wasix-org/cargo-wasix" [build] diff --git a/recipes/wip/dev/cargo-whatfeatures/recipe.toml b/recipes/wip/dev/cargo-whatfeatures/recipe.toml index c263e47e..0028a195 100644 --- a/recipes/wip/dev/cargo-whatfeatures/recipe.toml +++ b/recipes/wip/dev/cargo-whatfeatures/recipe.toml @@ -3,6 +3,9 @@ git = "https://github.com/museun/cargo-whatfeatures" [build] template = "custom" +dependencies = [ + "openssl1", +] script = """ cookbook_cargo --features rustls """ From 843f75983a1fd1f6e3310f152a35133abbad7d6b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 17:10:53 +0000 Subject: [PATCH 1859/3180] Update recipes --- recipes/wip/dev/cargo-whatfeatures/recipe.toml | 2 +- recipes/wip/dev/cargo-wizard/recipe.toml | 2 +- recipes/wip/dev/cargo-workspace-version/recipe.toml | 2 +- recipes/wip/dev/code-minimap/recipe.toml | 2 +- recipes/wip/dev/colmena/recipe.toml | 2 +- recipes/wip/dev/commit/recipe.toml | 2 +- recipes/wip/dev/coq-of-rust/recipe.toml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/recipes/wip/dev/cargo-whatfeatures/recipe.toml b/recipes/wip/dev/cargo-whatfeatures/recipe.toml index 0028a195..de618ea8 100644 --- a/recipes/wip/dev/cargo-whatfeatures/recipe.toml +++ b/recipes/wip/dev/cargo-whatfeatures/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/museun/cargo-whatfeatures" [build] diff --git a/recipes/wip/dev/cargo-wizard/recipe.toml b/recipes/wip/dev/cargo-wizard/recipe.toml index ed3d2f2b..b44601db 100644 --- a/recipes/wip/dev/cargo-wizard/recipe.toml +++ b/recipes/wip/dev/cargo-wizard/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/Kobzol/cargo-wizard" [build] diff --git a/recipes/wip/dev/cargo-workspace-version/recipe.toml b/recipes/wip/dev/cargo-workspace-version/recipe.toml index 2e5e25f2..521b93ce 100644 --- a/recipes/wip/dev/cargo-workspace-version/recipe.toml +++ b/recipes/wip/dev/cargo-workspace-version/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/ava-labs/cargo-workspace-version" [build] diff --git a/recipes/wip/dev/code-minimap/recipe.toml b/recipes/wip/dev/code-minimap/recipe.toml index 4a38cfe4..c0a18e39 100644 --- a/recipes/wip/dev/code-minimap/recipe.toml +++ b/recipes/wip/dev/code-minimap/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/wfxr/code-minimap" [build] diff --git a/recipes/wip/dev/colmena/recipe.toml b/recipes/wip/dev/colmena/recipe.toml index 42889b7e..da33c5c6 100644 --- a/recipes/wip/dev/colmena/recipe.toml +++ b/recipes/wip/dev/colmena/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO sys-info crate error (after cargo update) [source] git = "https://github.com/zhaofengli/colmena" [build] diff --git a/recipes/wip/dev/commit/recipe.toml b/recipes/wip/dev/commit/recipe.toml index a685242c..1fd3f856 100644 --- a/recipes/wip/dev/commit/recipe.toml +++ b/recipes/wip/dev/commit/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/alt-art/commit" [build] diff --git a/recipes/wip/dev/coq-of-rust/recipe.toml b/recipes/wip/dev/coq-of-rust/recipe.toml index 6d89cfbe..0370d557 100644 --- a/recipes/wip/dev/coq-of-rust/recipe.toml +++ b/recipes/wip/dev/coq-of-rust/recipe.toml @@ -4,5 +4,5 @@ git = "https://github.com/formal-land/coq-of-rust" [build] template = "custom" script = """ -cookbook_cargo_packages lib cli +cookbook_cargo_packages coq_of_rust_cli coq_of_rust_lib """ From c20e1df9042f286a86860c8f741c57c27a3491e0 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 18:06:02 +0000 Subject: [PATCH 1860/3180] Update recipes --- recipes/wip/dev/coq-of-rust/recipe.toml | 2 +- recipes/wip/dev/deploy-rs/recipe.toml | 2 +- recipes/wip/dev/dfx/recipe.toml | 2 +- recipes/wip/dev/dtool/recipe.toml | 2 +- recipes/wip/dev/ecargo/recipe.toml | 2 +- recipes/wip/dev/espmonitor/recipe.toml | 2 +- recipes/wip/dev/get-blessed/recipe.toml | 3 +++ 7 files changed, 9 insertions(+), 6 deletions(-) diff --git a/recipes/wip/dev/coq-of-rust/recipe.toml b/recipes/wip/dev/coq-of-rust/recipe.toml index 0370d557..234fddf0 100644 --- a/recipes/wip/dev/coq-of-rust/recipe.toml +++ b/recipes/wip/dev/coq-of-rust/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO require the rust-src rustc-dev llvm-tools-preview components [source] git = "https://github.com/formal-land/coq-of-rust" [build] diff --git a/recipes/wip/dev/deploy-rs/recipe.toml b/recipes/wip/dev/deploy-rs/recipe.toml index ac1cc143..aef3f5c8 100644 --- a/recipes/wip/dev/deploy-rs/recipe.toml +++ b/recipes/wip/dev/deploy-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO add a command to properly move the binary [source] git = "https://github.com/serokell/deploy-rs" [build] diff --git a/recipes/wip/dev/dfx/recipe.toml b/recipes/wip/dev/dfx/recipe.toml index 92769e5f..1d4214da 100644 --- a/recipes/wip/dev/dfx/recipe.toml +++ b/recipes/wip/dev/dfx/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO libloading crate error [source] git = "https://github.com/dfinity/sdk" [build] diff --git a/recipes/wip/dev/dtool/recipe.toml b/recipes/wip/dev/dtool/recipe.toml index 720824b2..480a35e6 100644 --- a/recipes/wip/dev/dtool/recipe.toml +++ b/recipes/wip/dev/dtool/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO update the redox_syscall version on the dependency tree [source] git = "https://github.com/guoxbin/dtool" [build] diff --git a/recipes/wip/dev/ecargo/recipe.toml b/recipes/wip/dev/ecargo/recipe.toml index 9c0e0de3..ca92de77 100644 --- a/recipes/wip/dev/ecargo/recipe.toml +++ b/recipes/wip/dev/ecargo/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO glutin crate error [source] git = "https://github.com/crumblingstatue/ecargo" [build] diff --git a/recipes/wip/dev/espmonitor/recipe.toml b/recipes/wip/dev/espmonitor/recipe.toml index cc23026d..65874488 100644 --- a/recipes/wip/dev/espmonitor/recipe.toml +++ b/recipes/wip/dev/espmonitor/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO termios crate error [source] git = "https://github.com/esp-rs/espmonitor" [build] diff --git a/recipes/wip/dev/get-blessed/recipe.toml b/recipes/wip/dev/get-blessed/recipe.toml index d2af7004..adc81be4 100644 --- a/recipes/wip/dev/get-blessed/recipe.toml +++ b/recipes/wip/dev/get-blessed/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/josueBarretogit/get_blessed_rs" [build] template = "cargo" +dependencies = [ + "openssl1", +] From cfd5cfab79b65071fb422d5f347abea69b2a350e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 18:20:00 +0000 Subject: [PATCH 1861/3180] Update recipes --- recipes/wip/dev/get-blessed/recipe.toml | 2 +- recipes/wip/dev/gex/recipe.toml | 2 +- recipes/wip/dev/gfold/recipe.toml | 2 +- recipes/wip/dev/gist-rs/recipe.toml | 2 +- recipes/wip/dev/git-grab/recipe.toml | 2 +- recipes/wip/dev/git-graph/recipe.toml | 2 +- recipes/wip/dev/git-interactive-rebase-tool/recipe.toml | 2 +- recipes/wip/dev/git-repo-manager/recipe.toml | 3 +++ 8 files changed, 10 insertions(+), 7 deletions(-) diff --git a/recipes/wip/dev/get-blessed/recipe.toml b/recipes/wip/dev/get-blessed/recipe.toml index adc81be4..6c4b14fd 100644 --- a/recipes/wip/dev/get-blessed/recipe.toml +++ b/recipes/wip/dev/get-blessed/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/josueBarretogit/get_blessed_rs" [build] diff --git a/recipes/wip/dev/gex/recipe.toml b/recipes/wip/dev/gex/recipe.toml index 7ab5fb34..3d710cf2 100644 --- a/recipes/wip/dev/gex/recipe.toml +++ b/recipes/wip/dev/gex/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/Piturnah/gex" [build] diff --git a/recipes/wip/dev/gfold/recipe.toml b/recipes/wip/dev/gfold/recipe.toml index 59d41633..f698808e 100644 --- a/recipes/wip/dev/gfold/recipe.toml +++ b/recipes/wip/dev/gfold/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/nickgerace/gfold" [build] diff --git a/recipes/wip/dev/gist-rs/recipe.toml b/recipes/wip/dev/gist-rs/recipe.toml index 29abdf65..4d89631e 100644 --- a/recipes/wip/dev/gist-rs/recipe.toml +++ b/recipes/wip/dev/gist-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/oz/gist" [build] diff --git a/recipes/wip/dev/git-grab/recipe.toml b/recipes/wip/dev/git-grab/recipe.toml index 278ca098..c3a6e00f 100644 --- a/recipes/wip/dev/git-grab/recipe.toml +++ b/recipes/wip/dev/git-grab/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/wezm/git-grab" [build] diff --git a/recipes/wip/dev/git-graph/recipe.toml b/recipes/wip/dev/git-graph/recipe.toml index bfc5f5a4..ef9aacff 100644 --- a/recipes/wip/dev/git-graph/recipe.toml +++ b/recipes/wip/dev/git-graph/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/mlange-42/git-graph" [build] diff --git a/recipes/wip/dev/git-interactive-rebase-tool/recipe.toml b/recipes/wip/dev/git-interactive-rebase-tool/recipe.toml index 5ed90170..dae20f2f 100644 --- a/recipes/wip/dev/git-interactive-rebase-tool/recipe.toml +++ b/recipes/wip/dev/git-interactive-rebase-tool/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/MitMaro/git-interactive-rebase-tool" [build] diff --git a/recipes/wip/dev/git-repo-manager/recipe.toml b/recipes/wip/dev/git-repo-manager/recipe.toml index f40c4586..5dd69ac0 100644 --- a/recipes/wip/dev/git-repo-manager/recipe.toml +++ b/recipes/wip/dev/git-repo-manager/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/hakoerber/git-repo-manager" [build] template = "cargo" +dependencies = [ + "openssl1", +] From a8c8879e7a5de8e0083e9f7d9ec35da2509c0867 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 18:24:23 +0000 Subject: [PATCH 1862/3180] Update recipes --- recipes/wip/dev/git-repo-manager/recipe.toml | 2 +- recipes/wip/dev/git-subset/recipe.toml | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/wip/dev/git-repo-manager/recipe.toml b/recipes/wip/dev/git-repo-manager/recipe.toml index 5dd69ac0..b7b975fe 100644 --- a/recipes/wip/dev/git-repo-manager/recipe.toml +++ b/recipes/wip/dev/git-repo-manager/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/hakoerber/git-repo-manager" [build] diff --git a/recipes/wip/dev/git-subset/recipe.toml b/recipes/wip/dev/git-subset/recipe.toml index 13e43a7b..aadf7111 100644 --- a/recipes/wip/dev/git-subset/recipe.toml +++ b/recipes/wip/dev/git-subset/recipe.toml @@ -1,5 +1,8 @@ -#TODO Not compiled or tested +#TODO Not compiled or tested (after cargo update) [source] git = "https://github.com/jasonwhite/git-subset" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 34b91ac29ed1bb08085799d4562b0fdc19973db3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 20:05:23 +0000 Subject: [PATCH 1863/3180] Update recipes --- recipes/wip/dev/git-subset/recipe.toml | 2 +- recipes/wip/dev/git-tool/recipe.toml | 2 +- recipes/wip/dev/git-tools/recipe.toml | 2 +- recipes/wip/dev/gitlab-cargo-shim/recipe.toml | 2 +- recipes/wip/dev/grcov/recipe.toml | 2 +- recipes/wip/dev/icemaker/recipe.toml | 2 +- recipes/wip/dev/jco/recipe.toml | 2 +- recipes/wip/dev/kickstart/recipe.toml | 2 +- recipes/wip/dev/knope/recipe.toml | 2 +- recipes/wip/dev/kondo/recipe.toml | 2 +- recipes/wip/dev/ktra/recipe.toml | 3 +++ 11 files changed, 13 insertions(+), 10 deletions(-) diff --git a/recipes/wip/dev/git-subset/recipe.toml b/recipes/wip/dev/git-subset/recipe.toml index aadf7111..bc4f4862 100644 --- a/recipes/wip/dev/git-subset/recipe.toml +++ b/recipes/wip/dev/git-subset/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested (after cargo update) +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/jasonwhite/git-subset" [build] diff --git a/recipes/wip/dev/git-tool/recipe.toml b/recipes/wip/dev/git-tool/recipe.toml index d75db7d4..24c04fe1 100644 --- a/recipes/wip/dev/git-tool/recipe.toml +++ b/recipes/wip/dev/git-tool/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error [source] git = "https://github.com/SierraSoftworks/git-tool" [build] diff --git a/recipes/wip/dev/git-tools/recipe.toml b/recipes/wip/dev/git-tools/recipe.toml index c61f957c..bc563046 100644 --- a/recipes/wip/dev/git-tools/recipe.toml +++ b/recipes/wip/dev/git-tools/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO users crate error [source] git = "https://github.com/cecton/git-tools" [build] diff --git a/recipes/wip/dev/gitlab-cargo-shim/recipe.toml b/recipes/wip/dev/gitlab-cargo-shim/recipe.toml index 30868a9f..2827f4c8 100644 --- a/recipes/wip/dev/gitlab-cargo-shim/recipe.toml +++ b/recipes/wip/dev/gitlab-cargo-shim/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/w4/gitlab-cargo-shim" [build] diff --git a/recipes/wip/dev/grcov/recipe.toml b/recipes/wip/dev/grcov/recipe.toml index 08220168..ead221f4 100644 --- a/recipes/wip/dev/grcov/recipe.toml +++ b/recipes/wip/dev/grcov/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/mozilla/grcov" [build] diff --git a/recipes/wip/dev/icemaker/recipe.toml b/recipes/wip/dev/icemaker/recipe.toml index 0959582b..1dd73e8a 100644 --- a/recipes/wip/dev/icemaker/recipe.toml +++ b/recipes/wip/dev/icemaker/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO tree-sitter-rust error [source] git = "https://github.com/matthiaskrgr/icemaker" [build] diff --git a/recipes/wip/dev/jco/recipe.toml b/recipes/wip/dev/jco/recipe.toml index 9279ec01..34035ea0 100644 --- a/recipes/wip/dev/jco/recipe.toml +++ b/recipes/wip/dev/jco/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/bytecodealliance/jco" [build] diff --git a/recipes/wip/dev/kickstart/recipe.toml b/recipes/wip/dev/kickstart/recipe.toml index 5559ada0..b3d789da 100644 --- a/recipes/wip/dev/kickstart/recipe.toml +++ b/recipes/wip/dev/kickstart/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/Keats/kickstart" [build] diff --git a/recipes/wip/dev/knope/recipe.toml b/recipes/wip/dev/knope/recipe.toml index 1b3f8c92..f70300e8 100644 --- a/recipes/wip/dev/knope/recipe.toml +++ b/recipes/wip/dev/knope/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/knope-dev/knope" [build] diff --git a/recipes/wip/dev/kondo/recipe.toml b/recipes/wip/dev/kondo/recipe.toml index b6cd907c..e23eda27 100644 --- a/recipes/wip/dev/kondo/recipe.toml +++ b/recipes/wip/dev/kondo/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/tbillington/kondo" [build] diff --git a/recipes/wip/dev/ktra/recipe.toml b/recipes/wip/dev/ktra/recipe.toml index 36ed8bc4..9764e55d 100644 --- a/recipes/wip/dev/ktra/recipe.toml +++ b/recipes/wip/dev/ktra/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/moriturus/ktra" [build] template = "cargo" +dependencies = [ + "openssl1", +] From b090ea4d1ea070bd0bdd740709b04dc52ce03ccc Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 20:18:00 +0000 Subject: [PATCH 1864/3180] Update recipes --- recipes/wip/dev/ktra/recipe.toml | 2 +- recipes/wip/dev/lading/recipe.toml | 2 +- recipes/wip/dev/leetup/recipe.toml | 2 +- recipes/wip/dev/license-generator/recipe.toml | 2 +- recipes/wip/dev/licensure/recipe.toml | 3 +++ 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/recipes/wip/dev/ktra/recipe.toml b/recipes/wip/dev/ktra/recipe.toml index 9764e55d..b4113b6e 100644 --- a/recipes/wip/dev/ktra/recipe.toml +++ b/recipes/wip/dev/ktra/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/moriturus/ktra" [build] diff --git a/recipes/wip/dev/lading/recipe.toml b/recipes/wip/dev/lading/recipe.toml index 940ca999..9d8a76b7 100644 --- a/recipes/wip/dev/lading/recipe.toml +++ b/recipes/wip/dev/lading/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/DataDog/lading" [build] diff --git a/recipes/wip/dev/leetup/recipe.toml b/recipes/wip/dev/leetup/recipe.toml index 95569337..717945da 100644 --- a/recipes/wip/dev/leetup/recipe.toml +++ b/recipes/wip/dev/leetup/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO openssl-sys crate error [source] git = "https://github.com/dragfire/leetup" [build] diff --git a/recipes/wip/dev/license-generator/recipe.toml b/recipes/wip/dev/license-generator/recipe.toml index 72349853..98958b46 100644 --- a/recipes/wip/dev/license-generator/recipe.toml +++ b/recipes/wip/dev/license-generator/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/azu/license-generator" [build] diff --git a/recipes/wip/dev/licensure/recipe.toml b/recipes/wip/dev/licensure/recipe.toml index 9d7fdab0..b34fe0b0 100644 --- a/recipes/wip/dev/licensure/recipe.toml +++ b/recipes/wip/dev/licensure/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/chasinglogic/licensure" [build] template = "cargo" +dependencies = [ + "openssl1", +] From ace95e73554ad487db22f36f59bb8a19eb96d1c9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 20:23:00 +0000 Subject: [PATCH 1865/3180] Update recipes --- recipes/wip/dev/licensure/recipe.toml | 2 +- recipes/wip/dev/lockdiff/recipe.toml | 2 +- recipes/wip/dev/loco/recipe.toml | 11 ++++++++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/recipes/wip/dev/licensure/recipe.toml b/recipes/wip/dev/licensure/recipe.toml index b34fe0b0..21c30641 100644 --- a/recipes/wip/dev/licensure/recipe.toml +++ b/recipes/wip/dev/licensure/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/chasinglogic/licensure" [build] diff --git a/recipes/wip/dev/lockdiff/recipe.toml b/recipes/wip/dev/lockdiff/recipe.toml index c01e0795..edbb0906 100644 --- a/recipes/wip/dev/lockdiff/recipe.toml +++ b/recipes/wip/dev/lockdiff/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/your-tools/lockdiff" [build] diff --git a/recipes/wip/dev/loco/recipe.toml b/recipes/wip/dev/loco/recipe.toml index abd88d44..1f72b516 100644 --- a/recipes/wip/dev/loco/recipe.toml +++ b/recipes/wip/dev/loco/recipe.toml @@ -4,5 +4,14 @@ git = "https://github.com/loco-rs/loco" [build] template = "custom" script = """ -cookbook_cargo_packages loco-cli +binary=loco-rs +"${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --bin "${binary}" \ + --release + --cli + mkdir -pv "${COOKBOOK_STAGE}/usr/bin" + cp -v \ + "target/${TARGET}/release/${binary}" \ + "${COOKBOOK_STAGE}/usr/bin/${binary}" """ From e17cb9f6bc71259acf6ce071c5c6c7e496f08ee3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 20:30:36 +0000 Subject: [PATCH 1866/3180] Update recipes --- recipes/wip/dev/loco/recipe.toml | 14 +------------- recipes/wip/dev/margo/recipe.toml | 2 +- recipes/wip/dev/memtest-vulkan/recipe.toml | 2 +- recipes/wip/dev/mise/recipe.toml | 3 +++ 4 files changed, 6 insertions(+), 15 deletions(-) diff --git a/recipes/wip/dev/loco/recipe.toml b/recipes/wip/dev/loco/recipe.toml index 1f72b516..3a461cb0 100644 --- a/recipes/wip/dev/loco/recipe.toml +++ b/recipes/wip/dev/loco/recipe.toml @@ -1,17 +1,5 @@ -#TODO not compiled or tested +#TODO a script for a Cargo package with a flag [source] git = "https://github.com/loco-rs/loco" [build] template = "custom" -script = """ -binary=loco-rs -"${COOKBOOK_CARGO}" build \ - --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ - --bin "${binary}" \ - --release - --cli - mkdir -pv "${COOKBOOK_STAGE}/usr/bin" - cp -v \ - "target/${TARGET}/release/${binary}" \ - "${COOKBOOK_STAGE}/usr/bin/${binary}" -""" diff --git a/recipes/wip/dev/margo/recipe.toml b/recipes/wip/dev/margo/recipe.toml index f12d0d03..cbc7749b 100644 --- a/recipes/wip/dev/margo/recipe.toml +++ b/recipes/wip/dev/margo/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error [source] git = "https://github.com/integer32llc/margo" [build] diff --git a/recipes/wip/dev/memtest-vulkan/recipe.toml b/recipes/wip/dev/memtest-vulkan/recipe.toml index 540689c9..33ef2ee9 100644 --- a/recipes/wip/dev/memtest-vulkan/recipe.toml +++ b/recipes/wip/dev/memtest-vulkan/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO nix, fs4 and rustix crates error [source] git = "https://github.com/GpuZelenograd/memtest_vulkan" [build] diff --git a/recipes/wip/dev/mise/recipe.toml b/recipes/wip/dev/mise/recipe.toml index b5014883..eaf8ed19 100644 --- a/recipes/wip/dev/mise/recipe.toml +++ b/recipes/wip/dev/mise/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/jdx/mise" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 65c73dfcccf3b27d8f0abaa791ed6d6eaf0a6495 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 20:34:02 +0000 Subject: [PATCH 1867/3180] Update recipes --- recipes/wip/dev/mise/recipe.toml | 2 +- recipes/wip/dev/necessist/recipe.toml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/wip/dev/mise/recipe.toml b/recipes/wip/dev/mise/recipe.toml index eaf8ed19..c554d91c 100644 --- a/recipes/wip/dev/mise/recipe.toml +++ b/recipes/wip/dev/mise/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO shared_child and libc crates error [source] git = "https://github.com/jdx/mise" [build] diff --git a/recipes/wip/dev/necessist/recipe.toml b/recipes/wip/dev/necessist/recipe.toml index e44760f0..85253706 100644 --- a/recipes/wip/dev/necessist/recipe.toml +++ b/recipes/wip/dev/necessist/recipe.toml @@ -5,6 +5,7 @@ git = "https://github.com/trailofbits/necessist" template = "custom" dependencies = [ "sqlite3", + "openssl1", ] script = """ cookbook_cargo_packages necessist From 0e40d95567b31f8e21fceb089813d8e1bef49a1f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 21:08:23 +0000 Subject: [PATCH 1868/3180] Update recipes --- recipes/wip/dev/necessist/recipe.toml | 2 +- recipes/wip/dev/omni/recipe.toml | 2 +- recipes/wip/dev/openjdk17-headless/recipe.toml | 3 ++- recipes/wip/dev/openjdk21-headless/recipe.toml | 1 + recipes/wip/dev/panamax/recipe.toml | 3 +++ 5 files changed, 8 insertions(+), 3 deletions(-) diff --git a/recipes/wip/dev/necessist/recipe.toml b/recipes/wip/dev/necessist/recipe.toml index 85253706..43deeb23 100644 --- a/recipes/wip/dev/necessist/recipe.toml +++ b/recipes/wip/dev/necessist/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/trailofbits/necessist" [build] diff --git a/recipes/wip/dev/omni/recipe.toml b/recipes/wip/dev/omni/recipe.toml index 527c20a9..de3529e6 100644 --- a/recipes/wip/dev/omni/recipe.toml +++ b/recipes/wip/dev/omni/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO openssl-sys crate error [source] git = "https://github.com/XaF/omni" [build] diff --git a/recipes/wip/dev/openjdk17-headless/recipe.toml b/recipes/wip/dev/openjdk17-headless/recipe.toml index 0b9cd066..46b8b8b9 100644 --- a/recipes/wip/dev/openjdk17-headless/recipe.toml +++ b/recipes/wip/dev/openjdk17-headless/recipe.toml @@ -1,5 +1,5 @@ #TODO build instructions - https://github.com/openjdk/jdk17u/blob/master/doc/building.md -#TODO not compiled or tested +#TODO add supported autoconf options [source] git = "https://github.com/openjdk/jdk17u" rev = "b78a848cc7ae5787d9ec9ea0ce843cd63b06efec" @@ -9,6 +9,7 @@ dependencies = [ "fontconfig", ] script = """ +chmod a+x configure COOKBOOK_CONFIGURE_FLAGS+=( --enable-headless-only=yes ) diff --git a/recipes/wip/dev/openjdk21-headless/recipe.toml b/recipes/wip/dev/openjdk21-headless/recipe.toml index b8ca03b2..16030130 100644 --- a/recipes/wip/dev/openjdk21-headless/recipe.toml +++ b/recipes/wip/dev/openjdk21-headless/recipe.toml @@ -9,6 +9,7 @@ dependencies = [ "fontconfig", ] script = """ +chmod a+x configure COOKBOOK_CONFIGURE_FLAGS+=( --enable-headless-only=yes ) diff --git a/recipes/wip/dev/panamax/recipe.toml b/recipes/wip/dev/panamax/recipe.toml index 3f70016c..501c35f4 100644 --- a/recipes/wip/dev/panamax/recipe.toml +++ b/recipes/wip/dev/panamax/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/panamax-rs/panamax" [build] template = "cargo" +dependencies = [ + "openssl1", +] From ee63aa4823d252f373e2299e0255a76d54a68eea Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 21:13:24 +0000 Subject: [PATCH 1869/3180] Update recipes --- recipes/wip/dev/panamax/recipe.toml | 2 +- recipes/wip/dev/precious/recipe.toml | 2 +- recipes/wip/dev/projclean/recipe.toml | 2 +- recipes/wip/dev/protofetch/recipe.toml | 3 +++ 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/recipes/wip/dev/panamax/recipe.toml b/recipes/wip/dev/panamax/recipe.toml index 501c35f4..2b2e4de4 100644 --- a/recipes/wip/dev/panamax/recipe.toml +++ b/recipes/wip/dev/panamax/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/panamax-rs/panamax" [build] diff --git a/recipes/wip/dev/precious/recipe.toml b/recipes/wip/dev/precious/recipe.toml index 8036581d..cf6abee7 100644 --- a/recipes/wip/dev/precious/recipe.toml +++ b/recipes/wip/dev/precious/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/houseabsolute/precious" [build] diff --git a/recipes/wip/dev/projclean/recipe.toml b/recipes/wip/dev/projclean/recipe.toml index ebfe22c4..7c879322 100644 --- a/recipes/wip/dev/projclean/recipe.toml +++ b/recipes/wip/dev/projclean/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO fs_at crate error [source] git = "https://github.com/sigoden/projclean" [build] diff --git a/recipes/wip/dev/protofetch/recipe.toml b/recipes/wip/dev/protofetch/recipe.toml index e3c3c110..a66f1396 100644 --- a/recipes/wip/dev/protofetch/recipe.toml +++ b/recipes/wip/dev/protofetch/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/coralogix/protofetch" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 04a489645d28b3f2ff518b14c533fc6f2077a0d8 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 21:18:25 +0000 Subject: [PATCH 1870/3180] Update recipes --- recipes/wip/dev/loco/recipe.toml | 12 ++++++++++++ recipes/wip/dev/protofetch/recipe.toml | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/recipes/wip/dev/loco/recipe.toml b/recipes/wip/dev/loco/recipe.toml index 3a461cb0..719c1645 100644 --- a/recipes/wip/dev/loco/recipe.toml +++ b/recipes/wip/dev/loco/recipe.toml @@ -3,3 +3,15 @@ git = "https://github.com/loco-rs/loco" [build] template = "custom" +script = """ +binary=loco-rs +"${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --package "${binary}" \ + --release + --cli + mkdir -pv "${COOKBOOK_STAGE}/usr/bin" + cp -v \ + "target/${TARGET}/release/${binary}" \ + "${COOKBOOK_STAGE}/usr/bin/${binary}" +""" diff --git a/recipes/wip/dev/protofetch/recipe.toml b/recipes/wip/dev/protofetch/recipe.toml index a66f1396..33f03db5 100644 --- a/recipes/wip/dev/protofetch/recipe.toml +++ b/recipes/wip/dev/protofetch/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/coralogix/protofetch" [build] From 141bab80df0967e4787d261e5a6f65028e65d36a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 23:56:22 +0000 Subject: [PATCH 1871/3180] Update recipes --- recipes/wip/dev/loco/recipe.toml | 2 +- recipes/wip/dev/pxp/recipe.toml | 2 +- recipes/wip/dev/pyrev/recipe.toml | 2 +- recipes/wip/dev/radicle/recipe.toml | 2 +- recipes/wip/dev/rbasefind/recipe.toml | 2 +- recipes/wip/dev/resym/recipe.toml | 2 +- recipes/wip/dev/rust-script/recipe.toml | 2 +- recipes/wip/dev/rust-to-npm/recipe.toml | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/recipes/wip/dev/loco/recipe.toml b/recipes/wip/dev/loco/recipe.toml index 719c1645..85d138a1 100644 --- a/recipes/wip/dev/loco/recipe.toml +++ b/recipes/wip/dev/loco/recipe.toml @@ -1,4 +1,4 @@ -#TODO a script for a Cargo package with a flag +#TODO camino crate error [source] git = "https://github.com/loco-rs/loco" [build] diff --git a/recipes/wip/dev/pxp/recipe.toml b/recipes/wip/dev/pxp/recipe.toml index 616f7bbf..22f12f3e 100644 --- a/recipes/wip/dev/pxp/recipe.toml +++ b/recipes/wip/dev/pxp/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/pxp-lang/pxp" [build] diff --git a/recipes/wip/dev/pyrev/recipe.toml b/recipes/wip/dev/pyrev/recipe.toml index 5b68664b..299bf318 100644 --- a/recipes/wip/dev/pyrev/recipe.toml +++ b/recipes/wip/dev/pyrev/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/hacbit/pyrev" [build] diff --git a/recipes/wip/dev/radicle/recipe.toml b/recipes/wip/dev/radicle/recipe.toml index 230ebfa0..ba49b09d 100644 --- a/recipes/wip/dev/radicle/recipe.toml +++ b/recipes/wip/dev/radicle/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO libc error [source] git = "https://seed.radicle.xyz/z3gqcJUoA1n9HaHKufZs5FCSGazv5.git" [build] diff --git a/recipes/wip/dev/rbasefind/recipe.toml b/recipes/wip/dev/rbasefind/recipe.toml index 651f870e..886bd0f9 100644 --- a/recipes/wip/dev/rbasefind/recipe.toml +++ b/recipes/wip/dev/rbasefind/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/sgayou/rbasefind" [build] diff --git a/recipes/wip/dev/resym/recipe.toml b/recipes/wip/dev/resym/recipe.toml index 187ad973..716d6dff 100644 --- a/recipes/wip/dev/resym/recipe.toml +++ b/recipes/wip/dev/resym/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO webbrowser crate error [source] git = "https://github.com/ergrelet/resym" [build] diff --git a/recipes/wip/dev/rust-script/recipe.toml b/recipes/wip/dev/rust-script/recipe.toml index e57bb3a8..6d82981e 100644 --- a/recipes/wip/dev/rust-script/recipe.toml +++ b/recipes/wip/dev/rust-script/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/fornwall/rust-script" [build] diff --git a/recipes/wip/dev/rust-to-npm/recipe.toml b/recipes/wip/dev/rust-to-npm/recipe.toml index d0981895..db4a7b20 100644 --- a/recipes/wip/dev/rust-to-npm/recipe.toml +++ b/recipes/wip/dev/rust-to-npm/recipe.toml @@ -4,5 +4,5 @@ git = "https://github.com/a11ywatch/rust-to-npm" [build] template = "custom" script = """ -cookbook_cargo_packages cli +cookbook_cargo_packages rust-to-npm-cli """ From a49530b7a401400c84fdac53699ed7ccd0e371bc Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 11 Jun 2024 23:58:44 +0000 Subject: [PATCH 1872/3180] Update recipes --- recipes/wip/dev/rust-to-npm/recipe.toml | 2 +- recipes/wip/dev/sccache/recipe.toml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/dev/rust-to-npm/recipe.toml b/recipes/wip/dev/rust-to-npm/recipe.toml index db4a7b20..c9ac5635 100644 --- a/recipes/wip/dev/rust-to-npm/recipe.toml +++ b/recipes/wip/dev/rust-to-npm/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/a11ywatch/rust-to-npm" [build] diff --git a/recipes/wip/dev/sccache/recipe.toml b/recipes/wip/dev/sccache/recipe.toml index de3e0bc3..85e47813 100644 --- a/recipes/wip/dev/sccache/recipe.toml +++ b/recipes/wip/dev/sccache/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/mozilla/sccache" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 82d2ac8a6a77df9eca3cceb18b21433a7352d569 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 00:01:59 +0000 Subject: [PATCH 1873/3180] Update recipes --- recipes/wip/dev/sccache/recipe.toml | 2 +- recipes/wip/dev/stgit/recipe.toml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/dev/sccache/recipe.toml b/recipes/wip/dev/sccache/recipe.toml index 85e47813..120b5979 100644 --- a/recipes/wip/dev/sccache/recipe.toml +++ b/recipes/wip/dev/sccache/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO libc error [source] git = "https://github.com/mozilla/sccache" [build] diff --git a/recipes/wip/dev/stgit/recipe.toml b/recipes/wip/dev/stgit/recipe.toml index 7f9a60d1..02c07a27 100644 --- a/recipes/wip/dev/stgit/recipe.toml +++ b/recipes/wip/dev/stgit/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/stacked-git/stgit" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 04cc926c8c01ef7b1f81d2fb83b296bdbaed2cdf Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 00:15:52 +0000 Subject: [PATCH 1874/3180] Update recipes --- recipes/wip/dev/stgit/recipe.toml | 2 +- recipes/wip/dev/svd2rust/recipe.toml | 2 +- recipes/wip/dev/twiggy/recipe.toml | 2 +- recipes/wip/dev/ucd-generate/recipe.toml | 2 +- recipes/wip/dev/wasm-pack/recipe.toml | 2 +- recipes/wip/dev/wasm-tools/recipe.toml | 2 +- recipes/wip/dev/wasmer/recipe.toml | 5 ++++- 7 files changed, 10 insertions(+), 7 deletions(-) diff --git a/recipes/wip/dev/stgit/recipe.toml b/recipes/wip/dev/stgit/recipe.toml index 02c07a27..4f7ee3f8 100644 --- a/recipes/wip/dev/stgit/recipe.toml +++ b/recipes/wip/dev/stgit/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/stacked-git/stgit" [build] diff --git a/recipes/wip/dev/svd2rust/recipe.toml b/recipes/wip/dev/svd2rust/recipe.toml index 0825eacf..8e781316 100644 --- a/recipes/wip/dev/svd2rust/recipe.toml +++ b/recipes/wip/dev/svd2rust/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/rust-embedded/svd2rust" [build] diff --git a/recipes/wip/dev/twiggy/recipe.toml b/recipes/wip/dev/twiggy/recipe.toml index 11d05de4..55db6fba 100644 --- a/recipes/wip/dev/twiggy/recipe.toml +++ b/recipes/wip/dev/twiggy/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/rustwasm/twiggy" [build] diff --git a/recipes/wip/dev/ucd-generate/recipe.toml b/recipes/wip/dev/ucd-generate/recipe.toml index 8fd688e0..ea493a14 100644 --- a/recipes/wip/dev/ucd-generate/recipe.toml +++ b/recipes/wip/dev/ucd-generate/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/BurntSushi/ucd-generate" [build] diff --git a/recipes/wip/dev/wasm-pack/recipe.toml b/recipes/wip/dev/wasm-pack/recipe.toml index 87513804..6dbb4af7 100644 --- a/recipes/wip/dev/wasm-pack/recipe.toml +++ b/recipes/wip/dev/wasm-pack/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO fs4 crate error [source] git = "https://github.com/rustwasm/wasm-pack" [build] diff --git a/recipes/wip/dev/wasm-tools/recipe.toml b/recipes/wip/dev/wasm-tools/recipe.toml index b06eeefe..f0289226 100644 --- a/recipes/wip/dev/wasm-tools/recipe.toml +++ b/recipes/wip/dev/wasm-tools/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/bytecodealliance/wasm-tools" [build] diff --git a/recipes/wip/dev/wasmer/recipe.toml b/recipes/wip/dev/wasmer/recipe.toml index 0a915331..1e0a3a30 100644 --- a/recipes/wip/dev/wasmer/recipe.toml +++ b/recipes/wip/dev/wasmer/recipe.toml @@ -2,4 +2,7 @@ [source] git = "https://github.com/wasmerio/wasmer" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages wasmer-cli +""" From 74a7e67fdaa5e3f8cc7284dedf974fa593f6909b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 00:25:45 +0000 Subject: [PATCH 1875/3180] Update recipes --- recipes/wip/dev/wasmer/recipe.toml | 2 +- recipes/wip/dev/wasmi/recipe.toml | 2 +- recipes/wip/dev/xbuild/recipe.toml | 8 -------- recipes/wip/dev/zepter/recipe.toml | 2 +- 4 files changed, 3 insertions(+), 11 deletions(-) delete mode 100644 recipes/wip/dev/xbuild/recipe.toml diff --git a/recipes/wip/dev/wasmer/recipe.toml b/recipes/wip/dev/wasmer/recipe.toml index 1e0a3a30..cc2e90cd 100644 --- a/recipes/wip/dev/wasmer/recipe.toml +++ b/recipes/wip/dev/wasmer/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO region crate error [source] git = "https://github.com/wasmerio/wasmer" [build] diff --git a/recipes/wip/dev/wasmi/recipe.toml b/recipes/wip/dev/wasmi/recipe.toml index 5e2d820f..24505714 100644 --- a/recipes/wip/dev/wasmi/recipe.toml +++ b/recipes/wip/dev/wasmi/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO fs-set-times and rustix crates error [source] git = "https://github.com/wasmi-labs/wasmi" [build] diff --git a/recipes/wip/dev/xbuild/recipe.toml b/recipes/wip/dev/xbuild/recipe.toml deleted file mode 100644 index 13846d05..00000000 --- a/recipes/wip/dev/xbuild/recipe.toml +++ /dev/null @@ -1,8 +0,0 @@ -#TODO Not compiled or tested -[source] -git = "https://github.com/rust-mobile/xbuild" -[build] -template = "custom" -script = """ -cookbook_cargo_packages xbuild -""" diff --git a/recipes/wip/dev/zepter/recipe.toml b/recipes/wip/dev/zepter/recipe.toml index 8f888c6e..547a5efc 100644 --- a/recipes/wip/dev/zepter/recipe.toml +++ b/recipes/wip/dev/zepter/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/ggwpez/zepter" [build] From ca2813a8371e71f348d4963dad46fc650f0488b9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 07:58:49 +0000 Subject: [PATCH 1876/3180] Update recipes --- recipes/wip/dev/allocscope/recipe.toml | 2 +- recipes/wip/dev/cargo-multivers/recipe.toml | 2 +- recipes/wip/dev/cargo-zigbuild/recipe.toml | 2 +- recipes/wip/dev/git-chain/recipe.toml | 5 ++++- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/recipes/wip/dev/allocscope/recipe.toml b/recipes/wip/dev/allocscope/recipe.toml index bb6bef10..5106b7cb 100644 --- a/recipes/wip/dev/allocscope/recipe.toml +++ b/recipes/wip/dev/allocscope/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make all dependencies work [source] git = "https://github.com/matt-kimball/allocscope" [build] diff --git a/recipes/wip/dev/cargo-multivers/recipe.toml b/recipes/wip/dev/cargo-multivers/recipe.toml index db28a44a..83b4b406 100644 --- a/recipes/wip/dev/cargo-multivers/recipe.toml +++ b/recipes/wip/dev/cargo-multivers/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/ronnychevalier/cargo-multivers" [build] diff --git a/recipes/wip/dev/cargo-zigbuild/recipe.toml b/recipes/wip/dev/cargo-zigbuild/recipe.toml index fae69d6a..1ba8156b 100644 --- a/recipes/wip/dev/cargo-zigbuild/recipe.toml +++ b/recipes/wip/dev/cargo-zigbuild/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make zig work [source] git = "https://github.com/rust-cross/cargo-zigbuild" rev = "52be7dd2359cfbca8f1d0c1ae36b4f7bae64bafc" diff --git a/recipes/wip/dev/git-chain/recipe.toml b/recipes/wip/dev/git-chain/recipe.toml index 8ca1be28..2790169b 100644 --- a/recipes/wip/dev/git-chain/recipe.toml +++ b/recipes/wip/dev/git-chain/recipe.toml @@ -1,5 +1,8 @@ -#TODO Not compiled or tested +#TODO Not compiled or tested (after cargo update) [source] git = "https://github.com/dashed/git-chain" [build] template = "cargo" +dependencies = [ + "openssl1", +] From af8191674815d2377101ee86dc95c04ac8f7b394 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 08:22:14 +0000 Subject: [PATCH 1877/3180] Update recipes --- recipes/wip/dev/git-chain/recipe.toml | 2 +- recipes/wip/dev/openjdk11-headless/recipe.toml | 1 + recipes/wip/dev/openjdk21-headless/recipe.toml | 2 +- recipes/wip/dev/openjdk8-headless/recipe.toml | 3 +-- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/recipes/wip/dev/git-chain/recipe.toml b/recipes/wip/dev/git-chain/recipe.toml index 2790169b..4d605805 100644 --- a/recipes/wip/dev/git-chain/recipe.toml +++ b/recipes/wip/dev/git-chain/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested (after cargo update) +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/dashed/git-chain" [build] diff --git a/recipes/wip/dev/openjdk11-headless/recipe.toml b/recipes/wip/dev/openjdk11-headless/recipe.toml index a7df7776..219b7755 100644 --- a/recipes/wip/dev/openjdk11-headless/recipe.toml +++ b/recipes/wip/dev/openjdk11-headless/recipe.toml @@ -9,6 +9,7 @@ dependencies = [ "fontconfig", ] script = """ +chmod a+x configure COOKBOOK_CONFIGURE_FLAGS+=( --enable-headless-only=yes ) diff --git a/recipes/wip/dev/openjdk21-headless/recipe.toml b/recipes/wip/dev/openjdk21-headless/recipe.toml index 16030130..bdeea3dd 100644 --- a/recipes/wip/dev/openjdk21-headless/recipe.toml +++ b/recipes/wip/dev/openjdk21-headless/recipe.toml @@ -1,5 +1,5 @@ #TODO build instructions - https://github.com/openjdk/jdk21u/blob/master/doc/building.md -#TODO not compiled or tested +#TODO can't find the configure script [source] git = "https://github.com/openjdk/jdk21u" rev = "060c4f7589e7f13febd402f4dac3320f4c032b08" diff --git a/recipes/wip/dev/openjdk8-headless/recipe.toml b/recipes/wip/dev/openjdk8-headless/recipe.toml index 9a8fb93a..9261f81e 100644 --- a/recipes/wip/dev/openjdk8-headless/recipe.toml +++ b/recipes/wip/dev/openjdk8-headless/recipe.toml @@ -1,6 +1,5 @@ #TODO build instructions - https://github.com/openjdk/jdk8u/blob/master/doc/building.md -#TODO not compiled or tested -#TODO build it in headless mode +#TODO require the headless option [source] git = "https://github.com/openjdk/jdk8u" rev = "9c9d6b267c41e4c713cacc41befb66007cdb2601" From b0c3fdcbe8e807f2e278298cd3241647555223b6 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 08:51:50 +0000 Subject: [PATCH 1878/3180] Update TODOs --- recipes/wip/dev/openjdk11-headless/recipe.toml | 2 +- recipes/wip/fuse/glusterfs/recipe.toml | 2 +- recipes/wip/fuse/indexfs/recipe.toml | 2 +- recipes/wip/fuse/s3fs/recipe.toml | 2 +- recipes/wip/games/leafish/recipe.toml | 2 +- recipes/wip/games/veloren/recipe.toml | 2 +- recipes/wip/graphics/satty/recipe.toml | 2 +- recipes/wip/gui/eww/recipe.toml | 2 +- recipes/wip/libs/hwloc/recipe.toml | 2 +- recipes/wip/libs/libcdr/recipe.toml | 2 +- recipes/wip/libs/libgspell-gtk3/recipe.toml | 2 +- recipes/wip/libs/libgspell-gtk4/recipe.toml | 2 +- recipes/wip/libs/pjsip/recipe.toml | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/recipes/wip/dev/openjdk11-headless/recipe.toml b/recipes/wip/dev/openjdk11-headless/recipe.toml index 219b7755..af318c2d 100644 --- a/recipes/wip/dev/openjdk11-headless/recipe.toml +++ b/recipes/wip/dev/openjdk11-headless/recipe.toml @@ -1,4 +1,4 @@ -#TODO permission denied on the configure script +#TODO can't find the configure script #TODO build instructions - https://github.com/openjdk/jdk11u/blob/master/doc/building.md [source] git = "https://github.com/openjdk/jdk11u" diff --git a/recipes/wip/fuse/glusterfs/recipe.toml b/recipes/wip/fuse/glusterfs/recipe.toml index 0ea04e9a..1557fc6d 100644 --- a/recipes/wip/fuse/glusterfs/recipe.toml +++ b/recipes/wip/fuse/glusterfs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make all dependencies work #TODO probably missing dependencies, see https://docs.gluster.org/en/latest/Developer-guide/Building-GlusterFS/#build-requirements # customization - https://docs.gluster.org/en/latest/Developer-guide/Building-GlusterFS/#configuring-for-building [source] diff --git a/recipes/wip/fuse/indexfs/recipe.toml b/recipes/wip/fuse/indexfs/recipe.toml index 90c2a470..d5842728 100644 --- a/recipes/wip/fuse/indexfs/recipe.toml +++ b/recipes/wip/fuse/indexfs/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO make libfuse work #TODO probably missing dependencies # build instructions - https://github.com/MajenkoProjects/indexfs/blob/master/INSTALL [source] diff --git a/recipes/wip/fuse/s3fs/recipe.toml b/recipes/wip/fuse/s3fs/recipe.toml index acf0d086..578468d0 100644 --- a/recipes/wip/fuse/s3fs/recipe.toml +++ b/recipes/wip/fuse/s3fs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make libfuse2 work # build instructions - https://github.com/s3fs-fuse/s3fs-fuse/blob/master/COMPILATION.md [source] git = "https://github.com/s3fs-fuse/s3fs-fuse" diff --git a/recipes/wip/games/leafish/recipe.toml b/recipes/wip/games/leafish/recipe.toml index ff29d95e..6b8fba4b 100644 --- a/recipes/wip/games/leafish/recipe.toml +++ b/recipes/wip/games/leafish/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make gtk3 work [source] git = "https://github.com/Lea-fish/Leafish" [build] diff --git a/recipes/wip/games/veloren/recipe.toml b/recipes/wip/games/veloren/recipe.toml index e1db8ba7..55216f39 100644 --- a/recipes/wip/games/veloren/recipe.toml +++ b/recipes/wip/games/veloren/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested yet +#TODO make all dependencies work [source] git = "https://github.com/veloren/veloren" [build] diff --git a/recipes/wip/graphics/satty/recipe.toml b/recipes/wip/graphics/satty/recipe.toml index 4e403a7d..c28c9fe4 100644 --- a/recipes/wip/graphics/satty/recipe.toml +++ b/recipes/wip/graphics/satty/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make gtk4 work [source] git = "https://github.com/gabm/Satty" [build] diff --git a/recipes/wip/gui/eww/recipe.toml b/recipes/wip/gui/eww/recipe.toml index 43f11788..6626c45f 100644 --- a/recipes/wip/gui/eww/recipe.toml +++ b/recipes/wip/gui/eww/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make gtk3 work [source] git = "https://github.com/elkowar/eww" [build] diff --git a/recipes/wip/libs/hwloc/recipe.toml b/recipes/wip/libs/hwloc/recipe.toml index dd026357..3982d79e 100644 --- a/recipes/wip/libs/hwloc/recipe.toml +++ b/recipes/wip/libs/hwloc/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make libevdev work [source] tar = "https://download.open-mpi.org/release/hwloc/v2.9/hwloc-2.9.3.tar.bz2" [build] diff --git a/recipes/wip/libs/libcdr/recipe.toml b/recipes/wip/libs/libcdr/recipe.toml index ae73948e..61e16355 100644 --- a/recipes/wip/libs/libcdr/recipe.toml +++ b/recipes/wip/libs/libcdr/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make all dependencies work [source] tar = "https://dev-www.libreoffice.org/src/libcdr/libcdr-0.1.7.tar.xz" [build] diff --git a/recipes/wip/libs/libgspell-gtk3/recipe.toml b/recipes/wip/libs/libgspell-gtk3/recipe.toml index d045090c..e3f25232 100644 --- a/recipes/wip/libs/libgspell-gtk3/recipe.toml +++ b/recipes/wip/libs/libgspell-gtk3/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make gtk3 work [source] tar = "https://download.gnome.org/sources/gspell/1.12/gspell-1.12.2.tar.xz" [build] diff --git a/recipes/wip/libs/libgspell-gtk4/recipe.toml b/recipes/wip/libs/libgspell-gtk4/recipe.toml index 3c7ae5ef..2811865d 100644 --- a/recipes/wip/libs/libgspell-gtk4/recipe.toml +++ b/recipes/wip/libs/libgspell-gtk4/recipe.toml @@ -1,4 +1,4 @@ -#TODO probably wrong script +#TODO make gtk4 work [source] tar = "https://gitlab.gnome.org/otrocodigo/gspell/-/archive/1.11.1/gspell-1.11.1.tar.bz2" [build] diff --git a/recipes/wip/libs/pjsip/recipe.toml b/recipes/wip/libs/pjsip/recipe.toml index 56a4fe06..5f12bf79 100644 --- a/recipes/wip/libs/pjsip/recipe.toml +++ b/recipes/wip/libs/pjsip/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make libvpx work # customization - https://docs.pjsip.org/en/latest/get-started/posix/build_instructions.html [source] git = "https://github.com/pjsip/pjproject" From 593d714382faf7c69bd64d5a5e20ec00865f2aae Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 08:52:57 +0000 Subject: [PATCH 1879/3180] Update a recipe --- recipes/wip/math/rink/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/math/rink/recipe.toml b/recipes/wip/math/rink/recipe.toml index 19a7820e..09f38395 100644 --- a/recipes/wip/math/rink/recipe.toml +++ b/recipes/wip/math/rink/recipe.toml @@ -4,5 +4,5 @@ git = "https://github.com/tiffany352/rink-rs" [build] template = "custom" script = """ -cookbook_cargo_packages cli +cookbook_cargo_packages rink """ From 75cc8c155a8c0db97ad37e505714ea6a2ce92250 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 08:53:53 +0000 Subject: [PATCH 1880/3180] Update a recipe --- recipes/wip/math/rink/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/wip/math/rink/recipe.toml b/recipes/wip/math/rink/recipe.toml index 09f38395..45fd7936 100644 --- a/recipes/wip/math/rink/recipe.toml +++ b/recipes/wip/math/rink/recipe.toml @@ -3,6 +3,9 @@ git = "https://github.com/tiffany352/rink-rs" [build] template = "custom" +dependencies = [ + "openssl1", +] script = """ cookbook_cargo_packages rink """ From 4c9124abc1834521d3d7ba0e10235345d72b5b0f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 10:16:10 +0000 Subject: [PATCH 1881/3180] Update recipes --- recipes/wip/math/rink/recipe.toml | 2 +- recipes/wip/net/arp-scanner/recipe.toml | 2 +- recipes/wip/net/bitcoin-core/recipe.toml | 2 +- recipes/wip/net/bore/recipe.toml | 2 +- recipes/wip/net/dqy/recipe.toml | 3 +++ 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/recipes/wip/math/rink/recipe.toml b/recipes/wip/math/rink/recipe.toml index 45fd7936..208a58eb 100644 --- a/recipes/wip/math/rink/recipe.toml +++ b/recipes/wip/math/rink/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO async-io and rustix crates error [source] git = "https://github.com/tiffany352/rink-rs" [build] diff --git a/recipes/wip/net/arp-scanner/recipe.toml b/recipes/wip/net/arp-scanner/recipe.toml index 8bc0446d..d398e95a 100644 --- a/recipes/wip/net/arp-scanner/recipe.toml +++ b/recipes/wip/net/arp-scanner/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO pnet_sys crate error [source] git = "https://github.com/kongbytes/arp-scan-rs" [build] diff --git a/recipes/wip/net/bitcoin-core/recipe.toml b/recipes/wip/net/bitcoin-core/recipe.toml index b596d03c..d2e2b3f9 100644 --- a/recipes/wip/net/bitcoin-core/recipe.toml +++ b/recipes/wip/net/bitcoin-core/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make dependencies work [source] tar = "https://bitcoincore.org/bin/bitcoin-core-27.0/bitcoin-27.0.tar.gz" [build] diff --git a/recipes/wip/net/bore/recipe.toml b/recipes/wip/net/bore/recipe.toml index 264a4adb..6e84b510 100644 --- a/recipes/wip/net/bore/recipe.toml +++ b/recipes/wip/net/bore/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/ekzhang/bore" [build] diff --git a/recipes/wip/net/dqy/recipe.toml b/recipes/wip/net/dqy/recipe.toml index aa30ae25..05dc92de 100644 --- a/recipes/wip/net/dqy/recipe.toml +++ b/recipes/wip/net/dqy/recipe.toml @@ -3,6 +3,9 @@ git = "https://github.com/dandyvica/dqy" [build] template = "custom" +dependencies = [ + "lua54", +] script = """ cookbook_cargo_packages dqy """ From 1872f8d86957cba863ca3c37776ea82cd0f56f41 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 10:31:17 +0000 Subject: [PATCH 1882/3180] Update recipes --- recipes/wip/net/dqy/recipe.toml | 2 +- recipes/wip/net/freenginx/recipe.toml | 2 +- recipes/wip/net/hinoki/recipe.toml | 2 +- recipes/wip/net/hurl/recipe.toml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/recipes/wip/net/dqy/recipe.toml b/recipes/wip/net/dqy/recipe.toml index 05dc92de..1878190a 100644 --- a/recipes/wip/net/dqy/recipe.toml +++ b/recipes/wip/net/dqy/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO mlua-sys crate can't detect the lua54 dependency [source] git = "https://github.com/dandyvica/dqy" [build] diff --git a/recipes/wip/net/freenginx/recipe.toml b/recipes/wip/net/freenginx/recipe.toml index ce2a0602..e96d4fb6 100644 --- a/recipes/wip/net/freenginx/recipe.toml +++ b/recipes/wip/net/freenginx/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO can't find the options file [source] tar = "https://freenginx.org/download/nginx-1.24.0.tar.gz" [build] diff --git a/recipes/wip/net/hinoki/recipe.toml b/recipes/wip/net/hinoki/recipe.toml index c64c258c..9d6b900e 100644 --- a/recipes/wip/net/hinoki/recipe.toml +++ b/recipes/wip/net/hinoki/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/jplatte/hinoki" [build] diff --git a/recipes/wip/net/hurl/recipe.toml b/recipes/wip/net/hurl/recipe.toml index 9cb9a7e7..b031a15f 100644 --- a/recipes/wip/net/hurl/recipe.toml +++ b/recipes/wip/net/hurl/recipe.toml @@ -2,7 +2,7 @@ [source] git = "https://github.com/Orange-OpenSource/hurl" [build] -template = "cargo" +template = "custom" dependencies = [ "openssl1", "curl", From 7282e4db55098602dafb1b1f95fc310367a34000 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 11:05:38 +0000 Subject: [PATCH 1883/3180] Update recipes --- recipes/wip/net/hurl/recipe.toml | 2 +- recipes/wip/net/moonfire-nvr-server/recipe.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/wip/net/hurl/recipe.toml b/recipes/wip/net/hurl/recipe.toml index b031a15f..5bacac15 100644 --- a/recipes/wip/net/hurl/recipe.toml +++ b/recipes/wip/net/hurl/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error [source] git = "https://github.com/Orange-OpenSource/hurl" [build] diff --git a/recipes/wip/net/moonfire-nvr-server/recipe.toml b/recipes/wip/net/moonfire-nvr-server/recipe.toml index a289bbe0..3b4d5c93 100644 --- a/recipes/wip/net/moonfire-nvr-server/recipe.toml +++ b/recipes/wip/net/moonfire-nvr-server/recipe.toml @@ -7,6 +7,6 @@ dependencies = [ "sqlite3", ] script = """ -cd server +cd "${COOKBOOK_SOURCE}/server" cookbook_cargo """ From b02765abb514dd47762a6b359ad775c897c513ee Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 11:07:40 +0000 Subject: [PATCH 1884/3180] Update a recipe --- recipes/wip/net/moonfire-nvr-server/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/net/moonfire-nvr-server/recipe.toml b/recipes/wip/net/moonfire-nvr-server/recipe.toml index 3b4d5c93..2b115470 100644 --- a/recipes/wip/net/moonfire-nvr-server/recipe.toml +++ b/recipes/wip/net/moonfire-nvr-server/recipe.toml @@ -8,5 +8,5 @@ dependencies = [ ] script = """ cd "${COOKBOOK_SOURCE}/server" -cookbook_cargo +cookbook_cargo_packages moonfire-nvr """ From 3e2dbf222980174930a2e276cabbb748553b7c4e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 11:08:24 +0000 Subject: [PATCH 1885/3180] Revert a command --- recipes/wip/net/moonfire-nvr-server/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/net/moonfire-nvr-server/recipe.toml b/recipes/wip/net/moonfire-nvr-server/recipe.toml index 2b115470..3b4d5c93 100644 --- a/recipes/wip/net/moonfire-nvr-server/recipe.toml +++ b/recipes/wip/net/moonfire-nvr-server/recipe.toml @@ -8,5 +8,5 @@ dependencies = [ ] script = """ cd "${COOKBOOK_SOURCE}/server" -cookbook_cargo_packages moonfire-nvr +cookbook_cargo """ From 856ec165005651e15972bffaf50c791f1ee5ccfc Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 11:21:06 +0000 Subject: [PATCH 1886/3180] Update recipes --- recipes/wip/net/realm/recipe.toml | 2 +- recipes/wip/net/rustdesk-server/recipe.toml | 2 +- recipes/wip/net/rustypaste/recipe.toml | 2 +- recipes/wip/net/turn-rs/recipe.toml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/recipes/wip/net/realm/recipe.toml b/recipes/wip/net/realm/recipe.toml index be7d217b..40c0c7c6 100644 --- a/recipes/wip/net/realm/recipe.toml +++ b/recipes/wip/net/realm/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO realm_syscall crate error [source] git = "https://github.com/zhboner/realm" [build] diff --git a/recipes/wip/net/rustdesk-server/recipe.toml b/recipes/wip/net/rustdesk-server/recipe.toml index fe3eb469..5e99d6d1 100644 --- a/recipes/wip/net/rustdesk-server/recipe.toml +++ b/recipes/wip/net/rustdesk-server/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO ahash crate error [source] git = "https://github.com/rustdesk/rustdesk-server" [build] diff --git a/recipes/wip/net/rustypaste/recipe.toml b/recipes/wip/net/rustypaste/recipe.toml index 566ffdb1..4e2eeb87 100644 --- a/recipes/wip/net/rustypaste/recipe.toml +++ b/recipes/wip/net/rustypaste/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/orhun/rustypaste-cli" [build] diff --git a/recipes/wip/net/turn-rs/recipe.toml b/recipes/wip/net/turn-rs/recipe.toml index 8cc52065..d29279c0 100644 --- a/recipes/wip/net/turn-rs/recipe.toml +++ b/recipes/wip/net/turn-rs/recipe.toml @@ -4,5 +4,5 @@ git = "https://github.com/mycrl/turn-rs" [build] template = "custom" script = """ -cookbook_cargo_packages cli turn-server +cookbook_cargo_packages turn-cli turn-server """ From 4add00c79e2e8110d97aa98506e4d335779e4413 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 11:32:39 +0000 Subject: [PATCH 1887/3180] Update recipes --- recipes/wip/net/turn-rs/recipe.toml | 2 +- recipes/wip/net/updns/recipe.toml | 2 +- recipes/wip/net/vopono/recipe.toml | 2 +- recipes/wip/science/alevin-fry/recipe.toml | 2 +- recipes/wip/science/oarfish/recipe.toml | 2 +- recipes/wip/science/piscem/recipe.toml | 2 +- recipes/wip/science/polypolish/recipe.toml | 2 +- recipes/wip/science/scidataflow/recipe.toml | 3 +++ 8 files changed, 10 insertions(+), 7 deletions(-) diff --git a/recipes/wip/net/turn-rs/recipe.toml b/recipes/wip/net/turn-rs/recipe.toml index d29279c0..f027311f 100644 --- a/recipes/wip/net/turn-rs/recipe.toml +++ b/recipes/wip/net/turn-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO ahash crate error [source] git = "https://github.com/mycrl/turn-rs" [build] diff --git a/recipes/wip/net/updns/recipe.toml b/recipes/wip/net/updns/recipe.toml index 8abe8049..4639a849 100644 --- a/recipes/wip/net/updns/recipe.toml +++ b/recipes/wip/net/updns/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/wyhaya/updns" [build] diff --git a/recipes/wip/net/vopono/recipe.toml b/recipes/wip/net/vopono/recipe.toml index 73dba8f8..f286ec1a 100644 --- a/recipes/wip/net/vopono/recipe.toml +++ b/recipes/wip/net/vopono/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO users crate error [source] git = "https://github.com/jamesmcm/vopono" [build] diff --git a/recipes/wip/science/alevin-fry/recipe.toml b/recipes/wip/science/alevin-fry/recipe.toml index e529c491..f6b52100 100644 --- a/recipes/wip/science/alevin-fry/recipe.toml +++ b/recipes/wip/science/alevin-fry/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compilation error [source] git = "https://github.com/COMBINE-lab/alevin-fry" [build] diff --git a/recipes/wip/science/oarfish/recipe.toml b/recipes/wip/science/oarfish/recipe.toml index 7012f9e3..f1376e4e 100644 --- a/recipes/wip/science/oarfish/recipe.toml +++ b/recipes/wip/science/oarfish/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/COMBINE-lab/oarfish" [build] diff --git a/recipes/wip/science/piscem/recipe.toml b/recipes/wip/science/piscem/recipe.toml index 5096d0a2..47886919 100644 --- a/recipes/wip/science/piscem/recipe.toml +++ b/recipes/wip/science/piscem/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO CMake error [source] git = "https://github.com/COMBINE-lab/piscem" [build] diff --git a/recipes/wip/science/polypolish/recipe.toml b/recipes/wip/science/polypolish/recipe.toml index 0f0d2598..5e6649d9 100644 --- a/recipes/wip/science/polypolish/recipe.toml +++ b/recipes/wip/science/polypolish/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/rrwick/Polypolish" [build] diff --git a/recipes/wip/science/scidataflow/recipe.toml b/recipes/wip/science/scidataflow/recipe.toml index 31918e7c..5ac5f0ff 100644 --- a/recipes/wip/science/scidataflow/recipe.toml +++ b/recipes/wip/science/scidataflow/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/vsbuffalo/scidataflow" [build] template = "cargo" +dependencies = [ + "openssl1", +] From fdbd3d89a00b60d9bb981235214dd454342c9964 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 11:39:44 +0000 Subject: [PATCH 1888/3180] Update recipes --- recipes/wip/science/scidataflow/recipe.toml | 2 +- recipes/wip/security/airgorah/recipe.toml | 2 +- recipes/wip/security/nitrocli/recipe.toml | 2 +- recipes/wip/services/coppwr/recipe.toml | 2 +- recipes/wip/sound/soundboard/recipe.toml | 9 +++++---- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/recipes/wip/science/scidataflow/recipe.toml b/recipes/wip/science/scidataflow/recipe.toml index 5ac5f0ff..7cca4309 100644 --- a/recipes/wip/science/scidataflow/recipe.toml +++ b/recipes/wip/science/scidataflow/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO faccess crate error [source] git = "https://github.com/vsbuffalo/scidataflow" [build] diff --git a/recipes/wip/security/airgorah/recipe.toml b/recipes/wip/security/airgorah/recipe.toml index 3ed7994e..11040022 100644 --- a/recipes/wip/security/airgorah/recipe.toml +++ b/recipes/wip/security/airgorah/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make gtk4 work [source] git = "https://github.com/martin-olivier/airgorah" [build] diff --git a/recipes/wip/security/nitrocli/recipe.toml b/recipes/wip/security/nitrocli/recipe.toml index d900ea32..8be60424 100644 --- a/recipes/wip/security/nitrocli/recipe.toml +++ b/recipes/wip/security/nitrocli/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make libhidapi work [source] git = "https://github.com/d-e-s-o/nitrocli" [build] diff --git a/recipes/wip/services/coppwr/recipe.toml b/recipes/wip/services/coppwr/recipe.toml index 332d267b..815d3894 100644 --- a/recipes/wip/services/coppwr/recipe.toml +++ b/recipes/wip/services/coppwr/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make pipewire work [source] git = "https://github.com/dimtpap/coppwr" rev = "f4e664b860b89801ec60eee479802f00af3cfdfc" diff --git a/recipes/wip/sound/soundboard/recipe.toml b/recipes/wip/sound/soundboard/recipe.toml index 74c1e05c..21f1a5a1 100644 --- a/recipes/wip/sound/soundboard/recipe.toml +++ b/recipes/wip/sound/soundboard/recipe.toml @@ -1,11 +1,12 @@ -#TODO Not compiled or tested +#TODO Not compiled or tested (after cargo update) [source] git = "https://github.com/gamebooster/soundboard" [build] template = "custom" +dependencies = [ + "glib", + "openssl1", +] script = """ cookbook_cargo --features full """ -dependencies = [ - "glib", -] From 6cd16805e1f139cf4c0f0c804aedf5f601dd8d39 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 12:09:38 +0000 Subject: [PATCH 1889/3180] Update recipes --- recipes/wip/sound/soundboard/recipe.toml | 3 ++- recipes/wip/sound/speech-dispatcher/recipe.toml | 2 +- recipes/wip/tools/cava/recipe.toml | 2 +- recipes/wip/tools/clipshare-desktop/recipe.toml | 2 +- recipes/wip/tools/qalculate-gtk/recipe.toml | 2 +- recipes/wip/tools/uget/recipe.toml | 2 +- recipes/wip/tui/nyaa-rs/recipe.toml | 2 +- recipes/wip/tui/otree/recipe.toml | 2 +- recipes/wip/tui/radicle-tui/recipe.toml | 2 +- recipes/wip/tui/terminusdm/recipe.toml | 1 - 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/recipes/wip/sound/soundboard/recipe.toml b/recipes/wip/sound/soundboard/recipe.toml index 21f1a5a1..efa6a199 100644 --- a/recipes/wip/sound/soundboard/recipe.toml +++ b/recipes/wip/sound/soundboard/recipe.toml @@ -1,4 +1,5 @@ -#TODO Not compiled or tested (after cargo update) +#TODO can't find the glib dependency (after cargo update) +#TODO update the ring crate version [source] git = "https://github.com/gamebooster/soundboard" [build] diff --git a/recipes/wip/sound/speech-dispatcher/recipe.toml b/recipes/wip/sound/speech-dispatcher/recipe.toml index d33df461..0806539d 100644 --- a/recipes/wip/sound/speech-dispatcher/recipe.toml +++ b/recipes/wip/sound/speech-dispatcher/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make all dependencies work [source] tar = "https://github.com/brailcom/speechd/releases/download/0.11.5/speech-dispatcher-0.11.5.tar.gz" [build] diff --git a/recipes/wip/tools/cava/recipe.toml b/recipes/wip/tools/cava/recipe.toml index ec0f1555..8dbe726f 100644 --- a/recipes/wip/tools/cava/recipe.toml +++ b/recipes/wip/tools/cava/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make the fftw dependency work [source] git = "https://github.com/karlstav/cava" rev = "81211e9e16302312ee4322a99840c110bce0e13d" diff --git a/recipes/wip/tools/clipshare-desktop/recipe.toml b/recipes/wip/tools/clipshare-desktop/recipe.toml index 708eb838..b303d13a 100644 --- a/recipes/wip/tools/clipshare-desktop/recipe.toml +++ b/recipes/wip/tools/clipshare-desktop/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make the xdotool dependency work [source] git = "https://github.com/RastislavKish/clipshare" rev = "2afa9c5af1a5ebaa6e1e372da6e01a289d31fdb3" diff --git a/recipes/wip/tools/qalculate-gtk/recipe.toml b/recipes/wip/tools/qalculate-gtk/recipe.toml index 68a89d36..b46413b9 100644 --- a/recipes/wip/tools/qalculate-gtk/recipe.toml +++ b/recipes/wip/tools/qalculate-gtk/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make gtk3 work [source] tar = "https://github.com/Qalculate/qalculate-gtk/releases/download/v4.9.0/qalculate-gtk-4.9.0.tar.gz" [build] diff --git a/recipes/wip/tools/uget/recipe.toml b/recipes/wip/tools/uget/recipe.toml index ec55bee0..bf9dcce9 100644 --- a/recipes/wip/tools/uget/recipe.toml +++ b/recipes/wip/tools/uget/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make gtk3 work [source] tar = "https://sourceforge.net/projects/urlget/files/uget%20%28stable%29/2.2.3/uget-2.2.3-1.tar.gz/download" [build] diff --git a/recipes/wip/tui/nyaa-rs/recipe.toml b/recipes/wip/tui/nyaa-rs/recipe.toml index 00f7d662..367a628b 100644 --- a/recipes/wip/tui/nyaa-rs/recipe.toml +++ b/recipes/wip/tui/nyaa-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO port to orbital [source] git = "https://github.com/Beastwick18/nyaa" [build] diff --git a/recipes/wip/tui/otree/recipe.toml b/recipes/wip/tui/otree/recipe.toml index a0bc14f5..189f3674 100644 --- a/recipes/wip/tui/otree/recipe.toml +++ b/recipes/wip/tui/otree/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO camino crate error [source] git = "https://github.com/fioncat/otree" [build] diff --git a/recipes/wip/tui/radicle-tui/recipe.toml b/recipes/wip/tui/radicle-tui/recipe.toml index da31915c..b2b04d66 100644 --- a/recipes/wip/tui/radicle-tui/recipe.toml +++ b/recipes/wip/tui/radicle-tui/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO update the redox_syscall crate version [source] git = "https://seed.radicle.xyz/z39mP9rQAaGmERfUMPULfPUi473tY.git" [build] diff --git a/recipes/wip/tui/terminusdm/recipe.toml b/recipes/wip/tui/terminusdm/recipe.toml index 7eb159d7..5e7c70db 100644 --- a/recipes/wip/tui/terminusdm/recipe.toml +++ b/recipes/wip/tui/terminusdm/recipe.toml @@ -1,6 +1,5 @@ #TODO Not compiled or tested [source] git = "https://github.com/sumoduduk/terminusdm" -rev = "ed95a51bec282238e73d4215f4d97e6c7356e415" [build] template = "cargo" From e98084ee33e99140dc96d1032365daddfdcc191f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 12:10:33 +0000 Subject: [PATCH 1890/3180] Update a recipe --- recipes/wip/tui/terminusdm/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/wip/tui/terminusdm/recipe.toml b/recipes/wip/tui/terminusdm/recipe.toml index 5e7c70db..7586fa75 100644 --- a/recipes/wip/tui/terminusdm/recipe.toml +++ b/recipes/wip/tui/terminusdm/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/sumoduduk/terminusdm" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 816d431b63adfe9f45569c676ae6c05369c87a70 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 12:24:24 +0000 Subject: [PATCH 1891/3180] Update recipes --- recipes/wip/tui/terminusdm/recipe.toml | 2 +- recipes/wip/video/alass/recipe.toml | 2 +- recipes/wip/video/dovi-tool/recipe.toml | 2 +- recipes/wip/video/imdb-rename/recipe.toml | 2 +- recipes/wip/video/pipeline/recipe.toml | 2 +- recipes/wip/wayland/pinnacle/recipe.toml | 2 +- recipes/wip/web/dirble/recipe.toml | 3 +++ 7 files changed, 9 insertions(+), 6 deletions(-) diff --git a/recipes/wip/tui/terminusdm/recipe.toml b/recipes/wip/tui/terminusdm/recipe.toml index 7586fa75..a37a8aec 100644 --- a/recipes/wip/tui/terminusdm/recipe.toml +++ b/recipes/wip/tui/terminusdm/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/sumoduduk/terminusdm" [build] diff --git a/recipes/wip/video/alass/recipe.toml b/recipes/wip/video/alass/recipe.toml index 60987edb..1f503627 100644 --- a/recipes/wip/video/alass/recipe.toml +++ b/recipes/wip/video/alass/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO linker error (after cargo update) [source] git = "https://github.com/kaegi/alass" [build] diff --git a/recipes/wip/video/dovi-tool/recipe.toml b/recipes/wip/video/dovi-tool/recipe.toml index 177b2422..53fe1eca 100644 --- a/recipes/wip/video/dovi-tool/recipe.toml +++ b/recipes/wip/video/dovi-tool/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO yeslogic-fontconfig-sys crate error [source] git = "https://github.com/quietvoid/dovi_tool" [build] diff --git a/recipes/wip/video/imdb-rename/recipe.toml b/recipes/wip/video/imdb-rename/recipe.toml index 51b828cc..aa48fba6 100644 --- a/recipes/wip/video/imdb-rename/recipe.toml +++ b/recipes/wip/video/imdb-rename/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/BurntSushi/imdb-rename" [build] diff --git a/recipes/wip/video/pipeline/recipe.toml b/recipes/wip/video/pipeline/recipe.toml index cf41c34c..ef5c4de6 100644 --- a/recipes/wip/video/pipeline/recipe.toml +++ b/recipes/wip/video/pipeline/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make gtk4 work [source] tar = "https://gitlab.com/schmiddi-on-mobile/pipeline/-/package_files/114831818/download" [build] diff --git a/recipes/wip/wayland/pinnacle/recipe.toml b/recipes/wip/wayland/pinnacle/recipe.toml index 12baefb2..36c101c0 100644 --- a/recipes/wip/wayland/pinnacle/recipe.toml +++ b/recipes/wip/wayland/pinnacle/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO make all dependencies work [source] git = "https://github.com/pinnacle-comp/pinnacle" [build] diff --git a/recipes/wip/web/dirble/recipe.toml b/recipes/wip/web/dirble/recipe.toml index 633264a9..29a77387 100644 --- a/recipes/wip/web/dirble/recipe.toml +++ b/recipes/wip/web/dirble/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/Isona/dirble" [build] template = "cargo" +dependencies = [ + "openssl1", +] From df51167a3391225f548766f099a99a3738887395 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 12:57:22 +0000 Subject: [PATCH 1892/3180] Update recipes --- recipes/wip/web/dirble/recipe.toml | 2 +- recipes/wip/web/rustyink/recipe.toml | 2 +- recipes/wip/web/vidium/recipe.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/wip/web/dirble/recipe.toml b/recipes/wip/web/dirble/recipe.toml index 29a77387..1dcbfc7d 100644 --- a/recipes/wip/web/dirble/recipe.toml +++ b/recipes/wip/web/dirble/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/Isona/dirble" [build] diff --git a/recipes/wip/web/rustyink/recipe.toml b/recipes/wip/web/rustyink/recipe.toml index e170c724..3619d3bd 100644 --- a/recipes/wip/web/rustyink/recipe.toml +++ b/recipes/wip/web/rustyink/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO ahash crate error [source] git = "https://github.com/arjunkomath/rustyink" [build] diff --git a/recipes/wip/web/vidium/recipe.toml b/recipes/wip/web/vidium/recipe.toml index 3b99091c..21dbe516 100644 --- a/recipes/wip/web/vidium/recipe.toml +++ b/recipes/wip/web/vidium/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO cookbook_cargo function error [source] git = "https://github.com/s-panferov/vidium" [build] From 76284c6eb0f637d069abc867504c0b409b1fcc48 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 13:02:39 +0000 Subject: [PATCH 1893/3180] Update a recipe --- recipes/wip/dev/cargo-crev/recipe.toml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/dev/cargo-crev/recipe.toml b/recipes/wip/dev/cargo-crev/recipe.toml index f2bd9719..100bc17d 100644 --- a/recipes/wip/dev/cargo-crev/recipe.toml +++ b/recipes/wip/dev/cargo-crev/recipe.toml @@ -1,7 +1,6 @@ -#TODO weird error on the workspace +#TODO index-guix crate error [source] git = "https://github.com/crev-dev/cargo-crev" -rev = "be532d95731dc067302e7910164120a2e4fdf745" [build] template = "custom" dependencies = [ From 08e974e03ffcce3e5dae4d52430dc71e6fecef89 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 13:17:35 +0000 Subject: [PATCH 1894/3180] Update recipes --- recipes/wip/db/influxdb/recipe.toml | 1 - recipes/wip/demos/tenki/recipe.toml | 1 - recipes/wip/dev/binocle/recipe.toml | 1 - recipes/wip/dev/cargo-crev/recipe.toml | 2 +- recipes/wip/dev/cargo-info/recipe.toml | 1 - recipes/wip/dev/cargo-ui/recipe.toml | 1 - recipes/wip/dev/cargo-zigbuild/recipe.toml | 1 - recipes/wip/dev/cbindgen/recipe.toml | 1 - recipes/wip/dev/difftastic/recipe.toml | 1 - recipes/wip/dev/diplomat/recipe.toml | 1 - recipes/wip/dev/firedbg/recipe.toml | 1 - recipes/wip/dev/hexyl/recipe.toml | 1 - recipes/wip/dev/irust/recipe.toml | 1 - recipes/wip/dev/kani/recipe.toml | 1 - recipes/wip/dev/quicktest/recipe.toml | 1 - recipes/wip/dev/rattler-build/recipe.toml | 1 - recipes/wip/dev/ruff/recipe.toml | 1 - recipes/wip/dev/rye/recipe.toml | 1 - recipes/wip/dev/samply/recipe.toml | 1 - recipes/wip/emulators/boytacean/recipe.toml | 1 - recipes/wip/emulators/gameroy/recipe.toml | 1 - recipes/wip/finance/gupax/recipe.toml | 1 - 22 files changed, 1 insertion(+), 22 deletions(-) diff --git a/recipes/wip/db/influxdb/recipe.toml b/recipes/wip/db/influxdb/recipe.toml index 5d7b22e6..faad6d63 100644 --- a/recipes/wip/db/influxdb/recipe.toml +++ b/recipes/wip/db/influxdb/recipe.toml @@ -2,6 +2,5 @@ #TODO configure the CLI and service [source] git = "https://github.com/influxdata/influxdb" -rev = "ed645d9216af16b49f8c6a49aee84341ea168180" [build] template = "cargo" diff --git a/recipes/wip/demos/tenki/recipe.toml b/recipes/wip/demos/tenki/recipe.toml index cdf07a19..cd4343c8 100644 --- a/recipes/wip/demos/tenki/recipe.toml +++ b/recipes/wip/demos/tenki/recipe.toml @@ -1,6 +1,5 @@ #TODO compiled but not tested [source] git = "https://github.com/ckaznable/tenki" -rev = "9cf863f925e42eb30f7613db89469d739add7362" [build] template = "cargo" diff --git a/recipes/wip/dev/binocle/recipe.toml b/recipes/wip/dev/binocle/recipe.toml index d6e91e91..3bdd8bae 100644 --- a/recipes/wip/dev/binocle/recipe.toml +++ b/recipes/wip/dev/binocle/recipe.toml @@ -1,6 +1,5 @@ #TODO "No suitable wgpu::Adapter found" error on execution [source] git = "https://github.com/sharkdp/binocle" -rev = "f7e1bfe28938b5e289e8b353bf592aa3c26ca71f" [build] template = "cargo" diff --git a/recipes/wip/dev/cargo-crev/recipe.toml b/recipes/wip/dev/cargo-crev/recipe.toml index 100bc17d..e5d73536 100644 --- a/recipes/wip/dev/cargo-crev/recipe.toml +++ b/recipes/wip/dev/cargo-crev/recipe.toml @@ -1,4 +1,4 @@ -#TODO index-guix crate error +#TODO openssl-sys crate error [source] git = "https://github.com/crev-dev/cargo-crev" [build] diff --git a/recipes/wip/dev/cargo-info/recipe.toml b/recipes/wip/dev/cargo-info/recipe.toml index 60bde03d..e7a16a15 100644 --- a/recipes/wip/dev/cargo-info/recipe.toml +++ b/recipes/wip/dev/cargo-info/recipe.toml @@ -1,7 +1,6 @@ #TODO openssl error [source] git = "https://gitlab.com/imp/cargo-info" -rev = "8a7b4db5b7c7a19c43bf4e01c22abdb43dfcbe71" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/dev/cargo-ui/recipe.toml b/recipes/wip/dev/cargo-ui/recipe.toml index 9ea0143f..63f29324 100644 --- a/recipes/wip/dev/cargo-ui/recipe.toml +++ b/recipes/wip/dev/cargo-ui/recipe.toml @@ -1,7 +1,6 @@ #TODO make libxkbcommon work [source] git = "https://github.com/slint-ui/cargo-ui" -rev = "230652da8e9d91f109d5e4be3a5831452243ebc0" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/dev/cargo-zigbuild/recipe.toml b/recipes/wip/dev/cargo-zigbuild/recipe.toml index 1ba8156b..ff0823b6 100644 --- a/recipes/wip/dev/cargo-zigbuild/recipe.toml +++ b/recipes/wip/dev/cargo-zigbuild/recipe.toml @@ -1,7 +1,6 @@ #TODO make zig work [source] git = "https://github.com/rust-cross/cargo-zigbuild" -rev = "52be7dd2359cfbca8f1d0c1ae36b4f7bae64bafc" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/dev/cbindgen/recipe.toml b/recipes/wip/dev/cbindgen/recipe.toml index f49d0b14..471478b0 100644 --- a/recipes/wip/dev/cbindgen/recipe.toml +++ b/recipes/wip/dev/cbindgen/recipe.toml @@ -1,6 +1,5 @@ #TODO compiled but not tested [source] git = "https://github.com/mozilla/cbindgen" -rev = "703b53c06f9fe2dbc0193d67626558cfa84a0f62" [build] template = "cargo" diff --git a/recipes/wip/dev/difftastic/recipe.toml b/recipes/wip/dev/difftastic/recipe.toml index 9278735b..99a4c722 100644 --- a/recipes/wip/dev/difftastic/recipe.toml +++ b/recipes/wip/dev/difftastic/recipe.toml @@ -1,7 +1,6 @@ #TODO make mimalloc work [source] git = "https://github.com/Wilfred/difftastic" -rev = "a67ad5b9afe31e577540f27280885652c792b103" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/dev/diplomat/recipe.toml b/recipes/wip/dev/diplomat/recipe.toml index e28a7749..b47219bc 100644 --- a/recipes/wip/dev/diplomat/recipe.toml +++ b/recipes/wip/dev/diplomat/recipe.toml @@ -1,7 +1,6 @@ #TODO missing script to properly move the binary [source] git = "https://github.com/rust-diplomat/diplomat" -rev = "01bfb4bc53211e1c2a5ea58f64205c3a06727f7d" [build] template = "custom" script = """ diff --git a/recipes/wip/dev/firedbg/recipe.toml b/recipes/wip/dev/firedbg/recipe.toml index 005131f1..a185d58b 100644 --- a/recipes/wip/dev/firedbg/recipe.toml +++ b/recipes/wip/dev/firedbg/recipe.toml @@ -1,7 +1,6 @@ #TODO missing script to properly move the binary [source] git = "https://github.com/SeaQL/FireDBG.for.Rust" -rev = "2c1ec30113e2a0c857a37beb4177884528ae69bc" [build] template = "custom" script = """ diff --git a/recipes/wip/dev/hexyl/recipe.toml b/recipes/wip/dev/hexyl/recipe.toml index 18b94602..7ceae312 100644 --- a/recipes/wip/dev/hexyl/recipe.toml +++ b/recipes/wip/dev/hexyl/recipe.toml @@ -1,6 +1,5 @@ #TODO move to proper category [source] git = "https://github.com/sharkdp/hexyl" -rev = "7a9234c182b19070f8707468c572b5a0e6e704d4" [build] template = "cargo" diff --git a/recipes/wip/dev/irust/recipe.toml b/recipes/wip/dev/irust/recipe.toml index 71065b17..5af88ce8 100644 --- a/recipes/wip/dev/irust/recipe.toml +++ b/recipes/wip/dev/irust/recipe.toml @@ -1,7 +1,6 @@ #TODO compiled but not tested [source] git = "https://github.com/sigmaSd/IRust" -rev = "6f9dbaf9387b39019a44dfe5ef5397e6bb8d2a1a" [build] template = "custom" script = """ diff --git a/recipes/wip/dev/kani/recipe.toml b/recipes/wip/dev/kani/recipe.toml index b927efb5..18341301 100644 --- a/recipes/wip/dev/kani/recipe.toml +++ b/recipes/wip/dev/kani/recipe.toml @@ -1,6 +1,5 @@ #TODO compiled but not tested [source] git = "https://github.com/model-checking/kani" -rev = "1e6213d3e41ce1545d5129f5d71dc566d615ccb9" [build] template = "cargo" diff --git a/recipes/wip/dev/quicktest/recipe.toml b/recipes/wip/dev/quicktest/recipe.toml index 0c504bb7..3d584fe9 100644 --- a/recipes/wip/dev/quicktest/recipe.toml +++ b/recipes/wip/dev/quicktest/recipe.toml @@ -1,6 +1,5 @@ #TODO serde crate error [source] git = "https://github.com/LuchoBazz/quicktest" -rev = "f4d32f87d350a725b47d5bc92756e7be208cd466" [build] template = "cargo" diff --git a/recipes/wip/dev/rattler-build/recipe.toml b/recipes/wip/dev/rattler-build/recipe.toml index 301bee9d..257b77a7 100644 --- a/recipes/wip/dev/rattler-build/recipe.toml +++ b/recipes/wip/dev/rattler-build/recipe.toml @@ -1,7 +1,6 @@ #TODO openssl error [source] git = "https://github.com/prefix-dev/rattler-build" -rev = "4e554ccf35e50f598f9110bfc8c8be909de203da" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/dev/ruff/recipe.toml b/recipes/wip/dev/ruff/recipe.toml index 877e340e..07ea6df3 100644 --- a/recipes/wip/dev/ruff/recipe.toml +++ b/recipes/wip/dev/ruff/recipe.toml @@ -1,7 +1,6 @@ #TODO tikv-jemalloc-sys crate error [source] git = "https://github.com/charliermarsh/ruff" -rev = "0263f2715eba81aee471e3dd5a50ea5f9426cbb1" [build] template = "custom" script = """ diff --git a/recipes/wip/dev/rye/recipe.toml b/recipes/wip/dev/rye/recipe.toml index 5d88c6f8..14de331b 100644 --- a/recipes/wip/dev/rye/recipe.toml +++ b/recipes/wip/dev/rye/recipe.toml @@ -1,7 +1,6 @@ #TODO openssl-sys crate error [source] git = "https://github.com/mitsuhiko/rye" -rev = "c003223d5db575276d3ef52d31590580f3b1e97f" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/dev/samply/recipe.toml b/recipes/wip/dev/samply/recipe.toml index 75f5c6a0..335c068a 100644 --- a/recipes/wip/dev/samply/recipe.toml +++ b/recipes/wip/dev/samply/recipe.toml @@ -1,6 +1,5 @@ #TODO can't find the Cargo.toml [source] git = "https://github.com/mstange/samply" -rev = "0a3dd8b1af8f67b676e4c05e7b9846754644c0d7" [build] template = "cargo" diff --git a/recipes/wip/emulators/boytacean/recipe.toml b/recipes/wip/emulators/boytacean/recipe.toml index 6c5a1ecc..0575e2f5 100644 --- a/recipes/wip/emulators/boytacean/recipe.toml +++ b/recipes/wip/emulators/boytacean/recipe.toml @@ -1,7 +1,6 @@ #TODO Not compiled or tested [source] git = "https://github.com/joamag/boytacean" -rev = "1ef4a9d1689319722dff73dec4a824a7d4289f5d" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/emulators/gameroy/recipe.toml b/recipes/wip/emulators/gameroy/recipe.toml index 5ab46748..aa26a7ca 100644 --- a/recipes/wip/emulators/gameroy/recipe.toml +++ b/recipes/wip/emulators/gameroy/recipe.toml @@ -1,7 +1,6 @@ #TODO port to Orbital [source] git = "https://github.com/Rodrigodd/gameroy" -rev = "78d12b7a74cda37002cd2b964baaa761285925ab" [build] template = "custom" script = """ diff --git a/recipes/wip/finance/gupax/recipe.toml b/recipes/wip/finance/gupax/recipe.toml index df5aa802..32645f79 100644 --- a/recipes/wip/finance/gupax/recipe.toml +++ b/recipes/wip/finance/gupax/recipe.toml @@ -1,6 +1,5 @@ #TODO openssl-sys crate error [source] git = "https://github.com/hinto-janai/gupax" -rev = "1bfd72a8c2a1fe0a1583933e4d94a0450d0d964c" [build] template = "cargo" From e4bcd46d4d88e42599c24fe5e0fcf95671527f1f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 13:35:36 +0000 Subject: [PATCH 1895/3180] Update recipes --- recipes/wip/finance/tick-rs/recipe.toml | 1 - recipes/wip/fonts/fontfor/recipe.toml | 1 - recipes/wip/games/chess-tui/recipe.toml | 1 - recipes/wip/games/rebels-in-the-sky/recipe.toml | 1 - recipes/wip/graphics/simp/recipe.toml | 1 - recipes/wip/graphics/viu/recipe.toml | 1 - recipes/wip/net/oha/recipe.toml | 1 - recipes/wip/net/rustscan/recipe.toml | 1 - recipes/wip/security/cotp/recipe.toml | 1 - recipes/wip/security/motus/recipe.toml | 1 - recipes/wip/security/sniffnet/recipe.toml | 1 - recipes/wip/services/coppwr/recipe.toml | 1 - recipes/wip/services/hickory-dns/recipe.toml | 1 - recipes/wip/shells/sheldon/recipe.toml | 1 - recipes/wip/shells/zoxide/recipe.toml | 1 - recipes/wip/sound/ncspot/recipe.toml | 1 - recipes/wip/sound/tori/recipe.toml | 1 - recipes/wip/tools/aeruginous/recipe.toml | 1 - recipes/wip/tools/alacritty/recipe.toml | 1 - recipes/wip/tools/artem/recipe.toml | 1 - recipes/wip/tools/ast-grep/recipe.toml | 1 - recipes/wip/tools/b3sum/recipe.toml | 8 ++------ 22 files changed, 2 insertions(+), 27 deletions(-) diff --git a/recipes/wip/finance/tick-rs/recipe.toml b/recipes/wip/finance/tick-rs/recipe.toml index ff47e73f..844eedc0 100644 --- a/recipes/wip/finance/tick-rs/recipe.toml +++ b/recipes/wip/finance/tick-rs/recipe.toml @@ -1,6 +1,5 @@ #TODO openssl-sys crate error [source] git = "https://github.com/tarkah/tickrs" -rev = "8a04f5411adf72fc08146eab0632765f1002e9e6" [build] template = "cargo" diff --git a/recipes/wip/fonts/fontfor/recipe.toml b/recipes/wip/fonts/fontfor/recipe.toml index fe9e020f..d4535327 100644 --- a/recipes/wip/fonts/fontfor/recipe.toml +++ b/recipes/wip/fonts/fontfor/recipe.toml @@ -1,6 +1,5 @@ #TODO compiled but not tested [source] git = "https://github.com/7sDream/fontfor" -rev = "b0d868dc5f955b58b3a5ba6c97156f4060e7474b" [build] template = "cargo" diff --git a/recipes/wip/games/chess-tui/recipe.toml b/recipes/wip/games/chess-tui/recipe.toml index 4589182a..59ad1e59 100644 --- a/recipes/wip/games/chess-tui/recipe.toml +++ b/recipes/wip/games/chess-tui/recipe.toml @@ -1,6 +1,5 @@ #TODO move to proper category [source] git = "https://github.com/thomas-mauran/chess-tui" -rev = "b61e559b26e4de63808509fc2626730a4ff31774" [build] template = "cargo" diff --git a/recipes/wip/games/rebels-in-the-sky/recipe.toml b/recipes/wip/games/rebels-in-the-sky/recipe.toml index acc3a38b..607a298a 100644 --- a/recipes/wip/games/rebels-in-the-sky/recipe.toml +++ b/recipes/wip/games/rebels-in-the-sky/recipe.toml @@ -1,6 +1,5 @@ #TODO async-io and rustix crate error [source] git = "https://github.com/ricott1/rebels-in-the-sky" -rev = "decd5fa822e667e283fc1f0e52b5d75cedf2c35f" [build] template = "cargo" diff --git a/recipes/wip/graphics/simp/recipe.toml b/recipes/wip/graphics/simp/recipe.toml index 2fb2e960..152628e9 100644 --- a/recipes/wip/graphics/simp/recipe.toml +++ b/recipes/wip/graphics/simp/recipe.toml @@ -1,6 +1,5 @@ #TODO missing dependencies, see https://github.com/Kl4rry/simp#system-dependencies [source] git = "https://github.com/Kl4rry/simp" -rev = "195b2ef334e4c72ba8f44ee8af9f5cc0c259cc52" [build] template = "cargo" diff --git a/recipes/wip/graphics/viu/recipe.toml b/recipes/wip/graphics/viu/recipe.toml index 779ad204..710d95c9 100644 --- a/recipes/wip/graphics/viu/recipe.toml +++ b/recipes/wip/graphics/viu/recipe.toml @@ -1,6 +1,5 @@ #TODO working but don't exit [source] git = "https://github.com/atanunq/viu" -rev = "af8f2ae90040baeeb24b92adedc645edc4ea0e85" [build] template = "cargo" diff --git a/recipes/wip/net/oha/recipe.toml b/recipes/wip/net/oha/recipe.toml index 276d245a..fee15de0 100644 --- a/recipes/wip/net/oha/recipe.toml +++ b/recipes/wip/net/oha/recipe.toml @@ -1,7 +1,6 @@ #TODO jmalloc-sys crate error [source] git = "https://github.com/hatoo/oha" -rev = "2c88d2acc0b4773089faaa959debaec15ef355a8" [build] template = "custom" script = """ diff --git a/recipes/wip/net/rustscan/recipe.toml b/recipes/wip/net/rustscan/recipe.toml index 0cee287f..f82f18c6 100644 --- a/recipes/wip/net/rustscan/recipe.toml +++ b/recipes/wip/net/rustscan/recipe.toml @@ -1,7 +1,6 @@ #TODO Make nmap work [source] git = "https://github.com/RustScan/RustScan" -rev = "bd32f4ead4edd662633c1dd1f569132352ed9f04" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/security/cotp/recipe.toml b/recipes/wip/security/cotp/recipe.toml index 4e51b826..9d783b91 100644 --- a/recipes/wip/security/cotp/recipe.toml +++ b/recipes/wip/security/cotp/recipe.toml @@ -1,7 +1,6 @@ #TODO make dependencies work [source] git = "https://github.com/replydev/cotp" -rev = "ac3c11dda7b66c0c70a4106b769b5db53becc558" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/security/motus/recipe.toml b/recipes/wip/security/motus/recipe.toml index 2375828b..1ab9b6ad 100644 --- a/recipes/wip/security/motus/recipe.toml +++ b/recipes/wip/security/motus/recipe.toml @@ -1,6 +1,5 @@ #TODO x11rb crate error [source] git = "https://github.com/oleiade/motus" -rev = "318b33e070995f50ccd28df2c319d55bd6116a2d" [build] template = "cargo" diff --git a/recipes/wip/security/sniffnet/recipe.toml b/recipes/wip/security/sniffnet/recipe.toml index a325d23f..059e3929 100644 --- a/recipes/wip/security/sniffnet/recipe.toml +++ b/recipes/wip/security/sniffnet/recipe.toml @@ -1,7 +1,6 @@ #TODO make the libpcap dependency work [source] git = "https://github.com/GyulyVGC/sniffnet" -rev = "4d24bab70a6195ed9a6aac0326720ecb34154e68" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/services/coppwr/recipe.toml b/recipes/wip/services/coppwr/recipe.toml index 815d3894..ba04da96 100644 --- a/recipes/wip/services/coppwr/recipe.toml +++ b/recipes/wip/services/coppwr/recipe.toml @@ -1,7 +1,6 @@ #TODO make pipewire work [source] git = "https://github.com/dimtpap/coppwr" -rev = "f4e664b860b89801ec60eee479802f00af3cfdfc" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/services/hickory-dns/recipe.toml b/recipes/wip/services/hickory-dns/recipe.toml index 399ad9fc..b7ab38fd 100644 --- a/recipes/wip/services/hickory-dns/recipe.toml +++ b/recipes/wip/services/hickory-dns/recipe.toml @@ -1,7 +1,6 @@ #TODO compiled but not tested [source] git = "https://github.com/hickory-dns/hickory-dns" -rev = "408d0baca080d1b201cd33e616dc4abd160ef6c0" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/shells/sheldon/recipe.toml b/recipes/wip/shells/sheldon/recipe.toml index b2629083..9d6c5f31 100644 --- a/recipes/wip/shells/sheldon/recipe.toml +++ b/recipes/wip/shells/sheldon/recipe.toml @@ -1,7 +1,6 @@ #TODO libssh2-sys crate error [source] git = "https://github.com/rossmacarthur/sheldon" -rev = "9a56dcfc79c6e9f9bcf8480c162c50db013bb172" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/shells/zoxide/recipe.toml b/recipes/wip/shells/zoxide/recipe.toml index c077dac5..3b3f0333 100644 --- a/recipes/wip/shells/zoxide/recipe.toml +++ b/recipes/wip/shells/zoxide/recipe.toml @@ -1,6 +1,5 @@ #TODO compiled but not tested [source] git = "https://github.com/ajeetdsouza/zoxide" -rev = "1bfcdfacf22fe22ff05ad2813aac7c0d14dfba36" [build] template = "cargo" diff --git a/recipes/wip/sound/ncspot/recipe.toml b/recipes/wip/sound/ncspot/recipe.toml index 4af546db..5e48fefa 100644 --- a/recipes/wip/sound/ncspot/recipe.toml +++ b/recipes/wip/sound/ncspot/recipe.toml @@ -1,7 +1,6 @@ #TODO ncurses crate error [source] git = "https://github.com/hrkfdn/ncspot" -rev = "92e0852b3796601f406ebfdd697635ea63566a31" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/sound/tori/recipe.toml b/recipes/wip/sound/tori/recipe.toml index fba6d741..e420a629 100644 --- a/recipes/wip/sound/tori/recipe.toml +++ b/recipes/wip/sound/tori/recipe.toml @@ -1,7 +1,6 @@ #TODO make dependencies work [source] git = "https://github.com/LeoRiether/tori" -rev = "422e5bbb1477b6fdd3a56e0db1b3553ce362e153" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/tools/aeruginous/recipe.toml b/recipes/wip/tools/aeruginous/recipe.toml index 3a89c0e2..dcb990f3 100644 --- a/recipes/wip/tools/aeruginous/recipe.toml +++ b/recipes/wip/tools/aeruginous/recipe.toml @@ -1,6 +1,5 @@ #TODO compiled but not tested [source] git = "https://github.com/kevinmatthes/aeruginous-rs" -rev = "a129a3ff2d97cc288db816d3a263991094aecbc9" [build] template = "cargo" diff --git a/recipes/wip/tools/alacritty/recipe.toml b/recipes/wip/tools/alacritty/recipe.toml index b8668e9b..cec03b86 100644 --- a/recipes/wip/tools/alacritty/recipe.toml +++ b/recipes/wip/tools/alacritty/recipe.toml @@ -1,7 +1,6 @@ #TODO port to Orbital [source] git = "https://github.com/alacritty/alacritty" -rev = "5efb0690a3174dd4e21516bda59f74f3aa8ba3e3" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/tools/artem/recipe.toml b/recipes/wip/tools/artem/recipe.toml index 2f6ad0ec..cd4842a3 100644 --- a/recipes/wip/tools/artem/recipe.toml +++ b/recipes/wip/tools/artem/recipe.toml @@ -1,7 +1,6 @@ #TODO openssl-sys crate error [source] git = "https://github.com/FineFindus/artem" -rev = "fcb2424155febea1c2763652f1e87199f1e0e0eb" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/tools/ast-grep/recipe.toml b/recipes/wip/tools/ast-grep/recipe.toml index 9c99833d..79c0dc33 100644 --- a/recipes/wip/tools/ast-grep/recipe.toml +++ b/recipes/wip/tools/ast-grep/recipe.toml @@ -1,7 +1,6 @@ #TODO compilation error [source] git = "https://github.com/ast-grep/ast-grep" -rev = "74c54fc3e322c6017bc043e199420644ad961ff5" [build] template = "custom" script = """ diff --git a/recipes/wip/tools/b3sum/recipe.toml b/recipes/wip/tools/b3sum/recipe.toml index ede0f446..25902149 100644 --- a/recipes/wip/tools/b3sum/recipe.toml +++ b/recipes/wip/tools/b3sum/recipe.toml @@ -1,13 +1,9 @@ #TODO probably wrong script [source] git = "https://github.com/BLAKE3-team/BLAKE3" -rev = "5aa53f07f7188a569cadfc5daf1522972d9a9630" [build] template = "custom" script = """ -"${COOKBOOK_CARGO}" install \ - --path "${COOKBOOK_SOURCE}/b3sum" \ - --root "${COOKBOOK_STAGE}" \ - --locked \ - --no-track +COOKBOOK_SOURCE="${COOKBOOK_SOURCE}/b3sum" +cookbook_cargo """ From 355d49dec5e84b0ad0155852334e4f6081ffecdf Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 13:43:34 +0000 Subject: [PATCH 1896/3180] Update recipes --- recipes/wip/tools/b3sum/recipe.toml | 2 +- recipes/wip/tools/clipshare-desktop/recipe.toml | 1 - recipes/wip/tools/clipshare-server/recipe.toml | 1 - recipes/wip/tools/czkawka/recipe.toml | 1 - recipes/wip/tools/dead-ringer/recipe.toml | 1 - recipes/wip/tools/delta/recipe.toml | 1 - recipes/wip/tools/erdtree/recipe.toml | 1 - recipes/wip/tools/espanso/recipe.toml | 1 - recipes/wip/tools/fselect/recipe.toml | 1 - recipes/wip/tools/gengo/recipe.toml | 1 - recipes/wip/tools/gifski/recipe.toml | 1 - recipes/wip/tools/gpg-tui/recipe.toml | 1 - recipes/wip/tools/gping/recipe.toml | 1 - recipes/wip/tools/grex/recipe.toml | 1 - recipes/wip/tools/hgrep/recipe.toml | 1 - recipes/wip/tools/igrep/recipe.toml | 1 - recipes/wip/tools/intelli-shell/recipe.toml | 1 - recipes/wip/tools/jirust/recipe.toml | 1 - recipes/wip/tools/jql/recipe.toml | 1 - recipes/wip/tools/lapce/recipe.toml | 1 - recipes/wip/tools/lemmeknow/recipe.toml | 1 - recipes/wip/tools/lineselect/recipe.toml | 3 +-- recipes/wip/tools/mandy/recipe.toml | 1 - 23 files changed, 2 insertions(+), 24 deletions(-) diff --git a/recipes/wip/tools/b3sum/recipe.toml b/recipes/wip/tools/b3sum/recipe.toml index 25902149..44efd01d 100644 --- a/recipes/wip/tools/b3sum/recipe.toml +++ b/recipes/wip/tools/b3sum/recipe.toml @@ -1,4 +1,4 @@ -#TODO probably wrong script +#TODO compiled but not tested [source] git = "https://github.com/BLAKE3-team/BLAKE3" [build] diff --git a/recipes/wip/tools/clipshare-desktop/recipe.toml b/recipes/wip/tools/clipshare-desktop/recipe.toml index b303d13a..15b3688e 100644 --- a/recipes/wip/tools/clipshare-desktop/recipe.toml +++ b/recipes/wip/tools/clipshare-desktop/recipe.toml @@ -1,7 +1,6 @@ #TODO make the xdotool dependency work [source] git = "https://github.com/RastislavKish/clipshare" -rev = "2afa9c5af1a5ebaa6e1e372da6e01a289d31fdb3" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/tools/clipshare-server/recipe.toml b/recipes/wip/tools/clipshare-server/recipe.toml index afc0cb16..45c5ff71 100644 --- a/recipes/wip/tools/clipshare-server/recipe.toml +++ b/recipes/wip/tools/clipshare-server/recipe.toml @@ -1,7 +1,6 @@ #TODO probably wrong script, see https://github.com/RastislavKish/clipshare#building [source] git = "https://github.com/RastislavKish/clipshare" -rev = "2afa9c5af1a5ebaa6e1e372da6e01a289d31fdb3" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/tools/czkawka/recipe.toml b/recipes/wip/tools/czkawka/recipe.toml index 7286668b..95c7b88f 100644 --- a/recipes/wip/tools/czkawka/recipe.toml +++ b/recipes/wip/tools/czkawka/recipe.toml @@ -1,7 +1,6 @@ #TODO Compiled but not tested [source] git = "https://github.com/qarmin/czkawka" -rev = "44400e08af3c8f030493b8ec6fa965c7d42e560e" [build] template = "custom" script = """ diff --git a/recipes/wip/tools/dead-ringer/recipe.toml b/recipes/wip/tools/dead-ringer/recipe.toml index 349c29f2..118e56eb 100644 --- a/recipes/wip/tools/dead-ringer/recipe.toml +++ b/recipes/wip/tools/dead-ringer/recipe.toml @@ -1,6 +1,5 @@ #TODO compiled but not tested [source] git = "https://github.com/ztroop/dead-ringer" -rev = "c35398134a1bc3c44c1ddf24749b4a7643306870" [build] template = "cargo" diff --git a/recipes/wip/tools/delta/recipe.toml b/recipes/wip/tools/delta/recipe.toml index 55d9306a..b0850c54 100644 --- a/recipes/wip/tools/delta/recipe.toml +++ b/recipes/wip/tools/delta/recipe.toml @@ -1,7 +1,6 @@ #TODO make the "less" dependency work [source] git = "https://github.com/dandavison/delta" -rev = "03f1569a9aff964e9291371d9928d0584327eae2" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/tools/erdtree/recipe.toml b/recipes/wip/tools/erdtree/recipe.toml index 87ea9776..36c21ad7 100644 --- a/recipes/wip/tools/erdtree/recipe.toml +++ b/recipes/wip/tools/erdtree/recipe.toml @@ -1,6 +1,5 @@ #TODO program source code error [source] git = "https://github.com/solidiquis/erdtree" -rev = "2b1db8bcc843c3fa8b634df86f94716c75ca470a" [build] template = "cargo" diff --git a/recipes/wip/tools/espanso/recipe.toml b/recipes/wip/tools/espanso/recipe.toml index 5307a450..354025c4 100644 --- a/recipes/wip/tools/espanso/recipe.toml +++ b/recipes/wip/tools/espanso/recipe.toml @@ -1,7 +1,6 @@ #TODO missing script for building, see https://espanso.org/docs/install/linux/#wayland-compile [source] git = "https://github.com/espanso/espanso" -rev = "b421bcf73fa13506938d62425459d6c16c6a8d0a" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/tools/fselect/recipe.toml b/recipes/wip/tools/fselect/recipe.toml index e9f777c8..53936afc 100644 --- a/recipes/wip/tools/fselect/recipe.toml +++ b/recipes/wip/tools/fselect/recipe.toml @@ -1,7 +1,6 @@ #TODO make the mimalloc dependency work [source] git = "https://github.com/jhspetersson/fselect" -rev = "94849313ee4f76752287c6887cb4b03972f0e748" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/tools/gengo/recipe.toml b/recipes/wip/tools/gengo/recipe.toml index 632823fd..5403ffa7 100644 --- a/recipes/wip/tools/gengo/recipe.toml +++ b/recipes/wip/tools/gengo/recipe.toml @@ -1,7 +1,6 @@ #TODO missing script to properly move the binary [source] git = "https://github.com/spenserblack/gengo" -rev = "272e794ff895149152f942a9b71ceb39711a4fb9" [build] template = "custom" script = """ diff --git a/recipes/wip/tools/gifski/recipe.toml b/recipes/wip/tools/gifski/recipe.toml index 04acabad..71e4991c 100644 --- a/recipes/wip/tools/gifski/recipe.toml +++ b/recipes/wip/tools/gifski/recipe.toml @@ -1,6 +1,5 @@ #TODO compiled but not tested [source] git = "https://github.com/ImageOptim/gifski" -rev = "ba659390435d79db66f2e5e0a876b5d2e8681dcb" [build] template = "cargo" diff --git a/recipes/wip/tools/gpg-tui/recipe.toml b/recipes/wip/tools/gpg-tui/recipe.toml index 4035fbe6..2c6acf51 100644 --- a/recipes/wip/tools/gpg-tui/recipe.toml +++ b/recipes/wip/tools/gpg-tui/recipe.toml @@ -1,7 +1,6 @@ #TODO make dependencies work [source] git = "https://github.com/orhun/gpg-tui" -rev = "0f6e598f9beb19c0263d6fbc0bbbcb222fc704c4" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/tools/gping/recipe.toml b/recipes/wip/tools/gping/recipe.toml index d265a0b3..848f4a7d 100644 --- a/recipes/wip/tools/gping/recipe.toml +++ b/recipes/wip/tools/gping/recipe.toml @@ -1,7 +1,6 @@ #TODO program source code error [source] git = "https://github.com/orf/gping" -rev = "7547db0d2d8c22cf15066d51fcd41dc57cb5b046" [build] template = "custom" script = """ diff --git a/recipes/wip/tools/grex/recipe.toml b/recipes/wip/tools/grex/recipe.toml index 38aebbc4..e3d11bf8 100644 --- a/recipes/wip/tools/grex/recipe.toml +++ b/recipes/wip/tools/grex/recipe.toml @@ -1,6 +1,5 @@ #TODO compiled but not tested [source] git = "https://github.com/pemistahl/grex" -rev = "9b4ccfa9cc724bce43f19c51c8d512accbad93b6" [build] template = "cargo" diff --git a/recipes/wip/tools/hgrep/recipe.toml b/recipes/wip/tools/hgrep/recipe.toml index 518bafce..634ca89f 100644 --- a/recipes/wip/tools/hgrep/recipe.toml +++ b/recipes/wip/tools/hgrep/recipe.toml @@ -1,6 +1,5 @@ #TODO compilation error, missing mimalloc sys/syscall.h [source] git = "https://github.com/rhysd/hgrep" -rev = "85d7271d477a41708d89e1e7bc14e94dcab149ba" [build] template = "cargo" diff --git a/recipes/wip/tools/igrep/recipe.toml b/recipes/wip/tools/igrep/recipe.toml index 0f7ac5f4..cfa9c139 100644 --- a/recipes/wip/tools/igrep/recipe.toml +++ b/recipes/wip/tools/igrep/recipe.toml @@ -1,6 +1,5 @@ #TODO move to proper category [source] git = "https://github.com/konradsz/igrep" -rev = "8588755641e64cd40e569893e03628cf83cfc59f" [build] template = "cargo" diff --git a/recipes/wip/tools/intelli-shell/recipe.toml b/recipes/wip/tools/intelli-shell/recipe.toml index 8e792504..53ca1be5 100644 --- a/recipes/wip/tools/intelli-shell/recipe.toml +++ b/recipes/wip/tools/intelli-shell/recipe.toml @@ -1,7 +1,6 @@ #TODO OpenSSL error [source] git = "https://github.com/lasantosr/intelli-shell" -rev = "f1a3f24c8dbc9a9a10bfc702f6feb205f433fed0" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/tools/jirust/recipe.toml b/recipes/wip/tools/jirust/recipe.toml index 1840d47b..e14ebdaa 100644 --- a/recipes/wip/tools/jirust/recipe.toml +++ b/recipes/wip/tools/jirust/recipe.toml @@ -1,6 +1,5 @@ #TODO openssl-sys crate error [source] git = "https://github.com/moali87/jirust" -rev = "6fd0d4a76ed411f7055a9ee9364f40748856f304" [build] template = "cargo" diff --git a/recipes/wip/tools/jql/recipe.toml b/recipes/wip/tools/jql/recipe.toml index 029b0a3d..4ed4332a 100644 --- a/recipes/wip/tools/jql/recipe.toml +++ b/recipes/wip/tools/jql/recipe.toml @@ -1,7 +1,6 @@ #TODO compiled but not tested [source] git = "https://github.com/yamafaktory/jql" -rev = "af2768b279f203a58651d386f0167b229919f1c4" [build] template = "custom" script = """ diff --git a/recipes/wip/tools/lapce/recipe.toml b/recipes/wip/tools/lapce/recipe.toml index 73d39d65..e935c56a 100644 --- a/recipes/wip/tools/lapce/recipe.toml +++ b/recipes/wip/tools/lapce/recipe.toml @@ -1,6 +1,5 @@ #TODO openssl-sys crate error [source] git = "https://github.com/lapce/lapce" -rev = "cb96e5ac3f3e4e70bd18b7a1307c5406e4247164" [build] template = "cargo" diff --git a/recipes/wip/tools/lemmeknow/recipe.toml b/recipes/wip/tools/lemmeknow/recipe.toml index 2dff0577..d371d57c 100644 --- a/recipes/wip/tools/lemmeknow/recipe.toml +++ b/recipes/wip/tools/lemmeknow/recipe.toml @@ -1,6 +1,5 @@ #TODO move to proper category [source] git = "https://github.com/swanandx/lemmeknow" -rev = "f0ec298fb16e17b4c4c87c20b500e7ec1f7cd451" [build] template = "cargo" diff --git a/recipes/wip/tools/lineselect/recipe.toml b/recipes/wip/tools/lineselect/recipe.toml index df864cc4..c419ee47 100644 --- a/recipes/wip/tools/lineselect/recipe.toml +++ b/recipes/wip/tools/lineselect/recipe.toml @@ -1,6 +1,5 @@ -#TODO Compiled but not tested +#TODO compiled but not tested [source] git = "https://github.com/urbanogilson/lineselect" -rev = "080d1c62fcdd70cce0c94361ee10fd680aa92b4d" [build] template = "cargo" diff --git a/recipes/wip/tools/mandy/recipe.toml b/recipes/wip/tools/mandy/recipe.toml index aaa9a7e2..d8504fb2 100644 --- a/recipes/wip/tools/mandy/recipe.toml +++ b/recipes/wip/tools/mandy/recipe.toml @@ -1,7 +1,6 @@ #TODO libssh2-sys crate error [source] git = "https://github.com/angeldollface/mandy" -rev = "a64f20d0386af628af2662ed2a1e72faf9efe355" [build] template = "custom" dependencies = [ From 10bf9f1590add6eef16015aebeb1d91421ed21f0 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 14:02:34 +0000 Subject: [PATCH 1897/3180] Update recipes --- recipes/wip/tools/mdbook/recipe.toml | 1 - recipes/wip/tools/neovide/recipe.toml | 1 - recipes/wip/tools/ouch/recipe.toml | 1 - recipes/wip/tools/oxipng/recipe.toml | 1 - recipes/wip/tools/pixcil/recipe.toml | 1 - recipes/wip/tools/presenterm/recipe.toml | 1 - recipes/wip/tools/qrrs/recipe.toml | 1 - recipes/wip/tools/rage/recipe.toml | 1 - recipes/wip/tools/repgrep/recipe.toml | 1 - recipes/wip/tools/rioterm/recipe.toml | 1 - recipes/wip/tools/shd/recipe.toml | 1 - recipes/wip/tools/shokunin/recipe.toml | 1 - recipes/wip/tools/spacer/recipe.toml | 1 - recipes/wip/tools/sprinkles/recipe.toml | 1 - recipes/wip/tools/svg2pdf/recipe.toml | 1 - recipes/wip/tools/sws/recipe.toml | 1 - recipes/wip/tools/t-rec/recipe.toml | 3 +-- recipes/wip/tools/termimage/recipe.toml | 1 - recipes/wip/tools/thwack/recipe.toml | 1 - recipes/wip/tools/tp-note/recipe.toml | 1 - recipes/wip/tools/tts-tui/recipe.toml | 1 - recipes/wip/tools/ttyper/recipe.toml | 1 - recipes/wip/tools/tui-journal/recipe.toml | 1 - recipes/wip/tools/typst/recipe.toml | 1 - recipes/wip/tools/wpaperd/recipe.toml | 1 - recipes/wip/tools/youtube-tui/recipe.toml | 1 - recipes/wip/tui/gitui/recipe.toml | 1 - recipes/wip/tui/gyr/recipe.toml | 1 - recipes/wip/tui/oatmeal/recipe.toml | 1 - recipes/wip/tui/sshs/recipe.toml | 1 - recipes/wip/tui/termscp/recipe.toml | 1 - recipes/wip/video/glide/recipe.toml | 3 +-- recipes/wip/video/tplay/recipe.toml | 3 +-- recipes/wip/wayland/hyprland/recipe.toml | 1 - recipes/wip/wayland/waylandpp/recipe.toml | 1 - 35 files changed, 3 insertions(+), 38 deletions(-) diff --git a/recipes/wip/tools/mdbook/recipe.toml b/recipes/wip/tools/mdbook/recipe.toml index aeb1bbac..c3d6995b 100644 --- a/recipes/wip/tools/mdbook/recipe.toml +++ b/recipes/wip/tools/mdbook/recipe.toml @@ -1,6 +1,5 @@ #TODO move to proper category [source] git = "https://github.com/rust-lang/mdBook" -rev = "b7f46213c7df8f499eca0c82e7b41804cc15e369" [build] template = "cargo" diff --git a/recipes/wip/tools/neovide/recipe.toml b/recipes/wip/tools/neovide/recipe.toml index a9e37650..0c6631fa 100644 --- a/recipes/wip/tools/neovide/recipe.toml +++ b/recipes/wip/tools/neovide/recipe.toml @@ -1,7 +1,6 @@ #TODO Make neovim and freeglut work [source] git = "https://github.com/neovide/neovide" -rev = "113955bb68bf6715c784ea0b7ee75011c55471c9" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/tools/ouch/recipe.toml b/recipes/wip/tools/ouch/recipe.toml index 84ca3749..851597f2 100644 --- a/recipes/wip/tools/ouch/recipe.toml +++ b/recipes/wip/tools/ouch/recipe.toml @@ -1,7 +1,6 @@ #TODO compilation error [source] git = "https://github.com/ouch-org/ouch" -rev = "796a03a41d1412dbd0f1cf973ca88c59a4614cc8" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/tools/oxipng/recipe.toml b/recipes/wip/tools/oxipng/recipe.toml index b6c8fd16..f5c8ba61 100644 --- a/recipes/wip/tools/oxipng/recipe.toml +++ b/recipes/wip/tools/oxipng/recipe.toml @@ -1,6 +1,5 @@ #TODO working but don't exit [source] git = "https://github.com/shssoichiro/oxipng" -rev = "e1db84fd9745f3320c08b883e4942cd5b30b98a6" [build] template = "cargo" diff --git a/recipes/wip/tools/pixcil/recipe.toml b/recipes/wip/tools/pixcil/recipe.toml index 27af213b..18ae370e 100644 --- a/recipes/wip/tools/pixcil/recipe.toml +++ b/recipes/wip/tools/pixcil/recipe.toml @@ -3,7 +3,6 @@ #TODO require WebAssembly [source] git = "https://github.com/sile/pixcil" -rev = "2309661977c3191f44e730c5a17639874e497b69" [build] template = "custom" script = """ diff --git a/recipes/wip/tools/presenterm/recipe.toml b/recipes/wip/tools/presenterm/recipe.toml index d6b16180..ee36c4fc 100644 --- a/recipes/wip/tools/presenterm/recipe.toml +++ b/recipes/wip/tools/presenterm/recipe.toml @@ -1,6 +1,5 @@ #TODO move to proper category [source] git = "https://github.com/mfontanini/presenterm" -rev = "284db812aa876d43f3a7d7e8b96f75c72a9945fa" [build] template = "cargo" diff --git a/recipes/wip/tools/qrrs/recipe.toml b/recipes/wip/tools/qrrs/recipe.toml index a3723d66..fbd78645 100644 --- a/recipes/wip/tools/qrrs/recipe.toml +++ b/recipes/wip/tools/qrrs/recipe.toml @@ -1,6 +1,5 @@ #TODO move to proper category [source] git = "https://github.com/Lenivaya/qrrs" -rev = "74ea9129a808f199afb386a38df7492cc8c7d094" [build] template = "cargo" diff --git a/recipes/wip/tools/rage/recipe.toml b/recipes/wip/tools/rage/recipe.toml index 98e38bbc..54f1fc03 100644 --- a/recipes/wip/tools/rage/recipe.toml +++ b/recipes/wip/tools/rage/recipe.toml @@ -1,7 +1,6 @@ #TODO compiled but not tested [source] git = "https://github.com/str4d/rage" -rev = "e6180f1a2004008873b8e8d40110995ecec416c4" [build] template = "custom" script = """ diff --git a/recipes/wip/tools/repgrep/recipe.toml b/recipes/wip/tools/repgrep/recipe.toml index 00d6868a..6da058bd 100644 --- a/recipes/wip/tools/repgrep/recipe.toml +++ b/recipes/wip/tools/repgrep/recipe.toml @@ -1,6 +1,5 @@ #TODO compiled but not tested [source] git = "https://github.com/acheronfail/repgrep" -rev = "2e270809de00d0aefda272016afb6b5cf1ac4af5" [build] template = "cargo" diff --git a/recipes/wip/tools/rioterm/recipe.toml b/recipes/wip/tools/rioterm/recipe.toml index f2be2bcf..4713a5a8 100644 --- a/recipes/wip/tools/rioterm/recipe.toml +++ b/recipes/wip/tools/rioterm/recipe.toml @@ -1,7 +1,6 @@ #TODO Need to make libxkbcommon work [source] git = "https://github.com/raphamorim/rio" -rev = "ddd99a767b2c17bbf9aa8a00f6107acc488a04e8" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/tools/shd/recipe.toml b/recipes/wip/tools/shd/recipe.toml index 0ea59075..8a523975 100644 --- a/recipes/wip/tools/shd/recipe.toml +++ b/recipes/wip/tools/shd/recipe.toml @@ -1,7 +1,6 @@ #TODO make the smartmontools dependency work [source] git = "https://github.com/alttch/shd" -rev = "81fd46a7b1b2423fb9a3e3223b5b5dac79e4eda5" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/tools/shokunin/recipe.toml b/recipes/wip/tools/shokunin/recipe.toml index 65a19227..4230fd8d 100644 --- a/recipes/wip/tools/shokunin/recipe.toml +++ b/recipes/wip/tools/shokunin/recipe.toml @@ -1,7 +1,6 @@ #TODO openssl-sys crate error [source] git = "https://github.com/sebastienrousseau/shokunin" -rev = "9592f12701fb0ef3bc298f4499d2787e24fca4f3" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/tools/spacer/recipe.toml b/recipes/wip/tools/spacer/recipe.toml index 701f19bc..17863ad8 100644 --- a/recipes/wip/tools/spacer/recipe.toml +++ b/recipes/wip/tools/spacer/recipe.toml @@ -1,6 +1,5 @@ #TODO move to proper category [source] git = "https://github.com/samwho/spacer" -rev = "9c63225e9b93e1aa8b63e64c180ffd05b7dd4b02" [build] template = "cargo" diff --git a/recipes/wip/tools/sprinkles/recipe.toml b/recipes/wip/tools/sprinkles/recipe.toml index f364fd7d..6188ce8e 100644 --- a/recipes/wip/tools/sprinkles/recipe.toml +++ b/recipes/wip/tools/sprinkles/recipe.toml @@ -1,6 +1,5 @@ #TODO Compiled but not tested [source] git = "https://github.com/KhalilOuali/sprinkles" -rev = "8c30f5f8e63b8fa89692ed712c52c928b42a556a" [build] template = "cargo" diff --git a/recipes/wip/tools/svg2pdf/recipe.toml b/recipes/wip/tools/svg2pdf/recipe.toml index 28624b91..21a0d64d 100644 --- a/recipes/wip/tools/svg2pdf/recipe.toml +++ b/recipes/wip/tools/svg2pdf/recipe.toml @@ -2,7 +2,6 @@ #TODO missing script to properly move the binary [source] git = "https://github.com/typst/svg2pdf" -rev = "7d13eab7f01a9ab1577cfb348eead05726658c53" [build] template = "custom" script = """ diff --git a/recipes/wip/tools/sws/recipe.toml b/recipes/wip/tools/sws/recipe.toml index 795bf933..4530f9e4 100644 --- a/recipes/wip/tools/sws/recipe.toml +++ b/recipes/wip/tools/sws/recipe.toml @@ -1,6 +1,5 @@ #TODO signal-hook crate error [source] git = "https://github.com/static-web-server/static-web-server" -rev = "98a5cc40d276f3dac3c2c36530b966b213fb9ffc" [build] template = "cargo" diff --git a/recipes/wip/tools/t-rec/recipe.toml b/recipes/wip/tools/t-rec/recipe.toml index 370bd2d5..3bd231d5 100644 --- a/recipes/wip/tools/t-rec/recipe.toml +++ b/recipes/wip/tools/t-rec/recipe.toml @@ -1,7 +1,6 @@ -#TODO require XWayland +#TODO port to orbital [source] git = "https://github.com/sassman/t-rec-rs" -rev = "da911b978e9e87a917c7c865e5aa4d833209d9e0" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/tools/termimage/recipe.toml b/recipes/wip/tools/termimage/recipe.toml index 3caabda1..15619e6c 100644 --- a/recipes/wip/tools/termimage/recipe.toml +++ b/recipes/wip/tools/termimage/recipe.toml @@ -1,6 +1,5 @@ #TODO move to the proper category [source] git = "https://github.com/nabijaczleweli/termimage" -rev = "6156416a61fc5bfe78bdbda71e7f11f77a9adf9e" [build] template = "cargo" diff --git a/recipes/wip/tools/thwack/recipe.toml b/recipes/wip/tools/thwack/recipe.toml index 9b2ec86f..5c1ddf26 100644 --- a/recipes/wip/tools/thwack/recipe.toml +++ b/recipes/wip/tools/thwack/recipe.toml @@ -1,6 +1,5 @@ #TODO port to Orbital [source] git = "https://github.com/yykamei/thwack" -rev = "6763a2a9da03ffb746580c69f8d77161e5f6ba4e" [build] template = "cargo" diff --git a/recipes/wip/tools/tp-note/recipe.toml b/recipes/wip/tools/tp-note/recipe.toml index c359fb84..3d8dd937 100644 --- a/recipes/wip/tools/tp-note/recipe.toml +++ b/recipes/wip/tools/tp-note/recipe.toml @@ -1,7 +1,6 @@ #TODO port to Orbital [source] git = "https://gitlab.com/getreu/tp-note" -rev = "1a8241211382efafb37961888aebc0065d56a95e" [build] template = "custom" script = """ diff --git a/recipes/wip/tools/tts-tui/recipe.toml b/recipes/wip/tools/tts-tui/recipe.toml index 18e9ba7c..3cff1998 100644 --- a/recipes/wip/tools/tts-tui/recipe.toml +++ b/recipes/wip/tools/tts-tui/recipe.toml @@ -1,7 +1,6 @@ #TODO make speech-dispatcher work [source] git = "https://github.com/lesleyrs/tts-tui" -rev = "820689ba21ead76981376b7dfed17bfc59e5b013" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/tools/ttyper/recipe.toml b/recipes/wip/tools/ttyper/recipe.toml index d671e517..26cb150a 100644 --- a/recipes/wip/tools/ttyper/recipe.toml +++ b/recipes/wip/tools/ttyper/recipe.toml @@ -1,6 +1,5 @@ #TODO replace the prompt with nothing on execution [source] git = "https://github.com/max-niederman/ttyper" -rev = "662a6682984afa6efca707b693ae68622e52ac24" [build] template = "cargo" diff --git a/recipes/wip/tools/tui-journal/recipe.toml b/recipes/wip/tools/tui-journal/recipe.toml index b7213fbf..aad40ea0 100644 --- a/recipes/wip/tools/tui-journal/recipe.toml +++ b/recipes/wip/tools/tui-journal/recipe.toml @@ -1,7 +1,6 @@ #TODO port to Orbital [source] git = "https://github.com/AmmarAbouZor/tui-journal" -rev = "40943d8b4081d61cd549398ff68c6f219444167b" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/tools/typst/recipe.toml b/recipes/wip/tools/typst/recipe.toml index be14591e..a276fd8a 100644 --- a/recipes/wip/tools/typst/recipe.toml +++ b/recipes/wip/tools/typst/recipe.toml @@ -2,7 +2,6 @@ #TODO missing script to properly move the binary [source] git = "https://github.com/typst/typst" -rev = "70ca0d257bb4ba927f63260e20443f244e0bb58c" [build] template = "custom" script = """ diff --git a/recipes/wip/tools/wpaperd/recipe.toml b/recipes/wip/tools/wpaperd/recipe.toml index 83a7423c..3e231f3f 100644 --- a/recipes/wip/tools/wpaperd/recipe.toml +++ b/recipes/wip/tools/wpaperd/recipe.toml @@ -1,7 +1,6 @@ #TODO make libxkbcommon work [source] git = "https://github.com/danyspin97/wpaperd" -rev = "a99e4e3d8c05a933a3f428329c2883e635feca14" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/tools/youtube-tui/recipe.toml b/recipes/wip/tools/youtube-tui/recipe.toml index 960b6a71..83406f0e 100644 --- a/recipes/wip/tools/youtube-tui/recipe.toml +++ b/recipes/wip/tools/youtube-tui/recipe.toml @@ -1,7 +1,6 @@ #TODO openssl error [source] git = "https://github.com/Siriusmart/youtube-tui" -rev = "f321f7c1e9b41644b976ea8672807c3062908c5c" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/tui/gitui/recipe.toml b/recipes/wip/tui/gitui/recipe.toml index 3e349490..b8019c57 100644 --- a/recipes/wip/tui/gitui/recipe.toml +++ b/recipes/wip/tui/gitui/recipe.toml @@ -1,7 +1,6 @@ #TODO openssl-sys crate error [source] git = "https://github.com/extrawurst/gitui" -rev = "87686118768e89b5e86611b4057c05d0d7abb2bc" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/tui/gyr/recipe.toml b/recipes/wip/tui/gyr/recipe.toml index 81436704..68d2d458 100644 --- a/recipes/wip/tui/gyr/recipe.toml +++ b/recipes/wip/tui/gyr/recipe.toml @@ -1,6 +1,5 @@ #TODO move to proper category [source] git = "https://git.sr.ht/~f9/gyr" -rev = "3418fb65da1c181eade2f5f5284cf175cafb41ec" [build] template = "cargo" diff --git a/recipes/wip/tui/oatmeal/recipe.toml b/recipes/wip/tui/oatmeal/recipe.toml index 76aad242..ed8612d1 100644 --- a/recipes/wip/tui/oatmeal/recipe.toml +++ b/recipes/wip/tui/oatmeal/recipe.toml @@ -1,6 +1,5 @@ #TODO openssl-sys crate error [source] git = "https://github.com/dustinblackman/oatmeal" -rev = "96f08a7b65c7be249a9f8497e247cc920c08459d" [build] template = "cargo" diff --git a/recipes/wip/tui/sshs/recipe.toml b/recipes/wip/tui/sshs/recipe.toml index 760d6e13..4fa34634 100644 --- a/recipes/wip/tui/sshs/recipe.toml +++ b/recipes/wip/tui/sshs/recipe.toml @@ -1,6 +1,5 @@ #TODO compiled but not tested [source] git = "https://github.com/quantumsheep/sshs" -rev = "116cb8d0b360e8bb47acfdb3398702f89d866b12" [build] template = "cargo" diff --git a/recipes/wip/tui/termscp/recipe.toml b/recipes/wip/tui/termscp/recipe.toml index d47fd2d0..2e4cb6a4 100644 --- a/recipes/wip/tui/termscp/recipe.toml +++ b/recipes/wip/tui/termscp/recipe.toml @@ -1,7 +1,6 @@ #TODO make dbus work [source] git = "https://github.com/veeso/termscp" -rev = "ef8dbb6305fd1573446a254b9be759a1f13724af" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/video/glide/recipe.toml b/recipes/wip/video/glide/recipe.toml index 92a357da..8a1711d9 100644 --- a/recipes/wip/video/glide/recipe.toml +++ b/recipes/wip/video/glide/recipe.toml @@ -1,7 +1,6 @@ -#TODO Make GTK4 work +#TODO Make gtk4 work [source] git = "https://github.com/philn/glide" -rev = "fc86c0e8672e0713b26edae8c6388b85d5d05177" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/video/tplay/recipe.toml b/recipes/wip/video/tplay/recipe.toml index df5a777e..603d5b11 100644 --- a/recipes/wip/video/tplay/recipe.toml +++ b/recipes/wip/video/tplay/recipe.toml @@ -1,7 +1,6 @@ -#TODO Make OpenCV 4 work +#TODO Make opencv4 work [source] git = "https://github.com/maxcurzi/tplay" -rev = "f32d5d3df7e3c6a873d1b113ef3b707b016b3a69" [build] template = "cargo" dependencies = [ diff --git a/recipes/wip/wayland/hyprland/recipe.toml b/recipes/wip/wayland/hyprland/recipe.toml index a4b04d72..dff2a286 100644 --- a/recipes/wip/wayland/hyprland/recipe.toml +++ b/recipes/wip/wayland/hyprland/recipe.toml @@ -1,7 +1,6 @@ #TODO missing CMake configuration, see https://wiki.hyprland.org/Getting-Started/Installation/#cmake-recommended [source] git = "https://github.com/hyprwm/Hyprland" -rev = "9afdd61adeaf413afbe853dbc5fdf6853c8bde21" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/wayland/waylandpp/recipe.toml b/recipes/wip/wayland/waylandpp/recipe.toml index 5f5473f0..512fc99f 100644 --- a/recipes/wip/wayland/waylandpp/recipe.toml +++ b/recipes/wip/wayland/waylandpp/recipe.toml @@ -1,6 +1,5 @@ #TODO missing script for CMake, see https://github.com/NilsBrause/waylandpp#building [source] git = "https://github.com/NilsBrause/waylandpp" -rev = "4321ed5c7b4bffa41b8a2a13dc7f3ece1191f4f3" [build] template = "custom" From e9a9a7f510c944080576bdb347c7b44301499243 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 17:39:17 +0000 Subject: [PATCH 1898/3180] Update recipes --- recipes/wip/libs/cairomm-1.16+/recipe.toml | 2 ++ recipes/wip/libs/wolfssl5/recipe.toml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/recipes/wip/libs/cairomm-1.16+/recipe.toml b/recipes/wip/libs/cairomm-1.16+/recipe.toml index d0c90e71..7fcebbf3 100644 --- a/recipes/wip/libs/cairomm-1.16+/recipe.toml +++ b/recipes/wip/libs/cairomm-1.16+/recipe.toml @@ -7,6 +7,8 @@ dependencies = [ "cairo", ] script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ ./autogen.sh +COOKBOOK_CONFIGURE="./configure" cookbook_configure """ diff --git a/recipes/wip/libs/wolfssl5/recipe.toml b/recipes/wip/libs/wolfssl5/recipe.toml index 028670df..d4c4afad 100644 --- a/recipes/wip/libs/wolfssl5/recipe.toml +++ b/recipes/wip/libs/wolfssl5/recipe.toml @@ -5,6 +5,8 @@ rev = "37884f864d6fd9b04f44677cb04da15d0c9d6526" [build] template = "custom" script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ ./autogen.sh +COOKBOOK_CONFIGURE="./configure" cookbook_configure """ From 88bf0d3ac02f1cc235e82912cfd2ffbdeed2100b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 17:47:04 +0000 Subject: [PATCH 1899/3180] Update recipes --- recipes/wip/libs/cairomm-1.16+/recipe.toml | 2 +- recipes/wip/libs/wolfssl5/recipe.toml | 2 +- recipes/wip/net/moonfire-nvr-server/recipe.toml | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/wip/libs/cairomm-1.16+/recipe.toml b/recipes/wip/libs/cairomm-1.16+/recipe.toml index 7fcebbf3..563e7549 100644 --- a/recipes/wip/libs/cairomm-1.16+/recipe.toml +++ b/recipes/wip/libs/cairomm-1.16+/recipe.toml @@ -1,4 +1,4 @@ -#TODO the tarball contents aren't copied to the "build" folder +#TODO mm-common-prepare: not found [source] tar = "https://www.cairographics.org/releases/cairomm-1.18.0.tar.xz" [build] diff --git a/recipes/wip/libs/wolfssl5/recipe.toml b/recipes/wip/libs/wolfssl5/recipe.toml index d4c4afad..634a974a 100644 --- a/recipes/wip/libs/wolfssl5/recipe.toml +++ b/recipes/wip/libs/wolfssl5/recipe.toml @@ -1,4 +1,4 @@ -#TODO the git repository contents aren't copied to the "build" folder +#TODO compiled but not tested [source] git = "https://github.com/wolfSSL/wolfssl" rev = "37884f864d6fd9b04f44677cb04da15d0c9d6526" diff --git a/recipes/wip/net/moonfire-nvr-server/recipe.toml b/recipes/wip/net/moonfire-nvr-server/recipe.toml index 3b4d5c93..537ef215 100644 --- a/recipes/wip/net/moonfire-nvr-server/recipe.toml +++ b/recipes/wip/net/moonfire-nvr-server/recipe.toml @@ -7,6 +7,7 @@ dependencies = [ "sqlite3", ] script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ cd "${COOKBOOK_SOURCE}/server" cookbook_cargo """ From f52f8037a8f9b3387c0d5932064ae9d1714b1cf9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 17:49:51 +0000 Subject: [PATCH 1900/3180] Update a recipe --- recipes/wip/net/moonfire-nvr-server/recipe.toml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/net/moonfire-nvr-server/recipe.toml b/recipes/wip/net/moonfire-nvr-server/recipe.toml index 537ef215..2b115470 100644 --- a/recipes/wip/net/moonfire-nvr-server/recipe.toml +++ b/recipes/wip/net/moonfire-nvr-server/recipe.toml @@ -7,7 +7,6 @@ dependencies = [ "sqlite3", ] script = """ -rsync -av --delete "${COOKBOOK_SOURCE}/" ./ cd "${COOKBOOK_SOURCE}/server" -cookbook_cargo +cookbook_cargo_packages moonfire-nvr """ From 984ddf8928dd1d4020818fd1c06129bcb8c36853 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 17:51:48 +0000 Subject: [PATCH 1901/3180] Update a recipe --- recipes/wip/net/moonfire-nvr-server/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/net/moonfire-nvr-server/recipe.toml b/recipes/wip/net/moonfire-nvr-server/recipe.toml index 2b115470..3b4d5c93 100644 --- a/recipes/wip/net/moonfire-nvr-server/recipe.toml +++ b/recipes/wip/net/moonfire-nvr-server/recipe.toml @@ -8,5 +8,5 @@ dependencies = [ ] script = """ cd "${COOKBOOK_SOURCE}/server" -cookbook_cargo_packages moonfire-nvr +cookbook_cargo """ From 4d5760898c7d0b5a570c90b34c7361d967423fe6 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 12 Jun 2024 17:54:34 +0000 Subject: [PATCH 1902/3180] Update a TODO --- recipes/wip/net/moonfire-nvr-server/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/net/moonfire-nvr-server/recipe.toml b/recipes/wip/net/moonfire-nvr-server/recipe.toml index 3b4d5c93..da7af0ec 100644 --- a/recipes/wip/net/moonfire-nvr-server/recipe.toml +++ b/recipes/wip/net/moonfire-nvr-server/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO cookbook_cargo function error [source] git = "https://github.com/scottlamb/moonfire-nvr" [build] From a70b46146cd748efbc19153f62e0cda34ddb49d4 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 13 Jun 2024 18:22:36 +0000 Subject: [PATCH 1903/3180] Add recipes --- recipes/wip/games/turdle/recipe.toml | 5 +++++ recipes/wip/tools/ripgrep-all/recipe.toml | 5 +++++ recipes/wip/tui/tui-slides/recipe.toml | 5 +++++ 3 files changed, 15 insertions(+) create mode 100644 recipes/wip/games/turdle/recipe.toml create mode 100644 recipes/wip/tools/ripgrep-all/recipe.toml create mode 100644 recipes/wip/tui/tui-slides/recipe.toml diff --git a/recipes/wip/games/turdle/recipe.toml b/recipes/wip/games/turdle/recipe.toml new file mode 100644 index 00000000..d7d1fb96 --- /dev/null +++ b/recipes/wip/games/turdle/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/weiteck/turdle" +[build] +template = "cargo" diff --git a/recipes/wip/tools/ripgrep-all/recipe.toml b/recipes/wip/tools/ripgrep-all/recipe.toml new file mode 100644 index 00000000..1641ebef --- /dev/null +++ b/recipes/wip/tools/ripgrep-all/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/phiresky/ripgrep-all" +[build] +template = "cargo" diff --git a/recipes/wip/tui/tui-slides/recipe.toml b/recipes/wip/tui/tui-slides/recipe.toml new file mode 100644 index 00000000..63707f65 --- /dev/null +++ b/recipes/wip/tui/tui-slides/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Chleba/tui-slides" +[build] +template = "cargo" From 20165a22e27f55b3e4d30585ee62cff752ab1b2b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 13 Jun 2024 18:25:02 +0000 Subject: [PATCH 1904/3180] Add a recipe --- recipes/wip/demos/termtree/recipe.toml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 recipes/wip/demos/termtree/recipe.toml diff --git a/recipes/wip/demos/termtree/recipe.toml b/recipes/wip/demos/termtree/recipe.toml new file mode 100644 index 00000000..846d2588 --- /dev/null +++ b/recipes/wip/demos/termtree/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/rust-cli/termtree" +[build] +template = "custom" +script = """ +cookbook_cargo_examples tree +""" From 797dae826afc528884344fd4b6e42ee8993333ae Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 15 Jun 2024 03:05:15 +0000 Subject: [PATCH 1905/3180] Add recipes --- recipes/wip/tools/qrtool/recipe.toml | 5 +++++ recipes/wip/web/sitesmith/recipe.toml | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 recipes/wip/tools/qrtool/recipe.toml create mode 100644 recipes/wip/web/sitesmith/recipe.toml diff --git a/recipes/wip/tools/qrtool/recipe.toml b/recipes/wip/tools/qrtool/recipe.toml new file mode 100644 index 00000000..1820db69 --- /dev/null +++ b/recipes/wip/tools/qrtool/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/sorairolake/qrtool" +[build] +template = "cargo" diff --git a/recipes/wip/web/sitesmith/recipe.toml b/recipes/wip/web/sitesmith/recipe.toml new file mode 100644 index 00000000..dee6cf79 --- /dev/null +++ b/recipes/wip/web/sitesmith/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/BradenEverson/sitesmith" +[build] +template = "cargo" From 6148150ff5a2b630a8d76c055040b7b399f69a38 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 15 Jun 2024 11:49:48 +0000 Subject: [PATCH 1906/3180] Add a recipe --- recipes/wip/tools/rsftch/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/wip/tools/rsftch/recipe.toml diff --git a/recipes/wip/tools/rsftch/recipe.toml b/recipes/wip/tools/rsftch/recipe.toml new file mode 100644 index 00000000..214b2cfb --- /dev/null +++ b/recipes/wip/tools/rsftch/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/charklie/rsftch" +[build] +template = "cargo" From b1753870940745eab4f7a494c95b7e38a7af3edf Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 15 Jun 2024 15:32:11 +0000 Subject: [PATCH 1907/3180] Update recipes --- recipes/wip/demos/bevy-engine/recipe.toml | 9 ++++----- recipes/wip/emulators/darling/recipe.toml | 1 + recipes/wip/emulators/dolphin-emu/recipe.toml | 1 + recipes/wip/emulators/duckstation/recipe.toml | 2 +- recipes/wip/emulators/mame/recipe.toml | 1 + recipes/wip/emulators/melonds/recipe.toml | 1 + recipes/wip/emulators/obliteration/recipe.toml | 1 + recipes/wip/emulators/pcsx2/recipe.toml | 3 +-- recipes/wip/emulators/ppsspp/recipe.toml | 2 ++ recipes/wip/emulators/rpcs3/recipe.toml | 1 + recipes/wip/emulators/snes9x/recipe.toml | 1 + recipes/wip/emulators/uoyabause/recipe.toml | 1 + recipes/wip/emulators/vita3k/recipe.toml | 1 + recipes/wip/emulators/wine-stable/recipe.toml | 4 ++-- recipes/wip/emulators/xemu/recipe.toml | 1 + recipes/wip/emulators/xenia/recipe.toml | 2 +- recipes/wip/libs/glfw3/recipe.toml | 2 +- recipes/wip/libs/gtk2/recipe.toml | 2 +- recipes/wip/libs/gtk3/recipe.toml | 3 +-- recipes/wip/libs/gtk4/recipe.toml | 3 +-- recipes/wip/libs/libdecor/recipe.toml | 2 +- recipes/wip/libs/libvulkan/recipe.toml | 3 +-- recipes/wip/libs/webkitgtk3/recipe.toml | 2 +- recipes/wip/libs/webkitgtk4/recipe.toml | 2 +- recipes/wip/net/telegram-desktop/recipe.toml | 2 +- recipes/wip/office/libreoffice/recipe.toml | 2 +- 26 files changed, 31 insertions(+), 24 deletions(-) diff --git a/recipes/wip/demos/bevy-engine/recipe.toml b/recipes/wip/demos/bevy-engine/recipe.toml index b38c9ee8..bc63618b 100644 --- a/recipes/wip/demos/bevy-engine/recipe.toml +++ b/recipes/wip/demos/bevy-engine/recipe.toml @@ -1,9 +1,8 @@ -#TODO missing script for the "hello_world" example and the "wayland" flag +#TODO not compiled or tested [source] git = "https://github.com/bevyengine/bevy" -rev = "22e39c4abf6e2fdf99ba0820b3c35db73be71347" [build] template = "custom" -dependencies = [ - "libwayland", -] +script = """ +cookbook_cargo_examples hello_world +""" diff --git a/recipes/wip/emulators/darling/recipe.toml b/recipes/wip/emulators/darling/recipe.toml index 1fae1b1b..b5107e2f 100644 --- a/recipes/wip/emulators/darling/recipe.toml +++ b/recipes/wip/emulators/darling/recipe.toml @@ -1,5 +1,6 @@ #TODO probably wrong script, see https://docs.darlinghq.org/build-instructions.html#building-and-installing #TODO require Git LFS installed on host +#TODO port to orbital? [source] git = "https://github.com/darlinghq/darling" [build] diff --git a/recipes/wip/emulators/dolphin-emu/recipe.toml b/recipes/wip/emulators/dolphin-emu/recipe.toml index 10055660..2700cf71 100644 --- a/recipes/wip/emulators/dolphin-emu/recipe.toml +++ b/recipes/wip/emulators/dolphin-emu/recipe.toml @@ -1,5 +1,6 @@ #TODO probably wrong script, see https://github.com/dolphin-emu/dolphin/wiki/Building-for-Linux #TODO probably missing dependencies +#TODO make all dependencies work [source] git = "https://github.com/dolphin-emu/dolphin" [build] diff --git a/recipes/wip/emulators/duckstation/recipe.toml b/recipes/wip/emulators/duckstation/recipe.toml index 33eb1d0e..dd6603e6 100644 --- a/recipes/wip/emulators/duckstation/recipe.toml +++ b/recipes/wip/emulators/duckstation/recipe.toml @@ -1,4 +1,5 @@ #TODO probably wrong script, see https://github.com/stenzek/duckstation#linux-1 +#TODO make qt6 work [source] tar = "https://github.com/stenzek/duckstation" [build] @@ -8,7 +9,6 @@ dependencies = [ "qt6-base", "qt6-svg", "qt6-tools", - "libwayland", ] script = """ COOKBOOK_CONFIGURE="cmake" diff --git a/recipes/wip/emulators/mame/recipe.toml b/recipes/wip/emulators/mame/recipe.toml index 2e7ef6eb..52b4b04b 100644 --- a/recipes/wip/emulators/mame/recipe.toml +++ b/recipes/wip/emulators/mame/recipe.toml @@ -1,4 +1,5 @@ #TODO missing script for "make", see https://docs.mamedev.org/initialsetup/compilingmame.html +#TODO make qt5 work [source] git = "https://github.com/mamedev/mame" rev = "ca50094e8d5467aed7a18c718cdff8903e1bfe27" diff --git a/recipes/wip/emulators/melonds/recipe.toml b/recipes/wip/emulators/melonds/recipe.toml index 8fcde47e..fc8f4b45 100644 --- a/recipes/wip/emulators/melonds/recipe.toml +++ b/recipes/wip/emulators/melonds/recipe.toml @@ -1,4 +1,5 @@ #TODO missing script for CMake, see https://github.com/melonDS-emu/melonDS#linux +#TODO make all dependencies work [source] git = "https://github.com/melonDS-emu/melonDS" rev = "430de6b2702bb93faa8c2004aff3fbd084db4a1e" diff --git a/recipes/wip/emulators/obliteration/recipe.toml b/recipes/wip/emulators/obliteration/recipe.toml index 80b6628f..dd51b9df 100644 --- a/recipes/wip/emulators/obliteration/recipe.toml +++ b/recipes/wip/emulators/obliteration/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script for CMake, see https://github.com/obhq/obliteration#configure-build-system #TODO probably missing dependencies +#TODO make qt6 work [source] git = "https://github.com/obhq/obliteration" [build] diff --git a/recipes/wip/emulators/pcsx2/recipe.toml b/recipes/wip/emulators/pcsx2/recipe.toml index 7ab490d1..c72c13f3 100644 --- a/recipes/wip/emulators/pcsx2/recipe.toml +++ b/recipes/wip/emulators/pcsx2/recipe.toml @@ -1,6 +1,7 @@ #TODO probably wrong script, see https://github.com/PCSX2/pcsx2/wiki/10-Building-on-Linux #TODO probably need patches on submodules #TODO determine dependencies - https://aur.archlinux.org/packages/pcsx2-git +#TODO make all dependencies work [source] git = "https://github.com/PCSX2/pcsx2.git" [build] @@ -11,7 +12,6 @@ dependencies = [ "libpng", "qt6-base", "qt6-svg", - "qt6-wayland", "mesa", "libaio", "harfbuzz", @@ -22,7 +22,6 @@ dependencies = [ "zlib", "libxml2", "ffmpeg6", - "libwayland", ] script = """ COOKBOOK_CONFIGURE="cmake" diff --git a/recipes/wip/emulators/ppsspp/recipe.toml b/recipes/wip/emulators/ppsspp/recipe.toml index 5ce00a6f..727ca584 100644 --- a/recipes/wip/emulators/ppsspp/recipe.toml +++ b/recipes/wip/emulators/ppsspp/recipe.toml @@ -1,3 +1,4 @@ +#TODO make glew work [source] git = "https://github.com/jackpot51/ppsspp" @@ -10,6 +11,7 @@ dependencies = [ "mesa-glu", "sdl2", "zlib", + "glew", ] script = """ COOKBOOK_CONFIGURE="cmake" diff --git a/recipes/wip/emulators/rpcs3/recipe.toml b/recipes/wip/emulators/rpcs3/recipe.toml index f7b04643..e5b282ba 100644 --- a/recipes/wip/emulators/rpcs3/recipe.toml +++ b/recipes/wip/emulators/rpcs3/recipe.toml @@ -1,4 +1,5 @@ #TODO probably wrong script, see https://github.com/RPCS3/rpcs3/blob/master/BUILDING.md#linux-1 +#TODO make all dependencies work # customization - https://wiki.rpcs3.net/index.php?title=Help:Building_RPCS3#CMake_Build_Options [source] git = "https://github.com/RPCS3/rpcs3" diff --git a/recipes/wip/emulators/snes9x/recipe.toml b/recipes/wip/emulators/snes9x/recipe.toml index 277836b8..a44ada03 100644 --- a/recipes/wip/emulators/snes9x/recipe.toml +++ b/recipes/wip/emulators/snes9x/recipe.toml @@ -1,4 +1,5 @@ #TODO probably wrong script, see https://github.com/snes9xgit/snes9x/wiki/Compiling +#TODO make gtk3 work [source] git = "https://github.com/snes9xgit/snes9x" rev = "8b82d487937d9ea39f7229d280c6f6686c415fe7" diff --git a/recipes/wip/emulators/uoyabause/recipe.toml b/recipes/wip/emulators/uoyabause/recipe.toml index 9d121e25..364d6e97 100644 --- a/recipes/wip/emulators/uoyabause/recipe.toml +++ b/recipes/wip/emulators/uoyabause/recipe.toml @@ -1,4 +1,5 @@ #TODO missing script for CMake, see https://github.com/devmiyax/yabause/blob/master/yabause/README.LIN#L77 +#TODO make gtk2 work [source] git = "https://github.com/devmiyax/yabause" [build] diff --git a/recipes/wip/emulators/vita3k/recipe.toml b/recipes/wip/emulators/vita3k/recipe.toml index 3bd64755..6a3ada92 100644 --- a/recipes/wip/emulators/vita3k/recipe.toml +++ b/recipes/wip/emulators/vita3k/recipe.toml @@ -1,4 +1,5 @@ #TODO probalby wrong script, see https://github.com/Vita3K/Vita3K/blob/master/building.md#linux +#TODO make gtk3 work [source] git = "https://github.com/Vita3K/Vita3K" [build] diff --git a/recipes/wip/emulators/wine-stable/recipe.toml b/recipes/wip/emulators/wine-stable/recipe.toml index c92e6520..db23382e 100644 --- a/recipes/wip/emulators/wine-stable/recipe.toml +++ b/recipes/wip/emulators/wine-stable/recipe.toml @@ -1,4 +1,5 @@ -#TODO make dependencies work +#TODO make all dependencies work +#TODO does it use gtk3 for winecfg? [source] tar = "https://dl.winehq.org/wine/source/9.0/wine-9.0.tar.xz" [build] @@ -12,6 +13,5 @@ dependencies = [ "gstreamer", "sdl2", "eudev", - "libx11", "libvulkan", ] diff --git a/recipes/wip/emulators/xemu/recipe.toml b/recipes/wip/emulators/xemu/recipe.toml index a27afed6..dbcb31de 100644 --- a/recipes/wip/emulators/xemu/recipe.toml +++ b/recipes/wip/emulators/xemu/recipe.toml @@ -1,4 +1,5 @@ #TODO probably wrong template, see https://xemu.app/docs/dev/building-from-source/#linux +#TODO make all dependencies work #TODO maybe require patches on submodules [source] tar = "https://github.com/xemu-project/xemu/releases/download/v0.7.117/src.tar.gz" diff --git a/recipes/wip/emulators/xenia/recipe.toml b/recipes/wip/emulators/xenia/recipe.toml index 8b2dc8fb..378d62f2 100644 --- a/recipes/wip/emulators/xenia/recipe.toml +++ b/recipes/wip/emulators/xenia/recipe.toml @@ -1,4 +1,5 @@ #TODO missing script for building, see https://github.com/xenia-project/xenia/blob/master/docs/building.md#linux +#TODO make all dependencies work [source] git = "https://github.com/xenia-project/xenia" [build] @@ -10,6 +11,5 @@ dependencies = [ "lz4", "libunwind", "libpthread-stubs", - "libx11", "libvulkan", ] diff --git a/recipes/wip/libs/glfw3/recipe.toml b/recipes/wip/libs/glfw3/recipe.toml index f4fa25d7..f207313b 100644 --- a/recipes/wip/libs/glfw3/recipe.toml +++ b/recipes/wip/libs/glfw3/recipe.toml @@ -1,11 +1,11 @@ #TODO probably wrong script, see https://www.glfw.org/docs/latest/compile.html +#TODO port to orbital [source] git = "https://github.com/glfw/glfw" rev = "e2c92645460f680fd272fd2eed591efb2be7dc31" [build] template = "custom" dependencies = [ - "libwayland", "libxkbcommon", ] script = """ diff --git a/recipes/wip/libs/gtk2/recipe.toml b/recipes/wip/libs/gtk2/recipe.toml index 377c4f87..679afcd0 100644 --- a/recipes/wip/libs/gtk2/recipe.toml +++ b/recipes/wip/libs/gtk2/recipe.toml @@ -1,5 +1,5 @@ #TODO probably missing dependencies -#TODO port to Orbital +#TODO port to orbital [source] tar = "https://download.gnome.org/sources/gtk%2B/2.24/gtk%2B-2.24.33.tar.xz" [build] diff --git a/recipes/wip/libs/gtk3/recipe.toml b/recipes/wip/libs/gtk3/recipe.toml index 0172cb38..9c7b321b 100644 --- a/recipes/wip/libs/gtk3/recipe.toml +++ b/recipes/wip/libs/gtk3/recipe.toml @@ -1,5 +1,5 @@ #TODO probably missing dependencies, see https://docs.gtk.org/gtk3/building.html#dependencies -#TODO port to Orbital +#TODO port to orbital [source] tar = "https://download.gnome.org/sources/gtk+/3.24/gtk%2B-3.24.37.tar.xz" [build] @@ -14,6 +14,5 @@ dependencies = [ "gobject-introspection", "shared-mime-info", "graphene", - "libwayland", "gstreamer", ] diff --git a/recipes/wip/libs/gtk4/recipe.toml b/recipes/wip/libs/gtk4/recipe.toml index 9212093f..d4ec7848 100644 --- a/recipes/wip/libs/gtk4/recipe.toml +++ b/recipes/wip/libs/gtk4/recipe.toml @@ -1,5 +1,5 @@ #TODO missing script for Meson, see https://docs.gtk.org/gtk4/building.html -#TODO port to Orbital +#TODO port to orbital [source] tar = "https://download.gnome.org/sources/gtk/4.11/gtk-4.11.2.tar.xz" [build] @@ -14,7 +14,6 @@ dependencies = [ "gobject-introspection", "shared-mime-info", "graphene", - "libwayland", "libxkbcommon", "gstreamer", ] diff --git a/recipes/wip/libs/libdecor/recipe.toml b/recipes/wip/libs/libdecor/recipe.toml index 5b842b01..d828692d 100644 --- a/recipes/wip/libs/libdecor/recipe.toml +++ b/recipes/wip/libs/libdecor/recipe.toml @@ -1,4 +1,5 @@ #TODO missing script for Meson, see https://gitlab.freedesktop.org/libdecor/libdecor#build-install +#TODO port to orbital [source] tar = "https://gitlab.freedesktop.org/libdecor/libdecor/uploads/ee5ef0f2c3a4743e8501a855d61cb397/libdecor-0.1.1.tar.xz" [build] @@ -6,6 +7,5 @@ template = "custom" dependencies = [ "cairo", "pango", - "libwayland", "dbus", ] diff --git a/recipes/wip/libs/libvulkan/recipe.toml b/recipes/wip/libs/libvulkan/recipe.toml index 57d35241..23a72a2d 100644 --- a/recipes/wip/libs/libvulkan/recipe.toml +++ b/recipes/wip/libs/libvulkan/recipe.toml @@ -1,13 +1,12 @@ #TODO probably wrong script, see https://github.com/KhronosGroup/Vulkan-Loader/blob/main/BUILD.md +#TODO port to orbital [source] git = "https://github.com/KhronosGroup/Vulkan-Loader" rev = "cf1a1eff115465b2425d287bef1e94ca62b0de1b" [build] template = "custom" dependencies = [ - "libwayland", "libxkbcommon", - "libx11", ] script = """ COOKBOOK_CONFIGURE="cmake" diff --git a/recipes/wip/libs/webkitgtk3/recipe.toml b/recipes/wip/libs/webkitgtk3/recipe.toml index 9dfcae28..2c9c60a5 100644 --- a/recipes/wip/libs/webkitgtk3/recipe.toml +++ b/recipes/wip/libs/webkitgtk3/recipe.toml @@ -1,4 +1,5 @@ #TODO missing script for CMake and Ninja, see https://trac.webkit.org/wiki/BuildingGtk#BuildingWebKitGTKfromareleasetarball +#TODO port to orbital #TODO missing dependencies, see https://archlinux.org/packages/extra/x86_64/webkitgtk-6.0/ [source] tar = "https://webkitgtk.org/releases/webkitgtk-2.42.2.tar.xz" @@ -19,7 +20,6 @@ dependencies = [ "libpng", "libwebp", "libxml2", - "libwayland", "zlib", "sqlite3", ] diff --git a/recipes/wip/libs/webkitgtk4/recipe.toml b/recipes/wip/libs/webkitgtk4/recipe.toml index 80442ab8..f0308688 100644 --- a/recipes/wip/libs/webkitgtk4/recipe.toml +++ b/recipes/wip/libs/webkitgtk4/recipe.toml @@ -1,4 +1,5 @@ #TODO missing script for CMake and Ninja, see https://trac.webkit.org/wiki/BuildingGtk#BuildingWebKitGTKfromareleasetarball +#TODO port to orbital #TODO missing dependencies, see https://archlinux.org/packages/extra/x86_64/webkitgtk-6.0/ [source] tar = "https://webkitgtk.org/releases/webkitgtk-2.42.2.tar.xz" @@ -19,7 +20,6 @@ dependencies = [ "libpng", "libwebp", "libxml2", - "libwayland", "zlib", "sqlite3", ] diff --git a/recipes/wip/net/telegram-desktop/recipe.toml b/recipes/wip/net/telegram-desktop/recipe.toml index 6fe9c223..4774399b 100644 --- a/recipes/wip/net/telegram-desktop/recipe.toml +++ b/recipes/wip/net/telegram-desktop/recipe.toml @@ -1,10 +1,10 @@ #TODO probably wrong script, lacking build instructions +#TODO port to orbital [source] tar = "https://github.com/telegramdesktop/tdesktop/releases/download/v4.11.6/tdesktop-4.11.6-full.tar.gz" [build] template = "custom" dependencies = [ - "qt6-wayland", "qt6-svg", "qt6-imageformats", "fontconfig", diff --git a/recipes/wip/office/libreoffice/recipe.toml b/recipes/wip/office/libreoffice/recipe.toml index a10532e3..976ee216 100644 --- a/recipes/wip/office/libreoffice/recipe.toml +++ b/recipes/wip/office/libreoffice/recipe.toml @@ -1,4 +1,5 @@ #TODO missing dependencies, see https://wiki.documentfoundation.org/Development/BuildingOnLinux#Build_dependencies +#TODO port to orbital [source] tar = "https://download.documentfoundation.org/libreoffice/src/7.6.2/libreoffice-7.6.2.1.tar.xz?idx=1" [build] @@ -10,7 +11,6 @@ dependencies = [ "gtk3", "nss", "fontconfig", - "xwayland", "gstreamer", "libcups", ] From acd554c965cf245a5bdc28a9ecc69b04dd5a266f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 15 Jun 2024 16:11:43 +0000 Subject: [PATCH 1908/3180] Update recipes --- recipes/wip/tools/atuin/recipe.toml | 2 +- recipes/wip/tools/espanso/recipe.toml | 1 + recipes/wip/tools/kodi/recipe.toml | 1 + recipes/wip/tools/obs-studio/recipe.toml | 3 +-- recipes/wip/tools/sued/recipe.toml | 2 +- recipes/wip/tools/wezterm/recipe.toml | 10 ++++++++-- recipes/wip/tui/russ/recipe.toml | 2 +- recipes/wip/web/chromium/recipe.toml | 2 +- recipes/wip/web/firefox-esr/recipe.toml | 1 + 9 files changed, 16 insertions(+), 8 deletions(-) diff --git a/recipes/wip/tools/atuin/recipe.toml b/recipes/wip/tools/atuin/recipe.toml index 02e3054c..a55fc5cd 100644 --- a/recipes/wip/tools/atuin/recipe.toml +++ b/recipes/wip/tools/atuin/recipe.toml @@ -1,4 +1,4 @@ -#TODO require Wayland +#TODO port to orbital [source] git = "https://github.com/ellie/atuin" [build] diff --git a/recipes/wip/tools/espanso/recipe.toml b/recipes/wip/tools/espanso/recipe.toml index 354025c4..826c6c53 100644 --- a/recipes/wip/tools/espanso/recipe.toml +++ b/recipes/wip/tools/espanso/recipe.toml @@ -1,4 +1,5 @@ #TODO missing script for building, see https://espanso.org/docs/install/linux/#wayland-compile +#TODO port to orbital? [source] git = "https://github.com/espanso/espanso" [build] diff --git a/recipes/wip/tools/kodi/recipe.toml b/recipes/wip/tools/kodi/recipe.toml index 413e7f5d..7066e3f6 100644 --- a/recipes/wip/tools/kodi/recipe.toml +++ b/recipes/wip/tools/kodi/recipe.toml @@ -1,4 +1,5 @@ #TODO probably wrong script, see https://github.com/xbmc/xbmc/blob/master/docs/README.Linux.md#4-build-kodi +#TODO port to orbital #TODO maybe missing dependencies, see https://archlinux.org/packages/extra/x86_64/kodi/ [source] git = "https://github.com/xbmc/xbmc" diff --git a/recipes/wip/tools/obs-studio/recipe.toml b/recipes/wip/tools/obs-studio/recipe.toml index fa6c0362..accac168 100644 --- a/recipes/wip/tools/obs-studio/recipe.toml +++ b/recipes/wip/tools/obs-studio/recipe.toml @@ -1,4 +1,5 @@ #TODO missing script for CMake, see https://github.com/obsproject/obs-studio/wiki/Building-OBS-Studio +#TODO make all dependencies work #TODO maybe missing dependencies [source] git = "https://github.com/obsproject/obs-studio" @@ -19,11 +20,9 @@ dependencies = [ "x264", "curl", "mbedtls", - "libwayland", "libva", "qt5-base", "qt5-svg", - "qt5-x11extras", "eudev", "pciutils", "libqrcodegenc", diff --git a/recipes/wip/tools/sued/recipe.toml b/recipes/wip/tools/sued/recipe.toml index 08c2168e..a399dac7 100644 --- a/recipes/wip/tools/sued/recipe.toml +++ b/recipes/wip/tools/sued/recipe.toml @@ -1,4 +1,4 @@ -#TODO wayland-commons crate error +#TODO port to orbital [source] git = "https://github.com/That1M8Head/sued" [build] diff --git a/recipes/wip/tools/wezterm/recipe.toml b/recipes/wip/tools/wezterm/recipe.toml index 28f972a1..80a7c0db 100644 --- a/recipes/wip/tools/wezterm/recipe.toml +++ b/recipes/wip/tools/wezterm/recipe.toml @@ -1,9 +1,15 @@ -#TODO probably wrong script, see https://wezfurlong.org/wezterm/install/source.html -#TODO Require Wayland +#TODO port to orbital +#TODO maybe missing dependencies, see https://github.com/wez/wezterm/blob/main/get-deps#L142 [source] git = "https://github.com/wez/wezterm" [build] template = "custom" +dependencies = [ + "mesa", + "fontconfig", + "openssl1", + "libxkbcommon", +] script = """ ./get-deps cookbook_cargo_packages wezterm diff --git a/recipes/wip/tui/russ/recipe.toml b/recipes/wip/tui/russ/recipe.toml index d8c50bc5..5852326f 100644 --- a/recipes/wip/tui/russ/recipe.toml +++ b/recipes/wip/tui/russ/recipe.toml @@ -1,4 +1,4 @@ -#TODO require Wayland (after cargo update) +#TODO port to orbital (after cargo update) [source] git = "https://github.com/ckampfe/russ" [build] diff --git a/recipes/wip/web/chromium/recipe.toml b/recipes/wip/web/chromium/recipe.toml index ee11fea8..6ff67c33 100644 --- a/recipes/wip/web/chromium/recipe.toml +++ b/recipes/wip/web/chromium/recipe.toml @@ -1,6 +1,6 @@ #TODO missing script for building, see https://chromium.googlesource.com/chromium/src/+/main/docs/linux/build_instructions.md +#TODO port to orbital #TODO probably missing dependencies -#TODO require Wayland [source] tar = "https://commondatastorage.googleapis.com/chromium-browser-official/chromium-119.0.6045.123.tar.xz" [build] diff --git a/recipes/wip/web/firefox-esr/recipe.toml b/recipes/wip/web/firefox-esr/recipe.toml index b98e29fd..6443e17a 100644 --- a/recipes/wip/web/firefox-esr/recipe.toml +++ b/recipes/wip/web/firefox-esr/recipe.toml @@ -1,4 +1,5 @@ #TODO probably wrong template, see https://firefox-source-docs.mozilla.org/setup/linux_build.html#build +#TODO make all dependencies work [source] tar = "https://ftp.mozilla.org/pub/firefox/releases/115.4.0esr/linux-x86_64/en-US/firefox-115.4.0esr.tar.bz2" [build] From c48f17efc36bbdefac640678ad636ddd3502090d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 15 Jun 2024 16:43:13 +0000 Subject: [PATCH 1909/3180] Update recipes --- recipes/wip/dev/godot4/recipe.toml | 4 ++-- recipes/wip/games/ship-of-harkinian/recipe.toml | 2 +- recipes/wip/games/vkquake/recipe.toml | 2 +- recipes/wip/games/vkquake2/recipe.toml | 3 +-- recipes/wip/graphics/glou/recipe.toml | 2 +- recipes/wip/graphics/krita/recipe.toml | 3 +-- recipes/wip/libs/fltk/recipe.toml | 4 ++-- recipes/wip/security/cotp/recipe.toml | 5 +---- recipes/wip/security/motus/recipe.toml | 2 +- recipes/wip/sound/pcmg/recipe.toml | 2 +- recipes/wip/tools/cb/recipe.toml | 4 ++-- recipes/wip/tools/cute/recipe.toml | 2 +- recipes/wip/tools/glsl-viewer/recipe.toml | 4 ++-- recipes/wip/tools/iamb/recipe.toml | 2 +- recipes/wip/tools/keepassxc/recipe.toml | 2 +- recipes/wip/tools/mangohud/recipe.toml | 2 +- recipes/wip/tools/odin2/recipe.toml | 2 +- 17 files changed, 21 insertions(+), 26 deletions(-) diff --git a/recipes/wip/dev/godot4/recipe.toml b/recipes/wip/dev/godot4/recipe.toml index 727b56c8..b464adcd 100644 --- a/recipes/wip/dev/godot4/recipe.toml +++ b/recipes/wip/dev/godot4/recipe.toml @@ -1,11 +1,11 @@ #TODO missing script for SCons, see https://docs.godotengine.org/en/stable/contributing/development/compiling/compiling_for_linuxbsd.html +#TODO port to orbital #TODO missing dependencies [source] tar = "https://github.com/godotengine/godot/releases/download/4.1.3-stable/godot-4.1.3-stable.tar.xz" [build] template = "custom" dependencies = [ - "libx11", "mesa", - "mesa_glu", + "mesa-glu", ] diff --git a/recipes/wip/games/ship-of-harkinian/recipe.toml b/recipes/wip/games/ship-of-harkinian/recipe.toml index 4b28cc42..c94e3c2a 100644 --- a/recipes/wip/games/ship-of-harkinian/recipe.toml +++ b/recipes/wip/games/ship-of-harkinian/recipe.toml @@ -1,11 +1,11 @@ #TODO missing script for CMake, see https://github.com/HarbourMasters/Shipwright/blob/develop/docs/BUILDING.md#linux +#TODO port to orbital? [source] git = "https://github.com/HarbourMasters/Shipwright" rev = "818addfdda660f6b4b54edd19636d6fd9d839f28" [build] template = "custom" dependencies = [ - "libx11", "sdl2", "libpng", "glew", diff --git a/recipes/wip/games/vkquake/recipe.toml b/recipes/wip/games/vkquake/recipe.toml index 34eb0db6..9131a309 100644 --- a/recipes/wip/games/vkquake/recipe.toml +++ b/recipes/wip/games/vkquake/recipe.toml @@ -1,4 +1,5 @@ #TODO missing script for Meson, see https://github.com/Novum/vkQuake#linux-1 +#TODO port to orbital? [source] git = "https://github.com/Novum/vkQuake" [build] @@ -7,6 +8,5 @@ dependencies = [ "sdl2", "libvulkan", "libvorbis", - "libx11", "libmad", ] diff --git a/recipes/wip/games/vkquake2/recipe.toml b/recipes/wip/games/vkquake2/recipe.toml index 5aef8b98..05bffe14 100644 --- a/recipes/wip/games/vkquake2/recipe.toml +++ b/recipes/wip/games/vkquake2/recipe.toml @@ -1,4 +1,5 @@ #TODO missing script for "make", see https://github.com/kondrak/vkQuake2#linux +#TODO port to orbital [source] git = "https://github.com/kondrak/vkQuake2" rev = "bdd39b142fbadf581fd9d904968a83fb9b4a929a" @@ -6,6 +7,4 @@ rev = "bdd39b142fbadf581fd9d904968a83fb9b4a929a" template = "custom" dependencies = [ "mesa", - "libx11", - "libxcb", ] diff --git a/recipes/wip/graphics/glou/recipe.toml b/recipes/wip/graphics/glou/recipe.toml index 646f237e..dd3e9ea2 100644 --- a/recipes/wip/graphics/glou/recipe.toml +++ b/recipes/wip/graphics/glou/recipe.toml @@ -1,4 +1,4 @@ -#TODO x11rb crate error +#TODO port to orbital [source] git = "https://github.com/Nurrl/glou" [build] diff --git a/recipes/wip/graphics/krita/recipe.toml b/recipes/wip/graphics/krita/recipe.toml index 34360573..85a19655 100644 --- a/recipes/wip/graphics/krita/recipe.toml +++ b/recipes/wip/graphics/krita/recipe.toml @@ -1,4 +1,5 @@ #TODO probably wrong script, see https://docs.krita.org/en/untranslatable_pages/building_krita.html#building-on-linux +#TODO port to orbital #TODO maybe missing dependencies [source] tar = "https://download.kde.org/stable/krita/5.2.1/krita-5.2.1.tar.gz" @@ -19,7 +20,6 @@ dependencies = [ "libwebp", "qt5-base", "qt5-svg", - "qt5-x11extras", "zlib", "libmypaint", "boost", @@ -41,7 +41,6 @@ dependencies = [ "openexr", "openjpeg", "sdl2", - "libxcb", "libxi", "zlib", "libeigen", diff --git a/recipes/wip/libs/fltk/recipe.toml b/recipes/wip/libs/fltk/recipe.toml index c2e062dc..35895114 100644 --- a/recipes/wip/libs/fltk/recipe.toml +++ b/recipes/wip/libs/fltk/recipe.toml @@ -1,4 +1,5 @@ #TODO probably wrong script, see https://github.com/fltk/fltk/blob/master/README.Unix.txt +#TODO port to orbital [source] tar = "https://www.fltk.org/pub/fltk/1.3.8/fltk-1.3.8-source.tar.bz2" [build] @@ -6,12 +7,11 @@ template = "configure" dependencies = [ "mesa-glu", "freeglut", - "cairo" + "cairo", "fontconfig", "glew", "libjpeg", "libpng", "pango", "zlib", - "libx11", ] diff --git a/recipes/wip/security/cotp/recipe.toml b/recipes/wip/security/cotp/recipe.toml index 9d783b91..db61713b 100644 --- a/recipes/wip/security/cotp/recipe.toml +++ b/recipes/wip/security/cotp/recipe.toml @@ -1,11 +1,8 @@ -#TODO make dependencies work +#TODO port to orbital [source] git = "https://github.com/replydev/cotp" [build] template = "cargo" dependencies = [ - "libxcb", - "libx11", - "libxfixes", "libxkbcommon", ] diff --git a/recipes/wip/security/motus/recipe.toml b/recipes/wip/security/motus/recipe.toml index 1ab9b6ad..f42ede33 100644 --- a/recipes/wip/security/motus/recipe.toml +++ b/recipes/wip/security/motus/recipe.toml @@ -1,4 +1,4 @@ -#TODO x11rb crate error +#TODO port to orbital [source] git = "https://github.com/oleiade/motus" [build] diff --git a/recipes/wip/sound/pcmg/recipe.toml b/recipes/wip/sound/pcmg/recipe.toml index c5186fcd..542b7cce 100644 --- a/recipes/wip/sound/pcmg/recipe.toml +++ b/recipes/wip/sound/pcmg/recipe.toml @@ -1,4 +1,4 @@ -#TODO x11rb crate error +#TODO port to orbital #TODO require WebAssembly [source] git = "https://github.com/JohnDowson/pcmg" diff --git a/recipes/wip/tools/cb/recipe.toml b/recipes/wip/tools/cb/recipe.toml index 1b7ee865..16dd19db 100644 --- a/recipes/wip/tools/cb/recipe.toml +++ b/recipes/wip/tools/cb/recipe.toml @@ -1,5 +1,5 @@ -#TODO missing script for "make", see https://github.com/yaa110/cb#build-manually -#TODO add the X11 libraries +#TODO figure out how to build this, see https://github.com/yaa110/cb#build-manually +#TODO port to orbital [source] git = "https://github.com/yaa110/cb" [build] diff --git a/recipes/wip/tools/cute/recipe.toml b/recipes/wip/tools/cute/recipe.toml index ce07247e..82217cd6 100644 --- a/recipes/wip/tools/cute/recipe.toml +++ b/recipes/wip/tools/cute/recipe.toml @@ -1,4 +1,4 @@ -#TODO x11rb crate error +#TODO port to orbital [source] git = "https://github.com/PThorpe92/CuTE" [build] diff --git a/recipes/wip/tools/glsl-viewer/recipe.toml b/recipes/wip/tools/glsl-viewer/recipe.toml index f5d95190..a844dbfe 100644 --- a/recipes/wip/tools/glsl-viewer/recipe.toml +++ b/recipes/wip/tools/glsl-viewer/recipe.toml @@ -1,5 +1,5 @@ -#TODO missing script for CMake, see https://github.com/patriciogonzalezvivo/glslViewer/wiki/Compile-on-linux#3-compile -#TODO determine the X11 libraries +#TODO missing script for cmake, see https://github.com/patriciogonzalezvivo/glslViewer/wiki/Compile-on-linux#3-compile +#TODO port to orbital [source] git = "https://github.com/patriciogonzalezvivo/glslViewer" rev = "7eb6254cb4cedf03f1c78653f90905fe0c3b48fb" diff --git a/recipes/wip/tools/iamb/recipe.toml b/recipes/wip/tools/iamb/recipe.toml index 92a67f27..03934316 100644 --- a/recipes/wip/tools/iamb/recipe.toml +++ b/recipes/wip/tools/iamb/recipe.toml @@ -1,4 +1,4 @@ -#TODO x11rb crate error (after a patch on ring) +#TODO port to orbital (after a patch on ring) [source] git = "https://github.com/ulyssa/iamb" [build] diff --git a/recipes/wip/tools/keepassxc/recipe.toml b/recipes/wip/tools/keepassxc/recipe.toml index 3efeb2ee..ab1148bd 100644 --- a/recipes/wip/tools/keepassxc/recipe.toml +++ b/recipes/wip/tools/keepassxc/recipe.toml @@ -1,4 +1,5 @@ #TODO probably wrong script, see https://github.com/keepassxreboot/keepassxc/wiki/Building-KeePassXC#linux +#TODO port to orbital #TODO probably missing dependencies, see https://github.com/keepassxreboot/keepassxc/wiki/Set-up-Build-Environment-on-Linux#install-the-required-dependencies [source] tar = "https://github.com/keepassxreboot/keepassxc/releases/download/2.7.6/keepassxc-2.7.6-src.tar.xz" @@ -7,7 +8,6 @@ template = "custom" dependencies = [ "qt5-base", "qt5-svg", - "qt5-x11extras", "zlib", "libbotan", "libargon2", diff --git a/recipes/wip/tools/mangohud/recipe.toml b/recipes/wip/tools/mangohud/recipe.toml index 1ddb7f9b..83480f5a 100644 --- a/recipes/wip/tools/mangohud/recipe.toml +++ b/recipes/wip/tools/mangohud/recipe.toml @@ -1,9 +1,9 @@ #TODO missing script for Meson, see https://github.com/flightlessmango/MangoHud#installation---build-from-source +#TODO port to orbital [source] tar = "https://github.com/flightlessmango/MangoHud/releases/download/v0.7.0/MangoHud-v0.7.0-Source.tar.xz" [build] template = "custom" dependencies = [ "mesa", - "libx11", ] diff --git a/recipes/wip/tools/odin2/recipe.toml b/recipes/wip/tools/odin2/recipe.toml index d66d5669..460de896 100644 --- a/recipes/wip/tools/odin2/recipe.toml +++ b/recipes/wip/tools/odin2/recipe.toml @@ -1,4 +1,5 @@ #TODO missing script for CMake, see https://github.com/TheWaveWarden/odin2#all-platforms +#TODO port to orbital [source] git = "https://github.com/TheWaveWarden/odin2" [build] @@ -6,6 +7,5 @@ template = "custom" dependencies = [ "mesa", "curl", - "libx11", "webkitgtk3", ] From 9f4b3b59561ae91c5e1c98bc160c084d1d285374 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 15 Jun 2024 16:45:52 +0000 Subject: [PATCH 1910/3180] Update recipes --- recipes/wip/{tools => sound}/odin2/recipe.toml | 0 recipes/wip/tools/weylus/recipe.toml | 14 +------------- recipes/wip/tui/heh/recipe.toml | 2 +- recipes/wip/video/mpv/recipe.toml | 2 +- 4 files changed, 3 insertions(+), 15 deletions(-) rename recipes/wip/{tools => sound}/odin2/recipe.toml (100%) diff --git a/recipes/wip/tools/odin2/recipe.toml b/recipes/wip/sound/odin2/recipe.toml similarity index 100% rename from recipes/wip/tools/odin2/recipe.toml rename to recipes/wip/sound/odin2/recipe.toml diff --git a/recipes/wip/tools/weylus/recipe.toml b/recipes/wip/tools/weylus/recipe.toml index 6d7f2209..0135c10d 100644 --- a/recipes/wip/tools/weylus/recipe.toml +++ b/recipes/wip/tools/weylus/recipe.toml @@ -1,4 +1,4 @@ -#TODO port to redox +#TODO port to orbital #TODO build instructions - https://github.com/H-M-H/Weylus#building [source] git = "https://github.com/H-M-H/Weylus" @@ -8,18 +8,6 @@ dependencies = [ "pango", "gstreamer", "dbus", - "libx11", - "libxext", - "libxft", - "libxinerama", - "libxcursor", - "libxi", - "libxv", - "libxfixes", - "libxtst", - "libxrender", - "libxrandr", - "libxcomposite", ] script = """ cookbook_cargo_packages weylus diff --git a/recipes/wip/tui/heh/recipe.toml b/recipes/wip/tui/heh/recipe.toml index 6da963ed..9ebaec0f 100644 --- a/recipes/wip/tui/heh/recipe.toml +++ b/recipes/wip/tui/heh/recipe.toml @@ -1,4 +1,4 @@ -#TODO x11rb crate error +#TODO port to orbital [source] git = "https://github.com/ndd7xv/heh" [build] diff --git a/recipes/wip/video/mpv/recipe.toml b/recipes/wip/video/mpv/recipe.toml index 1f6ebd58..b3068129 100644 --- a/recipes/wip/video/mpv/recipe.toml +++ b/recipes/wip/video/mpv/recipe.toml @@ -1,4 +1,5 @@ #TODO missing script for Meson (use system libraries), see https://github.com/mpv-player/mpv#compilation +#TODO port to orbital #TODO missing dependencies [source] git = "https://github.com/mpv-player/mpv" @@ -12,6 +13,5 @@ dependencies = [ "libiconv", "zlib", "mesa", - "libx11", "pulseaudio", ] From 0acb581886b41e07261cb4a6953140c86b9030d9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 15 Jun 2024 20:28:43 +0000 Subject: [PATCH 1911/3180] Add a recipe --- recipes/wip/benchmarks/simple-disk-benchmark/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/wip/benchmarks/simple-disk-benchmark/recipe.toml diff --git a/recipes/wip/benchmarks/simple-disk-benchmark/recipe.toml b/recipes/wip/benchmarks/simple-disk-benchmark/recipe.toml new file mode 100644 index 00000000..7c71bfd4 --- /dev/null +++ b/recipes/wip/benchmarks/simple-disk-benchmark/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/schwa/simple-disk-benchmark-rs" +[build] +template = "cargo" From e0e684f751a55709d6c96a78707239579b0598ea Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 15 Jun 2024 20:45:49 +0000 Subject: [PATCH 1912/3180] Update recipes --- recipes/wip/benchmarks/simple-disk-benchmark/recipe.toml | 2 +- recipes/wip/demos/bevy-engine/recipe.toml | 2 +- recipes/wip/demos/termtree/recipe.toml | 2 +- recipes/wip/games/turdle/recipe.toml | 3 +++ 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/recipes/wip/benchmarks/simple-disk-benchmark/recipe.toml b/recipes/wip/benchmarks/simple-disk-benchmark/recipe.toml index 7c71bfd4..64101a1e 100644 --- a/recipes/wip/benchmarks/simple-disk-benchmark/recipe.toml +++ b/recipes/wip/benchmarks/simple-disk-benchmark/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO source code error [source] git = "https://github.com/schwa/simple-disk-benchmark-rs" [build] diff --git a/recipes/wip/demos/bevy-engine/recipe.toml b/recipes/wip/demos/bevy-engine/recipe.toml index bc63618b..a314e072 100644 --- a/recipes/wip/demos/bevy-engine/recipe.toml +++ b/recipes/wip/demos/bevy-engine/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO async-io crate error [source] git = "https://github.com/bevyengine/bevy" [build] diff --git a/recipes/wip/demos/termtree/recipe.toml b/recipes/wip/demos/termtree/recipe.toml index 846d2588..d23b074f 100644 --- a/recipes/wip/demos/termtree/recipe.toml +++ b/recipes/wip/demos/termtree/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/rust-cli/termtree" [build] diff --git a/recipes/wip/games/turdle/recipe.toml b/recipes/wip/games/turdle/recipe.toml index d7d1fb96..2174e97d 100644 --- a/recipes/wip/games/turdle/recipe.toml +++ b/recipes/wip/games/turdle/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/weiteck/turdle" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 52ff1d46a157c7948826432023f341dc881d020f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 15 Jun 2024 21:00:12 +0000 Subject: [PATCH 1913/3180] Update TODOs --- recipes/wip/games/turdle/recipe.toml | 2 +- recipes/wip/science/simpleaf/recipe.toml | 2 +- recipes/wip/tools/qrtool/recipe.toml | 2 +- recipes/wip/tools/ripgrep-all/recipe.toml | 2 +- recipes/wip/tools/rsftch/recipe.toml | 2 +- recipes/wip/tui/tui-slides/recipe.toml | 2 +- recipes/wip/web/sitesmith/recipe.toml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/recipes/wip/games/turdle/recipe.toml b/recipes/wip/games/turdle/recipe.toml index 2174e97d..a04c923f 100644 --- a/recipes/wip/games/turdle/recipe.toml +++ b/recipes/wip/games/turdle/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/weiteck/turdle" [build] diff --git a/recipes/wip/science/simpleaf/recipe.toml b/recipes/wip/science/simpleaf/recipe.toml index af212504..d530364a 100644 --- a/recipes/wip/science/simpleaf/recipe.toml +++ b/recipes/wip/science/simpleaf/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO faccess crate error [source] git = "https://github.com/COMBINE-lab/simpleaf" [build] diff --git a/recipes/wip/tools/qrtool/recipe.toml b/recipes/wip/tools/qrtool/recipe.toml index 1820db69..5302949c 100644 --- a/recipes/wip/tools/qrtool/recipe.toml +++ b/recipes/wip/tools/qrtool/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/sorairolake/qrtool" [build] diff --git a/recipes/wip/tools/ripgrep-all/recipe.toml b/recipes/wip/tools/ripgrep-all/recipe.toml index 1641ebef..fca4e028 100644 --- a/recipes/wip/tools/ripgrep-all/recipe.toml +++ b/recipes/wip/tools/ripgrep-all/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO tokio-tar crate error [source] git = "https://github.com/phiresky/ripgrep-all" [build] diff --git a/recipes/wip/tools/rsftch/recipe.toml b/recipes/wip/tools/rsftch/recipe.toml index 214b2cfb..e0758a6e 100644 --- a/recipes/wip/tools/rsftch/recipe.toml +++ b/recipes/wip/tools/rsftch/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO source code error [source] git = "https://github.com/charklie/rsftch" [build] diff --git a/recipes/wip/tui/tui-slides/recipe.toml b/recipes/wip/tui/tui-slides/recipe.toml index 63707f65..beb21820 100644 --- a/recipes/wip/tui/tui-slides/recipe.toml +++ b/recipes/wip/tui/tui-slides/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO camino crate error [source] git = "https://github.com/Chleba/tui-slides" [build] diff --git a/recipes/wip/web/sitesmith/recipe.toml b/recipes/wip/web/sitesmith/recipe.toml index dee6cf79..9cfc38cd 100644 --- a/recipes/wip/web/sitesmith/recipe.toml +++ b/recipes/wip/web/sitesmith/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/BradenEverson/sitesmith" [build] From df50b6fa30a8a7e9108e1317904742170c77f914 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sun, 16 Jun 2024 16:57:56 +0200 Subject: [PATCH 1914/3180] Move drivers to /usr/lib/drivers --- recipes/core/drivers-initfs/recipe.toml | 11 +++++++++-- recipes/core/drivers/recipe.toml | 15 ++++++--------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/recipes/core/drivers-initfs/recipe.toml b/recipes/core/drivers-initfs/recipe.toml index 74a1f482..8baa45ab 100644 --- a/recipes/core/drivers-initfs/recipe.toml +++ b/recipes/core/drivers-initfs/recipe.toml @@ -52,7 +52,7 @@ case "${TARGET}" in ;; esac -mkdir -pv "${COOKBOOK_STAGE}/bin" +mkdir -pv "${COOKBOOK_STAGE}/bin" "${COOKBOOK_STAGE}/lib/drivers" export CARGO_PROFILE_RELEASE_OPT_LEVEL=s export CARGO_PROFILE_RELEASE_PANIC=abort "${COOKBOOK_CARGO}" build --release \ @@ -60,7 +60,14 @@ export CARGO_PROFILE_RELEASE_PANIC=abort $(for bin in "${BINS[@]}"; do echo "-p" "${bin}"; done) for bin in "${BINS[@]}" do - cp -v "target/${TARGET}/release/${bin}" "${COOKBOOK_STAGE}/bin" + case "${bin}" in + pcid | fbcond | inputd | vesad | lived | ps2d | acpid) + cp -v "target/${TARGET}/release/${bin}" "${COOKBOOK_STAGE}/bin" + ;; + *) + cp -v "target/${TARGET}/release/${bin}" "${COOKBOOK_STAGE}/lib/drivers" + ;; + esac done mkdir -pv "${COOKBOOK_STAGE}/etc/pcid" diff --git a/recipes/core/drivers/recipe.toml b/recipes/core/drivers/recipe.toml index 84619553..f9828931 100644 --- a/recipes/core/drivers/recipe.toml +++ b/recipes/core/drivers/recipe.toml @@ -33,7 +33,7 @@ case "${TARGET}" in esac #Build each driver in the list -mkdir -pv "${COOKBOOK_STAGE}/bin" +mkdir -pv "${COOKBOOK_STAGE}/usr/bin" "${COOKBOOK_STAGE}/usr/lib/drivers" export CARGO_PROFILE_RELEASE_OPT_LEVEL=s export CARGO_PROFILE_RELEASE_PANIC=abort "${COOKBOOK_CARGO}" build --release \ @@ -41,16 +41,13 @@ export CARGO_PROFILE_RELEASE_PANIC=abort $(for bin in "${BINS[@]}"; do echo "-p" "${bin}"; done) for bin in "${BINS[@]}" do - cp -v "target/${TARGET}/release/${bin}" "${COOKBOOK_STAGE}/bin" + if [[ "${bin}" == "pcid" ]]; then + cp -v "target/${TARGET}/release/${bin}" "${COOKBOOK_STAGE}/usr/bin" + else + cp -v "target/${TARGET}/release/${bin}" "${COOKBOOK_STAGE}/usr/lib/drivers" + fi done -mkdir -pv "${COOKBOOK_STAGE}/bin" -${FIND} "target/${TARGET}/release" \ - -maxdepth 1 \ - -executable \ - -type f \ - -exec cp -v {} "${COOKBOOK_STAGE}/bin/" ';' - mkdir -pv "${COOKBOOK_STAGE}/etc/pcid" cp -v "${COOKBOOK_SOURCE}/initfs.toml" "${COOKBOOK_STAGE}/etc/pcid/initfs.toml" From 840463bc28abedb6cacae1253336bdc66803c934 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 18 Jun 2024 20:53:24 +0000 Subject: [PATCH 1915/3180] Add recipes --- recipes/wip/shells/brush/recipe.toml | 8 ++++++++ recipes/wip/web/gosub/recipe.toml | 9 +++++++++ 2 files changed, 17 insertions(+) create mode 100644 recipes/wip/shells/brush/recipe.toml create mode 100644 recipes/wip/web/gosub/recipe.toml diff --git a/recipes/wip/shells/brush/recipe.toml b/recipes/wip/shells/brush/recipe.toml new file mode 100644 index 00000000..1a0ce04b --- /dev/null +++ b/recipes/wip/shells/brush/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/reubeno/brush" +[build] +template = "custom" +script = """ +cookbook_cargo_packages brush-shell +""" diff --git a/recipes/wip/web/gosub/recipe.toml b/recipes/wip/web/gosub/recipe.toml new file mode 100644 index 00000000..c4452465 --- /dev/null +++ b/recipes/wip/web/gosub/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/gosub-browser/gosub-engine" +[build] +template = "custom" +script = """ +cookbook_cargo --bin gosub-parser css3-parser renderer \ +style-parser +""" From 3c4a0d35dd983a4129a6e688cc8110544201a9a5 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 18 Jun 2024 21:13:11 +0000 Subject: [PATCH 1916/3180] Update recipes --- recipes/wip/shells/brush/recipe.toml | 2 +- recipes/wip/web/gosub/recipe.toml | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/recipes/wip/shells/brush/recipe.toml b/recipes/wip/shells/brush/recipe.toml index 1a0ce04b..4a2f0a57 100644 --- a/recipes/wip/shells/brush/recipe.toml +++ b/recipes/wip/shells/brush/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO redox is not supported by the procfs crate [source] git = "https://github.com/reubeno/brush" [build] diff --git a/recipes/wip/web/gosub/recipe.toml b/recipes/wip/web/gosub/recipe.toml index c4452465..592a2678 100644 --- a/recipes/wip/web/gosub/recipe.toml +++ b/recipes/wip/web/gosub/recipe.toml @@ -4,6 +4,15 @@ git = "https://github.com/gosub-browser/gosub-engine" [build] template = "custom" script = """ -cookbook_cargo --bin gosub-parser css3-parser renderer \ -style-parser +cookbook_cargo --bin gosub_engine +BINS=( + gosub-parser + css3-parser + renderer + style-parser +) +for bin in "${BINS[@]}" +do + ln -sv gosub_engine "${COOKBOOK_STAGE}/usr/bin/$bin" +done """ From c2c7c7d87d1e8e5f307a485cd19e5fd2760de254 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 18 Jun 2024 21:45:16 +0000 Subject: [PATCH 1917/3180] Update a recipe --- recipes/wip/web/gosub/recipe.toml | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/recipes/wip/web/gosub/recipe.toml b/recipes/wip/web/gosub/recipe.toml index 592a2678..137d23df 100644 --- a/recipes/wip/web/gosub/recipe.toml +++ b/recipes/wip/web/gosub/recipe.toml @@ -1,18 +1,9 @@ -#TODO not compiled or tested +#TODO discover how to build the bins [source] git = "https://github.com/gosub-browser/gosub-engine" [build] template = "custom" script = """ -cookbook_cargo --bin gosub_engine -BINS=( - gosub-parser - css3-parser - renderer - style-parser -) -for bin in "${BINS[@]}" -do - ln -sv gosub_engine "${COOKBOOK_STAGE}/usr/bin/$bin" -done +cookbook_cargo --bin gosub-parser css3-parser renderer \ +style-parser """ From 814848c978cf5e7f6ecc52e92b97433c33036940 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 19 Jun 2024 22:28:36 +0000 Subject: [PATCH 1918/3180] Add recipes --- recipes/wip/dev/mkfs/recipe.toml | 5 +++++ recipes/wip/services/ala-lape/recipe.toml | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 recipes/wip/dev/mkfs/recipe.toml create mode 100644 recipes/wip/services/ala-lape/recipe.toml diff --git a/recipes/wip/dev/mkfs/recipe.toml b/recipes/wip/dev/mkfs/recipe.toml new file mode 100644 index 00000000..c16d9675 --- /dev/null +++ b/recipes/wip/dev/mkfs/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/qtfkwk/mkrs" +[build] +template = "cargo" diff --git a/recipes/wip/services/ala-lape/recipe.toml b/recipes/wip/services/ala-lape/recipe.toml new file mode 100644 index 00000000..429b8963 --- /dev/null +++ b/recipes/wip/services/ala-lape/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://git.madhouse-project.org/algernon/ala-lape" +[build] +template = "cargo" From d249ca28733f7dfecfbe58617bd532dc21278104 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 19 Jun 2024 22:57:25 +0000 Subject: [PATCH 1919/3180] Update a TODO --- recipes/wip/codecs/rav1e/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/codecs/rav1e/recipe.toml b/recipes/wip/codecs/rav1e/recipe.toml index 37083ead..57efb59b 100644 --- a/recipes/wip/codecs/rav1e/recipe.toml +++ b/recipes/wip/codecs/rav1e/recipe.toml @@ -1,4 +1,4 @@ -#TODO libc crate error - RUSAGE_SELF +#TODO "free(): invalid pointer" error [source] git = "https://github.com/xiph/rav1e" [build] From 65df997fc89da0102d9897efe454603e0d1f81aa Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 20 Jun 2024 00:01:11 +0000 Subject: [PATCH 1920/3180] Update TODOs --- recipes/wip/dev/add-determinism/recipe.toml | 2 +- recipes/wip/dev/boon/recipe.toml | 2 +- recipes/wip/dev/cargo-watch/recipe.toml | 2 +- recipes/wip/dev/clippy/recipe.toml | 2 +- recipes/wip/dev/codevis/recipe.toml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/recipes/wip/dev/add-determinism/recipe.toml b/recipes/wip/dev/add-determinism/recipe.toml index 3d645ff8..de6c00d6 100644 --- a/recipes/wip/dev/add-determinism/recipe.toml +++ b/recipes/wip/dev/add-determinism/recipe.toml @@ -1,4 +1,4 @@ -#TODO pyo3-ffi crate error +#TODO source code error [source] git = "https://github.com/keszybz/add-determinism" [build] diff --git a/recipes/wip/dev/boon/recipe.toml b/recipes/wip/dev/boon/recipe.toml index 297beb48..7d040b14 100644 --- a/recipes/wip/dev/boon/recipe.toml +++ b/recipes/wip/dev/boon/recipe.toml @@ -1,4 +1,4 @@ -#TODO libc crate error +#TODO fs_at crate error [source] git = "https://github.com/camchenry/boon" [build] diff --git a/recipes/wip/dev/cargo-watch/recipe.toml b/recipes/wip/dev/cargo-watch/recipe.toml index 69056dcf..c169773e 100644 --- a/recipes/wip/dev/cargo-watch/recipe.toml +++ b/recipes/wip/dev/cargo-watch/recipe.toml @@ -1,4 +1,4 @@ -#TODO xdg-home crate error +#TODO nix crate error [source] git = "https://github.com/watchexec/cargo-watch" [build] diff --git a/recipes/wip/dev/clippy/recipe.toml b/recipes/wip/dev/clippy/recipe.toml index 88ba74e6..e12b00cf 100644 --- a/recipes/wip/dev/clippy/recipe.toml +++ b/recipes/wip/dev/clippy/recipe.toml @@ -1,4 +1,4 @@ -#TODO serde crate error +#TODO camino crate error [source] git = "https://github.com/rust-lang/rust-clippy" [build] diff --git a/recipes/wip/dev/codevis/recipe.toml b/recipes/wip/dev/codevis/recipe.toml index b951a05c..809a6356 100644 --- a/recipes/wip/dev/codevis/recipe.toml +++ b/recipes/wip/dev/codevis/recipe.toml @@ -1,4 +1,4 @@ -#TODO open crate error +#TODO open crate error (after cargo update) [source] git = "https://github.com/sloganking/codevis" [build] From 6a882e192c888c34c0da7aa723ebe678e73361c1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 20 Jun 2024 00:44:44 +0000 Subject: [PATCH 1921/3180] Update TODOs --- recipes/wip/dev/espmonitor/recipe.toml | 2 +- recipes/wip/dev/py-spy/recipe.toml | 2 +- recipes/wip/dev/quicktest/recipe.toml | 2 +- recipes/wip/dev/uv/recipe.toml | 2 +- recipes/wip/emulators/meru/recipe.toml | 2 +- recipes/wip/finance/rex/recipe.toml | 2 +- recipes/wip/games/sshattrick/recipe.toml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/recipes/wip/dev/espmonitor/recipe.toml b/recipes/wip/dev/espmonitor/recipe.toml index 65874488..3281febb 100644 --- a/recipes/wip/dev/espmonitor/recipe.toml +++ b/recipes/wip/dev/espmonitor/recipe.toml @@ -1,4 +1,4 @@ -#TODO termios crate error +#TODO termios crate error (after cargo update) [source] git = "https://github.com/esp-rs/espmonitor" [build] diff --git a/recipes/wip/dev/py-spy/recipe.toml b/recipes/wip/dev/py-spy/recipe.toml index 369a2141..317f587e 100644 --- a/recipes/wip/dev/py-spy/recipe.toml +++ b/recipes/wip/dev/py-spy/recipe.toml @@ -1,4 +1,4 @@ -#TODO proc-maps crate error +#TODO ahash crate error [source] git = "https://github.com/benfred/py-spy" [build] diff --git a/recipes/wip/dev/quicktest/recipe.toml b/recipes/wip/dev/quicktest/recipe.toml index 3d584fe9..15691bc6 100644 --- a/recipes/wip/dev/quicktest/recipe.toml +++ b/recipes/wip/dev/quicktest/recipe.toml @@ -1,4 +1,4 @@ -#TODO serde crate error +#TODO async-io and rustix crates error [source] git = "https://github.com/LuchoBazz/quicktest" [build] diff --git a/recipes/wip/dev/uv/recipe.toml b/recipes/wip/dev/uv/recipe.toml index 92f9eb1d..7284a486 100644 --- a/recipes/wip/dev/uv/recipe.toml +++ b/recipes/wip/dev/uv/recipe.toml @@ -1,4 +1,4 @@ -#TODO pubgrub crate error +#TODO fs2 crate error [source] git = "https://github.com/astral-sh/uv" [build] diff --git a/recipes/wip/emulators/meru/recipe.toml b/recipes/wip/emulators/meru/recipe.toml index 12184349..f2e3106f 100644 --- a/recipes/wip/emulators/meru/recipe.toml +++ b/recipes/wip/emulators/meru/recipe.toml @@ -1,4 +1,4 @@ -#TODO value-bag crate error +#TODO ahash crate error [source] git = "https://github.com/tanakh/meru" [build] diff --git a/recipes/wip/finance/rex/recipe.toml b/recipes/wip/finance/rex/recipe.toml index 7dbf3460..2f335572 100644 --- a/recipes/wip/finance/rex/recipe.toml +++ b/recipes/wip/finance/rex/recipe.toml @@ -1,4 +1,4 @@ -#TODO rex-tui crate error (after cargo update) +#TODO compiled but not tested [source] git = "https://github.com/TheRustyPickle/Rex" [build] diff --git a/recipes/wip/games/sshattrick/recipe.toml b/recipes/wip/games/sshattrick/recipe.toml index 4a046702..2ab51300 100644 --- a/recipes/wip/games/sshattrick/recipe.toml +++ b/recipes/wip/games/sshattrick/recipe.toml @@ -1,4 +1,4 @@ -#TODO curve25519-dalek crate error +#TODO compiled but not tested [source] git = "https://github.com/ricott1/sshattrick" [build] From 6df0e114ce3c36097d48e8d51aa9182ca1f74539 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 20 Jun 2024 01:53:41 +0000 Subject: [PATCH 1922/3180] Update TODOs --- recipes/wip/science/scidataflow/recipe.toml | 2 +- recipes/wip/sound/rustyvibes/recipe.toml | 2 +- recipes/wip/tools/dua/recipe.toml | 2 +- recipes/wip/tools/emplace/recipe.toml | 2 +- recipes/wip/tools/fzf-make/recipe.toml | 2 +- recipes/wip/tools/imager/recipe.toml | 2 +- recipes/wip/tools/just/recipe.toml | 2 +- recipes/wip/tools/matui/recipe.toml | 2 +- recipes/wip/tools/rq/recipe.toml | 2 +- recipes/wip/tools/starship/recipe.toml | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/recipes/wip/science/scidataflow/recipe.toml b/recipes/wip/science/scidataflow/recipe.toml index 7cca4309..2e6146e1 100644 --- a/recipes/wip/science/scidataflow/recipe.toml +++ b/recipes/wip/science/scidataflow/recipe.toml @@ -1,4 +1,4 @@ -#TODO faccess crate error +#TODO async-io and rustix crates error [source] git = "https://github.com/vsbuffalo/scidataflow" [build] diff --git a/recipes/wip/sound/rustyvibes/recipe.toml b/recipes/wip/sound/rustyvibes/recipe.toml index 5c56fb6b..632118e2 100644 --- a/recipes/wip/sound/rustyvibes/recipe.toml +++ b/recipes/wip/sound/rustyvibes/recipe.toml @@ -1,4 +1,4 @@ -#TODO slice-deque crate error +#TODO rdev crate error [source] git = "https://github.com/KunalBagaria/rustyvibes" [build] diff --git a/recipes/wip/tools/dua/recipe.toml b/recipes/wip/tools/dua/recipe.toml index 4a1ca2c9..00d9deb0 100644 --- a/recipes/wip/tools/dua/recipe.toml +++ b/recipes/wip/tools/dua/recipe.toml @@ -1,4 +1,4 @@ -#TODO open crate error +#TODO compiled but not tested [source] git = "https://github.com/Byron/dua-cli" [build] diff --git a/recipes/wip/tools/emplace/recipe.toml b/recipes/wip/tools/emplace/recipe.toml index 511970bc..52384f6a 100644 --- a/recipes/wip/tools/emplace/recipe.toml +++ b/recipes/wip/tools/emplace/recipe.toml @@ -1,4 +1,4 @@ -#TODO sys-info crate error +#TODO camino crate error [source] git = "https://github.com/tversteeg/emplace" [build] diff --git a/recipes/wip/tools/fzf-make/recipe.toml b/recipes/wip/tools/fzf-make/recipe.toml index a6dd4da9..1249c56a 100644 --- a/recipes/wip/tools/fzf-make/recipe.toml +++ b/recipes/wip/tools/fzf-make/recipe.toml @@ -1,4 +1,4 @@ -#TODO termios crate error +#TODO ahash and ioctl-rs crates error [source] git = "https://github.com/kyu08/fzf-make" [build] diff --git a/recipes/wip/tools/imager/recipe.toml b/recipes/wip/tools/imager/recipe.toml index b93923a1..30c4fe6b 100644 --- a/recipes/wip/tools/imager/recipe.toml +++ b/recipes/wip/tools/imager/recipe.toml @@ -1,4 +1,4 @@ -#TODO vmaf-sys crate error +#TODO webp-dev crate error [source] git = "https://github.com/imager-io/imager" [build] diff --git a/recipes/wip/tools/just/recipe.toml b/recipes/wip/tools/just/recipe.toml index a732109f..b6050290 100644 --- a/recipes/wip/tools/just/recipe.toml +++ b/recipes/wip/tools/just/recipe.toml @@ -1,4 +1,4 @@ -#TODO camino and target crate error +#TODO camino crate error [source] git = "https://github.com/casey/just" [build] diff --git a/recipes/wip/tools/matui/recipe.toml b/recipes/wip/tools/matui/recipe.toml index 7d9b4344..f4a7c60c 100644 --- a/recipes/wip/tools/matui/recipe.toml +++ b/recipes/wip/tools/matui/recipe.toml @@ -1,4 +1,4 @@ -#TODO xdg-home crate error +#TODO ahash crate error [source] git = "https://github.com/pkulak/matui" [build] diff --git a/recipes/wip/tools/rq/recipe.toml b/recipes/wip/tools/rq/recipe.toml index b38d99f0..44c1fd6f 100644 --- a/recipes/wip/tools/rq/recipe.toml +++ b/recipes/wip/tools/rq/recipe.toml @@ -1,4 +1,4 @@ -#TODO record-query crate error +#TODO record-query crate error (after cargo update) [source] git = "https://github.com/dflemstr/rq" [build] diff --git a/recipes/wip/tools/starship/recipe.toml b/recipes/wip/tools/starship/recipe.toml index 18582e82..7e303d4a 100644 --- a/recipes/wip/tools/starship/recipe.toml +++ b/recipes/wip/tools/starship/recipe.toml @@ -1,4 +1,4 @@ -#TODO xdg-home crate error +#TODO systemstat crate error #TODO nix::unistd::User [source] git = "https://github.com/starship/starship" From 91465b784da47ede507ad1a7520d7ec74e117161 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 20 Jun 2024 02:15:09 +0000 Subject: [PATCH 1923/3180] Update TODOs --- recipes/wip/tools/topgrade/recipe.toml | 2 +- recipes/wip/tui/syndicationd/recipe.toml | 3 ++- recipes/wip/video/streamlib/recipe.toml | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/recipes/wip/tools/topgrade/recipe.toml b/recipes/wip/tools/topgrade/recipe.toml index 7009eb0e..539b1acd 100644 --- a/recipes/wip/tools/topgrade/recipe.toml +++ b/recipes/wip/tools/topgrade/recipe.toml @@ -1,4 +1,4 @@ -#TODO xdg-home crate error +#TODO async-io and rustix crates error [source] git = "https://github.com/topgrade-rs/topgrade" [build] diff --git a/recipes/wip/tui/syndicationd/recipe.toml b/recipes/wip/tui/syndicationd/recipe.toml index 4cff8c65..bb0a0ea2 100644 --- a/recipes/wip/tui/syndicationd/recipe.toml +++ b/recipes/wip/tui/syndicationd/recipe.toml @@ -1,4 +1,5 @@ -#TODO synd-term crate error +#TODO compiled but not tested +#TODO add a command to properly move the executable [source] git = "https://github.com/ymgyt/syndicationd" [build] diff --git a/recipes/wip/video/streamlib/recipe.toml b/recipes/wip/video/streamlib/recipe.toml index bf692d7c..05abc5c2 100644 --- a/recipes/wip/video/streamlib/recipe.toml +++ b/recipes/wip/video/streamlib/recipe.toml @@ -1,4 +1,4 @@ -#TODO shared_child crate error +#TODO shared_child crate error (after cargo update) [source] git = "https://github.com/streamlib/streamlib" [build] From f6967275d5c62d56432e97b967225fac37f9604f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 21 Jun 2024 19:54:24 +0000 Subject: [PATCH 1924/3180] Add recipes --- recipes/wip/dev/jujutsu/recipe.toml | 11 +++++++++++ recipes/wip/graphics/halo/recipe.toml | 5 +++++ recipes/wip/tools/zeitfetch/recipe.toml | 5 +++++ recipes/wip/tui/lazyjj/recipe.toml | 5 +++++ 4 files changed, 26 insertions(+) create mode 100644 recipes/wip/dev/jujutsu/recipe.toml create mode 100644 recipes/wip/graphics/halo/recipe.toml create mode 100644 recipes/wip/tools/zeitfetch/recipe.toml create mode 100644 recipes/wip/tui/lazyjj/recipe.toml diff --git a/recipes/wip/dev/jujutsu/recipe.toml b/recipes/wip/dev/jujutsu/recipe.toml new file mode 100644 index 00000000..31fd4258 --- /dev/null +++ b/recipes/wip/dev/jujutsu/recipe.toml @@ -0,0 +1,11 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/martinvonz/jj" +[build] +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +cookbook_cargo_packages jj-cli +""" diff --git a/recipes/wip/graphics/halo/recipe.toml b/recipes/wip/graphics/halo/recipe.toml new file mode 100644 index 00000000..d908ee3c --- /dev/null +++ b/recipes/wip/graphics/halo/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/bungoboingo/halo" +[build] +template = "cargo" diff --git a/recipes/wip/tools/zeitfetch/recipe.toml b/recipes/wip/tools/zeitfetch/recipe.toml new file mode 100644 index 00000000..a78a1c4c --- /dev/null +++ b/recipes/wip/tools/zeitfetch/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/nidnogg/zeitfetch" +[build] +template = "cargo" diff --git a/recipes/wip/tui/lazyjj/recipe.toml b/recipes/wip/tui/lazyjj/recipe.toml new file mode 100644 index 00000000..d574d40c --- /dev/null +++ b/recipes/wip/tui/lazyjj/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Cretezy/lazyjj" +[build] +template = "cargo" From c126dc2d977bea4ee7d6f10895126bd7f00e31af Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 22 Jun 2024 01:26:42 +0000 Subject: [PATCH 1925/3180] Add recipes --- recipes/wip/dev/cargo-packager/recipe.toml | 8 ++++++++ recipes/wip/graphics/lpl/recipe.toml | 5 +++++ recipes/wip/net/devserver/recipe.toml | 5 +++++ recipes/wip/net/http-server-rs/recipe.toml | 5 +++++ recipes/wip/net/impala/recipe.toml | 5 +++++ recipes/wip/tools/sig/recipe.toml | 5 +++++ 6 files changed, 33 insertions(+) create mode 100644 recipes/wip/dev/cargo-packager/recipe.toml create mode 100644 recipes/wip/graphics/lpl/recipe.toml create mode 100644 recipes/wip/net/devserver/recipe.toml create mode 100644 recipes/wip/net/http-server-rs/recipe.toml create mode 100644 recipes/wip/net/impala/recipe.toml create mode 100644 recipes/wip/tools/sig/recipe.toml diff --git a/recipes/wip/dev/cargo-packager/recipe.toml b/recipes/wip/dev/cargo-packager/recipe.toml new file mode 100644 index 00000000..b6a37aec --- /dev/null +++ b/recipes/wip/dev/cargo-packager/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/crabnebula-dev/cargo-packager" +[build] +template = "custom" +script = """ +cookbook_cargo_packages cargo-packager +""" diff --git a/recipes/wip/graphics/lpl/recipe.toml b/recipes/wip/graphics/lpl/recipe.toml new file mode 100644 index 00000000..e893270b --- /dev/null +++ b/recipes/wip/graphics/lpl/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/SOF3/lpl" +[build] +template = "cargo" diff --git a/recipes/wip/net/devserver/recipe.toml b/recipes/wip/net/devserver/recipe.toml new file mode 100644 index 00000000..8e42b122 --- /dev/null +++ b/recipes/wip/net/devserver/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/kettle11/devserver" +[build] +template = "cargo" diff --git a/recipes/wip/net/http-server-rs/recipe.toml b/recipes/wip/net/http-server-rs/recipe.toml new file mode 100644 index 00000000..06780d78 --- /dev/null +++ b/recipes/wip/net/http-server-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/http-server-rs/http-server" +[build] +template = "cargo" diff --git a/recipes/wip/net/impala/recipe.toml b/recipes/wip/net/impala/recipe.toml new file mode 100644 index 00000000..3fd30d01 --- /dev/null +++ b/recipes/wip/net/impala/recipe.toml @@ -0,0 +1,5 @@ +#TODO port to redox +[source] +git = "https://github.com/pythops/impala" +[build] +template = "cargo" diff --git a/recipes/wip/tools/sig/recipe.toml b/recipes/wip/tools/sig/recipe.toml new file mode 100644 index 00000000..29c09980 --- /dev/null +++ b/recipes/wip/tools/sig/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ynqa/sig" +[build] +template = "cargo" From a861238390ef6dfcc4420ce5296c0ae1da32a123 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 23 Jun 2024 00:06:14 +0000 Subject: [PATCH 1926/3180] Add recipes --- recipes/wip/demos/blitz/recipe.toml | 8 ++++++++ recipes/wip/demos/dioxus-examples/recipe.toml | 10 ++++++++++ recipes/wip/demos/egui/recipe.toml | 8 ++++++++ recipes/wip/demos/leptos-counter/recipe.toml | 8 ++++++++ recipes/wip/demos/tachyonfx/recipe.toml | 8 ++++++++ recipes/wip/demos/taffy/recipe.toml | 8 ++++++++ recipes/wip/dev/dioxus/recipe.toml | 8 ++++++++ recipes/wip/dev/leptosfmt/recipe.toml | 8 ++++++++ recipes/wip/dev/trunk/recipe.toml | 5 +++++ 9 files changed, 71 insertions(+) create mode 100644 recipes/wip/demos/blitz/recipe.toml create mode 100644 recipes/wip/demos/dioxus-examples/recipe.toml create mode 100644 recipes/wip/demos/egui/recipe.toml create mode 100644 recipes/wip/demos/leptos-counter/recipe.toml create mode 100644 recipes/wip/demos/tachyonfx/recipe.toml create mode 100644 recipes/wip/demos/taffy/recipe.toml create mode 100644 recipes/wip/dev/dioxus/recipe.toml create mode 100644 recipes/wip/dev/leptosfmt/recipe.toml create mode 100644 recipes/wip/dev/trunk/recipe.toml diff --git a/recipes/wip/demos/blitz/recipe.toml b/recipes/wip/demos/blitz/recipe.toml new file mode 100644 index 00000000..53dc0362 --- /dev/null +++ b/recipes/wip/demos/blitz/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/DioxusLabs/blitz" +[build] +template = "custom" +script = """ +cookbook_cargo_examples url markdown +""" diff --git a/recipes/wip/demos/dioxus-examples/recipe.toml b/recipes/wip/demos/dioxus-examples/recipe.toml new file mode 100644 index 00000000..a394969d --- /dev/null +++ b/recipes/wip/demos/dioxus-examples/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/DioxusLabs/dioxus" +[build] +template = "custom" +script = """ +cookbook_cargo_examples calculator clock counters \ +file_explorer hello_world multiwindow popup window_event \ +window_zoom +""" diff --git a/recipes/wip/demos/egui/recipe.toml b/recipes/wip/demos/egui/recipe.toml new file mode 100644 index 00000000..000b5d9d --- /dev/null +++ b/recipes/wip/demos/egui/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/emilk/egui" +[build] +template = "custom" +script = """ +cookbook_cargo_examples hello_world_simple +""" diff --git a/recipes/wip/demos/leptos-counter/recipe.toml b/recipes/wip/demos/leptos-counter/recipe.toml new file mode 100644 index 00000000..d990666b --- /dev/null +++ b/recipes/wip/demos/leptos-counter/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/leptos-rs/leptos" +[build] +template = "custom" +script = """ +cookbook_cargo_examples counter +""" diff --git a/recipes/wip/demos/tachyonfx/recipe.toml b/recipes/wip/demos/tachyonfx/recipe.toml new file mode 100644 index 00000000..6093e6a7 --- /dev/null +++ b/recipes/wip/demos/tachyonfx/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/junkdog/tachyonfx" +[build] +template = "custom" +script = """ +cookbook_cargo_examples basic-effects open-window tweens +""" diff --git a/recipes/wip/demos/taffy/recipe.toml b/recipes/wip/demos/taffy/recipe.toml new file mode 100644 index 00000000..a7d0befd --- /dev/null +++ b/recipes/wip/demos/taffy/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/DioxusLabs/taffy" +[build] +template = "custom" +script = """ +cookbook_cargo_examples basic cosmic_text +""" diff --git a/recipes/wip/dev/dioxus/recipe.toml b/recipes/wip/dev/dioxus/recipe.toml new file mode 100644 index 00000000..f329c719 --- /dev/null +++ b/recipes/wip/dev/dioxus/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/DioxusLabs/dioxus" +[build] +template = "custom" +script = """ +cookbook_cargo_packages dioxus-cli +""" diff --git a/recipes/wip/dev/leptosfmt/recipe.toml b/recipes/wip/dev/leptosfmt/recipe.toml new file mode 100644 index 00000000..04f407a5 --- /dev/null +++ b/recipes/wip/dev/leptosfmt/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/bram209/leptosfmt" +[build] +template = "custom" +script = """ +cookbook_cargo_packages leptosfmt +""" diff --git a/recipes/wip/dev/trunk/recipe.toml b/recipes/wip/dev/trunk/recipe.toml new file mode 100644 index 00000000..1874e01d --- /dev/null +++ b/recipes/wip/dev/trunk/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/trunk-rs/trunk" +[build] +template = "cargo" From a83e1539d9b16c85cba243420d0cdc64fe4b1945 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 23 Jun 2024 21:54:44 +0000 Subject: [PATCH 1927/3180] Add recipes --- recipes/wip/dev/git-lfs/recipe.toml | 5 +++++ recipes/wip/net/vimini/recipe.toml | 8 ++++++++ recipes/wip/tools/simplemoji/recipe.toml | 5 +++++ recipes/wip/vm/cloud-hypervisor/recipe.toml | 6 ++++++ recipes/wip/vm/crosvm/recipe.toml | 18 ++++++++++++++++++ recipes/wip/vm/firecracker/recipe.toml | 8 ++++++++ recipes/wip/vm/libguestfs/recipe.toml | 5 +++++ 7 files changed, 55 insertions(+) create mode 100644 recipes/wip/dev/git-lfs/recipe.toml create mode 100644 recipes/wip/net/vimini/recipe.toml create mode 100644 recipes/wip/tools/simplemoji/recipe.toml create mode 100644 recipes/wip/vm/cloud-hypervisor/recipe.toml create mode 100644 recipes/wip/vm/crosvm/recipe.toml create mode 100644 recipes/wip/vm/firecracker/recipe.toml create mode 100644 recipes/wip/vm/libguestfs/recipe.toml diff --git a/recipes/wip/dev/git-lfs/recipe.toml b/recipes/wip/dev/git-lfs/recipe.toml new file mode 100644 index 00000000..1816e464 --- /dev/null +++ b/recipes/wip/dev/git-lfs/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for GNU Make, see https://github.com/git-lfs/git-lfs?tab=readme-ov-file#from-source +[source] +tar = "https://github.com/git-lfs/git-lfs/releases/download/v3.5.1/git-lfs-v3.5.1.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/net/vimini/recipe.toml b/recipes/wip/net/vimini/recipe.toml new file mode 100644 index 00000000..2c571acf --- /dev/null +++ b/recipes/wip/net/vimini/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://git.sr.ht/~lufte/vimini" +[build] +template = "cargo" +dependencies = [ + "sqlite3", +] diff --git a/recipes/wip/tools/simplemoji/recipe.toml b/recipes/wip/tools/simplemoji/recipe.toml new file mode 100644 index 00000000..d1b76c3b --- /dev/null +++ b/recipes/wip/tools/simplemoji/recipe.toml @@ -0,0 +1,5 @@ +#TODO require the Noto Color Emoji font, see https://fonts.google.com/noto/specimen/Noto+Color+Emoji +[source] +git = "https://github.com/SergioRibera/Simplemoji" +[build] +template = "cargo" diff --git a/recipes/wip/vm/cloud-hypervisor/recipe.toml b/recipes/wip/vm/cloud-hypervisor/recipe.toml new file mode 100644 index 00000000..e2d9bca3 --- /dev/null +++ b/recipes/wip/vm/cloud-hypervisor/recipe.toml @@ -0,0 +1,6 @@ +#TODO port to redox +# required host dependencies - https://github.com/cloud-hypervisor/cloud-hypervisor/blob/main/docs/building.md#install-prerequisites +[source] +git = "https://github.com/cloud-hypervisor/cloud-hypervisor" +[build] +template = "cargo" diff --git a/recipes/wip/vm/crosvm/recipe.toml b/recipes/wip/vm/crosvm/recipe.toml new file mode 100644 index 00000000..967bc0ff --- /dev/null +++ b/recipes/wip/vm/crosvm/recipe.toml @@ -0,0 +1,18 @@ +#TODO port to redox +#TODO maybe missing dependencies +#TODO required host dependencies - https://github.com/google/crosvm/blob/main/tools/install-deps +# feature flags - https://crosvm.dev/doc/crosvm/#feature-flags +# how to use - https://crosvm.dev/book/running_crosvm/example_usage.html +# examples - https://github.com/google/crosvm/tree/main/tools/examples +[source] +git = "https://chromium.googlesource.com/crosvm/crosvm" +[build] +template = "cargo" +dependencies = [ + "ffmpeg6", + "libcap", + "dbus", + "libepoxy", + "glib", + "libslirp", +] diff --git a/recipes/wip/vm/firecracker/recipe.toml b/recipes/wip/vm/firecracker/recipe.toml new file mode 100644 index 00000000..ea9463d3 --- /dev/null +++ b/recipes/wip/vm/firecracker/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/firecracker-microvm/firecracker" +[build] +template = "custom" +script = """ +cookbook_cargo_packages firecracker +""" diff --git a/recipes/wip/vm/libguestfs/recipe.toml b/recipes/wip/vm/libguestfs/recipe.toml new file mode 100644 index 00000000..cc3244b8 --- /dev/null +++ b/recipes/wip/vm/libguestfs/recipe.toml @@ -0,0 +1,5 @@ +#TODO determine the dependencies, read https://libguestfs.org/guestfs-building.1.html +[source] +tar = "https://download.libguestfs.org/1.52-stable/libguestfs-1.52.1.tar.gz" +[build] +template = "configure" From e8c4dad5fe553077fdc99062d6b48a302264b82b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 23 Jun 2024 23:22:38 +0000 Subject: [PATCH 1928/3180] Add recipes --- recipes/wip/graphics/darktable/recipe.toml | 19 +++++++++++++++++++ recipes/wip/libs/libuuid-ossp/recipe.toml | 7 +++++++ recipes/wip/net/guacamole-client/recipe.toml | 6 ++++++ recipes/wip/net/guacamole-server/recipe.toml | 17 +++++++++++++++++ 4 files changed, 49 insertions(+) create mode 100644 recipes/wip/graphics/darktable/recipe.toml create mode 100644 recipes/wip/libs/libuuid-ossp/recipe.toml create mode 100644 recipes/wip/net/guacamole-client/recipe.toml create mode 100644 recipes/wip/net/guacamole-server/recipe.toml diff --git a/recipes/wip/graphics/darktable/recipe.toml b/recipes/wip/graphics/darktable/recipe.toml new file mode 100644 index 00000000..b25c9628 --- /dev/null +++ b/recipes/wip/graphics/darktable/recipe.toml @@ -0,0 +1,19 @@ +#TODO missing script for CMake, see https://github.com/darktable-org/darktable?tab=readme-ov-file#linux +# dependencies - https://github.com/darktable-org/darktable?tab=readme-ov-file#dependencies +[source] +tar = "https://github.com/darktable-org/darktable/releases/download/release-4.8.0/darktable-4.8.0.tar.xz" +[build] +template = "custom" +dependencies = [ + "gtk3", + "glib", + "sqlite3", + "gexiv2", + "liblensfun", + "liblcms", + "libpugixml", + "libavif", + "libheif", + "libwebp", + "libgphoto2", +] diff --git a/recipes/wip/libs/libuuid-ossp/recipe.toml b/recipes/wip/libs/libuuid-ossp/recipe.toml new file mode 100644 index 00000000..90f45ad6 --- /dev/null +++ b/recipes/wip/libs/libuuid-ossp/recipe.toml @@ -0,0 +1,7 @@ +#TODO require a data type for FTP +# download link - ftp://ftp.ossp.org/pkg/lib/uuid/uuid-1.6.2.tar.gz +#TODO if this template doesn't work, read this http://cvs.ossp.org/fileview?f=ossp-pkg/uuid/INSTALL&v=1.6 +[source] + +[build] +template = "configure" diff --git a/recipes/wip/net/guacamole-client/recipe.toml b/recipes/wip/net/guacamole-client/recipe.toml new file mode 100644 index 00000000..3cc0d751 --- /dev/null +++ b/recipes/wip/net/guacamole-client/recipe.toml @@ -0,0 +1,6 @@ +#TODO this recipe require this data type to download the Java bytecode - https://gitlab.redox-os.org/redox-os/cookbook/-/issues/190 +# download link - https://apache.org/dyn/closer.lua/guacamole/1.5.5/binary/guacamole-1.5.5.war?action=download +[source] + +[build] +template = "custom" diff --git a/recipes/wip/net/guacamole-server/recipe.toml b/recipes/wip/net/guacamole-server/recipe.toml new file mode 100644 index 00000000..90faa903 --- /dev/null +++ b/recipes/wip/net/guacamole-server/recipe.toml @@ -0,0 +1,17 @@ +#TODO not compiled or tested +# dependencies - https://guacamole.apache.org/doc/gug/installing-guacamole.html#required-dependencies +[source] +tar = "https://apache.org/dyn/closer.lua/guacamole/1.5.5/source/guacamole-server-1.5.5.tar.gz?action=download" +[build] +template = "configure" +dependencies = [ + "cairo", + "libjpeg-turbo", + "libpng", + "libuuid", + "libssh2", + "openssl1", + "pango", + "pulseaudio", + "libvorbis", +] From a7aebd9186cb7478650e3fba52329d32b810fe8b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 24 Jun 2024 00:36:42 +0000 Subject: [PATCH 1929/3180] Add recipes --- recipes/wip/ai/nnx/recipe.toml | 8 ++++++++ recipes/wip/demos/simdjson-rs/recipe.toml | 8 ++++++++ recipes/wip/dev/not-perf/recipe.toml | 5 +++++ recipes/wip/dev/rudra/recipe.toml | 5 +++++ recipes/wip/net/synapse-bt/recipe.toml | 5 +++++ 5 files changed, 31 insertions(+) create mode 100644 recipes/wip/ai/nnx/recipe.toml create mode 100644 recipes/wip/demos/simdjson-rs/recipe.toml create mode 100644 recipes/wip/dev/not-perf/recipe.toml create mode 100644 recipes/wip/dev/rudra/recipe.toml create mode 100644 recipes/wip/net/synapse-bt/recipe.toml diff --git a/recipes/wip/ai/nnx/recipe.toml b/recipes/wip/ai/nnx/recipe.toml new file mode 100644 index 00000000..a89d357c --- /dev/null +++ b/recipes/wip/ai/nnx/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/webonnx/wonnx" +[build] +template = "custom" +script = """ +cookbook_cargo_packages wonnx-cli +""" diff --git a/recipes/wip/demos/simdjson-rs/recipe.toml b/recipes/wip/demos/simdjson-rs/recipe.toml new file mode 100644 index 00000000..52e8a645 --- /dev/null +++ b/recipes/wip/demos/simdjson-rs/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/simd-lite/simd-json" +[build] +template = "custom" +script = """ +cookbook_cargo_examples perf +""" diff --git a/recipes/wip/dev/not-perf/recipe.toml b/recipes/wip/dev/not-perf/recipe.toml new file mode 100644 index 00000000..f7a52ed8 --- /dev/null +++ b/recipes/wip/dev/not-perf/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/koute/not-perf" +[build] +template = "cargo" diff --git a/recipes/wip/dev/rudra/recipe.toml b/recipes/wip/dev/rudra/recipe.toml new file mode 100644 index 00000000..9a672bf3 --- /dev/null +++ b/recipes/wip/dev/rudra/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/sslab-gatech/Rudra" +[build] +template = "cargo" diff --git a/recipes/wip/net/synapse-bt/recipe.toml b/recipes/wip/net/synapse-bt/recipe.toml new file mode 100644 index 00000000..53ef1be2 --- /dev/null +++ b/recipes/wip/net/synapse-bt/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Luminarys/synapse" +[build] +template = "cargo" From d5e3a8d940cebf49efc788500b960c2394515329 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 24 Jun 2024 02:56:43 +0000 Subject: [PATCH 1930/3180] Add and move recipes --- recipes/wip/{tools => archives}/7-zip/recipe.toml | 0 recipes/wip/{tools => archives}/lz4/recipe.toml | 0 recipes/wip/{tools => archives}/lzip/recipe.toml | 0 recipes/wip/archives/mlar/recipe.toml | 8 ++++++++ recipes/wip/{tools => archives}/orz/recipe.toml | 0 recipes/wip/{tools => archives}/ouch/recipe.toml | 0 recipes/wip/{tools => archives}/plzip/recipe.toml | 0 recipes/wip/{tools => archives}/unzrip/recipe.toml | 0 recipes/wip/{tools => archives}/zstd/recipe.toml | 0 recipes/wip/crypto/steg86/recipe.toml | 5 +++++ recipes/wip/dev/wasminspect/recipe.toml | 5 +++++ recipes/wip/graphics/pix-image-viewer/recipe.toml | 5 +++++ 12 files changed, 23 insertions(+) rename recipes/wip/{tools => archives}/7-zip/recipe.toml (100%) rename recipes/wip/{tools => archives}/lz4/recipe.toml (100%) rename recipes/wip/{tools => archives}/lzip/recipe.toml (100%) create mode 100644 recipes/wip/archives/mlar/recipe.toml rename recipes/wip/{tools => archives}/orz/recipe.toml (100%) rename recipes/wip/{tools => archives}/ouch/recipe.toml (100%) rename recipes/wip/{tools => archives}/plzip/recipe.toml (100%) rename recipes/wip/{tools => archives}/unzrip/recipe.toml (100%) rename recipes/wip/{tools => archives}/zstd/recipe.toml (100%) create mode 100644 recipes/wip/crypto/steg86/recipe.toml create mode 100644 recipes/wip/dev/wasminspect/recipe.toml create mode 100644 recipes/wip/graphics/pix-image-viewer/recipe.toml diff --git a/recipes/wip/tools/7-zip/recipe.toml b/recipes/wip/archives/7-zip/recipe.toml similarity index 100% rename from recipes/wip/tools/7-zip/recipe.toml rename to recipes/wip/archives/7-zip/recipe.toml diff --git a/recipes/wip/tools/lz4/recipe.toml b/recipes/wip/archives/lz4/recipe.toml similarity index 100% rename from recipes/wip/tools/lz4/recipe.toml rename to recipes/wip/archives/lz4/recipe.toml diff --git a/recipes/wip/tools/lzip/recipe.toml b/recipes/wip/archives/lzip/recipe.toml similarity index 100% rename from recipes/wip/tools/lzip/recipe.toml rename to recipes/wip/archives/lzip/recipe.toml diff --git a/recipes/wip/archives/mlar/recipe.toml b/recipes/wip/archives/mlar/recipe.toml new file mode 100644 index 00000000..f8e49d76 --- /dev/null +++ b/recipes/wip/archives/mlar/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ANSSI-FR/MLA" +[build] +template = "custom" +script = """ +cookbook_cargo_packages mlar +""" diff --git a/recipes/wip/tools/orz/recipe.toml b/recipes/wip/archives/orz/recipe.toml similarity index 100% rename from recipes/wip/tools/orz/recipe.toml rename to recipes/wip/archives/orz/recipe.toml diff --git a/recipes/wip/tools/ouch/recipe.toml b/recipes/wip/archives/ouch/recipe.toml similarity index 100% rename from recipes/wip/tools/ouch/recipe.toml rename to recipes/wip/archives/ouch/recipe.toml diff --git a/recipes/wip/tools/plzip/recipe.toml b/recipes/wip/archives/plzip/recipe.toml similarity index 100% rename from recipes/wip/tools/plzip/recipe.toml rename to recipes/wip/archives/plzip/recipe.toml diff --git a/recipes/wip/tools/unzrip/recipe.toml b/recipes/wip/archives/unzrip/recipe.toml similarity index 100% rename from recipes/wip/tools/unzrip/recipe.toml rename to recipes/wip/archives/unzrip/recipe.toml diff --git a/recipes/wip/tools/zstd/recipe.toml b/recipes/wip/archives/zstd/recipe.toml similarity index 100% rename from recipes/wip/tools/zstd/recipe.toml rename to recipes/wip/archives/zstd/recipe.toml diff --git a/recipes/wip/crypto/steg86/recipe.toml b/recipes/wip/crypto/steg86/recipe.toml new file mode 100644 index 00000000..23446461 --- /dev/null +++ b/recipes/wip/crypto/steg86/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/woodruffw/steg86" +[build] +template = "cargo" diff --git a/recipes/wip/dev/wasminspect/recipe.toml b/recipes/wip/dev/wasminspect/recipe.toml new file mode 100644 index 00000000..1a32dbd2 --- /dev/null +++ b/recipes/wip/dev/wasminspect/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/kateinoigakukun/wasminspect" +[build] +template = "cargo" diff --git a/recipes/wip/graphics/pix-image-viewer/recipe.toml b/recipes/wip/graphics/pix-image-viewer/recipe.toml new file mode 100644 index 00000000..cb3c960d --- /dev/null +++ b/recipes/wip/graphics/pix-image-viewer/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/google/pix-image-viewer" +[build] +template = "cargo" From 9bebe07829e64f706e6fb90465be775cca7a455c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 24 Jun 2024 04:42:21 +0000 Subject: [PATCH 1931/3180] Add a recipe --- recipes/wip/demos/rapier/recipe.toml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 recipes/wip/demos/rapier/recipe.toml diff --git a/recipes/wip/demos/rapier/recipe.toml b/recipes/wip/demos/rapier/recipe.toml new file mode 100644 index 00000000..b2cc021e --- /dev/null +++ b/recipes/wip/demos/rapier/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/dimforge/rapier" +[build] +template = "custom" +script = """ +cookbook_cargo_packages rapier-examples-2d rapier-examples-3d \ +rapier-examples-3d-f64 +""" From 1e748d30a090924c403711b7f54c5185352946c6 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 24 Jun 2024 06:01:19 +0000 Subject: [PATCH 1932/3180] Add a recipe --- recipes/wip/libs/liblensfun/recipe.toml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 recipes/wip/libs/liblensfun/recipe.toml diff --git a/recipes/wip/libs/liblensfun/recipe.toml b/recipes/wip/libs/liblensfun/recipe.toml new file mode 100644 index 00000000..c5a36553 --- /dev/null +++ b/recipes/wip/libs/liblensfun/recipe.toml @@ -0,0 +1,10 @@ +#TODO missing script for CMake, see https://github.com/lensfun/lensfun?tab=readme-ov-file#build-instructions +[source] +git = "https://github.com/lensfun/lensfun" +rev = "35b19fb38e7250ea646709ef9e528d54a6a79648" +[build] +template = "custom" +dependencies = [ + "glib", + "libpng", +] From 11ab176e41fa4a303e5aed5efb747887d0c503f5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 24 Jun 2024 11:36:20 -0600 Subject: [PATCH 1933/3180] Move inputd to /usr/bin --- recipes/core/drivers/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/core/drivers/recipe.toml b/recipes/core/drivers/recipe.toml index f9828931..b29a42a2 100644 --- a/recipes/core/drivers/recipe.toml +++ b/recipes/core/drivers/recipe.toml @@ -41,7 +41,7 @@ export CARGO_PROFILE_RELEASE_PANIC=abort $(for bin in "${BINS[@]}"; do echo "-p" "${bin}"; done) for bin in "${BINS[@]}" do - if [[ "${bin}" == "pcid" ]]; then + if [[ "${bin}" == "inputd" || "${bin}" == "pcid" ]]; then cp -v "target/${TARGET}/release/${bin}" "${COOKBOOK_STAGE}/usr/bin" else cp -v "target/${TARGET}/release/${bin}" "${COOKBOOK_STAGE}/usr/lib/drivers" From f198714053a80be877cda80bfd2934e7619ae0c8 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 25 Jun 2024 20:09:38 +0000 Subject: [PATCH 1934/3180] Add recipes --- recipes/wip/terminal/tab-rs/recipe.toml | 8 ++++++++ recipes/wip/terminal/tmux/recipe.toml | 13 +++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 recipes/wip/terminal/tab-rs/recipe.toml create mode 100644 recipes/wip/terminal/tmux/recipe.toml diff --git a/recipes/wip/terminal/tab-rs/recipe.toml b/recipes/wip/terminal/tab-rs/recipe.toml new file mode 100644 index 00000000..91355fc9 --- /dev/null +++ b/recipes/wip/terminal/tab-rs/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/austinjones/tab-rs" +[build] +template = "custom" +script = """ +cookbook_cargo_packages tab +""" diff --git a/recipes/wip/terminal/tmux/recipe.toml b/recipes/wip/terminal/tmux/recipe.toml new file mode 100644 index 00000000..6a95203b --- /dev/null +++ b/recipes/wip/terminal/tmux/recipe.toml @@ -0,0 +1,13 @@ +#TODO not compiled or tested +[source] +tar = "https://github.com/tmux/tmux/releases/download/3.4/tmux-3.4.tar.gz" +[build] +template = "custom" +dependencies = [ + "ncurses", + "libevent", +] +script = """ +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" +cookbook_configure +""" From 7c6047aece5a8680714049670db6e5fef71ceeb2 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 25 Jun 2024 20:32:48 +0000 Subject: [PATCH 1935/3180] Move recipes --- .../emulators/{ => game-console/arcade}/finalburn-neo/recipe.toml | 0 recipes/wip/emulators/{ => game-console/arcade}/mame/recipe.toml | 0 recipes/wip/emulators/{ => game-console}/clementine/recipe.toml | 0 recipes/wip/emulators/{ => game-console}/duckstation/recipe.toml | 0 .../emulators/{ => game-console/gameboy}/boytacean/recipe.toml | 0 .../emulators/{ => game-console/gameboy}/gameboy-emu/recipe.toml | 0 .../wip/emulators/{ => game-console/gameboy}/gameroy/recipe.toml | 0 .../emulators/{ => game-console/gameboy}/mooneye-gb/recipe.toml | 0 recipes/wip/emulators/{ => game-console}/jgenesis/recipe.toml | 0 recipes/wip/emulators/{ => game-console/n64}/gopher64/recipe.toml | 0 .../{ => game-console/n64}/mupen64plus-audio-sdl/recipe.toml | 0 .../emulators/{ => game-console/n64}/mupen64plus-core/recipe.toml | 0 .../{ => game-console/n64}/mupen64plus-input-sdl/recipe.toml | 0 .../{ => game-console/n64}/mupen64plus-ui-console/recipe.toml | 0 .../{ => game-console/n64}/mupen64plus-video-glide64/recipe.toml | 0 .../{ => game-console/n64}/mupen64plus-video-rice/recipe.toml | 0 recipes/wip/emulators/{ => game-console/nds}/melonds/recipe.toml | 0 recipes/wip/emulators/{ => game-console}/nestur/recipe.toml | 0 .../emulators/{ => game-console/nintendo}/dolphin-emu/recipe.toml | 0 .../wip/emulators/{ => game-console/ps4}/obliteration/recipe.toml | 0 recipes/wip/emulators/{ => pc}/8086-emulator/recipe.toml | 0 recipes/wip/emulators/{ => pc}/boxedwine/recipe.toml | 0 recipes/wip/emulators/{ => pc}/darling/recipe.toml | 0 recipes/wip/emulators/{ => pc}/martypc/recipe.toml | 0 recipes/wip/emulators/{ => pc}/opengmk/recipe.toml | 0 recipes/wip/{tools => emulators}/unicorn/recipe.toml | 0 26 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/emulators/{ => game-console/arcade}/finalburn-neo/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/arcade}/mame/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console}/clementine/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console}/duckstation/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/gameboy}/boytacean/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/gameboy}/gameboy-emu/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/gameboy}/gameroy/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/gameboy}/mooneye-gb/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console}/jgenesis/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/n64}/gopher64/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/n64}/mupen64plus-audio-sdl/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/n64}/mupen64plus-core/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/n64}/mupen64plus-input-sdl/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/n64}/mupen64plus-ui-console/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/n64}/mupen64plus-video-glide64/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/n64}/mupen64plus-video-rice/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/nds}/melonds/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console}/nestur/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/nintendo}/dolphin-emu/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/ps4}/obliteration/recipe.toml (100%) rename recipes/wip/emulators/{ => pc}/8086-emulator/recipe.toml (100%) rename recipes/wip/emulators/{ => pc}/boxedwine/recipe.toml (100%) rename recipes/wip/emulators/{ => pc}/darling/recipe.toml (100%) rename recipes/wip/emulators/{ => pc}/martypc/recipe.toml (100%) rename recipes/wip/emulators/{ => pc}/opengmk/recipe.toml (100%) rename recipes/wip/{tools => emulators}/unicorn/recipe.toml (100%) diff --git a/recipes/wip/emulators/finalburn-neo/recipe.toml b/recipes/wip/emulators/game-console/arcade/finalburn-neo/recipe.toml similarity index 100% rename from recipes/wip/emulators/finalburn-neo/recipe.toml rename to recipes/wip/emulators/game-console/arcade/finalburn-neo/recipe.toml diff --git a/recipes/wip/emulators/mame/recipe.toml b/recipes/wip/emulators/game-console/arcade/mame/recipe.toml similarity index 100% rename from recipes/wip/emulators/mame/recipe.toml rename to recipes/wip/emulators/game-console/arcade/mame/recipe.toml diff --git a/recipes/wip/emulators/clementine/recipe.toml b/recipes/wip/emulators/game-console/clementine/recipe.toml similarity index 100% rename from recipes/wip/emulators/clementine/recipe.toml rename to recipes/wip/emulators/game-console/clementine/recipe.toml diff --git a/recipes/wip/emulators/duckstation/recipe.toml b/recipes/wip/emulators/game-console/duckstation/recipe.toml similarity index 100% rename from recipes/wip/emulators/duckstation/recipe.toml rename to recipes/wip/emulators/game-console/duckstation/recipe.toml diff --git a/recipes/wip/emulators/boytacean/recipe.toml b/recipes/wip/emulators/game-console/gameboy/boytacean/recipe.toml similarity index 100% rename from recipes/wip/emulators/boytacean/recipe.toml rename to recipes/wip/emulators/game-console/gameboy/boytacean/recipe.toml diff --git a/recipes/wip/emulators/gameboy-emu/recipe.toml b/recipes/wip/emulators/game-console/gameboy/gameboy-emu/recipe.toml similarity index 100% rename from recipes/wip/emulators/gameboy-emu/recipe.toml rename to recipes/wip/emulators/game-console/gameboy/gameboy-emu/recipe.toml diff --git a/recipes/wip/emulators/gameroy/recipe.toml b/recipes/wip/emulators/game-console/gameboy/gameroy/recipe.toml similarity index 100% rename from recipes/wip/emulators/gameroy/recipe.toml rename to recipes/wip/emulators/game-console/gameboy/gameroy/recipe.toml diff --git a/recipes/wip/emulators/mooneye-gb/recipe.toml b/recipes/wip/emulators/game-console/gameboy/mooneye-gb/recipe.toml similarity index 100% rename from recipes/wip/emulators/mooneye-gb/recipe.toml rename to recipes/wip/emulators/game-console/gameboy/mooneye-gb/recipe.toml diff --git a/recipes/wip/emulators/jgenesis/recipe.toml b/recipes/wip/emulators/game-console/jgenesis/recipe.toml similarity index 100% rename from recipes/wip/emulators/jgenesis/recipe.toml rename to recipes/wip/emulators/game-console/jgenesis/recipe.toml diff --git a/recipes/wip/emulators/gopher64/recipe.toml b/recipes/wip/emulators/game-console/n64/gopher64/recipe.toml similarity index 100% rename from recipes/wip/emulators/gopher64/recipe.toml rename to recipes/wip/emulators/game-console/n64/gopher64/recipe.toml diff --git a/recipes/wip/emulators/mupen64plus-audio-sdl/recipe.toml b/recipes/wip/emulators/game-console/n64/mupen64plus-audio-sdl/recipe.toml similarity index 100% rename from recipes/wip/emulators/mupen64plus-audio-sdl/recipe.toml rename to recipes/wip/emulators/game-console/n64/mupen64plus-audio-sdl/recipe.toml diff --git a/recipes/wip/emulators/mupen64plus-core/recipe.toml b/recipes/wip/emulators/game-console/n64/mupen64plus-core/recipe.toml similarity index 100% rename from recipes/wip/emulators/mupen64plus-core/recipe.toml rename to recipes/wip/emulators/game-console/n64/mupen64plus-core/recipe.toml diff --git a/recipes/wip/emulators/mupen64plus-input-sdl/recipe.toml b/recipes/wip/emulators/game-console/n64/mupen64plus-input-sdl/recipe.toml similarity index 100% rename from recipes/wip/emulators/mupen64plus-input-sdl/recipe.toml rename to recipes/wip/emulators/game-console/n64/mupen64plus-input-sdl/recipe.toml diff --git a/recipes/wip/emulators/mupen64plus-ui-console/recipe.toml b/recipes/wip/emulators/game-console/n64/mupen64plus-ui-console/recipe.toml similarity index 100% rename from recipes/wip/emulators/mupen64plus-ui-console/recipe.toml rename to recipes/wip/emulators/game-console/n64/mupen64plus-ui-console/recipe.toml diff --git a/recipes/wip/emulators/mupen64plus-video-glide64/recipe.toml b/recipes/wip/emulators/game-console/n64/mupen64plus-video-glide64/recipe.toml similarity index 100% rename from recipes/wip/emulators/mupen64plus-video-glide64/recipe.toml rename to recipes/wip/emulators/game-console/n64/mupen64plus-video-glide64/recipe.toml diff --git a/recipes/wip/emulators/mupen64plus-video-rice/recipe.toml b/recipes/wip/emulators/game-console/n64/mupen64plus-video-rice/recipe.toml similarity index 100% rename from recipes/wip/emulators/mupen64plus-video-rice/recipe.toml rename to recipes/wip/emulators/game-console/n64/mupen64plus-video-rice/recipe.toml diff --git a/recipes/wip/emulators/melonds/recipe.toml b/recipes/wip/emulators/game-console/nds/melonds/recipe.toml similarity index 100% rename from recipes/wip/emulators/melonds/recipe.toml rename to recipes/wip/emulators/game-console/nds/melonds/recipe.toml diff --git a/recipes/wip/emulators/nestur/recipe.toml b/recipes/wip/emulators/game-console/nestur/recipe.toml similarity index 100% rename from recipes/wip/emulators/nestur/recipe.toml rename to recipes/wip/emulators/game-console/nestur/recipe.toml diff --git a/recipes/wip/emulators/dolphin-emu/recipe.toml b/recipes/wip/emulators/game-console/nintendo/dolphin-emu/recipe.toml similarity index 100% rename from recipes/wip/emulators/dolphin-emu/recipe.toml rename to recipes/wip/emulators/game-console/nintendo/dolphin-emu/recipe.toml diff --git a/recipes/wip/emulators/obliteration/recipe.toml b/recipes/wip/emulators/game-console/ps4/obliteration/recipe.toml similarity index 100% rename from recipes/wip/emulators/obliteration/recipe.toml rename to recipes/wip/emulators/game-console/ps4/obliteration/recipe.toml diff --git a/recipes/wip/emulators/8086-emulator/recipe.toml b/recipes/wip/emulators/pc/8086-emulator/recipe.toml similarity index 100% rename from recipes/wip/emulators/8086-emulator/recipe.toml rename to recipes/wip/emulators/pc/8086-emulator/recipe.toml diff --git a/recipes/wip/emulators/boxedwine/recipe.toml b/recipes/wip/emulators/pc/boxedwine/recipe.toml similarity index 100% rename from recipes/wip/emulators/boxedwine/recipe.toml rename to recipes/wip/emulators/pc/boxedwine/recipe.toml diff --git a/recipes/wip/emulators/darling/recipe.toml b/recipes/wip/emulators/pc/darling/recipe.toml similarity index 100% rename from recipes/wip/emulators/darling/recipe.toml rename to recipes/wip/emulators/pc/darling/recipe.toml diff --git a/recipes/wip/emulators/martypc/recipe.toml b/recipes/wip/emulators/pc/martypc/recipe.toml similarity index 100% rename from recipes/wip/emulators/martypc/recipe.toml rename to recipes/wip/emulators/pc/martypc/recipe.toml diff --git a/recipes/wip/emulators/opengmk/recipe.toml b/recipes/wip/emulators/pc/opengmk/recipe.toml similarity index 100% rename from recipes/wip/emulators/opengmk/recipe.toml rename to recipes/wip/emulators/pc/opengmk/recipe.toml diff --git a/recipes/wip/tools/unicorn/recipe.toml b/recipes/wip/emulators/unicorn/recipe.toml similarity index 100% rename from recipes/wip/tools/unicorn/recipe.toml rename to recipes/wip/emulators/unicorn/recipe.toml From 45899e336a9db3bdc2700c193dd5d5c052ccf189 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 25 Jun 2024 20:50:03 +0000 Subject: [PATCH 1936/3180] Move recipes --- recipes/wip/emulators/{pc => cpu}/8086-emulator/recipe.toml | 0 recipes/wip/emulators/{ => cpu}/mipsy/recipe.toml | 0 recipes/wip/emulators/{ => cpu}/rustzx/recipe.toml | 0 recipes/wip/emulators/{ => cpu}/rvemu/recipe.toml | 0 recipes/wip/emulators/{ => cpu}/scemu/recipe.toml | 0 recipes/wip/emulators/{ => cpu}/unicorn/recipe.toml | 0 .../wip/emulators/{ => game-console/gameboy}/mimic/recipe.toml | 0 recipes/wip/emulators/{ => game-console/gameboy}/rboy/recipe.toml | 0 .../{ => game-console/gameboy}/rustboy-advance-ng/recipe.toml | 0 recipes/wip/emulators/game-console/{ => nes}/nestur/recipe.toml | 0 recipes/wip/emulators/{ => game-console/nes}/pinky/recipe.toml | 0 recipes/wip/emulators/{ => game-console/nes}/potatis/recipe.toml | 0 .../emulators/{ => game-console/nes}/rusticnes-sdl/recipe.toml | 0 recipes/wip/emulators/{ => game-console/nes}/tetanes/recipe.toml | 0 .../wip/emulators/{ => game-console/nintendo}/meru/recipe.toml | 0 .../wip/emulators/game-console/{ => ps1}/duckstation/recipe.toml | 0 .../wip/emulators/{ => game-console/ps1}/pcsx-rearmed/recipe.toml | 0 recipes/wip/emulators/{ => game-console/ps1}/rpsx/recipe.toml | 0 .../wip/emulators/{ => game-console/ps1}/trapezoid/recipe.toml | 0 recipes/wip/emulators/{ => game-console/ps2}/pcsx2/recipe.toml | 0 recipes/wip/emulators/{ => game-console/ps3}/rpcs3/recipe.toml | 0 recipes/wip/emulators/{ => game-console/psp}/ppsspp/recipe.toml | 0 .../wip/emulators/{ => game-console/psvita}/vita3k/recipe.toml | 0 .../wip/emulators/{ => game-console/sega}/picodrive/recipe.toml | 0 .../wip/emulators/{ => game-console/sega}/uoyabause/recipe.toml | 0 recipes/wip/emulators/{ => game-console/snes}/snes9x/recipe.toml | 0 recipes/wip/emulators/{ => game-console/snes}/zsnes/recipe.toml | 0 recipes/wip/emulators/{ => game-console/xbox}/xemu/recipe.toml | 0 .../wip/emulators/{ => game-console/xbox360}/xenia/recipe.toml | 0 recipes/wip/emulators/{ => mobile}/touchhle/recipe.toml | 0 recipes/wip/emulators/{ => mobile}/wie/recipe.toml | 0 recipes/wip/emulators/{ => pc}/ruffle/recipe.toml | 0 recipes/wip/emulators/pc/{ => wine}/boxedwine/recipe.toml | 0 recipes/wip/emulators/{ => pc/wine}/wine-stable/recipe.toml | 0 recipes/wip/emulators/{ => security}/rust-u2f/recipe.toml | 0 35 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/emulators/{pc => cpu}/8086-emulator/recipe.toml (100%) rename recipes/wip/emulators/{ => cpu}/mipsy/recipe.toml (100%) rename recipes/wip/emulators/{ => cpu}/rustzx/recipe.toml (100%) rename recipes/wip/emulators/{ => cpu}/rvemu/recipe.toml (100%) rename recipes/wip/emulators/{ => cpu}/scemu/recipe.toml (100%) rename recipes/wip/emulators/{ => cpu}/unicorn/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/gameboy}/mimic/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/gameboy}/rboy/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/gameboy}/rustboy-advance-ng/recipe.toml (100%) rename recipes/wip/emulators/game-console/{ => nes}/nestur/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/nes}/pinky/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/nes}/potatis/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/nes}/rusticnes-sdl/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/nes}/tetanes/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/nintendo}/meru/recipe.toml (100%) rename recipes/wip/emulators/game-console/{ => ps1}/duckstation/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/ps1}/pcsx-rearmed/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/ps1}/rpsx/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/ps1}/trapezoid/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/ps2}/pcsx2/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/ps3}/rpcs3/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/psp}/ppsspp/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/psvita}/vita3k/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/sega}/picodrive/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/sega}/uoyabause/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/snes}/snes9x/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/snes}/zsnes/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/xbox}/xemu/recipe.toml (100%) rename recipes/wip/emulators/{ => game-console/xbox360}/xenia/recipe.toml (100%) rename recipes/wip/emulators/{ => mobile}/touchhle/recipe.toml (100%) rename recipes/wip/emulators/{ => mobile}/wie/recipe.toml (100%) rename recipes/wip/emulators/{ => pc}/ruffle/recipe.toml (100%) rename recipes/wip/emulators/pc/{ => wine}/boxedwine/recipe.toml (100%) rename recipes/wip/emulators/{ => pc/wine}/wine-stable/recipe.toml (100%) rename recipes/wip/emulators/{ => security}/rust-u2f/recipe.toml (100%) diff --git a/recipes/wip/emulators/pc/8086-emulator/recipe.toml b/recipes/wip/emulators/cpu/8086-emulator/recipe.toml similarity index 100% rename from recipes/wip/emulators/pc/8086-emulator/recipe.toml rename to recipes/wip/emulators/cpu/8086-emulator/recipe.toml diff --git a/recipes/wip/emulators/mipsy/recipe.toml b/recipes/wip/emulators/cpu/mipsy/recipe.toml similarity index 100% rename from recipes/wip/emulators/mipsy/recipe.toml rename to recipes/wip/emulators/cpu/mipsy/recipe.toml diff --git a/recipes/wip/emulators/rustzx/recipe.toml b/recipes/wip/emulators/cpu/rustzx/recipe.toml similarity index 100% rename from recipes/wip/emulators/rustzx/recipe.toml rename to recipes/wip/emulators/cpu/rustzx/recipe.toml diff --git a/recipes/wip/emulators/rvemu/recipe.toml b/recipes/wip/emulators/cpu/rvemu/recipe.toml similarity index 100% rename from recipes/wip/emulators/rvemu/recipe.toml rename to recipes/wip/emulators/cpu/rvemu/recipe.toml diff --git a/recipes/wip/emulators/scemu/recipe.toml b/recipes/wip/emulators/cpu/scemu/recipe.toml similarity index 100% rename from recipes/wip/emulators/scemu/recipe.toml rename to recipes/wip/emulators/cpu/scemu/recipe.toml diff --git a/recipes/wip/emulators/unicorn/recipe.toml b/recipes/wip/emulators/cpu/unicorn/recipe.toml similarity index 100% rename from recipes/wip/emulators/unicorn/recipe.toml rename to recipes/wip/emulators/cpu/unicorn/recipe.toml diff --git a/recipes/wip/emulators/mimic/recipe.toml b/recipes/wip/emulators/game-console/gameboy/mimic/recipe.toml similarity index 100% rename from recipes/wip/emulators/mimic/recipe.toml rename to recipes/wip/emulators/game-console/gameboy/mimic/recipe.toml diff --git a/recipes/wip/emulators/rboy/recipe.toml b/recipes/wip/emulators/game-console/gameboy/rboy/recipe.toml similarity index 100% rename from recipes/wip/emulators/rboy/recipe.toml rename to recipes/wip/emulators/game-console/gameboy/rboy/recipe.toml diff --git a/recipes/wip/emulators/rustboy-advance-ng/recipe.toml b/recipes/wip/emulators/game-console/gameboy/rustboy-advance-ng/recipe.toml similarity index 100% rename from recipes/wip/emulators/rustboy-advance-ng/recipe.toml rename to recipes/wip/emulators/game-console/gameboy/rustboy-advance-ng/recipe.toml diff --git a/recipes/wip/emulators/game-console/nestur/recipe.toml b/recipes/wip/emulators/game-console/nes/nestur/recipe.toml similarity index 100% rename from recipes/wip/emulators/game-console/nestur/recipe.toml rename to recipes/wip/emulators/game-console/nes/nestur/recipe.toml diff --git a/recipes/wip/emulators/pinky/recipe.toml b/recipes/wip/emulators/game-console/nes/pinky/recipe.toml similarity index 100% rename from recipes/wip/emulators/pinky/recipe.toml rename to recipes/wip/emulators/game-console/nes/pinky/recipe.toml diff --git a/recipes/wip/emulators/potatis/recipe.toml b/recipes/wip/emulators/game-console/nes/potatis/recipe.toml similarity index 100% rename from recipes/wip/emulators/potatis/recipe.toml rename to recipes/wip/emulators/game-console/nes/potatis/recipe.toml diff --git a/recipes/wip/emulators/rusticnes-sdl/recipe.toml b/recipes/wip/emulators/game-console/nes/rusticnes-sdl/recipe.toml similarity index 100% rename from recipes/wip/emulators/rusticnes-sdl/recipe.toml rename to recipes/wip/emulators/game-console/nes/rusticnes-sdl/recipe.toml diff --git a/recipes/wip/emulators/tetanes/recipe.toml b/recipes/wip/emulators/game-console/nes/tetanes/recipe.toml similarity index 100% rename from recipes/wip/emulators/tetanes/recipe.toml rename to recipes/wip/emulators/game-console/nes/tetanes/recipe.toml diff --git a/recipes/wip/emulators/meru/recipe.toml b/recipes/wip/emulators/game-console/nintendo/meru/recipe.toml similarity index 100% rename from recipes/wip/emulators/meru/recipe.toml rename to recipes/wip/emulators/game-console/nintendo/meru/recipe.toml diff --git a/recipes/wip/emulators/game-console/duckstation/recipe.toml b/recipes/wip/emulators/game-console/ps1/duckstation/recipe.toml similarity index 100% rename from recipes/wip/emulators/game-console/duckstation/recipe.toml rename to recipes/wip/emulators/game-console/ps1/duckstation/recipe.toml diff --git a/recipes/wip/emulators/pcsx-rearmed/recipe.toml b/recipes/wip/emulators/game-console/ps1/pcsx-rearmed/recipe.toml similarity index 100% rename from recipes/wip/emulators/pcsx-rearmed/recipe.toml rename to recipes/wip/emulators/game-console/ps1/pcsx-rearmed/recipe.toml diff --git a/recipes/wip/emulators/rpsx/recipe.toml b/recipes/wip/emulators/game-console/ps1/rpsx/recipe.toml similarity index 100% rename from recipes/wip/emulators/rpsx/recipe.toml rename to recipes/wip/emulators/game-console/ps1/rpsx/recipe.toml diff --git a/recipes/wip/emulators/trapezoid/recipe.toml b/recipes/wip/emulators/game-console/ps1/trapezoid/recipe.toml similarity index 100% rename from recipes/wip/emulators/trapezoid/recipe.toml rename to recipes/wip/emulators/game-console/ps1/trapezoid/recipe.toml diff --git a/recipes/wip/emulators/pcsx2/recipe.toml b/recipes/wip/emulators/game-console/ps2/pcsx2/recipe.toml similarity index 100% rename from recipes/wip/emulators/pcsx2/recipe.toml rename to recipes/wip/emulators/game-console/ps2/pcsx2/recipe.toml diff --git a/recipes/wip/emulators/rpcs3/recipe.toml b/recipes/wip/emulators/game-console/ps3/rpcs3/recipe.toml similarity index 100% rename from recipes/wip/emulators/rpcs3/recipe.toml rename to recipes/wip/emulators/game-console/ps3/rpcs3/recipe.toml diff --git a/recipes/wip/emulators/ppsspp/recipe.toml b/recipes/wip/emulators/game-console/psp/ppsspp/recipe.toml similarity index 100% rename from recipes/wip/emulators/ppsspp/recipe.toml rename to recipes/wip/emulators/game-console/psp/ppsspp/recipe.toml diff --git a/recipes/wip/emulators/vita3k/recipe.toml b/recipes/wip/emulators/game-console/psvita/vita3k/recipe.toml similarity index 100% rename from recipes/wip/emulators/vita3k/recipe.toml rename to recipes/wip/emulators/game-console/psvita/vita3k/recipe.toml diff --git a/recipes/wip/emulators/picodrive/recipe.toml b/recipes/wip/emulators/game-console/sega/picodrive/recipe.toml similarity index 100% rename from recipes/wip/emulators/picodrive/recipe.toml rename to recipes/wip/emulators/game-console/sega/picodrive/recipe.toml diff --git a/recipes/wip/emulators/uoyabause/recipe.toml b/recipes/wip/emulators/game-console/sega/uoyabause/recipe.toml similarity index 100% rename from recipes/wip/emulators/uoyabause/recipe.toml rename to recipes/wip/emulators/game-console/sega/uoyabause/recipe.toml diff --git a/recipes/wip/emulators/snes9x/recipe.toml b/recipes/wip/emulators/game-console/snes/snes9x/recipe.toml similarity index 100% rename from recipes/wip/emulators/snes9x/recipe.toml rename to recipes/wip/emulators/game-console/snes/snes9x/recipe.toml diff --git a/recipes/wip/emulators/zsnes/recipe.toml b/recipes/wip/emulators/game-console/snes/zsnes/recipe.toml similarity index 100% rename from recipes/wip/emulators/zsnes/recipe.toml rename to recipes/wip/emulators/game-console/snes/zsnes/recipe.toml diff --git a/recipes/wip/emulators/xemu/recipe.toml b/recipes/wip/emulators/game-console/xbox/xemu/recipe.toml similarity index 100% rename from recipes/wip/emulators/xemu/recipe.toml rename to recipes/wip/emulators/game-console/xbox/xemu/recipe.toml diff --git a/recipes/wip/emulators/xenia/recipe.toml b/recipes/wip/emulators/game-console/xbox360/xenia/recipe.toml similarity index 100% rename from recipes/wip/emulators/xenia/recipe.toml rename to recipes/wip/emulators/game-console/xbox360/xenia/recipe.toml diff --git a/recipes/wip/emulators/touchhle/recipe.toml b/recipes/wip/emulators/mobile/touchhle/recipe.toml similarity index 100% rename from recipes/wip/emulators/touchhle/recipe.toml rename to recipes/wip/emulators/mobile/touchhle/recipe.toml diff --git a/recipes/wip/emulators/wie/recipe.toml b/recipes/wip/emulators/mobile/wie/recipe.toml similarity index 100% rename from recipes/wip/emulators/wie/recipe.toml rename to recipes/wip/emulators/mobile/wie/recipe.toml diff --git a/recipes/wip/emulators/ruffle/recipe.toml b/recipes/wip/emulators/pc/ruffle/recipe.toml similarity index 100% rename from recipes/wip/emulators/ruffle/recipe.toml rename to recipes/wip/emulators/pc/ruffle/recipe.toml diff --git a/recipes/wip/emulators/pc/boxedwine/recipe.toml b/recipes/wip/emulators/pc/wine/boxedwine/recipe.toml similarity index 100% rename from recipes/wip/emulators/pc/boxedwine/recipe.toml rename to recipes/wip/emulators/pc/wine/boxedwine/recipe.toml diff --git a/recipes/wip/emulators/wine-stable/recipe.toml b/recipes/wip/emulators/pc/wine/wine-stable/recipe.toml similarity index 100% rename from recipes/wip/emulators/wine-stable/recipe.toml rename to recipes/wip/emulators/pc/wine/wine-stable/recipe.toml diff --git a/recipes/wip/emulators/rust-u2f/recipe.toml b/recipes/wip/emulators/security/rust-u2f/recipe.toml similarity index 100% rename from recipes/wip/emulators/rust-u2f/recipe.toml rename to recipes/wip/emulators/security/rust-u2f/recipe.toml From 81d4969dd6850901411a60955ff223d6ce0a8595 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 25 Jun 2024 21:02:30 +0000 Subject: [PATCH 1937/3180] Move recipes --- recipes/wip/benchmarks/{ => cargo}/cargo-benchcmp/recipe.toml | 0 recipes/wip/benchmarks/{ => cargo}/cargo-criterion/recipe.toml | 0 recipes/wip/benchmarks/{ => hpc}/hpcc/recipe.toml | 0 recipes/wip/benchmarks/{ => hpc}/hpcg/recipe.toml | 0 recipes/wip/benchmarks/{ => hpc}/minibude/recipe.toml | 0 recipes/wip/benchmarks/{ => io}/fio/recipe.toml | 0 recipes/wip/benchmarks/{ => io}/simple-disk-benchmark/recipe.toml | 0 .../wip/benchmarks/{ => suite}/phoronix-test-suite/recipe.toml | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/benchmarks/{ => cargo}/cargo-benchcmp/recipe.toml (100%) rename recipes/wip/benchmarks/{ => cargo}/cargo-criterion/recipe.toml (100%) rename recipes/wip/benchmarks/{ => hpc}/hpcc/recipe.toml (100%) rename recipes/wip/benchmarks/{ => hpc}/hpcg/recipe.toml (100%) rename recipes/wip/benchmarks/{ => hpc}/minibude/recipe.toml (100%) rename recipes/wip/benchmarks/{ => io}/fio/recipe.toml (100%) rename recipes/wip/benchmarks/{ => io}/simple-disk-benchmark/recipe.toml (100%) rename recipes/wip/benchmarks/{ => suite}/phoronix-test-suite/recipe.toml (100%) diff --git a/recipes/wip/benchmarks/cargo-benchcmp/recipe.toml b/recipes/wip/benchmarks/cargo/cargo-benchcmp/recipe.toml similarity index 100% rename from recipes/wip/benchmarks/cargo-benchcmp/recipe.toml rename to recipes/wip/benchmarks/cargo/cargo-benchcmp/recipe.toml diff --git a/recipes/wip/benchmarks/cargo-criterion/recipe.toml b/recipes/wip/benchmarks/cargo/cargo-criterion/recipe.toml similarity index 100% rename from recipes/wip/benchmarks/cargo-criterion/recipe.toml rename to recipes/wip/benchmarks/cargo/cargo-criterion/recipe.toml diff --git a/recipes/wip/benchmarks/hpcc/recipe.toml b/recipes/wip/benchmarks/hpc/hpcc/recipe.toml similarity index 100% rename from recipes/wip/benchmarks/hpcc/recipe.toml rename to recipes/wip/benchmarks/hpc/hpcc/recipe.toml diff --git a/recipes/wip/benchmarks/hpcg/recipe.toml b/recipes/wip/benchmarks/hpc/hpcg/recipe.toml similarity index 100% rename from recipes/wip/benchmarks/hpcg/recipe.toml rename to recipes/wip/benchmarks/hpc/hpcg/recipe.toml diff --git a/recipes/wip/benchmarks/minibude/recipe.toml b/recipes/wip/benchmarks/hpc/minibude/recipe.toml similarity index 100% rename from recipes/wip/benchmarks/minibude/recipe.toml rename to recipes/wip/benchmarks/hpc/minibude/recipe.toml diff --git a/recipes/wip/benchmarks/fio/recipe.toml b/recipes/wip/benchmarks/io/fio/recipe.toml similarity index 100% rename from recipes/wip/benchmarks/fio/recipe.toml rename to recipes/wip/benchmarks/io/fio/recipe.toml diff --git a/recipes/wip/benchmarks/simple-disk-benchmark/recipe.toml b/recipes/wip/benchmarks/io/simple-disk-benchmark/recipe.toml similarity index 100% rename from recipes/wip/benchmarks/simple-disk-benchmark/recipe.toml rename to recipes/wip/benchmarks/io/simple-disk-benchmark/recipe.toml diff --git a/recipes/wip/benchmarks/phoronix-test-suite/recipe.toml b/recipes/wip/benchmarks/suite/phoronix-test-suite/recipe.toml similarity index 100% rename from recipes/wip/benchmarks/phoronix-test-suite/recipe.toml rename to recipes/wip/benchmarks/suite/phoronix-test-suite/recipe.toml From 2f1c2f742c438300a875ff5217996ff09542bcf6 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 25 Jun 2024 21:17:32 +0000 Subject: [PATCH 1938/3180] Move recipes --- recipes/wip/benchmarks/dacapo-benchmarks/recipe.toml | 6 +++--- recipes/wip/benchmarks/{ => io}/blogbench/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-about/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-all-features/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-attribution/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-audit/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-auditable/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-auto/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-binutils/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-bloat/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-c/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-cache/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-careful/recipe.toml | 0 .../wip/dev/{ => cargo}/cargo-check-deadlock/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-checkmate/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-clone-crate/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-clone/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-compete/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-component/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-crev/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-deny/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-depsize/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-derivefmt/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-diet/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-dist/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-docs-rs/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-docs/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-duplicates/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-edit/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-equip/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-expand/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-featalign/recipe.toml | 0 .../dev/{ => cargo}/cargo-feature-combinations/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-feature/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-files/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-fixture/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-ft/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-fuzz/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-gc/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-geiger/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-generate/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-get/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-goggles/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-guppy/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-hack/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-hackerman/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-hakari/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-http-registry/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-info/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-lambda/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-leet/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-leptos/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-license/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-limit/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-list/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-llvm-cov/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-llvm-lines/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-loc/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-lockup/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-machete/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-make/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-modules/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-msrv/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-multivers/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-mutants/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-nextest/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-outofdate/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-packager/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-patch/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-public-api/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-px/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-qtest/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-rdme/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-release/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-remark/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-run-bin/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-scaffold/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-selector/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-semver-checks/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-shear/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-show-asm/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-single-line/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-smart-release/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-spellcheck/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-supply-chain/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-sweep/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-sync-rdme/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-tally/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-tarpaulin/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-temp/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-trend/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-trim/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-udeps/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-ui/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-unfmt/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-unmaintained/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-update/recipe.toml | 0 .../wip/dev/{ => cargo}/cargo-vendor-filterer/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-vet/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-wasi/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-wasix/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-watch/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-whatfeatures/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-wizard/recipe.toml | 0 .../wip/dev/{ => cargo}/cargo-workspace-version/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-workspaces/recipe.toml | 0 recipes/wip/dev/{ => cargo}/cargo-zigbuild/recipe.toml | 0 107 files changed, 3 insertions(+), 3 deletions(-) rename recipes/wip/benchmarks/{ => io}/blogbench/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-about/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-all-features/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-attribution/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-audit/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-auditable/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-auto/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-binutils/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-bloat/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-c/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-cache/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-careful/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-check-deadlock/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-checkmate/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-clone-crate/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-clone/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-compete/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-component/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-crev/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-deny/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-depsize/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-derivefmt/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-diet/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-dist/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-docs-rs/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-docs/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-duplicates/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-edit/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-equip/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-expand/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-featalign/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-feature-combinations/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-feature/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-files/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-fixture/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-ft/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-fuzz/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-gc/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-geiger/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-generate/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-get/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-goggles/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-guppy/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-hack/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-hackerman/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-hakari/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-http-registry/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-info/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-lambda/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-leet/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-leptos/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-license/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-limit/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-list/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-llvm-cov/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-llvm-lines/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-loc/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-lockup/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-machete/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-make/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-modules/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-msrv/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-multivers/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-mutants/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-nextest/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-outofdate/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-packager/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-patch/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-public-api/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-px/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-qtest/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-rdme/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-release/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-remark/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-run-bin/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-scaffold/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-selector/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-semver-checks/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-shear/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-show-asm/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-single-line/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-smart-release/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-spellcheck/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-supply-chain/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-sweep/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-sync-rdme/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-tally/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-tarpaulin/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-temp/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-trend/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-trim/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-udeps/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-ui/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-unfmt/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-unmaintained/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-update/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-vendor-filterer/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-vet/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-wasi/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-wasix/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-watch/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-whatfeatures/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-wizard/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-workspace-version/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-workspaces/recipe.toml (100%) rename recipes/wip/dev/{ => cargo}/cargo-zigbuild/recipe.toml (100%) diff --git a/recipes/wip/benchmarks/dacapo-benchmarks/recipe.toml b/recipes/wip/benchmarks/dacapo-benchmarks/recipe.toml index a4b2ff49..0fc1315b 100644 --- a/recipes/wip/benchmarks/dacapo-benchmarks/recipe.toml +++ b/recipes/wip/benchmarks/dacapo-benchmarks/recipe.toml @@ -1,6 +1,6 @@ -#TODO missing script for "ant", see https://github.com/dacapobench/dacapobench#building +#TODO missing data type to download the Java bytecode +# download link - https://download.dacapobench.org/chopin/dacapo-23.11-chopin.zip [source] -git = "https://github.com/dacapobench/dacapobench" -rev = "fd292e92f8c40495a6ca05ff3b8a77c6c4265606" + [build] template = "custom" diff --git a/recipes/wip/benchmarks/blogbench/recipe.toml b/recipes/wip/benchmarks/io/blogbench/recipe.toml similarity index 100% rename from recipes/wip/benchmarks/blogbench/recipe.toml rename to recipes/wip/benchmarks/io/blogbench/recipe.toml diff --git a/recipes/wip/dev/cargo-about/recipe.toml b/recipes/wip/dev/cargo/cargo-about/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-about/recipe.toml rename to recipes/wip/dev/cargo/cargo-about/recipe.toml diff --git a/recipes/wip/dev/cargo-all-features/recipe.toml b/recipes/wip/dev/cargo/cargo-all-features/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-all-features/recipe.toml rename to recipes/wip/dev/cargo/cargo-all-features/recipe.toml diff --git a/recipes/wip/dev/cargo-attribution/recipe.toml b/recipes/wip/dev/cargo/cargo-attribution/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-attribution/recipe.toml rename to recipes/wip/dev/cargo/cargo-attribution/recipe.toml diff --git a/recipes/wip/dev/cargo-audit/recipe.toml b/recipes/wip/dev/cargo/cargo-audit/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-audit/recipe.toml rename to recipes/wip/dev/cargo/cargo-audit/recipe.toml diff --git a/recipes/wip/dev/cargo-auditable/recipe.toml b/recipes/wip/dev/cargo/cargo-auditable/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-auditable/recipe.toml rename to recipes/wip/dev/cargo/cargo-auditable/recipe.toml diff --git a/recipes/wip/dev/cargo-auto/recipe.toml b/recipes/wip/dev/cargo/cargo-auto/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-auto/recipe.toml rename to recipes/wip/dev/cargo/cargo-auto/recipe.toml diff --git a/recipes/wip/dev/cargo-binutils/recipe.toml b/recipes/wip/dev/cargo/cargo-binutils/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-binutils/recipe.toml rename to recipes/wip/dev/cargo/cargo-binutils/recipe.toml diff --git a/recipes/wip/dev/cargo-bloat/recipe.toml b/recipes/wip/dev/cargo/cargo-bloat/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-bloat/recipe.toml rename to recipes/wip/dev/cargo/cargo-bloat/recipe.toml diff --git a/recipes/wip/dev/cargo-c/recipe.toml b/recipes/wip/dev/cargo/cargo-c/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-c/recipe.toml rename to recipes/wip/dev/cargo/cargo-c/recipe.toml diff --git a/recipes/wip/dev/cargo-cache/recipe.toml b/recipes/wip/dev/cargo/cargo-cache/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-cache/recipe.toml rename to recipes/wip/dev/cargo/cargo-cache/recipe.toml diff --git a/recipes/wip/dev/cargo-careful/recipe.toml b/recipes/wip/dev/cargo/cargo-careful/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-careful/recipe.toml rename to recipes/wip/dev/cargo/cargo-careful/recipe.toml diff --git a/recipes/wip/dev/cargo-check-deadlock/recipe.toml b/recipes/wip/dev/cargo/cargo-check-deadlock/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-check-deadlock/recipe.toml rename to recipes/wip/dev/cargo/cargo-check-deadlock/recipe.toml diff --git a/recipes/wip/dev/cargo-checkmate/recipe.toml b/recipes/wip/dev/cargo/cargo-checkmate/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-checkmate/recipe.toml rename to recipes/wip/dev/cargo/cargo-checkmate/recipe.toml diff --git a/recipes/wip/dev/cargo-clone-crate/recipe.toml b/recipes/wip/dev/cargo/cargo-clone-crate/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-clone-crate/recipe.toml rename to recipes/wip/dev/cargo/cargo-clone-crate/recipe.toml diff --git a/recipes/wip/dev/cargo-clone/recipe.toml b/recipes/wip/dev/cargo/cargo-clone/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-clone/recipe.toml rename to recipes/wip/dev/cargo/cargo-clone/recipe.toml diff --git a/recipes/wip/dev/cargo-compete/recipe.toml b/recipes/wip/dev/cargo/cargo-compete/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-compete/recipe.toml rename to recipes/wip/dev/cargo/cargo-compete/recipe.toml diff --git a/recipes/wip/dev/cargo-component/recipe.toml b/recipes/wip/dev/cargo/cargo-component/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-component/recipe.toml rename to recipes/wip/dev/cargo/cargo-component/recipe.toml diff --git a/recipes/wip/dev/cargo-crev/recipe.toml b/recipes/wip/dev/cargo/cargo-crev/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-crev/recipe.toml rename to recipes/wip/dev/cargo/cargo-crev/recipe.toml diff --git a/recipes/wip/dev/cargo-deny/recipe.toml b/recipes/wip/dev/cargo/cargo-deny/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-deny/recipe.toml rename to recipes/wip/dev/cargo/cargo-deny/recipe.toml diff --git a/recipes/wip/dev/cargo-depsize/recipe.toml b/recipes/wip/dev/cargo/cargo-depsize/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-depsize/recipe.toml rename to recipes/wip/dev/cargo/cargo-depsize/recipe.toml diff --git a/recipes/wip/dev/cargo-derivefmt/recipe.toml b/recipes/wip/dev/cargo/cargo-derivefmt/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-derivefmt/recipe.toml rename to recipes/wip/dev/cargo/cargo-derivefmt/recipe.toml diff --git a/recipes/wip/dev/cargo-diet/recipe.toml b/recipes/wip/dev/cargo/cargo-diet/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-diet/recipe.toml rename to recipes/wip/dev/cargo/cargo-diet/recipe.toml diff --git a/recipes/wip/dev/cargo-dist/recipe.toml b/recipes/wip/dev/cargo/cargo-dist/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-dist/recipe.toml rename to recipes/wip/dev/cargo/cargo-dist/recipe.toml diff --git a/recipes/wip/dev/cargo-docs-rs/recipe.toml b/recipes/wip/dev/cargo/cargo-docs-rs/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-docs-rs/recipe.toml rename to recipes/wip/dev/cargo/cargo-docs-rs/recipe.toml diff --git a/recipes/wip/dev/cargo-docs/recipe.toml b/recipes/wip/dev/cargo/cargo-docs/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-docs/recipe.toml rename to recipes/wip/dev/cargo/cargo-docs/recipe.toml diff --git a/recipes/wip/dev/cargo-duplicates/recipe.toml b/recipes/wip/dev/cargo/cargo-duplicates/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-duplicates/recipe.toml rename to recipes/wip/dev/cargo/cargo-duplicates/recipe.toml diff --git a/recipes/wip/dev/cargo-edit/recipe.toml b/recipes/wip/dev/cargo/cargo-edit/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-edit/recipe.toml rename to recipes/wip/dev/cargo/cargo-edit/recipe.toml diff --git a/recipes/wip/dev/cargo-equip/recipe.toml b/recipes/wip/dev/cargo/cargo-equip/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-equip/recipe.toml rename to recipes/wip/dev/cargo/cargo-equip/recipe.toml diff --git a/recipes/wip/dev/cargo-expand/recipe.toml b/recipes/wip/dev/cargo/cargo-expand/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-expand/recipe.toml rename to recipes/wip/dev/cargo/cargo-expand/recipe.toml diff --git a/recipes/wip/dev/cargo-featalign/recipe.toml b/recipes/wip/dev/cargo/cargo-featalign/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-featalign/recipe.toml rename to recipes/wip/dev/cargo/cargo-featalign/recipe.toml diff --git a/recipes/wip/dev/cargo-feature-combinations/recipe.toml b/recipes/wip/dev/cargo/cargo-feature-combinations/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-feature-combinations/recipe.toml rename to recipes/wip/dev/cargo/cargo-feature-combinations/recipe.toml diff --git a/recipes/wip/dev/cargo-feature/recipe.toml b/recipes/wip/dev/cargo/cargo-feature/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-feature/recipe.toml rename to recipes/wip/dev/cargo/cargo-feature/recipe.toml diff --git a/recipes/wip/dev/cargo-files/recipe.toml b/recipes/wip/dev/cargo/cargo-files/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-files/recipe.toml rename to recipes/wip/dev/cargo/cargo-files/recipe.toml diff --git a/recipes/wip/dev/cargo-fixture/recipe.toml b/recipes/wip/dev/cargo/cargo-fixture/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-fixture/recipe.toml rename to recipes/wip/dev/cargo/cargo-fixture/recipe.toml diff --git a/recipes/wip/dev/cargo-ft/recipe.toml b/recipes/wip/dev/cargo/cargo-ft/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-ft/recipe.toml rename to recipes/wip/dev/cargo/cargo-ft/recipe.toml diff --git a/recipes/wip/dev/cargo-fuzz/recipe.toml b/recipes/wip/dev/cargo/cargo-fuzz/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-fuzz/recipe.toml rename to recipes/wip/dev/cargo/cargo-fuzz/recipe.toml diff --git a/recipes/wip/dev/cargo-gc/recipe.toml b/recipes/wip/dev/cargo/cargo-gc/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-gc/recipe.toml rename to recipes/wip/dev/cargo/cargo-gc/recipe.toml diff --git a/recipes/wip/dev/cargo-geiger/recipe.toml b/recipes/wip/dev/cargo/cargo-geiger/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-geiger/recipe.toml rename to recipes/wip/dev/cargo/cargo-geiger/recipe.toml diff --git a/recipes/wip/dev/cargo-generate/recipe.toml b/recipes/wip/dev/cargo/cargo-generate/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-generate/recipe.toml rename to recipes/wip/dev/cargo/cargo-generate/recipe.toml diff --git a/recipes/wip/dev/cargo-get/recipe.toml b/recipes/wip/dev/cargo/cargo-get/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-get/recipe.toml rename to recipes/wip/dev/cargo/cargo-get/recipe.toml diff --git a/recipes/wip/dev/cargo-goggles/recipe.toml b/recipes/wip/dev/cargo/cargo-goggles/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-goggles/recipe.toml rename to recipes/wip/dev/cargo/cargo-goggles/recipe.toml diff --git a/recipes/wip/dev/cargo-guppy/recipe.toml b/recipes/wip/dev/cargo/cargo-guppy/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-guppy/recipe.toml rename to recipes/wip/dev/cargo/cargo-guppy/recipe.toml diff --git a/recipes/wip/dev/cargo-hack/recipe.toml b/recipes/wip/dev/cargo/cargo-hack/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-hack/recipe.toml rename to recipes/wip/dev/cargo/cargo-hack/recipe.toml diff --git a/recipes/wip/dev/cargo-hackerman/recipe.toml b/recipes/wip/dev/cargo/cargo-hackerman/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-hackerman/recipe.toml rename to recipes/wip/dev/cargo/cargo-hackerman/recipe.toml diff --git a/recipes/wip/dev/cargo-hakari/recipe.toml b/recipes/wip/dev/cargo/cargo-hakari/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-hakari/recipe.toml rename to recipes/wip/dev/cargo/cargo-hakari/recipe.toml diff --git a/recipes/wip/dev/cargo-http-registry/recipe.toml b/recipes/wip/dev/cargo/cargo-http-registry/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-http-registry/recipe.toml rename to recipes/wip/dev/cargo/cargo-http-registry/recipe.toml diff --git a/recipes/wip/dev/cargo-info/recipe.toml b/recipes/wip/dev/cargo/cargo-info/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-info/recipe.toml rename to recipes/wip/dev/cargo/cargo-info/recipe.toml diff --git a/recipes/wip/dev/cargo-lambda/recipe.toml b/recipes/wip/dev/cargo/cargo-lambda/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-lambda/recipe.toml rename to recipes/wip/dev/cargo/cargo-lambda/recipe.toml diff --git a/recipes/wip/dev/cargo-leet/recipe.toml b/recipes/wip/dev/cargo/cargo-leet/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-leet/recipe.toml rename to recipes/wip/dev/cargo/cargo-leet/recipe.toml diff --git a/recipes/wip/dev/cargo-leptos/recipe.toml b/recipes/wip/dev/cargo/cargo-leptos/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-leptos/recipe.toml rename to recipes/wip/dev/cargo/cargo-leptos/recipe.toml diff --git a/recipes/wip/dev/cargo-license/recipe.toml b/recipes/wip/dev/cargo/cargo-license/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-license/recipe.toml rename to recipes/wip/dev/cargo/cargo-license/recipe.toml diff --git a/recipes/wip/dev/cargo-limit/recipe.toml b/recipes/wip/dev/cargo/cargo-limit/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-limit/recipe.toml rename to recipes/wip/dev/cargo/cargo-limit/recipe.toml diff --git a/recipes/wip/dev/cargo-list/recipe.toml b/recipes/wip/dev/cargo/cargo-list/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-list/recipe.toml rename to recipes/wip/dev/cargo/cargo-list/recipe.toml diff --git a/recipes/wip/dev/cargo-llvm-cov/recipe.toml b/recipes/wip/dev/cargo/cargo-llvm-cov/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-llvm-cov/recipe.toml rename to recipes/wip/dev/cargo/cargo-llvm-cov/recipe.toml diff --git a/recipes/wip/dev/cargo-llvm-lines/recipe.toml b/recipes/wip/dev/cargo/cargo-llvm-lines/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-llvm-lines/recipe.toml rename to recipes/wip/dev/cargo/cargo-llvm-lines/recipe.toml diff --git a/recipes/wip/dev/cargo-loc/recipe.toml b/recipes/wip/dev/cargo/cargo-loc/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-loc/recipe.toml rename to recipes/wip/dev/cargo/cargo-loc/recipe.toml diff --git a/recipes/wip/dev/cargo-lockup/recipe.toml b/recipes/wip/dev/cargo/cargo-lockup/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-lockup/recipe.toml rename to recipes/wip/dev/cargo/cargo-lockup/recipe.toml diff --git a/recipes/wip/dev/cargo-machete/recipe.toml b/recipes/wip/dev/cargo/cargo-machete/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-machete/recipe.toml rename to recipes/wip/dev/cargo/cargo-machete/recipe.toml diff --git a/recipes/wip/dev/cargo-make/recipe.toml b/recipes/wip/dev/cargo/cargo-make/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-make/recipe.toml rename to recipes/wip/dev/cargo/cargo-make/recipe.toml diff --git a/recipes/wip/dev/cargo-modules/recipe.toml b/recipes/wip/dev/cargo/cargo-modules/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-modules/recipe.toml rename to recipes/wip/dev/cargo/cargo-modules/recipe.toml diff --git a/recipes/wip/dev/cargo-msrv/recipe.toml b/recipes/wip/dev/cargo/cargo-msrv/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-msrv/recipe.toml rename to recipes/wip/dev/cargo/cargo-msrv/recipe.toml diff --git a/recipes/wip/dev/cargo-multivers/recipe.toml b/recipes/wip/dev/cargo/cargo-multivers/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-multivers/recipe.toml rename to recipes/wip/dev/cargo/cargo-multivers/recipe.toml diff --git a/recipes/wip/dev/cargo-mutants/recipe.toml b/recipes/wip/dev/cargo/cargo-mutants/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-mutants/recipe.toml rename to recipes/wip/dev/cargo/cargo-mutants/recipe.toml diff --git a/recipes/wip/dev/cargo-nextest/recipe.toml b/recipes/wip/dev/cargo/cargo-nextest/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-nextest/recipe.toml rename to recipes/wip/dev/cargo/cargo-nextest/recipe.toml diff --git a/recipes/wip/dev/cargo-outofdate/recipe.toml b/recipes/wip/dev/cargo/cargo-outofdate/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-outofdate/recipe.toml rename to recipes/wip/dev/cargo/cargo-outofdate/recipe.toml diff --git a/recipes/wip/dev/cargo-packager/recipe.toml b/recipes/wip/dev/cargo/cargo-packager/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-packager/recipe.toml rename to recipes/wip/dev/cargo/cargo-packager/recipe.toml diff --git a/recipes/wip/dev/cargo-patch/recipe.toml b/recipes/wip/dev/cargo/cargo-patch/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-patch/recipe.toml rename to recipes/wip/dev/cargo/cargo-patch/recipe.toml diff --git a/recipes/wip/dev/cargo-public-api/recipe.toml b/recipes/wip/dev/cargo/cargo-public-api/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-public-api/recipe.toml rename to recipes/wip/dev/cargo/cargo-public-api/recipe.toml diff --git a/recipes/wip/dev/cargo-px/recipe.toml b/recipes/wip/dev/cargo/cargo-px/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-px/recipe.toml rename to recipes/wip/dev/cargo/cargo-px/recipe.toml diff --git a/recipes/wip/dev/cargo-qtest/recipe.toml b/recipes/wip/dev/cargo/cargo-qtest/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-qtest/recipe.toml rename to recipes/wip/dev/cargo/cargo-qtest/recipe.toml diff --git a/recipes/wip/dev/cargo-rdme/recipe.toml b/recipes/wip/dev/cargo/cargo-rdme/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-rdme/recipe.toml rename to recipes/wip/dev/cargo/cargo-rdme/recipe.toml diff --git a/recipes/wip/dev/cargo-release/recipe.toml b/recipes/wip/dev/cargo/cargo-release/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-release/recipe.toml rename to recipes/wip/dev/cargo/cargo-release/recipe.toml diff --git a/recipes/wip/dev/cargo-remark/recipe.toml b/recipes/wip/dev/cargo/cargo-remark/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-remark/recipe.toml rename to recipes/wip/dev/cargo/cargo-remark/recipe.toml diff --git a/recipes/wip/dev/cargo-run-bin/recipe.toml b/recipes/wip/dev/cargo/cargo-run-bin/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-run-bin/recipe.toml rename to recipes/wip/dev/cargo/cargo-run-bin/recipe.toml diff --git a/recipes/wip/dev/cargo-scaffold/recipe.toml b/recipes/wip/dev/cargo/cargo-scaffold/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-scaffold/recipe.toml rename to recipes/wip/dev/cargo/cargo-scaffold/recipe.toml diff --git a/recipes/wip/dev/cargo-selector/recipe.toml b/recipes/wip/dev/cargo/cargo-selector/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-selector/recipe.toml rename to recipes/wip/dev/cargo/cargo-selector/recipe.toml diff --git a/recipes/wip/dev/cargo-semver-checks/recipe.toml b/recipes/wip/dev/cargo/cargo-semver-checks/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-semver-checks/recipe.toml rename to recipes/wip/dev/cargo/cargo-semver-checks/recipe.toml diff --git a/recipes/wip/dev/cargo-shear/recipe.toml b/recipes/wip/dev/cargo/cargo-shear/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-shear/recipe.toml rename to recipes/wip/dev/cargo/cargo-shear/recipe.toml diff --git a/recipes/wip/dev/cargo-show-asm/recipe.toml b/recipes/wip/dev/cargo/cargo-show-asm/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-show-asm/recipe.toml rename to recipes/wip/dev/cargo/cargo-show-asm/recipe.toml diff --git a/recipes/wip/dev/cargo-single-line/recipe.toml b/recipes/wip/dev/cargo/cargo-single-line/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-single-line/recipe.toml rename to recipes/wip/dev/cargo/cargo-single-line/recipe.toml diff --git a/recipes/wip/dev/cargo-smart-release/recipe.toml b/recipes/wip/dev/cargo/cargo-smart-release/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-smart-release/recipe.toml rename to recipes/wip/dev/cargo/cargo-smart-release/recipe.toml diff --git a/recipes/wip/dev/cargo-spellcheck/recipe.toml b/recipes/wip/dev/cargo/cargo-spellcheck/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-spellcheck/recipe.toml rename to recipes/wip/dev/cargo/cargo-spellcheck/recipe.toml diff --git a/recipes/wip/dev/cargo-supply-chain/recipe.toml b/recipes/wip/dev/cargo/cargo-supply-chain/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-supply-chain/recipe.toml rename to recipes/wip/dev/cargo/cargo-supply-chain/recipe.toml diff --git a/recipes/wip/dev/cargo-sweep/recipe.toml b/recipes/wip/dev/cargo/cargo-sweep/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-sweep/recipe.toml rename to recipes/wip/dev/cargo/cargo-sweep/recipe.toml diff --git a/recipes/wip/dev/cargo-sync-rdme/recipe.toml b/recipes/wip/dev/cargo/cargo-sync-rdme/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-sync-rdme/recipe.toml rename to recipes/wip/dev/cargo/cargo-sync-rdme/recipe.toml diff --git a/recipes/wip/dev/cargo-tally/recipe.toml b/recipes/wip/dev/cargo/cargo-tally/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-tally/recipe.toml rename to recipes/wip/dev/cargo/cargo-tally/recipe.toml diff --git a/recipes/wip/dev/cargo-tarpaulin/recipe.toml b/recipes/wip/dev/cargo/cargo-tarpaulin/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-tarpaulin/recipe.toml rename to recipes/wip/dev/cargo/cargo-tarpaulin/recipe.toml diff --git a/recipes/wip/dev/cargo-temp/recipe.toml b/recipes/wip/dev/cargo/cargo-temp/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-temp/recipe.toml rename to recipes/wip/dev/cargo/cargo-temp/recipe.toml diff --git a/recipes/wip/dev/cargo-trend/recipe.toml b/recipes/wip/dev/cargo/cargo-trend/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-trend/recipe.toml rename to recipes/wip/dev/cargo/cargo-trend/recipe.toml diff --git a/recipes/wip/dev/cargo-trim/recipe.toml b/recipes/wip/dev/cargo/cargo-trim/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-trim/recipe.toml rename to recipes/wip/dev/cargo/cargo-trim/recipe.toml diff --git a/recipes/wip/dev/cargo-udeps/recipe.toml b/recipes/wip/dev/cargo/cargo-udeps/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-udeps/recipe.toml rename to recipes/wip/dev/cargo/cargo-udeps/recipe.toml diff --git a/recipes/wip/dev/cargo-ui/recipe.toml b/recipes/wip/dev/cargo/cargo-ui/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-ui/recipe.toml rename to recipes/wip/dev/cargo/cargo-ui/recipe.toml diff --git a/recipes/wip/dev/cargo-unfmt/recipe.toml b/recipes/wip/dev/cargo/cargo-unfmt/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-unfmt/recipe.toml rename to recipes/wip/dev/cargo/cargo-unfmt/recipe.toml diff --git a/recipes/wip/dev/cargo-unmaintained/recipe.toml b/recipes/wip/dev/cargo/cargo-unmaintained/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-unmaintained/recipe.toml rename to recipes/wip/dev/cargo/cargo-unmaintained/recipe.toml diff --git a/recipes/wip/dev/cargo-update/recipe.toml b/recipes/wip/dev/cargo/cargo-update/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-update/recipe.toml rename to recipes/wip/dev/cargo/cargo-update/recipe.toml diff --git a/recipes/wip/dev/cargo-vendor-filterer/recipe.toml b/recipes/wip/dev/cargo/cargo-vendor-filterer/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-vendor-filterer/recipe.toml rename to recipes/wip/dev/cargo/cargo-vendor-filterer/recipe.toml diff --git a/recipes/wip/dev/cargo-vet/recipe.toml b/recipes/wip/dev/cargo/cargo-vet/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-vet/recipe.toml rename to recipes/wip/dev/cargo/cargo-vet/recipe.toml diff --git a/recipes/wip/dev/cargo-wasi/recipe.toml b/recipes/wip/dev/cargo/cargo-wasi/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-wasi/recipe.toml rename to recipes/wip/dev/cargo/cargo-wasi/recipe.toml diff --git a/recipes/wip/dev/cargo-wasix/recipe.toml b/recipes/wip/dev/cargo/cargo-wasix/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-wasix/recipe.toml rename to recipes/wip/dev/cargo/cargo-wasix/recipe.toml diff --git a/recipes/wip/dev/cargo-watch/recipe.toml b/recipes/wip/dev/cargo/cargo-watch/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-watch/recipe.toml rename to recipes/wip/dev/cargo/cargo-watch/recipe.toml diff --git a/recipes/wip/dev/cargo-whatfeatures/recipe.toml b/recipes/wip/dev/cargo/cargo-whatfeatures/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-whatfeatures/recipe.toml rename to recipes/wip/dev/cargo/cargo-whatfeatures/recipe.toml diff --git a/recipes/wip/dev/cargo-wizard/recipe.toml b/recipes/wip/dev/cargo/cargo-wizard/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-wizard/recipe.toml rename to recipes/wip/dev/cargo/cargo-wizard/recipe.toml diff --git a/recipes/wip/dev/cargo-workspace-version/recipe.toml b/recipes/wip/dev/cargo/cargo-workspace-version/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-workspace-version/recipe.toml rename to recipes/wip/dev/cargo/cargo-workspace-version/recipe.toml diff --git a/recipes/wip/dev/cargo-workspaces/recipe.toml b/recipes/wip/dev/cargo/cargo-workspaces/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-workspaces/recipe.toml rename to recipes/wip/dev/cargo/cargo-workspaces/recipe.toml diff --git a/recipes/wip/dev/cargo-zigbuild/recipe.toml b/recipes/wip/dev/cargo/cargo-zigbuild/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo-zigbuild/recipe.toml rename to recipes/wip/dev/cargo/cargo-zigbuild/recipe.toml From aa0556fc6177698bf95cf89a09e5a21b8c3fb8e1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 25 Jun 2024 21:23:33 +0000 Subject: [PATCH 1939/3180] Move recipes --- recipes/wip/dev/{ => build-system}/ant/recipe.toml | 0 recipes/wip/dev/{ => build-system}/meson/recipe.toml | 0 recipes/wip/dev/{ => build-system}/ninja-build/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-about/recipe.toml | 0 .../wip/dev/{cargo => cargo-tools}/cargo-all-features/recipe.toml | 0 .../wip/dev/{cargo => cargo-tools}/cargo-attribution/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-audit/recipe.toml | 0 .../wip/dev/{cargo => cargo-tools}/cargo-auditable/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-auto/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-binutils/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-bloat/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-c/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-cache/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-careful/recipe.toml | 0 .../dev/{cargo => cargo-tools}/cargo-check-deadlock/recipe.toml | 0 .../wip/dev/{cargo => cargo-tools}/cargo-checkmate/recipe.toml | 0 .../wip/dev/{cargo => cargo-tools}/cargo-clone-crate/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-clone/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-compete/recipe.toml | 0 .../wip/dev/{cargo => cargo-tools}/cargo-component/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-crev/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-deny/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-depsize/recipe.toml | 0 .../wip/dev/{cargo => cargo-tools}/cargo-derivefmt/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-diet/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-dist/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-docs-rs/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-docs/recipe.toml | 0 .../wip/dev/{cargo => cargo-tools}/cargo-duplicates/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-edit/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-equip/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-expand/recipe.toml | 0 .../wip/dev/{cargo => cargo-tools}/cargo-featalign/recipe.toml | 0 .../{cargo => cargo-tools}/cargo-feature-combinations/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-feature/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-files/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-fixture/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-ft/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-fuzz/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-gc/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-geiger/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-generate/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-get/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-goggles/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-guppy/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-hack/recipe.toml | 0 .../wip/dev/{cargo => cargo-tools}/cargo-hackerman/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-hakari/recipe.toml | 0 .../dev/{cargo => cargo-tools}/cargo-http-registry/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-info/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-lambda/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-leet/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-leptos/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-license/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-limit/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-list/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-llvm-cov/recipe.toml | 0 .../wip/dev/{cargo => cargo-tools}/cargo-llvm-lines/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-loc/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-lockup/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-machete/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-make/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-modules/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-msrv/recipe.toml | 0 .../wip/dev/{cargo => cargo-tools}/cargo-multivers/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-mutants/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-nextest/recipe.toml | 0 .../wip/dev/{cargo => cargo-tools}/cargo-outofdate/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-packager/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-patch/recipe.toml | 0 .../wip/dev/{cargo => cargo-tools}/cargo-public-api/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-px/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-qtest/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-rdme/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-release/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-remark/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-run-bin/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-scaffold/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-selector/recipe.toml | 0 .../dev/{cargo => cargo-tools}/cargo-semver-checks/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-shear/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-show-asm/recipe.toml | 0 .../wip/dev/{cargo => cargo-tools}/cargo-single-line/recipe.toml | 0 .../dev/{cargo => cargo-tools}/cargo-smart-release/recipe.toml | 0 .../wip/dev/{cargo => cargo-tools}/cargo-spellcheck/recipe.toml | 0 .../wip/dev/{cargo => cargo-tools}/cargo-supply-chain/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-sweep/recipe.toml | 0 .../wip/dev/{cargo => cargo-tools}/cargo-sync-rdme/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-tally/recipe.toml | 0 .../wip/dev/{cargo => cargo-tools}/cargo-tarpaulin/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-temp/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-trend/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-trim/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-udeps/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-ui/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-unfmt/recipe.toml | 0 .../wip/dev/{cargo => cargo-tools}/cargo-unmaintained/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-update/recipe.toml | 0 .../dev/{cargo => cargo-tools}/cargo-vendor-filterer/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-vet/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-wasi/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-wasix/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-watch/recipe.toml | 0 .../wip/dev/{cargo => cargo-tools}/cargo-whatfeatures/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-wizard/recipe.toml | 0 .../{cargo => cargo-tools}/cargo-workspace-version/recipe.toml | 0 .../wip/dev/{cargo => cargo-tools}/cargo-workspaces/recipe.toml | 0 recipes/wip/dev/{cargo => cargo-tools}/cargo-zigbuild/recipe.toml | 0 108 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/dev/{ => build-system}/ant/recipe.toml (100%) rename recipes/wip/dev/{ => build-system}/meson/recipe.toml (100%) rename recipes/wip/dev/{ => build-system}/ninja-build/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-about/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-all-features/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-attribution/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-audit/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-auditable/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-auto/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-binutils/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-bloat/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-c/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-cache/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-careful/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-check-deadlock/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-checkmate/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-clone-crate/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-clone/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-compete/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-component/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-crev/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-deny/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-depsize/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-derivefmt/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-diet/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-dist/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-docs-rs/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-docs/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-duplicates/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-edit/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-equip/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-expand/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-featalign/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-feature-combinations/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-feature/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-files/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-fixture/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-ft/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-fuzz/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-gc/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-geiger/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-generate/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-get/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-goggles/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-guppy/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-hack/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-hackerman/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-hakari/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-http-registry/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-info/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-lambda/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-leet/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-leptos/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-license/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-limit/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-list/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-llvm-cov/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-llvm-lines/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-loc/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-lockup/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-machete/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-make/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-modules/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-msrv/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-multivers/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-mutants/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-nextest/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-outofdate/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-packager/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-patch/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-public-api/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-px/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-qtest/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-rdme/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-release/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-remark/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-run-bin/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-scaffold/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-selector/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-semver-checks/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-shear/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-show-asm/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-single-line/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-smart-release/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-spellcheck/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-supply-chain/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-sweep/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-sync-rdme/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-tally/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-tarpaulin/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-temp/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-trend/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-trim/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-udeps/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-ui/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-unfmt/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-unmaintained/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-update/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-vendor-filterer/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-vet/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-wasi/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-wasix/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-watch/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-whatfeatures/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-wizard/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-workspace-version/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-workspaces/recipe.toml (100%) rename recipes/wip/dev/{cargo => cargo-tools}/cargo-zigbuild/recipe.toml (100%) diff --git a/recipes/wip/dev/ant/recipe.toml b/recipes/wip/dev/build-system/ant/recipe.toml similarity index 100% rename from recipes/wip/dev/ant/recipe.toml rename to recipes/wip/dev/build-system/ant/recipe.toml diff --git a/recipes/wip/dev/meson/recipe.toml b/recipes/wip/dev/build-system/meson/recipe.toml similarity index 100% rename from recipes/wip/dev/meson/recipe.toml rename to recipes/wip/dev/build-system/meson/recipe.toml diff --git a/recipes/wip/dev/ninja-build/recipe.toml b/recipes/wip/dev/build-system/ninja-build/recipe.toml similarity index 100% rename from recipes/wip/dev/ninja-build/recipe.toml rename to recipes/wip/dev/build-system/ninja-build/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-about/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-about/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-about/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-about/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-all-features/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-all-features/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-all-features/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-all-features/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-attribution/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-attribution/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-attribution/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-attribution/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-audit/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-audit/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-audit/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-audit/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-auditable/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-auditable/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-auditable/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-auditable/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-auto/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-auto/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-auto/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-auto/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-binutils/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-binutils/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-binutils/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-binutils/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-bloat/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-bloat/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-bloat/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-bloat/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-c/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-c/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-c/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-c/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-cache/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-cache/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-cache/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-cache/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-careful/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-careful/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-careful/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-careful/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-check-deadlock/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-check-deadlock/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-check-deadlock/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-check-deadlock/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-checkmate/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-checkmate/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-checkmate/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-checkmate/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-clone-crate/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-clone-crate/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-clone-crate/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-clone-crate/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-clone/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-clone/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-clone/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-clone/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-compete/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-compete/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-compete/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-compete/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-component/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-component/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-component/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-component/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-crev/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-crev/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-crev/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-crev/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-deny/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-deny/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-deny/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-deny/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-depsize/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-depsize/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-depsize/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-depsize/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-derivefmt/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-derivefmt/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-derivefmt/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-derivefmt/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-diet/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-diet/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-diet/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-diet/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-dist/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-dist/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-dist/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-dist/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-docs-rs/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-docs-rs/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-docs-rs/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-docs-rs/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-docs/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-docs/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-docs/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-docs/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-duplicates/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-duplicates/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-duplicates/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-duplicates/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-edit/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-edit/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-edit/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-edit/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-equip/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-equip/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-equip/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-equip/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-expand/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-expand/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-expand/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-expand/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-featalign/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-featalign/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-featalign/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-featalign/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-feature-combinations/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-feature-combinations/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-feature-combinations/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-feature-combinations/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-feature/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-feature/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-feature/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-feature/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-files/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-files/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-files/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-files/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-fixture/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-fixture/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-fixture/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-fixture/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-ft/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-ft/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-ft/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-ft/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-fuzz/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-fuzz/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-fuzz/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-fuzz/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-gc/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-gc/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-gc/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-gc/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-geiger/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-geiger/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-geiger/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-geiger/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-generate/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-generate/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-generate/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-generate/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-get/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-get/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-get/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-get/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-goggles/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-goggles/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-goggles/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-goggles/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-guppy/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-guppy/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-guppy/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-guppy/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-hack/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-hack/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-hack/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-hack/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-hackerman/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-hackerman/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-hackerman/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-hackerman/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-hakari/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-hakari/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-hakari/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-hakari/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-http-registry/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-http-registry/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-http-registry/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-http-registry/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-info/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-info/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-info/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-info/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-lambda/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-lambda/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-lambda/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-lambda/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-leet/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-leet/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-leet/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-leet/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-leptos/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-leptos/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-leptos/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-leptos/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-license/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-license/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-license/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-license/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-limit/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-limit/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-limit/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-limit/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-list/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-list/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-list/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-list/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-llvm-cov/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-llvm-cov/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-llvm-cov/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-llvm-cov/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-llvm-lines/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-llvm-lines/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-llvm-lines/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-llvm-lines/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-loc/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-loc/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-loc/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-loc/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-lockup/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-lockup/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-lockup/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-lockup/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-machete/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-machete/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-machete/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-machete/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-make/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-make/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-make/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-make/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-modules/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-modules/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-modules/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-modules/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-msrv/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-msrv/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-msrv/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-msrv/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-multivers/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-multivers/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-multivers/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-multivers/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-mutants/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-mutants/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-mutants/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-mutants/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-nextest/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-nextest/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-nextest/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-nextest/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-outofdate/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-outofdate/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-outofdate/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-outofdate/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-packager/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-packager/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-packager/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-packager/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-patch/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-patch/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-patch/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-patch/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-public-api/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-public-api/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-public-api/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-public-api/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-px/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-px/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-px/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-px/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-qtest/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-qtest/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-qtest/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-qtest/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-rdme/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-rdme/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-rdme/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-rdme/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-release/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-release/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-release/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-release/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-remark/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-remark/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-remark/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-remark/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-run-bin/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-run-bin/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-run-bin/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-run-bin/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-scaffold/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-scaffold/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-scaffold/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-scaffold/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-selector/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-selector/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-selector/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-selector/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-semver-checks/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-semver-checks/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-semver-checks/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-semver-checks/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-shear/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-shear/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-shear/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-shear/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-show-asm/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-show-asm/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-show-asm/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-show-asm/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-single-line/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-single-line/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-single-line/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-single-line/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-smart-release/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-smart-release/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-smart-release/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-smart-release/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-spellcheck/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-spellcheck/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-spellcheck/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-spellcheck/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-supply-chain/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-supply-chain/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-supply-chain/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-supply-chain/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-sweep/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-sweep/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-sweep/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-sweep/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-sync-rdme/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-sync-rdme/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-sync-rdme/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-sync-rdme/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-tally/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-tally/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-tally/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-tally/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-tarpaulin/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-tarpaulin/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-tarpaulin/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-tarpaulin/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-temp/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-temp/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-temp/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-temp/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-trend/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-trend/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-trend/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-trend/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-trim/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-trim/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-trim/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-trim/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-udeps/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-udeps/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-udeps/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-udeps/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-ui/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-ui/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-ui/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-ui/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-unfmt/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-unfmt/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-unfmt/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-unfmt/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-unmaintained/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-unmaintained/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-unmaintained/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-unmaintained/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-update/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-update/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-update/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-update/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-vendor-filterer/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-vendor-filterer/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-vendor-filterer/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-vendor-filterer/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-vet/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-vet/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-vet/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-vet/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-wasi/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-wasi/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-wasi/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-wasi/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-wasix/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-wasix/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-wasix/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-wasix/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-watch/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-watch/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-watch/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-watch/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-whatfeatures/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-whatfeatures/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-whatfeatures/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-whatfeatures/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-wizard/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-wizard/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-wizard/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-wizard/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-workspace-version/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-workspace-version/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-workspace-version/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-workspace-version/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-workspaces/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-workspaces/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-workspaces/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-workspaces/recipe.toml diff --git a/recipes/wip/dev/cargo/cargo-zigbuild/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-zigbuild/recipe.toml similarity index 100% rename from recipes/wip/dev/cargo/cargo-zigbuild/recipe.toml rename to recipes/wip/dev/cargo-tools/cargo-zigbuild/recipe.toml From a9cdcddc4a0ee613801d79e2ebda174d67e2d008 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 25 Jun 2024 21:35:57 +0000 Subject: [PATCH 1940/3180] Move recipes --- recipes/wip/dev/{ => game-engine}/defold-engine/recipe.toml | 0 recipes/wip/dev/{ => game-engine}/fyrox-template/recipe.toml | 0 recipes/wip/dev/{ => game-engine}/godot4/recipe.toml | 0 recipes/wip/dev/{ => git-tools}/git-absorb/recipe.toml | 0 recipes/wip/dev/{ => git-tools}/git-chain/recipe.toml | 0 recipes/wip/dev/{ => git-tools}/git-cliff/recipe.toml | 0 recipes/wip/dev/{ => git-tools}/git-grab/recipe.toml | 0 recipes/wip/dev/{ => git-tools}/git-graph/recipe.toml | 0 recipes/wip/dev/{ => git-tools}/git-ignore-generator/recipe.toml | 0 .../dev/{ => git-tools}/git-interactive-rebase-tool/recipe.toml | 0 recipes/wip/dev/{ => git-tools}/git-lfs/recipe.toml | 0 recipes/wip/dev/{ => git-tools}/git-repo-manager/recipe.toml | 0 recipes/wip/dev/{ => git-tools}/git-subset/recipe.toml | 0 recipes/wip/dev/{git-tool => git-tools/git-tool-rs}/recipe.toml | 0 recipes/wip/dev/git-tools/{ => git-tools-rs}/recipe.toml | 0 recipes/wip/dev/{ => lang}/elixir/recipe.toml | 0 recipes/wip/dev/{ => lang}/elm/recipe.toml | 0 recipes/wip/dev/{ => lang}/erlang/recipe.toml | 0 recipes/wip/dev/{ => lang}/gawk/recipe.toml | 0 recipes/wip/dev/{ => lang}/ghc/recipe.toml | 0 recipes/wip/dev/{ => lang}/ghostscript/recipe.toml | 0 recipes/wip/dev/{ => lang}/go/recipe.toml | 0 recipes/wip/dev/{ => lang/java}/openjdk11-headless/recipe.toml | 0 recipes/wip/dev/{ => lang/java}/openjdk17-headless/recipe.toml | 0 recipes/wip/dev/{ => lang/java}/openjdk21-headless/recipe.toml | 0 recipes/wip/dev/{ => lang/java}/openjdk8-headless/recipe.toml | 0 recipes/wip/dev/{ => lang}/julia-lts/recipe.toml | 0 recipes/wip/dev/{ => lang}/julia/recipe.toml | 0 recipes/wip/dev/{ => lang}/luajit/recipe.toml | 0 recipes/wip/dev/{ => lang}/nodejs-lts/recipe.toml | 0 recipes/wip/dev/{ => lang}/nodejs/recipe.toml | 0 recipes/wip/dev/{ => lang}/php/recipe.toml | 0 recipes/wip/dev/{ => lang}/pony-lang/recipe.toml | 0 recipes/wip/dev/{ => lang}/python310/recipe.toml | 0 recipes/wip/dev/{ => lang}/python312/recipe.toml | 0 35 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/dev/{ => game-engine}/defold-engine/recipe.toml (100%) rename recipes/wip/dev/{ => game-engine}/fyrox-template/recipe.toml (100%) rename recipes/wip/dev/{ => game-engine}/godot4/recipe.toml (100%) rename recipes/wip/dev/{ => git-tools}/git-absorb/recipe.toml (100%) rename recipes/wip/dev/{ => git-tools}/git-chain/recipe.toml (100%) rename recipes/wip/dev/{ => git-tools}/git-cliff/recipe.toml (100%) rename recipes/wip/dev/{ => git-tools}/git-grab/recipe.toml (100%) rename recipes/wip/dev/{ => git-tools}/git-graph/recipe.toml (100%) rename recipes/wip/dev/{ => git-tools}/git-ignore-generator/recipe.toml (100%) rename recipes/wip/dev/{ => git-tools}/git-interactive-rebase-tool/recipe.toml (100%) rename recipes/wip/dev/{ => git-tools}/git-lfs/recipe.toml (100%) rename recipes/wip/dev/{ => git-tools}/git-repo-manager/recipe.toml (100%) rename recipes/wip/dev/{ => git-tools}/git-subset/recipe.toml (100%) rename recipes/wip/dev/{git-tool => git-tools/git-tool-rs}/recipe.toml (100%) rename recipes/wip/dev/git-tools/{ => git-tools-rs}/recipe.toml (100%) rename recipes/wip/dev/{ => lang}/elixir/recipe.toml (100%) rename recipes/wip/dev/{ => lang}/elm/recipe.toml (100%) rename recipes/wip/dev/{ => lang}/erlang/recipe.toml (100%) rename recipes/wip/dev/{ => lang}/gawk/recipe.toml (100%) rename recipes/wip/dev/{ => lang}/ghc/recipe.toml (100%) rename recipes/wip/dev/{ => lang}/ghostscript/recipe.toml (100%) rename recipes/wip/dev/{ => lang}/go/recipe.toml (100%) rename recipes/wip/dev/{ => lang/java}/openjdk11-headless/recipe.toml (100%) rename recipes/wip/dev/{ => lang/java}/openjdk17-headless/recipe.toml (100%) rename recipes/wip/dev/{ => lang/java}/openjdk21-headless/recipe.toml (100%) rename recipes/wip/dev/{ => lang/java}/openjdk8-headless/recipe.toml (100%) rename recipes/wip/dev/{ => lang}/julia-lts/recipe.toml (100%) rename recipes/wip/dev/{ => lang}/julia/recipe.toml (100%) rename recipes/wip/dev/{ => lang}/luajit/recipe.toml (100%) rename recipes/wip/dev/{ => lang}/nodejs-lts/recipe.toml (100%) rename recipes/wip/dev/{ => lang}/nodejs/recipe.toml (100%) rename recipes/wip/dev/{ => lang}/php/recipe.toml (100%) rename recipes/wip/dev/{ => lang}/pony-lang/recipe.toml (100%) rename recipes/wip/dev/{ => lang}/python310/recipe.toml (100%) rename recipes/wip/dev/{ => lang}/python312/recipe.toml (100%) diff --git a/recipes/wip/dev/defold-engine/recipe.toml b/recipes/wip/dev/game-engine/defold-engine/recipe.toml similarity index 100% rename from recipes/wip/dev/defold-engine/recipe.toml rename to recipes/wip/dev/game-engine/defold-engine/recipe.toml diff --git a/recipes/wip/dev/fyrox-template/recipe.toml b/recipes/wip/dev/game-engine/fyrox-template/recipe.toml similarity index 100% rename from recipes/wip/dev/fyrox-template/recipe.toml rename to recipes/wip/dev/game-engine/fyrox-template/recipe.toml diff --git a/recipes/wip/dev/godot4/recipe.toml b/recipes/wip/dev/game-engine/godot4/recipe.toml similarity index 100% rename from recipes/wip/dev/godot4/recipe.toml rename to recipes/wip/dev/game-engine/godot4/recipe.toml diff --git a/recipes/wip/dev/git-absorb/recipe.toml b/recipes/wip/dev/git-tools/git-absorb/recipe.toml similarity index 100% rename from recipes/wip/dev/git-absorb/recipe.toml rename to recipes/wip/dev/git-tools/git-absorb/recipe.toml diff --git a/recipes/wip/dev/git-chain/recipe.toml b/recipes/wip/dev/git-tools/git-chain/recipe.toml similarity index 100% rename from recipes/wip/dev/git-chain/recipe.toml rename to recipes/wip/dev/git-tools/git-chain/recipe.toml diff --git a/recipes/wip/dev/git-cliff/recipe.toml b/recipes/wip/dev/git-tools/git-cliff/recipe.toml similarity index 100% rename from recipes/wip/dev/git-cliff/recipe.toml rename to recipes/wip/dev/git-tools/git-cliff/recipe.toml diff --git a/recipes/wip/dev/git-grab/recipe.toml b/recipes/wip/dev/git-tools/git-grab/recipe.toml similarity index 100% rename from recipes/wip/dev/git-grab/recipe.toml rename to recipes/wip/dev/git-tools/git-grab/recipe.toml diff --git a/recipes/wip/dev/git-graph/recipe.toml b/recipes/wip/dev/git-tools/git-graph/recipe.toml similarity index 100% rename from recipes/wip/dev/git-graph/recipe.toml rename to recipes/wip/dev/git-tools/git-graph/recipe.toml diff --git a/recipes/wip/dev/git-ignore-generator/recipe.toml b/recipes/wip/dev/git-tools/git-ignore-generator/recipe.toml similarity index 100% rename from recipes/wip/dev/git-ignore-generator/recipe.toml rename to recipes/wip/dev/git-tools/git-ignore-generator/recipe.toml diff --git a/recipes/wip/dev/git-interactive-rebase-tool/recipe.toml b/recipes/wip/dev/git-tools/git-interactive-rebase-tool/recipe.toml similarity index 100% rename from recipes/wip/dev/git-interactive-rebase-tool/recipe.toml rename to recipes/wip/dev/git-tools/git-interactive-rebase-tool/recipe.toml diff --git a/recipes/wip/dev/git-lfs/recipe.toml b/recipes/wip/dev/git-tools/git-lfs/recipe.toml similarity index 100% rename from recipes/wip/dev/git-lfs/recipe.toml rename to recipes/wip/dev/git-tools/git-lfs/recipe.toml diff --git a/recipes/wip/dev/git-repo-manager/recipe.toml b/recipes/wip/dev/git-tools/git-repo-manager/recipe.toml similarity index 100% rename from recipes/wip/dev/git-repo-manager/recipe.toml rename to recipes/wip/dev/git-tools/git-repo-manager/recipe.toml diff --git a/recipes/wip/dev/git-subset/recipe.toml b/recipes/wip/dev/git-tools/git-subset/recipe.toml similarity index 100% rename from recipes/wip/dev/git-subset/recipe.toml rename to recipes/wip/dev/git-tools/git-subset/recipe.toml diff --git a/recipes/wip/dev/git-tool/recipe.toml b/recipes/wip/dev/git-tools/git-tool-rs/recipe.toml similarity index 100% rename from recipes/wip/dev/git-tool/recipe.toml rename to recipes/wip/dev/git-tools/git-tool-rs/recipe.toml diff --git a/recipes/wip/dev/git-tools/recipe.toml b/recipes/wip/dev/git-tools/git-tools-rs/recipe.toml similarity index 100% rename from recipes/wip/dev/git-tools/recipe.toml rename to recipes/wip/dev/git-tools/git-tools-rs/recipe.toml diff --git a/recipes/wip/dev/elixir/recipe.toml b/recipes/wip/dev/lang/elixir/recipe.toml similarity index 100% rename from recipes/wip/dev/elixir/recipe.toml rename to recipes/wip/dev/lang/elixir/recipe.toml diff --git a/recipes/wip/dev/elm/recipe.toml b/recipes/wip/dev/lang/elm/recipe.toml similarity index 100% rename from recipes/wip/dev/elm/recipe.toml rename to recipes/wip/dev/lang/elm/recipe.toml diff --git a/recipes/wip/dev/erlang/recipe.toml b/recipes/wip/dev/lang/erlang/recipe.toml similarity index 100% rename from recipes/wip/dev/erlang/recipe.toml rename to recipes/wip/dev/lang/erlang/recipe.toml diff --git a/recipes/wip/dev/gawk/recipe.toml b/recipes/wip/dev/lang/gawk/recipe.toml similarity index 100% rename from recipes/wip/dev/gawk/recipe.toml rename to recipes/wip/dev/lang/gawk/recipe.toml diff --git a/recipes/wip/dev/ghc/recipe.toml b/recipes/wip/dev/lang/ghc/recipe.toml similarity index 100% rename from recipes/wip/dev/ghc/recipe.toml rename to recipes/wip/dev/lang/ghc/recipe.toml diff --git a/recipes/wip/dev/ghostscript/recipe.toml b/recipes/wip/dev/lang/ghostscript/recipe.toml similarity index 100% rename from recipes/wip/dev/ghostscript/recipe.toml rename to recipes/wip/dev/lang/ghostscript/recipe.toml diff --git a/recipes/wip/dev/go/recipe.toml b/recipes/wip/dev/lang/go/recipe.toml similarity index 100% rename from recipes/wip/dev/go/recipe.toml rename to recipes/wip/dev/lang/go/recipe.toml diff --git a/recipes/wip/dev/openjdk11-headless/recipe.toml b/recipes/wip/dev/lang/java/openjdk11-headless/recipe.toml similarity index 100% rename from recipes/wip/dev/openjdk11-headless/recipe.toml rename to recipes/wip/dev/lang/java/openjdk11-headless/recipe.toml diff --git a/recipes/wip/dev/openjdk17-headless/recipe.toml b/recipes/wip/dev/lang/java/openjdk17-headless/recipe.toml similarity index 100% rename from recipes/wip/dev/openjdk17-headless/recipe.toml rename to recipes/wip/dev/lang/java/openjdk17-headless/recipe.toml diff --git a/recipes/wip/dev/openjdk21-headless/recipe.toml b/recipes/wip/dev/lang/java/openjdk21-headless/recipe.toml similarity index 100% rename from recipes/wip/dev/openjdk21-headless/recipe.toml rename to recipes/wip/dev/lang/java/openjdk21-headless/recipe.toml diff --git a/recipes/wip/dev/openjdk8-headless/recipe.toml b/recipes/wip/dev/lang/java/openjdk8-headless/recipe.toml similarity index 100% rename from recipes/wip/dev/openjdk8-headless/recipe.toml rename to recipes/wip/dev/lang/java/openjdk8-headless/recipe.toml diff --git a/recipes/wip/dev/julia-lts/recipe.toml b/recipes/wip/dev/lang/julia-lts/recipe.toml similarity index 100% rename from recipes/wip/dev/julia-lts/recipe.toml rename to recipes/wip/dev/lang/julia-lts/recipe.toml diff --git a/recipes/wip/dev/julia/recipe.toml b/recipes/wip/dev/lang/julia/recipe.toml similarity index 100% rename from recipes/wip/dev/julia/recipe.toml rename to recipes/wip/dev/lang/julia/recipe.toml diff --git a/recipes/wip/dev/luajit/recipe.toml b/recipes/wip/dev/lang/luajit/recipe.toml similarity index 100% rename from recipes/wip/dev/luajit/recipe.toml rename to recipes/wip/dev/lang/luajit/recipe.toml diff --git a/recipes/wip/dev/nodejs-lts/recipe.toml b/recipes/wip/dev/lang/nodejs-lts/recipe.toml similarity index 100% rename from recipes/wip/dev/nodejs-lts/recipe.toml rename to recipes/wip/dev/lang/nodejs-lts/recipe.toml diff --git a/recipes/wip/dev/nodejs/recipe.toml b/recipes/wip/dev/lang/nodejs/recipe.toml similarity index 100% rename from recipes/wip/dev/nodejs/recipe.toml rename to recipes/wip/dev/lang/nodejs/recipe.toml diff --git a/recipes/wip/dev/php/recipe.toml b/recipes/wip/dev/lang/php/recipe.toml similarity index 100% rename from recipes/wip/dev/php/recipe.toml rename to recipes/wip/dev/lang/php/recipe.toml diff --git a/recipes/wip/dev/pony-lang/recipe.toml b/recipes/wip/dev/lang/pony-lang/recipe.toml similarity index 100% rename from recipes/wip/dev/pony-lang/recipe.toml rename to recipes/wip/dev/lang/pony-lang/recipe.toml diff --git a/recipes/wip/dev/python310/recipe.toml b/recipes/wip/dev/lang/python310/recipe.toml similarity index 100% rename from recipes/wip/dev/python310/recipe.toml rename to recipes/wip/dev/lang/python310/recipe.toml diff --git a/recipes/wip/dev/python312/recipe.toml b/recipes/wip/dev/lang/python312/recipe.toml similarity index 100% rename from recipes/wip/dev/python312/recipe.toml rename to recipes/wip/dev/lang/python312/recipe.toml From e03afe039ce28defbc7dff98117135bd5bfa05ac Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 25 Jun 2024 22:24:39 +0000 Subject: [PATCH 1941/3180] Move recipes --- recipes/wip/dev/{ => build-system}/hadrian/recipe.toml | 0 recipes/wip/dev/{ => debug}/gdb/recipe.toml | 0 recipes/wip/dev/{ => debug}/rr-debugger/recipe.toml | 0 recipes/wip/dev/{ => ide}/astronvim/recipe.toml | 0 recipes/wip/dev/{ => ide}/gnome-builder/recipe.toml | 0 recipes/wip/dev/{ => ide}/kdevelop/recipe.toml | 0 recipes/wip/dev/{ => lang}/hare-std/recipe.toml | 0 recipes/wip/dev/{ => lang}/harec/recipe.toml | 0 recipes/wip/dev/{ => lang}/ruby/recipe.toml | 0 recipes/wip/dev/{ => lang}/vala/recipe.toml | 0 recipes/wip/dev/{ => lang}/vale-lang/recipe.toml | 0 recipes/wip/dev/{ => lang}/wrecc/recipe.toml | 0 recipes/wip/dev/{ => lang}/zig/recipe.toml | 0 recipes/wip/dev/{ => python}/py-spy/recipe.toml | 0 recipes/wip/dev/{ => python}/pyapp/recipe.toml | 0 recipes/wip/dev/{ => python}/pylyzer/recipe.toml | 0 recipes/wip/dev/{ => python}/pyrev/recipe.toml | 0 recipes/wip/dev/{ => python}/pyscan/recipe.toml | 0 recipes/wip/dev/{ => python}/python-launcher/recipe.toml | 0 recipes/wip/dev/{ => python}/ruff/recipe.toml | 0 recipes/wip/dev/{ => python}/rye/recipe.toml | 0 recipes/wip/dev/{ => python}/uv/recipe.toml | 0 recipes/wip/dev/{ => rust-tools}/c2rust/recipe.toml | 0 recipes/wip/dev/{ => rust-tools}/cbindgen/recipe.toml | 0 recipes/wip/dev/{ => rust-tools}/clippy/recipe.toml | 0 recipes/wip/dev/{ => rust-tools}/coq-of-rust/recipe.toml | 0 recipes/wip/dev/{ => rust-tools}/crater/recipe.toml | 0 recipes/wip/dev/{ => rust-tools}/diplomat/recipe.toml | 0 recipes/wip/dev/{ => rust-tools}/evcxr-jupyter/recipe.toml | 0 recipes/wip/dev/{ => rust-tools}/evcxr-repl/recipe.toml | 0 recipes/wip/dev/{ => rust-tools}/kani/recipe.toml | 0 recipes/wip/dev/{ => rust-tools}/rust-analyzer/recipe.toml | 0 recipes/wip/dev/{ => rust-tools}/rust-script/recipe.toml | 0 recipes/wip/dev/{ => rust-tools}/rust-to-npm/recipe.toml | 0 recipes/wip/dev/{ => rust-tools}/rustfmt/recipe.toml | 0 recipes/wip/dev/{ => rust-tools}/rustup/recipe.toml | 0 recipes/wip/dev/{ => rust-tools}/sccache/recipe.toml | 0 recipes/wip/dev/{ => rust-tools}/scriptisto/recipe.toml | 0 recipes/wip/dev/{ => wasm}/wasm-pack/recipe.toml | 0 recipes/wip/dev/{ => wasm}/wasm-tools/recipe.toml | 0 recipes/wip/dev/{ => wasm}/wasmer/recipe.toml | 0 recipes/wip/dev/{ => wasm}/wasmi/recipe.toml | 0 recipes/wip/dev/{ => wasm}/wasminspect/recipe.toml | 0 recipes/wip/dev/{ => wasm}/wasmtime/recipe.toml | 0 recipes/wip/dev/{ => wasm}/wepl/recipe.toml | 0 45 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/dev/{ => build-system}/hadrian/recipe.toml (100%) rename recipes/wip/dev/{ => debug}/gdb/recipe.toml (100%) rename recipes/wip/dev/{ => debug}/rr-debugger/recipe.toml (100%) rename recipes/wip/dev/{ => ide}/astronvim/recipe.toml (100%) rename recipes/wip/dev/{ => ide}/gnome-builder/recipe.toml (100%) rename recipes/wip/dev/{ => ide}/kdevelop/recipe.toml (100%) rename recipes/wip/dev/{ => lang}/hare-std/recipe.toml (100%) rename recipes/wip/dev/{ => lang}/harec/recipe.toml (100%) rename recipes/wip/dev/{ => lang}/ruby/recipe.toml (100%) rename recipes/wip/dev/{ => lang}/vala/recipe.toml (100%) rename recipes/wip/dev/{ => lang}/vale-lang/recipe.toml (100%) rename recipes/wip/dev/{ => lang}/wrecc/recipe.toml (100%) rename recipes/wip/dev/{ => lang}/zig/recipe.toml (100%) rename recipes/wip/dev/{ => python}/py-spy/recipe.toml (100%) rename recipes/wip/dev/{ => python}/pyapp/recipe.toml (100%) rename recipes/wip/dev/{ => python}/pylyzer/recipe.toml (100%) rename recipes/wip/dev/{ => python}/pyrev/recipe.toml (100%) rename recipes/wip/dev/{ => python}/pyscan/recipe.toml (100%) rename recipes/wip/dev/{ => python}/python-launcher/recipe.toml (100%) rename recipes/wip/dev/{ => python}/ruff/recipe.toml (100%) rename recipes/wip/dev/{ => python}/rye/recipe.toml (100%) rename recipes/wip/dev/{ => python}/uv/recipe.toml (100%) rename recipes/wip/dev/{ => rust-tools}/c2rust/recipe.toml (100%) rename recipes/wip/dev/{ => rust-tools}/cbindgen/recipe.toml (100%) rename recipes/wip/dev/{ => rust-tools}/clippy/recipe.toml (100%) rename recipes/wip/dev/{ => rust-tools}/coq-of-rust/recipe.toml (100%) rename recipes/wip/dev/{ => rust-tools}/crater/recipe.toml (100%) rename recipes/wip/dev/{ => rust-tools}/diplomat/recipe.toml (100%) rename recipes/wip/dev/{ => rust-tools}/evcxr-jupyter/recipe.toml (100%) rename recipes/wip/dev/{ => rust-tools}/evcxr-repl/recipe.toml (100%) rename recipes/wip/dev/{ => rust-tools}/kani/recipe.toml (100%) rename recipes/wip/dev/{ => rust-tools}/rust-analyzer/recipe.toml (100%) rename recipes/wip/dev/{ => rust-tools}/rust-script/recipe.toml (100%) rename recipes/wip/dev/{ => rust-tools}/rust-to-npm/recipe.toml (100%) rename recipes/wip/dev/{ => rust-tools}/rustfmt/recipe.toml (100%) rename recipes/wip/dev/{ => rust-tools}/rustup/recipe.toml (100%) rename recipes/wip/dev/{ => rust-tools}/sccache/recipe.toml (100%) rename recipes/wip/dev/{ => rust-tools}/scriptisto/recipe.toml (100%) rename recipes/wip/dev/{ => wasm}/wasm-pack/recipe.toml (100%) rename recipes/wip/dev/{ => wasm}/wasm-tools/recipe.toml (100%) rename recipes/wip/dev/{ => wasm}/wasmer/recipe.toml (100%) rename recipes/wip/dev/{ => wasm}/wasmi/recipe.toml (100%) rename recipes/wip/dev/{ => wasm}/wasminspect/recipe.toml (100%) rename recipes/wip/dev/{ => wasm}/wasmtime/recipe.toml (100%) rename recipes/wip/dev/{ => wasm}/wepl/recipe.toml (100%) diff --git a/recipes/wip/dev/hadrian/recipe.toml b/recipes/wip/dev/build-system/hadrian/recipe.toml similarity index 100% rename from recipes/wip/dev/hadrian/recipe.toml rename to recipes/wip/dev/build-system/hadrian/recipe.toml diff --git a/recipes/wip/dev/gdb/recipe.toml b/recipes/wip/dev/debug/gdb/recipe.toml similarity index 100% rename from recipes/wip/dev/gdb/recipe.toml rename to recipes/wip/dev/debug/gdb/recipe.toml diff --git a/recipes/wip/dev/rr-debugger/recipe.toml b/recipes/wip/dev/debug/rr-debugger/recipe.toml similarity index 100% rename from recipes/wip/dev/rr-debugger/recipe.toml rename to recipes/wip/dev/debug/rr-debugger/recipe.toml diff --git a/recipes/wip/dev/astronvim/recipe.toml b/recipes/wip/dev/ide/astronvim/recipe.toml similarity index 100% rename from recipes/wip/dev/astronvim/recipe.toml rename to recipes/wip/dev/ide/astronvim/recipe.toml diff --git a/recipes/wip/dev/gnome-builder/recipe.toml b/recipes/wip/dev/ide/gnome-builder/recipe.toml similarity index 100% rename from recipes/wip/dev/gnome-builder/recipe.toml rename to recipes/wip/dev/ide/gnome-builder/recipe.toml diff --git a/recipes/wip/dev/kdevelop/recipe.toml b/recipes/wip/dev/ide/kdevelop/recipe.toml similarity index 100% rename from recipes/wip/dev/kdevelop/recipe.toml rename to recipes/wip/dev/ide/kdevelop/recipe.toml diff --git a/recipes/wip/dev/hare-std/recipe.toml b/recipes/wip/dev/lang/hare-std/recipe.toml similarity index 100% rename from recipes/wip/dev/hare-std/recipe.toml rename to recipes/wip/dev/lang/hare-std/recipe.toml diff --git a/recipes/wip/dev/harec/recipe.toml b/recipes/wip/dev/lang/harec/recipe.toml similarity index 100% rename from recipes/wip/dev/harec/recipe.toml rename to recipes/wip/dev/lang/harec/recipe.toml diff --git a/recipes/wip/dev/ruby/recipe.toml b/recipes/wip/dev/lang/ruby/recipe.toml similarity index 100% rename from recipes/wip/dev/ruby/recipe.toml rename to recipes/wip/dev/lang/ruby/recipe.toml diff --git a/recipes/wip/dev/vala/recipe.toml b/recipes/wip/dev/lang/vala/recipe.toml similarity index 100% rename from recipes/wip/dev/vala/recipe.toml rename to recipes/wip/dev/lang/vala/recipe.toml diff --git a/recipes/wip/dev/vale-lang/recipe.toml b/recipes/wip/dev/lang/vale-lang/recipe.toml similarity index 100% rename from recipes/wip/dev/vale-lang/recipe.toml rename to recipes/wip/dev/lang/vale-lang/recipe.toml diff --git a/recipes/wip/dev/wrecc/recipe.toml b/recipes/wip/dev/lang/wrecc/recipe.toml similarity index 100% rename from recipes/wip/dev/wrecc/recipe.toml rename to recipes/wip/dev/lang/wrecc/recipe.toml diff --git a/recipes/wip/dev/zig/recipe.toml b/recipes/wip/dev/lang/zig/recipe.toml similarity index 100% rename from recipes/wip/dev/zig/recipe.toml rename to recipes/wip/dev/lang/zig/recipe.toml diff --git a/recipes/wip/dev/py-spy/recipe.toml b/recipes/wip/dev/python/py-spy/recipe.toml similarity index 100% rename from recipes/wip/dev/py-spy/recipe.toml rename to recipes/wip/dev/python/py-spy/recipe.toml diff --git a/recipes/wip/dev/pyapp/recipe.toml b/recipes/wip/dev/python/pyapp/recipe.toml similarity index 100% rename from recipes/wip/dev/pyapp/recipe.toml rename to recipes/wip/dev/python/pyapp/recipe.toml diff --git a/recipes/wip/dev/pylyzer/recipe.toml b/recipes/wip/dev/python/pylyzer/recipe.toml similarity index 100% rename from recipes/wip/dev/pylyzer/recipe.toml rename to recipes/wip/dev/python/pylyzer/recipe.toml diff --git a/recipes/wip/dev/pyrev/recipe.toml b/recipes/wip/dev/python/pyrev/recipe.toml similarity index 100% rename from recipes/wip/dev/pyrev/recipe.toml rename to recipes/wip/dev/python/pyrev/recipe.toml diff --git a/recipes/wip/dev/pyscan/recipe.toml b/recipes/wip/dev/python/pyscan/recipe.toml similarity index 100% rename from recipes/wip/dev/pyscan/recipe.toml rename to recipes/wip/dev/python/pyscan/recipe.toml diff --git a/recipes/wip/dev/python-launcher/recipe.toml b/recipes/wip/dev/python/python-launcher/recipe.toml similarity index 100% rename from recipes/wip/dev/python-launcher/recipe.toml rename to recipes/wip/dev/python/python-launcher/recipe.toml diff --git a/recipes/wip/dev/ruff/recipe.toml b/recipes/wip/dev/python/ruff/recipe.toml similarity index 100% rename from recipes/wip/dev/ruff/recipe.toml rename to recipes/wip/dev/python/ruff/recipe.toml diff --git a/recipes/wip/dev/rye/recipe.toml b/recipes/wip/dev/python/rye/recipe.toml similarity index 100% rename from recipes/wip/dev/rye/recipe.toml rename to recipes/wip/dev/python/rye/recipe.toml diff --git a/recipes/wip/dev/uv/recipe.toml b/recipes/wip/dev/python/uv/recipe.toml similarity index 100% rename from recipes/wip/dev/uv/recipe.toml rename to recipes/wip/dev/python/uv/recipe.toml diff --git a/recipes/wip/dev/c2rust/recipe.toml b/recipes/wip/dev/rust-tools/c2rust/recipe.toml similarity index 100% rename from recipes/wip/dev/c2rust/recipe.toml rename to recipes/wip/dev/rust-tools/c2rust/recipe.toml diff --git a/recipes/wip/dev/cbindgen/recipe.toml b/recipes/wip/dev/rust-tools/cbindgen/recipe.toml similarity index 100% rename from recipes/wip/dev/cbindgen/recipe.toml rename to recipes/wip/dev/rust-tools/cbindgen/recipe.toml diff --git a/recipes/wip/dev/clippy/recipe.toml b/recipes/wip/dev/rust-tools/clippy/recipe.toml similarity index 100% rename from recipes/wip/dev/clippy/recipe.toml rename to recipes/wip/dev/rust-tools/clippy/recipe.toml diff --git a/recipes/wip/dev/coq-of-rust/recipe.toml b/recipes/wip/dev/rust-tools/coq-of-rust/recipe.toml similarity index 100% rename from recipes/wip/dev/coq-of-rust/recipe.toml rename to recipes/wip/dev/rust-tools/coq-of-rust/recipe.toml diff --git a/recipes/wip/dev/crater/recipe.toml b/recipes/wip/dev/rust-tools/crater/recipe.toml similarity index 100% rename from recipes/wip/dev/crater/recipe.toml rename to recipes/wip/dev/rust-tools/crater/recipe.toml diff --git a/recipes/wip/dev/diplomat/recipe.toml b/recipes/wip/dev/rust-tools/diplomat/recipe.toml similarity index 100% rename from recipes/wip/dev/diplomat/recipe.toml rename to recipes/wip/dev/rust-tools/diplomat/recipe.toml diff --git a/recipes/wip/dev/evcxr-jupyter/recipe.toml b/recipes/wip/dev/rust-tools/evcxr-jupyter/recipe.toml similarity index 100% rename from recipes/wip/dev/evcxr-jupyter/recipe.toml rename to recipes/wip/dev/rust-tools/evcxr-jupyter/recipe.toml diff --git a/recipes/wip/dev/evcxr-repl/recipe.toml b/recipes/wip/dev/rust-tools/evcxr-repl/recipe.toml similarity index 100% rename from recipes/wip/dev/evcxr-repl/recipe.toml rename to recipes/wip/dev/rust-tools/evcxr-repl/recipe.toml diff --git a/recipes/wip/dev/kani/recipe.toml b/recipes/wip/dev/rust-tools/kani/recipe.toml similarity index 100% rename from recipes/wip/dev/kani/recipe.toml rename to recipes/wip/dev/rust-tools/kani/recipe.toml diff --git a/recipes/wip/dev/rust-analyzer/recipe.toml b/recipes/wip/dev/rust-tools/rust-analyzer/recipe.toml similarity index 100% rename from recipes/wip/dev/rust-analyzer/recipe.toml rename to recipes/wip/dev/rust-tools/rust-analyzer/recipe.toml diff --git a/recipes/wip/dev/rust-script/recipe.toml b/recipes/wip/dev/rust-tools/rust-script/recipe.toml similarity index 100% rename from recipes/wip/dev/rust-script/recipe.toml rename to recipes/wip/dev/rust-tools/rust-script/recipe.toml diff --git a/recipes/wip/dev/rust-to-npm/recipe.toml b/recipes/wip/dev/rust-tools/rust-to-npm/recipe.toml similarity index 100% rename from recipes/wip/dev/rust-to-npm/recipe.toml rename to recipes/wip/dev/rust-tools/rust-to-npm/recipe.toml diff --git a/recipes/wip/dev/rustfmt/recipe.toml b/recipes/wip/dev/rust-tools/rustfmt/recipe.toml similarity index 100% rename from recipes/wip/dev/rustfmt/recipe.toml rename to recipes/wip/dev/rust-tools/rustfmt/recipe.toml diff --git a/recipes/wip/dev/rustup/recipe.toml b/recipes/wip/dev/rust-tools/rustup/recipe.toml similarity index 100% rename from recipes/wip/dev/rustup/recipe.toml rename to recipes/wip/dev/rust-tools/rustup/recipe.toml diff --git a/recipes/wip/dev/sccache/recipe.toml b/recipes/wip/dev/rust-tools/sccache/recipe.toml similarity index 100% rename from recipes/wip/dev/sccache/recipe.toml rename to recipes/wip/dev/rust-tools/sccache/recipe.toml diff --git a/recipes/wip/dev/scriptisto/recipe.toml b/recipes/wip/dev/rust-tools/scriptisto/recipe.toml similarity index 100% rename from recipes/wip/dev/scriptisto/recipe.toml rename to recipes/wip/dev/rust-tools/scriptisto/recipe.toml diff --git a/recipes/wip/dev/wasm-pack/recipe.toml b/recipes/wip/dev/wasm/wasm-pack/recipe.toml similarity index 100% rename from recipes/wip/dev/wasm-pack/recipe.toml rename to recipes/wip/dev/wasm/wasm-pack/recipe.toml diff --git a/recipes/wip/dev/wasm-tools/recipe.toml b/recipes/wip/dev/wasm/wasm-tools/recipe.toml similarity index 100% rename from recipes/wip/dev/wasm-tools/recipe.toml rename to recipes/wip/dev/wasm/wasm-tools/recipe.toml diff --git a/recipes/wip/dev/wasmer/recipe.toml b/recipes/wip/dev/wasm/wasmer/recipe.toml similarity index 100% rename from recipes/wip/dev/wasmer/recipe.toml rename to recipes/wip/dev/wasm/wasmer/recipe.toml diff --git a/recipes/wip/dev/wasmi/recipe.toml b/recipes/wip/dev/wasm/wasmi/recipe.toml similarity index 100% rename from recipes/wip/dev/wasmi/recipe.toml rename to recipes/wip/dev/wasm/wasmi/recipe.toml diff --git a/recipes/wip/dev/wasminspect/recipe.toml b/recipes/wip/dev/wasm/wasminspect/recipe.toml similarity index 100% rename from recipes/wip/dev/wasminspect/recipe.toml rename to recipes/wip/dev/wasm/wasminspect/recipe.toml diff --git a/recipes/wip/dev/wasmtime/recipe.toml b/recipes/wip/dev/wasm/wasmtime/recipe.toml similarity index 100% rename from recipes/wip/dev/wasmtime/recipe.toml rename to recipes/wip/dev/wasm/wasmtime/recipe.toml diff --git a/recipes/wip/dev/wepl/recipe.toml b/recipes/wip/dev/wasm/wepl/recipe.toml similarity index 100% rename from recipes/wip/dev/wepl/recipe.toml rename to recipes/wip/dev/wasm/wepl/recipe.toml From cbbc85a81abacce86d2faf291c6e6782f7baa4e0 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 26 Jun 2024 03:32:59 +0000 Subject: [PATCH 1942/3180] Move recipes --- recipes/wip/finance/{ => bitcoin}/btc-vanity/recipe.toml | 0 recipes/wip/finance/{ => bitcoin}/liana/recipe.toml | 0 recipes/wip/finance/{ => bitcoin}/nakamoto-wallet/recipe.toml | 0 recipes/wip/finance/{ => bitcoin}/nakatoshi/recipe.toml | 0 recipes/wip/finance/{ => bitcoin}/ord/recipe.toml | 0 recipes/wip/finance/{ => bitcoin}/pushtx/recipe.toml | 0 recipes/wip/finance/{ => bitcoin}/rusty-blockparser/recipe.toml | 0 recipes/wip/finance/{ => donation}/cargo-fund/recipe.toml | 0 recipes/wip/finance/{ => market}/apcacli/recipe.toml | 0 recipes/wip/finance/{ => market}/tick-rs/recipe.toml | 0 recipes/wip/finance/{ => monero}/gupax/recipe.toml | 0 recipes/wip/finance/{ => monero}/xmrig/recipe.toml | 0 recipes/wip/games/{ => action}/battleship-rs/recipe.toml | 0 recipes/wip/games/{ => action}/bevy-combat/recipe.toml | 0 recipes/wip/games/{ => action}/openlara/recipe.toml | 0 recipes/wip/games/{ => action}/opentomb/recipe.toml | 0 recipes/wip/games/{ => data}/0ad-data/recipe.toml | 0 recipes/wip/games/{ => data}/minetest-data/recipe.toml | 0 recipes/wip/games/{ => fps}/assaultcube/recipe.toml | 0 recipes/wip/games/{ => fps}/betterspades/recipe.toml | 0 recipes/wip/games/{ => fps}/chocolate-doom/recipe.toml | 0 recipes/wip/games/{ => fps}/crispy-doom/recipe.toml | 0 recipes/wip/games/{ => fps}/et-legacy/recipe.toml | 0 recipes/wip/games/{ => fps}/gzdoom/recipe.toml | 0 recipes/wip/games/{ => fps}/ioquake3/recipe.toml | 0 recipes/wip/games/{ => fps}/openarena/recipe.toml | 0 recipes/wip/games/{ => fps}/openspades-free/recipe.toml | 0 recipes/wip/games/{ => fps}/rbdoom3-bfg/recipe.toml | 0 recipes/wip/games/{ => fps}/smokin-guns/recipe.toml | 0 recipes/wip/games/{ => fps}/unvanquished/recipe.toml | 0 recipes/wip/games/{ => fps}/vkquake/recipe.toml | 0 recipes/wip/games/{ => fps}/vkquake2/recipe.toml | 0 recipes/wip/games/{ => fps}/xash3d-fwgs/recipe.toml | 0 recipes/wip/games/{ => fps}/xonotic/recipe.toml | 0 recipes/wip/games/{ => fps}/yquake2/recipe.toml | 0 recipes/wip/games/{ => fps}/zerospades-free/recipe.toml | 0 recipes/wip/games/{ => math}/tuxmath/recipe.toml | 0 recipes/wip/games/{ => open-world}/leafish/recipe.toml | 0 recipes/wip/games/{ => open-world}/minetest/recipe.toml | 0 recipes/wip/games/{ => open-world}/veloren/recipe.toml | 0 recipes/wip/games/{ => other}/oxycards/recipe.toml | 0 recipes/wip/games/{ => other}/rust-sadari-cli/recipe.toml | 0 recipes/wip/games/{ => other}/shockolate/recipe.toml | 0 recipes/wip/games/{ => other}/sshattrick/recipe.toml | 0 recipes/wip/games/{ => other}/tetromino/recipe.toml | 0 recipes/wip/games/{ => other}/turdle/recipe.toml | 0 recipes/wip/games/{ => other}/unvanquished-benchmarks/recipe.toml | 0 recipes/wip/games/{ => other}/uqm/recipe.toml | 0 recipes/wip/games/{ => other}/vong/recipe.toml | 0 recipes/wip/games/{ => racing}/q3rally/recipe.toml | 0 recipes/wip/games/{ => racing}/supertuxkart/recipe.toml | 0 recipes/wip/games/{ => rpg}/dcss/recipe.toml | 0 recipes/wip/games/{ => servers}/cuberite/recipe.toml | 0 recipes/wip/games/{ => shooter}/call-of-ferris/recipe.toml | 0 recipes/wip/games/{ => simulation}/game-of-life-rs/recipe.toml | 0 recipes/wip/games/{ => simulation}/symbiants/recipe.toml | 0 recipes/wip/games/{ => space}/endless-sky/recipe.toml | 0 recipes/wip/games/{ => space}/naev/recipe.toml | 0 recipes/wip/games/{ => space}/osirion/recipe.toml | 0 recipes/wip/games/{ => space}/rebels-in-the-sky/recipe.toml | 0 recipes/wip/games/{ => strategy}/asmfish/recipe.toml | 0 recipes/wip/games/{ => strategy}/chess-tui/recipe.toml | 0 recipes/wip/games/{ => strategy}/minesweep-rs/recipe.toml | 0 .../wip/games/{ => strategy}/offline-chess-puzzles/recipe.toml | 0 recipes/wip/games/{ => strategy}/ship-of-harkinian/recipe.toml | 0 recipes/wip/games/{ => strategy}/stockfish/recipe.toml | 0 recipes/wip/games/{ => strategy}/tic-tac-toe-rs/recipe.toml | 0 recipes/wip/games/{ => strategy}/warsow/recipe.toml | 0 68 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/finance/{ => bitcoin}/btc-vanity/recipe.toml (100%) rename recipes/wip/finance/{ => bitcoin}/liana/recipe.toml (100%) rename recipes/wip/finance/{ => bitcoin}/nakamoto-wallet/recipe.toml (100%) rename recipes/wip/finance/{ => bitcoin}/nakatoshi/recipe.toml (100%) rename recipes/wip/finance/{ => bitcoin}/ord/recipe.toml (100%) rename recipes/wip/finance/{ => bitcoin}/pushtx/recipe.toml (100%) rename recipes/wip/finance/{ => bitcoin}/rusty-blockparser/recipe.toml (100%) rename recipes/wip/finance/{ => donation}/cargo-fund/recipe.toml (100%) rename recipes/wip/finance/{ => market}/apcacli/recipe.toml (100%) rename recipes/wip/finance/{ => market}/tick-rs/recipe.toml (100%) rename recipes/wip/finance/{ => monero}/gupax/recipe.toml (100%) rename recipes/wip/finance/{ => monero}/xmrig/recipe.toml (100%) rename recipes/wip/games/{ => action}/battleship-rs/recipe.toml (100%) rename recipes/wip/games/{ => action}/bevy-combat/recipe.toml (100%) rename recipes/wip/games/{ => action}/openlara/recipe.toml (100%) rename recipes/wip/games/{ => action}/opentomb/recipe.toml (100%) rename recipes/wip/games/{ => data}/0ad-data/recipe.toml (100%) rename recipes/wip/games/{ => data}/minetest-data/recipe.toml (100%) rename recipes/wip/games/{ => fps}/assaultcube/recipe.toml (100%) rename recipes/wip/games/{ => fps}/betterspades/recipe.toml (100%) rename recipes/wip/games/{ => fps}/chocolate-doom/recipe.toml (100%) rename recipes/wip/games/{ => fps}/crispy-doom/recipe.toml (100%) rename recipes/wip/games/{ => fps}/et-legacy/recipe.toml (100%) rename recipes/wip/games/{ => fps}/gzdoom/recipe.toml (100%) rename recipes/wip/games/{ => fps}/ioquake3/recipe.toml (100%) rename recipes/wip/games/{ => fps}/openarena/recipe.toml (100%) rename recipes/wip/games/{ => fps}/openspades-free/recipe.toml (100%) rename recipes/wip/games/{ => fps}/rbdoom3-bfg/recipe.toml (100%) rename recipes/wip/games/{ => fps}/smokin-guns/recipe.toml (100%) rename recipes/wip/games/{ => fps}/unvanquished/recipe.toml (100%) rename recipes/wip/games/{ => fps}/vkquake/recipe.toml (100%) rename recipes/wip/games/{ => fps}/vkquake2/recipe.toml (100%) rename recipes/wip/games/{ => fps}/xash3d-fwgs/recipe.toml (100%) rename recipes/wip/games/{ => fps}/xonotic/recipe.toml (100%) rename recipes/wip/games/{ => fps}/yquake2/recipe.toml (100%) rename recipes/wip/games/{ => fps}/zerospades-free/recipe.toml (100%) rename recipes/wip/games/{ => math}/tuxmath/recipe.toml (100%) rename recipes/wip/games/{ => open-world}/leafish/recipe.toml (100%) rename recipes/wip/games/{ => open-world}/minetest/recipe.toml (100%) rename recipes/wip/games/{ => open-world}/veloren/recipe.toml (100%) rename recipes/wip/games/{ => other}/oxycards/recipe.toml (100%) rename recipes/wip/games/{ => other}/rust-sadari-cli/recipe.toml (100%) rename recipes/wip/games/{ => other}/shockolate/recipe.toml (100%) rename recipes/wip/games/{ => other}/sshattrick/recipe.toml (100%) rename recipes/wip/games/{ => other}/tetromino/recipe.toml (100%) rename recipes/wip/games/{ => other}/turdle/recipe.toml (100%) rename recipes/wip/games/{ => other}/unvanquished-benchmarks/recipe.toml (100%) rename recipes/wip/games/{ => other}/uqm/recipe.toml (100%) rename recipes/wip/games/{ => other}/vong/recipe.toml (100%) rename recipes/wip/games/{ => racing}/q3rally/recipe.toml (100%) rename recipes/wip/games/{ => racing}/supertuxkart/recipe.toml (100%) rename recipes/wip/games/{ => rpg}/dcss/recipe.toml (100%) rename recipes/wip/games/{ => servers}/cuberite/recipe.toml (100%) rename recipes/wip/games/{ => shooter}/call-of-ferris/recipe.toml (100%) rename recipes/wip/games/{ => simulation}/game-of-life-rs/recipe.toml (100%) rename recipes/wip/games/{ => simulation}/symbiants/recipe.toml (100%) rename recipes/wip/games/{ => space}/endless-sky/recipe.toml (100%) rename recipes/wip/games/{ => space}/naev/recipe.toml (100%) rename recipes/wip/games/{ => space}/osirion/recipe.toml (100%) rename recipes/wip/games/{ => space}/rebels-in-the-sky/recipe.toml (100%) rename recipes/wip/games/{ => strategy}/asmfish/recipe.toml (100%) rename recipes/wip/games/{ => strategy}/chess-tui/recipe.toml (100%) rename recipes/wip/games/{ => strategy}/minesweep-rs/recipe.toml (100%) rename recipes/wip/games/{ => strategy}/offline-chess-puzzles/recipe.toml (100%) rename recipes/wip/games/{ => strategy}/ship-of-harkinian/recipe.toml (100%) rename recipes/wip/games/{ => strategy}/stockfish/recipe.toml (100%) rename recipes/wip/games/{ => strategy}/tic-tac-toe-rs/recipe.toml (100%) rename recipes/wip/games/{ => strategy}/warsow/recipe.toml (100%) diff --git a/recipes/wip/finance/btc-vanity/recipe.toml b/recipes/wip/finance/bitcoin/btc-vanity/recipe.toml similarity index 100% rename from recipes/wip/finance/btc-vanity/recipe.toml rename to recipes/wip/finance/bitcoin/btc-vanity/recipe.toml diff --git a/recipes/wip/finance/liana/recipe.toml b/recipes/wip/finance/bitcoin/liana/recipe.toml similarity index 100% rename from recipes/wip/finance/liana/recipe.toml rename to recipes/wip/finance/bitcoin/liana/recipe.toml diff --git a/recipes/wip/finance/nakamoto-wallet/recipe.toml b/recipes/wip/finance/bitcoin/nakamoto-wallet/recipe.toml similarity index 100% rename from recipes/wip/finance/nakamoto-wallet/recipe.toml rename to recipes/wip/finance/bitcoin/nakamoto-wallet/recipe.toml diff --git a/recipes/wip/finance/nakatoshi/recipe.toml b/recipes/wip/finance/bitcoin/nakatoshi/recipe.toml similarity index 100% rename from recipes/wip/finance/nakatoshi/recipe.toml rename to recipes/wip/finance/bitcoin/nakatoshi/recipe.toml diff --git a/recipes/wip/finance/ord/recipe.toml b/recipes/wip/finance/bitcoin/ord/recipe.toml similarity index 100% rename from recipes/wip/finance/ord/recipe.toml rename to recipes/wip/finance/bitcoin/ord/recipe.toml diff --git a/recipes/wip/finance/pushtx/recipe.toml b/recipes/wip/finance/bitcoin/pushtx/recipe.toml similarity index 100% rename from recipes/wip/finance/pushtx/recipe.toml rename to recipes/wip/finance/bitcoin/pushtx/recipe.toml diff --git a/recipes/wip/finance/rusty-blockparser/recipe.toml b/recipes/wip/finance/bitcoin/rusty-blockparser/recipe.toml similarity index 100% rename from recipes/wip/finance/rusty-blockparser/recipe.toml rename to recipes/wip/finance/bitcoin/rusty-blockparser/recipe.toml diff --git a/recipes/wip/finance/cargo-fund/recipe.toml b/recipes/wip/finance/donation/cargo-fund/recipe.toml similarity index 100% rename from recipes/wip/finance/cargo-fund/recipe.toml rename to recipes/wip/finance/donation/cargo-fund/recipe.toml diff --git a/recipes/wip/finance/apcacli/recipe.toml b/recipes/wip/finance/market/apcacli/recipe.toml similarity index 100% rename from recipes/wip/finance/apcacli/recipe.toml rename to recipes/wip/finance/market/apcacli/recipe.toml diff --git a/recipes/wip/finance/tick-rs/recipe.toml b/recipes/wip/finance/market/tick-rs/recipe.toml similarity index 100% rename from recipes/wip/finance/tick-rs/recipe.toml rename to recipes/wip/finance/market/tick-rs/recipe.toml diff --git a/recipes/wip/finance/gupax/recipe.toml b/recipes/wip/finance/monero/gupax/recipe.toml similarity index 100% rename from recipes/wip/finance/gupax/recipe.toml rename to recipes/wip/finance/monero/gupax/recipe.toml diff --git a/recipes/wip/finance/xmrig/recipe.toml b/recipes/wip/finance/monero/xmrig/recipe.toml similarity index 100% rename from recipes/wip/finance/xmrig/recipe.toml rename to recipes/wip/finance/monero/xmrig/recipe.toml diff --git a/recipes/wip/games/battleship-rs/recipe.toml b/recipes/wip/games/action/battleship-rs/recipe.toml similarity index 100% rename from recipes/wip/games/battleship-rs/recipe.toml rename to recipes/wip/games/action/battleship-rs/recipe.toml diff --git a/recipes/wip/games/bevy-combat/recipe.toml b/recipes/wip/games/action/bevy-combat/recipe.toml similarity index 100% rename from recipes/wip/games/bevy-combat/recipe.toml rename to recipes/wip/games/action/bevy-combat/recipe.toml diff --git a/recipes/wip/games/openlara/recipe.toml b/recipes/wip/games/action/openlara/recipe.toml similarity index 100% rename from recipes/wip/games/openlara/recipe.toml rename to recipes/wip/games/action/openlara/recipe.toml diff --git a/recipes/wip/games/opentomb/recipe.toml b/recipes/wip/games/action/opentomb/recipe.toml similarity index 100% rename from recipes/wip/games/opentomb/recipe.toml rename to recipes/wip/games/action/opentomb/recipe.toml diff --git a/recipes/wip/games/0ad-data/recipe.toml b/recipes/wip/games/data/0ad-data/recipe.toml similarity index 100% rename from recipes/wip/games/0ad-data/recipe.toml rename to recipes/wip/games/data/0ad-data/recipe.toml diff --git a/recipes/wip/games/minetest-data/recipe.toml b/recipes/wip/games/data/minetest-data/recipe.toml similarity index 100% rename from recipes/wip/games/minetest-data/recipe.toml rename to recipes/wip/games/data/minetest-data/recipe.toml diff --git a/recipes/wip/games/assaultcube/recipe.toml b/recipes/wip/games/fps/assaultcube/recipe.toml similarity index 100% rename from recipes/wip/games/assaultcube/recipe.toml rename to recipes/wip/games/fps/assaultcube/recipe.toml diff --git a/recipes/wip/games/betterspades/recipe.toml b/recipes/wip/games/fps/betterspades/recipe.toml similarity index 100% rename from recipes/wip/games/betterspades/recipe.toml rename to recipes/wip/games/fps/betterspades/recipe.toml diff --git a/recipes/wip/games/chocolate-doom/recipe.toml b/recipes/wip/games/fps/chocolate-doom/recipe.toml similarity index 100% rename from recipes/wip/games/chocolate-doom/recipe.toml rename to recipes/wip/games/fps/chocolate-doom/recipe.toml diff --git a/recipes/wip/games/crispy-doom/recipe.toml b/recipes/wip/games/fps/crispy-doom/recipe.toml similarity index 100% rename from recipes/wip/games/crispy-doom/recipe.toml rename to recipes/wip/games/fps/crispy-doom/recipe.toml diff --git a/recipes/wip/games/et-legacy/recipe.toml b/recipes/wip/games/fps/et-legacy/recipe.toml similarity index 100% rename from recipes/wip/games/et-legacy/recipe.toml rename to recipes/wip/games/fps/et-legacy/recipe.toml diff --git a/recipes/wip/games/gzdoom/recipe.toml b/recipes/wip/games/fps/gzdoom/recipe.toml similarity index 100% rename from recipes/wip/games/gzdoom/recipe.toml rename to recipes/wip/games/fps/gzdoom/recipe.toml diff --git a/recipes/wip/games/ioquake3/recipe.toml b/recipes/wip/games/fps/ioquake3/recipe.toml similarity index 100% rename from recipes/wip/games/ioquake3/recipe.toml rename to recipes/wip/games/fps/ioquake3/recipe.toml diff --git a/recipes/wip/games/openarena/recipe.toml b/recipes/wip/games/fps/openarena/recipe.toml similarity index 100% rename from recipes/wip/games/openarena/recipe.toml rename to recipes/wip/games/fps/openarena/recipe.toml diff --git a/recipes/wip/games/openspades-free/recipe.toml b/recipes/wip/games/fps/openspades-free/recipe.toml similarity index 100% rename from recipes/wip/games/openspades-free/recipe.toml rename to recipes/wip/games/fps/openspades-free/recipe.toml diff --git a/recipes/wip/games/rbdoom3-bfg/recipe.toml b/recipes/wip/games/fps/rbdoom3-bfg/recipe.toml similarity index 100% rename from recipes/wip/games/rbdoom3-bfg/recipe.toml rename to recipes/wip/games/fps/rbdoom3-bfg/recipe.toml diff --git a/recipes/wip/games/smokin-guns/recipe.toml b/recipes/wip/games/fps/smokin-guns/recipe.toml similarity index 100% rename from recipes/wip/games/smokin-guns/recipe.toml rename to recipes/wip/games/fps/smokin-guns/recipe.toml diff --git a/recipes/wip/games/unvanquished/recipe.toml b/recipes/wip/games/fps/unvanquished/recipe.toml similarity index 100% rename from recipes/wip/games/unvanquished/recipe.toml rename to recipes/wip/games/fps/unvanquished/recipe.toml diff --git a/recipes/wip/games/vkquake/recipe.toml b/recipes/wip/games/fps/vkquake/recipe.toml similarity index 100% rename from recipes/wip/games/vkquake/recipe.toml rename to recipes/wip/games/fps/vkquake/recipe.toml diff --git a/recipes/wip/games/vkquake2/recipe.toml b/recipes/wip/games/fps/vkquake2/recipe.toml similarity index 100% rename from recipes/wip/games/vkquake2/recipe.toml rename to recipes/wip/games/fps/vkquake2/recipe.toml diff --git a/recipes/wip/games/xash3d-fwgs/recipe.toml b/recipes/wip/games/fps/xash3d-fwgs/recipe.toml similarity index 100% rename from recipes/wip/games/xash3d-fwgs/recipe.toml rename to recipes/wip/games/fps/xash3d-fwgs/recipe.toml diff --git a/recipes/wip/games/xonotic/recipe.toml b/recipes/wip/games/fps/xonotic/recipe.toml similarity index 100% rename from recipes/wip/games/xonotic/recipe.toml rename to recipes/wip/games/fps/xonotic/recipe.toml diff --git a/recipes/wip/games/yquake2/recipe.toml b/recipes/wip/games/fps/yquake2/recipe.toml similarity index 100% rename from recipes/wip/games/yquake2/recipe.toml rename to recipes/wip/games/fps/yquake2/recipe.toml diff --git a/recipes/wip/games/zerospades-free/recipe.toml b/recipes/wip/games/fps/zerospades-free/recipe.toml similarity index 100% rename from recipes/wip/games/zerospades-free/recipe.toml rename to recipes/wip/games/fps/zerospades-free/recipe.toml diff --git a/recipes/wip/games/tuxmath/recipe.toml b/recipes/wip/games/math/tuxmath/recipe.toml similarity index 100% rename from recipes/wip/games/tuxmath/recipe.toml rename to recipes/wip/games/math/tuxmath/recipe.toml diff --git a/recipes/wip/games/leafish/recipe.toml b/recipes/wip/games/open-world/leafish/recipe.toml similarity index 100% rename from recipes/wip/games/leafish/recipe.toml rename to recipes/wip/games/open-world/leafish/recipe.toml diff --git a/recipes/wip/games/minetest/recipe.toml b/recipes/wip/games/open-world/minetest/recipe.toml similarity index 100% rename from recipes/wip/games/minetest/recipe.toml rename to recipes/wip/games/open-world/minetest/recipe.toml diff --git a/recipes/wip/games/veloren/recipe.toml b/recipes/wip/games/open-world/veloren/recipe.toml similarity index 100% rename from recipes/wip/games/veloren/recipe.toml rename to recipes/wip/games/open-world/veloren/recipe.toml diff --git a/recipes/wip/games/oxycards/recipe.toml b/recipes/wip/games/other/oxycards/recipe.toml similarity index 100% rename from recipes/wip/games/oxycards/recipe.toml rename to recipes/wip/games/other/oxycards/recipe.toml diff --git a/recipes/wip/games/rust-sadari-cli/recipe.toml b/recipes/wip/games/other/rust-sadari-cli/recipe.toml similarity index 100% rename from recipes/wip/games/rust-sadari-cli/recipe.toml rename to recipes/wip/games/other/rust-sadari-cli/recipe.toml diff --git a/recipes/wip/games/shockolate/recipe.toml b/recipes/wip/games/other/shockolate/recipe.toml similarity index 100% rename from recipes/wip/games/shockolate/recipe.toml rename to recipes/wip/games/other/shockolate/recipe.toml diff --git a/recipes/wip/games/sshattrick/recipe.toml b/recipes/wip/games/other/sshattrick/recipe.toml similarity index 100% rename from recipes/wip/games/sshattrick/recipe.toml rename to recipes/wip/games/other/sshattrick/recipe.toml diff --git a/recipes/wip/games/tetromino/recipe.toml b/recipes/wip/games/other/tetromino/recipe.toml similarity index 100% rename from recipes/wip/games/tetromino/recipe.toml rename to recipes/wip/games/other/tetromino/recipe.toml diff --git a/recipes/wip/games/turdle/recipe.toml b/recipes/wip/games/other/turdle/recipe.toml similarity index 100% rename from recipes/wip/games/turdle/recipe.toml rename to recipes/wip/games/other/turdle/recipe.toml diff --git a/recipes/wip/games/unvanquished-benchmarks/recipe.toml b/recipes/wip/games/other/unvanquished-benchmarks/recipe.toml similarity index 100% rename from recipes/wip/games/unvanquished-benchmarks/recipe.toml rename to recipes/wip/games/other/unvanquished-benchmarks/recipe.toml diff --git a/recipes/wip/games/uqm/recipe.toml b/recipes/wip/games/other/uqm/recipe.toml similarity index 100% rename from recipes/wip/games/uqm/recipe.toml rename to recipes/wip/games/other/uqm/recipe.toml diff --git a/recipes/wip/games/vong/recipe.toml b/recipes/wip/games/other/vong/recipe.toml similarity index 100% rename from recipes/wip/games/vong/recipe.toml rename to recipes/wip/games/other/vong/recipe.toml diff --git a/recipes/wip/games/q3rally/recipe.toml b/recipes/wip/games/racing/q3rally/recipe.toml similarity index 100% rename from recipes/wip/games/q3rally/recipe.toml rename to recipes/wip/games/racing/q3rally/recipe.toml diff --git a/recipes/wip/games/supertuxkart/recipe.toml b/recipes/wip/games/racing/supertuxkart/recipe.toml similarity index 100% rename from recipes/wip/games/supertuxkart/recipe.toml rename to recipes/wip/games/racing/supertuxkart/recipe.toml diff --git a/recipes/wip/games/dcss/recipe.toml b/recipes/wip/games/rpg/dcss/recipe.toml similarity index 100% rename from recipes/wip/games/dcss/recipe.toml rename to recipes/wip/games/rpg/dcss/recipe.toml diff --git a/recipes/wip/games/cuberite/recipe.toml b/recipes/wip/games/servers/cuberite/recipe.toml similarity index 100% rename from recipes/wip/games/cuberite/recipe.toml rename to recipes/wip/games/servers/cuberite/recipe.toml diff --git a/recipes/wip/games/call-of-ferris/recipe.toml b/recipes/wip/games/shooter/call-of-ferris/recipe.toml similarity index 100% rename from recipes/wip/games/call-of-ferris/recipe.toml rename to recipes/wip/games/shooter/call-of-ferris/recipe.toml diff --git a/recipes/wip/games/game-of-life-rs/recipe.toml b/recipes/wip/games/simulation/game-of-life-rs/recipe.toml similarity index 100% rename from recipes/wip/games/game-of-life-rs/recipe.toml rename to recipes/wip/games/simulation/game-of-life-rs/recipe.toml diff --git a/recipes/wip/games/symbiants/recipe.toml b/recipes/wip/games/simulation/symbiants/recipe.toml similarity index 100% rename from recipes/wip/games/symbiants/recipe.toml rename to recipes/wip/games/simulation/symbiants/recipe.toml diff --git a/recipes/wip/games/endless-sky/recipe.toml b/recipes/wip/games/space/endless-sky/recipe.toml similarity index 100% rename from recipes/wip/games/endless-sky/recipe.toml rename to recipes/wip/games/space/endless-sky/recipe.toml diff --git a/recipes/wip/games/naev/recipe.toml b/recipes/wip/games/space/naev/recipe.toml similarity index 100% rename from recipes/wip/games/naev/recipe.toml rename to recipes/wip/games/space/naev/recipe.toml diff --git a/recipes/wip/games/osirion/recipe.toml b/recipes/wip/games/space/osirion/recipe.toml similarity index 100% rename from recipes/wip/games/osirion/recipe.toml rename to recipes/wip/games/space/osirion/recipe.toml diff --git a/recipes/wip/games/rebels-in-the-sky/recipe.toml b/recipes/wip/games/space/rebels-in-the-sky/recipe.toml similarity index 100% rename from recipes/wip/games/rebels-in-the-sky/recipe.toml rename to recipes/wip/games/space/rebels-in-the-sky/recipe.toml diff --git a/recipes/wip/games/asmfish/recipe.toml b/recipes/wip/games/strategy/asmfish/recipe.toml similarity index 100% rename from recipes/wip/games/asmfish/recipe.toml rename to recipes/wip/games/strategy/asmfish/recipe.toml diff --git a/recipes/wip/games/chess-tui/recipe.toml b/recipes/wip/games/strategy/chess-tui/recipe.toml similarity index 100% rename from recipes/wip/games/chess-tui/recipe.toml rename to recipes/wip/games/strategy/chess-tui/recipe.toml diff --git a/recipes/wip/games/minesweep-rs/recipe.toml b/recipes/wip/games/strategy/minesweep-rs/recipe.toml similarity index 100% rename from recipes/wip/games/minesweep-rs/recipe.toml rename to recipes/wip/games/strategy/minesweep-rs/recipe.toml diff --git a/recipes/wip/games/offline-chess-puzzles/recipe.toml b/recipes/wip/games/strategy/offline-chess-puzzles/recipe.toml similarity index 100% rename from recipes/wip/games/offline-chess-puzzles/recipe.toml rename to recipes/wip/games/strategy/offline-chess-puzzles/recipe.toml diff --git a/recipes/wip/games/ship-of-harkinian/recipe.toml b/recipes/wip/games/strategy/ship-of-harkinian/recipe.toml similarity index 100% rename from recipes/wip/games/ship-of-harkinian/recipe.toml rename to recipes/wip/games/strategy/ship-of-harkinian/recipe.toml diff --git a/recipes/wip/games/stockfish/recipe.toml b/recipes/wip/games/strategy/stockfish/recipe.toml similarity index 100% rename from recipes/wip/games/stockfish/recipe.toml rename to recipes/wip/games/strategy/stockfish/recipe.toml diff --git a/recipes/wip/games/tic-tac-toe-rs/recipe.toml b/recipes/wip/games/strategy/tic-tac-toe-rs/recipe.toml similarity index 100% rename from recipes/wip/games/tic-tac-toe-rs/recipe.toml rename to recipes/wip/games/strategy/tic-tac-toe-rs/recipe.toml diff --git a/recipes/wip/games/warsow/recipe.toml b/recipes/wip/games/strategy/warsow/recipe.toml similarity index 100% rename from recipes/wip/games/warsow/recipe.toml rename to recipes/wip/games/strategy/warsow/recipe.toml From 6b488002794973051cd187718d6ff77ce12a5def Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 26 Jun 2024 03:39:45 +0000 Subject: [PATCH 1943/3180] Move recipes --- recipes/wip/graphics/{ => editors}/blender-lts/recipe.toml | 0 recipes/wip/graphics/{ => editors}/blender/recipe.toml | 0 recipes/wip/graphics/{ => editors}/gimp/recipe.toml | 0 recipes/wip/graphics/{ => editors}/inkscape/recipe.toml | 0 recipes/wip/graphics/{ => editors}/krita/recipe.toml | 0 recipes/wip/graphics/{ => editors}/opentoonz/recipe.toml | 0 recipes/wip/graphics/{ => other}/appleseed/recipe.toml | 0 recipes/wip/graphics/{ => other}/c-ray/recipe.toml | 0 recipes/wip/graphics/{ => other}/cmark/recipe.toml | 0 recipes/wip/graphics/{ => other}/darktable/recipe.toml | 0 recipes/wip/graphics/{ => other}/derive-rs/recipe.toml | 0 recipes/wip/graphics/{ => other}/dify/recipe.toml | 0 recipes/wip/graphics/{ => other}/dominant-colours/recipe.toml | 0 recipes/wip/graphics/{ => other}/dssim/recipe.toml | 0 recipes/wip/graphics/{ => other}/embree/recipe.toml | 0 recipes/wip/graphics/{ => other}/flowbetween/recipe.toml | 0 recipes/wip/graphics/{ => other}/gaffer/recipe.toml | 0 recipes/wip/graphics/{ => other}/glou/recipe.toml | 0 recipes/wip/graphics/{ => other}/gmic-qt/recipe.toml | 0 recipes/wip/graphics/{ => other}/gmic/recipe.toml | 0 recipes/wip/graphics/{ => other}/graphicsmagick/recipe.toml | 0 recipes/wip/graphics/{ => other}/graphviz/recipe.toml | 0 recipes/wip/graphics/{ => other}/halo/recipe.toml | 0 recipes/wip/graphics/{ => other}/hdr10plus-tool/recipe.toml | 0 recipes/wip/graphics/{ => other}/imagemagick/recipe.toml | 0 recipes/wip/graphics/{ => other}/incompact3d/recipe.toml | 0 recipes/wip/graphics/{ => other}/jxl-oxide/recipe.toml | 0 recipes/wip/graphics/{ => other}/kantig/recipe.toml | 0 recipes/wip/graphics/{ => other}/lpl/recipe.toml | 0 recipes/wip/graphics/{ => other}/luxcorerender/recipe.toml | 0 recipes/wip/graphics/{ => other}/matugen/recipe.toml | 0 recipes/wip/graphics/{ => other}/ocrs/recipe.toml | 0 recipes/wip/graphics/{ => other}/oculante/recipe.toml | 0 recipes/wip/graphics/{ => other}/openscad/recipe.toml | 0 recipes/wip/graphics/{ => other}/ospray-studio/recipe.toml | 0 recipes/wip/graphics/{ => other}/ospray/recipe.toml | 0 recipes/wip/graphics/{ => other}/paraview-data/recipe.toml | 0 recipes/wip/graphics/{ => other}/paraview/recipe.toml | 0 recipes/wip/graphics/{ => other}/pilka/recipe.toml | 0 recipes/wip/graphics/{ => other}/pix-image-viewer/recipe.toml | 0 recipes/wip/graphics/{ => other}/pixsort/recipe.toml | 0 recipes/wip/graphics/{ => other}/rascii/recipe.toml | 0 recipes/wip/graphics/{ => other}/rawtherapee/recipe.toml | 0 recipes/wip/graphics/{ => other}/reve/recipe.toml | 0 recipes/wip/graphics/{ => other}/rimage/recipe.toml | 0 recipes/wip/graphics/{ => other}/satty/recipe.toml | 0 recipes/wip/graphics/{ => other}/shadergarden/recipe.toml | 0 recipes/wip/graphics/{ => other}/simp/recipe.toml | 0 recipes/wip/graphics/{ => other}/smag/recipe.toml | 0 recipes/wip/graphics/{ => other}/texel/recipe.toml | 0 recipes/wip/graphics/{ => other}/toybrot/recipe.toml | 0 recipes/wip/graphics/{ => other}/tungsten-renderer/recipe.toml | 0 recipes/wip/graphics/{ => other/upscaling}/rscale2x/recipe.toml | 0 .../wip/graphics/{ => other/upscaling}/upscaler-rs/recipe.toml | 0 recipes/wip/graphics/{ => other}/viu/recipe.toml | 0 recipes/wip/graphics/{ => other}/watch-stl/recipe.toml | 0 56 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/graphics/{ => editors}/blender-lts/recipe.toml (100%) rename recipes/wip/graphics/{ => editors}/blender/recipe.toml (100%) rename recipes/wip/graphics/{ => editors}/gimp/recipe.toml (100%) rename recipes/wip/graphics/{ => editors}/inkscape/recipe.toml (100%) rename recipes/wip/graphics/{ => editors}/krita/recipe.toml (100%) rename recipes/wip/graphics/{ => editors}/opentoonz/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/appleseed/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/c-ray/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/cmark/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/darktable/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/derive-rs/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/dify/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/dominant-colours/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/dssim/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/embree/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/flowbetween/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/gaffer/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/glou/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/gmic-qt/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/gmic/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/graphicsmagick/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/graphviz/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/halo/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/hdr10plus-tool/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/imagemagick/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/incompact3d/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/jxl-oxide/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/kantig/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/lpl/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/luxcorerender/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/matugen/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/ocrs/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/oculante/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/openscad/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/ospray-studio/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/ospray/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/paraview-data/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/paraview/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/pilka/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/pix-image-viewer/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/pixsort/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/rascii/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/rawtherapee/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/reve/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/rimage/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/satty/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/shadergarden/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/simp/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/smag/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/texel/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/toybrot/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/tungsten-renderer/recipe.toml (100%) rename recipes/wip/graphics/{ => other/upscaling}/rscale2x/recipe.toml (100%) rename recipes/wip/graphics/{ => other/upscaling}/upscaler-rs/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/viu/recipe.toml (100%) rename recipes/wip/graphics/{ => other}/watch-stl/recipe.toml (100%) diff --git a/recipes/wip/graphics/blender-lts/recipe.toml b/recipes/wip/graphics/editors/blender-lts/recipe.toml similarity index 100% rename from recipes/wip/graphics/blender-lts/recipe.toml rename to recipes/wip/graphics/editors/blender-lts/recipe.toml diff --git a/recipes/wip/graphics/blender/recipe.toml b/recipes/wip/graphics/editors/blender/recipe.toml similarity index 100% rename from recipes/wip/graphics/blender/recipe.toml rename to recipes/wip/graphics/editors/blender/recipe.toml diff --git a/recipes/wip/graphics/gimp/recipe.toml b/recipes/wip/graphics/editors/gimp/recipe.toml similarity index 100% rename from recipes/wip/graphics/gimp/recipe.toml rename to recipes/wip/graphics/editors/gimp/recipe.toml diff --git a/recipes/wip/graphics/inkscape/recipe.toml b/recipes/wip/graphics/editors/inkscape/recipe.toml similarity index 100% rename from recipes/wip/graphics/inkscape/recipe.toml rename to recipes/wip/graphics/editors/inkscape/recipe.toml diff --git a/recipes/wip/graphics/krita/recipe.toml b/recipes/wip/graphics/editors/krita/recipe.toml similarity index 100% rename from recipes/wip/graphics/krita/recipe.toml rename to recipes/wip/graphics/editors/krita/recipe.toml diff --git a/recipes/wip/graphics/opentoonz/recipe.toml b/recipes/wip/graphics/editors/opentoonz/recipe.toml similarity index 100% rename from recipes/wip/graphics/opentoonz/recipe.toml rename to recipes/wip/graphics/editors/opentoonz/recipe.toml diff --git a/recipes/wip/graphics/appleseed/recipe.toml b/recipes/wip/graphics/other/appleseed/recipe.toml similarity index 100% rename from recipes/wip/graphics/appleseed/recipe.toml rename to recipes/wip/graphics/other/appleseed/recipe.toml diff --git a/recipes/wip/graphics/c-ray/recipe.toml b/recipes/wip/graphics/other/c-ray/recipe.toml similarity index 100% rename from recipes/wip/graphics/c-ray/recipe.toml rename to recipes/wip/graphics/other/c-ray/recipe.toml diff --git a/recipes/wip/graphics/cmark/recipe.toml b/recipes/wip/graphics/other/cmark/recipe.toml similarity index 100% rename from recipes/wip/graphics/cmark/recipe.toml rename to recipes/wip/graphics/other/cmark/recipe.toml diff --git a/recipes/wip/graphics/darktable/recipe.toml b/recipes/wip/graphics/other/darktable/recipe.toml similarity index 100% rename from recipes/wip/graphics/darktable/recipe.toml rename to recipes/wip/graphics/other/darktable/recipe.toml diff --git a/recipes/wip/graphics/derive-rs/recipe.toml b/recipes/wip/graphics/other/derive-rs/recipe.toml similarity index 100% rename from recipes/wip/graphics/derive-rs/recipe.toml rename to recipes/wip/graphics/other/derive-rs/recipe.toml diff --git a/recipes/wip/graphics/dify/recipe.toml b/recipes/wip/graphics/other/dify/recipe.toml similarity index 100% rename from recipes/wip/graphics/dify/recipe.toml rename to recipes/wip/graphics/other/dify/recipe.toml diff --git a/recipes/wip/graphics/dominant-colours/recipe.toml b/recipes/wip/graphics/other/dominant-colours/recipe.toml similarity index 100% rename from recipes/wip/graphics/dominant-colours/recipe.toml rename to recipes/wip/graphics/other/dominant-colours/recipe.toml diff --git a/recipes/wip/graphics/dssim/recipe.toml b/recipes/wip/graphics/other/dssim/recipe.toml similarity index 100% rename from recipes/wip/graphics/dssim/recipe.toml rename to recipes/wip/graphics/other/dssim/recipe.toml diff --git a/recipes/wip/graphics/embree/recipe.toml b/recipes/wip/graphics/other/embree/recipe.toml similarity index 100% rename from recipes/wip/graphics/embree/recipe.toml rename to recipes/wip/graphics/other/embree/recipe.toml diff --git a/recipes/wip/graphics/flowbetween/recipe.toml b/recipes/wip/graphics/other/flowbetween/recipe.toml similarity index 100% rename from recipes/wip/graphics/flowbetween/recipe.toml rename to recipes/wip/graphics/other/flowbetween/recipe.toml diff --git a/recipes/wip/graphics/gaffer/recipe.toml b/recipes/wip/graphics/other/gaffer/recipe.toml similarity index 100% rename from recipes/wip/graphics/gaffer/recipe.toml rename to recipes/wip/graphics/other/gaffer/recipe.toml diff --git a/recipes/wip/graphics/glou/recipe.toml b/recipes/wip/graphics/other/glou/recipe.toml similarity index 100% rename from recipes/wip/graphics/glou/recipe.toml rename to recipes/wip/graphics/other/glou/recipe.toml diff --git a/recipes/wip/graphics/gmic-qt/recipe.toml b/recipes/wip/graphics/other/gmic-qt/recipe.toml similarity index 100% rename from recipes/wip/graphics/gmic-qt/recipe.toml rename to recipes/wip/graphics/other/gmic-qt/recipe.toml diff --git a/recipes/wip/graphics/gmic/recipe.toml b/recipes/wip/graphics/other/gmic/recipe.toml similarity index 100% rename from recipes/wip/graphics/gmic/recipe.toml rename to recipes/wip/graphics/other/gmic/recipe.toml diff --git a/recipes/wip/graphics/graphicsmagick/recipe.toml b/recipes/wip/graphics/other/graphicsmagick/recipe.toml similarity index 100% rename from recipes/wip/graphics/graphicsmagick/recipe.toml rename to recipes/wip/graphics/other/graphicsmagick/recipe.toml diff --git a/recipes/wip/graphics/graphviz/recipe.toml b/recipes/wip/graphics/other/graphviz/recipe.toml similarity index 100% rename from recipes/wip/graphics/graphviz/recipe.toml rename to recipes/wip/graphics/other/graphviz/recipe.toml diff --git a/recipes/wip/graphics/halo/recipe.toml b/recipes/wip/graphics/other/halo/recipe.toml similarity index 100% rename from recipes/wip/graphics/halo/recipe.toml rename to recipes/wip/graphics/other/halo/recipe.toml diff --git a/recipes/wip/graphics/hdr10plus-tool/recipe.toml b/recipes/wip/graphics/other/hdr10plus-tool/recipe.toml similarity index 100% rename from recipes/wip/graphics/hdr10plus-tool/recipe.toml rename to recipes/wip/graphics/other/hdr10plus-tool/recipe.toml diff --git a/recipes/wip/graphics/imagemagick/recipe.toml b/recipes/wip/graphics/other/imagemagick/recipe.toml similarity index 100% rename from recipes/wip/graphics/imagemagick/recipe.toml rename to recipes/wip/graphics/other/imagemagick/recipe.toml diff --git a/recipes/wip/graphics/incompact3d/recipe.toml b/recipes/wip/graphics/other/incompact3d/recipe.toml similarity index 100% rename from recipes/wip/graphics/incompact3d/recipe.toml rename to recipes/wip/graphics/other/incompact3d/recipe.toml diff --git a/recipes/wip/graphics/jxl-oxide/recipe.toml b/recipes/wip/graphics/other/jxl-oxide/recipe.toml similarity index 100% rename from recipes/wip/graphics/jxl-oxide/recipe.toml rename to recipes/wip/graphics/other/jxl-oxide/recipe.toml diff --git a/recipes/wip/graphics/kantig/recipe.toml b/recipes/wip/graphics/other/kantig/recipe.toml similarity index 100% rename from recipes/wip/graphics/kantig/recipe.toml rename to recipes/wip/graphics/other/kantig/recipe.toml diff --git a/recipes/wip/graphics/lpl/recipe.toml b/recipes/wip/graphics/other/lpl/recipe.toml similarity index 100% rename from recipes/wip/graphics/lpl/recipe.toml rename to recipes/wip/graphics/other/lpl/recipe.toml diff --git a/recipes/wip/graphics/luxcorerender/recipe.toml b/recipes/wip/graphics/other/luxcorerender/recipe.toml similarity index 100% rename from recipes/wip/graphics/luxcorerender/recipe.toml rename to recipes/wip/graphics/other/luxcorerender/recipe.toml diff --git a/recipes/wip/graphics/matugen/recipe.toml b/recipes/wip/graphics/other/matugen/recipe.toml similarity index 100% rename from recipes/wip/graphics/matugen/recipe.toml rename to recipes/wip/graphics/other/matugen/recipe.toml diff --git a/recipes/wip/graphics/ocrs/recipe.toml b/recipes/wip/graphics/other/ocrs/recipe.toml similarity index 100% rename from recipes/wip/graphics/ocrs/recipe.toml rename to recipes/wip/graphics/other/ocrs/recipe.toml diff --git a/recipes/wip/graphics/oculante/recipe.toml b/recipes/wip/graphics/other/oculante/recipe.toml similarity index 100% rename from recipes/wip/graphics/oculante/recipe.toml rename to recipes/wip/graphics/other/oculante/recipe.toml diff --git a/recipes/wip/graphics/openscad/recipe.toml b/recipes/wip/graphics/other/openscad/recipe.toml similarity index 100% rename from recipes/wip/graphics/openscad/recipe.toml rename to recipes/wip/graphics/other/openscad/recipe.toml diff --git a/recipes/wip/graphics/ospray-studio/recipe.toml b/recipes/wip/graphics/other/ospray-studio/recipe.toml similarity index 100% rename from recipes/wip/graphics/ospray-studio/recipe.toml rename to recipes/wip/graphics/other/ospray-studio/recipe.toml diff --git a/recipes/wip/graphics/ospray/recipe.toml b/recipes/wip/graphics/other/ospray/recipe.toml similarity index 100% rename from recipes/wip/graphics/ospray/recipe.toml rename to recipes/wip/graphics/other/ospray/recipe.toml diff --git a/recipes/wip/graphics/paraview-data/recipe.toml b/recipes/wip/graphics/other/paraview-data/recipe.toml similarity index 100% rename from recipes/wip/graphics/paraview-data/recipe.toml rename to recipes/wip/graphics/other/paraview-data/recipe.toml diff --git a/recipes/wip/graphics/paraview/recipe.toml b/recipes/wip/graphics/other/paraview/recipe.toml similarity index 100% rename from recipes/wip/graphics/paraview/recipe.toml rename to recipes/wip/graphics/other/paraview/recipe.toml diff --git a/recipes/wip/graphics/pilka/recipe.toml b/recipes/wip/graphics/other/pilka/recipe.toml similarity index 100% rename from recipes/wip/graphics/pilka/recipe.toml rename to recipes/wip/graphics/other/pilka/recipe.toml diff --git a/recipes/wip/graphics/pix-image-viewer/recipe.toml b/recipes/wip/graphics/other/pix-image-viewer/recipe.toml similarity index 100% rename from recipes/wip/graphics/pix-image-viewer/recipe.toml rename to recipes/wip/graphics/other/pix-image-viewer/recipe.toml diff --git a/recipes/wip/graphics/pixsort/recipe.toml b/recipes/wip/graphics/other/pixsort/recipe.toml similarity index 100% rename from recipes/wip/graphics/pixsort/recipe.toml rename to recipes/wip/graphics/other/pixsort/recipe.toml diff --git a/recipes/wip/graphics/rascii/recipe.toml b/recipes/wip/graphics/other/rascii/recipe.toml similarity index 100% rename from recipes/wip/graphics/rascii/recipe.toml rename to recipes/wip/graphics/other/rascii/recipe.toml diff --git a/recipes/wip/graphics/rawtherapee/recipe.toml b/recipes/wip/graphics/other/rawtherapee/recipe.toml similarity index 100% rename from recipes/wip/graphics/rawtherapee/recipe.toml rename to recipes/wip/graphics/other/rawtherapee/recipe.toml diff --git a/recipes/wip/graphics/reve/recipe.toml b/recipes/wip/graphics/other/reve/recipe.toml similarity index 100% rename from recipes/wip/graphics/reve/recipe.toml rename to recipes/wip/graphics/other/reve/recipe.toml diff --git a/recipes/wip/graphics/rimage/recipe.toml b/recipes/wip/graphics/other/rimage/recipe.toml similarity index 100% rename from recipes/wip/graphics/rimage/recipe.toml rename to recipes/wip/graphics/other/rimage/recipe.toml diff --git a/recipes/wip/graphics/satty/recipe.toml b/recipes/wip/graphics/other/satty/recipe.toml similarity index 100% rename from recipes/wip/graphics/satty/recipe.toml rename to recipes/wip/graphics/other/satty/recipe.toml diff --git a/recipes/wip/graphics/shadergarden/recipe.toml b/recipes/wip/graphics/other/shadergarden/recipe.toml similarity index 100% rename from recipes/wip/graphics/shadergarden/recipe.toml rename to recipes/wip/graphics/other/shadergarden/recipe.toml diff --git a/recipes/wip/graphics/simp/recipe.toml b/recipes/wip/graphics/other/simp/recipe.toml similarity index 100% rename from recipes/wip/graphics/simp/recipe.toml rename to recipes/wip/graphics/other/simp/recipe.toml diff --git a/recipes/wip/graphics/smag/recipe.toml b/recipes/wip/graphics/other/smag/recipe.toml similarity index 100% rename from recipes/wip/graphics/smag/recipe.toml rename to recipes/wip/graphics/other/smag/recipe.toml diff --git a/recipes/wip/graphics/texel/recipe.toml b/recipes/wip/graphics/other/texel/recipe.toml similarity index 100% rename from recipes/wip/graphics/texel/recipe.toml rename to recipes/wip/graphics/other/texel/recipe.toml diff --git a/recipes/wip/graphics/toybrot/recipe.toml b/recipes/wip/graphics/other/toybrot/recipe.toml similarity index 100% rename from recipes/wip/graphics/toybrot/recipe.toml rename to recipes/wip/graphics/other/toybrot/recipe.toml diff --git a/recipes/wip/graphics/tungsten-renderer/recipe.toml b/recipes/wip/graphics/other/tungsten-renderer/recipe.toml similarity index 100% rename from recipes/wip/graphics/tungsten-renderer/recipe.toml rename to recipes/wip/graphics/other/tungsten-renderer/recipe.toml diff --git a/recipes/wip/graphics/rscale2x/recipe.toml b/recipes/wip/graphics/other/upscaling/rscale2x/recipe.toml similarity index 100% rename from recipes/wip/graphics/rscale2x/recipe.toml rename to recipes/wip/graphics/other/upscaling/rscale2x/recipe.toml diff --git a/recipes/wip/graphics/upscaler-rs/recipe.toml b/recipes/wip/graphics/other/upscaling/upscaler-rs/recipe.toml similarity index 100% rename from recipes/wip/graphics/upscaler-rs/recipe.toml rename to recipes/wip/graphics/other/upscaling/upscaler-rs/recipe.toml diff --git a/recipes/wip/graphics/viu/recipe.toml b/recipes/wip/graphics/other/viu/recipe.toml similarity index 100% rename from recipes/wip/graphics/viu/recipe.toml rename to recipes/wip/graphics/other/viu/recipe.toml diff --git a/recipes/wip/graphics/watch-stl/recipe.toml b/recipes/wip/graphics/other/watch-stl/recipe.toml similarity index 100% rename from recipes/wip/graphics/watch-stl/recipe.toml rename to recipes/wip/graphics/other/watch-stl/recipe.toml From 8e9d7858e2f9610a7098f48e6cd2c2a6f5f4d199 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 26 Jun 2024 03:43:26 +0000 Subject: [PATCH 1944/3180] Move recipes --- recipes/wip/libs/{ => kde}/kf5-activities-stats/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-activities/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-apidox/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-archive/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-attica/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-auth/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-baloo/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-bookmarks/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-calendarcore/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-cmake-modules/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-cmutils/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-codecs/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-completion/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-config/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-configwidgets/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-contacts/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-coreaddons/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-crash/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-dav/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-dbusaddons/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-declarative/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-dnssd/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-doctools/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-emoticons/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-filemetadata/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-frameworkintegration/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-globalaccel/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-guiaddons/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-holidays/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-i18n/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-iconthemes/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-idletime/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-init/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-io/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-itemmodels/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-itemviews/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-jobwidgets/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-kded/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-kdesu/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-kirigami/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-modem-manager/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-networkmanager/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-newstuff/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-notifications/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-notifyconfig/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-package/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-parts/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-people/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-plasma-framework/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-plotting/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-prison/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-pty/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-purpose/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-qqc2-desktop-style/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-quickcharts/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-runner/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-service/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-solid/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-sonnet/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-syndication/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-syntax-highlighting/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-sysguard/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-texteditor/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-textwidgets/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-threadweaver/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-unitconversion/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-wayland/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-widgetaddons/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-windowsystem/recipe.toml | 0 recipes/wip/libs/{ => kde}/kf5-xmlgui/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt4/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-3d/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-activeqt/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-base/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-charts/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-coap/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-connectivity/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-datavis3d/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-declarative/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-doc/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-full/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-gamepad/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-graphical-effects/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-imageformats/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-knx/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-location/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-lottie/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-mqtt/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-multimedia/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-networkauth/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-opcua/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-purchasing/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-quick3d/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-quickcontrols/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-quickcontrols2/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-quicktimeline/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-remoteobjects/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-script/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-scxml/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-sensors/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-serialbus/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-serialport/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-speech/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-svg/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-tools/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-tqtc/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-translations/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-virtualkeyboard/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-wayland/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-webchannel/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-webengine/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-webglplugin/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-webkit/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-websockets/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-webview/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-x11extras/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt5-xmlpatterns/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-3d/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-activeqt/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-base/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-charts/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-connectivity/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-datavis3d/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-declarative/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-doc/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-full/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-graphs/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-grpc/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-httpserver/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-imageformats/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-languageserver/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-location/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-lottie/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-multimedia/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-networkauth/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-positioning/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-qt5compat/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-quick3d/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-quick3dphysics/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-quickeffectmaker/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-quicktimeline/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-remoteobjects/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-scxml/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-sensors/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-serialbus/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-serialport/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-shadertools/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-speech/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-svg/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-tools/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-translations/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-virtualkeyboard/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-wayland/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-webchannel/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-webengine/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-websockets/recipe.toml | 0 recipes/wip/libs/{ => qt}/qt6-webview/recipe.toml | 0 157 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/libs/{ => kde}/kf5-activities-stats/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-activities/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-apidox/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-archive/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-attica/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-auth/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-baloo/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-bookmarks/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-calendarcore/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-cmake-modules/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-cmutils/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-codecs/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-completion/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-config/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-configwidgets/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-contacts/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-coreaddons/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-crash/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-dav/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-dbusaddons/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-declarative/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-dnssd/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-doctools/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-emoticons/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-filemetadata/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-frameworkintegration/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-globalaccel/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-guiaddons/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-holidays/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-i18n/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-iconthemes/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-idletime/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-init/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-io/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-itemmodels/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-itemviews/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-jobwidgets/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-kded/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-kdesu/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-kirigami/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-modem-manager/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-networkmanager/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-newstuff/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-notifications/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-notifyconfig/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-package/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-parts/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-people/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-plasma-framework/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-plotting/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-prison/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-pty/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-purpose/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-qqc2-desktop-style/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-quickcharts/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-runner/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-service/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-solid/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-sonnet/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-syndication/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-syntax-highlighting/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-sysguard/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-texteditor/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-textwidgets/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-threadweaver/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-unitconversion/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-wayland/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-widgetaddons/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-windowsystem/recipe.toml (100%) rename recipes/wip/libs/{ => kde}/kf5-xmlgui/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt4/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-3d/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-activeqt/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-base/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-charts/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-coap/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-connectivity/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-datavis3d/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-declarative/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-doc/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-full/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-gamepad/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-graphical-effects/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-imageformats/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-knx/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-location/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-lottie/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-mqtt/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-multimedia/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-networkauth/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-opcua/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-purchasing/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-quick3d/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-quickcontrols/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-quickcontrols2/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-quicktimeline/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-remoteobjects/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-script/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-scxml/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-sensors/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-serialbus/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-serialport/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-speech/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-svg/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-tools/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-tqtc/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-translations/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-virtualkeyboard/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-wayland/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-webchannel/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-webengine/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-webglplugin/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-webkit/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-websockets/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-webview/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-x11extras/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt5-xmlpatterns/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-3d/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-activeqt/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-base/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-charts/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-connectivity/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-datavis3d/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-declarative/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-doc/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-full/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-graphs/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-grpc/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-httpserver/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-imageformats/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-languageserver/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-location/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-lottie/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-multimedia/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-networkauth/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-positioning/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-qt5compat/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-quick3d/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-quick3dphysics/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-quickeffectmaker/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-quicktimeline/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-remoteobjects/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-scxml/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-sensors/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-serialbus/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-serialport/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-shadertools/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-speech/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-svg/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-tools/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-translations/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-virtualkeyboard/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-wayland/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-webchannel/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-webengine/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-websockets/recipe.toml (100%) rename recipes/wip/libs/{ => qt}/qt6-webview/recipe.toml (100%) diff --git a/recipes/wip/libs/kf5-activities-stats/recipe.toml b/recipes/wip/libs/kde/kf5-activities-stats/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities-stats/recipe.toml rename to recipes/wip/libs/kde/kf5-activities-stats/recipe.toml diff --git a/recipes/wip/libs/kf5-activities/recipe.toml b/recipes/wip/libs/kde/kf5-activities/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-activities/recipe.toml rename to recipes/wip/libs/kde/kf5-activities/recipe.toml diff --git a/recipes/wip/libs/kf5-apidox/recipe.toml b/recipes/wip/libs/kde/kf5-apidox/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-apidox/recipe.toml rename to recipes/wip/libs/kde/kf5-apidox/recipe.toml diff --git a/recipes/wip/libs/kf5-archive/recipe.toml b/recipes/wip/libs/kde/kf5-archive/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-archive/recipe.toml rename to recipes/wip/libs/kde/kf5-archive/recipe.toml diff --git a/recipes/wip/libs/kf5-attica/recipe.toml b/recipes/wip/libs/kde/kf5-attica/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-attica/recipe.toml rename to recipes/wip/libs/kde/kf5-attica/recipe.toml diff --git a/recipes/wip/libs/kf5-auth/recipe.toml b/recipes/wip/libs/kde/kf5-auth/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-auth/recipe.toml rename to recipes/wip/libs/kde/kf5-auth/recipe.toml diff --git a/recipes/wip/libs/kf5-baloo/recipe.toml b/recipes/wip/libs/kde/kf5-baloo/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-baloo/recipe.toml rename to recipes/wip/libs/kde/kf5-baloo/recipe.toml diff --git a/recipes/wip/libs/kf5-bookmarks/recipe.toml b/recipes/wip/libs/kde/kf5-bookmarks/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-bookmarks/recipe.toml rename to recipes/wip/libs/kde/kf5-bookmarks/recipe.toml diff --git a/recipes/wip/libs/kf5-calendarcore/recipe.toml b/recipes/wip/libs/kde/kf5-calendarcore/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-calendarcore/recipe.toml rename to recipes/wip/libs/kde/kf5-calendarcore/recipe.toml diff --git a/recipes/wip/libs/kf5-cmake-modules/recipe.toml b/recipes/wip/libs/kde/kf5-cmake-modules/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-cmake-modules/recipe.toml rename to recipes/wip/libs/kde/kf5-cmake-modules/recipe.toml diff --git a/recipes/wip/libs/kf5-cmutils/recipe.toml b/recipes/wip/libs/kde/kf5-cmutils/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-cmutils/recipe.toml rename to recipes/wip/libs/kde/kf5-cmutils/recipe.toml diff --git a/recipes/wip/libs/kf5-codecs/recipe.toml b/recipes/wip/libs/kde/kf5-codecs/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-codecs/recipe.toml rename to recipes/wip/libs/kde/kf5-codecs/recipe.toml diff --git a/recipes/wip/libs/kf5-completion/recipe.toml b/recipes/wip/libs/kde/kf5-completion/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-completion/recipe.toml rename to recipes/wip/libs/kde/kf5-completion/recipe.toml diff --git a/recipes/wip/libs/kf5-config/recipe.toml b/recipes/wip/libs/kde/kf5-config/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-config/recipe.toml rename to recipes/wip/libs/kde/kf5-config/recipe.toml diff --git a/recipes/wip/libs/kf5-configwidgets/recipe.toml b/recipes/wip/libs/kde/kf5-configwidgets/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-configwidgets/recipe.toml rename to recipes/wip/libs/kde/kf5-configwidgets/recipe.toml diff --git a/recipes/wip/libs/kf5-contacts/recipe.toml b/recipes/wip/libs/kde/kf5-contacts/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-contacts/recipe.toml rename to recipes/wip/libs/kde/kf5-contacts/recipe.toml diff --git a/recipes/wip/libs/kf5-coreaddons/recipe.toml b/recipes/wip/libs/kde/kf5-coreaddons/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-coreaddons/recipe.toml rename to recipes/wip/libs/kde/kf5-coreaddons/recipe.toml diff --git a/recipes/wip/libs/kf5-crash/recipe.toml b/recipes/wip/libs/kde/kf5-crash/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-crash/recipe.toml rename to recipes/wip/libs/kde/kf5-crash/recipe.toml diff --git a/recipes/wip/libs/kf5-dav/recipe.toml b/recipes/wip/libs/kde/kf5-dav/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-dav/recipe.toml rename to recipes/wip/libs/kde/kf5-dav/recipe.toml diff --git a/recipes/wip/libs/kf5-dbusaddons/recipe.toml b/recipes/wip/libs/kde/kf5-dbusaddons/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-dbusaddons/recipe.toml rename to recipes/wip/libs/kde/kf5-dbusaddons/recipe.toml diff --git a/recipes/wip/libs/kf5-declarative/recipe.toml b/recipes/wip/libs/kde/kf5-declarative/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-declarative/recipe.toml rename to recipes/wip/libs/kde/kf5-declarative/recipe.toml diff --git a/recipes/wip/libs/kf5-dnssd/recipe.toml b/recipes/wip/libs/kde/kf5-dnssd/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-dnssd/recipe.toml rename to recipes/wip/libs/kde/kf5-dnssd/recipe.toml diff --git a/recipes/wip/libs/kf5-doctools/recipe.toml b/recipes/wip/libs/kde/kf5-doctools/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-doctools/recipe.toml rename to recipes/wip/libs/kde/kf5-doctools/recipe.toml diff --git a/recipes/wip/libs/kf5-emoticons/recipe.toml b/recipes/wip/libs/kde/kf5-emoticons/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-emoticons/recipe.toml rename to recipes/wip/libs/kde/kf5-emoticons/recipe.toml diff --git a/recipes/wip/libs/kf5-filemetadata/recipe.toml b/recipes/wip/libs/kde/kf5-filemetadata/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-filemetadata/recipe.toml rename to recipes/wip/libs/kde/kf5-filemetadata/recipe.toml diff --git a/recipes/wip/libs/kf5-frameworkintegration/recipe.toml b/recipes/wip/libs/kde/kf5-frameworkintegration/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-frameworkintegration/recipe.toml rename to recipes/wip/libs/kde/kf5-frameworkintegration/recipe.toml diff --git a/recipes/wip/libs/kf5-globalaccel/recipe.toml b/recipes/wip/libs/kde/kf5-globalaccel/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-globalaccel/recipe.toml rename to recipes/wip/libs/kde/kf5-globalaccel/recipe.toml diff --git a/recipes/wip/libs/kf5-guiaddons/recipe.toml b/recipes/wip/libs/kde/kf5-guiaddons/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-guiaddons/recipe.toml rename to recipes/wip/libs/kde/kf5-guiaddons/recipe.toml diff --git a/recipes/wip/libs/kf5-holidays/recipe.toml b/recipes/wip/libs/kde/kf5-holidays/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-holidays/recipe.toml rename to recipes/wip/libs/kde/kf5-holidays/recipe.toml diff --git a/recipes/wip/libs/kf5-i18n/recipe.toml b/recipes/wip/libs/kde/kf5-i18n/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-i18n/recipe.toml rename to recipes/wip/libs/kde/kf5-i18n/recipe.toml diff --git a/recipes/wip/libs/kf5-iconthemes/recipe.toml b/recipes/wip/libs/kde/kf5-iconthemes/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-iconthemes/recipe.toml rename to recipes/wip/libs/kde/kf5-iconthemes/recipe.toml diff --git a/recipes/wip/libs/kf5-idletime/recipe.toml b/recipes/wip/libs/kde/kf5-idletime/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-idletime/recipe.toml rename to recipes/wip/libs/kde/kf5-idletime/recipe.toml diff --git a/recipes/wip/libs/kf5-init/recipe.toml b/recipes/wip/libs/kde/kf5-init/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-init/recipe.toml rename to recipes/wip/libs/kde/kf5-init/recipe.toml diff --git a/recipes/wip/libs/kf5-io/recipe.toml b/recipes/wip/libs/kde/kf5-io/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-io/recipe.toml rename to recipes/wip/libs/kde/kf5-io/recipe.toml diff --git a/recipes/wip/libs/kf5-itemmodels/recipe.toml b/recipes/wip/libs/kde/kf5-itemmodels/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-itemmodels/recipe.toml rename to recipes/wip/libs/kde/kf5-itemmodels/recipe.toml diff --git a/recipes/wip/libs/kf5-itemviews/recipe.toml b/recipes/wip/libs/kde/kf5-itemviews/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-itemviews/recipe.toml rename to recipes/wip/libs/kde/kf5-itemviews/recipe.toml diff --git a/recipes/wip/libs/kf5-jobwidgets/recipe.toml b/recipes/wip/libs/kde/kf5-jobwidgets/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-jobwidgets/recipe.toml rename to recipes/wip/libs/kde/kf5-jobwidgets/recipe.toml diff --git a/recipes/wip/libs/kf5-kded/recipe.toml b/recipes/wip/libs/kde/kf5-kded/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-kded/recipe.toml rename to recipes/wip/libs/kde/kf5-kded/recipe.toml diff --git a/recipes/wip/libs/kf5-kdesu/recipe.toml b/recipes/wip/libs/kde/kf5-kdesu/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-kdesu/recipe.toml rename to recipes/wip/libs/kde/kf5-kdesu/recipe.toml diff --git a/recipes/wip/libs/kf5-kirigami/recipe.toml b/recipes/wip/libs/kde/kf5-kirigami/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-kirigami/recipe.toml rename to recipes/wip/libs/kde/kf5-kirigami/recipe.toml diff --git a/recipes/wip/libs/kf5-modem-manager/recipe.toml b/recipes/wip/libs/kde/kf5-modem-manager/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-modem-manager/recipe.toml rename to recipes/wip/libs/kde/kf5-modem-manager/recipe.toml diff --git a/recipes/wip/libs/kf5-networkmanager/recipe.toml b/recipes/wip/libs/kde/kf5-networkmanager/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-networkmanager/recipe.toml rename to recipes/wip/libs/kde/kf5-networkmanager/recipe.toml diff --git a/recipes/wip/libs/kf5-newstuff/recipe.toml b/recipes/wip/libs/kde/kf5-newstuff/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-newstuff/recipe.toml rename to recipes/wip/libs/kde/kf5-newstuff/recipe.toml diff --git a/recipes/wip/libs/kf5-notifications/recipe.toml b/recipes/wip/libs/kde/kf5-notifications/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-notifications/recipe.toml rename to recipes/wip/libs/kde/kf5-notifications/recipe.toml diff --git a/recipes/wip/libs/kf5-notifyconfig/recipe.toml b/recipes/wip/libs/kde/kf5-notifyconfig/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-notifyconfig/recipe.toml rename to recipes/wip/libs/kde/kf5-notifyconfig/recipe.toml diff --git a/recipes/wip/libs/kf5-package/recipe.toml b/recipes/wip/libs/kde/kf5-package/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-package/recipe.toml rename to recipes/wip/libs/kde/kf5-package/recipe.toml diff --git a/recipes/wip/libs/kf5-parts/recipe.toml b/recipes/wip/libs/kde/kf5-parts/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-parts/recipe.toml rename to recipes/wip/libs/kde/kf5-parts/recipe.toml diff --git a/recipes/wip/libs/kf5-people/recipe.toml b/recipes/wip/libs/kde/kf5-people/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-people/recipe.toml rename to recipes/wip/libs/kde/kf5-people/recipe.toml diff --git a/recipes/wip/libs/kf5-plasma-framework/recipe.toml b/recipes/wip/libs/kde/kf5-plasma-framework/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-plasma-framework/recipe.toml rename to recipes/wip/libs/kde/kf5-plasma-framework/recipe.toml diff --git a/recipes/wip/libs/kf5-plotting/recipe.toml b/recipes/wip/libs/kde/kf5-plotting/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-plotting/recipe.toml rename to recipes/wip/libs/kde/kf5-plotting/recipe.toml diff --git a/recipes/wip/libs/kf5-prison/recipe.toml b/recipes/wip/libs/kde/kf5-prison/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-prison/recipe.toml rename to recipes/wip/libs/kde/kf5-prison/recipe.toml diff --git a/recipes/wip/libs/kf5-pty/recipe.toml b/recipes/wip/libs/kde/kf5-pty/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-pty/recipe.toml rename to recipes/wip/libs/kde/kf5-pty/recipe.toml diff --git a/recipes/wip/libs/kf5-purpose/recipe.toml b/recipes/wip/libs/kde/kf5-purpose/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-purpose/recipe.toml rename to recipes/wip/libs/kde/kf5-purpose/recipe.toml diff --git a/recipes/wip/libs/kf5-qqc2-desktop-style/recipe.toml b/recipes/wip/libs/kde/kf5-qqc2-desktop-style/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-qqc2-desktop-style/recipe.toml rename to recipes/wip/libs/kde/kf5-qqc2-desktop-style/recipe.toml diff --git a/recipes/wip/libs/kf5-quickcharts/recipe.toml b/recipes/wip/libs/kde/kf5-quickcharts/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-quickcharts/recipe.toml rename to recipes/wip/libs/kde/kf5-quickcharts/recipe.toml diff --git a/recipes/wip/libs/kf5-runner/recipe.toml b/recipes/wip/libs/kde/kf5-runner/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-runner/recipe.toml rename to recipes/wip/libs/kde/kf5-runner/recipe.toml diff --git a/recipes/wip/libs/kf5-service/recipe.toml b/recipes/wip/libs/kde/kf5-service/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-service/recipe.toml rename to recipes/wip/libs/kde/kf5-service/recipe.toml diff --git a/recipes/wip/libs/kf5-solid/recipe.toml b/recipes/wip/libs/kde/kf5-solid/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-solid/recipe.toml rename to recipes/wip/libs/kde/kf5-solid/recipe.toml diff --git a/recipes/wip/libs/kf5-sonnet/recipe.toml b/recipes/wip/libs/kde/kf5-sonnet/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-sonnet/recipe.toml rename to recipes/wip/libs/kde/kf5-sonnet/recipe.toml diff --git a/recipes/wip/libs/kf5-syndication/recipe.toml b/recipes/wip/libs/kde/kf5-syndication/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-syndication/recipe.toml rename to recipes/wip/libs/kde/kf5-syndication/recipe.toml diff --git a/recipes/wip/libs/kf5-syntax-highlighting/recipe.toml b/recipes/wip/libs/kde/kf5-syntax-highlighting/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-syntax-highlighting/recipe.toml rename to recipes/wip/libs/kde/kf5-syntax-highlighting/recipe.toml diff --git a/recipes/wip/libs/kf5-sysguard/recipe.toml b/recipes/wip/libs/kde/kf5-sysguard/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-sysguard/recipe.toml rename to recipes/wip/libs/kde/kf5-sysguard/recipe.toml diff --git a/recipes/wip/libs/kf5-texteditor/recipe.toml b/recipes/wip/libs/kde/kf5-texteditor/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-texteditor/recipe.toml rename to recipes/wip/libs/kde/kf5-texteditor/recipe.toml diff --git a/recipes/wip/libs/kf5-textwidgets/recipe.toml b/recipes/wip/libs/kde/kf5-textwidgets/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-textwidgets/recipe.toml rename to recipes/wip/libs/kde/kf5-textwidgets/recipe.toml diff --git a/recipes/wip/libs/kf5-threadweaver/recipe.toml b/recipes/wip/libs/kde/kf5-threadweaver/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-threadweaver/recipe.toml rename to recipes/wip/libs/kde/kf5-threadweaver/recipe.toml diff --git a/recipes/wip/libs/kf5-unitconversion/recipe.toml b/recipes/wip/libs/kde/kf5-unitconversion/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-unitconversion/recipe.toml rename to recipes/wip/libs/kde/kf5-unitconversion/recipe.toml diff --git a/recipes/wip/libs/kf5-wayland/recipe.toml b/recipes/wip/libs/kde/kf5-wayland/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-wayland/recipe.toml rename to recipes/wip/libs/kde/kf5-wayland/recipe.toml diff --git a/recipes/wip/libs/kf5-widgetaddons/recipe.toml b/recipes/wip/libs/kde/kf5-widgetaddons/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-widgetaddons/recipe.toml rename to recipes/wip/libs/kde/kf5-widgetaddons/recipe.toml diff --git a/recipes/wip/libs/kf5-windowsystem/recipe.toml b/recipes/wip/libs/kde/kf5-windowsystem/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-windowsystem/recipe.toml rename to recipes/wip/libs/kde/kf5-windowsystem/recipe.toml diff --git a/recipes/wip/libs/kf5-xmlgui/recipe.toml b/recipes/wip/libs/kde/kf5-xmlgui/recipe.toml similarity index 100% rename from recipes/wip/libs/kf5-xmlgui/recipe.toml rename to recipes/wip/libs/kde/kf5-xmlgui/recipe.toml diff --git a/recipes/wip/libs/qt4/recipe.toml b/recipes/wip/libs/qt/qt4/recipe.toml similarity index 100% rename from recipes/wip/libs/qt4/recipe.toml rename to recipes/wip/libs/qt/qt4/recipe.toml diff --git a/recipes/wip/libs/qt5-3d/recipe.toml b/recipes/wip/libs/qt/qt5-3d/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-3d/recipe.toml rename to recipes/wip/libs/qt/qt5-3d/recipe.toml diff --git a/recipes/wip/libs/qt5-activeqt/recipe.toml b/recipes/wip/libs/qt/qt5-activeqt/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-activeqt/recipe.toml rename to recipes/wip/libs/qt/qt5-activeqt/recipe.toml diff --git a/recipes/wip/libs/qt5-base/recipe.toml b/recipes/wip/libs/qt/qt5-base/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-base/recipe.toml rename to recipes/wip/libs/qt/qt5-base/recipe.toml diff --git a/recipes/wip/libs/qt5-charts/recipe.toml b/recipes/wip/libs/qt/qt5-charts/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-charts/recipe.toml rename to recipes/wip/libs/qt/qt5-charts/recipe.toml diff --git a/recipes/wip/libs/qt5-coap/recipe.toml b/recipes/wip/libs/qt/qt5-coap/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-coap/recipe.toml rename to recipes/wip/libs/qt/qt5-coap/recipe.toml diff --git a/recipes/wip/libs/qt5-connectivity/recipe.toml b/recipes/wip/libs/qt/qt5-connectivity/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-connectivity/recipe.toml rename to recipes/wip/libs/qt/qt5-connectivity/recipe.toml diff --git a/recipes/wip/libs/qt5-datavis3d/recipe.toml b/recipes/wip/libs/qt/qt5-datavis3d/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-datavis3d/recipe.toml rename to recipes/wip/libs/qt/qt5-datavis3d/recipe.toml diff --git a/recipes/wip/libs/qt5-declarative/recipe.toml b/recipes/wip/libs/qt/qt5-declarative/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-declarative/recipe.toml rename to recipes/wip/libs/qt/qt5-declarative/recipe.toml diff --git a/recipes/wip/libs/qt5-doc/recipe.toml b/recipes/wip/libs/qt/qt5-doc/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-doc/recipe.toml rename to recipes/wip/libs/qt/qt5-doc/recipe.toml diff --git a/recipes/wip/libs/qt5-full/recipe.toml b/recipes/wip/libs/qt/qt5-full/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-full/recipe.toml rename to recipes/wip/libs/qt/qt5-full/recipe.toml diff --git a/recipes/wip/libs/qt5-gamepad/recipe.toml b/recipes/wip/libs/qt/qt5-gamepad/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-gamepad/recipe.toml rename to recipes/wip/libs/qt/qt5-gamepad/recipe.toml diff --git a/recipes/wip/libs/qt5-graphical-effects/recipe.toml b/recipes/wip/libs/qt/qt5-graphical-effects/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-graphical-effects/recipe.toml rename to recipes/wip/libs/qt/qt5-graphical-effects/recipe.toml diff --git a/recipes/wip/libs/qt5-imageformats/recipe.toml b/recipes/wip/libs/qt/qt5-imageformats/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-imageformats/recipe.toml rename to recipes/wip/libs/qt/qt5-imageformats/recipe.toml diff --git a/recipes/wip/libs/qt5-knx/recipe.toml b/recipes/wip/libs/qt/qt5-knx/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-knx/recipe.toml rename to recipes/wip/libs/qt/qt5-knx/recipe.toml diff --git a/recipes/wip/libs/qt5-location/recipe.toml b/recipes/wip/libs/qt/qt5-location/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-location/recipe.toml rename to recipes/wip/libs/qt/qt5-location/recipe.toml diff --git a/recipes/wip/libs/qt5-lottie/recipe.toml b/recipes/wip/libs/qt/qt5-lottie/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-lottie/recipe.toml rename to recipes/wip/libs/qt/qt5-lottie/recipe.toml diff --git a/recipes/wip/libs/qt5-mqtt/recipe.toml b/recipes/wip/libs/qt/qt5-mqtt/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-mqtt/recipe.toml rename to recipes/wip/libs/qt/qt5-mqtt/recipe.toml diff --git a/recipes/wip/libs/qt5-multimedia/recipe.toml b/recipes/wip/libs/qt/qt5-multimedia/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-multimedia/recipe.toml rename to recipes/wip/libs/qt/qt5-multimedia/recipe.toml diff --git a/recipes/wip/libs/qt5-networkauth/recipe.toml b/recipes/wip/libs/qt/qt5-networkauth/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-networkauth/recipe.toml rename to recipes/wip/libs/qt/qt5-networkauth/recipe.toml diff --git a/recipes/wip/libs/qt5-opcua/recipe.toml b/recipes/wip/libs/qt/qt5-opcua/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-opcua/recipe.toml rename to recipes/wip/libs/qt/qt5-opcua/recipe.toml diff --git a/recipes/wip/libs/qt5-purchasing/recipe.toml b/recipes/wip/libs/qt/qt5-purchasing/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-purchasing/recipe.toml rename to recipes/wip/libs/qt/qt5-purchasing/recipe.toml diff --git a/recipes/wip/libs/qt5-quick3d/recipe.toml b/recipes/wip/libs/qt/qt5-quick3d/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-quick3d/recipe.toml rename to recipes/wip/libs/qt/qt5-quick3d/recipe.toml diff --git a/recipes/wip/libs/qt5-quickcontrols/recipe.toml b/recipes/wip/libs/qt/qt5-quickcontrols/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-quickcontrols/recipe.toml rename to recipes/wip/libs/qt/qt5-quickcontrols/recipe.toml diff --git a/recipes/wip/libs/qt5-quickcontrols2/recipe.toml b/recipes/wip/libs/qt/qt5-quickcontrols2/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-quickcontrols2/recipe.toml rename to recipes/wip/libs/qt/qt5-quickcontrols2/recipe.toml diff --git a/recipes/wip/libs/qt5-quicktimeline/recipe.toml b/recipes/wip/libs/qt/qt5-quicktimeline/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-quicktimeline/recipe.toml rename to recipes/wip/libs/qt/qt5-quicktimeline/recipe.toml diff --git a/recipes/wip/libs/qt5-remoteobjects/recipe.toml b/recipes/wip/libs/qt/qt5-remoteobjects/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-remoteobjects/recipe.toml rename to recipes/wip/libs/qt/qt5-remoteobjects/recipe.toml diff --git a/recipes/wip/libs/qt5-script/recipe.toml b/recipes/wip/libs/qt/qt5-script/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-script/recipe.toml rename to recipes/wip/libs/qt/qt5-script/recipe.toml diff --git a/recipes/wip/libs/qt5-scxml/recipe.toml b/recipes/wip/libs/qt/qt5-scxml/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-scxml/recipe.toml rename to recipes/wip/libs/qt/qt5-scxml/recipe.toml diff --git a/recipes/wip/libs/qt5-sensors/recipe.toml b/recipes/wip/libs/qt/qt5-sensors/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-sensors/recipe.toml rename to recipes/wip/libs/qt/qt5-sensors/recipe.toml diff --git a/recipes/wip/libs/qt5-serialbus/recipe.toml b/recipes/wip/libs/qt/qt5-serialbus/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-serialbus/recipe.toml rename to recipes/wip/libs/qt/qt5-serialbus/recipe.toml diff --git a/recipes/wip/libs/qt5-serialport/recipe.toml b/recipes/wip/libs/qt/qt5-serialport/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-serialport/recipe.toml rename to recipes/wip/libs/qt/qt5-serialport/recipe.toml diff --git a/recipes/wip/libs/qt5-speech/recipe.toml b/recipes/wip/libs/qt/qt5-speech/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-speech/recipe.toml rename to recipes/wip/libs/qt/qt5-speech/recipe.toml diff --git a/recipes/wip/libs/qt5-svg/recipe.toml b/recipes/wip/libs/qt/qt5-svg/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-svg/recipe.toml rename to recipes/wip/libs/qt/qt5-svg/recipe.toml diff --git a/recipes/wip/libs/qt5-tools/recipe.toml b/recipes/wip/libs/qt/qt5-tools/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-tools/recipe.toml rename to recipes/wip/libs/qt/qt5-tools/recipe.toml diff --git a/recipes/wip/libs/qt5-tqtc/recipe.toml b/recipes/wip/libs/qt/qt5-tqtc/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-tqtc/recipe.toml rename to recipes/wip/libs/qt/qt5-tqtc/recipe.toml diff --git a/recipes/wip/libs/qt5-translations/recipe.toml b/recipes/wip/libs/qt/qt5-translations/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-translations/recipe.toml rename to recipes/wip/libs/qt/qt5-translations/recipe.toml diff --git a/recipes/wip/libs/qt5-virtualkeyboard/recipe.toml b/recipes/wip/libs/qt/qt5-virtualkeyboard/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-virtualkeyboard/recipe.toml rename to recipes/wip/libs/qt/qt5-virtualkeyboard/recipe.toml diff --git a/recipes/wip/libs/qt5-wayland/recipe.toml b/recipes/wip/libs/qt/qt5-wayland/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-wayland/recipe.toml rename to recipes/wip/libs/qt/qt5-wayland/recipe.toml diff --git a/recipes/wip/libs/qt5-webchannel/recipe.toml b/recipes/wip/libs/qt/qt5-webchannel/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-webchannel/recipe.toml rename to recipes/wip/libs/qt/qt5-webchannel/recipe.toml diff --git a/recipes/wip/libs/qt5-webengine/recipe.toml b/recipes/wip/libs/qt/qt5-webengine/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-webengine/recipe.toml rename to recipes/wip/libs/qt/qt5-webengine/recipe.toml diff --git a/recipes/wip/libs/qt5-webglplugin/recipe.toml b/recipes/wip/libs/qt/qt5-webglplugin/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-webglplugin/recipe.toml rename to recipes/wip/libs/qt/qt5-webglplugin/recipe.toml diff --git a/recipes/wip/libs/qt5-webkit/recipe.toml b/recipes/wip/libs/qt/qt5-webkit/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-webkit/recipe.toml rename to recipes/wip/libs/qt/qt5-webkit/recipe.toml diff --git a/recipes/wip/libs/qt5-websockets/recipe.toml b/recipes/wip/libs/qt/qt5-websockets/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-websockets/recipe.toml rename to recipes/wip/libs/qt/qt5-websockets/recipe.toml diff --git a/recipes/wip/libs/qt5-webview/recipe.toml b/recipes/wip/libs/qt/qt5-webview/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-webview/recipe.toml rename to recipes/wip/libs/qt/qt5-webview/recipe.toml diff --git a/recipes/wip/libs/qt5-x11extras/recipe.toml b/recipes/wip/libs/qt/qt5-x11extras/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-x11extras/recipe.toml rename to recipes/wip/libs/qt/qt5-x11extras/recipe.toml diff --git a/recipes/wip/libs/qt5-xmlpatterns/recipe.toml b/recipes/wip/libs/qt/qt5-xmlpatterns/recipe.toml similarity index 100% rename from recipes/wip/libs/qt5-xmlpatterns/recipe.toml rename to recipes/wip/libs/qt/qt5-xmlpatterns/recipe.toml diff --git a/recipes/wip/libs/qt6-3d/recipe.toml b/recipes/wip/libs/qt/qt6-3d/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-3d/recipe.toml rename to recipes/wip/libs/qt/qt6-3d/recipe.toml diff --git a/recipes/wip/libs/qt6-activeqt/recipe.toml b/recipes/wip/libs/qt/qt6-activeqt/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-activeqt/recipe.toml rename to recipes/wip/libs/qt/qt6-activeqt/recipe.toml diff --git a/recipes/wip/libs/qt6-base/recipe.toml b/recipes/wip/libs/qt/qt6-base/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-base/recipe.toml rename to recipes/wip/libs/qt/qt6-base/recipe.toml diff --git a/recipes/wip/libs/qt6-charts/recipe.toml b/recipes/wip/libs/qt/qt6-charts/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-charts/recipe.toml rename to recipes/wip/libs/qt/qt6-charts/recipe.toml diff --git a/recipes/wip/libs/qt6-connectivity/recipe.toml b/recipes/wip/libs/qt/qt6-connectivity/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-connectivity/recipe.toml rename to recipes/wip/libs/qt/qt6-connectivity/recipe.toml diff --git a/recipes/wip/libs/qt6-datavis3d/recipe.toml b/recipes/wip/libs/qt/qt6-datavis3d/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-datavis3d/recipe.toml rename to recipes/wip/libs/qt/qt6-datavis3d/recipe.toml diff --git a/recipes/wip/libs/qt6-declarative/recipe.toml b/recipes/wip/libs/qt/qt6-declarative/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-declarative/recipe.toml rename to recipes/wip/libs/qt/qt6-declarative/recipe.toml diff --git a/recipes/wip/libs/qt6-doc/recipe.toml b/recipes/wip/libs/qt/qt6-doc/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-doc/recipe.toml rename to recipes/wip/libs/qt/qt6-doc/recipe.toml diff --git a/recipes/wip/libs/qt6-full/recipe.toml b/recipes/wip/libs/qt/qt6-full/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-full/recipe.toml rename to recipes/wip/libs/qt/qt6-full/recipe.toml diff --git a/recipes/wip/libs/qt6-graphs/recipe.toml b/recipes/wip/libs/qt/qt6-graphs/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-graphs/recipe.toml rename to recipes/wip/libs/qt/qt6-graphs/recipe.toml diff --git a/recipes/wip/libs/qt6-grpc/recipe.toml b/recipes/wip/libs/qt/qt6-grpc/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-grpc/recipe.toml rename to recipes/wip/libs/qt/qt6-grpc/recipe.toml diff --git a/recipes/wip/libs/qt6-httpserver/recipe.toml b/recipes/wip/libs/qt/qt6-httpserver/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-httpserver/recipe.toml rename to recipes/wip/libs/qt/qt6-httpserver/recipe.toml diff --git a/recipes/wip/libs/qt6-imageformats/recipe.toml b/recipes/wip/libs/qt/qt6-imageformats/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-imageformats/recipe.toml rename to recipes/wip/libs/qt/qt6-imageformats/recipe.toml diff --git a/recipes/wip/libs/qt6-languageserver/recipe.toml b/recipes/wip/libs/qt/qt6-languageserver/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-languageserver/recipe.toml rename to recipes/wip/libs/qt/qt6-languageserver/recipe.toml diff --git a/recipes/wip/libs/qt6-location/recipe.toml b/recipes/wip/libs/qt/qt6-location/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-location/recipe.toml rename to recipes/wip/libs/qt/qt6-location/recipe.toml diff --git a/recipes/wip/libs/qt6-lottie/recipe.toml b/recipes/wip/libs/qt/qt6-lottie/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-lottie/recipe.toml rename to recipes/wip/libs/qt/qt6-lottie/recipe.toml diff --git a/recipes/wip/libs/qt6-multimedia/recipe.toml b/recipes/wip/libs/qt/qt6-multimedia/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-multimedia/recipe.toml rename to recipes/wip/libs/qt/qt6-multimedia/recipe.toml diff --git a/recipes/wip/libs/qt6-networkauth/recipe.toml b/recipes/wip/libs/qt/qt6-networkauth/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-networkauth/recipe.toml rename to recipes/wip/libs/qt/qt6-networkauth/recipe.toml diff --git a/recipes/wip/libs/qt6-positioning/recipe.toml b/recipes/wip/libs/qt/qt6-positioning/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-positioning/recipe.toml rename to recipes/wip/libs/qt/qt6-positioning/recipe.toml diff --git a/recipes/wip/libs/qt6-qt5compat/recipe.toml b/recipes/wip/libs/qt/qt6-qt5compat/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-qt5compat/recipe.toml rename to recipes/wip/libs/qt/qt6-qt5compat/recipe.toml diff --git a/recipes/wip/libs/qt6-quick3d/recipe.toml b/recipes/wip/libs/qt/qt6-quick3d/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-quick3d/recipe.toml rename to recipes/wip/libs/qt/qt6-quick3d/recipe.toml diff --git a/recipes/wip/libs/qt6-quick3dphysics/recipe.toml b/recipes/wip/libs/qt/qt6-quick3dphysics/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-quick3dphysics/recipe.toml rename to recipes/wip/libs/qt/qt6-quick3dphysics/recipe.toml diff --git a/recipes/wip/libs/qt6-quickeffectmaker/recipe.toml b/recipes/wip/libs/qt/qt6-quickeffectmaker/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-quickeffectmaker/recipe.toml rename to recipes/wip/libs/qt/qt6-quickeffectmaker/recipe.toml diff --git a/recipes/wip/libs/qt6-quicktimeline/recipe.toml b/recipes/wip/libs/qt/qt6-quicktimeline/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-quicktimeline/recipe.toml rename to recipes/wip/libs/qt/qt6-quicktimeline/recipe.toml diff --git a/recipes/wip/libs/qt6-remoteobjects/recipe.toml b/recipes/wip/libs/qt/qt6-remoteobjects/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-remoteobjects/recipe.toml rename to recipes/wip/libs/qt/qt6-remoteobjects/recipe.toml diff --git a/recipes/wip/libs/qt6-scxml/recipe.toml b/recipes/wip/libs/qt/qt6-scxml/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-scxml/recipe.toml rename to recipes/wip/libs/qt/qt6-scxml/recipe.toml diff --git a/recipes/wip/libs/qt6-sensors/recipe.toml b/recipes/wip/libs/qt/qt6-sensors/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-sensors/recipe.toml rename to recipes/wip/libs/qt/qt6-sensors/recipe.toml diff --git a/recipes/wip/libs/qt6-serialbus/recipe.toml b/recipes/wip/libs/qt/qt6-serialbus/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-serialbus/recipe.toml rename to recipes/wip/libs/qt/qt6-serialbus/recipe.toml diff --git a/recipes/wip/libs/qt6-serialport/recipe.toml b/recipes/wip/libs/qt/qt6-serialport/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-serialport/recipe.toml rename to recipes/wip/libs/qt/qt6-serialport/recipe.toml diff --git a/recipes/wip/libs/qt6-shadertools/recipe.toml b/recipes/wip/libs/qt/qt6-shadertools/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-shadertools/recipe.toml rename to recipes/wip/libs/qt/qt6-shadertools/recipe.toml diff --git a/recipes/wip/libs/qt6-speech/recipe.toml b/recipes/wip/libs/qt/qt6-speech/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-speech/recipe.toml rename to recipes/wip/libs/qt/qt6-speech/recipe.toml diff --git a/recipes/wip/libs/qt6-svg/recipe.toml b/recipes/wip/libs/qt/qt6-svg/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-svg/recipe.toml rename to recipes/wip/libs/qt/qt6-svg/recipe.toml diff --git a/recipes/wip/libs/qt6-tools/recipe.toml b/recipes/wip/libs/qt/qt6-tools/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-tools/recipe.toml rename to recipes/wip/libs/qt/qt6-tools/recipe.toml diff --git a/recipes/wip/libs/qt6-translations/recipe.toml b/recipes/wip/libs/qt/qt6-translations/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-translations/recipe.toml rename to recipes/wip/libs/qt/qt6-translations/recipe.toml diff --git a/recipes/wip/libs/qt6-virtualkeyboard/recipe.toml b/recipes/wip/libs/qt/qt6-virtualkeyboard/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-virtualkeyboard/recipe.toml rename to recipes/wip/libs/qt/qt6-virtualkeyboard/recipe.toml diff --git a/recipes/wip/libs/qt6-wayland/recipe.toml b/recipes/wip/libs/qt/qt6-wayland/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-wayland/recipe.toml rename to recipes/wip/libs/qt/qt6-wayland/recipe.toml diff --git a/recipes/wip/libs/qt6-webchannel/recipe.toml b/recipes/wip/libs/qt/qt6-webchannel/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-webchannel/recipe.toml rename to recipes/wip/libs/qt/qt6-webchannel/recipe.toml diff --git a/recipes/wip/libs/qt6-webengine/recipe.toml b/recipes/wip/libs/qt/qt6-webengine/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-webengine/recipe.toml rename to recipes/wip/libs/qt/qt6-webengine/recipe.toml diff --git a/recipes/wip/libs/qt6-websockets/recipe.toml b/recipes/wip/libs/qt/qt6-websockets/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-websockets/recipe.toml rename to recipes/wip/libs/qt/qt6-websockets/recipe.toml diff --git a/recipes/wip/libs/qt6-webview/recipe.toml b/recipes/wip/libs/qt/qt6-webview/recipe.toml similarity index 100% rename from recipes/wip/libs/qt6-webview/recipe.toml rename to recipes/wip/libs/qt/qt6-webview/recipe.toml From e0425516cf29b9986ae79551a1d09e47a646bc5d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 26 Jun 2024 03:59:18 +0000 Subject: [PATCH 1945/3180] Move recipes --- recipes/wip/libs/{ => audio}/mpg123/recipe.toml | 0 recipes/wip/libs/{ => audio}/openal/recipe.toml | 0 recipes/wip/libs/{ => audio}/opusfile/recipe.toml | 0 recipes/wip/libs/{ => audio}/soundtouch/recipe.toml | 0 recipes/wip/libs/{ => audio}/speex/recipe.toml | 0 recipes/wip/libs/{ => audio}/speexdsp/recipe.toml | 0 recipes/wip/libs/{ => audio}/zmusic/recipe.toml | 0 recipes/wip/libs/{ => gui/gtk}/gtk-engines/recipe.toml | 0 recipes/wip/libs/{ => gui/gtk}/gtk2/recipe.toml | 0 recipes/wip/libs/{ => gui/gtk}/gtk2mm/recipe.toml | 0 recipes/wip/libs/{ => gui/gtk}/gtk3/recipe.toml | 0 recipes/wip/libs/{ => gui/gtk}/gtk3mm/recipe.toml | 0 recipes/wip/libs/{ => gui/gtk}/gtk4/recipe.toml | 0 recipes/wip/libs/{ => gui/gtk}/gtk4mm/recipe.toml | 0 recipes/wip/libs/{ => gui/gtk}/gtkglext/recipe.toml | 0 recipes/wip/libs/{ => gui/gtk}/gtksourceview/recipe.toml | 0 recipes/wip/libs/{ => other}/atkmm/recipe.toml | 0 recipes/wip/libs/{ => other}/babl/recipe.toml | 0 recipes/wip/libs/{ => other}/boost/recipe.toml | 0 recipes/wip/libs/{ => other}/bullet-physics/recipe.toml | 0 recipes/wip/libs/{ => other}/cairomm-1.0+/recipe.toml | 0 recipes/wip/libs/{ => other}/cairomm-1.16+/recipe.toml | 0 recipes/wip/libs/{ => other}/dcmtk/recipe.toml | 0 recipes/wip/libs/{ => other}/dspy/recipe.toml | 0 recipes/wip/libs/{ => other}/fftw/recipe.toml | 0 recipes/wip/libs/{ => other}/fltk/recipe.toml | 0 recipes/wip/libs/{ => other}/freealut/recipe.toml | 0 recipes/wip/libs/{ => other}/freeglut/recipe.toml | 0 recipes/wip/libs/{ => other}/gdbm/recipe.toml | 0 recipes/wip/libs/{ => other}/gdbm/redox.patch | 0 recipes/wip/libs/{ => other}/gflags/recipe.toml | 0 recipes/wip/libs/{ => other}/glew/recipe.toml | 0 recipes/wip/libs/{ => other}/glfw3/recipe.toml | 0 recipes/wip/libs/{ => other}/gnome2-common/recipe.toml | 0 recipes/wip/libs/{ => other}/gnome3-common/recipe.toml | 0 recipes/wip/libs/{ => other}/gnutls3/recipe.toml | 0 recipes/wip/libs/{ => other}/gobject-introspection/recipe.toml | 0 recipes/wip/libs/{ => other}/gpgme/recipe.toml | 0 recipes/wip/libs/{ => other}/hdf5/recipe.toml | 0 recipes/wip/libs/{ => other}/hwloc/recipe.toml | 0 recipes/wip/libs/{ => other}/imlib2/recipe.toml | 0 recipes/wip/libs/{ => other}/inih/recipe.toml | 0 recipes/wip/libs/{ => other}/iniparser/recipe.toml | 0 recipes/wip/libs/{ => other}/json-c/recipe.toml | 0 recipes/wip/libs/{ => other}/json-glib/recipe.toml | 0 recipes/wip/libs/{ => other}/jsonrpc-glib/recipe.toml | 0 recipes/wip/libs/{ => other}/kerberos5/recipe.toml | 0 recipes/wip/libs/{ => other}/lame/recipe.toml | 0 recipes/wip/libs/{ => other}/lammps/recipe.toml | 0 recipes/wip/libs/{ => other}/lib2geom/recipe.toml | 0 recipes/wip/libs/{ => other}/liba52/recipe.toml | 0 recipes/wip/libs/{ => other}/libadwaita/recipe.toml | 0 recipes/wip/libs/{ => other}/libaio/recipe.toml | 0 recipes/wip/libs/{ => other}/libaom/recipe.toml | 0 recipes/wip/libs/{ => other}/libargon2/recipe.toml | 0 recipes/wip/libs/{ => other}/libart/recipe.toml | 0 recipes/wip/libs/{ => other}/libaspell/recipe.toml | 0 recipes/wip/libs/{ => other}/libass/recipe.toml | 0 recipes/wip/libs/{ => other}/libatomic_ops/recipe.toml | 0 recipes/wip/libs/{ => other}/libavif/recipe.toml | 0 recipes/wip/libs/{ => other}/libbluray/recipe.toml | 0 recipes/wip/libs/{ => other}/libbotan/recipe.toml | 0 recipes/wip/libs/{ => other}/libbrotli/recipe.toml | 0 recipes/wip/libs/{ => other}/libbsd/recipe.toml | 0 recipes/wip/libs/{ => other}/libburn/recipe.toml | 0 recipes/wip/libs/{ => other}/libcaca/recipe.toml | 0 recipes/wip/libs/{ => other}/libcamera/recipe.toml | 0 recipes/wip/libs/{ => other}/libcap/recipe.toml | 0 recipes/wip/libs/{ => other}/libcdio-paranoia/recipe.toml | 0 recipes/wip/libs/{ => other}/libcdio/recipe.toml | 0 recipes/wip/libs/{ => other}/libcdr/recipe.toml | 0 recipes/wip/libs/{ => other}/libcpuid/recipe.toml | 0 recipes/wip/libs/{ => other}/libcups/recipe.toml | 0 recipes/wip/libs/{ => other}/libde265/recipe.toml | 0 recipes/wip/libs/{ => other}/libdecor/recipe.toml | 0 recipes/wip/libs/{ => other}/libdeflate/recipe.toml | 0 recipes/wip/libs/{ => other}/libdex/recipe.toml | 0 recipes/wip/libs/{ => other}/libdmx/recipe.toml | 0 recipes/wip/libs/{ => other}/libdotconf/recipe.toml | 0 recipes/wip/libs/{ => other}/libdouble-conversion/recipe.toml | 0 recipes/wip/libs/{ => other}/libdvbpsi/recipe.toml | 0 recipes/wip/libs/{ => other}/libdvdcss/recipe.toml | 0 recipes/wip/libs/{ => other}/libdvdnav/recipe.toml | 0 recipes/wip/libs/{ => other}/libdvdread/recipe.toml | 0 recipes/wip/libs/{ => other}/libebml/recipe.toml | 0 recipes/wip/libs/{ => other}/libedit/recipe.toml | 0 recipes/wip/libs/{ => other}/libeditline/recipe.toml | 0 recipes/wip/libs/{ => other}/libeigen/recipe.toml | 0 recipes/wip/libs/{ => other}/libenet/recipe.toml | 0 recipes/wip/libs/{ => other}/libepoxy/recipe.toml | 0 recipes/wip/libs/{ => other}/liberty-eiffel/recipe.toml | 0 recipes/wip/libs/{ => other}/libevdev/recipe.toml | 0 recipes/wip/libs/{ => other}/libevent/recipe.toml | 0 recipes/wip/libs/{ => other}/libfmt/recipe.toml | 0 recipes/wip/libs/{ => other}/libfontenc/recipe.toml | 0 recipes/wip/libs/{ => other}/libfs/recipe.toml | 0 recipes/wip/libs/{ => other}/libfuse2/recipe.toml | 0 recipes/wip/libs/{ => other}/libfuse3/recipe.toml | 0 recipes/wip/libs/{ => other}/libgav1/recipe.toml | 0 recipes/wip/libs/{ => other}/libgc/recipe.toml | 0 recipes/wip/libs/{ => other}/libgcrypt/recipe.toml | 0 recipes/wip/libs/{ => other}/libgdal/recipe.toml | 0 recipes/wip/libs/{ => other}/libgif/recipe.toml | 0 recipes/wip/libs/{ => other}/libgit2/recipe.toml | 0 recipes/wip/libs/{ => other}/libglm/recipe.toml | 0 recipes/wip/libs/{ => other}/libgloox/recipe.toml | 0 recipes/wip/libs/{ => other}/libgpg-error/recipe.toml | 0 recipes/wip/libs/{ => other}/libgphoto2/recipe.toml | 0 recipes/wip/libs/{ => other}/libgpm/recipe.toml | 0 recipes/wip/libs/{ => other}/libgrantlee/recipe.toml | 0 recipes/wip/libs/{ => other}/libgsl/recipe.toml | 0 recipes/wip/libs/{ => other}/libgspell-gtk3/recipe.toml | 0 recipes/wip/libs/{ => other}/libgspell-gtk4/recipe.toml | 0 recipes/wip/libs/{ => other}/libharu/recipe.toml | 0 recipes/wip/libs/{ => other}/libheif/recipe.toml | 0 recipes/wip/libs/{ => other}/libhidapi/recipe.toml | 0 recipes/wip/libs/{ => other}/libhyphen/recipe.toml | 0 recipes/wip/libs/{ => other}/libice/recipe.toml | 0 recipes/wip/libs/{ => other}/libicu/recipe.toml | 0 recipes/wip/libs/{ => other}/libimath/recipe.toml | 0 recipes/wip/libs/{ => other}/libimmer/recipe.toml | 0 recipes/wip/libs/{ => other}/libinput/recipe.toml | 0 recipes/wip/libs/{ => other}/libisoburn/recipe.toml | 0 recipes/wip/libs/{ => other}/libisofs/recipe.toml | 0 recipes/wip/libs/{ => other}/libjasper/recipe.toml | 0 recipes/wip/libs/{ => other}/libjpeg-turbo/recipe.toml | 0 recipes/wip/libs/{ => other}/libjxl/recipe.toml | 0 recipes/wip/libs/{ => other}/libkdcraw/recipe.toml | 0 recipes/wip/libs/{ => other}/libkomparediff2/recipe.toml | 0 recipes/wip/libs/{ => other}/liblager/recipe.toml | 0 recipes/wip/libs/{ => other}/liblapack/recipe.toml | 0 recipes/wip/libs/{ => other}/liblcms/recipe.toml | 0 recipes/wip/libs/{ => other}/liblensfun/recipe.toml | 0 recipes/wip/libs/{ => other}/liblo/recipe.toml | 0 recipes/wip/libs/{ => other}/libm17n/recipe.toml | 0 recipes/wip/libs/{ => other}/libmad/recipe.toml | 0 recipes/wip/libs/{ => other}/libmatroska/recipe.toml | 0 recipes/wip/libs/{ => other}/libmd/recipe.toml | 0 recipes/wip/libs/{ => other}/libmpeg2/recipe.toml | 0 recipes/wip/libs/{ => other}/libmypaint/recipe.toml | 0 recipes/wip/libs/{ => other}/libnlopt/recipe.toml | 0 recipes/wip/libs/{ => other}/libnotify/recipe.toml | 0 recipes/wip/libs/{ => other}/libnsl/recipe.toml | 0 recipes/wip/libs/{ => other}/libopus/recipe.toml | 0 recipes/wip/libs/{ => other}/libotf/recipe.toml | 0 recipes/wip/libs/{ => other}/libpanel/recipe.toml | 0 recipes/wip/libs/{ => other}/libpcap/recipe.toml | 0 recipes/wip/libs/{ => other}/libpcsclite/recipe.toml | 0 recipes/wip/libs/{ => other}/libpeas/recipe.toml | 0 recipes/wip/libs/{ => other}/libpoppler/recipe.toml | 0 recipes/wip/libs/{ => other}/libportaudio/recipe.toml | 0 recipes/wip/libs/{ => other}/libpthread-stubs/recipe.toml | 0 recipes/wip/libs/{ => other}/libpugixml/recipe.toml | 0 recipes/wip/libs/{ => other}/libqalculate/recipe.toml | 0 recipes/wip/libs/{ => other}/libqrcodegenc/recipe.toml | 0 recipes/wip/libs/{ => other}/libraptor2/recipe.toml | 0 recipes/wip/libs/{ => other}/librasqal/recipe.toml | 0 recipes/wip/libs/{ => other}/libraw/recipe.toml | 0 recipes/wip/libs/{ => other}/librdf/recipe.toml | 0 recipes/wip/libs/{ => other}/librevenge/recipe.toml | 0 recipes/wip/libs/{ => other}/librist/recipe.toml | 0 recipes/wip/libs/{ => other}/librkcommon/recipe.toml | 0 recipes/wip/libs/{ => other}/librsvg/recipe.toml | 0 recipes/wip/libs/{ => other}/libsamplerate/recipe.toml | 0 recipes/wip/libs/{ => other}/libseexpr-kde/recipe.toml | 0 recipes/wip/libs/{ => other}/libsigc++/recipe.toml | 0 recipes/wip/libs/{ => other}/libsixel/recipe.toml | 0 recipes/wip/libs/{ => other}/libskia/recipe.toml | 0 recipes/wip/libs/{ => other}/libslirp/recipe.toml | 0 recipes/wip/libs/{ => other}/libsm/recipe.toml | 0 recipes/wip/libs/{ => other}/libsndfile/recipe.toml | 0 recipes/wip/libs/{ => other}/libsoundio/recipe.toml | 0 recipes/wip/libs/{ => other}/libsoup/recipe.toml | 0 recipes/wip/libs/{ => other}/libspiro/recipe.toml | 0 recipes/wip/libs/{ => other}/libsrt/recipe.toml | 0 recipes/wip/libs/{ => other}/libssh/recipe.toml | 0 recipes/wip/libs/{ => other}/libstatgrab/recipe.toml | 0 recipes/wip/libs/{ => other}/libstk/recipe.toml | 0 recipes/wip/libs/{ => other}/libtheora/recipe.toml | 0 recipes/wip/libs/{ => other}/libtickit/recipe.toml | 0 recipes/wip/libs/{ => other}/libtiff/recipe.toml | 0 recipes/wip/libs/{ => other}/libtool/recipe.toml | 0 recipes/wip/libs/{ => other}/libunibreak/recipe.toml | 0 recipes/wip/libs/{ => other}/libunistring/recipe.toml | 0 recipes/wip/libs/{ => other}/libunwind/recipe.toml | 0 recipes/wip/libs/{ => other}/liburcu/recipe.toml | 0 recipes/wip/libs/{ => other}/libusb/recipe.toml | 0 recipes/wip/libs/{ => other}/libuuid-ossp/recipe.toml | 0 recipes/wip/libs/{ => other}/libuuid/recipe.toml | 0 recipes/wip/libs/{ => other}/libuuid/redox.patch | 0 recipes/wip/libs/{ => other}/libuv/recipe.toml | 0 recipes/wip/libs/{ => other}/libva/recipe.toml | 0 recipes/wip/libs/{ => other}/libvisio/recipe.toml | 0 recipes/wip/libs/{ => other}/libvncserver/recipe.toml | 0 recipes/wip/libs/{ => other}/libvpx/recipe.toml | 0 recipes/wip/libs/{ => other}/libvte/recipe.toml | 0 recipes/wip/libs/{ => other}/libvterm/recipe.toml | 0 recipes/wip/libs/{ => other}/libvulkan/recipe.toml | 0 recipes/wip/libs/{ => other}/libwayland/recipe.toml | 0 recipes/wip/libs/{ => other}/libwebp/recipe.toml | 0 recipes/wip/libs/{ => other}/libwebp2/recipe.toml | 0 recipes/wip/libs/{ => other}/libwebsocket++/recipe.toml | 0 recipes/wip/libs/{ => other}/libwebsockets/recipe.toml | 0 recipes/wip/libs/{ => other}/libwmf/recipe.toml | 0 recipes/wip/libs/{ => other}/libwpd/recipe.toml | 0 recipes/wip/libs/{ => other}/libx11/recipe.toml | 0 recipes/wip/libs/{ => other}/libxau/recipe.toml | 0 recipes/wip/libs/{ => other}/libxaw/recipe.toml | 0 recipes/wip/libs/{ => other}/libxcb/recipe.toml | 0 recipes/wip/libs/{ => other}/libxcomposite/recipe.toml | 0 recipes/wip/libs/{ => other}/libxcrypt/recipe.toml | 0 recipes/wip/libs/{ => other}/libxcursor/recipe.toml | 0 recipes/wip/libs/{ => other}/libxdamage/recipe.toml | 0 recipes/wip/libs/{ => other}/libxdmcp/recipe.toml | 0 recipes/wip/libs/{ => other}/libxext/recipe.toml | 0 recipes/wip/libs/{ => other}/libxfixes/recipe.toml | 0 recipes/wip/libs/{ => other}/libxft/recipe.toml | 0 recipes/wip/libs/{ => other}/libxi/recipe.toml | 0 recipes/wip/libs/{ => other}/libxinerama/recipe.toml | 0 recipes/wip/libs/{ => other}/libxkbcommon/recipe.toml | 0 recipes/wip/libs/{ => other}/libxkbfile/recipe.toml | 0 recipes/wip/libs/{ => other}/libxmu/recipe.toml | 0 recipes/wip/libs/{ => other}/libxpm/recipe.toml | 0 recipes/wip/libs/{ => other}/libxrandr/recipe.toml | 0 recipes/wip/libs/{ => other}/libxrender/recipe.toml | 0 recipes/wip/libs/{ => other}/libxres/recipe.toml | 0 recipes/wip/libs/{ => other}/libxsimd/recipe.toml | 0 recipes/wip/libs/{ => other}/libxslt/recipe.toml | 0 recipes/wip/libs/{ => other}/libxss/recipe.toml | 0 recipes/wip/libs/{ => other}/libxtl/recipe.toml | 0 recipes/wip/libs/{ => other}/libxtrans/recipe.toml | 0 recipes/wip/libs/{ => other}/libxtst/recipe.toml | 0 recipes/wip/libs/{ => other}/libxv/recipe.toml | 0 recipes/wip/libs/{ => other}/libxvmc/recipe.toml | 0 recipes/wip/libs/{ => other}/libyaml/recipe.toml | 0 recipes/wip/libs/{ => other}/libzimg/recipe.toml | 0 recipes/wip/libs/{ => other}/libzug/recipe.toml | 0 recipes/wip/libs/{ => other}/libzvbi/recipe.toml | 0 recipes/wip/libs/{ => other}/lilv/recipe.toml | 0 recipes/wip/libs/{ => other}/liquid-dsp/recipe.toml | 0 recipes/wip/libs/{ => other}/livedotcom/recipe.toml | 0 recipes/wip/libs/{ => other}/lrdf/recipe.toml | 0 recipes/wip/libs/{ => other}/lv2/recipe.toml | 0 recipes/wip/libs/{ => other}/lzlib/recipe.toml | 0 recipes/wip/libs/{ => other}/m4/recipe.toml | 0 recipes/wip/libs/{ => other}/maven/recipe.toml | 0 recipes/wip/libs/{ => other}/mbedtls/recipe.toml | 0 recipes/wip/libs/{ => other}/mimalloc/recipe.toml | 0 recipes/wip/libs/{ => other}/mlt/recipe.toml | 0 recipes/wip/libs/{ => other}/mpc/recipe.toml | 0 recipes/wip/libs/{ => other}/musepack/recipe.toml | 0 recipes/wip/libs/{ => other}/nlohmann-json/recipe.toml | 0 recipes/wip/libs/{ => other}/oidn/recipe.toml | 0 recipes/wip/libs/{ => other}/onednn/recipe.toml | 0 recipes/wip/libs/{ => other}/onetbb/recipe.toml | 0 recipes/wip/libs/{ => other}/openblas/recipe.toml | 0 recipes/wip/libs/{ => other}/opencolorio/recipe.toml | 0 recipes/wip/libs/{ => other}/opencv4/recipe.toml | 0 recipes/wip/libs/{ => other}/openexr/recipe.toml | 0 recipes/wip/libs/{ => other}/openimageio/recipe.toml | 0 recipes/wip/libs/{ => other}/openjpeg/recipe.toml | 0 recipes/wip/libs/{ => other}/openmpi/recipe.toml | 0 recipes/wip/libs/{ => other}/openvkl/recipe.toml | 0 recipes/wip/libs/{ => other}/pangomm/recipe.toml | 0 recipes/wip/libs/{ => other}/pjsip/recipe.toml | 0 recipes/wip/libs/{ => other}/popt/recipe.toml | 0 recipes/wip/libs/{ => other}/projectm/recipe.toml | 0 recipes/wip/libs/{ => other}/pystring/recipe.toml | 0 recipes/wip/libs/{ => other}/quantlib/recipe.toml | 0 recipes/wip/libs/{ => other}/raylib/recipe.toml | 0 recipes/wip/libs/{ => other}/rdflib/recipe.toml | 0 recipes/wip/libs/{ => other}/rnnoise/recipe.toml | 0 recipes/wip/libs/{ => other}/rubberband/recipe.toml | 0 recipes/wip/libs/{ => other}/rustls-openssl-compat/recipe.toml | 0 recipes/wip/libs/{ => other}/scotch/recipe.toml | 0 recipes/wip/libs/{ => other}/sdl-pango/recipe.toml | 0 recipes/wip/libs/{ => other}/sdl2-net/recipe.toml | 0 recipes/wip/libs/{ => other}/sdl2-pango/recipe.toml | 0 recipes/wip/libs/{ => other}/simdjson/recipe.toml | 0 recipes/wip/libs/{ => other}/snappy/recipe.toml | 0 recipes/wip/libs/{ => other}/sord/recipe.toml | 0 recipes/wip/libs/{ => other}/sratom/recipe.toml | 0 recipes/wip/libs/{ => other}/startup-notification/recipe.toml | 0 recipes/wip/libs/{ => other}/suil/recipe.toml | 0 recipes/wip/libs/{ => other}/t4kcommon/recipe.toml | 0 recipes/wip/libs/{ => other}/taglib/recipe.toml | 0 recipes/wip/libs/{ => other}/termcap/recipe.toml | 0 recipes/wip/libs/{ => other}/totem-pl-parser/recipe.toml | 0 recipes/wip/libs/{ => other}/twolame/recipe.toml | 0 recipes/wip/libs/{ => other}/vamp-plugin-sdk/recipe.toml | 0 recipes/wip/libs/{ => other}/volk/recipe.toml | 0 recipes/wip/libs/{ => other}/webkit/recipe.toml | 0 recipes/wip/libs/{ => other}/webkitgtk3/recipe.toml | 0 recipes/wip/libs/{ => other}/webkitgtk4/recipe.toml | 0 recipes/wip/libs/{ => other}/wolfssl5/recipe.toml | 0 recipes/wip/libs/{ => other}/wxpython/recipe.toml | 0 recipes/wip/libs/{ => other}/wxwidgets-gtk3/recipe.toml | 0 recipes/wip/libs/{ => other}/x11proto/recipe.toml | 0 recipes/wip/libs/{ => other}/xcb-util/recipe.toml | 0 recipes/wip/libs/{ => other}/xxhash/recipe.toml | 0 recipes/wip/libs/{ => other}/zlib-ng/recipe.toml | 0 301 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/libs/{ => audio}/mpg123/recipe.toml (100%) rename recipes/wip/libs/{ => audio}/openal/recipe.toml (100%) rename recipes/wip/libs/{ => audio}/opusfile/recipe.toml (100%) rename recipes/wip/libs/{ => audio}/soundtouch/recipe.toml (100%) rename recipes/wip/libs/{ => audio}/speex/recipe.toml (100%) rename recipes/wip/libs/{ => audio}/speexdsp/recipe.toml (100%) rename recipes/wip/libs/{ => audio}/zmusic/recipe.toml (100%) rename recipes/wip/libs/{ => gui/gtk}/gtk-engines/recipe.toml (100%) rename recipes/wip/libs/{ => gui/gtk}/gtk2/recipe.toml (100%) rename recipes/wip/libs/{ => gui/gtk}/gtk2mm/recipe.toml (100%) rename recipes/wip/libs/{ => gui/gtk}/gtk3/recipe.toml (100%) rename recipes/wip/libs/{ => gui/gtk}/gtk3mm/recipe.toml (100%) rename recipes/wip/libs/{ => gui/gtk}/gtk4/recipe.toml (100%) rename recipes/wip/libs/{ => gui/gtk}/gtk4mm/recipe.toml (100%) rename recipes/wip/libs/{ => gui/gtk}/gtkglext/recipe.toml (100%) rename recipes/wip/libs/{ => gui/gtk}/gtksourceview/recipe.toml (100%) rename recipes/wip/libs/{ => other}/atkmm/recipe.toml (100%) rename recipes/wip/libs/{ => other}/babl/recipe.toml (100%) rename recipes/wip/libs/{ => other}/boost/recipe.toml (100%) rename recipes/wip/libs/{ => other}/bullet-physics/recipe.toml (100%) rename recipes/wip/libs/{ => other}/cairomm-1.0+/recipe.toml (100%) rename recipes/wip/libs/{ => other}/cairomm-1.16+/recipe.toml (100%) rename recipes/wip/libs/{ => other}/dcmtk/recipe.toml (100%) rename recipes/wip/libs/{ => other}/dspy/recipe.toml (100%) rename recipes/wip/libs/{ => other}/fftw/recipe.toml (100%) rename recipes/wip/libs/{ => other}/fltk/recipe.toml (100%) rename recipes/wip/libs/{ => other}/freealut/recipe.toml (100%) rename recipes/wip/libs/{ => other}/freeglut/recipe.toml (100%) rename recipes/wip/libs/{ => other}/gdbm/recipe.toml (100%) rename recipes/wip/libs/{ => other}/gdbm/redox.patch (100%) rename recipes/wip/libs/{ => other}/gflags/recipe.toml (100%) rename recipes/wip/libs/{ => other}/glew/recipe.toml (100%) rename recipes/wip/libs/{ => other}/glfw3/recipe.toml (100%) rename recipes/wip/libs/{ => other}/gnome2-common/recipe.toml (100%) rename recipes/wip/libs/{ => other}/gnome3-common/recipe.toml (100%) rename recipes/wip/libs/{ => other}/gnutls3/recipe.toml (100%) rename recipes/wip/libs/{ => other}/gobject-introspection/recipe.toml (100%) rename recipes/wip/libs/{ => other}/gpgme/recipe.toml (100%) rename recipes/wip/libs/{ => other}/hdf5/recipe.toml (100%) rename recipes/wip/libs/{ => other}/hwloc/recipe.toml (100%) rename recipes/wip/libs/{ => other}/imlib2/recipe.toml (100%) rename recipes/wip/libs/{ => other}/inih/recipe.toml (100%) rename recipes/wip/libs/{ => other}/iniparser/recipe.toml (100%) rename recipes/wip/libs/{ => other}/json-c/recipe.toml (100%) rename recipes/wip/libs/{ => other}/json-glib/recipe.toml (100%) rename recipes/wip/libs/{ => other}/jsonrpc-glib/recipe.toml (100%) rename recipes/wip/libs/{ => other}/kerberos5/recipe.toml (100%) rename recipes/wip/libs/{ => other}/lame/recipe.toml (100%) rename recipes/wip/libs/{ => other}/lammps/recipe.toml (100%) rename recipes/wip/libs/{ => other}/lib2geom/recipe.toml (100%) rename recipes/wip/libs/{ => other}/liba52/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libadwaita/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libaio/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libaom/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libargon2/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libart/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libaspell/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libass/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libatomic_ops/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libavif/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libbluray/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libbotan/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libbrotli/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libbsd/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libburn/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libcaca/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libcamera/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libcap/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libcdio-paranoia/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libcdio/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libcdr/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libcpuid/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libcups/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libde265/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libdecor/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libdeflate/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libdex/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libdmx/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libdotconf/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libdouble-conversion/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libdvbpsi/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libdvdcss/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libdvdnav/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libdvdread/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libebml/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libedit/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libeditline/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libeigen/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libenet/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libepoxy/recipe.toml (100%) rename recipes/wip/libs/{ => other}/liberty-eiffel/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libevdev/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libevent/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libfmt/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libfontenc/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libfs/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libfuse2/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libfuse3/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libgav1/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libgc/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libgcrypt/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libgdal/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libgif/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libgit2/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libglm/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libgloox/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libgpg-error/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libgphoto2/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libgpm/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libgrantlee/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libgsl/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libgspell-gtk3/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libgspell-gtk4/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libharu/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libheif/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libhidapi/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libhyphen/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libice/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libicu/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libimath/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libimmer/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libinput/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libisoburn/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libisofs/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libjasper/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libjpeg-turbo/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libjxl/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libkdcraw/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libkomparediff2/recipe.toml (100%) rename recipes/wip/libs/{ => other}/liblager/recipe.toml (100%) rename recipes/wip/libs/{ => other}/liblapack/recipe.toml (100%) rename recipes/wip/libs/{ => other}/liblcms/recipe.toml (100%) rename recipes/wip/libs/{ => other}/liblensfun/recipe.toml (100%) rename recipes/wip/libs/{ => other}/liblo/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libm17n/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libmad/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libmatroska/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libmd/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libmpeg2/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libmypaint/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libnlopt/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libnotify/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libnsl/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libopus/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libotf/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libpanel/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libpcap/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libpcsclite/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libpeas/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libpoppler/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libportaudio/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libpthread-stubs/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libpugixml/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libqalculate/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libqrcodegenc/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libraptor2/recipe.toml (100%) rename recipes/wip/libs/{ => other}/librasqal/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libraw/recipe.toml (100%) rename recipes/wip/libs/{ => other}/librdf/recipe.toml (100%) rename recipes/wip/libs/{ => other}/librevenge/recipe.toml (100%) rename recipes/wip/libs/{ => other}/librist/recipe.toml (100%) rename recipes/wip/libs/{ => other}/librkcommon/recipe.toml (100%) rename recipes/wip/libs/{ => other}/librsvg/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libsamplerate/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libseexpr-kde/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libsigc++/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libsixel/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libskia/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libslirp/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libsm/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libsndfile/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libsoundio/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libsoup/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libspiro/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libsrt/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libssh/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libstatgrab/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libstk/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libtheora/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libtickit/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libtiff/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libtool/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libunibreak/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libunistring/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libunwind/recipe.toml (100%) rename recipes/wip/libs/{ => other}/liburcu/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libusb/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libuuid-ossp/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libuuid/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libuuid/redox.patch (100%) rename recipes/wip/libs/{ => other}/libuv/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libva/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libvisio/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libvncserver/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libvpx/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libvte/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libvterm/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libvulkan/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libwayland/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libwebp/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libwebp2/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libwebsocket++/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libwebsockets/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libwmf/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libwpd/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libx11/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxau/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxaw/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxcb/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxcomposite/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxcrypt/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxcursor/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxdamage/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxdmcp/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxext/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxfixes/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxft/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxi/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxinerama/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxkbcommon/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxkbfile/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxmu/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxpm/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxrandr/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxrender/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxres/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxsimd/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxslt/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxss/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxtl/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxtrans/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxtst/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxv/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libxvmc/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libyaml/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libzimg/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libzug/recipe.toml (100%) rename recipes/wip/libs/{ => other}/libzvbi/recipe.toml (100%) rename recipes/wip/libs/{ => other}/lilv/recipe.toml (100%) rename recipes/wip/libs/{ => other}/liquid-dsp/recipe.toml (100%) rename recipes/wip/libs/{ => other}/livedotcom/recipe.toml (100%) rename recipes/wip/libs/{ => other}/lrdf/recipe.toml (100%) rename recipes/wip/libs/{ => other}/lv2/recipe.toml (100%) rename recipes/wip/libs/{ => other}/lzlib/recipe.toml (100%) rename recipes/wip/libs/{ => other}/m4/recipe.toml (100%) rename recipes/wip/libs/{ => other}/maven/recipe.toml (100%) rename recipes/wip/libs/{ => other}/mbedtls/recipe.toml (100%) rename recipes/wip/libs/{ => other}/mimalloc/recipe.toml (100%) rename recipes/wip/libs/{ => other}/mlt/recipe.toml (100%) rename recipes/wip/libs/{ => other}/mpc/recipe.toml (100%) rename recipes/wip/libs/{ => other}/musepack/recipe.toml (100%) rename recipes/wip/libs/{ => other}/nlohmann-json/recipe.toml (100%) rename recipes/wip/libs/{ => other}/oidn/recipe.toml (100%) rename recipes/wip/libs/{ => other}/onednn/recipe.toml (100%) rename recipes/wip/libs/{ => other}/onetbb/recipe.toml (100%) rename recipes/wip/libs/{ => other}/openblas/recipe.toml (100%) rename recipes/wip/libs/{ => other}/opencolorio/recipe.toml (100%) rename recipes/wip/libs/{ => other}/opencv4/recipe.toml (100%) rename recipes/wip/libs/{ => other}/openexr/recipe.toml (100%) rename recipes/wip/libs/{ => other}/openimageio/recipe.toml (100%) rename recipes/wip/libs/{ => other}/openjpeg/recipe.toml (100%) rename recipes/wip/libs/{ => other}/openmpi/recipe.toml (100%) rename recipes/wip/libs/{ => other}/openvkl/recipe.toml (100%) rename recipes/wip/libs/{ => other}/pangomm/recipe.toml (100%) rename recipes/wip/libs/{ => other}/pjsip/recipe.toml (100%) rename recipes/wip/libs/{ => other}/popt/recipe.toml (100%) rename recipes/wip/libs/{ => other}/projectm/recipe.toml (100%) rename recipes/wip/libs/{ => other}/pystring/recipe.toml (100%) rename recipes/wip/libs/{ => other}/quantlib/recipe.toml (100%) rename recipes/wip/libs/{ => other}/raylib/recipe.toml (100%) rename recipes/wip/libs/{ => other}/rdflib/recipe.toml (100%) rename recipes/wip/libs/{ => other}/rnnoise/recipe.toml (100%) rename recipes/wip/libs/{ => other}/rubberband/recipe.toml (100%) rename recipes/wip/libs/{ => other}/rustls-openssl-compat/recipe.toml (100%) rename recipes/wip/libs/{ => other}/scotch/recipe.toml (100%) rename recipes/wip/libs/{ => other}/sdl-pango/recipe.toml (100%) rename recipes/wip/libs/{ => other}/sdl2-net/recipe.toml (100%) rename recipes/wip/libs/{ => other}/sdl2-pango/recipe.toml (100%) rename recipes/wip/libs/{ => other}/simdjson/recipe.toml (100%) rename recipes/wip/libs/{ => other}/snappy/recipe.toml (100%) rename recipes/wip/libs/{ => other}/sord/recipe.toml (100%) rename recipes/wip/libs/{ => other}/sratom/recipe.toml (100%) rename recipes/wip/libs/{ => other}/startup-notification/recipe.toml (100%) rename recipes/wip/libs/{ => other}/suil/recipe.toml (100%) rename recipes/wip/libs/{ => other}/t4kcommon/recipe.toml (100%) rename recipes/wip/libs/{ => other}/taglib/recipe.toml (100%) rename recipes/wip/libs/{ => other}/termcap/recipe.toml (100%) rename recipes/wip/libs/{ => other}/totem-pl-parser/recipe.toml (100%) rename recipes/wip/libs/{ => other}/twolame/recipe.toml (100%) rename recipes/wip/libs/{ => other}/vamp-plugin-sdk/recipe.toml (100%) rename recipes/wip/libs/{ => other}/volk/recipe.toml (100%) rename recipes/wip/libs/{ => other}/webkit/recipe.toml (100%) rename recipes/wip/libs/{ => other}/webkitgtk3/recipe.toml (100%) rename recipes/wip/libs/{ => other}/webkitgtk4/recipe.toml (100%) rename recipes/wip/libs/{ => other}/wolfssl5/recipe.toml (100%) rename recipes/wip/libs/{ => other}/wxpython/recipe.toml (100%) rename recipes/wip/libs/{ => other}/wxwidgets-gtk3/recipe.toml (100%) rename recipes/wip/libs/{ => other}/x11proto/recipe.toml (100%) rename recipes/wip/libs/{ => other}/xcb-util/recipe.toml (100%) rename recipes/wip/libs/{ => other}/xxhash/recipe.toml (100%) rename recipes/wip/libs/{ => other}/zlib-ng/recipe.toml (100%) diff --git a/recipes/wip/libs/mpg123/recipe.toml b/recipes/wip/libs/audio/mpg123/recipe.toml similarity index 100% rename from recipes/wip/libs/mpg123/recipe.toml rename to recipes/wip/libs/audio/mpg123/recipe.toml diff --git a/recipes/wip/libs/openal/recipe.toml b/recipes/wip/libs/audio/openal/recipe.toml similarity index 100% rename from recipes/wip/libs/openal/recipe.toml rename to recipes/wip/libs/audio/openal/recipe.toml diff --git a/recipes/wip/libs/opusfile/recipe.toml b/recipes/wip/libs/audio/opusfile/recipe.toml similarity index 100% rename from recipes/wip/libs/opusfile/recipe.toml rename to recipes/wip/libs/audio/opusfile/recipe.toml diff --git a/recipes/wip/libs/soundtouch/recipe.toml b/recipes/wip/libs/audio/soundtouch/recipe.toml similarity index 100% rename from recipes/wip/libs/soundtouch/recipe.toml rename to recipes/wip/libs/audio/soundtouch/recipe.toml diff --git a/recipes/wip/libs/speex/recipe.toml b/recipes/wip/libs/audio/speex/recipe.toml similarity index 100% rename from recipes/wip/libs/speex/recipe.toml rename to recipes/wip/libs/audio/speex/recipe.toml diff --git a/recipes/wip/libs/speexdsp/recipe.toml b/recipes/wip/libs/audio/speexdsp/recipe.toml similarity index 100% rename from recipes/wip/libs/speexdsp/recipe.toml rename to recipes/wip/libs/audio/speexdsp/recipe.toml diff --git a/recipes/wip/libs/zmusic/recipe.toml b/recipes/wip/libs/audio/zmusic/recipe.toml similarity index 100% rename from recipes/wip/libs/zmusic/recipe.toml rename to recipes/wip/libs/audio/zmusic/recipe.toml diff --git a/recipes/wip/libs/gtk-engines/recipe.toml b/recipes/wip/libs/gui/gtk/gtk-engines/recipe.toml similarity index 100% rename from recipes/wip/libs/gtk-engines/recipe.toml rename to recipes/wip/libs/gui/gtk/gtk-engines/recipe.toml diff --git a/recipes/wip/libs/gtk2/recipe.toml b/recipes/wip/libs/gui/gtk/gtk2/recipe.toml similarity index 100% rename from recipes/wip/libs/gtk2/recipe.toml rename to recipes/wip/libs/gui/gtk/gtk2/recipe.toml diff --git a/recipes/wip/libs/gtk2mm/recipe.toml b/recipes/wip/libs/gui/gtk/gtk2mm/recipe.toml similarity index 100% rename from recipes/wip/libs/gtk2mm/recipe.toml rename to recipes/wip/libs/gui/gtk/gtk2mm/recipe.toml diff --git a/recipes/wip/libs/gtk3/recipe.toml b/recipes/wip/libs/gui/gtk/gtk3/recipe.toml similarity index 100% rename from recipes/wip/libs/gtk3/recipe.toml rename to recipes/wip/libs/gui/gtk/gtk3/recipe.toml diff --git a/recipes/wip/libs/gtk3mm/recipe.toml b/recipes/wip/libs/gui/gtk/gtk3mm/recipe.toml similarity index 100% rename from recipes/wip/libs/gtk3mm/recipe.toml rename to recipes/wip/libs/gui/gtk/gtk3mm/recipe.toml diff --git a/recipes/wip/libs/gtk4/recipe.toml b/recipes/wip/libs/gui/gtk/gtk4/recipe.toml similarity index 100% rename from recipes/wip/libs/gtk4/recipe.toml rename to recipes/wip/libs/gui/gtk/gtk4/recipe.toml diff --git a/recipes/wip/libs/gtk4mm/recipe.toml b/recipes/wip/libs/gui/gtk/gtk4mm/recipe.toml similarity index 100% rename from recipes/wip/libs/gtk4mm/recipe.toml rename to recipes/wip/libs/gui/gtk/gtk4mm/recipe.toml diff --git a/recipes/wip/libs/gtkglext/recipe.toml b/recipes/wip/libs/gui/gtk/gtkglext/recipe.toml similarity index 100% rename from recipes/wip/libs/gtkglext/recipe.toml rename to recipes/wip/libs/gui/gtk/gtkglext/recipe.toml diff --git a/recipes/wip/libs/gtksourceview/recipe.toml b/recipes/wip/libs/gui/gtk/gtksourceview/recipe.toml similarity index 100% rename from recipes/wip/libs/gtksourceview/recipe.toml rename to recipes/wip/libs/gui/gtk/gtksourceview/recipe.toml diff --git a/recipes/wip/libs/atkmm/recipe.toml b/recipes/wip/libs/other/atkmm/recipe.toml similarity index 100% rename from recipes/wip/libs/atkmm/recipe.toml rename to recipes/wip/libs/other/atkmm/recipe.toml diff --git a/recipes/wip/libs/babl/recipe.toml b/recipes/wip/libs/other/babl/recipe.toml similarity index 100% rename from recipes/wip/libs/babl/recipe.toml rename to recipes/wip/libs/other/babl/recipe.toml diff --git a/recipes/wip/libs/boost/recipe.toml b/recipes/wip/libs/other/boost/recipe.toml similarity index 100% rename from recipes/wip/libs/boost/recipe.toml rename to recipes/wip/libs/other/boost/recipe.toml diff --git a/recipes/wip/libs/bullet-physics/recipe.toml b/recipes/wip/libs/other/bullet-physics/recipe.toml similarity index 100% rename from recipes/wip/libs/bullet-physics/recipe.toml rename to recipes/wip/libs/other/bullet-physics/recipe.toml diff --git a/recipes/wip/libs/cairomm-1.0+/recipe.toml b/recipes/wip/libs/other/cairomm-1.0+/recipe.toml similarity index 100% rename from recipes/wip/libs/cairomm-1.0+/recipe.toml rename to recipes/wip/libs/other/cairomm-1.0+/recipe.toml diff --git a/recipes/wip/libs/cairomm-1.16+/recipe.toml b/recipes/wip/libs/other/cairomm-1.16+/recipe.toml similarity index 100% rename from recipes/wip/libs/cairomm-1.16+/recipe.toml rename to recipes/wip/libs/other/cairomm-1.16+/recipe.toml diff --git a/recipes/wip/libs/dcmtk/recipe.toml b/recipes/wip/libs/other/dcmtk/recipe.toml similarity index 100% rename from recipes/wip/libs/dcmtk/recipe.toml rename to recipes/wip/libs/other/dcmtk/recipe.toml diff --git a/recipes/wip/libs/dspy/recipe.toml b/recipes/wip/libs/other/dspy/recipe.toml similarity index 100% rename from recipes/wip/libs/dspy/recipe.toml rename to recipes/wip/libs/other/dspy/recipe.toml diff --git a/recipes/wip/libs/fftw/recipe.toml b/recipes/wip/libs/other/fftw/recipe.toml similarity index 100% rename from recipes/wip/libs/fftw/recipe.toml rename to recipes/wip/libs/other/fftw/recipe.toml diff --git a/recipes/wip/libs/fltk/recipe.toml b/recipes/wip/libs/other/fltk/recipe.toml similarity index 100% rename from recipes/wip/libs/fltk/recipe.toml rename to recipes/wip/libs/other/fltk/recipe.toml diff --git a/recipes/wip/libs/freealut/recipe.toml b/recipes/wip/libs/other/freealut/recipe.toml similarity index 100% rename from recipes/wip/libs/freealut/recipe.toml rename to recipes/wip/libs/other/freealut/recipe.toml diff --git a/recipes/wip/libs/freeglut/recipe.toml b/recipes/wip/libs/other/freeglut/recipe.toml similarity index 100% rename from recipes/wip/libs/freeglut/recipe.toml rename to recipes/wip/libs/other/freeglut/recipe.toml diff --git a/recipes/wip/libs/gdbm/recipe.toml b/recipes/wip/libs/other/gdbm/recipe.toml similarity index 100% rename from recipes/wip/libs/gdbm/recipe.toml rename to recipes/wip/libs/other/gdbm/recipe.toml diff --git a/recipes/wip/libs/gdbm/redox.patch b/recipes/wip/libs/other/gdbm/redox.patch similarity index 100% rename from recipes/wip/libs/gdbm/redox.patch rename to recipes/wip/libs/other/gdbm/redox.patch diff --git a/recipes/wip/libs/gflags/recipe.toml b/recipes/wip/libs/other/gflags/recipe.toml similarity index 100% rename from recipes/wip/libs/gflags/recipe.toml rename to recipes/wip/libs/other/gflags/recipe.toml diff --git a/recipes/wip/libs/glew/recipe.toml b/recipes/wip/libs/other/glew/recipe.toml similarity index 100% rename from recipes/wip/libs/glew/recipe.toml rename to recipes/wip/libs/other/glew/recipe.toml diff --git a/recipes/wip/libs/glfw3/recipe.toml b/recipes/wip/libs/other/glfw3/recipe.toml similarity index 100% rename from recipes/wip/libs/glfw3/recipe.toml rename to recipes/wip/libs/other/glfw3/recipe.toml diff --git a/recipes/wip/libs/gnome2-common/recipe.toml b/recipes/wip/libs/other/gnome2-common/recipe.toml similarity index 100% rename from recipes/wip/libs/gnome2-common/recipe.toml rename to recipes/wip/libs/other/gnome2-common/recipe.toml diff --git a/recipes/wip/libs/gnome3-common/recipe.toml b/recipes/wip/libs/other/gnome3-common/recipe.toml similarity index 100% rename from recipes/wip/libs/gnome3-common/recipe.toml rename to recipes/wip/libs/other/gnome3-common/recipe.toml diff --git a/recipes/wip/libs/gnutls3/recipe.toml b/recipes/wip/libs/other/gnutls3/recipe.toml similarity index 100% rename from recipes/wip/libs/gnutls3/recipe.toml rename to recipes/wip/libs/other/gnutls3/recipe.toml diff --git a/recipes/wip/libs/gobject-introspection/recipe.toml b/recipes/wip/libs/other/gobject-introspection/recipe.toml similarity index 100% rename from recipes/wip/libs/gobject-introspection/recipe.toml rename to recipes/wip/libs/other/gobject-introspection/recipe.toml diff --git a/recipes/wip/libs/gpgme/recipe.toml b/recipes/wip/libs/other/gpgme/recipe.toml similarity index 100% rename from recipes/wip/libs/gpgme/recipe.toml rename to recipes/wip/libs/other/gpgme/recipe.toml diff --git a/recipes/wip/libs/hdf5/recipe.toml b/recipes/wip/libs/other/hdf5/recipe.toml similarity index 100% rename from recipes/wip/libs/hdf5/recipe.toml rename to recipes/wip/libs/other/hdf5/recipe.toml diff --git a/recipes/wip/libs/hwloc/recipe.toml b/recipes/wip/libs/other/hwloc/recipe.toml similarity index 100% rename from recipes/wip/libs/hwloc/recipe.toml rename to recipes/wip/libs/other/hwloc/recipe.toml diff --git a/recipes/wip/libs/imlib2/recipe.toml b/recipes/wip/libs/other/imlib2/recipe.toml similarity index 100% rename from recipes/wip/libs/imlib2/recipe.toml rename to recipes/wip/libs/other/imlib2/recipe.toml diff --git a/recipes/wip/libs/inih/recipe.toml b/recipes/wip/libs/other/inih/recipe.toml similarity index 100% rename from recipes/wip/libs/inih/recipe.toml rename to recipes/wip/libs/other/inih/recipe.toml diff --git a/recipes/wip/libs/iniparser/recipe.toml b/recipes/wip/libs/other/iniparser/recipe.toml similarity index 100% rename from recipes/wip/libs/iniparser/recipe.toml rename to recipes/wip/libs/other/iniparser/recipe.toml diff --git a/recipes/wip/libs/json-c/recipe.toml b/recipes/wip/libs/other/json-c/recipe.toml similarity index 100% rename from recipes/wip/libs/json-c/recipe.toml rename to recipes/wip/libs/other/json-c/recipe.toml diff --git a/recipes/wip/libs/json-glib/recipe.toml b/recipes/wip/libs/other/json-glib/recipe.toml similarity index 100% rename from recipes/wip/libs/json-glib/recipe.toml rename to recipes/wip/libs/other/json-glib/recipe.toml diff --git a/recipes/wip/libs/jsonrpc-glib/recipe.toml b/recipes/wip/libs/other/jsonrpc-glib/recipe.toml similarity index 100% rename from recipes/wip/libs/jsonrpc-glib/recipe.toml rename to recipes/wip/libs/other/jsonrpc-glib/recipe.toml diff --git a/recipes/wip/libs/kerberos5/recipe.toml b/recipes/wip/libs/other/kerberos5/recipe.toml similarity index 100% rename from recipes/wip/libs/kerberos5/recipe.toml rename to recipes/wip/libs/other/kerberos5/recipe.toml diff --git a/recipes/wip/libs/lame/recipe.toml b/recipes/wip/libs/other/lame/recipe.toml similarity index 100% rename from recipes/wip/libs/lame/recipe.toml rename to recipes/wip/libs/other/lame/recipe.toml diff --git a/recipes/wip/libs/lammps/recipe.toml b/recipes/wip/libs/other/lammps/recipe.toml similarity index 100% rename from recipes/wip/libs/lammps/recipe.toml rename to recipes/wip/libs/other/lammps/recipe.toml diff --git a/recipes/wip/libs/lib2geom/recipe.toml b/recipes/wip/libs/other/lib2geom/recipe.toml similarity index 100% rename from recipes/wip/libs/lib2geom/recipe.toml rename to recipes/wip/libs/other/lib2geom/recipe.toml diff --git a/recipes/wip/libs/liba52/recipe.toml b/recipes/wip/libs/other/liba52/recipe.toml similarity index 100% rename from recipes/wip/libs/liba52/recipe.toml rename to recipes/wip/libs/other/liba52/recipe.toml diff --git a/recipes/wip/libs/libadwaita/recipe.toml b/recipes/wip/libs/other/libadwaita/recipe.toml similarity index 100% rename from recipes/wip/libs/libadwaita/recipe.toml rename to recipes/wip/libs/other/libadwaita/recipe.toml diff --git a/recipes/wip/libs/libaio/recipe.toml b/recipes/wip/libs/other/libaio/recipe.toml similarity index 100% rename from recipes/wip/libs/libaio/recipe.toml rename to recipes/wip/libs/other/libaio/recipe.toml diff --git a/recipes/wip/libs/libaom/recipe.toml b/recipes/wip/libs/other/libaom/recipe.toml similarity index 100% rename from recipes/wip/libs/libaom/recipe.toml rename to recipes/wip/libs/other/libaom/recipe.toml diff --git a/recipes/wip/libs/libargon2/recipe.toml b/recipes/wip/libs/other/libargon2/recipe.toml similarity index 100% rename from recipes/wip/libs/libargon2/recipe.toml rename to recipes/wip/libs/other/libargon2/recipe.toml diff --git a/recipes/wip/libs/libart/recipe.toml b/recipes/wip/libs/other/libart/recipe.toml similarity index 100% rename from recipes/wip/libs/libart/recipe.toml rename to recipes/wip/libs/other/libart/recipe.toml diff --git a/recipes/wip/libs/libaspell/recipe.toml b/recipes/wip/libs/other/libaspell/recipe.toml similarity index 100% rename from recipes/wip/libs/libaspell/recipe.toml rename to recipes/wip/libs/other/libaspell/recipe.toml diff --git a/recipes/wip/libs/libass/recipe.toml b/recipes/wip/libs/other/libass/recipe.toml similarity index 100% rename from recipes/wip/libs/libass/recipe.toml rename to recipes/wip/libs/other/libass/recipe.toml diff --git a/recipes/wip/libs/libatomic_ops/recipe.toml b/recipes/wip/libs/other/libatomic_ops/recipe.toml similarity index 100% rename from recipes/wip/libs/libatomic_ops/recipe.toml rename to recipes/wip/libs/other/libatomic_ops/recipe.toml diff --git a/recipes/wip/libs/libavif/recipe.toml b/recipes/wip/libs/other/libavif/recipe.toml similarity index 100% rename from recipes/wip/libs/libavif/recipe.toml rename to recipes/wip/libs/other/libavif/recipe.toml diff --git a/recipes/wip/libs/libbluray/recipe.toml b/recipes/wip/libs/other/libbluray/recipe.toml similarity index 100% rename from recipes/wip/libs/libbluray/recipe.toml rename to recipes/wip/libs/other/libbluray/recipe.toml diff --git a/recipes/wip/libs/libbotan/recipe.toml b/recipes/wip/libs/other/libbotan/recipe.toml similarity index 100% rename from recipes/wip/libs/libbotan/recipe.toml rename to recipes/wip/libs/other/libbotan/recipe.toml diff --git a/recipes/wip/libs/libbrotli/recipe.toml b/recipes/wip/libs/other/libbrotli/recipe.toml similarity index 100% rename from recipes/wip/libs/libbrotli/recipe.toml rename to recipes/wip/libs/other/libbrotli/recipe.toml diff --git a/recipes/wip/libs/libbsd/recipe.toml b/recipes/wip/libs/other/libbsd/recipe.toml similarity index 100% rename from recipes/wip/libs/libbsd/recipe.toml rename to recipes/wip/libs/other/libbsd/recipe.toml diff --git a/recipes/wip/libs/libburn/recipe.toml b/recipes/wip/libs/other/libburn/recipe.toml similarity index 100% rename from recipes/wip/libs/libburn/recipe.toml rename to recipes/wip/libs/other/libburn/recipe.toml diff --git a/recipes/wip/libs/libcaca/recipe.toml b/recipes/wip/libs/other/libcaca/recipe.toml similarity index 100% rename from recipes/wip/libs/libcaca/recipe.toml rename to recipes/wip/libs/other/libcaca/recipe.toml diff --git a/recipes/wip/libs/libcamera/recipe.toml b/recipes/wip/libs/other/libcamera/recipe.toml similarity index 100% rename from recipes/wip/libs/libcamera/recipe.toml rename to recipes/wip/libs/other/libcamera/recipe.toml diff --git a/recipes/wip/libs/libcap/recipe.toml b/recipes/wip/libs/other/libcap/recipe.toml similarity index 100% rename from recipes/wip/libs/libcap/recipe.toml rename to recipes/wip/libs/other/libcap/recipe.toml diff --git a/recipes/wip/libs/libcdio-paranoia/recipe.toml b/recipes/wip/libs/other/libcdio-paranoia/recipe.toml similarity index 100% rename from recipes/wip/libs/libcdio-paranoia/recipe.toml rename to recipes/wip/libs/other/libcdio-paranoia/recipe.toml diff --git a/recipes/wip/libs/libcdio/recipe.toml b/recipes/wip/libs/other/libcdio/recipe.toml similarity index 100% rename from recipes/wip/libs/libcdio/recipe.toml rename to recipes/wip/libs/other/libcdio/recipe.toml diff --git a/recipes/wip/libs/libcdr/recipe.toml b/recipes/wip/libs/other/libcdr/recipe.toml similarity index 100% rename from recipes/wip/libs/libcdr/recipe.toml rename to recipes/wip/libs/other/libcdr/recipe.toml diff --git a/recipes/wip/libs/libcpuid/recipe.toml b/recipes/wip/libs/other/libcpuid/recipe.toml similarity index 100% rename from recipes/wip/libs/libcpuid/recipe.toml rename to recipes/wip/libs/other/libcpuid/recipe.toml diff --git a/recipes/wip/libs/libcups/recipe.toml b/recipes/wip/libs/other/libcups/recipe.toml similarity index 100% rename from recipes/wip/libs/libcups/recipe.toml rename to recipes/wip/libs/other/libcups/recipe.toml diff --git a/recipes/wip/libs/libde265/recipe.toml b/recipes/wip/libs/other/libde265/recipe.toml similarity index 100% rename from recipes/wip/libs/libde265/recipe.toml rename to recipes/wip/libs/other/libde265/recipe.toml diff --git a/recipes/wip/libs/libdecor/recipe.toml b/recipes/wip/libs/other/libdecor/recipe.toml similarity index 100% rename from recipes/wip/libs/libdecor/recipe.toml rename to recipes/wip/libs/other/libdecor/recipe.toml diff --git a/recipes/wip/libs/libdeflate/recipe.toml b/recipes/wip/libs/other/libdeflate/recipe.toml similarity index 100% rename from recipes/wip/libs/libdeflate/recipe.toml rename to recipes/wip/libs/other/libdeflate/recipe.toml diff --git a/recipes/wip/libs/libdex/recipe.toml b/recipes/wip/libs/other/libdex/recipe.toml similarity index 100% rename from recipes/wip/libs/libdex/recipe.toml rename to recipes/wip/libs/other/libdex/recipe.toml diff --git a/recipes/wip/libs/libdmx/recipe.toml b/recipes/wip/libs/other/libdmx/recipe.toml similarity index 100% rename from recipes/wip/libs/libdmx/recipe.toml rename to recipes/wip/libs/other/libdmx/recipe.toml diff --git a/recipes/wip/libs/libdotconf/recipe.toml b/recipes/wip/libs/other/libdotconf/recipe.toml similarity index 100% rename from recipes/wip/libs/libdotconf/recipe.toml rename to recipes/wip/libs/other/libdotconf/recipe.toml diff --git a/recipes/wip/libs/libdouble-conversion/recipe.toml b/recipes/wip/libs/other/libdouble-conversion/recipe.toml similarity index 100% rename from recipes/wip/libs/libdouble-conversion/recipe.toml rename to recipes/wip/libs/other/libdouble-conversion/recipe.toml diff --git a/recipes/wip/libs/libdvbpsi/recipe.toml b/recipes/wip/libs/other/libdvbpsi/recipe.toml similarity index 100% rename from recipes/wip/libs/libdvbpsi/recipe.toml rename to recipes/wip/libs/other/libdvbpsi/recipe.toml diff --git a/recipes/wip/libs/libdvdcss/recipe.toml b/recipes/wip/libs/other/libdvdcss/recipe.toml similarity index 100% rename from recipes/wip/libs/libdvdcss/recipe.toml rename to recipes/wip/libs/other/libdvdcss/recipe.toml diff --git a/recipes/wip/libs/libdvdnav/recipe.toml b/recipes/wip/libs/other/libdvdnav/recipe.toml similarity index 100% rename from recipes/wip/libs/libdvdnav/recipe.toml rename to recipes/wip/libs/other/libdvdnav/recipe.toml diff --git a/recipes/wip/libs/libdvdread/recipe.toml b/recipes/wip/libs/other/libdvdread/recipe.toml similarity index 100% rename from recipes/wip/libs/libdvdread/recipe.toml rename to recipes/wip/libs/other/libdvdread/recipe.toml diff --git a/recipes/wip/libs/libebml/recipe.toml b/recipes/wip/libs/other/libebml/recipe.toml similarity index 100% rename from recipes/wip/libs/libebml/recipe.toml rename to recipes/wip/libs/other/libebml/recipe.toml diff --git a/recipes/wip/libs/libedit/recipe.toml b/recipes/wip/libs/other/libedit/recipe.toml similarity index 100% rename from recipes/wip/libs/libedit/recipe.toml rename to recipes/wip/libs/other/libedit/recipe.toml diff --git a/recipes/wip/libs/libeditline/recipe.toml b/recipes/wip/libs/other/libeditline/recipe.toml similarity index 100% rename from recipes/wip/libs/libeditline/recipe.toml rename to recipes/wip/libs/other/libeditline/recipe.toml diff --git a/recipes/wip/libs/libeigen/recipe.toml b/recipes/wip/libs/other/libeigen/recipe.toml similarity index 100% rename from recipes/wip/libs/libeigen/recipe.toml rename to recipes/wip/libs/other/libeigen/recipe.toml diff --git a/recipes/wip/libs/libenet/recipe.toml b/recipes/wip/libs/other/libenet/recipe.toml similarity index 100% rename from recipes/wip/libs/libenet/recipe.toml rename to recipes/wip/libs/other/libenet/recipe.toml diff --git a/recipes/wip/libs/libepoxy/recipe.toml b/recipes/wip/libs/other/libepoxy/recipe.toml similarity index 100% rename from recipes/wip/libs/libepoxy/recipe.toml rename to recipes/wip/libs/other/libepoxy/recipe.toml diff --git a/recipes/wip/libs/liberty-eiffel/recipe.toml b/recipes/wip/libs/other/liberty-eiffel/recipe.toml similarity index 100% rename from recipes/wip/libs/liberty-eiffel/recipe.toml rename to recipes/wip/libs/other/liberty-eiffel/recipe.toml diff --git a/recipes/wip/libs/libevdev/recipe.toml b/recipes/wip/libs/other/libevdev/recipe.toml similarity index 100% rename from recipes/wip/libs/libevdev/recipe.toml rename to recipes/wip/libs/other/libevdev/recipe.toml diff --git a/recipes/wip/libs/libevent/recipe.toml b/recipes/wip/libs/other/libevent/recipe.toml similarity index 100% rename from recipes/wip/libs/libevent/recipe.toml rename to recipes/wip/libs/other/libevent/recipe.toml diff --git a/recipes/wip/libs/libfmt/recipe.toml b/recipes/wip/libs/other/libfmt/recipe.toml similarity index 100% rename from recipes/wip/libs/libfmt/recipe.toml rename to recipes/wip/libs/other/libfmt/recipe.toml diff --git a/recipes/wip/libs/libfontenc/recipe.toml b/recipes/wip/libs/other/libfontenc/recipe.toml similarity index 100% rename from recipes/wip/libs/libfontenc/recipe.toml rename to recipes/wip/libs/other/libfontenc/recipe.toml diff --git a/recipes/wip/libs/libfs/recipe.toml b/recipes/wip/libs/other/libfs/recipe.toml similarity index 100% rename from recipes/wip/libs/libfs/recipe.toml rename to recipes/wip/libs/other/libfs/recipe.toml diff --git a/recipes/wip/libs/libfuse2/recipe.toml b/recipes/wip/libs/other/libfuse2/recipe.toml similarity index 100% rename from recipes/wip/libs/libfuse2/recipe.toml rename to recipes/wip/libs/other/libfuse2/recipe.toml diff --git a/recipes/wip/libs/libfuse3/recipe.toml b/recipes/wip/libs/other/libfuse3/recipe.toml similarity index 100% rename from recipes/wip/libs/libfuse3/recipe.toml rename to recipes/wip/libs/other/libfuse3/recipe.toml diff --git a/recipes/wip/libs/libgav1/recipe.toml b/recipes/wip/libs/other/libgav1/recipe.toml similarity index 100% rename from recipes/wip/libs/libgav1/recipe.toml rename to recipes/wip/libs/other/libgav1/recipe.toml diff --git a/recipes/wip/libs/libgc/recipe.toml b/recipes/wip/libs/other/libgc/recipe.toml similarity index 100% rename from recipes/wip/libs/libgc/recipe.toml rename to recipes/wip/libs/other/libgc/recipe.toml diff --git a/recipes/wip/libs/libgcrypt/recipe.toml b/recipes/wip/libs/other/libgcrypt/recipe.toml similarity index 100% rename from recipes/wip/libs/libgcrypt/recipe.toml rename to recipes/wip/libs/other/libgcrypt/recipe.toml diff --git a/recipes/wip/libs/libgdal/recipe.toml b/recipes/wip/libs/other/libgdal/recipe.toml similarity index 100% rename from recipes/wip/libs/libgdal/recipe.toml rename to recipes/wip/libs/other/libgdal/recipe.toml diff --git a/recipes/wip/libs/libgif/recipe.toml b/recipes/wip/libs/other/libgif/recipe.toml similarity index 100% rename from recipes/wip/libs/libgif/recipe.toml rename to recipes/wip/libs/other/libgif/recipe.toml diff --git a/recipes/wip/libs/libgit2/recipe.toml b/recipes/wip/libs/other/libgit2/recipe.toml similarity index 100% rename from recipes/wip/libs/libgit2/recipe.toml rename to recipes/wip/libs/other/libgit2/recipe.toml diff --git a/recipes/wip/libs/libglm/recipe.toml b/recipes/wip/libs/other/libglm/recipe.toml similarity index 100% rename from recipes/wip/libs/libglm/recipe.toml rename to recipes/wip/libs/other/libglm/recipe.toml diff --git a/recipes/wip/libs/libgloox/recipe.toml b/recipes/wip/libs/other/libgloox/recipe.toml similarity index 100% rename from recipes/wip/libs/libgloox/recipe.toml rename to recipes/wip/libs/other/libgloox/recipe.toml diff --git a/recipes/wip/libs/libgpg-error/recipe.toml b/recipes/wip/libs/other/libgpg-error/recipe.toml similarity index 100% rename from recipes/wip/libs/libgpg-error/recipe.toml rename to recipes/wip/libs/other/libgpg-error/recipe.toml diff --git a/recipes/wip/libs/libgphoto2/recipe.toml b/recipes/wip/libs/other/libgphoto2/recipe.toml similarity index 100% rename from recipes/wip/libs/libgphoto2/recipe.toml rename to recipes/wip/libs/other/libgphoto2/recipe.toml diff --git a/recipes/wip/libs/libgpm/recipe.toml b/recipes/wip/libs/other/libgpm/recipe.toml similarity index 100% rename from recipes/wip/libs/libgpm/recipe.toml rename to recipes/wip/libs/other/libgpm/recipe.toml diff --git a/recipes/wip/libs/libgrantlee/recipe.toml b/recipes/wip/libs/other/libgrantlee/recipe.toml similarity index 100% rename from recipes/wip/libs/libgrantlee/recipe.toml rename to recipes/wip/libs/other/libgrantlee/recipe.toml diff --git a/recipes/wip/libs/libgsl/recipe.toml b/recipes/wip/libs/other/libgsl/recipe.toml similarity index 100% rename from recipes/wip/libs/libgsl/recipe.toml rename to recipes/wip/libs/other/libgsl/recipe.toml diff --git a/recipes/wip/libs/libgspell-gtk3/recipe.toml b/recipes/wip/libs/other/libgspell-gtk3/recipe.toml similarity index 100% rename from recipes/wip/libs/libgspell-gtk3/recipe.toml rename to recipes/wip/libs/other/libgspell-gtk3/recipe.toml diff --git a/recipes/wip/libs/libgspell-gtk4/recipe.toml b/recipes/wip/libs/other/libgspell-gtk4/recipe.toml similarity index 100% rename from recipes/wip/libs/libgspell-gtk4/recipe.toml rename to recipes/wip/libs/other/libgspell-gtk4/recipe.toml diff --git a/recipes/wip/libs/libharu/recipe.toml b/recipes/wip/libs/other/libharu/recipe.toml similarity index 100% rename from recipes/wip/libs/libharu/recipe.toml rename to recipes/wip/libs/other/libharu/recipe.toml diff --git a/recipes/wip/libs/libheif/recipe.toml b/recipes/wip/libs/other/libheif/recipe.toml similarity index 100% rename from recipes/wip/libs/libheif/recipe.toml rename to recipes/wip/libs/other/libheif/recipe.toml diff --git a/recipes/wip/libs/libhidapi/recipe.toml b/recipes/wip/libs/other/libhidapi/recipe.toml similarity index 100% rename from recipes/wip/libs/libhidapi/recipe.toml rename to recipes/wip/libs/other/libhidapi/recipe.toml diff --git a/recipes/wip/libs/libhyphen/recipe.toml b/recipes/wip/libs/other/libhyphen/recipe.toml similarity index 100% rename from recipes/wip/libs/libhyphen/recipe.toml rename to recipes/wip/libs/other/libhyphen/recipe.toml diff --git a/recipes/wip/libs/libice/recipe.toml b/recipes/wip/libs/other/libice/recipe.toml similarity index 100% rename from recipes/wip/libs/libice/recipe.toml rename to recipes/wip/libs/other/libice/recipe.toml diff --git a/recipes/wip/libs/libicu/recipe.toml b/recipes/wip/libs/other/libicu/recipe.toml similarity index 100% rename from recipes/wip/libs/libicu/recipe.toml rename to recipes/wip/libs/other/libicu/recipe.toml diff --git a/recipes/wip/libs/libimath/recipe.toml b/recipes/wip/libs/other/libimath/recipe.toml similarity index 100% rename from recipes/wip/libs/libimath/recipe.toml rename to recipes/wip/libs/other/libimath/recipe.toml diff --git a/recipes/wip/libs/libimmer/recipe.toml b/recipes/wip/libs/other/libimmer/recipe.toml similarity index 100% rename from recipes/wip/libs/libimmer/recipe.toml rename to recipes/wip/libs/other/libimmer/recipe.toml diff --git a/recipes/wip/libs/libinput/recipe.toml b/recipes/wip/libs/other/libinput/recipe.toml similarity index 100% rename from recipes/wip/libs/libinput/recipe.toml rename to recipes/wip/libs/other/libinput/recipe.toml diff --git a/recipes/wip/libs/libisoburn/recipe.toml b/recipes/wip/libs/other/libisoburn/recipe.toml similarity index 100% rename from recipes/wip/libs/libisoburn/recipe.toml rename to recipes/wip/libs/other/libisoburn/recipe.toml diff --git a/recipes/wip/libs/libisofs/recipe.toml b/recipes/wip/libs/other/libisofs/recipe.toml similarity index 100% rename from recipes/wip/libs/libisofs/recipe.toml rename to recipes/wip/libs/other/libisofs/recipe.toml diff --git a/recipes/wip/libs/libjasper/recipe.toml b/recipes/wip/libs/other/libjasper/recipe.toml similarity index 100% rename from recipes/wip/libs/libjasper/recipe.toml rename to recipes/wip/libs/other/libjasper/recipe.toml diff --git a/recipes/wip/libs/libjpeg-turbo/recipe.toml b/recipes/wip/libs/other/libjpeg-turbo/recipe.toml similarity index 100% rename from recipes/wip/libs/libjpeg-turbo/recipe.toml rename to recipes/wip/libs/other/libjpeg-turbo/recipe.toml diff --git a/recipes/wip/libs/libjxl/recipe.toml b/recipes/wip/libs/other/libjxl/recipe.toml similarity index 100% rename from recipes/wip/libs/libjxl/recipe.toml rename to recipes/wip/libs/other/libjxl/recipe.toml diff --git a/recipes/wip/libs/libkdcraw/recipe.toml b/recipes/wip/libs/other/libkdcraw/recipe.toml similarity index 100% rename from recipes/wip/libs/libkdcraw/recipe.toml rename to recipes/wip/libs/other/libkdcraw/recipe.toml diff --git a/recipes/wip/libs/libkomparediff2/recipe.toml b/recipes/wip/libs/other/libkomparediff2/recipe.toml similarity index 100% rename from recipes/wip/libs/libkomparediff2/recipe.toml rename to recipes/wip/libs/other/libkomparediff2/recipe.toml diff --git a/recipes/wip/libs/liblager/recipe.toml b/recipes/wip/libs/other/liblager/recipe.toml similarity index 100% rename from recipes/wip/libs/liblager/recipe.toml rename to recipes/wip/libs/other/liblager/recipe.toml diff --git a/recipes/wip/libs/liblapack/recipe.toml b/recipes/wip/libs/other/liblapack/recipe.toml similarity index 100% rename from recipes/wip/libs/liblapack/recipe.toml rename to recipes/wip/libs/other/liblapack/recipe.toml diff --git a/recipes/wip/libs/liblcms/recipe.toml b/recipes/wip/libs/other/liblcms/recipe.toml similarity index 100% rename from recipes/wip/libs/liblcms/recipe.toml rename to recipes/wip/libs/other/liblcms/recipe.toml diff --git a/recipes/wip/libs/liblensfun/recipe.toml b/recipes/wip/libs/other/liblensfun/recipe.toml similarity index 100% rename from recipes/wip/libs/liblensfun/recipe.toml rename to recipes/wip/libs/other/liblensfun/recipe.toml diff --git a/recipes/wip/libs/liblo/recipe.toml b/recipes/wip/libs/other/liblo/recipe.toml similarity index 100% rename from recipes/wip/libs/liblo/recipe.toml rename to recipes/wip/libs/other/liblo/recipe.toml diff --git a/recipes/wip/libs/libm17n/recipe.toml b/recipes/wip/libs/other/libm17n/recipe.toml similarity index 100% rename from recipes/wip/libs/libm17n/recipe.toml rename to recipes/wip/libs/other/libm17n/recipe.toml diff --git a/recipes/wip/libs/libmad/recipe.toml b/recipes/wip/libs/other/libmad/recipe.toml similarity index 100% rename from recipes/wip/libs/libmad/recipe.toml rename to recipes/wip/libs/other/libmad/recipe.toml diff --git a/recipes/wip/libs/libmatroska/recipe.toml b/recipes/wip/libs/other/libmatroska/recipe.toml similarity index 100% rename from recipes/wip/libs/libmatroska/recipe.toml rename to recipes/wip/libs/other/libmatroska/recipe.toml diff --git a/recipes/wip/libs/libmd/recipe.toml b/recipes/wip/libs/other/libmd/recipe.toml similarity index 100% rename from recipes/wip/libs/libmd/recipe.toml rename to recipes/wip/libs/other/libmd/recipe.toml diff --git a/recipes/wip/libs/libmpeg2/recipe.toml b/recipes/wip/libs/other/libmpeg2/recipe.toml similarity index 100% rename from recipes/wip/libs/libmpeg2/recipe.toml rename to recipes/wip/libs/other/libmpeg2/recipe.toml diff --git a/recipes/wip/libs/libmypaint/recipe.toml b/recipes/wip/libs/other/libmypaint/recipe.toml similarity index 100% rename from recipes/wip/libs/libmypaint/recipe.toml rename to recipes/wip/libs/other/libmypaint/recipe.toml diff --git a/recipes/wip/libs/libnlopt/recipe.toml b/recipes/wip/libs/other/libnlopt/recipe.toml similarity index 100% rename from recipes/wip/libs/libnlopt/recipe.toml rename to recipes/wip/libs/other/libnlopt/recipe.toml diff --git a/recipes/wip/libs/libnotify/recipe.toml b/recipes/wip/libs/other/libnotify/recipe.toml similarity index 100% rename from recipes/wip/libs/libnotify/recipe.toml rename to recipes/wip/libs/other/libnotify/recipe.toml diff --git a/recipes/wip/libs/libnsl/recipe.toml b/recipes/wip/libs/other/libnsl/recipe.toml similarity index 100% rename from recipes/wip/libs/libnsl/recipe.toml rename to recipes/wip/libs/other/libnsl/recipe.toml diff --git a/recipes/wip/libs/libopus/recipe.toml b/recipes/wip/libs/other/libopus/recipe.toml similarity index 100% rename from recipes/wip/libs/libopus/recipe.toml rename to recipes/wip/libs/other/libopus/recipe.toml diff --git a/recipes/wip/libs/libotf/recipe.toml b/recipes/wip/libs/other/libotf/recipe.toml similarity index 100% rename from recipes/wip/libs/libotf/recipe.toml rename to recipes/wip/libs/other/libotf/recipe.toml diff --git a/recipes/wip/libs/libpanel/recipe.toml b/recipes/wip/libs/other/libpanel/recipe.toml similarity index 100% rename from recipes/wip/libs/libpanel/recipe.toml rename to recipes/wip/libs/other/libpanel/recipe.toml diff --git a/recipes/wip/libs/libpcap/recipe.toml b/recipes/wip/libs/other/libpcap/recipe.toml similarity index 100% rename from recipes/wip/libs/libpcap/recipe.toml rename to recipes/wip/libs/other/libpcap/recipe.toml diff --git a/recipes/wip/libs/libpcsclite/recipe.toml b/recipes/wip/libs/other/libpcsclite/recipe.toml similarity index 100% rename from recipes/wip/libs/libpcsclite/recipe.toml rename to recipes/wip/libs/other/libpcsclite/recipe.toml diff --git a/recipes/wip/libs/libpeas/recipe.toml b/recipes/wip/libs/other/libpeas/recipe.toml similarity index 100% rename from recipes/wip/libs/libpeas/recipe.toml rename to recipes/wip/libs/other/libpeas/recipe.toml diff --git a/recipes/wip/libs/libpoppler/recipe.toml b/recipes/wip/libs/other/libpoppler/recipe.toml similarity index 100% rename from recipes/wip/libs/libpoppler/recipe.toml rename to recipes/wip/libs/other/libpoppler/recipe.toml diff --git a/recipes/wip/libs/libportaudio/recipe.toml b/recipes/wip/libs/other/libportaudio/recipe.toml similarity index 100% rename from recipes/wip/libs/libportaudio/recipe.toml rename to recipes/wip/libs/other/libportaudio/recipe.toml diff --git a/recipes/wip/libs/libpthread-stubs/recipe.toml b/recipes/wip/libs/other/libpthread-stubs/recipe.toml similarity index 100% rename from recipes/wip/libs/libpthread-stubs/recipe.toml rename to recipes/wip/libs/other/libpthread-stubs/recipe.toml diff --git a/recipes/wip/libs/libpugixml/recipe.toml b/recipes/wip/libs/other/libpugixml/recipe.toml similarity index 100% rename from recipes/wip/libs/libpugixml/recipe.toml rename to recipes/wip/libs/other/libpugixml/recipe.toml diff --git a/recipes/wip/libs/libqalculate/recipe.toml b/recipes/wip/libs/other/libqalculate/recipe.toml similarity index 100% rename from recipes/wip/libs/libqalculate/recipe.toml rename to recipes/wip/libs/other/libqalculate/recipe.toml diff --git a/recipes/wip/libs/libqrcodegenc/recipe.toml b/recipes/wip/libs/other/libqrcodegenc/recipe.toml similarity index 100% rename from recipes/wip/libs/libqrcodegenc/recipe.toml rename to recipes/wip/libs/other/libqrcodegenc/recipe.toml diff --git a/recipes/wip/libs/libraptor2/recipe.toml b/recipes/wip/libs/other/libraptor2/recipe.toml similarity index 100% rename from recipes/wip/libs/libraptor2/recipe.toml rename to recipes/wip/libs/other/libraptor2/recipe.toml diff --git a/recipes/wip/libs/librasqal/recipe.toml b/recipes/wip/libs/other/librasqal/recipe.toml similarity index 100% rename from recipes/wip/libs/librasqal/recipe.toml rename to recipes/wip/libs/other/librasqal/recipe.toml diff --git a/recipes/wip/libs/libraw/recipe.toml b/recipes/wip/libs/other/libraw/recipe.toml similarity index 100% rename from recipes/wip/libs/libraw/recipe.toml rename to recipes/wip/libs/other/libraw/recipe.toml diff --git a/recipes/wip/libs/librdf/recipe.toml b/recipes/wip/libs/other/librdf/recipe.toml similarity index 100% rename from recipes/wip/libs/librdf/recipe.toml rename to recipes/wip/libs/other/librdf/recipe.toml diff --git a/recipes/wip/libs/librevenge/recipe.toml b/recipes/wip/libs/other/librevenge/recipe.toml similarity index 100% rename from recipes/wip/libs/librevenge/recipe.toml rename to recipes/wip/libs/other/librevenge/recipe.toml diff --git a/recipes/wip/libs/librist/recipe.toml b/recipes/wip/libs/other/librist/recipe.toml similarity index 100% rename from recipes/wip/libs/librist/recipe.toml rename to recipes/wip/libs/other/librist/recipe.toml diff --git a/recipes/wip/libs/librkcommon/recipe.toml b/recipes/wip/libs/other/librkcommon/recipe.toml similarity index 100% rename from recipes/wip/libs/librkcommon/recipe.toml rename to recipes/wip/libs/other/librkcommon/recipe.toml diff --git a/recipes/wip/libs/librsvg/recipe.toml b/recipes/wip/libs/other/librsvg/recipe.toml similarity index 100% rename from recipes/wip/libs/librsvg/recipe.toml rename to recipes/wip/libs/other/librsvg/recipe.toml diff --git a/recipes/wip/libs/libsamplerate/recipe.toml b/recipes/wip/libs/other/libsamplerate/recipe.toml similarity index 100% rename from recipes/wip/libs/libsamplerate/recipe.toml rename to recipes/wip/libs/other/libsamplerate/recipe.toml diff --git a/recipes/wip/libs/libseexpr-kde/recipe.toml b/recipes/wip/libs/other/libseexpr-kde/recipe.toml similarity index 100% rename from recipes/wip/libs/libseexpr-kde/recipe.toml rename to recipes/wip/libs/other/libseexpr-kde/recipe.toml diff --git a/recipes/wip/libs/libsigc++/recipe.toml b/recipes/wip/libs/other/libsigc++/recipe.toml similarity index 100% rename from recipes/wip/libs/libsigc++/recipe.toml rename to recipes/wip/libs/other/libsigc++/recipe.toml diff --git a/recipes/wip/libs/libsixel/recipe.toml b/recipes/wip/libs/other/libsixel/recipe.toml similarity index 100% rename from recipes/wip/libs/libsixel/recipe.toml rename to recipes/wip/libs/other/libsixel/recipe.toml diff --git a/recipes/wip/libs/libskia/recipe.toml b/recipes/wip/libs/other/libskia/recipe.toml similarity index 100% rename from recipes/wip/libs/libskia/recipe.toml rename to recipes/wip/libs/other/libskia/recipe.toml diff --git a/recipes/wip/libs/libslirp/recipe.toml b/recipes/wip/libs/other/libslirp/recipe.toml similarity index 100% rename from recipes/wip/libs/libslirp/recipe.toml rename to recipes/wip/libs/other/libslirp/recipe.toml diff --git a/recipes/wip/libs/libsm/recipe.toml b/recipes/wip/libs/other/libsm/recipe.toml similarity index 100% rename from recipes/wip/libs/libsm/recipe.toml rename to recipes/wip/libs/other/libsm/recipe.toml diff --git a/recipes/wip/libs/libsndfile/recipe.toml b/recipes/wip/libs/other/libsndfile/recipe.toml similarity index 100% rename from recipes/wip/libs/libsndfile/recipe.toml rename to recipes/wip/libs/other/libsndfile/recipe.toml diff --git a/recipes/wip/libs/libsoundio/recipe.toml b/recipes/wip/libs/other/libsoundio/recipe.toml similarity index 100% rename from recipes/wip/libs/libsoundio/recipe.toml rename to recipes/wip/libs/other/libsoundio/recipe.toml diff --git a/recipes/wip/libs/libsoup/recipe.toml b/recipes/wip/libs/other/libsoup/recipe.toml similarity index 100% rename from recipes/wip/libs/libsoup/recipe.toml rename to recipes/wip/libs/other/libsoup/recipe.toml diff --git a/recipes/wip/libs/libspiro/recipe.toml b/recipes/wip/libs/other/libspiro/recipe.toml similarity index 100% rename from recipes/wip/libs/libspiro/recipe.toml rename to recipes/wip/libs/other/libspiro/recipe.toml diff --git a/recipes/wip/libs/libsrt/recipe.toml b/recipes/wip/libs/other/libsrt/recipe.toml similarity index 100% rename from recipes/wip/libs/libsrt/recipe.toml rename to recipes/wip/libs/other/libsrt/recipe.toml diff --git a/recipes/wip/libs/libssh/recipe.toml b/recipes/wip/libs/other/libssh/recipe.toml similarity index 100% rename from recipes/wip/libs/libssh/recipe.toml rename to recipes/wip/libs/other/libssh/recipe.toml diff --git a/recipes/wip/libs/libstatgrab/recipe.toml b/recipes/wip/libs/other/libstatgrab/recipe.toml similarity index 100% rename from recipes/wip/libs/libstatgrab/recipe.toml rename to recipes/wip/libs/other/libstatgrab/recipe.toml diff --git a/recipes/wip/libs/libstk/recipe.toml b/recipes/wip/libs/other/libstk/recipe.toml similarity index 100% rename from recipes/wip/libs/libstk/recipe.toml rename to recipes/wip/libs/other/libstk/recipe.toml diff --git a/recipes/wip/libs/libtheora/recipe.toml b/recipes/wip/libs/other/libtheora/recipe.toml similarity index 100% rename from recipes/wip/libs/libtheora/recipe.toml rename to recipes/wip/libs/other/libtheora/recipe.toml diff --git a/recipes/wip/libs/libtickit/recipe.toml b/recipes/wip/libs/other/libtickit/recipe.toml similarity index 100% rename from recipes/wip/libs/libtickit/recipe.toml rename to recipes/wip/libs/other/libtickit/recipe.toml diff --git a/recipes/wip/libs/libtiff/recipe.toml b/recipes/wip/libs/other/libtiff/recipe.toml similarity index 100% rename from recipes/wip/libs/libtiff/recipe.toml rename to recipes/wip/libs/other/libtiff/recipe.toml diff --git a/recipes/wip/libs/libtool/recipe.toml b/recipes/wip/libs/other/libtool/recipe.toml similarity index 100% rename from recipes/wip/libs/libtool/recipe.toml rename to recipes/wip/libs/other/libtool/recipe.toml diff --git a/recipes/wip/libs/libunibreak/recipe.toml b/recipes/wip/libs/other/libunibreak/recipe.toml similarity index 100% rename from recipes/wip/libs/libunibreak/recipe.toml rename to recipes/wip/libs/other/libunibreak/recipe.toml diff --git a/recipes/wip/libs/libunistring/recipe.toml b/recipes/wip/libs/other/libunistring/recipe.toml similarity index 100% rename from recipes/wip/libs/libunistring/recipe.toml rename to recipes/wip/libs/other/libunistring/recipe.toml diff --git a/recipes/wip/libs/libunwind/recipe.toml b/recipes/wip/libs/other/libunwind/recipe.toml similarity index 100% rename from recipes/wip/libs/libunwind/recipe.toml rename to recipes/wip/libs/other/libunwind/recipe.toml diff --git a/recipes/wip/libs/liburcu/recipe.toml b/recipes/wip/libs/other/liburcu/recipe.toml similarity index 100% rename from recipes/wip/libs/liburcu/recipe.toml rename to recipes/wip/libs/other/liburcu/recipe.toml diff --git a/recipes/wip/libs/libusb/recipe.toml b/recipes/wip/libs/other/libusb/recipe.toml similarity index 100% rename from recipes/wip/libs/libusb/recipe.toml rename to recipes/wip/libs/other/libusb/recipe.toml diff --git a/recipes/wip/libs/libuuid-ossp/recipe.toml b/recipes/wip/libs/other/libuuid-ossp/recipe.toml similarity index 100% rename from recipes/wip/libs/libuuid-ossp/recipe.toml rename to recipes/wip/libs/other/libuuid-ossp/recipe.toml diff --git a/recipes/wip/libs/libuuid/recipe.toml b/recipes/wip/libs/other/libuuid/recipe.toml similarity index 100% rename from recipes/wip/libs/libuuid/recipe.toml rename to recipes/wip/libs/other/libuuid/recipe.toml diff --git a/recipes/wip/libs/libuuid/redox.patch b/recipes/wip/libs/other/libuuid/redox.patch similarity index 100% rename from recipes/wip/libs/libuuid/redox.patch rename to recipes/wip/libs/other/libuuid/redox.patch diff --git a/recipes/wip/libs/libuv/recipe.toml b/recipes/wip/libs/other/libuv/recipe.toml similarity index 100% rename from recipes/wip/libs/libuv/recipe.toml rename to recipes/wip/libs/other/libuv/recipe.toml diff --git a/recipes/wip/libs/libva/recipe.toml b/recipes/wip/libs/other/libva/recipe.toml similarity index 100% rename from recipes/wip/libs/libva/recipe.toml rename to recipes/wip/libs/other/libva/recipe.toml diff --git a/recipes/wip/libs/libvisio/recipe.toml b/recipes/wip/libs/other/libvisio/recipe.toml similarity index 100% rename from recipes/wip/libs/libvisio/recipe.toml rename to recipes/wip/libs/other/libvisio/recipe.toml diff --git a/recipes/wip/libs/libvncserver/recipe.toml b/recipes/wip/libs/other/libvncserver/recipe.toml similarity index 100% rename from recipes/wip/libs/libvncserver/recipe.toml rename to recipes/wip/libs/other/libvncserver/recipe.toml diff --git a/recipes/wip/libs/libvpx/recipe.toml b/recipes/wip/libs/other/libvpx/recipe.toml similarity index 100% rename from recipes/wip/libs/libvpx/recipe.toml rename to recipes/wip/libs/other/libvpx/recipe.toml diff --git a/recipes/wip/libs/libvte/recipe.toml b/recipes/wip/libs/other/libvte/recipe.toml similarity index 100% rename from recipes/wip/libs/libvte/recipe.toml rename to recipes/wip/libs/other/libvte/recipe.toml diff --git a/recipes/wip/libs/libvterm/recipe.toml b/recipes/wip/libs/other/libvterm/recipe.toml similarity index 100% rename from recipes/wip/libs/libvterm/recipe.toml rename to recipes/wip/libs/other/libvterm/recipe.toml diff --git a/recipes/wip/libs/libvulkan/recipe.toml b/recipes/wip/libs/other/libvulkan/recipe.toml similarity index 100% rename from recipes/wip/libs/libvulkan/recipe.toml rename to recipes/wip/libs/other/libvulkan/recipe.toml diff --git a/recipes/wip/libs/libwayland/recipe.toml b/recipes/wip/libs/other/libwayland/recipe.toml similarity index 100% rename from recipes/wip/libs/libwayland/recipe.toml rename to recipes/wip/libs/other/libwayland/recipe.toml diff --git a/recipes/wip/libs/libwebp/recipe.toml b/recipes/wip/libs/other/libwebp/recipe.toml similarity index 100% rename from recipes/wip/libs/libwebp/recipe.toml rename to recipes/wip/libs/other/libwebp/recipe.toml diff --git a/recipes/wip/libs/libwebp2/recipe.toml b/recipes/wip/libs/other/libwebp2/recipe.toml similarity index 100% rename from recipes/wip/libs/libwebp2/recipe.toml rename to recipes/wip/libs/other/libwebp2/recipe.toml diff --git a/recipes/wip/libs/libwebsocket++/recipe.toml b/recipes/wip/libs/other/libwebsocket++/recipe.toml similarity index 100% rename from recipes/wip/libs/libwebsocket++/recipe.toml rename to recipes/wip/libs/other/libwebsocket++/recipe.toml diff --git a/recipes/wip/libs/libwebsockets/recipe.toml b/recipes/wip/libs/other/libwebsockets/recipe.toml similarity index 100% rename from recipes/wip/libs/libwebsockets/recipe.toml rename to recipes/wip/libs/other/libwebsockets/recipe.toml diff --git a/recipes/wip/libs/libwmf/recipe.toml b/recipes/wip/libs/other/libwmf/recipe.toml similarity index 100% rename from recipes/wip/libs/libwmf/recipe.toml rename to recipes/wip/libs/other/libwmf/recipe.toml diff --git a/recipes/wip/libs/libwpd/recipe.toml b/recipes/wip/libs/other/libwpd/recipe.toml similarity index 100% rename from recipes/wip/libs/libwpd/recipe.toml rename to recipes/wip/libs/other/libwpd/recipe.toml diff --git a/recipes/wip/libs/libx11/recipe.toml b/recipes/wip/libs/other/libx11/recipe.toml similarity index 100% rename from recipes/wip/libs/libx11/recipe.toml rename to recipes/wip/libs/other/libx11/recipe.toml diff --git a/recipes/wip/libs/libxau/recipe.toml b/recipes/wip/libs/other/libxau/recipe.toml similarity index 100% rename from recipes/wip/libs/libxau/recipe.toml rename to recipes/wip/libs/other/libxau/recipe.toml diff --git a/recipes/wip/libs/libxaw/recipe.toml b/recipes/wip/libs/other/libxaw/recipe.toml similarity index 100% rename from recipes/wip/libs/libxaw/recipe.toml rename to recipes/wip/libs/other/libxaw/recipe.toml diff --git a/recipes/wip/libs/libxcb/recipe.toml b/recipes/wip/libs/other/libxcb/recipe.toml similarity index 100% rename from recipes/wip/libs/libxcb/recipe.toml rename to recipes/wip/libs/other/libxcb/recipe.toml diff --git a/recipes/wip/libs/libxcomposite/recipe.toml b/recipes/wip/libs/other/libxcomposite/recipe.toml similarity index 100% rename from recipes/wip/libs/libxcomposite/recipe.toml rename to recipes/wip/libs/other/libxcomposite/recipe.toml diff --git a/recipes/wip/libs/libxcrypt/recipe.toml b/recipes/wip/libs/other/libxcrypt/recipe.toml similarity index 100% rename from recipes/wip/libs/libxcrypt/recipe.toml rename to recipes/wip/libs/other/libxcrypt/recipe.toml diff --git a/recipes/wip/libs/libxcursor/recipe.toml b/recipes/wip/libs/other/libxcursor/recipe.toml similarity index 100% rename from recipes/wip/libs/libxcursor/recipe.toml rename to recipes/wip/libs/other/libxcursor/recipe.toml diff --git a/recipes/wip/libs/libxdamage/recipe.toml b/recipes/wip/libs/other/libxdamage/recipe.toml similarity index 100% rename from recipes/wip/libs/libxdamage/recipe.toml rename to recipes/wip/libs/other/libxdamage/recipe.toml diff --git a/recipes/wip/libs/libxdmcp/recipe.toml b/recipes/wip/libs/other/libxdmcp/recipe.toml similarity index 100% rename from recipes/wip/libs/libxdmcp/recipe.toml rename to recipes/wip/libs/other/libxdmcp/recipe.toml diff --git a/recipes/wip/libs/libxext/recipe.toml b/recipes/wip/libs/other/libxext/recipe.toml similarity index 100% rename from recipes/wip/libs/libxext/recipe.toml rename to recipes/wip/libs/other/libxext/recipe.toml diff --git a/recipes/wip/libs/libxfixes/recipe.toml b/recipes/wip/libs/other/libxfixes/recipe.toml similarity index 100% rename from recipes/wip/libs/libxfixes/recipe.toml rename to recipes/wip/libs/other/libxfixes/recipe.toml diff --git a/recipes/wip/libs/libxft/recipe.toml b/recipes/wip/libs/other/libxft/recipe.toml similarity index 100% rename from recipes/wip/libs/libxft/recipe.toml rename to recipes/wip/libs/other/libxft/recipe.toml diff --git a/recipes/wip/libs/libxi/recipe.toml b/recipes/wip/libs/other/libxi/recipe.toml similarity index 100% rename from recipes/wip/libs/libxi/recipe.toml rename to recipes/wip/libs/other/libxi/recipe.toml diff --git a/recipes/wip/libs/libxinerama/recipe.toml b/recipes/wip/libs/other/libxinerama/recipe.toml similarity index 100% rename from recipes/wip/libs/libxinerama/recipe.toml rename to recipes/wip/libs/other/libxinerama/recipe.toml diff --git a/recipes/wip/libs/libxkbcommon/recipe.toml b/recipes/wip/libs/other/libxkbcommon/recipe.toml similarity index 100% rename from recipes/wip/libs/libxkbcommon/recipe.toml rename to recipes/wip/libs/other/libxkbcommon/recipe.toml diff --git a/recipes/wip/libs/libxkbfile/recipe.toml b/recipes/wip/libs/other/libxkbfile/recipe.toml similarity index 100% rename from recipes/wip/libs/libxkbfile/recipe.toml rename to recipes/wip/libs/other/libxkbfile/recipe.toml diff --git a/recipes/wip/libs/libxmu/recipe.toml b/recipes/wip/libs/other/libxmu/recipe.toml similarity index 100% rename from recipes/wip/libs/libxmu/recipe.toml rename to recipes/wip/libs/other/libxmu/recipe.toml diff --git a/recipes/wip/libs/libxpm/recipe.toml b/recipes/wip/libs/other/libxpm/recipe.toml similarity index 100% rename from recipes/wip/libs/libxpm/recipe.toml rename to recipes/wip/libs/other/libxpm/recipe.toml diff --git a/recipes/wip/libs/libxrandr/recipe.toml b/recipes/wip/libs/other/libxrandr/recipe.toml similarity index 100% rename from recipes/wip/libs/libxrandr/recipe.toml rename to recipes/wip/libs/other/libxrandr/recipe.toml diff --git a/recipes/wip/libs/libxrender/recipe.toml b/recipes/wip/libs/other/libxrender/recipe.toml similarity index 100% rename from recipes/wip/libs/libxrender/recipe.toml rename to recipes/wip/libs/other/libxrender/recipe.toml diff --git a/recipes/wip/libs/libxres/recipe.toml b/recipes/wip/libs/other/libxres/recipe.toml similarity index 100% rename from recipes/wip/libs/libxres/recipe.toml rename to recipes/wip/libs/other/libxres/recipe.toml diff --git a/recipes/wip/libs/libxsimd/recipe.toml b/recipes/wip/libs/other/libxsimd/recipe.toml similarity index 100% rename from recipes/wip/libs/libxsimd/recipe.toml rename to recipes/wip/libs/other/libxsimd/recipe.toml diff --git a/recipes/wip/libs/libxslt/recipe.toml b/recipes/wip/libs/other/libxslt/recipe.toml similarity index 100% rename from recipes/wip/libs/libxslt/recipe.toml rename to recipes/wip/libs/other/libxslt/recipe.toml diff --git a/recipes/wip/libs/libxss/recipe.toml b/recipes/wip/libs/other/libxss/recipe.toml similarity index 100% rename from recipes/wip/libs/libxss/recipe.toml rename to recipes/wip/libs/other/libxss/recipe.toml diff --git a/recipes/wip/libs/libxtl/recipe.toml b/recipes/wip/libs/other/libxtl/recipe.toml similarity index 100% rename from recipes/wip/libs/libxtl/recipe.toml rename to recipes/wip/libs/other/libxtl/recipe.toml diff --git a/recipes/wip/libs/libxtrans/recipe.toml b/recipes/wip/libs/other/libxtrans/recipe.toml similarity index 100% rename from recipes/wip/libs/libxtrans/recipe.toml rename to recipes/wip/libs/other/libxtrans/recipe.toml diff --git a/recipes/wip/libs/libxtst/recipe.toml b/recipes/wip/libs/other/libxtst/recipe.toml similarity index 100% rename from recipes/wip/libs/libxtst/recipe.toml rename to recipes/wip/libs/other/libxtst/recipe.toml diff --git a/recipes/wip/libs/libxv/recipe.toml b/recipes/wip/libs/other/libxv/recipe.toml similarity index 100% rename from recipes/wip/libs/libxv/recipe.toml rename to recipes/wip/libs/other/libxv/recipe.toml diff --git a/recipes/wip/libs/libxvmc/recipe.toml b/recipes/wip/libs/other/libxvmc/recipe.toml similarity index 100% rename from recipes/wip/libs/libxvmc/recipe.toml rename to recipes/wip/libs/other/libxvmc/recipe.toml diff --git a/recipes/wip/libs/libyaml/recipe.toml b/recipes/wip/libs/other/libyaml/recipe.toml similarity index 100% rename from recipes/wip/libs/libyaml/recipe.toml rename to recipes/wip/libs/other/libyaml/recipe.toml diff --git a/recipes/wip/libs/libzimg/recipe.toml b/recipes/wip/libs/other/libzimg/recipe.toml similarity index 100% rename from recipes/wip/libs/libzimg/recipe.toml rename to recipes/wip/libs/other/libzimg/recipe.toml diff --git a/recipes/wip/libs/libzug/recipe.toml b/recipes/wip/libs/other/libzug/recipe.toml similarity index 100% rename from recipes/wip/libs/libzug/recipe.toml rename to recipes/wip/libs/other/libzug/recipe.toml diff --git a/recipes/wip/libs/libzvbi/recipe.toml b/recipes/wip/libs/other/libzvbi/recipe.toml similarity index 100% rename from recipes/wip/libs/libzvbi/recipe.toml rename to recipes/wip/libs/other/libzvbi/recipe.toml diff --git a/recipes/wip/libs/lilv/recipe.toml b/recipes/wip/libs/other/lilv/recipe.toml similarity index 100% rename from recipes/wip/libs/lilv/recipe.toml rename to recipes/wip/libs/other/lilv/recipe.toml diff --git a/recipes/wip/libs/liquid-dsp/recipe.toml b/recipes/wip/libs/other/liquid-dsp/recipe.toml similarity index 100% rename from recipes/wip/libs/liquid-dsp/recipe.toml rename to recipes/wip/libs/other/liquid-dsp/recipe.toml diff --git a/recipes/wip/libs/livedotcom/recipe.toml b/recipes/wip/libs/other/livedotcom/recipe.toml similarity index 100% rename from recipes/wip/libs/livedotcom/recipe.toml rename to recipes/wip/libs/other/livedotcom/recipe.toml diff --git a/recipes/wip/libs/lrdf/recipe.toml b/recipes/wip/libs/other/lrdf/recipe.toml similarity index 100% rename from recipes/wip/libs/lrdf/recipe.toml rename to recipes/wip/libs/other/lrdf/recipe.toml diff --git a/recipes/wip/libs/lv2/recipe.toml b/recipes/wip/libs/other/lv2/recipe.toml similarity index 100% rename from recipes/wip/libs/lv2/recipe.toml rename to recipes/wip/libs/other/lv2/recipe.toml diff --git a/recipes/wip/libs/lzlib/recipe.toml b/recipes/wip/libs/other/lzlib/recipe.toml similarity index 100% rename from recipes/wip/libs/lzlib/recipe.toml rename to recipes/wip/libs/other/lzlib/recipe.toml diff --git a/recipes/wip/libs/m4/recipe.toml b/recipes/wip/libs/other/m4/recipe.toml similarity index 100% rename from recipes/wip/libs/m4/recipe.toml rename to recipes/wip/libs/other/m4/recipe.toml diff --git a/recipes/wip/libs/maven/recipe.toml b/recipes/wip/libs/other/maven/recipe.toml similarity index 100% rename from recipes/wip/libs/maven/recipe.toml rename to recipes/wip/libs/other/maven/recipe.toml diff --git a/recipes/wip/libs/mbedtls/recipe.toml b/recipes/wip/libs/other/mbedtls/recipe.toml similarity index 100% rename from recipes/wip/libs/mbedtls/recipe.toml rename to recipes/wip/libs/other/mbedtls/recipe.toml diff --git a/recipes/wip/libs/mimalloc/recipe.toml b/recipes/wip/libs/other/mimalloc/recipe.toml similarity index 100% rename from recipes/wip/libs/mimalloc/recipe.toml rename to recipes/wip/libs/other/mimalloc/recipe.toml diff --git a/recipes/wip/libs/mlt/recipe.toml b/recipes/wip/libs/other/mlt/recipe.toml similarity index 100% rename from recipes/wip/libs/mlt/recipe.toml rename to recipes/wip/libs/other/mlt/recipe.toml diff --git a/recipes/wip/libs/mpc/recipe.toml b/recipes/wip/libs/other/mpc/recipe.toml similarity index 100% rename from recipes/wip/libs/mpc/recipe.toml rename to recipes/wip/libs/other/mpc/recipe.toml diff --git a/recipes/wip/libs/musepack/recipe.toml b/recipes/wip/libs/other/musepack/recipe.toml similarity index 100% rename from recipes/wip/libs/musepack/recipe.toml rename to recipes/wip/libs/other/musepack/recipe.toml diff --git a/recipes/wip/libs/nlohmann-json/recipe.toml b/recipes/wip/libs/other/nlohmann-json/recipe.toml similarity index 100% rename from recipes/wip/libs/nlohmann-json/recipe.toml rename to recipes/wip/libs/other/nlohmann-json/recipe.toml diff --git a/recipes/wip/libs/oidn/recipe.toml b/recipes/wip/libs/other/oidn/recipe.toml similarity index 100% rename from recipes/wip/libs/oidn/recipe.toml rename to recipes/wip/libs/other/oidn/recipe.toml diff --git a/recipes/wip/libs/onednn/recipe.toml b/recipes/wip/libs/other/onednn/recipe.toml similarity index 100% rename from recipes/wip/libs/onednn/recipe.toml rename to recipes/wip/libs/other/onednn/recipe.toml diff --git a/recipes/wip/libs/onetbb/recipe.toml b/recipes/wip/libs/other/onetbb/recipe.toml similarity index 100% rename from recipes/wip/libs/onetbb/recipe.toml rename to recipes/wip/libs/other/onetbb/recipe.toml diff --git a/recipes/wip/libs/openblas/recipe.toml b/recipes/wip/libs/other/openblas/recipe.toml similarity index 100% rename from recipes/wip/libs/openblas/recipe.toml rename to recipes/wip/libs/other/openblas/recipe.toml diff --git a/recipes/wip/libs/opencolorio/recipe.toml b/recipes/wip/libs/other/opencolorio/recipe.toml similarity index 100% rename from recipes/wip/libs/opencolorio/recipe.toml rename to recipes/wip/libs/other/opencolorio/recipe.toml diff --git a/recipes/wip/libs/opencv4/recipe.toml b/recipes/wip/libs/other/opencv4/recipe.toml similarity index 100% rename from recipes/wip/libs/opencv4/recipe.toml rename to recipes/wip/libs/other/opencv4/recipe.toml diff --git a/recipes/wip/libs/openexr/recipe.toml b/recipes/wip/libs/other/openexr/recipe.toml similarity index 100% rename from recipes/wip/libs/openexr/recipe.toml rename to recipes/wip/libs/other/openexr/recipe.toml diff --git a/recipes/wip/libs/openimageio/recipe.toml b/recipes/wip/libs/other/openimageio/recipe.toml similarity index 100% rename from recipes/wip/libs/openimageio/recipe.toml rename to recipes/wip/libs/other/openimageio/recipe.toml diff --git a/recipes/wip/libs/openjpeg/recipe.toml b/recipes/wip/libs/other/openjpeg/recipe.toml similarity index 100% rename from recipes/wip/libs/openjpeg/recipe.toml rename to recipes/wip/libs/other/openjpeg/recipe.toml diff --git a/recipes/wip/libs/openmpi/recipe.toml b/recipes/wip/libs/other/openmpi/recipe.toml similarity index 100% rename from recipes/wip/libs/openmpi/recipe.toml rename to recipes/wip/libs/other/openmpi/recipe.toml diff --git a/recipes/wip/libs/openvkl/recipe.toml b/recipes/wip/libs/other/openvkl/recipe.toml similarity index 100% rename from recipes/wip/libs/openvkl/recipe.toml rename to recipes/wip/libs/other/openvkl/recipe.toml diff --git a/recipes/wip/libs/pangomm/recipe.toml b/recipes/wip/libs/other/pangomm/recipe.toml similarity index 100% rename from recipes/wip/libs/pangomm/recipe.toml rename to recipes/wip/libs/other/pangomm/recipe.toml diff --git a/recipes/wip/libs/pjsip/recipe.toml b/recipes/wip/libs/other/pjsip/recipe.toml similarity index 100% rename from recipes/wip/libs/pjsip/recipe.toml rename to recipes/wip/libs/other/pjsip/recipe.toml diff --git a/recipes/wip/libs/popt/recipe.toml b/recipes/wip/libs/other/popt/recipe.toml similarity index 100% rename from recipes/wip/libs/popt/recipe.toml rename to recipes/wip/libs/other/popt/recipe.toml diff --git a/recipes/wip/libs/projectm/recipe.toml b/recipes/wip/libs/other/projectm/recipe.toml similarity index 100% rename from recipes/wip/libs/projectm/recipe.toml rename to recipes/wip/libs/other/projectm/recipe.toml diff --git a/recipes/wip/libs/pystring/recipe.toml b/recipes/wip/libs/other/pystring/recipe.toml similarity index 100% rename from recipes/wip/libs/pystring/recipe.toml rename to recipes/wip/libs/other/pystring/recipe.toml diff --git a/recipes/wip/libs/quantlib/recipe.toml b/recipes/wip/libs/other/quantlib/recipe.toml similarity index 100% rename from recipes/wip/libs/quantlib/recipe.toml rename to recipes/wip/libs/other/quantlib/recipe.toml diff --git a/recipes/wip/libs/raylib/recipe.toml b/recipes/wip/libs/other/raylib/recipe.toml similarity index 100% rename from recipes/wip/libs/raylib/recipe.toml rename to recipes/wip/libs/other/raylib/recipe.toml diff --git a/recipes/wip/libs/rdflib/recipe.toml b/recipes/wip/libs/other/rdflib/recipe.toml similarity index 100% rename from recipes/wip/libs/rdflib/recipe.toml rename to recipes/wip/libs/other/rdflib/recipe.toml diff --git a/recipes/wip/libs/rnnoise/recipe.toml b/recipes/wip/libs/other/rnnoise/recipe.toml similarity index 100% rename from recipes/wip/libs/rnnoise/recipe.toml rename to recipes/wip/libs/other/rnnoise/recipe.toml diff --git a/recipes/wip/libs/rubberband/recipe.toml b/recipes/wip/libs/other/rubberband/recipe.toml similarity index 100% rename from recipes/wip/libs/rubberband/recipe.toml rename to recipes/wip/libs/other/rubberband/recipe.toml diff --git a/recipes/wip/libs/rustls-openssl-compat/recipe.toml b/recipes/wip/libs/other/rustls-openssl-compat/recipe.toml similarity index 100% rename from recipes/wip/libs/rustls-openssl-compat/recipe.toml rename to recipes/wip/libs/other/rustls-openssl-compat/recipe.toml diff --git a/recipes/wip/libs/scotch/recipe.toml b/recipes/wip/libs/other/scotch/recipe.toml similarity index 100% rename from recipes/wip/libs/scotch/recipe.toml rename to recipes/wip/libs/other/scotch/recipe.toml diff --git a/recipes/wip/libs/sdl-pango/recipe.toml b/recipes/wip/libs/other/sdl-pango/recipe.toml similarity index 100% rename from recipes/wip/libs/sdl-pango/recipe.toml rename to recipes/wip/libs/other/sdl-pango/recipe.toml diff --git a/recipes/wip/libs/sdl2-net/recipe.toml b/recipes/wip/libs/other/sdl2-net/recipe.toml similarity index 100% rename from recipes/wip/libs/sdl2-net/recipe.toml rename to recipes/wip/libs/other/sdl2-net/recipe.toml diff --git a/recipes/wip/libs/sdl2-pango/recipe.toml b/recipes/wip/libs/other/sdl2-pango/recipe.toml similarity index 100% rename from recipes/wip/libs/sdl2-pango/recipe.toml rename to recipes/wip/libs/other/sdl2-pango/recipe.toml diff --git a/recipes/wip/libs/simdjson/recipe.toml b/recipes/wip/libs/other/simdjson/recipe.toml similarity index 100% rename from recipes/wip/libs/simdjson/recipe.toml rename to recipes/wip/libs/other/simdjson/recipe.toml diff --git a/recipes/wip/libs/snappy/recipe.toml b/recipes/wip/libs/other/snappy/recipe.toml similarity index 100% rename from recipes/wip/libs/snappy/recipe.toml rename to recipes/wip/libs/other/snappy/recipe.toml diff --git a/recipes/wip/libs/sord/recipe.toml b/recipes/wip/libs/other/sord/recipe.toml similarity index 100% rename from recipes/wip/libs/sord/recipe.toml rename to recipes/wip/libs/other/sord/recipe.toml diff --git a/recipes/wip/libs/sratom/recipe.toml b/recipes/wip/libs/other/sratom/recipe.toml similarity index 100% rename from recipes/wip/libs/sratom/recipe.toml rename to recipes/wip/libs/other/sratom/recipe.toml diff --git a/recipes/wip/libs/startup-notification/recipe.toml b/recipes/wip/libs/other/startup-notification/recipe.toml similarity index 100% rename from recipes/wip/libs/startup-notification/recipe.toml rename to recipes/wip/libs/other/startup-notification/recipe.toml diff --git a/recipes/wip/libs/suil/recipe.toml b/recipes/wip/libs/other/suil/recipe.toml similarity index 100% rename from recipes/wip/libs/suil/recipe.toml rename to recipes/wip/libs/other/suil/recipe.toml diff --git a/recipes/wip/libs/t4kcommon/recipe.toml b/recipes/wip/libs/other/t4kcommon/recipe.toml similarity index 100% rename from recipes/wip/libs/t4kcommon/recipe.toml rename to recipes/wip/libs/other/t4kcommon/recipe.toml diff --git a/recipes/wip/libs/taglib/recipe.toml b/recipes/wip/libs/other/taglib/recipe.toml similarity index 100% rename from recipes/wip/libs/taglib/recipe.toml rename to recipes/wip/libs/other/taglib/recipe.toml diff --git a/recipes/wip/libs/termcap/recipe.toml b/recipes/wip/libs/other/termcap/recipe.toml similarity index 100% rename from recipes/wip/libs/termcap/recipe.toml rename to recipes/wip/libs/other/termcap/recipe.toml diff --git a/recipes/wip/libs/totem-pl-parser/recipe.toml b/recipes/wip/libs/other/totem-pl-parser/recipe.toml similarity index 100% rename from recipes/wip/libs/totem-pl-parser/recipe.toml rename to recipes/wip/libs/other/totem-pl-parser/recipe.toml diff --git a/recipes/wip/libs/twolame/recipe.toml b/recipes/wip/libs/other/twolame/recipe.toml similarity index 100% rename from recipes/wip/libs/twolame/recipe.toml rename to recipes/wip/libs/other/twolame/recipe.toml diff --git a/recipes/wip/libs/vamp-plugin-sdk/recipe.toml b/recipes/wip/libs/other/vamp-plugin-sdk/recipe.toml similarity index 100% rename from recipes/wip/libs/vamp-plugin-sdk/recipe.toml rename to recipes/wip/libs/other/vamp-plugin-sdk/recipe.toml diff --git a/recipes/wip/libs/volk/recipe.toml b/recipes/wip/libs/other/volk/recipe.toml similarity index 100% rename from recipes/wip/libs/volk/recipe.toml rename to recipes/wip/libs/other/volk/recipe.toml diff --git a/recipes/wip/libs/webkit/recipe.toml b/recipes/wip/libs/other/webkit/recipe.toml similarity index 100% rename from recipes/wip/libs/webkit/recipe.toml rename to recipes/wip/libs/other/webkit/recipe.toml diff --git a/recipes/wip/libs/webkitgtk3/recipe.toml b/recipes/wip/libs/other/webkitgtk3/recipe.toml similarity index 100% rename from recipes/wip/libs/webkitgtk3/recipe.toml rename to recipes/wip/libs/other/webkitgtk3/recipe.toml diff --git a/recipes/wip/libs/webkitgtk4/recipe.toml b/recipes/wip/libs/other/webkitgtk4/recipe.toml similarity index 100% rename from recipes/wip/libs/webkitgtk4/recipe.toml rename to recipes/wip/libs/other/webkitgtk4/recipe.toml diff --git a/recipes/wip/libs/wolfssl5/recipe.toml b/recipes/wip/libs/other/wolfssl5/recipe.toml similarity index 100% rename from recipes/wip/libs/wolfssl5/recipe.toml rename to recipes/wip/libs/other/wolfssl5/recipe.toml diff --git a/recipes/wip/libs/wxpython/recipe.toml b/recipes/wip/libs/other/wxpython/recipe.toml similarity index 100% rename from recipes/wip/libs/wxpython/recipe.toml rename to recipes/wip/libs/other/wxpython/recipe.toml diff --git a/recipes/wip/libs/wxwidgets-gtk3/recipe.toml b/recipes/wip/libs/other/wxwidgets-gtk3/recipe.toml similarity index 100% rename from recipes/wip/libs/wxwidgets-gtk3/recipe.toml rename to recipes/wip/libs/other/wxwidgets-gtk3/recipe.toml diff --git a/recipes/wip/libs/x11proto/recipe.toml b/recipes/wip/libs/other/x11proto/recipe.toml similarity index 100% rename from recipes/wip/libs/x11proto/recipe.toml rename to recipes/wip/libs/other/x11proto/recipe.toml diff --git a/recipes/wip/libs/xcb-util/recipe.toml b/recipes/wip/libs/other/xcb-util/recipe.toml similarity index 100% rename from recipes/wip/libs/xcb-util/recipe.toml rename to recipes/wip/libs/other/xcb-util/recipe.toml diff --git a/recipes/wip/libs/xxhash/recipe.toml b/recipes/wip/libs/other/xxhash/recipe.toml similarity index 100% rename from recipes/wip/libs/xxhash/recipe.toml rename to recipes/wip/libs/other/xxhash/recipe.toml diff --git a/recipes/wip/libs/zlib-ng/recipe.toml b/recipes/wip/libs/other/zlib-ng/recipe.toml similarity index 100% rename from recipes/wip/libs/zlib-ng/recipe.toml rename to recipes/wip/libs/other/zlib-ng/recipe.toml From 6e8528c4600046c3d0fd2205b10ead9cee9ca3d2 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 26 Jun 2024 04:08:29 +0000 Subject: [PATCH 1946/3180] Move recipes --- recipes/wip/{ => tools}/archives/7-zip/recipe.toml | 0 recipes/wip/{ => tools}/archives/lz4/recipe.toml | 0 recipes/wip/{ => tools}/archives/lzip/recipe.toml | 0 recipes/wip/{ => tools}/archives/mlar/recipe.toml | 0 recipes/wip/{ => tools}/archives/orz/recipe.toml | 0 recipes/wip/{ => tools}/archives/ouch/recipe.toml | 0 recipes/wip/{ => tools}/archives/plzip/recipe.toml | 0 recipes/wip/{ => tools}/archives/unzrip/recipe.toml | 0 recipes/wip/{ => tools}/archives/zstd/recipe.toml | 0 recipes/wip/{ => tools}/finance/bitcoin/btc-vanity/recipe.toml | 0 recipes/wip/{ => tools}/finance/bitcoin/liana/recipe.toml | 0 .../wip/{ => tools}/finance/bitcoin/nakamoto-wallet/recipe.toml | 0 recipes/wip/{ => tools}/finance/bitcoin/nakatoshi/recipe.toml | 0 recipes/wip/{ => tools}/finance/bitcoin/ord/recipe.toml | 0 recipes/wip/{ => tools}/finance/bitcoin/pushtx/recipe.toml | 0 .../wip/{ => tools}/finance/bitcoin/rusty-blockparser/recipe.toml | 0 recipes/wip/{ => tools}/finance/donation/cargo-fund/recipe.toml | 0 recipes/wip/{ => tools}/finance/market/apcacli/recipe.toml | 0 recipes/wip/{ => tools}/finance/market/tick-rs/recipe.toml | 0 recipes/wip/{ => tools}/finance/monero/gupax/recipe.toml | 0 recipes/wip/{ => tools}/finance/monero/xmrig/recipe.toml | 0 recipes/wip/{ => tools}/finance/rex/recipe.toml | 0 recipes/wip/{ => tools}/graphics/editors/blender-lts/recipe.toml | 0 recipes/wip/{ => tools}/graphics/editors/blender/recipe.toml | 0 recipes/wip/{ => tools}/graphics/editors/gimp/recipe.toml | 0 recipes/wip/{ => tools}/graphics/editors/inkscape/recipe.toml | 0 recipes/wip/{ => tools}/graphics/editors/krita/recipe.toml | 0 recipes/wip/{ => tools}/graphics/editors/opentoonz/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/appleseed/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/c-ray/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/cmark/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/darktable/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/derive-rs/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/dify/recipe.toml | 0 .../wip/{ => tools}/graphics/other/dominant-colours/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/dssim/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/embree/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/flowbetween/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/gaffer/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/glou/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/gmic-qt/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/gmic/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/graphicsmagick/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/graphviz/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/halo/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/hdr10plus-tool/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/imagemagick/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/incompact3d/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/jxl-oxide/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/kantig/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/lpl/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/luxcorerender/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/matugen/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/ocrs/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/oculante/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/openscad/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/ospray-studio/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/ospray/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/paraview-data/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/paraview/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/pilka/recipe.toml | 0 .../wip/{ => tools}/graphics/other/pix-image-viewer/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/pixsort/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/rascii/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/rawtherapee/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/reve/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/rimage/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/satty/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/shadergarden/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/simp/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/smag/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/texel/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/toybrot/recipe.toml | 0 .../wip/{ => tools}/graphics/other/tungsten-renderer/recipe.toml | 0 .../wip/{ => tools}/graphics/other/upscaling/rscale2x/recipe.toml | 0 .../{ => tools}/graphics/other/upscaling/upscaler-rs/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/viu/recipe.toml | 0 recipes/wip/{ => tools}/graphics/other/watch-stl/recipe.toml | 0 recipes/wip/{ => tools}/math/fend/recipe.toml | 0 recipes/wip/{ => tools}/math/kalc/recipe.toml | 0 recipes/wip/{ => tools}/math/kalker/recipe.toml | 0 recipes/wip/{ => tools}/math/numbat/recipe.toml | 0 recipes/wip/{ => tools}/math/primesieve/recipe.toml | 0 recipes/wip/{ => tools}/math/rink/recipe.toml | 0 recipes/wip/{ => tools}/net/anime-downloader/recipe.toml | 0 recipes/wip/{ => tools}/net/apache-httpd/recipe.toml | 0 recipes/wip/{ => tools}/net/apache-httpd/redox.patch | 0 recipes/wip/{ => tools}/net/arp-scanner/recipe.toml | 0 recipes/wip/{ => tools}/net/arti/recipe.toml | 0 recipes/wip/{ => tools}/net/attractorr/recipe.toml | 0 recipes/wip/{ => tools}/net/bita/recipe.toml | 0 recipes/wip/{ => tools}/net/bitcoin-core/recipe.toml | 0 recipes/wip/{ => tools}/net/bore/recipe.toml | 0 recipes/wip/{ => tools}/net/boringtun/recipe.toml | 0 recipes/wip/{ => tools}/net/celeste/recipe.toml | 0 recipes/wip/{ => tools}/net/cobalt/recipe.toml | 0 recipes/wip/{ => tools}/net/crab-dlna/recipe.toml | 0 recipes/wip/{ => tools}/net/devserver/recipe.toml | 0 recipes/wip/{ => tools}/net/dqy/recipe.toml | 0 recipes/wip/{ => tools}/net/drill/recipe.toml | 0 recipes/wip/{ => tools}/net/dufs/recipe.toml | 0 recipes/wip/{ => tools}/net/electrs/recipe.toml | 0 recipes/wip/{ => tools}/net/floresta/recipe.toml | 0 recipes/wip/{ => tools}/net/freenginx/recipe.toml | 0 recipes/wip/{ => tools}/net/guacamole-client/recipe.toml | 0 recipes/wip/{ => tools}/net/guacamole-server/recipe.toml | 0 recipes/wip/{ => tools}/net/halloy/recipe.toml | 0 recipes/wip/{ => tools}/net/havn/recipe.toml | 0 recipes/wip/{ => tools}/net/hinoki/recipe.toml | 0 recipes/wip/{ => tools}/net/http-server-rs/recipe.toml | 0 recipes/wip/{ => tools}/net/hurl/recipe.toml | 0 recipes/wip/{ => tools}/net/i2pd/recipe.toml | 0 recipes/wip/{ => tools}/net/impala/recipe.toml | 0 recipes/wip/{ => tools}/net/lagrange/recipe.toml | 0 recipes/wip/{ => tools}/net/lldap/recipe.toml | 0 recipes/wip/{ => tools}/net/lokinet/recipe.toml | 0 recipes/wip/{ => tools}/net/lychee/recipe.toml | 0 recipes/wip/{ => tools}/net/lynx/recipe.toml | 0 recipes/wip/{ => tools}/net/meli/recipe.toml | 0 recipes/wip/{ => tools}/net/miniupnpc/recipe.toml | 0 recipes/wip/{ => tools}/net/moonfire-nvr-server/recipe.toml | 0 recipes/wip/{ => tools}/net/netop/recipe.toml | 0 recipes/wip/{ => tools}/net/netscanner/recipe.toml | 0 recipes/wip/{ => tools}/net/nginx/recipe.toml | 0 recipes/wip/{ => tools}/net/nmap/recipe.toml | 0 recipes/wip/{ => tools}/net/nostr-rs-relay/recipe.toml | 0 recipes/wip/{ => tools}/net/nspr/recipe.toml | 0 recipes/wip/{ => tools}/net/nss-pem/recipe.toml | 0 recipes/wip/{ => tools}/net/nss/recipe.toml | 0 recipes/wip/{ => tools}/net/ntpd-rs/recipe.toml | 0 recipes/wip/{ => tools}/net/oha/recipe.toml | 0 recipes/wip/{ => tools}/net/realm/recipe.toml | 0 recipes/wip/{ => tools}/net/rqbit/recipe.toml | 0 recipes/wip/{ => tools}/net/rustdesk-server/recipe.toml | 0 recipes/wip/{ => tools}/net/rustscan/recipe.toml | 0 recipes/wip/{ => tools}/net/rustypaste/recipe.toml | 0 recipes/wip/{ => tools}/net/samba/answers.txt | 0 recipes/wip/{ => tools}/net/samba/recipe.toml | 0 recipes/wip/{ => tools}/net/simple-http-server/recipe.toml | 0 recipes/wip/{ => tools}/net/slumber/recipe.toml | 0 recipes/wip/{ => tools}/net/spadesx/recipe.toml | 0 recipes/wip/{ => tools}/net/speedtest-rs/recipe.toml | 0 recipes/wip/{ => tools}/net/spis/recipe.toml | 0 recipes/wip/{ => tools}/net/srsran-4g/recipe.toml | 0 recipes/wip/{ => tools}/net/srsran-project/recipe.toml | 0 recipes/wip/{ => tools}/net/synapse-bt/recipe.toml | 0 recipes/wip/{ => tools}/net/telegram-desktop/recipe.toml | 0 recipes/wip/{ => tools}/net/termchat/recipe.toml | 0 recipes/wip/{ => tools}/net/tiny/recipe.toml | 0 recipes/wip/{ => tools}/net/tobaru/recipe.toml | 0 recipes/wip/{ => tools}/net/tor-browser/recipe.toml | 0 recipes/wip/{ => tools}/net/tor/recipe.toml | 0 recipes/wip/{ => tools}/net/transmission/recipe.toml | 0 recipes/wip/{ => tools}/net/trippy/recipe.toml | 0 recipes/wip/{ => tools}/net/turn-rs/recipe.toml | 0 recipes/wip/{ => tools}/net/unbound/recipe.toml | 0 recipes/wip/{ => tools}/net/updns/recipe.toml | 0 recipes/wip/{ => tools}/net/varia/recipe.toml | 0 recipes/wip/{ => tools}/net/vimini/recipe.toml | 0 recipes/wip/{ => tools}/net/vopono/recipe.toml | 0 recipes/wip/{ => tools}/net/vpncloud/recipe.toml | 0 recipes/wip/{ => tools}/net/vsd/recipe.toml | 0 recipes/wip/{ => tools}/net/warp/recipe.toml | 0 recipes/wip/{ => tools}/net/wget/recipe.toml | 0 recipes/wip/{ => tools}/net/wget2/recipe.toml | 0 recipes/wip/{ => tools}/net/wireguard-rs/recipe.toml | 0 recipes/wip/{ => tools}/net/yaydl/recipe.toml | 0 recipes/wip/{ => tools}/net/yazi/recipe.toml | 0 recipes/wip/{ => tools}/net/zerotier/recipe.toml | 0 recipes/wip/{ai => tools}/nnx/recipe.toml | 0 .../wip/{ => tools}/office/libreoffice-dictionaries/recipe.toml | 0 .../wip/{ => tools}/office/libreoffice-translations/recipe.toml | 0 recipes/wip/{ => tools}/office/libreoffice/recipe.toml | 0 recipes/wip/tools/{ => other}/aeruginous/recipe.toml | 0 recipes/wip/tools/{ => other}/aim/recipe.toml | 0 recipes/wip/tools/{ => other}/alacritty/recipe.toml | 0 recipes/wip/tools/{ => other}/amp/recipe.toml | 0 recipes/wip/tools/{ => other}/ani-cli/recipe.toml | 0 recipes/wip/tools/{ => other}/ani-skip/recipe.toml | 0 recipes/wip/tools/{ => other}/aria2/recipe.toml | 0 recipes/wip/tools/{ => other}/arrow-tools/recipe.toml | 0 recipes/wip/tools/{ => other}/artem/recipe.toml | 0 recipes/wip/tools/{ => other}/ascii-gen/recipe.toml | 0 recipes/wip/tools/{ => other}/asciinema-rs/recipe.toml | 0 recipes/wip/tools/{ => other}/ast-grep/recipe.toml | 0 recipes/wip/tools/{ => other}/astc-encoder/recipe.toml | 0 recipes/wip/tools/{ => other}/astyle/recipe.toml | 0 recipes/wip/tools/{ => other}/atm-cli/recipe.toml | 0 recipes/wip/tools/{ => other}/atuin/recipe.toml | 0 recipes/wip/tools/{ => other}/b3sum/recipe.toml | 0 recipes/wip/tools/{ => other}/backhand/recipe.toml | 0 recipes/wip/tools/{ => other}/bacon/recipe.toml | 0 recipes/wip/tools/{ => other}/bacup/recipe.toml | 0 recipes/wip/tools/{ => other}/bandwhich/recipe.toml | 0 recipes/wip/tools/{ => other}/bartib/recipe.toml | 0 recipes/wip/tools/{ => other}/bat/recipe.toml | 0 recipes/wip/tools/{ => other}/battop/recipe.toml | 0 recipes/wip/tools/{ => other}/bdt/recipe.toml | 0 recipes/wip/tools/{ => other}/binserve/recipe.toml | 0 recipes/wip/tools/{ => other}/birdy/recipe.toml | 0 recipes/wip/tools/{ => other}/blockish-caca/recipe.toml | 0 recipes/wip/tools/{ => other}/bottles/recipe.toml | 0 recipes/wip/tools/{ => other}/bottom/recipe.toml | 0 recipes/wip/tools/{ => other}/broot/recipe.toml | 0 recipes/wip/tools/{ => other}/busybox/recipe.toml | 0 recipes/wip/tools/{ => other}/bvr/recipe.toml | 0 recipes/wip/tools/{ => other}/byteblitz/recipe.toml | 0 recipes/wip/tools/{ => other}/caesium/recipe.toml | 0 recipes/wip/tools/{ => other}/caligula/recipe.toml | 0 recipes/wip/tools/{ => other}/carbonyl/recipe.toml | 0 recipes/wip/tools/{ => other}/cava/recipe.toml | 0 recipes/wip/tools/{ => other}/cb/recipe.toml | 0 recipes/wip/tools/{ => other}/chafa/recipe.toml | 0 recipes/wip/tools/{ => other}/checkpwn/recipe.toml | 0 recipes/wip/tools/{ => other}/choose/recipe.toml | 0 recipes/wip/tools/{ => other}/chromazone/recipe.toml | 0 recipes/wip/tools/{ => other}/chuck/recipe.toml | 0 recipes/wip/tools/{ => other}/clipcat/recipe.toml | 0 recipes/wip/tools/{ => other}/clipshare-desktop/recipe.toml | 0 recipes/wip/tools/{ => other}/clipshare-server/recipe.toml | 0 recipes/wip/tools/{ => other}/clog-cli/recipe.toml | 0 recipes/wip/tools/{ => other}/conceal/recipe.toml | 0 recipes/wip/tools/{ => other}/conky/recipe.toml | 0 recipes/wip/tools/{ => other}/conserve/recipe.toml | 0 recipes/wip/tools/{ => other}/converseen/recipe.toml | 0 recipes/wip/tools/{ => other}/cosmic-player/manifest | 0 recipes/wip/tools/{ => other}/cosmic-player/recipe.toml | 0 recipes/wip/tools/{ => other}/counts/recipe.toml | 0 recipes/wip/tools/{ => other}/cpu-x/recipe.toml | 0 recipes/wip/tools/{ => other}/cpuminer-opt/recipe.toml | 0 recipes/wip/tools/{ => other}/crunchy-cli/recipe.toml | 0 recipes/wip/tools/{ => other}/csvlens/recipe.toml | 0 recipes/wip/tools/{ => other}/cube-timer/recipe.toml | 0 recipes/wip/tools/{ => other}/cute/recipe.toml | 0 recipes/wip/tools/{ => other}/cyme/recipe.toml | 0 recipes/wip/tools/{ => other}/czkawka/recipe.toml | 0 recipes/wip/tools/{ => other}/daktilo/recipe.toml | 0 recipes/wip/tools/{ => other}/dead-ringer/recipe.toml | 0 recipes/wip/tools/{ => other}/delta/recipe.toml | 0 recipes/wip/tools/{ => other}/desed/recipe.toml | 0 recipes/wip/tools/{ => other}/dfm/recipe.toml | 0 recipes/wip/tools/{ => other}/diffr/recipe.toml | 0 recipes/wip/tools/{ => other}/diffy/recipe.toml | 0 recipes/wip/tools/{ => other}/dim/recipe.toml | 0 recipes/wip/tools/{ => other}/diskonaut/recipe.toml | 0 recipes/wip/tools/{ => other}/dispatch/recipe.toml | 0 recipes/wip/tools/{ => other}/dog/recipe.toml | 0 recipes/wip/tools/{ => other}/dotr/recipe.toml | 0 recipes/wip/tools/{ => other}/dply/recipe.toml | 0 recipes/wip/tools/{ => other}/dprint/recipe.toml | 0 recipes/wip/tools/{ => other}/dra-cla/recipe.toml | 0 recipes/wip/tools/{ => other}/dua/recipe.toml | 0 recipes/wip/tools/{ => other}/dui/recipe.toml | 0 recipes/wip/tools/{ => other}/dura/recipe.toml | 0 recipes/wip/tools/{ => other}/dust/recipe.toml | 0 recipes/wip/tools/{ => other}/dutree/recipe.toml | 0 recipes/wip/tools/{ => other}/dysk/recipe.toml | 0 recipes/wip/tools/{ => other}/elfutils/recipe.toml | 0 recipes/wip/tools/{ => other}/emacs-nox/recipe.toml | 0 recipes/wip/tools/{ => other}/emacs-pgtk/recipe.toml | 0 recipes/wip/tools/{ => other}/emplace/recipe.toml | 0 recipes/wip/tools/{ => other}/enchant/recipe.toml | 0 recipes/wip/tools/{ => other}/envio/recipe.toml | 0 recipes/wip/tools/{ => other}/epub2txt/recipe.toml | 0 recipes/wip/tools/{ => other}/erdtree/recipe.toml | 0 recipes/wip/tools/{ => other}/espanso/recipe.toml | 0 recipes/wip/tools/{ => other}/eureka/recipe.toml | 0 recipes/wip/tools/{ => other}/eva/recipe.toml | 0 recipes/wip/tools/{ => other}/exa/recipe.toml | 0 recipes/wip/tools/{ => other}/exhaust/recipe.toml | 0 recipes/wip/tools/{ => other}/exuberant-ctags/recipe.toml | 0 recipes/wip/tools/{ => other}/eza/recipe.toml | 0 recipes/wip/tools/{ => other}/fclones/recipe.toml | 0 recipes/wip/tools/{ => other}/felix/recipe.toml | 0 recipes/wip/tools/{ => other}/fennec/recipe.toml | 0 recipes/wip/tools/{ => other}/ffizer/recipe.toml | 0 recipes/wip/tools/{ => other}/file/recipe.toml | 0 recipes/wip/tools/{ => other}/flameshot/recipe.toml | 0 recipes/wip/tools/{ => other}/flowtime/recipe.toml | 0 recipes/wip/tools/{ => other}/freshfetch/recipe.toml | 0 recipes/wip/tools/{ => other}/fselect/recipe.toml | 0 recipes/wip/tools/{ => other}/fuga/recipe.toml | 0 recipes/wip/tools/{ => other}/funzzy/recipe.toml | 0 recipes/wip/tools/{ => other}/fzf-make/recipe.toml | 0 recipes/wip/tools/{ => other}/gengo/recipe.toml | 0 recipes/wip/tools/{ => other}/germ/recipe.toml | 0 recipes/wip/tools/{ => other}/gifski/recipe.toml | 0 recipes/wip/tools/{ => other}/glicol-cli/recipe.toml | 0 recipes/wip/tools/{ => other}/glsl-viewer/recipe.toml | 0 recipes/wip/tools/{ => other}/gnu-radio/recipe.toml | 0 recipes/wip/tools/{ => other}/gnupg-lts/recipe.toml | 0 recipes/wip/tools/{ => other}/gnupg/recipe.toml | 0 recipes/wip/tools/{ => other}/gnuplot/recipe.toml | 0 recipes/wip/tools/{ => other}/goldboot/recipe.toml | 0 recipes/wip/tools/{ => other}/goxel/recipe.toml | 0 recipes/wip/tools/{ => other}/gpg-tui/recipe.toml | 0 recipes/wip/tools/{ => other}/gphoto2/recipe.toml | 0 recipes/wip/tools/{ => other}/gping/recipe.toml | 0 recipes/wip/tools/{ => other}/gptman/recipe.toml | 0 recipes/wip/tools/{ => other}/gptube-cli/recipe.toml | 0 recipes/wip/tools/{ => other}/grex/recipe.toml | 0 recipes/wip/tools/{ => other}/groff/recipe.toml | 0 recipes/wip/tools/{ => other}/guix/recipe.toml | 0 recipes/wip/tools/{ => other}/halp/recipe.toml | 0 recipes/wip/tools/{ => other}/hawkeye/recipe.toml | 0 recipes/wip/tools/{ => other}/haylxon/recipe.toml | 0 recipes/wip/tools/{ => other}/helix-gpui/recipe.toml | 0 recipes/wip/tools/{ => other}/hgrep/recipe.toml | 0 recipes/wip/tools/{ => other}/himalaya/recipe.toml | 0 recipes/wip/tools/{ => other}/hired/recipe.toml | 0 recipes/wip/tools/{ => other}/hl/recipe.toml | 0 recipes/wip/tools/{ => other}/hoard/recipe.toml | 0 recipes/wip/tools/{ => other}/horsetab/recipe.toml | 0 recipes/wip/tools/{ => other}/humphrey/recipe.toml | 0 recipes/wip/tools/{ => other}/hwatch/recipe.toml | 0 recipes/wip/tools/{ => other}/hx/recipe.toml | 0 recipes/wip/tools/{ => other}/hyperfine/recipe.toml | 0 recipes/wip/tools/{ => other}/iamb/recipe.toml | 0 recipes/wip/tools/{ => other}/igrep/recipe.toml | 0 recipes/wip/tools/{ => other}/imager/recipe.toml | 0 recipes/wip/tools/{ => other}/inlyne/recipe.toml | 0 recipes/wip/tools/{ => other}/innernet-cli/recipe.toml | 0 recipes/wip/tools/{ => other}/innernet-server/recipe.toml | 0 recipes/wip/tools/{ => other}/intelli-shell/recipe.toml | 0 recipes/wip/tools/{ => other}/interaction-calculus/recipe.toml | 0 recipes/wip/tools/{ => other}/intermodal/recipe.toml | 0 recipes/wip/tools/{ => other}/itstool/recipe.toml | 0 recipes/wip/tools/{ => other}/jirust/recipe.toml | 0 recipes/wip/tools/{ => other}/jless/recipe.toml | 0 recipes/wip/tools/{ => other}/joshuto/recipe.toml | 0 recipes/wip/tools/{ => other}/jql/recipe.toml | 0 recipes/wip/tools/{ => other}/just/recipe.toml | 0 recipes/wip/tools/{ => other}/kami/recipe.toml | 0 recipes/wip/tools/{ => other}/kanata/recipe.toml | 0 recipes/wip/tools/{ => other}/kbt/recipe.toml | 0 recipes/wip/tools/{ => other}/keepassxc/recipe.toml | 0 recipes/wip/tools/{ => other}/kibi/recipe.toml | 0 recipes/wip/tools/{ => other}/kodi/recipe.toml | 0 recipes/wip/tools/{ => other}/lan-mouse/recipe.toml | 0 recipes/wip/tools/{ => other}/lapce/recipe.toml | 0 recipes/wip/tools/{ => other}/lazy-etherscan/recipe.toml | 0 recipes/wip/tools/{ => other}/lcs-image-diff/recipe.toml | 0 recipes/wip/tools/{ => other}/lddtree-rs/recipe.toml | 0 recipes/wip/tools/{ => other}/legdur/recipe.toml | 0 recipes/wip/tools/{ => other}/lemmeknow/recipe.toml | 0 recipes/wip/tools/{ => other}/less/recipe.toml | 0 recipes/wip/tools/{ => other}/lines-rs/recipe.toml | 0 recipes/wip/tools/{ => other}/lineselect/recipe.toml | 0 recipes/wip/tools/{ => other}/logss/recipe.toml | 0 recipes/wip/tools/{ => other}/lowcharts/recipe.toml | 0 recipes/wip/tools/{ => other}/lsd/recipe.toml | 0 recipes/wip/tools/{ => other}/lsix/recipe.toml | 0 recipes/wip/tools/{ => other}/lucid/recipe.toml | 0 recipes/wip/tools/{ => other}/macchina/recipe.toml | 0 recipes/wip/tools/{ => other}/magic-wormhole-rs/recipe.toml | 0 recipes/wip/tools/{ => other}/mandy/recipe.toml | 0 recipes/wip/tools/{ => other}/mangohud/recipe.toml | 0 recipes/wip/tools/{ => other}/mask/recipe.toml | 0 recipes/wip/tools/{ => other}/matui/recipe.toml | 0 recipes/wip/tools/{ => other}/maze-tui/recipe.toml | 0 recipes/wip/tools/{ => other}/mcfly/recipe.toml | 0 recipes/wip/tools/{ => other}/mdbook/recipe.toml | 0 recipes/wip/tools/{ => other}/menyoki/recipe.toml | 0 recipes/wip/tools/{ => other}/mercurial/recipe.toml | 0 recipes/wip/tools/{ => other}/mhv/recipe.toml | 0 recipes/wip/tools/{ => other}/miniaudicle/recipe.toml | 0 recipes/wip/tools/{ => other}/minmon/recipe.toml | 0 recipes/wip/tools/{ => other}/mkisofs-rs/recipe.toml | 0 recipes/wip/tools/{ => other}/mosh/recipe.toml | 0 recipes/wip/tools/{ => other}/mprocs/recipe.toml | 0 recipes/wip/tools/{ => other}/navi/recipe.toml | 0 recipes/wip/tools/{ => other}/neofetch/recipe.toml | 0 recipes/wip/tools/{ => other}/neovide/recipe.toml | 0 recipes/wip/tools/{ => other}/neovim/recipe.toml | 0 recipes/wip/tools/{ => other}/news-rs/recipe.toml | 0 recipes/wip/tools/{ => other}/nickel/recipe.toml | 0 recipes/wip/tools/{ => other}/nix/recipe.toml | 0 recipes/wip/tools/{ => other}/nomad/recipe.toml | 0 recipes/wip/tools/{ => other}/notnow/recipe.toml | 0 recipes/wip/tools/{ => other}/objdiff/recipe.toml | 0 recipes/wip/tools/{ => other}/obs-studio/recipe.toml | 0 recipes/wip/tools/{ => other}/odilia/recipe.toml | 0 recipes/wip/tools/{ => other}/okteta/recipe.toml | 0 recipes/wip/tools/{ => other}/omega/recipe.toml | 0 recipes/wip/tools/{ => other}/onefetch/recipe.toml | 0 recipes/wip/tools/{ => other}/oranda/recipe.toml | 0 .../wip/tools/{ => other}/orchaldir-texture-generator/recipe.toml | 0 recipes/wip/tools/{ => other}/oxipng/recipe.toml | 0 recipes/wip/tools/{ => other}/parabolic/recipe.toml | 0 recipes/wip/tools/{ => other}/patchelf/recipe.toml | 0 recipes/wip/tools/{ => other}/pciutils/recipe.toml | 0 recipes/wip/tools/{ => other}/pdbview/recipe.toml | 0 recipes/wip/tools/{ => other}/pdu/recipe.toml | 0 recipes/wip/tools/{ => other}/pfetch-rs/recipe.toml | 0 recipes/wip/tools/{ => other}/pidgin/recipe.toml | 0 recipes/wip/tools/{ => other}/pipr/recipe.toml | 0 recipes/wip/tools/{ => other}/pixcil/recipe.toml | 0 recipes/wip/tools/{ => other}/pixelsort/recipe.toml | 0 recipes/wip/tools/{ => other}/please/recipe.toml | 0 recipes/wip/tools/{ => other}/pomky/recipe.toml | 0 recipes/wip/tools/{ => other}/porsmo/recipe.toml | 0 recipes/wip/tools/{ => other}/posixutils-rs/recipe.toml | 0 recipes/wip/tools/{ => other}/potrace/recipe.toml | 0 recipes/wip/tools/{ => other}/presenterm/recipe.toml | 0 recipes/wip/tools/{ => other}/process-viewer/recipe.toml | 0 recipes/wip/tools/{ => other}/procs/recipe.toml | 0 recipes/wip/tools/{ => other}/pueue/recipe.toml | 0 recipes/wip/tools/{ => other}/qalculate-gtk/recipe.toml | 0 recipes/wip/tools/{ => other}/qrrs/recipe.toml | 0 recipes/wip/tools/{ => other}/qrtool/recipe.toml | 0 recipes/wip/tools/{ => other}/qv/recipe.toml | 0 recipes/wip/tools/{ => other}/rage/recipe.toml | 0 recipes/wip/tools/{ => other}/rana/recipe.toml | 0 recipes/wip/tools/{ => other}/rargs/recipe.toml | 0 recipes/wip/tools/{ => other}/rclone/recipe.toml | 0 recipes/wip/tools/{ => other}/remmina/recipe.toml | 0 recipes/wip/tools/{ => other}/repgrep/recipe.toml | 0 recipes/wip/tools/{ => other}/restic/recipe.toml | 0 recipes/wip/tools/{ => other}/rfetch/recipe.toml | 0 recipes/wip/tools/{ => other}/rfz/recipe.toml | 0 recipes/wip/tools/{ => other}/rioterm/recipe.toml | 0 recipes/wip/tools/{ => other}/rip/recipe.toml | 0 recipes/wip/tools/{ => other}/ripasso/recipe.toml | 0 recipes/wip/tools/{ => other}/ripgrep-all/recipe.toml | 0 recipes/wip/tools/{ => other}/ripsecrets/recipe.toml | 0 recipes/wip/tools/{ => other}/rix/recipe.toml | 0 recipes/wip/tools/{ => other}/rnr/recipe.toml | 0 recipes/wip/tools/{ => other}/rq/recipe.toml | 0 recipes/wip/tools/{ => other}/rsftch/recipe.toml | 0 recipes/wip/tools/{ => other}/rsync/recipe.toml | 0 recipes/wip/tools/{ => other}/rtorrent/recipe.toml | 0 recipes/wip/tools/{ => other}/ruke/recipe.toml | 0 recipes/wip/tools/{ => other}/run/recipe.toml | 0 recipes/wip/tools/{ => other}/ruplacer/recipe.toml | 0 recipes/wip/tools/{ => other}/rustlings/recipe.toml | 0 recipes/wip/tools/{ => other}/rusty-krab-manager/recipe.toml | 0 recipes/wip/tools/{ => other}/rusty-psn-cli/recipe.toml | 0 recipes/wip/tools/{ => other}/rusty-psn-gui/recipe.toml | 0 recipes/wip/tools/{ => other}/rusty/recipe.toml | 0 recipes/wip/tools/{ => other}/rusync/recipe.toml | 0 recipes/wip/tools/{ => other}/sad/recipe.toml | 0 recipes/wip/tools/{ => other}/sam/recipe.toml | 0 recipes/wip/tools/{ => other}/scribus/recipe.toml | 0 recipes/wip/tools/{ => other}/scrying/recipe.toml | 0 recipes/wip/tools/{ => other}/sd/recipe.toml | 0 recipes/wip/tools/{ => other}/shd/recipe.toml | 0 recipes/wip/tools/{ => other}/shellfirm/recipe.toml | 0 recipes/wip/tools/{ => other}/shokunin/recipe.toml | 0 recipes/wip/tools/{ => other}/sig/recipe.toml | 0 recipes/wip/tools/{ => other}/sigi/recipe.toml | 0 recipes/wip/tools/{ => other}/simplemoji/recipe.toml | 0 recipes/wip/tools/{ => other}/skim/recipe.toml | 0 recipes/wip/tools/{ => other}/skyspell/recipe.toml | 0 recipes/wip/tools/{ => other}/smartmontools/recipe.toml | 0 recipes/wip/tools/{ => other}/snappy-rs/recipe.toml | 0 recipes/wip/tools/{ => other}/spacer/recipe.toml | 0 recipes/wip/tools/{ => other}/spidey/recipe.toml | 0 recipes/wip/tools/{ => other}/sprinkles/recipe.toml | 0 recipes/wip/tools/{ => other}/sshx/recipe.toml | 0 recipes/wip/tools/{ => other}/starship/recipe.toml | 0 recipes/wip/tools/{ => other}/stellarium/recipe.toml | 0 recipes/wip/tools/{ => other}/stress-ng/recipe.toml | 0 recipes/wip/tools/{ => other}/succeed2ban-tui/recipe.toml | 0 recipes/wip/tools/{ => other}/sudo-rs/recipe.toml | 0 recipes/wip/tools/{ => other}/sued/recipe.toml | 0 recipes/wip/tools/{ => other}/svg2pdf/recipe.toml | 0 recipes/wip/tools/{ => other}/swc/recipe.toml | 0 recipes/wip/tools/{ => other}/sws/recipe.toml | 0 recipes/wip/tools/{ => other}/t-rec/recipe.toml | 0 recipes/wip/tools/{ => other}/tailspin/recipe.toml | 0 recipes/wip/tools/{ => other}/tarlz/recipe.toml | 0 recipes/wip/tools/{ => other}/task-maker-rs/recipe.toml | 0 recipes/wip/tools/{ => other}/taskserver/recipe.toml | 0 recipes/wip/tools/{ => other}/taskwarrior-tui/recipe.toml | 0 recipes/wip/tools/{ => other}/taskwarrior/recipe.toml | 0 recipes/wip/tools/{ => other}/tauro-monitor/recipe.toml | 0 recipes/wip/tools/{ => other}/tealdeer/recipe.toml | 0 recipes/wip/tools/{ => other}/teip/recipe.toml | 0 recipes/wip/tools/{ => other}/termimage/recipe.toml | 0 recipes/wip/tools/{ => other}/thwack/recipe.toml | 0 recipes/wip/tools/{ => other}/tin-summer/recipe.toml | 0 recipes/wip/tools/{ => other}/tinywasm/recipe.toml | 0 recipes/wip/tools/{ => other}/tl-rs/recipe.toml | 0 recipes/wip/tools/{ => other}/tock/recipe.toml | 0 recipes/wip/tools/{ => other}/toipe/recipe.toml | 0 recipes/wip/tools/{ => other}/topgrade/recipe.toml | 0 recipes/wip/tools/{ => other}/torrust-tracker/recipe.toml | 0 recipes/wip/tools/{ => other}/toybox/recipe.toml | 0 recipes/wip/tools/{ => other}/tp-note/recipe.toml | 0 recipes/wip/tools/{ => other}/tq/recipe.toml | 0 recipes/wip/tools/{ => other}/treq/recipe.toml | 0 recipes/wip/tools/{ => other}/tsuchita/recipe.toml | 0 recipes/wip/tools/{ => other}/tts-tui/recipe.toml | 0 recipes/wip/tools/{ => other}/ttyper/recipe.toml | 0 recipes/wip/tools/{ => other}/tui-journal/recipe.toml | 0 recipes/wip/tools/{ => other}/tvix/recipe.toml | 0 recipes/wip/tools/{ => other}/typst/recipe.toml | 0 recipes/wip/tools/{ => other}/uget/recipe.toml | 0 recipes/wip/tools/{ => other}/upscaler/recipe.toml | 0 recipes/wip/tools/{ => other}/upx/recipe.toml | 0 recipes/wip/tools/{ => other}/usbutils/recipe.toml | 0 recipes/wip/tools/{ => other}/util-linux/recipe.toml | 0 recipes/wip/tools/{ => other}/v86/recipe.toml | 0 recipes/wip/tools/{ => other}/vector/recipe.toml | 0 recipes/wip/tools/{ => other}/ventoy/recipe.toml | 0 recipes/wip/tools/{ => other}/vincenzo/recipe.toml | 0 recipes/wip/tools/{ => other}/vlc/recipe.toml | 0 recipes/wip/tools/{ => other}/vulkan-tools/recipe.toml | 0 recipes/wip/tools/{ => other}/watchexec/recipe.toml | 0 recipes/wip/tools/{ => other}/watchmen/recipe.toml | 0 recipes/wip/tools/{ => other}/wayback-rs/recipe.toml | 0 recipes/wip/tools/{ => other}/wayshot/recipe.toml | 0 recipes/wip/tools/{ => other}/wethr/recipe.toml | 0 recipes/wip/tools/{ => other}/weylus/recipe.toml | 0 recipes/wip/tools/{ => other}/wezterm/recipe.toml | 0 recipes/wip/tools/{ => other}/wick/recipe.toml | 0 recipes/wip/tools/{ => other}/wpaperd/recipe.toml | 0 recipes/wip/tools/{ => other}/xcp/recipe.toml | 0 recipes/wip/tools/{ => other}/xdg-utils/recipe.toml | 0 recipes/wip/tools/{ => other}/xdotool/recipe.toml | 0 recipes/wip/tools/{ => other}/xdvdfs/recipe.toml | 0 recipes/wip/tools/{ => other}/xh/recipe.toml | 0 recipes/wip/tools/{ => other}/xiu/recipe.toml | 0 recipes/wip/tools/{ => other}/xorriso/recipe.toml | 0 recipes/wip/tools/{ => other}/xsv/recipe.toml | 0 recipes/wip/tools/{ => other}/youtube-tui/recipe.toml | 0 recipes/wip/tools/{ => other}/zeitfetch/recipe.toml | 0 recipes/wip/tools/{ => other}/zellij/recipe.toml | 0 recipes/wip/tools/{ => other}/zet/recipe.toml | 0 recipes/wip/{ => tools}/science/alevin-fry/recipe.toml | 0 recipes/wip/{ => tools}/science/celestia-data/recipe.toml | 0 recipes/wip/{ => tools}/science/celestia/recipe.toml | 0 recipes/wip/{ => tools}/science/gromacs/recipe.toml | 0 recipes/wip/{ => tools}/science/mrbayes/recipe.toml | 0 recipes/wip/{ => tools}/science/oarfish/recipe.toml | 0 recipes/wip/{ => tools}/science/openfoam/recipe.toml | 0 recipes/wip/{ => tools}/science/openspace/recipe.toml | 0 recipes/wip/{ => tools}/science/piscem/recipe.toml | 0 recipes/wip/{ => tools}/science/polypolish/recipe.toml | 0 recipes/wip/{ => tools}/science/qmcpack/recipe.toml | 0 recipes/wip/{ => tools}/science/scidataflow/recipe.toml | 0 recipes/wip/{ => tools}/science/simpleaf/recipe.toml | 0 recipes/wip/{ => tools}/science/specfem2d/recipe.toml | 0 recipes/wip/{ => tools}/science/specfem3d-globe/recipe.toml | 0 recipes/wip/{ => tools}/science/specfem3d/recipe.toml | 0 recipes/wip/{ => tools}/science/vidoxide/recipe.toml | 0 recipes/wip/{ => tools}/security/airgorah/recipe.toml | 0 recipes/wip/{ => tools}/security/angryoxide/recipe.toml | 0 recipes/wip/{ => tools}/security/apbf/recipe.toml | 0 recipes/wip/{ => tools}/security/authoscope/recipe.toml | 0 recipes/wip/{ => tools}/security/binsec/recipe.toml | 0 recipes/wip/{ => tools}/security/burrow/recipe.toml | 0 recipes/wip/{ => tools}/security/capstone/recipe.toml | 0 recipes/wip/{ => tools}/security/cargo-scan/recipe.toml | 0 recipes/wip/{ => tools}/security/clamav/recipe.toml | 0 recipes/wip/{ => tools}/security/cotp/recipe.toml | 0 recipes/wip/{ => tools}/security/dfir-toolkit/recipe.toml | 0 recipes/wip/{ => tools}/security/feroxbuster/recipe.toml | 0 recipes/wip/{ => tools}/security/flawz/recipe.toml | 0 recipes/wip/{ => tools}/security/hashgood/recipe.toml | 0 recipes/wip/{ => tools}/security/john-the-ripper/recipe.toml | 0 recipes/wip/{ => tools}/security/kanha/recipe.toml | 0 recipes/wip/{ => tools}/security/keyscope/recipe.toml | 0 recipes/wip/{ => tools}/security/motus/recipe.toml | 0 recipes/wip/{ => tools}/security/nitrocli/recipe.toml | 0 recipes/wip/{ => tools}/security/openpgp-ca/recipe.toml | 0 recipes/wip/{ => tools}/security/plutus-rustus/recipe.toml | 0 recipes/wip/{ => tools}/security/recdec/recipe.toml | 0 recipes/wip/{ => tools}/security/rowhammer-test/recipe.toml | 0 recipes/wip/{ => tools}/security/rshijack/recipe.toml | 0 recipes/wip/{ => tools}/security/rustyvault/recipe.toml | 0 recipes/wip/{ => tools}/security/sn0int/recipe.toml | 0 recipes/wip/{ => tools}/security/sniffglue/recipe.toml | 0 recipes/wip/{ => tools}/security/sniffnet/recipe.toml | 0 recipes/wip/{ => tools}/security/sq/recipe.toml | 0 recipes/wip/{ => tools}/security/sqop/recipe.toml | 0 recipes/wip/{ => tools}/security/sqv/recipe.toml | 0 recipes/wip/{ => tools}/security/sss-cli/recipe.toml | 0 recipes/wip/{ => tools}/security/stegano/recipe.toml | 0 recipes/wip/{ => tools}/security/vagga/recipe.toml | 0 recipes/wip/{ => tools}/security/veldora/recipe.toml | 0 recipes/wip/{ => tools}/security/veracrypt/recipe.toml | 0 recipes/wip/{ => tools}/security/weggli/recipe.toml | 0 recipes/wip/{ => tools}/terminal/tab-rs/recipe.toml | 0 recipes/wip/{ => tools}/terminal/tmux/recipe.toml | 0 recipes/wip/{ => tools}/video/alass/recipe.toml | 0 recipes/wip/{ => tools}/video/anime-effects/recipe.toml | 0 recipes/wip/{ => tools}/video/av1an/recipe.toml | 0 recipes/wip/{ => tools}/video/avp/recipe.toml | 0 recipes/wip/{ => tools}/video/cheese/recipe.toml | 0 recipes/wip/{ => tools}/video/detect-scene-change/recipe.toml | 0 recipes/wip/{ => tools}/video/dovi-tool/recipe.toml | 0 recipes/wip/{ => tools}/video/glide/recipe.toml | 0 recipes/wip/{ => tools}/video/gopro-assembler/recipe.toml | 0 recipes/wip/{ => tools}/video/gyroflow/recipe.toml | 0 recipes/wip/{ => tools}/video/imdb-rename/recipe.toml | 0 recipes/wip/{ => tools}/video/jerry/recipe.toml | 0 recipes/wip/{ => tools}/video/kdenlive/recipe.toml | 0 recipes/wip/{ => tools}/video/lecturecut/recipe.toml | 0 recipes/wip/{ => tools}/video/lobster/recipe.toml | 0 recipes/wip/{ => tools}/video/mpv/recipe.toml | 0 recipes/wip/{ => tools}/video/pipeline/recipe.toml | 0 recipes/wip/{ => tools}/video/pitivi/recipe.toml | 0 recipes/wip/{ => tools}/video/smoothie-rs/recipe.toml | 0 recipes/wip/{ => tools}/video/snapshot/recipe.toml | 0 recipes/wip/{ => tools}/video/streamlib/recipe.toml | 0 recipes/wip/{ => tools}/video/sub-batch/recipe.toml | 0 recipes/wip/{ => tools}/video/teres/recipe.toml | 0 recipes/wip/{ => tools}/video/timelens/recipe.toml | 0 recipes/wip/{ => tools}/video/tplay/recipe.toml | 0 recipes/wip/{ => tools}/video/trimmeroni/recipe.toml | 0 recipes/wip/{ => tools}/video/vapoursynth/recipe.toml | 0 recipes/wip/{ => tools}/video/video4discord/recipe.toml | 0 recipes/wip/{ => tools}/video/vidmerger/recipe.toml | 0 recipes/wip/{ => tools}/video/yt-chanvids/recipe.toml | 0 615 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => tools}/archives/7-zip/recipe.toml (100%) rename recipes/wip/{ => tools}/archives/lz4/recipe.toml (100%) rename recipes/wip/{ => tools}/archives/lzip/recipe.toml (100%) rename recipes/wip/{ => tools}/archives/mlar/recipe.toml (100%) rename recipes/wip/{ => tools}/archives/orz/recipe.toml (100%) rename recipes/wip/{ => tools}/archives/ouch/recipe.toml (100%) rename recipes/wip/{ => tools}/archives/plzip/recipe.toml (100%) rename recipes/wip/{ => tools}/archives/unzrip/recipe.toml (100%) rename recipes/wip/{ => tools}/archives/zstd/recipe.toml (100%) rename recipes/wip/{ => tools}/finance/bitcoin/btc-vanity/recipe.toml (100%) rename recipes/wip/{ => tools}/finance/bitcoin/liana/recipe.toml (100%) rename recipes/wip/{ => tools}/finance/bitcoin/nakamoto-wallet/recipe.toml (100%) rename recipes/wip/{ => tools}/finance/bitcoin/nakatoshi/recipe.toml (100%) rename recipes/wip/{ => tools}/finance/bitcoin/ord/recipe.toml (100%) rename recipes/wip/{ => tools}/finance/bitcoin/pushtx/recipe.toml (100%) rename recipes/wip/{ => tools}/finance/bitcoin/rusty-blockparser/recipe.toml (100%) rename recipes/wip/{ => tools}/finance/donation/cargo-fund/recipe.toml (100%) rename recipes/wip/{ => tools}/finance/market/apcacli/recipe.toml (100%) rename recipes/wip/{ => tools}/finance/market/tick-rs/recipe.toml (100%) rename recipes/wip/{ => tools}/finance/monero/gupax/recipe.toml (100%) rename recipes/wip/{ => tools}/finance/monero/xmrig/recipe.toml (100%) rename recipes/wip/{ => tools}/finance/rex/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/editors/blender-lts/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/editors/blender/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/editors/gimp/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/editors/inkscape/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/editors/krita/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/editors/opentoonz/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/appleseed/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/c-ray/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/cmark/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/darktable/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/derive-rs/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/dify/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/dominant-colours/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/dssim/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/embree/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/flowbetween/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/gaffer/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/glou/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/gmic-qt/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/gmic/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/graphicsmagick/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/graphviz/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/halo/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/hdr10plus-tool/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/imagemagick/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/incompact3d/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/jxl-oxide/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/kantig/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/lpl/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/luxcorerender/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/matugen/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/ocrs/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/oculante/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/openscad/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/ospray-studio/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/ospray/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/paraview-data/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/paraview/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/pilka/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/pix-image-viewer/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/pixsort/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/rascii/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/rawtherapee/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/reve/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/rimage/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/satty/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/shadergarden/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/simp/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/smag/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/texel/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/toybrot/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/tungsten-renderer/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/upscaling/rscale2x/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/upscaling/upscaler-rs/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/viu/recipe.toml (100%) rename recipes/wip/{ => tools}/graphics/other/watch-stl/recipe.toml (100%) rename recipes/wip/{ => tools}/math/fend/recipe.toml (100%) rename recipes/wip/{ => tools}/math/kalc/recipe.toml (100%) rename recipes/wip/{ => tools}/math/kalker/recipe.toml (100%) rename recipes/wip/{ => tools}/math/numbat/recipe.toml (100%) rename recipes/wip/{ => tools}/math/primesieve/recipe.toml (100%) rename recipes/wip/{ => tools}/math/rink/recipe.toml (100%) rename recipes/wip/{ => tools}/net/anime-downloader/recipe.toml (100%) rename recipes/wip/{ => tools}/net/apache-httpd/recipe.toml (100%) rename recipes/wip/{ => tools}/net/apache-httpd/redox.patch (100%) rename recipes/wip/{ => tools}/net/arp-scanner/recipe.toml (100%) rename recipes/wip/{ => tools}/net/arti/recipe.toml (100%) rename recipes/wip/{ => tools}/net/attractorr/recipe.toml (100%) rename recipes/wip/{ => tools}/net/bita/recipe.toml (100%) rename recipes/wip/{ => tools}/net/bitcoin-core/recipe.toml (100%) rename recipes/wip/{ => tools}/net/bore/recipe.toml (100%) rename recipes/wip/{ => tools}/net/boringtun/recipe.toml (100%) rename recipes/wip/{ => tools}/net/celeste/recipe.toml (100%) rename recipes/wip/{ => tools}/net/cobalt/recipe.toml (100%) rename recipes/wip/{ => tools}/net/crab-dlna/recipe.toml (100%) rename recipes/wip/{ => tools}/net/devserver/recipe.toml (100%) rename recipes/wip/{ => tools}/net/dqy/recipe.toml (100%) rename recipes/wip/{ => tools}/net/drill/recipe.toml (100%) rename recipes/wip/{ => tools}/net/dufs/recipe.toml (100%) rename recipes/wip/{ => tools}/net/electrs/recipe.toml (100%) rename recipes/wip/{ => tools}/net/floresta/recipe.toml (100%) rename recipes/wip/{ => tools}/net/freenginx/recipe.toml (100%) rename recipes/wip/{ => tools}/net/guacamole-client/recipe.toml (100%) rename recipes/wip/{ => tools}/net/guacamole-server/recipe.toml (100%) rename recipes/wip/{ => tools}/net/halloy/recipe.toml (100%) rename recipes/wip/{ => tools}/net/havn/recipe.toml (100%) rename recipes/wip/{ => tools}/net/hinoki/recipe.toml (100%) rename recipes/wip/{ => tools}/net/http-server-rs/recipe.toml (100%) rename recipes/wip/{ => tools}/net/hurl/recipe.toml (100%) rename recipes/wip/{ => tools}/net/i2pd/recipe.toml (100%) rename recipes/wip/{ => tools}/net/impala/recipe.toml (100%) rename recipes/wip/{ => tools}/net/lagrange/recipe.toml (100%) rename recipes/wip/{ => tools}/net/lldap/recipe.toml (100%) rename recipes/wip/{ => tools}/net/lokinet/recipe.toml (100%) rename recipes/wip/{ => tools}/net/lychee/recipe.toml (100%) rename recipes/wip/{ => tools}/net/lynx/recipe.toml (100%) rename recipes/wip/{ => tools}/net/meli/recipe.toml (100%) rename recipes/wip/{ => tools}/net/miniupnpc/recipe.toml (100%) rename recipes/wip/{ => tools}/net/moonfire-nvr-server/recipe.toml (100%) rename recipes/wip/{ => tools}/net/netop/recipe.toml (100%) rename recipes/wip/{ => tools}/net/netscanner/recipe.toml (100%) rename recipes/wip/{ => tools}/net/nginx/recipe.toml (100%) rename recipes/wip/{ => tools}/net/nmap/recipe.toml (100%) rename recipes/wip/{ => tools}/net/nostr-rs-relay/recipe.toml (100%) rename recipes/wip/{ => tools}/net/nspr/recipe.toml (100%) rename recipes/wip/{ => tools}/net/nss-pem/recipe.toml (100%) rename recipes/wip/{ => tools}/net/nss/recipe.toml (100%) rename recipes/wip/{ => tools}/net/ntpd-rs/recipe.toml (100%) rename recipes/wip/{ => tools}/net/oha/recipe.toml (100%) rename recipes/wip/{ => tools}/net/realm/recipe.toml (100%) rename recipes/wip/{ => tools}/net/rqbit/recipe.toml (100%) rename recipes/wip/{ => tools}/net/rustdesk-server/recipe.toml (100%) rename recipes/wip/{ => tools}/net/rustscan/recipe.toml (100%) rename recipes/wip/{ => tools}/net/rustypaste/recipe.toml (100%) rename recipes/wip/{ => tools}/net/samba/answers.txt (100%) rename recipes/wip/{ => tools}/net/samba/recipe.toml (100%) rename recipes/wip/{ => tools}/net/simple-http-server/recipe.toml (100%) rename recipes/wip/{ => tools}/net/slumber/recipe.toml (100%) rename recipes/wip/{ => tools}/net/spadesx/recipe.toml (100%) rename recipes/wip/{ => tools}/net/speedtest-rs/recipe.toml (100%) rename recipes/wip/{ => tools}/net/spis/recipe.toml (100%) rename recipes/wip/{ => tools}/net/srsran-4g/recipe.toml (100%) rename recipes/wip/{ => tools}/net/srsran-project/recipe.toml (100%) rename recipes/wip/{ => tools}/net/synapse-bt/recipe.toml (100%) rename recipes/wip/{ => tools}/net/telegram-desktop/recipe.toml (100%) rename recipes/wip/{ => tools}/net/termchat/recipe.toml (100%) rename recipes/wip/{ => tools}/net/tiny/recipe.toml (100%) rename recipes/wip/{ => tools}/net/tobaru/recipe.toml (100%) rename recipes/wip/{ => tools}/net/tor-browser/recipe.toml (100%) rename recipes/wip/{ => tools}/net/tor/recipe.toml (100%) rename recipes/wip/{ => tools}/net/transmission/recipe.toml (100%) rename recipes/wip/{ => tools}/net/trippy/recipe.toml (100%) rename recipes/wip/{ => tools}/net/turn-rs/recipe.toml (100%) rename recipes/wip/{ => tools}/net/unbound/recipe.toml (100%) rename recipes/wip/{ => tools}/net/updns/recipe.toml (100%) rename recipes/wip/{ => tools}/net/varia/recipe.toml (100%) rename recipes/wip/{ => tools}/net/vimini/recipe.toml (100%) rename recipes/wip/{ => tools}/net/vopono/recipe.toml (100%) rename recipes/wip/{ => tools}/net/vpncloud/recipe.toml (100%) rename recipes/wip/{ => tools}/net/vsd/recipe.toml (100%) rename recipes/wip/{ => tools}/net/warp/recipe.toml (100%) rename recipes/wip/{ => tools}/net/wget/recipe.toml (100%) rename recipes/wip/{ => tools}/net/wget2/recipe.toml (100%) rename recipes/wip/{ => tools}/net/wireguard-rs/recipe.toml (100%) rename recipes/wip/{ => tools}/net/yaydl/recipe.toml (100%) rename recipes/wip/{ => tools}/net/yazi/recipe.toml (100%) rename recipes/wip/{ => tools}/net/zerotier/recipe.toml (100%) rename recipes/wip/{ai => tools}/nnx/recipe.toml (100%) rename recipes/wip/{ => tools}/office/libreoffice-dictionaries/recipe.toml (100%) rename recipes/wip/{ => tools}/office/libreoffice-translations/recipe.toml (100%) rename recipes/wip/{ => tools}/office/libreoffice/recipe.toml (100%) rename recipes/wip/tools/{ => other}/aeruginous/recipe.toml (100%) rename recipes/wip/tools/{ => other}/aim/recipe.toml (100%) rename recipes/wip/tools/{ => other}/alacritty/recipe.toml (100%) rename recipes/wip/tools/{ => other}/amp/recipe.toml (100%) rename recipes/wip/tools/{ => other}/ani-cli/recipe.toml (100%) rename recipes/wip/tools/{ => other}/ani-skip/recipe.toml (100%) rename recipes/wip/tools/{ => other}/aria2/recipe.toml (100%) rename recipes/wip/tools/{ => other}/arrow-tools/recipe.toml (100%) rename recipes/wip/tools/{ => other}/artem/recipe.toml (100%) rename recipes/wip/tools/{ => other}/ascii-gen/recipe.toml (100%) rename recipes/wip/tools/{ => other}/asciinema-rs/recipe.toml (100%) rename recipes/wip/tools/{ => other}/ast-grep/recipe.toml (100%) rename recipes/wip/tools/{ => other}/astc-encoder/recipe.toml (100%) rename recipes/wip/tools/{ => other}/astyle/recipe.toml (100%) rename recipes/wip/tools/{ => other}/atm-cli/recipe.toml (100%) rename recipes/wip/tools/{ => other}/atuin/recipe.toml (100%) rename recipes/wip/tools/{ => other}/b3sum/recipe.toml (100%) rename recipes/wip/tools/{ => other}/backhand/recipe.toml (100%) rename recipes/wip/tools/{ => other}/bacon/recipe.toml (100%) rename recipes/wip/tools/{ => other}/bacup/recipe.toml (100%) rename recipes/wip/tools/{ => other}/bandwhich/recipe.toml (100%) rename recipes/wip/tools/{ => other}/bartib/recipe.toml (100%) rename recipes/wip/tools/{ => other}/bat/recipe.toml (100%) rename recipes/wip/tools/{ => other}/battop/recipe.toml (100%) rename recipes/wip/tools/{ => other}/bdt/recipe.toml (100%) rename recipes/wip/tools/{ => other}/binserve/recipe.toml (100%) rename recipes/wip/tools/{ => other}/birdy/recipe.toml (100%) rename recipes/wip/tools/{ => other}/blockish-caca/recipe.toml (100%) rename recipes/wip/tools/{ => other}/bottles/recipe.toml (100%) rename recipes/wip/tools/{ => other}/bottom/recipe.toml (100%) rename recipes/wip/tools/{ => other}/broot/recipe.toml (100%) rename recipes/wip/tools/{ => other}/busybox/recipe.toml (100%) rename recipes/wip/tools/{ => other}/bvr/recipe.toml (100%) rename recipes/wip/tools/{ => other}/byteblitz/recipe.toml (100%) rename recipes/wip/tools/{ => other}/caesium/recipe.toml (100%) rename recipes/wip/tools/{ => other}/caligula/recipe.toml (100%) rename recipes/wip/tools/{ => other}/carbonyl/recipe.toml (100%) rename recipes/wip/tools/{ => other}/cava/recipe.toml (100%) rename recipes/wip/tools/{ => other}/cb/recipe.toml (100%) rename recipes/wip/tools/{ => other}/chafa/recipe.toml (100%) rename recipes/wip/tools/{ => other}/checkpwn/recipe.toml (100%) rename recipes/wip/tools/{ => other}/choose/recipe.toml (100%) rename recipes/wip/tools/{ => other}/chromazone/recipe.toml (100%) rename recipes/wip/tools/{ => other}/chuck/recipe.toml (100%) rename recipes/wip/tools/{ => other}/clipcat/recipe.toml (100%) rename recipes/wip/tools/{ => other}/clipshare-desktop/recipe.toml (100%) rename recipes/wip/tools/{ => other}/clipshare-server/recipe.toml (100%) rename recipes/wip/tools/{ => other}/clog-cli/recipe.toml (100%) rename recipes/wip/tools/{ => other}/conceal/recipe.toml (100%) rename recipes/wip/tools/{ => other}/conky/recipe.toml (100%) rename recipes/wip/tools/{ => other}/conserve/recipe.toml (100%) rename recipes/wip/tools/{ => other}/converseen/recipe.toml (100%) rename recipes/wip/tools/{ => other}/cosmic-player/manifest (100%) rename recipes/wip/tools/{ => other}/cosmic-player/recipe.toml (100%) rename recipes/wip/tools/{ => other}/counts/recipe.toml (100%) rename recipes/wip/tools/{ => other}/cpu-x/recipe.toml (100%) rename recipes/wip/tools/{ => other}/cpuminer-opt/recipe.toml (100%) rename recipes/wip/tools/{ => other}/crunchy-cli/recipe.toml (100%) rename recipes/wip/tools/{ => other}/csvlens/recipe.toml (100%) rename recipes/wip/tools/{ => other}/cube-timer/recipe.toml (100%) rename recipes/wip/tools/{ => other}/cute/recipe.toml (100%) rename recipes/wip/tools/{ => other}/cyme/recipe.toml (100%) rename recipes/wip/tools/{ => other}/czkawka/recipe.toml (100%) rename recipes/wip/tools/{ => other}/daktilo/recipe.toml (100%) rename recipes/wip/tools/{ => other}/dead-ringer/recipe.toml (100%) rename recipes/wip/tools/{ => other}/delta/recipe.toml (100%) rename recipes/wip/tools/{ => other}/desed/recipe.toml (100%) rename recipes/wip/tools/{ => other}/dfm/recipe.toml (100%) rename recipes/wip/tools/{ => other}/diffr/recipe.toml (100%) rename recipes/wip/tools/{ => other}/diffy/recipe.toml (100%) rename recipes/wip/tools/{ => other}/dim/recipe.toml (100%) rename recipes/wip/tools/{ => other}/diskonaut/recipe.toml (100%) rename recipes/wip/tools/{ => other}/dispatch/recipe.toml (100%) rename recipes/wip/tools/{ => other}/dog/recipe.toml (100%) rename recipes/wip/tools/{ => other}/dotr/recipe.toml (100%) rename recipes/wip/tools/{ => other}/dply/recipe.toml (100%) rename recipes/wip/tools/{ => other}/dprint/recipe.toml (100%) rename recipes/wip/tools/{ => other}/dra-cla/recipe.toml (100%) rename recipes/wip/tools/{ => other}/dua/recipe.toml (100%) rename recipes/wip/tools/{ => other}/dui/recipe.toml (100%) rename recipes/wip/tools/{ => other}/dura/recipe.toml (100%) rename recipes/wip/tools/{ => other}/dust/recipe.toml (100%) rename recipes/wip/tools/{ => other}/dutree/recipe.toml (100%) rename recipes/wip/tools/{ => other}/dysk/recipe.toml (100%) rename recipes/wip/tools/{ => other}/elfutils/recipe.toml (100%) rename recipes/wip/tools/{ => other}/emacs-nox/recipe.toml (100%) rename recipes/wip/tools/{ => other}/emacs-pgtk/recipe.toml (100%) rename recipes/wip/tools/{ => other}/emplace/recipe.toml (100%) rename recipes/wip/tools/{ => other}/enchant/recipe.toml (100%) rename recipes/wip/tools/{ => other}/envio/recipe.toml (100%) rename recipes/wip/tools/{ => other}/epub2txt/recipe.toml (100%) rename recipes/wip/tools/{ => other}/erdtree/recipe.toml (100%) rename recipes/wip/tools/{ => other}/espanso/recipe.toml (100%) rename recipes/wip/tools/{ => other}/eureka/recipe.toml (100%) rename recipes/wip/tools/{ => other}/eva/recipe.toml (100%) rename recipes/wip/tools/{ => other}/exa/recipe.toml (100%) rename recipes/wip/tools/{ => other}/exhaust/recipe.toml (100%) rename recipes/wip/tools/{ => other}/exuberant-ctags/recipe.toml (100%) rename recipes/wip/tools/{ => other}/eza/recipe.toml (100%) rename recipes/wip/tools/{ => other}/fclones/recipe.toml (100%) rename recipes/wip/tools/{ => other}/felix/recipe.toml (100%) rename recipes/wip/tools/{ => other}/fennec/recipe.toml (100%) rename recipes/wip/tools/{ => other}/ffizer/recipe.toml (100%) rename recipes/wip/tools/{ => other}/file/recipe.toml (100%) rename recipes/wip/tools/{ => other}/flameshot/recipe.toml (100%) rename recipes/wip/tools/{ => other}/flowtime/recipe.toml (100%) rename recipes/wip/tools/{ => other}/freshfetch/recipe.toml (100%) rename recipes/wip/tools/{ => other}/fselect/recipe.toml (100%) rename recipes/wip/tools/{ => other}/fuga/recipe.toml (100%) rename recipes/wip/tools/{ => other}/funzzy/recipe.toml (100%) rename recipes/wip/tools/{ => other}/fzf-make/recipe.toml (100%) rename recipes/wip/tools/{ => other}/gengo/recipe.toml (100%) rename recipes/wip/tools/{ => other}/germ/recipe.toml (100%) rename recipes/wip/tools/{ => other}/gifski/recipe.toml (100%) rename recipes/wip/tools/{ => other}/glicol-cli/recipe.toml (100%) rename recipes/wip/tools/{ => other}/glsl-viewer/recipe.toml (100%) rename recipes/wip/tools/{ => other}/gnu-radio/recipe.toml (100%) rename recipes/wip/tools/{ => other}/gnupg-lts/recipe.toml (100%) rename recipes/wip/tools/{ => other}/gnupg/recipe.toml (100%) rename recipes/wip/tools/{ => other}/gnuplot/recipe.toml (100%) rename recipes/wip/tools/{ => other}/goldboot/recipe.toml (100%) rename recipes/wip/tools/{ => other}/goxel/recipe.toml (100%) rename recipes/wip/tools/{ => other}/gpg-tui/recipe.toml (100%) rename recipes/wip/tools/{ => other}/gphoto2/recipe.toml (100%) rename recipes/wip/tools/{ => other}/gping/recipe.toml (100%) rename recipes/wip/tools/{ => other}/gptman/recipe.toml (100%) rename recipes/wip/tools/{ => other}/gptube-cli/recipe.toml (100%) rename recipes/wip/tools/{ => other}/grex/recipe.toml (100%) rename recipes/wip/tools/{ => other}/groff/recipe.toml (100%) rename recipes/wip/tools/{ => other}/guix/recipe.toml (100%) rename recipes/wip/tools/{ => other}/halp/recipe.toml (100%) rename recipes/wip/tools/{ => other}/hawkeye/recipe.toml (100%) rename recipes/wip/tools/{ => other}/haylxon/recipe.toml (100%) rename recipes/wip/tools/{ => other}/helix-gpui/recipe.toml (100%) rename recipes/wip/tools/{ => other}/hgrep/recipe.toml (100%) rename recipes/wip/tools/{ => other}/himalaya/recipe.toml (100%) rename recipes/wip/tools/{ => other}/hired/recipe.toml (100%) rename recipes/wip/tools/{ => other}/hl/recipe.toml (100%) rename recipes/wip/tools/{ => other}/hoard/recipe.toml (100%) rename recipes/wip/tools/{ => other}/horsetab/recipe.toml (100%) rename recipes/wip/tools/{ => other}/humphrey/recipe.toml (100%) rename recipes/wip/tools/{ => other}/hwatch/recipe.toml (100%) rename recipes/wip/tools/{ => other}/hx/recipe.toml (100%) rename recipes/wip/tools/{ => other}/hyperfine/recipe.toml (100%) rename recipes/wip/tools/{ => other}/iamb/recipe.toml (100%) rename recipes/wip/tools/{ => other}/igrep/recipe.toml (100%) rename recipes/wip/tools/{ => other}/imager/recipe.toml (100%) rename recipes/wip/tools/{ => other}/inlyne/recipe.toml (100%) rename recipes/wip/tools/{ => other}/innernet-cli/recipe.toml (100%) rename recipes/wip/tools/{ => other}/innernet-server/recipe.toml (100%) rename recipes/wip/tools/{ => other}/intelli-shell/recipe.toml (100%) rename recipes/wip/tools/{ => other}/interaction-calculus/recipe.toml (100%) rename recipes/wip/tools/{ => other}/intermodal/recipe.toml (100%) rename recipes/wip/tools/{ => other}/itstool/recipe.toml (100%) rename recipes/wip/tools/{ => other}/jirust/recipe.toml (100%) rename recipes/wip/tools/{ => other}/jless/recipe.toml (100%) rename recipes/wip/tools/{ => other}/joshuto/recipe.toml (100%) rename recipes/wip/tools/{ => other}/jql/recipe.toml (100%) rename recipes/wip/tools/{ => other}/just/recipe.toml (100%) rename recipes/wip/tools/{ => other}/kami/recipe.toml (100%) rename recipes/wip/tools/{ => other}/kanata/recipe.toml (100%) rename recipes/wip/tools/{ => other}/kbt/recipe.toml (100%) rename recipes/wip/tools/{ => other}/keepassxc/recipe.toml (100%) rename recipes/wip/tools/{ => other}/kibi/recipe.toml (100%) rename recipes/wip/tools/{ => other}/kodi/recipe.toml (100%) rename recipes/wip/tools/{ => other}/lan-mouse/recipe.toml (100%) rename recipes/wip/tools/{ => other}/lapce/recipe.toml (100%) rename recipes/wip/tools/{ => other}/lazy-etherscan/recipe.toml (100%) rename recipes/wip/tools/{ => other}/lcs-image-diff/recipe.toml (100%) rename recipes/wip/tools/{ => other}/lddtree-rs/recipe.toml (100%) rename recipes/wip/tools/{ => other}/legdur/recipe.toml (100%) rename recipes/wip/tools/{ => other}/lemmeknow/recipe.toml (100%) rename recipes/wip/tools/{ => other}/less/recipe.toml (100%) rename recipes/wip/tools/{ => other}/lines-rs/recipe.toml (100%) rename recipes/wip/tools/{ => other}/lineselect/recipe.toml (100%) rename recipes/wip/tools/{ => other}/logss/recipe.toml (100%) rename recipes/wip/tools/{ => other}/lowcharts/recipe.toml (100%) rename recipes/wip/tools/{ => other}/lsd/recipe.toml (100%) rename recipes/wip/tools/{ => other}/lsix/recipe.toml (100%) rename recipes/wip/tools/{ => other}/lucid/recipe.toml (100%) rename recipes/wip/tools/{ => other}/macchina/recipe.toml (100%) rename recipes/wip/tools/{ => other}/magic-wormhole-rs/recipe.toml (100%) rename recipes/wip/tools/{ => other}/mandy/recipe.toml (100%) rename recipes/wip/tools/{ => other}/mangohud/recipe.toml (100%) rename recipes/wip/tools/{ => other}/mask/recipe.toml (100%) rename recipes/wip/tools/{ => other}/matui/recipe.toml (100%) rename recipes/wip/tools/{ => other}/maze-tui/recipe.toml (100%) rename recipes/wip/tools/{ => other}/mcfly/recipe.toml (100%) rename recipes/wip/tools/{ => other}/mdbook/recipe.toml (100%) rename recipes/wip/tools/{ => other}/menyoki/recipe.toml (100%) rename recipes/wip/tools/{ => other}/mercurial/recipe.toml (100%) rename recipes/wip/tools/{ => other}/mhv/recipe.toml (100%) rename recipes/wip/tools/{ => other}/miniaudicle/recipe.toml (100%) rename recipes/wip/tools/{ => other}/minmon/recipe.toml (100%) rename recipes/wip/tools/{ => other}/mkisofs-rs/recipe.toml (100%) rename recipes/wip/tools/{ => other}/mosh/recipe.toml (100%) rename recipes/wip/tools/{ => other}/mprocs/recipe.toml (100%) rename recipes/wip/tools/{ => other}/navi/recipe.toml (100%) rename recipes/wip/tools/{ => other}/neofetch/recipe.toml (100%) rename recipes/wip/tools/{ => other}/neovide/recipe.toml (100%) rename recipes/wip/tools/{ => other}/neovim/recipe.toml (100%) rename recipes/wip/tools/{ => other}/news-rs/recipe.toml (100%) rename recipes/wip/tools/{ => other}/nickel/recipe.toml (100%) rename recipes/wip/tools/{ => other}/nix/recipe.toml (100%) rename recipes/wip/tools/{ => other}/nomad/recipe.toml (100%) rename recipes/wip/tools/{ => other}/notnow/recipe.toml (100%) rename recipes/wip/tools/{ => other}/objdiff/recipe.toml (100%) rename recipes/wip/tools/{ => other}/obs-studio/recipe.toml (100%) rename recipes/wip/tools/{ => other}/odilia/recipe.toml (100%) rename recipes/wip/tools/{ => other}/okteta/recipe.toml (100%) rename recipes/wip/tools/{ => other}/omega/recipe.toml (100%) rename recipes/wip/tools/{ => other}/onefetch/recipe.toml (100%) rename recipes/wip/tools/{ => other}/oranda/recipe.toml (100%) rename recipes/wip/tools/{ => other}/orchaldir-texture-generator/recipe.toml (100%) rename recipes/wip/tools/{ => other}/oxipng/recipe.toml (100%) rename recipes/wip/tools/{ => other}/parabolic/recipe.toml (100%) rename recipes/wip/tools/{ => other}/patchelf/recipe.toml (100%) rename recipes/wip/tools/{ => other}/pciutils/recipe.toml (100%) rename recipes/wip/tools/{ => other}/pdbview/recipe.toml (100%) rename recipes/wip/tools/{ => other}/pdu/recipe.toml (100%) rename recipes/wip/tools/{ => other}/pfetch-rs/recipe.toml (100%) rename recipes/wip/tools/{ => other}/pidgin/recipe.toml (100%) rename recipes/wip/tools/{ => other}/pipr/recipe.toml (100%) rename recipes/wip/tools/{ => other}/pixcil/recipe.toml (100%) rename recipes/wip/tools/{ => other}/pixelsort/recipe.toml (100%) rename recipes/wip/tools/{ => other}/please/recipe.toml (100%) rename recipes/wip/tools/{ => other}/pomky/recipe.toml (100%) rename recipes/wip/tools/{ => other}/porsmo/recipe.toml (100%) rename recipes/wip/tools/{ => other}/posixutils-rs/recipe.toml (100%) rename recipes/wip/tools/{ => other}/potrace/recipe.toml (100%) rename recipes/wip/tools/{ => other}/presenterm/recipe.toml (100%) rename recipes/wip/tools/{ => other}/process-viewer/recipe.toml (100%) rename recipes/wip/tools/{ => other}/procs/recipe.toml (100%) rename recipes/wip/tools/{ => other}/pueue/recipe.toml (100%) rename recipes/wip/tools/{ => other}/qalculate-gtk/recipe.toml (100%) rename recipes/wip/tools/{ => other}/qrrs/recipe.toml (100%) rename recipes/wip/tools/{ => other}/qrtool/recipe.toml (100%) rename recipes/wip/tools/{ => other}/qv/recipe.toml (100%) rename recipes/wip/tools/{ => other}/rage/recipe.toml (100%) rename recipes/wip/tools/{ => other}/rana/recipe.toml (100%) rename recipes/wip/tools/{ => other}/rargs/recipe.toml (100%) rename recipes/wip/tools/{ => other}/rclone/recipe.toml (100%) rename recipes/wip/tools/{ => other}/remmina/recipe.toml (100%) rename recipes/wip/tools/{ => other}/repgrep/recipe.toml (100%) rename recipes/wip/tools/{ => other}/restic/recipe.toml (100%) rename recipes/wip/tools/{ => other}/rfetch/recipe.toml (100%) rename recipes/wip/tools/{ => other}/rfz/recipe.toml (100%) rename recipes/wip/tools/{ => other}/rioterm/recipe.toml (100%) rename recipes/wip/tools/{ => other}/rip/recipe.toml (100%) rename recipes/wip/tools/{ => other}/ripasso/recipe.toml (100%) rename recipes/wip/tools/{ => other}/ripgrep-all/recipe.toml (100%) rename recipes/wip/tools/{ => other}/ripsecrets/recipe.toml (100%) rename recipes/wip/tools/{ => other}/rix/recipe.toml (100%) rename recipes/wip/tools/{ => other}/rnr/recipe.toml (100%) rename recipes/wip/tools/{ => other}/rq/recipe.toml (100%) rename recipes/wip/tools/{ => other}/rsftch/recipe.toml (100%) rename recipes/wip/tools/{ => other}/rsync/recipe.toml (100%) rename recipes/wip/tools/{ => other}/rtorrent/recipe.toml (100%) rename recipes/wip/tools/{ => other}/ruke/recipe.toml (100%) rename recipes/wip/tools/{ => other}/run/recipe.toml (100%) rename recipes/wip/tools/{ => other}/ruplacer/recipe.toml (100%) rename recipes/wip/tools/{ => other}/rustlings/recipe.toml (100%) rename recipes/wip/tools/{ => other}/rusty-krab-manager/recipe.toml (100%) rename recipes/wip/tools/{ => other}/rusty-psn-cli/recipe.toml (100%) rename recipes/wip/tools/{ => other}/rusty-psn-gui/recipe.toml (100%) rename recipes/wip/tools/{ => other}/rusty/recipe.toml (100%) rename recipes/wip/tools/{ => other}/rusync/recipe.toml (100%) rename recipes/wip/tools/{ => other}/sad/recipe.toml (100%) rename recipes/wip/tools/{ => other}/sam/recipe.toml (100%) rename recipes/wip/tools/{ => other}/scribus/recipe.toml (100%) rename recipes/wip/tools/{ => other}/scrying/recipe.toml (100%) rename recipes/wip/tools/{ => other}/sd/recipe.toml (100%) rename recipes/wip/tools/{ => other}/shd/recipe.toml (100%) rename recipes/wip/tools/{ => other}/shellfirm/recipe.toml (100%) rename recipes/wip/tools/{ => other}/shokunin/recipe.toml (100%) rename recipes/wip/tools/{ => other}/sig/recipe.toml (100%) rename recipes/wip/tools/{ => other}/sigi/recipe.toml (100%) rename recipes/wip/tools/{ => other}/simplemoji/recipe.toml (100%) rename recipes/wip/tools/{ => other}/skim/recipe.toml (100%) rename recipes/wip/tools/{ => other}/skyspell/recipe.toml (100%) rename recipes/wip/tools/{ => other}/smartmontools/recipe.toml (100%) rename recipes/wip/tools/{ => other}/snappy-rs/recipe.toml (100%) rename recipes/wip/tools/{ => other}/spacer/recipe.toml (100%) rename recipes/wip/tools/{ => other}/spidey/recipe.toml (100%) rename recipes/wip/tools/{ => other}/sprinkles/recipe.toml (100%) rename recipes/wip/tools/{ => other}/sshx/recipe.toml (100%) rename recipes/wip/tools/{ => other}/starship/recipe.toml (100%) rename recipes/wip/tools/{ => other}/stellarium/recipe.toml (100%) rename recipes/wip/tools/{ => other}/stress-ng/recipe.toml (100%) rename recipes/wip/tools/{ => other}/succeed2ban-tui/recipe.toml (100%) rename recipes/wip/tools/{ => other}/sudo-rs/recipe.toml (100%) rename recipes/wip/tools/{ => other}/sued/recipe.toml (100%) rename recipes/wip/tools/{ => other}/svg2pdf/recipe.toml (100%) rename recipes/wip/tools/{ => other}/swc/recipe.toml (100%) rename recipes/wip/tools/{ => other}/sws/recipe.toml (100%) rename recipes/wip/tools/{ => other}/t-rec/recipe.toml (100%) rename recipes/wip/tools/{ => other}/tailspin/recipe.toml (100%) rename recipes/wip/tools/{ => other}/tarlz/recipe.toml (100%) rename recipes/wip/tools/{ => other}/task-maker-rs/recipe.toml (100%) rename recipes/wip/tools/{ => other}/taskserver/recipe.toml (100%) rename recipes/wip/tools/{ => other}/taskwarrior-tui/recipe.toml (100%) rename recipes/wip/tools/{ => other}/taskwarrior/recipe.toml (100%) rename recipes/wip/tools/{ => other}/tauro-monitor/recipe.toml (100%) rename recipes/wip/tools/{ => other}/tealdeer/recipe.toml (100%) rename recipes/wip/tools/{ => other}/teip/recipe.toml (100%) rename recipes/wip/tools/{ => other}/termimage/recipe.toml (100%) rename recipes/wip/tools/{ => other}/thwack/recipe.toml (100%) rename recipes/wip/tools/{ => other}/tin-summer/recipe.toml (100%) rename recipes/wip/tools/{ => other}/tinywasm/recipe.toml (100%) rename recipes/wip/tools/{ => other}/tl-rs/recipe.toml (100%) rename recipes/wip/tools/{ => other}/tock/recipe.toml (100%) rename recipes/wip/tools/{ => other}/toipe/recipe.toml (100%) rename recipes/wip/tools/{ => other}/topgrade/recipe.toml (100%) rename recipes/wip/tools/{ => other}/torrust-tracker/recipe.toml (100%) rename recipes/wip/tools/{ => other}/toybox/recipe.toml (100%) rename recipes/wip/tools/{ => other}/tp-note/recipe.toml (100%) rename recipes/wip/tools/{ => other}/tq/recipe.toml (100%) rename recipes/wip/tools/{ => other}/treq/recipe.toml (100%) rename recipes/wip/tools/{ => other}/tsuchita/recipe.toml (100%) rename recipes/wip/tools/{ => other}/tts-tui/recipe.toml (100%) rename recipes/wip/tools/{ => other}/ttyper/recipe.toml (100%) rename recipes/wip/tools/{ => other}/tui-journal/recipe.toml (100%) rename recipes/wip/tools/{ => other}/tvix/recipe.toml (100%) rename recipes/wip/tools/{ => other}/typst/recipe.toml (100%) rename recipes/wip/tools/{ => other}/uget/recipe.toml (100%) rename recipes/wip/tools/{ => other}/upscaler/recipe.toml (100%) rename recipes/wip/tools/{ => other}/upx/recipe.toml (100%) rename recipes/wip/tools/{ => other}/usbutils/recipe.toml (100%) rename recipes/wip/tools/{ => other}/util-linux/recipe.toml (100%) rename recipes/wip/tools/{ => other}/v86/recipe.toml (100%) rename recipes/wip/tools/{ => other}/vector/recipe.toml (100%) rename recipes/wip/tools/{ => other}/ventoy/recipe.toml (100%) rename recipes/wip/tools/{ => other}/vincenzo/recipe.toml (100%) rename recipes/wip/tools/{ => other}/vlc/recipe.toml (100%) rename recipes/wip/tools/{ => other}/vulkan-tools/recipe.toml (100%) rename recipes/wip/tools/{ => other}/watchexec/recipe.toml (100%) rename recipes/wip/tools/{ => other}/watchmen/recipe.toml (100%) rename recipes/wip/tools/{ => other}/wayback-rs/recipe.toml (100%) rename recipes/wip/tools/{ => other}/wayshot/recipe.toml (100%) rename recipes/wip/tools/{ => other}/wethr/recipe.toml (100%) rename recipes/wip/tools/{ => other}/weylus/recipe.toml (100%) rename recipes/wip/tools/{ => other}/wezterm/recipe.toml (100%) rename recipes/wip/tools/{ => other}/wick/recipe.toml (100%) rename recipes/wip/tools/{ => other}/wpaperd/recipe.toml (100%) rename recipes/wip/tools/{ => other}/xcp/recipe.toml (100%) rename recipes/wip/tools/{ => other}/xdg-utils/recipe.toml (100%) rename recipes/wip/tools/{ => other}/xdotool/recipe.toml (100%) rename recipes/wip/tools/{ => other}/xdvdfs/recipe.toml (100%) rename recipes/wip/tools/{ => other}/xh/recipe.toml (100%) rename recipes/wip/tools/{ => other}/xiu/recipe.toml (100%) rename recipes/wip/tools/{ => other}/xorriso/recipe.toml (100%) rename recipes/wip/tools/{ => other}/xsv/recipe.toml (100%) rename recipes/wip/tools/{ => other}/youtube-tui/recipe.toml (100%) rename recipes/wip/tools/{ => other}/zeitfetch/recipe.toml (100%) rename recipes/wip/tools/{ => other}/zellij/recipe.toml (100%) rename recipes/wip/tools/{ => other}/zet/recipe.toml (100%) rename recipes/wip/{ => tools}/science/alevin-fry/recipe.toml (100%) rename recipes/wip/{ => tools}/science/celestia-data/recipe.toml (100%) rename recipes/wip/{ => tools}/science/celestia/recipe.toml (100%) rename recipes/wip/{ => tools}/science/gromacs/recipe.toml (100%) rename recipes/wip/{ => tools}/science/mrbayes/recipe.toml (100%) rename recipes/wip/{ => tools}/science/oarfish/recipe.toml (100%) rename recipes/wip/{ => tools}/science/openfoam/recipe.toml (100%) rename recipes/wip/{ => tools}/science/openspace/recipe.toml (100%) rename recipes/wip/{ => tools}/science/piscem/recipe.toml (100%) rename recipes/wip/{ => tools}/science/polypolish/recipe.toml (100%) rename recipes/wip/{ => tools}/science/qmcpack/recipe.toml (100%) rename recipes/wip/{ => tools}/science/scidataflow/recipe.toml (100%) rename recipes/wip/{ => tools}/science/simpleaf/recipe.toml (100%) rename recipes/wip/{ => tools}/science/specfem2d/recipe.toml (100%) rename recipes/wip/{ => tools}/science/specfem3d-globe/recipe.toml (100%) rename recipes/wip/{ => tools}/science/specfem3d/recipe.toml (100%) rename recipes/wip/{ => tools}/science/vidoxide/recipe.toml (100%) rename recipes/wip/{ => tools}/security/airgorah/recipe.toml (100%) rename recipes/wip/{ => tools}/security/angryoxide/recipe.toml (100%) rename recipes/wip/{ => tools}/security/apbf/recipe.toml (100%) rename recipes/wip/{ => tools}/security/authoscope/recipe.toml (100%) rename recipes/wip/{ => tools}/security/binsec/recipe.toml (100%) rename recipes/wip/{ => tools}/security/burrow/recipe.toml (100%) rename recipes/wip/{ => tools}/security/capstone/recipe.toml (100%) rename recipes/wip/{ => tools}/security/cargo-scan/recipe.toml (100%) rename recipes/wip/{ => tools}/security/clamav/recipe.toml (100%) rename recipes/wip/{ => tools}/security/cotp/recipe.toml (100%) rename recipes/wip/{ => tools}/security/dfir-toolkit/recipe.toml (100%) rename recipes/wip/{ => tools}/security/feroxbuster/recipe.toml (100%) rename recipes/wip/{ => tools}/security/flawz/recipe.toml (100%) rename recipes/wip/{ => tools}/security/hashgood/recipe.toml (100%) rename recipes/wip/{ => tools}/security/john-the-ripper/recipe.toml (100%) rename recipes/wip/{ => tools}/security/kanha/recipe.toml (100%) rename recipes/wip/{ => tools}/security/keyscope/recipe.toml (100%) rename recipes/wip/{ => tools}/security/motus/recipe.toml (100%) rename recipes/wip/{ => tools}/security/nitrocli/recipe.toml (100%) rename recipes/wip/{ => tools}/security/openpgp-ca/recipe.toml (100%) rename recipes/wip/{ => tools}/security/plutus-rustus/recipe.toml (100%) rename recipes/wip/{ => tools}/security/recdec/recipe.toml (100%) rename recipes/wip/{ => tools}/security/rowhammer-test/recipe.toml (100%) rename recipes/wip/{ => tools}/security/rshijack/recipe.toml (100%) rename recipes/wip/{ => tools}/security/rustyvault/recipe.toml (100%) rename recipes/wip/{ => tools}/security/sn0int/recipe.toml (100%) rename recipes/wip/{ => tools}/security/sniffglue/recipe.toml (100%) rename recipes/wip/{ => tools}/security/sniffnet/recipe.toml (100%) rename recipes/wip/{ => tools}/security/sq/recipe.toml (100%) rename recipes/wip/{ => tools}/security/sqop/recipe.toml (100%) rename recipes/wip/{ => tools}/security/sqv/recipe.toml (100%) rename recipes/wip/{ => tools}/security/sss-cli/recipe.toml (100%) rename recipes/wip/{ => tools}/security/stegano/recipe.toml (100%) rename recipes/wip/{ => tools}/security/vagga/recipe.toml (100%) rename recipes/wip/{ => tools}/security/veldora/recipe.toml (100%) rename recipes/wip/{ => tools}/security/veracrypt/recipe.toml (100%) rename recipes/wip/{ => tools}/security/weggli/recipe.toml (100%) rename recipes/wip/{ => tools}/terminal/tab-rs/recipe.toml (100%) rename recipes/wip/{ => tools}/terminal/tmux/recipe.toml (100%) rename recipes/wip/{ => tools}/video/alass/recipe.toml (100%) rename recipes/wip/{ => tools}/video/anime-effects/recipe.toml (100%) rename recipes/wip/{ => tools}/video/av1an/recipe.toml (100%) rename recipes/wip/{ => tools}/video/avp/recipe.toml (100%) rename recipes/wip/{ => tools}/video/cheese/recipe.toml (100%) rename recipes/wip/{ => tools}/video/detect-scene-change/recipe.toml (100%) rename recipes/wip/{ => tools}/video/dovi-tool/recipe.toml (100%) rename recipes/wip/{ => tools}/video/glide/recipe.toml (100%) rename recipes/wip/{ => tools}/video/gopro-assembler/recipe.toml (100%) rename recipes/wip/{ => tools}/video/gyroflow/recipe.toml (100%) rename recipes/wip/{ => tools}/video/imdb-rename/recipe.toml (100%) rename recipes/wip/{ => tools}/video/jerry/recipe.toml (100%) rename recipes/wip/{ => tools}/video/kdenlive/recipe.toml (100%) rename recipes/wip/{ => tools}/video/lecturecut/recipe.toml (100%) rename recipes/wip/{ => tools}/video/lobster/recipe.toml (100%) rename recipes/wip/{ => tools}/video/mpv/recipe.toml (100%) rename recipes/wip/{ => tools}/video/pipeline/recipe.toml (100%) rename recipes/wip/{ => tools}/video/pitivi/recipe.toml (100%) rename recipes/wip/{ => tools}/video/smoothie-rs/recipe.toml (100%) rename recipes/wip/{ => tools}/video/snapshot/recipe.toml (100%) rename recipes/wip/{ => tools}/video/streamlib/recipe.toml (100%) rename recipes/wip/{ => tools}/video/sub-batch/recipe.toml (100%) rename recipes/wip/{ => tools}/video/teres/recipe.toml (100%) rename recipes/wip/{ => tools}/video/timelens/recipe.toml (100%) rename recipes/wip/{ => tools}/video/tplay/recipe.toml (100%) rename recipes/wip/{ => tools}/video/trimmeroni/recipe.toml (100%) rename recipes/wip/{ => tools}/video/vapoursynth/recipe.toml (100%) rename recipes/wip/{ => tools}/video/video4discord/recipe.toml (100%) rename recipes/wip/{ => tools}/video/vidmerger/recipe.toml (100%) rename recipes/wip/{ => tools}/video/yt-chanvids/recipe.toml (100%) diff --git a/recipes/wip/archives/7-zip/recipe.toml b/recipes/wip/tools/archives/7-zip/recipe.toml similarity index 100% rename from recipes/wip/archives/7-zip/recipe.toml rename to recipes/wip/tools/archives/7-zip/recipe.toml diff --git a/recipes/wip/archives/lz4/recipe.toml b/recipes/wip/tools/archives/lz4/recipe.toml similarity index 100% rename from recipes/wip/archives/lz4/recipe.toml rename to recipes/wip/tools/archives/lz4/recipe.toml diff --git a/recipes/wip/archives/lzip/recipe.toml b/recipes/wip/tools/archives/lzip/recipe.toml similarity index 100% rename from recipes/wip/archives/lzip/recipe.toml rename to recipes/wip/tools/archives/lzip/recipe.toml diff --git a/recipes/wip/archives/mlar/recipe.toml b/recipes/wip/tools/archives/mlar/recipe.toml similarity index 100% rename from recipes/wip/archives/mlar/recipe.toml rename to recipes/wip/tools/archives/mlar/recipe.toml diff --git a/recipes/wip/archives/orz/recipe.toml b/recipes/wip/tools/archives/orz/recipe.toml similarity index 100% rename from recipes/wip/archives/orz/recipe.toml rename to recipes/wip/tools/archives/orz/recipe.toml diff --git a/recipes/wip/archives/ouch/recipe.toml b/recipes/wip/tools/archives/ouch/recipe.toml similarity index 100% rename from recipes/wip/archives/ouch/recipe.toml rename to recipes/wip/tools/archives/ouch/recipe.toml diff --git a/recipes/wip/archives/plzip/recipe.toml b/recipes/wip/tools/archives/plzip/recipe.toml similarity index 100% rename from recipes/wip/archives/plzip/recipe.toml rename to recipes/wip/tools/archives/plzip/recipe.toml diff --git a/recipes/wip/archives/unzrip/recipe.toml b/recipes/wip/tools/archives/unzrip/recipe.toml similarity index 100% rename from recipes/wip/archives/unzrip/recipe.toml rename to recipes/wip/tools/archives/unzrip/recipe.toml diff --git a/recipes/wip/archives/zstd/recipe.toml b/recipes/wip/tools/archives/zstd/recipe.toml similarity index 100% rename from recipes/wip/archives/zstd/recipe.toml rename to recipes/wip/tools/archives/zstd/recipe.toml diff --git a/recipes/wip/finance/bitcoin/btc-vanity/recipe.toml b/recipes/wip/tools/finance/bitcoin/btc-vanity/recipe.toml similarity index 100% rename from recipes/wip/finance/bitcoin/btc-vanity/recipe.toml rename to recipes/wip/tools/finance/bitcoin/btc-vanity/recipe.toml diff --git a/recipes/wip/finance/bitcoin/liana/recipe.toml b/recipes/wip/tools/finance/bitcoin/liana/recipe.toml similarity index 100% rename from recipes/wip/finance/bitcoin/liana/recipe.toml rename to recipes/wip/tools/finance/bitcoin/liana/recipe.toml diff --git a/recipes/wip/finance/bitcoin/nakamoto-wallet/recipe.toml b/recipes/wip/tools/finance/bitcoin/nakamoto-wallet/recipe.toml similarity index 100% rename from recipes/wip/finance/bitcoin/nakamoto-wallet/recipe.toml rename to recipes/wip/tools/finance/bitcoin/nakamoto-wallet/recipe.toml diff --git a/recipes/wip/finance/bitcoin/nakatoshi/recipe.toml b/recipes/wip/tools/finance/bitcoin/nakatoshi/recipe.toml similarity index 100% rename from recipes/wip/finance/bitcoin/nakatoshi/recipe.toml rename to recipes/wip/tools/finance/bitcoin/nakatoshi/recipe.toml diff --git a/recipes/wip/finance/bitcoin/ord/recipe.toml b/recipes/wip/tools/finance/bitcoin/ord/recipe.toml similarity index 100% rename from recipes/wip/finance/bitcoin/ord/recipe.toml rename to recipes/wip/tools/finance/bitcoin/ord/recipe.toml diff --git a/recipes/wip/finance/bitcoin/pushtx/recipe.toml b/recipes/wip/tools/finance/bitcoin/pushtx/recipe.toml similarity index 100% rename from recipes/wip/finance/bitcoin/pushtx/recipe.toml rename to recipes/wip/tools/finance/bitcoin/pushtx/recipe.toml diff --git a/recipes/wip/finance/bitcoin/rusty-blockparser/recipe.toml b/recipes/wip/tools/finance/bitcoin/rusty-blockparser/recipe.toml similarity index 100% rename from recipes/wip/finance/bitcoin/rusty-blockparser/recipe.toml rename to recipes/wip/tools/finance/bitcoin/rusty-blockparser/recipe.toml diff --git a/recipes/wip/finance/donation/cargo-fund/recipe.toml b/recipes/wip/tools/finance/donation/cargo-fund/recipe.toml similarity index 100% rename from recipes/wip/finance/donation/cargo-fund/recipe.toml rename to recipes/wip/tools/finance/donation/cargo-fund/recipe.toml diff --git a/recipes/wip/finance/market/apcacli/recipe.toml b/recipes/wip/tools/finance/market/apcacli/recipe.toml similarity index 100% rename from recipes/wip/finance/market/apcacli/recipe.toml rename to recipes/wip/tools/finance/market/apcacli/recipe.toml diff --git a/recipes/wip/finance/market/tick-rs/recipe.toml b/recipes/wip/tools/finance/market/tick-rs/recipe.toml similarity index 100% rename from recipes/wip/finance/market/tick-rs/recipe.toml rename to recipes/wip/tools/finance/market/tick-rs/recipe.toml diff --git a/recipes/wip/finance/monero/gupax/recipe.toml b/recipes/wip/tools/finance/monero/gupax/recipe.toml similarity index 100% rename from recipes/wip/finance/monero/gupax/recipe.toml rename to recipes/wip/tools/finance/monero/gupax/recipe.toml diff --git a/recipes/wip/finance/monero/xmrig/recipe.toml b/recipes/wip/tools/finance/monero/xmrig/recipe.toml similarity index 100% rename from recipes/wip/finance/monero/xmrig/recipe.toml rename to recipes/wip/tools/finance/monero/xmrig/recipe.toml diff --git a/recipes/wip/finance/rex/recipe.toml b/recipes/wip/tools/finance/rex/recipe.toml similarity index 100% rename from recipes/wip/finance/rex/recipe.toml rename to recipes/wip/tools/finance/rex/recipe.toml diff --git a/recipes/wip/graphics/editors/blender-lts/recipe.toml b/recipes/wip/tools/graphics/editors/blender-lts/recipe.toml similarity index 100% rename from recipes/wip/graphics/editors/blender-lts/recipe.toml rename to recipes/wip/tools/graphics/editors/blender-lts/recipe.toml diff --git a/recipes/wip/graphics/editors/blender/recipe.toml b/recipes/wip/tools/graphics/editors/blender/recipe.toml similarity index 100% rename from recipes/wip/graphics/editors/blender/recipe.toml rename to recipes/wip/tools/graphics/editors/blender/recipe.toml diff --git a/recipes/wip/graphics/editors/gimp/recipe.toml b/recipes/wip/tools/graphics/editors/gimp/recipe.toml similarity index 100% rename from recipes/wip/graphics/editors/gimp/recipe.toml rename to recipes/wip/tools/graphics/editors/gimp/recipe.toml diff --git a/recipes/wip/graphics/editors/inkscape/recipe.toml b/recipes/wip/tools/graphics/editors/inkscape/recipe.toml similarity index 100% rename from recipes/wip/graphics/editors/inkscape/recipe.toml rename to recipes/wip/tools/graphics/editors/inkscape/recipe.toml diff --git a/recipes/wip/graphics/editors/krita/recipe.toml b/recipes/wip/tools/graphics/editors/krita/recipe.toml similarity index 100% rename from recipes/wip/graphics/editors/krita/recipe.toml rename to recipes/wip/tools/graphics/editors/krita/recipe.toml diff --git a/recipes/wip/graphics/editors/opentoonz/recipe.toml b/recipes/wip/tools/graphics/editors/opentoonz/recipe.toml similarity index 100% rename from recipes/wip/graphics/editors/opentoonz/recipe.toml rename to recipes/wip/tools/graphics/editors/opentoonz/recipe.toml diff --git a/recipes/wip/graphics/other/appleseed/recipe.toml b/recipes/wip/tools/graphics/other/appleseed/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/appleseed/recipe.toml rename to recipes/wip/tools/graphics/other/appleseed/recipe.toml diff --git a/recipes/wip/graphics/other/c-ray/recipe.toml b/recipes/wip/tools/graphics/other/c-ray/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/c-ray/recipe.toml rename to recipes/wip/tools/graphics/other/c-ray/recipe.toml diff --git a/recipes/wip/graphics/other/cmark/recipe.toml b/recipes/wip/tools/graphics/other/cmark/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/cmark/recipe.toml rename to recipes/wip/tools/graphics/other/cmark/recipe.toml diff --git a/recipes/wip/graphics/other/darktable/recipe.toml b/recipes/wip/tools/graphics/other/darktable/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/darktable/recipe.toml rename to recipes/wip/tools/graphics/other/darktable/recipe.toml diff --git a/recipes/wip/graphics/other/derive-rs/recipe.toml b/recipes/wip/tools/graphics/other/derive-rs/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/derive-rs/recipe.toml rename to recipes/wip/tools/graphics/other/derive-rs/recipe.toml diff --git a/recipes/wip/graphics/other/dify/recipe.toml b/recipes/wip/tools/graphics/other/dify/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/dify/recipe.toml rename to recipes/wip/tools/graphics/other/dify/recipe.toml diff --git a/recipes/wip/graphics/other/dominant-colours/recipe.toml b/recipes/wip/tools/graphics/other/dominant-colours/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/dominant-colours/recipe.toml rename to recipes/wip/tools/graphics/other/dominant-colours/recipe.toml diff --git a/recipes/wip/graphics/other/dssim/recipe.toml b/recipes/wip/tools/graphics/other/dssim/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/dssim/recipe.toml rename to recipes/wip/tools/graphics/other/dssim/recipe.toml diff --git a/recipes/wip/graphics/other/embree/recipe.toml b/recipes/wip/tools/graphics/other/embree/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/embree/recipe.toml rename to recipes/wip/tools/graphics/other/embree/recipe.toml diff --git a/recipes/wip/graphics/other/flowbetween/recipe.toml b/recipes/wip/tools/graphics/other/flowbetween/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/flowbetween/recipe.toml rename to recipes/wip/tools/graphics/other/flowbetween/recipe.toml diff --git a/recipes/wip/graphics/other/gaffer/recipe.toml b/recipes/wip/tools/graphics/other/gaffer/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/gaffer/recipe.toml rename to recipes/wip/tools/graphics/other/gaffer/recipe.toml diff --git a/recipes/wip/graphics/other/glou/recipe.toml b/recipes/wip/tools/graphics/other/glou/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/glou/recipe.toml rename to recipes/wip/tools/graphics/other/glou/recipe.toml diff --git a/recipes/wip/graphics/other/gmic-qt/recipe.toml b/recipes/wip/tools/graphics/other/gmic-qt/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/gmic-qt/recipe.toml rename to recipes/wip/tools/graphics/other/gmic-qt/recipe.toml diff --git a/recipes/wip/graphics/other/gmic/recipe.toml b/recipes/wip/tools/graphics/other/gmic/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/gmic/recipe.toml rename to recipes/wip/tools/graphics/other/gmic/recipe.toml diff --git a/recipes/wip/graphics/other/graphicsmagick/recipe.toml b/recipes/wip/tools/graphics/other/graphicsmagick/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/graphicsmagick/recipe.toml rename to recipes/wip/tools/graphics/other/graphicsmagick/recipe.toml diff --git a/recipes/wip/graphics/other/graphviz/recipe.toml b/recipes/wip/tools/graphics/other/graphviz/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/graphviz/recipe.toml rename to recipes/wip/tools/graphics/other/graphviz/recipe.toml diff --git a/recipes/wip/graphics/other/halo/recipe.toml b/recipes/wip/tools/graphics/other/halo/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/halo/recipe.toml rename to recipes/wip/tools/graphics/other/halo/recipe.toml diff --git a/recipes/wip/graphics/other/hdr10plus-tool/recipe.toml b/recipes/wip/tools/graphics/other/hdr10plus-tool/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/hdr10plus-tool/recipe.toml rename to recipes/wip/tools/graphics/other/hdr10plus-tool/recipe.toml diff --git a/recipes/wip/graphics/other/imagemagick/recipe.toml b/recipes/wip/tools/graphics/other/imagemagick/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/imagemagick/recipe.toml rename to recipes/wip/tools/graphics/other/imagemagick/recipe.toml diff --git a/recipes/wip/graphics/other/incompact3d/recipe.toml b/recipes/wip/tools/graphics/other/incompact3d/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/incompact3d/recipe.toml rename to recipes/wip/tools/graphics/other/incompact3d/recipe.toml diff --git a/recipes/wip/graphics/other/jxl-oxide/recipe.toml b/recipes/wip/tools/graphics/other/jxl-oxide/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/jxl-oxide/recipe.toml rename to recipes/wip/tools/graphics/other/jxl-oxide/recipe.toml diff --git a/recipes/wip/graphics/other/kantig/recipe.toml b/recipes/wip/tools/graphics/other/kantig/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/kantig/recipe.toml rename to recipes/wip/tools/graphics/other/kantig/recipe.toml diff --git a/recipes/wip/graphics/other/lpl/recipe.toml b/recipes/wip/tools/graphics/other/lpl/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/lpl/recipe.toml rename to recipes/wip/tools/graphics/other/lpl/recipe.toml diff --git a/recipes/wip/graphics/other/luxcorerender/recipe.toml b/recipes/wip/tools/graphics/other/luxcorerender/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/luxcorerender/recipe.toml rename to recipes/wip/tools/graphics/other/luxcorerender/recipe.toml diff --git a/recipes/wip/graphics/other/matugen/recipe.toml b/recipes/wip/tools/graphics/other/matugen/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/matugen/recipe.toml rename to recipes/wip/tools/graphics/other/matugen/recipe.toml diff --git a/recipes/wip/graphics/other/ocrs/recipe.toml b/recipes/wip/tools/graphics/other/ocrs/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/ocrs/recipe.toml rename to recipes/wip/tools/graphics/other/ocrs/recipe.toml diff --git a/recipes/wip/graphics/other/oculante/recipe.toml b/recipes/wip/tools/graphics/other/oculante/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/oculante/recipe.toml rename to recipes/wip/tools/graphics/other/oculante/recipe.toml diff --git a/recipes/wip/graphics/other/openscad/recipe.toml b/recipes/wip/tools/graphics/other/openscad/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/openscad/recipe.toml rename to recipes/wip/tools/graphics/other/openscad/recipe.toml diff --git a/recipes/wip/graphics/other/ospray-studio/recipe.toml b/recipes/wip/tools/graphics/other/ospray-studio/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/ospray-studio/recipe.toml rename to recipes/wip/tools/graphics/other/ospray-studio/recipe.toml diff --git a/recipes/wip/graphics/other/ospray/recipe.toml b/recipes/wip/tools/graphics/other/ospray/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/ospray/recipe.toml rename to recipes/wip/tools/graphics/other/ospray/recipe.toml diff --git a/recipes/wip/graphics/other/paraview-data/recipe.toml b/recipes/wip/tools/graphics/other/paraview-data/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/paraview-data/recipe.toml rename to recipes/wip/tools/graphics/other/paraview-data/recipe.toml diff --git a/recipes/wip/graphics/other/paraview/recipe.toml b/recipes/wip/tools/graphics/other/paraview/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/paraview/recipe.toml rename to recipes/wip/tools/graphics/other/paraview/recipe.toml diff --git a/recipes/wip/graphics/other/pilka/recipe.toml b/recipes/wip/tools/graphics/other/pilka/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/pilka/recipe.toml rename to recipes/wip/tools/graphics/other/pilka/recipe.toml diff --git a/recipes/wip/graphics/other/pix-image-viewer/recipe.toml b/recipes/wip/tools/graphics/other/pix-image-viewer/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/pix-image-viewer/recipe.toml rename to recipes/wip/tools/graphics/other/pix-image-viewer/recipe.toml diff --git a/recipes/wip/graphics/other/pixsort/recipe.toml b/recipes/wip/tools/graphics/other/pixsort/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/pixsort/recipe.toml rename to recipes/wip/tools/graphics/other/pixsort/recipe.toml diff --git a/recipes/wip/graphics/other/rascii/recipe.toml b/recipes/wip/tools/graphics/other/rascii/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/rascii/recipe.toml rename to recipes/wip/tools/graphics/other/rascii/recipe.toml diff --git a/recipes/wip/graphics/other/rawtherapee/recipe.toml b/recipes/wip/tools/graphics/other/rawtherapee/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/rawtherapee/recipe.toml rename to recipes/wip/tools/graphics/other/rawtherapee/recipe.toml diff --git a/recipes/wip/graphics/other/reve/recipe.toml b/recipes/wip/tools/graphics/other/reve/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/reve/recipe.toml rename to recipes/wip/tools/graphics/other/reve/recipe.toml diff --git a/recipes/wip/graphics/other/rimage/recipe.toml b/recipes/wip/tools/graphics/other/rimage/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/rimage/recipe.toml rename to recipes/wip/tools/graphics/other/rimage/recipe.toml diff --git a/recipes/wip/graphics/other/satty/recipe.toml b/recipes/wip/tools/graphics/other/satty/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/satty/recipe.toml rename to recipes/wip/tools/graphics/other/satty/recipe.toml diff --git a/recipes/wip/graphics/other/shadergarden/recipe.toml b/recipes/wip/tools/graphics/other/shadergarden/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/shadergarden/recipe.toml rename to recipes/wip/tools/graphics/other/shadergarden/recipe.toml diff --git a/recipes/wip/graphics/other/simp/recipe.toml b/recipes/wip/tools/graphics/other/simp/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/simp/recipe.toml rename to recipes/wip/tools/graphics/other/simp/recipe.toml diff --git a/recipes/wip/graphics/other/smag/recipe.toml b/recipes/wip/tools/graphics/other/smag/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/smag/recipe.toml rename to recipes/wip/tools/graphics/other/smag/recipe.toml diff --git a/recipes/wip/graphics/other/texel/recipe.toml b/recipes/wip/tools/graphics/other/texel/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/texel/recipe.toml rename to recipes/wip/tools/graphics/other/texel/recipe.toml diff --git a/recipes/wip/graphics/other/toybrot/recipe.toml b/recipes/wip/tools/graphics/other/toybrot/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/toybrot/recipe.toml rename to recipes/wip/tools/graphics/other/toybrot/recipe.toml diff --git a/recipes/wip/graphics/other/tungsten-renderer/recipe.toml b/recipes/wip/tools/graphics/other/tungsten-renderer/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/tungsten-renderer/recipe.toml rename to recipes/wip/tools/graphics/other/tungsten-renderer/recipe.toml diff --git a/recipes/wip/graphics/other/upscaling/rscale2x/recipe.toml b/recipes/wip/tools/graphics/other/upscaling/rscale2x/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/upscaling/rscale2x/recipe.toml rename to recipes/wip/tools/graphics/other/upscaling/rscale2x/recipe.toml diff --git a/recipes/wip/graphics/other/upscaling/upscaler-rs/recipe.toml b/recipes/wip/tools/graphics/other/upscaling/upscaler-rs/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/upscaling/upscaler-rs/recipe.toml rename to recipes/wip/tools/graphics/other/upscaling/upscaler-rs/recipe.toml diff --git a/recipes/wip/graphics/other/viu/recipe.toml b/recipes/wip/tools/graphics/other/viu/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/viu/recipe.toml rename to recipes/wip/tools/graphics/other/viu/recipe.toml diff --git a/recipes/wip/graphics/other/watch-stl/recipe.toml b/recipes/wip/tools/graphics/other/watch-stl/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/watch-stl/recipe.toml rename to recipes/wip/tools/graphics/other/watch-stl/recipe.toml diff --git a/recipes/wip/math/fend/recipe.toml b/recipes/wip/tools/math/fend/recipe.toml similarity index 100% rename from recipes/wip/math/fend/recipe.toml rename to recipes/wip/tools/math/fend/recipe.toml diff --git a/recipes/wip/math/kalc/recipe.toml b/recipes/wip/tools/math/kalc/recipe.toml similarity index 100% rename from recipes/wip/math/kalc/recipe.toml rename to recipes/wip/tools/math/kalc/recipe.toml diff --git a/recipes/wip/math/kalker/recipe.toml b/recipes/wip/tools/math/kalker/recipe.toml similarity index 100% rename from recipes/wip/math/kalker/recipe.toml rename to recipes/wip/tools/math/kalker/recipe.toml diff --git a/recipes/wip/math/numbat/recipe.toml b/recipes/wip/tools/math/numbat/recipe.toml similarity index 100% rename from recipes/wip/math/numbat/recipe.toml rename to recipes/wip/tools/math/numbat/recipe.toml diff --git a/recipes/wip/math/primesieve/recipe.toml b/recipes/wip/tools/math/primesieve/recipe.toml similarity index 100% rename from recipes/wip/math/primesieve/recipe.toml rename to recipes/wip/tools/math/primesieve/recipe.toml diff --git a/recipes/wip/math/rink/recipe.toml b/recipes/wip/tools/math/rink/recipe.toml similarity index 100% rename from recipes/wip/math/rink/recipe.toml rename to recipes/wip/tools/math/rink/recipe.toml diff --git a/recipes/wip/net/anime-downloader/recipe.toml b/recipes/wip/tools/net/anime-downloader/recipe.toml similarity index 100% rename from recipes/wip/net/anime-downloader/recipe.toml rename to recipes/wip/tools/net/anime-downloader/recipe.toml diff --git a/recipes/wip/net/apache-httpd/recipe.toml b/recipes/wip/tools/net/apache-httpd/recipe.toml similarity index 100% rename from recipes/wip/net/apache-httpd/recipe.toml rename to recipes/wip/tools/net/apache-httpd/recipe.toml diff --git a/recipes/wip/net/apache-httpd/redox.patch b/recipes/wip/tools/net/apache-httpd/redox.patch similarity index 100% rename from recipes/wip/net/apache-httpd/redox.patch rename to recipes/wip/tools/net/apache-httpd/redox.patch diff --git a/recipes/wip/net/arp-scanner/recipe.toml b/recipes/wip/tools/net/arp-scanner/recipe.toml similarity index 100% rename from recipes/wip/net/arp-scanner/recipe.toml rename to recipes/wip/tools/net/arp-scanner/recipe.toml diff --git a/recipes/wip/net/arti/recipe.toml b/recipes/wip/tools/net/arti/recipe.toml similarity index 100% rename from recipes/wip/net/arti/recipe.toml rename to recipes/wip/tools/net/arti/recipe.toml diff --git a/recipes/wip/net/attractorr/recipe.toml b/recipes/wip/tools/net/attractorr/recipe.toml similarity index 100% rename from recipes/wip/net/attractorr/recipe.toml rename to recipes/wip/tools/net/attractorr/recipe.toml diff --git a/recipes/wip/net/bita/recipe.toml b/recipes/wip/tools/net/bita/recipe.toml similarity index 100% rename from recipes/wip/net/bita/recipe.toml rename to recipes/wip/tools/net/bita/recipe.toml diff --git a/recipes/wip/net/bitcoin-core/recipe.toml b/recipes/wip/tools/net/bitcoin-core/recipe.toml similarity index 100% rename from recipes/wip/net/bitcoin-core/recipe.toml rename to recipes/wip/tools/net/bitcoin-core/recipe.toml diff --git a/recipes/wip/net/bore/recipe.toml b/recipes/wip/tools/net/bore/recipe.toml similarity index 100% rename from recipes/wip/net/bore/recipe.toml rename to recipes/wip/tools/net/bore/recipe.toml diff --git a/recipes/wip/net/boringtun/recipe.toml b/recipes/wip/tools/net/boringtun/recipe.toml similarity index 100% rename from recipes/wip/net/boringtun/recipe.toml rename to recipes/wip/tools/net/boringtun/recipe.toml diff --git a/recipes/wip/net/celeste/recipe.toml b/recipes/wip/tools/net/celeste/recipe.toml similarity index 100% rename from recipes/wip/net/celeste/recipe.toml rename to recipes/wip/tools/net/celeste/recipe.toml diff --git a/recipes/wip/net/cobalt/recipe.toml b/recipes/wip/tools/net/cobalt/recipe.toml similarity index 100% rename from recipes/wip/net/cobalt/recipe.toml rename to recipes/wip/tools/net/cobalt/recipe.toml diff --git a/recipes/wip/net/crab-dlna/recipe.toml b/recipes/wip/tools/net/crab-dlna/recipe.toml similarity index 100% rename from recipes/wip/net/crab-dlna/recipe.toml rename to recipes/wip/tools/net/crab-dlna/recipe.toml diff --git a/recipes/wip/net/devserver/recipe.toml b/recipes/wip/tools/net/devserver/recipe.toml similarity index 100% rename from recipes/wip/net/devserver/recipe.toml rename to recipes/wip/tools/net/devserver/recipe.toml diff --git a/recipes/wip/net/dqy/recipe.toml b/recipes/wip/tools/net/dqy/recipe.toml similarity index 100% rename from recipes/wip/net/dqy/recipe.toml rename to recipes/wip/tools/net/dqy/recipe.toml diff --git a/recipes/wip/net/drill/recipe.toml b/recipes/wip/tools/net/drill/recipe.toml similarity index 100% rename from recipes/wip/net/drill/recipe.toml rename to recipes/wip/tools/net/drill/recipe.toml diff --git a/recipes/wip/net/dufs/recipe.toml b/recipes/wip/tools/net/dufs/recipe.toml similarity index 100% rename from recipes/wip/net/dufs/recipe.toml rename to recipes/wip/tools/net/dufs/recipe.toml diff --git a/recipes/wip/net/electrs/recipe.toml b/recipes/wip/tools/net/electrs/recipe.toml similarity index 100% rename from recipes/wip/net/electrs/recipe.toml rename to recipes/wip/tools/net/electrs/recipe.toml diff --git a/recipes/wip/net/floresta/recipe.toml b/recipes/wip/tools/net/floresta/recipe.toml similarity index 100% rename from recipes/wip/net/floresta/recipe.toml rename to recipes/wip/tools/net/floresta/recipe.toml diff --git a/recipes/wip/net/freenginx/recipe.toml b/recipes/wip/tools/net/freenginx/recipe.toml similarity index 100% rename from recipes/wip/net/freenginx/recipe.toml rename to recipes/wip/tools/net/freenginx/recipe.toml diff --git a/recipes/wip/net/guacamole-client/recipe.toml b/recipes/wip/tools/net/guacamole-client/recipe.toml similarity index 100% rename from recipes/wip/net/guacamole-client/recipe.toml rename to recipes/wip/tools/net/guacamole-client/recipe.toml diff --git a/recipes/wip/net/guacamole-server/recipe.toml b/recipes/wip/tools/net/guacamole-server/recipe.toml similarity index 100% rename from recipes/wip/net/guacamole-server/recipe.toml rename to recipes/wip/tools/net/guacamole-server/recipe.toml diff --git a/recipes/wip/net/halloy/recipe.toml b/recipes/wip/tools/net/halloy/recipe.toml similarity index 100% rename from recipes/wip/net/halloy/recipe.toml rename to recipes/wip/tools/net/halloy/recipe.toml diff --git a/recipes/wip/net/havn/recipe.toml b/recipes/wip/tools/net/havn/recipe.toml similarity index 100% rename from recipes/wip/net/havn/recipe.toml rename to recipes/wip/tools/net/havn/recipe.toml diff --git a/recipes/wip/net/hinoki/recipe.toml b/recipes/wip/tools/net/hinoki/recipe.toml similarity index 100% rename from recipes/wip/net/hinoki/recipe.toml rename to recipes/wip/tools/net/hinoki/recipe.toml diff --git a/recipes/wip/net/http-server-rs/recipe.toml b/recipes/wip/tools/net/http-server-rs/recipe.toml similarity index 100% rename from recipes/wip/net/http-server-rs/recipe.toml rename to recipes/wip/tools/net/http-server-rs/recipe.toml diff --git a/recipes/wip/net/hurl/recipe.toml b/recipes/wip/tools/net/hurl/recipe.toml similarity index 100% rename from recipes/wip/net/hurl/recipe.toml rename to recipes/wip/tools/net/hurl/recipe.toml diff --git a/recipes/wip/net/i2pd/recipe.toml b/recipes/wip/tools/net/i2pd/recipe.toml similarity index 100% rename from recipes/wip/net/i2pd/recipe.toml rename to recipes/wip/tools/net/i2pd/recipe.toml diff --git a/recipes/wip/net/impala/recipe.toml b/recipes/wip/tools/net/impala/recipe.toml similarity index 100% rename from recipes/wip/net/impala/recipe.toml rename to recipes/wip/tools/net/impala/recipe.toml diff --git a/recipes/wip/net/lagrange/recipe.toml b/recipes/wip/tools/net/lagrange/recipe.toml similarity index 100% rename from recipes/wip/net/lagrange/recipe.toml rename to recipes/wip/tools/net/lagrange/recipe.toml diff --git a/recipes/wip/net/lldap/recipe.toml b/recipes/wip/tools/net/lldap/recipe.toml similarity index 100% rename from recipes/wip/net/lldap/recipe.toml rename to recipes/wip/tools/net/lldap/recipe.toml diff --git a/recipes/wip/net/lokinet/recipe.toml b/recipes/wip/tools/net/lokinet/recipe.toml similarity index 100% rename from recipes/wip/net/lokinet/recipe.toml rename to recipes/wip/tools/net/lokinet/recipe.toml diff --git a/recipes/wip/net/lychee/recipe.toml b/recipes/wip/tools/net/lychee/recipe.toml similarity index 100% rename from recipes/wip/net/lychee/recipe.toml rename to recipes/wip/tools/net/lychee/recipe.toml diff --git a/recipes/wip/net/lynx/recipe.toml b/recipes/wip/tools/net/lynx/recipe.toml similarity index 100% rename from recipes/wip/net/lynx/recipe.toml rename to recipes/wip/tools/net/lynx/recipe.toml diff --git a/recipes/wip/net/meli/recipe.toml b/recipes/wip/tools/net/meli/recipe.toml similarity index 100% rename from recipes/wip/net/meli/recipe.toml rename to recipes/wip/tools/net/meli/recipe.toml diff --git a/recipes/wip/net/miniupnpc/recipe.toml b/recipes/wip/tools/net/miniupnpc/recipe.toml similarity index 100% rename from recipes/wip/net/miniupnpc/recipe.toml rename to recipes/wip/tools/net/miniupnpc/recipe.toml diff --git a/recipes/wip/net/moonfire-nvr-server/recipe.toml b/recipes/wip/tools/net/moonfire-nvr-server/recipe.toml similarity index 100% rename from recipes/wip/net/moonfire-nvr-server/recipe.toml rename to recipes/wip/tools/net/moonfire-nvr-server/recipe.toml diff --git a/recipes/wip/net/netop/recipe.toml b/recipes/wip/tools/net/netop/recipe.toml similarity index 100% rename from recipes/wip/net/netop/recipe.toml rename to recipes/wip/tools/net/netop/recipe.toml diff --git a/recipes/wip/net/netscanner/recipe.toml b/recipes/wip/tools/net/netscanner/recipe.toml similarity index 100% rename from recipes/wip/net/netscanner/recipe.toml rename to recipes/wip/tools/net/netscanner/recipe.toml diff --git a/recipes/wip/net/nginx/recipe.toml b/recipes/wip/tools/net/nginx/recipe.toml similarity index 100% rename from recipes/wip/net/nginx/recipe.toml rename to recipes/wip/tools/net/nginx/recipe.toml diff --git a/recipes/wip/net/nmap/recipe.toml b/recipes/wip/tools/net/nmap/recipe.toml similarity index 100% rename from recipes/wip/net/nmap/recipe.toml rename to recipes/wip/tools/net/nmap/recipe.toml diff --git a/recipes/wip/net/nostr-rs-relay/recipe.toml b/recipes/wip/tools/net/nostr-rs-relay/recipe.toml similarity index 100% rename from recipes/wip/net/nostr-rs-relay/recipe.toml rename to recipes/wip/tools/net/nostr-rs-relay/recipe.toml diff --git a/recipes/wip/net/nspr/recipe.toml b/recipes/wip/tools/net/nspr/recipe.toml similarity index 100% rename from recipes/wip/net/nspr/recipe.toml rename to recipes/wip/tools/net/nspr/recipe.toml diff --git a/recipes/wip/net/nss-pem/recipe.toml b/recipes/wip/tools/net/nss-pem/recipe.toml similarity index 100% rename from recipes/wip/net/nss-pem/recipe.toml rename to recipes/wip/tools/net/nss-pem/recipe.toml diff --git a/recipes/wip/net/nss/recipe.toml b/recipes/wip/tools/net/nss/recipe.toml similarity index 100% rename from recipes/wip/net/nss/recipe.toml rename to recipes/wip/tools/net/nss/recipe.toml diff --git a/recipes/wip/net/ntpd-rs/recipe.toml b/recipes/wip/tools/net/ntpd-rs/recipe.toml similarity index 100% rename from recipes/wip/net/ntpd-rs/recipe.toml rename to recipes/wip/tools/net/ntpd-rs/recipe.toml diff --git a/recipes/wip/net/oha/recipe.toml b/recipes/wip/tools/net/oha/recipe.toml similarity index 100% rename from recipes/wip/net/oha/recipe.toml rename to recipes/wip/tools/net/oha/recipe.toml diff --git a/recipes/wip/net/realm/recipe.toml b/recipes/wip/tools/net/realm/recipe.toml similarity index 100% rename from recipes/wip/net/realm/recipe.toml rename to recipes/wip/tools/net/realm/recipe.toml diff --git a/recipes/wip/net/rqbit/recipe.toml b/recipes/wip/tools/net/rqbit/recipe.toml similarity index 100% rename from recipes/wip/net/rqbit/recipe.toml rename to recipes/wip/tools/net/rqbit/recipe.toml diff --git a/recipes/wip/net/rustdesk-server/recipe.toml b/recipes/wip/tools/net/rustdesk-server/recipe.toml similarity index 100% rename from recipes/wip/net/rustdesk-server/recipe.toml rename to recipes/wip/tools/net/rustdesk-server/recipe.toml diff --git a/recipes/wip/net/rustscan/recipe.toml b/recipes/wip/tools/net/rustscan/recipe.toml similarity index 100% rename from recipes/wip/net/rustscan/recipe.toml rename to recipes/wip/tools/net/rustscan/recipe.toml diff --git a/recipes/wip/net/rustypaste/recipe.toml b/recipes/wip/tools/net/rustypaste/recipe.toml similarity index 100% rename from recipes/wip/net/rustypaste/recipe.toml rename to recipes/wip/tools/net/rustypaste/recipe.toml diff --git a/recipes/wip/net/samba/answers.txt b/recipes/wip/tools/net/samba/answers.txt similarity index 100% rename from recipes/wip/net/samba/answers.txt rename to recipes/wip/tools/net/samba/answers.txt diff --git a/recipes/wip/net/samba/recipe.toml b/recipes/wip/tools/net/samba/recipe.toml similarity index 100% rename from recipes/wip/net/samba/recipe.toml rename to recipes/wip/tools/net/samba/recipe.toml diff --git a/recipes/wip/net/simple-http-server/recipe.toml b/recipes/wip/tools/net/simple-http-server/recipe.toml similarity index 100% rename from recipes/wip/net/simple-http-server/recipe.toml rename to recipes/wip/tools/net/simple-http-server/recipe.toml diff --git a/recipes/wip/net/slumber/recipe.toml b/recipes/wip/tools/net/slumber/recipe.toml similarity index 100% rename from recipes/wip/net/slumber/recipe.toml rename to recipes/wip/tools/net/slumber/recipe.toml diff --git a/recipes/wip/net/spadesx/recipe.toml b/recipes/wip/tools/net/spadesx/recipe.toml similarity index 100% rename from recipes/wip/net/spadesx/recipe.toml rename to recipes/wip/tools/net/spadesx/recipe.toml diff --git a/recipes/wip/net/speedtest-rs/recipe.toml b/recipes/wip/tools/net/speedtest-rs/recipe.toml similarity index 100% rename from recipes/wip/net/speedtest-rs/recipe.toml rename to recipes/wip/tools/net/speedtest-rs/recipe.toml diff --git a/recipes/wip/net/spis/recipe.toml b/recipes/wip/tools/net/spis/recipe.toml similarity index 100% rename from recipes/wip/net/spis/recipe.toml rename to recipes/wip/tools/net/spis/recipe.toml diff --git a/recipes/wip/net/srsran-4g/recipe.toml b/recipes/wip/tools/net/srsran-4g/recipe.toml similarity index 100% rename from recipes/wip/net/srsran-4g/recipe.toml rename to recipes/wip/tools/net/srsran-4g/recipe.toml diff --git a/recipes/wip/net/srsran-project/recipe.toml b/recipes/wip/tools/net/srsran-project/recipe.toml similarity index 100% rename from recipes/wip/net/srsran-project/recipe.toml rename to recipes/wip/tools/net/srsran-project/recipe.toml diff --git a/recipes/wip/net/synapse-bt/recipe.toml b/recipes/wip/tools/net/synapse-bt/recipe.toml similarity index 100% rename from recipes/wip/net/synapse-bt/recipe.toml rename to recipes/wip/tools/net/synapse-bt/recipe.toml diff --git a/recipes/wip/net/telegram-desktop/recipe.toml b/recipes/wip/tools/net/telegram-desktop/recipe.toml similarity index 100% rename from recipes/wip/net/telegram-desktop/recipe.toml rename to recipes/wip/tools/net/telegram-desktop/recipe.toml diff --git a/recipes/wip/net/termchat/recipe.toml b/recipes/wip/tools/net/termchat/recipe.toml similarity index 100% rename from recipes/wip/net/termchat/recipe.toml rename to recipes/wip/tools/net/termchat/recipe.toml diff --git a/recipes/wip/net/tiny/recipe.toml b/recipes/wip/tools/net/tiny/recipe.toml similarity index 100% rename from recipes/wip/net/tiny/recipe.toml rename to recipes/wip/tools/net/tiny/recipe.toml diff --git a/recipes/wip/net/tobaru/recipe.toml b/recipes/wip/tools/net/tobaru/recipe.toml similarity index 100% rename from recipes/wip/net/tobaru/recipe.toml rename to recipes/wip/tools/net/tobaru/recipe.toml diff --git a/recipes/wip/net/tor-browser/recipe.toml b/recipes/wip/tools/net/tor-browser/recipe.toml similarity index 100% rename from recipes/wip/net/tor-browser/recipe.toml rename to recipes/wip/tools/net/tor-browser/recipe.toml diff --git a/recipes/wip/net/tor/recipe.toml b/recipes/wip/tools/net/tor/recipe.toml similarity index 100% rename from recipes/wip/net/tor/recipe.toml rename to recipes/wip/tools/net/tor/recipe.toml diff --git a/recipes/wip/net/transmission/recipe.toml b/recipes/wip/tools/net/transmission/recipe.toml similarity index 100% rename from recipes/wip/net/transmission/recipe.toml rename to recipes/wip/tools/net/transmission/recipe.toml diff --git a/recipes/wip/net/trippy/recipe.toml b/recipes/wip/tools/net/trippy/recipe.toml similarity index 100% rename from recipes/wip/net/trippy/recipe.toml rename to recipes/wip/tools/net/trippy/recipe.toml diff --git a/recipes/wip/net/turn-rs/recipe.toml b/recipes/wip/tools/net/turn-rs/recipe.toml similarity index 100% rename from recipes/wip/net/turn-rs/recipe.toml rename to recipes/wip/tools/net/turn-rs/recipe.toml diff --git a/recipes/wip/net/unbound/recipe.toml b/recipes/wip/tools/net/unbound/recipe.toml similarity index 100% rename from recipes/wip/net/unbound/recipe.toml rename to recipes/wip/tools/net/unbound/recipe.toml diff --git a/recipes/wip/net/updns/recipe.toml b/recipes/wip/tools/net/updns/recipe.toml similarity index 100% rename from recipes/wip/net/updns/recipe.toml rename to recipes/wip/tools/net/updns/recipe.toml diff --git a/recipes/wip/net/varia/recipe.toml b/recipes/wip/tools/net/varia/recipe.toml similarity index 100% rename from recipes/wip/net/varia/recipe.toml rename to recipes/wip/tools/net/varia/recipe.toml diff --git a/recipes/wip/net/vimini/recipe.toml b/recipes/wip/tools/net/vimini/recipe.toml similarity index 100% rename from recipes/wip/net/vimini/recipe.toml rename to recipes/wip/tools/net/vimini/recipe.toml diff --git a/recipes/wip/net/vopono/recipe.toml b/recipes/wip/tools/net/vopono/recipe.toml similarity index 100% rename from recipes/wip/net/vopono/recipe.toml rename to recipes/wip/tools/net/vopono/recipe.toml diff --git a/recipes/wip/net/vpncloud/recipe.toml b/recipes/wip/tools/net/vpncloud/recipe.toml similarity index 100% rename from recipes/wip/net/vpncloud/recipe.toml rename to recipes/wip/tools/net/vpncloud/recipe.toml diff --git a/recipes/wip/net/vsd/recipe.toml b/recipes/wip/tools/net/vsd/recipe.toml similarity index 100% rename from recipes/wip/net/vsd/recipe.toml rename to recipes/wip/tools/net/vsd/recipe.toml diff --git a/recipes/wip/net/warp/recipe.toml b/recipes/wip/tools/net/warp/recipe.toml similarity index 100% rename from recipes/wip/net/warp/recipe.toml rename to recipes/wip/tools/net/warp/recipe.toml diff --git a/recipes/wip/net/wget/recipe.toml b/recipes/wip/tools/net/wget/recipe.toml similarity index 100% rename from recipes/wip/net/wget/recipe.toml rename to recipes/wip/tools/net/wget/recipe.toml diff --git a/recipes/wip/net/wget2/recipe.toml b/recipes/wip/tools/net/wget2/recipe.toml similarity index 100% rename from recipes/wip/net/wget2/recipe.toml rename to recipes/wip/tools/net/wget2/recipe.toml diff --git a/recipes/wip/net/wireguard-rs/recipe.toml b/recipes/wip/tools/net/wireguard-rs/recipe.toml similarity index 100% rename from recipes/wip/net/wireguard-rs/recipe.toml rename to recipes/wip/tools/net/wireguard-rs/recipe.toml diff --git a/recipes/wip/net/yaydl/recipe.toml b/recipes/wip/tools/net/yaydl/recipe.toml similarity index 100% rename from recipes/wip/net/yaydl/recipe.toml rename to recipes/wip/tools/net/yaydl/recipe.toml diff --git a/recipes/wip/net/yazi/recipe.toml b/recipes/wip/tools/net/yazi/recipe.toml similarity index 100% rename from recipes/wip/net/yazi/recipe.toml rename to recipes/wip/tools/net/yazi/recipe.toml diff --git a/recipes/wip/net/zerotier/recipe.toml b/recipes/wip/tools/net/zerotier/recipe.toml similarity index 100% rename from recipes/wip/net/zerotier/recipe.toml rename to recipes/wip/tools/net/zerotier/recipe.toml diff --git a/recipes/wip/ai/nnx/recipe.toml b/recipes/wip/tools/nnx/recipe.toml similarity index 100% rename from recipes/wip/ai/nnx/recipe.toml rename to recipes/wip/tools/nnx/recipe.toml diff --git a/recipes/wip/office/libreoffice-dictionaries/recipe.toml b/recipes/wip/tools/office/libreoffice-dictionaries/recipe.toml similarity index 100% rename from recipes/wip/office/libreoffice-dictionaries/recipe.toml rename to recipes/wip/tools/office/libreoffice-dictionaries/recipe.toml diff --git a/recipes/wip/office/libreoffice-translations/recipe.toml b/recipes/wip/tools/office/libreoffice-translations/recipe.toml similarity index 100% rename from recipes/wip/office/libreoffice-translations/recipe.toml rename to recipes/wip/tools/office/libreoffice-translations/recipe.toml diff --git a/recipes/wip/office/libreoffice/recipe.toml b/recipes/wip/tools/office/libreoffice/recipe.toml similarity index 100% rename from recipes/wip/office/libreoffice/recipe.toml rename to recipes/wip/tools/office/libreoffice/recipe.toml diff --git a/recipes/wip/tools/aeruginous/recipe.toml b/recipes/wip/tools/other/aeruginous/recipe.toml similarity index 100% rename from recipes/wip/tools/aeruginous/recipe.toml rename to recipes/wip/tools/other/aeruginous/recipe.toml diff --git a/recipes/wip/tools/aim/recipe.toml b/recipes/wip/tools/other/aim/recipe.toml similarity index 100% rename from recipes/wip/tools/aim/recipe.toml rename to recipes/wip/tools/other/aim/recipe.toml diff --git a/recipes/wip/tools/alacritty/recipe.toml b/recipes/wip/tools/other/alacritty/recipe.toml similarity index 100% rename from recipes/wip/tools/alacritty/recipe.toml rename to recipes/wip/tools/other/alacritty/recipe.toml diff --git a/recipes/wip/tools/amp/recipe.toml b/recipes/wip/tools/other/amp/recipe.toml similarity index 100% rename from recipes/wip/tools/amp/recipe.toml rename to recipes/wip/tools/other/amp/recipe.toml diff --git a/recipes/wip/tools/ani-cli/recipe.toml b/recipes/wip/tools/other/ani-cli/recipe.toml similarity index 100% rename from recipes/wip/tools/ani-cli/recipe.toml rename to recipes/wip/tools/other/ani-cli/recipe.toml diff --git a/recipes/wip/tools/ani-skip/recipe.toml b/recipes/wip/tools/other/ani-skip/recipe.toml similarity index 100% rename from recipes/wip/tools/ani-skip/recipe.toml rename to recipes/wip/tools/other/ani-skip/recipe.toml diff --git a/recipes/wip/tools/aria2/recipe.toml b/recipes/wip/tools/other/aria2/recipe.toml similarity index 100% rename from recipes/wip/tools/aria2/recipe.toml rename to recipes/wip/tools/other/aria2/recipe.toml diff --git a/recipes/wip/tools/arrow-tools/recipe.toml b/recipes/wip/tools/other/arrow-tools/recipe.toml similarity index 100% rename from recipes/wip/tools/arrow-tools/recipe.toml rename to recipes/wip/tools/other/arrow-tools/recipe.toml diff --git a/recipes/wip/tools/artem/recipe.toml b/recipes/wip/tools/other/artem/recipe.toml similarity index 100% rename from recipes/wip/tools/artem/recipe.toml rename to recipes/wip/tools/other/artem/recipe.toml diff --git a/recipes/wip/tools/ascii-gen/recipe.toml b/recipes/wip/tools/other/ascii-gen/recipe.toml similarity index 100% rename from recipes/wip/tools/ascii-gen/recipe.toml rename to recipes/wip/tools/other/ascii-gen/recipe.toml diff --git a/recipes/wip/tools/asciinema-rs/recipe.toml b/recipes/wip/tools/other/asciinema-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/asciinema-rs/recipe.toml rename to recipes/wip/tools/other/asciinema-rs/recipe.toml diff --git a/recipes/wip/tools/ast-grep/recipe.toml b/recipes/wip/tools/other/ast-grep/recipe.toml similarity index 100% rename from recipes/wip/tools/ast-grep/recipe.toml rename to recipes/wip/tools/other/ast-grep/recipe.toml diff --git a/recipes/wip/tools/astc-encoder/recipe.toml b/recipes/wip/tools/other/astc-encoder/recipe.toml similarity index 100% rename from recipes/wip/tools/astc-encoder/recipe.toml rename to recipes/wip/tools/other/astc-encoder/recipe.toml diff --git a/recipes/wip/tools/astyle/recipe.toml b/recipes/wip/tools/other/astyle/recipe.toml similarity index 100% rename from recipes/wip/tools/astyle/recipe.toml rename to recipes/wip/tools/other/astyle/recipe.toml diff --git a/recipes/wip/tools/atm-cli/recipe.toml b/recipes/wip/tools/other/atm-cli/recipe.toml similarity index 100% rename from recipes/wip/tools/atm-cli/recipe.toml rename to recipes/wip/tools/other/atm-cli/recipe.toml diff --git a/recipes/wip/tools/atuin/recipe.toml b/recipes/wip/tools/other/atuin/recipe.toml similarity index 100% rename from recipes/wip/tools/atuin/recipe.toml rename to recipes/wip/tools/other/atuin/recipe.toml diff --git a/recipes/wip/tools/b3sum/recipe.toml b/recipes/wip/tools/other/b3sum/recipe.toml similarity index 100% rename from recipes/wip/tools/b3sum/recipe.toml rename to recipes/wip/tools/other/b3sum/recipe.toml diff --git a/recipes/wip/tools/backhand/recipe.toml b/recipes/wip/tools/other/backhand/recipe.toml similarity index 100% rename from recipes/wip/tools/backhand/recipe.toml rename to recipes/wip/tools/other/backhand/recipe.toml diff --git a/recipes/wip/tools/bacon/recipe.toml b/recipes/wip/tools/other/bacon/recipe.toml similarity index 100% rename from recipes/wip/tools/bacon/recipe.toml rename to recipes/wip/tools/other/bacon/recipe.toml diff --git a/recipes/wip/tools/bacup/recipe.toml b/recipes/wip/tools/other/bacup/recipe.toml similarity index 100% rename from recipes/wip/tools/bacup/recipe.toml rename to recipes/wip/tools/other/bacup/recipe.toml diff --git a/recipes/wip/tools/bandwhich/recipe.toml b/recipes/wip/tools/other/bandwhich/recipe.toml similarity index 100% rename from recipes/wip/tools/bandwhich/recipe.toml rename to recipes/wip/tools/other/bandwhich/recipe.toml diff --git a/recipes/wip/tools/bartib/recipe.toml b/recipes/wip/tools/other/bartib/recipe.toml similarity index 100% rename from recipes/wip/tools/bartib/recipe.toml rename to recipes/wip/tools/other/bartib/recipe.toml diff --git a/recipes/wip/tools/bat/recipe.toml b/recipes/wip/tools/other/bat/recipe.toml similarity index 100% rename from recipes/wip/tools/bat/recipe.toml rename to recipes/wip/tools/other/bat/recipe.toml diff --git a/recipes/wip/tools/battop/recipe.toml b/recipes/wip/tools/other/battop/recipe.toml similarity index 100% rename from recipes/wip/tools/battop/recipe.toml rename to recipes/wip/tools/other/battop/recipe.toml diff --git a/recipes/wip/tools/bdt/recipe.toml b/recipes/wip/tools/other/bdt/recipe.toml similarity index 100% rename from recipes/wip/tools/bdt/recipe.toml rename to recipes/wip/tools/other/bdt/recipe.toml diff --git a/recipes/wip/tools/binserve/recipe.toml b/recipes/wip/tools/other/binserve/recipe.toml similarity index 100% rename from recipes/wip/tools/binserve/recipe.toml rename to recipes/wip/tools/other/binserve/recipe.toml diff --git a/recipes/wip/tools/birdy/recipe.toml b/recipes/wip/tools/other/birdy/recipe.toml similarity index 100% rename from recipes/wip/tools/birdy/recipe.toml rename to recipes/wip/tools/other/birdy/recipe.toml diff --git a/recipes/wip/tools/blockish-caca/recipe.toml b/recipes/wip/tools/other/blockish-caca/recipe.toml similarity index 100% rename from recipes/wip/tools/blockish-caca/recipe.toml rename to recipes/wip/tools/other/blockish-caca/recipe.toml diff --git a/recipes/wip/tools/bottles/recipe.toml b/recipes/wip/tools/other/bottles/recipe.toml similarity index 100% rename from recipes/wip/tools/bottles/recipe.toml rename to recipes/wip/tools/other/bottles/recipe.toml diff --git a/recipes/wip/tools/bottom/recipe.toml b/recipes/wip/tools/other/bottom/recipe.toml similarity index 100% rename from recipes/wip/tools/bottom/recipe.toml rename to recipes/wip/tools/other/bottom/recipe.toml diff --git a/recipes/wip/tools/broot/recipe.toml b/recipes/wip/tools/other/broot/recipe.toml similarity index 100% rename from recipes/wip/tools/broot/recipe.toml rename to recipes/wip/tools/other/broot/recipe.toml diff --git a/recipes/wip/tools/busybox/recipe.toml b/recipes/wip/tools/other/busybox/recipe.toml similarity index 100% rename from recipes/wip/tools/busybox/recipe.toml rename to recipes/wip/tools/other/busybox/recipe.toml diff --git a/recipes/wip/tools/bvr/recipe.toml b/recipes/wip/tools/other/bvr/recipe.toml similarity index 100% rename from recipes/wip/tools/bvr/recipe.toml rename to recipes/wip/tools/other/bvr/recipe.toml diff --git a/recipes/wip/tools/byteblitz/recipe.toml b/recipes/wip/tools/other/byteblitz/recipe.toml similarity index 100% rename from recipes/wip/tools/byteblitz/recipe.toml rename to recipes/wip/tools/other/byteblitz/recipe.toml diff --git a/recipes/wip/tools/caesium/recipe.toml b/recipes/wip/tools/other/caesium/recipe.toml similarity index 100% rename from recipes/wip/tools/caesium/recipe.toml rename to recipes/wip/tools/other/caesium/recipe.toml diff --git a/recipes/wip/tools/caligula/recipe.toml b/recipes/wip/tools/other/caligula/recipe.toml similarity index 100% rename from recipes/wip/tools/caligula/recipe.toml rename to recipes/wip/tools/other/caligula/recipe.toml diff --git a/recipes/wip/tools/carbonyl/recipe.toml b/recipes/wip/tools/other/carbonyl/recipe.toml similarity index 100% rename from recipes/wip/tools/carbonyl/recipe.toml rename to recipes/wip/tools/other/carbonyl/recipe.toml diff --git a/recipes/wip/tools/cava/recipe.toml b/recipes/wip/tools/other/cava/recipe.toml similarity index 100% rename from recipes/wip/tools/cava/recipe.toml rename to recipes/wip/tools/other/cava/recipe.toml diff --git a/recipes/wip/tools/cb/recipe.toml b/recipes/wip/tools/other/cb/recipe.toml similarity index 100% rename from recipes/wip/tools/cb/recipe.toml rename to recipes/wip/tools/other/cb/recipe.toml diff --git a/recipes/wip/tools/chafa/recipe.toml b/recipes/wip/tools/other/chafa/recipe.toml similarity index 100% rename from recipes/wip/tools/chafa/recipe.toml rename to recipes/wip/tools/other/chafa/recipe.toml diff --git a/recipes/wip/tools/checkpwn/recipe.toml b/recipes/wip/tools/other/checkpwn/recipe.toml similarity index 100% rename from recipes/wip/tools/checkpwn/recipe.toml rename to recipes/wip/tools/other/checkpwn/recipe.toml diff --git a/recipes/wip/tools/choose/recipe.toml b/recipes/wip/tools/other/choose/recipe.toml similarity index 100% rename from recipes/wip/tools/choose/recipe.toml rename to recipes/wip/tools/other/choose/recipe.toml diff --git a/recipes/wip/tools/chromazone/recipe.toml b/recipes/wip/tools/other/chromazone/recipe.toml similarity index 100% rename from recipes/wip/tools/chromazone/recipe.toml rename to recipes/wip/tools/other/chromazone/recipe.toml diff --git a/recipes/wip/tools/chuck/recipe.toml b/recipes/wip/tools/other/chuck/recipe.toml similarity index 100% rename from recipes/wip/tools/chuck/recipe.toml rename to recipes/wip/tools/other/chuck/recipe.toml diff --git a/recipes/wip/tools/clipcat/recipe.toml b/recipes/wip/tools/other/clipcat/recipe.toml similarity index 100% rename from recipes/wip/tools/clipcat/recipe.toml rename to recipes/wip/tools/other/clipcat/recipe.toml diff --git a/recipes/wip/tools/clipshare-desktop/recipe.toml b/recipes/wip/tools/other/clipshare-desktop/recipe.toml similarity index 100% rename from recipes/wip/tools/clipshare-desktop/recipe.toml rename to recipes/wip/tools/other/clipshare-desktop/recipe.toml diff --git a/recipes/wip/tools/clipshare-server/recipe.toml b/recipes/wip/tools/other/clipshare-server/recipe.toml similarity index 100% rename from recipes/wip/tools/clipshare-server/recipe.toml rename to recipes/wip/tools/other/clipshare-server/recipe.toml diff --git a/recipes/wip/tools/clog-cli/recipe.toml b/recipes/wip/tools/other/clog-cli/recipe.toml similarity index 100% rename from recipes/wip/tools/clog-cli/recipe.toml rename to recipes/wip/tools/other/clog-cli/recipe.toml diff --git a/recipes/wip/tools/conceal/recipe.toml b/recipes/wip/tools/other/conceal/recipe.toml similarity index 100% rename from recipes/wip/tools/conceal/recipe.toml rename to recipes/wip/tools/other/conceal/recipe.toml diff --git a/recipes/wip/tools/conky/recipe.toml b/recipes/wip/tools/other/conky/recipe.toml similarity index 100% rename from recipes/wip/tools/conky/recipe.toml rename to recipes/wip/tools/other/conky/recipe.toml diff --git a/recipes/wip/tools/conserve/recipe.toml b/recipes/wip/tools/other/conserve/recipe.toml similarity index 100% rename from recipes/wip/tools/conserve/recipe.toml rename to recipes/wip/tools/other/conserve/recipe.toml diff --git a/recipes/wip/tools/converseen/recipe.toml b/recipes/wip/tools/other/converseen/recipe.toml similarity index 100% rename from recipes/wip/tools/converseen/recipe.toml rename to recipes/wip/tools/other/converseen/recipe.toml diff --git a/recipes/wip/tools/cosmic-player/manifest b/recipes/wip/tools/other/cosmic-player/manifest similarity index 100% rename from recipes/wip/tools/cosmic-player/manifest rename to recipes/wip/tools/other/cosmic-player/manifest diff --git a/recipes/wip/tools/cosmic-player/recipe.toml b/recipes/wip/tools/other/cosmic-player/recipe.toml similarity index 100% rename from recipes/wip/tools/cosmic-player/recipe.toml rename to recipes/wip/tools/other/cosmic-player/recipe.toml diff --git a/recipes/wip/tools/counts/recipe.toml b/recipes/wip/tools/other/counts/recipe.toml similarity index 100% rename from recipes/wip/tools/counts/recipe.toml rename to recipes/wip/tools/other/counts/recipe.toml diff --git a/recipes/wip/tools/cpu-x/recipe.toml b/recipes/wip/tools/other/cpu-x/recipe.toml similarity index 100% rename from recipes/wip/tools/cpu-x/recipe.toml rename to recipes/wip/tools/other/cpu-x/recipe.toml diff --git a/recipes/wip/tools/cpuminer-opt/recipe.toml b/recipes/wip/tools/other/cpuminer-opt/recipe.toml similarity index 100% rename from recipes/wip/tools/cpuminer-opt/recipe.toml rename to recipes/wip/tools/other/cpuminer-opt/recipe.toml diff --git a/recipes/wip/tools/crunchy-cli/recipe.toml b/recipes/wip/tools/other/crunchy-cli/recipe.toml similarity index 100% rename from recipes/wip/tools/crunchy-cli/recipe.toml rename to recipes/wip/tools/other/crunchy-cli/recipe.toml diff --git a/recipes/wip/tools/csvlens/recipe.toml b/recipes/wip/tools/other/csvlens/recipe.toml similarity index 100% rename from recipes/wip/tools/csvlens/recipe.toml rename to recipes/wip/tools/other/csvlens/recipe.toml diff --git a/recipes/wip/tools/cube-timer/recipe.toml b/recipes/wip/tools/other/cube-timer/recipe.toml similarity index 100% rename from recipes/wip/tools/cube-timer/recipe.toml rename to recipes/wip/tools/other/cube-timer/recipe.toml diff --git a/recipes/wip/tools/cute/recipe.toml b/recipes/wip/tools/other/cute/recipe.toml similarity index 100% rename from recipes/wip/tools/cute/recipe.toml rename to recipes/wip/tools/other/cute/recipe.toml diff --git a/recipes/wip/tools/cyme/recipe.toml b/recipes/wip/tools/other/cyme/recipe.toml similarity index 100% rename from recipes/wip/tools/cyme/recipe.toml rename to recipes/wip/tools/other/cyme/recipe.toml diff --git a/recipes/wip/tools/czkawka/recipe.toml b/recipes/wip/tools/other/czkawka/recipe.toml similarity index 100% rename from recipes/wip/tools/czkawka/recipe.toml rename to recipes/wip/tools/other/czkawka/recipe.toml diff --git a/recipes/wip/tools/daktilo/recipe.toml b/recipes/wip/tools/other/daktilo/recipe.toml similarity index 100% rename from recipes/wip/tools/daktilo/recipe.toml rename to recipes/wip/tools/other/daktilo/recipe.toml diff --git a/recipes/wip/tools/dead-ringer/recipe.toml b/recipes/wip/tools/other/dead-ringer/recipe.toml similarity index 100% rename from recipes/wip/tools/dead-ringer/recipe.toml rename to recipes/wip/tools/other/dead-ringer/recipe.toml diff --git a/recipes/wip/tools/delta/recipe.toml b/recipes/wip/tools/other/delta/recipe.toml similarity index 100% rename from recipes/wip/tools/delta/recipe.toml rename to recipes/wip/tools/other/delta/recipe.toml diff --git a/recipes/wip/tools/desed/recipe.toml b/recipes/wip/tools/other/desed/recipe.toml similarity index 100% rename from recipes/wip/tools/desed/recipe.toml rename to recipes/wip/tools/other/desed/recipe.toml diff --git a/recipes/wip/tools/dfm/recipe.toml b/recipes/wip/tools/other/dfm/recipe.toml similarity index 100% rename from recipes/wip/tools/dfm/recipe.toml rename to recipes/wip/tools/other/dfm/recipe.toml diff --git a/recipes/wip/tools/diffr/recipe.toml b/recipes/wip/tools/other/diffr/recipe.toml similarity index 100% rename from recipes/wip/tools/diffr/recipe.toml rename to recipes/wip/tools/other/diffr/recipe.toml diff --git a/recipes/wip/tools/diffy/recipe.toml b/recipes/wip/tools/other/diffy/recipe.toml similarity index 100% rename from recipes/wip/tools/diffy/recipe.toml rename to recipes/wip/tools/other/diffy/recipe.toml diff --git a/recipes/wip/tools/dim/recipe.toml b/recipes/wip/tools/other/dim/recipe.toml similarity index 100% rename from recipes/wip/tools/dim/recipe.toml rename to recipes/wip/tools/other/dim/recipe.toml diff --git a/recipes/wip/tools/diskonaut/recipe.toml b/recipes/wip/tools/other/diskonaut/recipe.toml similarity index 100% rename from recipes/wip/tools/diskonaut/recipe.toml rename to recipes/wip/tools/other/diskonaut/recipe.toml diff --git a/recipes/wip/tools/dispatch/recipe.toml b/recipes/wip/tools/other/dispatch/recipe.toml similarity index 100% rename from recipes/wip/tools/dispatch/recipe.toml rename to recipes/wip/tools/other/dispatch/recipe.toml diff --git a/recipes/wip/tools/dog/recipe.toml b/recipes/wip/tools/other/dog/recipe.toml similarity index 100% rename from recipes/wip/tools/dog/recipe.toml rename to recipes/wip/tools/other/dog/recipe.toml diff --git a/recipes/wip/tools/dotr/recipe.toml b/recipes/wip/tools/other/dotr/recipe.toml similarity index 100% rename from recipes/wip/tools/dotr/recipe.toml rename to recipes/wip/tools/other/dotr/recipe.toml diff --git a/recipes/wip/tools/dply/recipe.toml b/recipes/wip/tools/other/dply/recipe.toml similarity index 100% rename from recipes/wip/tools/dply/recipe.toml rename to recipes/wip/tools/other/dply/recipe.toml diff --git a/recipes/wip/tools/dprint/recipe.toml b/recipes/wip/tools/other/dprint/recipe.toml similarity index 100% rename from recipes/wip/tools/dprint/recipe.toml rename to recipes/wip/tools/other/dprint/recipe.toml diff --git a/recipes/wip/tools/dra-cla/recipe.toml b/recipes/wip/tools/other/dra-cla/recipe.toml similarity index 100% rename from recipes/wip/tools/dra-cla/recipe.toml rename to recipes/wip/tools/other/dra-cla/recipe.toml diff --git a/recipes/wip/tools/dua/recipe.toml b/recipes/wip/tools/other/dua/recipe.toml similarity index 100% rename from recipes/wip/tools/dua/recipe.toml rename to recipes/wip/tools/other/dua/recipe.toml diff --git a/recipes/wip/tools/dui/recipe.toml b/recipes/wip/tools/other/dui/recipe.toml similarity index 100% rename from recipes/wip/tools/dui/recipe.toml rename to recipes/wip/tools/other/dui/recipe.toml diff --git a/recipes/wip/tools/dura/recipe.toml b/recipes/wip/tools/other/dura/recipe.toml similarity index 100% rename from recipes/wip/tools/dura/recipe.toml rename to recipes/wip/tools/other/dura/recipe.toml diff --git a/recipes/wip/tools/dust/recipe.toml b/recipes/wip/tools/other/dust/recipe.toml similarity index 100% rename from recipes/wip/tools/dust/recipe.toml rename to recipes/wip/tools/other/dust/recipe.toml diff --git a/recipes/wip/tools/dutree/recipe.toml b/recipes/wip/tools/other/dutree/recipe.toml similarity index 100% rename from recipes/wip/tools/dutree/recipe.toml rename to recipes/wip/tools/other/dutree/recipe.toml diff --git a/recipes/wip/tools/dysk/recipe.toml b/recipes/wip/tools/other/dysk/recipe.toml similarity index 100% rename from recipes/wip/tools/dysk/recipe.toml rename to recipes/wip/tools/other/dysk/recipe.toml diff --git a/recipes/wip/tools/elfutils/recipe.toml b/recipes/wip/tools/other/elfutils/recipe.toml similarity index 100% rename from recipes/wip/tools/elfutils/recipe.toml rename to recipes/wip/tools/other/elfutils/recipe.toml diff --git a/recipes/wip/tools/emacs-nox/recipe.toml b/recipes/wip/tools/other/emacs-nox/recipe.toml similarity index 100% rename from recipes/wip/tools/emacs-nox/recipe.toml rename to recipes/wip/tools/other/emacs-nox/recipe.toml diff --git a/recipes/wip/tools/emacs-pgtk/recipe.toml b/recipes/wip/tools/other/emacs-pgtk/recipe.toml similarity index 100% rename from recipes/wip/tools/emacs-pgtk/recipe.toml rename to recipes/wip/tools/other/emacs-pgtk/recipe.toml diff --git a/recipes/wip/tools/emplace/recipe.toml b/recipes/wip/tools/other/emplace/recipe.toml similarity index 100% rename from recipes/wip/tools/emplace/recipe.toml rename to recipes/wip/tools/other/emplace/recipe.toml diff --git a/recipes/wip/tools/enchant/recipe.toml b/recipes/wip/tools/other/enchant/recipe.toml similarity index 100% rename from recipes/wip/tools/enchant/recipe.toml rename to recipes/wip/tools/other/enchant/recipe.toml diff --git a/recipes/wip/tools/envio/recipe.toml b/recipes/wip/tools/other/envio/recipe.toml similarity index 100% rename from recipes/wip/tools/envio/recipe.toml rename to recipes/wip/tools/other/envio/recipe.toml diff --git a/recipes/wip/tools/epub2txt/recipe.toml b/recipes/wip/tools/other/epub2txt/recipe.toml similarity index 100% rename from recipes/wip/tools/epub2txt/recipe.toml rename to recipes/wip/tools/other/epub2txt/recipe.toml diff --git a/recipes/wip/tools/erdtree/recipe.toml b/recipes/wip/tools/other/erdtree/recipe.toml similarity index 100% rename from recipes/wip/tools/erdtree/recipe.toml rename to recipes/wip/tools/other/erdtree/recipe.toml diff --git a/recipes/wip/tools/espanso/recipe.toml b/recipes/wip/tools/other/espanso/recipe.toml similarity index 100% rename from recipes/wip/tools/espanso/recipe.toml rename to recipes/wip/tools/other/espanso/recipe.toml diff --git a/recipes/wip/tools/eureka/recipe.toml b/recipes/wip/tools/other/eureka/recipe.toml similarity index 100% rename from recipes/wip/tools/eureka/recipe.toml rename to recipes/wip/tools/other/eureka/recipe.toml diff --git a/recipes/wip/tools/eva/recipe.toml b/recipes/wip/tools/other/eva/recipe.toml similarity index 100% rename from recipes/wip/tools/eva/recipe.toml rename to recipes/wip/tools/other/eva/recipe.toml diff --git a/recipes/wip/tools/exa/recipe.toml b/recipes/wip/tools/other/exa/recipe.toml similarity index 100% rename from recipes/wip/tools/exa/recipe.toml rename to recipes/wip/tools/other/exa/recipe.toml diff --git a/recipes/wip/tools/exhaust/recipe.toml b/recipes/wip/tools/other/exhaust/recipe.toml similarity index 100% rename from recipes/wip/tools/exhaust/recipe.toml rename to recipes/wip/tools/other/exhaust/recipe.toml diff --git a/recipes/wip/tools/exuberant-ctags/recipe.toml b/recipes/wip/tools/other/exuberant-ctags/recipe.toml similarity index 100% rename from recipes/wip/tools/exuberant-ctags/recipe.toml rename to recipes/wip/tools/other/exuberant-ctags/recipe.toml diff --git a/recipes/wip/tools/eza/recipe.toml b/recipes/wip/tools/other/eza/recipe.toml similarity index 100% rename from recipes/wip/tools/eza/recipe.toml rename to recipes/wip/tools/other/eza/recipe.toml diff --git a/recipes/wip/tools/fclones/recipe.toml b/recipes/wip/tools/other/fclones/recipe.toml similarity index 100% rename from recipes/wip/tools/fclones/recipe.toml rename to recipes/wip/tools/other/fclones/recipe.toml diff --git a/recipes/wip/tools/felix/recipe.toml b/recipes/wip/tools/other/felix/recipe.toml similarity index 100% rename from recipes/wip/tools/felix/recipe.toml rename to recipes/wip/tools/other/felix/recipe.toml diff --git a/recipes/wip/tools/fennec/recipe.toml b/recipes/wip/tools/other/fennec/recipe.toml similarity index 100% rename from recipes/wip/tools/fennec/recipe.toml rename to recipes/wip/tools/other/fennec/recipe.toml diff --git a/recipes/wip/tools/ffizer/recipe.toml b/recipes/wip/tools/other/ffizer/recipe.toml similarity index 100% rename from recipes/wip/tools/ffizer/recipe.toml rename to recipes/wip/tools/other/ffizer/recipe.toml diff --git a/recipes/wip/tools/file/recipe.toml b/recipes/wip/tools/other/file/recipe.toml similarity index 100% rename from recipes/wip/tools/file/recipe.toml rename to recipes/wip/tools/other/file/recipe.toml diff --git a/recipes/wip/tools/flameshot/recipe.toml b/recipes/wip/tools/other/flameshot/recipe.toml similarity index 100% rename from recipes/wip/tools/flameshot/recipe.toml rename to recipes/wip/tools/other/flameshot/recipe.toml diff --git a/recipes/wip/tools/flowtime/recipe.toml b/recipes/wip/tools/other/flowtime/recipe.toml similarity index 100% rename from recipes/wip/tools/flowtime/recipe.toml rename to recipes/wip/tools/other/flowtime/recipe.toml diff --git a/recipes/wip/tools/freshfetch/recipe.toml b/recipes/wip/tools/other/freshfetch/recipe.toml similarity index 100% rename from recipes/wip/tools/freshfetch/recipe.toml rename to recipes/wip/tools/other/freshfetch/recipe.toml diff --git a/recipes/wip/tools/fselect/recipe.toml b/recipes/wip/tools/other/fselect/recipe.toml similarity index 100% rename from recipes/wip/tools/fselect/recipe.toml rename to recipes/wip/tools/other/fselect/recipe.toml diff --git a/recipes/wip/tools/fuga/recipe.toml b/recipes/wip/tools/other/fuga/recipe.toml similarity index 100% rename from recipes/wip/tools/fuga/recipe.toml rename to recipes/wip/tools/other/fuga/recipe.toml diff --git a/recipes/wip/tools/funzzy/recipe.toml b/recipes/wip/tools/other/funzzy/recipe.toml similarity index 100% rename from recipes/wip/tools/funzzy/recipe.toml rename to recipes/wip/tools/other/funzzy/recipe.toml diff --git a/recipes/wip/tools/fzf-make/recipe.toml b/recipes/wip/tools/other/fzf-make/recipe.toml similarity index 100% rename from recipes/wip/tools/fzf-make/recipe.toml rename to recipes/wip/tools/other/fzf-make/recipe.toml diff --git a/recipes/wip/tools/gengo/recipe.toml b/recipes/wip/tools/other/gengo/recipe.toml similarity index 100% rename from recipes/wip/tools/gengo/recipe.toml rename to recipes/wip/tools/other/gengo/recipe.toml diff --git a/recipes/wip/tools/germ/recipe.toml b/recipes/wip/tools/other/germ/recipe.toml similarity index 100% rename from recipes/wip/tools/germ/recipe.toml rename to recipes/wip/tools/other/germ/recipe.toml diff --git a/recipes/wip/tools/gifski/recipe.toml b/recipes/wip/tools/other/gifski/recipe.toml similarity index 100% rename from recipes/wip/tools/gifski/recipe.toml rename to recipes/wip/tools/other/gifski/recipe.toml diff --git a/recipes/wip/tools/glicol-cli/recipe.toml b/recipes/wip/tools/other/glicol-cli/recipe.toml similarity index 100% rename from recipes/wip/tools/glicol-cli/recipe.toml rename to recipes/wip/tools/other/glicol-cli/recipe.toml diff --git a/recipes/wip/tools/glsl-viewer/recipe.toml b/recipes/wip/tools/other/glsl-viewer/recipe.toml similarity index 100% rename from recipes/wip/tools/glsl-viewer/recipe.toml rename to recipes/wip/tools/other/glsl-viewer/recipe.toml diff --git a/recipes/wip/tools/gnu-radio/recipe.toml b/recipes/wip/tools/other/gnu-radio/recipe.toml similarity index 100% rename from recipes/wip/tools/gnu-radio/recipe.toml rename to recipes/wip/tools/other/gnu-radio/recipe.toml diff --git a/recipes/wip/tools/gnupg-lts/recipe.toml b/recipes/wip/tools/other/gnupg-lts/recipe.toml similarity index 100% rename from recipes/wip/tools/gnupg-lts/recipe.toml rename to recipes/wip/tools/other/gnupg-lts/recipe.toml diff --git a/recipes/wip/tools/gnupg/recipe.toml b/recipes/wip/tools/other/gnupg/recipe.toml similarity index 100% rename from recipes/wip/tools/gnupg/recipe.toml rename to recipes/wip/tools/other/gnupg/recipe.toml diff --git a/recipes/wip/tools/gnuplot/recipe.toml b/recipes/wip/tools/other/gnuplot/recipe.toml similarity index 100% rename from recipes/wip/tools/gnuplot/recipe.toml rename to recipes/wip/tools/other/gnuplot/recipe.toml diff --git a/recipes/wip/tools/goldboot/recipe.toml b/recipes/wip/tools/other/goldboot/recipe.toml similarity index 100% rename from recipes/wip/tools/goldboot/recipe.toml rename to recipes/wip/tools/other/goldboot/recipe.toml diff --git a/recipes/wip/tools/goxel/recipe.toml b/recipes/wip/tools/other/goxel/recipe.toml similarity index 100% rename from recipes/wip/tools/goxel/recipe.toml rename to recipes/wip/tools/other/goxel/recipe.toml diff --git a/recipes/wip/tools/gpg-tui/recipe.toml b/recipes/wip/tools/other/gpg-tui/recipe.toml similarity index 100% rename from recipes/wip/tools/gpg-tui/recipe.toml rename to recipes/wip/tools/other/gpg-tui/recipe.toml diff --git a/recipes/wip/tools/gphoto2/recipe.toml b/recipes/wip/tools/other/gphoto2/recipe.toml similarity index 100% rename from recipes/wip/tools/gphoto2/recipe.toml rename to recipes/wip/tools/other/gphoto2/recipe.toml diff --git a/recipes/wip/tools/gping/recipe.toml b/recipes/wip/tools/other/gping/recipe.toml similarity index 100% rename from recipes/wip/tools/gping/recipe.toml rename to recipes/wip/tools/other/gping/recipe.toml diff --git a/recipes/wip/tools/gptman/recipe.toml b/recipes/wip/tools/other/gptman/recipe.toml similarity index 100% rename from recipes/wip/tools/gptman/recipe.toml rename to recipes/wip/tools/other/gptman/recipe.toml diff --git a/recipes/wip/tools/gptube-cli/recipe.toml b/recipes/wip/tools/other/gptube-cli/recipe.toml similarity index 100% rename from recipes/wip/tools/gptube-cli/recipe.toml rename to recipes/wip/tools/other/gptube-cli/recipe.toml diff --git a/recipes/wip/tools/grex/recipe.toml b/recipes/wip/tools/other/grex/recipe.toml similarity index 100% rename from recipes/wip/tools/grex/recipe.toml rename to recipes/wip/tools/other/grex/recipe.toml diff --git a/recipes/wip/tools/groff/recipe.toml b/recipes/wip/tools/other/groff/recipe.toml similarity index 100% rename from recipes/wip/tools/groff/recipe.toml rename to recipes/wip/tools/other/groff/recipe.toml diff --git a/recipes/wip/tools/guix/recipe.toml b/recipes/wip/tools/other/guix/recipe.toml similarity index 100% rename from recipes/wip/tools/guix/recipe.toml rename to recipes/wip/tools/other/guix/recipe.toml diff --git a/recipes/wip/tools/halp/recipe.toml b/recipes/wip/tools/other/halp/recipe.toml similarity index 100% rename from recipes/wip/tools/halp/recipe.toml rename to recipes/wip/tools/other/halp/recipe.toml diff --git a/recipes/wip/tools/hawkeye/recipe.toml b/recipes/wip/tools/other/hawkeye/recipe.toml similarity index 100% rename from recipes/wip/tools/hawkeye/recipe.toml rename to recipes/wip/tools/other/hawkeye/recipe.toml diff --git a/recipes/wip/tools/haylxon/recipe.toml b/recipes/wip/tools/other/haylxon/recipe.toml similarity index 100% rename from recipes/wip/tools/haylxon/recipe.toml rename to recipes/wip/tools/other/haylxon/recipe.toml diff --git a/recipes/wip/tools/helix-gpui/recipe.toml b/recipes/wip/tools/other/helix-gpui/recipe.toml similarity index 100% rename from recipes/wip/tools/helix-gpui/recipe.toml rename to recipes/wip/tools/other/helix-gpui/recipe.toml diff --git a/recipes/wip/tools/hgrep/recipe.toml b/recipes/wip/tools/other/hgrep/recipe.toml similarity index 100% rename from recipes/wip/tools/hgrep/recipe.toml rename to recipes/wip/tools/other/hgrep/recipe.toml diff --git a/recipes/wip/tools/himalaya/recipe.toml b/recipes/wip/tools/other/himalaya/recipe.toml similarity index 100% rename from recipes/wip/tools/himalaya/recipe.toml rename to recipes/wip/tools/other/himalaya/recipe.toml diff --git a/recipes/wip/tools/hired/recipe.toml b/recipes/wip/tools/other/hired/recipe.toml similarity index 100% rename from recipes/wip/tools/hired/recipe.toml rename to recipes/wip/tools/other/hired/recipe.toml diff --git a/recipes/wip/tools/hl/recipe.toml b/recipes/wip/tools/other/hl/recipe.toml similarity index 100% rename from recipes/wip/tools/hl/recipe.toml rename to recipes/wip/tools/other/hl/recipe.toml diff --git a/recipes/wip/tools/hoard/recipe.toml b/recipes/wip/tools/other/hoard/recipe.toml similarity index 100% rename from recipes/wip/tools/hoard/recipe.toml rename to recipes/wip/tools/other/hoard/recipe.toml diff --git a/recipes/wip/tools/horsetab/recipe.toml b/recipes/wip/tools/other/horsetab/recipe.toml similarity index 100% rename from recipes/wip/tools/horsetab/recipe.toml rename to recipes/wip/tools/other/horsetab/recipe.toml diff --git a/recipes/wip/tools/humphrey/recipe.toml b/recipes/wip/tools/other/humphrey/recipe.toml similarity index 100% rename from recipes/wip/tools/humphrey/recipe.toml rename to recipes/wip/tools/other/humphrey/recipe.toml diff --git a/recipes/wip/tools/hwatch/recipe.toml b/recipes/wip/tools/other/hwatch/recipe.toml similarity index 100% rename from recipes/wip/tools/hwatch/recipe.toml rename to recipes/wip/tools/other/hwatch/recipe.toml diff --git a/recipes/wip/tools/hx/recipe.toml b/recipes/wip/tools/other/hx/recipe.toml similarity index 100% rename from recipes/wip/tools/hx/recipe.toml rename to recipes/wip/tools/other/hx/recipe.toml diff --git a/recipes/wip/tools/hyperfine/recipe.toml b/recipes/wip/tools/other/hyperfine/recipe.toml similarity index 100% rename from recipes/wip/tools/hyperfine/recipe.toml rename to recipes/wip/tools/other/hyperfine/recipe.toml diff --git a/recipes/wip/tools/iamb/recipe.toml b/recipes/wip/tools/other/iamb/recipe.toml similarity index 100% rename from recipes/wip/tools/iamb/recipe.toml rename to recipes/wip/tools/other/iamb/recipe.toml diff --git a/recipes/wip/tools/igrep/recipe.toml b/recipes/wip/tools/other/igrep/recipe.toml similarity index 100% rename from recipes/wip/tools/igrep/recipe.toml rename to recipes/wip/tools/other/igrep/recipe.toml diff --git a/recipes/wip/tools/imager/recipe.toml b/recipes/wip/tools/other/imager/recipe.toml similarity index 100% rename from recipes/wip/tools/imager/recipe.toml rename to recipes/wip/tools/other/imager/recipe.toml diff --git a/recipes/wip/tools/inlyne/recipe.toml b/recipes/wip/tools/other/inlyne/recipe.toml similarity index 100% rename from recipes/wip/tools/inlyne/recipe.toml rename to recipes/wip/tools/other/inlyne/recipe.toml diff --git a/recipes/wip/tools/innernet-cli/recipe.toml b/recipes/wip/tools/other/innernet-cli/recipe.toml similarity index 100% rename from recipes/wip/tools/innernet-cli/recipe.toml rename to recipes/wip/tools/other/innernet-cli/recipe.toml diff --git a/recipes/wip/tools/innernet-server/recipe.toml b/recipes/wip/tools/other/innernet-server/recipe.toml similarity index 100% rename from recipes/wip/tools/innernet-server/recipe.toml rename to recipes/wip/tools/other/innernet-server/recipe.toml diff --git a/recipes/wip/tools/intelli-shell/recipe.toml b/recipes/wip/tools/other/intelli-shell/recipe.toml similarity index 100% rename from recipes/wip/tools/intelli-shell/recipe.toml rename to recipes/wip/tools/other/intelli-shell/recipe.toml diff --git a/recipes/wip/tools/interaction-calculus/recipe.toml b/recipes/wip/tools/other/interaction-calculus/recipe.toml similarity index 100% rename from recipes/wip/tools/interaction-calculus/recipe.toml rename to recipes/wip/tools/other/interaction-calculus/recipe.toml diff --git a/recipes/wip/tools/intermodal/recipe.toml b/recipes/wip/tools/other/intermodal/recipe.toml similarity index 100% rename from recipes/wip/tools/intermodal/recipe.toml rename to recipes/wip/tools/other/intermodal/recipe.toml diff --git a/recipes/wip/tools/itstool/recipe.toml b/recipes/wip/tools/other/itstool/recipe.toml similarity index 100% rename from recipes/wip/tools/itstool/recipe.toml rename to recipes/wip/tools/other/itstool/recipe.toml diff --git a/recipes/wip/tools/jirust/recipe.toml b/recipes/wip/tools/other/jirust/recipe.toml similarity index 100% rename from recipes/wip/tools/jirust/recipe.toml rename to recipes/wip/tools/other/jirust/recipe.toml diff --git a/recipes/wip/tools/jless/recipe.toml b/recipes/wip/tools/other/jless/recipe.toml similarity index 100% rename from recipes/wip/tools/jless/recipe.toml rename to recipes/wip/tools/other/jless/recipe.toml diff --git a/recipes/wip/tools/joshuto/recipe.toml b/recipes/wip/tools/other/joshuto/recipe.toml similarity index 100% rename from recipes/wip/tools/joshuto/recipe.toml rename to recipes/wip/tools/other/joshuto/recipe.toml diff --git a/recipes/wip/tools/jql/recipe.toml b/recipes/wip/tools/other/jql/recipe.toml similarity index 100% rename from recipes/wip/tools/jql/recipe.toml rename to recipes/wip/tools/other/jql/recipe.toml diff --git a/recipes/wip/tools/just/recipe.toml b/recipes/wip/tools/other/just/recipe.toml similarity index 100% rename from recipes/wip/tools/just/recipe.toml rename to recipes/wip/tools/other/just/recipe.toml diff --git a/recipes/wip/tools/kami/recipe.toml b/recipes/wip/tools/other/kami/recipe.toml similarity index 100% rename from recipes/wip/tools/kami/recipe.toml rename to recipes/wip/tools/other/kami/recipe.toml diff --git a/recipes/wip/tools/kanata/recipe.toml b/recipes/wip/tools/other/kanata/recipe.toml similarity index 100% rename from recipes/wip/tools/kanata/recipe.toml rename to recipes/wip/tools/other/kanata/recipe.toml diff --git a/recipes/wip/tools/kbt/recipe.toml b/recipes/wip/tools/other/kbt/recipe.toml similarity index 100% rename from recipes/wip/tools/kbt/recipe.toml rename to recipes/wip/tools/other/kbt/recipe.toml diff --git a/recipes/wip/tools/keepassxc/recipe.toml b/recipes/wip/tools/other/keepassxc/recipe.toml similarity index 100% rename from recipes/wip/tools/keepassxc/recipe.toml rename to recipes/wip/tools/other/keepassxc/recipe.toml diff --git a/recipes/wip/tools/kibi/recipe.toml b/recipes/wip/tools/other/kibi/recipe.toml similarity index 100% rename from recipes/wip/tools/kibi/recipe.toml rename to recipes/wip/tools/other/kibi/recipe.toml diff --git a/recipes/wip/tools/kodi/recipe.toml b/recipes/wip/tools/other/kodi/recipe.toml similarity index 100% rename from recipes/wip/tools/kodi/recipe.toml rename to recipes/wip/tools/other/kodi/recipe.toml diff --git a/recipes/wip/tools/lan-mouse/recipe.toml b/recipes/wip/tools/other/lan-mouse/recipe.toml similarity index 100% rename from recipes/wip/tools/lan-mouse/recipe.toml rename to recipes/wip/tools/other/lan-mouse/recipe.toml diff --git a/recipes/wip/tools/lapce/recipe.toml b/recipes/wip/tools/other/lapce/recipe.toml similarity index 100% rename from recipes/wip/tools/lapce/recipe.toml rename to recipes/wip/tools/other/lapce/recipe.toml diff --git a/recipes/wip/tools/lazy-etherscan/recipe.toml b/recipes/wip/tools/other/lazy-etherscan/recipe.toml similarity index 100% rename from recipes/wip/tools/lazy-etherscan/recipe.toml rename to recipes/wip/tools/other/lazy-etherscan/recipe.toml diff --git a/recipes/wip/tools/lcs-image-diff/recipe.toml b/recipes/wip/tools/other/lcs-image-diff/recipe.toml similarity index 100% rename from recipes/wip/tools/lcs-image-diff/recipe.toml rename to recipes/wip/tools/other/lcs-image-diff/recipe.toml diff --git a/recipes/wip/tools/lddtree-rs/recipe.toml b/recipes/wip/tools/other/lddtree-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/lddtree-rs/recipe.toml rename to recipes/wip/tools/other/lddtree-rs/recipe.toml diff --git a/recipes/wip/tools/legdur/recipe.toml b/recipes/wip/tools/other/legdur/recipe.toml similarity index 100% rename from recipes/wip/tools/legdur/recipe.toml rename to recipes/wip/tools/other/legdur/recipe.toml diff --git a/recipes/wip/tools/lemmeknow/recipe.toml b/recipes/wip/tools/other/lemmeknow/recipe.toml similarity index 100% rename from recipes/wip/tools/lemmeknow/recipe.toml rename to recipes/wip/tools/other/lemmeknow/recipe.toml diff --git a/recipes/wip/tools/less/recipe.toml b/recipes/wip/tools/other/less/recipe.toml similarity index 100% rename from recipes/wip/tools/less/recipe.toml rename to recipes/wip/tools/other/less/recipe.toml diff --git a/recipes/wip/tools/lines-rs/recipe.toml b/recipes/wip/tools/other/lines-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/lines-rs/recipe.toml rename to recipes/wip/tools/other/lines-rs/recipe.toml diff --git a/recipes/wip/tools/lineselect/recipe.toml b/recipes/wip/tools/other/lineselect/recipe.toml similarity index 100% rename from recipes/wip/tools/lineselect/recipe.toml rename to recipes/wip/tools/other/lineselect/recipe.toml diff --git a/recipes/wip/tools/logss/recipe.toml b/recipes/wip/tools/other/logss/recipe.toml similarity index 100% rename from recipes/wip/tools/logss/recipe.toml rename to recipes/wip/tools/other/logss/recipe.toml diff --git a/recipes/wip/tools/lowcharts/recipe.toml b/recipes/wip/tools/other/lowcharts/recipe.toml similarity index 100% rename from recipes/wip/tools/lowcharts/recipe.toml rename to recipes/wip/tools/other/lowcharts/recipe.toml diff --git a/recipes/wip/tools/lsd/recipe.toml b/recipes/wip/tools/other/lsd/recipe.toml similarity index 100% rename from recipes/wip/tools/lsd/recipe.toml rename to recipes/wip/tools/other/lsd/recipe.toml diff --git a/recipes/wip/tools/lsix/recipe.toml b/recipes/wip/tools/other/lsix/recipe.toml similarity index 100% rename from recipes/wip/tools/lsix/recipe.toml rename to recipes/wip/tools/other/lsix/recipe.toml diff --git a/recipes/wip/tools/lucid/recipe.toml b/recipes/wip/tools/other/lucid/recipe.toml similarity index 100% rename from recipes/wip/tools/lucid/recipe.toml rename to recipes/wip/tools/other/lucid/recipe.toml diff --git a/recipes/wip/tools/macchina/recipe.toml b/recipes/wip/tools/other/macchina/recipe.toml similarity index 100% rename from recipes/wip/tools/macchina/recipe.toml rename to recipes/wip/tools/other/macchina/recipe.toml diff --git a/recipes/wip/tools/magic-wormhole-rs/recipe.toml b/recipes/wip/tools/other/magic-wormhole-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/magic-wormhole-rs/recipe.toml rename to recipes/wip/tools/other/magic-wormhole-rs/recipe.toml diff --git a/recipes/wip/tools/mandy/recipe.toml b/recipes/wip/tools/other/mandy/recipe.toml similarity index 100% rename from recipes/wip/tools/mandy/recipe.toml rename to recipes/wip/tools/other/mandy/recipe.toml diff --git a/recipes/wip/tools/mangohud/recipe.toml b/recipes/wip/tools/other/mangohud/recipe.toml similarity index 100% rename from recipes/wip/tools/mangohud/recipe.toml rename to recipes/wip/tools/other/mangohud/recipe.toml diff --git a/recipes/wip/tools/mask/recipe.toml b/recipes/wip/tools/other/mask/recipe.toml similarity index 100% rename from recipes/wip/tools/mask/recipe.toml rename to recipes/wip/tools/other/mask/recipe.toml diff --git a/recipes/wip/tools/matui/recipe.toml b/recipes/wip/tools/other/matui/recipe.toml similarity index 100% rename from recipes/wip/tools/matui/recipe.toml rename to recipes/wip/tools/other/matui/recipe.toml diff --git a/recipes/wip/tools/maze-tui/recipe.toml b/recipes/wip/tools/other/maze-tui/recipe.toml similarity index 100% rename from recipes/wip/tools/maze-tui/recipe.toml rename to recipes/wip/tools/other/maze-tui/recipe.toml diff --git a/recipes/wip/tools/mcfly/recipe.toml b/recipes/wip/tools/other/mcfly/recipe.toml similarity index 100% rename from recipes/wip/tools/mcfly/recipe.toml rename to recipes/wip/tools/other/mcfly/recipe.toml diff --git a/recipes/wip/tools/mdbook/recipe.toml b/recipes/wip/tools/other/mdbook/recipe.toml similarity index 100% rename from recipes/wip/tools/mdbook/recipe.toml rename to recipes/wip/tools/other/mdbook/recipe.toml diff --git a/recipes/wip/tools/menyoki/recipe.toml b/recipes/wip/tools/other/menyoki/recipe.toml similarity index 100% rename from recipes/wip/tools/menyoki/recipe.toml rename to recipes/wip/tools/other/menyoki/recipe.toml diff --git a/recipes/wip/tools/mercurial/recipe.toml b/recipes/wip/tools/other/mercurial/recipe.toml similarity index 100% rename from recipes/wip/tools/mercurial/recipe.toml rename to recipes/wip/tools/other/mercurial/recipe.toml diff --git a/recipes/wip/tools/mhv/recipe.toml b/recipes/wip/tools/other/mhv/recipe.toml similarity index 100% rename from recipes/wip/tools/mhv/recipe.toml rename to recipes/wip/tools/other/mhv/recipe.toml diff --git a/recipes/wip/tools/miniaudicle/recipe.toml b/recipes/wip/tools/other/miniaudicle/recipe.toml similarity index 100% rename from recipes/wip/tools/miniaudicle/recipe.toml rename to recipes/wip/tools/other/miniaudicle/recipe.toml diff --git a/recipes/wip/tools/minmon/recipe.toml b/recipes/wip/tools/other/minmon/recipe.toml similarity index 100% rename from recipes/wip/tools/minmon/recipe.toml rename to recipes/wip/tools/other/minmon/recipe.toml diff --git a/recipes/wip/tools/mkisofs-rs/recipe.toml b/recipes/wip/tools/other/mkisofs-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/mkisofs-rs/recipe.toml rename to recipes/wip/tools/other/mkisofs-rs/recipe.toml diff --git a/recipes/wip/tools/mosh/recipe.toml b/recipes/wip/tools/other/mosh/recipe.toml similarity index 100% rename from recipes/wip/tools/mosh/recipe.toml rename to recipes/wip/tools/other/mosh/recipe.toml diff --git a/recipes/wip/tools/mprocs/recipe.toml b/recipes/wip/tools/other/mprocs/recipe.toml similarity index 100% rename from recipes/wip/tools/mprocs/recipe.toml rename to recipes/wip/tools/other/mprocs/recipe.toml diff --git a/recipes/wip/tools/navi/recipe.toml b/recipes/wip/tools/other/navi/recipe.toml similarity index 100% rename from recipes/wip/tools/navi/recipe.toml rename to recipes/wip/tools/other/navi/recipe.toml diff --git a/recipes/wip/tools/neofetch/recipe.toml b/recipes/wip/tools/other/neofetch/recipe.toml similarity index 100% rename from recipes/wip/tools/neofetch/recipe.toml rename to recipes/wip/tools/other/neofetch/recipe.toml diff --git a/recipes/wip/tools/neovide/recipe.toml b/recipes/wip/tools/other/neovide/recipe.toml similarity index 100% rename from recipes/wip/tools/neovide/recipe.toml rename to recipes/wip/tools/other/neovide/recipe.toml diff --git a/recipes/wip/tools/neovim/recipe.toml b/recipes/wip/tools/other/neovim/recipe.toml similarity index 100% rename from recipes/wip/tools/neovim/recipe.toml rename to recipes/wip/tools/other/neovim/recipe.toml diff --git a/recipes/wip/tools/news-rs/recipe.toml b/recipes/wip/tools/other/news-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/news-rs/recipe.toml rename to recipes/wip/tools/other/news-rs/recipe.toml diff --git a/recipes/wip/tools/nickel/recipe.toml b/recipes/wip/tools/other/nickel/recipe.toml similarity index 100% rename from recipes/wip/tools/nickel/recipe.toml rename to recipes/wip/tools/other/nickel/recipe.toml diff --git a/recipes/wip/tools/nix/recipe.toml b/recipes/wip/tools/other/nix/recipe.toml similarity index 100% rename from recipes/wip/tools/nix/recipe.toml rename to recipes/wip/tools/other/nix/recipe.toml diff --git a/recipes/wip/tools/nomad/recipe.toml b/recipes/wip/tools/other/nomad/recipe.toml similarity index 100% rename from recipes/wip/tools/nomad/recipe.toml rename to recipes/wip/tools/other/nomad/recipe.toml diff --git a/recipes/wip/tools/notnow/recipe.toml b/recipes/wip/tools/other/notnow/recipe.toml similarity index 100% rename from recipes/wip/tools/notnow/recipe.toml rename to recipes/wip/tools/other/notnow/recipe.toml diff --git a/recipes/wip/tools/objdiff/recipe.toml b/recipes/wip/tools/other/objdiff/recipe.toml similarity index 100% rename from recipes/wip/tools/objdiff/recipe.toml rename to recipes/wip/tools/other/objdiff/recipe.toml diff --git a/recipes/wip/tools/obs-studio/recipe.toml b/recipes/wip/tools/other/obs-studio/recipe.toml similarity index 100% rename from recipes/wip/tools/obs-studio/recipe.toml rename to recipes/wip/tools/other/obs-studio/recipe.toml diff --git a/recipes/wip/tools/odilia/recipe.toml b/recipes/wip/tools/other/odilia/recipe.toml similarity index 100% rename from recipes/wip/tools/odilia/recipe.toml rename to recipes/wip/tools/other/odilia/recipe.toml diff --git a/recipes/wip/tools/okteta/recipe.toml b/recipes/wip/tools/other/okteta/recipe.toml similarity index 100% rename from recipes/wip/tools/okteta/recipe.toml rename to recipes/wip/tools/other/okteta/recipe.toml diff --git a/recipes/wip/tools/omega/recipe.toml b/recipes/wip/tools/other/omega/recipe.toml similarity index 100% rename from recipes/wip/tools/omega/recipe.toml rename to recipes/wip/tools/other/omega/recipe.toml diff --git a/recipes/wip/tools/onefetch/recipe.toml b/recipes/wip/tools/other/onefetch/recipe.toml similarity index 100% rename from recipes/wip/tools/onefetch/recipe.toml rename to recipes/wip/tools/other/onefetch/recipe.toml diff --git a/recipes/wip/tools/oranda/recipe.toml b/recipes/wip/tools/other/oranda/recipe.toml similarity index 100% rename from recipes/wip/tools/oranda/recipe.toml rename to recipes/wip/tools/other/oranda/recipe.toml diff --git a/recipes/wip/tools/orchaldir-texture-generator/recipe.toml b/recipes/wip/tools/other/orchaldir-texture-generator/recipe.toml similarity index 100% rename from recipes/wip/tools/orchaldir-texture-generator/recipe.toml rename to recipes/wip/tools/other/orchaldir-texture-generator/recipe.toml diff --git a/recipes/wip/tools/oxipng/recipe.toml b/recipes/wip/tools/other/oxipng/recipe.toml similarity index 100% rename from recipes/wip/tools/oxipng/recipe.toml rename to recipes/wip/tools/other/oxipng/recipe.toml diff --git a/recipes/wip/tools/parabolic/recipe.toml b/recipes/wip/tools/other/parabolic/recipe.toml similarity index 100% rename from recipes/wip/tools/parabolic/recipe.toml rename to recipes/wip/tools/other/parabolic/recipe.toml diff --git a/recipes/wip/tools/patchelf/recipe.toml b/recipes/wip/tools/other/patchelf/recipe.toml similarity index 100% rename from recipes/wip/tools/patchelf/recipe.toml rename to recipes/wip/tools/other/patchelf/recipe.toml diff --git a/recipes/wip/tools/pciutils/recipe.toml b/recipes/wip/tools/other/pciutils/recipe.toml similarity index 100% rename from recipes/wip/tools/pciutils/recipe.toml rename to recipes/wip/tools/other/pciutils/recipe.toml diff --git a/recipes/wip/tools/pdbview/recipe.toml b/recipes/wip/tools/other/pdbview/recipe.toml similarity index 100% rename from recipes/wip/tools/pdbview/recipe.toml rename to recipes/wip/tools/other/pdbview/recipe.toml diff --git a/recipes/wip/tools/pdu/recipe.toml b/recipes/wip/tools/other/pdu/recipe.toml similarity index 100% rename from recipes/wip/tools/pdu/recipe.toml rename to recipes/wip/tools/other/pdu/recipe.toml diff --git a/recipes/wip/tools/pfetch-rs/recipe.toml b/recipes/wip/tools/other/pfetch-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/pfetch-rs/recipe.toml rename to recipes/wip/tools/other/pfetch-rs/recipe.toml diff --git a/recipes/wip/tools/pidgin/recipe.toml b/recipes/wip/tools/other/pidgin/recipe.toml similarity index 100% rename from recipes/wip/tools/pidgin/recipe.toml rename to recipes/wip/tools/other/pidgin/recipe.toml diff --git a/recipes/wip/tools/pipr/recipe.toml b/recipes/wip/tools/other/pipr/recipe.toml similarity index 100% rename from recipes/wip/tools/pipr/recipe.toml rename to recipes/wip/tools/other/pipr/recipe.toml diff --git a/recipes/wip/tools/pixcil/recipe.toml b/recipes/wip/tools/other/pixcil/recipe.toml similarity index 100% rename from recipes/wip/tools/pixcil/recipe.toml rename to recipes/wip/tools/other/pixcil/recipe.toml diff --git a/recipes/wip/tools/pixelsort/recipe.toml b/recipes/wip/tools/other/pixelsort/recipe.toml similarity index 100% rename from recipes/wip/tools/pixelsort/recipe.toml rename to recipes/wip/tools/other/pixelsort/recipe.toml diff --git a/recipes/wip/tools/please/recipe.toml b/recipes/wip/tools/other/please/recipe.toml similarity index 100% rename from recipes/wip/tools/please/recipe.toml rename to recipes/wip/tools/other/please/recipe.toml diff --git a/recipes/wip/tools/pomky/recipe.toml b/recipes/wip/tools/other/pomky/recipe.toml similarity index 100% rename from recipes/wip/tools/pomky/recipe.toml rename to recipes/wip/tools/other/pomky/recipe.toml diff --git a/recipes/wip/tools/porsmo/recipe.toml b/recipes/wip/tools/other/porsmo/recipe.toml similarity index 100% rename from recipes/wip/tools/porsmo/recipe.toml rename to recipes/wip/tools/other/porsmo/recipe.toml diff --git a/recipes/wip/tools/posixutils-rs/recipe.toml b/recipes/wip/tools/other/posixutils-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/posixutils-rs/recipe.toml rename to recipes/wip/tools/other/posixutils-rs/recipe.toml diff --git a/recipes/wip/tools/potrace/recipe.toml b/recipes/wip/tools/other/potrace/recipe.toml similarity index 100% rename from recipes/wip/tools/potrace/recipe.toml rename to recipes/wip/tools/other/potrace/recipe.toml diff --git a/recipes/wip/tools/presenterm/recipe.toml b/recipes/wip/tools/other/presenterm/recipe.toml similarity index 100% rename from recipes/wip/tools/presenterm/recipe.toml rename to recipes/wip/tools/other/presenterm/recipe.toml diff --git a/recipes/wip/tools/process-viewer/recipe.toml b/recipes/wip/tools/other/process-viewer/recipe.toml similarity index 100% rename from recipes/wip/tools/process-viewer/recipe.toml rename to recipes/wip/tools/other/process-viewer/recipe.toml diff --git a/recipes/wip/tools/procs/recipe.toml b/recipes/wip/tools/other/procs/recipe.toml similarity index 100% rename from recipes/wip/tools/procs/recipe.toml rename to recipes/wip/tools/other/procs/recipe.toml diff --git a/recipes/wip/tools/pueue/recipe.toml b/recipes/wip/tools/other/pueue/recipe.toml similarity index 100% rename from recipes/wip/tools/pueue/recipe.toml rename to recipes/wip/tools/other/pueue/recipe.toml diff --git a/recipes/wip/tools/qalculate-gtk/recipe.toml b/recipes/wip/tools/other/qalculate-gtk/recipe.toml similarity index 100% rename from recipes/wip/tools/qalculate-gtk/recipe.toml rename to recipes/wip/tools/other/qalculate-gtk/recipe.toml diff --git a/recipes/wip/tools/qrrs/recipe.toml b/recipes/wip/tools/other/qrrs/recipe.toml similarity index 100% rename from recipes/wip/tools/qrrs/recipe.toml rename to recipes/wip/tools/other/qrrs/recipe.toml diff --git a/recipes/wip/tools/qrtool/recipe.toml b/recipes/wip/tools/other/qrtool/recipe.toml similarity index 100% rename from recipes/wip/tools/qrtool/recipe.toml rename to recipes/wip/tools/other/qrtool/recipe.toml diff --git a/recipes/wip/tools/qv/recipe.toml b/recipes/wip/tools/other/qv/recipe.toml similarity index 100% rename from recipes/wip/tools/qv/recipe.toml rename to recipes/wip/tools/other/qv/recipe.toml diff --git a/recipes/wip/tools/rage/recipe.toml b/recipes/wip/tools/other/rage/recipe.toml similarity index 100% rename from recipes/wip/tools/rage/recipe.toml rename to recipes/wip/tools/other/rage/recipe.toml diff --git a/recipes/wip/tools/rana/recipe.toml b/recipes/wip/tools/other/rana/recipe.toml similarity index 100% rename from recipes/wip/tools/rana/recipe.toml rename to recipes/wip/tools/other/rana/recipe.toml diff --git a/recipes/wip/tools/rargs/recipe.toml b/recipes/wip/tools/other/rargs/recipe.toml similarity index 100% rename from recipes/wip/tools/rargs/recipe.toml rename to recipes/wip/tools/other/rargs/recipe.toml diff --git a/recipes/wip/tools/rclone/recipe.toml b/recipes/wip/tools/other/rclone/recipe.toml similarity index 100% rename from recipes/wip/tools/rclone/recipe.toml rename to recipes/wip/tools/other/rclone/recipe.toml diff --git a/recipes/wip/tools/remmina/recipe.toml b/recipes/wip/tools/other/remmina/recipe.toml similarity index 100% rename from recipes/wip/tools/remmina/recipe.toml rename to recipes/wip/tools/other/remmina/recipe.toml diff --git a/recipes/wip/tools/repgrep/recipe.toml b/recipes/wip/tools/other/repgrep/recipe.toml similarity index 100% rename from recipes/wip/tools/repgrep/recipe.toml rename to recipes/wip/tools/other/repgrep/recipe.toml diff --git a/recipes/wip/tools/restic/recipe.toml b/recipes/wip/tools/other/restic/recipe.toml similarity index 100% rename from recipes/wip/tools/restic/recipe.toml rename to recipes/wip/tools/other/restic/recipe.toml diff --git a/recipes/wip/tools/rfetch/recipe.toml b/recipes/wip/tools/other/rfetch/recipe.toml similarity index 100% rename from recipes/wip/tools/rfetch/recipe.toml rename to recipes/wip/tools/other/rfetch/recipe.toml diff --git a/recipes/wip/tools/rfz/recipe.toml b/recipes/wip/tools/other/rfz/recipe.toml similarity index 100% rename from recipes/wip/tools/rfz/recipe.toml rename to recipes/wip/tools/other/rfz/recipe.toml diff --git a/recipes/wip/tools/rioterm/recipe.toml b/recipes/wip/tools/other/rioterm/recipe.toml similarity index 100% rename from recipes/wip/tools/rioterm/recipe.toml rename to recipes/wip/tools/other/rioterm/recipe.toml diff --git a/recipes/wip/tools/rip/recipe.toml b/recipes/wip/tools/other/rip/recipe.toml similarity index 100% rename from recipes/wip/tools/rip/recipe.toml rename to recipes/wip/tools/other/rip/recipe.toml diff --git a/recipes/wip/tools/ripasso/recipe.toml b/recipes/wip/tools/other/ripasso/recipe.toml similarity index 100% rename from recipes/wip/tools/ripasso/recipe.toml rename to recipes/wip/tools/other/ripasso/recipe.toml diff --git a/recipes/wip/tools/ripgrep-all/recipe.toml b/recipes/wip/tools/other/ripgrep-all/recipe.toml similarity index 100% rename from recipes/wip/tools/ripgrep-all/recipe.toml rename to recipes/wip/tools/other/ripgrep-all/recipe.toml diff --git a/recipes/wip/tools/ripsecrets/recipe.toml b/recipes/wip/tools/other/ripsecrets/recipe.toml similarity index 100% rename from recipes/wip/tools/ripsecrets/recipe.toml rename to recipes/wip/tools/other/ripsecrets/recipe.toml diff --git a/recipes/wip/tools/rix/recipe.toml b/recipes/wip/tools/other/rix/recipe.toml similarity index 100% rename from recipes/wip/tools/rix/recipe.toml rename to recipes/wip/tools/other/rix/recipe.toml diff --git a/recipes/wip/tools/rnr/recipe.toml b/recipes/wip/tools/other/rnr/recipe.toml similarity index 100% rename from recipes/wip/tools/rnr/recipe.toml rename to recipes/wip/tools/other/rnr/recipe.toml diff --git a/recipes/wip/tools/rq/recipe.toml b/recipes/wip/tools/other/rq/recipe.toml similarity index 100% rename from recipes/wip/tools/rq/recipe.toml rename to recipes/wip/tools/other/rq/recipe.toml diff --git a/recipes/wip/tools/rsftch/recipe.toml b/recipes/wip/tools/other/rsftch/recipe.toml similarity index 100% rename from recipes/wip/tools/rsftch/recipe.toml rename to recipes/wip/tools/other/rsftch/recipe.toml diff --git a/recipes/wip/tools/rsync/recipe.toml b/recipes/wip/tools/other/rsync/recipe.toml similarity index 100% rename from recipes/wip/tools/rsync/recipe.toml rename to recipes/wip/tools/other/rsync/recipe.toml diff --git a/recipes/wip/tools/rtorrent/recipe.toml b/recipes/wip/tools/other/rtorrent/recipe.toml similarity index 100% rename from recipes/wip/tools/rtorrent/recipe.toml rename to recipes/wip/tools/other/rtorrent/recipe.toml diff --git a/recipes/wip/tools/ruke/recipe.toml b/recipes/wip/tools/other/ruke/recipe.toml similarity index 100% rename from recipes/wip/tools/ruke/recipe.toml rename to recipes/wip/tools/other/ruke/recipe.toml diff --git a/recipes/wip/tools/run/recipe.toml b/recipes/wip/tools/other/run/recipe.toml similarity index 100% rename from recipes/wip/tools/run/recipe.toml rename to recipes/wip/tools/other/run/recipe.toml diff --git a/recipes/wip/tools/ruplacer/recipe.toml b/recipes/wip/tools/other/ruplacer/recipe.toml similarity index 100% rename from recipes/wip/tools/ruplacer/recipe.toml rename to recipes/wip/tools/other/ruplacer/recipe.toml diff --git a/recipes/wip/tools/rustlings/recipe.toml b/recipes/wip/tools/other/rustlings/recipe.toml similarity index 100% rename from recipes/wip/tools/rustlings/recipe.toml rename to recipes/wip/tools/other/rustlings/recipe.toml diff --git a/recipes/wip/tools/rusty-krab-manager/recipe.toml b/recipes/wip/tools/other/rusty-krab-manager/recipe.toml similarity index 100% rename from recipes/wip/tools/rusty-krab-manager/recipe.toml rename to recipes/wip/tools/other/rusty-krab-manager/recipe.toml diff --git a/recipes/wip/tools/rusty-psn-cli/recipe.toml b/recipes/wip/tools/other/rusty-psn-cli/recipe.toml similarity index 100% rename from recipes/wip/tools/rusty-psn-cli/recipe.toml rename to recipes/wip/tools/other/rusty-psn-cli/recipe.toml diff --git a/recipes/wip/tools/rusty-psn-gui/recipe.toml b/recipes/wip/tools/other/rusty-psn-gui/recipe.toml similarity index 100% rename from recipes/wip/tools/rusty-psn-gui/recipe.toml rename to recipes/wip/tools/other/rusty-psn-gui/recipe.toml diff --git a/recipes/wip/tools/rusty/recipe.toml b/recipes/wip/tools/other/rusty/recipe.toml similarity index 100% rename from recipes/wip/tools/rusty/recipe.toml rename to recipes/wip/tools/other/rusty/recipe.toml diff --git a/recipes/wip/tools/rusync/recipe.toml b/recipes/wip/tools/other/rusync/recipe.toml similarity index 100% rename from recipes/wip/tools/rusync/recipe.toml rename to recipes/wip/tools/other/rusync/recipe.toml diff --git a/recipes/wip/tools/sad/recipe.toml b/recipes/wip/tools/other/sad/recipe.toml similarity index 100% rename from recipes/wip/tools/sad/recipe.toml rename to recipes/wip/tools/other/sad/recipe.toml diff --git a/recipes/wip/tools/sam/recipe.toml b/recipes/wip/tools/other/sam/recipe.toml similarity index 100% rename from recipes/wip/tools/sam/recipe.toml rename to recipes/wip/tools/other/sam/recipe.toml diff --git a/recipes/wip/tools/scribus/recipe.toml b/recipes/wip/tools/other/scribus/recipe.toml similarity index 100% rename from recipes/wip/tools/scribus/recipe.toml rename to recipes/wip/tools/other/scribus/recipe.toml diff --git a/recipes/wip/tools/scrying/recipe.toml b/recipes/wip/tools/other/scrying/recipe.toml similarity index 100% rename from recipes/wip/tools/scrying/recipe.toml rename to recipes/wip/tools/other/scrying/recipe.toml diff --git a/recipes/wip/tools/sd/recipe.toml b/recipes/wip/tools/other/sd/recipe.toml similarity index 100% rename from recipes/wip/tools/sd/recipe.toml rename to recipes/wip/tools/other/sd/recipe.toml diff --git a/recipes/wip/tools/shd/recipe.toml b/recipes/wip/tools/other/shd/recipe.toml similarity index 100% rename from recipes/wip/tools/shd/recipe.toml rename to recipes/wip/tools/other/shd/recipe.toml diff --git a/recipes/wip/tools/shellfirm/recipe.toml b/recipes/wip/tools/other/shellfirm/recipe.toml similarity index 100% rename from recipes/wip/tools/shellfirm/recipe.toml rename to recipes/wip/tools/other/shellfirm/recipe.toml diff --git a/recipes/wip/tools/shokunin/recipe.toml b/recipes/wip/tools/other/shokunin/recipe.toml similarity index 100% rename from recipes/wip/tools/shokunin/recipe.toml rename to recipes/wip/tools/other/shokunin/recipe.toml diff --git a/recipes/wip/tools/sig/recipe.toml b/recipes/wip/tools/other/sig/recipe.toml similarity index 100% rename from recipes/wip/tools/sig/recipe.toml rename to recipes/wip/tools/other/sig/recipe.toml diff --git a/recipes/wip/tools/sigi/recipe.toml b/recipes/wip/tools/other/sigi/recipe.toml similarity index 100% rename from recipes/wip/tools/sigi/recipe.toml rename to recipes/wip/tools/other/sigi/recipe.toml diff --git a/recipes/wip/tools/simplemoji/recipe.toml b/recipes/wip/tools/other/simplemoji/recipe.toml similarity index 100% rename from recipes/wip/tools/simplemoji/recipe.toml rename to recipes/wip/tools/other/simplemoji/recipe.toml diff --git a/recipes/wip/tools/skim/recipe.toml b/recipes/wip/tools/other/skim/recipe.toml similarity index 100% rename from recipes/wip/tools/skim/recipe.toml rename to recipes/wip/tools/other/skim/recipe.toml diff --git a/recipes/wip/tools/skyspell/recipe.toml b/recipes/wip/tools/other/skyspell/recipe.toml similarity index 100% rename from recipes/wip/tools/skyspell/recipe.toml rename to recipes/wip/tools/other/skyspell/recipe.toml diff --git a/recipes/wip/tools/smartmontools/recipe.toml b/recipes/wip/tools/other/smartmontools/recipe.toml similarity index 100% rename from recipes/wip/tools/smartmontools/recipe.toml rename to recipes/wip/tools/other/smartmontools/recipe.toml diff --git a/recipes/wip/tools/snappy-rs/recipe.toml b/recipes/wip/tools/other/snappy-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/snappy-rs/recipe.toml rename to recipes/wip/tools/other/snappy-rs/recipe.toml diff --git a/recipes/wip/tools/spacer/recipe.toml b/recipes/wip/tools/other/spacer/recipe.toml similarity index 100% rename from recipes/wip/tools/spacer/recipe.toml rename to recipes/wip/tools/other/spacer/recipe.toml diff --git a/recipes/wip/tools/spidey/recipe.toml b/recipes/wip/tools/other/spidey/recipe.toml similarity index 100% rename from recipes/wip/tools/spidey/recipe.toml rename to recipes/wip/tools/other/spidey/recipe.toml diff --git a/recipes/wip/tools/sprinkles/recipe.toml b/recipes/wip/tools/other/sprinkles/recipe.toml similarity index 100% rename from recipes/wip/tools/sprinkles/recipe.toml rename to recipes/wip/tools/other/sprinkles/recipe.toml diff --git a/recipes/wip/tools/sshx/recipe.toml b/recipes/wip/tools/other/sshx/recipe.toml similarity index 100% rename from recipes/wip/tools/sshx/recipe.toml rename to recipes/wip/tools/other/sshx/recipe.toml diff --git a/recipes/wip/tools/starship/recipe.toml b/recipes/wip/tools/other/starship/recipe.toml similarity index 100% rename from recipes/wip/tools/starship/recipe.toml rename to recipes/wip/tools/other/starship/recipe.toml diff --git a/recipes/wip/tools/stellarium/recipe.toml b/recipes/wip/tools/other/stellarium/recipe.toml similarity index 100% rename from recipes/wip/tools/stellarium/recipe.toml rename to recipes/wip/tools/other/stellarium/recipe.toml diff --git a/recipes/wip/tools/stress-ng/recipe.toml b/recipes/wip/tools/other/stress-ng/recipe.toml similarity index 100% rename from recipes/wip/tools/stress-ng/recipe.toml rename to recipes/wip/tools/other/stress-ng/recipe.toml diff --git a/recipes/wip/tools/succeed2ban-tui/recipe.toml b/recipes/wip/tools/other/succeed2ban-tui/recipe.toml similarity index 100% rename from recipes/wip/tools/succeed2ban-tui/recipe.toml rename to recipes/wip/tools/other/succeed2ban-tui/recipe.toml diff --git a/recipes/wip/tools/sudo-rs/recipe.toml b/recipes/wip/tools/other/sudo-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/sudo-rs/recipe.toml rename to recipes/wip/tools/other/sudo-rs/recipe.toml diff --git a/recipes/wip/tools/sued/recipe.toml b/recipes/wip/tools/other/sued/recipe.toml similarity index 100% rename from recipes/wip/tools/sued/recipe.toml rename to recipes/wip/tools/other/sued/recipe.toml diff --git a/recipes/wip/tools/svg2pdf/recipe.toml b/recipes/wip/tools/other/svg2pdf/recipe.toml similarity index 100% rename from recipes/wip/tools/svg2pdf/recipe.toml rename to recipes/wip/tools/other/svg2pdf/recipe.toml diff --git a/recipes/wip/tools/swc/recipe.toml b/recipes/wip/tools/other/swc/recipe.toml similarity index 100% rename from recipes/wip/tools/swc/recipe.toml rename to recipes/wip/tools/other/swc/recipe.toml diff --git a/recipes/wip/tools/sws/recipe.toml b/recipes/wip/tools/other/sws/recipe.toml similarity index 100% rename from recipes/wip/tools/sws/recipe.toml rename to recipes/wip/tools/other/sws/recipe.toml diff --git a/recipes/wip/tools/t-rec/recipe.toml b/recipes/wip/tools/other/t-rec/recipe.toml similarity index 100% rename from recipes/wip/tools/t-rec/recipe.toml rename to recipes/wip/tools/other/t-rec/recipe.toml diff --git a/recipes/wip/tools/tailspin/recipe.toml b/recipes/wip/tools/other/tailspin/recipe.toml similarity index 100% rename from recipes/wip/tools/tailspin/recipe.toml rename to recipes/wip/tools/other/tailspin/recipe.toml diff --git a/recipes/wip/tools/tarlz/recipe.toml b/recipes/wip/tools/other/tarlz/recipe.toml similarity index 100% rename from recipes/wip/tools/tarlz/recipe.toml rename to recipes/wip/tools/other/tarlz/recipe.toml diff --git a/recipes/wip/tools/task-maker-rs/recipe.toml b/recipes/wip/tools/other/task-maker-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/task-maker-rs/recipe.toml rename to recipes/wip/tools/other/task-maker-rs/recipe.toml diff --git a/recipes/wip/tools/taskserver/recipe.toml b/recipes/wip/tools/other/taskserver/recipe.toml similarity index 100% rename from recipes/wip/tools/taskserver/recipe.toml rename to recipes/wip/tools/other/taskserver/recipe.toml diff --git a/recipes/wip/tools/taskwarrior-tui/recipe.toml b/recipes/wip/tools/other/taskwarrior-tui/recipe.toml similarity index 100% rename from recipes/wip/tools/taskwarrior-tui/recipe.toml rename to recipes/wip/tools/other/taskwarrior-tui/recipe.toml diff --git a/recipes/wip/tools/taskwarrior/recipe.toml b/recipes/wip/tools/other/taskwarrior/recipe.toml similarity index 100% rename from recipes/wip/tools/taskwarrior/recipe.toml rename to recipes/wip/tools/other/taskwarrior/recipe.toml diff --git a/recipes/wip/tools/tauro-monitor/recipe.toml b/recipes/wip/tools/other/tauro-monitor/recipe.toml similarity index 100% rename from recipes/wip/tools/tauro-monitor/recipe.toml rename to recipes/wip/tools/other/tauro-monitor/recipe.toml diff --git a/recipes/wip/tools/tealdeer/recipe.toml b/recipes/wip/tools/other/tealdeer/recipe.toml similarity index 100% rename from recipes/wip/tools/tealdeer/recipe.toml rename to recipes/wip/tools/other/tealdeer/recipe.toml diff --git a/recipes/wip/tools/teip/recipe.toml b/recipes/wip/tools/other/teip/recipe.toml similarity index 100% rename from recipes/wip/tools/teip/recipe.toml rename to recipes/wip/tools/other/teip/recipe.toml diff --git a/recipes/wip/tools/termimage/recipe.toml b/recipes/wip/tools/other/termimage/recipe.toml similarity index 100% rename from recipes/wip/tools/termimage/recipe.toml rename to recipes/wip/tools/other/termimage/recipe.toml diff --git a/recipes/wip/tools/thwack/recipe.toml b/recipes/wip/tools/other/thwack/recipe.toml similarity index 100% rename from recipes/wip/tools/thwack/recipe.toml rename to recipes/wip/tools/other/thwack/recipe.toml diff --git a/recipes/wip/tools/tin-summer/recipe.toml b/recipes/wip/tools/other/tin-summer/recipe.toml similarity index 100% rename from recipes/wip/tools/tin-summer/recipe.toml rename to recipes/wip/tools/other/tin-summer/recipe.toml diff --git a/recipes/wip/tools/tinywasm/recipe.toml b/recipes/wip/tools/other/tinywasm/recipe.toml similarity index 100% rename from recipes/wip/tools/tinywasm/recipe.toml rename to recipes/wip/tools/other/tinywasm/recipe.toml diff --git a/recipes/wip/tools/tl-rs/recipe.toml b/recipes/wip/tools/other/tl-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/tl-rs/recipe.toml rename to recipes/wip/tools/other/tl-rs/recipe.toml diff --git a/recipes/wip/tools/tock/recipe.toml b/recipes/wip/tools/other/tock/recipe.toml similarity index 100% rename from recipes/wip/tools/tock/recipe.toml rename to recipes/wip/tools/other/tock/recipe.toml diff --git a/recipes/wip/tools/toipe/recipe.toml b/recipes/wip/tools/other/toipe/recipe.toml similarity index 100% rename from recipes/wip/tools/toipe/recipe.toml rename to recipes/wip/tools/other/toipe/recipe.toml diff --git a/recipes/wip/tools/topgrade/recipe.toml b/recipes/wip/tools/other/topgrade/recipe.toml similarity index 100% rename from recipes/wip/tools/topgrade/recipe.toml rename to recipes/wip/tools/other/topgrade/recipe.toml diff --git a/recipes/wip/tools/torrust-tracker/recipe.toml b/recipes/wip/tools/other/torrust-tracker/recipe.toml similarity index 100% rename from recipes/wip/tools/torrust-tracker/recipe.toml rename to recipes/wip/tools/other/torrust-tracker/recipe.toml diff --git a/recipes/wip/tools/toybox/recipe.toml b/recipes/wip/tools/other/toybox/recipe.toml similarity index 100% rename from recipes/wip/tools/toybox/recipe.toml rename to recipes/wip/tools/other/toybox/recipe.toml diff --git a/recipes/wip/tools/tp-note/recipe.toml b/recipes/wip/tools/other/tp-note/recipe.toml similarity index 100% rename from recipes/wip/tools/tp-note/recipe.toml rename to recipes/wip/tools/other/tp-note/recipe.toml diff --git a/recipes/wip/tools/tq/recipe.toml b/recipes/wip/tools/other/tq/recipe.toml similarity index 100% rename from recipes/wip/tools/tq/recipe.toml rename to recipes/wip/tools/other/tq/recipe.toml diff --git a/recipes/wip/tools/treq/recipe.toml b/recipes/wip/tools/other/treq/recipe.toml similarity index 100% rename from recipes/wip/tools/treq/recipe.toml rename to recipes/wip/tools/other/treq/recipe.toml diff --git a/recipes/wip/tools/tsuchita/recipe.toml b/recipes/wip/tools/other/tsuchita/recipe.toml similarity index 100% rename from recipes/wip/tools/tsuchita/recipe.toml rename to recipes/wip/tools/other/tsuchita/recipe.toml diff --git a/recipes/wip/tools/tts-tui/recipe.toml b/recipes/wip/tools/other/tts-tui/recipe.toml similarity index 100% rename from recipes/wip/tools/tts-tui/recipe.toml rename to recipes/wip/tools/other/tts-tui/recipe.toml diff --git a/recipes/wip/tools/ttyper/recipe.toml b/recipes/wip/tools/other/ttyper/recipe.toml similarity index 100% rename from recipes/wip/tools/ttyper/recipe.toml rename to recipes/wip/tools/other/ttyper/recipe.toml diff --git a/recipes/wip/tools/tui-journal/recipe.toml b/recipes/wip/tools/other/tui-journal/recipe.toml similarity index 100% rename from recipes/wip/tools/tui-journal/recipe.toml rename to recipes/wip/tools/other/tui-journal/recipe.toml diff --git a/recipes/wip/tools/tvix/recipe.toml b/recipes/wip/tools/other/tvix/recipe.toml similarity index 100% rename from recipes/wip/tools/tvix/recipe.toml rename to recipes/wip/tools/other/tvix/recipe.toml diff --git a/recipes/wip/tools/typst/recipe.toml b/recipes/wip/tools/other/typst/recipe.toml similarity index 100% rename from recipes/wip/tools/typst/recipe.toml rename to recipes/wip/tools/other/typst/recipe.toml diff --git a/recipes/wip/tools/uget/recipe.toml b/recipes/wip/tools/other/uget/recipe.toml similarity index 100% rename from recipes/wip/tools/uget/recipe.toml rename to recipes/wip/tools/other/uget/recipe.toml diff --git a/recipes/wip/tools/upscaler/recipe.toml b/recipes/wip/tools/other/upscaler/recipe.toml similarity index 100% rename from recipes/wip/tools/upscaler/recipe.toml rename to recipes/wip/tools/other/upscaler/recipe.toml diff --git a/recipes/wip/tools/upx/recipe.toml b/recipes/wip/tools/other/upx/recipe.toml similarity index 100% rename from recipes/wip/tools/upx/recipe.toml rename to recipes/wip/tools/other/upx/recipe.toml diff --git a/recipes/wip/tools/usbutils/recipe.toml b/recipes/wip/tools/other/usbutils/recipe.toml similarity index 100% rename from recipes/wip/tools/usbutils/recipe.toml rename to recipes/wip/tools/other/usbutils/recipe.toml diff --git a/recipes/wip/tools/util-linux/recipe.toml b/recipes/wip/tools/other/util-linux/recipe.toml similarity index 100% rename from recipes/wip/tools/util-linux/recipe.toml rename to recipes/wip/tools/other/util-linux/recipe.toml diff --git a/recipes/wip/tools/v86/recipe.toml b/recipes/wip/tools/other/v86/recipe.toml similarity index 100% rename from recipes/wip/tools/v86/recipe.toml rename to recipes/wip/tools/other/v86/recipe.toml diff --git a/recipes/wip/tools/vector/recipe.toml b/recipes/wip/tools/other/vector/recipe.toml similarity index 100% rename from recipes/wip/tools/vector/recipe.toml rename to recipes/wip/tools/other/vector/recipe.toml diff --git a/recipes/wip/tools/ventoy/recipe.toml b/recipes/wip/tools/other/ventoy/recipe.toml similarity index 100% rename from recipes/wip/tools/ventoy/recipe.toml rename to recipes/wip/tools/other/ventoy/recipe.toml diff --git a/recipes/wip/tools/vincenzo/recipe.toml b/recipes/wip/tools/other/vincenzo/recipe.toml similarity index 100% rename from recipes/wip/tools/vincenzo/recipe.toml rename to recipes/wip/tools/other/vincenzo/recipe.toml diff --git a/recipes/wip/tools/vlc/recipe.toml b/recipes/wip/tools/other/vlc/recipe.toml similarity index 100% rename from recipes/wip/tools/vlc/recipe.toml rename to recipes/wip/tools/other/vlc/recipe.toml diff --git a/recipes/wip/tools/vulkan-tools/recipe.toml b/recipes/wip/tools/other/vulkan-tools/recipe.toml similarity index 100% rename from recipes/wip/tools/vulkan-tools/recipe.toml rename to recipes/wip/tools/other/vulkan-tools/recipe.toml diff --git a/recipes/wip/tools/watchexec/recipe.toml b/recipes/wip/tools/other/watchexec/recipe.toml similarity index 100% rename from recipes/wip/tools/watchexec/recipe.toml rename to recipes/wip/tools/other/watchexec/recipe.toml diff --git a/recipes/wip/tools/watchmen/recipe.toml b/recipes/wip/tools/other/watchmen/recipe.toml similarity index 100% rename from recipes/wip/tools/watchmen/recipe.toml rename to recipes/wip/tools/other/watchmen/recipe.toml diff --git a/recipes/wip/tools/wayback-rs/recipe.toml b/recipes/wip/tools/other/wayback-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/wayback-rs/recipe.toml rename to recipes/wip/tools/other/wayback-rs/recipe.toml diff --git a/recipes/wip/tools/wayshot/recipe.toml b/recipes/wip/tools/other/wayshot/recipe.toml similarity index 100% rename from recipes/wip/tools/wayshot/recipe.toml rename to recipes/wip/tools/other/wayshot/recipe.toml diff --git a/recipes/wip/tools/wethr/recipe.toml b/recipes/wip/tools/other/wethr/recipe.toml similarity index 100% rename from recipes/wip/tools/wethr/recipe.toml rename to recipes/wip/tools/other/wethr/recipe.toml diff --git a/recipes/wip/tools/weylus/recipe.toml b/recipes/wip/tools/other/weylus/recipe.toml similarity index 100% rename from recipes/wip/tools/weylus/recipe.toml rename to recipes/wip/tools/other/weylus/recipe.toml diff --git a/recipes/wip/tools/wezterm/recipe.toml b/recipes/wip/tools/other/wezterm/recipe.toml similarity index 100% rename from recipes/wip/tools/wezterm/recipe.toml rename to recipes/wip/tools/other/wezterm/recipe.toml diff --git a/recipes/wip/tools/wick/recipe.toml b/recipes/wip/tools/other/wick/recipe.toml similarity index 100% rename from recipes/wip/tools/wick/recipe.toml rename to recipes/wip/tools/other/wick/recipe.toml diff --git a/recipes/wip/tools/wpaperd/recipe.toml b/recipes/wip/tools/other/wpaperd/recipe.toml similarity index 100% rename from recipes/wip/tools/wpaperd/recipe.toml rename to recipes/wip/tools/other/wpaperd/recipe.toml diff --git a/recipes/wip/tools/xcp/recipe.toml b/recipes/wip/tools/other/xcp/recipe.toml similarity index 100% rename from recipes/wip/tools/xcp/recipe.toml rename to recipes/wip/tools/other/xcp/recipe.toml diff --git a/recipes/wip/tools/xdg-utils/recipe.toml b/recipes/wip/tools/other/xdg-utils/recipe.toml similarity index 100% rename from recipes/wip/tools/xdg-utils/recipe.toml rename to recipes/wip/tools/other/xdg-utils/recipe.toml diff --git a/recipes/wip/tools/xdotool/recipe.toml b/recipes/wip/tools/other/xdotool/recipe.toml similarity index 100% rename from recipes/wip/tools/xdotool/recipe.toml rename to recipes/wip/tools/other/xdotool/recipe.toml diff --git a/recipes/wip/tools/xdvdfs/recipe.toml b/recipes/wip/tools/other/xdvdfs/recipe.toml similarity index 100% rename from recipes/wip/tools/xdvdfs/recipe.toml rename to recipes/wip/tools/other/xdvdfs/recipe.toml diff --git a/recipes/wip/tools/xh/recipe.toml b/recipes/wip/tools/other/xh/recipe.toml similarity index 100% rename from recipes/wip/tools/xh/recipe.toml rename to recipes/wip/tools/other/xh/recipe.toml diff --git a/recipes/wip/tools/xiu/recipe.toml b/recipes/wip/tools/other/xiu/recipe.toml similarity index 100% rename from recipes/wip/tools/xiu/recipe.toml rename to recipes/wip/tools/other/xiu/recipe.toml diff --git a/recipes/wip/tools/xorriso/recipe.toml b/recipes/wip/tools/other/xorriso/recipe.toml similarity index 100% rename from recipes/wip/tools/xorriso/recipe.toml rename to recipes/wip/tools/other/xorriso/recipe.toml diff --git a/recipes/wip/tools/xsv/recipe.toml b/recipes/wip/tools/other/xsv/recipe.toml similarity index 100% rename from recipes/wip/tools/xsv/recipe.toml rename to recipes/wip/tools/other/xsv/recipe.toml diff --git a/recipes/wip/tools/youtube-tui/recipe.toml b/recipes/wip/tools/other/youtube-tui/recipe.toml similarity index 100% rename from recipes/wip/tools/youtube-tui/recipe.toml rename to recipes/wip/tools/other/youtube-tui/recipe.toml diff --git a/recipes/wip/tools/zeitfetch/recipe.toml b/recipes/wip/tools/other/zeitfetch/recipe.toml similarity index 100% rename from recipes/wip/tools/zeitfetch/recipe.toml rename to recipes/wip/tools/other/zeitfetch/recipe.toml diff --git a/recipes/wip/tools/zellij/recipe.toml b/recipes/wip/tools/other/zellij/recipe.toml similarity index 100% rename from recipes/wip/tools/zellij/recipe.toml rename to recipes/wip/tools/other/zellij/recipe.toml diff --git a/recipes/wip/tools/zet/recipe.toml b/recipes/wip/tools/other/zet/recipe.toml similarity index 100% rename from recipes/wip/tools/zet/recipe.toml rename to recipes/wip/tools/other/zet/recipe.toml diff --git a/recipes/wip/science/alevin-fry/recipe.toml b/recipes/wip/tools/science/alevin-fry/recipe.toml similarity index 100% rename from recipes/wip/science/alevin-fry/recipe.toml rename to recipes/wip/tools/science/alevin-fry/recipe.toml diff --git a/recipes/wip/science/celestia-data/recipe.toml b/recipes/wip/tools/science/celestia-data/recipe.toml similarity index 100% rename from recipes/wip/science/celestia-data/recipe.toml rename to recipes/wip/tools/science/celestia-data/recipe.toml diff --git a/recipes/wip/science/celestia/recipe.toml b/recipes/wip/tools/science/celestia/recipe.toml similarity index 100% rename from recipes/wip/science/celestia/recipe.toml rename to recipes/wip/tools/science/celestia/recipe.toml diff --git a/recipes/wip/science/gromacs/recipe.toml b/recipes/wip/tools/science/gromacs/recipe.toml similarity index 100% rename from recipes/wip/science/gromacs/recipe.toml rename to recipes/wip/tools/science/gromacs/recipe.toml diff --git a/recipes/wip/science/mrbayes/recipe.toml b/recipes/wip/tools/science/mrbayes/recipe.toml similarity index 100% rename from recipes/wip/science/mrbayes/recipe.toml rename to recipes/wip/tools/science/mrbayes/recipe.toml diff --git a/recipes/wip/science/oarfish/recipe.toml b/recipes/wip/tools/science/oarfish/recipe.toml similarity index 100% rename from recipes/wip/science/oarfish/recipe.toml rename to recipes/wip/tools/science/oarfish/recipe.toml diff --git a/recipes/wip/science/openfoam/recipe.toml b/recipes/wip/tools/science/openfoam/recipe.toml similarity index 100% rename from recipes/wip/science/openfoam/recipe.toml rename to recipes/wip/tools/science/openfoam/recipe.toml diff --git a/recipes/wip/science/openspace/recipe.toml b/recipes/wip/tools/science/openspace/recipe.toml similarity index 100% rename from recipes/wip/science/openspace/recipe.toml rename to recipes/wip/tools/science/openspace/recipe.toml diff --git a/recipes/wip/science/piscem/recipe.toml b/recipes/wip/tools/science/piscem/recipe.toml similarity index 100% rename from recipes/wip/science/piscem/recipe.toml rename to recipes/wip/tools/science/piscem/recipe.toml diff --git a/recipes/wip/science/polypolish/recipe.toml b/recipes/wip/tools/science/polypolish/recipe.toml similarity index 100% rename from recipes/wip/science/polypolish/recipe.toml rename to recipes/wip/tools/science/polypolish/recipe.toml diff --git a/recipes/wip/science/qmcpack/recipe.toml b/recipes/wip/tools/science/qmcpack/recipe.toml similarity index 100% rename from recipes/wip/science/qmcpack/recipe.toml rename to recipes/wip/tools/science/qmcpack/recipe.toml diff --git a/recipes/wip/science/scidataflow/recipe.toml b/recipes/wip/tools/science/scidataflow/recipe.toml similarity index 100% rename from recipes/wip/science/scidataflow/recipe.toml rename to recipes/wip/tools/science/scidataflow/recipe.toml diff --git a/recipes/wip/science/simpleaf/recipe.toml b/recipes/wip/tools/science/simpleaf/recipe.toml similarity index 100% rename from recipes/wip/science/simpleaf/recipe.toml rename to recipes/wip/tools/science/simpleaf/recipe.toml diff --git a/recipes/wip/science/specfem2d/recipe.toml b/recipes/wip/tools/science/specfem2d/recipe.toml similarity index 100% rename from recipes/wip/science/specfem2d/recipe.toml rename to recipes/wip/tools/science/specfem2d/recipe.toml diff --git a/recipes/wip/science/specfem3d-globe/recipe.toml b/recipes/wip/tools/science/specfem3d-globe/recipe.toml similarity index 100% rename from recipes/wip/science/specfem3d-globe/recipe.toml rename to recipes/wip/tools/science/specfem3d-globe/recipe.toml diff --git a/recipes/wip/science/specfem3d/recipe.toml b/recipes/wip/tools/science/specfem3d/recipe.toml similarity index 100% rename from recipes/wip/science/specfem3d/recipe.toml rename to recipes/wip/tools/science/specfem3d/recipe.toml diff --git a/recipes/wip/science/vidoxide/recipe.toml b/recipes/wip/tools/science/vidoxide/recipe.toml similarity index 100% rename from recipes/wip/science/vidoxide/recipe.toml rename to recipes/wip/tools/science/vidoxide/recipe.toml diff --git a/recipes/wip/security/airgorah/recipe.toml b/recipes/wip/tools/security/airgorah/recipe.toml similarity index 100% rename from recipes/wip/security/airgorah/recipe.toml rename to recipes/wip/tools/security/airgorah/recipe.toml diff --git a/recipes/wip/security/angryoxide/recipe.toml b/recipes/wip/tools/security/angryoxide/recipe.toml similarity index 100% rename from recipes/wip/security/angryoxide/recipe.toml rename to recipes/wip/tools/security/angryoxide/recipe.toml diff --git a/recipes/wip/security/apbf/recipe.toml b/recipes/wip/tools/security/apbf/recipe.toml similarity index 100% rename from recipes/wip/security/apbf/recipe.toml rename to recipes/wip/tools/security/apbf/recipe.toml diff --git a/recipes/wip/security/authoscope/recipe.toml b/recipes/wip/tools/security/authoscope/recipe.toml similarity index 100% rename from recipes/wip/security/authoscope/recipe.toml rename to recipes/wip/tools/security/authoscope/recipe.toml diff --git a/recipes/wip/security/binsec/recipe.toml b/recipes/wip/tools/security/binsec/recipe.toml similarity index 100% rename from recipes/wip/security/binsec/recipe.toml rename to recipes/wip/tools/security/binsec/recipe.toml diff --git a/recipes/wip/security/burrow/recipe.toml b/recipes/wip/tools/security/burrow/recipe.toml similarity index 100% rename from recipes/wip/security/burrow/recipe.toml rename to recipes/wip/tools/security/burrow/recipe.toml diff --git a/recipes/wip/security/capstone/recipe.toml b/recipes/wip/tools/security/capstone/recipe.toml similarity index 100% rename from recipes/wip/security/capstone/recipe.toml rename to recipes/wip/tools/security/capstone/recipe.toml diff --git a/recipes/wip/security/cargo-scan/recipe.toml b/recipes/wip/tools/security/cargo-scan/recipe.toml similarity index 100% rename from recipes/wip/security/cargo-scan/recipe.toml rename to recipes/wip/tools/security/cargo-scan/recipe.toml diff --git a/recipes/wip/security/clamav/recipe.toml b/recipes/wip/tools/security/clamav/recipe.toml similarity index 100% rename from recipes/wip/security/clamav/recipe.toml rename to recipes/wip/tools/security/clamav/recipe.toml diff --git a/recipes/wip/security/cotp/recipe.toml b/recipes/wip/tools/security/cotp/recipe.toml similarity index 100% rename from recipes/wip/security/cotp/recipe.toml rename to recipes/wip/tools/security/cotp/recipe.toml diff --git a/recipes/wip/security/dfir-toolkit/recipe.toml b/recipes/wip/tools/security/dfir-toolkit/recipe.toml similarity index 100% rename from recipes/wip/security/dfir-toolkit/recipe.toml rename to recipes/wip/tools/security/dfir-toolkit/recipe.toml diff --git a/recipes/wip/security/feroxbuster/recipe.toml b/recipes/wip/tools/security/feroxbuster/recipe.toml similarity index 100% rename from recipes/wip/security/feroxbuster/recipe.toml rename to recipes/wip/tools/security/feroxbuster/recipe.toml diff --git a/recipes/wip/security/flawz/recipe.toml b/recipes/wip/tools/security/flawz/recipe.toml similarity index 100% rename from recipes/wip/security/flawz/recipe.toml rename to recipes/wip/tools/security/flawz/recipe.toml diff --git a/recipes/wip/security/hashgood/recipe.toml b/recipes/wip/tools/security/hashgood/recipe.toml similarity index 100% rename from recipes/wip/security/hashgood/recipe.toml rename to recipes/wip/tools/security/hashgood/recipe.toml diff --git a/recipes/wip/security/john-the-ripper/recipe.toml b/recipes/wip/tools/security/john-the-ripper/recipe.toml similarity index 100% rename from recipes/wip/security/john-the-ripper/recipe.toml rename to recipes/wip/tools/security/john-the-ripper/recipe.toml diff --git a/recipes/wip/security/kanha/recipe.toml b/recipes/wip/tools/security/kanha/recipe.toml similarity index 100% rename from recipes/wip/security/kanha/recipe.toml rename to recipes/wip/tools/security/kanha/recipe.toml diff --git a/recipes/wip/security/keyscope/recipe.toml b/recipes/wip/tools/security/keyscope/recipe.toml similarity index 100% rename from recipes/wip/security/keyscope/recipe.toml rename to recipes/wip/tools/security/keyscope/recipe.toml diff --git a/recipes/wip/security/motus/recipe.toml b/recipes/wip/tools/security/motus/recipe.toml similarity index 100% rename from recipes/wip/security/motus/recipe.toml rename to recipes/wip/tools/security/motus/recipe.toml diff --git a/recipes/wip/security/nitrocli/recipe.toml b/recipes/wip/tools/security/nitrocli/recipe.toml similarity index 100% rename from recipes/wip/security/nitrocli/recipe.toml rename to recipes/wip/tools/security/nitrocli/recipe.toml diff --git a/recipes/wip/security/openpgp-ca/recipe.toml b/recipes/wip/tools/security/openpgp-ca/recipe.toml similarity index 100% rename from recipes/wip/security/openpgp-ca/recipe.toml rename to recipes/wip/tools/security/openpgp-ca/recipe.toml diff --git a/recipes/wip/security/plutus-rustus/recipe.toml b/recipes/wip/tools/security/plutus-rustus/recipe.toml similarity index 100% rename from recipes/wip/security/plutus-rustus/recipe.toml rename to recipes/wip/tools/security/plutus-rustus/recipe.toml diff --git a/recipes/wip/security/recdec/recipe.toml b/recipes/wip/tools/security/recdec/recipe.toml similarity index 100% rename from recipes/wip/security/recdec/recipe.toml rename to recipes/wip/tools/security/recdec/recipe.toml diff --git a/recipes/wip/security/rowhammer-test/recipe.toml b/recipes/wip/tools/security/rowhammer-test/recipe.toml similarity index 100% rename from recipes/wip/security/rowhammer-test/recipe.toml rename to recipes/wip/tools/security/rowhammer-test/recipe.toml diff --git a/recipes/wip/security/rshijack/recipe.toml b/recipes/wip/tools/security/rshijack/recipe.toml similarity index 100% rename from recipes/wip/security/rshijack/recipe.toml rename to recipes/wip/tools/security/rshijack/recipe.toml diff --git a/recipes/wip/security/rustyvault/recipe.toml b/recipes/wip/tools/security/rustyvault/recipe.toml similarity index 100% rename from recipes/wip/security/rustyvault/recipe.toml rename to recipes/wip/tools/security/rustyvault/recipe.toml diff --git a/recipes/wip/security/sn0int/recipe.toml b/recipes/wip/tools/security/sn0int/recipe.toml similarity index 100% rename from recipes/wip/security/sn0int/recipe.toml rename to recipes/wip/tools/security/sn0int/recipe.toml diff --git a/recipes/wip/security/sniffglue/recipe.toml b/recipes/wip/tools/security/sniffglue/recipe.toml similarity index 100% rename from recipes/wip/security/sniffglue/recipe.toml rename to recipes/wip/tools/security/sniffglue/recipe.toml diff --git a/recipes/wip/security/sniffnet/recipe.toml b/recipes/wip/tools/security/sniffnet/recipe.toml similarity index 100% rename from recipes/wip/security/sniffnet/recipe.toml rename to recipes/wip/tools/security/sniffnet/recipe.toml diff --git a/recipes/wip/security/sq/recipe.toml b/recipes/wip/tools/security/sq/recipe.toml similarity index 100% rename from recipes/wip/security/sq/recipe.toml rename to recipes/wip/tools/security/sq/recipe.toml diff --git a/recipes/wip/security/sqop/recipe.toml b/recipes/wip/tools/security/sqop/recipe.toml similarity index 100% rename from recipes/wip/security/sqop/recipe.toml rename to recipes/wip/tools/security/sqop/recipe.toml diff --git a/recipes/wip/security/sqv/recipe.toml b/recipes/wip/tools/security/sqv/recipe.toml similarity index 100% rename from recipes/wip/security/sqv/recipe.toml rename to recipes/wip/tools/security/sqv/recipe.toml diff --git a/recipes/wip/security/sss-cli/recipe.toml b/recipes/wip/tools/security/sss-cli/recipe.toml similarity index 100% rename from recipes/wip/security/sss-cli/recipe.toml rename to recipes/wip/tools/security/sss-cli/recipe.toml diff --git a/recipes/wip/security/stegano/recipe.toml b/recipes/wip/tools/security/stegano/recipe.toml similarity index 100% rename from recipes/wip/security/stegano/recipe.toml rename to recipes/wip/tools/security/stegano/recipe.toml diff --git a/recipes/wip/security/vagga/recipe.toml b/recipes/wip/tools/security/vagga/recipe.toml similarity index 100% rename from recipes/wip/security/vagga/recipe.toml rename to recipes/wip/tools/security/vagga/recipe.toml diff --git a/recipes/wip/security/veldora/recipe.toml b/recipes/wip/tools/security/veldora/recipe.toml similarity index 100% rename from recipes/wip/security/veldora/recipe.toml rename to recipes/wip/tools/security/veldora/recipe.toml diff --git a/recipes/wip/security/veracrypt/recipe.toml b/recipes/wip/tools/security/veracrypt/recipe.toml similarity index 100% rename from recipes/wip/security/veracrypt/recipe.toml rename to recipes/wip/tools/security/veracrypt/recipe.toml diff --git a/recipes/wip/security/weggli/recipe.toml b/recipes/wip/tools/security/weggli/recipe.toml similarity index 100% rename from recipes/wip/security/weggli/recipe.toml rename to recipes/wip/tools/security/weggli/recipe.toml diff --git a/recipes/wip/terminal/tab-rs/recipe.toml b/recipes/wip/tools/terminal/tab-rs/recipe.toml similarity index 100% rename from recipes/wip/terminal/tab-rs/recipe.toml rename to recipes/wip/tools/terminal/tab-rs/recipe.toml diff --git a/recipes/wip/terminal/tmux/recipe.toml b/recipes/wip/tools/terminal/tmux/recipe.toml similarity index 100% rename from recipes/wip/terminal/tmux/recipe.toml rename to recipes/wip/tools/terminal/tmux/recipe.toml diff --git a/recipes/wip/video/alass/recipe.toml b/recipes/wip/tools/video/alass/recipe.toml similarity index 100% rename from recipes/wip/video/alass/recipe.toml rename to recipes/wip/tools/video/alass/recipe.toml diff --git a/recipes/wip/video/anime-effects/recipe.toml b/recipes/wip/tools/video/anime-effects/recipe.toml similarity index 100% rename from recipes/wip/video/anime-effects/recipe.toml rename to recipes/wip/tools/video/anime-effects/recipe.toml diff --git a/recipes/wip/video/av1an/recipe.toml b/recipes/wip/tools/video/av1an/recipe.toml similarity index 100% rename from recipes/wip/video/av1an/recipe.toml rename to recipes/wip/tools/video/av1an/recipe.toml diff --git a/recipes/wip/video/avp/recipe.toml b/recipes/wip/tools/video/avp/recipe.toml similarity index 100% rename from recipes/wip/video/avp/recipe.toml rename to recipes/wip/tools/video/avp/recipe.toml diff --git a/recipes/wip/video/cheese/recipe.toml b/recipes/wip/tools/video/cheese/recipe.toml similarity index 100% rename from recipes/wip/video/cheese/recipe.toml rename to recipes/wip/tools/video/cheese/recipe.toml diff --git a/recipes/wip/video/detect-scene-change/recipe.toml b/recipes/wip/tools/video/detect-scene-change/recipe.toml similarity index 100% rename from recipes/wip/video/detect-scene-change/recipe.toml rename to recipes/wip/tools/video/detect-scene-change/recipe.toml diff --git a/recipes/wip/video/dovi-tool/recipe.toml b/recipes/wip/tools/video/dovi-tool/recipe.toml similarity index 100% rename from recipes/wip/video/dovi-tool/recipe.toml rename to recipes/wip/tools/video/dovi-tool/recipe.toml diff --git a/recipes/wip/video/glide/recipe.toml b/recipes/wip/tools/video/glide/recipe.toml similarity index 100% rename from recipes/wip/video/glide/recipe.toml rename to recipes/wip/tools/video/glide/recipe.toml diff --git a/recipes/wip/video/gopro-assembler/recipe.toml b/recipes/wip/tools/video/gopro-assembler/recipe.toml similarity index 100% rename from recipes/wip/video/gopro-assembler/recipe.toml rename to recipes/wip/tools/video/gopro-assembler/recipe.toml diff --git a/recipes/wip/video/gyroflow/recipe.toml b/recipes/wip/tools/video/gyroflow/recipe.toml similarity index 100% rename from recipes/wip/video/gyroflow/recipe.toml rename to recipes/wip/tools/video/gyroflow/recipe.toml diff --git a/recipes/wip/video/imdb-rename/recipe.toml b/recipes/wip/tools/video/imdb-rename/recipe.toml similarity index 100% rename from recipes/wip/video/imdb-rename/recipe.toml rename to recipes/wip/tools/video/imdb-rename/recipe.toml diff --git a/recipes/wip/video/jerry/recipe.toml b/recipes/wip/tools/video/jerry/recipe.toml similarity index 100% rename from recipes/wip/video/jerry/recipe.toml rename to recipes/wip/tools/video/jerry/recipe.toml diff --git a/recipes/wip/video/kdenlive/recipe.toml b/recipes/wip/tools/video/kdenlive/recipe.toml similarity index 100% rename from recipes/wip/video/kdenlive/recipe.toml rename to recipes/wip/tools/video/kdenlive/recipe.toml diff --git a/recipes/wip/video/lecturecut/recipe.toml b/recipes/wip/tools/video/lecturecut/recipe.toml similarity index 100% rename from recipes/wip/video/lecturecut/recipe.toml rename to recipes/wip/tools/video/lecturecut/recipe.toml diff --git a/recipes/wip/video/lobster/recipe.toml b/recipes/wip/tools/video/lobster/recipe.toml similarity index 100% rename from recipes/wip/video/lobster/recipe.toml rename to recipes/wip/tools/video/lobster/recipe.toml diff --git a/recipes/wip/video/mpv/recipe.toml b/recipes/wip/tools/video/mpv/recipe.toml similarity index 100% rename from recipes/wip/video/mpv/recipe.toml rename to recipes/wip/tools/video/mpv/recipe.toml diff --git a/recipes/wip/video/pipeline/recipe.toml b/recipes/wip/tools/video/pipeline/recipe.toml similarity index 100% rename from recipes/wip/video/pipeline/recipe.toml rename to recipes/wip/tools/video/pipeline/recipe.toml diff --git a/recipes/wip/video/pitivi/recipe.toml b/recipes/wip/tools/video/pitivi/recipe.toml similarity index 100% rename from recipes/wip/video/pitivi/recipe.toml rename to recipes/wip/tools/video/pitivi/recipe.toml diff --git a/recipes/wip/video/smoothie-rs/recipe.toml b/recipes/wip/tools/video/smoothie-rs/recipe.toml similarity index 100% rename from recipes/wip/video/smoothie-rs/recipe.toml rename to recipes/wip/tools/video/smoothie-rs/recipe.toml diff --git a/recipes/wip/video/snapshot/recipe.toml b/recipes/wip/tools/video/snapshot/recipe.toml similarity index 100% rename from recipes/wip/video/snapshot/recipe.toml rename to recipes/wip/tools/video/snapshot/recipe.toml diff --git a/recipes/wip/video/streamlib/recipe.toml b/recipes/wip/tools/video/streamlib/recipe.toml similarity index 100% rename from recipes/wip/video/streamlib/recipe.toml rename to recipes/wip/tools/video/streamlib/recipe.toml diff --git a/recipes/wip/video/sub-batch/recipe.toml b/recipes/wip/tools/video/sub-batch/recipe.toml similarity index 100% rename from recipes/wip/video/sub-batch/recipe.toml rename to recipes/wip/tools/video/sub-batch/recipe.toml diff --git a/recipes/wip/video/teres/recipe.toml b/recipes/wip/tools/video/teres/recipe.toml similarity index 100% rename from recipes/wip/video/teres/recipe.toml rename to recipes/wip/tools/video/teres/recipe.toml diff --git a/recipes/wip/video/timelens/recipe.toml b/recipes/wip/tools/video/timelens/recipe.toml similarity index 100% rename from recipes/wip/video/timelens/recipe.toml rename to recipes/wip/tools/video/timelens/recipe.toml diff --git a/recipes/wip/video/tplay/recipe.toml b/recipes/wip/tools/video/tplay/recipe.toml similarity index 100% rename from recipes/wip/video/tplay/recipe.toml rename to recipes/wip/tools/video/tplay/recipe.toml diff --git a/recipes/wip/video/trimmeroni/recipe.toml b/recipes/wip/tools/video/trimmeroni/recipe.toml similarity index 100% rename from recipes/wip/video/trimmeroni/recipe.toml rename to recipes/wip/tools/video/trimmeroni/recipe.toml diff --git a/recipes/wip/video/vapoursynth/recipe.toml b/recipes/wip/tools/video/vapoursynth/recipe.toml similarity index 100% rename from recipes/wip/video/vapoursynth/recipe.toml rename to recipes/wip/tools/video/vapoursynth/recipe.toml diff --git a/recipes/wip/video/video4discord/recipe.toml b/recipes/wip/tools/video/video4discord/recipe.toml similarity index 100% rename from recipes/wip/video/video4discord/recipe.toml rename to recipes/wip/tools/video/video4discord/recipe.toml diff --git a/recipes/wip/video/vidmerger/recipe.toml b/recipes/wip/tools/video/vidmerger/recipe.toml similarity index 100% rename from recipes/wip/video/vidmerger/recipe.toml rename to recipes/wip/tools/video/vidmerger/recipe.toml diff --git a/recipes/wip/video/yt-chanvids/recipe.toml b/recipes/wip/tools/video/yt-chanvids/recipe.toml similarity index 100% rename from recipes/wip/video/yt-chanvids/recipe.toml rename to recipes/wip/tools/video/yt-chanvids/recipe.toml From ef4ef9c0a5515734e050dd1975a78674b5f21594 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 26 Jun 2024 04:17:47 +0000 Subject: [PATCH 1947/3180] Move recipes --- recipes/wip/dev/{ => other}/abi-cafe/recipe.toml | 0 recipes/wip/dev/{ => other}/add-determinism/recipe.toml | 0 recipes/wip/dev/{ => other}/allocscope/recipe.toml | 0 recipes/wip/dev/{ => other}/alquitran/recipe.toml | 0 recipes/wip/dev/{ => other}/alt/recipe.toml | 0 recipes/wip/dev/{ => other}/apitrace/recipe.toml | 0 recipes/wip/dev/{ => other}/apr-util/recipe.toml | 0 recipes/wip/dev/{ => other}/apr-util/redox.patch | 0 recipes/wip/dev/{ => other}/apr/recipe.toml | 0 recipes/wip/dev/{ => other}/apr/redox.patch | 0 recipes/wip/dev/{ => other}/artichoke/recipe.toml | 0 recipes/wip/dev/{ => other}/austral-lang/recipe.toml | 0 recipes/wip/dev/{ => other}/auto-commit/recipe.toml | 0 recipes/wip/dev/{ => other}/bender/recipe.toml | 0 recipes/wip/dev/{ => other}/binocle/recipe.toml | 0 recipes/wip/dev/{ => other}/biome/recipe.toml | 0 recipes/wip/dev/{ => other}/bison/recipe.toml | 0 recipes/wip/dev/{ => other}/bite/recipe.toml | 0 recipes/wip/dev/{ => other}/boon/recipe.toml | 0 recipes/wip/dev/{ => other}/bugstalker/recipe.toml | 0 recipes/wip/dev/{ => other}/cackle/recipe.toml | 0 recipes/wip/dev/{ => other}/capnproto/recipe.toml | 0 recipes/wip/dev/{ => other}/ccs-tools/recipe.toml | 0 recipes/wip/dev/{ => other}/charm++/recipe.toml | 0 recipes/wip/dev/{ => other}/chars/recipe.toml | 0 recipes/wip/dev/{ => other}/cling/recipe.toml | 0 recipes/wip/dev/{ => other}/code-minimap/recipe.toml | 0 recipes/wip/dev/{ => other}/codevis/recipe.toml | 0 recipes/wip/dev/{ => other}/colm/recipe.toml | 0 recipes/wip/dev/{ => other}/colmena/recipe.toml | 0 recipes/wip/dev/{ => other}/commit/recipe.toml | 0 recipes/wip/dev/{ => other}/cppunit/recipe.toml | 0 recipes/wip/dev/{ => other}/crates-tui/recipe.toml | 0 recipes/wip/dev/{ => other}/criner/recipe.toml | 0 recipes/wip/dev/{ => other}/crosstool-ng/recipe.toml | 0 recipes/wip/dev/{ => other}/debug/gdb/recipe.toml | 0 recipes/wip/dev/{ => other}/debug/rr-debugger/recipe.toml | 0 recipes/wip/dev/{ => other}/debugedit/recipe.toml | 0 recipes/wip/dev/{ => other}/deno/recipe.toml | 0 recipes/wip/dev/{ => other}/deploy-rs/recipe.toml | 0 recipes/wip/dev/{ => other}/deps-rs/recipe.toml | 0 recipes/wip/dev/{ => other}/dfx/recipe.toml | 0 recipes/wip/dev/{ => other}/difftastic/recipe.toml | 0 recipes/wip/dev/{ => other}/dioxus/recipe.toml | 0 recipes/wip/dev/{ => other}/doxygen/recipe.toml | 0 recipes/wip/dev/{ => other}/dtool/recipe.toml | 0 recipes/wip/dev/{ => other}/ecargo/recipe.toml | 0 recipes/wip/dev/{ => other}/elfshaker/recipe.toml | 0 recipes/wip/dev/{ => other}/espmonitor/recipe.toml | 0 recipes/wip/dev/{ => other}/fal/recipe.toml | 0 recipes/wip/dev/{ => other}/fazi/recipe.toml | 0 recipes/wip/dev/{ => other}/firedbg/recipe.toml | 0 recipes/wip/dev/{ => other}/flamegraph/recipe.toml | 0 recipes/wip/dev/{ => other}/flex/recipe.toml | 0 recipes/wip/dev/{ => other}/gegl/recipe.toml | 0 recipes/wip/dev/{ => other}/gem5/recipe.toml | 0 recipes/wip/dev/{ => other}/get-blessed/recipe.toml | 0 recipes/wip/dev/{ => other}/gex/recipe.toml | 0 recipes/wip/dev/{ => other}/gexiv2/recipe.toml | 0 recipes/wip/dev/{ => other}/gfold/recipe.toml | 0 recipes/wip/dev/{ => other}/ghostpdl/recipe.toml | 0 recipes/wip/dev/{ => other}/gist-rs/recipe.toml | 0 recipes/wip/dev/{ => other}/gitlab-cargo-shim/recipe.toml | 0 recipes/wip/dev/{ => other}/glibmm/recipe.toml | 0 recipes/wip/dev/{ => other}/gperf/recipe.toml | 0 recipes/wip/dev/{ => other}/graphene/recipe.toml | 0 recipes/wip/dev/{ => other}/grcov/recipe.toml | 0 recipes/wip/dev/{ => other}/gtest/recipe.toml | 0 recipes/wip/dev/{ => other}/guile/recipe.toml | 0 recipes/wip/dev/{ => other}/headers/recipe.toml | 0 recipes/wip/dev/{ => other}/hexyl/recipe.toml | 0 recipes/wip/dev/{ => other}/honggfuzz/recipe.toml | 0 recipes/wip/dev/{ => other}/htmlq/recipe.toml | 0 recipes/wip/dev/{ => other}/hvm/recipe.toml | 0 recipes/wip/dev/{ => other}/icemaker/recipe.toml | 0 recipes/wip/dev/{ => other}/inko/recipe.toml | 0 recipes/wip/dev/{ => other}/intltool/recipe.toml | 0 recipes/wip/dev/{ => other}/irust/recipe.toml | 0 recipes/wip/dev/{ => other}/ispc/recipe.toml | 0 recipes/wip/dev/{ => other}/jaq/recipe.toml | 0 recipes/wip/dev/{ => other}/jco/recipe.toml | 0 recipes/wip/dev/{ => other}/jq/recipe.toml | 0 recipes/wip/dev/{ => other}/jujutsu/recipe.toml | 0 recipes/wip/dev/{ => other}/kicad/recipe.toml | 0 recipes/wip/dev/{ => other}/kickstart/recipe.toml | 0 recipes/wip/dev/{ => other}/knope/recipe.toml | 0 recipes/wip/dev/{ => other}/kondo/recipe.toml | 0 recipes/wip/dev/{ => other}/ktra/recipe.toml | 0 recipes/wip/dev/{ => other}/lading/recipe.toml | 0 recipes/wip/dev/{ => other}/leetup/recipe.toml | 0 recipes/wip/dev/{ => other}/leptosfmt/recipe.toml | 0 recipes/wip/dev/{ => other}/level-zero/recipe.toml | 0 recipes/wip/dev/{ => other}/license-generator/recipe.toml | 0 recipes/wip/dev/{ => other}/licensure/recipe.toml | 0 recipes/wip/dev/{ => other}/loadlibrary/recipe.toml | 0 recipes/wip/dev/{ => other}/lockdiff/recipe.toml | 0 recipes/wip/dev/{ => other}/loco/recipe.toml | 0 recipes/wip/dev/{ => other}/lttng-ust/recipe.toml | 0 recipes/wip/dev/{ => other}/lurk/recipe.toml | 0 recipes/wip/dev/{ => other}/margo/recipe.toml | 0 recipes/wip/dev/{ => other}/memtest-vulkan/recipe.toml | 0 recipes/wip/dev/{ => other}/mise/recipe.toml | 0 recipes/wip/dev/{ => other}/mkfs/recipe.toml | 0 recipes/wip/dev/{ => other}/mnn/recipe.toml | 0 recipes/wip/dev/{ => other}/mono/recipe.toml | 0 recipes/wip/dev/{ => other}/moon/recipe.toml | 0 recipes/wip/dev/{ => other}/moonzoon/recipe.toml | 0 recipes/wip/dev/{ => other}/morty/recipe.toml | 0 recipes/wip/dev/{ => other}/ncnn/recipe.toml | 0 recipes/wip/dev/{ => other}/necessist/recipe.toml | 0 recipes/wip/dev/{ => other}/netradiant/recipe.toml | 0 recipes/wip/dev/{ => other}/ngspice/recipe.toml | 0 recipes/wip/dev/{ => other}/not-perf/recipe.toml | 0 recipes/wip/dev/{ => other}/novops/recipe.toml | 0 recipes/wip/dev/{ => other}/omni/recipe.toml | 0 recipes/wip/dev/{ => other}/omnibor-rs/recipe.toml | 0 recipes/wip/dev/{ => other}/opam/recipe.toml | 0 recipes/wip/dev/{ => other}/opencascade/recipe.toml | 0 recipes/wip/dev/{ => other}/openradioss/recipe.toml | 0 recipes/wip/dev/{ => other}/oxc/recipe.toml | 0 recipes/wip/dev/{ => other}/oxidizer/recipe.toml | 0 recipes/wip/dev/{ => other}/panamax/recipe.toml | 0 recipes/wip/dev/{ => other}/piccolo/recipe.toml | 0 recipes/wip/dev/{ => other}/pixi/recipe.toml | 0 recipes/wip/dev/{ => other}/precious/recipe.toml | 0 recipes/wip/dev/{ => other}/probe-rs/recipe.toml | 0 recipes/wip/dev/{ => other}/projclean/recipe.toml | 0 recipes/wip/dev/{ => other}/projections/recipe.toml | 0 recipes/wip/dev/{ => other}/proto/recipe.toml | 0 recipes/wip/dev/{ => other}/protobuf/recipe.toml | 0 recipes/wip/dev/{ => other}/protofetch/recipe.toml | 0 recipes/wip/dev/{ => other}/pxp/recipe.toml | 0 recipes/wip/dev/{ => other}/qbe/recipe.toml | 0 recipes/wip/dev/{ => other}/quicktest/recipe.toml | 0 recipes/wip/dev/{ => other}/radicle/recipe.toml | 0 recipes/wip/dev/{ => other}/ragel/recipe.toml | 0 recipes/wip/dev/{ => other}/rattler-build/recipe.toml | 0 recipes/wip/dev/{ => other}/rbasefind/recipe.toml | 0 recipes/wip/dev/{ => other}/redict/recipe.toml | 0 recipes/wip/dev/{ => other}/redis/recipe.toml | 0 recipes/wip/dev/{ => other}/release-plz/recipe.toml | 0 recipes/wip/dev/{ => other}/renderdoc/recipe.toml | 0 recipes/wip/dev/{ => other}/resym/recipe.toml | 0 recipes/wip/dev/{ => other}/rgit/recipe.toml | 0 recipes/wip/dev/{ => other}/rhack/recipe.toml | 0 recipes/wip/dev/{ => other}/rudra/recipe.toml | 0 recipes/wip/dev/{ => other}/rust-counter-strings/recipe.toml | 0 recipes/wip/dev/{ => other}/rusty-radamsa/recipe.toml | 0 recipes/wip/dev/{ => other}/samply/recipe.toml | 0 recipes/wip/dev/{ => other}/shaderc/recipe.toml | 0 recipes/wip/dev/{ => other}/souper/recipe.toml | 0 recipes/wip/dev/{ => other}/steel/recipe.toml | 0 recipes/wip/dev/{ => other}/stgit/recipe.toml | 0 recipes/wip/dev/{ => other}/stitch/recipe.toml | 0 recipes/wip/dev/{ => other}/svd2rust/recipe.toml | 0 recipes/wip/dev/{ => other}/swig/recipe.toml | 0 recipes/wip/dev/{ => other}/tcl/recipe.toml | 0 recipes/wip/dev/{ => other}/tk/recipe.toml | 0 recipes/wip/dev/{ => other}/tnn/recipe.toml | 0 recipes/wip/dev/{ => other}/tokio-console/recipe.toml | 0 recipes/wip/dev/{ => other}/tracy/recipe.toml | 0 recipes/wip/dev/{ => other}/trunk/recipe.toml | 0 recipes/wip/dev/{ => other}/tv/recipe.toml | 0 recipes/wip/dev/{ => other}/twiggy/recipe.toml | 0 recipes/wip/dev/{ => other}/ucd-generate/recipe.toml | 0 recipes/wip/dev/{ => other}/valgrind/recipe.toml | 0 recipes/wip/dev/{ => other}/valkey/recipe.toml | 0 recipes/wip/dev/{ => other}/verrou/recipe.toml | 0 recipes/wip/dev/{ => other}/vkpeak/recipe.toml | 0 recipes/wip/dev/{ => other}/zeal/recipe.toml | 0 recipes/wip/dev/{ => other}/zepter/recipe.toml | 0 recipes/wip/dev/{ => other}/zola/recipe.toml | 0 recipes/wip/tools/{other => net}/aim/recipe.toml | 0 recipes/wip/tools/{other => terminal}/alacritty/recipe.toml | 0 recipes/wip/tools/{other => terminal}/rioterm/recipe.toml | 0 recipes/wip/tools/{other => terminal}/wezterm/recipe.toml | 0 recipes/wip/tools/{other => terminal}/zellij/recipe.toml | 0 recipes/wip/{tools/other => vm}/v86/recipe.toml | 0 178 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/dev/{ => other}/abi-cafe/recipe.toml (100%) rename recipes/wip/dev/{ => other}/add-determinism/recipe.toml (100%) rename recipes/wip/dev/{ => other}/allocscope/recipe.toml (100%) rename recipes/wip/dev/{ => other}/alquitran/recipe.toml (100%) rename recipes/wip/dev/{ => other}/alt/recipe.toml (100%) rename recipes/wip/dev/{ => other}/apitrace/recipe.toml (100%) rename recipes/wip/dev/{ => other}/apr-util/recipe.toml (100%) rename recipes/wip/dev/{ => other}/apr-util/redox.patch (100%) rename recipes/wip/dev/{ => other}/apr/recipe.toml (100%) rename recipes/wip/dev/{ => other}/apr/redox.patch (100%) rename recipes/wip/dev/{ => other}/artichoke/recipe.toml (100%) rename recipes/wip/dev/{ => other}/austral-lang/recipe.toml (100%) rename recipes/wip/dev/{ => other}/auto-commit/recipe.toml (100%) rename recipes/wip/dev/{ => other}/bender/recipe.toml (100%) rename recipes/wip/dev/{ => other}/binocle/recipe.toml (100%) rename recipes/wip/dev/{ => other}/biome/recipe.toml (100%) rename recipes/wip/dev/{ => other}/bison/recipe.toml (100%) rename recipes/wip/dev/{ => other}/bite/recipe.toml (100%) rename recipes/wip/dev/{ => other}/boon/recipe.toml (100%) rename recipes/wip/dev/{ => other}/bugstalker/recipe.toml (100%) rename recipes/wip/dev/{ => other}/cackle/recipe.toml (100%) rename recipes/wip/dev/{ => other}/capnproto/recipe.toml (100%) rename recipes/wip/dev/{ => other}/ccs-tools/recipe.toml (100%) rename recipes/wip/dev/{ => other}/charm++/recipe.toml (100%) rename recipes/wip/dev/{ => other}/chars/recipe.toml (100%) rename recipes/wip/dev/{ => other}/cling/recipe.toml (100%) rename recipes/wip/dev/{ => other}/code-minimap/recipe.toml (100%) rename recipes/wip/dev/{ => other}/codevis/recipe.toml (100%) rename recipes/wip/dev/{ => other}/colm/recipe.toml (100%) rename recipes/wip/dev/{ => other}/colmena/recipe.toml (100%) rename recipes/wip/dev/{ => other}/commit/recipe.toml (100%) rename recipes/wip/dev/{ => other}/cppunit/recipe.toml (100%) rename recipes/wip/dev/{ => other}/crates-tui/recipe.toml (100%) rename recipes/wip/dev/{ => other}/criner/recipe.toml (100%) rename recipes/wip/dev/{ => other}/crosstool-ng/recipe.toml (100%) rename recipes/wip/dev/{ => other}/debug/gdb/recipe.toml (100%) rename recipes/wip/dev/{ => other}/debug/rr-debugger/recipe.toml (100%) rename recipes/wip/dev/{ => other}/debugedit/recipe.toml (100%) rename recipes/wip/dev/{ => other}/deno/recipe.toml (100%) rename recipes/wip/dev/{ => other}/deploy-rs/recipe.toml (100%) rename recipes/wip/dev/{ => other}/deps-rs/recipe.toml (100%) rename recipes/wip/dev/{ => other}/dfx/recipe.toml (100%) rename recipes/wip/dev/{ => other}/difftastic/recipe.toml (100%) rename recipes/wip/dev/{ => other}/dioxus/recipe.toml (100%) rename recipes/wip/dev/{ => other}/doxygen/recipe.toml (100%) rename recipes/wip/dev/{ => other}/dtool/recipe.toml (100%) rename recipes/wip/dev/{ => other}/ecargo/recipe.toml (100%) rename recipes/wip/dev/{ => other}/elfshaker/recipe.toml (100%) rename recipes/wip/dev/{ => other}/espmonitor/recipe.toml (100%) rename recipes/wip/dev/{ => other}/fal/recipe.toml (100%) rename recipes/wip/dev/{ => other}/fazi/recipe.toml (100%) rename recipes/wip/dev/{ => other}/firedbg/recipe.toml (100%) rename recipes/wip/dev/{ => other}/flamegraph/recipe.toml (100%) rename recipes/wip/dev/{ => other}/flex/recipe.toml (100%) rename recipes/wip/dev/{ => other}/gegl/recipe.toml (100%) rename recipes/wip/dev/{ => other}/gem5/recipe.toml (100%) rename recipes/wip/dev/{ => other}/get-blessed/recipe.toml (100%) rename recipes/wip/dev/{ => other}/gex/recipe.toml (100%) rename recipes/wip/dev/{ => other}/gexiv2/recipe.toml (100%) rename recipes/wip/dev/{ => other}/gfold/recipe.toml (100%) rename recipes/wip/dev/{ => other}/ghostpdl/recipe.toml (100%) rename recipes/wip/dev/{ => other}/gist-rs/recipe.toml (100%) rename recipes/wip/dev/{ => other}/gitlab-cargo-shim/recipe.toml (100%) rename recipes/wip/dev/{ => other}/glibmm/recipe.toml (100%) rename recipes/wip/dev/{ => other}/gperf/recipe.toml (100%) rename recipes/wip/dev/{ => other}/graphene/recipe.toml (100%) rename recipes/wip/dev/{ => other}/grcov/recipe.toml (100%) rename recipes/wip/dev/{ => other}/gtest/recipe.toml (100%) rename recipes/wip/dev/{ => other}/guile/recipe.toml (100%) rename recipes/wip/dev/{ => other}/headers/recipe.toml (100%) rename recipes/wip/dev/{ => other}/hexyl/recipe.toml (100%) rename recipes/wip/dev/{ => other}/honggfuzz/recipe.toml (100%) rename recipes/wip/dev/{ => other}/htmlq/recipe.toml (100%) rename recipes/wip/dev/{ => other}/hvm/recipe.toml (100%) rename recipes/wip/dev/{ => other}/icemaker/recipe.toml (100%) rename recipes/wip/dev/{ => other}/inko/recipe.toml (100%) rename recipes/wip/dev/{ => other}/intltool/recipe.toml (100%) rename recipes/wip/dev/{ => other}/irust/recipe.toml (100%) rename recipes/wip/dev/{ => other}/ispc/recipe.toml (100%) rename recipes/wip/dev/{ => other}/jaq/recipe.toml (100%) rename recipes/wip/dev/{ => other}/jco/recipe.toml (100%) rename recipes/wip/dev/{ => other}/jq/recipe.toml (100%) rename recipes/wip/dev/{ => other}/jujutsu/recipe.toml (100%) rename recipes/wip/dev/{ => other}/kicad/recipe.toml (100%) rename recipes/wip/dev/{ => other}/kickstart/recipe.toml (100%) rename recipes/wip/dev/{ => other}/knope/recipe.toml (100%) rename recipes/wip/dev/{ => other}/kondo/recipe.toml (100%) rename recipes/wip/dev/{ => other}/ktra/recipe.toml (100%) rename recipes/wip/dev/{ => other}/lading/recipe.toml (100%) rename recipes/wip/dev/{ => other}/leetup/recipe.toml (100%) rename recipes/wip/dev/{ => other}/leptosfmt/recipe.toml (100%) rename recipes/wip/dev/{ => other}/level-zero/recipe.toml (100%) rename recipes/wip/dev/{ => other}/license-generator/recipe.toml (100%) rename recipes/wip/dev/{ => other}/licensure/recipe.toml (100%) rename recipes/wip/dev/{ => other}/loadlibrary/recipe.toml (100%) rename recipes/wip/dev/{ => other}/lockdiff/recipe.toml (100%) rename recipes/wip/dev/{ => other}/loco/recipe.toml (100%) rename recipes/wip/dev/{ => other}/lttng-ust/recipe.toml (100%) rename recipes/wip/dev/{ => other}/lurk/recipe.toml (100%) rename recipes/wip/dev/{ => other}/margo/recipe.toml (100%) rename recipes/wip/dev/{ => other}/memtest-vulkan/recipe.toml (100%) rename recipes/wip/dev/{ => other}/mise/recipe.toml (100%) rename recipes/wip/dev/{ => other}/mkfs/recipe.toml (100%) rename recipes/wip/dev/{ => other}/mnn/recipe.toml (100%) rename recipes/wip/dev/{ => other}/mono/recipe.toml (100%) rename recipes/wip/dev/{ => other}/moon/recipe.toml (100%) rename recipes/wip/dev/{ => other}/moonzoon/recipe.toml (100%) rename recipes/wip/dev/{ => other}/morty/recipe.toml (100%) rename recipes/wip/dev/{ => other}/ncnn/recipe.toml (100%) rename recipes/wip/dev/{ => other}/necessist/recipe.toml (100%) rename recipes/wip/dev/{ => other}/netradiant/recipe.toml (100%) rename recipes/wip/dev/{ => other}/ngspice/recipe.toml (100%) rename recipes/wip/dev/{ => other}/not-perf/recipe.toml (100%) rename recipes/wip/dev/{ => other}/novops/recipe.toml (100%) rename recipes/wip/dev/{ => other}/omni/recipe.toml (100%) rename recipes/wip/dev/{ => other}/omnibor-rs/recipe.toml (100%) rename recipes/wip/dev/{ => other}/opam/recipe.toml (100%) rename recipes/wip/dev/{ => other}/opencascade/recipe.toml (100%) rename recipes/wip/dev/{ => other}/openradioss/recipe.toml (100%) rename recipes/wip/dev/{ => other}/oxc/recipe.toml (100%) rename recipes/wip/dev/{ => other}/oxidizer/recipe.toml (100%) rename recipes/wip/dev/{ => other}/panamax/recipe.toml (100%) rename recipes/wip/dev/{ => other}/piccolo/recipe.toml (100%) rename recipes/wip/dev/{ => other}/pixi/recipe.toml (100%) rename recipes/wip/dev/{ => other}/precious/recipe.toml (100%) rename recipes/wip/dev/{ => other}/probe-rs/recipe.toml (100%) rename recipes/wip/dev/{ => other}/projclean/recipe.toml (100%) rename recipes/wip/dev/{ => other}/projections/recipe.toml (100%) rename recipes/wip/dev/{ => other}/proto/recipe.toml (100%) rename recipes/wip/dev/{ => other}/protobuf/recipe.toml (100%) rename recipes/wip/dev/{ => other}/protofetch/recipe.toml (100%) rename recipes/wip/dev/{ => other}/pxp/recipe.toml (100%) rename recipes/wip/dev/{ => other}/qbe/recipe.toml (100%) rename recipes/wip/dev/{ => other}/quicktest/recipe.toml (100%) rename recipes/wip/dev/{ => other}/radicle/recipe.toml (100%) rename recipes/wip/dev/{ => other}/ragel/recipe.toml (100%) rename recipes/wip/dev/{ => other}/rattler-build/recipe.toml (100%) rename recipes/wip/dev/{ => other}/rbasefind/recipe.toml (100%) rename recipes/wip/dev/{ => other}/redict/recipe.toml (100%) rename recipes/wip/dev/{ => other}/redis/recipe.toml (100%) rename recipes/wip/dev/{ => other}/release-plz/recipe.toml (100%) rename recipes/wip/dev/{ => other}/renderdoc/recipe.toml (100%) rename recipes/wip/dev/{ => other}/resym/recipe.toml (100%) rename recipes/wip/dev/{ => other}/rgit/recipe.toml (100%) rename recipes/wip/dev/{ => other}/rhack/recipe.toml (100%) rename recipes/wip/dev/{ => other}/rudra/recipe.toml (100%) rename recipes/wip/dev/{ => other}/rust-counter-strings/recipe.toml (100%) rename recipes/wip/dev/{ => other}/rusty-radamsa/recipe.toml (100%) rename recipes/wip/dev/{ => other}/samply/recipe.toml (100%) rename recipes/wip/dev/{ => other}/shaderc/recipe.toml (100%) rename recipes/wip/dev/{ => other}/souper/recipe.toml (100%) rename recipes/wip/dev/{ => other}/steel/recipe.toml (100%) rename recipes/wip/dev/{ => other}/stgit/recipe.toml (100%) rename recipes/wip/dev/{ => other}/stitch/recipe.toml (100%) rename recipes/wip/dev/{ => other}/svd2rust/recipe.toml (100%) rename recipes/wip/dev/{ => other}/swig/recipe.toml (100%) rename recipes/wip/dev/{ => other}/tcl/recipe.toml (100%) rename recipes/wip/dev/{ => other}/tk/recipe.toml (100%) rename recipes/wip/dev/{ => other}/tnn/recipe.toml (100%) rename recipes/wip/dev/{ => other}/tokio-console/recipe.toml (100%) rename recipes/wip/dev/{ => other}/tracy/recipe.toml (100%) rename recipes/wip/dev/{ => other}/trunk/recipe.toml (100%) rename recipes/wip/dev/{ => other}/tv/recipe.toml (100%) rename recipes/wip/dev/{ => other}/twiggy/recipe.toml (100%) rename recipes/wip/dev/{ => other}/ucd-generate/recipe.toml (100%) rename recipes/wip/dev/{ => other}/valgrind/recipe.toml (100%) rename recipes/wip/dev/{ => other}/valkey/recipe.toml (100%) rename recipes/wip/dev/{ => other}/verrou/recipe.toml (100%) rename recipes/wip/dev/{ => other}/vkpeak/recipe.toml (100%) rename recipes/wip/dev/{ => other}/zeal/recipe.toml (100%) rename recipes/wip/dev/{ => other}/zepter/recipe.toml (100%) rename recipes/wip/dev/{ => other}/zola/recipe.toml (100%) rename recipes/wip/tools/{other => net}/aim/recipe.toml (100%) rename recipes/wip/tools/{other => terminal}/alacritty/recipe.toml (100%) rename recipes/wip/tools/{other => terminal}/rioterm/recipe.toml (100%) rename recipes/wip/tools/{other => terminal}/wezterm/recipe.toml (100%) rename recipes/wip/tools/{other => terminal}/zellij/recipe.toml (100%) rename recipes/wip/{tools/other => vm}/v86/recipe.toml (100%) diff --git a/recipes/wip/dev/abi-cafe/recipe.toml b/recipes/wip/dev/other/abi-cafe/recipe.toml similarity index 100% rename from recipes/wip/dev/abi-cafe/recipe.toml rename to recipes/wip/dev/other/abi-cafe/recipe.toml diff --git a/recipes/wip/dev/add-determinism/recipe.toml b/recipes/wip/dev/other/add-determinism/recipe.toml similarity index 100% rename from recipes/wip/dev/add-determinism/recipe.toml rename to recipes/wip/dev/other/add-determinism/recipe.toml diff --git a/recipes/wip/dev/allocscope/recipe.toml b/recipes/wip/dev/other/allocscope/recipe.toml similarity index 100% rename from recipes/wip/dev/allocscope/recipe.toml rename to recipes/wip/dev/other/allocscope/recipe.toml diff --git a/recipes/wip/dev/alquitran/recipe.toml b/recipes/wip/dev/other/alquitran/recipe.toml similarity index 100% rename from recipes/wip/dev/alquitran/recipe.toml rename to recipes/wip/dev/other/alquitran/recipe.toml diff --git a/recipes/wip/dev/alt/recipe.toml b/recipes/wip/dev/other/alt/recipe.toml similarity index 100% rename from recipes/wip/dev/alt/recipe.toml rename to recipes/wip/dev/other/alt/recipe.toml diff --git a/recipes/wip/dev/apitrace/recipe.toml b/recipes/wip/dev/other/apitrace/recipe.toml similarity index 100% rename from recipes/wip/dev/apitrace/recipe.toml rename to recipes/wip/dev/other/apitrace/recipe.toml diff --git a/recipes/wip/dev/apr-util/recipe.toml b/recipes/wip/dev/other/apr-util/recipe.toml similarity index 100% rename from recipes/wip/dev/apr-util/recipe.toml rename to recipes/wip/dev/other/apr-util/recipe.toml diff --git a/recipes/wip/dev/apr-util/redox.patch b/recipes/wip/dev/other/apr-util/redox.patch similarity index 100% rename from recipes/wip/dev/apr-util/redox.patch rename to recipes/wip/dev/other/apr-util/redox.patch diff --git a/recipes/wip/dev/apr/recipe.toml b/recipes/wip/dev/other/apr/recipe.toml similarity index 100% rename from recipes/wip/dev/apr/recipe.toml rename to recipes/wip/dev/other/apr/recipe.toml diff --git a/recipes/wip/dev/apr/redox.patch b/recipes/wip/dev/other/apr/redox.patch similarity index 100% rename from recipes/wip/dev/apr/redox.patch rename to recipes/wip/dev/other/apr/redox.patch diff --git a/recipes/wip/dev/artichoke/recipe.toml b/recipes/wip/dev/other/artichoke/recipe.toml similarity index 100% rename from recipes/wip/dev/artichoke/recipe.toml rename to recipes/wip/dev/other/artichoke/recipe.toml diff --git a/recipes/wip/dev/austral-lang/recipe.toml b/recipes/wip/dev/other/austral-lang/recipe.toml similarity index 100% rename from recipes/wip/dev/austral-lang/recipe.toml rename to recipes/wip/dev/other/austral-lang/recipe.toml diff --git a/recipes/wip/dev/auto-commit/recipe.toml b/recipes/wip/dev/other/auto-commit/recipe.toml similarity index 100% rename from recipes/wip/dev/auto-commit/recipe.toml rename to recipes/wip/dev/other/auto-commit/recipe.toml diff --git a/recipes/wip/dev/bender/recipe.toml b/recipes/wip/dev/other/bender/recipe.toml similarity index 100% rename from recipes/wip/dev/bender/recipe.toml rename to recipes/wip/dev/other/bender/recipe.toml diff --git a/recipes/wip/dev/binocle/recipe.toml b/recipes/wip/dev/other/binocle/recipe.toml similarity index 100% rename from recipes/wip/dev/binocle/recipe.toml rename to recipes/wip/dev/other/binocle/recipe.toml diff --git a/recipes/wip/dev/biome/recipe.toml b/recipes/wip/dev/other/biome/recipe.toml similarity index 100% rename from recipes/wip/dev/biome/recipe.toml rename to recipes/wip/dev/other/biome/recipe.toml diff --git a/recipes/wip/dev/bison/recipe.toml b/recipes/wip/dev/other/bison/recipe.toml similarity index 100% rename from recipes/wip/dev/bison/recipe.toml rename to recipes/wip/dev/other/bison/recipe.toml diff --git a/recipes/wip/dev/bite/recipe.toml b/recipes/wip/dev/other/bite/recipe.toml similarity index 100% rename from recipes/wip/dev/bite/recipe.toml rename to recipes/wip/dev/other/bite/recipe.toml diff --git a/recipes/wip/dev/boon/recipe.toml b/recipes/wip/dev/other/boon/recipe.toml similarity index 100% rename from recipes/wip/dev/boon/recipe.toml rename to recipes/wip/dev/other/boon/recipe.toml diff --git a/recipes/wip/dev/bugstalker/recipe.toml b/recipes/wip/dev/other/bugstalker/recipe.toml similarity index 100% rename from recipes/wip/dev/bugstalker/recipe.toml rename to recipes/wip/dev/other/bugstalker/recipe.toml diff --git a/recipes/wip/dev/cackle/recipe.toml b/recipes/wip/dev/other/cackle/recipe.toml similarity index 100% rename from recipes/wip/dev/cackle/recipe.toml rename to recipes/wip/dev/other/cackle/recipe.toml diff --git a/recipes/wip/dev/capnproto/recipe.toml b/recipes/wip/dev/other/capnproto/recipe.toml similarity index 100% rename from recipes/wip/dev/capnproto/recipe.toml rename to recipes/wip/dev/other/capnproto/recipe.toml diff --git a/recipes/wip/dev/ccs-tools/recipe.toml b/recipes/wip/dev/other/ccs-tools/recipe.toml similarity index 100% rename from recipes/wip/dev/ccs-tools/recipe.toml rename to recipes/wip/dev/other/ccs-tools/recipe.toml diff --git a/recipes/wip/dev/charm++/recipe.toml b/recipes/wip/dev/other/charm++/recipe.toml similarity index 100% rename from recipes/wip/dev/charm++/recipe.toml rename to recipes/wip/dev/other/charm++/recipe.toml diff --git a/recipes/wip/dev/chars/recipe.toml b/recipes/wip/dev/other/chars/recipe.toml similarity index 100% rename from recipes/wip/dev/chars/recipe.toml rename to recipes/wip/dev/other/chars/recipe.toml diff --git a/recipes/wip/dev/cling/recipe.toml b/recipes/wip/dev/other/cling/recipe.toml similarity index 100% rename from recipes/wip/dev/cling/recipe.toml rename to recipes/wip/dev/other/cling/recipe.toml diff --git a/recipes/wip/dev/code-minimap/recipe.toml b/recipes/wip/dev/other/code-minimap/recipe.toml similarity index 100% rename from recipes/wip/dev/code-minimap/recipe.toml rename to recipes/wip/dev/other/code-minimap/recipe.toml diff --git a/recipes/wip/dev/codevis/recipe.toml b/recipes/wip/dev/other/codevis/recipe.toml similarity index 100% rename from recipes/wip/dev/codevis/recipe.toml rename to recipes/wip/dev/other/codevis/recipe.toml diff --git a/recipes/wip/dev/colm/recipe.toml b/recipes/wip/dev/other/colm/recipe.toml similarity index 100% rename from recipes/wip/dev/colm/recipe.toml rename to recipes/wip/dev/other/colm/recipe.toml diff --git a/recipes/wip/dev/colmena/recipe.toml b/recipes/wip/dev/other/colmena/recipe.toml similarity index 100% rename from recipes/wip/dev/colmena/recipe.toml rename to recipes/wip/dev/other/colmena/recipe.toml diff --git a/recipes/wip/dev/commit/recipe.toml b/recipes/wip/dev/other/commit/recipe.toml similarity index 100% rename from recipes/wip/dev/commit/recipe.toml rename to recipes/wip/dev/other/commit/recipe.toml diff --git a/recipes/wip/dev/cppunit/recipe.toml b/recipes/wip/dev/other/cppunit/recipe.toml similarity index 100% rename from recipes/wip/dev/cppunit/recipe.toml rename to recipes/wip/dev/other/cppunit/recipe.toml diff --git a/recipes/wip/dev/crates-tui/recipe.toml b/recipes/wip/dev/other/crates-tui/recipe.toml similarity index 100% rename from recipes/wip/dev/crates-tui/recipe.toml rename to recipes/wip/dev/other/crates-tui/recipe.toml diff --git a/recipes/wip/dev/criner/recipe.toml b/recipes/wip/dev/other/criner/recipe.toml similarity index 100% rename from recipes/wip/dev/criner/recipe.toml rename to recipes/wip/dev/other/criner/recipe.toml diff --git a/recipes/wip/dev/crosstool-ng/recipe.toml b/recipes/wip/dev/other/crosstool-ng/recipe.toml similarity index 100% rename from recipes/wip/dev/crosstool-ng/recipe.toml rename to recipes/wip/dev/other/crosstool-ng/recipe.toml diff --git a/recipes/wip/dev/debug/gdb/recipe.toml b/recipes/wip/dev/other/debug/gdb/recipe.toml similarity index 100% rename from recipes/wip/dev/debug/gdb/recipe.toml rename to recipes/wip/dev/other/debug/gdb/recipe.toml diff --git a/recipes/wip/dev/debug/rr-debugger/recipe.toml b/recipes/wip/dev/other/debug/rr-debugger/recipe.toml similarity index 100% rename from recipes/wip/dev/debug/rr-debugger/recipe.toml rename to recipes/wip/dev/other/debug/rr-debugger/recipe.toml diff --git a/recipes/wip/dev/debugedit/recipe.toml b/recipes/wip/dev/other/debugedit/recipe.toml similarity index 100% rename from recipes/wip/dev/debugedit/recipe.toml rename to recipes/wip/dev/other/debugedit/recipe.toml diff --git a/recipes/wip/dev/deno/recipe.toml b/recipes/wip/dev/other/deno/recipe.toml similarity index 100% rename from recipes/wip/dev/deno/recipe.toml rename to recipes/wip/dev/other/deno/recipe.toml diff --git a/recipes/wip/dev/deploy-rs/recipe.toml b/recipes/wip/dev/other/deploy-rs/recipe.toml similarity index 100% rename from recipes/wip/dev/deploy-rs/recipe.toml rename to recipes/wip/dev/other/deploy-rs/recipe.toml diff --git a/recipes/wip/dev/deps-rs/recipe.toml b/recipes/wip/dev/other/deps-rs/recipe.toml similarity index 100% rename from recipes/wip/dev/deps-rs/recipe.toml rename to recipes/wip/dev/other/deps-rs/recipe.toml diff --git a/recipes/wip/dev/dfx/recipe.toml b/recipes/wip/dev/other/dfx/recipe.toml similarity index 100% rename from recipes/wip/dev/dfx/recipe.toml rename to recipes/wip/dev/other/dfx/recipe.toml diff --git a/recipes/wip/dev/difftastic/recipe.toml b/recipes/wip/dev/other/difftastic/recipe.toml similarity index 100% rename from recipes/wip/dev/difftastic/recipe.toml rename to recipes/wip/dev/other/difftastic/recipe.toml diff --git a/recipes/wip/dev/dioxus/recipe.toml b/recipes/wip/dev/other/dioxus/recipe.toml similarity index 100% rename from recipes/wip/dev/dioxus/recipe.toml rename to recipes/wip/dev/other/dioxus/recipe.toml diff --git a/recipes/wip/dev/doxygen/recipe.toml b/recipes/wip/dev/other/doxygen/recipe.toml similarity index 100% rename from recipes/wip/dev/doxygen/recipe.toml rename to recipes/wip/dev/other/doxygen/recipe.toml diff --git a/recipes/wip/dev/dtool/recipe.toml b/recipes/wip/dev/other/dtool/recipe.toml similarity index 100% rename from recipes/wip/dev/dtool/recipe.toml rename to recipes/wip/dev/other/dtool/recipe.toml diff --git a/recipes/wip/dev/ecargo/recipe.toml b/recipes/wip/dev/other/ecargo/recipe.toml similarity index 100% rename from recipes/wip/dev/ecargo/recipe.toml rename to recipes/wip/dev/other/ecargo/recipe.toml diff --git a/recipes/wip/dev/elfshaker/recipe.toml b/recipes/wip/dev/other/elfshaker/recipe.toml similarity index 100% rename from recipes/wip/dev/elfshaker/recipe.toml rename to recipes/wip/dev/other/elfshaker/recipe.toml diff --git a/recipes/wip/dev/espmonitor/recipe.toml b/recipes/wip/dev/other/espmonitor/recipe.toml similarity index 100% rename from recipes/wip/dev/espmonitor/recipe.toml rename to recipes/wip/dev/other/espmonitor/recipe.toml diff --git a/recipes/wip/dev/fal/recipe.toml b/recipes/wip/dev/other/fal/recipe.toml similarity index 100% rename from recipes/wip/dev/fal/recipe.toml rename to recipes/wip/dev/other/fal/recipe.toml diff --git a/recipes/wip/dev/fazi/recipe.toml b/recipes/wip/dev/other/fazi/recipe.toml similarity index 100% rename from recipes/wip/dev/fazi/recipe.toml rename to recipes/wip/dev/other/fazi/recipe.toml diff --git a/recipes/wip/dev/firedbg/recipe.toml b/recipes/wip/dev/other/firedbg/recipe.toml similarity index 100% rename from recipes/wip/dev/firedbg/recipe.toml rename to recipes/wip/dev/other/firedbg/recipe.toml diff --git a/recipes/wip/dev/flamegraph/recipe.toml b/recipes/wip/dev/other/flamegraph/recipe.toml similarity index 100% rename from recipes/wip/dev/flamegraph/recipe.toml rename to recipes/wip/dev/other/flamegraph/recipe.toml diff --git a/recipes/wip/dev/flex/recipe.toml b/recipes/wip/dev/other/flex/recipe.toml similarity index 100% rename from recipes/wip/dev/flex/recipe.toml rename to recipes/wip/dev/other/flex/recipe.toml diff --git a/recipes/wip/dev/gegl/recipe.toml b/recipes/wip/dev/other/gegl/recipe.toml similarity index 100% rename from recipes/wip/dev/gegl/recipe.toml rename to recipes/wip/dev/other/gegl/recipe.toml diff --git a/recipes/wip/dev/gem5/recipe.toml b/recipes/wip/dev/other/gem5/recipe.toml similarity index 100% rename from recipes/wip/dev/gem5/recipe.toml rename to recipes/wip/dev/other/gem5/recipe.toml diff --git a/recipes/wip/dev/get-blessed/recipe.toml b/recipes/wip/dev/other/get-blessed/recipe.toml similarity index 100% rename from recipes/wip/dev/get-blessed/recipe.toml rename to recipes/wip/dev/other/get-blessed/recipe.toml diff --git a/recipes/wip/dev/gex/recipe.toml b/recipes/wip/dev/other/gex/recipe.toml similarity index 100% rename from recipes/wip/dev/gex/recipe.toml rename to recipes/wip/dev/other/gex/recipe.toml diff --git a/recipes/wip/dev/gexiv2/recipe.toml b/recipes/wip/dev/other/gexiv2/recipe.toml similarity index 100% rename from recipes/wip/dev/gexiv2/recipe.toml rename to recipes/wip/dev/other/gexiv2/recipe.toml diff --git a/recipes/wip/dev/gfold/recipe.toml b/recipes/wip/dev/other/gfold/recipe.toml similarity index 100% rename from recipes/wip/dev/gfold/recipe.toml rename to recipes/wip/dev/other/gfold/recipe.toml diff --git a/recipes/wip/dev/ghostpdl/recipe.toml b/recipes/wip/dev/other/ghostpdl/recipe.toml similarity index 100% rename from recipes/wip/dev/ghostpdl/recipe.toml rename to recipes/wip/dev/other/ghostpdl/recipe.toml diff --git a/recipes/wip/dev/gist-rs/recipe.toml b/recipes/wip/dev/other/gist-rs/recipe.toml similarity index 100% rename from recipes/wip/dev/gist-rs/recipe.toml rename to recipes/wip/dev/other/gist-rs/recipe.toml diff --git a/recipes/wip/dev/gitlab-cargo-shim/recipe.toml b/recipes/wip/dev/other/gitlab-cargo-shim/recipe.toml similarity index 100% rename from recipes/wip/dev/gitlab-cargo-shim/recipe.toml rename to recipes/wip/dev/other/gitlab-cargo-shim/recipe.toml diff --git a/recipes/wip/dev/glibmm/recipe.toml b/recipes/wip/dev/other/glibmm/recipe.toml similarity index 100% rename from recipes/wip/dev/glibmm/recipe.toml rename to recipes/wip/dev/other/glibmm/recipe.toml diff --git a/recipes/wip/dev/gperf/recipe.toml b/recipes/wip/dev/other/gperf/recipe.toml similarity index 100% rename from recipes/wip/dev/gperf/recipe.toml rename to recipes/wip/dev/other/gperf/recipe.toml diff --git a/recipes/wip/dev/graphene/recipe.toml b/recipes/wip/dev/other/graphene/recipe.toml similarity index 100% rename from recipes/wip/dev/graphene/recipe.toml rename to recipes/wip/dev/other/graphene/recipe.toml diff --git a/recipes/wip/dev/grcov/recipe.toml b/recipes/wip/dev/other/grcov/recipe.toml similarity index 100% rename from recipes/wip/dev/grcov/recipe.toml rename to recipes/wip/dev/other/grcov/recipe.toml diff --git a/recipes/wip/dev/gtest/recipe.toml b/recipes/wip/dev/other/gtest/recipe.toml similarity index 100% rename from recipes/wip/dev/gtest/recipe.toml rename to recipes/wip/dev/other/gtest/recipe.toml diff --git a/recipes/wip/dev/guile/recipe.toml b/recipes/wip/dev/other/guile/recipe.toml similarity index 100% rename from recipes/wip/dev/guile/recipe.toml rename to recipes/wip/dev/other/guile/recipe.toml diff --git a/recipes/wip/dev/headers/recipe.toml b/recipes/wip/dev/other/headers/recipe.toml similarity index 100% rename from recipes/wip/dev/headers/recipe.toml rename to recipes/wip/dev/other/headers/recipe.toml diff --git a/recipes/wip/dev/hexyl/recipe.toml b/recipes/wip/dev/other/hexyl/recipe.toml similarity index 100% rename from recipes/wip/dev/hexyl/recipe.toml rename to recipes/wip/dev/other/hexyl/recipe.toml diff --git a/recipes/wip/dev/honggfuzz/recipe.toml b/recipes/wip/dev/other/honggfuzz/recipe.toml similarity index 100% rename from recipes/wip/dev/honggfuzz/recipe.toml rename to recipes/wip/dev/other/honggfuzz/recipe.toml diff --git a/recipes/wip/dev/htmlq/recipe.toml b/recipes/wip/dev/other/htmlq/recipe.toml similarity index 100% rename from recipes/wip/dev/htmlq/recipe.toml rename to recipes/wip/dev/other/htmlq/recipe.toml diff --git a/recipes/wip/dev/hvm/recipe.toml b/recipes/wip/dev/other/hvm/recipe.toml similarity index 100% rename from recipes/wip/dev/hvm/recipe.toml rename to recipes/wip/dev/other/hvm/recipe.toml diff --git a/recipes/wip/dev/icemaker/recipe.toml b/recipes/wip/dev/other/icemaker/recipe.toml similarity index 100% rename from recipes/wip/dev/icemaker/recipe.toml rename to recipes/wip/dev/other/icemaker/recipe.toml diff --git a/recipes/wip/dev/inko/recipe.toml b/recipes/wip/dev/other/inko/recipe.toml similarity index 100% rename from recipes/wip/dev/inko/recipe.toml rename to recipes/wip/dev/other/inko/recipe.toml diff --git a/recipes/wip/dev/intltool/recipe.toml b/recipes/wip/dev/other/intltool/recipe.toml similarity index 100% rename from recipes/wip/dev/intltool/recipe.toml rename to recipes/wip/dev/other/intltool/recipe.toml diff --git a/recipes/wip/dev/irust/recipe.toml b/recipes/wip/dev/other/irust/recipe.toml similarity index 100% rename from recipes/wip/dev/irust/recipe.toml rename to recipes/wip/dev/other/irust/recipe.toml diff --git a/recipes/wip/dev/ispc/recipe.toml b/recipes/wip/dev/other/ispc/recipe.toml similarity index 100% rename from recipes/wip/dev/ispc/recipe.toml rename to recipes/wip/dev/other/ispc/recipe.toml diff --git a/recipes/wip/dev/jaq/recipe.toml b/recipes/wip/dev/other/jaq/recipe.toml similarity index 100% rename from recipes/wip/dev/jaq/recipe.toml rename to recipes/wip/dev/other/jaq/recipe.toml diff --git a/recipes/wip/dev/jco/recipe.toml b/recipes/wip/dev/other/jco/recipe.toml similarity index 100% rename from recipes/wip/dev/jco/recipe.toml rename to recipes/wip/dev/other/jco/recipe.toml diff --git a/recipes/wip/dev/jq/recipe.toml b/recipes/wip/dev/other/jq/recipe.toml similarity index 100% rename from recipes/wip/dev/jq/recipe.toml rename to recipes/wip/dev/other/jq/recipe.toml diff --git a/recipes/wip/dev/jujutsu/recipe.toml b/recipes/wip/dev/other/jujutsu/recipe.toml similarity index 100% rename from recipes/wip/dev/jujutsu/recipe.toml rename to recipes/wip/dev/other/jujutsu/recipe.toml diff --git a/recipes/wip/dev/kicad/recipe.toml b/recipes/wip/dev/other/kicad/recipe.toml similarity index 100% rename from recipes/wip/dev/kicad/recipe.toml rename to recipes/wip/dev/other/kicad/recipe.toml diff --git a/recipes/wip/dev/kickstart/recipe.toml b/recipes/wip/dev/other/kickstart/recipe.toml similarity index 100% rename from recipes/wip/dev/kickstart/recipe.toml rename to recipes/wip/dev/other/kickstart/recipe.toml diff --git a/recipes/wip/dev/knope/recipe.toml b/recipes/wip/dev/other/knope/recipe.toml similarity index 100% rename from recipes/wip/dev/knope/recipe.toml rename to recipes/wip/dev/other/knope/recipe.toml diff --git a/recipes/wip/dev/kondo/recipe.toml b/recipes/wip/dev/other/kondo/recipe.toml similarity index 100% rename from recipes/wip/dev/kondo/recipe.toml rename to recipes/wip/dev/other/kondo/recipe.toml diff --git a/recipes/wip/dev/ktra/recipe.toml b/recipes/wip/dev/other/ktra/recipe.toml similarity index 100% rename from recipes/wip/dev/ktra/recipe.toml rename to recipes/wip/dev/other/ktra/recipe.toml diff --git a/recipes/wip/dev/lading/recipe.toml b/recipes/wip/dev/other/lading/recipe.toml similarity index 100% rename from recipes/wip/dev/lading/recipe.toml rename to recipes/wip/dev/other/lading/recipe.toml diff --git a/recipes/wip/dev/leetup/recipe.toml b/recipes/wip/dev/other/leetup/recipe.toml similarity index 100% rename from recipes/wip/dev/leetup/recipe.toml rename to recipes/wip/dev/other/leetup/recipe.toml diff --git a/recipes/wip/dev/leptosfmt/recipe.toml b/recipes/wip/dev/other/leptosfmt/recipe.toml similarity index 100% rename from recipes/wip/dev/leptosfmt/recipe.toml rename to recipes/wip/dev/other/leptosfmt/recipe.toml diff --git a/recipes/wip/dev/level-zero/recipe.toml b/recipes/wip/dev/other/level-zero/recipe.toml similarity index 100% rename from recipes/wip/dev/level-zero/recipe.toml rename to recipes/wip/dev/other/level-zero/recipe.toml diff --git a/recipes/wip/dev/license-generator/recipe.toml b/recipes/wip/dev/other/license-generator/recipe.toml similarity index 100% rename from recipes/wip/dev/license-generator/recipe.toml rename to recipes/wip/dev/other/license-generator/recipe.toml diff --git a/recipes/wip/dev/licensure/recipe.toml b/recipes/wip/dev/other/licensure/recipe.toml similarity index 100% rename from recipes/wip/dev/licensure/recipe.toml rename to recipes/wip/dev/other/licensure/recipe.toml diff --git a/recipes/wip/dev/loadlibrary/recipe.toml b/recipes/wip/dev/other/loadlibrary/recipe.toml similarity index 100% rename from recipes/wip/dev/loadlibrary/recipe.toml rename to recipes/wip/dev/other/loadlibrary/recipe.toml diff --git a/recipes/wip/dev/lockdiff/recipe.toml b/recipes/wip/dev/other/lockdiff/recipe.toml similarity index 100% rename from recipes/wip/dev/lockdiff/recipe.toml rename to recipes/wip/dev/other/lockdiff/recipe.toml diff --git a/recipes/wip/dev/loco/recipe.toml b/recipes/wip/dev/other/loco/recipe.toml similarity index 100% rename from recipes/wip/dev/loco/recipe.toml rename to recipes/wip/dev/other/loco/recipe.toml diff --git a/recipes/wip/dev/lttng-ust/recipe.toml b/recipes/wip/dev/other/lttng-ust/recipe.toml similarity index 100% rename from recipes/wip/dev/lttng-ust/recipe.toml rename to recipes/wip/dev/other/lttng-ust/recipe.toml diff --git a/recipes/wip/dev/lurk/recipe.toml b/recipes/wip/dev/other/lurk/recipe.toml similarity index 100% rename from recipes/wip/dev/lurk/recipe.toml rename to recipes/wip/dev/other/lurk/recipe.toml diff --git a/recipes/wip/dev/margo/recipe.toml b/recipes/wip/dev/other/margo/recipe.toml similarity index 100% rename from recipes/wip/dev/margo/recipe.toml rename to recipes/wip/dev/other/margo/recipe.toml diff --git a/recipes/wip/dev/memtest-vulkan/recipe.toml b/recipes/wip/dev/other/memtest-vulkan/recipe.toml similarity index 100% rename from recipes/wip/dev/memtest-vulkan/recipe.toml rename to recipes/wip/dev/other/memtest-vulkan/recipe.toml diff --git a/recipes/wip/dev/mise/recipe.toml b/recipes/wip/dev/other/mise/recipe.toml similarity index 100% rename from recipes/wip/dev/mise/recipe.toml rename to recipes/wip/dev/other/mise/recipe.toml diff --git a/recipes/wip/dev/mkfs/recipe.toml b/recipes/wip/dev/other/mkfs/recipe.toml similarity index 100% rename from recipes/wip/dev/mkfs/recipe.toml rename to recipes/wip/dev/other/mkfs/recipe.toml diff --git a/recipes/wip/dev/mnn/recipe.toml b/recipes/wip/dev/other/mnn/recipe.toml similarity index 100% rename from recipes/wip/dev/mnn/recipe.toml rename to recipes/wip/dev/other/mnn/recipe.toml diff --git a/recipes/wip/dev/mono/recipe.toml b/recipes/wip/dev/other/mono/recipe.toml similarity index 100% rename from recipes/wip/dev/mono/recipe.toml rename to recipes/wip/dev/other/mono/recipe.toml diff --git a/recipes/wip/dev/moon/recipe.toml b/recipes/wip/dev/other/moon/recipe.toml similarity index 100% rename from recipes/wip/dev/moon/recipe.toml rename to recipes/wip/dev/other/moon/recipe.toml diff --git a/recipes/wip/dev/moonzoon/recipe.toml b/recipes/wip/dev/other/moonzoon/recipe.toml similarity index 100% rename from recipes/wip/dev/moonzoon/recipe.toml rename to recipes/wip/dev/other/moonzoon/recipe.toml diff --git a/recipes/wip/dev/morty/recipe.toml b/recipes/wip/dev/other/morty/recipe.toml similarity index 100% rename from recipes/wip/dev/morty/recipe.toml rename to recipes/wip/dev/other/morty/recipe.toml diff --git a/recipes/wip/dev/ncnn/recipe.toml b/recipes/wip/dev/other/ncnn/recipe.toml similarity index 100% rename from recipes/wip/dev/ncnn/recipe.toml rename to recipes/wip/dev/other/ncnn/recipe.toml diff --git a/recipes/wip/dev/necessist/recipe.toml b/recipes/wip/dev/other/necessist/recipe.toml similarity index 100% rename from recipes/wip/dev/necessist/recipe.toml rename to recipes/wip/dev/other/necessist/recipe.toml diff --git a/recipes/wip/dev/netradiant/recipe.toml b/recipes/wip/dev/other/netradiant/recipe.toml similarity index 100% rename from recipes/wip/dev/netradiant/recipe.toml rename to recipes/wip/dev/other/netradiant/recipe.toml diff --git a/recipes/wip/dev/ngspice/recipe.toml b/recipes/wip/dev/other/ngspice/recipe.toml similarity index 100% rename from recipes/wip/dev/ngspice/recipe.toml rename to recipes/wip/dev/other/ngspice/recipe.toml diff --git a/recipes/wip/dev/not-perf/recipe.toml b/recipes/wip/dev/other/not-perf/recipe.toml similarity index 100% rename from recipes/wip/dev/not-perf/recipe.toml rename to recipes/wip/dev/other/not-perf/recipe.toml diff --git a/recipes/wip/dev/novops/recipe.toml b/recipes/wip/dev/other/novops/recipe.toml similarity index 100% rename from recipes/wip/dev/novops/recipe.toml rename to recipes/wip/dev/other/novops/recipe.toml diff --git a/recipes/wip/dev/omni/recipe.toml b/recipes/wip/dev/other/omni/recipe.toml similarity index 100% rename from recipes/wip/dev/omni/recipe.toml rename to recipes/wip/dev/other/omni/recipe.toml diff --git a/recipes/wip/dev/omnibor-rs/recipe.toml b/recipes/wip/dev/other/omnibor-rs/recipe.toml similarity index 100% rename from recipes/wip/dev/omnibor-rs/recipe.toml rename to recipes/wip/dev/other/omnibor-rs/recipe.toml diff --git a/recipes/wip/dev/opam/recipe.toml b/recipes/wip/dev/other/opam/recipe.toml similarity index 100% rename from recipes/wip/dev/opam/recipe.toml rename to recipes/wip/dev/other/opam/recipe.toml diff --git a/recipes/wip/dev/opencascade/recipe.toml b/recipes/wip/dev/other/opencascade/recipe.toml similarity index 100% rename from recipes/wip/dev/opencascade/recipe.toml rename to recipes/wip/dev/other/opencascade/recipe.toml diff --git a/recipes/wip/dev/openradioss/recipe.toml b/recipes/wip/dev/other/openradioss/recipe.toml similarity index 100% rename from recipes/wip/dev/openradioss/recipe.toml rename to recipes/wip/dev/other/openradioss/recipe.toml diff --git a/recipes/wip/dev/oxc/recipe.toml b/recipes/wip/dev/other/oxc/recipe.toml similarity index 100% rename from recipes/wip/dev/oxc/recipe.toml rename to recipes/wip/dev/other/oxc/recipe.toml diff --git a/recipes/wip/dev/oxidizer/recipe.toml b/recipes/wip/dev/other/oxidizer/recipe.toml similarity index 100% rename from recipes/wip/dev/oxidizer/recipe.toml rename to recipes/wip/dev/other/oxidizer/recipe.toml diff --git a/recipes/wip/dev/panamax/recipe.toml b/recipes/wip/dev/other/panamax/recipe.toml similarity index 100% rename from recipes/wip/dev/panamax/recipe.toml rename to recipes/wip/dev/other/panamax/recipe.toml diff --git a/recipes/wip/dev/piccolo/recipe.toml b/recipes/wip/dev/other/piccolo/recipe.toml similarity index 100% rename from recipes/wip/dev/piccolo/recipe.toml rename to recipes/wip/dev/other/piccolo/recipe.toml diff --git a/recipes/wip/dev/pixi/recipe.toml b/recipes/wip/dev/other/pixi/recipe.toml similarity index 100% rename from recipes/wip/dev/pixi/recipe.toml rename to recipes/wip/dev/other/pixi/recipe.toml diff --git a/recipes/wip/dev/precious/recipe.toml b/recipes/wip/dev/other/precious/recipe.toml similarity index 100% rename from recipes/wip/dev/precious/recipe.toml rename to recipes/wip/dev/other/precious/recipe.toml diff --git a/recipes/wip/dev/probe-rs/recipe.toml b/recipes/wip/dev/other/probe-rs/recipe.toml similarity index 100% rename from recipes/wip/dev/probe-rs/recipe.toml rename to recipes/wip/dev/other/probe-rs/recipe.toml diff --git a/recipes/wip/dev/projclean/recipe.toml b/recipes/wip/dev/other/projclean/recipe.toml similarity index 100% rename from recipes/wip/dev/projclean/recipe.toml rename to recipes/wip/dev/other/projclean/recipe.toml diff --git a/recipes/wip/dev/projections/recipe.toml b/recipes/wip/dev/other/projections/recipe.toml similarity index 100% rename from recipes/wip/dev/projections/recipe.toml rename to recipes/wip/dev/other/projections/recipe.toml diff --git a/recipes/wip/dev/proto/recipe.toml b/recipes/wip/dev/other/proto/recipe.toml similarity index 100% rename from recipes/wip/dev/proto/recipe.toml rename to recipes/wip/dev/other/proto/recipe.toml diff --git a/recipes/wip/dev/protobuf/recipe.toml b/recipes/wip/dev/other/protobuf/recipe.toml similarity index 100% rename from recipes/wip/dev/protobuf/recipe.toml rename to recipes/wip/dev/other/protobuf/recipe.toml diff --git a/recipes/wip/dev/protofetch/recipe.toml b/recipes/wip/dev/other/protofetch/recipe.toml similarity index 100% rename from recipes/wip/dev/protofetch/recipe.toml rename to recipes/wip/dev/other/protofetch/recipe.toml diff --git a/recipes/wip/dev/pxp/recipe.toml b/recipes/wip/dev/other/pxp/recipe.toml similarity index 100% rename from recipes/wip/dev/pxp/recipe.toml rename to recipes/wip/dev/other/pxp/recipe.toml diff --git a/recipes/wip/dev/qbe/recipe.toml b/recipes/wip/dev/other/qbe/recipe.toml similarity index 100% rename from recipes/wip/dev/qbe/recipe.toml rename to recipes/wip/dev/other/qbe/recipe.toml diff --git a/recipes/wip/dev/quicktest/recipe.toml b/recipes/wip/dev/other/quicktest/recipe.toml similarity index 100% rename from recipes/wip/dev/quicktest/recipe.toml rename to recipes/wip/dev/other/quicktest/recipe.toml diff --git a/recipes/wip/dev/radicle/recipe.toml b/recipes/wip/dev/other/radicle/recipe.toml similarity index 100% rename from recipes/wip/dev/radicle/recipe.toml rename to recipes/wip/dev/other/radicle/recipe.toml diff --git a/recipes/wip/dev/ragel/recipe.toml b/recipes/wip/dev/other/ragel/recipe.toml similarity index 100% rename from recipes/wip/dev/ragel/recipe.toml rename to recipes/wip/dev/other/ragel/recipe.toml diff --git a/recipes/wip/dev/rattler-build/recipe.toml b/recipes/wip/dev/other/rattler-build/recipe.toml similarity index 100% rename from recipes/wip/dev/rattler-build/recipe.toml rename to recipes/wip/dev/other/rattler-build/recipe.toml diff --git a/recipes/wip/dev/rbasefind/recipe.toml b/recipes/wip/dev/other/rbasefind/recipe.toml similarity index 100% rename from recipes/wip/dev/rbasefind/recipe.toml rename to recipes/wip/dev/other/rbasefind/recipe.toml diff --git a/recipes/wip/dev/redict/recipe.toml b/recipes/wip/dev/other/redict/recipe.toml similarity index 100% rename from recipes/wip/dev/redict/recipe.toml rename to recipes/wip/dev/other/redict/recipe.toml diff --git a/recipes/wip/dev/redis/recipe.toml b/recipes/wip/dev/other/redis/recipe.toml similarity index 100% rename from recipes/wip/dev/redis/recipe.toml rename to recipes/wip/dev/other/redis/recipe.toml diff --git a/recipes/wip/dev/release-plz/recipe.toml b/recipes/wip/dev/other/release-plz/recipe.toml similarity index 100% rename from recipes/wip/dev/release-plz/recipe.toml rename to recipes/wip/dev/other/release-plz/recipe.toml diff --git a/recipes/wip/dev/renderdoc/recipe.toml b/recipes/wip/dev/other/renderdoc/recipe.toml similarity index 100% rename from recipes/wip/dev/renderdoc/recipe.toml rename to recipes/wip/dev/other/renderdoc/recipe.toml diff --git a/recipes/wip/dev/resym/recipe.toml b/recipes/wip/dev/other/resym/recipe.toml similarity index 100% rename from recipes/wip/dev/resym/recipe.toml rename to recipes/wip/dev/other/resym/recipe.toml diff --git a/recipes/wip/dev/rgit/recipe.toml b/recipes/wip/dev/other/rgit/recipe.toml similarity index 100% rename from recipes/wip/dev/rgit/recipe.toml rename to recipes/wip/dev/other/rgit/recipe.toml diff --git a/recipes/wip/dev/rhack/recipe.toml b/recipes/wip/dev/other/rhack/recipe.toml similarity index 100% rename from recipes/wip/dev/rhack/recipe.toml rename to recipes/wip/dev/other/rhack/recipe.toml diff --git a/recipes/wip/dev/rudra/recipe.toml b/recipes/wip/dev/other/rudra/recipe.toml similarity index 100% rename from recipes/wip/dev/rudra/recipe.toml rename to recipes/wip/dev/other/rudra/recipe.toml diff --git a/recipes/wip/dev/rust-counter-strings/recipe.toml b/recipes/wip/dev/other/rust-counter-strings/recipe.toml similarity index 100% rename from recipes/wip/dev/rust-counter-strings/recipe.toml rename to recipes/wip/dev/other/rust-counter-strings/recipe.toml diff --git a/recipes/wip/dev/rusty-radamsa/recipe.toml b/recipes/wip/dev/other/rusty-radamsa/recipe.toml similarity index 100% rename from recipes/wip/dev/rusty-radamsa/recipe.toml rename to recipes/wip/dev/other/rusty-radamsa/recipe.toml diff --git a/recipes/wip/dev/samply/recipe.toml b/recipes/wip/dev/other/samply/recipe.toml similarity index 100% rename from recipes/wip/dev/samply/recipe.toml rename to recipes/wip/dev/other/samply/recipe.toml diff --git a/recipes/wip/dev/shaderc/recipe.toml b/recipes/wip/dev/other/shaderc/recipe.toml similarity index 100% rename from recipes/wip/dev/shaderc/recipe.toml rename to recipes/wip/dev/other/shaderc/recipe.toml diff --git a/recipes/wip/dev/souper/recipe.toml b/recipes/wip/dev/other/souper/recipe.toml similarity index 100% rename from recipes/wip/dev/souper/recipe.toml rename to recipes/wip/dev/other/souper/recipe.toml diff --git a/recipes/wip/dev/steel/recipe.toml b/recipes/wip/dev/other/steel/recipe.toml similarity index 100% rename from recipes/wip/dev/steel/recipe.toml rename to recipes/wip/dev/other/steel/recipe.toml diff --git a/recipes/wip/dev/stgit/recipe.toml b/recipes/wip/dev/other/stgit/recipe.toml similarity index 100% rename from recipes/wip/dev/stgit/recipe.toml rename to recipes/wip/dev/other/stgit/recipe.toml diff --git a/recipes/wip/dev/stitch/recipe.toml b/recipes/wip/dev/other/stitch/recipe.toml similarity index 100% rename from recipes/wip/dev/stitch/recipe.toml rename to recipes/wip/dev/other/stitch/recipe.toml diff --git a/recipes/wip/dev/svd2rust/recipe.toml b/recipes/wip/dev/other/svd2rust/recipe.toml similarity index 100% rename from recipes/wip/dev/svd2rust/recipe.toml rename to recipes/wip/dev/other/svd2rust/recipe.toml diff --git a/recipes/wip/dev/swig/recipe.toml b/recipes/wip/dev/other/swig/recipe.toml similarity index 100% rename from recipes/wip/dev/swig/recipe.toml rename to recipes/wip/dev/other/swig/recipe.toml diff --git a/recipes/wip/dev/tcl/recipe.toml b/recipes/wip/dev/other/tcl/recipe.toml similarity index 100% rename from recipes/wip/dev/tcl/recipe.toml rename to recipes/wip/dev/other/tcl/recipe.toml diff --git a/recipes/wip/dev/tk/recipe.toml b/recipes/wip/dev/other/tk/recipe.toml similarity index 100% rename from recipes/wip/dev/tk/recipe.toml rename to recipes/wip/dev/other/tk/recipe.toml diff --git a/recipes/wip/dev/tnn/recipe.toml b/recipes/wip/dev/other/tnn/recipe.toml similarity index 100% rename from recipes/wip/dev/tnn/recipe.toml rename to recipes/wip/dev/other/tnn/recipe.toml diff --git a/recipes/wip/dev/tokio-console/recipe.toml b/recipes/wip/dev/other/tokio-console/recipe.toml similarity index 100% rename from recipes/wip/dev/tokio-console/recipe.toml rename to recipes/wip/dev/other/tokio-console/recipe.toml diff --git a/recipes/wip/dev/tracy/recipe.toml b/recipes/wip/dev/other/tracy/recipe.toml similarity index 100% rename from recipes/wip/dev/tracy/recipe.toml rename to recipes/wip/dev/other/tracy/recipe.toml diff --git a/recipes/wip/dev/trunk/recipe.toml b/recipes/wip/dev/other/trunk/recipe.toml similarity index 100% rename from recipes/wip/dev/trunk/recipe.toml rename to recipes/wip/dev/other/trunk/recipe.toml diff --git a/recipes/wip/dev/tv/recipe.toml b/recipes/wip/dev/other/tv/recipe.toml similarity index 100% rename from recipes/wip/dev/tv/recipe.toml rename to recipes/wip/dev/other/tv/recipe.toml diff --git a/recipes/wip/dev/twiggy/recipe.toml b/recipes/wip/dev/other/twiggy/recipe.toml similarity index 100% rename from recipes/wip/dev/twiggy/recipe.toml rename to recipes/wip/dev/other/twiggy/recipe.toml diff --git a/recipes/wip/dev/ucd-generate/recipe.toml b/recipes/wip/dev/other/ucd-generate/recipe.toml similarity index 100% rename from recipes/wip/dev/ucd-generate/recipe.toml rename to recipes/wip/dev/other/ucd-generate/recipe.toml diff --git a/recipes/wip/dev/valgrind/recipe.toml b/recipes/wip/dev/other/valgrind/recipe.toml similarity index 100% rename from recipes/wip/dev/valgrind/recipe.toml rename to recipes/wip/dev/other/valgrind/recipe.toml diff --git a/recipes/wip/dev/valkey/recipe.toml b/recipes/wip/dev/other/valkey/recipe.toml similarity index 100% rename from recipes/wip/dev/valkey/recipe.toml rename to recipes/wip/dev/other/valkey/recipe.toml diff --git a/recipes/wip/dev/verrou/recipe.toml b/recipes/wip/dev/other/verrou/recipe.toml similarity index 100% rename from recipes/wip/dev/verrou/recipe.toml rename to recipes/wip/dev/other/verrou/recipe.toml diff --git a/recipes/wip/dev/vkpeak/recipe.toml b/recipes/wip/dev/other/vkpeak/recipe.toml similarity index 100% rename from recipes/wip/dev/vkpeak/recipe.toml rename to recipes/wip/dev/other/vkpeak/recipe.toml diff --git a/recipes/wip/dev/zeal/recipe.toml b/recipes/wip/dev/other/zeal/recipe.toml similarity index 100% rename from recipes/wip/dev/zeal/recipe.toml rename to recipes/wip/dev/other/zeal/recipe.toml diff --git a/recipes/wip/dev/zepter/recipe.toml b/recipes/wip/dev/other/zepter/recipe.toml similarity index 100% rename from recipes/wip/dev/zepter/recipe.toml rename to recipes/wip/dev/other/zepter/recipe.toml diff --git a/recipes/wip/dev/zola/recipe.toml b/recipes/wip/dev/other/zola/recipe.toml similarity index 100% rename from recipes/wip/dev/zola/recipe.toml rename to recipes/wip/dev/other/zola/recipe.toml diff --git a/recipes/wip/tools/other/aim/recipe.toml b/recipes/wip/tools/net/aim/recipe.toml similarity index 100% rename from recipes/wip/tools/other/aim/recipe.toml rename to recipes/wip/tools/net/aim/recipe.toml diff --git a/recipes/wip/tools/other/alacritty/recipe.toml b/recipes/wip/tools/terminal/alacritty/recipe.toml similarity index 100% rename from recipes/wip/tools/other/alacritty/recipe.toml rename to recipes/wip/tools/terminal/alacritty/recipe.toml diff --git a/recipes/wip/tools/other/rioterm/recipe.toml b/recipes/wip/tools/terminal/rioterm/recipe.toml similarity index 100% rename from recipes/wip/tools/other/rioterm/recipe.toml rename to recipes/wip/tools/terminal/rioterm/recipe.toml diff --git a/recipes/wip/tools/other/wezterm/recipe.toml b/recipes/wip/tools/terminal/wezterm/recipe.toml similarity index 100% rename from recipes/wip/tools/other/wezterm/recipe.toml rename to recipes/wip/tools/terminal/wezterm/recipe.toml diff --git a/recipes/wip/tools/other/zellij/recipe.toml b/recipes/wip/tools/terminal/zellij/recipe.toml similarity index 100% rename from recipes/wip/tools/other/zellij/recipe.toml rename to recipes/wip/tools/terminal/zellij/recipe.toml diff --git a/recipes/wip/tools/other/v86/recipe.toml b/recipes/wip/vm/v86/recipe.toml similarity index 100% rename from recipes/wip/tools/other/v86/recipe.toml rename to recipes/wip/vm/v86/recipe.toml From ee9bbf8e970de5965cc65fcad74cea75ce101c7f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 26 Jun 2024 05:05:28 +0000 Subject: [PATCH 1948/3180] Move recipes --- recipes/wip/{tools/net => services}/ntpd-rs/recipe.toml | 0 recipes/wip/tools/{ => ai}/nnx/recipe.toml | 0 recipes/wip/tools/net/{ => bittorrent}/attractorr/recipe.toml | 0 recipes/wip/tools/net/{ => bittorrent}/synapse-bt/recipe.toml | 0 recipes/wip/tools/net/{ => bittorrent}/transmission/recipe.toml | 0 recipes/wip/tools/net/{ => chat}/telegram-desktop/recipe.toml | 0 recipes/wip/tools/net/{ => chat}/termchat/recipe.toml | 0 recipes/wip/tools/net/{ => download}/aim/recipe.toml | 0 recipes/wip/tools/net/{ => download}/anime-downloader/recipe.toml | 0 recipes/wip/tools/net/{ => download}/wget/recipe.toml | 0 recipes/wip/tools/net/{ => download}/wget2/recipe.toml | 0 recipes/wip/tools/net/{ => download}/yaydl/recipe.toml | 0 recipes/wip/tools/{other => net/download}/youtube-tui/recipe.toml | 0 recipes/wip/tools/net/{ => gemini}/lagrange/recipe.toml | 0 recipes/wip/tools/net/{ => lan}/zerotier/recipe.toml | 0 recipes/wip/tools/net/{ => onion-routing}/arti/recipe.toml | 0 recipes/wip/tools/net/{ => onion-routing}/i2pd/recipe.toml | 0 recipes/wip/tools/net/{ => onion-routing}/lokinet/recipe.toml | 0 recipes/wip/tools/net/{ => onion-routing}/tor-browser/recipe.toml | 0 recipes/wip/tools/net/{ => onion-routing}/tor/recipe.toml | 0 recipes/wip/tools/net/{ => other}/arp-scanner/recipe.toml | 0 recipes/wip/tools/net/{ => other}/bita/recipe.toml | 0 recipes/wip/tools/net/{ => other}/bore/recipe.toml | 0 recipes/wip/tools/net/{ => other}/boringtun/recipe.toml | 0 recipes/wip/tools/net/{ => other}/celeste/recipe.toml | 0 recipes/wip/tools/net/{ => other}/cobalt/recipe.toml | 0 recipes/wip/tools/net/{ => other}/crab-dlna/recipe.toml | 0 recipes/wip/tools/net/{ => other}/dqy/recipe.toml | 0 recipes/wip/tools/net/{ => other}/drill/recipe.toml | 0 recipes/wip/tools/net/{ => other}/dufs/recipe.toml | 0 recipes/wip/tools/net/{ => other}/floresta/recipe.toml | 0 recipes/wip/tools/net/{ => other}/guacamole-client/recipe.toml | 0 recipes/wip/tools/net/{ => other}/halloy/recipe.toml | 0 recipes/wip/tools/net/{ => other}/havn/recipe.toml | 0 recipes/wip/tools/net/{ => other}/hinoki/recipe.toml | 0 recipes/wip/tools/net/{ => other}/hurl/recipe.toml | 0 recipes/wip/tools/net/{ => other}/impala/recipe.toml | 0 recipes/wip/tools/net/{ => other}/lldap/recipe.toml | 0 recipes/wip/tools/net/{ => other}/lychee/recipe.toml | 0 recipes/wip/tools/net/{ => other}/lynx/recipe.toml | 0 recipes/wip/tools/net/{ => other}/meli/recipe.toml | 0 recipes/wip/tools/net/{ => other}/miniupnpc/recipe.toml | 0 recipes/wip/tools/net/{ => other}/moonfire-nvr-server/recipe.toml | 0 recipes/wip/tools/net/{ => other}/netop/recipe.toml | 0 recipes/wip/tools/net/{ => other}/netscanner/recipe.toml | 0 recipes/wip/tools/net/{ => other}/nmap/recipe.toml | 0 recipes/wip/tools/net/{ => other}/nspr/recipe.toml | 0 recipes/wip/tools/net/{ => other}/nss-pem/recipe.toml | 0 recipes/wip/tools/net/{ => other}/nss/recipe.toml | 0 recipes/wip/tools/net/{ => other}/oha/recipe.toml | 0 recipes/wip/tools/net/{ => other}/realm/recipe.toml | 0 recipes/wip/tools/net/{ => other}/rqbit/recipe.toml | 0 recipes/wip/tools/net/{ => other}/rustscan/recipe.toml | 0 recipes/wip/tools/net/{ => other}/samba/answers.txt | 0 recipes/wip/tools/net/{ => other}/samba/recipe.toml | 0 recipes/wip/tools/net/{ => other}/slumber/recipe.toml | 0 recipes/wip/tools/net/{ => other}/speedtest-rs/recipe.toml | 0 recipes/wip/tools/net/{ => other}/spis/recipe.toml | 0 recipes/wip/tools/net/{ => other}/srsran-4g/recipe.toml | 0 recipes/wip/tools/net/{ => other}/srsran-project/recipe.toml | 0 recipes/wip/tools/{other => net/other/ssh}/sshx/recipe.toml | 0 recipes/wip/tools/net/{ => other}/tiny/recipe.toml | 0 recipes/wip/tools/net/{ => other}/tobaru/recipe.toml | 0 recipes/wip/tools/net/{ => other}/trippy/recipe.toml | 0 recipes/wip/tools/net/{ => other}/turn-rs/recipe.toml | 0 recipes/wip/tools/net/{ => other}/unbound/recipe.toml | 0 recipes/wip/tools/net/{ => other}/updns/recipe.toml | 0 recipes/wip/tools/net/{ => other}/varia/recipe.toml | 0 recipes/wip/tools/net/{ => other}/vimini/recipe.toml | 0 recipes/wip/tools/net/{ => other}/vopono/recipe.toml | 0 recipes/wip/tools/net/{ => other}/vpncloud/recipe.toml | 0 recipes/wip/tools/net/{ => other}/vsd/recipe.toml | 0 recipes/wip/tools/net/{ => other}/warp/recipe.toml | 0 recipes/wip/tools/net/{ => other}/wireguard-rs/recipe.toml | 0 recipes/wip/tools/net/{ => other}/yazi/recipe.toml | 0 recipes/wip/tools/net/{ => server}/apache-httpd/recipe.toml | 0 recipes/wip/tools/net/{ => server}/apache-httpd/redox.patch | 0 recipes/wip/tools/net/{ => server}/bitcoin-core/recipe.toml | 0 recipes/wip/tools/net/{ => server}/devserver/recipe.toml | 0 recipes/wip/tools/net/{ => server}/electrs/recipe.toml | 0 recipes/wip/tools/net/{ => server}/freenginx/recipe.toml | 0 recipes/wip/tools/net/{ => server}/guacamole-server/recipe.toml | 0 recipes/wip/tools/net/{ => server}/http-server-rs/recipe.toml | 0 recipes/wip/tools/net/{ => server}/nginx/recipe.toml | 0 recipes/wip/tools/net/{ => server}/nostr-rs-relay/recipe.toml | 0 recipes/wip/tools/net/{ => server}/rustdesk-server/recipe.toml | 0 recipes/wip/tools/net/{ => server}/rustypaste/recipe.toml | 0 recipes/wip/tools/net/{ => server}/simple-http-server/recipe.toml | 0 recipes/wip/tools/{other => net/server}/sws/recipe.toml | 0 89 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{tools/net => services}/ntpd-rs/recipe.toml (100%) rename recipes/wip/tools/{ => ai}/nnx/recipe.toml (100%) rename recipes/wip/tools/net/{ => bittorrent}/attractorr/recipe.toml (100%) rename recipes/wip/tools/net/{ => bittorrent}/synapse-bt/recipe.toml (100%) rename recipes/wip/tools/net/{ => bittorrent}/transmission/recipe.toml (100%) rename recipes/wip/tools/net/{ => chat}/telegram-desktop/recipe.toml (100%) rename recipes/wip/tools/net/{ => chat}/termchat/recipe.toml (100%) rename recipes/wip/tools/net/{ => download}/aim/recipe.toml (100%) rename recipes/wip/tools/net/{ => download}/anime-downloader/recipe.toml (100%) rename recipes/wip/tools/net/{ => download}/wget/recipe.toml (100%) rename recipes/wip/tools/net/{ => download}/wget2/recipe.toml (100%) rename recipes/wip/tools/net/{ => download}/yaydl/recipe.toml (100%) rename recipes/wip/tools/{other => net/download}/youtube-tui/recipe.toml (100%) rename recipes/wip/tools/net/{ => gemini}/lagrange/recipe.toml (100%) rename recipes/wip/tools/net/{ => lan}/zerotier/recipe.toml (100%) rename recipes/wip/tools/net/{ => onion-routing}/arti/recipe.toml (100%) rename recipes/wip/tools/net/{ => onion-routing}/i2pd/recipe.toml (100%) rename recipes/wip/tools/net/{ => onion-routing}/lokinet/recipe.toml (100%) rename recipes/wip/tools/net/{ => onion-routing}/tor-browser/recipe.toml (100%) rename recipes/wip/tools/net/{ => onion-routing}/tor/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/arp-scanner/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/bita/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/bore/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/boringtun/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/celeste/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/cobalt/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/crab-dlna/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/dqy/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/drill/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/dufs/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/floresta/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/guacamole-client/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/halloy/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/havn/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/hinoki/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/hurl/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/impala/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/lldap/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/lychee/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/lynx/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/meli/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/miniupnpc/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/moonfire-nvr-server/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/netop/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/netscanner/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/nmap/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/nspr/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/nss-pem/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/nss/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/oha/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/realm/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/rqbit/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/rustscan/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/samba/answers.txt (100%) rename recipes/wip/tools/net/{ => other}/samba/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/slumber/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/speedtest-rs/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/spis/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/srsran-4g/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/srsran-project/recipe.toml (100%) rename recipes/wip/tools/{other => net/other/ssh}/sshx/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/tiny/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/tobaru/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/trippy/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/turn-rs/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/unbound/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/updns/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/varia/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/vimini/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/vopono/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/vpncloud/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/vsd/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/warp/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/wireguard-rs/recipe.toml (100%) rename recipes/wip/tools/net/{ => other}/yazi/recipe.toml (100%) rename recipes/wip/tools/net/{ => server}/apache-httpd/recipe.toml (100%) rename recipes/wip/tools/net/{ => server}/apache-httpd/redox.patch (100%) rename recipes/wip/tools/net/{ => server}/bitcoin-core/recipe.toml (100%) rename recipes/wip/tools/net/{ => server}/devserver/recipe.toml (100%) rename recipes/wip/tools/net/{ => server}/electrs/recipe.toml (100%) rename recipes/wip/tools/net/{ => server}/freenginx/recipe.toml (100%) rename recipes/wip/tools/net/{ => server}/guacamole-server/recipe.toml (100%) rename recipes/wip/tools/net/{ => server}/http-server-rs/recipe.toml (100%) rename recipes/wip/tools/net/{ => server}/nginx/recipe.toml (100%) rename recipes/wip/tools/net/{ => server}/nostr-rs-relay/recipe.toml (100%) rename recipes/wip/tools/net/{ => server}/rustdesk-server/recipe.toml (100%) rename recipes/wip/tools/net/{ => server}/rustypaste/recipe.toml (100%) rename recipes/wip/tools/net/{ => server}/simple-http-server/recipe.toml (100%) rename recipes/wip/tools/{other => net/server}/sws/recipe.toml (100%) diff --git a/recipes/wip/tools/net/ntpd-rs/recipe.toml b/recipes/wip/services/ntpd-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/net/ntpd-rs/recipe.toml rename to recipes/wip/services/ntpd-rs/recipe.toml diff --git a/recipes/wip/tools/nnx/recipe.toml b/recipes/wip/tools/ai/nnx/recipe.toml similarity index 100% rename from recipes/wip/tools/nnx/recipe.toml rename to recipes/wip/tools/ai/nnx/recipe.toml diff --git a/recipes/wip/tools/net/attractorr/recipe.toml b/recipes/wip/tools/net/bittorrent/attractorr/recipe.toml similarity index 100% rename from recipes/wip/tools/net/attractorr/recipe.toml rename to recipes/wip/tools/net/bittorrent/attractorr/recipe.toml diff --git a/recipes/wip/tools/net/synapse-bt/recipe.toml b/recipes/wip/tools/net/bittorrent/synapse-bt/recipe.toml similarity index 100% rename from recipes/wip/tools/net/synapse-bt/recipe.toml rename to recipes/wip/tools/net/bittorrent/synapse-bt/recipe.toml diff --git a/recipes/wip/tools/net/transmission/recipe.toml b/recipes/wip/tools/net/bittorrent/transmission/recipe.toml similarity index 100% rename from recipes/wip/tools/net/transmission/recipe.toml rename to recipes/wip/tools/net/bittorrent/transmission/recipe.toml diff --git a/recipes/wip/tools/net/telegram-desktop/recipe.toml b/recipes/wip/tools/net/chat/telegram-desktop/recipe.toml similarity index 100% rename from recipes/wip/tools/net/telegram-desktop/recipe.toml rename to recipes/wip/tools/net/chat/telegram-desktop/recipe.toml diff --git a/recipes/wip/tools/net/termchat/recipe.toml b/recipes/wip/tools/net/chat/termchat/recipe.toml similarity index 100% rename from recipes/wip/tools/net/termchat/recipe.toml rename to recipes/wip/tools/net/chat/termchat/recipe.toml diff --git a/recipes/wip/tools/net/aim/recipe.toml b/recipes/wip/tools/net/download/aim/recipe.toml similarity index 100% rename from recipes/wip/tools/net/aim/recipe.toml rename to recipes/wip/tools/net/download/aim/recipe.toml diff --git a/recipes/wip/tools/net/anime-downloader/recipe.toml b/recipes/wip/tools/net/download/anime-downloader/recipe.toml similarity index 100% rename from recipes/wip/tools/net/anime-downloader/recipe.toml rename to recipes/wip/tools/net/download/anime-downloader/recipe.toml diff --git a/recipes/wip/tools/net/wget/recipe.toml b/recipes/wip/tools/net/download/wget/recipe.toml similarity index 100% rename from recipes/wip/tools/net/wget/recipe.toml rename to recipes/wip/tools/net/download/wget/recipe.toml diff --git a/recipes/wip/tools/net/wget2/recipe.toml b/recipes/wip/tools/net/download/wget2/recipe.toml similarity index 100% rename from recipes/wip/tools/net/wget2/recipe.toml rename to recipes/wip/tools/net/download/wget2/recipe.toml diff --git a/recipes/wip/tools/net/yaydl/recipe.toml b/recipes/wip/tools/net/download/yaydl/recipe.toml similarity index 100% rename from recipes/wip/tools/net/yaydl/recipe.toml rename to recipes/wip/tools/net/download/yaydl/recipe.toml diff --git a/recipes/wip/tools/other/youtube-tui/recipe.toml b/recipes/wip/tools/net/download/youtube-tui/recipe.toml similarity index 100% rename from recipes/wip/tools/other/youtube-tui/recipe.toml rename to recipes/wip/tools/net/download/youtube-tui/recipe.toml diff --git a/recipes/wip/tools/net/lagrange/recipe.toml b/recipes/wip/tools/net/gemini/lagrange/recipe.toml similarity index 100% rename from recipes/wip/tools/net/lagrange/recipe.toml rename to recipes/wip/tools/net/gemini/lagrange/recipe.toml diff --git a/recipes/wip/tools/net/zerotier/recipe.toml b/recipes/wip/tools/net/lan/zerotier/recipe.toml similarity index 100% rename from recipes/wip/tools/net/zerotier/recipe.toml rename to recipes/wip/tools/net/lan/zerotier/recipe.toml diff --git a/recipes/wip/tools/net/arti/recipe.toml b/recipes/wip/tools/net/onion-routing/arti/recipe.toml similarity index 100% rename from recipes/wip/tools/net/arti/recipe.toml rename to recipes/wip/tools/net/onion-routing/arti/recipe.toml diff --git a/recipes/wip/tools/net/i2pd/recipe.toml b/recipes/wip/tools/net/onion-routing/i2pd/recipe.toml similarity index 100% rename from recipes/wip/tools/net/i2pd/recipe.toml rename to recipes/wip/tools/net/onion-routing/i2pd/recipe.toml diff --git a/recipes/wip/tools/net/lokinet/recipe.toml b/recipes/wip/tools/net/onion-routing/lokinet/recipe.toml similarity index 100% rename from recipes/wip/tools/net/lokinet/recipe.toml rename to recipes/wip/tools/net/onion-routing/lokinet/recipe.toml diff --git a/recipes/wip/tools/net/tor-browser/recipe.toml b/recipes/wip/tools/net/onion-routing/tor-browser/recipe.toml similarity index 100% rename from recipes/wip/tools/net/tor-browser/recipe.toml rename to recipes/wip/tools/net/onion-routing/tor-browser/recipe.toml diff --git a/recipes/wip/tools/net/tor/recipe.toml b/recipes/wip/tools/net/onion-routing/tor/recipe.toml similarity index 100% rename from recipes/wip/tools/net/tor/recipe.toml rename to recipes/wip/tools/net/onion-routing/tor/recipe.toml diff --git a/recipes/wip/tools/net/arp-scanner/recipe.toml b/recipes/wip/tools/net/other/arp-scanner/recipe.toml similarity index 100% rename from recipes/wip/tools/net/arp-scanner/recipe.toml rename to recipes/wip/tools/net/other/arp-scanner/recipe.toml diff --git a/recipes/wip/tools/net/bita/recipe.toml b/recipes/wip/tools/net/other/bita/recipe.toml similarity index 100% rename from recipes/wip/tools/net/bita/recipe.toml rename to recipes/wip/tools/net/other/bita/recipe.toml diff --git a/recipes/wip/tools/net/bore/recipe.toml b/recipes/wip/tools/net/other/bore/recipe.toml similarity index 100% rename from recipes/wip/tools/net/bore/recipe.toml rename to recipes/wip/tools/net/other/bore/recipe.toml diff --git a/recipes/wip/tools/net/boringtun/recipe.toml b/recipes/wip/tools/net/other/boringtun/recipe.toml similarity index 100% rename from recipes/wip/tools/net/boringtun/recipe.toml rename to recipes/wip/tools/net/other/boringtun/recipe.toml diff --git a/recipes/wip/tools/net/celeste/recipe.toml b/recipes/wip/tools/net/other/celeste/recipe.toml similarity index 100% rename from recipes/wip/tools/net/celeste/recipe.toml rename to recipes/wip/tools/net/other/celeste/recipe.toml diff --git a/recipes/wip/tools/net/cobalt/recipe.toml b/recipes/wip/tools/net/other/cobalt/recipe.toml similarity index 100% rename from recipes/wip/tools/net/cobalt/recipe.toml rename to recipes/wip/tools/net/other/cobalt/recipe.toml diff --git a/recipes/wip/tools/net/crab-dlna/recipe.toml b/recipes/wip/tools/net/other/crab-dlna/recipe.toml similarity index 100% rename from recipes/wip/tools/net/crab-dlna/recipe.toml rename to recipes/wip/tools/net/other/crab-dlna/recipe.toml diff --git a/recipes/wip/tools/net/dqy/recipe.toml b/recipes/wip/tools/net/other/dqy/recipe.toml similarity index 100% rename from recipes/wip/tools/net/dqy/recipe.toml rename to recipes/wip/tools/net/other/dqy/recipe.toml diff --git a/recipes/wip/tools/net/drill/recipe.toml b/recipes/wip/tools/net/other/drill/recipe.toml similarity index 100% rename from recipes/wip/tools/net/drill/recipe.toml rename to recipes/wip/tools/net/other/drill/recipe.toml diff --git a/recipes/wip/tools/net/dufs/recipe.toml b/recipes/wip/tools/net/other/dufs/recipe.toml similarity index 100% rename from recipes/wip/tools/net/dufs/recipe.toml rename to recipes/wip/tools/net/other/dufs/recipe.toml diff --git a/recipes/wip/tools/net/floresta/recipe.toml b/recipes/wip/tools/net/other/floresta/recipe.toml similarity index 100% rename from recipes/wip/tools/net/floresta/recipe.toml rename to recipes/wip/tools/net/other/floresta/recipe.toml diff --git a/recipes/wip/tools/net/guacamole-client/recipe.toml b/recipes/wip/tools/net/other/guacamole-client/recipe.toml similarity index 100% rename from recipes/wip/tools/net/guacamole-client/recipe.toml rename to recipes/wip/tools/net/other/guacamole-client/recipe.toml diff --git a/recipes/wip/tools/net/halloy/recipe.toml b/recipes/wip/tools/net/other/halloy/recipe.toml similarity index 100% rename from recipes/wip/tools/net/halloy/recipe.toml rename to recipes/wip/tools/net/other/halloy/recipe.toml diff --git a/recipes/wip/tools/net/havn/recipe.toml b/recipes/wip/tools/net/other/havn/recipe.toml similarity index 100% rename from recipes/wip/tools/net/havn/recipe.toml rename to recipes/wip/tools/net/other/havn/recipe.toml diff --git a/recipes/wip/tools/net/hinoki/recipe.toml b/recipes/wip/tools/net/other/hinoki/recipe.toml similarity index 100% rename from recipes/wip/tools/net/hinoki/recipe.toml rename to recipes/wip/tools/net/other/hinoki/recipe.toml diff --git a/recipes/wip/tools/net/hurl/recipe.toml b/recipes/wip/tools/net/other/hurl/recipe.toml similarity index 100% rename from recipes/wip/tools/net/hurl/recipe.toml rename to recipes/wip/tools/net/other/hurl/recipe.toml diff --git a/recipes/wip/tools/net/impala/recipe.toml b/recipes/wip/tools/net/other/impala/recipe.toml similarity index 100% rename from recipes/wip/tools/net/impala/recipe.toml rename to recipes/wip/tools/net/other/impala/recipe.toml diff --git a/recipes/wip/tools/net/lldap/recipe.toml b/recipes/wip/tools/net/other/lldap/recipe.toml similarity index 100% rename from recipes/wip/tools/net/lldap/recipe.toml rename to recipes/wip/tools/net/other/lldap/recipe.toml diff --git a/recipes/wip/tools/net/lychee/recipe.toml b/recipes/wip/tools/net/other/lychee/recipe.toml similarity index 100% rename from recipes/wip/tools/net/lychee/recipe.toml rename to recipes/wip/tools/net/other/lychee/recipe.toml diff --git a/recipes/wip/tools/net/lynx/recipe.toml b/recipes/wip/tools/net/other/lynx/recipe.toml similarity index 100% rename from recipes/wip/tools/net/lynx/recipe.toml rename to recipes/wip/tools/net/other/lynx/recipe.toml diff --git a/recipes/wip/tools/net/meli/recipe.toml b/recipes/wip/tools/net/other/meli/recipe.toml similarity index 100% rename from recipes/wip/tools/net/meli/recipe.toml rename to recipes/wip/tools/net/other/meli/recipe.toml diff --git a/recipes/wip/tools/net/miniupnpc/recipe.toml b/recipes/wip/tools/net/other/miniupnpc/recipe.toml similarity index 100% rename from recipes/wip/tools/net/miniupnpc/recipe.toml rename to recipes/wip/tools/net/other/miniupnpc/recipe.toml diff --git a/recipes/wip/tools/net/moonfire-nvr-server/recipe.toml b/recipes/wip/tools/net/other/moonfire-nvr-server/recipe.toml similarity index 100% rename from recipes/wip/tools/net/moonfire-nvr-server/recipe.toml rename to recipes/wip/tools/net/other/moonfire-nvr-server/recipe.toml diff --git a/recipes/wip/tools/net/netop/recipe.toml b/recipes/wip/tools/net/other/netop/recipe.toml similarity index 100% rename from recipes/wip/tools/net/netop/recipe.toml rename to recipes/wip/tools/net/other/netop/recipe.toml diff --git a/recipes/wip/tools/net/netscanner/recipe.toml b/recipes/wip/tools/net/other/netscanner/recipe.toml similarity index 100% rename from recipes/wip/tools/net/netscanner/recipe.toml rename to recipes/wip/tools/net/other/netscanner/recipe.toml diff --git a/recipes/wip/tools/net/nmap/recipe.toml b/recipes/wip/tools/net/other/nmap/recipe.toml similarity index 100% rename from recipes/wip/tools/net/nmap/recipe.toml rename to recipes/wip/tools/net/other/nmap/recipe.toml diff --git a/recipes/wip/tools/net/nspr/recipe.toml b/recipes/wip/tools/net/other/nspr/recipe.toml similarity index 100% rename from recipes/wip/tools/net/nspr/recipe.toml rename to recipes/wip/tools/net/other/nspr/recipe.toml diff --git a/recipes/wip/tools/net/nss-pem/recipe.toml b/recipes/wip/tools/net/other/nss-pem/recipe.toml similarity index 100% rename from recipes/wip/tools/net/nss-pem/recipe.toml rename to recipes/wip/tools/net/other/nss-pem/recipe.toml diff --git a/recipes/wip/tools/net/nss/recipe.toml b/recipes/wip/tools/net/other/nss/recipe.toml similarity index 100% rename from recipes/wip/tools/net/nss/recipe.toml rename to recipes/wip/tools/net/other/nss/recipe.toml diff --git a/recipes/wip/tools/net/oha/recipe.toml b/recipes/wip/tools/net/other/oha/recipe.toml similarity index 100% rename from recipes/wip/tools/net/oha/recipe.toml rename to recipes/wip/tools/net/other/oha/recipe.toml diff --git a/recipes/wip/tools/net/realm/recipe.toml b/recipes/wip/tools/net/other/realm/recipe.toml similarity index 100% rename from recipes/wip/tools/net/realm/recipe.toml rename to recipes/wip/tools/net/other/realm/recipe.toml diff --git a/recipes/wip/tools/net/rqbit/recipe.toml b/recipes/wip/tools/net/other/rqbit/recipe.toml similarity index 100% rename from recipes/wip/tools/net/rqbit/recipe.toml rename to recipes/wip/tools/net/other/rqbit/recipe.toml diff --git a/recipes/wip/tools/net/rustscan/recipe.toml b/recipes/wip/tools/net/other/rustscan/recipe.toml similarity index 100% rename from recipes/wip/tools/net/rustscan/recipe.toml rename to recipes/wip/tools/net/other/rustscan/recipe.toml diff --git a/recipes/wip/tools/net/samba/answers.txt b/recipes/wip/tools/net/other/samba/answers.txt similarity index 100% rename from recipes/wip/tools/net/samba/answers.txt rename to recipes/wip/tools/net/other/samba/answers.txt diff --git a/recipes/wip/tools/net/samba/recipe.toml b/recipes/wip/tools/net/other/samba/recipe.toml similarity index 100% rename from recipes/wip/tools/net/samba/recipe.toml rename to recipes/wip/tools/net/other/samba/recipe.toml diff --git a/recipes/wip/tools/net/slumber/recipe.toml b/recipes/wip/tools/net/other/slumber/recipe.toml similarity index 100% rename from recipes/wip/tools/net/slumber/recipe.toml rename to recipes/wip/tools/net/other/slumber/recipe.toml diff --git a/recipes/wip/tools/net/speedtest-rs/recipe.toml b/recipes/wip/tools/net/other/speedtest-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/net/speedtest-rs/recipe.toml rename to recipes/wip/tools/net/other/speedtest-rs/recipe.toml diff --git a/recipes/wip/tools/net/spis/recipe.toml b/recipes/wip/tools/net/other/spis/recipe.toml similarity index 100% rename from recipes/wip/tools/net/spis/recipe.toml rename to recipes/wip/tools/net/other/spis/recipe.toml diff --git a/recipes/wip/tools/net/srsran-4g/recipe.toml b/recipes/wip/tools/net/other/srsran-4g/recipe.toml similarity index 100% rename from recipes/wip/tools/net/srsran-4g/recipe.toml rename to recipes/wip/tools/net/other/srsran-4g/recipe.toml diff --git a/recipes/wip/tools/net/srsran-project/recipe.toml b/recipes/wip/tools/net/other/srsran-project/recipe.toml similarity index 100% rename from recipes/wip/tools/net/srsran-project/recipe.toml rename to recipes/wip/tools/net/other/srsran-project/recipe.toml diff --git a/recipes/wip/tools/other/sshx/recipe.toml b/recipes/wip/tools/net/other/ssh/sshx/recipe.toml similarity index 100% rename from recipes/wip/tools/other/sshx/recipe.toml rename to recipes/wip/tools/net/other/ssh/sshx/recipe.toml diff --git a/recipes/wip/tools/net/tiny/recipe.toml b/recipes/wip/tools/net/other/tiny/recipe.toml similarity index 100% rename from recipes/wip/tools/net/tiny/recipe.toml rename to recipes/wip/tools/net/other/tiny/recipe.toml diff --git a/recipes/wip/tools/net/tobaru/recipe.toml b/recipes/wip/tools/net/other/tobaru/recipe.toml similarity index 100% rename from recipes/wip/tools/net/tobaru/recipe.toml rename to recipes/wip/tools/net/other/tobaru/recipe.toml diff --git a/recipes/wip/tools/net/trippy/recipe.toml b/recipes/wip/tools/net/other/trippy/recipe.toml similarity index 100% rename from recipes/wip/tools/net/trippy/recipe.toml rename to recipes/wip/tools/net/other/trippy/recipe.toml diff --git a/recipes/wip/tools/net/turn-rs/recipe.toml b/recipes/wip/tools/net/other/turn-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/net/turn-rs/recipe.toml rename to recipes/wip/tools/net/other/turn-rs/recipe.toml diff --git a/recipes/wip/tools/net/unbound/recipe.toml b/recipes/wip/tools/net/other/unbound/recipe.toml similarity index 100% rename from recipes/wip/tools/net/unbound/recipe.toml rename to recipes/wip/tools/net/other/unbound/recipe.toml diff --git a/recipes/wip/tools/net/updns/recipe.toml b/recipes/wip/tools/net/other/updns/recipe.toml similarity index 100% rename from recipes/wip/tools/net/updns/recipe.toml rename to recipes/wip/tools/net/other/updns/recipe.toml diff --git a/recipes/wip/tools/net/varia/recipe.toml b/recipes/wip/tools/net/other/varia/recipe.toml similarity index 100% rename from recipes/wip/tools/net/varia/recipe.toml rename to recipes/wip/tools/net/other/varia/recipe.toml diff --git a/recipes/wip/tools/net/vimini/recipe.toml b/recipes/wip/tools/net/other/vimini/recipe.toml similarity index 100% rename from recipes/wip/tools/net/vimini/recipe.toml rename to recipes/wip/tools/net/other/vimini/recipe.toml diff --git a/recipes/wip/tools/net/vopono/recipe.toml b/recipes/wip/tools/net/other/vopono/recipe.toml similarity index 100% rename from recipes/wip/tools/net/vopono/recipe.toml rename to recipes/wip/tools/net/other/vopono/recipe.toml diff --git a/recipes/wip/tools/net/vpncloud/recipe.toml b/recipes/wip/tools/net/other/vpncloud/recipe.toml similarity index 100% rename from recipes/wip/tools/net/vpncloud/recipe.toml rename to recipes/wip/tools/net/other/vpncloud/recipe.toml diff --git a/recipes/wip/tools/net/vsd/recipe.toml b/recipes/wip/tools/net/other/vsd/recipe.toml similarity index 100% rename from recipes/wip/tools/net/vsd/recipe.toml rename to recipes/wip/tools/net/other/vsd/recipe.toml diff --git a/recipes/wip/tools/net/warp/recipe.toml b/recipes/wip/tools/net/other/warp/recipe.toml similarity index 100% rename from recipes/wip/tools/net/warp/recipe.toml rename to recipes/wip/tools/net/other/warp/recipe.toml diff --git a/recipes/wip/tools/net/wireguard-rs/recipe.toml b/recipes/wip/tools/net/other/wireguard-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/net/wireguard-rs/recipe.toml rename to recipes/wip/tools/net/other/wireguard-rs/recipe.toml diff --git a/recipes/wip/tools/net/yazi/recipe.toml b/recipes/wip/tools/net/other/yazi/recipe.toml similarity index 100% rename from recipes/wip/tools/net/yazi/recipe.toml rename to recipes/wip/tools/net/other/yazi/recipe.toml diff --git a/recipes/wip/tools/net/apache-httpd/recipe.toml b/recipes/wip/tools/net/server/apache-httpd/recipe.toml similarity index 100% rename from recipes/wip/tools/net/apache-httpd/recipe.toml rename to recipes/wip/tools/net/server/apache-httpd/recipe.toml diff --git a/recipes/wip/tools/net/apache-httpd/redox.patch b/recipes/wip/tools/net/server/apache-httpd/redox.patch similarity index 100% rename from recipes/wip/tools/net/apache-httpd/redox.patch rename to recipes/wip/tools/net/server/apache-httpd/redox.patch diff --git a/recipes/wip/tools/net/bitcoin-core/recipe.toml b/recipes/wip/tools/net/server/bitcoin-core/recipe.toml similarity index 100% rename from recipes/wip/tools/net/bitcoin-core/recipe.toml rename to recipes/wip/tools/net/server/bitcoin-core/recipe.toml diff --git a/recipes/wip/tools/net/devserver/recipe.toml b/recipes/wip/tools/net/server/devserver/recipe.toml similarity index 100% rename from recipes/wip/tools/net/devserver/recipe.toml rename to recipes/wip/tools/net/server/devserver/recipe.toml diff --git a/recipes/wip/tools/net/electrs/recipe.toml b/recipes/wip/tools/net/server/electrs/recipe.toml similarity index 100% rename from recipes/wip/tools/net/electrs/recipe.toml rename to recipes/wip/tools/net/server/electrs/recipe.toml diff --git a/recipes/wip/tools/net/freenginx/recipe.toml b/recipes/wip/tools/net/server/freenginx/recipe.toml similarity index 100% rename from recipes/wip/tools/net/freenginx/recipe.toml rename to recipes/wip/tools/net/server/freenginx/recipe.toml diff --git a/recipes/wip/tools/net/guacamole-server/recipe.toml b/recipes/wip/tools/net/server/guacamole-server/recipe.toml similarity index 100% rename from recipes/wip/tools/net/guacamole-server/recipe.toml rename to recipes/wip/tools/net/server/guacamole-server/recipe.toml diff --git a/recipes/wip/tools/net/http-server-rs/recipe.toml b/recipes/wip/tools/net/server/http-server-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/net/http-server-rs/recipe.toml rename to recipes/wip/tools/net/server/http-server-rs/recipe.toml diff --git a/recipes/wip/tools/net/nginx/recipe.toml b/recipes/wip/tools/net/server/nginx/recipe.toml similarity index 100% rename from recipes/wip/tools/net/nginx/recipe.toml rename to recipes/wip/tools/net/server/nginx/recipe.toml diff --git a/recipes/wip/tools/net/nostr-rs-relay/recipe.toml b/recipes/wip/tools/net/server/nostr-rs-relay/recipe.toml similarity index 100% rename from recipes/wip/tools/net/nostr-rs-relay/recipe.toml rename to recipes/wip/tools/net/server/nostr-rs-relay/recipe.toml diff --git a/recipes/wip/tools/net/rustdesk-server/recipe.toml b/recipes/wip/tools/net/server/rustdesk-server/recipe.toml similarity index 100% rename from recipes/wip/tools/net/rustdesk-server/recipe.toml rename to recipes/wip/tools/net/server/rustdesk-server/recipe.toml diff --git a/recipes/wip/tools/net/rustypaste/recipe.toml b/recipes/wip/tools/net/server/rustypaste/recipe.toml similarity index 100% rename from recipes/wip/tools/net/rustypaste/recipe.toml rename to recipes/wip/tools/net/server/rustypaste/recipe.toml diff --git a/recipes/wip/tools/net/simple-http-server/recipe.toml b/recipes/wip/tools/net/server/simple-http-server/recipe.toml similarity index 100% rename from recipes/wip/tools/net/simple-http-server/recipe.toml rename to recipes/wip/tools/net/server/simple-http-server/recipe.toml diff --git a/recipes/wip/tools/other/sws/recipe.toml b/recipes/wip/tools/net/server/sws/recipe.toml similarity index 100% rename from recipes/wip/tools/other/sws/recipe.toml rename to recipes/wip/tools/net/server/sws/recipe.toml From 7b78e8e0b1b6c9ec3d3fce11f0e49ae9b763d84e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 26 Jun 2024 06:15:44 +0000 Subject: [PATCH 1949/3180] Move recipes --- .../wip/{tools/video => video/editors}/anime-effects/recipe.toml | 0 recipes/wip/{tools/video => video/editors}/kdenlive/recipe.toml | 0 recipes/wip/{tools/video => video/editors}/pitivi/recipe.toml | 0 recipes/wip/{tools/video => video/other}/alass/recipe.toml | 0 recipes/wip/{tools/video => video/other}/av1an/recipe.toml | 0 recipes/wip/{tools/video => video/other}/avp/recipe.toml | 0 .../{tools/video => video/other}/detect-scene-change/recipe.toml | 0 recipes/wip/{tools/video => video/other}/dovi-tool/recipe.toml | 0 .../wip/{tools/video => video/other}/gopro-assembler/recipe.toml | 0 recipes/wip/{tools/video => video/other}/gyroflow/recipe.toml | 0 recipes/wip/{tools/video => video/other}/imdb-rename/recipe.toml | 0 recipes/wip/{tools/video => video/other}/jerry/recipe.toml | 0 recipes/wip/{tools/video => video/other}/lecturecut/recipe.toml | 0 recipes/wip/{tools/video => video/other}/lobster/recipe.toml | 0 recipes/wip/{tools/video => video/other}/pipeline/recipe.toml | 0 recipes/wip/{tools/video => video/other}/smoothie-rs/recipe.toml | 0 recipes/wip/{tools/video => video/other}/snapshot/recipe.toml | 0 recipes/wip/{tools/video => video/other}/streamlib/recipe.toml | 0 recipes/wip/{tools/video => video/other}/sub-batch/recipe.toml | 0 recipes/wip/{tools/video => video/other}/teres/recipe.toml | 0 recipes/wip/{tools/video => video/other}/timelens/recipe.toml | 0 recipes/wip/{tools/video => video/other}/trimmeroni/recipe.toml | 0 recipes/wip/{tools/video => video/other}/vapoursynth/recipe.toml | 0 .../wip/{tools/video => video/other}/video4discord/recipe.toml | 0 recipes/wip/{tools/video => video/other}/vidmerger/recipe.toml | 0 recipes/wip/{tools/video => video/other}/yt-chanvids/recipe.toml | 0 recipes/wip/{tools/video => video/players}/glide/recipe.toml | 0 recipes/wip/{tools/video => video/players}/mpv/recipe.toml | 0 recipes/wip/{tools/video => video/players}/tplay/recipe.toml | 0 recipes/wip/{tools/video => video/webcam}/cheese/recipe.toml | 0 30 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{tools/video => video/editors}/anime-effects/recipe.toml (100%) rename recipes/wip/{tools/video => video/editors}/kdenlive/recipe.toml (100%) rename recipes/wip/{tools/video => video/editors}/pitivi/recipe.toml (100%) rename recipes/wip/{tools/video => video/other}/alass/recipe.toml (100%) rename recipes/wip/{tools/video => video/other}/av1an/recipe.toml (100%) rename recipes/wip/{tools/video => video/other}/avp/recipe.toml (100%) rename recipes/wip/{tools/video => video/other}/detect-scene-change/recipe.toml (100%) rename recipes/wip/{tools/video => video/other}/dovi-tool/recipe.toml (100%) rename recipes/wip/{tools/video => video/other}/gopro-assembler/recipe.toml (100%) rename recipes/wip/{tools/video => video/other}/gyroflow/recipe.toml (100%) rename recipes/wip/{tools/video => video/other}/imdb-rename/recipe.toml (100%) rename recipes/wip/{tools/video => video/other}/jerry/recipe.toml (100%) rename recipes/wip/{tools/video => video/other}/lecturecut/recipe.toml (100%) rename recipes/wip/{tools/video => video/other}/lobster/recipe.toml (100%) rename recipes/wip/{tools/video => video/other}/pipeline/recipe.toml (100%) rename recipes/wip/{tools/video => video/other}/smoothie-rs/recipe.toml (100%) rename recipes/wip/{tools/video => video/other}/snapshot/recipe.toml (100%) rename recipes/wip/{tools/video => video/other}/streamlib/recipe.toml (100%) rename recipes/wip/{tools/video => video/other}/sub-batch/recipe.toml (100%) rename recipes/wip/{tools/video => video/other}/teres/recipe.toml (100%) rename recipes/wip/{tools/video => video/other}/timelens/recipe.toml (100%) rename recipes/wip/{tools/video => video/other}/trimmeroni/recipe.toml (100%) rename recipes/wip/{tools/video => video/other}/vapoursynth/recipe.toml (100%) rename recipes/wip/{tools/video => video/other}/video4discord/recipe.toml (100%) rename recipes/wip/{tools/video => video/other}/vidmerger/recipe.toml (100%) rename recipes/wip/{tools/video => video/other}/yt-chanvids/recipe.toml (100%) rename recipes/wip/{tools/video => video/players}/glide/recipe.toml (100%) rename recipes/wip/{tools/video => video/players}/mpv/recipe.toml (100%) rename recipes/wip/{tools/video => video/players}/tplay/recipe.toml (100%) rename recipes/wip/{tools/video => video/webcam}/cheese/recipe.toml (100%) diff --git a/recipes/wip/tools/video/anime-effects/recipe.toml b/recipes/wip/video/editors/anime-effects/recipe.toml similarity index 100% rename from recipes/wip/tools/video/anime-effects/recipe.toml rename to recipes/wip/video/editors/anime-effects/recipe.toml diff --git a/recipes/wip/tools/video/kdenlive/recipe.toml b/recipes/wip/video/editors/kdenlive/recipe.toml similarity index 100% rename from recipes/wip/tools/video/kdenlive/recipe.toml rename to recipes/wip/video/editors/kdenlive/recipe.toml diff --git a/recipes/wip/tools/video/pitivi/recipe.toml b/recipes/wip/video/editors/pitivi/recipe.toml similarity index 100% rename from recipes/wip/tools/video/pitivi/recipe.toml rename to recipes/wip/video/editors/pitivi/recipe.toml diff --git a/recipes/wip/tools/video/alass/recipe.toml b/recipes/wip/video/other/alass/recipe.toml similarity index 100% rename from recipes/wip/tools/video/alass/recipe.toml rename to recipes/wip/video/other/alass/recipe.toml diff --git a/recipes/wip/tools/video/av1an/recipe.toml b/recipes/wip/video/other/av1an/recipe.toml similarity index 100% rename from recipes/wip/tools/video/av1an/recipe.toml rename to recipes/wip/video/other/av1an/recipe.toml diff --git a/recipes/wip/tools/video/avp/recipe.toml b/recipes/wip/video/other/avp/recipe.toml similarity index 100% rename from recipes/wip/tools/video/avp/recipe.toml rename to recipes/wip/video/other/avp/recipe.toml diff --git a/recipes/wip/tools/video/detect-scene-change/recipe.toml b/recipes/wip/video/other/detect-scene-change/recipe.toml similarity index 100% rename from recipes/wip/tools/video/detect-scene-change/recipe.toml rename to recipes/wip/video/other/detect-scene-change/recipe.toml diff --git a/recipes/wip/tools/video/dovi-tool/recipe.toml b/recipes/wip/video/other/dovi-tool/recipe.toml similarity index 100% rename from recipes/wip/tools/video/dovi-tool/recipe.toml rename to recipes/wip/video/other/dovi-tool/recipe.toml diff --git a/recipes/wip/tools/video/gopro-assembler/recipe.toml b/recipes/wip/video/other/gopro-assembler/recipe.toml similarity index 100% rename from recipes/wip/tools/video/gopro-assembler/recipe.toml rename to recipes/wip/video/other/gopro-assembler/recipe.toml diff --git a/recipes/wip/tools/video/gyroflow/recipe.toml b/recipes/wip/video/other/gyroflow/recipe.toml similarity index 100% rename from recipes/wip/tools/video/gyroflow/recipe.toml rename to recipes/wip/video/other/gyroflow/recipe.toml diff --git a/recipes/wip/tools/video/imdb-rename/recipe.toml b/recipes/wip/video/other/imdb-rename/recipe.toml similarity index 100% rename from recipes/wip/tools/video/imdb-rename/recipe.toml rename to recipes/wip/video/other/imdb-rename/recipe.toml diff --git a/recipes/wip/tools/video/jerry/recipe.toml b/recipes/wip/video/other/jerry/recipe.toml similarity index 100% rename from recipes/wip/tools/video/jerry/recipe.toml rename to recipes/wip/video/other/jerry/recipe.toml diff --git a/recipes/wip/tools/video/lecturecut/recipe.toml b/recipes/wip/video/other/lecturecut/recipe.toml similarity index 100% rename from recipes/wip/tools/video/lecturecut/recipe.toml rename to recipes/wip/video/other/lecturecut/recipe.toml diff --git a/recipes/wip/tools/video/lobster/recipe.toml b/recipes/wip/video/other/lobster/recipe.toml similarity index 100% rename from recipes/wip/tools/video/lobster/recipe.toml rename to recipes/wip/video/other/lobster/recipe.toml diff --git a/recipes/wip/tools/video/pipeline/recipe.toml b/recipes/wip/video/other/pipeline/recipe.toml similarity index 100% rename from recipes/wip/tools/video/pipeline/recipe.toml rename to recipes/wip/video/other/pipeline/recipe.toml diff --git a/recipes/wip/tools/video/smoothie-rs/recipe.toml b/recipes/wip/video/other/smoothie-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/video/smoothie-rs/recipe.toml rename to recipes/wip/video/other/smoothie-rs/recipe.toml diff --git a/recipes/wip/tools/video/snapshot/recipe.toml b/recipes/wip/video/other/snapshot/recipe.toml similarity index 100% rename from recipes/wip/tools/video/snapshot/recipe.toml rename to recipes/wip/video/other/snapshot/recipe.toml diff --git a/recipes/wip/tools/video/streamlib/recipe.toml b/recipes/wip/video/other/streamlib/recipe.toml similarity index 100% rename from recipes/wip/tools/video/streamlib/recipe.toml rename to recipes/wip/video/other/streamlib/recipe.toml diff --git a/recipes/wip/tools/video/sub-batch/recipe.toml b/recipes/wip/video/other/sub-batch/recipe.toml similarity index 100% rename from recipes/wip/tools/video/sub-batch/recipe.toml rename to recipes/wip/video/other/sub-batch/recipe.toml diff --git a/recipes/wip/tools/video/teres/recipe.toml b/recipes/wip/video/other/teres/recipe.toml similarity index 100% rename from recipes/wip/tools/video/teres/recipe.toml rename to recipes/wip/video/other/teres/recipe.toml diff --git a/recipes/wip/tools/video/timelens/recipe.toml b/recipes/wip/video/other/timelens/recipe.toml similarity index 100% rename from recipes/wip/tools/video/timelens/recipe.toml rename to recipes/wip/video/other/timelens/recipe.toml diff --git a/recipes/wip/tools/video/trimmeroni/recipe.toml b/recipes/wip/video/other/trimmeroni/recipe.toml similarity index 100% rename from recipes/wip/tools/video/trimmeroni/recipe.toml rename to recipes/wip/video/other/trimmeroni/recipe.toml diff --git a/recipes/wip/tools/video/vapoursynth/recipe.toml b/recipes/wip/video/other/vapoursynth/recipe.toml similarity index 100% rename from recipes/wip/tools/video/vapoursynth/recipe.toml rename to recipes/wip/video/other/vapoursynth/recipe.toml diff --git a/recipes/wip/tools/video/video4discord/recipe.toml b/recipes/wip/video/other/video4discord/recipe.toml similarity index 100% rename from recipes/wip/tools/video/video4discord/recipe.toml rename to recipes/wip/video/other/video4discord/recipe.toml diff --git a/recipes/wip/tools/video/vidmerger/recipe.toml b/recipes/wip/video/other/vidmerger/recipe.toml similarity index 100% rename from recipes/wip/tools/video/vidmerger/recipe.toml rename to recipes/wip/video/other/vidmerger/recipe.toml diff --git a/recipes/wip/tools/video/yt-chanvids/recipe.toml b/recipes/wip/video/other/yt-chanvids/recipe.toml similarity index 100% rename from recipes/wip/tools/video/yt-chanvids/recipe.toml rename to recipes/wip/video/other/yt-chanvids/recipe.toml diff --git a/recipes/wip/tools/video/glide/recipe.toml b/recipes/wip/video/players/glide/recipe.toml similarity index 100% rename from recipes/wip/tools/video/glide/recipe.toml rename to recipes/wip/video/players/glide/recipe.toml diff --git a/recipes/wip/tools/video/mpv/recipe.toml b/recipes/wip/video/players/mpv/recipe.toml similarity index 100% rename from recipes/wip/tools/video/mpv/recipe.toml rename to recipes/wip/video/players/mpv/recipe.toml diff --git a/recipes/wip/tools/video/tplay/recipe.toml b/recipes/wip/video/players/tplay/recipe.toml similarity index 100% rename from recipes/wip/tools/video/tplay/recipe.toml rename to recipes/wip/video/players/tplay/recipe.toml diff --git a/recipes/wip/tools/video/cheese/recipe.toml b/recipes/wip/video/webcam/cheese/recipe.toml similarity index 100% rename from recipes/wip/tools/video/cheese/recipe.toml rename to recipes/wip/video/webcam/cheese/recipe.toml From 3e088e409500d9153760505789b73a52baf12bf1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 27 Jun 2024 01:11:49 +0000 Subject: [PATCH 1950/3180] Improve the README --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d4b06acb..9248abb3 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ from the [redox](https://gitlab.redox-os.org/redox-os/redox) repository. [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) - [Recipe Categories](#recipe-categories) +- [Search Recipes](#search-recipes) - [Package Policy](#package-policy) - [Cross-Compilation](#cross-compilation) - [Library Linking](#library-linking) @@ -34,9 +35,10 @@ The categories inside the `recipes` folder. - `dev` - Programs used for development and programming languages, like compilers and dependency managers - `doc` - Programs used for documentation - `emulators` - Console emulators or compatibility layers +- `fonts` - Fonts and programs for fonts - `games` - Any kind of game - `graphics` - Programs used for graphics processing or production -- `gui` - Graphical interfaces +- `gui` - Orbital - `icons` - Icon packs - `libs` - Software with functions for other softwares, like OpenSSL - `math` - Programs used for calculations @@ -51,6 +53,10 @@ The categories inside the `recipes` folder. - `web` - World Wide Web browsers and tools - `wip` - Software that needs porting or incomplete recipes +### Search Recipes + +Click in the button named "Find file" on the top of this repository to search for recipe names. + ### Package Policy Before sending your recipe to upstream (to become a public package), you must follow these rules: From a230cc604b87be55572fb6e4d30f23218a5e3076 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 30 Jun 2024 05:17:51 +0000 Subject: [PATCH 1951/3180] Move a recipe --- recipes/wip/{gui => dev/other}/eww/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{gui => dev/other}/eww/recipe.toml (100%) diff --git a/recipes/wip/gui/eww/recipe.toml b/recipes/wip/dev/other/eww/recipe.toml similarity index 100% rename from recipes/wip/gui/eww/recipe.toml rename to recipes/wip/dev/other/eww/recipe.toml From 835c535afb342b5e0c7444adef073a2d22b4548d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 30 Jun 2024 06:05:49 +0000 Subject: [PATCH 1952/3180] Add recipes --- .../libs/audio/libopenshot-audio/recipe.toml | 7 +++++++ .../libs/video/libopenshot-video/recipe.toml | 19 +++++++++++++++++++ .../wip/video/editors/openshot/recipe.toml | 11 +++++++++++ 3 files changed, 37 insertions(+) create mode 100644 recipes/wip/libs/audio/libopenshot-audio/recipe.toml create mode 100644 recipes/wip/libs/video/libopenshot-video/recipe.toml create mode 100644 recipes/wip/video/editors/openshot/recipe.toml diff --git a/recipes/wip/libs/audio/libopenshot-audio/recipe.toml b/recipes/wip/libs/audio/libopenshot-audio/recipe.toml new file mode 100644 index 00000000..8c822178 --- /dev/null +++ b/recipes/wip/libs/audio/libopenshot-audio/recipe.toml @@ -0,0 +1,7 @@ +#TODO missing script for CMake +#TODO determine dependencies +[source] +git = "https://github.com/OpenShot/libopenshot-audio" +rev = "98f08a6d4a90f3644b6c2c68efb2cbd86c75d87a" +[build] +template = "custom" diff --git a/recipes/wip/libs/video/libopenshot-video/recipe.toml b/recipes/wip/libs/video/libopenshot-video/recipe.toml new file mode 100644 index 00000000..a16d4222 --- /dev/null +++ b/recipes/wip/libs/video/libopenshot-video/recipe.toml @@ -0,0 +1,19 @@ +#TODO missing script for CMake +#TODO determine dependencies - https://github.com/OpenShot/libopenshot/wiki/Linux-Build-Instructions +[source] +git = "https://github.com/OpenShot/libopenshot" +rev = "3170768e0ccbaad5b2a4696e84dd649738ec1a1b" +[build] +template = "custom" +dependencies = [ + "libopenshot-audio", + "ffmpeg6", + "qt5-base", + "qt5-svg", + "qt5-multimedia", + "libzmq", + "opencv4", + "protobuf", + "babl", + "imagemagick", +] diff --git a/recipes/wip/video/editors/openshot/recipe.toml b/recipes/wip/video/editors/openshot/recipe.toml new file mode 100644 index 00000000..63a9def4 --- /dev/null +++ b/recipes/wip/video/editors/openshot/recipe.toml @@ -0,0 +1,11 @@ +#TODO require a custom script to move the final openshot folder to /usr/share +#TODO create a program shortcut to the src/launch.py file, see https://github.com/OpenShot/openshot-qt#launch +[source] +git = "https://github.com/OpenShot/openshot-qt" +rev = "47e8755c71390ba862cfcfdfe9ae109f31718867" +[build] +template = "custom" +dependencies = [ + "libopenshot-video", + "libopenshot-audio", +] From e04f426d12f1fe37ae00d1679ff04afbd6057874 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 30 Jun 2024 06:37:27 +0000 Subject: [PATCH 1953/3180] Add recipes --- recipes/wip/demos/iced-7guis/recipe.toml | 5 +++++ recipes/wip/demos/slint/recipe.toml | 10 ++++++++++ recipes/wip/sound/chiptrack/recipe.toml | 5 +++++ recipes/wip/tools/math/fractal-explorer/recipe.toml | 5 +++++ recipes/wip/tools/time/dispute/recipe.toml | 5 +++++ recipes/wip/tools/time/tomotroid/recipe.toml | 5 +++++ 6 files changed, 35 insertions(+) create mode 100644 recipes/wip/demos/iced-7guis/recipe.toml create mode 100644 recipes/wip/demos/slint/recipe.toml create mode 100644 recipes/wip/sound/chiptrack/recipe.toml create mode 100644 recipes/wip/tools/math/fractal-explorer/recipe.toml create mode 100644 recipes/wip/tools/time/dispute/recipe.toml create mode 100644 recipes/wip/tools/time/tomotroid/recipe.toml diff --git a/recipes/wip/demos/iced-7guis/recipe.toml b/recipes/wip/demos/iced-7guis/recipe.toml new file mode 100644 index 00000000..10cb81c8 --- /dev/null +++ b/recipes/wip/demos/iced-7guis/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/dcampbell24/iced_7guis" +[build] +template = "cargo" diff --git a/recipes/wip/demos/slint/recipe.toml b/recipes/wip/demos/slint/recipe.toml new file mode 100644 index 00000000..da6c68e5 --- /dev/null +++ b/recipes/wip/demos/slint/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/slint-ui/slint" +[build] +template = "custom" +script = """ +cookbook_cargo_examples gallery energy-monitor carousel \ +memory imagefilter plotter opengl_underlay opengl_texture \ +ffmpeg maps virtual_keyboard 7guis +""" diff --git a/recipes/wip/sound/chiptrack/recipe.toml b/recipes/wip/sound/chiptrack/recipe.toml new file mode 100644 index 00000000..1504ce6a --- /dev/null +++ b/recipes/wip/sound/chiptrack/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/jturcotte/chiptrack" +[build] +template = "cargo" diff --git a/recipes/wip/tools/math/fractal-explorer/recipe.toml b/recipes/wip/tools/math/fractal-explorer/recipe.toml new file mode 100644 index 00000000..7ea0cbfb --- /dev/null +++ b/recipes/wip/tools/math/fractal-explorer/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/boclair/fractal-explorer" +[build] +template = "cargo" diff --git a/recipes/wip/tools/time/dispute/recipe.toml b/recipes/wip/tools/time/dispute/recipe.toml new file mode 100644 index 00000000..4a7fc699 --- /dev/null +++ b/recipes/wip/tools/time/dispute/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Vinegret43/dispute" +[build] +template = "cargo" diff --git a/recipes/wip/tools/time/tomotroid/recipe.toml b/recipes/wip/tools/time/tomotroid/recipe.toml new file mode 100644 index 00000000..bab4883b --- /dev/null +++ b/recipes/wip/tools/time/tomotroid/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/vadoola/Tomotroid" +[build] +template = "cargo" From 00d4dd4cb2a45f32f5cb55f2370545cfb100a20b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 30 Jun 2024 06:52:50 +0000 Subject: [PATCH 1954/3180] Add recipes --- recipes/wip/games/other/slint-tetris/recipe.toml | 5 +++++ recipes/wip/gui/gpcl/recipe.toml | 5 +++++ recipes/wip/gui/ordinary/recipe.toml | 8 ++++++++ recipes/wip/tools/graphics/other/image-sieve/recipe.toml | 5 +++++ 4 files changed, 23 insertions(+) create mode 100644 recipes/wip/games/other/slint-tetris/recipe.toml create mode 100644 recipes/wip/gui/gpcl/recipe.toml create mode 100644 recipes/wip/gui/ordinary/recipe.toml create mode 100644 recipes/wip/tools/graphics/other/image-sieve/recipe.toml diff --git a/recipes/wip/games/other/slint-tetris/recipe.toml b/recipes/wip/games/other/slint-tetris/recipe.toml new file mode 100644 index 00000000..e000450e --- /dev/null +++ b/recipes/wip/games/other/slint-tetris/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/GaspardCulis/slint-tetris" +[build] +template = "cargo" diff --git a/recipes/wip/gui/gpcl/recipe.toml b/recipes/wip/gui/gpcl/recipe.toml new file mode 100644 index 00000000..9663b2b5 --- /dev/null +++ b/recipes/wip/gui/gpcl/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/dngulin/gpcl" +[build] +template = "cargo" diff --git a/recipes/wip/gui/ordinary/recipe.toml b/recipes/wip/gui/ordinary/recipe.toml new file mode 100644 index 00000000..ffc25fc6 --- /dev/null +++ b/recipes/wip/gui/ordinary/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://gitlab.com/floers/ordinary" +[build] +template = "custom" +script = """ +cookbook_cargo_packages ordinary +""" diff --git a/recipes/wip/tools/graphics/other/image-sieve/recipe.toml b/recipes/wip/tools/graphics/other/image-sieve/recipe.toml new file mode 100644 index 00000000..4d40be30 --- /dev/null +++ b/recipes/wip/tools/graphics/other/image-sieve/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Futsch1/image-sieve" +[build] +template = "cargo" From 6684f8de87d6fe38654f98b3e2ed477f0720f1cc Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 30 Jun 2024 08:02:02 +0000 Subject: [PATCH 1955/3180] Add the CMake script on many recipes --- recipes/wip/codecs/svt-hevc/recipe.toml | 17 ++++++++++++++++- recipes/wip/codecs/svt-vp9/recipe.toml | 17 ++++++++++++++++- recipes/wip/codecs/uvg266/recipe.toml | 17 ++++++++++++++++- recipes/wip/codecs/vvenc/recipe.toml | 17 ++++++++++++++++- recipes/wip/codecs/x265/recipe.toml | 17 ++++++++++++++++- recipes/wip/db/clickhouse/recipe.toml | 17 ++++++++++++++++- recipes/wip/db/mysql-server/recipe.toml | 15 ++++++++++++++- recipes/wip/dev/lang/pony-lang/recipe.toml | 17 ++++++++++++++++- recipes/wip/dev/lang/vale-lang/recipe.toml | 17 ++++++++++++++++- recipes/wip/dev/other/apitrace/recipe.toml | 17 ++++++++++++++++- recipes/wip/dev/other/cling/recipe.toml | 17 ++++++++++++++++- recipes/wip/dev/other/doxygen/recipe.toml | 17 ++++++++++++++++- recipes/wip/dev/other/kicad/recipe.toml | 17 ++++++++++++++++- recipes/wip/dev/other/level-zero/recipe.toml | 17 ++++++++++++++++- recipes/wip/dev/other/mnn/recipe.toml | 17 ++++++++++++++++- recipes/wip/dev/other/ncnn/recipe.toml | 17 ++++++++++++++++- recipes/wip/dev/other/netradiant/recipe.toml | 17 ++++++++++++++++- recipes/wip/dev/other/opencascade/recipe.toml | 17 ++++++++++++++++- recipes/wip/dev/other/protobuf/recipe.toml | 17 ++++++++++++++++- recipes/wip/dev/other/vkpeak/recipe.toml | 17 ++++++++++++++++- 20 files changed, 318 insertions(+), 20 deletions(-) diff --git a/recipes/wip/codecs/svt-hevc/recipe.toml b/recipes/wip/codecs/svt-hevc/recipe.toml index b52fae9e..160c0199 100644 --- a/recipes/wip/codecs/svt-hevc/recipe.toml +++ b/recipes/wip/codecs/svt-hevc/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://github.com/OpenVisualCloud/SVT-HEVC#linux-operating-systems-64-bit +#TODO maybe incomplete script, see https://github.com/OpenVisualCloud/SVT-HEVC#linux-operating-systems-64-bit [source] git = "https://github.com/OpenVisualCloud/SVT-HEVC" rev = "b65eba07e6dee37407631cc441561960838b0333" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/codecs/svt-vp9/recipe.toml b/recipes/wip/codecs/svt-vp9/recipe.toml index 134c8113..52a4a4d4 100644 --- a/recipes/wip/codecs/svt-vp9/recipe.toml +++ b/recipes/wip/codecs/svt-vp9/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, see https://github.com/OpenVisualCloud/SVT-VP9#linux-operating-systems-64-bit +#TODO maybe incomplete script, see https://github.com/OpenVisualCloud/SVT-VP9#linux-operating-systems-64-bit [source] git = "https://github.com/OpenVisualCloud/SVT-VP9" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/codecs/uvg266/recipe.toml b/recipes/wip/codecs/uvg266/recipe.toml index 052bdece..2dc7576f 100644 --- a/recipes/wip/codecs/uvg266/recipe.toml +++ b/recipes/wip/codecs/uvg266/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://github.com/ultravideo/uvg266#compiling-uvg266 +#TODO maybe incomplete script, see https://github.com/ultravideo/uvg266#compiling-uvg266 [source] git = "https://github.com/ultravideo/uvg266" rev = "9add13b7053a6ba3f6b22bf82728e01fc437a447" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/codecs/vvenc/recipe.toml b/recipes/wip/codecs/vvenc/recipe.toml index faa98972..a039c28b 100644 --- a/recipes/wip/codecs/vvenc/recipe.toml +++ b/recipes/wip/codecs/vvenc/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://github.com/fraunhoferhhi/vvenc/wiki/Build#build-using-plain-cmake +#TODO maybe incomplete script, see https://github.com/fraunhoferhhi/vvenc/wiki/Build#build-using-plain-cmake [source] git = "https://github.com/fraunhoferhhi/vvenc" rev = "eea6fce28c8e822a0ece7a343a10fd5d6dd0e7bb" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/codecs/x265/recipe.toml b/recipes/wip/codecs/x265/recipe.toml index c1bd95b0..0637eb95 100644 --- a/recipes/wip/codecs/x265/recipe.toml +++ b/recipes/wip/codecs/x265/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, see https://bitbucket.org/multicoreware/x265_git/src/master/build/README.txt#lines-68 +#TODO maybe incomplete script, see https://bitbucket.org/multicoreware/x265_git/src/master/build/README.txt#lines-68 [source] tar = "https://bitbucket.org/multicoreware/x265_git/downloads/x265_3.5.tar.gz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/db/clickhouse/recipe.toml b/recipes/wip/db/clickhouse/recipe.toml index 4e785986..e975c8d3 100644 --- a/recipes/wip/db/clickhouse/recipe.toml +++ b/recipes/wip/db/clickhouse/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for Cmake, see https://clickhouse.com/docs/en/development/build#how-to-build-clickhouse-on-any-linux +#TODO maybe incomplete script, see https://clickhouse.com/docs/en/development/build#how-to-build-clickhouse-on-any-linux #TODO probably disable some submodules to use our recipes [source] tar = "https://github.com/ClickHouse/ClickHouse" @@ -9,3 +9,18 @@ dependencies = [ "openssl1", "xz", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/db/mysql-server/recipe.toml b/recipes/wip/db/mysql-server/recipe.toml index 02c84e73..45b5d00a 100644 --- a/recipes/wip/db/mysql-server/recipe.toml +++ b/recipes/wip/db/mysql-server/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://dev.mysql.com/doc/refman/8.2/en/installing-source-distribution.html +#TODO maybe incomplete script, see https://dev.mysql.com/doc/refman/8.2/en/installing-source-distribution.html [source] tar = "https://dev.mysql.com/downloads/file/?id=523432" [build] @@ -10,4 +10,17 @@ dependencies = [ ] script = """ export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure """ diff --git a/recipes/wip/dev/lang/pony-lang/recipe.toml b/recipes/wip/dev/lang/pony-lang/recipe.toml index 29da4aa4..157d5963 100644 --- a/recipes/wip/dev/lang/pony-lang/recipe.toml +++ b/recipes/wip/dev/lang/pony-lang/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://github.com/ponylang/ponyc/blob/main/BUILD.md +#TODO maybe incomplete script, see https://github.com/ponylang/ponyc/blob/main/BUILD.md [source] git = "https://github.com/ponylang/ponyc" rev = "a161b7c97666f820bbacbb328d95dc820f353edd" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/dev/lang/vale-lang/recipe.toml b/recipes/wip/dev/lang/vale-lang/recipe.toml index 02355873..313c08fe 100644 --- a/recipes/wip/dev/lang/vale-lang/recipe.toml +++ b/recipes/wip/dev/lang/vale-lang/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, see https://github.com/ValeLang/Vale/blob/master/build-compiler.md +#TODO maybe incomplete script, see https://github.com/ValeLang/Vale/blob/master/build-compiler.md [source] git = "https://github.com/ValeLang/Vale" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/dev/other/apitrace/recipe.toml b/recipes/wip/dev/other/apitrace/recipe.toml index ab5fb810..3bd0f6fd 100644 --- a/recipes/wip/dev/other/apitrace/recipe.toml +++ b/recipes/wip/dev/other/apitrace/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://github.com/apitrace/apitrace/blob/master/docs/INSTALL.markdown#linux +#TODO maybe incomplete script, see https://github.com/apitrace/apitrace/blob/master/docs/INSTALL.markdown#linux [source] git = "https://github.com/apitrace/apitrace" rev = "9352fc02bba106fbbeef9e8452ef34643c0d0764" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/dev/other/cling/recipe.toml b/recipes/wip/dev/other/cling/recipe.toml index 483e3d2b..d4830298 100644 --- a/recipes/wip/dev/other/cling/recipe.toml +++ b/recipes/wip/dev/other/cling/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://github.com/vgvassilev/cling#building-from-source +#TODO maybe incomplete script, see https://github.com/vgvassilev/cling#building-from-source [source] git = "https://github.com/vgvassilev/cling" rev = "ab81cdcc61f26dfd6a31fb141f1f4b335f6922be" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/dev/other/doxygen/recipe.toml b/recipes/wip/dev/other/doxygen/recipe.toml index 8ca03722..7351a226 100644 --- a/recipes/wip/dev/other/doxygen/recipe.toml +++ b/recipes/wip/dev/other/doxygen/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, see https://www.doxygen.nl/manual/install.html#install_src_unix +#TODO maybe incomplete script, see https://www.doxygen.nl/manual/install.html#install_src_unix [source] tar = "https://www.doxygen.nl/files/doxygen-1.9.8.src.tar.gz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/dev/other/kicad/recipe.toml b/recipes/wip/dev/other/kicad/recipe.toml index e06a2bdc..5428e894 100644 --- a/recipes/wip/dev/other/kicad/recipe.toml +++ b/recipes/wip/dev/other/kicad/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://dev-docs.kicad.org/en/build/linux/ +#TODO maybe incomplete script, see https://dev-docs.kicad.org/en/build/linux/ #TODO maybe missing dependencies, see https://dev-docs.kicad.org/en/build/getting-started/ [source] git = "https://gitlab.com/kicad/code/kicad" @@ -16,3 +16,18 @@ dependencies = [ "curl", "ngspice", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/dev/other/level-zero/recipe.toml b/recipes/wip/dev/other/level-zero/recipe.toml index e0064491..97e7249c 100644 --- a/recipes/wip/dev/other/level-zero/recipe.toml +++ b/recipes/wip/dev/other/level-zero/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://github.com/oneapi-src/level-zero#building-and-installing +#TODO maybe incomplete script, see https://github.com/oneapi-src/level-zero#building-and-installing [source] git = "https://github.com/oneapi-src/level-zero" rev = "ea5be99d8d34480447ab1e3c7efc30d6f179b123" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/dev/other/mnn/recipe.toml b/recipes/wip/dev/other/mnn/recipe.toml index e23260da..13d91009 100644 --- a/recipes/wip/dev/other/mnn/recipe.toml +++ b/recipes/wip/dev/other/mnn/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, lacking English build instructions +#TODO maybe incomplete script, lacking English build instructions [source] git = "https://github.com/alibaba/MNN" rev = "1ea55f467fb231655cf1e08f77d4a0f1043c4c29" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/dev/other/ncnn/recipe.toml b/recipes/wip/dev/other/ncnn/recipe.toml index ecf378d0..0a473e1f 100644 --- a/recipes/wip/dev/other/ncnn/recipe.toml +++ b/recipes/wip/dev/other/ncnn/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/Tencent/ncnn/wiki/how-to-build#build-for-linux +#TODO maybe incomplete script, see https://github.com/Tencent/ncnn/wiki/how-to-build#build-for-linux [source] git = "https://github.com/Tencent/ncnn" [build] @@ -8,3 +8,18 @@ dependencies = [ "libvulkan", "opencv4", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/dev/other/netradiant/recipe.toml b/recipes/wip/dev/other/netradiant/recipe.toml index c8d138c2..599fef2f 100644 --- a/recipes/wip/dev/other/netradiant/recipe.toml +++ b/recipes/wip/dev/other/netradiant/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://gitlab.com/xonotic/netradiant#advanced-compilation +#TODO maybe incomplete script, see https://gitlab.com/xonotic/netradiant#advanced-compilation [source] git = "https://gitlab.com/xonotic/netradiant" [build] @@ -11,3 +11,18 @@ dependencies = [ "libpng", "zlib", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/dev/other/opencascade/recipe.toml b/recipes/wip/dev/other/opencascade/recipe.toml index cc45ac6a..06ff823a 100644 --- a/recipes/wip/dev/other/opencascade/recipe.toml +++ b/recipes/wip/dev/other/opencascade/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://dev.opencascade.org/doc/overview/html/build_upgrade__building_occt.html +#TODO maybe incomplete script, see https://dev.opencascade.org/doc/overview/html/build_upgrade__building_occt.html #TODO missing dependencies, see https://dev.opencascade.org/doc/overview/html/build_upgrade_building_3rdparty.html#build_3rdparty_linux [source] tar = "https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/V7_8_0.tar.gz" @@ -9,3 +9,18 @@ dependencies = [ "tcl", "tk", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/dev/other/protobuf/recipe.toml b/recipes/wip/dev/other/protobuf/recipe.toml index 18bf1707..d8504735 100644 --- a/recipes/wip/dev/other/protobuf/recipe.toml +++ b/recipes/wip/dev/other/protobuf/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, see https://github.com/protocolbuffers/protobuf/blob/main/cmake/README.md +#TODO maybe incomplete script, see https://github.com/protocolbuffers/protobuf/blob/main/cmake/README.md [source] tar = "https://github.com/protocolbuffers/protobuf/releases/download/v25.1/protobuf-25.1.tar.gz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/dev/other/vkpeak/recipe.toml b/recipes/wip/dev/other/vkpeak/recipe.toml index c0fc2b9f..9d42a8b0 100644 --- a/recipes/wip/dev/other/vkpeak/recipe.toml +++ b/recipes/wip/dev/other/vkpeak/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/nihui/vkpeak#build-from-source +#TODO maybe incomplete script, see https://github.com/nihui/vkpeak#build-from-source [source] git = "https://github.com/nihui/vkpeak" [build] @@ -6,3 +6,18 @@ template = "custom" dependencies = [ "libvulkan", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" From 589db8a4e4e8b500e67a65c66c4f2bd8cf4b33ea Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 30 Jun 2024 08:12:12 +0000 Subject: [PATCH 1956/3180] Add the CMake script on many recipes --- recipes/wip/dev/other/zeal/recipe.toml | 17 ++++++++++++++++- recipes/wip/emulators/cpu/unicorn/recipe.toml | 17 ++++++++++++++++- .../game-console/nds/melonds/recipe.toml | 17 ++++++++++++++++- .../game-console/ps4/obliteration/recipe.toml | 17 ++++++++++++++++- .../game-console/sega/uoyabause/recipe.toml | 17 ++++++++++++++++- recipes/wip/fuse/cvmfs/recipe.toml | 17 ++++++++++++++++- recipes/wip/games/fps/et-legacy/recipe.toml | 17 ++++++++++++++++- recipes/wip/games/fps/gzdoom/recipe.toml | 17 ++++++++++++++++- recipes/wip/games/fps/rbdoom3-bfg/recipe.toml | 17 ++++++++++++++++- recipes/wip/games/fps/unvanquished/recipe.toml | 17 ++++++++++++++++- recipes/wip/games/space/endless-sky/recipe.toml | 17 ++++++++++++++++- .../strategy/ship-of-harkinian/recipe.toml | 17 ++++++++++++++++- recipes/wip/games/strategy/warsow/recipe.toml | 17 ++++++++++++++++- recipes/wip/icons/breeze-icons/recipe.toml | 17 ++++++++++++++++- .../libs/audio/libopenshot-audio/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/dcmtk/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/gflags/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/lammps/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/lib2geom/recipe.toml | 17 ++++++++++++++++- .../libs/video/libopenshot-video/recipe.toml | 17 ++++++++++++++++- 20 files changed, 320 insertions(+), 20 deletions(-) diff --git a/recipes/wip/dev/other/zeal/recipe.toml b/recipes/wip/dev/other/zeal/recipe.toml index 39fa5a2e..35484489 100644 --- a/recipes/wip/dev/other/zeal/recipe.toml +++ b/recipes/wip/dev/other/zeal/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/zealdocs/zeal#build-instructions +#TODO maybe incomplete script, see https://github.com/zealdocs/zeal#build-instructions [source] tar = "https://github.com/zealdocs/zeal/releases/download/v0.7.0/zeal-0.7.0.tar.xz" [build] @@ -10,3 +10,18 @@ dependencies = [ "sqlite3", "mesa", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/emulators/cpu/unicorn/recipe.toml b/recipes/wip/emulators/cpu/unicorn/recipe.toml index 826e4001..c5f87772 100644 --- a/recipes/wip/emulators/cpu/unicorn/recipe.toml +++ b/recipes/wip/emulators/cpu/unicorn/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, read https://github.com/unicorn-engine/unicorn/blob/master/docs/COMPILE.md +#TODO maybe incomplete script, read https://github.com/unicorn-engine/unicorn/blob/master/docs/COMPILE.md [source] git = "https://github.com/unicorn-engine/unicorn" rev = "e9c1c17f6df8f8f5da85ee80ad527452db5870ce" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/emulators/game-console/nds/melonds/recipe.toml b/recipes/wip/emulators/game-console/nds/melonds/recipe.toml index fc8f4b45..46b747ea 100644 --- a/recipes/wip/emulators/game-console/nds/melonds/recipe.toml +++ b/recipes/wip/emulators/game-console/nds/melonds/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/melonDS-emu/melonDS#linux +#TODO maybe incomplete script, see https://github.com/melonDS-emu/melonDS#linux #TODO make all dependencies work [source] git = "https://github.com/melonDS-emu/melonDS" @@ -15,3 +15,18 @@ dependencies = [ "libarchive", "zstd", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/emulators/game-console/ps4/obliteration/recipe.toml b/recipes/wip/emulators/game-console/ps4/obliteration/recipe.toml index dd51b9df..e8b69d70 100644 --- a/recipes/wip/emulators/game-console/ps4/obliteration/recipe.toml +++ b/recipes/wip/emulators/game-console/ps4/obliteration/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/obhq/obliteration#configure-build-system +#TODO maybe incomplete script, see https://github.com/obhq/obliteration#configure-build-system #TODO probably missing dependencies #TODO make qt6 work [source] @@ -8,3 +8,18 @@ template = "custom" dependencies = [ "qt6-base", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/emulators/game-console/sega/uoyabause/recipe.toml b/recipes/wip/emulators/game-console/sega/uoyabause/recipe.toml index 364d6e97..2eb3b900 100644 --- a/recipes/wip/emulators/game-console/sega/uoyabause/recipe.toml +++ b/recipes/wip/emulators/game-console/sega/uoyabause/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/devmiyax/yabause/blob/master/yabause/README.LIN#L77 +#TODO maybe incomplete script, see https://github.com/devmiyax/yabause/blob/master/yabause/README.LIN#L77 #TODO make gtk2 work [source] git = "https://github.com/devmiyax/yabause" @@ -10,3 +10,18 @@ dependencies = [ "mesa", "gtkglext", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/fuse/cvmfs/recipe.toml b/recipes/wip/fuse/cvmfs/recipe.toml index a69cc76d..4c35fa3b 100644 --- a/recipes/wip/fuse/cvmfs/recipe.toml +++ b/recipes/wip/fuse/cvmfs/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://cvmfs.readthedocs.io/en/stable/cpt-quickstart.html#building-from-source +#TODO maybe incomplete script, see https://cvmfs.readthedocs.io/en/stable/cpt-quickstart.html#building-from-source [source] tar = "https://ecsft.cern.ch/dist/cvmfs/cvmfs-2.11.2/source.tar.gz" [build] @@ -6,3 +6,18 @@ template = "custom" dependencies = [ "libfuse3", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/games/fps/et-legacy/recipe.toml b/recipes/wip/games/fps/et-legacy/recipe.toml index 5dec0452..8b2bd132 100644 --- a/recipes/wip/games/fps/et-legacy/recipe.toml +++ b/recipes/wip/games/fps/et-legacy/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/etlegacy/etlegacy#compile-and-install +#TODO maybe incomplete script, see https://github.com/etlegacy/etlegacy#compile-and-install [source] git = "https://github.com/etlegacy/etlegacy" rev = "956269f4c13ebe31ba2a0f0b805588383209bd5b" @@ -9,3 +9,18 @@ dependencies = [ "openssl1", "mesa", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/games/fps/gzdoom/recipe.toml b/recipes/wip/games/fps/gzdoom/recipe.toml index dcbbcec2..b7660e32 100644 --- a/recipes/wip/games/fps/gzdoom/recipe.toml +++ b/recipes/wip/games/fps/gzdoom/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://zdoom.org/wiki/Compile_GZDoom_on_Linux +#TODO maybe incomplete script, see https://zdoom.org/wiki/Compile_GZDoom_on_Linux [source] git = "https://github.com/ZDoom/gzdoom" rev = "6ce809efe2902e43ceaa7031b875225d3a0367de" @@ -11,3 +11,18 @@ dependencies = [ "openal", "zmusic", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/games/fps/rbdoom3-bfg/recipe.toml b/recipes/wip/games/fps/rbdoom3-bfg/recipe.toml index 620794db..692427e4 100644 --- a/recipes/wip/games/fps/rbdoom3-bfg/recipe.toml +++ b/recipes/wip/games/fps/rbdoom3-bfg/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/RobertBeckebans/RBDOOM-3-BFG#compiling-on-linux- +#TODO maybe incomplete script, see https://github.com/RobertBeckebans/RBDOOM-3-BFG#compiling-on-linux- #TODO require the Vulkan SDK, see https://vulkan.lunarg.com/ [source] git = "https://github.com/RobertBeckebans/RBDOOM-3-BFG" @@ -11,3 +11,18 @@ dependencies = [ "ffmpeg6", "libvulkan", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/games/fps/unvanquished/recipe.toml b/recipes/wip/games/fps/unvanquished/recipe.toml index 792ca436..cd12c6ec 100644 --- a/recipes/wip/games/fps/unvanquished/recipe.toml +++ b/recipes/wip/games/fps/unvanquished/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/DaemonEngine/Daemon#build-instructions +#TODO maybe incomplete script, see https://github.com/DaemonEngine/Daemon#build-instructions # data files - https://github.com/Unvanquished/Unvanquished#downloading-the-games-assets [source] git = "https://github.com/DaemonEngine/Daemon" @@ -21,3 +21,18 @@ dependencies = [ "opus", "opusfile", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/games/space/endless-sky/recipe.toml b/recipes/wip/games/space/endless-sky/recipe.toml index 24f29a4c..d102de66 100644 --- a/recipes/wip/games/space/endless-sky/recipe.toml +++ b/recipes/wip/games/space/endless-sky/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/endless-sky/endless-sky/blob/master/docs/readme-cmake.md#building-the-game +#TODO maybe incomplete script, see https://github.com/endless-sky/endless-sky/blob/master/docs/readme-cmake.md#building-the-game [source] git = "https://github.com/endless-sky/endless-sky" rev = "95e72950e1554392666fa41bb18c978868aa6611" @@ -14,3 +14,18 @@ dependencies = [ "libmad", "libuuid", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/games/strategy/ship-of-harkinian/recipe.toml b/recipes/wip/games/strategy/ship-of-harkinian/recipe.toml index c94e3c2a..01b0af36 100644 --- a/recipes/wip/games/strategy/ship-of-harkinian/recipe.toml +++ b/recipes/wip/games/strategy/ship-of-harkinian/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/HarbourMasters/Shipwright/blob/develop/docs/BUILDING.md#linux +#TODO maybe incomplete script, see https://github.com/HarbourMasters/Shipwright/blob/develop/docs/BUILDING.md#linux #TODO port to orbital? [source] git = "https://github.com/HarbourMasters/Shipwright" @@ -10,3 +10,18 @@ dependencies = [ "libpng", "glew", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/games/strategy/warsow/recipe.toml b/recipes/wip/games/strategy/warsow/recipe.toml index e7a953c1..1e4fdcab 100644 --- a/recipes/wip/games/strategy/warsow/recipe.toml +++ b/recipes/wip/games/strategy/warsow/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://warsow.net/warsow_21_sdk.tar.gz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/icons/breeze-icons/recipe.toml b/recipes/wip/icons/breeze-icons/recipe.toml index d1b0d9ab..31717dab 100644 --- a/recipes/wip/icons/breeze-icons/recipe.toml +++ b/recipes/wip/icons/breeze-icons/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/breeze-icons-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/audio/libopenshot-audio/recipe.toml b/recipes/wip/libs/audio/libopenshot-audio/recipe.toml index 8c822178..8c018375 100644 --- a/recipes/wip/libs/audio/libopenshot-audio/recipe.toml +++ b/recipes/wip/libs/audio/libopenshot-audio/recipe.toml @@ -1,7 +1,22 @@ -#TODO missing script for CMake +#TODO maybe incomplete script #TODO determine dependencies [source] git = "https://github.com/OpenShot/libopenshot-audio" rev = "98f08a6d4a90f3644b6c2c68efb2cbd86c75d87a" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/dcmtk/recipe.toml b/recipes/wip/libs/other/dcmtk/recipe.toml index 5393073f..158ebe94 100644 --- a/recipes/wip/libs/other/dcmtk/recipe.toml +++ b/recipes/wip/libs/other/dcmtk/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://git.dcmtk.org/?p=dcmtk.git;a=blob;f=INSTALL;h=97087f9a05e65040264d90027912c736958e67f3;hb=HEAD#l667 +#TODO maybe incomplete script, see https://git.dcmtk.org/?p=dcmtk.git;a=blob;f=INSTALL;h=97087f9a05e65040264d90027912c736958e67f3;hb=HEAD#l667 [source] tar = "https://dicom.offis.de/download/dcmtk/dcmtk367/dcmtk-3.6.7.tar.gz" [build] @@ -12,3 +12,18 @@ dependencies = [ "zlib", "openjpeg", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/gflags/recipe.toml b/recipes/wip/libs/other/gflags/recipe.toml index e3c77b04..09033d4b 100644 --- a/recipes/wip/libs/other/gflags/recipe.toml +++ b/recipes/wip/libs/other/gflags/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, see https://github.com/gflags/gflags/blob/master/INSTALL.md#compiling-the-source-code-with-cmake +#TODO maybe incomplete script, see https://github.com/gflags/gflags/blob/master/INSTALL.md#compiling-the-source-code-with-cmake [source] git = "https://github.com/gflags/gflags" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/lammps/recipe.toml b/recipes/wip/libs/other/lammps/recipe.toml index c2429130..45054929 100644 --- a/recipes/wip/libs/other/lammps/recipe.toml +++ b/recipes/wip/libs/other/lammps/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://docs.lammps.org/Build_cmake.html +#TODO maybe incomplete script, see https://docs.lammps.org/Build_cmake.html [source] git = "https://github.com/lammps/lammps" rev = "27e8d0f19cfd60ff513828af74d07d2c8f3c4451" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/lib2geom/recipe.toml b/recipes/wip/libs/other/lib2geom/recipe.toml index ff0659d3..f971edf9 100644 --- a/recipes/wip/libs/other/lib2geom/recipe.toml +++ b/recipes/wip/libs/other/lib2geom/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://gitlab.com/inkscape/lib2geom#building +#TODO maybe incomplete script, see https://gitlab.com/inkscape/lib2geom#building [source] git = "https://gitlab.com/inkscape/lib2geom" rev = "18fc32f9972dfaee597055b3226c5b7ef3bfbb4c" @@ -10,3 +10,18 @@ dependencies = [ "glib", "cairo", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/video/libopenshot-video/recipe.toml b/recipes/wip/libs/video/libopenshot-video/recipe.toml index a16d4222..0b861b24 100644 --- a/recipes/wip/libs/video/libopenshot-video/recipe.toml +++ b/recipes/wip/libs/video/libopenshot-video/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake +#TODO maybe incomplete script #TODO determine dependencies - https://github.com/OpenShot/libopenshot/wiki/Linux-Build-Instructions [source] git = "https://github.com/OpenShot/libopenshot" @@ -17,3 +17,18 @@ dependencies = [ "babl", "imagemagick", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" From bdd5896404d9b9e0453ecada9985c0599e8db305 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 30 Jun 2024 08:49:03 +0000 Subject: [PATCH 1957/3180] Add the CMake script on many recipes --- recipes/wip/libs/other/libaom/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/libavif/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/libeigen/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/libgav1/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/libgdal/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/libgrantlee/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/libheif/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/libhidapi/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/libimath/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/libimmer/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/libjasper/recipe.toml | 17 ++++++++++++++++- .../wip/libs/other/libjpeg-turbo/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/libjxl/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/libkdcraw/recipe.toml | 17 ++++++++++++++++- .../wip/libs/other/libkomparediff2/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/liblager/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/liblapack/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/liblensfun/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/libnlopt/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/libpoppler/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/librkcommon/recipe.toml | 17 ++++++++++++++++- .../wip/libs/other/libseexpr-kde/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/libssh/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/libwebp2/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/libxsimd/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/libxtl/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/libzug/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/mlt/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/oidn/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/onednn/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/onetbb/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/opencolorio/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/openexr/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/openjpeg/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/openvkl/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/pystring/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/scotch/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/simdjson/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/snappy/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/volk/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/webkitgtk3/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/other/webkitgtk4/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/qt/qt5-webkit/recipe.toml | 17 ++++++++++++++++- 43 files changed, 688 insertions(+), 43 deletions(-) diff --git a/recipes/wip/libs/other/libaom/recipe.toml b/recipes/wip/libs/other/libaom/recipe.toml index 93e9708d..8828c047 100644 --- a/recipes/wip/libs/other/libaom/recipe.toml +++ b/recipes/wip/libs/other/libaom/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://aomedia.googlesource.com/aom/#basic-build +#TODO maybe incomplete script, see https://aomedia.googlesource.com/aom/#basic-build [source] git = "https://aomedia.googlesource.com/aom" rev = "aca387522ccc0a1775716923d5489dd2d4b1e628" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/libavif/recipe.toml b/recipes/wip/libs/other/libavif/recipe.toml index 12a9880e..c5973522 100644 --- a/recipes/wip/libs/other/libavif/recipe.toml +++ b/recipes/wip/libs/other/libavif/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://github.com/AOMediaCodec/libavif#build-notes +#TODO maybe incomplete script, see https://github.com/AOMediaCodec/libavif#build-notes [source] git = "https://github.com/AOMediaCodec/libavif" rev = "ecf2dfc1ef2908e0f4ddb0fdc03dd8db831d8ae7" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/libeigen/recipe.toml b/recipes/wip/libs/other/libeigen/recipe.toml index 6bf8ded0..d47a471d 100644 --- a/recipes/wip/libs/other/libeigen/recipe.toml +++ b/recipes/wip/libs/other/libeigen/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://gitlab.com/libeigen/eigen/-/blob/master/INSTALL?ref_type=heads +#TODO maybe incomplete script, see https://gitlab.com/libeigen/eigen/-/blob/master/INSTALL?ref_type=heads [source] git = "https://gitlab.com/libeigen/eigen" rev = "3147391d946bb4b6c68edd901f2add6ac1f31f8c" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/libgav1/recipe.toml b/recipes/wip/libs/other/libgav1/recipe.toml index 41f67b7f..cd6307f6 100644 --- a/recipes/wip/libs/other/libgav1/recipe.toml +++ b/recipes/wip/libs/other/libgav1/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://chromium.googlesource.com/codecs/libgav1/#compile +#TODO maybe incomplete script, see https://chromium.googlesource.com/codecs/libgav1/#compile [source] git = "https://chromium.googlesource.com/codecs/libgav1" rev = "e386d8f1fb983200972d159b9be47fd5d0776708" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/libgdal/recipe.toml b/recipes/wip/libs/other/libgdal/recipe.toml index 6980efe2..56944b4c 100644 --- a/recipes/wip/libs/other/libgdal/recipe.toml +++ b/recipes/wip/libs/other/libgdal/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, see https://gdal.org/development/building_from_source.html +#TODO maybe incomplete script, see https://gdal.org/development/building_from_source.html [source] tar = "https://github.com/OSGeo/gdal/releases/download/v3.8.4/gdal-3.8.4.tar.gz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/libgrantlee/recipe.toml b/recipes/wip/libs/other/libgrantlee/recipe.toml index 4a5b47f9..9e8d4f79 100644 --- a/recipes/wip/libs/other/libgrantlee/recipe.toml +++ b/recipes/wip/libs/other/libgrantlee/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/steveire/grantlee#installation +#TODO maybe incomplete script, see https://github.com/steveire/grantlee#installation [source] tar = "https://github.com/steveire/grantlee/releases/download/v5.3.1/grantlee-5.3.1.tar.gz" [build] @@ -6,3 +6,18 @@ template = "custom" dependencies = [ "qt5-base", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/libheif/recipe.toml b/recipes/wip/libs/other/libheif/recipe.toml index e0239fc1..06588445 100644 --- a/recipes/wip/libs/other/libheif/recipe.toml +++ b/recipes/wip/libs/other/libheif/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/strukturag/libheif#compiling +#TODO maybe incomplete script, see https://github.com/strukturag/libheif#compiling [source] tar = "https://github.com/strukturag/libheif/releases/download/v1.17.5/libheif-1.17.5.tar.gz" [build] @@ -7,3 +7,18 @@ dependencies = [ "x265", "libde265", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/libhidapi/recipe.toml b/recipes/wip/libs/other/libhidapi/recipe.toml index 2589679f..df68a63d 100644 --- a/recipes/wip/libs/other/libhidapi/recipe.toml +++ b/recipes/wip/libs/other/libhidapi/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/libusb/hidapi/blob/master/BUILD.cmake.md +#TODO maybe incomplete script, see https://github.com/libusb/hidapi/blob/master/BUILD.cmake.md [source] git = "https://github.com/libusb/hidapi" rev = "d3013f0af3f4029d82872c1a9487ea461a56dee4" @@ -7,3 +7,18 @@ template = "custom" dependencies = [ "libiconv", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/libimath/recipe.toml b/recipes/wip/libs/other/libimath/recipe.toml index b149f33a..6462725c 100644 --- a/recipes/wip/libs/other/libimath/recipe.toml +++ b/recipes/wip/libs/other/libimath/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://imath.readthedocs.io/en/latest/install.html#linux-macos +#TODO maybe incomplete script, see https://imath.readthedocs.io/en/latest/install.html#linux-macos [source] git = "https://github.com/AcademySoftwareFoundation/Imath" rev = "d690a3fcff4e877ead5ae56c7e964595ade8a35e" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/libimmer/recipe.toml b/recipes/wip/libs/other/libimmer/recipe.toml index d291761e..4f665fea 100644 --- a/recipes/wip/libs/other/libimmer/recipe.toml +++ b/recipes/wip/libs/other/libimmer/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://github.com/arximboldi/immer#usage +#TODO maybe incomplete script, see https://github.com/arximboldi/immer#usage [source] git = "https://github.com/arximboldi/immer" rev = "5875f7739a6c642ad58cbedadb509c86d421217e" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/libjasper/recipe.toml b/recipes/wip/libs/other/libjasper/recipe.toml index cdbf205f..6b1b8e72 100644 --- a/recipes/wip/libs/other/libjasper/recipe.toml +++ b/recipes/wip/libs/other/libjasper/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, see https://github.com/jasper-software/jasper/blob/master/INSTALL.txt +#TODO maybe incomplete script, see https://github.com/jasper-software/jasper/blob/master/INSTALL.txt [source] tar = "https://github.com/jasper-software/jasper/releases/download/version-4.1.1/jasper-4.1.1.tar.gz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/libjpeg-turbo/recipe.toml b/recipes/wip/libs/other/libjpeg-turbo/recipe.toml index 80be4ed9..3035d42a 100644 --- a/recipes/wip/libs/other/libjpeg-turbo/recipe.toml +++ b/recipes/wip/libs/other/libjpeg-turbo/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, see https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/BUILDING.md#build-procedure +#TODO maybe incomplete script, see https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/BUILDING.md#build-procedure [source] tar = "https://sourceforge.net/projects/libjpeg-turbo/files/3.0.1/libjpeg-turbo-3.0.1.tar.gz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/libjxl/recipe.toml b/recipes/wip/libs/other/libjxl/recipe.toml index 82849ad8..d84a5469 100644 --- a/recipes/wip/libs/other/libjxl/recipe.toml +++ b/recipes/wip/libs/other/libjxl/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/libjxl/libjxl/blob/main/BUILDING.md +#TODO maybe incomplete script, see https://github.com/libjxl/libjxl/blob/main/BUILDING.md [source] git = "https://github.com/libjxl/libjxl" rev = "954b460768c08a147abf47689ad69b0e7beff65e" @@ -12,3 +12,18 @@ dependencies = [ "libwebp", "openexr", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/libkdcraw/recipe.toml b/recipes/wip/libs/other/libkdcraw/recipe.toml index 834026d7..c551a1f4 100644 --- a/recipes/wip/libs/other/libkdcraw/recipe.toml +++ b/recipes/wip/libs/other/libkdcraw/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://invent.kde.org/graphics/libkdcraw/-/blob/master/README?ref_type=heads +#TODO maybe incomplete script, see https://invent.kde.org/graphics/libkdcraw/-/blob/master/README?ref_type=heads [source] git = "https://invent.kde.org/graphics/libkdcraw" rev = "fbd01409c8009f403bccac6776fe4cfefa57d5bd" @@ -8,3 +8,18 @@ dependencies = [ "libraw", "qt5-base", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/libkomparediff2/recipe.toml b/recipes/wip/libs/other/libkomparediff2/recipe.toml index 91eefe59..3f1222db 100644 --- a/recipes/wip/libs/other/libkomparediff2/recipe.toml +++ b/recipes/wip/libs/other/libkomparediff2/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] git = "https://invent.kde.org/sdk/libkomparediff2" rev = "ea9034ee3e4952862a937255bc6cc4ee392907f6" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/liblager/recipe.toml b/recipes/wip/libs/other/liblager/recipe.toml index 27ed3466..9c03020c 100644 --- a/recipes/wip/libs/other/liblager/recipe.toml +++ b/recipes/wip/libs/other/liblager/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/arximboldi/lager#usage +#TODO maybe incomplete script, see https://github.com/arximboldi/lager#usage [source] git = "https://github.com/arximboldi/lager" [build] @@ -7,3 +7,18 @@ dependencies = [ "libzug", "boost", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/liblapack/recipe.toml b/recipes/wip/libs/other/liblapack/recipe.toml index f2d82d3e..77b1d122 100644 --- a/recipes/wip/libs/other/liblapack/recipe.toml +++ b/recipes/wip/libs/other/liblapack/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://github.com/Reference-LAPACK/lapack#installation +#TODO maybe incomplete script, see https://github.com/Reference-LAPACK/lapack#installation [source] git = "https://github.com/Reference-LAPACK/lapack" rev = "04b044e020a3560ccfa9988c8a80a1fb7083fc2e" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/liblensfun/recipe.toml b/recipes/wip/libs/other/liblensfun/recipe.toml index c5a36553..e132a11f 100644 --- a/recipes/wip/libs/other/liblensfun/recipe.toml +++ b/recipes/wip/libs/other/liblensfun/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/lensfun/lensfun?tab=readme-ov-file#build-instructions +#TODO maybe incomplete script, see https://github.com/lensfun/lensfun?tab=readme-ov-file#build-instructions [source] git = "https://github.com/lensfun/lensfun" rev = "35b19fb38e7250ea646709ef9e528d54a6a79648" @@ -8,3 +8,18 @@ dependencies = [ "glib", "libpng", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/libnlopt/recipe.toml b/recipes/wip/libs/other/libnlopt/recipe.toml index b76ce21f..f4db165c 100644 --- a/recipes/wip/libs/other/libnlopt/recipe.toml +++ b/recipes/wip/libs/other/libnlopt/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://github.com/stevengj/nlopt#readme +#TODO maybe incomplete script, see https://github.com/stevengj/nlopt#readme [source] git = "https://github.com/stevengj/nlopt" rev = "09b3c2a6da71cabcb98d2c8facc6b83d2321ed71" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/libpoppler/recipe.toml b/recipes/wip/libs/other/libpoppler/recipe.toml index 9d202a2c..cf4bf304 100644 --- a/recipes/wip/libs/other/libpoppler/recipe.toml +++ b/recipes/wip/libs/other/libpoppler/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://gitlab.freedesktop.org/poppler/poppler/-/blob/master/INSTALL?ref_type=heads +#TODO maybe incomplete script, see https://gitlab.freedesktop.org/poppler/poppler/-/blob/master/INSTALL?ref_type=heads #TODO needs encoding data - https://poppler.freedesktop.org/poppler-data-0.4.12.tar.gz [source] tar = "https://poppler.freedesktop.org/poppler-23.12.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/librkcommon/recipe.toml b/recipes/wip/libs/other/librkcommon/recipe.toml index 6f58a731..10710db0 100644 --- a/recipes/wip/libs/other/librkcommon/recipe.toml +++ b/recipes/wip/libs/other/librkcommon/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/ospray/rkcommon#building +#TODO maybe incomplete script, see https://github.com/ospray/rkcommon#building [source] git = "https://github.com/ospray/rkcommon" rev = "f15291d4789a53e5980fd9b3d2639f705d675dd7" @@ -7,3 +7,18 @@ template = "custom" dependencies = [ "onetbb", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/libseexpr-kde/recipe.toml b/recipes/wip/libs/other/libseexpr-kde/recipe.toml index 456e6a22..39d010df 100644 --- a/recipes/wip/libs/other/libseexpr-kde/recipe.toml +++ b/recipes/wip/libs/other/libseexpr-kde/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://invent.kde.org/graphics/kseexpr#super-impatient-cmake-building-and-installing-guide +#TODO maybe incomplete script, see https://invent.kde.org/graphics/kseexpr#super-impatient-cmake-building-and-installing-guide [source] git = "https://invent.kde.org/graphics/kseexpr" rev = "d834b2dc6a7f452ffca4602f90b709db86a3a630" @@ -7,3 +7,18 @@ template = "custom" dependencies = [ "qt5-base", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/libssh/recipe.toml b/recipes/wip/libs/other/libssh/recipe.toml index 1b5594a8..b75d3a27 100644 --- a/recipes/wip/libs/other/libssh/recipe.toml +++ b/recipes/wip/libs/other/libssh/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://git.libssh.org/projects/libssh.git/tree/INSTALL#n36 +#TODO maybe incomplete script, see https://git.libssh.org/projects/libssh.git/tree/INSTALL#n36 [source] tar = "https://www.libssh.org/files/0.10/libssh-0.10.6.tar.xz" [build] @@ -7,3 +7,18 @@ dependencies = [ "zlib", "openssl1", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/libwebp2/recipe.toml b/recipes/wip/libs/other/libwebp2/recipe.toml index 6742fbb9..1f7fa851 100644 --- a/recipes/wip/libs/other/libwebp2/recipe.toml +++ b/recipes/wip/libs/other/libwebp2/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, see https://chromium.googlesource.com/codecs/libwebp2/#compiling +#TODO maybe incomplete script, see https://chromium.googlesource.com/codecs/libwebp2/#compiling [source] git = "https://chromium.googlesource.com/codecs/libwebp2" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/libxsimd/recipe.toml b/recipes/wip/libs/other/libxsimd/recipe.toml index a1970a5d..eb269b44 100644 --- a/recipes/wip/libs/other/libxsimd/recipe.toml +++ b/recipes/wip/libs/other/libxsimd/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://github.com/xtensor-stack/xsimd#install-from-sources +#TODO maybe incomplete script, see https://github.com/xtensor-stack/xsimd#install-from-sources [source] git = "https://github.com/xtensor-stack/xsimd" rev = "c1247bffa8fc36de7380a5cd42673a3b32f74c97" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/libxtl/recipe.toml b/recipes/wip/libs/other/libxtl/recipe.toml index 6227f7e0..4f93588d 100644 --- a/recipes/wip/libs/other/libxtl/recipe.toml +++ b/recipes/wip/libs/other/libxtl/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://github.com/xtensor-stack/xtl#install-from-sources +#TODO maybe incomplete script, see https://github.com/xtensor-stack/xtl#install-from-sources [source] git = "https://github.com/xtensor-stack/xtl" rev = "c95f6c8b13ffb7f74f16d3fd6882668b79bd8412" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/libzug/recipe.toml b/recipes/wip/libs/other/libzug/recipe.toml index 3e0a7646..cc550078 100644 --- a/recipes/wip/libs/other/libzug/recipe.toml +++ b/recipes/wip/libs/other/libzug/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/arximboldi/zug#usage +#TODO maybe incomplete script, see https://github.com/arximboldi/zug#usage [source] git = "https://github.com/arximboldi/zug" [build] @@ -6,3 +6,18 @@ template = "custom" dependencies = [ "boost", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/mlt/recipe.toml b/recipes/wip/libs/other/mlt/recipe.toml index 67767cd3..5fdc9d00 100644 --- a/recipes/wip/libs/other/mlt/recipe.toml +++ b/recipes/wip/libs/other/mlt/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, see https://github.com/mltframework/mlt#readme +#TODO maybe incomplete script, see https://github.com/mltframework/mlt#readme [source] tar = "https://github.com/mltframework/mlt/releases/download/v7.22.0/mlt-7.22.0.tar.gz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/oidn/recipe.toml b/recipes/wip/libs/other/oidn/recipe.toml index 9299e39a..d3bb3241 100644 --- a/recipes/wip/libs/other/oidn/recipe.toml +++ b/recipes/wip/libs/other/oidn/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/OpenImageDenoise/oidn#compiling-on-linuxmacos +#TODO maybe incomplete script, see https://github.com/OpenImageDenoise/oidn#compiling-on-linuxmacos [source] git = "https://github.com/OpenImageDenoise/oidn" [build] @@ -7,3 +7,18 @@ dependencies = [ "ispc", "onetbb", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/onednn/recipe.toml b/recipes/wip/libs/other/onednn/recipe.toml index e543b6f7..e9bb9fca 100644 --- a/recipes/wip/libs/other/onednn/recipe.toml +++ b/recipes/wip/libs/other/onednn/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://oneapi-src.github.io/oneDNN/dev_guide_build.html#linux-macos +#TODO maybe incomplete script, see https://oneapi-src.github.io/oneDNN/dev_guide_build.html#linux-macos [source] git = "https://github.com/oneapi-src/oneDNN" rev = "16720eaaab9557158ff77ebf3bc610e9682928d6" @@ -7,3 +7,18 @@ template = "custom" dependencies = [ "onetbb", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/onetbb/recipe.toml b/recipes/wip/libs/other/onetbb/recipe.toml index 09b6be63..7fa5af42 100644 --- a/recipes/wip/libs/other/onetbb/recipe.toml +++ b/recipes/wip/libs/other/onetbb/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://github.com/oneapi-src/oneTBB/blob/master/INSTALL.md +#TODO maybe incomplete script, see https://github.com/oneapi-src/oneTBB/blob/master/INSTALL.md [source] git = "https://github.com/oneapi-src/oneTBB" rev = "8b829acc65569019edb896c5150d427f288e8aba" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/opencolorio/recipe.toml b/recipes/wip/libs/other/opencolorio/recipe.toml index cd8155c2..c4b7bb00 100644 --- a/recipes/wip/libs/other/opencolorio/recipe.toml +++ b/recipes/wip/libs/other/opencolorio/recipe.toml @@ -1,5 +1,5 @@ #TODO missing dependencies, see https://opencolorio.readthedocs.io/en/latest/quick_start/installation.html#dependencies -#TODO missing script for CMake, see https://opencolorio.readthedocs.io/en/latest/quick_start/installation.html +#TODO maybe incomplete script, see https://opencolorio.readthedocs.io/en/latest/quick_start/installation.html [source] git = "https://github.com/AcademySoftwareFoundation/OpenColorIO" rev = "92db29b9e7e298c4c2cc67c8a74944c2e7e716e5" @@ -10,3 +10,18 @@ dependencies = [ "imath", "zlib", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/openexr/recipe.toml b/recipes/wip/libs/other/openexr/recipe.toml index edd4304c..0c8bceb6 100644 --- a/recipes/wip/libs/other/openexr/recipe.toml +++ b/recipes/wip/libs/other/openexr/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://openexr.com/en/latest/install.html#linux-macos +#TODO maybe incomplete script, see https://openexr.com/en/latest/install.html#linux-macos [source] git = "https://github.com/AcademySoftwareFoundation/openexr" rev = "737b2707a001e67f3812d86a639c3d037efe2ea8" @@ -8,3 +8,18 @@ dependencies = [ "libdeflate", "libimath" ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/openjpeg/recipe.toml b/recipes/wip/libs/other/openjpeg/recipe.toml index de04008a..a1f37332 100644 --- a/recipes/wip/libs/other/openjpeg/recipe.toml +++ b/recipes/wip/libs/other/openjpeg/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://github.com/uclouvain/openjpeg/blob/master/INSTALL.md +#TODO maybe incomplete script, see https://github.com/uclouvain/openjpeg/blob/master/INSTALL.md [source] git = "https://github.com/uclouvain/openjpeg" rev = "a5891555eb49ed7cc26b2901ea680acda136d811" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/openvkl/recipe.toml b/recipes/wip/libs/other/openvkl/recipe.toml index ddad6779..c4d82da5 100644 --- a/recipes/wip/libs/other/openvkl/recipe.toml +++ b/recipes/wip/libs/other/openvkl/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/openvkl/openvkl#building-open-vkl-from-source +#TODO maybe incomplete script, see https://github.com/openvkl/openvkl#building-open-vkl-from-source [source] git = "https://github.com/openvkl/openvkl" rev = "712bdb8035487606096d7af90a4c9bde5503515d" @@ -10,3 +10,18 @@ dependencies = [ "embree", "level-zero", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/pystring/recipe.toml b/recipes/wip/libs/other/pystring/recipe.toml index d6e408ea..3d66d82a 100644 --- a/recipes/wip/libs/other/pystring/recipe.toml +++ b/recipes/wip/libs/other/pystring/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] git = "https://github.com/imageworks/pystring" rev = "7d16bc814ccb4cad03c300dcb77440034caa84f7" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/scotch/recipe.toml b/recipes/wip/libs/other/scotch/recipe.toml index 5a01f407..2b28b489 100644 --- a/recipes/wip/libs/other/scotch/recipe.toml +++ b/recipes/wip/libs/other/scotch/recipe.toml @@ -1,7 +1,22 @@ -#TODO missing script for CMake, see https://gitlab.inria.fr/scotch/scotch#installation +#TODO maybe incomplete script, see https://gitlab.inria.fr/scotch/scotch#installation #TODO probably missing dependencies [source] git = "https://gitlab.inria.fr/scotch/scotch" rev = "82ec87f558f4acb7ccb69a079f531be380504c92" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/simdjson/recipe.toml b/recipes/wip/libs/other/simdjson/recipe.toml index 5b8cda08..08031f96 100644 --- a/recipes/wip/libs/other/simdjson/recipe.toml +++ b/recipes/wip/libs/other/simdjson/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://github.com/simdjson/simdjson/blob/master/HACKING.md#usage-cmake-on-64-bit-platforms-like-linux-freebsd-or-macos +#TODO maybe incomplete script, see https://github.com/simdjson/simdjson/blob/master/HACKING.md#usage-cmake-on-64-bit-platforms-like-linux-freebsd-or-macos [source] git = "https://github.com/simdjson/simdjson" rev = "6060be2fdf62edf4a8f51a8b0883d57d09397b30" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/snappy/recipe.toml b/recipes/wip/libs/other/snappy/recipe.toml index d97d7422..ba362312 100644 --- a/recipes/wip/libs/other/snappy/recipe.toml +++ b/recipes/wip/libs/other/snappy/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://github.com/google/snappy#building +#TODO maybe incomplete script, see https://github.com/google/snappy#building [source] git = "https://github.com/google/snappy" rev = "dc05e026488865bc69313a68bcc03ef2e4ea8e83" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/volk/recipe.toml b/recipes/wip/libs/other/volk/recipe.toml index e244f5fc..656e4f7e 100644 --- a/recipes/wip/libs/other/volk/recipe.toml +++ b/recipes/wip/libs/other/volk/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, see https://github.com/gnuradio/volk#building-on-most-x86-32-bit-and-64-bit-platforms +#TODO maybe incomplete script, see https://github.com/gnuradio/volk#building-on-most-x86-32-bit-and-64-bit-platforms [source] tar = "https://www.libvolk.org/releases/volk-3.0.0.tar.gz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/webkitgtk3/recipe.toml b/recipes/wip/libs/other/webkitgtk3/recipe.toml index 2c9c60a5..acb9546c 100644 --- a/recipes/wip/libs/other/webkitgtk3/recipe.toml +++ b/recipes/wip/libs/other/webkitgtk3/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake and Ninja, see https://trac.webkit.org/wiki/BuildingGtk#BuildingWebKitGTKfromareleasetarball +#TODO missing script for Ninja, see https://trac.webkit.org/wiki/BuildingGtk#BuildingWebKitGTKfromareleasetarball #TODO port to orbital #TODO missing dependencies, see https://archlinux.org/packages/extra/x86_64/webkitgtk-6.0/ [source] @@ -23,3 +23,18 @@ dependencies = [ "zlib", "sqlite3", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/webkitgtk4/recipe.toml b/recipes/wip/libs/other/webkitgtk4/recipe.toml index f0308688..442fe96a 100644 --- a/recipes/wip/libs/other/webkitgtk4/recipe.toml +++ b/recipes/wip/libs/other/webkitgtk4/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake and Ninja, see https://trac.webkit.org/wiki/BuildingGtk#BuildingWebKitGTKfromareleasetarball +#TODO missing script for Ninja, see https://trac.webkit.org/wiki/BuildingGtk#BuildingWebKitGTKfromareleasetarball #TODO port to orbital #TODO missing dependencies, see https://archlinux.org/packages/extra/x86_64/webkitgtk-6.0/ [source] @@ -23,3 +23,18 @@ dependencies = [ "zlib", "sqlite3", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/qt/qt5-webkit/recipe.toml b/recipes/wip/libs/qt/qt5-webkit/recipe.toml index 38b70a36..450cdd69 100644 --- a/recipes/wip/libs/qt/qt5-webkit/recipe.toml +++ b/recipes/wip/libs/qt/qt5-webkit/recipe.toml @@ -1,5 +1,5 @@ #TODO probably wrong branch -#TODO missing script for CMake, see https://github.com/qtwebkit/qtwebkit/wiki/Building-QtWebKit-on-Linux +#TODO maybe incomplete script, see https://github.com/qtwebkit/qtwebkit/wiki/Building-QtWebKit-on-Linux #TODO determine dependencies [source] git = "https://github.com/movableink/webkit" @@ -25,3 +25,18 @@ dependencies = [ "glib", "gstreamer", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" From e55ac46a7ae9ae0b40eb3b04cb78b174ce07930d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 30 Jun 2024 08:51:22 +0000 Subject: [PATCH 1958/3180] Remove not important recipes --- recipes/wip/dev/lang/hare-std/recipe.toml | 5 ----- recipes/wip/dev/lang/harec/recipe.toml | 5 ----- recipes/wip/dev/lang/julia-lts/recipe.toml | 6 ------ recipes/wip/dev/lang/julia/recipe.toml | 6 ------ recipes/wip/dev/lang/pony-lang/recipe.toml | 21 ------------------- recipes/wip/dev/lang/vale-lang/recipe.toml | 20 ------------------ .../wip/dev/other/austral-lang/recipe.toml | 5 ----- 7 files changed, 68 deletions(-) delete mode 100644 recipes/wip/dev/lang/hare-std/recipe.toml delete mode 100644 recipes/wip/dev/lang/harec/recipe.toml delete mode 100644 recipes/wip/dev/lang/julia-lts/recipe.toml delete mode 100644 recipes/wip/dev/lang/julia/recipe.toml delete mode 100644 recipes/wip/dev/lang/pony-lang/recipe.toml delete mode 100644 recipes/wip/dev/lang/vale-lang/recipe.toml delete mode 100644 recipes/wip/dev/other/austral-lang/recipe.toml diff --git a/recipes/wip/dev/lang/hare-std/recipe.toml b/recipes/wip/dev/lang/hare-std/recipe.toml deleted file mode 100644 index e94dbaee..00000000 --- a/recipes/wip/dev/lang/hare-std/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO missing script for building, see https://harelang.org/installation/ -[source] -git = "https://git.sr.ht/~sircmpwn/hare" -[build] -template = "custom" diff --git a/recipes/wip/dev/lang/harec/recipe.toml b/recipes/wip/dev/lang/harec/recipe.toml deleted file mode 100644 index d94249c0..00000000 --- a/recipes/wip/dev/lang/harec/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO configuration problem, can't recognize the Redox triple -[source] -git = "https://git.sr.ht/~sircmpwn/harec" -[build] -template = "configure" diff --git a/recipes/wip/dev/lang/julia-lts/recipe.toml b/recipes/wip/dev/lang/julia-lts/recipe.toml deleted file mode 100644 index bc50e21f..00000000 --- a/recipes/wip/dev/lang/julia-lts/recipe.toml +++ /dev/null @@ -1,6 +0,0 @@ -#TODO missing script for "make" -# using the full tarball with dependencies included -[source] -tar = "https://github.com/JuliaLang/julia/releases/download/v1.6.7/julia-1.6.7-full.tar.gz" -[build] -template = "custom" diff --git a/recipes/wip/dev/lang/julia/recipe.toml b/recipes/wip/dev/lang/julia/recipe.toml deleted file mode 100644 index 7f973591..00000000 --- a/recipes/wip/dev/lang/julia/recipe.toml +++ /dev/null @@ -1,6 +0,0 @@ -#TODO missing script for "make" -# using the full tarball with dependencies included -[source] -tar = "https://github.com/JuliaLang/julia/releases/download/v1.9.4/julia-1.9.4-full.tar.gz" -[build] -template = "custom" diff --git a/recipes/wip/dev/lang/pony-lang/recipe.toml b/recipes/wip/dev/lang/pony-lang/recipe.toml deleted file mode 100644 index 157d5963..00000000 --- a/recipes/wip/dev/lang/pony-lang/recipe.toml +++ /dev/null @@ -1,21 +0,0 @@ -#TODO maybe incomplete script, see https://github.com/ponylang/ponyc/blob/main/BUILD.md -[source] -git = "https://github.com/ponylang/ponyc" -rev = "a161b7c97666f820bbacbb328d95dc820f353edd" -[build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/dev/lang/vale-lang/recipe.toml b/recipes/wip/dev/lang/vale-lang/recipe.toml deleted file mode 100644 index 313c08fe..00000000 --- a/recipes/wip/dev/lang/vale-lang/recipe.toml +++ /dev/null @@ -1,20 +0,0 @@ -#TODO maybe incomplete script, see https://github.com/ValeLang/Vale/blob/master/build-compiler.md -[source] -git = "https://github.com/ValeLang/Vale" -[build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/dev/other/austral-lang/recipe.toml b/recipes/wip/dev/other/austral-lang/recipe.toml deleted file mode 100644 index f49e021c..00000000 --- a/recipes/wip/dev/other/austral-lang/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO missing script for building, see https://github.com/austral/austral/#building-without-nix -[source] -git = "https://github.com/austral/austral" -[build] -template = "custom" From a6af047a0345145b8d653b8385e394f5951c2781 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 30 Jun 2024 08:54:12 +0000 Subject: [PATCH 1959/3180] Move recipes --- recipes/wip/libs/{qt => }/qt4/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-3d/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-activeqt/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-base/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-charts/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-coap/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-connectivity/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-datavis3d/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-declarative/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-doc/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-full/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-gamepad/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-graphical-effects/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-imageformats/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-knx/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-location/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-lottie/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-mqtt/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-multimedia/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-networkauth/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-opcua/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-purchasing/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-quick3d/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-quickcontrols/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-quickcontrols2/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-quicktimeline/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-remoteobjects/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-script/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-scxml/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-sensors/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-serialbus/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-serialport/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-speech/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-svg/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-tools/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-tqtc/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-translations/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-virtualkeyboard/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-wayland/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-webchannel/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-webengine/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-webglplugin/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-webkit/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-websockets/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-webview/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-x11extras/recipe.toml | 0 recipes/wip/libs/{qt => qt5}/qt5-xmlpatterns/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-3d/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-activeqt/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-base/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-charts/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-connectivity/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-datavis3d/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-declarative/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-doc/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-full/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-graphs/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-grpc/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-httpserver/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-imageformats/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-languageserver/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-location/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-lottie/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-multimedia/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-networkauth/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-positioning/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-qt5compat/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-quick3d/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-quick3dphysics/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-quickeffectmaker/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-quicktimeline/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-remoteobjects/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-scxml/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-sensors/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-serialbus/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-serialport/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-shadertools/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-speech/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-svg/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-tools/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-translations/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-virtualkeyboard/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-wayland/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-webchannel/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-webengine/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-websockets/recipe.toml | 0 recipes/wip/libs/{qt => qt6}/qt6-webview/recipe.toml | 0 87 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/libs/{qt => }/qt4/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-3d/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-activeqt/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-base/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-charts/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-coap/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-connectivity/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-datavis3d/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-declarative/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-doc/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-full/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-gamepad/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-graphical-effects/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-imageformats/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-knx/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-location/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-lottie/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-mqtt/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-multimedia/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-networkauth/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-opcua/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-purchasing/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-quick3d/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-quickcontrols/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-quickcontrols2/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-quicktimeline/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-remoteobjects/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-script/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-scxml/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-sensors/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-serialbus/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-serialport/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-speech/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-svg/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-tools/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-tqtc/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-translations/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-virtualkeyboard/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-wayland/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-webchannel/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-webengine/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-webglplugin/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-webkit/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-websockets/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-webview/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-x11extras/recipe.toml (100%) rename recipes/wip/libs/{qt => qt5}/qt5-xmlpatterns/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-3d/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-activeqt/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-base/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-charts/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-connectivity/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-datavis3d/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-declarative/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-doc/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-full/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-graphs/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-grpc/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-httpserver/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-imageformats/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-languageserver/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-location/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-lottie/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-multimedia/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-networkauth/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-positioning/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-qt5compat/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-quick3d/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-quick3dphysics/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-quickeffectmaker/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-quicktimeline/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-remoteobjects/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-scxml/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-sensors/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-serialbus/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-serialport/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-shadertools/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-speech/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-svg/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-tools/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-translations/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-virtualkeyboard/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-wayland/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-webchannel/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-webengine/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-websockets/recipe.toml (100%) rename recipes/wip/libs/{qt => qt6}/qt6-webview/recipe.toml (100%) diff --git a/recipes/wip/libs/qt/qt4/recipe.toml b/recipes/wip/libs/qt4/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt4/recipe.toml rename to recipes/wip/libs/qt4/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-3d/recipe.toml b/recipes/wip/libs/qt5/qt5-3d/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-3d/recipe.toml rename to recipes/wip/libs/qt5/qt5-3d/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-activeqt/recipe.toml b/recipes/wip/libs/qt5/qt5-activeqt/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-activeqt/recipe.toml rename to recipes/wip/libs/qt5/qt5-activeqt/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-base/recipe.toml b/recipes/wip/libs/qt5/qt5-base/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-base/recipe.toml rename to recipes/wip/libs/qt5/qt5-base/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-charts/recipe.toml b/recipes/wip/libs/qt5/qt5-charts/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-charts/recipe.toml rename to recipes/wip/libs/qt5/qt5-charts/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-coap/recipe.toml b/recipes/wip/libs/qt5/qt5-coap/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-coap/recipe.toml rename to recipes/wip/libs/qt5/qt5-coap/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-connectivity/recipe.toml b/recipes/wip/libs/qt5/qt5-connectivity/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-connectivity/recipe.toml rename to recipes/wip/libs/qt5/qt5-connectivity/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-datavis3d/recipe.toml b/recipes/wip/libs/qt5/qt5-datavis3d/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-datavis3d/recipe.toml rename to recipes/wip/libs/qt5/qt5-datavis3d/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-declarative/recipe.toml b/recipes/wip/libs/qt5/qt5-declarative/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-declarative/recipe.toml rename to recipes/wip/libs/qt5/qt5-declarative/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-doc/recipe.toml b/recipes/wip/libs/qt5/qt5-doc/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-doc/recipe.toml rename to recipes/wip/libs/qt5/qt5-doc/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-full/recipe.toml b/recipes/wip/libs/qt5/qt5-full/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-full/recipe.toml rename to recipes/wip/libs/qt5/qt5-full/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-gamepad/recipe.toml b/recipes/wip/libs/qt5/qt5-gamepad/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-gamepad/recipe.toml rename to recipes/wip/libs/qt5/qt5-gamepad/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-graphical-effects/recipe.toml b/recipes/wip/libs/qt5/qt5-graphical-effects/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-graphical-effects/recipe.toml rename to recipes/wip/libs/qt5/qt5-graphical-effects/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-imageformats/recipe.toml b/recipes/wip/libs/qt5/qt5-imageformats/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-imageformats/recipe.toml rename to recipes/wip/libs/qt5/qt5-imageformats/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-knx/recipe.toml b/recipes/wip/libs/qt5/qt5-knx/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-knx/recipe.toml rename to recipes/wip/libs/qt5/qt5-knx/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-location/recipe.toml b/recipes/wip/libs/qt5/qt5-location/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-location/recipe.toml rename to recipes/wip/libs/qt5/qt5-location/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-lottie/recipe.toml b/recipes/wip/libs/qt5/qt5-lottie/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-lottie/recipe.toml rename to recipes/wip/libs/qt5/qt5-lottie/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-mqtt/recipe.toml b/recipes/wip/libs/qt5/qt5-mqtt/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-mqtt/recipe.toml rename to recipes/wip/libs/qt5/qt5-mqtt/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-multimedia/recipe.toml b/recipes/wip/libs/qt5/qt5-multimedia/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-multimedia/recipe.toml rename to recipes/wip/libs/qt5/qt5-multimedia/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-networkauth/recipe.toml b/recipes/wip/libs/qt5/qt5-networkauth/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-networkauth/recipe.toml rename to recipes/wip/libs/qt5/qt5-networkauth/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-opcua/recipe.toml b/recipes/wip/libs/qt5/qt5-opcua/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-opcua/recipe.toml rename to recipes/wip/libs/qt5/qt5-opcua/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-purchasing/recipe.toml b/recipes/wip/libs/qt5/qt5-purchasing/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-purchasing/recipe.toml rename to recipes/wip/libs/qt5/qt5-purchasing/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-quick3d/recipe.toml b/recipes/wip/libs/qt5/qt5-quick3d/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-quick3d/recipe.toml rename to recipes/wip/libs/qt5/qt5-quick3d/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-quickcontrols/recipe.toml b/recipes/wip/libs/qt5/qt5-quickcontrols/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-quickcontrols/recipe.toml rename to recipes/wip/libs/qt5/qt5-quickcontrols/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-quickcontrols2/recipe.toml b/recipes/wip/libs/qt5/qt5-quickcontrols2/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-quickcontrols2/recipe.toml rename to recipes/wip/libs/qt5/qt5-quickcontrols2/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-quicktimeline/recipe.toml b/recipes/wip/libs/qt5/qt5-quicktimeline/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-quicktimeline/recipe.toml rename to recipes/wip/libs/qt5/qt5-quicktimeline/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-remoteobjects/recipe.toml b/recipes/wip/libs/qt5/qt5-remoteobjects/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-remoteobjects/recipe.toml rename to recipes/wip/libs/qt5/qt5-remoteobjects/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-script/recipe.toml b/recipes/wip/libs/qt5/qt5-script/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-script/recipe.toml rename to recipes/wip/libs/qt5/qt5-script/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-scxml/recipe.toml b/recipes/wip/libs/qt5/qt5-scxml/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-scxml/recipe.toml rename to recipes/wip/libs/qt5/qt5-scxml/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-sensors/recipe.toml b/recipes/wip/libs/qt5/qt5-sensors/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-sensors/recipe.toml rename to recipes/wip/libs/qt5/qt5-sensors/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-serialbus/recipe.toml b/recipes/wip/libs/qt5/qt5-serialbus/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-serialbus/recipe.toml rename to recipes/wip/libs/qt5/qt5-serialbus/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-serialport/recipe.toml b/recipes/wip/libs/qt5/qt5-serialport/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-serialport/recipe.toml rename to recipes/wip/libs/qt5/qt5-serialport/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-speech/recipe.toml b/recipes/wip/libs/qt5/qt5-speech/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-speech/recipe.toml rename to recipes/wip/libs/qt5/qt5-speech/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-svg/recipe.toml b/recipes/wip/libs/qt5/qt5-svg/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-svg/recipe.toml rename to recipes/wip/libs/qt5/qt5-svg/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-tools/recipe.toml b/recipes/wip/libs/qt5/qt5-tools/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-tools/recipe.toml rename to recipes/wip/libs/qt5/qt5-tools/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-tqtc/recipe.toml b/recipes/wip/libs/qt5/qt5-tqtc/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-tqtc/recipe.toml rename to recipes/wip/libs/qt5/qt5-tqtc/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-translations/recipe.toml b/recipes/wip/libs/qt5/qt5-translations/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-translations/recipe.toml rename to recipes/wip/libs/qt5/qt5-translations/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-virtualkeyboard/recipe.toml b/recipes/wip/libs/qt5/qt5-virtualkeyboard/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-virtualkeyboard/recipe.toml rename to recipes/wip/libs/qt5/qt5-virtualkeyboard/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-wayland/recipe.toml b/recipes/wip/libs/qt5/qt5-wayland/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-wayland/recipe.toml rename to recipes/wip/libs/qt5/qt5-wayland/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-webchannel/recipe.toml b/recipes/wip/libs/qt5/qt5-webchannel/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-webchannel/recipe.toml rename to recipes/wip/libs/qt5/qt5-webchannel/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-webengine/recipe.toml b/recipes/wip/libs/qt5/qt5-webengine/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-webengine/recipe.toml rename to recipes/wip/libs/qt5/qt5-webengine/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-webglplugin/recipe.toml b/recipes/wip/libs/qt5/qt5-webglplugin/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-webglplugin/recipe.toml rename to recipes/wip/libs/qt5/qt5-webglplugin/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-webkit/recipe.toml b/recipes/wip/libs/qt5/qt5-webkit/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-webkit/recipe.toml rename to recipes/wip/libs/qt5/qt5-webkit/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-websockets/recipe.toml b/recipes/wip/libs/qt5/qt5-websockets/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-websockets/recipe.toml rename to recipes/wip/libs/qt5/qt5-websockets/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-webview/recipe.toml b/recipes/wip/libs/qt5/qt5-webview/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-webview/recipe.toml rename to recipes/wip/libs/qt5/qt5-webview/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-x11extras/recipe.toml b/recipes/wip/libs/qt5/qt5-x11extras/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-x11extras/recipe.toml rename to recipes/wip/libs/qt5/qt5-x11extras/recipe.toml diff --git a/recipes/wip/libs/qt/qt5-xmlpatterns/recipe.toml b/recipes/wip/libs/qt5/qt5-xmlpatterns/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt5-xmlpatterns/recipe.toml rename to recipes/wip/libs/qt5/qt5-xmlpatterns/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-3d/recipe.toml b/recipes/wip/libs/qt6/qt6-3d/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-3d/recipe.toml rename to recipes/wip/libs/qt6/qt6-3d/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-activeqt/recipe.toml b/recipes/wip/libs/qt6/qt6-activeqt/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-activeqt/recipe.toml rename to recipes/wip/libs/qt6/qt6-activeqt/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-base/recipe.toml b/recipes/wip/libs/qt6/qt6-base/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-base/recipe.toml rename to recipes/wip/libs/qt6/qt6-base/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-charts/recipe.toml b/recipes/wip/libs/qt6/qt6-charts/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-charts/recipe.toml rename to recipes/wip/libs/qt6/qt6-charts/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-connectivity/recipe.toml b/recipes/wip/libs/qt6/qt6-connectivity/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-connectivity/recipe.toml rename to recipes/wip/libs/qt6/qt6-connectivity/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-datavis3d/recipe.toml b/recipes/wip/libs/qt6/qt6-datavis3d/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-datavis3d/recipe.toml rename to recipes/wip/libs/qt6/qt6-datavis3d/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-declarative/recipe.toml b/recipes/wip/libs/qt6/qt6-declarative/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-declarative/recipe.toml rename to recipes/wip/libs/qt6/qt6-declarative/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-doc/recipe.toml b/recipes/wip/libs/qt6/qt6-doc/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-doc/recipe.toml rename to recipes/wip/libs/qt6/qt6-doc/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-full/recipe.toml b/recipes/wip/libs/qt6/qt6-full/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-full/recipe.toml rename to recipes/wip/libs/qt6/qt6-full/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-graphs/recipe.toml b/recipes/wip/libs/qt6/qt6-graphs/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-graphs/recipe.toml rename to recipes/wip/libs/qt6/qt6-graphs/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-grpc/recipe.toml b/recipes/wip/libs/qt6/qt6-grpc/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-grpc/recipe.toml rename to recipes/wip/libs/qt6/qt6-grpc/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-httpserver/recipe.toml b/recipes/wip/libs/qt6/qt6-httpserver/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-httpserver/recipe.toml rename to recipes/wip/libs/qt6/qt6-httpserver/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-imageformats/recipe.toml b/recipes/wip/libs/qt6/qt6-imageformats/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-imageformats/recipe.toml rename to recipes/wip/libs/qt6/qt6-imageformats/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-languageserver/recipe.toml b/recipes/wip/libs/qt6/qt6-languageserver/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-languageserver/recipe.toml rename to recipes/wip/libs/qt6/qt6-languageserver/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-location/recipe.toml b/recipes/wip/libs/qt6/qt6-location/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-location/recipe.toml rename to recipes/wip/libs/qt6/qt6-location/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-lottie/recipe.toml b/recipes/wip/libs/qt6/qt6-lottie/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-lottie/recipe.toml rename to recipes/wip/libs/qt6/qt6-lottie/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-multimedia/recipe.toml b/recipes/wip/libs/qt6/qt6-multimedia/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-multimedia/recipe.toml rename to recipes/wip/libs/qt6/qt6-multimedia/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-networkauth/recipe.toml b/recipes/wip/libs/qt6/qt6-networkauth/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-networkauth/recipe.toml rename to recipes/wip/libs/qt6/qt6-networkauth/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-positioning/recipe.toml b/recipes/wip/libs/qt6/qt6-positioning/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-positioning/recipe.toml rename to recipes/wip/libs/qt6/qt6-positioning/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-qt5compat/recipe.toml b/recipes/wip/libs/qt6/qt6-qt5compat/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-qt5compat/recipe.toml rename to recipes/wip/libs/qt6/qt6-qt5compat/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-quick3d/recipe.toml b/recipes/wip/libs/qt6/qt6-quick3d/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-quick3d/recipe.toml rename to recipes/wip/libs/qt6/qt6-quick3d/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-quick3dphysics/recipe.toml b/recipes/wip/libs/qt6/qt6-quick3dphysics/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-quick3dphysics/recipe.toml rename to recipes/wip/libs/qt6/qt6-quick3dphysics/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-quickeffectmaker/recipe.toml b/recipes/wip/libs/qt6/qt6-quickeffectmaker/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-quickeffectmaker/recipe.toml rename to recipes/wip/libs/qt6/qt6-quickeffectmaker/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-quicktimeline/recipe.toml b/recipes/wip/libs/qt6/qt6-quicktimeline/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-quicktimeline/recipe.toml rename to recipes/wip/libs/qt6/qt6-quicktimeline/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-remoteobjects/recipe.toml b/recipes/wip/libs/qt6/qt6-remoteobjects/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-remoteobjects/recipe.toml rename to recipes/wip/libs/qt6/qt6-remoteobjects/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-scxml/recipe.toml b/recipes/wip/libs/qt6/qt6-scxml/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-scxml/recipe.toml rename to recipes/wip/libs/qt6/qt6-scxml/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-sensors/recipe.toml b/recipes/wip/libs/qt6/qt6-sensors/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-sensors/recipe.toml rename to recipes/wip/libs/qt6/qt6-sensors/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-serialbus/recipe.toml b/recipes/wip/libs/qt6/qt6-serialbus/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-serialbus/recipe.toml rename to recipes/wip/libs/qt6/qt6-serialbus/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-serialport/recipe.toml b/recipes/wip/libs/qt6/qt6-serialport/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-serialport/recipe.toml rename to recipes/wip/libs/qt6/qt6-serialport/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-shadertools/recipe.toml b/recipes/wip/libs/qt6/qt6-shadertools/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-shadertools/recipe.toml rename to recipes/wip/libs/qt6/qt6-shadertools/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-speech/recipe.toml b/recipes/wip/libs/qt6/qt6-speech/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-speech/recipe.toml rename to recipes/wip/libs/qt6/qt6-speech/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-svg/recipe.toml b/recipes/wip/libs/qt6/qt6-svg/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-svg/recipe.toml rename to recipes/wip/libs/qt6/qt6-svg/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-tools/recipe.toml b/recipes/wip/libs/qt6/qt6-tools/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-tools/recipe.toml rename to recipes/wip/libs/qt6/qt6-tools/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-translations/recipe.toml b/recipes/wip/libs/qt6/qt6-translations/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-translations/recipe.toml rename to recipes/wip/libs/qt6/qt6-translations/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-virtualkeyboard/recipe.toml b/recipes/wip/libs/qt6/qt6-virtualkeyboard/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-virtualkeyboard/recipe.toml rename to recipes/wip/libs/qt6/qt6-virtualkeyboard/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-wayland/recipe.toml b/recipes/wip/libs/qt6/qt6-wayland/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-wayland/recipe.toml rename to recipes/wip/libs/qt6/qt6-wayland/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-webchannel/recipe.toml b/recipes/wip/libs/qt6/qt6-webchannel/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-webchannel/recipe.toml rename to recipes/wip/libs/qt6/qt6-webchannel/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-webengine/recipe.toml b/recipes/wip/libs/qt6/qt6-webengine/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-webengine/recipe.toml rename to recipes/wip/libs/qt6/qt6-webengine/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-websockets/recipe.toml b/recipes/wip/libs/qt6/qt6-websockets/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-websockets/recipe.toml rename to recipes/wip/libs/qt6/qt6-websockets/recipe.toml diff --git a/recipes/wip/libs/qt/qt6-webview/recipe.toml b/recipes/wip/libs/qt6/qt6-webview/recipe.toml similarity index 100% rename from recipes/wip/libs/qt/qt6-webview/recipe.toml rename to recipes/wip/libs/qt6/qt6-webview/recipe.toml From ae81c03df2244751612f2c7c170a0c86bc289f3c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 1 Jul 2024 03:52:32 +0000 Subject: [PATCH 1960/3180] Add the CMake script on many recipes --- recipes/wip/sound/audacity/recipe.toml | 17 ++++++++++++++++- recipes/wip/sound/odin2/recipe.toml | 17 ++++++++++++++++- .../tools/graphics/other/appleseed/recipe.toml | 17 ++++++++++++++++- .../wip/tools/graphics/other/cmark/recipe.toml | 17 ++++++++++++++++- .../tools/graphics/other/darktable/recipe.toml | 17 ++++++++++++++++- .../wip/tools/graphics/other/embree/recipe.toml | 17 ++++++++++++++++- .../graphics/other/luxcorerender/recipe.toml | 17 ++++++++++++++++- .../graphics/other/ospray-studio/recipe.toml | 17 ++++++++++++++++- .../wip/tools/graphics/other/ospray/recipe.toml | 17 ++++++++++++++++- .../tools/graphics/other/paraview/recipe.toml | 17 ++++++++++++++++- .../graphics/other/rawtherapee/recipe.toml | 17 ++++++++++++++++- .../tools/graphics/other/toybrot/recipe.toml | 17 ++++++++++++++++- .../other/tungsten-renderer/recipe.toml | 17 ++++++++++++++++- recipes/wip/tools/math/primesieve/recipe.toml | 17 ++++++++++++++++- .../wip/tools/net/other/srsran-4g/recipe.toml | 17 ++++++++++++++++- .../tools/net/other/srsran-project/recipe.toml | 17 ++++++++++++++++- .../wip/tools/other/astc-encoder/recipe.toml | 17 ++++++++++++++++- recipes/wip/tools/other/astyle/recipe.toml | 17 ++++++++++++++++- recipes/wip/tools/other/converseen/recipe.toml | 17 ++++++++++++++++- recipes/wip/tools/other/cpu-x/recipe.toml | 15 ++++++++++++++- recipes/wip/tools/other/flameshot/recipe.toml | 17 ++++++++++++++++- recipes/wip/tools/other/glsl-viewer/recipe.toml | 15 ++++++++++++++- recipes/wip/tools/other/gnu-radio/recipe.toml | 17 ++++++++++++++++- recipes/wip/tools/other/obs-studio/recipe.toml | 17 ++++++++++++++++- recipes/wip/tools/other/okteta/recipe.toml | 17 ++++++++++++++++- recipes/wip/tools/other/remmina/recipe.toml | 17 ++++++++++++++++- recipes/wip/tools/other/taskserver/recipe.toml | 17 ++++++++++++++++- recipes/wip/tools/other/taskwarrior/recipe.toml | 17 ++++++++++++++++- .../wip/tools/science/celestia-data/recipe.toml | 17 ++++++++++++++++- recipes/wip/tools/science/gromacs/recipe.toml | 17 ++++++++++++++++- recipes/wip/tools/science/openspace/recipe.toml | 17 ++++++++++++++++- recipes/wip/tools/science/qmcpack/recipe.toml | 17 ++++++++++++++++- recipes/wip/video/editors/kdenlive/recipe.toml | 17 ++++++++++++++++- recipes/wip/wayland/waylandpp/recipe.toml | 17 ++++++++++++++++- 34 files changed, 540 insertions(+), 34 deletions(-) diff --git a/recipes/wip/sound/audacity/recipe.toml b/recipes/wip/sound/audacity/recipe.toml index 9aaca635..c444edd6 100644 --- a/recipes/wip/sound/audacity/recipe.toml +++ b/recipes/wip/sound/audacity/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/audacity/audacity/blob/master/BUILDING.md +#TODO maybe incomplete script, see https://github.com/audacity/audacity/blob/master/BUILDING.md #TODO use the GTK2 or wxWidgets frontend? #TODO probably need audio server patching [source] @@ -9,3 +9,18 @@ dependencies = [ "gtk2", "libuuid", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/sound/odin2/recipe.toml b/recipes/wip/sound/odin2/recipe.toml index 460de896..c32acf7b 100644 --- a/recipes/wip/sound/odin2/recipe.toml +++ b/recipes/wip/sound/odin2/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/TheWaveWarden/odin2#all-platforms +#TODO maybe incomplete script, see https://github.com/TheWaveWarden/odin2#all-platforms #TODO port to orbital [source] git = "https://github.com/TheWaveWarden/odin2" @@ -9,3 +9,18 @@ dependencies = [ "curl", "webkitgtk3", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/graphics/other/appleseed/recipe.toml b/recipes/wip/tools/graphics/other/appleseed/recipe.toml index 22bf55da..45a947df 100644 --- a/recipes/wip/tools/graphics/other/appleseed/recipe.toml +++ b/recipes/wip/tools/graphics/other/appleseed/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/appleseedhq/appleseed/wiki/Building-appleseed-on-Linux +#TODO maybe incomplete script, see https://github.com/appleseedhq/appleseed/wiki/Building-appleseed-on-Linux [source] git = "https://github.com/appleseedhq/appleseed" rev = "015adb503af58cb80103e0c3ddeefc20d99d204f" @@ -9,3 +9,18 @@ dependencies = [ "qt5-base", "libnsl", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/graphics/other/cmark/recipe.toml b/recipes/wip/tools/graphics/other/cmark/recipe.toml index 59789b0b..0bb76c0b 100644 --- a/recipes/wip/tools/graphics/other/cmark/recipe.toml +++ b/recipes/wip/tools/graphics/other/cmark/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://github.com/commonmark/cmark#installing +#TODO maybe incomplete script, see https://github.com/commonmark/cmark#installing [source] git = "https://github.com/commonmark/cmark" rev = "5ba25ff40eba44c811f79ab6a792baf945b8307c" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/graphics/other/darktable/recipe.toml b/recipes/wip/tools/graphics/other/darktable/recipe.toml index b25c9628..9b0f4bbd 100644 --- a/recipes/wip/tools/graphics/other/darktable/recipe.toml +++ b/recipes/wip/tools/graphics/other/darktable/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/darktable-org/darktable?tab=readme-ov-file#linux +#TODO maybe incomplete script, see https://github.com/darktable-org/darktable?tab=readme-ov-file#linux # dependencies - https://github.com/darktable-org/darktable?tab=readme-ov-file#dependencies [source] tar = "https://github.com/darktable-org/darktable/releases/download/release-4.8.0/darktable-4.8.0.tar.xz" @@ -17,3 +17,18 @@ dependencies = [ "libwebp", "libgphoto2", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/graphics/other/embree/recipe.toml b/recipes/wip/tools/graphics/other/embree/recipe.toml index dbfb106b..0c8bfcf4 100644 --- a/recipes/wip/tools/graphics/other/embree/recipe.toml +++ b/recipes/wip/tools/graphics/other/embree/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/embree/embree#linux-and-macos +#TODO maybe incomplete script, see https://github.com/embree/embree#linux-and-macos [source] git = "https://github.com/embree/embree" rev = "be0accfd0b246e2b03355b8ee7710a22c1b49240" @@ -8,3 +8,18 @@ dependencies = [ "glfw", "onetbb", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/graphics/other/luxcorerender/recipe.toml b/recipes/wip/tools/graphics/other/luxcorerender/recipe.toml index dd3d10d6..d4753ffb 100644 --- a/recipes/wip/tools/graphics/other/luxcorerender/recipe.toml +++ b/recipes/wip/tools/graphics/other/luxcorerender/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://wiki.luxcorerender.org/Compiling_LuxCore +#TODO maybe incomplete script, see https://wiki.luxcorerender.org/Compiling_LuxCore #TODO probably missing dependencies [source] git = "https://github.com/LuxCoreRender/LuxCore" @@ -15,3 +15,18 @@ dependencies = [ "openimageio", "openexr", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/graphics/other/ospray-studio/recipe.toml b/recipes/wip/tools/graphics/other/ospray-studio/recipe.toml index b3c81215..573193cd 100644 --- a/recipes/wip/tools/graphics/other/ospray-studio/recipe.toml +++ b/recipes/wip/tools/graphics/other/ospray-studio/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/ospray/ospray_studio#standard-cmake-build +#TODO maybe incomplete script, see https://github.com/ospray/ospray_studio#standard-cmake-build [source] git = "https://github.com/ospray/ospray_studio" rev = "d2c83a67c841f1329f47cf9648a56b3dacbcdcaa" @@ -12,3 +12,18 @@ dependencies = [ "glfw", "open-image-denoise", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/graphics/other/ospray/recipe.toml b/recipes/wip/tools/graphics/other/ospray/recipe.toml index 0003178a..3a57813b 100644 --- a/recipes/wip/tools/graphics/other/ospray/recipe.toml +++ b/recipes/wip/tools/graphics/other/ospray/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/ospray/OSPRay#building-and-finding-ospray +#TODO maybe incomplete script, see https://github.com/ospray/OSPRay#building-and-finding-ospray [source] git = "https://github.com/ospray/OSPRay" rev = "66fa8108485a8a92ff31ad2e06081bbaf391bc26" @@ -12,3 +12,18 @@ dependencies = [ "openvkl", "open-image-denoise", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/graphics/other/paraview/recipe.toml b/recipes/wip/tools/graphics/other/paraview/recipe.toml index 0d1651a5..013791d3 100644 --- a/recipes/wip/tools/graphics/other/paraview/recipe.toml +++ b/recipes/wip/tools/graphics/other/paraview/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://kitware.github.io/paraviewweb/docs/configure_and_build_pvweb.html +#TODO maybe incomplete script, see https://kitware.github.io/paraviewweb/docs/configure_and_build_pvweb.html # build instructions (if the above doesn't work) - https://github.com/Kitware/ParaView/blob/master/Documentation/dev/build.md [source] tar = "https://www.paraview.org/paraview-downloads/download.php?submit=Download&version=v5.11&type=source&os=Sources&downloadFile=ParaView-v5.11.2.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/graphics/other/rawtherapee/recipe.toml b/recipes/wip/tools/graphics/other/rawtherapee/recipe.toml index 6e901319..4c8a04da 100644 --- a/recipes/wip/tools/graphics/other/rawtherapee/recipe.toml +++ b/recipes/wip/tools/graphics/other/rawtherapee/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://rawpedia.rawtherapee.com/Linux#Compile_RawTherapee +#TODO maybe incomplete script, see https://rawpedia.rawtherapee.com/Linux#Compile_RawTherapee #TODO missing dependencies, see https://rawpedia.rawtherapee.com/Linux#Dependencies [source] tar = "https://rawtherapee.com/shared/source/rawtherapee-5.9.tar.xz" @@ -19,3 +19,18 @@ dependencies = [ "libtiff", "zlib", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/graphics/other/toybrot/recipe.toml b/recipes/wip/tools/graphics/other/toybrot/recipe.toml index fdb5525e..cee45b81 100644 --- a/recipes/wip/tools/graphics/other/toybrot/recipe.toml +++ b/recipes/wip/tools/graphics/other/toybrot/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://gitlab.com/VileLasagna/toyBrot#building-toybrot +#TODO maybe incomplete script, see https://gitlab.com/VileLasagna/toyBrot#building-toybrot [source] git = "https://gitlab.com/VileLasagna/toyBrot" [build] @@ -7,3 +7,18 @@ dependencies = [ "sdl2", "libpng", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/graphics/other/tungsten-renderer/recipe.toml b/recipes/wip/tools/graphics/other/tungsten-renderer/recipe.toml index 90dae7c3..6a1069dd 100644 --- a/recipes/wip/tools/graphics/other/tungsten-renderer/recipe.toml +++ b/recipes/wip/tools/graphics/other/tungsten-renderer/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, see https://github.com/tunabrain/tungsten#compilation +#TODO maybe incomplete script, see https://github.com/tunabrain/tungsten#compilation [source] git = "https://github.com/tunabrain/tungsten" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/math/primesieve/recipe.toml b/recipes/wip/tools/math/primesieve/recipe.toml index 566e94a2..b94f4301 100644 --- a/recipes/wip/tools/math/primesieve/recipe.toml +++ b/recipes/wip/tools/math/primesieve/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://github.com/kimwalisch/primesieve/blob/master/doc/BUILD.md +#TODO maybe incomplete script, see https://github.com/kimwalisch/primesieve/blob/master/doc/BUILD.md [source] git = "https://github.com/kimwalisch/primesieve" rev = "f3114488ddded8edf2c201e31ad308ed9e6a9f78" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/net/other/srsran-4g/recipe.toml b/recipes/wip/tools/net/other/srsran-4g/recipe.toml index 841b4bb8..be0d308f 100644 --- a/recipes/wip/tools/net/other/srsran-4g/recipe.toml +++ b/recipes/wip/tools/net/other/srsran-4g/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://docs.srsran.com/projects/4g/en/latest/general/source/1_installation.html#installation-from-source +#TODO maybe incomplete script, see https://docs.srsran.com/projects/4g/en/latest/general/source/1_installation.html#installation-from-source [source] git = "https://github.com/srsran/srsRAN_4G" rev = "eea87b1d893ae58e0b08bc381730c502024ae71f" @@ -8,3 +8,18 @@ dependencies = [ "fftw", "mbedtls", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/net/other/srsran-project/recipe.toml b/recipes/wip/tools/net/other/srsran-project/recipe.toml index ee445368..af76902d 100644 --- a/recipes/wip/tools/net/other/srsran-project/recipe.toml +++ b/recipes/wip/tools/net/other/srsran-project/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/srsran/srsRAN_Project#build-instructions +#TODO maybe incomplete script, see https://github.com/srsran/srsRAN_Project#build-instructions #TODO missing dependencies [source] git = "https://github.com/srsran/srsRAN_Project" @@ -9,3 +9,18 @@ dependencies = [ "fftw", "mbedtls", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/other/astc-encoder/recipe.toml b/recipes/wip/tools/other/astc-encoder/recipe.toml index 595155b6..b6b427d5 100644 --- a/recipes/wip/tools/other/astc-encoder/recipe.toml +++ b/recipes/wip/tools/other/astc-encoder/recipe.toml @@ -1,6 +1,21 @@ -#TODO missing script for CMake, see https://github.com/ARM-software/astc-encoder/blob/main/Docs/Building.md#macos-and-linux-using-make +#TODO maybe incomplete script, see https://github.com/ARM-software/astc-encoder/blob/main/Docs/Building.md#macos-and-linux-using-make [source] git = "https://github.com/ARM-software/astc-encoder" rev = "aeece2f609db959d1c5e43e4f00bd177ea130575" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/other/astyle/recipe.toml b/recipes/wip/tools/other/astyle/recipe.toml index 8b8db718..6d10b413 100644 --- a/recipes/wip/tools/other/astyle/recipe.toml +++ b/recipes/wip/tools/other/astyle/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, see https://astyle.sourceforge.net/install.html +#TODO maybe incomplete script, see https://astyle.sourceforge.net/install.html [source] tar = "https://sourceforge.net/projects/astyle/files/astyle/astyle%203.4/astyle-3.4.10.tar.bz2/download" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/other/converseen/recipe.toml b/recipes/wip/tools/other/converseen/recipe.toml index 0992b8cd..bb11b110 100644 --- a/recipes/wip/tools/other/converseen/recipe.toml +++ b/recipes/wip/tools/other/converseen/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/Faster3ck/Converseen/blob/main/INSTALL.md#install-converseen-using-qt6 +#TODO maybe incomplete script, see https://github.com/Faster3ck/Converseen/blob/main/INSTALL.md#install-converseen-using-qt6 [source] git = "https://github.com/Faster3ck/Converseen" rev = "9b2821b5ed6673a7abebbe4ee42f4718ab366485" @@ -7,3 +7,18 @@ template = "custom" dependencies = [ "qt6-base", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/other/cpu-x/recipe.toml b/recipes/wip/tools/other/cpu-x/recipe.toml index cb21b5c2..c6c51291 100644 --- a/recipes/wip/tools/other/cpu-x/recipe.toml +++ b/recipes/wip/tools/other/cpu-x/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/TheTumultuousUnicornOfDarkness/CPU-X/wiki/manual-build#build-and-install-cpu-x +#TODO maybe incomplete script, see https://github.com/TheTumultuousUnicornOfDarkness/CPU-X/wiki/manual-build#build-and-install-cpu-x [source] git = "https://github.com/TheTumultuousUnicornOfDarkness/CPU-X" rev = "b957c031a2eab2c6c88275c4616a6a5e8c8e7670" @@ -15,4 +15,17 @@ dependencies = [ ] script = """ export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure """ diff --git a/recipes/wip/tools/other/flameshot/recipe.toml b/recipes/wip/tools/other/flameshot/recipe.toml index 7c64ec64..3275faa5 100644 --- a/recipes/wip/tools/other/flameshot/recipe.toml +++ b/recipes/wip/tools/other/flameshot/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://flameshot.org/docs/installation/source-code/#compilation +#TODO maybe incomplete script, see https://flameshot.org/docs/installation/source-code/#compilation [source] git = "https://github.com/flameshot-org/flameshot" rev = "70be63d478a271da549597d69bd4868607c0a395" @@ -9,3 +9,18 @@ dependencies = [ "qt5-tools", "qt5-svg", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/other/glsl-viewer/recipe.toml b/recipes/wip/tools/other/glsl-viewer/recipe.toml index a844dbfe..438c2a1f 100644 --- a/recipes/wip/tools/other/glsl-viewer/recipe.toml +++ b/recipes/wip/tools/other/glsl-viewer/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for cmake, see https://github.com/patriciogonzalezvivo/glslViewer/wiki/Compile-on-linux#3-compile +#TODO maybe incomplete script, see https://github.com/patriciogonzalezvivo/glslViewer/wiki/Compile-on-linux#3-compile #TODO port to orbital [source] git = "https://github.com/patriciogonzalezvivo/glslViewer" @@ -14,4 +14,17 @@ dependencies = [ ] script = """ export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure """ diff --git a/recipes/wip/tools/other/gnu-radio/recipe.toml b/recipes/wip/tools/other/gnu-radio/recipe.toml index be5236fc..5d9115ea 100644 --- a/recipes/wip/tools/other/gnu-radio/recipe.toml +++ b/recipes/wip/tools/other/gnu-radio/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://wiki.gnuradio.org/index.php?title=LinuxInstall#For_GNU_Radio_3.10,_3.9,_and_Main_Branch +#TODO maybe incomplete script, see https://wiki.gnuradio.org/index.php?title=LinuxInstall#For_GNU_Radio_3.10,_3.9,_and_Main_Branch #TODO probably missing dependencies, see https://wiki.gnuradio.org/index.php?title=UbuntuInstall#Install_Dependencies [source] git = "https://github.com/gnuradio/gnuradio" @@ -15,3 +15,18 @@ dependencies = [ "libusb", "libevdev", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/other/obs-studio/recipe.toml b/recipes/wip/tools/other/obs-studio/recipe.toml index accac168..04eb475d 100644 --- a/recipes/wip/tools/other/obs-studio/recipe.toml +++ b/recipes/wip/tools/other/obs-studio/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://github.com/obsproject/obs-studio/wiki/Building-OBS-Studio +#TODO maybe incomplete script, see https://github.com/obsproject/obs-studio/wiki/Building-OBS-Studio #TODO make all dependencies work #TODO maybe missing dependencies [source] @@ -30,3 +30,18 @@ dependencies = [ "libsrt", "libwebsocket++", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/other/okteta/recipe.toml b/recipes/wip/tools/other/okteta/recipe.toml index f8a23a85..c3ad622a 100644 --- a/recipes/wip/tools/other/okteta/recipe.toml +++ b/recipes/wip/tools/other/okteta/recipe.toml @@ -1,7 +1,22 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions #TODO missing dependencies [source] git = "https://invent.kde.org/utilities/okteta" rev = "fb6150f2dce791c96b95a12ee0c74942c1774c05" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/other/remmina/recipe.toml b/recipes/wip/tools/other/remmina/recipe.toml index 2adb757e..9f701889 100644 --- a/recipes/wip/tools/other/remmina/recipe.toml +++ b/recipes/wip/tools/other/remmina/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://gitlab.com/Remmina/Remmina/-/wikis/Compilation/Compilation-guide +#TODO maybe incomplete script, see https://gitlab.com/Remmina/Remmina/-/wikis/Compilation/Compilation-guide #TODO dependencies need a cleanup (outdated and up-to-date information is mixed in the build instructions) [source] git = "https://gitlab.com/Remmina/Remmina" @@ -19,3 +19,18 @@ dependencies = [ "libsodium", "pcre", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/other/taskserver/recipe.toml b/recipes/wip/tools/other/taskserver/recipe.toml index 5b82fbe1..c57cb228 100644 --- a/recipes/wip/tools/other/taskserver/recipe.toml +++ b/recipes/wip/tools/other/taskserver/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, see https://taskwarrior.org/download/#quick-setup +#TODO maybe incomplete script, see https://taskwarrior.org/download/#quick-setup [source] tar = "https://github.com/GothenburgBitFactory/taskserver/releases/download/v1.1.0/taskd-1.1.0.tar.gz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/other/taskwarrior/recipe.toml b/recipes/wip/tools/other/taskwarrior/recipe.toml index 354fefe6..5599aef5 100644 --- a/recipes/wip/tools/other/taskwarrior/recipe.toml +++ b/recipes/wip/tools/other/taskwarrior/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, see https://taskwarrior.org/download/#quick-setup +#TODO maybe incomplete script, see https://taskwarrior.org/download/#quick-setup [source] tar = "https://github.com/GothenburgBitFactory/taskwarrior/releases/download/v2.6.2/task-2.6.2.tar.gz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/science/celestia-data/recipe.toml b/recipes/wip/tools/science/celestia-data/recipe.toml index a3175e28..dc195256 100644 --- a/recipes/wip/tools/science/celestia-data/recipe.toml +++ b/recipes/wip/tools/science/celestia-data/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, see https://github.com/CelestiaProject/Celestia/blob/master/INSTALL.md#installing-the-content +#TODO maybe incomplete script, see https://github.com/CelestiaProject/Celestia/blob/master/INSTALL.md#installing-the-content [source] git = "https://github.com/CelestiaProject/CelestiaContent" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/science/gromacs/recipe.toml b/recipes/wip/tools/science/gromacs/recipe.toml index d4a4009f..c30f71ce 100644 --- a/recipes/wip/tools/science/gromacs/recipe.toml +++ b/recipes/wip/tools/science/gromacs/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, see https://manual.gromacs.org/current/install-guide/index.html +#TODO maybe incomplete script, see https://manual.gromacs.org/current/install-guide/index.html [source] tar = "https://ftp.gromacs.org/gromacs/gromacs-2023.3.tar.gz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/science/openspace/recipe.toml b/recipes/wip/tools/science/openspace/recipe.toml index 092c47d2..22de374c 100644 --- a/recipes/wip/tools/science/openspace/recipe.toml +++ b/recipes/wip/tools/science/openspace/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://docs.openspaceproject.com/en/latest/dev/compiling/index.html# +#TODO maybe incomplete script, see https://docs.openspaceproject.com/en/latest/dev/compiling/index.html# [source] git = "https://github.com/OpenSpace/OpenSpace" rev = "b3681167a3b95d49ac7aa7d06b07cbd88c687e9a" @@ -8,3 +8,18 @@ dependencies = [ "qt6-base", "libgdal", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/tools/science/qmcpack/recipe.toml b/recipes/wip/tools/science/qmcpack/recipe.toml index 6e70f0cd..72b4aa82 100644 --- a/recipes/wip/tools/science/qmcpack/recipe.toml +++ b/recipes/wip/tools/science/qmcpack/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://qmcpack.readthedocs.io/en/develop/installation.html#building-with-cmake +#TODO maybe incomplete script, see https://qmcpack.readthedocs.io/en/develop/installation.html#building-with-cmake #TODO probably missing dependencies [source] git = "https://github.com/QMCPACK/qmcpack" @@ -13,3 +13,18 @@ dependencies = [ "boost", "fftw", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/video/editors/kdenlive/recipe.toml b/recipes/wip/video/editors/kdenlive/recipe.toml index e21eb512..5ac7fa15 100644 --- a/recipes/wip/video/editors/kdenlive/recipe.toml +++ b/recipes/wip/video/editors/kdenlive/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for CMake, see https://invent.kde.org/multimedia/kdenlive/-/blob/master/dev-docs/build.md#build-and-install-the-projects +#TODO maybe incomplete script, see https://invent.kde.org/multimedia/kdenlive/-/blob/master/dev-docs/build.md#build-and-install-the-projects [source] git = "https://invent.kde.org/multimedia/kdenlive" rev = "da6ecdfbba7aadf88572ac5f87aeb88ff2d80f57" @@ -37,3 +37,18 @@ dependencies = [ "kf5-xmlgui", "breeze-icons", ] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/wayland/waylandpp/recipe.toml b/recipes/wip/wayland/waylandpp/recipe.toml index 512fc99f..7cf96db8 100644 --- a/recipes/wip/wayland/waylandpp/recipe.toml +++ b/recipes/wip/wayland/waylandpp/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, see https://github.com/NilsBrause/waylandpp#building +#TODO maybe incomplete script, see https://github.com/NilsBrause/waylandpp#building [source] git = "https://github.com/NilsBrause/waylandpp" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" From b7ed5f6e9687a9fc5d037621b78043d9b1958562 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 1 Jul 2024 03:53:45 +0000 Subject: [PATCH 1961/3180] Rename a category --- recipes/wip/libs/{kde => kde5}/kf5-activities-stats/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-activities/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-apidox/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-archive/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-attica/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-auth/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-baloo/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-bookmarks/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-calendarcore/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-cmake-modules/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-cmutils/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-codecs/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-completion/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-config/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-configwidgets/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-contacts/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-coreaddons/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-crash/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-dav/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-dbusaddons/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-declarative/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-dnssd/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-doctools/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-emoticons/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-filemetadata/recipe.toml | 0 .../wip/libs/{kde => kde5}/kf5-frameworkintegration/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-globalaccel/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-guiaddons/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-holidays/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-i18n/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-iconthemes/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-idletime/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-init/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-io/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-itemmodels/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-itemviews/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-jobwidgets/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-kded/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-kdesu/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-kirigami/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-modem-manager/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-networkmanager/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-newstuff/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-notifications/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-notifyconfig/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-package/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-parts/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-people/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-plasma-framework/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-plotting/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-prison/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-pty/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-purpose/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-qqc2-desktop-style/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-quickcharts/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-runner/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-service/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-solid/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-sonnet/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-syndication/recipe.toml | 0 .../wip/libs/{kde => kde5}/kf5-syntax-highlighting/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-sysguard/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-texteditor/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-textwidgets/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-threadweaver/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-unitconversion/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-wayland/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-widgetaddons/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-windowsystem/recipe.toml | 0 recipes/wip/libs/{kde => kde5}/kf5-xmlgui/recipe.toml | 0 70 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/libs/{kde => kde5}/kf5-activities-stats/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-activities/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-apidox/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-archive/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-attica/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-auth/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-baloo/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-bookmarks/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-calendarcore/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-cmake-modules/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-cmutils/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-codecs/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-completion/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-config/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-configwidgets/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-contacts/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-coreaddons/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-crash/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-dav/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-dbusaddons/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-declarative/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-dnssd/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-doctools/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-emoticons/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-filemetadata/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-frameworkintegration/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-globalaccel/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-guiaddons/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-holidays/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-i18n/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-iconthemes/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-idletime/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-init/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-io/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-itemmodels/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-itemviews/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-jobwidgets/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-kded/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-kdesu/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-kirigami/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-modem-manager/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-networkmanager/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-newstuff/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-notifications/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-notifyconfig/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-package/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-parts/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-people/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-plasma-framework/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-plotting/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-prison/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-pty/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-purpose/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-qqc2-desktop-style/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-quickcharts/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-runner/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-service/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-solid/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-sonnet/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-syndication/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-syntax-highlighting/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-sysguard/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-texteditor/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-textwidgets/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-threadweaver/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-unitconversion/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-wayland/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-widgetaddons/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-windowsystem/recipe.toml (100%) rename recipes/wip/libs/{kde => kde5}/kf5-xmlgui/recipe.toml (100%) diff --git a/recipes/wip/libs/kde/kf5-activities-stats/recipe.toml b/recipes/wip/libs/kde5/kf5-activities-stats/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-activities-stats/recipe.toml rename to recipes/wip/libs/kde5/kf5-activities-stats/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-activities/recipe.toml b/recipes/wip/libs/kde5/kf5-activities/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-activities/recipe.toml rename to recipes/wip/libs/kde5/kf5-activities/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-apidox/recipe.toml b/recipes/wip/libs/kde5/kf5-apidox/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-apidox/recipe.toml rename to recipes/wip/libs/kde5/kf5-apidox/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-archive/recipe.toml b/recipes/wip/libs/kde5/kf5-archive/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-archive/recipe.toml rename to recipes/wip/libs/kde5/kf5-archive/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-attica/recipe.toml b/recipes/wip/libs/kde5/kf5-attica/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-attica/recipe.toml rename to recipes/wip/libs/kde5/kf5-attica/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-auth/recipe.toml b/recipes/wip/libs/kde5/kf5-auth/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-auth/recipe.toml rename to recipes/wip/libs/kde5/kf5-auth/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-baloo/recipe.toml b/recipes/wip/libs/kde5/kf5-baloo/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-baloo/recipe.toml rename to recipes/wip/libs/kde5/kf5-baloo/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-bookmarks/recipe.toml b/recipes/wip/libs/kde5/kf5-bookmarks/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-bookmarks/recipe.toml rename to recipes/wip/libs/kde5/kf5-bookmarks/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-calendarcore/recipe.toml b/recipes/wip/libs/kde5/kf5-calendarcore/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-calendarcore/recipe.toml rename to recipes/wip/libs/kde5/kf5-calendarcore/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-cmake-modules/recipe.toml b/recipes/wip/libs/kde5/kf5-cmake-modules/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-cmake-modules/recipe.toml rename to recipes/wip/libs/kde5/kf5-cmake-modules/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-cmutils/recipe.toml b/recipes/wip/libs/kde5/kf5-cmutils/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-cmutils/recipe.toml rename to recipes/wip/libs/kde5/kf5-cmutils/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-codecs/recipe.toml b/recipes/wip/libs/kde5/kf5-codecs/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-codecs/recipe.toml rename to recipes/wip/libs/kde5/kf5-codecs/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-completion/recipe.toml b/recipes/wip/libs/kde5/kf5-completion/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-completion/recipe.toml rename to recipes/wip/libs/kde5/kf5-completion/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-config/recipe.toml b/recipes/wip/libs/kde5/kf5-config/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-config/recipe.toml rename to recipes/wip/libs/kde5/kf5-config/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-configwidgets/recipe.toml b/recipes/wip/libs/kde5/kf5-configwidgets/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-configwidgets/recipe.toml rename to recipes/wip/libs/kde5/kf5-configwidgets/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-contacts/recipe.toml b/recipes/wip/libs/kde5/kf5-contacts/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-contacts/recipe.toml rename to recipes/wip/libs/kde5/kf5-contacts/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-coreaddons/recipe.toml b/recipes/wip/libs/kde5/kf5-coreaddons/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-coreaddons/recipe.toml rename to recipes/wip/libs/kde5/kf5-coreaddons/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-crash/recipe.toml b/recipes/wip/libs/kde5/kf5-crash/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-crash/recipe.toml rename to recipes/wip/libs/kde5/kf5-crash/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-dav/recipe.toml b/recipes/wip/libs/kde5/kf5-dav/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-dav/recipe.toml rename to recipes/wip/libs/kde5/kf5-dav/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-dbusaddons/recipe.toml b/recipes/wip/libs/kde5/kf5-dbusaddons/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-dbusaddons/recipe.toml rename to recipes/wip/libs/kde5/kf5-dbusaddons/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-declarative/recipe.toml b/recipes/wip/libs/kde5/kf5-declarative/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-declarative/recipe.toml rename to recipes/wip/libs/kde5/kf5-declarative/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-dnssd/recipe.toml b/recipes/wip/libs/kde5/kf5-dnssd/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-dnssd/recipe.toml rename to recipes/wip/libs/kde5/kf5-dnssd/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-doctools/recipe.toml b/recipes/wip/libs/kde5/kf5-doctools/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-doctools/recipe.toml rename to recipes/wip/libs/kde5/kf5-doctools/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-emoticons/recipe.toml b/recipes/wip/libs/kde5/kf5-emoticons/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-emoticons/recipe.toml rename to recipes/wip/libs/kde5/kf5-emoticons/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-filemetadata/recipe.toml b/recipes/wip/libs/kde5/kf5-filemetadata/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-filemetadata/recipe.toml rename to recipes/wip/libs/kde5/kf5-filemetadata/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-frameworkintegration/recipe.toml b/recipes/wip/libs/kde5/kf5-frameworkintegration/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-frameworkintegration/recipe.toml rename to recipes/wip/libs/kde5/kf5-frameworkintegration/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-globalaccel/recipe.toml b/recipes/wip/libs/kde5/kf5-globalaccel/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-globalaccel/recipe.toml rename to recipes/wip/libs/kde5/kf5-globalaccel/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-guiaddons/recipe.toml b/recipes/wip/libs/kde5/kf5-guiaddons/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-guiaddons/recipe.toml rename to recipes/wip/libs/kde5/kf5-guiaddons/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-holidays/recipe.toml b/recipes/wip/libs/kde5/kf5-holidays/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-holidays/recipe.toml rename to recipes/wip/libs/kde5/kf5-holidays/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-i18n/recipe.toml b/recipes/wip/libs/kde5/kf5-i18n/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-i18n/recipe.toml rename to recipes/wip/libs/kde5/kf5-i18n/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-iconthemes/recipe.toml b/recipes/wip/libs/kde5/kf5-iconthemes/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-iconthemes/recipe.toml rename to recipes/wip/libs/kde5/kf5-iconthemes/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-idletime/recipe.toml b/recipes/wip/libs/kde5/kf5-idletime/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-idletime/recipe.toml rename to recipes/wip/libs/kde5/kf5-idletime/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-init/recipe.toml b/recipes/wip/libs/kde5/kf5-init/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-init/recipe.toml rename to recipes/wip/libs/kde5/kf5-init/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-io/recipe.toml b/recipes/wip/libs/kde5/kf5-io/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-io/recipe.toml rename to recipes/wip/libs/kde5/kf5-io/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-itemmodels/recipe.toml b/recipes/wip/libs/kde5/kf5-itemmodels/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-itemmodels/recipe.toml rename to recipes/wip/libs/kde5/kf5-itemmodels/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-itemviews/recipe.toml b/recipes/wip/libs/kde5/kf5-itemviews/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-itemviews/recipe.toml rename to recipes/wip/libs/kde5/kf5-itemviews/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-jobwidgets/recipe.toml b/recipes/wip/libs/kde5/kf5-jobwidgets/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-jobwidgets/recipe.toml rename to recipes/wip/libs/kde5/kf5-jobwidgets/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-kded/recipe.toml b/recipes/wip/libs/kde5/kf5-kded/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-kded/recipe.toml rename to recipes/wip/libs/kde5/kf5-kded/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-kdesu/recipe.toml b/recipes/wip/libs/kde5/kf5-kdesu/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-kdesu/recipe.toml rename to recipes/wip/libs/kde5/kf5-kdesu/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-kirigami/recipe.toml b/recipes/wip/libs/kde5/kf5-kirigami/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-kirigami/recipe.toml rename to recipes/wip/libs/kde5/kf5-kirigami/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-modem-manager/recipe.toml b/recipes/wip/libs/kde5/kf5-modem-manager/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-modem-manager/recipe.toml rename to recipes/wip/libs/kde5/kf5-modem-manager/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-networkmanager/recipe.toml b/recipes/wip/libs/kde5/kf5-networkmanager/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-networkmanager/recipe.toml rename to recipes/wip/libs/kde5/kf5-networkmanager/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-newstuff/recipe.toml b/recipes/wip/libs/kde5/kf5-newstuff/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-newstuff/recipe.toml rename to recipes/wip/libs/kde5/kf5-newstuff/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-notifications/recipe.toml b/recipes/wip/libs/kde5/kf5-notifications/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-notifications/recipe.toml rename to recipes/wip/libs/kde5/kf5-notifications/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-notifyconfig/recipe.toml b/recipes/wip/libs/kde5/kf5-notifyconfig/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-notifyconfig/recipe.toml rename to recipes/wip/libs/kde5/kf5-notifyconfig/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-package/recipe.toml b/recipes/wip/libs/kde5/kf5-package/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-package/recipe.toml rename to recipes/wip/libs/kde5/kf5-package/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-parts/recipe.toml b/recipes/wip/libs/kde5/kf5-parts/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-parts/recipe.toml rename to recipes/wip/libs/kde5/kf5-parts/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-people/recipe.toml b/recipes/wip/libs/kde5/kf5-people/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-people/recipe.toml rename to recipes/wip/libs/kde5/kf5-people/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-plasma-framework/recipe.toml b/recipes/wip/libs/kde5/kf5-plasma-framework/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-plasma-framework/recipe.toml rename to recipes/wip/libs/kde5/kf5-plasma-framework/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-plotting/recipe.toml b/recipes/wip/libs/kde5/kf5-plotting/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-plotting/recipe.toml rename to recipes/wip/libs/kde5/kf5-plotting/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-prison/recipe.toml b/recipes/wip/libs/kde5/kf5-prison/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-prison/recipe.toml rename to recipes/wip/libs/kde5/kf5-prison/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-pty/recipe.toml b/recipes/wip/libs/kde5/kf5-pty/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-pty/recipe.toml rename to recipes/wip/libs/kde5/kf5-pty/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-purpose/recipe.toml b/recipes/wip/libs/kde5/kf5-purpose/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-purpose/recipe.toml rename to recipes/wip/libs/kde5/kf5-purpose/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-qqc2-desktop-style/recipe.toml b/recipes/wip/libs/kde5/kf5-qqc2-desktop-style/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-qqc2-desktop-style/recipe.toml rename to recipes/wip/libs/kde5/kf5-qqc2-desktop-style/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-quickcharts/recipe.toml b/recipes/wip/libs/kde5/kf5-quickcharts/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-quickcharts/recipe.toml rename to recipes/wip/libs/kde5/kf5-quickcharts/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-runner/recipe.toml b/recipes/wip/libs/kde5/kf5-runner/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-runner/recipe.toml rename to recipes/wip/libs/kde5/kf5-runner/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-service/recipe.toml b/recipes/wip/libs/kde5/kf5-service/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-service/recipe.toml rename to recipes/wip/libs/kde5/kf5-service/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-solid/recipe.toml b/recipes/wip/libs/kde5/kf5-solid/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-solid/recipe.toml rename to recipes/wip/libs/kde5/kf5-solid/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-sonnet/recipe.toml b/recipes/wip/libs/kde5/kf5-sonnet/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-sonnet/recipe.toml rename to recipes/wip/libs/kde5/kf5-sonnet/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-syndication/recipe.toml b/recipes/wip/libs/kde5/kf5-syndication/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-syndication/recipe.toml rename to recipes/wip/libs/kde5/kf5-syndication/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-syntax-highlighting/recipe.toml b/recipes/wip/libs/kde5/kf5-syntax-highlighting/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-syntax-highlighting/recipe.toml rename to recipes/wip/libs/kde5/kf5-syntax-highlighting/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-sysguard/recipe.toml b/recipes/wip/libs/kde5/kf5-sysguard/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-sysguard/recipe.toml rename to recipes/wip/libs/kde5/kf5-sysguard/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-texteditor/recipe.toml b/recipes/wip/libs/kde5/kf5-texteditor/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-texteditor/recipe.toml rename to recipes/wip/libs/kde5/kf5-texteditor/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-textwidgets/recipe.toml b/recipes/wip/libs/kde5/kf5-textwidgets/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-textwidgets/recipe.toml rename to recipes/wip/libs/kde5/kf5-textwidgets/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-threadweaver/recipe.toml b/recipes/wip/libs/kde5/kf5-threadweaver/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-threadweaver/recipe.toml rename to recipes/wip/libs/kde5/kf5-threadweaver/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-unitconversion/recipe.toml b/recipes/wip/libs/kde5/kf5-unitconversion/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-unitconversion/recipe.toml rename to recipes/wip/libs/kde5/kf5-unitconversion/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-wayland/recipe.toml b/recipes/wip/libs/kde5/kf5-wayland/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-wayland/recipe.toml rename to recipes/wip/libs/kde5/kf5-wayland/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-widgetaddons/recipe.toml b/recipes/wip/libs/kde5/kf5-widgetaddons/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-widgetaddons/recipe.toml rename to recipes/wip/libs/kde5/kf5-widgetaddons/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-windowsystem/recipe.toml b/recipes/wip/libs/kde5/kf5-windowsystem/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-windowsystem/recipe.toml rename to recipes/wip/libs/kde5/kf5-windowsystem/recipe.toml diff --git a/recipes/wip/libs/kde/kf5-xmlgui/recipe.toml b/recipes/wip/libs/kde5/kf5-xmlgui/recipe.toml similarity index 100% rename from recipes/wip/libs/kde/kf5-xmlgui/recipe.toml rename to recipes/wip/libs/kde5/kf5-xmlgui/recipe.toml From 0eff36e63e50e4beba811018f8f26c6e279858a4 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 1 Jul 2024 04:19:52 +0000 Subject: [PATCH 1962/3180] Add the CMake script on many recipes --- .../libs/kde5/kf5-activities-stats/recipe.toml | 17 ++++++++++++++++- .../wip/libs/kde5/kf5-activities/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-apidox/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-archive/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-attica/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-auth/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-baloo/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-bookmarks/recipe.toml | 17 ++++++++++++++++- .../wip/libs/kde5/kf5-calendarcore/recipe.toml | 17 ++++++++++++++++- .../wip/libs/kde5/kf5-cmake-modules/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-cmutils/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-codecs/recipe.toml | 17 ++++++++++++++++- .../wip/libs/kde5/kf5-completion/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-config/recipe.toml | 17 ++++++++++++++++- .../wip/libs/kde5/kf5-configwidgets/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-contacts/recipe.toml | 17 ++++++++++++++++- .../wip/libs/kde5/kf5-coreaddons/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-crash/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-dav/recipe.toml | 17 ++++++++++++++++- .../wip/libs/kde5/kf5-dbusaddons/recipe.toml | 17 ++++++++++++++++- .../wip/libs/kde5/kf5-declarative/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-dnssd/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-doctools/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-emoticons/recipe.toml | 17 ++++++++++++++++- .../wip/libs/kde5/kf5-filemetadata/recipe.toml | 17 ++++++++++++++++- .../kde5/kf5-frameworkintegration/recipe.toml | 17 ++++++++++++++++- .../wip/libs/kde5/kf5-globalaccel/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-guiaddons/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-holidays/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-i18n/recipe.toml | 17 ++++++++++++++++- .../wip/libs/kde5/kf5-iconthemes/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-idletime/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-init/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-io/recipe.toml | 17 ++++++++++++++++- .../wip/libs/kde5/kf5-itemmodels/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-itemviews/recipe.toml | 17 ++++++++++++++++- .../wip/libs/kde5/kf5-jobwidgets/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-kded/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-kdesu/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-kirigami/recipe.toml | 17 ++++++++++++++++- .../wip/libs/kde5/kf5-modem-manager/recipe.toml | 17 ++++++++++++++++- .../libs/kde5/kf5-networkmanager/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-newstuff/recipe.toml | 17 ++++++++++++++++- .../wip/libs/kde5/kf5-notifications/recipe.toml | 17 ++++++++++++++++- .../wip/libs/kde5/kf5-notifyconfig/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-package/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-people/recipe.toml | 17 ++++++++++++++++- .../libs/kde5/kf5-plasma-framework/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-plotting/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-prison/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-pty/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-purpose/recipe.toml | 17 ++++++++++++++++- .../kde5/kf5-qqc2-desktop-style/recipe.toml | 17 ++++++++++++++++- .../wip/libs/kde5/kf5-quickcharts/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-runner/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-service/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-solid/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-sonnet/recipe.toml | 17 ++++++++++++++++- .../wip/libs/kde5/kf5-syndication/recipe.toml | 17 ++++++++++++++++- .../kde5/kf5-syntax-highlighting/recipe.toml | 17 ++++++++++++++++- .../wip/libs/kde5/kf5-texteditor/recipe.toml | 17 ++++++++++++++++- .../wip/libs/kde5/kf5-textwidgets/recipe.toml | 17 ++++++++++++++++- .../wip/libs/kde5/kf5-threadweaver/recipe.toml | 17 ++++++++++++++++- .../libs/kde5/kf5-unitconversion/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-wayland/recipe.toml | 17 ++++++++++++++++- .../wip/libs/kde5/kf5-widgetaddons/recipe.toml | 17 ++++++++++++++++- .../wip/libs/kde5/kf5-windowsystem/recipe.toml | 17 ++++++++++++++++- recipes/wip/libs/kde5/kf5-xmlgui/recipe.toml | 17 ++++++++++++++++- 68 files changed, 1088 insertions(+), 68 deletions(-) diff --git a/recipes/wip/libs/kde5/kf5-activities-stats/recipe.toml b/recipes/wip/libs/kde5/kf5-activities-stats/recipe.toml index 81c7aa7c..4d684d0d 100644 --- a/recipes/wip/libs/kde5/kf5-activities-stats/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-activities-stats/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kactivities-stats-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-activities/recipe.toml b/recipes/wip/libs/kde5/kf5-activities/recipe.toml index 515c7ac7..0f9b9e6d 100644 --- a/recipes/wip/libs/kde5/kf5-activities/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-activities/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kactivities-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-apidox/recipe.toml b/recipes/wip/libs/kde5/kf5-apidox/recipe.toml index b90418a7..2b4073c7 100644 --- a/recipes/wip/libs/kde5/kf5-apidox/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-apidox/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kapidox-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-archive/recipe.toml b/recipes/wip/libs/kde5/kf5-archive/recipe.toml index 13e61b26..5578c6b4 100644 --- a/recipes/wip/libs/kde5/kf5-archive/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-archive/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, see https://invent.kde.org/frameworks/karchive/-/blob/master/INSTALL?ref_type=heads +#TODO maybe incomplete script, see https://invent.kde.org/frameworks/karchive/-/blob/master/INSTALL?ref_type=heads [source] tar = "https://download.kde.org/stable/frameworks/5.112/karchive-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-attica/recipe.toml b/recipes/wip/libs/kde5/kf5-attica/recipe.toml index b7098459..27d31f4b 100644 --- a/recipes/wip/libs/kde5/kf5-attica/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-attica/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/attica-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-auth/recipe.toml b/recipes/wip/libs/kde5/kf5-auth/recipe.toml index 3e9b9311..2f4275f3 100644 --- a/recipes/wip/libs/kde5/kf5-auth/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-auth/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kauth-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-baloo/recipe.toml b/recipes/wip/libs/kde5/kf5-baloo/recipe.toml index b8d3c065..5b395c8c 100644 --- a/recipes/wip/libs/kde5/kf5-baloo/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-baloo/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/baloo-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-bookmarks/recipe.toml b/recipes/wip/libs/kde5/kf5-bookmarks/recipe.toml index 765cd5dc..5c2754ee 100644 --- a/recipes/wip/libs/kde5/kf5-bookmarks/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-bookmarks/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kbookmarks-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-calendarcore/recipe.toml b/recipes/wip/libs/kde5/kf5-calendarcore/recipe.toml index 9088f659..7d75fda9 100644 --- a/recipes/wip/libs/kde5/kf5-calendarcore/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-calendarcore/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kcalendarcore-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-cmake-modules/recipe.toml b/recipes/wip/libs/kde5/kf5-cmake-modules/recipe.toml index 1a839225..9cf7db39 100644 --- a/recipes/wip/libs/kde5/kf5-cmake-modules/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-cmake-modules/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/extra-cmake-modules-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-cmutils/recipe.toml b/recipes/wip/libs/kde5/kf5-cmutils/recipe.toml index ec90f29e..f1b9a0ae 100644 --- a/recipes/wip/libs/kde5/kf5-cmutils/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-cmutils/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kcmutils-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-codecs/recipe.toml b/recipes/wip/libs/kde5/kf5-codecs/recipe.toml index f0b56093..333788a7 100644 --- a/recipes/wip/libs/kde5/kf5-codecs/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-codecs/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kcodecs-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-completion/recipe.toml b/recipes/wip/libs/kde5/kf5-completion/recipe.toml index b35ef726..fec43620 100644 --- a/recipes/wip/libs/kde5/kf5-completion/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-completion/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kcompletion-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-config/recipe.toml b/recipes/wip/libs/kde5/kf5-config/recipe.toml index 9f38c097..63914aa9 100644 --- a/recipes/wip/libs/kde5/kf5-config/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-config/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kconfig-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-configwidgets/recipe.toml b/recipes/wip/libs/kde5/kf5-configwidgets/recipe.toml index d99263ea..4c51ea87 100644 --- a/recipes/wip/libs/kde5/kf5-configwidgets/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-configwidgets/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kconfigwidgets-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-contacts/recipe.toml b/recipes/wip/libs/kde5/kf5-contacts/recipe.toml index 510bd9f4..b5829009 100644 --- a/recipes/wip/libs/kde5/kf5-contacts/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-contacts/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kcontacts-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-coreaddons/recipe.toml b/recipes/wip/libs/kde5/kf5-coreaddons/recipe.toml index 0f4fe13e..088f7e64 100644 --- a/recipes/wip/libs/kde5/kf5-coreaddons/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-coreaddons/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kcoreaddons-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-crash/recipe.toml b/recipes/wip/libs/kde5/kf5-crash/recipe.toml index 9336b8e7..a9093fb8 100644 --- a/recipes/wip/libs/kde5/kf5-crash/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-crash/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kcrash-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-dav/recipe.toml b/recipes/wip/libs/kde5/kf5-dav/recipe.toml index 672b45d1..4c873a5f 100644 --- a/recipes/wip/libs/kde5/kf5-dav/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-dav/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kdav-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-dbusaddons/recipe.toml b/recipes/wip/libs/kde5/kf5-dbusaddons/recipe.toml index 652715d2..db0c7eae 100644 --- a/recipes/wip/libs/kde5/kf5-dbusaddons/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-dbusaddons/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kdbusaddons-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-declarative/recipe.toml b/recipes/wip/libs/kde5/kf5-declarative/recipe.toml index be266b6d..a45a0080 100644 --- a/recipes/wip/libs/kde5/kf5-declarative/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-declarative/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kdeclarative-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-dnssd/recipe.toml b/recipes/wip/libs/kde5/kf5-dnssd/recipe.toml index bd3bb178..6272ce65 100644 --- a/recipes/wip/libs/kde5/kf5-dnssd/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-dnssd/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kdnssd-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-doctools/recipe.toml b/recipes/wip/libs/kde5/kf5-doctools/recipe.toml index fbcf600a..a7812d08 100644 --- a/recipes/wip/libs/kde5/kf5-doctools/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-doctools/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kdoctools-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-emoticons/recipe.toml b/recipes/wip/libs/kde5/kf5-emoticons/recipe.toml index 6465a062..2d6c9271 100644 --- a/recipes/wip/libs/kde5/kf5-emoticons/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-emoticons/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kemoticons-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-filemetadata/recipe.toml b/recipes/wip/libs/kde5/kf5-filemetadata/recipe.toml index 850d1ff9..16e1794b 100644 --- a/recipes/wip/libs/kde5/kf5-filemetadata/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-filemetadata/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kfilemetadata-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-frameworkintegration/recipe.toml b/recipes/wip/libs/kde5/kf5-frameworkintegration/recipe.toml index 4bbaac73..06ab5bca 100644 --- a/recipes/wip/libs/kde5/kf5-frameworkintegration/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-frameworkintegration/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/frameworkintegration-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-globalaccel/recipe.toml b/recipes/wip/libs/kde5/kf5-globalaccel/recipe.toml index 55008c2f..834c4109 100644 --- a/recipes/wip/libs/kde5/kf5-globalaccel/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-globalaccel/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kglobalaccel-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-guiaddons/recipe.toml b/recipes/wip/libs/kde5/kf5-guiaddons/recipe.toml index 96abf45c..d4e28655 100644 --- a/recipes/wip/libs/kde5/kf5-guiaddons/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-guiaddons/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kguiaddons-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-holidays/recipe.toml b/recipes/wip/libs/kde5/kf5-holidays/recipe.toml index f1b9145a..f7464829 100644 --- a/recipes/wip/libs/kde5/kf5-holidays/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-holidays/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kholidays-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-i18n/recipe.toml b/recipes/wip/libs/kde5/kf5-i18n/recipe.toml index 0125093c..9d763409 100644 --- a/recipes/wip/libs/kde5/kf5-i18n/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-i18n/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/ki18n-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-iconthemes/recipe.toml b/recipes/wip/libs/kde5/kf5-iconthemes/recipe.toml index a932ef5e..65df52b6 100644 --- a/recipes/wip/libs/kde5/kf5-iconthemes/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-iconthemes/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kiconthemes-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-idletime/recipe.toml b/recipes/wip/libs/kde5/kf5-idletime/recipe.toml index 8acb1b15..2f81d93e 100644 --- a/recipes/wip/libs/kde5/kf5-idletime/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-idletime/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kidletime-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-init/recipe.toml b/recipes/wip/libs/kde5/kf5-init/recipe.toml index 95fb36b3..e6df78a7 100644 --- a/recipes/wip/libs/kde5/kf5-init/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-init/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kinit-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-io/recipe.toml b/recipes/wip/libs/kde5/kf5-io/recipe.toml index ac39541d..ea49c5b8 100644 --- a/recipes/wip/libs/kde5/kf5-io/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-io/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kio-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-itemmodels/recipe.toml b/recipes/wip/libs/kde5/kf5-itemmodels/recipe.toml index 143c790b..0120f605 100644 --- a/recipes/wip/libs/kde5/kf5-itemmodels/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-itemmodels/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kitemmodels-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-itemviews/recipe.toml b/recipes/wip/libs/kde5/kf5-itemviews/recipe.toml index 5439efad..51849a65 100644 --- a/recipes/wip/libs/kde5/kf5-itemviews/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-itemviews/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kitemviews-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-jobwidgets/recipe.toml b/recipes/wip/libs/kde5/kf5-jobwidgets/recipe.toml index ec2a9b47..f8380024 100644 --- a/recipes/wip/libs/kde5/kf5-jobwidgets/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-jobwidgets/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kjobwidgets-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-kded/recipe.toml b/recipes/wip/libs/kde5/kf5-kded/recipe.toml index 0dd64762..f983a368 100644 --- a/recipes/wip/libs/kde5/kf5-kded/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-kded/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kded-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-kdesu/recipe.toml b/recipes/wip/libs/kde5/kf5-kdesu/recipe.toml index 53c95e5d..a878b1cd 100644 --- a/recipes/wip/libs/kde5/kf5-kdesu/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-kdesu/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kdesu-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-kirigami/recipe.toml b/recipes/wip/libs/kde5/kf5-kirigami/recipe.toml index 9bca3ddb..14f16f45 100644 --- a/recipes/wip/libs/kde5/kf5-kirigami/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-kirigami/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kirigami-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-modem-manager/recipe.toml b/recipes/wip/libs/kde5/kf5-modem-manager/recipe.toml index 67909fc1..d934ab28 100644 --- a/recipes/wip/libs/kde5/kf5-modem-manager/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-modem-manager/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/modemmanager-qt5-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-networkmanager/recipe.toml b/recipes/wip/libs/kde5/kf5-networkmanager/recipe.toml index 71887fc7..4e374638 100644 --- a/recipes/wip/libs/kde5/kf5-networkmanager/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-networkmanager/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/networkmanager-qt5-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-newstuff/recipe.toml b/recipes/wip/libs/kde5/kf5-newstuff/recipe.toml index d5b65faa..f5736ca3 100644 --- a/recipes/wip/libs/kde5/kf5-newstuff/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-newstuff/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/knewstuff-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-notifications/recipe.toml b/recipes/wip/libs/kde5/kf5-notifications/recipe.toml index 83226716..bea54a4e 100644 --- a/recipes/wip/libs/kde5/kf5-notifications/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-notifications/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/knotifications-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-notifyconfig/recipe.toml b/recipes/wip/libs/kde5/kf5-notifyconfig/recipe.toml index f0c5d2f1..f1bae313 100644 --- a/recipes/wip/libs/kde5/kf5-notifyconfig/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-notifyconfig/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/knotifyconfig-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-package/recipe.toml b/recipes/wip/libs/kde5/kf5-package/recipe.toml index 7391c379..bededd5e 100644 --- a/recipes/wip/libs/kde5/kf5-package/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-package/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kpackage-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-people/recipe.toml b/recipes/wip/libs/kde5/kf5-people/recipe.toml index 078ece73..61bdbad2 100644 --- a/recipes/wip/libs/kde5/kf5-people/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-people/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kpeople-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-plasma-framework/recipe.toml b/recipes/wip/libs/kde5/kf5-plasma-framework/recipe.toml index 6f7b88ec..f42423a9 100644 --- a/recipes/wip/libs/kde5/kf5-plasma-framework/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-plasma-framework/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/plasma-framework-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-plotting/recipe.toml b/recipes/wip/libs/kde5/kf5-plotting/recipe.toml index 4cbb3b97..c0b9511c 100644 --- a/recipes/wip/libs/kde5/kf5-plotting/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-plotting/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kplotting-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-prison/recipe.toml b/recipes/wip/libs/kde5/kf5-prison/recipe.toml index 3d98a469..81a48904 100644 --- a/recipes/wip/libs/kde5/kf5-prison/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-prison/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplte script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/prison-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-pty/recipe.toml b/recipes/wip/libs/kde5/kf5-pty/recipe.toml index 048f371f..62d809cc 100644 --- a/recipes/wip/libs/kde5/kf5-pty/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-pty/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kpty-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-purpose/recipe.toml b/recipes/wip/libs/kde5/kf5-purpose/recipe.toml index a5422094..c5e260e2 100644 --- a/recipes/wip/libs/kde5/kf5-purpose/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-purpose/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/purpose-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-qqc2-desktop-style/recipe.toml b/recipes/wip/libs/kde5/kf5-qqc2-desktop-style/recipe.toml index cf907877..c64dcb2a 100644 --- a/recipes/wip/libs/kde5/kf5-qqc2-desktop-style/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-qqc2-desktop-style/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/qqc2-desktop-style-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-quickcharts/recipe.toml b/recipes/wip/libs/kde5/kf5-quickcharts/recipe.toml index 517a67e9..5ae32274 100644 --- a/recipes/wip/libs/kde5/kf5-quickcharts/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-quickcharts/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kquickcharts-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-runner/recipe.toml b/recipes/wip/libs/kde5/kf5-runner/recipe.toml index 87a4f8c1..18a44150 100644 --- a/recipes/wip/libs/kde5/kf5-runner/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-runner/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/krunner-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-service/recipe.toml b/recipes/wip/libs/kde5/kf5-service/recipe.toml index cdf8c237..65ea3bc4 100644 --- a/recipes/wip/libs/kde5/kf5-service/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-service/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kservice-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-solid/recipe.toml b/recipes/wip/libs/kde5/kf5-solid/recipe.toml index 0ddc6589..3025bb02 100644 --- a/recipes/wip/libs/kde5/kf5-solid/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-solid/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/solid-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-sonnet/recipe.toml b/recipes/wip/libs/kde5/kf5-sonnet/recipe.toml index 4f7a13eb..1f9f1387 100644 --- a/recipes/wip/libs/kde5/kf5-sonnet/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-sonnet/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/sonnet-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-syndication/recipe.toml b/recipes/wip/libs/kde5/kf5-syndication/recipe.toml index 3c97390f..a99344ea 100644 --- a/recipes/wip/libs/kde5/kf5-syndication/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-syndication/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/syndication-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-syntax-highlighting/recipe.toml b/recipes/wip/libs/kde5/kf5-syntax-highlighting/recipe.toml index 350a3d9f..74e0dda7 100644 --- a/recipes/wip/libs/kde5/kf5-syntax-highlighting/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-syntax-highlighting/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/syntax-highlighting-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-texteditor/recipe.toml b/recipes/wip/libs/kde5/kf5-texteditor/recipe.toml index 3165c155..f8f2ed56 100644 --- a/recipes/wip/libs/kde5/kf5-texteditor/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-texteditor/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/ktexteditor-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-textwidgets/recipe.toml b/recipes/wip/libs/kde5/kf5-textwidgets/recipe.toml index 18d5489a..de286721 100644 --- a/recipes/wip/libs/kde5/kf5-textwidgets/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-textwidgets/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/ktextwidgets-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-threadweaver/recipe.toml b/recipes/wip/libs/kde5/kf5-threadweaver/recipe.toml index 608b567a..3943c71c 100644 --- a/recipes/wip/libs/kde5/kf5-threadweaver/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-threadweaver/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/threadweaver-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-unitconversion/recipe.toml b/recipes/wip/libs/kde5/kf5-unitconversion/recipe.toml index 9a451594..418bc9cd 100644 --- a/recipes/wip/libs/kde5/kf5-unitconversion/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-unitconversion/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kunitconversion-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-wayland/recipe.toml b/recipes/wip/libs/kde5/kf5-wayland/recipe.toml index 39003af4..b298ff58 100644 --- a/recipes/wip/libs/kde5/kf5-wayland/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-wayland/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kwayland-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-widgetaddons/recipe.toml b/recipes/wip/libs/kde5/kf5-widgetaddons/recipe.toml index 51d84f75..01916dc3 100644 --- a/recipes/wip/libs/kde5/kf5-widgetaddons/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-widgetaddons/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kwidgetaddons-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-windowsystem/recipe.toml b/recipes/wip/libs/kde5/kf5-windowsystem/recipe.toml index ab5f51fc..fb90653a 100644 --- a/recipes/wip/libs/kde5/kf5-windowsystem/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-windowsystem/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kwindowsystem-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/kde5/kf5-xmlgui/recipe.toml b/recipes/wip/libs/kde5/kf5-xmlgui/recipe.toml index 66bec682..0ded2726 100644 --- a/recipes/wip/libs/kde5/kf5-xmlgui/recipe.toml +++ b/recipes/wip/libs/kde5/kf5-xmlgui/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing script for CMake, lacking build instructions +#TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kxmlgui-5.112.0.tar.xz" [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" From cbe694949b7459c750303583f230e3756af7638f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 1 Jul 2024 04:26:06 +0000 Subject: [PATCH 1963/3180] Add a recipe --- recipes/wip/dev/performance/flamelens/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/wip/dev/performance/flamelens/recipe.toml diff --git a/recipes/wip/dev/performance/flamelens/recipe.toml b/recipes/wip/dev/performance/flamelens/recipe.toml new file mode 100644 index 00000000..4c3b214e --- /dev/null +++ b/recipes/wip/dev/performance/flamelens/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/YS-L/flamelens" +[build] +template = "cargo" From abf9220fa9bd7c1ee50b6e4bc3314be8fad242ea Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 1 Jul 2024 04:44:16 +0000 Subject: [PATCH 1964/3180] Move recipes --- recipes/wip/{tools/other => benchmarks}/hyperfine/recipe.toml | 0 recipes/wip/dev/{other => analysis}/binocle/recipe.toml | 0 recipes/wip/dev/{other => analysis}/code-minimap/recipe.toml | 0 recipes/wip/dev/{other => analysis}/codevis/recipe.toml | 0 recipes/wip/dev/{other => framework}/biome/recipe.toml | 0 recipes/wip/dev/{other => framework}/deno/recipe.toml | 0 recipes/wip/dev/{other => framework}/moon/recipe.toml | 0 recipes/wip/dev/{other => framework}/moonzoon/recipe.toml | 0 recipes/wip/dev/{other => framework}/proto/recipe.toml | 0 recipes/wip/dev/{other => git-tools}/auto-commit/recipe.toml | 0 recipes/wip/dev/{other => lang}/artichoke/recipe.toml | 0 recipes/wip/dev/{other => performance}/samply/recipe.toml | 0 recipes/wip/dev/{other => performance}/tracy/recipe.toml | 0 recipes/wip/dev/{other => performance}/vkpeak/recipe.toml | 0 recipes/wip/dev/{other => wasm}/trunk/recipe.toml | 0 recipes/wip/tools/{other => data-integrity}/b3sum/recipe.toml | 0 .../wip/tools/{security => data-integrity}/hashgood/recipe.toml | 0 17 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{tools/other => benchmarks}/hyperfine/recipe.toml (100%) rename recipes/wip/dev/{other => analysis}/binocle/recipe.toml (100%) rename recipes/wip/dev/{other => analysis}/code-minimap/recipe.toml (100%) rename recipes/wip/dev/{other => analysis}/codevis/recipe.toml (100%) rename recipes/wip/dev/{other => framework}/biome/recipe.toml (100%) rename recipes/wip/dev/{other => framework}/deno/recipe.toml (100%) rename recipes/wip/dev/{other => framework}/moon/recipe.toml (100%) rename recipes/wip/dev/{other => framework}/moonzoon/recipe.toml (100%) rename recipes/wip/dev/{other => framework}/proto/recipe.toml (100%) rename recipes/wip/dev/{other => git-tools}/auto-commit/recipe.toml (100%) rename recipes/wip/dev/{other => lang}/artichoke/recipe.toml (100%) rename recipes/wip/dev/{other => performance}/samply/recipe.toml (100%) rename recipes/wip/dev/{other => performance}/tracy/recipe.toml (100%) rename recipes/wip/dev/{other => performance}/vkpeak/recipe.toml (100%) rename recipes/wip/dev/{other => wasm}/trunk/recipe.toml (100%) rename recipes/wip/tools/{other => data-integrity}/b3sum/recipe.toml (100%) rename recipes/wip/tools/{security => data-integrity}/hashgood/recipe.toml (100%) diff --git a/recipes/wip/tools/other/hyperfine/recipe.toml b/recipes/wip/benchmarks/hyperfine/recipe.toml similarity index 100% rename from recipes/wip/tools/other/hyperfine/recipe.toml rename to recipes/wip/benchmarks/hyperfine/recipe.toml diff --git a/recipes/wip/dev/other/binocle/recipe.toml b/recipes/wip/dev/analysis/binocle/recipe.toml similarity index 100% rename from recipes/wip/dev/other/binocle/recipe.toml rename to recipes/wip/dev/analysis/binocle/recipe.toml diff --git a/recipes/wip/dev/other/code-minimap/recipe.toml b/recipes/wip/dev/analysis/code-minimap/recipe.toml similarity index 100% rename from recipes/wip/dev/other/code-minimap/recipe.toml rename to recipes/wip/dev/analysis/code-minimap/recipe.toml diff --git a/recipes/wip/dev/other/codevis/recipe.toml b/recipes/wip/dev/analysis/codevis/recipe.toml similarity index 100% rename from recipes/wip/dev/other/codevis/recipe.toml rename to recipes/wip/dev/analysis/codevis/recipe.toml diff --git a/recipes/wip/dev/other/biome/recipe.toml b/recipes/wip/dev/framework/biome/recipe.toml similarity index 100% rename from recipes/wip/dev/other/biome/recipe.toml rename to recipes/wip/dev/framework/biome/recipe.toml diff --git a/recipes/wip/dev/other/deno/recipe.toml b/recipes/wip/dev/framework/deno/recipe.toml similarity index 100% rename from recipes/wip/dev/other/deno/recipe.toml rename to recipes/wip/dev/framework/deno/recipe.toml diff --git a/recipes/wip/dev/other/moon/recipe.toml b/recipes/wip/dev/framework/moon/recipe.toml similarity index 100% rename from recipes/wip/dev/other/moon/recipe.toml rename to recipes/wip/dev/framework/moon/recipe.toml diff --git a/recipes/wip/dev/other/moonzoon/recipe.toml b/recipes/wip/dev/framework/moonzoon/recipe.toml similarity index 100% rename from recipes/wip/dev/other/moonzoon/recipe.toml rename to recipes/wip/dev/framework/moonzoon/recipe.toml diff --git a/recipes/wip/dev/other/proto/recipe.toml b/recipes/wip/dev/framework/proto/recipe.toml similarity index 100% rename from recipes/wip/dev/other/proto/recipe.toml rename to recipes/wip/dev/framework/proto/recipe.toml diff --git a/recipes/wip/dev/other/auto-commit/recipe.toml b/recipes/wip/dev/git-tools/auto-commit/recipe.toml similarity index 100% rename from recipes/wip/dev/other/auto-commit/recipe.toml rename to recipes/wip/dev/git-tools/auto-commit/recipe.toml diff --git a/recipes/wip/dev/other/artichoke/recipe.toml b/recipes/wip/dev/lang/artichoke/recipe.toml similarity index 100% rename from recipes/wip/dev/other/artichoke/recipe.toml rename to recipes/wip/dev/lang/artichoke/recipe.toml diff --git a/recipes/wip/dev/other/samply/recipe.toml b/recipes/wip/dev/performance/samply/recipe.toml similarity index 100% rename from recipes/wip/dev/other/samply/recipe.toml rename to recipes/wip/dev/performance/samply/recipe.toml diff --git a/recipes/wip/dev/other/tracy/recipe.toml b/recipes/wip/dev/performance/tracy/recipe.toml similarity index 100% rename from recipes/wip/dev/other/tracy/recipe.toml rename to recipes/wip/dev/performance/tracy/recipe.toml diff --git a/recipes/wip/dev/other/vkpeak/recipe.toml b/recipes/wip/dev/performance/vkpeak/recipe.toml similarity index 100% rename from recipes/wip/dev/other/vkpeak/recipe.toml rename to recipes/wip/dev/performance/vkpeak/recipe.toml diff --git a/recipes/wip/dev/other/trunk/recipe.toml b/recipes/wip/dev/wasm/trunk/recipe.toml similarity index 100% rename from recipes/wip/dev/other/trunk/recipe.toml rename to recipes/wip/dev/wasm/trunk/recipe.toml diff --git a/recipes/wip/tools/other/b3sum/recipe.toml b/recipes/wip/tools/data-integrity/b3sum/recipe.toml similarity index 100% rename from recipes/wip/tools/other/b3sum/recipe.toml rename to recipes/wip/tools/data-integrity/b3sum/recipe.toml diff --git a/recipes/wip/tools/security/hashgood/recipe.toml b/recipes/wip/tools/data-integrity/hashgood/recipe.toml similarity index 100% rename from recipes/wip/tools/security/hashgood/recipe.toml rename to recipes/wip/tools/data-integrity/hashgood/recipe.toml From 4fa15ba593c404be87a25ee3563129a06be25ddd Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 1 Jul 2024 05:13:52 +0000 Subject: [PATCH 1965/3180] Fix a recipe --- recipes/wip/web/gosub/recipe.toml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/recipes/wip/web/gosub/recipe.toml b/recipes/wip/web/gosub/recipe.toml index 137d23df..1892bbf9 100644 --- a/recipes/wip/web/gosub/recipe.toml +++ b/recipes/wip/web/gosub/recipe.toml @@ -1,9 +1,16 @@ -#TODO discover how to build the bins +#TODO not compiled or tested [source] git = "https://github.com/gosub-browser/gosub-engine" [build] template = "custom" script = """ -cookbook_cargo --bin gosub-parser css3-parser renderer \ -style-parser +binary=renderer +"${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --bin "${binary}" \ + --release + mkdir -pv "${COOKBOOK_STAGE}/usr/bin" + cp -v \ + "target/${TARGET}/release/${binary}" \ + "${COOKBOOK_STAGE}/usr/bin/${binary}" """ From 9bd5fb6816ddf2823e0d8b207b3cefab8212bc7c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 2 Jul 2024 06:08:02 +0000 Subject: [PATCH 1966/3180] Move recipes --- recipes/wip/{tools => }/archives/7-zip/recipe.toml | 0 recipes/wip/{tools => }/archives/lz4/recipe.toml | 0 recipes/wip/{tools => }/archives/lzip/recipe.toml | 0 recipes/wip/{tools => }/archives/mlar/recipe.toml | 0 recipes/wip/{tools => }/archives/orz/recipe.toml | 0 recipes/wip/{tools => }/archives/ouch/recipe.toml | 0 recipes/wip/{tools => }/archives/plzip/recipe.toml | 0 recipes/wip/{tools => }/archives/unzrip/recipe.toml | 0 recipes/wip/{tools => }/archives/zstd/recipe.toml | 0 recipes/wip/{tools => }/data-integrity/b3sum/recipe.toml | 0 recipes/wip/{tools => }/data-integrity/hashgood/recipe.toml | 0 recipes/wip/{tools => }/finance/bitcoin/btc-vanity/recipe.toml | 0 recipes/wip/{tools => }/finance/bitcoin/liana/recipe.toml | 0 .../wip/{tools => }/finance/bitcoin/nakamoto-wallet/recipe.toml | 0 recipes/wip/{tools => }/finance/bitcoin/nakatoshi/recipe.toml | 0 recipes/wip/{tools => }/finance/bitcoin/ord/recipe.toml | 0 recipes/wip/{tools => }/finance/bitcoin/pushtx/recipe.toml | 0 .../wip/{tools => }/finance/bitcoin/rusty-blockparser/recipe.toml | 0 recipes/wip/{tools => }/finance/donation/cargo-fund/recipe.toml | 0 recipes/wip/{tools => }/finance/market/apcacli/recipe.toml | 0 recipes/wip/{tools => }/finance/market/tick-rs/recipe.toml | 0 recipes/wip/{tools => }/finance/monero/gupax/recipe.toml | 0 recipes/wip/{tools => }/finance/monero/xmrig/recipe.toml | 0 recipes/wip/{tools => }/finance/rex/recipe.toml | 0 recipes/wip/{tools => }/graphics/editors/blender-lts/recipe.toml | 0 recipes/wip/{tools => }/graphics/editors/blender/recipe.toml | 0 recipes/wip/{tools => }/graphics/editors/gimp/recipe.toml | 0 recipes/wip/{tools => }/graphics/editors/inkscape/recipe.toml | 0 recipes/wip/{tools => }/graphics/editors/krita/recipe.toml | 0 recipes/wip/{tools => }/graphics/editors/opentoonz/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/appleseed/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/c-ray/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/cmark/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/darktable/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/derive-rs/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/dify/recipe.toml | 0 .../wip/{tools => }/graphics/other/dominant-colours/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/dssim/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/embree/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/flowbetween/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/gaffer/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/glou/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/gmic-qt/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/gmic/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/graphicsmagick/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/graphviz/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/halo/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/hdr10plus-tool/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/image-sieve/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/imagemagick/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/incompact3d/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/jxl-oxide/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/kantig/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/lpl/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/luxcorerender/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/matugen/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/ocrs/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/oculante/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/openscad/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/ospray-studio/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/ospray/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/paraview-data/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/paraview/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/pilka/recipe.toml | 0 .../wip/{tools => }/graphics/other/pix-image-viewer/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/pixsort/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/rascii/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/rawtherapee/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/reve/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/rimage/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/satty/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/shadergarden/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/simp/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/smag/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/texel/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/toybrot/recipe.toml | 0 .../wip/{tools => }/graphics/other/tungsten-renderer/recipe.toml | 0 .../wip/{tools => }/graphics/other/upscaling/rscale2x/recipe.toml | 0 .../{tools => }/graphics/other/upscaling/upscaler-rs/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/viu/recipe.toml | 0 recipes/wip/{tools => }/graphics/other/watch-stl/recipe.toml | 0 recipes/wip/{tools => }/math/fend/recipe.toml | 0 recipes/wip/{tools => }/math/fractal-explorer/recipe.toml | 0 recipes/wip/{tools => }/math/kalc/recipe.toml | 0 recipes/wip/{tools => }/math/kalker/recipe.toml | 0 recipes/wip/{tools => }/math/numbat/recipe.toml | 0 recipes/wip/{tools => }/math/primesieve/recipe.toml | 0 recipes/wip/{tools => }/math/rink/recipe.toml | 0 recipes/wip/{tools => }/net/bittorrent/attractorr/recipe.toml | 0 recipes/wip/{tools => }/net/bittorrent/synapse-bt/recipe.toml | 0 recipes/wip/{tools => }/net/bittorrent/transmission/recipe.toml | 0 recipes/wip/{tools => }/net/chat/telegram-desktop/recipe.toml | 0 recipes/wip/{tools => }/net/chat/termchat/recipe.toml | 0 recipes/wip/{tools => }/net/download/aim/recipe.toml | 0 recipes/wip/{tools => }/net/download/anime-downloader/recipe.toml | 0 recipes/wip/{tools => }/net/download/wget/recipe.toml | 0 recipes/wip/{tools => }/net/download/wget2/recipe.toml | 0 recipes/wip/{tools => }/net/download/yaydl/recipe.toml | 0 recipes/wip/{tools => }/net/download/youtube-tui/recipe.toml | 0 recipes/wip/{tools => }/net/gemini/lagrange/recipe.toml | 0 recipes/wip/{tools => }/net/lan/zerotier/recipe.toml | 0 recipes/wip/{tools => }/net/onion-routing/arti/recipe.toml | 0 recipes/wip/{tools => }/net/onion-routing/i2pd/recipe.toml | 0 recipes/wip/{tools => }/net/onion-routing/lokinet/recipe.toml | 0 recipes/wip/{tools => }/net/onion-routing/tor-browser/recipe.toml | 0 recipes/wip/{tools => }/net/onion-routing/tor/recipe.toml | 0 recipes/wip/{tools => }/net/other/arp-scanner/recipe.toml | 0 recipes/wip/{tools => }/net/other/bita/recipe.toml | 0 recipes/wip/{tools => }/net/other/bore/recipe.toml | 0 recipes/wip/{tools => }/net/other/boringtun/recipe.toml | 0 recipes/wip/{tools => }/net/other/celeste/recipe.toml | 0 recipes/wip/{tools => }/net/other/cobalt/recipe.toml | 0 recipes/wip/{tools => }/net/other/crab-dlna/recipe.toml | 0 recipes/wip/{tools => }/net/other/dqy/recipe.toml | 0 recipes/wip/{tools => }/net/other/drill/recipe.toml | 0 recipes/wip/{tools => }/net/other/dufs/recipe.toml | 0 recipes/wip/{tools => }/net/other/floresta/recipe.toml | 0 recipes/wip/{tools => }/net/other/guacamole-client/recipe.toml | 0 recipes/wip/{tools => }/net/other/halloy/recipe.toml | 0 recipes/wip/{tools => }/net/other/havn/recipe.toml | 0 recipes/wip/{tools => }/net/other/hinoki/recipe.toml | 0 recipes/wip/{tools => }/net/other/hurl/recipe.toml | 0 recipes/wip/{tools => }/net/other/impala/recipe.toml | 0 recipes/wip/{tools => }/net/other/lldap/recipe.toml | 0 recipes/wip/{tools => }/net/other/lychee/recipe.toml | 0 recipes/wip/{tools => }/net/other/lynx/recipe.toml | 0 recipes/wip/{tools => }/net/other/meli/recipe.toml | 0 recipes/wip/{tools => }/net/other/miniupnpc/recipe.toml | 0 recipes/wip/{tools => }/net/other/moonfire-nvr-server/recipe.toml | 0 recipes/wip/{tools => }/net/other/netop/recipe.toml | 0 recipes/wip/{tools => }/net/other/netscanner/recipe.toml | 0 recipes/wip/{tools => }/net/other/nmap/recipe.toml | 0 recipes/wip/{tools => }/net/other/nspr/recipe.toml | 0 recipes/wip/{tools => }/net/other/nss-pem/recipe.toml | 0 recipes/wip/{tools => }/net/other/nss/recipe.toml | 0 recipes/wip/{tools => }/net/other/oha/recipe.toml | 0 recipes/wip/{tools => }/net/other/realm/recipe.toml | 0 recipes/wip/{tools => }/net/other/rqbit/recipe.toml | 0 recipes/wip/{tools => }/net/other/rustscan/recipe.toml | 0 recipes/wip/{tools => }/net/other/samba/answers.txt | 0 recipes/wip/{tools => }/net/other/samba/recipe.toml | 0 recipes/wip/{tools => }/net/other/slumber/recipe.toml | 0 recipes/wip/{tools => }/net/other/speedtest-rs/recipe.toml | 0 recipes/wip/{tools => }/net/other/spis/recipe.toml | 0 recipes/wip/{tools => }/net/other/srsran-4g/recipe.toml | 0 recipes/wip/{tools => }/net/other/srsran-project/recipe.toml | 0 recipes/wip/{tools => }/net/other/ssh/sshx/recipe.toml | 0 recipes/wip/{tools => }/net/other/tiny/recipe.toml | 0 recipes/wip/{tools => }/net/other/tobaru/recipe.toml | 0 recipes/wip/{tools => }/net/other/trippy/recipe.toml | 0 recipes/wip/{tools => }/net/other/turn-rs/recipe.toml | 0 recipes/wip/{tools => }/net/other/unbound/recipe.toml | 0 recipes/wip/{tools => }/net/other/updns/recipe.toml | 0 recipes/wip/{tools => }/net/other/varia/recipe.toml | 0 recipes/wip/{tools => }/net/other/vimini/recipe.toml | 0 recipes/wip/{tools => }/net/other/vopono/recipe.toml | 0 recipes/wip/{tools => }/net/other/vpncloud/recipe.toml | 0 recipes/wip/{tools => }/net/other/vsd/recipe.toml | 0 recipes/wip/{tools => }/net/other/warp/recipe.toml | 0 recipes/wip/{tools => }/net/other/wireguard-rs/recipe.toml | 0 recipes/wip/{tools => }/net/other/yazi/recipe.toml | 0 recipes/wip/{tools => }/net/server/apache-httpd/recipe.toml | 0 recipes/wip/{tools => }/net/server/apache-httpd/redox.patch | 0 recipes/wip/{tools => }/net/server/bitcoin-core/recipe.toml | 0 recipes/wip/{tools => }/net/server/devserver/recipe.toml | 0 recipes/wip/{tools => }/net/server/electrs/recipe.toml | 0 recipes/wip/{tools => }/net/server/freenginx/recipe.toml | 0 recipes/wip/{tools => }/net/server/guacamole-server/recipe.toml | 0 recipes/wip/{tools => }/net/server/http-server-rs/recipe.toml | 0 recipes/wip/{tools => }/net/server/nginx/recipe.toml | 0 recipes/wip/{tools => }/net/server/nostr-rs-relay/recipe.toml | 0 recipes/wip/{tools => }/net/server/rustdesk-server/recipe.toml | 0 recipes/wip/{tools => }/net/server/rustypaste/recipe.toml | 0 recipes/wip/{tools => }/net/server/simple-http-server/recipe.toml | 0 recipes/wip/{tools => }/net/server/sws/recipe.toml | 0 recipes/wip/{tools => }/net/spadesx/recipe.toml | 0 recipes/wip/{tools/ai => }/nnx/recipe.toml | 0 .../wip/{tools => }/office/libreoffice-dictionaries/recipe.toml | 0 .../wip/{tools => }/office/libreoffice-translations/recipe.toml | 0 recipes/wip/{tools => }/office/libreoffice/recipe.toml | 0 recipes/wip/{tools => }/science/alevin-fry/recipe.toml | 0 recipes/wip/{tools => }/science/celestia-data/recipe.toml | 0 recipes/wip/{tools => }/science/celestia/recipe.toml | 0 recipes/wip/{tools => }/science/gromacs/recipe.toml | 0 recipes/wip/{tools => }/science/mrbayes/recipe.toml | 0 recipes/wip/{tools => }/science/oarfish/recipe.toml | 0 recipes/wip/{tools => }/science/openfoam/recipe.toml | 0 recipes/wip/{tools => }/science/openspace/recipe.toml | 0 recipes/wip/{tools => }/science/piscem/recipe.toml | 0 recipes/wip/{tools => }/science/polypolish/recipe.toml | 0 recipes/wip/{tools => }/science/qmcpack/recipe.toml | 0 recipes/wip/{tools => }/science/scidataflow/recipe.toml | 0 recipes/wip/{tools => }/science/simpleaf/recipe.toml | 0 recipes/wip/{tools => }/science/specfem2d/recipe.toml | 0 recipes/wip/{tools => }/science/specfem3d-globe/recipe.toml | 0 recipes/wip/{tools => }/science/specfem3d/recipe.toml | 0 recipes/wip/{tools => }/science/vidoxide/recipe.toml | 0 recipes/wip/{tools => }/security/airgorah/recipe.toml | 0 recipes/wip/{tools => }/security/angryoxide/recipe.toml | 0 recipes/wip/{tools => }/security/apbf/recipe.toml | 0 recipes/wip/{tools => }/security/authoscope/recipe.toml | 0 recipes/wip/{tools => }/security/binsec/recipe.toml | 0 recipes/wip/{tools => }/security/burrow/recipe.toml | 0 recipes/wip/{tools => }/security/capstone/recipe.toml | 0 recipes/wip/{tools => }/security/cargo-scan/recipe.toml | 0 recipes/wip/{tools => }/security/clamav/recipe.toml | 0 recipes/wip/{tools => }/security/cotp/recipe.toml | 0 recipes/wip/{tools => }/security/dfir-toolkit/recipe.toml | 0 recipes/wip/{tools => }/security/feroxbuster/recipe.toml | 0 recipes/wip/{tools => }/security/flawz/recipe.toml | 0 recipes/wip/{tools => }/security/john-the-ripper/recipe.toml | 0 recipes/wip/{tools => }/security/kanha/recipe.toml | 0 recipes/wip/{tools => }/security/keyscope/recipe.toml | 0 recipes/wip/{tools => }/security/motus/recipe.toml | 0 recipes/wip/{tools => }/security/nitrocli/recipe.toml | 0 recipes/wip/{tools => }/security/openpgp-ca/recipe.toml | 0 recipes/wip/{tools => }/security/plutus-rustus/recipe.toml | 0 recipes/wip/{tools => }/security/recdec/recipe.toml | 0 recipes/wip/{tools => }/security/rowhammer-test/recipe.toml | 0 recipes/wip/{tools => }/security/rshijack/recipe.toml | 0 recipes/wip/{tools => }/security/rustyvault/recipe.toml | 0 recipes/wip/{tools => }/security/sn0int/recipe.toml | 0 recipes/wip/{tools => }/security/sniffglue/recipe.toml | 0 recipes/wip/{tools => }/security/sniffnet/recipe.toml | 0 recipes/wip/{tools => }/security/sq/recipe.toml | 0 recipes/wip/{tools => }/security/sqop/recipe.toml | 0 recipes/wip/{tools => }/security/sqv/recipe.toml | 0 recipes/wip/{tools => }/security/sss-cli/recipe.toml | 0 recipes/wip/{tools => }/security/stegano/recipe.toml | 0 recipes/wip/{tools => }/security/vagga/recipe.toml | 0 recipes/wip/{tools => }/security/veldora/recipe.toml | 0 recipes/wip/{tools => }/security/veracrypt/recipe.toml | 0 recipes/wip/{tools => }/security/weggli/recipe.toml | 0 recipes/wip/{tools => }/terminal/alacritty/recipe.toml | 0 recipes/wip/{tools => }/terminal/rioterm/recipe.toml | 0 recipes/wip/{tools => }/terminal/tab-rs/recipe.toml | 0 recipes/wip/{tools => }/terminal/tmux/recipe.toml | 0 recipes/wip/{tools => }/terminal/wezterm/recipe.toml | 0 recipes/wip/{tools => }/terminal/zellij/recipe.toml | 0 recipes/wip/{tools => }/time/dispute/recipe.toml | 0 recipes/wip/{tools => }/time/tomotroid/recipe.toml | 0 241 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{tools => }/archives/7-zip/recipe.toml (100%) rename recipes/wip/{tools => }/archives/lz4/recipe.toml (100%) rename recipes/wip/{tools => }/archives/lzip/recipe.toml (100%) rename recipes/wip/{tools => }/archives/mlar/recipe.toml (100%) rename recipes/wip/{tools => }/archives/orz/recipe.toml (100%) rename recipes/wip/{tools => }/archives/ouch/recipe.toml (100%) rename recipes/wip/{tools => }/archives/plzip/recipe.toml (100%) rename recipes/wip/{tools => }/archives/unzrip/recipe.toml (100%) rename recipes/wip/{tools => }/archives/zstd/recipe.toml (100%) rename recipes/wip/{tools => }/data-integrity/b3sum/recipe.toml (100%) rename recipes/wip/{tools => }/data-integrity/hashgood/recipe.toml (100%) rename recipes/wip/{tools => }/finance/bitcoin/btc-vanity/recipe.toml (100%) rename recipes/wip/{tools => }/finance/bitcoin/liana/recipe.toml (100%) rename recipes/wip/{tools => }/finance/bitcoin/nakamoto-wallet/recipe.toml (100%) rename recipes/wip/{tools => }/finance/bitcoin/nakatoshi/recipe.toml (100%) rename recipes/wip/{tools => }/finance/bitcoin/ord/recipe.toml (100%) rename recipes/wip/{tools => }/finance/bitcoin/pushtx/recipe.toml (100%) rename recipes/wip/{tools => }/finance/bitcoin/rusty-blockparser/recipe.toml (100%) rename recipes/wip/{tools => }/finance/donation/cargo-fund/recipe.toml (100%) rename recipes/wip/{tools => }/finance/market/apcacli/recipe.toml (100%) rename recipes/wip/{tools => }/finance/market/tick-rs/recipe.toml (100%) rename recipes/wip/{tools => }/finance/monero/gupax/recipe.toml (100%) rename recipes/wip/{tools => }/finance/monero/xmrig/recipe.toml (100%) rename recipes/wip/{tools => }/finance/rex/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/editors/blender-lts/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/editors/blender/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/editors/gimp/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/editors/inkscape/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/editors/krita/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/editors/opentoonz/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/appleseed/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/c-ray/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/cmark/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/darktable/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/derive-rs/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/dify/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/dominant-colours/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/dssim/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/embree/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/flowbetween/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/gaffer/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/glou/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/gmic-qt/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/gmic/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/graphicsmagick/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/graphviz/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/halo/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/hdr10plus-tool/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/image-sieve/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/imagemagick/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/incompact3d/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/jxl-oxide/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/kantig/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/lpl/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/luxcorerender/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/matugen/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/ocrs/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/oculante/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/openscad/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/ospray-studio/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/ospray/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/paraview-data/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/paraview/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/pilka/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/pix-image-viewer/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/pixsort/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/rascii/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/rawtherapee/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/reve/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/rimage/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/satty/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/shadergarden/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/simp/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/smag/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/texel/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/toybrot/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/tungsten-renderer/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/upscaling/rscale2x/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/upscaling/upscaler-rs/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/viu/recipe.toml (100%) rename recipes/wip/{tools => }/graphics/other/watch-stl/recipe.toml (100%) rename recipes/wip/{tools => }/math/fend/recipe.toml (100%) rename recipes/wip/{tools => }/math/fractal-explorer/recipe.toml (100%) rename recipes/wip/{tools => }/math/kalc/recipe.toml (100%) rename recipes/wip/{tools => }/math/kalker/recipe.toml (100%) rename recipes/wip/{tools => }/math/numbat/recipe.toml (100%) rename recipes/wip/{tools => }/math/primesieve/recipe.toml (100%) rename recipes/wip/{tools => }/math/rink/recipe.toml (100%) rename recipes/wip/{tools => }/net/bittorrent/attractorr/recipe.toml (100%) rename recipes/wip/{tools => }/net/bittorrent/synapse-bt/recipe.toml (100%) rename recipes/wip/{tools => }/net/bittorrent/transmission/recipe.toml (100%) rename recipes/wip/{tools => }/net/chat/telegram-desktop/recipe.toml (100%) rename recipes/wip/{tools => }/net/chat/termchat/recipe.toml (100%) rename recipes/wip/{tools => }/net/download/aim/recipe.toml (100%) rename recipes/wip/{tools => }/net/download/anime-downloader/recipe.toml (100%) rename recipes/wip/{tools => }/net/download/wget/recipe.toml (100%) rename recipes/wip/{tools => }/net/download/wget2/recipe.toml (100%) rename recipes/wip/{tools => }/net/download/yaydl/recipe.toml (100%) rename recipes/wip/{tools => }/net/download/youtube-tui/recipe.toml (100%) rename recipes/wip/{tools => }/net/gemini/lagrange/recipe.toml (100%) rename recipes/wip/{tools => }/net/lan/zerotier/recipe.toml (100%) rename recipes/wip/{tools => }/net/onion-routing/arti/recipe.toml (100%) rename recipes/wip/{tools => }/net/onion-routing/i2pd/recipe.toml (100%) rename recipes/wip/{tools => }/net/onion-routing/lokinet/recipe.toml (100%) rename recipes/wip/{tools => }/net/onion-routing/tor-browser/recipe.toml (100%) rename recipes/wip/{tools => }/net/onion-routing/tor/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/arp-scanner/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/bita/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/bore/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/boringtun/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/celeste/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/cobalt/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/crab-dlna/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/dqy/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/drill/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/dufs/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/floresta/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/guacamole-client/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/halloy/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/havn/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/hinoki/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/hurl/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/impala/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/lldap/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/lychee/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/lynx/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/meli/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/miniupnpc/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/moonfire-nvr-server/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/netop/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/netscanner/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/nmap/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/nspr/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/nss-pem/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/nss/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/oha/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/realm/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/rqbit/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/rustscan/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/samba/answers.txt (100%) rename recipes/wip/{tools => }/net/other/samba/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/slumber/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/speedtest-rs/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/spis/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/srsran-4g/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/srsran-project/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/ssh/sshx/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/tiny/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/tobaru/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/trippy/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/turn-rs/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/unbound/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/updns/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/varia/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/vimini/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/vopono/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/vpncloud/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/vsd/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/warp/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/wireguard-rs/recipe.toml (100%) rename recipes/wip/{tools => }/net/other/yazi/recipe.toml (100%) rename recipes/wip/{tools => }/net/server/apache-httpd/recipe.toml (100%) rename recipes/wip/{tools => }/net/server/apache-httpd/redox.patch (100%) rename recipes/wip/{tools => }/net/server/bitcoin-core/recipe.toml (100%) rename recipes/wip/{tools => }/net/server/devserver/recipe.toml (100%) rename recipes/wip/{tools => }/net/server/electrs/recipe.toml (100%) rename recipes/wip/{tools => }/net/server/freenginx/recipe.toml (100%) rename recipes/wip/{tools => }/net/server/guacamole-server/recipe.toml (100%) rename recipes/wip/{tools => }/net/server/http-server-rs/recipe.toml (100%) rename recipes/wip/{tools => }/net/server/nginx/recipe.toml (100%) rename recipes/wip/{tools => }/net/server/nostr-rs-relay/recipe.toml (100%) rename recipes/wip/{tools => }/net/server/rustdesk-server/recipe.toml (100%) rename recipes/wip/{tools => }/net/server/rustypaste/recipe.toml (100%) rename recipes/wip/{tools => }/net/server/simple-http-server/recipe.toml (100%) rename recipes/wip/{tools => }/net/server/sws/recipe.toml (100%) rename recipes/wip/{tools => }/net/spadesx/recipe.toml (100%) rename recipes/wip/{tools/ai => }/nnx/recipe.toml (100%) rename recipes/wip/{tools => }/office/libreoffice-dictionaries/recipe.toml (100%) rename recipes/wip/{tools => }/office/libreoffice-translations/recipe.toml (100%) rename recipes/wip/{tools => }/office/libreoffice/recipe.toml (100%) rename recipes/wip/{tools => }/science/alevin-fry/recipe.toml (100%) rename recipes/wip/{tools => }/science/celestia-data/recipe.toml (100%) rename recipes/wip/{tools => }/science/celestia/recipe.toml (100%) rename recipes/wip/{tools => }/science/gromacs/recipe.toml (100%) rename recipes/wip/{tools => }/science/mrbayes/recipe.toml (100%) rename recipes/wip/{tools => }/science/oarfish/recipe.toml (100%) rename recipes/wip/{tools => }/science/openfoam/recipe.toml (100%) rename recipes/wip/{tools => }/science/openspace/recipe.toml (100%) rename recipes/wip/{tools => }/science/piscem/recipe.toml (100%) rename recipes/wip/{tools => }/science/polypolish/recipe.toml (100%) rename recipes/wip/{tools => }/science/qmcpack/recipe.toml (100%) rename recipes/wip/{tools => }/science/scidataflow/recipe.toml (100%) rename recipes/wip/{tools => }/science/simpleaf/recipe.toml (100%) rename recipes/wip/{tools => }/science/specfem2d/recipe.toml (100%) rename recipes/wip/{tools => }/science/specfem3d-globe/recipe.toml (100%) rename recipes/wip/{tools => }/science/specfem3d/recipe.toml (100%) rename recipes/wip/{tools => }/science/vidoxide/recipe.toml (100%) rename recipes/wip/{tools => }/security/airgorah/recipe.toml (100%) rename recipes/wip/{tools => }/security/angryoxide/recipe.toml (100%) rename recipes/wip/{tools => }/security/apbf/recipe.toml (100%) rename recipes/wip/{tools => }/security/authoscope/recipe.toml (100%) rename recipes/wip/{tools => }/security/binsec/recipe.toml (100%) rename recipes/wip/{tools => }/security/burrow/recipe.toml (100%) rename recipes/wip/{tools => }/security/capstone/recipe.toml (100%) rename recipes/wip/{tools => }/security/cargo-scan/recipe.toml (100%) rename recipes/wip/{tools => }/security/clamav/recipe.toml (100%) rename recipes/wip/{tools => }/security/cotp/recipe.toml (100%) rename recipes/wip/{tools => }/security/dfir-toolkit/recipe.toml (100%) rename recipes/wip/{tools => }/security/feroxbuster/recipe.toml (100%) rename recipes/wip/{tools => }/security/flawz/recipe.toml (100%) rename recipes/wip/{tools => }/security/john-the-ripper/recipe.toml (100%) rename recipes/wip/{tools => }/security/kanha/recipe.toml (100%) rename recipes/wip/{tools => }/security/keyscope/recipe.toml (100%) rename recipes/wip/{tools => }/security/motus/recipe.toml (100%) rename recipes/wip/{tools => }/security/nitrocli/recipe.toml (100%) rename recipes/wip/{tools => }/security/openpgp-ca/recipe.toml (100%) rename recipes/wip/{tools => }/security/plutus-rustus/recipe.toml (100%) rename recipes/wip/{tools => }/security/recdec/recipe.toml (100%) rename recipes/wip/{tools => }/security/rowhammer-test/recipe.toml (100%) rename recipes/wip/{tools => }/security/rshijack/recipe.toml (100%) rename recipes/wip/{tools => }/security/rustyvault/recipe.toml (100%) rename recipes/wip/{tools => }/security/sn0int/recipe.toml (100%) rename recipes/wip/{tools => }/security/sniffglue/recipe.toml (100%) rename recipes/wip/{tools => }/security/sniffnet/recipe.toml (100%) rename recipes/wip/{tools => }/security/sq/recipe.toml (100%) rename recipes/wip/{tools => }/security/sqop/recipe.toml (100%) rename recipes/wip/{tools => }/security/sqv/recipe.toml (100%) rename recipes/wip/{tools => }/security/sss-cli/recipe.toml (100%) rename recipes/wip/{tools => }/security/stegano/recipe.toml (100%) rename recipes/wip/{tools => }/security/vagga/recipe.toml (100%) rename recipes/wip/{tools => }/security/veldora/recipe.toml (100%) rename recipes/wip/{tools => }/security/veracrypt/recipe.toml (100%) rename recipes/wip/{tools => }/security/weggli/recipe.toml (100%) rename recipes/wip/{tools => }/terminal/alacritty/recipe.toml (100%) rename recipes/wip/{tools => }/terminal/rioterm/recipe.toml (100%) rename recipes/wip/{tools => }/terminal/tab-rs/recipe.toml (100%) rename recipes/wip/{tools => }/terminal/tmux/recipe.toml (100%) rename recipes/wip/{tools => }/terminal/wezterm/recipe.toml (100%) rename recipes/wip/{tools => }/terminal/zellij/recipe.toml (100%) rename recipes/wip/{tools => }/time/dispute/recipe.toml (100%) rename recipes/wip/{tools => }/time/tomotroid/recipe.toml (100%) diff --git a/recipes/wip/tools/archives/7-zip/recipe.toml b/recipes/wip/archives/7-zip/recipe.toml similarity index 100% rename from recipes/wip/tools/archives/7-zip/recipe.toml rename to recipes/wip/archives/7-zip/recipe.toml diff --git a/recipes/wip/tools/archives/lz4/recipe.toml b/recipes/wip/archives/lz4/recipe.toml similarity index 100% rename from recipes/wip/tools/archives/lz4/recipe.toml rename to recipes/wip/archives/lz4/recipe.toml diff --git a/recipes/wip/tools/archives/lzip/recipe.toml b/recipes/wip/archives/lzip/recipe.toml similarity index 100% rename from recipes/wip/tools/archives/lzip/recipe.toml rename to recipes/wip/archives/lzip/recipe.toml diff --git a/recipes/wip/tools/archives/mlar/recipe.toml b/recipes/wip/archives/mlar/recipe.toml similarity index 100% rename from recipes/wip/tools/archives/mlar/recipe.toml rename to recipes/wip/archives/mlar/recipe.toml diff --git a/recipes/wip/tools/archives/orz/recipe.toml b/recipes/wip/archives/orz/recipe.toml similarity index 100% rename from recipes/wip/tools/archives/orz/recipe.toml rename to recipes/wip/archives/orz/recipe.toml diff --git a/recipes/wip/tools/archives/ouch/recipe.toml b/recipes/wip/archives/ouch/recipe.toml similarity index 100% rename from recipes/wip/tools/archives/ouch/recipe.toml rename to recipes/wip/archives/ouch/recipe.toml diff --git a/recipes/wip/tools/archives/plzip/recipe.toml b/recipes/wip/archives/plzip/recipe.toml similarity index 100% rename from recipes/wip/tools/archives/plzip/recipe.toml rename to recipes/wip/archives/plzip/recipe.toml diff --git a/recipes/wip/tools/archives/unzrip/recipe.toml b/recipes/wip/archives/unzrip/recipe.toml similarity index 100% rename from recipes/wip/tools/archives/unzrip/recipe.toml rename to recipes/wip/archives/unzrip/recipe.toml diff --git a/recipes/wip/tools/archives/zstd/recipe.toml b/recipes/wip/archives/zstd/recipe.toml similarity index 100% rename from recipes/wip/tools/archives/zstd/recipe.toml rename to recipes/wip/archives/zstd/recipe.toml diff --git a/recipes/wip/tools/data-integrity/b3sum/recipe.toml b/recipes/wip/data-integrity/b3sum/recipe.toml similarity index 100% rename from recipes/wip/tools/data-integrity/b3sum/recipe.toml rename to recipes/wip/data-integrity/b3sum/recipe.toml diff --git a/recipes/wip/tools/data-integrity/hashgood/recipe.toml b/recipes/wip/data-integrity/hashgood/recipe.toml similarity index 100% rename from recipes/wip/tools/data-integrity/hashgood/recipe.toml rename to recipes/wip/data-integrity/hashgood/recipe.toml diff --git a/recipes/wip/tools/finance/bitcoin/btc-vanity/recipe.toml b/recipes/wip/finance/bitcoin/btc-vanity/recipe.toml similarity index 100% rename from recipes/wip/tools/finance/bitcoin/btc-vanity/recipe.toml rename to recipes/wip/finance/bitcoin/btc-vanity/recipe.toml diff --git a/recipes/wip/tools/finance/bitcoin/liana/recipe.toml b/recipes/wip/finance/bitcoin/liana/recipe.toml similarity index 100% rename from recipes/wip/tools/finance/bitcoin/liana/recipe.toml rename to recipes/wip/finance/bitcoin/liana/recipe.toml diff --git a/recipes/wip/tools/finance/bitcoin/nakamoto-wallet/recipe.toml b/recipes/wip/finance/bitcoin/nakamoto-wallet/recipe.toml similarity index 100% rename from recipes/wip/tools/finance/bitcoin/nakamoto-wallet/recipe.toml rename to recipes/wip/finance/bitcoin/nakamoto-wallet/recipe.toml diff --git a/recipes/wip/tools/finance/bitcoin/nakatoshi/recipe.toml b/recipes/wip/finance/bitcoin/nakatoshi/recipe.toml similarity index 100% rename from recipes/wip/tools/finance/bitcoin/nakatoshi/recipe.toml rename to recipes/wip/finance/bitcoin/nakatoshi/recipe.toml diff --git a/recipes/wip/tools/finance/bitcoin/ord/recipe.toml b/recipes/wip/finance/bitcoin/ord/recipe.toml similarity index 100% rename from recipes/wip/tools/finance/bitcoin/ord/recipe.toml rename to recipes/wip/finance/bitcoin/ord/recipe.toml diff --git a/recipes/wip/tools/finance/bitcoin/pushtx/recipe.toml b/recipes/wip/finance/bitcoin/pushtx/recipe.toml similarity index 100% rename from recipes/wip/tools/finance/bitcoin/pushtx/recipe.toml rename to recipes/wip/finance/bitcoin/pushtx/recipe.toml diff --git a/recipes/wip/tools/finance/bitcoin/rusty-blockparser/recipe.toml b/recipes/wip/finance/bitcoin/rusty-blockparser/recipe.toml similarity index 100% rename from recipes/wip/tools/finance/bitcoin/rusty-blockparser/recipe.toml rename to recipes/wip/finance/bitcoin/rusty-blockparser/recipe.toml diff --git a/recipes/wip/tools/finance/donation/cargo-fund/recipe.toml b/recipes/wip/finance/donation/cargo-fund/recipe.toml similarity index 100% rename from recipes/wip/tools/finance/donation/cargo-fund/recipe.toml rename to recipes/wip/finance/donation/cargo-fund/recipe.toml diff --git a/recipes/wip/tools/finance/market/apcacli/recipe.toml b/recipes/wip/finance/market/apcacli/recipe.toml similarity index 100% rename from recipes/wip/tools/finance/market/apcacli/recipe.toml rename to recipes/wip/finance/market/apcacli/recipe.toml diff --git a/recipes/wip/tools/finance/market/tick-rs/recipe.toml b/recipes/wip/finance/market/tick-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/finance/market/tick-rs/recipe.toml rename to recipes/wip/finance/market/tick-rs/recipe.toml diff --git a/recipes/wip/tools/finance/monero/gupax/recipe.toml b/recipes/wip/finance/monero/gupax/recipe.toml similarity index 100% rename from recipes/wip/tools/finance/monero/gupax/recipe.toml rename to recipes/wip/finance/monero/gupax/recipe.toml diff --git a/recipes/wip/tools/finance/monero/xmrig/recipe.toml b/recipes/wip/finance/monero/xmrig/recipe.toml similarity index 100% rename from recipes/wip/tools/finance/monero/xmrig/recipe.toml rename to recipes/wip/finance/monero/xmrig/recipe.toml diff --git a/recipes/wip/tools/finance/rex/recipe.toml b/recipes/wip/finance/rex/recipe.toml similarity index 100% rename from recipes/wip/tools/finance/rex/recipe.toml rename to recipes/wip/finance/rex/recipe.toml diff --git a/recipes/wip/tools/graphics/editors/blender-lts/recipe.toml b/recipes/wip/graphics/editors/blender-lts/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/editors/blender-lts/recipe.toml rename to recipes/wip/graphics/editors/blender-lts/recipe.toml diff --git a/recipes/wip/tools/graphics/editors/blender/recipe.toml b/recipes/wip/graphics/editors/blender/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/editors/blender/recipe.toml rename to recipes/wip/graphics/editors/blender/recipe.toml diff --git a/recipes/wip/tools/graphics/editors/gimp/recipe.toml b/recipes/wip/graphics/editors/gimp/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/editors/gimp/recipe.toml rename to recipes/wip/graphics/editors/gimp/recipe.toml diff --git a/recipes/wip/tools/graphics/editors/inkscape/recipe.toml b/recipes/wip/graphics/editors/inkscape/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/editors/inkscape/recipe.toml rename to recipes/wip/graphics/editors/inkscape/recipe.toml diff --git a/recipes/wip/tools/graphics/editors/krita/recipe.toml b/recipes/wip/graphics/editors/krita/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/editors/krita/recipe.toml rename to recipes/wip/graphics/editors/krita/recipe.toml diff --git a/recipes/wip/tools/graphics/editors/opentoonz/recipe.toml b/recipes/wip/graphics/editors/opentoonz/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/editors/opentoonz/recipe.toml rename to recipes/wip/graphics/editors/opentoonz/recipe.toml diff --git a/recipes/wip/tools/graphics/other/appleseed/recipe.toml b/recipes/wip/graphics/other/appleseed/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/appleseed/recipe.toml rename to recipes/wip/graphics/other/appleseed/recipe.toml diff --git a/recipes/wip/tools/graphics/other/c-ray/recipe.toml b/recipes/wip/graphics/other/c-ray/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/c-ray/recipe.toml rename to recipes/wip/graphics/other/c-ray/recipe.toml diff --git a/recipes/wip/tools/graphics/other/cmark/recipe.toml b/recipes/wip/graphics/other/cmark/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/cmark/recipe.toml rename to recipes/wip/graphics/other/cmark/recipe.toml diff --git a/recipes/wip/tools/graphics/other/darktable/recipe.toml b/recipes/wip/graphics/other/darktable/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/darktable/recipe.toml rename to recipes/wip/graphics/other/darktable/recipe.toml diff --git a/recipes/wip/tools/graphics/other/derive-rs/recipe.toml b/recipes/wip/graphics/other/derive-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/derive-rs/recipe.toml rename to recipes/wip/graphics/other/derive-rs/recipe.toml diff --git a/recipes/wip/tools/graphics/other/dify/recipe.toml b/recipes/wip/graphics/other/dify/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/dify/recipe.toml rename to recipes/wip/graphics/other/dify/recipe.toml diff --git a/recipes/wip/tools/graphics/other/dominant-colours/recipe.toml b/recipes/wip/graphics/other/dominant-colours/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/dominant-colours/recipe.toml rename to recipes/wip/graphics/other/dominant-colours/recipe.toml diff --git a/recipes/wip/tools/graphics/other/dssim/recipe.toml b/recipes/wip/graphics/other/dssim/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/dssim/recipe.toml rename to recipes/wip/graphics/other/dssim/recipe.toml diff --git a/recipes/wip/tools/graphics/other/embree/recipe.toml b/recipes/wip/graphics/other/embree/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/embree/recipe.toml rename to recipes/wip/graphics/other/embree/recipe.toml diff --git a/recipes/wip/tools/graphics/other/flowbetween/recipe.toml b/recipes/wip/graphics/other/flowbetween/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/flowbetween/recipe.toml rename to recipes/wip/graphics/other/flowbetween/recipe.toml diff --git a/recipes/wip/tools/graphics/other/gaffer/recipe.toml b/recipes/wip/graphics/other/gaffer/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/gaffer/recipe.toml rename to recipes/wip/graphics/other/gaffer/recipe.toml diff --git a/recipes/wip/tools/graphics/other/glou/recipe.toml b/recipes/wip/graphics/other/glou/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/glou/recipe.toml rename to recipes/wip/graphics/other/glou/recipe.toml diff --git a/recipes/wip/tools/graphics/other/gmic-qt/recipe.toml b/recipes/wip/graphics/other/gmic-qt/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/gmic-qt/recipe.toml rename to recipes/wip/graphics/other/gmic-qt/recipe.toml diff --git a/recipes/wip/tools/graphics/other/gmic/recipe.toml b/recipes/wip/graphics/other/gmic/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/gmic/recipe.toml rename to recipes/wip/graphics/other/gmic/recipe.toml diff --git a/recipes/wip/tools/graphics/other/graphicsmagick/recipe.toml b/recipes/wip/graphics/other/graphicsmagick/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/graphicsmagick/recipe.toml rename to recipes/wip/graphics/other/graphicsmagick/recipe.toml diff --git a/recipes/wip/tools/graphics/other/graphviz/recipe.toml b/recipes/wip/graphics/other/graphviz/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/graphviz/recipe.toml rename to recipes/wip/graphics/other/graphviz/recipe.toml diff --git a/recipes/wip/tools/graphics/other/halo/recipe.toml b/recipes/wip/graphics/other/halo/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/halo/recipe.toml rename to recipes/wip/graphics/other/halo/recipe.toml diff --git a/recipes/wip/tools/graphics/other/hdr10plus-tool/recipe.toml b/recipes/wip/graphics/other/hdr10plus-tool/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/hdr10plus-tool/recipe.toml rename to recipes/wip/graphics/other/hdr10plus-tool/recipe.toml diff --git a/recipes/wip/tools/graphics/other/image-sieve/recipe.toml b/recipes/wip/graphics/other/image-sieve/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/image-sieve/recipe.toml rename to recipes/wip/graphics/other/image-sieve/recipe.toml diff --git a/recipes/wip/tools/graphics/other/imagemagick/recipe.toml b/recipes/wip/graphics/other/imagemagick/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/imagemagick/recipe.toml rename to recipes/wip/graphics/other/imagemagick/recipe.toml diff --git a/recipes/wip/tools/graphics/other/incompact3d/recipe.toml b/recipes/wip/graphics/other/incompact3d/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/incompact3d/recipe.toml rename to recipes/wip/graphics/other/incompact3d/recipe.toml diff --git a/recipes/wip/tools/graphics/other/jxl-oxide/recipe.toml b/recipes/wip/graphics/other/jxl-oxide/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/jxl-oxide/recipe.toml rename to recipes/wip/graphics/other/jxl-oxide/recipe.toml diff --git a/recipes/wip/tools/graphics/other/kantig/recipe.toml b/recipes/wip/graphics/other/kantig/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/kantig/recipe.toml rename to recipes/wip/graphics/other/kantig/recipe.toml diff --git a/recipes/wip/tools/graphics/other/lpl/recipe.toml b/recipes/wip/graphics/other/lpl/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/lpl/recipe.toml rename to recipes/wip/graphics/other/lpl/recipe.toml diff --git a/recipes/wip/tools/graphics/other/luxcorerender/recipe.toml b/recipes/wip/graphics/other/luxcorerender/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/luxcorerender/recipe.toml rename to recipes/wip/graphics/other/luxcorerender/recipe.toml diff --git a/recipes/wip/tools/graphics/other/matugen/recipe.toml b/recipes/wip/graphics/other/matugen/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/matugen/recipe.toml rename to recipes/wip/graphics/other/matugen/recipe.toml diff --git a/recipes/wip/tools/graphics/other/ocrs/recipe.toml b/recipes/wip/graphics/other/ocrs/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/ocrs/recipe.toml rename to recipes/wip/graphics/other/ocrs/recipe.toml diff --git a/recipes/wip/tools/graphics/other/oculante/recipe.toml b/recipes/wip/graphics/other/oculante/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/oculante/recipe.toml rename to recipes/wip/graphics/other/oculante/recipe.toml diff --git a/recipes/wip/tools/graphics/other/openscad/recipe.toml b/recipes/wip/graphics/other/openscad/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/openscad/recipe.toml rename to recipes/wip/graphics/other/openscad/recipe.toml diff --git a/recipes/wip/tools/graphics/other/ospray-studio/recipe.toml b/recipes/wip/graphics/other/ospray-studio/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/ospray-studio/recipe.toml rename to recipes/wip/graphics/other/ospray-studio/recipe.toml diff --git a/recipes/wip/tools/graphics/other/ospray/recipe.toml b/recipes/wip/graphics/other/ospray/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/ospray/recipe.toml rename to recipes/wip/graphics/other/ospray/recipe.toml diff --git a/recipes/wip/tools/graphics/other/paraview-data/recipe.toml b/recipes/wip/graphics/other/paraview-data/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/paraview-data/recipe.toml rename to recipes/wip/graphics/other/paraview-data/recipe.toml diff --git a/recipes/wip/tools/graphics/other/paraview/recipe.toml b/recipes/wip/graphics/other/paraview/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/paraview/recipe.toml rename to recipes/wip/graphics/other/paraview/recipe.toml diff --git a/recipes/wip/tools/graphics/other/pilka/recipe.toml b/recipes/wip/graphics/other/pilka/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/pilka/recipe.toml rename to recipes/wip/graphics/other/pilka/recipe.toml diff --git a/recipes/wip/tools/graphics/other/pix-image-viewer/recipe.toml b/recipes/wip/graphics/other/pix-image-viewer/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/pix-image-viewer/recipe.toml rename to recipes/wip/graphics/other/pix-image-viewer/recipe.toml diff --git a/recipes/wip/tools/graphics/other/pixsort/recipe.toml b/recipes/wip/graphics/other/pixsort/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/pixsort/recipe.toml rename to recipes/wip/graphics/other/pixsort/recipe.toml diff --git a/recipes/wip/tools/graphics/other/rascii/recipe.toml b/recipes/wip/graphics/other/rascii/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/rascii/recipe.toml rename to recipes/wip/graphics/other/rascii/recipe.toml diff --git a/recipes/wip/tools/graphics/other/rawtherapee/recipe.toml b/recipes/wip/graphics/other/rawtherapee/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/rawtherapee/recipe.toml rename to recipes/wip/graphics/other/rawtherapee/recipe.toml diff --git a/recipes/wip/tools/graphics/other/reve/recipe.toml b/recipes/wip/graphics/other/reve/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/reve/recipe.toml rename to recipes/wip/graphics/other/reve/recipe.toml diff --git a/recipes/wip/tools/graphics/other/rimage/recipe.toml b/recipes/wip/graphics/other/rimage/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/rimage/recipe.toml rename to recipes/wip/graphics/other/rimage/recipe.toml diff --git a/recipes/wip/tools/graphics/other/satty/recipe.toml b/recipes/wip/graphics/other/satty/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/satty/recipe.toml rename to recipes/wip/graphics/other/satty/recipe.toml diff --git a/recipes/wip/tools/graphics/other/shadergarden/recipe.toml b/recipes/wip/graphics/other/shadergarden/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/shadergarden/recipe.toml rename to recipes/wip/graphics/other/shadergarden/recipe.toml diff --git a/recipes/wip/tools/graphics/other/simp/recipe.toml b/recipes/wip/graphics/other/simp/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/simp/recipe.toml rename to recipes/wip/graphics/other/simp/recipe.toml diff --git a/recipes/wip/tools/graphics/other/smag/recipe.toml b/recipes/wip/graphics/other/smag/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/smag/recipe.toml rename to recipes/wip/graphics/other/smag/recipe.toml diff --git a/recipes/wip/tools/graphics/other/texel/recipe.toml b/recipes/wip/graphics/other/texel/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/texel/recipe.toml rename to recipes/wip/graphics/other/texel/recipe.toml diff --git a/recipes/wip/tools/graphics/other/toybrot/recipe.toml b/recipes/wip/graphics/other/toybrot/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/toybrot/recipe.toml rename to recipes/wip/graphics/other/toybrot/recipe.toml diff --git a/recipes/wip/tools/graphics/other/tungsten-renderer/recipe.toml b/recipes/wip/graphics/other/tungsten-renderer/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/tungsten-renderer/recipe.toml rename to recipes/wip/graphics/other/tungsten-renderer/recipe.toml diff --git a/recipes/wip/tools/graphics/other/upscaling/rscale2x/recipe.toml b/recipes/wip/graphics/other/upscaling/rscale2x/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/upscaling/rscale2x/recipe.toml rename to recipes/wip/graphics/other/upscaling/rscale2x/recipe.toml diff --git a/recipes/wip/tools/graphics/other/upscaling/upscaler-rs/recipe.toml b/recipes/wip/graphics/other/upscaling/upscaler-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/upscaling/upscaler-rs/recipe.toml rename to recipes/wip/graphics/other/upscaling/upscaler-rs/recipe.toml diff --git a/recipes/wip/tools/graphics/other/viu/recipe.toml b/recipes/wip/graphics/other/viu/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/viu/recipe.toml rename to recipes/wip/graphics/other/viu/recipe.toml diff --git a/recipes/wip/tools/graphics/other/watch-stl/recipe.toml b/recipes/wip/graphics/other/watch-stl/recipe.toml similarity index 100% rename from recipes/wip/tools/graphics/other/watch-stl/recipe.toml rename to recipes/wip/graphics/other/watch-stl/recipe.toml diff --git a/recipes/wip/tools/math/fend/recipe.toml b/recipes/wip/math/fend/recipe.toml similarity index 100% rename from recipes/wip/tools/math/fend/recipe.toml rename to recipes/wip/math/fend/recipe.toml diff --git a/recipes/wip/tools/math/fractal-explorer/recipe.toml b/recipes/wip/math/fractal-explorer/recipe.toml similarity index 100% rename from recipes/wip/tools/math/fractal-explorer/recipe.toml rename to recipes/wip/math/fractal-explorer/recipe.toml diff --git a/recipes/wip/tools/math/kalc/recipe.toml b/recipes/wip/math/kalc/recipe.toml similarity index 100% rename from recipes/wip/tools/math/kalc/recipe.toml rename to recipes/wip/math/kalc/recipe.toml diff --git a/recipes/wip/tools/math/kalker/recipe.toml b/recipes/wip/math/kalker/recipe.toml similarity index 100% rename from recipes/wip/tools/math/kalker/recipe.toml rename to recipes/wip/math/kalker/recipe.toml diff --git a/recipes/wip/tools/math/numbat/recipe.toml b/recipes/wip/math/numbat/recipe.toml similarity index 100% rename from recipes/wip/tools/math/numbat/recipe.toml rename to recipes/wip/math/numbat/recipe.toml diff --git a/recipes/wip/tools/math/primesieve/recipe.toml b/recipes/wip/math/primesieve/recipe.toml similarity index 100% rename from recipes/wip/tools/math/primesieve/recipe.toml rename to recipes/wip/math/primesieve/recipe.toml diff --git a/recipes/wip/tools/math/rink/recipe.toml b/recipes/wip/math/rink/recipe.toml similarity index 100% rename from recipes/wip/tools/math/rink/recipe.toml rename to recipes/wip/math/rink/recipe.toml diff --git a/recipes/wip/tools/net/bittorrent/attractorr/recipe.toml b/recipes/wip/net/bittorrent/attractorr/recipe.toml similarity index 100% rename from recipes/wip/tools/net/bittorrent/attractorr/recipe.toml rename to recipes/wip/net/bittorrent/attractorr/recipe.toml diff --git a/recipes/wip/tools/net/bittorrent/synapse-bt/recipe.toml b/recipes/wip/net/bittorrent/synapse-bt/recipe.toml similarity index 100% rename from recipes/wip/tools/net/bittorrent/synapse-bt/recipe.toml rename to recipes/wip/net/bittorrent/synapse-bt/recipe.toml diff --git a/recipes/wip/tools/net/bittorrent/transmission/recipe.toml b/recipes/wip/net/bittorrent/transmission/recipe.toml similarity index 100% rename from recipes/wip/tools/net/bittorrent/transmission/recipe.toml rename to recipes/wip/net/bittorrent/transmission/recipe.toml diff --git a/recipes/wip/tools/net/chat/telegram-desktop/recipe.toml b/recipes/wip/net/chat/telegram-desktop/recipe.toml similarity index 100% rename from recipes/wip/tools/net/chat/telegram-desktop/recipe.toml rename to recipes/wip/net/chat/telegram-desktop/recipe.toml diff --git a/recipes/wip/tools/net/chat/termchat/recipe.toml b/recipes/wip/net/chat/termchat/recipe.toml similarity index 100% rename from recipes/wip/tools/net/chat/termchat/recipe.toml rename to recipes/wip/net/chat/termchat/recipe.toml diff --git a/recipes/wip/tools/net/download/aim/recipe.toml b/recipes/wip/net/download/aim/recipe.toml similarity index 100% rename from recipes/wip/tools/net/download/aim/recipe.toml rename to recipes/wip/net/download/aim/recipe.toml diff --git a/recipes/wip/tools/net/download/anime-downloader/recipe.toml b/recipes/wip/net/download/anime-downloader/recipe.toml similarity index 100% rename from recipes/wip/tools/net/download/anime-downloader/recipe.toml rename to recipes/wip/net/download/anime-downloader/recipe.toml diff --git a/recipes/wip/tools/net/download/wget/recipe.toml b/recipes/wip/net/download/wget/recipe.toml similarity index 100% rename from recipes/wip/tools/net/download/wget/recipe.toml rename to recipes/wip/net/download/wget/recipe.toml diff --git a/recipes/wip/tools/net/download/wget2/recipe.toml b/recipes/wip/net/download/wget2/recipe.toml similarity index 100% rename from recipes/wip/tools/net/download/wget2/recipe.toml rename to recipes/wip/net/download/wget2/recipe.toml diff --git a/recipes/wip/tools/net/download/yaydl/recipe.toml b/recipes/wip/net/download/yaydl/recipe.toml similarity index 100% rename from recipes/wip/tools/net/download/yaydl/recipe.toml rename to recipes/wip/net/download/yaydl/recipe.toml diff --git a/recipes/wip/tools/net/download/youtube-tui/recipe.toml b/recipes/wip/net/download/youtube-tui/recipe.toml similarity index 100% rename from recipes/wip/tools/net/download/youtube-tui/recipe.toml rename to recipes/wip/net/download/youtube-tui/recipe.toml diff --git a/recipes/wip/tools/net/gemini/lagrange/recipe.toml b/recipes/wip/net/gemini/lagrange/recipe.toml similarity index 100% rename from recipes/wip/tools/net/gemini/lagrange/recipe.toml rename to recipes/wip/net/gemini/lagrange/recipe.toml diff --git a/recipes/wip/tools/net/lan/zerotier/recipe.toml b/recipes/wip/net/lan/zerotier/recipe.toml similarity index 100% rename from recipes/wip/tools/net/lan/zerotier/recipe.toml rename to recipes/wip/net/lan/zerotier/recipe.toml diff --git a/recipes/wip/tools/net/onion-routing/arti/recipe.toml b/recipes/wip/net/onion-routing/arti/recipe.toml similarity index 100% rename from recipes/wip/tools/net/onion-routing/arti/recipe.toml rename to recipes/wip/net/onion-routing/arti/recipe.toml diff --git a/recipes/wip/tools/net/onion-routing/i2pd/recipe.toml b/recipes/wip/net/onion-routing/i2pd/recipe.toml similarity index 100% rename from recipes/wip/tools/net/onion-routing/i2pd/recipe.toml rename to recipes/wip/net/onion-routing/i2pd/recipe.toml diff --git a/recipes/wip/tools/net/onion-routing/lokinet/recipe.toml b/recipes/wip/net/onion-routing/lokinet/recipe.toml similarity index 100% rename from recipes/wip/tools/net/onion-routing/lokinet/recipe.toml rename to recipes/wip/net/onion-routing/lokinet/recipe.toml diff --git a/recipes/wip/tools/net/onion-routing/tor-browser/recipe.toml b/recipes/wip/net/onion-routing/tor-browser/recipe.toml similarity index 100% rename from recipes/wip/tools/net/onion-routing/tor-browser/recipe.toml rename to recipes/wip/net/onion-routing/tor-browser/recipe.toml diff --git a/recipes/wip/tools/net/onion-routing/tor/recipe.toml b/recipes/wip/net/onion-routing/tor/recipe.toml similarity index 100% rename from recipes/wip/tools/net/onion-routing/tor/recipe.toml rename to recipes/wip/net/onion-routing/tor/recipe.toml diff --git a/recipes/wip/tools/net/other/arp-scanner/recipe.toml b/recipes/wip/net/other/arp-scanner/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/arp-scanner/recipe.toml rename to recipes/wip/net/other/arp-scanner/recipe.toml diff --git a/recipes/wip/tools/net/other/bita/recipe.toml b/recipes/wip/net/other/bita/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/bita/recipe.toml rename to recipes/wip/net/other/bita/recipe.toml diff --git a/recipes/wip/tools/net/other/bore/recipe.toml b/recipes/wip/net/other/bore/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/bore/recipe.toml rename to recipes/wip/net/other/bore/recipe.toml diff --git a/recipes/wip/tools/net/other/boringtun/recipe.toml b/recipes/wip/net/other/boringtun/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/boringtun/recipe.toml rename to recipes/wip/net/other/boringtun/recipe.toml diff --git a/recipes/wip/tools/net/other/celeste/recipe.toml b/recipes/wip/net/other/celeste/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/celeste/recipe.toml rename to recipes/wip/net/other/celeste/recipe.toml diff --git a/recipes/wip/tools/net/other/cobalt/recipe.toml b/recipes/wip/net/other/cobalt/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/cobalt/recipe.toml rename to recipes/wip/net/other/cobalt/recipe.toml diff --git a/recipes/wip/tools/net/other/crab-dlna/recipe.toml b/recipes/wip/net/other/crab-dlna/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/crab-dlna/recipe.toml rename to recipes/wip/net/other/crab-dlna/recipe.toml diff --git a/recipes/wip/tools/net/other/dqy/recipe.toml b/recipes/wip/net/other/dqy/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/dqy/recipe.toml rename to recipes/wip/net/other/dqy/recipe.toml diff --git a/recipes/wip/tools/net/other/drill/recipe.toml b/recipes/wip/net/other/drill/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/drill/recipe.toml rename to recipes/wip/net/other/drill/recipe.toml diff --git a/recipes/wip/tools/net/other/dufs/recipe.toml b/recipes/wip/net/other/dufs/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/dufs/recipe.toml rename to recipes/wip/net/other/dufs/recipe.toml diff --git a/recipes/wip/tools/net/other/floresta/recipe.toml b/recipes/wip/net/other/floresta/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/floresta/recipe.toml rename to recipes/wip/net/other/floresta/recipe.toml diff --git a/recipes/wip/tools/net/other/guacamole-client/recipe.toml b/recipes/wip/net/other/guacamole-client/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/guacamole-client/recipe.toml rename to recipes/wip/net/other/guacamole-client/recipe.toml diff --git a/recipes/wip/tools/net/other/halloy/recipe.toml b/recipes/wip/net/other/halloy/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/halloy/recipe.toml rename to recipes/wip/net/other/halloy/recipe.toml diff --git a/recipes/wip/tools/net/other/havn/recipe.toml b/recipes/wip/net/other/havn/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/havn/recipe.toml rename to recipes/wip/net/other/havn/recipe.toml diff --git a/recipes/wip/tools/net/other/hinoki/recipe.toml b/recipes/wip/net/other/hinoki/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/hinoki/recipe.toml rename to recipes/wip/net/other/hinoki/recipe.toml diff --git a/recipes/wip/tools/net/other/hurl/recipe.toml b/recipes/wip/net/other/hurl/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/hurl/recipe.toml rename to recipes/wip/net/other/hurl/recipe.toml diff --git a/recipes/wip/tools/net/other/impala/recipe.toml b/recipes/wip/net/other/impala/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/impala/recipe.toml rename to recipes/wip/net/other/impala/recipe.toml diff --git a/recipes/wip/tools/net/other/lldap/recipe.toml b/recipes/wip/net/other/lldap/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/lldap/recipe.toml rename to recipes/wip/net/other/lldap/recipe.toml diff --git a/recipes/wip/tools/net/other/lychee/recipe.toml b/recipes/wip/net/other/lychee/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/lychee/recipe.toml rename to recipes/wip/net/other/lychee/recipe.toml diff --git a/recipes/wip/tools/net/other/lynx/recipe.toml b/recipes/wip/net/other/lynx/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/lynx/recipe.toml rename to recipes/wip/net/other/lynx/recipe.toml diff --git a/recipes/wip/tools/net/other/meli/recipe.toml b/recipes/wip/net/other/meli/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/meli/recipe.toml rename to recipes/wip/net/other/meli/recipe.toml diff --git a/recipes/wip/tools/net/other/miniupnpc/recipe.toml b/recipes/wip/net/other/miniupnpc/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/miniupnpc/recipe.toml rename to recipes/wip/net/other/miniupnpc/recipe.toml diff --git a/recipes/wip/tools/net/other/moonfire-nvr-server/recipe.toml b/recipes/wip/net/other/moonfire-nvr-server/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/moonfire-nvr-server/recipe.toml rename to recipes/wip/net/other/moonfire-nvr-server/recipe.toml diff --git a/recipes/wip/tools/net/other/netop/recipe.toml b/recipes/wip/net/other/netop/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/netop/recipe.toml rename to recipes/wip/net/other/netop/recipe.toml diff --git a/recipes/wip/tools/net/other/netscanner/recipe.toml b/recipes/wip/net/other/netscanner/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/netscanner/recipe.toml rename to recipes/wip/net/other/netscanner/recipe.toml diff --git a/recipes/wip/tools/net/other/nmap/recipe.toml b/recipes/wip/net/other/nmap/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/nmap/recipe.toml rename to recipes/wip/net/other/nmap/recipe.toml diff --git a/recipes/wip/tools/net/other/nspr/recipe.toml b/recipes/wip/net/other/nspr/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/nspr/recipe.toml rename to recipes/wip/net/other/nspr/recipe.toml diff --git a/recipes/wip/tools/net/other/nss-pem/recipe.toml b/recipes/wip/net/other/nss-pem/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/nss-pem/recipe.toml rename to recipes/wip/net/other/nss-pem/recipe.toml diff --git a/recipes/wip/tools/net/other/nss/recipe.toml b/recipes/wip/net/other/nss/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/nss/recipe.toml rename to recipes/wip/net/other/nss/recipe.toml diff --git a/recipes/wip/tools/net/other/oha/recipe.toml b/recipes/wip/net/other/oha/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/oha/recipe.toml rename to recipes/wip/net/other/oha/recipe.toml diff --git a/recipes/wip/tools/net/other/realm/recipe.toml b/recipes/wip/net/other/realm/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/realm/recipe.toml rename to recipes/wip/net/other/realm/recipe.toml diff --git a/recipes/wip/tools/net/other/rqbit/recipe.toml b/recipes/wip/net/other/rqbit/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/rqbit/recipe.toml rename to recipes/wip/net/other/rqbit/recipe.toml diff --git a/recipes/wip/tools/net/other/rustscan/recipe.toml b/recipes/wip/net/other/rustscan/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/rustscan/recipe.toml rename to recipes/wip/net/other/rustscan/recipe.toml diff --git a/recipes/wip/tools/net/other/samba/answers.txt b/recipes/wip/net/other/samba/answers.txt similarity index 100% rename from recipes/wip/tools/net/other/samba/answers.txt rename to recipes/wip/net/other/samba/answers.txt diff --git a/recipes/wip/tools/net/other/samba/recipe.toml b/recipes/wip/net/other/samba/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/samba/recipe.toml rename to recipes/wip/net/other/samba/recipe.toml diff --git a/recipes/wip/tools/net/other/slumber/recipe.toml b/recipes/wip/net/other/slumber/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/slumber/recipe.toml rename to recipes/wip/net/other/slumber/recipe.toml diff --git a/recipes/wip/tools/net/other/speedtest-rs/recipe.toml b/recipes/wip/net/other/speedtest-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/speedtest-rs/recipe.toml rename to recipes/wip/net/other/speedtest-rs/recipe.toml diff --git a/recipes/wip/tools/net/other/spis/recipe.toml b/recipes/wip/net/other/spis/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/spis/recipe.toml rename to recipes/wip/net/other/spis/recipe.toml diff --git a/recipes/wip/tools/net/other/srsran-4g/recipe.toml b/recipes/wip/net/other/srsran-4g/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/srsran-4g/recipe.toml rename to recipes/wip/net/other/srsran-4g/recipe.toml diff --git a/recipes/wip/tools/net/other/srsran-project/recipe.toml b/recipes/wip/net/other/srsran-project/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/srsran-project/recipe.toml rename to recipes/wip/net/other/srsran-project/recipe.toml diff --git a/recipes/wip/tools/net/other/ssh/sshx/recipe.toml b/recipes/wip/net/other/ssh/sshx/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/ssh/sshx/recipe.toml rename to recipes/wip/net/other/ssh/sshx/recipe.toml diff --git a/recipes/wip/tools/net/other/tiny/recipe.toml b/recipes/wip/net/other/tiny/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/tiny/recipe.toml rename to recipes/wip/net/other/tiny/recipe.toml diff --git a/recipes/wip/tools/net/other/tobaru/recipe.toml b/recipes/wip/net/other/tobaru/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/tobaru/recipe.toml rename to recipes/wip/net/other/tobaru/recipe.toml diff --git a/recipes/wip/tools/net/other/trippy/recipe.toml b/recipes/wip/net/other/trippy/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/trippy/recipe.toml rename to recipes/wip/net/other/trippy/recipe.toml diff --git a/recipes/wip/tools/net/other/turn-rs/recipe.toml b/recipes/wip/net/other/turn-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/turn-rs/recipe.toml rename to recipes/wip/net/other/turn-rs/recipe.toml diff --git a/recipes/wip/tools/net/other/unbound/recipe.toml b/recipes/wip/net/other/unbound/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/unbound/recipe.toml rename to recipes/wip/net/other/unbound/recipe.toml diff --git a/recipes/wip/tools/net/other/updns/recipe.toml b/recipes/wip/net/other/updns/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/updns/recipe.toml rename to recipes/wip/net/other/updns/recipe.toml diff --git a/recipes/wip/tools/net/other/varia/recipe.toml b/recipes/wip/net/other/varia/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/varia/recipe.toml rename to recipes/wip/net/other/varia/recipe.toml diff --git a/recipes/wip/tools/net/other/vimini/recipe.toml b/recipes/wip/net/other/vimini/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/vimini/recipe.toml rename to recipes/wip/net/other/vimini/recipe.toml diff --git a/recipes/wip/tools/net/other/vopono/recipe.toml b/recipes/wip/net/other/vopono/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/vopono/recipe.toml rename to recipes/wip/net/other/vopono/recipe.toml diff --git a/recipes/wip/tools/net/other/vpncloud/recipe.toml b/recipes/wip/net/other/vpncloud/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/vpncloud/recipe.toml rename to recipes/wip/net/other/vpncloud/recipe.toml diff --git a/recipes/wip/tools/net/other/vsd/recipe.toml b/recipes/wip/net/other/vsd/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/vsd/recipe.toml rename to recipes/wip/net/other/vsd/recipe.toml diff --git a/recipes/wip/tools/net/other/warp/recipe.toml b/recipes/wip/net/other/warp/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/warp/recipe.toml rename to recipes/wip/net/other/warp/recipe.toml diff --git a/recipes/wip/tools/net/other/wireguard-rs/recipe.toml b/recipes/wip/net/other/wireguard-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/wireguard-rs/recipe.toml rename to recipes/wip/net/other/wireguard-rs/recipe.toml diff --git a/recipes/wip/tools/net/other/yazi/recipe.toml b/recipes/wip/net/other/yazi/recipe.toml similarity index 100% rename from recipes/wip/tools/net/other/yazi/recipe.toml rename to recipes/wip/net/other/yazi/recipe.toml diff --git a/recipes/wip/tools/net/server/apache-httpd/recipe.toml b/recipes/wip/net/server/apache-httpd/recipe.toml similarity index 100% rename from recipes/wip/tools/net/server/apache-httpd/recipe.toml rename to recipes/wip/net/server/apache-httpd/recipe.toml diff --git a/recipes/wip/tools/net/server/apache-httpd/redox.patch b/recipes/wip/net/server/apache-httpd/redox.patch similarity index 100% rename from recipes/wip/tools/net/server/apache-httpd/redox.patch rename to recipes/wip/net/server/apache-httpd/redox.patch diff --git a/recipes/wip/tools/net/server/bitcoin-core/recipe.toml b/recipes/wip/net/server/bitcoin-core/recipe.toml similarity index 100% rename from recipes/wip/tools/net/server/bitcoin-core/recipe.toml rename to recipes/wip/net/server/bitcoin-core/recipe.toml diff --git a/recipes/wip/tools/net/server/devserver/recipe.toml b/recipes/wip/net/server/devserver/recipe.toml similarity index 100% rename from recipes/wip/tools/net/server/devserver/recipe.toml rename to recipes/wip/net/server/devserver/recipe.toml diff --git a/recipes/wip/tools/net/server/electrs/recipe.toml b/recipes/wip/net/server/electrs/recipe.toml similarity index 100% rename from recipes/wip/tools/net/server/electrs/recipe.toml rename to recipes/wip/net/server/electrs/recipe.toml diff --git a/recipes/wip/tools/net/server/freenginx/recipe.toml b/recipes/wip/net/server/freenginx/recipe.toml similarity index 100% rename from recipes/wip/tools/net/server/freenginx/recipe.toml rename to recipes/wip/net/server/freenginx/recipe.toml diff --git a/recipes/wip/tools/net/server/guacamole-server/recipe.toml b/recipes/wip/net/server/guacamole-server/recipe.toml similarity index 100% rename from recipes/wip/tools/net/server/guacamole-server/recipe.toml rename to recipes/wip/net/server/guacamole-server/recipe.toml diff --git a/recipes/wip/tools/net/server/http-server-rs/recipe.toml b/recipes/wip/net/server/http-server-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/net/server/http-server-rs/recipe.toml rename to recipes/wip/net/server/http-server-rs/recipe.toml diff --git a/recipes/wip/tools/net/server/nginx/recipe.toml b/recipes/wip/net/server/nginx/recipe.toml similarity index 100% rename from recipes/wip/tools/net/server/nginx/recipe.toml rename to recipes/wip/net/server/nginx/recipe.toml diff --git a/recipes/wip/tools/net/server/nostr-rs-relay/recipe.toml b/recipes/wip/net/server/nostr-rs-relay/recipe.toml similarity index 100% rename from recipes/wip/tools/net/server/nostr-rs-relay/recipe.toml rename to recipes/wip/net/server/nostr-rs-relay/recipe.toml diff --git a/recipes/wip/tools/net/server/rustdesk-server/recipe.toml b/recipes/wip/net/server/rustdesk-server/recipe.toml similarity index 100% rename from recipes/wip/tools/net/server/rustdesk-server/recipe.toml rename to recipes/wip/net/server/rustdesk-server/recipe.toml diff --git a/recipes/wip/tools/net/server/rustypaste/recipe.toml b/recipes/wip/net/server/rustypaste/recipe.toml similarity index 100% rename from recipes/wip/tools/net/server/rustypaste/recipe.toml rename to recipes/wip/net/server/rustypaste/recipe.toml diff --git a/recipes/wip/tools/net/server/simple-http-server/recipe.toml b/recipes/wip/net/server/simple-http-server/recipe.toml similarity index 100% rename from recipes/wip/tools/net/server/simple-http-server/recipe.toml rename to recipes/wip/net/server/simple-http-server/recipe.toml diff --git a/recipes/wip/tools/net/server/sws/recipe.toml b/recipes/wip/net/server/sws/recipe.toml similarity index 100% rename from recipes/wip/tools/net/server/sws/recipe.toml rename to recipes/wip/net/server/sws/recipe.toml diff --git a/recipes/wip/tools/net/spadesx/recipe.toml b/recipes/wip/net/spadesx/recipe.toml similarity index 100% rename from recipes/wip/tools/net/spadesx/recipe.toml rename to recipes/wip/net/spadesx/recipe.toml diff --git a/recipes/wip/tools/ai/nnx/recipe.toml b/recipes/wip/nnx/recipe.toml similarity index 100% rename from recipes/wip/tools/ai/nnx/recipe.toml rename to recipes/wip/nnx/recipe.toml diff --git a/recipes/wip/tools/office/libreoffice-dictionaries/recipe.toml b/recipes/wip/office/libreoffice-dictionaries/recipe.toml similarity index 100% rename from recipes/wip/tools/office/libreoffice-dictionaries/recipe.toml rename to recipes/wip/office/libreoffice-dictionaries/recipe.toml diff --git a/recipes/wip/tools/office/libreoffice-translations/recipe.toml b/recipes/wip/office/libreoffice-translations/recipe.toml similarity index 100% rename from recipes/wip/tools/office/libreoffice-translations/recipe.toml rename to recipes/wip/office/libreoffice-translations/recipe.toml diff --git a/recipes/wip/tools/office/libreoffice/recipe.toml b/recipes/wip/office/libreoffice/recipe.toml similarity index 100% rename from recipes/wip/tools/office/libreoffice/recipe.toml rename to recipes/wip/office/libreoffice/recipe.toml diff --git a/recipes/wip/tools/science/alevin-fry/recipe.toml b/recipes/wip/science/alevin-fry/recipe.toml similarity index 100% rename from recipes/wip/tools/science/alevin-fry/recipe.toml rename to recipes/wip/science/alevin-fry/recipe.toml diff --git a/recipes/wip/tools/science/celestia-data/recipe.toml b/recipes/wip/science/celestia-data/recipe.toml similarity index 100% rename from recipes/wip/tools/science/celestia-data/recipe.toml rename to recipes/wip/science/celestia-data/recipe.toml diff --git a/recipes/wip/tools/science/celestia/recipe.toml b/recipes/wip/science/celestia/recipe.toml similarity index 100% rename from recipes/wip/tools/science/celestia/recipe.toml rename to recipes/wip/science/celestia/recipe.toml diff --git a/recipes/wip/tools/science/gromacs/recipe.toml b/recipes/wip/science/gromacs/recipe.toml similarity index 100% rename from recipes/wip/tools/science/gromacs/recipe.toml rename to recipes/wip/science/gromacs/recipe.toml diff --git a/recipes/wip/tools/science/mrbayes/recipe.toml b/recipes/wip/science/mrbayes/recipe.toml similarity index 100% rename from recipes/wip/tools/science/mrbayes/recipe.toml rename to recipes/wip/science/mrbayes/recipe.toml diff --git a/recipes/wip/tools/science/oarfish/recipe.toml b/recipes/wip/science/oarfish/recipe.toml similarity index 100% rename from recipes/wip/tools/science/oarfish/recipe.toml rename to recipes/wip/science/oarfish/recipe.toml diff --git a/recipes/wip/tools/science/openfoam/recipe.toml b/recipes/wip/science/openfoam/recipe.toml similarity index 100% rename from recipes/wip/tools/science/openfoam/recipe.toml rename to recipes/wip/science/openfoam/recipe.toml diff --git a/recipes/wip/tools/science/openspace/recipe.toml b/recipes/wip/science/openspace/recipe.toml similarity index 100% rename from recipes/wip/tools/science/openspace/recipe.toml rename to recipes/wip/science/openspace/recipe.toml diff --git a/recipes/wip/tools/science/piscem/recipe.toml b/recipes/wip/science/piscem/recipe.toml similarity index 100% rename from recipes/wip/tools/science/piscem/recipe.toml rename to recipes/wip/science/piscem/recipe.toml diff --git a/recipes/wip/tools/science/polypolish/recipe.toml b/recipes/wip/science/polypolish/recipe.toml similarity index 100% rename from recipes/wip/tools/science/polypolish/recipe.toml rename to recipes/wip/science/polypolish/recipe.toml diff --git a/recipes/wip/tools/science/qmcpack/recipe.toml b/recipes/wip/science/qmcpack/recipe.toml similarity index 100% rename from recipes/wip/tools/science/qmcpack/recipe.toml rename to recipes/wip/science/qmcpack/recipe.toml diff --git a/recipes/wip/tools/science/scidataflow/recipe.toml b/recipes/wip/science/scidataflow/recipe.toml similarity index 100% rename from recipes/wip/tools/science/scidataflow/recipe.toml rename to recipes/wip/science/scidataflow/recipe.toml diff --git a/recipes/wip/tools/science/simpleaf/recipe.toml b/recipes/wip/science/simpleaf/recipe.toml similarity index 100% rename from recipes/wip/tools/science/simpleaf/recipe.toml rename to recipes/wip/science/simpleaf/recipe.toml diff --git a/recipes/wip/tools/science/specfem2d/recipe.toml b/recipes/wip/science/specfem2d/recipe.toml similarity index 100% rename from recipes/wip/tools/science/specfem2d/recipe.toml rename to recipes/wip/science/specfem2d/recipe.toml diff --git a/recipes/wip/tools/science/specfem3d-globe/recipe.toml b/recipes/wip/science/specfem3d-globe/recipe.toml similarity index 100% rename from recipes/wip/tools/science/specfem3d-globe/recipe.toml rename to recipes/wip/science/specfem3d-globe/recipe.toml diff --git a/recipes/wip/tools/science/specfem3d/recipe.toml b/recipes/wip/science/specfem3d/recipe.toml similarity index 100% rename from recipes/wip/tools/science/specfem3d/recipe.toml rename to recipes/wip/science/specfem3d/recipe.toml diff --git a/recipes/wip/tools/science/vidoxide/recipe.toml b/recipes/wip/science/vidoxide/recipe.toml similarity index 100% rename from recipes/wip/tools/science/vidoxide/recipe.toml rename to recipes/wip/science/vidoxide/recipe.toml diff --git a/recipes/wip/tools/security/airgorah/recipe.toml b/recipes/wip/security/airgorah/recipe.toml similarity index 100% rename from recipes/wip/tools/security/airgorah/recipe.toml rename to recipes/wip/security/airgorah/recipe.toml diff --git a/recipes/wip/tools/security/angryoxide/recipe.toml b/recipes/wip/security/angryoxide/recipe.toml similarity index 100% rename from recipes/wip/tools/security/angryoxide/recipe.toml rename to recipes/wip/security/angryoxide/recipe.toml diff --git a/recipes/wip/tools/security/apbf/recipe.toml b/recipes/wip/security/apbf/recipe.toml similarity index 100% rename from recipes/wip/tools/security/apbf/recipe.toml rename to recipes/wip/security/apbf/recipe.toml diff --git a/recipes/wip/tools/security/authoscope/recipe.toml b/recipes/wip/security/authoscope/recipe.toml similarity index 100% rename from recipes/wip/tools/security/authoscope/recipe.toml rename to recipes/wip/security/authoscope/recipe.toml diff --git a/recipes/wip/tools/security/binsec/recipe.toml b/recipes/wip/security/binsec/recipe.toml similarity index 100% rename from recipes/wip/tools/security/binsec/recipe.toml rename to recipes/wip/security/binsec/recipe.toml diff --git a/recipes/wip/tools/security/burrow/recipe.toml b/recipes/wip/security/burrow/recipe.toml similarity index 100% rename from recipes/wip/tools/security/burrow/recipe.toml rename to recipes/wip/security/burrow/recipe.toml diff --git a/recipes/wip/tools/security/capstone/recipe.toml b/recipes/wip/security/capstone/recipe.toml similarity index 100% rename from recipes/wip/tools/security/capstone/recipe.toml rename to recipes/wip/security/capstone/recipe.toml diff --git a/recipes/wip/tools/security/cargo-scan/recipe.toml b/recipes/wip/security/cargo-scan/recipe.toml similarity index 100% rename from recipes/wip/tools/security/cargo-scan/recipe.toml rename to recipes/wip/security/cargo-scan/recipe.toml diff --git a/recipes/wip/tools/security/clamav/recipe.toml b/recipes/wip/security/clamav/recipe.toml similarity index 100% rename from recipes/wip/tools/security/clamav/recipe.toml rename to recipes/wip/security/clamav/recipe.toml diff --git a/recipes/wip/tools/security/cotp/recipe.toml b/recipes/wip/security/cotp/recipe.toml similarity index 100% rename from recipes/wip/tools/security/cotp/recipe.toml rename to recipes/wip/security/cotp/recipe.toml diff --git a/recipes/wip/tools/security/dfir-toolkit/recipe.toml b/recipes/wip/security/dfir-toolkit/recipe.toml similarity index 100% rename from recipes/wip/tools/security/dfir-toolkit/recipe.toml rename to recipes/wip/security/dfir-toolkit/recipe.toml diff --git a/recipes/wip/tools/security/feroxbuster/recipe.toml b/recipes/wip/security/feroxbuster/recipe.toml similarity index 100% rename from recipes/wip/tools/security/feroxbuster/recipe.toml rename to recipes/wip/security/feroxbuster/recipe.toml diff --git a/recipes/wip/tools/security/flawz/recipe.toml b/recipes/wip/security/flawz/recipe.toml similarity index 100% rename from recipes/wip/tools/security/flawz/recipe.toml rename to recipes/wip/security/flawz/recipe.toml diff --git a/recipes/wip/tools/security/john-the-ripper/recipe.toml b/recipes/wip/security/john-the-ripper/recipe.toml similarity index 100% rename from recipes/wip/tools/security/john-the-ripper/recipe.toml rename to recipes/wip/security/john-the-ripper/recipe.toml diff --git a/recipes/wip/tools/security/kanha/recipe.toml b/recipes/wip/security/kanha/recipe.toml similarity index 100% rename from recipes/wip/tools/security/kanha/recipe.toml rename to recipes/wip/security/kanha/recipe.toml diff --git a/recipes/wip/tools/security/keyscope/recipe.toml b/recipes/wip/security/keyscope/recipe.toml similarity index 100% rename from recipes/wip/tools/security/keyscope/recipe.toml rename to recipes/wip/security/keyscope/recipe.toml diff --git a/recipes/wip/tools/security/motus/recipe.toml b/recipes/wip/security/motus/recipe.toml similarity index 100% rename from recipes/wip/tools/security/motus/recipe.toml rename to recipes/wip/security/motus/recipe.toml diff --git a/recipes/wip/tools/security/nitrocli/recipe.toml b/recipes/wip/security/nitrocli/recipe.toml similarity index 100% rename from recipes/wip/tools/security/nitrocli/recipe.toml rename to recipes/wip/security/nitrocli/recipe.toml diff --git a/recipes/wip/tools/security/openpgp-ca/recipe.toml b/recipes/wip/security/openpgp-ca/recipe.toml similarity index 100% rename from recipes/wip/tools/security/openpgp-ca/recipe.toml rename to recipes/wip/security/openpgp-ca/recipe.toml diff --git a/recipes/wip/tools/security/plutus-rustus/recipe.toml b/recipes/wip/security/plutus-rustus/recipe.toml similarity index 100% rename from recipes/wip/tools/security/plutus-rustus/recipe.toml rename to recipes/wip/security/plutus-rustus/recipe.toml diff --git a/recipes/wip/tools/security/recdec/recipe.toml b/recipes/wip/security/recdec/recipe.toml similarity index 100% rename from recipes/wip/tools/security/recdec/recipe.toml rename to recipes/wip/security/recdec/recipe.toml diff --git a/recipes/wip/tools/security/rowhammer-test/recipe.toml b/recipes/wip/security/rowhammer-test/recipe.toml similarity index 100% rename from recipes/wip/tools/security/rowhammer-test/recipe.toml rename to recipes/wip/security/rowhammer-test/recipe.toml diff --git a/recipes/wip/tools/security/rshijack/recipe.toml b/recipes/wip/security/rshijack/recipe.toml similarity index 100% rename from recipes/wip/tools/security/rshijack/recipe.toml rename to recipes/wip/security/rshijack/recipe.toml diff --git a/recipes/wip/tools/security/rustyvault/recipe.toml b/recipes/wip/security/rustyvault/recipe.toml similarity index 100% rename from recipes/wip/tools/security/rustyvault/recipe.toml rename to recipes/wip/security/rustyvault/recipe.toml diff --git a/recipes/wip/tools/security/sn0int/recipe.toml b/recipes/wip/security/sn0int/recipe.toml similarity index 100% rename from recipes/wip/tools/security/sn0int/recipe.toml rename to recipes/wip/security/sn0int/recipe.toml diff --git a/recipes/wip/tools/security/sniffglue/recipe.toml b/recipes/wip/security/sniffglue/recipe.toml similarity index 100% rename from recipes/wip/tools/security/sniffglue/recipe.toml rename to recipes/wip/security/sniffglue/recipe.toml diff --git a/recipes/wip/tools/security/sniffnet/recipe.toml b/recipes/wip/security/sniffnet/recipe.toml similarity index 100% rename from recipes/wip/tools/security/sniffnet/recipe.toml rename to recipes/wip/security/sniffnet/recipe.toml diff --git a/recipes/wip/tools/security/sq/recipe.toml b/recipes/wip/security/sq/recipe.toml similarity index 100% rename from recipes/wip/tools/security/sq/recipe.toml rename to recipes/wip/security/sq/recipe.toml diff --git a/recipes/wip/tools/security/sqop/recipe.toml b/recipes/wip/security/sqop/recipe.toml similarity index 100% rename from recipes/wip/tools/security/sqop/recipe.toml rename to recipes/wip/security/sqop/recipe.toml diff --git a/recipes/wip/tools/security/sqv/recipe.toml b/recipes/wip/security/sqv/recipe.toml similarity index 100% rename from recipes/wip/tools/security/sqv/recipe.toml rename to recipes/wip/security/sqv/recipe.toml diff --git a/recipes/wip/tools/security/sss-cli/recipe.toml b/recipes/wip/security/sss-cli/recipe.toml similarity index 100% rename from recipes/wip/tools/security/sss-cli/recipe.toml rename to recipes/wip/security/sss-cli/recipe.toml diff --git a/recipes/wip/tools/security/stegano/recipe.toml b/recipes/wip/security/stegano/recipe.toml similarity index 100% rename from recipes/wip/tools/security/stegano/recipe.toml rename to recipes/wip/security/stegano/recipe.toml diff --git a/recipes/wip/tools/security/vagga/recipe.toml b/recipes/wip/security/vagga/recipe.toml similarity index 100% rename from recipes/wip/tools/security/vagga/recipe.toml rename to recipes/wip/security/vagga/recipe.toml diff --git a/recipes/wip/tools/security/veldora/recipe.toml b/recipes/wip/security/veldora/recipe.toml similarity index 100% rename from recipes/wip/tools/security/veldora/recipe.toml rename to recipes/wip/security/veldora/recipe.toml diff --git a/recipes/wip/tools/security/veracrypt/recipe.toml b/recipes/wip/security/veracrypt/recipe.toml similarity index 100% rename from recipes/wip/tools/security/veracrypt/recipe.toml rename to recipes/wip/security/veracrypt/recipe.toml diff --git a/recipes/wip/tools/security/weggli/recipe.toml b/recipes/wip/security/weggli/recipe.toml similarity index 100% rename from recipes/wip/tools/security/weggli/recipe.toml rename to recipes/wip/security/weggli/recipe.toml diff --git a/recipes/wip/tools/terminal/alacritty/recipe.toml b/recipes/wip/terminal/alacritty/recipe.toml similarity index 100% rename from recipes/wip/tools/terminal/alacritty/recipe.toml rename to recipes/wip/terminal/alacritty/recipe.toml diff --git a/recipes/wip/tools/terminal/rioterm/recipe.toml b/recipes/wip/terminal/rioterm/recipe.toml similarity index 100% rename from recipes/wip/tools/terminal/rioterm/recipe.toml rename to recipes/wip/terminal/rioterm/recipe.toml diff --git a/recipes/wip/tools/terminal/tab-rs/recipe.toml b/recipes/wip/terminal/tab-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/terminal/tab-rs/recipe.toml rename to recipes/wip/terminal/tab-rs/recipe.toml diff --git a/recipes/wip/tools/terminal/tmux/recipe.toml b/recipes/wip/terminal/tmux/recipe.toml similarity index 100% rename from recipes/wip/tools/terminal/tmux/recipe.toml rename to recipes/wip/terminal/tmux/recipe.toml diff --git a/recipes/wip/tools/terminal/wezterm/recipe.toml b/recipes/wip/terminal/wezterm/recipe.toml similarity index 100% rename from recipes/wip/tools/terminal/wezterm/recipe.toml rename to recipes/wip/terminal/wezterm/recipe.toml diff --git a/recipes/wip/tools/terminal/zellij/recipe.toml b/recipes/wip/terminal/zellij/recipe.toml similarity index 100% rename from recipes/wip/tools/terminal/zellij/recipe.toml rename to recipes/wip/terminal/zellij/recipe.toml diff --git a/recipes/wip/tools/time/dispute/recipe.toml b/recipes/wip/time/dispute/recipe.toml similarity index 100% rename from recipes/wip/tools/time/dispute/recipe.toml rename to recipes/wip/time/dispute/recipe.toml diff --git a/recipes/wip/tools/time/tomotroid/recipe.toml b/recipes/wip/time/tomotroid/recipe.toml similarity index 100% rename from recipes/wip/tools/time/tomotroid/recipe.toml rename to recipes/wip/time/tomotroid/recipe.toml From 855c2d35433c6b7a7c0fcec40a087bdc4d971778 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 2 Jul 2024 06:09:01 +0000 Subject: [PATCH 1967/3180] Move a recipe --- recipes/wip/{ => ai}/nnx/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => ai}/nnx/recipe.toml (100%) diff --git a/recipes/wip/nnx/recipe.toml b/recipes/wip/ai/nnx/recipe.toml similarity index 100% rename from recipes/wip/nnx/recipe.toml rename to recipes/wip/ai/nnx/recipe.toml From b82dc8cd7d785c5c67c3b5281f6b4fc775a4631c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 2 Jul 2024 06:10:03 +0000 Subject: [PATCH 1968/3180] Update a TODO --- recipes/wip/net/server/simple-http-server/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/net/server/simple-http-server/recipe.toml b/recipes/wip/net/server/simple-http-server/recipe.toml index e654b507..3f1df4ff 100644 --- a/recipes/wip/net/server/simple-http-server/recipe.toml +++ b/recipes/wip/net/server/simple-http-server/recipe.toml @@ -1,4 +1,4 @@ -#TODO open crate error +#TODO compiled but not tested (after a patch on the "open" crate) [source] git = "https://github.com/TheWaWaR/simple-http-server" [build] From 8fab5ed9bc74b54926800d5c0f2033eeaf382cce Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 2 Jul 2024 07:58:21 +0000 Subject: [PATCH 1969/3180] Update a TODO --- recipes/wip/net/server/simple-http-server/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/net/server/simple-http-server/recipe.toml b/recipes/wip/net/server/simple-http-server/recipe.toml index 3f1df4ff..b257259d 100644 --- a/recipes/wip/net/server/simple-http-server/recipe.toml +++ b/recipes/wip/net/server/simple-http-server/recipe.toml @@ -1,3 +1,4 @@ +#TODO discover how to test it, lacking a guide #TODO compiled but not tested (after a patch on the "open" crate) [source] git = "https://github.com/TheWaWaR/simple-http-server" From fd6ec2266f04d658a7c7f07c433ff64497cb1fb7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 2 Jul 2024 08:44:24 +0000 Subject: [PATCH 1970/3180] Add recipes --- recipes/wip/archives/file-roller/recipe.toml | 12 ++++++++++++ recipes/wip/libs/gui/gtk/libhandy/recipe.toml | 11 +++++++++++ 2 files changed, 23 insertions(+) create mode 100644 recipes/wip/archives/file-roller/recipe.toml create mode 100644 recipes/wip/libs/gui/gtk/libhandy/recipe.toml diff --git a/recipes/wip/archives/file-roller/recipe.toml b/recipes/wip/archives/file-roller/recipe.toml new file mode 100644 index 00000000..7209aa62 --- /dev/null +++ b/recipes/wip/archives/file-roller/recipe.toml @@ -0,0 +1,12 @@ +#TODO missing script for Meson, see https://gitlab.gnome.org/GNOME/file-roller#building-locally +#TODO the "libportal" dependency is for Flatpak, maybe it's optional - https://gitlab.gnome.org/GNOME/file-roller#dependencies +[source] +tar = "https://download.gnome.org/sources/file-roller/44/file-roller-44.3.tar.xz" +[build] +template = "custom" +dependencies = [ + "glib", + "gtk3," + "libhandy", + "libarchive", +] diff --git a/recipes/wip/libs/gui/gtk/libhandy/recipe.toml b/recipes/wip/libs/gui/gtk/libhandy/recipe.toml new file mode 100644 index 00000000..dbbee644 --- /dev/null +++ b/recipes/wip/libs/gui/gtk/libhandy/recipe.toml @@ -0,0 +1,11 @@ +#TODO missing script for Meson, see https://gitlab.gnome.org/GNOME/libhandy#building +#TODO determine dependencies +[source] +git = "https://gitlab.gnome.org/GNOME/libhandy" +rev = "9b0071408ce86a3ef843806fddd723a85f6f2416" +[build] +template = "custom" +dependencies = [ + "glib", + "gtk3", +] From 54e178c4af94a1eccd51ffebc5263260fdc812bd Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 2 Jul 2024 08:44:50 +0000 Subject: [PATCH 1971/3180] Move recipes --- recipes/wip/libs/{gui => }/gtk/gtk-engines/recipe.toml | 0 recipes/wip/libs/{gui => }/gtk/gtk2/recipe.toml | 0 recipes/wip/libs/{gui => }/gtk/gtk2mm/recipe.toml | 0 recipes/wip/libs/{gui => }/gtk/gtk3/recipe.toml | 0 recipes/wip/libs/{gui => }/gtk/gtk3mm/recipe.toml | 0 recipes/wip/libs/{gui => }/gtk/gtk4/recipe.toml | 0 recipes/wip/libs/{gui => }/gtk/gtk4mm/recipe.toml | 0 recipes/wip/libs/{gui => }/gtk/gtkglext/recipe.toml | 0 recipes/wip/libs/{gui => }/gtk/gtksourceview/recipe.toml | 0 recipes/wip/libs/{gui => }/gtk/libhandy/recipe.toml | 0 10 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/libs/{gui => }/gtk/gtk-engines/recipe.toml (100%) rename recipes/wip/libs/{gui => }/gtk/gtk2/recipe.toml (100%) rename recipes/wip/libs/{gui => }/gtk/gtk2mm/recipe.toml (100%) rename recipes/wip/libs/{gui => }/gtk/gtk3/recipe.toml (100%) rename recipes/wip/libs/{gui => }/gtk/gtk3mm/recipe.toml (100%) rename recipes/wip/libs/{gui => }/gtk/gtk4/recipe.toml (100%) rename recipes/wip/libs/{gui => }/gtk/gtk4mm/recipe.toml (100%) rename recipes/wip/libs/{gui => }/gtk/gtkglext/recipe.toml (100%) rename recipes/wip/libs/{gui => }/gtk/gtksourceview/recipe.toml (100%) rename recipes/wip/libs/{gui => }/gtk/libhandy/recipe.toml (100%) diff --git a/recipes/wip/libs/gui/gtk/gtk-engines/recipe.toml b/recipes/wip/libs/gtk/gtk-engines/recipe.toml similarity index 100% rename from recipes/wip/libs/gui/gtk/gtk-engines/recipe.toml rename to recipes/wip/libs/gtk/gtk-engines/recipe.toml diff --git a/recipes/wip/libs/gui/gtk/gtk2/recipe.toml b/recipes/wip/libs/gtk/gtk2/recipe.toml similarity index 100% rename from recipes/wip/libs/gui/gtk/gtk2/recipe.toml rename to recipes/wip/libs/gtk/gtk2/recipe.toml diff --git a/recipes/wip/libs/gui/gtk/gtk2mm/recipe.toml b/recipes/wip/libs/gtk/gtk2mm/recipe.toml similarity index 100% rename from recipes/wip/libs/gui/gtk/gtk2mm/recipe.toml rename to recipes/wip/libs/gtk/gtk2mm/recipe.toml diff --git a/recipes/wip/libs/gui/gtk/gtk3/recipe.toml b/recipes/wip/libs/gtk/gtk3/recipe.toml similarity index 100% rename from recipes/wip/libs/gui/gtk/gtk3/recipe.toml rename to recipes/wip/libs/gtk/gtk3/recipe.toml diff --git a/recipes/wip/libs/gui/gtk/gtk3mm/recipe.toml b/recipes/wip/libs/gtk/gtk3mm/recipe.toml similarity index 100% rename from recipes/wip/libs/gui/gtk/gtk3mm/recipe.toml rename to recipes/wip/libs/gtk/gtk3mm/recipe.toml diff --git a/recipes/wip/libs/gui/gtk/gtk4/recipe.toml b/recipes/wip/libs/gtk/gtk4/recipe.toml similarity index 100% rename from recipes/wip/libs/gui/gtk/gtk4/recipe.toml rename to recipes/wip/libs/gtk/gtk4/recipe.toml diff --git a/recipes/wip/libs/gui/gtk/gtk4mm/recipe.toml b/recipes/wip/libs/gtk/gtk4mm/recipe.toml similarity index 100% rename from recipes/wip/libs/gui/gtk/gtk4mm/recipe.toml rename to recipes/wip/libs/gtk/gtk4mm/recipe.toml diff --git a/recipes/wip/libs/gui/gtk/gtkglext/recipe.toml b/recipes/wip/libs/gtk/gtkglext/recipe.toml similarity index 100% rename from recipes/wip/libs/gui/gtk/gtkglext/recipe.toml rename to recipes/wip/libs/gtk/gtkglext/recipe.toml diff --git a/recipes/wip/libs/gui/gtk/gtksourceview/recipe.toml b/recipes/wip/libs/gtk/gtksourceview/recipe.toml similarity index 100% rename from recipes/wip/libs/gui/gtk/gtksourceview/recipe.toml rename to recipes/wip/libs/gtk/gtksourceview/recipe.toml diff --git a/recipes/wip/libs/gui/gtk/libhandy/recipe.toml b/recipes/wip/libs/gtk/libhandy/recipe.toml similarity index 100% rename from recipes/wip/libs/gui/gtk/libhandy/recipe.toml rename to recipes/wip/libs/gtk/libhandy/recipe.toml From 271b917dc11fcf8aa5b2aac93e979fbe40940cca Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 3 Jul 2024 12:30:27 -0600 Subject: [PATCH 1972/3180] cosmic-files: use winit feature --- recipes/tools/cosmic-files/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/tools/cosmic-files/recipe.toml b/recipes/tools/cosmic-files/recipe.toml index 45bdd719..1314097d 100644 --- a/recipes/tools/cosmic-files/recipe.toml +++ b/recipes/tools/cosmic-files/recipe.toml @@ -5,7 +5,7 @@ branch = "master" [build] template = "custom" script = """ -cookbook_cargo --no-default-features +cookbook_cargo --no-default-features --features winit mkdir -pv "${COOKBOOK_STAGE}/ui/apps" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/20_cosmic-files" """ From e07107d92fd20ae6b7dd616d8fd2f052060deb15 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 4 Jul 2024 21:09:14 +0000 Subject: [PATCH 1973/3180] Add recipes --- recipes/wip/games/tools/oxyromon/recipe.toml | 5 +++++ recipes/wip/security/deoptimizer/recipe.toml | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 recipes/wip/games/tools/oxyromon/recipe.toml create mode 100644 recipes/wip/security/deoptimizer/recipe.toml diff --git a/recipes/wip/games/tools/oxyromon/recipe.toml b/recipes/wip/games/tools/oxyromon/recipe.toml new file mode 100644 index 00000000..14c8d7b0 --- /dev/null +++ b/recipes/wip/games/tools/oxyromon/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/alucryd/oxyromon" +[build] +template = "cargo" diff --git a/recipes/wip/security/deoptimizer/recipe.toml b/recipes/wip/security/deoptimizer/recipe.toml new file mode 100644 index 00000000..c91e63c0 --- /dev/null +++ b/recipes/wip/security/deoptimizer/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/EgeBalci/deoptimizer" +[build] +template = "cargo" From 8c8136bb6dcd0f3bcf6bf27ada3643eeaeff510e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 6 Jul 2024 08:54:42 +0000 Subject: [PATCH 1974/3180] Move a recipe --- recipes/wip/dev/{rust-tools => ide}/rust-analyzer/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/dev/{rust-tools => ide}/rust-analyzer/recipe.toml (100%) diff --git a/recipes/wip/dev/rust-tools/rust-analyzer/recipe.toml b/recipes/wip/dev/ide/rust-analyzer/recipe.toml similarity index 100% rename from recipes/wip/dev/rust-tools/rust-analyzer/recipe.toml rename to recipes/wip/dev/ide/rust-analyzer/recipe.toml From 0bfd573dda872598d7b7ee2a8f83bd849aa8f425 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 6 Jul 2024 22:00:18 +0200 Subject: [PATCH 1975/3180] Convert orbutils recipes from recipe.sh to recipe.toml --- recipes/gui/orbutils-background/recipe.sh | 4 ---- recipes/gui/orbutils-background/recipe.toml | 12 ++++++++++++ recipes/gui/orbutils-launcher/recipe.sh | 4 ---- recipes/gui/orbutils-launcher/recipe.toml | 11 +++++++++++ recipes/gui/orbutils-orblogin/recipe.sh | 4 ---- recipes/gui/orbutils-orblogin/recipe.toml | 12 ++++++++++++ src/bin/cook.rs | 14 ++++++++------ src/recipe.rs | 8 +++++++- 8 files changed, 50 insertions(+), 19 deletions(-) delete mode 100644 recipes/gui/orbutils-background/recipe.sh create mode 100644 recipes/gui/orbutils-background/recipe.toml delete mode 100644 recipes/gui/orbutils-launcher/recipe.sh create mode 100644 recipes/gui/orbutils-launcher/recipe.toml delete mode 100644 recipes/gui/orbutils-orblogin/recipe.sh create mode 100644 recipes/gui/orbutils-orblogin/recipe.toml diff --git a/recipes/gui/orbutils-background/recipe.sh b/recipes/gui/orbutils-background/recipe.sh deleted file mode 100644 index 237d8b02..00000000 --- a/recipes/gui/orbutils-background/recipe.sh +++ /dev/null @@ -1,4 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/orbutils.git -BINDIR=/usr/bin -CARGOFLAGS="--bin background -p orbutils" -DEPENDS="orbital" diff --git a/recipes/gui/orbutils-background/recipe.toml b/recipes/gui/orbutils-background/recipe.toml new file mode 100644 index 00000000..9b13e816 --- /dev/null +++ b/recipes/gui/orbutils-background/recipe.toml @@ -0,0 +1,12 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/orbutils.git" + +[build] +template = "cargo" +package_path = "orbutils" +cargoflags = "--bin background" + +[package] +dependencies = [ + "orbital" +] diff --git a/recipes/gui/orbutils-launcher/recipe.sh b/recipes/gui/orbutils-launcher/recipe.sh deleted file mode 100644 index 4b4975b5..00000000 --- a/recipes/gui/orbutils-launcher/recipe.sh +++ /dev/null @@ -1,4 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/orbutils.git -BINDIR=/usr/bin -CARGOFLAGS="--bin launcher -p orbutils" -DEPENDS="orbital" diff --git a/recipes/gui/orbutils-launcher/recipe.toml b/recipes/gui/orbutils-launcher/recipe.toml new file mode 100644 index 00000000..78125ba9 --- /dev/null +++ b/recipes/gui/orbutils-launcher/recipe.toml @@ -0,0 +1,11 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/orbutils.git" + +[build] +template = "cargo" +package_path = "launcher" + +[package] +dependencies = [ + "orbital" +] diff --git a/recipes/gui/orbutils-orblogin/recipe.sh b/recipes/gui/orbutils-orblogin/recipe.sh deleted file mode 100644 index a7dd5f53..00000000 --- a/recipes/gui/orbutils-orblogin/recipe.sh +++ /dev/null @@ -1,4 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/orbutils.git -BINDIR=/usr/bin -CARGOFLAGS="--bin orblogin -p orbutils" -DEPENDS="orbital" diff --git a/recipes/gui/orbutils-orblogin/recipe.toml b/recipes/gui/orbutils-orblogin/recipe.toml new file mode 100644 index 00000000..6871a92e --- /dev/null +++ b/recipes/gui/orbutils-orblogin/recipe.toml @@ -0,0 +1,12 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/orbutils.git" + +[build] +template = "cargo" +package_path = "orbutils" +cargoflags = "--bin orblogin" + +[package] +dependencies = [ + "orbital" +] diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 5767d7ca..d271117a 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -466,7 +466,7 @@ fi COOKBOOK_CARGO="${COOKBOOK_REDOXER}" function cookbook_cargo { "${COOKBOOK_CARGO}" install \ - --path "${COOKBOOK_SOURCE}" \ + --path "${COOKBOOK_SOURCE}/${PACKAGE_PATH}" \ --root "${COOKBOOK_STAGE}/usr" \ --locked \ --no-track \ @@ -480,7 +480,7 @@ function cookbook_cargo_examples { for example in "$@" do "${COOKBOOK_CARGO}" build \ - --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --manifest-path "${COOKBOOK_SOURCE}/${PACKAGE_PATH}/Cargo.toml" \ --example "${example}" \ ${build_flags} mkdir -pv "${COOKBOOK_STAGE}/usr/bin" @@ -496,7 +496,7 @@ function cookbook_cargo_packages { for package in "$@" do "${COOKBOOK_CARGO}" build \ - --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --manifest-path "${COOKBOOK_SOURCE}/${PACKAGE_PATH}/Cargo.toml" \ --package "${package}" \ ${build_flags} mkdir -pv "${COOKBOOK_STAGE}/usr/bin" @@ -560,9 +560,11 @@ done //TODO: configurable target //TODO: Add more configurability, convert scripts to Rust? let script = match &build.kind { - BuildKind::Cargo => "cookbook_cargo", - BuildKind::Configure => "cookbook_configure", - BuildKind::Custom { script } => script + BuildKind::Cargo { package_path, cargoflags } => { + format!("PACKAGE_PATH={} cookbook_cargo {cargoflags}", package_path.as_deref().unwrap_or(".")) + } + BuildKind::Configure => "cookbook_configure".to_owned(), + BuildKind::Custom { script } => script.clone(), }; let command = { diff --git a/src/recipe.rs b/src/recipe.rs index 197396c7..ca74754f 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -38,7 +38,13 @@ pub enum SourceRecipe { pub enum BuildKind { /// Will build and install using cargo #[serde(rename = "cargo")] - Cargo, + Cargo { + #[serde(default)] + package_path: Option, + + #[serde(default)] + cargoflags: String, + }, /// Will build and install using configure and make #[serde(rename = "configure")] Configure, From 7dfb79471d816560c26c5eeb007ad1e012d242e6 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 6 Jul 2024 22:00:32 +0200 Subject: [PATCH 1976/3180] Fix warning about .cargo/config being deprecated --- .cargo/{config => config.toml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .cargo/{config => config.toml} (100%) diff --git a/.cargo/config b/.cargo/config.toml similarity index 100% rename from .cargo/config rename to .cargo/config.toml From a215b97287c87dbfca4604bbfbe6b019c24e22b0 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 7 Jul 2024 09:10:13 +0000 Subject: [PATCH 1977/3180] Add recipes --- recipes/wip/analysis/cutter/recipe.toml | 26 +++++++++++++++++++ recipes/wip/analysis/netdata/recipe.toml | 25 ++++++++++++++++++ recipes/wip/analysis/rizin/recipe.toml | 5 ++++ recipes/wip/dev/other/silicon/recipe.toml | 5 ++++ recipes/wip/fuse/rencfs/recipe.toml | 8 ++++++ .../games/open-world/all-is-cubes/recipe.toml | 8 ++++++ recipes/wip/games/strategy/tage/recipe.toml | 5 ++++ recipes/wip/libs/archives/libzip/recipe.toml | 23 ++++++++++++++++ recipes/wip/net/sharing/microbin/recipe.toml | 5 ++++ recipes/wip/security/breakmancer/recipe.toml | 5 ++++ 10 files changed, 115 insertions(+) create mode 100644 recipes/wip/analysis/cutter/recipe.toml create mode 100644 recipes/wip/analysis/netdata/recipe.toml create mode 100644 recipes/wip/analysis/rizin/recipe.toml create mode 100644 recipes/wip/dev/other/silicon/recipe.toml create mode 100644 recipes/wip/fuse/rencfs/recipe.toml create mode 100644 recipes/wip/games/open-world/all-is-cubes/recipe.toml create mode 100644 recipes/wip/games/strategy/tage/recipe.toml create mode 100644 recipes/wip/libs/archives/libzip/recipe.toml create mode 100644 recipes/wip/net/sharing/microbin/recipe.toml create mode 100644 recipes/wip/security/breakmancer/recipe.toml diff --git a/recipes/wip/analysis/cutter/recipe.toml b/recipes/wip/analysis/cutter/recipe.toml new file mode 100644 index 00000000..b023d0a5 --- /dev/null +++ b/recipes/wip/analysis/cutter/recipe.toml @@ -0,0 +1,26 @@ +#TODO maybe incomplete script, see https://cutter.re/docs/building.html +[source] +tar = "https://github.com/rizinorg/cutter/releases/download/v2.3.4/Cutter-v2.3.4-src.tar.gz" +[build] +template = "custom" +dependencies = [ + "libzip", + "zlib", + "qt5-base", + "qt5-svg", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/analysis/netdata/recipe.toml b/recipes/wip/analysis/netdata/recipe.toml new file mode 100644 index 00000000..d5a2aca3 --- /dev/null +++ b/recipes/wip/analysis/netdata/recipe.toml @@ -0,0 +1,25 @@ +#TODO maybe incomplete script, see https://learn.netdata.cloud/docs/developer-and-contributor-corner/build-the-netdata-agent-yourself/compile-from-source-code#building-netdata +[source] +tar = "https://github.com/netdata/netdata/releases/download/v1.46.1/netdata-v1.46.1.tar.gz" +[build] +template = "custom" +dependencies = [ + "zlib", + "libuv", + "libuuid", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/analysis/rizin/recipe.toml b/recipes/wip/analysis/rizin/recipe.toml new file mode 100644 index 00000000..3b2a8e35 --- /dev/null +++ b/recipes/wip/analysis/rizin/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for meson, see https://github.com/rizinorg/rizin/blob/dev/BUILDING.md +[source] +tar = "https://github.com/rizinorg/rizin/releases/download/v0.7.3/rizin-src-v0.7.3.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/dev/other/silicon/recipe.toml b/recipes/wip/dev/other/silicon/recipe.toml new file mode 100644 index 00000000..64a2461b --- /dev/null +++ b/recipes/wip/dev/other/silicon/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Aloxaf/silicon" +[build] +template = "cargo" diff --git a/recipes/wip/fuse/rencfs/recipe.toml b/recipes/wip/fuse/rencfs/recipe.toml new file mode 100644 index 00000000..f74c67f3 --- /dev/null +++ b/recipes/wip/fuse/rencfs/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/radumarias/rencfs" +[build] +template = "cargo" +dependencies = [ + "libfuse3", +] diff --git a/recipes/wip/games/open-world/all-is-cubes/recipe.toml b/recipes/wip/games/open-world/all-is-cubes/recipe.toml new file mode 100644 index 00000000..29a37232 --- /dev/null +++ b/recipes/wip/games/open-world/all-is-cubes/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/kpreid/all-is-cubes" +[build] +template = "custom" +script = """ +cookbook_cargo_packages all-is-cubes-desktop +""" diff --git a/recipes/wip/games/strategy/tage/recipe.toml b/recipes/wip/games/strategy/tage/recipe.toml new file mode 100644 index 00000000..ed86a558 --- /dev/null +++ b/recipes/wip/games/strategy/tage/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/jacopograndi/tage" +[build] +template = "cargo" diff --git a/recipes/wip/libs/archives/libzip/recipe.toml b/recipes/wip/libs/archives/libzip/recipe.toml new file mode 100644 index 00000000..afe9a840 --- /dev/null +++ b/recipes/wip/libs/archives/libzip/recipe.toml @@ -0,0 +1,23 @@ +#TODO maybe incomplete script, see https://github.com/nih-at/libzip/blob/main/INSTALL.md +[source] +tar = "https://libzip.org/download/libzip-1.10.1.tar.gz" +[build] +template = "custom" +dependencies = [ + "zlib", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/net/sharing/microbin/recipe.toml b/recipes/wip/net/sharing/microbin/recipe.toml new file mode 100644 index 00000000..94ea7b12 --- /dev/null +++ b/recipes/wip/net/sharing/microbin/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/szabodanika/microbin" +[build] +template = "cargo" diff --git a/recipes/wip/security/breakmancer/recipe.toml b/recipes/wip/security/breakmancer/recipe.toml new file mode 100644 index 00000000..fe2f12b5 --- /dev/null +++ b/recipes/wip/security/breakmancer/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://codeberg.org/timmc/breakmancer" +[build] +template = "cargo" From 8ceb3ac1228edcdf125445130f6abfdec1cde47f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 7 Jul 2024 09:25:06 +0000 Subject: [PATCH 1978/3180] Move recipes --- recipes/wip/libs/{other => audio}/libopus/recipe.toml | 0 recipes/wip/libs/{other => image}/libavif/recipe.toml | 0 recipes/wip/libs/{other => image}/libgphoto2/recipe.toml | 0 recipes/wip/libs/{other => image}/libheif/recipe.toml | 0 recipes/wip/libs/{other => image}/libjpeg-turbo/recipe.toml | 0 recipes/wip/libs/{other => image}/libjxl/recipe.toml | 0 recipes/wip/libs/{other => image}/libraw/recipe.toml | 0 recipes/wip/libs/{other => image}/librsvg/recipe.toml | 0 recipes/wip/libs/{other => image}/libsixel/recipe.toml | 0 recipes/wip/libs/{other => image}/libwebp/recipe.toml | 0 recipes/wip/libs/{other => image}/libwebp2/recipe.toml | 0 recipes/wip/libs/{other => tls}/gnutls3/recipe.toml | 0 recipes/wip/libs/{other => tls}/mbedtls/recipe.toml | 0 recipes/wip/libs/{other => tls}/wolfssl5/recipe.toml | 0 recipes/wip/libs/{other => video}/libgif/recipe.toml | 0 recipes/wip/libs/{other => video}/libmatroska/recipe.toml | 0 recipes/wip/libs/{other => video}/libvpx/recipe.toml | 0 17 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/libs/{other => audio}/libopus/recipe.toml (100%) rename recipes/wip/libs/{other => image}/libavif/recipe.toml (100%) rename recipes/wip/libs/{other => image}/libgphoto2/recipe.toml (100%) rename recipes/wip/libs/{other => image}/libheif/recipe.toml (100%) rename recipes/wip/libs/{other => image}/libjpeg-turbo/recipe.toml (100%) rename recipes/wip/libs/{other => image}/libjxl/recipe.toml (100%) rename recipes/wip/libs/{other => image}/libraw/recipe.toml (100%) rename recipes/wip/libs/{other => image}/librsvg/recipe.toml (100%) rename recipes/wip/libs/{other => image}/libsixel/recipe.toml (100%) rename recipes/wip/libs/{other => image}/libwebp/recipe.toml (100%) rename recipes/wip/libs/{other => image}/libwebp2/recipe.toml (100%) rename recipes/wip/libs/{other => tls}/gnutls3/recipe.toml (100%) rename recipes/wip/libs/{other => tls}/mbedtls/recipe.toml (100%) rename recipes/wip/libs/{other => tls}/wolfssl5/recipe.toml (100%) rename recipes/wip/libs/{other => video}/libgif/recipe.toml (100%) rename recipes/wip/libs/{other => video}/libmatroska/recipe.toml (100%) rename recipes/wip/libs/{other => video}/libvpx/recipe.toml (100%) diff --git a/recipes/wip/libs/other/libopus/recipe.toml b/recipes/wip/libs/audio/libopus/recipe.toml similarity index 100% rename from recipes/wip/libs/other/libopus/recipe.toml rename to recipes/wip/libs/audio/libopus/recipe.toml diff --git a/recipes/wip/libs/other/libavif/recipe.toml b/recipes/wip/libs/image/libavif/recipe.toml similarity index 100% rename from recipes/wip/libs/other/libavif/recipe.toml rename to recipes/wip/libs/image/libavif/recipe.toml diff --git a/recipes/wip/libs/other/libgphoto2/recipe.toml b/recipes/wip/libs/image/libgphoto2/recipe.toml similarity index 100% rename from recipes/wip/libs/other/libgphoto2/recipe.toml rename to recipes/wip/libs/image/libgphoto2/recipe.toml diff --git a/recipes/wip/libs/other/libheif/recipe.toml b/recipes/wip/libs/image/libheif/recipe.toml similarity index 100% rename from recipes/wip/libs/other/libheif/recipe.toml rename to recipes/wip/libs/image/libheif/recipe.toml diff --git a/recipes/wip/libs/other/libjpeg-turbo/recipe.toml b/recipes/wip/libs/image/libjpeg-turbo/recipe.toml similarity index 100% rename from recipes/wip/libs/other/libjpeg-turbo/recipe.toml rename to recipes/wip/libs/image/libjpeg-turbo/recipe.toml diff --git a/recipes/wip/libs/other/libjxl/recipe.toml b/recipes/wip/libs/image/libjxl/recipe.toml similarity index 100% rename from recipes/wip/libs/other/libjxl/recipe.toml rename to recipes/wip/libs/image/libjxl/recipe.toml diff --git a/recipes/wip/libs/other/libraw/recipe.toml b/recipes/wip/libs/image/libraw/recipe.toml similarity index 100% rename from recipes/wip/libs/other/libraw/recipe.toml rename to recipes/wip/libs/image/libraw/recipe.toml diff --git a/recipes/wip/libs/other/librsvg/recipe.toml b/recipes/wip/libs/image/librsvg/recipe.toml similarity index 100% rename from recipes/wip/libs/other/librsvg/recipe.toml rename to recipes/wip/libs/image/librsvg/recipe.toml diff --git a/recipes/wip/libs/other/libsixel/recipe.toml b/recipes/wip/libs/image/libsixel/recipe.toml similarity index 100% rename from recipes/wip/libs/other/libsixel/recipe.toml rename to recipes/wip/libs/image/libsixel/recipe.toml diff --git a/recipes/wip/libs/other/libwebp/recipe.toml b/recipes/wip/libs/image/libwebp/recipe.toml similarity index 100% rename from recipes/wip/libs/other/libwebp/recipe.toml rename to recipes/wip/libs/image/libwebp/recipe.toml diff --git a/recipes/wip/libs/other/libwebp2/recipe.toml b/recipes/wip/libs/image/libwebp2/recipe.toml similarity index 100% rename from recipes/wip/libs/other/libwebp2/recipe.toml rename to recipes/wip/libs/image/libwebp2/recipe.toml diff --git a/recipes/wip/libs/other/gnutls3/recipe.toml b/recipes/wip/libs/tls/gnutls3/recipe.toml similarity index 100% rename from recipes/wip/libs/other/gnutls3/recipe.toml rename to recipes/wip/libs/tls/gnutls3/recipe.toml diff --git a/recipes/wip/libs/other/mbedtls/recipe.toml b/recipes/wip/libs/tls/mbedtls/recipe.toml similarity index 100% rename from recipes/wip/libs/other/mbedtls/recipe.toml rename to recipes/wip/libs/tls/mbedtls/recipe.toml diff --git a/recipes/wip/libs/other/wolfssl5/recipe.toml b/recipes/wip/libs/tls/wolfssl5/recipe.toml similarity index 100% rename from recipes/wip/libs/other/wolfssl5/recipe.toml rename to recipes/wip/libs/tls/wolfssl5/recipe.toml diff --git a/recipes/wip/libs/other/libgif/recipe.toml b/recipes/wip/libs/video/libgif/recipe.toml similarity index 100% rename from recipes/wip/libs/other/libgif/recipe.toml rename to recipes/wip/libs/video/libgif/recipe.toml diff --git a/recipes/wip/libs/other/libmatroska/recipe.toml b/recipes/wip/libs/video/libmatroska/recipe.toml similarity index 100% rename from recipes/wip/libs/other/libmatroska/recipe.toml rename to recipes/wip/libs/video/libmatroska/recipe.toml diff --git a/recipes/wip/libs/other/libvpx/recipe.toml b/recipes/wip/libs/video/libvpx/recipe.toml similarity index 100% rename from recipes/wip/libs/other/libvpx/recipe.toml rename to recipes/wip/libs/video/libvpx/recipe.toml From 00bddb50231ae7641b58258c8c10ba0be731b067 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 7 Jul 2024 09:37:02 +0000 Subject: [PATCH 1979/3180] Add a recipe --- recipes/wip/web/verso/recipe.toml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 recipes/wip/web/verso/recipe.toml diff --git a/recipes/wip/web/verso/recipe.toml b/recipes/wip/web/verso/recipe.toml new file mode 100644 index 00000000..b83af125 --- /dev/null +++ b/recipes/wip/web/verso/recipe.toml @@ -0,0 +1,18 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/versotile-org/verso" +[build] +template = "cargo" +dependencies = [ + "freetype2", + "gettext", + "glib", + "gstreamer", + "harfbuzz", + "libffi", + "libiconv", + "libpng", + "openssl1", + "pcre", + "zlib", +] From e87c300591e846718491c6c9ddf2ababb10e710d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 7 Jul 2024 13:06:54 +0000 Subject: [PATCH 1980/3180] Move recipes to the WIP category --- recipes/{dev => wip/dev/lang}/perl5/perl.patch | 0 recipes/{dev => wip/dev/lang}/perl5/recipe.sh | 0 recipes/{dev => wip/dev/lang}/python37/config.site | 0 recipes/{dev => wip/dev/lang}/python37/recipe.sh | 0 recipes/{dev => wip/dev/lang}/python37/redox.patch | 0 recipes/{net => wip/terminal}/openssh/recipe.sh | 0 recipes/{net => wip/terminal}/openssh/redox.patch | 0 recipes/{emulators => wip/vm}/qemu/recipe.sh | 0 recipes/{emulators => wip/vm}/qemu/redox.patch | 0 recipes/{ => wip}/web/servo/recipe.sh | 0 10 files changed, 0 insertions(+), 0 deletions(-) rename recipes/{dev => wip/dev/lang}/perl5/perl.patch (100%) rename recipes/{dev => wip/dev/lang}/perl5/recipe.sh (100%) rename recipes/{dev => wip/dev/lang}/python37/config.site (100%) rename recipes/{dev => wip/dev/lang}/python37/recipe.sh (100%) rename recipes/{dev => wip/dev/lang}/python37/redox.patch (100%) rename recipes/{net => wip/terminal}/openssh/recipe.sh (100%) rename recipes/{net => wip/terminal}/openssh/redox.patch (100%) rename recipes/{emulators => wip/vm}/qemu/recipe.sh (100%) rename recipes/{emulators => wip/vm}/qemu/redox.patch (100%) rename recipes/{ => wip}/web/servo/recipe.sh (100%) diff --git a/recipes/dev/perl5/perl.patch b/recipes/wip/dev/lang/perl5/perl.patch similarity index 100% rename from recipes/dev/perl5/perl.patch rename to recipes/wip/dev/lang/perl5/perl.patch diff --git a/recipes/dev/perl5/recipe.sh b/recipes/wip/dev/lang/perl5/recipe.sh similarity index 100% rename from recipes/dev/perl5/recipe.sh rename to recipes/wip/dev/lang/perl5/recipe.sh diff --git a/recipes/dev/python37/config.site b/recipes/wip/dev/lang/python37/config.site similarity index 100% rename from recipes/dev/python37/config.site rename to recipes/wip/dev/lang/python37/config.site diff --git a/recipes/dev/python37/recipe.sh b/recipes/wip/dev/lang/python37/recipe.sh similarity index 100% rename from recipes/dev/python37/recipe.sh rename to recipes/wip/dev/lang/python37/recipe.sh diff --git a/recipes/dev/python37/redox.patch b/recipes/wip/dev/lang/python37/redox.patch similarity index 100% rename from recipes/dev/python37/redox.patch rename to recipes/wip/dev/lang/python37/redox.patch diff --git a/recipes/net/openssh/recipe.sh b/recipes/wip/terminal/openssh/recipe.sh similarity index 100% rename from recipes/net/openssh/recipe.sh rename to recipes/wip/terminal/openssh/recipe.sh diff --git a/recipes/net/openssh/redox.patch b/recipes/wip/terminal/openssh/redox.patch similarity index 100% rename from recipes/net/openssh/redox.patch rename to recipes/wip/terminal/openssh/redox.patch diff --git a/recipes/emulators/qemu/recipe.sh b/recipes/wip/vm/qemu/recipe.sh similarity index 100% rename from recipes/emulators/qemu/recipe.sh rename to recipes/wip/vm/qemu/recipe.sh diff --git a/recipes/emulators/qemu/redox.patch b/recipes/wip/vm/qemu/redox.patch similarity index 100% rename from recipes/emulators/qemu/redox.patch rename to recipes/wip/vm/qemu/redox.patch diff --git a/recipes/web/servo/recipe.sh b/recipes/wip/web/servo/recipe.sh similarity index 100% rename from recipes/web/servo/recipe.sh rename to recipes/wip/web/servo/recipe.sh From 17443137fb86f9c87f8929e5621fdad869231241 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 6 Jul 2024 21:23:28 +0200 Subject: [PATCH 1981/3180] Remove keyboard-sfx package The only thing it does is install a bunch of .wav files that are not used in any place. --- recipes/other/keyboard-sfx/recipe.sh | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 recipes/other/keyboard-sfx/recipe.sh diff --git a/recipes/other/keyboard-sfx/recipe.sh b/recipes/other/keyboard-sfx/recipe.sh deleted file mode 100644 index 95de8e7b..00000000 --- a/recipes/other/keyboard-sfx/recipe.sh +++ /dev/null @@ -1,22 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/keyboard-sfx.git - -function recipe_version { - echo "0.0.1" - skip=1 -} - -function recipe_build { - echo "skipping build" - skip=1 -} - -function recipe_clean { - echo "skipping clean" - skip=1 -} - -function recipe_stage { - mkdir -pv "$1/sfx" - cp -Rv ./* "$1/sfx" - skip=1 -} From 67335290faaf1732aa1520f06bf1e1c887d0beb1 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 6 Jul 2024 21:25:54 +0200 Subject: [PATCH 1982/3180] Remove glium recipe Glium is no longer actively maintained. --- recipes/demos/glium/recipe.sh | 23 ----------------------- 1 file changed, 23 deletions(-) delete mode 100644 recipes/demos/glium/recipe.sh diff --git a/recipes/demos/glium/recipe.sh b/recipes/demos/glium/recipe.sh deleted file mode 100644 index 455618c1..00000000 --- a/recipes/demos/glium/recipe.sh +++ /dev/null @@ -1,23 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/glium.git -GIT_UPSTREAM=https://github.com/glium/glium.git -BUILD_DEPENDS=(llvm18 mesa zlib) -BRANCH=redox -CARGOFLAGS="--example teapot" - -function recipe_build { - sysroot="$(realpath ../sysroot)" - set -x - cargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ - -- \ - -L "${sysroot}/lib" \ - -C link-args="-Wl,-Bstatic $("${PKG_CONFIG}" --libs osmesa) -lz -lstdc++ -lc -lgcc" - set +x - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - mkdir -pv "$dest/bin" - cp -v "target/${TARGET}/release/examples/teapot" "$dest/bin/glium" - skip=1 -} From 656a80b4a7295e1d44ae6d1787c8d18ec3f7df61 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 6 Jul 2024 21:28:59 +0200 Subject: [PATCH 1983/3180] Mark pastel as wip It doesn't compile anymore as one of it's dependencies uses a removed rustc feature. --- recipes/{tools => wip/tools/other}/pastel/recipe.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/{tools => wip/tools/other}/pastel/recipe.sh (100%) diff --git a/recipes/tools/pastel/recipe.sh b/recipes/wip/tools/other/pastel/recipe.sh similarity index 100% rename from recipes/tools/pastel/recipe.sh rename to recipes/wip/tools/other/pastel/recipe.sh From 649afc4d17e5f83f4bc0b1f9eeafe744cc6d717d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 8 Jul 2024 03:19:57 +0000 Subject: [PATCH 1984/3180] Update and convert recipes to TOML --- recipes/wip/dev/lang/perl5/recipe.sh | 34 ------------------- recipes/wip/dev/lang/perl5/recipe.toml | 24 ++++++++++++++ recipes/wip/dev/lang/python310/recipe.toml | 13 ++++++-- recipes/wip/dev/lang/python312/recipe.toml | 13 ++++++-- recipes/wip/dev/lang/python37/recipe.sh | 38 ---------------------- recipes/wip/dev/lang/python37/recipe.toml | 23 +++++++++++++ recipes/wip/terminal/openssh/recipe.sh | 28 ---------------- recipes/wip/terminal/openssh/recipe.toml | 13 ++++++++ recipes/wip/vm/qemu/recipe.sh | 34 ------------------- recipes/wip/vm/qemu/recipe.toml | 18 ++++++++++ recipes/wip/web/servo/recipe.sh | 27 --------------- recipes/wip/web/servo/recipe.toml | 24 ++++++++++++++ 12 files changed, 124 insertions(+), 165 deletions(-) delete mode 100644 recipes/wip/dev/lang/perl5/recipe.sh create mode 100644 recipes/wip/dev/lang/perl5/recipe.toml delete mode 100644 recipes/wip/dev/lang/python37/recipe.sh create mode 100644 recipes/wip/dev/lang/python37/recipe.toml delete mode 100644 recipes/wip/terminal/openssh/recipe.sh create mode 100644 recipes/wip/terminal/openssh/recipe.toml delete mode 100644 recipes/wip/vm/qemu/recipe.sh create mode 100644 recipes/wip/vm/qemu/recipe.toml delete mode 100644 recipes/wip/web/servo/recipe.sh create mode 100644 recipes/wip/web/servo/recipe.toml diff --git a/recipes/wip/dev/lang/perl5/recipe.sh b/recipes/wip/dev/lang/perl5/recipe.sh deleted file mode 100644 index eb5caac9..00000000 --- a/recipes/wip/dev/lang/perl5/recipe.sh +++ /dev/null @@ -1,34 +0,0 @@ -VERSION=5.24.2 -TAR=https://www.cpan.org/src/5.0/perl-$VERSION.tar.gz - -unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - curl -L -O --time-cond perl-cross-1.1.6.tar.gz https://github.com/arsv/perl-cross/releases/download/1.1.6/perl-cross-1.1.6.tar.gz - tar --strip-components=1 -xvf perl-cross-1.1.6.tar.gz - wget -O cnf/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" - sysroot="$($HOST-gcc -print-sysroot)" - ./configure --build=${BUILD} --target=${HOST} --prefix='/' --sysroot="$sysroot" --disable-mod=Sys-Syslog,Time-HiRes --with-libs='m' - sed -i "s/^#define Netdb_name_t.*/#define Netdb_name_t const char*/" config.h # XXX - sed -i 's/#define Strerror(e).*$/#define Strerror(e) strerror(e)/' config.h # - echo "#define HAS_VPRINTF" >> config.h - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -rf "$1/man" - skip=1 -} diff --git a/recipes/wip/dev/lang/perl5/recipe.toml b/recipes/wip/dev/lang/perl5/recipe.toml new file mode 100644 index 00000000..d4074528 --- /dev/null +++ b/recipes/wip/dev/lang/perl5/recipe.toml @@ -0,0 +1,24 @@ +#TODO incomplete script +#TODO does the patch is still needed? +#TODO update the patch to match the current version +[source] +tar = "https://www.cpan.org/src/5.0/perl-5.40.0.tar.gz" +patches = [ + "perl.patch", +] +[build] +template = "custom" +script = """ +curl -L -O --time-cond perl-cross-1.5.3.tar.gz https://github.com/arsv/perl-cross/releases/download/1.5.3/perl-cross-1.5.3.tar.gz +tar --strip-components=1 -xvf perl-cross-1.5.3.tar.gz +wget -O cnf/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +sysroot="$($HOST-gcc -print-sysroot)" # does it is still needed? +sed -i "s/^#define Netdb_name_t.*/#define Netdb_name_t const char*/" config.h # XXX +sed -i 's/#define Strerror(e).*$/#define Strerror(e) strerror(e)/' config.h # +echo "#define HAS_VPRINTF" >> config.h +COOKBOOK_CONFIGURE_FLAGS+=( + --disable-mod=Sys-Syslog,Time-HiRes + --with-libs='m' +) +cookbook_configure +""" diff --git a/recipes/wip/dev/lang/python310/recipe.toml b/recipes/wip/dev/lang/python310/recipe.toml index c2d9436e..8ed9e88e 100644 --- a/recipes/wip/dev/lang/python310/recipe.toml +++ b/recipes/wip/dev/lang/python310/recipe.toml @@ -1,5 +1,14 @@ -#TODO configuration error +#TODO not compiled or tested [source] tar = "https://www.python.org/ftp/python/3.10.13/Python-3.10.13.tar.xz" [build] -template = "configure" +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --disable-ipv6 +) +cookbook_configure +""" diff --git a/recipes/wip/dev/lang/python312/recipe.toml b/recipes/wip/dev/lang/python312/recipe.toml index 51c7f232..598eef14 100644 --- a/recipes/wip/dev/lang/python312/recipe.toml +++ b/recipes/wip/dev/lang/python312/recipe.toml @@ -1,5 +1,14 @@ -#TODO configuration error +#TODO not compiled or tested [source] tar = "https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tar.xz" [build] -template = "configure" +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --disable-ipv6 +) +cookbook_configure +""" diff --git a/recipes/wip/dev/lang/python37/recipe.sh b/recipes/wip/dev/lang/python37/recipe.sh deleted file mode 100644 index 1c92b6d6..00000000 --- a/recipes/wip/dev/lang/python37/recipe.sh +++ /dev/null @@ -1,38 +0,0 @@ -VERSION=3.7.4 -TAR=https://www.python.org/ftp/python/$VERSION/Python-$VERSION.tar.xz -BUILD_DEPENDS=(openssl1) - -export CONFIG_SITE=config.site - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - export LDFLAGS="-static" - cp ../config.site ./ - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --build=${ARCH} \ - --prefix=/ \ - --disable-ipv6 - sed -i 's|#define HAVE_PTHREAD_KILL 1|/* #undef HAVE_PTHREAD_KILL */|g' pyconfig.h - sed -i 's|#define HAVE_SCHED_SETSCHEDULER 1|/* #undef HAVE_SCHED_SETSCHEDULER */|g' pyconfig.h - sed -i 's|#define HAVE_SYS_RESOURCE_H 1|/* #undef HAVE_SYS_RESOURCE_H */|g' pyconfig.h - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install -j"$($NPROC)" - "$STRIP" "$dest/bin/python3.7" "$dest/bin/python3.7m" - skip=1 -} diff --git a/recipes/wip/dev/lang/python37/recipe.toml b/recipes/wip/dev/lang/python37/recipe.toml new file mode 100644 index 00000000..beb86e4c --- /dev/null +++ b/recipes/wip/dev/lang/python37/recipe.toml @@ -0,0 +1,23 @@ +#TODO not compiled or tested +#TODO does the patch is still needed? +#TODO maybe the script is wrong +[source] +tar = "https://www.python.org/ftp/python/3.7.17/Python-3.7.17.tar.xz" +patches = [ + "redox.patch", +] +[build] +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +cp ../config.site ./ +sed -i 's|#define HAVE_PTHREAD_KILL 1|/* #undef HAVE_PTHREAD_KILL */|g' pyconfig.h +sed -i 's|#define HAVE_SCHED_SETSCHEDULER 1|/* #undef HAVE_SCHED_SETSCHEDULER */|g' pyconfig.h +sed -i 's|#define HAVE_SYS_RESOURCE_H 1|/* #undef HAVE_SYS_RESOURCE_H */|g' pyconfig.h +COOKBOOK_CONFIGURE_FLAGS+=( + --disable-ipv6 +) +cookbook_configure +""" diff --git a/recipes/wip/terminal/openssh/recipe.sh b/recipes/wip/terminal/openssh/recipe.sh deleted file mode 100644 index 6b8e08fb..00000000 --- a/recipes/wip/terminal/openssh/recipe.sh +++ /dev/null @@ -1,28 +0,0 @@ -VERSION=7.9p1 -TAR=https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-$VERSION.tar.gz -BUILD_DEPENDS=(openssl1 zlib) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export LDFLAGS="-L$sysroot/lib" - export CPPFLAGS="-I$sysroot/include" - ./configure --build=${BUILD} --host=${HOST} --prefix=/ - "$REDOX_MAKE" -j$(nproc) - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - skip=1 -} diff --git a/recipes/wip/terminal/openssh/recipe.toml b/recipes/wip/terminal/openssh/recipe.toml new file mode 100644 index 00000000..4d7261da --- /dev/null +++ b/recipes/wip/terminal/openssh/recipe.toml @@ -0,0 +1,13 @@ +#TODO update the patch to match the current version +#TODO does the patch is still needed? +[source] +tar = "https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz" +patches = [ + "redox.patch", +] +[build] +template = "configure" +dependencies = [ + "openssl1", + "zlib", +] diff --git a/recipes/wip/vm/qemu/recipe.sh b/recipes/wip/vm/qemu/recipe.sh deleted file mode 100644 index b0c3d46d..00000000 --- a/recipes/wip/vm/qemu/recipe.sh +++ /dev/null @@ -1,34 +0,0 @@ -VERSION=3.1.0 -TAR=https://download.qemu.org/qemu-$VERSION.tar.xz -BUILD_DEPENDS=(curl glib libiconv libpng pcre pixman sdl1 zlib) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export CPPFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib" - ./configure \ - --build=${BUILD} \ - --host="${HOST}" \ - --prefix=/ - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - #export LLVM_CONFIG="x86_64-unknown-redox-llvm-config" - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/wip/vm/qemu/recipe.toml b/recipes/wip/vm/qemu/recipe.toml new file mode 100644 index 00000000..0ef0c823 --- /dev/null +++ b/recipes/wip/vm/qemu/recipe.toml @@ -0,0 +1,18 @@ +#TODO update the patch to match the current qemu version +[source] +tar = "https://download.qemu.org/qemu-9.0.1.tar.xz" +patches = [ + "redox.patch", +] +[build] +template = "configure" +dependencies = [ + "curl", + "glib", + "libiconv", + "libpng", + "pcre", + "pixman", + "sdl2", + "zlib", +] diff --git a/recipes/wip/web/servo/recipe.sh b/recipes/wip/web/servo/recipe.sh deleted file mode 100644 index b24a5804..00000000 --- a/recipes/wip/web/servo/recipe.sh +++ /dev/null @@ -1,27 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/servo.git -GIT_UPSTREAM=https://github.com/servo/servo.git -BRANCH=redox -BUILD_DEPENDS=(freetype2 gettext glib gstreamer harfbuzz libffi libiconv libpng openssl1 pcre zlib) -PREPARE_COPY=0 - -function recipe_version { - printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" - skip=1 -} - -function recipe_build { - source="$(realpath ../source)" - unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP - "$source/mach" build --target "${TARGET}" --release --with-frame-pointer # --jobs "$(nproc)" - skip=1 -} - -function recipe_clean { - echo "skipping clean" - skip=1 -} - -function recipe_stage { - echo "skipping stage" - skip=1 -} diff --git a/recipes/wip/web/servo/recipe.toml b/recipes/wip/web/servo/recipe.toml new file mode 100644 index 00000000..83b7873f --- /dev/null +++ b/recipes/wip/web/servo/recipe.toml @@ -0,0 +1,24 @@ +#TODO not compiled or tested +# if the script is wrong, read this - https://github.com/servo/servo#release-build +# advanced build instructions - https://github.com/servo/servo/wiki/Building#manual-build-setup +[source] +git = "https://github.com/servo/servo" +#git = "https://gitlab.redox-os.org/redox-os/servo" +[build] +template = "custom" +dependencies = [ + "freetype2", + "gettext", + "glib", + "gstreamer", + "harfbuzz", + "libffi", + "libiconv", + "libpng", + "openssl1", + "pcre", + "zlib", +] +script = """ +cookbook_cargo_packages servoshell +""" From e745391a02d943c8c3e9e871db6fd1cf688f7e93 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 8 Jul 2024 23:57:34 +0000 Subject: [PATCH 1985/3180] Add recipes --- recipes/wip/net/sharing/gday/recipe.toml | 8 ++++++++ recipes/wip/terminal/lk/recipe.toml | 5 +++++ 2 files changed, 13 insertions(+) create mode 100644 recipes/wip/net/sharing/gday/recipe.toml create mode 100644 recipes/wip/terminal/lk/recipe.toml diff --git a/recipes/wip/net/sharing/gday/recipe.toml b/recipes/wip/net/sharing/gday/recipe.toml new file mode 100644 index 00000000..8d3a6b20 --- /dev/null +++ b/recipes/wip/net/sharing/gday/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/manforowicz/gday" +[build] +template = "custom" +script = """ +cookbook_cargo_packages gday gday_server +""" diff --git a/recipes/wip/terminal/lk/recipe.toml b/recipes/wip/terminal/lk/recipe.toml new file mode 100644 index 00000000..1e43032a --- /dev/null +++ b/recipes/wip/terminal/lk/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/jamescoleuk/lk" +[build] +template = "cargo" From 68a7b5549a15ed36f5ef832047509501f5e2fe58 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 9 Jul 2024 00:06:39 +0000 Subject: [PATCH 1986/3180] Move recipes --- recipes/wip/net/{ => server}/spadesx/recipe.toml | 0 .../{tools/other => net/sharing}/magic-wormhole-rs/recipe.toml | 0 recipes/wip/tools/{other => }/aeruginous/recipe.toml | 0 recipes/wip/tools/{other => }/amp/recipe.toml | 0 recipes/wip/tools/{other => }/ani-cli/recipe.toml | 0 recipes/wip/tools/{other => }/ani-skip/recipe.toml | 0 recipes/wip/tools/{other => }/aria2/recipe.toml | 0 recipes/wip/tools/{other => }/arrow-tools/recipe.toml | 0 recipes/wip/tools/{other => }/artem/recipe.toml | 0 recipes/wip/tools/{other => }/ascii-gen/recipe.toml | 0 recipes/wip/tools/{other => }/asciinema-rs/recipe.toml | 0 recipes/wip/tools/{other => }/ast-grep/recipe.toml | 0 recipes/wip/tools/{other => }/astc-encoder/recipe.toml | 0 recipes/wip/tools/{other => }/astyle/recipe.toml | 0 recipes/wip/tools/{other => }/atm-cli/recipe.toml | 0 recipes/wip/tools/{other => }/atuin/recipe.toml | 0 recipes/wip/tools/{other => }/backhand/recipe.toml | 0 recipes/wip/tools/{other => }/bacon/recipe.toml | 0 recipes/wip/tools/{other => }/bacup/recipe.toml | 0 recipes/wip/tools/{other => }/bandwhich/recipe.toml | 0 recipes/wip/tools/{other => }/bartib/recipe.toml | 0 recipes/wip/tools/{other => }/bat/recipe.toml | 0 recipes/wip/tools/{other => }/battop/recipe.toml | 0 recipes/wip/tools/{other => }/bdt/recipe.toml | 0 recipes/wip/tools/{other => }/binserve/recipe.toml | 0 recipes/wip/tools/{other => }/birdy/recipe.toml | 0 recipes/wip/tools/{other => }/blockish-caca/recipe.toml | 0 recipes/wip/tools/{other => }/bottles/recipe.toml | 0 recipes/wip/tools/{other => }/bottom/recipe.toml | 0 recipes/wip/tools/{other => }/broot/recipe.toml | 0 recipes/wip/tools/{other => }/busybox/recipe.toml | 0 recipes/wip/tools/{other => }/bvr/recipe.toml | 0 recipes/wip/tools/{other => }/byteblitz/recipe.toml | 0 recipes/wip/tools/{other => }/caesium/recipe.toml | 0 recipes/wip/tools/{other => }/caligula/recipe.toml | 0 recipes/wip/tools/{other => }/carbonyl/recipe.toml | 0 recipes/wip/tools/{other => }/cava/recipe.toml | 0 recipes/wip/tools/{other => }/cb/recipe.toml | 0 recipes/wip/tools/{other => }/chafa/recipe.toml | 0 recipes/wip/tools/{other => }/checkpwn/recipe.toml | 0 recipes/wip/tools/{other => }/choose/recipe.toml | 0 recipes/wip/tools/{other => }/chromazone/recipe.toml | 0 recipes/wip/tools/{other => }/chuck/recipe.toml | 0 recipes/wip/tools/{other => }/clipcat/recipe.toml | 0 recipes/wip/tools/{other => }/clipshare-desktop/recipe.toml | 0 recipes/wip/tools/{other => }/clipshare-server/recipe.toml | 0 recipes/wip/tools/{other => }/clog-cli/recipe.toml | 0 recipes/wip/tools/{other => }/conceal/recipe.toml | 0 recipes/wip/tools/{other => }/conky/recipe.toml | 0 recipes/wip/tools/{other => }/conserve/recipe.toml | 0 recipes/wip/tools/{other => }/converseen/recipe.toml | 0 recipes/wip/tools/{other => }/cosmic-player/manifest | 0 recipes/wip/tools/{other => }/cosmic-player/recipe.toml | 0 recipes/wip/tools/{other => }/counts/recipe.toml | 0 recipes/wip/tools/{other => }/cpu-x/recipe.toml | 0 recipes/wip/tools/{other => }/cpuminer-opt/recipe.toml | 0 recipes/wip/tools/{other => }/crunchy-cli/recipe.toml | 0 recipes/wip/tools/{other => }/csvlens/recipe.toml | 0 recipes/wip/tools/{other => }/cube-timer/recipe.toml | 0 recipes/wip/tools/{other => }/cute/recipe.toml | 0 recipes/wip/tools/{other => }/cyme/recipe.toml | 0 recipes/wip/tools/{other => }/czkawka/recipe.toml | 0 recipes/wip/tools/{other => }/daktilo/recipe.toml | 0 recipes/wip/tools/{other => }/dead-ringer/recipe.toml | 0 recipes/wip/tools/{other => }/delta/recipe.toml | 0 recipes/wip/tools/{other => }/desed/recipe.toml | 0 recipes/wip/tools/{other => }/dfm/recipe.toml | 0 recipes/wip/tools/{other => }/diffr/recipe.toml | 0 recipes/wip/tools/{other => }/diffy/recipe.toml | 0 recipes/wip/tools/{other => }/dim/recipe.toml | 0 recipes/wip/tools/{other => }/diskonaut/recipe.toml | 0 recipes/wip/tools/{other => }/dispatch/recipe.toml | 0 recipes/wip/tools/{other => }/dog/recipe.toml | 0 recipes/wip/tools/{other => }/dotr/recipe.toml | 0 recipes/wip/tools/{other => }/dply/recipe.toml | 0 recipes/wip/tools/{other => }/dprint/recipe.toml | 0 recipes/wip/tools/{other => }/dra-cla/recipe.toml | 0 recipes/wip/tools/{other => }/dua/recipe.toml | 0 recipes/wip/tools/{other => }/dui/recipe.toml | 0 recipes/wip/tools/{other => }/dura/recipe.toml | 0 recipes/wip/tools/{other => }/dust/recipe.toml | 0 recipes/wip/tools/{other => }/dutree/recipe.toml | 0 recipes/wip/tools/{other => }/dysk/recipe.toml | 0 recipes/wip/tools/{other => }/elfutils/recipe.toml | 0 recipes/wip/tools/{other => }/emacs-nox/recipe.toml | 0 recipes/wip/tools/{other => }/emacs-pgtk/recipe.toml | 0 recipes/wip/tools/{other => }/emplace/recipe.toml | 0 recipes/wip/tools/{other => }/enchant/recipe.toml | 0 recipes/wip/tools/{other => }/envio/recipe.toml | 0 recipes/wip/tools/{other => }/epub2txt/recipe.toml | 0 recipes/wip/tools/{other => }/erdtree/recipe.toml | 0 recipes/wip/tools/{other => }/espanso/recipe.toml | 0 recipes/wip/tools/{other => }/eureka/recipe.toml | 0 recipes/wip/tools/{other => }/eva/recipe.toml | 0 recipes/wip/tools/{other => }/exa/recipe.toml | 0 recipes/wip/tools/{other => }/exhaust/recipe.toml | 0 recipes/wip/tools/{other => }/exuberant-ctags/recipe.toml | 0 recipes/wip/tools/{other => }/eza/recipe.toml | 0 recipes/wip/tools/{other => }/fclones/recipe.toml | 0 recipes/wip/tools/{other => }/felix/recipe.toml | 0 recipes/wip/tools/{other => }/fennec/recipe.toml | 0 recipes/wip/tools/{other => }/ffizer/recipe.toml | 0 recipes/wip/tools/{other => }/file/recipe.toml | 0 recipes/wip/tools/{other => }/flameshot/recipe.toml | 0 recipes/wip/tools/{other => }/flowtime/recipe.toml | 0 recipes/wip/tools/{other => }/freshfetch/recipe.toml | 0 recipes/wip/tools/{other => }/fselect/recipe.toml | 0 recipes/wip/tools/{other => }/fuga/recipe.toml | 0 recipes/wip/tools/{other => }/funzzy/recipe.toml | 0 recipes/wip/tools/{other => }/fzf-make/recipe.toml | 0 recipes/wip/tools/{other => }/gengo/recipe.toml | 0 recipes/wip/tools/{other => }/germ/recipe.toml | 0 recipes/wip/tools/{other => }/gifski/recipe.toml | 0 recipes/wip/tools/{other => }/glicol-cli/recipe.toml | 0 recipes/wip/tools/{other => }/glsl-viewer/recipe.toml | 0 recipes/wip/tools/{other => }/gnu-radio/recipe.toml | 0 recipes/wip/tools/{other => }/gnupg-lts/recipe.toml | 0 recipes/wip/tools/{other => }/gnupg/recipe.toml | 0 recipes/wip/tools/{other => }/gnuplot/recipe.toml | 0 recipes/wip/tools/{other => }/goldboot/recipe.toml | 0 recipes/wip/tools/{other => }/goxel/recipe.toml | 0 recipes/wip/tools/{other => }/gpg-tui/recipe.toml | 0 recipes/wip/tools/{other => }/gphoto2/recipe.toml | 0 recipes/wip/tools/{other => }/gping/recipe.toml | 0 recipes/wip/tools/{other => }/gptman/recipe.toml | 0 recipes/wip/tools/{other => }/gptube-cli/recipe.toml | 0 recipes/wip/tools/{other => }/grex/recipe.toml | 0 recipes/wip/tools/{other => }/groff/recipe.toml | 0 recipes/wip/tools/{other => }/guix/recipe.toml | 0 recipes/wip/tools/{other => }/halp/recipe.toml | 0 recipes/wip/tools/{other => }/hawkeye/recipe.toml | 0 recipes/wip/tools/{other => }/haylxon/recipe.toml | 0 recipes/wip/tools/{other => }/helix-gpui/recipe.toml | 0 recipes/wip/tools/{other => }/hgrep/recipe.toml | 0 recipes/wip/tools/{other => }/himalaya/recipe.toml | 0 recipes/wip/tools/{other => }/hired/recipe.toml | 0 recipes/wip/tools/{other => }/hl/recipe.toml | 0 recipes/wip/tools/{other => }/hoard/recipe.toml | 0 recipes/wip/tools/{other => }/horsetab/recipe.toml | 0 recipes/wip/tools/{other => }/humphrey/recipe.toml | 0 recipes/wip/tools/{other => }/hwatch/recipe.toml | 0 recipes/wip/tools/{other => }/hx/recipe.toml | 0 recipes/wip/tools/{other => }/iamb/recipe.toml | 0 recipes/wip/tools/{other => }/igrep/recipe.toml | 0 recipes/wip/tools/{other => }/imager/recipe.toml | 0 recipes/wip/tools/{other => }/inlyne/recipe.toml | 0 recipes/wip/tools/{other => }/innernet-cli/recipe.toml | 0 recipes/wip/tools/{other => }/innernet-server/recipe.toml | 0 recipes/wip/tools/{other => }/intelli-shell/recipe.toml | 0 recipes/wip/tools/{other => }/interaction-calculus/recipe.toml | 0 recipes/wip/tools/{other => }/intermodal/recipe.toml | 0 recipes/wip/tools/{other => }/itstool/recipe.toml | 0 recipes/wip/tools/{other => }/jirust/recipe.toml | 0 recipes/wip/tools/{other => }/jless/recipe.toml | 0 recipes/wip/tools/{other => }/joshuto/recipe.toml | 0 recipes/wip/tools/{other => }/jql/recipe.toml | 0 recipes/wip/tools/{other => }/just/recipe.toml | 0 recipes/wip/tools/{other => }/kami/recipe.toml | 0 recipes/wip/tools/{other => }/kanata/recipe.toml | 0 recipes/wip/tools/{other => }/kbt/recipe.toml | 0 recipes/wip/tools/{other => }/keepassxc/recipe.toml | 0 recipes/wip/tools/{other => }/kibi/recipe.toml | 0 recipes/wip/tools/{other => }/kodi/recipe.toml | 0 recipes/wip/tools/{other => }/lan-mouse/recipe.toml | 0 recipes/wip/tools/{other => }/lapce/recipe.toml | 0 recipes/wip/tools/{other => }/lazy-etherscan/recipe.toml | 0 recipes/wip/tools/{other => }/lcs-image-diff/recipe.toml | 0 recipes/wip/tools/{other => }/lddtree-rs/recipe.toml | 0 recipes/wip/tools/{other => }/legdur/recipe.toml | 0 recipes/wip/tools/{other => }/lemmeknow/recipe.toml | 0 recipes/wip/tools/{other => }/less/recipe.toml | 0 recipes/wip/tools/{other => }/lines-rs/recipe.toml | 0 recipes/wip/tools/{other => }/lineselect/recipe.toml | 0 recipes/wip/tools/{other => }/logss/recipe.toml | 0 recipes/wip/tools/{other => }/lowcharts/recipe.toml | 0 recipes/wip/tools/{other => }/lsd/recipe.toml | 0 recipes/wip/tools/{other => }/lsix/recipe.toml | 0 recipes/wip/tools/{other => }/lucid/recipe.toml | 0 recipes/wip/tools/{other => }/macchina/recipe.toml | 0 recipes/wip/tools/{other => }/mandy/recipe.toml | 0 recipes/wip/tools/{other => }/mangohud/recipe.toml | 0 recipes/wip/tools/{other => }/mask/recipe.toml | 0 recipes/wip/tools/{other => }/matui/recipe.toml | 0 recipes/wip/tools/{other => }/maze-tui/recipe.toml | 0 recipes/wip/tools/{other => }/mcfly/recipe.toml | 0 recipes/wip/tools/{other => }/mdbook/recipe.toml | 0 recipes/wip/tools/{other => }/menyoki/recipe.toml | 0 recipes/wip/tools/{other => }/mercurial/recipe.toml | 0 recipes/wip/tools/{other => }/mhv/recipe.toml | 0 recipes/wip/tools/{other => }/miniaudicle/recipe.toml | 0 recipes/wip/tools/{other => }/minmon/recipe.toml | 0 recipes/wip/tools/{other => }/mkisofs-rs/recipe.toml | 0 recipes/wip/tools/{other => }/mosh/recipe.toml | 0 recipes/wip/tools/{other => }/mprocs/recipe.toml | 0 recipes/wip/tools/{other => }/navi/recipe.toml | 0 recipes/wip/tools/{other => }/neofetch/recipe.toml | 0 recipes/wip/tools/{other => }/neovide/recipe.toml | 0 recipes/wip/tools/{other => }/neovim/recipe.toml | 0 recipes/wip/tools/{other => }/news-rs/recipe.toml | 0 recipes/wip/tools/{other => }/nickel/recipe.toml | 0 recipes/wip/tools/{other => }/nix/recipe.toml | 0 recipes/wip/tools/{other => }/nomad/recipe.toml | 0 recipes/wip/tools/{other => }/notnow/recipe.toml | 0 recipes/wip/tools/{other => }/objdiff/recipe.toml | 0 recipes/wip/tools/{other => }/obs-studio/recipe.toml | 0 recipes/wip/tools/{other => }/odilia/recipe.toml | 0 recipes/wip/tools/{other => }/okteta/recipe.toml | 0 recipes/wip/tools/{other => }/omega/recipe.toml | 0 recipes/wip/tools/{other => }/onefetch/recipe.toml | 0 recipes/wip/tools/{other => }/oranda/recipe.toml | 0 .../wip/tools/{other => }/orchaldir-texture-generator/recipe.toml | 0 recipes/wip/tools/{other => }/oxipng/recipe.toml | 0 recipes/wip/tools/{other => }/parabolic/recipe.toml | 0 recipes/wip/tools/{other => }/patchelf/recipe.toml | 0 recipes/wip/tools/{other => }/pciutils/recipe.toml | 0 recipes/wip/tools/{other => }/pdbview/recipe.toml | 0 recipes/wip/tools/{other => }/pdu/recipe.toml | 0 recipes/wip/tools/{other => }/pfetch-rs/recipe.toml | 0 recipes/wip/tools/{other => }/pidgin/recipe.toml | 0 recipes/wip/tools/{other => }/pipr/recipe.toml | 0 recipes/wip/tools/{other => }/pixcil/recipe.toml | 0 recipes/wip/tools/{other => }/pixelsort/recipe.toml | 0 recipes/wip/tools/{other => }/please/recipe.toml | 0 recipes/wip/tools/{other => }/pomky/recipe.toml | 0 recipes/wip/tools/{other => }/porsmo/recipe.toml | 0 recipes/wip/tools/{other => }/posixutils-rs/recipe.toml | 0 recipes/wip/tools/{other => }/potrace/recipe.toml | 0 recipes/wip/tools/{other => }/presenterm/recipe.toml | 0 recipes/wip/tools/{other => }/process-viewer/recipe.toml | 0 recipes/wip/tools/{other => }/procs/recipe.toml | 0 recipes/wip/tools/{other => }/pueue/recipe.toml | 0 recipes/wip/tools/{other => }/qalculate-gtk/recipe.toml | 0 recipes/wip/tools/{other => }/qrrs/recipe.toml | 0 recipes/wip/tools/{other => }/qrtool/recipe.toml | 0 recipes/wip/tools/{other => }/qv/recipe.toml | 0 recipes/wip/tools/{other => }/rage/recipe.toml | 0 recipes/wip/tools/{other => }/rana/recipe.toml | 0 recipes/wip/tools/{other => }/rargs/recipe.toml | 0 recipes/wip/tools/{other => }/rclone/recipe.toml | 0 recipes/wip/tools/{other => }/remmina/recipe.toml | 0 recipes/wip/tools/{other => }/repgrep/recipe.toml | 0 recipes/wip/tools/{other => }/restic/recipe.toml | 0 recipes/wip/tools/{other => }/rfetch/recipe.toml | 0 recipes/wip/tools/{other => }/rfz/recipe.toml | 0 recipes/wip/tools/{other => }/rip/recipe.toml | 0 recipes/wip/tools/{other => }/ripasso/recipe.toml | 0 recipes/wip/tools/{other => }/ripgrep-all/recipe.toml | 0 recipes/wip/tools/{other => }/ripsecrets/recipe.toml | 0 recipes/wip/tools/{other => }/rix/recipe.toml | 0 recipes/wip/tools/{other => }/rnr/recipe.toml | 0 recipes/wip/tools/{other => }/rq/recipe.toml | 0 recipes/wip/tools/{other => }/rsftch/recipe.toml | 0 recipes/wip/tools/{other => }/rsync/recipe.toml | 0 recipes/wip/tools/{other => }/rtorrent/recipe.toml | 0 recipes/wip/tools/{other => }/ruke/recipe.toml | 0 recipes/wip/tools/{other => }/run/recipe.toml | 0 recipes/wip/tools/{other => }/ruplacer/recipe.toml | 0 recipes/wip/tools/{other => }/rustlings/recipe.toml | 0 recipes/wip/tools/{other => }/rusty-krab-manager/recipe.toml | 0 recipes/wip/tools/{other => }/rusty-psn-cli/recipe.toml | 0 recipes/wip/tools/{other => }/rusty-psn-gui/recipe.toml | 0 recipes/wip/tools/{other => }/rusty/recipe.toml | 0 recipes/wip/tools/{other => }/rusync/recipe.toml | 0 recipes/wip/tools/{other => }/sad/recipe.toml | 0 recipes/wip/tools/{other => }/sam/recipe.toml | 0 recipes/wip/tools/{other => }/scribus/recipe.toml | 0 recipes/wip/tools/{other => }/scrying/recipe.toml | 0 recipes/wip/tools/{other => }/sd/recipe.toml | 0 recipes/wip/tools/{other => }/shd/recipe.toml | 0 recipes/wip/tools/{other => }/shellfirm/recipe.toml | 0 recipes/wip/tools/{other => }/shokunin/recipe.toml | 0 recipes/wip/tools/{other => }/sig/recipe.toml | 0 recipes/wip/tools/{other => }/sigi/recipe.toml | 0 recipes/wip/tools/{other => }/simplemoji/recipe.toml | 0 recipes/wip/tools/{other => }/skim/recipe.toml | 0 recipes/wip/tools/{other => }/skyspell/recipe.toml | 0 recipes/wip/tools/{other => }/smartmontools/recipe.toml | 0 recipes/wip/tools/{other => }/snappy-rs/recipe.toml | 0 recipes/wip/tools/{other => }/spacer/recipe.toml | 0 recipes/wip/tools/{other => }/spidey/recipe.toml | 0 recipes/wip/tools/{other => }/sprinkles/recipe.toml | 0 recipes/wip/tools/{other => }/starship/recipe.toml | 0 recipes/wip/tools/{other => }/stellarium/recipe.toml | 0 recipes/wip/tools/{other => }/stress-ng/recipe.toml | 0 recipes/wip/tools/{other => }/succeed2ban-tui/recipe.toml | 0 recipes/wip/tools/{other => }/sudo-rs/recipe.toml | 0 recipes/wip/tools/{other => }/sued/recipe.toml | 0 recipes/wip/tools/{other => }/svg2pdf/recipe.toml | 0 recipes/wip/tools/{other => }/swc/recipe.toml | 0 recipes/wip/tools/{other => }/t-rec/recipe.toml | 0 recipes/wip/tools/{other => }/tailspin/recipe.toml | 0 recipes/wip/tools/{other => }/tarlz/recipe.toml | 0 recipes/wip/tools/{other => }/task-maker-rs/recipe.toml | 0 recipes/wip/tools/{other => }/taskserver/recipe.toml | 0 recipes/wip/tools/{other => }/taskwarrior-tui/recipe.toml | 0 recipes/wip/tools/{other => }/taskwarrior/recipe.toml | 0 recipes/wip/tools/{other => }/tauro-monitor/recipe.toml | 0 recipes/wip/tools/{other => }/tealdeer/recipe.toml | 0 recipes/wip/tools/{other => }/teip/recipe.toml | 0 recipes/wip/tools/{other => }/termimage/recipe.toml | 0 recipes/wip/tools/{other => }/thwack/recipe.toml | 0 recipes/wip/tools/{other => }/tin-summer/recipe.toml | 0 recipes/wip/tools/{other => }/tinywasm/recipe.toml | 0 recipes/wip/tools/{other => }/tl-rs/recipe.toml | 0 recipes/wip/tools/{other => }/tock/recipe.toml | 0 recipes/wip/tools/{other => }/toipe/recipe.toml | 0 recipes/wip/tools/{other => }/topgrade/recipe.toml | 0 recipes/wip/tools/{other => }/torrust-tracker/recipe.toml | 0 recipes/wip/tools/{other => }/toybox/recipe.toml | 0 recipes/wip/tools/{other => }/tp-note/recipe.toml | 0 recipes/wip/tools/{other => }/tq/recipe.toml | 0 recipes/wip/tools/{other => }/treq/recipe.toml | 0 recipes/wip/tools/{other => }/tsuchita/recipe.toml | 0 recipes/wip/tools/{other => }/tts-tui/recipe.toml | 0 recipes/wip/tools/{other => }/ttyper/recipe.toml | 0 recipes/wip/tools/{other => }/tui-journal/recipe.toml | 0 recipes/wip/tools/{other => }/tvix/recipe.toml | 0 recipes/wip/tools/{other => }/typst/recipe.toml | 0 recipes/wip/tools/{other => }/uget/recipe.toml | 0 recipes/wip/tools/{other => }/upscaler/recipe.toml | 0 recipes/wip/tools/{other => }/upx/recipe.toml | 0 recipes/wip/tools/{other => }/usbutils/recipe.toml | 0 recipes/wip/tools/{other => }/util-linux/recipe.toml | 0 recipes/wip/tools/{other => }/vector/recipe.toml | 0 recipes/wip/tools/{other => }/ventoy/recipe.toml | 0 recipes/wip/tools/{other => }/vincenzo/recipe.toml | 0 recipes/wip/tools/{other => }/vlc/recipe.toml | 0 recipes/wip/tools/{other => }/vulkan-tools/recipe.toml | 0 recipes/wip/tools/{other => }/watchexec/recipe.toml | 0 recipes/wip/tools/{other => }/watchmen/recipe.toml | 0 recipes/wip/tools/{other => }/wayback-rs/recipe.toml | 0 recipes/wip/tools/{other => }/wayshot/recipe.toml | 0 recipes/wip/tools/{other => }/wethr/recipe.toml | 0 recipes/wip/tools/{other => }/weylus/recipe.toml | 0 recipes/wip/tools/{other => }/wick/recipe.toml | 0 recipes/wip/tools/{other => }/wpaperd/recipe.toml | 0 recipes/wip/tools/{other => }/xcp/recipe.toml | 0 recipes/wip/tools/{other => }/xdg-utils/recipe.toml | 0 recipes/wip/tools/{other => }/xdotool/recipe.toml | 0 recipes/wip/tools/{other => }/xdvdfs/recipe.toml | 0 recipes/wip/tools/{other => }/xh/recipe.toml | 0 recipes/wip/tools/{other => }/xiu/recipe.toml | 0 recipes/wip/tools/{other => }/xorriso/recipe.toml | 0 recipes/wip/tools/{other => }/xsv/recipe.toml | 0 recipes/wip/tools/{other => }/zeitfetch/recipe.toml | 0 recipes/wip/tools/{other => }/zet/recipe.toml | 0 346 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/net/{ => server}/spadesx/recipe.toml (100%) rename recipes/wip/{tools/other => net/sharing}/magic-wormhole-rs/recipe.toml (100%) rename recipes/wip/tools/{other => }/aeruginous/recipe.toml (100%) rename recipes/wip/tools/{other => }/amp/recipe.toml (100%) rename recipes/wip/tools/{other => }/ani-cli/recipe.toml (100%) rename recipes/wip/tools/{other => }/ani-skip/recipe.toml (100%) rename recipes/wip/tools/{other => }/aria2/recipe.toml (100%) rename recipes/wip/tools/{other => }/arrow-tools/recipe.toml (100%) rename recipes/wip/tools/{other => }/artem/recipe.toml (100%) rename recipes/wip/tools/{other => }/ascii-gen/recipe.toml (100%) rename recipes/wip/tools/{other => }/asciinema-rs/recipe.toml (100%) rename recipes/wip/tools/{other => }/ast-grep/recipe.toml (100%) rename recipes/wip/tools/{other => }/astc-encoder/recipe.toml (100%) rename recipes/wip/tools/{other => }/astyle/recipe.toml (100%) rename recipes/wip/tools/{other => }/atm-cli/recipe.toml (100%) rename recipes/wip/tools/{other => }/atuin/recipe.toml (100%) rename recipes/wip/tools/{other => }/backhand/recipe.toml (100%) rename recipes/wip/tools/{other => }/bacon/recipe.toml (100%) rename recipes/wip/tools/{other => }/bacup/recipe.toml (100%) rename recipes/wip/tools/{other => }/bandwhich/recipe.toml (100%) rename recipes/wip/tools/{other => }/bartib/recipe.toml (100%) rename recipes/wip/tools/{other => }/bat/recipe.toml (100%) rename recipes/wip/tools/{other => }/battop/recipe.toml (100%) rename recipes/wip/tools/{other => }/bdt/recipe.toml (100%) rename recipes/wip/tools/{other => }/binserve/recipe.toml (100%) rename recipes/wip/tools/{other => }/birdy/recipe.toml (100%) rename recipes/wip/tools/{other => }/blockish-caca/recipe.toml (100%) rename recipes/wip/tools/{other => }/bottles/recipe.toml (100%) rename recipes/wip/tools/{other => }/bottom/recipe.toml (100%) rename recipes/wip/tools/{other => }/broot/recipe.toml (100%) rename recipes/wip/tools/{other => }/busybox/recipe.toml (100%) rename recipes/wip/tools/{other => }/bvr/recipe.toml (100%) rename recipes/wip/tools/{other => }/byteblitz/recipe.toml (100%) rename recipes/wip/tools/{other => }/caesium/recipe.toml (100%) rename recipes/wip/tools/{other => }/caligula/recipe.toml (100%) rename recipes/wip/tools/{other => }/carbonyl/recipe.toml (100%) rename recipes/wip/tools/{other => }/cava/recipe.toml (100%) rename recipes/wip/tools/{other => }/cb/recipe.toml (100%) rename recipes/wip/tools/{other => }/chafa/recipe.toml (100%) rename recipes/wip/tools/{other => }/checkpwn/recipe.toml (100%) rename recipes/wip/tools/{other => }/choose/recipe.toml (100%) rename recipes/wip/tools/{other => }/chromazone/recipe.toml (100%) rename recipes/wip/tools/{other => }/chuck/recipe.toml (100%) rename recipes/wip/tools/{other => }/clipcat/recipe.toml (100%) rename recipes/wip/tools/{other => }/clipshare-desktop/recipe.toml (100%) rename recipes/wip/tools/{other => }/clipshare-server/recipe.toml (100%) rename recipes/wip/tools/{other => }/clog-cli/recipe.toml (100%) rename recipes/wip/tools/{other => }/conceal/recipe.toml (100%) rename recipes/wip/tools/{other => }/conky/recipe.toml (100%) rename recipes/wip/tools/{other => }/conserve/recipe.toml (100%) rename recipes/wip/tools/{other => }/converseen/recipe.toml (100%) rename recipes/wip/tools/{other => }/cosmic-player/manifest (100%) rename recipes/wip/tools/{other => }/cosmic-player/recipe.toml (100%) rename recipes/wip/tools/{other => }/counts/recipe.toml (100%) rename recipes/wip/tools/{other => }/cpu-x/recipe.toml (100%) rename recipes/wip/tools/{other => }/cpuminer-opt/recipe.toml (100%) rename recipes/wip/tools/{other => }/crunchy-cli/recipe.toml (100%) rename recipes/wip/tools/{other => }/csvlens/recipe.toml (100%) rename recipes/wip/tools/{other => }/cube-timer/recipe.toml (100%) rename recipes/wip/tools/{other => }/cute/recipe.toml (100%) rename recipes/wip/tools/{other => }/cyme/recipe.toml (100%) rename recipes/wip/tools/{other => }/czkawka/recipe.toml (100%) rename recipes/wip/tools/{other => }/daktilo/recipe.toml (100%) rename recipes/wip/tools/{other => }/dead-ringer/recipe.toml (100%) rename recipes/wip/tools/{other => }/delta/recipe.toml (100%) rename recipes/wip/tools/{other => }/desed/recipe.toml (100%) rename recipes/wip/tools/{other => }/dfm/recipe.toml (100%) rename recipes/wip/tools/{other => }/diffr/recipe.toml (100%) rename recipes/wip/tools/{other => }/diffy/recipe.toml (100%) rename recipes/wip/tools/{other => }/dim/recipe.toml (100%) rename recipes/wip/tools/{other => }/diskonaut/recipe.toml (100%) rename recipes/wip/tools/{other => }/dispatch/recipe.toml (100%) rename recipes/wip/tools/{other => }/dog/recipe.toml (100%) rename recipes/wip/tools/{other => }/dotr/recipe.toml (100%) rename recipes/wip/tools/{other => }/dply/recipe.toml (100%) rename recipes/wip/tools/{other => }/dprint/recipe.toml (100%) rename recipes/wip/tools/{other => }/dra-cla/recipe.toml (100%) rename recipes/wip/tools/{other => }/dua/recipe.toml (100%) rename recipes/wip/tools/{other => }/dui/recipe.toml (100%) rename recipes/wip/tools/{other => }/dura/recipe.toml (100%) rename recipes/wip/tools/{other => }/dust/recipe.toml (100%) rename recipes/wip/tools/{other => }/dutree/recipe.toml (100%) rename recipes/wip/tools/{other => }/dysk/recipe.toml (100%) rename recipes/wip/tools/{other => }/elfutils/recipe.toml (100%) rename recipes/wip/tools/{other => }/emacs-nox/recipe.toml (100%) rename recipes/wip/tools/{other => }/emacs-pgtk/recipe.toml (100%) rename recipes/wip/tools/{other => }/emplace/recipe.toml (100%) rename recipes/wip/tools/{other => }/enchant/recipe.toml (100%) rename recipes/wip/tools/{other => }/envio/recipe.toml (100%) rename recipes/wip/tools/{other => }/epub2txt/recipe.toml (100%) rename recipes/wip/tools/{other => }/erdtree/recipe.toml (100%) rename recipes/wip/tools/{other => }/espanso/recipe.toml (100%) rename recipes/wip/tools/{other => }/eureka/recipe.toml (100%) rename recipes/wip/tools/{other => }/eva/recipe.toml (100%) rename recipes/wip/tools/{other => }/exa/recipe.toml (100%) rename recipes/wip/tools/{other => }/exhaust/recipe.toml (100%) rename recipes/wip/tools/{other => }/exuberant-ctags/recipe.toml (100%) rename recipes/wip/tools/{other => }/eza/recipe.toml (100%) rename recipes/wip/tools/{other => }/fclones/recipe.toml (100%) rename recipes/wip/tools/{other => }/felix/recipe.toml (100%) rename recipes/wip/tools/{other => }/fennec/recipe.toml (100%) rename recipes/wip/tools/{other => }/ffizer/recipe.toml (100%) rename recipes/wip/tools/{other => }/file/recipe.toml (100%) rename recipes/wip/tools/{other => }/flameshot/recipe.toml (100%) rename recipes/wip/tools/{other => }/flowtime/recipe.toml (100%) rename recipes/wip/tools/{other => }/freshfetch/recipe.toml (100%) rename recipes/wip/tools/{other => }/fselect/recipe.toml (100%) rename recipes/wip/tools/{other => }/fuga/recipe.toml (100%) rename recipes/wip/tools/{other => }/funzzy/recipe.toml (100%) rename recipes/wip/tools/{other => }/fzf-make/recipe.toml (100%) rename recipes/wip/tools/{other => }/gengo/recipe.toml (100%) rename recipes/wip/tools/{other => }/germ/recipe.toml (100%) rename recipes/wip/tools/{other => }/gifski/recipe.toml (100%) rename recipes/wip/tools/{other => }/glicol-cli/recipe.toml (100%) rename recipes/wip/tools/{other => }/glsl-viewer/recipe.toml (100%) rename recipes/wip/tools/{other => }/gnu-radio/recipe.toml (100%) rename recipes/wip/tools/{other => }/gnupg-lts/recipe.toml (100%) rename recipes/wip/tools/{other => }/gnupg/recipe.toml (100%) rename recipes/wip/tools/{other => }/gnuplot/recipe.toml (100%) rename recipes/wip/tools/{other => }/goldboot/recipe.toml (100%) rename recipes/wip/tools/{other => }/goxel/recipe.toml (100%) rename recipes/wip/tools/{other => }/gpg-tui/recipe.toml (100%) rename recipes/wip/tools/{other => }/gphoto2/recipe.toml (100%) rename recipes/wip/tools/{other => }/gping/recipe.toml (100%) rename recipes/wip/tools/{other => }/gptman/recipe.toml (100%) rename recipes/wip/tools/{other => }/gptube-cli/recipe.toml (100%) rename recipes/wip/tools/{other => }/grex/recipe.toml (100%) rename recipes/wip/tools/{other => }/groff/recipe.toml (100%) rename recipes/wip/tools/{other => }/guix/recipe.toml (100%) rename recipes/wip/tools/{other => }/halp/recipe.toml (100%) rename recipes/wip/tools/{other => }/hawkeye/recipe.toml (100%) rename recipes/wip/tools/{other => }/haylxon/recipe.toml (100%) rename recipes/wip/tools/{other => }/helix-gpui/recipe.toml (100%) rename recipes/wip/tools/{other => }/hgrep/recipe.toml (100%) rename recipes/wip/tools/{other => }/himalaya/recipe.toml (100%) rename recipes/wip/tools/{other => }/hired/recipe.toml (100%) rename recipes/wip/tools/{other => }/hl/recipe.toml (100%) rename recipes/wip/tools/{other => }/hoard/recipe.toml (100%) rename recipes/wip/tools/{other => }/horsetab/recipe.toml (100%) rename recipes/wip/tools/{other => }/humphrey/recipe.toml (100%) rename recipes/wip/tools/{other => }/hwatch/recipe.toml (100%) rename recipes/wip/tools/{other => }/hx/recipe.toml (100%) rename recipes/wip/tools/{other => }/iamb/recipe.toml (100%) rename recipes/wip/tools/{other => }/igrep/recipe.toml (100%) rename recipes/wip/tools/{other => }/imager/recipe.toml (100%) rename recipes/wip/tools/{other => }/inlyne/recipe.toml (100%) rename recipes/wip/tools/{other => }/innernet-cli/recipe.toml (100%) rename recipes/wip/tools/{other => }/innernet-server/recipe.toml (100%) rename recipes/wip/tools/{other => }/intelli-shell/recipe.toml (100%) rename recipes/wip/tools/{other => }/interaction-calculus/recipe.toml (100%) rename recipes/wip/tools/{other => }/intermodal/recipe.toml (100%) rename recipes/wip/tools/{other => }/itstool/recipe.toml (100%) rename recipes/wip/tools/{other => }/jirust/recipe.toml (100%) rename recipes/wip/tools/{other => }/jless/recipe.toml (100%) rename recipes/wip/tools/{other => }/joshuto/recipe.toml (100%) rename recipes/wip/tools/{other => }/jql/recipe.toml (100%) rename recipes/wip/tools/{other => }/just/recipe.toml (100%) rename recipes/wip/tools/{other => }/kami/recipe.toml (100%) rename recipes/wip/tools/{other => }/kanata/recipe.toml (100%) rename recipes/wip/tools/{other => }/kbt/recipe.toml (100%) rename recipes/wip/tools/{other => }/keepassxc/recipe.toml (100%) rename recipes/wip/tools/{other => }/kibi/recipe.toml (100%) rename recipes/wip/tools/{other => }/kodi/recipe.toml (100%) rename recipes/wip/tools/{other => }/lan-mouse/recipe.toml (100%) rename recipes/wip/tools/{other => }/lapce/recipe.toml (100%) rename recipes/wip/tools/{other => }/lazy-etherscan/recipe.toml (100%) rename recipes/wip/tools/{other => }/lcs-image-diff/recipe.toml (100%) rename recipes/wip/tools/{other => }/lddtree-rs/recipe.toml (100%) rename recipes/wip/tools/{other => }/legdur/recipe.toml (100%) rename recipes/wip/tools/{other => }/lemmeknow/recipe.toml (100%) rename recipes/wip/tools/{other => }/less/recipe.toml (100%) rename recipes/wip/tools/{other => }/lines-rs/recipe.toml (100%) rename recipes/wip/tools/{other => }/lineselect/recipe.toml (100%) rename recipes/wip/tools/{other => }/logss/recipe.toml (100%) rename recipes/wip/tools/{other => }/lowcharts/recipe.toml (100%) rename recipes/wip/tools/{other => }/lsd/recipe.toml (100%) rename recipes/wip/tools/{other => }/lsix/recipe.toml (100%) rename recipes/wip/tools/{other => }/lucid/recipe.toml (100%) rename recipes/wip/tools/{other => }/macchina/recipe.toml (100%) rename recipes/wip/tools/{other => }/mandy/recipe.toml (100%) rename recipes/wip/tools/{other => }/mangohud/recipe.toml (100%) rename recipes/wip/tools/{other => }/mask/recipe.toml (100%) rename recipes/wip/tools/{other => }/matui/recipe.toml (100%) rename recipes/wip/tools/{other => }/maze-tui/recipe.toml (100%) rename recipes/wip/tools/{other => }/mcfly/recipe.toml (100%) rename recipes/wip/tools/{other => }/mdbook/recipe.toml (100%) rename recipes/wip/tools/{other => }/menyoki/recipe.toml (100%) rename recipes/wip/tools/{other => }/mercurial/recipe.toml (100%) rename recipes/wip/tools/{other => }/mhv/recipe.toml (100%) rename recipes/wip/tools/{other => }/miniaudicle/recipe.toml (100%) rename recipes/wip/tools/{other => }/minmon/recipe.toml (100%) rename recipes/wip/tools/{other => }/mkisofs-rs/recipe.toml (100%) rename recipes/wip/tools/{other => }/mosh/recipe.toml (100%) rename recipes/wip/tools/{other => }/mprocs/recipe.toml (100%) rename recipes/wip/tools/{other => }/navi/recipe.toml (100%) rename recipes/wip/tools/{other => }/neofetch/recipe.toml (100%) rename recipes/wip/tools/{other => }/neovide/recipe.toml (100%) rename recipes/wip/tools/{other => }/neovim/recipe.toml (100%) rename recipes/wip/tools/{other => }/news-rs/recipe.toml (100%) rename recipes/wip/tools/{other => }/nickel/recipe.toml (100%) rename recipes/wip/tools/{other => }/nix/recipe.toml (100%) rename recipes/wip/tools/{other => }/nomad/recipe.toml (100%) rename recipes/wip/tools/{other => }/notnow/recipe.toml (100%) rename recipes/wip/tools/{other => }/objdiff/recipe.toml (100%) rename recipes/wip/tools/{other => }/obs-studio/recipe.toml (100%) rename recipes/wip/tools/{other => }/odilia/recipe.toml (100%) rename recipes/wip/tools/{other => }/okteta/recipe.toml (100%) rename recipes/wip/tools/{other => }/omega/recipe.toml (100%) rename recipes/wip/tools/{other => }/onefetch/recipe.toml (100%) rename recipes/wip/tools/{other => }/oranda/recipe.toml (100%) rename recipes/wip/tools/{other => }/orchaldir-texture-generator/recipe.toml (100%) rename recipes/wip/tools/{other => }/oxipng/recipe.toml (100%) rename recipes/wip/tools/{other => }/parabolic/recipe.toml (100%) rename recipes/wip/tools/{other => }/patchelf/recipe.toml (100%) rename recipes/wip/tools/{other => }/pciutils/recipe.toml (100%) rename recipes/wip/tools/{other => }/pdbview/recipe.toml (100%) rename recipes/wip/tools/{other => }/pdu/recipe.toml (100%) rename recipes/wip/tools/{other => }/pfetch-rs/recipe.toml (100%) rename recipes/wip/tools/{other => }/pidgin/recipe.toml (100%) rename recipes/wip/tools/{other => }/pipr/recipe.toml (100%) rename recipes/wip/tools/{other => }/pixcil/recipe.toml (100%) rename recipes/wip/tools/{other => }/pixelsort/recipe.toml (100%) rename recipes/wip/tools/{other => }/please/recipe.toml (100%) rename recipes/wip/tools/{other => }/pomky/recipe.toml (100%) rename recipes/wip/tools/{other => }/porsmo/recipe.toml (100%) rename recipes/wip/tools/{other => }/posixutils-rs/recipe.toml (100%) rename recipes/wip/tools/{other => }/potrace/recipe.toml (100%) rename recipes/wip/tools/{other => }/presenterm/recipe.toml (100%) rename recipes/wip/tools/{other => }/process-viewer/recipe.toml (100%) rename recipes/wip/tools/{other => }/procs/recipe.toml (100%) rename recipes/wip/tools/{other => }/pueue/recipe.toml (100%) rename recipes/wip/tools/{other => }/qalculate-gtk/recipe.toml (100%) rename recipes/wip/tools/{other => }/qrrs/recipe.toml (100%) rename recipes/wip/tools/{other => }/qrtool/recipe.toml (100%) rename recipes/wip/tools/{other => }/qv/recipe.toml (100%) rename recipes/wip/tools/{other => }/rage/recipe.toml (100%) rename recipes/wip/tools/{other => }/rana/recipe.toml (100%) rename recipes/wip/tools/{other => }/rargs/recipe.toml (100%) rename recipes/wip/tools/{other => }/rclone/recipe.toml (100%) rename recipes/wip/tools/{other => }/remmina/recipe.toml (100%) rename recipes/wip/tools/{other => }/repgrep/recipe.toml (100%) rename recipes/wip/tools/{other => }/restic/recipe.toml (100%) rename recipes/wip/tools/{other => }/rfetch/recipe.toml (100%) rename recipes/wip/tools/{other => }/rfz/recipe.toml (100%) rename recipes/wip/tools/{other => }/rip/recipe.toml (100%) rename recipes/wip/tools/{other => }/ripasso/recipe.toml (100%) rename recipes/wip/tools/{other => }/ripgrep-all/recipe.toml (100%) rename recipes/wip/tools/{other => }/ripsecrets/recipe.toml (100%) rename recipes/wip/tools/{other => }/rix/recipe.toml (100%) rename recipes/wip/tools/{other => }/rnr/recipe.toml (100%) rename recipes/wip/tools/{other => }/rq/recipe.toml (100%) rename recipes/wip/tools/{other => }/rsftch/recipe.toml (100%) rename recipes/wip/tools/{other => }/rsync/recipe.toml (100%) rename recipes/wip/tools/{other => }/rtorrent/recipe.toml (100%) rename recipes/wip/tools/{other => }/ruke/recipe.toml (100%) rename recipes/wip/tools/{other => }/run/recipe.toml (100%) rename recipes/wip/tools/{other => }/ruplacer/recipe.toml (100%) rename recipes/wip/tools/{other => }/rustlings/recipe.toml (100%) rename recipes/wip/tools/{other => }/rusty-krab-manager/recipe.toml (100%) rename recipes/wip/tools/{other => }/rusty-psn-cli/recipe.toml (100%) rename recipes/wip/tools/{other => }/rusty-psn-gui/recipe.toml (100%) rename recipes/wip/tools/{other => }/rusty/recipe.toml (100%) rename recipes/wip/tools/{other => }/rusync/recipe.toml (100%) rename recipes/wip/tools/{other => }/sad/recipe.toml (100%) rename recipes/wip/tools/{other => }/sam/recipe.toml (100%) rename recipes/wip/tools/{other => }/scribus/recipe.toml (100%) rename recipes/wip/tools/{other => }/scrying/recipe.toml (100%) rename recipes/wip/tools/{other => }/sd/recipe.toml (100%) rename recipes/wip/tools/{other => }/shd/recipe.toml (100%) rename recipes/wip/tools/{other => }/shellfirm/recipe.toml (100%) rename recipes/wip/tools/{other => }/shokunin/recipe.toml (100%) rename recipes/wip/tools/{other => }/sig/recipe.toml (100%) rename recipes/wip/tools/{other => }/sigi/recipe.toml (100%) rename recipes/wip/tools/{other => }/simplemoji/recipe.toml (100%) rename recipes/wip/tools/{other => }/skim/recipe.toml (100%) rename recipes/wip/tools/{other => }/skyspell/recipe.toml (100%) rename recipes/wip/tools/{other => }/smartmontools/recipe.toml (100%) rename recipes/wip/tools/{other => }/snappy-rs/recipe.toml (100%) rename recipes/wip/tools/{other => }/spacer/recipe.toml (100%) rename recipes/wip/tools/{other => }/spidey/recipe.toml (100%) rename recipes/wip/tools/{other => }/sprinkles/recipe.toml (100%) rename recipes/wip/tools/{other => }/starship/recipe.toml (100%) rename recipes/wip/tools/{other => }/stellarium/recipe.toml (100%) rename recipes/wip/tools/{other => }/stress-ng/recipe.toml (100%) rename recipes/wip/tools/{other => }/succeed2ban-tui/recipe.toml (100%) rename recipes/wip/tools/{other => }/sudo-rs/recipe.toml (100%) rename recipes/wip/tools/{other => }/sued/recipe.toml (100%) rename recipes/wip/tools/{other => }/svg2pdf/recipe.toml (100%) rename recipes/wip/tools/{other => }/swc/recipe.toml (100%) rename recipes/wip/tools/{other => }/t-rec/recipe.toml (100%) rename recipes/wip/tools/{other => }/tailspin/recipe.toml (100%) rename recipes/wip/tools/{other => }/tarlz/recipe.toml (100%) rename recipes/wip/tools/{other => }/task-maker-rs/recipe.toml (100%) rename recipes/wip/tools/{other => }/taskserver/recipe.toml (100%) rename recipes/wip/tools/{other => }/taskwarrior-tui/recipe.toml (100%) rename recipes/wip/tools/{other => }/taskwarrior/recipe.toml (100%) rename recipes/wip/tools/{other => }/tauro-monitor/recipe.toml (100%) rename recipes/wip/tools/{other => }/tealdeer/recipe.toml (100%) rename recipes/wip/tools/{other => }/teip/recipe.toml (100%) rename recipes/wip/tools/{other => }/termimage/recipe.toml (100%) rename recipes/wip/tools/{other => }/thwack/recipe.toml (100%) rename recipes/wip/tools/{other => }/tin-summer/recipe.toml (100%) rename recipes/wip/tools/{other => }/tinywasm/recipe.toml (100%) rename recipes/wip/tools/{other => }/tl-rs/recipe.toml (100%) rename recipes/wip/tools/{other => }/tock/recipe.toml (100%) rename recipes/wip/tools/{other => }/toipe/recipe.toml (100%) rename recipes/wip/tools/{other => }/topgrade/recipe.toml (100%) rename recipes/wip/tools/{other => }/torrust-tracker/recipe.toml (100%) rename recipes/wip/tools/{other => }/toybox/recipe.toml (100%) rename recipes/wip/tools/{other => }/tp-note/recipe.toml (100%) rename recipes/wip/tools/{other => }/tq/recipe.toml (100%) rename recipes/wip/tools/{other => }/treq/recipe.toml (100%) rename recipes/wip/tools/{other => }/tsuchita/recipe.toml (100%) rename recipes/wip/tools/{other => }/tts-tui/recipe.toml (100%) rename recipes/wip/tools/{other => }/ttyper/recipe.toml (100%) rename recipes/wip/tools/{other => }/tui-journal/recipe.toml (100%) rename recipes/wip/tools/{other => }/tvix/recipe.toml (100%) rename recipes/wip/tools/{other => }/typst/recipe.toml (100%) rename recipes/wip/tools/{other => }/uget/recipe.toml (100%) rename recipes/wip/tools/{other => }/upscaler/recipe.toml (100%) rename recipes/wip/tools/{other => }/upx/recipe.toml (100%) rename recipes/wip/tools/{other => }/usbutils/recipe.toml (100%) rename recipes/wip/tools/{other => }/util-linux/recipe.toml (100%) rename recipes/wip/tools/{other => }/vector/recipe.toml (100%) rename recipes/wip/tools/{other => }/ventoy/recipe.toml (100%) rename recipes/wip/tools/{other => }/vincenzo/recipe.toml (100%) rename recipes/wip/tools/{other => }/vlc/recipe.toml (100%) rename recipes/wip/tools/{other => }/vulkan-tools/recipe.toml (100%) rename recipes/wip/tools/{other => }/watchexec/recipe.toml (100%) rename recipes/wip/tools/{other => }/watchmen/recipe.toml (100%) rename recipes/wip/tools/{other => }/wayback-rs/recipe.toml (100%) rename recipes/wip/tools/{other => }/wayshot/recipe.toml (100%) rename recipes/wip/tools/{other => }/wethr/recipe.toml (100%) rename recipes/wip/tools/{other => }/weylus/recipe.toml (100%) rename recipes/wip/tools/{other => }/wick/recipe.toml (100%) rename recipes/wip/tools/{other => }/wpaperd/recipe.toml (100%) rename recipes/wip/tools/{other => }/xcp/recipe.toml (100%) rename recipes/wip/tools/{other => }/xdg-utils/recipe.toml (100%) rename recipes/wip/tools/{other => }/xdotool/recipe.toml (100%) rename recipes/wip/tools/{other => }/xdvdfs/recipe.toml (100%) rename recipes/wip/tools/{other => }/xh/recipe.toml (100%) rename recipes/wip/tools/{other => }/xiu/recipe.toml (100%) rename recipes/wip/tools/{other => }/xorriso/recipe.toml (100%) rename recipes/wip/tools/{other => }/xsv/recipe.toml (100%) rename recipes/wip/tools/{other => }/zeitfetch/recipe.toml (100%) rename recipes/wip/tools/{other => }/zet/recipe.toml (100%) diff --git a/recipes/wip/net/spadesx/recipe.toml b/recipes/wip/net/server/spadesx/recipe.toml similarity index 100% rename from recipes/wip/net/spadesx/recipe.toml rename to recipes/wip/net/server/spadesx/recipe.toml diff --git a/recipes/wip/tools/other/magic-wormhole-rs/recipe.toml b/recipes/wip/net/sharing/magic-wormhole-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/other/magic-wormhole-rs/recipe.toml rename to recipes/wip/net/sharing/magic-wormhole-rs/recipe.toml diff --git a/recipes/wip/tools/other/aeruginous/recipe.toml b/recipes/wip/tools/aeruginous/recipe.toml similarity index 100% rename from recipes/wip/tools/other/aeruginous/recipe.toml rename to recipes/wip/tools/aeruginous/recipe.toml diff --git a/recipes/wip/tools/other/amp/recipe.toml b/recipes/wip/tools/amp/recipe.toml similarity index 100% rename from recipes/wip/tools/other/amp/recipe.toml rename to recipes/wip/tools/amp/recipe.toml diff --git a/recipes/wip/tools/other/ani-cli/recipe.toml b/recipes/wip/tools/ani-cli/recipe.toml similarity index 100% rename from recipes/wip/tools/other/ani-cli/recipe.toml rename to recipes/wip/tools/ani-cli/recipe.toml diff --git a/recipes/wip/tools/other/ani-skip/recipe.toml b/recipes/wip/tools/ani-skip/recipe.toml similarity index 100% rename from recipes/wip/tools/other/ani-skip/recipe.toml rename to recipes/wip/tools/ani-skip/recipe.toml diff --git a/recipes/wip/tools/other/aria2/recipe.toml b/recipes/wip/tools/aria2/recipe.toml similarity index 100% rename from recipes/wip/tools/other/aria2/recipe.toml rename to recipes/wip/tools/aria2/recipe.toml diff --git a/recipes/wip/tools/other/arrow-tools/recipe.toml b/recipes/wip/tools/arrow-tools/recipe.toml similarity index 100% rename from recipes/wip/tools/other/arrow-tools/recipe.toml rename to recipes/wip/tools/arrow-tools/recipe.toml diff --git a/recipes/wip/tools/other/artem/recipe.toml b/recipes/wip/tools/artem/recipe.toml similarity index 100% rename from recipes/wip/tools/other/artem/recipe.toml rename to recipes/wip/tools/artem/recipe.toml diff --git a/recipes/wip/tools/other/ascii-gen/recipe.toml b/recipes/wip/tools/ascii-gen/recipe.toml similarity index 100% rename from recipes/wip/tools/other/ascii-gen/recipe.toml rename to recipes/wip/tools/ascii-gen/recipe.toml diff --git a/recipes/wip/tools/other/asciinema-rs/recipe.toml b/recipes/wip/tools/asciinema-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/other/asciinema-rs/recipe.toml rename to recipes/wip/tools/asciinema-rs/recipe.toml diff --git a/recipes/wip/tools/other/ast-grep/recipe.toml b/recipes/wip/tools/ast-grep/recipe.toml similarity index 100% rename from recipes/wip/tools/other/ast-grep/recipe.toml rename to recipes/wip/tools/ast-grep/recipe.toml diff --git a/recipes/wip/tools/other/astc-encoder/recipe.toml b/recipes/wip/tools/astc-encoder/recipe.toml similarity index 100% rename from recipes/wip/tools/other/astc-encoder/recipe.toml rename to recipes/wip/tools/astc-encoder/recipe.toml diff --git a/recipes/wip/tools/other/astyle/recipe.toml b/recipes/wip/tools/astyle/recipe.toml similarity index 100% rename from recipes/wip/tools/other/astyle/recipe.toml rename to recipes/wip/tools/astyle/recipe.toml diff --git a/recipes/wip/tools/other/atm-cli/recipe.toml b/recipes/wip/tools/atm-cli/recipe.toml similarity index 100% rename from recipes/wip/tools/other/atm-cli/recipe.toml rename to recipes/wip/tools/atm-cli/recipe.toml diff --git a/recipes/wip/tools/other/atuin/recipe.toml b/recipes/wip/tools/atuin/recipe.toml similarity index 100% rename from recipes/wip/tools/other/atuin/recipe.toml rename to recipes/wip/tools/atuin/recipe.toml diff --git a/recipes/wip/tools/other/backhand/recipe.toml b/recipes/wip/tools/backhand/recipe.toml similarity index 100% rename from recipes/wip/tools/other/backhand/recipe.toml rename to recipes/wip/tools/backhand/recipe.toml diff --git a/recipes/wip/tools/other/bacon/recipe.toml b/recipes/wip/tools/bacon/recipe.toml similarity index 100% rename from recipes/wip/tools/other/bacon/recipe.toml rename to recipes/wip/tools/bacon/recipe.toml diff --git a/recipes/wip/tools/other/bacup/recipe.toml b/recipes/wip/tools/bacup/recipe.toml similarity index 100% rename from recipes/wip/tools/other/bacup/recipe.toml rename to recipes/wip/tools/bacup/recipe.toml diff --git a/recipes/wip/tools/other/bandwhich/recipe.toml b/recipes/wip/tools/bandwhich/recipe.toml similarity index 100% rename from recipes/wip/tools/other/bandwhich/recipe.toml rename to recipes/wip/tools/bandwhich/recipe.toml diff --git a/recipes/wip/tools/other/bartib/recipe.toml b/recipes/wip/tools/bartib/recipe.toml similarity index 100% rename from recipes/wip/tools/other/bartib/recipe.toml rename to recipes/wip/tools/bartib/recipe.toml diff --git a/recipes/wip/tools/other/bat/recipe.toml b/recipes/wip/tools/bat/recipe.toml similarity index 100% rename from recipes/wip/tools/other/bat/recipe.toml rename to recipes/wip/tools/bat/recipe.toml diff --git a/recipes/wip/tools/other/battop/recipe.toml b/recipes/wip/tools/battop/recipe.toml similarity index 100% rename from recipes/wip/tools/other/battop/recipe.toml rename to recipes/wip/tools/battop/recipe.toml diff --git a/recipes/wip/tools/other/bdt/recipe.toml b/recipes/wip/tools/bdt/recipe.toml similarity index 100% rename from recipes/wip/tools/other/bdt/recipe.toml rename to recipes/wip/tools/bdt/recipe.toml diff --git a/recipes/wip/tools/other/binserve/recipe.toml b/recipes/wip/tools/binserve/recipe.toml similarity index 100% rename from recipes/wip/tools/other/binserve/recipe.toml rename to recipes/wip/tools/binserve/recipe.toml diff --git a/recipes/wip/tools/other/birdy/recipe.toml b/recipes/wip/tools/birdy/recipe.toml similarity index 100% rename from recipes/wip/tools/other/birdy/recipe.toml rename to recipes/wip/tools/birdy/recipe.toml diff --git a/recipes/wip/tools/other/blockish-caca/recipe.toml b/recipes/wip/tools/blockish-caca/recipe.toml similarity index 100% rename from recipes/wip/tools/other/blockish-caca/recipe.toml rename to recipes/wip/tools/blockish-caca/recipe.toml diff --git a/recipes/wip/tools/other/bottles/recipe.toml b/recipes/wip/tools/bottles/recipe.toml similarity index 100% rename from recipes/wip/tools/other/bottles/recipe.toml rename to recipes/wip/tools/bottles/recipe.toml diff --git a/recipes/wip/tools/other/bottom/recipe.toml b/recipes/wip/tools/bottom/recipe.toml similarity index 100% rename from recipes/wip/tools/other/bottom/recipe.toml rename to recipes/wip/tools/bottom/recipe.toml diff --git a/recipes/wip/tools/other/broot/recipe.toml b/recipes/wip/tools/broot/recipe.toml similarity index 100% rename from recipes/wip/tools/other/broot/recipe.toml rename to recipes/wip/tools/broot/recipe.toml diff --git a/recipes/wip/tools/other/busybox/recipe.toml b/recipes/wip/tools/busybox/recipe.toml similarity index 100% rename from recipes/wip/tools/other/busybox/recipe.toml rename to recipes/wip/tools/busybox/recipe.toml diff --git a/recipes/wip/tools/other/bvr/recipe.toml b/recipes/wip/tools/bvr/recipe.toml similarity index 100% rename from recipes/wip/tools/other/bvr/recipe.toml rename to recipes/wip/tools/bvr/recipe.toml diff --git a/recipes/wip/tools/other/byteblitz/recipe.toml b/recipes/wip/tools/byteblitz/recipe.toml similarity index 100% rename from recipes/wip/tools/other/byteblitz/recipe.toml rename to recipes/wip/tools/byteblitz/recipe.toml diff --git a/recipes/wip/tools/other/caesium/recipe.toml b/recipes/wip/tools/caesium/recipe.toml similarity index 100% rename from recipes/wip/tools/other/caesium/recipe.toml rename to recipes/wip/tools/caesium/recipe.toml diff --git a/recipes/wip/tools/other/caligula/recipe.toml b/recipes/wip/tools/caligula/recipe.toml similarity index 100% rename from recipes/wip/tools/other/caligula/recipe.toml rename to recipes/wip/tools/caligula/recipe.toml diff --git a/recipes/wip/tools/other/carbonyl/recipe.toml b/recipes/wip/tools/carbonyl/recipe.toml similarity index 100% rename from recipes/wip/tools/other/carbonyl/recipe.toml rename to recipes/wip/tools/carbonyl/recipe.toml diff --git a/recipes/wip/tools/other/cava/recipe.toml b/recipes/wip/tools/cava/recipe.toml similarity index 100% rename from recipes/wip/tools/other/cava/recipe.toml rename to recipes/wip/tools/cava/recipe.toml diff --git a/recipes/wip/tools/other/cb/recipe.toml b/recipes/wip/tools/cb/recipe.toml similarity index 100% rename from recipes/wip/tools/other/cb/recipe.toml rename to recipes/wip/tools/cb/recipe.toml diff --git a/recipes/wip/tools/other/chafa/recipe.toml b/recipes/wip/tools/chafa/recipe.toml similarity index 100% rename from recipes/wip/tools/other/chafa/recipe.toml rename to recipes/wip/tools/chafa/recipe.toml diff --git a/recipes/wip/tools/other/checkpwn/recipe.toml b/recipes/wip/tools/checkpwn/recipe.toml similarity index 100% rename from recipes/wip/tools/other/checkpwn/recipe.toml rename to recipes/wip/tools/checkpwn/recipe.toml diff --git a/recipes/wip/tools/other/choose/recipe.toml b/recipes/wip/tools/choose/recipe.toml similarity index 100% rename from recipes/wip/tools/other/choose/recipe.toml rename to recipes/wip/tools/choose/recipe.toml diff --git a/recipes/wip/tools/other/chromazone/recipe.toml b/recipes/wip/tools/chromazone/recipe.toml similarity index 100% rename from recipes/wip/tools/other/chromazone/recipe.toml rename to recipes/wip/tools/chromazone/recipe.toml diff --git a/recipes/wip/tools/other/chuck/recipe.toml b/recipes/wip/tools/chuck/recipe.toml similarity index 100% rename from recipes/wip/tools/other/chuck/recipe.toml rename to recipes/wip/tools/chuck/recipe.toml diff --git a/recipes/wip/tools/other/clipcat/recipe.toml b/recipes/wip/tools/clipcat/recipe.toml similarity index 100% rename from recipes/wip/tools/other/clipcat/recipe.toml rename to recipes/wip/tools/clipcat/recipe.toml diff --git a/recipes/wip/tools/other/clipshare-desktop/recipe.toml b/recipes/wip/tools/clipshare-desktop/recipe.toml similarity index 100% rename from recipes/wip/tools/other/clipshare-desktop/recipe.toml rename to recipes/wip/tools/clipshare-desktop/recipe.toml diff --git a/recipes/wip/tools/other/clipshare-server/recipe.toml b/recipes/wip/tools/clipshare-server/recipe.toml similarity index 100% rename from recipes/wip/tools/other/clipshare-server/recipe.toml rename to recipes/wip/tools/clipshare-server/recipe.toml diff --git a/recipes/wip/tools/other/clog-cli/recipe.toml b/recipes/wip/tools/clog-cli/recipe.toml similarity index 100% rename from recipes/wip/tools/other/clog-cli/recipe.toml rename to recipes/wip/tools/clog-cli/recipe.toml diff --git a/recipes/wip/tools/other/conceal/recipe.toml b/recipes/wip/tools/conceal/recipe.toml similarity index 100% rename from recipes/wip/tools/other/conceal/recipe.toml rename to recipes/wip/tools/conceal/recipe.toml diff --git a/recipes/wip/tools/other/conky/recipe.toml b/recipes/wip/tools/conky/recipe.toml similarity index 100% rename from recipes/wip/tools/other/conky/recipe.toml rename to recipes/wip/tools/conky/recipe.toml diff --git a/recipes/wip/tools/other/conserve/recipe.toml b/recipes/wip/tools/conserve/recipe.toml similarity index 100% rename from recipes/wip/tools/other/conserve/recipe.toml rename to recipes/wip/tools/conserve/recipe.toml diff --git a/recipes/wip/tools/other/converseen/recipe.toml b/recipes/wip/tools/converseen/recipe.toml similarity index 100% rename from recipes/wip/tools/other/converseen/recipe.toml rename to recipes/wip/tools/converseen/recipe.toml diff --git a/recipes/wip/tools/other/cosmic-player/manifest b/recipes/wip/tools/cosmic-player/manifest similarity index 100% rename from recipes/wip/tools/other/cosmic-player/manifest rename to recipes/wip/tools/cosmic-player/manifest diff --git a/recipes/wip/tools/other/cosmic-player/recipe.toml b/recipes/wip/tools/cosmic-player/recipe.toml similarity index 100% rename from recipes/wip/tools/other/cosmic-player/recipe.toml rename to recipes/wip/tools/cosmic-player/recipe.toml diff --git a/recipes/wip/tools/other/counts/recipe.toml b/recipes/wip/tools/counts/recipe.toml similarity index 100% rename from recipes/wip/tools/other/counts/recipe.toml rename to recipes/wip/tools/counts/recipe.toml diff --git a/recipes/wip/tools/other/cpu-x/recipe.toml b/recipes/wip/tools/cpu-x/recipe.toml similarity index 100% rename from recipes/wip/tools/other/cpu-x/recipe.toml rename to recipes/wip/tools/cpu-x/recipe.toml diff --git a/recipes/wip/tools/other/cpuminer-opt/recipe.toml b/recipes/wip/tools/cpuminer-opt/recipe.toml similarity index 100% rename from recipes/wip/tools/other/cpuminer-opt/recipe.toml rename to recipes/wip/tools/cpuminer-opt/recipe.toml diff --git a/recipes/wip/tools/other/crunchy-cli/recipe.toml b/recipes/wip/tools/crunchy-cli/recipe.toml similarity index 100% rename from recipes/wip/tools/other/crunchy-cli/recipe.toml rename to recipes/wip/tools/crunchy-cli/recipe.toml diff --git a/recipes/wip/tools/other/csvlens/recipe.toml b/recipes/wip/tools/csvlens/recipe.toml similarity index 100% rename from recipes/wip/tools/other/csvlens/recipe.toml rename to recipes/wip/tools/csvlens/recipe.toml diff --git a/recipes/wip/tools/other/cube-timer/recipe.toml b/recipes/wip/tools/cube-timer/recipe.toml similarity index 100% rename from recipes/wip/tools/other/cube-timer/recipe.toml rename to recipes/wip/tools/cube-timer/recipe.toml diff --git a/recipes/wip/tools/other/cute/recipe.toml b/recipes/wip/tools/cute/recipe.toml similarity index 100% rename from recipes/wip/tools/other/cute/recipe.toml rename to recipes/wip/tools/cute/recipe.toml diff --git a/recipes/wip/tools/other/cyme/recipe.toml b/recipes/wip/tools/cyme/recipe.toml similarity index 100% rename from recipes/wip/tools/other/cyme/recipe.toml rename to recipes/wip/tools/cyme/recipe.toml diff --git a/recipes/wip/tools/other/czkawka/recipe.toml b/recipes/wip/tools/czkawka/recipe.toml similarity index 100% rename from recipes/wip/tools/other/czkawka/recipe.toml rename to recipes/wip/tools/czkawka/recipe.toml diff --git a/recipes/wip/tools/other/daktilo/recipe.toml b/recipes/wip/tools/daktilo/recipe.toml similarity index 100% rename from recipes/wip/tools/other/daktilo/recipe.toml rename to recipes/wip/tools/daktilo/recipe.toml diff --git a/recipes/wip/tools/other/dead-ringer/recipe.toml b/recipes/wip/tools/dead-ringer/recipe.toml similarity index 100% rename from recipes/wip/tools/other/dead-ringer/recipe.toml rename to recipes/wip/tools/dead-ringer/recipe.toml diff --git a/recipes/wip/tools/other/delta/recipe.toml b/recipes/wip/tools/delta/recipe.toml similarity index 100% rename from recipes/wip/tools/other/delta/recipe.toml rename to recipes/wip/tools/delta/recipe.toml diff --git a/recipes/wip/tools/other/desed/recipe.toml b/recipes/wip/tools/desed/recipe.toml similarity index 100% rename from recipes/wip/tools/other/desed/recipe.toml rename to recipes/wip/tools/desed/recipe.toml diff --git a/recipes/wip/tools/other/dfm/recipe.toml b/recipes/wip/tools/dfm/recipe.toml similarity index 100% rename from recipes/wip/tools/other/dfm/recipe.toml rename to recipes/wip/tools/dfm/recipe.toml diff --git a/recipes/wip/tools/other/diffr/recipe.toml b/recipes/wip/tools/diffr/recipe.toml similarity index 100% rename from recipes/wip/tools/other/diffr/recipe.toml rename to recipes/wip/tools/diffr/recipe.toml diff --git a/recipes/wip/tools/other/diffy/recipe.toml b/recipes/wip/tools/diffy/recipe.toml similarity index 100% rename from recipes/wip/tools/other/diffy/recipe.toml rename to recipes/wip/tools/diffy/recipe.toml diff --git a/recipes/wip/tools/other/dim/recipe.toml b/recipes/wip/tools/dim/recipe.toml similarity index 100% rename from recipes/wip/tools/other/dim/recipe.toml rename to recipes/wip/tools/dim/recipe.toml diff --git a/recipes/wip/tools/other/diskonaut/recipe.toml b/recipes/wip/tools/diskonaut/recipe.toml similarity index 100% rename from recipes/wip/tools/other/diskonaut/recipe.toml rename to recipes/wip/tools/diskonaut/recipe.toml diff --git a/recipes/wip/tools/other/dispatch/recipe.toml b/recipes/wip/tools/dispatch/recipe.toml similarity index 100% rename from recipes/wip/tools/other/dispatch/recipe.toml rename to recipes/wip/tools/dispatch/recipe.toml diff --git a/recipes/wip/tools/other/dog/recipe.toml b/recipes/wip/tools/dog/recipe.toml similarity index 100% rename from recipes/wip/tools/other/dog/recipe.toml rename to recipes/wip/tools/dog/recipe.toml diff --git a/recipes/wip/tools/other/dotr/recipe.toml b/recipes/wip/tools/dotr/recipe.toml similarity index 100% rename from recipes/wip/tools/other/dotr/recipe.toml rename to recipes/wip/tools/dotr/recipe.toml diff --git a/recipes/wip/tools/other/dply/recipe.toml b/recipes/wip/tools/dply/recipe.toml similarity index 100% rename from recipes/wip/tools/other/dply/recipe.toml rename to recipes/wip/tools/dply/recipe.toml diff --git a/recipes/wip/tools/other/dprint/recipe.toml b/recipes/wip/tools/dprint/recipe.toml similarity index 100% rename from recipes/wip/tools/other/dprint/recipe.toml rename to recipes/wip/tools/dprint/recipe.toml diff --git a/recipes/wip/tools/other/dra-cla/recipe.toml b/recipes/wip/tools/dra-cla/recipe.toml similarity index 100% rename from recipes/wip/tools/other/dra-cla/recipe.toml rename to recipes/wip/tools/dra-cla/recipe.toml diff --git a/recipes/wip/tools/other/dua/recipe.toml b/recipes/wip/tools/dua/recipe.toml similarity index 100% rename from recipes/wip/tools/other/dua/recipe.toml rename to recipes/wip/tools/dua/recipe.toml diff --git a/recipes/wip/tools/other/dui/recipe.toml b/recipes/wip/tools/dui/recipe.toml similarity index 100% rename from recipes/wip/tools/other/dui/recipe.toml rename to recipes/wip/tools/dui/recipe.toml diff --git a/recipes/wip/tools/other/dura/recipe.toml b/recipes/wip/tools/dura/recipe.toml similarity index 100% rename from recipes/wip/tools/other/dura/recipe.toml rename to recipes/wip/tools/dura/recipe.toml diff --git a/recipes/wip/tools/other/dust/recipe.toml b/recipes/wip/tools/dust/recipe.toml similarity index 100% rename from recipes/wip/tools/other/dust/recipe.toml rename to recipes/wip/tools/dust/recipe.toml diff --git a/recipes/wip/tools/other/dutree/recipe.toml b/recipes/wip/tools/dutree/recipe.toml similarity index 100% rename from recipes/wip/tools/other/dutree/recipe.toml rename to recipes/wip/tools/dutree/recipe.toml diff --git a/recipes/wip/tools/other/dysk/recipe.toml b/recipes/wip/tools/dysk/recipe.toml similarity index 100% rename from recipes/wip/tools/other/dysk/recipe.toml rename to recipes/wip/tools/dysk/recipe.toml diff --git a/recipes/wip/tools/other/elfutils/recipe.toml b/recipes/wip/tools/elfutils/recipe.toml similarity index 100% rename from recipes/wip/tools/other/elfutils/recipe.toml rename to recipes/wip/tools/elfutils/recipe.toml diff --git a/recipes/wip/tools/other/emacs-nox/recipe.toml b/recipes/wip/tools/emacs-nox/recipe.toml similarity index 100% rename from recipes/wip/tools/other/emacs-nox/recipe.toml rename to recipes/wip/tools/emacs-nox/recipe.toml diff --git a/recipes/wip/tools/other/emacs-pgtk/recipe.toml b/recipes/wip/tools/emacs-pgtk/recipe.toml similarity index 100% rename from recipes/wip/tools/other/emacs-pgtk/recipe.toml rename to recipes/wip/tools/emacs-pgtk/recipe.toml diff --git a/recipes/wip/tools/other/emplace/recipe.toml b/recipes/wip/tools/emplace/recipe.toml similarity index 100% rename from recipes/wip/tools/other/emplace/recipe.toml rename to recipes/wip/tools/emplace/recipe.toml diff --git a/recipes/wip/tools/other/enchant/recipe.toml b/recipes/wip/tools/enchant/recipe.toml similarity index 100% rename from recipes/wip/tools/other/enchant/recipe.toml rename to recipes/wip/tools/enchant/recipe.toml diff --git a/recipes/wip/tools/other/envio/recipe.toml b/recipes/wip/tools/envio/recipe.toml similarity index 100% rename from recipes/wip/tools/other/envio/recipe.toml rename to recipes/wip/tools/envio/recipe.toml diff --git a/recipes/wip/tools/other/epub2txt/recipe.toml b/recipes/wip/tools/epub2txt/recipe.toml similarity index 100% rename from recipes/wip/tools/other/epub2txt/recipe.toml rename to recipes/wip/tools/epub2txt/recipe.toml diff --git a/recipes/wip/tools/other/erdtree/recipe.toml b/recipes/wip/tools/erdtree/recipe.toml similarity index 100% rename from recipes/wip/tools/other/erdtree/recipe.toml rename to recipes/wip/tools/erdtree/recipe.toml diff --git a/recipes/wip/tools/other/espanso/recipe.toml b/recipes/wip/tools/espanso/recipe.toml similarity index 100% rename from recipes/wip/tools/other/espanso/recipe.toml rename to recipes/wip/tools/espanso/recipe.toml diff --git a/recipes/wip/tools/other/eureka/recipe.toml b/recipes/wip/tools/eureka/recipe.toml similarity index 100% rename from recipes/wip/tools/other/eureka/recipe.toml rename to recipes/wip/tools/eureka/recipe.toml diff --git a/recipes/wip/tools/other/eva/recipe.toml b/recipes/wip/tools/eva/recipe.toml similarity index 100% rename from recipes/wip/tools/other/eva/recipe.toml rename to recipes/wip/tools/eva/recipe.toml diff --git a/recipes/wip/tools/other/exa/recipe.toml b/recipes/wip/tools/exa/recipe.toml similarity index 100% rename from recipes/wip/tools/other/exa/recipe.toml rename to recipes/wip/tools/exa/recipe.toml diff --git a/recipes/wip/tools/other/exhaust/recipe.toml b/recipes/wip/tools/exhaust/recipe.toml similarity index 100% rename from recipes/wip/tools/other/exhaust/recipe.toml rename to recipes/wip/tools/exhaust/recipe.toml diff --git a/recipes/wip/tools/other/exuberant-ctags/recipe.toml b/recipes/wip/tools/exuberant-ctags/recipe.toml similarity index 100% rename from recipes/wip/tools/other/exuberant-ctags/recipe.toml rename to recipes/wip/tools/exuberant-ctags/recipe.toml diff --git a/recipes/wip/tools/other/eza/recipe.toml b/recipes/wip/tools/eza/recipe.toml similarity index 100% rename from recipes/wip/tools/other/eza/recipe.toml rename to recipes/wip/tools/eza/recipe.toml diff --git a/recipes/wip/tools/other/fclones/recipe.toml b/recipes/wip/tools/fclones/recipe.toml similarity index 100% rename from recipes/wip/tools/other/fclones/recipe.toml rename to recipes/wip/tools/fclones/recipe.toml diff --git a/recipes/wip/tools/other/felix/recipe.toml b/recipes/wip/tools/felix/recipe.toml similarity index 100% rename from recipes/wip/tools/other/felix/recipe.toml rename to recipes/wip/tools/felix/recipe.toml diff --git a/recipes/wip/tools/other/fennec/recipe.toml b/recipes/wip/tools/fennec/recipe.toml similarity index 100% rename from recipes/wip/tools/other/fennec/recipe.toml rename to recipes/wip/tools/fennec/recipe.toml diff --git a/recipes/wip/tools/other/ffizer/recipe.toml b/recipes/wip/tools/ffizer/recipe.toml similarity index 100% rename from recipes/wip/tools/other/ffizer/recipe.toml rename to recipes/wip/tools/ffizer/recipe.toml diff --git a/recipes/wip/tools/other/file/recipe.toml b/recipes/wip/tools/file/recipe.toml similarity index 100% rename from recipes/wip/tools/other/file/recipe.toml rename to recipes/wip/tools/file/recipe.toml diff --git a/recipes/wip/tools/other/flameshot/recipe.toml b/recipes/wip/tools/flameshot/recipe.toml similarity index 100% rename from recipes/wip/tools/other/flameshot/recipe.toml rename to recipes/wip/tools/flameshot/recipe.toml diff --git a/recipes/wip/tools/other/flowtime/recipe.toml b/recipes/wip/tools/flowtime/recipe.toml similarity index 100% rename from recipes/wip/tools/other/flowtime/recipe.toml rename to recipes/wip/tools/flowtime/recipe.toml diff --git a/recipes/wip/tools/other/freshfetch/recipe.toml b/recipes/wip/tools/freshfetch/recipe.toml similarity index 100% rename from recipes/wip/tools/other/freshfetch/recipe.toml rename to recipes/wip/tools/freshfetch/recipe.toml diff --git a/recipes/wip/tools/other/fselect/recipe.toml b/recipes/wip/tools/fselect/recipe.toml similarity index 100% rename from recipes/wip/tools/other/fselect/recipe.toml rename to recipes/wip/tools/fselect/recipe.toml diff --git a/recipes/wip/tools/other/fuga/recipe.toml b/recipes/wip/tools/fuga/recipe.toml similarity index 100% rename from recipes/wip/tools/other/fuga/recipe.toml rename to recipes/wip/tools/fuga/recipe.toml diff --git a/recipes/wip/tools/other/funzzy/recipe.toml b/recipes/wip/tools/funzzy/recipe.toml similarity index 100% rename from recipes/wip/tools/other/funzzy/recipe.toml rename to recipes/wip/tools/funzzy/recipe.toml diff --git a/recipes/wip/tools/other/fzf-make/recipe.toml b/recipes/wip/tools/fzf-make/recipe.toml similarity index 100% rename from recipes/wip/tools/other/fzf-make/recipe.toml rename to recipes/wip/tools/fzf-make/recipe.toml diff --git a/recipes/wip/tools/other/gengo/recipe.toml b/recipes/wip/tools/gengo/recipe.toml similarity index 100% rename from recipes/wip/tools/other/gengo/recipe.toml rename to recipes/wip/tools/gengo/recipe.toml diff --git a/recipes/wip/tools/other/germ/recipe.toml b/recipes/wip/tools/germ/recipe.toml similarity index 100% rename from recipes/wip/tools/other/germ/recipe.toml rename to recipes/wip/tools/germ/recipe.toml diff --git a/recipes/wip/tools/other/gifski/recipe.toml b/recipes/wip/tools/gifski/recipe.toml similarity index 100% rename from recipes/wip/tools/other/gifski/recipe.toml rename to recipes/wip/tools/gifski/recipe.toml diff --git a/recipes/wip/tools/other/glicol-cli/recipe.toml b/recipes/wip/tools/glicol-cli/recipe.toml similarity index 100% rename from recipes/wip/tools/other/glicol-cli/recipe.toml rename to recipes/wip/tools/glicol-cli/recipe.toml diff --git a/recipes/wip/tools/other/glsl-viewer/recipe.toml b/recipes/wip/tools/glsl-viewer/recipe.toml similarity index 100% rename from recipes/wip/tools/other/glsl-viewer/recipe.toml rename to recipes/wip/tools/glsl-viewer/recipe.toml diff --git a/recipes/wip/tools/other/gnu-radio/recipe.toml b/recipes/wip/tools/gnu-radio/recipe.toml similarity index 100% rename from recipes/wip/tools/other/gnu-radio/recipe.toml rename to recipes/wip/tools/gnu-radio/recipe.toml diff --git a/recipes/wip/tools/other/gnupg-lts/recipe.toml b/recipes/wip/tools/gnupg-lts/recipe.toml similarity index 100% rename from recipes/wip/tools/other/gnupg-lts/recipe.toml rename to recipes/wip/tools/gnupg-lts/recipe.toml diff --git a/recipes/wip/tools/other/gnupg/recipe.toml b/recipes/wip/tools/gnupg/recipe.toml similarity index 100% rename from recipes/wip/tools/other/gnupg/recipe.toml rename to recipes/wip/tools/gnupg/recipe.toml diff --git a/recipes/wip/tools/other/gnuplot/recipe.toml b/recipes/wip/tools/gnuplot/recipe.toml similarity index 100% rename from recipes/wip/tools/other/gnuplot/recipe.toml rename to recipes/wip/tools/gnuplot/recipe.toml diff --git a/recipes/wip/tools/other/goldboot/recipe.toml b/recipes/wip/tools/goldboot/recipe.toml similarity index 100% rename from recipes/wip/tools/other/goldboot/recipe.toml rename to recipes/wip/tools/goldboot/recipe.toml diff --git a/recipes/wip/tools/other/goxel/recipe.toml b/recipes/wip/tools/goxel/recipe.toml similarity index 100% rename from recipes/wip/tools/other/goxel/recipe.toml rename to recipes/wip/tools/goxel/recipe.toml diff --git a/recipes/wip/tools/other/gpg-tui/recipe.toml b/recipes/wip/tools/gpg-tui/recipe.toml similarity index 100% rename from recipes/wip/tools/other/gpg-tui/recipe.toml rename to recipes/wip/tools/gpg-tui/recipe.toml diff --git a/recipes/wip/tools/other/gphoto2/recipe.toml b/recipes/wip/tools/gphoto2/recipe.toml similarity index 100% rename from recipes/wip/tools/other/gphoto2/recipe.toml rename to recipes/wip/tools/gphoto2/recipe.toml diff --git a/recipes/wip/tools/other/gping/recipe.toml b/recipes/wip/tools/gping/recipe.toml similarity index 100% rename from recipes/wip/tools/other/gping/recipe.toml rename to recipes/wip/tools/gping/recipe.toml diff --git a/recipes/wip/tools/other/gptman/recipe.toml b/recipes/wip/tools/gptman/recipe.toml similarity index 100% rename from recipes/wip/tools/other/gptman/recipe.toml rename to recipes/wip/tools/gptman/recipe.toml diff --git a/recipes/wip/tools/other/gptube-cli/recipe.toml b/recipes/wip/tools/gptube-cli/recipe.toml similarity index 100% rename from recipes/wip/tools/other/gptube-cli/recipe.toml rename to recipes/wip/tools/gptube-cli/recipe.toml diff --git a/recipes/wip/tools/other/grex/recipe.toml b/recipes/wip/tools/grex/recipe.toml similarity index 100% rename from recipes/wip/tools/other/grex/recipe.toml rename to recipes/wip/tools/grex/recipe.toml diff --git a/recipes/wip/tools/other/groff/recipe.toml b/recipes/wip/tools/groff/recipe.toml similarity index 100% rename from recipes/wip/tools/other/groff/recipe.toml rename to recipes/wip/tools/groff/recipe.toml diff --git a/recipes/wip/tools/other/guix/recipe.toml b/recipes/wip/tools/guix/recipe.toml similarity index 100% rename from recipes/wip/tools/other/guix/recipe.toml rename to recipes/wip/tools/guix/recipe.toml diff --git a/recipes/wip/tools/other/halp/recipe.toml b/recipes/wip/tools/halp/recipe.toml similarity index 100% rename from recipes/wip/tools/other/halp/recipe.toml rename to recipes/wip/tools/halp/recipe.toml diff --git a/recipes/wip/tools/other/hawkeye/recipe.toml b/recipes/wip/tools/hawkeye/recipe.toml similarity index 100% rename from recipes/wip/tools/other/hawkeye/recipe.toml rename to recipes/wip/tools/hawkeye/recipe.toml diff --git a/recipes/wip/tools/other/haylxon/recipe.toml b/recipes/wip/tools/haylxon/recipe.toml similarity index 100% rename from recipes/wip/tools/other/haylxon/recipe.toml rename to recipes/wip/tools/haylxon/recipe.toml diff --git a/recipes/wip/tools/other/helix-gpui/recipe.toml b/recipes/wip/tools/helix-gpui/recipe.toml similarity index 100% rename from recipes/wip/tools/other/helix-gpui/recipe.toml rename to recipes/wip/tools/helix-gpui/recipe.toml diff --git a/recipes/wip/tools/other/hgrep/recipe.toml b/recipes/wip/tools/hgrep/recipe.toml similarity index 100% rename from recipes/wip/tools/other/hgrep/recipe.toml rename to recipes/wip/tools/hgrep/recipe.toml diff --git a/recipes/wip/tools/other/himalaya/recipe.toml b/recipes/wip/tools/himalaya/recipe.toml similarity index 100% rename from recipes/wip/tools/other/himalaya/recipe.toml rename to recipes/wip/tools/himalaya/recipe.toml diff --git a/recipes/wip/tools/other/hired/recipe.toml b/recipes/wip/tools/hired/recipe.toml similarity index 100% rename from recipes/wip/tools/other/hired/recipe.toml rename to recipes/wip/tools/hired/recipe.toml diff --git a/recipes/wip/tools/other/hl/recipe.toml b/recipes/wip/tools/hl/recipe.toml similarity index 100% rename from recipes/wip/tools/other/hl/recipe.toml rename to recipes/wip/tools/hl/recipe.toml diff --git a/recipes/wip/tools/other/hoard/recipe.toml b/recipes/wip/tools/hoard/recipe.toml similarity index 100% rename from recipes/wip/tools/other/hoard/recipe.toml rename to recipes/wip/tools/hoard/recipe.toml diff --git a/recipes/wip/tools/other/horsetab/recipe.toml b/recipes/wip/tools/horsetab/recipe.toml similarity index 100% rename from recipes/wip/tools/other/horsetab/recipe.toml rename to recipes/wip/tools/horsetab/recipe.toml diff --git a/recipes/wip/tools/other/humphrey/recipe.toml b/recipes/wip/tools/humphrey/recipe.toml similarity index 100% rename from recipes/wip/tools/other/humphrey/recipe.toml rename to recipes/wip/tools/humphrey/recipe.toml diff --git a/recipes/wip/tools/other/hwatch/recipe.toml b/recipes/wip/tools/hwatch/recipe.toml similarity index 100% rename from recipes/wip/tools/other/hwatch/recipe.toml rename to recipes/wip/tools/hwatch/recipe.toml diff --git a/recipes/wip/tools/other/hx/recipe.toml b/recipes/wip/tools/hx/recipe.toml similarity index 100% rename from recipes/wip/tools/other/hx/recipe.toml rename to recipes/wip/tools/hx/recipe.toml diff --git a/recipes/wip/tools/other/iamb/recipe.toml b/recipes/wip/tools/iamb/recipe.toml similarity index 100% rename from recipes/wip/tools/other/iamb/recipe.toml rename to recipes/wip/tools/iamb/recipe.toml diff --git a/recipes/wip/tools/other/igrep/recipe.toml b/recipes/wip/tools/igrep/recipe.toml similarity index 100% rename from recipes/wip/tools/other/igrep/recipe.toml rename to recipes/wip/tools/igrep/recipe.toml diff --git a/recipes/wip/tools/other/imager/recipe.toml b/recipes/wip/tools/imager/recipe.toml similarity index 100% rename from recipes/wip/tools/other/imager/recipe.toml rename to recipes/wip/tools/imager/recipe.toml diff --git a/recipes/wip/tools/other/inlyne/recipe.toml b/recipes/wip/tools/inlyne/recipe.toml similarity index 100% rename from recipes/wip/tools/other/inlyne/recipe.toml rename to recipes/wip/tools/inlyne/recipe.toml diff --git a/recipes/wip/tools/other/innernet-cli/recipe.toml b/recipes/wip/tools/innernet-cli/recipe.toml similarity index 100% rename from recipes/wip/tools/other/innernet-cli/recipe.toml rename to recipes/wip/tools/innernet-cli/recipe.toml diff --git a/recipes/wip/tools/other/innernet-server/recipe.toml b/recipes/wip/tools/innernet-server/recipe.toml similarity index 100% rename from recipes/wip/tools/other/innernet-server/recipe.toml rename to recipes/wip/tools/innernet-server/recipe.toml diff --git a/recipes/wip/tools/other/intelli-shell/recipe.toml b/recipes/wip/tools/intelli-shell/recipe.toml similarity index 100% rename from recipes/wip/tools/other/intelli-shell/recipe.toml rename to recipes/wip/tools/intelli-shell/recipe.toml diff --git a/recipes/wip/tools/other/interaction-calculus/recipe.toml b/recipes/wip/tools/interaction-calculus/recipe.toml similarity index 100% rename from recipes/wip/tools/other/interaction-calculus/recipe.toml rename to recipes/wip/tools/interaction-calculus/recipe.toml diff --git a/recipes/wip/tools/other/intermodal/recipe.toml b/recipes/wip/tools/intermodal/recipe.toml similarity index 100% rename from recipes/wip/tools/other/intermodal/recipe.toml rename to recipes/wip/tools/intermodal/recipe.toml diff --git a/recipes/wip/tools/other/itstool/recipe.toml b/recipes/wip/tools/itstool/recipe.toml similarity index 100% rename from recipes/wip/tools/other/itstool/recipe.toml rename to recipes/wip/tools/itstool/recipe.toml diff --git a/recipes/wip/tools/other/jirust/recipe.toml b/recipes/wip/tools/jirust/recipe.toml similarity index 100% rename from recipes/wip/tools/other/jirust/recipe.toml rename to recipes/wip/tools/jirust/recipe.toml diff --git a/recipes/wip/tools/other/jless/recipe.toml b/recipes/wip/tools/jless/recipe.toml similarity index 100% rename from recipes/wip/tools/other/jless/recipe.toml rename to recipes/wip/tools/jless/recipe.toml diff --git a/recipes/wip/tools/other/joshuto/recipe.toml b/recipes/wip/tools/joshuto/recipe.toml similarity index 100% rename from recipes/wip/tools/other/joshuto/recipe.toml rename to recipes/wip/tools/joshuto/recipe.toml diff --git a/recipes/wip/tools/other/jql/recipe.toml b/recipes/wip/tools/jql/recipe.toml similarity index 100% rename from recipes/wip/tools/other/jql/recipe.toml rename to recipes/wip/tools/jql/recipe.toml diff --git a/recipes/wip/tools/other/just/recipe.toml b/recipes/wip/tools/just/recipe.toml similarity index 100% rename from recipes/wip/tools/other/just/recipe.toml rename to recipes/wip/tools/just/recipe.toml diff --git a/recipes/wip/tools/other/kami/recipe.toml b/recipes/wip/tools/kami/recipe.toml similarity index 100% rename from recipes/wip/tools/other/kami/recipe.toml rename to recipes/wip/tools/kami/recipe.toml diff --git a/recipes/wip/tools/other/kanata/recipe.toml b/recipes/wip/tools/kanata/recipe.toml similarity index 100% rename from recipes/wip/tools/other/kanata/recipe.toml rename to recipes/wip/tools/kanata/recipe.toml diff --git a/recipes/wip/tools/other/kbt/recipe.toml b/recipes/wip/tools/kbt/recipe.toml similarity index 100% rename from recipes/wip/tools/other/kbt/recipe.toml rename to recipes/wip/tools/kbt/recipe.toml diff --git a/recipes/wip/tools/other/keepassxc/recipe.toml b/recipes/wip/tools/keepassxc/recipe.toml similarity index 100% rename from recipes/wip/tools/other/keepassxc/recipe.toml rename to recipes/wip/tools/keepassxc/recipe.toml diff --git a/recipes/wip/tools/other/kibi/recipe.toml b/recipes/wip/tools/kibi/recipe.toml similarity index 100% rename from recipes/wip/tools/other/kibi/recipe.toml rename to recipes/wip/tools/kibi/recipe.toml diff --git a/recipes/wip/tools/other/kodi/recipe.toml b/recipes/wip/tools/kodi/recipe.toml similarity index 100% rename from recipes/wip/tools/other/kodi/recipe.toml rename to recipes/wip/tools/kodi/recipe.toml diff --git a/recipes/wip/tools/other/lan-mouse/recipe.toml b/recipes/wip/tools/lan-mouse/recipe.toml similarity index 100% rename from recipes/wip/tools/other/lan-mouse/recipe.toml rename to recipes/wip/tools/lan-mouse/recipe.toml diff --git a/recipes/wip/tools/other/lapce/recipe.toml b/recipes/wip/tools/lapce/recipe.toml similarity index 100% rename from recipes/wip/tools/other/lapce/recipe.toml rename to recipes/wip/tools/lapce/recipe.toml diff --git a/recipes/wip/tools/other/lazy-etherscan/recipe.toml b/recipes/wip/tools/lazy-etherscan/recipe.toml similarity index 100% rename from recipes/wip/tools/other/lazy-etherscan/recipe.toml rename to recipes/wip/tools/lazy-etherscan/recipe.toml diff --git a/recipes/wip/tools/other/lcs-image-diff/recipe.toml b/recipes/wip/tools/lcs-image-diff/recipe.toml similarity index 100% rename from recipes/wip/tools/other/lcs-image-diff/recipe.toml rename to recipes/wip/tools/lcs-image-diff/recipe.toml diff --git a/recipes/wip/tools/other/lddtree-rs/recipe.toml b/recipes/wip/tools/lddtree-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/other/lddtree-rs/recipe.toml rename to recipes/wip/tools/lddtree-rs/recipe.toml diff --git a/recipes/wip/tools/other/legdur/recipe.toml b/recipes/wip/tools/legdur/recipe.toml similarity index 100% rename from recipes/wip/tools/other/legdur/recipe.toml rename to recipes/wip/tools/legdur/recipe.toml diff --git a/recipes/wip/tools/other/lemmeknow/recipe.toml b/recipes/wip/tools/lemmeknow/recipe.toml similarity index 100% rename from recipes/wip/tools/other/lemmeknow/recipe.toml rename to recipes/wip/tools/lemmeknow/recipe.toml diff --git a/recipes/wip/tools/other/less/recipe.toml b/recipes/wip/tools/less/recipe.toml similarity index 100% rename from recipes/wip/tools/other/less/recipe.toml rename to recipes/wip/tools/less/recipe.toml diff --git a/recipes/wip/tools/other/lines-rs/recipe.toml b/recipes/wip/tools/lines-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/other/lines-rs/recipe.toml rename to recipes/wip/tools/lines-rs/recipe.toml diff --git a/recipes/wip/tools/other/lineselect/recipe.toml b/recipes/wip/tools/lineselect/recipe.toml similarity index 100% rename from recipes/wip/tools/other/lineselect/recipe.toml rename to recipes/wip/tools/lineselect/recipe.toml diff --git a/recipes/wip/tools/other/logss/recipe.toml b/recipes/wip/tools/logss/recipe.toml similarity index 100% rename from recipes/wip/tools/other/logss/recipe.toml rename to recipes/wip/tools/logss/recipe.toml diff --git a/recipes/wip/tools/other/lowcharts/recipe.toml b/recipes/wip/tools/lowcharts/recipe.toml similarity index 100% rename from recipes/wip/tools/other/lowcharts/recipe.toml rename to recipes/wip/tools/lowcharts/recipe.toml diff --git a/recipes/wip/tools/other/lsd/recipe.toml b/recipes/wip/tools/lsd/recipe.toml similarity index 100% rename from recipes/wip/tools/other/lsd/recipe.toml rename to recipes/wip/tools/lsd/recipe.toml diff --git a/recipes/wip/tools/other/lsix/recipe.toml b/recipes/wip/tools/lsix/recipe.toml similarity index 100% rename from recipes/wip/tools/other/lsix/recipe.toml rename to recipes/wip/tools/lsix/recipe.toml diff --git a/recipes/wip/tools/other/lucid/recipe.toml b/recipes/wip/tools/lucid/recipe.toml similarity index 100% rename from recipes/wip/tools/other/lucid/recipe.toml rename to recipes/wip/tools/lucid/recipe.toml diff --git a/recipes/wip/tools/other/macchina/recipe.toml b/recipes/wip/tools/macchina/recipe.toml similarity index 100% rename from recipes/wip/tools/other/macchina/recipe.toml rename to recipes/wip/tools/macchina/recipe.toml diff --git a/recipes/wip/tools/other/mandy/recipe.toml b/recipes/wip/tools/mandy/recipe.toml similarity index 100% rename from recipes/wip/tools/other/mandy/recipe.toml rename to recipes/wip/tools/mandy/recipe.toml diff --git a/recipes/wip/tools/other/mangohud/recipe.toml b/recipes/wip/tools/mangohud/recipe.toml similarity index 100% rename from recipes/wip/tools/other/mangohud/recipe.toml rename to recipes/wip/tools/mangohud/recipe.toml diff --git a/recipes/wip/tools/other/mask/recipe.toml b/recipes/wip/tools/mask/recipe.toml similarity index 100% rename from recipes/wip/tools/other/mask/recipe.toml rename to recipes/wip/tools/mask/recipe.toml diff --git a/recipes/wip/tools/other/matui/recipe.toml b/recipes/wip/tools/matui/recipe.toml similarity index 100% rename from recipes/wip/tools/other/matui/recipe.toml rename to recipes/wip/tools/matui/recipe.toml diff --git a/recipes/wip/tools/other/maze-tui/recipe.toml b/recipes/wip/tools/maze-tui/recipe.toml similarity index 100% rename from recipes/wip/tools/other/maze-tui/recipe.toml rename to recipes/wip/tools/maze-tui/recipe.toml diff --git a/recipes/wip/tools/other/mcfly/recipe.toml b/recipes/wip/tools/mcfly/recipe.toml similarity index 100% rename from recipes/wip/tools/other/mcfly/recipe.toml rename to recipes/wip/tools/mcfly/recipe.toml diff --git a/recipes/wip/tools/other/mdbook/recipe.toml b/recipes/wip/tools/mdbook/recipe.toml similarity index 100% rename from recipes/wip/tools/other/mdbook/recipe.toml rename to recipes/wip/tools/mdbook/recipe.toml diff --git a/recipes/wip/tools/other/menyoki/recipe.toml b/recipes/wip/tools/menyoki/recipe.toml similarity index 100% rename from recipes/wip/tools/other/menyoki/recipe.toml rename to recipes/wip/tools/menyoki/recipe.toml diff --git a/recipes/wip/tools/other/mercurial/recipe.toml b/recipes/wip/tools/mercurial/recipe.toml similarity index 100% rename from recipes/wip/tools/other/mercurial/recipe.toml rename to recipes/wip/tools/mercurial/recipe.toml diff --git a/recipes/wip/tools/other/mhv/recipe.toml b/recipes/wip/tools/mhv/recipe.toml similarity index 100% rename from recipes/wip/tools/other/mhv/recipe.toml rename to recipes/wip/tools/mhv/recipe.toml diff --git a/recipes/wip/tools/other/miniaudicle/recipe.toml b/recipes/wip/tools/miniaudicle/recipe.toml similarity index 100% rename from recipes/wip/tools/other/miniaudicle/recipe.toml rename to recipes/wip/tools/miniaudicle/recipe.toml diff --git a/recipes/wip/tools/other/minmon/recipe.toml b/recipes/wip/tools/minmon/recipe.toml similarity index 100% rename from recipes/wip/tools/other/minmon/recipe.toml rename to recipes/wip/tools/minmon/recipe.toml diff --git a/recipes/wip/tools/other/mkisofs-rs/recipe.toml b/recipes/wip/tools/mkisofs-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/other/mkisofs-rs/recipe.toml rename to recipes/wip/tools/mkisofs-rs/recipe.toml diff --git a/recipes/wip/tools/other/mosh/recipe.toml b/recipes/wip/tools/mosh/recipe.toml similarity index 100% rename from recipes/wip/tools/other/mosh/recipe.toml rename to recipes/wip/tools/mosh/recipe.toml diff --git a/recipes/wip/tools/other/mprocs/recipe.toml b/recipes/wip/tools/mprocs/recipe.toml similarity index 100% rename from recipes/wip/tools/other/mprocs/recipe.toml rename to recipes/wip/tools/mprocs/recipe.toml diff --git a/recipes/wip/tools/other/navi/recipe.toml b/recipes/wip/tools/navi/recipe.toml similarity index 100% rename from recipes/wip/tools/other/navi/recipe.toml rename to recipes/wip/tools/navi/recipe.toml diff --git a/recipes/wip/tools/other/neofetch/recipe.toml b/recipes/wip/tools/neofetch/recipe.toml similarity index 100% rename from recipes/wip/tools/other/neofetch/recipe.toml rename to recipes/wip/tools/neofetch/recipe.toml diff --git a/recipes/wip/tools/other/neovide/recipe.toml b/recipes/wip/tools/neovide/recipe.toml similarity index 100% rename from recipes/wip/tools/other/neovide/recipe.toml rename to recipes/wip/tools/neovide/recipe.toml diff --git a/recipes/wip/tools/other/neovim/recipe.toml b/recipes/wip/tools/neovim/recipe.toml similarity index 100% rename from recipes/wip/tools/other/neovim/recipe.toml rename to recipes/wip/tools/neovim/recipe.toml diff --git a/recipes/wip/tools/other/news-rs/recipe.toml b/recipes/wip/tools/news-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/other/news-rs/recipe.toml rename to recipes/wip/tools/news-rs/recipe.toml diff --git a/recipes/wip/tools/other/nickel/recipe.toml b/recipes/wip/tools/nickel/recipe.toml similarity index 100% rename from recipes/wip/tools/other/nickel/recipe.toml rename to recipes/wip/tools/nickel/recipe.toml diff --git a/recipes/wip/tools/other/nix/recipe.toml b/recipes/wip/tools/nix/recipe.toml similarity index 100% rename from recipes/wip/tools/other/nix/recipe.toml rename to recipes/wip/tools/nix/recipe.toml diff --git a/recipes/wip/tools/other/nomad/recipe.toml b/recipes/wip/tools/nomad/recipe.toml similarity index 100% rename from recipes/wip/tools/other/nomad/recipe.toml rename to recipes/wip/tools/nomad/recipe.toml diff --git a/recipes/wip/tools/other/notnow/recipe.toml b/recipes/wip/tools/notnow/recipe.toml similarity index 100% rename from recipes/wip/tools/other/notnow/recipe.toml rename to recipes/wip/tools/notnow/recipe.toml diff --git a/recipes/wip/tools/other/objdiff/recipe.toml b/recipes/wip/tools/objdiff/recipe.toml similarity index 100% rename from recipes/wip/tools/other/objdiff/recipe.toml rename to recipes/wip/tools/objdiff/recipe.toml diff --git a/recipes/wip/tools/other/obs-studio/recipe.toml b/recipes/wip/tools/obs-studio/recipe.toml similarity index 100% rename from recipes/wip/tools/other/obs-studio/recipe.toml rename to recipes/wip/tools/obs-studio/recipe.toml diff --git a/recipes/wip/tools/other/odilia/recipe.toml b/recipes/wip/tools/odilia/recipe.toml similarity index 100% rename from recipes/wip/tools/other/odilia/recipe.toml rename to recipes/wip/tools/odilia/recipe.toml diff --git a/recipes/wip/tools/other/okteta/recipe.toml b/recipes/wip/tools/okteta/recipe.toml similarity index 100% rename from recipes/wip/tools/other/okteta/recipe.toml rename to recipes/wip/tools/okteta/recipe.toml diff --git a/recipes/wip/tools/other/omega/recipe.toml b/recipes/wip/tools/omega/recipe.toml similarity index 100% rename from recipes/wip/tools/other/omega/recipe.toml rename to recipes/wip/tools/omega/recipe.toml diff --git a/recipes/wip/tools/other/onefetch/recipe.toml b/recipes/wip/tools/onefetch/recipe.toml similarity index 100% rename from recipes/wip/tools/other/onefetch/recipe.toml rename to recipes/wip/tools/onefetch/recipe.toml diff --git a/recipes/wip/tools/other/oranda/recipe.toml b/recipes/wip/tools/oranda/recipe.toml similarity index 100% rename from recipes/wip/tools/other/oranda/recipe.toml rename to recipes/wip/tools/oranda/recipe.toml diff --git a/recipes/wip/tools/other/orchaldir-texture-generator/recipe.toml b/recipes/wip/tools/orchaldir-texture-generator/recipe.toml similarity index 100% rename from recipes/wip/tools/other/orchaldir-texture-generator/recipe.toml rename to recipes/wip/tools/orchaldir-texture-generator/recipe.toml diff --git a/recipes/wip/tools/other/oxipng/recipe.toml b/recipes/wip/tools/oxipng/recipe.toml similarity index 100% rename from recipes/wip/tools/other/oxipng/recipe.toml rename to recipes/wip/tools/oxipng/recipe.toml diff --git a/recipes/wip/tools/other/parabolic/recipe.toml b/recipes/wip/tools/parabolic/recipe.toml similarity index 100% rename from recipes/wip/tools/other/parabolic/recipe.toml rename to recipes/wip/tools/parabolic/recipe.toml diff --git a/recipes/wip/tools/other/patchelf/recipe.toml b/recipes/wip/tools/patchelf/recipe.toml similarity index 100% rename from recipes/wip/tools/other/patchelf/recipe.toml rename to recipes/wip/tools/patchelf/recipe.toml diff --git a/recipes/wip/tools/other/pciutils/recipe.toml b/recipes/wip/tools/pciutils/recipe.toml similarity index 100% rename from recipes/wip/tools/other/pciutils/recipe.toml rename to recipes/wip/tools/pciutils/recipe.toml diff --git a/recipes/wip/tools/other/pdbview/recipe.toml b/recipes/wip/tools/pdbview/recipe.toml similarity index 100% rename from recipes/wip/tools/other/pdbview/recipe.toml rename to recipes/wip/tools/pdbview/recipe.toml diff --git a/recipes/wip/tools/other/pdu/recipe.toml b/recipes/wip/tools/pdu/recipe.toml similarity index 100% rename from recipes/wip/tools/other/pdu/recipe.toml rename to recipes/wip/tools/pdu/recipe.toml diff --git a/recipes/wip/tools/other/pfetch-rs/recipe.toml b/recipes/wip/tools/pfetch-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/other/pfetch-rs/recipe.toml rename to recipes/wip/tools/pfetch-rs/recipe.toml diff --git a/recipes/wip/tools/other/pidgin/recipe.toml b/recipes/wip/tools/pidgin/recipe.toml similarity index 100% rename from recipes/wip/tools/other/pidgin/recipe.toml rename to recipes/wip/tools/pidgin/recipe.toml diff --git a/recipes/wip/tools/other/pipr/recipe.toml b/recipes/wip/tools/pipr/recipe.toml similarity index 100% rename from recipes/wip/tools/other/pipr/recipe.toml rename to recipes/wip/tools/pipr/recipe.toml diff --git a/recipes/wip/tools/other/pixcil/recipe.toml b/recipes/wip/tools/pixcil/recipe.toml similarity index 100% rename from recipes/wip/tools/other/pixcil/recipe.toml rename to recipes/wip/tools/pixcil/recipe.toml diff --git a/recipes/wip/tools/other/pixelsort/recipe.toml b/recipes/wip/tools/pixelsort/recipe.toml similarity index 100% rename from recipes/wip/tools/other/pixelsort/recipe.toml rename to recipes/wip/tools/pixelsort/recipe.toml diff --git a/recipes/wip/tools/other/please/recipe.toml b/recipes/wip/tools/please/recipe.toml similarity index 100% rename from recipes/wip/tools/other/please/recipe.toml rename to recipes/wip/tools/please/recipe.toml diff --git a/recipes/wip/tools/other/pomky/recipe.toml b/recipes/wip/tools/pomky/recipe.toml similarity index 100% rename from recipes/wip/tools/other/pomky/recipe.toml rename to recipes/wip/tools/pomky/recipe.toml diff --git a/recipes/wip/tools/other/porsmo/recipe.toml b/recipes/wip/tools/porsmo/recipe.toml similarity index 100% rename from recipes/wip/tools/other/porsmo/recipe.toml rename to recipes/wip/tools/porsmo/recipe.toml diff --git a/recipes/wip/tools/other/posixutils-rs/recipe.toml b/recipes/wip/tools/posixutils-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/other/posixutils-rs/recipe.toml rename to recipes/wip/tools/posixutils-rs/recipe.toml diff --git a/recipes/wip/tools/other/potrace/recipe.toml b/recipes/wip/tools/potrace/recipe.toml similarity index 100% rename from recipes/wip/tools/other/potrace/recipe.toml rename to recipes/wip/tools/potrace/recipe.toml diff --git a/recipes/wip/tools/other/presenterm/recipe.toml b/recipes/wip/tools/presenterm/recipe.toml similarity index 100% rename from recipes/wip/tools/other/presenterm/recipe.toml rename to recipes/wip/tools/presenterm/recipe.toml diff --git a/recipes/wip/tools/other/process-viewer/recipe.toml b/recipes/wip/tools/process-viewer/recipe.toml similarity index 100% rename from recipes/wip/tools/other/process-viewer/recipe.toml rename to recipes/wip/tools/process-viewer/recipe.toml diff --git a/recipes/wip/tools/other/procs/recipe.toml b/recipes/wip/tools/procs/recipe.toml similarity index 100% rename from recipes/wip/tools/other/procs/recipe.toml rename to recipes/wip/tools/procs/recipe.toml diff --git a/recipes/wip/tools/other/pueue/recipe.toml b/recipes/wip/tools/pueue/recipe.toml similarity index 100% rename from recipes/wip/tools/other/pueue/recipe.toml rename to recipes/wip/tools/pueue/recipe.toml diff --git a/recipes/wip/tools/other/qalculate-gtk/recipe.toml b/recipes/wip/tools/qalculate-gtk/recipe.toml similarity index 100% rename from recipes/wip/tools/other/qalculate-gtk/recipe.toml rename to recipes/wip/tools/qalculate-gtk/recipe.toml diff --git a/recipes/wip/tools/other/qrrs/recipe.toml b/recipes/wip/tools/qrrs/recipe.toml similarity index 100% rename from recipes/wip/tools/other/qrrs/recipe.toml rename to recipes/wip/tools/qrrs/recipe.toml diff --git a/recipes/wip/tools/other/qrtool/recipe.toml b/recipes/wip/tools/qrtool/recipe.toml similarity index 100% rename from recipes/wip/tools/other/qrtool/recipe.toml rename to recipes/wip/tools/qrtool/recipe.toml diff --git a/recipes/wip/tools/other/qv/recipe.toml b/recipes/wip/tools/qv/recipe.toml similarity index 100% rename from recipes/wip/tools/other/qv/recipe.toml rename to recipes/wip/tools/qv/recipe.toml diff --git a/recipes/wip/tools/other/rage/recipe.toml b/recipes/wip/tools/rage/recipe.toml similarity index 100% rename from recipes/wip/tools/other/rage/recipe.toml rename to recipes/wip/tools/rage/recipe.toml diff --git a/recipes/wip/tools/other/rana/recipe.toml b/recipes/wip/tools/rana/recipe.toml similarity index 100% rename from recipes/wip/tools/other/rana/recipe.toml rename to recipes/wip/tools/rana/recipe.toml diff --git a/recipes/wip/tools/other/rargs/recipe.toml b/recipes/wip/tools/rargs/recipe.toml similarity index 100% rename from recipes/wip/tools/other/rargs/recipe.toml rename to recipes/wip/tools/rargs/recipe.toml diff --git a/recipes/wip/tools/other/rclone/recipe.toml b/recipes/wip/tools/rclone/recipe.toml similarity index 100% rename from recipes/wip/tools/other/rclone/recipe.toml rename to recipes/wip/tools/rclone/recipe.toml diff --git a/recipes/wip/tools/other/remmina/recipe.toml b/recipes/wip/tools/remmina/recipe.toml similarity index 100% rename from recipes/wip/tools/other/remmina/recipe.toml rename to recipes/wip/tools/remmina/recipe.toml diff --git a/recipes/wip/tools/other/repgrep/recipe.toml b/recipes/wip/tools/repgrep/recipe.toml similarity index 100% rename from recipes/wip/tools/other/repgrep/recipe.toml rename to recipes/wip/tools/repgrep/recipe.toml diff --git a/recipes/wip/tools/other/restic/recipe.toml b/recipes/wip/tools/restic/recipe.toml similarity index 100% rename from recipes/wip/tools/other/restic/recipe.toml rename to recipes/wip/tools/restic/recipe.toml diff --git a/recipes/wip/tools/other/rfetch/recipe.toml b/recipes/wip/tools/rfetch/recipe.toml similarity index 100% rename from recipes/wip/tools/other/rfetch/recipe.toml rename to recipes/wip/tools/rfetch/recipe.toml diff --git a/recipes/wip/tools/other/rfz/recipe.toml b/recipes/wip/tools/rfz/recipe.toml similarity index 100% rename from recipes/wip/tools/other/rfz/recipe.toml rename to recipes/wip/tools/rfz/recipe.toml diff --git a/recipes/wip/tools/other/rip/recipe.toml b/recipes/wip/tools/rip/recipe.toml similarity index 100% rename from recipes/wip/tools/other/rip/recipe.toml rename to recipes/wip/tools/rip/recipe.toml diff --git a/recipes/wip/tools/other/ripasso/recipe.toml b/recipes/wip/tools/ripasso/recipe.toml similarity index 100% rename from recipes/wip/tools/other/ripasso/recipe.toml rename to recipes/wip/tools/ripasso/recipe.toml diff --git a/recipes/wip/tools/other/ripgrep-all/recipe.toml b/recipes/wip/tools/ripgrep-all/recipe.toml similarity index 100% rename from recipes/wip/tools/other/ripgrep-all/recipe.toml rename to recipes/wip/tools/ripgrep-all/recipe.toml diff --git a/recipes/wip/tools/other/ripsecrets/recipe.toml b/recipes/wip/tools/ripsecrets/recipe.toml similarity index 100% rename from recipes/wip/tools/other/ripsecrets/recipe.toml rename to recipes/wip/tools/ripsecrets/recipe.toml diff --git a/recipes/wip/tools/other/rix/recipe.toml b/recipes/wip/tools/rix/recipe.toml similarity index 100% rename from recipes/wip/tools/other/rix/recipe.toml rename to recipes/wip/tools/rix/recipe.toml diff --git a/recipes/wip/tools/other/rnr/recipe.toml b/recipes/wip/tools/rnr/recipe.toml similarity index 100% rename from recipes/wip/tools/other/rnr/recipe.toml rename to recipes/wip/tools/rnr/recipe.toml diff --git a/recipes/wip/tools/other/rq/recipe.toml b/recipes/wip/tools/rq/recipe.toml similarity index 100% rename from recipes/wip/tools/other/rq/recipe.toml rename to recipes/wip/tools/rq/recipe.toml diff --git a/recipes/wip/tools/other/rsftch/recipe.toml b/recipes/wip/tools/rsftch/recipe.toml similarity index 100% rename from recipes/wip/tools/other/rsftch/recipe.toml rename to recipes/wip/tools/rsftch/recipe.toml diff --git a/recipes/wip/tools/other/rsync/recipe.toml b/recipes/wip/tools/rsync/recipe.toml similarity index 100% rename from recipes/wip/tools/other/rsync/recipe.toml rename to recipes/wip/tools/rsync/recipe.toml diff --git a/recipes/wip/tools/other/rtorrent/recipe.toml b/recipes/wip/tools/rtorrent/recipe.toml similarity index 100% rename from recipes/wip/tools/other/rtorrent/recipe.toml rename to recipes/wip/tools/rtorrent/recipe.toml diff --git a/recipes/wip/tools/other/ruke/recipe.toml b/recipes/wip/tools/ruke/recipe.toml similarity index 100% rename from recipes/wip/tools/other/ruke/recipe.toml rename to recipes/wip/tools/ruke/recipe.toml diff --git a/recipes/wip/tools/other/run/recipe.toml b/recipes/wip/tools/run/recipe.toml similarity index 100% rename from recipes/wip/tools/other/run/recipe.toml rename to recipes/wip/tools/run/recipe.toml diff --git a/recipes/wip/tools/other/ruplacer/recipe.toml b/recipes/wip/tools/ruplacer/recipe.toml similarity index 100% rename from recipes/wip/tools/other/ruplacer/recipe.toml rename to recipes/wip/tools/ruplacer/recipe.toml diff --git a/recipes/wip/tools/other/rustlings/recipe.toml b/recipes/wip/tools/rustlings/recipe.toml similarity index 100% rename from recipes/wip/tools/other/rustlings/recipe.toml rename to recipes/wip/tools/rustlings/recipe.toml diff --git a/recipes/wip/tools/other/rusty-krab-manager/recipe.toml b/recipes/wip/tools/rusty-krab-manager/recipe.toml similarity index 100% rename from recipes/wip/tools/other/rusty-krab-manager/recipe.toml rename to recipes/wip/tools/rusty-krab-manager/recipe.toml diff --git a/recipes/wip/tools/other/rusty-psn-cli/recipe.toml b/recipes/wip/tools/rusty-psn-cli/recipe.toml similarity index 100% rename from recipes/wip/tools/other/rusty-psn-cli/recipe.toml rename to recipes/wip/tools/rusty-psn-cli/recipe.toml diff --git a/recipes/wip/tools/other/rusty-psn-gui/recipe.toml b/recipes/wip/tools/rusty-psn-gui/recipe.toml similarity index 100% rename from recipes/wip/tools/other/rusty-psn-gui/recipe.toml rename to recipes/wip/tools/rusty-psn-gui/recipe.toml diff --git a/recipes/wip/tools/other/rusty/recipe.toml b/recipes/wip/tools/rusty/recipe.toml similarity index 100% rename from recipes/wip/tools/other/rusty/recipe.toml rename to recipes/wip/tools/rusty/recipe.toml diff --git a/recipes/wip/tools/other/rusync/recipe.toml b/recipes/wip/tools/rusync/recipe.toml similarity index 100% rename from recipes/wip/tools/other/rusync/recipe.toml rename to recipes/wip/tools/rusync/recipe.toml diff --git a/recipes/wip/tools/other/sad/recipe.toml b/recipes/wip/tools/sad/recipe.toml similarity index 100% rename from recipes/wip/tools/other/sad/recipe.toml rename to recipes/wip/tools/sad/recipe.toml diff --git a/recipes/wip/tools/other/sam/recipe.toml b/recipes/wip/tools/sam/recipe.toml similarity index 100% rename from recipes/wip/tools/other/sam/recipe.toml rename to recipes/wip/tools/sam/recipe.toml diff --git a/recipes/wip/tools/other/scribus/recipe.toml b/recipes/wip/tools/scribus/recipe.toml similarity index 100% rename from recipes/wip/tools/other/scribus/recipe.toml rename to recipes/wip/tools/scribus/recipe.toml diff --git a/recipes/wip/tools/other/scrying/recipe.toml b/recipes/wip/tools/scrying/recipe.toml similarity index 100% rename from recipes/wip/tools/other/scrying/recipe.toml rename to recipes/wip/tools/scrying/recipe.toml diff --git a/recipes/wip/tools/other/sd/recipe.toml b/recipes/wip/tools/sd/recipe.toml similarity index 100% rename from recipes/wip/tools/other/sd/recipe.toml rename to recipes/wip/tools/sd/recipe.toml diff --git a/recipes/wip/tools/other/shd/recipe.toml b/recipes/wip/tools/shd/recipe.toml similarity index 100% rename from recipes/wip/tools/other/shd/recipe.toml rename to recipes/wip/tools/shd/recipe.toml diff --git a/recipes/wip/tools/other/shellfirm/recipe.toml b/recipes/wip/tools/shellfirm/recipe.toml similarity index 100% rename from recipes/wip/tools/other/shellfirm/recipe.toml rename to recipes/wip/tools/shellfirm/recipe.toml diff --git a/recipes/wip/tools/other/shokunin/recipe.toml b/recipes/wip/tools/shokunin/recipe.toml similarity index 100% rename from recipes/wip/tools/other/shokunin/recipe.toml rename to recipes/wip/tools/shokunin/recipe.toml diff --git a/recipes/wip/tools/other/sig/recipe.toml b/recipes/wip/tools/sig/recipe.toml similarity index 100% rename from recipes/wip/tools/other/sig/recipe.toml rename to recipes/wip/tools/sig/recipe.toml diff --git a/recipes/wip/tools/other/sigi/recipe.toml b/recipes/wip/tools/sigi/recipe.toml similarity index 100% rename from recipes/wip/tools/other/sigi/recipe.toml rename to recipes/wip/tools/sigi/recipe.toml diff --git a/recipes/wip/tools/other/simplemoji/recipe.toml b/recipes/wip/tools/simplemoji/recipe.toml similarity index 100% rename from recipes/wip/tools/other/simplemoji/recipe.toml rename to recipes/wip/tools/simplemoji/recipe.toml diff --git a/recipes/wip/tools/other/skim/recipe.toml b/recipes/wip/tools/skim/recipe.toml similarity index 100% rename from recipes/wip/tools/other/skim/recipe.toml rename to recipes/wip/tools/skim/recipe.toml diff --git a/recipes/wip/tools/other/skyspell/recipe.toml b/recipes/wip/tools/skyspell/recipe.toml similarity index 100% rename from recipes/wip/tools/other/skyspell/recipe.toml rename to recipes/wip/tools/skyspell/recipe.toml diff --git a/recipes/wip/tools/other/smartmontools/recipe.toml b/recipes/wip/tools/smartmontools/recipe.toml similarity index 100% rename from recipes/wip/tools/other/smartmontools/recipe.toml rename to recipes/wip/tools/smartmontools/recipe.toml diff --git a/recipes/wip/tools/other/snappy-rs/recipe.toml b/recipes/wip/tools/snappy-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/other/snappy-rs/recipe.toml rename to recipes/wip/tools/snappy-rs/recipe.toml diff --git a/recipes/wip/tools/other/spacer/recipe.toml b/recipes/wip/tools/spacer/recipe.toml similarity index 100% rename from recipes/wip/tools/other/spacer/recipe.toml rename to recipes/wip/tools/spacer/recipe.toml diff --git a/recipes/wip/tools/other/spidey/recipe.toml b/recipes/wip/tools/spidey/recipe.toml similarity index 100% rename from recipes/wip/tools/other/spidey/recipe.toml rename to recipes/wip/tools/spidey/recipe.toml diff --git a/recipes/wip/tools/other/sprinkles/recipe.toml b/recipes/wip/tools/sprinkles/recipe.toml similarity index 100% rename from recipes/wip/tools/other/sprinkles/recipe.toml rename to recipes/wip/tools/sprinkles/recipe.toml diff --git a/recipes/wip/tools/other/starship/recipe.toml b/recipes/wip/tools/starship/recipe.toml similarity index 100% rename from recipes/wip/tools/other/starship/recipe.toml rename to recipes/wip/tools/starship/recipe.toml diff --git a/recipes/wip/tools/other/stellarium/recipe.toml b/recipes/wip/tools/stellarium/recipe.toml similarity index 100% rename from recipes/wip/tools/other/stellarium/recipe.toml rename to recipes/wip/tools/stellarium/recipe.toml diff --git a/recipes/wip/tools/other/stress-ng/recipe.toml b/recipes/wip/tools/stress-ng/recipe.toml similarity index 100% rename from recipes/wip/tools/other/stress-ng/recipe.toml rename to recipes/wip/tools/stress-ng/recipe.toml diff --git a/recipes/wip/tools/other/succeed2ban-tui/recipe.toml b/recipes/wip/tools/succeed2ban-tui/recipe.toml similarity index 100% rename from recipes/wip/tools/other/succeed2ban-tui/recipe.toml rename to recipes/wip/tools/succeed2ban-tui/recipe.toml diff --git a/recipes/wip/tools/other/sudo-rs/recipe.toml b/recipes/wip/tools/sudo-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/other/sudo-rs/recipe.toml rename to recipes/wip/tools/sudo-rs/recipe.toml diff --git a/recipes/wip/tools/other/sued/recipe.toml b/recipes/wip/tools/sued/recipe.toml similarity index 100% rename from recipes/wip/tools/other/sued/recipe.toml rename to recipes/wip/tools/sued/recipe.toml diff --git a/recipes/wip/tools/other/svg2pdf/recipe.toml b/recipes/wip/tools/svg2pdf/recipe.toml similarity index 100% rename from recipes/wip/tools/other/svg2pdf/recipe.toml rename to recipes/wip/tools/svg2pdf/recipe.toml diff --git a/recipes/wip/tools/other/swc/recipe.toml b/recipes/wip/tools/swc/recipe.toml similarity index 100% rename from recipes/wip/tools/other/swc/recipe.toml rename to recipes/wip/tools/swc/recipe.toml diff --git a/recipes/wip/tools/other/t-rec/recipe.toml b/recipes/wip/tools/t-rec/recipe.toml similarity index 100% rename from recipes/wip/tools/other/t-rec/recipe.toml rename to recipes/wip/tools/t-rec/recipe.toml diff --git a/recipes/wip/tools/other/tailspin/recipe.toml b/recipes/wip/tools/tailspin/recipe.toml similarity index 100% rename from recipes/wip/tools/other/tailspin/recipe.toml rename to recipes/wip/tools/tailspin/recipe.toml diff --git a/recipes/wip/tools/other/tarlz/recipe.toml b/recipes/wip/tools/tarlz/recipe.toml similarity index 100% rename from recipes/wip/tools/other/tarlz/recipe.toml rename to recipes/wip/tools/tarlz/recipe.toml diff --git a/recipes/wip/tools/other/task-maker-rs/recipe.toml b/recipes/wip/tools/task-maker-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/other/task-maker-rs/recipe.toml rename to recipes/wip/tools/task-maker-rs/recipe.toml diff --git a/recipes/wip/tools/other/taskserver/recipe.toml b/recipes/wip/tools/taskserver/recipe.toml similarity index 100% rename from recipes/wip/tools/other/taskserver/recipe.toml rename to recipes/wip/tools/taskserver/recipe.toml diff --git a/recipes/wip/tools/other/taskwarrior-tui/recipe.toml b/recipes/wip/tools/taskwarrior-tui/recipe.toml similarity index 100% rename from recipes/wip/tools/other/taskwarrior-tui/recipe.toml rename to recipes/wip/tools/taskwarrior-tui/recipe.toml diff --git a/recipes/wip/tools/other/taskwarrior/recipe.toml b/recipes/wip/tools/taskwarrior/recipe.toml similarity index 100% rename from recipes/wip/tools/other/taskwarrior/recipe.toml rename to recipes/wip/tools/taskwarrior/recipe.toml diff --git a/recipes/wip/tools/other/tauro-monitor/recipe.toml b/recipes/wip/tools/tauro-monitor/recipe.toml similarity index 100% rename from recipes/wip/tools/other/tauro-monitor/recipe.toml rename to recipes/wip/tools/tauro-monitor/recipe.toml diff --git a/recipes/wip/tools/other/tealdeer/recipe.toml b/recipes/wip/tools/tealdeer/recipe.toml similarity index 100% rename from recipes/wip/tools/other/tealdeer/recipe.toml rename to recipes/wip/tools/tealdeer/recipe.toml diff --git a/recipes/wip/tools/other/teip/recipe.toml b/recipes/wip/tools/teip/recipe.toml similarity index 100% rename from recipes/wip/tools/other/teip/recipe.toml rename to recipes/wip/tools/teip/recipe.toml diff --git a/recipes/wip/tools/other/termimage/recipe.toml b/recipes/wip/tools/termimage/recipe.toml similarity index 100% rename from recipes/wip/tools/other/termimage/recipe.toml rename to recipes/wip/tools/termimage/recipe.toml diff --git a/recipes/wip/tools/other/thwack/recipe.toml b/recipes/wip/tools/thwack/recipe.toml similarity index 100% rename from recipes/wip/tools/other/thwack/recipe.toml rename to recipes/wip/tools/thwack/recipe.toml diff --git a/recipes/wip/tools/other/tin-summer/recipe.toml b/recipes/wip/tools/tin-summer/recipe.toml similarity index 100% rename from recipes/wip/tools/other/tin-summer/recipe.toml rename to recipes/wip/tools/tin-summer/recipe.toml diff --git a/recipes/wip/tools/other/tinywasm/recipe.toml b/recipes/wip/tools/tinywasm/recipe.toml similarity index 100% rename from recipes/wip/tools/other/tinywasm/recipe.toml rename to recipes/wip/tools/tinywasm/recipe.toml diff --git a/recipes/wip/tools/other/tl-rs/recipe.toml b/recipes/wip/tools/tl-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/other/tl-rs/recipe.toml rename to recipes/wip/tools/tl-rs/recipe.toml diff --git a/recipes/wip/tools/other/tock/recipe.toml b/recipes/wip/tools/tock/recipe.toml similarity index 100% rename from recipes/wip/tools/other/tock/recipe.toml rename to recipes/wip/tools/tock/recipe.toml diff --git a/recipes/wip/tools/other/toipe/recipe.toml b/recipes/wip/tools/toipe/recipe.toml similarity index 100% rename from recipes/wip/tools/other/toipe/recipe.toml rename to recipes/wip/tools/toipe/recipe.toml diff --git a/recipes/wip/tools/other/topgrade/recipe.toml b/recipes/wip/tools/topgrade/recipe.toml similarity index 100% rename from recipes/wip/tools/other/topgrade/recipe.toml rename to recipes/wip/tools/topgrade/recipe.toml diff --git a/recipes/wip/tools/other/torrust-tracker/recipe.toml b/recipes/wip/tools/torrust-tracker/recipe.toml similarity index 100% rename from recipes/wip/tools/other/torrust-tracker/recipe.toml rename to recipes/wip/tools/torrust-tracker/recipe.toml diff --git a/recipes/wip/tools/other/toybox/recipe.toml b/recipes/wip/tools/toybox/recipe.toml similarity index 100% rename from recipes/wip/tools/other/toybox/recipe.toml rename to recipes/wip/tools/toybox/recipe.toml diff --git a/recipes/wip/tools/other/tp-note/recipe.toml b/recipes/wip/tools/tp-note/recipe.toml similarity index 100% rename from recipes/wip/tools/other/tp-note/recipe.toml rename to recipes/wip/tools/tp-note/recipe.toml diff --git a/recipes/wip/tools/other/tq/recipe.toml b/recipes/wip/tools/tq/recipe.toml similarity index 100% rename from recipes/wip/tools/other/tq/recipe.toml rename to recipes/wip/tools/tq/recipe.toml diff --git a/recipes/wip/tools/other/treq/recipe.toml b/recipes/wip/tools/treq/recipe.toml similarity index 100% rename from recipes/wip/tools/other/treq/recipe.toml rename to recipes/wip/tools/treq/recipe.toml diff --git a/recipes/wip/tools/other/tsuchita/recipe.toml b/recipes/wip/tools/tsuchita/recipe.toml similarity index 100% rename from recipes/wip/tools/other/tsuchita/recipe.toml rename to recipes/wip/tools/tsuchita/recipe.toml diff --git a/recipes/wip/tools/other/tts-tui/recipe.toml b/recipes/wip/tools/tts-tui/recipe.toml similarity index 100% rename from recipes/wip/tools/other/tts-tui/recipe.toml rename to recipes/wip/tools/tts-tui/recipe.toml diff --git a/recipes/wip/tools/other/ttyper/recipe.toml b/recipes/wip/tools/ttyper/recipe.toml similarity index 100% rename from recipes/wip/tools/other/ttyper/recipe.toml rename to recipes/wip/tools/ttyper/recipe.toml diff --git a/recipes/wip/tools/other/tui-journal/recipe.toml b/recipes/wip/tools/tui-journal/recipe.toml similarity index 100% rename from recipes/wip/tools/other/tui-journal/recipe.toml rename to recipes/wip/tools/tui-journal/recipe.toml diff --git a/recipes/wip/tools/other/tvix/recipe.toml b/recipes/wip/tools/tvix/recipe.toml similarity index 100% rename from recipes/wip/tools/other/tvix/recipe.toml rename to recipes/wip/tools/tvix/recipe.toml diff --git a/recipes/wip/tools/other/typst/recipe.toml b/recipes/wip/tools/typst/recipe.toml similarity index 100% rename from recipes/wip/tools/other/typst/recipe.toml rename to recipes/wip/tools/typst/recipe.toml diff --git a/recipes/wip/tools/other/uget/recipe.toml b/recipes/wip/tools/uget/recipe.toml similarity index 100% rename from recipes/wip/tools/other/uget/recipe.toml rename to recipes/wip/tools/uget/recipe.toml diff --git a/recipes/wip/tools/other/upscaler/recipe.toml b/recipes/wip/tools/upscaler/recipe.toml similarity index 100% rename from recipes/wip/tools/other/upscaler/recipe.toml rename to recipes/wip/tools/upscaler/recipe.toml diff --git a/recipes/wip/tools/other/upx/recipe.toml b/recipes/wip/tools/upx/recipe.toml similarity index 100% rename from recipes/wip/tools/other/upx/recipe.toml rename to recipes/wip/tools/upx/recipe.toml diff --git a/recipes/wip/tools/other/usbutils/recipe.toml b/recipes/wip/tools/usbutils/recipe.toml similarity index 100% rename from recipes/wip/tools/other/usbutils/recipe.toml rename to recipes/wip/tools/usbutils/recipe.toml diff --git a/recipes/wip/tools/other/util-linux/recipe.toml b/recipes/wip/tools/util-linux/recipe.toml similarity index 100% rename from recipes/wip/tools/other/util-linux/recipe.toml rename to recipes/wip/tools/util-linux/recipe.toml diff --git a/recipes/wip/tools/other/vector/recipe.toml b/recipes/wip/tools/vector/recipe.toml similarity index 100% rename from recipes/wip/tools/other/vector/recipe.toml rename to recipes/wip/tools/vector/recipe.toml diff --git a/recipes/wip/tools/other/ventoy/recipe.toml b/recipes/wip/tools/ventoy/recipe.toml similarity index 100% rename from recipes/wip/tools/other/ventoy/recipe.toml rename to recipes/wip/tools/ventoy/recipe.toml diff --git a/recipes/wip/tools/other/vincenzo/recipe.toml b/recipes/wip/tools/vincenzo/recipe.toml similarity index 100% rename from recipes/wip/tools/other/vincenzo/recipe.toml rename to recipes/wip/tools/vincenzo/recipe.toml diff --git a/recipes/wip/tools/other/vlc/recipe.toml b/recipes/wip/tools/vlc/recipe.toml similarity index 100% rename from recipes/wip/tools/other/vlc/recipe.toml rename to recipes/wip/tools/vlc/recipe.toml diff --git a/recipes/wip/tools/other/vulkan-tools/recipe.toml b/recipes/wip/tools/vulkan-tools/recipe.toml similarity index 100% rename from recipes/wip/tools/other/vulkan-tools/recipe.toml rename to recipes/wip/tools/vulkan-tools/recipe.toml diff --git a/recipes/wip/tools/other/watchexec/recipe.toml b/recipes/wip/tools/watchexec/recipe.toml similarity index 100% rename from recipes/wip/tools/other/watchexec/recipe.toml rename to recipes/wip/tools/watchexec/recipe.toml diff --git a/recipes/wip/tools/other/watchmen/recipe.toml b/recipes/wip/tools/watchmen/recipe.toml similarity index 100% rename from recipes/wip/tools/other/watchmen/recipe.toml rename to recipes/wip/tools/watchmen/recipe.toml diff --git a/recipes/wip/tools/other/wayback-rs/recipe.toml b/recipes/wip/tools/wayback-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/other/wayback-rs/recipe.toml rename to recipes/wip/tools/wayback-rs/recipe.toml diff --git a/recipes/wip/tools/other/wayshot/recipe.toml b/recipes/wip/tools/wayshot/recipe.toml similarity index 100% rename from recipes/wip/tools/other/wayshot/recipe.toml rename to recipes/wip/tools/wayshot/recipe.toml diff --git a/recipes/wip/tools/other/wethr/recipe.toml b/recipes/wip/tools/wethr/recipe.toml similarity index 100% rename from recipes/wip/tools/other/wethr/recipe.toml rename to recipes/wip/tools/wethr/recipe.toml diff --git a/recipes/wip/tools/other/weylus/recipe.toml b/recipes/wip/tools/weylus/recipe.toml similarity index 100% rename from recipes/wip/tools/other/weylus/recipe.toml rename to recipes/wip/tools/weylus/recipe.toml diff --git a/recipes/wip/tools/other/wick/recipe.toml b/recipes/wip/tools/wick/recipe.toml similarity index 100% rename from recipes/wip/tools/other/wick/recipe.toml rename to recipes/wip/tools/wick/recipe.toml diff --git a/recipes/wip/tools/other/wpaperd/recipe.toml b/recipes/wip/tools/wpaperd/recipe.toml similarity index 100% rename from recipes/wip/tools/other/wpaperd/recipe.toml rename to recipes/wip/tools/wpaperd/recipe.toml diff --git a/recipes/wip/tools/other/xcp/recipe.toml b/recipes/wip/tools/xcp/recipe.toml similarity index 100% rename from recipes/wip/tools/other/xcp/recipe.toml rename to recipes/wip/tools/xcp/recipe.toml diff --git a/recipes/wip/tools/other/xdg-utils/recipe.toml b/recipes/wip/tools/xdg-utils/recipe.toml similarity index 100% rename from recipes/wip/tools/other/xdg-utils/recipe.toml rename to recipes/wip/tools/xdg-utils/recipe.toml diff --git a/recipes/wip/tools/other/xdotool/recipe.toml b/recipes/wip/tools/xdotool/recipe.toml similarity index 100% rename from recipes/wip/tools/other/xdotool/recipe.toml rename to recipes/wip/tools/xdotool/recipe.toml diff --git a/recipes/wip/tools/other/xdvdfs/recipe.toml b/recipes/wip/tools/xdvdfs/recipe.toml similarity index 100% rename from recipes/wip/tools/other/xdvdfs/recipe.toml rename to recipes/wip/tools/xdvdfs/recipe.toml diff --git a/recipes/wip/tools/other/xh/recipe.toml b/recipes/wip/tools/xh/recipe.toml similarity index 100% rename from recipes/wip/tools/other/xh/recipe.toml rename to recipes/wip/tools/xh/recipe.toml diff --git a/recipes/wip/tools/other/xiu/recipe.toml b/recipes/wip/tools/xiu/recipe.toml similarity index 100% rename from recipes/wip/tools/other/xiu/recipe.toml rename to recipes/wip/tools/xiu/recipe.toml diff --git a/recipes/wip/tools/other/xorriso/recipe.toml b/recipes/wip/tools/xorriso/recipe.toml similarity index 100% rename from recipes/wip/tools/other/xorriso/recipe.toml rename to recipes/wip/tools/xorriso/recipe.toml diff --git a/recipes/wip/tools/other/xsv/recipe.toml b/recipes/wip/tools/xsv/recipe.toml similarity index 100% rename from recipes/wip/tools/other/xsv/recipe.toml rename to recipes/wip/tools/xsv/recipe.toml diff --git a/recipes/wip/tools/other/zeitfetch/recipe.toml b/recipes/wip/tools/zeitfetch/recipe.toml similarity index 100% rename from recipes/wip/tools/other/zeitfetch/recipe.toml rename to recipes/wip/tools/zeitfetch/recipe.toml diff --git a/recipes/wip/tools/other/zet/recipe.toml b/recipes/wip/tools/zet/recipe.toml similarity index 100% rename from recipes/wip/tools/other/zet/recipe.toml rename to recipes/wip/tools/zet/recipe.toml From ce2cd0e040aefff241bc372fdb17b586e154b1d8 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 9 Jul 2024 00:25:09 +0000 Subject: [PATCH 1987/3180] Add a recipe --- recipes/wip/net/other/quincy/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/wip/net/other/quincy/recipe.toml diff --git a/recipes/wip/net/other/quincy/recipe.toml b/recipes/wip/net/other/quincy/recipe.toml new file mode 100644 index 00000000..8edd7127 --- /dev/null +++ b/recipes/wip/net/other/quincy/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/M0dEx/quincy" +[build] +template = "cargo" From f5858b11027ca1345466694e6efa0106bb1c7899 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 9 Jul 2024 01:28:06 +0000 Subject: [PATCH 1988/3180] Move recipes --- recipes/wip/dev/{other => }/debug/gdb/recipe.toml | 0 recipes/wip/dev/{other => }/debug/rr-debugger/recipe.toml | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/dev/{other => }/debug/gdb/recipe.toml (100%) rename recipes/wip/dev/{other => }/debug/rr-debugger/recipe.toml (100%) diff --git a/recipes/wip/dev/other/debug/gdb/recipe.toml b/recipes/wip/dev/debug/gdb/recipe.toml similarity index 100% rename from recipes/wip/dev/other/debug/gdb/recipe.toml rename to recipes/wip/dev/debug/gdb/recipe.toml diff --git a/recipes/wip/dev/other/debug/rr-debugger/recipe.toml b/recipes/wip/dev/debug/rr-debugger/recipe.toml similarity index 100% rename from recipes/wip/dev/other/debug/rr-debugger/recipe.toml rename to recipes/wip/dev/debug/rr-debugger/recipe.toml From b4f0df8b35d0b10071d4ac1daadeaff3d38848bd Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 9 Jul 2024 01:29:14 +0000 Subject: [PATCH 1989/3180] Update the gdb version --- recipes/wip/dev/debug/gdb/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/dev/debug/gdb/recipe.toml b/recipes/wip/dev/debug/gdb/recipe.toml index 1f1c2da2..9f84f29c 100644 --- a/recipes/wip/dev/debug/gdb/recipe.toml +++ b/recipes/wip/dev/debug/gdb/recipe.toml @@ -1,6 +1,6 @@ #TODO compiled but not tested [source] -tar = "https://ftp.gnu.org/gnu/gdb/gdb-14.1.tar.xz" +tar = "https://ftp.gnu.org/gnu/gdb/gdb-15.1.tar.xz" [build] template = "custom" dependencies = [ From 126b602a657606a8a78dbd51a3f57ae42804cc23 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 9 Jul 2024 07:40:14 +0000 Subject: [PATCH 1990/3180] Rename a recipe --- recipes/wip/net/other/{boringtun => altuntun}/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/net/other/{boringtun => altuntun}/recipe.toml (100%) diff --git a/recipes/wip/net/other/boringtun/recipe.toml b/recipes/wip/net/other/altuntun/recipe.toml similarity index 100% rename from recipes/wip/net/other/boringtun/recipe.toml rename to recipes/wip/net/other/altuntun/recipe.toml From f7f988b0d38cd7b05cdec1ca85a3432aebb58701 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 9 Jul 2024 07:41:08 +0000 Subject: [PATCH 1991/3180] Update a recipe --- recipes/wip/net/other/altuntun/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/wip/net/other/altuntun/recipe.toml b/recipes/wip/net/other/altuntun/recipe.toml index 2f4e2531..429f50be 100644 --- a/recipes/wip/net/other/altuntun/recipe.toml +++ b/recipes/wip/net/other/altuntun/recipe.toml @@ -1,8 +1,8 @@ #TODO source code error [source] -git = "https://github.com/cloudflare/boringtun" +git = "https://github.com/cableguard/altuntun" [build] template = "custom" script = """ -cookbook_cargo_packages boringtun-cli +cookbook_cargo_packages altuntun-cli """ From ad097a507fa9d448b820effcf2abbe5ef3ceae2b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 9 Jul 2024 07:43:39 +0000 Subject: [PATCH 1992/3180] Update the gdb TODO --- recipes/wip/dev/debug/gdb/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/dev/debug/gdb/recipe.toml b/recipes/wip/dev/debug/gdb/recipe.toml index 9f84f29c..c96c2b07 100644 --- a/recipes/wip/dev/debug/gdb/recipe.toml +++ b/recipes/wip/dev/debug/gdb/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO port to redox [source] tar = "https://ftp.gnu.org/gnu/gdb/gdb-15.1.tar.xz" [build] From 0898a59319176e4b33d6f5c192c8c2feccb221b5 Mon Sep 17 00:00:00 2001 From: Bendeguz Pisch Date: Tue, 9 Jul 2024 12:53:29 +0000 Subject: [PATCH 1993/3180] Fix apache-httpd and apr recipes to build properly and to use epoll by default in apr. --- recipes/wip/dev/other/apr/recipe.toml | 1 + recipes/wip/net/server/apache-httpd/recipe.toml | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/wip/dev/other/apr/recipe.toml b/recipes/wip/dev/other/apr/recipe.toml index 1f53150a..9991bfa6 100644 --- a/recipes/wip/dev/other/apr/recipe.toml +++ b/recipes/wip/dev/other/apr/recipe.toml @@ -10,6 +10,7 @@ ac_cv_working_getaddrinfo=no apr_cv_process_shared_works=yes apr_cv_mutex_robust_shared=yes apr_cv_tcp_nodelay_with_cork=no +apr_cv_epoll=yes ) cookbook_configure """ diff --git a/recipes/wip/net/server/apache-httpd/recipe.toml b/recipes/wip/net/server/apache-httpd/recipe.toml index f792ff85..b882a489 100644 --- a/recipes/wip/net/server/apache-httpd/recipe.toml +++ b/recipes/wip/net/server/apache-httpd/recipe.toml @@ -1,6 +1,6 @@ -#apache-httpd +#TODO compiles but requires setgroups syscall at startup [source] -tar="https://dlcdn.apache.org/httpd/httpd-2.4.58.tar.bz2" +tar="https://dlcdn.apache.org/httpd/httpd-2.4.61.tar.bz2" patches = [ "redox.patch", ] From 1e7efe3e4dd48c144f03f08c57be9aefe3fee5e1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 10 Jul 2024 09:25:30 +0000 Subject: [PATCH 1994/3180] Add a recipe --- recipes/wip/terminal/chatd/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/wip/terminal/chatd/recipe.toml diff --git a/recipes/wip/terminal/chatd/recipe.toml b/recipes/wip/terminal/chatd/recipe.toml new file mode 100644 index 00000000..1a9bd5a5 --- /dev/null +++ b/recipes/wip/terminal/chatd/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/unrenamed/chatd" +[build] +template = "cargo" From 4a2109c2c77008bcad2e2a9c4292e2a611193e4e Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 6 Jul 2024 21:01:57 +0200 Subject: [PATCH 1995/3180] Use a single source dir for the drivers and drivers-initfs recipes This makes it easier to make driver changes. And in the future other recipes could potentially benefit from the same infrastructure too. --- recipes/core/drivers-initfs/recipe.toml | 2 +- src/bin/cook.rs | 19 +++++++++++++++++++ src/recipe.rs | 8 ++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/recipes/core/drivers-initfs/recipe.toml b/recipes/core/drivers-initfs/recipe.toml index 8baa45ab..bf4fd64e 100644 --- a/recipes/core/drivers-initfs/recipe.toml +++ b/recipes/core/drivers-initfs/recipe.toml @@ -1,5 +1,5 @@ [source] -git = "https://gitlab.redox-os.org/redox-os/drivers.git" +same_as = "../drivers" [build] template = "custom" diff --git a/src/bin/cook.rs b/src/bin/cook.rs index d271117a..0908b465 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -162,6 +162,25 @@ fn run_command_stdin(mut command: process::Command, stdin_data: &[u8]) -> Result fn fetch(recipe_dir: &Path, source: &Option) -> Result { let source_dir = recipe_dir.join("source"); match source { + Some(SourceRecipe::SameAs { same_as }) => { + if ! source_dir.is_symlink() { + if source_dir.is_dir() { + return Err(format!( + "'{dir}' is a directory, but recipe indicated a symlink. \n\ + try removing '{dir}' if you haven't made any changes that would be lost", + dir=source_dir.display(), + )); + } + let original = Path::new(same_as).join("source"); + std::os::unix::fs::symlink(&original, &source_dir).map_err(|err| format!( + "failed to symlink '{}' to '{}': {}\n{:?}", + original.display(), + source_dir.display(), + err, + err + ))?; + } + } Some(SourceRecipe::Git { git, upstream, branch, rev }) => { //TODO: use libgit? if ! source_dir.is_dir() { diff --git a/src/recipe.rs b/src/recipe.rs index ca74754f..e69742a8 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -4,6 +4,14 @@ use serde::{Deserialize, Serialize}; #[derive(Debug, Deserialize, PartialEq, Serialize)] #[serde(untagged)] pub enum SourceRecipe { + /// Reuse the source directory of another package + /// + /// This is useful when a single source repo contains multiple projects which each have their + /// own recipe to build them. + SameAs { + /// Relative path to the package for which to reuse the source dir + same_as: String, + }, /// A git repository source Git { /// The URL for the git repository, such as https://gitlab.redox-os.org/redox-os/ion.git From 78512b258c6f11f0ef6e1f78105446133053a907 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 11 Jul 2024 06:14:08 +0000 Subject: [PATCH 1996/3180] Add recipes --- recipes/wip/dev/other/mold/recipe.toml | 27 +++++++++++++++++++++++++ recipes/wip/net/sharing/qft/recipe.toml | 5 +++++ recipes/wip/text/zed/recipe.toml | 20 ++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 recipes/wip/dev/other/mold/recipe.toml create mode 100644 recipes/wip/net/sharing/qft/recipe.toml create mode 100644 recipes/wip/text/zed/recipe.toml diff --git a/recipes/wip/dev/other/mold/recipe.toml b/recipes/wip/dev/other/mold/recipe.toml new file mode 100644 index 00000000..e61f76c5 --- /dev/null +++ b/recipes/wip/dev/other/mold/recipe.toml @@ -0,0 +1,27 @@ +#TODO not compiled or tested +#TODO maybe incomplete script +# build instructions - https://github.com/rui314/mold#how-to-build +[source] +git = "https://github.com/rui314/mold" +rev = "cf1c02d097fc57113b7f9fabf1bc15f810b8b27c" +[build] +template = "custom" +dependencies = [ + "library1", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On + -DCMAKE_CXX_COMPILER=c++ +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/net/sharing/qft/recipe.toml b/recipes/wip/net/sharing/qft/recipe.toml new file mode 100644 index 00000000..6aeb4bab --- /dev/null +++ b/recipes/wip/net/sharing/qft/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/CramBL/quick-file-transfer" +[build] +template = "cargo" diff --git a/recipes/wip/text/zed/recipe.toml b/recipes/wip/text/zed/recipe.toml new file mode 100644 index 00000000..eb2f2340 --- /dev/null +++ b/recipes/wip/text/zed/recipe.toml @@ -0,0 +1,20 @@ +#TODO not compiled or tested +#TODO maybe missing dependencies, see https://github.com/zed-industries/zed/blob/main/script/linux#L15 +# build instructions - https://zed.dev/docs/development/linux +[source] +git = "https://github.com/zed-industries/zed" +[build] +template = "custom" +dependencies = [ + "fontconfig", + "libxkbcommon", + "openssl1", + "zstd", + "libgit2", + "sqlite3", +] +script = """ +cookbook_cargo_packages cli zed +mv "${COOKBOOK_STAGE}/usr/bin/cli" "${COOKBOOK_STAGE}/usr/bin/zed-cli" +mv "${COOKBOOK_STAGE}/usr/bin/zed" "${COOKBOOK_STAGE}/usr/bin/zed-editor" +""" From 6ef9d3a265b493fa2b8fada43168c20ed1d8736d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 11 Jul 2024 08:18:23 +0000 Subject: [PATCH 1997/3180] Update glew recipe TODO --- recipes/wip/libs/other/glew/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/libs/other/glew/recipe.toml b/recipes/wip/libs/other/glew/recipe.toml index e78040e7..a4aa66eb 100644 --- a/recipes/wip/libs/other/glew/recipe.toml +++ b/recipes/wip/libs/other/glew/recipe.toml @@ -1,5 +1,5 @@ #TODO missing script for "make", see https://github.com/nigels-com/glew#linux-and-mac -#TODO port to Orbital +#TODO Mesa EGL is supported, verify if X11 is still required [source] git = "https://github.com/nigels-com/glew" rev = "9fb23c3e61cbd2d581e33ff7d8579b572b38ee26" From 01e0a81808a81b87900cb2a77c17cfb3cd5c7466 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 12 Jul 2024 07:41:36 +0000 Subject: [PATCH 1998/3180] Add a recipe --- recipes/wip/monitors/htop/recipe.toml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 recipes/wip/monitors/htop/recipe.toml diff --git a/recipes/wip/monitors/htop/recipe.toml b/recipes/wip/monitors/htop/recipe.toml new file mode 100644 index 00000000..f5f90ae2 --- /dev/null +++ b/recipes/wip/monitors/htop/recipe.toml @@ -0,0 +1,13 @@ +#TODO port to redox +# build instructions - https://github.com/htop-dev/htop#build-instructions +[source] +tar = "https://github.com/htop-dev/htop/releases/download/3.3.0/htop-3.3.0.tar.xz" +[build] +template = "custom" +dependencies = [ + "ncurses", +] +script = """ +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" +cookbook_configure +""" From 8aacde2c4940c39970e9f8cc3fba578239ce5dc4 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 12 Jul 2024 07:43:19 +0000 Subject: [PATCH 1999/3180] Move recipes --- recipes/wip/{tools => monitors}/bottom/recipe.toml | 0 recipes/wip/{security => monitors}/sniffnet/recipe.toml | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{tools => monitors}/bottom/recipe.toml (100%) rename recipes/wip/{security => monitors}/sniffnet/recipe.toml (100%) diff --git a/recipes/wip/tools/bottom/recipe.toml b/recipes/wip/monitors/bottom/recipe.toml similarity index 100% rename from recipes/wip/tools/bottom/recipe.toml rename to recipes/wip/monitors/bottom/recipe.toml diff --git a/recipes/wip/security/sniffnet/recipe.toml b/recipes/wip/monitors/sniffnet/recipe.toml similarity index 100% rename from recipes/wip/security/sniffnet/recipe.toml rename to recipes/wip/monitors/sniffnet/recipe.toml From d4facdec3783f518d7808f7e644e20acacf2eba0 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 12 Jul 2024 07:51:24 +0000 Subject: [PATCH 2000/3180] Update a recipe --- recipes/wip/monitors/htop/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/wip/monitors/htop/recipe.toml b/recipes/wip/monitors/htop/recipe.toml index f5f90ae2..d6a30af3 100644 --- a/recipes/wip/monitors/htop/recipe.toml +++ b/recipes/wip/monitors/htop/recipe.toml @@ -9,5 +9,8 @@ dependencies = [ ] script = """ export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" +COOKBOOK_CONFIGURE_FLAGS+=( + --disable-unicode +) cookbook_configure """ From c8d2b7acade6c9cd1842f05fbe4fb019f57d476e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 12 Jul 2024 07:52:58 +0000 Subject: [PATCH 2001/3180] Add a TODO --- recipes/wip/monitors/htop/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/monitors/htop/recipe.toml b/recipes/wip/monitors/htop/recipe.toml index d6a30af3..cabcc829 100644 --- a/recipes/wip/monitors/htop/recipe.toml +++ b/recipes/wip/monitors/htop/recipe.toml @@ -1,4 +1,5 @@ #TODO port to redox +#TODO make ncursesw work # build instructions - https://github.com/htop-dev/htop#build-instructions [source] tar = "https://github.com/htop-dev/htop/releases/download/3.3.0/htop-3.3.0.tar.xz" From 614958cce048fdad26d1222b4889b0f34151386f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 12 Jul 2024 07:55:42 +0000 Subject: [PATCH 2002/3180] Add a TODO --- recipes/wip/monitors/htop/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/monitors/htop/recipe.toml b/recipes/wip/monitors/htop/recipe.toml index cabcc829..6116bcbc 100644 --- a/recipes/wip/monitors/htop/recipe.toml +++ b/recipes/wip/monitors/htop/recipe.toml @@ -1,3 +1,4 @@ +#TODO compilation error #TODO port to redox #TODO make ncursesw work # build instructions - https://github.com/htop-dev/htop#build-instructions From 882948a601dd36c731e783a3b52f0110e20d622b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 12 Jul 2024 13:56:58 +0000 Subject: [PATCH 2003/3180] Add recipes --- recipes/wip/dev/analysis/rust-ontologist/recipe.toml | 5 +++++ recipes/wip/games/math/cosmic-2048/recipe.toml | 5 +++++ recipes/wip/text/serpl/recipe.toml | 5 +++++ 3 files changed, 15 insertions(+) create mode 100644 recipes/wip/dev/analysis/rust-ontologist/recipe.toml create mode 100644 recipes/wip/games/math/cosmic-2048/recipe.toml create mode 100644 recipes/wip/text/serpl/recipe.toml diff --git a/recipes/wip/dev/analysis/rust-ontologist/recipe.toml b/recipes/wip/dev/analysis/rust-ontologist/recipe.toml new file mode 100644 index 00000000..c2c8c86c --- /dev/null +++ b/recipes/wip/dev/analysis/rust-ontologist/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/lava-xyz/rust-ontologist" +[build] +template = "cargo" diff --git a/recipes/wip/games/math/cosmic-2048/recipe.toml b/recipes/wip/games/math/cosmic-2048/recipe.toml new file mode 100644 index 00000000..e3b83481 --- /dev/null +++ b/recipes/wip/games/math/cosmic-2048/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Kartonrealista/cosmic-ext-2048" +[build] +template = "cargo" diff --git a/recipes/wip/text/serpl/recipe.toml b/recipes/wip/text/serpl/recipe.toml new file mode 100644 index 00000000..d524e866 --- /dev/null +++ b/recipes/wip/text/serpl/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/yassinebridi/serpl" +[build] +template = "cargo" From 0750ac5889949939632900da0905c328e43ecec2 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 12 Jul 2024 13:59:07 +0000 Subject: [PATCH 2004/3180] Move recipes --- recipes/wip/dev/{framework => managers}/moon/recipe.toml | 0 recipes/wip/dev/{framework => managers}/proto/recipe.toml | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/dev/{framework => managers}/moon/recipe.toml (100%) rename recipes/wip/dev/{framework => managers}/proto/recipe.toml (100%) diff --git a/recipes/wip/dev/framework/moon/recipe.toml b/recipes/wip/dev/managers/moon/recipe.toml similarity index 100% rename from recipes/wip/dev/framework/moon/recipe.toml rename to recipes/wip/dev/managers/moon/recipe.toml diff --git a/recipes/wip/dev/framework/proto/recipe.toml b/recipes/wip/dev/managers/proto/recipe.toml similarity index 100% rename from recipes/wip/dev/framework/proto/recipe.toml rename to recipes/wip/dev/managers/proto/recipe.toml From d0e955ad0fb2a889707a0a61b21a21df2c22b135 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 12 Jul 2024 16:07:05 +0000 Subject: [PATCH 2005/3180] Add recipes --- recipes/wip/demos/avian/recipe.toml | 8 ++++++++ recipes/wip/demos/chess-engine/recipe.toml | 9 +++++++++ recipes/wip/demos/fyrox/recipe.toml | 8 ++++++++ recipes/wip/demos/ggez/recipe.toml | 8 ++++++++ recipes/wip/demos/kira/recipe.toml | 8 ++++++++ recipes/wip/demos/macroquad/recipe.toml | 8 ++++++++ recipes/wip/demos/piston/recipe.toml | 8 ++++++++ 7 files changed, 57 insertions(+) create mode 100644 recipes/wip/demos/avian/recipe.toml create mode 100644 recipes/wip/demos/chess-engine/recipe.toml create mode 100644 recipes/wip/demos/fyrox/recipe.toml create mode 100644 recipes/wip/demos/ggez/recipe.toml create mode 100644 recipes/wip/demos/kira/recipe.toml create mode 100644 recipes/wip/demos/macroquad/recipe.toml create mode 100644 recipes/wip/demos/piston/recipe.toml diff --git a/recipes/wip/demos/avian/recipe.toml b/recipes/wip/demos/avian/recipe.toml new file mode 100644 index 00000000..763ce94c --- /dev/null +++ b/recipes/wip/demos/avian/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Jondolf/avian" +[build] +template = "custom" +script = """ +cookbook_cargo_examples chain_2d many_shapes ray_caster chain_3d cubes +""" diff --git a/recipes/wip/demos/chess-engine/recipe.toml b/recipes/wip/demos/chess-engine/recipe.toml new file mode 100644 index 00000000..1724e767 --- /dev/null +++ b/recipes/wip/demos/chess-engine/recipe.toml @@ -0,0 +1,9 @@ +#TODO maybe wrong script +[source] +git = "https://github.com/adam-mcdaniel/chess-engine" +[build] +template = "custom" +script = """ +cookbook_cargo_packages chess-gui +cookbook_cargo_examples terminal +""" diff --git a/recipes/wip/demos/fyrox/recipe.toml b/recipes/wip/demos/fyrox/recipe.toml new file mode 100644 index 00000000..228dca16 --- /dev/null +++ b/recipes/wip/demos/fyrox/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/FyroxEngine/Fyrox" +[build] +template = "custom" +script = """ +cookbook_cargo_examples 2d +""" diff --git a/recipes/wip/demos/ggez/recipe.toml b/recipes/wip/demos/ggez/recipe.toml new file mode 100644 index 00000000..a55d0919 --- /dev/null +++ b/recipes/wip/demos/ggez/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ggez/ggez" +[build] +template = "custom" +script = """ +cookbook_cargo_examples 02_hello_world 04_snake cube hello_canvas input_test shader shadows sounds text vertex_shader +""" diff --git a/recipes/wip/demos/kira/recipe.toml b/recipes/wip/demos/kira/recipe.toml new file mode 100644 index 00000000..377c94d5 --- /dev/null +++ b/recipes/wip/demos/kira/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/tesselode/kira-examples" +[build] +template = "custom" +script = """ +cookbook_cargo_packages dynamic-music ghost-noise metronome score-counter spatial-audio simple-sound-playback +""" diff --git a/recipes/wip/demos/macroquad/recipe.toml b/recipes/wip/demos/macroquad/recipe.toml new file mode 100644 index 00000000..5c30eb81 --- /dev/null +++ b/recipes/wip/demos/macroquad/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/not-fl3/macroquad" +[build] +template = "custom" +script = """ +cookbook_cargo_examples 3d basic_shapes camera chess ferris first_person particles_example platformer shadertoy snake text ui +""" diff --git a/recipes/wip/demos/piston/recipe.toml b/recipes/wip/demos/piston/recipe.toml new file mode 100644 index 00000000..f470907d --- /dev/null +++ b/recipes/wip/demos/piston/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/pistondevelopers/piston-examples" +[build] +template = "custom" +script = """ +cookbook_cargo_examples cube hello_world image multi_window shapes snake sprite +""" From f98ed685db7720a2b2e292960eba31f7cabb6d73 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 12 Jul 2024 16:08:01 +0000 Subject: [PATCH 2006/3180] Rename recipes --- recipes/wip/demos/{bevy-engine => bevy}/recipe.toml | 0 recipes/wip/demos/{notan-examples => notan}/recipe.toml | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/demos/{bevy-engine => bevy}/recipe.toml (100%) rename recipes/wip/demos/{notan-examples => notan}/recipe.toml (100%) diff --git a/recipes/wip/demos/bevy-engine/recipe.toml b/recipes/wip/demos/bevy/recipe.toml similarity index 100% rename from recipes/wip/demos/bevy-engine/recipe.toml rename to recipes/wip/demos/bevy/recipe.toml diff --git a/recipes/wip/demos/notan-examples/recipe.toml b/recipes/wip/demos/notan/recipe.toml similarity index 100% rename from recipes/wip/demos/notan-examples/recipe.toml rename to recipes/wip/demos/notan/recipe.toml From f708f56a2a0dac4e6f063902d4262c1e4cbc733c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 12 Jul 2024 16:08:50 +0000 Subject: [PATCH 2007/3180] Move a recipe --- recipes/wip/{demos => games/strategy}/chess-engine/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{demos => games/strategy}/chess-engine/recipe.toml (100%) diff --git a/recipes/wip/demos/chess-engine/recipe.toml b/recipes/wip/games/strategy/chess-engine/recipe.toml similarity index 100% rename from recipes/wip/demos/chess-engine/recipe.toml rename to recipes/wip/games/strategy/chess-engine/recipe.toml From 7a5d846f05005c55b181bc0882552bd83f852bc8 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 12 Jul 2024 16:29:51 +0000 Subject: [PATCH 2008/3180] Add recipes --- recipes/wip/games/simulation/formicarium/recipe.toml | 5 +++++ recipes/wip/games/simulation/game-of-life-piston/recipe.toml | 5 +++++ recipes/wip/games/strategy/cell-graph-risk/recipe.toml | 5 +++++ recipes/wip/games/strategy/rust-sudoku/recipe.toml | 5 +++++ recipes/wip/games/strategy/tetris-demo/recipe.toml | 5 +++++ 5 files changed, 25 insertions(+) create mode 100644 recipes/wip/games/simulation/formicarium/recipe.toml create mode 100644 recipes/wip/games/simulation/game-of-life-piston/recipe.toml create mode 100644 recipes/wip/games/strategy/cell-graph-risk/recipe.toml create mode 100644 recipes/wip/games/strategy/rust-sudoku/recipe.toml create mode 100644 recipes/wip/games/strategy/tetris-demo/recipe.toml diff --git a/recipes/wip/games/simulation/formicarium/recipe.toml b/recipes/wip/games/simulation/formicarium/recipe.toml new file mode 100644 index 00000000..50bf13ea --- /dev/null +++ b/recipes/wip/games/simulation/formicarium/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/gliderkite/formicarium" +[build] +template = "cargo" diff --git a/recipes/wip/games/simulation/game-of-life-piston/recipe.toml b/recipes/wip/games/simulation/game-of-life-piston/recipe.toml new file mode 100644 index 00000000..cc7e131a --- /dev/null +++ b/recipes/wip/games/simulation/game-of-life-piston/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Arcterus/game-of-life" +[build] +template = "cargo" diff --git a/recipes/wip/games/strategy/cell-graph-risk/recipe.toml b/recipes/wip/games/strategy/cell-graph-risk/recipe.toml new file mode 100644 index 00000000..66ab0106 --- /dev/null +++ b/recipes/wip/games/strategy/cell-graph-risk/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/PSteinhaus/Cell-Graph-Risk" +[build] +template = "cargo" diff --git a/recipes/wip/games/strategy/rust-sudoku/recipe.toml b/recipes/wip/games/strategy/rust-sudoku/recipe.toml new file mode 100644 index 00000000..b122c2f0 --- /dev/null +++ b/recipes/wip/games/strategy/rust-sudoku/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/xairy/rust-sudoku" +[build] +template = "cargo" diff --git a/recipes/wip/games/strategy/tetris-demo/recipe.toml b/recipes/wip/games/strategy/tetris-demo/recipe.toml new file mode 100644 index 00000000..c786dc7a --- /dev/null +++ b/recipes/wip/games/strategy/tetris-demo/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/da-x/tetris-demo" +[build] +template = "cargo" From 47155802c2d13e76cce28709de28032d387a906b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 12 Jul 2024 18:15:53 +0000 Subject: [PATCH 2009/3180] Add recipes --- recipes/wip/data-integrity/fim/recipe.toml | 5 +++++ recipes/wip/demos/bones/recipe.toml | 8 ++++++++ recipes/wip/demos/comfy/recipe.toml | 8 ++++++++ recipes/wip/demos/rend3/recipe.toml | 8 ++++++++ recipes/wip/games/fps/room4doom/recipe.toml | 12 ++++++++++++ recipes/wip/games/fps/rust-doom/recipe.toml | 9 +++++++++ recipes/wip/games/simulation/egregoria/recipe.toml | 8 ++++++++ recipes/wip/games/simulation/sandbox-rs/recipe.toml | 5 +++++ recipes/wip/games/strategy/castle-game/recipe.toml | 5 +++++ recipes/wip/monitors/hearth/recipe.toml | 5 +++++ recipes/wip/monitors/serial-monitor-rs/recipe.toml | 9 +++++++++ 11 files changed, 82 insertions(+) create mode 100644 recipes/wip/data-integrity/fim/recipe.toml create mode 100644 recipes/wip/demos/bones/recipe.toml create mode 100644 recipes/wip/demos/comfy/recipe.toml create mode 100644 recipes/wip/demos/rend3/recipe.toml create mode 100644 recipes/wip/games/fps/room4doom/recipe.toml create mode 100644 recipes/wip/games/fps/rust-doom/recipe.toml create mode 100644 recipes/wip/games/simulation/egregoria/recipe.toml create mode 100644 recipes/wip/games/simulation/sandbox-rs/recipe.toml create mode 100644 recipes/wip/games/strategy/castle-game/recipe.toml create mode 100644 recipes/wip/monitors/hearth/recipe.toml create mode 100644 recipes/wip/monitors/serial-monitor-rs/recipe.toml diff --git a/recipes/wip/data-integrity/fim/recipe.toml b/recipes/wip/data-integrity/fim/recipe.toml new file mode 100644 index 00000000..1dfa7b07 --- /dev/null +++ b/recipes/wip/data-integrity/fim/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Achiefs/fim" +[build] +template = "cargo" diff --git a/recipes/wip/demos/bones/recipe.toml b/recipes/wip/demos/bones/recipe.toml new file mode 100644 index 00000000..e6968803 --- /dev/null +++ b/recipes/wip/demos/bones/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/fishfolk/bones" +[build] +template = "custom" +script = """ +cookbook_cargo_packages demo_hello_world +""" diff --git a/recipes/wip/demos/comfy/recipe.toml b/recipes/wip/demos/comfy/recipe.toml new file mode 100644 index 00000000..c343f4f3 --- /dev/null +++ b/recipes/wip/demos/comfy/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/darthdeus/comfy" +[build] +template = "custom" +script = """ +cookbook_cargo_examples animated_shapes animated_sprites animated_text bloom circle colors egui fragment-shader lighting music physics shapes single_particle sprite text +""" diff --git a/recipes/wip/demos/rend3/recipe.toml b/recipes/wip/demos/rend3/recipe.toml new file mode 100644 index 00000000..2db5258a --- /dev/null +++ b/recipes/wip/demos/rend3/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/BVE-Reborn/rend3" +[build] +template = "custom" +script = """ +cookbook_cargo_packages rend3-examples-package +""" diff --git a/recipes/wip/games/fps/room4doom/recipe.toml b/recipes/wip/games/fps/room4doom/recipe.toml new file mode 100644 index 00000000..f609f399 --- /dev/null +++ b/recipes/wip/games/fps/room4doom/recipe.toml @@ -0,0 +1,12 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/flukejones/room4doom" +[build] +template = "custom" +dependencies = [ + "sdl2", + "sdl2-mixer +] +script = """ +cookbook_cargo_packages room4doom +""" diff --git a/recipes/wip/games/fps/rust-doom/recipe.toml b/recipes/wip/games/fps/rust-doom/recipe.toml new file mode 100644 index 00000000..d2bc246a --- /dev/null +++ b/recipes/wip/games/fps/rust-doom/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/cristicbz/rust-doom" +[build] +template = "custom" +script = """ +cookbook_cargo +mv "${COOKBOOK_STAGE}/usr/bin/rs_doom" "${COOKBOOK_STAGE}/usr/bin/doom-rs" +""" diff --git a/recipes/wip/games/simulation/egregoria/recipe.toml b/recipes/wip/games/simulation/egregoria/recipe.toml new file mode 100644 index 00000000..beeac656 --- /dev/null +++ b/recipes/wip/games/simulation/egregoria/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Uriopass/Egregoria" +[build] +template = "custom" +script = """ +cookbook_cargo_packages native_app +""" diff --git a/recipes/wip/games/simulation/sandbox-rs/recipe.toml b/recipes/wip/games/simulation/sandbox-rs/recipe.toml new file mode 100644 index 00000000..5109d8d5 --- /dev/null +++ b/recipes/wip/games/simulation/sandbox-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/JMS55/sandbox" +[build] +template = "cargo" diff --git a/recipes/wip/games/strategy/castle-game/recipe.toml b/recipes/wip/games/strategy/castle-game/recipe.toml new file mode 100644 index 00000000..6016ee65 --- /dev/null +++ b/recipes/wip/games/strategy/castle-game/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/tversteeg/castle-game" +[build] +template = "cargo" diff --git a/recipes/wip/monitors/hearth/recipe.toml b/recipes/wip/monitors/hearth/recipe.toml new file mode 100644 index 00000000..4277789b --- /dev/null +++ b/recipes/wip/monitors/hearth/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/aheart/hearth" +[build] +template = "cargo" diff --git a/recipes/wip/monitors/serial-monitor-rs/recipe.toml b/recipes/wip/monitors/serial-monitor-rs/recipe.toml new file mode 100644 index 00000000..cd551c74 --- /dev/null +++ b/recipes/wip/monitors/serial-monitor-rs/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/hacknus/serial-monitor-rust" +[build] +template = "cargo" +dependencies = [ + "libxkbcommon", + "openssl1", +] From d2bc65d7f69e79130030b756b37a5a335f9a6165 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 13 Jul 2024 10:08:51 +0000 Subject: [PATCH 2010/3180] Add recipes --- recipes/wip/graphics/other/naga/recipe.toml | 8 ++++++++ recipes/wip/monitors/fluere/recipe.toml | 5 +++++ recipes/wip/monitors/latencymon/recipe.toml | 5 +++++ recipes/wip/monitors/mountstatus/recipe.toml | 5 +++++ recipes/wip/monitors/rtop/recipe.toml | 5 +++++ recipes/wip/monitors/sentrum/recipe.toml | 5 +++++ recipes/wip/monitors/somo/recipe.toml | 5 +++++ 7 files changed, 38 insertions(+) create mode 100644 recipes/wip/graphics/other/naga/recipe.toml create mode 100644 recipes/wip/monitors/fluere/recipe.toml create mode 100644 recipes/wip/monitors/latencymon/recipe.toml create mode 100644 recipes/wip/monitors/mountstatus/recipe.toml create mode 100644 recipes/wip/monitors/rtop/recipe.toml create mode 100644 recipes/wip/monitors/sentrum/recipe.toml create mode 100644 recipes/wip/monitors/somo/recipe.toml diff --git a/recipes/wip/graphics/other/naga/recipe.toml b/recipes/wip/graphics/other/naga/recipe.toml new file mode 100644 index 00000000..48eb557b --- /dev/null +++ b/recipes/wip/graphics/other/naga/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/gfx-rs/wgpu" +[build] +template = "custom" +script = """ +cookbook_cargo_packages naga-cli +""" diff --git a/recipes/wip/monitors/fluere/recipe.toml b/recipes/wip/monitors/fluere/recipe.toml new file mode 100644 index 00000000..d135d132 --- /dev/null +++ b/recipes/wip/monitors/fluere/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/SkuldNorniern/fluere" +[build] +template = "cargo" diff --git a/recipes/wip/monitors/latencymon/recipe.toml b/recipes/wip/monitors/latencymon/recipe.toml new file mode 100644 index 00000000..15e37d5e --- /dev/null +++ b/recipes/wip/monitors/latencymon/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/alttch/latencymon" +[build] +template = "cargo" diff --git a/recipes/wip/monitors/mountstatus/recipe.toml b/recipes/wip/monitors/mountstatus/recipe.toml new file mode 100644 index 00000000..e7429ab0 --- /dev/null +++ b/recipes/wip/monitors/mountstatus/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/acdha/mountstatus" +[build] +template = "cargo" diff --git a/recipes/wip/monitors/rtop/recipe.toml b/recipes/wip/monitors/rtop/recipe.toml new file mode 100644 index 00000000..fa6f7cfa --- /dev/null +++ b/recipes/wip/monitors/rtop/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/narendasan/rtop" +[build] +template = "cargo" diff --git a/recipes/wip/monitors/sentrum/recipe.toml b/recipes/wip/monitors/sentrum/recipe.toml new file mode 100644 index 00000000..3548fe6e --- /dev/null +++ b/recipes/wip/monitors/sentrum/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/sommerfelddev/sentrum" +[build] +template = "cargo" diff --git a/recipes/wip/monitors/somo/recipe.toml b/recipes/wip/monitors/somo/recipe.toml new file mode 100644 index 00000000..51bb05c6 --- /dev/null +++ b/recipes/wip/monitors/somo/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/theopfr/somo" +[build] +template = "cargo" From 715ccde87289863ad4d4b9f9ca2c84da422b9bfe Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 13 Jul 2024 11:58:45 +0000 Subject: [PATCH 2011/3180] Add recipes --- recipes/wip/demos/albedo/recipe.toml | 8 ++++++++ recipes/wip/demos/kiss3d/recipe.toml | 8 ++++++++ recipes/wip/demos/lyon/recipe.toml | 8 ++++++++ recipes/wip/demos/rui/recipe.toml | 8 ++++++++ recipes/wip/demos/terra/recipe.toml | 9 +++++++++ recipes/wip/demos/three-d/recipe.toml | 8 ++++++++ recipes/wip/demos/vizia/recipe.toml | 8 ++++++++ recipes/wip/demos/wgpu-sky-rendering/recipe.toml | 5 +++++ recipes/wip/games/simulation/nbodysim/recipe.toml | 10 ++++++++++ recipes/wip/graphics/editors/rx/recipe.toml | 5 +++++ 10 files changed, 77 insertions(+) create mode 100644 recipes/wip/demos/albedo/recipe.toml create mode 100644 recipes/wip/demos/kiss3d/recipe.toml create mode 100644 recipes/wip/demos/lyon/recipe.toml create mode 100644 recipes/wip/demos/rui/recipe.toml create mode 100644 recipes/wip/demos/terra/recipe.toml create mode 100644 recipes/wip/demos/three-d/recipe.toml create mode 100644 recipes/wip/demos/vizia/recipe.toml create mode 100644 recipes/wip/demos/wgpu-sky-rendering/recipe.toml create mode 100644 recipes/wip/games/simulation/nbodysim/recipe.toml create mode 100644 recipes/wip/graphics/editors/rx/recipe.toml diff --git a/recipes/wip/demos/albedo/recipe.toml b/recipes/wip/demos/albedo/recipe.toml new file mode 100644 index 00000000..365d915d --- /dev/null +++ b/recipes/wip/demos/albedo/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/albedo-engine/albedo" +[build] +template = "custom" +script = """ +cookbook_cargo_examples gpu_picking +""" diff --git a/recipes/wip/demos/kiss3d/recipe.toml b/recipes/wip/demos/kiss3d/recipe.toml new file mode 100644 index 00000000..ce7afd98 --- /dev/null +++ b/recipes/wip/demos/kiss3d/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/sebcrozet/kiss3d" +[build] +template = "custom" +script = """ +cookbook_cargo_examples camera cube lines multi_windows planar_lines points post_processing primitives primitives2d procedural rectangle screenshot stereo text texturing ui window +""" diff --git a/recipes/wip/demos/lyon/recipe.toml b/recipes/wip/demos/lyon/recipe.toml new file mode 100644 index 00000000..0d21e6d4 --- /dev/null +++ b/recipes/wip/demos/lyon/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/nical/lyon" +[build] +template = "custom" +script = """ +cookbook_cargo_examples wgpu-example +""" diff --git a/recipes/wip/demos/rui/recipe.toml b/recipes/wip/demos/rui/recipe.toml new file mode 100644 index 00000000..1dd4e193 --- /dev/null +++ b/recipes/wip/demos/rui/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/audulus/rui" +[build] +template = "custom" +script = """ +cookbook_cargo_examples action background basic calc canvas counter counter2 font_size gallery list menu shapes slider text_editor toggle +""" diff --git a/recipes/wip/demos/terra/recipe.toml b/recipes/wip/demos/terra/recipe.toml new file mode 100644 index 00000000..098123fe --- /dev/null +++ b/recipes/wip/demos/terra/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/fintelia/terra" +[build] +template = "cargo" +dependencies = [ + "openssl1", + "mesa", +] diff --git a/recipes/wip/demos/three-d/recipe.toml b/recipes/wip/demos/three-d/recipe.toml new file mode 100644 index 00000000..b232ae74 --- /dev/null +++ b/recipes/wip/demos/three-d/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/asny/three-d" +[build] +template = "custom" +script = """ +cookbook_cargo_examples animation environment fireworks fog forest image instanced_shapes lighting lights logo mandelbrot multiwindow pbr shapes shapes2d sprites statues terrain texture triangle +""" diff --git a/recipes/wip/demos/vizia/recipe.toml b/recipes/wip/demos/vizia/recipe.toml new file mode 100644 index 00000000..555c6a8f --- /dev/null +++ b/recipes/wip/demos/vizia/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/vizia/vizia" +[build] +template = "custom" +script = """ +cookbook_cargo_examples animation dragdrop number input timers +""" diff --git a/recipes/wip/demos/wgpu-sky-rendering/recipe.toml b/recipes/wip/demos/wgpu-sky-rendering/recipe.toml new file mode 100644 index 00000000..1e1c6c92 --- /dev/null +++ b/recipes/wip/demos/wgpu-sky-rendering/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/bmatthieu3/wgpu-sky-rendering" +[build] +template = "cargo" diff --git a/recipes/wip/games/simulation/nbodysim/recipe.toml b/recipes/wip/games/simulation/nbodysim/recipe.toml new file mode 100644 index 00000000..154732eb --- /dev/null +++ b/recipes/wip/games/simulation/nbodysim/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/timokoesters/nbodysim" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/nbodysim +cp -rv "${COOKBOOK_SOURCE}"/examples/* "${COOKBOOK_STAGE}"/usr/share/nbodysim +cookbook_cargo +""" diff --git a/recipes/wip/graphics/editors/rx/recipe.toml b/recipes/wip/graphics/editors/rx/recipe.toml new file mode 100644 index 00000000..ad719de4 --- /dev/null +++ b/recipes/wip/graphics/editors/rx/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/cloudhead/rx" +[build] +template = "cargo" From 422b62c4a95ec3956f6326b0deede7f78d27a2ea Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 13 Jul 2024 12:57:55 +0000 Subject: [PATCH 2012/3180] Add recipes --- recipes/wip/demos/blade/recipe.toml | 8 ++++++++ recipes/wip/demos/blue-engine/recipe.toml | 8 ++++++++ recipes/wip/demos/euc/recipe.toml | 8 ++++++++ recipes/wip/demos/rpt/recipe.toml | 8 ++++++++ recipes/wip/demos/speedy2d/recipe.toml | 8 ++++++++ recipes/wip/demos/xilem/recipe.toml | 8 ++++++++ recipes/wip/graphics/terminal/sloth/recipe.toml | 5 +++++ 7 files changed, 53 insertions(+) create mode 100644 recipes/wip/demos/blade/recipe.toml create mode 100644 recipes/wip/demos/blue-engine/recipe.toml create mode 100644 recipes/wip/demos/euc/recipe.toml create mode 100644 recipes/wip/demos/rpt/recipe.toml create mode 100644 recipes/wip/demos/speedy2d/recipe.toml create mode 100644 recipes/wip/demos/xilem/recipe.toml create mode 100644 recipes/wip/graphics/terminal/sloth/recipe.toml diff --git a/recipes/wip/demos/blade/recipe.toml b/recipes/wip/demos/blade/recipe.toml new file mode 100644 index 00000000..578d06fc --- /dev/null +++ b/recipes/wip/demos/blade/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/kvark/blade" +[build] +template = "custom" +script = """ +cookbook_cargo_examples bunnymark particle ray-query scene +""" diff --git a/recipes/wip/demos/blue-engine/recipe.toml b/recipes/wip/demos/blue-engine/recipe.toml new file mode 100644 index 00000000..f112e880 --- /dev/null +++ b/recipes/wip/demos/blue-engine/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/AryanpurTech/BlueEngine" +[build] +template = "custom" +script = """ +cookbook_cargo_examples triangle square cube rotate_around wireframe +""" diff --git a/recipes/wip/demos/euc/recipe.toml b/recipes/wip/demos/euc/recipe.toml new file mode 100644 index 00000000..b664ace3 --- /dev/null +++ b/recipes/wip/demos/euc/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/zesterer/euc" +[build] +template = "custom" +script = """ +cookbook_cargo_examples spinning_cube teapot texture_mapping triangle wireframes +""" diff --git a/recipes/wip/demos/rpt/recipe.toml b/recipes/wip/demos/rpt/recipe.toml new file mode 100644 index 00000000..d17db672 --- /dev/null +++ b/recipes/wip/demos/rpt/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ekzhang/rpt" +[build] +template = "custom" +script = """ +cookbook_cargo_examples basic cylinder fractal_spheres fractal_teapots glass marbles metal rustacean sphere spheres teapot +""" diff --git a/recipes/wip/demos/speedy2d/recipe.toml b/recipes/wip/demos/speedy2d/recipe.toml new file mode 100644 index 00000000..6ca563a6 --- /dev/null +++ b/recipes/wip/demos/speedy2d/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/QuantumBadger/Speedy2D" +[build] +template = "custom" +script = """ +cookbook_cargo_examples animation hello_world moving_text +""" diff --git a/recipes/wip/demos/xilem/recipe.toml b/recipes/wip/demos/xilem/recipe.toml new file mode 100644 index 00000000..a78f265e --- /dev/null +++ b/recipes/wip/demos/xilem/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/linebender/xilem" +[build] +template = "custom" +script = """ +cookbook_cargo_examples components +""" diff --git a/recipes/wip/graphics/terminal/sloth/recipe.toml b/recipes/wip/graphics/terminal/sloth/recipe.toml new file mode 100644 index 00000000..18307b26 --- /dev/null +++ b/recipes/wip/graphics/terminal/sloth/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ecumene/rust-sloth" +[build] +template = "cargo" From 3762a7a3f7753c93de786ca19a62e2af2db23975 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 13 Jul 2024 16:07:56 +0000 Subject: [PATCH 2013/3180] Add recipes --- recipes/wip/demos/funutd/recipe.toml | 8 ++++++++ recipes/wip/demos/hotline/recipe.toml | 8 ++++++++ recipes/wip/demos/ruscii/recipe.toml | 8 ++++++++ recipes/wip/science/chem-creator/recipe.toml | 5 +++++ 4 files changed, 29 insertions(+) create mode 100644 recipes/wip/demos/funutd/recipe.toml create mode 100644 recipes/wip/demos/hotline/recipe.toml create mode 100644 recipes/wip/demos/ruscii/recipe.toml create mode 100644 recipes/wip/science/chem-creator/recipe.toml diff --git a/recipes/wip/demos/funutd/recipe.toml b/recipes/wip/demos/funutd/recipe.toml new file mode 100644 index 00000000..83f79416 --- /dev/null +++ b/recipes/wip/demos/funutd/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/SamiPerttu/funutd" +[build] +template = "custom" +script = """ +cookbook_cargo_examples editor +""" diff --git a/recipes/wip/demos/hotline/recipe.toml b/recipes/wip/demos/hotline/recipe.toml new file mode 100644 index 00000000..801d977a --- /dev/null +++ b/recipes/wip/demos/hotline/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/polymonster/hotline" +[build] +template = "custom" +script = """ +cookbook_cargo_examples triangle +""" diff --git a/recipes/wip/demos/ruscii/recipe.toml b/recipes/wip/demos/ruscii/recipe.toml new file mode 100644 index 00000000..273b884b --- /dev/null +++ b/recipes/wip/demos/ruscii/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/lemunozm/ruscii" +[build] +template = "custom" +script = """ +cookbook_cargo_examples pong space_invaders +""" diff --git a/recipes/wip/science/chem-creator/recipe.toml b/recipes/wip/science/chem-creator/recipe.toml new file mode 100644 index 00000000..cb5cfba3 --- /dev/null +++ b/recipes/wip/science/chem-creator/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/pumken/chemcreator" +[build] +template = "cargo" From 6050f9ddbd9b660724636c6a687ac45da7192d7e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 13 Jul 2024 16:10:17 +0000 Subject: [PATCH 2014/3180] Move a recipe --- recipes/wip/{graphics/other => dev/graphics}/pilka/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{graphics/other => dev/graphics}/pilka/recipe.toml (100%) diff --git a/recipes/wip/graphics/other/pilka/recipe.toml b/recipes/wip/dev/graphics/pilka/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/pilka/recipe.toml rename to recipes/wip/dev/graphics/pilka/recipe.toml From a38b5749d745eb04b0fa1414e03abca778e7caa1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 13 Jul 2024 17:19:40 +0000 Subject: [PATCH 2015/3180] Add recipes --- .../wip/demos/contrast-renderer/recipe.toml | 8 +++++++ recipes/wip/demos/fonterator/recipe.toml | 8 +++++++ recipes/wip/demos/pix-engine/recipe.toml | 15 ++++++++++++ recipes/wip/demos/renderling/recipe.toml | 8 +++++++ recipes/wip/demos/rsille/recipe.toml | 8 +++++++ .../wip/dev/graphics/bonzomatic/recipe.toml | 24 +++++++++++++++++++ recipes/wip/games/space/rust-belt/recipe.toml | 9 +++++++ .../graphics/converters/inkdrop/recipe.toml | 8 +++++++ .../graphics/shaders/shadertoy-rs/recipe.toml | 5 ++++ .../terminal/3d-terminal-renderer/recipe.toml | 5 ++++ 10 files changed, 98 insertions(+) create mode 100644 recipes/wip/demos/contrast-renderer/recipe.toml create mode 100644 recipes/wip/demos/fonterator/recipe.toml create mode 100644 recipes/wip/demos/pix-engine/recipe.toml create mode 100644 recipes/wip/demos/renderling/recipe.toml create mode 100644 recipes/wip/demos/rsille/recipe.toml create mode 100644 recipes/wip/dev/graphics/bonzomatic/recipe.toml create mode 100644 recipes/wip/games/space/rust-belt/recipe.toml create mode 100644 recipes/wip/graphics/converters/inkdrop/recipe.toml create mode 100644 recipes/wip/graphics/shaders/shadertoy-rs/recipe.toml create mode 100644 recipes/wip/graphics/terminal/3d-terminal-renderer/recipe.toml diff --git a/recipes/wip/demos/contrast-renderer/recipe.toml b/recipes/wip/demos/contrast-renderer/recipe.toml new file mode 100644 index 00000000..b6158437 --- /dev/null +++ b/recipes/wip/demos/contrast-renderer/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Lichtso/contrast_renderer" +[build] +template = "custom" +script = """ +cookbook_cargo_examples showcase +""" diff --git a/recipes/wip/demos/fonterator/recipe.toml b/recipes/wip/demos/fonterator/recipe.toml new file mode 100644 index 00000000..93d3ec71 --- /dev/null +++ b/recipes/wip/demos/fonterator/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ardaku/fonterator" +[build] +template = "custom" +script = """ +cookbook_cargo_examples main directions image raster +""" diff --git a/recipes/wip/demos/pix-engine/recipe.toml b/recipes/wip/demos/pix-engine/recipe.toml new file mode 100644 index 00000000..48111894 --- /dev/null +++ b/recipes/wip/demos/pix-engine/recipe.toml @@ -0,0 +1,15 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/lukexor/pix-engine" +[build] +template = "custom" +dependencies = [ + "sdl2", + "sdl2-image", + "sdl2-mixer", + "sdl2-ttf", + "sdl-gfx", +] +script = """ +cookbook_cargo_examples maze 2d_raycasting 3d_raycasting asteroids colors fluid_simulation gui hello_world image light matrix shapes textures tree windows +""" diff --git a/recipes/wip/demos/renderling/recipe.toml b/recipes/wip/demos/renderling/recipe.toml new file mode 100644 index 00000000..e1dd7f86 --- /dev/null +++ b/recipes/wip/demos/renderling/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/schell/renderling" +[build] +template = "custom" +script = """ +cookbook_cargo_packages example +""" diff --git a/recipes/wip/demos/rsille/recipe.toml b/recipes/wip/demos/rsille/recipe.toml new file mode 100644 index 00000000..bed9f8eb --- /dev/null +++ b/recipes/wip/demos/rsille/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/nidhoggfgg/rsille" +[build] +template = "custom" +script = """ +cookbook_cargo_examples anime-mix obj-mix cube cube-colorful imgille +""" diff --git a/recipes/wip/dev/graphics/bonzomatic/recipe.toml b/recipes/wip/dev/graphics/bonzomatic/recipe.toml new file mode 100644 index 00000000..1af4e27a --- /dev/null +++ b/recipes/wip/dev/graphics/bonzomatic/recipe.toml @@ -0,0 +1,24 @@ +#TODO port to orbital +# build instructions - https://github.com/Gargaj/Bonzomatic#linux +[source] +git = "https://github.com/Gargaj/Bonzomatic" +[build] +template = "custom" +dependencies = [ + "mesa", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/games/space/rust-belt/recipe.toml b/recipes/wip/games/space/rust-belt/recipe.toml new file mode 100644 index 00000000..37a10b5b --- /dev/null +++ b/recipes/wip/games/space/rust-belt/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/johnthagen/rust-belt" +[build] +template = "cargo" +dependencies = [ + "sdl2", + "sdl2-mixer", +] diff --git a/recipes/wip/graphics/converters/inkdrop/recipe.toml b/recipes/wip/graphics/converters/inkdrop/recipe.toml new file mode 100644 index 00000000..c215f771 --- /dev/null +++ b/recipes/wip/graphics/converters/inkdrop/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/matze/inkdrop" +[build] +template = "custom" +script = """ +cookbook_cargo_packages inkdrop-cli gcode-converter +""" diff --git a/recipes/wip/graphics/shaders/shadertoy-rs/recipe.toml b/recipes/wip/graphics/shaders/shadertoy-rs/recipe.toml new file mode 100644 index 00000000..e13d31b2 --- /dev/null +++ b/recipes/wip/graphics/shaders/shadertoy-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/fmenozzi/shadertoy-rs" +[build] +template = "cargo" diff --git a/recipes/wip/graphics/terminal/3d-terminal-renderer/recipe.toml b/recipes/wip/graphics/terminal/3d-terminal-renderer/recipe.toml new file mode 100644 index 00000000..d576e43d --- /dev/null +++ b/recipes/wip/graphics/terminal/3d-terminal-renderer/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ryanweideman/3d-terminal-renderer" +[build] +template = "cargo" From 5c73c578744222f98efb05ba80fe7d2b2c551b3b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 13 Jul 2024 17:42:17 +0000 Subject: [PATCH 2016/3180] Add recipes --- recipes/wip/demos/rootvg/recipe.toml | 8 ++++++++ recipes/wip/emulators/cpu/6502-emulator/recipe.toml | 5 +++++ recipes/wip/graphics/terminal/blockpaint/recipe.toml | 5 +++++ recipes/wip/graphics/terminal/img2text/recipe.toml | 5 +++++ 4 files changed, 23 insertions(+) create mode 100644 recipes/wip/demos/rootvg/recipe.toml create mode 100644 recipes/wip/emulators/cpu/6502-emulator/recipe.toml create mode 100644 recipes/wip/graphics/terminal/blockpaint/recipe.toml create mode 100644 recipes/wip/graphics/terminal/img2text/recipe.toml diff --git a/recipes/wip/demos/rootvg/recipe.toml b/recipes/wip/demos/rootvg/recipe.toml new file mode 100644 index 00000000..3f7e51e9 --- /dev/null +++ b/recipes/wip/demos/rootvg/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/MeadowlarkDAW/rootvg" +[build] +template = "custom" +script = """ +cookbook_cargo_examples demo +""" diff --git a/recipes/wip/emulators/cpu/6502-emulator/recipe.toml b/recipes/wip/emulators/cpu/6502-emulator/recipe.toml new file mode 100644 index 00000000..4b2976b0 --- /dev/null +++ b/recipes/wip/emulators/cpu/6502-emulator/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ArchUsr64/6502_emulator" +[build] +template = "cargo" diff --git a/recipes/wip/graphics/terminal/blockpaint/recipe.toml b/recipes/wip/graphics/terminal/blockpaint/recipe.toml new file mode 100644 index 00000000..7cbe76e5 --- /dev/null +++ b/recipes/wip/graphics/terminal/blockpaint/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/wooster0/blockpaint" +[build] +template = "cargo" diff --git a/recipes/wip/graphics/terminal/img2text/recipe.toml b/recipes/wip/graphics/terminal/img2text/recipe.toml new file mode 100644 index 00000000..3680706d --- /dev/null +++ b/recipes/wip/graphics/terminal/img2text/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/yvt/img2text" +[build] +template = "cargo" From b1b41a2b4410023a1f89e51ba66dcf69f2f1909e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 13 Jul 2024 18:05:16 +0000 Subject: [PATCH 2017/3180] Add a recipe --- recipes/wip/demos/pingora/recipe.toml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 recipes/wip/demos/pingora/recipe.toml diff --git a/recipes/wip/demos/pingora/recipe.toml b/recipes/wip/demos/pingora/recipe.toml new file mode 100644 index 00000000..2abba0d4 --- /dev/null +++ b/recipes/wip/demos/pingora/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/cloudflare/pingora" +[build] +template = "custom" +script = """ +cookbook_cargo_examples server client +""" From 5a67bd3260dfbf3ca9f0054c2236d107206289f4 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 14 Jul 2024 07:52:02 +0000 Subject: [PATCH 2018/3180] Add recipes --- recipes/wip/crypto/data2sound/recipe.toml | 5 +++++ recipes/wip/science/sonde/recipe.toml | 8 ++++++++ 2 files changed, 13 insertions(+) create mode 100644 recipes/wip/crypto/data2sound/recipe.toml create mode 100644 recipes/wip/science/sonde/recipe.toml diff --git a/recipes/wip/crypto/data2sound/recipe.toml b/recipes/wip/crypto/data2sound/recipe.toml new file mode 100644 index 00000000..5095b0a2 --- /dev/null +++ b/recipes/wip/crypto/data2sound/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/TheAwiteb/data2sound" +[build] +template = "cargo" diff --git a/recipes/wip/science/sonde/recipe.toml b/recipes/wip/science/sonde/recipe.toml new file mode 100644 index 00000000..3b7d298d --- /dev/null +++ b/recipes/wip/science/sonde/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/rnleach/sonde" +[build] +template = "cargo" +dependencies = [ + "gtk4", +] From c24d00242a45d72958c82ddf4652a25025b2c6ea Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 14 Jul 2024 07:53:02 +0000 Subject: [PATCH 2019/3180] Rename a recipe --- recipes/wip/tools/{glicol-cli => glicol}/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/tools/{glicol-cli => glicol}/recipe.toml (100%) diff --git a/recipes/wip/tools/glicol-cli/recipe.toml b/recipes/wip/tools/glicol/recipe.toml similarity index 100% rename from recipes/wip/tools/glicol-cli/recipe.toml rename to recipes/wip/tools/glicol/recipe.toml From a82738c90ed8b972ebc32e03fa9a7b238bb2038b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 14 Jul 2024 07:53:31 +0000 Subject: [PATCH 2020/3180] Move a recipe --- recipes/wip/{tools => sound}/glicol/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{tools => sound}/glicol/recipe.toml (100%) diff --git a/recipes/wip/tools/glicol/recipe.toml b/recipes/wip/sound/glicol/recipe.toml similarity index 100% rename from recipes/wip/tools/glicol/recipe.toml rename to recipes/wip/sound/glicol/recipe.toml From 0ab49f8dc561c0998d8e8b47cbf21393b1f207c0 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 14 Jul 2024 08:05:01 +0000 Subject: [PATCH 2021/3180] Improve a recipe --- recipes/wip/sound/glicol/recipe.toml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/recipes/wip/sound/glicol/recipe.toml b/recipes/wip/sound/glicol/recipe.toml index e0ef61c9..e034e74a 100644 --- a/recipes/wip/sound/glicol/recipe.toml +++ b/recipes/wip/sound/glicol/recipe.toml @@ -2,4 +2,9 @@ [source] git = "https://github.com/glicol/glicol-cli" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/glicol +cp -rv "${COOKBOOK_SOURCE}"/{test.glicol,test2.glicol} "${COOKBOOK_STAGE}"/usr/share/glicol +""" From 0a5d29b7fd6d1e611cdd44820bc2d107ca0f3d61 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 14 Jul 2024 09:57:11 +0000 Subject: [PATCH 2022/3180] Add recipes --- recipes/wip/crypto/morse2sound/recipe.toml | 5 +++++ recipes/wip/demos/fundsp/recipe.toml | 8 ++++++++ recipes/wip/demos/usfx/recipe.toml | 8 ++++++++ recipes/wip/demos/wavy/recipe.toml | 8 ++++++++ recipes/wip/net/remote/sanzu/recipe.toml | 8 ++++++++ 5 files changed, 37 insertions(+) create mode 100644 recipes/wip/crypto/morse2sound/recipe.toml create mode 100644 recipes/wip/demos/fundsp/recipe.toml create mode 100644 recipes/wip/demos/usfx/recipe.toml create mode 100644 recipes/wip/demos/wavy/recipe.toml create mode 100644 recipes/wip/net/remote/sanzu/recipe.toml diff --git a/recipes/wip/crypto/morse2sound/recipe.toml b/recipes/wip/crypto/morse2sound/recipe.toml new file mode 100644 index 00000000..3e00e735 --- /dev/null +++ b/recipes/wip/crypto/morse2sound/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/irevenko/morse2sound" +[build] +template = "cargo" diff --git a/recipes/wip/demos/fundsp/recipe.toml b/recipes/wip/demos/fundsp/recipe.toml new file mode 100644 index 00000000..0a2cffff --- /dev/null +++ b/recipes/wip/demos/fundsp/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/SamiPerttu/fundsp" +[build] +template = "custom" +script = """ +cookbook_cargo_examples beep file grain grain2 keys network optimize peek plot sequence type +""" diff --git a/recipes/wip/demos/usfx/recipe.toml b/recipes/wip/demos/usfx/recipe.toml new file mode 100644 index 00000000..30201767 --- /dev/null +++ b/recipes/wip/demos/usfx/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/tversteeg/usfx" +[build] +template = "custom" +script = """ +cookbook_cargo_examples cpal music +""" diff --git a/recipes/wip/demos/wavy/recipe.toml b/recipes/wip/demos/wavy/recipe.toml new file mode 100644 index 00000000..59cabec3 --- /dev/null +++ b/recipes/wip/demos/wavy/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ardaku/wavy" +[build] +template = "custom" +script = """ +cookbook_cargo_examples monitor play query record +""" diff --git a/recipes/wip/net/remote/sanzu/recipe.toml b/recipes/wip/net/remote/sanzu/recipe.toml new file mode 100644 index 00000000..2ec5b9a3 --- /dev/null +++ b/recipes/wip/net/remote/sanzu/recipe.toml @@ -0,0 +1,8 @@ +#TODO port to orbital +[source] +git = "https://github.com/cea-sec/sanzu" +[build] +template = "custom" +script = """ +cookbook_cargo_packages sanzu +""" From 8d4808a05bb3d9986cf5eb900fb8b45cc6e2eef5 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 14 Jul 2024 16:33:08 +0000 Subject: [PATCH 2023/3180] Add recipes --- recipes/wip/db/skytable/recipe.toml | 8 ++++++++ recipes/wip/demos/tquic/recipe.toml | 10 ++++++++++ recipes/wip/dev/patchers/hexpatch/recipe.toml | 5 +++++ recipes/wip/graphics/other/imageflow/recipe.toml | 13 +++++++++++++ recipes/wip/net/bittorrent/aquatic-udp/recipe.toml | 9 +++++++++ recipes/wip/net/http/sozu/recipe.toml | 8 ++++++++ recipes/wip/net/other/rathole/recipe.toml | 5 +++++ recipes/wip/net/server/doh-server/recipe.toml | 5 +++++ .../wip/net/server/encrypted-dns-server/recipe.toml | 5 +++++ recipes/wip/players/ytermusic/recipe.toml | 5 +++++ recipes/wip/text/duat/recipe.toml | 5 +++++ recipes/wip/tools/dirscan/recipe.toml | 5 +++++ recipes/wip/tools/fuc/recipe.toml | 8 ++++++++ 13 files changed, 91 insertions(+) create mode 100644 recipes/wip/db/skytable/recipe.toml create mode 100644 recipes/wip/demos/tquic/recipe.toml create mode 100644 recipes/wip/dev/patchers/hexpatch/recipe.toml create mode 100644 recipes/wip/graphics/other/imageflow/recipe.toml create mode 100644 recipes/wip/net/bittorrent/aquatic-udp/recipe.toml create mode 100644 recipes/wip/net/http/sozu/recipe.toml create mode 100644 recipes/wip/net/other/rathole/recipe.toml create mode 100644 recipes/wip/net/server/doh-server/recipe.toml create mode 100644 recipes/wip/net/server/encrypted-dns-server/recipe.toml create mode 100644 recipes/wip/players/ytermusic/recipe.toml create mode 100644 recipes/wip/text/duat/recipe.toml create mode 100644 recipes/wip/tools/dirscan/recipe.toml create mode 100644 recipes/wip/tools/fuc/recipe.toml diff --git a/recipes/wip/db/skytable/recipe.toml b/recipes/wip/db/skytable/recipe.toml new file mode 100644 index 00000000..b389b7a6 --- /dev/null +++ b/recipes/wip/db/skytable/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/skytable/skytable" +[build] +template = "custom" +script = """ +cookbook_cargo_packages skysh skyd +""" diff --git a/recipes/wip/demos/tquic/recipe.toml b/recipes/wip/demos/tquic/recipe.toml new file mode 100644 index 00000000..b600bbaf --- /dev/null +++ b/recipes/wip/demos/tquic/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Tencent/tquic" +[build] +template = "custom" +script = """ +cookbook_cargo_packages tquic_tools +mv "${COOKBOOK_STAGE}/usr/bin/tquic_server" "${COOKBOOK_STAGE}/usr/bin/tquic-server" +mv "${COOKBOOK_STAGE}/usr/bin/tquic_client" "${COOKBOOK_STAGE}/usr/bin/tquic-client" +""" diff --git a/recipes/wip/dev/patchers/hexpatch/recipe.toml b/recipes/wip/dev/patchers/hexpatch/recipe.toml new file mode 100644 index 00000000..736fe988 --- /dev/null +++ b/recipes/wip/dev/patchers/hexpatch/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Etto48/HexPatch" +[build] +template = "cargo" diff --git a/recipes/wip/graphics/other/imageflow/recipe.toml b/recipes/wip/graphics/other/imageflow/recipe.toml new file mode 100644 index 00000000..bb9ab9b3 --- /dev/null +++ b/recipes/wip/graphics/other/imageflow/recipe.toml @@ -0,0 +1,13 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/imazen/imageflow" +[build] +template = "custom" +dependencies = [ + "openssl1", + "libpng", +] +script = """ +cookbook_cargo_packages imageflow_tool_lib +mv "${COOKBOOK_STAGE}/usr/bin/imageflow_tool" "${COOKBOOK_STAGE}/usr/bin/imageflow-tool" +""" diff --git a/recipes/wip/net/bittorrent/aquatic-udp/recipe.toml b/recipes/wip/net/bittorrent/aquatic-udp/recipe.toml new file mode 100644 index 00000000..9d2b9ee2 --- /dev/null +++ b/recipes/wip/net/bittorrent/aquatic-udp/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/greatest-ape/aquatic" +[build] +template = "custom" +script = """ +cookbook_cargo_packages aquatic_udp +mv "${COOKBOOK_STAGE}/usr/bin/aquatic_udp" "${COOKBOOK_STAGE}/usr/bin/aquatic-udp" +""" diff --git a/recipes/wip/net/http/sozu/recipe.toml b/recipes/wip/net/http/sozu/recipe.toml new file mode 100644 index 00000000..bad5b103 --- /dev/null +++ b/recipes/wip/net/http/sozu/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/sozu-proxy/sozu" +[build] +template = "custom" +script = """ +cookbook_cargo_packages sozu +""" diff --git a/recipes/wip/net/other/rathole/recipe.toml b/recipes/wip/net/other/rathole/recipe.toml new file mode 100644 index 00000000..c3a56ae2 --- /dev/null +++ b/recipes/wip/net/other/rathole/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/rapiz1/rathole" +[build] +template = "cargo" diff --git a/recipes/wip/net/server/doh-server/recipe.toml b/recipes/wip/net/server/doh-server/recipe.toml new file mode 100644 index 00000000..355c37ab --- /dev/null +++ b/recipes/wip/net/server/doh-server/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/DNSCrypt/doh-server" +[build] +template = "cargo" diff --git a/recipes/wip/net/server/encrypted-dns-server/recipe.toml b/recipes/wip/net/server/encrypted-dns-server/recipe.toml new file mode 100644 index 00000000..58f49b37 --- /dev/null +++ b/recipes/wip/net/server/encrypted-dns-server/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/DNSCrypt/encrypted-dns-server" +[build] +template = "cargo" diff --git a/recipes/wip/players/ytermusic/recipe.toml b/recipes/wip/players/ytermusic/recipe.toml new file mode 100644 index 00000000..2f4b872b --- /dev/null +++ b/recipes/wip/players/ytermusic/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ccgauche/ytermusic" +[build] +template = "cargo" diff --git a/recipes/wip/text/duat/recipe.toml b/recipes/wip/text/duat/recipe.toml new file mode 100644 index 00000000..e68d7b22 --- /dev/null +++ b/recipes/wip/text/duat/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/AhoyISki/duat" +[build] +template = "cargo" diff --git a/recipes/wip/tools/dirscan/recipe.toml b/recipes/wip/tools/dirscan/recipe.toml new file mode 100644 index 00000000..34a07520 --- /dev/null +++ b/recipes/wip/tools/dirscan/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/orf/dirscan" +[build] +template = "cargo" diff --git a/recipes/wip/tools/fuc/recipe.toml b/recipes/wip/tools/fuc/recipe.toml new file mode 100644 index 00000000..8b42ad05 --- /dev/null +++ b/recipes/wip/tools/fuc/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/SUPERCILEX/fuc" +[build] +template = "custom" +script = """ +cookbook_cargo_packages cpz rmz +""" From a5d4350434b524e78edd1544f3d1b35f0d7c78ee Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 14 Jul 2024 16:35:13 +0000 Subject: [PATCH 2024/3180] Move recipes --- recipes/wip/net/{server => http}/apache-httpd/recipe.toml | 0 recipes/wip/net/{server => http}/apache-httpd/redox.patch | 0 recipes/wip/net/{server => http}/freenginx/recipe.toml | 0 recipes/wip/net/{server => http}/http-server-rs/recipe.toml | 0 recipes/wip/net/{server => http}/nginx/recipe.toml | 0 recipes/wip/net/{server => http}/simple-http-server/recipe.toml | 0 recipes/wip/net/{server => http}/sws/recipe.toml | 0 7 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/net/{server => http}/apache-httpd/recipe.toml (100%) rename recipes/wip/net/{server => http}/apache-httpd/redox.patch (100%) rename recipes/wip/net/{server => http}/freenginx/recipe.toml (100%) rename recipes/wip/net/{server => http}/http-server-rs/recipe.toml (100%) rename recipes/wip/net/{server => http}/nginx/recipe.toml (100%) rename recipes/wip/net/{server => http}/simple-http-server/recipe.toml (100%) rename recipes/wip/net/{server => http}/sws/recipe.toml (100%) diff --git a/recipes/wip/net/server/apache-httpd/recipe.toml b/recipes/wip/net/http/apache-httpd/recipe.toml similarity index 100% rename from recipes/wip/net/server/apache-httpd/recipe.toml rename to recipes/wip/net/http/apache-httpd/recipe.toml diff --git a/recipes/wip/net/server/apache-httpd/redox.patch b/recipes/wip/net/http/apache-httpd/redox.patch similarity index 100% rename from recipes/wip/net/server/apache-httpd/redox.patch rename to recipes/wip/net/http/apache-httpd/redox.patch diff --git a/recipes/wip/net/server/freenginx/recipe.toml b/recipes/wip/net/http/freenginx/recipe.toml similarity index 100% rename from recipes/wip/net/server/freenginx/recipe.toml rename to recipes/wip/net/http/freenginx/recipe.toml diff --git a/recipes/wip/net/server/http-server-rs/recipe.toml b/recipes/wip/net/http/http-server-rs/recipe.toml similarity index 100% rename from recipes/wip/net/server/http-server-rs/recipe.toml rename to recipes/wip/net/http/http-server-rs/recipe.toml diff --git a/recipes/wip/net/server/nginx/recipe.toml b/recipes/wip/net/http/nginx/recipe.toml similarity index 100% rename from recipes/wip/net/server/nginx/recipe.toml rename to recipes/wip/net/http/nginx/recipe.toml diff --git a/recipes/wip/net/server/simple-http-server/recipe.toml b/recipes/wip/net/http/simple-http-server/recipe.toml similarity index 100% rename from recipes/wip/net/server/simple-http-server/recipe.toml rename to recipes/wip/net/http/simple-http-server/recipe.toml diff --git a/recipes/wip/net/server/sws/recipe.toml b/recipes/wip/net/http/sws/recipe.toml similarity index 100% rename from recipes/wip/net/server/sws/recipe.toml rename to recipes/wip/net/http/sws/recipe.toml From 7fa524c98d81bdebcee5adc1dd55b7c745abf3b2 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 14 Jul 2024 16:38:04 +0000 Subject: [PATCH 2025/3180] Move recipes --- recipes/wip/{sound => players}/asak/recipe.toml | 0 recipes/wip/{sound => players}/cmus/recipe.toml | 0 recipes/wip/{sound => players}/festival/recipe.toml | 0 recipes/wip/{video => }/players/glide/recipe.toml | 0 recipes/wip/{video => }/players/mpv/recipe.toml | 0 recipes/wip/{sound => players}/pragha/recipe.toml | 0 recipes/wip/{sound => players}/rustcloud/recipe.toml | 0 recipes/wip/{sound => players}/rustic/recipe.toml | 0 recipes/wip/{sound => players}/symphonia-play/recipe.toml | 0 recipes/wip/{sound => players}/termusic/recipe.toml | 0 recipes/wip/{video => }/players/tplay/recipe.toml | 0 11 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{sound => players}/asak/recipe.toml (100%) rename recipes/wip/{sound => players}/cmus/recipe.toml (100%) rename recipes/wip/{sound => players}/festival/recipe.toml (100%) rename recipes/wip/{video => }/players/glide/recipe.toml (100%) rename recipes/wip/{video => }/players/mpv/recipe.toml (100%) rename recipes/wip/{sound => players}/pragha/recipe.toml (100%) rename recipes/wip/{sound => players}/rustcloud/recipe.toml (100%) rename recipes/wip/{sound => players}/rustic/recipe.toml (100%) rename recipes/wip/{sound => players}/symphonia-play/recipe.toml (100%) rename recipes/wip/{sound => players}/termusic/recipe.toml (100%) rename recipes/wip/{video => }/players/tplay/recipe.toml (100%) diff --git a/recipes/wip/sound/asak/recipe.toml b/recipes/wip/players/asak/recipe.toml similarity index 100% rename from recipes/wip/sound/asak/recipe.toml rename to recipes/wip/players/asak/recipe.toml diff --git a/recipes/wip/sound/cmus/recipe.toml b/recipes/wip/players/cmus/recipe.toml similarity index 100% rename from recipes/wip/sound/cmus/recipe.toml rename to recipes/wip/players/cmus/recipe.toml diff --git a/recipes/wip/sound/festival/recipe.toml b/recipes/wip/players/festival/recipe.toml similarity index 100% rename from recipes/wip/sound/festival/recipe.toml rename to recipes/wip/players/festival/recipe.toml diff --git a/recipes/wip/video/players/glide/recipe.toml b/recipes/wip/players/glide/recipe.toml similarity index 100% rename from recipes/wip/video/players/glide/recipe.toml rename to recipes/wip/players/glide/recipe.toml diff --git a/recipes/wip/video/players/mpv/recipe.toml b/recipes/wip/players/mpv/recipe.toml similarity index 100% rename from recipes/wip/video/players/mpv/recipe.toml rename to recipes/wip/players/mpv/recipe.toml diff --git a/recipes/wip/sound/pragha/recipe.toml b/recipes/wip/players/pragha/recipe.toml similarity index 100% rename from recipes/wip/sound/pragha/recipe.toml rename to recipes/wip/players/pragha/recipe.toml diff --git a/recipes/wip/sound/rustcloud/recipe.toml b/recipes/wip/players/rustcloud/recipe.toml similarity index 100% rename from recipes/wip/sound/rustcloud/recipe.toml rename to recipes/wip/players/rustcloud/recipe.toml diff --git a/recipes/wip/sound/rustic/recipe.toml b/recipes/wip/players/rustic/recipe.toml similarity index 100% rename from recipes/wip/sound/rustic/recipe.toml rename to recipes/wip/players/rustic/recipe.toml diff --git a/recipes/wip/sound/symphonia-play/recipe.toml b/recipes/wip/players/symphonia-play/recipe.toml similarity index 100% rename from recipes/wip/sound/symphonia-play/recipe.toml rename to recipes/wip/players/symphonia-play/recipe.toml diff --git a/recipes/wip/sound/termusic/recipe.toml b/recipes/wip/players/termusic/recipe.toml similarity index 100% rename from recipes/wip/sound/termusic/recipe.toml rename to recipes/wip/players/termusic/recipe.toml diff --git a/recipes/wip/video/players/tplay/recipe.toml b/recipes/wip/players/tplay/recipe.toml similarity index 100% rename from recipes/wip/video/players/tplay/recipe.toml rename to recipes/wip/players/tplay/recipe.toml From d083294895b15c4374d5f118690292c0928ebb80 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 14 Jul 2024 16:38:49 +0000 Subject: [PATCH 2026/3180] Move a recipe --- recipes/wip/{tools => players}/vlc/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{tools => players}/vlc/recipe.toml (100%) diff --git a/recipes/wip/tools/vlc/recipe.toml b/recipes/wip/players/vlc/recipe.toml similarity index 100% rename from recipes/wip/tools/vlc/recipe.toml rename to recipes/wip/players/vlc/recipe.toml From 89742d83426cb076329d760a9bdbf8b03c2ada96 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 14 Jul 2024 16:53:05 +0000 Subject: [PATCH 2027/3180] Move recipes --- recipes/wip/{tools => terminal}/ascii-gen/recipe.toml | 0 recipes/wip/{tools => terminal}/asciinema-rs/recipe.toml | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{tools => terminal}/ascii-gen/recipe.toml (100%) rename recipes/wip/{tools => terminal}/asciinema-rs/recipe.toml (100%) diff --git a/recipes/wip/tools/ascii-gen/recipe.toml b/recipes/wip/terminal/ascii-gen/recipe.toml similarity index 100% rename from recipes/wip/tools/ascii-gen/recipe.toml rename to recipes/wip/terminal/ascii-gen/recipe.toml diff --git a/recipes/wip/tools/asciinema-rs/recipe.toml b/recipes/wip/terminal/asciinema-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/asciinema-rs/recipe.toml rename to recipes/wip/terminal/asciinema-rs/recipe.toml From 9f748c4af601346b86b4800b873ea8959f86b538 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 14 Jul 2024 16:54:26 +0000 Subject: [PATCH 2028/3180] Update a recipe --- recipes/wip/terminal/asciinema-rs/recipe.toml | 5 ----- recipes/wip/terminal/asciinema/recipe.toml | 5 +++++ 2 files changed, 5 insertions(+), 5 deletions(-) delete mode 100644 recipes/wip/terminal/asciinema-rs/recipe.toml create mode 100644 recipes/wip/terminal/asciinema/recipe.toml diff --git a/recipes/wip/terminal/asciinema-rs/recipe.toml b/recipes/wip/terminal/asciinema-rs/recipe.toml deleted file mode 100644 index d403305e..00000000 --- a/recipes/wip/terminal/asciinema-rs/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO Needs to patch outdated crates -[source] -git = "https://github.com/LegNeato/asciinema-rs" -[build] -template = "cargo" diff --git a/recipes/wip/terminal/asciinema/recipe.toml b/recipes/wip/terminal/asciinema/recipe.toml new file mode 100644 index 00000000..72724cc9 --- /dev/null +++ b/recipes/wip/terminal/asciinema/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/asciinema/asciinema" +[build] +template = "cargo" From 5f53b34722ffce90820eb68e3776b4b82ebc5341 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 14 Jul 2024 17:17:29 +0000 Subject: [PATCH 2029/3180] Move recipes --- recipes/wip/{tools => dev/analysis}/hgrep/recipe.toml | 0 recipes/wip/{tools => dev/analysis}/hl/recipe.toml | 0 recipes/wip/{tools => dev/analysis}/hx/recipe.toml | 0 recipes/wip/{tools => dev/other}/elfutils/recipe.toml | 0 recipes/wip/{tools => dev/rust-tools}/bacon/recipe.toml | 0 recipes/wip/{tools => dev/vcs}/mercurial/recipe.toml | 0 recipes/wip/{tools => doc}/mdbook/recipe.toml | 0 recipes/wip/{tools => graphics/converters}/converseen/recipe.toml | 0 recipes/wip/{tools => graphics/shaders}/glsl-viewer/recipe.toml | 0 recipes/wip/{tools => monitors}/bandwhich/recipe.toml | 0 recipes/wip/{tools => monitors}/conky/recipe.toml | 0 recipes/wip/{tools => net/chat}/iamb/recipe.toml | 0 recipes/wip/{tools => net/download}/aria2/recipe.toml | 0 recipes/wip/{tools => net/sharing}/lan-mouse/recipe.toml | 0 recipes/wip/{tools => players}/cosmic-player/manifest | 0 recipes/wip/{tools => players}/cosmic-player/recipe.toml | 0 recipes/wip/{tools => security}/gnupg-lts/recipe.toml | 0 recipes/wip/{tools => security}/gnupg/recipe.toml | 0 recipes/wip/{tools => sound}/cava/recipe.toml | 0 recipes/wip/{tools => sound}/chuck/recipe.toml | 0 recipes/wip/{tools => sys-info}/cpu-x/recipe.toml | 0 recipes/wip/{tools => sys-info}/cyme/recipe.toml | 0 recipes/wip/{tools => sys-info}/freshfetch/recipe.toml | 0 recipes/wip/{tools => sys-info}/macchina/recipe.toml | 0 recipes/wip/{tools => terminal}/chafa/recipe.toml | 0 recipes/wip/{tools => terminal}/mosh/recipe.toml | 0 recipes/wip/{tools => text}/amp/recipe.toml | 0 recipes/wip/{tools => text}/bat/recipe.toml | 0 recipes/wip/{tools => text}/csvlens/recipe.toml | 0 recipes/wip/{tools => text}/emacs-nox/recipe.toml | 0 recipes/wip/{tools => text}/emacs-pgtk/recipe.toml | 0 recipes/wip/{tools => text}/helix-gpui/recipe.toml | 0 recipes/wip/{tools => text}/igrep/recipe.toml | 0 recipes/wip/{tools => text}/kibi/recipe.toml | 0 recipes/wip/{tools => text}/neovide/recipe.toml | 0 recipes/wip/{tools => text}/neovim/recipe.toml | 0 36 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{tools => dev/analysis}/hgrep/recipe.toml (100%) rename recipes/wip/{tools => dev/analysis}/hl/recipe.toml (100%) rename recipes/wip/{tools => dev/analysis}/hx/recipe.toml (100%) rename recipes/wip/{tools => dev/other}/elfutils/recipe.toml (100%) rename recipes/wip/{tools => dev/rust-tools}/bacon/recipe.toml (100%) rename recipes/wip/{tools => dev/vcs}/mercurial/recipe.toml (100%) rename recipes/wip/{tools => doc}/mdbook/recipe.toml (100%) rename recipes/wip/{tools => graphics/converters}/converseen/recipe.toml (100%) rename recipes/wip/{tools => graphics/shaders}/glsl-viewer/recipe.toml (100%) rename recipes/wip/{tools => monitors}/bandwhich/recipe.toml (100%) rename recipes/wip/{tools => monitors}/conky/recipe.toml (100%) rename recipes/wip/{tools => net/chat}/iamb/recipe.toml (100%) rename recipes/wip/{tools => net/download}/aria2/recipe.toml (100%) rename recipes/wip/{tools => net/sharing}/lan-mouse/recipe.toml (100%) rename recipes/wip/{tools => players}/cosmic-player/manifest (100%) rename recipes/wip/{tools => players}/cosmic-player/recipe.toml (100%) rename recipes/wip/{tools => security}/gnupg-lts/recipe.toml (100%) rename recipes/wip/{tools => security}/gnupg/recipe.toml (100%) rename recipes/wip/{tools => sound}/cava/recipe.toml (100%) rename recipes/wip/{tools => sound}/chuck/recipe.toml (100%) rename recipes/wip/{tools => sys-info}/cpu-x/recipe.toml (100%) rename recipes/wip/{tools => sys-info}/cyme/recipe.toml (100%) rename recipes/wip/{tools => sys-info}/freshfetch/recipe.toml (100%) rename recipes/wip/{tools => sys-info}/macchina/recipe.toml (100%) rename recipes/wip/{tools => terminal}/chafa/recipe.toml (100%) rename recipes/wip/{tools => terminal}/mosh/recipe.toml (100%) rename recipes/wip/{tools => text}/amp/recipe.toml (100%) rename recipes/wip/{tools => text}/bat/recipe.toml (100%) rename recipes/wip/{tools => text}/csvlens/recipe.toml (100%) rename recipes/wip/{tools => text}/emacs-nox/recipe.toml (100%) rename recipes/wip/{tools => text}/emacs-pgtk/recipe.toml (100%) rename recipes/wip/{tools => text}/helix-gpui/recipe.toml (100%) rename recipes/wip/{tools => text}/igrep/recipe.toml (100%) rename recipes/wip/{tools => text}/kibi/recipe.toml (100%) rename recipes/wip/{tools => text}/neovide/recipe.toml (100%) rename recipes/wip/{tools => text}/neovim/recipe.toml (100%) diff --git a/recipes/wip/tools/hgrep/recipe.toml b/recipes/wip/dev/analysis/hgrep/recipe.toml similarity index 100% rename from recipes/wip/tools/hgrep/recipe.toml rename to recipes/wip/dev/analysis/hgrep/recipe.toml diff --git a/recipes/wip/tools/hl/recipe.toml b/recipes/wip/dev/analysis/hl/recipe.toml similarity index 100% rename from recipes/wip/tools/hl/recipe.toml rename to recipes/wip/dev/analysis/hl/recipe.toml diff --git a/recipes/wip/tools/hx/recipe.toml b/recipes/wip/dev/analysis/hx/recipe.toml similarity index 100% rename from recipes/wip/tools/hx/recipe.toml rename to recipes/wip/dev/analysis/hx/recipe.toml diff --git a/recipes/wip/tools/elfutils/recipe.toml b/recipes/wip/dev/other/elfutils/recipe.toml similarity index 100% rename from recipes/wip/tools/elfutils/recipe.toml rename to recipes/wip/dev/other/elfutils/recipe.toml diff --git a/recipes/wip/tools/bacon/recipe.toml b/recipes/wip/dev/rust-tools/bacon/recipe.toml similarity index 100% rename from recipes/wip/tools/bacon/recipe.toml rename to recipes/wip/dev/rust-tools/bacon/recipe.toml diff --git a/recipes/wip/tools/mercurial/recipe.toml b/recipes/wip/dev/vcs/mercurial/recipe.toml similarity index 100% rename from recipes/wip/tools/mercurial/recipe.toml rename to recipes/wip/dev/vcs/mercurial/recipe.toml diff --git a/recipes/wip/tools/mdbook/recipe.toml b/recipes/wip/doc/mdbook/recipe.toml similarity index 100% rename from recipes/wip/tools/mdbook/recipe.toml rename to recipes/wip/doc/mdbook/recipe.toml diff --git a/recipes/wip/tools/converseen/recipe.toml b/recipes/wip/graphics/converters/converseen/recipe.toml similarity index 100% rename from recipes/wip/tools/converseen/recipe.toml rename to recipes/wip/graphics/converters/converseen/recipe.toml diff --git a/recipes/wip/tools/glsl-viewer/recipe.toml b/recipes/wip/graphics/shaders/glsl-viewer/recipe.toml similarity index 100% rename from recipes/wip/tools/glsl-viewer/recipe.toml rename to recipes/wip/graphics/shaders/glsl-viewer/recipe.toml diff --git a/recipes/wip/tools/bandwhich/recipe.toml b/recipes/wip/monitors/bandwhich/recipe.toml similarity index 100% rename from recipes/wip/tools/bandwhich/recipe.toml rename to recipes/wip/monitors/bandwhich/recipe.toml diff --git a/recipes/wip/tools/conky/recipe.toml b/recipes/wip/monitors/conky/recipe.toml similarity index 100% rename from recipes/wip/tools/conky/recipe.toml rename to recipes/wip/monitors/conky/recipe.toml diff --git a/recipes/wip/tools/iamb/recipe.toml b/recipes/wip/net/chat/iamb/recipe.toml similarity index 100% rename from recipes/wip/tools/iamb/recipe.toml rename to recipes/wip/net/chat/iamb/recipe.toml diff --git a/recipes/wip/tools/aria2/recipe.toml b/recipes/wip/net/download/aria2/recipe.toml similarity index 100% rename from recipes/wip/tools/aria2/recipe.toml rename to recipes/wip/net/download/aria2/recipe.toml diff --git a/recipes/wip/tools/lan-mouse/recipe.toml b/recipes/wip/net/sharing/lan-mouse/recipe.toml similarity index 100% rename from recipes/wip/tools/lan-mouse/recipe.toml rename to recipes/wip/net/sharing/lan-mouse/recipe.toml diff --git a/recipes/wip/tools/cosmic-player/manifest b/recipes/wip/players/cosmic-player/manifest similarity index 100% rename from recipes/wip/tools/cosmic-player/manifest rename to recipes/wip/players/cosmic-player/manifest diff --git a/recipes/wip/tools/cosmic-player/recipe.toml b/recipes/wip/players/cosmic-player/recipe.toml similarity index 100% rename from recipes/wip/tools/cosmic-player/recipe.toml rename to recipes/wip/players/cosmic-player/recipe.toml diff --git a/recipes/wip/tools/gnupg-lts/recipe.toml b/recipes/wip/security/gnupg-lts/recipe.toml similarity index 100% rename from recipes/wip/tools/gnupg-lts/recipe.toml rename to recipes/wip/security/gnupg-lts/recipe.toml diff --git a/recipes/wip/tools/gnupg/recipe.toml b/recipes/wip/security/gnupg/recipe.toml similarity index 100% rename from recipes/wip/tools/gnupg/recipe.toml rename to recipes/wip/security/gnupg/recipe.toml diff --git a/recipes/wip/tools/cava/recipe.toml b/recipes/wip/sound/cava/recipe.toml similarity index 100% rename from recipes/wip/tools/cava/recipe.toml rename to recipes/wip/sound/cava/recipe.toml diff --git a/recipes/wip/tools/chuck/recipe.toml b/recipes/wip/sound/chuck/recipe.toml similarity index 100% rename from recipes/wip/tools/chuck/recipe.toml rename to recipes/wip/sound/chuck/recipe.toml diff --git a/recipes/wip/tools/cpu-x/recipe.toml b/recipes/wip/sys-info/cpu-x/recipe.toml similarity index 100% rename from recipes/wip/tools/cpu-x/recipe.toml rename to recipes/wip/sys-info/cpu-x/recipe.toml diff --git a/recipes/wip/tools/cyme/recipe.toml b/recipes/wip/sys-info/cyme/recipe.toml similarity index 100% rename from recipes/wip/tools/cyme/recipe.toml rename to recipes/wip/sys-info/cyme/recipe.toml diff --git a/recipes/wip/tools/freshfetch/recipe.toml b/recipes/wip/sys-info/freshfetch/recipe.toml similarity index 100% rename from recipes/wip/tools/freshfetch/recipe.toml rename to recipes/wip/sys-info/freshfetch/recipe.toml diff --git a/recipes/wip/tools/macchina/recipe.toml b/recipes/wip/sys-info/macchina/recipe.toml similarity index 100% rename from recipes/wip/tools/macchina/recipe.toml rename to recipes/wip/sys-info/macchina/recipe.toml diff --git a/recipes/wip/tools/chafa/recipe.toml b/recipes/wip/terminal/chafa/recipe.toml similarity index 100% rename from recipes/wip/tools/chafa/recipe.toml rename to recipes/wip/terminal/chafa/recipe.toml diff --git a/recipes/wip/tools/mosh/recipe.toml b/recipes/wip/terminal/mosh/recipe.toml similarity index 100% rename from recipes/wip/tools/mosh/recipe.toml rename to recipes/wip/terminal/mosh/recipe.toml diff --git a/recipes/wip/tools/amp/recipe.toml b/recipes/wip/text/amp/recipe.toml similarity index 100% rename from recipes/wip/tools/amp/recipe.toml rename to recipes/wip/text/amp/recipe.toml diff --git a/recipes/wip/tools/bat/recipe.toml b/recipes/wip/text/bat/recipe.toml similarity index 100% rename from recipes/wip/tools/bat/recipe.toml rename to recipes/wip/text/bat/recipe.toml diff --git a/recipes/wip/tools/csvlens/recipe.toml b/recipes/wip/text/csvlens/recipe.toml similarity index 100% rename from recipes/wip/tools/csvlens/recipe.toml rename to recipes/wip/text/csvlens/recipe.toml diff --git a/recipes/wip/tools/emacs-nox/recipe.toml b/recipes/wip/text/emacs-nox/recipe.toml similarity index 100% rename from recipes/wip/tools/emacs-nox/recipe.toml rename to recipes/wip/text/emacs-nox/recipe.toml diff --git a/recipes/wip/tools/emacs-pgtk/recipe.toml b/recipes/wip/text/emacs-pgtk/recipe.toml similarity index 100% rename from recipes/wip/tools/emacs-pgtk/recipe.toml rename to recipes/wip/text/emacs-pgtk/recipe.toml diff --git a/recipes/wip/tools/helix-gpui/recipe.toml b/recipes/wip/text/helix-gpui/recipe.toml similarity index 100% rename from recipes/wip/tools/helix-gpui/recipe.toml rename to recipes/wip/text/helix-gpui/recipe.toml diff --git a/recipes/wip/tools/igrep/recipe.toml b/recipes/wip/text/igrep/recipe.toml similarity index 100% rename from recipes/wip/tools/igrep/recipe.toml rename to recipes/wip/text/igrep/recipe.toml diff --git a/recipes/wip/tools/kibi/recipe.toml b/recipes/wip/text/kibi/recipe.toml similarity index 100% rename from recipes/wip/tools/kibi/recipe.toml rename to recipes/wip/text/kibi/recipe.toml diff --git a/recipes/wip/tools/neovide/recipe.toml b/recipes/wip/text/neovide/recipe.toml similarity index 100% rename from recipes/wip/tools/neovide/recipe.toml rename to recipes/wip/text/neovide/recipe.toml diff --git a/recipes/wip/tools/neovim/recipe.toml b/recipes/wip/text/neovim/recipe.toml similarity index 100% rename from recipes/wip/tools/neovim/recipe.toml rename to recipes/wip/text/neovim/recipe.toml From bdc92b476c94fc5086b5c50fc75fbc785ab8a5a5 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 14 Jul 2024 17:48:23 +0000 Subject: [PATCH 2030/3180] Move recipes --- recipes/wip/{tools => benchmarks}/stress-ng/recipe.toml | 0 recipes/wip/{tools => crypto}/qrrs/recipe.toml | 0 recipes/wip/{tools => crypto}/qrtool/recipe.toml | 0 recipes/wip/{tools => dev/build-system}/just/recipe.toml | 0 recipes/wip/{tools => edu}/rustlings/recipe.toml | 0 recipes/wip/{tools => graphics/other}/oxipng/recipe.toml | 0 recipes/wip/{tools => graphics/other}/vulkan-tools/recipe.toml | 0 recipes/wip/{graphics => image}/editors/gimp/recipe.toml | 0 recipes/wip/{graphics => image}/editors/inkscape/recipe.toml | 0 recipes/wip/{graphics => image}/editors/krita/recipe.toml | 0 recipes/wip/{graphics => image}/editors/rx/recipe.toml | 0 .../{graphics/converters => image/other}/converseen/recipe.toml | 0 .../wip/{graphics => image}/other/dominant-colours/recipe.toml | 0 recipes/wip/{graphics => image}/other/graphicsmagick/recipe.toml | 0 recipes/wip/{graphics => image}/other/imageflow/recipe.toml | 0 recipes/wip/{graphics => image}/other/imagemagick/recipe.toml | 0 recipes/wip/{graphics => image}/other/jxl-oxide/recipe.toml | 0 recipes/wip/{tools => image/other}/lsix/recipe.toml | 0 .../wip/{graphics/other => image}/upscaling/rscale2x/recipe.toml | 0 .../{graphics/other => image}/upscaling/upscaler-rs/recipe.toml | 0 recipes/wip/{tools => image/upscaling}/upscaler/recipe.toml | 0 recipes/wip/{tools => math}/qalculate-gtk/recipe.toml | 0 recipes/wip/{tools => net/bittorrent}/rtorrent/recipe.toml | 0 recipes/wip/{tools => net/chat}/pidgin/recipe.toml | 0 recipes/wip/{tools => net/download}/rusty-psn-cli/recipe.toml | 0 recipes/wip/{tools => net/download}/rusty-psn-gui/recipe.toml | 0 recipes/wip/{tools => net/download}/uget/recipe.toml | 0 recipes/wip/{tools => net/other}/rsync/recipe.toml | 0 recipes/wip/{tools => net/remote}/remmina/recipe.toml | 0 recipes/wip/{tools => news}/news-rs/recipe.toml | 0 recipes/wip/{terminal => recorders}/asciinema/recipe.toml | 0 recipes/wip/{tools => recorders}/obs-studio/recipe.toml | 0 recipes/wip/{tools => science}/stellarium/recipe.toml | 0 recipes/wip/{tools => security}/keepassxc/recipe.toml | 0 recipes/wip/{tools => security}/please/recipe.toml | 0 recipes/wip/{tools => security}/rage/recipe.toml | 0 recipes/wip/{tools => security}/sudo-rs/recipe.toml | 0 recipes/wip/{players => sound}/asak/recipe.toml | 0 recipes/wip/{tools => sound}/miniaudicle/recipe.toml | 0 recipes/wip/{tools => sys-info}/neofetch/recipe.toml | 0 recipes/wip/{tools => sys-info}/pciutils/recipe.toml | 0 recipes/wip/{tools => sys-info}/pfetch-rs/recipe.toml | 0 recipes/wip/{tools => sys-info}/process-viewer/recipe.toml | 0 recipes/wip/{tools => sys-info}/procs/recipe.toml | 0 recipes/wip/{tools => sys-info}/rfetch/recipe.toml | 0 recipes/wip/{tools => sys-info}/rsftch/recipe.toml | 0 recipes/wip/{tools => sys-info}/usbutils/recipe.toml | 0 recipes/wip/{tools => sys-info}/zeitfetch/recipe.toml | 0 recipes/wip/{tools => system}/topgrade/recipe.toml | 0 recipes/wip/{tools => terminal}/starship/recipe.toml | 0 recipes/wip/{tools => terminal}/termimage/recipe.toml | 0 recipes/wip/{tools => text}/repgrep/recipe.toml | 0 recipes/wip/{tools => text}/ripgrep-all/recipe.toml | 0 recipes/wip/tools/{other => }/pastel/recipe.sh | 0 54 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{tools => benchmarks}/stress-ng/recipe.toml (100%) rename recipes/wip/{tools => crypto}/qrrs/recipe.toml (100%) rename recipes/wip/{tools => crypto}/qrtool/recipe.toml (100%) rename recipes/wip/{tools => dev/build-system}/just/recipe.toml (100%) rename recipes/wip/{tools => edu}/rustlings/recipe.toml (100%) rename recipes/wip/{tools => graphics/other}/oxipng/recipe.toml (100%) rename recipes/wip/{tools => graphics/other}/vulkan-tools/recipe.toml (100%) rename recipes/wip/{graphics => image}/editors/gimp/recipe.toml (100%) rename recipes/wip/{graphics => image}/editors/inkscape/recipe.toml (100%) rename recipes/wip/{graphics => image}/editors/krita/recipe.toml (100%) rename recipes/wip/{graphics => image}/editors/rx/recipe.toml (100%) rename recipes/wip/{graphics/converters => image/other}/converseen/recipe.toml (100%) rename recipes/wip/{graphics => image}/other/dominant-colours/recipe.toml (100%) rename recipes/wip/{graphics => image}/other/graphicsmagick/recipe.toml (100%) rename recipes/wip/{graphics => image}/other/imageflow/recipe.toml (100%) rename recipes/wip/{graphics => image}/other/imagemagick/recipe.toml (100%) rename recipes/wip/{graphics => image}/other/jxl-oxide/recipe.toml (100%) rename recipes/wip/{tools => image/other}/lsix/recipe.toml (100%) rename recipes/wip/{graphics/other => image}/upscaling/rscale2x/recipe.toml (100%) rename recipes/wip/{graphics/other => image}/upscaling/upscaler-rs/recipe.toml (100%) rename recipes/wip/{tools => image/upscaling}/upscaler/recipe.toml (100%) rename recipes/wip/{tools => math}/qalculate-gtk/recipe.toml (100%) rename recipes/wip/{tools => net/bittorrent}/rtorrent/recipe.toml (100%) rename recipes/wip/{tools => net/chat}/pidgin/recipe.toml (100%) rename recipes/wip/{tools => net/download}/rusty-psn-cli/recipe.toml (100%) rename recipes/wip/{tools => net/download}/rusty-psn-gui/recipe.toml (100%) rename recipes/wip/{tools => net/download}/uget/recipe.toml (100%) rename recipes/wip/{tools => net/other}/rsync/recipe.toml (100%) rename recipes/wip/{tools => net/remote}/remmina/recipe.toml (100%) rename recipes/wip/{tools => news}/news-rs/recipe.toml (100%) rename recipes/wip/{terminal => recorders}/asciinema/recipe.toml (100%) rename recipes/wip/{tools => recorders}/obs-studio/recipe.toml (100%) rename recipes/wip/{tools => science}/stellarium/recipe.toml (100%) rename recipes/wip/{tools => security}/keepassxc/recipe.toml (100%) rename recipes/wip/{tools => security}/please/recipe.toml (100%) rename recipes/wip/{tools => security}/rage/recipe.toml (100%) rename recipes/wip/{tools => security}/sudo-rs/recipe.toml (100%) rename recipes/wip/{players => sound}/asak/recipe.toml (100%) rename recipes/wip/{tools => sound}/miniaudicle/recipe.toml (100%) rename recipes/wip/{tools => sys-info}/neofetch/recipe.toml (100%) rename recipes/wip/{tools => sys-info}/pciutils/recipe.toml (100%) rename recipes/wip/{tools => sys-info}/pfetch-rs/recipe.toml (100%) rename recipes/wip/{tools => sys-info}/process-viewer/recipe.toml (100%) rename recipes/wip/{tools => sys-info}/procs/recipe.toml (100%) rename recipes/wip/{tools => sys-info}/rfetch/recipe.toml (100%) rename recipes/wip/{tools => sys-info}/rsftch/recipe.toml (100%) rename recipes/wip/{tools => sys-info}/usbutils/recipe.toml (100%) rename recipes/wip/{tools => sys-info}/zeitfetch/recipe.toml (100%) rename recipes/wip/{tools => system}/topgrade/recipe.toml (100%) rename recipes/wip/{tools => terminal}/starship/recipe.toml (100%) rename recipes/wip/{tools => terminal}/termimage/recipe.toml (100%) rename recipes/wip/{tools => text}/repgrep/recipe.toml (100%) rename recipes/wip/{tools => text}/ripgrep-all/recipe.toml (100%) rename recipes/wip/tools/{other => }/pastel/recipe.sh (100%) diff --git a/recipes/wip/tools/stress-ng/recipe.toml b/recipes/wip/benchmarks/stress-ng/recipe.toml similarity index 100% rename from recipes/wip/tools/stress-ng/recipe.toml rename to recipes/wip/benchmarks/stress-ng/recipe.toml diff --git a/recipes/wip/tools/qrrs/recipe.toml b/recipes/wip/crypto/qrrs/recipe.toml similarity index 100% rename from recipes/wip/tools/qrrs/recipe.toml rename to recipes/wip/crypto/qrrs/recipe.toml diff --git a/recipes/wip/tools/qrtool/recipe.toml b/recipes/wip/crypto/qrtool/recipe.toml similarity index 100% rename from recipes/wip/tools/qrtool/recipe.toml rename to recipes/wip/crypto/qrtool/recipe.toml diff --git a/recipes/wip/tools/just/recipe.toml b/recipes/wip/dev/build-system/just/recipe.toml similarity index 100% rename from recipes/wip/tools/just/recipe.toml rename to recipes/wip/dev/build-system/just/recipe.toml diff --git a/recipes/wip/tools/rustlings/recipe.toml b/recipes/wip/edu/rustlings/recipe.toml similarity index 100% rename from recipes/wip/tools/rustlings/recipe.toml rename to recipes/wip/edu/rustlings/recipe.toml diff --git a/recipes/wip/tools/oxipng/recipe.toml b/recipes/wip/graphics/other/oxipng/recipe.toml similarity index 100% rename from recipes/wip/tools/oxipng/recipe.toml rename to recipes/wip/graphics/other/oxipng/recipe.toml diff --git a/recipes/wip/tools/vulkan-tools/recipe.toml b/recipes/wip/graphics/other/vulkan-tools/recipe.toml similarity index 100% rename from recipes/wip/tools/vulkan-tools/recipe.toml rename to recipes/wip/graphics/other/vulkan-tools/recipe.toml diff --git a/recipes/wip/graphics/editors/gimp/recipe.toml b/recipes/wip/image/editors/gimp/recipe.toml similarity index 100% rename from recipes/wip/graphics/editors/gimp/recipe.toml rename to recipes/wip/image/editors/gimp/recipe.toml diff --git a/recipes/wip/graphics/editors/inkscape/recipe.toml b/recipes/wip/image/editors/inkscape/recipe.toml similarity index 100% rename from recipes/wip/graphics/editors/inkscape/recipe.toml rename to recipes/wip/image/editors/inkscape/recipe.toml diff --git a/recipes/wip/graphics/editors/krita/recipe.toml b/recipes/wip/image/editors/krita/recipe.toml similarity index 100% rename from recipes/wip/graphics/editors/krita/recipe.toml rename to recipes/wip/image/editors/krita/recipe.toml diff --git a/recipes/wip/graphics/editors/rx/recipe.toml b/recipes/wip/image/editors/rx/recipe.toml similarity index 100% rename from recipes/wip/graphics/editors/rx/recipe.toml rename to recipes/wip/image/editors/rx/recipe.toml diff --git a/recipes/wip/graphics/converters/converseen/recipe.toml b/recipes/wip/image/other/converseen/recipe.toml similarity index 100% rename from recipes/wip/graphics/converters/converseen/recipe.toml rename to recipes/wip/image/other/converseen/recipe.toml diff --git a/recipes/wip/graphics/other/dominant-colours/recipe.toml b/recipes/wip/image/other/dominant-colours/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/dominant-colours/recipe.toml rename to recipes/wip/image/other/dominant-colours/recipe.toml diff --git a/recipes/wip/graphics/other/graphicsmagick/recipe.toml b/recipes/wip/image/other/graphicsmagick/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/graphicsmagick/recipe.toml rename to recipes/wip/image/other/graphicsmagick/recipe.toml diff --git a/recipes/wip/graphics/other/imageflow/recipe.toml b/recipes/wip/image/other/imageflow/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/imageflow/recipe.toml rename to recipes/wip/image/other/imageflow/recipe.toml diff --git a/recipes/wip/graphics/other/imagemagick/recipe.toml b/recipes/wip/image/other/imagemagick/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/imagemagick/recipe.toml rename to recipes/wip/image/other/imagemagick/recipe.toml diff --git a/recipes/wip/graphics/other/jxl-oxide/recipe.toml b/recipes/wip/image/other/jxl-oxide/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/jxl-oxide/recipe.toml rename to recipes/wip/image/other/jxl-oxide/recipe.toml diff --git a/recipes/wip/tools/lsix/recipe.toml b/recipes/wip/image/other/lsix/recipe.toml similarity index 100% rename from recipes/wip/tools/lsix/recipe.toml rename to recipes/wip/image/other/lsix/recipe.toml diff --git a/recipes/wip/graphics/other/upscaling/rscale2x/recipe.toml b/recipes/wip/image/upscaling/rscale2x/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/upscaling/rscale2x/recipe.toml rename to recipes/wip/image/upscaling/rscale2x/recipe.toml diff --git a/recipes/wip/graphics/other/upscaling/upscaler-rs/recipe.toml b/recipes/wip/image/upscaling/upscaler-rs/recipe.toml similarity index 100% rename from recipes/wip/graphics/other/upscaling/upscaler-rs/recipe.toml rename to recipes/wip/image/upscaling/upscaler-rs/recipe.toml diff --git a/recipes/wip/tools/upscaler/recipe.toml b/recipes/wip/image/upscaling/upscaler/recipe.toml similarity index 100% rename from recipes/wip/tools/upscaler/recipe.toml rename to recipes/wip/image/upscaling/upscaler/recipe.toml diff --git a/recipes/wip/tools/qalculate-gtk/recipe.toml b/recipes/wip/math/qalculate-gtk/recipe.toml similarity index 100% rename from recipes/wip/tools/qalculate-gtk/recipe.toml rename to recipes/wip/math/qalculate-gtk/recipe.toml diff --git a/recipes/wip/tools/rtorrent/recipe.toml b/recipes/wip/net/bittorrent/rtorrent/recipe.toml similarity index 100% rename from recipes/wip/tools/rtorrent/recipe.toml rename to recipes/wip/net/bittorrent/rtorrent/recipe.toml diff --git a/recipes/wip/tools/pidgin/recipe.toml b/recipes/wip/net/chat/pidgin/recipe.toml similarity index 100% rename from recipes/wip/tools/pidgin/recipe.toml rename to recipes/wip/net/chat/pidgin/recipe.toml diff --git a/recipes/wip/tools/rusty-psn-cli/recipe.toml b/recipes/wip/net/download/rusty-psn-cli/recipe.toml similarity index 100% rename from recipes/wip/tools/rusty-psn-cli/recipe.toml rename to recipes/wip/net/download/rusty-psn-cli/recipe.toml diff --git a/recipes/wip/tools/rusty-psn-gui/recipe.toml b/recipes/wip/net/download/rusty-psn-gui/recipe.toml similarity index 100% rename from recipes/wip/tools/rusty-psn-gui/recipe.toml rename to recipes/wip/net/download/rusty-psn-gui/recipe.toml diff --git a/recipes/wip/tools/uget/recipe.toml b/recipes/wip/net/download/uget/recipe.toml similarity index 100% rename from recipes/wip/tools/uget/recipe.toml rename to recipes/wip/net/download/uget/recipe.toml diff --git a/recipes/wip/tools/rsync/recipe.toml b/recipes/wip/net/other/rsync/recipe.toml similarity index 100% rename from recipes/wip/tools/rsync/recipe.toml rename to recipes/wip/net/other/rsync/recipe.toml diff --git a/recipes/wip/tools/remmina/recipe.toml b/recipes/wip/net/remote/remmina/recipe.toml similarity index 100% rename from recipes/wip/tools/remmina/recipe.toml rename to recipes/wip/net/remote/remmina/recipe.toml diff --git a/recipes/wip/tools/news-rs/recipe.toml b/recipes/wip/news/news-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/news-rs/recipe.toml rename to recipes/wip/news/news-rs/recipe.toml diff --git a/recipes/wip/terminal/asciinema/recipe.toml b/recipes/wip/recorders/asciinema/recipe.toml similarity index 100% rename from recipes/wip/terminal/asciinema/recipe.toml rename to recipes/wip/recorders/asciinema/recipe.toml diff --git a/recipes/wip/tools/obs-studio/recipe.toml b/recipes/wip/recorders/obs-studio/recipe.toml similarity index 100% rename from recipes/wip/tools/obs-studio/recipe.toml rename to recipes/wip/recorders/obs-studio/recipe.toml diff --git a/recipes/wip/tools/stellarium/recipe.toml b/recipes/wip/science/stellarium/recipe.toml similarity index 100% rename from recipes/wip/tools/stellarium/recipe.toml rename to recipes/wip/science/stellarium/recipe.toml diff --git a/recipes/wip/tools/keepassxc/recipe.toml b/recipes/wip/security/keepassxc/recipe.toml similarity index 100% rename from recipes/wip/tools/keepassxc/recipe.toml rename to recipes/wip/security/keepassxc/recipe.toml diff --git a/recipes/wip/tools/please/recipe.toml b/recipes/wip/security/please/recipe.toml similarity index 100% rename from recipes/wip/tools/please/recipe.toml rename to recipes/wip/security/please/recipe.toml diff --git a/recipes/wip/tools/rage/recipe.toml b/recipes/wip/security/rage/recipe.toml similarity index 100% rename from recipes/wip/tools/rage/recipe.toml rename to recipes/wip/security/rage/recipe.toml diff --git a/recipes/wip/tools/sudo-rs/recipe.toml b/recipes/wip/security/sudo-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/sudo-rs/recipe.toml rename to recipes/wip/security/sudo-rs/recipe.toml diff --git a/recipes/wip/players/asak/recipe.toml b/recipes/wip/sound/asak/recipe.toml similarity index 100% rename from recipes/wip/players/asak/recipe.toml rename to recipes/wip/sound/asak/recipe.toml diff --git a/recipes/wip/tools/miniaudicle/recipe.toml b/recipes/wip/sound/miniaudicle/recipe.toml similarity index 100% rename from recipes/wip/tools/miniaudicle/recipe.toml rename to recipes/wip/sound/miniaudicle/recipe.toml diff --git a/recipes/wip/tools/neofetch/recipe.toml b/recipes/wip/sys-info/neofetch/recipe.toml similarity index 100% rename from recipes/wip/tools/neofetch/recipe.toml rename to recipes/wip/sys-info/neofetch/recipe.toml diff --git a/recipes/wip/tools/pciutils/recipe.toml b/recipes/wip/sys-info/pciutils/recipe.toml similarity index 100% rename from recipes/wip/tools/pciutils/recipe.toml rename to recipes/wip/sys-info/pciutils/recipe.toml diff --git a/recipes/wip/tools/pfetch-rs/recipe.toml b/recipes/wip/sys-info/pfetch-rs/recipe.toml similarity index 100% rename from recipes/wip/tools/pfetch-rs/recipe.toml rename to recipes/wip/sys-info/pfetch-rs/recipe.toml diff --git a/recipes/wip/tools/process-viewer/recipe.toml b/recipes/wip/sys-info/process-viewer/recipe.toml similarity index 100% rename from recipes/wip/tools/process-viewer/recipe.toml rename to recipes/wip/sys-info/process-viewer/recipe.toml diff --git a/recipes/wip/tools/procs/recipe.toml b/recipes/wip/sys-info/procs/recipe.toml similarity index 100% rename from recipes/wip/tools/procs/recipe.toml rename to recipes/wip/sys-info/procs/recipe.toml diff --git a/recipes/wip/tools/rfetch/recipe.toml b/recipes/wip/sys-info/rfetch/recipe.toml similarity index 100% rename from recipes/wip/tools/rfetch/recipe.toml rename to recipes/wip/sys-info/rfetch/recipe.toml diff --git a/recipes/wip/tools/rsftch/recipe.toml b/recipes/wip/sys-info/rsftch/recipe.toml similarity index 100% rename from recipes/wip/tools/rsftch/recipe.toml rename to recipes/wip/sys-info/rsftch/recipe.toml diff --git a/recipes/wip/tools/usbutils/recipe.toml b/recipes/wip/sys-info/usbutils/recipe.toml similarity index 100% rename from recipes/wip/tools/usbutils/recipe.toml rename to recipes/wip/sys-info/usbutils/recipe.toml diff --git a/recipes/wip/tools/zeitfetch/recipe.toml b/recipes/wip/sys-info/zeitfetch/recipe.toml similarity index 100% rename from recipes/wip/tools/zeitfetch/recipe.toml rename to recipes/wip/sys-info/zeitfetch/recipe.toml diff --git a/recipes/wip/tools/topgrade/recipe.toml b/recipes/wip/system/topgrade/recipe.toml similarity index 100% rename from recipes/wip/tools/topgrade/recipe.toml rename to recipes/wip/system/topgrade/recipe.toml diff --git a/recipes/wip/tools/starship/recipe.toml b/recipes/wip/terminal/starship/recipe.toml similarity index 100% rename from recipes/wip/tools/starship/recipe.toml rename to recipes/wip/terminal/starship/recipe.toml diff --git a/recipes/wip/tools/termimage/recipe.toml b/recipes/wip/terminal/termimage/recipe.toml similarity index 100% rename from recipes/wip/tools/termimage/recipe.toml rename to recipes/wip/terminal/termimage/recipe.toml diff --git a/recipes/wip/tools/repgrep/recipe.toml b/recipes/wip/text/repgrep/recipe.toml similarity index 100% rename from recipes/wip/tools/repgrep/recipe.toml rename to recipes/wip/text/repgrep/recipe.toml diff --git a/recipes/wip/tools/ripgrep-all/recipe.toml b/recipes/wip/text/ripgrep-all/recipe.toml similarity index 100% rename from recipes/wip/tools/ripgrep-all/recipe.toml rename to recipes/wip/text/ripgrep-all/recipe.toml diff --git a/recipes/wip/tools/other/pastel/recipe.sh b/recipes/wip/tools/pastel/recipe.sh similarity index 100% rename from recipes/wip/tools/other/pastel/recipe.sh rename to recipes/wip/tools/pastel/recipe.sh From f7965a895978fa9d992065f5025598c16feaf17f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 14 Jul 2024 17:49:28 +0000 Subject: [PATCH 2031/3180] Remove recipes --- recipes/wip/tools/bottles/recipe.toml | 6 ------ recipes/wip/tools/parabolic/recipe.toml | 14 -------------- 2 files changed, 20 deletions(-) delete mode 100644 recipes/wip/tools/bottles/recipe.toml delete mode 100644 recipes/wip/tools/parabolic/recipe.toml diff --git a/recipes/wip/tools/bottles/recipe.toml b/recipes/wip/tools/bottles/recipe.toml deleted file mode 100644 index ab9220a4..00000000 --- a/recipes/wip/tools/bottles/recipe.toml +++ /dev/null @@ -1,6 +0,0 @@ -#TODO missing Meson build instructions -[source] -git = "https://github.com/bottlesdevs/Bottles" -rev = "0914b2e34c1800784b26ca52d1a80f06d65252fa" -[build] -template = "custom" diff --git a/recipes/wip/tools/parabolic/recipe.toml b/recipes/wip/tools/parabolic/recipe.toml deleted file mode 100644 index b431172f..00000000 --- a/recipes/wip/tools/parabolic/recipe.toml +++ /dev/null @@ -1,14 +0,0 @@ -#TODO missing script for Cake, see https://github.com/NickvisionApps/Parabolic/blob/main/CONTRIBUTING.md#developing-on-linux -#TODO missing dependencies - https://github.com/NickvisionApps/Parabolic/blob/main/CONTRIBUTING.md#developing-on-linux -[source] -git = "https://github.com/NickvisionApps/Parabolic" -rev = "0aeaf7ab241f7405278352e448372c720ddb85f0" -[build] -template = "custom" -dependencies = [ - "ffmpeg6", - "yt-dlp", - "gtk4", - "libadwaita", - "aria2", -] From da554deb3bcf31d35c0da7c1cf733571f6270235 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 14 Jul 2024 18:26:38 +0000 Subject: [PATCH 2032/3180] Rename and move a recipe --- .../wip/{tools/pastel => image/editors/pastel-editor}/recipe.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{tools/pastel => image/editors/pastel-editor}/recipe.sh (100%) diff --git a/recipes/wip/tools/pastel/recipe.sh b/recipes/wip/image/editors/pastel-editor/recipe.sh similarity index 100% rename from recipes/wip/tools/pastel/recipe.sh rename to recipes/wip/image/editors/pastel-editor/recipe.sh From 8e18563bf934cb42b7ab605c38c0c7109fcfb3ae Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 14 Jul 2024 19:16:48 +0000 Subject: [PATCH 2033/3180] Add recipes --- recipes/wip/demos/colored/recipe.toml | 8 +++++++ recipes/wip/demos/console-rs/recipe.toml | 8 +++++++ recipes/wip/demos/globe-rs/recipe.toml | 9 ++++++++ .../wip/players/spotify-player/recipe.toml | 21 +++++++++++++++++++ recipes/wip/terminal/agg/recipe.toml | 5 +++++ recipes/wip/terminal/pastel/recipe.toml | 5 +++++ recipes/wip/terminal/pls/recipe.toml | 5 +++++ recipes/wip/terminal/so/recipe.toml | 8 +++++++ recipes/wip/terminal/tere/recipe.toml | 5 +++++ recipes/wip/text/mdcat/recipe.toml | 8 +++++++ recipes/wip/text/zee/recipe.toml | 8 +++++++ 11 files changed, 90 insertions(+) create mode 100644 recipes/wip/demos/colored/recipe.toml create mode 100644 recipes/wip/demos/console-rs/recipe.toml create mode 100644 recipes/wip/demos/globe-rs/recipe.toml create mode 100644 recipes/wip/players/spotify-player/recipe.toml create mode 100644 recipes/wip/terminal/agg/recipe.toml create mode 100644 recipes/wip/terminal/pastel/recipe.toml create mode 100644 recipes/wip/terminal/pls/recipe.toml create mode 100644 recipes/wip/terminal/so/recipe.toml create mode 100644 recipes/wip/terminal/tere/recipe.toml create mode 100644 recipes/wip/text/mdcat/recipe.toml create mode 100644 recipes/wip/text/zee/recipe.toml diff --git a/recipes/wip/demos/colored/recipe.toml b/recipes/wip/demos/colored/recipe.toml new file mode 100644 index 00000000..ec395b0b --- /dev/null +++ b/recipes/wip/demos/colored/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/colored-rs/colored" +[build] +template = "custom" +script = """ +cookbook_cargo_examples control custom_colors dynamic_colors most_simple nested_colors +""" diff --git a/recipes/wip/demos/console-rs/recipe.toml b/recipes/wip/demos/console-rs/recipe.toml new file mode 100644 index 00000000..020bc40f --- /dev/null +++ b/recipes/wip/demos/console-rs/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/console-rs/console" +[build] +template = "custom" +script = """ +cookbook_cargo_examples colors colors256 cursor_at keyboard term +""" diff --git a/recipes/wip/demos/globe-rs/recipe.toml b/recipes/wip/demos/globe-rs/recipe.toml new file mode 100644 index 00000000..a9c83c5c --- /dev/null +++ b/recipes/wip/demos/globe-rs/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/adamsky/globe" +[build] +template = "custom" +script = """ +cookbook_cargo_packages globe-cli +mv "${COOKBOOK_STAGE}/usr/bin/globe" "${COOKBOOK_STAGE}/usr/bin/globe-rs" +""" diff --git a/recipes/wip/players/spotify-player/recipe.toml b/recipes/wip/players/spotify-player/recipe.toml new file mode 100644 index 00000000..decb29a5 --- /dev/null +++ b/recipes/wip/players/spotify-player/recipe.toml @@ -0,0 +1,21 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/aome510/spotify-player" +[build] +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +package=spotify_player +"${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --package "${package}" \ + --release + --no-default-features + --rodio-backend + mkdir -pv "${COOKBOOK_STAGE}/usr/bin" + cp -v \ + "target/${TARGET}/release/${package}" \ + "${COOKBOOK_STAGE}/usr/bin/${package}" +""" diff --git a/recipes/wip/terminal/agg/recipe.toml b/recipes/wip/terminal/agg/recipe.toml new file mode 100644 index 00000000..0cc12f40 --- /dev/null +++ b/recipes/wip/terminal/agg/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/asciinema/agg" +[build] +template = "cargo" diff --git a/recipes/wip/terminal/pastel/recipe.toml b/recipes/wip/terminal/pastel/recipe.toml new file mode 100644 index 00000000..2bf28ff0 --- /dev/null +++ b/recipes/wip/terminal/pastel/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/sharkdp/pastel" +[build] +template = "cargo" diff --git a/recipes/wip/terminal/pls/recipe.toml b/recipes/wip/terminal/pls/recipe.toml new file mode 100644 index 00000000..db04dd57 --- /dev/null +++ b/recipes/wip/terminal/pls/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/pls-rs/pls" +[build] +template = "cargo" diff --git a/recipes/wip/terminal/so/recipe.toml b/recipes/wip/terminal/so/recipe.toml new file mode 100644 index 00000000..d32b099d --- /dev/null +++ b/recipes/wip/terminal/so/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/samtay/so" +[build] +template = "custom" +script = """ +cookbook_cargo --no-default-features --features termion-backend +""" diff --git a/recipes/wip/terminal/tere/recipe.toml b/recipes/wip/terminal/tere/recipe.toml new file mode 100644 index 00000000..e4ac6774 --- /dev/null +++ b/recipes/wip/terminal/tere/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/mgunyho/tere" +[build] +template = "cargo" diff --git a/recipes/wip/text/mdcat/recipe.toml b/recipes/wip/text/mdcat/recipe.toml new file mode 100644 index 00000000..231a1730 --- /dev/null +++ b/recipes/wip/text/mdcat/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/swsnr/mdcat" +[build] +template = "custom" +script = """ +cookbook_cargo --features=static +""" diff --git a/recipes/wip/text/zee/recipe.toml b/recipes/wip/text/zee/recipe.toml new file mode 100644 index 00000000..7cec4da9 --- /dev/null +++ b/recipes/wip/text/zee/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/zee-editor/zee" +[build] +template = "custom" +script = """ +cookbook_cargo_packages zee +""" From cc929eb18318e612165779b08a0f2bc58a70490d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 14 Jul 2024 20:09:58 +0000 Subject: [PATCH 2034/3180] Add recipes --- recipes/wip/demos/pipes-rs/recipe.toml | 8 ++++++++ recipes/wip/demos/spinners/recipe.toml | 8 ++++++++ recipes/wip/demos/spinoff/recipe.toml | 8 ++++++++ recipes/wip/science/wthrr/recipe.toml | 8 ++++++++ recipes/wip/sys-info/bb/recipe.toml | 5 +++++ recipes/wip/terminal/thokr/recipe.toml | 5 +++++ recipes/wip/text/csview/recipe.toml | 5 +++++ recipes/wip/text/fsrx/recipe.toml | 5 +++++ recipes/wip/text/jt/recipe.toml | 5 +++++ recipes/wip/text/md-tui/recipe.toml | 5 +++++ recipes/wip/tui/projectable/recipe.toml | 5 +++++ 11 files changed, 67 insertions(+) create mode 100644 recipes/wip/demos/pipes-rs/recipe.toml create mode 100644 recipes/wip/demos/spinners/recipe.toml create mode 100644 recipes/wip/demos/spinoff/recipe.toml create mode 100644 recipes/wip/science/wthrr/recipe.toml create mode 100644 recipes/wip/sys-info/bb/recipe.toml create mode 100644 recipes/wip/terminal/thokr/recipe.toml create mode 100644 recipes/wip/text/csview/recipe.toml create mode 100644 recipes/wip/text/fsrx/recipe.toml create mode 100644 recipes/wip/text/jt/recipe.toml create mode 100644 recipes/wip/text/md-tui/recipe.toml create mode 100644 recipes/wip/tui/projectable/recipe.toml diff --git a/recipes/wip/demos/pipes-rs/recipe.toml b/recipes/wip/demos/pipes-rs/recipe.toml new file mode 100644 index 00000000..c970f372 --- /dev/null +++ b/recipes/wip/demos/pipes-rs/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/lhvy/pipes-rs" +[build] +template = "custom" +script = """ +cookbook_cargo_packages pipe-rs +""" diff --git a/recipes/wip/demos/spinners/recipe.toml b/recipes/wip/demos/spinners/recipe.toml new file mode 100644 index 00000000..505fd3c8 --- /dev/null +++ b/recipes/wip/demos/spinners/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/FGRibreau/spinners" +[build] +template = "custom" +script = """ +cookbook_cargo_examples cycle simple stop_persist stop_symbol timer +""" diff --git a/recipes/wip/demos/spinoff/recipe.toml b/recipes/wip/demos/spinoff/recipe.toml new file mode 100644 index 00000000..b15b7184 --- /dev/null +++ b/recipes/wip/demos/spinoff/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ad4mx/spinoff" +[build] +template = "custom" +script = """ +cookbook_cargo_examples simple stop_and_persist stream +""" diff --git a/recipes/wip/science/wthrr/recipe.toml b/recipes/wip/science/wthrr/recipe.toml new file mode 100644 index 00000000..cb15129b --- /dev/null +++ b/recipes/wip/science/wthrr/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ttytm/wthrr-the-weathercrab" +[build] +template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/sys-info/bb/recipe.toml b/recipes/wip/sys-info/bb/recipe.toml new file mode 100644 index 00000000..147c196e --- /dev/null +++ b/recipes/wip/sys-info/bb/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/epilys/bb" +[build] +template = "cargo" diff --git a/recipes/wip/terminal/thokr/recipe.toml b/recipes/wip/terminal/thokr/recipe.toml new file mode 100644 index 00000000..4b54acaf --- /dev/null +++ b/recipes/wip/terminal/thokr/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/jrnxf/thokr" +[build] +template = "cargo" diff --git a/recipes/wip/text/csview/recipe.toml b/recipes/wip/text/csview/recipe.toml new file mode 100644 index 00000000..8833c875 --- /dev/null +++ b/recipes/wip/text/csview/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/wfxr/csview" +[build] +template = "cargo" diff --git a/recipes/wip/text/fsrx/recipe.toml b/recipes/wip/text/fsrx/recipe.toml new file mode 100644 index 00000000..5606d37c --- /dev/null +++ b/recipes/wip/text/fsrx/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/jrnxf/fsrx" +[build] +template = "cargo" diff --git a/recipes/wip/text/jt/recipe.toml b/recipes/wip/text/jt/recipe.toml new file mode 100644 index 00000000..fd37be9c --- /dev/null +++ b/recipes/wip/text/jt/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/shashwatah/jot" +[build] +template = "cargo" diff --git a/recipes/wip/text/md-tui/recipe.toml b/recipes/wip/text/md-tui/recipe.toml new file mode 100644 index 00000000..452d1a66 --- /dev/null +++ b/recipes/wip/text/md-tui/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/henriklovhaug/md-tui" +[build] +template = "cargo" diff --git a/recipes/wip/tui/projectable/recipe.toml b/recipes/wip/tui/projectable/recipe.toml new file mode 100644 index 00000000..c46bfdee --- /dev/null +++ b/recipes/wip/tui/projectable/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/dzfrias/projectable" +[build] +template = "cargo" From 9ff009f138eb1fa815efb8005f479bf43eb783c4 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 15 Jul 2024 06:35:19 +0000 Subject: [PATCH 2035/3180] Add recipes --- recipes/wip/crypto/qrscan/recipe.toml | 5 +++++ recipes/wip/demos/avt/recipe.toml | 8 ++++++++ recipes/wip/demos/firework-rs/recipe.toml | 9 +++++++++ recipes/wip/demos/rain/recipe.toml | 8 ++++++++ recipes/wip/games/open-world/teloren/recipe.toml | 5 +++++ recipes/wip/graphics/terminal/kakikun/recipe.toml | 5 +++++ recipes/wip/image/other/sic/recipe.toml | 5 +++++ recipes/wip/net/bittorrent/transg-tui/recipe.toml | 8 ++++++++ recipes/wip/news/tuifeed/recipe.toml | 5 +++++ recipes/wip/search/scout/recipe.toml | 5 +++++ recipes/wip/ssh/fastssh/recipe.toml | 5 +++++ recipes/wip/storage/wiper/recipe.toml | 5 +++++ recipes/wip/time/rsclock/recipe.toml | 5 +++++ 13 files changed, 78 insertions(+) create mode 100644 recipes/wip/crypto/qrscan/recipe.toml create mode 100644 recipes/wip/demos/avt/recipe.toml create mode 100644 recipes/wip/demos/firework-rs/recipe.toml create mode 100644 recipes/wip/demos/rain/recipe.toml create mode 100644 recipes/wip/games/open-world/teloren/recipe.toml create mode 100644 recipes/wip/graphics/terminal/kakikun/recipe.toml create mode 100644 recipes/wip/image/other/sic/recipe.toml create mode 100644 recipes/wip/net/bittorrent/transg-tui/recipe.toml create mode 100644 recipes/wip/news/tuifeed/recipe.toml create mode 100644 recipes/wip/search/scout/recipe.toml create mode 100644 recipes/wip/ssh/fastssh/recipe.toml create mode 100644 recipes/wip/storage/wiper/recipe.toml create mode 100644 recipes/wip/time/rsclock/recipe.toml diff --git a/recipes/wip/crypto/qrscan/recipe.toml b/recipes/wip/crypto/qrscan/recipe.toml new file mode 100644 index 00000000..428a3cf9 --- /dev/null +++ b/recipes/wip/crypto/qrscan/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/sayanarijit/qrscan" +[build] +template = "cargo" diff --git a/recipes/wip/demos/avt/recipe.toml b/recipes/wip/demos/avt/recipe.toml new file mode 100644 index 00000000..94a9bbce --- /dev/null +++ b/recipes/wip/demos/avt/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/asciinema/avt" +[build] +template = "custom" +script = """ +cookbook_cargo_examples text +""" diff --git a/recipes/wip/demos/firework-rs/recipe.toml b/recipes/wip/demos/firework-rs/recipe.toml new file mode 100644 index 00000000..104d88aa --- /dev/null +++ b/recipes/wip/demos/firework-rs/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Wayoung7/firework-rs" +[build] +template = "custom" +script = """ +cookbook_cargo_packages firework-rs +cookbook_cargo_examples fountain heart vortex +""" diff --git a/recipes/wip/demos/rain/recipe.toml b/recipes/wip/demos/rain/recipe.toml new file mode 100644 index 00000000..cf22e0ef --- /dev/null +++ b/recipes/wip/demos/rain/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/saschagrunert/rain" +[build] +template = "custom" +script = """ +cookbook_cargo_examples demo +""" diff --git a/recipes/wip/games/open-world/teloren/recipe.toml b/recipes/wip/games/open-world/teloren/recipe.toml new file mode 100644 index 00000000..eda5d83d --- /dev/null +++ b/recipes/wip/games/open-world/teloren/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/zesterer/teloren" +[build] +template = "cargo" diff --git a/recipes/wip/graphics/terminal/kakikun/recipe.toml b/recipes/wip/graphics/terminal/kakikun/recipe.toml new file mode 100644 index 00000000..e4cade25 --- /dev/null +++ b/recipes/wip/graphics/terminal/kakikun/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/file-acomplaint/kakikun" +[build] +template = "cargo" diff --git a/recipes/wip/image/other/sic/recipe.toml b/recipes/wip/image/other/sic/recipe.toml new file mode 100644 index 00000000..b9640779 --- /dev/null +++ b/recipes/wip/image/other/sic/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/foresterre/sic" +[build] +template = "cargo" diff --git a/recipes/wip/net/bittorrent/transg-tui/recipe.toml b/recipes/wip/net/bittorrent/transg-tui/recipe.toml new file mode 100644 index 00000000..36cad969 --- /dev/null +++ b/recipes/wip/net/bittorrent/transg-tui/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/PanAeon/transg-tui" +[build] +template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/news/tuifeed/recipe.toml b/recipes/wip/news/tuifeed/recipe.toml new file mode 100644 index 00000000..2fe8bf32 --- /dev/null +++ b/recipes/wip/news/tuifeed/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/veeso/tuifeed" +[build] +template = "cargo" diff --git a/recipes/wip/search/scout/recipe.toml b/recipes/wip/search/scout/recipe.toml new file mode 100644 index 00000000..4e9acbf4 --- /dev/null +++ b/recipes/wip/search/scout/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/jhbabon/scout" +[build] +template = "cargo" diff --git a/recipes/wip/ssh/fastssh/recipe.toml b/recipes/wip/ssh/fastssh/recipe.toml new file mode 100644 index 00000000..88b91159 --- /dev/null +++ b/recipes/wip/ssh/fastssh/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Julien-R44/fast-ssh" +[build] +template = "cargo" diff --git a/recipes/wip/storage/wiper/recipe.toml b/recipes/wip/storage/wiper/recipe.toml new file mode 100644 index 00000000..6cfe641a --- /dev/null +++ b/recipes/wip/storage/wiper/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ikebastuz/wiper" +[build] +template = "cargo" diff --git a/recipes/wip/time/rsclock/recipe.toml b/recipes/wip/time/rsclock/recipe.toml new file mode 100644 index 00000000..93c8d96b --- /dev/null +++ b/recipes/wip/time/rsclock/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/valebes/rsClock" +[build] +template = "cargo" From 23f9dda6bf8707e86d7c2927b4dd3f504665d37a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 15 Jul 2024 07:47:18 +0000 Subject: [PATCH 2036/3180] Add recipes --- recipes/wip/ai/tgs/recipe.toml | 8 ++++++++ recipes/wip/games/shooter/asciiarena/recipe.toml | 5 +++++ recipes/wip/graphics/terminal/aarty/recipe.toml | 5 +++++ recipes/wip/logging/krapslog/recipe.toml | 5 +++++ recipes/wip/players/kronos/recipe.toml | 5 +++++ recipes/wip/recorders/autocast/recipe.toml | 5 +++++ recipes/wip/terminal/lule/recipe.toml | 5 +++++ recipes/wip/terminal/pipecolor/recipe.toml | 5 +++++ recipes/wip/terminal/toyterm/recipe.toml | 5 +++++ recipes/wip/text/flowfix/recipe.toml | 5 +++++ recipes/wip/text/syncat/recipe.toml | 8 ++++++++ recipes/wip/time/trackie/recipe.toml | 5 +++++ 12 files changed, 66 insertions(+) create mode 100644 recipes/wip/ai/tgs/recipe.toml create mode 100644 recipes/wip/games/shooter/asciiarena/recipe.toml create mode 100644 recipes/wip/graphics/terminal/aarty/recipe.toml create mode 100644 recipes/wip/logging/krapslog/recipe.toml create mode 100644 recipes/wip/players/kronos/recipe.toml create mode 100644 recipes/wip/recorders/autocast/recipe.toml create mode 100644 recipes/wip/terminal/lule/recipe.toml create mode 100644 recipes/wip/terminal/pipecolor/recipe.toml create mode 100644 recipes/wip/terminal/toyterm/recipe.toml create mode 100644 recipes/wip/text/flowfix/recipe.toml create mode 100644 recipes/wip/text/syncat/recipe.toml create mode 100644 recipes/wip/time/trackie/recipe.toml diff --git a/recipes/wip/ai/tgs/recipe.toml b/recipes/wip/ai/tgs/recipe.toml new file mode 100644 index 00000000..aba549aa --- /dev/null +++ b/recipes/wip/ai/tgs/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/warpy-ai/tgs" +[build] +template = "cargo" +dependencies = [ + "libtorch", +] diff --git a/recipes/wip/games/shooter/asciiarena/recipe.toml b/recipes/wip/games/shooter/asciiarena/recipe.toml new file mode 100644 index 00000000..2eb0e618 --- /dev/null +++ b/recipes/wip/games/shooter/asciiarena/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/lemunozm/asciiarena" +[build] +template = "cargo" diff --git a/recipes/wip/graphics/terminal/aarty/recipe.toml b/recipes/wip/graphics/terminal/aarty/recipe.toml new file mode 100644 index 00000000..ec791062 --- /dev/null +++ b/recipes/wip/graphics/terminal/aarty/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/0x61nas/aarty" +[build] +template = "cargo" diff --git a/recipes/wip/logging/krapslog/recipe.toml b/recipes/wip/logging/krapslog/recipe.toml new file mode 100644 index 00000000..1c7ad81d --- /dev/null +++ b/recipes/wip/logging/krapslog/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/acj/krapslog-rs" +[build] +template = "cargo" diff --git a/recipes/wip/players/kronos/recipe.toml b/recipes/wip/players/kronos/recipe.toml new file mode 100644 index 00000000..309f1fa3 --- /dev/null +++ b/recipes/wip/players/kronos/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/TrevorSatori/kronos" +[build] +template = "cargo" diff --git a/recipes/wip/recorders/autocast/recipe.toml b/recipes/wip/recorders/autocast/recipe.toml new file mode 100644 index 00000000..de7c98b7 --- /dev/null +++ b/recipes/wip/recorders/autocast/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/k9withabone/autocast" +[build] +template = "cargo" diff --git a/recipes/wip/terminal/lule/recipe.toml b/recipes/wip/terminal/lule/recipe.toml new file mode 100644 index 00000000..58ba216c --- /dev/null +++ b/recipes/wip/terminal/lule/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/warpwm/lule" +[build] +template = "cargo" diff --git a/recipes/wip/terminal/pipecolor/recipe.toml b/recipes/wip/terminal/pipecolor/recipe.toml new file mode 100644 index 00000000..9abf0b6a --- /dev/null +++ b/recipes/wip/terminal/pipecolor/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/dalance/pipecolor" +[build] +template = "cargo" diff --git a/recipes/wip/terminal/toyterm/recipe.toml b/recipes/wip/terminal/toyterm/recipe.toml new file mode 100644 index 00000000..361c371d --- /dev/null +++ b/recipes/wip/terminal/toyterm/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/algon-320/toyterm" +[build] +template = "cargo" diff --git a/recipes/wip/text/flowfix/recipe.toml b/recipes/wip/text/flowfix/recipe.toml new file mode 100644 index 00000000..77c41933 --- /dev/null +++ b/recipes/wip/text/flowfix/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/warpwm/flowfix" +[build] +template = "cargo" diff --git a/recipes/wip/text/syncat/recipe.toml b/recipes/wip/text/syncat/recipe.toml new file mode 100644 index 00000000..c8bf9bae --- /dev/null +++ b/recipes/wip/text/syncat/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/foxfriends/syncat" +[build] +template = "custom" +script = """ +cookbook_cargo_packages syncat +""" diff --git a/recipes/wip/time/trackie/recipe.toml b/recipes/wip/time/trackie/recipe.toml new file mode 100644 index 00000000..c73549b4 --- /dev/null +++ b/recipes/wip/time/trackie/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/beatbrot/trackie" +[build] +template = "cargo" From 4f23474a808c72f3cab7159b79600816876bb06c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 15 Jul 2024 08:53:07 +0000 Subject: [PATCH 2037/3180] Add recipes --- recipes/wip/demos/blockish/recipe.toml | 8 ++++++++ recipes/wip/demos/blockishfire/recipe.toml | 5 +++++ recipes/wip/demos/doomfire/recipe.toml | 8 ++++++++ recipes/wip/demos/pixels/recipe.toml | 8 ++++++++ recipes/wip/demos/rustubble/recipe.toml | 8 ++++++++ recipes/wip/games/other/terdle/recipe.toml | 5 +++++ recipes/wip/games/strategy/mazter/recipe.toml | 5 +++++ recipes/wip/net/lan/ztui/recipe.toml | 5 +++++ recipes/wip/players/spoify/recipe.toml | 5 +++++ recipes/wip/players/tap/recipe.toml | 5 +++++ recipes/wip/security/otti/recipe.toml | 5 +++++ recipes/wip/terminal/ghostie/recipe.toml | 5 +++++ recipes/wip/terminal/terminal-yt/recipe.toml | 5 +++++ recipes/wip/text/revi/recipe.toml | 5 +++++ recipes/wip/text/svgbob/recipe.toml | 8 ++++++++ recipes/wip/time/litime/recipe.toml | 5 +++++ recipes/wip/time/timer-rs/recipe.toml | 8 ++++++++ 17 files changed, 103 insertions(+) create mode 100644 recipes/wip/demos/blockish/recipe.toml create mode 100644 recipes/wip/demos/blockishfire/recipe.toml create mode 100644 recipes/wip/demos/doomfire/recipe.toml create mode 100644 recipes/wip/demos/pixels/recipe.toml create mode 100644 recipes/wip/demos/rustubble/recipe.toml create mode 100644 recipes/wip/games/other/terdle/recipe.toml create mode 100644 recipes/wip/games/strategy/mazter/recipe.toml create mode 100644 recipes/wip/net/lan/ztui/recipe.toml create mode 100644 recipes/wip/players/spoify/recipe.toml create mode 100644 recipes/wip/players/tap/recipe.toml create mode 100644 recipes/wip/security/otti/recipe.toml create mode 100644 recipes/wip/terminal/ghostie/recipe.toml create mode 100644 recipes/wip/terminal/terminal-yt/recipe.toml create mode 100644 recipes/wip/text/revi/recipe.toml create mode 100644 recipes/wip/text/svgbob/recipe.toml create mode 100644 recipes/wip/time/litime/recipe.toml create mode 100644 recipes/wip/time/timer-rs/recipe.toml diff --git a/recipes/wip/demos/blockish/recipe.toml b/recipes/wip/demos/blockish/recipe.toml new file mode 100644 index 00000000..a3fff317 --- /dev/null +++ b/recipes/wip/demos/blockish/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/yazgoo/blockish" +[build] +template = "custom" +script = """ +cookbook_cargo_examples euc gif tiny-skia +""" diff --git a/recipes/wip/demos/blockishfire/recipe.toml b/recipes/wip/demos/blockishfire/recipe.toml new file mode 100644 index 00000000..2fd1819a --- /dev/null +++ b/recipes/wip/demos/blockishfire/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/yazgoo/blockishfire" +[build] +template = "cargo" diff --git a/recipes/wip/demos/doomfire/recipe.toml b/recipes/wip/demos/doomfire/recipe.toml new file mode 100644 index 00000000..b2e4eb33 --- /dev/null +++ b/recipes/wip/demos/doomfire/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/r-marques/doomfire" +[build] +template = "custom" +script = """ +cookbook_cargo_packages doomfire-minifb +""" diff --git a/recipes/wip/demos/pixels/recipe.toml b/recipes/wip/demos/pixels/recipe.toml new file mode 100644 index 00000000..b62c3983 --- /dev/null +++ b/recipes/wip/demos/pixels/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/parasyte/pixels" +[build] +template = "custom" +script = """ +cookbook_cargo_examples conway invaders minimal-egui minimal-winit tiny-skia-winit +""" diff --git a/recipes/wip/demos/rustubble/recipe.toml b/recipes/wip/demos/rustubble/recipe.toml new file mode 100644 index 00000000..22edc29b --- /dev/null +++ b/recipes/wip/demos/rustubble/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/warpy-ai/rustubble" +[build] +template = "custom" +script = """ +cookbook_cargo_examples list_example menu_list_example poem progress_bar_example spinner_example stopwatch_example table_example text_area_example text_input_example timer_example viewport_example +""" diff --git a/recipes/wip/games/other/terdle/recipe.toml b/recipes/wip/games/other/terdle/recipe.toml new file mode 100644 index 00000000..8f420bed --- /dev/null +++ b/recipes/wip/games/other/terdle/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/neelkarma/terdle" +[build] +template = "cargo" diff --git a/recipes/wip/games/strategy/mazter/recipe.toml b/recipes/wip/games/strategy/mazter/recipe.toml new file mode 100644 index 00000000..c98c32ee --- /dev/null +++ b/recipes/wip/games/strategy/mazter/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Canop/mazter" +[build] +template = "cargo" diff --git a/recipes/wip/net/lan/ztui/recipe.toml b/recipes/wip/net/lan/ztui/recipe.toml new file mode 100644 index 00000000..dbb916c6 --- /dev/null +++ b/recipes/wip/net/lan/ztui/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/erikh/ztui" +[build] +template = "cargo" diff --git a/recipes/wip/players/spoify/recipe.toml b/recipes/wip/players/spoify/recipe.toml new file mode 100644 index 00000000..4b838f9d --- /dev/null +++ b/recipes/wip/players/spoify/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/slyeet03/spoify" +[build] +template = "cargo" diff --git a/recipes/wip/players/tap/recipe.toml b/recipes/wip/players/tap/recipe.toml new file mode 100644 index 00000000..e555a2f9 --- /dev/null +++ b/recipes/wip/players/tap/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/timdubbins/tap" +[build] +template = "cargo" diff --git a/recipes/wip/security/otti/recipe.toml b/recipes/wip/security/otti/recipe.toml new file mode 100644 index 00000000..ed611072 --- /dev/null +++ b/recipes/wip/security/otti/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/dnaka91/otti" +[build] +template = "cargo" diff --git a/recipes/wip/terminal/ghostie/recipe.toml b/recipes/wip/terminal/ghostie/recipe.toml new file mode 100644 index 00000000..2fd57e44 --- /dev/null +++ b/recipes/wip/terminal/ghostie/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/attriaayush/ghostie" +[build] +template = "cargo" diff --git a/recipes/wip/terminal/terminal-yt/recipe.toml b/recipes/wip/terminal/terminal-yt/recipe.toml new file mode 100644 index 00000000..81c4ae2c --- /dev/null +++ b/recipes/wip/terminal/terminal-yt/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/jooooscha/terminal-yt" +[build] +template = "cargo" diff --git a/recipes/wip/text/revi/recipe.toml b/recipes/wip/text/revi/recipe.toml new file mode 100644 index 00000000..b260637c --- /dev/null +++ b/recipes/wip/text/revi/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/revi-editor/revi" +[build] +template = "cargo" diff --git a/recipes/wip/text/svgbob/recipe.toml b/recipes/wip/text/svgbob/recipe.toml new file mode 100644 index 00000000..fa814e64 --- /dev/null +++ b/recipes/wip/text/svgbob/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ivanceras/svgbob" +[build] +template = "custom" +script = """ +cookbook_cargo_packages svgbob_cli +""" diff --git a/recipes/wip/time/litime/recipe.toml b/recipes/wip/time/litime/recipe.toml new file mode 100644 index 00000000..0c55cc21 --- /dev/null +++ b/recipes/wip/time/litime/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ikornaselur/litime" +[build] +template = "cargo" diff --git a/recipes/wip/time/timer-rs/recipe.toml b/recipes/wip/time/timer-rs/recipe.toml new file mode 100644 index 00000000..4a7209ca --- /dev/null +++ b/recipes/wip/time/timer-rs/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/pando85/timer" +[build] +template = "custom" +script = """ +cookbook_cargo_packages timer_core +""" From 61dfd02d4e2f9857f9d7bec423bb0b012c236e34 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 15 Jul 2024 09:18:59 +0000 Subject: [PATCH 2038/3180] Add recipes --- recipes/wip/demos/mage/recipe.toml | 8 ++++++++ recipes/wip/dev/analysis/hex/recipe.toml | 5 +++++ recipes/wip/graphics/terminal/ascii-image/recipe.toml | 5 +++++ recipes/wip/graphics/terminal/tapciify/recipe.toml | 5 +++++ 4 files changed, 23 insertions(+) create mode 100644 recipes/wip/demos/mage/recipe.toml create mode 100644 recipes/wip/dev/analysis/hex/recipe.toml create mode 100644 recipes/wip/graphics/terminal/ascii-image/recipe.toml create mode 100644 recipes/wip/graphics/terminal/tapciify/recipe.toml diff --git a/recipes/wip/demos/mage/recipe.toml b/recipes/wip/demos/mage/recipe.toml new file mode 100644 index 00000000..db770d1c --- /dev/null +++ b/recipes/wip/demos/mage/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/baad-c0de/mage-core" +[build] +template = "custom" +script = """ +cookbook_cargo_examples basic font3 hello +""" diff --git a/recipes/wip/dev/analysis/hex/recipe.toml b/recipes/wip/dev/analysis/hex/recipe.toml new file mode 100644 index 00000000..c3a8f113 --- /dev/null +++ b/recipes/wip/dev/analysis/hex/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/sitkevij/hex" +[build] +template = "cargo" diff --git a/recipes/wip/graphics/terminal/ascii-image/recipe.toml b/recipes/wip/graphics/terminal/ascii-image/recipe.toml new file mode 100644 index 00000000..e038e454 --- /dev/null +++ b/recipes/wip/graphics/terminal/ascii-image/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/kpberry/image-to-ascii" +[build] +template = "cargo" diff --git a/recipes/wip/graphics/terminal/tapciify/recipe.toml b/recipes/wip/graphics/terminal/tapciify/recipe.toml new file mode 100644 index 00000000..1b321c9f --- /dev/null +++ b/recipes/wip/graphics/terminal/tapciify/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/tapnisu/tapciify" +[build] +template = "cargo" From 274d13427bf01a5afbf662842c538fd8424f871e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 15 Jul 2024 09:25:09 +0000 Subject: [PATCH 2039/3180] Update and move recipes --- recipes/wip/graphics/{other => editors}/texel/recipe.toml | 5 ++++- recipes/wip/{terminal => ssh}/mosh/recipe.toml | 0 recipes/wip/{terminal => ssh}/openssh/recipe.toml | 0 recipes/wip/{terminal => ssh}/openssh/redox.patch | 0 recipes/wip/{fuse => ssh}/sshfs/recipe.toml | 0 recipes/wip/{tui => ssh}/sshs/recipe.toml | 0 recipes/wip/{net/other => }/ssh/sshx/recipe.toml | 0 7 files changed, 4 insertions(+), 1 deletion(-) rename recipes/wip/graphics/{other => editors}/texel/recipe.toml (55%) rename recipes/wip/{terminal => ssh}/mosh/recipe.toml (100%) rename recipes/wip/{terminal => ssh}/openssh/recipe.toml (100%) rename recipes/wip/{terminal => ssh}/openssh/redox.patch (100%) rename recipes/wip/{fuse => ssh}/sshfs/recipe.toml (100%) rename recipes/wip/{tui => ssh}/sshs/recipe.toml (100%) rename recipes/wip/{net/other => }/ssh/sshx/recipe.toml (100%) diff --git a/recipes/wip/graphics/other/texel/recipe.toml b/recipes/wip/graphics/editors/texel/recipe.toml similarity index 55% rename from recipes/wip/graphics/other/texel/recipe.toml rename to recipes/wip/graphics/editors/texel/recipe.toml index 3e9cbfb3..ab2e14cd 100644 --- a/recipes/wip/graphics/other/texel/recipe.toml +++ b/recipes/wip/graphics/editors/texel/recipe.toml @@ -2,4 +2,7 @@ [source] git = "https://github.com/almindor/texel" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo --no-default-features --features ion +""" diff --git a/recipes/wip/terminal/mosh/recipe.toml b/recipes/wip/ssh/mosh/recipe.toml similarity index 100% rename from recipes/wip/terminal/mosh/recipe.toml rename to recipes/wip/ssh/mosh/recipe.toml diff --git a/recipes/wip/terminal/openssh/recipe.toml b/recipes/wip/ssh/openssh/recipe.toml similarity index 100% rename from recipes/wip/terminal/openssh/recipe.toml rename to recipes/wip/ssh/openssh/recipe.toml diff --git a/recipes/wip/terminal/openssh/redox.patch b/recipes/wip/ssh/openssh/redox.patch similarity index 100% rename from recipes/wip/terminal/openssh/redox.patch rename to recipes/wip/ssh/openssh/redox.patch diff --git a/recipes/wip/fuse/sshfs/recipe.toml b/recipes/wip/ssh/sshfs/recipe.toml similarity index 100% rename from recipes/wip/fuse/sshfs/recipe.toml rename to recipes/wip/ssh/sshfs/recipe.toml diff --git a/recipes/wip/tui/sshs/recipe.toml b/recipes/wip/ssh/sshs/recipe.toml similarity index 100% rename from recipes/wip/tui/sshs/recipe.toml rename to recipes/wip/ssh/sshs/recipe.toml diff --git a/recipes/wip/net/other/ssh/sshx/recipe.toml b/recipes/wip/ssh/sshx/recipe.toml similarity index 100% rename from recipes/wip/net/other/ssh/sshx/recipe.toml rename to recipes/wip/ssh/sshx/recipe.toml From 5ab688b8c4d4a9ded278dc4dc0166acf55bb5111 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 15 Jul 2024 18:21:05 +0000 Subject: [PATCH 2040/3180] Remove recipes --- recipes/wip/benchmarks/canbench/recipe.toml | 8 -------- recipes/wip/dev/other/dfx/recipe.toml | 8 -------- 2 files changed, 16 deletions(-) delete mode 100644 recipes/wip/benchmarks/canbench/recipe.toml delete mode 100644 recipes/wip/dev/other/dfx/recipe.toml diff --git a/recipes/wip/benchmarks/canbench/recipe.toml b/recipes/wip/benchmarks/canbench/recipe.toml deleted file mode 100644 index 383443b2..00000000 --- a/recipes/wip/benchmarks/canbench/recipe.toml +++ /dev/null @@ -1,8 +0,0 @@ -#TODO compiled but not tested -[source] -git = "https://github.com/dfinity/canbench" -[build] -template = "custom" -script = """ -cookbook_cargo_packages canbench -""" diff --git a/recipes/wip/dev/other/dfx/recipe.toml b/recipes/wip/dev/other/dfx/recipe.toml deleted file mode 100644 index 1d4214da..00000000 --- a/recipes/wip/dev/other/dfx/recipe.toml +++ /dev/null @@ -1,8 +0,0 @@ -#TODO libloading crate error -[source] -git = "https://github.com/dfinity/sdk" -[build] -template = "custom" -script = """ -cookbook_cargo_packages dfx -""" From c7d5aaa2b978f6a9c4c6ff47f218ff2077a4487b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 15 Jul 2024 18:31:39 +0000 Subject: [PATCH 2041/3180] Add a recipe --- recipes/wip/libs/ml/libtorch/recipe.toml | 25 ++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 recipes/wip/libs/ml/libtorch/recipe.toml diff --git a/recipes/wip/libs/ml/libtorch/recipe.toml b/recipes/wip/libs/ml/libtorch/recipe.toml new file mode 100644 index 00000000..eceb2687 --- /dev/null +++ b/recipes/wip/libs/ml/libtorch/recipe.toml @@ -0,0 +1,25 @@ +#TODO maybe incomplete script, see https://github.com/pytorch/pytorch/blob/main/docs/libtorch.rst#building-libtorch-using-cmake +[source] +git = "https://github.com/pytorch/pytorch" +branch = "release/2.3" +[build] +template = "custom" +script = """ +mkdir pytorch-build +cd pytorch-build +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On + -DBUILD_SHARED_LIBS:BOOL=OFF + -DCMAKE_BUILD_TYPE:STRING=Release -DPYTHON_EXECUTABLE:PATH=`which python3` -DCMAKE_INSTALL_PREFIX:PATH=../pytorch-install ../pytorch +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" From f0717499c7d397e3a179c80c0ea8800fc0b43722 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 15 Jul 2024 18:54:52 +0000 Subject: [PATCH 2042/3180] Update the glew recipe TODO --- recipes/wip/libs/other/glew/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/libs/other/glew/recipe.toml b/recipes/wip/libs/other/glew/recipe.toml index a4aa66eb..ac93c3ee 100644 --- a/recipes/wip/libs/other/glew/recipe.toml +++ b/recipes/wip/libs/other/glew/recipe.toml @@ -1,5 +1,5 @@ #TODO missing script for "make", see https://github.com/nigels-com/glew#linux-and-mac -#TODO Mesa EGL is supported, verify if X11 is still required +#TODO add the GLEW_OSMESA flag to enable the Mesa off-screen rendering [source] git = "https://github.com/nigels-com/glew" rev = "9fb23c3e61cbd2d581e33ff7d8579b572b38ee26" From 6348d00f9fb13ac02a260cccfe8e760780e1d78a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 16 Jul 2024 07:04:07 +0000 Subject: [PATCH 2043/3180] Add recipes --- recipes/wip/news/moccasin/recipe.toml | 5 +++++ recipes/wip/sound/ruxguitar/recipe.toml | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 recipes/wip/news/moccasin/recipe.toml create mode 100644 recipes/wip/sound/ruxguitar/recipe.toml diff --git a/recipes/wip/news/moccasin/recipe.toml b/recipes/wip/news/moccasin/recipe.toml new file mode 100644 index 00000000..1572ebc7 --- /dev/null +++ b/recipes/wip/news/moccasin/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/rektdeckard/moccasin" +[build] +template = "cargo" diff --git a/recipes/wip/sound/ruxguitar/recipe.toml b/recipes/wip/sound/ruxguitar/recipe.toml new file mode 100644 index 00000000..320bc654 --- /dev/null +++ b/recipes/wip/sound/ruxguitar/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/agourlay/ruxguitar" +[build] +template = "cargo" From db3dce54d4732dbdf5810c6c4f2f3a199473d792 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 18 Jul 2024 20:13:54 +0000 Subject: [PATCH 2044/3180] Change the wget recipe dependency --- recipes/wip/net/download/wget/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/wip/net/download/wget/recipe.toml b/recipes/wip/net/download/wget/recipe.toml index 753b0ee5..81b5d2cd 100644 --- a/recipes/wip/net/download/wget/recipe.toml +++ b/recipes/wip/net/download/wget/recipe.toml @@ -1,8 +1,8 @@ -#TODO make GnuTLS work +#TODO not compiled or tested [source] tar = "https://ftp.gnu.org/gnu/wget/wget-1.21.4.tar.gz" [build] template = "configure" dependencies = [ - "gnutls", + "openssl1", ] From e31cafff97190c597d5662093edd184cf4a786d4 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 18 Jul 2024 20:37:54 +0000 Subject: [PATCH 2045/3180] Update the wget recipe --- recipes/wip/net/download/wget/recipe.toml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/recipes/wip/net/download/wget/recipe.toml b/recipes/wip/net/download/wget/recipe.toml index 81b5d2cd..33a7cc4f 100644 --- a/recipes/wip/net/download/wget/recipe.toml +++ b/recipes/wip/net/download/wget/recipe.toml @@ -2,7 +2,13 @@ [source] tar = "https://ftp.gnu.org/gnu/wget/wget-1.21.4.tar.gz" [build] -template = "configure" +template = "custom" dependencies = [ "openssl1", ] +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --with-ssl=openssl +) +cookbook_configure +""" From b1b6fe27d586c1987a2f37a623e74ebb6ee5746a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 18 Jul 2024 22:48:45 +0000 Subject: [PATCH 2046/3180] Add recipes --- recipes/wip/dev/graphics/sh4der-jockey/recipe.toml | 5 +++++ recipes/wip/dev/ide/asm-lsp/recipe.toml | 5 +++++ recipes/wip/games/rpg/kingslayer/recipe.toml | 9 +++++++++ recipes/wip/terminal/rterm/recipe.toml | 5 +++++ 4 files changed, 24 insertions(+) create mode 100644 recipes/wip/dev/graphics/sh4der-jockey/recipe.toml create mode 100644 recipes/wip/dev/ide/asm-lsp/recipe.toml create mode 100644 recipes/wip/games/rpg/kingslayer/recipe.toml create mode 100644 recipes/wip/terminal/rterm/recipe.toml diff --git a/recipes/wip/dev/graphics/sh4der-jockey/recipe.toml b/recipes/wip/dev/graphics/sh4der-jockey/recipe.toml new file mode 100644 index 00000000..82e29401 --- /dev/null +++ b/recipes/wip/dev/graphics/sh4der-jockey/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/slerpyyy/sh4der-jockey" +[build] +template = "cargo" diff --git a/recipes/wip/dev/ide/asm-lsp/recipe.toml b/recipes/wip/dev/ide/asm-lsp/recipe.toml new file mode 100644 index 00000000..7529d44e --- /dev/null +++ b/recipes/wip/dev/ide/asm-lsp/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/bergercookie/asm-lsp" +[build] +template = "cargo" diff --git a/recipes/wip/games/rpg/kingslayer/recipe.toml b/recipes/wip/games/rpg/kingslayer/recipe.toml new file mode 100644 index 00000000..3d18ee69 --- /dev/null +++ b/recipes/wip/games/rpg/kingslayer/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Zaechus/kingslayer" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/kingslayer +cp -rv "${COOKBOOK_SOURCE}"/worlds/* "${COOKBOOK_STAGE}"/usr/share/kingslayer +""" diff --git a/recipes/wip/terminal/rterm/recipe.toml b/recipes/wip/terminal/rterm/recipe.toml new file mode 100644 index 00000000..66cab250 --- /dev/null +++ b/recipes/wip/terminal/rterm/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/mechpen/rterm" +[build] +template = "cargo" From 6a683767237077f34f723775ec0f4c3f73ec6cc5 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 18 Jul 2024 22:54:50 +0000 Subject: [PATCH 2047/3180] Update a TODO --- recipes/wip/graphics/other/simp/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/graphics/other/simp/recipe.toml b/recipes/wip/graphics/other/simp/recipe.toml index 152628e9..07d99d35 100644 --- a/recipes/wip/graphics/other/simp/recipe.toml +++ b/recipes/wip/graphics/other/simp/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing dependencies, see https://github.com/Kl4rry/simp#system-dependencies +#TODO not compiled or tested [source] git = "https://github.com/Kl4rry/simp" [build] From cba5c0e56b30d6ef6e07319dfb825a6357971b7c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 18 Jul 2024 23:05:53 +0000 Subject: [PATCH 2048/3180] Add recipes --- recipes/wip/games/math/sudoku-rs/recipe.toml | 5 +++++ recipes/wip/graphics/terminal/display3d/recipe.toml | 10 ++++++++++ recipes/wip/science/cosmic-weather/recipe.toml | 5 +++++ recipes/wip/terminal/useenv/recipe.toml | 5 +++++ 4 files changed, 25 insertions(+) create mode 100644 recipes/wip/games/math/sudoku-rs/recipe.toml create mode 100644 recipes/wip/graphics/terminal/display3d/recipe.toml create mode 100644 recipes/wip/science/cosmic-weather/recipe.toml create mode 100644 recipes/wip/terminal/useenv/recipe.toml diff --git a/recipes/wip/games/math/sudoku-rs/recipe.toml b/recipes/wip/games/math/sudoku-rs/recipe.toml new file mode 100644 index 00000000..6111be19 --- /dev/null +++ b/recipes/wip/games/math/sudoku-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/crazymerlyn/sudoku" +[build] +template = "cargo" diff --git a/recipes/wip/graphics/terminal/display3d/recipe.toml b/recipes/wip/graphics/terminal/display3d/recipe.toml new file mode 100644 index 00000000..eaf0eb27 --- /dev/null +++ b/recipes/wip/graphics/terminal/display3d/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/redpenguinyt/display3d" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/display3d +cp -rv "${COOKBOOK_SOURCE}"/resources/* "${COOKBOOK_STAGE}"/usr/share/display3d +cookbook_cargo +""" diff --git a/recipes/wip/science/cosmic-weather/recipe.toml b/recipes/wip/science/cosmic-weather/recipe.toml new file mode 100644 index 00000000..b837c813 --- /dev/null +++ b/recipes/wip/science/cosmic-weather/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/jwestall/cosmic-weather" +[build] +template = "cargo" diff --git a/recipes/wip/terminal/useenv/recipe.toml b/recipes/wip/terminal/useenv/recipe.toml new file mode 100644 index 00000000..a65a06b0 --- /dev/null +++ b/recipes/wip/terminal/useenv/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/EliahKagan/useenv" +[build] +template = "cargo" From b8b61ae3c233025c9119679565e827eedaf02d66 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 18 Jul 2024 23:16:40 +0000 Subject: [PATCH 2049/3180] Add a missing command in a recipe --- recipes/wip/games/rpg/kingslayer/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/games/rpg/kingslayer/recipe.toml b/recipes/wip/games/rpg/kingslayer/recipe.toml index 3d18ee69..b57b13dd 100644 --- a/recipes/wip/games/rpg/kingslayer/recipe.toml +++ b/recipes/wip/games/rpg/kingslayer/recipe.toml @@ -6,4 +6,5 @@ template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/kingslayer cp -rv "${COOKBOOK_SOURCE}"/worlds/* "${COOKBOOK_STAGE}"/usr/share/kingslayer +cookbook_cargo """ From ed2d505c18b0cd47ebdda3145145ea1965ec9661 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 18 Jul 2024 23:40:27 +0000 Subject: [PATCH 2050/3180] Add a recipe --- recipes/wip/games/open-world/asciicker/recipe.toml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 recipes/wip/games/open-world/asciicker/recipe.toml diff --git a/recipes/wip/games/open-world/asciicker/recipe.toml b/recipes/wip/games/open-world/asciicker/recipe.toml new file mode 100644 index 00000000..f8a68c41 --- /dev/null +++ b/recipes/wip/games/open-world/asciicker/recipe.toml @@ -0,0 +1,7 @@ +#TODO determine how to build this +# it seems to have a sdl2 frontend +[source] +git = "https://github.com/msokalski/asciicker" +rev = "8ff75d0c5a8d2745a8ad6a8a841dd31a46e81635" +[build] +template = "custom" From a8e958845d91803e227c056d48427f5a3f16ea89 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 19 Jul 2024 00:21:02 +0000 Subject: [PATCH 2051/3180] Update a recipe --- recipes/wip/games/open-world/asciicker/recipe.toml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/recipes/wip/games/open-world/asciicker/recipe.toml b/recipes/wip/games/open-world/asciicker/recipe.toml index f8a68c41..2d6e1c9b 100644 --- a/recipes/wip/games/open-world/asciicker/recipe.toml +++ b/recipes/wip/games/open-world/asciicker/recipe.toml @@ -1,7 +1,14 @@ -#TODO determine how to build this -# it seems to have a sdl2 frontend +#TODO missing script for gnu make +#TODO build the game, term and server +#TODO build the terminal and sdl2 frontends +# makeflags: -DSERVER -DGAME -DUSE_SDL2 -DPURE_TERM -DUSE_GPM [source] git = "https://github.com/msokalski/asciicker" rev = "8ff75d0c5a8d2745a8ad6a8a841dd31a46e81635" [build] template = "custom" +dependencies = [ + "mesa", + "sdl2", + "libgpm", +] From 7497e8663825ac3a0d80fb49b91383becf01b893 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 19 Jul 2024 00:26:45 +0000 Subject: [PATCH 2052/3180] Complete a recipe --- recipes/wip/libs/other/libgpm/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/wip/libs/other/libgpm/recipe.toml b/recipes/wip/libs/other/libgpm/recipe.toml index 7899340c..3348c91d 100644 --- a/recipes/wip/libs/other/libgpm/recipe.toml +++ b/recipes/wip/libs/other/libgpm/recipe.toml @@ -1,5 +1,5 @@ -#TODO missing script for building +#TODO not compiled or tested [source] tar = "https://www.nico.schottelius.org/software/gpm/archives/gpm-1.20.7.tar.bz2" [build] -template = "custom" +template = "configure" From 6ab5af3cb3292b2b620ef4961fe047e6635f02fa Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 20 Jul 2024 00:40:25 +0000 Subject: [PATCH 2053/3180] Move wget to the working recipes --- recipes/{wip => }/net/download/wget/recipe.toml | 1 - 1 file changed, 1 deletion(-) rename recipes/{wip => }/net/download/wget/recipe.toml (88%) diff --git a/recipes/wip/net/download/wget/recipe.toml b/recipes/net/download/wget/recipe.toml similarity index 88% rename from recipes/wip/net/download/wget/recipe.toml rename to recipes/net/download/wget/recipe.toml index 33a7cc4f..dd4f52e6 100644 --- a/recipes/wip/net/download/wget/recipe.toml +++ b/recipes/net/download/wget/recipe.toml @@ -1,4 +1,3 @@ -#TODO not compiled or tested [source] tar = "https://ftp.gnu.org/gnu/wget/wget-1.21.4.tar.gz" [build] From 0fd17730b445ec993d60fbcf42b22f957edaeedf Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 20 Jul 2024 01:20:22 +0000 Subject: [PATCH 2054/3180] Update recipes --- recipes/wip/text/kibi/recipe.toml | 9 +++++++-- recipes/wip/text/zed/recipe.toml | 5 +++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/recipes/wip/text/kibi/recipe.toml b/recipes/wip/text/kibi/recipe.toml index 5e90d535..828a4270 100644 --- a/recipes/wip/text/kibi/recipe.toml +++ b/recipes/wip/text/kibi/recipe.toml @@ -1,5 +1,10 @@ -#TODO move to proper category +#TODO promote [source] git = "https://github.com/ilai-deutel/kibi" [build] -template = "cargo" +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/kibi +cp -rv "${COOKBOOK_SOURCE}"/syntax.d "${COOKBOOK_STAGE}"/usr/share/kibi +cookbook_cargo +""" diff --git a/recipes/wip/text/zed/recipe.toml b/recipes/wip/text/zed/recipe.toml index eb2f2340..673b6f4f 100644 --- a/recipes/wip/text/zed/recipe.toml +++ b/recipes/wip/text/zed/recipe.toml @@ -1,5 +1,6 @@ #TODO not compiled or tested #TODO maybe missing dependencies, see https://github.com/zed-industries/zed/blob/main/script/linux#L15 +#TODO build the gui ("zed" package) once we have gpu drivers to render vulkan at decent fps # build instructions - https://zed.dev/docs/development/linux [source] git = "https://github.com/zed-industries/zed" @@ -14,7 +15,7 @@ dependencies = [ "sqlite3", ] script = """ -cookbook_cargo_packages cli zed +cookbook_cargo_packages cli mv "${COOKBOOK_STAGE}/usr/bin/cli" "${COOKBOOK_STAGE}/usr/bin/zed-cli" -mv "${COOKBOOK_STAGE}/usr/bin/zed" "${COOKBOOK_STAGE}/usr/bin/zed-editor" +#mv "${COOKBOOK_STAGE}/usr/bin/zed" "${COOKBOOK_STAGE}/usr/bin/zed-editor" """ From 50963550a6fb8ae8232d28e9083308c47d5dc77d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 20 Jul 2024 02:11:12 +0000 Subject: [PATCH 2055/3180] Add recipes --- recipes/wip/demos/cubecl/recipe.toml | 18 ++++++++++++++++++ recipes/wip/sound/piano-rs/recipe.toml | 10 ++++++++++ 2 files changed, 28 insertions(+) create mode 100644 recipes/wip/demos/cubecl/recipe.toml create mode 100644 recipes/wip/sound/piano-rs/recipe.toml diff --git a/recipes/wip/demos/cubecl/recipe.toml b/recipes/wip/demos/cubecl/recipe.toml new file mode 100644 index 00000000..9aa8e268 --- /dev/null +++ b/recipes/wip/demos/cubecl/recipe.toml @@ -0,0 +1,18 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/tracel-ai/cubecl" +[build] +template = "custom" +script = """ +package=gelu +"${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --package "${package}" \ + --release + --no-default-features + --wgpu + mkdir -pv "${COOKBOOK_STAGE}/usr/bin" + cp -v \ + "target/${TARGET}/release/${package}" \ + "${COOKBOOK_STAGE}/usr/bin/${package}" +""" diff --git a/recipes/wip/sound/piano-rs/recipe.toml b/recipes/wip/sound/piano-rs/recipe.toml new file mode 100644 index 00000000..8eea5378 --- /dev/null +++ b/recipes/wip/sound/piano-rs/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ritiek/piano-rs" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/piano-rs +cp -rv "${COOKBOOK_SOURCE}"/assets "${COOKBOOK_STAGE}"/usr/share/piano-rs +cookbook_cargo +""" From 9e133579787af2d15b0a5a493bc4f6d6a873ae2c Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 20 Jul 2024 17:07:48 +0200 Subject: [PATCH 2056/3180] Remove the TMPDIR env var It isn't set by default on Linux either and it makes the tempnam libc function always create the temporary file in /tmp rather than prefer the caller indicated location. --- recipes/core/initfs/aarch64-unknown-redox/init.rc | 1 - recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp | 1 - recipes/core/initfs/init.rc | 1 - 3 files changed, 3 deletions(-) diff --git a/recipes/core/initfs/aarch64-unknown-redox/init.rc b/recipes/core/initfs/aarch64-unknown-redox/init.rc index 3acd2580..e68ee532 100644 --- a/recipes/core/initfs/aarch64-unknown-redox/init.rc +++ b/recipes/core/initfs/aarch64-unknown-redox/init.rc @@ -1,5 +1,4 @@ export PATH /scheme/initfs/bin -export TMPDIR /tmp export RUST_BACKTRACE 1 nulld zerod diff --git a/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp b/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp index 5c7962c3..306364d0 100644 --- a/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp +++ b/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp @@ -1,5 +1,4 @@ export PATH /scheme/initfs/bin -export TMPDIR /tmp export RUST_BACKTRACE 1 nulld zerod diff --git a/recipes/core/initfs/init.rc b/recipes/core/initfs/init.rc index 6ccaeb60..b86e6d1f 100644 --- a/recipes/core/initfs/init.rc +++ b/recipes/core/initfs/init.rc @@ -1,5 +1,4 @@ export PATH /scheme/initfs/bin -export TMPDIR /tmp export RUST_BACKTRACE 1 nulld zerod From 0e5437b9cd962d92488ac9cef42429b7b8f7348a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 21 Jul 2024 18:35:34 +0000 Subject: [PATCH 2057/3180] Fix the xz recipe --- recipes/tools/xz/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/tools/xz/recipe.toml b/recipes/tools/xz/recipe.toml index 87eb02ea..9089699d 100644 --- a/recipes/tools/xz/recipe.toml +++ b/recipes/tools/xz/recipe.toml @@ -1,5 +1,5 @@ [source] -git = "https://git.tukaani.org/xz.git" +git = "https://github.com/tukaani-project/xz" # v5.2.5 rev = "2327a461e1afce862c22269b80d3517801103c1b" From 22269a1429ecd0fafb7a4885c32f4022dfd58f76 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sun, 21 Jul 2024 21:17:09 +0200 Subject: [PATCH 2058/3180] Move ps2d invocation after the logging ramfs is created This is necessary for ps2d to use redox-log. --- recipes/core/initfs/init.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/core/initfs/init.rc b/recipes/core/initfs/init.rc index b86e6d1f..d9afc157 100644 --- a/recipes/core/initfs/init.rc +++ b/recipes/core/initfs/init.rc @@ -10,8 +10,8 @@ unset FRAMEBUFFER_ADDR FRAMEBUFFER_VIRT FRAMEBUFFER_WIDTH FRAMEBUFFER_HEIGHT FRA fbcond 1 2 logd /scheme/debug /scheme/fbcon/1 stdio /scheme/log -ps2d us ramfs logging +ps2d us acpid pcid /scheme/initfs/etc/pcid/initfs.toml lived From 34e07e31c747de7993d015df5abefe363bb4d352 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 22 Jul 2024 17:12:43 +0000 Subject: [PATCH 2059/3180] Launch ffplay on video and audio MIME types in Orbital programs --- recipes/libs/ffmpeg6/manifest | 15 +++++++++++++++ recipes/libs/ffmpeg6/recipe.toml | 2 ++ 2 files changed, 17 insertions(+) create mode 100644 recipes/libs/ffmpeg6/manifest diff --git a/recipes/libs/ffmpeg6/manifest b/recipes/libs/ffmpeg6/manifest new file mode 100644 index 00000000..eba3e599 --- /dev/null +++ b/recipes/libs/ffmpeg6/manifest @@ -0,0 +1,15 @@ +name=ffplay +binary=/usr/bin/ffplay +accept=*.mp3 +accept=*.ogg +accept=*.opus +accept=*.m4a +accept=*.flac +accept=*.wav +accept=*.mp4 +accept=*.mkv +accept=*.webm +accept=*.3gp +accept=*.mov +author=FFMPEG Developers +description=FFMPEG Media Player diff --git a/recipes/libs/ffmpeg6/recipe.toml b/recipes/libs/ffmpeg6/recipe.toml index c31a11c2..587426bf 100644 --- a/recipes/libs/ffmpeg6/recipe.toml +++ b/recipes/libs/ffmpeg6/recipe.toml @@ -30,4 +30,6 @@ COOKBOOK_CONFIGURE_FLAGS=( --enable-decoder=png ) cookbook_configure +mkdir -pv "${COOKBOOK_STAGE}/ui/apps" +cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/ffplay" """ From bca65e443b977a34e2b1ceace4c5ec9eb3d5ded5 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 24 Jul 2024 18:07:00 +0000 Subject: [PATCH 2060/3180] Update and fix the firefox-esr recipe --- recipes/wip/web/firefox-esr/mozconfig | 1 + recipes/wip/web/firefox-esr/recipe.toml | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 recipes/wip/web/firefox-esr/mozconfig diff --git a/recipes/wip/web/firefox-esr/mozconfig b/recipes/wip/web/firefox-esr/mozconfig new file mode 100644 index 00000000..4ad1810b --- /dev/null +++ b/recipes/wip/web/firefox-esr/mozconfig @@ -0,0 +1 @@ +ac_add_options --disable-tests diff --git a/recipes/wip/web/firefox-esr/recipe.toml b/recipes/wip/web/firefox-esr/recipe.toml index 6443e17a..52974104 100644 --- a/recipes/wip/web/firefox-esr/recipe.toml +++ b/recipes/wip/web/firefox-esr/recipe.toml @@ -1,9 +1,12 @@ -#TODO probably wrong template, see https://firefox-source-docs.mozilla.org/setup/linux_build.html#build +#TODO finish the script with cross-compilaiton variables, see https://firefox-source-docs.mozilla.org/setup/linux_build.html #TODO make all dependencies work +# some libraries are bundled, maybe some need to use the redox recipes +# dependencies - https://packages.gentoo.org/packages/www-client/firefox/dependencies +# feature flags reference - https://wiki.gentoo.org/wiki/Firefox#USE_flags [source] -tar = "https://ftp.mozilla.org/pub/firefox/releases/115.4.0esr/linux-x86_64/en-US/firefox-115.4.0esr.tar.bz2" +tar = "https://ftp.mozilla.org/pub/firefox/releases/115.13.0esr/source/firefox-115.13.0esr.source.tar.xz" [build] -template = "configure" +template = "custom" dependencies = [ "fontconfig", "atk", @@ -19,6 +22,11 @@ dependencies = [ "nss-nspr", "startup-notification", "zlib", - "libvpx", "ffmpeg6", + "expat", + "libepoxy", + "pipewire", ] +script = """ +export MOZCONFIG="${COOKBOOK_RECIPE}/mozconfig" +""" From 47c794ca53de02bac508174dc7852a03d4110d00 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 24 Jul 2024 18:16:00 +0000 Subject: [PATCH 2061/3180] Update a recipe --- .../wip/libs/other/openimageio/recipe.toml | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/recipes/wip/libs/other/openimageio/recipe.toml b/recipes/wip/libs/other/openimageio/recipe.toml index b36b96f1..e88f3a4f 100644 --- a/recipes/wip/libs/other/openimageio/recipe.toml +++ b/recipes/wip/libs/other/openimageio/recipe.toml @@ -1,24 +1,26 @@ #TODO missing script for building, see https://github.com/AcademySoftwareFoundation/OpenImageIO/blob/master/INSTALL.md#building-openimageio-on-linux-or-os-x +# optional dependencies are disabled to make the program work with less effort [source] git = "https://github.com/AcademySoftwareFoundation/OpenImageIO" rev = "5c29caab40a3913d415ac5d37cd84983e824c75b" [build] template = "custom" dependencies = [ - "boost", + "imath", "libtiff", "libjpeg-turbo", - "libpng", "openexr", "libfmt", - "opencv4", - "ffmpeg6", - "libwebp", - "freetype2", - "libraw", - "openjpeg", - "tbb", - "libgif", - "libheif", - "libwebp", + #"libpng", + #"boost", + #"opencv4", + #"ffmpeg6", + #"libwebp", + #"freetype2", + #"libraw", + #"openjpeg", + #"tbb", + #"libgif", + #"libheif", + #"libwebp", ] From b3532dfaa758fdf31fe2080d01efe0758196acee Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 24 Jul 2024 21:01:12 +0000 Subject: [PATCH 2062/3180] Update the pinned commit of the escalated recipe to fix many commands --- recipes/core/escalated/recipe.toml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/recipes/core/escalated/recipe.toml b/recipes/core/escalated/recipe.toml index 8bfd1b73..86c82839 100644 --- a/recipes/core/escalated/recipe.toml +++ b/recipes/core/escalated/recipe.toml @@ -1,9 +1,7 @@ [source] git = "https://gitlab.redox-os.org/redox-os/escalated.git" - # Escalated is not backwards compatible wrt relibc versions, so we pin it here # so it's updated together with the other main submodules. -rev = "efe37543" - +rev = "06fe299019dc65e3e029ddb0886fa8e53edd602a" [build] template = "cargo" From 2045eb1222b6a77bd8f649f502ceb3d35a2d1448 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 26 Jul 2024 00:13:38 +0000 Subject: [PATCH 2063/3180] Add recipes --- recipes/wip/finance/bitcoin/electrum/recipe.toml | 11 +++++++++++ recipes/wip/games/rts/mindustry/recipe.toml | 11 +++++++++++ .../wip/net/bittorrent/webtorrent-cli/recipe.toml | 12 ++++++++++++ recipes/wip/net/download/yt-dlp/recipe.toml | 13 +++++++++++++ recipes/wip/sys-info/procps-ng/recipe.toml | 5 +++++ 5 files changed, 52 insertions(+) create mode 100644 recipes/wip/finance/bitcoin/electrum/recipe.toml create mode 100644 recipes/wip/games/rts/mindustry/recipe.toml create mode 100644 recipes/wip/net/bittorrent/webtorrent-cli/recipe.toml create mode 100644 recipes/wip/net/download/yt-dlp/recipe.toml create mode 100644 recipes/wip/sys-info/procps-ng/recipe.toml diff --git a/recipes/wip/finance/bitcoin/electrum/recipe.toml b/recipes/wip/finance/bitcoin/electrum/recipe.toml new file mode 100644 index 00000000..cff7ca17 --- /dev/null +++ b/recipes/wip/finance/bitcoin/electrum/recipe.toml @@ -0,0 +1,11 @@ +# runtime dependencies - https://electrum.org/#download +[source] +tar = "https://download.electrum.org/4.5.5/Electrum-4.5.5.tar.gz" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/electrum +mkdir -pv "${COOKBOOK_STAGE}"/usr/bin +cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/share/electrum +echo "python3 /usr/share/electrum/run_electrum" > "${COOKBOOK_STAGE}"/usr/bin/electrum +""" diff --git a/recipes/wip/games/rts/mindustry/recipe.toml b/recipes/wip/games/rts/mindustry/recipe.toml new file mode 100644 index 00000000..a46e8863 --- /dev/null +++ b/recipes/wip/games/rts/mindustry/recipe.toml @@ -0,0 +1,11 @@ +#TODO make openjdk work +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_SOURCE}" +wget https://github.com/Anuken/Mindustry/releases/download/v146/Mindustry.jar +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/mindustry +mkdir -pv "${COOKBOOK_STAGE}"/usr/bin +cp -rv "${COOKBOOK_SOURCE}"/Mindustry.jar "${COOKBOOK_STAGE}"/usr/share/mindustry +echo "java -jar /usr/share/mindustry/Mindustry.jar" > "${COOKBOOK_STAGE}"/usr/bin/mindustry +""" diff --git a/recipes/wip/net/bittorrent/webtorrent-cli/recipe.toml b/recipes/wip/net/bittorrent/webtorrent-cli/recipe.toml new file mode 100644 index 00000000..bc9025fd --- /dev/null +++ b/recipes/wip/net/bittorrent/webtorrent-cli/recipe.toml @@ -0,0 +1,12 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/webtorrent/webtorrent-cli" +rev = "298ae70a7baeb1bfc836abe2821baf78b50c3af1" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/webtorrent-cli +mkdir -pv "${COOKBOOK_STAGE}"/usr/bin +cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/share/webtorrent-cli +echo "cd /usr/share/webtorrent-cli \n npm run" > "${COOKBOOK_STAGE}"/usr/bin/webtorrent-cli +""" diff --git a/recipes/wip/net/download/yt-dlp/recipe.toml b/recipes/wip/net/download/yt-dlp/recipe.toml new file mode 100644 index 00000000..2a3ff062 --- /dev/null +++ b/recipes/wip/net/download/yt-dlp/recipe.toml @@ -0,0 +1,13 @@ +#TODO not compiled or tested +# dependencies - https://github.com/yt-dlp/yt-dlp#dependencies +[source] +git = "https://github.com/yt-dlp/yt-dlp" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/yt-dlp +mkdir -pv "${COOKBOOK_STAGE}"/usr/bin +cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/share/yt-dlp +echo "/usr/share/yt-dlp/yt-dlp.sh" > "${COOKBOOK_STAGE}"/usr/bin/yt-dlp +chmod a+x "${COOKBOOK_STAGE}"/usr/share/yt-dlp/yt-dlp.sh +""" diff --git a/recipes/wip/sys-info/procps-ng/recipe.toml b/recipes/wip/sys-info/procps-ng/recipe.toml new file mode 100644 index 00000000..fc247ee4 --- /dev/null +++ b/recipes/wip/sys-info/procps-ng/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://sourceforge.net/projects/procps-ng/files/Production/procps-ng-4.0.4.tar.xz/download" +[build] +template = "configure" From 8b2b03f994dc93a714a92727b21bdabe40a9c172 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 26 Jul 2024 00:38:56 +0000 Subject: [PATCH 2064/3180] Finish the shortcuts for recipe executables --- recipes/wip/finance/bitcoin/electrum/recipe.toml | 3 ++- recipes/wip/games/rts/mindustry/recipe.toml | 3 ++- recipes/wip/net/bittorrent/webtorrent-cli/recipe.toml | 3 ++- recipes/wip/net/download/yt-dlp/recipe.toml | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/recipes/wip/finance/bitcoin/electrum/recipe.toml b/recipes/wip/finance/bitcoin/electrum/recipe.toml index cff7ca17..fe4aea57 100644 --- a/recipes/wip/finance/bitcoin/electrum/recipe.toml +++ b/recipes/wip/finance/bitcoin/electrum/recipe.toml @@ -7,5 +7,6 @@ script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/electrum mkdir -pv "${COOKBOOK_STAGE}"/usr/bin cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/share/electrum -echo "python3 /usr/share/electrum/run_electrum" > "${COOKBOOK_STAGE}"/usr/bin/electrum +echo "#!/usr/bin/env sh \n python3 /usr/share/electrum/run_electrum" > "${COOKBOOK_STAGE}"/usr/bin/electrum +chmod a+x "${COOKBOOK_STAGE}"/usr/bin/electrum """ diff --git a/recipes/wip/games/rts/mindustry/recipe.toml b/recipes/wip/games/rts/mindustry/recipe.toml index a46e8863..aaf90c74 100644 --- a/recipes/wip/games/rts/mindustry/recipe.toml +++ b/recipes/wip/games/rts/mindustry/recipe.toml @@ -7,5 +7,6 @@ wget https://github.com/Anuken/Mindustry/releases/download/v146/Mindustry.jar mkdir -pv "${COOKBOOK_STAGE}"/usr/share/mindustry mkdir -pv "${COOKBOOK_STAGE}"/usr/bin cp -rv "${COOKBOOK_SOURCE}"/Mindustry.jar "${COOKBOOK_STAGE}"/usr/share/mindustry -echo "java -jar /usr/share/mindustry/Mindustry.jar" > "${COOKBOOK_STAGE}"/usr/bin/mindustry +echo "#!/usr/bin/env sh \n java -jar /usr/share/mindustry/Mindustry.jar" > "${COOKBOOK_STAGE}"/usr/bin/mindustry +chmod a+x "${COOKBOOK_STAGE}"/usr/bin/mindustry """ diff --git a/recipes/wip/net/bittorrent/webtorrent-cli/recipe.toml b/recipes/wip/net/bittorrent/webtorrent-cli/recipe.toml index bc9025fd..17a33dc4 100644 --- a/recipes/wip/net/bittorrent/webtorrent-cli/recipe.toml +++ b/recipes/wip/net/bittorrent/webtorrent-cli/recipe.toml @@ -8,5 +8,6 @@ script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/webtorrent-cli mkdir -pv "${COOKBOOK_STAGE}"/usr/bin cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/share/webtorrent-cli -echo "cd /usr/share/webtorrent-cli \n npm run" > "${COOKBOOK_STAGE}"/usr/bin/webtorrent-cli +echo "#!/usr/bin/env sh \n cd /usr/share/webtorrent-cli \n npm run" > "${COOKBOOK_STAGE}"/usr/bin/webtorrent-cli +chmod a+x "${COOKBOOK_STAGE}"/usr/bin/webtorrent-cli """ diff --git a/recipes/wip/net/download/yt-dlp/recipe.toml b/recipes/wip/net/download/yt-dlp/recipe.toml index 2a3ff062..cdeeecf1 100644 --- a/recipes/wip/net/download/yt-dlp/recipe.toml +++ b/recipes/wip/net/download/yt-dlp/recipe.toml @@ -8,6 +8,7 @@ script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/yt-dlp mkdir -pv "${COOKBOOK_STAGE}"/usr/bin cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/share/yt-dlp -echo "/usr/share/yt-dlp/yt-dlp.sh" > "${COOKBOOK_STAGE}"/usr/bin/yt-dlp +echo "#!/usr/bin/env sh \n /usr/share/yt-dlp/yt-dlp.sh" > "${COOKBOOK_STAGE}"/usr/bin/yt-dlp chmod a+x "${COOKBOOK_STAGE}"/usr/share/yt-dlp/yt-dlp.sh +chmod a+x "${COOKBOOK_STAGE}"/usr/bin/yt-dlp """ From eeff190c0e9eb3abd50996c556dd70933dbcf03e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 29 Jul 2024 21:09:44 +0000 Subject: [PATCH 2065/3180] Add a recipe --- recipes/wip/dev/git-tools/serie/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/wip/dev/git-tools/serie/recipe.toml diff --git a/recipes/wip/dev/git-tools/serie/recipe.toml b/recipes/wip/dev/git-tools/serie/recipe.toml new file mode 100644 index 00000000..dc6a3c06 --- /dev/null +++ b/recipes/wip/dev/git-tools/serie/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/lusingander/serie" +[build] +template = "cargo" From f57737585ba134df011a7be63a2927ae4a574bab Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 3 Aug 2024 04:30:31 +0000 Subject: [PATCH 2066/3180] Migrate the book recipe to /usr --- recipes/doc/book/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/doc/book/recipe.toml b/recipes/doc/book/recipe.toml index 300f96de..dee8082a 100644 --- a/recipes/doc/book/recipe.toml +++ b/recipes/doc/book/recipe.toml @@ -4,7 +4,7 @@ git = "https://gitlab.redox-os.org/redox-os/book.git" [build] template = "custom" script = """ -dir="${COOKBOOK_STAGE}/share/book" +dir="${COOKBOOK_STAGE}/usr/share/book" mkdir -pv "${dir}" mdbook build --dest-dir "${dir}" "${COOKBOOK_SOURCE}" """ From 8ec5b10b245a98592f62ffb332738c5baa0f4382 Mon Sep 17 00:00:00 2001 From: Ron Williams Date: Sun, 4 Aug 2024 11:04:11 -0700 Subject: [PATCH 2067/3180] Fix fetch.sh for subdirs --- fetch.sh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/fetch.sh b/fetch.sh index b83caa6e..75552785 100755 --- a/fetch.sh +++ b/fetch.sh @@ -12,10 +12,18 @@ fi for recipe_path in $recipes do + if (echo "$recipe_path" | grep '.*/.*' >/dev/null); then + recipe_name=$(basename "$recipe_path") + recipe_path="recipes/$recipe_path" + else + recipe_name="$recipe_path" + recipe_path=`target/release/find_recipe $recipe_name` + fi + if [ -e "$recipe_path/recipe.toml" ] then - target/release/cook --fetch-only "$recipe_path" + target/release/cook --fetch-only "$recipe_name" else - ./cook.sh "$recipe_path" fetch + ./cook.sh "$recipe_name" fetch fi done From 971e2f89d5d89ab413644a6a1fa7f9c938917ee3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 4 Aug 2024 21:20:17 +0000 Subject: [PATCH 2068/3180] Update a TODO --- recipes/wip/net/http/simple-http-server/recipe.toml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/wip/net/http/simple-http-server/recipe.toml b/recipes/wip/net/http/simple-http-server/recipe.toml index b257259d..a71ff214 100644 --- a/recipes/wip/net/http/simple-http-server/recipe.toml +++ b/recipes/wip/net/http/simple-http-server/recipe.toml @@ -1,5 +1,4 @@ -#TODO discover how to test it, lacking a guide -#TODO compiled but not tested (after a patch on the "open" crate) +#TODO promote [source] git = "https://github.com/TheWaWaR/simple-http-server" [build] From ecbe0000b9862f031efd9dc1b8303f50bc5ef649 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 4 Aug 2024 21:44:01 +0000 Subject: [PATCH 2069/3180] Document the TODO for working recipes --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 9248abb3..f07b4ed9 100644 --- a/README.md +++ b/README.md @@ -109,6 +109,7 @@ These TODOs improve the packagers cooperation and understanding. - `probably wrong script, see insert-the-link-for-build-instructions-here` - It means that you don't know if your script will work. - `probably wrong template, see insert-the-link-for-build-instructions-here` - It means that you don't know if the Cookbook template will work. - `probably missing dependencies, see insert-the-link-for-required-dependencies-here` - It means that you don't know if the required dependencies are satisfied. +- `promote` - It means that the recipe is working and should be moved to the equivalent category at `cookbook/recipes` Other TODOs are specific and won't be covered on this list. From 7d3af277092f07d415c0494bae21a53b9caae168 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 5 Aug 2024 01:53:02 +0000 Subject: [PATCH 2070/3180] Add recipes --- .../image/upscaling/upscayl-ncnn/recipe.toml | 22 +++++++++++++++++++ recipes/wip/libs/net/libfilezilla/recipe.toml | 10 +++++++++ recipes/wip/libs/net/libidn/recipe.toml | 9 ++++++++ recipes/wip/net/email/thunderbird/mozconfig | 6 +++++ recipes/wip/net/email/thunderbird/recipe.toml | 14 ++++++++++++ .../wip/net/ftp/filezilla-client/recipe.toml | 12 ++++++++++ .../wip/net/ftp/filezilla-server/recipe.toml | 11 ++++++++++ recipes/wip/net/ftp/unftp/recipe.toml | 5 +++++ 8 files changed, 89 insertions(+) create mode 100644 recipes/wip/image/upscaling/upscayl-ncnn/recipe.toml create mode 100644 recipes/wip/libs/net/libfilezilla/recipe.toml create mode 100644 recipes/wip/libs/net/libidn/recipe.toml create mode 100644 recipes/wip/net/email/thunderbird/mozconfig create mode 100644 recipes/wip/net/email/thunderbird/recipe.toml create mode 100644 recipes/wip/net/ftp/filezilla-client/recipe.toml create mode 100644 recipes/wip/net/ftp/filezilla-server/recipe.toml create mode 100644 recipes/wip/net/ftp/unftp/recipe.toml diff --git a/recipes/wip/image/upscaling/upscayl-ncnn/recipe.toml b/recipes/wip/image/upscaling/upscayl-ncnn/recipe.toml new file mode 100644 index 00000000..e66ba69c --- /dev/null +++ b/recipes/wip/image/upscaling/upscayl-ncnn/recipe.toml @@ -0,0 +1,22 @@ +#TODO incomplete script +# build instructions - https://github.com/upscayl/upscayl-ncnn/blob/master/README.md +[source] +git = "https://github.com/upscayl/upscayl-ncnn" +rev = "22774bc42e2bc3c785b5b585d213d960b1348ad5" +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/net/libfilezilla/recipe.toml b/recipes/wip/libs/net/libfilezilla/recipe.toml new file mode 100644 index 00000000..991b9a1c --- /dev/null +++ b/recipes/wip/libs/net/libfilezilla/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +# build instructions - https://svn.filezilla-project.org/filezilla/libfilezilla/trunk/INSTALL?view=markup +[source] +tar = "https://dl2.cdn.filezilla-project.org/libfilezilla/libfilezilla-0.48.1.tar.xz?h=ABnRzj5uctW-vLCfNWW5mQ&x=1722822577" +[build] +template = "configure" +dependencies = [ + "libnettle", + "gnutls3", +] diff --git a/recipes/wip/libs/net/libidn/recipe.toml b/recipes/wip/libs/net/libidn/recipe.toml new file mode 100644 index 00000000..cb7c94f3 --- /dev/null +++ b/recipes/wip/libs/net/libidn/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +tar = "https://ftp.gnu.org/gnu/libidn/libidn2-2.3.7.tar.gz" +[build] +template = "configure" +dependencies = [ + "libunistring", + "libiconv", +] diff --git a/recipes/wip/net/email/thunderbird/mozconfig b/recipes/wip/net/email/thunderbird/mozconfig new file mode 100644 index 00000000..ed78d39c --- /dev/null +++ b/recipes/wip/net/email/thunderbird/mozconfig @@ -0,0 +1,6 @@ +ac_add_options --enable-project=comm/mail +ac_add_options --prefix="{COOKBOOK_STAGE}/usr" +ac_add_options --enable-release +ac_add_options --disable-jack +ac_add_options --disable-crashreporter +ac_add_options --disable-updater \ No newline at end of file diff --git a/recipes/wip/net/email/thunderbird/recipe.toml b/recipes/wip/net/email/thunderbird/recipe.toml new file mode 100644 index 00000000..bfb6dde0 --- /dev/null +++ b/recipes/wip/net/email/thunderbird/recipe.toml @@ -0,0 +1,14 @@ +#TODO missing cross-compilation variables and a command to move the executable to the package +# build instructions - https://developer.thunderbird.net/thunderbird-development/building-thunderbird +[source] +tar = "https://archive.mozilla.org/pub/thunderbird/releases/128.0.1esr/source/thunderbird-128.0.1esr.source.tar.xz" +[build] +template = "custom" +dependencies = [ + "library1", +] +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr +export MOZCONFIG="{COOKBOOK_RECIPE}/mozconfig" +./mach build +""" diff --git a/recipes/wip/net/ftp/filezilla-client/recipe.toml b/recipes/wip/net/ftp/filezilla-client/recipe.toml new file mode 100644 index 00000000..34454405 --- /dev/null +++ b/recipes/wip/net/ftp/filezilla-client/recipe.toml @@ -0,0 +1,12 @@ +#TODO not compiled or tested +# build intructions - https://wiki.filezilla-project.org/Client_Compile +[source] +tar = "https://dl3.cdn.filezilla-project.org/client/FileZilla_3.67.1_src.tar.xz?h=HG1-LUZAqtxJaEQhlQ9oNg&x=1722821782" +[build] +template = "configure" +dependencies = [ + "libfilezilla", + "gnutls3", + "libidn", + "dbus", +] diff --git a/recipes/wip/net/ftp/filezilla-server/recipe.toml b/recipes/wip/net/ftp/filezilla-server/recipe.toml new file mode 100644 index 00000000..f2f7920b --- /dev/null +++ b/recipes/wip/net/ftp/filezilla-server/recipe.toml @@ -0,0 +1,11 @@ +#TODO not compiled or tested +# build intructions - https://wiki.filezilla-project.org/Client_Compile +[source] +tar = "https://dl2.cdn.filezilla-project.org/server/FileZilla_Server_1.8.2_src.tar.xz?h=05HQOZtMOkV85GW9u3rrsg&x=1722821856" +[build] +template = "configure" +dependencies = [ + "libfilezilla", + "gnutls3", + "libidn", +] diff --git a/recipes/wip/net/ftp/unftp/recipe.toml b/recipes/wip/net/ftp/unftp/recipe.toml new file mode 100644 index 00000000..b7c4fcf2 --- /dev/null +++ b/recipes/wip/net/ftp/unftp/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/bolcom/unFTP" +[build] +template = "cargo" From 46a4aceb84a8bb169882c8c4950ef74e47e0cd7d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 5 Aug 2024 01:56:38 +0000 Subject: [PATCH 2071/3180] Update recipes --- recipes/wip/net/email/thunderbird/mozconfig | 4 +++- recipes/wip/web/firefox-esr/mozconfig | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/recipes/wip/net/email/thunderbird/mozconfig b/recipes/wip/net/email/thunderbird/mozconfig index ed78d39c..27bc1b6b 100644 --- a/recipes/wip/net/email/thunderbird/mozconfig +++ b/recipes/wip/net/email/thunderbird/mozconfig @@ -1,6 +1,8 @@ ac_add_options --enable-project=comm/mail ac_add_options --prefix="{COOKBOOK_STAGE}/usr" ac_add_options --enable-release +ac_add_options --target="{TARGET}" +ac_add_options --enable-bootstrap ac_add_options --disable-jack ac_add_options --disable-crashreporter -ac_add_options --disable-updater \ No newline at end of file +ac_add_options --disable-updater diff --git a/recipes/wip/web/firefox-esr/mozconfig b/recipes/wip/web/firefox-esr/mozconfig index 4ad1810b..8d2ce92d 100644 --- a/recipes/wip/web/firefox-esr/mozconfig +++ b/recipes/wip/web/firefox-esr/mozconfig @@ -1 +1,3 @@ ac_add_options --disable-tests +ac_add_options --target="{TARGET}" +ac_add_options --enable-bootstrap From 24614622123cb74f5a449e2096534990c364c0dd Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 5 Aug 2024 02:47:28 +0000 Subject: [PATCH 2072/3180] Add recipes --- recipes/wip/net/chat/jami/recipe.toml | 39 +++++++++++++++++++ .../converters/handbrake-cli/recipe.toml | 35 +++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 recipes/wip/net/chat/jami/recipe.toml create mode 100644 recipes/wip/video/converters/handbrake-cli/recipe.toml diff --git a/recipes/wip/net/chat/jami/recipe.toml b/recipes/wip/net/chat/jami/recipe.toml new file mode 100644 index 00000000..f3f66a3b --- /dev/null +++ b/recipes/wip/net/chat/jami/recipe.toml @@ -0,0 +1,39 @@ +#TODO missing cross-compilation variables +# build instructions - https://git.jami.net/savoirfairelinux/jami-client-qt/-/blob/master/INSTALL.md +# dependencies - https://docs.jami.net/en_US/build/dependencies.html +[source] +git = "https://git.jami.net/savoirfairelinux/jami-client-qt" +rev = "91475c3a3f316b1b674a8fbe453f9d0dd7ef444e" +[build] +template = "custom" +dependencies = [ + "ffmpeg6", + "boost", + "expat", + "gnutls3", + "libopus", + "pcre", + "pulseaudio", + "openssl1", + "speex", + "speexdsp", + "libuuid", + "libfmt", + "libarchive", + "libgit2", + "libnettle", + "zlib", + "libnotify", + "libqrencode", + "qt6-base", + "qt6-declarative", + "qt6-graphicaleffects", + "qt6-multimedia", + "qt6-networkauth", + "qt6-svg", + "qt6-tools", + "qt6-webengine", +] +script = """ +./build.py --install +""" diff --git a/recipes/wip/video/converters/handbrake-cli/recipe.toml b/recipes/wip/video/converters/handbrake-cli/recipe.toml new file mode 100644 index 00000000..96fef276 --- /dev/null +++ b/recipes/wip/video/converters/handbrake-cli/recipe.toml @@ -0,0 +1,35 @@ +#TODO not compiled or tested +# build instructions - https://handbrake.fr/docs/en/1.7.0/developer/build-linux.html +# dependencies - https://handbrake.fr/docs/en/1.7.0/developer/install-dependencies-ubuntu.html +[source] +tar = "https://handbrake.fr/rotation.php?file=HandBrake-1.8.1-source.tar.bz2" +[build] +template = "custom" +dependencies = [ + "libflac", + "fontconfig", + "freetype2", + "fribidi", + "harfbuzz", + "jansson", + "lame", + "libass", + "libiconv", + "libjpeg-turbo", + "libogg", + "libsamplerate", + "libtheora", + "libvorbis", + "libvpx", + "x264", + "libxml2", + "xz", + "libopus", + "speex", +] +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --disable-gtk +) +cookbook_configure +""" From 325a48ff5adc346a59a65f0d35358e091f8ef36b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 5 Aug 2024 03:00:54 +0000 Subject: [PATCH 2073/3180] Add a recipe --- recipes/wip/image/upscaling/video2x/recipe.toml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 recipes/wip/image/upscaling/video2x/recipe.toml diff --git a/recipes/wip/image/upscaling/video2x/recipe.toml b/recipes/wip/image/upscaling/video2x/recipe.toml new file mode 100644 index 00000000..91d28ed0 --- /dev/null +++ b/recipes/wip/image/upscaling/video2x/recipe.toml @@ -0,0 +1,12 @@ +#TODO maybe incomplete script +[source] +git = "https://github.com/k4yt3x/video2x" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/video2x +mkdir -pv "${COOKBOOK_STAGE}"/usr/bin +cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/share/video2x +echo "#!/usr/bin/env sh \n cd /usr/share/video2x \n python3 -m video2x" > "${COOKBOOK_STAGE}"/usr/bin/video2x +chmod a+x "${COOKBOOK_STAGE}"/usr/bin/video2x +""" From e51ccc861a917fb80eaee7486b3564eef75e0288 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 5 Aug 2024 03:13:49 +0000 Subject: [PATCH 2074/3180] Update TODOs --- recipes/wip/crypto/qrrs/recipe.toml | 2 +- recipes/wip/dev/other/hexyl/recipe.toml | 2 +- recipes/wip/dev/other/rust-counter-strings/recipe.toml | 2 +- recipes/wip/doc/mdbook/recipe.toml | 2 +- recipes/wip/games/strategy/chess-tui/recipe.toml | 2 +- recipes/wip/image/other/lsix/recipe.toml | 2 +- recipes/wip/shells/pure/recipe.toml | 2 +- recipes/wip/terminal/ascii-gen/recipe.toml | 2 +- recipes/wip/text/igrep/recipe.toml | 2 +- recipes/wip/tools/bartib/recipe.toml | 2 +- recipes/wip/tools/counts/recipe.toml | 2 +- recipes/wip/tools/dra-cla/recipe.toml | 2 +- recipes/wip/tools/lemmeknow/recipe.toml | 2 +- recipes/wip/tools/presenterm/recipe.toml | 2 +- recipes/wip/tools/ripsecrets/recipe.toml | 2 +- recipes/wip/tools/ruplacer/recipe.toml | 2 +- recipes/wip/tools/spacer/recipe.toml | 2 +- recipes/wip/tools/tin-summer/recipe.toml | 2 +- recipes/wip/tools/xcp/recipe.toml | 2 +- recipes/wip/tui/gyr/recipe.toml | 2 +- recipes/wip/video/other/jerry/recipe.toml | 2 +- recipes/wip/video/other/lobster/recipe.toml | 2 +- 22 files changed, 22 insertions(+), 22 deletions(-) diff --git a/recipes/wip/crypto/qrrs/recipe.toml b/recipes/wip/crypto/qrrs/recipe.toml index fbd78645..900a77bc 100644 --- a/recipes/wip/crypto/qrrs/recipe.toml +++ b/recipes/wip/crypto/qrrs/recipe.toml @@ -1,4 +1,4 @@ -#TODO move to proper category +#TODO promote [source] git = "https://github.com/Lenivaya/qrrs" [build] diff --git a/recipes/wip/dev/other/hexyl/recipe.toml b/recipes/wip/dev/other/hexyl/recipe.toml index 7ceae312..41ee1a16 100644 --- a/recipes/wip/dev/other/hexyl/recipe.toml +++ b/recipes/wip/dev/other/hexyl/recipe.toml @@ -1,4 +1,4 @@ -#TODO move to proper category +#TODO promote [source] git = "https://github.com/sharkdp/hexyl" [build] diff --git a/recipes/wip/dev/other/rust-counter-strings/recipe.toml b/recipes/wip/dev/other/rust-counter-strings/recipe.toml index a472f814..deb3cd75 100644 --- a/recipes/wip/dev/other/rust-counter-strings/recipe.toml +++ b/recipes/wip/dev/other/rust-counter-strings/recipe.toml @@ -1,4 +1,4 @@ -#TODO move to proper category +#TODO promote [source] git = "https://github.com/thomaschaplin/rust-counter-strings" [build] diff --git a/recipes/wip/doc/mdbook/recipe.toml b/recipes/wip/doc/mdbook/recipe.toml index c3d6995b..9feb6507 100644 --- a/recipes/wip/doc/mdbook/recipe.toml +++ b/recipes/wip/doc/mdbook/recipe.toml @@ -1,4 +1,4 @@ -#TODO move to proper category +#TODO promote [source] git = "https://github.com/rust-lang/mdBook" [build] diff --git a/recipes/wip/games/strategy/chess-tui/recipe.toml b/recipes/wip/games/strategy/chess-tui/recipe.toml index 59ad1e59..c0696678 100644 --- a/recipes/wip/games/strategy/chess-tui/recipe.toml +++ b/recipes/wip/games/strategy/chess-tui/recipe.toml @@ -1,4 +1,4 @@ -#TODO move to proper category +#TODO promote [source] git = "https://github.com/thomas-mauran/chess-tui" [build] diff --git a/recipes/wip/image/other/lsix/recipe.toml b/recipes/wip/image/other/lsix/recipe.toml index 0e48e66a..b8fbaac9 100644 --- a/recipes/wip/image/other/lsix/recipe.toml +++ b/recipes/wip/image/other/lsix/recipe.toml @@ -1,4 +1,4 @@ -#TODO move to proper category +#TODO promote [source] git = "https://github.com/hackerb9/lsix" [build] diff --git a/recipes/wip/shells/pure/recipe.toml b/recipes/wip/shells/pure/recipe.toml index dfd1da30..0f00d270 100644 --- a/recipes/wip/shells/pure/recipe.toml +++ b/recipes/wip/shells/pure/recipe.toml @@ -1,4 +1,4 @@ -#TODO move to proper category +#TODO promote [source] git = "https://github.com/sindresorhus/pure" rev = "87e6f5dd4c793f6d980532205aaefe196780606f" diff --git a/recipes/wip/terminal/ascii-gen/recipe.toml b/recipes/wip/terminal/ascii-gen/recipe.toml index b0b4ee05..1aebb974 100644 --- a/recipes/wip/terminal/ascii-gen/recipe.toml +++ b/recipes/wip/terminal/ascii-gen/recipe.toml @@ -1,4 +1,4 @@ -#TODO move to proper category +#TODO promote [source] git = "https://github.com/thed24/ascii-gen" [build] diff --git a/recipes/wip/text/igrep/recipe.toml b/recipes/wip/text/igrep/recipe.toml index cfa9c139..87165ae4 100644 --- a/recipes/wip/text/igrep/recipe.toml +++ b/recipes/wip/text/igrep/recipe.toml @@ -1,4 +1,4 @@ -#TODO move to proper category +#TODO promote [source] git = "https://github.com/konradsz/igrep" [build] diff --git a/recipes/wip/tools/bartib/recipe.toml b/recipes/wip/tools/bartib/recipe.toml index f6459ec3..1a90b0df 100644 --- a/recipes/wip/tools/bartib/recipe.toml +++ b/recipes/wip/tools/bartib/recipe.toml @@ -1,4 +1,4 @@ -#TODO move to proper category +#TODO promote [source] git = "https://github.com/nikolassv/bartib" [build] diff --git a/recipes/wip/tools/counts/recipe.toml b/recipes/wip/tools/counts/recipe.toml index 9687e614..092b2a68 100644 --- a/recipes/wip/tools/counts/recipe.toml +++ b/recipes/wip/tools/counts/recipe.toml @@ -1,4 +1,4 @@ -#TODO move to proper category +#TODO promote [source] git = "https://github.com/nnethercote/counts" [build] diff --git a/recipes/wip/tools/dra-cla/recipe.toml b/recipes/wip/tools/dra-cla/recipe.toml index c201a2d1..aaf4c087 100644 --- a/recipes/wip/tools/dra-cla/recipe.toml +++ b/recipes/wip/tools/dra-cla/recipe.toml @@ -1,4 +1,4 @@ -#TODO move to proper category +#TODO promote [source] git = "https://github.com/CoolnsX/dra-cla" [build] diff --git a/recipes/wip/tools/lemmeknow/recipe.toml b/recipes/wip/tools/lemmeknow/recipe.toml index d371d57c..21268d0a 100644 --- a/recipes/wip/tools/lemmeknow/recipe.toml +++ b/recipes/wip/tools/lemmeknow/recipe.toml @@ -1,4 +1,4 @@ -#TODO move to proper category +#TODO promote [source] git = "https://github.com/swanandx/lemmeknow" [build] diff --git a/recipes/wip/tools/presenterm/recipe.toml b/recipes/wip/tools/presenterm/recipe.toml index ee36c4fc..b5a38635 100644 --- a/recipes/wip/tools/presenterm/recipe.toml +++ b/recipes/wip/tools/presenterm/recipe.toml @@ -1,4 +1,4 @@ -#TODO move to proper category +#TODO promote [source] git = "https://github.com/mfontanini/presenterm" [build] diff --git a/recipes/wip/tools/ripsecrets/recipe.toml b/recipes/wip/tools/ripsecrets/recipe.toml index 0899018f..f445cbd8 100644 --- a/recipes/wip/tools/ripsecrets/recipe.toml +++ b/recipes/wip/tools/ripsecrets/recipe.toml @@ -1,4 +1,4 @@ -#TODO move to proper category +#TODO promote [source] git = "https://github.com/sirwart/ripsecrets" [build] diff --git a/recipes/wip/tools/ruplacer/recipe.toml b/recipes/wip/tools/ruplacer/recipe.toml index a196b7c0..ac448b5e 100644 --- a/recipes/wip/tools/ruplacer/recipe.toml +++ b/recipes/wip/tools/ruplacer/recipe.toml @@ -1,4 +1,4 @@ -#TODO move to proper category +#TODO promote [source] git = "https://github.com/your-tools/ruplacer" [build] diff --git a/recipes/wip/tools/spacer/recipe.toml b/recipes/wip/tools/spacer/recipe.toml index 17863ad8..aeb66edc 100644 --- a/recipes/wip/tools/spacer/recipe.toml +++ b/recipes/wip/tools/spacer/recipe.toml @@ -1,4 +1,4 @@ -#TODO move to proper category +#TODO promote [source] git = "https://github.com/samwho/spacer" [build] diff --git a/recipes/wip/tools/tin-summer/recipe.toml b/recipes/wip/tools/tin-summer/recipe.toml index a7a39420..043b97a7 100644 --- a/recipes/wip/tools/tin-summer/recipe.toml +++ b/recipes/wip/tools/tin-summer/recipe.toml @@ -1,4 +1,4 @@ -#TODO move to proper category +#TODO promote [source] git = "https://github.com/vmchale/tin-summer" [build] diff --git a/recipes/wip/tools/xcp/recipe.toml b/recipes/wip/tools/xcp/recipe.toml index 9e27e994..13f24633 100644 --- a/recipes/wip/tools/xcp/recipe.toml +++ b/recipes/wip/tools/xcp/recipe.toml @@ -1,4 +1,4 @@ -#TODO move to proper category +#TODO promote [source] git = "https://github.com/tarka/xcp" [build] diff --git a/recipes/wip/tui/gyr/recipe.toml b/recipes/wip/tui/gyr/recipe.toml index 68d2d458..e0670abd 100644 --- a/recipes/wip/tui/gyr/recipe.toml +++ b/recipes/wip/tui/gyr/recipe.toml @@ -1,4 +1,4 @@ -#TODO move to proper category +#TODO promote [source] git = "https://git.sr.ht/~f9/gyr" [build] diff --git a/recipes/wip/video/other/jerry/recipe.toml b/recipes/wip/video/other/jerry/recipe.toml index 5e32f69e..cbc6203e 100644 --- a/recipes/wip/video/other/jerry/recipe.toml +++ b/recipes/wip/video/other/jerry/recipe.toml @@ -1,4 +1,4 @@ -#TODO move to proper category +#TODO promote [source] git = "https://github.com/justchokingaround/jerry" [build] diff --git a/recipes/wip/video/other/lobster/recipe.toml b/recipes/wip/video/other/lobster/recipe.toml index 0c32de9f..8933315e 100644 --- a/recipes/wip/video/other/lobster/recipe.toml +++ b/recipes/wip/video/other/lobster/recipe.toml @@ -1,4 +1,4 @@ -#TODO move to proper category +#TODO promote [source] git = "https://github.com/justchokingaround/lobster" [build] From c200b11c7aa2378c88e162e5d6890445fc06b336 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 5 Aug 2024 08:16:50 +0000 Subject: [PATCH 2075/3180] Add recipes --- recipes/wip/edu/hacker-laws/recipe.toml | 9 +++++++++ recipes/wip/security/lynis/recipe.toml | 10 ++++++++++ 2 files changed, 19 insertions(+) create mode 100644 recipes/wip/edu/hacker-laws/recipe.toml create mode 100644 recipes/wip/security/lynis/recipe.toml diff --git a/recipes/wip/edu/hacker-laws/recipe.toml b/recipes/wip/edu/hacker-laws/recipe.toml new file mode 100644 index 00000000..69c7b5d9 --- /dev/null +++ b/recipes/wip/edu/hacker-laws/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/dwmkerr/hacker-laws" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/hacker-laws +cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/share/hacker-laws +""" diff --git a/recipes/wip/security/lynis/recipe.toml b/recipes/wip/security/lynis/recipe.toml new file mode 100644 index 00000000..68c5ba61 --- /dev/null +++ b/recipes/wip/security/lynis/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/CISOfy/lynis" +rev = "60afce6d8110ee9e88ac9e9d0e0346b1cf222b5e" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/lynis +cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/share/lynis +""" From 8b2a35665bdd983c7825d21a93f01e970921bd83 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 9 Aug 2024 04:45:13 +0000 Subject: [PATCH 2076/3180] Move recipes --- recipes/wip/emulators/{pc/wine => windows}/boxedwine/recipe.toml | 0 .../wip/emulators/{pc/wine => windows}/wine-stable/recipe.toml | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/emulators/{pc/wine => windows}/boxedwine/recipe.toml (100%) rename recipes/wip/emulators/{pc/wine => windows}/wine-stable/recipe.toml (100%) diff --git a/recipes/wip/emulators/pc/wine/boxedwine/recipe.toml b/recipes/wip/emulators/windows/boxedwine/recipe.toml similarity index 100% rename from recipes/wip/emulators/pc/wine/boxedwine/recipe.toml rename to recipes/wip/emulators/windows/boxedwine/recipe.toml diff --git a/recipes/wip/emulators/pc/wine/wine-stable/recipe.toml b/recipes/wip/emulators/windows/wine-stable/recipe.toml similarity index 100% rename from recipes/wip/emulators/pc/wine/wine-stable/recipe.toml rename to recipes/wip/emulators/windows/wine-stable/recipe.toml From c01ceae3d64394f5102789c257d5023392b51bf3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 9 Aug 2024 04:50:40 +0000 Subject: [PATCH 2077/3180] Add the retrowin32 recipe --- .../emulators/windows/retrowin32/recipe.toml | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 recipes/wip/emulators/windows/retrowin32/recipe.toml diff --git a/recipes/wip/emulators/windows/retrowin32/recipe.toml b/recipes/wip/emulators/windows/retrowin32/recipe.toml new file mode 100644 index 00000000..f72c3522 --- /dev/null +++ b/recipes/wip/emulators/windows/retrowin32/recipe.toml @@ -0,0 +1,21 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/evmar/retrowin32" +[build] +template = "custom" +dependencies = [ + "sdl2", +] +script = """ +package=retrowin32 +"${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --package "${package}" \ + --release + --x86-emu + --sdl + mkdir -pv "${COOKBOOK_STAGE}/usr/bin" + cp -v \ + "target/${TARGET}/release/${package}" \ + "${COOKBOOK_STAGE}/usr/bin/${package}" +""" From c7d56e88ca3887b913b74e350b7968164ca03fa6 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 10 Aug 2024 00:35:22 +0000 Subject: [PATCH 2078/3180] Pin the COSMIC programs to Alpha 1 tag to fix the build --- recipes/icons/cosmic-icons/recipe.toml | 2 +- recipes/tools/cosmic-edit/recipe.toml | 2 +- recipes/tools/cosmic-files/recipe.toml | 2 +- recipes/tools/cosmic-term/recipe.toml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/recipes/icons/cosmic-icons/recipe.toml b/recipes/icons/cosmic-icons/recipe.toml index 80b95d86..3e9b0d1f 100644 --- a/recipes/icons/cosmic-icons/recipe.toml +++ b/recipes/icons/cosmic-icons/recipe.toml @@ -1,6 +1,6 @@ [source] git = "https://github.com/pop-os/cosmic-icons.git" - +rev = "f93dcdfa1060c2cf3f8cf0b56b0338292edcafa5" [build] template = "custom" script = """ diff --git a/recipes/tools/cosmic-edit/recipe.toml b/recipes/tools/cosmic-edit/recipe.toml index 7af455cf..f05ecbd1 100644 --- a/recipes/tools/cosmic-edit/recipe.toml +++ b/recipes/tools/cosmic-edit/recipe.toml @@ -1,7 +1,7 @@ [source] git = "https://github.com/pop-os/cosmic-edit.git" branch = "master" - +rev = "df5d10936c5a1cc16e231b92221eae7c73ed9da4" [build] template = "custom" script = """ diff --git a/recipes/tools/cosmic-files/recipe.toml b/recipes/tools/cosmic-files/recipe.toml index 1314097d..bc095a67 100644 --- a/recipes/tools/cosmic-files/recipe.toml +++ b/recipes/tools/cosmic-files/recipe.toml @@ -1,7 +1,7 @@ [source] git = "https://github.com/pop-os/cosmic-files.git" branch = "master" - +rev = "190029aa27d08a26877e73db2dda789de3e6595f" [build] template = "custom" script = """ diff --git a/recipes/tools/cosmic-term/recipe.toml b/recipes/tools/cosmic-term/recipe.toml index ec06ea5b..b5d0f11a 100644 --- a/recipes/tools/cosmic-term/recipe.toml +++ b/recipes/tools/cosmic-term/recipe.toml @@ -1,7 +1,7 @@ [source] git = "https://github.com/pop-os/cosmic-term.git" branch = "master" - +rev = "be808b56cf24d03fc99cf44b0885078a81a16523" [build] template = "custom" script = """ From 24b3d4038571b1843562d62c7eac730fd8dcd55e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 15 Aug 2024 14:57:58 +0000 Subject: [PATCH 2079/3180] Add the website recipe --- recipes/web/website/recipe.toml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 recipes/web/website/recipe.toml diff --git a/recipes/web/website/recipe.toml b/recipes/web/website/recipe.toml new file mode 100644 index 00000000..4df01db0 --- /dev/null +++ b/recipes/web/website/recipe.toml @@ -0,0 +1,9 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/website" +[build] +template = "custom" +script = """ +./hugo.sh +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/website +cp -rv "${COOKBOOK_BUILD}"/build/public/* "${COOKBOOK_STAGE}"/usr/share/website +""" From eaa76f41c193f531312962620a0076a63a4580f9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 21 Aug 2024 00:53:16 +0000 Subject: [PATCH 2080/3180] Add recipes --- recipes/wip/office/cactui/recipe.toml | 5 +++++ recipes/wip/ssh/dropbear/recipe.toml | 5 +++++ recipes/wip/sys-info/btop/recipe.toml | 6 ++++++ recipes/wip/vm/virtualbox/recipe.toml | 27 +++++++++++++++++++++++++++ 4 files changed, 43 insertions(+) create mode 100644 recipes/wip/office/cactui/recipe.toml create mode 100644 recipes/wip/ssh/dropbear/recipe.toml create mode 100644 recipes/wip/sys-info/btop/recipe.toml create mode 100644 recipes/wip/vm/virtualbox/recipe.toml diff --git a/recipes/wip/office/cactui/recipe.toml b/recipes/wip/office/cactui/recipe.toml new file mode 100644 index 00000000..1f491a8a --- /dev/null +++ b/recipes/wip/office/cactui/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/vkobinski/CacTui" +[build] +template = "cargo" diff --git a/recipes/wip/ssh/dropbear/recipe.toml b/recipes/wip/ssh/dropbear/recipe.toml new file mode 100644 index 00000000..ed1ae026 --- /dev/null +++ b/recipes/wip/ssh/dropbear/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing gnu make script, see https://github.com/mkj/dropbear/blob/master/INSTALL.md +[source] +tar = "https://matt.ucc.asn.au/dropbear/releases/dropbear-2024.85.tar.bz2" +[build] +template = "custom" diff --git a/recipes/wip/sys-info/btop/recipe.toml b/recipes/wip/sys-info/btop/recipe.toml new file mode 100644 index 00000000..8df60dff --- /dev/null +++ b/recipes/wip/sys-info/btop/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing gnu make script, see https://github.com/aristocratos/btop#compilation-linux +[source] +git = "https://github.com/aristocratos/btop" +rev = "fd2a2acdad6fbaad76846cb5e802cf2ae022d670" +[build] +template = "custom" diff --git a/recipes/wip/vm/virtualbox/recipe.toml b/recipes/wip/vm/virtualbox/recipe.toml new file mode 100644 index 00000000..26a78e72 --- /dev/null +++ b/recipes/wip/vm/virtualbox/recipe.toml @@ -0,0 +1,27 @@ +#TODO missing script for kbuild +#TODO missing dependencies +# build instructions: +# https://www.virtualbox.org/wiki/Build_instructions +# https://www.virtualbox.org/wiki/Linux%20build%20instructions +# how to port - https://www.virtualbox.org/wiki/Porting_VirtualBox +[source] +tar = "https://download.virtualbox.org/virtualbox/7.0.20/VirtualBox-7.0.20.tar.bz2" +[build] +template = "custom" +dependencies = [ + "libcap", + "curl", + "libopus", + "pulseaudio", + "qt5-3d", + "qt5-x11extras", + "qt5-tools", + "sdl1", + "sdl2-ttf", + "openssl1", + "libvpx", + "libxml2", + "libxslt", + "zlib", + "mesa", +] From 89135c71099a47bebb04c6a73d2d0a392d4e484f Mon Sep 17 00:00:00 2001 From: Bendeguz Pisch Date: Wed, 21 Aug 2024 10:34:45 +0200 Subject: [PATCH 2081/3180] Make perl5 recipe to build perl 5.40. --- recipes/wip/dev/lang/perl5/configure_tool.sh | 351 +++++++++++++++++++ recipes/wip/dev/lang/perl5/perl.patch | 320 ----------------- recipes/wip/dev/lang/perl5/recipe.toml | 58 ++- recipes/wip/dev/lang/perl5/redox | 5 + 4 files changed, 398 insertions(+), 336 deletions(-) create mode 100644 recipes/wip/dev/lang/perl5/configure_tool.sh delete mode 100644 recipes/wip/dev/lang/perl5/perl.patch create mode 100644 recipes/wip/dev/lang/perl5/redox diff --git a/recipes/wip/dev/lang/perl5/configure_tool.sh b/recipes/wip/dev/lang/perl5/configure_tool.sh new file mode 100644 index 00000000..23d3878e --- /dev/null +++ b/recipes/wip/dev/lang/perl5/configure_tool.sh @@ -0,0 +1,351 @@ +# Toolchain detection + +tryprog() { + log "trying $1=$2" + if command -v $2 1>/dev/null 2>/dev/null; then + define "$1" "$2" + result "$2" + return 0 + else + return 1 + fi +} + +tryfromenv() { + if [ "$mode" = "buildmini" ]; then + getenv ev "HOST$2" + else + getenv ev "$2" + fi + + if [ -n "$ev" ]; then + tryprog $1 "$ev" && return 0 + die "Supplied $ev is not usable" + fi + + unset ev + return 1 +} + +# This is only a function for easy access to return-s +# try.out contains `$cc --version` output. +# +# Figuring out gcc is necessary to make sure -fwrapv fix gets applied. + +detect_cc_version() { + _v=`sed -ne '/^gcc version \([0-9][0-9.]*\).*/s//\1/p' try.out` + + if [ -n "$_v" ]; then + define cctype 'gcc' + define ccversion "$_v" + define gccversion "$_v" + result "gcc $_v" + return + fi + + _v=`sed -ne '/^clang version \([0-9][0-9.]*\).*/s//\1/p' try.out` + + if [ -n "$_v" ]; then + define cctype 'clang' + define ccversion "$_v" + define gccversion "0.0" + result "clang $_v" + return + fi + + define cctype 'cc' + define ccversion '' + define gccversion '0.0' + result 'unknown' +} + +# whichprog symbol VAR prog1 prog2 +whichprog() { + mstart "Checking for $1" + hinted "$1" && return 0 + + # Maybe we've got $CC or $HOSTCC? + tryfromenv "$1" "$2" && return 0 + + # For anything that sounds like a native compilation, + # try no-prefix tools *first*. This is to avoid using + # long names is case the host happens to have them. + if [ "$mode" = 'native' -o "$mode" = 'buildmini' ]; then + tryprog $1 "$3" && return 0 + fi + + # Finally, try $target-gcc + test -n "$toolsprefix" && tryprog $1 "$toolsprefix$3" && return 0 + test -n "$target" && tryprog $1 "$target-$3" && return 0 + test -n "$targetarch" && tryprog $1 "$targetarch-$3" && return 0 + + result "none found" + return 1 +} + +whichprog cc CC gcc || whichprog cc CC cc || die "No C compiler found" +#whichprog ld LD ld # while correct, this breaks MM library test +whichprog ar AR ar || die "Cannot find ar" +whichprog nm NM nm +whichprog ranlib RANLIB ranlib +whichprog readelf READELF readelf || die "Cannot find readelf" +whichprog objdump OBJDUMP objdump || die "Cannot find objdump" + +# XXX: this looks wrong, but the usemmldlt code depends on $ld being able +# to compile try.c. What kind of moron could have written that. Oh wait. +# +# But, there was probably a reason to assume this, likely becase mainline +# Configure did and still does the same. So, ugh, leaving it as is for now. +# Speak of backward bug compatibility. +define ld "$cc" + +log + +mstart "Trying $cc" +if not hinted 'cctype'; then + run $cc -v >try.out 2>&1 + try_dump_out + detect_cc_version +fi + +mstart "Checking whether $cc is a C++ compiler" +if not hinted 'd_cplusplus'; then + try_start + try_cat < try.out 2>>$cfglog; then + define d_cplusplus 'undef' + result "probably no" + else + _r=`grep -v '^#' try.out | grep . | head -1 | grep '^YES'` + if [ -n "$_r" ]; then + define d_cplusplus 'define' + result "yes" + else + define d_cplusplus 'undef' + result 'no' + fi + fi +fi + +mstart "Deciding how to declare external symbols" +if not hinted "extern_C"; then + case "$d_cplusplus" in + define) + define "extern_C" 'extern "C"' + result "$extern_C" + ;; + *) + define "extern_C" 'extern' + result "$extern_C" + ;; + esac +fi + +# File name extensions, must be set before running any compile/link tests +define _o '.o' +define _a '.a' +define so 'so' +define _exe '' + +# Used only for modules +define cccdlflags '-fPIC -Wno-unused-function' +define ccdlflags '-Wl,-E' + +# Misc flags setup +predef lddlflags "-shared" # modules +predef ccflags '' # perl and modules +predef ldflags '' # perl only? +predef cppflags '' # unused? + +# setfromvar what SHELLVAR +setfromenv() { + getenv v "$2" + test -n "$v" && append "$1" "$v" +} + +if [ "$mode" = 'target' -o "$mode" = 'native' ]; then + setfromenv ccflags CFLAGS + setfromenv ldflags LDFLAGS + if [ -n "$sysroot" ]; then + msg "Adding --sysroot to {cc,ld}flags" + prepend ccflags "--sysroot=$sysroot" + prepend ldflags "--sysroot=$sysroot" + # While cccdlflags are used together with ccflags, + # ld is always called with lddlflags *instead*of* ldflags + prepend lddlflags "--sysroot=$sysroot" + # Same for cpp + prepend cppflags "--sysroot=$sysroot" + fi +elif [ "$mode" = 'buildmini' ]; then + setfromenv ccflags HOSTCFLAGS + setfromenv ldflags HOSTLDFLAGS +fi + +# Use $ldflags as default value for $lddlflags, together with whatever +# hints provided, but avoid re-setting anyting specified in the command line +if [ -n "$ldflags" -a "$x_lddlflags" != "user" ]; then + append lddlflags "$ldflags" +fi + +# enddef ccflags # done later in _hdrs because of LARGEFILE_SOURCE +enddef ldflags +enddef lddlflags +enddef cppflags + +mstart "Checking whether ld supports scripts" +if not hinted 'ld_can_script'; then + cat > try.c < try.h </dev/null + + if run $cc $cccdlflags $ccdlflags $ccflags $lddlflags -o a.out try.c \ + -Wl,--version-script=try.h >/dev/null 2>&1 \ + && test -s a.out + then + define ld_can_script 'define' + result "yes" + else + define ld_can_script 'undef' + result "no" + fi +fi + +# Guessing OS is better done with the toolchain available. +# CC output is crucial here -- Android toolchains come with +# generic armeabi prefix and "android" is one of the few osname +# values that make difference later. + +mstart "Trying to guess target OS" +if not hinted 'osname'; then + run $cc -v > try.out 2>&1 + try_dump_out + + _ct=`sed -ne '/^Target: /s///p' try.out` + test -z "$_ct" && _ct="$targetarch" + + case "$_ct" in + *-mingw32) + define osname "MSWin32" + result "MSWin32" + ;; + *-android|*-androideabi) + define osname "android" + result "Android" + ;; + *-linux*) + define osname "linux" + result "Linux" + ;; + *-netbsd*) + define osname "netbsd" + result "NetBSD" + ;; + *-bsd*) + define osname "bsd" + result "BSD" + ;; + *-gnu*) + define osname "gnu" + result "GNU" + ;; + *-midipix*) + define osname "midipix" + result "Midipix" + ;; + *-redox*) + define osname "redox" + result "Redox" + ;; + *) + result "no" + ;; + esac +fi + +# Check whether debugging should be enabled +# Allow -DEBUGGING as well (sets EBUGGING=define) +case "$DEBUGGING:$EBUGGING" in + :*) + DEBUGGING=$EBUGGING + ;; +esac + +mstart "Checking whether to enable -g" +predef optimize '' +case "$DEBUGGING" in + both|define) + append optimize "-g" + result "yes" ;; + *) + result "no" ;; +esac + +mstart "Checking whether to use -DDEBUGGING" +case "$DEBUGGING" in + both|define) + append optimize '-DDEBUGGING' + result "yes" ;; + *) + result "no" ;; +esac + +# gcc 4.9 and above does some optimizations that break perl. +# see perl ticket 121505. +if [ "$cctype" = 'gcc' ]; then + case "$ccversion" in + 1.*|2.*|3.*) ;; + 4.9*) append 'optimize' '-fwrapv -fno-strict-aliasing' ;; + 4.*) ;; + *) append 'optimize' '-fwrapv -fno-strict-aliasing' ;; + esac +fi +enddef optimize + +# These are kind-of part of toolchain, but we do not test them + +# For newer gcc-s, -E alone is *not* enough! Perl expects cpp not to break +# lines, but gcc injects #line directives in-between tokens, subtly breaking +# try_preproc and Errno.pm +define cpp "$cc -E -P" +define cpprun "$cpp" +define cppstdin "$cpp" + +define cpplast - +define cppminus - +define cppsymbols + +define nm_opt +define nm_so_opt + +# cperl wants to know this for some reason +mstart "Checking whether address sanitizer is enabled" +if not hinted sanitize_address 'yes' 'no'; then + case "$ccflags" in + *-fsanitize=address*|*-faddress-sanitizer*) + define sanitize_address 'define' + result 'yes' + ;; + *) + define sanitize_address 'undef' + result 'no' + ;; + esac +fi diff --git a/recipes/wip/dev/lang/perl5/perl.patch b/recipes/wip/dev/lang/perl5/perl.patch deleted file mode 100644 index f3067191..00000000 --- a/recipes/wip/dev/lang/perl5/perl.patch +++ /dev/null @@ -1,320 +0,0 @@ -diff -ru source/ext/POSIX/POSIX.xs source-new/ext/POSIX/POSIX.xs ---- source/ext/POSIX/POSIX.xs 2017-06-30 14:03:22.000000000 -0700 -+++ source-new/ext/POSIX/POSIX.xs 2017-08-17 19:21:59.498359355 -0700 -@@ -1302,6 +1302,7 @@ - #endif - #include - -+#if 0 - #ifdef HAS_TZNAME - # if !defined(WIN32) && !defined(__CYGWIN__) && !defined(NETWARE) && !defined(__UWIN__) - extern char *tzname[]; -@@ -1311,6 +1312,7 @@ - char *tzname[] = { "" , "" }; - #endif - #endif -+#endif - - #if defined(__VMS) && !defined(__POSIX_SOURCE) - -@@ -1327,10 +1329,11 @@ - #if defined (__CYGWIN__) - # define tzname _tzname - #endif --#if defined (WIN32) || defined (NETWARE) -+#if 1 - # undef mkfifo - # define mkfifo(a,b) not_here("mkfifo") - # define ttyname(a) (char*)not_here("ttyname") -+# define pause() not_here("pause") - # define sigset_t long - # define pid_t long - # ifdef _MSC_VER -@@ -1397,7 +1400,7 @@ - typedef HV* POSIX__SigAction; - typedef int POSIX__SigNo; - typedef int POSIX__Fd; --#ifdef I_TERMIOS -+#if 0 - typedef struct termios* POSIX__Termios; - #else /* Define termios types to int, and call not_here for the functions.*/ - #define POSIX__Termios int -@@ -1829,7 +1832,7 @@ - const char * packname - CODE: - { --#ifdef I_TERMIOS -+#if 0 - void *const p = allocate_struct(aTHX_ (ST(0) = sv_newmortal()), - sizeof(struct termios), packname); - /* The previous implementation stored a pointer to an uninitialised -@@ -1896,7 +1899,7 @@ - getcflag = 2 - getlflag = 3 - CODE: --#ifdef I_TERMIOS /* References a termios structure member so ifdef it out. */ -+#if 0 /* References a termios structure member so ifdef it out. */ - switch(ix) { - case 0: - RETVAL = termios_ref->c_iflag; -@@ -1925,7 +1928,7 @@ - POSIX::Termios termios_ref - unsigned int ccix - CODE: --#ifdef I_TERMIOS /* References a termios structure member so ifdef it out. */ -+#if 0 /* References a termios structure member so ifdef it out. */ - if (ccix >= NCCS) - croak("Bad getcc subscript"); - RETVAL = termios_ref->c_cc[ccix]; -@@ -1957,7 +1960,7 @@ - setcflag = 2 - setlflag = 3 - CODE: --#ifdef I_TERMIOS /* References a termios structure member so ifdef it out. */ -+#if 0 /* References a termios structure member so ifdef it out. */ - switch(ix) { - case 0: - termios_ref->c_iflag = flag; -@@ -1982,7 +1985,7 @@ - unsigned int ccix - cc_t cc - CODE: --#ifdef I_TERMIOS /* References a termios structure member so ifdef it out. */ -+#if 0 /* References a termios structure member so ifdef it out. */ - if (ccix >= NCCS) - croak("Bad setcc subscript"); - termios_ref->c_cc[ccix] = cc; -@@ -3540,15 +3543,15 @@ - void - times() - PPCODE: -- struct tms tms; -- clock_t realtime; -- realtime = times( &tms ); -+ //struct tms tms; -+ //clock_t realtime; -+ //realtime = times( &tms ); - EXTEND(SP,5); -- PUSHs( sv_2mortal( newSViv( (IV) realtime ) ) ); -- PUSHs( sv_2mortal( newSViv( (IV) tms.tms_utime ) ) ); -- PUSHs( sv_2mortal( newSViv( (IV) tms.tms_stime ) ) ); -- PUSHs( sv_2mortal( newSViv( (IV) tms.tms_cutime ) ) ); -- PUSHs( sv_2mortal( newSViv( (IV) tms.tms_cstime ) ) ); -+ PUSHs( sv_2mortal( newSViv( (IV) 0 ) ) ); -+ PUSHs( sv_2mortal( newSViv( (IV) 0 ) ) ); -+ PUSHs( sv_2mortal( newSViv( (IV) 0 ) ) ); -+ PUSHs( sv_2mortal( newSViv( (IV) 0 ) ) ); -+ PUSHs( sv_2mortal( newSViv( (IV) 0 ) ) ); - - double - difftime(time1, time2) -diff -ru source/mg.c source-new/mg.c ---- source/mg.c 2017-06-30 14:03:22.000000000 -0700 -+++ source-new/mg.c 2017-08-17 14:40:37.669507085 -0700 -@@ -3034,16 +3034,16 @@ - #ifdef HAS_SETRESUID - PERL_UNUSED_RESULT(setresuid(new_uid, (Uid_t)-1, (Uid_t)-1)); - #else -- if (new_uid == PerlProc_geteuid()) { /* special case $< = $> */ -+// if (new_uid == PerlProc_geteuid()) { /* special case $< = $> */ - #ifdef PERL_DARWIN - /* workaround for Darwin's setuid peculiarity, cf [perl #24122] */ - if (new_uid != 0 && PerlProc_getuid() == 0) - PERL_UNUSED_RESULT(PerlProc_setuid(0)); - #endif -- PERL_UNUSED_RESULT(PerlProc_setuid(new_uid)); -- } else { -+// PERL_UNUSED_RESULT(PerlProc_setuid(new_uid)); -+// } else { - Perl_croak(aTHX_ "setruid() not implemented"); -- } -+// } - #endif - #endif - #endif -@@ -3067,11 +3067,11 @@ - #ifdef HAS_SETRESUID - PERL_UNUSED_RESULT(setresuid((Uid_t)-1, new_euid, (Uid_t)-1)); - #else -- if (new_euid == PerlProc_getuid()) /* special case $> = $< */ -- PERL_UNUSED_RESULT(PerlProc_setuid(new_euid)); -- else { -+// if (new_euid == PerlProc_getuid()) /* special case $> = $< */ -+// PERL_UNUSED_RESULT(PerlProc_setuid(new_euid)); -+// else { - Perl_croak(aTHX_ "seteuid() not implemented"); -- } -+// } - #endif - #endif - #endif -@@ -3095,11 +3095,11 @@ - #ifdef HAS_SETRESGID - PERL_UNUSED_RESULT(setresgid(new_gid, (Gid_t)-1, (Gid_t) -1)); - #else -- if (new_gid == PerlProc_getegid()) /* special case $( = $) */ -- PERL_UNUSED_RESULT(PerlProc_setgid(new_gid)); -- else { -+// if (new_gid == PerlProc_getegid()) /* special case $( = $) */ -+// PERL_UNUSED_RESULT(PerlProc_setgid(new_gid)); -+// else { - Perl_croak(aTHX_ "setrgid() not implemented"); -- } -+// } - #endif - #endif - #endif -@@ -3178,11 +3178,11 @@ - #ifdef HAS_SETRESGID - PERL_UNUSED_RESULT(setresgid((Gid_t)-1, new_egid, (Gid_t)-1)); - #else -- if (new_egid == PerlProc_getgid()) /* special case $) = $( */ -- PERL_UNUSED_RESULT(PerlProc_setgid(new_egid)); -- else { -+// if (new_egid == PerlProc_getgid()) /* special case $) = $( */ -+// PERL_UNUSED_RESULT(PerlProc_setgid(new_egid)); -+// else { - Perl_croak(aTHX_ "setegid() not implemented"); -- } -+// } - #endif - #endif - #endif -diff -ru source/perl.h source-new/perl.h ---- source/perl.h 2017-06-30 14:03:22.000000000 -0700 -+++ source-new/perl.h 2017-08-17 13:14:01.806883580 -0700 -@@ -1061,7 +1061,6 @@ - #ifndef PERL_MICRO - #ifndef memchr - # ifndef HAS_MEMCHR --# define memchr(s,c,n) ninstr((char*)(s), ((char*)(s)) + n, &(c), &(c) + 1) - # endif - #endif - #endif -diff -ru source/pp_hot.c source-new/pp_hot.c ---- source/pp_hot.c 2017-06-30 14:03:22.000000000 -0700 -+++ source-new/pp_hot.c 2017-08-17 13:16:20.234635700 -0700 -@@ -1583,11 +1583,13 @@ - PL_delaymagic &= ~DM_EUID; - } - # endif /* HAS_SETEUID */ -+#if 0 - if (PL_delaymagic & DM_UID) { - if (PL_delaymagic_uid != PL_delaymagic_euid) - DIE(aTHX_ "No setreuid available"); - PERL_UNUSED_RESULT(PerlProc_setuid(PL_delaymagic_uid)); - } -+#endif - # endif /* HAS_SETREUID */ - #endif /* HAS_SETRESUID */ - -@@ -1619,11 +1621,13 @@ - PL_delaymagic &= ~DM_EGID; - } - # endif /* HAS_SETEGID */ -+#if 0 - if (PL_delaymagic & DM_GID) { - if (PL_delaymagic_gid != PL_delaymagic_egid) - DIE(aTHX_ "No setregid available"); - PERL_UNUSED_RESULT(PerlProc_setgid(PL_delaymagic_gid)); - } -+#endif - # endif /* HAS_SETREGID */ - #endif /* HAS_SETRESGID */ - -diff -ru source/pp_sys.c source-new/pp_sys.c ---- source/pp_sys.c 2017-06-30 14:03:22.000000000 -0700 -+++ source-new/pp_sys.c 2017-08-17 14:57:00.983541027 -0700 -@@ -2413,7 +2413,7 @@ - TAINT_PROPER(PL_op_desc[optype]); - - if (optype == OP_IOCTL) --#ifdef HAS_IOCTL -+#if 0 - retval = PerlLIO_ioctl(PerlIO_fileno(IoIFP(io)), func, s); - #else - DIE(aTHX_ "ioctl is not implemented"); -@@ -2705,7 +2705,7 @@ - if (!IoIFP(io)) - goto nuts; - -- PUSHi( PerlSock_shutdown(PerlIO_fileno(IoIFP(io)), how) >= 0 ); -+ PUSHi( 0 ); - RETURN; - - nuts: -@@ -2980,7 +2980,7 @@ - sv_setuid(PUSHmortal, PL_statcache.st_uid); - sv_setgid(PUSHmortal, PL_statcache.st_gid); - --#ifdef USE_STAT_RDEV -+#if 0 - mPUSHi(PL_statcache.st_rdev); - #else - PUSHs(newSVpvs_flags("", SVs_TEMP)); -@@ -4186,7 +4186,7 @@ - - PP(pp_fork) - { --#ifdef HAS_FORK -+#if 1 - dSP; dTARGET; - Pid_t childpid; - #ifdef HAS_SIGPROCMASK -@@ -4332,7 +4332,7 @@ - TAINT_PROPER("system"); - } - PERL_FLUSHALL_FOR_CHILD; --#if (defined(HAS_FORK) || defined(__amigaos4__)) && !defined(VMS) && !defined(OS2) || defined(PERL_MICRO) -+#if 1 - { - #ifdef __amigaos4__ - struct UserData userdata; -@@ -5582,7 +5582,7 @@ - - PP(pp_ggrent) - { --#ifdef HAS_GROUP -+#if 0 - dSP; - const I32 which = PL_op->op_type; - const struct group *grent; -diff -ru source/util.c source-new/util.c ---- source/util.c 2017-06-30 14:03:22.000000000 -0700 -+++ source-new/util.c 2017-08-17 15:42:05.328932377 -0700 -@@ -2456,7 +2456,7 @@ - PerlIO * - Perl_my_popen_list(pTHX_ const char *mode, int n, SV **args) - { --#if (!defined(DOSISH) || defined(HAS_FORK)) && !defined(OS2) && !defined(VMS) && !defined(NETWARE) && !defined(__LIBCATAMOUNT__) && !defined(__amigaos4__) -+#if 1 - int p[2]; - I32 This, that; - Pid_t pid; -@@ -2821,7 +2821,7 @@ - Pid_t - Perl_my_fork(void) - { --#if defined(HAS_FORK) -+#if 1 - Pid_t pid; - #if defined(USE_ITHREADS) && !defined(HAS_PTHREAD_ATFORK) - atfork_lock(); -@@ -2842,7 +2842,7 @@ - #endif /* HAS_FORK */ - } - --#ifndef HAS_DUP2 -+#if 0 - int - dup2(int oldfd, int newfd) - { -@@ -3196,7 +3196,7 @@ - - #if defined(OS2) - int pclose(); --#ifdef HAS_FORK -+#if 1 - int /* Cannot prototype with I32 - in os2ish.h. */ - my_syspclose(PerlIO *ptr) diff --git a/recipes/wip/dev/lang/perl5/recipe.toml b/recipes/wip/dev/lang/perl5/recipe.toml index d4074528..2ea366e2 100644 --- a/recipes/wip/dev/lang/perl5/recipe.toml +++ b/recipes/wip/dev/lang/perl5/recipe.toml @@ -1,24 +1,50 @@ -#TODO incomplete script -#TODO does the patch is still needed? -#TODO update the patch to match the current version +#TODO compiles, works in a basic way, but needs figuring out why -ldl is ignored +#TODO also until new signal implementation gets to be the default, remove siginfo struct from relibc's include/bits/signal.h +# and modify relibc/src/header/signal/mod.rs sigtimedwait second parameter's type from siginfo_t to siginfo (cbindgen needs a reference) +#TODO needs further testing [source] tar = "https://www.cpan.org/src/5.0/perl-5.40.0.tar.gz" -patches = [ - "perl.patch", -] [build] template = "custom" script = """ -curl -L -O --time-cond perl-cross-1.5.3.tar.gz https://github.com/arsv/perl-cross/releases/download/1.5.3/perl-cross-1.5.3.tar.gz -tar --strip-components=1 -xvf perl-cross-1.5.3.tar.gz -wget -O cnf/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" -sysroot="$($HOST-gcc -print-sysroot)" # does it is still needed? -sed -i "s/^#define Netdb_name_t.*/#define Netdb_name_t const char*/" config.h # XXX -sed -i 's/#define Strerror(e).*$/#define Strerror(e) strerror(e)/' config.h # -echo "#define HAS_VPRINTF" >> config.h -COOKBOOK_CONFIGURE_FLAGS+=( +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ #move it to the top of the script after debugging - BP +curl -L -O --time-cond perl-cross-1.6.tar.gz https://github.com/arsv/perl-cross/releases/download/1.6/perl-cross-1.6.tar.gz +tar --strip-components=1 -xvf perl-cross-1.6.tar.gz +wget -O ./cnf/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +#Note: since perl-cross can run only inside the source-tree (out-of-tree is bugged) it's easier to do everything in the build directory +COOKBOOK_CONFIGURE=${COOKBOOK_BUILD}/configure +#Note: non-standard configure, familiar flags can have different meaning! +COOKBOOK_CONFIGURE_FLAGS=( +--host-cc=gcc +--host-cpp=g++ +--target=x86_64-unknown-redox +--prefix= +--sysroot=${COOKBOOK_SYSROOT} --disable-mod=Sys-Syslog,Time-HiRes - --with-libs='m' + #--with-libs='m' ) -cookbook_configure +cp ${COOKBOOK_RECIPE}/configure_tool.sh ${COOKBOOK_BUILD}/cnf/configure_tool.sh +cp ${COOKBOOK_RECIPE}/redox ${COOKBOOK_BUILD}/cnf/hints/redox +mkdir ${COOKBOOK_SYSROOT}/usr +cp -r /mnt/c/commd/redox/redox/prefix/x86_64-unknown-redox/relibc-install/x86_64-unknown-redox/include ${COOKBOOK_SYSROOT}/usr +./configure --host-cc=gcc --host-cpp=g++ --target=x86_64-unknown-redox --sysroot=${COOKBOOK_SYSROOT} --disable-mod=Sys-Syslog +sed -i "s/^#define Netdb_name_t.*/#define Netdb_name_t const char*/" config.h +#OSNAME sed -i 's/^#define OSNAME.*/#define OSNAME "redox"/' config.h +sed -i "s/^# HAS_NANOSLEEP.*/#define HAS_NANOSLEEP/" config.h +sed -i "s|^/.#define I_GRP.*|#define I_GRP|" config.h +echo "#define HAS_GROUP" >> config.h +#sed -i 's/#define Strerror(e).*$/#define Strerror(e) strerror(e)/' config.h +#echo "#define HAS_VPRINTF" >> config.h +make -j4 +make install DESTDIR="${COOKBOOK_STAGE}" +pushd . +cd "${COOKBOOK_STAGE}/usr/share/man/man3" +for f in *; do +case "$f" in +*::*) +mv "$f" "${f//::/__}"; +;; +esac +done +popd """ diff --git a/recipes/wip/dev/lang/perl5/redox b/recipes/wip/dev/lang/perl5/redox new file mode 100644 index 00000000..5b62f5bc --- /dev/null +++ b/recipes/wip/dev/lang/perl5/redox @@ -0,0 +1,5 @@ +# NetBSD syscalls +d_nanosleep='define' + +# libraries to test +libswanted='m dl' From 985639ecfc013013719a8e9e935281927634f447 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 26 Aug 2024 13:34:45 -0600 Subject: [PATCH 2082/3180] Use master branch for cosmic-edit, cosmic-files, and cosmic-term --- recipes/tools/cosmic-edit/recipe.toml | 2 +- recipes/tools/cosmic-files/recipe.toml | 2 +- recipes/tools/cosmic-term/recipe.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/tools/cosmic-edit/recipe.toml b/recipes/tools/cosmic-edit/recipe.toml index f05ecbd1..7af455cf 100644 --- a/recipes/tools/cosmic-edit/recipe.toml +++ b/recipes/tools/cosmic-edit/recipe.toml @@ -1,7 +1,7 @@ [source] git = "https://github.com/pop-os/cosmic-edit.git" branch = "master" -rev = "df5d10936c5a1cc16e231b92221eae7c73ed9da4" + [build] template = "custom" script = """ diff --git a/recipes/tools/cosmic-files/recipe.toml b/recipes/tools/cosmic-files/recipe.toml index bc095a67..1314097d 100644 --- a/recipes/tools/cosmic-files/recipe.toml +++ b/recipes/tools/cosmic-files/recipe.toml @@ -1,7 +1,7 @@ [source] git = "https://github.com/pop-os/cosmic-files.git" branch = "master" -rev = "190029aa27d08a26877e73db2dda789de3e6595f" + [build] template = "custom" script = """ diff --git a/recipes/tools/cosmic-term/recipe.toml b/recipes/tools/cosmic-term/recipe.toml index b5d0f11a..ec06ea5b 100644 --- a/recipes/tools/cosmic-term/recipe.toml +++ b/recipes/tools/cosmic-term/recipe.toml @@ -1,7 +1,7 @@ [source] git = "https://github.com/pop-os/cosmic-term.git" branch = "master" -rev = "be808b56cf24d03fc99cf44b0885078a81a16523" + [build] template = "custom" script = """ From c5a6357d856cc1b0f7e7df9a28c34db42bb76f94 Mon Sep 17 00:00:00 2001 From: Bendeguz Pisch Date: Sat, 31 Aug 2024 12:06:50 +0000 Subject: [PATCH 2083/3180] Update GNU make to v4.4 and create new recipe and new patch. --- recipes/dev/gnu-make/make.patch | 123 ------------------------------- recipes/dev/gnu-make/recipe.sh | 30 -------- recipes/dev/gnu-make/recipe.toml | 10 +++ recipes/dev/gnu-make/redox.patch | 12 +++ 4 files changed, 22 insertions(+), 153 deletions(-) delete mode 100644 recipes/dev/gnu-make/make.patch delete mode 100644 recipes/dev/gnu-make/recipe.sh create mode 100644 recipes/dev/gnu-make/recipe.toml create mode 100644 recipes/dev/gnu-make/redox.patch diff --git a/recipes/dev/gnu-make/make.patch b/recipes/dev/gnu-make/make.patch deleted file mode 100644 index ca146c8b..00000000 --- a/recipes/dev/gnu-make/make.patch +++ /dev/null @@ -1,123 +0,0 @@ -diff -ru make-4.2/config/config.sub make-4.2-new/config/config.sub ---- make-4.2/config/config.sub 2018-11-16 21:11:15.392794814 -0700 -+++ make-4.2-new/config/config.sub 2018-11-16 21:11:37.922637742 -0700 -@@ -1376,7 +1376,7 @@ - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ -- | -sym* | -kopensolaris* | -plan9* \ -+ | -sym* | -kopensolaris* | -plan9* | -redox* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* | -cloudabi* | -sortix* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ -diff -ru make-4.2/getopt1.c make-4.2-new/getopt1.c ---- make-4.2/getopt1.c 2018-11-16 21:11:15.408796156 -0700 -+++ make-4.2-new/getopt1.c 2018-11-16 21:11:37.922637742 -0700 -@@ -48,6 +48,8 @@ - #endif - #endif - -+#define ELIDE_CODE -+ - #ifndef ELIDE_CODE - - -diff -ru make-4.2/getopt.c make-4.2-new/getopt.c ---- make-4.2/getopt.c 2018-11-16 21:11:15.384794143 -0700 -+++ make-4.2-new/getopt.c 2018-11-16 21:11:37.922637742 -0700 -@@ -56,6 +56,8 @@ - # endif - #endif - -+#define ELIDE_CODE -+ - #ifndef ELIDE_CODE - - -diff -ru make-4.2/glob/fnmatch.c make-4.2-new/glob/fnmatch.c ---- make-4.2/glob/fnmatch.c 2018-11-16 21:11:15.384794143 -0700 -+++ make-4.2-new/glob/fnmatch.c 2018-11-16 21:11:53.311846128 -0700 -@@ -477,6 +477,7 @@ - } - - -+/* - int - fnmatch (pattern, string, flags) - const char *pattern; -@@ -485,5 +486,6 @@ - { - return internal_fnmatch (pattern, string, flags & FNM_PERIOD, flags); - } -+*/ - - #endif /* _LIBC or not __GNU_LIBRARY__. */ -diff -ru make-4.2/glob/glob.c make-4.2-new/glob/glob.c ---- make-4.2/glob/glob.c 2018-11-16 21:11:15.384794143 -0700 -+++ make-4.2-new/glob/glob.c 2018-11-16 21:11:37.926638062 -0700 -@@ -625,9 +625,9 @@ - #else - const char *home_dir = getenv ("HOME"); - #endif --# ifdef _AMIGA -+# if 1 - if (home_dir == NULL || home_dir[0] == '\0') -- home_dir = "SYS:"; -+ home_dir = "/home/user"; - # else - # ifdef WINDOWS32 - if (home_dir == NULL || home_dir[0] == '\0') -@@ -717,7 +717,7 @@ - dirname = newp; - } - } --# if !defined _AMIGA && !defined WINDOWS32 && !defined VMS -+# if 0 - else - { - char *end_name = strchr (dirname, '/'); -diff -ru make-4.2/job.c make-4.2-new/job.c ---- make-4.2/job.c 2018-11-16 21:11:15.380793809 -0700 -+++ make-4.2-new/job.c 2018-11-16 21:11:37.926638062 -0700 -@@ -1038,7 +1038,7 @@ - void - block_sigs (void) - { --#ifdef POSIX -+#if 0 - (void) sigprocmask (SIG_BLOCK, &fatal_signal_set, (sigset_t *) 0); - #else - # ifdef HAVE_SIGSETMASK -@@ -1051,9 +1051,11 @@ - void - unblock_sigs (void) - { -+/* - sigset_t empty; - sigemptyset (&empty); - sigprocmask (SIG_SETMASK, &empty, (sigset_t *) 0); -+*/ - } - #endif - -diff -ru make-4.2/read.c make-4.2-new/read.c ---- make-4.2/read.c 2018-11-16 21:11:15.384794143 -0700 -+++ make-4.2-new/read.c 2018-11-16 21:11:37.926638062 -0700 -@@ -2937,7 +2937,7 @@ - free (home_dir); - home_dir = getenv ("HOME"); - } --# if !defined(_AMIGA) && !defined(WINDOWS32) -+# if 0 - if (home_dir == 0 || home_dir[0] == '\0') - { - char *logname = getlogin (); -@@ -2958,7 +2958,7 @@ - return new; - } - } --# if !defined(_AMIGA) && !defined(WINDOWS32) -+# if 0 - else - { - struct passwd *pwent; diff --git a/recipes/dev/gnu-make/recipe.sh b/recipes/dev/gnu-make/recipe.sh deleted file mode 100644 index e884b055..00000000 --- a/recipes/dev/gnu-make/recipe.sh +++ /dev/null @@ -1,30 +0,0 @@ -VERSION=4.2.1 -TAR=https://ftp.gnu.org/gnu/make/make-$VERSION.tar.gz - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - export CFLAGS="-DPOSIX -DNO_ARCHIVES -DNO_OUTPUT_SYNC" - export LDFLAGS="-static" - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix=/ \ - --without-guile - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - skip=1 -} diff --git a/recipes/dev/gnu-make/recipe.toml b/recipes/dev/gnu-make/recipe.toml new file mode 100644 index 00000000..0698ffd2 --- /dev/null +++ b/recipes/dev/gnu-make/recipe.toml @@ -0,0 +1,10 @@ +#TODO very basic makefiles are tested to work but needs more testing +[source] +tar = "http://ftp.gnu.org/gnu/make/make-4.4.tar.gz" +patches = [ + "redox.patch" +] + +[build] +template = "configure" + diff --git a/recipes/dev/gnu-make/redox.patch b/recipes/dev/gnu-make/redox.patch new file mode 100644 index 00000000..1dba02da --- /dev/null +++ b/recipes/dev/gnu-make/redox.patch @@ -0,0 +1,12 @@ +diff -ruwN make-4.4/src/arscan.c source/src/arscan.c +--- make-4.4/src/arscan.c 2022-10-23 16:52:32.000000000 +0200 ++++ source/src/arscan.c 2024-08-23 18:28:49.206084084 +0200 +@@ -331,7 +331,7 @@ + #endif + + #ifndef WINDOWS32 +-# if !defined (__ANDROID__) && !defined (__BEOS__) ++# if 0 + # include + # else + /* These platforms don't have but have archives in the same format From 5fe26754f1716a051e4d19402b3a49028af6b99d Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Mon, 2 Sep 2024 16:35:15 +0200 Subject: [PATCH 2084/3180] Remove the -Csoft-float argument when building the kernel The targets specify the soft-float ABI already and -Csoft-float should likely have never existed in the first place. It is unsound to mix crates compiled with different float ABI's and the only stable way to get all crates to agree on the soft float ABI is by specifying a target which uses the soft float ABI anyway even without explicit -Csoft-float. See also https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/.60-Csoft-float.60.20considered.20harmful --- recipes/core/kernel/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/core/kernel/recipe.toml b/recipes/core/kernel/recipe.toml index 089e16b6..6ba3b4b0 100644 --- a/recipes/core/kernel/recipe.toml +++ b/recipes/core/kernel/recipe.toml @@ -13,7 +13,6 @@ cargo rustc \ --release \ -Z build-std=core,alloc \ -- \ - -C soft-float \ -C link-arg=-T -Clink-arg="${COOKBOOK_SOURCE}/linkers/${ARCH}.ld" \ -C link-arg=-z -Clink-arg=max-page-size=0x1000 \ --emit link="${PWD}/kernel.all" From 882b21083658bcb34dcf71fea1f87c8ede92a0fe Mon Sep 17 00:00:00 2001 From: Bendeguz Pisch Date: Thu, 5 Sep 2024 09:45:13 +0200 Subject: [PATCH 2085/3180] Fix and clean up the perl5 recipe. --- recipes/wip/dev/lang/perl5/recipe.toml | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/recipes/wip/dev/lang/perl5/recipe.toml b/recipes/wip/dev/lang/perl5/recipe.toml index 2ea366e2..ab8b3e60 100644 --- a/recipes/wip/dev/lang/perl5/recipe.toml +++ b/recipes/wip/dev/lang/perl5/recipe.toml @@ -6,6 +6,9 @@ tar = "https://www.cpan.org/src/5.0/perl-5.40.0.tar.gz" [build] template = "custom" +dependencies = [ + "relibc" +] script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ #move it to the top of the script after debugging - BP curl -L -O --time-cond perl-cross-1.6.tar.gz https://github.com/arsv/perl-cross/releases/download/1.6/perl-cross-1.6.tar.gz @@ -13,28 +16,16 @@ tar --strip-components=1 -xvf perl-cross-1.6.tar.gz wget -O ./cnf/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" #Note: since perl-cross can run only inside the source-tree (out-of-tree is bugged) it's easier to do everything in the build directory COOKBOOK_CONFIGURE=${COOKBOOK_BUILD}/configure -#Note: non-standard configure, familiar flags can have different meaning! -COOKBOOK_CONFIGURE_FLAGS=( ---host-cc=gcc ---host-cpp=g++ ---target=x86_64-unknown-redox ---prefix= ---sysroot=${COOKBOOK_SYSROOT} - --disable-mod=Sys-Syslog,Time-HiRes - #--with-libs='m' -) cp ${COOKBOOK_RECIPE}/configure_tool.sh ${COOKBOOK_BUILD}/cnf/configure_tool.sh cp ${COOKBOOK_RECIPE}/redox ${COOKBOOK_BUILD}/cnf/hints/redox mkdir ${COOKBOOK_SYSROOT}/usr -cp -r /mnt/c/commd/redox/redox/prefix/x86_64-unknown-redox/relibc-install/x86_64-unknown-redox/include ${COOKBOOK_SYSROOT}/usr +ln -s "${COOKBOOK_SYSROOT}/include" "${COOKBOOK_SYSROOT}/usr/include" +#Note: non-standard configure, familiar flags can have different meaning! ./configure --host-cc=gcc --host-cpp=g++ --target=x86_64-unknown-redox --sysroot=${COOKBOOK_SYSROOT} --disable-mod=Sys-Syslog sed -i "s/^#define Netdb_name_t.*/#define Netdb_name_t const char*/" config.h -#OSNAME sed -i 's/^#define OSNAME.*/#define OSNAME "redox"/' config.h sed -i "s/^# HAS_NANOSLEEP.*/#define HAS_NANOSLEEP/" config.h sed -i "s|^/.#define I_GRP.*|#define I_GRP|" config.h echo "#define HAS_GROUP" >> config.h -#sed -i 's/#define Strerror(e).*$/#define Strerror(e) strerror(e)/' config.h -#echo "#define HAS_VPRINTF" >> config.h make -j4 make install DESTDIR="${COOKBOOK_STAGE}" pushd . From b584088426120f6d0e3800e2e90f545ff527b25b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 6 Sep 2024 05:00:44 +0000 Subject: [PATCH 2086/3180] Fix the webtorrent-cli recipe --- recipes/wip/net/bittorrent/webtorrent-cli/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/net/bittorrent/webtorrent-cli/recipe.toml b/recipes/wip/net/bittorrent/webtorrent-cli/recipe.toml index 17a33dc4..00dd4f3c 100644 --- a/recipes/wip/net/bittorrent/webtorrent-cli/recipe.toml +++ b/recipes/wip/net/bittorrent/webtorrent-cli/recipe.toml @@ -8,6 +8,6 @@ script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/webtorrent-cli mkdir -pv "${COOKBOOK_STAGE}"/usr/bin cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/share/webtorrent-cli -echo "#!/usr/bin/env sh \n cd /usr/share/webtorrent-cli \n npm run" > "${COOKBOOK_STAGE}"/usr/bin/webtorrent-cli +echo "#!/usr/bin/env sh \n cd /usr/share/webtorrent-cli \n npx webtorrent-cli" > "${COOKBOOK_STAGE}"/usr/bin/webtorrent-cli chmod a+x "${COOKBOOK_STAGE}"/usr/bin/webtorrent-cli """ From 29bf57841a7485959de53703b41f2d6bd74ae802 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 6 Sep 2024 11:44:21 -0600 Subject: [PATCH 2087/3180] ca-certificates: use pre-generated data --- recipes/other/ca-certificates/recipe.toml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/recipes/other/ca-certificates/recipe.toml b/recipes/other/ca-certificates/recipe.toml index 17bc5038..cbd70827 100644 --- a/recipes/other/ca-certificates/recipe.toml +++ b/recipes/other/ca-certificates/recipe.toml @@ -4,11 +4,6 @@ git = "https://gitlab.redox-os.org/redox-os/ca-certificates.git" [build] template = "custom" script = """ -curl \ - -o certdata.txt \ - --time-cond certdata.txt \ - https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt -"${COOKBOOK_SOURCE}/make-ca.sh" -D "${COOKBOOK_BUILD}" mkdir -pv "${COOKBOOK_STAGE}/ssl" -cp -rv "${COOKBOOK_BUILD}/etc/ssl/certs" "${COOKBOOK_STAGE}/ssl/certs" +cp -rv "${COOKBOOK_SOURCE}/certs" "${COOKBOOK_STAGE}/ssl/certs" """ From dceb6963723cf0b5326d8fdf85981c97ff40d51b Mon Sep 17 00:00:00 2001 From: Ashton Kemerling Date: Fri, 6 Sep 2024 20:24:06 -0600 Subject: [PATCH 2088/3180] Add sqllogictest-rs Rust port of sqlite3 sqllogictest tool. Will be useful for verifying that relational dbs are working as expected. Only supports postgres atm, but more are being added. --- recipes/wip/db/sqllogictest/recipe.toml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 recipes/wip/db/sqllogictest/recipe.toml diff --git a/recipes/wip/db/sqllogictest/recipe.toml b/recipes/wip/db/sqllogictest/recipe.toml new file mode 100644 index 00000000..1cafcf17 --- /dev/null +++ b/recipes/wip/db/sqllogictest/recipe.toml @@ -0,0 +1,25 @@ +#TODO Works, but not reliably +#TODO Raises the following warnings. +#setsockopt(16, 6, 1, 0x7fffffff4adc, 4) - unknown option +#setsockopt(16, 1, 9, 0x7fffffff4ad0, 4) - unknown option +#setsockopt(16, 6, 1, 0x7fffffff4ad4, 4) - unknown option + + +[source] +git = "git@github.com:risinglightdb/sqllogictest-rs.git" +rev = "985748550bb8657260dac9da0fe3ebffd3cf4f28" # 0.21.0 +[build] +template = "custom" +# Necessary deviation from +script = """ +package=sqllogictest-bin +recipe="$(basename "${COOKBOOK_RECIPE}")" +"${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --package "${package}" \ + --release +mkdir -pv "${COOKBOOK_STAGE}/usr/bin" +cp -v \ + "target/${TARGET}/release/${recipe}" \ + "${COOKBOOK_STAGE}/usr/bin/${recipe}" +""" From 620e7aed810eaad2f6e402bfee7a4ad11c0a72f7 Mon Sep 17 00:00:00 2001 From: Ashton Kemerling Date: Fri, 6 Sep 2024 20:29:39 -0600 Subject: [PATCH 2089/3180] Better TODOs for sqlite3. --- recipes/wip/db/sqlite3/recipe.toml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/recipes/wip/db/sqlite3/recipe.toml b/recipes/wip/db/sqlite3/recipe.toml index 60b3aeb3..7fb41b0a 100644 --- a/recipes/wip/db/sqlite3/recipe.toml +++ b/recipes/wip/db/sqlite3/recipe.toml @@ -1,5 +1,9 @@ -#TODO compiled but not tested #TODO incomplete port +#TODO Complied, works for basic use cases. pthread mutexes compiled in, but not working. +#TODO Calls triggering mutexes yield the following errors: +#relibc getrlimit(7, 0x7ffffffffc38): not implemented +#relibc getgroups(65536, 0x14920): not implemented +#Runtime error near line 1: disk I/O error (10) [source] tar = "https://www.sqlite.org/2024/sqlite-autoconf-3450000.tar.gz" #blake3 = "44bc75a40d32afa71cffe149f766857c3cc41dea261b1e4645fde5f73f4c9268" From b87d8fd0bb2cd9758371e8d576dacb1c808db6d6 Mon Sep 17 00:00:00 2001 From: Ashton Kemerling Date: Fri, 6 Sep 2024 20:33:02 -0600 Subject: [PATCH 2090/3180] Use HTTPS. --- recipes/wip/db/sqllogictest/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/db/sqllogictest/recipe.toml b/recipes/wip/db/sqllogictest/recipe.toml index 1cafcf17..90a6aca7 100644 --- a/recipes/wip/db/sqllogictest/recipe.toml +++ b/recipes/wip/db/sqllogictest/recipe.toml @@ -6,7 +6,7 @@ [source] -git = "git@github.com:risinglightdb/sqllogictest-rs.git" +git = "https://github.com/risinglightdb/sqllogictest-rs.git" rev = "985748550bb8657260dac9da0fe3ebffd3cf4f28" # 0.21.0 [build] template = "custom" From cec097e40a2ed42c7276d9d44c349c78349869d6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 7 Sep 2024 08:40:02 -0600 Subject: [PATCH 2091/3180] prboom: disable music --- recipes/games/prboom/recipe.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/recipes/games/prboom/recipe.sh b/recipes/games/prboom/recipe.sh index 319f2103..1b24a2fa 100644 --- a/recipes/games/prboom/recipe.sh +++ b/recipes/games/prboom/recipe.sh @@ -1,3 +1,4 @@ +#TODO: remove --without-mixer when it no longer crashes on x86_64 VERSION=2.5.0 TAR=https://downloads.sourceforge.net/project/prboom/prboom%20stable/$VERSION/prboom-$VERSION.tar.gz BUILD_DEPENDS=(sdl1 liborbital sdl1-mixer libogg libvorbis) @@ -21,6 +22,7 @@ function recipe_build { --disable-i386-asm \ --disable-gl \ --disable-sdltest \ + --without-mixer \ --without-net \ --with-sdl-prefix="$sysroot" \ ac_cv_lib_SDL_mixer_Mix_OpenAudio=yes From 5c30a878c6c2bde285b8d911cefef772706ec873 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 7 Sep 2024 10:10:49 -0600 Subject: [PATCH 2092/3180] prboom: disable loading config file on redox --- recipes/games/prboom/01_redox.patch | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/recipes/games/prboom/01_redox.patch b/recipes/games/prboom/01_redox.patch index 29b1d2dc..2971f07c 100644 --- a/recipes/games/prboom/01_redox.patch +++ b/recipes/games/prboom/01_redox.patch @@ -1,6 +1,6 @@ diff -burpN source-original/configure.ac source/configure.ac ---- source-original/configure.ac 2008-11-09 20:12:37.000000000 +0100 -+++ source/configure.ac 2018-04-22 23:41:16.945896818 +0200 +--- source-original/configure.ac 2008-11-09 12:12:37.000000000 -0700 ++++ source/configure.ac 2024-09-07 10:06:36.540104562 -0600 @@ -85,8 +85,6 @@ if test "$cross_compiling" != "yes"; the fi @@ -10,3 +10,19 @@ diff -burpN source-original/configure.ac source/configure.ac AC_DECL_SYS_SIGLIST AC_HEADER_SYS_WAIT AC_CHECK_HEADERS(unistd.h asm/byteorder.h sched.h) +diff -burpN source-original/src/m_misc.c source/src/m_misc.c +--- source-original/src/m_misc.c 2008-11-09 10:13:04.000000000 -0700 ++++ source/src/m_misc.c 2024-09-07 10:09:06.890301682 -0600 +@@ -954,6 +954,12 @@ void M_LoadDefaults (void) + // read the file in, overriding any set defaults + + f = fopen (defaultfile, "r"); ++#if defined(__redox__) ++ if (f) { ++ printf("disabling load of config file on redox\n"); ++ f = NULL; ++ } ++#endif + if (f) + { + while (!feof(f)) From 487c0c83c3e8e56388810a51d2fc2d46281fd00f Mon Sep 17 00:00:00 2001 From: Kamil Koczurek Date: Mon, 9 Sep 2024 18:12:57 +0200 Subject: [PATCH 2093/3180] Add `path` source specifier Also: * rustfmt --- src/bin/cook.rs | 498 +++++++++++++++++++++++++++--------------------- src/recipe.rs | 102 ++++++---- 2 files changed, 344 insertions(+), 256 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 0908b465..335d0214 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1,9 +1,8 @@ use cookbook::blake3::blake3_progress; -use cookbook::recipe::{Recipe, SourceRecipe, BuildKind, BuildRecipe, PackageRecipe}; +use cookbook::recipe::{BuildKind, BuildRecipe, PackageRecipe, Recipe, SourceRecipe}; use cookbook::recipe_find::recipe_find; use std::{ - env, - fs, + env, fs, io::{self, Write}, path::{Path, PathBuf}, process::{self, Command, Stdio}, @@ -17,21 +16,13 @@ fn remove_all(path: &Path) -> Result<(), String> { fs::remove_dir_all(path) } else { fs::remove_file(path) - }.map_err(|err| format!( - "failed to remove '{}': {}\n{:?}", - path.display(), - err, - err - )) + } + .map_err(|err| format!("failed to remove '{}': {}\n{:?}", path.display(), err, err)) } fn create_dir(dir: &Path) -> Result<(), String> { - fs::create_dir(dir).map_err(|err| format!( - "failed to create '{}': {}\n{:?}", - dir.display(), - err, - err - )) + fs::create_dir(dir) + .map_err(|err| format!("failed to create '{}': {}\n{:?}", dir.display(), err, err)) } fn create_dir_clean(dir: &Path) -> Result<(), String> { @@ -41,22 +32,43 @@ fn create_dir_clean(dir: &Path) -> Result<(), String> { create_dir(dir) } -fn modified(path: &Path) -> Result { - let metadata = fs::metadata(path).map_err(|err| format!( - "failed to get metadata of '{}': {}\n{:#?}", - path.display(), - err, - err - ))?; - metadata.modified().map_err(|err| format!( - "failed to get modified time of '{}': {}\n{:#?}", - path.display(), - err, - err - )) +fn copy_dir_all(src: impl AsRef, dst: impl AsRef) -> io::Result<()> { + fs::create_dir_all(&dst)?; + for entry in fs::read_dir(src)? { + let entry = entry?; + let ty = entry.file_type()?; + if ty.is_dir() { + copy_dir_all(entry.path(), dst.as_ref().join(entry.file_name()))?; + } else { + fs::copy(entry.path(), dst.as_ref().join(entry.file_name()))?; + } + } + Ok(()) } -fn modified_dir_inner bool>(dir: &Path, filter: F) -> io::Result { +fn modified(path: &Path) -> Result { + let metadata = fs::metadata(path).map_err(|err| { + format!( + "failed to get metadata of '{}': {}\n{:#?}", + path.display(), + err, + err + ) + })?; + metadata.modified().map_err(|err| { + format!( + "failed to get modified time of '{}': {}\n{:#?}", + path.display(), + err, + err + ) + }) +} + +fn modified_dir_inner bool>( + dir: &Path, + filter: F, +) -> io::Result { let mut newest = fs::metadata(dir)?.modified()?; for entry_res in WalkDir::new(dir).into_iter().filter_entry(filter) { let entry = entry_res?; @@ -69,48 +81,55 @@ fn modified_dir_inner bool>(dir: &Path, filter: F) -> io: } fn modified_dir(dir: &Path) -> Result { - modified_dir_inner(dir, |_| true).map_err(|err| format!( - "failed to get modified time of '{}': {}\n{:#?}", - dir.display(), - err, - err - )) + modified_dir_inner(dir, |_| true).map_err(|err| { + format!( + "failed to get modified time of '{}': {}\n{:#?}", + dir.display(), + err, + err + ) + }) } fn modified_dir_ignore_git(dir: &Path) -> Result { modified_dir_inner(dir, |entry| { - entry.file_name().to_str().map(|s| s != ".git").unwrap_or(true) - }).map_err(|err| format!( - "failed to get modified time of '{}': {}\n{:#?}", - dir.display(), - err, - err - )) + entry + .file_name() + .to_str() + .map(|s| s != ".git") + .unwrap_or(true) + }) + .map_err(|err| { + format!( + "failed to get modified time of '{}': {}\n{:#?}", + dir.display(), + err, + err + ) + }) } fn rename(src: &Path, dst: &Path) -> Result<(), String> { - fs::rename(src, dst).map_err(|err| format!( - "failed to rename '{}' to '{}': {}\n{:?}", - src.display(), - dst.display(), - err, - err - )) + fs::rename(src, dst).map_err(|err| { + format!( + "failed to rename '{}' to '{}': {}\n{:?}", + src.display(), + dst.display(), + err, + err + ) + }) } fn run_command(mut command: process::Command) -> Result<(), String> { - let status = command.status().map_err(|err| format!( - "failed to run {:?}: {}\n{:#?}", - command, - err, - err - ))?; + let status = command + .status() + .map_err(|err| format!("failed to run {:?}: {}\n{:#?}", command, err, err))?; - if ! status.success() { + if !status.success() { return Err(format!( "failed to run {:?}: exited with status {}", - command, - status + command, status )); } @@ -120,39 +139,29 @@ fn run_command(mut command: process::Command) -> Result<(), String> { fn run_command_stdin(mut command: process::Command, stdin_data: &[u8]) -> Result<(), String> { command.stdin(Stdio::piped()); - let mut child = command.spawn().map_err(|err| format!( - "failed to spawn {:?}: {}\n{:#?}", - command, - err, - err - ))?; + let mut child = command + .spawn() + .map_err(|err| format!("failed to spawn {:?}: {}\n{:#?}", command, err, err))?; if let Some(ref mut stdin) = child.stdin { - stdin.write_all(stdin_data).map_err(|err| format!( - "failed to write stdin of {:?}: {}\n{:#?}", - command, - err, - err - ))?; + stdin.write_all(stdin_data).map_err(|err| { + format!( + "failed to write stdin of {:?}: {}\n{:#?}", + command, err, err + ) + })?; } else { - return Err(format!( - "failed to find stdin of {:?}", - command - )); + return Err(format!("failed to find stdin of {:?}", command)); } - let status = child.wait().map_err(|err| format!( - "failed to run {:?}: {}\n{:#?}", - command, - err, - err - ))?; + let status = child + .wait() + .map_err(|err| format!("failed to run {:?}: {}\n{:#?}", command, err, err))?; - if ! status.success() { + if !status.success() { return Err(format!( "failed to run {:?}: exited with status {}", - command, - status + command, status )); } @@ -163,27 +172,44 @@ fn fetch(recipe_dir: &Path, source: &Option) -> Result { - if ! source_dir.is_symlink() { + if !source_dir.is_symlink() { if source_dir.is_dir() { return Err(format!( "'{dir}' is a directory, but recipe indicated a symlink. \n\ try removing '{dir}' if you haven't made any changes that would be lost", - dir=source_dir.display(), + dir = source_dir.display(), )); } let original = Path::new(same_as).join("source"); - std::os::unix::fs::symlink(&original, &source_dir).map_err(|err| format!( - "failed to symlink '{}' to '{}': {}\n{:?}", - original.display(), - source_dir.display(), - err, - err - ))?; + std::os::unix::fs::symlink(&original, &source_dir).map_err(|err| { + format!( + "failed to symlink '{}' to '{}': {}\n{:?}", + original.display(), + source_dir.display(), + err, + err + ) + })?; } } - Some(SourceRecipe::Git { git, upstream, branch, rev }) => { + Some(SourceRecipe::Path { path }) => { + copy_dir_all(path, &source_dir).map_err(|e| { + format!( + "Couldn't copy source from {} to {}: {}", + path, + source_dir.display(), + e + ) + })?; + } + Some(SourceRecipe::Git { + git, + upstream, + branch, + rev, + }) => { //TODO: use libgit? - if ! source_dir.is_dir() { + if !source_dir.is_dir() { // Create source.tmp let source_dir_tmp = recipe_dir.join("source.tmp"); create_dir_clean(&source_dir_tmp)?; @@ -202,7 +228,7 @@ fn fetch(recipe_dir: &Path, source: &Option) -> Result) -> Result { - if ! source_dir.is_dir() { + } + Some(SourceRecipe::Tar { + tar, + blake3, + patches, + script, + }) => { + if !source_dir.is_dir() { // Download tar //TODO: replace wget let source_tar = recipe_dir.join("source.tar"); - if ! source_tar.is_file() { + if !source_tar.is_file() { let source_tar_tmp = recipe_dir.join("source.tar.tmp"); let mut command = Command::new("wget"); @@ -286,19 +323,20 @@ fi"#); } // Calculate blake3 - let source_tar_blake3 = blake3_progress(&source_tar).map_err(|err| format!( - "failed to calculate blake3 of '{}': {}\n{:?}", - source_tar.display(), - err, - err - ))?; + let source_tar_blake3 = blake3_progress(&source_tar).map_err(|err| { + format!( + "failed to calculate blake3 of '{}': {}\n{:?}", + source_tar.display(), + err, + err + ) + })?; if let Some(blake3) = blake3 { // Check if it matches recipe if &source_tar_blake3 != blake3 { return Err(format!( "calculated blake3 '{}' does not match recipe blake3 '{}'", - source_tar_blake3, - blake3 + source_tar_blake3, blake3 )); } } else { @@ -327,19 +365,21 @@ fi"#); // Apply patches for patch_name in patches { let patch_file = recipe_dir.join(patch_name); - if ! patch_file.is_file() { + if !patch_file.is_file() { return Err(format!( "failed to find patch file '{}'", patch_file.display() )); } - let patch = fs::read_to_string(&patch_file).map_err(|err| format!( - "failed to read patch file '{}': {}\n{:#?}", - patch_file.display(), - err, - err - ))?; + let patch = fs::read_to_string(&patch_file).map_err(|err| { + format!( + "failed to read patch file '{}': {}\n{:#?}", + patch_file.display(), + err, + err + ) + })?; let mut command = Command::new("patch"); command.arg("--directory").arg(&source_dir_tmp); @@ -358,47 +398,66 @@ fi"#); // Move source.tmp to source atomically rename(&source_dir_tmp, &source_dir)?; } - }, + } // Local Sources None => { - if ! source_dir.is_dir() { + if !source_dir.is_dir() { eprintln!( "WARNING: Recipe without source section expected source dir at '{}'", source_dir.display(), ); create_dir(&source_dir)?; } - }, + } } Ok(source_dir) } -fn build(recipe_dir: &Path, source_dir: &Path, target_dir: &Path, build: &BuildRecipe) -> Result { +fn build( + recipe_dir: &Path, + source_dir: &Path, + target_dir: &Path, + build: &BuildRecipe, +) -> Result { let mut dep_pkgars = vec![]; for dependency in build.dependencies.iter() { //TODO: sanitize name let dependency_dir = recipe_find(dependency, Path::new("recipes"))?; if dependency_dir.is_none() { - return Err(format!( - "failed to find recipe directory '{}'", - dependency - )); + return Err(format!("failed to find recipe directory '{}'", dependency)); } - dep_pkgars.push(dependency_dir.unwrap().join("target").join(redoxer::target()).join("stage.pkgar")); + dep_pkgars.push( + dependency_dir + .unwrap() + .join("target") + .join(redoxer::target()) + .join("stage.pkgar"), + ); } let source_modified = modified_dir_ignore_git(source_dir)?; - let deps_modified = dep_pkgars.iter().map(|pkgar| modified(pkgar)).max().unwrap_or(Ok(SystemTime::UNIX_EPOCH))?; + let deps_modified = dep_pkgars + .iter() + .map(|pkgar| modified(pkgar)) + .max() + .unwrap_or(Ok(SystemTime::UNIX_EPOCH))?; let sysroot_dir = target_dir.join("sysroot"); // Rebuild sysroot if source is newer //TODO: rebuild on recipe changes - if sysroot_dir.is_dir() && (modified_dir(&sysroot_dir)? < source_modified || modified_dir(&sysroot_dir)? < deps_modified) { - eprintln!("DEBUG: '{}' newer than '{}'", source_dir.display(), sysroot_dir.display()); + if sysroot_dir.is_dir() + && (modified_dir(&sysroot_dir)? < source_modified + || modified_dir(&sysroot_dir)? < deps_modified) + { + eprintln!( + "DEBUG: '{}' newer than '{}'", + source_dir.display(), + sysroot_dir.display() + ); remove_all(&sysroot_dir)?; } - if ! sysroot_dir.is_dir() { + if !sysroot_dir.is_dir() { // Create sysroot.tmp let sysroot_dir_tmp = target_dir.join("sysroot.tmp"); create_dir_clean(&sysroot_dir_tmp)?; @@ -413,13 +472,16 @@ fn build(recipe_dir: &Path, source_dir: &Path, target_dir: &Path, build: &BuildR pkgar::extract( public_path, &archive_path, - sysroot_dir_tmp.to_str().unwrap() - ).map_err(|err| format!( - "failed to install '{}' in '{}': {:?}", - archive_path.display(), - sysroot_dir_tmp.display(), - err - ))?; + sysroot_dir_tmp.to_str().unwrap(), + ) + .map_err(|err| { + format!( + "failed to install '{}' in '{}': {:?}", + archive_path.display(), + sysroot_dir_tmp.display(), + err + ) + })?; } // Move sysroot.tmp to sysroot atomically @@ -429,12 +491,19 @@ fn build(recipe_dir: &Path, source_dir: &Path, target_dir: &Path, build: &BuildR let stage_dir = target_dir.join("stage"); // Rebuild stage if source is newer //TODO: rebuild on recipe changes - if stage_dir.is_dir() && (modified_dir(&stage_dir)? < source_modified || modified_dir(&stage_dir)? < deps_modified) { - eprintln!("DEBUG: '{}' newer than '{}'", source_dir.display(), stage_dir.display()); + if stage_dir.is_dir() + && (modified_dir(&stage_dir)? < source_modified + || modified_dir(&stage_dir)? < deps_modified) + { + eprintln!( + "DEBUG: '{}' newer than '{}'", + source_dir.display(), + stage_dir.display() + ); remove_all(&stage_dir)?; } - if ! stage_dir.is_dir() { + if !stage_dir.is_dir() { // Create stage.tmp let stage_dir_tmp = target_dir.join("stage.tmp"); create_dir_clean(&stage_dir_tmp)?; @@ -442,7 +511,7 @@ fn build(recipe_dir: &Path, source_dir: &Path, target_dir: &Path, build: &BuildR // Create build, if it does not exist //TODO: flag for clean builds where build is wiped out let build_dir = target_dir.join("build"); - if ! build_dir.is_dir() { + if !build_dir.is_dir() { create_dir_clean(&build_dir)?; } @@ -579,8 +648,14 @@ done //TODO: configurable target //TODO: Add more configurability, convert scripts to Rust? let script = match &build.kind { - BuildKind::Cargo { package_path, cargoflags } => { - format!("PACKAGE_PATH={} cookbook_cargo {cargoflags}", package_path.as_deref().unwrap_or(".")) + BuildKind::Cargo { + package_path, + cargoflags, + } => { + format!( + "PACKAGE_PATH={} cookbook_cargo {cargoflags}", + package_path.as_deref().unwrap_or(".") + ) } BuildKind::Configure => "cookbook_configure".to_owned(), BuildKind::Custom { script } => script.clone(), @@ -590,7 +665,9 @@ done //TODO: remove unwraps let cookbook_build = build_dir.canonicalize().unwrap(); let cookbook_recipe = recipe_dir.canonicalize().unwrap(); - let cookbook_redoxer = Path::new("target/release/cookbook_redoxer").canonicalize().unwrap(); + let cookbook_redoxer = Path::new("target/release/cookbook_redoxer") + .canonicalize() + .unwrap(); let cookbook_root = Path::new(".").canonicalize().unwrap(); let cookbook_stage = stage_dir_tmp.canonicalize().unwrap(); let cookbook_source = source_dir.canonicalize().unwrap(); @@ -620,24 +697,27 @@ done Ok(stage_dir) } -fn package(_recipe_dir: &Path, stage_dir: &Path, target_dir: &Path, _package: &PackageRecipe) -> Result { +fn package( + _recipe_dir: &Path, + stage_dir: &Path, + target_dir: &Path, + _package: &PackageRecipe, +) -> Result { //TODO: metadata like dependencies, name, and version let secret_path = "build/id_ed25519.toml"; let public_path = "build/id_ed25519.pub.toml"; - if ! Path::new(secret_path).is_file() || ! Path::new(public_path).is_file() { - if ! Path::new("build").is_dir() { + if !Path::new(secret_path).is_file() || !Path::new(public_path).is_file() { + if !Path::new("build").is_dir() { create_dir(Path::new("build"))?; } let (public_key, secret_key) = pkgar_keys::SecretKeyFile::new(); - public_key.save(public_path).map_err(|err| format!( - "failed to save pkgar public key: {:?}", - err - ))?; - secret_key.save(secret_path).map_err(|err| format!( - "failed to save pkgar secret key: {:?}", - err - ))?; + public_key + .save(public_path) + .map_err(|err| format!("failed to save pkgar public key: {:?}", err))?; + secret_key + .save(secret_path) + .map_err(|err| format!("failed to save pkgar secret key: {:?}", err))?; } let package_file = target_dir.join("stage.pkgar"); @@ -646,50 +726,48 @@ fn package(_recipe_dir: &Path, stage_dir: &Path, target_dir: &Path, _package: &P if package_file.is_file() { let stage_modified = modified_dir(stage_dir)?; if modified(&package_file)? < stage_modified { - eprintln!("DEBUG: '{}' newer than '{}'", stage_dir.display(), package_file.display()); + eprintln!( + "DEBUG: '{}' newer than '{}'", + stage_dir.display(), + package_file.display() + ); remove_all(&package_file)?; } } - if ! package_file.is_file() { + if !package_file.is_file() { pkgar::create( secret_path, package_file.to_str().unwrap(), - stage_dir.to_str().unwrap() - ).map_err(|err| format!( - "failed to create pkgar archive: {:?}", - err - ))?; + stage_dir.to_str().unwrap(), + ) + .map_err(|err| format!("failed to create pkgar archive: {:?}", err))?; } Ok(package_file) } fn cook(recipe_dir: &Path, recipe: &Recipe, fetch_only: bool) -> Result<(), String> { - let source_dir = fetch(recipe_dir, &recipe.source).map_err(|err| format!( - "failed to fetch: {}", - err - ))?; + let source_dir = + fetch(recipe_dir, &recipe.source).map_err(|err| format!("failed to fetch: {}", err))?; - if fetch_only { return Ok(()); } + if fetch_only { + return Ok(()); + } let target_parent_dir = recipe_dir.join("target"); - if ! target_parent_dir.is_dir() { + if !target_parent_dir.is_dir() { create_dir(&target_parent_dir)?; } let target_dir = target_parent_dir.join(redoxer::target()); - if ! target_dir.is_dir() { + if !target_dir.is_dir() { create_dir(&target_dir)?; } - let stage_dir = build(recipe_dir, &source_dir, &target_dir, &recipe.build).map_err(|err| format!( - "failed to build: {}", - err - ))?; + let stage_dir = build(recipe_dir, &source_dir, &target_dir, &recipe.build) + .map_err(|err| format!("failed to build: {}", err))?; - let _package_file = package(recipe_dir, &stage_dir, &target_dir, &recipe.package).map_err(|err| format!( - "failed to package: {}", - err - ))?; + let _package_file = package(recipe_dir, &stage_dir, &target_dir, &recipe.package) + .map_err(|err| format!("failed to package: {}", err))?; Ok(()) } @@ -705,39 +783,33 @@ impl CookRecipe { //TODO: sanitize recipe name? let dir = recipe_find(&name, Path::new("recipes"))?; if dir.is_none() { - return Err(format!( - "failed to find recipe directory '{}'", - name - )); + return Err(format!("failed to find recipe directory '{}'", name)); } let dir = dir.unwrap(); let file = dir.join("recipe.toml"); - if ! file.is_file() { - return Err(format!( - "failed to find recipe file '{}'", - file.display() - )); + if !file.is_file() { + return Err(format!("failed to find recipe file '{}'", file.display())); } - let toml = fs::read_to_string(&file).map_err(|err| format!( - "failed to read recipe file '{}': {}\n{:#?}", - file.display(), - err, - err - ))?; + let toml = fs::read_to_string(&file).map_err(|err| { + format!( + "failed to read recipe file '{}': {}\n{:#?}", + file.display(), + err, + err + ) + })?; - let recipe: Recipe = toml::from_str(&toml).map_err(|err| format!( - "failed to parse recipe file '{}': {}\n{:#?}", - file.display(), - err, - err - ))?; + let recipe: Recipe = toml::from_str(&toml).map_err(|err| { + format!( + "failed to parse recipe file '{}': {}\n{:#?}", + file.display(), + err, + err + ) + })?; - Ok(Self { - name, - dir, - recipe - }) + Ok(Self { name, dir, recipe }) } //TODO: make this more efficient, smarter, and not return duplicates @@ -753,14 +825,10 @@ impl CookRecipe { for name in names { let recipe = Self::new(name.clone())?; - let dependencies = Self::new_recursive( - &recipe.recipe.build.dependencies, - recursion - 1 - ).map_err(|err| format!( - "{}: failed on loading build dependencies:\n{}", - name, - err - ))?; + let dependencies = + Self::new_recursive(&recipe.recipe.build.dependencies, recursion - 1).map_err( + |err| format!("{}: failed on loading build dependencies:\n{}", name, err), + )?; for dependency in dependencies { recipes.push(dependency); @@ -805,7 +873,7 @@ fn main() { }; for recipe in recipes { - if ! quiet { + if !quiet { eprintln!( "{}{}cook - {}{}{}", style::Bold, @@ -817,7 +885,7 @@ fn main() { } let res = if dry_run { - if ! quiet { + if !quiet { eprintln!("DRY RUN: {:#?}", recipe.recipe); } Ok(()) @@ -827,7 +895,7 @@ fn main() { match res { Ok(()) => { - if ! quiet { + if !quiet { eprintln!( "{}{}cook - {} - successful{}{}", style::Bold, @@ -837,7 +905,7 @@ fn main() { style::Reset, ); } - }, + } Err(err) => { eprintln!( "{}{}cook - {} - error:{}{} {}", diff --git a/src/recipe.rs b/src/recipe.rs index e69742a8..2f1566e1 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -12,6 +12,11 @@ pub enum SourceRecipe { /// Relative path to the package for which to reuse the source dir same_as: String, }, + /// Path source + Path { + /// The path to the source + path: String, + }, /// A git repository source Git { /// The URL for the git repository, such as https://gitlab.redox-os.org/redox-os/ion.git @@ -58,9 +63,7 @@ pub enum BuildKind { Configure, /// Will build and install using custom commands #[serde(rename = "custom")] - Custom { - script: String, - }, + Custom { script: String }, } #[derive(Debug, Deserialize, PartialEq, Serialize)] @@ -89,14 +92,14 @@ pub struct Recipe { pub package: PackageRecipe, } - #[cfg(test)] mod tests { #[test] fn git_cargo_recipe() { - use crate::recipe::{Recipe, SourceRecipe, BuildKind, BuildRecipe, PackageRecipe}; + use crate::recipe::{BuildKind, BuildRecipe, PackageRecipe, Recipe, SourceRecipe}; - let recipe: Recipe = toml::from_str(r#" + let recipe: Recipe = toml::from_str( + r#" [source] git = "https://gitlab.redox-os.org/redox-os/acid.git" branch = "master" @@ -104,30 +107,39 @@ mod tests { [build] template = "cargo" - "#).unwrap(); + "#, + ) + .unwrap(); - assert_eq!(recipe, Recipe { - source: Some(SourceRecipe::Git { - git: "https://gitlab.redox-os.org/redox-os/acid.git".to_string(), - upstream: None, - branch: Some("master".to_string()), - rev: Some("06344744d3d55a5ac9a62a6059cb363d40699bbc".to_string()), - }), - build: BuildRecipe { - kind: BuildKind::Cargo, - dependencies: Vec::new(), - }, - package: PackageRecipe { - dependencies: Vec::new(), - }, - }); + assert_eq!( + recipe, + Recipe { + source: Some(SourceRecipe::Git { + git: "https://gitlab.redox-os.org/redox-os/acid.git".to_string(), + upstream: None, + branch: Some("master".to_string()), + rev: Some("06344744d3d55a5ac9a62a6059cb363d40699bbc".to_string()), + }), + build: BuildRecipe { + kind: BuildKind::Cargo { + package_path: None, + cargoflags: String::new(), + }, + dependencies: Vec::new(), + }, + package: PackageRecipe { + dependencies: Vec::new(), + }, + } + ); } #[test] fn tar_custom_recipe() { - use crate::recipe::{Recipe, SourceRecipe, BuildKind, BuildRecipe, PackageRecipe}; + use crate::recipe::{BuildKind, BuildRecipe, PackageRecipe, Recipe, SourceRecipe}; - let recipe: Recipe = toml::from_str(r#" + let recipe: Recipe = toml::from_str( + r#" [source] tar = "http://downloads.xiph.org/releases/ogg/libogg-1.3.3.tar.xz" sha256 = "8220c0e4082fa26c07b10bfe31f641d2e33ebe1d1bb0b20221b7016bc8b78a3a" @@ -135,24 +147,32 @@ mod tests { [build] template = "custom" script = "make" - "#).unwrap(); + "#, + ) + .unwrap(); - assert_eq!(recipe, Recipe { - source: Some(SourceRecipe::Tar { - tar: "http://downloads.xiph.org/releases/ogg/libogg-1.3.3.tar.xz".to_string(), - blake3: Some("8220c0e4082fa26c07b10bfe31f641d2e33ebe1d1bb0b20221b7016bc8b78a3a".to_string()), - patches: Vec::new(), - script: None, - }), - build: BuildRecipe { - kind: BuildKind::Custom { - script: "make".to_string() + assert_eq!( + recipe, + Recipe { + source: Some(SourceRecipe::Tar { + tar: "http://downloads.xiph.org/releases/ogg/libogg-1.3.3.tar.xz".to_string(), + blake3: Some( + "8220c0e4082fa26c07b10bfe31f641d2e33ebe1d1bb0b20221b7016bc8b78a3a" + .to_string() + ), + patches: Vec::new(), + script: None, + }), + build: BuildRecipe { + kind: BuildKind::Custom { + script: "make".to_string() + }, + dependencies: Vec::new(), }, - dependencies: Vec::new(), - }, - package: PackageRecipe { - dependencies: Vec::new(), - }, - }); + package: PackageRecipe { + dependencies: Vec::new(), + }, + } + ); } } From 2dbf5a3944091afc977f256c8348148971680d45 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 11 Sep 2024 23:04:05 +0000 Subject: [PATCH 2094/3180] Add recipes --- recipes/wip/net/download/curlio/recipe.toml | 5 +++++ recipes/wip/tools/diffutils-rs/recipe.toml | 5 +++++ recipes/wip/tools/findutils-rs/recipe.toml | 5 +++++ 3 files changed, 15 insertions(+) create mode 100644 recipes/wip/net/download/curlio/recipe.toml create mode 100644 recipes/wip/tools/diffutils-rs/recipe.toml create mode 100644 recipes/wip/tools/findutils-rs/recipe.toml diff --git a/recipes/wip/net/download/curlio/recipe.toml b/recipes/wip/net/download/curlio/recipe.toml new file mode 100644 index 00000000..b80fc8c6 --- /dev/null +++ b/recipes/wip/net/download/curlio/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Kei-K23/curlio" +[build] +template = "cargo" diff --git a/recipes/wip/tools/diffutils-rs/recipe.toml b/recipes/wip/tools/diffutils-rs/recipe.toml new file mode 100644 index 00000000..f6edab13 --- /dev/null +++ b/recipes/wip/tools/diffutils-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/uutils/diffutils" +[build] +template = "cargo" diff --git a/recipes/wip/tools/findutils-rs/recipe.toml b/recipes/wip/tools/findutils-rs/recipe.toml new file mode 100644 index 00000000..41790eb6 --- /dev/null +++ b/recipes/wip/tools/findutils-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/uutils/findutils" +[build] +template = "cargo" From 77a4c0735fa497c5057e4e9592f9901390e7b714 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 17 Sep 2024 07:25:47 +0000 Subject: [PATCH 2095/3180] Add recipes --- recipes/wip/dev/git-tools/lazygh/recipe.toml | 5 +++++ recipes/wip/dev/lua-tools/luarocks/recipe.toml | 6 ++++++ recipes/wip/net/remote/ethersync/recipe.toml | 9 +++++++++ 3 files changed, 20 insertions(+) create mode 100644 recipes/wip/dev/git-tools/lazygh/recipe.toml create mode 100644 recipes/wip/dev/lua-tools/luarocks/recipe.toml create mode 100644 recipes/wip/net/remote/ethersync/recipe.toml diff --git a/recipes/wip/dev/git-tools/lazygh/recipe.toml b/recipes/wip/dev/git-tools/lazygh/recipe.toml new file mode 100644 index 00000000..3fcaab4a --- /dev/null +++ b/recipes/wip/dev/git-tools/lazygh/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/kmj-007/lazygh" +[build] +template = "cargo" diff --git a/recipes/wip/dev/lua-tools/luarocks/recipe.toml b/recipes/wip/dev/lua-tools/luarocks/recipe.toml new file mode 100644 index 00000000..9645e5d9 --- /dev/null +++ b/recipes/wip/dev/lua-tools/luarocks/recipe.toml @@ -0,0 +1,6 @@ +#TODO not compiled or tested +# build instructions - https://github.com/luarocks/luarocks/wiki/Installation-instructions-for-Unix +[source] +tar = "https://luarocks.org/releases/luarocks-3.11.1.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/net/remote/ethersync/recipe.toml b/recipes/wip/net/remote/ethersync/recipe.toml new file mode 100644 index 00000000..c24a3c04 --- /dev/null +++ b/recipes/wip/net/remote/ethersync/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ethersync/ethersync" +[build] +template = "custom" +script = """ +COOKBOOK_SOURCE="${COOKBOOK_SOURCE}/daemon" +cookbook_cargo +""" From 497b75215d9f20a531cc596bc3c13b616eb1de22 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 19 Sep 2024 16:33:17 -0600 Subject: [PATCH 2096/3180] qemu: switch to git fork --- recipes/wip/vm/qemu/recipe.toml | 20 ++- recipes/wip/vm/qemu/redox.patch | 308 -------------------------------- 2 files changed, 14 insertions(+), 314 deletions(-) delete mode 100644 recipes/wip/vm/qemu/redox.patch diff --git a/recipes/wip/vm/qemu/recipe.toml b/recipes/wip/vm/qemu/recipe.toml index 0ef0c823..6e79f0c6 100644 --- a/recipes/wip/vm/qemu/recipe.toml +++ b/recipes/wip/vm/qemu/recipe.toml @@ -1,13 +1,11 @@ -#TODO update the patch to match the current qemu version [source] -tar = "https://download.qemu.org/qemu-9.0.1.tar.xz" -patches = [ - "redox.patch", -] +git = "https://github.com/jackpot51/qemu.git" + [build] -template = "configure" +template = "custom" dependencies = [ "curl", + "gettext", "glib", "libiconv", "libpng", @@ -16,3 +14,13 @@ dependencies = [ "sdl2", "zlib", ] +script = """ +COOKBOOK_CONFIGURE_FLAGS=( + --host="${TARGET}" + --prefix="/usr" + --cross-prefix="${TARGET}" + --static + --disable-tpm +) +cookbook_configure +""" diff --git a/recipes/wip/vm/qemu/redox.patch b/recipes/wip/vm/qemu/redox.patch deleted file mode 100644 index 9543ce1c..00000000 --- a/recipes/wip/vm/qemu/redox.patch +++ /dev/null @@ -1,308 +0,0 @@ -diff -ruwN source/block/file-posix.c source-new/block/file-posix.c ---- source/block/file-posix.c 2019-01-13 08:23:04.772397346 -0700 -+++ source-new/block/file-posix.c 2019-01-13 10:40:35.102453914 -0700 -@@ -258,6 +258,7 @@ - int i; - - errno = ENOTSUP; -+#if !defined(__redox__) - static const unsigned long ioctl_list[] = { - #ifdef BLKSSZGET - BLKSSZGET, -@@ -277,6 +278,7 @@ - success = true; - } - } -+#endif - - return success ? 0 : -errno; - } -@@ -1154,6 +1156,9 @@ - - static ssize_t handle_aiocb_ioctl(RawPosixAIOData *aiocb) - { -+#if defined(__redox__) -+ return -ENOTSUP -+#else - int ret; - - ret = ioctl(aiocb->aio_fildes, aiocb->aio_ioctl_cmd, aiocb->aio_ioctl_buf); -@@ -1162,6 +1167,7 @@ - } - - return 0; -+#endif - } - - static ssize_t handle_aiocb_flush(RawPosixAIOData *aiocb) -diff -ruwN source/configure source-new/configure ---- source/configure 2018-12-11 10:44:34.000000000 -0700 -+++ source-new/configure 2019-01-12 15:11:33.069669757 -0700 -@@ -649,6 +649,8 @@ - targetos='NetBSD' - elif check_define __APPLE__; then - targetos='Darwin' -+elif check_define __redox__; then -+ targetos='Redox' - else - # This is a fatal error, but don't report it yet, because we - # might be going to just print the --help text, or it might -@@ -3500,7 +3502,7 @@ - EOF - - if ! compile_prog "$CFLAGS" "$LIBS" ; then -- error_exit "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\ -+ echo "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\ - "You probably need to set PKG_CONFIG_LIBDIR"\ - "to point to the right pkg-config files for your"\ - "build target" -diff -ruwN source/include/qom/cpu.h source-new/include/qom/cpu.h ---- source/include/qom/cpu.h 2018-12-11 10:44:34.000000000 -0700 -+++ source-new/include/qom/cpu.h 2019-01-12 15:14:15.442350500 -0700 -@@ -30,6 +30,10 @@ - #include "qemu/queue.h" - #include "qemu/thread.h" - -+#if defined(__redox__) -+#define sigjmp_buf jmp_buf -+#endif -+ - typedef int (*WriteCoreDumpFunction)(const void *buf, size_t size, - void *opaque); - -diff -ruwN source/io/channel-socket.c source-new/io/channel-socket.c ---- source/io/channel-socket.c 2018-12-11 10:44:34.000000000 -0700 -+++ source-new/io/channel-socket.c 2019-01-13 08:54:26.951009516 -0700 -@@ -407,7 +407,7 @@ - } - - --#ifndef WIN32 -+#if !defined(WIN32) && !defined(__redox__) - static void qio_channel_socket_copy_fds(struct msghdr *msg, - int **fds, size_t *nfds) - { -@@ -554,7 +554,7 @@ - } - return ret; - } --#else /* WIN32 */ -+#else /* WIN32 or __redox__ */ - static ssize_t qio_channel_socket_readv(QIOChannel *ioc, - const struct iovec *iov, - size_t niov, -diff -ruwN source/util/compatfd.c source-new/util/compatfd.c ---- source/util/compatfd.c 2018-12-11 10:44:35.000000000 -0700 -+++ source-new/util/compatfd.c 2019-01-12 16:24:40.146857753 -0700 -@@ -17,7 +17,9 @@ - #include "qemu-common.h" - #include "qemu/thread.h" - -+#if defined(CONFIG_SIGNALFD) - #include -+#endif - - struct sigfd_compat_info - { -diff -ruwN source/util/coroutine-sigaltstack.c source-new/util/coroutine-sigaltstack.c ---- source/util/coroutine-sigaltstack.c 2018-12-11 10:44:35.000000000 -0700 -+++ source-new/util/coroutine-sigaltstack.c 2019-01-13 10:38:32.279965167 -0700 -@@ -30,6 +30,12 @@ - #include "qemu-common.h" - #include "qemu/coroutine_int.h" - -+#if defined(__redox__) -+#define sigjmp_buf jmp_buf -+#define sigsetjmp(env, savesigs) setjmp(env) -+#define siglongjmp longjmp -+#endif -+ - typedef struct { - Coroutine base; - void *stack; -@@ -288,4 +294,3 @@ - - return s && s->current->caller; - } -- -diff -ruwN source/util/iov.c source-new/util/iov.c ---- source/util/iov.c 2018-12-11 10:44:35.000000000 -0700 -+++ source-new/util/iov.c 2019-01-12 16:32:12.067228460 -0700 -@@ -95,7 +95,7 @@ - static ssize_t - do_send_recv(int sockfd, struct iovec *iov, unsigned iov_cnt, bool do_send) - { --#ifdef CONFIG_POSIX -+#if defined(CONFIG_POSIX) && !defined(__redox__) - ssize_t ret; - struct msghdr msg; - memset(&msg, 0, sizeof(msg)); -diff -ruwN source/util/main-loop.c source-new/util/main-loop.c ---- source/util/main-loop.c 2018-12-11 10:44:35.000000000 -0700 -+++ source-new/util/main-loop.c 2019-01-13 10:37:48.544674956 -0700 -@@ -35,6 +35,10 @@ - #include "block/aio.h" - #include "qemu/error-report.h" - -+#if defined(__redox__) -+#define pthread_sigmask sigprocmask -+#endif -+ - #ifndef _WIN32 - - /* If we have signalfd, we mask out the signals we want to handle and then -@@ -63,9 +67,12 @@ - } - - sigaction(info.ssi_signo, NULL, &action); -+#if !defined(__redox__) - if ((action.sa_flags & SA_SIGINFO) && action.sa_sigaction) { - sigaction_invoke(&action, &info); -- } else if (action.sa_handler) { -+ } else -+#endif -+ if (action.sa_handler) { - action.sa_handler(info.ssi_signo); - } - } -diff -ruwN source/util/osdep.c source-new/util/osdep.c ---- source/util/osdep.c 2018-12-11 10:44:35.000000000 -0700 -+++ source-new/util/osdep.c 2019-01-13 09:31:50.920247468 -0700 -@@ -138,10 +138,12 @@ - goto fail; - } - -+#if !defined(__redox__) - if ((flags & O_SYNC) != (dup_flags & O_SYNC)) { - errno = EINVAL; - goto fail; - } -+#endif - - /* Set/unset flags that we can with fcntl */ - if (fcntl(ret, F_SETFL, flags) == -1) { -@@ -236,6 +238,9 @@ - - static int qemu_lock_fcntl(int fd, int64_t start, int64_t len, int fl_type) - { -+#if defined(__redox__) -+ return 0; -+#else - int ret; - struct flock fl = { - .l_whence = SEEK_SET, -@@ -248,6 +253,7 @@ - ret = fcntl(fd, fcntl_op_setlk, &fl); - } while (ret == -1 && errno == EINTR); - return ret == -1 ? -errno : 0; -+#endif - } - - int qemu_lock_fd(int fd, int64_t start, int64_t len, bool exclusive) -@@ -262,6 +268,9 @@ - - int qemu_lock_fd_test(int fd, int64_t start, int64_t len, bool exclusive) - { -+#if defined(__redox__) -+ return 0; -+#else - int ret; - struct flock fl = { - .l_whence = SEEK_SET, -@@ -276,6 +285,7 @@ - } else { - return fl.l_type == F_UNLCK ? 0 : -EAGAIN; - } -+#endif - } - #endif - -diff -ruwN source/util/oslib-posix.c source-new/util/oslib-posix.c ---- source/util/oslib-posix.c 2018-12-11 10:44:35.000000000 -0700 -+++ source-new/util/oslib-posix.c 2019-01-12 16:34:05.703955117 -0700 -@@ -36,9 +36,17 @@ - #include "qapi/error.h" - #include "qemu/sockets.h" - #include -+#if !defined(__redox__) - #include -+#endif - #include "qemu/cutils.h" - -+#if defined(__redox__) -+#define pthread_sigmask sigprocmask -+#define sigsetjmp(env, savesigs) setjmp(env) -+#define siglongjmp longjmp -+#endif -+ - #ifdef CONFIG_LINUX - #include - #endif -@@ -95,12 +103,13 @@ - - while (1) { - struct stat a, b; -+#if !defined(__redox__) - struct flock lock = { - .l_type = F_WRLCK, - .l_whence = SEEK_SET, - .l_len = 0, - }; -- -+#endif - fd = qemu_open(path, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR); - if (fd == -1) { - error_setg_errno(errp, errno, "Cannot open pid file"); -@@ -112,10 +121,12 @@ - goto fail_close; - } - -+#if !defined(__redox__) - if (fcntl(fd, F_SETLK, &lock)) { - error_setg_errno(errp, errno, "Cannot lock pid file"); - goto fail_close; - } -+#endif - - /* - * Now make sure the path we locked is the same one that now -@@ -420,7 +431,11 @@ - - static inline int get_memset_num_threads(int smp_cpus) - { -+#if defined(__redox__) -+ long host_procs = 1; -+#else - long host_procs = sysconf(_SC_NPROCESSORS_ONLN); -+#endif - int ret = 1; - - if (host_procs > 0) { -@@ -682,6 +697,7 @@ - void sigaction_invoke(struct sigaction *action, - struct qemu_signalfd_siginfo *info) - { -+#if !defined(__redox__) - siginfo_t si = {}; - si.si_signo = info->ssi_signo; - si.si_errno = info->ssi_errno; -@@ -708,4 +724,5 @@ - si.si_uid = info->ssi_uid; - } - action->sa_sigaction(info->ssi_signo, &si, NULL); -+#endif - } -diff -ruwN source/util/qemu-progress.c source-new/util/qemu-progress.c ---- source/util/qemu-progress.c 2018-12-11 10:44:35.000000000 -0700 -+++ source-new/util/qemu-progress.c 2019-01-13 10:34:53.704639662 -0700 -@@ -25,6 +25,10 @@ - #include "qemu/osdep.h" - #include "qemu-common.h" - -+#if defined(__redox__) -+#define pthread_sigmask sigprocmask -+#endif -+ - struct progress_state { - float current; - float last_print; From 480ae75db5b66ec2cf9d513ece048f521aa1b303 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 19 Sep 2024 17:25:02 -0600 Subject: [PATCH 2097/3180] qemu: add nghttp2 and openssl1 depends --- recipes/wip/vm/qemu/recipe.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/recipes/wip/vm/qemu/recipe.toml b/recipes/wip/vm/qemu/recipe.toml index 6e79f0c6..ef4f28a2 100644 --- a/recipes/wip/vm/qemu/recipe.toml +++ b/recipes/wip/vm/qemu/recipe.toml @@ -9,6 +9,8 @@ dependencies = [ "glib", "libiconv", "libpng", + "nghttp2", + "openssl1", "pcre", "pixman", "sdl2", From 10b6cc1de1e9fc978cb02efdf55387ed84a01954 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 19 Sep 2024 17:55:45 -0600 Subject: [PATCH 2098/3180] qemu: add all dependencies --- recipes/wip/vm/qemu/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/recipes/wip/vm/qemu/recipe.toml b/recipes/wip/vm/qemu/recipe.toml index ef4f28a2..aaf68abc 100644 --- a/recipes/wip/vm/qemu/recipe.toml +++ b/recipes/wip/vm/qemu/recipe.toml @@ -7,13 +7,18 @@ dependencies = [ "curl", "gettext", "glib", + "libffi", "libiconv", + "liborbital", "libpng", + "llvm18", + "mesa", "nghttp2", "openssl1", "pcre", "pixman", "sdl2", + "sdl2-image", "zlib", ] script = """ From e854b403f5bb55ff35957dd92ad2b9d329193d17 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 19 Sep 2024 17:57:36 -0600 Subject: [PATCH 2099/3180] qemu: add libjpeg dependency --- recipes/wip/vm/qemu/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/vm/qemu/recipe.toml b/recipes/wip/vm/qemu/recipe.toml index aaf68abc..3bf327f9 100644 --- a/recipes/wip/vm/qemu/recipe.toml +++ b/recipes/wip/vm/qemu/recipe.toml @@ -9,6 +9,7 @@ dependencies = [ "glib", "libffi", "libiconv", + "libjpeg", "liborbital", "libpng", "llvm18", From dd83c1a374c4bbef146084206b31e00915e732f4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 19 Sep 2024 18:20:28 -0600 Subject: [PATCH 2100/3180] qemu: only build one system binary for current architecture --- recipes/wip/vm/qemu/recipe.toml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/recipes/wip/vm/qemu/recipe.toml b/recipes/wip/vm/qemu/recipe.toml index 3bf327f9..ed8cd385 100644 --- a/recipes/wip/vm/qemu/recipe.toml +++ b/recipes/wip/vm/qemu/recipe.toml @@ -30,5 +30,20 @@ COOKBOOK_CONFIGURE_FLAGS=( --static --disable-tpm ) +case "${TARGET}" in + aarch64-unknown-redox) + COOKBOOK_CONFIGURE_FLAGS+=(--target-list=aarch64-softmmu) + ;; + i686-unknown-redox) + COOKBOOK_CONFIGURE_FLAGS+=(--target-list=i386-softmmu) + ;; + x86_64-unknown-redox) + COOKBOOK_CONFIGURE_FLAGS+=(--target-list=x86_64-softmmu) + ;; + *) + echo "unsupported target ${TARGET}" + exit 1 + ;; +esac cookbook_configure """ From 328386cf362c562be08255d8d5d5cb8ab9a7452f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 20 Sep 2024 00:49:05 +0000 Subject: [PATCH 2101/3180] Add recipes --- recipes/wip/fuse/e2fsprogs/recipe.toml | 6 ++++++ recipes/wip/fuse/ifuse/recipe.toml | 10 ++++++++++ recipes/wip/fuse/jmtpfs/recipe.toml | 9 +++++++++ recipes/wip/libs/mobile/libimobiledevice/recipe.toml | 11 +++++++++++ recipes/wip/libs/mobile/libusbmuxd/recipe.toml | 8 ++++++++ recipes/wip/libs/other/libplist/recipe.toml | 11 +++++++++++ recipes/wip/libs/other/libtatsu/recipe.toml | 9 +++++++++ recipes/wip/system/pik/recipe.toml | 5 +++++ 8 files changed, 69 insertions(+) create mode 100644 recipes/wip/fuse/e2fsprogs/recipe.toml create mode 100644 recipes/wip/fuse/ifuse/recipe.toml create mode 100644 recipes/wip/fuse/jmtpfs/recipe.toml create mode 100644 recipes/wip/libs/mobile/libimobiledevice/recipe.toml create mode 100644 recipes/wip/libs/mobile/libusbmuxd/recipe.toml create mode 100644 recipes/wip/libs/other/libplist/recipe.toml create mode 100644 recipes/wip/libs/other/libtatsu/recipe.toml create mode 100644 recipes/wip/system/pik/recipe.toml diff --git a/recipes/wip/fuse/e2fsprogs/recipe.toml b/recipes/wip/fuse/e2fsprogs/recipe.toml new file mode 100644 index 00000000..35606ec4 --- /dev/null +++ b/recipes/wip/fuse/e2fsprogs/recipe.toml @@ -0,0 +1,6 @@ +#TODO maybe wrong template +# build instructions - https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git/tree/INSTALL +[source] +tar = "http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-1.47.1.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/fuse/ifuse/recipe.toml b/recipes/wip/fuse/ifuse/recipe.toml new file mode 100644 index 00000000..cf08e3f9 --- /dev/null +++ b/recipes/wip/fuse/ifuse/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +[source] +tar = "https://github.com/libimobiledevice/ifuse/releases/download/1.1.4/ifuse-1.1.4.tar.bz2" +[build] +template = "configure" +dependencies = [ + "libfuse3", + "libplist", + "libimobiledevice", +] diff --git a/recipes/wip/fuse/jmtpfs/recipe.toml b/recipes/wip/fuse/jmtpfs/recipe.toml new file mode 100644 index 00000000..e7b7da38 --- /dev/null +++ b/recipes/wip/fuse/jmtpfs/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/JasonFerrara/jmtpfs" +[build] +template = "configure" +dependencies = [ + "libmtp", + "libmagic", +] diff --git a/recipes/wip/libs/mobile/libimobiledevice/recipe.toml b/recipes/wip/libs/mobile/libimobiledevice/recipe.toml new file mode 100644 index 00000000..6e8e4419 --- /dev/null +++ b/recipes/wip/libs/mobile/libimobiledevice/recipe.toml @@ -0,0 +1,11 @@ +#TODO not compiled or tested +[source] +tar = "https://github.com/libimobiledevice/libimobiledevice/releases/download/1.3.0/libimobiledevice-1.3.0.tar.bz2" +[build] +template = "configure" +dependencies = [ + "libtatsu", + "libplist", + "libusbmuxd", + "openssl1", +] diff --git a/recipes/wip/libs/mobile/libusbmuxd/recipe.toml b/recipes/wip/libs/mobile/libusbmuxd/recipe.toml new file mode 100644 index 00000000..b690aec2 --- /dev/null +++ b/recipes/wip/libs/mobile/libusbmuxd/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +tar = "https://github.com/libimobiledevice/libusbmuxd/releases/download/2.1.0/libusbmuxd-2.1.0.tar.bz2" +[build] +template = "configure" +dependencies = [ + "libplist", +] diff --git a/recipes/wip/libs/other/libplist/recipe.toml b/recipes/wip/libs/other/libplist/recipe.toml new file mode 100644 index 00000000..91fd40a5 --- /dev/null +++ b/recipes/wip/libs/other/libplist/recipe.toml @@ -0,0 +1,11 @@ +#TODO not compiled or tested +[source] +tar = "https://github.com/libimobiledevice/libplist/releases/download/2.6.0/libplist-2.6.0.tar.bz2" +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --without-cython +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/libtatsu/recipe.toml b/recipes/wip/libs/other/libtatsu/recipe.toml new file mode 100644 index 00000000..64afe14b --- /dev/null +++ b/recipes/wip/libs/other/libtatsu/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +tar = "https://github.com/libimobiledevice/libtatsu/releases/download/1.0.3/libtatsu-1.0.3.tar.bz2" +[build] +template = "configure" +dependencies = [ + "libplist", + "curl", +] diff --git a/recipes/wip/system/pik/recipe.toml b/recipes/wip/system/pik/recipe.toml new file mode 100644 index 00000000..1c1e04f3 --- /dev/null +++ b/recipes/wip/system/pik/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/jacek-kurlit/pik" +[build] +template = "cargo" From 85f2763d633e0041ce7e1b9619f49c15bb4b614b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 20 Sep 2024 01:38:01 +0000 Subject: [PATCH 2102/3180] Add recipes --- recipes/wip/fuse/exfat-fuse/recipe.toml | 8 ++++++++ recipes/wip/fuse/hfsfuse/recipe.toml | 8 ++++++++ recipes/wip/fuse/httpdirfs/recipe.toml | 14 ++++++++++++++ recipes/wip/fuse/jmtpfs/recipe.toml | 9 --------- recipes/wip/fuse/simple-mtpfs/recipe.toml | 15 +++++++++++++++ recipes/wip/fuse/squashfuse/recipe.toml | 12 ++++++++++++ recipes/wip/libs/other/libgumbo/recipe.toml | 10 ++++++++++ recipes/wip/libs/other/libmtp/recipe.toml | 8 ++++++++ 8 files changed, 75 insertions(+), 9 deletions(-) create mode 100644 recipes/wip/fuse/exfat-fuse/recipe.toml create mode 100644 recipes/wip/fuse/hfsfuse/recipe.toml create mode 100644 recipes/wip/fuse/httpdirfs/recipe.toml delete mode 100644 recipes/wip/fuse/jmtpfs/recipe.toml create mode 100644 recipes/wip/fuse/simple-mtpfs/recipe.toml create mode 100644 recipes/wip/fuse/squashfuse/recipe.toml create mode 100644 recipes/wip/libs/other/libgumbo/recipe.toml create mode 100644 recipes/wip/libs/other/libmtp/recipe.toml diff --git a/recipes/wip/fuse/exfat-fuse/recipe.toml b/recipes/wip/fuse/exfat-fuse/recipe.toml new file mode 100644 index 00000000..48502968 --- /dev/null +++ b/recipes/wip/fuse/exfat-fuse/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +tar = "https://github.com/relan/exfat/releases/download/v1.4.0/fuse-exfat-1.4.0.tar.gz" +[build] +template = "configure" +dependencies = [ + "libfuse3", +] diff --git a/recipes/wip/fuse/hfsfuse/recipe.toml b/recipes/wip/fuse/hfsfuse/recipe.toml new file mode 100644 index 00000000..f5c1b749 --- /dev/null +++ b/recipes/wip/fuse/hfsfuse/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for gnu make, see https://github.com/0x09/hfsfuse#building +[source] +tar = "https://github.com/0x09/hfsfuse/releases/download/0.242/hfsfuse-0.242.tar.gz" +[build] +template = "custom" +dependencies = [ + "libfuse3", +] diff --git a/recipes/wip/fuse/httpdirfs/recipe.toml b/recipes/wip/fuse/httpdirfs/recipe.toml new file mode 100644 index 00000000..8f03b3af --- /dev/null +++ b/recipes/wip/fuse/httpdirfs/recipe.toml @@ -0,0 +1,14 @@ +#TODO missing script for meson, see https://github.com/fangfufu/httpdirfs#compilation +[source] +git = "https://github.com/fangfufu/httpdirfs" +rev = "d91bb2b2789be8a0f72c7baddac63ffb78299ad9" +[build] +template = "custom" +dependencies = [ + "libfuse3", + "openssl1", + "curl", + "expat", + "libuuid", + "libgumbo", +] diff --git a/recipes/wip/fuse/jmtpfs/recipe.toml b/recipes/wip/fuse/jmtpfs/recipe.toml deleted file mode 100644 index e7b7da38..00000000 --- a/recipes/wip/fuse/jmtpfs/recipe.toml +++ /dev/null @@ -1,9 +0,0 @@ -#TODO not compiled or tested -[source] -git = "https://github.com/JasonFerrara/jmtpfs" -[build] -template = "configure" -dependencies = [ - "libmtp", - "libmagic", -] diff --git a/recipes/wip/fuse/simple-mtpfs/recipe.toml b/recipes/wip/fuse/simple-mtpfs/recipe.toml new file mode 100644 index 00000000..3983d79c --- /dev/null +++ b/recipes/wip/fuse/simple-mtpfs/recipe.toml @@ -0,0 +1,15 @@ +#TODO not compiled or tested +# build instructions - https://github.com/phatina/simple-mtpfs/blob/master/INSTALL +[source] +git = "https://github.com/phatina/simple-mtpfs" +rev = "19e7bb9b608b0c0dce2ee6f56fac75901bc69529" +[build] +template = "custom" +dependencies = [ + "libfuse3", + "libmtp", +] +script = """ +./autogen.sh +cookbook_configure +""" diff --git a/recipes/wip/fuse/squashfuse/recipe.toml b/recipes/wip/fuse/squashfuse/recipe.toml new file mode 100644 index 00000000..026cf517 --- /dev/null +++ b/recipes/wip/fuse/squashfuse/recipe.toml @@ -0,0 +1,12 @@ +#TODO missing dependencies +[source] +tar = "https://github.com/vasi/squashfuse/releases/download/0.5.2/squashfuse-0.5.2.tar.gz" +[build] +template = "configure" +dependencies = [ + "libfuse3", + "zlib", + "liblzma", + "lz4", + "zstd", +] diff --git a/recipes/wip/libs/other/libgumbo/recipe.toml b/recipes/wip/libs/other/libgumbo/recipe.toml new file mode 100644 index 00000000..ff5060b7 --- /dev/null +++ b/recipes/wip/libs/other/libgumbo/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +[source] +git = "https://codeberg.org/gumbo-parser/gumbo-parser" +rev = "23af2f7c5a9da7e7ea42fcc2c573df52e4a3a5be" +[build] +template = "custom" +script = """ +./autogen.sh +cookbook_configure +""" diff --git a/recipes/wip/libs/other/libmtp/recipe.toml b/recipes/wip/libs/other/libmtp/recipe.toml new file mode 100644 index 00000000..1d01f796 --- /dev/null +++ b/recipes/wip/libs/other/libmtp/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +tar = "https://sourceforge.net/projects/libmtp/files/libmtp/1.1.21/libmtp-1.1.21.tar.gz/download" +[build] +template = "configure" +dependencies = [ + "libusb", +] From 48bd798094ddb170a533b86ee9de7c3e462b9c48 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 19 Sep 2024 21:04:16 -0600 Subject: [PATCH 2103/3180] qemu: disable coroutine pool --- recipes/wip/vm/qemu/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/vm/qemu/recipe.toml b/recipes/wip/vm/qemu/recipe.toml index ed8cd385..fd19d987 100644 --- a/recipes/wip/vm/qemu/recipe.toml +++ b/recipes/wip/vm/qemu/recipe.toml @@ -28,6 +28,7 @@ COOKBOOK_CONFIGURE_FLAGS=( --prefix="/usr" --cross-prefix="${TARGET}" --static + --disable-coroutine-pool --disable-tpm ) case "${TARGET}" in From dc1983aed77a2829640a942bbd7b43982184c5b4 Mon Sep 17 00:00:00 2001 From: Kamil Koczurek Date: Fri, 20 Sep 2024 21:07:35 +0200 Subject: [PATCH 2104/3180] init: update init.rc to use set-default-scheme --- recipes/core/initfs/aarch64-unknown-redox/init.rc | 5 +++-- recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp | 3 ++- recipes/core/initfs/init.rc | 5 +++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/recipes/core/initfs/aarch64-unknown-redox/init.rc b/recipes/core/initfs/aarch64-unknown-redox/init.rc index e68ee532..0b529102 100644 --- a/recipes/core/initfs/aarch64-unknown-redox/init.rc +++ b/recipes/core/initfs/aarch64-unknown-redox/init.rc @@ -1,4 +1,4 @@ -export PATH /scheme/initfs/bin +export PATH /bin export RUST_BACKTRACE 1 nulld zerod @@ -11,11 +11,12 @@ fbcond 1 2 logd /scheme/debug /scheme/fbcon/1 stdio /scheme/log ramfs logging -pcid /scheme/initfs/etc/pcid/initfs.toml +pcid /etc/pcid/initfs.toml lived unset DISK_LIVE_ADDR DISK_LIVE_SIZE redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK unset REDOXFS_UUID REDOXFS_BLOCK REDOXFS_PASSWORD_ADDR REDOXFS_PASSWORD_SIZE +set-default-scheme file cd / export PATH /usr/bin run.d /usr/lib/init.d /etc/init.d diff --git a/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp b/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp index 306364d0..741469f9 100644 --- a/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp +++ b/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp @@ -1,4 +1,4 @@ -export PATH /scheme/initfs/bin +export PATH /bin export RUST_BACKTRACE 1 nulld zerod @@ -16,6 +16,7 @@ unset DISK_LIVE_ADDR DISK_LIVE_SIZE bcm2835-sdhcid redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK unset REDOXFS_UUID REDOXFS_BLOCK REDOXFS_PASSWORD_ADDR REDOXFS_PASSWORD_SIZE +set-default-scheme file cd / export PATH /usr/bin run.d /usr/lib/init.d /etc/init.d diff --git a/recipes/core/initfs/init.rc b/recipes/core/initfs/init.rc index d9afc157..bdeb3765 100644 --- a/recipes/core/initfs/init.rc +++ b/recipes/core/initfs/init.rc @@ -1,4 +1,4 @@ -export PATH /scheme/initfs/bin +export PATH /bin export RUST_BACKTRACE 1 nulld zerod @@ -13,11 +13,12 @@ stdio /scheme/log ramfs logging ps2d us acpid -pcid /scheme/initfs/etc/pcid/initfs.toml +pcid /etc/pcid/initfs.toml lived unset DISK_LIVE_ADDR DISK_LIVE_SIZE redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK unset REDOXFS_UUID REDOXFS_BLOCK REDOXFS_PASSWORD_ADDR REDOXFS_PASSWORD_SIZE +set-default-scheme file cd / export PATH /usr/bin run.d /usr/lib/init.d /etc/init.d From a53b6b5db4030e7e39d74730aaba970a250be657 Mon Sep 17 00:00:00 2001 From: Timothy Finnegan Date: Sun, 22 Sep 2024 15:56:20 -0700 Subject: [PATCH 2105/3180] Got dropbear building --- recipes/wip/ssh/dropbear/recipe.toml | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/recipes/wip/ssh/dropbear/recipe.toml b/recipes/wip/ssh/dropbear/recipe.toml index ed1ae026..487c164c 100644 --- a/recipes/wip/ssh/dropbear/recipe.toml +++ b/recipes/wip/ssh/dropbear/recipe.toml @@ -1,5 +1,23 @@ -#TODO missing gnu make script, see https://github.com/mkj/dropbear/blob/master/INSTALL.md [source] -tar = "https://matt.ucc.asn.au/dropbear/releases/dropbear-2024.85.tar.bz2" +git = "https://gitlab.redox-os.org/tfinnegan937/dropbear.git" +rev = "4c6828d39f988712cf4d2a64c7acf15d76f24aa9" + [build] template = "custom" +dependencies = [ + "openssl1", + "zlib" +] +script=""" +COOKBOOK_CONFIGURE_FLAGS+=( + --enable-static + --disable-syslog + --disable-utmpx + --disable-utmp + --disable-lastlog + --disable-loginfunc + --disable-wtmp + --disable-wtmpx +) +cookbook_configure +""" From ca103a675aa06ed7f692228959bc6dd6adb1bb9f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 23 Sep 2024 11:13:53 +0000 Subject: [PATCH 2106/3180] Add programs for data recovery --- recipes/wip/data-recovery/foremost/recipe.toml | 5 +++++ recipes/wip/data-recovery/testdisk/recipe.toml | 14 ++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 recipes/wip/data-recovery/foremost/recipe.toml create mode 100644 recipes/wip/data-recovery/testdisk/recipe.toml diff --git a/recipes/wip/data-recovery/foremost/recipe.toml b/recipes/wip/data-recovery/foremost/recipe.toml new file mode 100644 index 00000000..faa9dbdb --- /dev/null +++ b/recipes/wip/data-recovery/foremost/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for gnu make, see the README inside the tarball +[source] +tar = "http://foremost.sourceforge.net/pkg/foremost-1.5.7.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/data-recovery/testdisk/recipe.toml b/recipes/wip/data-recovery/testdisk/recipe.toml new file mode 100644 index 00000000..13e2ecb3 --- /dev/null +++ b/recipes/wip/data-recovery/testdisk/recipe.toml @@ -0,0 +1,14 @@ +#TODO not compiled or tested +# build instructions - https://www.cgsecurity.org/wiki/TestDisk_Compilation +# add optional libraries to expand the features - https://www.cgsecurity.org/wiki/TestDisk_Compilation#Libraries +[source] +tar = "https://www.cgsecurity.org/testdisk-7.2.tar.bz2" +[build] +template = "custom" +dependencies = [ + "ncurses", +] +script = """ +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" +cookbook_configure +""" From 52733db6c2758193c71ce58ca5cf7379f2ba9aa7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 25 Sep 2024 14:52:29 +0000 Subject: [PATCH 2107/3180] Add recipes --- recipes/wip/containers/crun-vm/recipe.toml | 6 ++++++ recipes/wip/containers/crun/recipe.toml | 5 +++++ recipes/wip/containers/docker/recipe.toml | 6 ++++++ recipes/wip/containers/podman/recipe.toml | 6 ++++++ recipes/wip/containers/youki/recipe.toml | 8 ++++++++ 5 files changed, 31 insertions(+) create mode 100644 recipes/wip/containers/crun-vm/recipe.toml create mode 100644 recipes/wip/containers/crun/recipe.toml create mode 100644 recipes/wip/containers/docker/recipe.toml create mode 100644 recipes/wip/containers/podman/recipe.toml create mode 100644 recipes/wip/containers/youki/recipe.toml diff --git a/recipes/wip/containers/crun-vm/recipe.toml b/recipes/wip/containers/crun-vm/recipe.toml new file mode 100644 index 00000000..5473bb52 --- /dev/null +++ b/recipes/wip/containers/crun-vm/recipe.toml @@ -0,0 +1,6 @@ +#TODO not compiled or tested +# dependencies - https://github.com/containers/crun-vm/blob/main/docs/1-installing.md#from-source +[source] +git = "https://github.com/containers/crun-vm" +[build] +template = "cargo" diff --git a/recipes/wip/containers/crun/recipe.toml b/recipes/wip/containers/crun/recipe.toml new file mode 100644 index 00000000..9619bb48 --- /dev/null +++ b/recipes/wip/containers/crun/recipe.toml @@ -0,0 +1,5 @@ +#TODO disable systemd and SELinux +[source] +tar = "https://github.com/containers/crun/releases/download/1.17/crun-1.17.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/containers/docker/recipe.toml b/recipes/wip/containers/docker/recipe.toml new file mode 100644 index 00000000..ceb2a386 --- /dev/null +++ b/recipes/wip/containers/docker/recipe.toml @@ -0,0 +1,6 @@ +#TODO implement a Cookbook template for the Go programming language +[source] +git = "https://github.com/docker/cli" +branch = "27.x" +[build] +template = "go" diff --git a/recipes/wip/containers/podman/recipe.toml b/recipes/wip/containers/podman/recipe.toml new file mode 100644 index 00000000..3bcc6720 --- /dev/null +++ b/recipes/wip/containers/podman/recipe.toml @@ -0,0 +1,6 @@ +#TODO Implement a Cookbook template for the Go programming language +[source] +git = "https://github.com/containers/podman" +branch = "v5.2" +[build] +template = "go" diff --git a/recipes/wip/containers/youki/recipe.toml b/recipes/wip/containers/youki/recipe.toml new file mode 100644 index 00000000..75df049d --- /dev/null +++ b/recipes/wip/containers/youki/recipe.toml @@ -0,0 +1,8 @@ +#TODO require cgroups +[source] +git = "https://github.com/containers/youki" +[build] +template = "custom" +script = """ +cookbook_cargo_packages youki +""" From d67a63313a044e0a1e5698bcc0077d0bfa831b2d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 25 Sep 2024 15:44:28 +0000 Subject: [PATCH 2108/3180] Add recipes --- recipes/wip/containers/skopeo/recipe.toml | 6 ++++++ recipes/wip/vm/libvirt/recipe.toml | 6 ++++++ 2 files changed, 12 insertions(+) create mode 100644 recipes/wip/containers/skopeo/recipe.toml create mode 100644 recipes/wip/vm/libvirt/recipe.toml diff --git a/recipes/wip/containers/skopeo/recipe.toml b/recipes/wip/containers/skopeo/recipe.toml new file mode 100644 index 00000000..0b72488c --- /dev/null +++ b/recipes/wip/containers/skopeo/recipe.toml @@ -0,0 +1,6 @@ +#TODO Implement the Cookbook template for the Go programming language +[source] +git = "https://github.com/containers/skopeo" +branch = "release-1.16" +[build] +template = "go" diff --git a/recipes/wip/vm/libvirt/recipe.toml b/recipes/wip/vm/libvirt/recipe.toml new file mode 100644 index 00000000..c0546914 --- /dev/null +++ b/recipes/wip/vm/libvirt/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for meson +# build instructions - https://libvirt.org/compiling.html#configuring-the-project +[source] +tar = "https://download.libvirt.org/libvirt-10.7.0.tar.xz" +[build] +template = "custom" From 6dfeb2ca408a17966f4d1e30a5c7c0256777c374 Mon Sep 17 00:00:00 2001 From: Andrey Turkin Date: Thu, 26 Sep 2024 11:13:36 +0300 Subject: [PATCH 2109/3180] bootloader: get rid of source copying, build directly from the source instead --- recipes/core/bootloader/recipe.toml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/recipes/core/bootloader/recipe.toml b/recipes/core/bootloader/recipe.toml index 1f4e6eab..0de0ae64 100644 --- a/recipes/core/bootloader/recipe.toml +++ b/recipes/core/bootloader/recipe.toml @@ -4,16 +4,15 @@ git = "https://gitlab.redox-os.org/redox-os/bootloader.git" [build] template = "custom" script = """ -rsync -av --delete "${COOKBOOK_SOURCE}/" ./ - +OUTDIR="${COOKBOOK_BUILD}" mkdir -v "${COOKBOOK_STAGE}/boot" function bootloader { export TARGET="$1" src="$2" dst="$3" - "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" "build/${TARGET}/${src}" - cp -v "build/${TARGET}/${src}" "${COOKBOOK_STAGE}/boot/${dst}" + "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" -f "${COOKBOOK_SOURCE}/Makefile" -C "${OUTDIR}" "${OUTDIR}/${src}" + cp -v "${OUTDIR}/${src}" "${COOKBOOK_STAGE}/boot/${dst}" } ARCH="$(echo "${TARGET}" | cut -d - -f1)" From 6218c5e46445c5194079817f5b2834abfdd6777c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 1 Oct 2024 13:09:34 +0000 Subject: [PATCH 2110/3180] Add recipes --- recipes/wip/analysis/binsider/recipe.toml | 5 +++++ recipes/wip/dev/web/vox/recipe.toml | 5 +++++ recipes/wip/fuse/oku-fs/recipe.toml | 11 +++++++++++ recipes/wip/net/p2p/oku/recipe.toml | 16 ++++++++++++++++ recipes/wip/services/busd/recipe.toml | 5 +++++ 5 files changed, 42 insertions(+) create mode 100644 recipes/wip/analysis/binsider/recipe.toml create mode 100644 recipes/wip/dev/web/vox/recipe.toml create mode 100644 recipes/wip/fuse/oku-fs/recipe.toml create mode 100644 recipes/wip/net/p2p/oku/recipe.toml create mode 100644 recipes/wip/services/busd/recipe.toml diff --git a/recipes/wip/analysis/binsider/recipe.toml b/recipes/wip/analysis/binsider/recipe.toml new file mode 100644 index 00000000..c654bae4 --- /dev/null +++ b/recipes/wip/analysis/binsider/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/orhun/binsider" +[build] +template = "cargo" diff --git a/recipes/wip/dev/web/vox/recipe.toml b/recipes/wip/dev/web/vox/recipe.toml new file mode 100644 index 00000000..6649f708 --- /dev/null +++ b/recipes/wip/dev/web/vox/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/emmyoh/vox" +[build] +template = "cargo" diff --git a/recipes/wip/fuse/oku-fs/recipe.toml b/recipes/wip/fuse/oku-fs/recipe.toml new file mode 100644 index 00000000..ae673c40 --- /dev/null +++ b/recipes/wip/fuse/oku-fs/recipe.toml @@ -0,0 +1,11 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/OkuBrowser/oku-fs" +[build] +template = "custom" +dependencies = [ + "libfuse3", +] +script = """ +cookbook_cargo --features fuse cli +""" diff --git a/recipes/wip/net/p2p/oku/recipe.toml b/recipes/wip/net/p2p/oku/recipe.toml new file mode 100644 index 00000000..7de45815 --- /dev/null +++ b/recipes/wip/net/p2p/oku/recipe.toml @@ -0,0 +1,16 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/OkuBrowser/oku" +[build] +template = "custom" +dependencies = [ + "gtk4", + "glib", + "pango", + "webkitgtk4", + "libfuse3", +] +script = """ +./prebuild.sh +cookbook_cargo +""" diff --git a/recipes/wip/services/busd/recipe.toml b/recipes/wip/services/busd/recipe.toml new file mode 100644 index 00000000..3a5ef9cd --- /dev/null +++ b/recipes/wip/services/busd/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/dbus2/busd" +[build] +template = "cargo" From 350145281569882be7546cd13b975badfaf7c4d4 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 1 Oct 2024 13:16:32 +0000 Subject: [PATCH 2111/3180] Move a recipe --- recipes/wip/dev/{other => web}/zola/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/dev/{other => web}/zola/recipe.toml (100%) diff --git a/recipes/wip/dev/other/zola/recipe.toml b/recipes/wip/dev/web/zola/recipe.toml similarity index 100% rename from recipes/wip/dev/other/zola/recipe.toml rename to recipes/wip/dev/web/zola/recipe.toml From 54bd07315855a294e1471f8f4c5f39e59bdda9cb Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Sat, 5 Oct 2024 14:33:39 +0200 Subject: [PATCH 2112/3180] Update escalated --- recipes/core/escalated/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/core/escalated/recipe.toml b/recipes/core/escalated/recipe.toml index 86c82839..f9cd00e3 100644 --- a/recipes/core/escalated/recipe.toml +++ b/recipes/core/escalated/recipe.toml @@ -2,6 +2,6 @@ git = "https://gitlab.redox-os.org/redox-os/escalated.git" # Escalated is not backwards compatible wrt relibc versions, so we pin it here # so it's updated together with the other main submodules. -rev = "06fe299019dc65e3e029ddb0886fa8e53edd602a" +rev = "846e0774" [build] template = "cargo" From 631c09960a00c236508b1cb1a8bdcb16b96e73cb Mon Sep 17 00:00:00 2001 From: Eva Kurchatova Date: Sun, 6 Oct 2024 19:44:43 +0000 Subject: [PATCH 2113/3180] rvvm: Add RVVM recipe --- recipes/emulators/rvvm/recipe.toml | 36 ++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 recipes/emulators/rvvm/recipe.toml diff --git a/recipes/emulators/rvvm/recipe.toml b/recipes/emulators/rvvm/recipe.toml new file mode 100644 index 00000000..d355186e --- /dev/null +++ b/recipes/emulators/rvvm/recipe.toml @@ -0,0 +1,36 @@ +[source] +git = "https://github.com/LekKit/RVVM.git" +upstream = "https://github.com/LekKit/RVVM" + +[build] +template = "custom" + +# SDL2 is tough to link statically, use SDL1 for now +dependencies = [ + "sdl1", + "liborbital", +] + +script = """ + +export BUILDDIR="${COOKBOOK_BUILD}" +export DESTDIR="${COOKBOOK_STAGE}" + +# Redox currently doesn't support dynamic library loading +export LDFLAGS="$(pkg-config --libs sdl)" + +# Networking is currently broken on Redox (missing setsockopt?) +export USE_NET=0 + +# Use SDL1 +export USE_SDL=1 + +# Building a shared library is currently broken on Redox +export USE_LIB=0 + +export OS=Redox + +# Let's goo +"${COOKBOOK_MAKE}" install -C "${COOKBOOK_SOURCE}" + +""" From da4091c73d42163fda56c58fbb38d18c206fd4de Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 5 Oct 2024 08:31:49 -0600 Subject: [PATCH 2114/3180] Fix gstreamer build --- recipes/libs/gstreamer/recipe.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/libs/gstreamer/recipe.sh b/recipes/libs/gstreamer/recipe.sh index d67fad18..735c0d88 100644 --- a/recipes/libs/gstreamer/recipe.sh +++ b/recipes/libs/gstreamer/recipe.sh @@ -53,6 +53,7 @@ function recipe_build { -Dprefix=/ \ -Dlibdir=lib \ -Dbenchmarks=disabled \ + -Dcoretracers=disabled \ -Dexamples=disabled \ -Dtests=disabled ninja -C _build -v From a1f1a839cd3ff23247ecee6fabc3ddba843df36e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 9 Oct 2024 08:34:44 -0600 Subject: [PATCH 2115/3180] gstreamer: convert recipe to toml --- recipes/libs/gstreamer/recipe.sh | 73 ------------------------------ recipes/libs/gstreamer/recipe.toml | 68 ++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 73 deletions(-) delete mode 100644 recipes/libs/gstreamer/recipe.sh create mode 100644 recipes/libs/gstreamer/recipe.toml diff --git a/recipes/libs/gstreamer/recipe.sh b/recipes/libs/gstreamer/recipe.sh deleted file mode 100644 index 735c0d88..00000000 --- a/recipes/libs/gstreamer/recipe.sh +++ /dev/null @@ -1,73 +0,0 @@ -VERSION=1.20.6 -TAR=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-$VERSION.tar.xz -BUILD_DEPENDS=(gettext glib libffi libiconv pcre zlib) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export GLIB_GENMARSHAL="$(which glib-genmarshal)" - export GLIB_MKENUMS="$(which glib-mkenums)" - export LDFLAGS="-static" - - # TODO: Fix this annoying shite - echo "[binaries]" > cross_file.txt - echo "c = '${CC}'" >> cross_file.txt - echo "cpp = '${CXX}'" >> cross_file.txt - echo "ar = '${AR}'" >> cross_file.txt - echo "strip = '${STRIP}'" >> cross_file.txt - echo "pkgconfig = '${PKG_CONFIG}'" >> cross_file.txt - - echo "[host_machine]" >> cross_file.txt - echo "system = 'redox'" >> cross_file.txt - echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt - echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt - echo "endian = 'little'" >> cross_file.txt - - echo "[paths]" >> cross_file.txt - echo "prefix = '${sysroot}'" >> cross_file.txt - echo "libdir = 'lib'" >> cross_file.txt - echo "bindir = 'bin'" >> cross_file.txt - - unset AR - unset AS - unset CC - unset CXX - unset LD - unset NM - unset OBJCOPY - unset OBJDUMP - unset PKG_CONFIG - unset RANLIB - unset READELF - unset STRIP - - meson . _build \ - --cross-file cross_file.txt \ - --buildtype release \ - --strip \ - -Ddefault_library=static \ - -Dprefix=/ \ - -Dlibdir=lib \ - -Dbenchmarks=disabled \ - -Dcoretracers=disabled \ - -Dexamples=disabled \ - -Dtests=disabled - ninja -C _build -v - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - DESTDIR="$dest" ninja -C _build -v install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/libs/gstreamer/recipe.toml b/recipes/libs/gstreamer/recipe.toml new file mode 100644 index 00000000..56fb4da4 --- /dev/null +++ b/recipes/libs/gstreamer/recipe.toml @@ -0,0 +1,68 @@ +[source] +tar = "https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.20.6.tar.xz" +blake3 = "d96a7fd8bb9bec309bc40ccafdbac3bd4d11d06a9be41c38337cea02deaea95d" +patches = [ + "redox.patch" +] + +[build] +template = "custom" +dependencies = [ + "gettext", + "glib", + "libffi", + "libiconv", + "pcre", + "zlib" +] +script = """ +export GLIB_GENMARSHAL="$(which glib-genmarshal)" +export GLIB_MKENUMS="$(which glib-mkenums)" +export LDFLAGS="-static" + +# TODO: Fix this annoying shite +echo "[binaries]" > cross_file.txt +echo "c = '${CC}'" >> cross_file.txt +echo "cpp = '${CXX}'" >> cross_file.txt +echo "ar = '${AR}'" >> cross_file.txt +echo "strip = '${STRIP}'" >> cross_file.txt +echo "pkgconfig = '${TARGET}-pkg-config'" >> cross_file.txt + +echo "[host_machine]" >> cross_file.txt +echo "system = 'redox'" >> cross_file.txt +echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt +echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt +echo "endian = 'little'" >> cross_file.txt + +echo "[paths]" >> cross_file.txt +echo "prefix = '${COOKBOOK_SYSROOT}'" >> cross_file.txt +echo "libdir = 'lib'" >> cross_file.txt +echo "bindir = 'bin'" >> cross_file.txt + +unset AR +unset AS +unset CC +unset CXX +unset LD +unset NM +unset OBJCOPY +unset OBJDUMP +unset PKG_CONFIG +unset RANLIB +unset READELF +unset STRIP + +meson setup "${COOKBOOK_SOURCE}" _build \ + --cross-file cross_file.txt \ + --buildtype release \ + --strip \ + -Ddefault_library=static \ + -Dprefix=/ \ + -Dlibdir=lib \ + -Dbenchmarks=disabled \ + -Dcoretracers=disabled \ + -Dexamples=disabled \ + -Dtests=disabled +ninja -C _build -v +DESTDIR="${COOKBOOK_STAGE}" ninja -C _build -v install +""" From 10bb8407e9ba711d5df43e11e2722628b10908c2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 9 Oct 2024 08:59:39 -0600 Subject: [PATCH 2116/3180] libxkbcommon: fix build --- .../wip/libs/other/libxkbcommon/recipe.toml | 54 ++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/recipes/wip/libs/other/libxkbcommon/recipe.toml b/recipes/wip/libs/other/libxkbcommon/recipe.toml index 6791d28b..9fc3ebf5 100644 --- a/recipes/wip/libs/other/libxkbcommon/recipe.toml +++ b/recipes/wip/libs/other/libxkbcommon/recipe.toml @@ -1,5 +1,57 @@ #TODO missing script for Meson, see https://github.com/xkbcommon/libxkbcommon#building [source] -tar = "https://xkbcommon.org/download/libxkbcommon-1.5.0.tar.xz" +tar = "https://xkbcommon.org/download/libxkbcommon-1.7.0.tar.xz" +b3sum = "5001ca0b8562feeef2010bf16c05657e3875fda3ed5fdedbf48b9135e5cdfcbc" + [build] template = "custom" +dependencies = [ + "libxml2", + "xz", + "zlib", +] +script = """ +# TODO: Fix this annoying shite +echo "[binaries]" > cross_file.txt +echo "c = '${CC}'" >> cross_file.txt +echo "cpp = '${CXX}'" >> cross_file.txt +echo "ar = '${AR}'" >> cross_file.txt +echo "strip = '${STRIP}'" >> cross_file.txt +echo "pkgconfig = '${TARGET}-pkg-config'" >> cross_file.txt + +echo "[host_machine]" >> cross_file.txt +echo "system = 'redox'" >> cross_file.txt +echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt +echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt +echo "endian = 'little'" >> cross_file.txt + +echo "[paths]" >> cross_file.txt +echo "prefix = '${COOKBOOK_SYSROOT}'" >> cross_file.txt +echo "libdir = 'lib'" >> cross_file.txt +echo "bindir = 'bin'" >> cross_file.txt + +unset AR +unset AS +unset CC +unset CXX +unset LD +unset NM +unset OBJCOPY +unset OBJDUMP +unset PKG_CONFIG +unset RANLIB +unset READELF +unset STRIP + +meson setup "${COOKBOOK_SOURCE}" _build \ + --cross-file cross_file.txt \ + --buildtype release \ + --strip \ + -Ddefault_library=static \ + -Dprefix=/ \ + -Dlibdir=lib \ + -Denable-wayland=false \ + -Denable-x11=false +ninja -C _build -v +DESTDIR="${COOKBOOK_STAGE}" ninja -C _build -v install +""" From 67a86dcae67056d8baf78f196b4d51f22a785a9c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 9 Oct 2024 09:57:06 -0600 Subject: [PATCH 2117/3180] Add gstreamer-plugins-base --- .../libs/gstreamer-plugins-base/recipe.toml | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 recipes/libs/gstreamer-plugins-base/recipe.toml diff --git a/recipes/libs/gstreamer-plugins-base/recipe.toml b/recipes/libs/gstreamer-plugins-base/recipe.toml new file mode 100644 index 00000000..829760f7 --- /dev/null +++ b/recipes/libs/gstreamer-plugins-base/recipe.toml @@ -0,0 +1,65 @@ +[source] +tar = "https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.20.6.tar.xz" +blake3 = "6761ea816ead143b5472c518c7fc52c0f485542b3c671cd872616bc6ca600f50" +patches = [] + +[build] +template = "custom" +dependencies = [ + "gettext", + "glib", + "gstreamer", + "libffi", + "libiconv", + "pcre", + "zlib" +] +script = """ +export GLIB_GENMARSHAL="$(which glib-genmarshal)" +export GLIB_MKENUMS="$(which glib-mkenums)" +export LDFLAGS="-static" + +# TODO: Fix this annoying shite +echo "[binaries]" > cross_file.txt +echo "c = '${CC}'" >> cross_file.txt +echo "cpp = '${CXX}'" >> cross_file.txt +echo "ar = '${AR}'" >> cross_file.txt +echo "strip = '${STRIP}'" >> cross_file.txt +echo "pkgconfig = '${TARGET}-pkg-config'" >> cross_file.txt + +echo "[host_machine]" >> cross_file.txt +echo "system = 'redox'" >> cross_file.txt +echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt +echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt +echo "endian = 'little'" >> cross_file.txt + +echo "[paths]" >> cross_file.txt +echo "prefix = '${COOKBOOK_SYSROOT}'" >> cross_file.txt +echo "libdir = 'lib'" >> cross_file.txt +echo "bindir = 'bin'" >> cross_file.txt + +unset AR +unset AS +unset CC +unset CXX +unset LD +unset NM +unset OBJCOPY +unset OBJDUMP +unset PKG_CONFIG +unset RANLIB +unset READELF +unset STRIP + +meson setup "${COOKBOOK_SOURCE}" _build \ + --cross-file cross_file.txt \ + --buildtype release \ + --strip \ + -Ddefault_library=static \ + -Dprefix=/ \ + -Dlibdir=lib \ + -Dexamples=disabled \ + -Dtests=disabled +ninja -C _build -v +DESTDIR="${COOKBOOK_STAGE}" ninja -C _build -v install +""" From 36e51cf70e382bde8fbe98045dca5dbb3d67b886 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 9 Oct 2024 10:05:35 -0600 Subject: [PATCH 2118/3180] cosmic-player: switch to gstreamer --- recipes/wip/players/cosmic-player/recipe.toml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/recipes/wip/players/cosmic-player/recipe.toml b/recipes/wip/players/cosmic-player/recipe.toml index ec0f1a58..fc9e3720 100644 --- a/recipes/wip/players/cosmic-player/recipe.toml +++ b/recipes/wip/players/cosmic-player/recipe.toml @@ -4,17 +4,22 @@ branch = "master" [build] dependencies = [ - "ffmpeg6", + "gettext", + "glib", + "gstreamer", + "gstreamer-plugins-base", + "libffi", + "libiconv", "liborbital", + "libxkbcommon", "llvm18", "mesa", - "sdl2", + "pcre", "zlib", ] template = "custom" script = """ -unset CC -cookbook_cargo --no-default-features --features static --verbose +cookbook_carg mkdir -pv "${COOKBOOK_STAGE}/ui/apps" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/cosmic-player" """ From 2a4bdd28655fe9fd782c53d7a8c6c08dd373fcc8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 9 Oct 2024 11:27:17 -0600 Subject: [PATCH 2119/3180] Add gstreamer-plugins-good --- .../libs/gstreamer-plugins-good/recipe.toml | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 recipes/libs/gstreamer-plugins-good/recipe.toml diff --git a/recipes/libs/gstreamer-plugins-good/recipe.toml b/recipes/libs/gstreamer-plugins-good/recipe.toml new file mode 100644 index 00000000..87e47b8b --- /dev/null +++ b/recipes/libs/gstreamer-plugins-good/recipe.toml @@ -0,0 +1,66 @@ +[source] +tar = "https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.20.6.tar.xz" +blake3 = "2ae9d13fffb56e3c0f2cf4003453ab787b54e7cf773c80ba1fcbf36ac7d68124" +patches = [] + +[build] +template = "custom" +dependencies = [ + "gettext", + "glib", + "gstreamer", + "gstreamer-plugins-base", + "libffi", + "libiconv", + "pcre", + "zlib" +] +script = """ +export GLIB_GENMARSHAL="$(which glib-genmarshal)" +export GLIB_MKENUMS="$(which glib-mkenums)" +export LDFLAGS="-static" + +# TODO: Fix this annoying shite +echo "[binaries]" > cross_file.txt +echo "c = '${CC}'" >> cross_file.txt +echo "cpp = '${CXX}'" >> cross_file.txt +echo "ar = '${AR}'" >> cross_file.txt +echo "strip = '${STRIP}'" >> cross_file.txt +echo "pkgconfig = '${TARGET}-pkg-config'" >> cross_file.txt + +echo "[host_machine]" >> cross_file.txt +echo "system = 'redox'" >> cross_file.txt +echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt +echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt +echo "endian = 'little'" >> cross_file.txt + +echo "[paths]" >> cross_file.txt +echo "prefix = '${COOKBOOK_SYSROOT}'" >> cross_file.txt +echo "libdir = 'lib'" >> cross_file.txt +echo "bindir = 'bin'" >> cross_file.txt + +unset AR +unset AS +unset CC +unset CXX +unset LD +unset NM +unset OBJCOPY +unset OBJDUMP +unset PKG_CONFIG +unset RANLIB +unset READELF +unset STRIP + +meson setup "${COOKBOOK_SOURCE}" _build \ + --cross-file cross_file.txt \ + --buildtype release \ + --strip \ + -Ddefault_library=static \ + -Dprefix=/ \ + -Dlibdir=lib \ + -Dexamples=disabled \ + -Dtests=disabled +ninja -C _build -v +DESTDIR="${COOKBOOK_STAGE}" ninja -C _build -v install +""" From c5e50b9730026d88c894bb29a34f09235350fd22 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 9 Oct 2024 11:31:46 -0600 Subject: [PATCH 2120/3180] cosmic-player: build without wgpu feature --- recipes/wip/players/cosmic-player/recipe.toml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/recipes/wip/players/cosmic-player/recipe.toml b/recipes/wip/players/cosmic-player/recipe.toml index fc9e3720..f5c3e826 100644 --- a/recipes/wip/players/cosmic-player/recipe.toml +++ b/recipes/wip/players/cosmic-player/recipe.toml @@ -10,16 +10,12 @@ dependencies = [ "gstreamer-plugins-base", "libffi", "libiconv", - "liborbital", - "libxkbcommon", - "llvm18", - "mesa", "pcre", "zlib", ] template = "custom" script = """ -cookbook_carg +cookbook_cargo --no-default-features mkdir -pv "${COOKBOOK_STAGE}/ui/apps" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/cosmic-player" """ From 24c381e9f29206bd7b9aeb071aad38d3b1a34a7b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 9 Oct 2024 11:35:46 -0600 Subject: [PATCH 2121/3180] ffmpeg6: disable docs --- recipes/libs/ffmpeg6/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/libs/ffmpeg6/recipe.toml b/recipes/libs/ffmpeg6/recipe.toml index 587426bf..b370ea4f 100644 --- a/recipes/libs/ffmpeg6/recipe.toml +++ b/recipes/libs/ffmpeg6/recipe.toml @@ -23,6 +23,7 @@ COOKBOOK_CONFIGURE_FLAGS=( --arch="${ARCH}" --cross_prefix="${TARGET}-" --prefix=/ + --disable-doc --disable-network --enable-sdl2 --enable-zlib From 4818f59fe027527e12615f2daeccc23dd1ca5563 Mon Sep 17 00:00:00 2001 From: bitstr0m Date: Thu, 10 Oct 2024 13:29:05 +0100 Subject: [PATCH 2122/3180] Fix luajit Compiles and luajit executable passes tests found at https://github.com/LuaJIT/LuaJIT-test-cleanup (excluding some that appear to be related to the static build). Compiled without W^X memory permission support because there appears to be some issue with the mprotect() call. --- recipes/wip/dev/lang/luajit/recipe.toml | 24 +++++++++++++++++-- recipes/wip/dev/lang/luajit/redox.patch | 31 +++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 recipes/wip/dev/lang/luajit/redox.patch diff --git a/recipes/wip/dev/lang/luajit/recipe.toml b/recipes/wip/dev/lang/luajit/recipe.toml index 237fe87b..c2359afa 100644 --- a/recipes/wip/dev/lang/luajit/recipe.toml +++ b/recipes/wip/dev/lang/luajit/recipe.toml @@ -1,5 +1,25 @@ -#TODO missing script for "make", see https://luajit.org/install.html +#TODO remove -DLUAJIT_SECURITY_MCODE=0 [source] -tar = "https://luajit.org/download/LuaJIT-2.1.0-beta3.tar.gz" +# LuaJIT is only available as a rolling release +git = "https://luajit.org/git/luajit.git" +rev = "2090842410e0ba6f81fad310a77bf5432488249a" + [build] template = "custom" +script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ + +# Cookbook doesn't apply patches to git repositiories (so we do it manually) +# The patch is applied so that LUAJIT_OS is set to LUAJIT_OS_POSIX without +# redefinition warnings +git apply "${COOKBOOK_RECIPE}/redox.patch" + +${COOKBOOK_MAKE} -j ${COOKBOOK_MAKE_JOBS} install \ + PREFIX="${COOKBOOK_STAGE}" \ + BUILDMODE='static' \ + TARGET_SYS='Redox' \ + XCFLAGS='-DLUAJIT_SECURITY_MCODE=0' \ + CROSS="${TARGET}-" + +cd "${COOKBOOK_STAGE}"/bin && ln -s luajit-2.1.* luajit +""" diff --git a/recipes/wip/dev/lang/luajit/redox.patch b/recipes/wip/dev/lang/luajit/redox.patch new file mode 100644 index 00000000..aef67b4c --- /dev/null +++ b/recipes/wip/dev/lang/luajit/redox.patch @@ -0,0 +1,31 @@ +diff --git a/src/Makefile b/src/Makefile +index 3a6a4329..450e8fe6 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -351,6 +351,9 @@ else + ifeq (GNU/kFreeBSD,$(TARGET_SYS)) + TARGET_XLIBS+= -ldl + endif ++ ifeq (Redox,$(TARGET_SYS)) ++ TARGET_XCFLAGS+= -DLUAJIT_OS=LUAJIT_OS_POSIX ++ endif + endif + endif + endif +@@ -367,12 +370,16 @@ ifneq ($(HOST_SYS),$(TARGET_SYS)) + else + ifeq (iOS,$(TARGET_SYS)) + HOST_XCFLAGS+= -DLUAJIT_OS=LUAJIT_OS_OSX -DTARGET_OS_IPHONE=1 ++ else ++ ifeq (Redox,$(TARGET_SYS)) ++ HOST_XCFLAGS+= -DLUAJIT_OS=LUAJIT_OS_POSIX + else + HOST_XCFLAGS+= -DLUAJIT_OS=LUAJIT_OS_OTHER + endif + endif + endif + endif ++ endif + endif + + ifneq (,$(CCDEBUG)) From 9a3cebcfde8cc5bc2033bb36db53dc77c773a5b2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 15 Oct 2024 12:31:12 -0600 Subject: [PATCH 2123/3180] procedural-wallpapers-rs: fix build --- recipes/graphics/procedural-wallpapers-rs/recipe.toml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/recipes/graphics/procedural-wallpapers-rs/recipe.toml b/recipes/graphics/procedural-wallpapers-rs/recipe.toml index de976eaf..cb4c3a9f 100644 --- a/recipes/graphics/procedural-wallpapers-rs/recipe.toml +++ b/recipes/graphics/procedural-wallpapers-rs/recipe.toml @@ -2,4 +2,8 @@ git = "https://github.com/lukas-kirschner/procedural-wallpapers-rs.git" [build] -template = "cargo" +template = "custom" +script = """ +COOKBOOK_SOURCE="${COOKBOOK_SOURCE}"/procedural_wallpapers +cookbook_cargo +""" From 987178b1ddb98634ab7e03ec8971dc0dbe68b26b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 15 Oct 2024 17:13:34 -0600 Subject: [PATCH 2124/3180] Add cosmic-store recipe --- recipes/tools/cosmic-store/recipe.toml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 recipes/tools/cosmic-store/recipe.toml diff --git a/recipes/tools/cosmic-store/recipe.toml b/recipes/tools/cosmic-store/recipe.toml new file mode 100644 index 00000000..36e9a17f --- /dev/null +++ b/recipes/tools/cosmic-store/recipe.toml @@ -0,0 +1,15 @@ +[source] +git = "https://github.com/pop-os/cosmic-store.git" +branch = "master" + +[build] +template = "custom" +dependencies = [ + "gettext", + "openssl1", +] +script = """ +export GETTEXT_DIR="${COOKBOOK_SYSROOT}" +export GETTEXT_STATIC=1 +cookbook_cargo --no-default-features +""" From ac1b88e760e5e5290496af91cdc12912f8574af8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 15 Oct 2024 20:27:16 -0600 Subject: [PATCH 2125/3180] cosmic-store: enable pkgar feature and install app data --- recipes/tools/cosmic-store/recipe.toml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/recipes/tools/cosmic-store/recipe.toml b/recipes/tools/cosmic-store/recipe.toml index 36e9a17f..fdf97a08 100644 --- a/recipes/tools/cosmic-store/recipe.toml +++ b/recipes/tools/cosmic-store/recipe.toml @@ -11,5 +11,13 @@ dependencies = [ script = """ export GETTEXT_DIR="${COOKBOOK_SYSROOT}" export GETTEXT_STATIC=1 -cookbook_cargo --no-default-features +cookbook_cargo --no-default-features --features pkgar +#TODO: install with just? +APPID="com.system76.CosmicStore" +mkdir -pv "${COOKBOOK_STAGE}/usr/share/applications/" +cp -v "${COOKBOOK_SOURCE}/res/${APPID}.desktop" "${COOKBOOK_STAGE}/usr/share/applications/" +mkdir -pv "${COOKBOOK_STAGE}/usr/share/metainfo/" +cp -v "${COOKBOOK_SOURCE}/res/${APPID}.metainfo.xml" "${COOKBOOK_STAGE}/usr/share/metainfo/" +mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" +cp -rv "${COOKBOOK_SOURCE}/res/icons/hicolor/" "${COOKBOOK_STAGE}/usr/share/icons/" """ From e1f1a57adedb7a2c105d310918c4c6f117828de5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 15 Oct 2024 21:13:15 -0600 Subject: [PATCH 2126/3180] Add support for generating appstream data --- config.sh | 15 +++++++++++++++ cook.sh | 15 --------------- repo.sh | 34 +++++++++++++++++++++++++++++++++- 3 files changed, 48 insertions(+), 16 deletions(-) diff --git a/config.sh b/config.sh index f518e5ba..dee008f1 100755 --- a/config.sh +++ b/config.sh @@ -54,3 +54,18 @@ fi export FIND export STAT + +if [ ! "$(uname -s)" = "Redox" ] +then +function docgen { + CC=cc AR=ar RANLIB=ranlib cargo run --release --manifest-path "$ROOT/docgen/Cargo.toml" --bin docgen -- "$@" +} + +function pkg { + CC=cc AR=ar RANLIB=ranlib cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- "$@" +} + +function pkgar { + CC=cc AR=ar RANLIB=ranlib cargo run --release --manifest-path "$ROOT/pkgar/Cargo.toml" --bin pkgar -- "$@" +} +fi \ No newline at end of file diff --git a/cook.sh b/cook.sh index 22445a04..408c7ee1 100755 --- a/cook.sh +++ b/cook.sh @@ -20,21 +20,6 @@ else SHASUM="shasum -a 256" fi -if [ ! "$(uname -s)" = "Redox" ] -then -function docgen { - CC=cc AR=ar RANLIB=ranlib cargo run --release --manifest-path "$ROOT/docgen/Cargo.toml" --bin docgen -- "$@" -} - -function pkg { - CC=cc AR=ar RANLIB=ranlib cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- "$@" -} - -function pkgar { - CC=cc AR=ar RANLIB=ranlib cargo run --release --manifest-path "$ROOT/pkgar/Cargo.toml" --bin pkgar -- "$@" -} -fi - function usage { echo "cook.sh $1 " >&2 echo " dist" >&2 diff --git a/repo.sh b/repo.sh index a0adabed..64fc012a 100755 --- a/repo.sh +++ b/repo.sh @@ -4,10 +4,14 @@ shopt -s nullglob source config.sh +APPSTREAM="0" recipes="" for arg in "${@:1}" do - if [ "$arg" == "--debug" ] + if [ "$arg" == "--appstream" ] + then + APPSTREAM="1" + elif [ "$arg" == "--debug" ] then DEBUG=--debug elif [ "$arg" == "--nonstop" ] @@ -115,6 +119,8 @@ done mkdir -p "$REPO" +APPSTREAM_SOURCES=() + for recipe in $recipes do recipe_path=`target/release/find_recipe $recipe` @@ -133,8 +139,34 @@ do echo -e "\033[01;38;5;155mrepo - publishing $recipe\033[0m" >&2 cp -v "${COOKBOOK_STAGE}.pkgar" "$REPO/$recipe.pkgar" fi + + if [ -e "${COOKBOOK_STAGE}/usr/share/metainfo" ] + then + APPSTREAM_SOURCES+=("${COOKBOOK_STAGE}") + fi done +if [ "${APPSTREAM}" == "1" ] +then + echo -e "\033[01;38;5;155mrepo - generating appstream data\033[0m" >&2 + + APPSTREAM_ROOT="$ROOT/build/${TARGET}/appstream" + APPSTREAM_PKG="$REPO/appstream.pkgar" + rm -rf "${APPSTREAM_ROOT}" "${APPSTREAM_PKG}" + mkdir -p "${APPSTREAM_ROOT}" + if [ -n "${APPSTREAM_SOURCES}" ] + then + appstreamcli compose \ + --origin=pkgar \ + --result-root="${APPSTREAM_ROOT}" \ + "${APPSTREAM_SOURCES[@]}" + fi + pkgar create \ + --archive "${APPSTREAM_PKG}" \ + --skey "${ROOT}/build/id_ed25519.toml" \ + "${APPSTREAM_ROOT}" +fi + echo -e "\033[01;38;5;155mrepo - generating repo.toml\033[0m" >&2 echo "[packages]" > "$REPO/repo.toml" From 28e63617451e9187db6fa872442b055b4b1b84a6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 15 Oct 2024 21:18:43 -0600 Subject: [PATCH 2127/3180] Install COSMIC app data --- recipes/tools/cosmic-edit/recipe.toml | 8 ++++++++ recipes/tools/cosmic-files/recipe.toml | 8 ++++++++ recipes/tools/cosmic-term/recipe.toml | 8 ++++++++ 3 files changed, 24 insertions(+) diff --git a/recipes/tools/cosmic-edit/recipe.toml b/recipes/tools/cosmic-edit/recipe.toml index 7af455cf..bd7c4482 100644 --- a/recipes/tools/cosmic-edit/recipe.toml +++ b/recipes/tools/cosmic-edit/recipe.toml @@ -8,4 +8,12 @@ script = """ cookbook_cargo --no-default-features mkdir -pv "${COOKBOOK_STAGE}/ui/apps" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/30_cosmic-edit" +#TODO: install with just? +APPID="com.system76.CosmicEdit" +mkdir -pv "${COOKBOOK_STAGE}/usr/share/applications/" +cp -v "${COOKBOOK_SOURCE}/res/${APPID}.desktop" "${COOKBOOK_STAGE}/usr/share/applications/" +mkdir -pv "${COOKBOOK_STAGE}/usr/share/metainfo/" +cp -v "${COOKBOOK_SOURCE}/res/${APPID}.metainfo.xml" "${COOKBOOK_STAGE}/usr/share/metainfo/" +mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" +cp -rv "${COOKBOOK_SOURCE}/res/icons/hicolor/" "${COOKBOOK_STAGE}/usr/share/icons/" """ diff --git a/recipes/tools/cosmic-files/recipe.toml b/recipes/tools/cosmic-files/recipe.toml index 1314097d..c1c5eeab 100644 --- a/recipes/tools/cosmic-files/recipe.toml +++ b/recipes/tools/cosmic-files/recipe.toml @@ -8,4 +8,12 @@ script = """ cookbook_cargo --no-default-features --features winit mkdir -pv "${COOKBOOK_STAGE}/ui/apps" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/20_cosmic-files" +#TODO: install with just? +APPID="com.system76.CosmicFiles" +mkdir -pv "${COOKBOOK_STAGE}/usr/share/applications/" +cp -v "${COOKBOOK_SOURCE}/res/${APPID}.desktop" "${COOKBOOK_STAGE}/usr/share/applications/" +mkdir -pv "${COOKBOOK_STAGE}/usr/share/metainfo/" +cp -v "${COOKBOOK_SOURCE}/res/${APPID}.metainfo.xml" "${COOKBOOK_STAGE}/usr/share/metainfo/" +mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" +cp -rv "${COOKBOOK_SOURCE}/res/icons/hicolor/" "${COOKBOOK_STAGE}/usr/share/icons/" """ diff --git a/recipes/tools/cosmic-term/recipe.toml b/recipes/tools/cosmic-term/recipe.toml index ec06ea5b..2afe4c00 100644 --- a/recipes/tools/cosmic-term/recipe.toml +++ b/recipes/tools/cosmic-term/recipe.toml @@ -8,4 +8,12 @@ script = """ cookbook_cargo --no-default-features mkdir -pv "${COOKBOOK_STAGE}/ui/apps" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/10_cosmic-term" +#TODO: install with just? +APPID="com.system76.CosmicTerm" +mkdir -pv "${COOKBOOK_STAGE}/usr/share/applications/" +cp -v "${COOKBOOK_SOURCE}/res/${APPID}.desktop" "${COOKBOOK_STAGE}/usr/share/applications/" +mkdir -pv "${COOKBOOK_STAGE}/usr/share/metainfo/" +cp -v "${COOKBOOK_SOURCE}/res/${APPID}.metainfo.xml" "${COOKBOOK_STAGE}/usr/share/metainfo/" +mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" +cp -rv "${COOKBOOK_SOURCE}/res/icons/hicolor/" "${COOKBOOK_STAGE}/usr/share/icons/" """ From 8ef929014aa10ec801ef751c9ead4005f80e7dd0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 16 Oct 2024 09:01:13 -0600 Subject: [PATCH 2128/3180] Add hicolor-icon-theme --- recipes/icons/hicolor-icon-theme/recipe.toml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 recipes/icons/hicolor-icon-theme/recipe.toml diff --git a/recipes/icons/hicolor-icon-theme/recipe.toml b/recipes/icons/hicolor-icon-theme/recipe.toml new file mode 100644 index 00000000..a216df37 --- /dev/null +++ b/recipes/icons/hicolor-icon-theme/recipe.toml @@ -0,0 +1,9 @@ +[source] +git = "https://gitlab.freedesktop.org/xdg/default-icon-theme.git" + +[build] +template = "custom" +script = """ +meson setup -Dprefix=/usr . "${COOKBOOK_SOURCE}" +env DESTDIR="${COOKBOOK_STAGE}" meson install +""" From 776f49cb5ccad9245b473b0bf77414e3107770a8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 16 Oct 2024 11:10:52 -0600 Subject: [PATCH 2129/3180] Remove manifests from programs that install .desktop files --- recipes/emulators/scummvm/icon.png | Bin 4683 -> 0 bytes recipes/emulators/scummvm/manifest | 4 ---- recipes/emulators/scummvm/recipe.sh | 7 ------- recipes/games/openttd/manifest | 4 ---- recipes/games/openttd/recipe.sh | 6 ------ recipes/games/spacecadetpinball/recipe.toml | 8 -------- recipes/tools/schismtracker/manifest | 4 ---- recipes/tools/schismtracker/recipe.sh | 7 ------- 8 files changed, 40 deletions(-) delete mode 100644 recipes/emulators/scummvm/icon.png delete mode 100644 recipes/emulators/scummvm/manifest delete mode 100644 recipes/games/openttd/manifest delete mode 100644 recipes/tools/schismtracker/manifest diff --git a/recipes/emulators/scummvm/icon.png b/recipes/emulators/scummvm/icon.png deleted file mode 100644 index b2953a649b9cdabca25676d8277a8db62d1c6018..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4683 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 N002ovPDHLkV1mfc$_xMi diff --git a/recipes/emulators/scummvm/manifest b/recipes/emulators/scummvm/manifest deleted file mode 100644 index 03111f70..00000000 --- a/recipes/emulators/scummvm/manifest +++ /dev/null @@ -1,4 +0,0 @@ -name=ScummVM -category=Games -binary=/bin/scummvm -icon=/ui/icons/apps/scummvm.png diff --git a/recipes/emulators/scummvm/recipe.sh b/recipes/emulators/scummvm/recipe.sh index f772252b..3ce8b729 100644 --- a/recipes/emulators/scummvm/recipe.sh +++ b/recipes/emulators/scummvm/recipe.sh @@ -33,12 +33,5 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" "$REDOX_MAKE" DESTDIR="$dest" install - - mkdir -pv "$1/ui/apps" - cp -v "${COOKBOOK_RECIPE}/manifest" "$1/ui/apps/scummvm" - - mkdir -pv "$1/ui/icons/apps" - cp -v "${COOKBOOK_RECIPE}/icon.png" "$1/ui/icons/apps/scummvm.png" - skip=1 } diff --git a/recipes/games/openttd/manifest b/recipes/games/openttd/manifest deleted file mode 100644 index 79405498..00000000 --- a/recipes/games/openttd/manifest +++ /dev/null @@ -1,4 +0,0 @@ -name=OpenTTD -category=Games -binary=/usr/games/openttd -icon=/ui/icons/apps/openttd.png diff --git a/recipes/games/openttd/recipe.sh b/recipes/games/openttd/recipe.sh index ff766abf..c08ccf8f 100644 --- a/recipes/games/openttd/recipe.sh +++ b/recipes/games/openttd/recipe.sh @@ -36,11 +36,5 @@ function recipe_stage { "$REDOX_MAKE" VERBOSE=1 ROOT_DIR="$dest/../build/" BUNDLE_DIR="$bundledir" INSTALL_DIR="$dest/usr" install rm -rf "$bundledir" - mkdir -pv "$1/ui/apps" - cp -v "${COOKBOOK_RECIPE}/manifest" "$1/ui/apps/openttd" - - mkdir -pv "$1/ui/icons/apps" - cp -v "media/openttd.64.png" "$1/ui/icons/apps/openttd.png" - skip=1 } diff --git a/recipes/games/spacecadetpinball/recipe.toml b/recipes/games/spacecadetpinball/recipe.toml index 39da0f0e..384f7852 100644 --- a/recipes/games/spacecadetpinball/recipe.toml +++ b/recipes/games/spacecadetpinball/recipe.toml @@ -29,12 +29,4 @@ COOKBOOK_CONFIGURE_FLAGS=( "${COOKBOOK_SOURCE}" ) cookbook_configure - -mkdir -pv "${COOKBOOK_STAGE}/ui/apps" -cat > "${COOKBOOK_STAGE}"/ui/apps/spacecadetpinball < Date: Mon, 17 Jun 2024 10:03:00 +0300 Subject: [PATCH 2130/3180] RISC-V target support --- .cargo/config.toml | 4 + Cargo.lock | 784 ++++++++++++++------------- Cargo.toml | 9 +- bin/riscv64-unknown-redox-pkg-config | 7 + config.sh | 3 + pkgutils | 2 +- recipes/core/bootloader/recipe.toml | 2 +- recipes/core/bootstrap/recipe.toml | 4 +- recipes/core/escalated/recipe.toml | 2 +- recipes/core/kernel/recipe.toml | 6 +- recipes/tools/xz/recipe.toml | 2 +- src/bin/cook.rs | 6 +- 12 files changed, 437 insertions(+), 394 deletions(-) create mode 100755 bin/riscv64-unknown-redox-pkg-config diff --git a/.cargo/config.toml b/.cargo/config.toml index 424d6606..e7c5a8e6 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -9,3 +9,7 @@ rustflags = [] [target.x86_64-unknown-redox] linker = "x86_64-unknown-redox-gcc" rustflags = [] + +[target.riscv64gc-unknown-redox] +linker = "riscv64-unknown-redox-gcc" +rustflags = [] diff --git a/Cargo.lock b/Cargo.lock index f9b3c5f1..db5611fb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,18 +4,18 @@ version = 3 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "adler32" @@ -68,6 +68,61 @@ dependencies = [ "winapi", ] +[[package]] +name = "anstream" +version = "0.6.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" + +[[package]] +name = "anstyle-parse" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + +[[package]] +name = "anyhow" +version = "1.0.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" + [[package]] name = "arg_parser" version = "0.1.0" @@ -76,9 +131,9 @@ checksum = "e9bcdf9185a4ea0d8afa7c8ad387cc3a93c3ecfa918125e000a57a42e71268d7" [[package]] name = "argon2" -version = "0.3.4" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25df3c03f1040d0069fcd3907e24e36d59f9b6fa07ba49be0eb25a794f036ba7" +checksum = "db4ce4441f99dbd377ca8a8f57b698c44d0d6e712d8329b5040da5a64aa1ce73" dependencies = [ "base64ct", "blake2", @@ -86,9 +141,9 @@ dependencies = [ [[package]] name = "arrayref" -version = "0.3.7" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" @@ -98,9 +153,9 @@ checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "atty" @@ -115,23 +170,23 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "backtrace" -version = "0.3.71" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if 1.0.0", "libc", "miniz_oxide", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] @@ -170,9 +225,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "blake2" @@ -212,15 +267,15 @@ dependencies = [ [[package]] name = "blake3" -version = "1.5.1" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" +checksum = "e9ec96fe9a81b5e365f9db71fe00edc4fe4ca2cc7dcb7861f0603012a7caa210" dependencies = [ "arrayref", - "arrayvec 0.7.4", + "arrayvec 0.7.6", "cc", "cfg-if 1.0.0", - "constant_time_eq 0.3.0", + "constant_time_eq 0.3.1", ] [[package]] @@ -268,9 +323,12 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cc" -version = "1.0.98" +version = "1.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f" +checksum = "b16803a61b81d9eabb7eae2588776c4c1e584b738ede45fdbb4c972cec1e9945" +dependencies = [ + "shlex", +] [[package]] name = "cfg-if" @@ -295,7 +353,7 @@ dependencies = [ "js-sys", "num-traits", "wasm-bindgen", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -322,6 +380,12 @@ dependencies = [ "vec_map", ] +[[package]] +name = "colorchoice" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" + [[package]] name = "constant_time_eq" version = "0.1.5" @@ -330,21 +394,21 @@ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "constant_time_eq" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] @@ -427,6 +491,15 @@ dependencies = [ "subtle", ] +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + [[package]] name = "digest" version = "0.9.0" @@ -499,27 +572,37 @@ dependencies = [ [[package]] name = "either" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "endian-num" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad847bb2094f110bbdd6fa564894ca4556fd978958e93985420d680d3cb6d14" +checksum = "f8f59926911ef34d1efb9ea1ee8ca78385df62ce700ccf2bcb149011bd226888" + +[[package]] +name = "env_filter" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" +dependencies = [ + "log 0.4.22", + "regex", +] [[package]] name = "env_logger" -version = "0.9.3" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" +checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" dependencies = [ - "atty", + "anstream", + "anstyle", + "env_filter", "humantime", - "log 0.4.21", - "regex", - "termcolor", + "log 0.4.22", ] [[package]] @@ -545,36 +628,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" dependencies = [ "backtrace", - "version_check 0.9.4", -] - -[[package]] -name = "failure" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" -dependencies = [ - "backtrace", - "failure_derive", -] - -[[package]] -name = "failure_derive" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", - "synstructure", + "version_check 0.9.5", ] [[package]] name = "fastrand" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "fatfs" @@ -585,19 +646,19 @@ dependencies = [ "bitflags 1.3.2", "byteorder", "chrono", - "log 0.4.21", + "log 0.4.22", ] [[package]] name = "filetime" -version = "0.2.23" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall 0.4.1", - "windows-sys 0.52.0", + "libredox", + "windows-sys 0.59.0", ] [[package]] @@ -612,22 +673,21 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "315ce685aca5ddcc5a3e7e436ef47d4a5d0064462849b6f0f628c28140103531" dependencies = [ - "log 0.4.21", + "log 0.4.22", ] [[package]] name = "fuser" -version = "0.12.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5910691a0ececcc6eba8bb14029025c2d123e96a53db1533f6a4602861a5aaf7" +checksum = "2e697f6f62c20b6fad1ba0f84ae909f25971cf16e735273524e3977c94604cf8" dependencies = [ "libc", - "log 0.4.21", + "log 0.4.22", "memchr", "page_size", "pkg-config", "smallvec", - "users", "zerocopy", ] @@ -638,7 +698,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", - "version_check 0.9.4", + "version_check 0.9.5", ] [[package]] @@ -665,9 +725,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.1" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "gpt" @@ -675,9 +735,9 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8283e7331b8c93b9756e0cfdbcfb90312852f953c6faf9bf741e684cc3b6ad69" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "crc", - "log 0.4.21", + "log 0.4.22", "uuid", ] @@ -689,9 +749,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.5" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" [[package]] name = "hermit-abi" @@ -719,9 +779,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.8.0" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "humantime" @@ -741,7 +801,7 @@ dependencies = [ "log 0.3.9", "mime", "num_cpus", - "time", + "time 0.1.45", "traitobject", "typeable", "unicase", @@ -762,9 +822,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -806,28 +866,34 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.15.0", ] [[package]] -name = "itertools" -version = "0.8.2" +name = "is_terminal_polyfill" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" dependencies = [ "either", ] [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] @@ -849,15 +915,15 @@ checksum = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.155" +version = "0.2.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" [[package]] name = "libflate" @@ -879,26 +945,15 @@ dependencies = [ "rle-decode-fast", ] -[[package]] -name = "libredox" -version = "0.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" -dependencies = [ - "bitflags 2.5.0", - "libc", - "redox_syscall 0.4.1", -] - [[package]] name = "libredox" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "libc", - "redox_syscall 0.5.1", + "redox_syscall", ] [[package]] @@ -925,14 +980,14 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" dependencies = [ - "log 0.4.21", + "log 0.4.22", ] [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "matches" @@ -942,9 +997,9 @@ checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memsec" @@ -968,13 +1023,19 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "adler", + "adler2", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-traits" version = "0.2.19" @@ -996,24 +1057,24 @@ dependencies = [ [[package]] name = "numtoa" -version = "0.1.0" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" +checksum = "6aa2c4e539b869820a2b82e1aef6ff40aa85e65decdd5185e83fb4b1249cd00f" [[package]] name = "object" -version = "0.32.2" +version = "0.36.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "opaque-debug" @@ -1029,9 +1090,9 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "page_size" -version = "0.4.2" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eebde548fbbf1ea81a99b128872779c437752fb99f217c45245e1a61dcd9edcd" +checksum = "30d5b2194ed13191c1999ae0704b7839fb18384fa22e49b57eeaa97d79ce40da" dependencies = [ "libc", "winapi", @@ -1075,15 +1136,15 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "pkgar" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7db73ac12bcc6ef86766a0aa1300cc673f2d834b0b7ed812364a3aa78f472c2d" +checksum = "0ebd7dd69839f52902bff51faf56766e4f924e6e9afa141ce2a517ddb01ec075" dependencies = [ "blake3 0.3.8", "clap", @@ -1097,9 +1158,9 @@ dependencies = [ [[package]] name = "pkgar-core" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02f04f9e2ed9db0dd7b21b76c4b35ebb32c01915035b6bffda1b5935485c2341" +checksum = "045eef6a8327bab70896b7fe4ff4f3886fec736498937ed4f4d39808c8f23e5d" dependencies = [ "bitflags 1.3.2", "blake3 0.3.8", @@ -1109,9 +1170,9 @@ dependencies = [ [[package]] name = "pkgar-keys" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9fec0d56214207b3afccec2c69ec31ecc3eebdce80045ca6df2fbcf737b69a" +checksum = "2ea7b9107cf70dd71ffec209e7cd3de1e0b5e89a0b361b78f993c6a1502c94cd" dependencies = [ "clap", "dirs 3.0.2", @@ -1121,8 +1182,8 @@ dependencies = [ "seckey", "serde", "sodiumoxide", - "termion 3.0.0", - "toml 0.8.13", + "termion", + "toml 0.8.19", "user-error", ] @@ -1133,16 +1194,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] -name = "ppv-lite86" -version = "0.2.17" +name = "powerfmt" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "proc-macro2" -version = "1.0.84" +version = "1.0.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec96c6a92621310b51366f1e28d05ef11489516e93be030060e5fc12024a49d6" +checksum = "7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9" dependencies = [ "unicode-ident", ] @@ -1158,9 +1228,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1227,29 +1297,39 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "436d45c2b6a5b159d43da708e62b25be3a4a3d5550d654b72216ade4c4bfd717" +[[package]] +name = "redox-scheme" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95624e20d2c1808f7ca0820720d30aad9f5d2fc404e1ef379431ad7a790c3f7e" +dependencies = [ + "libredox", + "redox_syscall", +] + [[package]] name = "redox_cookbook" version = "0.1.0" dependencies = [ - "blake3 1.5.1", + "blake3 1.5.3", "pbr", "pkgar", "pkgar-keys", "redoxer", "serde", - "termion 1.5.6", - "toml 0.8.13", + "termion", + "toml 0.8.19", "walkdir", ] [[package]] name = "redox_installer" -version = "0.2.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0fa6d449163b0bf648a282affbade42a51d25d7858412278d5c6c76970afef4" +version = "0.2.24" +source = "git+https://gitlab.redox-os.org/redox-os/installer.git#5c52a2e80e7fcfc84148f45553c38c814fa38986" dependencies = [ + "anyhow", "arg_parser", - "failure", + "cc", "fatfs", "fscommon", "gpt", @@ -1260,34 +1340,33 @@ dependencies = [ "rand", "redox_liner", "redox_pkgutils", - "redox_syscall 0.5.1", + "redox_syscall", "redoxfs", "rust-argon2", "serde", "serde_derive", - "termion 1.5.6", - "toml 0.8.13", + "termion", + "toml 0.8.19", "uuid", ] [[package]] name = "redox_liner" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63c3dc5996de1508c9dad60461f6a5b9611d9c31610c29d3ff4ec97df408671c" +checksum = "ee4596948a78a2ac29268d4ee45f788789ac8c032c77cf255378e5c96ca0c779" dependencies = [ "bytecount", "itertools", "strip-ansi-escapes", - "termion 2.0.3", + "termion", "unicode-width", ] [[package]] name = "redox_pkgutils" version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b362a4e7daec262c20460d92bd35a7d8f25311af7211ead38bdd419e6b90a9f9" +source = "git+https://gitlab.redox-os.org/redox-os/pkgutils.git#2b799744292054a1b04e5c2616ee1106119cfa2e" dependencies = [ "bidir-map", "clap", @@ -1308,29 +1387,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.16" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" -dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", ] [[package]] @@ -1341,25 +1402,25 @@ checksum = "20145670ba436b55d91fc92d25e71160fbfbdd57831631c8d7d36377a476f1cb" [[package]] name = "redox_users" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom 0.2.15", - "libredox 0.1.3", + "libredox", "thiserror", ] [[package]] name = "redoxer" -version = "0.2.43" +version = "0.2.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e6ddabc210616226d8a45599bca0a6e05e3cb5aeaa1385ce5e769ac94c77e31" +checksum = "ab99b37e916edb240a40c55f0cc399d2e967c9fa67a159418efae75b6d922876" dependencies = [ "dirs 5.0.1", "proc-mounts", "redox_installer", - "redox_syscall 0.5.1", + "redox_syscall", "redoxfs", "tempfile", "toml 0.5.11", @@ -1367,9 +1428,9 @@ dependencies = [ [[package]] name = "redoxfs" -version = "0.6.4" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45ebd559766fa473d5324f662e23841e32534fd3cabab409e377e59c2e00e82b" +checksum = "d7a579fab9d51965b0660af059f9eae4da343c04cc3d7c20cd32bccd24af2d91" dependencies = [ "aes", "argon2", @@ -1379,22 +1440,23 @@ dependencies = [ "fuser", "getrandom 0.2.15", "libc", - "libredox 0.1.3", - "log 0.4.21", + "libredox", + "log 0.4.22", "range-tree", "redox-path", - "redox_syscall 0.5.1", + "redox-scheme", + "redox_syscall", "seahash", - "termion 2.0.3", - "time", + "termion", + "time 0.3.36", "uuid", ] [[package]] name = "regex" -version = "1.10.4" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" dependencies = [ "aho-corasick", "memchr", @@ -1404,9 +1466,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", @@ -1415,15 +1477,14 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "ring" version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c4db68a2e35f3497146b7e4563df7d4773a2433230c5e4b448328e31740458a" +source = "git+https://gitlab.redox-os.org/redox-os/ring.git?branch=redox-unix-0.13.5#306a209655a52b96d38aee45203181c6e36afd53" dependencies = [ "cc", "lazy_static", @@ -1457,11 +1518,11 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "errno", "libc", "linux-raw-sys", @@ -1475,7 +1536,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "942b71057b31981152970d57399c25f72e27a6ee0d207a669d8304cabf44705b" dependencies = [ "base64 0.9.3", - "log 0.4.21", + "log 0.4.22", "ring", "sct", "untrusted", @@ -1540,14 +1601,14 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn", ] [[package]] name = "serde_spanned" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -1564,6 +1625,12 @@ dependencies = [ "opaque-debug", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signature" version = "1.6.4" @@ -1589,9 +1656,9 @@ dependencies = [ [[package]] name = "strip-ansi-escapes" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "011cbb39cf7c1f62871aea3cc46e5817b0937b49e9447370c93cacbe93a766d8" +checksum = "55ff8ef943b384c414f54aefa961dd2bd853add74ec75e7ac74cf91dba62bcfa" dependencies = [ "vte", ] @@ -1604,49 +1671,26 @@ checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "1.0.109" +version = "2.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] -[[package]] -name = "syn" -version = "2.0.66" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "synstructure" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", - "unicode-xid", -] - [[package]] name = "tar" -version = "0.4.40" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" +checksum = "4ff6c40d3aedb5e06b57c6f669ad17ab063dd1e63d977c6a88e7f4dfa4f04020" dependencies = [ "filetime", "libc", @@ -1655,57 +1699,25 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.10.1" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" dependencies = [ "cfg-if 1.0.0", "fastrand", + "once_cell", "rustix", - "windows-sys 0.52.0", -] - -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", + "windows-sys 0.59.0", ] [[package]] name = "termion" -version = "1.5.6" +version = "4.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "077185e2eac69c3f8379a4298e1e07cd36beb962290d4a51199acf0fdc10607e" +checksum = "7eaa98560e51a2cf4f0bb884d8b2098a9ea11ecf3b7078e9c68242c74cc923a7" dependencies = [ "libc", - "numtoa", - "redox_syscall 0.2.16", - "redox_termios", -] - -[[package]] -name = "termion" -version = "2.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4648c7def6f2043b2568617b9f9b75eae88ca185dbc1f1fda30e95a85d49d7d" -dependencies = [ - "libc", - "libredox 0.0.2", - "numtoa", - "redox_termios", -] - -[[package]] -name = "termion" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "417813675a504dfbbf21bfde32c03e5bf9f2413999962b479023c02848c1c7a5" -dependencies = [ - "libc", - "libredox 0.0.2", + "libredox", "numtoa", "redox_termios", ] @@ -1721,22 +1733,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.61" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.61" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn", ] [[package]] @@ -1751,10 +1763,29 @@ dependencies = [ ] [[package]] -name = "tinyvec" -version = "1.6.0" +name = "time" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "num-conv", + "powerfmt", + "serde", + "time-core", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "tinyvec" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -1776,9 +1807,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.13" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4e43f8cc456c9704c851ae29c67e17ef65d2c30017c17a9765b89c382dc8bba" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ "serde", "serde_spanned", @@ -1788,20 +1819,20 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.22.13" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c127785850e8c20836d49732ae6abfa47616e60bf9d9f57c43c250361a9db96c" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.6.0", "serde", "serde_spanned", "toml_datetime", @@ -1837,36 +1868,30 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.15" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] [[package]] name = "unicode-width" -version = "0.1.12" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" - -[[package]] -name = "unicode-xid" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "untrusted" @@ -1891,27 +1916,17 @@ version = "1.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07a91d0648d862a02d641c82292791accfe66d36df75d8149ebc9768f2e36863" -[[package]] -name = "users" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24cc0f6d6f267b73e5a2cadf007ba8f9bc39c6a6f9666f8cf25ea809a153b032" -dependencies = [ - "libc", - "log 0.4.21", -] - [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.8.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" dependencies = [ "getrandom 0.2.15", ] @@ -1936,26 +1951,25 @@ checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "vte" -version = "0.10.1" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cbce692ab4ca2f1f3047fcf732430249c0e971bfdd2b234cf2c47ad93af5983" +checksum = "f5022b5fbf9407086c180e9557be968742d839e68346af7792b8592489732197" dependencies = [ - "arrayvec 0.5.2", "utf8parse", "vte_generate_state_changes", ] [[package]] name = "vte_generate_state_changes" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d257817081c7dffcdbab24b9e62d2def62e2ff7d00b1c20062551e6cccc145ff" +checksum = "2e369bee1b05d510a7b4ed645f5faa90619e05437111783ea5848f28d97d3c2e" dependencies = [ "proc-macro2", "quote", @@ -1991,34 +2005,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if 1.0.0", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", - "log 0.4.21", + "log 0.4.22", "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2026,22 +2041,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "webpki" @@ -2081,11 +2096,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2100,7 +2115,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -2127,7 +2142,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -2162,18 +2186,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -2190,9 +2214,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -2208,9 +2232,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -2226,15 +2250,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -2250,9 +2274,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -2268,9 +2292,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -2286,9 +2310,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -2304,15 +2328,15 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.8" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c52e9c97a68071b23e836c9380edae937f17b9c4667bd021973efc689f618d" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] @@ -2330,9 +2354,9 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.6.6" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854e949ac82d619ee9a14c66a1b674ac730422372ccb759ce0c39cabcf2bf8e6" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "byteorder", "zerocopy-derive", @@ -2340,11 +2364,11 @@ dependencies = [ [[package]] name = "zerocopy-derive" -version = "0.6.6" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "125139de3f6b9d625c39e2efdd73d41bdac468ccd556556440e322be0e1bbd91" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn", ] diff --git a/Cargo.toml b/Cargo.toml index 026776f4..ddfc7089 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,12 +20,17 @@ name = "cookbook" path = "src/lib.rs" [dependencies] -blake3 = "1.5" +blake3 = "=1.5.3" # 1.5.4 is incompatible with blake3 0.3 dependency from pkgar pbr = "1.0.2" pkgar = "0.1.7" pkgar-keys = "0.1.0" redoxer = "0.2" serde = { version = "=1.0.197", features = ["derive"] } -termion = "1.5.5" +termion = "4" toml = "0.8" walkdir = "2.3.1" + + +[patch.crates-io] +redox_installer = { git = "https://gitlab.redox-os.org/redox-os/installer.git" } +ring = { git = "https://gitlab.redox-os.org/redox-os/ring.git", branch = "redox-unix-0.13.5" } diff --git a/bin/riscv64-unknown-redox-pkg-config b/bin/riscv64-unknown-redox-pkg-config new file mode 100755 index 00000000..0bcf777b --- /dev/null +++ b/bin/riscv64-unknown-redox-pkg-config @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" +export PKG_CONFIG_LIBDIR="${PKG_CONFIG_SYSROOT_DIR}/lib/pkgconfig" +export PKG_CONFIG_PATH="${PKG_CONFIG_SYSROOT_DIR}/share/pkgconfig" + +exec pkg-config --static "$@" diff --git a/config.sh b/config.sh index f518e5ba..8fde2d35 100755 --- a/config.sh +++ b/config.sh @@ -8,6 +8,9 @@ then fi ARCH="${TARGET%%-*}" HOST="$TARGET" +if [ x"${HOST}" == x"riscv64gc-unknown-redox" ] ; then + HOST="riscv64-unknown-redox" +fi # Automatic variables ROOT="$(cd `dirname "$0"` && pwd)" diff --git a/pkgutils b/pkgutils index 87e2dc87..2b799744 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit 87e2dc87076f37a47b914adb8aa1e7ad54e85942 +Subproject commit 2b799744292054a1b04e5c2616ee1106119cfa2e diff --git a/recipes/core/bootloader/recipe.toml b/recipes/core/bootloader/recipe.toml index 0de0ae64..20461fec 100644 --- a/recipes/core/bootloader/recipe.toml +++ b/recipes/core/bootloader/recipe.toml @@ -25,7 +25,7 @@ then fi # Build UEFI bootloader for supported architectures -if [ "${ARCH}" == "aarch64" -o "${ARCH}" == "x86_64" ] +if [ "${ARCH}" == "aarch64" -o "${ARCH}" == "x86_64" -o "${ARCH}" == "riscv64gc" ] then bootloader "${ARCH}-unknown-uefi" bootloader.efi bootloader.efi bootloader "${ARCH}-unknown-uefi" bootloader-live.efi bootloader-live.efi diff --git a/recipes/core/bootstrap/recipe.toml b/recipes/core/bootstrap/recipe.toml index 90bff591..5512bb2f 100644 --- a/recipes/core/bootstrap/recipe.toml +++ b/recipes/core/bootstrap/recipe.toml @@ -4,7 +4,7 @@ git = "https://gitlab.redox-os.org/redox-os/bootstrap.git" [build] template = "custom" script = """ -ARCH="$(echo "${TARGET}" | cut -d - -f1)" +ARCH="$(echo "${GNU_TARGET}" | cut -d - -f1)" cargo \ -Zbuild-std=core,alloc,compiler_builtins \ -Zbuild-std-features=compiler-builtins-mem rustc \ @@ -15,7 +15,7 @@ cargo \ -- \ --emit link="${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a" mkdir -v "${COOKBOOK_STAGE}/boot" -"${TARGET}-ld" \ +"${GNU_TARGET}-ld" \ -o "${COOKBOOK_STAGE}/boot/bootstrap" \ --gc-sections \ -T "${COOKBOOK_SOURCE}/src/${ARCH}.ld" \ diff --git a/recipes/core/escalated/recipe.toml b/recipes/core/escalated/recipe.toml index f9cd00e3..70798d90 100644 --- a/recipes/core/escalated/recipe.toml +++ b/recipes/core/escalated/recipe.toml @@ -2,6 +2,6 @@ git = "https://gitlab.redox-os.org/redox-os/escalated.git" # Escalated is not backwards compatible wrt relibc versions, so we pin it here # so it's updated together with the other main submodules. -rev = "846e0774" +rev = "6c9d3e44" [build] template = "cargo" diff --git a/recipes/core/kernel/recipe.toml b/recipes/core/kernel/recipe.toml index 6ba3b4b0..298906b0 100644 --- a/recipes/core/kernel/recipe.toml +++ b/recipes/core/kernel/recipe.toml @@ -5,7 +5,7 @@ git = "https://gitlab.redox-os.org/redox-os/kernel.git" template = "custom" script = """ export RUST_TARGET_PATH="${COOKBOOK_SOURCE}/targets" -ARCH="$(echo "${TARGET}" | cut -d - -f1)" +ARCH="$(echo "${GNU_TARGET}" | cut -d - -f1)" cargo rustc \ --bin kernel \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ @@ -16,11 +16,11 @@ cargo rustc \ -C link-arg=-T -Clink-arg="${COOKBOOK_SOURCE}/linkers/${ARCH}.ld" \ -C link-arg=-z -Clink-arg=max-page-size=0x1000 \ --emit link="${PWD}/kernel.all" -"${TARGET}-objcopy" \ +"${GNU_TARGET}-objcopy" \ --only-keep-debug \ kernel.all \ kernel.sym -"${TARGET}-objcopy" \ +"${GNU_TARGET}-objcopy" \ --strip-debug \ kernel.all \ kernel diff --git a/recipes/tools/xz/recipe.toml b/recipes/tools/xz/recipe.toml index 9089699d..c0ed52b9 100644 --- a/recipes/tools/xz/recipe.toml +++ b/recipes/tools/xz/recipe.toml @@ -9,7 +9,7 @@ script = """ (cd ${COOKBOOK_SOURCE} && ./autogen.sh) export CFLAGS="-static" COOKBOOK_CONFIGURE_FLAGS=( - --host="${TARGET}" + --host="${GNU_TARGET}" --prefix="" --disable-lzmadec --disable-lzmainfo diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 335d0214..c884f8c9 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -597,7 +597,7 @@ function cookbook_cargo_packages { # configure template COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/configure" COOKBOOK_CONFIGURE_FLAGS=( - --host="${TARGET}" + --host="${GNU_TARGET}" --prefix="" --disable-shared --enable-static @@ -615,12 +615,12 @@ function cookbook_configure { # Strip binaries if [ -d "${COOKBOOK_STAGE}/bin" ] && [ -z "${COOKBOOK_NOSTRIP}" ] then - find "${COOKBOOK_STAGE}/bin" -type f -exec "${TARGET}-strip" -v {} ';' + find "${COOKBOOK_STAGE}/bin" -type f -exec "${GNU_TARGET}-strip" -v {} ';' fi if [ -d "${COOKBOOK_STAGE}/usr/bin" ] && [ -z "${COOKBOOK_NOSTRIP}" ] then - find "${COOKBOOK_STAGE}/usr/bin" -type f -exec "${TARGET}-strip" -v {} ';' + find "${COOKBOOK_STAGE}/usr/bin" -type f -exec "${GNU_TARGET}-strip" -v {} ';' fi # Remove libtool files From 94a5d2ea8efb39c577735f94dd307eb42e6e8a4e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 16 Oct 2024 13:28:58 -0600 Subject: [PATCH 2131/3180] Update pkgar and pkgutils --- pkgar | 2 +- pkgutils | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgar b/pkgar index d27bae67..fac7c428 160000 --- a/pkgar +++ b/pkgar @@ -1 +1 @@ -Subproject commit d27bae671963627d5d00aa789d1473b93b9c2998 +Subproject commit fac7c428026b6e5368d4f9a2edd42ace25744767 diff --git a/pkgutils b/pkgutils index 87e2dc87..b4d0022c 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit 87e2dc87076f37a47b914adb8aa1e7ad54e85942 +Subproject commit b4d0022cf08abb149603178f236f863f612069b8 From 1240e89cd2aca41591cc1e61f8d95949a477f064 Mon Sep 17 00:00:00 2001 From: Andrey Turkin Date: Wed, 16 Oct 2024 22:47:54 +0300 Subject: [PATCH 2132/3180] Bump dependencies --- Cargo.lock | 803 +++++++++++++++++++++++++++++++++++++++-------------- Cargo.toml | 5 - pkgar | 2 +- pkgutils | 2 +- 4 files changed, 596 insertions(+), 216 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index db5611fb..b7de04c1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -35,6 +35,18 @@ dependencies = [ "opaque-debug", ] +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if 1.0.0", + "once_cell", + "version_check", + "zerocopy", +] + [[package]] name = "aho-corasick" version = "1.1.3" @@ -44,6 +56,12 @@ dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" + [[package]] name = "android-tzdata" version = "0.1.1" @@ -189,22 +207,18 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "base64" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" -dependencies = [ - "byteorder", - "safemem", -] - [[package]] name = "base64" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + [[package]] name = "base64ct" version = "1.6.0" @@ -278,16 +292,6 @@ dependencies = [ "constant_time_eq 0.3.1", ] -[[package]] -name = "block-buffer" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" -dependencies = [ - "block-padding", - "generic-array", -] - [[package]] name = "block-buffer" version = "0.10.4" @@ -297,12 +301,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "block-padding" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" - [[package]] name = "bumpalo" version = "3.16.0" @@ -321,6 +319,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +[[package]] +name = "bytes" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" + [[package]] name = "cc" version = "1.1.30" @@ -404,6 +408,15 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +[[package]] +name = "core2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" +dependencies = [ + "memchr", +] + [[package]] name = "cpufeatures" version = "0.2.14" @@ -491,6 +504,12 @@ dependencies = [ "subtle", ] +[[package]] +name = "dary_heap" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7762d17f1241643615821a8455a0b2c3e803784b058693d990b11f2dce25a0ca" + [[package]] name = "deranged" version = "0.3.11" @@ -515,7 +534,7 @@ version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer 0.10.4", + "block-buffer", "crypto-common", "subtle", ] @@ -588,7 +607,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" dependencies = [ - "log 0.4.22", + "log", "regex", ] @@ -602,7 +621,7 @@ dependencies = [ "anstyle", "env_filter", "humantime", - "log 0.4.22", + "log", ] [[package]] @@ -628,7 +647,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" dependencies = [ "backtrace", - "version_check 0.9.5", + "version_check", ] [[package]] @@ -646,7 +665,7 @@ dependencies = [ "bitflags 1.3.2", "byteorder", "chrono", - "log 0.4.22", + "log", ] [[package]] @@ -663,9 +682,24 @@ dependencies = [ [[package]] name = "fixedbitset" -version = "0.2.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] [[package]] name = "fscommon" @@ -673,7 +707,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "315ce685aca5ddcc5a3e7e436ef47d4a5d0064462849b6f0f628c28140103531" dependencies = [ - "log 0.4.22", + "log", ] [[package]] @@ -683,7 +717,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e697f6f62c20b6fad1ba0f84ae909f25971cf16e735273524e3977c94604cf8" dependencies = [ "libc", - "log 0.4.22", + "log", "memchr", "page_size", "pkg-config", @@ -691,6 +725,56 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -698,7 +782,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", - "version_check 0.9.5", + "version_check", ] [[package]] @@ -737,15 +821,19 @@ checksum = "8283e7331b8c93b9756e0cfdbcfb90312852f953c6faf9bf741e684cc3b6ad69" dependencies = [ "bitflags 2.6.0", "crc", - "log 0.4.22", + "log", "uuid", ] [[package]] name = "hashbrown" -version = "0.12.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", +] [[package]] name = "hashbrown" @@ -777,6 +865,40 @@ dependencies = [ "serde", ] +[[package]] +name = "http" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http", + "http-body", + "pin-project-lite", +] + [[package]] name = "httparse" version = "1.9.5" @@ -791,35 +913,60 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.10.16" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a0652d9a2609a968c14be1a9ea00bf4b1d64e2e1f53a1b51b6fff3a6e829273" +checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" dependencies = [ - "base64 0.9.3", + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", "httparse", - "language-tags", - "log 0.3.9", - "mime", - "num_cpus", - "time 0.1.45", - "traitobject", - "typeable", - "unicase", - "url", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", ] [[package]] name = "hyper-rustls" -version = "0.6.2" +version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71f7b2e5858ab9e19771dc361159f09ee5031734a6f7471fe0947db0238d92b7" +checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ + "futures-util", + "http", "hyper", + "hyper-util", "rustls", - "webpki", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", "webpki-roots", ] +[[package]] +name = "hyper-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + [[package]] name = "iana-time-zone" version = "0.1.61" @@ -845,25 +992,14 @@ dependencies = [ [[package]] name = "idna" -version = "0.1.5" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ - "matches", "unicode-bidi", "unicode-normalization", ] -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", -] - [[package]] name = "indexmap" version = "2.6.0" @@ -874,6 +1010,12 @@ dependencies = [ "hashbrown 0.15.0", ] +[[package]] +name = "ipnet" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" + [[package]] name = "is_terminal_polyfill" version = "1.70.1" @@ -889,6 +1031,12 @@ dependencies = [ "either", ] +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + [[package]] name = "js-sys" version = "0.3.72" @@ -907,12 +1055,6 @@ dependencies = [ "cpufeatures", ] -[[package]] -name = "language-tags" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" - [[package]] name = "lazy_static" version = "1.5.0" @@ -927,21 +1069,25 @@ checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" [[package]] name = "libflate" -version = "1.4.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ff4ae71b685bbad2f2f391fe74f6b7659a34871c08b210fdc039e43bee07d18" +checksum = "45d9dfdc14ea4ef0900c1cddbc8dcd553fbaacd8a4a282cf4018ae9dd04fb21e" dependencies = [ "adler32", + "core2", "crc32fast", + "dary_heap", "libflate_lz77", ] [[package]] name = "libflate_lz77" -version = "1.2.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a52d3a8bfc85f250440e4424db7d857e241a3aebbbe301f3eb606ab15c39acbf" +checksum = "e6e0d73b369f386f1c44abd9c570d5318f55ccde816ff4b562fa452e5182863d" dependencies = [ + "core2", + "hashbrown 0.14.5", "rle-decode-fast", ] @@ -974,27 +1120,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" -[[package]] -name = "log" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" -dependencies = [ - "log 0.4.22", -] - [[package]] name = "log" version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" -[[package]] -name = "matches" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" - [[package]] name = "memchr" version = "2.7.4" @@ -1014,12 +1145,9 @@ dependencies = [ [[package]] name = "mime" -version = "0.2.6" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" -dependencies = [ - "log 0.3.9", -] +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "miniz_oxide" @@ -1030,6 +1158,18 @@ dependencies = [ "adler2", ] +[[package]] +name = "mio" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.52.0", +] + [[package]] name = "num-conv" version = "0.1.0" @@ -1045,16 +1185,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi 0.3.9", - "libc", -] - [[package]] name = "numtoa" version = "0.2.4" @@ -1120,20 +1250,32 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "1.0.1" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "petgraph" -version = "0.5.1" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 1.9.3", + "indexmap", ] +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + [[package]] name = "pkg-config" version = "0.3.31" @@ -1226,6 +1368,54 @@ dependencies = [ "partition-identity", ] +[[package]] +name = "quinn" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" +dependencies = [ + "bytes", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "socket2", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" +dependencies = [ + "bytes", + "rand", + "ring", + "rustc-hash", + "rustls", + "slab", + "thiserror", + "tinyvec", + "tracing", +] + +[[package]] +name = "quinn-udp" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b" +dependencies = [ + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.59.0", +] + [[package]] name = "quote" version = "1.0.37" @@ -1324,8 +1514,9 @@ dependencies = [ [[package]] name = "redox_installer" -version = "0.2.24" -source = "git+https://gitlab.redox-os.org/redox-os/installer.git#5c52a2e80e7fcfc84148f45553c38c814fa38986" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e13546aacf80d787e6f1ad92bdee0574991f4ce48d529421cec091291e606da" dependencies = [ "anyhow", "arg_parser", @@ -1365,23 +1556,23 @@ dependencies = [ [[package]] name = "redox_pkgutils" -version = "0.1.8" -source = "git+https://gitlab.redox-os.org/redox-os/pkgutils.git#2b799744292054a1b04e5c2616ee1106119cfa2e" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c76d0906f7fb9a69996b777be79fa793295aa3ebbdde89c375a1df841ee3ce43" dependencies = [ "bidir-map", "clap", - "hyper", - "hyper-rustls", - "indexmap 1.9.3", + "indexmap", "libflate", "pbr", "petgraph", "redox_liner", + "reqwest", "serde", "serde_derive", "sha3", "tar", - "toml 0.5.11", + "toml 0.8.19", "version-compare", ] @@ -1413,9 +1604,9 @@ dependencies = [ [[package]] name = "redoxer" -version = "0.2.45" +version = "0.2.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab99b37e916edb240a40c55f0cc399d2e967c9fa67a159418efae75b6d922876" +checksum = "e10468ffdb4f300f5702dbe6e1f11057b1275501ee4190bfc16a4a976f367a8d" dependencies = [ "dirs 5.0.1", "proc-mounts", @@ -1441,14 +1632,14 @@ dependencies = [ "getrandom 0.2.15", "libc", "libredox", - "log 0.4.22", + "log", "range-tree", "redox-path", "redox-scheme", "redox_syscall", "seahash", "termion", - "time 0.3.36", + "time", "uuid", ] @@ -1481,15 +1672,62 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +[[package]] +name = "reqwest" +version = "0.12.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-pemfile", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-rustls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots", + "windows-registry", +] + [[package]] name = "ring" -version = "0.13.5" -source = "git+https://gitlab.redox-os.org/redox-os/ring.git?branch=redox-unix-0.13.5#306a209655a52b96d38aee45203181c6e36afd53" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", - "lazy_static", + "cfg-if 1.0.0", + "getrandom 0.2.15", "libc", + "spin", "untrusted", + "windows-sys 0.52.0", ] [[package]] @@ -1516,6 +1754,12 @@ version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +[[package]] +name = "rustc-hash" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" + [[package]] name = "rustix" version = "0.38.37" @@ -1531,23 +1775,49 @@ dependencies = [ [[package]] name = "rustls" -version = "0.13.1" +version = "0.23.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942b71057b31981152970d57399c25f72e27a6ee0d207a669d8304cabf44705b" +checksum = "5fbb44d7acc4e873d613422379f69f237a1b141928c02f6bc6ccfddddc2d7993" dependencies = [ - "base64 0.9.3", - "log 0.4.22", + "once_cell", "ring", - "sct", - "untrusted", - "webpki", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", ] [[package]] -name = "safemem" -version = "0.3.3" +name = "rustls-pemfile" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" + +[[package]] +name = "rustls-webpki" +version = "0.102.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "same-file" @@ -1558,16 +1828,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "sct" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb8f61f9e6eadd062a71c380043d28036304a4706b3c4dd001ff3387ed00745a" -dependencies = [ - "ring", - "untrusted", -] - [[package]] name = "seahash" version = "4.1.0" @@ -1604,6 +1864,18 @@ dependencies = [ "syn", ] +[[package]] +name = "serde_json" +version = "1.0.128" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + [[package]] name = "serde_spanned" version = "0.6.8" @@ -1614,15 +1886,25 @@ dependencies = [ ] [[package]] -name = "sha3" -version = "0.9.1" +name = "serde_urlencoded" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ - "block-buffer 0.9.0", - "digest 0.9.0", + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", "keccak", - "opaque-debug", ] [[package]] @@ -1637,12 +1919,31 @@ version = "1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + [[package]] name = "smallvec" version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +[[package]] +name = "socket2" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + [[package]] name = "sodiumoxide" version = "0.2.7" @@ -1654,6 +1955,12 @@ dependencies = [ "libsodium-sys", ] +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + [[package]] name = "strip-ansi-escapes" version = "0.2.0" @@ -1686,6 +1993,15 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "sync_wrapper" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +dependencies = [ + "futures-core", +] + [[package]] name = "tar" version = "0.4.42" @@ -1751,17 +2067,6 @@ dependencies = [ "syn", ] -[[package]] -name = "time" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", -] - [[package]] name = "time" version = "0.3.36" @@ -1796,6 +2101,32 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" +[[package]] +name = "tokio" +version = "1.40.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +dependencies = [ + "rustls", + "rustls-pki-types", + "tokio", +] + [[package]] name = "toml" version = "0.5.11" @@ -1832,7 +2163,7 @@ version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.6.0", + "indexmap", "serde", "serde_spanned", "toml_datetime", @@ -1840,16 +2171,35 @@ dependencies = [ ] [[package]] -name = "traitobject" -version = "0.1.0" +name = "tower-service" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] -name = "typeable" -version = "0.1.2" +name = "tracing" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "typenum" @@ -1857,15 +2207,6 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" -[[package]] -name = "unicase" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" -dependencies = [ - "version_check 0.1.5", -] - [[package]] name = "unicode-bidi" version = "0.3.17" @@ -1895,18 +2236,18 @@ checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "untrusted" -version = "0.6.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cd1f4b4e96b46aeb8d4855db4a7a9bd96eeeb5c6a1ab54593328761642ce2f" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "1.7.2" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ + "form_urlencoded", "idna", - "matches", "percent-encoding", ] @@ -1939,15 +2280,9 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "version-compare" -version = "0.0.10" +version = "0.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1" - -[[package]] -name = "version_check" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" +checksum = "03fcf84b72310ec15c6b2dc9dd8f31765d10debdfb240392fc96ff4cc0ec2f16" [[package]] name = "version_check" @@ -1985,18 +2320,21 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + [[package]] name = "wasi" version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -2021,7 +2359,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", - "log 0.4.22", + "log", "once_cell", "proc-macro2", "quote", @@ -2029,6 +2367,18 @@ dependencies = [ "wasm-bindgen-shared", ] +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "wasm-bindgen-macro" version = "0.2.95" @@ -2059,23 +2409,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] -name = "webpki" -version = "0.18.1" +name = "web-sys" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17d7967316d8411ca3b01821ee6c332bde138ba4363becdb492f12e514daa17f" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" dependencies = [ - "ring", - "untrusted", + "js-sys", + "wasm-bindgen", ] [[package]] name = "webpki-roots" -version = "0.15.0" +version = "0.26.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85d1f408918fd590908a70d36b7ac388db2edc221470333e4d6e5b598e44cabf" +checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" dependencies = [ - "untrusted", - "webpki", + "rustls-pki-types", ] [[package]] @@ -2118,6 +2467,36 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.45.0" @@ -2372,3 +2751,9 @@ dependencies = [ "quote", "syn", ] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" diff --git a/Cargo.toml b/Cargo.toml index ddfc7089..bf530ff9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,8 +29,3 @@ serde = { version = "=1.0.197", features = ["derive"] } termion = "4" toml = "0.8" walkdir = "2.3.1" - - -[patch.crates-io] -redox_installer = { git = "https://gitlab.redox-os.org/redox-os/installer.git" } -ring = { git = "https://gitlab.redox-os.org/redox-os/ring.git", branch = "redox-unix-0.13.5" } diff --git a/pkgar b/pkgar index d27bae67..fac7c428 160000 --- a/pkgar +++ b/pkgar @@ -1 +1 @@ -Subproject commit d27bae671963627d5d00aa789d1473b93b9c2998 +Subproject commit fac7c428026b6e5368d4f9a2edd42ace25744767 diff --git a/pkgutils b/pkgutils index 2b799744..b4d0022c 160000 --- a/pkgutils +++ b/pkgutils @@ -1 +1 @@ -Subproject commit 2b799744292054a1b04e5c2616ee1106119cfa2e +Subproject commit b4d0022cf08abb149603178f236f863f612069b8 From 962caa65490e3f2d3fc9653a6965789cf2c7026e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 16 Oct 2024 17:06:37 -0600 Subject: [PATCH 2133/3180] cosmic-files: add gettext dependency --- recipes/tools/cosmic-files/recipe.toml | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/recipes/tools/cosmic-files/recipe.toml b/recipes/tools/cosmic-files/recipe.toml index c1c5eeab..62f4e51c 100644 --- a/recipes/tools/cosmic-files/recipe.toml +++ b/recipes/tools/cosmic-files/recipe.toml @@ -4,9 +4,26 @@ branch = "master" [build] template = "custom" +dependencies = [ + "gettext", + "libiconv", +] script = """ -cookbook_cargo --no-default-features --features winit -mkdir -pv "${COOKBOOK_STAGE}/ui/apps" +export GETTEXT_DIR="${COOKBOOK_SYSROOT}" +export GETTEXT_STATIC=1 +# Hack to link libiconv, which gettext-sys does not link +"${COOKBOOK_CARGO}" rustc \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --release \ + --bin cosmic-files \ + --no-default-features \ + --features desktop,winit \ + -- \ + -L "${COOKBOOK_SYSROOT}/lib" \ + -C link-arg="-liconv" +mkdir -pv "${COOKBOOK_STAGE}/usr/bin/" +cp -v "target/${TARGET}/release/cosmic-files" "${COOKBOOK_STAGE}/usr/bin/" +mkdir -pv "${COOKBOOK_STAGE}/ui/apps/" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/20_cosmic-files" #TODO: install with just? APPID="com.system76.CosmicFiles" From 903bbac4a879ef8b5443bf2ac2889f1e5458628c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 16 Oct 2024 17:10:09 -0600 Subject: [PATCH 2134/3180] orbdata: install to root --- recipes/gui/orbdata/recipe.toml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/gui/orbdata/recipe.toml b/recipes/gui/orbdata/recipe.toml index efe969ad..6ac4c937 100644 --- a/recipes/gui/orbdata/recipe.toml +++ b/recipes/gui/orbdata/recipe.toml @@ -4,6 +4,5 @@ git = "https://gitlab.redox-os.org/redox-os/orbdata.git" [build] template = "custom" script = """ -mkdir -pv "${COOKBOOK_STAGE}/ui" -cp -rv "${COOKBOOK_SOURCE}/"* "${COOKBOOK_STAGE}/ui" +cp -rv "${COOKBOOK_SOURCE}/"* "${COOKBOOK_STAGE}/" """ From 3b954f7f7255a3797e279e24f6fd7030c7c49eda Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 16 Oct 2024 20:58:17 -0600 Subject: [PATCH 2135/3180] cook: add pkgname to appstream data --- src/bin/cook.rs | 52 ++++++++++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 22 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index c884f8c9..89f032cf 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -418,6 +418,7 @@ fn build( recipe_dir: &Path, source_dir: &Path, target_dir: &Path, + name: &str, build: &BuildRecipe, ) -> Result { let mut dep_pkgars = vec![]; @@ -613,26 +614,22 @@ function cookbook_configure { let post_script = r#"# Common post script # Strip binaries -if [ -d "${COOKBOOK_STAGE}/bin" ] && [ -z "${COOKBOOK_NOSTRIP}" ] -then - find "${COOKBOOK_STAGE}/bin" -type f -exec "${GNU_TARGET}-strip" -v {} ';' -fi - -if [ -d "${COOKBOOK_STAGE}/usr/bin" ] && [ -z "${COOKBOOK_NOSTRIP}" ] -then - find "${COOKBOOK_STAGE}/usr/bin" -type f -exec "${GNU_TARGET}-strip" -v {} ';' -fi +for dir in "${COOKBOOK_STAGE}/bin" "${COOKBOOK_STAGE}/usr/bin" +do + if [ -d "${dir}" ] && [ -z "${COOKBOOK_NOSTRIP}" ] + then + find "${dir}" -type f -exec "${GNU_TARGET}-strip" -v {} ';' + fi +done # Remove libtool files -if [ -d "${COOKBOOK_STAGE}/lib" ] -then - find "${COOKBOOK_STAGE}/lib" -type f -name '*.la' -exec rm -fv {} ';' -fi - -if [ -d "${COOKBOOK_STAGE}/usr/lib" ] -then - find "${COOKBOOK_STAGE}/usr/lib" -type f -name '*.la' -exec rm -fv {} ';' -fi +for dir in "${COOKBOOK_STAGE}/lib" "${COOKBOOK_STAGE}/usr/lib" +do + if [ -d "${dir}" ] + then + find "${dir}" -type f -name '*.la' -exec rm -fv {} ';' + fi +done # Remove cargo install files for file in .crates.toml .crates2.json @@ -642,6 +639,15 @@ do rm -v "${COOKBOOK_STAGE}/${file}" fi done + +# Add pkgname to appstream metadata +for dir in "${COOKBOOK_STAGE}/share/metainfo" "${COOKBOOK_STAGE}/usr/share/metainfo" +do + if [ -d "${dir}" ] + then + find "${dir}" -type f -name '*.xml' -exec sed -i 's||'"${COOKBOOK_NAME}"'|g' {} ';' + fi +done "#; //TODO: better integration with redoxer (library instead of binary) @@ -678,6 +684,7 @@ done command.arg("bash").arg("-ex"); command.current_dir(&cookbook_build); command.env("COOKBOOK_BUILD", &cookbook_build); + command.env("COOKBOOK_NAME", name); command.env("COOKBOOK_RECIPE", &cookbook_recipe); command.env("COOKBOOK_REDOXER", &cookbook_redoxer); command.env("COOKBOOK_ROOT", &cookbook_root); @@ -701,6 +708,7 @@ fn package( _recipe_dir: &Path, stage_dir: &Path, target_dir: &Path, + _name: &str, _package: &PackageRecipe, ) -> Result { //TODO: metadata like dependencies, name, and version @@ -746,7 +754,7 @@ fn package( Ok(package_file) } -fn cook(recipe_dir: &Path, recipe: &Recipe, fetch_only: bool) -> Result<(), String> { +fn cook(recipe_dir: &Path, name: &str, recipe: &Recipe, fetch_only: bool) -> Result<(), String> { let source_dir = fetch(recipe_dir, &recipe.source).map_err(|err| format!("failed to fetch: {}", err))?; @@ -763,10 +771,10 @@ fn cook(recipe_dir: &Path, recipe: &Recipe, fetch_only: bool) -> Result<(), Stri create_dir(&target_dir)?; } - let stage_dir = build(recipe_dir, &source_dir, &target_dir, &recipe.build) + let stage_dir = build(recipe_dir, &source_dir, &target_dir, name, &recipe.build) .map_err(|err| format!("failed to build: {}", err))?; - let _package_file = package(recipe_dir, &stage_dir, &target_dir, &recipe.package) + let _package_file = package(recipe_dir, &stage_dir, &target_dir, name, &recipe.package) .map_err(|err| format!("failed to package: {}", err))?; Ok(()) @@ -890,7 +898,7 @@ fn main() { } Ok(()) } else { - cook(&recipe.dir, &recipe.recipe, fetch_only) + cook(&recipe.dir, &recipe.name, &recipe.recipe, fetch_only) }; match res { From facbbc8846b0a44c952a76af771d53ddda8fd8b1 Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Sun, 13 Oct 2024 03:06:45 -0400 Subject: [PATCH 2136/3180] package(games): QuakeSpasm, a Quake 1 source port QuakeSpasm is a simple source port that primarily focuses on bug fixes and backwards compatibility. Its build system is a small Makefile which required a few patches in order to compile on Redox. Currently, it compiles with both SDL1 and SDL2. MP3 support is hard disabled since neither `libmad` nor `mpg123` would compile. However, the default OGG container and Vorbis decoder compiles fine. Like Doom, Quake requires commercial assets or free replications in order to run. I'm currently trying to write a small recipe for the shareware files, but ironically that has more blockers than the source port itself. Beyond the lack of content, I think this port is good to go. --- recipes/games/quakespasm/manifest | 4 + recipes/games/quakespasm/recipe.toml | 48 ++++++++ recipes/games/quakespasm/redox.patch | 110 ++++++++++++++++++ .../wip/games/fps/quake1-shareware/manifest | 3 + .../games/fps/quake1-shareware/pak0.pak.sha | 1 + .../fps/quake1-shareware/quake106.zip.sha | 1 + .../games/fps/quake1-shareware/recipe.toml | 24 ++++ 7 files changed, 191 insertions(+) create mode 100644 recipes/games/quakespasm/manifest create mode 100644 recipes/games/quakespasm/recipe.toml create mode 100644 recipes/games/quakespasm/redox.patch create mode 100644 recipes/wip/games/fps/quake1-shareware/manifest create mode 100644 recipes/wip/games/fps/quake1-shareware/pak0.pak.sha create mode 100644 recipes/wip/games/fps/quake1-shareware/quake106.zip.sha create mode 100644 recipes/wip/games/fps/quake1-shareware/recipe.toml diff --git a/recipes/games/quakespasm/manifest b/recipes/games/quakespasm/manifest new file mode 100644 index 00000000..814d6b06 --- /dev/null +++ b/recipes/games/quakespasm/manifest @@ -0,0 +1,4 @@ +name=QuakeSpasm +category=Games +binary=/usr/games/quakespasm +icon=/ui/icons/apps/quakespasm.png diff --git a/recipes/games/quakespasm/recipe.toml b/recipes/games/quakespasm/recipe.toml new file mode 100644 index 00000000..1d5d069e --- /dev/null +++ b/recipes/games/quakespasm/recipe.toml @@ -0,0 +1,48 @@ +# TODO: Promote + +# Version: 0.96.3 +# Version date: 31-July-2024 + +[source] +git = "https://github.com/sezero/quakespasm" +rev = "cc32abe09ed417ce3be10af300d2dc2f686349ba" +patches = ["redox.patch"] + +[build] +template = "custom" +dependencies = [ + "llvm18", + "libiconv", + "libogg", + "liborbital", + "libvorbis", + "mesa", + # "sdl1", + "sdl2", + "zlib", +] +script = """ +# Skip configuring because QuakeSpasm uses a custom build system +COOKBOOK_CONFIGURE="true" +COOKBOOK_CONFIGURE_FLAGS="" + +# Ensure the build system is aware of Redox +# The build system uses sdl-config for Unix, but SDL recommends using pkg-config +export HOST_OS="redox" +export PKG_CONFIG="${TARGET}-pkg-config" + +# Config options for the Makefile. Set as necessary (see Makefile). +# MP3 is disabled because libmad doesn't compile at the moment +# Other options weren't tested, but SDL and SDL2 both compile fine +export USE_SDL2=1 +export USE_CODEC_MP3=0 +export DO_USERDIRS=1 + +# Source is in Quake/ and icons are in Misc/ +rsync -av --delete "${COOKBOOK_SOURCE}/Quake/" "${COOKBOOK_SOURCE}/Misc" ./ + +# According to frantic grepping, the Redox build system doesn't apply patches to git +git apply "${COOKBOOK_RECIPE}/redox.patch" + +cookbook_configure +""" diff --git a/recipes/games/quakespasm/redox.patch b/recipes/games/quakespasm/redox.patch new file mode 100644 index 00000000..c3ff6a46 --- /dev/null +++ b/recipes/games/quakespasm/redox.patch @@ -0,0 +1,110 @@ +diff '--color=auto' -rupwN source/Makefile source-new/Makefile +--- source/Makefile 2024-10-15 21:21:14.824589882 -0400 ++++ source-new/Makefile 2024-10-16 00:42:27.651948743 -0400 +@@ -4,28 +4,34 @@ + # "make SDL_CONFIG=/path/to/sdl-config" for unusual SDL installations. + # "make DO_USERDIRS=1" to enable user directories support + ++# Base install directory ++DESTDIR ?= "/" ++INSTALLDIR = "${DESTDIR}/usr/games/" ++DATADIR = "${DESTDIR}/usr/share/games/quake1/id1/" ++ICODIR = "${DESTDIR}/ui/icons/apps/" ++ + # Enable/Disable user directories support +-DO_USERDIRS=0 ++DO_USERDIRS ?= 0 + + ### Enable/Disable SDL2 +-USE_SDL2=0 ++USE_SDL2 ?= 0 + + ### Enable/Disable codecs for streaming music support +-USE_CODEC_WAVE=1 +-USE_CODEC_FLAC=0 +-USE_CODEC_MP3=1 +-USE_CODEC_VORBIS=1 +-USE_CODEC_OPUS=0 ++USE_CODEC_WAVE ?= 1 ++USE_CODEC_FLAC ?= 0 ++USE_CODEC_MP3 ?= 1 ++USE_CODEC_VORBIS ?= 1 ++USE_CODEC_OPUS ?= 0 + # either xmp or mikmod (or modplug) +-USE_CODEC_MIKMOD=0 +-USE_CODEC_XMP=0 +-USE_CODEC_MODPLUG=0 +-USE_CODEC_UMX=0 ++USE_CODEC_MIKMOD ?= 0 ++USE_CODEC_XMP ?= 0 ++USE_CODEC_MODPLUG ?= 0 ++USE_CODEC_UMX ?= 0 + + # which library to use for mp3 decoding: mad or mpg123 +-MP3LIB=mad ++MP3LIB ?= mad + # which library to use for ogg decoding: vorbis or tremor +-VORBISLIB=vorbis ++VORBISLIB ?= vorbis + + # --------------------------- + # Helper functions +@@ -35,7 +41,7 @@ check_gcc = $(shell if echo | $(CC) $(1) + + # --------------------------- + +-HOST_OS = $(shell uname|sed -e s/_.*//|tr '[:upper:]' '[:lower:]') ++HOST_OS ?= $(shell uname|sed -e s/_.*//|tr '[:upper:]' '[:lower:]') + + DEBUG ?= 0 + +@@ -49,7 +55,7 @@ LINKER = $(CC) + STRIP ?= strip + PKG_CONFIG ?= pkg-config + +-CPUFLAGS= ++CPUFLAGS ?= + LDFLAGS?= + DFLAGS ?= + CFLAGS ?= -Wall -Wno-trigraphs -MMD +@@ -81,11 +87,19 @@ endif + + ifeq ($(USE_SDL2),1) + SDL_CONFIG ?= sdl2-config ++SDL_VERSION = sdl2 + else + SDL_CONFIG ?= sdl-config ++SDL_VERSION = sdl + endif ++ ++ifeq ($(HOST_OS),redox) ++SDL_CFLAGS = $(shell $(PKG_CONFIG) --cflags $(SDL_VERSION)) ++SDL_LIBS = $(shell $(PKG_CONFIG) --libs $(SDL_VERSION)) ++else + SDL_CFLAGS = $(shell $(SDL_CONFIG) --cflags) + SDL_LIBS = $(shell $(SDL_CONFIG) --libs) ++endif + + NET_LIBS = + ifeq ($(HOST_OS),sunos) +@@ -164,6 +178,8 @@ endif + + ifeq ($(HOST_OS),haiku) + COMMON_LIBS= -lGL ++else ifeq ($(HOST_OS),redox) ++COMMON_LIBS= -lorbital $(shell $(PKG_CONFIG) --libs osmesa zlib) + else + COMMON_LIBS= -lGL -lm + endif +@@ -290,7 +306,10 @@ install: quakespasm + cp quakespasm.pak $(QS_APP_DIR) + else + install: quakespasm +- cp quakespasm /usr/local/games/quake ++ mkdir -p "${INSTALLDIR}" "${DATADIR}" "${ICODIR}" ++ cp quakespasm "${INSTALLDIR}/quakespasm" ++ # xxx Probably requires resizing ++ cp Misc/QuakeSpasm_512.png "${ICODIR}/quakespasm.png" + endif + + sinclude $(OBJS:.o=.d) diff --git a/recipes/wip/games/fps/quake1-shareware/manifest b/recipes/wip/games/fps/quake1-shareware/manifest new file mode 100644 index 00000000..008df9c0 --- /dev/null +++ b/recipes/wip/games/fps/quake1-shareware/manifest @@ -0,0 +1,3 @@ +name=Quake shareware +category=Games +binary=/usr/games/quakespasm -basedir /use/share/games/quake/ diff --git a/recipes/wip/games/fps/quake1-shareware/pak0.pak.sha b/recipes/wip/games/fps/quake1-shareware/pak0.pak.sha new file mode 100644 index 00000000..03655011 --- /dev/null +++ b/recipes/wip/games/fps/quake1-shareware/pak0.pak.sha @@ -0,0 +1 @@ +35a9c55e5e5a284a159ad2a62e0e8def23d829561fe2f54eb402dbc0a9a946af /mnt/games1/home/steam_games/steamapps/common/Quake/id1/PAK0.PAK diff --git a/recipes/wip/games/fps/quake1-shareware/quake106.zip.sha b/recipes/wip/games/fps/quake1-shareware/quake106.zip.sha new file mode 100644 index 00000000..e7df387b --- /dev/null +++ b/recipes/wip/games/fps/quake1-shareware/quake106.zip.sha @@ -0,0 +1 @@ +ec6c9d34b1ae0252ac0066045b6611a7919c2a0d78a3a66d9387a8f597553239 quake106.zip diff --git a/recipes/wip/games/fps/quake1-shareware/recipe.toml b/recipes/wip/games/fps/quake1-shareware/recipe.toml new file mode 100644 index 00000000..f721529c --- /dev/null +++ b/recipes/wip/games/fps/quake1-shareware/recipe.toml @@ -0,0 +1,24 @@ +# TODO: +# * Requires unarchivers + +[build] +template = "custom" +dependencies = ["lhasa", "unzrip"] +script = """ +curl -O "https://github.com/Jason2Brownlee/QuakeOfficialArchive/raw/refs/heads/main/bin/quake106.zip" +sha256sum -c quake106.zip.sha + +# The zip file contains a DOS installer which we don't need +# The actual demo content is within another archive +7z x quake106.zip + +# Actual game contents +lha xv resource.1 +sha256sum -c pak0.pak.sha + +# Now, the ID1 folder contains PAK0, the demo file +# Non-Windows/non-DOS systems expect the directory and file to be lowercased +OUT_DIR = "${COOKBOOK_STAGE}/usr/share/games/quake/id1/" +mkdir -p "${OUT_DIR}" +cp -v ID1/PAK0.PAK "${OUT_DIR}/pak0.pak" +""" From 7a5766176db856c04108d7474c1225b2a322c363 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 18 Oct 2024 08:14:31 -0600 Subject: [PATCH 2137/3180] pkgutils: fix recipe for rewrite --- recipes/core/pkgutils/recipe.toml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/recipes/core/pkgutils/recipe.toml b/recipes/core/pkgutils/recipe.toml index e222cb45..51ae456b 100644 --- a/recipes/core/pkgutils/recipe.toml +++ b/recipes/core/pkgutils/recipe.toml @@ -2,4 +2,8 @@ git = "https://gitlab.redox-os.org/redox-os/pkgutils.git" [build] -template = "cargo" +template = "custom" +script = """ +PACKAGE_PATH=pkg-cli +cookbook_cargo +""" From df402d6cbbacc7e99ed8f2da419e86164c88e98b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 18 Oct 2024 08:22:01 -0600 Subject: [PATCH 2138/3180] cosmic-store: enable desktop feature --- recipes/tools/cosmic-store/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/tools/cosmic-store/recipe.toml b/recipes/tools/cosmic-store/recipe.toml index fdf97a08..b44a4438 100644 --- a/recipes/tools/cosmic-store/recipe.toml +++ b/recipes/tools/cosmic-store/recipe.toml @@ -11,7 +11,7 @@ dependencies = [ script = """ export GETTEXT_DIR="${COOKBOOK_SYSROOT}" export GETTEXT_STATIC=1 -cookbook_cargo --no-default-features --features pkgar +cookbook_cargo --no-default-features --features desktop,pkgar #TODO: install with just? APPID="com.system76.CosmicStore" mkdir -pv "${COOKBOOK_STAGE}/usr/share/applications/" From aae056594d920672890a6c8fb32f34bced7808bc Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 18 Oct 2024 12:57:17 -0600 Subject: [PATCH 2139/3180] Remove legacy packaging --- .gitmodules | 4 - Cargo.lock | 349 +++++++++++++++++----------------------- config.sh | 4 - cook.sh | 41 +---- pkgutils | 1 - repo.sh | 47 +----- src/bin/cook.rs | 23 ++- src/bin/list_recipes.rs | 6 +- src/progress_bar.rs | 7 +- 9 files changed, 182 insertions(+), 300 deletions(-) delete mode 160000 pkgutils diff --git a/.gitmodules b/.gitmodules index 849ef077..c282b96a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -6,7 +6,3 @@ path = pkgar url = https://gitlab.redox-os.org/redox-os/pkgar.git branch = master -[submodule "pkgutils"] - path = pkgutils - url = https://gitlab.redox-os.org/redox-os/pkgutils.git - branch = master diff --git a/Cargo.lock b/Cargo.lock index b7de04c1..031e3955 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,12 +17,6 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" -[[package]] -name = "adler32" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" - [[package]] name = "aes" version = "0.7.5" @@ -35,18 +29,6 @@ dependencies = [ "opaque-debug", ] -[[package]] -name = "ahash" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" -dependencies = [ - "cfg-if 1.0.0", - "once_cell", - "version_check", - "zerocopy", -] - [[package]] name = "aho-corasick" version = "1.1.3" @@ -57,10 +39,19 @@ dependencies = [ ] [[package]] -name = "allocator-api2" -version = "0.2.18" +name = "alloc-no-stdlib" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] [[package]] name = "android-tzdata" @@ -137,9 +128,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.89" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" +checksum = "37bf3594c4c988a53154954629820791dde498571819ae4ca50ca811e060cc95" [[package]] name = "arg_parser" @@ -175,6 +166,19 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +[[package]] +name = "async-compression" +version = "0.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "103db485efc3e41214fe4fda9f3dbeae2eb9082f48fd236e6095627a9422066e" +dependencies = [ + "brotli", + "futures-core", + "memchr", + "pin-project-lite", + "tokio", +] + [[package]] name = "atty" version = "0.2.14" @@ -225,12 +229,6 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" -[[package]] -name = "bidir-map" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75bf05cf4e05e803d8458ba57c61201b90068fa39f9200962fa401cd5f9ab403" - [[package]] name = "bitflags" version = "1.3.2" @@ -301,6 +299,27 @@ dependencies = [ "generic-array", ] +[[package]] +name = "brotli" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + [[package]] name = "bumpalo" version = "3.16.0" @@ -390,6 +409,19 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +[[package]] +name = "console" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +dependencies = [ + "encode_unicode", + "lazy_static", + "libc", + "unicode-width", + "windows-sys 0.52.0", +] + [[package]] name = "constant_time_eq" version = "0.1.5" @@ -408,15 +440,6 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" -[[package]] -name = "core2" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" -dependencies = [ - "memchr", -] - [[package]] name = "cpufeatures" version = "0.2.14" @@ -441,15 +464,6 @@ version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" -[[package]] -name = "crc32fast" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" -dependencies = [ - "cfg-if 1.0.0", -] - [[package]] name = "crossbeam-channel" version = "0.5.13" @@ -504,12 +518,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "dary_heap" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7762d17f1241643615821a8455a0b2c3e803784b058693d990b11f2dce25a0ca" - [[package]] name = "deranged" version = "0.3.11" @@ -595,6 +603,12 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + [[package]] name = "endian-num" version = "0.1.2" @@ -668,24 +682,6 @@ dependencies = [ "log", ] -[[package]] -name = "filetime" -version = "0.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "libredox", - "windows-sys 0.59.0", -] - -[[package]] -name = "fixedbitset" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" - [[package]] name = "fnv" version = "1.0.7" @@ -825,16 +821,6 @@ dependencies = [ "uuid", ] -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -dependencies = [ - "ahash", - "allocator-api2", -] - [[package]] name = "hashbrown" version = "0.15.0" @@ -1007,7 +993,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.15.0", + "hashbrown", +] + +[[package]] +name = "indicatif" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +dependencies = [ + "console", + "instant", + "number_prefix", + "portable-atomic", + "unicode-width", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if 1.0.0", ] [[package]] @@ -1046,15 +1054,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "keccak" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" -dependencies = [ - "cpufeatures", -] - [[package]] name = "lazy_static" version = "1.5.0" @@ -1063,33 +1062,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.159" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" - -[[package]] -name = "libflate" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45d9dfdc14ea4ef0900c1cddbc8dcd553fbaacd8a4a282cf4018ae9dd04fb21e" -dependencies = [ - "adler32", - "core2", - "crc32fast", - "dary_heap", - "libflate_lz77", -] - -[[package]] -name = "libflate_lz77" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6e0d73b369f386f1c44abd9c570d5318f55ccde816ff4b562fa452e5182863d" -dependencies = [ - "core2", - "hashbrown 0.14.5", - "rle-decode-fast", -] +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "libredox" @@ -1185,6 +1160,12 @@ dependencies = [ "autocfg", ] +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + [[package]] name = "numtoa" version = "0.2.4" @@ -1254,16 +1235,6 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" -[[package]] -name = "petgraph" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" -dependencies = [ - "fixedbitset", - "indexmap", -] - [[package]] name = "pin-project-lite" version = "0.2.14" @@ -1335,6 +1306,12 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" +[[package]] +name = "portable-atomic" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" + [[package]] name = "powerfmt" version = "0.2.0" @@ -1488,10 +1465,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "436d45c2b6a5b159d43da708e62b25be3a4a3d5550d654b72216ade4c4bfd717" [[package]] -name = "redox-scheme" -version = "0.2.3" +name = "redox-pkg" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95624e20d2c1808f7ca0820720d30aad9f5d2fc404e1ef379431ad7a790c3f7e" +checksum = "e74e8f571b1a91c18e716d73accdf1bdc72a1c93c586f349a6018db3b1424afd" +dependencies = [ + "indicatif", + "pkgar", + "pkgar-core", + "pkgar-keys", + "reqwest", + "serde", + "serde_derive", + "thiserror", + "toml 0.8.19", +] + +[[package]] +name = "redox-scheme" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6143c4d307e1c99ac14f60b5b07b2dccaf9d17137f7cee4e4e29977dd8014a1b" dependencies = [ "libredox", "redox_syscall", @@ -1514,9 +1508,9 @@ dependencies = [ [[package]] name = "redox_installer" -version = "0.2.25" +version = "0.2.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e13546aacf80d787e6f1ad92bdee0574991f4ce48d529421cec091291e606da" +checksum = "e86800000b84d5f8e7775c91a8b64bd0a33cac22cb993d02fccf4810e82a31aa" dependencies = [ "anyhow", "arg_parser", @@ -1529,8 +1523,8 @@ dependencies = [ "pkgar-core", "pkgar-keys", "rand", + "redox-pkg", "redox_liner", - "redox_pkgutils", "redox_syscall", "redoxfs", "rust-argon2", @@ -1554,28 +1548,6 @@ dependencies = [ "unicode-width", ] -[[package]] -name = "redox_pkgutils" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76d0906f7fb9a69996b777be79fa793295aa3ebbdde89c375a1df841ee3ce43" -dependencies = [ - "bidir-map", - "clap", - "indexmap", - "libflate", - "pbr", - "petgraph", - "redox_liner", - "reqwest", - "serde", - "serde_derive", - "sha3", - "tar", - "toml 0.8.19", - "version-compare", -] - [[package]] name = "redox_syscall" version = "0.5.7" @@ -1604,9 +1576,9 @@ dependencies = [ [[package]] name = "redoxer" -version = "0.2.46" +version = "0.2.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10468ffdb4f300f5702dbe6e1f11057b1275501ee4190bfc16a4a976f367a8d" +checksum = "ff8152d2731f75443064282ac274007bb8b706dd7eba2b16b659f0a8417a4a96" dependencies = [ "dirs 5.0.1", "proc-mounts", @@ -1678,6 +1650,7 @@ version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" dependencies = [ + "async-compression", "base64 0.22.1", "bytes", "futures-channel", @@ -1706,6 +1679,7 @@ dependencies = [ "sync_wrapper", "tokio", "tokio-rustls", + "tokio-util", "tower-service", "url", "wasm-bindgen", @@ -1730,12 +1704,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "rle-decode-fast" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422" - [[package]] name = "rust-argon2" version = "0.8.3" @@ -1866,9 +1834,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.130" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "610f75ff4a8e3cb29b85da56eabdd1bff5b06739059a4b8e2967fef32e5d9944" dependencies = [ "itoa", "memchr", @@ -1897,16 +1865,6 @@ dependencies = [ "serde", ] -[[package]] -name = "sha3" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" -dependencies = [ - "digest 0.10.7", - "keccak", -] - [[package]] name = "shlex" version = "1.3.0" @@ -2002,17 +1960,6 @@ dependencies = [ "futures-core", ] -[[package]] -name = "tar" -version = "0.4.42" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ff6c40d3aedb5e06b57c6f669ad17ab063dd1e63d977c6a88e7f4dfa4f04020" -dependencies = [ - "filetime", - "libc", - "xattr", -] - [[package]] name = "tempfile" version = "3.13.0" @@ -2127,6 +2074,19 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-util" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + [[package]] name = "toml" version = "0.5.11" @@ -2278,12 +2238,6 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" -[[package]] -name = "version-compare" -version = "0.0.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fcf84b72310ec15c6b2dc9dd8f31765d10debdfb240392fc96ff4cc0ec2f16" - [[package]] name = "version_check" version = "0.9.5" @@ -2720,17 +2674,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "xattr" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" -dependencies = [ - "libc", - "linux-raw-sys", - "rustix", -] - [[package]] name = "zerocopy" version = "0.7.35" diff --git a/config.sh b/config.sh index e0295287..d7525a00 100755 --- a/config.sh +++ b/config.sh @@ -63,10 +63,6 @@ then function docgen { CC=cc AR=ar RANLIB=ranlib cargo run --release --manifest-path "$ROOT/docgen/Cargo.toml" --bin docgen -- "$@" } - -function pkg { - CC=cc AR=ar RANLIB=ranlib cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- "$@" -} function pkgar { CC=cc AR=ar RANLIB=ranlib cargo run --release --manifest-path "$ROOT/pkgar/Cargo.toml" --bin pkgar -- "$@" diff --git a/cook.sh b/cook.sh index 408c7ee1..f3b9f4c2 100755 --- a/cook.sh +++ b/cook.sh @@ -32,12 +32,8 @@ function usage { echo " unpkg" >&2 echo " prepare" >&2 echo " unprepare" >&2 - echo " publish" >&2 - echo " unpublish" >&2 echo " stage" >&2 echo " unstage" >&2 - echo " tar" >&2 - echo " untar" >&2 echo " version" >&2 } @@ -52,12 +48,10 @@ function op { op $1 prepare op $1 build op $1 stage - op $1 tar op $1 pkg ;; distclean) op $1 unpkg - op $1 untar op $1 unstage op $1 unprepare ;; @@ -295,11 +289,8 @@ function op { --archive "${COOKBOOK_STAGE}.pkgar" \ --skey "${ROOT}/build/id_ed25519.toml" \ "${COOKBOOK_STAGE}" - ;; - unpkg) - rm -fv "${COOKBOOK_STAGE}.pkgar" - ;; - tar) + + # Generate stage.toml echo "name = \"$1\"" > "${COOKBOOK_STAGE}.toml" echo "version = \"$(op $1 version)\"" >> "${COOKBOOK_STAGE}.toml" echo "target = \"$TARGET\"" >> "${COOKBOOK_STAGE}.toml" @@ -314,33 +305,9 @@ function op { else echo "depends = []" >> "${COOKBOOK_STAGE}.toml" fi - - rm -rf "${COOKBOOK_STAGE}/pkg" - mkdir -p "${COOKBOOK_STAGE}/pkg" - - pushd "${COOKBOOK_STAGE}" > /dev/null - find -L . -type f | cut -d / -f 2- | sort | while read file - do - $SHASUM "$file" >> "pkg/$1.sha256sums" - done - popd > /dev/null - - cp -v "${COOKBOOK_STAGE}.toml" "${COOKBOOK_STAGE}/pkg/$1.toml" - pushd "$(dirname "${COOKBOOK_STAGE}")" > /dev/null - pkg --target="$TARGET" create "$(basename "${COOKBOOK_STAGE}")" - popd > /dev/null ;; - untar) - rm -rfv "${COOKBOOK_STAGE}.tar.gz" "${COOKBOOK_STAGE}.sig" "${COOKBOOK_STAGE}.toml" - ;; - publish) - mkdir -p "$REPO" - cp -v "${COOKBOOK_STAGE}.tar.gz" "$REPO/$1.tar.gz" - cp -v "${COOKBOOK_STAGE}.sig" "$REPO/$1.sig" - cp -v "${COOKBOOK_STAGE}.toml" "$REPO/$1.toml" - ;; - unpublish) - rm -rfv "$REPO/$1.tar.gz" "$REPO/$1.sig" "$REPO/$1.toml" + unpkg) + rm -fv "${COOKBOOK_STAGE}.pkgar" "${COOKBOOK_STAGE}.toml" ;; *) usage $1 diff --git a/pkgutils b/pkgutils deleted file mode 160000 index b4d0022c..00000000 --- a/pkgutils +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b4d0022cf08abb149603178f236f863f612069b8 diff --git a/repo.sh b/repo.sh index 64fc012a..202cef3b 100755 --- a/repo.sh +++ b/repo.sh @@ -40,24 +40,6 @@ do if [ -e "${COOKBOOK_RECIPE}/recipe.toml" ] then target/release/cook "$recipe" - - if [ ! -f "${COOKBOOK_STAGE}.tar.gz" ] - then - echo -e "\033[01;38;5;155mrepo - legacy packaging $recipe\033[0m" >&2 - ./cook.sh "$recipe" tar $DEBUG - else - TIME_PKG="$($STAT -c "%Y" "${COOKBOOK_STAGE}.pkgar")" - TIME_STAGE="$($STAT -c "%Y" "${COOKBOOK_STAGE}.tar.gz")" - if [ "$TIME_PKG" -gt "$TIME_STAGE" ] - then - echo -e "\033[01;38;5;155mrepo - legacy repackaging $recipe\033[0m" >&2 - ./cook.sh "$recipe" untar tar $DEBUG - fi - fi - - # Match pkgar and tar time - touch -c -r "${COOKBOOK_STAGE}.tar.gz" "${COOKBOOK_STAGE}.pkgar" - continue fi @@ -85,36 +67,22 @@ do fi fi - if [ ! -f "${COOKBOOK_STAGE}.tar.gz" ] + if [ ! -f "${COOKBOOK_STAGE}.pkgar" ] then echo -e "\033[01;38;5;155mrepo - building $recipe\033[0m" >&2 - ./cook.sh "$recipe" build stage tar $DEBUG + ./cook.sh "$recipe" build stage pkg $DEBUG else TIME_BUILD="$($FIND "${COOKBOOK_BUILD}" -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" - TIME_STAGE="$($STAT -c "%Y" "${COOKBOOK_STAGE}.tar.gz")" + TIME_STAGE="$($STAT -c "%Y" "${COOKBOOK_STAGE}.pkgar")" TIME_RECIPE="$($FIND "${COOKBOOK_RECIPE}"/{recipe.sh,*.patch} -printf '%Ts\n' | sort -nr | head -n 1)" if [ "$TIME_BUILD" -gt "$TIME_STAGE" -o "$TIME_RECIPE" -gt "$TIME_STAGE" ] then echo -e "\033[01;38;5;155mrepo - rebuilding $recipe\033[0m" >&2 - ./cook.sh "$recipe" untar unstage build stage tar $DEBUG + ./cook.sh "$recipe" untar unstage build stage pkg $DEBUG else echo -e "\033[01;38;5;155mrepo - $recipe up to date\033[0m" >&2 fi fi - - if [ ! -f "${COOKBOOK_STAGE}.pkgar" ] - then - echo -e "\033[01;38;5;155mrepo - packaging $recipe\033[0m" >&2 - ./cook.sh "$recipe" pkg $DEBUG - else - TIME_STAGE="$($STAT -c "%Y" "${COOKBOOK_STAGE}.tar.gz")" - TIME_PKG="$($STAT -c "%Y" "${COOKBOOK_STAGE}.pkgar")" - if [ "$TIME_STAGE" -gt "$TIME_PKG" ] - then - echo -e "\033[01;38;5;155mrepo - repackaging $recipe\033[0m" >&2 - ./cook.sh "$recipe" unpkg pkg $DEBUG - fi - fi done mkdir -p "$REPO" @@ -128,16 +96,11 @@ do TARGET_DIR="${COOKBOOK_RECIPE}/target/${TARGET}" COOKBOOK_STAGE="${TARGET_DIR}/stage" - if [ "${COOKBOOK_STAGE}.tar.gz" -nt "$REPO/$recipe.tar.gz" ] - then - echo -e "\033[01;38;5;155mrepo - publishing $recipe\033[0m" >&2 - ./cook.sh $recipe publish - fi - if [ "${COOKBOOK_STAGE}.pkgar" -nt "$REPO/$recipe.pkgar" ] then echo -e "\033[01;38;5;155mrepo - publishing $recipe\033[0m" >&2 cp -v "${COOKBOOK_STAGE}.pkgar" "$REPO/$recipe.pkgar" + cp -v "${COOKBOOK_STAGE}.toml" "$REPO/$recipe.toml" fi if [ -e "${COOKBOOK_STAGE}/usr/share/metainfo" ] diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 89f032cf..b31c2e4a 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -708,8 +708,8 @@ fn package( _recipe_dir: &Path, stage_dir: &Path, target_dir: &Path, - _name: &str, - _package: &PackageRecipe, + name: &str, + package: &PackageRecipe, ) -> Result { //TODO: metadata like dependencies, name, and version @@ -749,6 +749,25 @@ fn package( stage_dir.to_str().unwrap(), ) .map_err(|err| format!("failed to create pkgar archive: {:?}", err))?; + + //TODO: share struct with pkgutils? + #[derive(serde::Serialize)] + struct StageToml { + name: String, + version: String, + target: String, + depends: Vec, + } + let stage_toml = toml::to_string(&StageToml { + name: name.into(), + version: "TODO".into(), + target: env::var("TARGET") + .map_err(|err| format!("failed to read TARGET: {:?}", err))?, + depends: package.dependencies.clone(), + }) + .map_err(|err| format!("failed to serialize stage.toml: {:?}", err))?; + fs::write(target_dir.join("stage.toml"), stage_toml) + .map_err(|err| format!("failed to write stage.toml: {:?}", err))?; } Ok(package_file) diff --git a/src/bin/list_recipes.rs b/src/bin/list_recipes.rs index 95264c9d..1597e4ce 100644 --- a/src/bin/list_recipes.rs +++ b/src/bin/list_recipes.rs @@ -4,9 +4,11 @@ use std::process::exit; // use clap::Parser; fn main() { - let print_short = std::env::args().nth(1).map_or(false, |a| a == "-s" || a == "--short"); + let print_short = std::env::args() + .nth(1) + .map_or(false, |a| a == "-s" || a == "--short"); - let result = list_recipes( Path::new("recipes"), Default::default()); + let result = list_recipes(Path::new("recipes"), Default::default()); match result { Ok(result) => { diff --git a/src/progress_bar.rs b/src/progress_bar.rs index 5033cd8e..ef7ce1fc 100644 --- a/src/progress_bar.rs +++ b/src/progress_bar.rs @@ -1,6 +1,6 @@ pub use pbr::ProgressBar; -use std::io::{Read, Write, Result}; +use std::io::{Read, Result, Write}; pub struct ProgressBarRead<'p, 'r, P: Write + 'p, R: Read + 'r> { pb: &'p mut ProgressBar

, @@ -9,10 +9,7 @@ pub struct ProgressBarRead<'p, 'r, P: Write + 'p, R: Read + 'r> { impl<'p, 'r, P: Write, R: Read> ProgressBarRead<'p, 'r, P, R> { pub fn new(pb: &'p mut ProgressBar

, r: &'r mut R) -> ProgressBarRead<'p, 'r, P, R> { - ProgressBarRead { - pb, - r - } + ProgressBarRead { pb, r } } } From e07638013b0ffaeabd89da30ca24d78f171fb4b2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 19 Oct 2024 16:53:10 -0600 Subject: [PATCH 2140/3180] config.sh: use prebuilt docgen and pkgar --- config.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config.sh b/config.sh index d7525a00..d9ad0e34 100755 --- a/config.sh +++ b/config.sh @@ -61,10 +61,10 @@ export STAT if [ ! "$(uname -s)" = "Redox" ] then function docgen { - CC=cc AR=ar RANLIB=ranlib cargo run --release --manifest-path "$ROOT/docgen/Cargo.toml" --bin docgen -- "$@" + "$ROOT/docgen/target/docgen" "$@" } function pkgar { - CC=cc AR=ar RANLIB=ranlib cargo run --release --manifest-path "$ROOT/pkgar/Cargo.toml" --bin pkgar -- "$@" + "$ROOT/pkgar/target/release/pkgar" "$@" } -fi \ No newline at end of file +fi From 55700b73b33dbdad4fa17ca2da5ed2cfeef5da7d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 19 Oct 2024 18:01:44 -0600 Subject: [PATCH 2141/3180] neverball: ensure lz is linked in mapc --- recipes/games/neverball/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/games/neverball/recipe.sh b/recipes/games/neverball/recipe.sh index c1ce70eb..39a3e5f5 100644 --- a/recipes/games/neverball/recipe.sh +++ b/recipes/games/neverball/recipe.sh @@ -10,7 +10,7 @@ function recipe_version { function recipe_build { set -x env -i \ - LDFLAGS="-static" \ + LDFLAGS="-static -ljpeg -lpng16 -lz" \ PATH="/usr/bin:/bin" \ PKG_CONFIG="pkg-config" \ "$REDOX_MAKE" -j"$($NPROC)" ENABLE_FS=stdio mapc sols From 0bfabbdeaf6efdb4853a0110bb2edeca48ea58ef Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 19 Oct 2024 18:09:06 -0600 Subject: [PATCH 2142/3180] Fix docgen path --- config.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.sh b/config.sh index d9ad0e34..1e7d767d 100755 --- a/config.sh +++ b/config.sh @@ -61,7 +61,7 @@ export STAT if [ ! "$(uname -s)" = "Redox" ] then function docgen { - "$ROOT/docgen/target/docgen" "$@" + "$ROOT/docgen/target/release/docgen" "$@" } function pkgar { From e03d15dd77053df7b93f620405176172b5e82a34 Mon Sep 17 00:00:00 2001 From: bitstr0m Date: Sun, 20 Oct 2024 12:38:31 +0000 Subject: [PATCH 2143/3180] Improve python310 recipe --- recipes/wip/dev/lang/python310/recipe.toml | 39 +++++++++- recipes/wip/dev/lang/python310/redox.patch | 90 ++++++++++++++++++++++ 2 files changed, 125 insertions(+), 4 deletions(-) create mode 100644 recipes/wip/dev/lang/python310/redox.patch diff --git a/recipes/wip/dev/lang/python310/recipe.toml b/recipes/wip/dev/lang/python310/recipe.toml index 8ed9e88e..6c69663f 100644 --- a/recipes/wip/dev/lang/python310/recipe.toml +++ b/recipes/wip/dev/lang/python310/recipe.toml @@ -1,14 +1,45 @@ -#TODO not compiled or tested +#TODO Fix dynamic loading of C modules +#TODO Fix openssl dependency +#TODO Add additional dependencies (readline, ncurses, etc.) [source] tar = "https://www.python.org/ftp/python/3.10.13/Python-3.10.13.tar.xz" +patches = [ + 'redox.patch' +] + [build] template = "custom" -dependencies = [ - "openssl1", -] +dependencies = [] script = """ +# Python cross-compilation requires the same Python version on the build machine +BUILDMACH_TARGET="$(gcc -dumpmachine)" +BUILDMACH_BUILD="${COOKBOOK_RECIPE}/target/${BUILDMACH_TARGET}/build" +BUILDMACH_STAGE="${COOKBOOK_RECIPE}/target/${BUILDMACH_TARGET}/stage" + +# If this is a fresh build then we also rebuild the build machine version +# (Cookbook clean does not remove it so we have to do it manually) +if [ -z "$(ls -A .)" ]; then + rm -rf "${BUILDMACH_BUILD}" "${BUILDMACH_STAGE}" +fi + +mkdir -p "${BUILDMACH_BUILD}" +mkdir -p "${BUILDMACH_STAGE}" + +cd "${BUILDMACH_BUILD}" +# Use env that does not use the Redox build tools +env -i PATH="$PATH" CC=gcc "${COOKBOOK_SOURCE}/configure" +env -i PATH="$PATH" CC=gcc "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" +"${COOKBOOK_MAKE}" install DESTDIR="${BUILDMACH_STAGE}" +cd - + +export PATH="${BUILDMACH_STAGE}/usr/local/bin:${PATH}" + +# --enable-optimizations for release build COOKBOOK_CONFIGURE_FLAGS+=( --disable-ipv6 + --build="${ARCH}" + ac_cv_file__dev_ptmx=no + ac_cv_file__dev_ptc=no ) cookbook_configure """ diff --git a/recipes/wip/dev/lang/python310/redox.patch b/recipes/wip/dev/lang/python310/redox.patch new file mode 100644 index 00000000..3f42622d --- /dev/null +++ b/recipes/wip/dev/lang/python310/redox.patch @@ -0,0 +1,90 @@ +diff -ur source-orig/configure source/configure +--- source-orig/configure 2023-08-24 13:46:25.000000000 +0100 ++++ source/configure 2024-10-17 16:50:09.377036649 +0100 +@@ -3347,6 +3347,9 @@ + *-*-vxworks*) + ac_sys_system=VxWorks + ;; ++ *-*-redox*) ++ ac_sys_system=Redox ++ ;; + *) + # for now, limit cross builds to known configurations + MACHDEP="unknown" +@@ -3371,6 +3374,7 @@ + case $MACHDEP in + aix*) MACHDEP="aix";; + linux*) MACHDEP="linux";; ++ redox*) MACHDEP="redox";; + cygwin*) MACHDEP="cygwin";; + darwin*) MACHDEP="darwin";; + '') MACHDEP="unknown";; +@@ -3382,7 +3386,7 @@ + + if test "$cross_compiling" = yes; then + case "$host" in +- *-*-linux*) ++ *-*-linux*|*-*-redox*) + case "$host_cpu" in + arm*) + _host_cpu=arm +@@ -5989,7 +5993,7 @@ + PY3LIBRARY=libpython3.so + fi + ;; +- Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*|VxWorks*) ++ Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*|VxWorks*|Redox*) + LDLIBRARY='libpython$(LDVERSION).so' + BLDLIBRARY='-L. -lpython$(LDVERSION)' + RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} +@@ -9787,7 +9791,7 @@ + BLDSHARED="$LDSHARED" + fi + ;; +- Linux*|GNU*|QNX*|VxWorks*) ++ Linux*|GNU*|QNX*|VxWorks*|Redox*) + LDSHARED='$(CC) -shared' + LDCXXSHARED='$(CXX) -shared';; + FreeBSD*) +@@ -9856,7 +9860,7 @@ + else CCSHARED="+z"; + fi;; + Linux-android*) ;; +- Linux*|GNU*) CCSHARED="-fPIC";; ++ Linux*|GNU*|Redox*) CCSHARED="-fPIC";; + FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";; + OpenUNIX*|UnixWare*) + if test "$GCC" = "yes" +@@ -9886,7 +9890,7 @@ + LINKFORSHARED="-Wl,-E -Wl,+s";; + # LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";; + Linux-android*) LINKFORSHARED="-pie -Xlinker -export-dynamic";; +- Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";; ++ Linux*|GNU*|Redox*) LINKFORSHARED="-Xlinker -export-dynamic";; + # -u libsys_s pulls in all symbols in libsys + Darwin/*) + LINKFORSHARED="$extra_undefs -framework CoreFoundation" +diff -ur source-orig/Include/pyport.h source/Include/pyport.h +--- source-orig/Include/pyport.h 2023-08-24 13:46:25.000000000 +0100 ++++ source/Include/pyport.h 2024-10-17 17:34:54.514295923 +0100 +@@ -843,7 +843,7 @@ + # error "Py_TRACE_REFS ABI is not compatible with release and debug ABI" + #endif + +-#if defined(__ANDROID__) || defined(__VXWORKS__) ++#if defined(__ANDROID__) || defined(__VXWORKS__) || defined(__redox__) + // Use UTF-8 as the locale encoding, ignore the LC_CTYPE locale. + // See _Py_GetLocaleEncoding(), PyUnicode_DecodeLocale() + // and PyUnicode_EncodeLocale(). +diff -ur source-orig/Modules/timemodule.c source/Modules/timemodule.c +--- source-orig/Modules/timemodule.c 2023-08-24 13:46:25.000000000 +0100 ++++ source/Modules/timemodule.c 2024-10-17 17:38:08.481699567 +0100 +@@ -1453,7 +1453,7 @@ + return 0; + } + +-#elif defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_PROCESS_CPUTIME_ID) ++#elif defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_PROCESS_CPUTIME_ID) && defined(CLOCK_THREAD_CPUTIME_ID) + #define HAVE_THREAD_TIME + + #if defined(__APPLE__) && defined(__has_attribute) && __has_attribute(availability) From 49edbc5ab1d728da58a921834de12a9b60e52ff4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 20 Oct 2024 14:07:42 -0600 Subject: [PATCH 2144/3180] Update pkgar --- pkgar | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgar b/pkgar index fac7c428..ccfa2bd3 160000 --- a/pkgar +++ b/pkgar @@ -1 +1 @@ -Subproject commit fac7c428026b6e5368d4f9a2edd42ace25744767 +Subproject commit ccfa2bd3adc41f192d12cb1778a85da232fa2456 From bfa701323d365f5cae88f8b1ec31efffd0d4e7a5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 20 Oct 2024 14:15:09 -0600 Subject: [PATCH 2145/3180] Update dependencies --- Cargo.lock | 203 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 148 insertions(+), 55 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 031e3955..1af8712a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -24,7 +24,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" dependencies = [ "cfg-if 1.0.0", - "cipher", + "cipher 0.3.0", "cpufeatures", "opaque-debug", ] @@ -168,9 +168,9 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "async-compression" -version = "0.4.16" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "103db485efc3e41214fe4fda9f3dbeae2eb9082f48fd236e6095627a9422066e" +checksum = "0cb8f1d480b0ea3783ab015936d2a55c87e219676f0c0b7dec61494043f21857" dependencies = [ "brotli", "futures-core", @@ -346,9 +346,9 @@ checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" [[package]] name = "cc" -version = "1.1.30" +version = "1.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16803a61b81d9eabb7eae2588776c4c1e584b738ede45fdbb4c972cec1e9945" +checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" dependencies = [ "shlex", ] @@ -365,6 +365,17 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "chacha20" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +dependencies = [ + "cfg-if 1.0.0", + "cipher 0.4.4", + "cpufeatures", +] + [[package]] name = "chrono" version = "0.4.38" @@ -388,6 +399,17 @@ dependencies = [ "generic-array", ] +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", + "zeroize", +] + [[package]] name = "clap" version = "2.34.0" @@ -518,6 +540,32 @@ dependencies = [ "subtle", ] +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "curve25519-dalek-derive", + "fiat-crypto", + "rustc_version", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "deranged" version = "0.3.11" @@ -589,12 +637,23 @@ dependencies = [ ] [[package]] -name = "ed25519" -version = "1.5.3" +name = "dryoc" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +checksum = "c2b4e91b49d1084ddf7d8838a75faa9a845d539ee70422a4d6fc53e3bdd036e4" dependencies = [ - "signature", + "bitflags 2.6.0", + "chacha20", + "curve25519-dalek", + "generic-array", + "lazy_static", + "libc", + "rand_core", + "salsa20", + "sha2", + "subtle", + "winapi", + "zeroize", ] [[package]] @@ -682,6 +741,12 @@ dependencies = [ "log", ] +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + [[package]] name = "fnv" version = "1.0.7" @@ -1009,6 +1074,15 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + [[package]] name = "instant" version = "0.1.13" @@ -1077,18 +1151,6 @@ dependencies = [ "redox_syscall", ] -[[package]] -name = "libsodium-sys" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b779387cd56adfbc02ea4a668e704f729be8d6a6abd2c27ca5ee537849a92fd" -dependencies = [ - "cc", - "libc", - "pkg-config", - "walkdir", -] - [[package]] name = "linux-raw-sys" version = "0.4.14" @@ -1255,9 +1317,9 @@ checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "pkgar" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ebd7dd69839f52902bff51faf56766e4f924e6e9afa141ce2a517ddb01ec075" +checksum = "850f50a19f791c0ac7c1c8b559d36f73a652dc423216282807aac7380fecc198" dependencies = [ "blake3 0.3.8", "clap", @@ -1265,36 +1327,35 @@ dependencies = [ "pkgar-core", "pkgar-keys", "plain", - "sodiumoxide", "user-error", ] [[package]] name = "pkgar-core" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "045eef6a8327bab70896b7fe4ff4f3886fec736498937ed4f4d39808c8f23e5d" +checksum = "365a518b54ba821f5e84fd4a92b7b592ef2aa20acda3d41d7d7bc20f688dac3f" dependencies = [ "bitflags 1.3.2", "blake3 0.3.8", + "dryoc", "plain", - "sodiumoxide", ] [[package]] name = "pkgar-keys" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ea7b9107cf70dd71ffec209e7cd3de1e0b5e89a0b361b78f993c6a1502c94cd" +checksum = "06116ba0b805d25edf7d03670a551dbcaa8305a1695d80d0f078e43707b7999a" dependencies = [ "clap", "dirs 3.0.2", "error-chain", "hex", "lazy_static", + "pkgar-core", "seckey", "serde", - "sodiumoxide", "termion", "toml 0.8.19", "user-error", @@ -1508,9 +1569,9 @@ dependencies = [ [[package]] name = "redox_installer" -version = "0.2.26" +version = "0.2.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86800000b84d5f8e7775c91a8b64bd0a33cac22cb993d02fccf4810e82a31aa" +checksum = "9b82f8b5242a3c48b7bbbf96172c563db8d259d35f64f331b9dbe6b29fb5cd96" dependencies = [ "anyhow", "arg_parser", @@ -1576,9 +1637,9 @@ dependencies = [ [[package]] name = "redoxer" -version = "0.2.47" +version = "0.2.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff8152d2731f75443064282ac274007bb8b706dd7eba2b16b659f0a8417a4a96" +checksum = "aaa711e2a14950e9ae7601b3e9fa1759d21df803127e32121bf90bb873672b11" dependencies = [ "dirs 5.0.1", "proc-mounts", @@ -1728,6 +1789,15 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + [[package]] name = "rustix" version = "0.38.37" @@ -1787,6 +1857,15 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher 0.4.4", +] + [[package]] name = "same-file" version = "1.0.6" @@ -1812,6 +1891,12 @@ dependencies = [ "memsec", ] +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" + [[package]] name = "serde" version = "1.0.197" @@ -1834,9 +1919,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.130" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "610f75ff4a8e3cb29b85da56eabdd1bff5b06739059a4b8e2967fef32e5d9944" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ "itoa", "memchr", @@ -1865,18 +1950,23 @@ dependencies = [ "serde", ] +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.7", +] + [[package]] name = "shlex" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" -[[package]] -name = "signature" -version = "1.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" - [[package]] name = "slab" version = "0.4.9" @@ -1902,17 +1992,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "sodiumoxide" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e26be3acb6c2d9a7aac28482586a7856436af4cfe7100031d219de2d2ecb0028" -dependencies = [ - "ed25519", - "libc", - "libsodium-sys", -] - [[package]] name = "spin" version = "0.9.8" @@ -1942,9 +2021,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.79" +version = "2.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +checksum = "83540f837a8afc019423a8edb95b52a8effe46957ee402287f4292fae35be021" dependencies = [ "proc-macro2", "quote", @@ -2700,3 +2779,17 @@ name = "zeroize" version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] From fee0b62b09a75afa3d1c1a6c086d91a288b7274d Mon Sep 17 00:00:00 2001 From: Andrey Turkin Date: Mon, 21 Oct 2024 06:47:42 +0300 Subject: [PATCH 2146/3180] Update uutils --- recipes/core/uutils/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/core/uutils/recipe.toml b/recipes/core/uutils/recipe.toml index c62c6ed1..9008fd71 100644 --- a/recipes/core/uutils/recipe.toml +++ b/recipes/core/uutils/recipe.toml @@ -1,6 +1,6 @@ [source] -git = "https://github.com/uutils/coreutils" -rev = "9d82fa3b9abd3d359afae0b6b9eb2a22b93b9a1c" +git = "https://gitlab.redox-os.org/andrey.turkin/uutils.git" +branch = "cc-fix" [build] template = "custom" From cc2800ddc9c33cf7c0029d6ed0b298964ea0723d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 22 Oct 2024 08:23:18 -0600 Subject: [PATCH 2147/3180] cosmic-files: remove winit feature --- recipes/tools/cosmic-files/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/tools/cosmic-files/recipe.toml b/recipes/tools/cosmic-files/recipe.toml index 62f4e51c..a6b481ac 100644 --- a/recipes/tools/cosmic-files/recipe.toml +++ b/recipes/tools/cosmic-files/recipe.toml @@ -17,7 +17,7 @@ export GETTEXT_STATIC=1 --release \ --bin cosmic-files \ --no-default-features \ - --features desktop,winit \ + --features desktop \ -- \ -L "${COOKBOOK_SYSROOT}/lib" \ -C link-arg="-liconv" From 34f328ec0ad7954bc94e12ff05a2bee7a3857641 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 23 Oct 2024 13:20:01 -0600 Subject: [PATCH 2148/3180] Add cosmic-settings --- recipes/tools/cosmic-settings/recipe.toml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 recipes/tools/cosmic-settings/recipe.toml diff --git a/recipes/tools/cosmic-settings/recipe.toml b/recipes/tools/cosmic-settings/recipe.toml new file mode 100644 index 00000000..36f16ed8 --- /dev/null +++ b/recipes/tools/cosmic-settings/recipe.toml @@ -0,0 +1,23 @@ +[source] +git = "https://github.com/pop-os/cosmic-settings.git" +branch = "master" + +[build] +template = "custom" +dependencies = [ + "gettext", +] +script = """ +export GETTEXT_DIR="${COOKBOOK_SYSROOT}" +export GETTEXT_STATIC=1 +PACKAGE_PATH="cosmic-settings" +cookbook_cargo --no-default-features +#TODO: install with just? +APPID="com.system76.CosmicSettings" +mkdir -pv "${COOKBOOK_STAGE}/usr/share/applications/" +sed 's/Categories=COSMIC/Categories=Settings/' "${COOKBOOK_SOURCE}/resources/${APPID}.desktop" > "${COOKBOOK_STAGE}/usr/share/applications/${APPID}.desktop" +mkdir -pv "${COOKBOOK_STAGE}/usr/share/metainfo/" +cp -v "${COOKBOOK_SOURCE}/resources/${APPID}.metainfo.xml" "${COOKBOOK_STAGE}/usr/share/metainfo/" +mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" +cp -rv "${COOKBOOK_SOURCE}/resources/icons/" "${COOKBOOK_STAGE}/usr/share/icons/hicolor/" +""" From 557a3c42c698494ef4ac162937b51b9ae28ed8cd Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 23 Oct 2024 13:56:49 -0600 Subject: [PATCH 2149/3180] cosmic-settings: Install default schema --- recipes/tools/cosmic-settings/recipe.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/recipes/tools/cosmic-settings/recipe.toml b/recipes/tools/cosmic-settings/recipe.toml index 36f16ed8..f729fc82 100644 --- a/recipes/tools/cosmic-settings/recipe.toml +++ b/recipes/tools/cosmic-settings/recipe.toml @@ -18,6 +18,8 @@ mkdir -pv "${COOKBOOK_STAGE}/usr/share/applications/" sed 's/Categories=COSMIC/Categories=Settings/' "${COOKBOOK_SOURCE}/resources/${APPID}.desktop" > "${COOKBOOK_STAGE}/usr/share/applications/${APPID}.desktop" mkdir -pv "${COOKBOOK_STAGE}/usr/share/metainfo/" cp -v "${COOKBOOK_SOURCE}/resources/${APPID}.metainfo.xml" "${COOKBOOK_STAGE}/usr/share/metainfo/" +mkdir -pv "${COOKBOOK_STAGE}/usr/share/" +cp -rv "${COOKBOOK_SOURCE}/resources/default_schema/" "${COOKBOOK_STAGE}/usr/share/cosmic/" mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" cp -rv "${COOKBOOK_SOURCE}/resources/icons/" "${COOKBOOK_STAGE}/usr/share/icons/hicolor/" """ From c244dc1a76003dab4ac88e0778c227cd5bb46ceb Mon Sep 17 00:00:00 2001 From: Dorian Davi Date: Thu, 24 Oct 2024 16:59:41 +0000 Subject: [PATCH 2150/3180] Add libuv library --- recipes/libs/libuv/recipe.toml | 22 ++++ recipes/libs/libuv/redox.patch | 139 +++++++++++++++++++++++ recipes/wip/libs/other/libuv/recipe.toml | 5 - 3 files changed, 161 insertions(+), 5 deletions(-) create mode 100644 recipes/libs/libuv/recipe.toml create mode 100644 recipes/libs/libuv/redox.patch delete mode 100644 recipes/wip/libs/other/libuv/recipe.toml diff --git a/recipes/libs/libuv/recipe.toml b/recipes/libs/libuv/recipe.toml new file mode 100644 index 00000000..c8845341 --- /dev/null +++ b/recipes/libs/libuv/recipe.toml @@ -0,0 +1,22 @@ +[source] +tar = "https://dist.libuv.org/dist/v1.45.0/libuv-v1.45.0.tar.gz" +patches = ["redox.patch"] +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On + -DCMAKE_C_STANDARD=99 + -DBUILD_TESTING=OFF +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/libs/libuv/redox.patch b/recipes/libs/libuv/redox.patch new file mode 100644 index 00000000..eea85fc2 --- /dev/null +++ b/recipes/libs/libuv/redox.patch @@ -0,0 +1,139 @@ +diff -ruwN a/CMakeLists.txt b/CMakeLists.txt +--- a/CMakeLists.txt 2023-05-19 13:21:01.000000000 +0200 ++++ b/CMakeLists.txt 2024-10-23 18:01:06.574850622 +0200 +@@ -1,3 +1,4 @@ ++set (CMAKE_CXX_STANDARD 99) + cmake_minimum_required(VERSION 3.4) + + if(POLICY CMP0091) +diff -ruwN a/src/unix/core.c b/src/unix/core.c +--- a/src/unix/core.c 2023-05-19 13:21:01.000000000 +0200 ++++ b/src/unix/core.c 2024-10-23 18:01:06.575850644 +0200 +@@ -97,6 +97,10 @@ + # include + #endif + ++#if defined(__redox__) ++#define MSG_CMSG_CLOEXEC 0x40000000 //linux specific flag ++#endif ++ + static void uv__run_pending(uv_loop_t* loop); + + /* Verify that uv_buf_t is ABI-compatible with struct iovec. */ +@@ -709,7 +713,8 @@ + defined(__FreeBSD__) || \ + defined(__NetBSD__) || \ + defined(__OpenBSD__) || \ +- defined(__linux__) ++ defined(__linux__) || \ ++ defined(__redox__) + ssize_t rc; + rc = recvmsg(fd, msg, flags | MSG_CMSG_CLOEXEC); + if (rc == -1) +diff -ruwN a/src/unix/fs.c b/src/unix/fs.c +--- a/src/unix/fs.c 2023-05-19 13:21:01.000000000 +0200 ++++ b/src/unix/fs.c 2024-10-23 18:01:06.579850732 +0200 +@@ -87,7 +87,8 @@ + defined(__MVS__) || \ + defined(__NetBSD__) || \ + defined(__HAIKU__) || \ +- defined(__QNX__) ++ defined(__QNX__) || \ ++ defined(__redox__) + # include + #else + # include +@@ -648,13 +649,13 @@ + defined(__MVS__) || \ + defined(__NetBSD__) || \ + defined(__HAIKU__) || \ +- defined(__QNX__) ++ defined(__QNX__) || \ ++ defined(__redox__) + struct statvfs buf; + + if (0 != statvfs(req->path, &buf)) + #else + struct statfs buf; +- + if (0 != statfs(req->path, &buf)) + #endif /* defined(__sun) */ + return -1; +@@ -670,7 +671,8 @@ + defined(__OpenBSD__) || \ + defined(__NetBSD__) || \ + defined(__HAIKU__) || \ +- defined(__QNX__) ++ defined(__QNX__) || \ ++ defined(__redox__) + stat_fs->f_type = 0; /* f_type is not supported. */ + #else + stat_fs->f_type = buf.f_type; +diff -ruwN a/src/unix/stream.c b/src/unix/stream.c +--- a/src/unix/stream.c 2023-05-19 13:21:01.000000000 +0200 ++++ b/src/unix/stream.c 2024-10-23 18:01:06.580850754 +0200 +@@ -29,7 +29,14 @@ + #include + + #include ++#if defined(__redox__) ++#define _GNU_SOURCE ++#include + #include ++#include ++#else ++#include ++#endif + #include + #include + #include +@@ -39,6 +46,7 @@ + # include + # include + # include ++#endif + + /* Forward declaration */ + typedef struct uv__stream_select_s uv__stream_select_t; +@@ -58,7 +66,6 @@ + fd_set* swrite; + size_t swrite_sz; + }; +-#endif /* defined(__APPLE__) */ + + union uv__cmsg { + struct cmsghdr hdr; +diff -ruwN a/src/unix/udp.c b/src/unix/udp.c +--- a/src/unix/udp.c 2023-05-19 13:21:01.000000000 +0200 ++++ b/src/unix/udp.c 2024-10-23 18:08:23.796492449 +0200 +@@ -31,6 +31,12 @@ + #include + #endif + #include ++#if defined(__redox__) ++#include ++#include ++#include ++#include ++#endif + + #if defined(IPV6_JOIN_GROUP) && !defined(IPV6_ADD_MEMBERSHIP) + # define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP +@@ -937,7 +943,16 @@ + return 0; + } + +- ++#if defined(__redox__) ++// Define the types ++typedef uint64_t ULONG; // equivalent to Rust's u64 ++ ++typedef struct group_source_req { ++ ULONG gsr_interface; ++ struct sockaddr_storage gsr_group; // Use the struct keyword here ++ struct sockaddr_storage gsr_source; // Use the struct keyword here ++} GROUP_SOURCE_REQ, *PGROUP_SOURCE_REQ; ++#endif + static int uv__udp_set_source_membership6(uv_udp_t* handle, + const struct sockaddr_in6* multicast_addr, + const char* interface_addr, diff --git a/recipes/wip/libs/other/libuv/recipe.toml b/recipes/wip/libs/other/libuv/recipe.toml deleted file mode 100644 index 5d6685d6..00000000 --- a/recipes/wip/libs/other/libuv/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO missing script for building -[source] -tar = "https://dist.libuv.org/dist/v1.45.0/libuv-v1.45.0.tar.gz" -[build] -template = "custom" From f398a63418c5f4609b9de71c960aab4c73f3809e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 25 Oct 2024 12:31:14 +0000 Subject: [PATCH 2151/3180] Add recipes --- .../graphics/converters/vtracer/recipe.toml | 8 ++++++ recipes/wip/services/qpwgraph/recipe.toml | 26 +++++++++++++++++++ recipes/wip/sound/easy-effects/recipe.toml | 15 +++++++++++ recipes/wip/sound/sonobus/recipe.toml | 24 +++++++++++++++++ 4 files changed, 73 insertions(+) create mode 100644 recipes/wip/graphics/converters/vtracer/recipe.toml create mode 100644 recipes/wip/services/qpwgraph/recipe.toml create mode 100644 recipes/wip/sound/easy-effects/recipe.toml create mode 100644 recipes/wip/sound/sonobus/recipe.toml diff --git a/recipes/wip/graphics/converters/vtracer/recipe.toml b/recipes/wip/graphics/converters/vtracer/recipe.toml new file mode 100644 index 00000000..f28ae1c9 --- /dev/null +++ b/recipes/wip/graphics/converters/vtracer/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/visioncortex/vtracer" +[build] +template = "custom" +script = """ +cookbook_cargo_packages vtracer +""" diff --git a/recipes/wip/services/qpwgraph/recipe.toml b/recipes/wip/services/qpwgraph/recipe.toml new file mode 100644 index 00000000..b8a48fbf --- /dev/null +++ b/recipes/wip/services/qpwgraph/recipe.toml @@ -0,0 +1,26 @@ +#TODO maybe wrong script +# build instructions - https://gitlab.freedesktop.org/rncbc/qpwgraph#building +[source] +git = "https://gitlab.freedesktop.org/rncbc/qpwgraph" +rev = "9fead6eff8c5831d66f618b2e8e195c94d5c22e6" +[build] +template = "custom" +dependencies = [ + "qt6-base", + "pipewire", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/sound/easy-effects/recipe.toml b/recipes/wip/sound/easy-effects/recipe.toml new file mode 100644 index 00000000..adc0d59d --- /dev/null +++ b/recipes/wip/sound/easy-effects/recipe.toml @@ -0,0 +1,15 @@ +#TODO missing dependencies - https://github.com/wwmm/easyeffects#effects-available +#TODO build instructions - https://github.com/wwmm/easyeffects/wiki/Installation-from-Source +[source] +git = "https://github.com/wwmm/easyeffects" +rev = "4c35ba8c385723fdefc81ad8fcb816eb965fe1d8" +[build] +template = "custom" +dependencies = [ + "libsamplerate", + "libsndfile", + "fftw", + "speexdsp", + "nohnmann-json", + "tbb", +] diff --git a/recipes/wip/sound/sonobus/recipe.toml b/recipes/wip/sound/sonobus/recipe.toml new file mode 100644 index 00000000..8b64a2fa --- /dev/null +++ b/recipes/wip/sound/sonobus/recipe.toml @@ -0,0 +1,24 @@ +#TODO make all dependencies work +#TODO workaround the ALSA and JACK dependencies +#TODO patch the install.sh to use the COOKBOOK_STAGE envivar +#TODO expose the cross-compilation environment variables to the build scripts +# build instructions - https://github.com/sonosaurus/sonobus/blob/main/linux/BUILDING.md +[source] +git = "https://github.com/sonosaurus/sonobus" +[build] +template = "custom" +dependencies = [ + "libopus", + "freetype2", + "curl", + "libx11", + "libxinerama", + "libxrandr", + "libxext", + "libxcursor", +] +script = """ +COOKBOOK_SOURCE="${COOKBOOK_SOURCE}/linux" +./build.sh +./install.sh +""" From 36e7ac47df4ce613fd20dbcb051d82642c673809 Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Fri, 25 Oct 2024 13:20:22 +0000 Subject: [PATCH 2152/3180] package(games): OpenTyrian (1995/2004) --- recipes/games/opentyrian/manifest | 4 ++ recipes/games/opentyrian/recipe.toml | 50 +++++++++++++++++++ recipes/games/opentyrian/redox.patch | 60 +++++++++++++++++++++++ recipes/games/opentyrian/tyrian21.zip.sha | 1 + 4 files changed, 115 insertions(+) create mode 100644 recipes/games/opentyrian/manifest create mode 100644 recipes/games/opentyrian/recipe.toml create mode 100644 recipes/games/opentyrian/redox.patch create mode 100644 recipes/games/opentyrian/tyrian21.zip.sha diff --git a/recipes/games/opentyrian/manifest b/recipes/games/opentyrian/manifest new file mode 100644 index 00000000..bcda89e3 --- /dev/null +++ b/recipes/games/opentyrian/manifest @@ -0,0 +1,4 @@ +name=OpenTyrian +category=Games +binary=/usr/games/opentyrian +icon=/ui/icons/apps/opentyrian.png diff --git a/recipes/games/opentyrian/recipe.toml b/recipes/games/opentyrian/recipe.toml new file mode 100644 index 00000000..be33f984 --- /dev/null +++ b/recipes/games/opentyrian/recipe.toml @@ -0,0 +1,50 @@ +# Version date: 02-August-2024 +# +# Notes: +# As Tyrian is an ancient, sprite based game, the code isn't updated +# super frequently. So instead of just pinning the version to the last +# official release in 2022, I'm pulling from main because it's unlikely +# anything will break. The last two commits were small fixes, one in 2023 +# and one in 2024. + +[source] +git = "https://github.com/opentyrian/opentyrian" +patches = [ "redox.patch" ] + +[build] +template = "custom" +dependencies = [ + "llvm18", + "liborbital", + "mesa", + "sdl2", + "zlib", + # "sdl2-net" +] +script = """ +# Build system is only a standalone Makefile +COOKBOOK_CONFIGURE="true" +COOKBOOK_CONFIGURE_FLAGS="" + +# See Makefile for variables to override +export PKG_CONFIG="${TARGET}-pkg-config" +ASSETSDIR="${COOKBOOK_STAGE}/usr/share/games/tyrian" +export WITH_NETWORK=false +export REDOX_OVERRIDE=true +export prefix="/usr" +export bindir="${prefix}/games" +export icondir="/ui/icons/apps" +export gamesdir="${prefix}/share/games" + +# Prepare the sources and download Tyrian (freeware) +rsync -av --delete "${COOKBOOK_SOURCE}/" "${COOKBOOK_RECIPE}/tyrian21.zip.sha" ./ +mkdir -p "${ASSETSDIR}" +curl -OL https://camanis.net/tyrian/tyrian21.zip +sha256sum -c tyrian21.zip.sha +unzip -jd "${ASSETSDIR}" tyrian21.zip + +# The build system doesn't automatically apply patches to cloned repositories +git apply "${COOKBOOK_RECIPE}/redox.patch" + +cookbook_configure +""" diff --git a/recipes/games/opentyrian/redox.patch b/recipes/games/opentyrian/redox.patch new file mode 100644 index 00000000..e0de2aec --- /dev/null +++ b/recipes/games/opentyrian/redox.patch @@ -0,0 +1,60 @@ +Binary files source/.git/index and source-new/.git/index differ +diff '--color=auto' -rupwN source/Makefile source-new/Makefile +--- source/Makefile 2024-10-21 02:46:06.720225834 -0400 ++++ source-new/Makefile 2024-10-25 01:03:37.283351544 -0400 +@@ -5,10 +5,11 @@ ifneq ($(filter Msys Cygwin, $(shell una + TYRIAN_DIR = C:\\TYRIAN + else + PLATFORM := UNIX +- TYRIAN_DIR = $(gamesdir)/tyrian ++ TYRIAN_DIR ?= $(gamesdir)/tyrian + endif + +-WITH_NETWORK := true ++WITH_NETWORK ?= true ++REDOX_OVERRIDE ?= false + + ################################################################################ + +@@ -114,11 +115,15 @@ installdirs : + mkdir -p $(DESTDIR)$(docdir) + mkdir -p $(DESTDIR)$(man6dir) + mkdir -p $(DESTDIR)$(desktopdir) +- mkdir -p $(DESTDIR)$(icondir)/hicolor/22x22/apps +- mkdir -p $(DESTDIR)$(icondir)/hicolor/24x24/apps +- mkdir -p $(DESTDIR)$(icondir)/hicolor/32x32/apps +- mkdir -p $(DESTDIR)$(icondir)/hicolor/48x48/apps +- mkdir -p $(DESTDIR)$(icondir)/hicolor/128x128/apps ++ if [ "$(REDOX_OVERRIDE)" = "true" ]; then\ ++ mkdir -p $(DESTDIR)$(icondir);\ ++ else\ ++ mkdir -p $(DESTDIR)$(icondir)/hicolor/22x22/apps;\ ++ mkdir -p $(DESTDIR)$(icondir)/hicolor/24x24/apps;\ ++ mkdir -p $(DESTDIR)$(icondir)/hicolor/32x32/apps;\ ++ mkdir -p $(DESTDIR)$(icondir)/hicolor/48x48/apps;\ ++ mkdir -p $(DESTDIR)$(icondir)/hicolor/128x128/apps;\ ++ fi;\ + + .PHONY : install + install : $(TARGET) installdirs +@@ -126,11 +131,15 @@ install : $(TARGET) installdirs + $(INSTALL_DATA) NEWS README $(DESTDIR)$(docdir)/ + $(INSTALL_DATA) linux/man/opentyrian.6 $(DESTDIR)$(man6dir)/opentyrian$(man6ext) + $(INSTALL_DATA) linux/opentyrian.desktop $(DESTDIR)$(desktopdir)/ +- $(INSTALL_DATA) linux/icons/tyrian-22.png $(DESTDIR)$(icondir)/hicolor/22x22/apps/opentyrian.png +- $(INSTALL_DATA) linux/icons/tyrian-24.png $(DESTDIR)$(icondir)/hicolor/24x24/apps/opentyrian.png +- $(INSTALL_DATA) linux/icons/tyrian-32.png $(DESTDIR)$(icondir)/hicolor/32x32/apps/opentyrian.png +- $(INSTALL_DATA) linux/icons/tyrian-48.png $(DESTDIR)$(icondir)/hicolor/48x48/apps/opentyrian.png +- $(INSTALL_DATA) linux/icons/tyrian-128.png $(DESTDIR)$(icondir)/hicolor/128x128/apps/opentyrian.png ++ if [ "$(REDOX_OVERRIDE)" = "true" ]; then\ ++ $(INSTALL_DATA) linux/icons/tyrian-32.png $(DESTDIR)$(icondir)/opentyrian.png;\ ++ else\ ++ $(INSTALL_DATA) linux/icons/tyrian-22.png $(DESTDIR)$(icondir)/hicolor/22x22/apps/opentyrian.png;\ ++ $(INSTALL_DATA) linux/icons/tyrian-24.png $(DESTDIR)$(icondir)/hicolor/24x24/apps/opentyrian.png;\ ++ $(INSTALL_DATA) linux/icons/tyrian-32.png $(DESTDIR)$(icondir)/hicolor/32x32/apps/opentyrian.png;\ ++ $(INSTALL_DATA) linux/icons/tyrian-48.png $(DESTDIR)$(icondir)/hicolor/48x48/apps/opentyrian.png;\ ++ $(INSTALL_DATA) linux/icons/tyrian-128.png $(DESTDIR)$(icondir)/hicolor/128x128/apps/opentyrian.png;\ ++ fi;\ + + .PHONY : uninstall + uninstall : diff --git a/recipes/games/opentyrian/tyrian21.zip.sha b/recipes/games/opentyrian/tyrian21.zip.sha new file mode 100644 index 00000000..a57cd4a9 --- /dev/null +++ b/recipes/games/opentyrian/tyrian21.zip.sha @@ -0,0 +1 @@ +7790d09a2a3addcd33c66ef063d5900eb81cc9c342f4807eb8356364dd1d9277 tyrian21.zip From c5d235e5797b26a555cb9c410f5db395b46a328f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 26 Oct 2024 08:25:13 +0000 Subject: [PATCH 2153/3180] Add recipes --- .../wip/dev/build-system/ccache/recipe.toml | 30 +++++++++++++ .../game-console/ps2/play/recipe.toml | 29 +++++++++++++ recipes/wip/sound/audio-sharing/recipe.toml | 12 ++++++ recipes/wip/sound/mixxx/recipe.toml | 42 +++++++++++++++++++ 4 files changed, 113 insertions(+) create mode 100644 recipes/wip/dev/build-system/ccache/recipe.toml create mode 100644 recipes/wip/emulators/game-console/ps2/play/recipe.toml create mode 100644 recipes/wip/sound/audio-sharing/recipe.toml create mode 100644 recipes/wip/sound/mixxx/recipe.toml diff --git a/recipes/wip/dev/build-system/ccache/recipe.toml b/recipes/wip/dev/build-system/ccache/recipe.toml new file mode 100644 index 00000000..6e12c230 --- /dev/null +++ b/recipes/wip/dev/build-system/ccache/recipe.toml @@ -0,0 +1,30 @@ +#TODO maybe incomplete script +#TODO missing dependencies - https://github.com/ccache/ccache/blob/master/doc/INSTALL.md#dependencies +# build instructions - https://github.com/ccache/ccache/blob/master/doc/INSTALL.md +[source] +tar = "https://github.com/ccache/ccache/releases/download/v4.10.2/ccache-4.10.2.tar.gz" +[build] +template = "custom" +dependencies = [ + "libfmt", + "xxhash", + "zstd", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On + -D STATIC_LINK=ON + -D ENABLE_TESTING=OFF + -D REDIS_STORAGE_BACKEND=OFF +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/emulators/game-console/ps2/play/recipe.toml b/recipes/wip/emulators/game-console/ps2/play/recipe.toml new file mode 100644 index 00000000..b8e47b7e --- /dev/null +++ b/recipes/wip/emulators/game-console/ps2/play/recipe.toml @@ -0,0 +1,29 @@ +#TODO not compiled or tested +# build instructions - https://github.com/jpd002/Play-#building-for-unix +[source] +git = "https://github.com/jpd002/Play-" +[build] +template = "custom" +dependencies = [ + "openal", + "libevdev", + "freealut", + "qt5-base", + "qt5-x11extras", + "sqlite3", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/sound/audio-sharing/recipe.toml b/recipes/wip/sound/audio-sharing/recipe.toml new file mode 100644 index 00000000..48603b87 --- /dev/null +++ b/recipes/wip/sound/audio-sharing/recipe.toml @@ -0,0 +1,12 @@ +#TODO missing script for meson +# build instructions - https://gitlab.gnome.org/World/AudioSharing#building-it-manually +[source] +git = "https://gitlab.gnome.org/World/AudioSharing" +[build] +template = "custom" +dependencies = [ + "gtk4", + "glib", + "libadwaita", + "gstreamer", +] diff --git a/recipes/wip/sound/mixxx/recipe.toml b/recipes/wip/sound/mixxx/recipe.toml new file mode 100644 index 00000000..d6bb852e --- /dev/null +++ b/recipes/wip/sound/mixxx/recipe.toml @@ -0,0 +1,42 @@ +#TODO incomplete script +#TODO missing dependencies - https://github.com/mixxxdj/mixxx/blob/main/tools/debian_buildenv.sh +# build instructions - https://github.com/mixxxdj/mixxx/wiki/Compiling%20on%20Linux +[source] +git = "https://github.com/mixxxdj/mixxx" +branch = "2.4" +[build] +template = "custom" +dependencies = [ + "fftw", + "libflac", + "mesa", + "libhidapi", + "libmad", + "libopus", + "libopusfile", + "protobuf", + "qt6-base", + "qt6-svg", + "qt6-declarative", + "qt6-3d", + "librubberband", + "libsndfile", + "sqlite3", + "openssl1", + "portaudio", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" From 9a93aab9d1a5ab1d78c55d37b0bf851a32daba73 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 26 Oct 2024 10:48:38 +0000 Subject: [PATCH 2154/3180] Add recipes --- recipes/wip/games/music/composer/recipe.toml | 25 +++++++++++ .../wip/games/music/performous/recipe.toml | 41 +++++++++++++++++++ recipes/wip/games/music/stepmania/recipe.toml | 40 ++++++++++++++++++ .../upscaling/jdpixelupscaler/recipe.toml | 10 +++++ 4 files changed, 116 insertions(+) create mode 100644 recipes/wip/games/music/composer/recipe.toml create mode 100644 recipes/wip/games/music/performous/recipe.toml create mode 100644 recipes/wip/games/music/stepmania/recipe.toml create mode 100644 recipes/wip/image/upscaling/jdpixelupscaler/recipe.toml diff --git a/recipes/wip/games/music/composer/recipe.toml b/recipes/wip/games/music/composer/recipe.toml new file mode 100644 index 00000000..c44ceeb3 --- /dev/null +++ b/recipes/wip/games/music/composer/recipe.toml @@ -0,0 +1,25 @@ +#TODO maybe incomplete script +# build instructions - https://github.com/performous/performous/wiki/Composer +[source] +git = "https://github.com/performous/composer" +[build] +template = "custom" +dependencies = [ + "qt5-base", + "ffmpeg6", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/games/music/performous/recipe.toml b/recipes/wip/games/music/performous/recipe.toml new file mode 100644 index 00000000..98d11372 --- /dev/null +++ b/recipes/wip/games/music/performous/recipe.toml @@ -0,0 +1,41 @@ +#TODO maybe incomplete script +# build instructions - https://github.com/performous/performous/wiki/Building-and-installing-from-source#build-and-install +# dependencies - https://github.com/performous/performous/wiki/Building-and-installing-from-source#installing-build-dependencies +[source] +git = "https://github.com/performous/performous" +branch = "1.3.1" +[build] +template = "custom" +dependencies = [ + "openblas", + "fftw", + "libicu", + "libepoxy", + "sdl2", + "freetype2", + "pango", + "librsvg", + "libxml2", + "ffmpeg6", + "libjpeg", + "portaudio", + "boost", + "nlohmann-json", + "aubio", + "libfmt", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/games/music/stepmania/recipe.toml b/recipes/wip/games/music/stepmania/recipe.toml new file mode 100644 index 00000000..c36e5dd4 --- /dev/null +++ b/recipes/wip/games/music/stepmania/recipe.toml @@ -0,0 +1,40 @@ +#TODO maybe incomplete script +# build instructions - https://github.com/stepmania/stepmania/wiki/Compiling-StepMania-Linux +# dependencies - https://github.com/stepmania/stepmania/wiki/Linux-Dependencies +[source] +git = "https://github.com/stepmania/stepmania" +[build] +template = "custom" +dependencies = [ + "mesa", + "mesa-glu", + "glew", + "libx11", + "libxtst", + "libxrandr", + "libpng", + "libjpeg", + "zlib", + "bzip2", + "libogg", + "libvorbis", + "pulseaudio", + "libiberty", + "gtk3", + "libmad", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/image/upscaling/jdpixelupscaler/recipe.toml b/recipes/wip/image/upscaling/jdpixelupscaler/recipe.toml new file mode 100644 index 00000000..7399f872 --- /dev/null +++ b/recipes/wip/image/upscaling/jdpixelupscaler/recipe.toml @@ -0,0 +1,10 @@ +#TODO maybe incomplete script +#TODO determine the dependencies +[source] +git = "https://codeberg.org/JakobDev/jdPixelUpscaler" +rev = "05eb4f3a4a9d24b6d818522483d88caa6b201e2e" +[build] +template = "custom" +dependencies = [ + "qt6-base", +] From ac3db0c45153e7a168d8984783b12c83a26794ff Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 26 Oct 2024 11:59:34 +0000 Subject: [PATCH 2155/3180] Add recipes --- .../game-console/nintendo/lime3ds/recipe.toml | 30 +++++++++++++++++++ .../wip/graphics/editors/pencil2d/recipe.toml | 12 ++++++++ recipes/wip/image/editors/xpano/recipe.toml | 29 ++++++++++++++++++ recipes/wip/web/zen-browser/recipe.toml | 8 +++++ 4 files changed, 79 insertions(+) create mode 100644 recipes/wip/emulators/game-console/nintendo/lime3ds/recipe.toml create mode 100644 recipes/wip/graphics/editors/pencil2d/recipe.toml create mode 100644 recipes/wip/image/editors/xpano/recipe.toml create mode 100644 recipes/wip/web/zen-browser/recipe.toml diff --git a/recipes/wip/emulators/game-console/nintendo/lime3ds/recipe.toml b/recipes/wip/emulators/game-console/nintendo/lime3ds/recipe.toml new file mode 100644 index 00000000..773a72b3 --- /dev/null +++ b/recipes/wip/emulators/game-console/nintendo/lime3ds/recipe.toml @@ -0,0 +1,30 @@ +#TODO not compiled or tested +# build instructions - https://github.com/Lime3DS/Lime3DS/wiki/Building-From-Source#linux +[source] +git = "https://github.com/Lime3DS/Lime3DS" +[build] +template = "custom" +dependencies = [ + "sdl2", + "qt6-base", + "qt6-multimedia", + "portaudio", + "libx11", + "libxext", + "pipewire", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/graphics/editors/pencil2d/recipe.toml b/recipes/wip/graphics/editors/pencil2d/recipe.toml new file mode 100644 index 00000000..38d91b98 --- /dev/null +++ b/recipes/wip/graphics/editors/pencil2d/recipe.toml @@ -0,0 +1,12 @@ +#TODO missing script for qmake and gnu make +# build instructions - https://dev.pencil2d.org/build_linux.html +[source] +git = "https://github.com/pencil2d/pencil" +branch = "release/0.7.0" +[build] +template = "custom" +dependencies = [ + "qt6-base", + "qt6-multimedia", + "qt6-svg", +] diff --git a/recipes/wip/image/editors/xpano/recipe.toml b/recipes/wip/image/editors/xpano/recipe.toml new file mode 100644 index 00000000..a45f938d --- /dev/null +++ b/recipes/wip/image/editors/xpano/recipe.toml @@ -0,0 +1,29 @@ +#TODO satisfy the dependencies and complete the script +# build instructions - https://github.com/krupkat/xpano#development +# linux script - https://github.com/krupkat/xpano/blob/main/misc/build/build-ubuntu-22.sh +[source] +git = "https://github.com/krupkat/xpano" +rev = "5e626f66d2670a7f3fd04e805610ef98a506e401" +[build] +template = "custom" +dependencies = [ + "gtk3", + "opencv4", + "sdl2", + "libspdlog", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/web/zen-browser/recipe.toml b/recipes/wip/web/zen-browser/recipe.toml new file mode 100644 index 00000000..fd5d8c38 --- /dev/null +++ b/recipes/wip/web/zen-browser/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for npm +# build instructions - https://docs.zen-browser.app/building +#TODO analyze the dependencies +[source] +git = "https://github.com/zen-browser/desktop" +branch = "stable" +[build] +template = "custom" From c6912ef25c72b6e01e82b84fa93b3347c7287a11 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 27 Oct 2024 04:16:04 +0000 Subject: [PATCH 2156/3180] Add recipes --- recipes/wip/libs/other/libspdlog/recipe.toml | 20 ++++++++++++++++ recipes/wip/net/remote/jupii/recipe.toml | 23 +++++++++++++++++++ .../gpu-screen-recorder-gtk/recipe.toml | 14 +++++++++++ .../recorders/gpu-screen-recorder/recipe.toml | 20 ++++++++++++++++ recipes/wip/science/siril/recipe.toml | 14 +++++++++++ 5 files changed, 91 insertions(+) create mode 100644 recipes/wip/libs/other/libspdlog/recipe.toml create mode 100644 recipes/wip/net/remote/jupii/recipe.toml create mode 100644 recipes/wip/recorders/gpu-screen-recorder-gtk/recipe.toml create mode 100644 recipes/wip/recorders/gpu-screen-recorder/recipe.toml create mode 100644 recipes/wip/science/siril/recipe.toml diff --git a/recipes/wip/libs/other/libspdlog/recipe.toml b/recipes/wip/libs/other/libspdlog/recipe.toml new file mode 100644 index 00000000..79400034 --- /dev/null +++ b/recipes/wip/libs/other/libspdlog/recipe.toml @@ -0,0 +1,20 @@ +#TODO maybe incomplete script +[source] +git = "https://github.com/gabime/spdlog" +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/net/remote/jupii/recipe.toml b/recipes/wip/net/remote/jupii/recipe.toml new file mode 100644 index 00000000..9169263c --- /dev/null +++ b/recipes/wip/net/remote/jupii/recipe.toml @@ -0,0 +1,23 @@ +#TODO maybe incomplete script +#TODO missing dependencies? - https://github.com/mkiol/Jupii#libraries +[source] +git = "https://github.com/mkiol/Jupii" +rev = "ed80ca0ea29081a2bff038faf4884e3acabb14b7" +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On + -DWITH_DESKTOP=ON +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/recorders/gpu-screen-recorder-gtk/recipe.toml b/recipes/wip/recorders/gpu-screen-recorder-gtk/recipe.toml new file mode 100644 index 00000000..c2fc5c68 --- /dev/null +++ b/recipes/wip/recorders/gpu-screen-recorder-gtk/recipe.toml @@ -0,0 +1,14 @@ +#TODO not compiled or tested +[source] +git = "https://git.dec05eba.com/gpu-screen-recorder-gtk" +rev = "7fb7608b720068d3c114330e8d274b04ef310cf2" +[build] +template = "custom" +dependencies = [ + "gtk3", + "libx11", +] +[package] +dependencies = [ + "gpu-screen-recorder", +] diff --git a/recipes/wip/recorders/gpu-screen-recorder/recipe.toml b/recipes/wip/recorders/gpu-screen-recorder/recipe.toml new file mode 100644 index 00000000..7c43efed --- /dev/null +++ b/recipes/wip/recorders/gpu-screen-recorder/recipe.toml @@ -0,0 +1,20 @@ +#TODO missing script for meson +[source] +git = "https://git.dec05eba.com/gpu-screen-recorder" +rev = "422f214283ba50649acca4d9b5a9778d313fe05b" +[build] +template = "custom" +dependencies = [ + "mesa", + "libvulkan", + "ffmpeg6", + "libx11", + "libxcomposite", + "libxrandr", + "libxfixes", + "libxdamage", + "pulseaudio", + "libva", + "libcap", + "libwayland", +] diff --git a/recipes/wip/science/siril/recipe.toml b/recipes/wip/science/siril/recipe.toml new file mode 100644 index 00000000..21d6258d --- /dev/null +++ b/recipes/wip/science/siril/recipe.toml @@ -0,0 +1,14 @@ +#TODO missing cross-compilation script +#TODO missing dependencies - https://gitlab.com/free-astro/siril#requirements +# build instructions - https://gitlab.com/free-astro/siril#building-siril-for-gnulinux +[source] +tar = "https://free-astro.org/download/siril-1.2.4.tar.bz2" +[build] +template = "custom" +dependencies = [ + "glib", + "gtk3", + "liblcms", + "fftw", + "opencv4", +] From 224ed0bc9969e45faacab3598819ded40d802cf3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 28 Oct 2024 01:03:12 +0000 Subject: [PATCH 2157/3180] Add recipes --- recipes/wip/science/gaia-sky/recipe.toml | 12 ++++++++++++ recipes/wip/services/jack/recipe.toml | 8 ++++++++ recipes/wip/sound/mousai/recipe.toml | 12 ++++++++++++ recipes/wip/sys-info/mission-center/recipe.toml | 11 +++++++++++ 4 files changed, 43 insertions(+) create mode 100644 recipes/wip/science/gaia-sky/recipe.toml create mode 100644 recipes/wip/services/jack/recipe.toml create mode 100644 recipes/wip/sound/mousai/recipe.toml create mode 100644 recipes/wip/sys-info/mission-center/recipe.toml diff --git a/recipes/wip/science/gaia-sky/recipe.toml b/recipes/wip/science/gaia-sky/recipe.toml new file mode 100644 index 00000000..f8398037 --- /dev/null +++ b/recipes/wip/science/gaia-sky/recipe.toml @@ -0,0 +1,12 @@ +#TODO not compiled or tested +[source] +tar = "https://gaia.ari.uni-heidelberg.de/gaiasky/releases/latest/gaiasky-3.6.4-2.3bfeec0f9.tar.gz" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/gaia-sky +mkdir -pv "${COOKBOOK_STAGE}"/usr/bin +cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/share/gaia-sky +echo "#!/usr/bin/env bash \n /usr/share/gaia-sky" > "${COOKBOOK_STAGE}"/usr/bin/gaia-sky +chmod a+x "${COOKBOOK_STAGE}"/usr/bin/gaia-sky +""" diff --git a/recipes/wip/services/jack/recipe.toml b/recipes/wip/services/jack/recipe.toml new file mode 100644 index 00000000..1e5dccd8 --- /dev/null +++ b/recipes/wip/services/jack/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for waf +#TODO discover how to build +#TODO discover if it has external dependencies +[source] +git = "https://github.com/jackaudio/jack2" +rev = "4f58969432339a250ce87fe855fb962c67d00ddb" +[build] +template = "custom" diff --git a/recipes/wip/sound/mousai/recipe.toml b/recipes/wip/sound/mousai/recipe.toml new file mode 100644 index 00000000..034a5dfe --- /dev/null +++ b/recipes/wip/sound/mousai/recipe.toml @@ -0,0 +1,12 @@ +#TODO missing script for meson +[source] +git = "https://github.com/SeaDve/Mousai" +[build] +template = "custom" +dependencies = [ + "glib", + "gtk4", + "libadwaita", + "gstreamer", + "libsoup", +] diff --git a/recipes/wip/sys-info/mission-center/recipe.toml b/recipes/wip/sys-info/mission-center/recipe.toml new file mode 100644 index 00000000..4016ee5c --- /dev/null +++ b/recipes/wip/sys-info/mission-center/recipe.toml @@ -0,0 +1,11 @@ +#TODO missing script for meson +#TODO missing dependencies +# build instructions - https://gitlab.com/mission-center-devs/mission-center#building---native +[source] +git = "https://gitlab.com/mission-center-devs/mission-center" +[build] +template = "custom" +dependencies = [ + "gtk4", + "libadwaita", +] From 6a4ab2283d6353bd69b01aa17656d88476220a9d Mon Sep 17 00:00:00 2001 From: doriancodes Date: Tue, 29 Oct 2024 21:05:49 +0100 Subject: [PATCH 2158/3180] add luv and lua-compat-5.3 --- recipes/libs/lua-compat-5.3/recipe.toml | 11 ++++++++++ recipes/libs/luv/recipe.toml | 27 +++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 recipes/libs/lua-compat-5.3/recipe.toml create mode 100644 recipes/libs/luv/recipe.toml diff --git a/recipes/libs/lua-compat-5.3/recipe.toml b/recipes/libs/lua-compat-5.3/recipe.toml new file mode 100644 index 00000000..edbca1c4 --- /dev/null +++ b/recipes/libs/lua-compat-5.3/recipe.toml @@ -0,0 +1,11 @@ +[source] +git = "https://github.com/lunarmodules/lua-compat-5.3.git" +[build] +template = "custom" +dependencies = [ + "lua54" +] +script = """ +mkdir -pv "${COOKBOOK_STAGE}/include" +cp -r "$COOKBOOK_SOURCE/c-api/." "${COOKBOOK_STAGE}/include" +""" diff --git a/recipes/libs/luv/recipe.toml b/recipes/libs/luv/recipe.toml new file mode 100644 index 00000000..93973951 --- /dev/null +++ b/recipes/libs/luv/recipe.toml @@ -0,0 +1,27 @@ +[source] +git = "https://github.com/luvit/luv.git" +[build] +template = "custom" +dependencies = [ + "lua54", + "libuv", + "lua-compat-5.3" +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DBUILD_MODULE=OFF + -DBUILD_STATIC_LIBS=ON + -DWITH_SHARED_LIBUV=ON + -DWITH_LUA_ENGINE=Lua + -DLUA_BUILD_TYPE=System + -DLUA_COMPAT53_DIR="${COOKBOOK_SYSROOT}/bin" + -DCMAKE_BUILD_TYPE=RelWithDebInfo + -DLIBUV_LIBRARIES="${COOKBOOK_SYSROOT}/usr/lib/libuv.a" + -DLIBUV_INCLUDE_DIR="${COOKBOOK_SYSROOT}/usr/include" + -DLUA_INCLUDE_DIR="${COOKBOOK_SYSROOT}/include" + -DLUV_INCLUDE_DIR="${COOKBOOK_SYSROOT}/include" +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" From 223ba2b908276ff36221438ae072f8e24c9efd27 Mon Sep 17 00:00:00 2001 From: Dorian Davi Date: Tue, 29 Oct 2024 23:02:38 +0000 Subject: [PATCH 2159/3180] Luarocks port --- recipes/dev/lua54/recipe.toml | 4 +--- recipes/dev/luarocks/recipe.toml | 18 ++++++++++++++++++ recipes/wip/dev/lua-tools/luarocks/recipe.toml | 6 ------ 3 files changed, 19 insertions(+), 9 deletions(-) create mode 100644 recipes/dev/luarocks/recipe.toml delete mode 100644 recipes/wip/dev/lua-tools/luarocks/recipe.toml diff --git a/recipes/dev/lua54/recipe.toml b/recipes/dev/lua54/recipe.toml index d51b3aa1..fb52321a 100644 --- a/recipes/dev/lua54/recipe.toml +++ b/recipes/dev/lua54/recipe.toml @@ -11,7 +11,5 @@ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ CC="${TARGET}-gcc -std=gnu99" \ RANLIB="${TARGET}-ranlib" \ SYSLDFLAGS="-static" \ - generic -mkdir -pv "${COOKBOOK_STAGE}/bin" -cp src/lua src/luac "${COOKBOOK_STAGE}/bin" + install INSTALL_TOP="${COOKBOOK_STAGE}" """ diff --git a/recipes/dev/luarocks/recipe.toml b/recipes/dev/luarocks/recipe.toml new file mode 100644 index 00000000..7440a572 --- /dev/null +++ b/recipes/dev/luarocks/recipe.toml @@ -0,0 +1,18 @@ +[source] +git = "https://github.com/luarocks/luarocks.git" +[build] +template = "custom" +dependencies = [ +"lua54" +] +script = """ + +COOKBOOK_CONFIGURE_FLAGS=( + --sysconfdir=$COOKBOOK_SYSROOT + --with-lua-include=$COOKBOOK_SYSROOT/include + --with-lua-bin=$COOKBOOK_SYSROOT/bin + --with-lua-lib=$COOKBOOK_SYSROOT/lib +) +cd "${COOKBOOK_SOURCE}" +cookbook_configure +""" diff --git a/recipes/wip/dev/lua-tools/luarocks/recipe.toml b/recipes/wip/dev/lua-tools/luarocks/recipe.toml deleted file mode 100644 index 9645e5d9..00000000 --- a/recipes/wip/dev/lua-tools/luarocks/recipe.toml +++ /dev/null @@ -1,6 +0,0 @@ -#TODO not compiled or tested -# build instructions - https://github.com/luarocks/luarocks/wiki/Installation-instructions-for-Unix -[source] -tar = "https://luarocks.org/releases/luarocks-3.11.1.tar.gz" -[build] -template = "configure" From a5fddbb4cc3d79c2bc49af58b33af630552dcd0a Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Wed, 30 Oct 2024 02:29:29 -0400 Subject: [PATCH 2160/3180] Add working build script for GLEW I left GLEW in WIP until one of us tests it. However, it compiles fine so I'll submit it for now. --- recipes/wip/libs/other/glew/recipe.toml | 29 ++++++++++++++++++++----- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/recipes/wip/libs/other/glew/recipe.toml b/recipes/wip/libs/other/glew/recipe.toml index ac93c3ee..ec0fcb39 100644 --- a/recipes/wip/libs/other/glew/recipe.toml +++ b/recipes/wip/libs/other/glew/recipe.toml @@ -1,10 +1,27 @@ -#TODO missing script for "make", see https://github.com/nigels-com/glew#linux-and-mac -#TODO add the GLEW_OSMESA flag to enable the Mesa off-screen rendering +# TODO Needs testing, but it compiles now + [source] git = "https://github.com/nigels-com/glew" -rev = "9fb23c3e61cbd2d581e33ff7d8579b572b38ee26" +# rev = "9fb23c3e61cbd2d581e33ff7d8579b572b38ee26" + [build] template = "custom" -dependencies = [ - "mesa", -] +dependencies = ["mesa", "mesa-glu"] +script = """ +# Build system is a standalone Makefile +COOKBOOK_CONFIGURE="true" +COOKBOOK_CONFIGURE_FLAGS="" + +# See Makefile for variables to override +export GLEW_PREFIX="/usr" +export GLEW_DEST="/usr" +export GLEW_OSMESA +export PYTHON="python3" + +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ + +# The auto directory needs to be built first and can't be built in parallel +# because the Makefile creates files (using Perl and Python!!) that are needed later +"${COOKBOOK_MAKE}" -C "${COOKBOOK_BUILD}/auto" +cookbook_configure +""" From aab263279bc48c6b0fa71760171354c9f634287c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 30 Oct 2024 16:18:19 -0600 Subject: [PATCH 2161/3180] Enable acpid on all platforms --- recipes/core/drivers-initfs/recipe.toml | 4 ++-- recipes/core/initfs/aarch64-unknown-redox/init.rc | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/core/drivers-initfs/recipe.toml b/recipes/core/drivers-initfs/recipe.toml index bf4fd64e..7f35030d 100644 --- a/recipes/core/drivers-initfs/recipe.toml +++ b/recipes/core/drivers-initfs/recipe.toml @@ -5,12 +5,13 @@ same_as = "../drivers" template = "custom" script = """ BINS=( + acpid fbcond inputd + lived nvmed pcid vesad - lived ) virt_bins() @@ -43,7 +44,6 @@ case "${TARGET}" in ;; x86_64-unknown-redox) x86_common_bins - BINS+=(acpid) ;; aarch64-unknown-redox) aarch64_bins diff --git a/recipes/core/initfs/aarch64-unknown-redox/init.rc b/recipes/core/initfs/aarch64-unknown-redox/init.rc index 0b529102..4943384a 100644 --- a/recipes/core/initfs/aarch64-unknown-redox/init.rc +++ b/recipes/core/initfs/aarch64-unknown-redox/init.rc @@ -11,6 +11,7 @@ fbcond 1 2 logd /scheme/debug /scheme/fbcon/1 stdio /scheme/log ramfs logging +acpid pcid /etc/pcid/initfs.toml lived unset DISK_LIVE_ADDR DISK_LIVE_SIZE From 1f9701e26c1afe17e1ce96166d80adb591ba9953 Mon Sep 17 00:00:00 2001 From: Andrey Turkin Date: Thu, 31 Oct 2024 10:26:26 +0300 Subject: [PATCH 2162/3180] Override RISC-V CFLAGS in cargo.toml Makes RISC-V builds work without cc-rs patch, as apparently CFLAGS take precedence over cc-rs' heuristics --- .cargo/config.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.cargo/config.toml b/.cargo/config.toml index e7c5a8e6..1c0e5fab 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -13,3 +13,6 @@ rustflags = [] [target.riscv64gc-unknown-redox] linker = "riscv64-unknown-redox-gcc" rustflags = [] + +[env] +CFLAGS_riscv64gc_unknown_redox="-march=rv64gc -mabi=lp64d" From 2da760048c26ee2c8cd0c81298f48f776f505273 Mon Sep 17 00:00:00 2001 From: Andrey Turkin Date: Fri, 1 Nov 2024 07:25:11 +0300 Subject: [PATCH 2163/3180] kernel: get rid of custom build recipe in favor of the kernel Makefile --- recipes/core/kernel/recipe.toml | 21 +-------------------- 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/recipes/core/kernel/recipe.toml b/recipes/core/kernel/recipe.toml index 298906b0..38b66b43 100644 --- a/recipes/core/kernel/recipe.toml +++ b/recipes/core/kernel/recipe.toml @@ -4,26 +4,7 @@ git = "https://gitlab.redox-os.org/redox-os/kernel.git" [build] template = "custom" script = """ -export RUST_TARGET_PATH="${COOKBOOK_SOURCE}/targets" -ARCH="$(echo "${GNU_TARGET}" | cut -d - -f1)" -cargo rustc \ - --bin kernel \ - --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ - --target "${COOKBOOK_SOURCE}/targets/${ARCH}-unknown-kernel.json" \ - --release \ - -Z build-std=core,alloc \ - -- \ - -C link-arg=-T -Clink-arg="${COOKBOOK_SOURCE}/linkers/${ARCH}.ld" \ - -C link-arg=-z -Clink-arg=max-page-size=0x1000 \ - --emit link="${PWD}/kernel.all" -"${GNU_TARGET}-objcopy" \ - --only-keep-debug \ - kernel.all \ - kernel.sym -"${GNU_TARGET}-objcopy" \ - --strip-debug \ - kernel.all \ - kernel +make -f ${COOKBOOK_SOURCE}/Makefile mkdir -v "${COOKBOOK_STAGE}/boot" cp -v kernel "${COOKBOOK_STAGE}/boot" """ From 93b4387b237d37a099a5f42a3ea5dcfad56b717c Mon Sep 17 00:00:00 2001 From: Ron Williams Date: Mon, 4 Nov 2024 21:38:32 +0000 Subject: [PATCH 2164/3180] Add benchmarks recipe --- recipes/tests/benchmarks/recipe.toml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 recipes/tests/benchmarks/recipe.toml diff --git a/recipes/tests/benchmarks/recipe.toml b/recipes/tests/benchmarks/recipe.toml new file mode 100644 index 00000000..17e61352 --- /dev/null +++ b/recipes/tests/benchmarks/recipe.toml @@ -0,0 +1,9 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/benchmarks" + +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/benchmarks +cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/share/benchmarks +""" From 1c978c726795381cff0e50dd89570b3873476011 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 5 Nov 2024 16:44:39 +0000 Subject: [PATCH 2165/3180] Rename the hello-world recipe --- recipes/dev/{hello-world => hello-world-examples}/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename recipes/dev/{hello-world => hello-world-examples}/recipe.toml (69%) diff --git a/recipes/dev/hello-world/recipe.toml b/recipes/dev/hello-world-examples/recipe.toml similarity index 69% rename from recipes/dev/hello-world/recipe.toml rename to recipes/dev/hello-world-examples/recipe.toml index 23d7120d..43f16e30 100644 --- a/recipes/dev/hello-world/recipe.toml +++ b/recipes/dev/hello-world-examples/recipe.toml @@ -4,6 +4,6 @@ git = "https://github.com/leachim6/hello-world" [build] template = "custom" script = """ -mkdir -pv "${COOKBOOK_STAGE}"/usr/share/hello-world -cp -rv "${COOKBOOK_SOURCE}"/[#,a-z] "${COOKBOOK_STAGE}"/usr/share/hello-world +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/hello-world-examples +cp -rv "${COOKBOOK_SOURCE}"/[#,a-z] "${COOKBOOK_STAGE}"/usr/share/hello-world-examples """ From f01cb0b43d9cc7dfb61133c2a1a0bc04210c8156 Mon Sep 17 00:00:00 2001 From: bitstr0m Date: Sun, 17 Nov 2024 20:08:59 +0000 Subject: [PATCH 2166/3180] Fix libevent --- recipes/wip/libs/other/libevent/recipe.toml | 16 +++++++++---- recipes/wip/libs/other/libevent/redox.patch | 26 +++++++++++++++++++++ 2 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 recipes/wip/libs/other/libevent/redox.patch diff --git a/recipes/wip/libs/other/libevent/recipe.toml b/recipes/wip/libs/other/libevent/recipe.toml index ac50438b..8b6843e0 100644 --- a/recipes/wip/libs/other/libevent/recipe.toml +++ b/recipes/wip/libs/other/libevent/recipe.toml @@ -1,6 +1,10 @@ -#TODO probably wrong script, see https://github.com/libevent/libevent#cmake-unix +#TODO compiles, not tested [source] tar = "https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz" +patches = [ + "redox.patch" +] + [build] template = "custom" dependencies = [ @@ -11,13 +15,17 @@ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_INSTALL_PREFIX="${COOKBOOK_STAGE}/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On + -DEVENT__LIBRARY_TYPE=STATIC "${COOKBOOK_SOURCE}" ) -cookbook_configure + +# Can't call `cookbook_configure` because it sets DESTDIR (which causes an error) +"${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" +"${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" +"${COOKBOOK_MAKE}" install """ diff --git a/recipes/wip/libs/other/libevent/redox.patch b/recipes/wip/libs/other/libevent/redox.patch new file mode 100644 index 00000000..5fbd6844 --- /dev/null +++ b/recipes/wip/libs/other/libevent/redox.patch @@ -0,0 +1,26 @@ +diff -u --recursive orig/event_tagging.c modified/event_tagging.c +--- orig/event_tagging.c 2019-02-10 21:26:04.000000000 +0000 ++++ modified/event_tagging.c 2024-11-17 14:14:19.474910364 +0000 +@@ -54,9 +54,6 @@ + #include + #include + #include +-#ifndef _WIN32 +-#include +-#endif + #ifdef EVENT__HAVE_UNISTD_H + #include + #endif +diff -u --recursive orig/http.c modified/http.c +--- orig/http.c 2020-07-05 13:01:34.000000000 +0100 ++++ modified/http.c 2024-11-17 14:14:10.834742812 +0000 +@@ -83,9 +83,6 @@ + #include + #include + #include +-#ifndef _WIN32 +-#include +-#endif /* !_WIN32 */ + #include + #ifdef EVENT__HAVE_UNISTD_H + #include From 99d8c6a9bba104ad8eb558a1a1b1a8a1909903db Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Mon, 18 Nov 2024 23:59:29 -0500 Subject: [PATCH 2167/3180] Update OpenJazz * Switch to TOML * Bump version to latest --- recipes/games/openjazz/recipe.sh | 35 ------------------------------ recipes/games/openjazz/recipe.toml | 32 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 35 deletions(-) delete mode 100644 recipes/games/openjazz/recipe.sh create mode 100644 recipes/games/openjazz/recipe.toml diff --git a/recipes/games/openjazz/recipe.sh b/recipes/games/openjazz/recipe.sh deleted file mode 100644 index d16191cf..00000000 --- a/recipes/games/openjazz/recipe.sh +++ /dev/null @@ -1,35 +0,0 @@ -#TODO: support cmake version 20231028 -VERSION=20190106 -TAR="https://github.com/AlisterT/openjazz/releases/download/${VERSION}/openjazz-${VERSION}.tar.xz" -TAR_SHA256="91341adcc4908db12aad6b82d2fb0125429a26585f65d7eb32d403656313eaab" -BUILD_DEPENDS=(sdl1 liborbital zlib) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include -UUSE_SOCKETS -UUSE_SDL_NET" - export CPPFLAGS="$CFLAGS" - export LDFLAGS="-L$sysroot/lib -static" - touch INSTALL NEWS README AUTHORS ChangeLog COPYING - autoreconf -fvi - autoconf - wget -O build-aux/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" - ./configure --build=${BUILD} --host=${HOST} --prefix='' - "$REDOX_MAKE" -j"$($NPROC)" V=1 - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - skip=1 -} diff --git a/recipes/games/openjazz/recipe.toml b/recipes/games/openjazz/recipe.toml new file mode 100644 index 00000000..47098190 --- /dev/null +++ b/recipes/games/openjazz/recipe.toml @@ -0,0 +1,32 @@ +[source] +tar = "https://github.com/AlisterT/openjazz/archive/refs/tags/20240919.tar.gz" +blake3 = "c419066dd7bf50510c5ef0746fc47450ab8f5a17a0010a1bc0ad67d0e63538da" + +[build] +template = "custom" +dependencies = [ + "liborbital", + "libiconv", + "sdl1", + "zlib", +] +script = """ +export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include" +export CXXFLAGS="${CXXFLAGS} -I${COOKBOOK_SYSROOT}/include" + +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=ON + -DCMAKE_CXX_COMPILER="${TARGET}-g++" + -DCMAKE_C_COMPILER="${TARGET}-gcc" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_VERBOSE_MAKEFILE=ON + -DLEGACY_SDL=ON + -DSDL_LIBRARY="-lSDL -lorbital" + -DNETWORK=ON + "${COOKBOOK_SOURCE}" +) + +cookbook_configure +""" From 209455747c5bfaa3968c4693c7e333b99e486d5a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Nov 2024 10:08:23 +0000 Subject: [PATCH 2168/3180] Add a recipe --- .../game-console/ps4/shadPS4/recipe.toml | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 recipes/wip/emulators/game-console/ps4/shadPS4/recipe.toml diff --git a/recipes/wip/emulators/game-console/ps4/shadPS4/recipe.toml b/recipes/wip/emulators/game-console/ps4/shadPS4/recipe.toml new file mode 100644 index 00000000..2b1c631d --- /dev/null +++ b/recipes/wip/emulators/game-console/ps4/shadPS4/recipe.toml @@ -0,0 +1,36 @@ +#TODO maybe incomplete script for cmake +#TODO missing dependencies +# build instructions - https://github.com/shadps4-emu/shadPS4/blob/main/documents/building-linux.md +[source] +git = "https://github.com/shadps4-emu/shadPS4" +[build] +template = "custom" +dependencies = [ + "pulseaudio", + "openal", + "openssl1", + "libedit", + "eudev", + "libevdev", + "sdl2", + "sndio", + "qt6-base", + "qt6-multimedia", + "libvulkan", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On + -DENABLE_QT_GUI=ON +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" From 8568e879fd92434ae1e48744c582cacffff0009a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Nov 2024 11:30:27 +0000 Subject: [PATCH 2169/3180] Fix a recipe --- recipes/wip/ai/nnx/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/wip/ai/nnx/recipe.toml b/recipes/wip/ai/nnx/recipe.toml index a89d357c..b42ca9be 100644 --- a/recipes/wip/ai/nnx/recipe.toml +++ b/recipes/wip/ai/nnx/recipe.toml @@ -3,6 +3,9 @@ git = "https://github.com/webonnx/wonnx" [build] template = "custom" +dependencies = [ + "openssl1", +] script = """ cookbook_cargo_packages wonnx-cli """ From a59c4d16c907e76ddf027e82a6b486d5d84696fc Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Nov 2024 13:18:55 +0000 Subject: [PATCH 2170/3180] Update TODOs --- recipes/wip/ai/nnx/recipe.toml | 2 +- recipes/wip/ai/tgs/recipe.toml | 2 +- recipes/wip/analysis/binsider/recipe.toml | 2 +- recipes/wip/archives/mlar/recipe.toml | 2 +- recipes/wip/benchmarks/cargo/cargo-benchcmp/recipe.toml | 2 +- recipes/wip/codecs/rav1e/recipe.toml | 2 +- recipes/wip/containers/crun-vm/recipe.toml | 2 +- recipes/wip/crypto/data2sound/recipe.toml | 2 +- recipes/wip/crypto/morse2sound/recipe.toml | 2 +- recipes/wip/crypto/qrscan/recipe.toml | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/recipes/wip/ai/nnx/recipe.toml b/recipes/wip/ai/nnx/recipe.toml index b42ca9be..ca9318b4 100644 --- a/recipes/wip/ai/nnx/recipe.toml +++ b/recipes/wip/ai/nnx/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO fs2 crate error [source] git = "https://github.com/webonnx/wonnx" [build] diff --git a/recipes/wip/ai/tgs/recipe.toml b/recipes/wip/ai/tgs/recipe.toml index aba549aa..4a05776a 100644 --- a/recipes/wip/ai/tgs/recipe.toml +++ b/recipes/wip/ai/tgs/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO make libtorch work [source] git = "https://github.com/warpy-ai/tgs" [build] diff --git a/recipes/wip/analysis/binsider/recipe.toml b/recipes/wip/analysis/binsider/recipe.toml index c654bae4..b7f70805 100644 --- a/recipes/wip/analysis/binsider/recipe.toml +++ b/recipes/wip/analysis/binsider/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO async-io and rustix crates error [source] git = "https://github.com/orhun/binsider" [build] diff --git a/recipes/wip/archives/mlar/recipe.toml b/recipes/wip/archives/mlar/recipe.toml index f8e49d76..5fd0cc56 100644 --- a/recipes/wip/archives/mlar/recipe.toml +++ b/recipes/wip/archives/mlar/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/ANSSI-FR/MLA" [build] diff --git a/recipes/wip/benchmarks/cargo/cargo-benchcmp/recipe.toml b/recipes/wip/benchmarks/cargo/cargo-benchcmp/recipe.toml index 90833c27..a9fbc1c1 100644 --- a/recipes/wip/benchmarks/cargo/cargo-benchcmp/recipe.toml +++ b/recipes/wip/benchmarks/cargo/cargo-benchcmp/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested (after cargo update) +#TODO compiled but not tested [source] git = "https://github.com/BurntSushi/cargo-benchcmp" [build] diff --git a/recipes/wip/codecs/rav1e/recipe.toml b/recipes/wip/codecs/rav1e/recipe.toml index 57efb59b..3ee7f537 100644 --- a/recipes/wip/codecs/rav1e/recipe.toml +++ b/recipes/wip/codecs/rav1e/recipe.toml @@ -1,4 +1,4 @@ -#TODO "free(): invalid pointer" error +#TODO "malloc(): invalid size (unsorted)" error [source] git = "https://github.com/xiph/rav1e" [build] diff --git a/recipes/wip/containers/crun-vm/recipe.toml b/recipes/wip/containers/crun-vm/recipe.toml index 5473bb52..c28e391e 100644 --- a/recipes/wip/containers/crun-vm/recipe.toml +++ b/recipes/wip/containers/crun-vm/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO camino crate error # dependencies - https://github.com/containers/crun-vm/blob/main/docs/1-installing.md#from-source [source] git = "https://github.com/containers/crun-vm" diff --git a/recipes/wip/crypto/data2sound/recipe.toml b/recipes/wip/crypto/data2sound/recipe.toml index 5095b0a2..19a8ba25 100644 --- a/recipes/wip/crypto/data2sound/recipe.toml +++ b/recipes/wip/crypto/data2sound/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/TheAwiteb/data2sound" [build] diff --git a/recipes/wip/crypto/morse2sound/recipe.toml b/recipes/wip/crypto/morse2sound/recipe.toml index 3e00e735..d48af2d8 100644 --- a/recipes/wip/crypto/morse2sound/recipe.toml +++ b/recipes/wip/crypto/morse2sound/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO slice-deque crate error (after cargo update) [source] git = "https://github.com/irevenko/morse2sound" [build] diff --git a/recipes/wip/crypto/qrscan/recipe.toml b/recipes/wip/crypto/qrscan/recipe.toml index 428a3cf9..75f60e70 100644 --- a/recipes/wip/crypto/qrscan/recipe.toml +++ b/recipes/wip/crypto/qrscan/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO ahash crate error [source] git = "https://github.com/sayanarijit/qrscan" [build] From 0e93e135fed5414d499599093ad24085a33ecbcf Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 22 Nov 2024 13:53:05 +0000 Subject: [PATCH 2171/3180] Update recipes --- recipes/wip/crypto/steg86/recipe.toml | 2 +- recipes/wip/data-integrity/fim/recipe.toml | 2 +- recipes/wip/data-integrity/hashgood/recipe.toml | 2 +- recipes/wip/db/skytable/recipe.toml | 3 +++ 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/recipes/wip/crypto/steg86/recipe.toml b/recipes/wip/crypto/steg86/recipe.toml index 23446461..607cbeb4 100644 --- a/recipes/wip/crypto/steg86/recipe.toml +++ b/recipes/wip/crypto/steg86/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/woodruffw/steg86" [build] diff --git a/recipes/wip/data-integrity/fim/recipe.toml b/recipes/wip/data-integrity/fim/recipe.toml index 1dfa7b07..954aadc8 100644 --- a/recipes/wip/data-integrity/fim/recipe.toml +++ b/recipes/wip/data-integrity/fim/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/Achiefs/fim" [build] diff --git a/recipes/wip/data-integrity/hashgood/recipe.toml b/recipes/wip/data-integrity/hashgood/recipe.toml index ec0778f2..98552982 100644 --- a/recipes/wip/data-integrity/hashgood/recipe.toml +++ b/recipes/wip/data-integrity/hashgood/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested (after cargo update) +#TODO compiled but not tested [source] git = "https://github.com/thombles/hashgood" [build] diff --git a/recipes/wip/db/skytable/recipe.toml b/recipes/wip/db/skytable/recipe.toml index b389b7a6..a3fac8bc 100644 --- a/recipes/wip/db/skytable/recipe.toml +++ b/recipes/wip/db/skytable/recipe.toml @@ -3,6 +3,9 @@ git = "https://github.com/skytable/skytable" [build] template = "custom" +dependencies = [ + "openssl1", +] script = """ cookbook_cargo_packages skysh skyd """ From 22feec8d85caf71ea197cd42e707555b5b895208 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 23 Nov 2024 05:08:52 +0000 Subject: [PATCH 2172/3180] Update recipes --- recipes/wip/db/skytable/recipe.toml | 2 +- recipes/wip/demos/albedo/recipe.toml | 2 +- recipes/wip/demos/avian/recipe.toml | 2 +- recipes/wip/demos/avt/recipe.toml | 2 +- recipes/wip/demos/blade/recipe.toml | 2 +- recipes/wip/demos/blitz/recipe.toml | 3 +++ 6 files changed, 8 insertions(+), 5 deletions(-) diff --git a/recipes/wip/db/skytable/recipe.toml b/recipes/wip/db/skytable/recipe.toml index a3fac8bc..0bf74a60 100644 --- a/recipes/wip/db/skytable/recipe.toml +++ b/recipes/wip/db/skytable/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO libsky crate error [source] git = "https://github.com/skytable/skytable" [build] diff --git a/recipes/wip/demos/albedo/recipe.toml b/recipes/wip/demos/albedo/recipe.toml index 365d915d..2b11feef 100644 --- a/recipes/wip/demos/albedo/recipe.toml +++ b/recipes/wip/demos/albedo/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO nanorand crate error [source] git = "https://github.com/albedo-engine/albedo" [build] diff --git a/recipes/wip/demos/avian/recipe.toml b/recipes/wip/demos/avian/recipe.toml index 763ce94c..7343d2b6 100644 --- a/recipes/wip/demos/avian/recipe.toml +++ b/recipes/wip/demos/avian/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO requires rustc 1.82.0 [source] git = "https://github.com/Jondolf/avian" [build] diff --git a/recipes/wip/demos/avt/recipe.toml b/recipes/wip/demos/avt/recipe.toml index 94a9bbce..39e7f716 100644 --- a/recipes/wip/demos/avt/recipe.toml +++ b/recipes/wip/demos/avt/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/asciinema/avt" [build] diff --git a/recipes/wip/demos/blade/recipe.toml b/recipes/wip/demos/blade/recipe.toml index 578d06fc..15c6c1f4 100644 --- a/recipes/wip/demos/blade/recipe.toml +++ b/recipes/wip/demos/blade/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO x11rb and rustix crates error [source] git = "https://github.com/kvark/blade" [build] diff --git a/recipes/wip/demos/blitz/recipe.toml b/recipes/wip/demos/blitz/recipe.toml index 53dc0362..f0102fed 100644 --- a/recipes/wip/demos/blitz/recipe.toml +++ b/recipes/wip/demos/blitz/recipe.toml @@ -3,6 +3,9 @@ git = "https://github.com/DioxusLabs/blitz" [build] template = "custom" +dependencies = [ + "openssl1", +] script = """ cookbook_cargo_examples url markdown """ From 2ad94632d12f52bdf218c9a0efce0e344041089a Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Sat, 23 Nov 2024 02:14:29 -0500 Subject: [PATCH 2173/3180] Copy OpenJazz binary and package demo --- recipes/games/openjazz/recipe.toml | 12 +++++++++++ .../openjazz-shareware-data/jazzdemo.rar.sha | 1 + .../data/openjazz-shareware-data/manifest | 4 ++++ .../data/openjazz-shareware-data/recipe.toml | 20 +++++++++++++++++++ 4 files changed, 37 insertions(+) create mode 100644 recipes/wip/games/data/openjazz-shareware-data/jazzdemo.rar.sha create mode 100644 recipes/wip/games/data/openjazz-shareware-data/manifest create mode 100644 recipes/wip/games/data/openjazz-shareware-data/recipe.toml diff --git a/recipes/games/openjazz/recipe.toml b/recipes/games/openjazz/recipe.toml index 47098190..676b85c6 100644 --- a/recipes/games/openjazz/recipe.toml +++ b/recipes/games/openjazz/recipe.toml @@ -13,6 +13,7 @@ dependencies = [ script = """ export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include" export CXXFLAGS="${CXXFLAGS} -I${COOKBOOK_SYSROOT}/include" +export DATAPATH="/usr/share/games/openjazz/" COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( @@ -29,4 +30,15 @@ COOKBOOK_CONFIGURE_FLAGS=( ) cookbook_configure + +ASSETS_DIR="${COOKBOOK_STAGE}${DATAPATH}" +INSTALL_DIR="${COOKBOOK_STAGE}/usr/games" +ICON_DIR="${COOKBOOK_STAGE}/ui/icons/apps" +MAN_ROOT="${COOKBOOK_STAGE}/usr/share/man" +mkdir -p "${ASSETS_DIR}" "${INSTALL_DIR}" "${ICON_DIR}" "${MAN_ROOT}" + +cp -v "${COOKBOOK_SOURCE}/res/unix/OpenJazz.png" "${ICON_DIR}" +# TODO: Man pages need to be compiled +# cp -v "${COOKBOOK_SOURCE}/res/unix/OpenJazz.6" "${MAN_ROOT}/man6" +mv OpenJazz "${INSTALL_DIR}" """ diff --git a/recipes/wip/games/data/openjazz-shareware-data/jazzdemo.rar.sha b/recipes/wip/games/data/openjazz-shareware-data/jazzdemo.rar.sha new file mode 100644 index 00000000..f1a300db --- /dev/null +++ b/recipes/wip/games/data/openjazz-shareware-data/jazzdemo.rar.sha @@ -0,0 +1 @@ +a71e91cc0136449e58e922dc555180a84b04562f2c04c45d1545765dc77e32fb jazzdemo.rar diff --git a/recipes/wip/games/data/openjazz-shareware-data/manifest b/recipes/wip/games/data/openjazz-shareware-data/manifest new file mode 100644 index 00000000..ae844ad7 --- /dev/null +++ b/recipes/wip/games/data/openjazz-shareware-data/manifest @@ -0,0 +1,4 @@ +name=Jazz Jackrabbit (shareware) +category=Games +binary=/usr/games/OpenJazz +icon=/ui/icons/apps/OpenJazz.png diff --git a/recipes/wip/games/data/openjazz-shareware-data/recipe.toml b/recipes/wip/games/data/openjazz-shareware-data/recipe.toml new file mode 100644 index 00000000..3fca5d81 --- /dev/null +++ b/recipes/wip/games/data/openjazz-shareware-data/recipe.toml @@ -0,0 +1,20 @@ +# TODO: Requires unrar-free in the build container + +[build] +template = "custom" +script = """ +ASSETS_DIR="${COOKBOOK_STAGE}/usr/share/games/openjazz/" +APP_DIR="${COOKBOOK_STAGE}/ui/apps" + +curl -vJL https://archive.org/download/jazz-jackrabbit/Jazz%20Jackrabbit.rar -o jazzdemo.rar +sha256sum -c "${COOKBOOK_RECIPE}/jazzdemo.rar.sha" + +unrar x -u jazzdemo.rar +mkdir -p "${ASSETS_DIR}" "${APP_DIR}" +unzip -uL Jazz/JAZZ.ZIP -d "${ASSETS_DIR}" + +cp -v manifest "${APP_DIR}/openjazz" +""" + +[package] +dependencies = [ "openjazz" ] From 1cbf60d426c67f924a8ab34402a327734d804df3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 24 Nov 2024 04:12:51 +0000 Subject: [PATCH 2174/3180] Update recipes --- recipes/wip/demos/blitz/recipe.toml | 2 +- recipes/wip/demos/blockish/recipe.toml | 2 +- recipes/wip/demos/blockishfire/recipe.toml | 2 +- recipes/wip/demos/blue-engine/recipe.toml | 2 +- recipes/wip/demos/bones/recipe.toml | 2 +- recipes/wip/demos/colored/recipe.toml | 2 +- recipes/wip/demos/comfy/recipe.toml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/recipes/wip/demos/blitz/recipe.toml b/recipes/wip/demos/blitz/recipe.toml index f0102fed..a11aeeb6 100644 --- a/recipes/wip/demos/blitz/recipe.toml +++ b/recipes/wip/demos/blitz/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO fontique crate error [source] git = "https://github.com/DioxusLabs/blitz" [build] diff --git a/recipes/wip/demos/blockish/recipe.toml b/recipes/wip/demos/blockish/recipe.toml index a3fff317..30fdd578 100644 --- a/recipes/wip/demos/blockish/recipe.toml +++ b/recipes/wip/demos/blockish/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO glutin crate error [source] git = "https://github.com/yazgoo/blockish" [build] diff --git a/recipes/wip/demos/blockishfire/recipe.toml b/recipes/wip/demos/blockishfire/recipe.toml index 2fd1819a..120cabef 100644 --- a/recipes/wip/demos/blockishfire/recipe.toml +++ b/recipes/wip/demos/blockishfire/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO outdated redox_syscall crate (cargo update don't fix it) [source] git = "https://github.com/yazgoo/blockishfire" [build] diff --git a/recipes/wip/demos/blue-engine/recipe.toml b/recipes/wip/demos/blue-engine/recipe.toml index f112e880..477d7470 100644 --- a/recipes/wip/demos/blue-engine/recipe.toml +++ b/recipes/wip/demos/blue-engine/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/AryanpurTech/BlueEngine" [build] diff --git a/recipes/wip/demos/bones/recipe.toml b/recipes/wip/demos/bones/recipe.toml index e6968803..cf348e62 100644 --- a/recipes/wip/demos/bones/recipe.toml +++ b/recipes/wip/demos/bones/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO iroh-quinn-udp crate error [source] git = "https://github.com/fishfolk/bones" [build] diff --git a/recipes/wip/demos/colored/recipe.toml b/recipes/wip/demos/colored/recipe.toml index ec395b0b..73cc848f 100644 --- a/recipes/wip/demos/colored/recipe.toml +++ b/recipes/wip/demos/colored/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/colored-rs/colored" [build] diff --git a/recipes/wip/demos/comfy/recipe.toml b/recipes/wip/demos/comfy/recipe.toml index c343f4f3..4969fa30 100644 --- a/recipes/wip/demos/comfy/recipe.toml +++ b/recipes/wip/demos/comfy/recipe.toml @@ -4,5 +4,5 @@ git = "https://github.com/darthdeus/comfy" [build] template = "custom" script = """ -cookbook_cargo_examples animated_shapes animated_sprites animated_text bloom circle colors egui fragment-shader lighting music physics shapes single_particle sprite text +cookbook_cargo_examples animated_shapes animated_sprites animated_text bloom circle colors egui fragment-shader lighting music shapes single_particle sprite text """ From 7aa8203ac7c03fe1fc674c252494d95d170f0a7c Mon Sep 17 00:00:00 2001 From: Jack Lin Date: Wed, 27 Nov 2024 10:45:42 +0000 Subject: [PATCH 2175/3180] Update doc links --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f07b4ed9..e777fdd7 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ This repository contains the system source code and packages inside the `recipes - A recipe can be a software port or system package (they use `pkgar` or `tar.gz` formats). -**Read [this](https://doc.redox-os.org/book/ch09-03-porting-applications.html) page before porting programs to Redox** +**Read [this](https://doc.redox-os.org/book/porting-applications.html) page before porting programs to Redox** In order for this repository to be useful, it must be set up with an environment from the [redox](https://gitlab.redox-os.org/redox-os/redox) repository. @@ -63,7 +63,7 @@ Before sending your recipe to upstream (to become a public package), you must fo #### Cross-Compilation -- All recipes must use our cross-compilers, a Cookbook [template](https://doc.redox-os.org/book/ch09-03-porting-applications.html#templates) does this automatically but it's not always possible, study the build system of your program or library to find these options or patch the configuration files. +- All recipes must use our cross-compilers, a Cookbook [template](https://doc.redox-os.org/book/porting-applications.html#templates) does this automatically but it's not always possible, study the build system of your program or library to find these options or patch the configuration files. - Don't hardcode the CPU architecture on the recipe script (this would break the multi-arch support). #### Tarballs @@ -81,12 +81,12 @@ Before sending your recipe to upstream (to become a public package), you must fo #### Checksum -- If your recipe download a tarball, you will need to create a BLAKE3 hash for it. You can learn how to do it [here](https://doc.redox-os.org/book/ch09-03-porting-applications.html#create-a-blake3-hash-for-your-recipee). +- If your recipe download a tarball, you will need to create a BLAKE3 hash for it. You can learn how to do it [here](https://doc.redox-os.org/book/porting-applications.html#create-a-blake3-hash-for-your-recipe). #### License - Don't package programs or libraries lacking a license. -- Verify if the program has some license violation, in case of doubt ask us on the [chat](https://doc.redox-os.org/book/ch13-01-chat.html). +- Verify if the program has some license violation, in case of doubt ask us on the [chat](https://doc.redox-os.org/book/chat.html). - Non-free programs and assets should go to a subcategory of the `nonfree` category and be approved per license. ### Testing Area From ee3f3e76798767c13a4db13e153804a75483e037 Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Sun, 1 Dec 2024 21:57:09 -0500 Subject: [PATCH 2176/3180] Fix and bump lua54 --- recipes/dev/lua54/recipe.toml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/recipes/dev/lua54/recipe.toml b/recipes/dev/lua54/recipe.toml index fb52321a..5f2f1549 100644 --- a/recipes/dev/lua54/recipe.toml +++ b/recipes/dev/lua54/recipe.toml @@ -1,15 +1,16 @@ [source] -tar = "https://www.lua.org/ftp/lua-5.4.4.tar.gz" -blake3 = "ca54489393cd38e35d295a9c35dbf0da5336a66ddb7b2213eed6c2f3039f53b1" +tar = "https://lua.org/ftp/lua-5.4.7.tar.gz" +blake3 = "e51c2f347e3185479d5ff95cae8ac77511db486853269443c56bedaa0a6ae629" [build] template = "custom" script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ -"${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" \ +"${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" posix \ AR="${TARGET}-ar rcu" \ CC="${TARGET}-gcc -std=gnu99" \ RANLIB="${TARGET}-ranlib" \ - SYSLDFLAGS="-static" \ - install INSTALL_TOP="${COOKBOOK_STAGE}" + SYSLDFLAGS="-static" + +"${COOKBOOK_MAKE}" install INSTALL_TOP="${COOKBOOK_STAGE}" """ From 584a94fb24ee32fcca88d8e53dd82680532f57f1 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Mon, 2 Dec 2024 23:30:51 +1100 Subject: [PATCH 2177/3180] feat(cookbook): auxiliary dynamic linking functions Signed-off-by: Anhad Singh --- src/bin/cook.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index b31c2e4a..4b394b74 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -610,6 +610,28 @@ function cookbook_configure { "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" "${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" } + +function DYNAMIC_INIT { + echo "WARN: Program is being compiled dynamically." + + COOKBOOK_CONFIGURE_FLAGS=( + --host="${GNU_TARGET}" + --prefix="" + --enable-shared + --disable-static + ) + + # TODO: check paths for spaces + export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" + + autotools_recursive_regenerate() { + for f in $(find . -name configure.ac -o -name configure.in -type f | sort); do + echo "* autotools regenerate in '$(dirname $f)'..." + ( cd "$(dirname "$f")" && autoreconf -fvi "$@" -I${COOKBOOK_HOST_SYSROOT}/share/aclocal ) + done + } +} + "#; let post_script = r#"# Common post script From 1f793041593369da76ba9a0920d3d8c1b3bd13f6 Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Tue, 3 Dec 2024 21:45:57 +0000 Subject: [PATCH 2178/3180] Fix `glib`'s patch --- recipes/libs/glib/redox.patch | 36 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/recipes/libs/glib/redox.patch b/recipes/libs/glib/redox.patch index df14da2f..4c8c34f1 100644 --- a/recipes/libs/glib/redox.patch +++ b/recipes/libs/glib/redox.patch @@ -1,6 +1,6 @@ diff -ruwN source/configure.ac source-new/configure.ac ---- source/configure.ac 2018-12-23 06:10:41.000000000 -0700 -+++ source-new/configure.ac 2019-01-05 10:59:22.924421938 -0700 +--- source/configure.ac 2018-12-23 08:10:41.000000000 -0500 ++++ source-new/configure.ac 2024-11-28 00:42:10.691094238 -0500 @@ -981,7 +981,7 @@ [int qclass = C_IN;])], [AC_MSG_RESULT([yes]) @@ -20,8 +20,8 @@ diff -ruwN source/configure.ac source-new/configure.ac AC_CHECK_FUNC(socket, :, AC_CHECK_LIB(socket, socket, [NETWORK_LIBS="-lsocket $NETWORK_LIBS"], diff -ruwN source/gio/glocalfileinfo.c source-new/gio/glocalfileinfo.c ---- source/gio/glocalfileinfo.c 2018-12-23 06:10:41.000000000 -0700 -+++ source-new/gio/glocalfileinfo.c 2019-01-05 14:18:02.435425946 -0700 +--- source/gio/glocalfileinfo.c 2018-12-23 08:10:41.000000000 -0500 ++++ source-new/gio/glocalfileinfo.c 2024-11-28 00:42:10.691094238 -0500 @@ -1217,11 +1217,13 @@ lookup_gid_name (gid_t gid) { @@ -53,9 +53,9 @@ diff -ruwN source/gio/glocalfileinfo.c source-new/gio/glocalfileinfo.c g_hash_table_replace (gid_cache, GINT_TO_POINTER (gid), name); diff -ruwN source/gio/gnetworking.h.in source-new/gio/gnetworking.h.in ---- source/gio/gnetworking.h.in 2018-12-23 06:10:41.000000000 -0700 -+++ source-new/gio/gnetworking.h.in 2019-01-13 10:46:34.304980440 -0700 -@@ -41,13 +41,19 @@ +--- source/gio/gnetworking.h.in 2018-12-23 08:10:41.000000000 -0500 ++++ source-new/gio/gnetworking.h.in 2024-11-28 01:04:12.972229810 -0500 +@@ -41,13 +41,17 @@ #include #include #include @@ -64,9 +64,7 @@ diff -ruwN source/gio/gnetworking.h.in source-new/gio/gnetworking.h.in +#endif #include #include -+#if !defined(__redox__) #include -+#endif #include +#if !defined(__redox__) @@ -76,8 +74,8 @@ diff -ruwN source/gio/gnetworking.h.in source-new/gio/gnetworking.h.in #ifndef T_SRV diff -ruwN source/gio/gsocket.c source-new/gio/gsocket.c ---- source/gio/gsocket.c 2018-12-23 06:10:41.000000000 -0700 -+++ source-new/gio/gsocket.c 2019-01-05 13:34:30.178211038 -0700 +--- source/gio/gsocket.c 2018-12-23 08:10:41.000000000 -0500 ++++ source-new/gio/gsocket.c 2024-11-28 00:42:10.691094238 -0500 @@ -1539,6 +1539,7 @@ g_return_val_if_fail (G_IS_SOCKET (socket), 0); @@ -252,8 +250,8 @@ diff -ruwN source/gio/gsocket.c source-new/gio/gsocket.c } - diff -ruwN source/gio/gthreadedresolver.c source-new/gio/gthreadedresolver.c ---- source/gio/gthreadedresolver.c 2018-12-23 06:10:41.000000000 -0700 -+++ source-new/gio/gthreadedresolver.c 2019-01-13 10:47:33.441032953 -0700 +--- source/gio/gthreadedresolver.c 2018-12-23 08:10:41.000000000 -0500 ++++ source-new/gio/gthreadedresolver.c 2024-11-28 00:42:10.694427677 -0500 @@ -289,6 +289,12 @@ gpointer task_data, GCancellable *cancellable) @@ -306,8 +304,8 @@ diff -ruwN source/gio/gthreadedresolver.c source-new/gio/gthreadedresolver.c static GList * diff -ruwN source/gio/gunixfdmessage.c source-new/gio/gunixfdmessage.c ---- source/gio/gunixfdmessage.c 2018-12-23 06:10:41.000000000 -0700 -+++ source-new/gio/gunixfdmessage.c 2019-01-05 14:22:53.097587821 -0700 +--- source/gio/gunixfdmessage.c 2018-12-23 08:10:41.000000000 -0500 ++++ source-new/gio/gunixfdmessage.c 2024-11-28 00:42:10.694427677 -0500 @@ -53,6 +53,10 @@ #include "gnetworking.h" #include "gioerror.h" @@ -320,8 +318,8 @@ diff -ruwN source/gio/gunixfdmessage.c source-new/gio/gunixfdmessage.c { GUnixFDList *list; diff -ruwN source/gio/gunixmounts.c source-new/gio/gunixmounts.c ---- source/gio/gunixmounts.c 2018-12-23 06:10:41.000000000 -0700 -+++ source-new/gio/gunixmounts.c 2019-01-05 14:25:31.846709810 -0700 +--- source/gio/gunixmounts.c 2018-12-23 08:10:41.000000000 -0500 ++++ source-new/gio/gunixmounts.c 2024-11-28 00:42:10.694427677 -0500 @@ -949,6 +949,21 @@ return return_list; } @@ -354,8 +352,8 @@ diff -ruwN source/gio/gunixmounts.c source-new/gio/gunixmounts.c _g_get_unix_mount_points (void) { diff -ruwN source/glib/gthread-posix.c source-new/glib/gthread-posix.c ---- source/glib/gthread-posix.c 2018-12-23 06:10:41.000000000 -0700 -+++ source-new/glib/gthread-posix.c 2019-01-05 11:40:57.454759289 -0700 +--- source/glib/gthread-posix.c 2018-12-23 08:10:41.000000000 -0500 ++++ source-new/glib/gthread-posix.c 2024-11-28 00:42:10.694427677 -0500 @@ -660,6 +660,7 @@ #elif defined (HAVE_PTHREAD_CONDATTR_SETCLOCK) && defined (CLOCK_MONOTONIC) if G_UNLIKELY ((status = pthread_condattr_setclock (&attr, CLOCK_MONOTONIC)) != 0) From 4ffced5522a83803caf96a352e84cdd58e5c63ef Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 4 Dec 2024 00:23:43 +0000 Subject: [PATCH 2179/3180] Update recipes --- recipes/wip/demos/comfy/recipe.toml | 2 +- recipes/wip/demos/console-rs/recipe.toml | 2 +- recipes/wip/demos/contrast-renderer/recipe.toml | 2 +- recipes/wip/demos/cubecl/recipe.toml | 2 +- recipes/wip/demos/dioxus-examples/recipe.toml | 2 +- recipes/wip/demos/doomfire/recipe.toml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/recipes/wip/demos/comfy/recipe.toml b/recipes/wip/demos/comfy/recipe.toml index 4969fa30..23b16557 100644 --- a/recipes/wip/demos/comfy/recipe.toml +++ b/recipes/wip/demos/comfy/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/darthdeus/comfy" [build] diff --git a/recipes/wip/demos/console-rs/recipe.toml b/recipes/wip/demos/console-rs/recipe.toml index 020bc40f..87425992 100644 --- a/recipes/wip/demos/console-rs/recipe.toml +++ b/recipes/wip/demos/console-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/console-rs/console" [build] diff --git a/recipes/wip/demos/contrast-renderer/recipe.toml b/recipes/wip/demos/contrast-renderer/recipe.toml index b6158437..a2b8426e 100644 --- a/recipes/wip/demos/contrast-renderer/recipe.toml +++ b/recipes/wip/demos/contrast-renderer/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/Lichtso/contrast_renderer" [build] diff --git a/recipes/wip/demos/cubecl/recipe.toml b/recipes/wip/demos/cubecl/recipe.toml index 9aa8e268..94699865 100644 --- a/recipes/wip/demos/cubecl/recipe.toml +++ b/recipes/wip/demos/cubecl/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO cubecl-macros crate error [source] git = "https://github.com/tracel-ai/cubecl" [build] diff --git a/recipes/wip/demos/dioxus-examples/recipe.toml b/recipes/wip/demos/dioxus-examples/recipe.toml index a394969d..ec46366b 100644 --- a/recipes/wip/demos/dioxus-examples/recipe.toml +++ b/recipes/wip/demos/dioxus-examples/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO wry crate error [source] git = "https://github.com/DioxusLabs/dioxus" [build] diff --git a/recipes/wip/demos/doomfire/recipe.toml b/recipes/wip/demos/doomfire/recipe.toml index b2e4eb33..fa44ec97 100644 --- a/recipes/wip/demos/doomfire/recipe.toml +++ b/recipes/wip/demos/doomfire/recipe.toml @@ -4,5 +4,5 @@ git = "https://github.com/r-marques/doomfire" [build] template = "custom" script = """ -cookbook_cargo_packages doomfire-minifb +cookbook_cargo_examples doomfire-minifb """ From 37d7a9c87648fee86236bc27a9f586a2b57110d5 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 4 Dec 2024 00:32:14 +0000 Subject: [PATCH 2180/3180] Update recipes --- recipes/wip/demos/doomfire/recipe.toml | 2 +- recipes/wip/demos/egui/recipe.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/wip/demos/doomfire/recipe.toml b/recipes/wip/demos/doomfire/recipe.toml index fa44ec97..ab79f6a3 100644 --- a/recipes/wip/demos/doomfire/recipe.toml +++ b/recipes/wip/demos/doomfire/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO discover how to build the "doomfire-minifb" example [source] git = "https://github.com/r-marques/doomfire" [build] diff --git a/recipes/wip/demos/egui/recipe.toml b/recipes/wip/demos/egui/recipe.toml index 000b5d9d..6dba94f2 100644 --- a/recipes/wip/demos/egui/recipe.toml +++ b/recipes/wip/demos/egui/recipe.toml @@ -4,5 +4,5 @@ git = "https://github.com/emilk/egui" [build] template = "custom" script = """ -cookbook_cargo_examples hello_world_simple +cookbook_cargo_packages hello_world """ From 202458b0b5bc561bf41cf5f1b28677c4cf678c61 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 4 Dec 2024 00:56:18 +0000 Subject: [PATCH 2181/3180] Update recipes --- recipes/wip/demos/egui/recipe.toml | 2 +- recipes/wip/demos/euc/recipe.toml | 2 +- recipes/wip/demos/firework-rs/recipe.toml | 2 +- recipes/wip/demos/fonterator/recipe.toml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/recipes/wip/demos/egui/recipe.toml b/recipes/wip/demos/egui/recipe.toml index 6dba94f2..d4a6089b 100644 --- a/recipes/wip/demos/egui/recipe.toml +++ b/recipes/wip/demos/egui/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO glutin crate error [source] git = "https://github.com/emilk/egui" [build] diff --git a/recipes/wip/demos/euc/recipe.toml b/recipes/wip/demos/euc/recipe.toml index b664ace3..da60f8a5 100644 --- a/recipes/wip/demos/euc/recipe.toml +++ b/recipes/wip/demos/euc/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO minifb crate error [source] git = "https://github.com/zesterer/euc" [build] diff --git a/recipes/wip/demos/firework-rs/recipe.toml b/recipes/wip/demos/firework-rs/recipe.toml index 104d88aa..09d6ed28 100644 --- a/recipes/wip/demos/firework-rs/recipe.toml +++ b/recipes/wip/demos/firework-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO fix the script [source] git = "https://github.com/Wayoung7/firework-rs" [build] diff --git a/recipes/wip/demos/fonterator/recipe.toml b/recipes/wip/demos/fonterator/recipe.toml index 93d3ec71..2134fee4 100644 --- a/recipes/wip/demos/fonterator/recipe.toml +++ b/recipes/wip/demos/fonterator/recipe.toml @@ -4,5 +4,5 @@ git = "https://github.com/ardaku/fonterator" [build] template = "custom" script = """ -cookbook_cargo_examples main directions image raster +cookbook_cargo_examples directions image raster """ From a2aa0bf3fecfc55697000bb494bc400cdcfc9b39 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 4 Dec 2024 01:29:43 +0000 Subject: [PATCH 2182/3180] Update recipes --- recipes/wip/demos/fonterator/recipe.toml | 4 ++-- recipes/wip/demos/fundsp/recipe.toml | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/wip/demos/fonterator/recipe.toml b/recipes/wip/demos/fonterator/recipe.toml index 2134fee4..f204ae61 100644 --- a/recipes/wip/demos/fonterator/recipe.toml +++ b/recipes/wip/demos/fonterator/recipe.toml @@ -1,8 +1,8 @@ -#TODO not compiled or tested +#TODO write a script that can use multiple examples and the "monospace-font" flag [source] git = "https://github.com/ardaku/fonterator" [build] template = "custom" script = """ -cookbook_cargo_examples directions image raster +cookbook_cargo_examples main directions image raster """ diff --git a/recipes/wip/demos/fundsp/recipe.toml b/recipes/wip/demos/fundsp/recipe.toml index 0a2cffff..de432f2d 100644 --- a/recipes/wip/demos/fundsp/recipe.toml +++ b/recipes/wip/demos/fundsp/recipe.toml @@ -3,6 +3,9 @@ git = "https://github.com/SamiPerttu/fundsp" [build] template = "custom" +dependencies = [ + "fontconfig", +] script = """ cookbook_cargo_examples beep file grain grain2 keys network optimize peek plot sequence type """ From 35f17e35c5702f3c15bb89ec7474fa371668f91a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 4 Dec 2024 02:39:05 +0000 Subject: [PATCH 2183/3180] Update recipes --- recipes/wip/demos/fundsp/recipe.toml | 2 +- recipes/wip/demos/funutd/recipe.toml | 2 +- recipes/wip/demos/fyrox/recipe.toml | 5 +++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/recipes/wip/demos/fundsp/recipe.toml b/recipes/wip/demos/fundsp/recipe.toml index de432f2d..3ddd0d97 100644 --- a/recipes/wip/demos/fundsp/recipe.toml +++ b/recipes/wip/demos/fundsp/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO can't find the fontconfig files [source] git = "https://github.com/SamiPerttu/fundsp" [build] diff --git a/recipes/wip/demos/funutd/recipe.toml b/recipes/wip/demos/funutd/recipe.toml index 83f79416..cafac254 100644 --- a/recipes/wip/demos/funutd/recipe.toml +++ b/recipes/wip/demos/funutd/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO rfd crate error [source] git = "https://github.com/SamiPerttu/funutd" [build] diff --git a/recipes/wip/demos/fyrox/recipe.toml b/recipes/wip/demos/fyrox/recipe.toml index 228dca16..465a7468 100644 --- a/recipes/wip/demos/fyrox/recipe.toml +++ b/recipes/wip/demos/fyrox/recipe.toml @@ -1,8 +1,9 @@ #TODO not compiled or tested [source] -git = "https://github.com/FyroxEngine/Fyrox" +git = "https://github.com/FyroxEngine/Fyrox-demo-projects" [build] template = "custom" script = """ -cookbook_cargo_examples 2d +COOKBOOK_SOURCE="${COOKBOOK_SOURCE}/ui" +cookbook_cargo_packages ui """ From 5a3fcbde03075e368839d6c5a4b138d8c7ad2315 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 4 Dec 2024 08:00:45 +0000 Subject: [PATCH 2184/3180] Update recipes --- recipes/wip/demos/fyrox/recipe.toml | 4 ++-- recipes/wip/demos/ggez/recipe.toml | 2 +- recipes/wip/demos/globe-rs/recipe.toml | 2 +- recipes/wip/demos/hotline/recipe.toml | 2 +- recipes/wip/demos/iced-7guis/recipe.toml | 2 +- recipes/wip/demos/kira/recipe.toml | 2 +- recipes/wip/demos/kiss3d/recipe.toml | 2 +- recipes/wip/demos/leptos-counter/recipe.toml | 8 -------- 8 files changed, 8 insertions(+), 16 deletions(-) delete mode 100644 recipes/wip/demos/leptos-counter/recipe.toml diff --git a/recipes/wip/demos/fyrox/recipe.toml b/recipes/wip/demos/fyrox/recipe.toml index 465a7468..ba3c1057 100644 --- a/recipes/wip/demos/fyrox/recipe.toml +++ b/recipes/wip/demos/fyrox/recipe.toml @@ -1,9 +1,9 @@ -#TODO not compiled or tested +#TODO glutin crate error [source] git = "https://github.com/FyroxEngine/Fyrox-demo-projects" [build] template = "custom" script = """ COOKBOOK_SOURCE="${COOKBOOK_SOURCE}/ui" -cookbook_cargo_packages ui +cookbook_cargo_packages executor """ diff --git a/recipes/wip/demos/ggez/recipe.toml b/recipes/wip/demos/ggez/recipe.toml index a55d0919..542ad8e5 100644 --- a/recipes/wip/demos/ggez/recipe.toml +++ b/recipes/wip/demos/ggez/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO require rustc 1.81 [source] git = "https://github.com/ggez/ggez" [build] diff --git a/recipes/wip/demos/globe-rs/recipe.toml b/recipes/wip/demos/globe-rs/recipe.toml index a9c83c5c..624312f7 100644 --- a/recipes/wip/demos/globe-rs/recipe.toml +++ b/recipes/wip/demos/globe-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO update the mio crate version (after cargo update) [source] git = "https://github.com/adamsky/globe" [build] diff --git a/recipes/wip/demos/hotline/recipe.toml b/recipes/wip/demos/hotline/recipe.toml index 801d977a..d6cae287 100644 --- a/recipes/wip/demos/hotline/recipe.toml +++ b/recipes/wip/demos/hotline/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO hot-lib-reloader crate error [source] git = "https://github.com/polymonster/hotline" [build] diff --git a/recipes/wip/demos/iced-7guis/recipe.toml b/recipes/wip/demos/iced-7guis/recipe.toml index 10cb81c8..655cea56 100644 --- a/recipes/wip/demos/iced-7guis/recipe.toml +++ b/recipes/wip/demos/iced-7guis/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO require rustc 1.80.1 [source] git = "https://github.com/dcampbell24/iced_7guis" [build] diff --git a/recipes/wip/demos/kira/recipe.toml b/recipes/wip/demos/kira/recipe.toml index 377c94d5..0d5a8bc9 100644 --- a/recipes/wip/demos/kira/recipe.toml +++ b/recipes/wip/demos/kira/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO ahash crate error [source] git = "https://github.com/tesselode/kira-examples" [build] diff --git a/recipes/wip/demos/kiss3d/recipe.toml b/recipes/wip/demos/kiss3d/recipe.toml index ce7afd98..8d957859 100644 --- a/recipes/wip/demos/kiss3d/recipe.toml +++ b/recipes/wip/demos/kiss3d/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO winit crate error (even after cargo update) [source] git = "https://github.com/sebcrozet/kiss3d" [build] diff --git a/recipes/wip/demos/leptos-counter/recipe.toml b/recipes/wip/demos/leptos-counter/recipe.toml deleted file mode 100644 index d990666b..00000000 --- a/recipes/wip/demos/leptos-counter/recipe.toml +++ /dev/null @@ -1,8 +0,0 @@ -#TODO not compiled or tested -[source] -git = "https://github.com/leptos-rs/leptos" -[build] -template = "custom" -script = """ -cookbook_cargo_examples counter -""" From 1070ccd6efccea9e145f7202e0b7ffaf6a105d42 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 4 Dec 2024 08:33:28 +0000 Subject: [PATCH 2185/3180] Update recipes --- recipes/wip/demos/firework-rs/recipe.toml | 10 +++++++++- recipes/wip/demos/fonterator/recipe.toml | 15 ++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/recipes/wip/demos/firework-rs/recipe.toml b/recipes/wip/demos/firework-rs/recipe.toml index 09d6ed28..f1bd17a6 100644 --- a/recipes/wip/demos/firework-rs/recipe.toml +++ b/recipes/wip/demos/firework-rs/recipe.toml @@ -4,6 +4,14 @@ git = "https://github.com/Wayoung7/firework-rs" [build] template = "custom" script = """ -cookbook_cargo_packages firework-rs +package=firework-rs +"${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --package "${package}" \ + --release + mkdir -pv "${COOKBOOK_STAGE}/usr/bin" + cp -v \ + "target/${TARGET}/release/${package}" \ + "${COOKBOOK_STAGE}/usr/bin/${package}" cookbook_cargo_examples fountain heart vortex """ diff --git a/recipes/wip/demos/fonterator/recipe.toml b/recipes/wip/demos/fonterator/recipe.toml index f204ae61..ae463a62 100644 --- a/recipes/wip/demos/fonterator/recipe.toml +++ b/recipes/wip/demos/fonterator/recipe.toml @@ -4,5 +4,18 @@ git = "https://github.com/ardaku/fonterator" [build] template = "custom" script = """ -cookbook_cargo_examples main directions image raster +recipe="$(basename "${COOKBOOK_RECIPE}")" +examples="main directions image raster" +for example in "${examples}" + do + "${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/${PACKAGE_PATH}/Cargo.toml" \ + --example "${example}" \ + --release \ + --features "monospace-font" + mkdir -pv "${COOKBOOK_STAGE}/usr/bin" + cp -v \ + "target/${TARGET}/${build_type}/examples/${example}" \ + "${COOKBOOK_STAGE}/usr/bin/${recipe}_${example}" + done """ From 0d3a36ac8969706719b967621fdf106e3f88c5d9 Mon Sep 17 00:00:00 2001 From: Ron Williams Date: Fri, 6 Dec 2024 17:37:00 +0000 Subject: [PATCH 2186/3180] Fix glob problem caused by changes to dirent --- recipes/shells/bash/redox.patch | 67 ++++++++++++++++++--------------- 1 file changed, 37 insertions(+), 30 deletions(-) diff --git a/recipes/shells/bash/redox.patch b/recipes/shells/bash/redox.patch index ff7ac1c8..b0aefafb 100644 --- a/recipes/shells/bash/redox.patch +++ b/recipes/shells/bash/redox.patch @@ -1,6 +1,6 @@ diff -ruwN bash-5.2.15/bashline.c source/bashline.c ---- bash-5.2.15/bashline.c 2022-04-17 16:37:12.000000000 -0600 -+++ source/bashline.c 2023-09-09 09:07:14.698070413 -0600 +--- bash-5.2.15/bashline.c 2022-04-17 15:37:12.000000000 -0700 ++++ source/bashline.c 2024-12-05 16:04:07.566380980 -0800 @@ -2645,7 +2645,7 @@ const char *text; int state; @@ -11,8 +11,8 @@ diff -ruwN bash-5.2.15/bashline.c source/bashline.c #else static char *gname = (char *)NULL; diff -ruwN bash-5.2.15/builtins/ulimit.def source/builtins/ulimit.def ---- bash-5.2.15/builtins/ulimit.def 2021-11-05 07:19:53.000000000 -0600 -+++ source/builtins/ulimit.def 2023-09-09 09:07:14.698070413 -0600 +--- bash-5.2.15/builtins/ulimit.def 2021-11-05 06:19:53.000000000 -0700 ++++ source/builtins/ulimit.def 2024-12-05 16:04:07.567380980 -0800 @@ -609,7 +609,7 @@ } else @@ -23,8 +23,8 @@ diff -ruwN bash-5.2.15/builtins/ulimit.def source/builtins/ulimit.def return -1; # if defined (HPUX9) diff -ruwN bash-5.2.15/config-top.h source/config-top.h ---- bash-5.2.15/config-top.h 2021-11-05 07:11:12.000000000 -0600 -+++ source/config-top.h 2023-09-09 09:07:14.698070413 -0600 +--- bash-5.2.15/config-top.h 2021-11-05 06:11:12.000000000 -0700 ++++ source/config-top.h 2024-12-06 01:06:18.324586528 -0800 @@ -63,24 +63,24 @@ /* The default value of the PATH variable. */ #ifndef DEFAULT_PATH_VALUE @@ -54,9 +54,16 @@ diff -ruwN bash-5.2.15/config-top.h source/config-top.h #endif /* Default primary and secondary prompt strings. */ +@@ -199,3 +199,6 @@ + /* Undefine or define to 0 if you don't want to allow associative array + assignment using a compound list of key-value pairs. */ + #define ASSOC_KVPAIR_ASSIGNMENT 1 ++ ++/* Don't check for a valid inode number when pattern matching on Redox */ ++#define BROKEN_DIRENT_D_INO 1 diff -ruwN bash-5.2.15/configure source/configure ---- bash-5.2.15/configure 2022-09-23 08:13:22.000000000 -0600 -+++ source/configure 2023-09-09 09:07:14.702070414 -0600 +--- bash-5.2.15/configure 2022-09-23 07:13:22.000000000 -0700 ++++ source/configure 2024-12-05 16:06:32.812286102 -0800 @@ -3298,6 +3298,7 @@ *-nsk*) opt_bash_malloc=no ;; # HP NonStop *-haiku*) opt_bash_malloc=no ;; # Haiku OS @@ -66,8 +73,8 @@ diff -ruwN bash-5.2.15/configure source/configure # memory scrambling on free() diff -ruwN bash-5.2.15/configure.ac source/configure.ac ---- bash-5.2.15/configure.ac 2022-09-23 08:12:27.000000000 -0600 -+++ source/configure.ac 2023-09-09 09:07:14.702070414 -0600 +--- bash-5.2.15/configure.ac 2022-09-23 07:12:27.000000000 -0700 ++++ source/configure.ac 2024-12-05 16:04:07.571380977 -0800 @@ -92,6 +92,7 @@ *-nsk*) opt_bash_malloc=no ;; # HP NonStop *-haiku*) opt_bash_malloc=no ;; # Haiku OS @@ -77,8 +84,8 @@ diff -ruwN bash-5.2.15/configure.ac source/configure.ac # memory scrambling on free() diff -ruwN bash-5.2.15/execute_cmd.c source/execute_cmd.c ---- bash-5.2.15/execute_cmd.c 2022-12-13 10:09:02.000000000 -0700 -+++ source/execute_cmd.c 2023-09-09 09:07:14.702070414 -0600 +--- bash-5.2.15/execute_cmd.c 2022-12-13 09:09:02.000000000 -0800 ++++ source/execute_cmd.c 2024-12-05 16:04:07.573380976 -0800 @@ -1379,11 +1379,11 @@ nullcmd = (command == 0) || (command->type == cm_simple && command->value.Simple->words == 0 && command->value.Simple->redirects == 0); if (posixly_correct && nullcmd) @@ -94,8 +101,8 @@ diff -ruwN bash-5.2.15/execute_cmd.c source/execute_cmd.c tbefore = shell_start_time; #endif diff -ruwN bash-5.2.15/general.c source/general.c ---- bash-5.2.15/general.c 2022-11-23 15:10:12.000000000 -0700 -+++ source/general.c 2023-09-09 09:07:14.702070414 -0600 +--- bash-5.2.15/general.c 2022-11-23 14:10:12.000000000 -0800 ++++ source/general.c 2024-12-05 16:04:07.574380975 -0800 @@ -589,6 +589,7 @@ void check_dev_tty () @@ -126,8 +133,8 @@ diff -ruwN bash-5.2.15/general.c source/general.c *p_index = i; diff -ruwN bash-5.2.15/include/posixwait.h source/include/posixwait.h ---- bash-5.2.15/include/posixwait.h 2019-03-29 11:25:52.000000000 -0600 -+++ source/include/posixwait.h 2023-09-09 09:07:14.702070414 -0600 +--- bash-5.2.15/include/posixwait.h 2019-03-29 10:25:52.000000000 -0700 ++++ source/include/posixwait.h 2024-12-05 16:04:07.574380975 -0800 @@ -34,7 +34,7 @@ /* How to get the status of a job. For Posix, this is just an @@ -147,8 +154,8 @@ diff -ruwN bash-5.2.15/include/posixwait.h source/include/posixwait.h # if !defined (WSTOPSIG) # define WSTOPSIG(s) ((s) >> 8) diff -ruwN bash-5.2.15/lib/readline/input.c source/lib/readline/input.c ---- bash-5.2.15/lib/readline/input.c 2022-04-08 13:43:24.000000000 -0600 -+++ source/lib/readline/input.c 2023-09-09 09:07:14.702070414 -0600 +--- bash-5.2.15/lib/readline/input.c 2022-04-08 12:43:24.000000000 -0700 ++++ source/lib/readline/input.c 2024-12-05 16:04:07.575380974 -0800 @@ -805,7 +805,7 @@ int result; unsigned char c; @@ -159,8 +166,8 @@ diff -ruwN bash-5.2.15/lib/readline/input.c source/lib/readline/input.c fd_set readfds; #endif diff -ruwN bash-5.2.15/lib/readline/terminal.c source/lib/readline/terminal.c ---- bash-5.2.15/lib/readline/terminal.c 2022-04-05 08:44:17.000000000 -0600 -+++ source/lib/readline/terminal.c 2023-09-09 09:09:03.162131539 -0600 +--- bash-5.2.15/lib/readline/terminal.c 2022-04-05 07:44:17.000000000 -0700 ++++ source/lib/readline/terminal.c 2024-12-05 16:04:07.575380974 -0800 @@ -102,7 +102,7 @@ static int tcap_initialized; @@ -171,8 +178,8 @@ diff -ruwN bash-5.2.15/lib/readline/terminal.c source/lib/readline/terminal.c extern # endif /* __EMX__ || NEED_EXTERN_PC */ diff -ruwN bash-5.2.15/lib/sh/getcwd.c source/lib/sh/getcwd.c ---- bash-5.2.15/lib/sh/getcwd.c 2012-03-10 08:48:50.000000000 -0700 -+++ source/lib/sh/getcwd.c 2023-09-09 09:07:14.702070414 -0600 +--- bash-5.2.15/lib/sh/getcwd.c 2012-03-10 07:48:50.000000000 -0800 ++++ source/lib/sh/getcwd.c 2024-12-05 16:04:07.575380974 -0800 @@ -20,7 +20,7 @@ #include @@ -183,8 +190,8 @@ diff -ruwN bash-5.2.15/lib/sh/getcwd.c source/lib/sh/getcwd.c #if !defined (__GNUC__) && !defined (HAVE_ALLOCA_H) && defined (_AIX) #pragma alloca diff -ruwN bash-5.2.15/lib/sh/input_avail.c source/lib/sh/input_avail.c ---- bash-5.2.15/lib/sh/input_avail.c 2021-05-24 09:16:33.000000000 -0600 -+++ source/lib/sh/input_avail.c 2023-09-09 09:07:14.702070414 -0600 +--- bash-5.2.15/lib/sh/input_avail.c 2021-05-24 08:16:33.000000000 -0700 ++++ source/lib/sh/input_avail.c 2024-12-05 16:04:07.576380974 -0800 @@ -33,7 +33,7 @@ # include #endif /* HAVE_SYS_FILE_H */ @@ -195,8 +202,8 @@ diff -ruwN bash-5.2.15/lib/sh/input_avail.c source/lib/sh/input_avail.c #endif diff -ruwN bash-5.2.15/lib/sh/strtoimax.c source/lib/sh/strtoimax.c ---- bash-5.2.15/lib/sh/strtoimax.c 2021-09-10 08:32:35.000000000 -0600 -+++ source/lib/sh/strtoimax.c 2023-09-09 09:10:21.618185121 -0600 +--- bash-5.2.15/lib/sh/strtoimax.c 2021-09-10 07:32:35.000000000 -0700 ++++ source/lib/sh/strtoimax.c 2024-12-05 16:04:07.576380974 -0800 @@ -55,6 +55,8 @@ extern long long strtoll PARAMS((const char *, char **, int)); #endif @@ -216,8 +223,8 @@ diff -ruwN bash-5.2.15/lib/sh/strtoimax.c source/lib/sh/strtoimax.c # include int diff -ruwN bash-5.2.15/parse.y source/parse.y ---- bash-5.2.15/parse.y 2022-12-13 10:09:02.000000000 -0700 -+++ source/parse.y 2023-09-09 09:07:14.706070416 -0600 +--- bash-5.2.15/parse.y 2022-12-13 09:09:02.000000000 -0800 ++++ source/parse.y 2024-12-05 16:04:07.577380973 -0800 @@ -2625,6 +2625,7 @@ parser_state |= PST_ENDALIAS; /* We need to do this to make sure last_shell_getc_is_singlebyte returns @@ -235,8 +242,8 @@ diff -ruwN bash-5.2.15/parse.y source/parse.y } #endif diff -ruwN bash-5.2.15/y.tab.c source/y.tab.c ---- bash-5.2.15/y.tab.c 2022-12-13 10:09:02.000000000 -0700 -+++ source/y.tab.c 2023-09-09 09:07:14.706070416 -0600 +--- bash-5.2.15/y.tab.c 2022-12-13 09:09:02.000000000 -0800 ++++ source/y.tab.c 2024-12-05 16:04:07.579380972 -0800 @@ -4936,6 +4936,7 @@ parser_state |= PST_ENDALIAS; /* We need to do this to make sure last_shell_getc_is_singlebyte returns From e6192fc27b67126b9b3d6bbaf6deb538051d4b49 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Dec 2024 19:21:40 +0000 Subject: [PATCH 2187/3180] Add recipes --- recipes/wip/dev/lang/cjit/recipe.toml | 6 ++++++ recipes/wip/graphics/other/curvis/recipe.toml | 5 +++++ .../wip/net/download/parabolic/recipe.toml | 21 +++++++++++++++++++ recipes/wip/office/sheetsui/recipe.toml | 5 +++++ recipes/wip/search/clapgrep/recipe.toml | 11 ++++++++++ recipes/wip/sound/swyh-rs/recipe.toml | 5 +++++ recipes/wip/storage/stor-age/recipe.toml | 5 +++++ recipes/wip/terminal/bobr/recipe.toml | 5 +++++ recipes/wip/web/spider/recipe.toml | 11 ++++++++++ 9 files changed, 74 insertions(+) create mode 100644 recipes/wip/dev/lang/cjit/recipe.toml create mode 100644 recipes/wip/graphics/other/curvis/recipe.toml create mode 100644 recipes/wip/net/download/parabolic/recipe.toml create mode 100644 recipes/wip/office/sheetsui/recipe.toml create mode 100644 recipes/wip/search/clapgrep/recipe.toml create mode 100644 recipes/wip/sound/swyh-rs/recipe.toml create mode 100644 recipes/wip/storage/stor-age/recipe.toml create mode 100644 recipes/wip/terminal/bobr/recipe.toml create mode 100644 recipes/wip/web/spider/recipe.toml diff --git a/recipes/wip/dev/lang/cjit/recipe.toml b/recipes/wip/dev/lang/cjit/recipe.toml new file mode 100644 index 00000000..7c3020f1 --- /dev/null +++ b/recipes/wip/dev/lang/cjit/recipe.toml @@ -0,0 +1,6 @@ +#TODO write a gnu make target for redox, see: https://github.com/dyne/cjit#build-from-source +[source] +git = "https://github.com/dyne/cjit" +rev = "9a4321e64ea1af10e9e3c63de45af80b36846cda" +[build] +template = "custom" diff --git a/recipes/wip/graphics/other/curvis/recipe.toml b/recipes/wip/graphics/other/curvis/recipe.toml new file mode 100644 index 00000000..68c37663 --- /dev/null +++ b/recipes/wip/graphics/other/curvis/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/fragarriss/CurVis" +[build] +template = "cargo" diff --git a/recipes/wip/net/download/parabolic/recipe.toml b/recipes/wip/net/download/parabolic/recipe.toml new file mode 100644 index 00000000..ba84290f --- /dev/null +++ b/recipes/wip/net/download/parabolic/recipe.toml @@ -0,0 +1,21 @@ +#TODO it uses vcpkg for dependency management, see: https://github.com/NickvisionApps/parabolic#building-manually +[source] +git = "https://github.com/NickvisionApps/Parabolic" +rev = "b2188390ce14b83c41c68eef87e833d6fd8b7d2f" +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/office/sheetsui/recipe.toml b/recipes/wip/office/sheetsui/recipe.toml new file mode 100644 index 00000000..3468441b --- /dev/null +++ b/recipes/wip/office/sheetsui/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/zaphar/sheetsui" +[build] +template = "cargo" diff --git a/recipes/wip/search/clapgrep/recipe.toml b/recipes/wip/search/clapgrep/recipe.toml new file mode 100644 index 00000000..9159cad1 --- /dev/null +++ b/recipes/wip/search/clapgrep/recipe.toml @@ -0,0 +1,11 @@ +#TODO write a script to copy the data files, see: https://github.com/luleyleo/clapgrep/blob/main/makefile +[source] +git = "https://github.com/luleyleo/clapgrep" +[build] +template = "custom" +dependencies = [ + "gtk4", +] +script = """ +cookbook_cargo_packages clapgrep-gnome +""" diff --git a/recipes/wip/sound/swyh-rs/recipe.toml b/recipes/wip/sound/swyh-rs/recipe.toml new file mode 100644 index 00000000..7dc591fd --- /dev/null +++ b/recipes/wip/sound/swyh-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/dheijl/swyh-rs" +[build] +template = "cargo" diff --git a/recipes/wip/storage/stor-age/recipe.toml b/recipes/wip/storage/stor-age/recipe.toml new file mode 100644 index 00000000..04b237b4 --- /dev/null +++ b/recipes/wip/storage/stor-age/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/idiv-biodiversity/stor-age" +[build] +template = "cargo" diff --git a/recipes/wip/terminal/bobr/recipe.toml b/recipes/wip/terminal/bobr/recipe.toml new file mode 100644 index 00000000..a7632aa7 --- /dev/null +++ b/recipes/wip/terminal/bobr/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/cchexcode/bobr" +[build] +template = "cargo" diff --git a/recipes/wip/web/spider/recipe.toml b/recipes/wip/web/spider/recipe.toml new file mode 100644 index 00000000..e153a931 --- /dev/null +++ b/recipes/wip/web/spider/recipe.toml @@ -0,0 +1,11 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/spider-rs/spider" +[build] +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +cookbook_cargo_packages spider_cli +""" From da6a8ae623bde07884ea86a497bfada16c50eb4d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Dec 2024 21:22:10 +0000 Subject: [PATCH 2188/3180] Add recipes --- recipes/wip/graphics/vr/alvr/recipe.toml | 18 ++++++++++++++++++ recipes/wip/tui/nnn/recipe.toml | 10 ++++++++++ 2 files changed, 28 insertions(+) create mode 100644 recipes/wip/graphics/vr/alvr/recipe.toml create mode 100644 recipes/wip/tui/nnn/recipe.toml diff --git a/recipes/wip/graphics/vr/alvr/recipe.toml b/recipes/wip/graphics/vr/alvr/recipe.toml new file mode 100644 index 00000000..857198aa --- /dev/null +++ b/recipes/wip/graphics/vr/alvr/recipe.toml @@ -0,0 +1,18 @@ +#TODO missing script for cargo-xtask, see: https://github.com/alvr-org/ALVR/wiki/Building-From-Source +#TODO probably missing dependencies, see: https://github.com/alvr-org/ALVR/wiki/Building-From-Source#streamer-building +[source] +git = "https://github.com/alvr-org/ALVR" +[build] +template = "custom" +dependencies = [ + "openssl1", + "gtk3", + "libvulkan", + "libunwind", + "x264", + "x265", + "libxcb", + "libxkbcommon", + "libva", + "pipewire", +] diff --git a/recipes/wip/tui/nnn/recipe.toml b/recipes/wip/tui/nnn/recipe.toml new file mode 100644 index 00000000..98f60a31 --- /dev/null +++ b/recipes/wip/tui/nnn/recipe.toml @@ -0,0 +1,10 @@ +#TODO write a script for cross-compilation +# how to static link the libraries: https://github.com/jarun/nnn/wiki/Developer-guides#static-compilation +[source] +tar = "https://github.com/jarun/nnn/releases/download/v5.0/nnn-v5.0.tar.gz" +[build] +template = "custom" +dependencies = [ + "ncursesw", + "readline", +] From f92bff0e1f6e344205fc4851465c362209819c07 Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Fri, 13 Dec 2024 01:43:16 -0500 Subject: [PATCH 2189/3180] Package archives/lz4 --- recipes/archives/lz4/recipe.toml | 18 +++++++++++++++ recipes/archives/lz4/redox.patch | 34 ++++++++++++++++++++++++++++ recipes/wip/archives/lz4/recipe.toml | 6 ----- 3 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 recipes/archives/lz4/recipe.toml create mode 100644 recipes/archives/lz4/redox.patch delete mode 100644 recipes/wip/archives/lz4/recipe.toml diff --git a/recipes/archives/lz4/recipe.toml b/recipes/archives/lz4/recipe.toml new file mode 100644 index 00000000..bd1763e5 --- /dev/null +++ b/recipes/archives/lz4/recipe.toml @@ -0,0 +1,18 @@ +[source] +tar = "https://github.com/lz4/lz4/releases/download/v1.10.0/lz4-1.10.0.tar.gz" +blake3 = "3e69fd475e7852e17594985528b5232afeba7d3d56cfebe2e89071768b2ab36a" +patches = ["redox.patch"] + +[build] +template = "custom" +script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ + +# No configure provided +COOKBOOK_CONFIGURE="true" +COOKBOOK_CONFIGURE_FLAGS="" + +export CPPFLAGS="${CPPFLAGS} -D_REDOX" + +cookbook_configure +""" diff --git a/recipes/archives/lz4/redox.patch b/recipes/archives/lz4/redox.patch new file mode 100644 index 00000000..095ae277 --- /dev/null +++ b/recipes/archives/lz4/redox.patch @@ -0,0 +1,34 @@ +diff '--color=auto' -ruwN source/programs/util.h source-new/programs/util.h +--- source/programs/util.h 2024-07-21 13:29:49.000000000 -0400 ++++ source-new/programs/util.h 2024-12-13 02:21:03.032769559 -0500 +@@ -52,6 +52,9 @@ + #include /* time */ + #include /* INT_MAX */ + #include ++#if defined(_REDOX) ++# include /* utimes */ ++#endif + + + +@@ -239,12 +242,20 @@ + timebuf.modtime = statbuf->st_mtime; + res += utime(filename, &timebuf); /* set access and modification times */ + #else ++ #if defined(_REDOX) ++ struct timeval timebuf[2]; ++ memset(timebuf, 0, sizeof(timebuf)); ++ timebuf[0].tv_usec = UTIME_NOW; ++ timebuf[1].tv_sec = statbuf->st_mtime; ++ res += utimes(filename, timebuf); ++ #else + struct timespec timebuf[2]; + memset(timebuf, 0, sizeof(timebuf)); + timebuf[0].tv_nsec = UTIME_NOW; + timebuf[1].tv_sec = statbuf->st_mtime; + res += utimensat(AT_FDCWD, filename, timebuf, 0); /* set access and modification times */ + #endif ++#endif + } + + #if !defined(_WIN32) diff --git a/recipes/wip/archives/lz4/recipe.toml b/recipes/wip/archives/lz4/recipe.toml deleted file mode 100644 index c3a62ca5..00000000 --- a/recipes/wip/archives/lz4/recipe.toml +++ /dev/null @@ -1,6 +0,0 @@ -#TODO missing script for "make", see https://github.com/lz4/lz4#installation -[source] -git = "https://github.com/lz4/lz4" -rev = "5ff839680134437dbf4678f3d0c7b371d84f4964" -[build] -template = "custom" From 32f68d081f85427c4b33f475d020c8e848ba3dea Mon Sep 17 00:00:00 2001 From: Andrey Turkin Date: Wed, 18 Dec 2024 20:53:15 +0300 Subject: [PATCH 2190/3180] Fix bcm2835-sdhcid location It is referenced from init.rc so it should be in bin just like the other drivers ran by init. --- recipes/core/drivers-initfs/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/core/drivers-initfs/recipe.toml b/recipes/core/drivers-initfs/recipe.toml index 7f35030d..402f9227 100644 --- a/recipes/core/drivers-initfs/recipe.toml +++ b/recipes/core/drivers-initfs/recipe.toml @@ -28,7 +28,7 @@ x86_common_bins() aarch64_bins() { case "${BOARD}" in - raspi3b | raspi3bp) + raspi3b*) BINS+=(bcm2835-sdhcid) ;; *) @@ -61,7 +61,7 @@ export CARGO_PROFILE_RELEASE_PANIC=abort for bin in "${BINS[@]}" do case "${bin}" in - pcid | fbcond | inputd | vesad | lived | ps2d | acpid) + pcid | fbcond | inputd | vesad | lived | ps2d | acpid | bcm2835-sdhcid) cp -v "target/${TARGET}/release/${bin}" "${COOKBOOK_STAGE}/bin" ;; *) From 4eff119dd598d19ab1db1518759d3694b8edd98e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 18 Dec 2024 14:50:43 -0700 Subject: [PATCH 2191/3180] xz: use 5.2.13 tar release --- recipes/tools/xz/recipe.toml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/recipes/tools/xz/recipe.toml b/recipes/tools/xz/recipe.toml index c0ed52b9..8fe1637b 100644 --- a/recipes/tools/xz/recipe.toml +++ b/recipes/tools/xz/recipe.toml @@ -1,12 +1,10 @@ [source] -git = "https://github.com/tukaani-project/xz" -# v5.2.5 -rev = "2327a461e1afce862c22269b80d3517801103c1b" +tar = "https://github.com/tukaani-project/xz/releases/download/v5.2.13/xz-5.2.13.tar.gz" +blake3 = "edc6350542e8cb7188a878135e5b9bd592d687e5b47451ca1c89d51cc4bc6b53" [build] template = "custom" script = """ -(cd ${COOKBOOK_SOURCE} && ./autogen.sh) export CFLAGS="-static" COOKBOOK_CONFIGURE_FLAGS=( --host="${GNU_TARGET}" From f1a3e4a02d89b8879c491721c1f6ac58bbe59a41 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 19 Dec 2024 23:01:37 +0000 Subject: [PATCH 2192/3180] Update the fish-shell recipe --- recipes/wip/shells/fish-shell/recipe.toml | 31 ++++++++++++----------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/recipes/wip/shells/fish-shell/recipe.toml b/recipes/wip/shells/fish-shell/recipe.toml index 8ac57d38..34e55922 100644 --- a/recipes/wip/shells/fish-shell/recipe.toml +++ b/recipes/wip/shells/fish-shell/recipe.toml @@ -1,6 +1,6 @@ -#TODO probably wrong script, see https://github.com/fish-shell/fish-shell#building-from-source-all-platforms---makefile-generator +#TODO not compiled or tested [source] -tar = "https://github.com/fish-shell/fish-shell/releases/download/3.6.1/fish-3.6.1.tar.xz" +git = "https://github.com/fish-shell/fish-shell" [build] template = "custom" dependencies = [ @@ -10,17 +10,18 @@ dependencies = [ ] script = """ export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure +cookbook_cargo +#COOKBOOK_CONFIGURE="cmake" +#COOKBOOK_CONFIGURE_FLAGS=( +# -DCMAKE_BUILD_TYPE=Release +# -DCMAKE_CROSSCOMPILING=True +# -DCMAKE_EXE_LINKER_FLAGS="-static" +# -DCMAKE_INSTALL_PREFIX="/" +# -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" +# -DCMAKE_SYSTEM_NAME=Generic +# -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" +# -DCMAKE_VERBOSE_MAKEFILE=On +#"${COOKBOOK_SOURCE}" +#) +#cookbook_configure """ From 07a1c46c361c7ef521627debe9a1e480335939bd Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Tue, 24 Dec 2024 02:22:14 +1100 Subject: [PATCH 2193/3180] fix(curl): build `autotools_recursive_regenerate` correctly includes libtool. It just recursively runs: $ autoreconf -fvi "$@" -I${COOKBOOK_HOST_SYSROOT}/share/aclocal Signed-off-by: Anhad Singh --- recipes/net/curl/recipe.toml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/recipes/net/curl/recipe.toml b/recipes/net/curl/recipe.toml index 69078f6f..b55b006c 100644 --- a/recipes/net/curl/recipe.toml +++ b/recipes/net/curl/recipe.toml @@ -14,7 +14,9 @@ dependencies = [ script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" -autoreconf -i +# FIXME(andypython): dynamically compile +DYNAMIC_INIT +autotools_recursive_regenerate COOKBOOK_CONFIGURE="./configure" COOKBOOK_CONFIGURE_FLAGS=( --build="$(cc -dumpmachine)" From 229c5ecc8b45161f6d0a81c8c2f15ce9558e81a0 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Tue, 24 Dec 2024 21:45:22 +0100 Subject: [PATCH 2194/3180] Run fbbootlogd during startup --- recipes/core/drivers-initfs/recipe.toml | 3 ++- recipes/core/initfs/aarch64-unknown-redox/init.rc | 5 +++-- recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp | 5 +++-- recipes/core/initfs/init.rc | 5 +++-- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/recipes/core/drivers-initfs/recipe.toml b/recipes/core/drivers-initfs/recipe.toml index 402f9227..f4d3fd1f 100644 --- a/recipes/core/drivers-initfs/recipe.toml +++ b/recipes/core/drivers-initfs/recipe.toml @@ -6,6 +6,7 @@ template = "custom" script = """ BINS=( acpid + fbbootlogd fbcond inputd lived @@ -61,7 +62,7 @@ export CARGO_PROFILE_RELEASE_PANIC=abort for bin in "${BINS[@]}" do case "${bin}" in - pcid | fbcond | inputd | vesad | lived | ps2d | acpid | bcm2835-sdhcid) + pcid | fbbootlogd | fbcond | inputd | vesad | lived | ps2d | acpid | bcm2835-sdhcid) cp -v "target/${TARGET}/release/${bin}" "${COOKBOOK_STAGE}/bin" ;; *) diff --git a/recipes/core/initfs/aarch64-unknown-redox/init.rc b/recipes/core/initfs/aarch64-unknown-redox/init.rc index 4943384a..0c64d22c 100644 --- a/recipes/core/initfs/aarch64-unknown-redox/init.rc +++ b/recipes/core/initfs/aarch64-unknown-redox/init.rc @@ -7,8 +7,9 @@ inputd vesad G G G unset FRAMEBUFFER_ADDR FRAMEBUFFER_VIRT FRAMEBUFFER_WIDTH FRAMEBUFFER_HEIGHT FRAMEBUFFER_STRIDE #TODO: unset FRAMEBUFFER1 and beyond? -fbcond 1 2 -logd /scheme/debug /scheme/fbcon/1 +fbbootlogd +fbcond 2 +logd /scheme/debug /scheme/fbbootlog stdio /scheme/log ramfs logging acpid diff --git a/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp b/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp index 741469f9..3bcad17e 100644 --- a/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp +++ b/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp @@ -7,8 +7,9 @@ inputd vesad G G G unset FRAMEBUFFER_ADDR FRAMEBUFFER_VIRT FRAMEBUFFER_WIDTH FRAMEBUFFER_HEIGHT FRAMEBUFFER_STRIDE #TODO: unset FRAMEBUFFER1 and beyond? -fbcond 1 2 -logd /scheme/debug /scheme/fbcon/1 +fbbootlogd +fbcond 2 +logd /scheme/debug /scheme/fbbootlog stdio /scheme/log ramfs logging lived diff --git a/recipes/core/initfs/init.rc b/recipes/core/initfs/init.rc index bdeb3765..48a5855b 100644 --- a/recipes/core/initfs/init.rc +++ b/recipes/core/initfs/init.rc @@ -7,8 +7,9 @@ inputd vesad G G G unset FRAMEBUFFER_ADDR FRAMEBUFFER_VIRT FRAMEBUFFER_WIDTH FRAMEBUFFER_HEIGHT FRAMEBUFFER_STRIDE #TODO: unset FRAMEBUFFER1 and beyond? -fbcond 1 2 -logd /scheme/debug /scheme/fbcon/1 +fbbootlogd +fbcond 2 +logd /scheme/debug /scheme/fbbootlog stdio /scheme/log ramfs logging ps2d us From 30239250d6fe4448f7081144125e3bb74e3e7042 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 30 Dec 2024 10:04:44 -0700 Subject: [PATCH 2195/3180] Add mupen64plus recipe --- recipes/emulators/mupen64plus/recipe.toml | 35 +++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 recipes/emulators/mupen64plus/recipe.toml diff --git a/recipes/emulators/mupen64plus/recipe.toml b/recipes/emulators/mupen64plus/recipe.toml new file mode 100644 index 00000000..d28ca0bc --- /dev/null +++ b/recipes/emulators/mupen64plus/recipe.toml @@ -0,0 +1,35 @@ +[source] +tar = "https://github.com/mupen64plus/mupen64plus-core/releases/download/2.6.0/mupen64plus-core-src-2.6.0.tar.gz" +blake3 = "faef6f557b32165adf5ad7f12a22f1dfda98893f59cbf910b697a86e610652a9" + +[build] +template = "custom" +dependencies = [ + "freetype2", + "liborbital", + "libpng", + "llvm18", + "mesa", + "mesa-glu", + "sdl2", + "zlib", +] +script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ +#TODO: support Redox in UNAME +"${COOKBOOK_MAKE}" \ + CROSS_COMPILE="${TARGET}-" \ + GLES_LIB="" \ + GL_CFLAGS="$("${TARGET}-pkg-config" --cflags osmesa)" \ + GL_LDLIBS="$("${TARGET}-pkg-config" --libs osmesa)" \ + HOST_CPU="${TARGET%%-*}" \ + SDL_CFLAGS="$("${TARGET}-pkg-config" --cflags sdl2)" \ + SDL_LDFLAGS="$("${TARGET}-pkg-config" --libs sdl2)" \ + UNAME=Linux \ + USE_GLES=1 \ + V=1 \ + VULKAN=0 \ + -C projects/unix \ + -j "${COOKBOOK_MAKE_JOBS}" \ + all +""" From 73924de28fd70a4fa9bbd08d7e8d4c3ecd232076 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 30 Dec 2024 13:01:45 -0700 Subject: [PATCH 2196/3180] gnu-make: use glob implementation from relibc --- recipes/dev/gnu-make/recipe.toml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/recipes/dev/gnu-make/recipe.toml b/recipes/dev/gnu-make/recipe.toml index 0698ffd2..33ead814 100644 --- a/recipes/dev/gnu-make/recipe.toml +++ b/recipes/dev/gnu-make/recipe.toml @@ -6,5 +6,10 @@ patches = [ ] [build] -template = "configure" - +template = "custom" +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + make_cv_sys_gnu_glob=yes +) +cookbook_configure +""" From 5a787b283e1d13f330ebd25a5517012a24772f7d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 3 Jan 2025 10:27:48 +0000 Subject: [PATCH 2197/3180] Add recipes --- recipes/wip/dev/other/harper/recipe.toml | 8 ++++++++ recipes/wip/tui/heretek/recipe.toml | 5 +++++ 2 files changed, 13 insertions(+) create mode 100644 recipes/wip/dev/other/harper/recipe.toml create mode 100644 recipes/wip/tui/heretek/recipe.toml diff --git a/recipes/wip/dev/other/harper/recipe.toml b/recipes/wip/dev/other/harper/recipe.toml new file mode 100644 index 00000000..fb022eb9 --- /dev/null +++ b/recipes/wip/dev/other/harper/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Automattic/harper" +[build] +template = "custom" +script = """ +cookbook_cargo_packages harper-ls +""" diff --git a/recipes/wip/tui/heretek/recipe.toml b/recipes/wip/tui/heretek/recipe.toml new file mode 100644 index 00000000..4264a4be --- /dev/null +++ b/recipes/wip/tui/heretek/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/wcampbell0x2a/heretek" +[build] +template = "cargo" From 1d5b170e3c2e6d177866787928b70116cdaf8fdf Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Sun, 5 Jan 2025 02:58:23 -0500 Subject: [PATCH 2198/3180] fix: GNU Make detects our glob.h GNU Make's configure detects our new `glob.h` so we don't have to override it anymore. Overriding it causes compilation to fail. --- recipes/dev/gnu-make/recipe.toml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/recipes/dev/gnu-make/recipe.toml b/recipes/dev/gnu-make/recipe.toml index 33ead814..7db31a04 100644 --- a/recipes/dev/gnu-make/recipe.toml +++ b/recipes/dev/gnu-make/recipe.toml @@ -6,10 +6,4 @@ patches = [ ] [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE_FLAGS+=( - make_cv_sys_gnu_glob=yes -) -cookbook_configure -""" +template = "configure" From dd43b57f1e777c55f9f9f4a140518e25a2050fe3 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 9 Jan 2025 08:44:14 -0700 Subject: [PATCH 2199/3180] Add libmodplug1 --- recipes/libs/libmodplug1/recipe.toml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 recipes/libs/libmodplug1/recipe.toml diff --git a/recipes/libs/libmodplug1/recipe.toml b/recipes/libs/libmodplug1/recipe.toml new file mode 100644 index 00000000..1ab705cc --- /dev/null +++ b/recipes/libs/libmodplug1/recipe.toml @@ -0,0 +1,9 @@ +[source] +tar = "https://pilotfiber.dl.sourceforge.net/project/modplug-xmms/libmodplug/0.8.9.0/libmodplug-0.8.9.0.tar.gz" +blake3 = "01d71f7fe4e1abeb848db02b74c70ab2fd51e824f5ea7e9e18631571a76c3592" +script = """ +wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +""" + +[build] +template = "configure" From c0ca2c2f9e4c32b3b221e3bd0412d4eb3f1cbc6d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 9 Jan 2025 09:38:09 -0700 Subject: [PATCH 2200/3180] Fix build of openal --- recipes/wip/libs/audio/openal/recipe.toml | 62 +++++++++++++++++++---- recipes/wip/libs/audio/openal/redox.patch | 47 +++++++++++++++++ 2 files changed, 98 insertions(+), 11 deletions(-) create mode 100644 recipes/wip/libs/audio/openal/redox.patch diff --git a/recipes/wip/libs/audio/openal/recipe.toml b/recipes/wip/libs/audio/openal/recipe.toml index b3aa3ee4..6e8c4464 100644 --- a/recipes/wip/libs/audio/openal/recipe.toml +++ b/recipes/wip/libs/audio/openal/recipe.toml @@ -1,20 +1,60 @@ #TODO probably wrong script, see https://openal-soft.org/#installing [source] -tar = "https://openal-soft.org/openal-releases/openal-soft-1.23.1.tar.bz2" +tar = "https://openal-soft.org/openal-releases/openal-soft-1.24.1.tar.bz2" +blake3 = "8aeaa8307d3e14331ad20761c537ffebe70975cb7c3343e8d5c0c0ed7bc16eab" +patch = [ + "redox.patch" +] + [build] template = "custom" +dependencies = [ + "liborbital", + "libsndfile", + "llvm18", + "mesa", + "sdl2", + "zlib", +] script = """ - COOKBOOK_CONFIGURE="cmake" - COOKBOOK_CONFIGURE_FLAGS=( +export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" +export CXXFLAGS="${CXXFLAGS} -I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" +cat > redox.cmake <(u0-u1)) return diff; + ++ch0; ++ch1; + } +diff -ruwN openal-soft-1.24.1/common/althreads.h source/common/althreads.h +--- openal-soft-1.24.1/common/althreads.h 2024-11-27 20:21:16.000000000 -0700 ++++ source/common/althreads.h 2025-01-09 09:31:58.064326293 -0700 +@@ -9,7 +9,7 @@ + #define WIN32_LEAN_AND_MEAN + #include + +-#elif defined(__APPLE__) ++#elif defined(__APPLE__) || defined(__redox__) + + #include + +@@ -79,7 +79,7 @@ + [[nodiscard]] + auto get() const noexcept -> T { return from_ptr(TlsGetValue(mTss)); } + +-#elif defined(__APPLE__) ++#elif defined(__APPLE__) || defined(__redox__) + + pthread_key_t mTss{}; + +diff -ruwN openal-soft-1.24.1/core/helpers.cpp source/core/helpers.cpp +--- openal-soft-1.24.1/core/helpers.cpp 2024-11-27 20:21:16.000000000 -0700 ++++ source/core/helpers.cpp 2025-01-09 09:36:47.992595649 -0700 +@@ -372,7 +372,7 @@ + bool SetRTPriorityPthread(int prio [[maybe_unused]]) + { + int err{ENOTSUP}; +-#if defined(HAVE_PTHREAD_SETSCHEDPARAM) && !defined(__OpenBSD__) ++#if defined(HAVE_PTHREAD_SETSCHEDPARAM) && !defined(__OpenBSD__) && !defined(__redox__) + /* Get the min and max priority for SCHED_RR. Limit the max priority to + * half, for now, to ensure the thread can't take the highest priority and + * go rogue. From 3ff6cdb794b83a8496b1486dfb14bd0d05e8b09f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 9 Jan 2025 10:16:13 -0700 Subject: [PATCH 2201/3180] Fix libtheora --- recipes/wip/libs/other/libtheora/recipe.toml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/recipes/wip/libs/other/libtheora/recipe.toml b/recipes/wip/libs/other/libtheora/recipe.toml index 78e901d9..b03418d8 100644 --- a/recipes/wip/libs/other/libtheora/recipe.toml +++ b/recipes/wip/libs/other/libtheora/recipe.toml @@ -1,6 +1,10 @@ #TODO the redox target is not supported on the configure script [source] tar = "http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.bz2" +script = """ +wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +""" + [build] template = "configure" dependencies = [ From 3edc093b87869f797f24b187973fb00fd9dd6eab Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 9 Jan 2025 11:54:18 -0700 Subject: [PATCH 2202/3180] Add love --- recipes/wip/games/other/love/recipe.toml | 79 ++++++++++++++++++++++++ recipes/wip/games/other/love/redox.patch | 38 ++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 recipes/wip/games/other/love/recipe.toml create mode 100644 recipes/wip/games/other/love/redox.patch diff --git a/recipes/wip/games/other/love/recipe.toml b/recipes/wip/games/other/love/recipe.toml new file mode 100644 index 00000000..56144bc6 --- /dev/null +++ b/recipes/wip/games/other/love/recipe.toml @@ -0,0 +1,79 @@ +[source] +tar = "https://github.com/love2d/love/archive/refs/tags/11.5.tar.gz" +blake3 = "1fe441b04af1c0aa12b5d12f274fd892e6f307bcc882888c3a1ec048294a25c7" +patches = [ + "redox.patch" +] + +[build] +template = "custom" +dependencies = [ + "freetype2", + "libmodplug1", + "libogg", + "liborbital", + "libpng", + "libtheora", + "libvorbis", + "llvm18", + "luajit", + "openal", + "mesa", + "mpg123", + "sdl2", + "zlib", +] +script = """ +export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" +export CXXFLAGS="${CXXFLAGS} -I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" + +cat > redox.cmake < Date: Thu, 9 Jan 2025 14:36:37 -0700 Subject: [PATCH 2203/3180] openal: enable SDL2 audio backend --- recipes/wip/libs/audio/openal/recipe.toml | 8 +++++--- recipes/wip/libs/audio/openal/redox.patch | 12 ++++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/recipes/wip/libs/audio/openal/recipe.toml b/recipes/wip/libs/audio/openal/recipe.toml index 6e8c4464..eca21a0f 100644 --- a/recipes/wip/libs/audio/openal/recipe.toml +++ b/recipes/wip/libs/audio/openal/recipe.toml @@ -19,6 +19,7 @@ dependencies = [ script = """ export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" export CXXFLAGS="${CXXFLAGS} -I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" + cat > redox.cmake < Date: Thu, 9 Jan 2025 15:20:51 -0700 Subject: [PATCH 2204/3180] Use /etc/ssl/certs for SSL certificates --- recipes/net/curl/recipe.toml | 2 +- recipes/other/ca-certificates/recipe.toml | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/recipes/net/curl/recipe.toml b/recipes/net/curl/recipe.toml index b55b006c..4c28f0d2 100644 --- a/recipes/net/curl/recipe.toml +++ b/recipes/net/curl/recipe.toml @@ -29,7 +29,7 @@ COOKBOOK_CONFIGURE_FLAGS=( --disable-tftp --disable-threaded-resolver --enable-static - --with-ca-path=/ssl/certs + --with-ca-path=/etc/ssl/certs --with-nghttp2="${COOKBOOK_SYSROOT}" --with-ssl="${COOKBOOK_SYSROOT}" --with-zlib="${COOKBOOK_SYSROOT}" diff --git a/recipes/other/ca-certificates/recipe.toml b/recipes/other/ca-certificates/recipe.toml index cbd70827..b7674f22 100644 --- a/recipes/other/ca-certificates/recipe.toml +++ b/recipes/other/ca-certificates/recipe.toml @@ -4,6 +4,8 @@ git = "https://gitlab.redox-os.org/redox-os/ca-certificates.git" [build] template = "custom" script = """ -mkdir -pv "${COOKBOOK_STAGE}/ssl" -cp -rv "${COOKBOOK_SOURCE}/certs" "${COOKBOOK_STAGE}/ssl/certs" +mkdir -pv "${COOKBOOK_STAGE}/etc/ssl" +cp -rv "${COOKBOOK_SOURCE}/certs" "${COOKBOOK_STAGE}/etc/ssl/certs" +#TODO: remove deprecated location after all recipes are fixed +ln -s etc/ssl "${COOKBOOK_STAGE}/ssl" """ From ad53bcc970eec3c26e2ff06c1a1770f32708e4b3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 11 Jan 2025 08:30:52 +0000 Subject: [PATCH 2205/3180] Add recipes --- recipes/wip/dev/analysis/zizmor/recipe.toml | 5 +++++ recipes/wip/edu/rusty-tape/recipe.toml | 10 ++++++++++ recipes/wip/finance/mgmt/tackler-ng/recipe.toml | 10 ++++++++++ .../wip/math/cosmic-ext-calculator/recipe.toml | 15 +++++++++++++++ .../monitors/cosmic-ext-observatory/recipe.toml | 15 +++++++++++++++ .../weather/cosmic-ext-forecast/recipe.toml | 15 +++++++++++++++ 6 files changed, 70 insertions(+) create mode 100644 recipes/wip/dev/analysis/zizmor/recipe.toml create mode 100644 recipes/wip/edu/rusty-tape/recipe.toml create mode 100644 recipes/wip/finance/mgmt/tackler-ng/recipe.toml create mode 100644 recipes/wip/math/cosmic-ext-calculator/recipe.toml create mode 100644 recipes/wip/monitors/cosmic-ext-observatory/recipe.toml create mode 100644 recipes/wip/science/weather/cosmic-ext-forecast/recipe.toml diff --git a/recipes/wip/dev/analysis/zizmor/recipe.toml b/recipes/wip/dev/analysis/zizmor/recipe.toml new file mode 100644 index 00000000..61907213 --- /dev/null +++ b/recipes/wip/dev/analysis/zizmor/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/woodruffw/zizmor" +[build] +template = "cargo" diff --git a/recipes/wip/edu/rusty-tape/recipe.toml b/recipes/wip/edu/rusty-tape/recipe.toml new file mode 100644 index 00000000..755a33f3 --- /dev/null +++ b/recipes/wip/edu/rusty-tape/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Kkobarii/Rusty-Tape" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/rusty-tape +cp -rv "${COOKBOOK_SOURCE}"/data/* "${COOKBOOK_STAGE}"/usr/share/rusty-tape +cookbook_cargo +""" diff --git a/recipes/wip/finance/mgmt/tackler-ng/recipe.toml b/recipes/wip/finance/mgmt/tackler-ng/recipe.toml new file mode 100644 index 00000000..09092a70 --- /dev/null +++ b/recipes/wip/finance/mgmt/tackler-ng/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/e257-fi/tackler-ng" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/tackler-ng/examples +cp -rv "${COOKBOOK_SOURCE}"/examples/* "${COOKBOOK_STAGE}"/usr/share/tackler-ng/examples +cookbook_cargo_packages tackler +""" diff --git a/recipes/wip/math/cosmic-ext-calculator/recipe.toml b/recipes/wip/math/cosmic-ext-calculator/recipe.toml new file mode 100644 index 00000000..ce024aa3 --- /dev/null +++ b/recipes/wip/math/cosmic-ext-calculator/recipe.toml @@ -0,0 +1,15 @@ +#TODO not compiled or tested +#TODO verify if the desktop shortcut and icon configuration is correct +[source] +git = "https://github.com/cosmic-utils/calculator" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/applications +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/metainfo +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/icons +cp -rv "${COOKBOOK_SOURCE}"/res/app.desktop "${COOKBOOK_STAGE}"/usr/share/applications/dev.edfloreshz.Calculator.desktop +cp -rv "${COOKBOOK_SOURCE}"/res/metainfo.xml "${COOKBOOK_STAGE}"/usr/share/metainfo/dev.edfloreshz.Calculator.metainfo.xml +cp -rv "${COOKBOOK_SOURCE}"/res/icons/hicolor "${COOKBOOK_STAGE}"/usr/share/icons +cookbook_cargo +""" diff --git a/recipes/wip/monitors/cosmic-ext-observatory/recipe.toml b/recipes/wip/monitors/cosmic-ext-observatory/recipe.toml new file mode 100644 index 00000000..70c3c59f --- /dev/null +++ b/recipes/wip/monitors/cosmic-ext-observatory/recipe.toml @@ -0,0 +1,15 @@ +#TODO not compiled or tested +#TODO verify if the resource commands are correct +[source] +git = "https://github.com/cosmic-utils/observatory" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/applications +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/metainfo +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/icons +cp -rv "${COOKBOOK_SOURCE}"/observatory/res/app.desktop "${COOKBOOK_STAGE}"/usr/share/applications/io.github.cosmic_utils.observatory.desktop +cp -rv "${COOKBOOK_SOURCE}"/observatory/res/metainfo.xml "${COOKBOOK_STAGE}"/usr/share/metainfo/io.github.cosmic_utils.observatory.metainfo.xml +cp -rv "${COOKBOOK_SOURCE}"/observatory/res/icons/hicolor "${COOKBOOK_STAGE}"/usr/share/icons +cookbook_cargo_packages observatory +""" diff --git a/recipes/wip/science/weather/cosmic-ext-forecast/recipe.toml b/recipes/wip/science/weather/cosmic-ext-forecast/recipe.toml new file mode 100644 index 00000000..1b35e524 --- /dev/null +++ b/recipes/wip/science/weather/cosmic-ext-forecast/recipe.toml @@ -0,0 +1,15 @@ +#TODO not compiled or tested +#TODO verify if the resource commands are correct +[source] +git = "https://github.com/cosmic-utils/forecast" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/applications +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/metainfo +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/icons +cp -rv "${COOKBOOK_SOURCE}"/res/com.jwestall.Forecast.desktop "${COOKBOOK_STAGE}"/usr/share/applications +cp -rv "${COOKBOOK_SOURCE}"/res/com.jwestall.Forecast.metainfo.xml "${COOKBOOK_STAGE}"/usr/share/metainfo +cp -rv "${COOKBOOK_SOURCE}"/res/icons/hicolor "${COOKBOOK_STAGE}"/usr/share/icons +cookbook_cargo +""" \ No newline at end of file From 87461fd72cd0d6e3ab8bf47cff749e80aa1212d1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 11 Jan 2025 08:41:36 +0000 Subject: [PATCH 2206/3180] Update recipes --- recipes/wip/games/math/cosmic-2048/recipe.toml | 5 ----- recipes/wip/games/math/cosmic-ext-2048/recipe.toml | 14 ++++++++++++++ recipes/wip/math/cosmic-ext-calculator/recipe.toml | 2 +- .../monitors/cosmic-ext-observatory/recipe.toml | 2 +- 4 files changed, 16 insertions(+), 7 deletions(-) delete mode 100644 recipes/wip/games/math/cosmic-2048/recipe.toml create mode 100644 recipes/wip/games/math/cosmic-ext-2048/recipe.toml diff --git a/recipes/wip/games/math/cosmic-2048/recipe.toml b/recipes/wip/games/math/cosmic-2048/recipe.toml deleted file mode 100644 index e3b83481..00000000 --- a/recipes/wip/games/math/cosmic-2048/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO not compiled or tested -[source] -git = "https://github.com/Kartonrealista/cosmic-ext-2048" -[build] -template = "cargo" diff --git a/recipes/wip/games/math/cosmic-ext-2048/recipe.toml b/recipes/wip/games/math/cosmic-ext-2048/recipe.toml new file mode 100644 index 00000000..872d66c0 --- /dev/null +++ b/recipes/wip/games/math/cosmic-ext-2048/recipe.toml @@ -0,0 +1,14 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Kartonrealista/cosmic-ext-2048" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/applications +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/metainfo +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/icons +cp -rv "${COOKBOOK_SOURCE}"/res/io.github.Kartonrealista.cosmic-ext-2048.desktop "${COOKBOOK_STAGE}"/usr/share/applications +cp -rv "${COOKBOOK_SOURCE}"/res/io.github.Kartonrealista.cosmic-ext-2048.metainfo.xml "${COOKBOOK_STAGE}"/usr/share/metainfo +cp -rv "${COOKBOOK_SOURCE}"/res/icons/hicolor "${COOKBOOK_STAGE}"/usr/share/icons +cookbook_cargo +""" diff --git a/recipes/wip/math/cosmic-ext-calculator/recipe.toml b/recipes/wip/math/cosmic-ext-calculator/recipe.toml index ce024aa3..57f0dd2a 100644 --- a/recipes/wip/math/cosmic-ext-calculator/recipe.toml +++ b/recipes/wip/math/cosmic-ext-calculator/recipe.toml @@ -10,6 +10,6 @@ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/metainfo mkdir -pv "${COOKBOOK_STAGE}"/usr/share/icons cp -rv "${COOKBOOK_SOURCE}"/res/app.desktop "${COOKBOOK_STAGE}"/usr/share/applications/dev.edfloreshz.Calculator.desktop cp -rv "${COOKBOOK_SOURCE}"/res/metainfo.xml "${COOKBOOK_STAGE}"/usr/share/metainfo/dev.edfloreshz.Calculator.metainfo.xml -cp -rv "${COOKBOOK_SOURCE}"/res/icons/hicolor "${COOKBOOK_STAGE}"/usr/share/icons +cp -rv "${COOKBOOK_SOURCE}"/res/icons/hicolor/scalable/apps/icon.svg "${COOKBOOK_STAGE}"/usr/share/icons/hicolor/scalable/apps/dev.edfloreshz.Calculator.svg cookbook_cargo """ diff --git a/recipes/wip/monitors/cosmic-ext-observatory/recipe.toml b/recipes/wip/monitors/cosmic-ext-observatory/recipe.toml index 70c3c59f..6dd545a2 100644 --- a/recipes/wip/monitors/cosmic-ext-observatory/recipe.toml +++ b/recipes/wip/monitors/cosmic-ext-observatory/recipe.toml @@ -10,6 +10,6 @@ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/metainfo mkdir -pv "${COOKBOOK_STAGE}"/usr/share/icons cp -rv "${COOKBOOK_SOURCE}"/observatory/res/app.desktop "${COOKBOOK_STAGE}"/usr/share/applications/io.github.cosmic_utils.observatory.desktop cp -rv "${COOKBOOK_SOURCE}"/observatory/res/metainfo.xml "${COOKBOOK_STAGE}"/usr/share/metainfo/io.github.cosmic_utils.observatory.metainfo.xml -cp -rv "${COOKBOOK_SOURCE}"/observatory/res/icons/hicolor "${COOKBOOK_STAGE}"/usr/share/icons +cp -rv "${COOKBOOK_SOURCE}"/observatory/res/icons/hicolor/scalable/apps/icon.svg "${COOKBOOK_STAGE}"/usr/share/icons/hicolor/scalable/apps/io.github.cosmic_utils.observatory.svg cookbook_cargo_packages observatory """ From 24dc0e53200c5d24af9474643a8fb08338dd4a3f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 11 Jan 2025 08:51:31 +0000 Subject: [PATCH 2207/3180] Add recipes --- recipes/wip/games/open-world/ethertia/recipe.toml | 5 +++++ recipes/wip/net/other/rallyup/recipe.toml | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 recipes/wip/games/open-world/ethertia/recipe.toml create mode 100644 recipes/wip/net/other/rallyup/recipe.toml diff --git a/recipes/wip/games/open-world/ethertia/recipe.toml b/recipes/wip/games/open-world/ethertia/recipe.toml new file mode 100644 index 00000000..747cf451 --- /dev/null +++ b/recipes/wip/games/open-world/ethertia/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Dreamtowards/Ethertum" +[build] +template = "cargo" diff --git a/recipes/wip/net/other/rallyup/recipe.toml b/recipes/wip/net/other/rallyup/recipe.toml new file mode 100644 index 00000000..aec0aedf --- /dev/null +++ b/recipes/wip/net/other/rallyup/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/darwindarak/rallyup" +[build] +template = "cargo" From 7bc8c317f2f4c641f6dd8ffd47dd195ba14ce4b2 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 11 Jan 2025 08:52:33 +0000 Subject: [PATCH 2208/3180] Rename the "sandbox" recipe --- recipes/wip/games/{sandbox => other/sandbox-rs}/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/games/{sandbox => other/sandbox-rs}/recipe.toml (100%) diff --git a/recipes/wip/games/sandbox/recipe.toml b/recipes/wip/games/other/sandbox-rs/recipe.toml similarity index 100% rename from recipes/wip/games/sandbox/recipe.toml rename to recipes/wip/games/other/sandbox-rs/recipe.toml From bfefd758aa0914cf352b7d3a9be26f4286889461 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 11 Jan 2025 09:07:14 +0000 Subject: [PATCH 2209/3180] Add recipes --- recipes/wip/net/p2p/easytier/recipe.toml | 8 ++++++++ recipes/wip/net/server/shoes/recipe.toml | 5 +++++ 2 files changed, 13 insertions(+) create mode 100644 recipes/wip/net/p2p/easytier/recipe.toml create mode 100644 recipes/wip/net/server/shoes/recipe.toml diff --git a/recipes/wip/net/p2p/easytier/recipe.toml b/recipes/wip/net/p2p/easytier/recipe.toml new file mode 100644 index 00000000..9f4a9438 --- /dev/null +++ b/recipes/wip/net/p2p/easytier/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/EasyTier/EasyTier" +[build] +template = "custom" +script = """ +cookbook_cargo_packages easytier +""" diff --git a/recipes/wip/net/server/shoes/recipe.toml b/recipes/wip/net/server/shoes/recipe.toml new file mode 100644 index 00000000..474d05ee --- /dev/null +++ b/recipes/wip/net/server/shoes/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/cfal/shoes" +[build] +template = "cargo" From e5ccc5c8521a59fe57f3f89cbdb5fe0088e74a23 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 11 Jan 2025 12:43:00 +0000 Subject: [PATCH 2210/3180] Add the boulette recipe --- recipes/wip/terminal/boulette/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/wip/terminal/boulette/recipe.toml diff --git a/recipes/wip/terminal/boulette/recipe.toml b/recipes/wip/terminal/boulette/recipe.toml new file mode 100644 index 00000000..4dd89dd8 --- /dev/null +++ b/recipes/wip/terminal/boulette/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/pipelight/boulette" +[build] +template = "cargo" From f953d63d65cba18990bac54c28cb5a93aedf7a6d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 14 Jan 2025 15:23:15 -0700 Subject: [PATCH 2211/3180] Fix llvm18 recipe on newer Pop --- recipes/dev/llvm18/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/dev/llvm18/recipe.toml b/recipes/dev/llvm18/recipe.toml index daeb31ad..c994290c 100644 --- a/recipes/dev/llvm18/recipe.toml +++ b/recipes/dev/llvm18/recipe.toml @@ -35,7 +35,7 @@ COOKBOOK_CONFIGURE_FLAGS=( -DLLVM_INCLUDE_EXAMPLES=Off -DLLVM_INCLUDE_TESTS=Off -DLLVM_INCLUDE_UTILS=Off - -DLLVM_OPTIMIZED_TABLEGEN=On + -DLLVM_TABLEGEN=$(which llvm-tblgen-18) -DLLVM_TARGET_ARCH="$(echo "${TARGET}" | cut -d - -f1)" -DLLVM_TARGETS_TO_BUILD=X86 # TODO: get from TARGET -DLLVM_TOOL_LLVM_COV_BUILD=Off From c224b9a101e0b3acf8202a97ee1a6a46cc8535f1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 14 Jan 2025 19:56:47 -0700 Subject: [PATCH 2212/3180] Revert "Fix llvm18 recipe on newer Pop" This reverts commit f953d63d65cba18990bac54c28cb5a93aedf7a6d. --- recipes/dev/llvm18/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/dev/llvm18/recipe.toml b/recipes/dev/llvm18/recipe.toml index c994290c..daeb31ad 100644 --- a/recipes/dev/llvm18/recipe.toml +++ b/recipes/dev/llvm18/recipe.toml @@ -35,7 +35,7 @@ COOKBOOK_CONFIGURE_FLAGS=( -DLLVM_INCLUDE_EXAMPLES=Off -DLLVM_INCLUDE_TESTS=Off -DLLVM_INCLUDE_UTILS=Off - -DLLVM_TABLEGEN=$(which llvm-tblgen-18) + -DLLVM_OPTIMIZED_TABLEGEN=On -DLLVM_TARGET_ARCH="$(echo "${TARGET}" | cut -d - -f1)" -DLLVM_TARGETS_TO_BUILD=X86 # TODO: get from TARGET -DLLVM_TOOL_LLVM_COV_BUILD=Off From 7b0cc7f404c2b605729237642915bb019a89b301 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 17 Jan 2025 15:04:37 +0000 Subject: [PATCH 2213/3180] Add recipes --- recipes/wip/crypto/stupidfs/recipe.toml | 5 +++++ recipes/wip/dev/build-system/werk/recipe.toml | 8 ++++++++ recipes/wip/image/editors/watermarker/recipe.toml | 5 +++++ recipes/wip/net/other/spiko/recipe.toml | 5 +++++ recipes/wip/text/quicknotes/recipe.toml | 5 +++++ recipes/wip/tools/nomino/recipe.toml | 5 +++++ recipes/wip/tui/manga-tui/recipe.toml | 8 ++++++++ 7 files changed, 41 insertions(+) create mode 100644 recipes/wip/crypto/stupidfs/recipe.toml create mode 100644 recipes/wip/dev/build-system/werk/recipe.toml create mode 100644 recipes/wip/image/editors/watermarker/recipe.toml create mode 100644 recipes/wip/net/other/spiko/recipe.toml create mode 100644 recipes/wip/text/quicknotes/recipe.toml create mode 100644 recipes/wip/tools/nomino/recipe.toml create mode 100644 recipes/wip/tui/manga-tui/recipe.toml diff --git a/recipes/wip/crypto/stupidfs/recipe.toml b/recipes/wip/crypto/stupidfs/recipe.toml new file mode 100644 index 00000000..a78f58e4 --- /dev/null +++ b/recipes/wip/crypto/stupidfs/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/GoldenStack/stupidfs" +[build] +template = "cargo" diff --git a/recipes/wip/dev/build-system/werk/recipe.toml b/recipes/wip/dev/build-system/werk/recipe.toml new file mode 100644 index 00000000..cfb32998 --- /dev/null +++ b/recipes/wip/dev/build-system/werk/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/simonask/werk" +[build] +template = "custom" +script = """ +cookbook_cargo_packages werk-cli +""" diff --git a/recipes/wip/image/editors/watermarker/recipe.toml b/recipes/wip/image/editors/watermarker/recipe.toml new file mode 100644 index 00000000..93bf65d6 --- /dev/null +++ b/recipes/wip/image/editors/watermarker/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/xomvio/watermarker" +[build] +template = "cargo" diff --git a/recipes/wip/net/other/spiko/recipe.toml b/recipes/wip/net/other/spiko/recipe.toml new file mode 100644 index 00000000..90231117 --- /dev/null +++ b/recipes/wip/net/other/spiko/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/trinhminhtriet/spiko" +[build] +template = "cargo" diff --git a/recipes/wip/text/quicknotes/recipe.toml b/recipes/wip/text/quicknotes/recipe.toml new file mode 100644 index 00000000..61623713 --- /dev/null +++ b/recipes/wip/text/quicknotes/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ollien/quicknotes" +[build] +template = "cargo" diff --git a/recipes/wip/tools/nomino/recipe.toml b/recipes/wip/tools/nomino/recipe.toml new file mode 100644 index 00000000..df58f8a8 --- /dev/null +++ b/recipes/wip/tools/nomino/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/yaa110/nomino" +[build] +template = "cargo" diff --git a/recipes/wip/tui/manga-tui/recipe.toml b/recipes/wip/tui/manga-tui/recipe.toml new file mode 100644 index 00000000..7eeb88be --- /dev/null +++ b/recipes/wip/tui/manga-tui/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/josueBarretogit/manga-tui" +[build] +template = "cargo" +dependencies = [ + "dbus", +] From 5c59a25ac8e171d83e39d10ec92a81583cf4b689 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 18 Jan 2025 16:10:13 +0000 Subject: [PATCH 2214/3180] Add recipes --- recipes/wip/video/webcam/tuicam/recipe.toml | 8 ++++++++ recipes/wip/web/marmite/recipe.toml | 5 +++++ 2 files changed, 13 insertions(+) create mode 100644 recipes/wip/video/webcam/tuicam/recipe.toml create mode 100644 recipes/wip/web/marmite/recipe.toml diff --git a/recipes/wip/video/webcam/tuicam/recipe.toml b/recipes/wip/video/webcam/tuicam/recipe.toml new file mode 100644 index 00000000..e56f5a0c --- /dev/null +++ b/recipes/wip/video/webcam/tuicam/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/hlsxx/tuicam" +[build] +template = "cargo" +dependencies = [ + "opencv4", +] diff --git a/recipes/wip/web/marmite/recipe.toml b/recipes/wip/web/marmite/recipe.toml new file mode 100644 index 00000000..e29ba59c --- /dev/null +++ b/recipes/wip/web/marmite/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/rochacbruno/marmite" +[build] +template = "cargo" From 0f6a6e259c9e4427840697fbb33308bda47a5c0f Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Thu, 26 Dec 2024 16:10:31 +1100 Subject: [PATCH 2215/3180] feat(cook): prescript for source scripts Signed-off-by: Anhad Singh --- src/bin/cook.rs | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 4b394b74..071b77ad 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -168,6 +168,30 @@ fn run_command_stdin(mut command: process::Command, stdin_data: &[u8]) -> Result Ok(()) } +static SHARED_PRESCRIPT: &str = r#" +function DYNAMIC_INIT { + echo "WARN: Program is being compiled dynamically." + + COOKBOOK_CONFIGURE_FLAGS=( + --host="${GNU_TARGET}" + --prefix="" + --enable-shared + --disable-static + ) + + # TODO: check paths for spaces + export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" + + COOKBOOK_AUTORECONF="autoreconf" + autotools_recursive_regenerate() { + for f in $(find . -name configure.ac -o -name configure.in -type f | sort); do + echo "* autotools regen in '$(dirname $f)'..." + ( cd "$(dirname "$f")" && "${COOKBOOK_AUTORECONF}" -fvi "$@" -I${COOKBOOK_HOST_SYSROOT}/share/aclocal ) + done + } +} +"#; + fn fetch(recipe_dir: &Path, source: &Option) -> Result { let source_dir = recipe_dir.join("source"); match source { @@ -392,7 +416,7 @@ fi"#, let mut command = Command::new("bash"); command.arg("-ex"); command.current_dir(&source_dir_tmp); - run_command_stdin(command, script.as_bytes())?; + run_command_stdin(command, format!("{SHARED_PRESCRIPT}\n{script}").as_bytes())?; } // Move source.tmp to source atomically @@ -716,7 +740,7 @@ done command }; - let full_script = format!("{}\n{}\n{}", pre_script, script, post_script); + let full_script = format!("{}\n{}\n{}\n{}", pre_script, SHARED_PRESCRIPT, script, post_script); run_command_stdin(command, full_script.as_bytes())?; // Move stage.tmp to stage atomically From 69e5aef6f3580a3176840bed8b6a58e2fea5c302 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Thu, 26 Dec 2024 16:11:03 +1100 Subject: [PATCH 2216/3180] feat(gnu-make): dynamic Signed-off-by: Anhad Singh --- recipes/dev/gnu-make/recipe.toml | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/recipes/dev/gnu-make/recipe.toml b/recipes/dev/gnu-make/recipe.toml index 7db31a04..fb274e60 100644 --- a/recipes/dev/gnu-make/recipe.toml +++ b/recipes/dev/gnu-make/recipe.toml @@ -1,9 +1,19 @@ -#TODO very basic makefiles are tested to work but needs more testing -[source] -tar = "http://ftp.gnu.org/gnu/make/make-4.4.tar.gz" -patches = [ - "redox.patch" -] - -[build] -template = "configure" +#TODO very basic makefiles are tested to work but needs more testing +[source] +tar = "http://ftp.gnu.org/gnu/make/make-4.4.tar.gz" +patches = [ + "redox.patch" +] +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +template = "custom" +script = """ +DYNAMIC_INIT +cp -rp "$COOKBOOK_SOURCE/." ./ +cookbook_configure +""" + From b4dcf6b9c0ebe509bca050754c7b9421c014dad4 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Thu, 26 Dec 2024 16:39:45 +1100 Subject: [PATCH 2217/3180] feat(libgmp): dynamic Signed-off-by: Anhad Singh --- recipes/libs/libgmp/recipe.toml | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/recipes/libs/libgmp/recipe.toml b/recipes/libs/libgmp/recipe.toml index e464785c..40057bb7 100644 --- a/recipes/libs/libgmp/recipe.toml +++ b/recipes/libs/libgmp/recipe.toml @@ -1,5 +1,19 @@ +# GNU Multiple Precision Arithmetic Library (GMP) is a free and open source +# library for arbitrary-precision arithmetic, operating on signed integers, +# rational numbers, and floating-point numbers. + [source] tar = "https://gmplib.org/download/gmp/gmp-6.2.1.tar.xz" blake3 = "52cecfbbe286820d1f8bc118769008acb6451bd074fe6dea9e868d54b2ada855" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + [build] -template = "configure" +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" + From 2551aeeea0d0aae3061cfb37d5519ce2f54a55dd Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Thu, 26 Dec 2024 23:57:27 +1100 Subject: [PATCH 2218/3180] feat(libgmp): bump to 6.3.0 Signed-off-by: Anhad Singh --- recipes/libs/libgmp/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/libs/libgmp/recipe.toml b/recipes/libs/libgmp/recipe.toml index 40057bb7..a2330bd6 100644 --- a/recipes/libs/libgmp/recipe.toml +++ b/recipes/libs/libgmp/recipe.toml @@ -3,8 +3,8 @@ # rational numbers, and floating-point numbers. [source] -tar = "https://gmplib.org/download/gmp/gmp-6.2.1.tar.xz" -blake3 = "52cecfbbe286820d1f8bc118769008acb6451bd074fe6dea9e868d54b2ada855" +tar = "https://gmplib.org/download/gmp/gmp-6.3.0.tar.xz" +blake3 = "fffe4996713928ae19331c8ef39129e46d3bf5b7182820656fd4639435cd83a4" script = """ DYNAMIC_INIT autotools_recursive_regenerate From 55fcf436d16d14122d843d2ec42105436887a6d2 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Thu, 26 Dec 2024 23:57:54 +1100 Subject: [PATCH 2219/3180] feat(libmpfr): dynamic Signed-off-by: Anhad Singh --- recipes/libs/libmpfr/recipe.toml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/recipes/libs/libmpfr/recipe.toml b/recipes/libs/libmpfr/recipe.toml index a1f9d91f..3e653153 100644 --- a/recipes/libs/libmpfr/recipe.toml +++ b/recipes/libs/libmpfr/recipe.toml @@ -1,9 +1,18 @@ [source] tar = "https://www.mpfr.org/mpfr-current/mpfr-4.2.1.tar.xz" blake3 = "f428023b8f7569fc1178faf63265ecb6cab4505fc3fce5d8c46af70db848a334" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" [build] +template = "custom" dependencies = [ "libgmp", ] -template = "configure" +script = """ +DYNAMIC_INIT +cookbook_configure +""" + From ebfbfde5320abadd275a0e0ed28824692429e93b Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Fri, 27 Dec 2024 00:33:21 +1100 Subject: [PATCH 2220/3180] feat(zlib): dynamic Signed-off-by: Anhad Singh --- recipes/libs/zlib/recipe.toml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/recipes/libs/zlib/recipe.toml b/recipes/libs/zlib/recipe.toml index 8e9a8709..fe1fc839 100644 --- a/recipes/libs/zlib/recipe.toml +++ b/recipes/libs/zlib/recipe.toml @@ -4,11 +4,10 @@ blake3 = "ec1abc6f672a7a6ee6f49ba544cc9529f73121b478310473be44fee22a140ebf" [build] template = "custom" script = """ - export LDFLAGS="--static" + DYNAMIC_INIT # See https://stackoverflow.com/questions/21396988/zlib-build-not-configuring-properly-with-cross-compiler-ignores-ar. - CHOST="${TARGET}" "${COOKBOOK_CONFIGURE}" \ - --prefix="" \ - --static + CHOST="${TARGET}" "${COOKBOOK_CONFIGURE}" --prefix="" "${COOKBOOK_MAKE}" -j "$(nproc)" "${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" """ + From 51e8e1a015889d65bface80c9021dfac5715dc8a Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Fri, 27 Dec 2024 01:53:05 +1100 Subject: [PATCH 2221/3180] feat(libiconv): dynamic We also statically build as cosmic-files requires it. Signed-off-by: Anhad Singh --- recipes/libs/libiconv/recipe.toml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/recipes/libs/libiconv/recipe.toml b/recipes/libs/libiconv/recipe.toml index 3c0970b7..d5b4161c 100644 --- a/recipes/libs/libiconv/recipe.toml +++ b/recipes/libs/libiconv/recipe.toml @@ -4,11 +4,27 @@ blake3 = "b736af4e8245ae9f1618ef226a3bf2a998334b745520565cf413c0a7d54b6924" patches = [ "01_redox.patch" ] +script = """ +DYNAMIC_INIT +cp ${COOKBOOK_HOST_SYSROOT}/share/aclocal/libtool.m4 ./m4/ +cp ${COOKBOOK_HOST_SYSROOT}/share/aclocal/libtool.m4 ./libcharset/m4/ +cp -fp ${COOKBOOK_HOST_SYSROOT}/share/libtool/build-aux/ltmain.sh ./build-aux/ +cp -fp ${COOKBOOK_HOST_SYSROOT}/share/libtool/build-aux/ltmain.sh ./libcharset/build-aux/ +cp ${COOKBOOK_HOST_SYSROOT}/share/aclocal/ltversion.m4 ./m4/ +cp ${COOKBOOK_HOST_SYSROOT}/share/aclocal/ltversion.m4 ./libcharset/m4/ + +autotools_recursive_regenerate -I$(realpath ./m4) -I$(realpath ./srcm4) +""" [build] template = "custom" script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( + --host="${GNU_TARGET}" + --prefix="" + --enable-shared + --enable-static ac_cv_have_decl_program_invocation_name=no ) cookbook_configure From e4f0e28b579d8c2014a7a9962cd542a057fb68dc Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Fri, 27 Dec 2024 01:54:05 +1100 Subject: [PATCH 2222/3180] feat(libiconv): bump to 1.17 Signed-off-by: Anhad Singh --- recipes/libs/libiconv/01_redox.patch | 20 ++++++++++---------- recipes/libs/libiconv/recipe.toml | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/recipes/libs/libiconv/01_redox.patch b/recipes/libs/libiconv/01_redox.patch index 860bbed5..1e083ca8 100644 --- a/recipes/libs/libiconv/01_redox.patch +++ b/recipes/libs/libiconv/01_redox.patch @@ -1,7 +1,7 @@ -diff -ruw source/srclib/getprogname.c source-new/srclib/getprogname.c ---- source/srclib/getprogname.c 2017-01-01 16:02:21.000000000 -0700 -+++ source-new/srclib/getprogname.c 2018-12-29 08:08:09.138286508 -0700 -@@ -43,6 +43,14 @@ +diff '--color=auto' -ur source/srclib/getprogname.c source-new/srclib/getprogname.c +--- source/srclib/getprogname.c 2022-01-04 19:33:29.000000000 +1100 ++++ source-new/srclib/getprogname.c 2024-11-24 00:42:48.384997609 +1100 +@@ -28,6 +28,14 @@ # include #endif @@ -13,13 +13,13 @@ diff -ruw source/srclib/getprogname.c source-new/srclib/getprogname.c +# include +#endif + - #include "dirname.h" - - #ifndef HAVE_GETPROGNAME /* not Mac OS X, FreeBSD, NetBSD, OpenBSD >= 5.4, Cygwin */ -@@ -143,6 +151,17 @@ - free (buf.ps_pathptr); + #ifdef __MVS__ + # ifndef _OPEN_SYS + # define _OPEN_SYS +@@ -287,6 +295,17 @@ + close (fd); } - return p; + return "?"; +# elif defined(__redox__) + char filename[PATH_MAX]; + int fd = open ("sys:exe", O_RDONLY); diff --git a/recipes/libs/libiconv/recipe.toml b/recipes/libs/libiconv/recipe.toml index d5b4161c..378d6875 100644 --- a/recipes/libs/libiconv/recipe.toml +++ b/recipes/libs/libiconv/recipe.toml @@ -1,6 +1,6 @@ [source] -tar = "https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz" -blake3 = "b736af4e8245ae9f1618ef226a3bf2a998334b745520565cf413c0a7d54b6924" +tar = "https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.17.tar.gz" +blake3 = "820b3b9fd3e2181bfb95475f01e9a3451e6d751e4f8c98ebcdcca1d8aa720f7f" patches = [ "01_redox.patch" ] From a1c6409153140e6a2756d566ac3192226fb9a869 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Fri, 27 Dec 2024 03:05:08 +1100 Subject: [PATCH 2223/3180] feat(gnu-binutils): dynamic * dynamic * shell to toml recipe Signed-off-by: Anhad Singh --- recipes/tools/gnu-binutils/01_build_fix.patch | 24 ++++++++++ recipes/tools/gnu-binutils/recipe.sh | 47 ------------------- recipes/tools/gnu-binutils/recipe.toml | 40 ++++++++++++++++ 3 files changed, 64 insertions(+), 47 deletions(-) create mode 100644 recipes/tools/gnu-binutils/01_build_fix.patch delete mode 100644 recipes/tools/gnu-binutils/recipe.sh create mode 100644 recipes/tools/gnu-binutils/recipe.toml diff --git a/recipes/tools/gnu-binutils/01_build_fix.patch b/recipes/tools/gnu-binutils/01_build_fix.patch new file mode 100644 index 00000000..9bf0ddac --- /dev/null +++ b/recipes/tools/gnu-binutils/01_build_fix.patch @@ -0,0 +1,24 @@ +diff '--color=auto' -ur source/gprofng/libcollector/configure.ac source-new/gprofng/libcollector/configure.ac +--- source/gprofng/libcollector/configure.ac 2024-08-17 09:00:00.000000000 +1000 ++++ source-new/gprofng/libcollector/configure.ac 2024-12-04 15:59:58.407412951 +1100 +@@ -18,7 +18,7 @@ + + m4_include([../../bfd/version.m4]) + AC_INIT([gprofng], [BFD_VERSION]) +-AC_CONFIG_MACRO_DIRS([../../config ../..]) ++#AC_CONFIG_MACRO_DIRS([../../config ../..]) + AC_CONFIG_AUX_DIR(../..) + AC_CANONICAL_TARGET + AM_INIT_AUTOMAKE +diff '--color=auto' -ur source/libiberty/configure.ac source-new/libiberty/configure.ac +--- source/libiberty/configure.ac 2024-08-17 09:00:00.000000000 +1000 ++++ source-new/libiberty/configure.ac 2024-12-04 15:59:31.572203764 +1100 +@@ -37,7 +37,7 @@ + libiberty_topdir="${srcdir}/.." + fi + AC_SUBST(libiberty_topdir) +-AC_CONFIG_AUX_DIR($libiberty_topdir) ++AC_CONFIG_AUX_DIR([.]) + + dnl Very limited version of automake's enable-maintainer-mode + diff --git a/recipes/tools/gnu-binutils/recipe.sh b/recipes/tools/gnu-binutils/recipe.sh deleted file mode 100644 index f87b12bc..00000000 --- a/recipes/tools/gnu-binutils/recipe.sh +++ /dev/null @@ -1,47 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/binutils-gdb.git -BRANCH=redox-2.41 -GIT_UPSTREAM=https://sourceware.org/git/binutils-gdb.git -BUILD_DEPENDS=(expat libgmp libmpfr) - -function recipe_version { - printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - mkdir -p "$sysroot/usr" - ln -sf "$sysroot/include" "$sysroot/usr/include" - ln -sf "$sysroot/lib" "$sysroot/usr/lib" - export CPPFLAGS="-I$sysroot/include -pie -fPIC -g" - export LDFLAGS="-L$sysroot/lib --static -g" - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --target=${HOST} \ - --prefix=/ \ - --with-sysroot=/ \ - --with-build-sysroot="$sysroot" \ - --enable-gdb \ - --with-expat \ - --with-multilib \ - --with-interwork \ - --enable-targets="${TARGET}" \ - --disable-lto \ - --disable-nls \ - --disable-werror - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - find "$dest/bin" -exec $STRIP {} ';' 2> /dev/null - skip=1 -} diff --git a/recipes/tools/gnu-binutils/recipe.toml b/recipes/tools/gnu-binutils/recipe.toml new file mode 100644 index 00000000..aead0fef --- /dev/null +++ b/recipes/tools/gnu-binutils/recipe.toml @@ -0,0 +1,40 @@ +[source] +tar = "https://ftp.gnu.org/gnu/binutils/binutils-2.43.1.tar.xz" +patches = ["01_build_fix.patch"] +script = """ +DYNAMIC_INIT + +COOKBOOK_AUTORECONF=autoreconf2.69 autotools_recursive_regenerate -I"$(realpath ./config)" +cp -fpv ${COOKBOOK_HOST_SYSROOT}/share/libtool/build-aux/{config.sub,config.guess,install-sh} libiberty/ +""" + +[build] +template = "custom" +dependencies = [ + "expat", + "libgmp", + "libmpfr", + "zlib", +] +script = """ +DYNAMIC_INIT + +COOKBOOK_CONFIGURE_FLAGS+=( + --target="${GNU_TARGET}" + --disable-werror + --disable-dependency-tracking + --disable-nls + --enable-colored-disassembly + --enable-gdb + --with-system-zlib + --with-multilib + --with-interwork + --with-pic +) + +cookbook_configure +""" + +[package] +dependencies = ["zlib"] + From 3e45672be64487bb7f758bd78384adb61cca1cdf Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Fri, 27 Dec 2024 03:07:28 +1100 Subject: [PATCH 2224/3180] feat(mpc) Signed-off-by: Anhad Singh --- recipes/libs/mpc/recipe.toml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 recipes/libs/mpc/recipe.toml diff --git a/recipes/libs/mpc/recipe.toml b/recipes/libs/mpc/recipe.toml new file mode 100644 index 00000000..749805ad --- /dev/null +++ b/recipes/libs/mpc/recipe.toml @@ -0,0 +1,21 @@ + # C library for the arithmetic of complex numbers with arbitrarily high + # precision and correct rounding of the result. + +[source] +tar = "https://ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +template = "custom" +dependencies = [ + "libgmp", + "libmpfr", +] +script = """ +DYNAMIC_INIT +cookbook_configure +""" + From f92b72224d288376b6c0185f3c6ad60ef64837e7 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Fri, 27 Dec 2024 03:11:55 +1100 Subject: [PATCH 2225/3180] feat(nghttp2): dynamic Signed-off-by: Anhad Singh --- recipes/libs/nghttp2/recipe.toml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/recipes/libs/nghttp2/recipe.toml b/recipes/libs/nghttp2/recipe.toml index 81ef6277..2744490f 100644 --- a/recipes/libs/nghttp2/recipe.toml +++ b/recipes/libs/nghttp2/recipe.toml @@ -1,9 +1,16 @@ [source] tar = "https://github.com/nghttp2/nghttp2/releases/download/v1.62.1/nghttp2-1.62.1.tar.xz" blake3 = "77b1c0fed8e97db0aa7d6e1a5ed16e5a053093ed0006b7c747dca290d694f3af" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + [build] template = "custom" script = """ +DYNAMIC_INIT + COOKBOOK_CONFIGURE_FLAGS+=( --enable-lib-only ) From 11c96f8beecf0ed17c9416a5dbca63b70bb765b3 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Fri, 27 Dec 2024 03:12:16 +1100 Subject: [PATCH 2226/3180] feat(nghttp2): bump to v1.64.0 Signed-off-by: Anhad Singh --- recipes/libs/nghttp2/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/libs/nghttp2/recipe.toml b/recipes/libs/nghttp2/recipe.toml index 2744490f..ce862c9f 100644 --- a/recipes/libs/nghttp2/recipe.toml +++ b/recipes/libs/nghttp2/recipe.toml @@ -1,6 +1,6 @@ [source] -tar = "https://github.com/nghttp2/nghttp2/releases/download/v1.62.1/nghttp2-1.62.1.tar.xz" -blake3 = "77b1c0fed8e97db0aa7d6e1a5ed16e5a053093ed0006b7c747dca290d694f3af" +tar = "https://github.com/nghttp2/nghttp2/releases/download/v1.64.0/nghttp2-1.64.0.tar.xz" +blake3 = "1bbc08de4816769d800c42f501a00c1ba3f5efa1b76e1f65d2e5bdf3aa30354d" script = """ DYNAMIC_INIT autotools_recursive_regenerate From 30cd0e845d2666eb532067d3de87d259f81be4bf Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Fri, 27 Dec 2024 14:09:30 +1100 Subject: [PATCH 2227/3180] feat(recipes): libgcc Signed-off-by: Anhad Singh --- recipes/libs/libgcc/recipe.toml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 recipes/libs/libgcc/recipe.toml diff --git a/recipes/libs/libgcc/recipe.toml b/recipes/libs/libgcc/recipe.toml new file mode 100644 index 00000000..cfdf136a --- /dev/null +++ b/recipes/libs/libgcc/recipe.toml @@ -0,0 +1,11 @@ +[source] +path = "../prefix/x86_64-unknown-redox/sysroot" + +[build] +template = "custom" +script = """ +mkdir -p "${COOKBOOK_STAGE}/lib" +cp -vr ${COOKBOOK_HOST_SYSROOT}/lib/gcc ${COOKBOOK_STAGE}/lib/ +cp -vr ${COOKBOOK_HOST_SYSROOT}/${TARGET}/lib/. ${COOKBOOK_STAGE}/lib/ +rm ${COOKBOOK_STAGE}/lib/{crt0.o,crt1.o,crti.o,crtn.o,libc.a,libc.so.6,ld64.so.1} +""" From aa7c69999e343908af3dc2d9277ba6cb54612067 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Fri, 27 Dec 2024 14:10:10 +1100 Subject: [PATCH 2228/3180] misc(recipes): remove mpc from WIP Signed-off-by: Anhad Singh --- recipes/wip/libs/other/mpc/recipe.toml | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 recipes/wip/libs/other/mpc/recipe.toml diff --git a/recipes/wip/libs/other/mpc/recipe.toml b/recipes/wip/libs/other/mpc/recipe.toml deleted file mode 100644 index bb6d1d4b..00000000 --- a/recipes/wip/libs/other/mpc/recipe.toml +++ /dev/null @@ -1,9 +0,0 @@ -#TODO compiled but not tested -[source] -tar = "https://ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz" -[build] -template = "configure" -dependencies = [ - "libgmp", - "libmpfr", -] From dff2dcd4d632d8c70aa32d696c5e844929acddd2 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Fri, 27 Dec 2024 14:17:35 +1100 Subject: [PATCH 2229/3180] feat(git): dynamic Signed-off-by: Anhad Singh --- recipes/dev/git/recipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/dev/git/recipe.sh b/recipes/dev/git/recipe.sh index 0d6f14c2..90c672ef 100644 --- a/recipes/dev/git/recipe.sh +++ b/recipes/dev/git/recipe.sh @@ -1,7 +1,7 @@ VERSION=2.13.1 TAR=https://www.kernel.org/pub/software/scm/git/git-$VERSION.tar.xz BUILD_DEPENDS=(zlib curl openssl1 expat nghttp2) -DEPENDS="ca-certificates" +DEPENDS="ca-certificates nghttp2" MAKEFLAGS=( NEEDS_SSL_WITH_CURL=1 @@ -24,7 +24,7 @@ function recipe_version { function recipe_build { sysroot="$(realpath ../sysroot)" - export LDFLAGS="-L$sysroot/lib -static" + export LDFLAGS="-L$sysroot/lib" export CPPFLAGS="-I$sysroot/include" export CURL_CONFIG="$sysroot/bin/curl-config" ./configure \ From 9e3aa1b4802d078d8914e963da361b0986de52d5 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Fri, 27 Dec 2024 19:15:58 +1100 Subject: [PATCH 2230/3180] feat(llvm): dynamic Signed-off-by: Anhad Singh --- recipes/dev/llvm18/recipe.toml | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/recipes/dev/llvm18/recipe.toml b/recipes/dev/llvm18/recipe.toml index daeb31ad..c0d3505c 100644 --- a/recipes/dev/llvm18/recipe.toml +++ b/recipes/dev/llvm18/recipe.toml @@ -9,18 +9,33 @@ dependencies = [ "zlib" ] script = """ -COOKBOOK_CONFIGURE="cmake" +DYNAMIC_INIT + +cat > CMakeToolchain-x86_64.cmake < Date: Fri, 27 Dec 2024 19:24:52 +1100 Subject: [PATCH 2231/3180] feat(mesa): dynamic Signed-off-by: Anhad Singh --- recipes/libs/mesa/recipe.toml | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/recipes/libs/mesa/recipe.toml b/recipes/libs/mesa/recipe.toml index 9fd73d09..a3c73160 100644 --- a/recipes/libs/mesa/recipe.toml +++ b/recipes/libs/mesa/recipe.toml @@ -11,12 +11,13 @@ dependencies = [ "zlib", ] script = """ +DYNAMIC_INIT #TODO: do this in cook instead unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP export CFLAGS="-I${COOKBOOK_SYSROOT}/include -DHAVE_PTHREAD=1" export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include -DHAVE_PTHREAD=1" -export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib --static" +export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" export LLVM_CONFIG="${TARGET}-llvm-config" # TODO: Fix this annoying shite @@ -46,18 +47,23 @@ meson "${COOKBOOK_SOURCE}" . \ --cross-file cross_file.txt \ --buildtype release \ --strip \ - -Ddefault_library=static \ + -Ddefault_library=shared \ -Dglx=disabled \ -Dllvm=enabled \ + -Dshared-llvm=enabled \ -Dosmesa=true \ -Dplatforms= \ -Dshader-cache=disabled \ - -Dshared-llvm=disabled \ -Dshared-glapi=disabled -ninja -v +ninja -j${COOKBOOK_MAKE_JOBS} DESTDIR="${COOKBOOK_STAGE}" ninja install - -# Hack to add LLVM libs -#TODO: only add necessary LLVM libs, not all of them -sed -i "s/ -lOSMesa / -lOSMesa $("${TARGET}-llvm-config" --libs) -lstdc++ /" "${COOKBOOK_STAGE}/lib/pkgconfig/osmesa.pc" """ + +[package] +dependencies = [ + "libgcc", + "zlib", + "llvm18", + "expat" +] + From 80c7e5a4387008cdd90e0b3256d12c26e986be62 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Mon, 13 Jan 2025 13:49:55 +1100 Subject: [PATCH 2232/3180] Revert "feat(mesa): dynamic" This reverts commit c284034cff0dcefd7fc8ac2983e231ec4c23af5c. --- recipes/libs/mesa/recipe.toml | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/recipes/libs/mesa/recipe.toml b/recipes/libs/mesa/recipe.toml index a3c73160..9fd73d09 100644 --- a/recipes/libs/mesa/recipe.toml +++ b/recipes/libs/mesa/recipe.toml @@ -11,13 +11,12 @@ dependencies = [ "zlib", ] script = """ -DYNAMIC_INIT #TODO: do this in cook instead unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP export CFLAGS="-I${COOKBOOK_SYSROOT}/include -DHAVE_PTHREAD=1" export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include -DHAVE_PTHREAD=1" -export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" +export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib --static" export LLVM_CONFIG="${TARGET}-llvm-config" # TODO: Fix this annoying shite @@ -47,23 +46,18 @@ meson "${COOKBOOK_SOURCE}" . \ --cross-file cross_file.txt \ --buildtype release \ --strip \ - -Ddefault_library=shared \ + -Ddefault_library=static \ -Dglx=disabled \ -Dllvm=enabled \ - -Dshared-llvm=enabled \ -Dosmesa=true \ -Dplatforms= \ -Dshader-cache=disabled \ + -Dshared-llvm=disabled \ -Dshared-glapi=disabled -ninja -j${COOKBOOK_MAKE_JOBS} +ninja -v DESTDIR="${COOKBOOK_STAGE}" ninja install + +# Hack to add LLVM libs +#TODO: only add necessary LLVM libs, not all of them +sed -i "s/ -lOSMesa / -lOSMesa $("${TARGET}-llvm-config" --libs) -lstdc++ /" "${COOKBOOK_STAGE}/lib/pkgconfig/osmesa.pc" """ - -[package] -dependencies = [ - "libgcc", - "zlib", - "llvm18", - "expat" -] - From 4958040529f5b8af5e72ed5a8797bfdad6424776 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Mon, 13 Jan 2025 23:52:18 +1100 Subject: [PATCH 2233/3180] Revert "feat(llvm): dynamic" This reverts commit 3ded192f52b46f635d59bfd0b3141d02c56ce7c0. --- recipes/dev/llvm18/recipe.toml | 33 +++++---------------------------- 1 file changed, 5 insertions(+), 28 deletions(-) diff --git a/recipes/dev/llvm18/recipe.toml b/recipes/dev/llvm18/recipe.toml index c0d3505c..daeb31ad 100644 --- a/recipes/dev/llvm18/recipe.toml +++ b/recipes/dev/llvm18/recipe.toml @@ -9,33 +9,18 @@ dependencies = [ "zlib" ] script = """ -DYNAMIC_INIT - -cat > CMakeToolchain-x86_64.cmake < Date: Tue, 14 Jan 2025 00:21:59 +1100 Subject: [PATCH 2234/3180] feat(gcc13): dynamic Signed-off-by: Anhad Singh --- recipes/dev/gcc13/recipe.sh | 56 -------------------------- recipes/dev/gcc13/recipe.toml | 53 ++++++++++++++++++++++++ recipes/tools/gnu-binutils/recipe.toml | 29 ++++++++----- 3 files changed, 71 insertions(+), 67 deletions(-) delete mode 100644 recipes/dev/gcc13/recipe.sh create mode 100644 recipes/dev/gcc13/recipe.toml diff --git a/recipes/dev/gcc13/recipe.sh b/recipes/dev/gcc13/recipe.sh deleted file mode 100644 index fef38205..00000000 --- a/recipes/dev/gcc13/recipe.sh +++ /dev/null @@ -1,56 +0,0 @@ -VERSION="13.2.0" -TAR="https://gitlab.redox-os.org/redox-os/gcc/-/archive/redox-${VERSION}/gcc-redox-${VERSION}.tar.gz" -#GIT=https://gitlab.redox-os.org/redox-os/gcc.git -#GIT_UPSTREAM=https://gcc.gnu.org/git/gcc.git -#BRANCH="redox-${VERSION}" -BUILD_DEPENDS=(relibc) -DEPENDS="gnu-binutils relibc" - -function recipe_version { - echo "${VERSION}" - skip=1 -} - -function recipe_build { - ./contrib/download_prerequisites - cp config.sub gmp/config.sub - cp config.sub isl/config.sub - cp config.sub mpfr/config.sub - cp -f config.sub mpc/config.sub - - sysroot="$(realpath ../sysroot)" - mkdir -p "$sysroot/usr" - ln -sf "$sysroot/include" "$sysroot/usr/include" - ln -sf "$sysroot/lib" "$sysroot/usr/lib" - export LDFLAGS="--static" - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --target=${HOST} \ - --prefix=/ \ - --with-sysroot=/ \ - --with-build-sysroot="$sysroot" \ - --with-static-standard-libraries \ - --disable-dlopen \ - --disable-lto \ - --disable-nls \ - --enable-languages=c,c++ \ - --enable-shared \ - --enable-static \ - --enable-threads=posix - "$REDOX_MAKE" -j "$(nproc)" all-gcc all-target-libgcc all-target-libstdc++-v3 - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install-gcc install-target-libgcc install-target-libstdc++-v3 - find "$dest"/{bin,libexec} -exec $STRIP {} ';' 2> /dev/null - ln -s "gcc" "$1/bin/cc" - skip=1 -} diff --git a/recipes/dev/gcc13/recipe.toml b/recipes/dev/gcc13/recipe.toml new file mode 100644 index 00000000..72405a87 --- /dev/null +++ b/recipes/dev/gcc13/recipe.toml @@ -0,0 +1,53 @@ +[source] +tar = "https://gitlab.redox-os.org/redox-os/gcc/-/archive/redox-13.2.0/gcc-redox-13.2.0.tar.gz" + +[build] +template = "custom" +dependencies = [ + "libgmp", + "libmpfr", + "mpc", + "zlib" +] +script = """ +DYNAMIC_INIT + +mkdir -p "${COOKBOOK_SYSROOT}/usr" +ln -sf "${COOKBOOK_SYSROOT}/include" "${COOKBOOK_SYSROOT}/usr/include" +ln -sf "${COOKBOOK_SYSROOT}/lib" "${COOKBOOK_SYSROOT}/usr/lib" + +pushd $COOKBOOK_SOURCE +COOKBOOK_AUTORECONF=autoreconf2.69 autotools_recursive_regenerate -I"$(realpath ./config)" +cp -fpv $COOKBOOK_HOST_SYSROOT/share/libtool/build-aux/{config.sub,config.guess,install-sh} libiberty/ +popd # pushd $COOKBOOK_SOURCE + +COOKBOOK_CONFIGURE_FLAGS=( + --host="${GNU_TARGET}" + --target="${GNU_TARGET}" + --prefix=/ + --enable-shared + --disable-static + --with-sysroot=/ + --with-build-sysroot="${COOKBOOK_SYSROOT}" + --enable-languages=c,c++,lto + --enable-initfini-array + --disable-multilib + --with-system-zlib + --enable-host-shared + --with-bugurl="https://gitlab.redox-os.org/redox-os/gcc/-/issues" +) + +"${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" +"${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" all-gcc +"${COOKBOOK_MAKE}" install-gcc DESTDIR="${COOKBOOK_STAGE}" +ln -s "gcc" "${COOKBOOK_STAGE}/bin/cc" +""" + +[package] +dependencies = [ + "libgcc", + "libgmp", + "libmpfr", + "mpc", + "zlib" +] diff --git a/recipes/tools/gnu-binutils/recipe.toml b/recipes/tools/gnu-binutils/recipe.toml index aead0fef..198037b1 100644 --- a/recipes/tools/gnu-binutils/recipe.toml +++ b/recipes/tools/gnu-binutils/recipe.toml @@ -20,21 +20,28 @@ script = """ DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( - --target="${GNU_TARGET}" - --disable-werror - --disable-dependency-tracking - --disable-nls - --enable-colored-disassembly - --enable-gdb - --with-system-zlib - --with-multilib - --with-interwork - --with-pic + --target="${GNU_TARGET}" + --disable-werror + --disable-dependency-tracking + --disable-nls + --enable-colored-disassembly + --enable-gdb + --with-system-zlib + --with-multilib + --with-interwork + --with-pic + --with-expat ) cookbook_configure """ [package] -dependencies = ["zlib"] +dependencies = [ + "libgcc", + "expat", + "libgmp", + "libmpfr", + "zlib", +] From bbead114d19e59754dc0bd625de3774ee8887535 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Mon, 20 Jan 2025 18:51:45 +1100 Subject: [PATCH 2235/3180] feat(openssl1): dynamic Signed-off-by: Anhad Singh --- recipes/libs/openssl1/openssl1.patch | 50 ++++++++++++++++++++++++++++ recipes/libs/openssl1/recipe.toml | 7 ++-- 2 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 recipes/libs/openssl1/openssl1.patch diff --git a/recipes/libs/openssl1/openssl1.patch b/recipes/libs/openssl1/openssl1.patch new file mode 100644 index 00000000..82fe3ac2 --- /dev/null +++ b/recipes/libs/openssl1/openssl1.patch @@ -0,0 +1,50 @@ +diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf +index 45e2fc7a..2d7f7db3 100644 +--- a/Configurations/10-main.conf ++++ b/Configurations/10-main.conf +@@ -175,28 +175,32 @@ sub vms_info { + }, + + +-### Redox +- "redox-aarch64" => { +- inherit_from => [ "BASE_common", asm("aarch64_asm") ], ++### Redox configurations ++ "redox-common" => { ++ inherit_from => [ "BASE_common" ], + cc => "gcc", +- cflags => "-DL_ENDIAN -DOSSL_SSIZE_MAX=LONG_MAX -DNO_SYSLOG -O3 -static -Wall", ++ thread_scheme => "(unknown)", ++ dso_scheme => "dlfcn", ++ shared_target => "linux-shared", ++ shared_cflag => "-fPIC", ++ shared_ldflag => sub { $disabled{pinshared} ? () : "-Wl,-znodelete" }, ++ shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++ }, ++ "redox-aarch64" => { ++ inherit_from => [ "redox-common", asm("aarch64_asm") ], ++ cflags => "-DL_ENDIAN -DOSSL_SSIZE_MAX=LONG_MAX -DNO_SYSLOG -O3 -Wall", + bn_ops => "SIXTY_FOUR_BIT_LONG", + perlasm_scheme => "elf", +- thread_scheme => "(unknown)", + }, + "redox-i686" => { +- inherit_from => [ "BASE_unix", asm("x86_elf_asm") ], +- cc => "gcc", +- cflags => "-DL_ENDIAN -DNO_SYSLOG -O3 -static -Wall", ++ inherit_from => [ "redox-common", asm("x86_elf_asm") ], ++ cflags => "-DL_ENDIAN -DNO_SYSLOG -O3 -Wall", + bn_ops => "BN_LLONG", +- thread_scheme => "(unknown)", + }, + "redox-x86_64" => { +- inherit_from => [ "BASE_common", asm("x86_64_asm") ], +- cc => "gcc", +- cflags => "-DL_ENDIAN -DOSSL_SSIZE_MAX=LONG_MAX -DNO_SYSLOG -O3 -static -Wall", ++ inherit_from => [ "redox-common", asm("x86_64_asm") ], ++ cflags => "-DL_ENDIAN -DOSSL_SSIZE_MAX=LONG_MAX -DNO_SYSLOG -O3 -Wall", + bn_ops => "SIXTY_FOUR_BIT_LONG", +- thread_scheme => "(unknown)", + }, + + #### Solaris configurations diff --git a/recipes/libs/openssl1/recipe.toml b/recipes/libs/openssl1/recipe.toml index 55b707c0..2666b386 100644 --- a/recipes/libs/openssl1/recipe.toml +++ b/recipes/libs/openssl1/recipe.toml @@ -5,15 +5,18 @@ branch = "redox-v1" [build] template = "custom" script = """ +DYNAMIC_INIT ARCH="${TARGET%%-*}" COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/Configure" COOKBOOK_CONFIGURE_FLAGS=( - no-shared + shared no-dgram "redox-${ARCH}" --prefix="/" ) export CC="${TARGET}-gcc" -cookbook_configure +"${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" +"${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" +"${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" rm -rfv "${COOKBOOK_STAGE}/"{share,ssl} """ From 9f2cb652a3ec77b1a0e251b55779c095fb95fb2b Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Mon, 20 Jan 2025 18:58:42 +1100 Subject: [PATCH 2236/3180] feat(cookbook): rust dynamic Signed-off-by: Anhad Singh --- src/bin/cook.rs | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 071b77ad..305d849f 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -181,6 +181,7 @@ function DYNAMIC_INIT { # TODO: check paths for spaces export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" + export RUSTFLAGS="-C target-feature=-crt-static" COOKBOOK_AUTORECONF="autoreconf" autotools_recursive_regenerate() { @@ -634,28 +635,6 @@ function cookbook_configure { "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" "${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" } - -function DYNAMIC_INIT { - echo "WARN: Program is being compiled dynamically." - - COOKBOOK_CONFIGURE_FLAGS=( - --host="${GNU_TARGET}" - --prefix="" - --enable-shared - --disable-static - ) - - # TODO: check paths for spaces - export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" - - autotools_recursive_regenerate() { - for f in $(find . -name configure.ac -o -name configure.in -type f | sort); do - echo "* autotools regenerate in '$(dirname $f)'..." - ( cd "$(dirname "$f")" && autoreconf -fvi "$@" -I${COOKBOOK_HOST_SYSROOT}/share/aclocal ) - done - } -} - "#; let post_script = r#"# Common post script From 48bed31e9280504b7b3a432f067de620bcea4093 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Mon, 20 Jan 2025 19:11:39 +1100 Subject: [PATCH 2237/3180] misc(libiconv): set the flags instead of appending Signed-off-by: Anhad Singh --- recipes/libs/libiconv/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/libs/libiconv/recipe.toml b/recipes/libs/libiconv/recipe.toml index 378d6875..1ef97dc5 100644 --- a/recipes/libs/libiconv/recipe.toml +++ b/recipes/libs/libiconv/recipe.toml @@ -20,7 +20,7 @@ autotools_recursive_regenerate -I$(realpath ./m4) -I$(realpath ./srcm4) template = "custom" script = """ DYNAMIC_INIT -COOKBOOK_CONFIGURE_FLAGS+=( +COOKBOOK_CONFIGURE_FLAGS=( --host="${GNU_TARGET}" --prefix="" --enable-shared From 3ee1f4da0052802fc0cdd7162428708639db61a0 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Mon, 20 Jan 2025 19:12:15 +1100 Subject: [PATCH 2238/3180] feat(cookbook): add the option to prefer static By default all libraries and applications that can be dynamically linked will be dynamically linked. You can override this behaviour by setting the `COOKBOOK_PREFER_STATIC` environment variable. Note that if you perviously did not use this flag, it might (most likely will) require a complete userland sysroot recompilation. It will look like this: ```bash $ make clean $ COOKBOOK_PREFER_STATIC=yes make image ``` For testing, the following will also work: ```bash $ COOKBOOK_PREFER_STATIC=yes make cr.{PACKAGE_NAME} # obviously replace # PACKAGE_NAME with # the name of a package :) ``` Signed-off-by: Anhad Singh --- recipes/dev/gcc13/recipe.toml | 12 ++++++++++++ recipes/libs/libiconv/recipe.toml | 13 +++++++++++-- src/bin/cook.rs | 20 ++++++++++++-------- 3 files changed, 35 insertions(+), 10 deletions(-) diff --git a/recipes/dev/gcc13/recipe.toml b/recipes/dev/gcc13/recipe.toml index 72405a87..106e8e74 100644 --- a/recipes/dev/gcc13/recipe.toml +++ b/recipes/dev/gcc13/recipe.toml @@ -37,6 +37,18 @@ COOKBOOK_CONFIGURE_FLAGS=( --with-bugurl="https://gitlab.redox-os.org/redox-os/gcc/-/issues" ) +if [[ -n "$COOKBOOK_PREFER_STATIC" ]]; then + COOKBOOK_CONFIGURE_FLAGS+=( + --enable-static + --disable-shared + ) +else + COOKBOOK_CONFIGURE_FLAGS+=( + --enable-shared + --disable-static + ) +fi + "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" all-gcc "${COOKBOOK_MAKE}" install-gcc DESTDIR="${COOKBOOK_STAGE}" diff --git a/recipes/libs/libiconv/recipe.toml b/recipes/libs/libiconv/recipe.toml index 1ef97dc5..38e46cce 100644 --- a/recipes/libs/libiconv/recipe.toml +++ b/recipes/libs/libiconv/recipe.toml @@ -23,9 +23,18 @@ DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS=( --host="${GNU_TARGET}" --prefix="" - --enable-shared - --enable-static ac_cv_have_decl_program_invocation_name=no ) +if [[ -n "$COOKBOOK_PREFER_STATIC" ]]; then + COOKBOOK_CONFIGURE_FLAGS+=( + --enable-static + --disable-shared + ) +else + COOKBOOK_CONFIGURE_FLAGS+=( + --enable-shared + --enable-static + ) +fi cookbook_configure """ diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 305d849f..fcfab14a 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -170,6 +170,18 @@ fn run_command_stdin(mut command: process::Command, stdin_data: &[u8]) -> Result static SHARED_PRESCRIPT: &str = r#" function DYNAMIC_INIT { + COOKBOOK_AUTORECONF="autoreconf" + autotools_recursive_regenerate() { + for f in $(find . -name configure.ac -o -name configure.in -type f | sort); do + echo "* autotools regen in '$(dirname $f)'..." + ( cd "$(dirname "$f")" && "${COOKBOOK_AUTORECONF}" -fvi "$@" -I${COOKBOOK_HOST_SYSROOT}/share/aclocal ) + done + } + + if [[ -n "$COOKBOOK_PREFER_STATIC" ]]; then + return + fi + echo "WARN: Program is being compiled dynamically." COOKBOOK_CONFIGURE_FLAGS=( @@ -182,14 +194,6 @@ function DYNAMIC_INIT { # TODO: check paths for spaces export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" export RUSTFLAGS="-C target-feature=-crt-static" - - COOKBOOK_AUTORECONF="autoreconf" - autotools_recursive_regenerate() { - for f in $(find . -name configure.ac -o -name configure.in -type f | sort); do - echo "* autotools regen in '$(dirname $f)'..." - ( cd "$(dirname "$f")" && "${COOKBOOK_AUTORECONF}" -fvi "$@" -I${COOKBOOK_HOST_SYSROOT}/share/aclocal ) - done - } } "#; From c3a830830c09608b0146db5b0460c4c6650a1044 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 20 Jan 2025 21:49:14 +0000 Subject: [PATCH 2239/3180] Add the quick-serve recipe --- recipes/wip/net/server/quick-serve/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/wip/net/server/quick-serve/recipe.toml diff --git a/recipes/wip/net/server/quick-serve/recipe.toml b/recipes/wip/net/server/quick-serve/recipe.toml new file mode 100644 index 00000000..311cb881 --- /dev/null +++ b/recipes/wip/net/server/quick-serve/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/joaofl/quick-serve" +[build] +template = "cargo" From 88ee0be35d63c329b41e9ea6348c96e5127116c0 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Thu, 23 Jan 2025 13:12:39 +1100 Subject: [PATCH 2240/3180] feat(ion): dynamic Signed-off-by: Anhad Singh --- recipes/core/ion/recipe.toml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/recipes/core/ion/recipe.toml b/recipes/core/ion/recipe.toml index 80c82e33..cfc46e9e 100644 --- a/recipes/core/ion/recipe.toml +++ b/recipes/core/ion/recipe.toml @@ -2,4 +2,9 @@ git = "https://gitlab.redox-os.org/redox-os/ion.git" [build] -template = "cargo" +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_cargo +""" + From 8b663ee3688c7f02500b91fbf0e3ba7d7ace4acd Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Thu, 23 Jan 2025 16:05:33 +1100 Subject: [PATCH 2241/3180] fix(cookbook): shared dependencies These shall only be added iff `PREFER_STATIC` is not set. Signed-off-by: Anhad Singh --- recipes/core/ion/recipe.toml | 2 ++ recipes/dev/gnu-make/recipe.toml | 2 ++ recipes/libs/libgmp/recipe.toml | 2 ++ recipes/libs/libiconv/recipe.toml | 3 ++ recipes/libs/libmpfr/recipe.toml | 2 ++ recipes/libs/mpc/recipe.toml | 6 ++++ recipes/libs/nghttp2/recipe.toml | 3 ++ recipes/libs/zlib/recipe.toml | 2 ++ recipes/tools/gnu-binutils/recipe.toml | 3 +- src/bin/cook.rs | 45 +++++++++++++++++++++++++- src/recipe.rs | 4 +++ 11 files changed, 71 insertions(+), 3 deletions(-) diff --git a/recipes/core/ion/recipe.toml b/recipes/core/ion/recipe.toml index cfc46e9e..de1b3ca6 100644 --- a/recipes/core/ion/recipe.toml +++ b/recipes/core/ion/recipe.toml @@ -8,3 +8,5 @@ DYNAMIC_INIT cookbook_cargo """ +[package] +shared-deps = ["libgcc"] diff --git a/recipes/dev/gnu-make/recipe.toml b/recipes/dev/gnu-make/recipe.toml index fb274e60..48e78b61 100644 --- a/recipes/dev/gnu-make/recipe.toml +++ b/recipes/dev/gnu-make/recipe.toml @@ -17,3 +17,5 @@ cp -rp "$COOKBOOK_SOURCE/." ./ cookbook_configure """ +[package] +shared-deps = ["libgcc"] diff --git a/recipes/libs/libgmp/recipe.toml b/recipes/libs/libgmp/recipe.toml index a2330bd6..2740fa0e 100644 --- a/recipes/libs/libgmp/recipe.toml +++ b/recipes/libs/libgmp/recipe.toml @@ -17,3 +17,5 @@ DYNAMIC_INIT cookbook_configure """ +[package] +shared-deps = ["libgcc"] diff --git a/recipes/libs/libiconv/recipe.toml b/recipes/libs/libiconv/recipe.toml index 38e46cce..7505d655 100644 --- a/recipes/libs/libiconv/recipe.toml +++ b/recipes/libs/libiconv/recipe.toml @@ -38,3 +38,6 @@ else fi cookbook_configure """ + +[package] +shared-deps = ["libgcc"] diff --git a/recipes/libs/libmpfr/recipe.toml b/recipes/libs/libmpfr/recipe.toml index 3e653153..ba0b8099 100644 --- a/recipes/libs/libmpfr/recipe.toml +++ b/recipes/libs/libmpfr/recipe.toml @@ -16,3 +16,5 @@ DYNAMIC_INIT cookbook_configure """ +[package] +shared-deps = ["libgcc", "libgmp"] diff --git a/recipes/libs/mpc/recipe.toml b/recipes/libs/mpc/recipe.toml index 749805ad..f27c60ea 100644 --- a/recipes/libs/mpc/recipe.toml +++ b/recipes/libs/mpc/recipe.toml @@ -19,3 +19,9 @@ DYNAMIC_INIT cookbook_configure """ +[package] +shared-deps = [ + "libgcc", + "libgmp", + "libmpfr", +] diff --git a/recipes/libs/nghttp2/recipe.toml b/recipes/libs/nghttp2/recipe.toml index ce862c9f..05a5dec8 100644 --- a/recipes/libs/nghttp2/recipe.toml +++ b/recipes/libs/nghttp2/recipe.toml @@ -16,3 +16,6 @@ COOKBOOK_CONFIGURE_FLAGS+=( ) cookbook_configure """ + +[package] +shared-deps = ["libgcc"] diff --git a/recipes/libs/zlib/recipe.toml b/recipes/libs/zlib/recipe.toml index fe1fc839..0ff21eb5 100644 --- a/recipes/libs/zlib/recipe.toml +++ b/recipes/libs/zlib/recipe.toml @@ -11,3 +11,5 @@ script = """ "${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" """ +[package] +shared-deps = ["libgcc"] diff --git a/recipes/tools/gnu-binutils/recipe.toml b/recipes/tools/gnu-binutils/recipe.toml index 198037b1..ec269f38 100644 --- a/recipes/tools/gnu-binutils/recipe.toml +++ b/recipes/tools/gnu-binutils/recipe.toml @@ -37,11 +37,10 @@ cookbook_configure """ [package] -dependencies = [ +shared-deps = [ "libgcc", "expat", "libgmp", "libmpfr", "zlib", ] - diff --git a/src/bin/cook.rs b/src/bin/cook.rs index fcfab14a..c573311c 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -11,6 +11,12 @@ use std::{ use termion::{color, style}; use walkdir::{DirEntry, WalkDir}; +fn should_build_shared() -> bool { + use std::sync::OnceLock; + static YES: OnceLock = OnceLock::new(); + *YES.get_or_init(|| env::var("COOKBOOK_PREFER_STATIC").expect("COOKBOOK_PREFER_STATIC").is_empty()) +} + fn remove_all(path: &Path) -> Result<(), String> { if path.is_dir() { fs::remove_dir_all(path) @@ -639,6 +645,38 @@ function cookbook_configure { "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" "${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" } + +function cookbook_cmake { + cat > CMakeToolchain-x86_64.cmake <, } + let depends = if should_build_shared() { + package.dependencies.iter().chain(package.shared_deps.iter()).cloned().collect() + } else { + package.dependencies.clone() + }; let stage_toml = toml::to_string(&StageToml { name: name.into(), version: "TODO".into(), target: env::var("TARGET") .map_err(|err| format!("failed to read TARGET: {:?}", err))?, - depends: package.dependencies.clone(), + depends }) .map_err(|err| format!("failed to serialize stage.toml: {:?}", err))?; fs::write(target_dir.join("stage.toml"), stage_toml) diff --git a/src/recipe.rs b/src/recipe.rs index 2f1566e1..9ed96ecc 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -78,6 +78,8 @@ pub struct BuildRecipe { pub struct PackageRecipe { #[serde(default)] pub dependencies: Vec, + #[serde(rename = "shared-deps", default)] + pub shared_deps: Vec, } /// Everything required to build a Redox package @@ -129,6 +131,7 @@ mod tests { }, package: PackageRecipe { dependencies: Vec::new(), + shared_deps: Vec::new(), }, } ); @@ -171,6 +174,7 @@ mod tests { }, package: PackageRecipe { dependencies: Vec::new(), + shared_deps: Vec::new(), }, } ); From d060cff10133af13d70cc97688efc8db830afb4d Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Mon, 30 Dec 2024 02:37:32 -0500 Subject: [PATCH 2242/3180] Update Boost recipe Boost depends on some missing `wchar.h` functions which are wrapped and exposed by C++. Some of the libraries seem to either depend on `openat` or depend on external libraries that depend on `openat`. The main purpose of this patch is to update the recipe to an almost working state until those issues are resolved. --- recipes/wip/libs/other/boost/recipe.toml | 37 ++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/recipes/wip/libs/other/boost/recipe.toml b/recipes/wip/libs/other/boost/recipe.toml index 405fd6db..8664e721 100644 --- a/recipes/wip/libs/other/boost/recipe.toml +++ b/recipes/wip/libs/other/boost/recipe.toml @@ -1,5 +1,38 @@ -#TODO missing script for building, see https://github.com/boostorg/wiki/wiki/Getting-Started%3A-Overview#installing-boost +# TODO: +# * Some libraries require openat or have deps that require openat +# * wchar.h needs some work before Boost is usable + [source] -tar = "https://boostorg.jfrog.io/artifactory/main/release/1.83.0/source/boost_1_83_0.tar.bz2" +tar = "https://archives.boost.io/release/1.87.0/source/boost_1_87_0.tar.gz" +blake3 = "9c6eb6bb7866aeb595e14279fcc5a5c7f2279dd41e946e14e2c3d5c1fb8358d3" + [build] template = "custom" +dependencies = [ + # "libicu", + # "liblzma", + # "bzip2", + # "zlib", + # "zstd", +] +script = """ +export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include" +export CPPFLAGS="${CPPFLAGS} ${CFLAGS}" +export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib --static" + +BOOST_ROOT="${COOKBOOK_STAGE}/usr" +mkdir -p "${BOOST_ROOT}" + +pushd "${COOKBOOK_SOURCE}" + +# Help the bootstrap tool detect our cross compilers +# See: https://www.boost.org/build/doc/html/bbv2/overview/configuration.html +# I'm not entirely sure which directory to place it in, so I put the conf in both +echo "using gcc : : ${TARGET}-gcc ;" >| user-config.jam +cp -v user-config.jam tools/build/src/ + +./bootstrap.sh --prefix="${BOOST_ROOT}" --with-toolset=gcc +./b2 -d2 install + +popd +""" From a8aec7a5106661c6452b16e154628fb927158c5b Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Thu, 23 Jan 2025 21:39:26 +1100 Subject: [PATCH 2243/3180] feat(patchelf) Signed-off-by: Anhad Singh --- recipes/tools/patchelf/recipe.toml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 recipes/tools/patchelf/recipe.toml diff --git a/recipes/tools/patchelf/recipe.toml b/recipes/tools/patchelf/recipe.toml new file mode 100644 index 00000000..4e4cfc43 --- /dev/null +++ b/recipes/tools/patchelf/recipe.toml @@ -0,0 +1,18 @@ +[source] +tar = "https://github.com/NixOS/patchelf/releases/download/0.18.0/patchelf-0.18.0.tar.bz2" +blake3 = "f843b32bdf3ee8a1f465e92d3fef34f30c48ccef9c112fdb793e2e7f2ae7283a" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" + +[package] +shared-deps = ["libgcc"] + From 1eb6a6b0e8380f664e6a692d1fe308640cc85f17 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Fri, 24 Jan 2025 22:19:07 +1100 Subject: [PATCH 2244/3180] chore: delete old WIP patchelf recipe Signed-off-by: Anhad Singh --- recipes/wip/tools/patchelf/recipe.toml | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 recipes/wip/tools/patchelf/recipe.toml diff --git a/recipes/wip/tools/patchelf/recipe.toml b/recipes/wip/tools/patchelf/recipe.toml deleted file mode 100644 index 84e86bf2..00000000 --- a/recipes/wip/tools/patchelf/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO compiled but not tested -[source] -tar = "https://github.com/NixOS/patchelf/releases/download/0.18.0/patchelf-0.18.0.tar.bz2" -[build] -template = "configure" From 3dc8a1068515efd89758d9aec080a9d0444690cd Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Mon, 27 Jan 2025 20:31:15 +1100 Subject: [PATCH 2245/3180] feat(gettext): dynamic Signed-off-by: Anhad Singh --- recipes/tools/gettext/recipe.toml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/recipes/tools/gettext/recipe.toml b/recipes/tools/gettext/recipe.toml index c0658158..71c86405 100644 --- a/recipes/tools/gettext/recipe.toml +++ b/recipes/tools/gettext/recipe.toml @@ -5,7 +5,14 @@ patches = [ "redox.patch" ] script = """ +DYNAMIC_INIT wget -O build-aux/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +( cd gettext-runtime/libasprintf && autoreconf -fvi -I${COOKBOOK_HOST_SYSROOT}/share/aclocal ) +( cd gettext-runtime/intl && autoreconf -fvi -I${COOKBOOK_HOST_SYSROOT}/share/aclocal ) +( cd gettext-runtime && autoreconf -fvi -I${COOKBOOK_HOST_SYSROOT}/share/aclocal ) +( cd gettext-tools && autoreconf -fvi -I${COOKBOOK_HOST_SYSROOT}/share/aclocal ) +( cd libtextstyle && autoreconf -fvi -I${COOKBOOK_HOST_SYSROOT}/share/aclocal ) +autoreconf -fvi -I${COOKBOOK_HOST_SYSROOT}/share/aclocal """ [build] @@ -14,9 +21,10 @@ dependencies = [ "libiconv" ] script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( - --disable-shared --enable-static + --enable-shared ac_cv_have_decl_program_invocation_name=no gt_cv_locale_fr=false gt_cv_locale_fr_utf8=false @@ -26,3 +34,10 @@ COOKBOOK_CONFIGURE_FLAGS+=( ) cookbook_configure """ + +[package] +shared-deps = [ + "libgcc", + "libiconv" +] + From 443b55efd96d89c8741e8cb358f38494a8abc919 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Mon, 27 Jan 2025 20:31:39 +1100 Subject: [PATCH 2246/3180] feat(gettext): bump to 0.22.5 Signed-off-by: Anhad Singh --- recipes/tools/gettext/recipe.toml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/recipes/tools/gettext/recipe.toml b/recipes/tools/gettext/recipe.toml index 71c86405..8fe8b5a3 100644 --- a/recipes/tools/gettext/recipe.toml +++ b/recipes/tools/gettext/recipe.toml @@ -1,6 +1,8 @@ +# GNU gettext utilities are a set of tools that provides a framework to help +# other GNU packages produce multi-lingual messages. [source] -tar = "https://ftp.gnu.org/pub/gnu/gettext/gettext-0.21.1.tar.gz" -blake3 = "0d0af5a79978fbeac4641ee64480943650af99f70467353e7c3068ffd5523acd" +tar = "https://ftp.gnu.org/pub/gnu/gettext/gettext-0.22.5.tar.gz" +blake3 = "cb3f3a34da7ce1a92746df81f5b78c5d53841973a24eb80ab76537263d380ec0" patches = [ "redox.patch" ] From 212692e1eafffd8a7bf00f0872dfcd0c464a79a6 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Tue, 28 Jan 2025 21:52:34 +1100 Subject: [PATCH 2247/3180] fix(cook): build shared dependencies Before it was not check if the shared dependencies of a package had been built. This resulted in the installer panicking as it tried to install a non-built package. This commit fixes that issue. Signed-off-by: Anhad Singh --- src/bin/cook.rs | 12 ++++++------ src/recipe.rs | 12 ++++++++++++ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index c573311c..ff9345ad 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1,5 +1,5 @@ use cookbook::blake3::blake3_progress; -use cookbook::recipe::{BuildKind, BuildRecipe, PackageRecipe, Recipe, SourceRecipe}; +use cookbook::recipe::{BuildKind, PackageRecipe, Recipe, SourceRecipe}; use cookbook::recipe_find::recipe_find; use std::{ env, fs, @@ -454,10 +454,10 @@ fn build( source_dir: &Path, target_dir: &Path, name: &str, - build: &BuildRecipe, + recipe: &Recipe, ) -> Result { let mut dep_pkgars = vec![]; - for dependency in build.dependencies.iter() { + for dependency in recipe.dependencies_iter() { //TODO: sanitize name let dependency_dir = recipe_find(dependency, Path::new("recipes"))?; if dependency_dir.is_none() { @@ -720,7 +720,7 @@ done //TODO: better integration with redoxer (library instead of binary) //TODO: configurable target //TODO: Add more configurability, convert scripts to Rust? - let script = match &build.kind { + let script = match &recipe.build.kind { BuildKind::Cargo { package_path, cargoflags, @@ -862,7 +862,7 @@ fn cook(recipe_dir: &Path, name: &str, recipe: &Recipe, fetch_only: bool) -> Res create_dir(&target_dir)?; } - let stage_dir = build(recipe_dir, &source_dir, &target_dir, name, &recipe.build) + let stage_dir = build(recipe_dir, &source_dir, &target_dir, name, &recipe) .map_err(|err| format!("failed to build: {}", err))?; let _package_file = package(recipe_dir, &stage_dir, &target_dir, name, &recipe.package) @@ -925,7 +925,7 @@ impl CookRecipe { let recipe = Self::new(name.clone())?; let dependencies = - Self::new_recursive(&recipe.recipe.build.dependencies, recursion - 1).map_err( + Self::new_recursive(&recipe.recipe.dependencies(), recursion - 1).map_err( |err| format!("{}: failed on loading build dependencies:\n{}", name, err), )?; diff --git a/src/recipe.rs b/src/recipe.rs index 9ed96ecc..1ba06179 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -94,6 +94,18 @@ pub struct Recipe { pub package: PackageRecipe, } +impl Recipe { + #[inline] + pub fn dependencies_iter(&self) -> impl Iterator { + self.build.dependencies.iter().chain(self.package.shared_deps.iter()) + } + + #[inline] + pub fn dependencies(&self) -> Vec { + self.dependencies_iter().cloned().collect::>() + } +} + #[cfg(test)] mod tests { #[test] From d6a499b29fd5c42dcdf70a9b2de4815c37549f9c Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Tue, 28 Jan 2025 22:13:10 +1100 Subject: [PATCH 2248/3180] feat(cosmic-files): dynamic Signed-off-by: Anhad Singh --- recipes/tools/cosmic-files/recipe.toml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/recipes/tools/cosmic-files/recipe.toml b/recipes/tools/cosmic-files/recipe.toml index a6b481ac..779f2a2b 100644 --- a/recipes/tools/cosmic-files/recipe.toml +++ b/recipes/tools/cosmic-files/recipe.toml @@ -9,8 +9,11 @@ dependencies = [ "libiconv", ] script = """ +DYNAMIC_INIT +if [[ -n "$COOKBOOK_PREFER_STATIC" ]]; then + export GETTEXT_STATIC=1 +fi export GETTEXT_DIR="${COOKBOOK_SYSROOT}" -export GETTEXT_STATIC=1 # Hack to link libiconv, which gettext-sys does not link "${COOKBOOK_CARGO}" rustc \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ @@ -34,3 +37,11 @@ cp -v "${COOKBOOK_SOURCE}/res/${APPID}.metainfo.xml" "${COOKBOOK_STAGE}/usr/shar mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" cp -rv "${COOKBOOK_SOURCE}/res/icons/hicolor/" "${COOKBOOK_STAGE}/usr/share/icons/" """ + +[package] +dependencies = [ + "libgcc", + "gettext", + "libiconv" +] + From eede787cbf594a6f1004fe38b1dd0a062180aaab Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Fri, 31 Jan 2025 18:39:52 +1100 Subject: [PATCH 2249/3180] fix(cook): copy source only if newer Fixes the bug where libgcc was unnecessarily building multiple times. Which in turn caused other packages to rebuild. Example: The source path is set to `prefix/${TARGET}/sysroot`. Currently the way `cook` handles `source.path` ends up messing the timestamp of `recipes/libs/libgcc/source` as it just performs `copy_dir_all(path, &source_dir)` without checking if the timestamp of the source path specified in the recipe was changed. This would consequently update the timestamp of the source and cause it to rebuild. Signed-off-by: Anhad Singh --- src/bin/cook.rs | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index ff9345ad..5d48a10b 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -228,14 +228,17 @@ fn fetch(recipe_dir: &Path, source: &Option) -> Result { - copy_dir_all(path, &source_dir).map_err(|e| { - format!( - "Couldn't copy source from {} to {}: {}", - path, - source_dir.display(), - e - ) - })?; + if modified_dir(Path::new(path))? > modified_dir(&source_dir)? { + eprintln!("[DEBUG]: {} is newer than {}", path, source_dir.display()); + copy_dir_all(path, &source_dir).map_err(|e| { + format!( + "Couldn't copy source from {} to {}: {}", + path, + source_dir.display(), + e + ) + })?; + } } Some(SourceRecipe::Git { git, From af662f716f00af02d1cb7cdf7d2690f5e3ba5263 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Fri, 31 Jan 2025 22:22:44 +1100 Subject: [PATCH 2250/3180] fix(netsurf) Signed-off-by: Anhad Singh --- recipes/web/netsurf/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/web/netsurf/recipe.sh b/recipes/web/netsurf/recipe.sh index 640d957e..bc09116f 100644 --- a/recipes/web/netsurf/recipe.sh +++ b/recipes/web/netsurf/recipe.sh @@ -11,7 +11,7 @@ function recipe_version { function recipe_build { export TARGET="framebuffer" export CFLAGS="-I${COOKBOOK_SYSROOT}/include -I${PWD}/inst-${TARGET}/include" - export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib -L${PWD}/inst-${TARGET}/lib -static -Wl,--allow-multiple-definition -Wl,-Bstatic" + export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib -L${PWD}/inst-${TARGET}/lib -Wl,--allow-multiple-definition" # nghttp2 is not linked for some reason export LDFLAGS="${LDFLAGS} -lcurl -lnghttp2" "$REDOX_MAKE" PREFIX=/usr V=1 -j"$($NPROC)" From bd5f5357a814cbd8d9e8b3fd6a39190c8dd1e9f5 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Sat, 1 Feb 2025 00:14:42 +1100 Subject: [PATCH 2251/3180] fix(cookbook): add runtime dependencies to repo Signed-off-by: Anhad Singh --- repo.sh | 14 +++++ src/bin/cook.rs | 93 +++++++------------------------- src/bin/runtime_deps_of.rs | 25 +++++++++ src/recipe.rs | 105 ++++++++++++++++++++++++++++++++++++- 4 files changed, 161 insertions(+), 76 deletions(-) create mode 100644 src/bin/runtime_deps_of.rs diff --git a/repo.sh b/repo.sh index 202cef3b..6d866519 100755 --- a/repo.sh +++ b/repo.sh @@ -27,6 +27,9 @@ then recipes="$(target/release/list_recipes)" fi +# All $recipes that are in the new TOML format. +toml_recipes="" + for recipe in $recipes do recipe_path=`target/release/find_recipe $recipe` @@ -39,6 +42,7 @@ do if [ -e "${COOKBOOK_RECIPE}/recipe.toml" ] then + toml_recipes+=" $recipe" target/release/cook "$recipe" continue fi @@ -89,6 +93,16 @@ mkdir -p "$REPO" APPSTREAM_SOURCES=() +# Currently, we only support runtime dependencies for recipes in the new TOML +# format. Runtime dependencies include both `[package.dependencies]` and +# [`package.shared_deps`]. +# +# The following adds the package dependencies of the recipes to the repo as +# well. +# +# TODO(?): All of this script can be moved into `cook.rs`. +recipes="$recipes $(target/release/runtime_deps_of $toml_recipes)" + for recipe in $recipes do recipe_path=`target/release/find_recipe $recipe` diff --git a/src/bin/cook.rs b/src/bin/cook.rs index ff9345ad..64812349 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1,5 +1,5 @@ use cookbook::blake3::blake3_progress; -use cookbook::recipe::{BuildKind, PackageRecipe, Recipe, SourceRecipe}; +use cookbook::recipe::{BuildKind, CookRecipe, PackageRecipe, Recipe, SourceRecipe}; use cookbook::recipe_find::recipe_find; use std::{ env, fs, @@ -14,7 +14,11 @@ use walkdir::{DirEntry, WalkDir}; fn should_build_shared() -> bool { use std::sync::OnceLock; static YES: OnceLock = OnceLock::new(); - *YES.get_or_init(|| env::var("COOKBOOK_PREFER_STATIC").expect("COOKBOOK_PREFER_STATIC").is_empty()) + *YES.get_or_init(|| { + env::var("COOKBOOK_PREFER_STATIC") + .expect("COOKBOOK_PREFER_STATIC") + .is_empty() + }) } fn remove_all(path: &Path) -> Result<(), String> { @@ -761,7 +765,10 @@ done command }; - let full_script = format!("{}\n{}\n{}\n{}", pre_script, SHARED_PRESCRIPT, script, post_script); + let full_script = format!( + "{}\n{}\n{}\n{}", + pre_script, SHARED_PRESCRIPT, script, post_script + ); run_command_stdin(command, full_script.as_bytes())?; // Move stage.tmp to stage atomically @@ -826,7 +833,12 @@ fn package( depends: Vec, } let depends = if should_build_shared() { - package.dependencies.iter().chain(package.shared_deps.iter()).cloned().collect() + package + .dependencies + .iter() + .chain(package.shared_deps.iter()) + .cloned() + .collect() } else { package.dependencies.clone() }; @@ -835,7 +847,7 @@ fn package( version: "TODO".into(), target: env::var("TARGET") .map_err(|err| format!("failed to read TARGET: {:?}", err))?, - depends + depends, }) .map_err(|err| format!("failed to serialize stage.toml: {:?}", err))?; fs::write(target_dir.join("stage.toml"), stage_toml) @@ -871,75 +883,6 @@ fn cook(recipe_dir: &Path, name: &str, recipe: &Recipe, fetch_only: bool) -> Res Ok(()) } -pub struct CookRecipe { - name: String, - dir: PathBuf, - recipe: Recipe, -} - -impl CookRecipe { - pub fn new(name: String) -> Result { - //TODO: sanitize recipe name? - let dir = recipe_find(&name, Path::new("recipes"))?; - if dir.is_none() { - return Err(format!("failed to find recipe directory '{}'", name)); - } - let dir = dir.unwrap(); - let file = dir.join("recipe.toml"); - if !file.is_file() { - return Err(format!("failed to find recipe file '{}'", file.display())); - } - - let toml = fs::read_to_string(&file).map_err(|err| { - format!( - "failed to read recipe file '{}': {}\n{:#?}", - file.display(), - err, - err - ) - })?; - - let recipe: Recipe = toml::from_str(&toml).map_err(|err| { - format!( - "failed to parse recipe file '{}': {}\n{:#?}", - file.display(), - err, - err - ) - })?; - - Ok(Self { name, dir, recipe }) - } - - //TODO: make this more efficient, smarter, and not return duplicates - pub fn new_recursive(names: &[String], recursion: usize) -> Result, String> { - if recursion == 0 { - return Err(format!( - "recursion limit while processing build dependencies: {:#?}", - names - )); - } - - let mut recipes = Vec::new(); - for name in names { - let recipe = Self::new(name.clone())?; - - let dependencies = - Self::new_recursive(&recipe.recipe.dependencies(), recursion - 1).map_err( - |err| format!("{}: failed on loading build dependencies:\n{}", name, err), - )?; - - for dependency in dependencies { - recipes.push(dependency); - } - - recipes.push(recipe); - } - - Ok(recipes) - } -} - fn main() { let mut matching = true; let mut dry_run = false; @@ -956,7 +899,7 @@ fn main() { } } - let recipes = match CookRecipe::new_recursive(&recipe_names, 16) { + let recipes = match CookRecipe::new_recursive(&recipe_names, 16, false) { Ok(ok) => ok, Err(err) => { eprintln!( diff --git a/src/bin/runtime_deps_of.rs b/src/bin/runtime_deps_of.rs new file mode 100644 index 00000000..7edc25ba --- /dev/null +++ b/src/bin/runtime_deps_of.rs @@ -0,0 +1,25 @@ +use cookbook::recipe::CookRecipe; +use std::{env::args, process::ExitCode}; + +/// Same as `cookbook/src/bin/cook.rs`. +const DEP_DEPTH: usize = 16; + +fn usage() { + eprintln!("Usage: pkg_deps_of package1 [package2 ...]"); +} + +fn main() -> ExitCode { + if args().len() < 2 { + usage(); + return ExitCode::FAILURE; + } + + let names = args().skip(1).collect::>(); + let recipes = CookRecipe::new_recursive(&names, DEP_DEPTH, true).expect("recipe not found"); + + for recipe in recipes { + println!("{}", recipe.name); + } + + ExitCode::SUCCESS +} diff --git a/src/recipe.rs b/src/recipe.rs index 1ba06179..eb73239c 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -1,5 +1,12 @@ +use std::{ + fs, + path::{Path, PathBuf}, +}; + use serde::{Deserialize, Serialize}; +use crate::recipe_find::recipe_find; + /// Specifies how to download the source for a recipe #[derive(Debug, Deserialize, PartialEq, Serialize)] #[serde(untagged)] @@ -97,13 +104,109 @@ pub struct Recipe { impl Recipe { #[inline] pub fn dependencies_iter(&self) -> impl Iterator { - self.build.dependencies.iter().chain(self.package.shared_deps.iter()) + self.build + .dependencies + .iter() + .chain(self.package.shared_deps.iter()) } + /// `[build.dependencies] + [package.shared_deps]` #[inline] pub fn dependencies(&self) -> Vec { self.dependencies_iter().cloned().collect::>() } + + /// `[package.dependencies] + [package.shared_deps]` + #[inline] + pub fn runtime_dependencies(&self) -> Vec { + self.package + .dependencies + .iter() + .chain(self.package.shared_deps.iter()) + .cloned() + .collect::>() + } +} + +pub struct CookRecipe { + pub name: String, + pub dir: PathBuf, + pub recipe: Recipe, +} + +impl CookRecipe { + pub fn new(name: String) -> Result { + //TODO: sanitize recipe name? + let dir = recipe_find(&name, Path::new("recipes"))?; + if dir.is_none() { + return Err(format!("failed to find recipe directory '{}'", name)); + } + let dir = dir.unwrap(); + let file = dir.join("recipe.toml"); + if !file.is_file() { + return Err(format!("failed to find recipe file '{}'", file.display())); + } + + let toml = fs::read_to_string(&file).map_err(|err| { + format!( + "failed to read recipe file '{}': {}\n{:#?}", + file.display(), + err, + err + ) + })?; + + let recipe: Recipe = toml::from_str(&toml).map_err(|err| { + format!( + "failed to parse recipe file '{}': {}\n{:#?}", + file.display(), + err, + err + ) + })?; + + Ok(Self { name, dir, recipe }) + } + + //TODO: make this more efficient, smarter, and not return duplicates + pub fn new_recursive( + names: &[String], + recursion: usize, + runtime_deps_only: bool, + ) -> Result, String> { + if recursion == 0 { + return Err(format!( + "recursion limit while processing build dependencies: {:#?}", + names + )); + } + + let mut recipes = Vec::new(); + for name in names { + let recipe = Self::new(name.clone())?; + let all_deps = recipe.recipe.dependencies(); + let runtime_deps = recipe.recipe.runtime_dependencies(); + + let dependencies = Self::new_recursive( + if runtime_deps_only { + &runtime_deps + } else { + &all_deps + }, + recursion - 1, + runtime_deps_only, + ) + .map_err(|err| format!("{}: failed on loading build dependencies:\n{}", name, err))?; + + for dependency in dependencies { + recipes.push(dependency); + } + + recipes.push(recipe); + } + + Ok(recipes) + } } #[cfg(test)] From 78bf3a68fcb8b19250d80827013fb383d3d29e13 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Sat, 1 Feb 2025 00:19:18 +1100 Subject: [PATCH 2252/3180] misc: cleanup Signed-off-by: Anhad Singh --- src/bin/cook.rs | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 64812349..c5a34488 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -783,9 +783,10 @@ fn package( stage_dir: &Path, target_dir: &Path, name: &str, - package: &PackageRecipe, + recipe: &Recipe, ) -> Result { //TODO: metadata like dependencies, name, and version + let package = &recipe.package; let secret_path = "build/id_ed25519.toml"; let public_path = "build/id_ed25519.pub.toml"; @@ -833,12 +834,7 @@ fn package( depends: Vec, } let depends = if should_build_shared() { - package - .dependencies - .iter() - .chain(package.shared_deps.iter()) - .cloned() - .collect() + recipe.runtime_dependencies() } else { package.dependencies.clone() }; @@ -877,7 +873,7 @@ fn cook(recipe_dir: &Path, name: &str, recipe: &Recipe, fetch_only: bool) -> Res let stage_dir = build(recipe_dir, &source_dir, &target_dir, name, &recipe) .map_err(|err| format!("failed to build: {}", err))?; - let _package_file = package(recipe_dir, &stage_dir, &target_dir, name, &recipe.package) + let _package_file = package(recipe_dir, &stage_dir, &target_dir, name, &recipe) .map_err(|err| format!("failed to package: {}", err))?; Ok(()) From 038625476b26f3975677537d42e9aacae53be536 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Sat, 1 Feb 2025 00:33:33 +1100 Subject: [PATCH 2253/3180] fix(cosmic-files): set shared-deps instead of package deps Signed-off-by: Anhad Singh --- recipes/tools/cosmic-files/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/tools/cosmic-files/recipe.toml b/recipes/tools/cosmic-files/recipe.toml index 779f2a2b..9d6ee4bd 100644 --- a/recipes/tools/cosmic-files/recipe.toml +++ b/recipes/tools/cosmic-files/recipe.toml @@ -39,7 +39,7 @@ cp -rv "${COOKBOOK_SOURCE}/res/icons/hicolor/" "${COOKBOOK_STAGE}/usr/share/icon """ [package] -dependencies = [ +shared-deps = [ "libgcc", "gettext", "libiconv" From ec8a673b5611a67fb5c9e775a48fca9ab707bec5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 31 Jan 2025 14:33:14 -0700 Subject: [PATCH 2254/3180] Remove source section from libgcc --- recipes/libs/libgcc/recipe.toml | 3 --- 1 file changed, 3 deletions(-) diff --git a/recipes/libs/libgcc/recipe.toml b/recipes/libs/libgcc/recipe.toml index cfdf136a..31ebddf1 100644 --- a/recipes/libs/libgcc/recipe.toml +++ b/recipes/libs/libgcc/recipe.toml @@ -1,6 +1,3 @@ -[source] -path = "../prefix/x86_64-unknown-redox/sysroot" - [build] template = "custom" script = """ From d9ad4100bf27ab2527135885e544380a423ac9e6 Mon Sep 17 00:00:00 2001 From: Ron Williams Date: Sat, 1 Feb 2025 03:01:57 +0000 Subject: [PATCH 2255/3180] Update to latest redoxer --- Cargo.lock | 867 +++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 602 insertions(+), 265 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1af8712a..b612942b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" @@ -79,9 +79,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", @@ -94,43 +94,44 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "once_cell", + "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.90" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37bf3594c4c988a53154954629820791dde498571819ae4ca50ca811e060cc95" +checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" [[package]] name = "arg_parser" @@ -168,9 +169,9 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "async-compression" -version = "0.4.17" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cb8f1d480b0ea3783ab015936d2a55c87e219676f0c0b7dec61494043f21857" +checksum = "df895a515f70646414f4b45c0b79082783b80552b373a68283012928df56f522" dependencies = [ "brotli", "futures-core", @@ -185,7 +186,7 @@ version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi 0.1.19", + "hermit-abi", "libc", "winapi", ] @@ -237,9 +238,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" [[package]] name = "blake2" @@ -312,9 +313,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "4.0.1" +version = "4.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" +checksum = "74fa05ad7d803d413eb8380983b092cbbaf9a85f151b871360e7b00cd7060b37" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -322,9 +323,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "bytecount" @@ -340,15 +341,15 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" [[package]] name = "cc" -version = "1.1.31" +version = "1.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" +checksum = "e4730490333d58093109dc02c23174c3f4d490998c3fed3cc8e82d57afedb9cf" dependencies = [ "shlex", ] @@ -365,6 +366,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "chacha20" version = "0.9.1" @@ -378,9 +385,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" dependencies = [ "android-tzdata", "iana-time-zone", @@ -421,27 +428,27 @@ dependencies = [ "bitflags 1.3.2", "strsim", "textwrap", - "unicode-width", + "unicode-width 0.1.14", "vec_map", ] [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "console" -version = "0.15.8" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +checksum = "ea3c6ecd8059b57859df5c69830340ed3c41d30e3da0c1cbed90a96ac853041b" dependencies = [ "encode_unicode", - "lazy_static", "libc", - "unicode-width", - "windows-sys 0.52.0", + "once_cell", + "unicode-width 0.2.0", + "windows-sys 0.59.0", ] [[package]] @@ -464,9 +471,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] @@ -488,18 +495,18 @@ checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "crossbeam-channel" -version = "0.5.13" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -516,9 +523,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crypto-common" @@ -637,12 +644,23 @@ dependencies = [ ] [[package]] -name = "dryoc" -version = "0.6.1" +name = "displaydoc" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2b4e91b49d1084ddf7d8838a75faa9a845d539ee70422a4d6fc53e3bdd036e4" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ - "bitflags 2.6.0", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "dryoc" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e73e0fee365832cd9b9a53ea62f944cc0d7a4c71f2b9c96a28fc74749517afa" +dependencies = [ + "bitflags 2.8.0", "chacha20", "curve25519-dalek", "generic-array", @@ -664,9 +682,9 @@ checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "encode_unicode" -version = "0.3.6" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "endian-num" @@ -676,9 +694,9 @@ checksum = "f8f59926911ef34d1efb9ea1ee8ca78385df62ce700ccf2bcb149011bd226888" [[package]] name = "env_filter" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" +checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" dependencies = [ "log", "regex", @@ -686,9 +704,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" +checksum = "dcaee3d8e3cfc3fd92428d477bc97fc29ec8716d180c0d74c643bb26166660e0" dependencies = [ "anstream", "anstyle", @@ -705,12 +723,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -725,9 +743,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "fatfs" @@ -864,8 +882,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if 1.0.0", + "js-sys", "libc", "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.13.3+wasi-0.2.2", + "windows-targets 0.52.6", ] [[package]] @@ -880,7 +912,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8283e7331b8c93b9756e0cfdbcfb90312852f953c6faf9bf741e684cc3b6ad69" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "crc", "log", "uuid", @@ -888,9 +920,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.0" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" [[package]] name = "hermit-abi" @@ -901,12 +933,6 @@ dependencies = [ "libc", ] -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - [[package]] name = "hex" version = "0.4.3" @@ -918,9 +944,9 @@ dependencies = [ [[package]] name = "http" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" dependencies = [ "bytes", "fnv", @@ -952,9 +978,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.5" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" [[package]] name = "humantime" @@ -964,9 +990,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ "bytes", "futures-channel", @@ -983,9 +1009,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.3" +version = "0.27.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" dependencies = [ "futures-util", "http", @@ -1001,9 +1027,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" dependencies = [ "bytes", "futures-channel", @@ -1042,20 +1068,149 @@ dependencies = [ ] [[package]] -name = "idna" -version = "0.5.0" +name = "icu_collections" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", ] [[package]] name = "indexmap" -version = "2.6.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" dependencies = [ "equivalent", "hashbrown", @@ -1063,15 +1218,15 @@ dependencies = [ [[package]] name = "indicatif" -version = "0.17.8" +version = "0.17.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" dependencies = [ "console", - "instant", "number_prefix", "portable-atomic", - "unicode-width", + "unicode-width 0.2.0", + "web-time", ] [[package]] @@ -1083,20 +1238,11 @@ dependencies = [ "generic-array", ] -[[package]] -name = "instant" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if 1.0.0", -] - [[package]] name = "ipnet" -version = "2.10.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "is_terminal_polyfill" @@ -1115,16 +1261,17 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "js-sys" -version = "0.3.72" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -1136,9 +1283,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.161" +version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" [[package]] name = "libredox" @@ -1146,22 +1293,28 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "libc", "redox_syscall", ] [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" [[package]] name = "log" -version = "0.4.22" +version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" [[package]] name = "memchr" @@ -1188,20 +1341,19 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ - "hermit-abi 0.3.9", "libc", "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.52.0", @@ -1236,9 +1388,9 @@ checksum = "6aa2c4e539b869820a2b82e1aef6ff40aa85e65decdd5185e83fb4b1249cd00f" [[package]] name = "object" -version = "0.36.5" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] @@ -1277,7 +1429,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fa925f9becb532d758b0014b472c576869910929cf4c3f8054b386f19ab9e21" dependencies = [ - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -1299,9 +1451,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -1369,9 +1521,9 @@ checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "portable-atomic" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" +checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" [[package]] name = "powerfmt" @@ -1390,9 +1542,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.88" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9" +checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" dependencies = [ "unicode-ident", ] @@ -1408,9 +1560,9 @@ dependencies = [ [[package]] name = "quinn" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" +checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" dependencies = [ "bytes", "pin-project-lite", @@ -1419,34 +1571,38 @@ dependencies = [ "rustc-hash", "rustls", "socket2", - "thiserror", + "thiserror 2.0.11", "tokio", "tracing", ] [[package]] name = "quinn-proto" -version = "0.11.8" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" +checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" dependencies = [ "bytes", + "getrandom 0.2.15", "rand", "ring", "rustc-hash", "rustls", + "rustls-pki-types", "slab", - "thiserror", + "thiserror 2.0.11", "tinyvec", "tracing", + "web-time", ] [[package]] name = "quinn-udp" -version = "0.5.5" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b" +checksum = "1c40286217b4ba3a71d644d752e6a0b71f13f1b6a2c5311acfcbe0c2418ed904" dependencies = [ + "cfg_aliases", "libc", "once_cell", "socket2", @@ -1456,9 +1612,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", ] @@ -1527,9 +1683,9 @@ checksum = "436d45c2b6a5b159d43da708e62b25be3a4a3d5550d654b72216ade4c4bfd717" [[package]] name = "redox-pkg" -version = "0.2.1" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e74e8f571b1a91c18e716d73accdf1bdc72a1c93c586f349a6018db3b1424afd" +checksum = "6fe401458446fceb860923c57656f112b3c082310c5d7569760efc1a92b9e22e" dependencies = [ "indicatif", "pkgar", @@ -1538,7 +1694,7 @@ dependencies = [ "reqwest", "serde", "serde_derive", - "thiserror", + "thiserror 1.0.69", "toml 0.8.19", ] @@ -1569,9 +1725,9 @@ dependencies = [ [[package]] name = "redox_installer" -version = "0.2.28" +version = "0.2.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b82f8b5242a3c48b7bbbf96172c563db8d259d35f64f331b9dbe6b29fb5cd96" +checksum = "af62ec0301597b6560949922155d1e717552ca6c0c24cef7f2e3f15f8f6ac33d" dependencies = [ "anyhow", "arg_parser", @@ -1606,16 +1762,16 @@ dependencies = [ "itertools", "strip-ansi-escapes", "termion", - "unicode-width", + "unicode-width 0.1.14", ] [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", ] [[package]] @@ -1632,14 +1788,14 @@ checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom 0.2.15", "libredox", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "redoxer" -version = "0.2.48" +version = "0.2.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaa711e2a14950e9ae7601b3e9fa1759d21df803127e32121bf90bb873672b11" +checksum = "6e753b0d0cffadf6549598e4f4fea21df085fbc78d3e1276f449989a26db4a2c" dependencies = [ "dirs 5.0.1", "proc-mounts", @@ -1652,9 +1808,9 @@ dependencies = [ [[package]] name = "redoxfs" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a579fab9d51965b0660af059f9eae4da343c04cc3d7c20cd32bccd24af2d91" +checksum = "3c8756cd15a32143479f4a723ececcbe2b8e422242924b0628a163826aea8c4d" dependencies = [ "aes", "argon2", @@ -1678,9 +1834,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -1690,9 +1846,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -1707,9 +1863,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.8" +version = "0.12.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" +checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" dependencies = [ "async-compression", "base64 0.22.1", @@ -1741,6 +1897,7 @@ dependencies = [ "tokio", "tokio-rustls", "tokio-util", + "tower", "tower-service", "url", "wasm-bindgen", @@ -1785,9 +1942,9 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" +checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" [[package]] name = "rustc_version" @@ -1800,22 +1957,22 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.37" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "rustls" -version = "0.23.15" +version = "0.23.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fbb44d7acc4e873d613422379f69f237a1b141928c02f6bc6ccfddddc2d7993" +checksum = "9fb9263ab4eb695e42321db096e3b8fbd715a59b154d5c88d82db2175b681ba7" dependencies = [ "once_cell", "ring", @@ -1836,9 +1993,12 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" +dependencies = [ + "web-time", +] [[package]] name = "rustls-webpki" @@ -1852,10 +2012,16 @@ dependencies = [ ] [[package]] -name = "ryu" -version = "1.0.18" +name = "rustversion" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" + +[[package]] +name = "ryu" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" [[package]] name = "salsa20" @@ -1893,9 +2059,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.23" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" [[package]] name = "serde" @@ -1919,9 +2085,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.132" +version = "1.0.138" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" +checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" dependencies = [ "itoa", "memchr", @@ -1984,9 +2150,9 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" dependencies = [ "libc", "windows-sys 0.52.0", @@ -1999,10 +2165,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] -name = "strip-ansi-escapes" -version = "0.2.0" +name = "stable_deref_trait" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55ff8ef943b384c414f54aefa961dd2bd853add74ec75e7ac74cf91dba62bcfa" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "strip-ansi-escapes" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a8f8038e7e7969abb3f1b7c2a811225e9296da208539e0f79c5251d6cac0025" dependencies = [ "vte", ] @@ -2021,9 +2193,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.82" +version = "2.0.96" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83540f837a8afc019423a8edb95b52a8effe46957ee402287f4292fae35be021" +checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80" dependencies = [ "proc-macro2", "quote", @@ -2032,21 +2204,33 @@ dependencies = [ [[package]] name = "sync_wrapper" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ "futures-core", ] [[package]] -name = "tempfile" -version = "3.13.0" +name = "synstructure" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tempfile" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" dependencies = [ "cfg-if 1.0.0", "fastrand", + "getrandom 0.3.1", "once_cell", "rustix", "windows-sys 0.59.0", @@ -2070,23 +2254,43 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" dependencies = [ - "unicode-width", + "unicode-width 0.1.14", ] [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +dependencies = [ + "thiserror-impl 2.0.11", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" dependencies = [ "proc-macro2", "quote", @@ -2095,9 +2299,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" dependencies = [ "deranged", "num-conv", @@ -2113,10 +2317,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] -name = "tinyvec" -version = "1.8.0" +name = "tinystr" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" dependencies = [ "tinyvec_macros", ] @@ -2129,9 +2343,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" dependencies = [ "backtrace", "bytes", @@ -2144,20 +2358,19 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" dependencies = [ "rustls", - "rustls-pki-types", "tokio", ] [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" dependencies = [ "bytes", "futures-core", @@ -2198,9 +2411,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "02a8b472d1a3d7c18e2d61a489aee3453fd9031c33e4f55bd533f4a7adca1bee" dependencies = [ "indexmap", "serde", @@ -2209,6 +2422,27 @@ dependencies = [ "winnow", ] +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + [[package]] name = "tower-service" version = "0.3.3" @@ -2217,9 +2451,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "pin-project-lite", "tracing-core", @@ -2227,9 +2461,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", ] @@ -2246,26 +2480,11 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" -[[package]] -name = "unicode-bidi" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" - [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" - -[[package]] -name = "unicode-normalization" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" -dependencies = [ - "tinyvec", -] +checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" [[package]] name = "unicode-width" @@ -2273,6 +2492,12 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" +[[package]] +name = "unicode-width" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" + [[package]] name = "untrusted" version = "0.9.0" @@ -2281,9 +2506,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.2" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", @@ -2296,6 +2521,18 @@ version = "1.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07a91d0648d862a02d641c82292791accfe66d36df75d8149ebc9768f2e36863" +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -2304,9 +2541,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.11.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" +checksum = "b3758f5e68192bb96cc8f9b7e2c2cfdabb435499a28499a42f8f984092adad4b" dependencies = [ "getrandom 0.2.15", ] @@ -2325,22 +2562,11 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "vte" -version = "0.11.1" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5022b5fbf9407086c180e9557be968742d839e68346af7792b8592489732197" +checksum = "231fdcd7ef3037e8330d8e17e61011a2c244126acc0a982f4040ac3f9f0bc077" dependencies = [ - "utf8parse", - "vte_generate_state_changes", -] - -[[package]] -name = "vte_generate_state_changes" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e369bee1b05d510a7b4ed645f5faa90619e05437111783ea5848f28d97d3c2e" -dependencies = [ - "proc-macro2", - "quote", + "memchr", ] [[package]] @@ -2375,25 +2601,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] -name = "wasm-bindgen" -version = "0.2.95" +name = "wasi" +version = "0.13.3+wasi-0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if 1.0.0", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", "syn", @@ -2402,21 +2637,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.45" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if 1.0.0", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2424,9 +2660,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", @@ -2437,15 +2673,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "web-sys" -version = "0.3.72" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ "js-sys", "wasm-bindgen", @@ -2453,9 +2702,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.6" +version = "0.26.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" +checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9" dependencies = [ "rustls-pki-types", ] @@ -2746,13 +2995,58 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.20" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "7e49d2d35d3fad69b39b94139037ecfb4f359f08958b9c11e7315ce770462419" dependencies = [ "memchr", ] +[[package]] +name = "wit-bindgen-rt" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +dependencies = [ + "bitflags 2.8.0", +] + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -2774,6 +3068,27 @@ dependencies = [ "syn", ] +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + [[package]] name = "zeroize" version = "1.8.1" @@ -2793,3 +3108,25 @@ dependencies = [ "quote", "syn", ] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] From 330ad13e280fd505226b3b0182bfebe4e7a63a45 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Sun, 2 Feb 2025 13:58:24 +1100 Subject: [PATCH 2256/3180] fix(cook/fetch): check if directory does not exist Signed-off-by: Anhad Singh --- src/bin/cook.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 5d48a10b..94bc4d99 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -228,7 +228,7 @@ fn fetch(recipe_dir: &Path, source: &Option) -> Result { - if modified_dir(Path::new(path))? > modified_dir(&source_dir)? { + if !source_dir.is_dir() || modified_dir(Path::new(path))? > modified_dir(&source_dir)? { eprintln!("[DEBUG]: {} is newer than {}", path, source_dir.display()); copy_dir_all(path, &source_dir).map_err(|e| { format!( From 7a0b6a54ab9869cd929dab74dabc8335a70ddabf Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Sun, 2 Feb 2025 15:27:43 +1100 Subject: [PATCH 2257/3180] feat(terminfo): convert to TOML recipe Signed-off-by: Anhad Singh --- recipes/other/terminfo/recipe.sh | 22 ---------------------- recipes/other/terminfo/recipe.toml | 11 +++++++++++ 2 files changed, 11 insertions(+), 22 deletions(-) delete mode 100644 recipes/other/terminfo/recipe.sh create mode 100644 recipes/other/terminfo/recipe.toml diff --git a/recipes/other/terminfo/recipe.sh b/recipes/other/terminfo/recipe.sh deleted file mode 100644 index 8fdee2fc..00000000 --- a/recipes/other/terminfo/recipe.sh +++ /dev/null @@ -1,22 +0,0 @@ -GIT=https://github.com/sajattack/terminfo - -function recipe_version { - printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" - skip=1 -} - -function recipe_build { - echo "skipping build" - skip=1 -} - -function recipe_clean { - echo "skipping clean" - skip=1 -} - -function recipe_stage { - mkdir -p ../stage/share - cp -r * ../stage/share/ - skip=1 -} diff --git a/recipes/other/terminfo/recipe.toml b/recipes/other/terminfo/recipe.toml new file mode 100644 index 00000000..856ea873 --- /dev/null +++ b/recipes/other/terminfo/recipe.toml @@ -0,0 +1,11 @@ +[source] +git = "https://github.com/sajattack/terminfo" +branch = "master" + +[build] +template = "custom" +script = """ +mkdir -p ${COOKBOOK_STAGE}/share +cp -r ${COOKBOOK_SOURCE}/. ${COOKBOOK_STAGE}/share/ +""" + From 49b31c3d895e922c5deb2edc3d46bfeb2c40d41b Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Sun, 2 Feb 2025 16:41:48 +1100 Subject: [PATCH 2258/3180] feat(prboom): TOML recipe Signed-off-by: Anhad Singh --- recipes/games/prboom/recipe.sh | 42 -------------------------------- recipes/games/prboom/recipe.toml | 35 ++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 42 deletions(-) delete mode 100644 recipes/games/prboom/recipe.sh create mode 100644 recipes/games/prboom/recipe.toml diff --git a/recipes/games/prboom/recipe.sh b/recipes/games/prboom/recipe.sh deleted file mode 100644 index 1b24a2fa..00000000 --- a/recipes/games/prboom/recipe.sh +++ /dev/null @@ -1,42 +0,0 @@ -#TODO: remove --without-mixer when it no longer crashes on x86_64 -VERSION=2.5.0 -TAR=https://downloads.sourceforge.net/project/prboom/prboom%20stable/$VERSION/prboom-$VERSION.tar.gz -BUILD_DEPENDS=(sdl1 liborbital sdl1-mixer libogg libvorbis) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - export CFLAGS="-static" - export MIXER_LIBS="-lSDL_mixer -lvorbisfile -lvorbis -logg" - sysroot="$(realpath ../sysroot)" - autoreconf -if - wget -O autotools/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" - ./configure \ - --prefix=/ \ - --build=${BUILD} \ - --host=${HOST} \ - --disable-cpu-opt \ - --disable-i386-asm \ - --disable-gl \ - --disable-sdltest \ - --without-mixer \ - --without-net \ - --with-sdl-prefix="$sysroot" \ - ac_cv_lib_SDL_mixer_Mix_OpenAudio=yes - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest/usr" install - skip=1 -} diff --git a/recipes/games/prboom/recipe.toml b/recipes/games/prboom/recipe.toml new file mode 100644 index 00000000..7fb41452 --- /dev/null +++ b/recipes/games/prboom/recipe.toml @@ -0,0 +1,35 @@ +#TODO: remove --without-mixer when it no longer crashes on x86_64 +[source] +tar = "https://downloads.sourceforge.net/project/prboom/prboom%20stable/2.5.0/prboom-2.5.0.tar.gz" +blake3 = "24c1b9b5aa15fd73e59162055f2c6d8faa82759b76ddfca9828cd2a5c8dc6b2a" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +wget -O autotools/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +""" + +[build] +template = "custom" +dependencies = [ + "sdl1", + "liborbital", + "sdl1-mixer", + "libogg", + "libvorbis" +] +script = """ +export CFLAGS="-static" +export MIXER_LIBS="-lSDL_mixer -lvorbisfile -lvorbis -logg" +COOKBOOK_CONFIGURE_FLAGS+=( + --disable-cpu-opt + --disable-i386-asm + --disable-gl + --disable-sdltest + --without-mixer + --without-net + --with-sdl-prefix="${COOKBOOK_SYSROOT}" + ac_cv_lib_SDL_mixer_Mix_OpenAudio=yes +) +cookbook_configure +""" + From 5b6e0ebe3532ae2e3438ea41f99b983f13eb2c01 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Sun, 2 Feb 2025 16:55:14 +1100 Subject: [PATCH 2259/3180] fix(runtime_deps_of): do not error out if no packages are specified This may be the case if repo.sh did not build any TOML recipes. In that case, we can just exit cleanly. Signed-off-by: Anhad Singh --- src/bin/runtime_deps_of.rs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/bin/runtime_deps_of.rs b/src/bin/runtime_deps_of.rs index 7edc25ba..52f0e6b5 100644 --- a/src/bin/runtime_deps_of.rs +++ b/src/bin/runtime_deps_of.rs @@ -5,15 +5,10 @@ use std::{env::args, process::ExitCode}; const DEP_DEPTH: usize = 16; fn usage() { - eprintln!("Usage: pkg_deps_of package1 [package2 ...]"); + eprintln!("Usage: pkg_deps_of [package1 package2 ...]"); } fn main() -> ExitCode { - if args().len() < 2 { - usage(); - return ExitCode::FAILURE; - } - let names = args().skip(1).collect::>(); let recipes = CookRecipe::new_recursive(&names, DEP_DEPTH, true).expect("recipe not found"); From d13b4b3fbafe59339db590060ff19689cf95cf61 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Sun, 9 Feb 2025 18:48:02 +1100 Subject: [PATCH 2260/3180] feat(cosmic-term): dynamic Signed-off-by: Anhad Singh --- recipes/tools/cosmic-term/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/tools/cosmic-term/recipe.toml b/recipes/tools/cosmic-term/recipe.toml index 2afe4c00..338b04fa 100644 --- a/recipes/tools/cosmic-term/recipe.toml +++ b/recipes/tools/cosmic-term/recipe.toml @@ -5,6 +5,7 @@ branch = "master" [build] template = "custom" script = """ +DYNAMIC_INIT cookbook_cargo --no-default-features mkdir -pv "${COOKBOOK_STAGE}/ui/apps" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/10_cosmic-term" From 59020502507fd4aea035bc6838441e1236b53eb3 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Sun, 9 Feb 2025 18:49:31 +1100 Subject: [PATCH 2261/3180] misc(openssl1): remove old patch Signed-off-by: Anhad Singh --- recipes/libs/openssl1/openssl1.patch | 50 ---------------------------- 1 file changed, 50 deletions(-) delete mode 100644 recipes/libs/openssl1/openssl1.patch diff --git a/recipes/libs/openssl1/openssl1.patch b/recipes/libs/openssl1/openssl1.patch deleted file mode 100644 index 82fe3ac2..00000000 --- a/recipes/libs/openssl1/openssl1.patch +++ /dev/null @@ -1,50 +0,0 @@ -diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf -index 45e2fc7a..2d7f7db3 100644 ---- a/Configurations/10-main.conf -+++ b/Configurations/10-main.conf -@@ -175,28 +175,32 @@ sub vms_info { - }, - - --### Redox -- "redox-aarch64" => { -- inherit_from => [ "BASE_common", asm("aarch64_asm") ], -+### Redox configurations -+ "redox-common" => { -+ inherit_from => [ "BASE_common" ], - cc => "gcc", -- cflags => "-DL_ENDIAN -DOSSL_SSIZE_MAX=LONG_MAX -DNO_SYSLOG -O3 -static -Wall", -+ thread_scheme => "(unknown)", -+ dso_scheme => "dlfcn", -+ shared_target => "linux-shared", -+ shared_cflag => "-fPIC", -+ shared_ldflag => sub { $disabled{pinshared} ? () : "-Wl,-znodelete" }, -+ shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", -+ }, -+ "redox-aarch64" => { -+ inherit_from => [ "redox-common", asm("aarch64_asm") ], -+ cflags => "-DL_ENDIAN -DOSSL_SSIZE_MAX=LONG_MAX -DNO_SYSLOG -O3 -Wall", - bn_ops => "SIXTY_FOUR_BIT_LONG", - perlasm_scheme => "elf", -- thread_scheme => "(unknown)", - }, - "redox-i686" => { -- inherit_from => [ "BASE_unix", asm("x86_elf_asm") ], -- cc => "gcc", -- cflags => "-DL_ENDIAN -DNO_SYSLOG -O3 -static -Wall", -+ inherit_from => [ "redox-common", asm("x86_elf_asm") ], -+ cflags => "-DL_ENDIAN -DNO_SYSLOG -O3 -Wall", - bn_ops => "BN_LLONG", -- thread_scheme => "(unknown)", - }, - "redox-x86_64" => { -- inherit_from => [ "BASE_common", asm("x86_64_asm") ], -- cc => "gcc", -- cflags => "-DL_ENDIAN -DOSSL_SSIZE_MAX=LONG_MAX -DNO_SYSLOG -O3 -static -Wall", -+ inherit_from => [ "redox-common", asm("x86_64_asm") ], -+ cflags => "-DL_ENDIAN -DOSSL_SSIZE_MAX=LONG_MAX -DNO_SYSLOG -O3 -Wall", - bn_ops => "SIXTY_FOUR_BIT_LONG", -- thread_scheme => "(unknown)", - }, - - #### Solaris configurations From c19cb7608503ca051d92047614a81b4d07e18e54 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Sun, 9 Feb 2025 18:50:33 +1100 Subject: [PATCH 2262/3180] feat(libssh2): dynamic Signed-off-by: Anhad Singh --- recipes/libs/libssh2/recipe.toml | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/recipes/libs/libssh2/recipe.toml b/recipes/libs/libssh2/recipe.toml index 4040960a..da1740d4 100644 --- a/recipes/libs/libssh2/recipe.toml +++ b/recipes/libs/libssh2/recipe.toml @@ -1,10 +1,22 @@ [source] tar = "https://www.libssh2.org/download/libssh2-1.10.0.tar.gz" blake3 = "2447216ce82c1d22301456bb02f60dfb6688f1461417b90f900c099a87f1292f" -patches = [] +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" [build] -template = "configure" -dependencies = [ - "openssl1" +template = "custom" +dependencies = ["openssl1"] +script = """ +DYNAMIC_INIT +cookbook_configure +""" + +[package] +shared-deps = [ + "libgcc", + "openssl1" ] + From 9042d5ebd4fc87a1c62a11184ea52ebd8b0abc7a Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Sun, 9 Feb 2025 18:51:46 +1100 Subject: [PATCH 2263/3180] fix(cosmic-term): add missing shared-deps Signed-off-by: Anhad Singh --- recipes/tools/cosmic-term/recipe.toml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/recipes/tools/cosmic-term/recipe.toml b/recipes/tools/cosmic-term/recipe.toml index 338b04fa..73adb456 100644 --- a/recipes/tools/cosmic-term/recipe.toml +++ b/recipes/tools/cosmic-term/recipe.toml @@ -18,3 +18,9 @@ cp -v "${COOKBOOK_SOURCE}/res/${APPID}.metainfo.xml" "${COOKBOOK_STAGE}/usr/shar mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" cp -rv "${COOKBOOK_SOURCE}/res/icons/hicolor/" "${COOKBOOK_STAGE}/usr/share/icons/" """ + +[package] +shared-deps = [ + "libgcc" +] + From e731a3ab528c12c718b10520701d7e6b75c01f18 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Sun, 9 Feb 2025 18:53:21 +1100 Subject: [PATCH 2264/3180] feat(cargo): dynamic Signed-off-by: Anhad Singh --- recipes/dev/cargo/recipe.toml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/recipes/dev/cargo/recipe.toml b/recipes/dev/cargo/recipe.toml index 71834b91..8fa7121b 100644 --- a/recipes/dev/cargo/recipe.toml +++ b/recipes/dev/cargo/recipe.toml @@ -13,6 +13,7 @@ dependencies = [ "zlib", ] script = """ +DYNAMIC_INIT export LIBSSH2_SYS_USE_PKG_CONFIG=1 export LIBZ_SYS_STATIC=1 export DEP_NGHTTP2_ROOT="${COOKBOOK_SYSROOT}" @@ -29,3 +30,14 @@ export DEP_Z_ROOT="${COOKBOOK_SYSROOT}" mkdir -pv "${COOKBOOK_STAGE}/bin" cp -v "target/${TARGET}/release/cargo" "${COOKBOOK_STAGE}/bin/cargo" """ + +[package] +shared-deps = [ + "libgcc", + "curl", + "libssh2", + "nghttp2", + "openssl1", + "zlib", +] + From efada0e656e535609ef0a9a915d05286b8ef4e10 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Mon, 10 Feb 2025 23:19:54 +1100 Subject: [PATCH 2265/3180] feat(llvm18-shared) Signed-off-by: Anhad Singh --- recipes/dev/llvm18-shared/native.cmake | 2 + recipes/dev/llvm18-shared/recipe.toml | 87 ++++++++++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 recipes/dev/llvm18-shared/native.cmake create mode 100644 recipes/dev/llvm18-shared/recipe.toml diff --git a/recipes/dev/llvm18-shared/native.cmake b/recipes/dev/llvm18-shared/native.cmake new file mode 100644 index 00000000..4b0abbfa --- /dev/null +++ b/recipes/dev/llvm18-shared/native.cmake @@ -0,0 +1,2 @@ +set(CMAKE_C_COMPILER cc) +set(CMAKE_CXX_COMPILER c++) diff --git a/recipes/dev/llvm18-shared/recipe.toml b/recipes/dev/llvm18-shared/recipe.toml new file mode 100644 index 00000000..93b57c99 --- /dev/null +++ b/recipes/dev/llvm18-shared/recipe.toml @@ -0,0 +1,87 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/llvm-project.git" +upstream = "https://github.com/rust-lang/llvm-project.git" +branch = "redox-2024-05-11" + +[build] +template = "custom" +dependencies = [ + "zlib" +] +script = """ +DYNAMIC_INIT + +cat > CMakeToolchain-x86_64.cmake < Date: Mon, 10 Feb 2025 23:20:17 +1100 Subject: [PATCH 2266/3180] fix(zlib): set soname Signed-off-by: Anhad Singh --- recipes/libs/zlib/recipe.toml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/recipes/libs/zlib/recipe.toml b/recipes/libs/zlib/recipe.toml index 0ff21eb5..30380178 100644 --- a/recipes/libs/zlib/recipe.toml +++ b/recipes/libs/zlib/recipe.toml @@ -1,14 +1,16 @@ [source] tar = "https://www.zlib.net/fossils/zlib-1.3.tar.gz" blake3 = "ec1abc6f672a7a6ee6f49ba544cc9529f73121b478310473be44fee22a140ebf" + [build] template = "custom" script = """ - DYNAMIC_INIT - # See https://stackoverflow.com/questions/21396988/zlib-build-not-configuring-properly-with-cross-compiler-ignores-ar. - CHOST="${TARGET}" "${COOKBOOK_CONFIGURE}" --prefix="" - "${COOKBOOK_MAKE}" -j "$(nproc)" - "${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" +DYNAMIC_INIT +# See https://stackoverflow.com/questions/21396988/zlib-build-not-configuring-properly-with-cross-compiler-ignores-ar. +CHOST="${TARGET}" "${COOKBOOK_CONFIGURE}" --prefix="" +"${COOKBOOK_MAKE}" -j "$(nproc)" +"${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" +patchelf --set-soname 'libz.so.1.3' "${COOKBOOK_STAGE}/lib/libz.so.1.3" """ [package] From 4f70981463c58283ea8ffed1c478c324023a7cbc Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Mon, 10 Feb 2025 23:22:28 +1100 Subject: [PATCH 2267/3180] feat(rustc): dynamic Signed-off-by: Anhad Singh --- recipes/dev/rust/config.toml | 4 ++-- recipes/dev/rust/recipe.sh | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/recipes/dev/rust/config.toml b/recipes/dev/rust/config.toml index 180cfd09..0a05f38c 100644 --- a/recipes/dev/rust/config.toml +++ b/recipes/dev/rust/config.toml @@ -1,6 +1,6 @@ [llvm] download-ci-llvm = false -static-libstdcpp = true +static-libstdcpp = false [build] host = ["x86_64-unknown-redox"] @@ -26,4 +26,4 @@ ar = "x86_64-unknown-redox-ar" linker = "x86_64-unknown-redox-gcc" # Nasty path, please fix llvm-config = "../../../../bin/x86_64-unknown-redox-llvm-config" -crt-static = true +crt-static = false diff --git a/recipes/dev/rust/recipe.sh b/recipes/dev/rust/recipe.sh index fb417a31..33b80e48 100644 --- a/recipes/dev/rust/recipe.sh +++ b/recipes/dev/rust/recipe.sh @@ -1,6 +1,6 @@ GIT=https://gitlab.redox-os.org/redox-os/rust.git BRANCH=redox-2024-05-11 -BUILD_DEPENDS=(llvm18) +BUILD_DEPENDS=(llvm18-shared zlib libgcc) DEPENDS="gcc13 cargo" PREPARE_COPY=0 @@ -11,6 +11,7 @@ function recipe_version { function recipe_build { unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP + export MAGIC_EXTRA_RUSTFLAGS="-C link-args=-lz" python3 "${COOKBOOK_SOURCE}/x.py" install --config "${COOKBOOK_RECIPE}/config.toml" --jobs $(nproc) --incremental skip=1 } From 5c45667dcef39b8793d1f55f78b77e5d258ee7e4 Mon Sep 17 00:00:00 2001 From: Anhad Singh Date: Tue, 11 Feb 2025 20:20:03 +1100 Subject: [PATCH 2268/3180] feat(netsurf): dynamic Signed-off-by: Anhad Singh --- recipes/web/netsurf/recipe.sh | 32 ------------------- recipes/web/netsurf/recipe.toml | 56 +++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 32 deletions(-) delete mode 100644 recipes/web/netsurf/recipe.sh create mode 100644 recipes/web/netsurf/recipe.toml diff --git a/recipes/web/netsurf/recipe.sh b/recipes/web/netsurf/recipe.sh deleted file mode 100644 index bc09116f..00000000 --- a/recipes/web/netsurf/recipe.sh +++ /dev/null @@ -1,32 +0,0 @@ -VERSION=3.10 -TAR=https://download.netsurf-browser.org/netsurf/releases/source-full/netsurf-all-$VERSION.tar.gz -BUILD_DEPENDS=(curl expat libjpeg libpng nghttp2 openssl1 sdl1 zlib freetype2 liborbital libiconv) -DEPENDS="ca-certificates orbital" - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - export TARGET="framebuffer" - export CFLAGS="-I${COOKBOOK_SYSROOT}/include -I${PWD}/inst-${TARGET}/include" - export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib -L${PWD}/inst-${TARGET}/lib -Wl,--allow-multiple-definition" - # nghttp2 is not linked for some reason - export LDFLAGS="${LDFLAGS} -lcurl -lnghttp2" - "$REDOX_MAKE" PREFIX=/usr V=1 -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath "$1")" - "$REDOX_MAKE" DESTDIR="$dest" PREFIX=/usr install - mkdir -pv "$dest/ui/apps" - cp -v "${COOKBOOK_RECIPE}/manifest" "$dest/ui/apps/00_netsurf" - skip=1 -} diff --git a/recipes/web/netsurf/recipe.toml b/recipes/web/netsurf/recipe.toml new file mode 100644 index 00000000..323a419f --- /dev/null +++ b/recipes/web/netsurf/recipe.toml @@ -0,0 +1,56 @@ +[source] +tar = "https://download.netsurf-browser.org/netsurf/releases/source-full/netsurf-all-3.10.tar.gz" +blake3 = "d0f3b4dabf536a39059b156d2ec4633c6f7b71208466e09a3c1ca2a319a44b61" +patches = [ + "./01_redox.patch" +] + +[build] +template = "custom" +dependencies = [ + "curl", + "expat", + "libjpeg", + "libpng", + "nghttp2", + "openssl1", + "sdl1", + "zlib", + "freetype2", + "liborbital", + "libiconv" +] +script = """ +DYNAMIC_INIT + +# Netsurf does not currently support out-of-tree builds :( +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ + +export TARGET="framebuffer" +export CFLAGS="-I${COOKBOOK_SYSROOT}/include -I${PWD}/inst-${TARGET}/include" +export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib -L${PWD}/inst-${TARGET}/lib -Wl,--allow-multiple-definition -Wl,-rpath-link,${COOKBOOK_SYSROOT}/lib" +# nghttp2 is not linked for some reason +export LDFLAGS="${LDFLAGS} -lcurl -lnghttp2" + +"$COOKBOOK_MAKE" PREFIX=/usr V=1 -j"$($NPROC)" +"$COOKBOOK_MAKE" DESTDIR="$COOKBOOK_STAGE" PREFIX=/usr install -j"$($NPROC)" +mkdir -pv "$COOKBOOK_STAGE/ui/apps" +cp -v "${COOKBOOK_RECIPE}/manifest" "$COOKBOOK_STAGE/ui/apps/00_netsurf" +""" + +[package] +shared-deps = [ + # XXX: currently only the following are dynamically linked + "libgcc", + "relibc", + "curl", + "nghttp2", + "libiconv", + "zlib", + "openssl1", + "liborbital", +] +dependencies = [ + "ca-certificates", + "orbital", +] From a8859261ee7a3c7e18d831034c843e0f40ba4ed8 Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Sat, 15 Feb 2025 01:01:03 -0500 Subject: [PATCH 2269/3180] Bump and dynamically link libpng --- recipes/libs/libpng/recipe.toml | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/recipes/libs/libpng/recipe.toml b/recipes/libs/libpng/recipe.toml index 5b52c5d7..a7390aea 100644 --- a/recipes/libs/libpng/recipe.toml +++ b/recipes/libs/libpng/recipe.toml @@ -1,14 +1,33 @@ [source] -tar = "https://github.com/glennrp/libpng/archive/v1.6.39.tar.gz" -blake3 = "02513cc5d15ac79c4c402f2ae623425f4f80bdbbf15ebc95430fb8ccfc987996" +tar = "https://github.com/pnggroup/libpng/archive/refs/tags/v1.6.46.tar.gz" +blake3 = "36f4bbb48c70975116b00ab0cff577931b96f703b2774ac3b33131d001419435" script = """ +DYNAMIC_INIT chmod +w config.sub wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +autotools_recursive_regenerate """ - [build] -template = "configure" -dependencies = [ - "zlib" -] +template = "custom" +dependencies = ["zlib"] +script = """ +DYNAMIC_INIT + +if [[ -n "${COOKBOOK_PREFER_STATIC}" ]]; then + COOKBOOK_CONFIGURE_FLAGS+=( + --enable-static + --disable-shared + ) +else + COOKBOOK_CONFIGURE_FLAGS+=( + --enable-shared + --enable-static + ) +fi + +cookbook_configure +""" + +[package] +shared_deps = ["libgcc", "zlib"] From 51e3b83d394998eba66ee2cf1de670a73750e031 Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Sun, 16 Feb 2025 01:29:40 -0500 Subject: [PATCH 2270/3180] Dynamically linked DevilutionX --- recipes/games/devilutionx/recipe.toml | 43 ++++++++++++++++++--------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/recipes/games/devilutionx/recipe.toml b/recipes/games/devilutionx/recipe.toml index 4d505f9f..1598a1c8 100644 --- a/recipes/games/devilutionx/recipe.toml +++ b/recipes/games/devilutionx/recipe.toml @@ -1,19 +1,35 @@ [source] -tar = "https://github.com/diasurgical/devilutionX/archive/refs/tags/1.5.1.tar.gz" -blake3 = "8425152bf50a692573d17ba85a8445734a564a372eba2190223bf0aa04f31d86" +tar = "https://github.com/diasurgical/devilutionX/archive/refs/tags/1.5.4.tar.gz" +blake3 = "d4a61ff3a7c69d86a29158918aad48ab9c4866c6a22a3e8da5feadbb7d23b3ca" [build] template = "custom" -dependencies = [ - "libiconv", - "liborbital", - "sdl1", -] +dependencies = ["libiconv", "liborbital", "sdl1"] script = """ -export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include" -export CXXFLAGS="${CXXFLAGS} -I${COOKBOOK_SYSROOT}/include" +DYNAMIC_INIT + +# export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include" +# export CXXFLAGS="${CXXFLAGS} -I${COOKBOOK_SYSROOT}/include" +# export LDFLAGS="${LDFLAGS} -L${COOKBOOK_SYSROOT}/lib" + COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( + +if [[ -n "${COOKBOOK_PREFER_STATIC}" ]]; then + COOKBOOK_CONFIGURE_FLAGS=( + -DDEVILUTIONX_STATIC_BZIP2=ON + -DDEVILUTIONX_STATIC_ZLIB=ON + -DDEVILUTIONX_SYSTEM_BZIP2=OFF + -DDEVILUTIONX_SYSTEM_ZLIB=OFF + ) +else + COOKBOOK_CONFIGURE_FLAGS=( + -DDEVILUTIONX_SYSTEM_BZIP2=ON + -DDEVILUTIONX_SYSTEM_ZLIB=ON + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + ) +fi + +COOKBOOK_CONFIGURE_FLAGS+=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=ON -DCMAKE_CXX_COMPILER="${TARGET}-g++" @@ -21,10 +37,6 @@ COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_VERBOSE_MAKEFILE=ON -DBUILD_TESTING=OFF - -DDEVILUTIONX_STATIC_BZIP2=ON - -DDEVILUTIONX_STATIC_ZLIB=ON - -DDEVILUTIONX_SYSTEM_BZIP2=OFF - -DDEVILUTIONX_SYSTEM_ZLIB=OFF -DNONET=ON -DUSE_SDL1=ON -DSDL_LIBRARY="-lSDL -lorbital" @@ -34,3 +46,6 @@ cookbook_configure mkdir -v "${COOKBOOK_STAGE}/bin" cp -v devilutionx "${COOKBOOK_STAGE}/bin" """ + +[package] +shared-deps = ["bzip2", "libgcc", "libiconv", "liborbital", "sdl1", "zlib"] From 8eba85b35ad5f94bf12304e9163716af79c28171 Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Mon, 17 Feb 2025 01:38:13 -0500 Subject: [PATCH 2271/3180] Build shared bzip2 library if requested --- recipes/tools/bzip2/recipe.toml | 36 ++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/recipes/tools/bzip2/recipe.toml b/recipes/tools/bzip2/recipe.toml index e2ad7a1a..94e92a27 100644 --- a/recipes/tools/bzip2/recipe.toml +++ b/recipes/tools/bzip2/recipe.toml @@ -5,19 +5,35 @@ blake3 = "97af3f520629c65fe41292f77e6ca798fe594d7987bfb2aebe7c6fcdc7ab5ed2" [build] template = "custom" script = """ +DYNAMIC_INIT + +# This installs the static library regardless of config options +# The static lib is preferred according to the README because it's faster rsync -av --delete "${COOKBOOK_SOURCE}/" ./ "${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" \ AR="${TARGET}-ar" \ CC="${TARGET}-gcc" \ - LDFLAGS="-static" \ - PREFIX=/ \ + PREFIX="${COOKBOOK_STAGE}" \ RANLIB="${TARGET}-ranlib" \ - libbz2.a \ - bzip2 -mkdir -pv "${COOKBOOK_STAGE}/bin" -cp -v bzip2 "${COOKBOOK_STAGE}/bin" -mkdir -pv "${COOKBOOK_STAGE}/include" -cp -v bzlib.h "${COOKBOOK_STAGE}/include" -mkdir -pv "${COOKBOOK_STAGE}/lib" -cp -v libbz2.a "${COOKBOOK_STAGE}/lib" + install + +# However, distros distribute libbz2 as well so we'll support it too +if ! [[ -n "${COOKBOOK_PREFER_STATIC}" ]]; then + # Linking the lib fails if we don't rebuild the objects from earlier + "${COOKBOOK_MAKE}" clean + + # This DOES NOT build/clobber the binaries already built above + "${COOKBOOK_MAKE}" -f Makefile-libbz2_so \ + -j"${COOKBOOK_MAKE_JOBS}" \ + AR="${TARGET}-ar" \ + CC="${TARGET}-gcc" \ + PREFIX="${COOKBOOK_STAGE}" \ + RANLIB="${TARGET}-ranlib" + + cp -v libbz2.so.1.0.8 "${COOKBOOK_STAGE}/lib" + cp -v libbz2.so.1.0 "${COOKBOOK_STAGE}/lib" +fi """ + +[package] +shared-deps = ["libgcc"] From bde00ef0c7819ff363d42ce9892c13517282d04e Mon Sep 17 00:00:00 2001 From: LLeny <125205-LLeny@users.noreply.gitlab.redox-os.org> Date: Tue, 18 Feb 2025 21:14:57 +0800 Subject: [PATCH 2272/3180] Adds patches and script to SourceRecipe::Git --- src/bin/cook.rs | 45 +++++++++++++++++++++++++++++++++++++++++++++ src/recipe.rs | 7 +++++++ 2 files changed, 52 insertions(+) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 9bdbbf5e..174d56e3 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -249,6 +249,8 @@ fn fetch(recipe_dir: &Path, source: &Option) -> Result { //TODO: use libgit? if !source_dir.is_dir() { @@ -326,6 +328,14 @@ fi"#, run_command(command)?; } + if !patches.is_empty() || script.is_some() { + // Hard reset + let mut command = Command::new("git"); + command.arg("-C").arg(&source_dir); + command.arg("reset").arg("--hard"); + run_command(command)?; + } + // Sync submodules URL let mut command = Command::new("git"); command.arg("-C").arg(&source_dir); @@ -341,6 +351,41 @@ fi"#, .arg("--init") .arg("--recursive"); run_command(command)?; + + // Apply patches + for patch_name in patches { + let patch_file = recipe_dir.join(patch_name); + if !patch_file.is_file() { + return Err(format!( + "failed to find patch file '{}'", + patch_file.display() + )); + } + + let patch = fs::read_to_string(&patch_file).map_err(|err| { + format!( + "failed to read patch file '{}': {}\n{:#?}", + patch_file.display(), + err, + err + ) + })?; + + let mut command = Command::new("patch"); + command.arg("--forward"); + command.arg("--batch"); + command.arg("--directory").arg(&source_dir); + command.arg("--strip=1"); + run_command_stdin(command, patch.as_bytes())?; + } + + // Run source script + if let Some(script) = script { + let mut command = Command::new("bash"); + command.arg("-ex"); + command.current_dir(&source_dir); + run_command_stdin(command, format!("{SHARED_PRESCRIPT}\n{script}").as_bytes())?; + } } Some(SourceRecipe::Tar { tar, diff --git a/src/recipe.rs b/src/recipe.rs index eb73239c..d897355c 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -36,6 +36,11 @@ pub enum SourceRecipe { /// The optional revision of the git repository to use for builds. Please specify for /// reproducible builds rev: Option, + /// A list of patch files to apply to the source + #[serde(default)] + patches: Vec, + /// Optional script to run to prepare the source + script: Option, }, /// A tar file source Tar { @@ -236,6 +241,8 @@ mod tests { upstream: None, branch: Some("master".to_string()), rev: Some("06344744d3d55a5ac9a62a6059cb363d40699bbc".to_string()), + patches: Vec::new(), + script: None, }), build: BuildRecipe { kind: BuildKind::Cargo { From af63354d2ce429460821e512ff095a46cbdec24b Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Tue, 18 Feb 2025 21:52:50 +0100 Subject: [PATCH 2273/3180] Merge most initfs contents into a single base-initfs recipe --- recipes/core/base-initfs/recipe.toml | 21 +++++++++++++++++++++ recipes/core/base/recipe.toml | 8 ++++++++ recipes/core/init/recipe.toml | 5 ----- recipes/core/initfs/recipe.toml | 6 +----- recipes/core/logd/recipe.toml | 5 ----- recipes/core/ramfs/recipe.toml | 5 ----- recipes/core/randd/recipe.toml | 5 ----- recipes/core/zerod/recipe.toml | 13 ------------- 8 files changed, 30 insertions(+), 38 deletions(-) create mode 100644 recipes/core/base-initfs/recipe.toml create mode 100644 recipes/core/base/recipe.toml delete mode 100644 recipes/core/init/recipe.toml delete mode 100644 recipes/core/logd/recipe.toml delete mode 100644 recipes/core/ramfs/recipe.toml delete mode 100644 recipes/core/randd/recipe.toml delete mode 100644 recipes/core/zerod/recipe.toml diff --git a/recipes/core/base-initfs/recipe.toml b/recipes/core/base-initfs/recipe.toml new file mode 100644 index 00000000..efbd082e --- /dev/null +++ b/recipes/core/base-initfs/recipe.toml @@ -0,0 +1,21 @@ +[source] +same_as = "../base" + +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}/usr/bin" +for package in init logd ramfs randd zerod; do + "${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/${package}/Cargo.toml" \ + ${build_flags} + cp -v \ + "target/${TARGET}/${build_type}/${package}" \ + "${COOKBOOK_STAGE}/usr/bin/${package}" +done + +# TODO: symlinks aren't supported by redox-initfs +#ln -sv zerod "${COOKBOOK_STAGE}/usr/bin/nulld" + +cp "${COOKBOOK_STAGE}/usr/bin/zerod" "${COOKBOOK_STAGE}/usr/bin/nulld" +""" diff --git a/recipes/core/base/recipe.toml b/recipes/core/base/recipe.toml new file mode 100644 index 00000000..dd4775c6 --- /dev/null +++ b/recipes/core/base/recipe.toml @@ -0,0 +1,8 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/base.git" + +[build] +template = "custom" +script = """ +# FIXME(bjorn3) fill in +""" diff --git a/recipes/core/init/recipe.toml b/recipes/core/init/recipe.toml deleted file mode 100644 index 2c8fdea1..00000000 --- a/recipes/core/init/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -[source] -git = "https://gitlab.redox-os.org/redox-os/init.git" - -[build] -template = "cargo" diff --git a/recipes/core/initfs/recipe.toml b/recipes/core/initfs/recipe.toml index b4e18623..489a5433 100644 --- a/recipes/core/initfs/recipe.toml +++ b/recipes/core/initfs/recipe.toml @@ -4,14 +4,10 @@ git = "https://gitlab.redox-os.org/redox-os/redox-initfs.git" [build] template = "custom" dependencies = [ + "base-initfs", "bootstrap", "drivers-initfs", - "init", - "logd", - "ramfs", - "randd", "redoxfs", - "zerod", ] script = """ INITFS_RM_BINS='redoxfs-ar redoxfs-mkfs' diff --git a/recipes/core/logd/recipe.toml b/recipes/core/logd/recipe.toml deleted file mode 100644 index 6e906f11..00000000 --- a/recipes/core/logd/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -[source] -git = "https://gitlab.redox-os.org/redox-os/logd.git" - -[build] -template = "cargo" diff --git a/recipes/core/ramfs/recipe.toml b/recipes/core/ramfs/recipe.toml deleted file mode 100644 index dd8e751e..00000000 --- a/recipes/core/ramfs/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -[source] -git = "https://gitlab.redox-os.org/redox-os/ramfs.git" - -[build] -template = "cargo" diff --git a/recipes/core/randd/recipe.toml b/recipes/core/randd/recipe.toml deleted file mode 100644 index 911a1d79..00000000 --- a/recipes/core/randd/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -[source] -git = "https://gitlab.redox-os.org/redox-os/randd.git" - -[build] -template = "cargo" diff --git a/recipes/core/zerod/recipe.toml b/recipes/core/zerod/recipe.toml deleted file mode 100644 index 0e8a3384..00000000 --- a/recipes/core/zerod/recipe.toml +++ /dev/null @@ -1,13 +0,0 @@ -[source] -git = "https://gitlab.redox-os.org/redox-os/zerod.git" - -[build] -template = "custom" -script = """ -cookbook_cargo --bin zerod - -# TODO: symlinks aren't supported by redox-initfs -#ln -sv zerod "${COOKBOOK_STAGE}/usr/bin/nulld" - -cp "${COOKBOOK_STAGE}/usr/bin/zerod" "${COOKBOOK_STAGE}/usr/bin/nulld" -""" From 9c54dacdf3dd063b9a497f223757821996ce9619 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 18 Feb 2025 15:47:02 -0700 Subject: [PATCH 2274/3180] Set default configure prefix to /usr --- src/bin/cook.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 174d56e3..482c5605 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -196,7 +196,7 @@ function DYNAMIC_INIT { COOKBOOK_CONFIGURE_FLAGS=( --host="${GNU_TARGET}" - --prefix="" + --prefix="/usr" --enable-shared --disable-static ) From f84c756c0ecf7d1224315c8560a46147529f5ed8 Mon Sep 17 00:00:00 2001 From: LLeny <125205-LLeny@users.noreply.gitlab.redox-os.org> Date: Wed, 19 Feb 2025 18:47:56 +0800 Subject: [PATCH 2275/3180] LuaJIT dynamic recipe --- recipes/dev/luajit/recipe.toml | 16 ++++++++++++ .../{wip/dev/lang => dev}/luajit/redox.patch | 0 recipes/wip/dev/lang/luajit/recipe.toml | 25 ------------------- 3 files changed, 16 insertions(+), 25 deletions(-) create mode 100644 recipes/dev/luajit/recipe.toml rename recipes/{wip/dev/lang => dev}/luajit/redox.patch (100%) delete mode 100644 recipes/wip/dev/lang/luajit/recipe.toml diff --git a/recipes/dev/luajit/recipe.toml b/recipes/dev/luajit/recipe.toml new file mode 100644 index 00000000..b8d7bf51 --- /dev/null +++ b/recipes/dev/luajit/recipe.toml @@ -0,0 +1,16 @@ +[source] +git = "https://luajit.org/git/luajit.git" +rev = "a4f56a459a588ae768801074b46ba0adcfb49eb1" +patches = ["redox.patch"] +[build] +template = "custom" +script = """ +DYNAMIC_INIT + +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ + +${COOKBOOK_MAKE} -j ${COOKBOOK_MAKE_JOBS} install \ + PREFIX="${COOKBOOK_STAGE}" \ + TARGET_SYS='Redox' \ + CROSS="${TARGET}-" +""" diff --git a/recipes/wip/dev/lang/luajit/redox.patch b/recipes/dev/luajit/redox.patch similarity index 100% rename from recipes/wip/dev/lang/luajit/redox.patch rename to recipes/dev/luajit/redox.patch diff --git a/recipes/wip/dev/lang/luajit/recipe.toml b/recipes/wip/dev/lang/luajit/recipe.toml deleted file mode 100644 index c2359afa..00000000 --- a/recipes/wip/dev/lang/luajit/recipe.toml +++ /dev/null @@ -1,25 +0,0 @@ -#TODO remove -DLUAJIT_SECURITY_MCODE=0 -[source] -# LuaJIT is only available as a rolling release -git = "https://luajit.org/git/luajit.git" -rev = "2090842410e0ba6f81fad310a77bf5432488249a" - -[build] -template = "custom" -script = """ -rsync -av --delete "${COOKBOOK_SOURCE}/" ./ - -# Cookbook doesn't apply patches to git repositiories (so we do it manually) -# The patch is applied so that LUAJIT_OS is set to LUAJIT_OS_POSIX without -# redefinition warnings -git apply "${COOKBOOK_RECIPE}/redox.patch" - -${COOKBOOK_MAKE} -j ${COOKBOOK_MAKE_JOBS} install \ - PREFIX="${COOKBOOK_STAGE}" \ - BUILDMODE='static' \ - TARGET_SYS='Redox' \ - XCFLAGS='-DLUAJIT_SECURITY_MCODE=0' \ - CROSS="${TARGET}-" - -cd "${COOKBOOK_STAGE}"/bin && ln -s luajit-2.1.* luajit -""" From 2415c012d27fb6579a944dabd3859f1c4089b3a6 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Fri, 21 Feb 2025 20:17:22 +0100 Subject: [PATCH 2276/3180] Merge ipcd and ptyd into the base repo --- recipes/core/base/recipe.toml | 14 +++++++++++--- recipes/core/ipcd/recipe.toml | 5 ----- recipes/core/ptyd/recipe.toml | 5 ----- 3 files changed, 11 insertions(+), 13 deletions(-) delete mode 100644 recipes/core/ipcd/recipe.toml delete mode 100644 recipes/core/ptyd/recipe.toml diff --git a/recipes/core/base/recipe.toml b/recipes/core/base/recipe.toml index dd4775c6..1c3a1eda 100644 --- a/recipes/core/base/recipe.toml +++ b/recipes/core/base/recipe.toml @@ -1,8 +1,16 @@ -[source] -git = "https://gitlab.redox-os.org/redox-os/base.git" +#[source] +#git = "https://gitlab.redox-os.org/redox-os/base.git" [build] template = "custom" script = """ -# FIXME(bjorn3) fill in +mkdir -pv "${COOKBOOK_STAGE}/usr/bin" +for package in ipcd ptyd; do + "${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/${package}/Cargo.toml" \ + ${build_flags} + cp -v \ + "target/${TARGET}/${build_type}/${package}" \ + "${COOKBOOK_STAGE}/usr/bin/${package}" +done """ diff --git a/recipes/core/ipcd/recipe.toml b/recipes/core/ipcd/recipe.toml deleted file mode 100644 index 308574d2..00000000 --- a/recipes/core/ipcd/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -[source] -git = "https://gitlab.redox-os.org/redox-os/ipcd.git" - -[build] -template = "cargo" diff --git a/recipes/core/ptyd/recipe.toml b/recipes/core/ptyd/recipe.toml deleted file mode 100644 index 6984bbd9..00000000 --- a/recipes/core/ptyd/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -[source] -git = "https://gitlab.redox-os.org/redox-os/ptyd.git" - -[build] -template = "cargo" From 76ddc51e4efb006d0f0a7b3d08bc723222608741 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 22 Feb 2025 08:00:59 -0700 Subject: [PATCH 2277/3180] netsurf: Add libpng to shared-deps --- recipes/web/netsurf/recipe.toml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/recipes/web/netsurf/recipe.toml b/recipes/web/netsurf/recipe.toml index 323a419f..3633db56 100644 --- a/recipes/web/netsurf/recipe.toml +++ b/recipes/web/netsurf/recipe.toml @@ -41,14 +41,15 @@ cp -v "${COOKBOOK_RECIPE}/manifest" "$COOKBOOK_STAGE/ui/apps/00_netsurf" [package] shared-deps = [ # XXX: currently only the following are dynamically linked - "libgcc", - "relibc", "curl", - "nghttp2", + "libgcc", "libiconv", - "zlib", - "openssl1", "liborbital", + "libpng", + "nghttp2", + "openssl1", + "relibc", + "zlib", ] dependencies = [ "ca-certificates", From 0a475b3d04146e134c7b61a712dfbf60048793f0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 22 Feb 2025 08:25:31 -0700 Subject: [PATCH 2278/3180] Apply usrmerge to sysroot --- src/bin/cook.rs | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 482c5605..220ae371 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -56,6 +56,11 @@ fn copy_dir_all(src: impl AsRef, dst: impl AsRef) -> io::Result<()> Ok(()) } +fn symlink(original: impl AsRef, link: impl AsRef) -> Result<(), String> { + std::os::unix::fs::symlink(&original, &link) + .map_err(|err| format!("failed to symlink '{}' to '{}': {}\n{:?}", original.as_ref().display(), link.as_ref().display(), err, err)) +} + fn modified(path: &Path) -> Result { let metadata = fs::metadata(path).map_err(|err| { format!( @@ -550,10 +555,18 @@ fn build( let sysroot_dir_tmp = target_dir.join("sysroot.tmp"); create_dir_clean(&sysroot_dir_tmp)?; - // Make sure sysroot/include exists - create_dir(&sysroot_dir_tmp.join("include"))?; - // Make sure sysroot/lib exists - create_dir(&sysroot_dir_tmp.join("lib"))?; + // Make sure sysroot/usr exists + create_dir(&sysroot_dir_tmp.join("usr"))?; + for folder in &["bin", "include", "lib", "share"] { + // Make sure sysroot/usr/$folder exists + create_dir(&sysroot_dir_tmp.join("usr").join(folder))?; + + // Link sysroot/$folder sysroot/usr/$folder + symlink( + Path::new("usr").join(folder), + &sysroot_dir_tmp.join(folder), + )?; + } for archive_path in dep_pkgars { let public_path = "build/id_ed25519.pub.toml"; From f464a6e4b4014089b69a666b8706340ad6c682f5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 22 Feb 2025 08:35:44 -0700 Subject: [PATCH 2279/3180] initfs: adapt to usrmerge --- recipes/core/initfs/recipe.toml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/recipes/core/initfs/recipe.toml b/recipes/core/initfs/recipe.toml index 489a5433..b24de95c 100644 --- a/recipes/core/initfs/recipe.toml +++ b/recipes/core/initfs/recipe.toml @@ -24,13 +24,13 @@ elif [ -e ${COOKBOOK_RECIPE}/${TARGET}/init.rc ]; then cp "${COOKBOOK_RECIPE}/${TARGET}/init.rc" "${COOKBOOK_BUILD}/initfs/etc/init.rc" fi -# Move /usr/bin files to /bin -mkdir -p "${COOKBOOK_BUILD}/initfs/bin" -if [ -d "${COOKBOOK_BUILD}/initfs/usr/bin" ] -then - mv "${COOKBOOK_BUILD}/initfs/usr/bin/"* "${COOKBOOK_BUILD}/initfs/bin" - rmdir "${COOKBOOK_BUILD}/initfs/usr/bin" -fi +# Move /usr folders to / and remove links +for folder in bin lib include share +do + rm "${COOKBOOK_BUILD}/initfs/${folder}" + mv "${COOKBOOK_BUILD}/initfs/usr/${folder}" "${COOKBOOK_BUILD}/initfs/${folder}" +done +rmdir "${COOKBOOK_BUILD}/initfs/usr" for bin in ${INITFS_RM_BINS}; do rm -f "${COOKBOOK_BUILD}/initfs/bin/$bin" From a48b1f314edfff9687f4c2e423a5fa4bd6356d63 Mon Sep 17 00:00:00 2001 From: Ron Williams Date: Mon, 24 Feb 2025 06:51:14 +0000 Subject: [PATCH 2280/3180] Fix base recipe.toml ([source] was commented out) --- recipes/core/base/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/core/base/recipe.toml b/recipes/core/base/recipe.toml index 1c3a1eda..0044430e 100644 --- a/recipes/core/base/recipe.toml +++ b/recipes/core/base/recipe.toml @@ -1,5 +1,5 @@ -#[source] -#git = "https://gitlab.redox-os.org/redox-os/base.git" +[source] +git = "https://gitlab.redox-os.org/redox-os/base.git" [build] template = "custom" From 1334299b797d28a5bcd4931814686d193164fbe5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 28 Feb 2025 09:47:42 -0700 Subject: [PATCH 2281/3180] Change dynamic template prefix to /usr --- src/bin/cook.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 220ae371..44e697da 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -699,7 +699,7 @@ function cookbook_cargo_packages { COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/configure" COOKBOOK_CONFIGURE_FLAGS=( --host="${GNU_TARGET}" - --prefix="" + --prefix="/usr" --disable-shared --enable-static ) From 997381ef8a623ebc71c4e445b43fc8250f7b23cb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 28 Feb 2025 10:45:47 -0700 Subject: [PATCH 2282/3180] quakespasm: fix compilation now that patches are supported for git --- recipes/games/quakespasm/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/games/quakespasm/recipe.toml b/recipes/games/quakespasm/recipe.toml index 1d5d069e..519399e1 100644 --- a/recipes/games/quakespasm/recipe.toml +++ b/recipes/games/quakespasm/recipe.toml @@ -6,7 +6,6 @@ [source] git = "https://github.com/sezero/quakespasm" rev = "cc32abe09ed417ce3be10af300d2dc2f686349ba" -patches = ["redox.patch"] [build] template = "custom" From 71ed534cc9d99d48e6b059b77999bacbe5296cd1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 28 Feb 2025 14:55:05 -0700 Subject: [PATCH 2283/3180] bash: fix recipe --- recipes/shells/bash/recipe.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/shells/bash/recipe.toml b/recipes/shells/bash/recipe.toml index 92359164..d06245be 100644 --- a/recipes/shells/bash/recipe.toml +++ b/recipes/shells/bash/recipe.toml @@ -17,8 +17,9 @@ COOKBOOK_CONFIGURE_FLAGS+=( bash_cv_func_sigsetjmp=no bash_cv_getenv_redef=no --disable-multibyte # TODO: add more multibyte functions and remove this + --enable-static-link # This ensures loadables are not built, which will fail ) COOKBOOK_MAKE_JOBS=1 # workaround for parallel make bugs cookbook_configure -ln -s "bash" "${COOKBOOK_STAGE}/bin/sh" +ln -s "bash" "${COOKBOOK_STAGE}/usr/bin/sh" """ From 86702c993a7a6691de331fbfd1495eaaee9d2b75 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 28 Feb 2025 15:27:18 -0700 Subject: [PATCH 2284/3180] git: convert to toml --- recipes/dev/git/recipe.sh | 53 ------------------------------------- recipes/dev/git/recipe.toml | 48 +++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 53 deletions(-) delete mode 100644 recipes/dev/git/recipe.sh create mode 100644 recipes/dev/git/recipe.toml diff --git a/recipes/dev/git/recipe.sh b/recipes/dev/git/recipe.sh deleted file mode 100644 index 90c672ef..00000000 --- a/recipes/dev/git/recipe.sh +++ /dev/null @@ -1,53 +0,0 @@ -VERSION=2.13.1 -TAR=https://www.kernel.org/pub/software/scm/git/git-$VERSION.tar.xz -BUILD_DEPENDS=(zlib curl openssl1 expat nghttp2) -DEPENDS="ca-certificates nghttp2" - -MAKEFLAGS=( - NEEDS_SSL_WITH_CURL=1 - NEEDS_CRYPTO_WITH_SSL=1 - NO_IPV6=1 - NO_PREAD=1 - NO_MMAP=1 - NO_SETITIMER=1 - NO_UNIX_SOCKETS=1 - NEEDS_LIBICONV= - NEEDS_LIBRT= - BLK_SHA1=1 - V=1 -) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export LDFLAGS="-L$sysroot/lib" - export CPPFLAGS="-I$sysroot/include" - export CURL_CONFIG="$sysroot/bin/curl-config" - ./configure \ - --build="${BUILD}" \ - --host="${HOST}" \ - --prefix=/ \ - ac_cv_fread_reads_directories=yes \ - ac_cv_snprintf_returns_bogus=yes \ - ac_cv_lib_curl_curl_global_init=yes - "$REDOX_MAKE" "${MAKEFLAGS[@]}" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" "${MAKEFLAGS[@]}" install - ${STRIP} $1/bin/* || true - ${STRIP} $1/libexec/git-core/* || true - rm -rf $1/share/man - skip=1 -} diff --git a/recipes/dev/git/recipe.toml b/recipes/dev/git/recipe.toml new file mode 100644 index 00000000..f9f5f64c --- /dev/null +++ b/recipes/dev/git/recipe.toml @@ -0,0 +1,48 @@ +[source] +tar = "https://www.kernel.org/pub/software/scm/git/git-2.13.1.tar.xz" +blake3 = "bc78271bffd60c5b8b938d8c08fd74dc2de8d21fbaf8f8e0e3155436d9263f17" +patches = ["git.patch"] + +[build] +dependencies=[ + "curl", + "expat", + "nghttp2", + "openssl1", + "zlib" +] +template = "custom" +script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ + +MAKEFLAGS=( + NEEDS_SSL_WITH_CURL=1 + NEEDS_CRYPTO_WITH_SSL=1 + NO_IPV6=1 + NO_PREAD=1 + NO_MMAP=1 + NO_SETITIMER=1 + NO_UNIX_SOCKETS=1 + NEEDS_LIBICONV= + NEEDS_LIBRT= + BLK_SHA1=1 + V=1 +) +export LDFLAGS="-L${COOKBOOK_SYSROOT}/usr/lib" +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/usr/include" +export CURL_CONFIG="${COOKBOOK_SYSROOT}/usr/bin/curl-config" +./configure \ + --host="${GNU_TARGET}" \ + --prefix=/usr \ + ac_cv_fread_reads_directories=yes \ + ac_cv_snprintf_returns_bogus=yes \ + ac_cv_lib_curl_curl_global_init=yes +"${COOKBOOK_MAKE}" "${MAKEFLAGS[@]}" -j"${COOKBOOK_MAKE_JOBS}" +"${COOKBOOK_MAKE}" DESTDIR="${COOKBOOK_STAGE}" "${MAKEFLAGS[@]}" install +""" + +[package] +dependencies = [ + "ca-certificates", + "nghttp2" +] \ No newline at end of file From e9c93d1111287812a5118470368b9962ccd27c15 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 28 Feb 2025 15:33:34 -0700 Subject: [PATCH 2285/3180] cargo: sort dependencies --- recipes/dev/cargo/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/dev/cargo/recipe.toml b/recipes/dev/cargo/recipe.toml index 8fa7121b..17531b47 100644 --- a/recipes/dev/cargo/recipe.toml +++ b/recipes/dev/cargo/recipe.toml @@ -33,8 +33,8 @@ cp -v "target/${TARGET}/release/cargo" "${COOKBOOK_STAGE}/bin/cargo" [package] shared-deps = [ - "libgcc", "curl", + "libgcc", "libssh2", "nghttp2", "openssl1", From b4d76c658bef56fbea1c9fd52066390ddda0b16e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 28 Feb 2025 15:38:39 -0700 Subject: [PATCH 2286/3180] flycast: compile dynamically --- recipes/emulators/flycast/recipe.toml | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/recipes/emulators/flycast/recipe.toml b/recipes/emulators/flycast/recipe.toml index 1b0c84a3..7dff7748 100644 --- a/recipes/emulators/flycast/recipe.toml +++ b/recipes/emulators/flycast/recipe.toml @@ -15,8 +15,9 @@ dependencies = [ "zlib", ] script = """ -export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" -export CXXFLAGS="${CXXFLAGS} -D_GLIBCXX_USE_C99_MATH_TR1=1 -I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" +DYNAMIC_INIT +export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/usr/include -I${COOKBOOK_SYSROOT}/usr/include/SDL2" +export CXXFLAGS="${CXXFLAGS} -D_GLIBCXX_USE_C99_MATH_TR1=1 -I${COOKBOOK_SYSROOT}/usr/include -I${COOKBOOK_SYSROOT}/usr/include/SDL2" #TODO: don't use this export SDL_LIBS="-lSDL2 -lorbital $("${TARGET}-pkg-config" --libs osmesa) -lstdc++" #TODO: don't add curl @@ -26,7 +27,7 @@ COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_VERBOSE_MAKEFILE=On -DCMAKE_CROSSCOMPILING=True -DCMAKE_BUILD_TYPE=RelWithDebInfo - -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_INSTALL_PREFIX="/usr" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DREDOX=1 @@ -54,6 +55,13 @@ COOKBOOK_CONFIGURE_FLAGS=( "${COOKBOOK_SOURCE}" ) cookbook_configure -mv "${COOKBOOK_STAGE}/usr/"* "${COOKBOOK_STAGE}" -rmdir "${COOKBOOK_STAGE}/usr" """ + +[package] +shared-deps = [ + "curl", + "libgcc", + "nghttp2", + "openssl1", + "zlib", +] \ No newline at end of file From 63289089e0ea551140f66f11ac3742d5ddf79168 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 28 Feb 2025 18:29:15 -0700 Subject: [PATCH 2287/3180] zlib: install to /usr --- recipes/libs/zlib/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/libs/zlib/recipe.toml b/recipes/libs/zlib/recipe.toml index 30380178..5d062709 100644 --- a/recipes/libs/zlib/recipe.toml +++ b/recipes/libs/zlib/recipe.toml @@ -7,10 +7,10 @@ template = "custom" script = """ DYNAMIC_INIT # See https://stackoverflow.com/questions/21396988/zlib-build-not-configuring-properly-with-cross-compiler-ignores-ar. -CHOST="${TARGET}" "${COOKBOOK_CONFIGURE}" --prefix="" +CHOST="${TARGET}" "${COOKBOOK_CONFIGURE}" --prefix="/usr" "${COOKBOOK_MAKE}" -j "$(nproc)" "${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" -patchelf --set-soname 'libz.so.1.3' "${COOKBOOK_STAGE}/lib/libz.so.1.3" +patchelf --set-soname 'libz.so.1.3' "${COOKBOOK_STAGE}/usr/lib/libz.so.1.3" """ [package] From efbe97918e1bc6f8d9ba249ca498228bb2285a3e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 28 Feb 2025 18:29:25 -0700 Subject: [PATCH 2288/3180] mesa: install to /usr --- recipes/libs/mesa/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/libs/mesa/recipe.toml b/recipes/libs/mesa/recipe.toml index 9fd73d09..e9adb168 100644 --- a/recipes/libs/mesa/recipe.toml +++ b/recipes/libs/mesa/recipe.toml @@ -35,7 +35,7 @@ echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt echo "endian = 'little'" >> cross_file.txt echo "[paths]" >> cross_file.txt -echo "prefix = '/'" >> cross_file.txt +echo "prefix = '/usr'" >> cross_file.txt echo "libdir = 'lib'" >> cross_file.txt echo "bindir = 'bin'" >> cross_file.txt @@ -59,5 +59,5 @@ DESTDIR="${COOKBOOK_STAGE}" ninja install # Hack to add LLVM libs #TODO: only add necessary LLVM libs, not all of them -sed -i "s/ -lOSMesa / -lOSMesa $("${TARGET}-llvm-config" --libs) -lstdc++ /" "${COOKBOOK_STAGE}/lib/pkgconfig/osmesa.pc" +sed -i "s/ -lOSMesa / -lOSMesa $("${TARGET}-llvm-config" --libs) -lstdc++ /" "${COOKBOOK_STAGE}/usr/lib/pkgconfig/osmesa.pc" """ From 49c8edd4fef8a77f6a096d868c2794f08b655e45 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 28 Feb 2025 18:38:42 -0700 Subject: [PATCH 2289/3180] llvm18: install to /usr --- recipes/dev/llvm18/native.cmake | 1 + recipes/dev/llvm18/recipe.toml | 13 +++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/recipes/dev/llvm18/native.cmake b/recipes/dev/llvm18/native.cmake index 4b0abbfa..f1dd492f 100644 --- a/recipes/dev/llvm18/native.cmake +++ b/recipes/dev/llvm18/native.cmake @@ -1,2 +1,3 @@ set(CMAKE_C_COMPILER cc) set(CMAKE_CXX_COMPILER c++) +set(CMAKE_EXE_LINKER_FLAGS) diff --git a/recipes/dev/llvm18/recipe.toml b/recipes/dev/llvm18/recipe.toml index daeb31ad..841f8474 100644 --- a/recipes/dev/llvm18/recipe.toml +++ b/recipes/dev/llvm18/recipe.toml @@ -17,7 +17,7 @@ COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_CXX_FLAGS="--std=gnu++11" -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_RANLIB="$(which "${TARGET}-ranlib")" - -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_INSTALL_PREFIX="/usr" -DCMAKE_INSTALL_INCLUDEDIR="include" -DCMAKE_INSTALL_OLDINCLUDEDIR="/include" -DCMAKE_SYSTEM_NAME=Generic @@ -35,7 +35,6 @@ COOKBOOK_CONFIGURE_FLAGS=( -DLLVM_INCLUDE_EXAMPLES=Off -DLLVM_INCLUDE_TESTS=Off -DLLVM_INCLUDE_UTILS=Off - -DLLVM_OPTIMIZED_TABLEGEN=On -DLLVM_TARGET_ARCH="$(echo "${TARGET}" | cut -d - -f1)" -DLLVM_TARGETS_TO_BUILD=X86 # TODO: get from TARGET -DLLVM_TOOL_LLVM_COV_BUILD=Off @@ -53,12 +52,14 @@ COOKBOOK_CONFIGURE_FLAGS=( -DZLIB_LIBRARY=-lz -DZLIB_INCLUDE_DIR="${COOKBOOK_SYSROOT}/include" -Wno-dev - "${COOKBOOK_SOURCE}/llvm" ) +LLVM_TABLEGEN="$(which llvm-tblgen-18 || true)" +if [ -n "${LLVM_TABLEGEN}" ] +then + COOKBOOK_CONFIGURE_FLAGS+=(-DLLVM_TABLEGEN="${LLVM_TABLEGEN}") +fi +COOKBOOK_CONFIGURE_FLAGS+=("${COOKBOOK_SOURCE}/llvm") set -x cookbook_configure -mv -vT "${COOKBOOK_STAGE}"/usr/include "${COOKBOOK_STAGE}/include" -mv -vT "${COOKBOOK_STAGE}"/usr/share "${COOKBOOK_STAGE}/share" -rmdir -v "${COOKBOOK_STAGE}"/usr set +x """ From 375dfdced007934677a837f4c25786121a2db2cf Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 28 Feb 2025 18:46:43 -0700 Subject: [PATCH 2290/3180] gears: convert to toml, install to /usr --- recipes/demos/gears/recipe.sh | 32 -------------------------------- recipes/demos/gears/recipe.toml | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 32 deletions(-) delete mode 100644 recipes/demos/gears/recipe.sh create mode 100644 recipes/demos/gears/recipe.toml diff --git a/recipes/demos/gears/recipe.sh b/recipes/demos/gears/recipe.sh deleted file mode 100644 index b43a70fe..00000000 --- a/recipes/demos/gears/recipe.sh +++ /dev/null @@ -1,32 +0,0 @@ -BUILD_DEPENDS=(liborbital llvm18 mesa mesa-glu zlib) - -function recipe_version { - printf "1.0.0" - skip=1 -} - -function recipe_prepare { - rm -rf source - mkdir source - cp gears.c source -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - set -x - "${CXX}" -O2 -I "$sysroot/include" -L "$sysroot/lib" gears.c -o gears -static -lorbital $("${PKG_CONFIG}" --libs glu) -lz - set +x - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - mkdir -pv "$dest/bin" - cp -v "gears" "$dest/bin/gears" - skip=1 -} diff --git a/recipes/demos/gears/recipe.toml b/recipes/demos/gears/recipe.toml new file mode 100644 index 00000000..d74ce80f --- /dev/null +++ b/recipes/demos/gears/recipe.toml @@ -0,0 +1,16 @@ +[build] +dependencies=[ + "liborbital", + "llvm18", + "mesa", + "mesa-glu", + "zlib", +] +template = "custom" +script = """ +set -x +"${CXX}" -O2 -I "${COOKBOOK_SYSROOT}/usr/include" -L "${COOKBOOK_SYSROOT}/usr/lib" "${COOKBOOK_RECIPE}/gears.c" -o gears -static -lorbital $("${PKG_CONFIG}" --libs glu) -lz +set +x +mkdir -pv "${COOKBOOK_STAGE}/usr/bin" +cp -v "gears" "${COOKBOOK_STAGE}/usr/bin/gears" +""" \ No newline at end of file From 920320dfb642a48d642d57421a3c4cafd91fc8df Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Sat, 1 Mar 2025 01:31:17 -0500 Subject: [PATCH 2291/3180] fix: Remove `git apply` from OpenTyrian --- recipes/games/opentyrian/recipe.toml | 3 --- 1 file changed, 3 deletions(-) diff --git a/recipes/games/opentyrian/recipe.toml b/recipes/games/opentyrian/recipe.toml index be33f984..55ecfa29 100644 --- a/recipes/games/opentyrian/recipe.toml +++ b/recipes/games/opentyrian/recipe.toml @@ -43,8 +43,5 @@ curl -OL https://camanis.net/tyrian/tyrian21.zip sha256sum -c tyrian21.zip.sha unzip -jd "${ASSETSDIR}" tyrian21.zip -# The build system doesn't automatically apply patches to cloned repositories -git apply "${COOKBOOK_RECIPE}/redox.patch" - cookbook_configure """ From d76ee8eee33f65f413b70beba15ab5a68c558b6b Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 1 Mar 2025 17:16:14 +0100 Subject: [PATCH 2292/3180] Run pcid-spawner right after starting pcid --- recipes/core/drivers-initfs/recipe.toml | 3 ++- recipes/core/drivers/recipe.toml | 3 ++- recipes/core/initfs/aarch64-unknown-redox/init.rc | 3 ++- recipes/core/initfs/init.rc | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/recipes/core/drivers-initfs/recipe.toml b/recipes/core/drivers-initfs/recipe.toml index f4d3fd1f..eecbb7c7 100644 --- a/recipes/core/drivers-initfs/recipe.toml +++ b/recipes/core/drivers-initfs/recipe.toml @@ -12,6 +12,7 @@ BINS=( lived nvmed pcid + pcid-spawner vesad ) @@ -62,7 +63,7 @@ export CARGO_PROFILE_RELEASE_PANIC=abort for bin in "${BINS[@]}" do case "${bin}" in - pcid | fbbootlogd | fbcond | inputd | vesad | lived | ps2d | acpid | bcm2835-sdhcid) + pcid | pcid-spawner | fbbootlogd | fbcond | inputd | vesad | lived | ps2d | acpid | bcm2835-sdhcid) cp -v "target/${TARGET}/release/${bin}" "${COOKBOOK_STAGE}/bin" ;; *) diff --git a/recipes/core/drivers/recipe.toml b/recipes/core/drivers/recipe.toml index b29a42a2..417fc19d 100644 --- a/recipes/core/drivers/recipe.toml +++ b/recipes/core/drivers/recipe.toml @@ -11,6 +11,7 @@ BINS=( ihdad ixgbed pcid + pcid-spawner rtl8139d rtl8168d usbctl @@ -41,7 +42,7 @@ export CARGO_PROFILE_RELEASE_PANIC=abort $(for bin in "${BINS[@]}"; do echo "-p" "${bin}"; done) for bin in "${BINS[@]}" do - if [[ "${bin}" == "inputd" || "${bin}" == "pcid" ]]; then + if [[ "${bin}" == "inputd" || "${bin}" == "pcid" || "${bin}" == "pcid-spawner" ]]; then cp -v "target/${TARGET}/release/${bin}" "${COOKBOOK_STAGE}/usr/bin" else cp -v "target/${TARGET}/release/${bin}" "${COOKBOOK_STAGE}/usr/lib/drivers" diff --git a/recipes/core/initfs/aarch64-unknown-redox/init.rc b/recipes/core/initfs/aarch64-unknown-redox/init.rc index 0c64d22c..175af583 100644 --- a/recipes/core/initfs/aarch64-unknown-redox/init.rc +++ b/recipes/core/initfs/aarch64-unknown-redox/init.rc @@ -13,7 +13,8 @@ logd /scheme/debug /scheme/fbbootlog stdio /scheme/log ramfs logging acpid -pcid /etc/pcid/initfs.toml +pcid +pcid-spawner /etc/pcid/initfs.toml lived unset DISK_LIVE_ADDR DISK_LIVE_SIZE redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK diff --git a/recipes/core/initfs/init.rc b/recipes/core/initfs/init.rc index 48a5855b..c5318130 100644 --- a/recipes/core/initfs/init.rc +++ b/recipes/core/initfs/init.rc @@ -14,7 +14,8 @@ stdio /scheme/log ramfs logging ps2d us acpid -pcid /etc/pcid/initfs.toml +pcid +pcid-spawner /etc/pcid/initfs.toml lived unset DISK_LIVE_ADDR DISK_LIVE_SIZE redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK From a7bd20fe95c0ed670477b4cc47f75f93775dcbc9 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 1 Mar 2025 22:07:56 +0100 Subject: [PATCH 2293/3180] Fix rebuilding the initfs recipe using r.initfs as opposed to cr.initfs Without this when rebuilding it will try to remove symlinks created by the cookbook that have been replaced with actual directories in the previous build. --- recipes/core/initfs/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/core/initfs/recipe.toml b/recipes/core/initfs/recipe.toml index b24de95c..dc0ffddf 100644 --- a/recipes/core/initfs/recipe.toml +++ b/recipes/core/initfs/recipe.toml @@ -12,6 +12,7 @@ dependencies = [ script = """ INITFS_RM_BINS='redoxfs-ar redoxfs-mkfs' +rm -r "${COOKBOOK_BUILD}/initfs" mkdir -p "${COOKBOOK_BUILD}/initfs/etc" cp -r "${COOKBOOK_SYSROOT}/"* "${COOKBOOK_BUILD}/initfs" From 80c70656a1378ca0bbbd2d7d2330d8ccc8c58f8f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 1 Mar 2025 20:57:56 -0700 Subject: [PATCH 2294/3180] Apply usrmerge to legacy recipe sysroot --- cook.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/cook.sh b/cook.sh index f3b9f4c2..42fb9d5c 100755 --- a/cook.sh +++ b/cook.sh @@ -133,6 +133,14 @@ function op { rm -rf "${COOKBOOK_SYSROOT}" mkdir "${COOKBOOK_SYSROOT}" + # usrmerge + mkdir "${COOKBOOK_SYSROOT}/usr" + for folder in bin include lib share + do + mkdir "${COOKBOOK_SYSROOT}/usr/${folder}" + ln -s "usr/${folder}" "${COOKBOOK_SYSROOT}/${folder}" + done + if [ ${#BUILD_DEPENDS} -gt 0 ] then pushd $ROOT From 82811be3c36a57502c161cc61ebd58b0a210758a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 1 Mar 2025 21:12:07 -0700 Subject: [PATCH 2295/3180] initfs: do not fail if initfs folder does not exist --- recipes/core/initfs/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/core/initfs/recipe.toml b/recipes/core/initfs/recipe.toml index dc0ffddf..3dea3a52 100644 --- a/recipes/core/initfs/recipe.toml +++ b/recipes/core/initfs/recipe.toml @@ -12,7 +12,7 @@ dependencies = [ script = """ INITFS_RM_BINS='redoxfs-ar redoxfs-mkfs' -rm -r "${COOKBOOK_BUILD}/initfs" +rm -rf "${COOKBOOK_BUILD}/initfs" mkdir -p "${COOKBOOK_BUILD}/initfs/etc" cp -r "${COOKBOOK_SYSROOT}/"* "${COOKBOOK_BUILD}/initfs" From 11d5d9c9dce36ece607162868520ecaf5b8e3b15 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 2 Mar 2025 13:36:14 +0000 Subject: [PATCH 2296/3180] Update recipes --- recipes/wip/emulators/game-console/xbox360/xenia/recipe.toml | 4 ++-- recipes/wip/emulators/windows/wine-stable/recipe.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/wip/emulators/game-console/xbox360/xenia/recipe.toml b/recipes/wip/emulators/game-console/xbox360/xenia/recipe.toml index 378d62f2..a4ef80b3 100644 --- a/recipes/wip/emulators/game-console/xbox360/xenia/recipe.toml +++ b/recipes/wip/emulators/game-console/xbox360/xenia/recipe.toml @@ -1,7 +1,7 @@ -#TODO missing script for building, see https://github.com/xenia-project/xenia/blob/master/docs/building.md#linux +#TODO missing script for building, see https://github.com/xenia-canary/xenia-canary/blob/canary_experimental/docs/building.md#linux #TODO make all dependencies work [source] -git = "https://github.com/xenia-project/xenia" +git = "https://github.com/xenia-canary/xenia-canary" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/emulators/windows/wine-stable/recipe.toml b/recipes/wip/emulators/windows/wine-stable/recipe.toml index db23382e..a85a83ad 100644 --- a/recipes/wip/emulators/windows/wine-stable/recipe.toml +++ b/recipes/wip/emulators/windows/wine-stable/recipe.toml @@ -1,7 +1,7 @@ #TODO make all dependencies work #TODO does it use gtk3 for winecfg? [source] -tar = "https://dl.winehq.org/wine/source/9.0/wine-9.0.tar.xz" +tar = "https://dl.winehq.org/wine/source/10.0/wine-10.0.tar.xz" [build] template = "configure" dependencies = [ From 043453d821395cf32a560810d3f444536e0bef89 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 2 Mar 2025 13:37:37 +0000 Subject: [PATCH 2297/3180] Rename the xenia recipe to xenia-canary --- .../game-console/xbox360/{xenia => xenia-canary}/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/emulators/game-console/xbox360/{xenia => xenia-canary}/recipe.toml (100%) diff --git a/recipes/wip/emulators/game-console/xbox360/xenia/recipe.toml b/recipes/wip/emulators/game-console/xbox360/xenia-canary/recipe.toml similarity index 100% rename from recipes/wip/emulators/game-console/xbox360/xenia/recipe.toml rename to recipes/wip/emulators/game-console/xbox360/xenia-canary/recipe.toml From 6a5ae9a0791699b5f5ce4a88e6770aa9a690b267 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 2 Mar 2025 15:09:35 +0000 Subject: [PATCH 2298/3180] Add recipes --- recipes/wip/data/poppler-data/recipe.toml | 5 +++++ .../wip/dev/cargo-tools/cargo-autodd/recipe.toml | 5 +++++ recipes/wip/dev/other/customasm/recipe.toml | 5 +++++ recipes/wip/graphics/shaders/vibe/recipe.toml | 10 ++++++++++ recipes/wip/libs/audio/libalsa/recipe.toml | 6 ++++++ recipes/wip/sim/coulomb/recipe.toml | 7 +++++++ recipes/wip/sound/fretboard/recipe.toml | 9 +++++++++ recipes/wip/text/keypunch/recipe.toml | 9 +++++++++ recipes/wip/text/rnote/recipe.toml | 16 ++++++++++++++++ recipes/wip/video/webcam/clipqr/recipe.toml | 8 ++++++++ 10 files changed, 80 insertions(+) create mode 100644 recipes/wip/data/poppler-data/recipe.toml create mode 100644 recipes/wip/dev/cargo-tools/cargo-autodd/recipe.toml create mode 100644 recipes/wip/dev/other/customasm/recipe.toml create mode 100644 recipes/wip/graphics/shaders/vibe/recipe.toml create mode 100644 recipes/wip/libs/audio/libalsa/recipe.toml create mode 100644 recipes/wip/sim/coulomb/recipe.toml create mode 100644 recipes/wip/sound/fretboard/recipe.toml create mode 100644 recipes/wip/text/keypunch/recipe.toml create mode 100644 recipes/wip/text/rnote/recipe.toml create mode 100644 recipes/wip/video/webcam/clipqr/recipe.toml diff --git a/recipes/wip/data/poppler-data/recipe.toml b/recipes/wip/data/poppler-data/recipe.toml new file mode 100644 index 00000000..3262c088 --- /dev/null +++ b/recipes/wip/data/poppler-data/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for gnu make +[source] +tar = "https://poppler.freedesktop.org/poppler-data-0.4.12.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/dev/cargo-tools/cargo-autodd/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-autodd/recipe.toml new file mode 100644 index 00000000..f3460973 --- /dev/null +++ b/recipes/wip/dev/cargo-tools/cargo-autodd/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/nwiizo/cargo-autodd" +[build] +template = "cargo" diff --git a/recipes/wip/dev/other/customasm/recipe.toml b/recipes/wip/dev/other/customasm/recipe.toml new file mode 100644 index 00000000..624efa59 --- /dev/null +++ b/recipes/wip/dev/other/customasm/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/hlorenzi/customasm" +[build] +template = "cargo" diff --git a/recipes/wip/graphics/shaders/vibe/recipe.toml b/recipes/wip/graphics/shaders/vibe/recipe.toml new file mode 100644 index 00000000..1b32e274 --- /dev/null +++ b/recipes/wip/graphics/shaders/vibe/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/TornaxO7/vibe" +[build] +template = "cargo" +dependencies = [ + "libxkbcommon", + "libwayland", + "libalsa", +] diff --git a/recipes/wip/libs/audio/libalsa/recipe.toml b/recipes/wip/libs/audio/libalsa/recipe.toml new file mode 100644 index 00000000..805791e3 --- /dev/null +++ b/recipes/wip/libs/audio/libalsa/recipe.toml @@ -0,0 +1,6 @@ +#TODO maybe wrong template +# build instructions - https://git.alsa-project.org/?p=alsa-lib.git;a=blob;f=INSTALL;h=a2427e072bcaf951addc3e1db1fccccf44f3b59b;hb=HEAD +[source] +tar = "http://www.alsa-project.org/files/pub/lib/alsa-lib-1.2.13.tar.bz2" +[build] +template = "configure" diff --git a/recipes/wip/sim/coulomb/recipe.toml b/recipes/wip/sim/coulomb/recipe.toml new file mode 100644 index 00000000..4db9fbcd --- /dev/null +++ b/recipes/wip/sim/coulomb/recipe.toml @@ -0,0 +1,7 @@ +#TODO missing script for gradlew +#TODO determine the dependencies +[source] +git = "https://github.com/hamza-algohary/Coulomb" +rev = "6617d4817dd153ae5e5645d427cdb746c146ccee" +[build] +template = "custom" diff --git a/recipes/wip/sound/fretboard/recipe.toml b/recipes/wip/sound/fretboard/recipe.toml new file mode 100644 index 00000000..a40677db --- /dev/null +++ b/recipes/wip/sound/fretboard/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/bragefuglseth/fretboard" +[build] +template = "cargo" +dependencies = [ + "gtk4", + "libadwaita", +] diff --git a/recipes/wip/text/keypunch/recipe.toml b/recipes/wip/text/keypunch/recipe.toml new file mode 100644 index 00000000..2a936655 --- /dev/null +++ b/recipes/wip/text/keypunch/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/bragefuglseth/keypunch" +[build] +template = "cargo" +dependencies = [ + "gtk4", + "libadwaita", +] diff --git a/recipes/wip/text/rnote/recipe.toml b/recipes/wip/text/rnote/recipe.toml new file mode 100644 index 00000000..c17b2430 --- /dev/null +++ b/recipes/wip/text/rnote/recipe.toml @@ -0,0 +1,16 @@ +#TODO not compiled or tested +# build instructions - https://github.com/flxzt/rnote/blob/main/BUILDING.md#build-with-meson +[source] +git = "https://github.com/flxzt/rnote" +[build] +template = "custom" +dependencies = [ + "glib", + "libadwaita", + "glib", + "libalsa", + "libpoppler", +] +script = """ +cookbook_cargo_packages rnote +""" diff --git a/recipes/wip/video/webcam/clipqr/recipe.toml b/recipes/wip/video/webcam/clipqr/recipe.toml new file mode 100644 index 00000000..25da03fd --- /dev/null +++ b/recipes/wip/video/webcam/clipqr/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for go +#TODO determine dependencies +# build instructions - https://gitlab.com/imatt-foss/clipqr#build +[source] +git = "https://gitlab.com/imatt-foss/clipqr" +rev = "400a98c302aead3f2b1b81ec6dc45d654c8bf209" +[build] +template = "custom" From 095a0eb3a6fcebd5cb751e73dafe901736ed1645 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sun, 2 Mar 2025 20:35:18 +0100 Subject: [PATCH 2299/3180] Remove now unused arguments for vesad in init.rc --- recipes/core/initfs/aarch64-unknown-redox/init.rc | 2 +- recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp | 2 +- recipes/core/initfs/init.rc | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/core/initfs/aarch64-unknown-redox/init.rc b/recipes/core/initfs/aarch64-unknown-redox/init.rc index 175af583..b2907d4a 100644 --- a/recipes/core/initfs/aarch64-unknown-redox/init.rc +++ b/recipes/core/initfs/aarch64-unknown-redox/init.rc @@ -4,7 +4,7 @@ nulld zerod randd inputd -vesad G G G +vesad unset FRAMEBUFFER_ADDR FRAMEBUFFER_VIRT FRAMEBUFFER_WIDTH FRAMEBUFFER_HEIGHT FRAMEBUFFER_STRIDE #TODO: unset FRAMEBUFFER1 and beyond? fbbootlogd diff --git a/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp b/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp index 3bcad17e..0674441c 100644 --- a/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp +++ b/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp @@ -4,7 +4,7 @@ nulld zerod randd inputd -vesad G G G +vesad unset FRAMEBUFFER_ADDR FRAMEBUFFER_VIRT FRAMEBUFFER_WIDTH FRAMEBUFFER_HEIGHT FRAMEBUFFER_STRIDE #TODO: unset FRAMEBUFFER1 and beyond? fbbootlogd diff --git a/recipes/core/initfs/init.rc b/recipes/core/initfs/init.rc index c5318130..943f278c 100644 --- a/recipes/core/initfs/init.rc +++ b/recipes/core/initfs/init.rc @@ -4,7 +4,7 @@ nulld zerod randd inputd -vesad G G G +vesad unset FRAMEBUFFER_ADDR FRAMEBUFFER_VIRT FRAMEBUFFER_WIDTH FRAMEBUFFER_HEIGHT FRAMEBUFFER_STRIDE #TODO: unset FRAMEBUFFER1 and beyond? fbbootlogd From 363999822d4a4a2df7496fab1e5b10c16b70e954 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 3 Mar 2025 20:29:58 -0700 Subject: [PATCH 2300/3180] Dynamic linking for cosmic-store --- recipes/tools/cosmic-store/recipe.toml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/recipes/tools/cosmic-store/recipe.toml b/recipes/tools/cosmic-store/recipe.toml index b44a4438..d449298f 100644 --- a/recipes/tools/cosmic-store/recipe.toml +++ b/recipes/tools/cosmic-store/recipe.toml @@ -9,6 +9,7 @@ dependencies = [ "openssl1", ] script = """ +DYNAMIC_INIT export GETTEXT_DIR="${COOKBOOK_SYSROOT}" export GETTEXT_STATIC=1 cookbook_cargo --no-default-features --features desktop,pkgar @@ -21,3 +22,9 @@ cp -v "${COOKBOOK_SOURCE}/res/${APPID}.metainfo.xml" "${COOKBOOK_STAGE}/usr/shar mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" cp -rv "${COOKBOOK_SOURCE}/res/icons/hicolor/" "${COOKBOOK_STAGE}/usr/share/icons/" """ + +[package] +shared-deps = [ + "libgcc", + "openssl1", +] From 981c7f49b31c63534b34494ef80a18dfdf373fdb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 3 Mar 2025 20:50:29 -0700 Subject: [PATCH 2301/3180] mednafen: compile dynamically --- recipes/emulators/mednafen/recipe.toml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/recipes/emulators/mednafen/recipe.toml b/recipes/emulators/mednafen/recipe.toml index e17b10e9..b5220bd7 100644 --- a/recipes/emulators/mednafen/recipe.toml +++ b/recipes/emulators/mednafen/recipe.toml @@ -17,9 +17,17 @@ dependencies = [ "zlib", ] script = """ +DYNAMIC_INIT export SDL_LIBS="-lSDL2 -lorbital $("${TARGET}-pkg-config" --libs osmesa) -lstdc++" COOKBOOK_CONFIGURE_FLAGS+=( --without-libflac ) cookbook_configure """ + +[package] +shared-deps = [ + "liborbital", + "libiconv", + "libgcc", +] From 4650ef4e50c6335411d390c6c3d8f97296b8af77 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 3 Mar 2025 20:53:06 -0700 Subject: [PATCH 2302/3180] libsndfile: do not link to broken libflac recipe --- recipes/wip/libs/other/libsndfile/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/libs/other/libsndfile/recipe.toml b/recipes/wip/libs/other/libsndfile/recipe.toml index 644eb033..e243176c 100644 --- a/recipes/wip/libs/other/libsndfile/recipe.toml +++ b/recipes/wip/libs/other/libsndfile/recipe.toml @@ -4,7 +4,7 @@ tar = "https://github.com/libsndfile/libsndfile/releases/download/1.2.0/libsndfi [build] template = "configure" dependencies = [ - "libflac", + #TODO "libflac", "libogg", "libvorbis", ] From 2a9ef4b7e43d76086a0a29cca441f1faa4dc8e9d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 4 Mar 2025 08:03:06 -0700 Subject: [PATCH 2303/3180] openal: fix patches not being used --- recipes/wip/libs/audio/openal/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/libs/audio/openal/recipe.toml b/recipes/wip/libs/audio/openal/recipe.toml index eca21a0f..a4c8d94b 100644 --- a/recipes/wip/libs/audio/openal/recipe.toml +++ b/recipes/wip/libs/audio/openal/recipe.toml @@ -2,7 +2,7 @@ [source] tar = "https://openal-soft.org/openal-releases/openal-soft-1.24.1.tar.bz2" blake3 = "8aeaa8307d3e14331ad20761c537ffebe70975cb7c3343e8d5c0c0ed7bc16eab" -patch = [ +patches = [ "redox.patch" ] From 8609272ebbd1d6ee670611676974886bee7590ba Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 4 Mar 2025 08:48:37 -0700 Subject: [PATCH 2304/3180] love: compile dynamically --- recipes/wip/games/other/love/recipe.toml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/recipes/wip/games/other/love/recipe.toml b/recipes/wip/games/other/love/recipe.toml index 56144bc6..18836508 100644 --- a/recipes/wip/games/other/love/recipe.toml +++ b/recipes/wip/games/other/love/recipe.toml @@ -24,6 +24,7 @@ dependencies = [ "zlib", ] script = """ +DYNAMIC_INIT export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" export CXXFLAGS="${CXXFLAGS} -I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" @@ -77,3 +78,12 @@ COOKBOOK_CONFIGURE_FLAGS=( mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v love "${COOKBOOK_STAGE}/usr/bin/love" """ + +[package] +shared-deps = [ + "libgcc", + "liborbital", + "libpng", + "luajit", + "zlib", +] From b2c17c711ab541f439a744c008e41751d78ad173 Mon Sep 17 00:00:00 2001 From: Ron Williams Date: Wed, 5 Mar 2025 02:24:09 -0800 Subject: [PATCH 2305/3180] Git: remove man pages due to colon in filenames --- recipes/dev/git/recipe.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/dev/git/recipe.toml b/recipes/dev/git/recipe.toml index f9f5f64c..5054885e 100644 --- a/recipes/dev/git/recipe.toml +++ b/recipes/dev/git/recipe.toml @@ -39,10 +39,11 @@ export CURL_CONFIG="${COOKBOOK_SYSROOT}/usr/bin/curl-config" ac_cv_lib_curl_curl_global_init=yes "${COOKBOOK_MAKE}" "${MAKEFLAGS[@]}" -j"${COOKBOOK_MAKE_JOBS}" "${COOKBOOK_MAKE}" DESTDIR="${COOKBOOK_STAGE}" "${MAKEFLAGS[@]}" install +rm -rf "${COOKBOOK_STAGE}/usr/share/man" """ [package] dependencies = [ "ca-certificates", "nghttp2" -] \ No newline at end of file +] From 174b62bc7029fe07f22ceb71e71d66c330b2ff40 Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Fri, 7 Mar 2025 15:30:49 +0000 Subject: [PATCH 2306/3180] fix: Vim's old FTP server is deprecated --- recipes/tools/vim/recipe.sh | 39 ----------------------------------- recipes/tools/vim/recipe.toml | 26 +++++++++++++++++++++++ 2 files changed, 26 insertions(+), 39 deletions(-) delete mode 100644 recipes/tools/vim/recipe.sh create mode 100644 recipes/tools/vim/recipe.toml diff --git a/recipes/tools/vim/recipe.sh b/recipes/tools/vim/recipe.sh deleted file mode 100644 index f2b157ba..00000000 --- a/recipes/tools/vim/recipe.sh +++ /dev/null @@ -1,39 +0,0 @@ -VERSION=8.2 -# We use `https://ftp.nluug.nl` because `ftp.vim.org` doesn't support `https` -# see https://www.vim.org/mirrors.php -TAR=https://ftp.nluug.nl/pub/vim/unix/vim-$VERSION.tar.bz2 - -BUILD_DEPENDS=(ncurses) -DEPENDS="terminfo" - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export LDFLAGS="-L$sysroot/lib -static" - export CPPFLAGS="-I$sysroot/include" - export vim_cv_toupper_broken=no - export vim_cv_tgetent=zero - export vim_cv_terminfo=yes - export vim_cv_tty_group=world - export vim_cv_getcwd_broken=no - export vim_cv_stat_ignores_slash=yes - export vim_cv_memmove_handles_overlap=yes - ./configure --build=${BUILD} --host=${HOST} --prefix=/ --with-tlib=ncurses - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" ${MAKEFLAGS} install - skip=1 -} diff --git a/recipes/tools/vim/recipe.toml b/recipes/tools/vim/recipe.toml new file mode 100644 index 00000000..729291d3 --- /dev/null +++ b/recipes/tools/vim/recipe.toml @@ -0,0 +1,26 @@ +[source] +tar = "https://github.com/vim/vim/archive/refs/tags/v8.2.5172.tar.gz" +blake3 = "28a58578a6655e2e45078331569d6e6c96ed05189acda34c2a784581bf614cd2" +patch = ["vim.patch"] + +[build] +dependencies = ["ncurses"] +template = "custom" +script = """ +export vim_cv_toupper_broken=no +export vim_cv_tgetent=zero +export vim_cv_terminfo=yes +export vim_cv_tty_group=world +export vim_cv_getcwd_broken=no +export vim_cv_stat_ignores_slash=yes +export vim_cv_memmove_handles_overlap=yes +export SRCDIR="${COOKBOOK_SOURCE}/src" + +COOKBOOK_CONFIGURE_FLAGS+=( + --with-tlib=ncurses +) + +pushd "${SRCDIR}" +cookbook_configure +popd +""" From f677a16a32c6320acbb5f14719e7e0092f191054 Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Fri, 7 Mar 2025 22:42:14 -0500 Subject: [PATCH 2307/3180] fix: Unit tests should use blake3 --- src/recipe.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/recipe.rs b/src/recipe.rs index d897355c..907c79e9 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -267,7 +267,7 @@ mod tests { r#" [source] tar = "http://downloads.xiph.org/releases/ogg/libogg-1.3.3.tar.xz" - sha256 = "8220c0e4082fa26c07b10bfe31f641d2e33ebe1d1bb0b20221b7016bc8b78a3a" + blake3 = "8220c0e4082fa26c07b10bfe31f641d2e33ebe1d1bb0b20221b7016bc8b78a3a" [build] template = "custom" From 28ccb768a5b738ee0539093a38cef2c4086d39cb Mon Sep 17 00:00:00 2001 From: Ron Williams Date: Sun, 9 Mar 2025 23:49:03 -0700 Subject: [PATCH 2308/3180] Curl: add dynamic linking dependencies --- recipes/net/curl/recipe.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/recipes/net/curl/recipe.toml b/recipes/net/curl/recipe.toml index 4c28f0d2..617b71be 100644 --- a/recipes/net/curl/recipe.toml +++ b/recipes/net/curl/recipe.toml @@ -40,5 +40,7 @@ cookbook_configure [package] dependencies = [ + "openssl1", + "zlib", "ca-certificates" ] From c06e5b14e4bcf767a0c53f694f88bc88cef0cbca Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Mon, 10 Mar 2025 21:29:14 +0100 Subject: [PATCH 2309/3180] Move netstack to the base repo --- recipes/core/base/recipe.toml | 9 +++++++++ recipes/core/netstack/recipe.toml | 5 ----- 2 files changed, 9 insertions(+), 5 deletions(-) delete mode 100644 recipes/core/netstack/recipe.toml diff --git a/recipes/core/base/recipe.toml b/recipes/core/base/recipe.toml index 0044430e..f70fa6b1 100644 --- a/recipes/core/base/recipe.toml +++ b/recipes/core/base/recipe.toml @@ -13,4 +13,13 @@ for package in ipcd ptyd; do "target/${TARGET}/${build_type}/${package}" \ "${COOKBOOK_STAGE}/usr/bin/${package}" done + +"${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/netstack/Cargo.toml" \ + ${build_flags} +for bin in smolnetd dnsd; do + cp -v \ + "target/${TARGET}/${build_type}/${bin}" \ + "${COOKBOOK_STAGE}/usr/bin/${bin}" +done """ diff --git a/recipes/core/netstack/recipe.toml b/recipes/core/netstack/recipe.toml deleted file mode 100644 index c2a534a2..00000000 --- a/recipes/core/netstack/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -[source] -git = "https://gitlab.redox-os.org/redox-os/netstack.git" - -[build] -template = "cargo" From 3c2855099c1e32ba4d64563c0dddd401a92b1d1f Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Thu, 13 Mar 2025 18:27:40 +0100 Subject: [PATCH 2310/3180] libs/libsodium: Avoid usage of legacy scheme path format --- recipes/libs/libsodium/random.patch | 14 -------------- recipes/libs/libsodium/recipe.toml | 3 --- 2 files changed, 17 deletions(-) delete mode 100644 recipes/libs/libsodium/random.patch diff --git a/recipes/libs/libsodium/random.patch b/recipes/libs/libsodium/random.patch deleted file mode 100644 index 77e010bc..00000000 --- a/recipes/libs/libsodium/random.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- a/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c 2018-06-03 07:26:17.413729023 +0200 -+++ b/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c 2018-06-03 07:41:40.119390067 +0200 -@@ -162,10 +162,7 @@ - /* LCOV_EXCL_START */ - struct stat st; - static const char *devices[] = { --# ifndef USE_BLOCKING_RANDOM -- "/dev/urandom", --# endif -- "/dev/random", NULL -+ "rand:", NULL - }; - const char **device = devices; - int fd; diff --git a/recipes/libs/libsodium/recipe.toml b/recipes/libs/libsodium/recipe.toml index 2469d25e..5c4634b5 100644 --- a/recipes/libs/libsodium/recipe.toml +++ b/recipes/libs/libsodium/recipe.toml @@ -1,9 +1,6 @@ [source] tar = "https://github.com/jedisct1/libsodium/archive/1.0.16.tar.gz" blake3 = "2482633f872c173f9a42e6badb44c3efb042e783e664fdf8b1046babfa2405e7" -patches = [ - "random.patch" -] script = "./autogen.sh" [build] From 811f0e2bb535e4508ab27f6c3356ee5a7f43d040 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Thu, 13 Mar 2025 19:19:01 +0100 Subject: [PATCH 2311/3180] Remove pcspkrd --- recipes/core/drivers/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/core/drivers/recipe.toml b/recipes/core/drivers/recipe.toml index 417fc19d..64e23de8 100644 --- a/recipes/core/drivers/recipe.toml +++ b/recipes/core/drivers/recipe.toml @@ -27,7 +27,7 @@ BINS=( # depending on the target architecture case "${TARGET}" in i686-unknown-redox | x86_64-unknown-redox) - BINS+=(ac97d bgad pcspkrd sb16d vboxd) + BINS+=(ac97d bgad sb16d vboxd) ;; *) ;; From d84357ee656bafcee972f1a9abe56146774c1afc Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Thu, 13 Mar 2025 20:01:03 +0100 Subject: [PATCH 2312/3180] Extract architecture specific parts of init.rc To allow reusing the platform independent part of init.rc without having to copy it for each platform. Also add a bunch of comments explaining the purpose of each section. --- .../core/initfs/aarch64-unknown-redox/init.rc | 25 ------------------- .../aarch64-unknown-redox/init.rc.raspi3bp | 23 ----------------- .../aarch64-unknown-redox/init_drivers.rc | 3 +++ .../init_drivers.rc.raspi3bp | 1 + recipes/core/initfs/init.rc | 15 ++++++++--- recipes/core/initfs/init_drivers.rc | 4 +++ recipes/core/initfs/recipe.toml | 9 ++++--- 7 files changed, 24 insertions(+), 56 deletions(-) delete mode 100644 recipes/core/initfs/aarch64-unknown-redox/init.rc delete mode 100644 recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp create mode 100644 recipes/core/initfs/aarch64-unknown-redox/init_drivers.rc create mode 100644 recipes/core/initfs/aarch64-unknown-redox/init_drivers.rc.raspi3bp create mode 100644 recipes/core/initfs/init_drivers.rc diff --git a/recipes/core/initfs/aarch64-unknown-redox/init.rc b/recipes/core/initfs/aarch64-unknown-redox/init.rc deleted file mode 100644 index b2907d4a..00000000 --- a/recipes/core/initfs/aarch64-unknown-redox/init.rc +++ /dev/null @@ -1,25 +0,0 @@ -export PATH /bin -export RUST_BACKTRACE 1 -nulld -zerod -randd -inputd -vesad -unset FRAMEBUFFER_ADDR FRAMEBUFFER_VIRT FRAMEBUFFER_WIDTH FRAMEBUFFER_HEIGHT FRAMEBUFFER_STRIDE -#TODO: unset FRAMEBUFFER1 and beyond? -fbbootlogd -fbcond 2 -logd /scheme/debug /scheme/fbbootlog -stdio /scheme/log -ramfs logging -acpid -pcid -pcid-spawner /etc/pcid/initfs.toml -lived -unset DISK_LIVE_ADDR DISK_LIVE_SIZE -redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK -unset REDOXFS_UUID REDOXFS_BLOCK REDOXFS_PASSWORD_ADDR REDOXFS_PASSWORD_SIZE -set-default-scheme file -cd / -export PATH /usr/bin -run.d /usr/lib/init.d /etc/init.d diff --git a/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp b/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp deleted file mode 100644 index 0674441c..00000000 --- a/recipes/core/initfs/aarch64-unknown-redox/init.rc.raspi3bp +++ /dev/null @@ -1,23 +0,0 @@ -export PATH /bin -export RUST_BACKTRACE 1 -nulld -zerod -randd -inputd -vesad -unset FRAMEBUFFER_ADDR FRAMEBUFFER_VIRT FRAMEBUFFER_WIDTH FRAMEBUFFER_HEIGHT FRAMEBUFFER_STRIDE -#TODO: unset FRAMEBUFFER1 and beyond? -fbbootlogd -fbcond 2 -logd /scheme/debug /scheme/fbbootlog -stdio /scheme/log -ramfs logging -lived -unset DISK_LIVE_ADDR DISK_LIVE_SIZE -bcm2835-sdhcid -redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK -unset REDOXFS_UUID REDOXFS_BLOCK REDOXFS_PASSWORD_ADDR REDOXFS_PASSWORD_SIZE -set-default-scheme file -cd / -export PATH /usr/bin -run.d /usr/lib/init.d /etc/init.d diff --git a/recipes/core/initfs/aarch64-unknown-redox/init_drivers.rc b/recipes/core/initfs/aarch64-unknown-redox/init_drivers.rc new file mode 100644 index 00000000..cb8ab2be --- /dev/null +++ b/recipes/core/initfs/aarch64-unknown-redox/init_drivers.rc @@ -0,0 +1,3 @@ +acpid +pcid +pcid-spawner /etc/pcid/initfs.toml diff --git a/recipes/core/initfs/aarch64-unknown-redox/init_drivers.rc.raspi3bp b/recipes/core/initfs/aarch64-unknown-redox/init_drivers.rc.raspi3bp new file mode 100644 index 00000000..ae9b17a4 --- /dev/null +++ b/recipes/core/initfs/aarch64-unknown-redox/init_drivers.rc.raspi3bp @@ -0,0 +1 @@ +bcm2835-sdhcid diff --git a/recipes/core/initfs/init.rc b/recipes/core/initfs/init.rc index 943f278c..df826bb9 100644 --- a/recipes/core/initfs/init.rc +++ b/recipes/core/initfs/init.rc @@ -1,8 +1,12 @@ +# Various daemons that relibc needs to function as well as a bunch of env vars +# that should be set for every program. export PATH /bin export RUST_BACKTRACE 1 nulld zerod randd + +# Logging and graphics infrastructure inputd vesad unset FRAMEBUFFER_ADDR FRAMEBUFFER_VIRT FRAMEBUFFER_WIDTH FRAMEBUFFER_HEIGHT FRAMEBUFFER_STRIDE @@ -12,14 +16,17 @@ fbcond 2 logd /scheme/debug /scheme/fbbootlog stdio /scheme/log ramfs logging -ps2d us -acpid -pcid -pcid-spawner /etc/pcid/initfs.toml + +# Drivers +run /scheme/initfs/etc/init_drivers.rc + +# Mount rootfs lived unset DISK_LIVE_ADDR DISK_LIVE_SIZE redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK unset REDOXFS_UUID REDOXFS_BLOCK REDOXFS_PASSWORD_ADDR REDOXFS_PASSWORD_SIZE + +# Exit initfs set-default-scheme file cd / export PATH /usr/bin diff --git a/recipes/core/initfs/init_drivers.rc b/recipes/core/initfs/init_drivers.rc new file mode 100644 index 00000000..2769ae67 --- /dev/null +++ b/recipes/core/initfs/init_drivers.rc @@ -0,0 +1,4 @@ +ps2d us +acpid +pcid +pcid-spawner /etc/pcid/initfs.toml diff --git a/recipes/core/initfs/recipe.toml b/recipes/core/initfs/recipe.toml index 3dea3a52..ad1f1659 100644 --- a/recipes/core/initfs/recipe.toml +++ b/recipes/core/initfs/recipe.toml @@ -19,10 +19,11 @@ cp -r "${COOKBOOK_SYSROOT}/"* "${COOKBOOK_BUILD}/initfs" # TODO: Move init.rc to another recipe, perhaps initfs-misc? Then it can be installed as a regular dependency. cp "${COOKBOOK_RECIPE}/init.rc" "${COOKBOOK_BUILD}/initfs/etc/init.rc" -if [ -e ${COOKBOOK_RECIPE}/${TARGET}/init.rc.${BOARD} ]; then - cp "${COOKBOOK_RECIPE}/${TARGET}/init.rc.${BOARD}" "${COOKBOOK_BUILD}/initfs/etc/init.rc" -elif [ -e ${COOKBOOK_RECIPE}/${TARGET}/init.rc ]; then - cp "${COOKBOOK_RECIPE}/${TARGET}/init.rc" "${COOKBOOK_BUILD}/initfs/etc/init.rc" +cp "${COOKBOOK_RECIPE}/init_drivers.rc" "${COOKBOOK_BUILD}/initfs/etc/init_drivers.rc" +if [ -e ${COOKBOOK_RECIPE}/${TARGET}/init_drivers.rc.${BOARD} ]; then + cp "${COOKBOOK_RECIPE}/${TARGET}/init_drivers.rc.${BOARD}" "${COOKBOOK_BUILD}/initfs/etc/init_drivers.rc" +elif [ -e ${COOKBOOK_RECIPE}/${TARGET}/init_drivers.rc ]; then + cp "${COOKBOOK_RECIPE}/${TARGET}/init_drivers.rc" "${COOKBOOK_BUILD}/initfs/etc/init_drivers.rc" fi # Move /usr folders to / and remove links From 4975df337f12b75e45e2ea722c153afcb831135b Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Sun, 16 Mar 2025 00:51:56 -0400 Subject: [PATCH 2313/3180] fix: libuv patch redefines existing structs Relibc defines those structs now. The build fails because the patch redefines those structs. --- recipes/libs/libuv/recipe.toml | 2 ++ recipes/libs/libuv/redox.patch | 18 ------------------ 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/recipes/libs/libuv/recipe.toml b/recipes/libs/libuv/recipe.toml index c8845341..1a45a3d1 100644 --- a/recipes/libs/libuv/recipe.toml +++ b/recipes/libs/libuv/recipe.toml @@ -1,6 +1,8 @@ [source] tar = "https://dist.libuv.org/dist/v1.45.0/libuv-v1.45.0.tar.gz" +blake3 = "b78eaba37bfa5fea75accc6d70c67358a4d0b6bb2dfb79b9bb17cb5478cdf797" patches = ["redox.patch"] + [build] template = "custom" script = """ diff --git a/recipes/libs/libuv/redox.patch b/recipes/libs/libuv/redox.patch index eea85fc2..bc1a1609 100644 --- a/recipes/libs/libuv/redox.patch +++ b/recipes/libs/libuv/redox.patch @@ -119,21 +119,3 @@ diff -ruwN a/src/unix/udp.c b/src/unix/udp.c #if defined(IPV6_JOIN_GROUP) && !defined(IPV6_ADD_MEMBERSHIP) # define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP -@@ -937,7 +943,16 @@ - return 0; - } - -- -+#if defined(__redox__) -+// Define the types -+typedef uint64_t ULONG; // equivalent to Rust's u64 -+ -+typedef struct group_source_req { -+ ULONG gsr_interface; -+ struct sockaddr_storage gsr_group; // Use the struct keyword here -+ struct sockaddr_storage gsr_source; // Use the struct keyword here -+} GROUP_SOURCE_REQ, *PGROUP_SOURCE_REQ; -+#endif - static int uv__udp_set_source_membership6(uv_udp_t* handle, - const struct sockaddr_in6* multicast_addr, - const char* interface_addr, From d20e432ec789948eb140c0406cd825c7c846bbf9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 20 Mar 2025 09:21:20 -0600 Subject: [PATCH 2314/3180] Add pavao recipe --- recipes/wip/net/other/pavao/recipe.toml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 recipes/wip/net/other/pavao/recipe.toml diff --git a/recipes/wip/net/other/pavao/recipe.toml b/recipes/wip/net/other/pavao/recipe.toml new file mode 100644 index 00000000..4bae1622 --- /dev/null +++ b/recipes/wip/net/other/pavao/recipe.toml @@ -0,0 +1,14 @@ +#TODO: fails to link libcrypto.so +[source] +git = "https://github.com/jackpot51/pavao.git" + +[build] +template = "custom" +dependencies = [ + "openssl1" +] +script = """ +DYNAMIC_INIT +build_flags="${build_flags} --features vendored" +cookbook_cargo_examples tree +""" From 824e04e5b97cd3d5526e6abe9ce614b48f9f31d2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 20 Mar 2025 10:30:44 -0600 Subject: [PATCH 2315/3180] initfs: set active TTY to 1 after the boot log is moved over --- recipes/core/initfs/init.rc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/core/initfs/init.rc b/recipes/core/initfs/init.rc index df826bb9..668d206e 100644 --- a/recipes/core/initfs/init.rc +++ b/recipes/core/initfs/init.rc @@ -12,9 +12,10 @@ vesad unset FRAMEBUFFER_ADDR FRAMEBUFFER_VIRT FRAMEBUFFER_WIDTH FRAMEBUFFER_HEIGHT FRAMEBUFFER_STRIDE #TODO: unset FRAMEBUFFER1 and beyond? fbbootlogd -fbcond 2 logd /scheme/debug /scheme/fbbootlog stdio /scheme/log +inputd -A 1 +fbcond 2 ramfs logging # Drivers From 5b6ab2602ecbaa90a6ea267b4aefaab35d4b01d4 Mon Sep 17 00:00:00 2001 From: Artur Assis Alves Date: Thu, 20 Mar 2025 18:42:41 +0000 Subject: [PATCH 2316/3180] Edit recipe.toml --- recipes/libs/libmpfr/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/libs/libmpfr/recipe.toml b/recipes/libs/libmpfr/recipe.toml index ba0b8099..10045a4d 100644 --- a/recipes/libs/libmpfr/recipe.toml +++ b/recipes/libs/libmpfr/recipe.toml @@ -1,5 +1,5 @@ [source] -tar = "https://www.mpfr.org/mpfr-current/mpfr-4.2.1.tar.xz" +tar = "https://www.mpfr.org/mpfr-4.2.1/mpfr-4.2.1.tar.xz" blake3 = "f428023b8f7569fc1178faf63265ecb6cab4505fc3fce5d8c46af70db848a334" script = """ DYNAMIC_INIT From 65c2351657189f46b157b9290c3c8bc4a4d13882 Mon Sep 17 00:00:00 2001 From: Artur Assis Alves Date: Thu, 20 Mar 2025 18:55:23 +0000 Subject: [PATCH 2317/3180] Edit recipe.toml: blake3 hash --- recipes/libs/libmpfr/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/libs/libmpfr/recipe.toml b/recipes/libs/libmpfr/recipe.toml index 10045a4d..2c2b32a9 100644 --- a/recipes/libs/libmpfr/recipe.toml +++ b/recipes/libs/libmpfr/recipe.toml @@ -1,6 +1,6 @@ [source] tar = "https://www.mpfr.org/mpfr-4.2.1/mpfr-4.2.1.tar.xz" -blake3 = "f428023b8f7569fc1178faf63265ecb6cab4505fc3fce5d8c46af70db848a334" +blake3 = "11d59d061ef8db588650bc7dc5172594a6e5aad013994801c6f63011a62b191d" script = """ DYNAMIC_INIT autotools_recursive_regenerate From 8f32d5ed388db5a7260169c9d90e0ca107dc1b4c Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Fri, 21 Mar 2025 03:51:20 +0000 Subject: [PATCH 2318/3180] Bump MPFR --- recipes/libs/libmpfr/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/libs/libmpfr/recipe.toml b/recipes/libs/libmpfr/recipe.toml index 2c2b32a9..35a05796 100644 --- a/recipes/libs/libmpfr/recipe.toml +++ b/recipes/libs/libmpfr/recipe.toml @@ -1,5 +1,5 @@ [source] -tar = "https://www.mpfr.org/mpfr-4.2.1/mpfr-4.2.1.tar.xz" +tar = "https://www.mpfr.org/mpfr-current/mpfr-4.2.2.tar.xz" blake3 = "11d59d061ef8db588650bc7dc5172594a6e5aad013994801c6f63011a62b191d" script = """ DYNAMIC_INIT From 59dfd519f7c310bf4136ffcb2694cf21dd95f7f1 Mon Sep 17 00:00:00 2001 From: Ron Williams Date: Wed, 26 Mar 2025 17:35:48 -0700 Subject: [PATCH 2319/3180] Update escalated SHA --- recipes/core/escalated/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/core/escalated/recipe.toml b/recipes/core/escalated/recipe.toml index 70798d90..d8a4d51e 100644 --- a/recipes/core/escalated/recipe.toml +++ b/recipes/core/escalated/recipe.toml @@ -2,6 +2,6 @@ git = "https://gitlab.redox-os.org/redox-os/escalated.git" # Escalated is not backwards compatible wrt relibc versions, so we pin it here # so it's updated together with the other main submodules. -rev = "6c9d3e44" +rev = "92eed68f" [build] template = "cargo" From 68c0c4d19b0e9236f838bc810daa9d6e098b19e4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 27 Mar 2025 15:45:48 -0600 Subject: [PATCH 2320/3180] Update pkgar submodule --- Cargo.lock | 62 ++++++++++++++++++++++++++++++++++++++++++++---------- Cargo.toml | 4 ++-- pkgar | 2 +- 3 files changed, 54 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b612942b..05d2ef9f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1467,6 +1467,19 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +[[package]] +name = "pkgar" +version = "0.1.15" +dependencies = [ + "blake3 0.3.8", + "clap", + "error-chain", + "pkgar-core 0.1.15", + "pkgar-keys 0.1.15", + "plain", + "user-error", +] + [[package]] name = "pkgar" version = "0.1.15" @@ -1476,12 +1489,22 @@ dependencies = [ "blake3 0.3.8", "clap", "error-chain", - "pkgar-core", - "pkgar-keys", + "pkgar-core 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar-keys 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "plain", "user-error", ] +[[package]] +name = "pkgar-core" +version = "0.1.15" +dependencies = [ + "bitflags 1.3.2", + "blake3 0.3.8", + "dryoc", + "plain", +] + [[package]] name = "pkgar-core" version = "0.1.15" @@ -1494,6 +1517,23 @@ dependencies = [ "plain", ] +[[package]] +name = "pkgar-keys" +version = "0.1.15" +dependencies = [ + "clap", + "dirs 3.0.2", + "error-chain", + "hex", + "lazy_static", + "pkgar-core 0.1.15", + "seckey", + "serde", + "termion", + "toml 0.8.19", + "user-error", +] + [[package]] name = "pkgar-keys" version = "0.1.15" @@ -1505,7 +1545,7 @@ dependencies = [ "error-chain", "hex", "lazy_static", - "pkgar-core", + "pkgar-core 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "seckey", "serde", "termion", @@ -1688,9 +1728,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fe401458446fceb860923c57656f112b3c082310c5d7569760efc1a92b9e22e" dependencies = [ "indicatif", - "pkgar", - "pkgar-core", - "pkgar-keys", + "pkgar 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar-core 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar-keys 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "reqwest", "serde", "serde_derive", @@ -1714,8 +1754,8 @@ version = "0.1.0" dependencies = [ "blake3 1.5.3", "pbr", - "pkgar", - "pkgar-keys", + "pkgar 0.1.15", + "pkgar-keys 0.1.15", "redoxer", "serde", "termion", @@ -1736,9 +1776,9 @@ dependencies = [ "fscommon", "gpt", "libc", - "pkgar", - "pkgar-core", - "pkgar-keys", + "pkgar 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar-core 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar-keys 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "rand", "redox-pkg", "redox_liner", diff --git a/Cargo.toml b/Cargo.toml index bf530ff9..635de330 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,8 +22,8 @@ path = "src/lib.rs" [dependencies] blake3 = "=1.5.3" # 1.5.4 is incompatible with blake3 0.3 dependency from pkgar pbr = "1.0.2" -pkgar = "0.1.7" -pkgar-keys = "0.1.0" +pkgar = { path = "pkgar/pkgar" } +pkgar-keys = { path = "pkgar/pkgar-keys" } redoxer = "0.2" serde = { version = "=1.0.197", features = ["derive"] } termion = "4" diff --git a/pkgar b/pkgar index ccfa2bd3..0ccbc991 160000 --- a/pkgar +++ b/pkgar @@ -1 +1 @@ -Subproject commit ccfa2bd3adc41f192d12cb1778a85da232fa2456 +Subproject commit 0ccbc9914b1ec655e23d4babc5afed87e42e9a0f From c961d3fdd1d1a4f1828559baf15e274383daa6f7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 27 Mar 2025 15:46:03 -0600 Subject: [PATCH 2321/3180] Update cargo.lock --- Cargo.lock | 54 +++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 05d2ef9f..e26c84fc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1470,6 +1470,8 @@ checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "pkgar" version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "850f50a19f791c0ac7c1c8b559d36f73a652dc423216282807aac7380fecc198" dependencies = [ "blake3 0.3.8", "clap", @@ -1482,29 +1484,17 @@ dependencies = [ [[package]] name = "pkgar" -version = "0.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "850f50a19f791c0ac7c1c8b559d36f73a652dc423216282807aac7380fecc198" +version = "0.1.16" dependencies = [ "blake3 0.3.8", "clap", "error-chain", - "pkgar-core 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "pkgar-keys 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar-core 0.1.16", + "pkgar-keys 0.1.16", "plain", "user-error", ] -[[package]] -name = "pkgar-core" -version = "0.1.15" -dependencies = [ - "bitflags 1.3.2", - "blake3 0.3.8", - "dryoc", - "plain", -] - [[package]] name = "pkgar-core" version = "0.1.15" @@ -1517,9 +1507,21 @@ dependencies = [ "plain", ] +[[package]] +name = "pkgar-core" +version = "0.1.16" +dependencies = [ + "bitflags 1.3.2", + "blake3 0.3.8", + "dryoc", + "plain", +] + [[package]] name = "pkgar-keys" version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06116ba0b805d25edf7d03670a551dbcaa8305a1695d80d0f078e43707b7999a" dependencies = [ "clap", "dirs 3.0.2", @@ -1536,16 +1538,14 @@ dependencies = [ [[package]] name = "pkgar-keys" -version = "0.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06116ba0b805d25edf7d03670a551dbcaa8305a1695d80d0f078e43707b7999a" +version = "0.1.16" dependencies = [ "clap", "dirs 3.0.2", "error-chain", "hex", "lazy_static", - "pkgar-core 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar-core 0.1.16", "seckey", "serde", "termion", @@ -1728,9 +1728,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fe401458446fceb860923c57656f112b3c082310c5d7569760efc1a92b9e22e" dependencies = [ "indicatif", - "pkgar 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "pkgar-core 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "pkgar-keys 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar 0.1.15", + "pkgar-core 0.1.15", + "pkgar-keys 0.1.15", "reqwest", "serde", "serde_derive", @@ -1754,8 +1754,8 @@ version = "0.1.0" dependencies = [ "blake3 1.5.3", "pbr", - "pkgar 0.1.15", - "pkgar-keys 0.1.15", + "pkgar 0.1.16", + "pkgar-keys 0.1.16", "redoxer", "serde", "termion", @@ -1776,9 +1776,9 @@ dependencies = [ "fscommon", "gpt", "libc", - "pkgar 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "pkgar-core 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "pkgar-keys 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar 0.1.15", + "pkgar-core 0.1.15", + "pkgar-keys 0.1.15", "rand", "redox-pkg", "redox_liner", From e3fec0dffd3fa42a37b3f29cfd2c78d056e9d39f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 29 Mar 2025 22:03:39 +0000 Subject: [PATCH 2322/3180] Add recipes --- recipes/wip/net/http/ferron/recipe.toml | 8 ++++++++ recipes/wip/science/astroterm/recipe.toml | 5 +++++ recipes/wip/terminal/pretty/recipe.toml | 8 ++++++++ recipes/wip/terminal/terminal-toys/recipe.toml | 5 +++++ recipes/wip/text/mado/recipe.toml | 5 +++++ 5 files changed, 31 insertions(+) create mode 100644 recipes/wip/net/http/ferron/recipe.toml create mode 100644 recipes/wip/science/astroterm/recipe.toml create mode 100644 recipes/wip/terminal/pretty/recipe.toml create mode 100644 recipes/wip/terminal/terminal-toys/recipe.toml create mode 100644 recipes/wip/text/mado/recipe.toml diff --git a/recipes/wip/net/http/ferron/recipe.toml b/recipes/wip/net/http/ferron/recipe.toml new file mode 100644 index 00000000..143aae51 --- /dev/null +++ b/recipes/wip/net/http/ferron/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ferronweb/ferron" +[build] +template = "custom" +script = """ +cookbook_cargo_packages ferron +""" diff --git a/recipes/wip/science/astroterm/recipe.toml b/recipes/wip/science/astroterm/recipe.toml new file mode 100644 index 00000000..a64a2fcf --- /dev/null +++ b/recipes/wip/science/astroterm/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/da-luce/astroterm" +[build] +template = "cargo" diff --git a/recipes/wip/terminal/pretty/recipe.toml b/recipes/wip/terminal/pretty/recipe.toml new file mode 100644 index 00000000..43e97c29 --- /dev/null +++ b/recipes/wip/terminal/pretty/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/rhaskia/preTTY" +[build] +template = "custom" +script = """ +cookbook_cargo_packages prettyterm_gui +""" diff --git a/recipes/wip/terminal/terminal-toys/recipe.toml b/recipes/wip/terminal/terminal-toys/recipe.toml new file mode 100644 index 00000000..cb6edbc2 --- /dev/null +++ b/recipes/wip/terminal/terminal-toys/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Seebass22/terminal-toys" +[build] +template = "cargo" diff --git a/recipes/wip/text/mado/recipe.toml b/recipes/wip/text/mado/recipe.toml new file mode 100644 index 00000000..b39f95a6 --- /dev/null +++ b/recipes/wip/text/mado/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/akiomik/mado" +[build] +template = "cargo" From 7aefde3e75a5a20b14cb20362da5f6d2d1b170c2 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 29 Mar 2025 22:35:59 +0000 Subject: [PATCH 2323/3180] Add recipes --- recipes/wip/libs/audio/boca/recipe.toml | 14 +++++++++++++ recipes/wip/libs/other/libsmooth/recipe.toml | 14 +++++++++++++ .../wip/libs/other/liburiparser/recipe.toml | 20 +++++++++++++++++++ recipes/wip/sound/freac/recipe.toml | 10 ++++++++++ 4 files changed, 58 insertions(+) create mode 100644 recipes/wip/libs/audio/boca/recipe.toml create mode 100644 recipes/wip/libs/other/libsmooth/recipe.toml create mode 100644 recipes/wip/libs/other/liburiparser/recipe.toml create mode 100644 recipes/wip/sound/freac/recipe.toml diff --git a/recipes/wip/libs/audio/boca/recipe.toml b/recipes/wip/libs/audio/boca/recipe.toml new file mode 100644 index 00000000..3e63360b --- /dev/null +++ b/recipes/wip/libs/audio/boca/recipe.toml @@ -0,0 +1,14 @@ +#TODO missing script for gnu make +# build instructions - https://github.com/enzo1982/boca/#installation +[source] +tar = "https://github.com/enzo1982/BoCA/releases/download/v1.0.7/boca-1.0.7.tar.gz" +[build] +template = "custom" +dependencies = [ + "libsmooth", + "pulseaudio", + "libcdio", + "libcdio-paranoia", + "expat", + "liburiparser", +] diff --git a/recipes/wip/libs/other/libsmooth/recipe.toml b/recipes/wip/libs/other/libsmooth/recipe.toml new file mode 100644 index 00000000..802d166d --- /dev/null +++ b/recipes/wip/libs/other/libsmooth/recipe.toml @@ -0,0 +1,14 @@ +#TODO missing script for gnu make +# build instructions - https://github.com/enzo1982/smooth/#installation +[source] +tar = "https://github.com/enzo1982/smooth/releases/download/v0.9.10/smooth-0.9.10.tar.gz" +[build] +template = "custom" +dependencies = [ + "bzip2", + "curl", + "fribidi", + "gtk3", + "libjpeg", + "libxml2", +] diff --git a/recipes/wip/libs/other/liburiparser/recipe.toml b/recipes/wip/libs/other/liburiparser/recipe.toml new file mode 100644 index 00000000..9b897d39 --- /dev/null +++ b/recipes/wip/libs/other/liburiparser/recipe.toml @@ -0,0 +1,20 @@ +#TODO not compiled or tested +[source] +tar = "https://github.com/uriparser/uriparser/releases/download/uriparser-0.9.8/uriparser-0.9.8.tar.bz2" +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/sound/freac/recipe.toml b/recipes/wip/sound/freac/recipe.toml new file mode 100644 index 00000000..535b815a --- /dev/null +++ b/recipes/wip/sound/freac/recipe.toml @@ -0,0 +1,10 @@ +#TODO missing script for gnu make +# build instructions - https://github.com/enzo1982/freac#compiling +[source] +tar = "https://github.com/enzo1982/freac/releases/download/v1.1.7/freac-1.1.7.tar.gz" +[build] +template = "custom" +dependencies = [ + "boca", + "libsmooth", +] From f605dd92693fc26ba9a18193622aa35c75847e50 Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Sun, 30 Mar 2025 16:01:24 +0200 Subject: [PATCH 2324/3180] Add rtcd driver. --- recipes/core/drivers-initfs/recipe.toml | 3 ++- recipes/core/initfs/init.rc | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/recipes/core/drivers-initfs/recipe.toml b/recipes/core/drivers-initfs/recipe.toml index eecbb7c7..c02a4b63 100644 --- a/recipes/core/drivers-initfs/recipe.toml +++ b/recipes/core/drivers-initfs/recipe.toml @@ -13,6 +13,7 @@ BINS=( nvmed pcid pcid-spawner + rtcd vesad ) @@ -63,7 +64,7 @@ export CARGO_PROFILE_RELEASE_PANIC=abort for bin in "${BINS[@]}" do case "${bin}" in - pcid | pcid-spawner | fbbootlogd | fbcond | inputd | vesad | lived | ps2d | acpid | bcm2835-sdhcid) + pcid | pcid-spawner | fbbootlogd | fbcond | inputd | vesad | lived | ps2d | acpid | bcm2835-sdhcid | rtcd) cp -v "target/${TARGET}/release/${bin}" "${COOKBOOK_STAGE}/bin" ;; *) diff --git a/recipes/core/initfs/init.rc b/recipes/core/initfs/init.rc index 668d206e..f9cade70 100644 --- a/recipes/core/initfs/init.rc +++ b/recipes/core/initfs/init.rc @@ -2,6 +2,7 @@ # that should be set for every program. export PATH /bin export RUST_BACKTRACE 1 +rtcd nulld zerod randd From 617453230054ee9b4f3bfe2017b95f8b2fb4bbf3 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sun, 30 Mar 2025 17:06:58 +0200 Subject: [PATCH 2325/3180] Unset RSDP_ADDR and RSDP_SIZE env vars once no longer necessary This avoids them leaking into the environment of every user. --- recipes/core/initfs/init.rc | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/core/initfs/init.rc b/recipes/core/initfs/init.rc index f9cade70..13c31d45 100644 --- a/recipes/core/initfs/init.rc +++ b/recipes/core/initfs/init.rc @@ -21,6 +21,7 @@ ramfs logging # Drivers run /scheme/initfs/etc/init_drivers.rc +unset RSDP_ADDR RSDP_SIZE # Mount rootfs lived From 81434cdeebb0c1332d152e1927bcd4b3f807f05e Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sun, 30 Mar 2025 17:22:50 +0200 Subject: [PATCH 2326/3180] Merge audiod into the base repo --- recipes/core/audiod/recipe.toml | 5 ----- recipes/core/base/recipe.toml | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) delete mode 100644 recipes/core/audiod/recipe.toml diff --git a/recipes/core/audiod/recipe.toml b/recipes/core/audiod/recipe.toml deleted file mode 100644 index 555fa9fa..00000000 --- a/recipes/core/audiod/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -[source] -git = "https://gitlab.redox-os.org/redox-os/audiod.git" - -[build] -template = "cargo" diff --git a/recipes/core/base/recipe.toml b/recipes/core/base/recipe.toml index f70fa6b1..206e1a8d 100644 --- a/recipes/core/base/recipe.toml +++ b/recipes/core/base/recipe.toml @@ -5,7 +5,7 @@ git = "https://gitlab.redox-os.org/redox-os/base.git" template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/usr/bin" -for package in ipcd ptyd; do +for package in audiod ipcd ptyd; do "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/${package}/Cargo.toml" \ ${build_flags} From 4ab725585748213327fced9349cedef88e0de66a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 2 Apr 2025 14:52:50 -0600 Subject: [PATCH 2327/3180] Fix cosmic-settings recipe --- recipes/tools/cosmic-settings/recipe.toml | 27 ++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/recipes/tools/cosmic-settings/recipe.toml b/recipes/tools/cosmic-settings/recipe.toml index f729fc82..38066ad5 100644 --- a/recipes/tools/cosmic-settings/recipe.toml +++ b/recipes/tools/cosmic-settings/recipe.toml @@ -6,12 +6,25 @@ branch = "master" template = "custom" dependencies = [ "gettext", + "libiconv", ] script = """ +DYNAMIC_INIT +if [[ -n "$COOKBOOK_PREFER_STATIC" ]]; then + export GETTEXT_STATIC=1 +fi export GETTEXT_DIR="${COOKBOOK_SYSROOT}" -export GETTEXT_STATIC=1 -PACKAGE_PATH="cosmic-settings" -cookbook_cargo --no-default-features +# Hack to link libiconv, which gettext-sys does not link +"${COOKBOOK_CARGO}" rustc \ + --manifest-path "${COOKBOOK_SOURCE}/cosmic-settings/Cargo.toml" \ + --release \ + --bin cosmic-settings \ + --no-default-features \ + -- \ + -L "${COOKBOOK_SYSROOT}/lib" \ + -C link-arg="-liconv" +mkdir -pv "${COOKBOOK_STAGE}/usr/bin/" +cp -v "target/${TARGET}/release/cosmic-settings" "${COOKBOOK_STAGE}/usr/bin/" #TODO: install with just? APPID="com.system76.CosmicSettings" mkdir -pv "${COOKBOOK_STAGE}/usr/share/applications/" @@ -23,3 +36,11 @@ cp -rv "${COOKBOOK_SOURCE}/resources/default_schema/" "${COOKBOOK_STAGE}/usr/sha mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" cp -rv "${COOKBOOK_SOURCE}/resources/icons/" "${COOKBOOK_STAGE}/usr/share/icons/hicolor/" """ + +[package] +shared-deps = [ + "libgcc", + "gettext", + "libiconv" +] + From f72bec0a24f0a336d65992724d97a43b92e060d7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 2 Apr 2025 15:45:03 -0600 Subject: [PATCH 2328/3180] Make sure there are no duplicate appstream entries --- repo.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/repo.sh b/repo.sh index 6d866519..11092f3b 100755 --- a/repo.sh +++ b/repo.sh @@ -91,7 +91,7 @@ done mkdir -p "$REPO" -APPSTREAM_SOURCES=() +declare -A APPSTREAM_SOURCES # Currently, we only support runtime dependencies for recipes in the new TOML # format. Runtime dependencies include both `[package.dependencies]` and @@ -119,7 +119,7 @@ do if [ -e "${COOKBOOK_STAGE}/usr/share/metainfo" ] then - APPSTREAM_SOURCES+=("${COOKBOOK_STAGE}") + APPSTREAM_SOURCES["$recipe"]="${COOKBOOK_STAGE}" fi done @@ -131,7 +131,7 @@ then APPSTREAM_PKG="$REPO/appstream.pkgar" rm -rf "${APPSTREAM_ROOT}" "${APPSTREAM_PKG}" mkdir -p "${APPSTREAM_ROOT}" - if [ -n "${APPSTREAM_SOURCES}" ] + if [ "${#APPSTREAM_SOURCES[@]}" -ne 0 ] then appstreamcli compose \ --origin=pkgar \ From 925f77c2a5e93554b24013d25be631aa7783edf2 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sun, 6 Apr 2025 20:10:41 +0200 Subject: [PATCH 2329/3180] Move logd before fbbootlogd --- recipes/core/initfs/init.rc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/recipes/core/initfs/init.rc b/recipes/core/initfs/init.rc index 13c31d45..383d7b1b 100644 --- a/recipes/core/initfs/init.rc +++ b/recipes/core/initfs/init.rc @@ -7,17 +7,19 @@ nulld zerod randd -# Logging and graphics infrastructure +# Logging +logd /scheme/debug +stdio /scheme/log +ramfs logging + +# Graphics infrastructure inputd vesad unset FRAMEBUFFER_ADDR FRAMEBUFFER_VIRT FRAMEBUFFER_WIDTH FRAMEBUFFER_HEIGHT FRAMEBUFFER_STRIDE #TODO: unset FRAMEBUFFER1 and beyond? fbbootlogd -logd /scheme/debug /scheme/fbbootlog -stdio /scheme/log inputd -A 1 fbcond 2 -ramfs logging # Drivers run /scheme/initfs/etc/init_drivers.rc From 786511885d00caa0c221bd0ebccbef1347823605 Mon Sep 17 00:00:00 2001 From: Ron Williams Date: Tue, 8 Apr 2025 10:03:53 -0700 Subject: [PATCH 2330/3180] Update commit for escalated recipe --- recipes/core/escalated/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/core/escalated/recipe.toml b/recipes/core/escalated/recipe.toml index d8a4d51e..c1c2fa2a 100644 --- a/recipes/core/escalated/recipe.toml +++ b/recipes/core/escalated/recipe.toml @@ -2,6 +2,6 @@ git = "https://gitlab.redox-os.org/redox-os/escalated.git" # Escalated is not backwards compatible wrt relibc versions, so we pin it here # so it's updated together with the other main submodules. -rev = "92eed68f" +rev = "8ffd7d3c" [build] template = "cargo" From 0b4cb3d2fce0e163b0d7ca83a4eb12ccd905e615 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 10 Apr 2025 11:01:41 -0600 Subject: [PATCH 2331/3180] sdl1: enable pthread semaphores --- recipes/libs/sdl1/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/libs/sdl1/recipe.toml b/recipes/libs/sdl1/recipe.toml index a5a07bfc..5c1d1845 100644 --- a/recipes/libs/sdl1/recipe.toml +++ b/recipes/libs/sdl1/recipe.toml @@ -9,10 +9,10 @@ dependencies = [ script = """ COOKBOOK_CONFIGURE_FLAGS+=( --disable-loadso - --disable-pthread-sem --disable-pulseaudio --disable-video-x11 --enable-clock_gettime + --enable-pthread-sem --enable-redoxaudio --enable-video-orbital ) From faf2ace1df3986f3b6815ae87bae29c93821e27d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 10 Apr 2025 13:19:20 -0600 Subject: [PATCH 2332/3180] prboom: re-enable music --- recipes/games/prboom/recipe.toml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/recipes/games/prboom/recipe.toml b/recipes/games/prboom/recipe.toml index 7fb41452..3f2f49a0 100644 --- a/recipes/games/prboom/recipe.toml +++ b/recipes/games/prboom/recipe.toml @@ -1,4 +1,3 @@ -#TODO: remove --without-mixer when it no longer crashes on x86_64 [source] tar = "https://downloads.sourceforge.net/project/prboom/prboom%20stable/2.5.0/prboom-2.5.0.tar.gz" blake3 = "24c1b9b5aa15fd73e59162055f2c6d8faa82759b76ddfca9828cd2a5c8dc6b2a" @@ -18,14 +17,13 @@ dependencies = [ "libvorbis" ] script = """ -export CFLAGS="-static" +DYNAMIC_INIT export MIXER_LIBS="-lSDL_mixer -lvorbisfile -lvorbis -logg" COOKBOOK_CONFIGURE_FLAGS+=( --disable-cpu-opt --disable-i386-asm --disable-gl --disable-sdltest - --without-mixer --without-net --with-sdl-prefix="${COOKBOOK_SYSROOT}" ac_cv_lib_SDL_mixer_Mix_OpenAudio=yes From 0df243b4cbfd98f645fbd76445cb9bac7075d06c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 10 Apr 2025 15:16:09 -0600 Subject: [PATCH 2333/3180] libffi: update and build dynamic library --- recipes/libs/libffi/recipe.toml | 39 +- recipes/libs/libffi/redox.patch | 2820 ------------------------------- 2 files changed, 33 insertions(+), 2826 deletions(-) delete mode 100644 recipes/libs/libffi/redox.patch diff --git a/recipes/libs/libffi/recipe.toml b/recipes/libs/libffi/recipe.toml index 81db1894..d8f82efd 100644 --- a/recipes/libs/libffi/recipe.toml +++ b/recipes/libs/libffi/recipe.toml @@ -1,9 +1,36 @@ [source] -tar = "https://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz" -blake3 = "a00597a8bd26304977d7c180135e91969a175a5108bd0024a03eb0636e6cb0bf" -patches = [ - "redox.patch" -] +tar = "https://github.com/libffi/libffi/releases/download/v3.4.5/libffi-3.4.5.tar.gz" +blake3 = "f9a2cfe1d2ac8d211c18c99f9cfafe5537925101bfb92c2d44d844680dd82264" +script = """ +DYNAMIC_INIT +cp ${COOKBOOK_HOST_SYSROOT}/share/aclocal/libtool.m4 ./m4/ +cp -fp ${COOKBOOK_HOST_SYSROOT}/share/libtool/build-aux/ltmain.sh ./ +cp ${COOKBOOK_HOST_SYSROOT}/share/aclocal/ltversion.m4 ./m4/ + +autotools_recursive_regenerate -I$(realpath ./m4) +""" [build] -template = "configure" +template = "custom" +script = """ +DYNAMIC_INIT +COOKBOOK_CONFIGURE_FLAGS=( + --host="${GNU_TARGET}" + --prefix="" +) +if [[ -n "$COOKBOOK_PREFER_STATIC" ]]; then + COOKBOOK_CONFIGURE_FLAGS+=( + --enable-static + --disable-shared + ) +else + COOKBOOK_CONFIGURE_FLAGS+=( + --enable-shared + --enable-static + ) +fi +cookbook_configure +""" + +[package] +shared-deps = ["libgcc"] diff --git a/recipes/libs/libffi/redox.patch b/recipes/libs/libffi/redox.patch deleted file mode 100644 index c96d3cf9..00000000 --- a/recipes/libs/libffi/redox.patch +++ /dev/null @@ -1,2820 +0,0 @@ ---- source/config.sub 2014-11-12 04:59:58.000000000 -0700 -+++ source-newconfig.sub 2020-05-20 15:41:56.000000000 -0600 -@@ -1,8 +1,8 @@ - #! /bin/sh - # Configuration validation subroutine script. --# Copyright 1992-2013 Free Software Foundation, Inc. -+# Copyright 1992-2020 Free Software Foundation, Inc. - --timestamp='2013-04-24' -+timestamp='2020-05-04' - - # This file is free software; you can redistribute it and/or modify it - # under the terms of the GNU General Public License as published by -@@ -15,7 +15,7 @@ - # General Public License for more details. - # - # You should have received a copy of the GNU General Public License --# along with this program; if not, see . -+# along with this program; if not, see . - # - # As a special exception to the GNU General Public License, if you - # distribute this file as part of a program that contains a -@@ -25,7 +25,7 @@ - # of the GNU General Public License, version 3 ("GPLv3"). - - --# Please send patches with a ChangeLog entry to config-patches@gnu.org. -+# Please send patches to . - # - # Configuration subroutine to validate and canonicalize a configuration type. - # Supply the specified configuration type as an argument. -@@ -33,7 +33,7 @@ - # Otherwise, we print the canonical config type on stdout and succeed. - - # You can get the latest version of this script from: --# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD -+# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub - - # This file is supposed to be the same for all GNU packages - # and recognize all the CPU types, system types and aliases -@@ -53,12 +53,11 @@ - me=`echo "$0" | sed -e 's,.*/,,'` - - usage="\ --Usage: $0 [OPTION] CPU-MFR-OPSYS -- $0 [OPTION] ALIAS -+Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS - - Canonicalize a configuration name. - --Operation modes: -+Options: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit -@@ -68,7 +67,7 @@ - version="\ - GNU config.sub ($timestamp) - --Copyright 1992-2013 Free Software Foundation, Inc. -+Copyright 1992-2020 Free Software Foundation, Inc. - - This is free software; see the source for copying conditions. There is NO - warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." -@@ -90,12 +89,12 @@ - - ) # Use stdin as input. - break ;; - -* ) -- echo "$me: invalid option $1$help" -+ echo "$me: invalid option $1$help" >&2 - exit 1 ;; - - *local*) - # First pass through any local machine types. -- echo $1 -+ echo "$1" - exit ;; - - * ) -@@ -111,1209 +110,1164 @@ - exit 1;; - esac - --# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). --# Here we must recognize all the valid KERNEL-OS combinations. --maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -+# Split fields of configuration type -+# shellcheck disable=SC2162 -+IFS="-" read field1 field2 field3 field4 <&2 -+ exit 1 -+ ;; -+ *-*-*-*) -+ basic_machine=$field1-$field2 -+ os=$field3-$field4 -+ ;; -+ *-*-*) -+ # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two -+ # parts -+ maybe_os=$field2-$field3 - case $maybe_os in -- nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ -- linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ -- knetbsd*-gnu* | netbsd*-gnu* | \ -- kopensolaris*-gnu* | \ -- storm-chaos* | os2-emx* | rtmk-nova*) -- os=-$maybe_os -- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` -+ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \ -+ | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \ -+ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ -+ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ -+ | storm-chaos* | os2-emx* | rtmk-nova*) -+ basic_machine=$field1 -+ os=$maybe_os - ;; - android-linux) -- os=-linux-android -- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown -+ basic_machine=$field1-unknown -+ os=linux-android - ;; - *) -- basic_machine=`echo $1 | sed 's/-[^-]*$//'` -- if [ $basic_machine != $1 ] -- then os=`echo $1 | sed 's/.*-/-/'` -- else os=; fi -+ basic_machine=$field1-$field2 -+ os=$field3 - ;; - esac -- --### Let's recognize common machines as not being operating systems so --### that things like config.sub decstation-3100 work. We also --### recognize some manufacturers as not being operating systems, so we --### can provide default operating systems below. --case $os in -- -sun*os*) -- # Prevent following clause from handling this invalid input. - ;; -- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -- -apple | -axis | -knuth | -cray | -microblaze*) -+ *-*) -+ # A lone config we happen to match not fitting any pattern -+ case $field1-$field2 in -+ decstation-3100) -+ basic_machine=mips-dec - os= -- basic_machine=$1 -- ;; -- -bluegene*) -- os=-cnk - ;; -- -sim | -cisco | -oki | -wec | -winbond) -+ *-*) -+ # Second component is usually, but not always the OS -+ case $field2 in -+ # Prevent following clause from handling this valid os -+ sun*os*) -+ basic_machine=$field1 -+ os=$field2 -+ ;; -+ # Manufacturers -+ dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ -+ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ -+ | unicom* | ibm* | next | hp | isi* | apollo | altos* \ -+ | convergent* | ncr* | news | 32* | 3600* | 3100* \ -+ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ -+ | ultra | tti* | harris | dolphin | highlevel | gould \ -+ | cbm | ns | masscomp | apple | axis | knuth | cray \ -+ | microblaze* | sim | cisco \ -+ | oki | wec | wrs | winbond) -+ basic_machine=$field1-$field2 - os= -- basic_machine=$1 -- ;; -- -scout) -- ;; -- -wrs) -- os=-vxworks -- basic_machine=$1 -- ;; -- -chorusos*) -- os=-chorusos -- basic_machine=$1 -- ;; -- -chorusrdb) -- os=-chorusrdb -- basic_machine=$1 -- ;; -- -hiux*) -- os=-hiuxwe2 -- ;; -- -sco6) -- os=-sco5v6 -- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -- ;; -- -sco5) -- os=-sco3.2v5 -- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -- ;; -- -sco4) -- os=-sco3.2v4 -- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; -- -sco3.2.[4-9]*) -- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` -- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -- ;; -- -sco3.2v[4-9]*) -- # Don't forget version if it is 3.2v4 or newer. -- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -- ;; -- -sco5v6*) -- # Don't forget version if it is 3.2v4 or newer. -- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -- ;; -- -sco*) -- os=-sco3.2v2 -- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -- ;; -- -udk*) -- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -- ;; -- -isc) -- os=-isc2.2 -- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -- ;; -- -clix*) -- basic_machine=clipper-intergraph -- ;; -- -isc*) -- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -- ;; -- -lynx*178) -- os=-lynxos178 -- ;; -- -lynx*5) -- os=-lynxos5 -- ;; -- -lynx*) -- os=-lynxos -- ;; -- -ptx*) -- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` -- ;; -- -windowsnt*) -- os=`echo $os | sed -e 's/windowsnt/winnt/'` -- ;; -- -psos*) -- os=-psos -- ;; -- -mint | -mint[0-9]*) -- basic_machine=m68k-atari -- os=-mint -+ *) -+ basic_machine=$field1 -+ os=$field2 - ;; - esac -- --# Decode aliases for certain CPU-COMPANY combinations. --case $basic_machine in -- # Recognize the basic CPU types without company name. -- # Some are omitted here because they have special meanings below. -- 1750a | 580 \ -- | a29k \ -- | aarch64 | aarch64_be \ -- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ -- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ -- | am33_2.0 \ -- | arc | arceb \ -- | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ -- | avr | avr32 \ -- | be32 | be64 \ -- | bfin \ -- | c4x | clipper \ -- | d10v | d30v | dlx | dsp16xx \ -- | epiphany \ -- | fido | fr30 | frv \ -- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ -- | hexagon \ -- | i370 | i860 | i960 | ia64 \ -- | ip2k | iq2000 \ -- | le32 | le64 \ -- | lm32 \ -- | m32c | m32r | m32rle | m68000 | m68k | m88k \ -- | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ -- | mips | mipsbe | mipseb | mipsel | mipsle \ -- | mips16 \ -- | mips64 | mips64el \ -- | mips64octeon | mips64octeonel \ -- | mips64orion | mips64orionel \ -- | mips64r5900 | mips64r5900el \ -- | mips64vr | mips64vrel \ -- | mips64vr4100 | mips64vr4100el \ -- | mips64vr4300 | mips64vr4300el \ -- | mips64vr5000 | mips64vr5000el \ -- | mips64vr5900 | mips64vr5900el \ -- | mipsisa32 | mipsisa32el \ -- | mipsisa32r2 | mipsisa32r2el \ -- | mipsisa64 | mipsisa64el \ -- | mipsisa64r2 | mipsisa64r2el \ -- | mipsisa64sb1 | mipsisa64sb1el \ -- | mipsisa64sr71k | mipsisa64sr71kel \ -- | mipsr5900 | mipsr5900el \ -- | mipstx39 | mipstx39el \ -- | mn10200 | mn10300 \ -- | moxie \ -- | mt \ -- | msp430 \ -- | nds32 | nds32le | nds32be \ -- | nios | nios2 | nios2eb | nios2el \ -- | ns16k | ns32k \ -- | open8 \ -- | or1k | or32 \ -- | pdp10 | pdp11 | pj | pjl \ -- | powerpc | powerpc64 | powerpc64le | powerpcle \ -- | pyramid \ -- | rl78 | rx \ -- | score \ -- | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ -- | sh64 | sh64le \ -- | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ -- | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ -- | spu \ -- | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ -- | ubicom32 \ -- | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ -- | we32k \ -- | x86 | xc16x | xstormy16 | xtensa \ -- | z8k | z80) -- basic_machine=$basic_machine-unknown -- ;; -- c54x) -- basic_machine=tic54x-unknown -- ;; -- c55x) -- basic_machine=tic55x-unknown -- ;; -- c6x) -- basic_machine=tic6x-unknown -- ;; -- m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) -- basic_machine=$basic_machine-unknown -- os=-none -- ;; -- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) -- ;; -- ms1) -- basic_machine=mt-unknown -- ;; -- -- strongarm | thumb | xscale) -- basic_machine=arm-unknown -- ;; -- xgate) -- basic_machine=$basic_machine-unknown -- os=-none -- ;; -- xscaleeb) -- basic_machine=armeb-unknown -- ;; -- -- xscaleel) -- basic_machine=armel-unknown -- ;; -- -- # We use `pc' rather than `unknown' -- # because (1) that's what they normally are, and -- # (2) the word "unknown" tends to confuse beginning users. -- i*86 | x86_64) -- basic_machine=$basic_machine-pc - ;; -- # Object if more than one company name word. -- *-*-*) -- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 -- exit 1 -- ;; -- # Recognize the basic CPU types with company name. -- 580-* \ -- | a29k-* \ -- | aarch64-* | aarch64_be-* \ -- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ -- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ -- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ -- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ -- | avr-* | avr32-* \ -- | be32-* | be64-* \ -- | bfin-* | bs2000-* \ -- | c[123]* | c30-* | [cjt]90-* | c4x-* \ -- | clipper-* | craynv-* | cydra-* \ -- | d10v-* | d30v-* | dlx-* \ -- | elxsi-* \ -- | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ -- | h8300-* | h8500-* \ -- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ -- | hexagon-* \ -- | i*86-* | i860-* | i960-* | ia64-* \ -- | ip2k-* | iq2000-* \ -- | le32-* | le64-* \ -- | lm32-* \ -- | m32c-* | m32r-* | m32rle-* \ -- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ -- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ -- | microblaze-* | microblazeel-* \ -- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ -- | mips16-* \ -- | mips64-* | mips64el-* \ -- | mips64octeon-* | mips64octeonel-* \ -- | mips64orion-* | mips64orionel-* \ -- | mips64r5900-* | mips64r5900el-* \ -- | mips64vr-* | mips64vrel-* \ -- | mips64vr4100-* | mips64vr4100el-* \ -- | mips64vr4300-* | mips64vr4300el-* \ -- | mips64vr5000-* | mips64vr5000el-* \ -- | mips64vr5900-* | mips64vr5900el-* \ -- | mipsisa32-* | mipsisa32el-* \ -- | mipsisa32r2-* | mipsisa32r2el-* \ -- | mipsisa64-* | mipsisa64el-* \ -- | mipsisa64r2-* | mipsisa64r2el-* \ -- | mipsisa64sb1-* | mipsisa64sb1el-* \ -- | mipsisa64sr71k-* | mipsisa64sr71kel-* \ -- | mipsr5900-* | mipsr5900el-* \ -- | mipstx39-* | mipstx39el-* \ -- | mmix-* \ -- | mt-* \ -- | msp430-* \ -- | nds32-* | nds32le-* | nds32be-* \ -- | nios-* | nios2-* | nios2eb-* | nios2el-* \ -- | none-* | np1-* | ns16k-* | ns32k-* \ -- | open8-* \ -- | orion-* \ -- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ -- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ -- | pyramid-* \ -- | rl78-* | romp-* | rs6000-* | rx-* \ -- | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ -- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ -- | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ -- | sparclite-* \ -- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ -- | tahoe-* \ -- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ -- | tile*-* \ -- | tron-* \ -- | ubicom32-* \ -- | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ -- | vax-* \ -- | we32k-* \ -- | x86-* | x86_64-* | xc16x-* | xps100-* \ -- | xstormy16-* | xtensa*-* \ -- | ymp-* \ -- | z8k-* | z80-*) -- ;; -- # Recognize the basic CPU types without company name, with glob match. -- xtensa*) -- basic_machine=$basic_machine-unknown -+ esac - ;; -- # Recognize the various machine names and aliases which stand -- # for a CPU type and a company and sometimes even an OS. -+ *) -+ # Convert single-component short-hands not valid as part of -+ # multi-component configurations. -+ case $field1 in - 386bsd) -- basic_machine=i386-unknown -- os=-bsd -- ;; -- 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) -- basic_machine=m68000-att -- ;; -- 3b*) -- basic_machine=we32k-att -+ basic_machine=i386-pc -+ os=bsd - ;; - a29khif) - basic_machine=a29k-amd -- os=-udi -- ;; -- abacus) -- basic_machine=abacus-unknown -+ os=udi - ;; - adobe68k) - basic_machine=m68010-adobe -- os=-scout -+ os=scout - ;; -- alliant | fx80) -+ alliant) - basic_machine=fx80-alliant -+ os= - ;; - altos | altos3068) - basic_machine=m68k-altos -+ os= - ;; - am29k) - basic_machine=a29k-none -- os=-bsd -- ;; -- amd64) -- basic_machine=x86_64-pc -- ;; -- amd64-*) -- basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` -+ os=bsd - ;; - amdahl) - basic_machine=580-amdahl -- os=-sysv -+ os=sysv - ;; -- amiga | amiga-*) -+ amiga) - basic_machine=m68k-unknown -+ os= - ;; - amigaos | amigados) - basic_machine=m68k-unknown -- os=-amigaos -+ os=amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown -- os=-sysv4 -+ os=sysv4 - ;; - apollo68) - basic_machine=m68k-apollo -- os=-sysv -+ os=sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo -- os=-bsd -+ os=bsd - ;; - aros) - basic_machine=i386-pc -- os=-aros -+ os=aros - ;; - aux) - basic_machine=m68k-apple -- os=-aux -+ os=aux - ;; - balance) - basic_machine=ns32k-sequent -- os=-dynix -+ os=dynix - ;; - blackfin) - basic_machine=bfin-unknown -- os=-linux -- ;; -- blackfin-*) -- basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` -- os=-linux -- ;; -- bluegene*) -- basic_machine=powerpc-ibm -- os=-cnk -- ;; -- c54x-*) -- basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` -- ;; -- c55x-*) -- basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` -- ;; -- c6x-*) -- basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` -- ;; -- c90) -- basic_machine=c90-cray -- os=-unicos -+ os=linux - ;; - cegcc) - basic_machine=arm-unknown -- os=-cegcc -+ os=cegcc - ;; - convex-c1) - basic_machine=c1-convex -- os=-bsd -+ os=bsd - ;; - convex-c2) - basic_machine=c2-convex -- os=-bsd -+ os=bsd - ;; - convex-c32) - basic_machine=c32-convex -- os=-bsd -+ os=bsd - ;; - convex-c34) - basic_machine=c34-convex -- os=-bsd -+ os=bsd - ;; - convex-c38) - basic_machine=c38-convex -- os=-bsd -+ os=bsd - ;; -- cray | j90) -+ cray) - basic_machine=j90-cray -- os=-unicos -- ;; -- craynv) -- basic_machine=craynv-cray -- os=-unicosmp -- ;; -- cr16 | cr16-*) -- basic_machine=cr16-unknown -- os=-elf -+ os=unicos - ;; - crds | unos) - basic_machine=m68k-crds -+ os= - ;; -- crisv32 | crisv32-* | etraxfs*) -- basic_machine=crisv32-axis -- ;; -- cris | cris-* | etrax*) -- basic_machine=cris-axis -- ;; -- crx) -- basic_machine=crx-unknown -- os=-elf -- ;; -- da30 | da30-*) -+ da30) - basic_machine=m68k-da30 -+ os= - ;; -- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) -+ decstation | pmax | pmin | dec3100 | decstatn) - basic_machine=mips-dec -- ;; -- decsystem10* | dec10*) -- basic_machine=pdp10-dec -- os=-tops10 -- ;; -- decsystem20* | dec20*) -- basic_machine=pdp10-dec -- os=-tops20 -- ;; -- delta | 3300 | motorola-3300 | motorola-delta \ -- | 3300-motorola | delta-motorola) -- basic_machine=m68k-motorola -+ os= - ;; - delta88) - basic_machine=m88k-motorola -- os=-sysv3 -+ os=sysv3 - ;; - dicos) - basic_machine=i686-pc -- os=-dicos -+ os=dicos - ;; - djgpp) - basic_machine=i586-pc -- os=-msdosdjgpp -- ;; -- dpx20 | dpx20-*) -- basic_machine=rs6000-bull -- os=-bosx -- ;; -- dpx2* | dpx2*-bull) -- basic_machine=m68k-bull -- os=-sysv3 -+ os=msdosdjgpp - ;; - ebmon29k) - basic_machine=a29k-amd -- os=-ebmon -- ;; -- elxsi) -- basic_machine=elxsi-elxsi -- os=-bsd -- ;; -- encore | umax | mmax) -- basic_machine=ns32k-encore -+ os=ebmon - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson -- os=-ose -- ;; -- fx2800) -- basic_machine=i860-alliant -- ;; -- genix) -- basic_machine=ns32k-ns -+ os=ose - ;; - gmicro) - basic_machine=tron-gmicro -- os=-sysv -+ os=sysv - ;; - go32) - basic_machine=i386-pc -- os=-go32 -- ;; -- h3050r* | hiux*) -- basic_machine=hppa1.1-hitachi -- os=-hiuxwe2 -+ os=go32 - ;; - h8300hms) - basic_machine=h8300-hitachi -- os=-hms -+ os=hms - ;; - h8300xray) - basic_machine=h8300-hitachi -- os=-xray -+ os=xray - ;; - h8500hms) - basic_machine=h8500-hitachi -- os=-hms -+ os=hms - ;; - harris) - basic_machine=m88k-harris -- os=-sysv3 -+ os=sysv3 - ;; -- hp300-*) -+ hp300 | hp300hpux) - basic_machine=m68k-hp -+ os=hpux - ;; - hp300bsd) - basic_machine=m68k-hp -- os=-bsd -- ;; -- hp300hpux) -- basic_machine=m68k-hp -- os=-hpux -- ;; -- hp3k9[0-9][0-9] | hp9[0-9][0-9]) -- basic_machine=hppa1.0-hp -- ;; -- hp9k2[0-9][0-9] | hp9k31[0-9]) -- basic_machine=m68000-hp -- ;; -- hp9k3[2-9][0-9]) -- basic_machine=m68k-hp -- ;; -- hp9k6[0-9][0-9] | hp6[0-9][0-9]) -- basic_machine=hppa1.0-hp -- ;; -- hp9k7[0-79][0-9] | hp7[0-79][0-9]) -- basic_machine=hppa1.1-hp -- ;; -- hp9k78[0-9] | hp78[0-9]) -- # FIXME: really hppa2.0-hp -- basic_machine=hppa1.1-hp -- ;; -- hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) -- # FIXME: really hppa2.0-hp -- basic_machine=hppa1.1-hp -- ;; -- hp9k8[0-9][13679] | hp8[0-9][13679]) -- basic_machine=hppa1.1-hp -- ;; -- hp9k8[0-9][0-9] | hp8[0-9][0-9]) -- basic_machine=hppa1.0-hp -- ;; -- hppa-next) -- os=-nextstep3 -+ os=bsd - ;; - hppaosf) - basic_machine=hppa1.1-hp -- os=-osf -+ os=osf - ;; - hppro) - basic_machine=hppa1.1-hp -- os=-proelf -- ;; -- i370-ibm* | ibm*) -- basic_machine=i370-ibm -- ;; -- i*86v32) -- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` -- os=-sysv32 -- ;; -- i*86v4*) -- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` -- os=-sysv4 -- ;; -- i*86v) -- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` -- os=-sysv -- ;; -- i*86sol2) -- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` -- os=-solaris2 -+ os=proelf - ;; - i386mach) - basic_machine=i386-mach -- os=-mach -- ;; -- i386-vsta | vsta) -- basic_machine=i386-unknown -- os=-vsta -- ;; -- iris | iris4d) -- basic_machine=mips-sgi -- case $os in -- -irix*) -- ;; -- *) -- os=-irix4 -- ;; -- esac -+ os=mach - ;; - isi68 | isi) - basic_machine=m68k-isi -- os=-sysv -+ os=sysv - ;; - m68knommu) - basic_machine=m68k-unknown -- os=-linux -- ;; -- m68knommu-*) -- basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` -- os=-linux -- ;; -- m88k-omron*) -- basic_machine=m88k-omron -+ os=linux - ;; - magnum | m3230) - basic_machine=mips-mips -- os=-sysv -+ os=sysv - ;; - merlin) - basic_machine=ns32k-utek -- os=-sysv -- ;; -- microblaze*) -- basic_machine=microblaze-xilinx -+ os=sysv - ;; - mingw64) - basic_machine=x86_64-pc -- os=-mingw64 -+ os=mingw64 - ;; - mingw32) -- basic_machine=i386-pc -- os=-mingw32 -+ basic_machine=i686-pc -+ os=mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown -- os=-mingw32ce -- ;; -- miniframe) -- basic_machine=m68000-convergent -- ;; -- *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) -- basic_machine=m68k-atari -- os=-mint -- ;; -- mips3*-*) -- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` -- ;; -- mips3*) -- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown -+ os=mingw32ce - ;; - monitor) - basic_machine=m68k-rom68k -- os=-coff -+ os=coff - ;; - morphos) - basic_machine=powerpc-unknown -- os=-morphos -+ os=morphos -+ ;; -+ moxiebox) -+ basic_machine=moxie-unknown -+ os=moxiebox - ;; - msdos) - basic_machine=i386-pc -- os=-msdos -- ;; -- ms1-*) -- basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` -+ os=msdos - ;; - msys) -- basic_machine=i386-pc -- os=-msys -+ basic_machine=i686-pc -+ os=msys - ;; - mvs) - basic_machine=i370-ibm -- os=-mvs -+ os=mvs - ;; - nacl) - basic_machine=le32-unknown -- os=-nacl -+ os=nacl - ;; - ncr3000) - basic_machine=i486-ncr -- os=-sysv4 -+ os=sysv4 - ;; - netbsd386) -- basic_machine=i386-unknown -- os=-netbsd -+ basic_machine=i386-pc -+ os=netbsd - ;; - netwinder) - basic_machine=armv4l-rebel -- os=-linux -+ os=linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony -- os=-newsos -+ os=newsos - ;; - news1000) - basic_machine=m68030-sony -- os=-newsos -- ;; -- news-3600 | risc-news) -- basic_machine=mips-sony -- os=-newsos -+ os=newsos - ;; - necv70) - basic_machine=v70-nec -- os=-sysv -- ;; -- next | m*-next ) -- basic_machine=m68k-next -- case $os in -- -nextstep* ) -- ;; -- -ns2*) -- os=-nextstep2 -- ;; -- *) -- os=-nextstep3 -- ;; -- esac -+ os=sysv - ;; - nh3000) - basic_machine=m68k-harris -- os=-cxux -+ os=cxux - ;; - nh[45]000) - basic_machine=m88k-harris -- os=-cxux -+ os=cxux - ;; - nindy960) - basic_machine=i960-intel -- os=-nindy -+ os=nindy - ;; - mon960) - basic_machine=i960-intel -- os=-mon960 -+ os=mon960 - ;; - nonstopux) - basic_machine=mips-compaq -- os=-nonstopux -- ;; -- np1) -- basic_machine=np1-gould -- ;; -- neo-tandem) -- basic_machine=neo-tandem -- ;; -- nse-tandem) -- basic_machine=nse-tandem -- ;; -- nsr-tandem) -- basic_machine=nsr-tandem -- ;; -- op50n-* | op60c-*) -- basic_machine=hppa1.1-oki -- os=-proelf -- ;; -- openrisc | openrisc-*) -- basic_machine=or32-unknown -+ os=nonstopux - ;; - os400) - basic_machine=powerpc-ibm -- os=-os400 -+ os=os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson -- os=-ose -+ os=ose - ;; - os68k) - basic_machine=m68k-none -- os=-os68k -- ;; -- pa-hitachi) -- basic_machine=hppa1.1-hitachi -- os=-hiuxwe2 -+ os=os68k - ;; - paragon) - basic_machine=i860-intel -- os=-osf -+ os=osf - ;; - parisc) - basic_machine=hppa-unknown -- os=-linux -- ;; -- parisc-*) -- basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` -- os=-linux -- ;; -- pbd) -- basic_machine=sparc-tti -- ;; -- pbb) -- basic_machine=m68k-tti -- ;; -- pc532 | pc532-*) -- basic_machine=ns32k-pc532 -- ;; -- pc98) -- basic_machine=i386-pc -- ;; -- pc98-*) -- basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` -- ;; -- pentium | p5 | k5 | k6 | nexgen | viac3) -- basic_machine=i586-pc -- ;; -- pentiumpro | p6 | 6x86 | athlon | athlon_*) -- basic_machine=i686-pc -- ;; -- pentiumii | pentium2 | pentiumiii | pentium3) -- basic_machine=i686-pc -- ;; -- pentium4) -- basic_machine=i786-pc -- ;; -- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) -- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` -- ;; -- pentiumpro-* | p6-* | 6x86-* | athlon-*) -- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` -- ;; -- pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) -- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` -- ;; -- pentium4-*) -- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` -- ;; -- pn) -- basic_machine=pn-gould -- ;; -- power) basic_machine=power-ibm -- ;; -- ppc | ppcbe) basic_machine=powerpc-unknown -- ;; -- ppc-* | ppcbe-*) -- basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` -- ;; -- ppcle | powerpclittle | ppc-le | powerpc-little) -- basic_machine=powerpcle-unknown -- ;; -- ppcle-* | powerpclittle-*) -- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` -- ;; -- ppc64) basic_machine=powerpc64-unknown -- ;; -- ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` -- ;; -- ppc64le | powerpc64little | ppc64-le | powerpc64-little) -- basic_machine=powerpc64le-unknown -- ;; -- ppc64le-* | powerpc64little-*) -- basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` -- ;; -- ps2) -- basic_machine=i386-ibm -+ os=linux - ;; - pw32) - basic_machine=i586-unknown -- os=-pw32 -+ os=pw32 - ;; - rdos | rdos64) - basic_machine=x86_64-pc -- os=-rdos -+ os=rdos - ;; - rdos32) - basic_machine=i386-pc -- os=-rdos -+ os=rdos - ;; - rom68k) - basic_machine=m68k-rom68k -- os=-coff -- ;; -- rm[46]00) -- basic_machine=mips-siemens -- ;; -- rtpc | rtpc-*) -- basic_machine=romp-ibm -- ;; -- s390 | s390-*) -- basic_machine=s390-ibm -- ;; -- s390x | s390x-*) -- basic_machine=s390x-ibm -+ os=coff - ;; - sa29200) - basic_machine=a29k-amd -- os=-udi -- ;; -- sb1) -- basic_machine=mipsisa64sb1-unknown -- ;; -- sb1el) -- basic_machine=mipsisa64sb1el-unknown -- ;; -- sde) -- basic_machine=mipsisa32-sde -- os=-elf -+ os=udi - ;; - sei) - basic_machine=mips-sei -- os=-seiux -+ os=seiux - ;; - sequent) - basic_machine=i386-sequent -- ;; -- sh) -- basic_machine=sh-hitachi -- os=-hms -- ;; -- sh5el) -- basic_machine=sh5le-unknown -- ;; -- sh64) -- basic_machine=sh64-unknown -- ;; -- sparclite-wrs | simso-wrs) -- basic_machine=sparclite-wrs -- os=-vxworks -+ os= - ;; - sps7) - basic_machine=m68k-bull -- os=-sysv2 -- ;; -- spur) -- basic_machine=spur-unknown -+ os=sysv2 - ;; - st2000) - basic_machine=m68k-tandem -+ os= - ;; - stratus) - basic_machine=i860-stratus -- os=-sysv4 -- ;; -- strongarm-* | thumb-*) -- basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` -+ os=sysv4 - ;; - sun2) - basic_machine=m68000-sun -+ os= - ;; - sun2os3) - basic_machine=m68000-sun -- os=-sunos3 -+ os=sunos3 - ;; - sun2os4) - basic_machine=m68000-sun -- os=-sunos4 -+ os=sunos4 -+ ;; -+ sun3) -+ basic_machine=m68k-sun -+ os= - ;; - sun3os3) - basic_machine=m68k-sun -- os=-sunos3 -+ os=sunos3 - ;; - sun3os4) - basic_machine=m68k-sun -- os=-sunos4 -+ os=sunos4 -+ ;; -+ sun4) -+ basic_machine=sparc-sun -+ os= - ;; - sun4os3) - basic_machine=sparc-sun -- os=-sunos3 -+ os=sunos3 - ;; - sun4os4) - basic_machine=sparc-sun -- os=-sunos4 -+ os=sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun -- os=-solaris2 -- ;; -- sun3 | sun3-*) -- basic_machine=m68k-sun -- ;; -- sun4) -- basic_machine=sparc-sun -+ os=solaris2 - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun -+ os= - ;; - sv1) - basic_machine=sv1-cray -- os=-unicos -+ os=unicos - ;; - symmetry) - basic_machine=i386-sequent -- os=-dynix -+ os=dynix - ;; - t3e) - basic_machine=alphaev5-cray -- os=-unicos -+ os=unicos - ;; - t90) - basic_machine=t90-cray -- os=-unicos -- ;; -- tile*) -- basic_machine=$basic_machine-unknown -- os=-linux-gnu -- ;; -- tx39) -- basic_machine=mipstx39-unknown -- ;; -- tx39el) -- basic_machine=mipstx39el-unknown -+ os=unicos - ;; - toad1) - basic_machine=pdp10-xkl -- os=-tops20 -- ;; -- tower | tower-32) -- basic_machine=m68k-ncr -+ os=tops20 - ;; - tpf) - basic_machine=s390x-ibm -- os=-tpf -+ os=tpf - ;; - udi29k) - basic_machine=a29k-amd -- os=-udi -+ os=udi - ;; - ultra3) - basic_machine=a29k-nyu -- os=-sym1 -+ os=sym1 - ;; - v810 | necv810) - basic_machine=v810-nec -- os=-none -+ os=none - ;; - vaxv) - basic_machine=vax-dec -- os=-sysv -+ os=sysv - ;; - vms) - basic_machine=vax-dec -- os=-vms -+ os=vms - ;; -- vpp*|vx|vx-*) -- basic_machine=f301-fujitsu -+ vsta) -+ basic_machine=i386-pc -+ os=vsta - ;; - vxworks960) - basic_machine=i960-wrs -- os=-vxworks -+ os=vxworks - ;; - vxworks68) - basic_machine=m68k-wrs -- os=-vxworks -+ os=vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs -- os=-vxworks -- ;; -- w65*) -- basic_machine=w65-wdc -- os=-none -- ;; -- w89k-*) -- basic_machine=hppa1.1-winbond -- os=-proelf -+ os=vxworks - ;; - xbox) - basic_machine=i686-pc -- os=-mingw32 -- ;; -- xps | xps100) -- basic_machine=xps100-honeywell -- ;; -- xscale-* | xscalee[bl]-*) -- basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` -+ os=mingw32 - ;; - ymp) - basic_machine=ymp-cray -- os=-unicos -+ os=unicos - ;; -- z8k-*-coff) -- basic_machine=z8k-unknown -- os=-sim -- ;; -- z80-*-coff) -- basic_machine=z80-unknown -- os=-sim -+ *) -+ basic_machine=$1 -+ os= - ;; -- none) -- basic_machine=none-none -- os=-none -+ esac - ;; -+esac - -+# Decode 1-component or ad-hoc basic machines -+case $basic_machine in - # Here we handle the default manufacturer of certain CPU types. It is in - # some cases the only manufacturer, in others, it is the most popular. - w89k) -- basic_machine=hppa1.1-winbond -+ cpu=hppa1.1 -+ vendor=winbond - ;; - op50n) -- basic_machine=hppa1.1-oki -+ cpu=hppa1.1 -+ vendor=oki - ;; - op60c) -- basic_machine=hppa1.1-oki -+ cpu=hppa1.1 -+ vendor=oki - ;; -- romp) -- basic_machine=romp-ibm -+ ibm*) -+ cpu=i370 -+ vendor=ibm - ;; -- mmix) -- basic_machine=mmix-knuth -+ orion105) -+ cpu=clipper -+ vendor=highlevel - ;; -- rs6000) -- basic_machine=rs6000-ibm -+ mac | mpw | mac-mpw) -+ cpu=m68k -+ vendor=apple - ;; -- vax) -- basic_machine=vax-dec -+ pmac | pmac-mpw) -+ cpu=powerpc -+ vendor=apple - ;; -- pdp10) -- # there are many clones, so DEC is not a safe bet -- basic_machine=pdp10-unknown -+ -+ # Recognize the various machine names and aliases which stand -+ # for a CPU type and a company and sometimes even an OS. -+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) -+ cpu=m68000 -+ vendor=att - ;; -- pdp11) -- basic_machine=pdp11-dec -+ 3b*) -+ cpu=we32k -+ vendor=att - ;; -- we32k) -- basic_machine=we32k-att -+ bluegene*) -+ cpu=powerpc -+ vendor=ibm -+ os=cnk - ;; -- sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) -- basic_machine=sh-unknown -+ decsystem10* | dec10*) -+ cpu=pdp10 -+ vendor=dec -+ os=tops10 - ;; -- sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) -- basic_machine=sparc-sun -+ decsystem20* | dec20*) -+ cpu=pdp10 -+ vendor=dec -+ os=tops20 - ;; -- cydra) -- basic_machine=cydra-cydrome -+ delta | 3300 | motorola-3300 | motorola-delta \ -+ | 3300-motorola | delta-motorola) -+ cpu=m68k -+ vendor=motorola - ;; -- orion) -- basic_machine=orion-highlevel -+ dpx2*) -+ cpu=m68k -+ vendor=bull -+ os=sysv3 - ;; -- orion105) -- basic_machine=clipper-highlevel -+ encore | umax | mmax) -+ cpu=ns32k -+ vendor=encore - ;; -- mac | mpw | mac-mpw) -- basic_machine=m68k-apple -+ elxsi) -+ cpu=elxsi -+ vendor=elxsi -+ os=${os:-bsd} - ;; -- pmac | pmac-mpw) -- basic_machine=powerpc-apple -+ fx2800) -+ cpu=i860 -+ vendor=alliant -+ ;; -+ genix) -+ cpu=ns32k -+ vendor=ns -+ ;; -+ h3050r* | hiux*) -+ cpu=hppa1.1 -+ vendor=hitachi -+ os=hiuxwe2 -+ ;; -+ hp3k9[0-9][0-9] | hp9[0-9][0-9]) -+ cpu=hppa1.0 -+ vendor=hp -+ ;; -+ hp9k2[0-9][0-9] | hp9k31[0-9]) -+ cpu=m68000 -+ vendor=hp -+ ;; -+ hp9k3[2-9][0-9]) -+ cpu=m68k -+ vendor=hp -+ ;; -+ hp9k6[0-9][0-9] | hp6[0-9][0-9]) -+ cpu=hppa1.0 -+ vendor=hp -+ ;; -+ hp9k7[0-79][0-9] | hp7[0-79][0-9]) -+ cpu=hppa1.1 -+ vendor=hp -+ ;; -+ hp9k78[0-9] | hp78[0-9]) -+ # FIXME: really hppa2.0-hp -+ cpu=hppa1.1 -+ vendor=hp -+ ;; -+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) -+ # FIXME: really hppa2.0-hp -+ cpu=hppa1.1 -+ vendor=hp -+ ;; -+ hp9k8[0-9][13679] | hp8[0-9][13679]) -+ cpu=hppa1.1 -+ vendor=hp -+ ;; -+ hp9k8[0-9][0-9] | hp8[0-9][0-9]) -+ cpu=hppa1.0 -+ vendor=hp -+ ;; -+ i*86v32) -+ cpu=`echo "$1" | sed -e 's/86.*/86/'` -+ vendor=pc -+ os=sysv32 -+ ;; -+ i*86v4*) -+ cpu=`echo "$1" | sed -e 's/86.*/86/'` -+ vendor=pc -+ os=sysv4 -+ ;; -+ i*86v) -+ cpu=`echo "$1" | sed -e 's/86.*/86/'` -+ vendor=pc -+ os=sysv -+ ;; -+ i*86sol2) -+ cpu=`echo "$1" | sed -e 's/86.*/86/'` -+ vendor=pc -+ os=solaris2 -+ ;; -+ j90 | j90-cray) -+ cpu=j90 -+ vendor=cray -+ os=${os:-unicos} -+ ;; -+ iris | iris4d) -+ cpu=mips -+ vendor=sgi -+ case $os in -+ irix*) -+ ;; -+ *) -+ os=irix4 -+ ;; -+ esac -+ ;; -+ miniframe) -+ cpu=m68000 -+ vendor=convergent -+ ;; -+ *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) -+ cpu=m68k -+ vendor=atari -+ os=mint -+ ;; -+ news-3600 | risc-news) -+ cpu=mips -+ vendor=sony -+ os=newsos -+ ;; -+ next | m*-next) -+ cpu=m68k -+ vendor=next -+ case $os in -+ openstep*) -+ ;; -+ nextstep*) -+ ;; -+ ns2*) -+ os=nextstep2 -+ ;; -+ *) -+ os=nextstep3 -+ ;; -+ esac -+ ;; -+ np1) -+ cpu=np1 -+ vendor=gould -+ ;; -+ op50n-* | op60c-*) -+ cpu=hppa1.1 -+ vendor=oki -+ os=proelf -+ ;; -+ pa-hitachi) -+ cpu=hppa1.1 -+ vendor=hitachi -+ os=hiuxwe2 -+ ;; -+ pbd) -+ cpu=sparc -+ vendor=tti -+ ;; -+ pbb) -+ cpu=m68k -+ vendor=tti -+ ;; -+ pc532) -+ cpu=ns32k -+ vendor=pc532 -+ ;; -+ pn) -+ cpu=pn -+ vendor=gould -+ ;; -+ power) -+ cpu=power -+ vendor=ibm -+ ;; -+ ps2) -+ cpu=i386 -+ vendor=ibm -+ ;; -+ rm[46]00) -+ cpu=mips -+ vendor=siemens -+ ;; -+ rtpc | rtpc-*) -+ cpu=romp -+ vendor=ibm -+ ;; -+ sde) -+ cpu=mipsisa32 -+ vendor=sde -+ os=${os:-elf} -+ ;; -+ simso-wrs) -+ cpu=sparclite -+ vendor=wrs -+ os=vxworks -+ ;; -+ tower | tower-32) -+ cpu=m68k -+ vendor=ncr -+ ;; -+ vpp*|vx|vx-*) -+ cpu=f301 -+ vendor=fujitsu -+ ;; -+ w65) -+ cpu=w65 -+ vendor=wdc -+ ;; -+ w89k-*) -+ cpu=hppa1.1 -+ vendor=winbond -+ os=proelf -+ ;; -+ none) -+ cpu=none -+ vendor=none -+ ;; -+ leon|leon[3-9]) -+ cpu=sparc -+ vendor=$basic_machine -+ ;; -+ leon-*|leon[3-9]-*) -+ cpu=sparc -+ vendor=`echo "$basic_machine" | sed 's/-.*//'` -+ ;; -+ -+ *-*) -+ # shellcheck disable=SC2162 -+ IFS="-" read cpu vendor <&2 -+ # Recognize the canonical CPU types that are allowed with any -+ # company name. -+ case $cpu in -+ 1750a | 580 \ -+ | a29k \ -+ | aarch64 | aarch64_be \ -+ | abacus \ -+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ -+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ -+ | alphapca5[67] | alpha64pca5[67] \ -+ | am33_2.0 \ -+ | amdgcn \ -+ | arc | arceb \ -+ | arm | arm[lb]e | arme[lb] | armv* \ -+ | avr | avr32 \ -+ | asmjs \ -+ | ba \ -+ | be32 | be64 \ -+ | bfin | bpf | bs2000 \ -+ | c[123]* | c30 | [cjt]90 | c4x \ -+ | c8051 | clipper | craynv | csky | cydra \ -+ | d10v | d30v | dlx | dsp16xx \ -+ | e2k | elxsi | epiphany \ -+ | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ -+ | h8300 | h8500 \ -+ | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ -+ | hexagon \ -+ | i370 | i*86 | i860 | i960 | ia16 | ia64 \ -+ | ip2k | iq2000 \ -+ | k1om \ -+ | le32 | le64 \ -+ | lm32 \ -+ | m32c | m32r | m32rle \ -+ | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ -+ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ -+ | m88110 | m88k | maxq | mb | mcore | mep | metag \ -+ | microblaze | microblazeel \ -+ | mips | mipsbe | mipseb | mipsel | mipsle \ -+ | mips16 \ -+ | mips64 | mips64eb | mips64el \ -+ | mips64octeon | mips64octeonel \ -+ | mips64orion | mips64orionel \ -+ | mips64r5900 | mips64r5900el \ -+ | mips64vr | mips64vrel \ -+ | mips64vr4100 | mips64vr4100el \ -+ | mips64vr4300 | mips64vr4300el \ -+ | mips64vr5000 | mips64vr5000el \ -+ | mips64vr5900 | mips64vr5900el \ -+ | mipsisa32 | mipsisa32el \ -+ | mipsisa32r2 | mipsisa32r2el \ -+ | mipsisa32r6 | mipsisa32r6el \ -+ | mipsisa64 | mipsisa64el \ -+ | mipsisa64r2 | mipsisa64r2el \ -+ | mipsisa64r6 | mipsisa64r6el \ -+ | mipsisa64sb1 | mipsisa64sb1el \ -+ | mipsisa64sr71k | mipsisa64sr71kel \ -+ | mipsr5900 | mipsr5900el \ -+ | mipstx39 | mipstx39el \ -+ | mmix \ -+ | mn10200 | mn10300 \ -+ | moxie \ -+ | mt \ -+ | msp430 \ -+ | nds32 | nds32le | nds32be \ -+ | nfp \ -+ | nios | nios2 | nios2eb | nios2el \ -+ | none | np1 | ns16k | ns32k | nvptx \ -+ | open8 \ -+ | or1k* \ -+ | or32 \ -+ | orion \ -+ | picochip \ -+ | pdp10 | pdp11 | pj | pjl | pn | power \ -+ | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ -+ | pru \ -+ | pyramid \ -+ | riscv | riscv32 | riscv64 \ -+ | rl78 | romp | rs6000 | rx \ -+ | score \ -+ | sh | shl \ -+ | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ -+ | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ -+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ -+ | sparclite \ -+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ -+ | spu \ -+ | tahoe \ -+ | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ -+ | tron \ -+ | ubicom32 \ -+ | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ -+ | vax \ -+ | visium \ -+ | w65 \ -+ | wasm32 | wasm64 \ -+ | we32k \ -+ | x86 | x86_64 | xc16x | xgate | xps100 \ -+ | xstormy16 | xtensa* \ -+ | ymp \ -+ | z8k | z80) -+ ;; -+ -+ *) -+ echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 - exit 1 - ;; - esac -+ ;; -+esac - - # Here we canonicalize certain aliases for manufacturers. --case $basic_machine in -- *-digital*) -- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` -+case $vendor in -+ digital*) -+ vendor=dec - ;; -- *-commodore*) -- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` -+ commodore*) -+ vendor=cbm - ;; - *) - ;; -@@ -1321,197 +1275,244 @@ - - # Decode manufacturer-specific aliases for certain operating systems. - --if [ x"$os" != x"" ] -+if [ x$os != x ] - then - case $os in -- # First match some system type aliases -- # that might get confused with valid system types. -- # -solaris* is a basic system type, with this one exception. -- -auroraux) -- os=-auroraux -+ # First match some system type aliases that might get confused -+ # with valid system types. -+ # solaris* is a basic system type, with this one exception. -+ auroraux) -+ os=auroraux - ;; -- -solaris1 | -solaris1.*) -- os=`echo $os | sed -e 's|solaris1|sunos4|'` -+ bluegene*) -+ os=cnk - ;; -- -solaris) -- os=-solaris2 -+ solaris1 | solaris1.*) -+ os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; -- -svr4*) -- os=-sysv4 -+ solaris) -+ os=solaris2 - ;; -- -unixware*) -- os=-sysv4.2uw -+ unixware*) -+ os=sysv4.2uw - ;; -- -gnu/linux*) -+ gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; -- # First accept the basic system types. -+ # es1800 is here to avoid being matched by es* (a different OS) -+ es1800*) -+ os=ose -+ ;; -+ # Some version numbers need modification -+ chorusos*) -+ os=chorusos -+ ;; -+ isc) -+ os=isc2.2 -+ ;; -+ sco6) -+ os=sco5v6 -+ ;; -+ sco5) -+ os=sco3.2v5 -+ ;; -+ sco4) -+ os=sco3.2v4 -+ ;; -+ sco3.2.[4-9]*) -+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` -+ ;; -+ sco3.2v[4-9]* | sco5v6*) -+ # Don't forget version if it is 3.2v4 or newer. -+ ;; -+ scout) -+ # Don't match below -+ ;; -+ sco*) -+ os=sco3.2v2 -+ ;; -+ psos*) -+ os=psos -+ ;; -+ # Now accept the basic system types. - # The portable systems comes first. -- # Each alternative MUST END IN A *, to match a version number. -- # -sysv* is not here because it comes later, after sysvr4. -- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ -- | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ -- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ -- | -sym* | -kopensolaris* | -plan9* \ -- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ -- | -aos* | -aros* \ -- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ -- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ -- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ -- | -bitrig* | -openbsd* | -solidbsd* \ -- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ -- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ -- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ -- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ -- | -chorusos* | -chorusrdb* | -cegcc* \ -- | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ -- | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ -- | -linux-newlib* | -linux-musl* | -linux-uclibc* \ -- | -uxpv* | -beos* | -mpeix* | -udk* \ -- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ -- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ -- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ -- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ -- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ -- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ -- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) -+ # Each alternative MUST end in a * to match a version number. -+ # sysv* is not here because it comes later, after sysvr4. -+ gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ -+ | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\ -+ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ -+ | sym* | kopensolaris* | plan9* \ -+ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ -+ | aos* | aros* | cloudabi* | sortix* | twizzler* \ -+ | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ -+ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ -+ | knetbsd* | mirbsd* | netbsd* \ -+ | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \ -+ | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \ -+ | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ -+ | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ -+ | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \ -+ | chorusrdb* | cegcc* | glidix* \ -+ | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ -+ | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \ -+ | linux-newlib* | linux-musl* | linux-uclibc* \ -+ | uxpv* | beos* | mpeix* | udk* | moxiebox* \ -+ | interix* | uwin* | mks* | rhapsody* | darwin* \ -+ | openstep* | oskit* | conix* | pw32* | nonstopux* \ -+ | storm-chaos* | tops10* | tenex* | tops20* | its* \ -+ | os2* | vos* | palmos* | uclinux* | nucleus* \ -+ | morphos* | superux* | rtmk* | windiss* \ -+ | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ -+ | skyos* | haiku* | rdos* | toppers* | drops* | es* \ -+ | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ -+ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ -+ | nsk* | powerunix* | genode*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; -- -qnx*) -- case $basic_machine in -- x86-* | i*86-*) -+ qnx*) -+ case $cpu in -+ x86 | i*86) - ;; - *) -- os=-nto$os -+ os=nto-$os - ;; - esac - ;; -- -nto-qnx*) -+ hiux*) -+ os=hiuxwe2 - ;; -- -nto*) -- os=`echo $os | sed -e 's|nto|nto-qnx|'` -+ nto-qnx*) - ;; -- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ -- | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ -- | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) -+ nto*) -+ os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; -- -mac*) -- os=`echo $os | sed -e 's|mac|macos|'` -+ sim | xray | os68k* | v88r* \ -+ | windows* | osx | abug | netware* | os9* \ -+ | macos* | mpw* | magic* | mmixware* | mon960* | lnews*) - ;; -- -linux-dietlibc) -- os=-linux-dietlibc -+ linux-dietlibc) -+ os=linux-dietlibc - ;; -- -linux*) -+ linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; -- -sunos5*) -- os=`echo $os | sed -e 's|sunos5|solaris2|'` -+ lynx*178) -+ os=lynxos178 -+ ;; -+ lynx*5) -+ os=lynxos5 - ;; -- -sunos6*) -- os=`echo $os | sed -e 's|sunos6|solaris3|'` -+ lynx*) -+ os=lynxos - ;; -- -opened*) -- os=-openedition -+ mac*) -+ os=`echo "$os" | sed -e 's|mac|macos|'` - ;; -- -os400*) -- os=-os400 -+ opened*) -+ os=openedition - ;; -- -wince*) -- os=-wince -+ os400*) -+ os=os400 - ;; -- -osfrose*) -- os=-osfrose -+ sunos5*) -+ os=`echo "$os" | sed -e 's|sunos5|solaris2|'` - ;; -- -osf*) -- os=-osf -+ sunos6*) -+ os=`echo "$os" | sed -e 's|sunos6|solaris3|'` - ;; -- -utek*) -- os=-bsd -+ wince*) -+ os=wince - ;; -- -dynix*) -- os=-bsd -+ utek*) -+ os=bsd - ;; -- -acis*) -- os=-aos -+ dynix*) -+ os=bsd - ;; -- -atheos*) -- os=-atheos -+ acis*) -+ os=aos - ;; -- -syllable*) -- os=-syllable -+ atheos*) -+ os=atheos - ;; -- -386bsd) -- os=-bsd -+ syllable*) -+ os=syllable - ;; -- -ctix* | -uts*) -- os=-sysv -+ 386bsd) -+ os=bsd - ;; -- -nova*) -- os=-rtmk-nova -+ ctix* | uts*) -+ os=sysv - ;; -- -ns2 ) -- os=-nextstep2 -+ nova*) -+ os=rtmk-nova - ;; -- -nsk*) -- os=-nsk -+ ns2) -+ os=nextstep2 - ;; - # Preserve the version number of sinix5. -- -sinix5.*) -+ sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; -- -sinix*) -- os=-sysv4 -+ sinix*) -+ os=sysv4 -+ ;; -+ tpf*) -+ os=tpf -+ ;; -+ triton*) -+ os=sysv3 - ;; -- -tpf*) -- os=-tpf -+ oss*) -+ os=sysv3 - ;; -- -triton*) -- os=-sysv3 -+ svr4*) -+ os=sysv4 - ;; -- -oss*) -- os=-sysv3 -+ svr3) -+ os=sysv3 - ;; -- -svr4) -- os=-sysv4 -+ sysvr4) -+ os=sysv4 - ;; -- -svr3) -- os=-sysv3 -+ # This must come after sysvr4. -+ sysv*) - ;; -- -sysvr4) -- os=-sysv4 -+ ose*) -+ os=ose - ;; -- # This must come after -sysvr4. -- -sysv*) -+ *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) -+ os=mint - ;; -- -ose*) -- os=-ose -+ zvmoe) -+ os=zvmoe - ;; -- -es1800*) -- os=-ose -+ dicos*) -+ os=dicos - ;; -- -xenix) -- os=-xenix -+ pikeos*) -+ # Until real need of OS specific support for -+ # particular features comes up, bare metal -+ # configurations are quite functional. -+ case $cpu in -+ arm*) -+ os=eabi - ;; -- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) -- os=-mint -+ *) -+ os=elf - ;; -- -aros*) -- os=-aros -+ esac - ;; -- -zvmoe) -- os=-zvmoe -+ nacl*) - ;; -- -dicos*) -- os=-dicos -+ ios) - ;; -- -nacl*) -+ none) - ;; -- -none) -+ *-eabi) - ;; - *) -- # Get rid of the `-' at the beginning of $os. -- os=`echo $os | sed 's/[^-]*-//'` -- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 -+ echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2 - exit 1 - ;; - esac -@@ -1527,261 +1528,265 @@ - # will signal an error saying that MANUFACTURER isn't an operating - # system, and we'll never get to this point. - --case $basic_machine in -+case $cpu-$vendor in - score-*) -- os=-elf -+ os=elf - ;; - spu-*) -- os=-elf -+ os=elf - ;; - *-acorn) -- os=-riscix1.2 -+ os=riscix1.2 - ;; - arm*-rebel) -- os=-linux -+ os=linux - ;; - arm*-semi) -- os=-aout -+ os=aout - ;; - c4x-* | tic4x-*) -- os=-coff -+ os=coff -+ ;; -+ c8051-*) -+ os=elf -+ ;; -+ clipper-intergraph) -+ os=clix - ;; - hexagon-*) -- os=-elf -+ os=elf - ;; - tic54x-*) -- os=-coff -+ os=coff - ;; - tic55x-*) -- os=-coff -+ os=coff - ;; - tic6x-*) -- os=-coff -+ os=coff - ;; - # This must come before the *-dec entry. - pdp10-*) -- os=-tops20 -+ os=tops20 - ;; - pdp11-*) -- os=-none -+ os=none - ;; - *-dec | vax-*) -- os=-ultrix4.2 -+ os=ultrix4.2 - ;; - m68*-apollo) -- os=-domain -+ os=domain - ;; - i386-sun) -- os=-sunos4.0.2 -+ os=sunos4.0.2 - ;; - m68000-sun) -- os=-sunos3 -+ os=sunos3 - ;; - m68*-cisco) -- os=-aout -+ os=aout - ;; - mep-*) -- os=-elf -+ os=elf - ;; - mips*-cisco) -- os=-elf -+ os=elf - ;; - mips*-*) -- os=-elf -- ;; -- or1k-*) -- os=-elf -+ os=elf - ;; - or32-*) -- os=-coff -+ os=coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. -- os=-sysv3 -+ os=sysv3 - ;; - sparc-* | *-sun) -- os=-sunos4.1.1 -+ os=sunos4.1.1 - ;; -- *-be) -- os=-beos -+ pru-*) -+ os=elf - ;; -- *-haiku) -- os=-haiku -+ *-be) -+ os=beos - ;; - *-ibm) -- os=-aix -+ os=aix - ;; - *-knuth) -- os=-mmixware -+ os=mmixware - ;; - *-wec) -- os=-proelf -+ os=proelf - ;; - *-winbond) -- os=-proelf -+ os=proelf - ;; - *-oki) -- os=-proelf -+ os=proelf - ;; - *-hp) -- os=-hpux -+ os=hpux - ;; - *-hitachi) -- os=-hiux -+ os=hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) -- os=-sysv -+ os=sysv - ;; - *-cbm) -- os=-amigaos -+ os=amigaos - ;; - *-dg) -- os=-dgux -+ os=dgux - ;; - *-dolphin) -- os=-sysv3 -+ os=sysv3 - ;; - m68k-ccur) -- os=-rtu -+ os=rtu - ;; - m88k-omron*) -- os=-luna -+ os=luna - ;; - *-next ) -- os=-nextstep -+ os=nextstep - ;; - *-sequent) -- os=-ptx -+ os=ptx - ;; - *-crds) -- os=-unos -+ os=unos - ;; - *-ns) -- os=-genix -+ os=genix - ;; - i370-*) -- os=-mvs -- ;; -- *-next) -- os=-nextstep3 -+ os=mvs - ;; - *-gould) -- os=-sysv -+ os=sysv - ;; - *-highlevel) -- os=-bsd -+ os=bsd - ;; - *-encore) -- os=-bsd -+ os=bsd - ;; - *-sgi) -- os=-irix -+ os=irix - ;; - *-siemens) -- os=-sysv4 -+ os=sysv4 - ;; - *-masscomp) -- os=-rtu -+ os=rtu - ;; - f30[01]-fujitsu | f700-fujitsu) -- os=-uxpv -+ os=uxpv - ;; - *-rom68k) -- os=-coff -+ os=coff - ;; - *-*bug) -- os=-coff -+ os=coff - ;; - *-apple) -- os=-macos -+ os=macos - ;; - *-atari*) -- os=-mint -+ os=mint -+ ;; -+ *-wrs) -+ os=vxworks - ;; - *) -- os=-none -+ os=none - ;; - esac - fi - - # Here we handle the case where we know the os, and the CPU type, but not the - # manufacturer. We pick the logical manufacturer. --vendor=unknown --case $basic_machine in -- *-unknown) -+case $vendor in -+ unknown) - case $os in -- -riscix*) -+ riscix*) - vendor=acorn - ;; -- -sunos*) -+ sunos*) - vendor=sun - ;; -- -cnk*|-aix*) -+ cnk*|-aix*) - vendor=ibm - ;; -- -beos*) -+ beos*) - vendor=be - ;; -- -hpux*) -+ hpux*) - vendor=hp - ;; -- -mpeix*) -+ mpeix*) - vendor=hp - ;; -- -hiux*) -+ hiux*) - vendor=hitachi - ;; -- -unos*) -+ unos*) - vendor=crds - ;; -- -dgux*) -+ dgux*) - vendor=dg - ;; -- -luna*) -+ luna*) - vendor=omron - ;; -- -genix*) -+ genix*) - vendor=ns - ;; -- -mvs* | -opened*) -+ clix*) -+ vendor=intergraph -+ ;; -+ mvs* | opened*) - vendor=ibm - ;; -- -os400*) -+ os400*) - vendor=ibm - ;; -- -ptx*) -+ ptx*) - vendor=sequent - ;; -- -tpf*) -+ tpf*) - vendor=ibm - ;; -- -vxsim* | -vxworks* | -windiss*) -+ vxsim* | vxworks* | windiss*) - vendor=wrs - ;; -- -aux*) -+ aux*) - vendor=apple - ;; -- -hms*) -+ hms*) - vendor=hitachi - ;; -- -mpw* | -macos*) -+ mpw* | macos*) - vendor=apple - ;; -- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) -+ *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) - vendor=atari - ;; -- -vos*) -+ vos*) - vendor=stratus - ;; - esac -- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; - esac - --echo $basic_machine$os -+echo "$cpu-$vendor-$os" - exit - - # Local variables: --# eval: (add-hook 'write-file-hooks 'time-stamp) -+# eval: (add-hook 'before-save-hook 'time-stamp) - # time-stamp-start: "timestamp='" - # time-stamp-format: "%:y-%02m-%02d" - # time-stamp-end: "'" From 505d492a94d5861de80e018fcbd4906218420464 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 10 Apr 2025 15:20:26 -0600 Subject: [PATCH 2334/3180] glib: update and build dynamic library --- recipes/libs/glib/recipe.toml | 59 ++++- recipes/libs/glib/redox.patch | 452 +++++++++------------------------- 2 files changed, 173 insertions(+), 338 deletions(-) diff --git a/recipes/libs/glib/recipe.toml b/recipes/libs/glib/recipe.toml index d63e6827..1de339b9 100644 --- a/recipes/libs/glib/recipe.toml +++ b/recipes/libs/glib/recipe.toml @@ -1,6 +1,6 @@ [source] -tar = "https://download.gnome.org/sources/glib/2.59/glib-2.59.0.tar.xz" -blake3 = "4b10f071bad767bbed9dc3ca742aac4de1f5746c03d515908e7dad4ea8334cbf" +tar = "https://download.gnome.org/sources/glib/2.82/glib-2.82.5.tar.xz" +blake3 = "9f5b4a12c6f328b167e81f457319f199acbaa02a63107d698ee9953193740b5f" patches = [ "redox.patch" ] @@ -15,13 +15,54 @@ dependencies = [ "zlib", ] script = """ -"${COOKBOOK_SOURCE}/autogen.sh" \ - "${COOKBOOK_CONFIGURE_FLAGS[@]}" \ - glib_cv_stack_grows=no \ - glib_cv_uscore=no +DYNAMIC_INIT -sed -i 's/#define HAVE_SYS_RESOURCE_H 1/#undef HAVE_SYS_RESOURCE_H/' config.h +#TODO: do this in cook instead +unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP -COOKBOOK_CONFIGURE="true" -cookbook_configure +#export CFLAGS="-I${COOKBOOK_SYSROOT}/include" +#export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include" +#export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib --static" + +# TODO: Fix this annoying shite +echo "[binaries]" > cross_file.txt +echo "c = '${TARGET}-gcc'" >> cross_file.txt +echo "cpp = '${TARGET}-g++'" >> cross_file.txt +echo "ar = '${TARGET}-ar'" >> cross_file.txt +echo "strip = '${TARGET}-strip'" >> cross_file.txt +echo "pkg-config = '${TARGET}-pkg-config'" >> cross_file.txt + +echo "[host_machine]" >> cross_file.txt +echo "system = 'redox'" >> cross_file.txt +echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt +echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt +echo "endian = 'little'" >> cross_file.txt + +echo "[paths]" >> cross_file.txt +echo "prefix = '/usr'" >> cross_file.txt +echo "libdir = 'lib'" >> cross_file.txt +echo "bindir = 'bin'" >> cross_file.txt + +echo "[properties]" >> cross_file.txt +echo "needs_exe_wrapper = true" >> cross_file.txt + +meson \ + setup \ + "${COOKBOOK_SOURCE}" \ + . \ + --cross-file cross_file.txt \ + --buildtype release \ + --strip \ + -Ddefault_library=shared \ + -Dxattr=false +ninja -v +DESTDIR="${COOKBOOK_STAGE}" ninja install """ + +#TODO: shared deps +[package] +shared-deps = [ + "libffi", + "libgcc", + "libiconv", +] diff --git a/recipes/libs/glib/redox.patch b/recipes/libs/glib/redox.patch index 4c8c34f1..90b4cdf7 100644 --- a/recipes/libs/glib/redox.patch +++ b/recipes/libs/glib/redox.patch @@ -1,61 +1,7 @@ -diff -ruwN source/configure.ac source-new/configure.ac ---- source/configure.ac 2018-12-23 08:10:41.000000000 -0500 -+++ source-new/configure.ac 2024-11-28 00:42:10.691094238 -0500 -@@ -981,7 +981,7 @@ - [int qclass = C_IN;])], - [AC_MSG_RESULT([yes]) - NAMESER_COMPAT_INCLUDE="#include "], -- [AC_MSG_ERROR([could not compile test program either way])])])]) -+ [AC_MSG_WARN([could not compile test program either way])])])]) - AC_SUBST(NAMESER_COMPAT_INCLUDE) - - # We can't just use AC_CHECK_FUNC/AC_CHECK_LIB here. Bug 586150 -@@ -1009,7 +1009,7 @@ - [res_query("test", 0, 0, (void *)0, 0);], - [AC_MSG_RESULT([in -lbind]) - NETWORK_LIBS="-lbind $NETWORK_LIBS"], -- [AC_MSG_ERROR(not found)])]) -+ [AC_MSG_WARN(not found)])]) - LIBS="$save_libs"]) - AC_CHECK_FUNC(socket, :, AC_CHECK_LIB(socket, socket, - [NETWORK_LIBS="-lsocket $NETWORK_LIBS"], -diff -ruwN source/gio/glocalfileinfo.c source-new/gio/glocalfileinfo.c ---- source/gio/glocalfileinfo.c 2018-12-23 08:10:41.000000000 -0500 -+++ source-new/gio/glocalfileinfo.c 2024-11-28 00:42:10.691094238 -0500 -@@ -1217,11 +1217,13 @@ - lookup_gid_name (gid_t gid) - { - char *name; -+#if !defined(__redox__) - #if defined (HAVE_GETGRGID_R) - char buffer[4096]; - struct group gbuf; - #endif - struct group *gbufp; -+#endif - - if (gid_cache == NULL) - gid_cache = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify)g_free); -@@ -1231,6 +1233,7 @@ - if (name) - return name; - -+#if !defined(__redox__) - #if defined (HAVE_GETGRGID_R) - getgrgid_r (gid, &gbuf, buffer, sizeof(buffer), &gbufp); - #else -@@ -1242,6 +1245,7 @@ - gbufp->gr_name[0] != 0) - name = convert_pwd_string_to_utf8 (gbufp->gr_name); - else -+#endif - name = g_strdup_printf("%d", (int)gid); - - g_hash_table_replace (gid_cache, GINT_TO_POINTER (gid), name); -diff -ruwN source/gio/gnetworking.h.in source-new/gio/gnetworking.h.in ---- source/gio/gnetworking.h.in 2018-12-23 08:10:41.000000000 -0500 -+++ source-new/gio/gnetworking.h.in 2024-11-28 01:04:12.972229810 -0500 -@@ -41,13 +41,17 @@ +diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/gnetworking.h.in source/gio/gnetworking.h.in +--- glib-2.82.5/gio/gnetworking.h.in 2025-02-20 06:08:16.000000000 -0700 ++++ source/gio/gnetworking.h.in 2025-04-10 14:12:46.307891418 -0600 +@@ -40,13 +40,17 @@ #include #include #include @@ -72,302 +18,150 @@ diff -ruwN source/gio/gnetworking.h.in source-new/gio/gnetworking.h.in +#endif @NAMESER_COMPAT_INCLUDE@ - #ifndef T_SRV -diff -ruwN source/gio/gsocket.c source-new/gio/gsocket.c ---- source/gio/gsocket.c 2018-12-23 08:10:41.000000000 -0500 -+++ source-new/gio/gsocket.c 2024-11-28 00:42:10.691094238 -0500 -@@ -1539,6 +1539,7 @@ - - g_return_val_if_fail (G_IS_SOCKET (socket), 0); - -+#if !defined(__redox__) - if (socket->priv->family == G_SOCKET_FAMILY_IPV4) - { - g_socket_get_option (socket, IPPROTO_IP, IP_TTL, -@@ -1550,6 +1551,7 @@ - &value, &error); - } - else -+#endif - g_return_val_if_reached (0); - - if (error) -@@ -1580,6 +1582,7 @@ - - g_return_if_fail (G_IS_SOCKET (socket)); - -+#if !defined(__redox__) - if (socket->priv->family == G_SOCKET_FAMILY_IPV4) - { - g_socket_set_option (socket, IPPROTO_IP, IP_TTL, -@@ -1593,6 +1596,7 @@ - ttl, &error); - } - else -+#endif - g_return_if_reached (); - - if (error) -@@ -1688,6 +1692,7 @@ - - g_return_val_if_fail (G_IS_SOCKET (socket), FALSE); - -+#if !defined(__redox__) - if (socket->priv->family == G_SOCKET_FAMILY_IPV4) - { - g_socket_get_option (socket, IPPROTO_IP, IP_MULTICAST_LOOP, -@@ -1699,6 +1704,7 @@ - &value, &error); - } - else -+#endif - g_return_val_if_reached (FALSE); - - if (error) -@@ -1733,6 +1739,7 @@ - - loopback = !!loopback; - -+#if !defined(__redox__) - if (socket->priv->family == G_SOCKET_FAMILY_IPV4) - { - g_socket_set_option (socket, IPPROTO_IP, IP_MULTICAST_LOOP, -@@ -1746,6 +1753,7 @@ - loopback, &error); - } - else -+#endif - g_return_if_reached (); - - if (error) -@@ -1777,6 +1785,7 @@ - - g_return_val_if_fail (G_IS_SOCKET (socket), 0); - -+#if !defined(__redox__) - if (socket->priv->family == G_SOCKET_FAMILY_IPV4) - { - g_socket_get_option (socket, IPPROTO_IP, IP_MULTICAST_TTL, -@@ -1788,6 +1797,7 @@ - &value, &error); - } - else -+#endif - g_return_val_if_reached (FALSE); - - if (error) -@@ -1819,6 +1829,7 @@ - - g_return_if_fail (G_IS_SOCKET (socket)); - -+#if !defined(__redox__) - if (socket->priv->family == G_SOCKET_FAMILY_IPV4) - { - g_socket_set_option (socket, IPPROTO_IP, IP_MULTICAST_TTL, -@@ -1832,6 +1843,7 @@ - ttl, &error); - } - else -+#endif - g_return_if_reached (); - - if (error) -@@ -2191,6 +2203,7 @@ - return FALSE; - - native_addr = g_inet_address_to_bytes (group); -+#if !defined(__redox__) - if (g_inet_address_get_family (group) == G_SOCKET_FAMILY_IPV4) - { - #ifdef HAVE_IP_MREQN -@@ -2252,6 +2265,7 @@ - &mc_req_ipv6, sizeof (mc_req_ipv6)); - } - else -+#endif - g_return_val_if_reached (FALSE); - - if (result < 0) -@@ -2912,6 +2926,7 @@ - if (!check_timeout (socket, error)) - return FALSE; - -+#if !defined(__redox__) - if (!g_socket_get_option (socket, SOL_SOCKET, SO_ERROR, &value, error)) - { - g_prefix_error (error, _("Unable to get pending error: ")); -@@ -2929,6 +2944,7 @@ - } - return FALSE; - } -+#endif - - socket->priv->connected_read = TRUE; - socket->priv->connected_write = TRUE; -@@ -3001,7 +3017,7 @@ - { - #ifdef G_OS_WIN32 - if (ioctlsocket (socket->priv->fd, FIONREAD, &avail) < 0) --#else -+#elif !defined(__redox__) - if (ioctl (socket->priv->fd, FIONREAD, &avail) < 0) - #endif - avail = -1; -@@ -4316,7 +4332,7 @@ - #endif + #ifndef __GI_SCANNER__ +diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/gthreadedresolver.c source/gio/gthreadedresolver.c +--- glib-2.82.5/gio/gthreadedresolver.c 2025-02-20 06:08:16.000000000 -0700 ++++ source/gio/gthreadedresolver.c 2025-04-10 15:19:32.649611384 -0600 +@@ -579,8 +579,26 @@ + return g_task_propagate_pointer (G_TASK (result), error); } --#ifndef G_OS_WIN32 -+#if !defined(G_OS_WIN32) && !defined(__redox__) - - /* Unfortunately these have to be macros rather than inline functions due to - * using alloca(). */ -@@ -4673,7 +4689,9 @@ - vectors = &one_vector; - } - --#ifndef G_OS_WIN32 +#if defined(__redox__) -+ return -1; -+#elif !defined(G_OS_WIN32) - { - GOutputMessage output_message; - struct msghdr msg; -@@ -5138,7 +5156,9 @@ - vectors = &one_vector; - } - --#ifndef G_OS_WIN32 -+#if defined(__redox__) -+ return -1; -+#elif !defined(G_OS_WIN32) - { - GInputMessage input_message; - struct msghdr msg; -@@ -5910,4 +5930,3 @@ - #endif - return FALSE; - } -- -diff -ruwN source/gio/gthreadedresolver.c source-new/gio/gthreadedresolver.c ---- source/gio/gthreadedresolver.c 2018-12-23 08:10:41.000000000 -0500 -+++ source-new/gio/gthreadedresolver.c 2024-11-28 00:42:10.694427677 -0500 -@@ -289,6 +289,12 @@ - gpointer task_data, - GCancellable *cancellable) - { -+#if defined(__redox__) -+ g_task_return_new_error (task, -+ G_RESOLVER_ERROR, -+ G_RESOLVER_ERROR_INTERNAL, -+ _("do_lookup_by_address not implemented on Redox")); -+#else - GInetAddress *address = task_data; - struct sockaddr_storage sockaddr; - gsize sockaddr_size; -@@ -319,6 +325,7 @@ - gai_strerror (retval)); - g_free (phys); - } -+#endif - } - - static gchar * -@@ -369,7 +376,7 @@ - } - ++gint ++g_resolver_record_type_to_rrtype (GResolverRecordType type) ++{ ++ g_return_val_if_reached (-1); ++} -#if defined(G_OS_UNIX) ++GList * ++g_resolver_records_from_res_query (const gchar *rrname, ++ gint rrtype, ++ const guint8 *answer, ++ gssize len, ++ gint herr, ++ GError **error) ++{ ++ return NULL; ++} ++#endif ++ +#if defined(G_OS_UNIX) && !defined(__redox__) #if defined __BIONIC__ && !defined BIND_4_COMPAT /* Copy from bionic/libc/private/arpa_nameser_compat.h -@@ -920,6 +927,12 @@ - gpointer task_data, - GCancellable *cancellable) - { +@@ -1308,7 +1326,10 @@ + for (;;) + { + g_byte_array_set_size (answer, len * 2); +-#if defined(HAVE_RES_NQUERY) +#if defined(__redox__) -+ g_task_return_new_error (task, -+ G_RESOLVER_ERROR, -+ G_RESOLVER_ERROR_INTERNAL, -+ _("do_lookup_records not implemented on Redox")); -+#else - LookupRecordsData *lrd = task_data; - GList *records; - GError *error = NULL; -@@ -1005,6 +1018,7 @@ - g_task_return_pointer (task, records, (GDestroyNotify) free_records); - else - g_task_return_error (task, error); -+#endif ++ //TODO: implement on redox ++ len = -1; ++#elif defined(HAVE_RES_NQUERY) + len = res_nquery (&res, rrname, C_IN, rrtype, answer->data, answer->len); + #else + len = res_query (rrname, C_IN, rrtype, answer->data, answer->len); +diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/gunixmounts.c source/gio/gunixmounts.c +--- glib-2.82.5/gio/gunixmounts.c 2025-02-20 06:08:16.000000000 -0700 ++++ source/gio/gunixmounts.c 2025-04-10 14:57:29.342807607 -0600 +@@ -1135,6 +1135,37 @@ + return NULL; } - static GList * -diff -ruwN source/gio/gunixfdmessage.c source-new/gio/gunixfdmessage.c ---- source/gio/gunixfdmessage.c 2018-12-23 08:10:41.000000000 -0500 -+++ source-new/gio/gunixfdmessage.c 2024-11-28 00:42:10.694427677 -0500 -@@ -53,6 +53,10 @@ - #include "gnetworking.h" - #include "gioerror.h" - -+#if defined(__redox__) -+#define SCM_RIGHTS 1 -+#endif ++/* Redox OS {{{2 */ ++#elif defined (__redox__) + - struct _GUnixFDMessagePrivate - { - GUnixFDList *list; -diff -ruwN source/gio/gunixmounts.c source-new/gio/gunixmounts.c ---- source/gio/gunixmounts.c 2018-12-23 08:10:41.000000000 -0500 -+++ source-new/gio/gunixmounts.c 2024-11-28 00:42:10.694427677 -0500 -@@ -949,6 +949,21 @@ - return return_list; - } - -+/* Redox {{{2 */ -+#elif defined(__redox__) -+ -+static const char * ++static char * +get_mtab_monitor_file (void) +{ ++ /* TODO: Not implemented */ ++ return NULL; ++} ++ ++static GUnixMountEntry ** ++_g_unix_mounts_get_from_file (const char *table_path, ++ uint64_t *time_read_out, ++ size_t *n_entries_out) ++{ ++ /* Not implemented, as per _g_get_unix_mounts() below */ ++ if (time_read_out != NULL) ++ *time_read_out = 0; ++ if (n_entries_out != NULL) ++ *n_entries_out = 0; ++ + return NULL; +} + +static GList * +_g_get_unix_mounts (void) +{ ++ /* TODO: Not implemented */ + return NULL; +} + /* Common code {{{2 */ #else #error No _g_get_unix_mounts() implementation for system -@@ -1465,7 +1480,7 @@ - return g_list_reverse (return_list); - } - /* Interix {{{2 */ --#elif defined(__INTERIX) -+#elif defined(__INTERIX) || defined(__redox__) - static GList * - _g_get_unix_mount_points (void) - { -diff -ruwN source/glib/gthread-posix.c source-new/glib/gthread-posix.c ---- source/glib/gthread-posix.c 2018-12-23 08:10:41.000000000 -0500 -+++ source-new/glib/gthread-posix.c 2024-11-28 00:42:10.694427677 -0500 -@@ -660,6 +660,7 @@ - #elif defined (HAVE_PTHREAD_CONDATTR_SETCLOCK) && defined (CLOCK_MONOTONIC) - if G_UNLIKELY ((status = pthread_condattr_setclock (&attr, CLOCK_MONOTONIC)) != 0) - g_thread_abort (status, "pthread_condattr_setclock"); +@@ -1745,6 +1776,28 @@ + if (time_read_out != NULL) + *time_read_out = 0; + if (n_points_out != NULL) ++ *n_points_out = 0; ++ return NULL; ++} ++ +#elif defined(__redox__) - #else - #error Cannot support GCond on your platform. - #endif -@@ -896,7 +897,7 @@ - if ((status = pthread_cond_timedwait_relative_np (g_cond_get_impl (cond), g_mutex_get_impl (mutex), &ts)) == 0) - return TRUE; - } --#elif defined (HAVE_PTHREAD_CONDATTR_SETCLOCK) && defined (CLOCK_MONOTONIC) -+#elif (defined (HAVE_PTHREAD_CONDATTR_SETCLOCK) && defined (CLOCK_MONOTONIC)) || defined(__redox__) - /* This is the exact check we used during init to set the clock to - * monotonic, so if we're in this branch, timedwait() will already be - * expecting a monotonic clock. ++ ++static GList * ++_g_get_unix_mount_points (void) ++{ ++ /* Not implemented */ ++ return NULL; ++} ++ ++static GUnixMountPoint ** ++_g_unix_mount_points_get_from_file (const char *table_path, ++ uint64_t *time_read_out, ++ size_t *n_points_out) ++{ ++ /* Not implemented */ ++ if (time_read_out != NULL) ++ *time_read_out = 0; ++ if (n_points_out != NULL) + *n_points_out = 0; + return NULL; + } +diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/meson.build source/gio/meson.build +--- glib-2.82.5/gio/meson.build 2025-02-20 06:08:16.000000000 -0700 ++++ source/gio/meson.build 2025-04-10 14:06:57.909467382 -0600 +@@ -18,7 +18,7 @@ + + gnetworking_h_nameser_compat_include = '' + +-if host_system not in ['windows', 'android'] ++if host_system not in ['windows', 'android', 'redox'] + # Don't check for C_IN on Android since it does not define it in public + # headers, we define it ourselves wherever necessary + if not cc.compiles('''#include +@@ -39,7 +39,7 @@ + + network_libs = [ ] + network_args = [ ] +-if host_system != 'windows' ++if host_system not in ['windows', 'redox'] + # res_query() + res_query_test = '''#include + int main (int argc, char ** argv) { +diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/xdgmime/xdgmimecache.c source/gio/xdgmime/xdgmimecache.c +--- glib-2.82.5/gio/xdgmime/xdgmimecache.c 2025-02-20 06:08:16.000000000 -0700 ++++ source/gio/xdgmime/xdgmimecache.c 2025-04-10 14:11:44.020815595 -0600 +@@ -22,7 +22,7 @@ + #include + #include + +-#include /* for ntohl/ntohs */ ++#include /* for ntohl/ntohs */ + + #ifdef HAVE_MMAP + #include From c6e333ba9ac61c69b010f7e436cac2cb0217b13b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 10 Apr 2025 15:24:16 -0600 Subject: [PATCH 2335/3180] qemu: update and compile dynamically --- recipes/wip/vm/qemu/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/vm/qemu/recipe.toml b/recipes/wip/vm/qemu/recipe.toml index fd19d987..cc5030cb 100644 --- a/recipes/wip/vm/qemu/recipe.toml +++ b/recipes/wip/vm/qemu/recipe.toml @@ -23,11 +23,11 @@ dependencies = [ "zlib", ] script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS=( --host="${TARGET}" --prefix="/usr" --cross-prefix="${TARGET}" - --static --disable-coroutine-pool --disable-tpm ) From 35cbc8ecac37de712dde378b8f914090cc125a08 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 10 Apr 2025 15:39:48 -0600 Subject: [PATCH 2336/3180] qemu: add shared-deps --- recipes/wip/vm/qemu/recipe.toml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/recipes/wip/vm/qemu/recipe.toml b/recipes/wip/vm/qemu/recipe.toml index cc5030cb..2f7562f3 100644 --- a/recipes/wip/vm/qemu/recipe.toml +++ b/recipes/wip/vm/qemu/recipe.toml @@ -48,3 +48,17 @@ case "${TARGET}" in esac cookbook_configure """ + +[package] +shared-deps = [ + "gettext", + "glib", + "libffi", + "libgcc", + "libiconv", + "liborbital", + "libpng", + "nghttp2", + "openssl1", + "zlib", +] From 40de561b6726e1ced62540be8d9af8b599ee52f4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 10 Apr 2025 15:46:23 -0600 Subject: [PATCH 2337/3180] boxedwine: compile dynamically --- recipes/wip/emulators/windows/boxedwine/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/emulators/windows/boxedwine/recipe.toml b/recipes/wip/emulators/windows/boxedwine/recipe.toml index f6970436..96401945 100644 --- a/recipes/wip/emulators/windows/boxedwine/recipe.toml +++ b/recipes/wip/emulators/windows/boxedwine/recipe.toml @@ -15,6 +15,7 @@ dependencies = [ "zlib", ] script = """ +DYNAMIC_INIT cd "${COOKBOOK_SOURCE}/project/linux" #TODO: USE MAKEFILE #TODO: USE X64 CPU CORE @@ -81,7 +82,6 @@ ${TARGET}-gcc -std=c++17 -O2 \ -DGLEW_OSMESA \ -DSDL2=1 \ -DSIMDE_SSE2_NO_NATIVE \ - -static \ -o "${COOKBOOK_BUILD}/boxedwine" mkdir -p "${COOKBOOK_STAGE}/bin" cp -v "${COOKBOOK_BUILD}/boxedwine" "${COOKBOOK_STAGE}/bin/boxedwine" From d967285816191c92f81f21e5e1536ca24eb60b6f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 10 Apr 2025 15:59:45 -0600 Subject: [PATCH 2338/3180] pkg-config: compile dynamically --- recipes/dev/pkg-config/recipe.toml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/recipes/dev/pkg-config/recipe.toml b/recipes/dev/pkg-config/recipe.toml index ae55de3c..bb5992ee 100644 --- a/recipes/dev/pkg-config/recipe.toml +++ b/recipes/dev/pkg-config/recipe.toml @@ -12,4 +12,15 @@ dependencies = [ "libiconv", "pcre", ] -template = "configure" +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" + +[package] +shared-deps = [ + "gettext", + "glib", + "libiconv", +] From a20b571459791480836734b0b148480ab73d6350 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 10 Apr 2025 17:00:45 -0600 Subject: [PATCH 2339/3180] freetype2: compile dynamically --- recipes/libs/freetype2/recipe.toml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/recipes/libs/freetype2/recipe.toml b/recipes/libs/freetype2/recipe.toml index fd9689c2..296100fc 100644 --- a/recipes/libs/freetype2/recipe.toml +++ b/recipes/libs/freetype2/recipe.toml @@ -1,9 +1,14 @@ [source] -tar = "https://download.savannah.gnu.org/releases/freetype/freetype-2.12.1.tar.xz" -blake3 = "c4a1d8438ca4e93bb8cb9f8e70e95cd16acdc5a9f0fba496e43911175f55affd" +tar = "https://download.savannah.gnu.org/releases/freetype/freetype-2.13.3.tar.xz" +blake3 = "07a01894ccdb584943ce817b57341a8595ce9a92bfaa77c602ec4757dfabd5e2" + [build] -template = "configure" dependencies = [ "libpng", "zlib" ] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From 9024df00076e37ef894e13492da732cf35f6b0bb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 10 Apr 2025 17:02:39 -0600 Subject: [PATCH 2340/3180] freetype2: fix dynamic library compilation --- recipes/libs/freetype2/recipe.toml | 47 ++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/recipes/libs/freetype2/recipe.toml b/recipes/libs/freetype2/recipe.toml index 296100fc..16b1accf 100644 --- a/recipes/libs/freetype2/recipe.toml +++ b/recipes/libs/freetype2/recipe.toml @@ -3,12 +3,55 @@ tar = "https://download.savannah.gnu.org/releases/freetype/freetype-2.13.3.tar.x blake3 = "07a01894ccdb584943ce817b57341a8595ce9a92bfaa77c602ec4757dfabd5e2" [build] +template = "custom" dependencies = [ "libpng", "zlib" ] -template = "custom" script = """ DYNAMIC_INIT -cookbook_configure + +# TODO: Fix this annoying shite +echo "[binaries]" > cross_file.txt +echo "c = '${CC}'" >> cross_file.txt +echo "cpp = '${CXX}'" >> cross_file.txt +echo "ar = '${AR}'" >> cross_file.txt +echo "strip = '${STRIP}'" >> cross_file.txt +echo "pkg-config = '${TARGET}-pkg-config'" >> cross_file.txt + +echo "[host_machine]" >> cross_file.txt +echo "system = 'redox'" >> cross_file.txt +echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt +echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt +echo "endian = 'little'" >> cross_file.txt + +echo "[paths]" >> cross_file.txt +echo "prefix = '${COOKBOOK_SYSROOT}'" >> cross_file.txt +echo "libdir = 'lib'" >> cross_file.txt +echo "bindir = 'bin'" >> cross_file.txt + +unset AR +unset AS +unset CC +unset CXX +unset LD +unset NM +unset OBJCOPY +unset OBJDUMP +unset PKG_CONFIG +unset RANLIB +unset READELF +unset STRIP + +meson \ + setup \ + "${COOKBOOK_SOURCE}" \ + _build \ + --cross-file cross_file.txt \ + --buildtype release \ + --strip \ + -Dprefix=/usr \ + -Dlibdir=lib +ninja -C _build -v +DESTDIR="${COOKBOOK_STAGE}" ninja -C _build -v install """ From 2fc7a0cafee944d251a70870c0f09ff756328023 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 10 Apr 2025 17:08:32 -0600 Subject: [PATCH 2341/3180] harfbuzz: update and compile dynamically --- recipes/libs/harfbuzz/recipe.toml | 59 ++++++++++++++++++++++++++----- 1 file changed, 50 insertions(+), 9 deletions(-) diff --git a/recipes/libs/harfbuzz/recipe.toml b/recipes/libs/harfbuzz/recipe.toml index 0decd14d..37c3d41b 100644 --- a/recipes/libs/harfbuzz/recipe.toml +++ b/recipes/libs/harfbuzz/recipe.toml @@ -1,6 +1,7 @@ [source] -tar = "https://github.com/harfbuzz/harfbuzz/releases/download/7.3.0/harfbuzz-7.3.0.tar.xz" -blake3 = "6572676ffef55bd37bacdd33052bedfb07333b659371495a2a26b9825ce685c0" +tar = "https://github.com/harfbuzz/harfbuzz/releases/download/11.0.1/harfbuzz-11.0.1.tar.xz" +blake3 = "51f0edaaf2e9b7a7176d3252f15d03d409ef7ad35f77b050c407de89f85b77c5" + [build] template = "custom" dependencies = [ @@ -13,11 +14,51 @@ dependencies = [ "zlib" ] script = """ -COOKBOOK_CONFIGURE_FLAGS+=( - --with-glib=yes - --with-freetype=yes - --with-icu=no - ac_cv_func_sincosf=no -) -cookbook_configure +DYNAMIC_INIT + +# TODO: Fix this annoying shite +echo "[binaries]" > cross_file.txt +echo "c = '${CC}'" >> cross_file.txt +echo "cpp = '${CXX}'" >> cross_file.txt +echo "ar = '${AR}'" >> cross_file.txt +echo "strip = '${STRIP}'" >> cross_file.txt +echo "pkg-config = '${TARGET}-pkg-config'" >> cross_file.txt + +echo "[host_machine]" >> cross_file.txt +echo "system = 'redox'" >> cross_file.txt +echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt +echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt +echo "endian = 'little'" >> cross_file.txt + +echo "[paths]" >> cross_file.txt +echo "prefix = '${COOKBOOK_SYSROOT}'" >> cross_file.txt +echo "libdir = 'lib'" >> cross_file.txt +echo "bindir = 'bin'" >> cross_file.txt + +unset AR +unset AS +unset CC +unset CXX +unset LD +unset NM +unset OBJCOPY +unset OBJDUMP +unset PKG_CONFIG +unset RANLIB +unset READELF +unset STRIP + +meson \ + setup \ + "${COOKBOOK_SOURCE}" \ + _build \ + --cross-file cross_file.txt \ + --buildtype release \ + --strip \ + -Dprefix=/usr \ + -Dlibdir=lib \ + -Ddocs=disabled \ + -Dtests=disabled +ninja -C _build -v +DESTDIR="${COOKBOOK_STAGE}" ninja -C _build -v install """ From 8621c086ab3b4ad6aa65b996738003bcb9cfee82 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 10 Apr 2025 17:10:14 -0600 Subject: [PATCH 2342/3180] fontconfig: compile dynamically --- recipes/dev/fontconfig/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/dev/fontconfig/recipe.toml b/recipes/dev/fontconfig/recipe.toml index 7dfed5a7..c7cb4404 100644 --- a/recipes/dev/fontconfig/recipe.toml +++ b/recipes/dev/fontconfig/recipe.toml @@ -17,6 +17,7 @@ dependencies = [ "zlib", ] script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( --disable-docs \ ac_cv_func_XML_SetDoctypeDeclHandler=yes From 549c1fd8e2d7511afd70777b0dc7a7bf5e8ccd7e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 10 Apr 2025 17:32:28 -0600 Subject: [PATCH 2343/3180] gstreamer: update and compile dynamically --- recipes/libs/gstreamer/recipe.toml | 44 ++++++++++++------- recipes/libs/gstreamer/redox.patch | 70 +++++++----------------------- 2 files changed, 44 insertions(+), 70 deletions(-) diff --git a/recipes/libs/gstreamer/recipe.toml b/recipes/libs/gstreamer/recipe.toml index 56fb4da4..bda75280 100644 --- a/recipes/libs/gstreamer/recipe.toml +++ b/recipes/libs/gstreamer/recipe.toml @@ -1,24 +1,37 @@ [source] -tar = "https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.20.6.tar.xz" -blake3 = "d96a7fd8bb9bec309bc40ccafdbac3bd4d11d06a9be41c38337cea02deaea95d" -patches = [ - "redox.patch" -] +tar = "https://gitlab.freedesktop.org/gstreamer/gstreamer/-/archive/1.24.12/gstreamer-1.24.12.tar.gz" +blake3 = "181daf73050f7472ec656e7461b7f67028d6002c1133870576033a32e43a364f" +patches = ["redox.patch"] [build] template = "custom" dependencies = [ + "cairo", + "expat", + "ffmpeg6", + "freetype2", + "fontconfig", "gettext", - "glib", - "libffi", + "glib", + "harfbuzz", + "libffi", "libiconv", - "pcre", + "libjpeg", + "libogg", + "libpng", + "libvorbis", + "libxml2", + #TODO "pango", + "pcre", + "pixman", "zlib" ] script = """ +DYNAMIC_INIT + export GLIB_GENMARSHAL="$(which glib-genmarshal)" export GLIB_MKENUMS="$(which glib-mkenums)" -export LDFLAGS="-static" +export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" # TODO: Fix this annoying shite echo "[binaries]" > cross_file.txt @@ -26,7 +39,7 @@ echo "c = '${CC}'" >> cross_file.txt echo "cpp = '${CXX}'" >> cross_file.txt echo "ar = '${AR}'" >> cross_file.txt echo "strip = '${STRIP}'" >> cross_file.txt -echo "pkgconfig = '${TARGET}-pkg-config'" >> cross_file.txt +echo "pkg-config = '${TARGET}-pkg-config'" >> cross_file.txt echo "[host_machine]" >> cross_file.txt echo "system = 'redox'" >> cross_file.txt @@ -52,17 +65,16 @@ unset RANLIB unset READELF unset STRIP -meson setup "${COOKBOOK_SOURCE}" _build \ +meson \ + setup \ + "${COOKBOOK_SOURCE}" \ + _build \ --cross-file cross_file.txt \ --buildtype release \ --strip \ - -Ddefault_library=static \ -Dprefix=/ \ -Dlibdir=lib \ - -Dbenchmarks=disabled \ - -Dcoretracers=disabled \ - -Dexamples=disabled \ - -Dtests=disabled + -Dauto_features=disabled ninja -C _build -v DESTDIR="${COOKBOOK_STAGE}" ninja -C _build -v install """ diff --git a/recipes/libs/gstreamer/redox.patch b/recipes/libs/gstreamer/redox.patch index bffd8ffe..5818879f 100644 --- a/recipes/libs/gstreamer/redox.patch +++ b/recipes/libs/gstreamer/redox.patch @@ -1,57 +1,19 @@ -diff -ruwN source/gst/gstpoll.c source-new/gst/gstpoll.c ---- source/gst/gstpoll.c 2023-02-23 11:23:11.000000000 -0700 -+++ source-new/gst/gstpoll.c 2023-05-19 13:22:32.365660597 -0600 -@@ -85,6 +85,10 @@ - #include - #endif - -+#if defined(__redox__) -+#include -+#endif -+ - #ifdef G_OS_WIN32 - # ifndef EWOULDBLOCK - # define EWOULDBLOCK EAGAIN /* This is just to placate gcc */ -@@ -689,7 +693,9 @@ - { - gint control_sock[2]; - -+#if !defined(__redox__) - if (socketpair (PF_UNIX, SOCK_STREAM, 0, control_sock) < 0) -+#endif - goto no_socket_pair; - - nset->control_read_fd.fd = control_sock[0]; -diff -ruwN source/libs/gst/check/libcheck/meson.build source-new/libs/gst/check/libcheck/meson.build ---- source/libs/gst/check/libcheck/meson.build 2023-02-23 11:23:11.000000000 -0700 -+++ source-new/libs/gst/check/libcheck/meson.build 2023-05-19 13:26:51.285620215 -0600 -@@ -40,13 +40,13 @@ +diff -ruwN gstreamer-1.20.7/subprojects/gst-plugins-base/gst-libs/gst/tag/meson.build source/subprojects/gst-plugins-base/gst-libs/gst/tag/meson.build +--- gstreamer-1.20.7/subprojects/gst-plugins-base/gst-libs/gst/tag/meson.build 2023-07-26 09:18:38.000000000 -0600 ++++ source/subprojects/gst-plugins-base/gst-libs/gst/tag/meson.build 2025-04-10 17:19:26.509676357 -0600 +@@ -135,10 +135,10 @@ + install: false) endif - # FIXME: check that timer_create, timer_settime, timer_delete are in rt_lib --if not rt_lib.found() -+#if not rt_lib.found() - libcheck_files += files( - 'libcompat/timer_create.c', - 'libcompat/timer_settime.c', - 'libcompat/timer_delete.c' - ) --endif -+#endif - - configure_file(input : 'check.h.in', - output : 'check.h', -diff -ruwN source/plugins/elements/gstfilesink.c source-new/plugins/elements/gstfilesink.c ---- source/plugins/elements/gstfilesink.c 2023-02-23 11:23:11.000000000 -0700 -+++ source-new/plugins/elements/gstfilesink.c 2023-05-19 13:23:26.885652108 -0600 -@@ -148,8 +148,10 @@ - else - g_assert_not_reached (); - -+#if !defined(__redox__) - if (o_sync) - flags |= O_SYNC; -+#endif - - fd = open (filename, flags, 0666); +-executable('mklicensestables', 'mklicensestables.c', +- c_args : gst_plugins_base_args, +- include_directories: [configinc], +- dependencies : [tag_dep, gst_base_dep], +- install : false) ++#executable('mklicensestables', 'mklicensestables.c', ++# c_args : gst_plugins_base_args, ++# include_directories: [configinc], ++# dependencies : [tag_dep, gst_base_dep], ++# install : false) + gst_tag_dir = meson.current_source_dir() From 6873df013ee423f59fae32433e339d54b3a8323c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Apr 2025 08:52:42 -0600 Subject: [PATCH 2344/3180] cosmic-player: compile dynamically --- recipes/wip/players/cosmic-player/recipe.toml | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/recipes/wip/players/cosmic-player/recipe.toml b/recipes/wip/players/cosmic-player/recipe.toml index f5c3e826..1a2299ea 100644 --- a/recipes/wip/players/cosmic-player/recipe.toml +++ b/recipes/wip/players/cosmic-player/recipe.toml @@ -4,18 +4,33 @@ branch = "master" [build] dependencies = [ + "ffmpeg6", "gettext", "glib", "gstreamer", - "gstreamer-plugins-base", "libffi", "libiconv", - "pcre", "zlib", ] template = "custom" script = """ -cookbook_cargo --no-default-features +DYNAMIC_INIT +cargo rustc \ + --target "${TARGET}" \ + --release \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --no-default-features \ + --verbose \ + -- \ + -C link-args="-lgmodule-2.0 -lffi -lz" mkdir -pv "${COOKBOOK_STAGE}/ui/apps" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/cosmic-player" +#TODO: install with just? +APPID="com.system76.CosmicPlayer" +mkdir -pv "${COOKBOOK_STAGE}/usr/share/applications/" +cp -v "${COOKBOOK_SOURCE}/res/${APPID}.desktop" "${COOKBOOK_STAGE}/usr/share/applications/" +mkdir -pv "${COOKBOOK_STAGE}/usr/share/metainfo/" +cp -v "${COOKBOOK_SOURCE}/res/${APPID}.metainfo.xml" "${COOKBOOK_STAGE}/usr/share/metainfo/" +mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" +cp -rv "${COOKBOOK_SOURCE}/res/icons/hicolor/" "${COOKBOOK_STAGE}/usr/share/icons/" """ From f52180899f500f01a6dfb3b35b294003ad9f9d73 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Apr 2025 08:54:37 -0600 Subject: [PATCH 2345/3180] Support dynamic linking in pkg-config wrapper --- bin/aarch64-unknown-redox-pkg-config | 7 ++++++- bin/i686-unknown-redox-pkg-config | 7 ++++++- bin/riscv64-unknown-redox-pkg-config | 7 ++++++- bin/x86_64-unknown-redox-pkg-config | 7 ++++++- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/bin/aarch64-unknown-redox-pkg-config b/bin/aarch64-unknown-redox-pkg-config index 0bcf777b..57774042 100755 --- a/bin/aarch64-unknown-redox-pkg-config +++ b/bin/aarch64-unknown-redox-pkg-config @@ -4,4 +4,9 @@ export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" export PKG_CONFIG_LIBDIR="${PKG_CONFIG_SYSROOT_DIR}/lib/pkgconfig" export PKG_CONFIG_PATH="${PKG_CONFIG_SYSROOT_DIR}/share/pkgconfig" -exec pkg-config --static "$@" +if [ -n "${COOKBOOK_PREFER_STATIC}" ] +then + exec pkg-config --static "$@" +else + exec pkg-config "$@" +fi diff --git a/bin/i686-unknown-redox-pkg-config b/bin/i686-unknown-redox-pkg-config index 0bcf777b..57774042 100755 --- a/bin/i686-unknown-redox-pkg-config +++ b/bin/i686-unknown-redox-pkg-config @@ -4,4 +4,9 @@ export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" export PKG_CONFIG_LIBDIR="${PKG_CONFIG_SYSROOT_DIR}/lib/pkgconfig" export PKG_CONFIG_PATH="${PKG_CONFIG_SYSROOT_DIR}/share/pkgconfig" -exec pkg-config --static "$@" +if [ -n "${COOKBOOK_PREFER_STATIC}" ] +then + exec pkg-config --static "$@" +else + exec pkg-config "$@" +fi diff --git a/bin/riscv64-unknown-redox-pkg-config b/bin/riscv64-unknown-redox-pkg-config index 0bcf777b..57774042 100755 --- a/bin/riscv64-unknown-redox-pkg-config +++ b/bin/riscv64-unknown-redox-pkg-config @@ -4,4 +4,9 @@ export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" export PKG_CONFIG_LIBDIR="${PKG_CONFIG_SYSROOT_DIR}/lib/pkgconfig" export PKG_CONFIG_PATH="${PKG_CONFIG_SYSROOT_DIR}/share/pkgconfig" -exec pkg-config --static "$@" +if [ -n "${COOKBOOK_PREFER_STATIC}" ] +then + exec pkg-config --static "$@" +else + exec pkg-config "$@" +fi diff --git a/bin/x86_64-unknown-redox-pkg-config b/bin/x86_64-unknown-redox-pkg-config index 0bcf777b..57774042 100755 --- a/bin/x86_64-unknown-redox-pkg-config +++ b/bin/x86_64-unknown-redox-pkg-config @@ -4,4 +4,9 @@ export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" export PKG_CONFIG_LIBDIR="${PKG_CONFIG_SYSROOT_DIR}/lib/pkgconfig" export PKG_CONFIG_PATH="${PKG_CONFIG_SYSROOT_DIR}/share/pkgconfig" -exec pkg-config --static "$@" +if [ -n "${COOKBOOK_PREFER_STATIC}" ] +then + exec pkg-config --static "$@" +else + exec pkg-config "$@" +fi From e741b35ce867a6a3dfced6b9a5859e629e84b6f5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Apr 2025 09:05:55 -0600 Subject: [PATCH 2346/3180] cosmic-player: fix recipe so it install binary and depends --- recipes/wip/players/cosmic-player/recipe.toml | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/recipes/wip/players/cosmic-player/recipe.toml b/recipes/wip/players/cosmic-player/recipe.toml index 1a2299ea..5c341f1d 100644 --- a/recipes/wip/players/cosmic-player/recipe.toml +++ b/recipes/wip/players/cosmic-player/recipe.toml @@ -3,6 +3,7 @@ git = "https://github.com/pop-os/cosmic-player.git" branch = "master" [build] +template = "custom" dependencies = [ "ffmpeg6", "gettext", @@ -12,18 +13,18 @@ dependencies = [ "libiconv", "zlib", ] -template = "custom" script = """ DYNAMIC_INIT -cargo rustc \ - --target "${TARGET}" \ - --release \ +"${COOKBOOK_CARGO}" rustc \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --release \ + --bin cosmic-player \ --no-default-features \ - --verbose \ -- \ -C link-args="-lgmodule-2.0 -lffi -lz" -mkdir -pv "${COOKBOOK_STAGE}/ui/apps" +mkdir -pv "${COOKBOOK_STAGE}/usr/bin/" +cp -v "target/${TARGET}/release/cosmic-player" "${COOKBOOK_STAGE}/usr/bin/" +mkdir -pv "${COOKBOOK_STAGE}/ui/apps/" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/cosmic-player" #TODO: install with just? APPID="com.system76.CosmicPlayer" @@ -34,3 +35,15 @@ cp -v "${COOKBOOK_SOURCE}/res/${APPID}.metainfo.xml" "${COOKBOOK_STAGE}/usr/shar mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" cp -rv "${COOKBOOK_SOURCE}/res/icons/hicolor/" "${COOKBOOK_STAGE}/usr/share/icons/" """ + +[package] +shared-deps = [ + "libgcc", + "gettext", + "glib", + "gstreamer", + "libffi", + "libiconv", + "zlib", +] + From 6909fdd9b2463d879eb89ec769c96b556f0748d5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Apr 2025 11:15:44 -0600 Subject: [PATCH 2347/3180] Refactor shared dependency handling --- Cargo.lock | 60 +++++++ Cargo.toml | 2 + recipes/core/ion/recipe.toml | 5 +- recipes/dev/cargo/recipe.toml | 13 +- recipes/dev/gnu-make/recipe.toml | 5 +- recipes/dev/pkg-config/recipe.toml | 9 +- recipes/emulators/flycast/recipe.toml | 11 +- recipes/emulators/mednafen/recipe.toml | 9 +- recipes/games/devilutionx/recipe.toml | 5 +- recipes/libs/glib/recipe.toml | 10 +- recipes/libs/libffi/recipe.toml | 5 +- recipes/libs/libgmp/recipe.toml | 5 +- recipes/libs/libiconv/recipe.toml | 5 +- recipes/libs/libmpfr/recipe.toml | 5 +- recipes/libs/libssh2/recipe.toml | 9 +- recipes/libs/mpc/recipe.toml | 9 +- recipes/libs/nghttp2/recipe.toml | 5 +- recipes/libs/zlib/recipe.toml | 5 +- recipes/tools/bzip2/recipe.toml | 5 +- recipes/tools/cosmic-files/recipe.toml | 10 +- recipes/tools/cosmic-settings/recipe.toml | 10 +- recipes/tools/cosmic-store/recipe.toml | 8 +- recipes/tools/cosmic-term/recipe.toml | 8 +- recipes/tools/gettext/recipe.toml | 9 +- recipes/tools/gnu-binutils/recipe.toml | 11 +- recipes/tools/patchelf/recipe.toml | 6 +- recipes/web/netsurf/recipe.toml | 12 -- recipes/wip/games/other/love/recipe.toml | 11 +- recipes/wip/players/cosmic-player/recipe.toml | 14 +- recipes/wip/vm/qemu/recipe.toml | 16 +- repo.sh | 10 -- src/bin/cook.rs | 167 ++++++++++++++---- src/bin/runtime_deps_of.rs | 20 --- src/recipe.rs | 61 ++----- 34 files changed, 235 insertions(+), 320 deletions(-) delete mode 100644 src/bin/runtime_deps_of.rs diff --git a/Cargo.lock b/Cargo.lock index e26c84fc..cd8bfec4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -493,6 +493,15 @@ version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if 1.0.0", +] + [[package]] name = "crossbeam-channel" version = "0.5.14" @@ -765,12 +774,28 @@ version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +[[package]] +name = "flate2" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + [[package]] name = "fnv" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "form_urlencoded" version = "1.2.1" @@ -923,6 +948,9 @@ name = "hashbrown" version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "foldhash", +] [[package]] name = "hermit-abi" @@ -1392,7 +1420,12 @@ version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ + "crc32fast", + "flate2", + "hashbrown", + "indexmap", "memchr", + "ruzstd", ] [[package]] @@ -1753,8 +1786,10 @@ name = "redox_cookbook" version = "0.1.0" dependencies = [ "blake3 1.5.3", + "object", "pbr", "pkgar 0.1.16", + "pkgar-core 0.1.16", "pkgar-keys 0.1.16", "redoxer", "serde", @@ -2057,6 +2092,15 @@ version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" +[[package]] +name = "ruzstd" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fad02996bfc73da3e301efe90b1837be9ed8f4a462b6ed410aa35d00381de89f" +dependencies = [ + "twox-hash", +] + [[package]] name = "ryu" version = "1.0.19" @@ -2210,6 +2254,12 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + [[package]] name = "strip-ansi-escapes" version = "0.2.1" @@ -2514,6 +2564,16 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "twox-hash" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" +dependencies = [ + "cfg-if 0.1.10", + "static_assertions", +] + [[package]] name = "typenum" version = "1.17.0" diff --git a/Cargo.toml b/Cargo.toml index 635de330..44fc90a7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,8 +21,10 @@ path = "src/lib.rs" [dependencies] blake3 = "=1.5.3" # 1.5.4 is incompatible with blake3 0.3 dependency from pkgar +object = { version = "0.36", features = ["build_core"] } pbr = "1.0.2" pkgar = { path = "pkgar/pkgar" } +pkgar-core = { path = "pkgar/pkgar-core" } pkgar-keys = { path = "pkgar/pkgar-keys" } redoxer = "0.2" serde = { version = "=1.0.197", features = ["derive"] } diff --git a/recipes/core/ion/recipe.toml b/recipes/core/ion/recipe.toml index de1b3ca6..eb746ff6 100644 --- a/recipes/core/ion/recipe.toml +++ b/recipes/core/ion/recipe.toml @@ -6,7 +6,4 @@ template = "custom" script = """ DYNAMIC_INIT cookbook_cargo -""" - -[package] -shared-deps = ["libgcc"] +""" \ No newline at end of file diff --git a/recipes/dev/cargo/recipe.toml b/recipes/dev/cargo/recipe.toml index 17531b47..c02f2878 100644 --- a/recipes/dev/cargo/recipe.toml +++ b/recipes/dev/cargo/recipe.toml @@ -29,15 +29,4 @@ export DEP_Z_ROOT="${COOKBOOK_SYSROOT}" -C link-arg="-lnghttp2" mkdir -pv "${COOKBOOK_STAGE}/bin" cp -v "target/${TARGET}/release/cargo" "${COOKBOOK_STAGE}/bin/cargo" -""" - -[package] -shared-deps = [ - "curl", - "libgcc", - "libssh2", - "nghttp2", - "openssl1", - "zlib", -] - +""" \ No newline at end of file diff --git a/recipes/dev/gnu-make/recipe.toml b/recipes/dev/gnu-make/recipe.toml index 48e78b61..d9c722c9 100644 --- a/recipes/dev/gnu-make/recipe.toml +++ b/recipes/dev/gnu-make/recipe.toml @@ -15,7 +15,4 @@ script = """ DYNAMIC_INIT cp -rp "$COOKBOOK_SOURCE/." ./ cookbook_configure -""" - -[package] -shared-deps = ["libgcc"] +""" \ No newline at end of file diff --git a/recipes/dev/pkg-config/recipe.toml b/recipes/dev/pkg-config/recipe.toml index bb5992ee..d61a0ffb 100644 --- a/recipes/dev/pkg-config/recipe.toml +++ b/recipes/dev/pkg-config/recipe.toml @@ -16,11 +16,4 @@ template = "custom" script = """ DYNAMIC_INIT cookbook_configure -""" - -[package] -shared-deps = [ - "gettext", - "glib", - "libiconv", -] +""" \ No newline at end of file diff --git a/recipes/emulators/flycast/recipe.toml b/recipes/emulators/flycast/recipe.toml index 7dff7748..65e439c7 100644 --- a/recipes/emulators/flycast/recipe.toml +++ b/recipes/emulators/flycast/recipe.toml @@ -55,13 +55,4 @@ COOKBOOK_CONFIGURE_FLAGS=( "${COOKBOOK_SOURCE}" ) cookbook_configure -""" - -[package] -shared-deps = [ - "curl", - "libgcc", - "nghttp2", - "openssl1", - "zlib", -] \ No newline at end of file +""" \ No newline at end of file diff --git a/recipes/emulators/mednafen/recipe.toml b/recipes/emulators/mednafen/recipe.toml index b5220bd7..0f29da6a 100644 --- a/recipes/emulators/mednafen/recipe.toml +++ b/recipes/emulators/mednafen/recipe.toml @@ -23,11 +23,4 @@ COOKBOOK_CONFIGURE_FLAGS+=( --without-libflac ) cookbook_configure -""" - -[package] -shared-deps = [ - "liborbital", - "libiconv", - "libgcc", -] +""" \ No newline at end of file diff --git a/recipes/games/devilutionx/recipe.toml b/recipes/games/devilutionx/recipe.toml index 1598a1c8..b461e989 100644 --- a/recipes/games/devilutionx/recipe.toml +++ b/recipes/games/devilutionx/recipe.toml @@ -45,7 +45,4 @@ COOKBOOK_CONFIGURE_FLAGS+=( cookbook_configure mkdir -v "${COOKBOOK_STAGE}/bin" cp -v devilutionx "${COOKBOOK_STAGE}/bin" -""" - -[package] -shared-deps = ["bzip2", "libgcc", "libiconv", "liborbital", "sdl1", "zlib"] +""" \ No newline at end of file diff --git a/recipes/libs/glib/recipe.toml b/recipes/libs/glib/recipe.toml index 1de339b9..0a923ef0 100644 --- a/recipes/libs/glib/recipe.toml +++ b/recipes/libs/glib/recipe.toml @@ -57,12 +57,4 @@ meson \ -Dxattr=false ninja -v DESTDIR="${COOKBOOK_STAGE}" ninja install -""" - -#TODO: shared deps -[package] -shared-deps = [ - "libffi", - "libgcc", - "libiconv", -] +""" \ No newline at end of file diff --git a/recipes/libs/libffi/recipe.toml b/recipes/libs/libffi/recipe.toml index d8f82efd..a3ec7900 100644 --- a/recipes/libs/libffi/recipe.toml +++ b/recipes/libs/libffi/recipe.toml @@ -30,7 +30,4 @@ else ) fi cookbook_configure -""" - -[package] -shared-deps = ["libgcc"] +""" \ No newline at end of file diff --git a/recipes/libs/libgmp/recipe.toml b/recipes/libs/libgmp/recipe.toml index 2740fa0e..fd41e8aa 100644 --- a/recipes/libs/libgmp/recipe.toml +++ b/recipes/libs/libgmp/recipe.toml @@ -15,7 +15,4 @@ template = "custom" script = """ DYNAMIC_INIT cookbook_configure -""" - -[package] -shared-deps = ["libgcc"] +""" \ No newline at end of file diff --git a/recipes/libs/libiconv/recipe.toml b/recipes/libs/libiconv/recipe.toml index 7505d655..a19e844a 100644 --- a/recipes/libs/libiconv/recipe.toml +++ b/recipes/libs/libiconv/recipe.toml @@ -37,7 +37,4 @@ else ) fi cookbook_configure -""" - -[package] -shared-deps = ["libgcc"] +""" \ No newline at end of file diff --git a/recipes/libs/libmpfr/recipe.toml b/recipes/libs/libmpfr/recipe.toml index 35a05796..ab5477a9 100644 --- a/recipes/libs/libmpfr/recipe.toml +++ b/recipes/libs/libmpfr/recipe.toml @@ -14,7 +14,4 @@ dependencies = [ script = """ DYNAMIC_INIT cookbook_configure -""" - -[package] -shared-deps = ["libgcc", "libgmp"] +""" \ No newline at end of file diff --git a/recipes/libs/libssh2/recipe.toml b/recipes/libs/libssh2/recipe.toml index da1740d4..1b33f11a 100644 --- a/recipes/libs/libssh2/recipe.toml +++ b/recipes/libs/libssh2/recipe.toml @@ -12,11 +12,4 @@ dependencies = ["openssl1"] script = """ DYNAMIC_INIT cookbook_configure -""" - -[package] -shared-deps = [ - "libgcc", - "openssl1" -] - +""" \ No newline at end of file diff --git a/recipes/libs/mpc/recipe.toml b/recipes/libs/mpc/recipe.toml index f27c60ea..a3d31b91 100644 --- a/recipes/libs/mpc/recipe.toml +++ b/recipes/libs/mpc/recipe.toml @@ -17,11 +17,4 @@ dependencies = [ script = """ DYNAMIC_INIT cookbook_configure -""" - -[package] -shared-deps = [ - "libgcc", - "libgmp", - "libmpfr", -] +""" \ No newline at end of file diff --git a/recipes/libs/nghttp2/recipe.toml b/recipes/libs/nghttp2/recipe.toml index 05a5dec8..41bea400 100644 --- a/recipes/libs/nghttp2/recipe.toml +++ b/recipes/libs/nghttp2/recipe.toml @@ -15,7 +15,4 @@ COOKBOOK_CONFIGURE_FLAGS+=( --enable-lib-only ) cookbook_configure -""" - -[package] -shared-deps = ["libgcc"] +""" \ No newline at end of file diff --git a/recipes/libs/zlib/recipe.toml b/recipes/libs/zlib/recipe.toml index 5d062709..865247ba 100644 --- a/recipes/libs/zlib/recipe.toml +++ b/recipes/libs/zlib/recipe.toml @@ -11,7 +11,4 @@ CHOST="${TARGET}" "${COOKBOOK_CONFIGURE}" --prefix="/usr" "${COOKBOOK_MAKE}" -j "$(nproc)" "${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" patchelf --set-soname 'libz.so.1.3' "${COOKBOOK_STAGE}/usr/lib/libz.so.1.3" -""" - -[package] -shared-deps = ["libgcc"] +""" \ No newline at end of file diff --git a/recipes/tools/bzip2/recipe.toml b/recipes/tools/bzip2/recipe.toml index 94e92a27..f67ff24c 100644 --- a/recipes/tools/bzip2/recipe.toml +++ b/recipes/tools/bzip2/recipe.toml @@ -33,7 +33,4 @@ if ! [[ -n "${COOKBOOK_PREFER_STATIC}" ]]; then cp -v libbz2.so.1.0.8 "${COOKBOOK_STAGE}/lib" cp -v libbz2.so.1.0 "${COOKBOOK_STAGE}/lib" fi -""" - -[package] -shared-deps = ["libgcc"] +""" \ No newline at end of file diff --git a/recipes/tools/cosmic-files/recipe.toml b/recipes/tools/cosmic-files/recipe.toml index 9d6ee4bd..55da17ed 100644 --- a/recipes/tools/cosmic-files/recipe.toml +++ b/recipes/tools/cosmic-files/recipe.toml @@ -36,12 +36,4 @@ mkdir -pv "${COOKBOOK_STAGE}/usr/share/metainfo/" cp -v "${COOKBOOK_SOURCE}/res/${APPID}.metainfo.xml" "${COOKBOOK_STAGE}/usr/share/metainfo/" mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" cp -rv "${COOKBOOK_SOURCE}/res/icons/hicolor/" "${COOKBOOK_STAGE}/usr/share/icons/" -""" - -[package] -shared-deps = [ - "libgcc", - "gettext", - "libiconv" -] - +""" \ No newline at end of file diff --git a/recipes/tools/cosmic-settings/recipe.toml b/recipes/tools/cosmic-settings/recipe.toml index 38066ad5..5ddd74df 100644 --- a/recipes/tools/cosmic-settings/recipe.toml +++ b/recipes/tools/cosmic-settings/recipe.toml @@ -35,12 +35,4 @@ mkdir -pv "${COOKBOOK_STAGE}/usr/share/" cp -rv "${COOKBOOK_SOURCE}/resources/default_schema/" "${COOKBOOK_STAGE}/usr/share/cosmic/" mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" cp -rv "${COOKBOOK_SOURCE}/resources/icons/" "${COOKBOOK_STAGE}/usr/share/icons/hicolor/" -""" - -[package] -shared-deps = [ - "libgcc", - "gettext", - "libiconv" -] - +""" \ No newline at end of file diff --git a/recipes/tools/cosmic-store/recipe.toml b/recipes/tools/cosmic-store/recipe.toml index d449298f..5b1424fe 100644 --- a/recipes/tools/cosmic-store/recipe.toml +++ b/recipes/tools/cosmic-store/recipe.toml @@ -21,10 +21,4 @@ mkdir -pv "${COOKBOOK_STAGE}/usr/share/metainfo/" cp -v "${COOKBOOK_SOURCE}/res/${APPID}.metainfo.xml" "${COOKBOOK_STAGE}/usr/share/metainfo/" mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" cp -rv "${COOKBOOK_SOURCE}/res/icons/hicolor/" "${COOKBOOK_STAGE}/usr/share/icons/" -""" - -[package] -shared-deps = [ - "libgcc", - "openssl1", -] +""" \ No newline at end of file diff --git a/recipes/tools/cosmic-term/recipe.toml b/recipes/tools/cosmic-term/recipe.toml index 73adb456..f1232c53 100644 --- a/recipes/tools/cosmic-term/recipe.toml +++ b/recipes/tools/cosmic-term/recipe.toml @@ -17,10 +17,4 @@ mkdir -pv "${COOKBOOK_STAGE}/usr/share/metainfo/" cp -v "${COOKBOOK_SOURCE}/res/${APPID}.metainfo.xml" "${COOKBOOK_STAGE}/usr/share/metainfo/" mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" cp -rv "${COOKBOOK_SOURCE}/res/icons/hicolor/" "${COOKBOOK_STAGE}/usr/share/icons/" -""" - -[package] -shared-deps = [ - "libgcc" -] - +""" \ No newline at end of file diff --git a/recipes/tools/gettext/recipe.toml b/recipes/tools/gettext/recipe.toml index 8fe8b5a3..e3075157 100644 --- a/recipes/tools/gettext/recipe.toml +++ b/recipes/tools/gettext/recipe.toml @@ -35,11 +35,4 @@ COOKBOOK_CONFIGURE_FLAGS+=( gt_cv_locale_zh_CN=false ) cookbook_configure -""" - -[package] -shared-deps = [ - "libgcc", - "libiconv" -] - +""" \ No newline at end of file diff --git a/recipes/tools/gnu-binutils/recipe.toml b/recipes/tools/gnu-binutils/recipe.toml index ec269f38..dfb90fd7 100644 --- a/recipes/tools/gnu-binutils/recipe.toml +++ b/recipes/tools/gnu-binutils/recipe.toml @@ -34,13 +34,4 @@ COOKBOOK_CONFIGURE_FLAGS+=( ) cookbook_configure -""" - -[package] -shared-deps = [ - "libgcc", - "expat", - "libgmp", - "libmpfr", - "zlib", -] +""" \ No newline at end of file diff --git a/recipes/tools/patchelf/recipe.toml b/recipes/tools/patchelf/recipe.toml index 4e4cfc43..1399164c 100644 --- a/recipes/tools/patchelf/recipe.toml +++ b/recipes/tools/patchelf/recipe.toml @@ -11,8 +11,4 @@ template = "custom" script = """ DYNAMIC_INIT cookbook_configure -""" - -[package] -shared-deps = ["libgcc"] - +""" \ No newline at end of file diff --git a/recipes/web/netsurf/recipe.toml b/recipes/web/netsurf/recipe.toml index 3633db56..f185d275 100644 --- a/recipes/web/netsurf/recipe.toml +++ b/recipes/web/netsurf/recipe.toml @@ -39,18 +39,6 @@ cp -v "${COOKBOOK_RECIPE}/manifest" "$COOKBOOK_STAGE/ui/apps/00_netsurf" """ [package] -shared-deps = [ - # XXX: currently only the following are dynamically linked - "curl", - "libgcc", - "libiconv", - "liborbital", - "libpng", - "nghttp2", - "openssl1", - "relibc", - "zlib", -] dependencies = [ "ca-certificates", "orbital", diff --git a/recipes/wip/games/other/love/recipe.toml b/recipes/wip/games/other/love/recipe.toml index 18836508..e91b4d71 100644 --- a/recipes/wip/games/other/love/recipe.toml +++ b/recipes/wip/games/other/love/recipe.toml @@ -77,13 +77,4 @@ COOKBOOK_CONFIGURE_FLAGS=( # make install not possible, just copy love mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v love "${COOKBOOK_STAGE}/usr/bin/love" -""" - -[package] -shared-deps = [ - "libgcc", - "liborbital", - "libpng", - "luajit", - "zlib", -] +""" \ No newline at end of file diff --git a/recipes/wip/players/cosmic-player/recipe.toml b/recipes/wip/players/cosmic-player/recipe.toml index 5c341f1d..36b8ad11 100644 --- a/recipes/wip/players/cosmic-player/recipe.toml +++ b/recipes/wip/players/cosmic-player/recipe.toml @@ -34,16 +34,4 @@ mkdir -pv "${COOKBOOK_STAGE}/usr/share/metainfo/" cp -v "${COOKBOOK_SOURCE}/res/${APPID}.metainfo.xml" "${COOKBOOK_STAGE}/usr/share/metainfo/" mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" cp -rv "${COOKBOOK_SOURCE}/res/icons/hicolor/" "${COOKBOOK_STAGE}/usr/share/icons/" -""" - -[package] -shared-deps = [ - "libgcc", - "gettext", - "glib", - "gstreamer", - "libffi", - "libiconv", - "zlib", -] - +""" \ No newline at end of file diff --git a/recipes/wip/vm/qemu/recipe.toml b/recipes/wip/vm/qemu/recipe.toml index 2f7562f3..26a91a1f 100644 --- a/recipes/wip/vm/qemu/recipe.toml +++ b/recipes/wip/vm/qemu/recipe.toml @@ -47,18 +47,4 @@ case "${TARGET}" in ;; esac cookbook_configure -""" - -[package] -shared-deps = [ - "gettext", - "glib", - "libffi", - "libgcc", - "libiconv", - "liborbital", - "libpng", - "nghttp2", - "openssl1", - "zlib", -] +""" \ No newline at end of file diff --git a/repo.sh b/repo.sh index 11092f3b..5576efd7 100755 --- a/repo.sh +++ b/repo.sh @@ -93,16 +93,6 @@ mkdir -p "$REPO" declare -A APPSTREAM_SOURCES -# Currently, we only support runtime dependencies for recipes in the new TOML -# format. Runtime dependencies include both `[package.dependencies]` and -# [`package.shared_deps`]. -# -# The following adds the package dependencies of the recipes to the repo as -# well. -# -# TODO(?): All of this script can be moved into `cook.rs`. -recipes="$recipes $(target/release/runtime_deps_of $toml_recipes)" - for recipe in $recipes do recipe_path=`target/release/find_recipe $recipe` diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 44e697da..21fc13b8 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -2,25 +2,17 @@ use cookbook::blake3::blake3_progress; use cookbook::recipe::{BuildKind, CookRecipe, PackageRecipe, Recipe, SourceRecipe}; use cookbook::recipe_find::recipe_find; use std::{ + collections::BTreeSet, env, fs, io::{self, Write}, path::{Path, PathBuf}, process::{self, Command, Stdio}, + str, time::SystemTime, }; use termion::{color, style}; use walkdir::{DirEntry, WalkDir}; -fn should_build_shared() -> bool { - use std::sync::OnceLock; - static YES: OnceLock = OnceLock::new(); - *YES.get_or_init(|| { - env::var("COOKBOOK_PREFER_STATIC") - .expect("COOKBOOK_PREFER_STATIC") - .is_empty() - }) -} - fn remove_all(path: &Path) -> Result<(), String> { if path.is_dir() { fs::remove_dir_all(path) @@ -57,8 +49,15 @@ fn copy_dir_all(src: impl AsRef, dst: impl AsRef) -> io::Result<()> } fn symlink(original: impl AsRef, link: impl AsRef) -> Result<(), String> { - std::os::unix::fs::symlink(&original, &link) - .map_err(|err| format!("failed to symlink '{}' to '{}': {}\n{:?}", original.as_ref().display(), link.as_ref().display(), err, err)) + std::os::unix::fs::symlink(&original, &link).map_err(|err| { + format!( + "failed to symlink '{}' to '{}': {}\n{:?}", + original.as_ref().display(), + link.as_ref().display(), + err, + err + ) + }) } fn modified(path: &Path) -> Result { @@ -506,33 +505,126 @@ fi"#, Ok(source_dir) } +fn auto_deps(stage_dir: &Path, dep_pkgars: &BTreeSet<(String, PathBuf)>) -> BTreeSet { + let mut paths = BTreeSet::new(); + for dir in &[stage_dir.join("usr/bin"), stage_dir.join("usr/lib")] { + let Ok(read_dir) = fs::read_dir(&dir) else { + continue; + }; + for entry_res in read_dir { + let Ok(entry) = entry_res else { continue }; + let Ok(file_type) = entry.file_type() else { + continue; + }; + if file_type.is_file() { + paths.insert(entry.path()); + } + } + } + + let mut needed = BTreeSet::new(); + for path in paths { + let Ok(file) = fs::File::open(&path) else { + continue; + }; + let read_cache = object::ReadCache::new(file); + let Ok(object) = object::build::elf::Builder::read(&read_cache) else { + continue; + }; + let Some(dynamic_data) = object.dynamic_data() else { + continue; + }; + for dynamic in dynamic_data { + let object::build::elf::Dynamic::String { tag, val } = dynamic else { + continue; + }; + if *tag == object::elf::DT_NEEDED { + let Ok(name) = str::from_utf8(val) else { + continue; + }; + if let Ok(relative_path) = path.strip_prefix(stage_dir) { + eprintln!("DEBUG: {} needs {}", relative_path.display(), name); + } + needed.insert(name.to_string()); + } + } + } + + let mut missing = needed.clone(); + // relibc and friends will always be installed + for preinstalled in &[ + "libc.so.6", + "libgcc_s.so.1", + "libstdc++.so.6", + ] { + missing.remove(*preinstalled); + } + + let mut deps = BTreeSet::new(); + if let Ok(key_file) = pkgar_keys::PublicKeyFile::open("build/id_ed25519.pub.toml") { + for (dep, archive_path) in dep_pkgars.iter() { + let Ok(mut package) = pkgar::PackageFile::new(archive_path, &key_file.pkey) else { + continue; + }; + let Ok(entries) = pkgar_core::PackageSrc::read_entries(&mut package) else { + continue; + }; + for entry in entries { + let Ok(entry_path) = pkgar::ext::EntryExt::check_path(&entry) else { + continue; + }; + for prefix in &["lib", "usr/lib"] { + let Ok(child_path) = entry_path.strip_prefix(prefix) else { + continue; + }; + let Some(child_name) = child_path.to_str() else { + continue; + }; + if needed.contains(child_name) { + eprintln!("DEBUG: {} provides {}", dep, child_name); + deps.insert(dep.clone()); + missing.remove(child_name); + } + } + } + } + } + + for name in missing { + eprintln!("WARN: {} missing", name); + } + + deps +} + fn build( recipe_dir: &Path, source_dir: &Path, target_dir: &Path, name: &str, recipe: &Recipe, -) -> Result { - let mut dep_pkgars = vec![]; - for dependency in recipe.dependencies_iter() { +) -> Result<(PathBuf, BTreeSet), String> { + let mut dep_pkgars = BTreeSet::new(); + for dependency in recipe.build.dependencies.iter() { //TODO: sanitize name let dependency_dir = recipe_find(dependency, Path::new("recipes"))?; if dependency_dir.is_none() { return Err(format!("failed to find recipe directory '{}'", dependency)); } - dep_pkgars.push( + dep_pkgars.insert(( + dependency.to_string(), dependency_dir .unwrap() .join("target") .join(redoxer::target()) .join("stage.pkgar"), - ); + )); } let source_modified = modified_dir_ignore_git(source_dir)?; let deps_modified = dep_pkgars .iter() - .map(|pkgar| modified(pkgar)) + .map(|(_dep, pkgar)| modified(pkgar)) .max() .unwrap_or(Ok(SystemTime::UNIX_EPOCH))?; @@ -562,13 +654,10 @@ fn build( create_dir(&sysroot_dir_tmp.join("usr").join(folder))?; // Link sysroot/$folder sysroot/usr/$folder - symlink( - Path::new("usr").join(folder), - &sysroot_dir_tmp.join(folder), - )?; + symlink(Path::new("usr").join(folder), &sysroot_dir_tmp.join(folder))?; } - for archive_path in dep_pkgars { + for (_dep, archive_path) in &dep_pkgars { let public_path = "build/id_ed25519.pub.toml"; pkgar::extract( public_path, @@ -836,7 +925,10 @@ done rename(&stage_dir_tmp, &stage_dir)?; } - Ok(stage_dir) + // Calculate automatic dependencies + let auto_deps = auto_deps(&stage_dir, &dep_pkgars); + + Ok((stage_dir, auto_deps)) } fn package( @@ -845,6 +937,7 @@ fn package( target_dir: &Path, name: &str, recipe: &Recipe, + auto_deps: &BTreeSet, ) -> Result { //TODO: metadata like dependencies, name, and version let package = &recipe.package; @@ -894,11 +987,12 @@ fn package( target: String, depends: Vec, } - let depends = if should_build_shared() { - recipe.runtime_dependencies() - } else { - package.dependencies.clone() - }; + let mut depends = package.dependencies.clone(); + for dep in auto_deps.iter() { + if !depends.contains(dep) { + depends.push(dep.clone()); + } + } let stage_toml = toml::to_string(&StageToml { name: name.into(), version: "TODO".into(), @@ -931,11 +1025,18 @@ fn cook(recipe_dir: &Path, name: &str, recipe: &Recipe, fetch_only: bool) -> Res create_dir(&target_dir)?; } - let stage_dir = build(recipe_dir, &source_dir, &target_dir, name, &recipe) + let (stage_dir, auto_deps) = build(recipe_dir, &source_dir, &target_dir, name, &recipe) .map_err(|err| format!("failed to build: {}", err))?; - let _package_file = package(recipe_dir, &stage_dir, &target_dir, name, &recipe) - .map_err(|err| format!("failed to package: {}", err))?; + let _package_file = package( + recipe_dir, + &stage_dir, + &target_dir, + name, + &recipe, + &auto_deps, + ) + .map_err(|err| format!("failed to package: {}", err))?; Ok(()) } @@ -956,7 +1057,7 @@ fn main() { } } - let recipes = match CookRecipe::new_recursive(&recipe_names, 16, false) { + let recipes = match CookRecipe::new_recursive(&recipe_names, 16) { Ok(ok) => ok, Err(err) => { eprintln!( diff --git a/src/bin/runtime_deps_of.rs b/src/bin/runtime_deps_of.rs deleted file mode 100644 index 52f0e6b5..00000000 --- a/src/bin/runtime_deps_of.rs +++ /dev/null @@ -1,20 +0,0 @@ -use cookbook::recipe::CookRecipe; -use std::{env::args, process::ExitCode}; - -/// Same as `cookbook/src/bin/cook.rs`. -const DEP_DEPTH: usize = 16; - -fn usage() { - eprintln!("Usage: pkg_deps_of [package1 package2 ...]"); -} - -fn main() -> ExitCode { - let names = args().skip(1).collect::>(); - let recipes = CookRecipe::new_recursive(&names, DEP_DEPTH, true).expect("recipe not found"); - - for recipe in recipes { - println!("{}", recipe.name); - } - - ExitCode::SUCCESS -} diff --git a/src/recipe.rs b/src/recipe.rs index 907c79e9..cee56583 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -90,8 +90,6 @@ pub struct BuildRecipe { pub struct PackageRecipe { #[serde(default)] pub dependencies: Vec, - #[serde(rename = "shared-deps", default)] - pub shared_deps: Vec, } /// Everything required to build a Redox package @@ -106,33 +104,7 @@ pub struct Recipe { pub package: PackageRecipe, } -impl Recipe { - #[inline] - pub fn dependencies_iter(&self) -> impl Iterator { - self.build - .dependencies - .iter() - .chain(self.package.shared_deps.iter()) - } - - /// `[build.dependencies] + [package.shared_deps]` - #[inline] - pub fn dependencies(&self) -> Vec { - self.dependencies_iter().cloned().collect::>() - } - - /// `[package.dependencies] + [package.shared_deps]` - #[inline] - pub fn runtime_dependencies(&self) -> Vec { - self.package - .dependencies - .iter() - .chain(self.package.shared_deps.iter()) - .cloned() - .collect::>() - } -} - +#[derive(Debug, PartialEq)] pub struct CookRecipe { pub name: String, pub dir: PathBuf, @@ -173,12 +145,7 @@ impl CookRecipe { Ok(Self { name, dir, recipe }) } - //TODO: make this more efficient, smarter, and not return duplicates - pub fn new_recursive( - names: &[String], - recursion: usize, - runtime_deps_only: bool, - ) -> Result, String> { + pub fn new_recursive(names: &[String], recursion: usize) -> Result, String> { if recursion == 0 { return Err(format!( "recursion limit while processing build dependencies: {:#?}", @@ -189,25 +156,21 @@ impl CookRecipe { let mut recipes = Vec::new(); for name in names { let recipe = Self::new(name.clone())?; - let all_deps = recipe.recipe.dependencies(); - let runtime_deps = recipe.recipe.runtime_dependencies(); - let dependencies = Self::new_recursive( - if runtime_deps_only { - &runtime_deps - } else { - &all_deps - }, - recursion - 1, - runtime_deps_only, - ) - .map_err(|err| format!("{}: failed on loading build dependencies:\n{}", name, err))?; + let dependencies = + Self::new_recursive(&recipe.recipe.build.dependencies, recursion - 1).map_err( + |err| format!("{}: failed on loading build dependencies:\n{}", name, err), + )?; for dependency in dependencies { - recipes.push(dependency); + if !recipes.contains(&dependency) { + recipes.push(dependency); + } } - recipes.push(recipe); + if !recipes.contains(&recipe) { + recipes.push(recipe); + } } Ok(recipes) From 013180b55682128c323556d224783b5b69d8d898 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Apr 2025 11:32:23 -0600 Subject: [PATCH 2348/3180] fontconfig: fix build --- recipes/dev/fontconfig/recipe.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/recipes/dev/fontconfig/recipe.toml b/recipes/dev/fontconfig/recipe.toml index c7cb4404..10cd58be 100644 --- a/recipes/dev/fontconfig/recipe.toml +++ b/recipes/dev/fontconfig/recipe.toml @@ -22,5 +22,7 @@ COOKBOOK_CONFIGURE_FLAGS+=( --disable-docs \ ac_cv_func_XML_SetDoctypeDeclHandler=yes ) +export V=1 +export LIBS="-lpng -lz" cookbook_configure """ From cc93c7e4677b4f1f1b086e059bdea3ca7b5f1a7d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Apr 2025 12:26:26 -0600 Subject: [PATCH 2349/3180] liborbital: compile dynamically --- recipes/libs/liborbital/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/libs/liborbital/recipe.toml b/recipes/libs/liborbital/recipe.toml index cbbe41c9..0276ea61 100644 --- a/recipes/libs/liborbital/recipe.toml +++ b/recipes/libs/liborbital/recipe.toml @@ -4,6 +4,7 @@ git = "https://gitlab.redox-os.org/redox-os/liborbital.git" [build] template = "custom" script = """ +DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ "${COOKBOOK_CARGO}" build --release "${COOKBOOK_MAKE}" install HOST="${TARGET}" DESTDIR="${COOKBOOK_STAGE}" From a4fb5aad50ea9eb40d69ebf59383031291f9ad3c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Apr 2025 12:28:14 -0600 Subject: [PATCH 2350/3180] cairo: compile dynamically --- recipes/libs/cairo/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/libs/cairo/recipe.toml b/recipes/libs/cairo/recipe.toml index 5c818838..f468efa1 100644 --- a/recipes/libs/cairo/recipe.toml +++ b/recipes/libs/cairo/recipe.toml @@ -18,6 +18,7 @@ dependencies = [ ] template = "custom" script = """ +DYNAMIC_INIT export CFLAGS="-DCAIRO_NO_MUTEX=1" COOKBOOK_CONFIGURE_FLAGS+=( --enable-xlib=no From 6ecf45d21998d686816dfaaa031967517d20a149 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Apr 2025 12:50:07 -0600 Subject: [PATCH 2351/3180] ncursesw: convert to toml --- recipes/libs/ncursesw/01-config-sub.patch | 21 ----------------- recipes/libs/ncursesw/recipe.sh | 28 ----------------------- recipes/libs/ncursesw/recipe.toml | 25 ++++++++++++++++++++ 3 files changed, 25 insertions(+), 49 deletions(-) delete mode 100644 recipes/libs/ncursesw/01-config-sub.patch delete mode 100644 recipes/libs/ncursesw/recipe.sh create mode 100644 recipes/libs/ncursesw/recipe.toml diff --git a/recipes/libs/ncursesw/01-config-sub.patch b/recipes/libs/ncursesw/01-config-sub.patch deleted file mode 100644 index 8ed32be6..00000000 --- a/recipes/libs/ncursesw/01-config-sub.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -ru source/config.sub source-new/config.sub ---- source/config.sub 2015-05-02 13:52:04.000000000 +0200 -+++ source-new/config.sub 2017-08-13 13:12:16.485670615 +0200 -@@ -2,7 +2,7 @@ - # Configuration validation subroutine script. - # Copyright 1992-2015 Free Software Foundation, Inc. - --timestamp='2015-03-08' -+timestamp='2017-08-13' - - # This file is free software; you can redistribute it and/or modify it - # under the terms of the GNU General Public License as published by -@@ -1371,7 +1371,7 @@ - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. -- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ -+ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* | -redox* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* | -plan9* \ diff --git a/recipes/libs/ncursesw/recipe.sh b/recipes/libs/ncursesw/recipe.sh deleted file mode 100644 index 05c8e6ab..00000000 --- a/recipes/libs/ncursesw/recipe.sh +++ /dev/null @@ -1,28 +0,0 @@ -VERSION=6.0 -TAR=https://ftp.gnu.org/gnu/ncurses/ncurses-$VERSION.tar.gz -DEPENDS="terminfo" - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - export CPPFLAGS="-P" - ./configure --build=${BUILD} --host=${HOST} --prefix="" --enable-widec --disable-db-install - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -rf "$1"/bin - rm -rf "$1"/share/{doc,info,man} - skip=1 -} diff --git a/recipes/libs/ncursesw/recipe.toml b/recipes/libs/ncursesw/recipe.toml new file mode 100644 index 00000000..f1733fe4 --- /dev/null +++ b/recipes/libs/ncursesw/recipe.toml @@ -0,0 +1,25 @@ +[source] +tar = "https://ftp.gnu.org/gnu/ncurses/ncurses-6.4.tar.gz" +blake3 = "0d1c9fdf53c0ca4bd66ba707d49a079d2dd6f5a960cdec74a56e29952c4ffe73" + +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --disable-db-install + --disable-ext-colors + --enable-widec + --without-ada + --without-cxx-binding + --without-tests + cf_cv_func_mkstemp=yes + cf_cv_wint_t=yes +) +cookbook_configure +rm -rfv "${COOKBOOK_STAGE}/bin" "${COOKBOOK_STAGE}/share/"{doc,info,man} +""" + +[package] +dependencies = [ + "terminfo", +] From cf466761a49c4a83ba8654cdb53d5af39f6d6f37 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Apr 2025 13:48:24 -0600 Subject: [PATCH 2352/3180] libicu: fix compilation --- recipes/wip/libs/other/libicu/recipe.toml | 47 ++++++++++++++++++++++- recipes/wip/libs/other/libicu/redox.patch | 12 ++++++ 2 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 recipes/wip/libs/other/libicu/redox.patch diff --git a/recipes/wip/libs/other/libicu/recipe.toml b/recipes/wip/libs/other/libicu/recipe.toml index 98cc9072..324ecdb8 100644 --- a/recipes/wip/libs/other/libicu/recipe.toml +++ b/recipes/wip/libs/other/libicu/recipe.toml @@ -1,5 +1,48 @@ -#TODO missing script for building [source] -tar = "https://github.com/unicode-org/icu/releases/download/release-74-1/icu4c-74_1-src.tgz" +tar = "https://github.com/unicode-org/icu/releases/download/release-77-1/icu4c-77_1-src.tgz" +blake3 = "8f51c4e4c6577b61d02921e800ddb0a2d4778addf7717eef4c5bb0e8a5582c3a" +patches = ["redox.patch"] + [build] template = "custom" +script = """ +COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/source/configure" +mkdir -p host +pushd host +#TODO: easier way to build for host? +HOST_ENV=( + env + --unset=AR + --unset=AS + --unset=CC + --unset=CFLAGS + --unset=CPPFLAGS + --unset=CXX + --unset=GNU_TARGET + --unset=LD + --unset=LDFLAGS + --unset=NM + --unset=OBJCOPY + --unset=OBJDUMP + --unset=PKG_CONFIG + --unset=PKG_CONFIG_ALLOW_CROSS + --unset=PKG_CONFIG_FOR_BUILD + --unset=PKG_CONFIG_LIBDIR + --unset=PKG_CONFIG_PATH + --unset=PKG_CONFIG_SYSROOT_DIR + --unset=PREFIX_RUSTFLAGS + --unset=RANLIB + --unset=READELF + --unset=STRIP + --unset=TARGET +) +"${HOST_ENV[@]}" printenv | sort +"${HOST_ENV[@]}" "${COOKBOOK_CONFIGURE}" +"${HOST_ENV[@]}" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" +popd +COOKBOOK_CONFIGURE_FLAGS+=( + --with-cross-build="${COOKBOOK_BUILD}/host" + icu_cv_host_frag=mh-linux +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/libicu/redox.patch b/recipes/wip/libs/other/libicu/redox.patch new file mode 100644 index 00000000..659b2df1 --- /dev/null +++ b/recipes/wip/libs/other/libicu/redox.patch @@ -0,0 +1,12 @@ +diff -ruwN icu/source/common/unicode/ptypes.h source/source/common/unicode/ptypes.h +--- icu/source/common/unicode/ptypes.h 2025-03-13 12:31:23.000000000 -0600 ++++ source/source/common/unicode/ptypes.h 2025-04-11 13:46:44.105116183 -0600 +@@ -56,7 +56,7 @@ + // implementations (looking at you, Apple, spring 2024) actually do this, so + // ICU4C must detect and deal with that. + #if !defined(__cplusplus) && !defined(U_IN_DOXYGEN) +-# if U_HAVE_CHAR16_T ++# if U_HAVE_CHAR16_T && !defined(__redox__) + # include + # else + typedef uint16_t char16_t; From f7d1d2360f9c73e4033a478419ad8499f79c8ba4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Apr 2025 14:02:30 -0600 Subject: [PATCH 2353/3180] sdl2-ttf: convert to toml and compile dynamicaly --- recipes/libs/sdl2-ttf/recipe.sh | 31 ------------------------------- recipes/libs/sdl2-ttf/recipe.toml | 27 +++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 31 deletions(-) delete mode 100644 recipes/libs/sdl2-ttf/recipe.sh create mode 100644 recipes/libs/sdl2-ttf/recipe.toml diff --git a/recipes/libs/sdl2-ttf/recipe.sh b/recipes/libs/sdl2-ttf/recipe.sh deleted file mode 100644 index d6e4a81c..00000000 --- a/recipes/libs/sdl2-ttf/recipe.sh +++ /dev/null @@ -1,31 +0,0 @@ -VERSION=2.0.15 -TAR=https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-$VERSION.tar.gz -BUILD_DEPENDS=(sdl2 liborbital llvm18 mesa freetype2 libpng zlib) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib" - export SDL_LIBS="-lSDL2 -lorbital $("${PKG_CONFIG}" --libs osmesa) -lz -lm -lpthread -lstdc++" - ./autogen.sh - ./configure --prefix=/ --build=${BUILD} --host=${HOST} --enable-opengl --disable-shared --disable-sdltest - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/libs/sdl2-ttf/recipe.toml b/recipes/libs/sdl2-ttf/recipe.toml new file mode 100644 index 00000000..b8dec8c9 --- /dev/null +++ b/recipes/libs/sdl2-ttf/recipe.toml @@ -0,0 +1,27 @@ +[source] +tar = "https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-2.0.15.tar.gz" +blake3 = "" +script = """ +./autogen.sh +""" + +[build] +dependencies = [ + "freetype2", + "liborbital", + "libpng", + "llvm18", + "mesa", + "sdl2", + "zlib", +] +template = "custom" +script = """ +DYNAMIC_INIT +export SDL_LIBS="-lSDL2 -lorbital $("${PKG_CONFIG}" --libs osmesa) -lpng -lz -lm -lpthread -lstdc++" +COOKBOOK_CONFIGURE_FLAGS+=( + --disable-sdltest + --enable-opengl +) +cookbook_configure +""" From c2b50d8f3080331a4b3953096d7071964e95d647 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Apr 2025 14:06:24 -0600 Subject: [PATCH 2354/3180] sdl2-ttf: add blake3 hash --- recipes/libs/sdl2-ttf/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/libs/sdl2-ttf/recipe.toml b/recipes/libs/sdl2-ttf/recipe.toml index b8dec8c9..2d74b62f 100644 --- a/recipes/libs/sdl2-ttf/recipe.toml +++ b/recipes/libs/sdl2-ttf/recipe.toml @@ -1,6 +1,6 @@ [source] tar = "https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-2.0.15.tar.gz" -blake3 = "" +blake3 = "9814a07f33a3501b414f0fc7fa962e7d7ffc56748406f3798b7698b8d7e7fe12" script = """ ./autogen.sh """ From a114578c39623ee27035edaea06ef1492b6c1cd5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Apr 2025 14:10:08 -0600 Subject: [PATCH 2355/3180] Add sdl2-gfx --- recipes/libs/sdl2-gfx/recipe.toml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 recipes/libs/sdl2-gfx/recipe.toml diff --git a/recipes/libs/sdl2-gfx/recipe.toml b/recipes/libs/sdl2-gfx/recipe.toml new file mode 100644 index 00000000..8ceefde4 --- /dev/null +++ b/recipes/libs/sdl2-gfx/recipe.toml @@ -0,0 +1,26 @@ +[source] +tar = "http://www.ferzkopp.net/Software/SDL2_gfx/SDL2_gfx-1.0.4.tar.gz" +blake3 = "2e9bd2dc0f004349b51418f33219ebf5cd69f25ed0ba660373652a662cbb857c" +script = """ +wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +""" + +[build] +dependencies = [ + "freetype2", + "liborbital", + "libpng", + "llvm18", + "mesa", + "sdl2", + "zlib", +] +template = "custom" +script = """ +DYNAMIC_INIT +export SDL_LIBS="-lSDL2 -lorbital $("${PKG_CONFIG}" --libs osmesa) -lpng -lz -lm -lpthread -lstdc++" +COOKBOOK_CONFIGURE_FLAGS+=( + --disable-sdltest +) +cookbook_configure +""" From 8cd41a714ce30540552e03fe92f0327bf7d4a428 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Apr 2025 14:39:30 -0600 Subject: [PATCH 2356/3180] libicu: compile dynamically --- recipes/wip/libs/other/libicu/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/libs/other/libicu/recipe.toml b/recipes/wip/libs/other/libicu/recipe.toml index 324ecdb8..af611d53 100644 --- a/recipes/wip/libs/other/libicu/recipe.toml +++ b/recipes/wip/libs/other/libicu/recipe.toml @@ -6,6 +6,7 @@ patches = ["redox.patch"] [build] template = "custom" script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/source/configure" mkdir -p host pushd host From 4a30b2e4ad31ae6f4ad364caee90c9af2a8ea144 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Apr 2025 14:40:15 -0600 Subject: [PATCH 2357/3180] sdl2-image: compile dynamically --- recipes/libs/sdl2-image/recipe.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/libs/sdl2-image/recipe.toml b/recipes/libs/sdl2-image/recipe.toml index 4c36128e..94c49908 100644 --- a/recipes/libs/sdl2-image/recipe.toml +++ b/recipes/libs/sdl2-image/recipe.toml @@ -13,15 +13,15 @@ dependencies = [ "zlib", ] script = """ +DYNAMIC_INIT export SDL_LIBS="-lSDL2 -lorbital $("${TARGET}-pkg-config" --libs osmesa) -lstdc++" COOKBOOK_CONFIGURE_FLAGS=( - --prefix=/ + --prefix=/usr --host="${TARGET}" - --disable-shared --disable-sdltest + --enable-shared --enable-png --enable-jpg ) -set -x cookbook_configure """ From 0411dca9a8c6939845019f23150a237931070ab4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Apr 2025 14:50:20 -0600 Subject: [PATCH 2358/3180] freeciv: convert to toml --- recipes/games/freeciv/01_redox.patch | 18 ---------- recipes/games/freeciv/recipe.sh | 44 ------------------------ recipes/games/freeciv/recipe.toml | 51 ++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 62 deletions(-) delete mode 100644 recipes/games/freeciv/01_redox.patch delete mode 100644 recipes/games/freeciv/recipe.sh create mode 100644 recipes/games/freeciv/recipe.toml diff --git a/recipes/games/freeciv/01_redox.patch b/recipes/games/freeciv/01_redox.patch deleted file mode 100644 index 00725263..00000000 --- a/recipes/games/freeciv/01_redox.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff -ruw source/client/servers.c source-new/client/servers.c ---- source/client/servers.c 2018-07-21 15:42:11.000000000 -0600 -+++ source-new/client/servers.c 2018-12-10 09:31:49.817815930 -0700 -@@ -80,6 +80,14 @@ - - #include "gui_main_g.h" - -+// Redox patches -+#define IP_ADD_MEMBERSHIP 35 -+#define IP_MULTICAST_TTL 33 -+struct ip_mreq { -+ struct in_addr imr_multiaddr; /* IP multicast address of group */ -+ struct in_addr imr_interface; /* local IP address of interface */ -+}; -+ - struct server_scan { - enum server_scan_type type; - ServerScanErrorFunc error_func; diff --git a/recipes/games/freeciv/recipe.sh b/recipes/games/freeciv/recipe.sh deleted file mode 100644 index b2785894..00000000 --- a/recipes/games/freeciv/recipe.sh +++ /dev/null @@ -1,44 +0,0 @@ -VERSION=2.6.6 -TAR=https://files.freeciv.org/stable/freeciv-$VERSION.tar.bz2 -BUILD_DEPENDS=(curl freetype2 libiconv liborbital libpng openssl1 nghttp2 sdl1 sdl-gfx sdl1-image sdl1-mixer sdl1-ttf zlib) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - wget -O bootstrap/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib --static" - export SDL_CONFIG="$sysroot/bin/sdl-config" - ./configure \ - --build=${BUILD} \ - --host="$HOST" \ - --prefix='' \ - --disable-server \ - --enable-ipv6=no \ - --enable-client=sdl \ - --enable-fcmp=cli \ - --with-ft-prefix="$sysroot" \ - --with-sdl-prefix="$sysroot" \ - ac_cv_lib_SDL_image_IMG_Load=yes \ - ac_cv_lib_SDL_ttf_TTF_OpenFont=yes \ - ac_cv_lib_SDL_gfx_rotozoomSurface=yes \ - gui_sdl_cflags="${CFLAGS}" \ - gui_sdl_ldflags="${LDFLAGS}" - "$REDOX_MAKE" -j"$($NPROC)" V=1 - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - skip=1 -} diff --git a/recipes/games/freeciv/recipe.toml b/recipes/games/freeciv/recipe.toml new file mode 100644 index 00000000..65c721f9 --- /dev/null +++ b/recipes/games/freeciv/recipe.toml @@ -0,0 +1,51 @@ +[source] +tar = "https://files.freeciv.org/stable/freeciv-3.1.4.tar.xz" +blake3 = "212630af5e50fb72662ca62a71cdd57318d0cf309b53e46377dd24c8199923a4" + +[build] +dependencies = [ + "curl", + "freetype2", + "libiconv", + "libicu", + "liborbital", + "libjpeg", + "libpng", + "llvm18", + "openssl1", + "mesa", + "nghttp2", + "sdl2", + "sdl2-gfx", + "sdl2-image", + "sdl2-ttf", + "zlib", +] +template = "custom" +script = """ +DYNAMIC_INIT +export SDL2_LIBS="\ + -lSDL2_gfx \ + -lSDL2_image \ + -lSDL2_ttf \ + -lSDL2 \ + -lorbital \ + $("${PKG_CONFIG}" --libs osmesa) \ + -ljpeg \ + -lpng \ + -lz \ + -lstdc++ \ +" +COOKBOOK_CONFIGURE_FLAGS+=( + --disable-server + --enable-fcdb=no + --enable-fcmp=no + --enable-ipv6=no + --enable-client=sdl2 + ac_cv_lib_SDL2_gfx_rotozoomSurface=yes + ac_cv_lib_SDL2_image_IMG_Load=yes + ac_cv_lib_SDL2_ttf_TTF_OpenFont=yes +) +export V=1 +cookbook_configure +""" \ No newline at end of file From ffcb1486c1dd06142251286ab85632bfd86585b8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Apr 2025 15:17:23 -0600 Subject: [PATCH 2359/3180] libicu: fix compilation --- recipes/wip/libs/other/libicu/recipe.toml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/recipes/wip/libs/other/libicu/recipe.toml b/recipes/wip/libs/other/libicu/recipe.toml index af611d53..94c0307a 100644 --- a/recipes/wip/libs/other/libicu/recipe.toml +++ b/recipes/wip/libs/other/libicu/recipe.toml @@ -42,8 +42,16 @@ HOST_ENV=( "${HOST_ENV[@]}" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" popd COOKBOOK_CONFIGURE_FLAGS+=( + --disable-extras + --disable-icu-config + --disable-renaming + --disable-samples + --disable-tools + --disable-tools --with-cross-build="${COOKBOOK_BUILD}/host" icu_cv_host_frag=mh-linux ) +# libicu uses TARGET for something else +unset TARGET cookbook_configure """ From 682297ad3aa0ac9e4d9ecdfade77d39d039f0848 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Apr 2025 15:27:51 -0600 Subject: [PATCH 2360/3180] libicu: enable renaming and other config options --- recipes/wip/libs/other/libicu/recipe.toml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/recipes/wip/libs/other/libicu/recipe.toml b/recipes/wip/libs/other/libicu/recipe.toml index 94c0307a..12439b92 100644 --- a/recipes/wip/libs/other/libicu/recipe.toml +++ b/recipes/wip/libs/other/libicu/recipe.toml @@ -42,12 +42,6 @@ HOST_ENV=( "${HOST_ENV[@]}" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" popd COOKBOOK_CONFIGURE_FLAGS+=( - --disable-extras - --disable-icu-config - --disable-renaming - --disable-samples - --disable-tools - --disable-tools --with-cross-build="${COOKBOOK_BUILD}/host" icu_cv_host_frag=mh-linux ) From 6da41f927afe5bab5ed1752446bdf8d9bdba0da6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Apr 2025 15:34:48 -0600 Subject: [PATCH 2361/3180] freeciv: fix compilation --- recipes/games/freeciv/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/games/freeciv/recipe.toml b/recipes/games/freeciv/recipe.toml index 65c721f9..53abc12c 100644 --- a/recipes/games/freeciv/recipe.toml +++ b/recipes/games/freeciv/recipe.toml @@ -24,6 +24,7 @@ dependencies = [ template = "custom" script = """ DYNAMIC_INIT +export ICU_LIBS="-licuuc -licudata -lstdc++" export SDL2_LIBS="\ -lSDL2_gfx \ -lSDL2_image \ @@ -34,7 +35,6 @@ export SDL2_LIBS="\ -ljpeg \ -lpng \ -lz \ - -lstdc++ \ " COOKBOOK_CONFIGURE_FLAGS+=( --disable-server From 3260ce4f5fdb2946f3d5d80b0156d75cd90b19b2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Apr 2025 15:49:34 -0600 Subject: [PATCH 2362/3180] devilutionx: fix dependencies --- recipes/games/devilutionx/recipe.toml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/recipes/games/devilutionx/recipe.toml b/recipes/games/devilutionx/recipe.toml index b461e989..d73af06a 100644 --- a/recipes/games/devilutionx/recipe.toml +++ b/recipes/games/devilutionx/recipe.toml @@ -4,14 +4,16 @@ blake3 = "d4a61ff3a7c69d86a29158918aad48ab9c4866c6a22a3e8da5feadbb7d23b3ca" [build] template = "custom" -dependencies = ["libiconv", "liborbital", "sdl1"] +dependencies = [ + "bzip2", + "libiconv", + "liborbital", + "sdl1", + "zlib", +] script = """ DYNAMIC_INIT -# export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include" -# export CXXFLAGS="${CXXFLAGS} -I${COOKBOOK_SYSROOT}/include" -# export LDFLAGS="${LDFLAGS} -L${COOKBOOK_SYSROOT}/lib" - COOKBOOK_CONFIGURE="cmake" if [[ -n "${COOKBOOK_PREFER_STATIC}" ]]; then @@ -45,4 +47,4 @@ COOKBOOK_CONFIGURE_FLAGS+=( cookbook_configure mkdir -v "${COOKBOOK_STAGE}/bin" cp -v devilutionx "${COOKBOOK_STAGE}/bin" -""" \ No newline at end of file +""" From bfcb7a16ee5a18511500ca88a0dde73b388fdec7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Apr 2025 18:43:09 -0600 Subject: [PATCH 2363/3180] uutils: update to upstream --- recipes/core/uutils/recipe.toml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/core/uutils/recipe.toml b/recipes/core/uutils/recipe.toml index 9008fd71..9ba3e618 100644 --- a/recipes/core/uutils/recipe.toml +++ b/recipes/core/uutils/recipe.toml @@ -1,6 +1,5 @@ [source] -git = "https://gitlab.redox-os.org/andrey.turkin/uutils.git" -branch = "cc-fix" +git = "https://github.com/uutils/coreutils" [build] template = "custom" From aada86d013d49399a3e6c0a86e76531b0bd34ef2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 11 Apr 2025 21:01:06 -0600 Subject: [PATCH 2364/3180] freeciv: enable server --- recipes/games/freeciv/recipe.toml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/games/freeciv/recipe.toml b/recipes/games/freeciv/recipe.toml index 53abc12c..1ee11545 100644 --- a/recipes/games/freeciv/recipe.toml +++ b/recipes/games/freeciv/recipe.toml @@ -37,7 +37,6 @@ export SDL2_LIBS="\ -lz \ " COOKBOOK_CONFIGURE_FLAGS+=( - --disable-server --enable-fcdb=no --enable-fcmp=no --enable-ipv6=no @@ -48,4 +47,4 @@ COOKBOOK_CONFIGURE_FLAGS+=( ) export V=1 cookbook_configure -""" \ No newline at end of file +""" From 73247441de2eb5a73cc1939d4fd9e2f55b3883d6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 12 Apr 2025 08:26:35 -0600 Subject: [PATCH 2365/3180] repo.sh: add todo to publish package dependencies --- repo.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/repo.sh b/repo.sh index 5576efd7..80adec4e 100755 --- a/repo.sh +++ b/repo.sh @@ -107,6 +107,9 @@ do cp -v "${COOKBOOK_STAGE}.toml" "$REPO/$recipe.toml" fi + #TODO: PUBLISH DEPENDENCIES (RECURSIVELY) + #grep '^depends = ' "$REPO/$recipe.toml | cut -d '[' -f2 | cut -d ']' -f1 | tr -d ',' + if [ -e "${COOKBOOK_STAGE}/usr/share/metainfo" ] then APPSTREAM_SOURCES["$recipe"]="${COOKBOOK_STAGE}" From 26709f928234a9443a12ac681715cee425c85a27 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 12 Apr 2025 19:13:14 +0200 Subject: [PATCH 2366/3180] Statically link ion This increases the chance that it is possible to inspect the state of a system when something went wrong with libc or the dynamic linker. Eg due to borked or partial update. --- recipes/core/ion/recipe.toml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/core/ion/recipe.toml b/recipes/core/ion/recipe.toml index eb746ff6..cdabcdc3 100644 --- a/recipes/core/ion/recipe.toml +++ b/recipes/core/ion/recipe.toml @@ -4,6 +4,5 @@ git = "https://gitlab.redox-os.org/redox-os/ion.git" [build] template = "custom" script = """ -DYNAMIC_INIT cookbook_cargo -""" \ No newline at end of file +""" From f9cd5a5901140b13f711686fc2e3bc99cac01f7b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 14 Apr 2025 08:09:01 -0600 Subject: [PATCH 2367/3180] Calculate package dependencies for publish again --- repo.sh | 13 ++++++-- src/bin/cook.rs | 15 ++------- src/bin/pkg_deps.rs | 20 ++++++++++++ src/lib.rs | 1 + src/package.rs | 77 +++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 110 insertions(+), 16 deletions(-) create mode 100644 src/bin/pkg_deps.rs create mode 100644 src/package.rs diff --git a/repo.sh b/repo.sh index 80adec4e..a478cce0 100755 --- a/repo.sh +++ b/repo.sh @@ -93,6 +93,16 @@ mkdir -p "$REPO" declare -A APPSTREAM_SOURCES +# Currently, we only support runtime dependencies for recipes in the new TOML +# format. Runtime dependencies include both `[package.dependencies]` and +# [`package.shared_deps`]. +# +# The following adds the package dependencies of the recipes to the repo as +# well. +# +# TODO(?): All of this script can be moved into `cook.rs`. +recipes="$recipes $(target/release/pkg_deps $toml_recipes)" + for recipe in $recipes do recipe_path=`target/release/find_recipe $recipe` @@ -107,9 +117,6 @@ do cp -v "${COOKBOOK_STAGE}.toml" "$REPO/$recipe.toml" fi - #TODO: PUBLISH DEPENDENCIES (RECURSIVELY) - #grep '^depends = ' "$REPO/$recipe.toml | cut -d '[' -f2 | cut -d ']' -f1 | tr -d ',' - if [ -e "${COOKBOOK_STAGE}/usr/share/metainfo" ] then APPSTREAM_SOURCES["$recipe"]="${COOKBOOK_STAGE}" diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 21fc13b8..e7883443 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1,4 +1,5 @@ use cookbook::blake3::blake3_progress; +use cookbook::package::StageToml; use cookbook::recipe::{BuildKind, CookRecipe, PackageRecipe, Recipe, SourceRecipe}; use cookbook::recipe_find::recipe_find; use std::{ @@ -552,11 +553,7 @@ fn auto_deps(stage_dir: &Path, dep_pkgars: &BTreeSet<(String, PathBuf)>) -> BTre let mut missing = needed.clone(); // relibc and friends will always be installed - for preinstalled in &[ - "libc.so.6", - "libgcc_s.so.1", - "libstdc++.so.6", - ] { + for preinstalled in &["libc.so.6", "libgcc_s.so.1", "libstdc++.so.6"] { missing.remove(*preinstalled); } @@ -979,14 +976,6 @@ fn package( ) .map_err(|err| format!("failed to create pkgar archive: {:?}", err))?; - //TODO: share struct with pkgutils? - #[derive(serde::Serialize)] - struct StageToml { - name: String, - version: String, - target: String, - depends: Vec, - } let mut depends = package.dependencies.clone(); for dep in auto_deps.iter() { if !depends.contains(dep) { diff --git a/src/bin/pkg_deps.rs b/src/bin/pkg_deps.rs new file mode 100644 index 00000000..2265cdfd --- /dev/null +++ b/src/bin/pkg_deps.rs @@ -0,0 +1,20 @@ +use cookbook::package::StageToml; +use std::{env::args, process::ExitCode}; + +/// Same as `cookbook/src/bin/cook.rs`. +const DEP_DEPTH: usize = 16; + +fn usage() { + eprintln!("Usage: pkg_deps [package1 package2 ...]"); +} + +fn main() -> ExitCode { + let names = args().skip(1).collect::>(); + let packages = StageToml::new_recursive(&names, DEP_DEPTH).expect("package not found"); + + for package in packages { + println!("{}", package.name); + } + + ExitCode::SUCCESS +} diff --git a/src/lib.rs b/src/lib.rs index 29b67806..78e3b9a1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,5 @@ pub mod blake3; +pub mod package; pub mod recipe; pub mod recipe_find; diff --git a/src/package.rs b/src/package.rs new file mode 100644 index 00000000..15d1815f --- /dev/null +++ b/src/package.rs @@ -0,0 +1,77 @@ +use std::{env, fs, path::Path}; + +use crate::recipe_find::recipe_find; + +//TODO: share struct with pkgutils? +#[derive(PartialEq, serde::Deserialize, serde::Serialize)] +pub struct StageToml { + pub name: String, + pub version: String, + pub target: String, + pub depends: Vec, +} + +impl StageToml { + pub fn new(name: String) -> Result { + //TODO: sanitize recipe name? + let dir = recipe_find(&name, Path::new("recipes"))?; + if dir.is_none() { + return Err(format!("failed to find recipe directory '{}'", name)); + } + let dir = dir.unwrap(); + let target = + env::var("TARGET").map_err(|err| format!("failed to read TARGET: {:?}", err))?; + + let file = dir.join("target").join(target).join("stage.toml"); + if !file.is_file() { + return Err(format!("failed to find package file '{}'", file.display())); + } + + let toml = fs::read_to_string(&file).map_err(|err| { + format!( + "failed to read package file '{}': {}\n{:#?}", + file.display(), + err, + err + ) + })?; + + toml::from_str(&toml).map_err(|err| { + format!( + "failed to parse package file '{}': {}\n{:#?}", + file.display(), + err, + err + ) + }) + } + + pub fn new_recursive(names: &[String], recursion: usize) -> Result, String> { + if recursion == 0 { + return Err(format!( + "recursion limit while processing build dependencies: {:#?}", + names + )); + } + + let mut packages = Vec::new(); + for name in names { + let package = Self::new(name.clone())?; + + let dependencies = Self::new_recursive(&package.depends, recursion - 1) + .map_err(|err| format!("{}: failed on loading dependencies:\n{}", name, err))?; + + for dependency in dependencies { + if !packages.contains(&dependency) { + packages.push(dependency); + } + } + + if !packages.contains(&package) { + packages.push(package); + } + } + + Ok(packages) + } +} From 6fa969f20812054df73ca5bf3967754e0d3d7ab9 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Mon, 14 Apr 2025 20:20:07 +0200 Subject: [PATCH 2368/3180] Remove setuid bit from sudo --- recipes/core/userutils/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/core/userutils/recipe.toml b/recipes/core/userutils/recipe.toml index ef6c897b..68c1a88d 100644 --- a/recipes/core/userutils/recipe.toml +++ b/recipes/core/userutils/recipe.toml @@ -8,6 +8,5 @@ cookbook_cargo cp -rv "${COOKBOOK_SOURCE}/res" "${COOKBOOK_STAGE}/etc" ln -s id "${COOKBOOK_STAGE}/usr/bin/whoami" chmod +s "${COOKBOOK_STAGE}/usr/bin/passwd" -chmod +s "${COOKBOOK_STAGE}/usr/bin/sudo" chmod +s "${COOKBOOK_STAGE}/usr/bin/su" """ From 87fa597911681d9e03dcbe389a876b39b10f1ea4 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 15 Apr 2025 23:06:29 +0000 Subject: [PATCH 2369/3180] Add Smithay compositors --- recipes/wip/demos/anvil/recipe.toml | 22 ++++++++++++++++++++++ recipes/wip/demos/smallvil/recipe.toml | 8 ++++++++ 2 files changed, 30 insertions(+) create mode 100644 recipes/wip/demos/anvil/recipe.toml create mode 100644 recipes/wip/demos/smallvil/recipe.toml diff --git a/recipes/wip/demos/anvil/recipe.toml b/recipes/wip/demos/anvil/recipe.toml new file mode 100644 index 00000000..4f53c48d --- /dev/null +++ b/recipes/wip/demos/anvil/recipe.toml @@ -0,0 +1,22 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Smithay/smithay" +[build] +dependencies = [ + "libwayland", + "libxkbcommon", +] +template = "custom" +script = """ +script = """ +package=anvil +"${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --package "${package}" \ + --release + --winit + mkdir -pv "${COOKBOOK_STAGE}/usr/bin" + cp -v \ + "target/${TARGET}/release/${package}" \ + "${COOKBOOK_STAGE}/usr/bin/${package}" +""" diff --git a/recipes/wip/demos/smallvil/recipe.toml b/recipes/wip/demos/smallvil/recipe.toml new file mode 100644 index 00000000..668b1fea --- /dev/null +++ b/recipes/wip/demos/smallvil/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Smithay/smithay" +[build] +template = "custom" +script = """ +cookbook_cargo_packages smallvil +""" From 9416c88e8da7fed9ab772fdf14bd7b62338fc4c1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 15 Apr 2025 23:33:59 +0000 Subject: [PATCH 2370/3180] Add recipes --- recipes/wip/demos/uniocr/recipe.toml | 8 ++++++++ recipes/wip/image/other/ferrishot/recipe.toml | 11 +++++++++++ recipes/wip/net/remote/shared/recipe.toml | 5 +++++ recipes/wip/sound/shezem-rs/recipe.toml | 5 +++++ recipes/wip/terminal/countryfetch/recipe.toml | 8 ++++++++ recipes/wip/tui/regname/recipe.toml | 5 +++++ 6 files changed, 42 insertions(+) create mode 100644 recipes/wip/demos/uniocr/recipe.toml create mode 100644 recipes/wip/image/other/ferrishot/recipe.toml create mode 100644 recipes/wip/net/remote/shared/recipe.toml create mode 100644 recipes/wip/sound/shezem-rs/recipe.toml create mode 100644 recipes/wip/terminal/countryfetch/recipe.toml create mode 100644 recipes/wip/tui/regname/recipe.toml diff --git a/recipes/wip/demos/uniocr/recipe.toml b/recipes/wip/demos/uniocr/recipe.toml new file mode 100644 index 00000000..a8ee5a33 --- /dev/null +++ b/recipes/wip/demos/uniocr/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/mediar-ai/uniOCR" +[build] +template = "custom" +script = """ +cookbook_cargo_examples basic batch_processing +""" diff --git a/recipes/wip/image/other/ferrishot/recipe.toml b/recipes/wip/image/other/ferrishot/recipe.toml new file mode 100644 index 00000000..f4b54a5f --- /dev/null +++ b/recipes/wip/image/other/ferrishot/recipe.toml @@ -0,0 +1,11 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/nik-rev/ferrishot" +[build] +dependencies = [ + "mesa", + "libx11", + "libwayland", + "libxcb", +] +template = "cargo" diff --git a/recipes/wip/net/remote/shared/recipe.toml b/recipes/wip/net/remote/shared/recipe.toml new file mode 100644 index 00000000..ed93e9f4 --- /dev/null +++ b/recipes/wip/net/remote/shared/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/mateolafalce/shared" +[build] +template = "cargo" diff --git a/recipes/wip/sound/shezem-rs/recipe.toml b/recipes/wip/sound/shezem-rs/recipe.toml new file mode 100644 index 00000000..186c295b --- /dev/null +++ b/recipes/wip/sound/shezem-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Kither12/shezem-rs" +[build] +template = "cargo" diff --git a/recipes/wip/terminal/countryfetch/recipe.toml b/recipes/wip/terminal/countryfetch/recipe.toml new file mode 100644 index 00000000..2679aaa9 --- /dev/null +++ b/recipes/wip/terminal/countryfetch/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/nik-rev/countryfetch" +[build] +template = "custom" +script = """ +cookbook_cargo_packages countryfetch +""" diff --git a/recipes/wip/tui/regname/recipe.toml b/recipes/wip/tui/regname/recipe.toml new file mode 100644 index 00000000..cbe613fc --- /dev/null +++ b/recipes/wip/tui/regname/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/linkdd/regname" +[build] +template = "cargo" From f78c3499bc4a611cdb893410d596fc935adc7f82 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 17 Apr 2025 15:50:02 -0600 Subject: [PATCH 2371/3180] libgcc: fix compilation on riscv64gc --- recipes/libs/libgcc/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/libs/libgcc/recipe.toml b/recipes/libs/libgcc/recipe.toml index 31ebddf1..97af3f8c 100644 --- a/recipes/libs/libgcc/recipe.toml +++ b/recipes/libs/libgcc/recipe.toml @@ -3,6 +3,6 @@ template = "custom" script = """ mkdir -p "${COOKBOOK_STAGE}/lib" cp -vr ${COOKBOOK_HOST_SYSROOT}/lib/gcc ${COOKBOOK_STAGE}/lib/ -cp -vr ${COOKBOOK_HOST_SYSROOT}/${TARGET}/lib/. ${COOKBOOK_STAGE}/lib/ -rm ${COOKBOOK_STAGE}/lib/{crt0.o,crt1.o,crti.o,crtn.o,libc.a,libc.so.6,ld64.so.1} +cp -vr ${COOKBOOK_HOST_SYSROOT}/${GNU_TARGET}/lib/. ${COOKBOOK_STAGE}/lib/ +rm -f ${COOKBOOK_STAGE}/lib/{crt0.o,crt1.o,crti.o,crtn.o,libc.a,libc.so.6,libc.so.1,ld.so.1,ld64.so.1} """ From 289c3e69b8975b61cbf5baee0e69a7a94752b9da Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 18 Apr 2025 10:52:50 -0600 Subject: [PATCH 2372/3180] Drop COOKBOOK_PREFER_STATIC --- bin/aarch64-unknown-redox-pkg-config | 6 +++--- bin/i686-unknown-redox-pkg-config | 6 +++--- bin/riscv64-unknown-redox-pkg-config | 6 +++--- bin/x86_64-unknown-redox-pkg-config | 6 +++--- recipes/dev/gcc13/recipe.toml | 12 ----------- recipes/games/devilutionx/recipe.toml | 25 ++++++----------------- recipes/libs/libffi/recipe.toml | 13 ++---------- recipes/libs/libiconv/recipe.toml | 15 +++----------- recipes/libs/libpng/recipe.toml | 13 ------------ recipes/tools/bzip2/recipe.toml | 24 ++++++++++------------ recipes/tools/cosmic-files/recipe.toml | 3 --- recipes/tools/cosmic-settings/recipe.toml | 3 --- src/bin/cook.rs | 7 ++----- 13 files changed, 36 insertions(+), 103 deletions(-) diff --git a/bin/aarch64-unknown-redox-pkg-config b/bin/aarch64-unknown-redox-pkg-config index 57774042..18e9816e 100755 --- a/bin/aarch64-unknown-redox-pkg-config +++ b/bin/aarch64-unknown-redox-pkg-config @@ -4,9 +4,9 @@ export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" export PKG_CONFIG_LIBDIR="${PKG_CONFIG_SYSROOT_DIR}/lib/pkgconfig" export PKG_CONFIG_PATH="${PKG_CONFIG_SYSROOT_DIR}/share/pkgconfig" -if [ -n "${COOKBOOK_PREFER_STATIC}" ] +if [ -n "${COOKBOOK_DYNAMIC}" ] then - exec pkg-config --static "$@" -else exec pkg-config "$@" +else + exec pkg-config --static "$@" fi diff --git a/bin/i686-unknown-redox-pkg-config b/bin/i686-unknown-redox-pkg-config index 57774042..18e9816e 100755 --- a/bin/i686-unknown-redox-pkg-config +++ b/bin/i686-unknown-redox-pkg-config @@ -4,9 +4,9 @@ export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" export PKG_CONFIG_LIBDIR="${PKG_CONFIG_SYSROOT_DIR}/lib/pkgconfig" export PKG_CONFIG_PATH="${PKG_CONFIG_SYSROOT_DIR}/share/pkgconfig" -if [ -n "${COOKBOOK_PREFER_STATIC}" ] +if [ -n "${COOKBOOK_DYNAMIC}" ] then - exec pkg-config --static "$@" -else exec pkg-config "$@" +else + exec pkg-config --static "$@" fi diff --git a/bin/riscv64-unknown-redox-pkg-config b/bin/riscv64-unknown-redox-pkg-config index 57774042..18e9816e 100755 --- a/bin/riscv64-unknown-redox-pkg-config +++ b/bin/riscv64-unknown-redox-pkg-config @@ -4,9 +4,9 @@ export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" export PKG_CONFIG_LIBDIR="${PKG_CONFIG_SYSROOT_DIR}/lib/pkgconfig" export PKG_CONFIG_PATH="${PKG_CONFIG_SYSROOT_DIR}/share/pkgconfig" -if [ -n "${COOKBOOK_PREFER_STATIC}" ] +if [ -n "${COOKBOOK_DYNAMIC}" ] then - exec pkg-config --static "$@" -else exec pkg-config "$@" +else + exec pkg-config --static "$@" fi diff --git a/bin/x86_64-unknown-redox-pkg-config b/bin/x86_64-unknown-redox-pkg-config index 57774042..18e9816e 100755 --- a/bin/x86_64-unknown-redox-pkg-config +++ b/bin/x86_64-unknown-redox-pkg-config @@ -4,9 +4,9 @@ export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" export PKG_CONFIG_LIBDIR="${PKG_CONFIG_SYSROOT_DIR}/lib/pkgconfig" export PKG_CONFIG_PATH="${PKG_CONFIG_SYSROOT_DIR}/share/pkgconfig" -if [ -n "${COOKBOOK_PREFER_STATIC}" ] +if [ -n "${COOKBOOK_DYNAMIC}" ] then - exec pkg-config --static "$@" -else exec pkg-config "$@" +else + exec pkg-config --static "$@" fi diff --git a/recipes/dev/gcc13/recipe.toml b/recipes/dev/gcc13/recipe.toml index 106e8e74..72405a87 100644 --- a/recipes/dev/gcc13/recipe.toml +++ b/recipes/dev/gcc13/recipe.toml @@ -37,18 +37,6 @@ COOKBOOK_CONFIGURE_FLAGS=( --with-bugurl="https://gitlab.redox-os.org/redox-os/gcc/-/issues" ) -if [[ -n "$COOKBOOK_PREFER_STATIC" ]]; then - COOKBOOK_CONFIGURE_FLAGS+=( - --enable-static - --disable-shared - ) -else - COOKBOOK_CONFIGURE_FLAGS+=( - --enable-shared - --disable-static - ) -fi - "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" all-gcc "${COOKBOOK_MAKE}" install-gcc DESTDIR="${COOKBOOK_STAGE}" diff --git a/recipes/games/devilutionx/recipe.toml b/recipes/games/devilutionx/recipe.toml index d73af06a..d6ac4ff7 100644 --- a/recipes/games/devilutionx/recipe.toml +++ b/recipes/games/devilutionx/recipe.toml @@ -15,33 +15,20 @@ script = """ DYNAMIC_INIT COOKBOOK_CONFIGURE="cmake" - -if [[ -n "${COOKBOOK_PREFER_STATIC}" ]]; then - COOKBOOK_CONFIGURE_FLAGS=( - -DDEVILUTIONX_STATIC_BZIP2=ON - -DDEVILUTIONX_STATIC_ZLIB=ON - -DDEVILUTIONX_SYSTEM_BZIP2=OFF - -DDEVILUTIONX_SYSTEM_ZLIB=OFF - ) -else - COOKBOOK_CONFIGURE_FLAGS=( - -DDEVILUTIONX_SYSTEM_BZIP2=ON - -DDEVILUTIONX_SYSTEM_ZLIB=ON - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - ) -fi - -COOKBOOK_CONFIGURE_FLAGS+=( +COOKBOOK_CONFIGURE_FLAGS=( + -DBUILD_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=ON -DCMAKE_CXX_COMPILER="${TARGET}-g++" -DCMAKE_C_COMPILER="${TARGET}-gcc" -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_VERBOSE_MAKEFILE=ON - -DBUILD_TESTING=OFF + -DDEVILUTIONX_SYSTEM_BZIP2=ON + -DDEVILUTIONX_SYSTEM_ZLIB=ON -DNONET=ON - -DUSE_SDL1=ON -DSDL_LIBRARY="-lSDL -lorbital" + -DUSE_SDL1=ON "${COOKBOOK_SOURCE}" ) cookbook_configure diff --git a/recipes/libs/libffi/recipe.toml b/recipes/libs/libffi/recipe.toml index a3ec7900..1cc1701e 100644 --- a/recipes/libs/libffi/recipe.toml +++ b/recipes/libs/libffi/recipe.toml @@ -16,18 +16,9 @@ script = """ DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS=( --host="${GNU_TARGET}" - --prefix="" -) -if [[ -n "$COOKBOOK_PREFER_STATIC" ]]; then - COOKBOOK_CONFIGURE_FLAGS+=( - --enable-static - --disable-shared - ) -else - COOKBOOK_CONFIGURE_FLAGS+=( + --prefix="/usr" --enable-shared --enable-static - ) -fi +) cookbook_configure """ \ No newline at end of file diff --git a/recipes/libs/libiconv/recipe.toml b/recipes/libs/libiconv/recipe.toml index a19e844a..43db90f7 100644 --- a/recipes/libs/libiconv/recipe.toml +++ b/recipes/libs/libiconv/recipe.toml @@ -22,19 +22,10 @@ script = """ DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS=( --host="${GNU_TARGET}" - --prefix="" - ac_cv_have_decl_program_invocation_name=no -) -if [[ -n "$COOKBOOK_PREFER_STATIC" ]]; then - COOKBOOK_CONFIGURE_FLAGS+=( - --enable-static - --disable-shared - ) -else - COOKBOOK_CONFIGURE_FLAGS+=( + --prefix="/usr" --enable-shared --enable-static - ) -fi + ac_cv_have_decl_program_invocation_name=no +) cookbook_configure """ \ No newline at end of file diff --git a/recipes/libs/libpng/recipe.toml b/recipes/libs/libpng/recipe.toml index a7390aea..1dc77aac 100644 --- a/recipes/libs/libpng/recipe.toml +++ b/recipes/libs/libpng/recipe.toml @@ -13,19 +13,6 @@ template = "custom" dependencies = ["zlib"] script = """ DYNAMIC_INIT - -if [[ -n "${COOKBOOK_PREFER_STATIC}" ]]; then - COOKBOOK_CONFIGURE_FLAGS+=( - --enable-static - --disable-shared - ) -else - COOKBOOK_CONFIGURE_FLAGS+=( - --enable-shared - --enable-static - ) -fi - cookbook_configure """ diff --git a/recipes/tools/bzip2/recipe.toml b/recipes/tools/bzip2/recipe.toml index f67ff24c..1db1c12c 100644 --- a/recipes/tools/bzip2/recipe.toml +++ b/recipes/tools/bzip2/recipe.toml @@ -18,19 +18,17 @@ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ install # However, distros distribute libbz2 as well so we'll support it too -if ! [[ -n "${COOKBOOK_PREFER_STATIC}" ]]; then - # Linking the lib fails if we don't rebuild the objects from earlier - "${COOKBOOK_MAKE}" clean +# Linking the lib fails if we don't rebuild the objects from earlier +"${COOKBOOK_MAKE}" clean - # This DOES NOT build/clobber the binaries already built above - "${COOKBOOK_MAKE}" -f Makefile-libbz2_so \ - -j"${COOKBOOK_MAKE_JOBS}" \ - AR="${TARGET}-ar" \ - CC="${TARGET}-gcc" \ - PREFIX="${COOKBOOK_STAGE}" \ - RANLIB="${TARGET}-ranlib" +# This DOES NOT build/clobber the binaries already built above +"${COOKBOOK_MAKE}" -f Makefile-libbz2_so \ + -j"${COOKBOOK_MAKE_JOBS}" \ + AR="${TARGET}-ar" \ + CC="${TARGET}-gcc" \ + PREFIX="${COOKBOOK_STAGE}" \ + RANLIB="${TARGET}-ranlib" - cp -v libbz2.so.1.0.8 "${COOKBOOK_STAGE}/lib" - cp -v libbz2.so.1.0 "${COOKBOOK_STAGE}/lib" -fi +cp -v libbz2.so.1.0.8 "${COOKBOOK_STAGE}/lib" +cp -v libbz2.so.1.0 "${COOKBOOK_STAGE}/lib" """ \ No newline at end of file diff --git a/recipes/tools/cosmic-files/recipe.toml b/recipes/tools/cosmic-files/recipe.toml index 55da17ed..c4236584 100644 --- a/recipes/tools/cosmic-files/recipe.toml +++ b/recipes/tools/cosmic-files/recipe.toml @@ -10,9 +10,6 @@ dependencies = [ ] script = """ DYNAMIC_INIT -if [[ -n "$COOKBOOK_PREFER_STATIC" ]]; then - export GETTEXT_STATIC=1 -fi export GETTEXT_DIR="${COOKBOOK_SYSROOT}" # Hack to link libiconv, which gettext-sys does not link "${COOKBOOK_CARGO}" rustc \ diff --git a/recipes/tools/cosmic-settings/recipe.toml b/recipes/tools/cosmic-settings/recipe.toml index 5ddd74df..f2a3f372 100644 --- a/recipes/tools/cosmic-settings/recipe.toml +++ b/recipes/tools/cosmic-settings/recipe.toml @@ -10,9 +10,6 @@ dependencies = [ ] script = """ DYNAMIC_INIT -if [[ -n "$COOKBOOK_PREFER_STATIC" ]]; then - export GETTEXT_STATIC=1 -fi export GETTEXT_DIR="${COOKBOOK_SYSROOT}" # Hack to link libiconv, which gettext-sys does not link "${COOKBOOK_CARGO}" rustc \ diff --git a/src/bin/cook.rs b/src/bin/cook.rs index e7883443..8d0802c0 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -193,11 +193,7 @@ function DYNAMIC_INIT { done } - if [[ -n "$COOKBOOK_PREFER_STATIC" ]]; then - return - fi - - echo "WARN: Program is being compiled dynamically." + echo "DEBUG: Program is being compiled dynamically." COOKBOOK_CONFIGURE_FLAGS=( --host="${GNU_TARGET}" @@ -209,6 +205,7 @@ function DYNAMIC_INIT { # TODO: check paths for spaces export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" export RUSTFLAGS="-C target-feature=-crt-static" + export COOKBOOK_DYNAMIC=1 } "#; From a9f008defbf76eddcbd203c0bff1ec32bab86dc3 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 18 Apr 2025 12:37:00 -0600 Subject: [PATCH 2373/3180] gettext: remove patch for sigsetjmp --- recipes/tools/gettext/redox.patch | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/recipes/tools/gettext/redox.patch b/recipes/tools/gettext/redox.patch index ffaece3a..8c01434e 100644 --- a/recipes/tools/gettext/redox.patch +++ b/recipes/tools/gettext/redox.patch @@ -32,15 +32,3 @@ diff -ruwN source/gettext-tools/gnulib-lib/spawni.c source-new/gettext-tools/gnu # endif # define local_seteuid(id) seteuid (id) # define local_setegid(id) setegid (id) -diff -ruwN source/gettext-tools/src/plural-eval.h source-new/gettext-tools/src/plural-eval.h ---- source/gettext-tools/src/plural-eval.h 2016-03-20 01:37:53.000000000 -0600 -+++ source-new/gettext-tools/src/plural-eval.h 2019-01-05 08:51:23.113067496 -0700 -@@ -29,7 +29,7 @@ - #include - - /* Some platforms don't have the sigjmp_buf type in . */ --#if defined _MSC_VER || defined __MINGW32__ -+#if defined _MSC_VER || defined __MINGW32__ || defined(__redox__) - /* Native Woe32 API. */ - # define sigjmp_buf jmp_buf - # define sigsetjmp(env,savesigs) setjmp (env) From 531df3382f08b8d2b45601c503be6a2211b14dbf Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 18 Apr 2025 14:25:32 -0600 Subject: [PATCH 2374/3180] nasm: use gstreamer mirror --- recipes/dev/nasm/recipe.toml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/recipes/dev/nasm/recipe.toml b/recipes/dev/nasm/recipe.toml index 57a1e774..c4de3b14 100644 --- a/recipes/dev/nasm/recipe.toml +++ b/recipes/dev/nasm/recipe.toml @@ -1,5 +1,7 @@ [source] -tar = "https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.gz" +#TODO: nasm.us is down: tar = "https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.gz" +tar = "https://gstreamer.freedesktop.org/src/mirror/nasm-2.14.02.tar.xz" +blake3 = "f66c0cc852c3b9e3321f57c33ef336e17a128bd3d854ee095aae7e6f64629f20" [build] template = "configure" From 084c0167304da1769e5e24e636ed39ad4c2c8df8 Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Sun, 20 Apr 2025 14:04:42 +0200 Subject: [PATCH 2375/3180] Update escalated. --- recipes/core/escalated/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/core/escalated/recipe.toml b/recipes/core/escalated/recipe.toml index c1c2fa2a..8ba1c472 100644 --- a/recipes/core/escalated/recipe.toml +++ b/recipes/core/escalated/recipe.toml @@ -2,6 +2,6 @@ git = "https://gitlab.redox-os.org/redox-os/escalated.git" # Escalated is not backwards compatible wrt relibc versions, so we pin it here # so it's updated together with the other main submodules. -rev = "8ffd7d3c" +rev = "dabdbf6" [build] template = "cargo" From e088d5e629a48aecc182d1de6986e1527c5b7a3b Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sun, 20 Apr 2025 16:49:16 +0200 Subject: [PATCH 2376/3180] Remove setuid bit from su --- recipes/core/userutils/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/core/userutils/recipe.toml b/recipes/core/userutils/recipe.toml index 68c1a88d..94c906a4 100644 --- a/recipes/core/userutils/recipe.toml +++ b/recipes/core/userutils/recipe.toml @@ -8,5 +8,4 @@ cookbook_cargo cp -rv "${COOKBOOK_SOURCE}/res" "${COOKBOOK_STAGE}/etc" ln -s id "${COOKBOOK_STAGE}/usr/bin/whoami" chmod +s "${COOKBOOK_STAGE}/usr/bin/passwd" -chmod +s "${COOKBOOK_STAGE}/usr/bin/su" """ From 88b05820d8cdbfc963fb15338c5f7529c978dcfb Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sun, 20 Apr 2025 21:11:15 +0200 Subject: [PATCH 2377/3180] Remove suid bit from passwd --- recipes/core/userutils/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/core/userutils/recipe.toml b/recipes/core/userutils/recipe.toml index 94c906a4..6d7e2395 100644 --- a/recipes/core/userutils/recipe.toml +++ b/recipes/core/userutils/recipe.toml @@ -7,5 +7,4 @@ script = """ cookbook_cargo cp -rv "${COOKBOOK_SOURCE}/res" "${COOKBOOK_STAGE}/etc" ln -s id "${COOKBOOK_STAGE}/usr/bin/whoami" -chmod +s "${COOKBOOK_STAGE}/usr/bin/passwd" """ From 81f30bcb717969d7dfc1fc6eb4f03916e1328317 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Mon, 21 Apr 2025 10:25:55 +0200 Subject: [PATCH 2378/3180] Remove escalated recipe --- recipes/core/escalated/recipe.toml | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 recipes/core/escalated/recipe.toml diff --git a/recipes/core/escalated/recipe.toml b/recipes/core/escalated/recipe.toml deleted file mode 100644 index 8ba1c472..00000000 --- a/recipes/core/escalated/recipe.toml +++ /dev/null @@ -1,7 +0,0 @@ -[source] -git = "https://gitlab.redox-os.org/redox-os/escalated.git" -# Escalated is not backwards compatible wrt relibc versions, so we pin it here -# so it's updated together with the other main submodules. -rev = "dabdbf6" -[build] -template = "cargo" From 2224bc0655707e23d7f5203ebcd00cb5484bf42c Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Mon, 21 Apr 2025 19:12:00 +0200 Subject: [PATCH 2379/3180] Move bootstrap into the base repo --- recipes/core/base-initfs/recipe.toml | 18 ++++++++++++++++++ recipes/core/bootstrap/recipe.toml | 24 ------------------------ recipes/core/initfs/recipe.toml | 1 - 3 files changed, 18 insertions(+), 25 deletions(-) delete mode 100644 recipes/core/bootstrap/recipe.toml diff --git a/recipes/core/base-initfs/recipe.toml b/recipes/core/base-initfs/recipe.toml index efbd082e..1da38231 100644 --- a/recipes/core/base-initfs/recipe.toml +++ b/recipes/core/base-initfs/recipe.toml @@ -18,4 +18,22 @@ done #ln -sv zerod "${COOKBOOK_STAGE}/usr/bin/nulld" cp "${COOKBOOK_STAGE}/usr/bin/zerod" "${COOKBOOK_STAGE}/usr/bin/nulld" + +ARCH="$(echo "${GNU_TARGET}" | cut -d - -f1)" +cargo \ + -Zbuild-std=core,alloc,compiler_builtins \ + -Zbuild-std-features=compiler-builtins-mem rustc \ + --target "${TARGET}" \ + --manifest-path "${COOKBOOK_SOURCE}/bootstrap/Cargo.toml" \ + --release \ + --target-dir "${COOKBOOK_BUILD}" \ + -- \ + --emit link="${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a" +mkdir -v "${COOKBOOK_STAGE}/boot" +"${GNU_TARGET}-ld" \ + -o "${COOKBOOK_STAGE}/boot/bootstrap" \ + --gc-sections \ + -T "${COOKBOOK_SOURCE}/bootstrap/src/${ARCH}.ld" \ + -z max-page-size=4096 \ + "${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a" """ diff --git a/recipes/core/bootstrap/recipe.toml b/recipes/core/bootstrap/recipe.toml deleted file mode 100644 index 5512bb2f..00000000 --- a/recipes/core/bootstrap/recipe.toml +++ /dev/null @@ -1,24 +0,0 @@ -[source] -git = "https://gitlab.redox-os.org/redox-os/bootstrap.git" - -[build] -template = "custom" -script = """ -ARCH="$(echo "${GNU_TARGET}" | cut -d - -f1)" -cargo \ - -Zbuild-std=core,alloc,compiler_builtins \ - -Zbuild-std-features=compiler-builtins-mem rustc \ - --target "${TARGET}" \ - --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ - --release \ - --target-dir "${COOKBOOK_BUILD}" \ - -- \ - --emit link="${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a" -mkdir -v "${COOKBOOK_STAGE}/boot" -"${GNU_TARGET}-ld" \ - -o "${COOKBOOK_STAGE}/boot/bootstrap" \ - --gc-sections \ - -T "${COOKBOOK_SOURCE}/src/${ARCH}.ld" \ - -z max-page-size=4096 \ - "${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a" -""" diff --git a/recipes/core/initfs/recipe.toml b/recipes/core/initfs/recipe.toml index ad1f1659..b1ccbde6 100644 --- a/recipes/core/initfs/recipe.toml +++ b/recipes/core/initfs/recipe.toml @@ -5,7 +5,6 @@ git = "https://gitlab.redox-os.org/redox-os/redox-initfs.git" template = "custom" dependencies = [ "base-initfs", - "bootstrap", "drivers-initfs", "redoxfs", ] From 6e063ffe7a2ca1a8a036ec9e5689696080ffed84 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 21 Apr 2025 12:17:45 -0600 Subject: [PATCH 2380/3180] freetype2: also build statically --- recipes/libs/freetype2/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/libs/freetype2/recipe.toml b/recipes/libs/freetype2/recipe.toml index 16b1accf..ae56808c 100644 --- a/recipes/libs/freetype2/recipe.toml +++ b/recipes/libs/freetype2/recipe.toml @@ -50,6 +50,7 @@ meson \ --cross-file cross_file.txt \ --buildtype release \ --strip \ + -Ddefault_library=both \ -Dprefix=/usr \ -Dlibdir=lib ninja -C _build -v From 6a90635761c3fbd1e55ab94219d332d73fec270f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 21 Apr 2025 12:38:34 -0600 Subject: [PATCH 2381/3180] libpng: also compile statically --- recipes/libs/libpng/recipe.toml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/recipes/libs/libpng/recipe.toml b/recipes/libs/libpng/recipe.toml index 1dc77aac..8c2324f5 100644 --- a/recipes/libs/libpng/recipe.toml +++ b/recipes/libs/libpng/recipe.toml @@ -13,6 +13,12 @@ template = "custom" dependencies = ["zlib"] script = """ DYNAMIC_INIT +COOKBOOK_CONFIGURE_FLAGS=( + --host="${GNU_TARGET}" + --prefix="/usr" + --enable-shared + --enable-static +) cookbook_configure """ From 6b617d0ad10bcc43cd9807ab47b5f8a414e565bc Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 21 Apr 2025 13:16:10 -0600 Subject: [PATCH 2382/3180] gcc13: remove redundant package depends --- recipes/dev/gcc13/recipe.toml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/recipes/dev/gcc13/recipe.toml b/recipes/dev/gcc13/recipe.toml index 72405a87..d5a4bc10 100644 --- a/recipes/dev/gcc13/recipe.toml +++ b/recipes/dev/gcc13/recipe.toml @@ -42,12 +42,3 @@ COOKBOOK_CONFIGURE_FLAGS=( "${COOKBOOK_MAKE}" install-gcc DESTDIR="${COOKBOOK_STAGE}" ln -s "gcc" "${COOKBOOK_STAGE}/bin/cc" """ - -[package] -dependencies = [ - "libgcc", - "libgmp", - "libmpfr", - "mpc", - "zlib" -] From fff70c19c06a56d817aae4c2aff0e14aaed58c51 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 21 Apr 2025 16:06:44 -0600 Subject: [PATCH 2383/3180] vim: fix building for multiple archs --- recipes/tools/vim/recipe.toml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/recipes/tools/vim/recipe.toml b/recipes/tools/vim/recipe.toml index 729291d3..3932e229 100644 --- a/recipes/tools/vim/recipe.toml +++ b/recipes/tools/vim/recipe.toml @@ -7,6 +7,8 @@ patch = ["vim.patch"] dependencies = ["ncurses"] template = "custom" script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ + export vim_cv_toupper_broken=no export vim_cv_tgetent=zero export vim_cv_terminfo=yes @@ -14,13 +16,10 @@ export vim_cv_tty_group=world export vim_cv_getcwd_broken=no export vim_cv_stat_ignores_slash=yes export vim_cv_memmove_handles_overlap=yes -export SRCDIR="${COOKBOOK_SOURCE}/src" +COOKBOOK_CONFIGURE="./configure" COOKBOOK_CONFIGURE_FLAGS+=( --with-tlib=ncurses ) - -pushd "${SRCDIR}" cookbook_configure -popd """ From b9b8293a96b21bafcfff8c655cc3fc9258cfddaa Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 22 Apr 2025 14:35:52 -0600 Subject: [PATCH 2384/3180] schismtracker: set sdl prefix to avoid using host SDL --- recipes/tools/schismtracker/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/tools/schismtracker/recipe.sh b/recipes/tools/schismtracker/recipe.sh index e26c8890..5cb03564 100644 --- a/recipes/tools/schismtracker/recipe.sh +++ b/recipes/tools/schismtracker/recipe.sh @@ -14,7 +14,7 @@ function recipe_build { export LDFLAGS="-L$sysroot/lib -static" export SDL_CONFIG="$sysroot/bin/sdl-config" autoreconf -i - ./configure --build=${BUILD} --host=${HOST} --prefix='' + ./configure --build=${BUILD} --host=${HOST} --prefix='' --with-sdl-prefix="$sysroot" "$REDOX_MAKE" -j"$($NPROC)" skip=1 } From 05908c7e15723a971bcf4323685ca4aaddded6a1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 23 Apr 2025 08:55:26 -0600 Subject: [PATCH 2385/3180] Remove docgen --- .gitmodules | 4 ---- config.sh | 4 ---- cook.sh | 2 -- docgen | 1 - 4 files changed, 11 deletions(-) delete mode 160000 docgen diff --git a/.gitmodules b/.gitmodules index c282b96a..f5b8c3e7 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,7 +1,3 @@ -[submodule "docgen"] - path = docgen - url = https://gitlab.redox-os.org/redox-os/docgen.git - branch = master [submodule "pkgar"] path = pkgar url = https://gitlab.redox-os.org/redox-os/pkgar.git diff --git a/config.sh b/config.sh index 1e7d767d..d363c652 100755 --- a/config.sh +++ b/config.sh @@ -60,10 +60,6 @@ export STAT if [ ! "$(uname -s)" = "Redox" ] then -function docgen { - "$ROOT/docgen/target/release/docgen" "$@" -} - function pkgar { "$ROOT/pkgar/target/release/pkgar" "$@" } diff --git a/cook.sh b/cook.sh index 42fb9d5c..1c6ac7cf 100755 --- a/cook.sh +++ b/cook.sh @@ -283,8 +283,6 @@ function op { else echo "$(tput bold)Warning$(tput sgr0): Recipe does not have any binaries" >&2 fi - - docgen "$source" "$stage/ref" fi popd > /dev/null ;; diff --git a/docgen b/docgen deleted file mode 160000 index c9525c47..00000000 --- a/docgen +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c9525c4761d814b86af061e4e96cd394da7deaa2 From d419ea76a00750ac4117df10e35f4d71b3dc437a Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Wed, 23 Apr 2025 20:19:19 +0200 Subject: [PATCH 2386/3180] Merge initfs into the base repo --- .../aarch64-unknown-redox/init_drivers.rc | 0 .../init_drivers.rc.raspi3bp | 0 recipes/core/{initfs => base-initfs}/init.rc | 0 .../{initfs => base-initfs}/init_drivers.rc | 0 recipes/core/base-initfs/recipe.toml | 54 +++++++++++++++---- recipes/core/initfs/recipe.toml | 44 --------------- 6 files changed, 44 insertions(+), 54 deletions(-) rename recipes/core/{initfs => base-initfs}/aarch64-unknown-redox/init_drivers.rc (100%) rename recipes/core/{initfs => base-initfs}/aarch64-unknown-redox/init_drivers.rc.raspi3bp (100%) rename recipes/core/{initfs => base-initfs}/init.rc (100%) rename recipes/core/{initfs => base-initfs}/init_drivers.rc (100%) delete mode 100644 recipes/core/initfs/recipe.toml diff --git a/recipes/core/initfs/aarch64-unknown-redox/init_drivers.rc b/recipes/core/base-initfs/aarch64-unknown-redox/init_drivers.rc similarity index 100% rename from recipes/core/initfs/aarch64-unknown-redox/init_drivers.rc rename to recipes/core/base-initfs/aarch64-unknown-redox/init_drivers.rc diff --git a/recipes/core/initfs/aarch64-unknown-redox/init_drivers.rc.raspi3bp b/recipes/core/base-initfs/aarch64-unknown-redox/init_drivers.rc.raspi3bp similarity index 100% rename from recipes/core/initfs/aarch64-unknown-redox/init_drivers.rc.raspi3bp rename to recipes/core/base-initfs/aarch64-unknown-redox/init_drivers.rc.raspi3bp diff --git a/recipes/core/initfs/init.rc b/recipes/core/base-initfs/init.rc similarity index 100% rename from recipes/core/initfs/init.rc rename to recipes/core/base-initfs/init.rc diff --git a/recipes/core/initfs/init_drivers.rc b/recipes/core/base-initfs/init_drivers.rc similarity index 100% rename from recipes/core/initfs/init_drivers.rc rename to recipes/core/base-initfs/init_drivers.rc diff --git a/recipes/core/base-initfs/recipe.toml b/recipes/core/base-initfs/recipe.toml index 1da38231..fd3987fc 100644 --- a/recipes/core/base-initfs/recipe.toml +++ b/recipes/core/base-initfs/recipe.toml @@ -3,37 +3,71 @@ same_as = "../base" [build] template = "custom" +dependencies = [ + "drivers-initfs", + "redoxfs", +] script = """ -mkdir -pv "${COOKBOOK_STAGE}/usr/bin" +INITFS_RM_BINS='redoxfs-ar redoxfs-mkfs' + +rm -rf "${COOKBOOK_BUILD}/initfs" +mkdir -p "${COOKBOOK_BUILD}/initfs/etc" + +cp -r "${COOKBOOK_SYSROOT}/"* "${COOKBOOK_BUILD}/initfs" + +# TODO: Move init.rc to another recipe, perhaps initfs-misc? Then it can be installed as a regular dependency. +cp "${COOKBOOK_RECIPE}/init.rc" "${COOKBOOK_BUILD}/initfs/etc/init.rc" +cp "${COOKBOOK_RECIPE}/init_drivers.rc" "${COOKBOOK_BUILD}/initfs/etc/init_drivers.rc" +if [ -e ${COOKBOOK_RECIPE}/${TARGET}/init_drivers.rc.${BOARD} ]; then + cp "${COOKBOOK_RECIPE}/${TARGET}/init_drivers.rc.${BOARD}" "${COOKBOOK_BUILD}/initfs/etc/init_drivers.rc" +elif [ -e ${COOKBOOK_RECIPE}/${TARGET}/init_drivers.rc ]; then + cp "${COOKBOOK_RECIPE}/${TARGET}/init_drivers.rc" "${COOKBOOK_BUILD}/initfs/etc/init_drivers.rc" +fi + +# Move /usr folders to / and remove links +for folder in bin lib include share +do + rm "${COOKBOOK_BUILD}/initfs/${folder}" + mv "${COOKBOOK_BUILD}/initfs/usr/${folder}" "${COOKBOOK_BUILD}/initfs/${folder}" +done +rmdir "${COOKBOOK_BUILD}/initfs/usr" + +for bin in ${INITFS_RM_BINS}; do + rm -f "${COOKBOOK_BUILD}/initfs/bin/$bin" +done + +mkdir -pv "${COOKBOOK_BUILD}/initfs/bin" for package in init logd ramfs randd zerod; do "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/${package}/Cargo.toml" \ ${build_flags} cp -v \ "target/${TARGET}/${build_type}/${package}" \ - "${COOKBOOK_STAGE}/usr/bin/${package}" + "${COOKBOOK_BUILD}/initfs/bin/${package}" done # TODO: symlinks aren't supported by redox-initfs -#ln -sv zerod "${COOKBOOK_STAGE}/usr/bin/nulld" +#ln -sv zerod "${COOKBOOK_BUILD}/initfs/bin/nulld" -cp "${COOKBOOK_STAGE}/usr/bin/zerod" "${COOKBOOK_STAGE}/usr/bin/nulld" +cp "${COOKBOOK_BUILD}/initfs/bin/zerod" "${COOKBOOK_BUILD}/initfs/bin/nulld" ARCH="$(echo "${GNU_TARGET}" | cut -d - -f1)" cargo \ -Zbuild-std=core,alloc,compiler_builtins \ - -Zbuild-std-features=compiler-builtins-mem rustc \ + -Zbuild-std-features=compiler-builtins-mem build \ --target "${TARGET}" \ --manifest-path "${COOKBOOK_SOURCE}/bootstrap/Cargo.toml" \ --release \ - --target-dir "${COOKBOOK_BUILD}" \ - -- \ - --emit link="${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a" -mkdir -v "${COOKBOOK_STAGE}/boot" + --target-dir "${COOKBOOK_BUILD}" "${GNU_TARGET}-ld" \ - -o "${COOKBOOK_STAGE}/boot/bootstrap" \ + -o "${COOKBOOK_BUILD}/bootstrap" \ --gc-sections \ -T "${COOKBOOK_SOURCE}/bootstrap/src/${ARCH}.ld" \ -z max-page-size=4096 \ "${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a" + +env -u CARGO cargo run --manifest-path "${COOKBOOK_SOURCE}/initfs/tools/Cargo.toml" --bin redox-initfs-ar -- "${COOKBOOK_BUILD}/initfs" "${COOKBOOK_BUILD}/bootstrap" -o "${COOKBOOK_BUILD}/initfs.img" + +mkdir -v "${COOKBOOK_STAGE}/boot" +cp "${COOKBOOK_BUILD}/initfs.img" "${COOKBOOK_STAGE}/boot/initfs" """ diff --git a/recipes/core/initfs/recipe.toml b/recipes/core/initfs/recipe.toml deleted file mode 100644 index b1ccbde6..00000000 --- a/recipes/core/initfs/recipe.toml +++ /dev/null @@ -1,44 +0,0 @@ -[source] -git = "https://gitlab.redox-os.org/redox-os/redox-initfs.git" - -[build] -template = "custom" -dependencies = [ - "base-initfs", - "drivers-initfs", - "redoxfs", -] -script = """ -INITFS_RM_BINS='redoxfs-ar redoxfs-mkfs' - -rm -rf "${COOKBOOK_BUILD}/initfs" -mkdir -p "${COOKBOOK_BUILD}/initfs/etc" - -cp -r "${COOKBOOK_SYSROOT}/"* "${COOKBOOK_BUILD}/initfs" - -# TODO: Move init.rc to another recipe, perhaps initfs-misc? Then it can be installed as a regular dependency. -cp "${COOKBOOK_RECIPE}/init.rc" "${COOKBOOK_BUILD}/initfs/etc/init.rc" -cp "${COOKBOOK_RECIPE}/init_drivers.rc" "${COOKBOOK_BUILD}/initfs/etc/init_drivers.rc" -if [ -e ${COOKBOOK_RECIPE}/${TARGET}/init_drivers.rc.${BOARD} ]; then - cp "${COOKBOOK_RECIPE}/${TARGET}/init_drivers.rc.${BOARD}" "${COOKBOOK_BUILD}/initfs/etc/init_drivers.rc" -elif [ -e ${COOKBOOK_RECIPE}/${TARGET}/init_drivers.rc ]; then - cp "${COOKBOOK_RECIPE}/${TARGET}/init_drivers.rc" "${COOKBOOK_BUILD}/initfs/etc/init_drivers.rc" -fi - -# Move /usr folders to / and remove links -for folder in bin lib include share -do - rm "${COOKBOOK_BUILD}/initfs/${folder}" - mv "${COOKBOOK_BUILD}/initfs/usr/${folder}" "${COOKBOOK_BUILD}/initfs/${folder}" -done -rmdir "${COOKBOOK_BUILD}/initfs/usr" - -for bin in ${INITFS_RM_BINS}; do - rm -f "${COOKBOOK_BUILD}/initfs/bin/$bin" -done - -env -u CARGO cargo run --manifest-path "${COOKBOOK_SOURCE}/tools/Cargo.toml" --bin redox-initfs-ar -- "${COOKBOOK_BUILD}/initfs" "${COOKBOOK_SYSROOT}/boot/bootstrap" -o "${COOKBOOK_BUILD}/initfs.img" - -mkdir -v "${COOKBOOK_STAGE}/boot" -cp "${COOKBOOK_BUILD}/initfs.img" "${COOKBOOK_STAGE}/boot/initfs" -""" From 8d73ecc27fb58143adf8fe510f17fbef11374428 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 23 Apr 2025 16:15:38 -0600 Subject: [PATCH 2387/3180] cargo: install to /usr --- recipes/dev/cargo/recipe.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/dev/cargo/recipe.toml b/recipes/dev/cargo/recipe.toml index c02f2878..07acd357 100644 --- a/recipes/dev/cargo/recipe.toml +++ b/recipes/dev/cargo/recipe.toml @@ -27,6 +27,6 @@ export DEP_Z_ROOT="${COOKBOOK_SYSROOT}" -- \ -L "${COOKBOOK_SYSROOT}/lib" \ -C link-arg="-lnghttp2" -mkdir -pv "${COOKBOOK_STAGE}/bin" -cp -v "target/${TARGET}/release/cargo" "${COOKBOOK_STAGE}/bin/cargo" -""" \ No newline at end of file +mkdir -pv "${COOKBOOK_STAGE}/usr/bin" +cp -v "target/${TARGET}/release/cargo" "${COOKBOOK_STAGE}/usr/bin/cargo" +""" From b7afe611d877d6c6151abe96acbe050d78ce109e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 24 Apr 2025 09:26:52 -0600 Subject: [PATCH 2388/3180] Fix ncurses for aarch64 --- recipes/libs/ncurses/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/libs/ncurses/recipe.toml b/recipes/libs/ncurses/recipe.toml index 6e191319..ed678dc3 100644 --- a/recipes/libs/ncurses/recipe.toml +++ b/recipes/libs/ncurses/recipe.toml @@ -7,6 +7,7 @@ template = "custom" script = """ COOKBOOK_CONFIGURE_FLAGS+=( --disable-db-install + --disable-stripping --without-ada --without-cxx-binding --without-tests From a4b7309131fbb275ab473d5cf3b01c469e6d5db0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 24 Apr 2025 11:21:43 -0600 Subject: [PATCH 2389/3180] git: use machine/endian.h to determine endianness --- recipes/dev/git/git.patch | 53 +++++++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/recipes/dev/git/git.patch b/recipes/dev/git/git.patch index fbdbcefd..6b79e055 100644 --- a/recipes/dev/git/git.patch +++ b/recipes/dev/git/git.patch @@ -1,6 +1,17 @@ -diff -ruwN source/compat/terminal.c source-new/compat/terminal.c ---- source/compat/terminal.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/compat/terminal.c 2019-07-21 19:45:59.473213941 -0600 +diff -ruwN git-2.13.1/compat/bswap.h source/compat/bswap.h +--- git-2.13.1/compat/bswap.h 2017-06-04 19:08:11.000000000 -0600 ++++ source/compat/bswap.h 2025-04-24 11:20:06.475749424 -0600 +@@ -1,3 +1,7 @@ ++#if defined(__redox__) ++#include ++#endif ++ + /* + * Let's make sure we always have a sane definition for ntohl()/htonl(). + * Some libraries define those as a function call, just to perform byte +diff -ruwN git-2.13.1/compat/terminal.c source/compat/terminal.c +--- git-2.13.1/compat/terminal.c 2017-06-04 19:08:11.000000000 -0600 ++++ source/compat/terminal.c 2025-04-18 10:00:11.318697446 -0600 @@ -137,6 +137,18 @@ return buf.buf; } @@ -20,9 +31,9 @@ diff -ruwN source/compat/terminal.c source-new/compat/terminal.c #else char *git_terminal_prompt(const char *prompt, int echo) -diff -ruwN source/configure source-new/configure ---- source/configure 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/configure 2019-07-21 19:45:59.473213941 -0600 +diff -ruwN git-2.13.1/configure source/configure +--- git-2.13.1/configure 2017-06-04 19:08:11.000000000 -0600 ++++ source/configure 2025-04-18 10:00:11.318697446 -0600 @@ -6156,7 +6156,7 @@ ac_res=$ac_cv_search_getaddrinfo if test "$ac_res" != no; then : @@ -32,9 +43,9 @@ diff -ruwN source/configure source-new/configure else NO_IPV6=YesPlease fi -diff -ruwN source/daemon.c source-new/daemon.c ---- source/daemon.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/daemon.c 2019-07-21 19:45:59.477213914 -0600 +diff -ruwN git-2.13.1/daemon.c source/daemon.c +--- git-2.13.1/daemon.c 2017-06-04 19:08:11.000000000 -0600 ++++ source/daemon.c 2025-04-18 10:00:11.319697447 -0600 @@ -71,13 +71,21 @@ return hi->ip_address.buf; } @@ -96,9 +107,9 @@ diff -ruwN source/daemon.c source-new/daemon.c /* avoid splitting a message in the middle */ setvbuf(stderr, NULL, _IOFBF, 4096); -diff -ruwN source/git-compat-util.h source-new/git-compat-util.h ---- source/git-compat-util.h 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/git-compat-util.h 2019-07-23 17:32:11.157702041 -0600 +diff -ruwN git-2.13.1/git-compat-util.h source/git-compat-util.h +--- git-2.13.1/git-compat-util.h 2017-06-04 19:08:11.000000000 -0600 ++++ source/git-compat-util.h 2025-04-18 10:00:11.319697447 -0600 @@ -1,6 +1,18 @@ #ifndef GIT_COMPAT_UTIL_H #define GIT_COMPAT_UTIL_H @@ -195,9 +206,9 @@ diff -ruwN source/git-compat-util.h source-new/git-compat-util.h } #define offset_1st_component git_offset_1st_component #endif -diff -ruwN source/Makefile source-new/Makefile ---- source/Makefile 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/Makefile 2019-07-21 19:45:59.477213914 -0600 +diff -ruwN git-2.13.1/Makefile source/Makefile +--- git-2.13.1/Makefile 2017-06-04 19:08:11.000000000 -0600 ++++ source/Makefile 2025-04-18 10:00:11.319697447 -0600 @@ -979,7 +979,7 @@ BUILTIN_OBJS += builtin/write-tree.o @@ -246,9 +257,9 @@ diff -ruwN source/Makefile source-new/Makefile ln -s "git-remote-http$X" "$$execdir/$$p" 2>/dev/null || \ cp "$$execdir/git-remote-http$X" "$$execdir/$$p" || exit; \ done && \ -diff -ruwN source/run-command.c source-new/run-command.c ---- source/run-command.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/run-command.c 2019-07-21 19:45:59.477213914 -0600 +diff -ruwN git-2.13.1/run-command.c source/run-command.c +--- git-2.13.1/run-command.c 2017-06-04 19:08:11.000000000 -0600 ++++ source/run-command.c 2025-04-18 10:00:11.320697447 -0600 @@ -120,9 +120,9 @@ #ifndef GIT_WINDOWS_NATIVE static inline void dup_devnull(int to) @@ -270,9 +281,9 @@ diff -ruwN source/run-command.c source-new/run-command.c strbuf_reset(&buf); -diff -ruwN source/setup.c source-new/setup.c ---- source/setup.c 2017-06-04 19:08:11.000000000 -0600 -+++ source-new/setup.c 2019-07-21 19:45:59.477213914 -0600 +diff -ruwN git-2.13.1/setup.c source/setup.c +--- git-2.13.1/setup.c 2017-06-04 19:08:11.000000000 -0600 ++++ source/setup.c 2025-04-18 10:00:11.320697447 -0600 @@ -1146,11 +1146,11 @@ /* if any standard file descriptor is missing open it to /dev/null */ void sanitize_stdfds(void) From c1bd151d4ea844f6ea8ec794aa210187b3a8749d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 24 Apr 2025 17:34:47 -0600 Subject: [PATCH 2390/3180] Add recipe for libstdc++ --- recipes/dev/rust/recipe.sh | 2 +- recipes/libs/libpng/recipe.toml | 3 --- recipes/libs/libstdc++/recipe.toml | 6 ++++++ 3 files changed, 7 insertions(+), 4 deletions(-) create mode 100644 recipes/libs/libstdc++/recipe.toml diff --git a/recipes/dev/rust/recipe.sh b/recipes/dev/rust/recipe.sh index 33b80e48..e01d0248 100644 --- a/recipes/dev/rust/recipe.sh +++ b/recipes/dev/rust/recipe.sh @@ -1,6 +1,6 @@ GIT=https://gitlab.redox-os.org/redox-os/rust.git BRANCH=redox-2024-05-11 -BUILD_DEPENDS=(llvm18-shared zlib libgcc) +BUILD_DEPENDS=(llvm18-shared zlib) DEPENDS="gcc13 cargo" PREPARE_COPY=0 diff --git a/recipes/libs/libpng/recipe.toml b/recipes/libs/libpng/recipe.toml index 8c2324f5..3fedf1c5 100644 --- a/recipes/libs/libpng/recipe.toml +++ b/recipes/libs/libpng/recipe.toml @@ -21,6 +21,3 @@ COOKBOOK_CONFIGURE_FLAGS=( ) cookbook_configure """ - -[package] -shared_deps = ["libgcc", "zlib"] diff --git a/recipes/libs/libstdc++/recipe.toml b/recipes/libs/libstdc++/recipe.toml new file mode 100644 index 00000000..232733be --- /dev/null +++ b/recipes/libs/libstdc++/recipe.toml @@ -0,0 +1,6 @@ +[build] +template = "custom" +script = """ +mkdir -p "${COOKBOOK_STAGE}/lib" +cp -av ${COOKBOOK_HOST_SYSROOT}/${GNU_TARGET}/lib/libstdc++.so* ${COOKBOOK_STAGE}/lib/ +""" From f87513658951ce6b0b22856f804bb84f6ce766b0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 24 Apr 2025 17:35:39 -0600 Subject: [PATCH 2391/3180] libgcc: only install shared library --- recipes/libs/libgcc/recipe.toml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/recipes/libs/libgcc/recipe.toml b/recipes/libs/libgcc/recipe.toml index 97af3f8c..da72a5e9 100644 --- a/recipes/libs/libgcc/recipe.toml +++ b/recipes/libs/libgcc/recipe.toml @@ -2,7 +2,5 @@ template = "custom" script = """ mkdir -p "${COOKBOOK_STAGE}/lib" -cp -vr ${COOKBOOK_HOST_SYSROOT}/lib/gcc ${COOKBOOK_STAGE}/lib/ -cp -vr ${COOKBOOK_HOST_SYSROOT}/${GNU_TARGET}/lib/. ${COOKBOOK_STAGE}/lib/ -rm -f ${COOKBOOK_STAGE}/lib/{crt0.o,crt1.o,crti.o,crtn.o,libc.a,libc.so.6,libc.so.1,ld.so.1,ld64.so.1} +cp -av ${COOKBOOK_HOST_SYSROOT}/${GNU_TARGET}/lib/libgcc_s.so* ${COOKBOOK_STAGE}/lib/ """ From 0c1b51863c31f40d2c873ebf7a10ff35f5384460 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 24 Apr 2025 17:38:39 -0600 Subject: [PATCH 2392/3180] Rename libstdc++ to libstdcxx --- recipes/libs/{libstdc++ => libstdcxx}/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/libs/{libstdc++ => libstdcxx}/recipe.toml (100%) diff --git a/recipes/libs/libstdc++/recipe.toml b/recipes/libs/libstdcxx/recipe.toml similarity index 100% rename from recipes/libs/libstdc++/recipe.toml rename to recipes/libs/libstdcxx/recipe.toml From 7301e9266cb309d882868b7f6be6af728d4c7be4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 25 Apr 2025 10:26:57 -0600 Subject: [PATCH 2393/3180] uutils: link all builtins --- recipes/core/uutils/recipe.toml | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/recipes/core/uutils/recipe.toml b/recipes/core/uutils/recipe.toml index 9ba3e618..f9bf51db 100644 --- a/recipes/core/uutils/recipe.toml +++ b/recipes/core/uutils/recipe.toml @@ -7,6 +7,9 @@ script = """ cookbook_cargo --no-default-features --features feat_os_unix_redox --bin coreutils BINS=( + '[' + b2sum + b3sum base32 base64 basename @@ -21,6 +24,7 @@ BINS=( date dd #df not working, use redox coreutils + dir dircolors dirname du @@ -34,13 +38,14 @@ BINS=( fold hashsum head - #install need gid2grp join link ln ls + md5sum mkdir mktemp + more mv nl numfmt @@ -53,10 +58,21 @@ BINS=( pwd readlink realpath - relpath rm rmdir seq + sha1sum + sha224sum + sha256sum + sha3-224sum + sha3-256sum + sha3-384sum + sha3-512sum + sha384sum + sha3sum + sha512sum + shake128sum + shake256sum shred shuf sleep @@ -68,13 +84,17 @@ BINS=( tail tee test + touch tr true truncate tsort unexpand uniq + unlink + vdir wc + yes ) for bin in "${BINS[@]}" From 815125a95c3356e8a39fa24394f52f7ad59f6fd2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 12:17:41 -0600 Subject: [PATCH 2394/3180] libjpeg: compile both static and dynamic libraries --- recipes/libs/libjpeg/recipe.toml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/recipes/libs/libjpeg/recipe.toml b/recipes/libs/libjpeg/recipe.toml index 6cad244e..96e885d5 100644 --- a/recipes/libs/libjpeg/recipe.toml +++ b/recipes/libs/libjpeg/recipe.toml @@ -1,5 +1,20 @@ [source] tar = "https://ijg.org/files/jpegsrc.v9e.tar.gz" blake3 = "f0d6072e15de609397cbd8428758d7054dd921dc448018111e3822b17bcbcc5d" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + [build] -template = "configure" +template = "custom" +script = """ +DYNAMIC_INIT +COOKBOOK_CONFIGURE_FLAGS=( + --host="${GNU_TARGET}" + --prefix="/usr" + --enable-shared + --enable-static +) +cookbook_configure +""" From 5d506d22e0db10b3fb1125beb2542301f76b3151 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 12:18:30 -0600 Subject: [PATCH 2395/3180] shared-mime-info: install pkgconfig file --- recipes/other/shared-mime-info/recipe.toml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/recipes/other/shared-mime-info/recipe.toml b/recipes/other/shared-mime-info/recipe.toml index efa95d46..d0f6b1a7 100755 --- a/recipes/other/shared-mime-info/recipe.toml +++ b/recipes/other/shared-mime-info/recipe.toml @@ -12,4 +12,15 @@ msgfmt --xml \ -d "${COOKBOOK_SOURCE}/po" \ -o "${COOKBOOK_STAGE}/usr/share/mime/packages/freedesktop.org.xml" update-mime-database -V "${COOKBOOK_STAGE}/usr/share/mime" +mkdir -p "${COOKBOOK_STAGE}/usr/share/pkgconfig" +cat > "${COOKBOOK_STAGE}/usr/share/pkgconfig/shared-mime-info.pc" < Date: Thu, 1 May 2025 12:24:59 -0600 Subject: [PATCH 2396/3180] gdk-pixbuf: convert to toml, compile dynamically --- recipes/dev/gdk-pixbuf/recipe.sh | 70 ------------------------------ recipes/dev/gdk-pixbuf/recipe.toml | 67 ++++++++++++++++++++++++++++ recipes/dev/gdk-pixbuf/redox.patch | 17 ++++++++ 3 files changed, 84 insertions(+), 70 deletions(-) delete mode 100644 recipes/dev/gdk-pixbuf/recipe.sh create mode 100644 recipes/dev/gdk-pixbuf/recipe.toml create mode 100644 recipes/dev/gdk-pixbuf/redox.patch diff --git a/recipes/dev/gdk-pixbuf/recipe.sh b/recipes/dev/gdk-pixbuf/recipe.sh deleted file mode 100644 index cc6f1677..00000000 --- a/recipes/dev/gdk-pixbuf/recipe.sh +++ /dev/null @@ -1,70 +0,0 @@ -VERSION="2.38.1" -TAR="https://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/${VERSION%.*}/gdk-pixbuf-${VERSION}.tar.xz" -BUILD_DEPENDS=(gettext glib libffi libiconv libjpeg libpng pcre shared-mime-info zlib) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export LDFLAGS="-static" - - # TODO: Fix this annoying shite - echo "[binaries]" > cross_file.txt - echo "c = '${CC}'" >> cross_file.txt - echo "cpp = '${CXX}'" >> cross_file.txt - echo "ar = '${AR}'" >> cross_file.txt - echo "strip = '${STRIP}'" >> cross_file.txt - echo "pkgconfig = '${PKG_CONFIG}'" >> cross_file.txt - - echo "[host_machine]" >> cross_file.txt - echo "system = 'redox'" >> cross_file.txt - echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt - echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt - echo "endian = 'little'" >> cross_file.txt - - echo "[paths]" >> cross_file.txt - echo "prefix = '${sysroot}'" >> cross_file.txt - echo "libdir = 'lib'" >> cross_file.txt - echo "bindir = 'bin'" >> cross_file.txt - - unset AR - unset AS - unset CC - unset CXX - unset LD - unset NM - unset OBJCOPY - unset OBJDUMP - unset PKG_CONFIG - unset RANLIB - unset READELF - unset STRIP - - meson . _build \ - --cross-file cross_file.txt \ - --buildtype release \ - --strip \ - -Ddefault_library=static \ - -Dprefix=/ \ - -Dlibdir=lib \ - -Dbuiltin_loaders=all \ - -Dgir=false \ - -Dx11=false - ninja -C _build -v - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - DESTDIR="$dest" ninja -C _build -v install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/dev/gdk-pixbuf/recipe.toml b/recipes/dev/gdk-pixbuf/recipe.toml new file mode 100644 index 00000000..a79e37b2 --- /dev/null +++ b/recipes/dev/gdk-pixbuf/recipe.toml @@ -0,0 +1,67 @@ +[source] +tar = "https://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/2.38/gdk-pixbuf-2.38.1.tar.xz" +blake3 = "131cf94d458bf353e42993714477e746fe3f1e4d39cb4acd4c82a5d5e341679b" +patches = ["redox.patch"] + +[build] +dependencies = [ + "gettext", + "glib", + "libffi", + "libiconv", + "libjpeg", + "libpng", + "pcre", + "shared-mime-info", + "zlib", +] +template = "custom" +script = """ +DYNAMIC_INIT + +# TODO: Fix this annoying shite +echo "[binaries]" > cross_file.txt +echo "c = '${CC}'" >> cross_file.txt +echo "cpp = '${CXX}'" >> cross_file.txt +echo "ar = '${AR}'" >> cross_file.txt +echo "strip = '${STRIP}'" >> cross_file.txt +echo "pkgconfig = '${PKG_CONFIG}'" >> cross_file.txt + +echo "[host_machine]" >> cross_file.txt +echo "system = 'redox'" >> cross_file.txt +echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt +echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt +echo "endian = 'little'" >> cross_file.txt + +echo "[paths]" >> cross_file.txt +echo "prefix = '${COOKBOOK_SYSROOT}'" >> cross_file.txt +echo "libdir = 'lib'" >> cross_file.txt +echo "bindir = 'bin'" >> cross_file.txt + +unset AR +unset AS +unset CC +unset CXX +unset LD +unset NM +unset OBJCOPY +unset OBJDUMP +unset PKG_CONFIG +unset RANLIB +unset READELF +unset STRIP + +meson setup "${COOKBOOK_SOURCE}" . \ + --cross-file cross_file.txt \ + --buildtype release \ + --strip \ + -Ddefault_library=shared \ + -Dprefix=/ \ + -Dlibdir=lib \ + -Dbuiltin_loaders=all \ + -Dgir=false \ + -Dinstalled_tests=false \ + -Dx11=false +ninja -v +DESTDIR="${COOKBOOK_STAGE}" ninja -v install +""" \ No newline at end of file diff --git a/recipes/dev/gdk-pixbuf/redox.patch b/recipes/dev/gdk-pixbuf/redox.patch new file mode 100644 index 00000000..ecedea68 --- /dev/null +++ b/recipes/dev/gdk-pixbuf/redox.patch @@ -0,0 +1,17 @@ +diff -ruwN gdk-pixbuf-2.38.1/gdk-pixbuf/meson.build source/gdk-pixbuf/meson.build +--- gdk-pixbuf-2.38.1/gdk-pixbuf/meson.build 2019-02-28 09:22:57.000000000 -0700 ++++ source/gdk-pixbuf/meson.build 2025-05-01 12:23:46.853375624 -0600 +@@ -290,9 +290,10 @@ + endif + + gdkpixbuf_bin = [ +- [ 'gdk-pixbuf-csource' ], +- [ 'gdk-pixbuf-pixdata' ], +- [ 'gdk-pixbuf-query-loaders', [ 'queryloaders.c' ] ], ++# Broken compilation on Redox ++# [ 'gdk-pixbuf-csource' ], ++# [ 'gdk-pixbuf-pixdata' ], ++# [ 'gdk-pixbuf-query-loaders', [ 'queryloaders.c' ] ], + ] + + foreach bin: gdkpixbuf_bin From 0e41fb5d7fa619bbcefc36b2d24b713fa6835400 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 12:44:27 -0600 Subject: [PATCH 2397/3180] expat: compile dynamically and statically --- recipes/libs/expat/recipe.toml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/recipes/libs/expat/recipe.toml b/recipes/libs/expat/recipe.toml index f8edd593..c88685e4 100644 --- a/recipes/libs/expat/recipe.toml +++ b/recipes/libs/expat/recipe.toml @@ -1,11 +1,24 @@ [source] tar = "https://github.com/libexpat/libexpat/releases/download/R_2_5_0/expat-2.5.0.tar.xz" blake3 = "ea89dd9a5a2e48d5e44fed38554b36a8f2e365a5091a99d08e30bfb1c15dda5e" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + [build] template = "custom" script = """ -COOKBOOK_CONFIGURE_FLAGS+=( +DYNAMIC_INIT +COOKBOOK_CONFIGURE_FLAGS=( + --host="${GNU_TARGET}" + --prefix="/usr" + --enable-shared + --enable-static --without-docbook + --without-examples + --without-tests + --without-xmlwf ) cookbook_configure """ From 083c43634c039dffe6ef53a81e7fa2411688f89c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 12:45:19 -0600 Subject: [PATCH 2398/3180] fontconfig: fix compilation of dynamic libraries --- recipes/dev/fontconfig/recipe.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/dev/fontconfig/recipe.toml b/recipes/dev/fontconfig/recipe.toml index 10cd58be..d49d5184 100644 --- a/recipes/dev/fontconfig/recipe.toml +++ b/recipes/dev/fontconfig/recipe.toml @@ -5,7 +5,8 @@ patches = [ "redox.patch" ] script = """ -wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +DYNAMIC_INIT +autotools_recursive_regenerate """ [build] From 19fe0f97d19bee65bc2519ba462035b918a16a34 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 12:49:36 -0600 Subject: [PATCH 2399/3180] fontconfig: update to 2.16.0 --- recipes/dev/fontconfig/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/dev/fontconfig/recipe.toml b/recipes/dev/fontconfig/recipe.toml index d49d5184..883ac026 100644 --- a/recipes/dev/fontconfig/recipe.toml +++ b/recipes/dev/fontconfig/recipe.toml @@ -1,6 +1,6 @@ [source] -tar = "https://www.freedesktop.org/software/fontconfig/release/fontconfig-2.14.2.tar.xz" -blake3 = "dc342745b8e19ecda458464a9df7cf1266d0af759b230d07f43964b34ca86581" +tar = "https://www.freedesktop.org/software/fontconfig/release/fontconfig-2.16.0.tar.xz" +blake3 = "5c95d48f5b9150f4a06d8acac12c25edaac956007df95a3bf527df02a5908f0e" patches = [ "redox.patch" ] From 047e6ca0ecd78dc071370cd4f87f80543b6293f9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 13:33:51 -0600 Subject: [PATCH 2400/3180] Add meson template --- src/bin/cook.rs | 57 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 54 insertions(+), 3 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 8d0802c0..2d409695 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -794,6 +794,8 @@ function cookbook_configure { "${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" } +COOKBOOK_CMAKE="cmake" +COOKBOOK_NINJA="ninja" function cookbook_cmake { cat > CMakeToolchain-x86_64.cmake < cross_file.txt + echo "c = '${CC}'" >> cross_file.txt + echo "cpp = '${CXX}'" >> cross_file.txt + echo "ar = '${AR}'" >> cross_file.txt + echo "strip = '${STRIP}'" >> cross_file.txt + echo "pkg-config = '${PKG_CONFIG}'" >> cross_file.txt + echo "llvm-config = '${TARGET}-llvm-config'" >> cross_file.txt + + echo "[host_machine]" >> cross_file.txt + echo "system = 'redox'" >> cross_file.txt + echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt + echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt + echo "endian = 'little'" >> cross_file.txt + + echo "[properties]" >> cross_file.txt + echo "needs_exe_wrapper = true" >> cross_file.txt + echo "sys_root = '${COOKBOOK_SYSROOT}'" >> cross_file.txt + + unset AR + unset AS + unset CC + unset CXX + unset LD + unset NM + unset OBJCOPY + unset OBJDUMP + unset PKG_CONFIG + unset RANLIB + unset READELF + unset STRIP + + "${COOKBOOK_MESON}" setup \ + "${COOKBOOK_SOURCE}" \ + . \ + --cross-file cross_file.txt \ + "${COOKBOOK_MESON_FLAGS[@]}" \ + "$@" + "${COOKBOOK_NINJA}" -j"${COOKBOOK_MAKE_JOBS}" + DESTDIR="${COOKBOOK_STAGE}" "${COOKBOOK_NINJA}" install -j"${COOKBOOK_MAKE_JOBS}" } "#; From b2b11072835e057962afa64cfa26c7da186f84b1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 13:34:22 -0600 Subject: [PATCH 2401/3180] pixman: update to 0.46 and compile with meson --- recipes/libs/pixman/recipe.toml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/recipes/libs/pixman/recipe.toml b/recipes/libs/pixman/recipe.toml index 8c4ddf89..7ecac605 100644 --- a/recipes/libs/pixman/recipe.toml +++ b/recipes/libs/pixman/recipe.toml @@ -1,7 +1,11 @@ [source] -tar = "https://www.cairographics.org/releases/pixman-0.42.2.tar.gz" -blake3 = "40f8a5cb809ae218ef33c75499d0fed6cbe625b26d78e88822304947cc07f183" +tar = "https://www.cairographics.org/releases/pixman-0.46.0.tar.xz" +blake3 = "" patches = ["redox.patch"] [build] -template = "configure" +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_meson -Dtests=disabled +""" From 97d714f1e109f424fe4daa4ca602ae461a1abf4c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 13:36:03 -0600 Subject: [PATCH 2402/3180] cairo: update to 1.18.4 and compile with meson --- recipes/libs/cairo/recipe.toml | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/recipes/libs/cairo/recipe.toml b/recipes/libs/cairo/recipe.toml index f468efa1..7468c0bd 100644 --- a/recipes/libs/cairo/recipe.toml +++ b/recipes/libs/cairo/recipe.toml @@ -1,11 +1,6 @@ [source] -tar = "https://www.cairographics.org/releases/cairo-1.16.0.tar.xz" -blake3 = "33e88a21de1fa52405f3952647b3bfd21d5d9d394e1abbc9ddb050a8ca09e35a" -script = """ -#Workaround to disable the not redox compatible tests -printf "all:\n\ninstall:\n" > ./test/Makefile.in -printf "all:\n\ninstall:\n" > ./perf/Makefile.in -""" +tar = "https://www.cairographics.org/releases/cairo-1.18.4.tar.xz" +blake3 = "b9fa14e02f85ec4e72396c62236c98502d04dbbdf8daf01ab9557a1c7aa7106e" [build] dependencies = [ @@ -19,11 +14,10 @@ dependencies = [ template = "custom" script = """ DYNAMIC_INIT -export CFLAGS="-DCAIRO_NO_MUTEX=1" -COOKBOOK_CONFIGURE_FLAGS+=( - --enable-xlib=no - --enable-script=no - --enable-interpreter=no -) -cookbook_configure +#TODO: fix mutex implementation +#TODO: why are math defines missing? +#TODO: why is -lexpat not automatic? +cookbook_meson \ + -Dc_args="-DCAIRO_NO_MUTEX=1 -DM_SQRT2=1.41421356237309504880 -DM_LN2=0.69314718055994530942 -lexpat" \ + -Dtests=disabled """ From 76d1f04f512787179d1a927733956e0c00906264 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 13:36:40 -0600 Subject: [PATCH 2403/3180] harfbuzz: clean up recipe script --- recipes/libs/harfbuzz/recipe.toml | 45 +------------------------------ 1 file changed, 1 insertion(+), 44 deletions(-) diff --git a/recipes/libs/harfbuzz/recipe.toml b/recipes/libs/harfbuzz/recipe.toml index 37c3d41b..77a72b69 100644 --- a/recipes/libs/harfbuzz/recipe.toml +++ b/recipes/libs/harfbuzz/recipe.toml @@ -15,50 +15,7 @@ dependencies = [ ] script = """ DYNAMIC_INIT - -# TODO: Fix this annoying shite -echo "[binaries]" > cross_file.txt -echo "c = '${CC}'" >> cross_file.txt -echo "cpp = '${CXX}'" >> cross_file.txt -echo "ar = '${AR}'" >> cross_file.txt -echo "strip = '${STRIP}'" >> cross_file.txt -echo "pkg-config = '${TARGET}-pkg-config'" >> cross_file.txt - -echo "[host_machine]" >> cross_file.txt -echo "system = 'redox'" >> cross_file.txt -echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt -echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt -echo "endian = 'little'" >> cross_file.txt - -echo "[paths]" >> cross_file.txt -echo "prefix = '${COOKBOOK_SYSROOT}'" >> cross_file.txt -echo "libdir = 'lib'" >> cross_file.txt -echo "bindir = 'bin'" >> cross_file.txt - -unset AR -unset AS -unset CC -unset CXX -unset LD -unset NM -unset OBJCOPY -unset OBJDUMP -unset PKG_CONFIG -unset RANLIB -unset READELF -unset STRIP - -meson \ - setup \ - "${COOKBOOK_SOURCE}" \ - _build \ - --cross-file cross_file.txt \ - --buildtype release \ - --strip \ - -Dprefix=/usr \ - -Dlibdir=lib \ +cookbook_meson \ -Ddocs=disabled \ -Dtests=disabled -ninja -C _build -v -DESTDIR="${COOKBOOK_STAGE}" ninja -C _build -v install """ From db5dbe01ecad55368a508b623908543db91efe87 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 13:44:50 -0600 Subject: [PATCH 2404/3180] fribidi: update and compile with meson --- recipes/libs/fribidi/recipe.toml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/recipes/libs/fribidi/recipe.toml b/recipes/libs/fribidi/recipe.toml index f84cda4a..65257a46 100644 --- a/recipes/libs/fribidi/recipe.toml +++ b/recipes/libs/fribidi/recipe.toml @@ -1,12 +1,10 @@ [source] -tar = "https://github.com/fribidi/fribidi/releases/download/v1.0.13/fribidi-1.0.13.tar.xz" -blake3 = "b43d333a98e39fc25cf7ce5fd11409424cf33e74aa28ec4a727f867aea83ce39" +tar = "https://github.com/fribidi/fribidi/releases/download/v1.0.16/fribidi-1.0.16.tar.xz" +blake3 = "c16ee250f73f149d7d52dc7d285eb73ac755bad7907d237391e23f429b2b71d5" [build] template = "custom" script = """ -COOKBOOK_CONFIGURE_FLAGS+=( - ac_cv_header_sys_times_h=no -) -cookbook_configure +DYNAMIC_INIT +cookbook_meson -Dbin=false -Dtests=false """ From 664e9ba0c142cf79bfc5c968668e97960e9ede5b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 13:52:03 -0600 Subject: [PATCH 2405/3180] pango: update to 1.56.3 and compile with meson --- recipes/libs/pango/recipe.sh | 36 ---------------------------------- recipes/libs/pango/recipe.toml | 31 +++++++++++++++++++++++++++++ recipes/libs/pango/redox.patch | 24 ++++++++++++----------- 3 files changed, 44 insertions(+), 47 deletions(-) delete mode 100644 recipes/libs/pango/recipe.sh create mode 100644 recipes/libs/pango/recipe.toml diff --git a/recipes/libs/pango/recipe.sh b/recipes/libs/pango/recipe.sh deleted file mode 100644 index a76a68af..00000000 --- a/recipes/libs/pango/recipe.sh +++ /dev/null @@ -1,36 +0,0 @@ -VERSION="1.42.4" -TAR="ftp.gnome.org/pub/GNOME/sources/pango/${VERSION%.*}/pango-${VERSION}.tar.xz" -BUILD_DEPENDS=(cairo expat fontconfig freetype2 fribidi gettext glib harfbuzz libffi libiconv libpng pcre pixman zlib) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib --static" - export GLIB_MKENUMS="$sysroot/bin/glib-mkenums" - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix=/ \ - --disable-shared \ - --enable-static - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/libs/pango/recipe.toml b/recipes/libs/pango/recipe.toml new file mode 100644 index 00000000..eaf03af8 --- /dev/null +++ b/recipes/libs/pango/recipe.toml @@ -0,0 +1,31 @@ +[source] +tar="https://download.gnome.org/sources/pango/1.56/pango-1.56.3.tar.xz" +blake3 = "78542feaaf007c1d648b94c4e9b6655ed7515d27ce434766aea99bef886c21ac" +patches = ["redox.patch"] + +[build] +dependencies = [ + "cairo", + "expat", + "fontconfig", + "freetype2", + "fribidi", + "gettext", + "glib", + "harfbuzz", + "libffi", + "libiconv", + "libpng", + "pcre", + "pixman", + "zlib", +] +template = "custom" +script = """ +DYNAMIC_INIT +#TODO: why are these libs not automatic? +cookbook_meson \ + -Dc_args="-lfontconfig -lexpat -lpixman-1 -lpng -lz" \ + -Dbuild-examples=false \ + -Dbuild-testsuite=false +""" diff --git a/recipes/libs/pango/redox.patch b/recipes/libs/pango/redox.patch index d6a96c33..d04c9538 100644 --- a/recipes/libs/pango/redox.patch +++ b/recipes/libs/pango/redox.patch @@ -1,12 +1,14 @@ -diff -ruwN source/configure source-new/configure ---- source/configure 2015-10-12 13:14:13.000000000 -0600 -+++ source-new/configure 2019-07-16 17:31:27.949906081 -0600 -@@ -19323,7 +19323,7 @@ - fi +diff -ruwN pango-1.56.3/meson.build source/meson.build +--- pango-1.56.3/meson.build 2025-03-16 05:45:47.000000000 -0600 ++++ source/meson.build 2025-05-01 13:51:05.834742120 -0600 +@@ -551,8 +551,8 @@ + pango_inc = include_directories('pango') - # Setup GLIB_MKENUMS to use glib-mkenums even if GLib is uninstalled. --GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0` -+#GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0` - - - # + subdir('pango') +-subdir('utils') +-subdir('tools') ++#TODO: fails to build on Redox: subdir('utils') ++#TODO: fails to build on Redox: subdir('tools') + subdir('docs') + if get_option('build-testsuite') + subdir('tests') From c9cc0fde6d75204d71a498f39e593d984afa4dd0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 13:53:47 -0600 Subject: [PATCH 2406/3180] gdk-pixbuf: cleanup recipe --- recipes/dev/gdk-pixbuf/recipe.toml | 45 ++---------------------------- 1 file changed, 2 insertions(+), 43 deletions(-) diff --git a/recipes/dev/gdk-pixbuf/recipe.toml b/recipes/dev/gdk-pixbuf/recipe.toml index a79e37b2..9020deff 100644 --- a/recipes/dev/gdk-pixbuf/recipe.toml +++ b/recipes/dev/gdk-pixbuf/recipe.toml @@ -18,50 +18,9 @@ dependencies = [ template = "custom" script = """ DYNAMIC_INIT - -# TODO: Fix this annoying shite -echo "[binaries]" > cross_file.txt -echo "c = '${CC}'" >> cross_file.txt -echo "cpp = '${CXX}'" >> cross_file.txt -echo "ar = '${AR}'" >> cross_file.txt -echo "strip = '${STRIP}'" >> cross_file.txt -echo "pkgconfig = '${PKG_CONFIG}'" >> cross_file.txt - -echo "[host_machine]" >> cross_file.txt -echo "system = 'redox'" >> cross_file.txt -echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt -echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt -echo "endian = 'little'" >> cross_file.txt - -echo "[paths]" >> cross_file.txt -echo "prefix = '${COOKBOOK_SYSROOT}'" >> cross_file.txt -echo "libdir = 'lib'" >> cross_file.txt -echo "bindir = 'bin'" >> cross_file.txt - -unset AR -unset AS -unset CC -unset CXX -unset LD -unset NM -unset OBJCOPY -unset OBJDUMP -unset PKG_CONFIG -unset RANLIB -unset READELF -unset STRIP - -meson setup "${COOKBOOK_SOURCE}" . \ - --cross-file cross_file.txt \ - --buildtype release \ - --strip \ - -Ddefault_library=shared \ - -Dprefix=/ \ - -Dlibdir=lib \ +cookbook_meson \ -Dbuiltin_loaders=all \ -Dgir=false \ -Dinstalled_tests=false \ -Dx11=false -ninja -v -DESTDIR="${COOKBOOK_STAGE}" ninja -v install -""" \ No newline at end of file +""" From 772597bfddf8bc1f1762491303d81b7c8c027c71 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 14:05:03 -0600 Subject: [PATCH 2407/3180] freetype2: clean up recipe --- recipes/libs/freetype2/recipe.toml | 46 +----------------------------- 1 file changed, 1 insertion(+), 45 deletions(-) diff --git a/recipes/libs/freetype2/recipe.toml b/recipes/libs/freetype2/recipe.toml index ae56808c..12cb960c 100644 --- a/recipes/libs/freetype2/recipe.toml +++ b/recipes/libs/freetype2/recipe.toml @@ -10,49 +10,5 @@ dependencies = [ ] script = """ DYNAMIC_INIT - -# TODO: Fix this annoying shite -echo "[binaries]" > cross_file.txt -echo "c = '${CC}'" >> cross_file.txt -echo "cpp = '${CXX}'" >> cross_file.txt -echo "ar = '${AR}'" >> cross_file.txt -echo "strip = '${STRIP}'" >> cross_file.txt -echo "pkg-config = '${TARGET}-pkg-config'" >> cross_file.txt - -echo "[host_machine]" >> cross_file.txt -echo "system = 'redox'" >> cross_file.txt -echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt -echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt -echo "endian = 'little'" >> cross_file.txt - -echo "[paths]" >> cross_file.txt -echo "prefix = '${COOKBOOK_SYSROOT}'" >> cross_file.txt -echo "libdir = 'lib'" >> cross_file.txt -echo "bindir = 'bin'" >> cross_file.txt - -unset AR -unset AS -unset CC -unset CXX -unset LD -unset NM -unset OBJCOPY -unset OBJDUMP -unset PKG_CONFIG -unset RANLIB -unset READELF -unset STRIP - -meson \ - setup \ - "${COOKBOOK_SOURCE}" \ - _build \ - --cross-file cross_file.txt \ - --buildtype release \ - --strip \ - -Ddefault_library=both \ - -Dprefix=/usr \ - -Dlibdir=lib -ninja -C _build -v -DESTDIR="${COOKBOOK_STAGE}" ninja -C _build -v install +cookbook_meson -Ddefault_library=both """ From ab411b6ccb6ae69276470e55772dfe3bd31f2f29 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 14:10:07 -0600 Subject: [PATCH 2408/3180] pcre: compile dynamically --- recipes/libs/pcre/recipe.toml | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/recipes/libs/pcre/recipe.toml b/recipes/libs/pcre/recipe.toml index fc2c92fe..bf12da07 100644 --- a/recipes/libs/pcre/recipe.toml +++ b/recipes/libs/pcre/recipe.toml @@ -1,9 +1,23 @@ [source] tar = "https://mirrors.gigenet.com/OSDN//sfnet/p/pc/pcre/pcre/8.42/pcre-8.42.tar.gz" blake3 = "12d515ba12a816994def6b1e7196b5783fd2cfe495733a9167fa4d71dbe10248" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" patches = [ "redox.patch" ] [build] -template = "configure" +template = "custom" +script = """ +DYNAMIC_INIT +COOKBOOK_CONFIGURE_FLAGS=( + --host="${GNU_TARGET}" + --prefix="/usr" + --enable-shared + --enable-static +) +cookbook_configure +""" From 78b56f4f6a0a3dd02a34717228713df81442fc0a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 14:12:52 -0600 Subject: [PATCH 2409/3180] Add pcre2 --- recipes/libs/pcre2/recipe.toml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 recipes/libs/pcre2/recipe.toml diff --git a/recipes/libs/pcre2/recipe.toml b/recipes/libs/pcre2/recipe.toml new file mode 100644 index 00000000..176f992c --- /dev/null +++ b/recipes/libs/pcre2/recipe.toml @@ -0,0 +1,20 @@ +[source] +tar = "https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.45/pcre2-10.45.tar.bz2" +blake3 = "aea544846f9a03c1ec62c9f8d1c9a4187cc3cce557e53e6876eb6a58c7cdd9fe" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +template = "custom" +script = """ +DYNAMIC_INIT +COOKBOOK_CONFIGURE_FLAGS=( + --host="${GNU_TARGET}" + --prefix="/usr" + --enable-shared + --enable-static +) +cookbook_configure +""" From 66ea5bef62b34d0db1bc6387173464fa9abe3991 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 14:13:28 -0600 Subject: [PATCH 2410/3180] glib: cleanup recipe --- recipes/libs/glib/recipe.toml | 44 +++-------------------------------- 1 file changed, 3 insertions(+), 41 deletions(-) diff --git a/recipes/libs/glib/recipe.toml b/recipes/libs/glib/recipe.toml index 0a923ef0..c51b87f7 100644 --- a/recipes/libs/glib/recipe.toml +++ b/recipes/libs/glib/recipe.toml @@ -11,50 +11,12 @@ dependencies = [ "gettext", "libffi", "libiconv", - "pcre", + "pcre2", "zlib", ] script = """ DYNAMIC_INIT - -#TODO: do this in cook instead -unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP - -#export CFLAGS="-I${COOKBOOK_SYSROOT}/include" -#export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include" -#export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib --static" - -# TODO: Fix this annoying shite -echo "[binaries]" > cross_file.txt -echo "c = '${TARGET}-gcc'" >> cross_file.txt -echo "cpp = '${TARGET}-g++'" >> cross_file.txt -echo "ar = '${TARGET}-ar'" >> cross_file.txt -echo "strip = '${TARGET}-strip'" >> cross_file.txt -echo "pkg-config = '${TARGET}-pkg-config'" >> cross_file.txt - -echo "[host_machine]" >> cross_file.txt -echo "system = 'redox'" >> cross_file.txt -echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt -echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt -echo "endian = 'little'" >> cross_file.txt - -echo "[paths]" >> cross_file.txt -echo "prefix = '/usr'" >> cross_file.txt -echo "libdir = 'lib'" >> cross_file.txt -echo "bindir = 'bin'" >> cross_file.txt - -echo "[properties]" >> cross_file.txt -echo "needs_exe_wrapper = true" >> cross_file.txt - -meson \ - setup \ - "${COOKBOOK_SOURCE}" \ - . \ - --cross-file cross_file.txt \ - --buildtype release \ - --strip \ +cookbook_meson \ -Ddefault_library=shared \ -Dxattr=false -ninja -v -DESTDIR="${COOKBOOK_STAGE}" ninja install -""" \ No newline at end of file +""" From 98b9c2f470b7eb8037a1e4387074f0679cb6405a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 14:17:22 -0600 Subject: [PATCH 2411/3180] harfbuzz: use pcre2 --- recipes/libs/harfbuzz/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/libs/harfbuzz/recipe.toml b/recipes/libs/harfbuzz/recipe.toml index 77a72b69..46a73062 100644 --- a/recipes/libs/harfbuzz/recipe.toml +++ b/recipes/libs/harfbuzz/recipe.toml @@ -10,7 +10,7 @@ dependencies = [ "glib", "libiconv", "libpng", - "pcre", + "pcre2", "zlib" ] script = """ From 7a87c0bd9075500e93c74c2d7792552a250d5971 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 14:20:40 -0600 Subject: [PATCH 2412/3180] gstreamer: clean up reicpe, switch to pcre2 --- recipes/libs/gstreamer/recipe.toml | 47 ++---------------------------- 1 file changed, 2 insertions(+), 45 deletions(-) diff --git a/recipes/libs/gstreamer/recipe.toml b/recipes/libs/gstreamer/recipe.toml index bda75280..93a1d010 100644 --- a/recipes/libs/gstreamer/recipe.toml +++ b/recipes/libs/gstreamer/recipe.toml @@ -22,7 +22,7 @@ dependencies = [ "libvorbis", "libxml2", #TODO "pango", - "pcre", + "pcre2", "pixman", "zlib" ] @@ -31,50 +31,7 @@ DYNAMIC_INIT export GLIB_GENMARSHAL="$(which glib-genmarshal)" export GLIB_MKENUMS="$(which glib-mkenums)" -export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" -# TODO: Fix this annoying shite -echo "[binaries]" > cross_file.txt -echo "c = '${CC}'" >> cross_file.txt -echo "cpp = '${CXX}'" >> cross_file.txt -echo "ar = '${AR}'" >> cross_file.txt -echo "strip = '${STRIP}'" >> cross_file.txt -echo "pkg-config = '${TARGET}-pkg-config'" >> cross_file.txt - -echo "[host_machine]" >> cross_file.txt -echo "system = 'redox'" >> cross_file.txt -echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt -echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt -echo "endian = 'little'" >> cross_file.txt - -echo "[paths]" >> cross_file.txt -echo "prefix = '${COOKBOOK_SYSROOT}'" >> cross_file.txt -echo "libdir = 'lib'" >> cross_file.txt -echo "bindir = 'bin'" >> cross_file.txt - -unset AR -unset AS -unset CC -unset CXX -unset LD -unset NM -unset OBJCOPY -unset OBJDUMP -unset PKG_CONFIG -unset RANLIB -unset READELF -unset STRIP - -meson \ - setup \ - "${COOKBOOK_SOURCE}" \ - _build \ - --cross-file cross_file.txt \ - --buildtype release \ - --strip \ - -Dprefix=/ \ - -Dlibdir=lib \ +cookbook_meson \ -Dauto_features=disabled -ninja -C _build -v -DESTDIR="${COOKBOOK_STAGE}" ninja -C _build -v install """ From 4afa9b5fc464fd9879a81258d397e338d77a579a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 14:24:25 -0600 Subject: [PATCH 2413/3180] Remove gstreamer-plugins-base as it comes from gstreamer --- .../libs/gstreamer-plugins-base/recipe.toml | 65 ------------------- 1 file changed, 65 deletions(-) delete mode 100644 recipes/libs/gstreamer-plugins-base/recipe.toml diff --git a/recipes/libs/gstreamer-plugins-base/recipe.toml b/recipes/libs/gstreamer-plugins-base/recipe.toml deleted file mode 100644 index 829760f7..00000000 --- a/recipes/libs/gstreamer-plugins-base/recipe.toml +++ /dev/null @@ -1,65 +0,0 @@ -[source] -tar = "https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.20.6.tar.xz" -blake3 = "6761ea816ead143b5472c518c7fc52c0f485542b3c671cd872616bc6ca600f50" -patches = [] - -[build] -template = "custom" -dependencies = [ - "gettext", - "glib", - "gstreamer", - "libffi", - "libiconv", - "pcre", - "zlib" -] -script = """ -export GLIB_GENMARSHAL="$(which glib-genmarshal)" -export GLIB_MKENUMS="$(which glib-mkenums)" -export LDFLAGS="-static" - -# TODO: Fix this annoying shite -echo "[binaries]" > cross_file.txt -echo "c = '${CC}'" >> cross_file.txt -echo "cpp = '${CXX}'" >> cross_file.txt -echo "ar = '${AR}'" >> cross_file.txt -echo "strip = '${STRIP}'" >> cross_file.txt -echo "pkgconfig = '${TARGET}-pkg-config'" >> cross_file.txt - -echo "[host_machine]" >> cross_file.txt -echo "system = 'redox'" >> cross_file.txt -echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt -echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt -echo "endian = 'little'" >> cross_file.txt - -echo "[paths]" >> cross_file.txt -echo "prefix = '${COOKBOOK_SYSROOT}'" >> cross_file.txt -echo "libdir = 'lib'" >> cross_file.txt -echo "bindir = 'bin'" >> cross_file.txt - -unset AR -unset AS -unset CC -unset CXX -unset LD -unset NM -unset OBJCOPY -unset OBJDUMP -unset PKG_CONFIG -unset RANLIB -unset READELF -unset STRIP - -meson setup "${COOKBOOK_SOURCE}" _build \ - --cross-file cross_file.txt \ - --buildtype release \ - --strip \ - -Ddefault_library=static \ - -Dprefix=/ \ - -Dlibdir=lib \ - -Dexamples=disabled \ - -Dtests=disabled -ninja -C _build -v -DESTDIR="${COOKBOOK_STAGE}" ninja -C _build -v install -""" From 2eb3de53ab79d8972c7e1a84d5e6ef3d774ae859 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 14:25:47 -0600 Subject: [PATCH 2414/3180] Remove gstreamer-plugins-good as it comes from gstreamer --- .../libs/gstreamer-plugins-good/recipe.toml | 66 ------------------- 1 file changed, 66 deletions(-) delete mode 100644 recipes/libs/gstreamer-plugins-good/recipe.toml diff --git a/recipes/libs/gstreamer-plugins-good/recipe.toml b/recipes/libs/gstreamer-plugins-good/recipe.toml deleted file mode 100644 index 87e47b8b..00000000 --- a/recipes/libs/gstreamer-plugins-good/recipe.toml +++ /dev/null @@ -1,66 +0,0 @@ -[source] -tar = "https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.20.6.tar.xz" -blake3 = "2ae9d13fffb56e3c0f2cf4003453ab787b54e7cf773c80ba1fcbf36ac7d68124" -patches = [] - -[build] -template = "custom" -dependencies = [ - "gettext", - "glib", - "gstreamer", - "gstreamer-plugins-base", - "libffi", - "libiconv", - "pcre", - "zlib" -] -script = """ -export GLIB_GENMARSHAL="$(which glib-genmarshal)" -export GLIB_MKENUMS="$(which glib-mkenums)" -export LDFLAGS="-static" - -# TODO: Fix this annoying shite -echo "[binaries]" > cross_file.txt -echo "c = '${CC}'" >> cross_file.txt -echo "cpp = '${CXX}'" >> cross_file.txt -echo "ar = '${AR}'" >> cross_file.txt -echo "strip = '${STRIP}'" >> cross_file.txt -echo "pkgconfig = '${TARGET}-pkg-config'" >> cross_file.txt - -echo "[host_machine]" >> cross_file.txt -echo "system = 'redox'" >> cross_file.txt -echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt -echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt -echo "endian = 'little'" >> cross_file.txt - -echo "[paths]" >> cross_file.txt -echo "prefix = '${COOKBOOK_SYSROOT}'" >> cross_file.txt -echo "libdir = 'lib'" >> cross_file.txt -echo "bindir = 'bin'" >> cross_file.txt - -unset AR -unset AS -unset CC -unset CXX -unset LD -unset NM -unset OBJCOPY -unset OBJDUMP -unset PKG_CONFIG -unset RANLIB -unset READELF -unset STRIP - -meson setup "${COOKBOOK_SOURCE}" _build \ - --cross-file cross_file.txt \ - --buildtype release \ - --strip \ - -Ddefault_library=static \ - -Dprefix=/ \ - -Dlibdir=lib \ - -Dexamples=disabled \ - -Dtests=disabled -ninja -C _build -v -DESTDIR="${COOKBOOK_STAGE}" ninja -C _build -v install -""" From 6229575f9510a8a8974f9fef0c9eab0979630ac0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 14:33:01 -0600 Subject: [PATCH 2415/3180] cosmic-player: link pcre2 --- recipes/wip/players/cosmic-player/recipe.toml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/wip/players/cosmic-player/recipe.toml b/recipes/wip/players/cosmic-player/recipe.toml index 36b8ad11..f7f21ebe 100644 --- a/recipes/wip/players/cosmic-player/recipe.toml +++ b/recipes/wip/players/cosmic-player/recipe.toml @@ -11,6 +11,7 @@ dependencies = [ "gstreamer", "libffi", "libiconv", + "pcre2", "zlib", ] script = """ @@ -21,7 +22,7 @@ DYNAMIC_INIT --bin cosmic-player \ --no-default-features \ -- \ - -C link-args="-lgmodule-2.0 -lffi -lz" + -C link-args="-lgmodule-2.0 -lffi -lpcre2-8 -lz" mkdir -pv "${COOKBOOK_STAGE}/usr/bin/" cp -v "target/${TARGET}/release/cosmic-player" "${COOKBOOK_STAGE}/usr/bin/" mkdir -pv "${COOKBOOK_STAGE}/ui/apps/" @@ -34,4 +35,4 @@ mkdir -pv "${COOKBOOK_STAGE}/usr/share/metainfo/" cp -v "${COOKBOOK_SOURCE}/res/${APPID}.metainfo.xml" "${COOKBOOK_STAGE}/usr/share/metainfo/" mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" cp -rv "${COOKBOOK_SOURCE}/res/icons/hicolor/" "${COOKBOOK_STAGE}/usr/share/icons/" -""" \ No newline at end of file +""" From af909487ef6efd3994d355d6f37feda77c64cc11 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 14:41:52 -0600 Subject: [PATCH 2416/3180] pkg-config: link pcre2 --- recipes/dev/pkg-config/recipe.toml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/dev/pkg-config/recipe.toml b/recipes/dev/pkg-config/recipe.toml index d61a0ffb..5c87b753 100644 --- a/recipes/dev/pkg-config/recipe.toml +++ b/recipes/dev/pkg-config/recipe.toml @@ -10,10 +10,11 @@ dependencies = [ "gettext", "glib", "libiconv", - "pcre", + "pcre2", ] template = "custom" script = """ DYNAMIC_INIT +export LIBS="-lpcre2-8" cookbook_configure -""" \ No newline at end of file +""" From 631758cabbdc307da4f13daa3bf1ec6f4b65b68c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 14:47:25 -0600 Subject: [PATCH 2417/3180] libogg, libvorbis: compile dynamically --- recipes/libs/libogg/recipe.toml | 16 +++++++++++++++- recipes/libs/libvorbis/recipe.toml | 17 ++++++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/recipes/libs/libogg/recipe.toml b/recipes/libs/libogg/recipe.toml index 996b764e..f0dcf406 100644 --- a/recipes/libs/libogg/recipe.toml +++ b/recipes/libs/libogg/recipe.toml @@ -4,6 +4,20 @@ blake3 = "8220c0e4082fa26c07b10bfe31f641d2e33ebe1d1bb0b20221b7016bc8b78a3a" patches = [ "redox.patch" ] +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" [build] -template = "configure" +template = "custom" +script = """ +DYNAMIC_INIT +COOKBOOK_CONFIGURE_FLAGS=( + --host="${GNU_TARGET}" + --prefix="/usr" + --enable-shared + --enable-static +) +cookbook_configure +""" diff --git a/recipes/libs/libvorbis/recipe.toml b/recipes/libs/libvorbis/recipe.toml index fa5717cd..b3908c09 100644 --- a/recipes/libs/libvorbis/recipe.toml +++ b/recipes/libs/libvorbis/recipe.toml @@ -1,8 +1,23 @@ [source] tar = "https://github.com/xiph/vorbis/releases/download/v1.3.7/libvorbis-1.3.7.tar.xz" blake3 = "c67f3f74ec26d93a5571c4404a64eb6e6587d7d77b46b552f7b410f5bc5b1f03" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + [build] -template = "configure" +template = "custom" dependencies = [ "libogg" ] +script = """ +DYNAMIC_INIT +COOKBOOK_CONFIGURE_FLAGS=( + --host="${GNU_TARGET}" + --prefix="/usr" + --enable-shared + --enable-static +) +cookbook_configure +""" From 9e8c2f61243da967af6ba9f5890f1526dd09ac03 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 15:01:13 -0600 Subject: [PATCH 2418/3180] libxml2, xz: compile dynamically --- recipes/libs/libxml2/recipe.toml | 12 +++++++++++- recipes/tools/xz/recipe.toml | 11 +++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/recipes/libs/libxml2/recipe.toml b/recipes/libs/libxml2/recipe.toml index 465d85a8..4e4b936d 100644 --- a/recipes/libs/libxml2/recipe.toml +++ b/recipes/libs/libxml2/recipe.toml @@ -1,6 +1,11 @@ [source] tar = "https://download.gnome.org/sources/libxml2/2.11/libxml2-2.11.3.tar.xz" blake3 = "0653d3750576299c4cb88740942165671b576ff93019f3d669b3f37136225ab7" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + [build] template = "custom" dependencies = [ @@ -8,7 +13,12 @@ dependencies = [ "zlib" ] script = """ -COOKBOOK_CONFIGURE_FLAGS+=( +DYNAMIC_INIT +COOKBOOK_CONFIGURE_FLAGS=( + --host="${GNU_TARGET}" + --prefix="/usr" + --enable-shared + --enable-static --without-python ) cookbook_configure diff --git a/recipes/tools/xz/recipe.toml b/recipes/tools/xz/recipe.toml index 8fe1637b..339b5102 100644 --- a/recipes/tools/xz/recipe.toml +++ b/recipes/tools/xz/recipe.toml @@ -1,22 +1,25 @@ [source] tar = "https://github.com/tukaani-project/xz/releases/download/v5.2.13/xz-5.2.13.tar.gz" blake3 = "edc6350542e8cb7188a878135e5b9bd592d687e5b47451ca1c89d51cc4bc6b53" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" [build] template = "custom" script = """ -export CFLAGS="-static" +DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS=( --host="${GNU_TARGET}" - --prefix="" + --prefix="/usr" --disable-lzmadec --disable-lzmainfo --disable-xz --disable-xzdec - --enable-shared=no + --enable-shared=yes --enable-static=yes --enable-threads=no - --with-pic=no ) cookbook_configure """ From e14d8dccc296e56b89ffc3c68f095b5232c7f583 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 15:03:48 -0600 Subject: [PATCH 2419/3180] gstreamer: enable auto features --- recipes/libs/gstreamer/recipe.toml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/recipes/libs/gstreamer/recipe.toml b/recipes/libs/gstreamer/recipe.toml index 93a1d010..5d67b068 100644 --- a/recipes/libs/gstreamer/recipe.toml +++ b/recipes/libs/gstreamer/recipe.toml @@ -8,7 +8,7 @@ template = "custom" dependencies = [ "cairo", "expat", - "ffmpeg6", + #TODO: "ffmpeg6", "freetype2", "fontconfig", "gettext", @@ -33,5 +33,14 @@ export GLIB_GENMARSHAL="$(which glib-genmarshal)" export GLIB_MKENUMS="$(which glib-mkenums)" cookbook_meson \ - -Dauto_features=disabled + -Ddevtools=disabled \ + -Dexamples=disabled \ + -Dlibav=disabled \ + -Dlibnice=disabled \ + -Dorc=disabled \ + -Dtests=disabled \ + -Dtools=disabled \ + -Dgstreamer:check=disabled \ + -Dgstreamer:coretracers=disabled \ + -Dgst-plugins-bad:shm=disabled """ From 7f6acd9bf3eb70319bf43f6f9071700a9908179c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 15:16:01 -0600 Subject: [PATCH 2420/3180] qemu: switch to pcre2 --- recipes/wip/vm/qemu/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/wip/vm/qemu/recipe.toml b/recipes/wip/vm/qemu/recipe.toml index 26a91a1f..4db5ecc8 100644 --- a/recipes/wip/vm/qemu/recipe.toml +++ b/recipes/wip/vm/qemu/recipe.toml @@ -16,7 +16,7 @@ dependencies = [ "mesa", "nghttp2", "openssl1", - "pcre", + "pcre2", "pixman", "sdl2", "sdl2-image", @@ -47,4 +47,4 @@ case "${TARGET}" in ;; esac cookbook_configure -""" \ No newline at end of file +""" From f1c4d868415acfd0c31bca5e15a99bef5bf7286f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 16:07:58 -0600 Subject: [PATCH 2421/3180] smb-rs: add wip recipe --- recipes/wip/net/other/smb-rs/recipe.toml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 recipes/wip/net/other/smb-rs/recipe.toml diff --git a/recipes/wip/net/other/smb-rs/recipe.toml b/recipes/wip/net/other/smb-rs/recipe.toml new file mode 100644 index 00000000..815321ed --- /dev/null +++ b/recipes/wip/net/other/smb-rs/recipe.toml @@ -0,0 +1,9 @@ +#TODO: fix aws-lc-sys compilation +[source] +git = "https://github.com/AvivNaaman/smb-rs" + +[build] +template = "custom" +script = """ +cookbook_cargo_packages smb-cli +""" From 9b75d4b0cfbcf56c4c3ddd22649a4ddd0d9e6305 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 1 May 2025 18:27:47 -0600 Subject: [PATCH 2422/3180] Add russh with examples --- recipes/wip/ssh/russh/recipe.toml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 recipes/wip/ssh/russh/recipe.toml diff --git a/recipes/wip/ssh/russh/recipe.toml b/recipes/wip/ssh/russh/recipe.toml new file mode 100644 index 00000000..828f7471 --- /dev/null +++ b/recipes/wip/ssh/russh/recipe.toml @@ -0,0 +1,8 @@ +[source] +git = "https://github.com/jackpot51/russh" + +[build] +template = "custom" +script = """ +cookbook_cargo_examples client_exec_simple client_exec_interactive sftp_client sftp_server +""" From 1563ea03f9c4adf805daa6c95485a38f8fe9645e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 May 2025 09:25:07 -0600 Subject: [PATCH 2423/3180] libwayland: use meson template --- recipes/wip/libs/other/libwayland/recipe.toml | 39 +------------------ 1 file changed, 2 insertions(+), 37 deletions(-) diff --git a/recipes/wip/libs/other/libwayland/recipe.toml b/recipes/wip/libs/other/libwayland/recipe.toml index 0cbe6be5..28b54879 100644 --- a/recipes/wip/libs/other/libwayland/recipe.toml +++ b/recipes/wip/libs/other/libwayland/recipe.toml @@ -10,41 +10,6 @@ dependencies = [ "libxml2", ] script = """ -#TODO: do this in cook instead -unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP - -export CFLAGS="-I${COOKBOOK_SYSROOT}/include -DHAVE_PTHREAD=1" -export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include -DHAVE_PTHREAD=1" -export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib --static" -export LLVM_CONFIG="${TARGET}-llvm-config" - -# TODO: Fix this annoying shite -echo "[binaries]" > cross_file.txt -echo "c = '${TARGET}-gcc'" >> cross_file.txt -echo "cpp = '${TARGET}-g++'" >> cross_file.txt -echo "ar = '${TARGET}-ar'" >> cross_file.txt -echo "strip = '${TARGET}-strip'" >> cross_file.txt -echo "pkgconfig = '${TARGET}-pkg-config'" >> cross_file.txt -echo "llvm-config = '${TARGET}-llvm-config'" >> cross_file.txt - -echo "[host_machine]" >> cross_file.txt -echo "system = 'redox'" >> cross_file.txt -echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt -echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt -echo "endian = 'little'" >> cross_file.txt - -echo "[paths]" >> cross_file.txt -echo "prefix = '/'" >> cross_file.txt -echo "libdir = 'lib'" >> cross_file.txt -echo "bindir = 'bin'" >> cross_file.txt - -echo "[properties]" >> cross_file.txt -echo "needs_exe_wrapper = true" >> cross_file.txt - -meson "${COOKBOOK_SOURCE}" . \ - --cross-file cross_file.txt \ - --buildtype release \ - --strip \ - -Ddefault_library=static -DESTDIR="${COOKBOOK_STAGE}" ninja install +DYNAMIC_INIT +cookbook_meson """ From 05fcaec55ec6c634ebf92c2aa59468666d784e46 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 May 2025 09:25:28 -0600 Subject: [PATCH 2424/3180] gnutls3: compile dynamically --- recipes/wip/libs/tls/gnutls3/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/recipes/wip/libs/tls/gnutls3/recipe.toml b/recipes/wip/libs/tls/gnutls3/recipe.toml index 8325c63b..551f9414 100644 --- a/recipes/wip/libs/tls/gnutls3/recipe.toml +++ b/recipes/wip/libs/tls/gnutls3/recipe.toml @@ -2,6 +2,10 @@ [source] tar = "https://www.gnupg.org/ftp/gcrypt/gnutls/v3.7/gnutls-3.7.10.tar.xz" blake3 = "edcd8a505867226722ae50e0e9bb2bf57a1f38b5674a3028e26f69d2d61957e6" +script = """ +DYNAMIC_INIT +#TODO autotools_recursive_regenerate +""" [build] template = "custom" @@ -10,6 +14,7 @@ dependencies = [ "libnettle", ] script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( --with-included-libtasn1 --with-included-unistring From 8ab54540b880fbd60019cce4d4968f07f15619e5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 May 2025 09:25:50 -0600 Subject: [PATCH 2425/3180] jansson: compile dynamically --- recipes/libs/jansson/recipe.toml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/recipes/libs/jansson/recipe.toml b/recipes/libs/jansson/recipe.toml index a2c3ef42..2e2538d9 100644 --- a/recipes/libs/jansson/recipe.toml +++ b/recipes/libs/jansson/recipe.toml @@ -1,6 +1,14 @@ [source] tar = "https://github.com/akheron/jansson/releases/download/v2.10/jansson-2.10.tar.gz" blake3 = "3c74f374a6c7ac5e323f72d87e49e5309ca922ca26cfe4992873b31f28776624" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" [build] -template = "configure" +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From 19966264dca41332389af29a350cd8981f76f2cb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 May 2025 09:26:25 -0600 Subject: [PATCH 2426/3180] libnettle: compile dynamically --- recipes/libs/libnettle/recipe.toml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/recipes/libs/libnettle/recipe.toml b/recipes/libs/libnettle/recipe.toml index 79a2a647..b5dd3ce4 100644 --- a/recipes/libs/libnettle/recipe.toml +++ b/recipes/libs/libnettle/recipe.toml @@ -1,9 +1,17 @@ [source] tar = "https://ftp.gnu.org/gnu/nettle/nettle-3.9.1.tar.gz" blake3 = "e4bfbda32f4fdf5ed96c152efe3a3867193b690faa5378d02a2a6fd052ee3393" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" [build] -template = "configure" +template = "custom" dependencies = [ "libgmp" ] +script = """ +DYNAMIC_INIT +cookbook_configure +""" From a8bf5d105b9d796fe4a8f28c985676f4cd4da6f3 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 May 2025 09:26:58 -0600 Subject: [PATCH 2427/3180] Make category for X11, move libx11 and x11proto there, add xorg-server recipe --- recipes/wip/{libs/other => x11}/libx11/recipe.toml | 0 recipes/wip/{libs/other => x11}/x11proto/recipe.toml | 0 recipes/wip/x11/xorg-server/recipe.toml | 12 ++++++++++++ 3 files changed, 12 insertions(+) rename recipes/wip/{libs/other => x11}/libx11/recipe.toml (100%) rename recipes/wip/{libs/other => x11}/x11proto/recipe.toml (100%) create mode 100644 recipes/wip/x11/xorg-server/recipe.toml diff --git a/recipes/wip/libs/other/libx11/recipe.toml b/recipes/wip/x11/libx11/recipe.toml similarity index 100% rename from recipes/wip/libs/other/libx11/recipe.toml rename to recipes/wip/x11/libx11/recipe.toml diff --git a/recipes/wip/libs/other/x11proto/recipe.toml b/recipes/wip/x11/x11proto/recipe.toml similarity index 100% rename from recipes/wip/libs/other/x11proto/recipe.toml rename to recipes/wip/x11/x11proto/recipe.toml diff --git a/recipes/wip/x11/xorg-server/recipe.toml b/recipes/wip/x11/xorg-server/recipe.toml new file mode 100644 index 00000000..29caa286 --- /dev/null +++ b/recipes/wip/x11/xorg-server/recipe.toml @@ -0,0 +1,12 @@ +[source] +git = "https://gitlab.freedesktop.org/xorg/xserver.git" + +[build] +dependencies = [ + "libx11", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_meson +""" From c5e7dd228765a215289a5af5373fe190969c27c8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 May 2025 09:27:51 -0600 Subject: [PATCH 2428/3180] Move libxcb to x11 category --- recipes/wip/{libs/other => x11}/libxcb/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{libs/other => x11}/libxcb/recipe.toml (100%) diff --git a/recipes/wip/libs/other/libxcb/recipe.toml b/recipes/wip/x11/libxcb/recipe.toml similarity index 100% rename from recipes/wip/libs/other/libxcb/recipe.toml rename to recipes/wip/x11/libxcb/recipe.toml From fb6cd0035948a3df8d7259ae49440132d28efec6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 May 2025 09:30:55 -0600 Subject: [PATCH 2429/3180] Add libxcb-proto --- recipes/wip/x11/libxcb-proto/recipe.toml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 recipes/wip/x11/libxcb-proto/recipe.toml diff --git a/recipes/wip/x11/libxcb-proto/recipe.toml b/recipes/wip/x11/libxcb-proto/recipe.toml new file mode 100644 index 00000000..54cca3c8 --- /dev/null +++ b/recipes/wip/x11/libxcb-proto/recipe.toml @@ -0,0 +1,10 @@ +[source] +tar = "https://xorg.freedesktop.org/archive/individual/proto/xcb-proto-1.17.0.tar.xz" +blake3 = "68187400fded667f60b4b020d0fc37fa489ae0de33169fe7b07fcbaf88e7a3f9" + +[build] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From a5a1106b33cb1bb4f23a19c41ccd0f024e59d8e7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 May 2025 09:50:10 -0600 Subject: [PATCH 2430/3180] Move libxau and fix compilation --- recipes/wip/libs/other/libxau/recipe.toml | 8 -------- recipes/wip/x11/libxau/recipe.toml | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 8 deletions(-) delete mode 100644 recipes/wip/libs/other/libxau/recipe.toml create mode 100644 recipes/wip/x11/libxau/recipe.toml diff --git a/recipes/wip/libs/other/libxau/recipe.toml b/recipes/wip/libs/other/libxau/recipe.toml deleted file mode 100644 index 45f5fdca..00000000 --- a/recipes/wip/libs/other/libxau/recipe.toml +++ /dev/null @@ -1,8 +0,0 @@ -#TODO compiled but not tested -[source] -tar = "https://www.x.org/releases/individual/lib/libXau-1.0.11.tar.xz" -[build] -template = "configure" -dependencies = [ - "x11proto", -] diff --git a/recipes/wip/x11/libxau/recipe.toml b/recipes/wip/x11/libxau/recipe.toml new file mode 100644 index 00000000..3ea5322b --- /dev/null +++ b/recipes/wip/x11/libxau/recipe.toml @@ -0,0 +1,17 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/libXau-1.0.12.tar.xz" +blake3 = "674bc71a888eec20f0e29989e4669df90309d4baacad058107cdf89d23803bcc" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "x11proto", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From 965760199dd6caccd237702b9dc12a5370084617 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 May 2025 09:51:25 -0600 Subject: [PATCH 2431/3180] Rename libxcb-proto to xcb-proto --- recipes/wip/x11/{libxcb-proto => xcb-proto}/recipe.toml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) rename recipes/wip/x11/{libxcb-proto => xcb-proto}/recipe.toml (72%) diff --git a/recipes/wip/x11/libxcb-proto/recipe.toml b/recipes/wip/x11/xcb-proto/recipe.toml similarity index 72% rename from recipes/wip/x11/libxcb-proto/recipe.toml rename to recipes/wip/x11/xcb-proto/recipe.toml index 54cca3c8..cd7e9273 100644 --- a/recipes/wip/x11/libxcb-proto/recipe.toml +++ b/recipes/wip/x11/xcb-proto/recipe.toml @@ -3,8 +3,4 @@ tar = "https://xorg.freedesktop.org/archive/individual/proto/xcb-proto-1.17.0.ta blake3 = "68187400fded667f60b4b020d0fc37fa489ae0de33169fe7b07fcbaf88e7a3f9" [build] -template = "custom" -script = """ -DYNAMIC_INIT -cookbook_configure -""" +template = "configure" From 7de3c4750b291715ad51cb19739d80239f44ad7e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 May 2025 09:51:41 -0600 Subject: [PATCH 2432/3180] libxcb: fix compilation --- recipes/wip/x11/libxcb/recipe.toml | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/recipes/wip/x11/libxcb/recipe.toml b/recipes/wip/x11/libxcb/recipe.toml index 1d210db6..4ea52ba7 100644 --- a/recipes/wip/x11/libxcb/recipe.toml +++ b/recipes/wip/x11/libxcb/recipe.toml @@ -1,5 +1,20 @@ -#TODO missing xcb-proto package [source] -tar = "https://www.x.org/releases/individual/xcb/libxcb-1.16.tar.xz" +tar = "https://www.x.org/releases/individual/xcb/libxcb-1.17.0.tar.xz" +blake3 = "3dce3b8adc257177dfec9b6b6cf55eeac13921520dd6c372fd8f9d867600337b" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + [build] -template = "configure" +dependencies = [ + "libpthread-stubs", + "libxau", + "x11proto", + "xcb-proto", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From 715efb558dac954323f9bcdf9b22eab4439096cd Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 May 2025 09:52:51 -0600 Subject: [PATCH 2433/3180] Rename xorg-server to xserver-xorg --- recipes/wip/x11/{xorg-server => xserver-xorg}/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/x11/{xorg-server => xserver-xorg}/recipe.toml (100%) diff --git a/recipes/wip/x11/xorg-server/recipe.toml b/recipes/wip/x11/xserver-xorg/recipe.toml similarity index 100% rename from recipes/wip/x11/xorg-server/recipe.toml rename to recipes/wip/x11/xserver-xorg/recipe.toml From 605a955cf9cfd83dc1ece4f48d4c32d8e4608be0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 May 2025 09:59:20 -0600 Subject: [PATCH 2434/3180] Move libxtrans to xtrans and update --- recipes/wip/libs/other/libxtrans/recipe.toml | 5 ----- recipes/wip/x11/xtrans/recipe.toml | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 5 deletions(-) delete mode 100644 recipes/wip/libs/other/libxtrans/recipe.toml create mode 100644 recipes/wip/x11/xtrans/recipe.toml diff --git a/recipes/wip/libs/other/libxtrans/recipe.toml b/recipes/wip/libs/other/libxtrans/recipe.toml deleted file mode 100644 index cc5387ed..00000000 --- a/recipes/wip/libs/other/libxtrans/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO compiled but not tested -[source] -tar = "https://www.x.org/releases/individual/lib/xtrans-1.4.0.tar.gz" -[build] -template = "configure" diff --git a/recipes/wip/x11/xtrans/recipe.toml b/recipes/wip/x11/xtrans/recipe.toml new file mode 100644 index 00000000..556ef56d --- /dev/null +++ b/recipes/wip/x11/xtrans/recipe.toml @@ -0,0 +1,14 @@ +[source] +tar = "https://xorg.freedesktop.org/archive/individual/lib/xtrans-1.6.0.tar.xz" +blake3 = "18e5a2478425ec43370d7719bc4ee4f25d01ad7f580fcc3b5d91effa267cbaaa" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From fac719e09afef1f6d75e664118dc52391507dd5f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 May 2025 09:59:58 -0600 Subject: [PATCH 2435/3180] xtrans: cleanup recipe --- recipes/wip/x11/xtrans/recipe.toml | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/recipes/wip/x11/xtrans/recipe.toml b/recipes/wip/x11/xtrans/recipe.toml index 556ef56d..4278f942 100644 --- a/recipes/wip/x11/xtrans/recipe.toml +++ b/recipes/wip/x11/xtrans/recipe.toml @@ -1,14 +1,6 @@ [source] tar = "https://xorg.freedesktop.org/archive/individual/lib/xtrans-1.6.0.tar.xz" blake3 = "18e5a2478425ec43370d7719bc4ee4f25d01ad7f580fcc3b5d91effa267cbaaa" -script = """ -DYNAMIC_INIT -autotools_recursive_regenerate -""" [build] -template = "custom" -script = """ -DYNAMIC_INIT -cookbook_configure -""" +template = "configure" From f2a3df2473b83473238ca713737340b47be411fb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 May 2025 10:04:17 -0600 Subject: [PATCH 2436/3180] Allow cookbook_configure and cookbook_cmake templates to take arguments --- src/bin/cook.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 2d409695..b7e1bf1f 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -789,7 +789,7 @@ COOKBOOK_CONFIGURE_FLAGS=( COOKBOOK_MAKE="make" COOKBOOK_MAKE_JOBS="$(nproc)" function cookbook_configure { - "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" + "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" "$@" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" "${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" } @@ -821,7 +821,8 @@ EOF -DENABLE_STATIC=False \ -GNinja \ -Wno-dev \ - "${COOKBOOK_CMAKE_FLAGS[@]}" + "${COOKBOOK_CMAKE_FLAGS[@]}" \ + "$@" "${COOKBOOK_NINJA}" -j"${COOKBOOK_MAKE_JOBS}" DESTDIR="${COOKBOOK_STAGE}" "${COOKBOOK_NINJA}" install -j"${COOKBOOK_MAKE_JOBS}" From df49f26b812e974632cc8cd4952d1b84473cde55 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 May 2025 10:12:57 -0600 Subject: [PATCH 2437/3180] x11proto: update and patch --- recipes/wip/x11/x11proto/recipe.toml | 6 ++++-- recipes/wip/x11/x11proto/redox.patch | 12 ++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 recipes/wip/x11/x11proto/redox.patch diff --git a/recipes/wip/x11/x11proto/recipe.toml b/recipes/wip/x11/x11proto/recipe.toml index b02e686f..fc5be2a2 100644 --- a/recipes/wip/x11/x11proto/recipe.toml +++ b/recipes/wip/x11/x11proto/recipe.toml @@ -1,5 +1,7 @@ -#TODO compiled but not tested [source] -tar = "https://www.x.org/releases/individual/proto/xorgproto-2023.2.tar.xz" +tar = "https://www.x.org/releases/individual/proto/xorgproto-2024.1.tar.xz" +blake3 = "fad667bb04e16dca5e816969f2641bb075929cd73564114cc1aabd87d1975dd3" +patches = ["redox.patch"] + [build] template = "configure" diff --git a/recipes/wip/x11/x11proto/redox.patch b/recipes/wip/x11/x11proto/redox.patch new file mode 100644 index 00000000..55a31930 --- /dev/null +++ b/recipes/wip/x11/x11proto/redox.patch @@ -0,0 +1,12 @@ +diff -ruwN xorgproto-2023.2/include/X11/Xos_r.h source/include/X11/Xos_r.h +--- xorgproto-2023.2/include/X11/Xos_r.h 2023-06-16 01:32:38.000000000 -0600 ++++ source/include/X11/Xos_r.h 2025-05-02 10:10:07.250524701 -0600 +@@ -318,7 +318,7 @@ + (_Xos_processUnlock), \ + (p).pwp ) + +-#elif !defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(__APPLE__) ++#elif !defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(__APPLE__) && !defined(__redox__) + # define X_NEEDS_PWPARAMS + typedef struct { + struct passwd pws; From 3918899a4dcdab27f15e051be9d954c2acc16336 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 May 2025 10:13:13 -0600 Subject: [PATCH 2438/3180] libx11: fix compilation --- recipes/wip/x11/libx11/recipe.toml | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/recipes/wip/x11/libx11/recipe.toml b/recipes/wip/x11/libx11/recipe.toml index 987fae69..db8a8c44 100644 --- a/recipes/wip/x11/libx11/recipe.toml +++ b/recipes/wip/x11/libx11/recipe.toml @@ -1,8 +1,21 @@ -#TODO directory error [source] -tar = "https://www.x.org/releases/individual/lib/libX11-1.8.7.tar.xz" +tar = "https://www.x.org/releases/individual/lib/libX11-1.8.12.tar.xz" +blake3 = "5bf1c64733322b6a90d9bce8d2bd2d8117a4950955caa00d0cd7974d42571d1e" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + [build] -template = "configure" dependencies = [ + "libpthread-stubs", + "libxau", + "libxcb", "x11proto", + "xtrans", ] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure --enable-malloc0returnsnull +""" From dc892916bdc89d9ea21bd6f1318dc16e663df305 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 May 2025 10:24:17 -0600 Subject: [PATCH 2439/3180] Move and fix libxkbfile, add x11proto-kb --- recipes/wip/libs/other/libxkbfile/recipe.toml | 8 ------- recipes/wip/x11/libxkbfile/recipe.toml | 22 +++++++++++++++++++ recipes/wip/x11/x11proto-kb/recipe.toml | 10 +++++++++ 3 files changed, 32 insertions(+), 8 deletions(-) delete mode 100644 recipes/wip/libs/other/libxkbfile/recipe.toml create mode 100644 recipes/wip/x11/libxkbfile/recipe.toml create mode 100644 recipes/wip/x11/x11proto-kb/recipe.toml diff --git a/recipes/wip/libs/other/libxkbfile/recipe.toml b/recipes/wip/libs/other/libxkbfile/recipe.toml deleted file mode 100644 index 9a9d3124..00000000 --- a/recipes/wip/libs/other/libxkbfile/recipe.toml +++ /dev/null @@ -1,8 +0,0 @@ -#TODO missing kbproto package -[source] -tar = "https://www.x.org/releases/individual/lib/libxkbfile-1.1.2.tar.xz" -[build] -template = "configure" -dependencies =[ - "libx11", -] diff --git a/recipes/wip/x11/libxkbfile/recipe.toml b/recipes/wip/x11/libxkbfile/recipe.toml new file mode 100644 index 00000000..7ce5bb35 --- /dev/null +++ b/recipes/wip/x11/libxkbfile/recipe.toml @@ -0,0 +1,22 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/libxkbfile-1.1.3.tar.xz" +blake3 = "9566ee417df1127f21dd0e1fbcfcc14dacb366c07a1ec2de51f89af12535c06d" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies =[ + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "x11proto", + "x11proto-kb", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" diff --git a/recipes/wip/x11/x11proto-kb/recipe.toml b/recipes/wip/x11/x11proto-kb/recipe.toml new file mode 100644 index 00000000..1cd06a03 --- /dev/null +++ b/recipes/wip/x11/x11proto-kb/recipe.toml @@ -0,0 +1,10 @@ +[source] +tar = "https://www.x.org/releases/individual/proto/kbproto-1.0.7.tar.bz2" +blake3 = "2fba8d4a298bd6504c237afccc2059a3b9db6363f203824aebf2c0a167197625" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +template = "configure" From a2a36b45062b8c5dee80bd42b084cfbf1a035a94 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 May 2025 10:40:23 -0600 Subject: [PATCH 2440/3180] libfontenc: move and fix compilation --- recipes/wip/libs/other/libfontenc/recipe.toml | 9 --------- recipes/wip/x11/libfontenc/recipe.toml | 18 ++++++++++++++++++ 2 files changed, 18 insertions(+), 9 deletions(-) delete mode 100644 recipes/wip/libs/other/libfontenc/recipe.toml create mode 100644 recipes/wip/x11/libfontenc/recipe.toml diff --git a/recipes/wip/libs/other/libfontenc/recipe.toml b/recipes/wip/libs/other/libfontenc/recipe.toml deleted file mode 100644 index a5f77a67..00000000 --- a/recipes/wip/libs/other/libfontenc/recipe.toml +++ /dev/null @@ -1,9 +0,0 @@ -#TODO xorg-macros package not found -#TODO fontutil package not found -[source] -tar = "https://www.x.org/releases/individual/lib/libfontenc-1.1.7.tar.xz" -[build] -template = "configure" -dependencies = [ - "zlib", -] diff --git a/recipes/wip/x11/libfontenc/recipe.toml b/recipes/wip/x11/libfontenc/recipe.toml new file mode 100644 index 00000000..3ba81a4b --- /dev/null +++ b/recipes/wip/x11/libfontenc/recipe.toml @@ -0,0 +1,18 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/libfontenc-1.1.8.tar.xz" +blake3 = "6ab127a335f7cb4892566e59448d91e9ec43ac522f31f97a3c94350f0a3ecaf4" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "x11proto", + "zlib", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From 81a6e9d0d6482095af29851368e8ba0e6481891a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 May 2025 10:50:32 -0600 Subject: [PATCH 2441/3180] Add libxfont2 --- recipes/wip/x11/libxfont2/recipe.toml | 23 +++++++++++++++++++++++ recipes/wip/x11/libxfont2/redox.patch | 25 +++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 recipes/wip/x11/libxfont2/recipe.toml create mode 100644 recipes/wip/x11/libxfont2/redox.patch diff --git a/recipes/wip/x11/libxfont2/recipe.toml b/recipes/wip/x11/libxfont2/recipe.toml new file mode 100644 index 00000000..761543c5 --- /dev/null +++ b/recipes/wip/x11/libxfont2/recipe.toml @@ -0,0 +1,23 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/libXfont2-2.0.7.tar.xz" +blake3 = "9b4951683df21108e45fda23dbd25dcb47b67a3a0e224a36374fbc2d0f489cac" +patches = ["redox.patch"] +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "freetype2", + "libfontenc", + "libpng", + "x11proto", + "xtrans", + "zlib", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" diff --git a/recipes/wip/x11/libxfont2/redox.patch b/recipes/wip/x11/libxfont2/redox.patch new file mode 100644 index 00000000..58a69beb --- /dev/null +++ b/recipes/wip/x11/libxfont2/redox.patch @@ -0,0 +1,25 @@ +--- libXfont2-2.0.7/Makefile.am 2024-08-01 17:38:40.000000000 -0600 ++++ source/Makefile.am 2025-05-02 10:49:08.392987853 -0600 +@@ -159,14 +159,14 @@ + EXTRA_DIST = src/builtins/buildfont README.md + + # Test utilities +-EXTRA_DIST += test/utils/README +- +-TEST_UTIL_SRCS = test/utils/font-test-utils.c test/utils/font-test-utils.h +- +-noinst_PROGRAMS = lsfontdir +- +-lsfontdir_SOURCES = test/utils/lsfontdir.c $(TEST_UTIL_SRCS) +-lsfontdir_LDADD = libXfont2.la $(LTLIBOBJS) ++#EXTRA_DIST += test/utils/README ++# ++#TEST_UTIL_SRCS = test/utils/font-test-utils.c test/utils/font-test-utils.h ++# ++#noinst_PROGRAMS = lsfontdir ++# ++#lsfontdir_SOURCES = test/utils/lsfontdir.c $(TEST_UTIL_SRCS) ++#lsfontdir_LDADD = libXfont2.la $(LTLIBOBJS) + + + MAINTAINERCLEANFILES = ChangeLog INSTALL From f1c2ac39a17efd4b4b9cd18de8845ff8f47fc37d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 May 2025 10:54:14 -0600 Subject: [PATCH 2442/3180] Add libxcvt --- recipes/wip/x11/libxcvt/recipe.toml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 recipes/wip/x11/libxcvt/recipe.toml diff --git a/recipes/wip/x11/libxcvt/recipe.toml b/recipes/wip/x11/libxcvt/recipe.toml new file mode 100644 index 00000000..8133e595 --- /dev/null +++ b/recipes/wip/x11/libxcvt/recipe.toml @@ -0,0 +1,14 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/libxcvt-0.1.3.tar.xz" +blake3 = "a6c8f264a70a742d2634f53d19489b984c28df11cb5653042e8921f7596534bb" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_meson +""" From 09dc4ebf336983a21b5541c2ce580908921a0d6a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 May 2025 11:04:48 -0600 Subject: [PATCH 2443/3180] libxdmcp: move and update --- recipes/wip/libs/other/libxdmcp/recipe.toml | 8 -------- recipes/wip/x11/libxdmcp/recipe.toml | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 8 deletions(-) delete mode 100644 recipes/wip/libs/other/libxdmcp/recipe.toml create mode 100644 recipes/wip/x11/libxdmcp/recipe.toml diff --git a/recipes/wip/libs/other/libxdmcp/recipe.toml b/recipes/wip/libs/other/libxdmcp/recipe.toml deleted file mode 100644 index 1f82fdb5..00000000 --- a/recipes/wip/libs/other/libxdmcp/recipe.toml +++ /dev/null @@ -1,8 +0,0 @@ -#TODO compiled but not tested -[source] -tar = "https://www.x.org/releases/individual/lib/libXdmcp-1.1.4.tar.xz" -[build] -template = "configure" -dependencies = [ - "x11proto", -] diff --git a/recipes/wip/x11/libxdmcp/recipe.toml b/recipes/wip/x11/libxdmcp/recipe.toml new file mode 100644 index 00000000..ee93e4a6 --- /dev/null +++ b/recipes/wip/x11/libxdmcp/recipe.toml @@ -0,0 +1,17 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/libXdmcp-1.1.5.tar.xz" +blake3 = "d93c5ceb04019228ee6f034c4d10826025a7ae756d7b2f884fc2f768577173ba" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "x11proto" +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From bcbfa42bba6220402a0b2832512821ff0febcc6a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 May 2025 11:11:03 -0600 Subject: [PATCH 2444/3180] Add font-util --- recipes/wip/x11/font-util/recipe.toml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 recipes/wip/x11/font-util/recipe.toml diff --git a/recipes/wip/x11/font-util/recipe.toml b/recipes/wip/x11/font-util/recipe.toml new file mode 100644 index 00000000..6270e3f0 --- /dev/null +++ b/recipes/wip/x11/font-util/recipe.toml @@ -0,0 +1,6 @@ +[source] +tar = "https://www.x.org/releases/individual/font/font-util-1.4.1.tar.xz" +blake3 = "b430a69efcba19f59d95bcb967aab1d5838b38f2bc94cbc58f6867eeeba21a3e" + +[build] +template = "configure" \ No newline at end of file From 88bcfd4b2213fda06163bb3ce452172f82d0b111 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 2 May 2025 11:33:13 -0600 Subject: [PATCH 2445/3180] Add libtirpc --- recipes/wip/libs/net/libtirpc/recipe.toml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 recipes/wip/libs/net/libtirpc/recipe.toml diff --git a/recipes/wip/libs/net/libtirpc/recipe.toml b/recipes/wip/libs/net/libtirpc/recipe.toml new file mode 100644 index 00000000..47088993 --- /dev/null +++ b/recipes/wip/libs/net/libtirpc/recipe.toml @@ -0,0 +1,15 @@ +#TODO: does not compile +[source] +tar = "https://downloads.sourceforge.net/libtirpc/libtirpc-1.3.6.tar.bz2" +blake3 = "3ca1feefee3a216bb82bba35dfb455cac8524b8d8404767b01772f3b8fd00eea" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure --disable-gssapi +""" From dd23a71c18f7f489c36a847a4a0f5f4714baf15c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 3 May 2025 11:23:08 -0600 Subject: [PATCH 2446/3180] xserver-xorg: fix compilation --- recipes/wip/x11/xserver-xorg/recipe.toml | 31 ++++++- recipes/wip/x11/xserver-xorg/redox.patch | 106 +++++++++++++++++++++++ 2 files changed, 135 insertions(+), 2 deletions(-) create mode 100644 recipes/wip/x11/xserver-xorg/redox.patch diff --git a/recipes/wip/x11/xserver-xorg/recipe.toml b/recipes/wip/x11/xserver-xorg/recipe.toml index 29caa286..921d57dd 100644 --- a/recipes/wip/x11/xserver-xorg/recipe.toml +++ b/recipes/wip/x11/xserver-xorg/recipe.toml @@ -1,12 +1,39 @@ [source] -git = "https://gitlab.freedesktop.org/xorg/xserver.git" +tar = "https://www.x.org/releases/individual/xserver/xorg-server-21.1.16.tar.xz" +blake3 = "b47c68a0a8bc5b69143d95440fbf75c17245ba8bc2c28a8d9619d8c6890dca58" [build] dependencies = [ + "font-util", + "freetype2", + "libfontenc", + "libpng", + "libpthread-stubs", + #TODO: used for secure-rpc, needs syslog: "libtirpc", "libx11", + "libxau", + "libxcb", + "libxcvt", + "libxdmcp", + "libxfont2", + "libxkbfile", + "openssl1", + "pixman", + "x11proto", + "xtrans", + "zlib", ] template = "custom" script = """ DYNAMIC_INIT -cookbook_meson +cookbook_meson \ + -Dglamor=false \ + -Dglx=false \ + -Dint10=false \ + -Dpciaccess=false \ + -Dsecure-rpc=false \ + -Dudev=false \ + -Dudev_kms=false \ + -Dvgahw=false \ + -Dxvfb=false """ diff --git a/recipes/wip/x11/xserver-xorg/redox.patch b/recipes/wip/x11/xserver-xorg/redox.patch new file mode 100644 index 00000000..02e3a696 --- /dev/null +++ b/recipes/wip/x11/xserver-xorg/redox.patch @@ -0,0 +1,106 @@ +diff -ruwN xorg-server-21.1.16/hw/xfree86/common/xf86Xinput.c source/hw/xfree86/common/xf86Xinput.c +--- xorg-server-21.1.16/hw/xfree86/common/xf86Xinput.c 2025-02-25 11:56:05.000000000 -0700 ++++ source/hw/xfree86/common/xf86Xinput.c 2025-05-02 21:02:40.793658883 -0600 +@@ -860,8 +860,10 @@ + if (stat(path, &st) == -1) + return; + ++ /*TODO + *maj = major(st.st_rdev); + *min = minor(st.st_rdev); ++ */ + } + + static inline InputDriverPtr +diff -ruwN xorg-server-21.1.16/hw/xfree86/loader/meson.build source/hw/xfree86/loader/meson.build +--- xorg-server-21.1.16/hw/xfree86/loader/meson.build 2025-02-25 11:56:05.000000000 -0700 ++++ source/hw/xfree86/loader/meson.build 2025-05-02 21:04:23.471556735 -0600 +@@ -10,7 +10,7 @@ + c_args: xorg_c_args, + ) + +-xorg_symbol_test = executable('xorg_symbol_test', +- 'symbol-test.c', +- dependencies: dl_dep, +-) ++# xorg_symbol_test = executable('xorg_symbol_test', ++# 'symbol-test.c', ++# dependencies: dl_dep, ++# ) +diff -ruwN xorg-server-21.1.16/hw/xfree86/meson.build source/hw/xfree86/meson.build +--- xorg-server-21.1.16/hw/xfree86/meson.build 2025-02-25 11:56:05.000000000 -0700 ++++ source/hw/xfree86/meson.build 2025-05-03 07:41:18.150897775 -0600 +@@ -171,13 +171,13 @@ + ) + endif + +-executable('gtf', +- 'utils/gtf/gtf.c', +- include_directories: [inc, xorg_inc], +- dependencies: xorg_deps, +- c_args: xorg_c_args, +- install: true, +-) ++# executable('gtf', ++# 'utils/gtf/gtf.c', ++# include_directories: [inc, xorg_inc], ++# dependencies: xorg_deps, ++# c_args: xorg_c_args, ++# install: true, ++# ) + + # For symbol presence testing only + xorgserver_lib = shared_library( +diff -ruwN xorg-server-21.1.16/hw/xfree86/os-support/shared/sigio.c source/hw/xfree86/os-support/shared/sigio.c +--- xorg-server-21.1.16/hw/xfree86/os-support/shared/sigio.c 2025-02-25 11:56:05.000000000 -0700 ++++ source/hw/xfree86/os-support/shared/sigio.c 2025-05-02 21:18:55.324285513 -0600 +@@ -196,11 +196,12 @@ + fd, strerror(errno)); + } + else { ++ /*TODO + if (fcntl(fd, F_SETOWN, getpid()) == -1) { + xf86Msg(X_WARNING, "fcntl(%d, F_SETOWN): %s\n", + fd, strerror(errno)); + } +- else { ++ else*/{ + installed = TRUE; + } + } +diff -ruwN xorg-server-21.1.16/hw/xfree86/os-support/xf86_OSlib.h source/hw/xfree86/os-support/xf86_OSlib.h +--- xorg-server-21.1.16/hw/xfree86/os-support/xf86_OSlib.h 2025-02-25 11:56:05.000000000 -0700 ++++ source/hw/xfree86/os-support/xf86_OSlib.h 2025-05-02 20:59:02.771895236 -0600 +@@ -176,7 +176,7 @@ + /**************************************************************************/ + /* Linux or Glibc-based system */ + /**************************************************************************/ +-#if defined(__linux__) || defined(__GLIBC__) || defined(__CYGWIN__) ++#if defined(__linux__) || defined(__GLIBC__) || defined(__CYGWIN__) || defined(__redox__) + #include + #include + #include +diff -ruwN xorg-server-21.1.16/meson.build source/meson.build +--- xorg-server-21.1.16/meson.build 2025-02-25 11:56:05.000000000 -0700 ++++ source/meson.build 2025-05-03 07:37:30.195677585 -0600 +@@ -753,7 +753,7 @@ + subdir('hw') + + if host_machine.system() != 'windows' +- subdir('test') ++ #subdir('test') + endif + + install_man(configure_file( +diff -ruwN xorg-server-21.1.16/os/access.c source/os/access.c +--- xorg-server-21.1.16/os/access.c 2025-02-25 11:56:05.000000000 -0700 ++++ source/os/access.c 2025-05-02 17:32:45.822594681 -0600 +@@ -120,7 +120,7 @@ + #include + #endif + +-#if defined(SVR4) || (defined(SYSV) && defined(__i386__)) || defined(__GNU__) ++#if defined(SVR4) || (defined(SYSV) && defined(__i386__)) || defined(__GNU__) || defined(__redox__) + #include + #endif + #if defined(SYSV) && defined(__i386__) From 5e4fdf2976f340d835dae007f6ad4f7ba8b2e354 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 3 May 2025 11:28:51 -0600 Subject: [PATCH 2447/3180] xserver-xorg: Add patch for redox to recipe --- recipes/wip/x11/xserver-xorg/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/x11/xserver-xorg/recipe.toml b/recipes/wip/x11/xserver-xorg/recipe.toml index 921d57dd..438b63d2 100644 --- a/recipes/wip/x11/xserver-xorg/recipe.toml +++ b/recipes/wip/x11/xserver-xorg/recipe.toml @@ -1,6 +1,7 @@ [source] tar = "https://www.x.org/releases/individual/xserver/xorg-server-21.1.16.tar.xz" blake3 = "b47c68a0a8bc5b69143d95440fbf75c17245ba8bc2c28a8d9619d8c6890dca58" +patches = ["redox.patch"] [build] dependencies = [ From bdbdc9ef5b4dd1ccb75357df2e82f2e0aa383e15 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 3 May 2025 17:40:41 -0600 Subject: [PATCH 2448/3180] Add xkeyboard-config --- recipes/wip/x11/xkeyboard-config/recipe.toml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 recipes/wip/x11/xkeyboard-config/recipe.toml diff --git a/recipes/wip/x11/xkeyboard-config/recipe.toml b/recipes/wip/x11/xkeyboard-config/recipe.toml new file mode 100644 index 00000000..289f38da --- /dev/null +++ b/recipes/wip/x11/xkeyboard-config/recipe.toml @@ -0,0 +1,10 @@ +[source] +tar = "https://www.x.org/releases/individual/data/xkeyboard-config/xkeyboard-config-2.44.tar.xz" +blake3 = "6156aefb0608af6b7ae2c2ef444838b72524d1e4244cb26ee253669ecede3a5a" + +[build] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_meson +""" From 1eaff4c632b1b5a5407481f2c15425e957e90cff Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 3 May 2025 17:56:32 -0600 Subject: [PATCH 2449/3180] libice, libsm: move, update, and fix compilation --- recipes/wip/libs/other/libice/recipe.toml | 9 --------- recipes/wip/libs/other/libsm/recipe.toml | 10 ---------- recipes/wip/x11/libice/recipe.toml | 18 ++++++++++++++++++ recipes/wip/x11/libsm/recipe.toml | 19 +++++++++++++++++++ 4 files changed, 37 insertions(+), 19 deletions(-) delete mode 100644 recipes/wip/libs/other/libice/recipe.toml delete mode 100644 recipes/wip/libs/other/libsm/recipe.toml create mode 100644 recipes/wip/x11/libice/recipe.toml create mode 100644 recipes/wip/x11/libsm/recipe.toml diff --git a/recipes/wip/libs/other/libice/recipe.toml b/recipes/wip/libs/other/libice/recipe.toml deleted file mode 100644 index d5eb4ec1..00000000 --- a/recipes/wip/libs/other/libice/recipe.toml +++ /dev/null @@ -1,9 +0,0 @@ -#TODO missing packages -[source] -tar = "https://www.x.org/releases/individual/lib/libICE-1.1.1.tar.xz" -[build] -template = "configure" -dependencies = [ - "libxtrans", - "x11proto", -] diff --git a/recipes/wip/libs/other/libsm/recipe.toml b/recipes/wip/libs/other/libsm/recipe.toml deleted file mode 100644 index bcf789e4..00000000 --- a/recipes/wip/libs/other/libsm/recipe.toml +++ /dev/null @@ -1,10 +0,0 @@ -#TODO make dependencies work -[source] -tar = "https://www.x.org/releases/individual/lib/libSM-1.2.4.tar.xz" -[build] -template = "configure" -dependencies = [ - "libice", - "libxtrans", - "x11proto", -] diff --git a/recipes/wip/x11/libice/recipe.toml b/recipes/wip/x11/libice/recipe.toml new file mode 100644 index 00000000..7a95c567 --- /dev/null +++ b/recipes/wip/x11/libice/recipe.toml @@ -0,0 +1,18 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/libICE-1.1.2.tar.xz" +blake3 = "3d1d41041e0a58799a5e9965fd258a4f6875143102644fbbc71061eb4c652577" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "x11proto", + "xtrans", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" diff --git a/recipes/wip/x11/libsm/recipe.toml b/recipes/wip/x11/libsm/recipe.toml new file mode 100644 index 00000000..5cb1d4ee --- /dev/null +++ b/recipes/wip/x11/libsm/recipe.toml @@ -0,0 +1,19 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/libSM-1.2.6.tar.xz" +blake3 = "fccedc1f9781bab20b0084557464099a7b793cd704d4bb702f200def4c96dcd8" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "libice", + "x11proto", + "xtrans", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From 4a216ac55e382ae395f4da82ab3fdc359dde785d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 3 May 2025 17:57:09 -0600 Subject: [PATCH 2450/3180] Add libxt --- recipes/wip/x11/libxt/recipe.toml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 recipes/wip/x11/libxt/recipe.toml diff --git a/recipes/wip/x11/libxt/recipe.toml b/recipes/wip/x11/libxt/recipe.toml new file mode 100644 index 00000000..f764c7df --- /dev/null +++ b/recipes/wip/x11/libxt/recipe.toml @@ -0,0 +1,24 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/libXt-1.3.1.tar.xz" +blake3 = "fbf21683ce3e6d104529289254977bb08b355ecf7a36c763e8369acf85f15f24" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "libice", + "libpthread-stubs", + "libsm", + "libx11", + "libxau", + "libxcb", + "x11proto", + "x11proto-kb", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure --enable-malloc0returnsnull +""" From 7387bfac6303543e4781937108e522ded4096b51 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 3 May 2025 18:30:06 -0600 Subject: [PATCH 2451/3180] libxaw, libxext, xextproto: move, update, and fix compilation --- recipes/wip/libs/other/libxaw/recipe.toml | 11 ----------- recipes/wip/libs/other/libxext/recipe.toml | 5 ----- recipes/wip/x11/libxaw/recipe.toml | 19 +++++++++++++++++++ recipes/wip/x11/libxext/recipe.toml | 22 ++++++++++++++++++++++ recipes/wip/x11/xextproto/recipe.toml | 14 ++++++++++++++ 5 files changed, 55 insertions(+), 16 deletions(-) delete mode 100644 recipes/wip/libs/other/libxaw/recipe.toml delete mode 100644 recipes/wip/libs/other/libxext/recipe.toml create mode 100644 recipes/wip/x11/libxaw/recipe.toml create mode 100644 recipes/wip/x11/libxext/recipe.toml create mode 100644 recipes/wip/x11/xextproto/recipe.toml diff --git a/recipes/wip/libs/other/libxaw/recipe.toml b/recipes/wip/libs/other/libxaw/recipe.toml deleted file mode 100644 index 507f16fb..00000000 --- a/recipes/wip/libs/other/libxaw/recipe.toml +++ /dev/null @@ -1,11 +0,0 @@ -#TODO make dependencies work -[source] -tar = "https://www.x.org/releases/individual/lib/libXaw-1.0.15.tar.xz" -[build] -template = "configure" -dependencies = [ - "libx11", - "x11proto", - "libxext", - "libxmu", -] \ No newline at end of file diff --git a/recipes/wip/libs/other/libxext/recipe.toml b/recipes/wip/libs/other/libxext/recipe.toml deleted file mode 100644 index bccc86cc..00000000 --- a/recipes/wip/libs/other/libxext/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO missing dependencies -[source] -tar = "https://www.x.org/releases/individual/lib/libXext-1.3.5.tar.xz" -[build] -template = "configure" diff --git a/recipes/wip/x11/libxaw/recipe.toml b/recipes/wip/x11/libxaw/recipe.toml new file mode 100644 index 00000000..57982d94 --- /dev/null +++ b/recipes/wip/x11/libxaw/recipe.toml @@ -0,0 +1,19 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/libXaw-1.0.16.tar.xz" +blake3 = "f2a3b4955508dc7a576ad473119562b724f7936d312c85c79cb32f614c60f0c5" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "libx11", + "libxt", + "x11proto", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" diff --git a/recipes/wip/x11/libxext/recipe.toml b/recipes/wip/x11/libxext/recipe.toml new file mode 100644 index 00000000..36a525dc --- /dev/null +++ b/recipes/wip/x11/libxext/recipe.toml @@ -0,0 +1,22 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/libXext-1.3.6.tar.xz" +blake3 = "4c24887ba3913728f3c0be945006f6babbc2c44c8118d4b1ca5366294e3f4406" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "x11proto", + "xextproto", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure --enable-malloc0returnsnull +""" diff --git a/recipes/wip/x11/xextproto/recipe.toml b/recipes/wip/x11/xextproto/recipe.toml new file mode 100644 index 00000000..8d83a40c --- /dev/null +++ b/recipes/wip/x11/xextproto/recipe.toml @@ -0,0 +1,14 @@ +[source] +tar = "https://www.x.org/releases/individual/proto/xextproto-7.3.0.tar.bz2" +blake3 = "08cdd8b3838da9c99176778c925327aa35661d41d0e4d7458a378f14a42172c0" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From 45911f9d984a041313e474951c94ff23c0a6099c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 3 May 2025 18:33:56 -0600 Subject: [PATCH 2452/3180] libxmu: move, update, and fix compilation --- recipes/wip/libs/other/libxmu/recipe.toml | 9 -------- recipes/wip/x11/libxmu/recipe.toml | 27 +++++++++++++++++++++++ 2 files changed, 27 insertions(+), 9 deletions(-) delete mode 100644 recipes/wip/libs/other/libxmu/recipe.toml create mode 100644 recipes/wip/x11/libxmu/recipe.toml diff --git a/recipes/wip/libs/other/libxmu/recipe.toml b/recipes/wip/libs/other/libxmu/recipe.toml deleted file mode 100644 index 129a978e..00000000 --- a/recipes/wip/libs/other/libxmu/recipe.toml +++ /dev/null @@ -1,9 +0,0 @@ -#TODO missing dependencies -[source] -tar = "https://www.x.org/releases/individual/lib/libXmu-1.1.4.tar.xz" -[build] -template = "configure" -dependencies = [ - "libx11", - "libxext", -] diff --git a/recipes/wip/x11/libxmu/recipe.toml b/recipes/wip/x11/libxmu/recipe.toml new file mode 100644 index 00000000..7ac3dd38 --- /dev/null +++ b/recipes/wip/x11/libxmu/recipe.toml @@ -0,0 +1,27 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/libXmu-1.2.1.tar.xz" +blake3 = "466f7ab160c4e9f04866e9c895dbecb6a76ed1817ae16721d404c556d88f047e" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "libice", + "libpthread-stubs", + "libsm", + "libx11", + "libxau", + "libxcb", + "libxext", + "libxt", + "x11proto", + "x11proto-kb", + "xextproto", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From aa810fbc46e138c08a97ba3d8802ba0f8f1fa5a7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 3 May 2025 18:39:06 -0600 Subject: [PATCH 2453/3180] libxpm: move, update, and fix --- recipes/wip/libs/other/libxpm/recipe.toml | 9 --------- recipes/wip/x11/libxpm/recipe.toml | 21 +++++++++++++++++++++ 2 files changed, 21 insertions(+), 9 deletions(-) delete mode 100644 recipes/wip/libs/other/libxpm/recipe.toml create mode 100644 recipes/wip/x11/libxpm/recipe.toml diff --git a/recipes/wip/libs/other/libxpm/recipe.toml b/recipes/wip/libs/other/libxpm/recipe.toml deleted file mode 100644 index a67def34..00000000 --- a/recipes/wip/libs/other/libxpm/recipe.toml +++ /dev/null @@ -1,9 +0,0 @@ -#TODO directory error -[source] -tar = "https://www.x.org/releases/individual/lib/libXpm-3.5.17.tar.xz" -[build] -template = "configure" -dependencies = [ - "libx11", - "x11proto", -] diff --git a/recipes/wip/x11/libxpm/recipe.toml b/recipes/wip/x11/libxpm/recipe.toml new file mode 100644 index 00000000..bec80a26 --- /dev/null +++ b/recipes/wip/x11/libxpm/recipe.toml @@ -0,0 +1,21 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/libXpm-3.5.17.tar.xz" +blake3 = "0cc9bbdc6d9c9d6ce100249b7bb68bff4550de43ee31d815fd9b21c8d178cd9e" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "x11proto", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From d80baea6d35349f9c8cb19de74e547452f3a9071 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 3 May 2025 18:39:56 -0600 Subject: [PATCH 2454/3180] Add libxaw --- recipes/wip/x11/libxaw/recipe.toml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/recipes/wip/x11/libxaw/recipe.toml b/recipes/wip/x11/libxaw/recipe.toml index 57982d94..18c37935 100644 --- a/recipes/wip/x11/libxaw/recipe.toml +++ b/recipes/wip/x11/libxaw/recipe.toml @@ -8,7 +8,15 @@ autotools_recursive_regenerate [build] dependencies = [ + "libice", + "libpthread-stubs", + "libsm", "libx11", + "libxau", + "libxcb", + "libxext", + "libxmu", + "libxpm", "libxt", "x11proto", ] From 3bd364a4132e359d825c62ad25d5a6a57cfc0521 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 3 May 2025 20:02:36 -0600 Subject: [PATCH 2455/3180] Add xkbutils --- recipes/wip/x11/xkbutils/recipe.toml | 30 ++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 recipes/wip/x11/xkbutils/recipe.toml diff --git a/recipes/wip/x11/xkbutils/recipe.toml b/recipes/wip/x11/xkbutils/recipe.toml new file mode 100644 index 00000000..00aa3dda --- /dev/null +++ b/recipes/wip/x11/xkbutils/recipe.toml @@ -0,0 +1,30 @@ +[source] +tar = "https://www.x.org/releases/individual/app/xkbutils-1.0.6.tar.xz" +blake3 = "f19c157f5eaad7c91ee101952e55b9fd991b060892ecb3e6d9a7b46fa1dbe587" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "libice", + "libpthread-stubs", + "libsm", + "libx11", + "libxau", + "libxaw", + "libxcb", + "libxext", + "libxmu", + "libxpm", + "libxt", + "x11proto", +] +template = "custom" +script = """ +DYNAMIC_INIT +#TODO: why are LIBS not automatic? +export LIBS="-lXaw7 -lXext -lXmu -lXpm -lXt -lSM -lICE -lX11 -lxcb -lXau" +cookbook_configure +""" From d4191e22d9926153d38aa5e9d110e1e2b3d75f27 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 3 May 2025 20:10:25 -0600 Subject: [PATCH 2456/3180] Add xkbcomp --- recipes/wip/x11/xkbcomp/recipe.toml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 recipes/wip/x11/xkbcomp/recipe.toml diff --git a/recipes/wip/x11/xkbcomp/recipe.toml b/recipes/wip/x11/xkbcomp/recipe.toml new file mode 100644 index 00000000..b660ef96 --- /dev/null +++ b/recipes/wip/x11/xkbcomp/recipe.toml @@ -0,0 +1,23 @@ +[source] +tar = "https://www.x.org/releases/individual/app/xkbcomp-1.4.7.tar.xz" +blake3 = "e6420ef168976726f8aa8cb362bc70dfe2bd810f2b33e5f71547ec182ed301ea" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "libxkbfile", + "x11proto", +] +template = "custom" +script = """ +DYNAMIC_INIT +export LIBS="-lxcb -lXau" +cookbook_configure +""" From f2e4cf5aa08844517b6d9f47ae60f4462a6475c9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 3 May 2025 21:16:38 -0600 Subject: [PATCH 2457/3180] Add xserver-xorg-video-dummy --- .../x11/xserver-xorg-video-dummy/recipe.toml | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 recipes/wip/x11/xserver-xorg-video-dummy/recipe.toml diff --git a/recipes/wip/x11/xserver-xorg-video-dummy/recipe.toml b/recipes/wip/x11/xserver-xorg-video-dummy/recipe.toml new file mode 100644 index 00000000..46940f05 --- /dev/null +++ b/recipes/wip/x11/xserver-xorg-video-dummy/recipe.toml @@ -0,0 +1,46 @@ +[source] +tar = "https://www.x.org/releases/individual/driver/xf86-video-dummy-0.4.1.tar.xz" +blake3 = "9b49296f62bf4d22345d87fc01f2a5571f941457c19d21c8800f8f6d2e64ae67" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "pixman", + "x11proto", + "xserver-xorg", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure + +mkdir -p "${COOKBOOK_STAGE}/usr/share/X11/xorg.conf.d" +cat > "${COOKBOOK_STAGE}/usr/share/X11/xorg.conf.d/dummy.conf" < Date: Sun, 4 May 2025 09:31:50 -0600 Subject: [PATCH 2458/3180] libxcb, xserver-xorg: do not use sendmsg, recvmsg --- recipes/wip/x11/libxcb/recipe.toml | 2 +- recipes/wip/x11/xserver-xorg/redox.patch | 26 +++++++++++++++++------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/recipes/wip/x11/libxcb/recipe.toml b/recipes/wip/x11/libxcb/recipe.toml index 4ea52ba7..f3d386a5 100644 --- a/recipes/wip/x11/libxcb/recipe.toml +++ b/recipes/wip/x11/libxcb/recipe.toml @@ -16,5 +16,5 @@ dependencies = [ template = "custom" script = """ DYNAMIC_INIT -cookbook_configure +cookbook_configure ac_cv_search_sendmsg=no """ diff --git a/recipes/wip/x11/xserver-xorg/redox.patch b/recipes/wip/x11/xserver-xorg/redox.patch index 02e3a696..2de15c1f 100644 --- a/recipes/wip/x11/xserver-xorg/redox.patch +++ b/recipes/wip/x11/xserver-xorg/redox.patch @@ -1,6 +1,6 @@ diff -ruwN xorg-server-21.1.16/hw/xfree86/common/xf86Xinput.c source/hw/xfree86/common/xf86Xinput.c --- xorg-server-21.1.16/hw/xfree86/common/xf86Xinput.c 2025-02-25 11:56:05.000000000 -0700 -+++ source/hw/xfree86/common/xf86Xinput.c 2025-05-02 21:02:40.793658883 -0600 ++++ source/hw/xfree86/common/xf86Xinput.c 2025-05-03 11:28:37.266757877 -0600 @@ -860,8 +860,10 @@ if (stat(path, &st) == -1) return; @@ -14,7 +14,7 @@ diff -ruwN xorg-server-21.1.16/hw/xfree86/common/xf86Xinput.c source/hw/xfree86/ static inline InputDriverPtr diff -ruwN xorg-server-21.1.16/hw/xfree86/loader/meson.build source/hw/xfree86/loader/meson.build --- xorg-server-21.1.16/hw/xfree86/loader/meson.build 2025-02-25 11:56:05.000000000 -0700 -+++ source/hw/xfree86/loader/meson.build 2025-05-02 21:04:23.471556735 -0600 ++++ source/hw/xfree86/loader/meson.build 2025-05-03 11:28:37.267757875 -0600 @@ -10,7 +10,7 @@ c_args: xorg_c_args, ) @@ -29,7 +29,7 @@ diff -ruwN xorg-server-21.1.16/hw/xfree86/loader/meson.build source/hw/xfree86/l +# ) diff -ruwN xorg-server-21.1.16/hw/xfree86/meson.build source/hw/xfree86/meson.build --- xorg-server-21.1.16/hw/xfree86/meson.build 2025-02-25 11:56:05.000000000 -0700 -+++ source/hw/xfree86/meson.build 2025-05-03 07:41:18.150897775 -0600 ++++ source/hw/xfree86/meson.build 2025-05-03 11:28:37.267757875 -0600 @@ -171,13 +171,13 @@ ) endif @@ -53,7 +53,7 @@ diff -ruwN xorg-server-21.1.16/hw/xfree86/meson.build source/hw/xfree86/meson.bu xorgserver_lib = shared_library( diff -ruwN xorg-server-21.1.16/hw/xfree86/os-support/shared/sigio.c source/hw/xfree86/os-support/shared/sigio.c --- xorg-server-21.1.16/hw/xfree86/os-support/shared/sigio.c 2025-02-25 11:56:05.000000000 -0700 -+++ source/hw/xfree86/os-support/shared/sigio.c 2025-05-02 21:18:55.324285513 -0600 ++++ source/hw/xfree86/os-support/shared/sigio.c 2025-05-03 11:28:37.267757875 -0600 @@ -196,11 +196,12 @@ fd, strerror(errno)); } @@ -70,7 +70,7 @@ diff -ruwN xorg-server-21.1.16/hw/xfree86/os-support/shared/sigio.c source/hw/xf } diff -ruwN xorg-server-21.1.16/hw/xfree86/os-support/xf86_OSlib.h source/hw/xfree86/os-support/xf86_OSlib.h --- xorg-server-21.1.16/hw/xfree86/os-support/xf86_OSlib.h 2025-02-25 11:56:05.000000000 -0700 -+++ source/hw/xfree86/os-support/xf86_OSlib.h 2025-05-02 20:59:02.771895236 -0600 ++++ source/hw/xfree86/os-support/xf86_OSlib.h 2025-05-03 11:28:37.267757875 -0600 @@ -176,7 +176,7 @@ /**************************************************************************/ /* Linux or Glibc-based system */ @@ -80,9 +80,21 @@ diff -ruwN xorg-server-21.1.16/hw/xfree86/os-support/xf86_OSlib.h source/hw/xfre #include #include #include +diff -ruwN xorg-server-21.1.16/include/meson.build source/include/meson.build +--- xorg-server-21.1.16/include/meson.build 2025-02-25 11:56:05.000000000 -0700 ++++ source/include/meson.build 2025-05-04 09:23:52.822312510 -0600 +@@ -190,7 +190,7 @@ + conf_data.set('LISTEN_LOCAL', get_option('listen_local')) + + if cc.has_header_symbol('sys/socket.h', 'SCM_RIGHTS') +- conf_data.set('XTRANS_SEND_FDS', '1') ++ #TODO conf_data.set('XTRANS_SEND_FDS', '1') + endif + + if conf_data.get('HAVE_GETPEEREID').to_int() == 0 and conf_data.get('HAVE_GETPEERUCRED').to_int() == 0 diff -ruwN xorg-server-21.1.16/meson.build source/meson.build --- xorg-server-21.1.16/meson.build 2025-02-25 11:56:05.000000000 -0700 -+++ source/meson.build 2025-05-03 07:37:30.195677585 -0600 ++++ source/meson.build 2025-05-03 11:28:37.267757875 -0600 @@ -753,7 +753,7 @@ subdir('hw') @@ -94,7 +106,7 @@ diff -ruwN xorg-server-21.1.16/meson.build source/meson.build install_man(configure_file( diff -ruwN xorg-server-21.1.16/os/access.c source/os/access.c --- xorg-server-21.1.16/os/access.c 2025-02-25 11:56:05.000000000 -0700 -+++ source/os/access.c 2025-05-02 17:32:45.822594681 -0600 ++++ source/os/access.c 2025-05-03 11:28:37.267757875 -0600 @@ -120,7 +120,7 @@ #include #endif From fc8f03efec9fc6f94a0a881a5709f93533140378 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 May 2025 13:54:31 -0600 Subject: [PATCH 2459/3180] libxfixes: move, update, and fix --- recipes/wip/libs/other/libxfixes/recipe.toml | 10 --------- recipes/wip/x11/libxfixes/recipe.toml | 22 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 10 deletions(-) delete mode 100644 recipes/wip/libs/other/libxfixes/recipe.toml create mode 100644 recipes/wip/x11/libxfixes/recipe.toml diff --git a/recipes/wip/libs/other/libxfixes/recipe.toml b/recipes/wip/libs/other/libxfixes/recipe.toml deleted file mode 100644 index 57128164..00000000 --- a/recipes/wip/libs/other/libxfixes/recipe.toml +++ /dev/null @@ -1,10 +0,0 @@ -#TODO missing dependencies -[source] -tar = "https://www.x.org/releases/individual/lib/libXfixes-6.0.1.tar.xz" -[build] -template = "configure" -dependencies = [ - "x11proto", - "libx11", - "libxext", -] diff --git a/recipes/wip/x11/libxfixes/recipe.toml b/recipes/wip/x11/libxfixes/recipe.toml new file mode 100644 index 00000000..c506e4f8 --- /dev/null +++ b/recipes/wip/x11/libxfixes/recipe.toml @@ -0,0 +1,22 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/libXfixes-6.0.1.tar.xz" +blake3 = "ccbae58717aa81f1ef52a2e6cbb7c57553a98b93f5a7a6f8a78e793a3a0c7f78" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "x11proto", + "xextproto", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From 35f7750f2d9d29b614ce40cee04ce065fd185167 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 May 2025 13:54:58 -0600 Subject: [PATCH 2460/3180] libxi: move, update, and fix --- recipes/wip/libs/other/libxi/recipe.toml | 5 ----- recipes/wip/x11/libxi/recipe.toml | 24 ++++++++++++++++++++++++ 2 files changed, 24 insertions(+), 5 deletions(-) delete mode 100644 recipes/wip/libs/other/libxi/recipe.toml create mode 100644 recipes/wip/x11/libxi/recipe.toml diff --git a/recipes/wip/libs/other/libxi/recipe.toml b/recipes/wip/libs/other/libxi/recipe.toml deleted file mode 100644 index 7cabbec2..00000000 --- a/recipes/wip/libs/other/libxi/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO missing dependencies -[source] -tar = "https://www.x.org/releases/individual/lib/libXi-1.8.1.tar.xz" -[build] -template = "configure" diff --git a/recipes/wip/x11/libxi/recipe.toml b/recipes/wip/x11/libxi/recipe.toml new file mode 100644 index 00000000..a1c91570 --- /dev/null +++ b/recipes/wip/x11/libxi/recipe.toml @@ -0,0 +1,24 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/libXi-1.8.2.tar.xz" +blake3 = "8f0acdd884dc928c6c8bc4b6bca1f4c67c726fdb03e30910c09bdb41fd841d3e" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "libxext", + "libxfixes", + "x11proto", + "xextproto", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure --enable-malloc0returnsnull +""" From df8e612c8b3b216574badc5f731e27d86dcdd74b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 May 2025 13:58:55 -0600 Subject: [PATCH 2461/3180] libxrender: move, update, and fix --- recipes/wip/libs/other/libxrender/recipe.toml | 5 ----- recipes/wip/x11/libxrender/recipe.toml | 21 +++++++++++++++++++ 2 files changed, 21 insertions(+), 5 deletions(-) delete mode 100644 recipes/wip/libs/other/libxrender/recipe.toml create mode 100644 recipes/wip/x11/libxrender/recipe.toml diff --git a/recipes/wip/libs/other/libxrender/recipe.toml b/recipes/wip/libs/other/libxrender/recipe.toml deleted file mode 100644 index c09ffbce..00000000 --- a/recipes/wip/libs/other/libxrender/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO missing xorg-macros package -[source] -tar = "https://www.x.org/releases/individual/lib/libXrender-0.9.11.tar.xz" -[build] -template = "configure" diff --git a/recipes/wip/x11/libxrender/recipe.toml b/recipes/wip/x11/libxrender/recipe.toml new file mode 100644 index 00000000..f5f67163 --- /dev/null +++ b/recipes/wip/x11/libxrender/recipe.toml @@ -0,0 +1,21 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/libXrender-0.9.12.tar.xz" +blake3 = "900b431ad77835029a88fd0d874bbd0d748ff150b9e0c3841b3ce7a346cf396a" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "x11proto", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure --enable-malloc0returnsnull +""" From 644bce67484b2f7ccf21c3173ec39b6d497432cb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 May 2025 14:04:36 -0600 Subject: [PATCH 2462/3180] Add xeyes --- recipes/wip/x11/xeyes/recipe.toml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 recipes/wip/x11/xeyes/recipe.toml diff --git a/recipes/wip/x11/xeyes/recipe.toml b/recipes/wip/x11/xeyes/recipe.toml new file mode 100644 index 00000000..7cde39b4 --- /dev/null +++ b/recipes/wip/x11/xeyes/recipe.toml @@ -0,0 +1,31 @@ +[source] +tar = "https://www.x.org/releases/individual/app/xeyes-1.3.0.tar.xz" +blake3 = "33d7ce4847c73e6ebea0cc595b04de80482a657132d0f2235548328ede88b673" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "libice", + "libpthread-stubs", + "libsm", + "libx11", + "libxau", + "libxcb", + "libxext", + "libxfixes", + "libxi", + "libxmu", + "libxrender", + "libxt", + "x11proto", +] +template = "custom" +script = """ +DYNAMIC_INIT +#TODO: why are LIBS not automatic? +export LIBS="-lXext -lXmu -lXt -lSM -lICE -lX11 -lxcb -lXau" +cookbook_configure --without-present +""" From cf3b6a1401d89af5829dc3a74c15c5db9749a8dd Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 May 2025 14:24:45 -0600 Subject: [PATCH 2463/3180] Add twm --- recipes/wip/x11/twm/recipe.toml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 recipes/wip/x11/twm/recipe.toml diff --git a/recipes/wip/x11/twm/recipe.toml b/recipes/wip/x11/twm/recipe.toml new file mode 100644 index 00000000..1648e69f --- /dev/null +++ b/recipes/wip/x11/twm/recipe.toml @@ -0,0 +1,27 @@ +[source] +tar = "https://www.x.org/releases/individual/app/twm-1.0.13.tar.xz" +blake3 = "50acf2123537a739dcaff50e1ae9b38d7e117a2d07cd3a6b550dcafdc52ff9fc" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "libice", + "libpthread-stubs", + "libsm", + "libx11", + "libxau", + "libxcb", + "libxext", + "libxmu", + "libxt", + "x11proto", +] +template = "custom" +script = """ +DYNAMIC_INIT +export LIBS="-lxcb -lXau" +cookbook_configure +""" From ce64e34b818b5e1cb089fbabee34280af90c0ead Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 May 2025 14:42:45 -0600 Subject: [PATCH 2464/3180] xserver-xorg-driver-dummy: use orbital to show contents --- .../x11/xserver-xorg-video-dummy/recipe.toml | 3 + .../x11/xserver-xorg-video-dummy/redox.patch | 189 ++++++++++++++++++ 2 files changed, 192 insertions(+) create mode 100644 recipes/wip/x11/xserver-xorg-video-dummy/redox.patch diff --git a/recipes/wip/x11/xserver-xorg-video-dummy/recipe.toml b/recipes/wip/x11/xserver-xorg-video-dummy/recipe.toml index 46940f05..2786ec7b 100644 --- a/recipes/wip/x11/xserver-xorg-video-dummy/recipe.toml +++ b/recipes/wip/x11/xserver-xorg-video-dummy/recipe.toml @@ -1,6 +1,7 @@ [source] tar = "https://www.x.org/releases/individual/driver/xf86-video-dummy-0.4.1.tar.xz" blake3 = "9b49296f62bf4d22345d87fc01f2a5571f941457c19d21c8800f8f6d2e64ae67" +patches = ["redox.patch"] script = """ DYNAMIC_INIT autotools_recursive_regenerate @@ -8,6 +9,7 @@ autotools_recursive_regenerate [build] dependencies = [ + "liborbital", "pixman", "x11proto", "xserver-xorg", @@ -15,6 +17,7 @@ dependencies = [ template = "custom" script = """ DYNAMIC_INIT +export LIBS="-lorbital" cookbook_configure mkdir -p "${COOKBOOK_STAGE}/usr/share/X11/xorg.conf.d" diff --git a/recipes/wip/x11/xserver-xorg-video-dummy/redox.patch b/recipes/wip/x11/xserver-xorg-video-dummy/redox.patch new file mode 100644 index 00000000..d8cdf059 --- /dev/null +++ b/recipes/wip/x11/xserver-xorg-video-dummy/redox.patch @@ -0,0 +1,189 @@ +diff -ruwN xf86-video-dummy-0.4.1/src/dummy_driver.c source/src/dummy_driver.c +--- xf86-video-dummy-0.4.1/src/dummy_driver.c 2023-05-07 14:27:44.000000000 -0600 ++++ source/src/dummy_driver.c 2025-05-04 14:35:07.315812927 -0600 +@@ -52,6 +52,8 @@ + static void DUMMYLeaveVT(VT_FUNC_ARGS_DECL); + static Bool DUMMYCloseScreen(CLOSE_SCREEN_ARGS_DECL); + static Bool DUMMYCreateWindow(WindowPtr pWin); ++static void DUMMYCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc); ++static void DUMMYPaintWindow(WindowPtr pWin, RegionPtr prgn, int what); + static void DUMMYFreeScreen(FREE_SCREEN_ARGS_DECL); + static ModeStatus DUMMYValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, + Bool verbose, int flags); +@@ -776,7 +778,6 @@ + DUMMYPtr dPtr; + int ret; + VisualPtr visual; +- void *pixels; + + /* + * we need to get the ScrnInfoRec for this screen, so let's allocate +@@ -786,9 +787,20 @@ + dPtr = DUMMYPTR(pScrn); + DUMMYScrn = pScrn; + ++ if (pScrn->bitsPerPixel != 32) { ++ printf("unsupported BPP %d\n", pScrn->bitsPerPixel); ++ return FALSE; ++ } + +- if (!(pixels = malloc(pScrn->videoRam * 1024))) ++ printf( ++ "orb_window_new %d, %d\n", ++ pScrn->virtualX, pScrn->virtualY ++ ); ++ dPtr->orb_window = orb_window_new(-1, -1, pScrn->virtualX, pScrn->virtualY, "X11"); ++ if (!dPtr->orb_window) { ++ printf("failed to open orbital window\n"); + return FALSE; ++ } + + /* + * Reset visual list. +@@ -800,12 +812,10 @@ + if (!miSetVisualTypes(pScrn->depth, + miGetDefaultVisualMask(pScrn->depth), + pScrn->rgbBits, pScrn->defaultVisual)) { +- free(pixels); + return FALSE; + } + + if (!miSetPixmapDepths ()) { +- free(pixels); + return FALSE; + } + +@@ -813,7 +823,7 @@ + * Call the framebuffer layer's ScreenInit function, and fill in other + * pScreen fields. + */ +- ret = fbScreenInit(pScreen, pixels, ++ ret = fbScreenInit(pScreen, orb_window_data(dPtr->orb_window), + pScrn->virtualX, pScrn->virtualY, + pScrn->xDpi, pScrn->yDpi, + pScrn->displayWidth, pScrn->bitsPerPixel); +@@ -947,6 +957,14 @@ + dPtr->CreateWindow = pScreen->CreateWindow; + pScreen->CreateWindow = DUMMYCreateWindow; + ++ /* Wrap the current CopyWindow function */ ++ dPtr->CopyWindow = pScreen->CopyWindow; ++ pScreen->CopyWindow = DUMMYCopyWindow; ++ ++ /* Wrap the current PaintWindow function */ ++ dPtr->PaintWindow = pScreen->PaintWindow; ++ pScreen->PaintWindow = DUMMYPaintWindow; ++ + /* Report any unused options (only for the first generation) */ + if (serverGeneration == 1) { + xf86ShowUnusedOptions(pScrn->scrnIndex, pScrn->options); +@@ -975,7 +993,10 @@ + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + DUMMYPtr dPtr = DUMMYPTR(pScrn); + +- free(pScreen->GetScreenPixmap(pScreen)->devPrivate.ptr); ++ if (dPtr->orb_window) { ++ orb_window_destroy(dPtr->orb_window); ++ dPtr->orb_window = NULL; ++ } + + if (dPtr->CursorInfo) + xf86DestroyCursorInfoRec(dPtr->CursorInfo); +@@ -1009,6 +1030,14 @@ + Atom VFB_PROP = 0; + #define VFB_PROP_NAME "VFB_IDENT" + ++static void DUMMYSync(DUMMYPtr dPtr) { ++ //TODO: send damage? ++ if (dPtr->orb_window) { ++ printf("SYNC\n"); ++ orb_window_sync(dPtr->orb_window); ++ } ++} ++ + static Bool + DUMMYCreateWindow(WindowPtr pWin) + { +@@ -1018,10 +1047,13 @@ + int ret; + + pScreen->CreateWindow = dPtr->CreateWindow; ++ printf("CreateWindow %p\n", pWin); + ret = pScreen->CreateWindow(pWin); + dPtr->CreateWindow = pScreen->CreateWindow; + pScreen->CreateWindow = DUMMYCreateWindow; + ++ DUMMYSync(dPtr); ++ + if(ret != TRUE) + return(ret); + +@@ -1046,6 +1078,38 @@ + return TRUE; + } + ++static void ++DUMMYCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc) ++{ ++ ScreenPtr pScreen = pWin->drawable.pScreen; ++ DUMMYPtr dPtr = DUMMYPTR(DUMMYScrn); ++ WindowPtr pWinRoot; ++ ++ pScreen->CopyWindow = dPtr->CopyWindow; ++ printf("CopyWindow %p\n", pWin); ++ pScreen->CopyWindow(pWin, ptOldOrg, prgnSrc); ++ dPtr->CopyWindow = pScreen->CopyWindow; ++ pScreen->CopyWindow = DUMMYCopyWindow; ++ ++ DUMMYSync(dPtr); ++} ++ ++static void ++DUMMYPaintWindow(WindowPtr pWin, RegionPtr prgn, int what) ++{ ++ ScreenPtr pScreen = pWin->drawable.pScreen; ++ DUMMYPtr dPtr = DUMMYPTR(DUMMYScrn); ++ WindowPtr pWinRoot; ++ ++ pScreen->PaintWindow = dPtr->PaintWindow; ++ printf("PaintWindow %p, (%d, %d), \n", pWin); ++ pScreen->PaintWindow(pWin, prgn, what); ++ dPtr->PaintWindow = pScreen->PaintWindow; ++ pScreen->PaintWindow = DUMMYPaintWindow; ++ ++ DUMMYSync(dPtr); ++} ++ + #ifndef HW_SKIP_CONSOLE + #define HW_SKIP_CONSOLE 4 + #endif +diff -ruwN xf86-video-dummy-0.4.1/src/dummy.h source/src/dummy.h +--- xf86-video-dummy-0.4.1/src/dummy.h 2023-05-07 14:27:44.000000000 -0600 ++++ source/src/dummy.h 2025-05-04 13:00:17.506799256 -0600 +@@ -13,6 +13,8 @@ + + #include "compat-api.h" + ++#include ++ + #define DUMMY_MAX_SCREENS 16 + + /* Supported chipsets */ +@@ -53,6 +55,8 @@ + + dummy_colors colors[1024]; + Bool (*CreateWindow)(WindowPtr) ; /* wrapped CreateWindow */ ++ void (*CopyWindow)(WindowPtr, DDXPointRec, RegionPtr) ; /* wrapped CopyWindow */ ++ void (*PaintWindow)(WindowPtr, RegionPtr, int) ; /* wrapped PaintWindow */ + Bool prop; + /* XRANDR support begin */ + int num_screens; +@@ -60,6 +64,8 @@ + struct _xf86Output *paOutputs[DUMMY_MAX_SCREENS]; + int connected_outputs; + /* XRANDR support end */ ++ ++ void *orb_window; + } DUMMYRec, *DUMMYPtr; + + /* The privates of the DUMMY driver */ From 421c654197bd5245ca60f4bde699fd37dd4beb3b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 May 2025 14:43:00 -0600 Subject: [PATCH 2465/3180] Add xinit --- recipes/wip/x11/xinit/recipe.toml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 recipes/wip/x11/xinit/recipe.toml diff --git a/recipes/wip/x11/xinit/recipe.toml b/recipes/wip/x11/xinit/recipe.toml new file mode 100644 index 00000000..2ee1557e --- /dev/null +++ b/recipes/wip/x11/xinit/recipe.toml @@ -0,0 +1,22 @@ +[source] +tar = "https://www.x.org/releases/individual/app/xinit-1.4.4.tar.xz" +blake3 = "fe988bbff7c4a950256540ad8a469fed1cdbe11439ba738b9714ee2de16f2a6c" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "x11proto", +] +template = "custom" +script = """ +DYNAMIC_INIT +export LIBS="-lxcb -lXau" +cookbook_configure +""" From 79126a2ceb9457e60224c0a7c9bb02ef0c6bf9c4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 May 2025 16:36:26 -0600 Subject: [PATCH 2466/3180] cairo: enable gobject --- recipes/libs/cairo/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/recipes/libs/cairo/recipe.toml b/recipes/libs/cairo/recipe.toml index 7468c0bd..b751537c 100644 --- a/recipes/libs/cairo/recipe.toml +++ b/recipes/libs/cairo/recipe.toml @@ -7,7 +7,12 @@ dependencies = [ "expat", "freetype2", "fontconfig", + "gettext", + "glib", + "libffi", + "libiconv", "libpng", + "pcre2", "pixman", "zlib", ] From 09fbbf3dd695d507c427a7f73564d3cdaadfefb7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 May 2025 17:06:27 -0600 Subject: [PATCH 2467/3180] harfbuzz: generate gobject bindings --- recipes/libs/harfbuzz/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/libs/harfbuzz/recipe.toml b/recipes/libs/harfbuzz/recipe.toml index 46a73062..219a07db 100644 --- a/recipes/libs/harfbuzz/recipe.toml +++ b/recipes/libs/harfbuzz/recipe.toml @@ -8,6 +8,7 @@ dependencies = [ "freetype2", "gettext", "glib", + "libffi", "libiconv", "libpng", "pcre2", From e1aada209d68f78eda20fdcf98fed1aa67afdced Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 May 2025 17:58:31 -0600 Subject: [PATCH 2468/3180] libepoxy: fix compilation --- recipes/wip/libs/other/libepoxy/recipe.toml | 20 +++++++++++++++++++- recipes/wip/libs/other/libepoxy/redox.patch | 18 ++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 recipes/wip/libs/other/libepoxy/redox.patch diff --git a/recipes/wip/libs/other/libepoxy/recipe.toml b/recipes/wip/libs/other/libepoxy/recipe.toml index f7ca74b0..3c770bf0 100644 --- a/recipes/wip/libs/other/libepoxy/recipe.toml +++ b/recipes/wip/libs/other/libepoxy/recipe.toml @@ -1,8 +1,26 @@ -#TODO missing script for Meson, see https://github.com/anholt/libepoxy#building [source] tar = "https://download.gnome.org/sources/libepoxy/1.5/libepoxy-1.5.10.tar.xz" +blake3 = "0ccee9635115fe417cfc4bc33ffd160bf1e2852bd6c03816b4af771d59462f53" +patches = ["redox.patch"] + [build] template = "custom" dependencies = [ + "liborbital", + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "llvm18", "mesa", + "mesa-glu", + "x11proto", + "zlib", ] +script = """ +DYNAMIC_INIT +cookbook_meson \ + -Degl=no \ + -Dglx=no \ + -Dtests=false +""" diff --git a/recipes/wip/libs/other/libepoxy/redox.patch b/recipes/wip/libs/other/libepoxy/redox.patch new file mode 100644 index 00000000..58a5f96b --- /dev/null +++ b/recipes/wip/libs/other/libepoxy/redox.patch @@ -0,0 +1,18 @@ +diff -ruwN libepoxy-1.5.10/src/dispatch_common.c source/src/dispatch_common.c +--- libepoxy-1.5.10/src/dispatch_common.c 2022-02-17 05:56:12.000000000 -0700 ++++ source/src/dispatch_common.c 2025-05-04 17:57:31.910921783 -0600 +@@ -264,13 +264,7 @@ + long begin_count; + }; + +-static struct api api = { +-#ifndef _WIN32 +- .mutex = PTHREAD_MUTEX_INITIALIZER, +-#else +- 0, +-#endif +-}; ++static struct api api = {0}; + + static bool library_initialized; + From da7ab9bc5485b9aa922cfe7cec56f630f097290f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 May 2025 18:02:32 -0600 Subject: [PATCH 2469/3180] atk: update and fix --- recipes/libs/atk/recipe.sh | 37 ------------------------------------ recipes/libs/atk/recipe.toml | 21 ++++++++++++++++++++ recipes/libs/atk/redox.patch | 14 -------------- 3 files changed, 21 insertions(+), 51 deletions(-) delete mode 100644 recipes/libs/atk/recipe.sh create mode 100644 recipes/libs/atk/recipe.toml delete mode 100644 recipes/libs/atk/redox.patch diff --git a/recipes/libs/atk/recipe.sh b/recipes/libs/atk/recipe.sh deleted file mode 100644 index 7fd1786d..00000000 --- a/recipes/libs/atk/recipe.sh +++ /dev/null @@ -1,37 +0,0 @@ -VERSION="2.26.1" -TAR="https://ftp.gnome.org/pub/gnome/sources/atk/${VERSION%.*}/atk-${VERSION}.tar.xz" -BUILD_DEPENDS=(gettext glib libffi libiconv pcre) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib --static" - export GLIB_MKENUMS="$sysroot/bin/glib-mkenums" - export GLIB_GENMARSHAL="$sysroot/bin/glib-genmarshal" - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix=/ \ - --disable-shared \ - --enable-static - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/libs/atk/recipe.toml b/recipes/libs/atk/recipe.toml new file mode 100644 index 00000000..a0d1185f --- /dev/null +++ b/recipes/libs/atk/recipe.toml @@ -0,0 +1,21 @@ +[source] +tar = "https://download.gnome.org/sources/atk/2.38/atk-2.38.0.tar.xz" +blake3 = "cbc1b7ba03009ee5cc0e646d8a86117e0d65bf8d105f2e8714fbde0299a8012e" +script = """ +wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +""" + +[build] +dependencies = [ + "gettext", + "glib", + #TODO "gobject-introspection", + "libffi", + "libiconv", + "pcre2", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_meson -Dintrospection=false +""" diff --git a/recipes/libs/atk/redox.patch b/recipes/libs/atk/redox.patch deleted file mode 100644 index ba4f22a7..00000000 --- a/recipes/libs/atk/redox.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -ruwN source/configure source-new/configure ---- source/configure 2017-10-20 07:00:49.000000000 -0600 -+++ source-new/configure 2019-07-16 19:45:25.127698132 -0600 -@@ -12930,8 +12930,8 @@ - - - --GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0` --GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0` -+#GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0` -+#GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0` - - - From a775a29fb4f07960f1c9cf5ea64b48da5b67019a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 May 2025 18:03:08 -0600 Subject: [PATCH 2470/3180] gdk-pixbuf: use pcre2 instead of pcre --- recipes/dev/gdk-pixbuf/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/dev/gdk-pixbuf/recipe.toml b/recipes/dev/gdk-pixbuf/recipe.toml index 9020deff..afa8bff2 100644 --- a/recipes/dev/gdk-pixbuf/recipe.toml +++ b/recipes/dev/gdk-pixbuf/recipe.toml @@ -11,7 +11,7 @@ dependencies = [ "libiconv", "libjpeg", "libpng", - "pcre", + "pcre2", "shared-mime-info", "zlib", ] From d4fef6be804b551280c3281039a470f25bd5f96d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 May 2025 18:15:16 -0600 Subject: [PATCH 2471/3180] cairo: enable X integration --- recipes/libs/cairo/recipe.toml | 8 +++++ recipes/libs/cairo/redox.patch | 60 +++++++++++++++++++++++++++------- 2 files changed, 57 insertions(+), 11 deletions(-) diff --git a/recipes/libs/cairo/recipe.toml b/recipes/libs/cairo/recipe.toml index b751537c..17e81b9b 100644 --- a/recipes/libs/cairo/recipe.toml +++ b/recipes/libs/cairo/recipe.toml @@ -1,6 +1,7 @@ [source] tar = "https://www.cairographics.org/releases/cairo-1.18.4.tar.xz" blake3 = "b9fa14e02f85ec4e72396c62236c98502d04dbbdf8daf01ab9557a1c7aa7106e" +patches = ["redox.patch"] [build] dependencies = [ @@ -12,8 +13,14 @@ dependencies = [ "libffi", "libiconv", "libpng", + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "libxext", "pcre2", "pixman", + "x11proto", "zlib", ] template = "custom" @@ -24,5 +31,6 @@ DYNAMIC_INIT #TODO: why is -lexpat not automatic? cookbook_meson \ -Dc_args="-DCAIRO_NO_MUTEX=1 -DM_SQRT2=1.41421356237309504880 -DM_LN2=0.69314718055994530942 -lexpat" \ + -Dxlib-xcb=enabled \ -Dtests=disabled """ diff --git a/recipes/libs/cairo/redox.patch b/recipes/libs/cairo/redox.patch index d02e163c..110b39a1 100644 --- a/recipes/libs/cairo/redox.patch +++ b/recipes/libs/cairo/redox.patch @@ -1,12 +1,50 @@ -diff -ruwN source/src/cairoint.h source-new/src/cairoint.h ---- source/src/cairoint.h 2018-08-16 19:10:53.000000000 -0600 -+++ source-new/src/cairoint.h 2019-10-02 19:55:59.131388156 -0600 -@@ -187,7 +187,7 @@ - static inline int cairo_const - _cairo_popcount (uint32_t mask) +diff -ruwN cairo-1.18.4/meson.build source/meson.build +--- cairo-1.18.4/meson.build 2025-03-08 05:35:35.000000000 -0700 ++++ source/meson.build 2025-05-04 18:07:04.594213814 -0600 +@@ -440,13 +440,13 @@ + if feature_conf.get('CAIRO_HAS_XCB_SURFACE', 0) == 1 + xcbshm_dep = dependency('xcb-shm', required: get_option('xcb')) + if xcbshm_dep.found() +- feature_conf.set('CAIRO_HAS_XCB_SHM_FUNCTIONS', 1) +- deps += [xcbshm_dep] +- built_features += [{ +- 'name': 'cairo-xcb-shm', +- 'description': 'XCB/SHM functions', +- 'deps': [xcbshm_dep], +- }] ++ #feature_conf.set('CAIRO_HAS_XCB_SHM_FUNCTIONS', 1) ++ #deps += [xcbshm_dep] ++ #built_features += [{ ++ # 'name': 'cairo-xcb-shm', ++ # 'description': 'XCB/SHM functions', ++ # 'deps': [xcbshm_dep], ++ #}] + endif + endif + +diff -ruwN cairo-1.18.4/perf/Makefile.in source/perf/Makefile.in +--- cairo-1.18.4/perf/Makefile.in 1969-12-31 17:00:00.000000000 -0700 ++++ source/perf/Makefile.in 2025-05-01 12:52:11.400963345 -0600 +@@ -0,0 +1,3 @@ ++all: ++ ++install: +diff -ruwN cairo-1.18.4/src/cairo-ps-surface.c source/src/cairo-ps-surface.c +--- cairo-1.18.4/src/cairo-ps-surface.c 2025-03-08 05:35:35.000000000 -0700 ++++ source/src/cairo-ps-surface.c 2025-05-04 18:08:43.821264417 -0600 +@@ -102,7 +102,7 @@ + #define DEBUG_FALLBACK(s) + #endif + +-#ifndef HAVE_CTIME_R ++#if !defined(HAVE_CTIME_R) && !defined(__redox__) + static char *ctime_r(const time_t *timep, char *buf) { --#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) -+#if !defined(__redox__) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) - return __builtin_popcount (mask); - #else - register int y; + (void)buf; +diff -ruwN cairo-1.18.4/test/Makefile.in source/test/Makefile.in +--- cairo-1.18.4/test/Makefile.in 1969-12-31 17:00:00.000000000 -0700 ++++ source/test/Makefile.in 2025-05-01 12:52:11.400963345 -0600 +@@ -0,0 +1,3 @@ ++all: ++ ++install: From 593e3acf6e7d880cfc801ff554e429fd08e02a2b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 May 2025 18:21:05 -0600 Subject: [PATCH 2472/3180] libxrandr: move, update, and fix --- recipes/wip/libs/other/libxrandr/recipe.toml | 5 ---- recipes/wip/x11/libxrandr/recipe.toml | 24 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 5 deletions(-) delete mode 100644 recipes/wip/libs/other/libxrandr/recipe.toml create mode 100644 recipes/wip/x11/libxrandr/recipe.toml diff --git a/recipes/wip/libs/other/libxrandr/recipe.toml b/recipes/wip/libs/other/libxrandr/recipe.toml deleted file mode 100644 index c19cfada..00000000 --- a/recipes/wip/libs/other/libxrandr/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO missing xorg-macros package -[source] -tar = "https://www.x.org/releases/individual/lib/libXrandr-1.5.4.tar.xz" -[build] -template = "configure" diff --git a/recipes/wip/x11/libxrandr/recipe.toml b/recipes/wip/x11/libxrandr/recipe.toml new file mode 100644 index 00000000..9e6d29ea --- /dev/null +++ b/recipes/wip/x11/libxrandr/recipe.toml @@ -0,0 +1,24 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/libXrandr-1.5.4.tar.xz" +blake3 = "c107a47d9c4329996d74d7a1ab8d254a2cf3aecea1575d7e146da9a06b762081" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "libxext", + "libxrender", + "x11proto", + "xextproto", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure --enable-malloc0returnsnull +""" From f7710a570114401f5719c33e735e57df6325083d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 May 2025 18:55:15 -0600 Subject: [PATCH 2473/3180] gobject-introspection: update and add script, not working yet --- .../libs/other/gobject-introspection/recipe.toml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/recipes/wip/libs/other/gobject-introspection/recipe.toml b/recipes/wip/libs/other/gobject-introspection/recipe.toml index 93a6f31f..b8aeed6b 100644 --- a/recipes/wip/libs/other/gobject-introspection/recipe.toml +++ b/recipes/wip/libs/other/gobject-introspection/recipe.toml @@ -1,9 +1,18 @@ -#TODO missing script for Meson, see https://gi.readthedocs.io/en/latest/build_test.html [source] -tar = "https://download.gnome.org/sources/gobject-introspection/1.76/gobject-introspection-1.76.1.tar.xz" +tar = "https://download.gnome.org/sources/gobject-introspection/1.84/gobject-introspection-1.84.0.tar.xz" +blake3 = "e01a810629b11b2fa415ba47d2df3ba521286e9933f6c2b364e959c26401eb96" + [build] template = "custom" dependencies = [ "cairo", "glib", + "libffi", + "pcre2", + "python312", + "zlib", ] +script = """ +DYNAMIC_INIT +cookbook_meson -Dpython="${COOKBOOK_SYSROOT}/usr/bin/python3.12" +""" From 484186ef021192fb307b7280f60402ebd033b4ce Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 May 2025 19:06:10 -0600 Subject: [PATCH 2474/3180] libepoxy: enable glx --- recipes/wip/libs/other/libepoxy/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/libs/other/libepoxy/recipe.toml b/recipes/wip/libs/other/libepoxy/recipe.toml index 3c770bf0..74969e25 100644 --- a/recipes/wip/libs/other/libepoxy/recipe.toml +++ b/recipes/wip/libs/other/libepoxy/recipe.toml @@ -21,6 +21,6 @@ script = """ DYNAMIC_INIT cookbook_meson \ -Degl=no \ - -Dglx=no \ + -Dglx=yes \ -Dtests=false """ From 9772ec2a7f554fac89e449b2536ecab88efe887a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 May 2025 19:59:34 -0600 Subject: [PATCH 2475/3180] gtk3: fix compilation --- recipes/wip/libs/gtk/gtk3/recipe.toml | 53 +++++++++++++++++++++------ recipes/wip/libs/gtk/gtk3/redox.patch | 42 +++++++++++++++++++++ src/bin/cook.rs | 2 + 3 files changed, 86 insertions(+), 11 deletions(-) create mode 100644 recipes/wip/libs/gtk/gtk3/redox.patch diff --git a/recipes/wip/libs/gtk/gtk3/recipe.toml b/recipes/wip/libs/gtk/gtk3/recipe.toml index 9c7b321b..eace30f7 100644 --- a/recipes/wip/libs/gtk/gtk3/recipe.toml +++ b/recipes/wip/libs/gtk/gtk3/recipe.toml @@ -1,18 +1,49 @@ -#TODO probably missing dependencies, see https://docs.gtk.org/gtk3/building.html#dependencies #TODO port to orbital [source] -tar = "https://download.gnome.org/sources/gtk+/3.24/gtk%2B-3.24.37.tar.xz" +tar = "https://download.gnome.org/sources/gtk+/3.24/gtk%2B-3.24.43.tar.xz" +blake3 = "5feab2bad81e6b5906895f70ddce6227cf96a6a14b16af0ef72c79991a48ddf4" +patches = ["redox.patch"] + [build] -template = "configure" dependencies = [ - "glib", - "gdk-pixbuf", - "pango", - "cairo", - "libepoxy", "atk", - "gobject-introspection", + "cairo", + "expat", + "fontconfig", + "freetype2", + "fribidi", + "gdk-pixbuf", + "gettext", + "glib", + #TODO "gobject-introspection", + "harfbuzz", + "libepoxy", + "libffi", + "libiconv", + "libjpeg", + "libpng", + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "libxext", + "libxfixes", + "libxi", + "libxrandr", + "libxrender", + "pango", + "pcre2", + "pixman", "shared-mime-info", - "graphene", - "gstreamer", + "x11proto", + "zlib", ] +template = "custom" +script = """ +DYNAMIC_INIT +#TODO: why are libs not automatically detected? +cookbook_meson \ + -Dc_args="-DM_SQRT2=1.41421356237309504880 -lXext -lX11 -lxcb -lXau" \ + -Dintrospection=false \ + -Dwayland_backend=false +""" \ No newline at end of file diff --git a/recipes/wip/libs/gtk/gtk3/redox.patch b/recipes/wip/libs/gtk/gtk3/redox.patch new file mode 100644 index 00000000..cca54ded --- /dev/null +++ b/recipes/wip/libs/gtk/gtk3/redox.patch @@ -0,0 +1,42 @@ +diff -ruwN gtk+-3.24.43/gtk/a11y/gtkaccessibility.c source/gtk/a11y/gtkaccessibility.c +--- gtk+-3.24.43/gtk/a11y/gtkaccessibility.c 2024-07-10 11:03:14.000000000 -0600 ++++ source/gtk/a11y/gtkaccessibility.c 2025-05-04 19:46:06.985224833 -0600 +@@ -37,7 +37,7 @@ + #include + #include + +-#ifdef GDK_WINDOWING_X11 ++#if defined(GDK_WINDOWING_X11) && !defined(__redox__) + #include + #endif + +@@ -254,7 +254,7 @@ + } + } + +-#ifdef GDK_WINDOWING_X11 ++#if defined(GDK_WINDOWING_X11) && !defined(__redox__) + /* + * If the focus widget is a GtkSocket without a plug + * then ignore the focus notification as the embedded +@@ -986,7 +986,7 @@ + _gtk_accessibility_override_atk_util (); + do_window_event_initialization (); + +-#ifdef GDK_WINDOWING_X11 ++#if defined(GDK_WINDOWING_X11) && !defined(__redox__) + atk_bridge_adaptor_init (NULL, NULL); + #endif + +diff -ruwN gtk+-3.24.43/meson.build source/meson.build +--- gtk+-3.24.43/meson.build 2024-07-10 11:03:14.000000000 -0600 ++++ source/meson.build 2025-05-04 18:36:13.187091118 -0600 +@@ -565,7 +565,7 @@ + xfixes_dep = dependency('xfixes', required: false) + xcomposite_dep = dependency('xcomposite', required: false) + fontconfig_dep = dependency('fontconfig', fallback: ['fontconfig', 'fontconfig_dep']) +- atkbridge_dep = dependency('atk-bridge-2.0', version: at_spi2_atk_req) ++ #TODO atkbridge_dep = dependency('atk-bridge-2.0', version: at_spi2_atk_req) + + backend_immodules += ['xim'] + diff --git a/src/bin/cook.rs b/src/bin/cook.rs index b7e1bf1f..bb26769a 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -843,6 +843,8 @@ function cookbook_meson { echo "strip = '${STRIP}'" >> cross_file.txt echo "pkg-config = '${PKG_CONFIG}'" >> cross_file.txt echo "llvm-config = '${TARGET}-llvm-config'" >> cross_file.txt + echo "glib-compile-resources = 'glib-compile-resources'" >> cross_file.txt + echo "glib-compile-schemas = 'glib-compile-schemas'" >> cross_file.txt echo "[host_machine]" >> cross_file.txt echo "system = 'redox'" >> cross_file.txt From ce45360e81980221eced55b2ebb827c26f52b5f6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 May 2025 21:00:50 -0600 Subject: [PATCH 2476/3180] llvm18-shared: reuse llvm18 source --- recipes/dev/llvm18-shared/recipe.toml | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/recipes/dev/llvm18-shared/recipe.toml b/recipes/dev/llvm18-shared/recipe.toml index 93b57c99..751d1a9e 100644 --- a/recipes/dev/llvm18-shared/recipe.toml +++ b/recipes/dev/llvm18-shared/recipe.toml @@ -1,7 +1,5 @@ [source] -git = "https://gitlab.redox-os.org/redox-os/llvm-project.git" -upstream = "https://github.com/rust-lang/llvm-project.git" -branch = "redox-2024-05-11" +same_as = "../llvm18" [build] template = "custom" @@ -79,9 +77,3 @@ mv -vT "${COOKBOOK_STAGE}"/usr/share "${COOKBOOK_STAGE}/share" rmdir -v "${COOKBOOK_STAGE}"/usr set +x """ - -[package] -dependencies = [ - "zlib" -] - From 6650a74ad0fdceb9fda18d30bb01260330b65e37 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 May 2025 21:01:14 -0600 Subject: [PATCH 2477/3180] mexa-x11: new mesa variant compiled with GLX --- recipes/libs/mesa-x11/recipe.toml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 recipes/libs/mesa-x11/recipe.toml diff --git a/recipes/libs/mesa-x11/recipe.toml b/recipes/libs/mesa-x11/recipe.toml new file mode 100644 index 00000000..2521bf63 --- /dev/null +++ b/recipes/libs/mesa-x11/recipe.toml @@ -0,0 +1,24 @@ +[source] +same_as = "../mesa" + +[build] +template = "custom" +dependencies = [ + "expat", + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "libxext", + "llvm18-shared", + "x11proto", + "zlib", +] +script = """ +DYNAMIC_INIT +cookbook_meson \ + -Dglx=xlib \ + -Dllvm=enabled \ + -Dplatforms=x11 \ + -Dshader-cache=disabled +""" From 82c2cc65e5b4ee44b0921873694144d916359d66 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 May 2025 21:01:40 -0600 Subject: [PATCH 2478/3180] libepoxy: build with mesa-x11 --- recipes/wip/libs/other/libepoxy/recipe.toml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/recipes/wip/libs/other/libepoxy/recipe.toml b/recipes/wip/libs/other/libepoxy/recipe.toml index 74969e25..56e439eb 100644 --- a/recipes/wip/libs/other/libepoxy/recipe.toml +++ b/recipes/wip/libs/other/libepoxy/recipe.toml @@ -6,14 +6,12 @@ patches = ["redox.patch"] [build] template = "custom" dependencies = [ - "liborbital", "libpthread-stubs", "libx11", "libxau", "libxcb", "llvm18", - "mesa", - "mesa-glu", + "mesa-x11", "x11proto", "zlib", ] From 131852c21f9a3a4e01cd8ac95c43403295f81925 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 May 2025 21:26:49 -0600 Subject: [PATCH 2479/3180] Move mesa-x11 and add mesa-glu-x11 and mesa-demos-x11 --- recipes/wip/x11/mesa-demos-x11/recipe.toml | 21 +++++++++++++++++++ recipes/wip/x11/mesa-glu-x11/recipe.toml | 19 +++++++++++++++++ .../{libs => wip/x11}/mesa-x11/recipe.toml | 2 +- 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 recipes/wip/x11/mesa-demos-x11/recipe.toml create mode 100644 recipes/wip/x11/mesa-glu-x11/recipe.toml rename recipes/{libs => wip/x11}/mesa-x11/recipe.toml (91%) diff --git a/recipes/wip/x11/mesa-demos-x11/recipe.toml b/recipes/wip/x11/mesa-demos-x11/recipe.toml new file mode 100644 index 00000000..88eaa726 --- /dev/null +++ b/recipes/wip/x11/mesa-demos-x11/recipe.toml @@ -0,0 +1,21 @@ +[source] +tar = "https://archive.mesa3d.org/demos/mesa-demos-9.0.0.tar.xz" +blake3 = "eef628aebdaa65d3bb1078bb6d6bdd7685c41fb67674e7f7b0e1e15f10433240" + +[build] +dependencies = [ + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "libxext", + "mesa-x11", + "mesa-glu-x11", + "x11proto", + "xextproto", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_meson +""" diff --git a/recipes/wip/x11/mesa-glu-x11/recipe.toml b/recipes/wip/x11/mesa-glu-x11/recipe.toml new file mode 100644 index 00000000..aeba39f6 --- /dev/null +++ b/recipes/wip/x11/mesa-glu-x11/recipe.toml @@ -0,0 +1,19 @@ +[source] +tar = "https://archive.mesa3d.org/glu/glu-9.0.3.tar.xz" +blake3 = "beed1665ed983540e7502289ec50c7e66d840820af3e9ef21c9c4a7e9686ab9f" + +[build] +dependencies = [ + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "libxext", + "mesa-x11", + "x11proto", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_meson -Dgl_provider=gl +""" diff --git a/recipes/libs/mesa-x11/recipe.toml b/recipes/wip/x11/mesa-x11/recipe.toml similarity index 91% rename from recipes/libs/mesa-x11/recipe.toml rename to recipes/wip/x11/mesa-x11/recipe.toml index 2521bf63..14dc386b 100644 --- a/recipes/libs/mesa-x11/recipe.toml +++ b/recipes/wip/x11/mesa-x11/recipe.toml @@ -1,5 +1,5 @@ [source] -same_as = "../mesa" +same_as = "../../../libs/mesa" [build] template = "custom" From 965fd720446672d43b2e12936b266283df3c63be Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 May 2025 21:38:59 -0600 Subject: [PATCH 2480/3180] Add libglvnd --- recipes/wip/x11/libglvnd/recipe.toml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 recipes/wip/x11/libglvnd/recipe.toml diff --git a/recipes/wip/x11/libglvnd/recipe.toml b/recipes/wip/x11/libglvnd/recipe.toml new file mode 100644 index 00000000..c2ac4a82 --- /dev/null +++ b/recipes/wip/x11/libglvnd/recipe.toml @@ -0,0 +1,18 @@ +[source] +# meson support not in latest release +git = "https://github.com/NVIDIA/libglvnd.git" + +[build] +dependencies = [ + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "libxext", + "x11proto", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_meson +""" From e275e926f43c21957a771f97b165716ae21acbba Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 4 May 2025 21:44:01 -0600 Subject: [PATCH 2481/3180] mesa-demos-x11: compile most demos --- recipes/wip/x11/mesa-demos-x11/recipe.toml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/recipes/wip/x11/mesa-demos-x11/recipe.toml b/recipes/wip/x11/mesa-demos-x11/recipe.toml index 88eaa726..8ee4c777 100644 --- a/recipes/wip/x11/mesa-demos-x11/recipe.toml +++ b/recipes/wip/x11/mesa-demos-x11/recipe.toml @@ -5,17 +5,22 @@ blake3 = "eef628aebdaa65d3bb1078bb6d6bdd7685c41fb67674e7f7b0e1e15f10433240" [build] dependencies = [ "libpthread-stubs", + "libglvnd", + "libstdcxx", "libx11", "libxau", "libxcb", "libxext", + "llvm18-shared", "mesa-x11", "mesa-glu-x11", "x11proto", "xextproto", + "zlib", ] template = "custom" script = """ DYNAMIC_INIT -cookbook_meson +#TODO: implement sincos for es2gears +cookbook_meson -Dgles2=disabled """ From eadbdc9a2e3c138d133227e3fe190f06fbed57b7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 5 May 2025 12:12:00 -0600 Subject: [PATCH 2482/3180] pixman: add blake3 hash --- recipes/libs/pixman/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/libs/pixman/recipe.toml b/recipes/libs/pixman/recipe.toml index 7ecac605..50bb30ea 100644 --- a/recipes/libs/pixman/recipe.toml +++ b/recipes/libs/pixman/recipe.toml @@ -1,6 +1,6 @@ [source] tar = "https://www.cairographics.org/releases/pixman-0.46.0.tar.xz" -blake3 = "" +blake3 = "379369245a0bbd13784bf550c87622964a6aba87edf598ffa137dc10201746e0" patches = ["redox.patch"] [build] From d3869b22faae0707a36281f8ca3cd30eff4b236f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 5 May 2025 16:17:13 -0600 Subject: [PATCH 2483/3180] Add xev --- recipes/wip/x11/xev/recipe.toml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 recipes/wip/x11/xev/recipe.toml diff --git a/recipes/wip/x11/xev/recipe.toml b/recipes/wip/x11/xev/recipe.toml new file mode 100644 index 00000000..d81b8ae1 --- /dev/null +++ b/recipes/wip/x11/xev/recipe.toml @@ -0,0 +1,26 @@ +[source] +tar = "https://www.x.org/releases/individual/app/xev-1.2.6.tar.xz" +blake3 = "883347a6db32fb4cf6bc97906ca1dacf1c67b7b84bd2abef9c6c5fc20abea647" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "libxext", + "libxrandr", + "libxrender", + "x11proto", +] +template = "custom" +script = """ +DYNAMIC_INIT +#TODO: why are LIBS not automatic? +export LIBS="-lXrender -lXext -lX11 -lxcb -lXau" +cookbook_configure +""" From 41410b24caa34823d91a1d0f793a2edb694b92ec Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 5 May 2025 16:18:52 -0600 Subject: [PATCH 2484/3180] xserver-xorg: disable use of setitimer --- recipes/wip/x11/xserver-xorg/redox.patch | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/recipes/wip/x11/xserver-xorg/redox.patch b/recipes/wip/x11/xserver-xorg/redox.patch index 2de15c1f..2cd09550 100644 --- a/recipes/wip/x11/xserver-xorg/redox.patch +++ b/recipes/wip/x11/xserver-xorg/redox.patch @@ -82,7 +82,16 @@ diff -ruwN xorg-server-21.1.16/hw/xfree86/os-support/xf86_OSlib.h source/hw/xfre #include diff -ruwN xorg-server-21.1.16/include/meson.build source/include/meson.build --- xorg-server-21.1.16/include/meson.build 2025-02-25 11:56:05.000000000 -0700 -+++ source/include/meson.build 2025-05-04 09:23:52.822312510 -0600 ++++ source/include/meson.build 2025-05-05 16:18:09.751286404 -0600 +@@ -162,7 +162,7 @@ + conf_data.set('HAVE_PORT_CREATE', cc.has_function('port_create') ? '1' : false) + conf_data.set('HAVE_REALLOCARRAY', cc.has_function('reallocarray', dependencies: libbsd_dep) ? '1' : false) + conf_data.set('HAVE_SETEUID', cc.has_function('seteuid') ? '1' : false) +-conf_data.set('HAVE_SETITIMER', cc.has_function('setitimer') ? '1' : false) ++conf_data.set('HAVE_SETITIMER', false) + conf_data.set('HAVE_SHMCTL64', cc.has_function('shmctl64') ? '1' : false) + conf_data.set('HAVE_SIGACTION', cc.has_function('sigaction') ? '1' : false) + conf_data.set('HAVE_SIGPROCMASK', cc.has_function('sigprocmask') ? '1' : false) @@ -190,7 +190,7 @@ conf_data.set('LISTEN_LOCAL', get_option('listen_local')) From a14afb19036feee3521c54dbc86834d3421e087a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 5 May 2025 20:05:27 -0600 Subject: [PATCH 2485/3180] libxft: update, move, and fix --- recipes/wip/libs/other/libxft/recipe.toml | 9 -------- recipes/wip/x11/libxft/recipe.toml | 27 +++++++++++++++++++++++ 2 files changed, 27 insertions(+), 9 deletions(-) delete mode 100644 recipes/wip/libs/other/libxft/recipe.toml create mode 100644 recipes/wip/x11/libxft/recipe.toml diff --git a/recipes/wip/libs/other/libxft/recipe.toml b/recipes/wip/libs/other/libxft/recipe.toml deleted file mode 100644 index f775c0df..00000000 --- a/recipes/wip/libs/other/libxft/recipe.toml +++ /dev/null @@ -1,9 +0,0 @@ -#TODO missing xorg-macros package -[source] -tar = "https://www.x.org/releases/individual/lib/libXft-2.3.8.tar.xz" -[build] -template = "configure" -dependencies = [ - "libxrender", - "libx11", -] diff --git a/recipes/wip/x11/libxft/recipe.toml b/recipes/wip/x11/libxft/recipe.toml new file mode 100644 index 00000000..0574d4c9 --- /dev/null +++ b/recipes/wip/x11/libxft/recipe.toml @@ -0,0 +1,27 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/libXft-2.3.9.tar.xz" +blake3 = "db5b642f7d5f1184d0975db36ae9f9fbd0a0c538a2288930fc034376374e83dc" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "expat", + "fontconfig", + "freetype2", + "libpng", + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "libxrender", + "x11proto", + "zlib", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From 18028a1874e712e65539b14422c7835c18403bf9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 5 May 2025 20:06:33 -0600 Subject: [PATCH 2486/3180] xserver-xorg-video-dummy: handle orbital events --- .../x11/xserver-xorg-video-dummy/recipe.toml | 4 +- .../x11/xserver-xorg-video-dummy/redox.patch | 250 ++++++++++++------ 2 files changed, 164 insertions(+), 90 deletions(-) diff --git a/recipes/wip/x11/xserver-xorg-video-dummy/recipe.toml b/recipes/wip/x11/xserver-xorg-video-dummy/recipe.toml index 2786ec7b..deae80a9 100644 --- a/recipes/wip/x11/xserver-xorg-video-dummy/recipe.toml +++ b/recipes/wip/x11/xserver-xorg-video-dummy/recipe.toml @@ -21,7 +21,7 @@ export LIBS="-lorbital" cookbook_configure mkdir -p "${COOKBOOK_STAGE}/usr/share/X11/xorg.conf.d" -cat > "${COOKBOOK_STAGE}/usr/share/X11/xorg.conf.d/dummy.conf" < "${COOKBOOK_STAGE}/usr/share/X11/xorg.conf.d/orbital.conf" < + #include ++#include + #include "scrnintstr.h" + #include "servermd.h" + +@@ -51,6 +52,8 @@ + static Bool DUMMYEnterVT(VT_FUNC_ARGS_DECL); static void DUMMYLeaveVT(VT_FUNC_ARGS_DECL); static Bool DUMMYCloseScreen(CLOSE_SCREEN_ARGS_DECL); ++static void DUMMYBlockHandler(ScreenPtr pScreen, void *timeout); ++static void DUMMYWakeupHandler(ScreenPtr pScreen, int result); static Bool DUMMYCreateWindow(WindowPtr pWin); -+static void DUMMYCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc); -+static void DUMMYPaintWindow(WindowPtr pWin, RegionPtr prgn, int what); static void DUMMYFreeScreen(FREE_SCREEN_ARGS_DECL); static ModeStatus DUMMYValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, - Bool verbose, int flags); -@@ -776,7 +778,6 @@ +@@ -768,6 +771,64 @@ + + static ScrnInfoPtr DUMMYScrn; /* static-globalize it */ + ++static void DUMMYOrbitalEvent(int fd, int ready, void *data) { ++ DUMMYPtr dPtr = (DUMMYPtr)data; ++ if (!dPtr->orb_window) { ++ return; ++ } ++ ++ void *event_iter = orb_window_events(dPtr->orb_window); ++ if (!event_iter) { ++ return; ++ } ++ ++ bool running = true; ++ while (running) { ++ OrbEventOption event = orb_events_next(event_iter); ++ if (event.tag == OrbEventOption_None) { ++ break; ++ } ++ //TODO: handle more events ++ switch (event.tag) { ++ case OrbEventOption_Key: ++ if (inputInfo.keyboard) { ++ if (event.key.scancode > 0) { ++ //TODO: more advanced key mapping? ++ xf86PostKeyEvent(inputInfo.keyboard, event.key.scancode + 8, event.key.pressed); ++ } ++ } ++ break; ++ case OrbEventOption_Mouse: ++ if (inputInfo.pointer) { ++ xf86PostMotionEvent(inputInfo.pointer, 1, 0, 2, event.mouse.x, event.mouse.y); ++ } ++ break; ++ case OrbEventOption_MouseRelative: ++ if (inputInfo.pointer) { ++ if (event.mouse_relative.dx || event.mouse_relative.dy) { ++ xf86PostMotionEvent(inputInfo.pointer, 0, 0, 2, event.mouse_relative.dx, event.mouse_relative.dy); ++ } ++ } ++ break; ++ case OrbEventOption_Button: ++ if (inputInfo.pointer) { ++ xf86PostButtonEvent(inputInfo.pointer, 0, 1, event.button.left, 0, 0); ++ xf86PostButtonEvent(inputInfo.pointer, 0, 2, event.button.middle, 0, 0); ++ xf86PostButtonEvent(inputInfo.pointer, 0, 3, event.button.right, 0, 0); ++ } ++ break; ++ case OrbEventOption_None: ++ running = false; ++ break; ++ default: ++ //printf("unknown orbital event %d: %d, %d\n", event.unknown.code, event.unknown.a, event.unknown.b); ++ break; ++ } ++ } ++ ++ orb_events_destroy(event_iter); ++} ++ + /* Mandatory */ + static Bool + DUMMYScreenInit(SCREEN_INIT_ARGS_DECL) +@@ -776,7 +837,6 @@ DUMMYPtr dPtr; int ret; VisualPtr visual; @@ -18,7 +91,7 @@ diff -ruwN xf86-video-dummy-0.4.1/src/dummy_driver.c source/src/dummy_driver.c /* * we need to get the ScrnInfoRec for this screen, so let's allocate -@@ -786,9 +787,20 @@ +@@ -786,9 +846,22 @@ dPtr = DUMMYPTR(pScrn); DUMMYScrn = pScrn; @@ -32,15 +105,17 @@ diff -ruwN xf86-video-dummy-0.4.1/src/dummy_driver.c source/src/dummy_driver.c + "orb_window_new %d, %d\n", + pScrn->virtualX, pScrn->virtualY + ); -+ dPtr->orb_window = orb_window_new(-1, -1, pScrn->virtualX, pScrn->virtualY, "X11"); ++ dPtr->orb_window = orb_window_new_flags(-1, -1, pScrn->virtualX, pScrn->virtualY, "X11", ORB_WINDOW_ASYNC); + if (!dPtr->orb_window) { + printf("failed to open orbital window\n"); return FALSE; + } ++ ++ SetNotifyFd(orb_window_fd(dPtr->orb_window), DUMMYOrbitalEvent, X_NOTIFY_READ, dPtr); /* * Reset visual list. -@@ -800,12 +812,10 @@ +@@ -800,12 +873,10 @@ if (!miSetVisualTypes(pScrn->depth, miGetDefaultVisualMask(pScrn->depth), pScrn->rgbBits, pScrn->defaultVisual)) { @@ -53,7 +128,7 @@ diff -ruwN xf86-video-dummy-0.4.1/src/dummy_driver.c source/src/dummy_driver.c return FALSE; } -@@ -813,7 +823,7 @@ +@@ -813,7 +884,7 @@ * Call the framebuffer layer's ScreenInit function, and fill in other * pScreen fields. */ @@ -62,123 +137,122 @@ diff -ruwN xf86-video-dummy-0.4.1/src/dummy_driver.c source/src/dummy_driver.c pScrn->virtualX, pScrn->virtualY, pScrn->xDpi, pScrn->yDpi, pScrn->displayWidth, pScrn->bitsPerPixel); -@@ -947,6 +957,14 @@ +@@ -938,11 +1009,18 @@ + + pScreen->SaveScreen = DUMMYSaveScreen; + +- + /* Wrap the current CloseScreen function */ + dPtr->CloseScreen = pScreen->CloseScreen; + pScreen->CloseScreen = DUMMYCloseScreen; + ++ /* Wrap the current BlockHandler function */ ++ dPtr->BlockHandler = pScreen->BlockHandler; ++ pScreen->BlockHandler = DUMMYBlockHandler; ++ ++ /* Wrap the current WakeupHandler function */ ++ dPtr->WakeupHandler = pScreen->WakeupHandler; ++ pScreen->WakeupHandler = DUMMYWakeupHandler; ++ + /* Wrap the current CreateWindow function */ dPtr->CreateWindow = pScreen->CreateWindow; pScreen->CreateWindow = DUMMYCreateWindow; +@@ -959,6 +1037,7 @@ + Bool + DUMMYSwitchMode(SWITCH_MODE_ARGS_DECL) + { ++ printf("SwitchMode\n"); + return TRUE; + } -+ /* Wrap the current CopyWindow function */ -+ dPtr->CopyWindow = pScreen->CopyWindow; -+ pScreen->CopyWindow = DUMMYCopyWindow; -+ -+ /* Wrap the current PaintWindow function */ -+ dPtr->PaintWindow = pScreen->PaintWindow; -+ pScreen->PaintWindow = DUMMYPaintWindow; -+ - /* Report any unused options (only for the first generation) */ - if (serverGeneration == 1) { - xf86ShowUnusedOptions(pScrn->scrnIndex, pScrn->options); -@@ -975,7 +993,10 @@ +@@ -966,6 +1045,7 @@ + void + DUMMYAdjustFrame(ADJUST_FRAME_ARGS_DECL) + { ++ printf("AdjustFrame\n"); + } + + /* Mandatory */ +@@ -975,7 +1055,13 @@ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); DUMMYPtr dPtr = DUMMYPTR(pScrn); - free(pScreen->GetScreenPixmap(pScreen)->devPrivate.ptr); + if (dPtr->orb_window) { ++ RemoveNotifyFd(orb_window_fd(dPtr->orb_window)); ++ ++ printf("orb_window_destroy %p\n", dPtr->orb_window); + orb_window_destroy(dPtr->orb_window); + dPtr->orb_window = NULL; + } if (dPtr->CursorInfo) xf86DestroyCursorInfoRec(dPtr->CursorInfo); -@@ -1009,6 +1030,14 @@ +@@ -1009,6 +1095,32 @@ Atom VFB_PROP = 0; #define VFB_PROP_NAME "VFB_IDENT" -+static void DUMMYSync(DUMMYPtr dPtr) { -+ //TODO: send damage? ++static void DUMMYBlockHandler(ScreenPtr pScreen, void *timeout) { ++ DUMMYPtr dPtr = DUMMYPTR(DUMMYScrn); ++ ++ //printf("BlockHandler %p %p\n", pScreen, timeout); ++ pScreen->BlockHandler = dPtr->BlockHandler; ++ pScreen->BlockHandler(pScreen, timeout); ++ dPtr->BlockHandler = pScreen->BlockHandler; ++ pScreen->BlockHandler = DUMMYBlockHandler; ++ + if (dPtr->orb_window) { -+ printf("SYNC\n"); ++ //printf("orb_window_sync %p\n", dPtr->orb_window); ++ //TODO: make syncs less frequent + orb_window_sync(dPtr->orb_window); + } +} ++ ++static void DUMMYWakeupHandler(ScreenPtr pScreen, int result) { ++ DUMMYPtr dPtr = DUMMYPTR(DUMMYScrn); ++ ++ //printf("WakeupHandler %p %d\n", pScreen, result); ++ pScreen->WakeupHandler = dPtr->WakeupHandler; ++ pScreen->WakeupHandler(pScreen, result); ++ dPtr->WakeupHandler = pScreen->WakeupHandler; ++ pScreen->WakeupHandler = DUMMYWakeupHandler; ++} + static Bool DUMMYCreateWindow(WindowPtr pWin) { -@@ -1018,10 +1047,13 @@ - int ret; - - pScreen->CreateWindow = dPtr->CreateWindow; -+ printf("CreateWindow %p\n", pWin); - ret = pScreen->CreateWindow(pWin); - dPtr->CreateWindow = pScreen->CreateWindow; - pScreen->CreateWindow = DUMMYCreateWindow; - -+ DUMMYSync(dPtr); -+ - if(ret != TRUE) - return(ret); - -@@ -1046,6 +1078,38 @@ - return TRUE; - } - -+static void -+DUMMYCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc) -+{ -+ ScreenPtr pScreen = pWin->drawable.pScreen; -+ DUMMYPtr dPtr = DUMMYPTR(DUMMYScrn); -+ WindowPtr pWinRoot; -+ -+ pScreen->CopyWindow = dPtr->CopyWindow; -+ printf("CopyWindow %p\n", pWin); -+ pScreen->CopyWindow(pWin, ptOldOrg, prgnSrc); -+ dPtr->CopyWindow = pScreen->CopyWindow; -+ pScreen->CopyWindow = DUMMYCopyWindow; -+ -+ DUMMYSync(dPtr); -+} -+ -+static void -+DUMMYPaintWindow(WindowPtr pWin, RegionPtr prgn, int what) -+{ -+ ScreenPtr pScreen = pWin->drawable.pScreen; -+ DUMMYPtr dPtr = DUMMYPTR(DUMMYScrn); -+ WindowPtr pWinRoot; -+ -+ pScreen->PaintWindow = dPtr->PaintWindow; -+ printf("PaintWindow %p, (%d, %d), \n", pWin); -+ pScreen->PaintWindow(pWin, prgn, what); -+ dPtr->PaintWindow = pScreen->PaintWindow; -+ pScreen->PaintWindow = DUMMYPaintWindow; -+ -+ DUMMYSync(dPtr); -+} -+ - #ifndef HW_SKIP_CONSOLE - #define HW_SKIP_CONSOLE 4 - #endif diff -ruwN xf86-video-dummy-0.4.1/src/dummy.h source/src/dummy.h --- xf86-video-dummy-0.4.1/src/dummy.h 2023-05-07 14:27:44.000000000 -0600 -+++ source/src/dummy.h 2025-05-04 13:00:17.506799256 -0600 -@@ -13,6 +13,8 @@ ++++ source/src/dummy.h 2025-05-05 15:57:13.611157665 -0600 +@@ -4,6 +4,7 @@ + #include "xf86_OSproc.h" + + #include "xf86Cursor.h" ++#include "xf86Xinput.h" + + #ifdef XvExtension + #include "xf86xv.h" +@@ -13,7 +14,9 @@ #include "compat-api.h" +-#define DUMMY_MAX_SCREENS 16 +#include + - #define DUMMY_MAX_SCREENS 16 ++#define DUMMY_MAX_SCREENS 1 /* Supported chipsets */ -@@ -53,6 +55,8 @@ + typedef enum { +@@ -52,6 +55,8 @@ + int cursorFG, cursorBG; dummy_colors colors[1024]; ++ void (*BlockHandler)(ScreenPtr, void*) ; /* wrapped BlockHandler */ ++ void (*WakeupHandler)(ScreenPtr, int) ; /* wrapped WakeupHandler */ Bool (*CreateWindow)(WindowPtr) ; /* wrapped CreateWindow */ -+ void (*CopyWindow)(WindowPtr, DDXPointRec, RegionPtr) ; /* wrapped CopyWindow */ -+ void (*PaintWindow)(WindowPtr, RegionPtr, int) ; /* wrapped PaintWindow */ Bool prop; /* XRANDR support begin */ - int num_screens; -@@ -60,6 +64,8 @@ +@@ -60,6 +65,8 @@ struct _xf86Output *paOutputs[DUMMY_MAX_SCREENS]; int connected_outputs; /* XRANDR support end */ From fbc0d2d8cd33382722c0c93a6a74497ec9c54808 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 5 May 2025 21:11:33 -0600 Subject: [PATCH 2487/3180] Add xterm --- recipes/wip/x11/xterm/recipe.toml | 39 +++++++++++++++++++++ recipes/wip/x11/xterm/redox.patch | 58 +++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 recipes/wip/x11/xterm/recipe.toml create mode 100644 recipes/wip/x11/xterm/redox.patch diff --git a/recipes/wip/x11/xterm/recipe.toml b/recipes/wip/x11/xterm/recipe.toml new file mode 100644 index 00000000..0158180c --- /dev/null +++ b/recipes/wip/x11/xterm/recipe.toml @@ -0,0 +1,39 @@ +[source] +tar = "https://invisible-island.net/archives/xterm/xterm-398.tgz" +blake3 = "c42112586b2c231681db9327df9d797953469e3b7cb2abe93b8f3f821597d528" +patches = ["redox.patch"] + +[build] +dependencies = [ + "expat", + "fontconfig", + "freetype2", + "libice", + "libpng", + "libpthread-stubs", + "libsm", + "libx11", + "libxau", + "libxaw", + "libxcb", + "libxext", + "libxft", + "libxmu", + "libxpm", + "libxrender", + "libxt", + "ncurses", + "pcre2", + "x11proto", + "zlib", +] +template = "custom" +script = """ +DYNAMIC_INIT +export CFLAGS="-I${COOKBOOK_SYSROOT}/usr/include/freetype2" +#TODO: why are LIBS not automatic? +export LIBS="-lXaw7 -lXmu -lXpm -lXt -lSM -lICE -lXft -lfreetype -lfontconfig -lXrender -lXext -lX11 -lxcb -lXau -lpcre2-8 -lexpat -lpng -lz" +cookbook_configure \ + --with-pcre2 \ + cf_cv_func_setitimer=no +""" diff --git a/recipes/wip/x11/xterm/redox.patch b/recipes/wip/x11/xterm/redox.patch new file mode 100644 index 00000000..6326c626 --- /dev/null +++ b/recipes/wip/x11/xterm/redox.patch @@ -0,0 +1,58 @@ +diff -ruwN xterm-398/main.c source/main.c +--- xterm-398/main.c 2025-03-08 06:03:19.000000000 -0700 ++++ source/main.c 2025-05-05 20:51:10.249419667 -0600 +@@ -162,6 +162,10 @@ + #define USE_POSIX_SIGNALS + #endif + ++#ifndef XTABS ++#define XTABS 0x01800 ++#endif ++ + #if defined(SYSV) && !defined(SVR4) && !defined(ISC22) && !defined(ISC30) + /* older SYSV systems cannot ignore SIGHUP. + Shell hangs, or you get extra shells, or something like that */ +@@ -185,6 +189,10 @@ + #define WTMP + #endif + ++#ifdef __redox__ ++#define USE_SYSV_PGRP ++#endif ++ + #ifdef __SCO__ + #ifndef _SVID3 + #define _SVID3 +diff -ruwN xterm-398/xterm.h source/xterm.h +--- xterm-398/xterm.h 2025-04-08 01:36:09.000000000 -0600 ++++ source/xterm.h 2025-05-05 20:10:18.830478495 -0600 +@@ -80,7 +80,7 @@ + #define HAVE_PUTENV 1 + #endif + +-#if defined(CSRG_BASED) || defined(__GNU__) || defined(__minix) ++#if defined(CSRG_BASED) || defined(__GNU__) || defined(__minix) || defined(__redox__) + #define USE_POSIX_TERMIOS 1 + #endif + +@@ -208,7 +208,7 @@ + #define HAVE_PTY_H + #endif + +-#if !defined(USG) && !defined(__minix) ++#if !defined(USG) && !defined(__minix) && !defined(__redox__) + #define HAVE_SETITIMER 1 + #else + #define HAVE_SETITIMER 0 +diff -ruwN xterm-398/xterm_io.h source/xterm_io.h +--- xterm-398/xterm_io.h 2024-09-30 02:03:20.000000000 -0600 ++++ source/xterm_io.h 2025-05-05 20:14:21.528656084 -0600 +@@ -57,7 +57,7 @@ + #define USE_SYSV_TERMIO + #endif + +-#if defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__INTERIX) || defined(__APPLE__) || defined(__UNIXWARE__) || defined(__hpux) ++#if defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__INTERIX) || defined(__APPLE__) || defined(__UNIXWARE__) || defined(__hpux) || defined(__redox__) + #ifndef USE_POSIX_TERMIOS + #define USE_POSIX_TERMIOS + #endif From 5b9f286ed4e8ad656507180622935138cf96737d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 5 May 2025 21:31:34 -0600 Subject: [PATCH 2488/3180] xterm: fix open pty --- recipes/wip/x11/xterm/redox.patch | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/recipes/wip/x11/xterm/redox.patch b/recipes/wip/x11/xterm/redox.patch index 6326c626..69e3a0ab 100644 --- a/recipes/wip/x11/xterm/redox.patch +++ b/recipes/wip/x11/xterm/redox.patch @@ -1,6 +1,6 @@ diff -ruwN xterm-398/main.c source/main.c --- xterm-398/main.c 2025-03-08 06:03:19.000000000 -0700 -+++ source/main.c 2025-05-05 20:51:10.249419667 -0600 ++++ source/main.c 2025-05-05 21:25:41.492475745 -0600 @@ -162,6 +162,10 @@ #define USE_POSIX_SIGNALS #endif @@ -23,9 +23,27 @@ diff -ruwN xterm-398/main.c source/main.c #ifdef __SCO__ #ifndef _SVID3 #define _SVID3 +@@ -3114,7 +3122,7 @@ + } + } + +-#if defined(__osf__) || (defined(__linux__) && !defined(USE_USG_PTYS)) || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__) ++#if defined(__osf__) || (defined(__linux__) && !defined(USE_USG_PTYS)) || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__redox__) + #define USE_OPENPTY 1 + static int opened_tty = -1; + #endif +@@ -4494,7 +4502,7 @@ + /* make /dev/tty work */ + ioctl(ttyfd, TIOCSCTTY, 0); + #endif +-#ifdef USE_SYSV_PGRP ++#if defined(USE_SYSV_PGRP) && !defined(__redox__) + /* We need to make sure that we are actually + * the process group leader for the pty. If + * we are, then we should now be able to open diff -ruwN xterm-398/xterm.h source/xterm.h --- xterm-398/xterm.h 2025-04-08 01:36:09.000000000 -0600 -+++ source/xterm.h 2025-05-05 20:10:18.830478495 -0600 ++++ source/xterm.h 2025-05-05 21:11:05.413561791 -0600 @@ -80,7 +80,7 @@ #define HAVE_PUTENV 1 #endif @@ -46,7 +64,7 @@ diff -ruwN xterm-398/xterm.h source/xterm.h #define HAVE_SETITIMER 0 diff -ruwN xterm-398/xterm_io.h source/xterm_io.h --- xterm-398/xterm_io.h 2024-09-30 02:03:20.000000000 -0600 -+++ source/xterm_io.h 2025-05-05 20:14:21.528656084 -0600 ++++ source/xterm_io.h 2025-05-05 21:11:05.413561791 -0600 @@ -57,7 +57,7 @@ #define USE_SYSV_TERMIO #endif From 742c42b569ad3421f04714188261e9b38e4f44ee Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 May 2025 15:36:59 -0600 Subject: [PATCH 2489/3180] xserver-xorg: enable glx --- recipes/wip/x11/xserver-xorg/recipe.toml | 3 ++- recipes/wip/x11/xserver-xorg/redox.patch | 34 +++++++++++++++++++++++- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/recipes/wip/x11/xserver-xorg/recipe.toml b/recipes/wip/x11/xserver-xorg/recipe.toml index 438b63d2..c4269558 100644 --- a/recipes/wip/x11/xserver-xorg/recipe.toml +++ b/recipes/wip/x11/xserver-xorg/recipe.toml @@ -16,8 +16,10 @@ dependencies = [ "libxcb", "libxcvt", "libxdmcp", + "libxext", "libxfont2", "libxkbfile", + "mesa-x11", "openssl1", "pixman", "x11proto", @@ -29,7 +31,6 @@ script = """ DYNAMIC_INIT cookbook_meson \ -Dglamor=false \ - -Dglx=false \ -Dint10=false \ -Dpciaccess=false \ -Dsecure-rpc=false \ diff --git a/recipes/wip/x11/xserver-xorg/redox.patch b/recipes/wip/x11/xserver-xorg/redox.patch index 2cd09550..97b10246 100644 --- a/recipes/wip/x11/xserver-xorg/redox.patch +++ b/recipes/wip/x11/xserver-xorg/redox.patch @@ -1,3 +1,17 @@ +diff -ruwN xorg-server-21.1.16/glx/meson.build source/glx/meson.build +--- xorg-server-21.1.16/glx/meson.build 2025-02-25 11:56:05.000000000 -0700 ++++ source/glx/meson.build 2025-05-06 15:13:57.516784717 -0600 +@@ -13,8 +13,8 @@ + 'glxcmds.c', + 'glxcmdsswap.c', + 'glxext.c', +- 'glxdriswrast.c', +- 'glxdricommon.c', ++ #'glxdriswrast.c', ++ #'glxdricommon.c', + 'glxscreens.c', + 'render2.c', + 'render2swap.c', diff -ruwN xorg-server-21.1.16/hw/xfree86/common/xf86Xinput.c source/hw/xfree86/common/xf86Xinput.c --- xorg-server-21.1.16/hw/xfree86/common/xf86Xinput.c 2025-02-25 11:56:05.000000000 -0700 +++ source/hw/xfree86/common/xf86Xinput.c 2025-05-03 11:28:37.266757877 -0600 @@ -82,7 +96,16 @@ diff -ruwN xorg-server-21.1.16/hw/xfree86/os-support/xf86_OSlib.h source/hw/xfre #include diff -ruwN xorg-server-21.1.16/include/meson.build source/include/meson.build --- xorg-server-21.1.16/include/meson.build 2025-02-25 11:56:05.000000000 -0700 -+++ source/include/meson.build 2025-05-05 16:18:09.751286404 -0600 ++++ source/include/meson.build 2025-05-06 15:10:29.262525728 -0600 +@@ -6,7 +6,7 @@ + # convert to the old-style 1.x.y version scheme used up to 1.20.x for backwards compatibility + release = 1 * 10000000 + major * 100000 + minor * 1000 + patch + +-dri_dep = dependency('dri', required: build_glx) ++dri_dep = dependency('dri', required: false) + + conf_data = configuration_data() + conf_data.set('_DIX_CONFIG_H_', '1') @@ -162,7 +162,7 @@ conf_data.set('HAVE_PORT_CREATE', cc.has_function('port_create') ? '1' : false) conf_data.set('HAVE_REALLOCARRAY', cc.has_function('reallocarray', dependencies: libbsd_dep) ? '1' : false) @@ -101,6 +124,15 @@ diff -ruwN xorg-server-21.1.16/include/meson.build source/include/meson.build endif if conf_data.get('HAVE_GETPEEREID').to_int() == 0 and conf_data.get('HAVE_GETPEERUCRED').to_int() == 0 +@@ -212,7 +212,7 @@ + conf_data.set('DRI2', build_dri2 ? '1' : false) + conf_data.set('DRI3', build_dri3 ? '1' : false) + if build_glx +- conf_data.set_quoted('DRI_DRIVER_PATH', dri_dep.get_pkgconfig_variable('dridriverdir')) ++ #conf_data.set_quoted('DRI_DRIVER_PATH', dri_dep.get_pkgconfig_variable('dridriverdir')) + endif + conf_data.set('HAS_SHM', build_mitshm ? '1' : false) + conf_data.set('MITSHM', build_mitshm ? '1' : false) diff -ruwN xorg-server-21.1.16/meson.build source/meson.build --- xorg-server-21.1.16/meson.build 2025-02-25 11:56:05.000000000 -0700 +++ source/meson.build 2025-05-03 11:28:37.267757875 -0600 From 1d9dba2ecc666c777a43e7127a43f3a6ff8aac22 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 May 2025 15:38:13 -0600 Subject: [PATCH 2490/3180] xserver-xorg: use glvnd --- recipes/wip/x11/xserver-xorg/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/x11/xserver-xorg/recipe.toml b/recipes/wip/x11/xserver-xorg/recipe.toml index c4269558..1009b2d2 100644 --- a/recipes/wip/x11/xserver-xorg/recipe.toml +++ b/recipes/wip/x11/xserver-xorg/recipe.toml @@ -8,6 +8,7 @@ dependencies = [ "font-util", "freetype2", "libfontenc", + "libglvnd", "libpng", "libpthread-stubs", #TODO: used for secure-rpc, needs syslog: "libtirpc", @@ -19,7 +20,6 @@ dependencies = [ "libxext", "libxfont2", "libxkbfile", - "mesa-x11", "openssl1", "pixman", "x11proto", From 1c26cd52a89f0cc3459ea57e57a58d3d6e508088 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 May 2025 15:38:35 -0600 Subject: [PATCH 2491/3180] mesa-x11: enable glvnd --- recipes/wip/x11/mesa-x11/recipe.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/recipes/wip/x11/mesa-x11/recipe.toml b/recipes/wip/x11/mesa-x11/recipe.toml index 14dc386b..527785aa 100644 --- a/recipes/wip/x11/mesa-x11/recipe.toml +++ b/recipes/wip/x11/mesa-x11/recipe.toml @@ -5,6 +5,7 @@ same_as = "../../../libs/mesa" template = "custom" dependencies = [ "expat", + "libglvnd", "libpthread-stubs", "libx11", "libxau", @@ -17,6 +18,7 @@ dependencies = [ script = """ DYNAMIC_INIT cookbook_meson \ + -Dglvnd=true \ -Dglx=xlib \ -Dllvm=enabled \ -Dplatforms=x11 \ From e5c439e9ea87d4a28064d1ccf67bbd31903f036a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 May 2025 15:39:00 -0600 Subject: [PATCH 2492/3180] mesa-glu-x11: enable glvnd --- recipes/wip/x11/mesa-glu-x11/recipe.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/wip/x11/mesa-glu-x11/recipe.toml b/recipes/wip/x11/mesa-glu-x11/recipe.toml index aeba39f6..06ecaae6 100644 --- a/recipes/wip/x11/mesa-glu-x11/recipe.toml +++ b/recipes/wip/x11/mesa-glu-x11/recipe.toml @@ -4,6 +4,7 @@ blake3 = "beed1665ed983540e7502289ec50c7e66d840820af3e9ef21c9c4a7e9686ab9f" [build] dependencies = [ + "libglvnd", "libpthread-stubs", "libx11", "libxau", @@ -15,5 +16,5 @@ dependencies = [ template = "custom" script = """ DYNAMIC_INIT -cookbook_meson -Dgl_provider=gl +cookbook_meson -Dgl_provider=glvnd """ From bc4d9dabe5692bd86222adb4139ddaef15a52446 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 May 2025 16:01:34 -0600 Subject: [PATCH 2493/3180] Do not use glvnd (it complicates things) --- recipes/wip/x11/mesa-glu-x11/recipe.toml | 3 +-- recipes/wip/x11/mesa-x11/recipe.toml | 2 -- recipes/wip/x11/xserver-xorg/recipe.toml | 2 +- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/recipes/wip/x11/mesa-glu-x11/recipe.toml b/recipes/wip/x11/mesa-glu-x11/recipe.toml index 06ecaae6..aeba39f6 100644 --- a/recipes/wip/x11/mesa-glu-x11/recipe.toml +++ b/recipes/wip/x11/mesa-glu-x11/recipe.toml @@ -4,7 +4,6 @@ blake3 = "beed1665ed983540e7502289ec50c7e66d840820af3e9ef21c9c4a7e9686ab9f" [build] dependencies = [ - "libglvnd", "libpthread-stubs", "libx11", "libxau", @@ -16,5 +15,5 @@ dependencies = [ template = "custom" script = """ DYNAMIC_INIT -cookbook_meson -Dgl_provider=glvnd +cookbook_meson -Dgl_provider=gl """ diff --git a/recipes/wip/x11/mesa-x11/recipe.toml b/recipes/wip/x11/mesa-x11/recipe.toml index 527785aa..14dc386b 100644 --- a/recipes/wip/x11/mesa-x11/recipe.toml +++ b/recipes/wip/x11/mesa-x11/recipe.toml @@ -5,7 +5,6 @@ same_as = "../../../libs/mesa" template = "custom" dependencies = [ "expat", - "libglvnd", "libpthread-stubs", "libx11", "libxau", @@ -18,7 +17,6 @@ dependencies = [ script = """ DYNAMIC_INIT cookbook_meson \ - -Dglvnd=true \ -Dglx=xlib \ -Dllvm=enabled \ -Dplatforms=x11 \ diff --git a/recipes/wip/x11/xserver-xorg/recipe.toml b/recipes/wip/x11/xserver-xorg/recipe.toml index 1009b2d2..c4269558 100644 --- a/recipes/wip/x11/xserver-xorg/recipe.toml +++ b/recipes/wip/x11/xserver-xorg/recipe.toml @@ -8,7 +8,6 @@ dependencies = [ "font-util", "freetype2", "libfontenc", - "libglvnd", "libpng", "libpthread-stubs", #TODO: used for secure-rpc, needs syslog: "libtirpc", @@ -20,6 +19,7 @@ dependencies = [ "libxext", "libxfont2", "libxkbfile", + "mesa-x11", "openssl1", "pixman", "x11proto", From 5b759bf7692684f1c2af7adf771d523d10559076 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 May 2025 16:04:14 -0600 Subject: [PATCH 2494/3180] mesa-demos-x11: patch to use mesa-x11 --- recipes/wip/x11/mesa-demos-x11/recipe.toml | 2 +- recipes/wip/x11/mesa-demos-x11/redox.patch | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 recipes/wip/x11/mesa-demos-x11/redox.patch diff --git a/recipes/wip/x11/mesa-demos-x11/recipe.toml b/recipes/wip/x11/mesa-demos-x11/recipe.toml index 8ee4c777..9d8e99ee 100644 --- a/recipes/wip/x11/mesa-demos-x11/recipe.toml +++ b/recipes/wip/x11/mesa-demos-x11/recipe.toml @@ -1,11 +1,11 @@ [source] tar = "https://archive.mesa3d.org/demos/mesa-demos-9.0.0.tar.xz" blake3 = "eef628aebdaa65d3bb1078bb6d6bdd7685c41fb67674e7f7b0e1e15f10433240" +patches = ["redox.patch"] [build] dependencies = [ "libpthread-stubs", - "libglvnd", "libstdcxx", "libx11", "libxau", diff --git a/recipes/wip/x11/mesa-demos-x11/redox.patch b/recipes/wip/x11/mesa-demos-x11/redox.patch new file mode 100644 index 00000000..cdfa48e6 --- /dev/null +++ b/recipes/wip/x11/mesa-demos-x11/redox.patch @@ -0,0 +1,11 @@ +--- mesa-demos-9.0.0/meson.build 2023-03-22 06:13:43.000000000 -0600 ++++ source/meson.build 2025-05-06 15:58:57.523274337 -0600 +@@ -99,7 +99,7 @@ + endif + + dep_glx = dependency('glx', required: false, disabler : true) +-if not dep_glx.found() and host_machine.system() == 'darwin' ++if not dep_glx.found() + # xquartz doesn't have a glx.pc, but it does have the header. And all the + # symbols reside in libGL, so let's just use that. + if cc.check_header('GL/glx.h', dependencies: dep_x11) From 5c7dae3696d6596f6db5b0d14f62d0a24465d3c1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 May 2025 16:59:56 -0600 Subject: [PATCH 2495/3180] Add libxxf86vm --- recipes/wip/x11/libxxf86vm/recipe.toml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 recipes/wip/x11/libxxf86vm/recipe.toml diff --git a/recipes/wip/x11/libxxf86vm/recipe.toml b/recipes/wip/x11/libxxf86vm/recipe.toml new file mode 100644 index 00000000..cbefd2e7 --- /dev/null +++ b/recipes/wip/x11/libxxf86vm/recipe.toml @@ -0,0 +1,22 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/libXxf86vm-1.1.6.tar.xz" +blake3 = "cd99c05a03e81f8579a56272debd554b2a44c2ac8211f0170a39be86e03221bb" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "libxext", + "x11proto", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure --enable-malloc0returnsnull +""" From 3595df0934341bf22c05e6676b7ff844a4983202 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 May 2025 21:32:53 -0600 Subject: [PATCH 2496/3180] mesa-x11: build support for dri --- recipes/wip/x11/mesa-x11/recipe.toml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/recipes/wip/x11/mesa-x11/recipe.toml b/recipes/wip/x11/mesa-x11/recipe.toml index 14dc386b..dbb39f3a 100644 --- a/recipes/wip/x11/mesa-x11/recipe.toml +++ b/recipes/wip/x11/mesa-x11/recipe.toml @@ -10,6 +10,8 @@ dependencies = [ "libxau", "libxcb", "libxext", + "libxfixes", + "libxxf86vm", "llvm18-shared", "x11proto", "zlib", @@ -17,7 +19,9 @@ dependencies = [ script = """ DYNAMIC_INIT cookbook_meson \ - -Dglx=xlib \ + -Ddri-drivers-path=/usr/lib/dri \ + -Degl=disabled \ + -Dglx=dri \ -Dllvm=enabled \ -Dplatforms=x11 \ -Dshader-cache=disabled From 709f4aad3ee6722918d203f509c0a535f8f256a2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 May 2025 21:33:48 -0600 Subject: [PATCH 2497/3180] xserver-xorg: build support for dri --- recipes/wip/x11/xserver-xorg/recipe.toml | 2 ++ recipes/wip/x11/xserver-xorg/redox.patch | 27 ++---------------------- 2 files changed, 4 insertions(+), 25 deletions(-) diff --git a/recipes/wip/x11/xserver-xorg/recipe.toml b/recipes/wip/x11/xserver-xorg/recipe.toml index c4269558..8436f7b7 100644 --- a/recipes/wip/x11/xserver-xorg/recipe.toml +++ b/recipes/wip/x11/xserver-xorg/recipe.toml @@ -17,8 +17,10 @@ dependencies = [ "libxcvt", "libxdmcp", "libxext", + "libxfixes", "libxfont2", "libxkbfile", + "libxxf86vm", "mesa-x11", "openssl1", "pixman", diff --git a/recipes/wip/x11/xserver-xorg/redox.patch b/recipes/wip/x11/xserver-xorg/redox.patch index 97b10246..12dd9add 100644 --- a/recipes/wip/x11/xserver-xorg/redox.patch +++ b/recipes/wip/x11/xserver-xorg/redox.patch @@ -1,17 +1,3 @@ -diff -ruwN xorg-server-21.1.16/glx/meson.build source/glx/meson.build ---- xorg-server-21.1.16/glx/meson.build 2025-02-25 11:56:05.000000000 -0700 -+++ source/glx/meson.build 2025-05-06 15:13:57.516784717 -0600 -@@ -13,8 +13,8 @@ - 'glxcmds.c', - 'glxcmdsswap.c', - 'glxext.c', -- 'glxdriswrast.c', -- 'glxdricommon.c', -+ #'glxdriswrast.c', -+ #'glxdricommon.c', - 'glxscreens.c', - 'render2.c', - 'render2swap.c', diff -ruwN xorg-server-21.1.16/hw/xfree86/common/xf86Xinput.c source/hw/xfree86/common/xf86Xinput.c --- xorg-server-21.1.16/hw/xfree86/common/xf86Xinput.c 2025-02-25 11:56:05.000000000 -0700 +++ source/hw/xfree86/common/xf86Xinput.c 2025-05-03 11:28:37.266757877 -0600 @@ -96,16 +82,7 @@ diff -ruwN xorg-server-21.1.16/hw/xfree86/os-support/xf86_OSlib.h source/hw/xfre #include diff -ruwN xorg-server-21.1.16/include/meson.build source/include/meson.build --- xorg-server-21.1.16/include/meson.build 2025-02-25 11:56:05.000000000 -0700 -+++ source/include/meson.build 2025-05-06 15:10:29.262525728 -0600 -@@ -6,7 +6,7 @@ - # convert to the old-style 1.x.y version scheme used up to 1.20.x for backwards compatibility - release = 1 * 10000000 + major * 100000 + minor * 1000 + patch - --dri_dep = dependency('dri', required: build_glx) -+dri_dep = dependency('dri', required: false) - - conf_data = configuration_data() - conf_data.set('_DIX_CONFIG_H_', '1') ++++ source/include/meson.build 2025-05-06 18:15:08.036215875 -0600 @@ -162,7 +162,7 @@ conf_data.set('HAVE_PORT_CREATE', cc.has_function('port_create') ? '1' : false) conf_data.set('HAVE_REALLOCARRAY', cc.has_function('reallocarray', dependencies: libbsd_dep) ? '1' : false) @@ -129,7 +106,7 @@ diff -ruwN xorg-server-21.1.16/include/meson.build source/include/meson.build conf_data.set('DRI3', build_dri3 ? '1' : false) if build_glx - conf_data.set_quoted('DRI_DRIVER_PATH', dri_dep.get_pkgconfig_variable('dridriverdir')) -+ #conf_data.set_quoted('DRI_DRIVER_PATH', dri_dep.get_pkgconfig_variable('dridriverdir')) ++ conf_data.set_quoted('DRI_DRIVER_PATH', '/usr/lib/dri') endif conf_data.set('HAS_SHM', build_mitshm ? '1' : false) conf_data.set('MITSHM', build_mitshm ? '1' : false) From 4cf2620d54629fa4cbe526f1dad10aff17fe5386 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 May 2025 21:35:15 -0600 Subject: [PATCH 2498/3180] mesa-demos-x11: compile with support for dri --- recipes/wip/x11/mesa-demos-x11/recipe.toml | 1 + recipes/wip/x11/mesa-demos-x11/redox.patch | 1 + 2 files changed, 2 insertions(+) diff --git a/recipes/wip/x11/mesa-demos-x11/recipe.toml b/recipes/wip/x11/mesa-demos-x11/recipe.toml index 9d8e99ee..2c997da4 100644 --- a/recipes/wip/x11/mesa-demos-x11/recipe.toml +++ b/recipes/wip/x11/mesa-demos-x11/recipe.toml @@ -11,6 +11,7 @@ dependencies = [ "libxau", "libxcb", "libxext", + "libxxf86vm", "llvm18-shared", "mesa-x11", "mesa-glu-x11", diff --git a/recipes/wip/x11/mesa-demos-x11/redox.patch b/recipes/wip/x11/mesa-demos-x11/redox.patch index cdfa48e6..62b33512 100644 --- a/recipes/wip/x11/mesa-demos-x11/redox.patch +++ b/recipes/wip/x11/mesa-demos-x11/redox.patch @@ -1,3 +1,4 @@ +diff -ruwN mesa-demos-9.0.0/meson.build source/meson.build --- mesa-demos-9.0.0/meson.build 2023-03-22 06:13:43.000000000 -0600 +++ source/meson.build 2025-05-06 15:58:57.523274337 -0600 @@ -99,7 +99,7 @@ From 9c433f4d481d36410fcbc68e3ece1e2de8f69716 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 6 May 2025 21:53:21 -0600 Subject: [PATCH 2499/3180] Merge llvm18-shared and llvm18 into llvm18 --- recipes/dev/llvm18-shared/native.cmake | 2 - recipes/dev/llvm18-shared/recipe.toml | 79 ---------------------- recipes/dev/llvm18/native.cmake | 1 - recipes/dev/llvm18/recipe.toml | 39 +++++++---- recipes/dev/rust/recipe.sh | 2 +- recipes/wip/x11/mesa-demos-x11/recipe.toml | 2 +- recipes/wip/x11/mesa-x11/recipe.toml | 2 +- 7 files changed, 29 insertions(+), 98 deletions(-) delete mode 100644 recipes/dev/llvm18-shared/native.cmake delete mode 100644 recipes/dev/llvm18-shared/recipe.toml diff --git a/recipes/dev/llvm18-shared/native.cmake b/recipes/dev/llvm18-shared/native.cmake deleted file mode 100644 index 4b0abbfa..00000000 --- a/recipes/dev/llvm18-shared/native.cmake +++ /dev/null @@ -1,2 +0,0 @@ -set(CMAKE_C_COMPILER cc) -set(CMAKE_CXX_COMPILER c++) diff --git a/recipes/dev/llvm18-shared/recipe.toml b/recipes/dev/llvm18-shared/recipe.toml deleted file mode 100644 index 751d1a9e..00000000 --- a/recipes/dev/llvm18-shared/recipe.toml +++ /dev/null @@ -1,79 +0,0 @@ -[source] -same_as = "../llvm18" - -[build] -template = "custom" -dependencies = [ - "zlib" -] -script = """ -DYNAMIC_INIT - -cat > CMakeToolchain-x86_64.cmake < CMakeToolchain-x86_64.cmake < Date: Fri, 9 May 2025 10:06:47 -0600 Subject: [PATCH 2500/3180] Go back to using xlib for GLX instead of DRI --- recipes/wip/x11/mesa-x11/recipe.toml | 3 ++- recipes/wip/x11/xserver-xorg/recipe.toml | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/recipes/wip/x11/mesa-x11/recipe.toml b/recipes/wip/x11/mesa-x11/recipe.toml index fceb29d9..dc5ef289 100644 --- a/recipes/wip/x11/mesa-x11/recipe.toml +++ b/recipes/wip/x11/mesa-x11/recipe.toml @@ -18,10 +18,11 @@ dependencies = [ ] script = """ DYNAMIC_INIT +#TODO: use glx=dri cookbook_meson \ -Ddri-drivers-path=/usr/lib/dri \ -Degl=disabled \ - -Dglx=dri \ + -Dglx=xlib \ -Dllvm=enabled \ -Dplatforms=x11 \ -Dshader-cache=disabled diff --git a/recipes/wip/x11/xserver-xorg/recipe.toml b/recipes/wip/x11/xserver-xorg/recipe.toml index 8436f7b7..fc5ff18a 100644 --- a/recipes/wip/x11/xserver-xorg/recipe.toml +++ b/recipes/wip/x11/xserver-xorg/recipe.toml @@ -21,7 +21,7 @@ dependencies = [ "libxfont2", "libxkbfile", "libxxf86vm", - "mesa-x11", + #TODO: used for glx, which is currently broken: "mesa-x11", "openssl1", "pixman", "x11proto", @@ -33,6 +33,7 @@ script = """ DYNAMIC_INIT cookbook_meson \ -Dglamor=false \ + -Dglx=false \ -Dint10=false \ -Dpciaccess=false \ -Dsecure-rpc=false \ From 44e8826f23844273fbef4768338c164e9221940b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 9 May 2025 10:19:26 -0600 Subject: [PATCH 2501/3180] Re-enable GLX using DRI (much faster) --- recipes/wip/x11/mesa-x11/recipe.toml | 3 +-- recipes/wip/x11/xserver-xorg/recipe.toml | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/recipes/wip/x11/mesa-x11/recipe.toml b/recipes/wip/x11/mesa-x11/recipe.toml index dc5ef289..fceb29d9 100644 --- a/recipes/wip/x11/mesa-x11/recipe.toml +++ b/recipes/wip/x11/mesa-x11/recipe.toml @@ -18,11 +18,10 @@ dependencies = [ ] script = """ DYNAMIC_INIT -#TODO: use glx=dri cookbook_meson \ -Ddri-drivers-path=/usr/lib/dri \ -Degl=disabled \ - -Dglx=xlib \ + -Dglx=dri \ -Dllvm=enabled \ -Dplatforms=x11 \ -Dshader-cache=disabled diff --git a/recipes/wip/x11/xserver-xorg/recipe.toml b/recipes/wip/x11/xserver-xorg/recipe.toml index fc5ff18a..8436f7b7 100644 --- a/recipes/wip/x11/xserver-xorg/recipe.toml +++ b/recipes/wip/x11/xserver-xorg/recipe.toml @@ -21,7 +21,7 @@ dependencies = [ "libxfont2", "libxkbfile", "libxxf86vm", - #TODO: used for glx, which is currently broken: "mesa-x11", + "mesa-x11", "openssl1", "pixman", "x11proto", @@ -33,7 +33,6 @@ script = """ DYNAMIC_INIT cookbook_meson \ -Dglamor=false \ - -Dglx=false \ -Dint10=false \ -Dpciaccess=false \ -Dsecure-rpc=false \ From 95eee60ee686853ee81758dcbf975f2dfaf1ea1d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 9 May 2025 20:49:23 -0600 Subject: [PATCH 2502/3180] xserver-xorg-video-dummy: only sync when there is damage --- .../x11/xserver-xorg-video-dummy/redox.patch | 136 +++++++++++------- 1 file changed, 87 insertions(+), 49 deletions(-) diff --git a/recipes/wip/x11/xserver-xorg-video-dummy/redox.patch b/recipes/wip/x11/xserver-xorg-video-dummy/redox.patch index 8df91727..83991188 100644 --- a/recipes/wip/x11/xserver-xorg-video-dummy/redox.patch +++ b/recipes/wip/x11/xserver-xorg-video-dummy/redox.patch @@ -1,6 +1,6 @@ diff -ruwN xf86-video-dummy-0.4.1/src/dummy_driver.c source/src/dummy_driver.c --- xf86-video-dummy-0.4.1/src/dummy_driver.c 2023-05-07 14:27:44.000000000 -0600 -+++ source/src/dummy_driver.c 2025-05-05 17:23:44.770853907 -0600 ++++ source/src/dummy_driver.c 2025-05-09 20:45:55.420661223 -0600 @@ -39,6 +39,7 @@ /* These need to be checked */ #include @@ -9,16 +9,15 @@ diff -ruwN xf86-video-dummy-0.4.1/src/dummy_driver.c source/src/dummy_driver.c #include "scrnintstr.h" #include "servermd.h" -@@ -51,6 +52,8 @@ +@@ -51,6 +52,7 @@ static Bool DUMMYEnterVT(VT_FUNC_ARGS_DECL); static void DUMMYLeaveVT(VT_FUNC_ARGS_DECL); static Bool DUMMYCloseScreen(CLOSE_SCREEN_ARGS_DECL); +static void DUMMYBlockHandler(ScreenPtr pScreen, void *timeout); -+static void DUMMYWakeupHandler(ScreenPtr pScreen, int result); static Bool DUMMYCreateWindow(WindowPtr pWin); static void DUMMYFreeScreen(FREE_SCREEN_ARGS_DECL); static ModeStatus DUMMYValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, -@@ -768,6 +771,64 @@ +@@ -768,6 +770,97 @@ static ScrnInfoPtr DUMMYScrn; /* static-globalize it */ @@ -79,11 +78,44 @@ diff -ruwN xf86-video-dummy-0.4.1/src/dummy_driver.c source/src/dummy_driver.c + + orb_events_destroy(event_iter); +} ++ ++static Bool ++CreateScreenResources(ScreenPtr pScreen) ++{ ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); ++ DUMMYPtr dPtr = DUMMYPTR(pScrn); ++ PixmapPtr rootPixmap; ++ Bool ret; ++ ++ pScreen->CreateScreenResources = dPtr->CreateScreenResources; ++ ret = pScreen->CreateScreenResources(pScreen); ++ pScreen->CreateScreenResources = CreateScreenResources; ++ ++ if (!ret) { ++ return FALSE; ++ } ++ ++ rootPixmap = pScreen->GetScreenPixmap(pScreen); ++ ++ dPtr->damage = DamageCreate(NULL, NULL, DamageReportNone, TRUE, ++ pScreen, rootPixmap); ++ if (dPtr->damage) { ++ DamageRegister(&rootPixmap->drawable, dPtr->damage); ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Damage tracking initialized\n"); ++ } ++ else { ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Failed to create screen damage record\n"); ++ return FALSE; ++ } ++ ++ return TRUE; ++} ++ + /* Mandatory */ static Bool DUMMYScreenInit(SCREEN_INIT_ARGS_DECL) -@@ -776,7 +837,6 @@ +@@ -776,7 +869,6 @@ DUMMYPtr dPtr; int ret; VisualPtr visual; @@ -91,7 +123,7 @@ diff -ruwN xf86-video-dummy-0.4.1/src/dummy_driver.c source/src/dummy_driver.c /* * we need to get the ScrnInfoRec for this screen, so let's allocate -@@ -786,9 +846,22 @@ +@@ -786,9 +878,22 @@ dPtr = DUMMYPTR(pScrn); DUMMYScrn = pScrn; @@ -115,7 +147,7 @@ diff -ruwN xf86-video-dummy-0.4.1/src/dummy_driver.c source/src/dummy_driver.c /* * Reset visual list. -@@ -800,12 +873,10 @@ +@@ -800,12 +905,10 @@ if (!miSetVisualTypes(pScrn->depth, miGetDefaultVisualMask(pScrn->depth), pScrn->rgbBits, pScrn->defaultVisual)) { @@ -128,7 +160,7 @@ diff -ruwN xf86-video-dummy-0.4.1/src/dummy_driver.c source/src/dummy_driver.c return FALSE; } -@@ -813,7 +884,7 @@ +@@ -813,7 +916,7 @@ * Call the framebuffer layer's ScreenInit function, and fill in other * pScreen fields. */ @@ -137,47 +169,39 @@ diff -ruwN xf86-video-dummy-0.4.1/src/dummy_driver.c source/src/dummy_driver.c pScrn->virtualX, pScrn->virtualY, pScrn->xDpi, pScrn->yDpi, pScrn->displayWidth, pScrn->bitsPerPixel); -@@ -938,11 +1009,18 @@ +@@ -838,6 +941,10 @@ + /* must be after RGB ordering fixed */ + fbPictureInit(pScreen, 0, 0); - pScreen->SaveScreen = DUMMYSaveScreen; ++ /* Wrap the current CreateScreenResources function */ ++ dPtr->CreateScreenResources = pScreen->CreateScreenResources; ++ pScreen->CreateScreenResources = CreateScreenResources; ++ + xf86SetBlackWhitePixels(pScreen); -- - /* Wrap the current CloseScreen function */ + /* initialize XRANDR */ +@@ -943,6 +1050,10 @@ dPtr->CloseScreen = pScreen->CloseScreen; pScreen->CloseScreen = DUMMYCloseScreen; + /* Wrap the current BlockHandler function */ + dPtr->BlockHandler = pScreen->BlockHandler; + pScreen->BlockHandler = DUMMYBlockHandler; -+ -+ /* Wrap the current WakeupHandler function */ -+ dPtr->WakeupHandler = pScreen->WakeupHandler; -+ pScreen->WakeupHandler = DUMMYWakeupHandler; + /* Wrap the current CreateWindow function */ dPtr->CreateWindow = pScreen->CreateWindow; pScreen->CreateWindow = DUMMYCreateWindow; -@@ -959,6 +1037,7 @@ - Bool - DUMMYSwitchMode(SWITCH_MODE_ARGS_DECL) - { -+ printf("SwitchMode\n"); - return TRUE; - } - -@@ -966,6 +1045,7 @@ - void - DUMMYAdjustFrame(ADJUST_FRAME_ARGS_DECL) - { -+ printf("AdjustFrame\n"); - } - - /* Mandatory */ -@@ -975,7 +1055,13 @@ +@@ -975,11 +1086,26 @@ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); DUMMYPtr dPtr = DUMMYPTR(pScrn); - free(pScreen->GetScreenPixmap(pScreen)->devPrivate.ptr); ++ if (dPtr->damage) { ++ DamageUnregister(dPtr->damage); ++ DamageDestroy(dPtr->damage); ++ dPtr->damage = NULL; ++ } ++ + if (dPtr->orb_window) { + RemoveNotifyFd(orb_window_fd(dPtr->orb_window)); + @@ -188,7 +212,14 @@ diff -ruwN xf86-video-dummy-0.4.1/src/dummy_driver.c source/src/dummy_driver.c if (dPtr->CursorInfo) xf86DestroyCursorInfoRec(dPtr->CursorInfo); -@@ -1009,6 +1095,32 @@ + ++ pScreen->CreateScreenResources = dPtr->CreateScreenResources; ++ pScreen->BlockHandler = dPtr->BlockHandler; ++ + pScrn->vtSema = FALSE; + pScreen->CloseScreen = dPtr->CloseScreen; + return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS); +@@ -1009,6 +1135,31 @@ Atom VFB_PROP = 0; #define VFB_PROP_NAME "VFB_IDENT" @@ -201,29 +232,28 @@ diff -ruwN xf86-video-dummy-0.4.1/src/dummy_driver.c source/src/dummy_driver.c + dPtr->BlockHandler = pScreen->BlockHandler; + pScreen->BlockHandler = DUMMYBlockHandler; + ++ if (dPtr->damage) { ++ RegionPtr dirty = DamageRegion(dPtr->damage); ++ if (RegionNil(dirty)) { ++ // Do not sync if damage empty ++ return; ++ } ++ DamageEmpty(dPtr->damage); ++ } ++ + if (dPtr->orb_window) { ++ //TODO: use damage region? + //printf("orb_window_sync %p\n", dPtr->orb_window); -+ //TODO: make syncs less frequent + orb_window_sync(dPtr->orb_window); + } +} -+ -+static void DUMMYWakeupHandler(ScreenPtr pScreen, int result) { -+ DUMMYPtr dPtr = DUMMYPTR(DUMMYScrn); -+ -+ //printf("WakeupHandler %p %d\n", pScreen, result); -+ pScreen->WakeupHandler = dPtr->WakeupHandler; -+ pScreen->WakeupHandler(pScreen, result); -+ dPtr->WakeupHandler = pScreen->WakeupHandler; -+ pScreen->WakeupHandler = DUMMYWakeupHandler; -+} + static Bool DUMMYCreateWindow(WindowPtr pWin) { diff -ruwN xf86-video-dummy-0.4.1/src/dummy.h source/src/dummy.h --- xf86-video-dummy-0.4.1/src/dummy.h 2023-05-07 14:27:44.000000000 -0600 -+++ source/src/dummy.h 2025-05-05 15:57:13.611157665 -0600 ++++ source/src/dummy.h 2025-05-09 20:41:33.547464718 -0600 @@ -4,6 +4,7 @@ #include "xf86_OSproc.h" @@ -243,20 +273,28 @@ diff -ruwN xf86-video-dummy-0.4.1/src/dummy.h source/src/dummy.h /* Supported chipsets */ typedef enum { -@@ -52,6 +55,8 @@ +@@ -44,6 +47,7 @@ + OptionInfoPtr Options; + Bool swCursor; + /* proc pointer */ ++ CreateScreenResourcesProcPtr CreateScreenResources; + CloseScreenProcPtr CloseScreen; + xf86CursorInfoPtr CursorInfo; + +@@ -52,6 +56,7 @@ int cursorFG, cursorBG; dummy_colors colors[1024]; + void (*BlockHandler)(ScreenPtr, void*) ; /* wrapped BlockHandler */ -+ void (*WakeupHandler)(ScreenPtr, int) ; /* wrapped WakeupHandler */ Bool (*CreateWindow)(WindowPtr) ; /* wrapped CreateWindow */ Bool prop; /* XRANDR support begin */ -@@ -60,6 +65,8 @@ +@@ -60,6 +65,9 @@ struct _xf86Output *paOutputs[DUMMY_MAX_SCREENS]; int connected_outputs; /* XRANDR support end */ + ++ DamagePtr damage; + void *orb_window; } DUMMYRec, *DUMMYPtr; From a0453ca21708ecbd7a5866744f37c2d4ac96905a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 10 May 2025 08:35:37 -0600 Subject: [PATCH 2503/3180] libgpg-error: update and fix --- .../wip/libs/other/libgpg-error/recipe.toml | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/recipes/wip/libs/other/libgpg-error/recipe.toml b/recipes/wip/libs/other/libgpg-error/recipe.toml index ee65c313..e3a6f895 100644 --- a/recipes/wip/libs/other/libgpg-error/recipe.toml +++ b/recipes/wip/libs/other/libgpg-error/recipe.toml @@ -1,5 +1,24 @@ -#TODO compilation error [source] -tar = "https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.47.tar.bz2" +tar = "https://gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.55.tar.bz2" +blake3 = "6c363dd8c6bcf2601dd5ff3b11fa2f699baa2aae40de2acd92461af0fd8178f0" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + [build] -template = "configure" +template = "custom" +script = """ +DYNAMIC_INIT +#TODO: this modifies the source +env \ + LOCK_ABI_VERSION=1 \ + host="${TARGET}" \ + ac_ext=c \ + ac_objext=o \ + AWK="$(which awk)" \ + "${COOKBOOK_SOURCE}/src/gen-lock-obj.sh" \ + > \ + "${COOKBOOK_SOURCE}/src/syscfg/lock-obj-pub.${TARGET}.h" +cookbook_configure --enable-threads=posix +""" From 21120483cfef46d9c8acf00a7ba91b525c8e1421 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 10 May 2025 08:44:00 -0600 Subject: [PATCH 2504/3180] libgcrypt: update and fix --- recipes/wip/libs/other/libgcrypt/recipe.toml | 18 +++++++++++++++--- recipes/wip/libs/other/libgcrypt/redox.patch | 20 ++++++++++++++++++++ 2 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 recipes/wip/libs/other/libgcrypt/redox.patch diff --git a/recipes/wip/libs/other/libgcrypt/recipe.toml b/recipes/wip/libs/other/libgcrypt/recipe.toml index 441fc1b6..c02dd88d 100644 --- a/recipes/wip/libs/other/libgcrypt/recipe.toml +++ b/recipes/wip/libs/other/libgcrypt/recipe.toml @@ -1,5 +1,17 @@ -#TODO compilation error [source] -tar = "https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.10.2.tar.bz2" +tar = "https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.11.1.tar.bz2" +blake3 = "68844e12b92960d66c4ce85a4c3db1df8377b232980f1218b4c5d904e9c02511" +patches = ["redox.patch"] +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + [build] -template = "configure" \ No newline at end of file +dependencies = ["libgpg-error"] +template = "custom" +script = """ +DYNAMIC_INIT +export GPGRT_CONFIG="${COOKBOOK_SYSROOT}/usr/bin/gpgrt-config" +cookbook_configure +""" diff --git a/recipes/wip/libs/other/libgcrypt/redox.patch b/recipes/wip/libs/other/libgcrypt/redox.patch new file mode 100644 index 00000000..4ac898dc --- /dev/null +++ b/recipes/wip/libs/other/libgcrypt/redox.patch @@ -0,0 +1,20 @@ +--- libgcrypt-1.11.1/tests/stopwatch.h 2025-03-17 03:55:24.000000000 -0600 ++++ source/tests/stopwatch.h 2025-05-10 08:42:52.113921935 -0600 +@@ -45,6 +45,8 @@ + &started_at.creation_time, &started_at.exit_time, + &started_at.kernel_time, &started_at.user_time); + stopped_at = started_at; ++#elif defined(__redox__) ++ //TODO: times on redox + #else + struct tms tmp; + +@@ -60,6 +62,8 @@ + GetProcessTimes (GetCurrentProcess (), + &stopped_at.creation_time, &stopped_at.exit_time, + &stopped_at.kernel_time, &stopped_at.user_time); ++#elif defined(__redox__) ++ //TODO: times on redox + #else + struct tms tmp; + From db2e28282856ea8ed35aca502d74a0a06fa8a3f0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 10 May 2025 12:57:32 -0600 Subject: [PATCH 2505/3180] Add libtasn1 --- recipes/wip/libs/other/libtasn1/recipe.toml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 recipes/wip/libs/other/libtasn1/recipe.toml diff --git a/recipes/wip/libs/other/libtasn1/recipe.toml b/recipes/wip/libs/other/libtasn1/recipe.toml new file mode 100644 index 00000000..2dad5224 --- /dev/null +++ b/recipes/wip/libs/other/libtasn1/recipe.toml @@ -0,0 +1,14 @@ +[source] +tar = "https://ftp.gnu.org/gnu/libtasn1/libtasn1-4.20.0.tar.gz" +blake3 = "374103da2b2ac47e18b57cb5d1d41f7e42f3725c269cf35fba8e4717f0c392b5" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From 8f2bffb63bfcbc906e76d3d9f79b7315ad182b09 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 10 May 2025 12:58:22 -0600 Subject: [PATCH 2506/3180] Improve cmake template --- src/bin/cook.rs | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index bb26769a..19601d54 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -797,26 +797,31 @@ function cookbook_configure { COOKBOOK_CMAKE="cmake" COOKBOOK_NINJA="ninja" function cookbook_cmake { - cat > CMakeToolchain-x86_64.cmake < cross_file.cmake < Date: Sat, 10 May 2025 13:08:46 -0600 Subject: [PATCH 2507/3180] harfbuzz: compile with ICU --- recipes/libs/harfbuzz/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/libs/harfbuzz/recipe.toml b/recipes/libs/harfbuzz/recipe.toml index 219a07db..33c03043 100644 --- a/recipes/libs/harfbuzz/recipe.toml +++ b/recipes/libs/harfbuzz/recipe.toml @@ -10,6 +10,7 @@ dependencies = [ "glib", "libffi", "libiconv", + "libicu", "libpng", "pcre2", "zlib" From e2dcbe518df51cc8fd0ebdb161426d1079cb65e2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 10 May 2025 13:18:47 -0600 Subject: [PATCH 2508/3180] libgif: update and fix --- recipes/wip/libs/video/libgif/recipe.toml | 13 +++++++++++-- recipes/wip/libs/video/libgif/redox.patch | 12 ++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 recipes/wip/libs/video/libgif/redox.patch diff --git a/recipes/wip/libs/video/libgif/recipe.toml b/recipes/wip/libs/video/libgif/recipe.toml index b7352080..aebee7b7 100644 --- a/recipes/wip/libs/video/libgif/recipe.toml +++ b/recipes/wip/libs/video/libgif/recipe.toml @@ -1,5 +1,14 @@ -#TODO missing script for building [source] -tar = "https://sourceforge.net/projects/giflib/files/giflib-5.2.1.tar.gz/download" +tar = "https://sourceforge.net/projects/giflib/files/giflib-5.2.2.tar.gz/download" +blake3 = "025cd79ba2d524c24b33a3d2750c146c6823adf96e1dbcc380ca6210bc7058a8" +patches = ["redox.patch"] + [build] template = "custom" +script = """ +DYNAMIC_INIT +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ +"${COOKBOOK_MAKE}" libgif.so libgif.a -j "${COOKBOOK_MAKE_JOBS}" +"${COOKBOOK_MAKE}" install-include install-lib DESTDIR="${COOKBOOK_STAGE}" +""" + diff --git a/recipes/wip/libs/video/libgif/redox.patch b/recipes/wip/libs/video/libgif/redox.patch new file mode 100644 index 00000000..b58cfcdb --- /dev/null +++ b/recipes/wip/libs/video/libgif/redox.patch @@ -0,0 +1,12 @@ +diff -ruwN giflib-5.2.1/Makefile source/Makefile +--- giflib-5.2.1/Makefile 2019-06-24 10:08:57.000000000 -0600 ++++ source/Makefile 2025-05-10 13:15:44.301303744 -0600 +@@ -14,7 +14,7 @@ + TAR = tar + INSTALL = install + +-PREFIX = /usr/local ++PREFIX = /usr + BINDIR = $(PREFIX)/bin + INCDIR = $(PREFIX)/include + LIBDIR = $(PREFIX)/lib From f6e3bcce4e9b8603880750b4fd92a40ee9ade3a5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 10 May 2025 13:20:42 -0600 Subject: [PATCH 2509/3180] libwebp: update and fix --- recipes/wip/libs/image/libwebp/recipe.toml | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/recipes/wip/libs/image/libwebp/recipe.toml b/recipes/wip/libs/image/libwebp/recipe.toml index f53d70b7..5578ebc9 100644 --- a/recipes/wip/libs/image/libwebp/recipe.toml +++ b/recipes/wip/libs/image/libwebp/recipe.toml @@ -1,11 +1,20 @@ -#TODO make libgif work [source] -tar = "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.3.2.tar.gz" +tar = "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.5.0.tar.gz" +blake3 = "8272270920a317b854b059e86c320dbdb5a2032937072bbfd5f3304d601a92cb" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + [build] -template = "configure" dependencies = [ + "libgif", "libjpeg", "libpng", "libtiff", - "libgif", ] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From b28d154db95c8792219a03770634a7fcb14fb39a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 10 May 2025 13:41:04 -0600 Subject: [PATCH 2510/3180] webkitgtk3: add dependencies --- recipes/wip/libs/other/webkitgtk3/recipe.toml | 56 +++++++++++++------ 1 file changed, 38 insertions(+), 18 deletions(-) diff --git a/recipes/wip/libs/other/webkitgtk3/recipe.toml b/recipes/wip/libs/other/webkitgtk3/recipe.toml index acb9546c..4d951220 100644 --- a/recipes/wip/libs/other/webkitgtk3/recipe.toml +++ b/recipes/wip/libs/other/webkitgtk3/recipe.toml @@ -2,39 +2,59 @@ #TODO port to orbital #TODO missing dependencies, see https://archlinux.org/packages/extra/x86_64/webkitgtk-6.0/ [source] -tar = "https://webkitgtk.org/releases/webkitgtk-2.42.2.tar.xz" +tar = "https://webkitgtk.org/releases/webkitgtk-2.49.1.tar.xz" +blake3 = "7f04acb2f909ad334fc623afb297ebca1d5a5005bda1682946fb37e044e45ecb" + [build] template = "custom" dependencies = [ - "gtk3", + "atk", "cairo", + "expat", "fontconfig", "freetype2", + "fribidi", + "gettext", + "gdk-pixbuf", "glib", "gstreamer", + "gtk3", "harfbuzz", - "libavif", - "mesa", + #TODO: "libavif", "libepoxy", + "libffi", + "libicu", + "libiconv", "libgcrypt", + "libjpeg", "libpng", + "libpthread-stubs", + "libtasn1", "libwebp", + "libx11", + "libxau", + "libxext", + "libxcb", + "libxfixes", + "libxi", + "libxrandr", + "libxrender", "libxml2", - "zlib", + "mesa-x11", + "pango", + "pcre2", + "pixman", + "shared-mime-info", "sqlite3", + "x11proto", + "xextproto", + "zlib", ] script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure +DYNAMIC_INIT +cookbook_cmake \ + -DPORT=GTK \ + -DLibGcrypt_GpgError_LIBRARY=lgcrypt \ + -DLibGcrypt_GpgError_INCLUDE_DIR="${COOKBOOK_SYSROOT}/usr/include" \ + -DUSE_GTK4=OFF """ From 0173ddf4d76601189ffe2b5c13fc6175b982d396 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 10 May 2025 13:41:28 -0600 Subject: [PATCH 2511/3180] gtk3: do not require atk-bridge-2.0 in pkgconfig --- recipes/wip/libs/gtk/gtk3/redox.patch | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/recipes/wip/libs/gtk/gtk3/redox.patch b/recipes/wip/libs/gtk/gtk3/redox.patch index cca54ded..c8aa46d1 100644 --- a/recipes/wip/libs/gtk/gtk3/redox.patch +++ b/recipes/wip/libs/gtk/gtk3/redox.patch @@ -30,7 +30,7 @@ diff -ruwN gtk+-3.24.43/gtk/a11y/gtkaccessibility.c source/gtk/a11y/gtkaccessibi diff -ruwN gtk+-3.24.43/meson.build source/meson.build --- gtk+-3.24.43/meson.build 2024-07-10 11:03:14.000000000 -0600 -+++ source/meson.build 2025-05-04 18:36:13.187091118 -0600 ++++ source/meson.build 2025-05-10 13:39:34.329344669 -0600 @@ -565,7 +565,7 @@ xfixes_dep = dependency('xfixes', required: false) xcomposite_dep = dependency('xcomposite', required: false) @@ -40,3 +40,12 @@ diff -ruwN gtk+-3.24.43/meson.build source/meson.build backend_immodules += ['xim'] +@@ -584,7 +584,7 @@ + x11_pkgs += ['xdamage'] + endif + +- atk_pkgs += ['atk-bridge-2.0'] ++ #atk_pkgs += ['atk-bridge-2.0'] + + cdata.set('HAVE_XDAMAGE', xdamage_dep.found() ? 1 : false) + cdata.set('HAVE_XCURSOR', xcursor_dep.found() ? 1 : false) From db8312871b3b652f7b1d429200a543be225166dd Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 10 May 2025 17:34:35 -0600 Subject: [PATCH 2512/3180] sqlite3: update and compile dynamically --- recipes/wip/db/sqlite3/recipe.toml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/recipes/wip/db/sqlite3/recipe.toml b/recipes/wip/db/sqlite3/recipe.toml index 7fb41b0a..ae282273 100644 --- a/recipes/wip/db/sqlite3/recipe.toml +++ b/recipes/wip/db/sqlite3/recipe.toml @@ -5,11 +5,16 @@ #relibc getgroups(65536, 0x14920): not implemented #Runtime error near line 1: disk I/O error (10) [source] -tar = "https://www.sqlite.org/2024/sqlite-autoconf-3450000.tar.gz" -#blake3 = "44bc75a40d32afa71cffe149f766857c3cc41dea261b1e4645fde5f73f4c9268" +tar = "https://sqlite.org/2025/sqlite-autoconf-3490200.tar.gz" +blake3 = "96e071dc4f964311882334e927f017d8383915b1b140adcf308957dff213aa8c" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + [build] template = "custom" script = """ -export CPPFLAGS="${CPPFLAGS} -D__minux=1 -DSQLITE_DEFAULT_UNIX_VFS='\\"unix-none\\"'" +DYNAMIC_INIT cookbook_configure """ From 33c7739baa0bffe1f62edf6e5c30ff4d8efa81fc Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 10 May 2025 17:38:43 -0600 Subject: [PATCH 2513/3180] libpsl: compile dynamically --- recipes/libs/libpsl/recipe.toml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/recipes/libs/libpsl/recipe.toml b/recipes/libs/libpsl/recipe.toml index ae522669..cbc48788 100644 --- a/recipes/libs/libpsl/recipe.toml +++ b/recipes/libs/libpsl/recipe.toml @@ -1,6 +1,14 @@ [source] tar = "https://github.com/rockdaboot/libpsl/releases/download/0.21.5/libpsl-0.21.5.tar.lz" blake3 = "91318b7b876b12ff4649b7a0d6f6ed4ab1ab44f48a49508c8978ab7b4ccf3298" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" [build] -template = "configure" +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From c9dbbe077c5e873f3d199a0ba2aa0fd03fd0dd89 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 10 May 2025 17:39:11 -0600 Subject: [PATCH 2514/3180] libsoup: update and fix --- recipes/wip/libs/other/libsoup/recipe.toml | 23 ++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/recipes/wip/libs/other/libsoup/recipe.toml b/recipes/wip/libs/other/libsoup/recipe.toml index 9dfd307f..0165f345 100644 --- a/recipes/wip/libs/other/libsoup/recipe.toml +++ b/recipes/wip/libs/other/libsoup/recipe.toml @@ -1,5 +1,24 @@ -#TODO missing script for Meson, lacking build instructions [source] -tar = "https://download.gnome.org/sources/libsoup/3.4/libsoup-3.4.4.tar.xz" +tar = "https://download.gnome.org/sources/libsoup/3.6/libsoup-3.6.5.tar.xz" +blake3 = "9e5214dfb310ac1bbf8ceb85724f2c79a1d5c94382f306080a6cdea47230e960" + [build] +dependencies = [ + "gettext", + "glib", + "libffi", + "libiconv", + "libpsl", + "nghttp2", + "pcre2", + "sqlite3", + "zlib", +] template = "custom" +script = """ +DYNAMIC_INIT +cookbook_meson \ + -Dsysprof=disabled \ + -Dtests=false \ + -Dtls_check=false +""" From 6a92383eccbd3733e8fa869360a0d4dff4803921 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 10 May 2025 17:50:58 -0600 Subject: [PATCH 2515/3180] libxslt: update and fix --- recipes/wip/libs/other/libxslt/recipe.toml | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/recipes/wip/libs/other/libxslt/recipe.toml b/recipes/wip/libs/other/libxslt/recipe.toml index 272d5c53..b8458e0d 100644 --- a/recipes/wip/libs/other/libxslt/recipe.toml +++ b/recipes/wip/libs/other/libxslt/recipe.toml @@ -1,5 +1,20 @@ -#TODO require Python 3.10 [source] -tar = "https://download.gnome.org/sources/libxslt/1.1/libxslt-1.1.38.tar.xz" +tar = "https://download.gnome.org/sources/libxslt/1.1/libxslt-1.1.43.tar.xz" +blake3 = "6c529acc02344fe48377810debadaee8eb0511a5553a8b7bea685d5282ab00cb" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + [build] -template = "configure" +dependencies = [ + "libxml2", + "xz", + "zlib", +] +template = "custom" +script = """ +DYNAMIC_INIT +export CFLAGS="-llzma -lz" +cookbook_configure --without-python +""" From dda6166d4e02c0ab104bf766b2b189d85624efcb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 10 May 2025 20:51:15 -0600 Subject: [PATCH 2516/3180] libjpeg: update --- recipes/libs/libjpeg/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/libs/libjpeg/recipe.toml b/recipes/libs/libjpeg/recipe.toml index 96e885d5..15c71d0e 100644 --- a/recipes/libs/libjpeg/recipe.toml +++ b/recipes/libs/libjpeg/recipe.toml @@ -1,6 +1,6 @@ [source] -tar = "https://ijg.org/files/jpegsrc.v9e.tar.gz" -blake3 = "f0d6072e15de609397cbd8428758d7054dd921dc448018111e3822b17bcbcc5d" +tar = "https://ijg.org/files/jpegsrc.v9f.tar.gz" +blake3 = "ffd81637231d3ab2008d092d16af3bd3bd695fb0e284bc9de64d06e3ed431824" script = """ DYNAMIC_INIT autotools_recursive_regenerate From 4228bd0d69ad8281e563fa539cb287fd42644680 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 10 May 2025 20:58:38 -0600 Subject: [PATCH 2517/3180] Fix cmake template and update libjpeg-turbo recipe --- .../wip/libs/image/libjpeg-turbo/recipe.toml | 20 +++++-------------- src/bin/cook.rs | 10 +++++----- 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/recipes/wip/libs/image/libjpeg-turbo/recipe.toml b/recipes/wip/libs/image/libjpeg-turbo/recipe.toml index 3035d42a..7b89d807 100644 --- a/recipes/wip/libs/image/libjpeg-turbo/recipe.toml +++ b/recipes/wip/libs/image/libjpeg-turbo/recipe.toml @@ -1,20 +1,10 @@ -#TODO maybe incomplete script, see https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/BUILDING.md#build-procedure [source] -tar = "https://sourceforge.net/projects/libjpeg-turbo/files/3.0.1/libjpeg-turbo-3.0.1.tar.gz" +tar = "https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/3.1.0/libjpeg-turbo-3.1.0.tar.gz" +blake3 = "3efc14da55c56fc0a6a50f109d9e1ee8a91f5ae7dd17a21d3aebe04a65f3ee96" + [build] template = "custom" script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure +DYNAMIC_INIT +cookbook_cmake """ diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 19601d54..c0452aea 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -805,11 +805,6 @@ set(CMAKE_FIND_ROOT_PATH ${COOKBOOK_SYSROOT}) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -set(CMAKE_INSTALL_INCLUDEDIR include) -set(CMAKE_INSTALL_LIBDIR lib) -set(CMAKE_INSTALL_OLDINCLUDEDIR /include) -set(CMAKE_INSTALL_PREFIX /usr) -set(CMAKE_INSTALL_SBINDIR bin) set(CMAKE_PLATFORM_USES_PATH_WHEN_NO_SONAME 1) set(CMAKE_PREFIX_PATH, ${COOKBOOK_SYSROOT}) set(CMAKE_RANLIB ${TARGET}-ranlib) @@ -821,6 +816,11 @@ EOF "${COOKBOOK_CMAKE}" "${COOKBOOK_SOURCE}" \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_CROSSCOMPILING=True \ + -DCMAKE_INSTALL_INCLUDEDIR=include \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DCMAKE_INSTALL_OLDINCLUDEDIR=/include \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_SBINDIR=bin \ -DCMAKE_TOOLCHAIN_FILE=cross_file.cmake \ -DBUILD_SHARED_LIBS=True \ -DENABLE_STATIC=False \ From c1547ab0c9f2838eebd0554530ce648115a91989 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 11 May 2025 14:34:08 -0600 Subject: [PATCH 2518/3180] webkitgtk3: make it further through build --- recipes/wip/libs/other/webkitgtk3/recipe.toml | 44 +- recipes/wip/libs/other/webkitgtk3/redox.patch | 417 ++++++++++++++++++ 2 files changed, 451 insertions(+), 10 deletions(-) create mode 100644 recipes/wip/libs/other/webkitgtk3/redox.patch diff --git a/recipes/wip/libs/other/webkitgtk3/recipe.toml b/recipes/wip/libs/other/webkitgtk3/recipe.toml index 4d951220..1d9b97cc 100644 --- a/recipes/wip/libs/other/webkitgtk3/recipe.toml +++ b/recipes/wip/libs/other/webkitgtk3/recipe.toml @@ -4,6 +4,7 @@ [source] tar = "https://webkitgtk.org/releases/webkitgtk-2.49.1.tar.xz" blake3 = "7f04acb2f909ad334fc623afb297ebca1d5a5005bda1682946fb37e044e45ecb" +patches = ["redox.patch"] [build] template = "custom" @@ -14,33 +15,37 @@ dependencies = [ "fontconfig", "freetype2", "fribidi", - "gettext", "gdk-pixbuf", + "gettext", "glib", "gstreamer", "gtk3", "harfbuzz", - #TODO: "libavif", "libepoxy", "libffi", - "libicu", - "libiconv", "libgcrypt", - "libjpeg", + "libgpg-error", + "libiconv", + "libicu", + "libjpeg-turbo", "libpng", + "libpsl", "libpthread-stubs", + "libsoup", "libtasn1", "libwebp", "libx11", "libxau", - "libxext", "libxcb", + "libxext", "libxfixes", "libxi", + "libxml2", "libxrandr", "libxrender", - "libxml2", + "libxslt", "mesa-x11", + "nghttp2", "pango", "pcre2", "pixman", @@ -48,13 +53,32 @@ dependencies = [ "sqlite3", "x11proto", "xextproto", + "xz", "zlib", ] script = """ DYNAMIC_INIT +#TODO: enable more features cookbook_cmake \ + -DCMAKE_CXX_STANDARD_LIBRARIES="-lintl -lgmodule-2.0 -lpsl -lnghttp2 -lffi -liconv -lpcre2-8" \ + -DENABLE_GAMEPAD=OFF \ + -DENABLE_INTROSPECTION=OFF \ + -DENABLE_JOURNALD_LOG=OFF \ + -DENABLE_SPEECH_SYNTHESIS=OFF \ + -DENABLE_SPELLCHECK=OFF \ -DPORT=GTK \ - -DLibGcrypt_GpgError_LIBRARY=lgcrypt \ - -DLibGcrypt_GpgError_INCLUDE_DIR="${COOKBOOK_SYSROOT}/usr/include" \ - -DUSE_GTK4=OFF + -DUNIX=1 \ + -DUSE_AVIF=OFF \ + -DUSE_GSTREAMER_GL=OFF \ + -DUSE_GTK4=OFF \ + -DUSE_JPEGXL=OFF \ + -DUSE_LCMS=OFF \ + -DUSE_LIBBACKTRACE=OFF \ + -DUSE_LIBDRM=OFF \ + -DUSE_LIBHYPHEN=OFF \ + -DUSE_LIBSECRET=OFF \ + -DUSE_SKIA=OFF \ + -DUSE_SYSPROF_CAPTURE=OFF \ + -DUSE_SYSTEM_SYSPROF_CAPTURE=OFF \ + -DUSE_WOFF2=OFF """ diff --git a/recipes/wip/libs/other/webkitgtk3/redox.patch b/recipes/wip/libs/other/webkitgtk3/redox.patch new file mode 100644 index 00000000..5e7323e6 --- /dev/null +++ b/recipes/wip/libs/other/webkitgtk3/redox.patch @@ -0,0 +1,417 @@ +diff -ruwN webkitgtk-2.49.1/Source/bmalloc/bmalloc/AvailableMemory.cpp source/Source/bmalloc/bmalloc/AvailableMemory.cpp +--- webkitgtk-2.49.1/Source/bmalloc/bmalloc/AvailableMemory.cpp 2023-09-18 01:56:46.719077300 -0600 ++++ source/Source/bmalloc/bmalloc/AvailableMemory.cpp 2025-05-10 19:08:48.967816054 -0600 +@@ -166,7 +166,7 @@ + if (!sysinfo(&info)) + return info.totalram * info.mem_unit; + return availableMemoryGuess; +-#elif BOS(UNIX) ++#elif BOS(UNIX) && !defined(__redox__) + long pages = sysconf(_SC_PHYS_PAGES); + long pageSize = sysconf(_SC_PAGE_SIZE); + if (pages == -1 || pageSize == -1) +diff -ruwN webkitgtk-2.49.1/Source/JavaScriptCore/heap/BlockDirectory.cpp source/Source/JavaScriptCore/heap/BlockDirectory.cpp +--- webkitgtk-2.49.1/Source/JavaScriptCore/heap/BlockDirectory.cpp 2025-03-20 11:07:59.015023500 -0600 ++++ source/Source/JavaScriptCore/heap/BlockDirectory.cpp 2025-05-10 21:38:36.889325942 -0600 +@@ -68,7 +68,7 @@ + // FIXME: We should figure out a solution for Windows and PlayStation. + // QNX doesn't have mincore(), though the information can be had. But since all mapped + // pages are resident, does it matter? +-#if OS(UNIX) && !PLATFORM(PLAYSTATION) && !OS(QNX) && !OS(HAIKU) ++#if OS(UNIX) && !PLATFORM(PLAYSTATION) && !OS(QNX) && !OS(HAIKU) && !defined(__redox__) + size_t pageSize = WTF::pageSize(); + ASSERT(!(MarkedBlock::blockSize % pageSize)); + auto numberOfPagesInMarkedBlock = MarkedBlock::blockSize / pageSize; +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/cpp_generator.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/cpp_generator.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/cpp_generator_templates.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/cpp_generator_templates.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_alternate_backend_dispatcher_header.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_alternate_backend_dispatcher_header.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_backend_dispatcher_header.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_backend_dispatcher_header.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_backend_dispatcher_implementation.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_backend_dispatcher_implementation.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_frontend_dispatcher_header.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_frontend_dispatcher_header.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_frontend_dispatcher_implementation.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_frontend_dispatcher_implementation.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_protocol_types_header.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_protocol_types_header.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_protocol_types_implementation.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_protocol_types_implementation.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_js_backend_commands.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_js_backend_commands.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_backend_dispatcher_header.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_backend_dispatcher_header.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_backend_dispatcher_implementation.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_backend_dispatcher_implementation.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_configuration_header.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_configuration_header.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_configuration_implementation.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_configuration_implementation.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_frontend_dispatcher_implementation.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_frontend_dispatcher_implementation.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_header.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_header.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_internal_header.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_internal_header.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_protocol_type_conversions_header.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_protocol_type_conversions_header.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_protocol_type_conversions_implementation.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_protocol_type_conversions_implementation.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_protocol_types_implementation.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_protocol_types_implementation.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generator.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generator.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generator_templates.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generator_templates.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/__init__.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/__init__.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/models.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/models.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/objc_generator.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/objc_generator.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/objc_generator_templates.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/objc_generator_templates.cpython-311.pyc differ +diff -ruwN webkitgtk-2.49.1/Source/JavaScriptCore/runtime/JSCBytecodeCacheVersion.cpp source/Source/JavaScriptCore/runtime/JSCBytecodeCacheVersion.cpp +--- webkitgtk-2.49.1/Source/JavaScriptCore/runtime/JSCBytecodeCacheVersion.cpp 2025-03-20 11:07:59.015023500 -0600 ++++ source/Source/JavaScriptCore/runtime/JSCBytecodeCacheVersion.cpp 2025-05-11 08:15:28.272811727 -0600 +@@ -37,7 +37,7 @@ + #include + #include + #include +-#else ++#elif !defined(__redox__) + #include + #endif + #endif +@@ -66,7 +66,7 @@ + } + cacheVersion.construct(0); + dataLogLnIf(JSCBytecodeCacheVersionInternal::verbose, "Failed to get UUID for JavaScriptCore framework"); +-#elif OS(UNIX) && !PLATFORM(PLAYSTATION) && !OS(HAIKU) ++#elif OS(UNIX) && !PLATFORM(PLAYSTATION) && !OS(HAIKU) && !defined(__redox__) + auto result = ([&] -> std::optional { + Dl_info info { }; + if (!dladdr(jsFunctionAddr, &info)) +diff -ruwN webkitgtk-2.49.1/Source/JavaScriptCore/runtime/MachineContext.h source/Source/JavaScriptCore/runtime/MachineContext.h +--- webkitgtk-2.49.1/Source/JavaScriptCore/runtime/MachineContext.h 2025-03-20 11:07:59.015023500 -0600 ++++ source/Source/JavaScriptCore/runtime/MachineContext.h 2025-05-11 08:58:07.039826666 -0600 +@@ -188,7 +188,7 @@ + #error Unknown Architecture + #endif + +-#elif OS(FUCHSIA) || OS(LINUX) || OS(HURD) ++#elif OS(FUCHSIA) || OS(LINUX) || OS(HURD) || defined(__redox__) + + #if CPU(X86_64) + return reinterpret_cast((uintptr_t&) machineContext.gregs[REG_RSP]); +@@ -317,7 +317,7 @@ + #error Unknown Architecture + #endif + +-#elif OS(FUCHSIA) || OS(LINUX) || OS(HURD) ++#elif OS(FUCHSIA) || OS(LINUX) || OS(HURD) || defined(__redox__) + + // The following sequence depends on glibc's sys/ucontext.h. + #if CPU(X86_64) +@@ -485,7 +485,7 @@ + #error Unknown Architecture + #endif + +-#elif OS(FUCHSIA) || OS(LINUX) || OS(HURD) ++#elif OS(FUCHSIA) || OS(LINUX) || OS(HURD) || defined(__redox__) + + // The following sequence depends on glibc's sys/ucontext.h. + #if CPU(X86_64) +@@ -679,7 +679,7 @@ + #error Unknown Architecture + #endif + +-#elif OS(FUCHSIA) || OS(LINUX) || OS(HURD) ++#elif OS(FUCHSIA) || OS(LINUX) || OS(HURD) || defined(__redox__) + + // The following sequence depends on glibc's sys/ucontext.h. + #if CPU(X86_64) +@@ -736,7 +736,7 @@ + #error Unknown Architecture + #endif + +-#elif OS(FUCHSIA) || OS(LINUX) || OS(HURD) ++#elif OS(FUCHSIA) || OS(LINUX) || OS(HURD) || defined(__redox__) + + // The following sequence depends on glibc's sys/ucontext.h. + #if CPU(X86_64) +@@ -864,7 +864,7 @@ + #error Unknown Architecture + #endif + +-#elif OS(FUCHSIA) || OS(LINUX) || OS(HURD) ++#elif OS(FUCHSIA) || OS(LINUX) || OS(HURD) || defined(__redox__) + + // The following sequence depends on glibc's sys/ucontext.h. + #if CPU(X86_64) +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/wasm/__pycache__/generateWasm.cpython-311.pyc and source/Source/JavaScriptCore/wasm/__pycache__/generateWasm.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/JavaScriptCore/yarr/__pycache__/hasher.cpython-311.pyc and source/Source/JavaScriptCore/yarr/__pycache__/hasher.cpython-311.pyc differ +diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/GLESv2.cmake source/Source/ThirdParty/ANGLE/GLESv2.cmake +--- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/GLESv2.cmake 2025-02-17 05:59:58.567796700 -0700 ++++ source/Source/ThirdParty/ANGLE/GLESv2.cmake 2025-05-10 20:36:08.275484081 -0600 +@@ -120,7 +120,7 @@ + + if(is_linux OR is_chromeos OR is_android OR is_fuchsia) + list(APPEND libangle_common_sources +- "src/common/system_utils_linux.cpp" ++ #"src/common/system_utils_linux.cpp" + "src/common/system_utils_posix.cpp" + ) + endif() +diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/PlatformGTK.cmake source/Source/ThirdParty/ANGLE/PlatformGTK.cmake +--- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/PlatformGTK.cmake 2023-10-21 01:33:32.730009300 -0600 ++++ source/Source/ThirdParty/ANGLE/PlatformGTK.cmake 2025-05-10 20:22:26.792451858 -0600 +@@ -1,4 +1,4 @@ +-list(APPEND ANGLE_DEFINITIONS ANGLE_PLATFORM_LINUX EGL_NO_PLATFORM_SPECIFIC_TYPES USE_SYSTEM_EGL) ++list(APPEND ANGLE_DEFINITIONS ANGLE_PLATFORM_POSIX EGL_NO_PLATFORM_SPECIFIC_TYPES USE_SYSTEM_EGL) + include(linux.cmake) + + if (USE_OPENGL) +diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/log_utils.h source/Source/ThirdParty/ANGLE/src/common/log_utils.h +--- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/log_utils.h 2025-02-17 05:59:58.571796700 -0700 ++++ source/Source/ThirdParty/ANGLE/src/common/log_utils.h 2025-05-10 20:10:39.639595675 -0600 +@@ -136,10 +136,12 @@ + return FmtHexAutoSized(os, fmt.mValue, fmt.mPrefix, "0x", '0'); + } + ++#if !defined(__redox__) + friend std::wostream &operator<<(std::wostream &wos, const FmtHexHelper &fmt) + { + return FmtHexAutoSized(wos, fmt.mValue, fmt.mPrefix, L"0x", L'0'); + } ++#endif + }; + + } // namespace priv +diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/platform.h source/Source/ThirdParty/ANGLE/src/common/platform.h +--- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/platform.h 2024-09-03 00:28:47.067031900 -0600 ++++ source/Source/ThirdParty/ANGLE/src/common/platform.h 2025-05-10 20:07:40.561378854 -0600 +@@ -28,7 +28,7 @@ + # define ANGLE_PLATFORM_POSIX 1 + #elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || \ + defined(__DragonFly__) || defined(__sun) || defined(__GLIBC__) || defined(__GNU__) || \ +- defined(__QNX__) || defined(__Fuchsia__) || defined(__HAIKU__) ++ defined(__QNX__) || defined(__Fuchsia__) || defined(__HAIKU__) || defined(__redox__) + # define ANGLE_PLATFORM_POSIX 1 + #else + # error Unsupported platform. +diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/system_utils_posix.cpp source/Source/ThirdParty/ANGLE/src/common/system_utils_posix.cpp +--- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/system_utils_posix.cpp 2024-05-30 05:59:22.953676200 -0600 ++++ source/Source/ThirdParty/ANGLE/src/common/system_utils_posix.cpp 2025-05-10 20:28:38.268901621 -0600 +@@ -33,6 +33,11 @@ + # include + #endif + ++#if defined(__redox__) ++#define SEGV_MAPERR 1 ++#define SEGV_ACCERR 2 ++#endif ++ + namespace angle + { + +diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp source/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp +--- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp 2025-02-05 02:14:42.678567400 -0700 ++++ source/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp 2025-05-10 20:42:33.040029309 -0600 +@@ -58,7 +58,7 @@ + # include "libANGLE/renderer/gl/wgl/DisplayWGL.h" + # elif ANGLE_ENABLE_CGL + # include "libANGLE/renderer/gl/cgl/DisplayCGL.h" +-# elif defined(ANGLE_PLATFORM_LINUX) ++# elif defined(ANGLE_PLATFORM_LINUX) || defined(__redox__) + # include "libANGLE/renderer/gl/egl/DisplayEGL.h" + # if defined(ANGLE_USE_X11) + # include "libANGLE/renderer/gl/glx/DisplayGLX_api.h" +@@ -422,7 +422,7 @@ + impl = new rx::DisplayCGL(state); + break; + +-# elif defined(ANGLE_PLATFORM_LINUX) ++# elif defined(ANGLE_PLATFORM_LINUX) || defined(__redox__) + # if defined(ANGLE_USE_GBM) + if (platformType == 0) + { +diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/libGLESv2.gni source/Source/ThirdParty/ANGLE/src/libGLESv2.gni +--- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/libGLESv2.gni 2025-02-17 05:59:58.587796200 -0700 ++++ source/Source/ThirdParty/ANGLE/src/libGLESv2.gni 2025-05-10 20:36:18.426498466 -0600 +@@ -115,7 +115,7 @@ + + if (is_linux || is_chromeos || is_android || is_fuchsia) { + libangle_common_sources += [ +- "src/common/system_utils_linux.cpp", ++ #"src/common/system_utils_linux.cpp", + "src/common/system_utils_posix.cpp", + ] + } +diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/skia/src/gpu/ganesh/GrAutoLocaleSetter.h source/Source/ThirdParty/skia/src/gpu/ganesh/GrAutoLocaleSetter.h +--- webkitgtk-2.49.1/Source/ThirdParty/skia/src/gpu/ganesh/GrAutoLocaleSetter.h 2024-08-14 02:56:17.506453500 -0600 ++++ source/Source/ThirdParty/skia/src/gpu/ganesh/GrAutoLocaleSetter.h 2025-05-10 21:10:41.689374796 -0600 +@@ -27,7 +27,7 @@ + #define HAVE_XLOCALE 0 + #endif + +-#if defined(SK_BUILD_FOR_ANDROID) || defined(__UCLIBC__) || defined(_NEWLIB_VERSION) ++#if defined(SK_BUILD_FOR_ANDROID) || defined(__UCLIBC__) || defined(_NEWLIB_VERSION) || defined(__redox__) + #define HAVE_LOCALE_T 0 + #else + #define HAVE_LOCALE_T 1 +diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/skia/src/ports/SkMemory_malloc.cpp source/Source/ThirdParty/skia/src/ports/SkMemory_malloc.cpp +--- webkitgtk-2.49.1/Source/ThirdParty/skia/src/ports/SkMemory_malloc.cpp 2024-05-30 05:59:23.965655000 -0600 ++++ source/Source/ThirdParty/skia/src/ports/SkMemory_malloc.cpp 2025-05-10 21:14:33.304664836 -0600 +@@ -126,7 +126,7 @@ + #elif defined(SK_BUILD_FOR_ANDROID) && __ANDROID_API__ >= 17 + completeSize = malloc_usable_size(addr); + SkASSERT(completeSize >= size); +- #elif defined(SK_BUILD_FOR_UNIX) ++ #elif defined(SK_BUILD_FOR_UNIX) && !defined(__redox__) + completeSize = malloc_usable_size(addr); + SkASSERT(completeSize >= size); + #elif defined(SK_BUILD_FOR_WIN) +diff -ruwN webkitgtk-2.49.1/Source/WebCore/PlatformGTK.cmake source/Source/WebCore/PlatformGTK.cmake +--- webkitgtk-2.49.1/Source/WebCore/PlatformGTK.cmake 2024-12-16 02:07:48.162613200 -0700 ++++ source/Source/WebCore/PlatformGTK.cmake 2025-05-10 19:05:57.526658690 -0600 +@@ -75,21 +75,18 @@ + ) + + list(APPEND WebCore_LIBRARIES +- ${ENCHANT_LIBRARIES} + ${GLIB_GIO_LIBRARIES} + ${GLIB_GMODULE_LIBRARIES} + ${GLIB_GOBJECT_LIBRARIES} + ${GLIB_LIBRARIES} + ${LIBSECRET_LIBRARIES} + ${LIBTASN1_LIBRARIES} +- ${HYPHEN_LIBRARIES} + ${UPOWERGLIB_LIBRARIES} + ${X11_X11_LIB} + GTK::GTK + ) + + list(APPEND WebCore_SYSTEM_INCLUDE_DIRECTORIES +- ${ENCHANT_INCLUDE_DIRS} + ${GIO_UNIX_INCLUDE_DIRS} + ${GLIB_INCLUDE_DIRS} + ${LIBSECRET_INCLUDE_DIRS} +diff -ruwN webkitgtk-2.49.1/Source/WebKit/PlatformGTK.cmake source/Source/WebKit/PlatformGTK.cmake +--- webkitgtk-2.49.1/Source/WebKit/PlatformGTK.cmake 2025-03-05 03:09:47.273706000 -0700 ++++ source/Source/WebKit/PlatformGTK.cmake 2025-05-10 18:54:43.437475299 -0600 +@@ -313,7 +313,6 @@ + ) + + list(APPEND WebKit_SYSTEM_INCLUDE_DIRECTORIES +- ${ENCHANT_INCLUDE_DIRS} + ${GIO_UNIX_INCLUDE_DIRS} + ${GLIB_INCLUDE_DIRS} + ${GSTREAMER_INCLUDE_DIRS} +diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/glib/FileSystemGlib.cpp source/Source/WTF/wtf/glib/FileSystemGlib.cpp +--- webkitgtk-2.49.1/Source/WTF/wtf/glib/FileSystemGlib.cpp 2024-12-16 02:07:48.134613800 -0700 ++++ source/Source/WTF/wtf/glib/FileSystemGlib.cpp 2025-05-10 20:14:04.266843426 -0600 +@@ -70,7 +70,7 @@ + return CString({ readLinkBuffer, static_cast(result) }); + WTF_ALLOW_UNSAFE_BUFFER_USAGE_END + } +-#elif OS(HURD) ++#elif OS(HURD) || defined(__redox__) + CString currentExecutablePath() + { + return { }; +diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/InlineASM.h source/Source/WTF/wtf/InlineASM.h +--- webkitgtk-2.49.1/Source/WTF/wtf/InlineASM.h 2024-09-23 04:54:44.750106000 -0600 ++++ source/Source/WTF/wtf/InlineASM.h 2025-05-10 21:34:44.313517406 -0600 +@@ -89,7 +89,8 @@ + || OS(HURD) \ + || OS(NETBSD) \ + || OS(QNX) \ +- || OS(WINDOWS) ++ || OS(WINDOWS) \ ++ || defined(__redox__) + // GNU as-compatible syntax. + #define LOCAL_LABEL_STRING(name) ".L" #name + #endif +diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/PlatformHave.h source/Source/WTF/wtf/PlatformHave.h +--- webkitgtk-2.49.1/Source/WTF/wtf/PlatformHave.h 2025-04-02 06:09:45.800669000 -0600 ++++ source/Source/WTF/wtf/PlatformHave.h 2025-05-11 08:45:52.150157369 -0600 +@@ -231,7 +231,7 @@ + #define HAVE_MACH_MEMORY_ENTRY 1 + #endif + +-#if OS(DARWIN) || OS(FUCHSIA) || ((OS(FREEBSD) || OS(HAIKU) || OS(NETBSD) || OS(OPENBSD) || OS(LINUX) || OS(HURD) || OS(QNX)) && (CPU(X86_64) || CPU(ARM) || CPU(ARM64) || CPU(RISCV64))) ++#if OS(DARWIN) || OS(FUCHSIA) || ((OS(FREEBSD) || OS(HAIKU) || OS(NETBSD) || OS(OPENBSD) || OS(LINUX) || OS(HURD) || OS(QNX) || defined(__redox__)) && (CPU(X86_64) || CPU(ARM) || CPU(ARM64) || CPU(RISCV64))) + #define HAVE_MACHINE_CONTEXT 1 + #endif + +diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/PlatformOS.h source/Source/WTF/wtf/PlatformOS.h +--- webkitgtk-2.49.1/Source/WTF/wtf/PlatformOS.h 2025-04-02 23:49:09.282701700 -0600 ++++ source/Source/WTF/wtf/PlatformOS.h 2025-05-10 21:44:33.694803473 -0600 +@@ -143,7 +143,8 @@ + || OS(OPENBSD) \ + || defined(unix) \ + || defined(__unix) \ +- || defined(__unix__) ++ || defined(__unix__) \ ++ || defined(__redox__) + #define WTF_OS_UNIX 1 + #endif + +diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/PlatformRegisters.h source/Source/WTF/wtf/PlatformRegisters.h +--- webkitgtk-2.49.1/Source/WTF/wtf/PlatformRegisters.h 2024-11-20 06:56:01.847236400 -0700 ++++ source/Source/WTF/wtf/PlatformRegisters.h 2025-05-10 19:12:14.761916702 -0600 +@@ -39,6 +39,8 @@ + typedef ucontext_t mcontext_t; + #elif OS(QNX) + #include ++#elif defined(__redox__) ++#include + #else + #include + #endif +diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/posix/CPUTimePOSIX.cpp source/Source/WTF/wtf/posix/CPUTimePOSIX.cpp +--- webkitgtk-2.49.1/Source/WTF/wtf/posix/CPUTimePOSIX.cpp 2023-09-18 01:56:45.363115500 -0600 ++++ source/Source/WTF/wtf/posix/CPUTimePOSIX.cpp 2025-05-10 19:30:23.676993788 -0600 +@@ -47,10 +47,14 @@ + + Seconds CPUTime::forCurrentThread() + { ++#if defined(__redox__) ++ return Seconds(0); ++#else + struct timespec ts { }; + int ret = clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts); + RELEASE_ASSERT(!ret); + return Seconds(ts.tv_sec) + Seconds::fromNanoseconds(ts.tv_nsec); ++#endif + } + + } +diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/posix/FileHandlePOSIX.cpp source/Source/WTF/wtf/posix/FileHandlePOSIX.cpp +--- webkitgtk-2.49.1/Source/WTF/wtf/posix/FileHandlePOSIX.cpp 2025-03-21 05:07:10.828055100 -0600 ++++ source/Source/WTF/wtf/posix/FileHandlePOSIX.cpp 2025-05-10 19:26:54.845585962 -0600 +@@ -39,6 +39,10 @@ + #include + #include + ++#if defined(__redox__) ++#define MAP_FILE 0 ++#endif ++ + namespace WTF::FileSystemImpl { + + std::optional FileHandle::read(std::span data) +diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/posix/ThreadingPOSIX.cpp source/Source/WTF/wtf/posix/ThreadingPOSIX.cpp +--- webkitgtk-2.49.1/Source/WTF/wtf/posix/ThreadingPOSIX.cpp 2025-03-05 03:09:47.149706400 -0700 ++++ source/Source/WTF/wtf/posix/ThreadingPOSIX.cpp 2025-05-10 19:19:09.728119543 -0600 +@@ -356,7 +356,7 @@ + + void Thread::changePriority(int delta) + { +-#if HAVE(PTHREAD_SETSCHEDPARAM) ++#if HAVE(PTHREAD_SETSCHEDPARAM) && !defined(__redox__) + Locker locker { m_mutex }; + + int policy; +diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/RAMSize.cpp source/Source/WTF/wtf/RAMSize.cpp +--- webkitgtk-2.49.1/Source/WTF/wtf/RAMSize.cpp 2024-10-01 01:40:32.303785300 -0600 ++++ source/Source/WTF/wtf/RAMSize.cpp 2025-05-10 19:09:18.889830704 -0600 +@@ -64,7 +64,7 @@ + struct sysinfo si; + sysinfo(&si); + return si.totalram * si.mem_unit; +-#elif OS(UNIX) || OS(HAIKU) ++#elif (OS(UNIX) && !defined(__redox__)) || OS(HAIKU) + long pages = sysconf(_SC_PHYS_PAGES); + long pageSize = sysconf(_SC_PAGE_SIZE); + return pages * pageSize; +diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/StackBounds.cpp source/Source/WTF/wtf/StackBounds.cpp +--- webkitgtk-2.49.1/Source/WTF/wtf/StackBounds.cpp 2025-03-18 02:33:00.063181400 -0600 ++++ source/Source/WTF/wtf/StackBounds.cpp 2025-05-10 19:16:43.976048337 -0600 +@@ -120,6 +120,8 @@ + #if HAVE(PTHREAD_NP_H) || OS(NETBSD) + // e.g. on FreeBSD 5.4, neundorf@kde.org + pthread_attr_get_np(thread, &sattr); ++#elif defined(__redox__) ++ //TODO + #else + // FIXME: this function is non-portable; other POSIX systems may have different np alternatives + pthread_getattr_np(thread, &sattr); From b0e4b59a223a176bfdd7b2305fe1939fbd40d9b2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 11 May 2025 15:06:36 -0600 Subject: [PATCH 2519/3180] relibc: do out of tree build --- recipes/core/relibc/recipe.toml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/recipes/core/relibc/recipe.toml b/recipes/core/relibc/recipe.toml index 7213c52d..ccc26a5d 100644 --- a/recipes/core/relibc/recipe.toml +++ b/recipes/core/relibc/recipe.toml @@ -4,6 +4,10 @@ git = "https://gitlab.redox-os.org/redox-os/relibc.git" [build] template = "custom" script = """ -rsync -av --delete "${COOKBOOK_SOURCE}/" ./ -"${COOKBOOK_MAKE}" CARGO="env -u CARGO cargo" -j"$($NPROC)" DESTDIR="${COOKBOOK_STAGE}" install +"${COOKBOOK_MAKE}" \ + -C "${COOKBOOK_SOURCE}" \ + -j"$($NPROC)" \ + CARGO="env -u CARGO cargo" \ + DESTDIR="${COOKBOOK_STAGE}" \ + install """ From fc5703d07790c25c88166db4796545667f81ab86 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 13 May 2025 09:15:54 -0600 Subject: [PATCH 2520/3180] mesa-x11 and others: enable egl --- recipes/wip/libs/other/libepoxy/recipe.toml | 5 ++++- recipes/wip/x11/mesa-demos-x11/recipe.toml | 3 +++ recipes/wip/x11/mesa-glu-x11/recipe.toml | 2 ++ recipes/wip/x11/mesa-x11/recipe.toml | 2 +- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/recipes/wip/libs/other/libepoxy/recipe.toml b/recipes/wip/libs/other/libepoxy/recipe.toml index 56e439eb..c4eaa653 100644 --- a/recipes/wip/libs/other/libepoxy/recipe.toml +++ b/recipes/wip/libs/other/libepoxy/recipe.toml @@ -10,6 +10,9 @@ dependencies = [ "libx11", "libxau", "libxcb", + "libxext", + "libxfixes", + "libxxf86vm", "llvm18", "mesa-x11", "x11proto", @@ -18,7 +21,7 @@ dependencies = [ script = """ DYNAMIC_INIT cookbook_meson \ - -Degl=no \ + -Degl=yes \ -Dglx=yes \ -Dtests=false """ diff --git a/recipes/wip/x11/mesa-demos-x11/recipe.toml b/recipes/wip/x11/mesa-demos-x11/recipe.toml index e7512cdf..6a94cccc 100644 --- a/recipes/wip/x11/mesa-demos-x11/recipe.toml +++ b/recipes/wip/x11/mesa-demos-x11/recipe.toml @@ -5,12 +5,15 @@ patches = ["redox.patch"] [build] dependencies = [ + "expat", "libpthread-stubs", "libstdcxx", "libx11", "libxau", "libxcb", "libxext", + "libxfixes", + "libxml2", "libxxf86vm", "llvm18", "mesa-x11", diff --git a/recipes/wip/x11/mesa-glu-x11/recipe.toml b/recipes/wip/x11/mesa-glu-x11/recipe.toml index aeba39f6..c4a7e860 100644 --- a/recipes/wip/x11/mesa-glu-x11/recipe.toml +++ b/recipes/wip/x11/mesa-glu-x11/recipe.toml @@ -9,6 +9,8 @@ dependencies = [ "libxau", "libxcb", "libxext", + "libxfixes", + "libxxf86vm", "mesa-x11", "x11proto", ] diff --git a/recipes/wip/x11/mesa-x11/recipe.toml b/recipes/wip/x11/mesa-x11/recipe.toml index fceb29d9..2eb09964 100644 --- a/recipes/wip/x11/mesa-x11/recipe.toml +++ b/recipes/wip/x11/mesa-x11/recipe.toml @@ -20,7 +20,7 @@ script = """ DYNAMIC_INIT cookbook_meson \ -Ddri-drivers-path=/usr/lib/dri \ - -Degl=disabled \ + -Degl=enabled \ -Dglx=dri \ -Dllvm=enabled \ -Dplatforms=x11 \ From dd8f3bc6f9bbce1b86e210d101d5a13d1ba9077f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 13 May 2025 09:47:36 -0600 Subject: [PATCH 2521/3180] webkitgtk3: update patch and dependencies --- recipes/wip/libs/other/webkitgtk3/recipe.toml | 2 + recipes/wip/libs/other/webkitgtk3/redox.patch | 200 ++++++++++++------ 2 files changed, 135 insertions(+), 67 deletions(-) diff --git a/recipes/wip/libs/other/webkitgtk3/recipe.toml b/recipes/wip/libs/other/webkitgtk3/recipe.toml index 1d9b97cc..c369077e 100644 --- a/recipes/wip/libs/other/webkitgtk3/recipe.toml +++ b/recipes/wip/libs/other/webkitgtk3/recipe.toml @@ -44,6 +44,7 @@ dependencies = [ "libxrandr", "libxrender", "libxslt", + "libxxf86vm", "mesa-x11", "nghttp2", "pango", @@ -79,6 +80,7 @@ cookbook_cmake \ -DUSE_LIBSECRET=OFF \ -DUSE_SKIA=OFF \ -DUSE_SYSPROF_CAPTURE=OFF \ + -DUSE_SYSTEM_MALLOC=ON \ -DUSE_SYSTEM_SYSPROF_CAPTURE=OFF \ -DUSE_WOFF2=OFF """ diff --git a/recipes/wip/libs/other/webkitgtk3/redox.patch b/recipes/wip/libs/other/webkitgtk3/redox.patch index 5e7323e6..e61a659a 100644 --- a/recipes/wip/libs/other/webkitgtk3/redox.patch +++ b/recipes/wip/libs/other/webkitgtk3/redox.patch @@ -1,15 +1,24 @@ -diff -ruwN webkitgtk-2.49.1/Source/bmalloc/bmalloc/AvailableMemory.cpp source/Source/bmalloc/bmalloc/AvailableMemory.cpp ---- webkitgtk-2.49.1/Source/bmalloc/bmalloc/AvailableMemory.cpp 2023-09-18 01:56:46.719077300 -0600 -+++ source/Source/bmalloc/bmalloc/AvailableMemory.cpp 2025-05-10 19:08:48.967816054 -0600 -@@ -166,7 +166,7 @@ - if (!sysinfo(&info)) - return info.totalram * info.mem_unit; - return availableMemoryGuess; --#elif BOS(UNIX) -+#elif BOS(UNIX) && !defined(__redox__) - long pages = sysconf(_SC_PHYS_PAGES); - long pageSize = sysconf(_SC_PAGE_SIZE); - if (pages == -1 || pageSize == -1) +diff -ruwN webkitgtk-2.49.1/Source/bmalloc/bmalloc/BPlatform.h source/Source/bmalloc/bmalloc/BPlatform.h +--- webkitgtk-2.49.1/Source/bmalloc/bmalloc/BPlatform.h 2025-03-28 00:18:28.347204000 -0600 ++++ source/Source/bmalloc/bmalloc/BPlatform.h 2025-05-12 20:54:40.104051612 -0600 +@@ -40,7 +40,7 @@ + #define BOS_DARWIN 1 + #endif + +-#if defined(__unix) || defined(__unix__) ++#if defined(__unix) || defined(__unix__) || defined(__redox__) + #define BOS_UNIX 1 + #endif + +@@ -339,7 +339,7 @@ + + /* BENABLE(LIBPAS) is enabling libpas build. But this does not mean we use libpas for bmalloc replacement. */ + #if !defined(BENABLE_LIBPAS) +-#if BCPU(ADDRESS64) && (BOS(DARWIN) || (BOS(LINUX) && (BCPU(X86_64) || BCPU(ARM64))) || BPLATFORM(PLAYSTATION)) ++#if BCPU(ADDRESS64) && (BOS(DARWIN) || (BOS(LINUX) && (BCPU(X86_64) || BCPU(ARM64))) || BPLATFORM(PLAYSTATION)) || defined(__redox__) + #define BENABLE_LIBPAS 1 + #ifndef PAS_BMALLOC + #define PAS_BMALLOC 1 diff -ruwN webkitgtk-2.49.1/Source/JavaScriptCore/heap/BlockDirectory.cpp source/Source/JavaScriptCore/heap/BlockDirectory.cpp --- webkitgtk-2.49.1/Source/JavaScriptCore/heap/BlockDirectory.cpp 2025-03-20 11:07:59.015023500 -0600 +++ source/Source/JavaScriptCore/heap/BlockDirectory.cpp 2025-05-10 21:38:36.889325942 -0600 @@ -48,6 +57,18 @@ Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__ Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/models.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/models.cpython-311.pyc differ Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/objc_generator.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/objc_generator.cpython-311.pyc differ Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/objc_generator_templates.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/objc_generator_templates.cpython-311.pyc differ +diff -ruwN webkitgtk-2.49.1/Source/JavaScriptCore/jsc.cpp source/Source/JavaScriptCore/jsc.cpp +--- webkitgtk-2.49.1/Source/JavaScriptCore/jsc.cpp 2025-03-21 05:07:10.820055200 -0600 ++++ source/Source/JavaScriptCore/jsc.cpp 2025-05-12 21:27:55.789300618 -0600 +@@ -208,6 +208,8 @@ + for (;;) { + #if OS(WINDOWS) + Sleep(1000); ++#elif defined(__redox__) ++ //TODO + #else + pause(); + #endif diff -ruwN webkitgtk-2.49.1/Source/JavaScriptCore/runtime/JSCBytecodeCacheVersion.cpp source/Source/JavaScriptCore/runtime/JSCBytecodeCacheVersion.cpp --- webkitgtk-2.49.1/Source/JavaScriptCore/runtime/JSCBytecodeCacheVersion.cpp 2025-03-20 11:07:59.015023500 -0600 +++ source/Source/JavaScriptCore/runtime/JSCBytecodeCacheVersion.cpp 2025-05-11 08:15:28.272811727 -0600 @@ -71,61 +92,66 @@ diff -ruwN webkitgtk-2.49.1/Source/JavaScriptCore/runtime/JSCBytecodeCacheVersio if (!dladdr(jsFunctionAddr, &info)) diff -ruwN webkitgtk-2.49.1/Source/JavaScriptCore/runtime/MachineContext.h source/Source/JavaScriptCore/runtime/MachineContext.h --- webkitgtk-2.49.1/Source/JavaScriptCore/runtime/MachineContext.h 2025-03-20 11:07:59.015023500 -0600 -+++ source/Source/JavaScriptCore/runtime/MachineContext.h 2025-05-11 08:58:07.039826666 -0600 -@@ -188,7 +188,7 @@ ++++ source/Source/JavaScriptCore/runtime/MachineContext.h 2025-05-12 20:27:42.492098710 -0600 +@@ -158,7 +158,7 @@ + { + #if OS(DARWIN) + return stackPointerImpl(machineContext->__ss); +-#elif OS(HAIKU) ++#elif OS(HAIKU) || defined(__redox__) + #if CPU(X86_64) + return reinterpret_cast(machineContext.rsp); + #else +@@ -287,7 +287,7 @@ + { + #if OS(DARWIN) + return framePointerImpl(machineContext->__ss); +-#elif OS(HAIKU) ++#elif OS(HAIKU) || defined(__redox__) + #if CPU(X86_64) + return reinterpret_cast(machineContext.rbp); + #else +@@ -455,7 +455,7 @@ + { + #if OS(DARWIN) + return instructionPointerImpl(machineContext->__ss); +-#elif OS(HAIKU) ++#elif OS(HAIKU) || defined(__redox__) + #if CPU(X86_64) + return reinterpret_cast((uintptr_t&) machineContext.rip); + #else +@@ -649,7 +649,7 @@ + { + #if OS(DARWIN) + return argumentPointer<1>(machineContext->__ss); +-#elif OS(HAIKU) ++#elif OS(HAIKU) || defined(__redox__) + #if CPU(X86_64) + return reinterpret_cast((uintptr_t&) machineContext.rsi); + #else +@@ -760,6 +760,13 @@ #error Unknown Architecture #endif --#elif OS(FUCHSIA) || OS(LINUX) || OS(HURD) -+#elif OS(FUCHSIA) || OS(LINUX) || OS(HURD) || defined(__redox__) - - #if CPU(X86_64) - return reinterpret_cast((uintptr_t&) machineContext.gregs[REG_RSP]); -@@ -317,7 +317,7 @@ - #error Unknown Architecture ++#elif defined(__redox__) ++#if CPU(X86_64) ++ return reinterpret_cast((uintptr_t) machineContext.rbx); ++#else ++#error Unknown Architecture ++#endif ++ + #else + #error Need a way to get the frame pointer for another thread on this platform #endif - --#elif OS(FUCHSIA) || OS(LINUX) || OS(HURD) -+#elif OS(FUCHSIA) || OS(LINUX) || OS(HURD) || defined(__redox__) - - // The following sequence depends on glibc's sys/ucontext.h. - #if CPU(X86_64) -@@ -485,7 +485,7 @@ - #error Unknown Architecture - #endif - --#elif OS(FUCHSIA) || OS(LINUX) || OS(HURD) -+#elif OS(FUCHSIA) || OS(LINUX) || OS(HURD) || defined(__redox__) - - // The following sequence depends on glibc's sys/ucontext.h. - #if CPU(X86_64) -@@ -679,7 +679,7 @@ - #error Unknown Architecture - #endif - --#elif OS(FUCHSIA) || OS(LINUX) || OS(HURD) -+#elif OS(FUCHSIA) || OS(LINUX) || OS(HURD) || defined(__redox__) - - // The following sequence depends on glibc's sys/ucontext.h. - #if CPU(X86_64) -@@ -736,7 +736,7 @@ - #error Unknown Architecture - #endif - --#elif OS(FUCHSIA) || OS(LINUX) || OS(HURD) -+#elif OS(FUCHSIA) || OS(LINUX) || OS(HURD) || defined(__redox__) - - // The following sequence depends on glibc's sys/ucontext.h. - #if CPU(X86_64) -@@ -864,7 +864,7 @@ - #error Unknown Architecture - #endif - --#elif OS(FUCHSIA) || OS(LINUX) || OS(HURD) -+#elif OS(FUCHSIA) || OS(LINUX) || OS(HURD) || defined(__redox__) - - // The following sequence depends on glibc's sys/ucontext.h. +@@ -834,7 +841,7 @@ + // LLInt uses regT4 as PC. + #if OS(DARWIN) + return llintInstructionPointer(machineContext->__ss); +-#elif OS(HAIKU) ++#elif OS(HAIKU) || defined(__redox__) #if CPU(X86_64) + return reinterpret_cast((uintptr_t&) machineContext.r8); + #else Binary files webkitgtk-2.49.1/Source/JavaScriptCore/wasm/__pycache__/generateWasm.cpython-311.pyc and source/Source/JavaScriptCore/wasm/__pycache__/generateWasm.cpython-311.pyc differ Binary files webkitgtk-2.49.1/Source/JavaScriptCore/yarr/__pycache__/hasher.cpython-311.pyc and source/Source/JavaScriptCore/yarr/__pycache__/hasher.cpython-311.pyc differ diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/GLESv2.cmake source/Source/ThirdParty/ANGLE/GLESv2.cmake @@ -249,6 +275,20 @@ diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/skia/src/ports/SkMemory_malloc.cpp completeSize = malloc_usable_size(addr); SkASSERT(completeSize >= size); #elif defined(SK_BUILD_FOR_WIN) +diff -ruwN webkitgtk-2.49.1/Source/WebCore/page/Page.cpp source/Source/WebCore/page/Page.cpp +--- webkitgtk-2.49.1/Source/WebCore/page/Page.cpp 2025-04-01 01:53:09.527295000 -0600 ++++ source/Source/WebCore/page/Page.cpp 2025-05-12 21:46:50.795767586 -0600 +@@ -536,8 +536,10 @@ + if (RefPtr scrollingCoordinator = m_scrollingCoordinator) + scrollingCoordinator->pageDestroyed(); + ++#if ENABLE(RESOURCE_USAGE) + if (RefPtr resourceUsageOverlay = m_resourceUsageOverlay) + resourceUsageOverlay->detachFromPage(); ++#endif + + checkedBackForward()->close(); + if (!isUtilityPage()) diff -ruwN webkitgtk-2.49.1/Source/WebCore/PlatformGTK.cmake source/Source/WebCore/PlatformGTK.cmake --- webkitgtk-2.49.1/Source/WebCore/PlatformGTK.cmake 2024-12-16 02:07:48.162613200 -0700 +++ source/Source/WebCore/PlatformGTK.cmake 2025-05-10 19:05:57.526658690 -0600 @@ -274,6 +314,18 @@ diff -ruwN webkitgtk-2.49.1/Source/WebCore/PlatformGTK.cmake source/Source/WebCo ${GIO_UNIX_INCLUDE_DIRS} ${GLIB_INCLUDE_DIRS} ${LIBSECRET_INCLUDE_DIRS} +diff -ruwN webkitgtk-2.49.1/Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp source/Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp +--- webkitgtk-2.49.1/Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp 2025-03-31 03:35:43.461813700 -0600 ++++ source/Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp 2025-05-13 09:38:21.678926942 -0600 +@@ -48,7 +48,7 @@ + #include + #endif + +-#if OS(DARWIN) ++#if OS(DARWIN) || defined(__redox__) + #define MSG_NOSIGNAL 0 + #endif + diff -ruwN webkitgtk-2.49.1/Source/WebKit/PlatformGTK.cmake source/Source/WebKit/PlatformGTK.cmake --- webkitgtk-2.49.1/Source/WebKit/PlatformGTK.cmake 2025-03-05 03:09:47.273706000 -0700 +++ source/Source/WebKit/PlatformGTK.cmake 2025-05-10 18:54:43.437475299 -0600 @@ -285,6 +337,10 @@ diff -ruwN webkitgtk-2.49.1/Source/WebKit/PlatformGTK.cmake source/Source/WebKit ${GIO_UNIX_INCLUDE_DIRS} ${GLIB_INCLUDE_DIRS} ${GSTREAMER_INCLUDE_DIRS} +Binary files webkitgtk-2.49.1/Source/WebKit/Scripts/webkit/__pycache__/__init__.cpython-311.pyc and source/Source/WebKit/Scripts/webkit/__pycache__/__init__.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/WebKit/Scripts/webkit/__pycache__/messages.cpython-311.pyc and source/Source/WebKit/Scripts/webkit/__pycache__/messages.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/WebKit/Scripts/webkit/__pycache__/model.cpython-311.pyc and source/Source/WebKit/Scripts/webkit/__pycache__/model.cpython-311.pyc differ +Binary files webkitgtk-2.49.1/Source/WebKit/Scripts/webkit/__pycache__/parser.cpython-311.pyc and source/Source/WebKit/Scripts/webkit/__pycache__/parser.cpython-311.pyc differ diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/glib/FileSystemGlib.cpp source/Source/WTF/wtf/glib/FileSystemGlib.cpp --- webkitgtk-2.49.1/Source/WTF/wtf/glib/FileSystemGlib.cpp 2024-12-16 02:07:48.134613800 -0700 +++ source/Source/WTF/wtf/glib/FileSystemGlib.cpp 2025-05-10 20:14:04.266843426 -0600 @@ -393,16 +449,26 @@ diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/posix/ThreadingPOSIX.cpp source/Sourc int policy; diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/RAMSize.cpp source/Source/WTF/wtf/RAMSize.cpp --- webkitgtk-2.49.1/Source/WTF/wtf/RAMSize.cpp 2024-10-01 01:40:32.303785300 -0600 -+++ source/Source/WTF/wtf/RAMSize.cpp 2025-05-10 19:09:18.889830704 -0600 -@@ -64,7 +64,7 @@ ++++ source/Source/WTF/wtf/RAMSize.cpp 2025-05-12 21:08:59.548628775 -0600 +@@ -46,7 +46,7 @@ + + namespace WTF { + +-#if OS(WINDOWS) ++#if OS(WINDOWS) || defined(__redox__) + static constexpr size_t ramSizeGuess = 512 * MB; + #endif + +@@ -64,6 +64,9 @@ struct sysinfo si; sysinfo(&si); return si.totalram * si.mem_unit; --#elif OS(UNIX) || OS(HAIKU) -+#elif (OS(UNIX) && !defined(__redox__)) || OS(HAIKU) ++#elif defined(__redox__) ++ //TODO: implement using /scheme/mem ++ return ramSizeGuess; + #elif OS(UNIX) || OS(HAIKU) long pages = sysconf(_SC_PHYS_PAGES); long pageSize = sysconf(_SC_PAGE_SIZE); - return pages * pageSize; diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/StackBounds.cpp source/Source/WTF/wtf/StackBounds.cpp --- webkitgtk-2.49.1/Source/WTF/wtf/StackBounds.cpp 2025-03-18 02:33:00.063181400 -0600 +++ source/Source/WTF/wtf/StackBounds.cpp 2025-05-10 19:16:43.976048337 -0600 From 9cd5894b066f1e3c7f7dccf5e82ffe4cb7457395 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 13 May 2025 12:09:13 -0600 Subject: [PATCH 2522/3180] webkitgtk3: update patch --- recipes/wip/libs/other/webkitgtk3/redox.patch | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/recipes/wip/libs/other/webkitgtk3/redox.patch b/recipes/wip/libs/other/webkitgtk3/redox.patch index e61a659a..6957fa82 100644 --- a/recipes/wip/libs/other/webkitgtk3/redox.patch +++ b/recipes/wip/libs/other/webkitgtk3/redox.patch @@ -203,6 +203,20 @@ diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/platform.h source # define ANGLE_PLATFORM_POSIX 1 #else # error Unsupported platform. +diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/system_utils.h source/Source/ThirdParty/ANGLE/src/common/system_utils.h +--- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/system_utils.h 2025-05-13 10:04:29.634120979 -0600 ++++ source/Source/ThirdParty/ANGLE/src/common/system_utils.h 2025-05-13 10:29:39.241586171 -0600 +@@ -256,7 +256,9 @@ + } + #endif + +-void SetCurrentThreadName(const char *name); ++#if !defined(__redox__) ++void SetCurrentThreadName(const char *name) ++#endif + } // namespace angle + + #endif // COMMON_SYSTEM_UTILS_H_ diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/system_utils_posix.cpp source/Source/ThirdParty/ANGLE/src/common/system_utils_posix.cpp --- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/system_utils_posix.cpp 2024-05-30 05:59:22.953676200 -0600 +++ source/Source/ThirdParty/ANGLE/src/common/system_utils_posix.cpp 2025-05-10 20:28:38.268901621 -0600 @@ -218,6 +232,19 @@ diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/system_utils_posi namespace angle { +diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/WorkerThread.cpp source/Source/ThirdParty/ANGLE/src/common/WorkerThread.cpp +--- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/WorkerThread.cpp 2024-06-25 02:04:37.142420000 -0600 ++++ source/Source/ThirdParty/ANGLE/src/common/WorkerThread.cpp 2025-05-13 10:31:32.029891938 -0600 +@@ -165,7 +165,9 @@ + + void AsyncWorkerPool::threadLoop() + { ++#if !defined(__redox__) + angle::SetCurrentThreadName("ANGLE-Worker"); ++#endif + + while (true) + { diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp source/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp --- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp 2025-02-05 02:14:42.678567400 -0700 +++ source/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp 2025-05-10 20:42:33.040029309 -0600 @@ -239,6 +266,32 @@ diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp sou # if defined(ANGLE_USE_GBM) if (platformType == 0) { +diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CLCommandQueueVk.cpp source/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CLCommandQueueVk.cpp +--- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CLCommandQueueVk.cpp 2025-02-17 05:59:58.575796600 -0700 ++++ source/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CLCommandQueueVk.cpp 2025-05-13 10:30:15.002645630 -0600 +@@ -142,7 +142,9 @@ + + angle::Result DispatchWorkThread::finishLoop() + { ++#if !defined(__redox__) + angle::SetCurrentThreadName("ANGLE-CL-CQD"); ++#endif + + while (true) + { +diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CommandQueue.cpp source/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CommandQueue.cpp +--- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CommandQueue.cpp 2025-02-05 02:14:42.690567300 -0700 ++++ source/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CommandQueue.cpp 2025-05-13 10:30:05.421614993 -0600 +@@ -378,7 +378,9 @@ + + void CleanUpThread::processTasks() + { ++#if !defined(__redox__) + angle::SetCurrentThreadName("ANGLE-GC"); ++#endif + + while (true) + { diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/libGLESv2.gni source/Source/ThirdParty/ANGLE/src/libGLESv2.gni --- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/libGLESv2.gni 2025-02-17 05:59:58.587796200 -0700 +++ source/Source/ThirdParty/ANGLE/src/libGLESv2.gni 2025-05-10 20:36:18.426498466 -0600 From e594f04cbe3458d3c3a2374692b3d446a197f86b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 13 May 2025 12:09:36 -0600 Subject: [PATCH 2523/3180] gdk-pixbuf, gtk3: switch to libjpeg-turbo --- recipes/dev/gdk-pixbuf/recipe.toml | 2 +- recipes/wip/libs/gtk/gtk3/recipe.toml | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/recipes/dev/gdk-pixbuf/recipe.toml b/recipes/dev/gdk-pixbuf/recipe.toml index afa8bff2..6764fbc3 100644 --- a/recipes/dev/gdk-pixbuf/recipe.toml +++ b/recipes/dev/gdk-pixbuf/recipe.toml @@ -9,7 +9,7 @@ dependencies = [ "glib", "libffi", "libiconv", - "libjpeg", + "libjpeg-turbo", "libpng", "pcre2", "shared-mime-info", diff --git a/recipes/wip/libs/gtk/gtk3/recipe.toml b/recipes/wip/libs/gtk/gtk3/recipe.toml index eace30f7..e0682d84 100644 --- a/recipes/wip/libs/gtk/gtk3/recipe.toml +++ b/recipes/wip/libs/gtk/gtk3/recipe.toml @@ -20,7 +20,7 @@ dependencies = [ "libepoxy", "libffi", "libiconv", - "libjpeg", + "libjpeg-turbo", "libpng", "libpthread-stubs", "libx11", @@ -31,6 +31,8 @@ dependencies = [ "libxi", "libxrandr", "libxrender", + "libxxf86vm", + "mesa-x11", "pango", "pcre2", "pixman", @@ -46,4 +48,4 @@ cookbook_meson \ -Dc_args="-DM_SQRT2=1.41421356237309504880 -lXext -lX11 -lxcb -lXau" \ -Dintrospection=false \ -Dwayland_backend=false -""" \ No newline at end of file +""" From 2dfe26c6682fa527f66c31c2a47a4b49f7305117 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 13 May 2025 13:10:35 -0600 Subject: [PATCH 2524/3180] webkitgtk3: manually add libraries until it compiles --- recipes/wip/libs/other/webkitgtk3/recipe.toml | 54 ++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/recipes/wip/libs/other/webkitgtk3/recipe.toml b/recipes/wip/libs/other/webkitgtk3/recipe.toml index c369077e..34b77e02 100644 --- a/recipes/wip/libs/other/webkitgtk3/recipe.toml +++ b/recipes/wip/libs/other/webkitgtk3/recipe.toml @@ -59,9 +59,61 @@ dependencies = [ ] script = """ DYNAMIC_INIT +#TODO: why are these not automatic? +LIBS=( + $("${TARGET}-pkg-config" --libs epoxy) + $("${TARGET}-pkg-config" --libs expat) + $("${TARGET}-pkg-config" --libs fontconfig) + $("${TARGET}-pkg-config" --libs freetype2) + $("${TARGET}-pkg-config" --libs fribidi) + $("${TARGET}-pkg-config" --libs gdk-3.0) + $("${TARGET}-pkg-config" --libs gdk-pixbuf-2.0) + $("${TARGET}-pkg-config" --libs gpg-error) + $("${TARGET}-pkg-config" --libs gstreamer-1.0) + $("${TARGET}-pkg-config" --libs gstreamer-allocators-1.0) + $("${TARGET}-pkg-config" --libs gstreamer-app-1.0) + $("${TARGET}-pkg-config" --libs gstreamer-audio-1.0) + $("${TARGET}-pkg-config" --libs gstreamer-base-1.0) + $("${TARGET}-pkg-config" --libs gstreamer-fft-1.0) + $("${TARGET}-pkg-config" --libs gstreamer-pbutils-1.0) + $("${TARGET}-pkg-config" --libs gstreamer-tag-1.0) + $("${TARGET}-pkg-config" --libs gstreamer-transcoder-1.0) + $("${TARGET}-pkg-config" --libs gstreamer-video-1.0) + $("${TARGET}-pkg-config" --libs gtk+-3.0) + $("${TARGET}-pkg-config" --libs harfbuzz-icu) + $("${TARGET}-pkg-config" --libs libffi) + $("${TARGET}-pkg-config" --libs libgcrypt) + $("${TARGET}-pkg-config" --libs libjpeg) + $("${TARGET}-pkg-config" --libs liblzma) + $("${TARGET}-pkg-config" --libs libnghttp2) + $("${TARGET}-pkg-config" --libs libpcre2-8) + $("${TARGET}-pkg-config" --libs libpng) + $("${TARGET}-pkg-config" --libs libpsl) + $("${TARGET}-pkg-config" --libs libsharpyuv) + $("${TARGET}-pkg-config" --libs libsoup-3.0) + $("${TARGET}-pkg-config" --libs libtasn1) + $("${TARGET}-pkg-config" --libs libwebp) + $("${TARGET}-pkg-config" --libs libwebpdemux) + $("${TARGET}-pkg-config" --libs libxml2) + $("${TARGET}-pkg-config" --libs libxslt) + $("${TARGET}-pkg-config" --libs pango) + $("${TARGET}-pkg-config" --libs pangofc) + $("${TARGET}-pkg-config" --libs pangoft2) + $("${TARGET}-pkg-config" --libs pixman-1) + $("${TARGET}-pkg-config" --libs x11) + $("${TARGET}-pkg-config" --libs x11-xcb) + $("${TARGET}-pkg-config" --libs xau) + $("${TARGET}-pkg-config" --libs xcb) + $("${TARGET}-pkg-config" --libs xcb-render) + $("${TARGET}-pkg-config" --libs xext) + $("${TARGET}-pkg-config" --libs xfixes) + $("${TARGET}-pkg-config" --libs xi) + $("${TARGET}-pkg-config" --libs xrandr) + $("${TARGET}-pkg-config" --libs xrender) +) #TODO: enable more features cookbook_cmake \ - -DCMAKE_CXX_STANDARD_LIBRARIES="-lintl -lgmodule-2.0 -lpsl -lnghttp2 -lffi -liconv -lpcre2-8" \ + -DCMAKE_CXX_STANDARD_LIBRARIES="${LIBS[*]}" \ -DENABLE_GAMEPAD=OFF \ -DENABLE_INTROSPECTION=OFF \ -DENABLE_JOURNALD_LOG=OFF \ From fe86e59608b695bdb0a939bb27f19d7dd844e00f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 13 May 2025 14:24:02 -0600 Subject: [PATCH 2525/3180] libsoup: fix sqlite3 path --- recipes/wip/libs/other/libsoup/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/libs/other/libsoup/recipe.toml b/recipes/wip/libs/other/libsoup/recipe.toml index 0165f345..762f3b8a 100644 --- a/recipes/wip/libs/other/libsoup/recipe.toml +++ b/recipes/wip/libs/other/libsoup/recipe.toml @@ -21,4 +21,5 @@ cookbook_meson \ -Dsysprof=disabled \ -Dtests=false \ -Dtls_check=false +patchelf --replace-needed "${COOKBOOK_SYSROOT}/usr/lib/libsqlite3.so" "libsqlite3.so" "${COOKBOOK_STAGE}/usr/lib/libsoup-3.0.so" """ From 8d54ad07fd5b43b3dbefa18d7265cfbabe800abc Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 13 May 2025 17:09:44 -0600 Subject: [PATCH 2526/3180] gtk3: disable broken setuid check --- recipes/wip/libs/gtk/gtk3/redox.patch | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/recipes/wip/libs/gtk/gtk3/redox.patch b/recipes/wip/libs/gtk/gtk3/redox.patch index c8aa46d1..dde080d7 100644 --- a/recipes/wip/libs/gtk/gtk3/redox.patch +++ b/recipes/wip/libs/gtk/gtk3/redox.patch @@ -28,6 +28,18 @@ diff -ruwN gtk+-3.24.43/gtk/a11y/gtkaccessibility.c source/gtk/a11y/gtkaccessibi atk_bridge_adaptor_init (NULL, NULL); #endif +diff -ruwN gtk+-3.24.43/gtk/gtkmain.c source/gtk/gtkmain.c +--- gtk+-3.24.43/gtk/gtkmain.c 2024-07-10 11:03:14.000000000 -0600 ++++ source/gtk/gtkmain.c 2025-05-13 17:04:00.340216840 -0600 +@@ -355,7 +355,7 @@ + check_setugid (void) + { + /* this isn't at all relevant on MS Windows and doesn't compile ... --hb */ +-#ifndef G_OS_WIN32 ++#if !defined(G_OS_WIN32) && !defined(__redox__) + uid_t ruid, euid, suid; /* Real, effective and saved user ID's */ + gid_t rgid, egid, sgid; /* Real, effective and saved group ID's */ + diff -ruwN gtk+-3.24.43/meson.build source/meson.build --- gtk+-3.24.43/meson.build 2024-07-10 11:03:14.000000000 -0600 +++ source/meson.build 2025-05-10 13:39:34.329344669 -0600 From b8e343f1f0e423778e83be6652b00e69e2b28a15 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 13 May 2025 17:10:06 -0600 Subject: [PATCH 2527/3180] webkitgtk3: fix sqlite link path --- recipes/wip/libs/other/webkitgtk3/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/wip/libs/other/webkitgtk3/recipe.toml b/recipes/wip/libs/other/webkitgtk3/recipe.toml index 34b77e02..38c2c714 100644 --- a/recipes/wip/libs/other/webkitgtk3/recipe.toml +++ b/recipes/wip/libs/other/webkitgtk3/recipe.toml @@ -100,6 +100,7 @@ LIBS=( $("${TARGET}-pkg-config" --libs pangofc) $("${TARGET}-pkg-config" --libs pangoft2) $("${TARGET}-pkg-config" --libs pixman-1) + $("${TARGET}-pkg-config" --libs sqlite3) $("${TARGET}-pkg-config" --libs x11) $("${TARGET}-pkg-config" --libs x11-xcb) $("${TARGET}-pkg-config" --libs xau) @@ -135,4 +136,6 @@ cookbook_cmake \ -DUSE_SYSTEM_MALLOC=ON \ -DUSE_SYSTEM_SYSPROF_CAPTURE=OFF \ -DUSE_WOFF2=OFF +patchelf --replace-needed "${COOKBOOK_SYSROOT}/usr/lib/libsqlite3.so" "libsqlite3.so" "${COOKBOOK_STAGE}/usr/lib/libwebkit2gtk-4.1.so" +patchelf --replace-needed "${COOKBOOK_SYSROOT}/usr/lib/libsqlite3.so" "libsqlite3.so" "${COOKBOOK_STAGE}/usr/libexec/webkit2gtk-4.1/MiniBrowser" """ From d0675664a0e0f7a5c3f32aadfaefc7a75398dae3 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 14 May 2025 08:02:24 -0600 Subject: [PATCH 2528/3180] libass: update and fix compilation --- recipes/wip/libs/other/libass/recipe.toml | 30 +++++++++++++++-------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/recipes/wip/libs/other/libass/recipe.toml b/recipes/wip/libs/other/libass/recipe.toml index 6f31ce99..b4e8f9a3 100644 --- a/recipes/wip/libs/other/libass/recipe.toml +++ b/recipes/wip/libs/other/libass/recipe.toml @@ -1,15 +1,25 @@ -#TODO can't detect fontconfig [source] -tar = "https://github.com/libass/libass/releases/download/0.17.1/libass-0.17.1.tar.xz" +tar = "https://github.com/libass/libass/releases/download/0.17.3/libass-0.17.3.tar.xz" +blake3 = "bfbcc2a97193eb5c2a6c54d07c508d42ff62387a8a9d8b3959d15b6115bca8b6" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + [build] -template = "configure" dependencies = [ - "freetype2", - "zlib", - "libpng", - "fribidi", - "harfbuzz", - "glib", - "pcre", + "expat", "fontconfig", + "freetype2", + "fribidi", + "glib", + "harfbuzz", + "libpng", + "pcre2", + "zlib", ] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure --disable-asm +""" From 466f13c6f4bb9adf30fc89bf46e2e520293b6edb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 14 May 2025 08:40:10 -0600 Subject: [PATCH 2529/3180] bzip2: add more shared library links --- recipes/tools/bzip2/recipe.toml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/recipes/tools/bzip2/recipe.toml b/recipes/tools/bzip2/recipe.toml index 1db1c12c..23eacc6b 100644 --- a/recipes/tools/bzip2/recipe.toml +++ b/recipes/tools/bzip2/recipe.toml @@ -29,6 +29,7 @@ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ PREFIX="${COOKBOOK_STAGE}" \ RANLIB="${TARGET}-ranlib" -cp -v libbz2.so.1.0.8 "${COOKBOOK_STAGE}/lib" -cp -v libbz2.so.1.0 "${COOKBOOK_STAGE}/lib" -""" \ No newline at end of file +cp -av libbz2.so* "${COOKBOOK_STAGE}/lib" +ln -sr "${COOKBOOK_STAGE}/lib/libbz2.so.1.0" "${COOKBOOK_STAGE}/lib/libbz2.so.1" +ln -sr "${COOKBOOK_STAGE}/lib/libbz2.so.1.0" "${COOKBOOK_STAGE}/lib/libbz2.so" +""" From 0cf4d4b14636aa813ba9a645328d104e79dc66c9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 14 May 2025 09:25:36 -0600 Subject: [PATCH 2530/3180] curl: build dynamically --- recipes/net/curl/recipe.toml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/recipes/net/curl/recipe.toml b/recipes/net/curl/recipe.toml index 617b71be..b09f3a22 100644 --- a/recipes/net/curl/recipe.toml +++ b/recipes/net/curl/recipe.toml @@ -25,9 +25,9 @@ COOKBOOK_CONFIGURE_FLAGS=( --disable-ftp --disable-ipv6 --disable-ntlm-wb - --disable-shared --disable-tftp --disable-threaded-resolver + --enable-shared --enable-static --with-ca-path=/etc/ssl/certs --with-nghttp2="${COOKBOOK_SYSROOT}" @@ -40,7 +40,5 @@ cookbook_configure [package] dependencies = [ - "openssl1", - "zlib", "ca-certificates" ] From 46fe2bcbb4967a3ca1d9f995ce9c154b4c559c9c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 14 May 2025 10:17:46 -0600 Subject: [PATCH 2531/3180] libmodplug1: compile dynamically --- recipes/libs/libmodplug1/recipe.toml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/recipes/libs/libmodplug1/recipe.toml b/recipes/libs/libmodplug1/recipe.toml index 1ab705cc..3e3420c0 100644 --- a/recipes/libs/libmodplug1/recipe.toml +++ b/recipes/libs/libmodplug1/recipe.toml @@ -2,8 +2,13 @@ tar = "https://pilotfiber.dl.sourceforge.net/project/modplug-xmms/libmodplug/0.8.9.0/libmodplug-0.8.9.0.tar.gz" blake3 = "01d71f7fe4e1abeb848db02b74c70ab2fd51e824f5ea7e9e18631571a76c3592" script = """ -wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +DYNAMIC_INIT +autotools_recursive_regenerate """ [build] -template = "configure" +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From bf225df3c2863c71120ee7da251a339375cb4744 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 14 May 2025 10:22:40 -0600 Subject: [PATCH 2532/3180] libsndfile: compile dynamically --- recipes/wip/libs/other/libsndfile/recipe.toml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/recipes/wip/libs/other/libsndfile/recipe.toml b/recipes/wip/libs/other/libsndfile/recipe.toml index e243176c..e6f33515 100644 --- a/recipes/wip/libs/other/libsndfile/recipe.toml +++ b/recipes/wip/libs/other/libsndfile/recipe.toml @@ -1,10 +1,19 @@ -#TODO compiled but not tested [source] tar = "https://github.com/libsndfile/libsndfile/releases/download/1.2.0/libsndfile-1.2.0.tar.xz" +blake3 = "7ec1be7cc47fdffc38cf0cbf02857e6a34a13df22d19f541f04215929e1d7684" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + [build] -template = "configure" dependencies = [ #TODO "libflac", "libogg", "libvorbis", ] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From 229019b26832268575cd606b5b5e9cf464feadbd Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 14 May 2025 12:23:03 -0600 Subject: [PATCH 2533/3180] gstreamer: enable more features --- recipes/libs/gstreamer/recipe.toml | 47 +++++++++++++++++++++++++----- 1 file changed, 40 insertions(+), 7 deletions(-) diff --git a/recipes/libs/gstreamer/recipe.toml b/recipes/libs/gstreamer/recipe.toml index 5d67b068..ec930918 100644 --- a/recipes/libs/gstreamer/recipe.toml +++ b/recipes/libs/gstreamer/recipe.toml @@ -6,25 +6,55 @@ patches = ["redox.patch"] [build] template = "custom" dependencies = [ + "bzip2", "cairo", + "curl", "expat", #TODO: "ffmpeg6", - "freetype2", "fontconfig", - "gettext", + "freetype2", + "fribidi", + "gdk-pixbuf", + "gettext", "glib", "harfbuzz", + "libass", "libffi", - "libiconv", + "libgmp", + "libiconv", + "libicu", "libjpeg", + "libmodplug1", + "libnettle", "libogg", "libpng", + "libpsl", + "libpthread-stubs", + "libsndfile", + "libsoup", "libvorbis", + "libwebp", + "libx11", + "libxau", + "libxcb", + #TODO: "libxdamage", + "libxext", + "libxfixes", + "libxi", "libxml2", - #TODO "pango", + "libxxf86vm", + "mesa-x11", + "nghttp2", + #TODO: "openal", + "openssl1", + "pango", "pcre2", "pixman", - "zlib" + "sqlite3", + "x11proto", + "xextproto", + "xz", + "zlib", ] script = """ DYNAMIC_INIT @@ -33,14 +63,17 @@ export GLIB_GENMARSHAL="$(which glib-genmarshal)" export GLIB_MKENUMS="$(which glib-mkenums)" cookbook_meson \ + -Dc_args="-DM_LN2=0.69314718055994530942" \ -Ddevtools=disabled \ -Dexamples=disabled \ -Dlibav=disabled \ -Dlibnice=disabled \ -Dorc=disabled \ -Dtests=disabled \ - -Dtools=disabled \ + -Dtools=enabled \ -Dgstreamer:check=disabled \ -Dgstreamer:coretracers=disabled \ - -Dgst-plugins-bad:shm=disabled + -Dgst-plugins-bad:shm=disabled \ + -Dgst-plugins-base:xshm=disabled \ + -Dgst-plugins-good:ximagesrc-xshm=disabled """ From cafbc89fe92b6536c020af66f3183cd67f6cc752 Mon Sep 17 00:00:00 2001 From: Fabio Di Francesco Date: Mon, 19 May 2025 09:12:51 +0200 Subject: [PATCH 2534/3180] fix dynamic linked deps --- recipes/games/gigalomania/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/games/gigalomania/recipe.sh b/recipes/games/gigalomania/recipe.sh index d29aad06..77890f7b 100644 --- a/recipes/games/gigalomania/recipe.sh +++ b/recipes/games/gigalomania/recipe.sh @@ -11,7 +11,7 @@ function recipe_version { function recipe_build { export CPPHOST=${HOST}-g++ sysroot="$(realpath ../sysroot)" - export LDFLAGS="-L$sysroot/lib --static" + export LDFLAGS="-L$sysroot/lib -rdynamic" export CPPFLAGS="-I$sysroot/include" "$REDOX_MAKE" all -j"$($NPROC)" skip=1 From b4519d1a574f8759376231f4b79cb38e527bc478 Mon Sep 17 00:00:00 2001 From: Fabio Di Francesco Date: Mon, 19 May 2025 09:14:09 +0200 Subject: [PATCH 2535/3180] fix dynamic linked deps --- recipes/demos/sdl2-gears/recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/demos/sdl2-gears/recipe.sh b/recipes/demos/sdl2-gears/recipe.sh index ae0f8c4e..b9a661dd 100644 --- a/recipes/demos/sdl2-gears/recipe.sh +++ b/recipes/demos/sdl2-gears/recipe.sh @@ -16,7 +16,7 @@ function recipe_prepare { function recipe_build { sysroot="$(realpath ../sysroot)" set -x - "${CXX}" -O2 -I "$sysroot/include" -L "$sysroot/lib" gears.c -o sdl2_gears -static -lSDL2_image -lSDL2_mixer -lSDL2_ttf -lSDL2 -lorbital $("${PKG_CONFIG}" --libs osmesa) -lfreetype -lpng -ljpeg -lvorbisfile -lvorbis -logg -lz + "${CXX}" -O2 -I "$sysroot/include" -L "$sysroot/lib" gears.c -o sdl2_gears -dynamic -lSDL2_image -lSDL2_mixer -lSDL2_ttf -lSDL2 -lorbital $("${PKG_CONFIG}" --libs osmesa) -lfreetype -lpng -ljpeg -lvorbisfile -lvorbis -logg -lz set +x skip=1 } From 2f939c7d08111598008f34181b821c38f985e22e Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Tue, 20 May 2025 22:05:26 +0200 Subject: [PATCH 2536/3180] Start lived before regular disk drivers This ensures that it takes priority when mounting the rootfs, preventing hangs in live mode if a disk driver hangs when trying to access it. --- recipes/core/base-initfs/init.rc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/core/base-initfs/init.rc b/recipes/core/base-initfs/init.rc index 383d7b1b..ac92dc7b 100644 --- a/recipes/core/base-initfs/init.rc +++ b/recipes/core/base-initfs/init.rc @@ -21,13 +21,16 @@ fbbootlogd inputd -A 1 fbcond 2 +# Live disk +# Note: Needs to start before drivers to ensure it gets priority when redoxfs searches for disks +lived +unset DISK_LIVE_ADDR DISK_LIVE_SIZE + # Drivers run /scheme/initfs/etc/init_drivers.rc unset RSDP_ADDR RSDP_SIZE # Mount rootfs -lived -unset DISK_LIVE_ADDR DISK_LIVE_SIZE redoxfs --uuid $REDOXFS_UUID file $REDOXFS_BLOCK unset REDOXFS_UUID REDOXFS_BLOCK REDOXFS_PASSWORD_ADDR REDOXFS_PASSWORD_SIZE From 968fb22b8c977d4815c1130f08f725d75c0b5225 Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Wed, 21 May 2025 21:05:08 -0400 Subject: [PATCH 2537/3180] Fix RustPython compilation The head of the repository compiles whereas the branch doesn't anymore. DYNAMIC_INIT is needed because of a linking error when the dependencies are dynamically compiled. --- recipes/dev/rustpython/recipe.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/dev/rustpython/recipe.toml b/recipes/dev/rustpython/recipe.toml index 5c064657..a2b1f134 100644 --- a/recipes/dev/rustpython/recipe.toml +++ b/recipes/dev/rustpython/recipe.toml @@ -1,6 +1,5 @@ [source] git = "https://github.com/RustPython/RustPython" -branch = "redox-release" [build] dependencies = [ @@ -9,6 +8,8 @@ dependencies = [ ] template = "custom" script = """ +DYNAMIC_INIT + (cd "${COOKBOOK_SOURCE}" && bash scripts/redox/uncomment-cargo.sh && cargo update) export BUILDTIME_RUSTPYTHONPATH=/lib/rustpython export OPENSSL_DIR="${COOKBOOK_SYSROOT}" From cbc2821e2f4c7266e7511e33da91d474cba1519a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 26 May 2025 11:36:37 -0300 Subject: [PATCH 2538/3180] Add recipes --- recipes/wip/analysis/email-sleuth/recipe.toml | 5 ++++ recipes/wip/demos/mousefood/recipe.toml | 8 ++++++ recipes/wip/dev/git-tools/riff/recipe.toml | 5 ++++ recipes/wip/dev/other/wrkflw/recipe.toml | 8 ++++++ recipes/wip/dev/rust-tools/tagref/recipe.toml | 5 ++++ recipes/wip/net/download/apkeep/recipe.toml | 5 ++++ recipes/wip/search/srgn/recipe.toml | 5 ++++ recipes/wip/terminal/tarts/recipe.toml | 5 ++++ recipes/wip/text/basalt/recipe.toml | 8 ++++++ .../wip/wayland/fht-compositor/recipe.toml | 25 +++++++++++++++++++ 10 files changed, 79 insertions(+) create mode 100644 recipes/wip/analysis/email-sleuth/recipe.toml create mode 100644 recipes/wip/demos/mousefood/recipe.toml create mode 100644 recipes/wip/dev/git-tools/riff/recipe.toml create mode 100644 recipes/wip/dev/other/wrkflw/recipe.toml create mode 100644 recipes/wip/dev/rust-tools/tagref/recipe.toml create mode 100644 recipes/wip/net/download/apkeep/recipe.toml create mode 100644 recipes/wip/search/srgn/recipe.toml create mode 100644 recipes/wip/terminal/tarts/recipe.toml create mode 100644 recipes/wip/text/basalt/recipe.toml create mode 100644 recipes/wip/wayland/fht-compositor/recipe.toml diff --git a/recipes/wip/analysis/email-sleuth/recipe.toml b/recipes/wip/analysis/email-sleuth/recipe.toml new file mode 100644 index 00000000..b7a5456c --- /dev/null +++ b/recipes/wip/analysis/email-sleuth/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/tokenizer-decode/email-sleuth" +[build] +template = "cargo" diff --git a/recipes/wip/demos/mousefood/recipe.toml b/recipes/wip/demos/mousefood/recipe.toml new file mode 100644 index 00000000..c323b674 --- /dev/null +++ b/recipes/wip/demos/mousefood/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/j-g00da/mousefood" +[build] +template = "custom" +script = """ +cookbook_cargo_examples simulator +""" diff --git a/recipes/wip/dev/git-tools/riff/recipe.toml b/recipes/wip/dev/git-tools/riff/recipe.toml new file mode 100644 index 00000000..d8f32d81 --- /dev/null +++ b/recipes/wip/dev/git-tools/riff/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/walles/riff" +[build] +template = "cargo" diff --git a/recipes/wip/dev/other/wrkflw/recipe.toml b/recipes/wip/dev/other/wrkflw/recipe.toml new file mode 100644 index 00000000..f5a50491 --- /dev/null +++ b/recipes/wip/dev/other/wrkflw/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/bahdotsh/wrkflw" +[build] +template = "custom" +script = """ +cookbook_cargo_packages wrkflw +""" diff --git a/recipes/wip/dev/rust-tools/tagref/recipe.toml b/recipes/wip/dev/rust-tools/tagref/recipe.toml new file mode 100644 index 00000000..497446f1 --- /dev/null +++ b/recipes/wip/dev/rust-tools/tagref/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/stepchowfun/tagref" +[build] +template = "cargo" diff --git a/recipes/wip/net/download/apkeep/recipe.toml b/recipes/wip/net/download/apkeep/recipe.toml new file mode 100644 index 00000000..97f907f9 --- /dev/null +++ b/recipes/wip/net/download/apkeep/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/EFForg/apkeep" +[build] +template = "cargo" diff --git a/recipes/wip/search/srgn/recipe.toml b/recipes/wip/search/srgn/recipe.toml new file mode 100644 index 00000000..4e00db65 --- /dev/null +++ b/recipes/wip/search/srgn/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/alexpovel/srgn" +[build] +template = "cargo" diff --git a/recipes/wip/terminal/tarts/recipe.toml b/recipes/wip/terminal/tarts/recipe.toml new file mode 100644 index 00000000..9a46e6b0 --- /dev/null +++ b/recipes/wip/terminal/tarts/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/oiwn/tarts" +[build] +template = "cargo" diff --git a/recipes/wip/text/basalt/recipe.toml b/recipes/wip/text/basalt/recipe.toml new file mode 100644 index 00000000..22e8922e --- /dev/null +++ b/recipes/wip/text/basalt/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/erikjuhani/basalt" +[build] +template = "custom" +script = """ +cookbook_cargo_packages basalt-tui +""" diff --git a/recipes/wip/wayland/fht-compositor/recipe.toml b/recipes/wip/wayland/fht-compositor/recipe.toml new file mode 100644 index 00000000..e36d88a8 --- /dev/null +++ b/recipes/wip/wayland/fht-compositor/recipe.toml @@ -0,0 +1,25 @@ +#TODO not compiled or tested +#TODO enable the udev-backend flag once wayland and eudev is working +[source] +git = "https://github.com/nferhat/fht-compositor" +[build] +template = "custom" +dependencies = [ + "libwayland", + "libxkbcommon", + "mesa", +] +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/wayland-sessions +cp -rv "${COOKBOOK_SOURCE}"/res/fht-compositor.desktop "${COOKBOOK_STAGE}"/usr/share/wayland-sessions +package=fht-compositor +"${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --package "${package}" \ + --release + --winit-backend + mkdir -pv "${COOKBOOK_STAGE}/usr/bin" + cp -v \ + "target/${TARGET}/release/${package}" \ + "${COOKBOOK_STAGE}/usr/bin/${package}" +""" From 41ccd31eb0af2c4664b133e917a2049595d6478e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 26 May 2025 14:03:44 -0300 Subject: [PATCH 2539/3180] Add recipes --- recipes/wip/db/limbo/recipe.toml | 8 ++++++++ recipes/wip/dev/debug/nnd/recipe.toml | 6 ++++++ recipes/wip/dev/framework/feather/recipe.toml | 5 +++++ recipes/wip/dev/git-tools/patchy/recipe.toml | 5 +++++ recipes/wip/dev/lang/ristrettto/recipe.toml | 8 ++++++++ recipes/wip/dev/rust-tools/dylint/recipe.toml | 8 ++++++++ recipes/wip/net/download/kelpsget/recipe.toml | 9 +++++++++ recipes/wip/security/yara-x/recipe.toml | 8 ++++++++ recipes/wip/terminal/scooter/recipe.toml | 8 ++++++++ recipes/wip/text/edit/recipe.toml | 5 +++++ recipes/wip/text/ripwc/recipe.toml | 5 +++++ recipes/wip/web/faircamp/recipe.toml | 5 +++++ 12 files changed, 80 insertions(+) create mode 100644 recipes/wip/db/limbo/recipe.toml create mode 100644 recipes/wip/dev/debug/nnd/recipe.toml create mode 100644 recipes/wip/dev/framework/feather/recipe.toml create mode 100644 recipes/wip/dev/git-tools/patchy/recipe.toml create mode 100644 recipes/wip/dev/lang/ristrettto/recipe.toml create mode 100644 recipes/wip/dev/rust-tools/dylint/recipe.toml create mode 100644 recipes/wip/net/download/kelpsget/recipe.toml create mode 100644 recipes/wip/security/yara-x/recipe.toml create mode 100644 recipes/wip/terminal/scooter/recipe.toml create mode 100644 recipes/wip/text/edit/recipe.toml create mode 100644 recipes/wip/text/ripwc/recipe.toml create mode 100644 recipes/wip/web/faircamp/recipe.toml diff --git a/recipes/wip/db/limbo/recipe.toml b/recipes/wip/db/limbo/recipe.toml new file mode 100644 index 00000000..c68c0592 --- /dev/null +++ b/recipes/wip/db/limbo/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/tursodatabase/limbo" +[build] +template = "custom" +script = """ +cookbook_cargo_packages limbo_cli +""" diff --git a/recipes/wip/dev/debug/nnd/recipe.toml b/recipes/wip/dev/debug/nnd/recipe.toml new file mode 100644 index 00000000..e26a013f --- /dev/null +++ b/recipes/wip/dev/debug/nnd/recipe.toml @@ -0,0 +1,6 @@ +#TODO not compiled or tested +#TODO use the "dbgo" profile +[source] +git = "https://github.com/al13n321/nnd" +[build] +template = "cargo" diff --git a/recipes/wip/dev/framework/feather/recipe.toml b/recipes/wip/dev/framework/feather/recipe.toml new file mode 100644 index 00000000..9a30f935 --- /dev/null +++ b/recipes/wip/dev/framework/feather/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/BersisSe/feather-cli" +[build] +template = "cargo" diff --git a/recipes/wip/dev/git-tools/patchy/recipe.toml b/recipes/wip/dev/git-tools/patchy/recipe.toml new file mode 100644 index 00000000..52de86ff --- /dev/null +++ b/recipes/wip/dev/git-tools/patchy/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/nik-rev/patchy" +[build] +template = "cargo" diff --git a/recipes/wip/dev/lang/ristrettto/recipe.toml b/recipes/wip/dev/lang/ristrettto/recipe.toml new file mode 100644 index 00000000..e6b345db --- /dev/null +++ b/recipes/wip/dev/lang/ristrettto/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/theseus-rs/ristretto" +[build] +template = "custom" +script = """ +cookbook_cargo_packages ristretto_cli +""" diff --git a/recipes/wip/dev/rust-tools/dylint/recipe.toml b/recipes/wip/dev/rust-tools/dylint/recipe.toml new file mode 100644 index 00000000..a3a60063 --- /dev/null +++ b/recipes/wip/dev/rust-tools/dylint/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/trailofbits/dylint" +[build] +template = "custom" +script = """ +cookbook_cargo_packages cargo-dylint dylint-link +""" diff --git a/recipes/wip/net/download/kelpsget/recipe.toml b/recipes/wip/net/download/kelpsget/recipe.toml new file mode 100644 index 00000000..c02bd15b --- /dev/null +++ b/recipes/wip/net/download/kelpsget/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +#TODO require transmission-daemon +[source] +git = "https://github.com/davimf721/KelpsGet" +[build] +template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/security/yara-x/recipe.toml b/recipes/wip/security/yara-x/recipe.toml new file mode 100644 index 00000000..fe61456a --- /dev/null +++ b/recipes/wip/security/yara-x/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/VirusTotal/yara-x" +[build] +template = "custom" +script = """ +cookbook_cargo_packages yara-x-cli +""" diff --git a/recipes/wip/terminal/scooter/recipe.toml b/recipes/wip/terminal/scooter/recipe.toml new file mode 100644 index 00000000..167f32f6 --- /dev/null +++ b/recipes/wip/terminal/scooter/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/thomasschafer/scooter" +[build] +template = "custom" +script = """ +cookbook_cargo_packages scooter +""" diff --git a/recipes/wip/text/edit/recipe.toml b/recipes/wip/text/edit/recipe.toml new file mode 100644 index 00000000..d21fb69d --- /dev/null +++ b/recipes/wip/text/edit/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/microsoft/edit" +[build] +template = "cargo" diff --git a/recipes/wip/text/ripwc/recipe.toml b/recipes/wip/text/ripwc/recipe.toml new file mode 100644 index 00000000..4bd75ce4 --- /dev/null +++ b/recipes/wip/text/ripwc/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/LuminousToaster/ripwc" +[build] +template = "cargo" diff --git a/recipes/wip/web/faircamp/recipe.toml b/recipes/wip/web/faircamp/recipe.toml new file mode 100644 index 00000000..3c523ae2 --- /dev/null +++ b/recipes/wip/web/faircamp/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://codeberg.org/simonrepp/faircamp" +[build] +template = "cargo" From 611eea8daf37f1cb85577b327de223ae81c7ada0 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 27 May 2025 08:11:25 -0300 Subject: [PATCH 2540/3180] Update recipes --- recipes/wip/dev/debug/nnd/recipe.toml | 6 ++++-- recipes/wip/wayland/fht-compositor/recipe.toml | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/recipes/wip/dev/debug/nnd/recipe.toml b/recipes/wip/dev/debug/nnd/recipe.toml index e26a013f..92f0c70c 100644 --- a/recipes/wip/dev/debug/nnd/recipe.toml +++ b/recipes/wip/dev/debug/nnd/recipe.toml @@ -1,6 +1,8 @@ #TODO not compiled or tested -#TODO use the "dbgo" profile [source] git = "https://github.com/al13n321/nnd" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo --profile=dbgo +""" diff --git a/recipes/wip/wayland/fht-compositor/recipe.toml b/recipes/wip/wayland/fht-compositor/recipe.toml index e36d88a8..33ada5d7 100644 --- a/recipes/wip/wayland/fht-compositor/recipe.toml +++ b/recipes/wip/wayland/fht-compositor/recipe.toml @@ -1,5 +1,5 @@ #TODO not compiled or tested -#TODO enable the udev-backend flag once wayland and eudev is working +#TODO enable the "opt" profile once wayland and eudev is working [source] git = "https://github.com/nferhat/fht-compositor" [build] From c572cf72d1d0a2254d8a30a8540f67a8e25c1513 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 28 May 2025 12:42:18 -0300 Subject: [PATCH 2541/3180] Add recipes --- recipes/wip/backup/borg/recipe.toml | 14 ++++++++ recipes/wip/backup/vorta/recipe.toml | 7 ++++ recipes/wip/dev/debug/termfu/recipe.toml | 17 +++++++++ recipes/wip/libs/fs/libattr/recipe.toml | 5 +++ recipes/wip/libs/security/libacl/recipe.toml | 5 +++ recipes/wip/search/ugrep/recipe.toml | 7 ++++ .../wip/terminal/contour-terminal/recipe.toml | 35 +++++++++++++++++++ 7 files changed, 90 insertions(+) create mode 100644 recipes/wip/backup/borg/recipe.toml create mode 100644 recipes/wip/backup/vorta/recipe.toml create mode 100644 recipes/wip/dev/debug/termfu/recipe.toml create mode 100644 recipes/wip/libs/fs/libattr/recipe.toml create mode 100644 recipes/wip/libs/security/libacl/recipe.toml create mode 100644 recipes/wip/search/ugrep/recipe.toml create mode 100644 recipes/wip/terminal/contour-terminal/recipe.toml diff --git a/recipes/wip/backup/borg/recipe.toml b/recipes/wip/backup/borg/recipe.toml new file mode 100644 index 00000000..6df0b093 --- /dev/null +++ b/recipes/wip/backup/borg/recipe.toml @@ -0,0 +1,14 @@ +#TODO missing script for pip +# build instructions - https://borgbackup.readthedocs.io/en/stable/installation.html#source-install +[source] +tar = "https://github.com/borgbackup/borg/releases/download/1.4.1/borgbackup-1.4.1.tar.gz" +[build] +template = "custom" +dependencies = [ + "openssl1", + "libacl", + "libattr", + "xxhash", + "lz4", + "zstd", +] diff --git a/recipes/wip/backup/vorta/recipe.toml b/recipes/wip/backup/vorta/recipe.toml new file mode 100644 index 00000000..830541fe --- /dev/null +++ b/recipes/wip/backup/vorta/recipe.toml @@ -0,0 +1,7 @@ +#TODO missing script for pip +# build instructions - https://vorta.borgbase.com/install/linux/#install-from-source +[source] +git = "https://github.com/borgbase/vorta" +rev = "f2b42742f9a56f15a46f2b287825122032fcdb90" +[build] +template = "custom" diff --git a/recipes/wip/dev/debug/termfu/recipe.toml b/recipes/wip/dev/debug/termfu/recipe.toml new file mode 100644 index 00000000..4b790c64 --- /dev/null +++ b/recipes/wip/dev/debug/termfu/recipe.toml @@ -0,0 +1,17 @@ +#TODO missing script for gnu make +# build instructions - https://github.com/jvalcher/termfu#build-and-install +[source] +git = "https://github.com/jvalcher/termfu" +rev = "71535f59142d145edcfe8995ca119ef377b2bc00" +[build] +template = "custom" +dependencies = [ + "ncurses", +] +[package] +dependencies = [ + "gnu-make", + "gcc13", + "gdb", + "python312", +] diff --git a/recipes/wip/libs/fs/libattr/recipe.toml b/recipes/wip/libs/fs/libattr/recipe.toml new file mode 100644 index 00000000..ac305e3f --- /dev/null +++ b/recipes/wip/libs/fs/libattr/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.savannah.nongnu.org/releases/attr/attr-2.5.2.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libs/security/libacl/recipe.toml b/recipes/wip/libs/security/libacl/recipe.toml new file mode 100644 index 00000000..2ed50208 --- /dev/null +++ b/recipes/wip/libs/security/libacl/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.savannah.nongnu.org/releases/acl/acl-2.3.2.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/search/ugrep/recipe.toml b/recipes/wip/search/ugrep/recipe.toml new file mode 100644 index 00000000..0834f2c8 --- /dev/null +++ b/recipes/wip/search/ugrep/recipe.toml @@ -0,0 +1,7 @@ +#TODO not compiled or tested +#TODO maybe wrong template +[source] +git = "https://github.com/Genivia/ugrep" +rev = "7ddb6d9690e70bc426da5fed3e1031973823fc69" +[build] +template = "configure" diff --git a/recipes/wip/terminal/contour-terminal/recipe.toml b/recipes/wip/terminal/contour-terminal/recipe.toml new file mode 100644 index 00000000..565ca292 --- /dev/null +++ b/recipes/wip/terminal/contour-terminal/recipe.toml @@ -0,0 +1,35 @@ +#TODO not compiled or tested +#TODO missing dependencies, see https://github.com/contour-terminal/contour/blob/master/scripts/install-deps.sh#L328 +# build instructions - https://contour-terminal.org/install/#unix-like-systems-linux-freebsd-macos +[source] +git = "https://github.com/contour-terminal/contour" +rev = "116f1d16f6dc33ab8b0f6010a44e7b23eadeb8ca" +[build] +template = "custom" +dependencies = [ + "fontconfig", + "freetyoe2", + "harfbuzz", + "libssh2", + "ncurses", + "qt6-base", + "qt6-declarative", + "qt6-multimedia", + "qt6-tools", + "libxcb", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" From 3c1c17dfc956af19ffeae7ae77587283205bf720 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 28 May 2025 12:59:39 -0300 Subject: [PATCH 2542/3180] Move and update the mono recipe --- recipes/wip/dev/lang/mono/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 recipes/wip/dev/lang/mono/recipe.toml diff --git a/recipes/wip/dev/lang/mono/recipe.toml b/recipes/wip/dev/lang/mono/recipe.toml new file mode 100644 index 00000000..9aefc5e6 --- /dev/null +++ b/recipes/wip/dev/lang/mono/recipe.toml @@ -0,0 +1,5 @@ +#TODO can't recognize the redox target +[source] +tar = "https://dl.winehq.org/mono/sources/mono/mono-6.14.1.tar.xz" +[build] +template = "configure" From b305204e4ce395b98e31a810cb3966b80e5354d0 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 28 May 2025 13:01:28 -0300 Subject: [PATCH 2543/3180] Remove the previous mono folder --- recipes/wip/dev/other/mono/recipe.toml | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 recipes/wip/dev/other/mono/recipe.toml diff --git a/recipes/wip/dev/other/mono/recipe.toml b/recipes/wip/dev/other/mono/recipe.toml deleted file mode 100644 index c3920fa5..00000000 --- a/recipes/wip/dev/other/mono/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO can't recognize the redox target -[source] -tar = "https://download.mono-project.com/sources/mono/mono-6.12.0.199.tar.xz" -[build] -template = "configure" From b5f9508473d5df4b077ff783b2e88acf31493629 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 29 May 2025 09:04:42 -0300 Subject: [PATCH 2544/3180] Remove a TODO from the hello-world-examples recipe --- recipes/dev/hello-world-examples/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/dev/hello-world-examples/recipe.toml b/recipes/dev/hello-world-examples/recipe.toml index 43f16e30..b3fd9567 100644 --- a/recipes/dev/hello-world-examples/recipe.toml +++ b/recipes/dev/hello-world-examples/recipe.toml @@ -1,4 +1,3 @@ -#TODO Not compiled or tested [source] git = "https://github.com/leachim6/hello-world" [build] From 40672a173411d369a1268c2c53ef23df8b1de78a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 29 May 2025 09:26:00 -0300 Subject: [PATCH 2545/3180] Update TODOs --- recipes/wip/analysis/email-sleuth/recipe.toml | 2 +- recipes/wip/crypto/stupidfs/recipe.toml | 2 +- recipes/wip/data-recovery/testdisk/recipe.toml | 2 +- recipes/wip/db/limbo/recipe.toml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/recipes/wip/analysis/email-sleuth/recipe.toml b/recipes/wip/analysis/email-sleuth/recipe.toml index b7a5456c..36bdabc6 100644 --- a/recipes/wip/analysis/email-sleuth/recipe.toml +++ b/recipes/wip/analysis/email-sleuth/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO openssl-sys crate error [source] git = "https://github.com/tokenizer-decode/email-sleuth" [build] diff --git a/recipes/wip/crypto/stupidfs/recipe.toml b/recipes/wip/crypto/stupidfs/recipe.toml index a78f58e4..b598425a 100644 --- a/recipes/wip/crypto/stupidfs/recipe.toml +++ b/recipes/wip/crypto/stupidfs/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/GoldenStack/stupidfs" [build] diff --git a/recipes/wip/data-recovery/testdisk/recipe.toml b/recipes/wip/data-recovery/testdisk/recipe.toml index 13e2ecb3..3c92e0a8 100644 --- a/recipes/wip/data-recovery/testdisk/recipe.toml +++ b/recipes/wip/data-recovery/testdisk/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compilation error # build instructions - https://www.cgsecurity.org/wiki/TestDisk_Compilation # add optional libraries to expand the features - https://www.cgsecurity.org/wiki/TestDisk_Compilation#Libraries [source] diff --git a/recipes/wip/db/limbo/recipe.toml b/recipes/wip/db/limbo/recipe.toml index c68c0592..ac1a00d8 100644 --- a/recipes/wip/db/limbo/recipe.toml +++ b/recipes/wip/db/limbo/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compilation error on the sqlite3 parser [source] git = "https://github.com/tursodatabase/limbo" [build] From fe88e0d7b2f10112b0ef12820043cb6baf6f5c2a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 29 May 2025 09:27:11 -0300 Subject: [PATCH 2546/3180] Try to fix the lyon recipe --- recipes/wip/demos/lyon/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/demos/lyon/recipe.toml b/recipes/wip/demos/lyon/recipe.toml index 0d21e6d4..9f0a89d3 100644 --- a/recipes/wip/demos/lyon/recipe.toml +++ b/recipes/wip/demos/lyon/recipe.toml @@ -4,5 +4,5 @@ git = "https://github.com/nical/lyon" [build] template = "custom" script = """ -cookbook_cargo_examples wgpu-example +cookbook_cargo_examples svg-rendering-example """ From 24f96f445e2a26009c7904982ce6a535ce368a93 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 29 May 2025 09:34:10 -0300 Subject: [PATCH 2547/3180] Fix and improve the lyon recipe --- recipes/wip/demos/lyon/recipe.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/wip/demos/lyon/recipe.toml b/recipes/wip/demos/lyon/recipe.toml index 9f0a89d3..0583857b 100644 --- a/recipes/wip/demos/lyon/recipe.toml +++ b/recipes/wip/demos/lyon/recipe.toml @@ -1,8 +1,9 @@ #TODO not compiled or tested +#TODO move to the "graphics" category [source] git = "https://github.com/nical/lyon" [build] template = "custom" script = """ -cookbook_cargo_examples svg-rendering-example +cookbook_cargo_packages lyon_cli wgpu-example svg-rendering-example """ From 8b9d440dc3da0503c36a583909593e66e9859a38 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 29 May 2025 09:43:31 -0300 Subject: [PATCH 2548/3180] Update the lyon TODO --- recipes/wip/demos/lyon/recipe.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/wip/demos/lyon/recipe.toml b/recipes/wip/demos/lyon/recipe.toml index 0583857b..78479f9e 100644 --- a/recipes/wip/demos/lyon/recipe.toml +++ b/recipes/wip/demos/lyon/recipe.toml @@ -1,4 +1,5 @@ -#TODO not compiled or tested +#TODO compiled but not tested +#TODO fix the packaging #TODO move to the "graphics" category [source] git = "https://github.com/nical/lyon" From c6c9e9de5ffda3132a139060469b2cce10534ca7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 29 May 2025 09:44:15 -0300 Subject: [PATCH 2549/3180] Fix the macroquad recipe --- recipes/wip/demos/macroquad/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/demos/macroquad/recipe.toml b/recipes/wip/demos/macroquad/recipe.toml index 5c30eb81..81d4d3c3 100644 --- a/recipes/wip/demos/macroquad/recipe.toml +++ b/recipes/wip/demos/macroquad/recipe.toml @@ -4,5 +4,5 @@ git = "https://github.com/not-fl3/macroquad" [build] template = "custom" script = """ -cookbook_cargo_examples 3d basic_shapes camera chess ferris first_person particles_example platformer shadertoy snake text ui +cookbook_cargo_examples 3d basic_shapes camera first_person particles_example platformer shadertoy snake text ui """ From cecc4641dab14558320911f17b2ad2c59b1df302 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 29 May 2025 09:53:38 -0300 Subject: [PATCH 2550/3180] Fix the mage recipe and update a TODO --- recipes/wip/demos/macroquad/recipe.toml | 2 +- recipes/wip/demos/mage/recipe.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/wip/demos/macroquad/recipe.toml b/recipes/wip/demos/macroquad/recipe.toml index 81d4d3c3..d7d56592 100644 --- a/recipes/wip/demos/macroquad/recipe.toml +++ b/recipes/wip/demos/macroquad/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/not-fl3/macroquad" [build] diff --git a/recipes/wip/demos/mage/recipe.toml b/recipes/wip/demos/mage/recipe.toml index db770d1c..a9754c6e 100644 --- a/recipes/wip/demos/mage/recipe.toml +++ b/recipes/wip/demos/mage/recipe.toml @@ -4,5 +4,5 @@ git = "https://github.com/baad-c0de/mage-core" [build] template = "custom" script = """ -cookbook_cargo_examples basic font3 hello +cookbook_cargo_examples basic hello """ From b22a489f4bd0d8325355881af24229cb3eaf6be7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 29 May 2025 11:47:53 -0300 Subject: [PATCH 2551/3180] Fix the mousefood recipe and update a TODO --- recipes/wip/demos/mage/recipe.toml | 2 +- recipes/wip/demos/mousefood/recipe.toml | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/recipes/wip/demos/mage/recipe.toml b/recipes/wip/demos/mage/recipe.toml index a9754c6e..9a14f3e9 100644 --- a/recipes/wip/demos/mage/recipe.toml +++ b/recipes/wip/demos/mage/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/baad-c0de/mage-core" [build] diff --git a/recipes/wip/demos/mousefood/recipe.toml b/recipes/wip/demos/mousefood/recipe.toml index c323b674..94ee5dfd 100644 --- a/recipes/wip/demos/mousefood/recipe.toml +++ b/recipes/wip/demos/mousefood/recipe.toml @@ -4,5 +4,17 @@ git = "https://github.com/j-g00da/mousefood" [build] template = "custom" script = """ -cookbook_cargo_examples simulator +recipe="$(basename "${COOKBOOK_RECIPE}")" + for example in simulator + do + "${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/${PACKAGE_PATH}/Cargo.toml" \ + --example "${example}" \ + --release \ + --simulator + mkdir -pv "${COOKBOOK_STAGE}/usr/bin" + cp -v \ + "target/${TARGET}/${build_type}/examples/${example}" \ + "${COOKBOOK_STAGE}/usr/bin/${recipe}_${example}" + done """ From 359042fed007f4d039221cc29e1bc812294e9e15 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 1 Jun 2025 14:34:03 -0300 Subject: [PATCH 2552/3180] Add recipes --- recipes/wip/demos/freya/recipe.toml | 18 ++++++++++++++++++ recipes/wip/demos/soft-ratatui/recipe.toml | 8 ++++++++ recipes/wip/sound/wiremix/recipe.toml | 8 ++++++++ 3 files changed, 34 insertions(+) create mode 100644 recipes/wip/demos/freya/recipe.toml create mode 100644 recipes/wip/demos/soft-ratatui/recipe.toml create mode 100644 recipes/wip/sound/wiremix/recipe.toml diff --git a/recipes/wip/demos/freya/recipe.toml b/recipes/wip/demos/freya/recipe.toml new file mode 100644 index 00000000..b6dbaf88 --- /dev/null +++ b/recipes/wip/demos/freya/recipe.toml @@ -0,0 +1,18 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/marc2332/freya" +[build] +template = "custom" +dependencies = [ + "openssl1", + "gtk3", +] +script = """ +cookbook_cargo_examples animated_position animated_tabs animation \ +button camera checkbox clock counter drag drag_drop dynamic_theme \ +file_explorer frameless_window gradient graph highlight image image_viewer \ +images_slideshow infinite_list input keyboard_navigation menu mouse_trace \ +opacity pointer popup position progress_bar radio render_canvas rotate scroll \ +selectable_text sequential_animation shader shader_editor shadow simple_editor \ +speedometer svg tab table text text_editors tic_tac_toe touch ui website window_size +""" diff --git a/recipes/wip/demos/soft-ratatui/recipe.toml b/recipes/wip/demos/soft-ratatui/recipe.toml new file mode 100644 index 00000000..a2e8ca65 --- /dev/null +++ b/recipes/wip/demos/soft-ratatui/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/gold-silver-copper/soft_ratatui" +[build] +template = "custom" +script = """ +cookbook_cargo_packages egui_example +""" diff --git a/recipes/wip/sound/wiremix/recipe.toml b/recipes/wip/sound/wiremix/recipe.toml new file mode 100644 index 00000000..7fe946ea --- /dev/null +++ b/recipes/wip/sound/wiremix/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/tsowell/wiremix" +[build] +template = "cargo" +dependencies = [ + "pipewire", +] From 7481fcdf48e14c0a2949cee01cc9c80249a33e6d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 1 Jun 2025 14:35:17 -0300 Subject: [PATCH 2553/3180] Try to fix the mousefood recipe --- recipes/wip/demos/mousefood/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/demos/mousefood/recipe.toml b/recipes/wip/demos/mousefood/recipe.toml index 94ee5dfd..6f870f00 100644 --- a/recipes/wip/demos/mousefood/recipe.toml +++ b/recipes/wip/demos/mousefood/recipe.toml @@ -11,7 +11,7 @@ recipe="$(basename "${COOKBOOK_RECIPE}")" --manifest-path "${COOKBOOK_SOURCE}/${PACKAGE_PATH}/Cargo.toml" \ --example "${example}" \ --release \ - --simulator + --features=simulator mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ "target/${TARGET}/${build_type}/examples/${example}" \ From 509912e3a5b0ab192eb88a940120c0af2361f6ed Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 1 Jun 2025 15:34:28 -0300 Subject: [PATCH 2554/3180] Fix the pipes-rs recipe and update TODOs --- recipes/wip/demos/mousefood/recipe.toml | 4 ++++ recipes/wip/demos/pingora/recipe.toml | 2 +- recipes/wip/demos/pipes-rs/recipe.toml | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/recipes/wip/demos/mousefood/recipe.toml b/recipes/wip/demos/mousefood/recipe.toml index 6f870f00..b2214ef9 100644 --- a/recipes/wip/demos/mousefood/recipe.toml +++ b/recipes/wip/demos/mousefood/recipe.toml @@ -1,8 +1,12 @@ #TODO not compiled or tested +#TODO maybe need a patch to use the sdl2 dependency from redox [source] git = "https://github.com/j-g00da/mousefood" [build] template = "custom" +dependencies = [ + "sdl2", +] script = """ recipe="$(basename "${COOKBOOK_RECIPE}")" for example in simulator diff --git a/recipes/wip/demos/pingora/recipe.toml b/recipes/wip/demos/pingora/recipe.toml index 2abba0d4..27ff7561 100644 --- a/recipes/wip/demos/pingora/recipe.toml +++ b/recipes/wip/demos/pingora/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO jemalloc-sys crate error [source] git = "https://github.com/cloudflare/pingora" [build] diff --git a/recipes/wip/demos/pipes-rs/recipe.toml b/recipes/wip/demos/pipes-rs/recipe.toml index c970f372..35a1f4fb 100644 --- a/recipes/wip/demos/pipes-rs/recipe.toml +++ b/recipes/wip/demos/pipes-rs/recipe.toml @@ -4,5 +4,5 @@ git = "https://github.com/lhvy/pipes-rs" [build] template = "custom" script = """ -cookbook_cargo_packages pipe-rs +cookbook_cargo_packages pipes-rs """ From 90d4f6d3a16d53e8bed22cc747d41c707d844586 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 1 Jun 2025 15:41:07 -0300 Subject: [PATCH 2555/3180] Fix the pixels recipe and update TODOs --- recipes/wip/demos/pipes-rs/recipe.toml | 2 +- recipes/wip/demos/piston/recipe.toml | 2 +- recipes/wip/demos/pixels/recipe.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/wip/demos/pipes-rs/recipe.toml b/recipes/wip/demos/pipes-rs/recipe.toml index 35a1f4fb..9759825e 100644 --- a/recipes/wip/demos/pipes-rs/recipe.toml +++ b/recipes/wip/demos/pipes-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO libmalloc-sys crate error [source] git = "https://github.com/lhvy/pipes-rs" [build] diff --git a/recipes/wip/demos/piston/recipe.toml b/recipes/wip/demos/piston/recipe.toml index f470907d..d8816796 100644 --- a/recipes/wip/demos/piston/recipe.toml +++ b/recipes/wip/demos/piston/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO glutin crate error [source] git = "https://github.com/pistondevelopers/piston-examples" [build] diff --git a/recipes/wip/demos/pixels/recipe.toml b/recipes/wip/demos/pixels/recipe.toml index b62c3983..5b7a0874 100644 --- a/recipes/wip/demos/pixels/recipe.toml +++ b/recipes/wip/demos/pixels/recipe.toml @@ -4,5 +4,5 @@ git = "https://github.com/parasyte/pixels" [build] template = "custom" script = """ -cookbook_cargo_examples conway invaders minimal-egui minimal-winit tiny-skia-winit +cookbook_cargo_packages conway invaders minimal-egui minimal-winit tiny-skia-winit """ From 309db6870bd82e8662397c8510f41166e764e66c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 4 Jun 2025 12:46:03 -0300 Subject: [PATCH 2556/3180] Update TODOs --- recipes/wip/demos/pixels/recipe.toml | 2 +- recipes/wip/demos/rain/recipe.toml | 2 +- recipes/wip/demos/rapier/recipe.toml | 2 +- recipes/wip/demos/rend3/recipe.toml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/recipes/wip/demos/pixels/recipe.toml b/recipes/wip/demos/pixels/recipe.toml index 5b7a0874..c6ca5a0d 100644 --- a/recipes/wip/demos/pixels/recipe.toml +++ b/recipes/wip/demos/pixels/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO webbrowser crate error [source] git = "https://github.com/parasyte/pixels" [build] diff --git a/recipes/wip/demos/rain/recipe.toml b/recipes/wip/demos/rain/recipe.toml index cf22e0ef..f9b7e0be 100644 --- a/recipes/wip/demos/rain/recipe.toml +++ b/recipes/wip/demos/rain/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compilation error [source] git = "https://github.com/saschagrunert/rain" [build] diff --git a/recipes/wip/demos/rapier/recipe.toml b/recipes/wip/demos/rapier/recipe.toml index b2cc021e..6dbe1077 100644 --- a/recipes/wip/demos/rapier/recipe.toml +++ b/recipes/wip/demos/rapier/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO x11rb, rustix and webbrowser crates error [source] git = "https://github.com/dimforge/rapier" [build] diff --git a/recipes/wip/demos/rend3/recipe.toml b/recipes/wip/demos/rend3/recipe.toml index 2db5258a..87b59d63 100644 --- a/recipes/wip/demos/rend3/recipe.toml +++ b/recipes/wip/demos/rend3/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO webbrowser crate error [source] git = "https://github.com/BVE-Reborn/rend3" [build] From 7ad3f7b2f6c6e4719e5398153ddb3e320cf84f67 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 6 Jun 2025 08:46:18 -0300 Subject: [PATCH 2557/3180] Remove the library linking policies --- README.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/README.md b/README.md index e777fdd7..a20e95e2 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,6 @@ from the [redox](https://gitlab.redox-os.org/redox-os/redox) repository. - [Search Recipes](#search-recipes) - [Package Policy](#package-policy) - [Cross-Compilation](#cross-compilation) - - [Library Linking](#library-linking) - [ABI stability](#abi-stability) - [Checksum](#checksum) - [License](#license) @@ -70,11 +69,6 @@ Before sending your recipe to upstream (to become a public package), you must fo - Don't use the auto-generated tarballs from GitHub, they aren't static and don't verify the archive integrity. -#### Library Linking - -- Keep the static linking of libraries to reduce the launch time and improve security. -- If your package is bigger than 50MB, dynamic link big libraries until your package is equal or less than 50MB (to reduce the RAM usage). - #### ABI stability - Respect the ABI separation of the libraries, for example, if `openssl1` is available and some program need `openssl3`, you will create a recipe for `openssl3` and not rename the `openssl1`, as it will break the dependent packages. From a217a03791a4c295ba96c2394cf40d49415b2c90 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 6 Jun 2025 09:58:52 -0300 Subject: [PATCH 2558/3180] Add recipes --- recipes/wip/dev/rust-tools/ferrisup/recipe.toml | 5 +++++ recipes/wip/fuse/btfs/recipe.toml | 16 ++++++++++++++++ recipes/wip/libs/net/libtorrent/recipe.toml | 5 +++++ recipes/wip/net/other/dnst/recipe.toml | 8 ++++++++ recipes/wip/players/ttv/recipe.toml | 8 ++++++++ recipes/wip/terminal/logria/recipe.toml | 5 +++++ recipes/wip/web/teacat/recipe.toml | 10 ++++++++++ 7 files changed, 57 insertions(+) create mode 100644 recipes/wip/dev/rust-tools/ferrisup/recipe.toml create mode 100644 recipes/wip/fuse/btfs/recipe.toml create mode 100644 recipes/wip/libs/net/libtorrent/recipe.toml create mode 100644 recipes/wip/net/other/dnst/recipe.toml create mode 100644 recipes/wip/players/ttv/recipe.toml create mode 100644 recipes/wip/terminal/logria/recipe.toml create mode 100644 recipes/wip/web/teacat/recipe.toml diff --git a/recipes/wip/dev/rust-tools/ferrisup/recipe.toml b/recipes/wip/dev/rust-tools/ferrisup/recipe.toml new file mode 100644 index 00000000..15e13cc3 --- /dev/null +++ b/recipes/wip/dev/rust-tools/ferrisup/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Jitpomi/ferrisup" +[build] +template = "cargo" diff --git a/recipes/wip/fuse/btfs/recipe.toml b/recipes/wip/fuse/btfs/recipe.toml new file mode 100644 index 00000000..fbef226b --- /dev/null +++ b/recipes/wip/fuse/btfs/recipe.toml @@ -0,0 +1,16 @@ +#TODO not compiled or tested +#TODO maybe incomplete configuration +# build instructions - https://github.com/johang/btfs#building-from-git-on-a-recent-debianubuntu +[source] +git = "https://github.com/johang/btfs" +rev = "2b372f4596df3ff97e3b39d58b144a7cbfff012a" +script = """ +autoreconf -i +""" +[build] +template = "configure" +dependencies = [ + "libfuse3", + "libtorrent", + "curl", +] diff --git a/recipes/wip/libs/net/libtorrent/recipe.toml b/recipes/wip/libs/net/libtorrent/recipe.toml new file mode 100644 index 00000000..6568ca2f --- /dev/null +++ b/recipes/wip/libs/net/libtorrent/recipe.toml @@ -0,0 +1,5 @@ +#TODO missing script for bbv2, see - https://libtorrent.org/building.html +[source] +tar = "https://github.com/arvidn/libtorrent/releases/download/v2.0.11/libtorrent-rasterbar-2.0.11.tar.gz" +[build] +template = "custom" diff --git a/recipes/wip/net/other/dnst/recipe.toml b/recipes/wip/net/other/dnst/recipe.toml new file mode 100644 index 00000000..b51f6382 --- /dev/null +++ b/recipes/wip/net/other/dnst/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/NLnetLabs/dnst" +[build] +template = "custom" +script = """ +cookbook_cargo --features ring +""" diff --git a/recipes/wip/players/ttv/recipe.toml b/recipes/wip/players/ttv/recipe.toml new file mode 100644 index 00000000..37b0c7f0 --- /dev/null +++ b/recipes/wip/players/ttv/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/nik-rev/ttv" +[build] +template = "cargo" +dependencies = [ + "ffmpeg6", +] diff --git a/recipes/wip/terminal/logria/recipe.toml b/recipes/wip/terminal/logria/recipe.toml new file mode 100644 index 00000000..e25b0871 --- /dev/null +++ b/recipes/wip/terminal/logria/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ReagentX/Logria" +[build] +template = "cargo" diff --git a/recipes/wip/web/teacat/recipe.toml b/recipes/wip/web/teacat/recipe.toml new file mode 100644 index 00000000..d73bef3f --- /dev/null +++ b/recipes/wip/web/teacat/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Ultrasquid9/TeaCat" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/teacat +cp -rv "${COOKBOOK_SOURCE}"/test.tcat "${COOKBOOK_STAGE}"/usr/share/teacat +cookbook_cargo +""" From cf5e5f8a758475f43ed941a1f50f1e776b8ff95b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 6 Jun 2025 10:11:02 -0300 Subject: [PATCH 2559/3180] Update the transmission recipe --- recipes/wip/net/bittorrent/transmission/recipe.toml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/recipes/wip/net/bittorrent/transmission/recipe.toml b/recipes/wip/net/bittorrent/transmission/recipe.toml index c47d2e97..4e12ca4b 100644 --- a/recipes/wip/net/bittorrent/transmission/recipe.toml +++ b/recipes/wip/net/bittorrent/transmission/recipe.toml @@ -1,15 +1,11 @@ -#TODO probably wrong script, see https://github.com/transmission/transmission#building-a-transmission-release-from-the-command-line +#TODO probably wrong script, see https://github.com/transmission/transmission/blob/main/docs/Building-Transmission.md#on-unix [source] -tar = "https://github.com/transmission/transmission/releases/download/4.0.4/transmission-4.0.4.tar.xz" +tar = "https://github.com/transmission/transmission/releases/download/4.0.6/transmission-4.0.6.tar.xz" [build] template = "custom" dependencies = [ "openssl1", - "gtk3", - "glib", "curl", - "libevent", - "miniupnpc", ] script = """ COOKBOOK_CONFIGURE="cmake" From f98c3edfaaf5aa407dbc197e3ee9761d635112c6 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 6 Jun 2025 10:12:03 -0300 Subject: [PATCH 2560/3180] Rename the transmission recipe to transmission-daemon --- .../bittorrent/{transmission => transmission-daemon}/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/net/bittorrent/{transmission => transmission-daemon}/recipe.toml (100%) diff --git a/recipes/wip/net/bittorrent/transmission/recipe.toml b/recipes/wip/net/bittorrent/transmission-daemon/recipe.toml similarity index 100% rename from recipes/wip/net/bittorrent/transmission/recipe.toml rename to recipes/wip/net/bittorrent/transmission-daemon/recipe.toml From c9b45b6bc5449894f586fda4453d71f46446c3ff Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 6 Jun 2025 10:16:59 -0300 Subject: [PATCH 2561/3180] Add transmission-gtk recipe --- .../bittorrent/transmission-gtk/recipe.toml | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 recipes/wip/net/bittorrent/transmission-gtk/recipe.toml diff --git a/recipes/wip/net/bittorrent/transmission-gtk/recipe.toml b/recipes/wip/net/bittorrent/transmission-gtk/recipe.toml new file mode 100644 index 00000000..f365f3ce --- /dev/null +++ b/recipes/wip/net/bittorrent/transmission-gtk/recipe.toml @@ -0,0 +1,25 @@ +#TODO probably wrong script, see https://github.com/transmission/transmission/blob/main/docs/Building-Transmission.md#on-unix +[source] +tar = "https://github.com/transmission/transmission/releases/download/4.0.6/transmission-4.0.6.tar.xz" +[build] +template = "custom" +dependencies = [ + "openssl1", + "curl", + "gtk3mm", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" From 8adc70183920a6a9d064a92587033ebd7ee49168 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 6 Jun 2025 11:21:16 -0300 Subject: [PATCH 2562/3180] Correctly generate the GNU Autotools configuration in some recipes --- recipes/wip/fuse/btfs/recipe.toml | 4 +--- recipes/wip/fuse/indexfs/recipe.toml | 7 ++----- recipes/wip/fuse/pifs/recipe.toml | 7 ++----- recipes/wip/fuse/s3fs/recipe.toml | 7 ++----- recipes/wip/fuse/simple-mtpfs/recipe.toml | 7 ++----- recipes/wip/libs/other/cairomm-1.16+/recipe.toml | 2 +- recipes/wip/libs/other/libgspell-gtk4/recipe.toml | 7 ++----- recipes/wip/libs/other/libgumbo/recipe.toml | 7 ++----- recipes/wip/libs/tls/wolfssl5/recipe.toml | 2 +- recipes/wip/video/other/vapoursynth/recipe.toml | 10 ++-------- 10 files changed, 17 insertions(+), 43 deletions(-) diff --git a/recipes/wip/fuse/btfs/recipe.toml b/recipes/wip/fuse/btfs/recipe.toml index fbef226b..0bf3fbda 100644 --- a/recipes/wip/fuse/btfs/recipe.toml +++ b/recipes/wip/fuse/btfs/recipe.toml @@ -4,9 +4,7 @@ [source] git = "https://github.com/johang/btfs" rev = "2b372f4596df3ff97e3b39d58b144a7cbfff012a" -script = """ -autoreconf -i -""" +script = "autoreconf -i" [build] template = "configure" dependencies = [ diff --git a/recipes/wip/fuse/indexfs/recipe.toml b/recipes/wip/fuse/indexfs/recipe.toml index d5842728..f1d02013 100644 --- a/recipes/wip/fuse/indexfs/recipe.toml +++ b/recipes/wip/fuse/indexfs/recipe.toml @@ -3,9 +3,6 @@ # build instructions - https://github.com/MajenkoProjects/indexfs/blob/master/INSTALL [source] git = "https://github.com/MajenkoProjects/indexfs" +script = "./autogen.sh" [build] -template = "custom" -script = """ -./autogen.sh -cookbook_configure -""" +template = "configure" diff --git a/recipes/wip/fuse/pifs/recipe.toml b/recipes/wip/fuse/pifs/recipe.toml index e7ab1909..9e37c4ed 100644 --- a/recipes/wip/fuse/pifs/recipe.toml +++ b/recipes/wip/fuse/pifs/recipe.toml @@ -2,12 +2,9 @@ #TODO probably wrong script, see https://github.com/philipl/pifs#readme [source] git = "https://github.com/philipl/pifs" +script = "./autogen.sh" [build] -template = "custom" +template = "configure" dependencies = [ "libfuse2", ] -script = """ -./autogen.sh -cookbook_configure -""" diff --git a/recipes/wip/fuse/s3fs/recipe.toml b/recipes/wip/fuse/s3fs/recipe.toml index 578468d0..d7a32860 100644 --- a/recipes/wip/fuse/s3fs/recipe.toml +++ b/recipes/wip/fuse/s3fs/recipe.toml @@ -3,15 +3,12 @@ [source] git = "https://github.com/s3fs-fuse/s3fs-fuse" rev = "5371cd1468c84423729c334ac997f9621b797e9f" +script = "./autogen.sh" [build] -template = "custom" +template = "configure" dependencies = [ "libfuse2", "curl", "libxml2", "openssl1", ] -script = """ -./autogen.sh -cookbook_configure -""" diff --git a/recipes/wip/fuse/simple-mtpfs/recipe.toml b/recipes/wip/fuse/simple-mtpfs/recipe.toml index 3983d79c..4edc3c5d 100644 --- a/recipes/wip/fuse/simple-mtpfs/recipe.toml +++ b/recipes/wip/fuse/simple-mtpfs/recipe.toml @@ -3,13 +3,10 @@ [source] git = "https://github.com/phatina/simple-mtpfs" rev = "19e7bb9b608b0c0dce2ee6f56fac75901bc69529" +script = "./autogen.sh" [build] -template = "custom" +template = "configure" dependencies = [ "libfuse3", "libmtp", ] -script = """ -./autogen.sh -cookbook_configure -""" diff --git a/recipes/wip/libs/other/cairomm-1.16+/recipe.toml b/recipes/wip/libs/other/cairomm-1.16+/recipe.toml index 563e7549..e0faf6d0 100644 --- a/recipes/wip/libs/other/cairomm-1.16+/recipe.toml +++ b/recipes/wip/libs/other/cairomm-1.16+/recipe.toml @@ -1,6 +1,7 @@ #TODO mm-common-prepare: not found [source] tar = "https://www.cairographics.org/releases/cairomm-1.18.0.tar.xz" +script = "./autogen.sh" [build] template = "custom" dependencies = [ @@ -8,7 +9,6 @@ dependencies = [ ] script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ -./autogen.sh COOKBOOK_CONFIGURE="./configure" cookbook_configure """ diff --git a/recipes/wip/libs/other/libgspell-gtk4/recipe.toml b/recipes/wip/libs/other/libgspell-gtk4/recipe.toml index 2811865d..98f646df 100644 --- a/recipes/wip/libs/other/libgspell-gtk4/recipe.toml +++ b/recipes/wip/libs/other/libgspell-gtk4/recipe.toml @@ -1,14 +1,11 @@ #TODO make gtk4 work [source] tar = "https://gitlab.gnome.org/otrocodigo/gspell/-/archive/1.11.1/gspell-1.11.1.tar.bz2" +script = "./autogen.sh" [build] -template = "custom" +template = "configure" dependencies = [ "glib", "gtk4", "libicu", ] -script = """ -./autogen.sh -cookbook_configure -""" diff --git a/recipes/wip/libs/other/libgumbo/recipe.toml b/recipes/wip/libs/other/libgumbo/recipe.toml index ff5060b7..1f7baa22 100644 --- a/recipes/wip/libs/other/libgumbo/recipe.toml +++ b/recipes/wip/libs/other/libgumbo/recipe.toml @@ -2,9 +2,6 @@ [source] git = "https://codeberg.org/gumbo-parser/gumbo-parser" rev = "23af2f7c5a9da7e7ea42fcc2c573df52e4a3a5be" +script = "./autogen.sh" [build] -template = "custom" -script = """ -./autogen.sh -cookbook_configure -""" +template = "configure" diff --git a/recipes/wip/libs/tls/wolfssl5/recipe.toml b/recipes/wip/libs/tls/wolfssl5/recipe.toml index 634a974a..15abd300 100644 --- a/recipes/wip/libs/tls/wolfssl5/recipe.toml +++ b/recipes/wip/libs/tls/wolfssl5/recipe.toml @@ -2,11 +2,11 @@ [source] git = "https://github.com/wolfSSL/wolfssl" rev = "37884f864d6fd9b04f44677cb04da15d0c9d6526" +script = "./autogen.sh" [build] template = "custom" script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ -./autogen.sh COOKBOOK_CONFIGURE="./configure" cookbook_configure """ diff --git a/recipes/wip/video/other/vapoursynth/recipe.toml b/recipes/wip/video/other/vapoursynth/recipe.toml index c10572db..9d3897b5 100644 --- a/recipes/wip/video/other/vapoursynth/recipe.toml +++ b/recipes/wip/video/other/vapoursynth/recipe.toml @@ -2,12 +2,6 @@ [source] git = "https://github.com/vapoursynth/vapoursynth" rev = "3157049549a0940359b37004aeeeebd8f1db665e" +script = "./autogen.sh" [build] -template = "custom" -dependencies = [ - "library1", -] -script = """ -./autogen.sh -cookbook_configure -""" +template = "configure" From 92874f86ce377f78331ecf0c23b8a833fa556b84 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 6 Jun 2025 11:50:35 -0300 Subject: [PATCH 2563/3180] Update TODOs and try to fix the rsille recipe --- recipes/wip/demos/renderling/recipe.toml | 2 +- recipes/wip/demos/rootvg/recipe.toml | 2 +- recipes/wip/demos/rpt/recipe.toml | 2 +- recipes/wip/demos/rsille/recipe.toml | 15 ++++++++++++++- 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/recipes/wip/demos/renderling/recipe.toml b/recipes/wip/demos/renderling/recipe.toml index e1dd7f86..d8c9aeea 100644 --- a/recipes/wip/demos/renderling/recipe.toml +++ b/recipes/wip/demos/renderling/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/schell/renderling" [build] diff --git a/recipes/wip/demos/rootvg/recipe.toml b/recipes/wip/demos/rootvg/recipe.toml index 3f7e51e9..611dcd55 100644 --- a/recipes/wip/demos/rootvg/recipe.toml +++ b/recipes/wip/demos/rootvg/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/MeadowlarkDAW/rootvg" [build] diff --git a/recipes/wip/demos/rpt/recipe.toml b/recipes/wip/demos/rpt/recipe.toml index d17db672..91658f4a 100644 --- a/recipes/wip/demos/rpt/recipe.toml +++ b/recipes/wip/demos/rpt/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/ekzhang/rpt" [build] diff --git a/recipes/wip/demos/rsille/recipe.toml b/recipes/wip/demos/rsille/recipe.toml index bed9f8eb..be50b3a8 100644 --- a/recipes/wip/demos/rsille/recipe.toml +++ b/recipes/wip/demos/rsille/recipe.toml @@ -4,5 +4,18 @@ git = "https://github.com/nidhoggfgg/rsille" [build] template = "custom" script = """ -cookbook_cargo_examples anime-mix obj-mix cube cube-colorful imgille +cookbook_cargo_examples anime-mix obj-mix cube cube-colorful +recipe="$(basename "${COOKBOOK_RECIPE}")" + for example in imgille + do + "${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/${PACKAGE_PATH}/Cargo.toml" \ + --example "${example}" \ + --release \ + --features=img + mkdir -pv "${COOKBOOK_STAGE}/usr/bin" + cp -v \ + "target/${TARGET}/${build_type}/examples/${example}" \ + "${COOKBOOK_STAGE}/usr/bin/${recipe}_${example}" + done """ From fb9d85ba68510d7366611543f83dc9918c4d6ec6 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 6 Jun 2025 12:01:28 -0300 Subject: [PATCH 2564/3180] Update TODOs and fix the rui recipe --- recipes/wip/demos/rsille/recipe.toml | 2 +- recipes/wip/demos/rui/recipe.toml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/wip/demos/rsille/recipe.toml b/recipes/wip/demos/rsille/recipe.toml index be50b3a8..f2cd28e8 100644 --- a/recipes/wip/demos/rsille/recipe.toml +++ b/recipes/wip/demos/rsille/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/nidhoggfgg/rsille" [build] diff --git a/recipes/wip/demos/rui/recipe.toml b/recipes/wip/demos/rui/recipe.toml index 1dd4e193..074a402e 100644 --- a/recipes/wip/demos/rui/recipe.toml +++ b/recipes/wip/demos/rui/recipe.toml @@ -4,5 +4,6 @@ git = "https://github.com/audulus/rui" [build] template = "custom" script = """ -cookbook_cargo_examples action background basic calc canvas counter counter2 font_size gallery list menu shapes slider text_editor toggle +cookbook_cargo_packages calculator synth +cookbook_cargo_examples action background basic canvas counter counter2 font_size gallery list menu shapes slider text_editor toggle """ From c3584ba3c097b5c1bc864a21526347db0112029b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 6 Jun 2025 12:07:43 -0300 Subject: [PATCH 2565/3180] Update TODOs and fix the rustubble recipe --- recipes/wip/demos/rui/recipe.toml | 2 +- recipes/wip/demos/ruscii/recipe.toml | 2 +- recipes/wip/demos/rustubble/recipe.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/wip/demos/rui/recipe.toml b/recipes/wip/demos/rui/recipe.toml index 074a402e..00c861da 100644 --- a/recipes/wip/demos/rui/recipe.toml +++ b/recipes/wip/demos/rui/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/audulus/rui" [build] diff --git a/recipes/wip/demos/ruscii/recipe.toml b/recipes/wip/demos/ruscii/recipe.toml index 273b884b..e47657ca 100644 --- a/recipes/wip/demos/ruscii/recipe.toml +++ b/recipes/wip/demos/ruscii/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO device_query crate error [source] git = "https://github.com/lemunozm/ruscii" [build] diff --git a/recipes/wip/demos/rustubble/recipe.toml b/recipes/wip/demos/rustubble/recipe.toml index 22edc29b..dd2483cf 100644 --- a/recipes/wip/demos/rustubble/recipe.toml +++ b/recipes/wip/demos/rustubble/recipe.toml @@ -4,5 +4,5 @@ git = "https://github.com/warpy-ai/rustubble" [build] template = "custom" script = """ -cookbook_cargo_examples list_example menu_list_example poem progress_bar_example spinner_example stopwatch_example table_example text_area_example text_input_example timer_example viewport_example +cookbook_cargo_examples list_example menu_list_example progress_bar_example spinner_example stopwatch_example table_example text_area_example text_input_example timer_example viewport_example """ From ec795bf8734c97a9547433cb5ce7e61bb7baf7c9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 6 Jun 2025 12:31:39 -0300 Subject: [PATCH 2566/3180] Update TODOs and fix the slint recipe --- recipes/wip/demos/rustubble/recipe.toml | 2 +- recipes/wip/demos/simdjson-rs/recipe.toml | 2 +- recipes/wip/demos/slint/recipe.toml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/recipes/wip/demos/rustubble/recipe.toml b/recipes/wip/demos/rustubble/recipe.toml index dd2483cf..022603b1 100644 --- a/recipes/wip/demos/rustubble/recipe.toml +++ b/recipes/wip/demos/rustubble/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/warpy-ai/rustubble" [build] diff --git a/recipes/wip/demos/simdjson-rs/recipe.toml b/recipes/wip/demos/simdjson-rs/recipe.toml index 52e8a645..464baef0 100644 --- a/recipes/wip/demos/simdjson-rs/recipe.toml +++ b/recipes/wip/demos/simdjson-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/simd-lite/simd-json" [build] diff --git a/recipes/wip/demos/slint/recipe.toml b/recipes/wip/demos/slint/recipe.toml index da6c68e5..ee537ae6 100644 --- a/recipes/wip/demos/slint/recipe.toml +++ b/recipes/wip/demos/slint/recipe.toml @@ -4,7 +4,7 @@ git = "https://github.com/slint-ui/slint" [build] template = "custom" script = """ -cookbook_cargo_examples gallery energy-monitor carousel \ +cookbook_cargo_packages gallery energy-monitor carousel \ memory imagefilter plotter opengl_underlay opengl_texture \ -ffmpeg maps virtual_keyboard 7guis +maps virtual_keyboard 7guis """ From 6e92b9a6caf6b47052a3554b696bc09d823808e1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 6 Jun 2025 12:58:19 -0300 Subject: [PATCH 2567/3180] Update TODOs and fix the soft-ratatui recipe --- recipes/wip/demos/slint/recipe.toml | 5 ++++- recipes/wip/demos/smallvil/recipe.toml | 5 ++++- recipes/wip/demos/soft-ratatui/recipe.toml | 8 +++----- recipes/wip/demos/speedy2d/recipe.toml | 2 +- recipes/wip/demos/spinners/recipe.toml | 2 +- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/recipes/wip/demos/slint/recipe.toml b/recipes/wip/demos/slint/recipe.toml index ee537ae6..ccdff83c 100644 --- a/recipes/wip/demos/slint/recipe.toml +++ b/recipes/wip/demos/slint/recipe.toml @@ -1,8 +1,11 @@ -#TODO not compiled or tested +#TODO make libwayland work [source] git = "https://github.com/slint-ui/slint" [build] template = "custom" +dependencies = [ + "libwayland", +] script = """ cookbook_cargo_packages gallery energy-monitor carousel \ memory imagefilter plotter opengl_underlay opengl_texture \ diff --git a/recipes/wip/demos/smallvil/recipe.toml b/recipes/wip/demos/smallvil/recipe.toml index 668b1fea..e895b893 100644 --- a/recipes/wip/demos/smallvil/recipe.toml +++ b/recipes/wip/demos/smallvil/recipe.toml @@ -1,8 +1,11 @@ -#TODO not compiled or tested +#TODO make libwayland work [source] git = "https://github.com/Smithay/smithay" [build] template = "custom" +dependencies = [ + "libwayland", +] script = """ cookbook_cargo_packages smallvil """ diff --git a/recipes/wip/demos/soft-ratatui/recipe.toml b/recipes/wip/demos/soft-ratatui/recipe.toml index a2e8ca65..be17d0ec 100644 --- a/recipes/wip/demos/soft-ratatui/recipe.toml +++ b/recipes/wip/demos/soft-ratatui/recipe.toml @@ -1,8 +1,6 @@ -#TODO not compiled or tested +#TODO the "egui_example" package is missing on the root Cargo.toml [source] git = "https://github.com/gold-silver-copper/soft_ratatui" [build] -template = "custom" -script = """ -cookbook_cargo_packages egui_example -""" +template = "cargo" +package_path = "egui_colors_example" diff --git a/recipes/wip/demos/speedy2d/recipe.toml b/recipes/wip/demos/speedy2d/recipe.toml index 6ca563a6..5a84ea16 100644 --- a/recipes/wip/demos/speedy2d/recipe.toml +++ b/recipes/wip/demos/speedy2d/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO glutin crate error [source] git = "https://github.com/QuantumBadger/Speedy2D" [build] diff --git a/recipes/wip/demos/spinners/recipe.toml b/recipes/wip/demos/spinners/recipe.toml index 505fd3c8..42bd81e8 100644 --- a/recipes/wip/demos/spinners/recipe.toml +++ b/recipes/wip/demos/spinners/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/FGRibreau/spinners" [build] From db275e0ac99ace93ad57bbabd7fc09bf7ad4d719 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 6 Jun 2025 13:06:50 -0300 Subject: [PATCH 2568/3180] Update TODOs and fix the taffy recipe --- recipes/wip/demos/soft-ratatui/recipe.toml | 2 +- recipes/wip/demos/spinoff/recipe.toml | 2 +- recipes/wip/demos/tachyonfx/recipe.toml | 2 +- recipes/wip/demos/taffy/recipe.toml | 3 ++- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/recipes/wip/demos/soft-ratatui/recipe.toml b/recipes/wip/demos/soft-ratatui/recipe.toml index be17d0ec..581486de 100644 --- a/recipes/wip/demos/soft-ratatui/recipe.toml +++ b/recipes/wip/demos/soft-ratatui/recipe.toml @@ -1,4 +1,4 @@ -#TODO the "egui_example" package is missing on the root Cargo.toml +#TODO glutin crate error [source] git = "https://github.com/gold-silver-copper/soft_ratatui" [build] diff --git a/recipes/wip/demos/spinoff/recipe.toml b/recipes/wip/demos/spinoff/recipe.toml index b15b7184..c531d028 100644 --- a/recipes/wip/demos/spinoff/recipe.toml +++ b/recipes/wip/demos/spinoff/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/ad4mx/spinoff" [build] diff --git a/recipes/wip/demos/tachyonfx/recipe.toml b/recipes/wip/demos/tachyonfx/recipe.toml index 6093e6a7..840d1d58 100644 --- a/recipes/wip/demos/tachyonfx/recipe.toml +++ b/recipes/wip/demos/tachyonfx/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/junkdog/tachyonfx" [build] diff --git a/recipes/wip/demos/taffy/recipe.toml b/recipes/wip/demos/taffy/recipe.toml index a7d0befd..30013b97 100644 --- a/recipes/wip/demos/taffy/recipe.toml +++ b/recipes/wip/demos/taffy/recipe.toml @@ -4,5 +4,6 @@ git = "https://github.com/DioxusLabs/taffy" [build] template = "custom" script = """ -cookbook_cargo_examples basic cosmic_text +cookbook_cargo_examples basic +cookbook_cargo_packages cosmic-text-example """ From 9544cab5806b55fd28370737a32e106abaed8973 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 6 Jun 2025 13:10:19 -0300 Subject: [PATCH 2569/3180] Fix the taffy recipe again --- recipes/wip/demos/taffy/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/wip/demos/taffy/recipe.toml b/recipes/wip/demos/taffy/recipe.toml index 30013b97..561dcf07 100644 --- a/recipes/wip/demos/taffy/recipe.toml +++ b/recipes/wip/demos/taffy/recipe.toml @@ -5,5 +5,4 @@ git = "https://github.com/DioxusLabs/taffy" template = "custom" script = """ cookbook_cargo_examples basic -cookbook_cargo_packages cosmic-text-example """ From 3cd9688eedb8fcfa3650994558286c8c58c2ca5d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 6 Jun 2025 13:13:44 -0300 Subject: [PATCH 2570/3180] Update TODOs and fix the three-d recipe --- recipes/wip/demos/taffy/recipe.toml | 2 +- recipes/wip/demos/three-d/recipe.toml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/demos/taffy/recipe.toml b/recipes/wip/demos/taffy/recipe.toml index 561dcf07..0be37822 100644 --- a/recipes/wip/demos/taffy/recipe.toml +++ b/recipes/wip/demos/taffy/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/DioxusLabs/taffy" [build] diff --git a/recipes/wip/demos/three-d/recipe.toml b/recipes/wip/demos/three-d/recipe.toml index b232ae74..68170c6f 100644 --- a/recipes/wip/demos/three-d/recipe.toml +++ b/recipes/wip/demos/three-d/recipe.toml @@ -3,6 +3,9 @@ git = "https://github.com/asny/three-d" [build] template = "custom" +dependencies = [ + "openssl1", +] script = """ cookbook_cargo_examples animation environment fireworks fog forest image instanced_shapes lighting lights logo mandelbrot multiwindow pbr shapes shapes2d sprites statues terrain texture triangle """ From 49d43c1de02e171ec6203886c047f8c810094334 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 6 Jun 2025 13:19:56 -0300 Subject: [PATCH 2571/3180] Update TODOs and fix the uniocr recipe --- recipes/wip/demos/three-d/recipe.toml | 2 +- recipes/wip/demos/tquic/recipe.toml | 2 +- recipes/wip/demos/uniocr/recipe.toml | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/wip/demos/three-d/recipe.toml b/recipes/wip/demos/three-d/recipe.toml index 68170c6f..1bc0882b 100644 --- a/recipes/wip/demos/three-d/recipe.toml +++ b/recipes/wip/demos/three-d/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO glutin crate error [source] git = "https://github.com/asny/three-d" [build] diff --git a/recipes/wip/demos/tquic/recipe.toml b/recipes/wip/demos/tquic/recipe.toml index b600bbaf..18850514 100644 --- a/recipes/wip/demos/tquic/recipe.toml +++ b/recipes/wip/demos/tquic/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO tikv-jemalloc-sys crate error [source] git = "https://github.com/Tencent/tquic" [build] diff --git a/recipes/wip/demos/uniocr/recipe.toml b/recipes/wip/demos/uniocr/recipe.toml index a8ee5a33..d2d45049 100644 --- a/recipes/wip/demos/uniocr/recipe.toml +++ b/recipes/wip/demos/uniocr/recipe.toml @@ -3,6 +3,9 @@ git = "https://github.com/mediar-ai/uniOCR" [build] template = "custom" +dependencies = [ + "openssl1", +] script = """ cookbook_cargo_examples basic batch_processing """ From 7c193f9611bd1a86a6c64f2abca243d009ba8a51 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 6 Jun 2025 13:26:38 -0300 Subject: [PATCH 2572/3180] Update TODOs and usfx recipe --- recipes/wip/demos/uniocr/recipe.toml | 2 +- recipes/wip/demos/usfx/recipe.toml | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/recipes/wip/demos/uniocr/recipe.toml b/recipes/wip/demos/uniocr/recipe.toml index d2d45049..c46f893f 100644 --- a/recipes/wip/demos/uniocr/recipe.toml +++ b/recipes/wip/demos/uniocr/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO xcap crate error [source] git = "https://github.com/mediar-ai/uniOCR" [build] diff --git a/recipes/wip/demos/usfx/recipe.toml b/recipes/wip/demos/usfx/recipe.toml index 30201767..4d7eca8d 100644 --- a/recipes/wip/demos/usfx/recipe.toml +++ b/recipes/wip/demos/usfx/recipe.toml @@ -3,6 +3,10 @@ git = "https://github.com/tversteeg/usfx" [build] template = "custom" +dependencies = [ + "libalsa", + "sdl2", +] script = """ -cookbook_cargo_examples cpal music +cookbook_cargo_examples cpal music sdl2 """ From 9b10a75b201055cba7eef41b72018074fd5f0273 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 6 Jun 2025 13:28:22 -0300 Subject: [PATCH 2573/3180] Update the vizia recipe --- recipes/wip/demos/vizia/recipe.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/demos/vizia/recipe.toml b/recipes/wip/demos/vizia/recipe.toml index 555c6a8f..661efd38 100644 --- a/recipes/wip/demos/vizia/recipe.toml +++ b/recipes/wip/demos/vizia/recipe.toml @@ -1,8 +1,11 @@ -#TODO not compiled or tested +#TODO make libwayland work [source] git = "https://github.com/vizia/vizia" [build] template = "custom" +dependencies = [ + "libwayland", +] script = """ cookbook_cargo_examples animation dragdrop number input timers """ From a1eb1e5cca77cc8f41d4d3056e7b05e74fa4b264 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 6 Jun 2025 13:43:09 -0300 Subject: [PATCH 2574/3180] Update TODOs and fix the zizmor recipe --- recipes/wip/demos/wavy/recipe.toml | 2 +- recipes/wip/demos/wgpu-sky-rendering/recipe.toml | 2 +- recipes/wip/demos/xilem/recipe.toml | 2 +- recipes/wip/dev/analysis/hex/recipe.toml | 2 +- recipes/wip/dev/analysis/rust-ontologist/recipe.toml | 2 +- recipes/wip/dev/analysis/zizmor/recipe.toml | 5 ++++- 6 files changed, 9 insertions(+), 6 deletions(-) diff --git a/recipes/wip/demos/wavy/recipe.toml b/recipes/wip/demos/wavy/recipe.toml index 59cabec3..8dc2e261 100644 --- a/recipes/wip/demos/wavy/recipe.toml +++ b/recipes/wip/demos/wavy/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/ardaku/wavy" [build] diff --git a/recipes/wip/demos/wgpu-sky-rendering/recipe.toml b/recipes/wip/demos/wgpu-sky-rendering/recipe.toml index 1e1c6c92..b46016b4 100644 --- a/recipes/wip/demos/wgpu-sky-rendering/recipe.toml +++ b/recipes/wip/demos/wgpu-sky-rendering/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/bmatthieu3/wgpu-sky-rendering" [build] diff --git a/recipes/wip/demos/xilem/recipe.toml b/recipes/wip/demos/xilem/recipe.toml index a78f265e..75f76028 100644 --- a/recipes/wip/demos/xilem/recipe.toml +++ b/recipes/wip/demos/xilem/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO xilem_core crate error [source] git = "https://github.com/linebender/xilem" [build] diff --git a/recipes/wip/dev/analysis/hex/recipe.toml b/recipes/wip/dev/analysis/hex/recipe.toml index c3a8f113..1a2f38dc 100644 --- a/recipes/wip/dev/analysis/hex/recipe.toml +++ b/recipes/wip/dev/analysis/hex/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/sitkevij/hex" [build] diff --git a/recipes/wip/dev/analysis/rust-ontologist/recipe.toml b/recipes/wip/dev/analysis/rust-ontologist/recipe.toml index c2c8c86c..30c3ff4d 100644 --- a/recipes/wip/dev/analysis/rust-ontologist/recipe.toml +++ b/recipes/wip/dev/analysis/rust-ontologist/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO fix the nonsense "multipipe package not found" error [source] git = "https://github.com/lava-xyz/rust-ontologist" [build] diff --git a/recipes/wip/dev/analysis/zizmor/recipe.toml b/recipes/wip/dev/analysis/zizmor/recipe.toml index 61907213..f523c241 100644 --- a/recipes/wip/dev/analysis/zizmor/recipe.toml +++ b/recipes/wip/dev/analysis/zizmor/recipe.toml @@ -2,4 +2,7 @@ [source] git = "https://github.com/woodruffw/zizmor" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages zizmor +""" From 5660d607cd9c154da17d3df206348b36881e537d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 6 Jun 2025 14:45:34 -0300 Subject: [PATCH 2575/3180] Update TODOs --- recipes/wip/dev/analysis/rust-ontologist/recipe.toml | 2 +- recipes/wip/dev/analysis/zizmor/recipe.toml | 2 +- recipes/wip/dev/build-system/werk/recipe.toml | 2 +- recipes/wip/dev/cargo-tools/cargo-autodd/recipe.toml | 2 +- recipes/wip/dev/cargo-tools/cargo-packager/recipe.toml | 2 +- recipes/wip/dev/debug/nnd/recipe.toml | 2 +- recipes/wip/dev/framework/feather/recipe.toml | 2 +- recipes/wip/dev/git-tools/lazygh/recipe.toml | 2 +- recipes/wip/dev/git-tools/patchy/recipe.toml | 2 +- recipes/wip/dev/git-tools/riff/recipe.toml | 2 +- recipes/wip/dev/git-tools/serie/recipe.toml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/recipes/wip/dev/analysis/rust-ontologist/recipe.toml b/recipes/wip/dev/analysis/rust-ontologist/recipe.toml index 30c3ff4d..8a2422e9 100644 --- a/recipes/wip/dev/analysis/rust-ontologist/recipe.toml +++ b/recipes/wip/dev/analysis/rust-ontologist/recipe.toml @@ -1,4 +1,4 @@ -#TODO fix the nonsense "multipipe package not found" error +#TODO the multipipe crate was removed from crates.io, wait this PR to be merged: https://github.com/lava-xyz/rust-ontologist/pull/7 [source] git = "https://github.com/lava-xyz/rust-ontologist" [build] diff --git a/recipes/wip/dev/analysis/zizmor/recipe.toml b/recipes/wip/dev/analysis/zizmor/recipe.toml index f523c241..7355c743 100644 --- a/recipes/wip/dev/analysis/zizmor/recipe.toml +++ b/recipes/wip/dev/analysis/zizmor/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO camino crate error [source] git = "https://github.com/woodruffw/zizmor" [build] diff --git a/recipes/wip/dev/build-system/werk/recipe.toml b/recipes/wip/dev/build-system/werk/recipe.toml index cfb32998..4635fa1a 100644 --- a/recipes/wip/dev/build-system/werk/recipe.toml +++ b/recipes/wip/dev/build-system/werk/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO async and rustix crates error [source] git = "https://github.com/simonask/werk" [build] diff --git a/recipes/wip/dev/cargo-tools/cargo-autodd/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-autodd/recipe.toml index f3460973..28dc3b5b 100644 --- a/recipes/wip/dev/cargo-tools/cargo-autodd/recipe.toml +++ b/recipes/wip/dev/cargo-tools/cargo-autodd/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/nwiizo/cargo-autodd" [build] diff --git a/recipes/wip/dev/cargo-tools/cargo-packager/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-packager/recipe.toml index b6a37aec..b918f893 100644 --- a/recipes/wip/dev/cargo-tools/cargo-packager/recipe.toml +++ b/recipes/wip/dev/cargo-tools/cargo-packager/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO camino crate error [source] git = "https://github.com/crabnebula-dev/cargo-packager" [build] diff --git a/recipes/wip/dev/debug/nnd/recipe.toml b/recipes/wip/dev/debug/nnd/recipe.toml index 92f0c70c..4542522f 100644 --- a/recipes/wip/dev/debug/nnd/recipe.toml +++ b/recipes/wip/dev/debug/nnd/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO nnd crate error [source] git = "https://github.com/al13n321/nnd" [build] diff --git a/recipes/wip/dev/framework/feather/recipe.toml b/recipes/wip/dev/framework/feather/recipe.toml index 9a30f935..9b1ad27e 100644 --- a/recipes/wip/dev/framework/feather/recipe.toml +++ b/recipes/wip/dev/framework/feather/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/BersisSe/feather-cli" [build] diff --git a/recipes/wip/dev/git-tools/lazygh/recipe.toml b/recipes/wip/dev/git-tools/lazygh/recipe.toml index 3fcaab4a..ecc9e929 100644 --- a/recipes/wip/dev/git-tools/lazygh/recipe.toml +++ b/recipes/wip/dev/git-tools/lazygh/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO x11rb and rustix crates error [source] git = "https://github.com/kmj-007/lazygh" [build] diff --git a/recipes/wip/dev/git-tools/patchy/recipe.toml b/recipes/wip/dev/git-tools/patchy/recipe.toml index 52de86ff..34c52491 100644 --- a/recipes/wip/dev/git-tools/patchy/recipe.toml +++ b/recipes/wip/dev/git-tools/patchy/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/nik-rev/patchy" [build] diff --git a/recipes/wip/dev/git-tools/riff/recipe.toml b/recipes/wip/dev/git-tools/riff/recipe.toml index d8f32d81..24d743ab 100644 --- a/recipes/wip/dev/git-tools/riff/recipe.toml +++ b/recipes/wip/dev/git-tools/riff/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/walles/riff" [build] diff --git a/recipes/wip/dev/git-tools/serie/recipe.toml b/recipes/wip/dev/git-tools/serie/recipe.toml index dc6a3c06..df2889e7 100644 --- a/recipes/wip/dev/git-tools/serie/recipe.toml +++ b/recipes/wip/dev/git-tools/serie/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO x11rb and rustix crates error [source] git = "https://github.com/lusingander/serie" [build] From c294eeca9a70ac0dc4f21cdf4f8cf3c284d9be27 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 7 Jun 2025 20:24:53 -0300 Subject: [PATCH 2576/3180] Improve the myfiles recipe script --- recipes/other/myfiles/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/other/myfiles/recipe.toml b/recipes/other/myfiles/recipe.toml index 2b5bbf4a..201335c7 100644 --- a/recipes/other/myfiles/recipe.toml +++ b/recipes/other/myfiles/recipe.toml @@ -1,6 +1,6 @@ [build] template = "custom" script = """ -mkdir -pv "${COOKBOOK_STAGE}"/home/user -cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/home/user +mkdir -pv "${COOKBOOK_STAGE}/home/user" +cp -rv "${COOKBOOK_SOURCE}/*" "${COOKBOOK_STAGE}/home/user" """ From f60af256d048fdc367937966d280bbcc8f1d559f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 08:36:30 -0300 Subject: [PATCH 2577/3180] Add recipes --- .../emulators/windows/hangover/recipe.toml | 59 +++++++++++++++++++ recipes/wip/sim/trmt/recipe.toml | 5 ++ 2 files changed, 64 insertions(+) create mode 100644 recipes/wip/emulators/windows/hangover/recipe.toml create mode 100644 recipes/wip/sim/trmt/recipe.toml diff --git a/recipes/wip/emulators/windows/hangover/recipe.toml b/recipes/wip/emulators/windows/hangover/recipe.toml new file mode 100644 index 00000000..1415358d --- /dev/null +++ b/recipes/wip/emulators/windows/hangover/recipe.toml @@ -0,0 +1,59 @@ +#TODO not compiled or tested +# build instructions: https://github.com/AndreRH/hangover/blob/master/docs/COMPILE.md +[source] +git = "https://github.com/AndreRH/hangover" +rev = "8a3cdfb0b2092d10fa782319fc02648724554205" +[build] +template = "custom" +dependencies = [ + "fontconfig", + "freetype2", + "gnutls3", + "gstreamer", + "sdl2", + "libvulkan", + "mesa", + "libx11", + "libxcomposite", + "libxcursor", + "libxi", + "libxfixes", + "librandr", + "libxrender", + "libxext", + "libxkbcommon", + "libxkbregistry", +] +script = """ +mkdir -p "${COOKBOOK_BUILD}"/wine/build +cd "${COOKBOOK_BUILD}"/wine/build +COOKBOOK_CONFIGURE_FLAGS+=( + --enable-win64 + --with-mingw + --enable-archs=x86_64,i386,arm + --disable-kerberos + --disable-tests + --without-capi + --without-coreaudio + --without-dbus + --without-gettext + --without-gettextpo + --without-gphoto + --without-gssapi + --without-inotify + --without-krb5 + --without-netapi + --without-opencl + --without-osmesa + --without-pcap + --without-pcsclite + --with-pthread + --without-pulse + --without-sane + --with-sdl + --without-udev + --without-unwind + --without-usb +) +cookbook_configure +""" diff --git a/recipes/wip/sim/trmt/recipe.toml b/recipes/wip/sim/trmt/recipe.toml new file mode 100644 index 00000000..80ed46c3 --- /dev/null +++ b/recipes/wip/sim/trmt/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/cenonym/trmt" +[build] +template = "cargo" From 85a28c171750688f4e383c451d50ae20a2850bbd Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 08:43:00 -0300 Subject: [PATCH 2578/3180] Improve the wine-stable recipe --- .../emulators/windows/wine-stable/recipe.toml | 52 ++++++++++++++++--- 1 file changed, 44 insertions(+), 8 deletions(-) diff --git a/recipes/wip/emulators/windows/wine-stable/recipe.toml b/recipes/wip/emulators/windows/wine-stable/recipe.toml index a85a83ad..5be78d77 100644 --- a/recipes/wip/emulators/windows/wine-stable/recipe.toml +++ b/recipes/wip/emulators/windows/wine-stable/recipe.toml @@ -1,17 +1,53 @@ -#TODO make all dependencies work -#TODO does it use gtk3 for winecfg? +#TODO port to redox +#build instructions: https://gitlab.winehq.org/wine/wine/-/wikis/Building-Wine [source] tar = "https://dl.winehq.org/wine/source/10.0/wine-10.0.tar.xz" [build] -template = "configure" +template = "custom" dependencies = [ - "dbus", "fontconfig", "freetype2", - "gnutls", - "libunwind", + "gnutls3", "gstreamer", "sdl2", - "eudev", - "libvulkan", + "mesa", + "libx11", + "libxcomposite", + "libxcursor", + "libxi", + "libxfixes", + "librandr", + "libxrender", + "libxext", + "libxkbcommon", + "libxkbregistry", ] +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --enable-win64 + --disable-kerberos + --disable-tests + --without-capi + --without-coreaudio + --without-dbus + --without-gettext + --without-gettextpo + --without-gphoto + --without-gssapi + --without-inotify + --without-krb5 + --without-netapi + --without-opencl + --without-osmesa + --without-pcap + --without-pcsclite + --with-pthread + --without-pulse + --without-sane + --with-sdl + --without-udev + --without-unwind + --without-usb +) +cookbook_configure +""" From 638b0189546881959078e559b3df75b59984fd44 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 08:49:16 -0300 Subject: [PATCH 2579/3180] Remove an optional dependency from the hangover recipe --- recipes/wip/emulators/windows/hangover/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/wip/emulators/windows/hangover/recipe.toml b/recipes/wip/emulators/windows/hangover/recipe.toml index 1415358d..d17af849 100644 --- a/recipes/wip/emulators/windows/hangover/recipe.toml +++ b/recipes/wip/emulators/windows/hangover/recipe.toml @@ -11,7 +11,6 @@ dependencies = [ "gnutls3", "gstreamer", "sdl2", - "libvulkan", "mesa", "libx11", "libxcomposite", From 533efbd29bd8585e9bf3d4b13d230ac83d565991 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 09:14:33 -0300 Subject: [PATCH 2580/3180] Add the llvm-mingw recipe --- recipes/wip/dev/lang/llvm-mingw/recipe.toml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 recipes/wip/dev/lang/llvm-mingw/recipe.toml diff --git a/recipes/wip/dev/lang/llvm-mingw/recipe.toml b/recipes/wip/dev/lang/llvm-mingw/recipe.toml new file mode 100644 index 00000000..93bef5ac --- /dev/null +++ b/recipes/wip/dev/lang/llvm-mingw/recipe.toml @@ -0,0 +1,10 @@ +#TODO missing script, read the llvm18 recipe for reference +# build instructions: https://github.com/mstorsjo/llvm-mingw#building-from-source +[source] +git = "https://github.com/mstorsjo/llvm-mingw" +rev = "40ccfd163eee35468c0cc5f356649d13029aec8b" +[build] +template = "custom" +dependencies = [ + "zlib", +] From 61be95e52587954cb780e2b767e5c6a1682b82be Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 11:51:30 -0300 Subject: [PATCH 2581/3180] Fix the asm-lsp recipe and update a TODO --- recipes/wip/dev/graphics/sh4der-jockey/recipe.toml | 2 +- recipes/wip/dev/ide/asm-lsp/recipe.toml | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/wip/dev/graphics/sh4der-jockey/recipe.toml b/recipes/wip/dev/graphics/sh4der-jockey/recipe.toml index 82e29401..d3001c4c 100644 --- a/recipes/wip/dev/graphics/sh4der-jockey/recipe.toml +++ b/recipes/wip/dev/graphics/sh4der-jockey/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO winit crate error [source] git = "https://github.com/slerpyyy/sh4der-jockey" [build] diff --git a/recipes/wip/dev/ide/asm-lsp/recipe.toml b/recipes/wip/dev/ide/asm-lsp/recipe.toml index 7529d44e..0daa9e88 100644 --- a/recipes/wip/dev/ide/asm-lsp/recipe.toml +++ b/recipes/wip/dev/ide/asm-lsp/recipe.toml @@ -2,4 +2,7 @@ [source] git = "https://github.com/bergercookie/asm-lsp" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages asm-lsp +""" From 1c3accea1d26f8e8e431ccd95dd718ee11b7820d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 11:53:14 -0300 Subject: [PATCH 2582/3180] Update asm-lsp recipe --- recipes/wip/dev/ide/asm-lsp/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/wip/dev/ide/asm-lsp/recipe.toml b/recipes/wip/dev/ide/asm-lsp/recipe.toml index 0daa9e88..2ac7e7cc 100644 --- a/recipes/wip/dev/ide/asm-lsp/recipe.toml +++ b/recipes/wip/dev/ide/asm-lsp/recipe.toml @@ -3,6 +3,9 @@ git = "https://github.com/bergercookie/asm-lsp" [build] template = "custom" +dependencies = [ + "openssl1", +] script = """ cookbook_cargo_packages asm-lsp """ From 269ac9f46ef2ac927c892b126f58c2245e32d0a0 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 12:24:04 -0300 Subject: [PATCH 2583/3180] Fix a typo in the ristretto recipe name and update TODOs --- recipes/wip/dev/ide/asm-lsp/recipe.toml | 2 +- recipes/wip/dev/lang/python312/recipe.toml | 2 +- recipes/wip/dev/lang/{ristrettto => ristretto}/recipe.toml | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename recipes/wip/dev/lang/{ristrettto => ristretto}/recipe.toml (100%) diff --git a/recipes/wip/dev/ide/asm-lsp/recipe.toml b/recipes/wip/dev/ide/asm-lsp/recipe.toml index 2ac7e7cc..843262e6 100644 --- a/recipes/wip/dev/ide/asm-lsp/recipe.toml +++ b/recipes/wip/dev/ide/asm-lsp/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO linking error [source] git = "https://github.com/bergercookie/asm-lsp" [build] diff --git a/recipes/wip/dev/lang/python312/recipe.toml b/recipes/wip/dev/lang/python312/recipe.toml index 598eef14..e53fb2c0 100644 --- a/recipes/wip/dev/lang/python312/recipe.toml +++ b/recipes/wip/dev/lang/python312/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO finish it based on the python310 recipe [source] tar = "https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tar.xz" [build] diff --git a/recipes/wip/dev/lang/ristrettto/recipe.toml b/recipes/wip/dev/lang/ristretto/recipe.toml similarity index 100% rename from recipes/wip/dev/lang/ristrettto/recipe.toml rename to recipes/wip/dev/lang/ristretto/recipe.toml From 0227b2176b7aedb6a62c1f1a5d41d736ad43ab48 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 12:30:59 -0300 Subject: [PATCH 2584/3180] Update TODOs and the dioxus recipe --- recipes/wip/dev/lang/ristretto/recipe.toml | 2 +- recipes/wip/dev/other/customasm/recipe.toml | 2 +- recipes/wip/dev/other/dioxus/recipe.toml | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/wip/dev/lang/ristretto/recipe.toml b/recipes/wip/dev/lang/ristretto/recipe.toml index e6b345db..5210a054 100644 --- a/recipes/wip/dev/lang/ristretto/recipe.toml +++ b/recipes/wip/dev/lang/ristretto/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO require rustc 1.87 or newer [source] git = "https://github.com/theseus-rs/ristretto" [build] diff --git a/recipes/wip/dev/other/customasm/recipe.toml b/recipes/wip/dev/other/customasm/recipe.toml index 624efa59..42728a55 100644 --- a/recipes/wip/dev/other/customasm/recipe.toml +++ b/recipes/wip/dev/other/customasm/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/hlorenzi/customasm" [build] diff --git a/recipes/wip/dev/other/dioxus/recipe.toml b/recipes/wip/dev/other/dioxus/recipe.toml index f329c719..b9d44e8c 100644 --- a/recipes/wip/dev/other/dioxus/recipe.toml +++ b/recipes/wip/dev/other/dioxus/recipe.toml @@ -3,6 +3,9 @@ git = "https://github.com/DioxusLabs/dioxus" [build] template = "custom" +dependencies = [ + "openssl1", +] script = """ cookbook_cargo_packages dioxus-cli """ From a6ff69a66f61a96b85830b7c62afdab99543fed9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 14:50:59 -0300 Subject: [PATCH 2585/3180] Update TODOs and fix a typo in the mkrs recipe name --- recipes/wip/dev/other/dioxus/recipe.toml | 3 ++- recipes/wip/dev/other/harper/recipe.toml | 2 +- recipes/wip/dev/other/jujutsu/recipe.toml | 2 +- recipes/wip/dev/other/leptosfmt/recipe.toml | 2 +- recipes/wip/dev/other/{mkfs => mkrs}/recipe.toml | 0 5 files changed, 5 insertions(+), 4 deletions(-) rename recipes/wip/dev/other/{mkfs => mkrs}/recipe.toml (100%) diff --git a/recipes/wip/dev/other/dioxus/recipe.toml b/recipes/wip/dev/other/dioxus/recipe.toml index b9d44e8c..bbe739ab 100644 --- a/recipes/wip/dev/other/dioxus/recipe.toml +++ b/recipes/wip/dev/other/dioxus/recipe.toml @@ -1,4 +1,5 @@ -#TODO not compiled or tested +#TODO compilation error +#TODO need to install the bindgen-cli build tool from cargo: cargo install --force --locked bindgen-cli [source] git = "https://github.com/DioxusLabs/dioxus" [build] diff --git a/recipes/wip/dev/other/harper/recipe.toml b/recipes/wip/dev/other/harper/recipe.toml index fb022eb9..6e4e8147 100644 --- a/recipes/wip/dev/other/harper/recipe.toml +++ b/recipes/wip/dev/other/harper/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO linking error [source] git = "https://github.com/Automattic/harper" [build] diff --git a/recipes/wip/dev/other/jujutsu/recipe.toml b/recipes/wip/dev/other/jujutsu/recipe.toml index 31fd4258..15e349b1 100644 --- a/recipes/wip/dev/other/jujutsu/recipe.toml +++ b/recipes/wip/dev/other/jujutsu/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO mac_address crate error [source] git = "https://github.com/martinvonz/jj" [build] diff --git a/recipes/wip/dev/other/leptosfmt/recipe.toml b/recipes/wip/dev/other/leptosfmt/recipe.toml index 04f407a5..662aa4c4 100644 --- a/recipes/wip/dev/other/leptosfmt/recipe.toml +++ b/recipes/wip/dev/other/leptosfmt/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/bram209/leptosfmt" [build] diff --git a/recipes/wip/dev/other/mkfs/recipe.toml b/recipes/wip/dev/other/mkrs/recipe.toml similarity index 100% rename from recipes/wip/dev/other/mkfs/recipe.toml rename to recipes/wip/dev/other/mkrs/recipe.toml From 9ee2561670b062c8b542022fae5a1402a79f572d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 15:31:58 -0300 Subject: [PATCH 2586/3180] Fix the mold recipe and update a TODO --- recipes/wip/dev/other/mkrs/recipe.toml | 2 +- recipes/wip/dev/other/mold/recipe.toml | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/recipes/wip/dev/other/mkrs/recipe.toml b/recipes/wip/dev/other/mkrs/recipe.toml index c16d9675..91e9c60e 100644 --- a/recipes/wip/dev/other/mkrs/recipe.toml +++ b/recipes/wip/dev/other/mkrs/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO outdated redox_syscall crate [source] git = "https://github.com/qtfkwk/mkrs" [build] diff --git a/recipes/wip/dev/other/mold/recipe.toml b/recipes/wip/dev/other/mold/recipe.toml index e61f76c5..732cbf07 100644 --- a/recipes/wip/dev/other/mold/recipe.toml +++ b/recipes/wip/dev/other/mold/recipe.toml @@ -3,12 +3,9 @@ # build instructions - https://github.com/rui314/mold#how-to-build [source] git = "https://github.com/rui314/mold" -rev = "cf1c02d097fc57113b7f9fabf1bc15f810b8b27c" +rev = "b53197300b5bf9f02daccae536f65dda2d1431c5" [build] template = "custom" -dependencies = [ - "library1", -] script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( From 90705d387794104cb134c1327f94899a9437b106 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 16:11:11 -0300 Subject: [PATCH 2587/3180] Fix the not-perf recipe and update a TODO --- recipes/wip/dev/other/mold/recipe.toml | 2 +- recipes/wip/dev/other/not-perf/recipe.toml | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/wip/dev/other/mold/recipe.toml b/recipes/wip/dev/other/mold/recipe.toml index 732cbf07..2692aae6 100644 --- a/recipes/wip/dev/other/mold/recipe.toml +++ b/recipes/wip/dev/other/mold/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compilation error #TODO maybe incomplete script # build instructions - https://github.com/rui314/mold#how-to-build [source] diff --git a/recipes/wip/dev/other/not-perf/recipe.toml b/recipes/wip/dev/other/not-perf/recipe.toml index f7a52ed8..4c7612f6 100644 --- a/recipes/wip/dev/other/not-perf/recipe.toml +++ b/recipes/wip/dev/other/not-perf/recipe.toml @@ -2,4 +2,7 @@ [source] git = "https://github.com/koute/not-perf" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages nperf +""" From 424615dc46b1aeb058fc681f5351d7f059071c75 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 17:33:08 -0300 Subject: [PATCH 2588/3180] Update the silicon recipe and TODOs --- recipes/wip/dev/other/not-perf/recipe.toml | 2 +- recipes/wip/dev/other/rudra/recipe.toml | 2 +- recipes/wip/dev/other/silicon/recipe.toml | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/wip/dev/other/not-perf/recipe.toml b/recipes/wip/dev/other/not-perf/recipe.toml index 4c7612f6..af14fe02 100644 --- a/recipes/wip/dev/other/not-perf/recipe.toml +++ b/recipes/wip/dev/other/not-perf/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO perf_event_open crate error (after cargo update) [source] git = "https://github.com/koute/not-perf" [build] diff --git a/recipes/wip/dev/other/rudra/recipe.toml b/recipes/wip/dev/other/rudra/recipe.toml index 9a672bf3..0cec8f00 100644 --- a/recipes/wip/dev/other/rudra/recipe.toml +++ b/recipes/wip/dev/other/rudra/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO ouutdated redox_syscall crate? [source] git = "https://github.com/sslab-gatech/Rudra" [build] diff --git a/recipes/wip/dev/other/silicon/recipe.toml b/recipes/wip/dev/other/silicon/recipe.toml index 64a2461b..543bd081 100644 --- a/recipes/wip/dev/other/silicon/recipe.toml +++ b/recipes/wip/dev/other/silicon/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/Aloxaf/silicon" [build] template = "cargo" +dependencies = [ + "fontconfig", +] From e95304ec5c49e8a1ebcac204ddd548db67c4171d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 17:37:38 -0300 Subject: [PATCH 2589/3180] Update the wrkflw recipe and a TODO --- recipes/wip/dev/other/silicon/recipe.toml | 2 +- recipes/wip/dev/other/wrkflw/recipe.toml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/dev/other/silicon/recipe.toml b/recipes/wip/dev/other/silicon/recipe.toml index 543bd081..b2b17b4f 100644 --- a/recipes/wip/dev/other/silicon/recipe.toml +++ b/recipes/wip/dev/other/silicon/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO the yeslogic-fontconfig-sys crate can't find the fontconfig dependency [source] git = "https://github.com/Aloxaf/silicon" [build] diff --git a/recipes/wip/dev/other/wrkflw/recipe.toml b/recipes/wip/dev/other/wrkflw/recipe.toml index f5a50491..bbd9878b 100644 --- a/recipes/wip/dev/other/wrkflw/recipe.toml +++ b/recipes/wip/dev/other/wrkflw/recipe.toml @@ -3,6 +3,9 @@ git = "https://github.com/bahdotsh/wrkflw" [build] template = "custom" +dependencies = [ + "openssl1", +] script = """ cookbook_cargo_packages wrkflw """ From 25121b3931ea4e54cdb70b5d6984d3951a9c9d61 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 17:59:49 -0300 Subject: [PATCH 2590/3180] Update the dylint recipe and update TODOs --- recipes/wip/dev/other/wrkflw/recipe.toml | 2 +- recipes/wip/dev/patchers/hexpatch/recipe.toml | 2 +- recipes/wip/dev/performance/flamelens/recipe.toml | 2 +- recipes/wip/dev/rust-tools/dylint/recipe.toml | 3 +++ 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/recipes/wip/dev/other/wrkflw/recipe.toml b/recipes/wip/dev/other/wrkflw/recipe.toml index bbd9878b..af0ca6d3 100644 --- a/recipes/wip/dev/other/wrkflw/recipe.toml +++ b/recipes/wip/dev/other/wrkflw/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO can't find the openssl dependency [source] git = "https://github.com/bahdotsh/wrkflw" [build] diff --git a/recipes/wip/dev/patchers/hexpatch/recipe.toml b/recipes/wip/dev/patchers/hexpatch/recipe.toml index 736fe988..5c308668 100644 --- a/recipes/wip/dev/patchers/hexpatch/recipe.toml +++ b/recipes/wip/dev/patchers/hexpatch/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO mlua-sys crate error [source] git = "https://github.com/Etto48/HexPatch" [build] diff --git a/recipes/wip/dev/performance/flamelens/recipe.toml b/recipes/wip/dev/performance/flamelens/recipe.toml index 4c3b214e..be939a75 100644 --- a/recipes/wip/dev/performance/flamelens/recipe.toml +++ b/recipes/wip/dev/performance/flamelens/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/YS-L/flamelens" [build] diff --git a/recipes/wip/dev/rust-tools/dylint/recipe.toml b/recipes/wip/dev/rust-tools/dylint/recipe.toml index a3a60063..ecaf4fb0 100644 --- a/recipes/wip/dev/rust-tools/dylint/recipe.toml +++ b/recipes/wip/dev/rust-tools/dylint/recipe.toml @@ -3,6 +3,9 @@ git = "https://github.com/trailofbits/dylint" [build] template = "custom" +dependencies = [ + "openssl1", +] script = """ cookbook_cargo_packages cargo-dylint dylint-link """ From 211d2683dc04cfeb74fb7b29726a0eb77f1ecf65 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 18:05:10 -0300 Subject: [PATCH 2591/3180] Update the ferrisup recipe and update a TODO --- recipes/wip/dev/rust-tools/dylint/recipe.toml | 2 +- recipes/wip/dev/rust-tools/ferrisup/recipe.toml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/dev/rust-tools/dylint/recipe.toml b/recipes/wip/dev/rust-tools/dylint/recipe.toml index ecaf4fb0..6b7c876d 100644 --- a/recipes/wip/dev/rust-tools/dylint/recipe.toml +++ b/recipes/wip/dev/rust-tools/dylint/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO cargo-util crate error [source] git = "https://github.com/trailofbits/dylint" [build] diff --git a/recipes/wip/dev/rust-tools/ferrisup/recipe.toml b/recipes/wip/dev/rust-tools/ferrisup/recipe.toml index 15e13cc3..1f274ea9 100644 --- a/recipes/wip/dev/rust-tools/ferrisup/recipe.toml +++ b/recipes/wip/dev/rust-tools/ferrisup/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/Jitpomi/ferrisup" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 17542b3a4bcd5c3c9151e42e456e9e27a17c9553 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 18:24:31 -0300 Subject: [PATCH 2592/3180] Update TODOs --- recipes/wip/dev/rust-tools/ferrisup/recipe.toml | 2 +- recipes/wip/dev/rust-tools/tagref/recipe.toml | 2 +- recipes/wip/dev/wasm/trunk/recipe.toml | 2 +- recipes/wip/dev/wasm/wasminspect/recipe.toml | 2 +- recipes/wip/dev/web/vox/recipe.toml | 2 +- recipes/wip/edu/hacker-laws/recipe.toml | 2 +- recipes/wip/edu/rusty-tape/recipe.toml | 2 +- recipes/wip/emulators/cpu/6502-emulator/recipe.toml | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/recipes/wip/dev/rust-tools/ferrisup/recipe.toml b/recipes/wip/dev/rust-tools/ferrisup/recipe.toml index 1f274ea9..d1eec35e 100644 --- a/recipes/wip/dev/rust-tools/ferrisup/recipe.toml +++ b/recipes/wip/dev/rust-tools/ferrisup/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/Jitpomi/ferrisup" [build] diff --git a/recipes/wip/dev/rust-tools/tagref/recipe.toml b/recipes/wip/dev/rust-tools/tagref/recipe.toml index 497446f1..aeb923e8 100644 --- a/recipes/wip/dev/rust-tools/tagref/recipe.toml +++ b/recipes/wip/dev/rust-tools/tagref/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/stepchowfun/tagref" [build] diff --git a/recipes/wip/dev/wasm/trunk/recipe.toml b/recipes/wip/dev/wasm/trunk/recipe.toml index 1874e01d..e03cb9db 100644 --- a/recipes/wip/dev/wasm/trunk/recipe.toml +++ b/recipes/wip/dev/wasm/trunk/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO fs_at and libc crates error [source] git = "https://github.com/trunk-rs/trunk" [build] diff --git a/recipes/wip/dev/wasm/wasminspect/recipe.toml b/recipes/wip/dev/wasm/wasminspect/recipe.toml index 1a32dbd2..c69cb0f2 100644 --- a/recipes/wip/dev/wasm/wasminspect/recipe.toml +++ b/recipes/wip/dev/wasm/wasminspect/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO outdated redox_syscall crate [source] git = "https://github.com/kateinoigakukun/wasminspect" [build] diff --git a/recipes/wip/dev/web/vox/recipe.toml b/recipes/wip/dev/web/vox/recipe.toml index 6649f708..2a6be325 100644 --- a/recipes/wip/dev/web/vox/recipe.toml +++ b/recipes/wip/dev/web/vox/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/emmyoh/vox" [build] diff --git a/recipes/wip/edu/hacker-laws/recipe.toml b/recipes/wip/edu/hacker-laws/recipe.toml index 69c7b5d9..1d9fbcbb 100644 --- a/recipes/wip/edu/hacker-laws/recipe.toml +++ b/recipes/wip/edu/hacker-laws/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO not tested [source] git = "https://github.com/dwmkerr/hacker-laws" [build] diff --git a/recipes/wip/edu/rusty-tape/recipe.toml b/recipes/wip/edu/rusty-tape/recipe.toml index 755a33f3..f6c71a5a 100644 --- a/recipes/wip/edu/rusty-tape/recipe.toml +++ b/recipes/wip/edu/rusty-tape/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/Kkobarii/Rusty-Tape" [build] diff --git a/recipes/wip/emulators/cpu/6502-emulator/recipe.toml b/recipes/wip/emulators/cpu/6502-emulator/recipe.toml index 4b2976b0..06d2621d 100644 --- a/recipes/wip/emulators/cpu/6502-emulator/recipe.toml +++ b/recipes/wip/emulators/cpu/6502-emulator/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO ahash crate error (probably outdated) [source] git = "https://github.com/ArchUsr64/6502_emulator" [build] From f637bb2fd1bcc36933f820238cd385f33b309f4c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 18:30:58 -0300 Subject: [PATCH 2593/3180] Improve the mupen64plus-core recipe and remove unnecessary mupen64plus recipes --- .../n64/mupen64plus-audio-sdl/recipe.toml | 5 ----- .../game-console/n64/mupen64plus-core/recipe.toml | 2 +- .../n64/mupen64plus-input-sdl/recipe.toml | 5 ----- .../n64/mupen64plus-ui-console/recipe.toml | 12 ------------ .../n64/mupen64plus-video-glide64/recipe.toml | 5 ----- .../n64/mupen64plus-video-rice/recipe.toml | 5 ----- 6 files changed, 1 insertion(+), 33 deletions(-) delete mode 100644 recipes/wip/emulators/game-console/n64/mupen64plus-audio-sdl/recipe.toml delete mode 100644 recipes/wip/emulators/game-console/n64/mupen64plus-input-sdl/recipe.toml delete mode 100644 recipes/wip/emulators/game-console/n64/mupen64plus-ui-console/recipe.toml delete mode 100644 recipes/wip/emulators/game-console/n64/mupen64plus-video-glide64/recipe.toml delete mode 100644 recipes/wip/emulators/game-console/n64/mupen64plus-video-rice/recipe.toml diff --git a/recipes/wip/emulators/game-console/n64/mupen64plus-audio-sdl/recipe.toml b/recipes/wip/emulators/game-console/n64/mupen64plus-audio-sdl/recipe.toml deleted file mode 100644 index 5dfe956b..00000000 --- a/recipes/wip/emulators/game-console/n64/mupen64plus-audio-sdl/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO Not compiled or tested -[source] -git = "https://github.com/mupen64plus/mupen64plus-audio-sdl" -[build] -template = "custom" diff --git a/recipes/wip/emulators/game-console/n64/mupen64plus-core/recipe.toml b/recipes/wip/emulators/game-console/n64/mupen64plus-core/recipe.toml index e03ca3a3..00d650a8 100644 --- a/recipes/wip/emulators/game-console/n64/mupen64plus-core/recipe.toml +++ b/recipes/wip/emulators/game-console/n64/mupen64plus-core/recipe.toml @@ -1,6 +1,6 @@ #TODO missing script for "make", see https://github.com/mupen64plus/mupen64plus-core#2-building-from-source [source] -git = "https://github.com/mupen64plus/mupen64plus-core" +tar = "https://github.com/mupen64plus/mupen64plus-core/releases/download/2.6.0/mupen64plus-bundle-src-2.6.0.tar.gz" [build] template = "custom" dependencies = [ diff --git a/recipes/wip/emulators/game-console/n64/mupen64plus-input-sdl/recipe.toml b/recipes/wip/emulators/game-console/n64/mupen64plus-input-sdl/recipe.toml deleted file mode 100644 index 8b83293a..00000000 --- a/recipes/wip/emulators/game-console/n64/mupen64plus-input-sdl/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO missing script for "make", see https://github.com/mupen64plus/mupen64plus-input-sdl/blob/master/INSTALL#L11 -[source] -git = "https://github.com/mupen64plus/mupen64plus-input-sdl" -[build] -template = "custom" diff --git a/recipes/wip/emulators/game-console/n64/mupen64plus-ui-console/recipe.toml b/recipes/wip/emulators/game-console/n64/mupen64plus-ui-console/recipe.toml deleted file mode 100644 index 634f751d..00000000 --- a/recipes/wip/emulators/game-console/n64/mupen64plus-ui-console/recipe.toml +++ /dev/null @@ -1,12 +0,0 @@ -#TODO missing script for "make", see https://github.com/mupen64plus/mupen64plus-ui-console/blob/master/INSTALL#L11 -[source] -git = "https://github.com/mupen64plus/mupen64plus-ui-console" -[build] -template = "custom" -dependencies = [ - "mupen64plus-core", - "mupen64plus-audio-sdl", - "mupen64plus-input-sdl", - "mupen64plus-video-rice", - "mupen64plus-video-glide64", -] diff --git a/recipes/wip/emulators/game-console/n64/mupen64plus-video-glide64/recipe.toml b/recipes/wip/emulators/game-console/n64/mupen64plus-video-glide64/recipe.toml deleted file mode 100644 index 67b7c6a9..00000000 --- a/recipes/wip/emulators/game-console/n64/mupen64plus-video-glide64/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO missing script for "make", see https://github.com/mupen64plus/mupen64plus-video-glide64/blob/master/src/INSTALL -[source] -git = "https://github.com/mupen64plus/mupen64plus-video-glide64" -[build] -template = "custom" diff --git a/recipes/wip/emulators/game-console/n64/mupen64plus-video-rice/recipe.toml b/recipes/wip/emulators/game-console/n64/mupen64plus-video-rice/recipe.toml deleted file mode 100644 index 84455bfd..00000000 --- a/recipes/wip/emulators/game-console/n64/mupen64plus-video-rice/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO missing script for "make", see https://github.com/mupen64plus/mupen64plus-video-rice/blob/master/INSTALL#L11 -[source] -tar = "https://github.com/mupen64plus/mupen64plus-video-rice" -[build] -template = "custom" From 8de7fff49fb0a37e419103f2aad9d1096067c4c3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 18:43:49 -0300 Subject: [PATCH 2594/3180] Update a TODO --- recipes/wip/emulators/game-console/nes/potatis/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/emulators/game-console/nes/potatis/recipe.toml b/recipes/wip/emulators/game-console/nes/potatis/recipe.toml index f77eb715..c912028d 100644 --- a/recipes/wip/emulators/game-console/nes/potatis/recipe.toml +++ b/recipes/wip/emulators/game-console/nes/potatis/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO don't fetch private submodules [source] git = "https://github.com/henrikpersson/potatis" [build] From 9e362f26e7d89012f63e81c595e1a88f3e0db3c8 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 19:26:08 -0300 Subject: [PATCH 2595/3180] Update TODOs --- recipes/wip/finance/mgmt/tackler-ng/recipe.toml | 2 +- recipes/wip/games/data/0ad-data/recipe.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/wip/finance/mgmt/tackler-ng/recipe.toml b/recipes/wip/finance/mgmt/tackler-ng/recipe.toml index 09092a70..edaf9a90 100644 --- a/recipes/wip/finance/mgmt/tackler-ng/recipe.toml +++ b/recipes/wip/finance/mgmt/tackler-ng/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/e257-fi/tackler-ng" [build] diff --git a/recipes/wip/games/data/0ad-data/recipe.toml b/recipes/wip/games/data/0ad-data/recipe.toml index 73243c0b..6f681daa 100644 --- a/recipes/wip/games/data/0ad-data/recipe.toml +++ b/recipes/wip/games/data/0ad-data/recipe.toml @@ -1,4 +1,4 @@ -#TODO Not compiled or tested +#TODO not tested [source] tar = "https://releases.wildfiregames.com/0ad-0.0.26-alpha-unix-data.tar.xz" [build] From b76eff06bd25d6fe0d8d8e51f213aacb6eeb7403 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 19:26:59 -0300 Subject: [PATCH 2596/3180] Move the 0ad recipe to a proper category --- recipes/wip/games/{ => strategy}/0ad/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/games/{ => strategy}/0ad/recipe.toml (100%) diff --git a/recipes/wip/games/0ad/recipe.toml b/recipes/wip/games/strategy/0ad/recipe.toml similarity index 100% rename from recipes/wip/games/0ad/recipe.toml rename to recipes/wip/games/strategy/0ad/recipe.toml From b2b989e0bd5726adc4a7c0c2bff6d1904dfc8e95 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 19:33:30 -0300 Subject: [PATCH 2597/3180] Update the rust-doom recipe --- recipes/wip/games/fps/rust-doom/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/games/fps/rust-doom/recipe.toml b/recipes/wip/games/fps/rust-doom/recipe.toml index d2bc246a..8ee06820 100644 --- a/recipes/wip/games/fps/rust-doom/recipe.toml +++ b/recipes/wip/games/fps/rust-doom/recipe.toml @@ -1,6 +1,6 @@ #TODO not compiled or tested [source] -git = "https://github.com/cristicbz/rust-doom" +git = "https://github.com/hovinen/rust-doom" [build] template = "custom" script = """ From ba3a6845879dde85c0ce5c022b43f65736cb991f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 19:56:00 -0300 Subject: [PATCH 2598/3180] Update TODOs --- recipes/wip/games/fps/rust-doom/recipe.toml | 2 +- recipes/wip/games/math/cosmic-ext-2048/recipe.toml | 2 +- recipes/wip/games/math/sudoku-rs/recipe.toml | 2 +- recipes/wip/games/open-world/all-is-cubes/recipe.toml | 2 +- recipes/wip/games/open-world/ethertia/recipe.toml | 2 +- recipes/wip/games/open-world/teloren/recipe.toml | 2 +- recipes/wip/games/other/slint-tetris/recipe.toml | 2 +- recipes/wip/games/other/terdle/recipe.toml | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/recipes/wip/games/fps/rust-doom/recipe.toml b/recipes/wip/games/fps/rust-doom/recipe.toml index 8ee06820..22323a90 100644 --- a/recipes/wip/games/fps/rust-doom/recipe.toml +++ b/recipes/wip/games/fps/rust-doom/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/hovinen/rust-doom" [build] diff --git a/recipes/wip/games/math/cosmic-ext-2048/recipe.toml b/recipes/wip/games/math/cosmic-ext-2048/recipe.toml index 872d66c0..6f113f74 100644 --- a/recipes/wip/games/math/cosmic-ext-2048/recipe.toml +++ b/recipes/wip/games/math/cosmic-ext-2048/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO zbus crate error [source] git = "https://github.com/Kartonrealista/cosmic-ext-2048" [build] diff --git a/recipes/wip/games/math/sudoku-rs/recipe.toml b/recipes/wip/games/math/sudoku-rs/recipe.toml index 6111be19..70752838 100644 --- a/recipes/wip/games/math/sudoku-rs/recipe.toml +++ b/recipes/wip/games/math/sudoku-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/crazymerlyn/sudoku" [build] diff --git a/recipes/wip/games/open-world/all-is-cubes/recipe.toml b/recipes/wip/games/open-world/all-is-cubes/recipe.toml index 29a37232..227fbfa9 100644 --- a/recipes/wip/games/open-world/all-is-cubes/recipe.toml +++ b/recipes/wip/games/open-world/all-is-cubes/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO require rustc 1.87 or newer [source] git = "https://github.com/kpreid/all-is-cubes" [build] diff --git a/recipes/wip/games/open-world/ethertia/recipe.toml b/recipes/wip/games/open-world/ethertia/recipe.toml index 747cf451..3ed24ae2 100644 --- a/recipes/wip/games/open-world/ethertia/recipe.toml +++ b/recipes/wip/games/open-world/ethertia/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO webbrowser crate error [source] git = "https://github.com/Dreamtowards/Ethertum" [build] diff --git a/recipes/wip/games/open-world/teloren/recipe.toml b/recipes/wip/games/open-world/teloren/recipe.toml index eda5d83d..bc7e1daf 100644 --- a/recipes/wip/games/open-world/teloren/recipe.toml +++ b/recipes/wip/games/open-world/teloren/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO quinn-udp crate error [source] git = "https://github.com/zesterer/teloren" [build] diff --git a/recipes/wip/games/other/slint-tetris/recipe.toml b/recipes/wip/games/other/slint-tetris/recipe.toml index e000450e..233d4f69 100644 --- a/recipes/wip/games/other/slint-tetris/recipe.toml +++ b/recipes/wip/games/other/slint-tetris/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO outdated proc-macro2 crate [source] git = "https://github.com/GaspardCulis/slint-tetris" [build] diff --git a/recipes/wip/games/other/terdle/recipe.toml b/recipes/wip/games/other/terdle/recipe.toml index 8f420bed..2100bf51 100644 --- a/recipes/wip/games/other/terdle/recipe.toml +++ b/recipes/wip/games/other/terdle/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO signal-hook and libc crate errors [source] git = "https://github.com/neelkarma/terdle" [build] From 418795d801d77502b62b4bdc41d78ebed5bf42a1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 19:58:31 -0300 Subject: [PATCH 2599/3180] Fix and cleanup the kingslayer recipe --- recipes/wip/games/rpg/kingslayer/recipe.toml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/recipes/wip/games/rpg/kingslayer/recipe.toml b/recipes/wip/games/rpg/kingslayer/recipe.toml index b57b13dd..4f853317 100644 --- a/recipes/wip/games/rpg/kingslayer/recipe.toml +++ b/recipes/wip/games/rpg/kingslayer/recipe.toml @@ -2,9 +2,4 @@ [source] git = "https://github.com/Zaechus/kingslayer" [build] -template = "custom" -script = """ -mkdir -pv "${COOKBOOK_STAGE}"/usr/share/kingslayer -cp -rv "${COOKBOOK_SOURCE}"/worlds/* "${COOKBOOK_STAGE}"/usr/share/kingslayer -cookbook_cargo -""" +template = "cargo" From ab73c9ed52926bc080a0572cee7dd1f808288f80 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 20:44:07 -0300 Subject: [PATCH 2600/3180] Update TODOs --- recipes/wip/games/rpg/kingslayer/recipe.toml | 2 +- recipes/wip/games/shooter/asciiarena/recipe.toml | 2 +- recipes/wip/games/simulation/egregoria/recipe.toml | 2 +- recipes/wip/games/simulation/formicarium/recipe.toml | 2 +- recipes/wip/games/simulation/game-of-life-piston/recipe.toml | 2 +- recipes/wip/games/simulation/nbodysim/recipe.toml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/recipes/wip/games/rpg/kingslayer/recipe.toml b/recipes/wip/games/rpg/kingslayer/recipe.toml index 4f853317..e1d1df0f 100644 --- a/recipes/wip/games/rpg/kingslayer/recipe.toml +++ b/recipes/wip/games/rpg/kingslayer/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/Zaechus/kingslayer" [build] diff --git a/recipes/wip/games/shooter/asciiarena/recipe.toml b/recipes/wip/games/shooter/asciiarena/recipe.toml index 2eb0e618..8c019005 100644 --- a/recipes/wip/games/shooter/asciiarena/recipe.toml +++ b/recipes/wip/games/shooter/asciiarena/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO outdated mio crate [source] git = "https://github.com/lemunozm/asciiarena" [build] diff --git a/recipes/wip/games/simulation/egregoria/recipe.toml b/recipes/wip/games/simulation/egregoria/recipe.toml index beeac656..13e33904 100644 --- a/recipes/wip/games/simulation/egregoria/recipe.toml +++ b/recipes/wip/games/simulation/egregoria/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO winit crate error [source] git = "https://github.com/Uriopass/Egregoria" [build] diff --git a/recipes/wip/games/simulation/formicarium/recipe.toml b/recipes/wip/games/simulation/formicarium/recipe.toml index 50bf13ea..905c3b50 100644 --- a/recipes/wip/games/simulation/formicarium/recipe.toml +++ b/recipes/wip/games/simulation/formicarium/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO outdated libc crate [source] git = "https://github.com/gliderkite/formicarium" [build] diff --git a/recipes/wip/games/simulation/game-of-life-piston/recipe.toml b/recipes/wip/games/simulation/game-of-life-piston/recipe.toml index cc7e131a..92552bf8 100644 --- a/recipes/wip/games/simulation/game-of-life-piston/recipe.toml +++ b/recipes/wip/games/simulation/game-of-life-piston/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO outdated libc crate [source] git = "https://github.com/Arcterus/game-of-life" [build] diff --git a/recipes/wip/games/simulation/nbodysim/recipe.toml b/recipes/wip/games/simulation/nbodysim/recipe.toml index 154732eb..9914a961 100644 --- a/recipes/wip/games/simulation/nbodysim/recipe.toml +++ b/recipes/wip/games/simulation/nbodysim/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO outdated crates [source] git = "https://github.com/timokoesters/nbodysim" [build] From 024ef6e7d6c7f3f48ff39a8afd1328ad067b0fd3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 20:45:03 -0300 Subject: [PATCH 2601/3180] Rename the sandbox-rs recipes to fix a conflict --- recipes/wip/games/other/{sandbox-rs => sandbox-rs1}/recipe.toml | 0 .../wip/games/simulation/{sandbox-rs => sandbox-rs2}/recipe.toml | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/games/other/{sandbox-rs => sandbox-rs1}/recipe.toml (100%) rename recipes/wip/games/simulation/{sandbox-rs => sandbox-rs2}/recipe.toml (100%) diff --git a/recipes/wip/games/other/sandbox-rs/recipe.toml b/recipes/wip/games/other/sandbox-rs1/recipe.toml similarity index 100% rename from recipes/wip/games/other/sandbox-rs/recipe.toml rename to recipes/wip/games/other/sandbox-rs1/recipe.toml diff --git a/recipes/wip/games/simulation/sandbox-rs/recipe.toml b/recipes/wip/games/simulation/sandbox-rs2/recipe.toml similarity index 100% rename from recipes/wip/games/simulation/sandbox-rs/recipe.toml rename to recipes/wip/games/simulation/sandbox-rs2/recipe.toml From 8bdc2cd8de21e7cec273d442193618ab61db9123 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 21:15:27 -0300 Subject: [PATCH 2602/3180] Update TODOs --- recipes/wip/games/simulation/sandbox-rs2/recipe.toml | 2 +- recipes/wip/games/strategy/castle-game/recipe.toml | 2 +- recipes/wip/games/strategy/cell-graph-risk/recipe.toml | 2 +- recipes/wip/games/strategy/mazter/recipe.toml | 2 +- recipes/wip/games/strategy/rust-sudoku/recipe.toml | 2 +- recipes/wip/games/strategy/tage/recipe.toml | 2 +- recipes/wip/games/strategy/tetris-demo/recipe.toml | 2 +- recipes/wip/games/tools/oxyromon/recipe.toml | 2 +- recipes/wip/graphics/converters/inkdrop/recipe.toml | 2 +- recipes/wip/graphics/converters/vtracer/recipe.toml | 2 +- recipes/wip/graphics/other/curvis/recipe.toml | 2 +- recipes/wip/graphics/other/halo/recipe.toml | 2 +- recipes/wip/graphics/other/image-sieve/recipe.toml | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/recipes/wip/games/simulation/sandbox-rs2/recipe.toml b/recipes/wip/games/simulation/sandbox-rs2/recipe.toml index 5109d8d5..7465dd33 100644 --- a/recipes/wip/games/simulation/sandbox-rs2/recipe.toml +++ b/recipes/wip/games/simulation/sandbox-rs2/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO ahash crate error [source] git = "https://github.com/JMS55/sandbox" [build] diff --git a/recipes/wip/games/strategy/castle-game/recipe.toml b/recipes/wip/games/strategy/castle-game/recipe.toml index 6016ee65..e24e8bd4 100644 --- a/recipes/wip/games/strategy/castle-game/recipe.toml +++ b/recipes/wip/games/strategy/castle-game/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO outdated crates [source] git = "https://github.com/tversteeg/castle-game" [build] diff --git a/recipes/wip/games/strategy/cell-graph-risk/recipe.toml b/recipes/wip/games/strategy/cell-graph-risk/recipe.toml index 66ab0106..1d2991ee 100644 --- a/recipes/wip/games/strategy/cell-graph-risk/recipe.toml +++ b/recipes/wip/games/strategy/cell-graph-risk/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO outdated libc crate [source] git = "https://github.com/PSteinhaus/Cell-Graph-Risk" [build] diff --git a/recipes/wip/games/strategy/mazter/recipe.toml b/recipes/wip/games/strategy/mazter/recipe.toml index c98c32ee..89a18ebc 100644 --- a/recipes/wip/games/strategy/mazter/recipe.toml +++ b/recipes/wip/games/strategy/mazter/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/Canop/mazter" [build] diff --git a/recipes/wip/games/strategy/rust-sudoku/recipe.toml b/recipes/wip/games/strategy/rust-sudoku/recipe.toml index b122c2f0..e0969677 100644 --- a/recipes/wip/games/strategy/rust-sudoku/recipe.toml +++ b/recipes/wip/games/strategy/rust-sudoku/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO glutin crate error [source] git = "https://github.com/xairy/rust-sudoku" [build] diff --git a/recipes/wip/games/strategy/tage/recipe.toml b/recipes/wip/games/strategy/tage/recipe.toml index ed86a558..9beea3f9 100644 --- a/recipes/wip/games/strategy/tage/recipe.toml +++ b/recipes/wip/games/strategy/tage/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/jacopograndi/tage" [build] diff --git a/recipes/wip/games/strategy/tetris-demo/recipe.toml b/recipes/wip/games/strategy/tetris-demo/recipe.toml index c786dc7a..53f30f38 100644 --- a/recipes/wip/games/strategy/tetris-demo/recipe.toml +++ b/recipes/wip/games/strategy/tetris-demo/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO outdated libc crate [source] git = "https://github.com/da-x/tetris-demo" [build] diff --git a/recipes/wip/games/tools/oxyromon/recipe.toml b/recipes/wip/games/tools/oxyromon/recipe.toml index 14c8d7b0..83d17aeb 100644 --- a/recipes/wip/games/tools/oxyromon/recipe.toml +++ b/recipes/wip/games/tools/oxyromon/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/alucryd/oxyromon" [build] diff --git a/recipes/wip/graphics/converters/inkdrop/recipe.toml b/recipes/wip/graphics/converters/inkdrop/recipe.toml index c215f771..1509b6f4 100644 --- a/recipes/wip/graphics/converters/inkdrop/recipe.toml +++ b/recipes/wip/graphics/converters/inkdrop/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO libc crate error [source] git = "https://github.com/matze/inkdrop" [build] diff --git a/recipes/wip/graphics/converters/vtracer/recipe.toml b/recipes/wip/graphics/converters/vtracer/recipe.toml index f28ae1c9..42d6ca59 100644 --- a/recipes/wip/graphics/converters/vtracer/recipe.toml +++ b/recipes/wip/graphics/converters/vtracer/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/visioncortex/vtracer" [build] diff --git a/recipes/wip/graphics/other/curvis/recipe.toml b/recipes/wip/graphics/other/curvis/recipe.toml index 68c37663..a45c90a7 100644 --- a/recipes/wip/graphics/other/curvis/recipe.toml +++ b/recipes/wip/graphics/other/curvis/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/fragarriss/CurVis" [build] diff --git a/recipes/wip/graphics/other/halo/recipe.toml b/recipes/wip/graphics/other/halo/recipe.toml index d908ee3c..ebdc1587 100644 --- a/recipes/wip/graphics/other/halo/recipe.toml +++ b/recipes/wip/graphics/other/halo/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO ahash crate error [source] git = "https://github.com/bungoboingo/halo" [build] diff --git a/recipes/wip/graphics/other/image-sieve/recipe.toml b/recipes/wip/graphics/other/image-sieve/recipe.toml index 4d40be30..636ce1ad 100644 --- a/recipes/wip/graphics/other/image-sieve/recipe.toml +++ b/recipes/wip/graphics/other/image-sieve/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO glutin crate error [source] git = "https://github.com/Futsch1/image-sieve" [build] From d0bde665fd80c13d028f5b69b52a4957c328e23f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 21:23:59 -0300 Subject: [PATCH 2603/3180] Fix the naga recipe and update a TODO --- recipes/wip/graphics/other/lpl/recipe.toml | 2 +- recipes/wip/graphics/other/naga/recipe.toml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/wip/graphics/other/lpl/recipe.toml b/recipes/wip/graphics/other/lpl/recipe.toml index e893270b..5362bd10 100644 --- a/recipes/wip/graphics/other/lpl/recipe.toml +++ b/recipes/wip/graphics/other/lpl/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/SOF3/lpl" [build] diff --git a/recipes/wip/graphics/other/naga/recipe.toml b/recipes/wip/graphics/other/naga/recipe.toml index 48eb557b..d0ab4162 100644 --- a/recipes/wip/graphics/other/naga/recipe.toml +++ b/recipes/wip/graphics/other/naga/recipe.toml @@ -1,8 +1,9 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/gfx-rs/wgpu" [build] template = "custom" script = """ cookbook_cargo_packages naga-cli +mv "${COOKBOOK_STAGE}/usr/bin/naga_naga-cli" "${COOKBOOK_STAGE}/usr/bin/naga" """ From 5156207ff774c96b6ed682f885697cb1d1452f6f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 8 Jun 2025 22:56:17 -0300 Subject: [PATCH 2604/3180] Update TODOs --- recipes/wip/graphics/other/pix-image-viewer/recipe.toml | 2 +- recipes/wip/graphics/other/simp/recipe.toml | 2 +- recipes/wip/graphics/shaders/shadertoy-rs/recipe.toml | 2 +- recipes/wip/graphics/terminal/3d-terminal-renderer/recipe.toml | 2 +- recipes/wip/graphics/terminal/aarty/recipe.toml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/recipes/wip/graphics/other/pix-image-viewer/recipe.toml b/recipes/wip/graphics/other/pix-image-viewer/recipe.toml index cb3c960d..36fcd779 100644 --- a/recipes/wip/graphics/other/pix-image-viewer/recipe.toml +++ b/recipes/wip/graphics/other/pix-image-viewer/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO proc-macro2 crate error [source] git = "https://github.com/google/pix-image-viewer" [build] diff --git a/recipes/wip/graphics/other/simp/recipe.toml b/recipes/wip/graphics/other/simp/recipe.toml index 07d99d35..4e088954 100644 --- a/recipes/wip/graphics/other/simp/recipe.toml +++ b/recipes/wip/graphics/other/simp/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO wayland-backend crate error [source] git = "https://github.com/Kl4rry/simp" [build] diff --git a/recipes/wip/graphics/shaders/shadertoy-rs/recipe.toml b/recipes/wip/graphics/shaders/shadertoy-rs/recipe.toml index e13d31b2..ac5c2407 100644 --- a/recipes/wip/graphics/shaders/shadertoy-rs/recipe.toml +++ b/recipes/wip/graphics/shaders/shadertoy-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO outdated crates [source] git = "https://github.com/fmenozzi/shadertoy-rs" [build] diff --git a/recipes/wip/graphics/terminal/3d-terminal-renderer/recipe.toml b/recipes/wip/graphics/terminal/3d-terminal-renderer/recipe.toml index d576e43d..7369624a 100644 --- a/recipes/wip/graphics/terminal/3d-terminal-renderer/recipe.toml +++ b/recipes/wip/graphics/terminal/3d-terminal-renderer/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/ryanweideman/3d-terminal-renderer" [build] diff --git a/recipes/wip/graphics/terminal/aarty/recipe.toml b/recipes/wip/graphics/terminal/aarty/recipe.toml index ec791062..d1496dfa 100644 --- a/recipes/wip/graphics/terminal/aarty/recipe.toml +++ b/recipes/wip/graphics/terminal/aarty/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/0x61nas/aarty" [build] From 0e5e9fbc584e28be236187da246f73979012d260 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Mon, 9 Jun 2025 18:17:18 +0000 Subject: [PATCH 2605/3180] Cook recipes with depedencies --- src/bin/cook.rs | 19 +++++++++++++++++++ src/recipe.rs | 33 +++++++++++++++++++++++++++++++-- 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index c0452aea..bd9916cf 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1090,18 +1090,37 @@ fn main() { let mut matching = true; let mut dry_run = false; let mut fetch_only = false; + let mut with_package_deps = false; let mut quiet = false; let mut recipe_names = Vec::new(); for arg in env::args().skip(1) { match arg.as_str() { "--" if matching => matching = false, "-d" | "--dry-run" if matching => dry_run = true, + "--with-package-deps" if matching => with_package_deps = true, "--fetch-only" if matching => fetch_only = true, "-q" | "--quiet" if matching => quiet = true, _ => recipe_names.push(arg), } } + if with_package_deps { + recipe_names = match CookRecipe::get_package_deps_recursive(&recipe_names, 16) { + Ok(ok) => ok, + Err(err) => { + eprintln!( + "{}{}cook - error:{}{} {}", + style::Bold, + color::Fg(color::AnsiValue(196)), + color::Fg(color::Reset), + style::Reset, + err, + ); + process::exit(1); + } + }; + } + let recipes = match CookRecipe::new_recursive(&recipe_names, 16) { Ok(ok) => ok, Err(err) => { diff --git a/src/recipe.rs b/src/recipe.rs index cee56583..92bfce44 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -175,6 +175,37 @@ impl CookRecipe { Ok(recipes) } + + pub fn get_package_deps_recursive(names: &[String], recursion: usize) -> Result, String> { + if recursion == 0 { + return Err(format!( + "recursion limit while processing package dependencies: {:#?}", + names + )); + } + + let mut recipes = Vec::new(); + for name in names { + let recipe = Self::new(name.clone())?; + + let dependencies = + Self::get_package_deps_recursive(&recipe.recipe.package.dependencies, recursion - 1).map_err( + |err| format!("{}: failed on loading package dependencies:\n{}", name, err), + )?; + + for dependency in dependencies { + if !recipes.contains(&dependency) { + recipes.push(dependency); + } + } + + if !recipes.contains(&name) { + recipes.push(name.clone()); + } + } + + Ok(recipes) + } } #[cfg(test)] @@ -216,7 +247,6 @@ mod tests { }, package: PackageRecipe { dependencies: Vec::new(), - shared_deps: Vec::new(), }, } ); @@ -259,7 +289,6 @@ mod tests { }, package: PackageRecipe { dependencies: Vec::new(), - shared_deps: Vec::new(), }, } ); From 7a34f3bdc384f41140e575cc59aab1d18001525a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 10 Jun 2025 12:39:03 -0300 Subject: [PATCH 2606/3180] Add the appcui recipe --- recipes/wip/demos/appcui/recipe.toml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 recipes/wip/demos/appcui/recipe.toml diff --git a/recipes/wip/demos/appcui/recipe.toml b/recipes/wip/demos/appcui/recipe.toml new file mode 100644 index 00000000..2f01142a --- /dev/null +++ b/recipes/wip/demos/appcui/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/gdt050579/AppCUI-rs" +[build] +template = "custom" +script = """ +cookbook_cargo_packages examples +""" From 221b524d23c473b88861d4f7fda29a8e58a831de Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Thu, 12 Jun 2025 17:01:59 +0000 Subject: [PATCH 2607/3180] Use GNU FTP mirror for libgmp --- recipes/libs/libgmp/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/libs/libgmp/recipe.toml b/recipes/libs/libgmp/recipe.toml index fd41e8aa..d43a6ab9 100644 --- a/recipes/libs/libgmp/recipe.toml +++ b/recipes/libs/libgmp/recipe.toml @@ -3,7 +3,7 @@ # rational numbers, and floating-point numbers. [source] -tar = "https://gmplib.org/download/gmp/gmp-6.3.0.tar.xz" +tar = "https://ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz" blake3 = "fffe4996713928ae19331c8ef39129e46d3bf5b7182820656fd4639435cd83a4" script = """ DYNAMIC_INIT From 39aa043c357503c9371544ee576b2e8c1e94f9b9 Mon Sep 17 00:00:00 2001 From: Ron Williams Date: Thu, 12 Jun 2025 10:03:55 -0700 Subject: [PATCH 2608/3180] Add cc1 to path --- recipes/dev/gcc13/recipe.toml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/recipes/dev/gcc13/recipe.toml b/recipes/dev/gcc13/recipe.toml index d5a4bc10..b6942555 100644 --- a/recipes/dev/gcc13/recipe.toml +++ b/recipes/dev/gcc13/recipe.toml @@ -16,9 +16,9 @@ mkdir -p "${COOKBOOK_SYSROOT}/usr" ln -sf "${COOKBOOK_SYSROOT}/include" "${COOKBOOK_SYSROOT}/usr/include" ln -sf "${COOKBOOK_SYSROOT}/lib" "${COOKBOOK_SYSROOT}/usr/lib" -pushd $COOKBOOK_SOURCE +pushd "${COOKBOOK_SOURCE}" COOKBOOK_AUTORECONF=autoreconf2.69 autotools_recursive_regenerate -I"$(realpath ./config)" -cp -fpv $COOKBOOK_HOST_SYSROOT/share/libtool/build-aux/{config.sub,config.guess,install-sh} libiberty/ +cp -fpv "${COOKBOOK_HOST_SYSROOT}"/share/libtool/build-aux/{config.sub,config.guess,install-sh} libiberty/ popd # pushd $COOKBOOK_SOURCE COOKBOOK_CONFIGURE_FLAGS=( @@ -41,4 +41,8 @@ COOKBOOK_CONFIGURE_FLAGS=( "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" all-gcc "${COOKBOOK_MAKE}" install-gcc DESTDIR="${COOKBOOK_STAGE}" ln -s "gcc" "${COOKBOOK_STAGE}/bin/cc" +pushd "${COOKBOOK_STAGE}" +# The symbolic link will be correct on Redox +ln -s "/libexec/gcc/${GNU_TARGET}/13.2.0/cc1" "./bin/cc1" +popd """ From 16e3790a50540424e5ad6d0ab7b867af1876e392 Mon Sep 17 00:00:00 2001 From: Oleg Pittman Date: Thu, 12 Jun 2025 17:09:34 +0000 Subject: [PATCH 2609/3180] Recipe conversion --- recipes/demos/cmatrix/recipe.sh | 34 --------------- recipes/demos/cmatrix/recipe.toml | 30 +++++++++++++ recipes/demos/dynamic-example/recipe.sh | 2 - recipes/demos/dynamic-example/recipe.toml | 9 ++++ recipes/demos/pixelcannon/recipe.sh | 10 ----- recipes/demos/pixelcannon/recipe.toml | 19 ++++++++ ...{01-no-rlimit.patch => 01_no_rlimit.patch} | 0 .../{02-no-chown.patch => 02_no_chown.patch} | 0 recipes/dev/patch/recipe.sh | 29 ------------- recipes/dev/patch/recipe.toml | 27 ++++++++++++ recipes/emulators/rustual-boy/recipe.sh | 12 ------ recipes/emulators/rustual-boy/recipe.toml | 16 +++++++ recipes/emulators/scummvm/recipe.sh | 37 ---------------- recipes/emulators/scummvm/recipe.toml | 34 +++++++++++++++ .../scummvm/{01_redox.patch => redox.patch} | 0 recipes/fonts/ttf-hack/recipe.sh | 25 ----------- recipes/fonts/ttf-hack/recipe.toml | 11 +++++ recipes/games/gigalomania/recipe.sh | 39 ----------------- recipes/games/gigalomania/recipe.toml | 36 ++++++++++++++++ recipes/games/openttd-opengfx/recipe.sh | 22 ---------- recipes/games/openttd-opengfx/recipe.toml | 9 ++++ recipes/games/openttd-openmsx/recipe.sh | 22 ---------- recipes/games/openttd-openmsx/recipe.toml | 9 ++++ recipes/games/openttd-opensfx/recipe.sh | 22 ---------- recipes/games/openttd-opensfx/recipe.toml | 9 ++++ recipes/games/openttd/recipe.sh | 40 ----------------- recipes/games/openttd/recipe.toml | 43 +++++++++++++++++++ .../openttd/{01_redox.patch => redox.patch} | 0 recipes/games/sopwith/recipe.sh | 34 --------------- recipes/games/sopwith/recipe.toml | 32 ++++++++++++++ recipes/libs/duktape/recipe.sh | 25 ----------- recipes/libs/duktape/recipe.toml | 16 +++++++ recipes/libs/duktape/redox.patch | 12 ------ recipes/libs/sdl-gfx/recipe.sh | 30 ------------- recipes/libs/sdl-gfx/recipe.toml | 30 +++++++++++++ .../sdl-gfx/{01_redox.patch => redox.patch} | 0 recipes/libs/sdl1-image/recipe.sh | 30 ------------- recipes/libs/sdl1-image/recipe.toml | 26 +++++++++++ .../{01_redox.patch => redox.patch} | 0 recipes/libs/sdl1-ttf/recipe.sh | 30 ------------- recipes/libs/sdl1-ttf/recipe.toml | 32 ++++++++++++++ .../sdl1-ttf/{01_redox.patch => redox.patch} | 0 recipes/other/generaluser-gs/recipe.sh | 23 ---------- recipes/other/generaluser-gs/recipe.toml | 9 ++++ recipes/sound/timidity/recipe.sh | 40 ----------------- recipes/sound/timidity/recipe.toml | 35 +++++++++++++++ recipes/tests/vttest/recipe.sh | 29 ------------- recipes/tests/vttest/recipe.toml | 21 +++++++++ .../vttest/{vttest.patch => redox.patch} | 0 recipes/tools/gnu-grep/recipe.sh | 27 ------------ recipes/tools/gnu-grep/recipe.toml | 17 ++++++++ recipes/tools/libc-bench/recipe.sh | 24 ----------- recipes/tools/libc-bench/recipe.toml | 15 +++++++ recipes/tools/periodictable/recipe.sh | 10 ----- recipes/tools/periodictable/recipe.toml | 16 +++++++ recipes/tools/schismtracker/recipe.sh | 31 ------------- recipes/tools/schismtracker/recipe.toml | 29 +++++++++++++ .../{01_redox.patch => redox.patch} | 0 recipes/tui/mdp/recipe.sh | 27 ------------ recipes/tui/mdp/recipe.toml | 20 +++++++++ 60 files changed, 550 insertions(+), 666 deletions(-) delete mode 100644 recipes/demos/cmatrix/recipe.sh create mode 100644 recipes/demos/cmatrix/recipe.toml delete mode 100644 recipes/demos/dynamic-example/recipe.sh create mode 100644 recipes/demos/dynamic-example/recipe.toml delete mode 100644 recipes/demos/pixelcannon/recipe.sh create mode 100644 recipes/demos/pixelcannon/recipe.toml rename recipes/dev/patch/{01-no-rlimit.patch => 01_no_rlimit.patch} (100%) rename recipes/dev/patch/{02-no-chown.patch => 02_no_chown.patch} (100%) delete mode 100644 recipes/dev/patch/recipe.sh create mode 100644 recipes/dev/patch/recipe.toml delete mode 100755 recipes/emulators/rustual-boy/recipe.sh create mode 100755 recipes/emulators/rustual-boy/recipe.toml delete mode 100644 recipes/emulators/scummvm/recipe.sh create mode 100644 recipes/emulators/scummvm/recipe.toml rename recipes/emulators/scummvm/{01_redox.patch => redox.patch} (100%) delete mode 100644 recipes/fonts/ttf-hack/recipe.sh create mode 100644 recipes/fonts/ttf-hack/recipe.toml delete mode 100644 recipes/games/gigalomania/recipe.sh create mode 100644 recipes/games/gigalomania/recipe.toml delete mode 100644 recipes/games/openttd-opengfx/recipe.sh create mode 100644 recipes/games/openttd-opengfx/recipe.toml delete mode 100644 recipes/games/openttd-openmsx/recipe.sh create mode 100644 recipes/games/openttd-openmsx/recipe.toml delete mode 100644 recipes/games/openttd-opensfx/recipe.sh create mode 100644 recipes/games/openttd-opensfx/recipe.toml delete mode 100644 recipes/games/openttd/recipe.sh create mode 100644 recipes/games/openttd/recipe.toml rename recipes/games/openttd/{01_redox.patch => redox.patch} (100%) delete mode 100644 recipes/games/sopwith/recipe.sh create mode 100644 recipes/games/sopwith/recipe.toml delete mode 100644 recipes/libs/duktape/recipe.sh create mode 100644 recipes/libs/duktape/recipe.toml delete mode 100644 recipes/libs/duktape/redox.patch delete mode 100644 recipes/libs/sdl-gfx/recipe.sh create mode 100644 recipes/libs/sdl-gfx/recipe.toml rename recipes/libs/sdl-gfx/{01_redox.patch => redox.patch} (100%) delete mode 100644 recipes/libs/sdl1-image/recipe.sh create mode 100644 recipes/libs/sdl1-image/recipe.toml rename recipes/libs/sdl1-image/{01_redox.patch => redox.patch} (100%) delete mode 100644 recipes/libs/sdl1-ttf/recipe.sh create mode 100644 recipes/libs/sdl1-ttf/recipe.toml rename recipes/libs/sdl1-ttf/{01_redox.patch => redox.patch} (100%) delete mode 100644 recipes/other/generaluser-gs/recipe.sh create mode 100644 recipes/other/generaluser-gs/recipe.toml delete mode 100644 recipes/sound/timidity/recipe.sh create mode 100644 recipes/sound/timidity/recipe.toml delete mode 100644 recipes/tests/vttest/recipe.sh create mode 100644 recipes/tests/vttest/recipe.toml rename recipes/tests/vttest/{vttest.patch => redox.patch} (100%) delete mode 100644 recipes/tools/gnu-grep/recipe.sh create mode 100644 recipes/tools/gnu-grep/recipe.toml delete mode 100644 recipes/tools/libc-bench/recipe.sh create mode 100644 recipes/tools/libc-bench/recipe.toml delete mode 100644 recipes/tools/periodictable/recipe.sh create mode 100644 recipes/tools/periodictable/recipe.toml delete mode 100644 recipes/tools/schismtracker/recipe.sh create mode 100644 recipes/tools/schismtracker/recipe.toml rename recipes/tools/schismtracker/{01_redox.patch => redox.patch} (100%) delete mode 100644 recipes/tui/mdp/recipe.sh create mode 100644 recipes/tui/mdp/recipe.toml diff --git a/recipes/demos/cmatrix/recipe.sh b/recipes/demos/cmatrix/recipe.sh deleted file mode 100644 index eac097f3..00000000 --- a/recipes/demos/cmatrix/recipe.sh +++ /dev/null @@ -1,34 +0,0 @@ -GIT=https://github.com/abishekvashok/cmatrix -BUILD_DEPENDS=(ncurses) -DEPENDS=(terminfo) - -function recipe_version { - printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export LDFLAGS="-L$sysroot/lib -static" - export CPPFLAGS="-I$sysroot/include -I$sysroot/include/ncurses" - autoreconf -i - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix=/ \ - --without-fonts - sed -i'' -e 's|#define USE_TIOCSTI 1|/* #undef USE_TIOCSTI */|g' config.h - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - skip=1 -} diff --git a/recipes/demos/cmatrix/recipe.toml b/recipes/demos/cmatrix/recipe.toml new file mode 100644 index 00000000..603bd815 --- /dev/null +++ b/recipes/demos/cmatrix/recipe.toml @@ -0,0 +1,30 @@ +[source] +git = "https://github.com/abishekvashok/cmatrix" +script = """ +autoreconf -i +""" + +[build] +template = "custom" +dependencies = [ + "ncursesw" +] +script = """ +export LIBS="-lncursesw" + +COOKBOOK_CONFIGURE_FLAGS+=( + --without-fonts +) + +"${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" + +sed -i -e 's|#define USE_TIOCSTI 1|/* #undef USE_TIOCSTI */|g' config.h + +"${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" +"${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" +""" + +[package] +dependencies = [ + "terminfo" +] \ No newline at end of file diff --git a/recipes/demos/dynamic-example/recipe.sh b/recipes/demos/dynamic-example/recipe.sh deleted file mode 100644 index 29b01dae..00000000 --- a/recipes/demos/dynamic-example/recipe.sh +++ /dev/null @@ -1,2 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/dynamic-example.git -CARGOFLAGS="-- -C target-feature=-crt-static" diff --git a/recipes/demos/dynamic-example/recipe.toml b/recipes/demos/dynamic-example/recipe.toml new file mode 100644 index 00000000..20358b17 --- /dev/null +++ b/recipes/demos/dynamic-example/recipe.toml @@ -0,0 +1,9 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/dynamic-example.git" + +[build] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_cargo +""" \ No newline at end of file diff --git a/recipes/demos/pixelcannon/recipe.sh b/recipes/demos/pixelcannon/recipe.sh deleted file mode 100644 index 82c6393a..00000000 --- a/recipes/demos/pixelcannon/recipe.sh +++ /dev/null @@ -1,10 +0,0 @@ -GIT=https://github.com/jackpot51/pixelcannon.git -BINDIR=/usr/bin -DEPENDS="orbital" - -function recipe_stage { - mkdir -pv "$1/apps/pixelcannon" - cp -Rv assets "$1/apps/pixelcannon" - mkdir -pv "$1/ui/apps" - cp -v manifest "$1/ui/apps/pixelcannon" -} diff --git a/recipes/demos/pixelcannon/recipe.toml b/recipes/demos/pixelcannon/recipe.toml new file mode 100644 index 00000000..709e3d97 --- /dev/null +++ b/recipes/demos/pixelcannon/recipe.toml @@ -0,0 +1,19 @@ +[source] +git = "https://github.com/jackpot51/pixelcannon.git" + +[build] +template = "custom" +script = """ +cookbook_cargo + +mkdir -pv "${COOKBOOK_STAGE}/apps/pixelcannon" +cp -Rv "${COOKBOOK_SOURCE}/assets" "${COOKBOOK_STAGE}/apps/pixelcannon" + +mkdir -pv "${COOKBOOK_STAGE}/ui/apps" +cp -v "${COOKBOOK_SOURCE}/manifest" "${COOKBOOK_STAGE}/ui/apps/pixelcannon" +""" + +[package] +dependencies = [ + "orbital", +] diff --git a/recipes/dev/patch/01-no-rlimit.patch b/recipes/dev/patch/01_no_rlimit.patch similarity index 100% rename from recipes/dev/patch/01-no-rlimit.patch rename to recipes/dev/patch/01_no_rlimit.patch diff --git a/recipes/dev/patch/02-no-chown.patch b/recipes/dev/patch/02_no_chown.patch similarity index 100% rename from recipes/dev/patch/02-no-chown.patch rename to recipes/dev/patch/02_no_chown.patch diff --git a/recipes/dev/patch/recipe.sh b/recipes/dev/patch/recipe.sh deleted file mode 100644 index bcf14cce..00000000 --- a/recipes/dev/patch/recipe.sh +++ /dev/null @@ -1,29 +0,0 @@ -VERSION=2.7.6 -TAR=https://ftp.gnu.org/gnu/patch/patch-$VERSION.tar.xz - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - export LDFLAGS="-static" - wget -O build-aux/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" - autoreconf - ./configure --build=${BUILD} --host=${HOST} --prefix=/ - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - $HOST-strip $1/bin/* - rm -rf "$1/"{share,lib} - skip=1 -} diff --git a/recipes/dev/patch/recipe.toml b/recipes/dev/patch/recipe.toml new file mode 100644 index 00000000..7daf66d7 --- /dev/null +++ b/recipes/dev/patch/recipe.toml @@ -0,0 +1,27 @@ +[source] +tar = "https://ftp.gnu.org/gnu/patch/patch-2.7.6.tar.xz" +blake3 = "d46d14c12aa4ea51e356bf92091c368fd871e1d770b94bc29027886737aecd5f" +patches = [ + "01_no_rlimit.patch", + "02_no_chown.patch", +] +script = """ +wget -O build-aux/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +autoreconf +""" + +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/configure" +COOKBOOK_CONFIGURE_FLAGS=( + --host="${TARGET}" + --prefix="/" + --build="$(gcc -dumpmachine)" +) + +cookbook_configure + +${TARGET}-strip "${COOKBOOK_STAGE}/bin/"* +rm -rf "${COOKBOOK_STAGE}/share" "${COOKBOOK_STAGE}/lib" +""" \ No newline at end of file diff --git a/recipes/emulators/rustual-boy/recipe.sh b/recipes/emulators/rustual-boy/recipe.sh deleted file mode 100755 index 1d5f222f..00000000 --- a/recipes/emulators/rustual-boy/recipe.sh +++ /dev/null @@ -1,12 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/rustual-boy.git -GIT_UPSTREAM=https://github.com/emu-rs/rustual-boy.git -BRANCH="redox" -DEPENDS="orbital" - -function recipe_build { - cd rustual-boy-cli -} - -function recipe_stage { - mv rustual-boy-cli/target target -} diff --git a/recipes/emulators/rustual-boy/recipe.toml b/recipes/emulators/rustual-boy/recipe.toml new file mode 100755 index 00000000..076e1ee5 --- /dev/null +++ b/recipes/emulators/rustual-boy/recipe.toml @@ -0,0 +1,16 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/rustual-boy.git" +upstream = "https://github.com/emu-rs/rustual-boy.git" +branch = "redox" + +[build] +template = "custom" +script = """ +COOKBOOK_SOURCE="${COOKBOOK_SOURCE}/rustual-boy-cli" +cookbook_cargo +""" + +[package] +dependencies = [ + "orbital", +] \ No newline at end of file diff --git a/recipes/emulators/scummvm/recipe.sh b/recipes/emulators/scummvm/recipe.sh deleted file mode 100644 index 3ce8b729..00000000 --- a/recipes/emulators/scummvm/recipe.sh +++ /dev/null @@ -1,37 +0,0 @@ -VERSION=2.0.0 -TAR=https://downloads.scummvm.org/frs/scummvm/$VERSION/scummvm-$VERSION.tar.xz -TAR_SHA256=9784418d555ba75822d229514a05cf226b8ce1a751eec425432e6b7e128fca60 -BUILD_DEPENDS=(sdl1 liborbital freetype2 zlib libpng) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" - sysroot="$(realpath ../sysroot)" - export LDFLAGS="-static" - ./configure \ - --host=${HOST} \ - --prefix='' \ - --with-sdl-prefix="$sysroot" \ - --with-freetype2-prefix="$sysroot" \ - --with-png-prefix="$sysroot" \ - --with-zlib-prefix="$sysroot" \ - --disable-timidity \ - --disable-mt32emu - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - skip=1 -} diff --git a/recipes/emulators/scummvm/recipe.toml b/recipes/emulators/scummvm/recipe.toml new file mode 100644 index 00000000..0ec2f005 --- /dev/null +++ b/recipes/emulators/scummvm/recipe.toml @@ -0,0 +1,34 @@ +[source] +tar = "https://downloads.scummvm.org/frs/scummvm/2.0.0/scummvm-2.0.0.tar.xz" +blake3 = "02e6791fd43ad3cb4238c07d23350ca1459a0f692689e585dba1d46648f64327" +patches = ["redox.patch"] +script = """ +wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +""" + +[build] +template = "custom" +dependencies = [ + "sdl1", + "liborbital", + "freetype2", + "zlib", + "libpng", +] +script = """ +export LDFLAGS="-static" + +COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/configure" +COOKBOOK_CONFIGURE_FLAGS=( + --host="${TARGET}" + --prefix="" + --with-sdl-prefix="${COOKBOOK_SYSROOT}" + --with-freetype2-prefix="${COOKBOOK_SYSROOT}" + --with-png-prefix="${COOKBOOK_SYSROOT}" + --with-zlib-prefix="${COOKBOOK_SYSROOT}" + --disable-timidity + --disable-mt32emu +) + +cookbook_configure +""" \ No newline at end of file diff --git a/recipes/emulators/scummvm/01_redox.patch b/recipes/emulators/scummvm/redox.patch similarity index 100% rename from recipes/emulators/scummvm/01_redox.patch rename to recipes/emulators/scummvm/redox.patch diff --git a/recipes/fonts/ttf-hack/recipe.sh b/recipes/fonts/ttf-hack/recipe.sh deleted file mode 100644 index 94bf53c8..00000000 --- a/recipes/fonts/ttf-hack/recipe.sh +++ /dev/null @@ -1,25 +0,0 @@ -VERSION=3.003 -TAR="https://github.com/source-foundry/Hack/releases/download/v$VERSION/Hack-v$VERSION-ttf.tar.xz" - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - echo "skipping build" - skip=1 -} - -function recipe_clean { - echo "skipping clean" - skip=1 -} - -function recipe_stage { - dest="$(realpath "$1")" - for file in *.ttf; do - install -D -m 644 "$file" "$dest/ui/fonts/Mono/Hack/$file" - done - skip=1 -} diff --git a/recipes/fonts/ttf-hack/recipe.toml b/recipes/fonts/ttf-hack/recipe.toml new file mode 100644 index 00000000..428dabd7 --- /dev/null +++ b/recipes/fonts/ttf-hack/recipe.toml @@ -0,0 +1,11 @@ +[source] +tar = "https://github.com/source-foundry/Hack/releases/download/v3.003/Hack-v3.003-ttf.tar.xz" +blake3 = "acd40f61f6f512b0808d4bf530ab4aeb5a8ec3aa1f65bf5a1d08964d1bc3d044" + +[build] +template = "custom" +script = """ +for file in "${COOKBOOK_SOURCE}"/*.ttf; do + install -D -m 644 "$file" "${COOKBOOK_STAGE}/ui/fonts/Mono/Hack/$(basename "$file")" +done +""" \ No newline at end of file diff --git a/recipes/games/gigalomania/recipe.sh b/recipes/games/gigalomania/recipe.sh deleted file mode 100644 index 77890f7b..00000000 --- a/recipes/games/gigalomania/recipe.sh +++ /dev/null @@ -1,39 +0,0 @@ -VERSION=1.0.1 -GIT=https://gitlab.redox-os.org/redox-os/gigalomania.git -BRANCH=master -BUILD_DEPENDS=(sdl1-mixer sdl1-image sdl1 liborbital libogg libpng libjpeg libvorbis zlib) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - export CPPHOST=${HOST}-g++ - sysroot="$(realpath ../sysroot)" - export LDFLAGS="-L$sysroot/lib -rdynamic" - export CPPFLAGS="-I$sysroot/include" - "$REDOX_MAKE" all -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - bundledir="$dest/bundle" - - "$REDOX_MAKE" VERBOSE=1 DESTDIR="$dest/usr" install - rm -rf "$bundledir" - - mkdir -pv "$1/ui/apps" - cp -v "${COOKBOOK_RECIPE}/manifest" "$1/ui/apps/gigalomania" - - mkdir -pv "$1/ui/icons/apps" - cp -v "gigalomania64.png" "$1/ui/icons/apps/gigalomania.png" - - skip=1 -} diff --git a/recipes/games/gigalomania/recipe.toml b/recipes/games/gigalomania/recipe.toml new file mode 100644 index 00000000..399661b1 --- /dev/null +++ b/recipes/games/gigalomania/recipe.toml @@ -0,0 +1,36 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/gigalomania.git" +branch = "master" + +[build] +template = "custom" +dependencies = [ + "sdl1-mixer", + "sdl1-image", + "sdl1", + "liborbital", + "libogg", + "libpng", + "libjpeg", + "libvorbis", + "zlib" +] +script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ + +export CPPHOST="${TARGET}-g++" +export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib --static" +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include" + +"${REDOX_MAKE}" all -j"$(${NPROC})" + +"${REDOX_MAKE}" VERBOSE=1 DESTDIR="${COOKBOOK_STAGE}/usr" install + +rm -rf "${COOKBOOK_STAGE}/bundle" + +mkdir -pv "${COOKBOOK_STAGE}/ui/apps" +cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/gigalomania" + +mkdir -pv "${COOKBOOK_STAGE}/ui/icons/apps" +cp -v "gigalomania64.png" "${COOKBOOK_STAGE}/ui/icons/apps/gigalomania.png" +""" \ No newline at end of file diff --git a/recipes/games/openttd-opengfx/recipe.sh b/recipes/games/openttd-opengfx/recipe.sh deleted file mode 100644 index a68b27b9..00000000 --- a/recipes/games/openttd-opengfx/recipe.sh +++ /dev/null @@ -1,22 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/openttd-opengfx.git - -function recipe_version { - echo "0.5.2" - skip=1 -} - -function recipe_build { - echo "skipping build" - skip=1 -} - -function recipe_clean { - echo "skipping clean" - skip=1 -} - -function recipe_stage { - mkdir -pv "$1/share/games/openttd/baseset/opengfx" - cp -Rv ./* "$1/share/games/openttd/baseset/opengfx" - skip=1 -} diff --git a/recipes/games/openttd-opengfx/recipe.toml b/recipes/games/openttd-opengfx/recipe.toml new file mode 100644 index 00000000..7e51cacf --- /dev/null +++ b/recipes/games/openttd-opengfx/recipe.toml @@ -0,0 +1,9 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/openttd-opengfx.git" + +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}/share/games/openttd/baseset/opengfx" +cp -Rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/share/games/openttd/baseset/opengfx" +""" \ No newline at end of file diff --git a/recipes/games/openttd-openmsx/recipe.sh b/recipes/games/openttd-openmsx/recipe.sh deleted file mode 100644 index 7af78cbb..00000000 --- a/recipes/games/openttd-openmsx/recipe.sh +++ /dev/null @@ -1,22 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/openttd-openmsx.git - -function recipe_version { - echo "0.3.1" - skip=1 -} - -function recipe_build { - echo "skipping build" - skip=1 -} - -function recipe_clean { - echo "skipping clean" - skip=1 -} - -function recipe_stage { - mkdir -pv "$1/share/games/openttd/baseset/openmsx" - cp -Rv ./* "$1/share/games/openttd/baseset/openmsx" - skip=1 -} diff --git a/recipes/games/openttd-openmsx/recipe.toml b/recipes/games/openttd-openmsx/recipe.toml new file mode 100644 index 00000000..0030209e --- /dev/null +++ b/recipes/games/openttd-openmsx/recipe.toml @@ -0,0 +1,9 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/openttd-openmsx.git" + +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}/share/games/openttd/baseset/openmsx" +cp -Rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/share/games/openttd/baseset/openmsx" +""" \ No newline at end of file diff --git a/recipes/games/openttd-opensfx/recipe.sh b/recipes/games/openttd-opensfx/recipe.sh deleted file mode 100644 index c8219d68..00000000 --- a/recipes/games/openttd-opensfx/recipe.sh +++ /dev/null @@ -1,22 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/openttd-opensfx.git - -function recipe_version { - echo "0.2.3" - skip=1 -} - -function recipe_build { - echo "skipping build" - skip=1 -} - -function recipe_clean { - echo "skipping clean" - skip=1 -} - -function recipe_stage { - mkdir -pv "$1/share/games/openttd/baseset/opensfx" - cp -Rv ./* "$1/share/games/openttd/baseset/opensfx" - skip=1 -} diff --git a/recipes/games/openttd-opensfx/recipe.toml b/recipes/games/openttd-opensfx/recipe.toml new file mode 100644 index 00000000..1527275b --- /dev/null +++ b/recipes/games/openttd-opensfx/recipe.toml @@ -0,0 +1,9 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/openttd-opensfx.git" + +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}/share/games/openttd/baseset/opensfx" +cp -Rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/share/games/openttd/baseset/opensfx" +""" \ No newline at end of file diff --git a/recipes/games/openttd/recipe.sh b/recipes/games/openttd/recipe.sh deleted file mode 100644 index c08ccf8f..00000000 --- a/recipes/games/openttd/recipe.sh +++ /dev/null @@ -1,40 +0,0 @@ -VERSION=1.8 -GIT=https://github.com/OpenTTD/OpenTTD.git -BRANCH=release/$VERSION -BUILD_DEPENDS=(freetype2 liborbital libpng sdl1 xz zlib) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib --static" - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix='' \ - --enable-static \ - --without-liblzo2 \ - --disable-network \ - --without-threads - "$REDOX_MAKE" VERBOSE=1 -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - bundledir="$dest/bundle" - - "$REDOX_MAKE" VERBOSE=1 ROOT_DIR="$dest/../build/" BUNDLE_DIR="$bundledir" INSTALL_DIR="$dest/usr" install - rm -rf "$bundledir" - - skip=1 -} diff --git a/recipes/games/openttd/recipe.toml b/recipes/games/openttd/recipe.toml new file mode 100644 index 00000000..4e2a61bc --- /dev/null +++ b/recipes/games/openttd/recipe.toml @@ -0,0 +1,43 @@ +[source] +git = "https://github.com/OpenTTD/OpenTTD.git" +branch = "release/1.8" +patches = ["redox.patch"] + +[build] +template = "custom" +dependencies = [ + "freetype2", + "liborbital", + "libpng", + "sdl1", + "xz", + "zlib", +] +script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ + +# Unsure if the bundle dir is necessary +# Or why the installation differs +# Could be unnecessary +./configure \\ + --build="$(gcc -dumpmachine)" \\ + --host="${TARGET}" \\ + --prefix="" \\ + --enable-static \\ + --without-liblzo2 \\ + --disable-network \\ + --without-threads + +make VERBOSE=1 -j"$(nproc)" + +dest="${COOKBOOK_STAGE}" +bundledir="$dest/bundle" + +make VERBOSE=1 ROOT_DIR="./" BUNDLE_DIR="$bundledir" INSTALL_DIR="$dest/usr" install +rm -rf "$bundledir" + +if [ -d "${COOKBOOK_STAGE}/usr/bin" ] +then + find "${COOKBOOK_STAGE}/usr/bin" -type f -exec "${TARGET}-strip" -v {} ';' +fi +""" \ No newline at end of file diff --git a/recipes/games/openttd/01_redox.patch b/recipes/games/openttd/redox.patch similarity index 100% rename from recipes/games/openttd/01_redox.patch rename to recipes/games/openttd/redox.patch diff --git a/recipes/games/sopwith/recipe.sh b/recipes/games/sopwith/recipe.sh deleted file mode 100644 index a5ea9783..00000000 --- a/recipes/games/sopwith/recipe.sh +++ /dev/null @@ -1,34 +0,0 @@ -VERSION=1.8.4 -TAR="https://github.com/fragglet/sdl-sopwith/releases/download/sdl-sopwith-${VERSION}/sopwith-${VERSION}.tar.gz" -BUILD_DEPENDS=(sdl1 liborbital libiconv) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - wget -O autotools/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include -I$sysroot/include/SDL" - export LDFLAGS="-L$sysroot/lib -static" - export LIBS="-lSDL -lorbital" # TODO: Uses sdl-config instead of pkg-config - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix='' \ - --with-sdl-prefix="$sysroot" - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - skip=1 -} diff --git a/recipes/games/sopwith/recipe.toml b/recipes/games/sopwith/recipe.toml new file mode 100644 index 00000000..60bdad06 --- /dev/null +++ b/recipes/games/sopwith/recipe.toml @@ -0,0 +1,32 @@ +[source] +tar = "https://github.com/fragglet/sdl-sopwith/releases/download/sdl-sopwith-1.8.4/sopwith-1.8.4.tar.gz" +blake3 = "44e1404a9c4bea257d7778d2a4b1512231603a74b0a7b18eac5d18f36730ed3e" + +[build] +template = "custom" +dependencies = [ + "sdl1", + "liborbital", + "libiconv", +] +script = """ +export CFLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL" +export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib -static" +export LIBS="-lSDL -lorbital" # TODO: Uses sdl-config instead of pkg-config + +# For some reason, cook_configure breaks spectacularly on this +# We will just copy instead +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ + +wget -O autotools/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" + +./configure \\ + --build="$(gcc -dumpmachine)" \\ + --host="${TARGET}" \\ + --prefix="" \\ + --with-sdl-prefix="${COOKBOOK_SYSROOT}" + +make -j"$(nproc)" + +make DESTDIR="${COOKBOOK_STAGE}" install +""" \ No newline at end of file diff --git a/recipes/libs/duktape/recipe.sh b/recipes/libs/duktape/recipe.sh deleted file mode 100644 index 30beb776..00000000 --- a/recipes/libs/duktape/recipe.sh +++ /dev/null @@ -1,25 +0,0 @@ -VERSION=2.7.0 -TAR=https://duktape.org/duktape-$VERSION.tar.xz - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - sed -i "s/= gcc/= $TARGET-gcc/g" Makefile.cmdline - "$REDOX_MAKE" -f Makefile.cmdline -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - mkdir -pv "$1/bin" - cp ./duk "$1/bin/duk" - - skip=1 -} diff --git a/recipes/libs/duktape/recipe.toml b/recipes/libs/duktape/recipe.toml new file mode 100644 index 00000000..13b3f178 --- /dev/null +++ b/recipes/libs/duktape/recipe.toml @@ -0,0 +1,16 @@ +[source] +tar = "https://duktape.org/duktape-2.7.0.tar.xz" +blake3 = "b0a17da888847bc9c73624ae3ba7f858ec327a9bbce9d287aee6a2489e518448" + +[build] +template = "custom" +script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ + +sed -i "s/= gcc/= ${TARGET}-gcc/g" Makefile.cmdline + +"${COOKBOOK_MAKE}" -f Makefile.cmdline -j"$($NPROC)" + +mkdir -pv "${COOKBOOK_STAGE}/usr/bin" +cp ./duk "${COOKBOOK_STAGE}/usr/bin/duk" +""" \ No newline at end of file diff --git a/recipes/libs/duktape/redox.patch b/recipes/libs/duktape/redox.patch deleted file mode 100644 index bfbc53e8..00000000 --- a/recipes/libs/duktape/redox.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -ruwN source/src/duk_config.h source-new/src/duk_config.h ---- source/src/duk_config.h 2017-09-22 19:06:08.000000000 -0600 -+++ source-new/src/duk_config.h 2022-11-12 08:05:16.384212164 -0700 -@@ -786,7 +786,7 @@ - /* --- Generic UNIX --- */ - #define DUK_USE_DATE_NOW_GETTIMEOFDAY - #define DUK_USE_DATE_TZO_GMTIME_R --#define DUK_USE_DATE_PRS_STRPTIME -+#undef DUK_USE_DATE_PRS_STRPTIME - #define DUK_USE_DATE_FMT_STRFTIME - #include - #include diff --git a/recipes/libs/sdl-gfx/recipe.sh b/recipes/libs/sdl-gfx/recipe.sh deleted file mode 100644 index 8b4460ac..00000000 --- a/recipes/libs/sdl-gfx/recipe.sh +++ /dev/null @@ -1,30 +0,0 @@ -VERSION=2.0.25 -TAR=https://sourceforge.net/projects/sdlgfx/files/SDL_gfx-$VERSION.tar.gz -BUILD_DEPENDS=(sdl1 liborbital libiconv) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib" - ./autogen.sh - ./configure --prefix=/ --build=${BUILD} --host=${HOST} --disable-shared - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/libs/sdl-gfx/recipe.toml b/recipes/libs/sdl-gfx/recipe.toml new file mode 100644 index 00000000..1ba2b354 --- /dev/null +++ b/recipes/libs/sdl-gfx/recipe.toml @@ -0,0 +1,30 @@ +[source] +tar = "https://sourceforge.net/projects/sdlgfx/files/SDL_gfx-2.0.25.tar.gz" +blake3 = "e6f571a38e51d369b010f4b10eb35b95e3d2edae2edd796241c47ea8376581e6" +patches = ["redox.patch"] +script = """ +./autogen.sh +""" + +[build] +template = "custom" +dependencies = [ + "sdl1", + "liborbital", + "libiconv", +] +script = """ +export CFLAGS="-I${COOKBOOK_SYSROOT}/include" +export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" + +COOKBOOK_CONFIGURE_FLAGS=( + --prefix=/ + --build="$(gcc -dumpmachine)" + --host="${TARGET}" + --disable-shared +) + +cookbook_configure + +rm -f "${COOKBOOK_STAGE}/lib/"*.la +""" \ No newline at end of file diff --git a/recipes/libs/sdl-gfx/01_redox.patch b/recipes/libs/sdl-gfx/redox.patch similarity index 100% rename from recipes/libs/sdl-gfx/01_redox.patch rename to recipes/libs/sdl-gfx/redox.patch diff --git a/recipes/libs/sdl1-image/recipe.sh b/recipes/libs/sdl1-image/recipe.sh deleted file mode 100644 index 76791fa7..00000000 --- a/recipes/libs/sdl1-image/recipe.sh +++ /dev/null @@ -1,30 +0,0 @@ -VERSION=1.2.12 -TAR=https://www.libsdl.org/projects/SDL_image/release/SDL_image-$VERSION.tar.gz -BUILD_DEPENDS=(sdl1 liborbital libiconv libjpeg libpng zlib) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib" - ./autogen.sh - ./configure --prefix=/ --build=${BUILD} --host=${HOST} --disable-shared --disable-sdltest --enable-png --enable-jpg - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/libs/sdl1-image/recipe.toml b/recipes/libs/sdl1-image/recipe.toml new file mode 100644 index 00000000..ee73b921 --- /dev/null +++ b/recipes/libs/sdl1-image/recipe.toml @@ -0,0 +1,26 @@ +[source] +tar = "https://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.12.tar.gz" +blake3 = "731a6f8cad9fff22c82394bd1c0c34ce4aa60fa8923f3755a3e3239f1e269389" +patches = ["redox.patch"] +script = """ +./autogen.sh +""" + +[build] +template = "custom" +dependencies = [ + "sdl1", + "liborbital", + "libiconv", + "libjpeg", + "libpng", + "zlib" +] +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --disable-sdltest + --enable-png + --enable-jpg +) +cookbook_configure +""" \ No newline at end of file diff --git a/recipes/libs/sdl1-image/01_redox.patch b/recipes/libs/sdl1-image/redox.patch similarity index 100% rename from recipes/libs/sdl1-image/01_redox.patch rename to recipes/libs/sdl1-image/redox.patch diff --git a/recipes/libs/sdl1-ttf/recipe.sh b/recipes/libs/sdl1-ttf/recipe.sh deleted file mode 100644 index 9e77728b..00000000 --- a/recipes/libs/sdl1-ttf/recipe.sh +++ /dev/null @@ -1,30 +0,0 @@ -VERSION=2.0.11 -TAR=https://www.libsdl.org/projects/SDL_ttf/release/SDL_ttf-$VERSION.tar.gz -BUILD_DEPENDS=(sdl1 liborbital freetype2 libpng zlib) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include -I$sysroot/include/freetype2" - export LDFLAGS="-L$sysroot/lib" - ./autogen.sh - ./configure --prefix=/ --build=${BUILD} --host=${HOST} --disable-shared - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/libs/sdl1-ttf/recipe.toml b/recipes/libs/sdl1-ttf/recipe.toml new file mode 100644 index 00000000..7c335b02 --- /dev/null +++ b/recipes/libs/sdl1-ttf/recipe.toml @@ -0,0 +1,32 @@ +[source] +tar = "https://www.libsdl.org/projects/SDL_ttf/release/SDL_ttf-2.0.11.tar.gz" +blake3 = "a684e57553e43b55ab28b064d1d5d44b8749299f259da31a62d671fc1d5505ee" +patches = ["redox.patch"] +script = """ +./autogen.sh +""" + +[build] +template = "custom" +dependencies = [ + "sdl1", + "liborbital", + "freetype2", + "libpng", + "zlib", +] +script = """ +export CFLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/freetype2" +export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" + +COOKBOOK_CONFIGURE_FLAGS=( + --prefix=/ + --build="$(gcc -dumpmachine)" + --host="${TARGET}" + --disable-shared +) + +cookbook_configure + +rm -f "${COOKBOOK_STAGE}/lib/"*.la +""" \ No newline at end of file diff --git a/recipes/libs/sdl1-ttf/01_redox.patch b/recipes/libs/sdl1-ttf/redox.patch similarity index 100% rename from recipes/libs/sdl1-ttf/01_redox.patch rename to recipes/libs/sdl1-ttf/redox.patch diff --git a/recipes/other/generaluser-gs/recipe.sh b/recipes/other/generaluser-gs/recipe.sh deleted file mode 100644 index 6ce7fa84..00000000 --- a/recipes/other/generaluser-gs/recipe.sh +++ /dev/null @@ -1,23 +0,0 @@ -VERSION=1.471 -GIT=https://gitlab.redox-os.org/redox-os/generaluser-gs.git - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - echo "skipping build" - skip=1 -} - -function recipe_clean { - echo "skipping clean" - skip=1 -} - -function recipe_stage { - mkdir -pv "$1/share/generaluser-gs" - cp -Rv ./* "$1/share/generaluser-gs" - skip=1 -} diff --git a/recipes/other/generaluser-gs/recipe.toml b/recipes/other/generaluser-gs/recipe.toml new file mode 100644 index 00000000..24aae0d3 --- /dev/null +++ b/recipes/other/generaluser-gs/recipe.toml @@ -0,0 +1,9 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/generaluser-gs.git" + +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}/usr/share/generaluser-gs" +cp -Rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/usr/share/generaluser-gs" +""" diff --git a/recipes/sound/timidity/recipe.sh b/recipes/sound/timidity/recipe.sh deleted file mode 100644 index 6e3b8765..00000000 --- a/recipes/sound/timidity/recipe.sh +++ /dev/null @@ -1,40 +0,0 @@ -VERSION=2.15.0 -GIT=https://gitlab.redox-os.org/redox-os/timidity.git -BRANCH=redox -DEPENDS="generaluser-gs" - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - export LDFLAGS="-static" - autoreconf -f -i - wget -O autoconf/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix='' \ - --enable-vt100 - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - - mkdir -pv "$1/etc/timidity" - echo "soundfont /share/generaluser-gs/generaluser-gs.sf2" >> "$1/etc/timidity/timidity.cfg" - - mkdir -pv "$1/share/timidity" - echo "soundfont /share/generaluser-gs/generaluser-gs.sf2" >> "$1/share/timidity/timidity.cfg" - - skip=1 -} diff --git a/recipes/sound/timidity/recipe.toml b/recipes/sound/timidity/recipe.toml new file mode 100644 index 00000000..98c25496 --- /dev/null +++ b/recipes/sound/timidity/recipe.toml @@ -0,0 +1,35 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/timidity.git" +branch = "redox" +script = """ +autoreconf -f -i + +wget -O autoconf/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +""" + +[build] +template = "custom" +script = """ +export LDFLAGS="-static" + +COOKBOOK_CONFIGURE_FLAGS=( + --build="$(gcc -dumpmachine)" + --host="${TARGET}" + --prefix="" + --enable-vt100 +) + +cookbook_configure + +# Create configuration files +mkdir -pv "${COOKBOOK_STAGE}/etc/timidity" +echo "soundfont /share/generaluser-gs/generaluser-gs.sf2" >> "${COOKBOOK_STAGE}/etc/timidity/timidity.cfg" + +mkdir -pv "${COOKBOOK_STAGE}/share/timidity" +echo "soundfont /share/generaluser-gs/generaluser-gs.sf2" >> "${COOKBOOK_STAGE}/share/timidity/timidity.cfg" +""" + +[package] +dependencies = [ + "generaluser-gs", +] \ No newline at end of file diff --git a/recipes/tests/vttest/recipe.sh b/recipes/tests/vttest/recipe.sh deleted file mode 100644 index 004be896..00000000 --- a/recipes/tests/vttest/recipe.sh +++ /dev/null @@ -1,29 +0,0 @@ -VERSION=20140305 -TAR="https://invisible-island.net/archives/vttest/vttest-${VERSION}.tgz" - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - export LDFLAGS="-static" - wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" - ./configure \ - --build=${BUILD} \ - --host=${HOST} \ - --prefix='' - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - skip=1 -} diff --git a/recipes/tests/vttest/recipe.toml b/recipes/tests/vttest/recipe.toml new file mode 100644 index 00000000..22716635 --- /dev/null +++ b/recipes/tests/vttest/recipe.toml @@ -0,0 +1,21 @@ +[source] +tar = "https://invisible-island.net/archives/vttest/vttest-20140305.tgz" +blake3 = "b515b9a5e1f1498ed99e1a1c172fbcfdf2b7a214e185bd2005cc994407ded89e" +patches = ["redox.patch"] +script = """ +wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +""" + +[build] +template = "custom" +script = """ +export LDFLAGS="-static" + +COOKBOOK_CONFIGURE_FLAGS=( + --build="$(gcc -dumpmachine)" + --host="${TARGET}" + --prefix="" +) + +cookbook_configure +""" \ No newline at end of file diff --git a/recipes/tests/vttest/vttest.patch b/recipes/tests/vttest/redox.patch similarity index 100% rename from recipes/tests/vttest/vttest.patch rename to recipes/tests/vttest/redox.patch diff --git a/recipes/tools/gnu-grep/recipe.sh b/recipes/tools/gnu-grep/recipe.sh deleted file mode 100644 index 1731a3b1..00000000 --- a/recipes/tools/gnu-grep/recipe.sh +++ /dev/null @@ -1,27 +0,0 @@ -VERSION=3.1 -TAR=https://ftp.gnu.org/gnu/grep/grep-$VERSION.tar.xz - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - export LDFLAGS="-static" - ./configure --build=${BUILD} --host=${HOST} --prefix=/ - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - $HOST-strip "$1"/bin/grep - rm -rf "$1"/{lib,share} - skip=1 -} diff --git a/recipes/tools/gnu-grep/recipe.toml b/recipes/tools/gnu-grep/recipe.toml new file mode 100644 index 00000000..16a4763a --- /dev/null +++ b/recipes/tools/gnu-grep/recipe.toml @@ -0,0 +1,17 @@ +[source] +tar = "https://ftp.gnu.org/gnu/grep/grep-3.1.tar.xz" +blake3 = "46b6e24dfa1b0f309f4eae3c450d612396c8faa6510b53a55f629e4f4c70b4a3" +patches = ["grep.patch"] + +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --prefix=/ +) +cookbook_configure + +"${TARGET}-strip" "${COOKBOOK_STAGE}/bin/grep" + +rm -rf "${COOKBOOK_STAGE}"/{lib,share} +""" \ No newline at end of file diff --git a/recipes/tools/libc-bench/recipe.sh b/recipes/tools/libc-bench/recipe.sh deleted file mode 100644 index df203cea..00000000 --- a/recipes/tools/libc-bench/recipe.sh +++ /dev/null @@ -1,24 +0,0 @@ -VERSION=20110206 -TAR=https://www.etalabs.net/releases/libc-bench-$VERSION.tar.gz - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - mkdir -v "$dest/bin" - cp -v "libc-bench" "$dest/bin" - skip=1 -} diff --git a/recipes/tools/libc-bench/recipe.toml b/recipes/tools/libc-bench/recipe.toml new file mode 100644 index 00000000..89c8ebfa --- /dev/null +++ b/recipes/tools/libc-bench/recipe.toml @@ -0,0 +1,15 @@ +[source] +tar = "https://www.etalabs.net/releases/libc-bench-20110206.tar.gz" +blake3 = "64093102f29faa76da455f55a7b4be25b6d74d5c3d6fe88dbbc38aaae185182f" +patches = ["redox.patch"] + +[build] +template = "custom" +script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ + +"${COOKBOOK_MAKE}" -j"$(${NPROC})" + +mkdir -pv "${COOKBOOK_STAGE}/usr/bin" +cp -v "libc-bench" "${COOKBOOK_STAGE}/usr/bin" +""" \ No newline at end of file diff --git a/recipes/tools/periodictable/recipe.sh b/recipes/tools/periodictable/recipe.sh deleted file mode 100644 index e364766e..00000000 --- a/recipes/tools/periodictable/recipe.sh +++ /dev/null @@ -1,10 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/periodictable.git -BINDIR="/usr/bin" -DEPENDS="orbital" - -function recipe_stage { - mkdir -pv "$1/ui/apps" - cp -v pkg/manifest "$1/ui/apps/periodictable" - mkdir -pv "$1/ui/icons" - cp -v pkg/icon.png "$1/ui/icons/periodictable.png" -} diff --git a/recipes/tools/periodictable/recipe.toml b/recipes/tools/periodictable/recipe.toml new file mode 100644 index 00000000..cfdfcb69 --- /dev/null +++ b/recipes/tools/periodictable/recipe.toml @@ -0,0 +1,16 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/periodictable.git" + +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}/ui/apps" +cp -v "${COOKBOOK_SOURCE}/pkg/manifest" "${COOKBOOK_STAGE}/ui/apps/periodictable" +mkdir -pv "${COOKBOOK_STAGE}/ui/icons" +cp -v "${COOKBOOK_SOURCE}/pkg/icon.png" "${COOKBOOK_STAGE}/ui/icons/periodictable.png" +""" + +[package] +dependencies = [ + "orbital", +] \ No newline at end of file diff --git a/recipes/tools/schismtracker/recipe.sh b/recipes/tools/schismtracker/recipe.sh deleted file mode 100644 index 5cb03564..00000000 --- a/recipes/tools/schismtracker/recipe.sh +++ /dev/null @@ -1,31 +0,0 @@ -VERSION=20181223 -TAR=https://github.com/schismtracker/schismtracker/archive/$VERSION.tar.gz -TAR_SHA256=fc32930c611fdb78face87dbe8a3c62e70088fd8d4ad803140e0b9a0b2e72ad7 -BUILD_DEPENDS=(sdl1 liborbital libiconv) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - sysroot="${PWD}/../sysroot" - export CFLAGS="-I$sysroot/include -I$sysroot/include/SDL" - export LDFLAGS="-L$sysroot/lib -static" - export SDL_CONFIG="$sysroot/bin/sdl-config" - autoreconf -i - ./configure --build=${BUILD} --host=${HOST} --prefix='' --with-sdl-prefix="$sysroot" - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - skip=1 -} diff --git a/recipes/tools/schismtracker/recipe.toml b/recipes/tools/schismtracker/recipe.toml new file mode 100644 index 00000000..aea391ea --- /dev/null +++ b/recipes/tools/schismtracker/recipe.toml @@ -0,0 +1,29 @@ +[source] +tar = "https://github.com/schismtracker/schismtracker/archive/20181223.tar.gz" +blake3 = "057e973f4f84cf898e2240d67c0e92f25086d8b9ffdc7e0c7ef81dd8dc81bc70" +patches = ["redox.patch"] +script = """ +autoreconf -i +""" + +[build] +template = "custom" +dependencies = [ + "sdl1", + "liborbital", + "libiconv", +] +script = """ +export CFLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL" +export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib -static" +export SDL_CONFIG="${COOKBOOK_SYSROOT}/bin/sdl-config" + +COOKBOOK_CONFIGURE_FLAGS=( + --build="$(gcc -dumpmachine)" + --host="${TARGET}" + --prefix="" + --with-sdl-prefix="${COOKBOOK_SYSROOT}" +) + +cookbook_configure +""" \ No newline at end of file diff --git a/recipes/tools/schismtracker/01_redox.patch b/recipes/tools/schismtracker/redox.patch similarity index 100% rename from recipes/tools/schismtracker/01_redox.patch rename to recipes/tools/schismtracker/redox.patch diff --git a/recipes/tui/mdp/recipe.sh b/recipes/tui/mdp/recipe.sh deleted file mode 100644 index ed9236bd..00000000 --- a/recipes/tui/mdp/recipe.sh +++ /dev/null @@ -1,27 +0,0 @@ -GIT=https://github.com/visit1985/mdp.git -BUILD_DEPENDS=(ncursesw) -DEPENDS="terminfo" - -function recipe_version { - printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include -I$sysroot/include/ncursesw" - export LDFLAGS="-L$sysroot/lib" - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" PREFIX="" install - skip=1 -} diff --git a/recipes/tui/mdp/recipe.toml b/recipes/tui/mdp/recipe.toml new file mode 100644 index 00000000..a78e477f --- /dev/null +++ b/recipes/tui/mdp/recipe.toml @@ -0,0 +1,20 @@ +[source] +git = "https://github.com/visit1985/mdp.git" + +[build] +template = "custom" +dependencies = [ + "ncursesw", + "terminfo" +] +script = """ +rsync -av --delete --exclude='.git' "${COOKBOOK_SOURCE}/" ./ + +export CFLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/ncursesw" +export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" + +"${COOKBOOK_MAKE}" -j"$(${NPROC})" + +# Install +"${REDOX_MAKE}" DESTDIR="${COOKBOOK_STAGE}" PREFIX="" install +""" \ No newline at end of file From 2caa208555da655ea8e56705837e0b2dc4a4beaf Mon Sep 17 00:00:00 2001 From: Ron Williams Date: Thu, 12 Jun 2025 10:11:16 -0700 Subject: [PATCH 2610/3180] Fix sed to work in spite of wide character test failing --- recipes/tools/sed/sed.patch | 47 +++++++++---------------------------- 1 file changed, 11 insertions(+), 36 deletions(-) diff --git a/recipes/tools/sed/sed.patch b/recipes/tools/sed/sed.patch index ac796bf2..ea10d0c5 100644 --- a/recipes/tools/sed/sed.patch +++ b/recipes/tools/sed/sed.patch @@ -1,36 +1,11 @@ -diff -ru source/lib/getprogname.c source-new/lib/getprogname.c ---- source/lib/getprogname.c 2017-01-16 21:36:00.000000000 -0800 -+++ source-new/lib/getprogname.c 2017-07-13 16:13:35.966956860 -0700 -@@ -43,13 +43,11 @@ - # include - #endif - --#ifdef __sgi - # include - # include - # include - # include --# include --#endif -+# include - - #include "dirname.h" - -@@ -178,7 +176,16 @@ - } - return NULL; - # else --# error "getprogname module not ported to this OS" -+ char filename[PATH_MAX]; -+ int fd = open ("sys:exe", O_RDONLY); -+ if (fd > 0) { -+ int len = read(fd, filename, PATH_MAX-1); -+ if (len > 0) { -+ filename[len] = '\0'; -+ return strdup(filename); -+ } -+ } -+ return NULL; - # endif - } - +diff -ruN sed-4.4/sed/mbcs.c source/sed/mbcs.c +--- sed-4.4/sed/mbcs.c 2017-01-01 03:17:10.000000000 -0800 ++++ source/sed/mbcs.c 2025-06-06 04:36:30.129312397 -0700 +@@ -38,6 +38,7 @@ + int + is_mb_char (int ch, mbstate_t *cur_stat) + { ++ return 0; // FIXME: Implement mbrtowc in relibc, then remove this line + const char c = ch ; + const int mb_pending = !mbsinit (cur_stat); + const int result = mbrtowc (NULL, &c, 1, cur_stat); From 2f9ad86548022d248fa9a4b43fd582d88fde9db9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 12 Jun 2025 11:48:41 -0600 Subject: [PATCH 2611/3180] Update pkgar --- pkgar | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgar b/pkgar index 0ccbc991..f5344c09 160000 --- a/pkgar +++ b/pkgar @@ -1 +1 @@ -Subproject commit 0ccbc9914b1ec655e23d4babc5afed87e42e9a0f +Subproject commit f5344c09ead37b88aee85522da9d0b1dd4af60e8 From bd86de36fed269056ccb9d8a2312797822735dd5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 12 Jun 2025 13:02:39 -0600 Subject: [PATCH 2612/3180] libjpeg: provided by libjpeg-turbo --- recipes/libs/libjpeg/recipe.toml | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/recipes/libs/libjpeg/recipe.toml b/recipes/libs/libjpeg/recipe.toml index 15c71d0e..fb743a17 100644 --- a/recipes/libs/libjpeg/recipe.toml +++ b/recipes/libs/libjpeg/recipe.toml @@ -1,20 +1,7 @@ -[source] -tar = "https://ijg.org/files/jpegsrc.v9f.tar.gz" -blake3 = "ffd81637231d3ab2008d092d16af3bd3bd695fb0e284bc9de64d06e3ed431824" -script = """ -DYNAMIC_INIT -autotools_recursive_regenerate -""" - +# libjpeg is now provided by libjpeg-turbo [build] template = "custom" -script = """ -DYNAMIC_INIT -COOKBOOK_CONFIGURE_FLAGS=( - --host="${GNU_TARGET}" - --prefix="/usr" - --enable-shared - --enable-static -) -cookbook_configure -""" +script = "" + +[package] +dependencies = ["libjpeg-turbo"] From b6f9f8b249da6b974c1d50f32392e0fff8f773f6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 12 Jun 2025 13:03:00 -0600 Subject: [PATCH 2613/3180] Update dependencies --- Cargo.lock | 52 ++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cd8bfec4..e63e8c22 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -333,6 +333,26 @@ version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" +[[package]] +name = "bytemuck" +version = "1.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ecc273b49b3205b83d648f0690daa588925572cc5063745bfe547fe7ec8e1a1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "byteorder" version = "1.5.0" @@ -1517,15 +1537,15 @@ dependencies = [ [[package]] name = "pkgar" -version = "0.1.16" +version = "0.1.17" dependencies = [ + "anyhow", "blake3 0.3.8", + "bytemuck", "clap", - "error-chain", - "pkgar-core 0.1.16", - "pkgar-keys 0.1.16", - "plain", - "user-error", + "pkgar-core 0.1.17", + "pkgar-keys 0.1.17", + "thiserror 2.0.11", ] [[package]] @@ -1542,12 +1562,12 @@ dependencies = [ [[package]] name = "pkgar-core" -version = "0.1.16" +version = "0.1.17" dependencies = [ "bitflags 1.3.2", "blake3 0.3.8", + "bytemuck", "dryoc", - "plain", ] [[package]] @@ -1571,19 +1591,19 @@ dependencies = [ [[package]] name = "pkgar-keys" -version = "0.1.16" +version = "0.1.17" dependencies = [ + "anyhow", "clap", "dirs 3.0.2", - "error-chain", "hex", "lazy_static", - "pkgar-core 0.1.16", + "pkgar-core 0.1.17", "seckey", "serde", "termion", + "thiserror 2.0.11", "toml 0.8.19", - "user-error", ] [[package]] @@ -1788,9 +1808,9 @@ dependencies = [ "blake3 1.5.3", "object", "pbr", - "pkgar 0.1.16", - "pkgar-core 0.1.16", - "pkgar-keys 0.1.16", + "pkgar 0.1.17", + "pkgar-core 0.1.17", + "pkgar-keys 0.1.17", "redoxer", "serde", "termion", @@ -2570,7 +2590,7 @@ version = "1.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" dependencies = [ - "cfg-if 0.1.10", + "cfg-if 1.0.0", "static_assertions", ] From c853efdeb24d7a2c31f25d0a391350954d7c2bb4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 13 Jun 2025 11:00:31 -0600 Subject: [PATCH 2614/3180] Replace libjpeg with libjpeg-turbo entirely --- recipes/dev/gdk-pixbuf/recipe.toml | 2 +- recipes/libs/libjpeg/recipe.toml | 14 +++++++++----- recipes/wip/graphics/other/gaffer/recipe.toml | 2 +- recipes/wip/image/editors/inkscape/recipe.toml | 2 +- recipes/wip/image/editors/krita/recipe.toml | 2 +- recipes/wip/libs/gtk/gtk3/recipe.toml | 2 +- recipes/wip/libs/image/libjpeg-turbo/recipe.toml | 10 ---------- recipes/wip/libs/other/openimageio/recipe.toml | 2 +- recipes/wip/libs/other/webkitgtk3/recipe.toml | 4 +++- recipes/wip/libs/qt5/qt5-webkit/recipe.toml | 2 +- .../wip/net/server/guacamole-server/recipe.toml | 2 +- recipes/wip/text/emacs-pgtk/recipe.toml | 2 +- .../wip/video/converters/handbrake-cli/recipe.toml | 2 +- 13 files changed, 22 insertions(+), 26 deletions(-) delete mode 100644 recipes/wip/libs/image/libjpeg-turbo/recipe.toml diff --git a/recipes/dev/gdk-pixbuf/recipe.toml b/recipes/dev/gdk-pixbuf/recipe.toml index 6764fbc3..afa8bff2 100644 --- a/recipes/dev/gdk-pixbuf/recipe.toml +++ b/recipes/dev/gdk-pixbuf/recipe.toml @@ -9,7 +9,7 @@ dependencies = [ "glib", "libffi", "libiconv", - "libjpeg-turbo", + "libjpeg", "libpng", "pcre2", "shared-mime-info", diff --git a/recipes/libs/libjpeg/recipe.toml b/recipes/libs/libjpeg/recipe.toml index fb743a17..646a06b7 100644 --- a/recipes/libs/libjpeg/recipe.toml +++ b/recipes/libs/libjpeg/recipe.toml @@ -1,7 +1,11 @@ -# libjpeg is now provided by libjpeg-turbo +# libjpeg-turbo is compatible with libjpeg +[source] +tar = "https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/3.1.0/libjpeg-turbo-3.1.0.tar.gz" +blake3 = "3efc14da55c56fc0a6a50f109d9e1ee8a91f5ae7dd17a21d3aebe04a65f3ee96" + [build] template = "custom" -script = "" - -[package] -dependencies = ["libjpeg-turbo"] +script = """ +DYNAMIC_INIT +cookbook_cmake +""" diff --git a/recipes/wip/graphics/other/gaffer/recipe.toml b/recipes/wip/graphics/other/gaffer/recipe.toml index 8a8ec0f5..a4496f94 100644 --- a/recipes/wip/graphics/other/gaffer/recipe.toml +++ b/recipes/wip/graphics/other/gaffer/recipe.toml @@ -16,7 +16,7 @@ dependencies = [ "llvm18", "lz4", "libffi", - "libjpeg-turbo", + "libjpeg", "libpng", "libtiff", "openexr", diff --git a/recipes/wip/image/editors/inkscape/recipe.toml b/recipes/wip/image/editors/inkscape/recipe.toml index 6ff6b083..743d46e8 100644 --- a/recipes/wip/image/editors/inkscape/recipe.toml +++ b/recipes/wip/image/editors/inkscape/recipe.toml @@ -38,7 +38,7 @@ dependencies = [ "libcdr", "libgsl", "libgspell-gtk3", - "libjpeg-turbo", + "libjpeg", "liblcms", "liblapack", ] diff --git a/recipes/wip/image/editors/krita/recipe.toml b/recipes/wip/image/editors/krita/recipe.toml index 85a19655..5d74f339 100644 --- a/recipes/wip/image/editors/krita/recipe.toml +++ b/recipes/wip/image/editors/krita/recipe.toml @@ -24,7 +24,7 @@ dependencies = [ "libmypaint", "boost", "libheif", - "libjpeg-turbo", + "libjpeg", "libjxl", "kf5-extra-cmake-modules", "kf5-completion", diff --git a/recipes/wip/libs/gtk/gtk3/recipe.toml b/recipes/wip/libs/gtk/gtk3/recipe.toml index e0682d84..63def679 100644 --- a/recipes/wip/libs/gtk/gtk3/recipe.toml +++ b/recipes/wip/libs/gtk/gtk3/recipe.toml @@ -20,7 +20,7 @@ dependencies = [ "libepoxy", "libffi", "libiconv", - "libjpeg-turbo", + "libjpeg", "libpng", "libpthread-stubs", "libx11", diff --git a/recipes/wip/libs/image/libjpeg-turbo/recipe.toml b/recipes/wip/libs/image/libjpeg-turbo/recipe.toml deleted file mode 100644 index 7b89d807..00000000 --- a/recipes/wip/libs/image/libjpeg-turbo/recipe.toml +++ /dev/null @@ -1,10 +0,0 @@ -[source] -tar = "https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/3.1.0/libjpeg-turbo-3.1.0.tar.gz" -blake3 = "3efc14da55c56fc0a6a50f109d9e1ee8a91f5ae7dd17a21d3aebe04a65f3ee96" - -[build] -template = "custom" -script = """ -DYNAMIC_INIT -cookbook_cmake -""" diff --git a/recipes/wip/libs/other/openimageio/recipe.toml b/recipes/wip/libs/other/openimageio/recipe.toml index e88f3a4f..667a1a89 100644 --- a/recipes/wip/libs/other/openimageio/recipe.toml +++ b/recipes/wip/libs/other/openimageio/recipe.toml @@ -8,7 +8,7 @@ template = "custom" dependencies = [ "imath", "libtiff", - "libjpeg-turbo", + "libjpeg", "openexr", "libfmt", #"libpng", diff --git a/recipes/wip/libs/other/webkitgtk3/recipe.toml b/recipes/wip/libs/other/webkitgtk3/recipe.toml index 38c2c714..b5c74545 100644 --- a/recipes/wip/libs/other/webkitgtk3/recipe.toml +++ b/recipes/wip/libs/other/webkitgtk3/recipe.toml @@ -27,7 +27,7 @@ dependencies = [ "libgpg-error", "libiconv", "libicu", - "libjpeg-turbo", + "libjpeg", "libpng", "libpsl", "libpthread-stubs", @@ -138,4 +138,6 @@ cookbook_cmake \ -DUSE_WOFF2=OFF patchelf --replace-needed "${COOKBOOK_SYSROOT}/usr/lib/libsqlite3.so" "libsqlite3.so" "${COOKBOOK_STAGE}/usr/lib/libwebkit2gtk-4.1.so" patchelf --replace-needed "${COOKBOOK_SYSROOT}/usr/lib/libsqlite3.so" "libsqlite3.so" "${COOKBOOK_STAGE}/usr/libexec/webkit2gtk-4.1/MiniBrowser" +mkdir -p "${COOKBOOK_STAGE}/usr/bin" +ln -sr "${COOKBOOK_STAGE}/usr/libexec/webkit2gtk-4.1/MiniBrowser" "${COOKBOOK_STAGE}/usr/bin/MiniBrowser" """ diff --git a/recipes/wip/libs/qt5/qt5-webkit/recipe.toml b/recipes/wip/libs/qt5/qt5-webkit/recipe.toml index 450cdd69..cf71dd2e 100644 --- a/recipes/wip/libs/qt5/qt5-webkit/recipe.toml +++ b/recipes/wip/libs/qt5/qt5-webkit/recipe.toml @@ -19,7 +19,7 @@ dependencies = [ "libhyphen", "libxml2", "libxslt", - "libjpeg-turbo", + "libjpeg", "libpng", "zlib", "glib", diff --git a/recipes/wip/net/server/guacamole-server/recipe.toml b/recipes/wip/net/server/guacamole-server/recipe.toml index 90faa903..2a81bff6 100644 --- a/recipes/wip/net/server/guacamole-server/recipe.toml +++ b/recipes/wip/net/server/guacamole-server/recipe.toml @@ -6,7 +6,7 @@ tar = "https://apache.org/dyn/closer.lua/guacamole/1.5.5/source/guacamole-server template = "configure" dependencies = [ "cairo", - "libjpeg-turbo", + "libjpeg", "libpng", "libuuid", "libssh2", diff --git a/recipes/wip/text/emacs-pgtk/recipe.toml b/recipes/wip/text/emacs-pgtk/recipe.toml index e72ad0d0..825fa2e3 100644 --- a/recipes/wip/text/emacs-pgtk/recipe.toml +++ b/recipes/wip/text/emacs-pgtk/recipe.toml @@ -23,7 +23,7 @@ dependencies = [ "glib", "gtk3", "harfbuzz", - "libjpeg-turbo", + "libjpeg", "pango", "libpng", "librsvg", diff --git a/recipes/wip/video/converters/handbrake-cli/recipe.toml b/recipes/wip/video/converters/handbrake-cli/recipe.toml index 96fef276..9a9e7e77 100644 --- a/recipes/wip/video/converters/handbrake-cli/recipe.toml +++ b/recipes/wip/video/converters/handbrake-cli/recipe.toml @@ -15,7 +15,7 @@ dependencies = [ "lame", "libass", "libiconv", - "libjpeg-turbo", + "libjpeg", "libogg", "libsamplerate", "libtheora", From 3ec01b7693d46745c0fac413eb79065ef3712fac Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 13 Jun 2025 12:28:55 -0600 Subject: [PATCH 2615/3180] Greatly increase recipe scanning performance --- Cargo.lock | 40 ++++++++++++++++++ Cargo.toml | 1 + src/bin/cook.rs | 4 +- src/bin/find_recipe.rs | 19 ++++----- src/bin/list_recipes.rs | 36 ++++++---------- src/bin/pkg_deps.rs | 4 -- src/package.rs | 4 +- src/recipe.rs | 4 +- src/recipe_find.rs | 92 ++++++++++++----------------------------- 9 files changed, 95 insertions(+), 109 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e63e8c22..4cc6bb78 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -321,6 +321,16 @@ dependencies = [ "alloc-stdlib", ] +[[package]] +name = "bstr" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4" +dependencies = [ + "memchr", + "serde", +] + [[package]] name = "bumpalo" version = "3.17.0" @@ -951,6 +961,19 @@ version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +[[package]] +name = "globset" +version = "0.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54a1028dfc5f5df5da8a56a73e6c153c9a9708ec57232470703592a3f18e49f5" +dependencies = [ + "aho-corasick", + "bstr", + "log", + "regex-automata", + "regex-syntax", +] + [[package]] name = "gpt" version = "3.1.0" @@ -1254,6 +1277,22 @@ dependencies = [ "icu_properties", ] +[[package]] +name = "ignore" +version = "0.4.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" +dependencies = [ + "crossbeam-deque", + "globset", + "log", + "memchr", + "regex-automata", + "same-file", + "walkdir", + "winapi-util", +] + [[package]] name = "indexmap" version = "2.7.1" @@ -1806,6 +1845,7 @@ name = "redox_cookbook" version = "0.1.0" dependencies = [ "blake3 1.5.3", + "ignore", "object", "pbr", "pkgar 0.1.17", diff --git a/Cargo.toml b/Cargo.toml index 44fc90a7..15608f40 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,6 +21,7 @@ path = "src/lib.rs" [dependencies] blake3 = "=1.5.3" # 1.5.4 is incompatible with blake3 0.3 dependency from pkgar +ignore = "0.4" object = { version = "0.36", features = ["build_core"] } pbr = "1.0.2" pkgar = { path = "pkgar/pkgar" } diff --git a/src/bin/cook.rs b/src/bin/cook.rs index bd9916cf..dca5329f 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1,6 +1,6 @@ use cookbook::blake3::blake3_progress; use cookbook::package::StageToml; -use cookbook::recipe::{BuildKind, CookRecipe, PackageRecipe, Recipe, SourceRecipe}; +use cookbook::recipe::{BuildKind, CookRecipe, Recipe, SourceRecipe}; use cookbook::recipe_find::recipe_find; use std::{ collections::BTreeSet, @@ -601,7 +601,7 @@ fn build( let mut dep_pkgars = BTreeSet::new(); for dependency in recipe.build.dependencies.iter() { //TODO: sanitize name - let dependency_dir = recipe_find(dependency, Path::new("recipes"))?; + let dependency_dir = recipe_find(dependency); if dependency_dir.is_none() { return Err(format!("failed to find recipe directory '{}'", dependency)); } diff --git a/src/bin/find_recipe.rs b/src/bin/find_recipe.rs index ea84db43..92b8ec05 100644 --- a/src/bin/find_recipe.rs +++ b/src/bin/find_recipe.rs @@ -1,6 +1,5 @@ use cookbook::recipe_find::recipe_find; use std::env::args; -use std::path::Path; use std::process::exit; // use clap::Parser; @@ -12,15 +11,15 @@ fn main() { usage(); exit(2); } - let result = recipe_find(&args().last().unwrap(), Path::new("recipes")); - if result.is_err() { - eprintln!("{}", result.err().unwrap()); - exit(2); - } else if result.as_ref().unwrap().is_none() { - eprintln!("recipe {} not found", &args().last().unwrap()); + let recipe_name = &args().last().unwrap(); + match recipe_find(recipe_name) { + Some(path) => { + println!("{}", path.display()); + exit(0); + }, + None => { + eprintln!("recipe {} not found", recipe_name); exit(1); - } else { - println!("{}", result.unwrap().unwrap().display()); - exit(0); + } } } diff --git a/src/bin/list_recipes.rs b/src/bin/list_recipes.rs index 1597e4ce..81f88e47 100644 --- a/src/bin/list_recipes.rs +++ b/src/bin/list_recipes.rs @@ -1,5 +1,4 @@ use cookbook::recipe_find::list_recipes; -use std::path::Path; use std::process::exit; // use clap::Parser; @@ -8,31 +7,22 @@ fn main() { .nth(1) .map_or(false, |a| a == "-s" || a == "--short"); - let result = list_recipes(Path::new("recipes"), Default::default()); + let result = list_recipes(Default::default()); + if result.is_empty() { + eprintln!("recipes not found"); + exit(1); + } else { + for path in result { + let Some(file_name) = path.file_name() else { + continue; + }; - match result { - Ok(result) => { - if result.is_empty() { - eprintln!("recipes not found"); - exit(1); + if print_short { + println!("{}", file_name.to_string_lossy()); } else { - for path in result { - let Some(file_name) = path.file_name() else { - continue; - }; - - if print_short { - println!("{}", file_name.to_string_lossy()); - } else { - println!("{}", path.to_string_lossy()); - } - } - exit(0); + println!("{}", path.to_string_lossy()); } } - Err(error) => { - eprintln!("{error}"); - exit(2); - } + exit(0); } } diff --git a/src/bin/pkg_deps.rs b/src/bin/pkg_deps.rs index 2265cdfd..657b3039 100644 --- a/src/bin/pkg_deps.rs +++ b/src/bin/pkg_deps.rs @@ -4,10 +4,6 @@ use std::{env::args, process::ExitCode}; /// Same as `cookbook/src/bin/cook.rs`. const DEP_DEPTH: usize = 16; -fn usage() { - eprintln!("Usage: pkg_deps [package1 package2 ...]"); -} - fn main() -> ExitCode { let names = args().skip(1).collect::>(); let packages = StageToml::new_recursive(&names, DEP_DEPTH).expect("package not found"); diff --git a/src/package.rs b/src/package.rs index 15d1815f..c86a610f 100644 --- a/src/package.rs +++ b/src/package.rs @@ -1,4 +1,4 @@ -use std::{env, fs, path::Path}; +use std::{env, fs}; use crate::recipe_find::recipe_find; @@ -14,7 +14,7 @@ pub struct StageToml { impl StageToml { pub fn new(name: String) -> Result { //TODO: sanitize recipe name? - let dir = recipe_find(&name, Path::new("recipes"))?; + let dir = recipe_find(&name); if dir.is_none() { return Err(format!("failed to find recipe directory '{}'", name)); } diff --git a/src/recipe.rs b/src/recipe.rs index 92bfce44..456f6097 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -1,6 +1,6 @@ use std::{ fs, - path::{Path, PathBuf}, + path::PathBuf, }; use serde::{Deserialize, Serialize}; @@ -114,7 +114,7 @@ pub struct CookRecipe { impl CookRecipe { pub fn new(name: String) -> Result { //TODO: sanitize recipe name? - let dir = recipe_find(&name, Path::new("recipes"))?; + let dir = recipe_find(&name); if dir.is_none() { return Err(format!("failed to find recipe directory '{}'", name)); } diff --git a/src/recipe_find.rs b/src/recipe_find.rs index 8354264e..b0cedcbd 100644 --- a/src/recipe_find.rs +++ b/src/recipe_find.rs @@ -1,78 +1,38 @@ +use std::collections::HashMap; use std::ffi::OsStr; -use std::fs::{self}; -use std::path::{Path, PathBuf}; +use std::path::PathBuf; +use std::sync::LazyLock; -pub fn recipe_find(recipe: &str, dir: &Path) -> Result, String> { - let mut recipe_path = None; - if !dir.is_dir() { - return Ok(None); - } - for entry in fs::read_dir(dir).map_err(|e| e.to_string())? { - let entry = entry.map_err(|e| e.to_string())?; - if entry.file_name() == OsStr::new("recipe.sh") - || entry.file_name() == OsStr::new("recipe.toml") - { - // println!("recipe is {:?}", dir.file_name()); - if dir.file_name().unwrap() != OsStr::new(recipe) { - return Ok(None); - } else { - return Ok(Some(dir.to_path_buf())); +static RECIPE_PATHS: LazyLock> = LazyLock::new(|| { + let mut recipe_paths = HashMap::new(); + for entry_res in ignore::Walk::new("recipes") { + let entry = entry_res.unwrap(); + if entry.file_name() == OsStr::new("recipe.sh") || entry.file_name() == OsStr::new("recipe.toml") { + let recipe_file = entry.path(); + let Some(recipe_dir) = recipe_file.parent() else { continue }; + let Some(recipe_name) = recipe_dir.file_name().and_then(|x| x.to_str()) else { continue }; + if let Some(other_dir) = recipe_paths.insert(recipe_name.to_string(), recipe_dir.to_path_buf()) { + panic!( + "recipe {} has two or more entries {:?}, {:?}", + recipe_name, + other_dir, + recipe_dir + ); } } } + recipe_paths +}); - for entry in fs::read_dir(dir).map_err(|e| e.to_string())? { - let entry = entry.map_err(|e| e.to_string())?; - if !entry.file_type().map_err(|e| e.to_string())?.is_dir() { - continue; - } - let found = recipe_find(recipe, entry.path().as_path())?; - if found.is_none() { - continue; - } - if recipe_path.is_none() { - recipe_path = found; - } else { - return Err(format!( - "recipe {} has two or more entries {}, {}", - recipe, - recipe_path.unwrap().display(), - found.unwrap().display() - )); - } - } - - Ok(recipe_path) +pub fn recipe_find(recipe: &str) -> Option { + RECIPE_PATHS.get(recipe).cloned() } -pub fn list_recipes(dir: &Path, prefix: PathBuf) -> Result, String> { +pub fn list_recipes(prefix: PathBuf) -> Vec { let mut recipes = Vec::::new(); - if !dir.is_dir() { - return Ok(recipes); - } - for entry in fs::read_dir(dir).map_err(|e| e.to_string())? { - let entry = entry.map_err(|e| e.to_string())?; - if entry.file_name() == OsStr::new("recipe.sh") - || entry.file_name() == OsStr::new("recipe.toml") - { - recipes.push(prefix); - return Ok(recipes); - } - } - - for entry in fs::read_dir(dir).map_err(|e| e.to_string())? { - let entry = entry.map_err(|e| e.to_string())?; - if !entry.file_type().map_err(|e| e.to_string())?.is_dir() { - continue; - } - let name = entry.file_name(); - let Some(name) = name.to_str() else { - eprintln!("invalid UTF-8 for entry {entry:?}"); - continue; - }; - let mut found = list_recipes(entry.path().as_path(), prefix.join(name))?; - recipes.append(&mut found); + for (_name, path) in RECIPE_PATHS.iter() { + recipes.push(prefix.join(path)); } recipes.sort(); - Ok(recipes) + recipes } From 71e2295e99d76a8838af89cde1a7c0451206c5eb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 13 Jun 2025 13:08:36 -0600 Subject: [PATCH 2616/3180] mgba: update and convert to toml --- recipes/emulators/mgba/01_redox.patch | 138 -------------------------- recipes/emulators/mgba/recipe.sh | 43 -------- recipes/emulators/mgba/recipe.toml | 27 +++++ recipes/emulators/mgba/redox.patch | 12 +++ 4 files changed, 39 insertions(+), 181 deletions(-) delete mode 100644 recipes/emulators/mgba/01_redox.patch delete mode 100644 recipes/emulators/mgba/recipe.sh create mode 100644 recipes/emulators/mgba/recipe.toml create mode 100644 recipes/emulators/mgba/redox.patch diff --git a/recipes/emulators/mgba/01_redox.patch b/recipes/emulators/mgba/01_redox.patch deleted file mode 100644 index 0ba8702d..00000000 --- a/recipes/emulators/mgba/01_redox.patch +++ /dev/null @@ -1,138 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index fa01e3a5..5910934a 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -1,4 +1,4 @@ --cmake_minimum_required(VERSION 3.1) -+cmake_minimum_required(VERSION 3.4) - if(POLICY CMP0025) - cmake_policy(SET CMP0025 NEW) - endif() -@@ -241,8 +241,8 @@ elseif(UNIX) - add_definitions(-D_GNU_SOURCE) - endif() - if(NOT APPLE AND NOT HAIKU) -- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread") -- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread") -+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -lpthread") -+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lpthread") - endif() - - list(APPEND CORE_VFS_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/util/vfs/vfs-fd.c ${CMAKE_CURRENT_SOURCE_DIR}/src/util/vfs/vfs-dirent.c) -diff --git a/include/mgba-util/platform/posix/threading.h b/include/mgba-util/platform/posix/threading.h -index 468e1460..50cba731 100644 ---- a/include/mgba-util/platform/posix/threading.h -+++ b/include/mgba-util/platform/posix/threading.h -@@ -85,25 +85,8 @@ static inline int ThreadJoin(Thread thread) { - } - - static inline int ThreadSetName(const char* name) { --#ifdef __APPLE__ --#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1060 -- return pthread_setname_np(name); --#else - UNUSED(name); - return 0; --#endif --#elif defined(__FreeBSD__) || defined(__OpenBSD__) -- pthread_set_name_np(pthread_self(), name); -- return 0; --#elif defined(__HAIKU__) -- rename_thread(find_thread(NULL), name); -- return 0; --#elif !defined(BUILD_PANDORA) // Pandora's glibc is too old -- return pthread_setname_np(pthread_self(), name); --#else -- UNUSED(name); -- return 0; --#endif - } - - CXX_GUARD_END -diff --git a/include/mgba/core/interface.h b/include/mgba/core/interface.h -index e5c9dde1..82d3b828 100644 ---- a/include/mgba/core/interface.h -+++ b/include/mgba/core/interface.h -@@ -31,7 +31,7 @@ typedef uint32_t color_t; - #define M_G8(X) (((((X) >> 2) & 0xF8) * 0x21) >> 5) - #define M_B8(X) (((((X) >> 7) & 0xF8) * 0x21) >> 5) - --#define M_RGB5_TO_BGR8(X) ((M_R5(X) << 3) | (M_G5(X) << 11) | (M_B5(X) << 19)) -+#define M_RGB5_TO_BGR8(X) ((M_B5(X) << 3) | (M_G5(X) << 11) | (M_R5(X) << 19)) - #define M_RGB8_TO_BGR5(X) ((((X) & 0xF8) >> 3) | (((X) & 0xF800) >> 6) | (((X) & 0xF80000) >> 9)) - #define M_RGB8_TO_RGB5(X) ((((X) & 0xF8) << 7) | (((X) & 0xF800) >> 6) | (((X) & 0xF80000) >> 19)) - -diff --git a/src/platform/sdl/sdl-audio.c b/src/platform/sdl/sdl-audio.c -index ab0bd830..7cd77495 100644 ---- a/src/platform/sdl/sdl-audio.c -+++ b/src/platform/sdl/sdl-audio.c -@@ -24,6 +24,15 @@ bool mSDLInitAudio(struct mSDLAudio* context, struct mCoreThread* threadContext) - return false; - } - -+ // Workaround: The thread of _mSDLAudioCallback cannot see these changes -+ // unless they are made before the SDL_OpenAudio call. -+ // This makes the `if (!context || !audioContext->core) {` check in -+ // _mSDLAudioCallback not bail out. This is rather important, the whole -+ // emulation seems to be synched to the audio. -+ context->core = threadContext->core; -+ context->sync = &threadContext->impl->sync; -+ // -- -+ - context->desiredSpec.freq = context->sampleRate; - context->desiredSpec.format = AUDIO_S16SYS; - context->desiredSpec.channels = 2; -diff --git a/src/third-party/zlib/contrib/minizip/ioapi.c b/src/third-party/zlib/contrib/minizip/ioapi.c -index 7f5c191b..744dd96b 100644 ---- a/src/third-party/zlib/contrib/minizip/ioapi.c -+++ b/src/third-party/zlib/contrib/minizip/ioapi.c -@@ -14,7 +14,7 @@ - #define _CRT_SECURE_NO_WARNINGS - #endif - --#if defined(__APPLE__) || defined(IOAPI_NO_64) -+#if defined(__APPLE__) || defined(IOAPI_NO_64) || defined(__redox__) - // In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions - #define FOPEN_FUNC(filename, mode) fopen(filename, mode) - #define FTELLO_FUNC(stream) ftello(stream) -diff --git a/src/util/vfs/vfs-fd.c b/src/util/vfs/vfs-fd.c -index 4a20eaf7..3307709c 100644 ---- a/src/util/vfs/vfs-fd.c -+++ b/src/util/vfs/vfs-fd.c -@@ -42,7 +42,8 @@ struct VFile* VFileOpenFD(const char* path, int flags) { - MultiByteToWideChar(CP_UTF8, 0, path, -1, wpath, sizeof(wpath) / sizeof(*wpath)); - int fd = _wopen(wpath, flags, 0666); - #else -- int fd = open(path, flags, 0666); -+ // Workaround for the _vfdMap permission problems below -+ int fd = open(path, flags | O_RDWR, 0666); - #endif - return VFileFromFD(fd); - } -@@ -164,24 +165,6 @@ static ssize_t _vfdSize(struct VFile* vf) { - static bool _vfdSync(struct VFile* vf, const void* buffer, size_t size) { - UNUSED(buffer); - UNUSED(size); -- struct VFileFD* vfd = (struct VFileFD*) vf; --#ifndef _WIN32 --#ifdef __HAIKU__ -- futimens(vfd->fd, NULL); --#else -- futimes(vfd->fd, NULL); --#endif -- if (buffer && size) { -- return msync(buffer, size, MS_SYNC) == 0; -- } -- return fsync(vfd->fd) == 0; --#else -- HANDLE h = (HANDLE) _get_osfhandle(vfd->fd); -- FILETIME ft; -- SYSTEMTIME st; -- GetSystemTime(&st); -- SystemTimeToFileTime(&st, &ft); -- SetFileTime(h, NULL, &ft, &ft); -- return FlushFileBuffers(h); --#endif -+ printf("_vfdSync\n"); -+ return true; - } diff --git a/recipes/emulators/mgba/recipe.sh b/recipes/emulators/mgba/recipe.sh deleted file mode 100644 index 1e38f3f5..00000000 --- a/recipes/emulators/mgba/recipe.sh +++ /dev/null @@ -1,43 +0,0 @@ -VERSION=0.7 -GIT=https://github.com/mgba-emu/mgba.git -BRANCH=$VERSION -BUILD_DEPENDS=(sdl1 liborbital libiconv pixman) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include -I$sysroot/include/SDL" - export LDFLAGS="-L$sysroot/lib -static" - - mkdir -p build - cd build - cmake \ - -DCMAKE_INSTALL_PREFIX:PATH=/ \ - -DBUILD_STATIC=ON \ - -DBUILD_SHARED=OFF \ - -DBUILD_QT=OFF \ - -DUSE_SQLITE3=OFF \ - -DUSE_DEBUGGERS=OFF \ - -DBUILD_SDL=ON \ - -DSDL_VERSION="1.2" \ - -DSDL_LIBRARY="-lSDL -lorbital" \ - .. - VERBOSE=1 "$REDOX_MAKE" all -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - mkdir -pv "$dest/bin" - cp "../build/build/sdl/mgba" "$dest/bin/mgba" - skip=1 -} diff --git a/recipes/emulators/mgba/recipe.toml b/recipes/emulators/mgba/recipe.toml new file mode 100644 index 00000000..5a4d65ae --- /dev/null +++ b/recipes/emulators/mgba/recipe.toml @@ -0,0 +1,27 @@ +[source] +tar = "https://github.com/mgba-emu/mgba/archive/0.10.5.tar.gz" +blake3 = "a1b9e797a5058f5264d276805aef5643b7ea460916e491a0098ba32d87f1519e" +patches = ["redox.patch"] + +[build] +dependencies = [ + "libiconv", + "liborbital", + "libpng", + "pixman", + "sdl1", + "zlib", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_cmake \ + -DBUILD_QT=OFF \ + -DBUILD_SHARED=ON \ + -DBUILD_STATIC=OFF \ + -DUSE_SQLITE3=OFF \ + -DUSE_DEBUGGERS=OFF \ + -DBUILD_SDL=ON \ + -DSDL_VERSION="1.2" \ + -DSDL_LIBRARY="-lSDL -lorbital" +""" diff --git a/recipes/emulators/mgba/redox.patch b/recipes/emulators/mgba/redox.patch new file mode 100644 index 00000000..33b1a4da --- /dev/null +++ b/recipes/emulators/mgba/redox.patch @@ -0,0 +1,12 @@ +diff -ruwN mgba-0.10.5/src/third-party/zlib/contrib/minizip/ioapi.h source/src/third-party/zlib/contrib/minizip/ioapi.h +--- mgba-0.10.5/src/third-party/zlib/contrib/minizip/ioapi.h 2025-03-08 20:09:26.000000000 -0700 ++++ source/src/third-party/zlib/contrib/minizip/ioapi.h 2025-06-13 13:07:13.489517096 -0600 +@@ -50,7 +50,7 @@ + #define ftello64 ftell + #define fseeko64 fseek + #else +-#ifdef __FreeBSD__ ++#if defined(__FreeBSD__) || defined(__redox__) + #define fopen64 fopen + #define ftello64 ftello + #define fseeko64 fseeko From eabfac4d6997855c7782f22cec1ff281a061aeda Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 13 Jun 2025 13:19:05 -0600 Subject: [PATCH 2617/3180] neverball: convert to toml --- recipes/games/neverball/recipe.sh | 54 ----------------------------- recipes/games/neverball/recipe.toml | 54 +++++++++++++++++++++++++++++ recipes/games/neverball/redox.patch | 2 +- 3 files changed, 55 insertions(+), 55 deletions(-) delete mode 100644 recipes/games/neverball/recipe.sh create mode 100644 recipes/games/neverball/recipe.toml diff --git a/recipes/games/neverball/recipe.sh b/recipes/games/neverball/recipe.sh deleted file mode 100644 index 39a3e5f5..00000000 --- a/recipes/games/neverball/recipe.sh +++ /dev/null @@ -1,54 +0,0 @@ -VERSION=1.6.0 -TAR="https://neverball.org/neverball-${VERSION}.tar.gz" -BUILD_DEPENDS=(freetype2 libjpeg libogg liborbital libpng libvorbis llvm18 mesa sdl2 sdl2-ttf zlib) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - set -x - env -i \ - LDFLAGS="-static -ljpeg -lpng16 -lz" \ - PATH="/usr/bin:/bin" \ - PKG_CONFIG="pkg-config" \ - "$REDOX_MAKE" -j"$($NPROC)" ENABLE_FS=stdio mapc sols - sysroot="$(realpath ../sysroot)" - export CPPFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib -static -z noexecstack" - "$REDOX_MAKE" -j"$($NPROC)" ENABLE_FS=stdio ENABLE_NLS=0 clean-src - "$REDOX_MAKE" -j"$($NPROC)" ENABLE_FS=stdio ENABLE_NLS=0 neverball neverputt - set +x - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - - # Create install directories - mkdir -pv "${dest}/usr/games/neverball" "${dest}/ui/apps" "${dest}/ui/icons/apps" - - # Copy assets - cp -rv data "${dest}/usr/games/neverball" - - # For each game - for bin in neverball neverputt - do - # Install binary - "${STRIP}" -v "${bin}" -o "${dest}/usr/games/neverball/${bin}" - - # Install manifest - cp -v "${COOKBOOK_RECIPE}/manifest-${bin}" "${dest}/ui/apps/${bin}" - - # Install icon - cp -v "dist/${bin}_64.png" "${dest}/ui/icons/apps/${bin}.png" - done - - skip=1 -} diff --git a/recipes/games/neverball/recipe.toml b/recipes/games/neverball/recipe.toml new file mode 100644 index 00000000..718156a1 --- /dev/null +++ b/recipes/games/neverball/recipe.toml @@ -0,0 +1,54 @@ +[source] +tar = "https://neverball.org/neverball-1.6.0.tar.gz" +blake3 = "74f3b68595f475e89fd2ca8b5fc349837ff36fbbe141f321dfc232dbf8fccf51" +patches = ["redox.patch"] + +[build] +dependencies = [ + "freetype2", + "libjpeg", + "libogg", + "liborbital", + "libpng", + "libvorbis", + "llvm18", + "mesa", + "sdl2", + "sdl2-ttf", + "zlib", +] +template = "custom" +script = """ +DYNAMIC_INIT + +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ + +env -i \ + LDFLAGS="-static -ljpeg -lpng16 -lz" \ + PATH="/usr/bin:/bin" \ + PKG_CONFIG="pkg-config" \ +"${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" ENABLE_FS=stdio mapc sols + +export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib -z noexecstack" +"${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" ENABLE_FS=stdio ENABLE_NLS=0 clean-src +"${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" ENABLE_FS=stdio ENABLE_NLS=0 neverball neverputt + +# Create install directories +mkdir -pv "${COOKBOOK_STAGE}/usr/games/neverball" "${COOKBOOK_STAGE}/ui/apps" "${COOKBOOK_STAGE}/ui/icons/apps" + +# Copy assets +cp -rv data "${COOKBOOK_STAGE}/usr/games/neverball" + +# For each game +for bin in neverball neverputt +do + # Install binary + "${STRIP}" -v "${bin}" -o "${COOKBOOK_STAGE}/usr/games/neverball/${bin}" + + # Install manifest + cp -v "${COOKBOOK_RECIPE}/manifest-${bin}" "${COOKBOOK_STAGE}/ui/apps/${bin}" + + # Install icon + cp -v "dist/${bin}_64.png" "${COOKBOOK_STAGE}/ui/icons/apps/${bin}.png" +done +""" diff --git a/recipes/games/neverball/redox.patch b/recipes/games/neverball/redox.patch index 6bc6dd4b..7457ccff 100644 --- a/recipes/games/neverball/redox.patch +++ b/recipes/games/neverball/redox.patch @@ -52,7 +52,7 @@ diff -ruwN neverball-1.6.0/Makefile source/Makefile -OGG_LIBS := -lvorbisfile -TTF_LIBS := -lSDL2_ttf -+OGG_LIBS := $(shell $(PKG_CONFIG) vorbisfile --libs) ++OGG_LIBS := $(shell $(PKG_CONFIG) ogg vorbis vorbisfile --libs) +TTF_LIBS := $(shell $(PKG_CONFIG) SDL2_ttf --libs) -lfreetype ALL_LIBS := $(HMD_LIBS) $(TILT_LIBS) $(INTL_LIBS) $(TTF_LIBS) \ From abce13bbc0a58025b138d8a1c549f0260778a274 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 13 Jun 2025 15:11:57 -0600 Subject: [PATCH 2618/3180] freeciv: fix compilation --- recipes/games/freeciv/recipe.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/recipes/games/freeciv/recipe.toml b/recipes/games/freeciv/recipe.toml index 1ee11545..a8278204 100644 --- a/recipes/games/freeciv/recipe.toml +++ b/recipes/games/freeciv/recipe.toml @@ -24,6 +24,8 @@ dependencies = [ template = "custom" script = """ DYNAMIC_INIT +export CURL_LIBS="-lcurl -lnghttp2 -lssl -lcrypto" +export CURL_MIME_API_LIBS="${CURL_LIBS}" export ICU_LIBS="-licuuc -licudata -lstdc++" export SDL2_LIBS="\ -lSDL2_gfx \ From 3c00f775021572b57a564a660cf02357f6c86540 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 13 Jun 2025 15:23:24 -0600 Subject: [PATCH 2619/3180] gigalomania: compile dynamically --- recipes/games/gigalomania/recipe.toml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/recipes/games/gigalomania/recipe.toml b/recipes/games/gigalomania/recipe.toml index 399661b1..a39f84fe 100644 --- a/recipes/games/gigalomania/recipe.toml +++ b/recipes/games/gigalomania/recipe.toml @@ -16,10 +16,12 @@ dependencies = [ "zlib" ] script = """ +DYNAMIC_INIT + rsync -av --delete "${COOKBOOK_SOURCE}/" ./ export CPPHOST="${TARGET}-g++" -export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib --static" +export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include" "${REDOX_MAKE}" all -j"$(${NPROC})" From a7eb3c2a8605c06ea7a68772d368b58d5ce4a102 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 13 Jun 2025 15:33:28 -0600 Subject: [PATCH 2620/3180] openjk: compile dynamically --- recipes/games/openjk/recipe.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/recipes/games/openjk/recipe.toml b/recipes/games/openjk/recipe.toml index 6e5b3c13..1ea40076 100644 --- a/recipes/games/openjk/recipe.toml +++ b/recipes/games/openjk/recipe.toml @@ -14,6 +14,8 @@ dependencies = [ "zlib", ] script = """ +DYNAMIC_INIT + export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" export CXXFLAGS="${CXXFLAGS} -I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" cat > redox.cmake < Date: Sat, 14 Jun 2025 02:29:03 -0400 Subject: [PATCH 2621/3180] Fix and TOMLize tools/powerline Part of #174 --- recipes/tools/powerline/recipe.sh | 2 -- recipes/tools/powerline/recipe.toml | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) delete mode 100644 recipes/tools/powerline/recipe.sh create mode 100644 recipes/tools/powerline/recipe.toml diff --git a/recipes/tools/powerline/recipe.sh b/recipes/tools/powerline/recipe.sh deleted file mode 100644 index 84812a86..00000000 --- a/recipes/tools/powerline/recipe.sh +++ /dev/null @@ -1,2 +0,0 @@ -GIT=https://github.com/jD91mZM2/powerline-rs -CARGOFLAGS="--no-default-features --features chrono" diff --git a/recipes/tools/powerline/recipe.toml b/recipes/tools/powerline/recipe.toml new file mode 100644 index 00000000..e8f2b616 --- /dev/null +++ b/recipes/tools/powerline/recipe.toml @@ -0,0 +1,17 @@ +[source] +git = "https://github.com/jD91mZM2/powerline-rs" + +[build] +template = "custom" +script = """ +export CARGOFLAGS="--no-default-features --features chrono" + +# --locked uses a reallyyyy old redox_syscall and libc which fails +${COOKBOOK_CARGO} install \ + --path "${COOKBOOK_SOURCE}/${PACKAGE_PATH}" \ + --root "${COOKBOOK_STAGE}/usr" \ + --no-track \ + --no-default-features \ + --features chrono \ + ${install_flags} +""" From 60618a9e474e526fb0e402e31318c3d36cbf0bdd Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 15 Jun 2025 21:12:03 -0600 Subject: [PATCH 2622/3180] webkitgtk3: disable gstreamer temporarily and use SOCK_STREAM instead of SOCK_SEQPACKET --- recipes/wip/libs/other/webkitgtk3/recipe.toml | 26 ++++++++++-------- recipes/wip/libs/other/webkitgtk3/redox.patch | 27 ++++++++++++++++--- 2 files changed, 38 insertions(+), 15 deletions(-) diff --git a/recipes/wip/libs/other/webkitgtk3/recipe.toml b/recipes/wip/libs/other/webkitgtk3/recipe.toml index b5c74545..682b2856 100644 --- a/recipes/wip/libs/other/webkitgtk3/recipe.toml +++ b/recipes/wip/libs/other/webkitgtk3/recipe.toml @@ -18,7 +18,7 @@ dependencies = [ "gdk-pixbuf", "gettext", "glib", - "gstreamer", + #TODO "gstreamer", "gtk3", "harfbuzz", "libepoxy", @@ -69,16 +69,16 @@ LIBS=( $("${TARGET}-pkg-config" --libs gdk-3.0) $("${TARGET}-pkg-config" --libs gdk-pixbuf-2.0) $("${TARGET}-pkg-config" --libs gpg-error) - $("${TARGET}-pkg-config" --libs gstreamer-1.0) - $("${TARGET}-pkg-config" --libs gstreamer-allocators-1.0) - $("${TARGET}-pkg-config" --libs gstreamer-app-1.0) - $("${TARGET}-pkg-config" --libs gstreamer-audio-1.0) - $("${TARGET}-pkg-config" --libs gstreamer-base-1.0) - $("${TARGET}-pkg-config" --libs gstreamer-fft-1.0) - $("${TARGET}-pkg-config" --libs gstreamer-pbutils-1.0) - $("${TARGET}-pkg-config" --libs gstreamer-tag-1.0) - $("${TARGET}-pkg-config" --libs gstreamer-transcoder-1.0) - $("${TARGET}-pkg-config" --libs gstreamer-video-1.0) + #$("${TARGET}-pkg-config" --libs gstreamer-1.0) + #$("${TARGET}-pkg-config" --libs gstreamer-allocators-1.0) + #$("${TARGET}-pkg-config" --libs gstreamer-app-1.0) + #$("${TARGET}-pkg-config" --libs gstreamer-audio-1.0) + #$("${TARGET}-pkg-config" --libs gstreamer-base-1.0) + #$("${TARGET}-pkg-config" --libs gstreamer-fft-1.0) + #$("${TARGET}-pkg-config" --libs gstreamer-pbutils-1.0) + #$("${TARGET}-pkg-config" --libs gstreamer-tag-1.0) + #$("${TARGET}-pkg-config" --libs gstreamer-transcoder-1.0) + #$("${TARGET}-pkg-config" --libs gstreamer-video-1.0) $("${TARGET}-pkg-config" --libs gtk+-3.0) $("${TARGET}-pkg-config" --libs harfbuzz-icu) $("${TARGET}-pkg-config" --libs libffi) @@ -117,9 +117,13 @@ cookbook_cmake \ -DCMAKE_CXX_STANDARD_LIBRARIES="${LIBS[*]}" \ -DENABLE_GAMEPAD=OFF \ -DENABLE_INTROSPECTION=OFF \ + -DENABLE_MEDIA_STREAM=OFF \ -DENABLE_JOURNALD_LOG=OFF \ -DENABLE_SPEECH_SYNTHESIS=OFF \ -DENABLE_SPELLCHECK=OFF \ + -DENABLE_WEB_AUDIO=OFF \ + -DENABLE_WEB_CODECS=OFF \ + -DENABLE_VIDEO=OFF \ -DPORT=GTK \ -DUNIX=1 \ -DUSE_AVIF=OFF \ diff --git a/recipes/wip/libs/other/webkitgtk3/redox.patch b/recipes/wip/libs/other/webkitgtk3/redox.patch index 6957fa82..8e1436a7 100644 --- a/recipes/wip/libs/other/webkitgtk3/redox.patch +++ b/recipes/wip/libs/other/webkitgtk3/redox.patch @@ -204,7 +204,7 @@ diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/platform.h source #else # error Unsupported platform. diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/system_utils.h source/Source/ThirdParty/ANGLE/src/common/system_utils.h ---- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/system_utils.h 2025-05-13 10:04:29.634120979 -0600 +--- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/system_utils.h 2024-05-30 05:59:22.953676200 -0600 +++ source/Source/ThirdParty/ANGLE/src/common/system_utils.h 2025-05-13 10:29:39.241586171 -0600 @@ -256,7 +256,9 @@ } @@ -330,7 +330,7 @@ diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/skia/src/ports/SkMemory_malloc.cpp #elif defined(SK_BUILD_FOR_WIN) diff -ruwN webkitgtk-2.49.1/Source/WebCore/page/Page.cpp source/Source/WebCore/page/Page.cpp --- webkitgtk-2.49.1/Source/WebCore/page/Page.cpp 2025-04-01 01:53:09.527295000 -0600 -+++ source/Source/WebCore/page/Page.cpp 2025-05-12 21:46:50.795767586 -0600 ++++ source/Source/WebCore/page/Page.cpp 2025-06-14 18:21:41.320992545 -0600 @@ -536,8 +536,10 @@ if (RefPtr scrollingCoordinator = m_scrollingCoordinator) scrollingCoordinator->pageDestroyed(); @@ -342,6 +342,18 @@ diff -ruwN webkitgtk-2.49.1/Source/WebCore/page/Page.cpp source/Source/WebCore/p checkedBackForward()->close(); if (!isUtilityPage()) +@@ -2981,9 +2983,11 @@ + return; + + m_shouldSuppressHDR = shouldSuppressHDR; ++ #if ENABLE(VIDEO) + forEachDocument([](auto& document) { + document.shouldSuppressHDRDidChange(); + }); ++ #endif + } + + #if ENABLE(MEDIA_STREAM) diff -ruwN webkitgtk-2.49.1/Source/WebCore/PlatformGTK.cmake source/Source/WebCore/PlatformGTK.cmake --- webkitgtk-2.49.1/Source/WebCore/PlatformGTK.cmake 2024-12-16 02:07:48.162613200 -0700 +++ source/Source/WebCore/PlatformGTK.cmake 2025-05-10 19:05:57.526658690 -0600 @@ -369,8 +381,8 @@ diff -ruwN webkitgtk-2.49.1/Source/WebCore/PlatformGTK.cmake source/Source/WebCo ${LIBSECRET_INCLUDE_DIRS} diff -ruwN webkitgtk-2.49.1/Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp source/Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp --- webkitgtk-2.49.1/Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp 2025-03-31 03:35:43.461813700 -0600 -+++ source/Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp 2025-05-13 09:38:21.678926942 -0600 -@@ -48,7 +48,7 @@ ++++ source/Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp 2025-06-15 20:53:04.313171066 -0600 +@@ -48,13 +48,13 @@ #include #endif @@ -379,6 +391,13 @@ diff -ruwN webkitgtk-2.49.1/Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp s #define MSG_NOSIGNAL 0 #endif + // Although it's available on Darwin, SOCK_SEQPACKET seems to work differently + // than in traditional Unix so fallback to STREAM on that platform. +-#if defined(SOCK_SEQPACKET) && !OS(DARWIN) ++#if defined(SOCK_SEQPACKET) && !OS(DARWIN) && !defined(__redox__) + #define SOCKET_TYPE SOCK_SEQPACKET + #else + #if USE(GLIB) diff -ruwN webkitgtk-2.49.1/Source/WebKit/PlatformGTK.cmake source/Source/WebKit/PlatformGTK.cmake --- webkitgtk-2.49.1/Source/WebKit/PlatformGTK.cmake 2025-03-05 03:09:47.273706000 -0700 +++ source/Source/WebKit/PlatformGTK.cmake 2025-05-10 18:54:43.437475299 -0600 From 953c6d595fadced589b3fca6af9e4deb869d52ca Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 16 Jun 2025 19:47:01 -0300 Subject: [PATCH 2623/3180] Add recipes --- recipes/wip/demos/ratzilla/recipe.toml | 9 +++++ .../games/open-world/cytopia-rs/recipe.toml | 5 +++ .../wip/games/open-world/cytopia/recipe.toml | 33 +++++++++++++++++++ .../wip/games/strategy/hammurabi/recipe.toml | 5 +++ .../wip/libs/graphics/libnoise/recipe.toml | 20 +++++++++++ recipes/wip/net/server/dora/recipe.toml | 8 +++++ recipes/wip/net/server/toe-beans/recipe.toml | 8 +++++ recipes/wip/time/zman/recipe.toml | 5 +++ 8 files changed, 93 insertions(+) create mode 100644 recipes/wip/demos/ratzilla/recipe.toml create mode 100644 recipes/wip/games/open-world/cytopia-rs/recipe.toml create mode 100644 recipes/wip/games/open-world/cytopia/recipe.toml create mode 100644 recipes/wip/games/strategy/hammurabi/recipe.toml create mode 100644 recipes/wip/libs/graphics/libnoise/recipe.toml create mode 100644 recipes/wip/net/server/dora/recipe.toml create mode 100644 recipes/wip/net/server/toe-beans/recipe.toml create mode 100644 recipes/wip/time/zman/recipe.toml diff --git a/recipes/wip/demos/ratzilla/recipe.toml b/recipes/wip/demos/ratzilla/recipe.toml new file mode 100644 index 00000000..e948e3bc --- /dev/null +++ b/recipes/wip/demos/ratzilla/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/orhun/ratzilla" +[build] +template = "custom" +script = """ +cookbook_cargo_packages animations canvas-stress-test canvas-waves \ +colors-rgb demo demo2 minimal pong text-area user-input website world-map +""" diff --git a/recipes/wip/games/open-world/cytopia-rs/recipe.toml b/recipes/wip/games/open-world/cytopia-rs/recipe.toml new file mode 100644 index 00000000..54340536 --- /dev/null +++ b/recipes/wip/games/open-world/cytopia-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://codeberg.org/Esther1024/pia-fork" +[build] +template = "cargo" diff --git a/recipes/wip/games/open-world/cytopia/recipe.toml b/recipes/wip/games/open-world/cytopia/recipe.toml new file mode 100644 index 00000000..edb20126 --- /dev/null +++ b/recipes/wip/games/open-world/cytopia/recipe.toml @@ -0,0 +1,33 @@ +#TODO not compiled or tested +# build instructions: https://github.com/CytopiaTeam/Cytopia/wiki/Build-instructions +[source] +git = "https://github.com/CytopiaTeam/Cytopia" +[build] +template = "custom" +dependencies = [ + "sdl2", + "sdl2-ttf", + "sdl2-image", + "openal", + "zlib", + "libogg", + "libvorbis", + "libpng", + "libnoise", + "imgui", +] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/games/strategy/hammurabi/recipe.toml b/recipes/wip/games/strategy/hammurabi/recipe.toml new file mode 100644 index 00000000..7cc74a05 --- /dev/null +++ b/recipes/wip/games/strategy/hammurabi/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/stjepangolemac/hammurabi" +[build] +template = "cargo" diff --git a/recipes/wip/libs/graphics/libnoise/recipe.toml b/recipes/wip/libs/graphics/libnoise/recipe.toml new file mode 100644 index 00000000..7602eeed --- /dev/null +++ b/recipes/wip/libs/graphics/libnoise/recipe.toml @@ -0,0 +1,20 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/qknight/libnoise" +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/net/server/dora/recipe.toml b/recipes/wip/net/server/dora/recipe.toml new file mode 100644 index 00000000..dbb9c463 --- /dev/null +++ b/recipes/wip/net/server/dora/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/bluecatengineering/dora" +[build] +template = "custom" +script = """ +cookbook_cargo_packages dora-bin dora-cfg +""" diff --git a/recipes/wip/net/server/toe-beans/recipe.toml b/recipes/wip/net/server/toe-beans/recipe.toml new file mode 100644 index 00000000..397f61f9 --- /dev/null +++ b/recipes/wip/net/server/toe-beans/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://codeberg.org/black-cat/toe-beans" +[build] +template = "custom" +script = """ +cookbook_cargo_packages toe-beans +""" diff --git a/recipes/wip/time/zman/recipe.toml b/recipes/wip/time/zman/recipe.toml new file mode 100644 index 00000000..0ff2a6fc --- /dev/null +++ b/recipes/wip/time/zman/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/azzamsa/zman" +[build] +template = "cargo" From e1de5cd57e3281f395df3a3376ae9ead7f720598 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 16 Jun 2025 20:28:22 -0300 Subject: [PATCH 2624/3180] Add imgui recipes --- recipes/wip/demos/imgui-examples/recipe.toml | 21 ++++++++++++++++++++ recipes/wip/libs/gui/imgui/recipe.toml | 21 ++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 recipes/wip/demos/imgui-examples/recipe.toml create mode 100644 recipes/wip/libs/gui/imgui/recipe.toml diff --git a/recipes/wip/demos/imgui-examples/recipe.toml b/recipes/wip/demos/imgui-examples/recipe.toml new file mode 100644 index 00000000..e7fd0be2 --- /dev/null +++ b/recipes/wip/demos/imgui-examples/recipe.toml @@ -0,0 +1,21 @@ +#TODO build sdl2 opengl examples +[source] +git = "https://github.com/Qix-/imgui" +branch = "cmake" +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/gui/imgui/recipe.toml b/recipes/wip/libs/gui/imgui/recipe.toml new file mode 100644 index 00000000..c59426e1 --- /dev/null +++ b/recipes/wip/libs/gui/imgui/recipe.toml @@ -0,0 +1,21 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Qix-/imgui" +branch = "cmake" +[build] +template = "custom" +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" From 46f3c73bec0137505273ab36f7fc7b6f6d3fd7a7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 16 Jun 2025 20:32:00 -0300 Subject: [PATCH 2625/3180] Update imgui recipes information --- recipes/wip/demos/imgui-examples/recipe.toml | 2 +- recipes/wip/libs/gui/imgui/recipe.toml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/wip/demos/imgui-examples/recipe.toml b/recipes/wip/demos/imgui-examples/recipe.toml index e7fd0be2..e29d3b73 100644 --- a/recipes/wip/demos/imgui-examples/recipe.toml +++ b/recipes/wip/demos/imgui-examples/recipe.toml @@ -1,4 +1,4 @@ -#TODO build sdl2 opengl examples +#TODO build sdl2 opengl examples, see: https://github.com/ocornut/imgui/pull/3027 [source] git = "https://github.com/Qix-/imgui" branch = "cmake" diff --git a/recipes/wip/libs/gui/imgui/recipe.toml b/recipes/wip/libs/gui/imgui/recipe.toml index c59426e1..927ca618 100644 --- a/recipes/wip/libs/gui/imgui/recipe.toml +++ b/recipes/wip/libs/gui/imgui/recipe.toml @@ -1,4 +1,5 @@ #TODO not compiled or tested +# cmake information: https://github.com/ocornut/imgui/pull/3027 [source] git = "https://github.com/Qix-/imgui" branch = "cmake" From 85b04a5bfd6d31e349df344e0935f95183267bed Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 18 Jun 2025 16:52:17 -0600 Subject: [PATCH 2626/3180] libxkbcommon: compile dynamically --- .../wip/libs/other/libxkbcommon/recipe.toml | 44 +------------------ 1 file changed, 2 insertions(+), 42 deletions(-) diff --git a/recipes/wip/libs/other/libxkbcommon/recipe.toml b/recipes/wip/libs/other/libxkbcommon/recipe.toml index 9fc3ebf5..119193b0 100644 --- a/recipes/wip/libs/other/libxkbcommon/recipe.toml +++ b/recipes/wip/libs/other/libxkbcommon/recipe.toml @@ -1,4 +1,3 @@ -#TODO missing script for Meson, see https://github.com/xkbcommon/libxkbcommon#building [source] tar = "https://xkbcommon.org/download/libxkbcommon-1.7.0.tar.xz" b3sum = "5001ca0b8562feeef2010bf16c05657e3875fda3ed5fdedbf48b9135e5cdfcbc" @@ -11,47 +10,8 @@ dependencies = [ "zlib", ] script = """ -# TODO: Fix this annoying shite -echo "[binaries]" > cross_file.txt -echo "c = '${CC}'" >> cross_file.txt -echo "cpp = '${CXX}'" >> cross_file.txt -echo "ar = '${AR}'" >> cross_file.txt -echo "strip = '${STRIP}'" >> cross_file.txt -echo "pkgconfig = '${TARGET}-pkg-config'" >> cross_file.txt - -echo "[host_machine]" >> cross_file.txt -echo "system = 'redox'" >> cross_file.txt -echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt -echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt -echo "endian = 'little'" >> cross_file.txt - -echo "[paths]" >> cross_file.txt -echo "prefix = '${COOKBOOK_SYSROOT}'" >> cross_file.txt -echo "libdir = 'lib'" >> cross_file.txt -echo "bindir = 'bin'" >> cross_file.txt - -unset AR -unset AS -unset CC -unset CXX -unset LD -unset NM -unset OBJCOPY -unset OBJDUMP -unset PKG_CONFIG -unset RANLIB -unset READELF -unset STRIP - -meson setup "${COOKBOOK_SOURCE}" _build \ - --cross-file cross_file.txt \ - --buildtype release \ - --strip \ - -Ddefault_library=static \ - -Dprefix=/ \ - -Dlibdir=lib \ +DYNAMIC_INIT +cookbook_meson \ -Denable-wayland=false \ -Denable-x11=false -ninja -C _build -v -DESTDIR="${COOKBOOK_STAGE}" ninja -C _build -v install """ From 48766ebaf7a8826a1e727f735ccfd40d2212473d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 18 Jun 2025 16:53:00 -0600 Subject: [PATCH 2627/3180] cosmic-files: depend on libxkbcommon --- recipes/tools/cosmic-files/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/tools/cosmic-files/recipe.toml b/recipes/tools/cosmic-files/recipe.toml index c4236584..49e96c33 100644 --- a/recipes/tools/cosmic-files/recipe.toml +++ b/recipes/tools/cosmic-files/recipe.toml @@ -7,6 +7,7 @@ template = "custom" dependencies = [ "gettext", "libiconv", + "libxkbcommon", ] script = """ DYNAMIC_INIT From ab8e300cf698eccf7a0fc7773c62980a87702a93 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 18 Jun 2025 20:47:40 -0600 Subject: [PATCH 2628/3180] cosmic-store: depend on libxkbcommon --- recipes/tools/cosmic-store/recipe.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/tools/cosmic-store/recipe.toml b/recipes/tools/cosmic-store/recipe.toml index 5b1424fe..1eb1406f 100644 --- a/recipes/tools/cosmic-store/recipe.toml +++ b/recipes/tools/cosmic-store/recipe.toml @@ -6,6 +6,7 @@ branch = "master" template = "custom" dependencies = [ "gettext", + "libxkbcommon", "openssl1", ] script = """ @@ -21,4 +22,4 @@ mkdir -pv "${COOKBOOK_STAGE}/usr/share/metainfo/" cp -v "${COOKBOOK_SOURCE}/res/${APPID}.metainfo.xml" "${COOKBOOK_STAGE}/usr/share/metainfo/" mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" cp -rv "${COOKBOOK_SOURCE}/res/icons/hicolor/" "${COOKBOOK_STAGE}/usr/share/icons/" -""" \ No newline at end of file +""" From e057c5aa8a56122ae8b137f0604b41990ccd4f8a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 19 Jun 2025 21:01:33 -0300 Subject: [PATCH 2629/3180] Add recipes --- recipes/wip/db/jdbrowser/recipe.toml | 5 +++++ recipes/wip/dev/analysis/feluda/recipe.toml | 5 +++++ recipes/wip/dev/framework/sphere/recipe.toml | 11 +++++++++++ recipes/wip/dev/lang/xylo/recipe.toml | 10 ++++++++++ recipes/wip/games/strategy/rustoku/recipe.toml | 8 ++++++++ recipes/wip/net/email/neverest/recipe.toml | 5 +++++ recipes/wip/net/server/nea/recipe.toml | 9 +++++++++ recipes/wip/search/lstr/recipe.toml | 5 +++++ recipes/wip/terminal/loriini/recipe.toml | 5 +++++ recipes/wip/terminal/tattoy/recipe.toml | 8 ++++++++ 10 files changed, 71 insertions(+) create mode 100644 recipes/wip/db/jdbrowser/recipe.toml create mode 100644 recipes/wip/dev/analysis/feluda/recipe.toml create mode 100644 recipes/wip/dev/framework/sphere/recipe.toml create mode 100644 recipes/wip/dev/lang/xylo/recipe.toml create mode 100644 recipes/wip/games/strategy/rustoku/recipe.toml create mode 100644 recipes/wip/net/email/neverest/recipe.toml create mode 100644 recipes/wip/net/server/nea/recipe.toml create mode 100644 recipes/wip/search/lstr/recipe.toml create mode 100644 recipes/wip/terminal/loriini/recipe.toml create mode 100644 recipes/wip/terminal/tattoy/recipe.toml diff --git a/recipes/wip/db/jdbrowser/recipe.toml b/recipes/wip/db/jdbrowser/recipe.toml new file mode 100644 index 00000000..6f6c24a1 --- /dev/null +++ b/recipes/wip/db/jdbrowser/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Jkeyuk/JDbrowser" +[build] +template = "cargo" diff --git a/recipes/wip/dev/analysis/feluda/recipe.toml b/recipes/wip/dev/analysis/feluda/recipe.toml new file mode 100644 index 00000000..ded0ba6e --- /dev/null +++ b/recipes/wip/dev/analysis/feluda/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/anistark/feluda" +[build] +template = "cargo" diff --git a/recipes/wip/dev/framework/sphere/recipe.toml b/recipes/wip/dev/framework/sphere/recipe.toml new file mode 100644 index 00000000..2874ae49 --- /dev/null +++ b/recipes/wip/dev/framework/sphere/recipe.toml @@ -0,0 +1,11 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Nakadra/sphere-runtime" +[build] +template = "custom" +script = """ +cookbook_cargo +mkdir -pv "${COOKBOOK_STAGE}/usr/share/sphere" +cp -rv "${COOKBOOK_SOURCE}/*.sphere" "${COOKBOOK_STAGE}/usr/share/sphere" +echo "entrypoint = "echo 'Hello, from my first Sphere!'"" > "${COOKBOOK_STAGE}/usr/share/sphere/hello.sphere" +""" diff --git a/recipes/wip/dev/lang/xylo/recipe.toml b/recipes/wip/dev/lang/xylo/recipe.toml new file mode 100644 index 00000000..313ee089 --- /dev/null +++ b/recipes/wip/dev/lang/xylo/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/giraffekey/xylo" +[build] +template = "custom" +script = """ +cookbook_cargo +mkdir -pv "${COOKBOOK_STAGE}/usr/share/xylo" +cp -rv "${COOKBOOK_SOURCE}/example.xylo" "${COOKBOOK_STAGE}/usr/share/xylo" +""" diff --git a/recipes/wip/games/strategy/rustoku/recipe.toml b/recipes/wip/games/strategy/rustoku/recipe.toml new file mode 100644 index 00000000..05e4371e --- /dev/null +++ b/recipes/wip/games/strategy/rustoku/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/huangsam/rustoku" +[build] +template = "custom" +script = """ +cookbook_cargo_packages rustoku-cli +""" diff --git a/recipes/wip/net/email/neverest/recipe.toml b/recipes/wip/net/email/neverest/recipe.toml new file mode 100644 index 00000000..7562958c --- /dev/null +++ b/recipes/wip/net/email/neverest/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/pimalaya/neverest" +[build] +template = "cargo" diff --git a/recipes/wip/net/server/nea/recipe.toml b/recipes/wip/net/server/nea/recipe.toml new file mode 100644 index 00000000..82f20a54 --- /dev/null +++ b/recipes/wip/net/server/nea/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +#TODO require the mold liker to be installed +[source] +git = "https://github.com/tweedegolf/nea" +[build] +template = "custom" +script = """ +cookbook_cargo_packages nea +""" diff --git a/recipes/wip/search/lstr/recipe.toml b/recipes/wip/search/lstr/recipe.toml new file mode 100644 index 00000000..b91c05a1 --- /dev/null +++ b/recipes/wip/search/lstr/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/bgreenwell/lstr" +[build] +template = "cargo" diff --git a/recipes/wip/terminal/loriini/recipe.toml b/recipes/wip/terminal/loriini/recipe.toml new file mode 100644 index 00000000..77b9afdf --- /dev/null +++ b/recipes/wip/terminal/loriini/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/kolja/loriini" +[build] +template = "cargo" diff --git a/recipes/wip/terminal/tattoy/recipe.toml b/recipes/wip/terminal/tattoy/recipe.toml new file mode 100644 index 00000000..4dfe5668 --- /dev/null +++ b/recipes/wip/terminal/tattoy/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/tattoy-org/tattoy" +[build] +template = "custom" +script = """ +cookbook_cargo_packages tattoy +""" From 6f13b6a05dccde2fddd080b604f8c3c143f56e85 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 20 Jun 2025 15:35:26 -0300 Subject: [PATCH 2630/3180] Fix the myfiles recipe script --- recipes/other/myfiles/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/other/myfiles/recipe.toml b/recipes/other/myfiles/recipe.toml index 201335c7..3cb6ba09 100644 --- a/recipes/other/myfiles/recipe.toml +++ b/recipes/other/myfiles/recipe.toml @@ -2,5 +2,5 @@ template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/home/user" -cp -rv "${COOKBOOK_SOURCE}/*" "${COOKBOOK_STAGE}/home/user" +cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/home/user" """ From aced42af1261b8a4cd4e69e99799ebd105141075 Mon Sep 17 00:00:00 2001 From: Ron Williams Date: Fri, 20 Jun 2025 19:14:26 -0700 Subject: [PATCH 2631/3180] Add POSIX test suite, improve gcc recipe --- recipes/dev/gcc13/recipe.toml | 5 +---- recipes/tests/openposixtestsuite/recipe.toml | 12 ++++++++++++ 2 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 recipes/tests/openposixtestsuite/recipe.toml diff --git a/recipes/dev/gcc13/recipe.toml b/recipes/dev/gcc13/recipe.toml index b6942555..96281c0f 100644 --- a/recipes/dev/gcc13/recipe.toml +++ b/recipes/dev/gcc13/recipe.toml @@ -41,8 +41,5 @@ COOKBOOK_CONFIGURE_FLAGS=( "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" all-gcc "${COOKBOOK_MAKE}" install-gcc DESTDIR="${COOKBOOK_STAGE}" ln -s "gcc" "${COOKBOOK_STAGE}/bin/cc" -pushd "${COOKBOOK_STAGE}" -# The symbolic link will be correct on Redox -ln -s "/libexec/gcc/${GNU_TARGET}/13.2.0/cc1" "./bin/cc1" -popd +ln -s "/libexec/gcc/${GNU_TARGET}/13.2.0/cc1" "${COOKBOOK_STAGE}/bin/cc1" """ diff --git a/recipes/tests/openposixtestsuite/recipe.toml b/recipes/tests/openposixtestsuite/recipe.toml new file mode 100644 index 00000000..7f817630 --- /dev/null +++ b/recipes/tests/openposixtestsuite/recipe.toml @@ -0,0 +1,12 @@ +[source] +git = "https://gitlab.redox-os.org/rw_van/openposixtestsuite.git" +branch = "redox" + +[build] +template = "custom" +script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ +# "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" build-tests +mkdir -pv "${COOKBOOK_STAGE}/share/openposixtests" +rsync -av --delete . "${COOKBOOK_STAGE}/share/openposixtestsuite" +""" From 62c96897c037f7903f5df7b27319f6ed1c7ee93b Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sun, 22 Jun 2025 16:03:48 +0200 Subject: [PATCH 2632/3180] Remove newlib recipes We use relibc as libc rather than newlib. The redox newlib fork is also archived. --- recipes/other/newlib/recipe.sh | 40 ------------------------------ recipes/other/newlibtest/recipe.sh | 27 -------------------- 2 files changed, 67 deletions(-) delete mode 100644 recipes/other/newlib/recipe.sh delete mode 100644 recipes/other/newlibtest/recipe.sh diff --git a/recipes/other/newlib/recipe.sh b/recipes/other/newlib/recipe.sh deleted file mode 100644 index acb5d422..00000000 --- a/recipes/other/newlib/recipe.sh +++ /dev/null @@ -1,40 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/newlib.git -BRANCH=redox - -function recipe_version { - printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" - skip=1 -} - -function recipe_build { - pushd newlib/libc/sys - aclocal-1.11 -I ../.. - autoconf - automake-1.11 --cygnus Makefile - popd - - pushd newlib/libc/sys/redox - aclocal-1.11 -I ../../.. - autoconf - automake-1.11 --cygnus Makefile - popd - - CC= ./configure --build=${BUILD} --target="${HOST}" --prefix=/ - "$REDOX_MAKE" all -j"$($NPROC)" - - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" install - cd "$dest" - mv $HOST/* ./ - rmdir $HOST - skip=1 -} diff --git a/recipes/other/newlibtest/recipe.sh b/recipes/other/newlibtest/recipe.sh deleted file mode 100644 index 33827109..00000000 --- a/recipes/other/newlibtest/recipe.sh +++ /dev/null @@ -1,27 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/newlibtest.git -BUILD_DEPENDS=(newlib) - -function recipe_version { - printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-static -nostdinc -I $sysroot/include -I /usr/lib/gcc/x86_64-unknown-redox/7.0.1/include/ -nostdlib -L $sysroot/lib" - export CRT="$sysroot/lib/crt0.o" - export CLIBS="-lc" - "$REDOX_MAKE" all -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - "$REDOX_MAKE" DESTDIR="$dest" prefix=/ install - skip=1 -} From c5c0d78533c2d4f7eb100f40589b28caf27029e3 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sun, 22 Jun 2025 16:04:54 +0200 Subject: [PATCH 2633/3180] Remove webrender recipe While it has some demo executables, it is meant to be used as rust dependency rather than a standalone library. And in fact can't be installed as standalone library. --- recipes/libs/webrender/recipe.sh | 32 -------------------------------- 1 file changed, 32 deletions(-) delete mode 100644 recipes/libs/webrender/recipe.sh diff --git a/recipes/libs/webrender/recipe.sh b/recipes/libs/webrender/recipe.sh deleted file mode 100644 index a275c3fb..00000000 --- a/recipes/libs/webrender/recipe.sh +++ /dev/null @@ -1,32 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/webrender.git -GIT_UPSTREAM=https://github.com/servo/webrender.git -BRANCH=redox -BUILD_DEPENDS=(freetype2 libpng llvm18 mesa zlib) - -function recipe_build { - sysroot="$(realpath ../sysroot)" - for rs in $(find examples/ -maxdepth 1 -type f -name '*.rs') - do - bin="$(basename "$rs" .rs)" - set -x - cargo rustc --target "$TARGET" --release --manifest-path examples/Cargo.toml --bin "$bin" \ - -- \ - -L "${sysroot}/lib" \ - -l static=freetype \ - -l static=png \ - -C link-args="-Wl,-Bstatic $("${PKG_CONFIG}" --libs osmesa) -lz -lstdc++ -lc -lgcc" - set +x - done - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - mkdir -pv "$dest/bin" - for rs in $(find examples/ -maxdepth 1 -type f -name '*.rs') - do - bin="$(basename "$rs" .rs)" - "${STRIP}" -v "target/$TARGET/release/$bin" -o "$dest/bin/webrender_$bin" - done - skip=1 -} From ac3d53cba3d4726c3b341f9f5254069d49028aa9 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sun, 22 Jun 2025 17:07:35 +0000 Subject: [PATCH 2634/3180] Add terminfo as nano package deps --- recipes/tools/nano/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/recipes/tools/nano/recipe.toml b/recipes/tools/nano/recipe.toml index 1d23c047..b5877656 100644 --- a/recipes/tools/nano/recipe.toml +++ b/recipes/tools/nano/recipe.toml @@ -9,3 +9,8 @@ script = """ export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" cookbook_configure """ + +[package] +dependencies = [ + "terminfo" +] From fc794e482d1d82b3da2f52f66ff8b7681978b0ce Mon Sep 17 00:00:00 2001 From: auronandace Date: Tue, 24 Jun 2025 21:03:45 +0100 Subject: [PATCH 2635/3180] move halloy and tiny to chat --- recipes/wip/net/other/halloy/recipe.toml | 8 -------- recipes/wip/net/other/tiny/recipe.toml | 8 -------- 2 files changed, 16 deletions(-) delete mode 100644 recipes/wip/net/other/halloy/recipe.toml delete mode 100644 recipes/wip/net/other/tiny/recipe.toml diff --git a/recipes/wip/net/other/halloy/recipe.toml b/recipes/wip/net/other/halloy/recipe.toml deleted file mode 100644 index a25cebc5..00000000 --- a/recipes/wip/net/other/halloy/recipe.toml +++ /dev/null @@ -1,8 +0,0 @@ -#TODO xdg-home crate error (after cargo update) -[source] -git = "https://github.com/squidowl/halloy" -[build] -template = "cargo" -dependencies = [ - "openssl1", -] diff --git a/recipes/wip/net/other/tiny/recipe.toml b/recipes/wip/net/other/tiny/recipe.toml deleted file mode 100644 index e262610b..00000000 --- a/recipes/wip/net/other/tiny/recipe.toml +++ /dev/null @@ -1,8 +0,0 @@ -#TODO compiled but not tested (after cargo update and a patch on ring) -[source] -git = "https://github.com/osa1/tiny" -[build] -template = "custom" -script = """ -cookbook_cargo_packages tiny -""" From 80251d5d5a3dfec449be08390955a5952be89b3d Mon Sep 17 00:00:00 2001 From: auronandace Date: Tue, 24 Jun 2025 21:07:25 +0100 Subject: [PATCH 2636/3180] git add halloy and tiny in chat --- recipes/wip/net/chat/halloy/recipe.toml | 8 ++++++++ recipes/wip/net/chat/tiny/recipe.toml | 8 ++++++++ 2 files changed, 16 insertions(+) create mode 100644 recipes/wip/net/chat/halloy/recipe.toml create mode 100644 recipes/wip/net/chat/tiny/recipe.toml diff --git a/recipes/wip/net/chat/halloy/recipe.toml b/recipes/wip/net/chat/halloy/recipe.toml new file mode 100644 index 00000000..a25cebc5 --- /dev/null +++ b/recipes/wip/net/chat/halloy/recipe.toml @@ -0,0 +1,8 @@ +#TODO xdg-home crate error (after cargo update) +[source] +git = "https://github.com/squidowl/halloy" +[build] +template = "cargo" +dependencies = [ + "openssl1", +] diff --git a/recipes/wip/net/chat/tiny/recipe.toml b/recipes/wip/net/chat/tiny/recipe.toml new file mode 100644 index 00000000..e262610b --- /dev/null +++ b/recipes/wip/net/chat/tiny/recipe.toml @@ -0,0 +1,8 @@ +#TODO compiled but not tested (after cargo update and a patch on ring) +[source] +git = "https://github.com/osa1/tiny" +[build] +template = "custom" +script = """ +cookbook_cargo_packages tiny +""" From 88050989a9830d07f183c1033d50017c11d384a2 Mon Sep 17 00:00:00 2001 From: David Campbell Date: Wed, 25 Jun 2025 10:50:24 -0400 Subject: [PATCH 2637/3180] Add hnefatafl-client --- .../strategy/hnefatafl-copenhagen/recipe.toml | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 recipes/wip/games/strategy/hnefatafl-copenhagen/recipe.toml diff --git a/recipes/wip/games/strategy/hnefatafl-copenhagen/recipe.toml b/recipes/wip/games/strategy/hnefatafl-copenhagen/recipe.toml new file mode 100644 index 00000000..9901c75f --- /dev/null +++ b/recipes/wip/games/strategy/hnefatafl-copenhagen/recipe.toml @@ -0,0 +1,31 @@ +# TODO: +# 1. The CJK and runes fonts don't load. +# 2. On a button press two characters are read in instead of one. +# 3. Backspace does not work. +# 4. The command line prompt prints 'deprecated: legacy path "time:4" used by /usr/games/hnefatafl-client'. +# 5. TcpStream.shutdown(): shutdown call failed: Os { code: 38, kind: Unsupported, message: "Function not implemented" } + +[source] +git = "https://github.com/dcampbell24/hnefatafl" + +[build] +template = "custom" +script = """ +"${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/${PACKAGE_PATH}/Cargo.toml" \ + --example hnefatafl-client \ + --release \ + --no-default-features + +mkdir -pv "${COOKBOOK_STAGE}/usr/bin" +cp -v \ + "target/${TARGET}/release/examples/hnefatafl-client" \ + "${COOKBOOK_STAGE}/usr/bin/hnefatafl-client" + +mkdir -pv "${COOKBOOK_STAGE}"/usr/games +mkdir -pv "${COOKBOOK_STAGE}"/ui/apps +mkdir -pv "${COOKBOOK_STAGE}"/ui/icons/apps +cp -rv "${COOKBOOK_SOURCE}"/icons/king_256x256.png "${COOKBOOK_STAGE}"/ui/icons/apps/hnefatafl-king_256x256.png +cp -rv "${COOKBOOK_SOURCE}"/packages/redox/manifest "${COOKBOOK_STAGE}"/ui/apps/hnefatafl-client +mv "${COOKBOOK_STAGE}"/usr/bin/hnefatafl-client "${COOKBOOK_STAGE}"/usr/games/hnefatafl-client +""" From 8f82765e86b58202916870a294f1892e1a0fe713 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sat, 28 Jun 2025 15:11:40 +0000 Subject: [PATCH 2638/3180] Skip man pages build for openssl1 --- recipes/libs/openssl1/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/libs/openssl1/recipe.toml b/recipes/libs/openssl1/recipe.toml index 2666b386..d96b7ec9 100644 --- a/recipes/libs/openssl1/recipe.toml +++ b/recipes/libs/openssl1/recipe.toml @@ -17,6 +17,6 @@ COOKBOOK_CONFIGURE_FLAGS=( export CC="${TARGET}-gcc" "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" "${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" -"${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" +"${COOKBOOK_MAKE}" install_sw install_ssldirs DESTDIR="${COOKBOOK_STAGE}" rm -rfv "${COOKBOOK_STAGE}/"{share,ssl} """ From 090cb71aeaf9885382e2ce359149cef562cea71b Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 28 Jun 2025 19:56:57 +0200 Subject: [PATCH 2639/3180] Remove reference to dnsd from the base recipe It no longer exists. --- recipes/core/base/recipe.toml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/recipes/core/base/recipe.toml b/recipes/core/base/recipe.toml index 206e1a8d..169fc2a8 100644 --- a/recipes/core/base/recipe.toml +++ b/recipes/core/base/recipe.toml @@ -17,9 +17,7 @@ done "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/netstack/Cargo.toml" \ ${build_flags} -for bin in smolnetd dnsd; do - cp -v \ - "target/${TARGET}/${build_type}/${bin}" \ - "${COOKBOOK_STAGE}/usr/bin/${bin}" -done +cp -v \ + "target/${TARGET}/${build_type}/smolnetd" \ + "${COOKBOOK_STAGE}/usr/bin/smolnetd" """ From da44aa7d3a9b322b930d69afc450cda76374cf66 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 28 Jun 2025 21:06:51 +0200 Subject: [PATCH 2640/3180] Use a recipe.toml file for sdl-player Sdl-player currently doesn't build. Neither before nor after this change. --- recipes/video/sdl-player/recipe.sh | 27 --------------------------- recipes/video/sdl-player/recipe.toml | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+), 27 deletions(-) delete mode 100644 recipes/video/sdl-player/recipe.sh create mode 100644 recipes/video/sdl-player/recipe.toml diff --git a/recipes/video/sdl-player/recipe.sh b/recipes/video/sdl-player/recipe.sh deleted file mode 100644 index 2d419ad6..00000000 --- a/recipes/video/sdl-player/recipe.sh +++ /dev/null @@ -1,27 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/sdl-player.git -BUILD_DEPENDS=(ffmpeg6 liborbital sdl1 zlib) - -function recipe_version { - echo "1.0.0" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CPPFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib -static" - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - mkdir -pv "$dest/bin" - cp -v "player" "$dest/bin/sdl-player" - skip=1 -} diff --git a/recipes/video/sdl-player/recipe.toml b/recipes/video/sdl-player/recipe.toml new file mode 100644 index 00000000..5f8ee857 --- /dev/null +++ b/recipes/video/sdl-player/recipe.toml @@ -0,0 +1,20 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/sdl-player.git" + +[build] +template = "custom" +dependencies = [ + "ffmpeg6", + "liborbital", + "sdl1", + "zlib" +] +script = """ +rsync -av --delete --exclude='.git' "${COOKBOOK_SOURCE}/" ./ +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include" +export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib -static" +"${COOKBOOK_MAKE}" -j"$(${NPROC})" + +mkdir -pv "${COOKBOOK_STAGE}/bin" +cp -v "player" "${COOKBOOK_STAGE}/bin/sdl-player" +""" From 157fc07a480e5ce3909051d344e631af20b9ec97 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 28 Jun 2025 21:43:59 +0200 Subject: [PATCH 2641/3180] Use a recipe.toml file for sdl2-gears It crashes at runtime, but this already happened before this change. --- recipes/demos/sdl2-gears/recipe.sh | 38 ---------------------------- recipes/demos/sdl2-gears/recipe.toml | 26 +++++++++++++++++++ 2 files changed, 26 insertions(+), 38 deletions(-) delete mode 100644 recipes/demos/sdl2-gears/recipe.sh create mode 100644 recipes/demos/sdl2-gears/recipe.toml diff --git a/recipes/demos/sdl2-gears/recipe.sh b/recipes/demos/sdl2-gears/recipe.sh deleted file mode 100644 index b9a661dd..00000000 --- a/recipes/demos/sdl2-gears/recipe.sh +++ /dev/null @@ -1,38 +0,0 @@ -BUILD_DEPENDS=(sdl2-image sdl2-mixer sdl2-ttf sdl2 liborbital llvm18 mesa freetype2 libjpeg libpng libogg libvorbis zlib) - -function recipe_version { - printf "1.0.0" - skip=1 -} - -function recipe_prepare { - rm -rf source - mkdir source - cp gears.c source - mkdir source/assets - cp assets/* source/assets -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - set -x - "${CXX}" -O2 -I "$sysroot/include" -L "$sysroot/lib" gears.c -o sdl2_gears -dynamic -lSDL2_image -lSDL2_mixer -lSDL2_ttf -lSDL2 -lorbital $("${PKG_CONFIG}" --libs osmesa) -lfreetype -lpng -ljpeg -lvorbisfile -lvorbis -logg -lz - set +x - skip=1 -} - -function recipe_clean { - echo "skipping clean" - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - mkdir -pv "$dest/usr/games/sdl2_gears" - mkdir -pv "$dest/usr/games/sdl2_gears/assets" - cp -v "sdl2_gears" "$dest/usr/games/sdl2_gears/sdl2_gears" - cp -v "assets/image.png" "$dest/usr/games/sdl2_gears/assets/image.png" - cp -v "assets/music.wav" "$dest/usr/games/sdl2_gears/assets/music.wav" - cp -v "assets/font.ttf" "$dest/usr/games/sdl2_gears/assets/font.ttf" - skip=1 -} diff --git a/recipes/demos/sdl2-gears/recipe.toml b/recipes/demos/sdl2-gears/recipe.toml new file mode 100644 index 00000000..49127066 --- /dev/null +++ b/recipes/demos/sdl2-gears/recipe.toml @@ -0,0 +1,26 @@ +[build] +template = "custom" +dependencies = [ + "sdl2-image", + "sdl2-mixer", + "sdl2-ttf", + "sdl2", + "liborbital", + "llvm18", + "mesa", + "freetype2", + "libjpeg", + "libpng", + "libogg", + "libvorbis", + "zlib" +] +script = """ +cp "${COOKBOOK_SOURCE}/../gears.c" ./gears.c +rsync -av --delete --exclude='.git' "${COOKBOOK_SOURCE}/../assets" ./assets +"${CXX}" -O2 -I "${COOKBOOK_SYSROOT}/include" -L "${COOKBOOK_SYSROOT}/lib" gears.c -o sdl2_gears -dynamic -lSDL2_image -lSDL2_mixer -lSDL2_ttf -lSDL2 -lorbital $("${PKG_CONFIG}" --libs osmesa) -lfreetype -lpng -ljpeg -lvorbisfile -lvorbis -logg -lz +rm -rf "${COOKBOOK_STAGE}/usr/games/sdl2_gears" +mkdir -pv "${COOKBOOK_STAGE}/usr/games/sdl2_gears" +cp -v "sdl2_gears" "${COOKBOOK_STAGE}/usr/games/sdl2_gears/sdl2_gears" +cp -rv "assets" "${COOKBOOK_STAGE}/usr/games/sdl2_gears/assets" +""" From d99aef95ce1e0676b25e49f415822411ebc361ec Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 28 Jun 2025 21:50:55 +0200 Subject: [PATCH 2642/3180] Use a recipe.toml file for osdemo --- recipes/demos/osdemo/recipe.sh | 32 -------------------------------- recipes/demos/osdemo/recipe.toml | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 32 deletions(-) delete mode 100644 recipes/demos/osdemo/recipe.sh create mode 100644 recipes/demos/osdemo/recipe.toml diff --git a/recipes/demos/osdemo/recipe.sh b/recipes/demos/osdemo/recipe.sh deleted file mode 100644 index c222548f..00000000 --- a/recipes/demos/osdemo/recipe.sh +++ /dev/null @@ -1,32 +0,0 @@ -BUILD_DEPENDS=(liborbital llvm18 mesa mesa-glu zlib) - -function recipe_version { - printf "1.0.0" - skip=1 -} - -function recipe_prepare { - rm -rf source - mkdir source - cp osdemo.c source -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - set -x - "${CXX}" -O2 -I "$sysroot/include" -L "$sysroot/lib" osdemo.c -o osdemo -static -lorbital $("${PKG_CONFIG}" --libs glu) -lz - set +x - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - mkdir -pv "$dest/bin" - cp -v "osdemo" "$dest/bin/osdemo" - skip=1 -} diff --git a/recipes/demos/osdemo/recipe.toml b/recipes/demos/osdemo/recipe.toml new file mode 100644 index 00000000..f400a6f3 --- /dev/null +++ b/recipes/demos/osdemo/recipe.toml @@ -0,0 +1,15 @@ +[build] +template = "custom" +dependencies = [ + "liborbital", + "llvm18", + "mesa", + "mesa-glu", + "zlib" +] +script = """ +cp "${COOKBOOK_SOURCE}/../osdemo.c" ./osdemo.c +"${CXX}" -O2 -I "${COOKBOOK_SYSROOT}/include" -L "${COOKBOOK_SYSROOT}/lib" osdemo.c -o osdemo -static -lorbital $("${PKG_CONFIG}" --libs glu) -lz +mkdir -pv "${COOKBOOK_STAGE}/usr/bin" +cp -v "osdemo" "${COOKBOOK_STAGE}/usr/bin/osdemo" +""" From 56a897e40dce5e3a9b8b12aa7d041facf3ddfef0 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 28 Jun 2025 21:59:04 +0200 Subject: [PATCH 2643/3180] Use a recipe.toml file for ncdu This gives a linker error about multiple definitions both before and after. --- recipes/tui/ncdu/recipe.sh | 29 ----------------------------- recipes/tui/ncdu/recipe.toml | 22 ++++++++++++++++++++++ 2 files changed, 22 insertions(+), 29 deletions(-) delete mode 100644 recipes/tui/ncdu/recipe.sh create mode 100644 recipes/tui/ncdu/recipe.toml diff --git a/recipes/tui/ncdu/recipe.sh b/recipes/tui/ncdu/recipe.sh deleted file mode 100644 index 4906dc59..00000000 --- a/recipes/tui/ncdu/recipe.sh +++ /dev/null @@ -1,29 +0,0 @@ -VERSION=1.13 -TAR=https://dev.yorhel.nl/download/ncdu-$VERSION.tar.gz -BUILD_DEPENDS=(ncurses) -DEPENDS=(terminfo) - -function recipe_version { - echo "$VERSION" - skip=1 -} -function recipe_build { - sysroot="$PWD/../sysroot" - export CPPFLAGS="-I$sysroot/include -I$sysroot/include/ncurses" - export LDFLAGS="-L$sysroot/lib -static" - ./configure \ - --build=${BUILD} \ - --host="$HOST" \ - --prefix=/ - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} -function recipe_stage { - dest="$(realpath "$1")" - "$REDOX_MAKE" DESTDIR="$dest" install - skip=1 -} diff --git a/recipes/tui/ncdu/recipe.toml b/recipes/tui/ncdu/recipe.toml new file mode 100644 index 00000000..17daab77 --- /dev/null +++ b/recipes/tui/ncdu/recipe.toml @@ -0,0 +1,22 @@ +[source] +tar = "https://dev.yorhel.nl/download/ncdu-1.13.tar.gz" +blake3 = "f6d771e78c87202a051e3357820be3c63ea895ff4f07edf14c6f21fb18afceed" + +[build] +template = "custom" +dependencies = [ + "ncurses", + "terminfo" +] +script = """ +rsync -av --delete --exclude='.git' "${COOKBOOK_SOURCE}/" ./ +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/ncurses" +export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib -static" +./configure \ + --build=${BUILD} \ + --host="${TARGET}" \ + --prefix=/ +"${COOKBOOK_MAKE}" -j"$(${NPROC})" + +"${COOKBOOK_MAKE}" DESTDIR="${COOKBOOK_STAGE}" install +""" From 3a336cfa2d12cdff96aa2172521d0bfedbe937e6 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sun, 29 Jun 2025 12:03:36 +0200 Subject: [PATCH 2644/3180] Correctly mark terminfo as runtime dependency for ncdu --- recipes/tui/ncdu/recipe.toml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/recipes/tui/ncdu/recipe.toml b/recipes/tui/ncdu/recipe.toml index 17daab77..c429a3a2 100644 --- a/recipes/tui/ncdu/recipe.toml +++ b/recipes/tui/ncdu/recipe.toml @@ -1,13 +1,11 @@ [source] tar = "https://dev.yorhel.nl/download/ncdu-1.13.tar.gz" blake3 = "f6d771e78c87202a051e3357820be3c63ea895ff4f07edf14c6f21fb18afceed" +dependencies = ["terminfo"] [build] template = "custom" -dependencies = [ - "ncurses", - "terminfo" -] +dependencies = ["ncurses"] script = """ rsync -av --delete --exclude='.git' "${COOKBOOK_SOURCE}/" ./ export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/ncurses" From d0daacb217aba29780a99d6ad2cada4838441f4f Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sun, 29 Jun 2025 15:43:09 +0200 Subject: [PATCH 2645/3180] Correctly mark terminfo as runtime dependency for ncdu (take 2) --- recipes/tui/ncdu/recipe.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/recipes/tui/ncdu/recipe.toml b/recipes/tui/ncdu/recipe.toml index c429a3a2..2a0e9e0c 100644 --- a/recipes/tui/ncdu/recipe.toml +++ b/recipes/tui/ncdu/recipe.toml @@ -1,6 +1,8 @@ [source] tar = "https://dev.yorhel.nl/download/ncdu-1.13.tar.gz" blake3 = "f6d771e78c87202a051e3357820be3c63ea895ff4f07edf14c6f21fb18afceed" + +[package] dependencies = ["terminfo"] [build] From 9481a6210483b0bdabf4f34ce6d06207c9d4e498 Mon Sep 17 00:00:00 2001 From: Ashton Kemerling Date: Tue, 1 Jul 2025 02:03:19 +0000 Subject: [PATCH 2646/3180] Apply 1 suggestion(s) to 1 file(s) Co-authored-by: Ribbon --- recipes/wip/db/sqllogictest/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/wip/db/sqllogictest/recipe.toml b/recipes/wip/db/sqllogictest/recipe.toml index 90a6aca7..18c24921 100644 --- a/recipes/wip/db/sqllogictest/recipe.toml +++ b/recipes/wip/db/sqllogictest/recipe.toml @@ -7,7 +7,6 @@ [source] git = "https://github.com/risinglightdb/sqllogictest-rs.git" -rev = "985748550bb8657260dac9da0fe3ebffd3cf4f28" # 0.21.0 [build] template = "custom" # Necessary deviation from From bab021efc9697bea10c81e7ac82f5411e37a7d24 Mon Sep 17 00:00:00 2001 From: Ashton Kemerling Date: Mon, 30 Jun 2025 20:10:38 -0600 Subject: [PATCH 2647/3180] Use built in cookbook_cargo_packages instead of custom script. --- recipes/wip/db/sqllogictest/recipe.toml | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/recipes/wip/db/sqllogictest/recipe.toml b/recipes/wip/db/sqllogictest/recipe.toml index 18c24921..1e47a39c 100644 --- a/recipes/wip/db/sqllogictest/recipe.toml +++ b/recipes/wip/db/sqllogictest/recipe.toml @@ -9,16 +9,6 @@ git = "https://github.com/risinglightdb/sqllogictest-rs.git" [build] template = "custom" -# Necessary deviation from script = """ -package=sqllogictest-bin -recipe="$(basename "${COOKBOOK_RECIPE}")" -"${COOKBOOK_CARGO}" build \ - --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ - --package "${package}" \ - --release -mkdir -pv "${COOKBOOK_STAGE}/usr/bin" -cp -v \ - "target/${TARGET}/release/${recipe}" \ - "${COOKBOOK_STAGE}/usr/bin/${recipe}" +cookbook_cargo_packages sqllogictest-bin """ From 57d42498473d4454333c722be571a1cbe534a636 Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Tue, 1 Jul 2025 03:38:57 -0400 Subject: [PATCH 2648/3180] Scan more directories in auto_deps Closes: redox-os/redox#1600, redox-os/redox#1598 Probably closes: redox-os/installer#24 Some packages place files in nested directories, such as `lib/packagename` or `libexec/ARCH/gcc`. If these directories are not scanned, the dependencies key in stage.toml will be empty which leads to dependencies not being installed in the image. --- Cargo.lock | 1 + Cargo.toml | 3 +++ src/bin/cook.rs | 59 ++++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 62 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 4cc6bb78..00792606 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1853,6 +1853,7 @@ dependencies = [ "pkgar-keys 0.1.17", "redoxer", "serde", + "tempfile", "termion", "toml 0.8.19", "walkdir", diff --git a/Cargo.toml b/Cargo.toml index 15608f40..c5aa5b09 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,3 +32,6 @@ serde = { version = "=1.0.197", features = ["derive"] } termion = "4" toml = "0.8" walkdir = "2.3.1" + +[dev-dependencies] +tempfile = "3" diff --git a/src/bin/cook.rs b/src/bin/cook.rs index dca5329f..7624755e 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -2,6 +2,7 @@ use cookbook::blake3::blake3_progress; use cookbook::package::StageToml; use cookbook::recipe::{BuildKind, CookRecipe, Recipe, SourceRecipe}; use cookbook::recipe_find::recipe_find; +use std::collections::VecDeque; use std::{ collections::BTreeSet, env, fs, @@ -505,7 +506,32 @@ fi"#, fn auto_deps(stage_dir: &Path, dep_pkgars: &BTreeSet<(String, PathBuf)>) -> BTreeSet { let mut paths = BTreeSet::new(); - for dir in &[stage_dir.join("usr/bin"), stage_dir.join("usr/lib")] { + let mut visited = BTreeSet::new(); + // Base directories may need to be updated for packages that place binaries in odd locations. + let mut walk = VecDeque::from([ + stage_dir.join("libexec"), + stage_dir.join("usr/bin"), + stage_dir.join("usr/games"), + stage_dir.join("usr/lib"), + ]); + + // Recursively (DFS) walk each directory to ensure nested libs and bins are checked. + while let Some(dir) = walk.pop_front() { + let Ok(dir) = dir.canonicalize() else { + continue; + }; + if visited.contains(&dir) { + #[cfg(debug_assertions)] + eprintln!("DEBUG: auto_deps => Skipping `{dir:?}` (already visited)"); + continue; + } + assert!( + visited.insert(dir.clone()), + "Directory `{:?}` should not be in visited\nVisited: {:#?}", + dir, + visited + ); + let Ok(read_dir) = fs::read_dir(&dir) else { continue; }; @@ -516,6 +542,8 @@ fn auto_deps(stage_dir: &Path, dep_pkgars: &BTreeSet<(String, PathBuf)>) -> BTre }; if file_type.is_file() { paths.insert(entry.path()); + } else if file_type.is_dir() { + walk.push_front(entry.path()); } } } @@ -1185,3 +1213,32 @@ fn main() { } } } + +#[cfg(test)] +mod tests { + use std::os::unix; + + use super::auto_deps; + + #[test] + fn file_system_loop_no_infinite_loop() { + // Hierarchy with an infinite loop + let temp = tempfile::tempdir().unwrap(); + let root = temp.path(); + let dir = root.join("loop"); + unix::fs::symlink(root, &dir).expect("Linking {dir:?} to {root:?}"); + + // Sanity check that we have a loop + assert_eq!( + root.canonicalize().unwrap(), + dir.canonicalize().unwrap(), + "Expected a loop where {dir:?} points to {root:?}" + ); + + let entries = auto_deps(root, &Default::default()); + assert!( + entries.is_empty(), + "auto_deps shouldn't have yielded any libraries" + ); + } +} From e8e8dea09741d2fcc768a02f0774fc422ee13dd1 Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Tue, 25 Feb 2025 23:25:02 -0500 Subject: [PATCH 2649/3180] Dynamically linked Duke Nukem --- recipes/games/eduke32/recipe.toml | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/recipes/games/eduke32/recipe.toml b/recipes/games/eduke32/recipe.toml index b0532d44..29616fba 100644 --- a/recipes/games/eduke32/recipe.toml +++ b/recipes/games/eduke32/recipe.toml @@ -5,22 +5,28 @@ patches = ["redox.patch"] [build] dependencies = [ - "sdl1", - "sdl1-mixer", - "liborbital", - "libiconv", - "libogg", - "libvorbis", + "sdl1", + "sdl1-mixer", + "liborbital", + "libiconv", + "libogg", + "libvorbis", ] template = "custom" script = """ +DYNAMIC_INIT + # Copy source to build directory rsync -av --delete "${COOKBOOK_SOURCE}/" ./ export CFLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL" -export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib -static" export SDLCONFIG="${COOKBOOK_SYSROOT}/bin/sdl-config --prefix=${COOKBOOK_SYSROOT}" +export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" +if [[ -n "${COOKBOOK_PREFER_STATIC}" ]]; then + LDFLAGS+=" -static" +fi + PLATFORM=REDOX "${COOKBOOK_MAKE}" -j"$($NPROC)" mkdir -pv "${COOKBOOK_STAGE}/usr/games" From badf14803598b25dd68fde04f655cdb09d3742de Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 3 Jul 2025 06:06:25 -0300 Subject: [PATCH 2650/3180] Add recipes --- recipes/wip/dev/analysis/binwalk/recipe.toml | 9 +++++++++ .../wip/dev/cargo-tools/cargo-preflight/recipe.toml | 5 +++++ recipes/wip/games/strategy/balatro-tui/recipe.toml | 8 ++++++++ recipes/wip/image/other/satpaper/recipe.toml | 5 +++++ recipes/wip/net/analysis/pepe/recipe.toml | 5 +++++ recipes/wip/net/monitor/somo/recipe.toml | 5 +++++ recipes/wip/storage/kiorg/recipe.toml | 5 +++++ recipes/wip/system/procman/recipe.toml | 5 +++++ recipes/wip/text/dog/recipe.toml | 5 +++++ recipes/wip/video/converters/trv/recipe.toml | 10 ++++++++++ 10 files changed, 62 insertions(+) create mode 100644 recipes/wip/dev/analysis/binwalk/recipe.toml create mode 100644 recipes/wip/dev/cargo-tools/cargo-preflight/recipe.toml create mode 100644 recipes/wip/games/strategy/balatro-tui/recipe.toml create mode 100644 recipes/wip/image/other/satpaper/recipe.toml create mode 100644 recipes/wip/net/analysis/pepe/recipe.toml create mode 100644 recipes/wip/net/monitor/somo/recipe.toml create mode 100644 recipes/wip/storage/kiorg/recipe.toml create mode 100644 recipes/wip/system/procman/recipe.toml create mode 100644 recipes/wip/text/dog/recipe.toml create mode 100644 recipes/wip/video/converters/trv/recipe.toml diff --git a/recipes/wip/dev/analysis/binwalk/recipe.toml b/recipes/wip/dev/analysis/binwalk/recipe.toml new file mode 100644 index 00000000..668f3e68 --- /dev/null +++ b/recipes/wip/dev/analysis/binwalk/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ReFirmLabs/binwalk" +[build] +template = "cargo" +dependencies = [ + "fontconfig", + "liblzma", +] diff --git a/recipes/wip/dev/cargo-tools/cargo-preflight/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-preflight/recipe.toml new file mode 100644 index 00000000..5600e131 --- /dev/null +++ b/recipes/wip/dev/cargo-tools/cargo-preflight/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/supinie/cargo-preflight" +[build] +template = "cargo" diff --git a/recipes/wip/games/strategy/balatro-tui/recipe.toml b/recipes/wip/games/strategy/balatro-tui/recipe.toml new file mode 100644 index 00000000..2eb6772e --- /dev/null +++ b/recipes/wip/games/strategy/balatro-tui/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Passeriform/BalatroTUI" +[build] +template = "custom" +script = """ +cookbook_cargo_packages balatro_tui +""" diff --git a/recipes/wip/image/other/satpaper/recipe.toml b/recipes/wip/image/other/satpaper/recipe.toml new file mode 100644 index 00000000..e12b0e99 --- /dev/null +++ b/recipes/wip/image/other/satpaper/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Colonial-Dev/satpaper" +[build] +template = "cargo" diff --git a/recipes/wip/net/analysis/pepe/recipe.toml b/recipes/wip/net/analysis/pepe/recipe.toml new file mode 100644 index 00000000..8ee7e350 --- /dev/null +++ b/recipes/wip/net/analysis/pepe/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/omarmhaimdat/pepe" +[build] +template = "cargo" diff --git a/recipes/wip/net/monitor/somo/recipe.toml b/recipes/wip/net/monitor/somo/recipe.toml new file mode 100644 index 00000000..51bb05c6 --- /dev/null +++ b/recipes/wip/net/monitor/somo/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/theopfr/somo" +[build] +template = "cargo" diff --git a/recipes/wip/storage/kiorg/recipe.toml b/recipes/wip/storage/kiorg/recipe.toml new file mode 100644 index 00000000..7373b5e8 --- /dev/null +++ b/recipes/wip/storage/kiorg/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/houqp/kiorg" +[build] +template = "cargo" diff --git a/recipes/wip/system/procman/recipe.toml b/recipes/wip/system/procman/recipe.toml new file mode 100644 index 00000000..efc7983b --- /dev/null +++ b/recipes/wip/system/procman/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/jaroslawroszyk/procman" +[build] +template = "cargo" diff --git a/recipes/wip/text/dog/recipe.toml b/recipes/wip/text/dog/recipe.toml new file mode 100644 index 00000000..6f73d609 --- /dev/null +++ b/recipes/wip/text/dog/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/TrystanScottLambert/dog" +[build] +template = "cargo" diff --git a/recipes/wip/video/converters/trv/recipe.toml b/recipes/wip/video/converters/trv/recipe.toml new file mode 100644 index 00000000..7170e00f --- /dev/null +++ b/recipes/wip/video/converters/trv/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/transformrs/trv" +[build] +template = "cargo" +[package] +dependencies = [ + "ffmpeg6", + "typst", +] From 2458a4ecd44f8ec3afddad0d2f1f19c08d19b65c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 3 Jul 2025 06:50:39 -0300 Subject: [PATCH 2651/3180] Add recipes --- recipes/wip/dev/cargo-tools/crunch/recipe.toml | 5 +++++ recipes/wip/net/download/kitget/recipe.toml | 5 +++++ recipes/wip/net/lan/lantun/recipe.toml | 8 ++++++++ 3 files changed, 18 insertions(+) create mode 100644 recipes/wip/dev/cargo-tools/crunch/recipe.toml create mode 100644 recipes/wip/net/download/kitget/recipe.toml create mode 100644 recipes/wip/net/lan/lantun/recipe.toml diff --git a/recipes/wip/dev/cargo-tools/crunch/recipe.toml b/recipes/wip/dev/cargo-tools/crunch/recipe.toml new file mode 100644 index 00000000..5eb15356 --- /dev/null +++ b/recipes/wip/dev/cargo-tools/crunch/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/liamaharon/crunch-cli" +[build] +template = "cargo" diff --git a/recipes/wip/net/download/kitget/recipe.toml b/recipes/wip/net/download/kitget/recipe.toml new file mode 100644 index 00000000..66d63e41 --- /dev/null +++ b/recipes/wip/net/download/kitget/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/adamperkowski/kitget" +[build] +template = "cargo" diff --git a/recipes/wip/net/lan/lantun/recipe.toml b/recipes/wip/net/lan/lantun/recipe.toml new file mode 100644 index 00000000..91dab841 --- /dev/null +++ b/recipes/wip/net/lan/lantun/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/maxomatic458/lantun" +[build] +template = "custom" +script = """ +cookbook_cargo_packages lantun-cli +""" From b24b742e120ee3852b0381abbd93bb7ed608f9e8 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 3 Jul 2025 06:51:35 -0300 Subject: [PATCH 2652/3180] Update binwalk recipe --- recipes/wip/dev/analysis/binwalk/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/dev/analysis/binwalk/recipe.toml b/recipes/wip/dev/analysis/binwalk/recipe.toml index 668f3e68..8ee40ae9 100644 --- a/recipes/wip/dev/analysis/binwalk/recipe.toml +++ b/recipes/wip/dev/analysis/binwalk/recipe.toml @@ -5,5 +5,5 @@ git = "https://github.com/ReFirmLabs/binwalk" template = "cargo" dependencies = [ "fontconfig", - "liblzma", + "xz", ] From 78b7bb373ce5d587a23fedc4b22ec05bdbf7b08f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 3 Jul 2025 07:07:25 -0300 Subject: [PATCH 2653/3180] Fix the somo recipe conflict --- recipes/wip/monitors/somo/recipe.toml | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 recipes/wip/monitors/somo/recipe.toml diff --git a/recipes/wip/monitors/somo/recipe.toml b/recipes/wip/monitors/somo/recipe.toml deleted file mode 100644 index 51bb05c6..00000000 --- a/recipes/wip/monitors/somo/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO not compiled or tested -[source] -git = "https://github.com/theopfr/somo" -[build] -template = "cargo" From a6cdb3f9de1291b173ff9a21216466835cebc7e1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 3 Jul 2025 07:11:21 -0300 Subject: [PATCH 2654/3180] Fix the dog recipe conflict --- recipes/wip/tools/{dog => dog-dns}/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/tools/{dog => dog-dns}/recipe.toml (100%) diff --git a/recipes/wip/tools/dog/recipe.toml b/recipes/wip/tools/dog-dns/recipe.toml similarity index 100% rename from recipes/wip/tools/dog/recipe.toml rename to recipes/wip/tools/dog-dns/recipe.toml From 883cb05808beacb9d7e34e96798beb99b63ca9e4 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 3 Jul 2025 08:12:58 -0300 Subject: [PATCH 2655/3180] Try to fix the ratzilla recipe and update TODOs --- recipes/wip/db/jdbrowser/recipe.toml | 2 +- recipes/wip/demos/appcui/recipe.toml | 2 +- recipes/wip/demos/ratzilla/recipe.toml | 13 ++++++++++++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/recipes/wip/db/jdbrowser/recipe.toml b/recipes/wip/db/jdbrowser/recipe.toml index 6f6c24a1..987a8589 100644 --- a/recipes/wip/db/jdbrowser/recipe.toml +++ b/recipes/wip/db/jdbrowser/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO wayland-backend crate error [source] git = "https://github.com/Jkeyuk/JDbrowser" [build] diff --git a/recipes/wip/demos/appcui/recipe.toml b/recipes/wip/demos/appcui/recipe.toml index 2f01142a..53a0a424 100644 --- a/recipes/wip/demos/appcui/recipe.toml +++ b/recipes/wip/demos/appcui/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/gdt050579/AppCUI-rs" [build] diff --git a/recipes/wip/demos/ratzilla/recipe.toml b/recipes/wip/demos/ratzilla/recipe.toml index e948e3bc..5f216819 100644 --- a/recipes/wip/demos/ratzilla/recipe.toml +++ b/recipes/wip/demos/ratzilla/recipe.toml @@ -4,6 +4,17 @@ git = "https://github.com/orhun/ratzilla" [build] template = "custom" script = """ -cookbook_cargo_packages animations canvas-stress-test canvas-waves \ +recipe="$(basename "${COOKBOOK_RECIPE}")" + for package in animations canvas-stress-test canvas-waves \ colors-rgb demo demo2 minimal pong text-area user-input website world-map + do + "${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/examples/${PACKAGE_PATH}/Cargo.toml" \ + --package "${package}" \ + --release \ + mkdir -pv "${COOKBOOK_STAGE}/usr/bin" + cp -v \ + "target/${TARGET}/${build_type}/examples/${package}" \ + "${COOKBOOK_STAGE}/usr/bin/${recipe}_${package}" + done """ From 66889c4846552d65f1270636de9ec38e5295d849 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 3 Jul 2025 08:17:48 -0300 Subject: [PATCH 2656/3180] Try to fix the ratzilla recipe script --- recipes/wip/demos/ratzilla/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/demos/ratzilla/recipe.toml b/recipes/wip/demos/ratzilla/recipe.toml index 5f216819..d6bd3a37 100644 --- a/recipes/wip/demos/ratzilla/recipe.toml +++ b/recipes/wip/demos/ratzilla/recipe.toml @@ -11,7 +11,7 @@ colors-rgb demo demo2 minimal pong text-area user-input website world-map "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/examples/${PACKAGE_PATH}/Cargo.toml" \ --package "${package}" \ - --release \ + --release mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ "target/${TARGET}/${build_type}/examples/${package}" \ From 63da499c39ca22cfd4a66194b54841d35ef863a1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 3 Jul 2025 08:20:29 -0300 Subject: [PATCH 2657/3180] Try to fix the ratzilla recipe script again --- recipes/wip/demos/ratzilla/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/demos/ratzilla/recipe.toml b/recipes/wip/demos/ratzilla/recipe.toml index d6bd3a37..964d0621 100644 --- a/recipes/wip/demos/ratzilla/recipe.toml +++ b/recipes/wip/demos/ratzilla/recipe.toml @@ -9,7 +9,7 @@ recipe="$(basename "${COOKBOOK_RECIPE}")" colors-rgb demo demo2 minimal pong text-area user-input website world-map do "${COOKBOOK_CARGO}" build \ - --manifest-path "${COOKBOOK_SOURCE}/examples/${PACKAGE_PATH}/Cargo.toml" \ + --manifest-path "${COOKBOOK_SOURCE}/examples/${package}/Cargo.toml" \ --package "${package}" \ --release mkdir -pv "${COOKBOOK_STAGE}/usr/bin" From 5e4089381cd9d89928f07f1b832255a3aea9399a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 3 Jul 2025 08:50:24 -0300 Subject: [PATCH 2658/3180] Fix the feluda recipe and update a TODO --- recipes/wip/demos/ratzilla/recipe.toml | 2 +- recipes/wip/dev/analysis/feluda/recipe.toml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/demos/ratzilla/recipe.toml b/recipes/wip/demos/ratzilla/recipe.toml index 964d0621..49547260 100644 --- a/recipes/wip/demos/ratzilla/recipe.toml +++ b/recipes/wip/demos/ratzilla/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO fix the script [source] git = "https://github.com/orhun/ratzilla" [build] diff --git a/recipes/wip/dev/analysis/feluda/recipe.toml b/recipes/wip/dev/analysis/feluda/recipe.toml index ded0ba6e..98c4c36e 100644 --- a/recipes/wip/dev/analysis/feluda/recipe.toml +++ b/recipes/wip/dev/analysis/feluda/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/anistark/feluda" [build] template = "cargo" +dependencies = [ + "openssl1", +] From 79a1806abd11776613936b2fe876e02a9ca285fb Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 3 Jul 2025 08:59:42 -0300 Subject: [PATCH 2659/3180] Fix the cargo-preflight recipe and update a TODO --- recipes/wip/dev/analysis/feluda/recipe.toml | 2 +- recipes/wip/dev/cargo-tools/cargo-preflight/recipe.toml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/dev/analysis/feluda/recipe.toml b/recipes/wip/dev/analysis/feluda/recipe.toml index 98c4c36e..75902a3f 100644 --- a/recipes/wip/dev/analysis/feluda/recipe.toml +++ b/recipes/wip/dev/analysis/feluda/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO camino crate error [source] git = "https://github.com/anistark/feluda" [build] diff --git a/recipes/wip/dev/cargo-tools/cargo-preflight/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-preflight/recipe.toml index 5600e131..1553194a 100644 --- a/recipes/wip/dev/cargo-tools/cargo-preflight/recipe.toml +++ b/recipes/wip/dev/cargo-tools/cargo-preflight/recipe.toml @@ -3,3 +3,6 @@ git = "https://github.com/supinie/cargo-preflight" [build] template = "cargo" +dependencies = [ + "openssl1", +] From b0ed1422937b3e58fdc0e65234b225ba18b60060 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 3 Jul 2025 09:05:45 -0300 Subject: [PATCH 2660/3180] Fix the sphere recipe and update TODOs --- recipes/wip/dev/cargo-tools/cargo-preflight/recipe.toml | 2 +- recipes/wip/dev/cargo-tools/crunch/recipe.toml | 2 +- recipes/wip/dev/framework/sphere/recipe.toml | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/wip/dev/cargo-tools/cargo-preflight/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-preflight/recipe.toml index 1553194a..7675d75d 100644 --- a/recipes/wip/dev/cargo-tools/cargo-preflight/recipe.toml +++ b/recipes/wip/dev/cargo-tools/cargo-preflight/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO camino crate error [source] git = "https://github.com/supinie/cargo-preflight" [build] diff --git a/recipes/wip/dev/cargo-tools/crunch/recipe.toml b/recipes/wip/dev/cargo-tools/crunch/recipe.toml index 5eb15356..a68c8db8 100644 --- a/recipes/wip/dev/cargo-tools/crunch/recipe.toml +++ b/recipes/wip/dev/cargo-tools/crunch/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO camino crate error [source] git = "https://github.com/liamaharon/crunch-cli" [build] diff --git a/recipes/wip/dev/framework/sphere/recipe.toml b/recipes/wip/dev/framework/sphere/recipe.toml index 2874ae49..35a82856 100644 --- a/recipes/wip/dev/framework/sphere/recipe.toml +++ b/recipes/wip/dev/framework/sphere/recipe.toml @@ -3,6 +3,9 @@ git = "https://github.com/Nakadra/sphere-runtime" [build] template = "custom" +dependencies = [ + "openssl1", +] script = """ cookbook_cargo mkdir -pv "${COOKBOOK_STAGE}/usr/share/sphere" From 27ea7b99d8fae3a83e026587331287d278d48b8d Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Thu, 3 Jul 2025 13:32:51 +0000 Subject: [PATCH 2661/3180] Fix make clean --- clean.sh | 2 +- cook.sh | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/clean.sh b/clean.sh index 7aba7ca8..7f370765 100755 --- a/clean.sh +++ b/clean.sh @@ -12,5 +12,5 @@ fi for recipe_path in $recipes do - ./cook.sh "$recipe_path" distclean + IGNORE_ERROR=1 ./cook.sh "$recipe_path" distclean done diff --git a/cook.sh b/cook.sh index 1c6ac7cf..76aa4e19 100755 --- a/cook.sh +++ b/cook.sh @@ -369,7 +369,8 @@ then do op "$recipe_name" "$i" done - else + elif [ "$IGNORE_ERROR" != "1" ] + then echo "cook.sh: recipe '$recipe_name' at not found" >&2 exit 1 fi From 0dcdfc5961b9ffe8c6d0c4429a91bd5be2bb1fb5 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 3 Jul 2025 11:17:47 -0300 Subject: [PATCH 2662/3180] Try to fix the sloth recipe and update TODOs --- recipes/wip/dev/framework/sphere/recipe.toml | 2 +- recipes/wip/dev/lang/xylo/recipe.toml | 2 +- recipes/wip/games/open-world/cytopia-rs/recipe.toml | 2 +- recipes/wip/games/strategy/balatro-tui/recipe.toml | 2 +- recipes/wip/games/strategy/hammurabi/recipe.toml | 2 +- recipes/wip/games/strategy/rustoku/recipe.toml | 2 +- recipes/wip/graphics/terminal/ascii-image/recipe.toml | 2 +- recipes/wip/graphics/terminal/blockpaint/recipe.toml | 2 +- recipes/wip/graphics/terminal/display3d/recipe.toml | 2 +- recipes/wip/graphics/terminal/img2text/recipe.toml | 2 +- recipes/wip/graphics/terminal/kakikun/recipe.toml | 2 +- recipes/wip/graphics/terminal/sloth/recipe.toml | 3 ++- 12 files changed, 13 insertions(+), 12 deletions(-) diff --git a/recipes/wip/dev/framework/sphere/recipe.toml b/recipes/wip/dev/framework/sphere/recipe.toml index 35a82856..aee70f27 100644 --- a/recipes/wip/dev/framework/sphere/recipe.toml +++ b/recipes/wip/dev/framework/sphere/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compilation error [source] git = "https://github.com/Nakadra/sphere-runtime" [build] diff --git a/recipes/wip/dev/lang/xylo/recipe.toml b/recipes/wip/dev/lang/xylo/recipe.toml index 313ee089..750f07dd 100644 --- a/recipes/wip/dev/lang/xylo/recipe.toml +++ b/recipes/wip/dev/lang/xylo/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/giraffekey/xylo" [build] diff --git a/recipes/wip/games/open-world/cytopia-rs/recipe.toml b/recipes/wip/games/open-world/cytopia-rs/recipe.toml index 54340536..fd8c93ed 100644 --- a/recipes/wip/games/open-world/cytopia-rs/recipe.toml +++ b/recipes/wip/games/open-world/cytopia-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compilation error [source] git = "https://codeberg.org/Esther1024/pia-fork" [build] diff --git a/recipes/wip/games/strategy/balatro-tui/recipe.toml b/recipes/wip/games/strategy/balatro-tui/recipe.toml index 2eb6772e..d90b81b9 100644 --- a/recipes/wip/games/strategy/balatro-tui/recipe.toml +++ b/recipes/wip/games/strategy/balatro-tui/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/Passeriform/BalatroTUI" [build] diff --git a/recipes/wip/games/strategy/hammurabi/recipe.toml b/recipes/wip/games/strategy/hammurabi/recipe.toml index 7cc74a05..079b89bb 100644 --- a/recipes/wip/games/strategy/hammurabi/recipe.toml +++ b/recipes/wip/games/strategy/hammurabi/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/stjepangolemac/hammurabi" [build] diff --git a/recipes/wip/games/strategy/rustoku/recipe.toml b/recipes/wip/games/strategy/rustoku/recipe.toml index 05e4371e..6ec76700 100644 --- a/recipes/wip/games/strategy/rustoku/recipe.toml +++ b/recipes/wip/games/strategy/rustoku/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/huangsam/rustoku" [build] diff --git a/recipes/wip/graphics/terminal/ascii-image/recipe.toml b/recipes/wip/graphics/terminal/ascii-image/recipe.toml index e038e454..b1c70d4d 100644 --- a/recipes/wip/graphics/terminal/ascii-image/recipe.toml +++ b/recipes/wip/graphics/terminal/ascii-image/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/kpberry/image-to-ascii" [build] diff --git a/recipes/wip/graphics/terminal/blockpaint/recipe.toml b/recipes/wip/graphics/terminal/blockpaint/recipe.toml index 7cbe76e5..a6a611ad 100644 --- a/recipes/wip/graphics/terminal/blockpaint/recipe.toml +++ b/recipes/wip/graphics/terminal/blockpaint/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO don't fetch private submodule [source] git = "https://github.com/wooster0/blockpaint" [build] diff --git a/recipes/wip/graphics/terminal/display3d/recipe.toml b/recipes/wip/graphics/terminal/display3d/recipe.toml index eaf0eb27..ea99b3cf 100644 --- a/recipes/wip/graphics/terminal/display3d/recipe.toml +++ b/recipes/wip/graphics/terminal/display3d/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/redpenguinyt/display3d" [build] diff --git a/recipes/wip/graphics/terminal/img2text/recipe.toml b/recipes/wip/graphics/terminal/img2text/recipe.toml index 3680706d..7463a88d 100644 --- a/recipes/wip/graphics/terminal/img2text/recipe.toml +++ b/recipes/wip/graphics/terminal/img2text/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/yvt/img2text" [build] diff --git a/recipes/wip/graphics/terminal/kakikun/recipe.toml b/recipes/wip/graphics/terminal/kakikun/recipe.toml index e4cade25..006fa98e 100644 --- a/recipes/wip/graphics/terminal/kakikun/recipe.toml +++ b/recipes/wip/graphics/terminal/kakikun/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/file-acomplaint/kakikun" [build] diff --git a/recipes/wip/graphics/terminal/sloth/recipe.toml b/recipes/wip/graphics/terminal/sloth/recipe.toml index 18307b26..4a1f9395 100644 --- a/recipes/wip/graphics/terminal/sloth/recipe.toml +++ b/recipes/wip/graphics/terminal/sloth/recipe.toml @@ -1,5 +1,6 @@ -#TODO not compiled or tested +#TODO update redox_syscall crate [source] git = "https://github.com/ecumene/rust-sloth" +script = "rm Cargo.lock" [build] template = "cargo" From c9fc74c2f0bee1d49839988a2b5d9bef1a1e6895 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 4 Jul 2025 04:11:52 -0300 Subject: [PATCH 2663/3180] Fix the ratzilla recipe and update TODOs --- recipes/wip/demos/ratzilla/recipe.toml | 33 ++++++++++++------- .../wip/graphics/terminal/sloth/recipe.toml | 2 +- .../graphics/terminal/tapciify/recipe.toml | 2 +- recipes/wip/gui/gpcl/recipe.toml | 2 +- 4 files changed, 25 insertions(+), 14 deletions(-) diff --git a/recipes/wip/demos/ratzilla/recipe.toml b/recipes/wip/demos/ratzilla/recipe.toml index 49547260..c021dc8a 100644 --- a/recipes/wip/demos/ratzilla/recipe.toml +++ b/recipes/wip/demos/ratzilla/recipe.toml @@ -1,20 +1,31 @@ -#TODO fix the script +#TODO not compiled or tested [source] git = "https://github.com/orhun/ratzilla" [build] template = "custom" script = """ recipe="$(basename "${COOKBOOK_RECIPE}")" - for package in animations canvas-stress-test canvas-waves \ -colors-rgb demo demo2 minimal pong text-area user-input website world-map - do - "${COOKBOOK_CARGO}" build \ - --manifest-path "${COOKBOOK_SOURCE}/examples/${package}/Cargo.toml" \ - --package "${package}" \ - --release +function build_from_dir { + prog_name=$1 + dir_name=$2 + "${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/examples/${dir_name}/Cargo.toml" \ + "${build_flags}" mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ - "target/${TARGET}/${build_type}/examples/${package}" \ - "${COOKBOOK_STAGE}/usr/bin/${recipe}_${package}" - done + "target/${TARGET}/${build_type}/${prog_name}" \ + "${COOKBOOK_STAGE}/usr/bin/${recipe}_${prog_name}" +} +build_from_dir animations animations +build_from_dir canvas-stress-test canvas_stress_test +build_from_dir canvas-waves canvas_waves +build_from_dir color-rgb colors_rgb +build_from_dir demo demo +build_from_dir demo2 demo2 +build_from_dir minimal minimal +build_from_dir pong pong +build_from_dir text_area text_area +build_from_dir user-input user_input +build_from_dir website website +build_from_dir world-map world_map """ diff --git a/recipes/wip/graphics/terminal/sloth/recipe.toml b/recipes/wip/graphics/terminal/sloth/recipe.toml index 4a1f9395..e356c413 100644 --- a/recipes/wip/graphics/terminal/sloth/recipe.toml +++ b/recipes/wip/graphics/terminal/sloth/recipe.toml @@ -1,4 +1,4 @@ -#TODO update redox_syscall crate +#TODO compilation error [source] git = "https://github.com/ecumene/rust-sloth" script = "rm Cargo.lock" diff --git a/recipes/wip/graphics/terminal/tapciify/recipe.toml b/recipes/wip/graphics/terminal/tapciify/recipe.toml index 1b321c9f..a459d38b 100644 --- a/recipes/wip/graphics/terminal/tapciify/recipe.toml +++ b/recipes/wip/graphics/terminal/tapciify/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/tapnisu/tapciify" [build] diff --git a/recipes/wip/gui/gpcl/recipe.toml b/recipes/wip/gui/gpcl/recipe.toml index 9663b2b5..694a4b80 100644 --- a/recipes/wip/gui/gpcl/recipe.toml +++ b/recipes/wip/gui/gpcl/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO wayland-backend crate error [source] git = "https://github.com/dngulin/gpcl" [build] From 8b1d6031a8d08f045a9f695704ddbc35b4a05afd Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 4 Jul 2025 06:57:44 -0300 Subject: [PATCH 2664/3180] Try to fix the rx recipe and update TODOs --- recipes/wip/demos/ratzilla/recipe.toml | 2 +- recipes/wip/gui/ordinary/recipe.toml | 2 +- recipes/wip/image/editors/rx/recipe.toml | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/wip/demos/ratzilla/recipe.toml b/recipes/wip/demos/ratzilla/recipe.toml index c021dc8a..9da0eb97 100644 --- a/recipes/wip/demos/ratzilla/recipe.toml +++ b/recipes/wip/demos/ratzilla/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/orhun/ratzilla" [build] diff --git a/recipes/wip/gui/ordinary/recipe.toml b/recipes/wip/gui/ordinary/recipe.toml index ffc25fc6..7d2c19b4 100644 --- a/recipes/wip/gui/ordinary/recipe.toml +++ b/recipes/wip/gui/ordinary/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO update async-io and rustix [source] git = "https://gitlab.com/floers/ordinary" [build] diff --git a/recipes/wip/image/editors/rx/recipe.toml b/recipes/wip/image/editors/rx/recipe.toml index ad719de4..aadb2f3f 100644 --- a/recipes/wip/image/editors/rx/recipe.toml +++ b/recipes/wip/image/editors/rx/recipe.toml @@ -1,5 +1,6 @@ #TODO not compiled or tested [source] git = "https://github.com/cloudhead/rx" +script = "rm Cargo.lock" [build] template = "cargo" From d1b5fcf6d1d9b9ac5fefb33be9293754c6442fce Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 4 Jul 2025 08:04:12 -0300 Subject: [PATCH 2665/3180] Fix the libgpm recipe and update TODOs --- recipes/wip/image/editors/rx/recipe.toml | 2 +- recipes/wip/image/editors/watermarker/recipe.toml | 2 +- recipes/wip/image/other/imageflow/recipe.toml | 2 +- recipes/wip/image/other/satpaper/recipe.toml | 2 +- recipes/wip/image/other/sic/recipe.toml | 2 +- recipes/wip/libs/fs/libattr/recipe.toml | 2 +- recipes/wip/libs/graphics/libnoise/recipe.toml | 2 +- recipes/wip/libs/gui/imgui/recipe.toml | 2 +- recipes/wip/libs/net/libidn/recipe.toml | 2 +- recipes/wip/libs/other/libgpm/recipe.toml | 1 + recipes/wip/libs/other/libunistring/recipe.toml | 2 +- 11 files changed, 11 insertions(+), 10 deletions(-) diff --git a/recipes/wip/image/editors/rx/recipe.toml b/recipes/wip/image/editors/rx/recipe.toml index aadb2f3f..adaa5125 100644 --- a/recipes/wip/image/editors/rx/recipe.toml +++ b/recipes/wip/image/editors/rx/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compilation error [source] git = "https://github.com/cloudhead/rx" script = "rm Cargo.lock" diff --git a/recipes/wip/image/editors/watermarker/recipe.toml b/recipes/wip/image/editors/watermarker/recipe.toml index 93bf65d6..fcfd2ab7 100644 --- a/recipes/wip/image/editors/watermarker/recipe.toml +++ b/recipes/wip/image/editors/watermarker/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/xomvio/watermarker" [build] diff --git a/recipes/wip/image/other/imageflow/recipe.toml b/recipes/wip/image/other/imageflow/recipe.toml index bb9ab9b3..2b1a79b5 100644 --- a/recipes/wip/image/other/imageflow/recipe.toml +++ b/recipes/wip/image/other/imageflow/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/imazen/imageflow" [build] diff --git a/recipes/wip/image/other/satpaper/recipe.toml b/recipes/wip/image/other/satpaper/recipe.toml index e12b0e99..18c378bf 100644 --- a/recipes/wip/image/other/satpaper/recipe.toml +++ b/recipes/wip/image/other/satpaper/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO atools crate error [source] git = "https://github.com/Colonial-Dev/satpaper" [build] diff --git a/recipes/wip/image/other/sic/recipe.toml b/recipes/wip/image/other/sic/recipe.toml index b9640779..d7047f4a 100644 --- a/recipes/wip/image/other/sic/recipe.toml +++ b/recipes/wip/image/other/sic/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/foresterre/sic" [build] diff --git a/recipes/wip/libs/fs/libattr/recipe.toml b/recipes/wip/libs/fs/libattr/recipe.toml index ac305e3f..a73ef2d9 100644 --- a/recipes/wip/libs/fs/libattr/recipe.toml +++ b/recipes/wip/libs/fs/libattr/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO can't find the sys/xattr.h file [source] tar = "https://download.savannah.nongnu.org/releases/attr/attr-2.5.2.tar.xz" [build] diff --git a/recipes/wip/libs/graphics/libnoise/recipe.toml b/recipes/wip/libs/graphics/libnoise/recipe.toml index 7602eeed..1e65b0e0 100644 --- a/recipes/wip/libs/graphics/libnoise/recipe.toml +++ b/recipes/wip/libs/graphics/libnoise/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compilation error [source] git = "https://github.com/qknight/libnoise" [build] diff --git a/recipes/wip/libs/gui/imgui/recipe.toml b/recipes/wip/libs/gui/imgui/recipe.toml index 927ca618..c408c170 100644 --- a/recipes/wip/libs/gui/imgui/recipe.toml +++ b/recipes/wip/libs/gui/imgui/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compilation error # cmake information: https://github.com/ocornut/imgui/pull/3027 [source] git = "https://github.com/Qix-/imgui" diff --git a/recipes/wip/libs/net/libidn/recipe.toml b/recipes/wip/libs/net/libidn/recipe.toml index cb7c94f3..f99833f8 100644 --- a/recipes/wip/libs/net/libidn/recipe.toml +++ b/recipes/wip/libs/net/libidn/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO fix libunistring [source] tar = "https://ftp.gnu.org/gnu/libidn/libidn2-2.3.7.tar.gz" [build] diff --git a/recipes/wip/libs/other/libgpm/recipe.toml b/recipes/wip/libs/other/libgpm/recipe.toml index 3348c91d..95022ac1 100644 --- a/recipes/wip/libs/other/libgpm/recipe.toml +++ b/recipes/wip/libs/other/libgpm/recipe.toml @@ -1,5 +1,6 @@ #TODO not compiled or tested [source] tar = "https://www.nico.schottelius.org/software/gpm/archives/gpm-1.20.7.tar.bz2" +script = "./autogen.sh" [build] template = "configure" diff --git a/recipes/wip/libs/other/libunistring/recipe.toml b/recipes/wip/libs/other/libunistring/recipe.toml index a41062aa..3b5fa9bd 100644 --- a/recipes/wip/libs/other/libunistring/recipe.toml +++ b/recipes/wip/libs/other/libunistring/recipe.toml @@ -1,4 +1,4 @@ -#TODO compilation error +#TODO port the fseterr function [source] tar = "https://ftp.gnu.org/gnu/libunistring/libunistring-1.1.tar.gz" [build] From ba02dd50243d4f5e6531c1513d05aab9cc52cc88 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 4 Jul 2025 08:33:39 -0300 Subject: [PATCH 2666/3180] Fix the cosmic-ext-calculator recipe and update TODOs --- recipes/wip/libs/other/libgpm/recipe.toml | 2 +- recipes/wip/libs/other/libgumbo/recipe.toml | 2 +- recipes/wip/libs/other/libplist/recipe.toml | 2 +- recipes/wip/libs/other/libtatsu/recipe.toml | 2 +- recipes/wip/libs/other/liburiparser/recipe.toml | 2 +- recipes/wip/libs/security/libacl/recipe.toml | 2 +- recipes/wip/logging/krapslog/recipe.toml | 2 +- recipes/wip/math/cosmic-ext-calculator/recipe.toml | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/recipes/wip/libs/other/libgpm/recipe.toml b/recipes/wip/libs/other/libgpm/recipe.toml index 95022ac1..9b1f7114 100644 --- a/recipes/wip/libs/other/libgpm/recipe.toml +++ b/recipes/wip/libs/other/libgpm/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO undefined macro: AC_PROG_LIBTOOL [source] tar = "https://www.nico.schottelius.org/software/gpm/archives/gpm-1.20.7.tar.bz2" script = "./autogen.sh" diff --git a/recipes/wip/libs/other/libgumbo/recipe.toml b/recipes/wip/libs/other/libgumbo/recipe.toml index 1f7baa22..d8854254 100644 --- a/recipes/wip/libs/other/libgumbo/recipe.toml +++ b/recipes/wip/libs/other/libgumbo/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://codeberg.org/gumbo-parser/gumbo-parser" rev = "23af2f7c5a9da7e7ea42fcc2c573df52e4a3a5be" diff --git a/recipes/wip/libs/other/libplist/recipe.toml b/recipes/wip/libs/other/libplist/recipe.toml index 91fd40a5..277784f3 100644 --- a/recipes/wip/libs/other/libplist/recipe.toml +++ b/recipes/wip/libs/other/libplist/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] tar = "https://github.com/libimobiledevice/libplist/releases/download/2.6.0/libplist-2.6.0.tar.bz2" [build] diff --git a/recipes/wip/libs/other/libtatsu/recipe.toml b/recipes/wip/libs/other/libtatsu/recipe.toml index 64afe14b..4e14e975 100644 --- a/recipes/wip/libs/other/libtatsu/recipe.toml +++ b/recipes/wip/libs/other/libtatsu/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] tar = "https://github.com/libimobiledevice/libtatsu/releases/download/1.0.3/libtatsu-1.0.3.tar.bz2" [build] diff --git a/recipes/wip/libs/other/liburiparser/recipe.toml b/recipes/wip/libs/other/liburiparser/recipe.toml index 9b897d39..73f68e7d 100644 --- a/recipes/wip/libs/other/liburiparser/recipe.toml +++ b/recipes/wip/libs/other/liburiparser/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compilation error [source] tar = "https://github.com/uriparser/uriparser/releases/download/uriparser-0.9.8/uriparser-0.9.8.tar.bz2" [build] diff --git a/recipes/wip/libs/security/libacl/recipe.toml b/recipes/wip/libs/security/libacl/recipe.toml index 2ed50208..247d5ebe 100644 --- a/recipes/wip/libs/security/libacl/recipe.toml +++ b/recipes/wip/libs/security/libacl/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO can't find the attr/error_context.h file [source] tar = "https://download.savannah.nongnu.org/releases/acl/acl-2.3.2.tar.xz" [build] diff --git a/recipes/wip/logging/krapslog/recipe.toml b/recipes/wip/logging/krapslog/recipe.toml index 1c7ad81d..be799633 100644 --- a/recipes/wip/logging/krapslog/recipe.toml +++ b/recipes/wip/logging/krapslog/recipe.toml @@ -1,4 +1,4 @@ -#TODO not compiled or tested +#TODO compiled but not tested [source] git = "https://github.com/acj/krapslog-rs" [build] diff --git a/recipes/wip/math/cosmic-ext-calculator/recipe.toml b/recipes/wip/math/cosmic-ext-calculator/recipe.toml index 57f0dd2a..5dbbcf4c 100644 --- a/recipes/wip/math/cosmic-ext-calculator/recipe.toml +++ b/recipes/wip/math/cosmic-ext-calculator/recipe.toml @@ -7,7 +7,7 @@ template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/applications mkdir -pv "${COOKBOOK_STAGE}"/usr/share/metainfo -mkdir -pv "${COOKBOOK_STAGE}"/usr/share/icons +mkdir -pv "${COOKBOOK_STAGE}"/usr/share/icons/hicolor/scalable/apps cp -rv "${COOKBOOK_SOURCE}"/res/app.desktop "${COOKBOOK_STAGE}"/usr/share/applications/dev.edfloreshz.Calculator.desktop cp -rv "${COOKBOOK_SOURCE}"/res/metainfo.xml "${COOKBOOK_STAGE}"/usr/share/metainfo/dev.edfloreshz.Calculator.metainfo.xml cp -rv "${COOKBOOK_SOURCE}"/res/icons/hicolor/scalable/apps/icon.svg "${COOKBOOK_STAGE}"/usr/share/icons/hicolor/scalable/apps/dev.edfloreshz.Calculator.svg From c03c493bcb4303724abe0e9bde09fd1a26e1ae7f Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Fri, 4 Jul 2025 13:31:50 +0000 Subject: [PATCH 2667/3180] Add support for sccache envar handling --- config.sh | 6 ++++++ recipes/dev/lua54/recipe.toml | 2 +- recipes/libs/openssl1/recipe.toml | 2 +- recipes/tools/bzip2/recipe.toml | 4 ++-- src/bin/cook.rs | 7 +++++++ 5 files changed, 17 insertions(+), 4 deletions(-) diff --git a/config.sh b/config.sh index d363c652..a1f0e931 100755 --- a/config.sh +++ b/config.sh @@ -30,6 +30,12 @@ export RANLIB="${HOST}-gcc-ranlib" export READELF="${HOST}-readelf" export STRIP="${HOST}-strip" +if [ -n "${RUSTC_WRAPPER}" ] +then + export CC="${RUSTC_WRAPPER} ${CC}" + export CXX="${RUSTC_WRAPPER} ${CXX}" +fi + BUILD="$(cc -dumpmachine)" export PKG_CONFIG_FOR_BUILD="pkg-config" diff --git a/recipes/dev/lua54/recipe.toml b/recipes/dev/lua54/recipe.toml index 5f2f1549..23babe5c 100644 --- a/recipes/dev/lua54/recipe.toml +++ b/recipes/dev/lua54/recipe.toml @@ -8,7 +8,7 @@ script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ "${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" posix \ AR="${TARGET}-ar rcu" \ - CC="${TARGET}-gcc -std=gnu99" \ + CC="${RUSTC_WRAPPER} ${TARGET}-gcc -std=gnu99" \ RANLIB="${TARGET}-ranlib" \ SYSLDFLAGS="-static" diff --git a/recipes/libs/openssl1/recipe.toml b/recipes/libs/openssl1/recipe.toml index d96b7ec9..ec8bce54 100644 --- a/recipes/libs/openssl1/recipe.toml +++ b/recipes/libs/openssl1/recipe.toml @@ -14,7 +14,7 @@ COOKBOOK_CONFIGURE_FLAGS=( "redox-${ARCH}" --prefix="/" ) -export CC="${TARGET}-gcc" +export CC="${RUSTC_WRAPPER} ${TARGET}-gcc" "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" "${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" "${COOKBOOK_MAKE}" install_sw install_ssldirs DESTDIR="${COOKBOOK_STAGE}" diff --git a/recipes/tools/bzip2/recipe.toml b/recipes/tools/bzip2/recipe.toml index 23eacc6b..af7282da 100644 --- a/recipes/tools/bzip2/recipe.toml +++ b/recipes/tools/bzip2/recipe.toml @@ -12,7 +12,7 @@ DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ "${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" \ AR="${TARGET}-ar" \ - CC="${TARGET}-gcc" \ + CC="${RUSTC_WRAPPER} ${TARGET}-gcc" \ PREFIX="${COOKBOOK_STAGE}" \ RANLIB="${TARGET}-ranlib" \ install @@ -25,7 +25,7 @@ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ "${COOKBOOK_MAKE}" -f Makefile-libbz2_so \ -j"${COOKBOOK_MAKE_JOBS}" \ AR="${TARGET}-ar" \ - CC="${TARGET}-gcc" \ + CC="${RUSTC_WRAPPER} ${TARGET}-gcc" \ PREFIX="${COOKBOOK_STAGE}" \ RANLIB="${TARGET}-ranlib" diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 7624755e..61e688de 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -841,6 +841,11 @@ set(CMAKE_SYSTEM_NAME UnixPaths) set(CMAKE_SYSTEM_PROCESSOR $(echo "${TARGET}" | cut -d - -f1)) EOF + if [ -n "$RUSTC_WRAPPER" ]; then + echo "set(CMAKE_C_COMPILER_LAUNCHER ${RUSTC_WRAPPER})" >> cross_file.cmake + echo "set(CMAKE_CXX_COMPILER_LAUNCHER ${RUSTC_WRAPPER})" >> cross_file.cmake + fi + "${COOKBOOK_CMAKE}" "${COOKBOOK_SOURCE}" \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_CROSSCOMPILING=True \ @@ -870,6 +875,8 @@ COOKBOOK_MESON_FLAGS=( ) function cookbook_meson { echo "[binaries]" > cross_file.txt + echo "c = [$(printf "'%s', " $CC | sed 's/, $//')]" >> cross_file.txt + echo "cpp = [$(printf "'%s', " $CXX | sed 's/, $//')]" >> cross_file.txt echo "c = '${CC}'" >> cross_file.txt echo "cpp = '${CXX}'" >> cross_file.txt echo "ar = '${AR}'" >> cross_file.txt From 81ed01792d50c99d52732c6a8686497c5ed9e952 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Fri, 4 Jul 2025 23:44:44 +0000 Subject: [PATCH 2668/3180] Fix regression in meson --- src/bin/cook.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 61e688de..86fd139e 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -877,8 +877,6 @@ function cookbook_meson { echo "[binaries]" > cross_file.txt echo "c = [$(printf "'%s', " $CC | sed 's/, $//')]" >> cross_file.txt echo "cpp = [$(printf "'%s', " $CXX | sed 's/, $//')]" >> cross_file.txt - echo "c = '${CC}'" >> cross_file.txt - echo "cpp = '${CXX}'" >> cross_file.txt echo "ar = '${AR}'" >> cross_file.txt echo "strip = '${STRIP}'" >> cross_file.txt echo "pkg-config = '${PKG_CONFIG}'" >> cross_file.txt From 4499e9b688cd3137f8227d4aa64d81dba878e8e6 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sat, 5 Jul 2025 00:04:22 +0000 Subject: [PATCH 2669/3180] Rename RUSTC_WRAPPER to CC_WRAPPER --- config.sh | 6 +++--- recipes/dev/lua54/recipe.toml | 2 +- recipes/libs/openssl1/recipe.toml | 2 +- recipes/tools/bzip2/recipe.toml | 4 ++-- src/bin/cook.rs | 7 ++++--- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/config.sh b/config.sh index a1f0e931..f3a3b2de 100755 --- a/config.sh +++ b/config.sh @@ -30,10 +30,10 @@ export RANLIB="${HOST}-gcc-ranlib" export READELF="${HOST}-readelf" export STRIP="${HOST}-strip" -if [ -n "${RUSTC_WRAPPER}" ] +if [ -n "${CC_WRAPPER}" ] then - export CC="${RUSTC_WRAPPER} ${CC}" - export CXX="${RUSTC_WRAPPER} ${CXX}" + export CC="${CC_WRAPPER} ${CC}" + export CXX="${CC_WRAPPER} ${CXX}" fi BUILD="$(cc -dumpmachine)" diff --git a/recipes/dev/lua54/recipe.toml b/recipes/dev/lua54/recipe.toml index 23babe5c..ea9e5406 100644 --- a/recipes/dev/lua54/recipe.toml +++ b/recipes/dev/lua54/recipe.toml @@ -8,7 +8,7 @@ script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ "${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" posix \ AR="${TARGET}-ar rcu" \ - CC="${RUSTC_WRAPPER} ${TARGET}-gcc -std=gnu99" \ + CC="${CC_WRAPPER} ${TARGET}-gcc -std=gnu99" \ RANLIB="${TARGET}-ranlib" \ SYSLDFLAGS="-static" diff --git a/recipes/libs/openssl1/recipe.toml b/recipes/libs/openssl1/recipe.toml index ec8bce54..6b01054b 100644 --- a/recipes/libs/openssl1/recipe.toml +++ b/recipes/libs/openssl1/recipe.toml @@ -14,7 +14,7 @@ COOKBOOK_CONFIGURE_FLAGS=( "redox-${ARCH}" --prefix="/" ) -export CC="${RUSTC_WRAPPER} ${TARGET}-gcc" +export CC="${CC_WRAPPER} ${TARGET}-gcc" "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" "${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" "${COOKBOOK_MAKE}" install_sw install_ssldirs DESTDIR="${COOKBOOK_STAGE}" diff --git a/recipes/tools/bzip2/recipe.toml b/recipes/tools/bzip2/recipe.toml index af7282da..5c73235a 100644 --- a/recipes/tools/bzip2/recipe.toml +++ b/recipes/tools/bzip2/recipe.toml @@ -12,7 +12,7 @@ DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ "${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" \ AR="${TARGET}-ar" \ - CC="${RUSTC_WRAPPER} ${TARGET}-gcc" \ + CC="${CC_WRAPPER} ${TARGET}-gcc" \ PREFIX="${COOKBOOK_STAGE}" \ RANLIB="${TARGET}-ranlib" \ install @@ -25,7 +25,7 @@ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ "${COOKBOOK_MAKE}" -f Makefile-libbz2_so \ -j"${COOKBOOK_MAKE_JOBS}" \ AR="${TARGET}-ar" \ - CC="${RUSTC_WRAPPER} ${TARGET}-gcc" \ + CC="${CC_WRAPPER} ${TARGET}-gcc" \ PREFIX="${COOKBOOK_STAGE}" \ RANLIB="${TARGET}-ranlib" diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 61e688de..9e1ec5d9 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -841,9 +841,10 @@ set(CMAKE_SYSTEM_NAME UnixPaths) set(CMAKE_SYSTEM_PROCESSOR $(echo "${TARGET}" | cut -d - -f1)) EOF - if [ -n "$RUSTC_WRAPPER" ]; then - echo "set(CMAKE_C_COMPILER_LAUNCHER ${RUSTC_WRAPPER})" >> cross_file.cmake - echo "set(CMAKE_CXX_COMPILER_LAUNCHER ${RUSTC_WRAPPER})" >> cross_file.cmake + if [ -n "$CC_WRAPPER" ] + then + echo "set(CMAKE_C_COMPILER_LAUNCHER ${CC_WRAPPER})" >> cross_file.cmake + echo "set(CMAKE_CXX_COMPILER_LAUNCHER ${CC_WRAPPER})" >> cross_file.cmake fi "${COOKBOOK_CMAKE}" "${COOKBOOK_SOURCE}" \ From 2a63e439d0bd57368eeb0a95b0a6c4659fab322f Mon Sep 17 00:00:00 2001 From: James Matlik Date: Sat, 5 Jul 2025 00:41:59 -0400 Subject: [PATCH 2670/3180] Pin uutils to 0.1.0 commit hash Building against the mainline resulted in instability, namely dd. Pinning to a stable release ensures stable behavior for the next release of RedoxOS. --- recipes/core/uutils/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/core/uutils/recipe.toml b/recipes/core/uutils/recipe.toml index f9bf51db..803b82f7 100644 --- a/recipes/core/uutils/recipe.toml +++ b/recipes/core/uutils/recipe.toml @@ -1,5 +1,6 @@ [source] git = "https://github.com/uutils/coreutils" +rev = "18b963ed6f612ac30ebca92426280cf4c1451f6a" [build] template = "custom" From f5e0b2d3be91a627a0cf704c3b0667b69f375d7d Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sat, 5 Jul 2025 09:35:38 +0000 Subject: [PATCH 2671/3180] Add gnome-web as wip --- recipes/wip/web/gnome-web/recipe.toml | 40 +++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 recipes/wip/web/gnome-web/recipe.toml diff --git a/recipes/wip/web/gnome-web/recipe.toml b/recipes/wip/web/gnome-web/recipe.toml new file mode 100644 index 00000000..b106ca73 --- /dev/null +++ b/recipes/wip/web/gnome-web/recipe.toml @@ -0,0 +1,40 @@ +# TODO: Need to port more libs +# newer version requires c_std=gnu23 +[source] +tar = "https://github.com/GNOME/epiphany/archive/refs/tags/46.4.tar.gz" + +[build] +dependencies = [ + "cairo", +# "gck2", +# "gcr4", + "gdk-pixbuf", + "gio2", +# "gio-unix2", +# "glib2", +# "granite7", +# "gsettings-desktop-schemas", + "gstreamer", + "gtk4", +# "gtk4-unix-print", +# "hogweed", +# "iso-codes", + "json-glib", + "libarchive", + "libadwaita", +# "libsecret", + "libsoup", + "libxml2", + "libnettle", +# "libportal-gtk4", + "sqlite3", +# "webkitgtk6", +# "webkitgtk-web-process-extension6" +] + +template = "custom" +script = """ +DYNAMIC_INIT + +cookbook_meson +""" From 0ae1974a03fe8dd58d34ab9bf7c19601f5af0866 Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Fri, 4 Jul 2025 02:46:14 -0400 Subject: [PATCH 2672/3180] Move struct Package to redox-pkg This deduplicates code as well as forces names to be sanitized. The API for both redox-pkg and cookbook need some reimagining due to the reshuffling, but this patch is not concerned with that as yet. --- Cargo.lock | 19 +++++++++- Cargo.toml | 1 + src/bin/cook.rs | 55 ++++++++++++++++++----------- src/bin/find_recipe.rs | 12 +++---- src/bin/list_recipes.rs | 6 ++-- src/bin/pkg_deps.rs | 10 +++--- src/lib.rs | 5 +-- src/package.rs | 77 ----------------------------------------- src/recipe.rs | 49 ++++++++++++++------------ src/recipe_find.rs | 38 -------------------- 10 files changed, 98 insertions(+), 174 deletions(-) delete mode 100644 src/package.rs delete mode 100644 src/recipe_find.rs diff --git a/Cargo.lock b/Cargo.lock index 00792606..d52cb2bb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1830,6 +1830,22 @@ dependencies = [ "toml 0.8.19", ] +[[package]] +name = "redox-pkg" +version = "0.2.5" +dependencies = [ + "anyhow", + "ignore", + "pkgar 0.1.15", + "pkgar-core 0.1.15", + "pkgar-keys 0.1.15", + "reqwest", + "serde", + "serde_derive", + "thiserror 1.0.69", + "toml 0.8.19", +] + [[package]] name = "redox-scheme" version = "0.2.4" @@ -1851,6 +1867,7 @@ dependencies = [ "pkgar 0.1.17", "pkgar-core 0.1.17", "pkgar-keys 0.1.17", + "redox-pkg 0.2.5", "redoxer", "serde", "tempfile", @@ -1876,7 +1893,7 @@ dependencies = [ "pkgar-core 0.1.15", "pkgar-keys 0.1.15", "rand", - "redox-pkg", + "redox-pkg 0.2.4", "redox_liner", "redox_syscall", "redoxfs", diff --git a/Cargo.toml b/Cargo.toml index c5aa5b09..9376f661 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,6 +27,7 @@ pbr = "1.0.2" pkgar = { path = "pkgar/pkgar" } pkgar-core = { path = "pkgar/pkgar-core" } pkgar-keys = { path = "pkgar/pkgar-keys" } +redox-pkg = { git = "https://gitlab.redox-os.org/redox-os/pkgutils" } redoxer = "0.2" serde = { version = "=1.0.197", features = ["derive"] } termion = "4" diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 23ad0cdd..c8fc1ddd 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1,8 +1,9 @@ use cookbook::blake3::blake3_progress; -use cookbook::package::StageToml; use cookbook::recipe::{BuildKind, CookRecipe, Recipe, SourceRecipe}; -use cookbook::recipe_find::recipe_find; +use pkg::package::Package; +use pkg::{recipes, PackageName}; use std::collections::VecDeque; +use std::convert::TryInto; use std::{ collections::BTreeSet, env, fs, @@ -15,6 +16,8 @@ use std::{ use termion::{color, style}; use walkdir::{DirEntry, WalkDir}; +use cookbook::WALK_DEPTH; + fn remove_all(path: &Path) -> Result<(), String> { if path.is_dir() { fs::remove_dir_all(path) @@ -504,7 +507,10 @@ fi"#, Ok(source_dir) } -fn auto_deps(stage_dir: &Path, dep_pkgars: &BTreeSet<(String, PathBuf)>) -> BTreeSet { +fn auto_deps( + stage_dir: &Path, + dep_pkgars: &BTreeSet<(PackageName, PathBuf)>, +) -> BTreeSet { let mut paths = BTreeSet::new(); let mut visited = BTreeSet::new(); // Base directories may need to be updated for packages that place binaries in odd locations. @@ -571,7 +577,12 @@ fn auto_deps(stage_dir: &Path, dep_pkgars: &BTreeSet<(String, PathBuf)>) -> BTre if let Ok(relative_path) = path.strip_prefix(stage_dir) { eprintln!("DEBUG: {} needs {}", relative_path.display(), name); } - needed.insert(name.to_string()); + if let Ok(name) = PackageName::new(name) { + needed.insert(name); + } else { + // AFAICT this shouldn't ever happen. + eprintln!("ERROR: `{name}` is an invalid package name; please report"); + } } } } @@ -623,18 +634,17 @@ fn build( recipe_dir: &Path, source_dir: &Path, target_dir: &Path, - name: &str, + name: &PackageName, recipe: &Recipe, -) -> Result<(PathBuf, BTreeSet), String> { +) -> Result<(PathBuf, BTreeSet), String> { let mut dep_pkgars = BTreeSet::new(); for dependency in recipe.build.dependencies.iter() { - //TODO: sanitize name - let dependency_dir = recipe_find(dependency); + let dependency_dir = recipes::find(dependency.as_str()); if dependency_dir.is_none() { return Err(format!("failed to find recipe directory '{}'", dependency)); } dep_pkgars.insert(( - dependency.to_string(), + dependency.clone(), dependency_dir .unwrap() .join("target") @@ -992,7 +1002,7 @@ done command.arg("bash").arg("-ex"); command.current_dir(&cookbook_build); command.env("COOKBOOK_BUILD", &cookbook_build); - command.env("COOKBOOK_NAME", name); + command.env("COOKBOOK_NAME", name.as_str()); command.env("COOKBOOK_RECIPE", &cookbook_recipe); command.env("COOKBOOK_REDOXER", &cookbook_redoxer); command.env("COOKBOOK_ROOT", &cookbook_root); @@ -1022,9 +1032,9 @@ fn package( _recipe_dir: &Path, stage_dir: &Path, target_dir: &Path, - name: &str, + name: &PackageName, recipe: &Recipe, - auto_deps: &BTreeSet, + auto_deps: &BTreeSet, ) -> Result { //TODO: metadata like dependencies, name, and version let package = &recipe.package; @@ -1072,8 +1082,8 @@ fn package( depends.push(dep.clone()); } } - let stage_toml = toml::to_string(&StageToml { - name: name.into(), + let stage_toml = toml::to_string(&Package { + name: name.clone(), version: "TODO".into(), target: env::var("TARGET") .map_err(|err| format!("failed to read TARGET: {:?}", err))?, @@ -1087,7 +1097,12 @@ fn package( Ok(package_file) } -fn cook(recipe_dir: &Path, name: &str, recipe: &Recipe, fetch_only: bool) -> Result<(), String> { +fn cook( + recipe_dir: &Path, + name: &PackageName, + recipe: &Recipe, + fetch_only: bool, +) -> Result<(), String> { let source_dir = fetch(recipe_dir, &recipe.source).map_err(|err| format!("failed to fetch: {}", err))?; @@ -1104,7 +1119,7 @@ fn cook(recipe_dir: &Path, name: &str, recipe: &Recipe, fetch_only: bool) -> Res create_dir(&target_dir)?; } - let (stage_dir, auto_deps) = build(recipe_dir, &source_dir, &target_dir, name, &recipe) + let (stage_dir, auto_deps) = build(recipe_dir, &source_dir, &target_dir, name, recipe) .map_err(|err| format!("failed to build: {}", err))?; let _package_file = package( @@ -1112,7 +1127,7 @@ fn cook(recipe_dir: &Path, name: &str, recipe: &Recipe, fetch_only: bool) -> Res &stage_dir, &target_dir, name, - &recipe, + recipe, &auto_deps, ) .map_err(|err| format!("failed to package: {}", err))?; @@ -1134,12 +1149,12 @@ fn main() { "--with-package-deps" if matching => with_package_deps = true, "--fetch-only" if matching => fetch_only = true, "-q" | "--quiet" if matching => quiet = true, - _ => recipe_names.push(arg), + _ => recipe_names.push(arg.try_into().expect("Invalid package name")), } } if with_package_deps { - recipe_names = match CookRecipe::get_package_deps_recursive(&recipe_names, 16) { + recipe_names = match CookRecipe::get_package_deps_recursive(&recipe_names, WALK_DEPTH) { Ok(ok) => ok, Err(err) => { eprintln!( @@ -1155,7 +1170,7 @@ fn main() { }; } - let recipes = match CookRecipe::new_recursive(&recipe_names, 16) { + let recipes = match CookRecipe::new_recursive(&recipe_names, WALK_DEPTH) { Ok(ok) => ok, Err(err) => { eprintln!( diff --git a/src/bin/find_recipe.rs b/src/bin/find_recipe.rs index 92b8ec05..8765b4eb 100644 --- a/src/bin/find_recipe.rs +++ b/src/bin/find_recipe.rs @@ -1,7 +1,7 @@ -use cookbook::recipe_find::recipe_find; use std::env::args; use std::process::exit; -// use clap::Parser; + +use pkg::recipes; fn usage() { println!("Usage: find_recipe recipe_name"); @@ -12,14 +12,14 @@ fn main() { exit(2); } let recipe_name = &args().last().unwrap(); - match recipe_find(recipe_name) { + match recipes::find(recipe_name) { Some(path) => { println!("{}", path.display()); exit(0); - }, + } None => { - eprintln!("recipe {} not found", recipe_name); - exit(1); + eprintln!("recipe {} not found", recipe_name); + exit(1); } } } diff --git a/src/bin/list_recipes.rs b/src/bin/list_recipes.rs index 81f88e47..59a30df1 100644 --- a/src/bin/list_recipes.rs +++ b/src/bin/list_recipes.rs @@ -1,13 +1,13 @@ -use cookbook::recipe_find::list_recipes; use std::process::exit; -// use clap::Parser; + +use pkg::recipes; fn main() { let print_short = std::env::args() .nth(1) .map_or(false, |a| a == "-s" || a == "--short"); - let result = list_recipes(Default::default()); + let result = recipes::list(""); if result.is_empty() { eprintln!("recipes not found"); exit(1); diff --git a/src/bin/pkg_deps.rs b/src/bin/pkg_deps.rs index 657b3039..757a0ffe 100644 --- a/src/bin/pkg_deps.rs +++ b/src/bin/pkg_deps.rs @@ -1,12 +1,14 @@ -use cookbook::package::StageToml; use std::{env::args, process::ExitCode}; -/// Same as `cookbook/src/bin/cook.rs`. -const DEP_DEPTH: usize = 16; +use pkg::package::Package; + +use cookbook::WALK_DEPTH; fn main() -> ExitCode { let names = args().skip(1).collect::>(); - let packages = StageToml::new_recursive(&names, DEP_DEPTH).expect("package not found"); + // TODO: Ugly vec + let names: Vec<&str> = names.iter().map(|s| s.as_str()).collect(); + let packages = Package::new_recursive(&names, WALK_DEPTH).expect("package not found"); for package in packages { println!("{}", package.name); diff --git a/src/lib.rs b/src/lib.rs index 78e3b9a1..2892e8c9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,7 @@ pub mod blake3; -pub mod package; pub mod recipe; -pub mod recipe_find; mod progress_bar; + +/// Default for maximum number of levels to descend down dependencies tree. +pub const WALK_DEPTH: usize = 16; diff --git a/src/package.rs b/src/package.rs deleted file mode 100644 index c86a610f..00000000 --- a/src/package.rs +++ /dev/null @@ -1,77 +0,0 @@ -use std::{env, fs}; - -use crate::recipe_find::recipe_find; - -//TODO: share struct with pkgutils? -#[derive(PartialEq, serde::Deserialize, serde::Serialize)] -pub struct StageToml { - pub name: String, - pub version: String, - pub target: String, - pub depends: Vec, -} - -impl StageToml { - pub fn new(name: String) -> Result { - //TODO: sanitize recipe name? - let dir = recipe_find(&name); - if dir.is_none() { - return Err(format!("failed to find recipe directory '{}'", name)); - } - let dir = dir.unwrap(); - let target = - env::var("TARGET").map_err(|err| format!("failed to read TARGET: {:?}", err))?; - - let file = dir.join("target").join(target).join("stage.toml"); - if !file.is_file() { - return Err(format!("failed to find package file '{}'", file.display())); - } - - let toml = fs::read_to_string(&file).map_err(|err| { - format!( - "failed to read package file '{}': {}\n{:#?}", - file.display(), - err, - err - ) - })?; - - toml::from_str(&toml).map_err(|err| { - format!( - "failed to parse package file '{}': {}\n{:#?}", - file.display(), - err, - err - ) - }) - } - - pub fn new_recursive(names: &[String], recursion: usize) -> Result, String> { - if recursion == 0 { - return Err(format!( - "recursion limit while processing build dependencies: {:#?}", - names - )); - } - - let mut packages = Vec::new(); - for name in names { - let package = Self::new(name.clone())?; - - let dependencies = Self::new_recursive(&package.depends, recursion - 1) - .map_err(|err| format!("{}: failed on loading dependencies:\n{}", name, err))?; - - for dependency in dependencies { - if !packages.contains(&dependency) { - packages.push(dependency); - } - } - - if !packages.contains(&package) { - packages.push(package); - } - } - - Ok(packages) - } -} diff --git a/src/recipe.rs b/src/recipe.rs index 456f6097..5d66b224 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -1,12 +1,8 @@ -use std::{ - fs, - path::PathBuf, -}; +use std::{convert::TryInto, fs, path::PathBuf}; +use pkg::{recipes, PackageName}; use serde::{Deserialize, Serialize}; -use crate::recipe_find::recipe_find; - /// Specifies how to download the source for a recipe #[derive(Debug, Deserialize, PartialEq, Serialize)] #[serde(untagged)] @@ -83,19 +79,19 @@ pub struct BuildRecipe { #[serde(flatten)] pub kind: BuildKind, #[serde(default)] - pub dependencies: Vec, + pub dependencies: Vec, } #[derive(Debug, Default, Deserialize, PartialEq, Serialize)] pub struct PackageRecipe { #[serde(default)] - pub dependencies: Vec, + pub dependencies: Vec, } /// Everything required to build a Redox package #[derive(Debug, Deserialize, PartialEq, Serialize)] pub struct Recipe { - /// Specifies how to donload the source for this recipe + /// Specifies how to download the source for this recipe pub source: Option, /// Specifies how to build this recipe pub build: BuildRecipe, @@ -106,15 +102,17 @@ pub struct Recipe { #[derive(Debug, PartialEq)] pub struct CookRecipe { - pub name: String, + pub name: PackageName, pub dir: PathBuf, pub recipe: Recipe, } impl CookRecipe { - pub fn new(name: String) -> Result { - //TODO: sanitize recipe name? - let dir = recipe_find(&name); + pub fn new(name: &str) -> Result { + let name: PackageName = name + .try_into() + .map_err(|e| format!("Invalid package name: {e}"))?; + let dir = recipes::find(name.as_str()); if dir.is_none() { return Err(format!("failed to find recipe directory '{}'", name)); } @@ -142,10 +140,11 @@ impl CookRecipe { ) })?; + let dir = dir.to_path_buf(); Ok(Self { name, dir, recipe }) } - pub fn new_recursive(names: &[String], recursion: usize) -> Result, String> { + pub fn new_recursive(names: &[PackageName], recursion: usize) -> Result, String> { if recursion == 0 { return Err(format!( "recursion limit while processing build dependencies: {:#?}", @@ -155,7 +154,7 @@ impl CookRecipe { let mut recipes = Vec::new(); for name in names { - let recipe = Self::new(name.clone())?; + let recipe = Self::new(name.as_str())?; let dependencies = Self::new_recursive(&recipe.recipe.build.dependencies, recursion - 1).map_err( @@ -176,7 +175,10 @@ impl CookRecipe { Ok(recipes) } - pub fn get_package_deps_recursive(names: &[String], recursion: usize) -> Result, String> { + pub fn get_package_deps_recursive( + names: &[PackageName], + recursion: usize, + ) -> Result, String> { if recursion == 0 { return Err(format!( "recursion limit while processing package dependencies: {:#?}", @@ -184,14 +186,15 @@ impl CookRecipe { )); } - let mut recipes = Vec::new(); + let mut recipes: Vec = Vec::new(); for name in names { - let recipe = Self::new(name.clone())?; + let recipe = Self::new(name.as_str())?; - let dependencies = - Self::get_package_deps_recursive(&recipe.recipe.package.dependencies, recursion - 1).map_err( - |err| format!("{}: failed on loading package dependencies:\n{}", name, err), - )?; + let dependencies = Self::get_package_deps_recursive( + &recipe.recipe.package.dependencies, + recursion - 1, + ) + .map_err(|err| format!("{}: failed on loading package dependencies:\n{}", name, err))?; for dependency in dependencies { if !recipes.contains(&dependency) { @@ -199,7 +202,7 @@ impl CookRecipe { } } - if !recipes.contains(&name) { + if !recipes.contains(name) { recipes.push(name.clone()); } } diff --git a/src/recipe_find.rs b/src/recipe_find.rs deleted file mode 100644 index b0cedcbd..00000000 --- a/src/recipe_find.rs +++ /dev/null @@ -1,38 +0,0 @@ -use std::collections::HashMap; -use std::ffi::OsStr; -use std::path::PathBuf; -use std::sync::LazyLock; - -static RECIPE_PATHS: LazyLock> = LazyLock::new(|| { - let mut recipe_paths = HashMap::new(); - for entry_res in ignore::Walk::new("recipes") { - let entry = entry_res.unwrap(); - if entry.file_name() == OsStr::new("recipe.sh") || entry.file_name() == OsStr::new("recipe.toml") { - let recipe_file = entry.path(); - let Some(recipe_dir) = recipe_file.parent() else { continue }; - let Some(recipe_name) = recipe_dir.file_name().and_then(|x| x.to_str()) else { continue }; - if let Some(other_dir) = recipe_paths.insert(recipe_name.to_string(), recipe_dir.to_path_buf()) { - panic!( - "recipe {} has two or more entries {:?}, {:?}", - recipe_name, - other_dir, - recipe_dir - ); - } - } - } - recipe_paths -}); - -pub fn recipe_find(recipe: &str) -> Option { - RECIPE_PATHS.get(recipe).cloned() -} - -pub fn list_recipes(prefix: PathBuf) -> Vec { - let mut recipes = Vec::::new(); - for (_name, path) in RECIPE_PATHS.iter() { - recipes.push(prefix.join(path)); - } - recipes.sort(); - recipes -} From 5db4d1df97efa5364334afec7cb713454548fe17 Mon Sep 17 00:00:00 2001 From: James Matlik Date: Sat, 5 Jul 2025 10:34:25 -0400 Subject: [PATCH 2673/3180] Add TODO about why we pinned the version --- recipes/core/uutils/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/core/uutils/recipe.toml b/recipes/core/uutils/recipe.toml index 803b82f7..56fcb14d 100644 --- a/recipes/core/uutils/recipe.toml +++ b/recipes/core/uutils/recipe.toml @@ -1,3 +1,4 @@ +# TODO Fix coreutils i18n/l10n behavior on Redox [source] git = "https://github.com/uutils/coreutils" rev = "18b963ed6f612ac30ebca92426280cf4c1451f6a" From 2bd9da210079192df04b58084aa678207f310ebe Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sat, 5 Jul 2025 14:57:49 +0000 Subject: [PATCH 2674/3180] Pin RustPython version --- recipes/dev/rustpython/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/dev/rustpython/recipe.toml b/recipes/dev/rustpython/recipe.toml index a2b1f134..d82595c2 100644 --- a/recipes/dev/rustpython/recipe.toml +++ b/recipes/dev/rustpython/recipe.toml @@ -1,5 +1,8 @@ [source] git = "https://github.com/RustPython/RustPython" +# requires https://github.com/rust-lang/rust/pull/137319 +# since https://github.com/RustPython/RustPython/pull/5858 +rev = "e41d7f523a74c36b9f360d992ce0a9eb7e604c2b" [build] dependencies = [ From bc2a4d908a2b9eca6ff16c5878f884ea2755f47a Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sat, 5 Jul 2025 15:45:05 +0000 Subject: [PATCH 2675/3180] Add an option to not update recipes --- fetch.sh | 18 +++++++++++++++--- repo.sh | 3 +++ src/bin/cook.rs | 26 ++++++++++++++++++++++++-- 3 files changed, 42 insertions(+), 5 deletions(-) diff --git a/fetch.sh b/fetch.sh index 75552785..3186cb0c 100755 --- a/fetch.sh +++ b/fetch.sh @@ -3,11 +3,23 @@ set -e source config.sh -if [ $# = 0 ] +recipes="" +for arg in "${@:1}" +do + if [ "$arg" == "--nonstop" ] + then + set +e + elif [ "$arg" == "--offline" ] + then + export COOKBOOK_OFFLINE="1" + else + recipes+=" $arg" + fi +done + +if [ "$recipes" == "" ] then recipes="$(target/release/list_recipes)" -else - recipes="$@" fi for recipe_path in $recipes diff --git a/repo.sh b/repo.sh index a478cce0..9cde102b 100755 --- a/repo.sh +++ b/repo.sh @@ -17,6 +17,9 @@ do elif [ "$arg" == "--nonstop" ] then set +e + elif [ "$arg" == "--offline" ] + then + export COOKBOOK_OFFLINE="1" else recipes+=" $arg" fi diff --git a/src/bin/cook.rs b/src/bin/cook.rs index c8fc1ddd..658e0a8a 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -213,6 +213,25 @@ function DYNAMIC_INIT { } "#; +fn fetch_offline(recipe_dir: &Path, source: &Option) -> Result { + let source_dir = recipe_dir.join("source"); + match source { + Some(SourceRecipe::SameAs { same_as: _ }) | Some(SourceRecipe::Path { path: _ }) | None => { + return fetch(recipe_dir, source); + } + Some(SourceRecipe::Git { git: _, upstream: _, branch: _, rev: _, patches: _, script: _ }) | Some(SourceRecipe::Tar { tar: _, blake3: _, patches: _, script: _ }) => { + if !source_dir.is_dir() { + return Err(format!( + "'{dir}' is not exist and unable to continue in offline mode", + dir = source_dir.display(), + )); + } + } + } + + Ok(source_dir) +} + fn fetch(recipe_dir: &Path, source: &Option) -> Result { let source_dir = recipe_dir.join("source"); match source { @@ -1103,8 +1122,11 @@ fn cook( recipe: &Recipe, fetch_only: bool, ) -> Result<(), String> { - let source_dir = - fetch(recipe_dir, &recipe.source).map_err(|err| format!("failed to fetch: {}", err))?; + let is_offline = env::var("COOKBOOK_OFFLINE").unwrap_or("".to_string()) == "1"; + let source_dir = match is_offline { + true => fetch_offline(recipe_dir, &recipe.source), + false => fetch(recipe_dir, &recipe.source), + }.map_err(|err| format!("failed to fetch: {}", err))?; if fetch_only { return Ok(()); From 3ad8ddf69eb57621f47c31d2d73498857b21e731 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sun, 6 Jul 2025 08:06:09 +0000 Subject: [PATCH 2676/3180] Fix libsodium compilation --- recipes/libs/libsodium/recipe.toml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/recipes/libs/libsodium/recipe.toml b/recipes/libs/libsodium/recipe.toml index 5c4634b5..d3e1a3c6 100644 --- a/recipes/libs/libsodium/recipe.toml +++ b/recipes/libs/libsodium/recipe.toml @@ -1,7 +1,14 @@ [source] tar = "https://github.com/jedisct1/libsodium/archive/1.0.16.tar.gz" blake3 = "2482633f872c173f9a42e6badb44c3efb042e783e664fdf8b1046babfa2405e7" -script = "./autogen.sh" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" [build] -template = "configure" +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From 76c77039cca207cfb2db3169e61cd07b52edf232 Mon Sep 17 00:00:00 2001 From: Ron Williams Date: Mon, 7 Jul 2025 05:37:18 -0700 Subject: [PATCH 2677/3180] Copy missing .o and .a files from prefix into the gcc package (Janky fix) --- recipes/dev/gcc13/recipe.toml | 5 ++++- recipes/tests/openposixtestsuite/recipe.toml | 1 - 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/recipes/dev/gcc13/recipe.toml b/recipes/dev/gcc13/recipe.toml index 96281c0f..928e679a 100644 --- a/recipes/dev/gcc13/recipe.toml +++ b/recipes/dev/gcc13/recipe.toml @@ -41,5 +41,8 @@ COOKBOOK_CONFIGURE_FLAGS=( "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" all-gcc "${COOKBOOK_MAKE}" install-gcc DESTDIR="${COOKBOOK_STAGE}" ln -s "gcc" "${COOKBOOK_STAGE}/bin/cc" -ln -s "/libexec/gcc/${GNU_TARGET}/13.2.0/cc1" "${COOKBOOK_STAGE}/bin/cc1" +mkdir -p "${COOKBOOK_STAGE}/usr/libexec" +ln -s "/libexec/gcc" "${COOKBOOK_STAGE}/usr/libexec/gcc" +# TODO These files should be created in a recipe and added as a dependency for gcc13 +cp -fpv "${COOKBOOK_HOST_SYSROOT}"/lib/gcc/"${GNU_TARGET}"/13.2.0/{*.o,*.a} "${COOKBOOK_STAGE}/lib" """ diff --git a/recipes/tests/openposixtestsuite/recipe.toml b/recipes/tests/openposixtestsuite/recipe.toml index 7f817630..6aecb889 100644 --- a/recipes/tests/openposixtestsuite/recipe.toml +++ b/recipes/tests/openposixtestsuite/recipe.toml @@ -6,7 +6,6 @@ branch = "redox" template = "custom" script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ -# "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" build-tests mkdir -pv "${COOKBOOK_STAGE}/share/openposixtests" rsync -av --delete . "${COOKBOOK_STAGE}/share/openposixtestsuite" """ From 80773c333dbee6469b7527111f8f9d06094d260c Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Mon, 7 Jul 2025 19:10:52 +0000 Subject: [PATCH 2678/3180] Simplify llvm18 recipe --- recipes/dev/llvm18/recipe.toml | 50 +++++++++++++++------------------- 1 file changed, 22 insertions(+), 28 deletions(-) diff --git a/recipes/dev/llvm18/recipe.toml b/recipes/dev/llvm18/recipe.toml index 7b34605e..b2592195 100644 --- a/recipes/dev/llvm18/recipe.toml +++ b/recipes/dev/llvm18/recipe.toml @@ -11,32 +11,29 @@ dependencies = [ script = """ DYNAMIC_INIT -cat > CMakeToolchain-x86_64.cmake < Date: Mon, 7 Jul 2025 20:14:05 +0000 Subject: [PATCH 2679/3180] Fix compilation --- recipes/dev/llvm18/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/dev/llvm18/recipe.toml b/recipes/dev/llvm18/recipe.toml index b2592195..d6cd8458 100644 --- a/recipes/dev/llvm18/recipe.toml +++ b/recipes/dev/llvm18/recipe.toml @@ -34,6 +34,7 @@ export LDFLAGS="-Wl,-rpath-link,${COOKBOOK_SYSROOT}/lib $LDFLAGS" COOKBOOK_CMAKE_FLAGS=( -DCMAKE_CXX_FLAGS="--std=gnu++11" + -DBUILD_SHARED_LIBS=False -DLLVM_LINK_LLVM_DYLIB=On -DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE=$(realpath "${COOKBOOK_RECIPE}/native.cmake")" -DLLVM_BUILD_BENCHMARKS=Off From 6445edc868df3f00d4bc85d61c5fe351e4d7d9f4 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Mon, 7 Jul 2025 20:36:46 +0000 Subject: [PATCH 2680/3180] Simplify mesa recipe --- recipes/libs/mesa/recipe.toml | 52 ++++++++--------------------------- 1 file changed, 12 insertions(+), 40 deletions(-) diff --git a/recipes/libs/mesa/recipe.toml b/recipes/libs/mesa/recipe.toml index e9adb168..bda5d5f2 100644 --- a/recipes/libs/mesa/recipe.toml +++ b/recipes/libs/mesa/recipe.toml @@ -11,53 +11,25 @@ dependencies = [ "zlib", ] script = """ -#TODO: do this in cook instead -unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP - export CFLAGS="-I${COOKBOOK_SYSROOT}/include -DHAVE_PTHREAD=1" export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include -DHAVE_PTHREAD=1" export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib --static" export LLVM_CONFIG="${TARGET}-llvm-config" -# TODO: Fix this annoying shite -echo "[binaries]" > cross_file.txt -echo "c = '${TARGET}-gcc'" >> cross_file.txt -echo "cpp = '${TARGET}-g++'" >> cross_file.txt -echo "ar = '${TARGET}-ar'" >> cross_file.txt -echo "strip = '${TARGET}-strip'" >> cross_file.txt -echo "pkgconfig = '${TARGET}-pkg-config'" >> cross_file.txt -echo "llvm-config = '${TARGET}-llvm-config'" >> cross_file.txt - -echo "[host_machine]" >> cross_file.txt -echo "system = 'redox'" >> cross_file.txt -echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt -echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt -echo "endian = 'little'" >> cross_file.txt - -echo "[paths]" >> cross_file.txt -echo "prefix = '/usr'" >> cross_file.txt -echo "libdir = 'lib'" >> cross_file.txt -echo "bindir = 'bin'" >> cross_file.txt - -echo "[properties]" >> cross_file.txt -echo "needs_exe_wrapper = true" >> cross_file.txt - -meson "${COOKBOOK_SOURCE}" . \ - --cross-file cross_file.txt \ - --buildtype release \ - --strip \ - -Ddefault_library=static \ - -Dglx=disabled \ - -Dllvm=enabled \ - -Dosmesa=true \ - -Dplatforms= \ - -Dshader-cache=disabled \ - -Dshared-llvm=disabled \ +COOKBOOK_MESON_FLAGS=( + -Ddefault_library=static + -Dglx=disabled + -Dllvm=enabled + -Dosmesa=true + -Dplatforms= + -Dshader-cache=disabled + -Dshared-llvm=disabled -Dshared-glapi=disabled -ninja -v -DESTDIR="${COOKBOOK_STAGE}" ninja install +) + +cookbook_meson # Hack to add LLVM libs #TODO: only add necessary LLVM libs, not all of them -sed -i "s/ -lOSMesa / -lOSMesa $("${TARGET}-llvm-config" --libs) -lstdc++ /" "${COOKBOOK_STAGE}/usr/lib/pkgconfig/osmesa.pc" +sed -i "s/ -lOSMesa / -lOSMesa $("${LLVM_CONFIG}" --libs) -lstdc++ /" "${COOKBOOK_STAGE}/usr/local/lib/pkgconfig/osmesa.pc" """ From 49bb9d8b64f7b89d77482fe69933dce20918efa6 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Mon, 7 Jul 2025 22:26:37 +0000 Subject: [PATCH 2681/3180] Set meson cross file prefix to /usr --- recipes/libs/mesa/recipe.toml | 2 +- src/bin/cook.rs | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/recipes/libs/mesa/recipe.toml b/recipes/libs/mesa/recipe.toml index bda5d5f2..aa7b394c 100644 --- a/recipes/libs/mesa/recipe.toml +++ b/recipes/libs/mesa/recipe.toml @@ -31,5 +31,5 @@ cookbook_meson # Hack to add LLVM libs #TODO: only add necessary LLVM libs, not all of them -sed -i "s/ -lOSMesa / -lOSMesa $("${LLVM_CONFIG}" --libs) -lstdc++ /" "${COOKBOOK_STAGE}/usr/local/lib/pkgconfig/osmesa.pc" +sed -i "s/ -lOSMesa / -lOSMesa $("${LLVM_CONFIG}" --libs) -lstdc++ /" "${COOKBOOK_STAGE}/usr/lib/pkgconfig/osmesa.pc" """ diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 658e0a8a..6f29b7a8 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -920,6 +920,11 @@ function cookbook_meson { echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt echo "endian = 'little'" >> cross_file.txt + echo "[paths]" >> cross_file.txt + echo "prefix = '/usr'" >> cross_file.txt + echo "libdir = 'lib'" >> cross_file.txt + echo "bindir = 'bin'" >> cross_file.txt + echo "[properties]" >> cross_file.txt echo "needs_exe_wrapper = true" >> cross_file.txt echo "sys_root = '${COOKBOOK_SYSROOT}'" >> cross_file.txt From 26c680d57e57ac2e26b286f4a179f8ee961aa7a4 Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Mon, 7 Jul 2025 02:44:36 -0400 Subject: [PATCH 2682/3180] Improve package and recipes API The main changes here are to leverage PackageError and PackageName more. I also fixed a bug I introduced by misunderstanding code in auto_deps. auto_deps should return PackageNames instead of Strings, but I converted the Strings too early. --- Cargo.lock | 4 +-- src/bin/cook.rs | 25 +++++++++++----- src/bin/pkg_deps.rs | 20 ++++++++----- src/recipe.rs | 71 ++++++++++++++++++++------------------------- 4 files changed, 62 insertions(+), 58 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d52cb2bb..8ba168ac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1832,7 +1832,7 @@ dependencies = [ [[package]] name = "redox-pkg" -version = "0.2.5" +version = "0.2.7" dependencies = [ "anyhow", "ignore", @@ -1867,7 +1867,7 @@ dependencies = [ "pkgar 0.1.17", "pkgar-core 0.1.17", "pkgar-keys 0.1.17", - "redox-pkg 0.2.5", + "redox-pkg 0.2.7", "redoxer", "serde", "tempfile", diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 658e0a8a..e2ba0d75 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -219,7 +219,20 @@ fn fetch_offline(recipe_dir: &Path, source: &Option) -> Result { return fetch(recipe_dir, source); } - Some(SourceRecipe::Git { git: _, upstream: _, branch: _, rev: _, patches: _, script: _ }) | Some(SourceRecipe::Tar { tar: _, blake3: _, patches: _, script: _ }) => { + Some(SourceRecipe::Git { + git: _, + upstream: _, + branch: _, + rev: _, + patches: _, + script: _, + }) + | Some(SourceRecipe::Tar { + tar: _, + blake3: _, + patches: _, + script: _, + }) => { if !source_dir.is_dir() { return Err(format!( "'{dir}' is not exist and unable to continue in offline mode", @@ -596,12 +609,7 @@ fn auto_deps( if let Ok(relative_path) = path.strip_prefix(stage_dir) { eprintln!("DEBUG: {} needs {}", relative_path.display(), name); } - if let Ok(name) = PackageName::new(name) { - needed.insert(name); - } else { - // AFAICT this shouldn't ever happen. - eprintln!("ERROR: `{name}` is an invalid package name; please report"); - } + needed.insert(name.to_string()); } } } @@ -1126,7 +1134,8 @@ fn cook( let source_dir = match is_offline { true => fetch_offline(recipe_dir, &recipe.source), false => fetch(recipe_dir, &recipe.source), - }.map_err(|err| format!("failed to fetch: {}", err))?; + } + .map_err(|err| format!("failed to fetch: {}", err))?; if fetch_only { return Ok(()); diff --git a/src/bin/pkg_deps.rs b/src/bin/pkg_deps.rs index 757a0ffe..a458935d 100644 --- a/src/bin/pkg_deps.rs +++ b/src/bin/pkg_deps.rs @@ -1,18 +1,22 @@ -use std::{env::args, process::ExitCode}; +use std::env::args; -use pkg::package::Package; +use pkg::{ + package::{Package, PackageError}, + PackageName, +}; use cookbook::WALK_DEPTH; -fn main() -> ExitCode { - let names = args().skip(1).collect::>(); - // TODO: Ugly vec - let names: Vec<&str> = names.iter().map(|s| s.as_str()).collect(); - let packages = Package::new_recursive(&names, WALK_DEPTH).expect("package not found"); +fn main() -> Result<(), PackageError> { + let names: Vec<_> = args() + .skip(1) + .map(PackageName::new) + .collect::>()?; + let packages = Package::new_recursive(&names, WALK_DEPTH)?; for package in packages { println!("{}", package.name); } - ExitCode::SUCCESS + Ok(()) } diff --git a/src/recipe.rs b/src/recipe.rs index 5d66b224..f3e11021 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -1,7 +1,10 @@ use std::{convert::TryInto, fs, path::PathBuf}; -use pkg::{recipes, PackageName}; -use serde::{Deserialize, Serialize}; +use pkg::{package::PackageError, recipes, PackageName}; +use serde::{ + de::{value::Error as DeError, Error as DeErrorT}, + Deserialize, Serialize, +}; /// Specifies how to download the source for a recipe #[derive(Debug, Deserialize, PartialEq, Serialize)] @@ -108,48 +111,33 @@ pub struct CookRecipe { } impl CookRecipe { - pub fn new(name: &str) -> Result { - let name: PackageName = name - .try_into() - .map_err(|e| format!("Invalid package name: {e}"))?; - let dir = recipes::find(name.as_str()); - if dir.is_none() { - return Err(format!("failed to find recipe directory '{}'", name)); - } - let dir = dir.unwrap(); + pub fn new( + name: impl TryInto, + ) -> Result { + let name: PackageName = name.try_into()?; + let dir = recipes::find(name.as_str()) + .ok_or_else(|| PackageError::PackageNotFound(name.clone()))?; let file = dir.join("recipe.toml"); if !file.is_file() { - return Err(format!("failed to find recipe file '{}'", file.display())); + return Err(PackageError::FileMissing(file)); } - let toml = fs::read_to_string(&file).map_err(|err| { - format!( - "failed to read recipe file '{}': {}\n{:#?}", - file.display(), - err, - err - ) - })?; + let toml = fs::read_to_string(&file) + .map_err(|err| PackageError::Parse(DeError::custom(err), Some(file.clone())))?; - let recipe: Recipe = toml::from_str(&toml).map_err(|err| { - format!( - "failed to parse recipe file '{}': {}\n{:#?}", - file.display(), - err, - err - ) - })?; + let recipe: Recipe = toml::from_str(&toml) + .map_err(|err| PackageError::Parse(DeError::custom(err), Some(file)))?; let dir = dir.to_path_buf(); Ok(Self { name, dir, recipe }) } - pub fn new_recursive(names: &[PackageName], recursion: usize) -> Result, String> { + pub fn new_recursive( + names: &[PackageName], + recursion: usize, + ) -> Result, PackageError> { if recursion == 0 { - return Err(format!( - "recursion limit while processing build dependencies: {:#?}", - names - )); + return Err(PackageError::Recursion(Default::default())); } let mut recipes = Vec::new(); @@ -158,7 +146,10 @@ impl CookRecipe { let dependencies = Self::new_recursive(&recipe.recipe.build.dependencies, recursion - 1).map_err( - |err| format!("{}: failed on loading build dependencies:\n{}", name, err), + |mut err| { + err.append_recursion(name); + err + }, )?; for dependency in dependencies { @@ -178,12 +169,9 @@ impl CookRecipe { pub fn get_package_deps_recursive( names: &[PackageName], recursion: usize, - ) -> Result, String> { + ) -> Result, PackageError> { if recursion == 0 { - return Err(format!( - "recursion limit while processing package dependencies: {:#?}", - names - )); + return Err(PackageError::Recursion(Default::default())); } let mut recipes: Vec = Vec::new(); @@ -194,7 +182,10 @@ impl CookRecipe { &recipe.recipe.package.dependencies, recursion - 1, ) - .map_err(|err| format!("{}: failed on loading package dependencies:\n{}", name, err))?; + .map_err(|mut err| { + err.append_recursion(name); + err + })?; for dependency in dependencies { if !recipes.contains(&dependency) { From 144d804a3a4563d63c45ae56b974d4969a2306c7 Mon Sep 17 00:00:00 2001 From: auronandace Date: Tue, 8 Jul 2025 17:19:02 +0100 Subject: [PATCH 2683/3180] be explicit in collecting to a Vec of PackageName --- Cargo.lock | 1 + src/bin/pkg_deps.rs | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 8ba168ac..ef0be325 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1833,6 +1833,7 @@ dependencies = [ [[package]] name = "redox-pkg" version = "0.2.7" +source = "git+https://gitlab.redox-os.org/redox-os/pkgutils#436c97a0df26bfce24e33a5a86a21218aca7591f" dependencies = [ "anyhow", "ignore", diff --git a/src/bin/pkg_deps.rs b/src/bin/pkg_deps.rs index a458935d..4fddb79d 100644 --- a/src/bin/pkg_deps.rs +++ b/src/bin/pkg_deps.rs @@ -8,7 +8,7 @@ use pkg::{ use cookbook::WALK_DEPTH; fn main() -> Result<(), PackageError> { - let names: Vec<_> = args() + let names: Vec = args() .skip(1) .map(PackageName::new) .collect::>()?; From 32da01983e5acf86cfb9efc2c563f1f5e9648652 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 9 Jul 2025 22:33:21 +0700 Subject: [PATCH 2684/3180] Add CI Tests --- .gitlab-ci.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 00000000..7329d74d --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,21 @@ +image: "rust:latest" + +stages: + - lint + - test + +workflow: + rules: + - if: '$CI_COMMIT_BRANCH == "master"' + - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"' + +fmt: + stage: lint + script: + - rustup component add rustfmt + - cargo fmt -- --check + +cargo-test: + stage: test + script: + - cargo test --locked From e03652bffee594a93051861b10fd99741ba3f118 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 9 Jul 2025 22:41:41 +0700 Subject: [PATCH 2685/3180] Fix build --- .gitlab-ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7329d74d..d9b1d591 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,6 +4,9 @@ stages: - lint - test +variables: + GIT_SUBMODULE_STRATEGY: "recursive" + workflow: rules: - if: '$CI_COMMIT_BRANCH == "master"' From 1c66b1f29766b36bb98b55e950567217e654785f Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Wed, 9 Jul 2025 15:48:22 +0000 Subject: [PATCH 2686/3180] Update pkgar cookbook --- Cargo.lock | 1139 +++++++++++++++++++++++++++++----------------------- pkgar | 2 +- 2 files changed, 641 insertions(+), 500 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ef0be325..ce231b23 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13,20 +13,19 @@ dependencies = [ [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aes" -version = "0.7.5" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ - "cfg-if 1.0.0", - "cipher 0.3.0", + "cfg-if 1.0.1", + "cipher", "cpufeatures", - "opaque-debug", ] [[package]] @@ -79,9 +78,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.18" +version = "0.6.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" dependencies = [ "anstyle", "anstyle-parse", @@ -94,44 +93,44 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" [[package]] name = "anstyle-parse" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" dependencies = [ "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.7" +version = "3.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" +checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" dependencies = [ "anstyle", - "once_cell", + "once_cell_polyfill", "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.95" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" [[package]] name = "arg_parser" @@ -169,9 +168,9 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "async-compression" -version = "0.4.18" +version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df895a515f70646414f4b45c0b79082783b80552b373a68283012928df56f522" +checksum = "40f6024f3f856663b45fd0c9b6f2024034a702f453549449e0d84a305900dad4" dependencies = [ "brotli", "futures-core", @@ -193,18 +192,18 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "backtrace" -version = "0.3.74" +version = "0.3.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ "addr2line", - "cfg-if 1.0.0", + "cfg-if 1.0.1", "libc", "miniz_oxide", "object", @@ -226,9 +225,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" [[package]] name = "bitflags" @@ -238,9 +237,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.8.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" [[package]] name = "blake2" @@ -287,7 +286,7 @@ dependencies = [ "arrayref", "arrayvec 0.7.6", "cc", - "cfg-if 1.0.0", + "cfg-if 1.0.1", "constant_time_eq 0.3.1", ] @@ -302,9 +301,9 @@ dependencies = [ [[package]] name = "brotli" -version = "7.0.0" +version = "8.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" +checksum = "9991eea70ea4f293524138648e41ee89b0b2b12ddef3b255effa43c8056e0e0d" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -313,9 +312,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "4.0.2" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74fa05ad7d803d413eb8380983b092cbbaf9a85f151b871360e7b00cd7060b37" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -333,15 +332,15 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.17.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "bytecount" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" +checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" [[package]] name = "bytemuck" @@ -371,15 +370,15 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.9.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "cc" -version = "1.2.11" +version = "1.2.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4730490333d58093109dc02c23174c3f4d490998c3fed3cc8e82d57afedb9cf" +checksum = "5c1599538de2394445747c8cf7935946e3cc27e9625f889d979bfb2aaf569362" dependencies = [ "shlex", ] @@ -392,9 +391,9 @@ checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" [[package]] name = "cfg_aliases" @@ -408,32 +407,23 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" dependencies = [ - "cfg-if 1.0.0", - "cipher 0.4.4", + "cfg-if 1.0.1", + "cipher", "cpufeatures", ] [[package]] name = "chrono" -version = "0.4.39" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "wasm-bindgen", - "windows-targets 0.52.6", -] - -[[package]] -name = "cipher" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" -dependencies = [ - "generic-array", + "windows-link", ] [[package]] @@ -464,20 +454,20 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "console" -version = "0.15.10" +version = "0.15.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea3c6ecd8059b57859df5c69830340ed3c41d30e3da0c1cbed90a96ac853041b" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" dependencies = [ "encode_unicode", "libc", "once_cell", - "unicode-width 0.2.0", + "unicode-width 0.2.1", "windows-sys 0.59.0", ] @@ -510,9 +500,9 @@ dependencies = [ [[package]] name = "crc" -version = "3.2.1" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" +checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675" dependencies = [ "crc-catalog", ] @@ -529,14 +519,14 @@ version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 1.0.1", ] [[package]] name = "crossbeam-channel" -version = "0.5.14" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" dependencies = [ "crossbeam-utils", ] @@ -592,7 +582,7 @@ version = "4.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 1.0.1", "cpufeatures", "curve25519-dalek-derive", "fiat-crypto", @@ -614,9 +604,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.11" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" dependencies = [ "powerfmt", ] @@ -699,13 +689,13 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e73e0fee365832cd9b9a53ea62f944cc0d7a4c71f2b9c96a28fc74749517afa" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.1", "chacha20", "curve25519-dalek", "generic-array", "lazy_static", "libc", - "rand_core", + "rand_core 0.6.4", "salsa20", "sha2", "subtle", @@ -715,9 +705,9 @@ dependencies = [ [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "encode_unicode" @@ -756,28 +746,18 @@ dependencies = [ [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.10" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" dependencies = [ "libc", - "windows-sys 0.59.0", -] - -[[package]] -name = "error-chain" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" -dependencies = [ - "backtrace", - "version_check", + "windows-sys 0.60.2", ] [[package]] @@ -806,9 +786,9 @@ checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" [[package]] name = "flate2" -version = "1.0.35" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" dependencies = [ "crc32fast", "miniz_oxide", @@ -856,7 +836,7 @@ dependencies = [ "page_size", "pkg-config", "smallvec", - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -925,34 +905,36 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 1.0.1", "libc", "wasi 0.9.0+wasi-snapshot-preview1", ] [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 1.0.1", "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 1.0.1", + "js-sys", "libc", - "wasi 0.13.3+wasi-0.2.2", - "windows-targets 0.52.6", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", + "wasm-bindgen", ] [[package]] @@ -980,7 +962,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8283e7331b8c93b9756e0cfdbcfb90312852f953c6faf9bf741e684cc3b6ad69" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.1", "crc", "log", "uuid", @@ -988,9 +970,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" dependencies = [ "foldhash", ] @@ -1015,9 +997,9 @@ dependencies = [ [[package]] name = "http" -version = "1.2.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ "bytes", "fnv", @@ -1036,12 +1018,12 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", - "futures-util", + "futures-core", "http", "http-body", "pin-project-lite", @@ -1049,15 +1031,15 @@ dependencies = [ [[package]] name = "httparse" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "humantime" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f" [[package]] name = "hyper" @@ -1080,11 +1062,10 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.5" +version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "futures-util", "http", "hyper", "hyper-util", @@ -1098,16 +1079,21 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.10" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +checksum = "7f66d5bd4c6f02bf0542fad85d626775bab9258cf795a4256dcaf3161114d1df" dependencies = [ + "base64 0.22.1", "bytes", "futures-channel", + "futures-core", "futures-util", "http", "http-body", "hyper", + "ipnet", + "libc", + "percent-encoding", "pin-project-lite", "socket2", "tokio", @@ -1117,14 +1103,15 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.61" +version = "0.1.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", + "log", "wasm-bindgen", "windows-core", ] @@ -1140,21 +1127,22 @@ dependencies = [ [[package]] name = "icu_collections" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" dependencies = [ "displaydoc", + "potential_utf", "yoke", "zerofrom", "zerovec", ] [[package]] -name = "icu_locid" -version = "1.5.0" +name = "icu_locale_core" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" dependencies = [ "displaydoc", "litemap", @@ -1163,31 +1151,11 @@ dependencies = [ "zerovec", ] -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" - [[package]] name = "icu_normalizer" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" dependencies = [ "displaydoc", "icu_collections", @@ -1195,67 +1163,54 @@ dependencies = [ "icu_properties", "icu_provider", "smallvec", - "utf16_iter", - "utf8_iter", - "write16", "zerovec", ] [[package]] name = "icu_normalizer_data" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" [[package]] name = "icu_properties" -version = "1.5.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" dependencies = [ "displaydoc", "icu_collections", - "icu_locid_transform", + "icu_locale_core", "icu_properties_data", "icu_provider", - "tinystr", + "potential_utf", + "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "1.5.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" [[package]] name = "icu_provider" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" dependencies = [ "displaydoc", - "icu_locid", - "icu_provider_macros", + "icu_locale_core", "stable_deref_trait", "tinystr", "writeable", "yoke", "zerofrom", + "zerotrie", "zerovec", ] -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "idna" version = "1.0.3" @@ -1269,9 +1224,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ "icu_normalizer", "icu_properties", @@ -1295,9 +1250,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.7.1" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" +checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" dependencies = [ "equivalent", "hashbrown", @@ -1312,25 +1267,46 @@ dependencies = [ "console", "number_prefix", "portable-atomic", - "unicode-width 0.2.0", + "unicode-width 0.2.1", "web-time", ] [[package]] name = "inout" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ "generic-array", ] +[[package]] +name = "io-uring" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b86e202f00093dcba4275d4636b93ef9dd75d025ae560d2521b45ea28ab49013" +dependencies = [ + "bitflags 2.9.1", + "cfg-if 1.0.1", + "libc", +] + [[package]] name = "ipnet" version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" +[[package]] +name = "iri-string" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] + [[package]] name = "is_terminal_polyfill" version = "1.70.1" @@ -1348,9 +1324,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "js-sys" @@ -1370,44 +1346,50 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.169" +version = "0.2.174" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" [[package]] name = "libredox" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +checksum = "1580801010e535496706ba011c15f8532df6b42297d2e471fec38ceadd8c0638" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.1", "libc", "redox_syscall", ] [[package]] name = "linux-raw-sys" -version = "0.4.15" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" [[package]] name = "litemap" -version = "0.7.4" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "log" -version = "0.4.25" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "memsec" @@ -1415,35 +1397,29 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa0916b001582d253822171bd23f4a0229d32b9507fae236f5da8cad515ba7c" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "libc", "windows-sys 0.45.0", ] -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - [[package]] name = "miniz_oxide" -version = "0.8.3" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.52.0", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", ] [[package]] @@ -1489,15 +1465,15 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.2" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] -name = "opaque-debug" -version = "0.3.1" +name = "once_cell_polyfill" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" +checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" [[package]] name = "option-ext" @@ -1555,53 +1531,53 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "pkgar" -version = "0.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "850f50a19f791c0ac7c1c8b559d36f73a652dc423216282807aac7380fecc198" -dependencies = [ - "blake3 0.3.8", - "clap", - "error-chain", - "pkgar-core 0.1.15", - "pkgar-keys 0.1.15", - "plain", - "user-error", -] - -[[package]] -name = "pkgar" -version = "0.1.17" +version = "0.1.18" dependencies = [ "anyhow", "blake3 0.3.8", "bytemuck", "clap", - "pkgar-core 0.1.17", - "pkgar-keys 0.1.17", - "thiserror 2.0.11", + "pkgar-core 0.1.18", + "pkgar-keys 0.1.18", + "thiserror 2.0.12", +] + +[[package]] +name = "pkgar" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db98a45d3bdaf7dceeee5716f3eec9af0e67deec64eec9e717536b89de323c22" +dependencies = [ + "anyhow", + "blake3 0.3.8", + "bytemuck", + "clap", + "pkgar-core 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar-keys 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 2.0.12", ] [[package]] name = "pkgar-core" -version = "0.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "365a518b54ba821f5e84fd4a92b7b592ef2aa20acda3d41d7d7bc20f688dac3f" +version = "0.1.18" dependencies = [ "bitflags 1.3.2", "blake3 0.3.8", + "bytemuck", "dryoc", - "plain", ] [[package]] name = "pkgar-core" -version = "0.1.17" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0fc2b3be98c639c37ff54ebedeba654acc7e9c26b75c2ddff752f90b7a1618" dependencies = [ "bitflags 1.3.2", "blake3 0.3.8", @@ -1611,51 +1587,54 @@ dependencies = [ [[package]] name = "pkgar-keys" -version = "0.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06116ba0b805d25edf7d03670a551dbcaa8305a1695d80d0f078e43707b7999a" -dependencies = [ - "clap", - "dirs 3.0.2", - "error-chain", - "hex", - "lazy_static", - "pkgar-core 0.1.15", - "seckey", - "serde", - "termion", - "toml 0.8.19", - "user-error", -] - -[[package]] -name = "pkgar-keys" -version = "0.1.17" +version = "0.1.18" dependencies = [ "anyhow", "clap", "dirs 3.0.2", "hex", "lazy_static", - "pkgar-core 0.1.17", + "pkgar-core 0.1.18", "seckey", "serde", "termion", - "thiserror 2.0.11", - "toml 0.8.19", + "thiserror 2.0.12", + "toml 0.8.23", ] [[package]] -name = "plain" -version = "0.2.3" +name = "pkgar-keys" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" +checksum = "4494325c5c408d718d1df657cceeadc2102f02e7c9298343ce230f557f13e80c" +dependencies = [ + "anyhow", + "clap", + "dirs 3.0.2", + "hex", + "lazy_static", + "pkgar-core 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "seckey", + "serde", + "termion", + "thiserror 2.0.12", + "toml 0.8.23", +] [[package]] name = "portable-atomic" -version = "1.10.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] [[package]] name = "powerfmt" @@ -1665,18 +1644,18 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy", + "zerocopy 0.8.26", ] [[package]] name = "proc-macro2" -version = "1.0.93" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] @@ -1692,37 +1671,40 @@ dependencies = [ [[package]] name = "quinn" -version = "0.11.6" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" +checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" dependencies = [ "bytes", + "cfg_aliases", "pin-project-lite", "quinn-proto", "quinn-udp", "rustc-hash", "rustls", "socket2", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tracing", + "web-time", ] [[package]] name = "quinn-proto" -version = "0.11.9" +version = "0.11.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" +checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" dependencies = [ "bytes", - "getrandom 0.2.15", - "rand", + "getrandom 0.3.3", + "lru-slab", + "rand 0.9.1", "ring", "rustc-hash", "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.11", + "thiserror 2.0.12", "tinyvec", "tracing", "web-time", @@ -1730,9 +1712,9 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.9" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c40286217b4ba3a71d644d752e6a0b71f13f1b6a2c5311acfcbe0c2418ed904" +checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" dependencies = [ "cfg_aliases", "libc", @@ -1744,13 +1726,19 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.38" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "rand" version = "0.8.5" @@ -1758,8 +1746,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", ] [[package]] @@ -1769,7 +1767,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] @@ -1778,7 +1786,16 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", ] [[package]] @@ -1815,19 +1832,20 @@ checksum = "436d45c2b6a5b159d43da708e62b25be3a4a3d5550d654b72216ade4c4bfd717" [[package]] name = "redox-pkg" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe401458446fceb860923c57656f112b3c082310c5d7569760efc1a92b9e22e" +checksum = "70f49b2c29ae3c72ff3a8dbc1c5eefba9093a8c5ceaa8ca5292833816fe931e2" dependencies = [ + "anyhow", "indicatif", - "pkgar 0.1.15", - "pkgar-core 0.1.15", - "pkgar-keys 0.1.15", + "pkgar 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar-core 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar-keys 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "reqwest", "serde", "serde_derive", "thiserror 1.0.69", - "toml 0.8.19", + "toml 0.8.23", ] [[package]] @@ -1837,21 +1855,21 @@ source = "git+https://gitlab.redox-os.org/redox-os/pkgutils#436c97a0df26bfce24e3 dependencies = [ "anyhow", "ignore", - "pkgar 0.1.15", - "pkgar-core 0.1.15", - "pkgar-keys 0.1.15", + "pkgar 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar-core 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar-keys 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "reqwest", "serde", "serde_derive", "thiserror 1.0.69", - "toml 0.8.19", + "toml 0.8.23", ] [[package]] name = "redox-scheme" -version = "0.2.4" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6143c4d307e1c99ac14f60b5b07b2dccaf9d17137f7cee4e4e29977dd8014a1b" +checksum = "2c00025a04f76fdcf72c15f10c7a12d9f2fdde93e539be9a57d5d632c4158a9e" dependencies = [ "libredox", "redox_syscall", @@ -1865,23 +1883,23 @@ dependencies = [ "ignore", "object", "pbr", - "pkgar 0.1.17", - "pkgar-core 0.1.17", - "pkgar-keys 0.1.17", + "pkgar 0.1.18", + "pkgar-core 0.1.18", + "pkgar-keys 0.1.18", "redox-pkg 0.2.7", "redoxer", "serde", "tempfile", "termion", - "toml 0.8.19", + "toml 0.8.23", "walkdir", ] [[package]] name = "redox_installer" -version = "0.2.29" +version = "0.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af62ec0301597b6560949922155d1e717552ca6c0c24cef7f2e3f15f8f6ac33d" +checksum = "0895f18dfc8825af0b8c52d687b9eca499c9a53a6c37a248b8ffc5369b2e481f" dependencies = [ "anyhow", "arg_parser", @@ -1890,11 +1908,11 @@ dependencies = [ "fscommon", "gpt", "libc", - "pkgar 0.1.15", - "pkgar-core 0.1.15", - "pkgar-keys 0.1.15", - "rand", - "redox-pkg 0.2.4", + "pkgar 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar-core 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar-keys 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.8.5", + "redox-pkg 0.2.5", "redox_liner", "redox_syscall", "redoxfs", @@ -1902,7 +1920,7 @@ dependencies = [ "serde", "serde_derive", "termion", - "toml 0.8.19", + "toml 0.8.23", "uuid", ] @@ -1921,11 +1939,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.8" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.1", ] [[package]] @@ -1940,16 +1958,16 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "libredox", "thiserror 1.0.69", ] [[package]] name = "redoxer" -version = "0.2.51" +version = "0.2.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e753b0d0cffadf6549598e4f4fea21df085fbc78d3e1276f449989a26db4a2c" +checksum = "5558ef5ce386b5a4b7d5276467d940023b31c5a85484a05ac35b31da4055d740" dependencies = [ "dirs 5.0.1", "proc-mounts", @@ -1962,9 +1980,9 @@ dependencies = [ [[package]] name = "redoxfs" -version = "0.6.8" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c8756cd15a32143479f4a723ececcbe2b8e422242924b0628a163826aea8c4d" +checksum = "c03016c4a1366227740e6ee755e492c7b45656bbc43728980c7764c4ddcde73d" dependencies = [ "aes", "argon2", @@ -1972,7 +1990,7 @@ dependencies = [ "endian-num", "env_logger", "fuser", - "getrandom 0.2.15", + "getrandom 0.2.16", "libc", "libredox", "log", @@ -1984,6 +2002,7 @@ dependencies = [ "termion", "time", "uuid", + "xts-mode", ] [[package]] @@ -2017,9 +2036,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.12" +version = "0.12.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" +checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531" dependencies = [ "async-compression", "base64 0.22.1", @@ -2033,16 +2052,12 @@ dependencies = [ "hyper", "hyper-rustls", "hyper-util", - "ipnet", "js-sys", "log", - "mime", - "once_cell", "percent-encoding", "pin-project-lite", "quinn", "rustls", - "rustls-pemfile", "rustls-pki-types", "serde", "serde_json", @@ -2052,26 +2067,25 @@ dependencies = [ "tokio-rustls", "tokio-util", "tower", + "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", "webpki-roots", - "windows-registry", ] [[package]] name = "ring" -version = "0.17.8" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", - "cfg-if 1.0.0", - "getrandom 0.2.15", + "cfg-if 1.0.1", + "getrandom 0.2.16", "libc", - "spin", "untrusted", "windows-sys 0.52.0", ] @@ -2090,15 +2104,15 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" [[package]] name = "rustc-hash" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustc_version" @@ -2111,11 +2125,11 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.44" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.1", "errno", "libc", "linux-raw-sys", @@ -2124,9 +2138,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.22" +version = "0.23.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb9263ab4eb695e42321db096e3b8fbd715a59b154d5c88d82db2175b681ba7" +checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643" dependencies = [ "once_cell", "ring", @@ -2136,29 +2150,21 @@ dependencies = [ "zeroize", ] -[[package]] -name = "rustls-pemfile" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" -dependencies = [ - "rustls-pki-types", -] - [[package]] name = "rustls-pki-types" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" dependencies = [ "web-time", + "zeroize", ] [[package]] name = "rustls-webpki" -version = "0.102.8" +version = "0.103.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" dependencies = [ "ring", "rustls-pki-types", @@ -2167,9 +2173,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.19" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" [[package]] name = "ruzstd" @@ -2182,9 +2188,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "salsa20" @@ -2192,7 +2198,7 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" dependencies = [ - "cipher 0.4.4", + "cipher", ] [[package]] @@ -2222,9 +2228,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.25" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" [[package]] name = "serde" @@ -2248,9 +2254,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.138" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", "memchr", @@ -2260,9 +2266,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" dependencies = [ "serde", ] @@ -2281,11 +2287,11 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 1.0.1", "cpufeatures", "digest 0.10.7", ] @@ -2298,35 +2304,26 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "slab" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" [[package]] name = "smallvec" -version = "1.13.2" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "socket2" -version = "0.5.8" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", "windows-sys 0.52.0", ] -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" - [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -2362,9 +2359,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.96" +version = "2.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" dependencies = [ "proc-macro2", "quote", @@ -2382,9 +2379,9 @@ dependencies = [ [[package]] name = "synstructure" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", @@ -2393,13 +2390,12 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.16.0" +version = "3.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" dependencies = [ - "cfg-if 1.0.0", "fastrand", - "getrandom 0.3.1", + "getrandom 0.3.3", "once_cell", "rustix", "windows-sys 0.59.0", @@ -2407,9 +2403,9 @@ dependencies = [ [[package]] name = "termion" -version = "4.0.3" +version = "4.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eaa98560e51a2cf4f0bb884d8b2098a9ea11ecf3b7078e9c68242c74cc923a7" +checksum = "3669a69de26799d6321a5aa713f55f7e2cd37bd47be044b50f2acafc42c122bb" dependencies = [ "libc", "libredox", @@ -2437,11 +2433,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ - "thiserror-impl 2.0.11", + "thiserror-impl 2.0.12", ] [[package]] @@ -2457,9 +2453,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", @@ -2468,9 +2464,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.37" +version = "0.3.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" dependencies = [ "deranged", "num-conv", @@ -2481,15 +2477,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" [[package]] name = "tinystr" -version = "0.7.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" dependencies = [ "displaydoc", "zerovec", @@ -2497,9 +2493,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" dependencies = [ "tinyvec_macros", ] @@ -2512,24 +2508,26 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.43.0" +version = "1.46.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" +checksum = "0cc3a2344dafbe23a245241fe8b09735b521110d30fcefbbd5feb1797ca35d17" dependencies = [ "backtrace", "bytes", + "io-uring", "libc", "mio", "pin-project-lite", + "slab", "socket2", "windows-sys 0.52.0", ] [[package]] name = "tokio-rustls" -version = "0.26.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" dependencies = [ "rustls", "tokio", @@ -2537,9 +2535,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.13" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" dependencies = [ "bytes", "futures-core", @@ -2559,9 +2557,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.19" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", "serde_spanned", @@ -2571,26 +2569,33 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.22.23" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02a8b472d1a3d7c18e2d61a489aee3453fd9031c33e4f55bd533f4a7adca1bee" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ "indexmap", "serde", "serde_spanned", "toml_datetime", + "toml_write", "winnow", ] +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + [[package]] name = "tower" version = "0.5.2" @@ -2606,6 +2611,24 @@ dependencies = [ "tower-service", ] +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags 2.9.1", + "bytes", + "futures-util", + "http", + "http-body", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + [[package]] name = "tower-layer" version = "0.3.3" @@ -2630,9 +2653,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", ] @@ -2649,21 +2672,21 @@ version = "1.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 1.0.1", "static_assertions", ] [[package]] name = "typenum" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "unicode-ident" -version = "1.0.16" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-width" @@ -2673,9 +2696,9 @@ checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-width" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" +checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" [[package]] name = "untrusted" @@ -2694,18 +2717,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "user-error" -version = "1.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07a91d0648d862a02d641c82292791accfe66d36df75d8149ebc9768f2e36863" - -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - [[package]] name = "utf8_iter" version = "1.0.4" @@ -2720,11 +2731,13 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.12.1" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3758f5e68192bb96cc8f9b7e2c2cfdabb435499a28499a42f8f984092adad4b" +checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.3.3", + "js-sys", + "wasm-bindgen", ] [[package]] @@ -2775,15 +2788,15 @@ checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" -version = "0.13.3+wasi-0.2.2" +version = "0.14.2+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" dependencies = [ "wit-bindgen-rt", ] @@ -2794,7 +2807,7 @@ version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 1.0.1", "once_cell", "rustversion", "wasm-bindgen-macro", @@ -2820,7 +2833,7 @@ version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 1.0.1", "js-sys", "once_cell", "wasm-bindgen", @@ -2881,9 +2894,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.8" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9" +checksum = "8782dd5a41a24eed3a4f40b606249b3e236ca61adf1f25ea4d45c73de122b502" dependencies = [ "rustls-pki-types", ] @@ -2921,41 +2934,61 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" -version = "0.52.0" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ - "windows-targets 0.52.6", + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", ] [[package]] -name = "windows-registry" -version = "0.2.0" +name = "windows-implement" +version = "0.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" dependencies = [ - "windows-result", - "windows-strings", - "windows-targets 0.52.6", + "proc-macro2", + "quote", + "syn", ] +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + [[package]] name = "windows-result" -version = "0.2.0" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-targets 0.52.6", + "windows-link", ] [[package]] name = "windows-strings" -version = "0.1.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-result", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -2994,6 +3027,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.2", +] + [[package]] name = "windows-targets" version = "0.42.2" @@ -3033,13 +3075,29 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.6", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-targets" +version = "0.53.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" @@ -3058,6 +3116,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + [[package]] name = "windows_aarch64_msvc" version = "0.42.2" @@ -3076,6 +3140,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + [[package]] name = "windows_i686_gnu" version = "0.42.2" @@ -3094,12 +3164,24 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + [[package]] name = "windows_i686_msvc" version = "0.42.2" @@ -3118,6 +3200,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + [[package]] name = "windows_x86_64_gnu" version = "0.42.2" @@ -3136,6 +3224,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + [[package]] name = "windows_x86_64_gnullvm" version = "0.42.2" @@ -3154,6 +3248,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -3173,40 +3273,50 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] -name = "winnow" -version = "0.7.0" +name = "windows_x86_64_msvc" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e49d2d35d3fad69b39b94139037ecfb4f359f08958b9c11e7315ce770462419" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + +[[package]] +name = "winnow" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" dependencies = [ "memchr", ] [[package]] name = "wit-bindgen-rt" -version = "0.33.0" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.1", ] [[package]] -name = "write16" -version = "1.0.0" +name = "writeable" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] -name = "writeable" -version = "0.5.5" +name = "xts-mode" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" +checksum = "09cbddb7545ca0b9ffa7bdc653e8743303e1712687a6918ced25f2cdbed42520" +dependencies = [ + "byteorder", + "cipher", +] [[package]] name = "yoke" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" dependencies = [ "serde", "stable_deref_trait", @@ -3216,9 +3326,9 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", @@ -3233,7 +3343,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "byteorder", - "zerocopy-derive", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +dependencies = [ + "zerocopy-derive 0.8.26", ] [[package]] @@ -3248,19 +3367,30 @@ dependencies = [ ] [[package]] -name = "zerofrom" -version = "0.1.5" +name = "zerocopy-derive" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", @@ -3289,10 +3419,21 @@ dependencies = [ ] [[package]] -name = "zerovec" -version = "0.10.4" +name = "zerotrie" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" dependencies = [ "yoke", "zerofrom", @@ -3301,9 +3442,9 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.10.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", diff --git a/pkgar b/pkgar index f5344c09..185fe5c3 160000 --- a/pkgar +++ b/pkgar @@ -1 +1 @@ -Subproject commit f5344c09ead37b88aee85522da9d0b1dd4af60e8 +Subproject commit 185fe5c3346d9aa552f308cf61c66f7b6e25280a From d3230bad88400dd4d821299430fddf780734adb3 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 9 Jul 2025 22:53:33 +0700 Subject: [PATCH 2687/3180] Fix fuse deps --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d9b1d591..88d85891 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -21,4 +21,6 @@ fmt: cargo-test: stage: test script: + # TODO: we should omit fuse from cargo install chains + - apt update && apt fuse3 libfuse3-dev - cargo test --locked From 88858d41e622294ae79fec8fde1a68dd324d7f22 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 9 Jul 2025 22:54:22 +0700 Subject: [PATCH 2688/3180] Typo --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 88d85891..2ad4b0e9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,5 +22,5 @@ cargo-test: stage: test script: # TODO: we should omit fuse from cargo install chains - - apt update && apt fuse3 libfuse3-dev + - apt update && apt install fuse3 libfuse3-dev - cargo test --locked From cc2dd331877a9f6adea5735e43351d21cc46d2a9 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 9 Jul 2025 22:56:00 +0700 Subject: [PATCH 2689/3180] Typo --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2ad4b0e9..19d0e433 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,5 +22,5 @@ cargo-test: stage: test script: # TODO: we should omit fuse from cargo install chains - - apt update && apt install fuse3 libfuse3-dev + - apt update && apt install -y fuse3 libfuse3-dev - cargo test --locked From c1da3e73f42b52ad95c79a5815b67dfa55843c92 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 12 Jul 2025 17:17:56 +0200 Subject: [PATCH 2690/3180] Remove unused logd argument --- recipes/core/base-initfs/init.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/core/base-initfs/init.rc b/recipes/core/base-initfs/init.rc index ac92dc7b..366bbab0 100644 --- a/recipes/core/base-initfs/init.rc +++ b/recipes/core/base-initfs/init.rc @@ -8,7 +8,7 @@ zerod randd # Logging -logd /scheme/debug +logd stdio /scheme/log ramfs logging From 7bf73db4c90632fb3ceed1e1966534733783751d Mon Sep 17 00:00:00 2001 From: auronandace Date: Sun, 13 Jul 2025 08:12:23 +0100 Subject: [PATCH 2691/3180] move onefetch out of wip --- recipes/{wip => }/tools/onefetch/recipe.toml | 1 - 1 file changed, 1 deletion(-) rename recipes/{wip => }/tools/onefetch/recipe.toml (74%) diff --git a/recipes/wip/tools/onefetch/recipe.toml b/recipes/tools/onefetch/recipe.toml similarity index 74% rename from recipes/wip/tools/onefetch/recipe.toml rename to recipes/tools/onefetch/recipe.toml index 869176da..43ca14e6 100644 --- a/recipes/wip/tools/onefetch/recipe.toml +++ b/recipes/tools/onefetch/recipe.toml @@ -1,4 +1,3 @@ -#TODO update rustc version [source] git = "https://github.com/o2sh/onefetch" [build] From a431de9c2b304f2f96c97e8e9963b4478582c147 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sun, 13 Jul 2025 09:00:52 +0000 Subject: [PATCH 2692/3180] Use shallow clone for crates.io index --- recipes/dev/crates-io-index/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/dev/crates-io-index/recipe.toml b/recipes/dev/crates-io-index/recipe.toml index 0f9dc13f..0d0b92f1 100644 --- a/recipes/dev/crates-io-index/recipe.toml +++ b/recipes/dev/crates-io-index/recipe.toml @@ -1,5 +1,6 @@ [source] git = "https://github.com/rust-lang/crates.io-index.git" +shallow_clone = true [build] template = "custom" From c375f89ecafc77da7d7559532bd7e72e69ed795f Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sun, 13 Jul 2025 09:25:34 +0000 Subject: [PATCH 2693/3180] Update ncdu recipe --- recipes/tui/ncdu/recipe.toml | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/recipes/tui/ncdu/recipe.toml b/recipes/tui/ncdu/recipe.toml index 2a0e9e0c..bd885f8d 100644 --- a/recipes/tui/ncdu/recipe.toml +++ b/recipes/tui/ncdu/recipe.toml @@ -1,6 +1,6 @@ [source] -tar = "https://dev.yorhel.nl/download/ncdu-1.13.tar.gz" -blake3 = "f6d771e78c87202a051e3357820be3c63ea895ff4f07edf14c6f21fb18afceed" +tar = "https://dev.yorhel.nl/download/ncdu-1.22.tar.gz" +blake3 = "b7838c03ded7207a328a26c840ec3d62d3be6bbf7269a70ea3430c6cbf065960" [package] dependencies = ["terminfo"] @@ -9,14 +9,6 @@ dependencies = ["terminfo"] template = "custom" dependencies = ["ncurses"] script = """ -rsync -av --delete --exclude='.git' "${COOKBOOK_SOURCE}/" ./ -export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/ncurses" -export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib -static" -./configure \ - --build=${BUILD} \ - --host="${TARGET}" \ - --prefix=/ -"${COOKBOOK_MAKE}" -j"$(${NPROC})" - -"${COOKBOOK_MAKE}" DESTDIR="${COOKBOOK_STAGE}" install +DYNAMIC_INIT +cookbook_configure """ From 4c5233643597693292247bd17eb3e3f1c7599856 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sun, 13 Jul 2025 10:08:25 +0000 Subject: [PATCH 2694/3180] Set qemu as shallow clone --- recipes/wip/vm/qemu/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/vm/qemu/recipe.toml b/recipes/wip/vm/qemu/recipe.toml index 4db5ecc8..2bfd6f49 100644 --- a/recipes/wip/vm/qemu/recipe.toml +++ b/recipes/wip/vm/qemu/recipe.toml @@ -1,5 +1,6 @@ [source] git = "https://github.com/jackpot51/qemu.git" +shallow_clone = true [build] template = "custom" From fa9780afd66bd0428ffaedbf9e13be9d915b9579 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sun, 13 Jul 2025 10:30:41 +0000 Subject: [PATCH 2695/3180] Update libsodium and protobuf --- recipes/libs/libsodium/recipe.toml | 1 + recipes/wip/dev/other/protobuf/recipe.toml | 28 +++++++++++----------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/recipes/libs/libsodium/recipe.toml b/recipes/libs/libsodium/recipe.toml index d3e1a3c6..8f6a2db3 100644 --- a/recipes/libs/libsodium/recipe.toml +++ b/recipes/libs/libsodium/recipe.toml @@ -4,6 +4,7 @@ blake3 = "2482633f872c173f9a42e6badb44c3efb042e783e664fdf8b1046babfa2405e7" script = """ DYNAMIC_INIT autotools_recursive_regenerate +wget -O build-aux/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" """ [build] diff --git a/recipes/wip/dev/other/protobuf/recipe.toml b/recipes/wip/dev/other/protobuf/recipe.toml index d8504735..f0827b2a 100644 --- a/recipes/wip/dev/other/protobuf/recipe.toml +++ b/recipes/wip/dev/other/protobuf/recipe.toml @@ -1,20 +1,20 @@ -#TODO maybe incomplete script, see https://github.com/protocolbuffers/protobuf/blob/main/cmake/README.md +#TODO: Compilation error (relibc issues?) +# Also see https://github.com/protocolbuffers/protobuf/blob/main/cmake/README.md [source] -tar = "https://github.com/protocolbuffers/protobuf/releases/download/v25.1/protobuf-25.1.tar.gz" +git = "https://github.com/protocolbuffers/protobuf" +# Latest release: v31.1 +rev = "74211c0dfc2777318ab53c2cd2c317a2ef9012de" +shallow_clone = true + [build] template = "custom" +dependencies = [ + "zlib", +] script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" +DYNAMIC_INIT +COOKBOOK_CMAKE_FLAGS=( + -Dprotobuf_BUILD_TESTS=OFF ) -cookbook_configure +cookbook_cmake """ From d17e5202846d90b5f116337cb9f79e1d82376fa0 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sun, 13 Jul 2025 12:42:32 +0000 Subject: [PATCH 2696/3180] Update http server recipes --- .../net/http/simple-http-server/recipe.toml | 19 ++++++++------- .../wip/net/http/http-server-rs/recipe.toml | 24 +++++++++++++++++-- 2 files changed, 33 insertions(+), 10 deletions(-) rename recipes/{wip => }/net/http/simple-http-server/recipe.toml (58%) diff --git a/recipes/wip/net/http/simple-http-server/recipe.toml b/recipes/net/http/simple-http-server/recipe.toml similarity index 58% rename from recipes/wip/net/http/simple-http-server/recipe.toml rename to recipes/net/http/simple-http-server/recipe.toml index a71ff214..86c96318 100644 --- a/recipes/wip/net/http/simple-http-server/recipe.toml +++ b/recipes/net/http/simple-http-server/recipe.toml @@ -1,8 +1,11 @@ -#TODO promote -[source] -git = "https://github.com/TheWaWaR/simple-http-server" -[build] -template = "cargo" -dependencies = [ - "openssl1", -] +[source] +git = "https://github.com/TheWaWaR/simple-http-server" +[build] +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +DYNAMIC_INIT +cookbook_cargo +""" diff --git a/recipes/wip/net/http/http-server-rs/recipe.toml b/recipes/wip/net/http/http-server-rs/recipe.toml index 06780d78..c537e0c5 100644 --- a/recipes/wip/net/http/http-server-rs/recipe.toml +++ b/recipes/wip/net/http/http-server-rs/recipe.toml @@ -1,5 +1,25 @@ -#TODO not compiled or tested +#TODO camino crate error [source] git = "https://github.com/http-server-rs/http-server" +# Broken since https://github.com/http-server-rs/http-server/pull/461 +# because it needs https://trunkrs.dev to work +rev = "9ffa604de326e013330bced8e36dd7a6945ecb9f" +shallow_clone = true + [build] -template = "cargo" +template = "custom" +dependencies = [ + "openssl1", +] +script = """ +DYNAMIC_INIT +export OPENSSL_DIR="${COOKBOOK_SYSROOT}" +export OPENSSL_STATIC="true" +"${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/crates/file-explorer-plugin/Cargo.toml" \ + --locked ${build_flags} --lib +cp -v \ + "target/${TARGET}/${build_type}/libfile_explorer_plugin.dylib" \ + "${COOKBOOK_SOURCE}"/lib/http-server/inline/file_explorer.plugin.httprs +PACKAGE_PATH=crates/http-server cookbook_cargo --bin http-server +""" From cf13e381c732506b2d0eea000c2121c803ddd1ef Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sun, 13 Jul 2025 12:44:25 +0000 Subject: [PATCH 2697/3180] Write repo builder in rust --- repo.sh | 11 ++- src/bin/repo_builder.rs | 162 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 171 insertions(+), 2 deletions(-) create mode 100644 src/bin/repo_builder.rs diff --git a/repo.sh b/repo.sh index 9cde102b..1f665f1f 100755 --- a/repo.sh +++ b/repo.sh @@ -102,10 +102,15 @@ declare -A APPSTREAM_SOURCES # # The following adds the package dependencies of the recipes to the repo as # well. -# -# TODO(?): All of this script can be moved into `cook.rs`. recipes="$recipes $(target/release/pkg_deps $toml_recipes)" +REPO_BUILDER="./target/release/repo_builder" + +if [ -x "$REPO_BUILDER" ] # TODO: Wait until everyone has this binary +then + "$REPO_BUILDER" "$REPO" $recipes +else # TODO: Delete this soon + for recipe in $recipes do recipe_path=`target/release/find_recipe $recipe` @@ -159,3 +164,5 @@ do echo "$package =$version" >> "$REPO/repo.toml" fi done + +fi diff --git a/src/bin/repo_builder.rs b/src/bin/repo_builder.rs new file mode 100644 index 00000000..db66483b --- /dev/null +++ b/src/bin/repo_builder.rs @@ -0,0 +1,162 @@ +use pkg::recipes; +use std::collections::{BTreeMap, HashMap}; +use std::env; +use std::fs::{self, File}; +use std::io::{Read, Write}; +use std::path::{Path, PathBuf}; +use std::process::Command; +use toml::Value; + +fn is_newer(src: &Path, dst: &Path) -> bool { + match (fs::metadata(src), fs::metadata(dst)) { + (Ok(src_meta), Ok(dst_meta)) => match (src_meta.modified(), dst_meta.modified()) { + (Ok(src_time), Ok(dst_time)) => src_time > dst_time, + (Ok(_), Err(_)) => true, + _ => false, + }, + (Ok(_), Err(_)) => true, + _ => false, + } +} + +fn main() -> Result<(), Box> { + let mut args = env::args().skip(1); + let repo_dir = args + .next() + .expect("Usage: repo_builder ..."); + let recipe_list: Vec = args.collect(); + let repo_path = Path::new(&repo_dir); + + let mut appstream_sources: HashMap = HashMap::new(); + let mut packages: BTreeMap = BTreeMap::new(); + + // === 1. Push recipes in list === + for recipe in &recipe_list { + let Some(recipe_path) = recipes::find(recipe) else { + eprintln!("recipe {} not found", recipe); + continue; + }; + + let cookbook_recipe = Path::new(&recipe_path); + let target = env::var("TARGET").unwrap_or_else(|_| "x86_64-unknown-linux-gnu".into()); + let stage_dir = cookbook_recipe.join("target").join(&target).join("stage"); + + let pkgar_src = stage_dir.with_extension("pkgar"); + let pkgar_dst = repo_path.join(format!("{}.pkgar", recipe)); + let toml_src = stage_dir.with_extension("toml"); + let toml_dst = repo_path.join(format!("{}.toml", recipe)); + + if is_newer(&pkgar_src, &pkgar_dst) { + eprintln!("\x1b[01;38;5;155mrepo - publishing {}\x1b[0m", recipe); + fs::copy(&pkgar_src, &pkgar_dst)?; + fs::copy(&toml_src, &toml_dst)?; + } + + if stage_dir.join("usr/share/metainfo").exists() { + appstream_sources.insert(recipe.clone(), stage_dir.clone()); + } + } + + // === 2. Optional AppStream generation === + if env::var("APPSTREAM").ok().as_deref() == Some("1") { + eprintln!("\x1b[01;38;5;155mrepo - generating appstream data\x1b[0m"); + + let root = env::var("ROOT").unwrap_or_else(|_| ".".into()); + let target = env::var("TARGET").unwrap_or_else(|_| "x86_64-unknown-linux-gnu".into()); + let appstream_root = Path::new(&root) + .join("build") + .join(&target) + .join("appstream"); + let appstream_pkg = repo_path.join("appstream.pkgar"); + + fs::remove_dir_all(&appstream_root).ok(); + fs::remove_file(&appstream_pkg).ok(); + fs::create_dir_all(&appstream_root)?; + + if !appstream_sources.is_empty() { + let mut compose_cmd = Command::new("appstreamcli"); + compose_cmd + .arg("compose") + .arg("--origin=pkgar") + .arg(format!("--result-root={}", appstream_root.display())); + + for (_recipe, source_path) in &appstream_sources { + compose_cmd.arg(source_path); + } + + compose_cmd + .status()? + .success() + .then_some(()) + .ok_or("appstreamcli failed")?; + + Command::new("pkgar") + .arg("create") + .arg("--archive") + .arg(&appstream_pkg) + .arg("--skey") + .arg(format!("{}/build/id_ed25519.toml", root)) + .arg(&appstream_root) + .status()? + .success() + .then_some(()) + .ok_or("pkgar create failed")?; + } + } + + eprintln!("\x1b[01;38;5;155mrepo - generating repo.toml\x1b[0m"); + + // === 3. Read and update repo.toml === + let repo_toml_path = repo_path.join("repo.toml"); + if repo_toml_path.exists() { + let mut file = File::open(&repo_toml_path)?; + let mut contents = String::new(); + file.read_to_string(&mut contents)?; + + let parsed: Value = toml::from_str(&contents)?; + if let Some(pkg_table) = parsed.get("packages").and_then(|v| v.as_table()) { + for (k, v) in pkg_table { + if let Some(s) = v.as_str() { + packages.insert(k.clone(), format!("\"{}\"", s)); + } else { + packages.insert(k.clone(), v.to_string()); + } + } + } + } + + for entry in fs::read_dir(&repo_path)? { + let entry = entry?; + let path = entry.path(); + + if path.extension().and_then(|s| s.to_str()) != Some("toml") { + continue; + } + + if path.file_stem().and_then(|s| s.to_str()) == Some("repo") { + continue; + } + + let content = fs::read_to_string(&path)?; + let parsed: Value = toml::from_str(&content)?; + + if let Some(version_val) = parsed.get("version") { + let version_str = version_val.to_string(); // includes quotes + let package_name = path.file_stem().unwrap().to_string_lossy().to_string(); + packages.insert(package_name, version_str); + } else { + eprintln!("Warning: no [version] found in {:?}", path); + } + } + + // FIXME: Use proper TOML serializer + let mut output = String::from("[packages]\n"); + for (name, version) in &packages { + output.push_str(&format!("{name} = {version}\n")); + } + + let mut output_file = File::create(&repo_toml_path)?; + output_file.write_all(output.as_bytes())?; + + Ok(()) +} From 8d10768c196f1803fc93efe6295cbd670181e8d3 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sun, 13 Jul 2025 12:47:11 +0000 Subject: [PATCH 2698/3180] Implement shallow clone and migrate rust recipe --- recipes/dev/rust/config.toml | 5 ++++- recipes/dev/rust/recipe.sh | 30 --------------------------- recipes/dev/rust/recipe.toml | 38 ++++++++++++++++++++++++++++++++++ src/bin/cook.rs | 40 +++++++++++++++++++++--------------- src/recipe.rs | 4 ++++ 5 files changed, 70 insertions(+), 47 deletions(-) delete mode 100644 recipes/dev/rust/recipe.sh create mode 100644 recipes/dev/rust/recipe.toml diff --git a/recipes/dev/rust/config.toml b/recipes/dev/rust/config.toml index 0a05f38c..d2760f2e 100644 --- a/recipes/dev/rust/config.toml +++ b/recipes/dev/rust/config.toml @@ -1,6 +1,9 @@ [llvm] download-ci-llvm = false -static-libstdcpp = false +static-libstdcpp = false +# TODO: This currently must need to be set manually. +# If you like to build llvm with sccache, uncomment: +# ccache = "sccache" [build] host = ["x86_64-unknown-redox"] diff --git a/recipes/dev/rust/recipe.sh b/recipes/dev/rust/recipe.sh deleted file mode 100644 index 71cbe250..00000000 --- a/recipes/dev/rust/recipe.sh +++ /dev/null @@ -1,30 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/rust.git -BRANCH=redox-2024-05-11 -BUILD_DEPENDS=(llvm18 zlib) -DEPENDS="gcc13 cargo" -PREPARE_COPY=0 - -function recipe_version { - printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" - skip=1 -} - -function recipe_build { - unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP - export MAGIC_EXTRA_RUSTFLAGS="-C link-args=-lz" - python3 "${COOKBOOK_SOURCE}/x.py" install --config "${COOKBOOK_RECIPE}/config.toml" --jobs $(nproc) --incremental - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - rsync -av --delete "install/" "$1/" - # Cannot use STRIP because it is unset in recipe_build - #TODO: rustdoc - "${HOST}-strip" -v "$1/bin/rustc" - skip=1 -} diff --git a/recipes/dev/rust/recipe.toml b/recipes/dev/rust/recipe.toml new file mode 100644 index 00000000..e71a4c6e --- /dev/null +++ b/recipes/dev/rust/recipe.toml @@ -0,0 +1,38 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/rust.git" +branch = "redox-2024-05-11" +# due to heavy git operation, this will only clone once and will not refetch +# if you want to refetch or changing the branch, please do ucr.rust +shallow_clone = true + +[build] +template = "custom" +dependencies = [ + "llvm18", + "zlib" +] +script = """ +DYNAMIC_INIT +HOST_STRIP=$STRIP +# Linker flags for stage2 compiler (host -> target) +export MAGIC_EXTRA_RUSTFLAGS="${LDFLAGS} -C link-args=-lz" +# Don't poison the stage1 compiler (host -> host) +unset AR AS CC CXX LD LDFLAGS NM OBJCOPY OBJDUMP RANLIB READELF STRIP +python3 "${COOKBOOK_SOURCE}/x.py" install \ + --config "${COOKBOOK_RECIPE}/config.toml" \ + --jobs $(nproc) + +rsync -av --delete "${COOKBOOK_BUILD}"/install/* "${COOKBOOK_STAGE}/" +"${HOST_STRIP}" -v "${COOKBOOK_STAGE}/bin/rustc" +# TODO: rustdoc +""" + +[package] +dependencies = [ + "gcc13", + "cargo" +] +# TODO: Not implemented +# version_script = """ +# printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" +# """ diff --git a/src/bin/cook.rs b/src/bin/cook.rs index cb13d2f0..84bb99e5 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -226,6 +226,7 @@ fn fetch_offline(recipe_dir: &Path, source: &Option) -> Result) -> Result { //TODO: use libgit? + let shallow_clone = *shallow_clone == Some(true); if !source_dir.is_dir() { // Create source.tmp let source_dir_tmp = recipe_dir.join("source.tmp"); @@ -302,12 +305,15 @@ fn fetch(recipe_dir: &Path, source: &Option) -> Result) -> Result, + /// The optional config to run as shallow fetch. Only use this for heavy git like "rust" + /// This will disable recipe autofetching because of its cost on git server + shallow_clone: Option, /// A list of patch files to apply to the source #[serde(default)] patches: Vec, @@ -231,6 +234,7 @@ mod tests { rev: Some("06344744d3d55a5ac9a62a6059cb363d40699bbc".to_string()), patches: Vec::new(), script: None, + shallow_clone: None, }), build: BuildRecipe { kind: BuildKind::Cargo { From e207b307675117012865445ad6f145936895a9be Mon Sep 17 00:00:00 2001 From: auronandace Date: Sun, 13 Jul 2025 17:48:34 +0100 Subject: [PATCH 2699/3180] promote lsd out of wip --- recipes/{wip => }/tools/lsd/recipe.toml | 1 - 1 file changed, 1 deletion(-) rename recipes/{wip => }/tools/lsd/recipe.toml (59%) diff --git a/recipes/wip/tools/lsd/recipe.toml b/recipes/tools/lsd/recipe.toml similarity index 59% rename from recipes/wip/tools/lsd/recipe.toml rename to recipes/tools/lsd/recipe.toml index 7a4a539a..6fb14e4a 100644 --- a/recipes/wip/tools/lsd/recipe.toml +++ b/recipes/tools/lsd/recipe.toml @@ -1,4 +1,3 @@ -#TODO compiled but not tested (after cargo update) [source] git = "https://github.com/lsd-rs/lsd" [build] From eee384803080559bf3526c0a5ab4bc715a7c02d5 Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Mon, 14 Jul 2025 02:54:45 -0400 Subject: [PATCH 2700/3180] Ensure all TOML recipes are valid * Dependencies have to be proper package names * A few WIP packages had invalid TOMLs, like missing quotation marks for strings --- recipes/libs/{lua-compat-5.3 => lua-compat-53}/recipe.toml | 0 recipes/libs/luv/recipe.toml | 2 +- recipes/wip/archives/file-roller/recipe.toml | 2 +- recipes/wip/demos/anvil/recipe.toml | 1 - recipes/wip/dev/cargo-tools/cargo-mutants/recipe.toml | 2 +- recipes/wip/games/fps/room4doom/recipe.toml | 2 +- recipes/wip/libs/gtk/gtk3mm/recipe.toml | 2 +- recipes/wip/libs/gtk/gtk4mm/recipe.toml | 2 +- recipes/wip/libs/other/opencv4/recipe.toml | 3 ++- recipes/wip/net/onion-routing/tor/recipe.toml | 2 +- 10 files changed, 9 insertions(+), 9 deletions(-) rename recipes/libs/{lua-compat-5.3 => lua-compat-53}/recipe.toml (100%) diff --git a/recipes/libs/lua-compat-5.3/recipe.toml b/recipes/libs/lua-compat-53/recipe.toml similarity index 100% rename from recipes/libs/lua-compat-5.3/recipe.toml rename to recipes/libs/lua-compat-53/recipe.toml diff --git a/recipes/libs/luv/recipe.toml b/recipes/libs/luv/recipe.toml index 93973951..2d8b0825 100644 --- a/recipes/libs/luv/recipe.toml +++ b/recipes/libs/luv/recipe.toml @@ -5,7 +5,7 @@ template = "custom" dependencies = [ "lua54", "libuv", - "lua-compat-5.3" + "lua-compat-53" ] script = """ COOKBOOK_CONFIGURE="cmake" diff --git a/recipes/wip/archives/file-roller/recipe.toml b/recipes/wip/archives/file-roller/recipe.toml index 7209aa62..c3392c6e 100644 --- a/recipes/wip/archives/file-roller/recipe.toml +++ b/recipes/wip/archives/file-roller/recipe.toml @@ -6,7 +6,7 @@ tar = "https://download.gnome.org/sources/file-roller/44/file-roller-44.3.tar.xz template = "custom" dependencies = [ "glib", - "gtk3," + "gtk3", "libhandy", "libarchive", ] diff --git a/recipes/wip/demos/anvil/recipe.toml b/recipes/wip/demos/anvil/recipe.toml index 4f53c48d..ea5816f4 100644 --- a/recipes/wip/demos/anvil/recipe.toml +++ b/recipes/wip/demos/anvil/recipe.toml @@ -8,7 +8,6 @@ dependencies = [ ] template = "custom" script = """ -script = """ package=anvil "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ diff --git a/recipes/wip/dev/cargo-tools/cargo-mutants/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-mutants/recipe.toml index 916d3144..156d2e2e 100644 --- a/recipes/wip/dev/cargo-tools/cargo-mutants/recipe.toml +++ b/recipes/wip/dev/cargo-tools/cargo-mutants/recipe.toml @@ -1,6 +1,6 @@ #TODO camino crate error [source] git = "https://github.com/sourcefrog/cargo-mutants" -rev = " + [build] template = "cargo" diff --git a/recipes/wip/games/fps/room4doom/recipe.toml b/recipes/wip/games/fps/room4doom/recipe.toml index f609f399..d4570fa2 100644 --- a/recipes/wip/games/fps/room4doom/recipe.toml +++ b/recipes/wip/games/fps/room4doom/recipe.toml @@ -5,7 +5,7 @@ git = "https://github.com/flukejones/room4doom" template = "custom" dependencies = [ "sdl2", - "sdl2-mixer + "sdl2-mixer" ] script = """ cookbook_cargo_packages room4doom diff --git a/recipes/wip/libs/gtk/gtk3mm/recipe.toml b/recipes/wip/libs/gtk/gtk3mm/recipe.toml index dfcbbda7..99a5cc71 100644 --- a/recipes/wip/libs/gtk/gtk3mm/recipe.toml +++ b/recipes/wip/libs/gtk/gtk3mm/recipe.toml @@ -7,6 +7,6 @@ dependencies = [ "libsigc++", "gtk3", "glibmm", - "cairomm-1.0+", + "cairomm-1_0+", "pangomm", ] diff --git a/recipes/wip/libs/gtk/gtk4mm/recipe.toml b/recipes/wip/libs/gtk/gtk4mm/recipe.toml index 22acdfec..d04bd7a8 100644 --- a/recipes/wip/libs/gtk/gtk4mm/recipe.toml +++ b/recipes/wip/libs/gtk/gtk4mm/recipe.toml @@ -7,6 +7,6 @@ dependencies = [ "libsigc++", "gtk4", "glibmm", - "cairomm-1.16+", + "cairomm-1_16+", "pangomm", ] diff --git a/recipes/wip/libs/other/opencv4/recipe.toml b/recipes/wip/libs/other/opencv4/recipe.toml index 4b7b73fb..8340c64e 100644 --- a/recipes/wip/libs/other/opencv4/recipe.toml +++ b/recipes/wip/libs/other/opencv4/recipe.toml @@ -1,7 +1,8 @@ #TODO probably wrong script, lacking build instructions [source] git = "https://github.com/opencv/opencv" -branch = "4.8.0 +rev = "49486f61fb25722cbcf586b7f4320921d46fb38e" + [build] template = "custom" script = """ diff --git a/recipes/wip/net/onion-routing/tor/recipe.toml b/recipes/wip/net/onion-routing/tor/recipe.toml index 1fffe43d..fb69580b 100644 --- a/recipes/wip/net/onion-routing/tor/recipe.toml +++ b/recipes/wip/net/onion-routing/tor/recipe.toml @@ -5,6 +5,6 @@ tar = "https://dist.torproject.org/tor-0.4.8.9.tar.gz" template = "configure" dependencies = [ "libevent", - "openssl1" + "openssl1", "zlib", ] From 745a3b8830a605291b7d4c08d48e3e3732e6b3a7 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Tue, 15 Jul 2025 01:12:23 +0000 Subject: [PATCH 2701/3180] Fix git dynamic link --- recipes/dev/git/recipe.toml | 2 +- src/bin/cook.rs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/dev/git/recipe.toml b/recipes/dev/git/recipe.toml index 5054885e..616f7a81 100644 --- a/recipes/dev/git/recipe.toml +++ b/recipes/dev/git/recipe.toml @@ -14,7 +14,7 @@ dependencies=[ template = "custom" script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ - +DYNAMIC_INIT MAKEFLAGS=( NEEDS_SSL_WITH_CURL=1 NEEDS_CRYPTO_WITH_SSL=1 diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 84bb99e5..8198bfd6 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -559,6 +559,7 @@ fn auto_deps( stage_dir.join("usr/bin"), stage_dir.join("usr/games"), stage_dir.join("usr/lib"), + stage_dir.join("usr/libexec"), ]); // Recursively (DFS) walk each directory to ensure nested libs and bins are checked. From 4f8a705c5850ac99c973feff16689f2cf9686f34 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sun, 20 Jul 2025 06:33:45 +0000 Subject: [PATCH 2702/3180] Fix and update netsurf --- recipes/web/netsurf/01_redox.patch | 130 ++++++++++++++++------------- recipes/web/netsurf/recipe.toml | 4 +- 2 files changed, 76 insertions(+), 58 deletions(-) diff --git a/recipes/web/netsurf/01_redox.patch b/recipes/web/netsurf/01_redox.patch index b672c980..9330b42e 100644 --- a/recipes/web/netsurf/01_redox.patch +++ b/recipes/web/netsurf/01_redox.patch @@ -1,6 +1,42 @@ +diff -ruwN source/Makefile source-new/Makefile +--- source/Makefile 2023-12-28 07:57:05.071795200 +0700 ++++ source-new/Makefile 2025-07-20 11:58:36.652747547 +0700 +@@ -110,7 +110,7 @@ + + # prefixed install macro for each host sub target + define do_build_prefix_install +- $(MAKE) install --directory=$1 HOST=$(BUILD) PREFIX=$(TMP_PREFIX) Q=$(Q) DESTDIR= ++ $(MAKE) install --directory=$1 HOST=$(BUILD) PREFIX=$(TMP_PREFIX) Q=$(Q) DESTDIR= CC=cc LDFLAGS= + + endef + +diff -ruwN source/buildsystem/makefiles/Makefile.tools source-new/buildsystem/makefiles/Makefile.tools +--- source/buildsystem/makefiles/Makefile.tools 2023-12-28 07:57:21.479359900 +0700 ++++ source-new/buildsystem/makefiles/Makefile.tools 2025-07-20 11:58:36.662747547 +0700 +@@ -135,7 +135,7 @@ + endif + + # Search the path for the compiler +- toolpath_ := $(shell /bin/which $(CC__)) ++ toolpath_ := $(shell which $(CC__)) + ifeq ($(toolpath_),) + toolpath_ := /opt/netsurf/$(HOST)/cross/bin/ + CC__ := $(toolpath_)$(HOST)-gcc +diff -ruwN source/buildsystem/makefiles/Makefile.top source-new/buildsystem/makefiles/Makefile.top +--- source/buildsystem/makefiles/Makefile.top 2023-12-28 07:57:21.479359900 +0700 ++++ source-new/buildsystem/makefiles/Makefile.top 2025-07-20 11:58:36.662747547 +0700 +@@ -462,7 +462,7 @@ + + define build_c + ifeq ($$(findstring $$(BUILDDIR)/$2,$$(BUILDFILES)),) +- $$(BUILDDIR)/$2: $$(BUILDDIR)/stamp $1 ++ $$(BUILDDIR)/$2: $$(BUILDDIR)/stamp $1 | $$(PRE_TARGETS) + $$(VQ)$$(ECHO) $$(ECHOFLAGS) " COMPILE: $1" + $$(Q)$$(CC) -MMD -MP $$($3) -o $$@ -c $1 + diff -ruwN source/libnsfb/Makefile source-new/libnsfb/Makefile ---- source/libnsfb/Makefile 2020-05-24 15:35:21.000000000 -0600 -+++ source-new/libnsfb/Makefile 2023-03-03 19:29:10.674915797 -0700 +--- source/libnsfb/Makefile 2023-12-28 07:57:22.311338000 +0700 ++++ source-new/libnsfb/Makefile 2025-07-20 11:58:36.652747547 +0700 @@ -43,10 +43,10 @@ NSFB_XCB_PKG_NAMES := xcb xcb-icccm xcb-image xcb-keysyms xcb-atom @@ -16,8 +52,8 @@ diff -ruwN source/libnsfb/Makefile source-new/libnsfb/Makefile # Flags and setup for each support library ifeq ($(NSFB_SDL_AVAILABLE),yes) diff -ruwN source/libnsfb/src/plot.h source-new/libnsfb/src/plot.h ---- source/libnsfb/src/plot.h 2020-05-24 15:35:21.000000000 -0600 -+++ source-new/libnsfb/src/plot.h 2023-03-03 19:29:10.674915797 -0700 +--- source/libnsfb/src/plot.h 2023-12-28 07:57:22.315338000 +0700 ++++ source-new/libnsfb/src/plot.h 2025-07-20 11:58:36.652747547 +0700 @@ -46,7 +46,7 @@ #error "Endian determination failed" #endif @@ -27,21 +63,9 @@ diff -ruwN source/libnsfb/src/plot.h source-new/libnsfb/src/plot.h #if defined(__BYTE_ORDER__) #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ #define NSFB_BE_BYTE_ORDER -diff -ruwN source/Makefile source-new/Makefile ---- source/Makefile 2020-05-24 15:34:42.000000000 -0600 -+++ source-new/Makefile 2023-03-03 19:34:34.411016536 -0700 -@@ -110,7 +110,7 @@ - - # prefixed install macro for each host sub target - define do_build_prefix_install -- $(MAKE) install --directory=$1 HOST=$(BUILD) PREFIX=$(TMP_PREFIX) Q=$(Q) DESTDIR= -+ $(MAKE) install --directory=$1 HOST=$(BUILD) PREFIX=$(TMP_PREFIX) Q=$(Q) DESTDIR= CC=cc LDFLAGS= - - endef - diff -ruwN source/netsurf/Makefile.config source-new/netsurf/Makefile.config ---- source/netsurf/Makefile.config 1969-12-31 17:00:00.000000000 -0700 -+++ source-new/netsurf/Makefile.config 2023-03-03 19:29:10.674915797 -0700 +--- source/netsurf/Makefile.config 1970-01-01 07:00:00.000000000 +0700 ++++ source-new/netsurf/Makefile.config 2025-07-20 11:58:36.652747547 +0700 @@ -0,0 +1,28 @@ +override NETSURF_HOMEPAGE := "https://www.redox-os.org/" +override NETSURF_FB_FRONTEND := sdl @@ -71,9 +95,21 @@ diff -ruwN source/netsurf/Makefile.config source-new/netsurf/Makefile.config +override NETSURF_FB_FONT_MONOSPACE_BOLD := Mono/Fira/Bold.ttf +override NETSURF_FB_FONT_CURSIVE := Sans/Fira/Regular.ttf +override NETSURF_FB_FONT_FANTASY := Sans/Fira/Regular.ttf +diff -ruwN source/netsurf/frontends/framebuffer/Makefile source-new/netsurf/frontends/framebuffer/Makefile +--- source/netsurf/frontends/framebuffer/Makefile 2023-12-28 07:57:22.987320000 +0700 ++++ source-new/netsurf/frontends/framebuffer/Makefile 2025-07-20 11:58:36.662747547 +0700 +@@ -200,7 +200,7 @@ + install-framebuffer: + $(VQ)echo " INSTALL: $(DESTDIR)/$(PREFIX)" + $(Q)$(INSTALL) -d $(DESTDIR)/$(NETSURF_FRAMEBUFFER_BIN) +- $(Q)$(INSTALL) -T $(EXETARGET) $(DESTDIR)/$(NETSURF_FRAMEBUFFER_BIN)/netsurf-fb ++ $(Q)$(INSTALL) $(EXETARGET) $(DESTDIR)/$(NETSURF_FRAMEBUFFER_BIN)/netsurf-fb + $(Q)$(INSTALL) -d $(DESTDIR)/$(NETSURF_FRAMEBUFFER_RESOURCES) + $(Q)for F in $(NETSURF_FRAMEBUFFER_RESOURCE_LIST); do $(INSTALL) -m 644 $(FRONTEND_RESOURCES_DIR)/$$F $(DESTDIR)/$(NETSURF_FRAMEBUFFER_RESOURCES); done + $(Q)$(INSTALL) -m 644 -T $(MESSAGES_TARGET)/en/Messages $(DESTDIR)/$(NETSURF_FRAMEBUFFER_RESOURCES)/Messages diff -ruwN source/netsurf/utils/config.h source-new/netsurf/utils/config.h ---- source/netsurf/utils/config.h 2020-05-24 15:35:23.000000000 -0600 -+++ source-new/netsurf/utils/config.h 2023-03-03 19:29:10.674915797 -0700 +--- source/netsurf/utils/config.h 2023-12-28 07:57:23.095317100 +0700 ++++ source-new/netsurf/utils/config.h 2025-07-20 12:12:51.782724549 +0700 @@ -63,7 +63,8 @@ defined(__BEOS__) || \ defined(__amigaos4__) || \ @@ -84,39 +120,21 @@ diff -ruwN source/netsurf/utils/config.h source-new/netsurf/utils/config.h #undef HAVE_STRPTIME #undef HAVE_STRFTIME #else - diff -ruwN source/buildsystem/makefiles/Makefile.tools source-new/buildsystem/makefiles/Makefile.tools ---- source/buildsystem/makefiles/Makefile.tools 2023-04-15 08:48:37.000000000 +0100 -+++ source-new/buildsystem/makefiles/Makefile.tools 2023-04-15 08:48:37.000000000 +0100 -@@ -135,7 +135,7 @@ - endif - - # Search the path for the compiler -- toolpath_ := $(shell /bin/which $(CC__)) -+ toolpath_ := $(shell which $(CC__)) - ifeq ($(toolpath_),) - toolpath_ := /opt/netsurf/$(HOST)/cross/bin/ - CC__ := $(toolpath_)$(HOST)-gcc -diff -ruwN source/netsurf/frontends/framebuffer/Makefile source-new/netsurf/frontends/framebuffer/Makefile ---- source/netsurf/frontends/framebuffer/Makefile 2020-05-24 22:35:23.000000000 +0100 -+++ source-new/netsurf/frontends/framebuffer/Makefile 2023-04-15 09:09:18.000000000 +0100 -@@ -222,7 +222,7 @@ - install-framebuffer: - $(VQ)echo " INSTALL: $(DESTDIR)/$(PREFIX)" - $(Q)$(INSTALL) -d $(DESTDIR)/$(NETSURF_FRAMEBUFFER_BIN) -- $(Q)$(INSTALL) -T $(EXETARGET) $(DESTDIR)/$(NETSURF_FRAMEBUFFER_BIN)/netsurf-fb -+ $(Q)$(INSTALL) $(EXETARGET) $(DESTDIR)/$(NETSURF_FRAMEBUFFER_BIN)/netsurf-fb - $(Q)$(INSTALL) -d $(DESTDIR)/$(NETSURF_FRAMEBUFFER_RESOURCES) - $(Q)for F in $(NETSURF_FRAMEBUFFER_RESOURCE_LIST); do $(INSTALL) -m 644 $(FRONTEND_RESOURCES_DIR)/$$F $(DESTDIR)/$(NETSURF_FRAMEBUFFER_RESOURCES); done - $(Q)$(RM) $(DESTDIR)/$(NETSURF_FRAMEBUFFER_RESOURCES)/Messages -diff -ruwN source/buildsystem/makefiles/Makefile.top source-new/buildsystem/makefiles/Makefile.top ---- source/buildsystem/makefiles/Makefile.top 2020-05-24 22:35:19.000000000 +0100 -+++ source-new/buildsystem/makefiles/Makefile.top 2023-04-18 18:50:10.000000000 +0100 -@@ -444,7 +444,7 @@ - - define build_c - ifeq ($$(findstring $$(BUILDDIR)/$2,$$(BUILDFILES)),) -- $$(BUILDDIR)/$2: $$(BUILDDIR)/stamp $1 -+ $$(BUILDDIR)/$2: $$(BUILDDIR)/stamp $1 | $$(PRE_TARGETS) - $$(VQ)$$(ECHO) $$(ECHOFLAGS) " COMPILE: $1" - $$(Q)$$(CC) -MMD -MP $$($3) -o $$@ -c $1 - +@@ -136,7 +137,7 @@ + #endif + + #define HAVE_MMAP +-#if (defined(_WIN32) || defined(__riscos__) || defined(__HAIKU__) || defined(__BEOS__) || defined(__amigaos4__) || defined(__AMIGA__) || defined(__MINT__)) ++#if (defined(_WIN32) || defined(__riscos__) || defined(__HAIKU__) || defined(__BEOS__) || defined(__amigaos4__) || defined(__AMIGA__) || defined(__MINT__) || defined(__redox__)) + #undef HAVE_MMAP + #endif + +@@ -149,7 +150,7 @@ + #define HAVE_DIRFD + #define HAVE_UNLINKAT + #define HAVE_FSTATAT +-#if (defined(_WIN32) || defined(__riscos__) || defined(__HAIKU__) || defined(__BEOS__) || defined(__amigaos4__) || defined(__AMIGA__) || defined(__MINT__)) ++#if (defined(_WIN32) || defined(__riscos__) || defined(__HAIKU__) || defined(__BEOS__) || defined(__amigaos4__) || defined(__AMIGA__) || defined(__MINT__) || defined(__redox__)) + #undef HAVE_DIRFD + #undef HAVE_UNLINKAT + #undef HAVE_FSTATAT diff --git a/recipes/web/netsurf/recipe.toml b/recipes/web/netsurf/recipe.toml index f185d275..5501fa54 100644 --- a/recipes/web/netsurf/recipe.toml +++ b/recipes/web/netsurf/recipe.toml @@ -1,6 +1,6 @@ [source] -tar = "https://download.netsurf-browser.org/netsurf/releases/source-full/netsurf-all-3.10.tar.gz" -blake3 = "d0f3b4dabf536a39059b156d2ec4633c6f7b71208466e09a3c1ca2a319a44b61" +tar = "https://download.netsurf-browser.org/netsurf/releases/source-full/netsurf-all-3.11.tar.gz" +blake3 = "cd406668a9ed5712efac1a8685125b83626690b73bbc6cb5de82ef00e3f65087" patches = [ "./01_redox.patch" ] From c854d51097ef02b10707fdf94092e20f8c43b256 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sun, 20 Jul 2025 17:19:49 +0000 Subject: [PATCH 2703/3180] Update Go recipe --- recipes/wip/dev/lang/go/01_redox.patch | 532 +++++++++++++++++++++++++ recipes/wip/dev/lang/go/recipe.toml | 49 ++- 2 files changed, 578 insertions(+), 3 deletions(-) create mode 100644 recipes/wip/dev/lang/go/01_redox.patch diff --git a/recipes/wip/dev/lang/go/01_redox.patch b/recipes/wip/dev/lang/go/01_redox.patch new file mode 100644 index 00000000..ae7682f1 --- /dev/null +++ b/recipes/wip/dev/lang/go/01_redox.patch @@ -0,0 +1,532 @@ +diff -ruwN source/src/cmd/dist/build.go source-new/src/cmd/dist/build.go +--- source/src/cmd/dist/build.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/cmd/dist/build.go 2025-07-20 22:44:22.522527140 +0700 +@@ -94,6 +94,7 @@ + "wasip1", + "linux", + "android", ++ "redox", + "solaris", + "freebsd", + "nacl", // keep; +@@ -764,7 +765,7 @@ + elem = "go_bootstrap" + } + link = []string{pathf("%s/link", tooldir)} +- if goos == "android" { ++ if goos == "android" || goos == "redox" { + link = append(link, "-buildmode=pie") + } + if goldflags != "" { +@@ -1020,7 +1021,7 @@ + if symabis != "" { + compile = append(compile, "-symabis", symabis) + } +- if goos == "android" { ++ if goos == "android" || goos == "redox" { + compile = append(compile, "-shared") + } + +@@ -1084,6 +1085,7 @@ + "linux": true, + "netbsd": true, + "openbsd": true, ++ "redox": true, + "solaris": true, + } + +@@ -1093,7 +1095,7 @@ + case "gc", "cmd_go_bootstrap", "go1.1": + return true + case "linux": +- return goos == "linux" || goos == "android" ++ return goos == "linux" || goos == "android" || goos == "redox" + case "solaris": + return goos == "solaris" || goos == "illumos" + case "darwin": +@@ -1118,7 +1120,7 @@ + name := filepath.Base(file) + excluded := func(list []string, ok string) bool { + for _, x := range list { +- if x == ok || (ok == "android" && x == "linux") || (ok == "illumos" && x == "solaris") || (ok == "ios" && x == "darwin") { ++ if x == ok || (ok == "android" && x == "linux") || (ok == "redox" && x == "linux") || (ok == "illumos" && x == "solaris") || (ok == "ios" && x == "darwin") { + continue + } + i := strings.Index(name, x) +@@ -1794,6 +1796,10 @@ + "android/amd64": true, + "android/arm": true, + "android/arm64": true, ++ "redox/386": true, ++ "redox/amd64": true, ++ "redox/arm64": true, ++ "redox/riscv64": true, + "ios/arm64": true, + "ios/amd64": true, + "js/wasm": false, +diff -ruwN source/src/cmd/go/go_test.go source-new/src/cmd/go/go_test.go +--- source/src/cmd/go/go_test.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/cmd/go/go_test.go 2025-07-20 23:14:12.602481300 +0700 +@@ -2081,7 +2081,7 @@ + tg.run(args...) + + switch runtime.GOOS { +- case "linux", "android", "freebsd": ++ case "linux", "android", "redox", "freebsd": + f, err := elf.Open(obj) + if err != nil { + t.Fatal(err) +diff -ruwN source/src/cmd/go/internal/modindex/build.go source-new/src/cmd/go/internal/modindex/build.go +--- source/src/cmd/go/internal/modindex/build.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/cmd/go/internal/modindex/build.go 2025-07-20 23:27:26.452458389 +0700 +@@ -873,6 +873,9 @@ + if ctxt.GOOS == "android" && name == "linux" { + return true + } ++ if ctxt.GOOS == "redox" && name == "linux" { ++ return true ++ } + if ctxt.GOOS == "illumos" && name == "solaris" { + return true + } +diff -ruwN source/src/cmd/go/internal/work/exec.go source-new/src/cmd/go/internal/work/exec.go +--- source/src/cmd/go/internal/work/exec.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/cmd/go/internal/work/exec.go 2025-07-20 23:28:05.892457627 +0700 +@@ -3056,7 +3056,7 @@ + dynobj := objdir + "_cgo_.o" + + ldflags := cgoLDFLAGS +- if (cfg.Goarch == "arm" && cfg.Goos == "linux") || cfg.Goos == "android" { ++ if (cfg.Goarch == "arm" && cfg.Goos == "linux") || (cfg.Goarch == "arm" && cfg.Goos == "redox") || cfg.Goos == "android" { + if !slices.Contains(ldflags, "-no-pie") { + // we need to use -pie for Linux/ARM to get accurate imported sym (added in https://golang.org/cl/5989058) + // this seems to be outdated, but we don't want to break existing builds depending on this (Issue 45940) +diff -ruwN source/src/cmd/go/internal/work/init.go source-new/src/cmd/go/internal/work/init.go +--- source/src/cmd/go/internal/work/init.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/cmd/go/internal/work/init.go 2025-07-20 23:14:04.102481503 +0700 +@@ -220,7 +220,7 @@ + codegenArg = "-fPIC" + } else { + switch cfg.Goos { +- case "linux", "android", "freebsd": ++ case "linux", "android", "redox", "freebsd": + codegenArg = "-shared" + case "windows": + // Do not add usual .exe suffix to the .dll file. +diff -ruwN source/src/cmd/internal/objabi/head.go source-new/src/cmd/internal/objabi/head.go +--- source/src/cmd/internal/objabi/head.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/cmd/internal/objabi/head.go 2025-07-20 23:13:51.872481802 +0700 +@@ -63,7 +63,7 @@ + *h = Hfreebsd + case "js": + *h = Hjs +- case "linux", "android": ++ case "linux", "android", "redox": + *h = Hlinux + case "netbsd": + *h = Hnetbsd +diff -ruwN source/src/cmd/vendor/golang.org/x/telemetry/internal/telemetry/dir.go source-new/src/cmd/vendor/golang.org/x/telemetry/internal/telemetry/dir.go +--- source/src/cmd/vendor/golang.org/x/telemetry/internal/telemetry/dir.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/cmd/vendor/golang.org/x/telemetry/internal/telemetry/dir.go 2025-07-20 23:29:12.692455838 +0700 +@@ -155,6 +155,7 @@ + runtime.GOOS == "openbsd" || // #60614 + runtime.GOOS == "solaris" || // #60968 #60970 + runtime.GOOS == "android" || // #60967 ++ runtime.GOOS == "redox" || // plz no + runtime.GOOS == "illumos" || // #65544 + // These platforms fundamentally can't be supported: + runtime.GOOS == "js" || // #60971 +diff -ruwN source/src/go/build/build.go source-new/src/go/build/build.go +--- source/src/go/build/build.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/go/build/build.go 2025-07-20 22:44:22.522527140 +0700 +@@ -1971,6 +1971,9 @@ + if ctxt.GOOS == "android" && name == "linux" { + return true + } ++ if ctxt.GOOS == "redox" && name == "linux" { ++ return true ++ } + if ctxt.GOOS == "illumos" && name == "solaris" { + return true + } +diff -ruwN source/src/internal/goos/gengoos.go source-new/src/internal/goos/gengoos.go +--- source/src/internal/goos/gengoos.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/internal/goos/gengoos.go 2025-07-20 22:44:22.522527140 +0700 +@@ -43,6 +43,7 @@ + var tags []string + if target == "linux" { + tags = append(tags, "!android") // must explicitly exclude android for linux ++ tags = append(tags, "!redox") // must explicitly exclude redox for linux + } + if target == "solaris" { + tags = append(tags, "!illumos") // must explicitly exclude illumos for solaris +diff -ruwN source/src/internal/goos/zgoos_aix.go source-new/src/internal/goos/zgoos_aix.go +--- source/src/internal/goos/zgoos_aix.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/internal/goos/zgoos_aix.go 2025-07-20 22:44:22.532527140 +0700 +@@ -20,6 +20,7 @@ + const IsNetbsd = 0 + const IsOpenbsd = 0 + const IsPlan9 = 0 ++const IsRedox = 0 + const IsSolaris = 0 + const IsWasip1 = 0 + const IsWindows = 0 +diff -ruwN source/src/internal/goos/zgoos_android.go source-new/src/internal/goos/zgoos_android.go +--- source/src/internal/goos/zgoos_android.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/internal/goos/zgoos_android.go 2025-07-20 22:44:22.532527140 +0700 +@@ -20,6 +20,7 @@ + const IsNetbsd = 0 + const IsOpenbsd = 0 + const IsPlan9 = 0 ++const IsRedox = 0 + const IsSolaris = 0 + const IsWasip1 = 0 + const IsWindows = 0 +diff -ruwN source/src/internal/goos/zgoos_darwin.go source-new/src/internal/goos/zgoos_darwin.go +--- source/src/internal/goos/zgoos_darwin.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/internal/goos/zgoos_darwin.go 2025-07-20 22:44:22.532527140 +0700 +@@ -20,6 +20,7 @@ + const IsNetbsd = 0 + const IsOpenbsd = 0 + const IsPlan9 = 0 ++const IsRedox = 0 + const IsSolaris = 0 + const IsWasip1 = 0 + const IsWindows = 0 +diff -ruwN source/src/internal/goos/zgoos_dragonfly.go source-new/src/internal/goos/zgoos_dragonfly.go +--- source/src/internal/goos/zgoos_dragonfly.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/internal/goos/zgoos_dragonfly.go 2025-07-20 22:44:22.532527140 +0700 +@@ -20,6 +20,7 @@ + const IsNetbsd = 0 + const IsOpenbsd = 0 + const IsPlan9 = 0 ++const IsRedox = 0 + const IsSolaris = 0 + const IsWasip1 = 0 + const IsWindows = 0 +diff -ruwN source/src/internal/goos/zgoos_freebsd.go source-new/src/internal/goos/zgoos_freebsd.go +--- source/src/internal/goos/zgoos_freebsd.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/internal/goos/zgoos_freebsd.go 2025-07-20 22:44:22.532527140 +0700 +@@ -20,6 +20,7 @@ + const IsNetbsd = 0 + const IsOpenbsd = 0 + const IsPlan9 = 0 ++const IsRedox = 0 + const IsSolaris = 0 + const IsWasip1 = 0 + const IsWindows = 0 +diff -ruwN source/src/internal/goos/zgoos_hurd.go source-new/src/internal/goos/zgoos_hurd.go +--- source/src/internal/goos/zgoos_hurd.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/internal/goos/zgoos_hurd.go 2025-07-20 22:44:22.532527140 +0700 +@@ -20,6 +20,7 @@ + const IsNetbsd = 0 + const IsOpenbsd = 0 + const IsPlan9 = 0 ++const IsRedox = 0 + const IsSolaris = 0 + const IsWasip1 = 0 + const IsWindows = 0 +diff -ruwN source/src/internal/goos/zgoos_illumos.go source-new/src/internal/goos/zgoos_illumos.go +--- source/src/internal/goos/zgoos_illumos.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/internal/goos/zgoos_illumos.go 2025-07-20 22:44:22.532527140 +0700 +@@ -20,6 +20,7 @@ + const IsNetbsd = 0 + const IsOpenbsd = 0 + const IsPlan9 = 0 ++const IsRedox = 0 + const IsSolaris = 0 + const IsWasip1 = 0 + const IsWindows = 0 +diff -ruwN source/src/internal/goos/zgoos_ios.go source-new/src/internal/goos/zgoos_ios.go +--- source/src/internal/goos/zgoos_ios.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/internal/goos/zgoos_ios.go 2025-07-20 22:44:22.532527140 +0700 +@@ -20,6 +20,7 @@ + const IsNetbsd = 0 + const IsOpenbsd = 0 + const IsPlan9 = 0 ++const IsRedox = 0 + const IsSolaris = 0 + const IsWasip1 = 0 + const IsWindows = 0 +diff -ruwN source/src/internal/goos/zgoos_js.go source-new/src/internal/goos/zgoos_js.go +--- source/src/internal/goos/zgoos_js.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/internal/goos/zgoos_js.go 2025-07-20 22:44:22.532527140 +0700 +@@ -20,6 +20,7 @@ + const IsNetbsd = 0 + const IsOpenbsd = 0 + const IsPlan9 = 0 ++const IsRedox = 0 + const IsSolaris = 0 + const IsWasip1 = 0 + const IsWindows = 0 +diff -ruwN source/src/internal/goos/zgoos_linux.go source-new/src/internal/goos/zgoos_linux.go +--- source/src/internal/goos/zgoos_linux.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/internal/goos/zgoos_linux.go 2025-07-20 22:44:22.532527140 +0700 +@@ -1,6 +1,6 @@ + // Code generated by gengoos.go using 'go generate'. DO NOT EDIT. + +-//go:build !android && linux ++//go:build !android && !redox && linux + + package goos + +@@ -20,6 +20,7 @@ + const IsNetbsd = 0 + const IsOpenbsd = 0 + const IsPlan9 = 0 ++const IsRedox = 0 + const IsSolaris = 0 + const IsWasip1 = 0 + const IsWindows = 0 +diff -ruwN source/src/internal/goos/zgoos_netbsd.go source-new/src/internal/goos/zgoos_netbsd.go +--- source/src/internal/goos/zgoos_netbsd.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/internal/goos/zgoos_netbsd.go 2025-07-20 22:44:22.532527140 +0700 +@@ -20,6 +20,7 @@ + const IsNetbsd = 1 + const IsOpenbsd = 0 + const IsPlan9 = 0 ++const IsRedox = 0 + const IsSolaris = 0 + const IsWasip1 = 0 + const IsWindows = 0 +diff -ruwN source/src/internal/goos/zgoos_openbsd.go source-new/src/internal/goos/zgoos_openbsd.go +--- source/src/internal/goos/zgoos_openbsd.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/internal/goos/zgoos_openbsd.go 2025-07-20 22:44:22.532527140 +0700 +@@ -20,6 +20,7 @@ + const IsNetbsd = 0 + const IsOpenbsd = 1 + const IsPlan9 = 0 ++const IsRedox = 0 + const IsSolaris = 0 + const IsWasip1 = 0 + const IsWindows = 0 +diff -ruwN source/src/internal/goos/zgoos_plan9.go source-new/src/internal/goos/zgoos_plan9.go +--- source/src/internal/goos/zgoos_plan9.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/internal/goos/zgoos_plan9.go 2025-07-20 22:44:22.532527140 +0700 +@@ -20,6 +20,7 @@ + const IsNetbsd = 0 + const IsOpenbsd = 0 + const IsPlan9 = 1 ++const IsRedox = 0 + const IsSolaris = 0 + const IsWasip1 = 0 + const IsWindows = 0 +diff -ruwN source/src/internal/goos/zgoos_redox.go source-new/src/internal/goos/zgoos_redox.go +--- source/src/internal/goos/zgoos_redox.go 1970-01-01 07:00:00.000000000 +0700 ++++ source-new/src/internal/goos/zgoos_redox.go 2025-07-20 22:44:22.532527140 +0700 +@@ -0,0 +1,27 @@ ++// Code generated by gengoos.go using 'go generate'. DO NOT EDIT. ++ ++//go:build redox ++ ++package goos ++ ++const GOOS = `redox` ++ ++const IsAix = 0 ++const IsAndroid = 0 ++const IsDarwin = 0 ++const IsDragonfly = 0 ++const IsFreebsd = 0 ++const IsHurd = 0 ++const IsIllumos = 0 ++const IsIos = 0 ++const IsJs = 0 ++const IsLinux = 0 ++const IsNacl = 0 ++const IsNetbsd = 0 ++const IsOpenbsd = 0 ++const IsPlan9 = 0 ++const IsRedox = 1 ++const IsSolaris = 0 ++const IsWasip1 = 0 ++const IsWindows = 0 ++const IsZos = 0 +diff -ruwN source/src/internal/goos/zgoos_solaris.go source-new/src/internal/goos/zgoos_solaris.go +--- source/src/internal/goos/zgoos_solaris.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/internal/goos/zgoos_solaris.go 2025-07-20 22:44:22.532527140 +0700 +@@ -20,6 +20,7 @@ + const IsNetbsd = 0 + const IsOpenbsd = 0 + const IsPlan9 = 0 ++const IsRedox = 0 + const IsSolaris = 1 + const IsWasip1 = 0 + const IsWindows = 0 +diff -ruwN source/src/internal/goos/zgoos_wasip1.go source-new/src/internal/goos/zgoos_wasip1.go +--- source/src/internal/goos/zgoos_wasip1.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/internal/goos/zgoos_wasip1.go 2025-07-20 22:44:22.532527140 +0700 +@@ -20,6 +20,7 @@ + const IsNetbsd = 0 + const IsOpenbsd = 0 + const IsPlan9 = 0 ++const IsRedox = 0 + const IsSolaris = 0 + const IsWasip1 = 1 + const IsWindows = 0 +diff -ruwN source/src/internal/goos/zgoos_windows.go source-new/src/internal/goos/zgoos_windows.go +--- source/src/internal/goos/zgoos_windows.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/internal/goos/zgoos_windows.go 2025-07-20 22:44:22.532527140 +0700 +@@ -20,6 +20,7 @@ + const IsNetbsd = 0 + const IsOpenbsd = 0 + const IsPlan9 = 0 ++const IsRedox = 0 + const IsSolaris = 0 + const IsWasip1 = 0 + const IsWindows = 1 +diff -ruwN source/src/internal/goos/zgoos_zos.go source-new/src/internal/goos/zgoos_zos.go +--- source/src/internal/goos/zgoos_zos.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/internal/goos/zgoos_zos.go 2025-07-20 22:44:22.532527140 +0700 +@@ -20,6 +20,7 @@ + const IsNetbsd = 0 + const IsOpenbsd = 0 + const IsPlan9 = 0 ++const IsRedox = 0 + const IsSolaris = 0 + const IsWasip1 = 0 + const IsWindows = 0 +diff -ruwN source/src/internal/platform/supported.go source-new/src/internal/platform/supported.go +--- source/src/internal/platform/supported.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/internal/platform/supported.go 2025-07-20 22:44:22.532527140 +0700 +@@ -209,7 +209,7 @@ + case "plugin": + switch platform { + case "linux/amd64", "linux/arm", "linux/arm64", "linux/386", "linux/loong64", "linux/s390x", "linux/ppc64le", +- "android/amd64", "android/386", ++ "android/amd64", "android/386", "redox/amd64", "redox/386", + "darwin/amd64", "darwin/arm64", + "freebsd/amd64": + return true +@@ -237,7 +237,7 @@ + // so force the caller to pass that in to centralize that choice. + func DefaultPIE(goos, goarch string, isRace bool) bool { + switch goos { +- case "android", "ios": ++ case "android", "ios", "redox": + return true + case "windows": + if isRace { +diff -ruwN source/src/internal/platform/zosarch.go source-new/src/internal/platform/zosarch.go +--- source/src/internal/platform/zosarch.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/internal/platform/zosarch.go 2025-07-20 22:44:22.532527140 +0700 +@@ -13,6 +13,9 @@ + {"android", "amd64"}, + {"android", "arm"}, + {"android", "arm64"}, ++ {"redox", "386"}, ++ {"redox", "amd64"}, ++ {"redox", "arm64"}, + {"darwin", "amd64"}, + {"darwin", "arm64"}, + {"dragonfly", "amd64"}, +@@ -67,6 +70,9 @@ + {"android", "amd64"}: {CgoSupported: true}, + {"android", "arm"}: {CgoSupported: true}, + {"android", "arm64"}: {CgoSupported: true}, ++ {"redox", "386"}: {CgoSupported: true}, ++ {"redox", "amd64"}: {CgoSupported: true}, ++ {"redox", "arm64"}: {CgoSupported: true}, + {"darwin", "amd64"}: {CgoSupported: true, FirstClass: true}, + {"darwin", "arm64"}: {CgoSupported: true, FirstClass: true}, + {"dragonfly", "amd64"}: {CgoSupported: true}, +diff -ruwN source/src/internal/poll/sendfile_unix.go source-new/src/internal/poll/sendfile_unix.go +--- source/src/internal/poll/sendfile_unix.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/internal/poll/sendfile_unix.go 2025-07-20 23:20:57.622471583 +0700 +@@ -28,7 +28,7 @@ + // has not modified the source or destination, + // and the caller should perform the copy using a fallback implementation. + func SendFile(dstFD *FD, src int, size int64) (n int64, err error, handled bool) { +- if goos := runtime.GOOS; goos == "linux" || goos == "android" { ++ if goos := runtime.GOOS; goos == "linux" || goos == "android" || goos == "redox" { + // Linux's sendfile doesn't require any setup: + // It sends from the current position of the source file and + // updates the position of the source after sending. +diff -ruwN source/src/internal/syslist/syslist.go source-new/src/internal/syslist/syslist.go +--- source/src/internal/syslist/syslist.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/internal/syslist/syslist.go 2025-07-20 22:44:22.532527140 +0700 +@@ -29,6 +29,7 @@ + "netbsd": true, + "openbsd": true, + "plan9": true, ++ "redox": true, + "solaris": true, + "wasip1": true, + "windows": true, +@@ -50,6 +51,7 @@ + "linux": true, + "netbsd": true, + "openbsd": true, ++ "redox": true, + "solaris": true, + } + +diff -ruwN source/src/runtime/cgo/cgo.go source-new/src/runtime/cgo/cgo.go +--- source/src/runtime/cgo/cgo.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/runtime/cgo/cgo.go 2025-07-20 22:44:22.532527140 +0700 +@@ -16,7 +16,8 @@ + #cgo dragonfly LDFLAGS: -lpthread + #cgo freebsd LDFLAGS: -lpthread + #cgo android LDFLAGS: -llog +-#cgo !android,linux LDFLAGS: -lpthread ++#cgo redox LDFLAGS: -llog ++#cgo !android,!redox,linux LDFLAGS: -lpthread + #cgo netbsd LDFLAGS: -lpthread + #cgo openbsd LDFLAGS: -lpthread + #cgo aix LDFLAGS: -Wl,-berok +diff -ruwN source/src/runtime/pprof/pprof_rusage.go source-new/src/runtime/pprof/pprof_rusage.go +--- source/src/runtime/pprof/pprof_rusage.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/runtime/pprof/pprof_rusage.go 2025-07-20 22:49:29.702520564 +0700 +@@ -17,7 +17,7 @@ + func addMaxRSS(w io.Writer) { + var rssToBytes uintptr + switch runtime.GOOS { +- case "aix", "android", "dragonfly", "freebsd", "linux", "netbsd", "openbsd": ++ case "aix", "android", "redox", "dragonfly", "freebsd", "linux", "netbsd", "openbsd": + rssToBytes = 1024 + case "darwin", "ios": + rssToBytes = 1 +diff -ruwN source/src/runtime/pprof/proto_test.go source-new/src/runtime/pprof/proto_test.go +--- source/src/runtime/pprof/proto_test.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/runtime/pprof/proto_test.go 2025-07-20 22:49:40.452520165 +0700 +@@ -83,7 +83,7 @@ + // to use in test profiles. + func testPCs(t *testing.T) (addr1, addr2 uint64, map1, map2 *profile.Mapping) { + switch runtime.GOOS { +- case "linux", "android", "netbsd": ++ case "linux", "android", "redox", "netbsd": + // Figure out two addresses from /proc/self/maps. + mmap, err := os.ReadFile("/proc/self/maps") + if err != nil { +diff -ruwN source/src/runtime/race/internal/amd64v1/doc.go source-new/src/runtime/race/internal/amd64v1/doc.go +--- source/src/runtime/race/internal/amd64v1/doc.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/runtime/race/internal/amd64v1/doc.go 2025-07-20 22:55:01.602514355 +0700 +@@ -5,6 +5,6 @@ + // This package holds the race detector .syso for + // amd64 architectures with GOAMD64 /dev/null; then + GO_TARBALL=go1.24.5.linux-$( [ "$(uname -m)" = "aarch64" ] && echo "arm64" || echo "amd64" ).tar.gz + GO_DOWNLOAD_URL="https://dl.google.com/go/${GO_TARBALL}" + echo "Installing Go..." + wget -q --show-progress "${GO_DOWNLOAD_URL}" + tar -C "$HOME" -xzf "${GO_TARBALL}" +fi + +# Go does not support out-of-tree builds :( +rsync -a --delete "${COOKBOOK_SOURCE}/" ./ + +export GOOS=redox +case "${TARGET}" in + x86-unknown-redox) + export GOARCH=386 + ;; + x86_64-unknown-redox) + export GOARCH=amd64 + ;; + aarch64-unknown-redox) + export GOARCH=arm64 + ;; +esac + +export GOROOT_FINAL=${COOKBOOK_STAGE} +export CGO_ENABLED=1 +export CC_FOR_TARGET="${CC}" +export CXX_FOR_TARGET="${CXX}" +# Don't poison the runtime tools (host -> host) +unset AR AS CC CXX LD LDFLAGS NM OBJCOPY OBJDUMP RANLIB READELF STRIP +cd ./src +bash ./make.bash -v +bash run.bash --no-rebuild +"$GOTOOLDIR/dist" banner # print build info +""" From 89f928d1d7697578624a4252717901215e3557b6 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Mon, 21 Jul 2025 00:30:24 +0000 Subject: [PATCH 2704/3180] Adapt for gid_t/uid_t redox size --- recipes/wip/dev/lang/go/01_redox.patch | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/recipes/wip/dev/lang/go/01_redox.patch b/recipes/wip/dev/lang/go/01_redox.patch index ae7682f1..66895a0f 100644 --- a/recipes/wip/dev/lang/go/01_redox.patch +++ b/recipes/wip/dev/lang/go/01_redox.patch @@ -530,3 +530,16 @@ diff -ruwN source/src/runtime/signal_unix.go source-new/src/runtime/signal_unix. // sigPerThreadSyscall is the same signal used by glibc for // per-thread syscalls on Linux. We use it for the same purpose // in non-cgo binaries. Since this signal is not _SigNotify, +diff -ruwN source/src/os/user/cgo_lookup_unix.go source-new/src/os/user/cgo_lookup_unix.go +--- source/src/os/user/cgo_lookup_unix.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/os/user/cgo_lookup_unix.go 2025-07-21 07:26:57.799950678 +0700 +@@ -194,7 +194,7 @@ + // Because we can't use cgo in tests: + func structPasswdForNegativeTest() _C_struct_passwd { + sp := _C_struct_passwd{} +- *_C_pw_uidp(&sp) = 1<<32 - 2 +- *_C_pw_gidp(&sp) = 1<<32 - 3 ++ *_C_pw_uidp(&sp) = 1<<31 - 2 ++ *_C_pw_gidp(&sp) = 1<<31 - 3 + return sp + } From 10e8907648a6f70a92c8be4de4a2d70ae5098c84 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 21 Jul 2025 10:25:23 -0300 Subject: [PATCH 2705/3180] Add policy for recipe naming --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index a20e95e2..45af8844 100644 --- a/README.md +++ b/README.md @@ -16,10 +16,6 @@ from the [redox](https://gitlab.redox-os.org/redox-os/redox) repository. - [Recipe Categories](#recipe-categories) - [Search Recipes](#search-recipes) - [Package Policy](#package-policy) - - [Cross-Compilation](#cross-compilation) - - [ABI stability](#abi-stability) - - [Checksum](#checksum) - - [License](#license) - [Testing Area](#testing-area) - [Suggestions for TODOs](#suggestions-for-todos) - [Repository Layout](#repository-layout) @@ -60,6 +56,10 @@ Click in the button named "Find file" on the top of this repository to search fo Before sending your recipe to upstream (to become a public package), you must follow these rules: +#### Naming + +- The recipe name can't have dots, backslashes, and NULs + #### Cross-Compilation - All recipes must use our cross-compilers, a Cookbook [template](https://doc.redox-os.org/book/porting-applications.html#templates) does this automatically but it's not always possible, study the build system of your program or library to find these options or patch the configuration files. From 50d43548cd053898af4c56cb2f46411e1767d947 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Mon, 21 Jul 2025 15:58:32 +0000 Subject: [PATCH 2706/3180] Fix and promote zstd --- recipes/archives/zstd/01_redox.patch | 15 +++++++++++++++ recipes/archives/zstd/recipe.toml | 12 ++++++++++++ recipes/wip/archives/zstd/recipe.toml | 15 --------------- 3 files changed, 27 insertions(+), 15 deletions(-) create mode 100644 recipes/archives/zstd/01_redox.patch create mode 100644 recipes/archives/zstd/recipe.toml delete mode 100644 recipes/wip/archives/zstd/recipe.toml diff --git a/recipes/archives/zstd/01_redox.patch b/recipes/archives/zstd/01_redox.patch new file mode 100644 index 00000000..0cff8dc9 --- /dev/null +++ b/recipes/archives/zstd/01_redox.patch @@ -0,0 +1,15 @@ +diff -ruwN source/programs/platform.h source-new/programs/platform.h +--- source/programs/platform.h 2025-02-19 07:04:24.000000000 +0700 ++++ source-new/programs/platform.h 2025-07-21 22:52:07.716447723 +0700 +@@ -109,6 +109,11 @@ + #endif /* PLATFORM_POSIX_VERSION */ + + ++#if defined(__redox__) ++/* TODO: AT_FDCWD && utimensat must be defined to conform _POSIX_VERSION */ ++# define PLATFORM_POSIX_VERSION 1 ++#endif ++ + #if PLATFORM_POSIX_VERSION > 1 + /* glibc < 2.26 may not expose struct timespec def without this. + * See issue #1920. */ diff --git a/recipes/archives/zstd/recipe.toml b/recipes/archives/zstd/recipe.toml new file mode 100644 index 00000000..e42573e0 --- /dev/null +++ b/recipes/archives/zstd/recipe.toml @@ -0,0 +1,12 @@ +[source] +tar = "https://github.com/facebook/zstd/releases/download/v1.5.7/zstd-1.5.7.tar.gz" +patches = [ + "01_redox.patch" +] +[build] +template = "custom" +script = """ +DYNAMIC_INIT +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ +${COOKBOOK_MAKE} +""" diff --git a/recipes/wip/archives/zstd/recipe.toml b/recipes/wip/archives/zstd/recipe.toml deleted file mode 100644 index b7bc0a79..00000000 --- a/recipes/wip/archives/zstd/recipe.toml +++ /dev/null @@ -1,15 +0,0 @@ -#TODO waiting for openat implementation, building without openat fails -#NOTE although project supports building without openat, but the corresponding #if check -# checks for the presence of st_mtime, and if it exists it falsely assumes that AT_FDCWD is supported too -# for more info see starting from programs/util.c line 262: #if (PLATFORM_POSIX_VERSION >= 200809L) && defined(st_mtime) - -[source] -tar = "https://github.com/facebook/zstd/releases/download/v1.5.5/zstd-1.5.5.tar.gz" - -[build] -template = "custom" -script = """ -rsync -av --delete "${COOKBOOK_SOURCE}/" ./ -${COOKBOOK_MAKE} -""" - From 5df0844448324a7c71c59aacbe2ada7632c5b3b0 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Mon, 21 Jul 2025 19:14:37 +0000 Subject: [PATCH 2707/3180] Add necessary C code for libuv --- recipes/libs/libuv/recipe.toml | 19 +++------ recipes/libs/libuv/redox.patch | 76 +++++++++++++++++++++++++++------- 2 files changed, 66 insertions(+), 29 deletions(-) diff --git a/recipes/libs/libuv/recipe.toml b/recipes/libs/libuv/recipe.toml index 1a45a3d1..dcef35ca 100644 --- a/recipes/libs/libuv/recipe.toml +++ b/recipes/libs/libuv/recipe.toml @@ -6,19 +6,10 @@ patches = ["redox.patch"] [build] template = "custom" script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On - -DCMAKE_C_STANDARD=99 - -DBUILD_TESTING=OFF -"${COOKBOOK_SOURCE}" +DYNAMIC_INIT + +COOKBOOK_CMAKE_FLAGS=( + -DBUILD_TESTING=Off ) -cookbook_configure +cookbook_cmake """ diff --git a/recipes/libs/libuv/redox.patch b/recipes/libs/libuv/redox.patch index bc1a1609..c3f0bf27 100644 --- a/recipes/libs/libuv/redox.patch +++ b/recipes/libs/libuv/redox.patch @@ -1,14 +1,43 @@ -diff -ruwN a/CMakeLists.txt b/CMakeLists.txt ---- a/CMakeLists.txt 2023-05-19 13:21:01.000000000 +0200 -+++ b/CMakeLists.txt 2024-10-23 18:01:06.574850622 +0200 +diff -ruwN source/CMakeLists.txt source-new/CMakeLists.txt +--- source/CMakeLists.txt 2023-05-19 18:21:01.000000000 +0700 ++++ source-new/CMakeLists.txt 2025-07-22 01:48:56.591286953 +0700 @@ -1,3 +1,4 @@ +set (CMAKE_CXX_STANDARD 99) cmake_minimum_required(VERSION 3.4) if(POLICY CMP0091) -diff -ruwN a/src/unix/core.c b/src/unix/core.c ---- a/src/unix/core.c 2023-05-19 13:21:01.000000000 +0200 -+++ b/src/unix/core.c 2024-10-23 18:01:06.575850644 +0200 +@@ -312,6 +313,17 @@ + src/unix/hurd.c) + endif() + ++ ++if(CMAKE_SYSTEM_NAME STREQUAL "UnixPaths") # Redox ++ list(APPEND uv_libraries dl) ++ list(APPEND uv_sources ++ src/unix/no-fsevents.c ++ src/unix/proctitle.c ++ src/unix/posix-hrtime.c ++ src/unix/posix-poll.c ++ ) ++endif() ++ + if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + list(APPEND uv_defines _GNU_SOURCE _POSIX_C_SOURCE=200112) + list(APPEND uv_libraries dl rt) +diff -ruwN source/include/uv/unix.h source-new/include/uv/unix.h +--- source/include/uv/unix.h 2023-05-19 18:21:01.000000000 +0700 ++++ source-new/include/uv/unix.h 2025-07-22 01:53:54.941276543 +0700 +@@ -66,6 +66,7 @@ + defined(__MSYS__) || \ + defined(__HAIKU__) || \ + defined(__QNX__) || \ ++ defined(__redox__) || \ + defined(__GNU__) + # include "uv/posix.h" + #endif +diff -ruwN source/src/unix/core.c source-new/src/unix/core.c +--- source/src/unix/core.c 2023-05-19 18:21:01.000000000 +0700 ++++ source-new/src/unix/core.c 2025-07-21 22:55:16.826444959 +0700 @@ -97,6 +97,10 @@ # include #endif @@ -30,9 +59,9 @@ diff -ruwN a/src/unix/core.c b/src/unix/core.c ssize_t rc; rc = recvmsg(fd, msg, flags | MSG_CMSG_CLOEXEC); if (rc == -1) -diff -ruwN a/src/unix/fs.c b/src/unix/fs.c ---- a/src/unix/fs.c 2023-05-19 13:21:01.000000000 +0200 -+++ b/src/unix/fs.c 2024-10-23 18:01:06.579850732 +0200 +diff -ruwN source/src/unix/fs.c source-new/src/unix/fs.c +--- source/src/unix/fs.c 2023-05-19 18:21:01.000000000 +0700 ++++ source-new/src/unix/fs.c 2025-07-21 22:55:16.826444959 +0700 @@ -87,7 +87,8 @@ defined(__MVS__) || \ defined(__NetBSD__) || \ @@ -69,9 +98,26 @@ diff -ruwN a/src/unix/fs.c b/src/unix/fs.c stat_fs->f_type = 0; /* f_type is not supported. */ #else stat_fs->f_type = buf.f_type; -diff -ruwN a/src/unix/stream.c b/src/unix/stream.c ---- a/src/unix/stream.c 2023-05-19 13:21:01.000000000 +0200 -+++ b/src/unix/stream.c 2024-10-23 18:01:06.580850754 +0200 +diff -ruwN source/src/unix/proctitle.c source-new/src/unix/proctitle.c +--- source/src/unix/proctitle.c 2023-05-19 18:21:01.000000000 +0700 ++++ source-new/src/unix/proctitle.c 2025-07-22 02:10:12.760625178 +0700 +@@ -30,7 +30,13 @@ + size_t cap; /* Maximum capacity. Computed once in uv_setup_args(). */ + }; + ++#if defined(__redox__) ++void uv__set_process_title(const char* title) { ++ // requires sys/prctl ++} ++#else + extern void uv__set_process_title(const char* title); ++#endif + + static uv_mutex_t process_title_mutex; + static uv_once_t process_title_mutex_once = UV_ONCE_INIT; +diff -ruwN source/src/unix/stream.c source-new/src/unix/stream.c +--- source/src/unix/stream.c 2023-05-19 18:21:01.000000000 +0700 ++++ source-new/src/unix/stream.c 2025-07-21 22:55:16.826444959 +0700 @@ -29,7 +29,14 @@ #include @@ -103,9 +149,9 @@ diff -ruwN a/src/unix/stream.c b/src/unix/stream.c union uv__cmsg { struct cmsghdr hdr; -diff -ruwN a/src/unix/udp.c b/src/unix/udp.c ---- a/src/unix/udp.c 2023-05-19 13:21:01.000000000 +0200 -+++ b/src/unix/udp.c 2024-10-23 18:08:23.796492449 +0200 +diff -ruwN source/src/unix/udp.c source-new/src/unix/udp.c +--- source/src/unix/udp.c 2023-05-19 18:21:01.000000000 +0700 ++++ source-new/src/unix/udp.c 2025-07-21 22:55:16.826444959 +0700 @@ -31,6 +31,12 @@ #include #endif From 339669108e70578242f18313e7d23637ea5e7cac Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Mon, 21 Jul 2025 19:22:28 +0000 Subject: [PATCH 2708/3180] Fix and update cmake --- recipes/dev/cmake/recipe.toml | 40 +++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/recipes/dev/cmake/recipe.toml b/recipes/dev/cmake/recipe.toml index 77c573b7..4425cd33 100644 --- a/recipes/dev/cmake/recipe.toml +++ b/recipes/dev/cmake/recipe.toml @@ -1,23 +1,45 @@ [source] -tar = "https://github.com/Kitware/CMake/releases/download/v3.25.2/cmake-3.25.2.tar.gz" +tar = "https://github.com/Kitware/CMake/releases/download/v4.0.3/cmake-4.0.3.tar.gz" [build] template = "custom" dependencies = [ + "bzip2", + # "cppdap", + "curl", + "expat", + # "form", + # "jsoncpp", + "libarchive", + # "liblzma", + # "librhash", + "libuv", + "nghttp2", "openssl1", + "zlib", + "zstd", ] script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_VERBOSE_MAKEFILE=On - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_INSTALL_PREFIX="/" - "${COOKBOOK_SOURCE}" +DYNAMIC_INIT + +export LDFLAGS="-Wl,-rpath-link,${COOKBOOK_SYSROOT}/lib $LDFLAGS" + +COOKBOOK_CMAKE_FLAGS=( + -DBUILD_TESTING=Off + -DCMAKE_USE_SYSTEM_BZIP2=On + -DCMAKE_USE_SYSTEM_CURL=On + -DCMAKE_USE_SYSTEM_EXPAT=On + -DCMAKE_USE_SYSTEM_LIBARCHIVE=On + -DCMAKE_USE_SYSTEM_LIBUV=On + -DCMAKE_USE_SYSTEM_NGHTTP2=On + -DCMAKE_USE_SYSTEM_ZLIB=On + -DCMAKE_USE_SYSTEM_ZSTD=On ) +cookbook_cmake set -x -cookbook_configure mv -vT "${COOKBOOK_STAGE}"/usr/bin "${COOKBOOK_STAGE}/bin" +mv -vT "${COOKBOOK_STAGE}"/usr/share "${COOKBOOK_STAGE}/share" +rm -rf "${COOKBOOK_STAGE}"/usr/doc rmdir -v "${COOKBOOK_STAGE}"/usr set +x """ From c05194b3e9d72d8cac941757dda7a4240bd2b652 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Tue, 22 Jul 2025 10:15:50 +0000 Subject: [PATCH 2709/3180] Add LDFLAGS for linking nested libraries and helper for downloading gnu-config --- src/bin/cook.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 8198bfd6..6a2364de 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -208,9 +208,14 @@ function DYNAMIC_INIT { # TODO: check paths for spaces export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" + export LDFLAGS="-Wl,-rpath-link,${COOKBOOK_SYSROOT}/lib $LDFLAGS" export RUSTFLAGS="-C target-feature=-crt-static" export COOKBOOK_DYNAMIC=1 } + +function GNU_CONFIG_GET { + wget -O "$1" "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +} "#; fn fetch_offline(recipe_dir: &Path, source: &Option) -> Result { From 46fa0798f8eda1f4244026a2ea544eac229cfa3d Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Tue, 22 Jul 2025 20:15:37 +0000 Subject: [PATCH 2710/3180] Compile gcc libraries in gcc13 --- recipes/dev/gcc13/recipe.toml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/recipes/dev/gcc13/recipe.toml b/recipes/dev/gcc13/recipe.toml index 928e679a..38dde656 100644 --- a/recipes/dev/gcc13/recipe.toml +++ b/recipes/dev/gcc13/recipe.toml @@ -1,5 +1,10 @@ [source] tar = "https://gitlab.redox-os.org/redox-os/gcc/-/archive/redox-13.2.0/gcc-redox-13.2.0.tar.gz" +script = """ +DYNAMIC_INIT +COOKBOOK_AUTORECONF=autoreconf2.69 autotools_recursive_regenerate -I"$(realpath ./config)" +cp -fpv "${COOKBOOK_HOST_SYSROOT}"/share/libtool/build-aux/{config.sub,config.guess,install-sh} libiberty/ +""" [build] template = "custom" @@ -16,11 +21,6 @@ mkdir -p "${COOKBOOK_SYSROOT}/usr" ln -sf "${COOKBOOK_SYSROOT}/include" "${COOKBOOK_SYSROOT}/usr/include" ln -sf "${COOKBOOK_SYSROOT}/lib" "${COOKBOOK_SYSROOT}/usr/lib" -pushd "${COOKBOOK_SOURCE}" -COOKBOOK_AUTORECONF=autoreconf2.69 autotools_recursive_regenerate -I"$(realpath ./config)" -cp -fpv "${COOKBOOK_HOST_SYSROOT}"/share/libtool/build-aux/{config.sub,config.guess,install-sh} libiberty/ -popd # pushd $COOKBOOK_SOURCE - COOKBOOK_CONFIGURE_FLAGS=( --host="${GNU_TARGET}" --target="${GNU_TARGET}" @@ -38,11 +38,11 @@ COOKBOOK_CONFIGURE_FLAGS=( ) "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" -"${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" all-gcc -"${COOKBOOK_MAKE}" install-gcc DESTDIR="${COOKBOOK_STAGE}" +"${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" all-gcc all-target-libgcc all-target-libstdc++-v3 +"${COOKBOOK_MAKE}" install-gcc install-target-libgcc install-target-libstdc++-v3 DESTDIR="${COOKBOOK_STAGE}" ln -s "gcc" "${COOKBOOK_STAGE}/bin/cc" mkdir -p "${COOKBOOK_STAGE}/usr/libexec" ln -s "/libexec/gcc" "${COOKBOOK_STAGE}/usr/libexec/gcc" -# TODO These files should be created in a recipe and added as a dependency for gcc13 -cp -fpv "${COOKBOOK_HOST_SYSROOT}"/lib/gcc/"${GNU_TARGET}"/13.2.0/{*.o,*.a} "${COOKBOOK_STAGE}/lib" +# Avoid conflict with libgcc & libstdcxx +rm -f "${COOKBOOK_STAGE}"/lib/libgcc_s.so* "${COOKBOOK_STAGE}"/lib/libstdc++.so* """ From 7b9f586c37938cc8191179e42b848e978a9ab87b Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Fri, 25 Jul 2025 03:50:05 +0000 Subject: [PATCH 2711/3180] Update and Fix rust linking --- recipes/dev/rust/config.toml | 6 +++++- recipes/dev/rust/recipe.toml | 9 ++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/recipes/dev/rust/config.toml b/recipes/dev/rust/config.toml index d2760f2e..b53de2d7 100644 --- a/recipes/dev/rust/config.toml +++ b/recipes/dev/rust/config.toml @@ -1,6 +1,10 @@ [llvm] +# TODO: LLVM is only compiled for stage1, +# it should be possible to enable this download-ci-llvm = false static-libstdcpp = false +targets = "X86" +experimental-targets = "" # TODO: This currently must need to be set manually. # If you like to build llvm with sccache, uncomment: # ccache = "sccache" @@ -19,7 +23,6 @@ sysconfdir = "etc" [rust] backtrace = false -rpath = false codegen-tests = false [target.x86_64-unknown-redox] @@ -29,4 +32,5 @@ ar = "x86_64-unknown-redox-ar" linker = "x86_64-unknown-redox-gcc" # Nasty path, please fix llvm-config = "../../../../bin/x86_64-unknown-redox-llvm-config" +rpath = false crt-static = false diff --git a/recipes/dev/rust/recipe.toml b/recipes/dev/rust/recipe.toml index e71a4c6e..3bdc930f 100644 --- a/recipes/dev/rust/recipe.toml +++ b/recipes/dev/rust/recipe.toml @@ -1,8 +1,8 @@ [source] git = "https://gitlab.redox-os.org/redox-os/rust.git" -branch = "redox-2024-05-11" +branch = "redox-2025-01-12" # due to heavy git operation, this will only clone once and will not refetch -# if you want to refetch or changing the branch, please do ucr.rust +# if you want to refetch or changing the branch, please run `make ucr.rust` shallow_clone = true [build] @@ -15,9 +15,9 @@ script = """ DYNAMIC_INIT HOST_STRIP=$STRIP # Linker flags for stage2 compiler (host -> target) -export MAGIC_EXTRA_RUSTFLAGS="${LDFLAGS} -C link-args=-lz" +export LDFLAGS_x86_64_unknown_redox="${LDFLAGS}" # Don't poison the stage1 compiler (host -> host) -unset AR AS CC CXX LD LDFLAGS NM OBJCOPY OBJDUMP RANLIB READELF STRIP +unset AR AS CC CXX LD LDFLAGS NM OBJCOPY OBJDUMP RANLIB READELF RUSTFLAGS STRIP python3 "${COOKBOOK_SOURCE}/x.py" install \ --config "${COOKBOOK_RECIPE}/config.toml" \ --jobs $(nproc) @@ -29,7 +29,6 @@ rsync -av --delete "${COOKBOOK_BUILD}"/install/* "${COOKBOOK_STAGE}/" [package] dependencies = [ - "gcc13", "cargo" ] # TODO: Not implemented From fe314d7b6af699159c3467dbb6e15b2538553bc2 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Fri, 25 Jul 2025 05:00:21 +0000 Subject: [PATCH 2712/3180] Add RUSTFLAGS again --- recipes/dev/rust/recipe.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/dev/rust/recipe.toml b/recipes/dev/rust/recipe.toml index 3bdc930f..1197c373 100644 --- a/recipes/dev/rust/recipe.toml +++ b/recipes/dev/rust/recipe.toml @@ -15,7 +15,10 @@ script = """ DYNAMIC_INIT HOST_STRIP=$STRIP # Linker flags for stage2 compiler (host -> target) -export LDFLAGS_x86_64_unknown_redox="${LDFLAGS}" +export LDFLAGS_x86_64_unknown_redox="${LDFLAGS}" # LLVM +export CARGO_TARGET_X86_64_UNKNOWN_REDOX_RUSTFLAGS="\ +-C link-arg=-L${COOKBOOK_SYSROOT}/lib \ +-C link-arg=-Wl,-rpath-link,${COOKBOOK_SYSROOT}/lib" # Don't poison the stage1 compiler (host -> host) unset AR AS CC CXX LD LDFLAGS NM OBJCOPY OBJDUMP RANLIB READELF RUSTFLAGS STRIP python3 "${COOKBOOK_SOURCE}/x.py" install \ From 2b0c27c02e0a9aff5bfd420b0803de252019ab1e Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Fri, 25 Jul 2025 05:02:57 +0000 Subject: [PATCH 2713/3180] Revert comments --- recipes/dev/rust/config.toml | 2 -- 1 file changed, 2 deletions(-) diff --git a/recipes/dev/rust/config.toml b/recipes/dev/rust/config.toml index b53de2d7..89604cb7 100644 --- a/recipes/dev/rust/config.toml +++ b/recipes/dev/rust/config.toml @@ -1,6 +1,4 @@ [llvm] -# TODO: LLVM is only compiled for stage1, -# it should be possible to enable this download-ci-llvm = false static-libstdcpp = false targets = "X86" From 6098ef179a14e60e22f9c43d789fe3677b035349 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Fri, 25 Jul 2025 07:07:31 +0000 Subject: [PATCH 2714/3180] Update args and fix rust auto deps --- recipes/dev/rust/recipe.toml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/recipes/dev/rust/recipe.toml b/recipes/dev/rust/recipe.toml index 1197c373..50f56366 100644 --- a/recipes/dev/rust/recipe.toml +++ b/recipes/dev/rust/recipe.toml @@ -17,16 +17,18 @@ HOST_STRIP=$STRIP # Linker flags for stage2 compiler (host -> target) export LDFLAGS_x86_64_unknown_redox="${LDFLAGS}" # LLVM export CARGO_TARGET_X86_64_UNKNOWN_REDOX_RUSTFLAGS="\ --C link-arg=-L${COOKBOOK_SYSROOT}/lib \ --C link-arg=-Wl,-rpath-link,${COOKBOOK_SYSROOT}/lib" +-Clink-args=-L${COOKBOOK_SYSROOT}/lib \ +-Clink-args=-Wl,-rpath-link,${COOKBOOK_SYSROOT}/lib \ +-Clink-args=-lz" # Don't poison the stage1 compiler (host -> host) unset AR AS CC CXX LD LDFLAGS NM OBJCOPY OBJDUMP RANLIB READELF RUSTFLAGS STRIP python3 "${COOKBOOK_SOURCE}/x.py" install \ --config "${COOKBOOK_RECIPE}/config.toml" \ --jobs $(nproc) -rsync -av --delete "${COOKBOOK_BUILD}"/install/* "${COOKBOOK_STAGE}/" -"${HOST_STRIP}" -v "${COOKBOOK_STAGE}/bin/rustc" +mkdir -p "${COOKBOOK_STAGE}"/usr +rsync -av --delete "${COOKBOOK_BUILD}"/install/* "${COOKBOOK_STAGE}"/usr/ +"${HOST_STRIP}" -v "${COOKBOOK_STAGE}/usr/bin/rustc" # TODO: rustdoc """ From b1a40a2b572400e89010674693e80142cb1fdd7b Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Fri, 25 Jul 2025 08:50:43 +0000 Subject: [PATCH 2715/3180] Strip is handled automatically --- recipes/dev/rust/recipe.toml | 2 -- 1 file changed, 2 deletions(-) diff --git a/recipes/dev/rust/recipe.toml b/recipes/dev/rust/recipe.toml index 50f56366..58b4658a 100644 --- a/recipes/dev/rust/recipe.toml +++ b/recipes/dev/rust/recipe.toml @@ -13,7 +13,6 @@ dependencies = [ ] script = """ DYNAMIC_INIT -HOST_STRIP=$STRIP # Linker flags for stage2 compiler (host -> target) export LDFLAGS_x86_64_unknown_redox="${LDFLAGS}" # LLVM export CARGO_TARGET_X86_64_UNKNOWN_REDOX_RUSTFLAGS="\ @@ -28,7 +27,6 @@ python3 "${COOKBOOK_SOURCE}/x.py" install \ mkdir -p "${COOKBOOK_STAGE}"/usr rsync -av --delete "${COOKBOOK_BUILD}"/install/* "${COOKBOOK_STAGE}"/usr/ -"${HOST_STRIP}" -v "${COOKBOOK_STAGE}/usr/bin/rustc" # TODO: rustdoc """ From cabb1ff5646e40acda6656ad6462feb65a5653d4 Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Fri, 25 Jul 2025 22:53:11 -0400 Subject: [PATCH 2716/3180] Dyn link Mesa, Mesa GLU, Tyrian, Quake --- recipes/games/opentyrian/recipe.toml | 6 ++++++ recipes/games/quakespasm/recipe.toml | 6 ++++++ recipes/libs/mesa-glu/recipe.toml | 11 ++++++----- recipes/libs/mesa/recipe.toml | 20 +++++++++++++++----- 4 files changed, 33 insertions(+), 10 deletions(-) diff --git a/recipes/games/opentyrian/recipe.toml b/recipes/games/opentyrian/recipe.toml index 55ecfa29..d20cecf3 100644 --- a/recipes/games/opentyrian/recipe.toml +++ b/recipes/games/opentyrian/recipe.toml @@ -22,6 +22,8 @@ dependencies = [ # "sdl2-net" ] script = """ +DYNAMIC_INIT + # Build system is only a standalone Makefile COOKBOOK_CONFIGURE="true" COOKBOOK_CONFIGURE_FLAGS="" @@ -36,6 +38,10 @@ export bindir="${prefix}/games" export icondir="/ui/icons/apps" export gamesdir="${prefix}/share/games" +if ! [[ -n "${COOKBOOK_PREFER_STATIC}" ]]; then + LDFLAGS+=" -lstdc++" +fi + # Prepare the sources and download Tyrian (freeware) rsync -av --delete "${COOKBOOK_SOURCE}/" "${COOKBOOK_RECIPE}/tyrian21.zip.sha" ./ mkdir -p "${ASSETSDIR}" diff --git a/recipes/games/quakespasm/recipe.toml b/recipes/games/quakespasm/recipe.toml index 519399e1..f101e897 100644 --- a/recipes/games/quakespasm/recipe.toml +++ b/recipes/games/quakespasm/recipe.toml @@ -21,6 +21,8 @@ dependencies = [ "zlib", ] script = """ +DYNAMIC_INIT + # Skip configuring because QuakeSpasm uses a custom build system COOKBOOK_CONFIGURE="true" COOKBOOK_CONFIGURE_FLAGS="" @@ -37,6 +39,10 @@ export USE_SDL2=1 export USE_CODEC_MP3=0 export DO_USERDIRS=1 +if ! [[ -n "${COOKBOOK_PREFER_STATIC}" ]]; then + LDFLAGS+=" -lstdc++" +fi + # Source is in Quake/ and icons are in Misc/ rsync -av --delete "${COOKBOOK_SOURCE}/Quake/" "${COOKBOOK_SOURCE}/Misc" ./ diff --git a/recipes/libs/mesa-glu/recipe.toml b/recipes/libs/mesa-glu/recipe.toml index 9844b0c8..a79880b8 100644 --- a/recipes/libs/mesa-glu/recipe.toml +++ b/recipes/libs/mesa-glu/recipe.toml @@ -1,11 +1,12 @@ [source] -tar = "https://archive.mesa3d.org/glu/glu-9.0.1.tar.xz" -blake3 = "461543526cd681bc8fa91a1ece9519188c64ce7ad130a71213bdd0867e0884c9" +tar = "https://archive.mesa3d.org/glu/glu-9.0.3.tar.xz" +blake3 = "beed1665ed983540e7502289ec50c7e66d840820af3e9ef21c9c4a7e9686ab9f" [build] -dependencies = ["mesa"] +dependencies = ["mesa", "zlib"] template = "custom" script = """ -COOKBOOK_CONFIGURE_FLAGS+=(--enable-osmesa) -cookbook_configure +DYNAMIC_INIT + +cookbook_meson -Dgl_provider=osmesa """ diff --git a/recipes/libs/mesa/recipe.toml b/recipes/libs/mesa/recipe.toml index aa7b394c..d473cc8c 100644 --- a/recipes/libs/mesa/recipe.toml +++ b/recipes/libs/mesa/recipe.toml @@ -11,19 +11,29 @@ dependencies = [ "zlib", ] script = """ -export CFLAGS="-I${COOKBOOK_SYSROOT}/include -DHAVE_PTHREAD=1" -export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include -DHAVE_PTHREAD=1" -export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib --static" +DYNAMIC_INIT + +export CFLAGS+="-I${COOKBOOK_SYSROOT}/include -DHAVE_PTHREAD=1" +export CPPFLAGS+="-I${COOKBOOK_SYSROOT}/include -DHAVE_PTHREAD=1" export LLVM_CONFIG="${TARGET}-llvm-config" +if [[ -n "${COOKBOOK_PREFER_STATIC}" ]]; then + export LDFLAGS+=" --static" + export DEFAULTLIB="static" + export LLVMSHARED="disabled" +else + export DEFAULTLIB="shared" + export LLVMSHARED="enabled" +fi + COOKBOOK_MESON_FLAGS=( - -Ddefault_library=static + -Ddefault_library="${DEFAULTLIB}" -Dglx=disabled -Dllvm=enabled -Dosmesa=true -Dplatforms= -Dshader-cache=disabled - -Dshared-llvm=disabled + -Dshared-llvm="${LLVMSHARED}" -Dshared-glapi=disabled ) From 25141384b40d2502d9b02ac484163a0ba30a2cd5 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 27 Jul 2025 21:43:54 +0700 Subject: [PATCH 2717/3180] Support for metapackages --- src/bin/cook.rs | 97 ++++++++++++++++++++++++++--------------- src/bin/repo_builder.rs | 6 ++- src/recipe.rs | 45 ++++++++++++++++++- 3 files changed, 109 insertions(+), 39 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 6a2364de..1f18fdfc 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1029,6 +1029,7 @@ done } BuildKind::Configure => "cookbook_configure".to_owned(), BuildKind::Custom { script } => script.clone(), + BuildKind::None => "".to_owned(), }; let command = { @@ -1075,16 +1076,12 @@ done } fn package( - _recipe_dir: &Path, stage_dir: &Path, target_dir: &Path, name: &PackageName, recipe: &Recipe, auto_deps: &BTreeSet, ) -> Result { - //TODO: metadata like dependencies, name, and version - let package = &recipe.package; - let secret_path = "build/id_ed25519.toml"; let public_path = "build/id_ed25519.pub.toml"; if !Path::new(secret_path).is_file() || !Path::new(public_path).is_file() { @@ -1122,33 +1119,65 @@ fn package( ) .map_err(|err| format!("failed to create pkgar archive: {:?}", err))?; - let mut depends = package.dependencies.clone(); - for dep in auto_deps.iter() { - if !depends.contains(dep) { - depends.push(dep.clone()); - } - } - let stage_toml = toml::to_string(&Package { - name: name.clone(), - version: "TODO".into(), - target: env::var("TARGET") - .map_err(|err| format!("failed to read TARGET: {:?}", err))?, - depends, - }) - .map_err(|err| format!("failed to serialize stage.toml: {:?}", err))?; - fs::write(target_dir.join("stage.toml"), stage_toml) - .map_err(|err| format!("failed to write stage.toml: {:?}", err))?; + package_toml(target_dir, name, recipe, auto_deps)?; } Ok(package_file) } +fn package_toml( + target_dir: &Path, + name: &PackageName, + recipe: &Recipe, + auto_deps: &BTreeSet, +) -> Result<(), String> { + let mut depends = recipe.package.dependencies.clone(); + for dep in auto_deps.iter() { + if !depends.contains(dep) { + depends.push(dep.clone()); + } + } + let stage_toml = toml::to_string(&Package { + name: name.clone(), + version: "TODO".into(), + target: env::var("TARGET").map_err(|err| format!("failed to read TARGET: {:?}", err))?, + depends, + }) + .map_err(|err| format!("failed to serialize stage.toml: {:?}", err))?; + fs::write(target_dir.join("stage.toml"), stage_toml) + .map_err(|err| format!("failed to write stage.toml: {:?}", err))?; + + return Ok(()); +} + +fn cook_meta( + recipe_dir: &Path, + name: &PackageName, + recipe: &Recipe, + fetch_only: bool, +) -> Result<(), String> { + if fetch_only { + return Ok(()); + } + + let target_dir = create_target_dir(recipe_dir)?; + let empty_deps = BTreeSet::new(); + let _package_file = package_toml(&target_dir, name, recipe, &empty_deps) + .map_err(|err| format!("failed to package: {}", err))?; + + Ok(()) +} + fn cook( recipe_dir: &Path, name: &PackageName, recipe: &Recipe, fetch_only: bool, ) -> Result<(), String> { + if recipe.build.kind == BuildKind::None { + return cook_meta(recipe_dir, name, recipe, fetch_only); + } + let is_offline = env::var("COOKBOOK_OFFLINE").unwrap_or("".to_string()) == "1"; let source_dir = match is_offline { true => fetch_offline(recipe_dir, &recipe.source), @@ -1160,6 +1189,18 @@ fn cook( return Ok(()); } + let target_dir = create_target_dir(recipe_dir)?; + + let (stage_dir, auto_deps) = build(recipe_dir, &source_dir, &target_dir, name, recipe) + .map_err(|err| format!("failed to build: {}", err))?; + + let _package_file = package(&stage_dir, &target_dir, name, recipe, &auto_deps) + .map_err(|err| format!("failed to package: {}", err))?; + + Ok(()) +} + +fn create_target_dir(recipe_dir: &Path) -> Result { let target_parent_dir = recipe_dir.join("target"); if !target_parent_dir.is_dir() { create_dir(&target_parent_dir)?; @@ -1168,21 +1209,7 @@ fn cook( if !target_dir.is_dir() { create_dir(&target_dir)?; } - - let (stage_dir, auto_deps) = build(recipe_dir, &source_dir, &target_dir, name, recipe) - .map_err(|err| format!("failed to build: {}", err))?; - - let _package_file = package( - recipe_dir, - &stage_dir, - &target_dir, - name, - recipe, - &auto_deps, - ) - .map_err(|err| format!("failed to package: {}", err))?; - - Ok(()) + Ok(target_dir) } fn main() { diff --git a/src/bin/repo_builder.rs b/src/bin/repo_builder.rs index db66483b..6a7a8a35 100644 --- a/src/bin/repo_builder.rs +++ b/src/bin/repo_builder.rs @@ -46,9 +46,11 @@ fn main() -> Result<(), Box> { let toml_src = stage_dir.with_extension("toml"); let toml_dst = repo_path.join(format!("{}.toml", recipe)); - if is_newer(&pkgar_src, &pkgar_dst) { + if is_newer(&toml_src, &toml_dst) { eprintln!("\x1b[01;38;5;155mrepo - publishing {}\x1b[0m", recipe); - fs::copy(&pkgar_src, &pkgar_dst)?; + if fs::exists(&pkgar_src)? { + fs::copy(&pkgar_src, &pkgar_dst)?; + } fs::copy(&toml_src, &toml_dst)?; } diff --git a/src/recipe.rs b/src/recipe.rs index 85240dce..4341551d 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -63,6 +63,9 @@ pub enum SourceRecipe { #[derive(Debug, Deserialize, PartialEq, Serialize)] #[serde(tag = "template")] pub enum BuildKind { + /// Will not build (for meta packages) + #[serde(rename = "none")] + None, /// Will build and install using cargo #[serde(rename = "cargo")] Cargo { @@ -80,9 +83,15 @@ pub enum BuildKind { Custom { script: String }, } -#[derive(Debug, Deserialize, PartialEq, Serialize)] +impl Default for BuildKind { + fn default() -> Self { + BuildKind::None + } +} + +#[derive(Debug, Default, Deserialize, PartialEq, Serialize)] pub struct BuildRecipe { - #[serde(flatten)] + #[serde(flatten, default)] pub kind: BuildKind, #[serde(default)] pub dependencies: Vec, @@ -100,6 +109,7 @@ pub struct Recipe { /// Specifies how to download the source for this recipe pub source: Option, /// Specifies how to build this recipe + #[serde(default)] pub build: BuildRecipe, /// Specifies how to package this recipe #[serde(default)] @@ -207,6 +217,8 @@ impl CookRecipe { #[cfg(test)] mod tests { + use pkg::PackageName; + #[test] fn git_cargo_recipe() { use crate::recipe::{BuildKind, BuildRecipe, PackageRecipe, Recipe, SourceRecipe}; @@ -291,4 +303,33 @@ mod tests { } ); } + + #[test] + fn meta_recipe() { + use crate::recipe::{BuildKind, BuildRecipe, PackageRecipe, Recipe}; + + let recipe: Recipe = toml::from_str( + r#" + [package] + dependencies = [ + "gcc13", + ] + "#, + ) + .unwrap(); + + assert_eq!( + recipe, + Recipe { + source: None, + build: BuildRecipe { + kind: BuildKind::None, + dependencies: Vec::new(), + }, + package: PackageRecipe { + dependencies: vec![PackageName::new("gcc13").unwrap()], + }, + } + ); + } } From 132199cd54ed16b1e744b71f030bbdc9e66f7c1b Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 27 Jul 2025 21:50:37 +0700 Subject: [PATCH 2718/3180] Apply version meta --- src/bin/cook.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 1f18fdfc..4e937957 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1139,7 +1139,7 @@ fn package_toml( } let stage_toml = toml::to_string(&Package { name: name.clone(), - version: "TODO".into(), + version: package_version(recipe), target: env::var("TARGET").map_err(|err| format!("failed to read TARGET: {:?}", err))?, depends, }) @@ -1150,6 +1150,14 @@ fn package_toml( return Ok(()); } +fn package_version(recipe: &Recipe) -> Option { + if recipe.build.kind == BuildKind::None { + None + } else { + Some("TODO".into()) + } +} + fn cook_meta( recipe_dir: &Path, name: &PackageName, From 5de3e8327af5dadff2c35c541fd7dfe83b61cf1f Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 27 Jul 2025 22:09:12 +0700 Subject: [PATCH 2719/3180] Fix build --- src/bin/cook.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 4e937957..0bd8354b 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1150,11 +1150,11 @@ fn package_toml( return Ok(()); } -fn package_version(recipe: &Recipe) -> Option { +fn package_version(recipe: &Recipe) -> String { if recipe.build.kind == BuildKind::None { - None + "" } else { - Some("TODO".into()) + "TODO" } } From 519a9911d9bd815e2ba231b97e385010f36fda59 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 27 Jul 2025 22:13:30 +0700 Subject: [PATCH 2720/3180] Fix build --- src/bin/cook.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 0bd8354b..4002f712 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1152,9 +1152,9 @@ fn package_toml( fn package_version(recipe: &Recipe) -> String { if recipe.build.kind == BuildKind::None { - "" + "".into() } else { - "TODO" + "TODO".into() } } From b6faaf923ca9beaa1f57bd19f60523ef918f8462 Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Mon, 28 Jul 2025 00:22:36 -0400 Subject: [PATCH 2721/3180] Fix dynamically linked Neverball --- recipes/games/neverball/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/games/neverball/recipe.toml b/recipes/games/neverball/recipe.toml index 718156a1..c621dcff 100644 --- a/recipes/games/neverball/recipe.toml +++ b/recipes/games/neverball/recipe.toml @@ -24,12 +24,12 @@ DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ env -i \ - LDFLAGS="-static -ljpeg -lpng16 -lz" \ + LDFLAGS="-ljpeg -lpng16 -lz -lstdc++" \ PATH="/usr/bin:/bin" \ PKG_CONFIG="pkg-config" \ "${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" ENABLE_FS=stdio mapc sols -export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib -z noexecstack" +export LDFLAGS+="-L${COOKBOOK_SYSROOT}/lib -z noexecstack" "${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" ENABLE_FS=stdio ENABLE_NLS=0 clean-src "${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" ENABLE_FS=stdio ENABLE_NLS=0 neverball neverputt From b2168850de82955950c8caf3b68fa115ebb25ce3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 30 Jul 2025 18:33:38 -0300 Subject: [PATCH 2722/3180] Add recipe groups --- recipes/groups/dev-essential/recipe.toml | 18 ++++++++++++++++++ recipes/groups/redox-tests/recipe.toml | 6 ++++++ 2 files changed, 24 insertions(+) create mode 100644 recipes/groups/dev-essential/recipe.toml create mode 100644 recipes/groups/redox-tests/recipe.toml diff --git a/recipes/groups/dev-essential/recipe.toml b/recipes/groups/dev-essential/recipe.toml new file mode 100644 index 00000000..aff97db8 --- /dev/null +++ b/recipes/groups/dev-essential/recipe.toml @@ -0,0 +1,18 @@ +[package] +dependencies = [ + "autoconf", + "automake", + "cargo", + "gcc13", + "gnu-binutils", + "gnu-make", + "libffi", + "rustpython", + "lua54", + "nasm", + "patch", + "pkg-config", + "rust", + "sed", + "strace", +] diff --git a/recipes/groups/redox-tests/recipe.toml b/recipes/groups/redox-tests/recipe.toml new file mode 100644 index 00000000..eb8ef05d --- /dev/null +++ b/recipes/groups/redox-tests/recipe.toml @@ -0,0 +1,6 @@ +[package] +dependencies = [ + "acid", + "resist", + "relibc-tests", +] From 37247080fab2d3c1db857f2b83b81a1963db38d4 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 31 Jul 2025 02:03:13 -0300 Subject: [PATCH 2723/3180] Add recipes --- recipes/wip/dev/git-tools/git-statuses/recipe.toml | 5 +++++ recipes/wip/files/hf/recipe.toml | 5 +++++ recipes/wip/net/chat/bitchat-tui/recipe.toml | 5 +++++ recipes/wip/terminal/ngrv/recipe.toml | 5 +++++ 4 files changed, 20 insertions(+) create mode 100644 recipes/wip/dev/git-tools/git-statuses/recipe.toml create mode 100644 recipes/wip/files/hf/recipe.toml create mode 100644 recipes/wip/net/chat/bitchat-tui/recipe.toml create mode 100644 recipes/wip/terminal/ngrv/recipe.toml diff --git a/recipes/wip/dev/git-tools/git-statuses/recipe.toml b/recipes/wip/dev/git-tools/git-statuses/recipe.toml new file mode 100644 index 00000000..778c3fcc --- /dev/null +++ b/recipes/wip/dev/git-tools/git-statuses/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/bircni/git-statuses" +[build] +template = "cargo" diff --git a/recipes/wip/files/hf/recipe.toml b/recipes/wip/files/hf/recipe.toml new file mode 100644 index 00000000..6943199a --- /dev/null +++ b/recipes/wip/files/hf/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/sorairolake/hf" +[build] +template = "cargo" diff --git a/recipes/wip/net/chat/bitchat-tui/recipe.toml b/recipes/wip/net/chat/bitchat-tui/recipe.toml new file mode 100644 index 00000000..01c5de94 --- /dev/null +++ b/recipes/wip/net/chat/bitchat-tui/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/vaibhav-mattoo/bitchat-tui" +[build] +template = "cargo" diff --git a/recipes/wip/terminal/ngrv/recipe.toml b/recipes/wip/terminal/ngrv/recipe.toml new file mode 100644 index 00000000..f196674f --- /dev/null +++ b/recipes/wip/terminal/ngrv/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/sorairolake/ngrv" +[build] +template = "cargo" From f8f0a4361a29dd7d67925c755d14777fe9e87ce8 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 31 Jul 2025 04:08:29 -0300 Subject: [PATCH 2724/3180] Update and enable dynamic linking in some recipes --- .../nintendo/dolphin-emu/recipe.toml | 6 +++-- .../game-console/nintendo/lime3ds/recipe.toml | 4 +++- .../game-console/ps1/duckstation/recipe.toml | 4 +++- .../game-console/ps2/pcsx2/recipe.toml | 6 +++-- .../game-console/ps2/play/recipe.toml | 4 +++- .../game-console/ps3/rpcs3/recipe.toml | 23 ++++++++++++------- .../game-console/ps4/obliteration/recipe.toml | 4 +++- .../game-console/ps4/shadPS4/recipe.toml | 4 +++- .../game-console/psp/ppsspp/recipe.toml | 6 +++-- .../game-console/psvita/vita3k/recipe.toml | 5 ++-- .../xbox360/xenia-canary/recipe.toml | 2 +- recipes/wip/emulators/pc/darling/recipe.toml | 4 +++- .../emulators/windows/hangover/recipe.toml | 3 ++- .../emulators/windows/wine-stable/recipe.toml | 3 ++- 14 files changed, 53 insertions(+), 25 deletions(-) diff --git a/recipes/wip/emulators/game-console/nintendo/dolphin-emu/recipe.toml b/recipes/wip/emulators/game-console/nintendo/dolphin-emu/recipe.toml index 2700cf71..d99ca004 100644 --- a/recipes/wip/emulators/game-console/nintendo/dolphin-emu/recipe.toml +++ b/recipes/wip/emulators/game-console/nintendo/dolphin-emu/recipe.toml @@ -13,17 +13,19 @@ dependencies = [ "cairo", "qt6-base", "qt6-svg", - "mesa", + "mesa-x11", "curl", "libvulkan", "openal", ] script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_CXX_COMPILER="${TARGET}-g++" + -DCMAKE_C_COMPILER="${TARGET}-gcc" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic diff --git a/recipes/wip/emulators/game-console/nintendo/lime3ds/recipe.toml b/recipes/wip/emulators/game-console/nintendo/lime3ds/recipe.toml index 773a72b3..a73772c3 100644 --- a/recipes/wip/emulators/game-console/nintendo/lime3ds/recipe.toml +++ b/recipes/wip/emulators/game-console/nintendo/lime3ds/recipe.toml @@ -14,11 +14,13 @@ dependencies = [ "pipewire", ] script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_CXX_COMPILER="${TARGET}-g++" + -DCMAKE_C_COMPILER="${TARGET}-gcc" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic diff --git a/recipes/wip/emulators/game-console/ps1/duckstation/recipe.toml b/recipes/wip/emulators/game-console/ps1/duckstation/recipe.toml index dd6603e6..238e89df 100644 --- a/recipes/wip/emulators/game-console/ps1/duckstation/recipe.toml +++ b/recipes/wip/emulators/game-console/ps1/duckstation/recipe.toml @@ -11,11 +11,13 @@ dependencies = [ "qt6-tools", ] script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_CXX_COMPILER="${TARGET}-g++" + -DCMAKE_C_COMPILER="${TARGET}-gcc" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic diff --git a/recipes/wip/emulators/game-console/ps2/pcsx2/recipe.toml b/recipes/wip/emulators/game-console/ps2/pcsx2/recipe.toml index c72c13f3..31166adb 100644 --- a/recipes/wip/emulators/game-console/ps2/pcsx2/recipe.toml +++ b/recipes/wip/emulators/game-console/ps2/pcsx2/recipe.toml @@ -12,7 +12,7 @@ dependencies = [ "libpng", "qt6-base", "qt6-svg", - "mesa", + "mesa-x11", "libaio", "harfbuzz", "libpcap", @@ -24,11 +24,13 @@ dependencies = [ "ffmpeg6", ] script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_CXX_COMPILER="${TARGET}-g++" + -DCMAKE_C_COMPILER="${TARGET}-gcc" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic diff --git a/recipes/wip/emulators/game-console/ps2/play/recipe.toml b/recipes/wip/emulators/game-console/ps2/play/recipe.toml index b8e47b7e..58de310a 100644 --- a/recipes/wip/emulators/game-console/ps2/play/recipe.toml +++ b/recipes/wip/emulators/game-console/ps2/play/recipe.toml @@ -13,11 +13,13 @@ dependencies = [ "sqlite3", ] script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_CXX_COMPILER="${TARGET}-g++" + -DCMAKE_C_COMPILER="${TARGET}-gcc" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic diff --git a/recipes/wip/emulators/game-console/ps3/rpcs3/recipe.toml b/recipes/wip/emulators/game-console/ps3/rpcs3/recipe.toml index e5b282ba..cf3994a9 100644 --- a/recipes/wip/emulators/game-console/ps3/rpcs3/recipe.toml +++ b/recipes/wip/emulators/game-console/ps3/rpcs3/recipe.toml @@ -1,38 +1,45 @@ -#TODO probably wrong script, see https://github.com/RPCS3/rpcs3/blob/master/BUILDING.md#linux-1 -#TODO make all dependencies work +#TODO finish script, see https://github.com/RPCS3/rpcs3/blob/master/BUILDING.md#linux-1 +#TODO missing dependencies # customization - https://wiki.rpcs3.net/index.php?title=Help:Building_RPCS3#CMake_Build_Options [source] git = "https://github.com/RPCS3/rpcs3" [build] template = "custom" dependencies = [ - "mesa", - "qt5-base", + "mesa-x11", + "qt6-base", + "qt6-multimedia", + "qt6-svg", "sdl2", "eudev", "glew", "openal", "zlib", "libpng", - "libevdev", + #"libevdev", "libedit", - "libvulkan", + #"libvulkan", "pulseaudio", + "ffmpeg6", ] script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_CXX_COMPILER="${TARGET}-g++" + -DCMAKE_C_COMPILER="${TARGET}-gcc" -DCMAKE_INSTALL_PREFIX="/" -DUSE_NATIVE_INSTRUCTIONS=OFF + -DWITH_LLVM=OFF -DUSE_ALSA=OFF -DUSE_PULSE=OFF + -DUSE_LIBEVDEV=OFF -DUSE_DISCORD_RPC=OFF -DBUILD_LLVM_SUBMODULE=OFF -DUSE_SYSTEM_FFMPEG=ON - -DUSE_SYSTEM_LIBPNG=ON + -DUSE_VULKAN=OFF "${COOKBOOK_SOURCE}" ) cookbook_configure diff --git a/recipes/wip/emulators/game-console/ps4/obliteration/recipe.toml b/recipes/wip/emulators/game-console/ps4/obliteration/recipe.toml index e8b69d70..78770451 100644 --- a/recipes/wip/emulators/game-console/ps4/obliteration/recipe.toml +++ b/recipes/wip/emulators/game-console/ps4/obliteration/recipe.toml @@ -9,11 +9,13 @@ dependencies = [ "qt6-base", ] script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_CXX_COMPILER="${TARGET}-g++" + -DCMAKE_C_COMPILER="${TARGET}-gcc" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic diff --git a/recipes/wip/emulators/game-console/ps4/shadPS4/recipe.toml b/recipes/wip/emulators/game-console/ps4/shadPS4/recipe.toml index 2b1c631d..ed53ad0c 100644 --- a/recipes/wip/emulators/game-console/ps4/shadPS4/recipe.toml +++ b/recipes/wip/emulators/game-console/ps4/shadPS4/recipe.toml @@ -19,11 +19,13 @@ dependencies = [ "libvulkan", ] script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_CXX_COMPILER="${TARGET}-g++" + -DCMAKE_C_COMPILER="${TARGET}-gcc" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic diff --git a/recipes/wip/emulators/game-console/psp/ppsspp/recipe.toml b/recipes/wip/emulators/game-console/psp/ppsspp/recipe.toml index 727ca584..8d1a4d79 100644 --- a/recipes/wip/emulators/game-console/psp/ppsspp/recipe.toml +++ b/recipes/wip/emulators/game-console/psp/ppsspp/recipe.toml @@ -1,4 +1,4 @@ -#TODO make glew work +#TODO not compiled or tested yet [source] git = "https://github.com/jackpot51/ppsspp" @@ -14,13 +14,15 @@ dependencies = [ "glew", ] script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True + -DCMAKE_CXX_COMPILER="${TARGET}-g++" + -DCMAKE_C_COMPILER="${TARGET}-gcc" -DCMAKE_C_FLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" -DCMAKE_CXX_FLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" - -DCMAKE_EXE_LINKER_FLAGS="-L${COOKBOOK_SYSROOT}/lib -static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic diff --git a/recipes/wip/emulators/game-console/psvita/vita3k/recipe.toml b/recipes/wip/emulators/game-console/psvita/vita3k/recipe.toml index 6a3ada92..efdc97f5 100644 --- a/recipes/wip/emulators/game-console/psvita/vita3k/recipe.toml +++ b/recipes/wip/emulators/game-console/psvita/vita3k/recipe.toml @@ -1,5 +1,4 @@ #TODO probalby wrong script, see https://github.com/Vita3K/Vita3K/blob/master/building.md#linux -#TODO make gtk3 work [source] git = "https://github.com/Vita3K/Vita3K" [build] @@ -10,11 +9,13 @@ dependencies = [ "openssl1", ] script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_CXX_COMPILER="${TARGET}-g++" + -DCMAKE_C_COMPILER="${TARGET}-gcc" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic diff --git a/recipes/wip/emulators/game-console/xbox360/xenia-canary/recipe.toml b/recipes/wip/emulators/game-console/xbox360/xenia-canary/recipe.toml index a4ef80b3..1cbd646d 100644 --- a/recipes/wip/emulators/game-console/xbox360/xenia-canary/recipe.toml +++ b/recipes/wip/emulators/game-console/xbox360/xenia-canary/recipe.toml @@ -7,7 +7,7 @@ template = "custom" dependencies = [ "gtk3", "sdl2", - "mesa", + "mesa-x11", "lz4", "libunwind", "libpthread-stubs", diff --git a/recipes/wip/emulators/pc/darling/recipe.toml b/recipes/wip/emulators/pc/darling/recipe.toml index b5107e2f..c6f74ba5 100644 --- a/recipes/wip/emulators/pc/darling/recipe.toml +++ b/recipes/wip/emulators/pc/darling/recipe.toml @@ -21,11 +21,13 @@ dependencies = [ "libxkbfile", ] script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_CXX_COMPILER="${TARGET}-g++" + -DCMAKE_C_COMPILER="${TARGET}-gcc" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic diff --git a/recipes/wip/emulators/windows/hangover/recipe.toml b/recipes/wip/emulators/windows/hangover/recipe.toml index d17af849..a9c02800 100644 --- a/recipes/wip/emulators/windows/hangover/recipe.toml +++ b/recipes/wip/emulators/windows/hangover/recipe.toml @@ -11,7 +11,7 @@ dependencies = [ "gnutls3", "gstreamer", "sdl2", - "mesa", + "mesa-x11", "libx11", "libxcomposite", "libxcursor", @@ -24,6 +24,7 @@ dependencies = [ "libxkbregistry", ] script = """ +DYNAMIC_INIT mkdir -p "${COOKBOOK_BUILD}"/wine/build cd "${COOKBOOK_BUILD}"/wine/build COOKBOOK_CONFIGURE_FLAGS+=( diff --git a/recipes/wip/emulators/windows/wine-stable/recipe.toml b/recipes/wip/emulators/windows/wine-stable/recipe.toml index 5be78d77..1c4b3f70 100644 --- a/recipes/wip/emulators/windows/wine-stable/recipe.toml +++ b/recipes/wip/emulators/windows/wine-stable/recipe.toml @@ -10,7 +10,7 @@ dependencies = [ "gnutls3", "gstreamer", "sdl2", - "mesa", + "mesa-x11", "libx11", "libxcomposite", "libxcursor", @@ -23,6 +23,7 @@ dependencies = [ "libxkbregistry", ] script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( --enable-win64 --disable-kerberos From dee6f586e4668cfff211dd65e5caa2167ec3b8ef Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 31 Jul 2025 04:47:45 -0300 Subject: [PATCH 2725/3180] Update and enable dynamic linking in some recipes --- recipes/wip/games/fps/chocolate-doom/recipe.toml | 6 +++++- recipes/wip/games/fps/crispy-doom/recipe.toml | 6 +++++- recipes/wip/games/fps/et-legacy/recipe.toml | 4 +++- recipes/wip/games/fps/gzdoom/recipe.toml | 4 +++- recipes/wip/games/fps/openspades-free/recipe.toml | 4 +++- recipes/wip/games/fps/vkquake2/recipe.toml | 2 +- recipes/wip/games/fps/zerospades-free/recipe.toml | 4 +++- recipes/wip/games/open-world/minetest/recipe.toml | 4 +++- recipes/wip/graphics/editors/blender-lts/recipe.toml | 6 ++++-- recipes/wip/graphics/editors/blender/recipe.toml | 6 ++++-- recipes/wip/image/editors/gimp/recipe.toml | 11 ++++++++--- recipes/wip/image/editors/inkscape/recipe.toml | 4 +++- recipes/wip/image/editors/krita/recipe.toml | 4 +++- recipes/wip/web/chromium/recipe.toml | 3 +++ recipes/wip/web/firefox-esr/recipe.toml | 1 + 15 files changed, 52 insertions(+), 17 deletions(-) diff --git a/recipes/wip/games/fps/chocolate-doom/recipe.toml b/recipes/wip/games/fps/chocolate-doom/recipe.toml index 3dd25cc5..6821d4c4 100644 --- a/recipes/wip/games/fps/chocolate-doom/recipe.toml +++ b/recipes/wip/games/fps/chocolate-doom/recipe.toml @@ -2,9 +2,13 @@ [source] tar = "https://www.chocolate-doom.org/downloads/3.0.1/chocolate-doom-3.0.1.tar.gz" [build] -template = "configure" +template = "custom" dependencies = [ "sdl2", "sdl2-mixer", "sdl2-net", ] +script = """ +DYNAMIC_INIT +cookbook_configure +""" diff --git a/recipes/wip/games/fps/crispy-doom/recipe.toml b/recipes/wip/games/fps/crispy-doom/recipe.toml index dac4ac51..354bb260 100644 --- a/recipes/wip/games/fps/crispy-doom/recipe.toml +++ b/recipes/wip/games/fps/crispy-doom/recipe.toml @@ -3,9 +3,13 @@ git = "https://github.com/fabiangreffrath/crispy-doom" rev = "593f5b97023ed39b7640073160c06895bbfc3d26" [build] -template = "configure" +template = "custom" dependencies = [ "sdl2", "sdl2-mixer", "sdl2-net", ] +script = """ +DYNAMIC_INIT +cookbook_configure +""" diff --git a/recipes/wip/games/fps/et-legacy/recipe.toml b/recipes/wip/games/fps/et-legacy/recipe.toml index 8b2bd132..80089128 100644 --- a/recipes/wip/games/fps/et-legacy/recipe.toml +++ b/recipes/wip/games/fps/et-legacy/recipe.toml @@ -10,11 +10,13 @@ dependencies = [ "mesa", ] script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_CXX_COMPILER="${TARGET}-g++" + -DCMAKE_C_COMPILER="${TARGET}-gcc" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic diff --git a/recipes/wip/games/fps/gzdoom/recipe.toml b/recipes/wip/games/fps/gzdoom/recipe.toml index b7660e32..bca60685 100644 --- a/recipes/wip/games/fps/gzdoom/recipe.toml +++ b/recipes/wip/games/fps/gzdoom/recipe.toml @@ -12,11 +12,13 @@ dependencies = [ "zmusic", ] script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_CXX_COMPILER="${TARGET}-g++" + -DCMAKE_C_COMPILER="${TARGET}-gcc" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic diff --git a/recipes/wip/games/fps/openspades-free/recipe.toml b/recipes/wip/games/fps/openspades-free/recipe.toml index 21606356..e87b0148 100644 --- a/recipes/wip/games/fps/openspades-free/recipe.toml +++ b/recipes/wip/games/fps/openspades-free/recipe.toml @@ -18,11 +18,13 @@ dependencies = [ "openal", ] script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_CXX_COMPILER="${TARGET}-g++" + -DCMAKE_C_COMPILER="${TARGET}-gcc" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic diff --git a/recipes/wip/games/fps/vkquake2/recipe.toml b/recipes/wip/games/fps/vkquake2/recipe.toml index 05bffe14..705d821f 100644 --- a/recipes/wip/games/fps/vkquake2/recipe.toml +++ b/recipes/wip/games/fps/vkquake2/recipe.toml @@ -6,5 +6,5 @@ rev = "bdd39b142fbadf581fd9d904968a83fb9b4a929a" [build] template = "custom" dependencies = [ - "mesa", + "mesa-x11", ] diff --git a/recipes/wip/games/fps/zerospades-free/recipe.toml b/recipes/wip/games/fps/zerospades-free/recipe.toml index d1ebbce8..5e3505b0 100644 --- a/recipes/wip/games/fps/zerospades-free/recipe.toml +++ b/recipes/wip/games/fps/zerospades-free/recipe.toml @@ -18,11 +18,13 @@ dependencies = [ "openal", ] script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_CXX_COMPILER="${TARGET}-g++" + -DCMAKE_C_COMPILER="${TARGET}-gcc" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic diff --git a/recipes/wip/games/open-world/minetest/recipe.toml b/recipes/wip/games/open-world/minetest/recipe.toml index 005b8009..1d4c658b 100644 --- a/recipes/wip/games/open-world/minetest/recipe.toml +++ b/recipes/wip/games/open-world/minetest/recipe.toml @@ -18,12 +18,14 @@ dependencies = [ "zstd", ] script = """ +DYNAMIC_INIT git clone --depth 1 https://github.com/minetest/irrlicht.git "${COOKBOOK_SOURCE}"/lib/irrlichtmt COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_CXX_COMPILER="${TARGET}-g++" + -DCMAKE_C_COMPILER="${TARGET}-gcc" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic diff --git a/recipes/wip/graphics/editors/blender-lts/recipe.toml b/recipes/wip/graphics/editors/blender-lts/recipe.toml index ded92edc..45fbd2e2 100644 --- a/recipes/wip/graphics/editors/blender-lts/recipe.toml +++ b/recipes/wip/graphics/editors/blender-lts/recipe.toml @@ -21,15 +21,17 @@ dependencies = [ "shaderc", "libxml2", "libharu", - "mesa", + "mesa-x11", "libxkbcommon", ] script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_CXX_COMPILER="${TARGET}-g++" + -DCMAKE_C_COMPILER="${TARGET}-gcc" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic diff --git a/recipes/wip/graphics/editors/blender/recipe.toml b/recipes/wip/graphics/editors/blender/recipe.toml index bb9e7d8a..b50d7d6d 100644 --- a/recipes/wip/graphics/editors/blender/recipe.toml +++ b/recipes/wip/graphics/editors/blender/recipe.toml @@ -21,15 +21,17 @@ dependencies = [ "shaderc", "libxml2", "libharu", - "mesa", + "mesa-x11", "libxkbcommon", ] script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_CXX_COMPILER="${TARGET}-g++" + -DCMAKE_C_COMPILER="${TARGET}-gcc" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic diff --git a/recipes/wip/image/editors/gimp/recipe.toml b/recipes/wip/image/editors/gimp/recipe.toml index 47746828..f3e18cbe 100644 --- a/recipes/wip/image/editors/gimp/recipe.toml +++ b/recipes/wip/image/editors/gimp/recipe.toml @@ -1,10 +1,11 @@ +# build instructions: https://developer.gimp.org/core/setup/build/3.0/INSTALL #TODO make dependencies work [source] -tar = "https://download.gimp.org/gimp/v2.10/gimp-2.10.36.tar.bz2" +tar = "https://download.gimp.org/gimp/v3.0/gimp-3.0.4.tar.xz" [build] -template = "configure" +template = "custom" dependencies = [ - "gtk2", + "gtk3", "gobject-introspection", "glib", "cairo", @@ -25,3 +26,7 @@ dependencies = [ "bzip2", "zlib", ] +script = """ +DYNAMIC_INIT +cookbook_configure +""" diff --git a/recipes/wip/image/editors/inkscape/recipe.toml b/recipes/wip/image/editors/inkscape/recipe.toml index 743d46e8..2f0a492c 100644 --- a/recipes/wip/image/editors/inkscape/recipe.toml +++ b/recipes/wip/image/editors/inkscape/recipe.toml @@ -43,11 +43,13 @@ dependencies = [ "liblapack", ] script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_CXX_COMPILER="${TARGET}-g++" + -DCMAKE_C_COMPILER="${TARGET}-gcc" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic diff --git a/recipes/wip/image/editors/krita/recipe.toml b/recipes/wip/image/editors/krita/recipe.toml index 5d74f339..5a1d8695 100644 --- a/recipes/wip/image/editors/krita/recipe.toml +++ b/recipes/wip/image/editors/krita/recipe.toml @@ -52,11 +52,13 @@ dependencies = [ "libxtl", ] script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_CXX_COMPILER="${TARGET}-g++" + -DCMAKE_C_COMPILER="${TARGET}-gcc" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic diff --git a/recipes/wip/web/chromium/recipe.toml b/recipes/wip/web/chromium/recipe.toml index 6ff67c33..7ded19fe 100644 --- a/recipes/wip/web/chromium/recipe.toml +++ b/recipes/wip/web/chromium/recipe.toml @@ -32,3 +32,6 @@ dependencies = [ "pango", "java21", ] +script = """ +DYNAMIC_INIT +""" diff --git a/recipes/wip/web/firefox-esr/recipe.toml b/recipes/wip/web/firefox-esr/recipe.toml index 52974104..09cdd84f 100644 --- a/recipes/wip/web/firefox-esr/recipe.toml +++ b/recipes/wip/web/firefox-esr/recipe.toml @@ -28,5 +28,6 @@ dependencies = [ "pipewire", ] script = """ +DYNAMIC_INIT export MOZCONFIG="${COOKBOOK_RECIPE}/mozconfig" """ From 6f3db187c22b85c643eef32a43e208114c2ef557 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 31 Jul 2025 04:49:14 -0300 Subject: [PATCH 2726/3180] Rename the minetest recipe --- recipes/wip/games/open-world/{minetest => luanti}/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/games/open-world/{minetest => luanti}/recipe.toml (100%) diff --git a/recipes/wip/games/open-world/minetest/recipe.toml b/recipes/wip/games/open-world/luanti/recipe.toml similarity index 100% rename from recipes/wip/games/open-world/minetest/recipe.toml rename to recipes/wip/games/open-world/luanti/recipe.toml From d336b7f47679e8469455a6aa8684bd209706b128 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 31 Jul 2025 05:20:15 -0300 Subject: [PATCH 2727/3180] Add recipes and update a TODO --- recipes/wip/a11y/orca/recipe.toml | 15 +++++++++++++++ recipes/wip/dev/game-engine/godot4/recipe.toml | 1 - recipes/wip/dev/game-engine/redot4/recipe.toml | 10 ++++++++++ recipes/wip/libs/a11y/at-spi2-core/recipe.toml | 10 ++++++++++ 4 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 recipes/wip/a11y/orca/recipe.toml create mode 100644 recipes/wip/dev/game-engine/redot4/recipe.toml create mode 100644 recipes/wip/libs/a11y/at-spi2-core/recipe.toml diff --git a/recipes/wip/a11y/orca/recipe.toml b/recipes/wip/a11y/orca/recipe.toml new file mode 100644 index 00000000..4048dc4a --- /dev/null +++ b/recipes/wip/a11y/orca/recipe.toml @@ -0,0 +1,15 @@ +#TODO not compiled or tested +# dependencies: https://gitlab.gnome.org/GNOME/orca/#dependencies +[source] +tar = "https://download.gnome.org/sources/orca/48/orca-48.6.tar.xz" +[build] +template = "custom" +dependencies = [ + "atk", + "at-spi2-core", + "gtk3", +] +script = """ +DYNAMIC_INIT +cookbook_meson +""" diff --git a/recipes/wip/dev/game-engine/godot4/recipe.toml b/recipes/wip/dev/game-engine/godot4/recipe.toml index b464adcd..911c684e 100644 --- a/recipes/wip/dev/game-engine/godot4/recipe.toml +++ b/recipes/wip/dev/game-engine/godot4/recipe.toml @@ -1,5 +1,4 @@ #TODO missing script for SCons, see https://docs.godotengine.org/en/stable/contributing/development/compiling/compiling_for_linuxbsd.html -#TODO port to orbital #TODO missing dependencies [source] tar = "https://github.com/godotengine/godot/releases/download/4.1.3-stable/godot-4.1.3-stable.tar.xz" diff --git a/recipes/wip/dev/game-engine/redot4/recipe.toml b/recipes/wip/dev/game-engine/redot4/recipe.toml new file mode 100644 index 00000000..b36c03a6 --- /dev/null +++ b/recipes/wip/dev/game-engine/redot4/recipe.toml @@ -0,0 +1,10 @@ +#TODO missing script for SCons, see https://docs.redotengine.org/en/stable/contributing/development/compiling/compiling_for_linuxbsd +#TODO missing dependencies +[source] +tar = "https://github.com/Redot-Engine/redot-engine/releases/download/redot-4.3.1-stable/Redot-4.3.1-stable.tar.xz" +[build] +template = "custom" +dependencies = [ + "mesa", + "mesa-glu", +] diff --git a/recipes/wip/libs/a11y/at-spi2-core/recipe.toml b/recipes/wip/libs/a11y/at-spi2-core/recipe.toml new file mode 100644 index 00000000..f9e0b9e6 --- /dev/null +++ b/recipes/wip/libs/a11y/at-spi2-core/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +# build instructions: https://gitlab.gnome.org/GNOME/at-spi2-core/-/blob/main/INSTALL?ref_type=heads +[source] +tar = "https://download.gnome.org/sources/at-spi2-core/2.57/at-spi2-core-2.57.0.tar.xz" +[build] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_meson +""" From ba17448011588ee4d6cc034e8294157ed8a78494 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 31 Jul 2025 20:38:32 -0300 Subject: [PATCH 2728/3180] Add the dev-redox meta-package --- recipes/groups/dev-redox/recipe.toml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 recipes/groups/dev-redox/recipe.toml diff --git a/recipes/groups/dev-redox/recipe.toml b/recipes/groups/dev-redox/recipe.toml new file mode 100644 index 00000000..e851ed3d --- /dev/null +++ b/recipes/groups/dev-redox/recipe.toml @@ -0,0 +1,22 @@ +[package] +dependencies = [ + "dev-essential", + "redox-tests", + "exampled", + "gdbserver", + "libgmp", + "libiconv", + "liborbital", + "libsodium", + "libxml2", + "llvm18", + "ncurses", + "nghttp2", + "openssl1", + "orbclient", + "pcre", + "ripgrep", + "terminfo", + "xz", + "zlib", +] From 1f2a3f99531393a9df701a6a76d065a4cde8f451 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Fri, 1 Aug 2025 06:05:48 +0000 Subject: [PATCH 2729/3180] Allow drivers to be compiled with debug profile --- recipes/core/drivers-initfs/recipe.toml | 6 +++--- recipes/core/drivers/recipe.toml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/recipes/core/drivers-initfs/recipe.toml b/recipes/core/drivers-initfs/recipe.toml index c02a4b63..39b06258 100644 --- a/recipes/core/drivers-initfs/recipe.toml +++ b/recipes/core/drivers-initfs/recipe.toml @@ -58,17 +58,17 @@ esac mkdir -pv "${COOKBOOK_STAGE}/bin" "${COOKBOOK_STAGE}/lib/drivers" export CARGO_PROFILE_RELEASE_OPT_LEVEL=s export CARGO_PROFILE_RELEASE_PANIC=abort -"${COOKBOOK_CARGO}" build --release \ +"${COOKBOOK_CARGO}" build ${build_flags} \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ $(for bin in "${BINS[@]}"; do echo "-p" "${bin}"; done) for bin in "${BINS[@]}" do case "${bin}" in pcid | pcid-spawner | fbbootlogd | fbcond | inputd | vesad | lived | ps2d | acpid | bcm2835-sdhcid | rtcd) - cp -v "target/${TARGET}/release/${bin}" "${COOKBOOK_STAGE}/bin" + cp -v "target/${TARGET}/${build_type}/${bin}" "${COOKBOOK_STAGE}/bin" ;; *) - cp -v "target/${TARGET}/release/${bin}" "${COOKBOOK_STAGE}/lib/drivers" + cp -v "target/${TARGET}/${build_type}/${bin}" "${COOKBOOK_STAGE}/lib/drivers" ;; esac done diff --git a/recipes/core/drivers/recipe.toml b/recipes/core/drivers/recipe.toml index 64e23de8..df8ffe61 100644 --- a/recipes/core/drivers/recipe.toml +++ b/recipes/core/drivers/recipe.toml @@ -37,15 +37,15 @@ esac mkdir -pv "${COOKBOOK_STAGE}/usr/bin" "${COOKBOOK_STAGE}/usr/lib/drivers" export CARGO_PROFILE_RELEASE_OPT_LEVEL=s export CARGO_PROFILE_RELEASE_PANIC=abort -"${COOKBOOK_CARGO}" build --release \ +"${COOKBOOK_CARGO}" build ${build_flags} \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ $(for bin in "${BINS[@]}"; do echo "-p" "${bin}"; done) for bin in "${BINS[@]}" do if [[ "${bin}" == "inputd" || "${bin}" == "pcid" || "${bin}" == "pcid-spawner" ]]; then - cp -v "target/${TARGET}/release/${bin}" "${COOKBOOK_STAGE}/usr/bin" + cp -v "target/${TARGET}/${build_type}/${bin}" "${COOKBOOK_STAGE}/usr/bin" else - cp -v "target/${TARGET}/release/${bin}" "${COOKBOOK_STAGE}/usr/lib/drivers" + cp -v "target/${TARGET}/${build_type}/${bin}" "${COOKBOOK_STAGE}/usr/lib/drivers" fi done From 67a5a1696080d3773d793282afcf039ef50cc593 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 1 Aug 2025 13:44:19 -0300 Subject: [PATCH 2730/3180] Add x11-minimal and x11-full meta-packages --- recipes/groups/x11-full/recipe.toml | 9 +++++++++ recipes/groups/x11-minimal/recipe.toml | 8 ++++++++ 2 files changed, 17 insertions(+) create mode 100644 recipes/groups/x11-full/recipe.toml create mode 100644 recipes/groups/x11-minimal/recipe.toml diff --git a/recipes/groups/x11-full/recipe.toml b/recipes/groups/x11-full/recipe.toml new file mode 100644 index 00000000..e58d3c01 --- /dev/null +++ b/recipes/groups/x11-full/recipe.toml @@ -0,0 +1,9 @@ +[package] +dependencies = [ + "x11-minimal", + "twm", + "xev", + "xeyes", + "xkbutils", + "xterm", +] diff --git a/recipes/groups/x11-minimal/recipe.toml b/recipes/groups/x11-minimal/recipe.toml new file mode 100644 index 00000000..2e441221 --- /dev/null +++ b/recipes/groups/x11-minimal/recipe.toml @@ -0,0 +1,8 @@ +[package] +dependencies = [ + "xinit", + "xkbcomp", + "xkeyboard-config", + "xserver-xorg", + "xserver-xorg-video-dummy", +] From d788d4b6ae115d0ff4aec65b42773163d18e82fd Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sat, 2 Aug 2025 05:31:16 +0000 Subject: [PATCH 2731/3180] Add option to include package deps --- repo.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/repo.sh b/repo.sh index 1f665f1f..ef5b61b6 100755 --- a/repo.sh +++ b/repo.sh @@ -5,6 +5,7 @@ shopt -s nullglob source config.sh APPSTREAM="0" +COOK_OPT="" recipes="" for arg in "${@:1}" do @@ -14,6 +15,9 @@ do elif [ "$arg" == "--debug" ] then DEBUG=--debug + elif [ "$arg" == "--with-package-deps" ] + then + COOK_OPT=--with-package-deps elif [ "$arg" == "--nonstop" ] then set +e @@ -46,7 +50,7 @@ do if [ -e "${COOKBOOK_RECIPE}/recipe.toml" ] then toml_recipes+=" $recipe" - target/release/cook "$recipe" + target/release/cook $COOK_OPT "$recipe" continue fi @@ -98,7 +102,7 @@ declare -A APPSTREAM_SOURCES # Currently, we only support runtime dependencies for recipes in the new TOML # format. Runtime dependencies include both `[package.dependencies]` and -# [`package.shared_deps`]. +# dynamically linked packages discovered by auto_deps. # # The following adds the package dependencies of the recipes to the repo as # well. From 0d2efc776867b7a33e2ea40a1c8fb7dd48d7f994 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sat, 2 Aug 2025 18:59:06 +0000 Subject: [PATCH 2732/3180] Update Go recipe part II --- recipes/wip/dev/lang/go/01_redox.patch | 357 +++++++++++++++++++++---- recipes/wip/dev/lang/go/recipe.toml | 32 ++- 2 files changed, 325 insertions(+), 64 deletions(-) diff --git a/recipes/wip/dev/lang/go/01_redox.patch b/recipes/wip/dev/lang/go/01_redox.patch index 66895a0f..aaa22459 100644 --- a/recipes/wip/dev/lang/go/01_redox.patch +++ b/recipes/wip/dev/lang/go/01_redox.patch @@ -1,6 +1,6 @@ diff -ruwN source/src/cmd/dist/build.go source-new/src/cmd/dist/build.go --- source/src/cmd/dist/build.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/dist/build.go 2025-07-20 22:44:22.522527140 +0700 ++++ source-new/src/cmd/dist/build.go 2025-07-20 23:50:47.312425484 +0700 @@ -94,6 +94,7 @@ "wasip1", "linux", @@ -66,7 +66,7 @@ diff -ruwN source/src/cmd/dist/build.go source-new/src/cmd/dist/build.go "js/wasm": false, diff -ruwN source/src/cmd/go/go_test.go source-new/src/cmd/go/go_test.go --- source/src/cmd/go/go_test.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/go/go_test.go 2025-07-20 23:14:12.602481300 +0700 ++++ source-new/src/cmd/go/go_test.go 2025-07-20 23:50:47.312425484 +0700 @@ -2081,7 +2081,7 @@ tg.run(args...) @@ -78,7 +78,7 @@ diff -ruwN source/src/cmd/go/go_test.go source-new/src/cmd/go/go_test.go t.Fatal(err) diff -ruwN source/src/cmd/go/internal/modindex/build.go source-new/src/cmd/go/internal/modindex/build.go --- source/src/cmd/go/internal/modindex/build.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/go/internal/modindex/build.go 2025-07-20 23:27:26.452458389 +0700 ++++ source-new/src/cmd/go/internal/modindex/build.go 2025-07-20 23:50:47.312425484 +0700 @@ -873,6 +873,9 @@ if ctxt.GOOS == "android" && name == "linux" { return true @@ -91,7 +91,7 @@ diff -ruwN source/src/cmd/go/internal/modindex/build.go source-new/src/cmd/go/in } diff -ruwN source/src/cmd/go/internal/work/exec.go source-new/src/cmd/go/internal/work/exec.go --- source/src/cmd/go/internal/work/exec.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/go/internal/work/exec.go 2025-07-20 23:28:05.892457627 +0700 ++++ source-new/src/cmd/go/internal/work/exec.go 2025-07-20 23:50:47.312425484 +0700 @@ -3056,7 +3056,7 @@ dynobj := objdir + "_cgo_.o" @@ -103,7 +103,7 @@ diff -ruwN source/src/cmd/go/internal/work/exec.go source-new/src/cmd/go/interna // this seems to be outdated, but we don't want to break existing builds depending on this (Issue 45940) diff -ruwN source/src/cmd/go/internal/work/init.go source-new/src/cmd/go/internal/work/init.go --- source/src/cmd/go/internal/work/init.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/go/internal/work/init.go 2025-07-20 23:14:04.102481503 +0700 ++++ source-new/src/cmd/go/internal/work/init.go 2025-07-20 23:50:47.312425484 +0700 @@ -220,7 +220,7 @@ codegenArg = "-fPIC" } else { @@ -113,9 +113,38 @@ diff -ruwN source/src/cmd/go/internal/work/init.go source-new/src/cmd/go/interna codegenArg = "-shared" case "windows": // Do not add usual .exe suffix to the .dll file. +diff -ruwN source/src/cmd/go/testdata/script/cgo_suspect_flag_force_external.txt source-new/src/cmd/go/testdata/script/cgo_suspect_flag_force_external.txt +--- source/src/cmd/go/testdata/script/cgo_suspect_flag_force_external.txt 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/cmd/go/testdata/script/cgo_suspect_flag_force_external.txt 2025-08-03 00:53:55.626580074 +0700 +@@ -39,7 +39,7 @@ + ! stderr preferlinkext + env CGO_CFLAGS=-flto + go build -x -n -o dummy.exe ./noUseOfCgo +-! stderr preferlinkext ++! stderr preferlinkextg + env CGO_CFLAGS= + + # Second build uses CGO, so we expect to see the token present in the +diff -ruwN source/src/cmd/internal/obj/x86/asm6.go source-new/src/cmd/internal/obj/x86/asm6.go +--- source/src/cmd/internal/obj/x86/asm6.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/cmd/internal/obj/x86/asm6.go 2025-08-03 01:50:35.376496054 +0700 +@@ -28,6 +28,13 @@ + // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + // THE SOFTWARE. + ++// ------------------- HELP NEEDED FOR REDOX ------------------- ++// We need to write the definition for obj files in Redox!!!!!!! ++// Yes, Redox is using ELF but that ELF is different with Linux ++// As of current implemention, it emits Linux binaries instead ++// Please continue your work in this file if you know how to do it ++// ------------------------------------------------------------- ++ + package x86 + + import ( diff -ruwN source/src/cmd/internal/objabi/head.go source-new/src/cmd/internal/objabi/head.go --- source/src/cmd/internal/objabi/head.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/internal/objabi/head.go 2025-07-20 23:13:51.872481802 +0700 ++++ source-new/src/cmd/internal/objabi/head.go 2025-07-20 23:50:47.312425484 +0700 @@ -63,7 +63,7 @@ *h = Hfreebsd case "js": @@ -125,9 +154,84 @@ diff -ruwN source/src/cmd/internal/objabi/head.go source-new/src/cmd/internal/ob *h = Hlinux case "netbsd": *h = Hnetbsd +diff -ruwN source/src/cmd/link/internal/amd64/obj.go source-new/src/cmd/link/internal/amd64/obj.go +--- source/src/cmd/link/internal/amd64/obj.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/cmd/link/internal/amd64/obj.go 2025-08-03 01:04:51.706561825 +0700 +@@ -64,6 +64,7 @@ + ELF: ld.ELFArch{ + Linuxdynld: "/lib64/ld-linux-x86-64.so.2", + LinuxdynldMusl: "/lib/ld-musl-x86_64.so.1", ++ Redoxdynld: "/usr/lib/ld64.so.1", + Freebsddynld: "/libexec/ld-elf.so.1", + Openbsddynld: "/usr/libexec/ld.so", + Netbsddynld: "/libexec/ld.elf_so", +diff -ruwN source/src/cmd/link/internal/arm64/obj.go source-new/src/cmd/link/internal/arm64/obj.go +--- source/src/cmd/link/internal/arm64/obj.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/cmd/link/internal/arm64/obj.go 2025-08-03 01:03:56.606564078 +0700 +@@ -61,6 +61,7 @@ + + ELF: ld.ELFArch{ + Androiddynld: "/system/bin/linker64", ++ Redoxdynld: "/usr/lib/ld64.so.1", + Linuxdynld: "/lib/ld-linux-aarch64.so.1", + LinuxdynldMusl: "/lib/ld-musl-aarch64.so.1", + +diff -ruwN source/src/cmd/link/internal/ld/elf.go source-new/src/cmd/link/internal/ld/elf.go +--- source/src/cmd/link/internal/ld/elf.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/cmd/link/internal/ld/elf.go 2025-08-03 01:13:08.346551565 +0700 +@@ -197,6 +197,7 @@ + type ELFArch struct { + // TODO: Document these fields. + ++ Redoxdynld string + Androiddynld string + Linuxdynld string + LinuxdynldMusl string +@@ -204,6 +205,7 @@ + Netbsddynld string + Openbsddynld string + Dragonflydynld string ++ Redoxflydynld string + Solarisdynld string + + Reloc1 func(*Link, *OutBuf, *loader.Loader, loader.Sym, loader.ExtReloc, int, int64) bool +@@ -1939,6 +1941,11 @@ + if interpreter == "" { + Exitf("ELF interpreter not set") + } ++ } else if buildcfg.GOOS == "redox" { ++ interpreter = thearch.ELF.Redoxdynld ++ if interpreter == "" { ++ Exitf("ELF interpreter not set") ++ } + } else { + interpreter = thearch.ELF.Linuxdynld + // If interpreter does not exist, try musl instead. +diff -ruwN source/src/cmd/link/internal/riscv64/obj.go source-new/src/cmd/link/internal/riscv64/obj.go +--- source/src/cmd/link/internal/riscv64/obj.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/cmd/link/internal/riscv64/obj.go 2025-08-03 01:05:35.886560535 +0700 +@@ -38,6 +38,7 @@ + Machoreloc1: machoreloc1, + + ELF: ld.ELFArch{ ++ Redoxdynld: "/usr/lib/ld64.so.1", + Linuxdynld: "/lib/ld.so.1", + + Freebsddynld: "/usr/libexec/ld-elf.so.1", +diff -ruwN source/src/cmd/link/internal/x86/obj.go source-new/src/cmd/link/internal/x86/obj.go +--- source/src/cmd/link/internal/x86/obj.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/cmd/link/internal/x86/obj.go 2025-08-03 01:05:11.816561638 +0700 +@@ -59,6 +59,7 @@ + PEreloc1: pereloc1, + + ELF: ld.ELFArch{ ++ Redoxdynld: "/usr/lib/ld.so.1", + Linuxdynld: "/lib/ld-linux.so.2", + LinuxdynldMusl: "/lib/ld-musl-i386.so.1", + Freebsddynld: "/usr/libexec/ld-elf.so.1", diff -ruwN source/src/cmd/vendor/golang.org/x/telemetry/internal/telemetry/dir.go source-new/src/cmd/vendor/golang.org/x/telemetry/internal/telemetry/dir.go --- source/src/cmd/vendor/golang.org/x/telemetry/internal/telemetry/dir.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/vendor/golang.org/x/telemetry/internal/telemetry/dir.go 2025-07-20 23:29:12.692455838 +0700 +`+++ source-new/src/cmd/vendor/golang.org/x/telemetry/internal/telemetry/dir.go 2025-07-20 23:50:47.312425484 +0700 @@ -155,6 +155,7 @@ runtime.GOOS == "openbsd" || // #60614 runtime.GOOS == "solaris" || // #60968 #60970 @@ -136,9 +240,33 @@ diff -ruwN source/src/cmd/vendor/golang.org/x/telemetry/internal/telemetry/dir.g runtime.GOOS == "illumos" || // #65544 // These platforms fundamentally can't be supported: runtime.GOOS == "js" || // #60971 +diff -ruwN source/src/crypto/internal/sysrand/internal/seccomp/seccomp_linux.go source-new/src/crypto/internal/sysrand/internal/seccomp/seccomp_linux.go +--- source/src/crypto/internal/sysrand/internal/seccomp/seccomp_linux.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/crypto/internal/sysrand/internal/seccomp/seccomp_linux.go 2025-08-02 17:13:31.518836103 +0700 +@@ -2,6 +2,8 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + ++//go:build !linux ++ + package seccomp + + /* +diff -ruwN source/src/crypto/internal/sysrand/internal/seccomp/seccomp_unsupported.go source-new/src/crypto/internal/sysrand/internal/seccomp/seccomp_unsupported.go +--- source/src/crypto/internal/sysrand/internal/seccomp/seccomp_unsupported.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/crypto/internal/sysrand/internal/seccomp/seccomp_unsupported.go 2025-08-02 17:13:37.268835776 +0700 +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-//go:build !linux || !cgo ++//go:build !linux || !cgo || redox + + package seccomp + diff -ruwN source/src/go/build/build.go source-new/src/go/build/build.go --- source/src/go/build/build.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/go/build/build.go 2025-07-20 22:44:22.522527140 +0700 ++++ source-new/src/go/build/build.go 2025-07-20 23:50:47.312425484 +0700 @@ -1971,6 +1971,9 @@ if ctxt.GOOS == "android" && name == "linux" { return true @@ -151,7 +279,7 @@ diff -ruwN source/src/go/build/build.go source-new/src/go/build/build.go } diff -ruwN source/src/internal/goos/gengoos.go source-new/src/internal/goos/gengoos.go --- source/src/internal/goos/gengoos.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/gengoos.go 2025-07-20 22:44:22.522527140 +0700 ++++ source-new/src/internal/goos/gengoos.go 2025-07-20 23:50:47.312425484 +0700 @@ -43,6 +43,7 @@ var tags []string if target == "linux" { @@ -162,7 +290,7 @@ diff -ruwN source/src/internal/goos/gengoos.go source-new/src/internal/goos/geng tags = append(tags, "!illumos") // must explicitly exclude illumos for solaris diff -ruwN source/src/internal/goos/zgoos_aix.go source-new/src/internal/goos/zgoos_aix.go --- source/src/internal/goos/zgoos_aix.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_aix.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_aix.go 2025-07-20 23:50:47.312425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -173,7 +301,7 @@ diff -ruwN source/src/internal/goos/zgoos_aix.go source-new/src/internal/goos/zg const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_android.go source-new/src/internal/goos/zgoos_android.go --- source/src/internal/goos/zgoos_android.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_android.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_android.go 2025-07-20 23:50:47.312425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -184,7 +312,7 @@ diff -ruwN source/src/internal/goos/zgoos_android.go source-new/src/internal/goo const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_darwin.go source-new/src/internal/goos/zgoos_darwin.go --- source/src/internal/goos/zgoos_darwin.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_darwin.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_darwin.go 2025-07-20 23:50:47.312425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -195,7 +323,7 @@ diff -ruwN source/src/internal/goos/zgoos_darwin.go source-new/src/internal/goos const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_dragonfly.go source-new/src/internal/goos/zgoos_dragonfly.go --- source/src/internal/goos/zgoos_dragonfly.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_dragonfly.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_dragonfly.go 2025-07-20 23:50:47.312425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -206,7 +334,7 @@ diff -ruwN source/src/internal/goos/zgoos_dragonfly.go source-new/src/internal/g const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_freebsd.go source-new/src/internal/goos/zgoos_freebsd.go --- source/src/internal/goos/zgoos_freebsd.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_freebsd.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_freebsd.go 2025-07-20 23:50:47.312425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -217,7 +345,7 @@ diff -ruwN source/src/internal/goos/zgoos_freebsd.go source-new/src/internal/goo const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_hurd.go source-new/src/internal/goos/zgoos_hurd.go --- source/src/internal/goos/zgoos_hurd.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_hurd.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_hurd.go 2025-07-20 23:50:47.312425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -228,7 +356,7 @@ diff -ruwN source/src/internal/goos/zgoos_hurd.go source-new/src/internal/goos/z const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_illumos.go source-new/src/internal/goos/zgoos_illumos.go --- source/src/internal/goos/zgoos_illumos.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_illumos.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_illumos.go 2025-07-20 23:50:47.312425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -239,7 +367,7 @@ diff -ruwN source/src/internal/goos/zgoos_illumos.go source-new/src/internal/goo const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_ios.go source-new/src/internal/goos/zgoos_ios.go --- source/src/internal/goos/zgoos_ios.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_ios.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_ios.go 2025-07-20 23:50:47.322425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -250,7 +378,7 @@ diff -ruwN source/src/internal/goos/zgoos_ios.go source-new/src/internal/goos/zg const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_js.go source-new/src/internal/goos/zgoos_js.go --- source/src/internal/goos/zgoos_js.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_js.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_js.go 2025-07-20 23:50:47.322425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -261,7 +389,7 @@ diff -ruwN source/src/internal/goos/zgoos_js.go source-new/src/internal/goos/zgo const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_linux.go source-new/src/internal/goos/zgoos_linux.go --- source/src/internal/goos/zgoos_linux.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_linux.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_linux.go 2025-07-20 23:50:47.322425484 +0700 @@ -1,6 +1,6 @@ // Code generated by gengoos.go using 'go generate'. DO NOT EDIT. @@ -280,7 +408,7 @@ diff -ruwN source/src/internal/goos/zgoos_linux.go source-new/src/internal/goos/ const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_netbsd.go source-new/src/internal/goos/zgoos_netbsd.go --- source/src/internal/goos/zgoos_netbsd.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_netbsd.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_netbsd.go 2025-07-20 23:50:47.322425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 1 const IsOpenbsd = 0 @@ -291,7 +419,7 @@ diff -ruwN source/src/internal/goos/zgoos_netbsd.go source-new/src/internal/goos const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_openbsd.go source-new/src/internal/goos/zgoos_openbsd.go --- source/src/internal/goos/zgoos_openbsd.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_openbsd.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_openbsd.go 2025-07-20 23:50:47.322425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 1 @@ -302,7 +430,7 @@ diff -ruwN source/src/internal/goos/zgoos_openbsd.go source-new/src/internal/goo const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_plan9.go source-new/src/internal/goos/zgoos_plan9.go --- source/src/internal/goos/zgoos_plan9.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_plan9.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_plan9.go 2025-07-20 23:50:47.322425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -313,7 +441,7 @@ diff -ruwN source/src/internal/goos/zgoos_plan9.go source-new/src/internal/goos/ const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_redox.go source-new/src/internal/goos/zgoos_redox.go --- source/src/internal/goos/zgoos_redox.go 1970-01-01 07:00:00.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_redox.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_redox.go 2025-07-20 23:50:47.322425484 +0700 @@ -0,0 +1,27 @@ +// Code generated by gengoos.go using 'go generate'. DO NOT EDIT. + @@ -344,7 +472,7 @@ diff -ruwN source/src/internal/goos/zgoos_redox.go source-new/src/internal/goos/ +const IsZos = 0 diff -ruwN source/src/internal/goos/zgoos_solaris.go source-new/src/internal/goos/zgoos_solaris.go --- source/src/internal/goos/zgoos_solaris.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_solaris.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_solaris.go 2025-07-20 23:50:47.322425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -355,7 +483,7 @@ diff -ruwN source/src/internal/goos/zgoos_solaris.go source-new/src/internal/goo const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_wasip1.go source-new/src/internal/goos/zgoos_wasip1.go --- source/src/internal/goos/zgoos_wasip1.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_wasip1.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_wasip1.go 2025-07-20 23:50:47.322425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -366,7 +494,7 @@ diff -ruwN source/src/internal/goos/zgoos_wasip1.go source-new/src/internal/goos const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_windows.go source-new/src/internal/goos/zgoos_windows.go --- source/src/internal/goos/zgoos_windows.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_windows.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_windows.go 2025-07-20 23:50:47.322425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -377,7 +505,7 @@ diff -ruwN source/src/internal/goos/zgoos_windows.go source-new/src/internal/goo const IsWindows = 1 diff -ruwN source/src/internal/goos/zgoos_zos.go source-new/src/internal/goos/zgoos_zos.go --- source/src/internal/goos/zgoos_zos.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_zos.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_zos.go 2025-07-20 23:50:47.322425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -388,8 +516,16 @@ diff -ruwN source/src/internal/goos/zgoos_zos.go source-new/src/internal/goos/zg const IsWindows = 0 diff -ruwN source/src/internal/platform/supported.go source-new/src/internal/platform/supported.go --- source/src/internal/platform/supported.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/platform/supported.go 2025-07-20 22:44:22.532527140 +0700 -@@ -209,7 +209,7 @@ ++++ source-new/src/internal/platform/supported.go 2025-08-02 18:27:27.688723910 +0700 +@@ -194,6 +194,7 @@ + "ios/amd64", "ios/arm64", + "aix/ppc64", + "openbsd/arm64", ++ "redox/386","redox/amd64","redox/arm64", + "windows/386", "windows/amd64", "windows/arm", "windows/arm64": + return true + } +@@ -209,7 +210,7 @@ case "plugin": switch platform { case "linux/amd64", "linux/arm", "linux/arm64", "linux/386", "linux/loong64", "linux/s390x", "linux/ppc64le", @@ -398,7 +534,15 @@ diff -ruwN source/src/internal/platform/supported.go source-new/src/internal/pla "darwin/amd64", "darwin/arm64", "freebsd/amd64": return true -@@ -237,7 +237,7 @@ +@@ -226,6 +227,7 @@ + case "android/arm64", + "darwin/amd64", "darwin/arm64", + "linux/amd64", "linux/arm64", "linux/ppc64le", ++ "redox/386","redox/amd64","redox/arm64", + "windows/386", "windows/amd64", "windows/arm", "windows/arm64": + return true + } +@@ -237,7 +239,7 @@ // so force the caller to pass that in to centralize that choice. func DefaultPIE(goos, goarch string, isRace bool) bool { switch goos { @@ -409,7 +553,7 @@ diff -ruwN source/src/internal/platform/supported.go source-new/src/internal/pla if isRace { diff -ruwN source/src/internal/platform/zosarch.go source-new/src/internal/platform/zosarch.go --- source/src/internal/platform/zosarch.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/platform/zosarch.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/platform/zosarch.go 2025-07-20 23:50:47.322425484 +0700 @@ -13,6 +13,9 @@ {"android", "amd64"}, {"android", "arm"}, @@ -432,7 +576,7 @@ diff -ruwN source/src/internal/platform/zosarch.go source-new/src/internal/platf {"dragonfly", "amd64"}: {CgoSupported: true}, diff -ruwN source/src/internal/poll/sendfile_unix.go source-new/src/internal/poll/sendfile_unix.go --- source/src/internal/poll/sendfile_unix.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/poll/sendfile_unix.go 2025-07-20 23:20:57.622471583 +0700 ++++ source-new/src/internal/poll/sendfile_unix.go 2025-07-20 23:50:47.322425484 +0700 @@ -28,7 +28,7 @@ // has not modified the source or destination, // and the caller should perform the copy using a fallback implementation. @@ -444,7 +588,7 @@ diff -ruwN source/src/internal/poll/sendfile_unix.go source-new/src/internal/pol // updates the position of the source after sending. diff -ruwN source/src/internal/syslist/syslist.go source-new/src/internal/syslist/syslist.go --- source/src/internal/syslist/syslist.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/syslist/syslist.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/syslist/syslist.go 2025-07-20 23:50:47.322425484 +0700 @@ -29,6 +29,7 @@ "netbsd": true, "openbsd": true, @@ -461,9 +605,88 @@ diff -ruwN source/src/internal/syslist/syslist.go source-new/src/internal/syslis "solaris": true, } +diff -ruwN source/src/net/cgo_stub.go source-new/src/net/cgo_stub.go +--- source/src/net/cgo_stub.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/net/cgo_stub.go 2025-08-02 18:20:37.688742244 +0700 +@@ -9,7 +9,7 @@ + // (Darwin always provides the cgo functions, in cgo_unix_syscall.go) + // - on wasip1, where cgo is never available + +-//go:build (netgo && unix) || (unix && !cgo && !darwin) || js || wasip1 ++//go:build (netgo && unix) || (unix && !cgo && !darwin) || js || wasip1 || redox + + package net + +diff -ruwN source/src/net/cgo_unix.go source-new/src/net/cgo_unix.go +--- source/src/net/cgo_unix.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/net/cgo_unix.go 2025-08-02 17:54:26.168771131 +0700 +@@ -7,7 +7,7 @@ + // Instead of C.foo it uses _C_foo, which is defined in either + // cgo_unix_cgo.go or cgo_unix_syscall.go + +-//go:build !netgo && ((cgo && unix) || darwin) ++//go:build !netgo && ((cgo && unix) || darwin) && !redox + + package net + +diff -ruwN source/src/net/cgo_unix_cgo_res.go source-new/src/net/cgo_unix_cgo_res.go +--- source/src/net/cgo_unix_cgo_res.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/net/cgo_unix_cgo_res.go 2025-08-02 23:37:48.006690697 +0700 +@@ -4,7 +4,7 @@ + + // res_search, for cgo systems where that is thread-safe. + +-//go:build cgo && !netgo && (linux || openbsd) ++//go:build cgo && !netgo && (linux || openbsd) && !redox + + package net + +@@ -18,7 +18,7 @@ + #include + #include + +-#cgo !android,!openbsd LDFLAGS: -lresolv ++#cgo !android,!openbsd,!redox LDFLAGS: -lresolv + */ + import "C" + +diff -ruwN source/src/net/cgo_unix_cgo_resn.go source-new/src/net/cgo_unix_cgo_resn.go +--- source/src/net/cgo_unix_cgo_resn.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/net/cgo_unix_cgo_resn.go 2025-08-02 23:37:55.206690614 +0700 +@@ -4,7 +4,7 @@ + + // res_nsearch, for cgo systems where that's available. + +-//go:build cgo && !netgo && unix && !(darwin || linux || openbsd) ++//go:build cgo && !netgo && unix && !(darwin || linux || openbsd || redox) + + package net + +@@ -18,7 +18,7 @@ + #include + #include + +-#cgo !aix,!dragonfly,!freebsd LDFLAGS: -lresolv ++#cgo !aix,!dragonfly,!freebsd,!redox LDFLAGS: -lresolv + */ + import "C" + +diff -ruwN source/src/os/user/cgo_lookup_unix.go source-new/src/os/user/cgo_lookup_unix.go +--- source/src/os/user/cgo_lookup_unix.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/os/user/cgo_lookup_unix.go 2025-08-02 17:15:57.178834645 +0700 +@@ -194,7 +194,7 @@ + // Because we can't use cgo in tests: + func structPasswdForNegativeTest() _C_struct_passwd { + sp := _C_struct_passwd{} +- *_C_pw_uidp(&sp) = 1<<32 - 2 +- *_C_pw_gidp(&sp) = 1<<32 - 3 ++ *_C_pw_uidp(&sp) = 1<<31 - 2 ++ *_C_pw_gidp(&sp) = 1<<31 - 3 + return sp + } diff -ruwN source/src/runtime/cgo/cgo.go source-new/src/runtime/cgo/cgo.go --- source/src/runtime/cgo/cgo.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/runtime/cgo/cgo.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/runtime/cgo/cgo.go 2025-07-20 23:50:47.322425484 +0700 @@ -16,7 +16,8 @@ #cgo dragonfly LDFLAGS: -lpthread #cgo freebsd LDFLAGS: -lpthread @@ -476,7 +699,7 @@ diff -ruwN source/src/runtime/cgo/cgo.go source-new/src/runtime/cgo/cgo.go #cgo aix LDFLAGS: -Wl,-berok diff -ruwN source/src/runtime/pprof/pprof_rusage.go source-new/src/runtime/pprof/pprof_rusage.go --- source/src/runtime/pprof/pprof_rusage.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/runtime/pprof/pprof_rusage.go 2025-07-20 22:49:29.702520564 +0700 ++++ source-new/src/runtime/pprof/pprof_rusage.go 2025-07-20 23:50:47.322425484 +0700 @@ -17,7 +17,7 @@ func addMaxRSS(w io.Writer) { var rssToBytes uintptr @@ -488,7 +711,7 @@ diff -ruwN source/src/runtime/pprof/pprof_rusage.go source-new/src/runtime/pprof rssToBytes = 1 diff -ruwN source/src/runtime/pprof/proto_test.go source-new/src/runtime/pprof/proto_test.go --- source/src/runtime/pprof/proto_test.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/runtime/pprof/proto_test.go 2025-07-20 22:49:40.452520165 +0700 ++++ source-new/src/runtime/pprof/proto_test.go 2025-07-20 23:50:47.322425484 +0700 @@ -83,7 +83,7 @@ // to use in test profiles. func testPCs(t *testing.T) (addr1, addr2 uint64, map1, map2 *profile.Mapping) { @@ -500,7 +723,7 @@ diff -ruwN source/src/runtime/pprof/proto_test.go source-new/src/runtime/pprof/p if err != nil { diff -ruwN source/src/runtime/race/internal/amd64v1/doc.go source-new/src/runtime/race/internal/amd64v1/doc.go --- source/src/runtime/race/internal/amd64v1/doc.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/runtime/race/internal/amd64v1/doc.go 2025-07-20 22:55:01.602514355 +0700 ++++ source-new/src/runtime/race/internal/amd64v1/doc.go 2025-07-20 23:50:47.322425484 +0700 @@ -5,6 +5,6 @@ // This package holds the race detector .syso for // amd64 architectures with GOAMD64 /dev/null; then +if ! command -v go &> /dev/null; then GO_TARBALL=go1.24.5.linux-$( [ "$(uname -m)" = "aarch64" ] && echo "arm64" || echo "amd64" ).tar.gz GO_DOWNLOAD_URL="https://dl.google.com/go/${GO_TARBALL}" echo "Installing Go..." @@ -23,27 +23,33 @@ fi # Go does not support out-of-tree builds :( rsync -a --delete "${COOKBOOK_SOURCE}/" ./ -export GOOS=redox +export GOHOSTOS=redox case "${TARGET}" in x86-unknown-redox) - export GOARCH=386 + export GOHOSTARCH=386 ;; x86_64-unknown-redox) - export GOARCH=amd64 + export GOHOSTARCH=amd64 ;; aarch64-unknown-redox) - export GOARCH=arm64 + export GOHOSTARCH=arm64 + ;; + riscv64-unknown-redox) +# TODO: Patches for this ARCH is not complete + export GOHOSTARCH=riscv64 ;; esac -export GOROOT_FINAL=${COOKBOOK_STAGE} +export GOOS=${GOHOSTOS} +export GOARCH=${GOHOSTARCH} + export CGO_ENABLED=1 -export CC_FOR_TARGET="${CC}" -export CXX_FOR_TARGET="${CXX}" +export CC_FOR_redox_${GOHOSTARCH}="${CC}" +export CXX_FOR_redox_${GOHOSTARCH}="${CXX}" # Don't poison the runtime tools (host -> host) unset AR AS CC CXX LD LDFLAGS NM OBJCOPY OBJDUMP RANLIB READELF STRIP -cd ./src -bash ./make.bash -v -bash run.bash --no-rebuild -"$GOTOOLDIR/dist" banner # print build info +(cd ./src && bash ./make.bash -v --no-banner) + +mkdir -p ${COOKBOOK_STAGE}/bin +rsync -a --delete "bin/redox_${GOHOSTARCH}/" ${COOKBOOK_STAGE}/bin """ From 1bb8abf925bd65ed27864567b9342d4811c55467 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sat, 2 Aug 2025 19:06:15 +0000 Subject: [PATCH 2733/3180] Init nodejs recipe --- recipes/wip/dev/lang/nodejs/01_redox.patch | 12 +++++ recipes/wip/dev/lang/nodejs/recipe.toml | 53 ++++++++++++++++++++-- 2 files changed, 62 insertions(+), 3 deletions(-) create mode 100644 recipes/wip/dev/lang/nodejs/01_redox.patch diff --git a/recipes/wip/dev/lang/nodejs/01_redox.patch b/recipes/wip/dev/lang/nodejs/01_redox.patch new file mode 100644 index 00000000..f80a8993 --- /dev/null +++ b/recipes/wip/dev/lang/nodejs/01_redox.patch @@ -0,0 +1,12 @@ +diff -ruwN source/configure.py source-new/configure.py +--- source/configure.py 2025-07-31 15:37:54.000000000 +0700 ++++ source-new/configure.py 2025-08-03 00:37:51.836604059 +0700 +@@ -44,7 +44,7 @@ + # parse our options + parser = argparse.ArgumentParser() + +-valid_os = ('win', 'mac', 'solaris', 'freebsd', 'openbsd', 'linux', ++valid_os = ('win', 'mac', 'solaris', 'freebsd', 'openbsd', 'linux', 'redox', + 'android', 'aix', 'cloudabi', 'os400', 'ios', 'openharmony') + valid_arch = ('arm', 'arm64', 'ia32', 'mips', 'mipsel', 'mips64el', + 'ppc64', 'x64', 'x86', 'x86_64', 's390x', 'riscv64', 'loong64') diff --git a/recipes/wip/dev/lang/nodejs/recipe.toml b/recipes/wip/dev/lang/nodejs/recipe.toml index 853ff6d9..fbc91fb9 100644 --- a/recipes/wip/dev/lang/nodejs/recipe.toml +++ b/recipes/wip/dev/lang/nodejs/recipe.toml @@ -1,5 +1,52 @@ -#TODO can't find the Redox target +#TODO depedencies needed [source] -tar = "https://nodejs.org/dist/v20.6.1/node-v20.6.1.tar.gz" +tar = "https://nodejs.org/dist/v24.5.0/node-v24.5.0.tar.gz" +patches = ["01_redox.patch"] + [build] -template = "configure" +template = "custom" +depedencies = [ +# "ada", + "libbrotli", +# "cares", + "libuv", +# "ngtcp2", + "nghttp2", +# "http-parser", +# "nghttp3", + "openssl1", + "simdjson", +# "simdutf", + "sqlite3", +# "uvwasi", + "zlib", + "zstd", +] +script = """ +DYNAMIC_INIT + +case "${TARGET}" in + x86-unknown-redox) + export NODE_CPU=x32 + ;; + x86_64-unknown-redox) + export NODE_CPU=x64 + ;; + aarch64-unknown-redox) + export NODE_CPU=arm64 + ;; +esac + +COOKBOOK_CONFIGURE_FLAGS=( + --prefix=${COOKBOOK_STAGE} + --dest-cpu=${NODE_CPU} + --dest-os=redox + --shared-libuv + --shared-nghttp2 + --shared-openssl + --shared-zlib + --shared-zstd + --cross-compiling +) +cookbook_configure +""" From c282bde1cc5281aa56095acf6c13a3eae5a7d599 Mon Sep 17 00:00:00 2001 From: auronandace Date: Sun, 3 Aug 2025 15:45:10 +0100 Subject: [PATCH 2734/3180] add os-test recipe --- recipes/tests/os-test/recipe.toml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 recipes/tests/os-test/recipe.toml diff --git a/recipes/tests/os-test/recipe.toml b/recipes/tests/os-test/recipe.toml new file mode 100644 index 00000000..08de2969 --- /dev/null +++ b/recipes/tests/os-test/recipe.toml @@ -0,0 +1,18 @@ +[source] +git = "https://gitlab.com/sortix/os-test" + +[build] +template = "custom" +script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ +mkdir -pv "${COOKBOOK_STAGE}/share/os-test" +rsync -av --delete . "${COOKBOOK_STAGE}/share/os-test" +""" + +[package] +dependencies = [ + "gnu-binutils", + "gnu-make", + "gcc13", + "libarchive" +] From 965ff8fccf3afa1da6343ae21911b1be9f3b55c3 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Mon, 4 Aug 2025 10:10:21 +0000 Subject: [PATCH 2735/3180] Update zig recipe --- recipes/wip/dev/lang/zig/01_redox.patch | 83 +++++++++++++++++++++++++ recipes/wip/dev/lang/zig/recipe.toml | 26 ++++---- 2 files changed, 94 insertions(+), 15 deletions(-) create mode 100644 recipes/wip/dev/lang/zig/01_redox.patch diff --git a/recipes/wip/dev/lang/zig/01_redox.patch b/recipes/wip/dev/lang/zig/01_redox.patch new file mode 100644 index 00000000..093eb2f4 --- /dev/null +++ b/recipes/wip/dev/lang/zig/01_redox.patch @@ -0,0 +1,83 @@ +diff -ruwN source/build.zig source-new/build.zig +--- source/build.zig 2025-05-23 11:31:41 ++++ source-new/build.zig 2025-08-04 17:06:57 +@@ -802,7 +802,7 @@ + try addCxxKnownPath(b, cfg, exe, b.fmt("libstdc++.{s}", .{lib_suffix}), null, need_cpp_includes); + try addCxxKnownPath(b, cfg, exe, b.fmt("libgcc_eh.{s}", .{lib_suffix}), null, need_cpp_includes); + }, +- .haiku => { ++ .haiku, .redox => { + try addCxxKnownPath(b, cfg, exe, b.fmt("libstdc++.{s}", .{lib_suffix}), null, need_cpp_includes); + }, + else => {}, +diff -ruwN source/lib/std/Target.zig source-new/lib/std/Target.zig +--- source/lib/std/Target.zig 2025-05-23 11:31:41 ++++ source-new/lib/std/Target.zig 2025-08-04 16:59:08 +@@ -29,6 +29,7 @@ + hurd, + linux, + plan9, ++ redox, + rtems, + serenity, + zos, +@@ -904,6 +905,7 @@ + .fuchsia, + .hermit, + .plan9, ++ .redox, + .serenity, + .zos, + .dragonfly, +@@ -2435,6 +2437,16 @@ + else + "/usr", + }) else none, ++ ++ .redox => switch (cpu.arch) { ++ .x86, ++ => init("/usr/lib/ld.so.1"), ++ .aarch64, ++ .riscv64, ++ .x86_64, ++ => init("/usr/lib/ld64.so.1"), ++ else => none, ++ }, + + .freebsd => switch (cpu.arch) { + .arm, +diff -ruwN source/test/llvm_targets.zig source-new/test/llvm_targets.zig +--- source/test/llvm_targets.zig 2025-05-23 11:31:41 ++++ source-new/test/llvm_targets.zig 2025-08-04 17:02:56 +@@ -20,6 +20,7 @@ + .{ .cpu_arch = .aarch64, .os_tag = .macos, .abi = .none }, + .{ .cpu_arch = .aarch64, .os_tag = .netbsd, .abi = .none }, + .{ .cpu_arch = .aarch64, .os_tag = .openbsd, .abi = .none }, ++ .{ .cpu_arch = .aarch64, .os_tag = .redox, .abi = .none }, + .{ .cpu_arch = .aarch64, .os_tag = .rtems, .abi = .none }, + .{ .cpu_arch = .aarch64, .os_tag = .serenity, .abi = .none }, + .{ .cpu_arch = .aarch64, .os_tag = .tvos, .abi = .none }, +@@ -238,6 +239,7 @@ + .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .none }, + .{ .cpu_arch = .riscv64, .os_tag = .netbsd, .abi = .none }, + .{ .cpu_arch = .riscv64, .os_tag = .openbsd, .abi = .none }, ++ .{ .cpu_arch = .riscv64, .os_tag = .redox, .abi = .none }, + .{ .cpu_arch = .riscv64, .os_tag = .rtems, .abi = .none }, + .{ .cpu_arch = .riscv64, .os_tag = .serenity, .abi = .none }, + // .{ .cpu_arch = .riscv64, .os_tag = .uefi, .abi = .none }, +@@ -325,6 +327,7 @@ + .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .none }, + .{ .cpu_arch = .x86, .os_tag = .netbsd, .abi = .none }, + .{ .cpu_arch = .x86, .os_tag = .openbsd, .abi = .none }, ++ .{ .cpu_arch = .x86, .os_tag = .redox, .abi = .none }, + .{ .cpu_arch = .x86, .os_tag = .rtems, .abi = .none }, + .{ .cpu_arch = .x86, .os_tag = .solaris, .abi = .none }, + .{ .cpu_arch = .x86, .os_tag = .uefi, .abi = .none }, +@@ -361,6 +364,7 @@ + .{ .cpu_arch = .x86_64, .os_tag = .macos, .abi = .none }, + .{ .cpu_arch = .x86_64, .os_tag = .netbsd, .abi = .none }, + .{ .cpu_arch = .x86_64, .os_tag = .openbsd, .abi = .none }, ++ .{ .cpu_arch = .x86_64, .os_tag = .redox, .abi = .none }, + .{ .cpu_arch = .x86_64, .os_tag = .rtems, .abi = .none }, + .{ .cpu_arch = .x86_64, .os_tag = .serenity, .abi = .none }, + .{ .cpu_arch = .x86_64, .os_tag = .solaris, .abi = .none }, diff --git a/recipes/wip/dev/lang/zig/recipe.toml b/recipes/wip/dev/lang/zig/recipe.toml index 90ceedba..c88b9070 100644 --- a/recipes/wip/dev/lang/zig/recipe.toml +++ b/recipes/wip/dev/lang/zig/recipe.toml @@ -1,20 +1,16 @@ -#TODO probably wrong script, see https://github.com/ziglang/zig/wiki/Building-Zig-From-Source +#TODO see https://github.com/ziglang/zig/wiki/Building-Zig-From-Source [source] -tar = "https://ziglang.org/download/0.10.1/zig-0.10.1.tar.xz" +tar = "https://ziglang.org/download/0.14.1/zig-0.14.1.tar.xz" +patches = [ + "01_redox.patch" +] + [build] +dependencies = [ + "llvm18" # need lld +] template = "custom" script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure +DYNAMIC_INIT +cookbook_cmake """ From 464bc977b49994ce35913ce61e50c6fabbde1466 Mon Sep 17 00:00:00 2001 From: auronandace Date: Mon, 4 Aug 2025 16:33:10 +0100 Subject: [PATCH 2736/3180] use cp instead of rsync --- recipes/tests/os-test/recipe.toml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/tests/os-test/recipe.toml b/recipes/tests/os-test/recipe.toml index 08de2969..db277136 100644 --- a/recipes/tests/os-test/recipe.toml +++ b/recipes/tests/os-test/recipe.toml @@ -4,9 +4,8 @@ git = "https://gitlab.com/sortix/os-test" [build] template = "custom" script = """ -rsync -av --delete "${COOKBOOK_SOURCE}/" ./ mkdir -pv "${COOKBOOK_STAGE}/share/os-test" -rsync -av --delete . "${COOKBOOK_STAGE}/share/os-test" +cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/share/os-test" """ [package] From b62bc0189dca5b0d8671dbcd83bac8fbff57c159 Mon Sep 17 00:00:00 2001 From: Petr Hrdina Date: Mon, 4 Aug 2025 19:15:33 +0200 Subject: [PATCH 2737/3180] Update libtool version which compiles --- recipes/wip/libs/other/libtool/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/wip/libs/other/libtool/recipe.toml b/recipes/wip/libs/other/libtool/recipe.toml index 1e3812b5..9086e63c 100644 --- a/recipes/wip/libs/other/libtool/recipe.toml +++ b/recipes/wip/libs/other/libtool/recipe.toml @@ -1,5 +1,5 @@ -#TODO compilation error +#TODO finish libtool setup [source] -tar = "https://ftpmirror.gnu.org/libtool/libtool-2.4.6.tar.gz" +tar = "https://ftpmirror.gnu.org/libtool/libtool-2.5.4.tar.gz" [build] template = "configure" From 3dce7e1a58de891e446935e77c3cd20e259884ee Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Tue, 5 Aug 2025 20:59:22 +0000 Subject: [PATCH 2738/3180] Update and make vim usable --- recipes/tools/vim/recipe.toml | 6 ++-- recipes/tools/vim/vim.patch | 59 +++++++++++++++++++++++++++++------ 2 files changed, 52 insertions(+), 13 deletions(-) diff --git a/recipes/tools/vim/recipe.toml b/recipes/tools/vim/recipe.toml index 3932e229..cc5b9363 100644 --- a/recipes/tools/vim/recipe.toml +++ b/recipes/tools/vim/recipe.toml @@ -1,7 +1,7 @@ [source] -tar = "https://github.com/vim/vim/archive/refs/tags/v8.2.5172.tar.gz" -blake3 = "28a58578a6655e2e45078331569d6e6c96ed05189acda34c2a784581bf614cd2" -patch = ["vim.patch"] +tar = "https://github.com/vim/vim/archive/refs/tags/v9.1.0821.tar.gz" +blake3 = "d1f5802ceb047b09143f1764bf4016f084cf7e6c026c7047919264c9f262a5dd" +patches = ["vim.patch"] [build] dependencies = ["ncurses"] diff --git a/recipes/tools/vim/vim.patch b/recipes/tools/vim/vim.patch index 3a3643e4..0537b2c9 100644 --- a/recipes/tools/vim/vim.patch +++ b/recipes/tools/vim/vim.patch @@ -1,22 +1,45 @@ +diff -ruwN source/src/configure.ac source-new/src/configure.ac +--- source/src/configure.ac 2024-10-29 04:05:26.000000000 +0700 ++++ source-new/src/configure.ac 2025-08-06 03:15:52.796303989 +0700 +@@ -3759,7 +3759,7 @@ + dnl Check for functions in one big call, to reduce the size of configure. + dnl Can only be used for functions that do not require any include. + AC_CHECK_FUNCS(fchdir fchown fchmod fsync getcwd getpseudotty \ +- getpwent getpwnam getpwuid getrlimit gettimeofday localtime_r lstat \ ++ getpwent getpwnam getpwuid gettimeofday localtime_r lstat \ + memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \ + getpgid setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \ + sigprocmask sigvec strcasecmp strcoll strerror strftime stricmp strncasecmp \ +diff -ruwN source/src/feature.h source-new/src/feature.h +--- source/src/feature.h 2024-10-29 04:05:26.000000000 +0700 ++++ source-new/src/feature.h 2025-08-06 03:16:27.596296730 +0700 +@@ -272,6 +272,7 @@ + */ + #if defined(FEAT_NORMAL) \ + && defined(FEAT_EVAL) \ ++ && !defined (__redox__) /* disable setitimer */ \ + && ((defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H) \ + && (!defined(MACOS_X) || defined(HAVE_DISPATCH_DISPATCH_H))) \ + || defined(MSWIN)) diff -ruwN source/src/libvterm/include/vterm.h source-new/src/libvterm/include/vterm.h ---- source/src/libvterm/include/vterm.h 2019-12-04 14:09:41.000000000 -0700 -+++ source-new/src/libvterm/include/vterm.h 2023-09-09 19:06:56.211783900 -0600 -@@ -15,9 +15,11 @@ - #define TRUE 1 +--- source/src/libvterm/include/vterm.h 2024-10-29 04:05:26.000000000 +0700 ++++ source-new/src/libvterm/include/vterm.h 2025-08-06 03:15:02.506316769 +0700 +@@ -17,9 +17,11 @@ #define FALSE 0 + // VIM: from stdint.h +#if !defined (__redox__) - // from stdint.h typedef unsigned char uint8_t; + typedef unsigned short uint16_t; typedef unsigned int uint32_t; +#endif - typedef struct VTerm VTerm; - typedef struct VTermState VTermState; + // VIM: define max screen cols and rows + #define VTERM_MAX_COLS 1000 diff -ruwN source/src/memfile.c source-new/src/memfile.c ---- source/src/memfile.c 2019-12-04 13:51:25.000000000 -0700 -+++ source-new/src/memfile.c 2023-09-09 19:06:08.999846625 -0600 -@@ -610,6 +610,8 @@ +--- source/src/memfile.c 2024-10-29 04:05:26.000000000 +0700 ++++ source-new/src/memfile.c 2025-08-06 03:15:36.896308173 +0700 +@@ -599,6 +599,8 @@ // No sync() on Stratus VOS # if defined(__OPENNT) || defined(__TANDEM) || defined(__VOS__) fflush(NULL); @@ -25,3 +48,19 @@ diff -ruwN source/src/memfile.c source-new/src/memfile.c # else sync(); # endif +diff -ruwN source/src/auto/configure source-new/src/auto/configure +--- source/src/auto/configure 2024-10-29 04:05:26.000000000 +0700 ++++ source-new/src/auto/configure 2025-08-06 03:56:11.765660165 +0700 +@@ -13358,12 +13358,6 @@ + printf "%s\n" "#define HAVE_GETPWUID 1" >>confdefs.h + + fi +-ac_fn_c_check_func "$LINENO" "getrlimit" "ac_cv_func_getrlimit" +-if test "x$ac_cv_func_getrlimit" = xyes +-then : +- printf "%s\n" "#define HAVE_GETRLIMIT 1" >>confdefs.h +- +-fi + ac_fn_c_check_func "$LINENO" "gettimeofday" "ac_cv_func_gettimeofday" + if test "x$ac_cv_func_gettimeofday" = xyes + then : From 48eff2e7ac0da2c56dc1f51200df69092597be42 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Tue, 5 Aug 2025 21:15:50 +0000 Subject: [PATCH 2739/3180] Add zsh to WIP recipe --- recipes/wip/shells/zsh/01_redox.patch | 54 +++++++++++++++++++++++++++ recipes/wip/shells/zsh/recipe.toml | 24 ++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 recipes/wip/shells/zsh/01_redox.patch create mode 100644 recipes/wip/shells/zsh/recipe.toml diff --git a/recipes/wip/shells/zsh/01_redox.patch b/recipes/wip/shells/zsh/01_redox.patch new file mode 100644 index 00000000..c1f230a9 --- /dev/null +++ b/recipes/wip/shells/zsh/01_redox.patch @@ -0,0 +1,54 @@ +diff --color -ruwN source/configure.ac source-new/configure.ac +--- source/configure.ac 2022-05-15 01:59:21.000000000 +0700 ++++ source-new/configure.ac 2025-08-06 02:08:48.797381523 +0700 +@@ -1311,7 +1311,7 @@ + setuid seteuid setreuid setresuid setsid \ + setgid setegid setregid setresgid \ + memcpy memmove strstr strerror strtoul \ +- getrlimit getrusage \ ++ getrusage \ + setlocale \ + isblank iswblank \ + uname \ +diff --color -ruwN source/Src/builtin.c source-new/Src/builtin.c +--- source/Src/builtin.c 2022-05-15 01:59:21.000000000 +0700 ++++ source-new/Src/builtin.c 2025-08-06 02:41:57.266846385 +0700 +@@ -7160,16 +7160,7 @@ + long clktck = get_clktck(); + + /* get time accounting information */ +- if (times(&buf) == -1) +- return 1; +- pttime(buf.tms_utime); /* user time */ +- putchar(' '); +- pttime(buf.tms_stime); /* system time */ +- putchar('\n'); +- pttime(buf.tms_cutime); /* user time, children */ +- putchar(' '); +- pttime(buf.tms_cstime); /* system time, children */ +- putchar('\n'); ++ // Somehow times() is not linking correctly + return 0; + } + +diff --color -ruwN source/Src/Builtins/rlimits.c source-new/Src/Builtins/rlimits.c +--- source/Src/Builtins/rlimits.c 2022-05-15 01:59:21.000000000 +0700 ++++ source-new/Src/Builtins/rlimits.c 2025-08-06 02:24:09.457135439 +0700 +@@ -892,7 +892,7 @@ + int + boot_(UNUSED(Module m)) + { +- set_resinfo(); ++// set_resinfo(); + return 0; + } + +@@ -900,7 +900,7 @@ + int + cleanup_(Module m) + { +- free_resinfo(); ++// free_resinfo(); + return setfeatureenables(m, &module_features, NULL); + } + diff --git a/recipes/wip/shells/zsh/recipe.toml b/recipes/wip/shells/zsh/recipe.toml new file mode 100644 index 00000000..572f979a --- /dev/null +++ b/recipes/wip/shells/zsh/recipe.toml @@ -0,0 +1,24 @@ +#TODO: Buggy, can't return after running commands +[source] +tar = "https://github.com/zsh-users/zsh/archive/refs/tags/zsh-5.9.tar.gz" +blake3 = "a15b94fae03e87aba6fc6a27df3c98e610b85b0c7c0fc90248f07fdcb8816860" +patches = [ + "01_redox.patch" +] +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +template = "custom" +dependencies = [ + "ncursesw", +] +script = """ +DYNAMIC_INIT + +"${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" +"${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" +"${COOKBOOK_MAKE}" install.bin install.modules install.fns DESTDIR="${COOKBOOK_STAGE}" +""" From 8b6f5aaa03af4663f79f2d2d1acb6e55a72da2ba Mon Sep 17 00:00:00 2001 From: Petr Hrdina Date: Wed, 6 Aug 2025 23:10:06 +0200 Subject: [PATCH 2740/3180] Add recipe for library unibilium --- recipes/libs/unibilium/recipe.toml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 recipes/libs/unibilium/recipe.toml diff --git a/recipes/libs/unibilium/recipe.toml b/recipes/libs/unibilium/recipe.toml new file mode 100644 index 00000000..5252c1d3 --- /dev/null +++ b/recipes/libs/unibilium/recipe.toml @@ -0,0 +1,15 @@ +[source] +tar = "https://github.com/neovim/unibilium/archive/refs/tags/v2.1.2.tar.gz" +blake3 = "856a7593a412942f4716bb55bfdd225f3ce92cb013b9d4a44693255f0570b1c7" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +template = "custom" +script = """ +DYNAMIC_INIT +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ +cookbook_configure +""" From a2ee1c202b35574968c45b602c301a34e315c0f5 Mon Sep 17 00:00:00 2001 From: Petr Hrdina Date: Thu, 7 Aug 2025 23:08:14 +0200 Subject: [PATCH 2741/3180] Add utf8proc recipe --- recipes/libs/utf8proc/recipe.toml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 recipes/libs/utf8proc/recipe.toml diff --git a/recipes/libs/utf8proc/recipe.toml b/recipes/libs/utf8proc/recipe.toml new file mode 100644 index 00000000..e17e3c79 --- /dev/null +++ b/recipes/libs/utf8proc/recipe.toml @@ -0,0 +1,22 @@ +[source] +tar = "https://github.com/JuliaStrings/utf8proc/archive/refs/tags/v2.10.0.tar.gz" + +[build] +template = "custom" +script = """ +DYNAMIC_INIT +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_CXX_COMPILER="${TARGET}-g++" + -DCMAKE_C_COMPILER="${TARGET}-gcc" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" + -DCMAKE_VERBOSE_MAKEFILE=On +"${COOKBOOK_SOURCE}" +) +cookbook_configure +""" From d6b9a690f7c2a2f2e9e1355285bf3125b6ed2a46 Mon Sep 17 00:00:00 2001 From: Petr Hrdina Date: Thu, 7 Aug 2025 23:20:59 +0200 Subject: [PATCH 2742/3180] Add blake3 hash to utf8proc recipe --- recipes/libs/utf8proc/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/libs/utf8proc/recipe.toml b/recipes/libs/utf8proc/recipe.toml index e17e3c79..c34c12f1 100644 --- a/recipes/libs/utf8proc/recipe.toml +++ b/recipes/libs/utf8proc/recipe.toml @@ -1,5 +1,6 @@ [source] tar = "https://github.com/JuliaStrings/utf8proc/archive/refs/tags/v2.10.0.tar.gz" +blake3 = "6f675db5d1ae55ad0825351ba9c58a5b5c24c862f559cc7bfed1cb63c1185594" [build] template = "custom" From 1f1496a56ababe63097bb640fc676618abcab045 Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Fri, 8 Aug 2025 23:06:45 -0400 Subject: [PATCH 2743/3180] Fix and bump sdl2-mixer --- recipes/libs/sdl2-mixer/recipe.toml | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/recipes/libs/sdl2-mixer/recipe.toml b/recipes/libs/sdl2-mixer/recipe.toml index 3f2c1e86..2c9d9b82 100644 --- a/recipes/libs/sdl2-mixer/recipe.toml +++ b/recipes/libs/sdl2-mixer/recipe.toml @@ -1,23 +1,25 @@ [source] -tar = "https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-2.0.4.tar.gz" +tar = "https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-2.8.1.tar.gz" +blake3 = "fa0798ce7ffdb5f89545311292374e5b7af479df8bc99a4aacfb40d2ab2f8384" [build] template = "custom" dependencies = [ - "sdl2", - "liborbital", - "llvm18", - "mesa", - "zlib", - "libogg", - "libvorbis", + "sdl2", + "liborbital", + "llvm18", + "mesa", + "zlib", + "libogg", + "libvorbis", ] script = """ -export SDL_LIBS="-lSDL2 -lorbital $("${TARGET}-pkg-config" --libs osmesa) -lvorbis -logg -lz -lm -lpthread -lstdc++" +DYNAMIC_INIT + +export SDL_LIBS="-lSDL2 -lorbital -lOSMesa -lvorbis -logg -lz -lm -lpthread -lstdc++" COOKBOOK_CONFIGURE_FLAGS=( --prefix=/ --host="${TARGET}" - --disable-shared --disable-sdltest --enable-music-ogg --disable-music-cmd From 28e3ba32fc92db23e8ce66916ea521a1ac036cd8 Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Fri, 8 Aug 2025 23:11:00 -0400 Subject: [PATCH 2744/3180] Add wget-log to .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index d63ce24e..b172da92 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ source-new source.tar source.tar.tmp target +wget-log From 4d1a00743ad35f5066de56f5af2f2a7de0765581 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Mon, 11 Aug 2025 14:25:49 +0000 Subject: [PATCH 2745/3180] Remove sh script for building the repo dir --- repo.sh | 63 +-------------------------------------------------------- 1 file changed, 1 insertion(+), 62 deletions(-) diff --git a/repo.sh b/repo.sh index ef5b61b6..40476cef 100755 --- a/repo.sh +++ b/repo.sh @@ -108,65 +108,4 @@ declare -A APPSTREAM_SOURCES # well. recipes="$recipes $(target/release/pkg_deps $toml_recipes)" -REPO_BUILDER="./target/release/repo_builder" - -if [ -x "$REPO_BUILDER" ] # TODO: Wait until everyone has this binary -then - "$REPO_BUILDER" "$REPO" $recipes -else # TODO: Delete this soon - -for recipe in $recipes -do - recipe_path=`target/release/find_recipe $recipe` - COOKBOOK_RECIPE="$recipe_path" - TARGET_DIR="${COOKBOOK_RECIPE}/target/${TARGET}" - COOKBOOK_STAGE="${TARGET_DIR}/stage" - - if [ "${COOKBOOK_STAGE}.pkgar" -nt "$REPO/$recipe.pkgar" ] - then - echo -e "\033[01;38;5;155mrepo - publishing $recipe\033[0m" >&2 - cp -v "${COOKBOOK_STAGE}.pkgar" "$REPO/$recipe.pkgar" - cp -v "${COOKBOOK_STAGE}.toml" "$REPO/$recipe.toml" - fi - - if [ -e "${COOKBOOK_STAGE}/usr/share/metainfo" ] - then - APPSTREAM_SOURCES["$recipe"]="${COOKBOOK_STAGE}" - fi -done - -if [ "${APPSTREAM}" == "1" ] -then - echo -e "\033[01;38;5;155mrepo - generating appstream data\033[0m" >&2 - - APPSTREAM_ROOT="$ROOT/build/${TARGET}/appstream" - APPSTREAM_PKG="$REPO/appstream.pkgar" - rm -rf "${APPSTREAM_ROOT}" "${APPSTREAM_PKG}" - mkdir -p "${APPSTREAM_ROOT}" - if [ "${#APPSTREAM_SOURCES[@]}" -ne 0 ] - then - appstreamcli compose \ - --origin=pkgar \ - --result-root="${APPSTREAM_ROOT}" \ - "${APPSTREAM_SOURCES[@]}" - fi - pkgar create \ - --archive "${APPSTREAM_PKG}" \ - --skey "${ROOT}/build/id_ed25519.toml" \ - "${APPSTREAM_ROOT}" -fi - -echo -e "\033[01;38;5;155mrepo - generating repo.toml\033[0m" >&2 - -echo "[packages]" > "$REPO/repo.toml" -for toml in "$REPO/"*".toml" -do - package="$(basename "$toml" .toml)" - if [ "$package" != "repo" ] - then - version="$(grep version "$toml" | cut -d '=' -f2-)" - echo "$package =$version" >> "$REPO/repo.toml" - fi -done - -fi +target/release/repo_builder "$REPO" $recipes From 866c527072aacf41be5859c1c59547857e03dcba Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Tue, 12 Aug 2025 16:53:05 +0000 Subject: [PATCH 2746/3180] Fix make clean part II --- clean.sh | 2 +- cook.sh | 2 +- fetch.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/clean.sh b/clean.sh index 7f370765..7aba7ca8 100755 --- a/clean.sh +++ b/clean.sh @@ -12,5 +12,5 @@ fi for recipe_path in $recipes do - IGNORE_ERROR=1 ./cook.sh "$recipe_path" distclean + ./cook.sh "$recipe_path" distclean done diff --git a/cook.sh b/cook.sh index 76aa4e19..521668f9 100755 --- a/cook.sh +++ b/cook.sh @@ -325,7 +325,7 @@ if [ -n "$1" ] then if (echo "$1" | grep '.*/.*' >/dev/null); then recipe_name=$(basename "$1") - recipe_path="recipes/$1" + recipe_path="$1" else recipe_name="$1" recipe_path=`target/release/find_recipe $recipe_name` diff --git a/fetch.sh b/fetch.sh index 3186cb0c..060ac6e4 100755 --- a/fetch.sh +++ b/fetch.sh @@ -26,7 +26,7 @@ for recipe_path in $recipes do if (echo "$recipe_path" | grep '.*/.*' >/dev/null); then recipe_name=$(basename "$recipe_path") - recipe_path="recipes/$recipe_path" + recipe_path="$recipe_path" else recipe_name="$recipe_path" recipe_path=`target/release/find_recipe $recipe_name` From db911b5b81eeb5f3492a02a9b1898f21898e5ed6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 12 Aug 2025 16:24:00 -0600 Subject: [PATCH 2747/3180] libpoppler: update and implement build script --- recipes/wip/libs/other/libpoppler/recipe.toml | 56 ++++++++++++++----- 1 file changed, 41 insertions(+), 15 deletions(-) diff --git a/recipes/wip/libs/other/libpoppler/recipe.toml b/recipes/wip/libs/other/libpoppler/recipe.toml index cf4bf304..482952ca 100644 --- a/recipes/wip/libs/other/libpoppler/recipe.toml +++ b/recipes/wip/libs/other/libpoppler/recipe.toml @@ -1,21 +1,47 @@ -#TODO maybe incomplete script, see https://gitlab.freedesktop.org/poppler/poppler/-/blob/master/INSTALL?ref_type=heads #TODO needs encoding data - https://poppler.freedesktop.org/poppler-data-0.4.12.tar.gz [source] -tar = "https://poppler.freedesktop.org/poppler-23.12.0.tar.xz" +tar = "https://poppler.freedesktop.org/poppler-25.08.0.tar.xz" +blake3 = "0732ef20594d084ae3c24cb75079a2be347df78acac80fdcbd6149b8dce197d4" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + [build] template = "custom" +dependencies = [ + "cairo", + "curl", + "expat", + "fontconfig", + "freetype2", + "gettext", + "glib", + "libffi", + "libiconv", + "libjpeg", + "libpng", + "libx11", + "libxau", + "libxcb", + "nghttp2", + "openssl1", + "pcre2", + "pixman", + #TODO: compile dylib "libtiff", + "zlib", +] script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure +DYNAMIC_INIT +cookbook_cmake \ + -DCMAKE_C_FLAGS="-I${COOKBOOK_SYSROOT}/include" \ + -DCMAKE_CXX_FLAGS="-I${COOKBOOK_SYSROOT}/include" \ + -DENABLE_BOOST=OFF \ + -DENABLE_GPGME=OFF \ + -DENABLE_LCMS=OFF \ + -DENABLE_LIBOPENJPEG=none \ + -DENABLE_LIBTIFF=OFF \ + -DENABLE_QT5=OFF \ + -DENABLE_QT6=OFF \ + -DENABLE_NSS3=OFF """ From a5630017f467e723415932404d654f3f283b17d2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 13 Aug 2025 09:38:29 -0600 Subject: [PATCH 2748/3180] cosmic-reader: use mupdf backend --- recipes/tools/cosmic-reader/recipe.toml | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/recipes/tools/cosmic-reader/recipe.toml b/recipes/tools/cosmic-reader/recipe.toml index 14635d13..a766062c 100644 --- a/recipes/tools/cosmic-reader/recipe.toml +++ b/recipes/tools/cosmic-reader/recipe.toml @@ -4,8 +4,25 @@ branch = "master" [build] template = "custom" +dependencies = [ + "expat", + "fontconfig", + "freetype2", + "libpng", + "zlib", +] script = """ -cookbook_cargo --no-default-features +DYNAMIC_INIT +"${COOKBOOK_CARGO}" rustc \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --release \ + --bin cosmic-reader \ + --no-default-features \ + --features mupdf \ + -- \ + -C link-args="-lpng -lexpat" +mkdir -pv "${COOKBOOK_STAGE}/usr/bin/" +cp -v "target/${TARGET}/release/cosmic-reader" "${COOKBOOK_STAGE}/usr/bin/" mkdir -pv "${COOKBOOK_STAGE}/ui/apps" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/40_cosmic-reader" -""" +""" \ No newline at end of file From 2afdaac5be2106b4584c508e9352542460e84fe9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 15 Aug 2025 03:21:42 -0300 Subject: [PATCH 2749/3180] Add recipes --- recipes/wip/analysis/flowgger/recipe.toml | 6 ++++++ recipes/wip/data-integrity/rapidhash/recipe.toml | 8 ++++++++ recipes/wip/demos/iocraft/recipe.toml | 10 ++++++++++ recipes/wip/demos/rustui/recipe.toml | 9 +++++++++ recipes/wip/dev/lang/tur/recipe.toml | 8 ++++++++ recipes/wip/fuse/lis/recipe.toml | 8 ++++++++ recipes/wip/image/converters/dipc/recipe.toml | 5 +++++ recipes/wip/net/p2p/dumbpipe/recipe.toml | 5 +++++ recipes/wip/net/remote/zeco/recipe.toml | 5 +++++ recipes/wip/net/server/vproxy/recipe.toml | 5 +++++ 10 files changed, 69 insertions(+) create mode 100644 recipes/wip/analysis/flowgger/recipe.toml create mode 100644 recipes/wip/data-integrity/rapidhash/recipe.toml create mode 100644 recipes/wip/demos/iocraft/recipe.toml create mode 100644 recipes/wip/demos/rustui/recipe.toml create mode 100644 recipes/wip/dev/lang/tur/recipe.toml create mode 100644 recipes/wip/fuse/lis/recipe.toml create mode 100644 recipes/wip/image/converters/dipc/recipe.toml create mode 100644 recipes/wip/net/p2p/dumbpipe/recipe.toml create mode 100644 recipes/wip/net/remote/zeco/recipe.toml create mode 100644 recipes/wip/net/server/vproxy/recipe.toml diff --git a/recipes/wip/analysis/flowgger/recipe.toml b/recipes/wip/analysis/flowgger/recipe.toml new file mode 100644 index 00000000..efcaed09 --- /dev/null +++ b/recipes/wip/analysis/flowgger/recipe.toml @@ -0,0 +1,6 @@ +#TODO not compiled or tested +# build instructions: https://github.com/awslabs/flowgger/wiki/Installation +[source] +git = "https://github.com/awslabs/flowgger" +[build] +template = "cargo" diff --git a/recipes/wip/data-integrity/rapidhash/recipe.toml b/recipes/wip/data-integrity/rapidhash/recipe.toml new file mode 100644 index 00000000..c1c746e7 --- /dev/null +++ b/recipes/wip/data-integrity/rapidhash/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/hoxxep/rapidhash" +[build] +template = "custom" +script = """ +cookbook_cargo_packages rapidhash +""" diff --git a/recipes/wip/demos/iocraft/recipe.toml b/recipes/wip/demos/iocraft/recipe.toml new file mode 100644 index 00000000..18ad8f48 --- /dev/null +++ b/recipes/wip/demos/iocraft/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ccbrown/iocraft" +[build] +template = "custom" +script = """ +cookbook_cargo_examples borders calculator counter \ +fullscreen hello_world overlap progress_bar scrolling \ +table use_input use_output weather +""" diff --git a/recipes/wip/demos/rustui/recipe.toml b/recipes/wip/demos/rustui/recipe.toml new file mode 100644 index 00000000..cda858c7 --- /dev/null +++ b/recipes/wip/demos/rustui/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/broccolingual/rustui" +[build] +template = "custom" +script = """ +cookbook_cargo_examples hello_world colors inputs file_reader +cookbook_cargo_packages tetris +""" diff --git a/recipes/wip/dev/lang/tur/recipe.toml b/recipes/wip/dev/lang/tur/recipe.toml new file mode 100644 index 00000000..13ffc9d4 --- /dev/null +++ b/recipes/wip/dev/lang/tur/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/rezigned/tur" +[build] +template = "custom" +script = """ +cookbook_cargo_packages tur-cli tur-tui +""" diff --git a/recipes/wip/fuse/lis/recipe.toml b/recipes/wip/fuse/lis/recipe.toml new file mode 100644 index 00000000..400e1fbd --- /dev/null +++ b/recipes/wip/fuse/lis/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/riffcc/lis" +[build] +template = "cargo" +dependencies = [ + "libfuse3", +] diff --git a/recipes/wip/image/converters/dipc/recipe.toml b/recipes/wip/image/converters/dipc/recipe.toml new file mode 100644 index 00000000..a4bdfb61 --- /dev/null +++ b/recipes/wip/image/converters/dipc/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/doprz/dipc" +[build] +template = "cargo" diff --git a/recipes/wip/net/p2p/dumbpipe/recipe.toml b/recipes/wip/net/p2p/dumbpipe/recipe.toml new file mode 100644 index 00000000..4ae3400f --- /dev/null +++ b/recipes/wip/net/p2p/dumbpipe/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/n0-computer/dumbpipe" +[build] +template = "cargo" diff --git a/recipes/wip/net/remote/zeco/recipe.toml b/recipes/wip/net/remote/zeco/recipe.toml new file mode 100644 index 00000000..8a4e0427 --- /dev/null +++ b/recipes/wip/net/remote/zeco/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/julianbuettner/zeco" +[build] +template = "cargo" diff --git a/recipes/wip/net/server/vproxy/recipe.toml b/recipes/wip/net/server/vproxy/recipe.toml new file mode 100644 index 00000000..db161785 --- /dev/null +++ b/recipes/wip/net/server/vproxy/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/0x676e67/vproxy" +[build] +template = "cargo" From 85613a52b496858d639c668825ff29ed18c1b2e3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 15 Aug 2025 03:31:54 -0300 Subject: [PATCH 2750/3180] Add recipes --- recipes/wip/net/lan/malai/recipe.toml | 8 ++++++++ recipes/wip/net/remote/do-ssh/recipe.toml | 5 +++++ recipes/wip/net/remote/iroh-ssh/recipe.toml | 5 +++++ recipes/wip/net/sharing/sendme/recipe.toml | 5 +++++ 4 files changed, 23 insertions(+) create mode 100644 recipes/wip/net/lan/malai/recipe.toml create mode 100644 recipes/wip/net/remote/do-ssh/recipe.toml create mode 100644 recipes/wip/net/remote/iroh-ssh/recipe.toml create mode 100644 recipes/wip/net/sharing/sendme/recipe.toml diff --git a/recipes/wip/net/lan/malai/recipe.toml b/recipes/wip/net/lan/malai/recipe.toml new file mode 100644 index 00000000..237c7259 --- /dev/null +++ b/recipes/wip/net/lan/malai/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/fastn-stack/kulfi" +[build] +template = "custom" +script = """ +cookbook_cargo_packages malai +""" diff --git a/recipes/wip/net/remote/do-ssh/recipe.toml b/recipes/wip/net/remote/do-ssh/recipe.toml new file mode 100644 index 00000000..41632fc5 --- /dev/null +++ b/recipes/wip/net/remote/do-ssh/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/doEggi/do-ssh" +[build] +template = "cargo" diff --git a/recipes/wip/net/remote/iroh-ssh/recipe.toml b/recipes/wip/net/remote/iroh-ssh/recipe.toml new file mode 100644 index 00000000..3af3dc0f --- /dev/null +++ b/recipes/wip/net/remote/iroh-ssh/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/rustonbsd/iroh-ssh" +[build] +template = "cargo" diff --git a/recipes/wip/net/sharing/sendme/recipe.toml b/recipes/wip/net/sharing/sendme/recipe.toml new file mode 100644 index 00000000..e4162119 --- /dev/null +++ b/recipes/wip/net/sharing/sendme/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/n0-computer/sendme" +[build] +template = "cargo" From db7d763fe694fcf1f3086e333e100a1115682402 Mon Sep 17 00:00:00 2001 From: Mathew John Roberts Date: Fri, 15 Aug 2025 07:56:56 +0100 Subject: [PATCH 2751/3180] Apply 1 suggestion(s) to 1 file(s) Co-authored-by: Ribbon --- recipes/tests/os-test/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/tests/os-test/recipe.toml b/recipes/tests/os-test/recipe.toml index db277136..59467c20 100644 --- a/recipes/tests/os-test/recipe.toml +++ b/recipes/tests/os-test/recipe.toml @@ -13,5 +13,5 @@ dependencies = [ "gnu-binutils", "gnu-make", "gcc13", - "libarchive" + "libarchive", ] From efd3485ecda13e5c7ef13224d1d6db2c6025fbaf Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Fri, 15 Aug 2025 08:36:48 +0000 Subject: [PATCH 2752/3180] Only include subset of terminfo --- recipes/other/terminfo/recipe.toml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/recipes/other/terminfo/recipe.toml b/recipes/other/terminfo/recipe.toml index 856ea873..ea8ed312 100644 --- a/recipes/other/terminfo/recipe.toml +++ b/recipes/other/terminfo/recipe.toml @@ -5,7 +5,14 @@ branch = "master" [build] template = "custom" script = """ -mkdir -p ${COOKBOOK_STAGE}/share -cp -r ${COOKBOOK_SOURCE}/. ${COOKBOOK_STAGE}/share/ +# only copy common TERM envar +mkdir -p ${COOKBOOK_STAGE}/share/terminfo/{a,d,l,s,t,v,x} +cp -r ${COOKBOOK_SOURCE}/tabset ${COOKBOOK_STAGE}/share/ +cp ${COOKBOOK_SOURCE}/terminfo/a/ansi{,-*} ${COOKBOOK_STAGE}/share/terminfo/a/ +cp ${COOKBOOK_SOURCE}/terminfo/d/dumb{,-*} ${COOKBOOK_STAGE}/share/terminfo/d/ +cp ${COOKBOOK_SOURCE}/terminfo/l/linux{,-*} ${COOKBOOK_STAGE}/share/terminfo/l/ +cp ${COOKBOOK_SOURCE}/terminfo/s/screen{,-*} ${COOKBOOK_STAGE}/share/terminfo/s/ +cp ${COOKBOOK_SOURCE}/terminfo/t/tmux{,-*} ${COOKBOOK_STAGE}/share/terminfo/t/ +cp ${COOKBOOK_SOURCE}/terminfo/v/vt100{,-*} ${COOKBOOK_STAGE}/share/terminfo/v/ +cp ${COOKBOOK_SOURCE}/terminfo/x/xterm{,-*} ${COOKBOOK_STAGE}/share/terminfo/x/ """ - From 3da709fb1fc1a67dfa9e97a72e095c8a3c67cdfd Mon Sep 17 00:00:00 2001 From: Wildan M Date: Mon, 18 Aug 2025 08:45:52 +0700 Subject: [PATCH 2753/3180] Cache auto deps --- cook.sh | 1 + src/bin/cook.rs | 86 +++++++++++++++++++++++++++++++++---------------- src/recipe.rs | 7 +++- 3 files changed, 65 insertions(+), 29 deletions(-) diff --git a/cook.sh b/cook.sh index 521668f9..6435f2cc 100755 --- a/cook.sh +++ b/cook.sh @@ -288,6 +288,7 @@ function op { ;; unstage) rm -rfv "${COOKBOOK_STAGE}" + rm -fv "${TARGET_DIR}/auto_deps.toml" ;; pkg) pkgar \ diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 4002f712..77a8b269 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1,7 +1,8 @@ use cookbook::blake3::blake3_progress; -use cookbook::recipe::{BuildKind, CookRecipe, Recipe, SourceRecipe}; +use cookbook::recipe::{AutoDeps, BuildKind, CookRecipe, Recipe, SourceRecipe}; use pkg::package::Package; use pkg::{recipes, PackageName}; +use serde::Serialize; use std::collections::VecDeque; use std::convert::TryInto; use std::{ @@ -187,6 +188,20 @@ fn run_command_stdin(mut command: process::Command, stdin_data: &[u8]) -> Result Ok(()) } +fn serialize_and_write(file_path: &Path, content: &T) -> Result<(), String> { + let toml_content = toml::to_string(content).map_err(|err| { + format!( + "Failed to serialize content for '{}': {}", + file_path.display(), + err + ) + })?; + + fs::write(file_path, toml_content) + .map_err(|err| format!("Failed to write to file '{}': {}", file_path.display(), err))?; + Ok(()) +} + static SHARED_PRESCRIPT: &str = r#" function DYNAMIC_INIT { COOKBOOK_AUTORECONF="autoreconf" @@ -704,16 +719,16 @@ fn build( let sysroot_dir = target_dir.join("sysroot"); // Rebuild sysroot if source is newer //TODO: rebuild on recipe changes - if sysroot_dir.is_dir() - && (modified_dir(&sysroot_dir)? < source_modified - || modified_dir(&sysroot_dir)? < deps_modified) - { - eprintln!( - "DEBUG: '{}' newer than '{}'", - source_dir.display(), - sysroot_dir.display() - ); - remove_all(&sysroot_dir)?; + if sysroot_dir.is_dir() { + let sysroot_modified = modified_dir(&sysroot_dir)?; + if sysroot_modified < source_modified || sysroot_modified < deps_modified { + eprintln!( + "DEBUG: '{}' newer than '{}'", + source_dir.display(), + sysroot_dir.display() + ); + remove_all(&sysroot_dir)?; + } } if !sysroot_dir.is_dir() { // Create sysroot.tmp @@ -754,16 +769,16 @@ fn build( let stage_dir = target_dir.join("stage"); // Rebuild stage if source is newer //TODO: rebuild on recipe changes - if stage_dir.is_dir() - && (modified_dir(&stage_dir)? < source_modified - || modified_dir(&stage_dir)? < deps_modified) - { - eprintln!( - "DEBUG: '{}' newer than '{}'", - source_dir.display(), - stage_dir.display() - ); - remove_all(&stage_dir)?; + if stage_dir.is_dir() { + let stage_modified = modified_dir(&stage_dir)?; + if stage_modified < source_modified || stage_modified < deps_modified { + eprintln!( + "DEBUG: '{}' newer than '{}'", + source_dir.display(), + stage_dir.display() + ); + remove_all(&stage_dir)?; + } } if !stage_dir.is_dir() { @@ -1069,8 +1084,24 @@ done rename(&stage_dir_tmp, &stage_dir)?; } - // Calculate automatic dependencies - let auto_deps = auto_deps(&stage_dir, &dep_pkgars); + let auto_deps_path = target_dir.join("auto_deps.toml"); + + if auto_deps_path.is_file() && modified(&auto_deps_path)? < modified(&stage_dir)? { + remove_all(&auto_deps_path)? + } + + let auto_deps = if auto_deps_path.exists() { + let toml_content = + fs::read_to_string(&auto_deps_path).map_err(|_| "failed to read cached auto_deps")?; + let wrapper: AutoDeps = + toml::from_str(&toml_content).map_err(|_| "failed to deserialize cached auto_deps")?; + wrapper.packages + } else { + let packages = auto_deps(&stage_dir, &dep_pkgars); + let wrapper = AutoDeps { packages }; + serialize_and_write(&auto_deps_path, &wrapper)?; + wrapper.packages + }; Ok((stage_dir, auto_deps)) } @@ -1137,15 +1168,14 @@ fn package_toml( depends.push(dep.clone()); } } - let stage_toml = toml::to_string(&Package { + let package = Package { name: name.clone(), version: package_version(recipe), target: env::var("TARGET").map_err(|err| format!("failed to read TARGET: {:?}", err))?, depends, - }) - .map_err(|err| format!("failed to serialize stage.toml: {:?}", err))?; - fs::write(target_dir.join("stage.toml"), stage_toml) - .map_err(|err| format!("failed to write stage.toml: {:?}", err))?; + }; + + serialize_and_write(&target_dir.join("stage.toml"), &package)?; return Ok(()); } diff --git a/src/recipe.rs b/src/recipe.rs index 4341551d..0a0b4934 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -1,4 +1,4 @@ -use std::{convert::TryInto, fs, path::PathBuf}; +use std::{collections::BTreeSet, convert::TryInto, fs, path::PathBuf}; use pkg::{package::PackageError, recipes, PackageName}; use serde::{ @@ -215,6 +215,11 @@ impl CookRecipe { } } +#[derive(Serialize, Deserialize)] +pub struct AutoDeps { + pub packages: BTreeSet, +} + #[cfg(test)] mod tests { use pkg::PackageName; From fec945560ee0f005d03714f604f75a2e2228b5c6 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Mon, 18 Aug 2025 02:00:58 +0000 Subject: [PATCH 2754/3180] Retain comment --- src/bin/cook.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 77a8b269..dde130ff 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1084,6 +1084,7 @@ done rename(&stage_dir_tmp, &stage_dir)?; } + // Calculate automatic dependencies let auto_deps_path = target_dir.join("auto_deps.toml"); if auto_deps_path.is_file() && modified(&auto_deps_path)? < modified(&stage_dir)? { From c64fb342b41ea317b6c843f428b72f28c7bc1af8 Mon Sep 17 00:00:00 2001 From: Bendeguz Pisch Date: Wed, 20 Aug 2025 10:12:02 +0200 Subject: [PATCH 2755/3180] Move miniserve to wip/net/http, change it to toml and change source to upstream --- recipes/tools/miniserve/recipe.sh | 2 -- recipes/wip/net/http/miniserve/recipe.toml | 12 ++++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) delete mode 100644 recipes/tools/miniserve/recipe.sh create mode 100644 recipes/wip/net/http/miniserve/recipe.toml diff --git a/recipes/tools/miniserve/recipe.sh b/recipes/tools/miniserve/recipe.sh deleted file mode 100644 index fdd79422..00000000 --- a/recipes/tools/miniserve/recipe.sh +++ /dev/null @@ -1,2 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/miniserve -BUILD_DEPENDS=(openssl1 zlib) diff --git a/recipes/wip/net/http/miniserve/recipe.toml b/recipes/wip/net/http/miniserve/recipe.toml new file mode 100644 index 00000000..f5d95804 --- /dev/null +++ b/recipes/wip/net/http/miniserve/recipe.toml @@ -0,0 +1,12 @@ +#TODO missing libc:: socket-related imports + +[source] +git = "https://github.com/svenstaro/miniserve" + +[build] +dependencies = [ + "openssl1", + "zlib" +] +template = "cargo" + From 541e855d72abb05ee2ce898c3876bf9de2ba78f6 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Wed, 20 Aug 2025 12:53:38 +0000 Subject: [PATCH 2756/3180] Add more build templates and automatic DYNAMIC_INIT --- recipes/dev/gdk-pixbuf/recipe.toml | 16 +++++----- recipes/emulators/mgba/recipe.toml | 31 +++++++------------ recipes/net/download/wget/recipe.toml | 11 +++---- .../wip/net/download/youtube-tui/recipe.toml | 6 ++-- src/bin/cook.rs | 24 +++++++++++++- src/recipe.rs | 18 +++++++++-- 6 files changed, 63 insertions(+), 43 deletions(-) diff --git a/recipes/dev/gdk-pixbuf/recipe.toml b/recipes/dev/gdk-pixbuf/recipe.toml index afa8bff2..7ae9aa5c 100644 --- a/recipes/dev/gdk-pixbuf/recipe.toml +++ b/recipes/dev/gdk-pixbuf/recipe.toml @@ -15,12 +15,10 @@ dependencies = [ "shared-mime-info", "zlib", ] -template = "custom" -script = """ -DYNAMIC_INIT -cookbook_meson \ - -Dbuiltin_loaders=all \ - -Dgir=false \ - -Dinstalled_tests=false \ - -Dx11=false -""" +template = "meson" +mesonflags = [ + "-Dbuiltin_loaders=all", + "-Dgir=false", + "-Dinstalled_tests=false", + "-Dx11=false", +] diff --git a/recipes/emulators/mgba/recipe.toml b/recipes/emulators/mgba/recipe.toml index 5a4d65ae..b61b7bd0 100644 --- a/recipes/emulators/mgba/recipe.toml +++ b/recipes/emulators/mgba/recipe.toml @@ -4,24 +4,15 @@ blake3 = "a1b9e797a5058f5264d276805aef5643b7ea460916e491a0098ba32d87f1519e" patches = ["redox.patch"] [build] -dependencies = [ - "libiconv", - "liborbital", - "libpng", - "pixman", - "sdl1", - "zlib", +dependencies = ["libiconv", "liborbital", "libpng", "pixman", "sdl1", "zlib"] +template = "cmake" +cmakeflags = [ + "-DBUILD_QT=OFF", + "-DBUILD_SHARED=ON", + "-DBUILD_STATIC=OFF", + "-DUSE_SQLITE3=OFF", + "-DUSE_DEBUGGERS=OFF", + "-DBUILD_SDL=ON", + "-DSDL_VERSION=1.2", + "-DSDL_LIBRARY=-lSDL -lorbital", ] -template = "custom" -script = """ -DYNAMIC_INIT -cookbook_cmake \ - -DBUILD_QT=OFF \ - -DBUILD_SHARED=ON \ - -DBUILD_STATIC=OFF \ - -DUSE_SQLITE3=OFF \ - -DUSE_DEBUGGERS=OFF \ - -DBUILD_SDL=ON \ - -DSDL_VERSION="1.2" \ - -DSDL_LIBRARY="-lSDL -lorbital" -""" diff --git a/recipes/net/download/wget/recipe.toml b/recipes/net/download/wget/recipe.toml index dd4f52e6..fb2d6ab4 100644 --- a/recipes/net/download/wget/recipe.toml +++ b/recipes/net/download/wget/recipe.toml @@ -1,13 +1,10 @@ [source] tar = "https://ftp.gnu.org/gnu/wget/wget-1.21.4.tar.gz" [build] -template = "custom" dependencies = [ "openssl1", ] -script = """ -COOKBOOK_CONFIGURE_FLAGS+=( - --with-ssl=openssl -) -cookbook_configure -""" +template = "configure" +configureflags = [ + "--with-ssl=openssl" +] diff --git a/recipes/wip/net/download/youtube-tui/recipe.toml b/recipes/wip/net/download/youtube-tui/recipe.toml index 83406f0e..5306f25d 100644 --- a/recipes/wip/net/download/youtube-tui/recipe.toml +++ b/recipes/wip/net/download/youtube-tui/recipe.toml @@ -2,10 +2,8 @@ [source] git = "https://github.com/Siriusmart/youtube-tui" [build] -template = "custom" +template = "cargo" +cargoflags = "--no-default-features" dependencies = [ "openssl1", ] -script = """ -cookbook_cargo --no-default-features -""" diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 4002f712..6d37332d 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1014,6 +1014,17 @@ do done "#; + let flags_fn = |name, flags: &Vec| { + format!( + "{name}+=(\n{}\n)\n", + flags + .iter() + .map(|s| format!(" \"{s}\"")) + .collect::>() + .join("\n") + ) + }; + //TODO: better integration with redoxer (library instead of binary) //TODO: configurable target //TODO: Add more configurability, convert scripts to Rust? @@ -1027,7 +1038,18 @@ done package_path.as_deref().unwrap_or(".") ) } - BuildKind::Configure => "cookbook_configure".to_owned(), + BuildKind::Configure { configureflags } => format!( + "DYNAMIC_INIT\n{}cookbook_configure", + flags_fn("COOKBOOK_CONFIGURE_FLAGS", configureflags), + ), + BuildKind::Cmake { cmakeflags } => format!( + "DYNAMIC_INIT\n{}cookbook_cmake", + flags_fn("COOKBOOK_CMAKE_FLAGS", cmakeflags), + ), + BuildKind::Meson { mesonflags } => format!( + "DYNAMIC_INIT\n{}cookbook_meson", + flags_fn("COOKBOOK_MESON_FLAGS", mesonflags), + ), BuildKind::Custom { script } => script.clone(), BuildKind::None => "".to_owned(), }; diff --git a/src/recipe.rs b/src/recipe.rs index 4341551d..e6252811 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -71,13 +71,27 @@ pub enum BuildKind { Cargo { #[serde(default)] package_path: Option, - #[serde(default)] cargoflags: String, }, /// Will build and install using configure and make #[serde(rename = "configure")] - Configure, + Configure { + #[serde(default)] + configureflags: Vec, + }, + /// Will build and install using cmake + #[serde(rename = "cmake")] + Cmake { + #[serde(default)] + cmakeflags: Vec, + }, + /// Will build and install using meson + #[serde(rename = "meson")] + Meson { + #[serde(default)] + mesonflags: Vec, + }, /// Will build and install using custom commands #[serde(rename = "custom")] Custom { script: String }, From 3a53c6abbb2a2881316ff2dce38ab129283b287f Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Wed, 20 Aug 2025 12:54:12 +0000 Subject: [PATCH 2757/3180] Update openssh patches --- recipes/wip/ssh/openssh/recipe.toml | 13 +- recipes/wip/ssh/openssh/redox.patch | 461 ++++++++++++++++++++++------ 2 files changed, 374 insertions(+), 100 deletions(-) diff --git a/recipes/wip/ssh/openssh/recipe.toml b/recipes/wip/ssh/openssh/recipe.toml index 4d7261da..26ed0f91 100644 --- a/recipes/wip/ssh/openssh/recipe.toml +++ b/recipes/wip/ssh/openssh/recipe.toml @@ -1,13 +1,20 @@ -#TODO update the patch to match the current version -#TODO does the patch is still needed? +#TODO compiled but not tested +#TODO lack of utmpx.h and resolv.h, expect dns not working +#TODO maybe actually implement utmpx.h in relibc? [source] tar = "https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz" patches = [ "redox.patch", ] [build] -template = "configure" +template = "custom" dependencies = [ "openssl1", "zlib", ] +script = """ +DYNAMIC_INIT +cookbook_configure +mv "${COOKBOOK_STAGE}"/usr/sbin/sshd "${COOKBOOK_STAGE}"/usr/bin/sshd +rmdir "${COOKBOOK_STAGE}"/usr/sbin +""" diff --git a/recipes/wip/ssh/openssh/redox.patch b/recipes/wip/ssh/openssh/redox.patch index f19001f7..e1b43cae 100644 --- a/recipes/wip/ssh/openssh/redox.patch +++ b/recipes/wip/ssh/openssh/redox.patch @@ -1,138 +1,405 @@ -diff -ruwN source/channels.c source-new/channels.c ---- source/channels.c 2018-10-16 18:01:20.000000000 -0600 -+++ source-new/channels.c 2019-01-15 21:01:12.203686148 -0700 -@@ -1865,10 +1865,10 @@ - fatal(":%s: channel %d: no remote id", __func__, c->self); - /* for rdynamic the OPEN_CONFIRMATION has been sent already */ - isopen = (c->type == SSH_CHANNEL_RDYNAMIC_FINISH); -- if (getsockopt(c->sock, SOL_SOCKET, SO_ERROR, &err, &sz) < 0) { -- err = errno; -- error("getsockopt SO_ERROR failed"); -- } -+ // if (getsockopt(c->sock, SOL_SOCKET, SO_ERROR, &err, &sz) < 0) { -+ // err = errno; -+ // error("getsockopt SO_ERROR failed"); -+ // } - if (err == 0) { - debug("channel %d: connected to %s port %d", - c->self, c->connect_ctx.host, c->connect_ctx.port); -diff -ruwN source/config.sub source-new/config.sub ---- source/config.sub 2018-10-16 18:01:20.000000000 -0600 -+++ source-new/config.sub 2019-01-15 19:39:26.234492329 -0700 -@@ -1407,7 +1407,7 @@ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ -- | -onefs* | -tirtos* | -phoenix*) -+ | -onefs* | -tirtos* | -phoenix* | -redox*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) -diff -ruwN source/openbsd-compat/bindresvport.c source-new/openbsd-compat/bindresvport.c ---- source/openbsd-compat/bindresvport.c 2018-10-16 18:01:20.000000000 -0600 -+++ source-new/openbsd-compat/bindresvport.c 2019-01-15 20:46:06.879804135 -0700 -@@ -42,6 +42,10 @@ - #include - #include +diff -ruwN source/defines.h source-new/defines.h +--- source/defines.h 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/defines.h 2025-08-20 13:37:45.820728226 +0700 +@@ -52,6 +52,18 @@ + #define IPPORT_RESERVED 0 + #endif +#ifndef IPPORT_RESERVED +#define IPPORT_RESERVED 1024 +#endif + - #define STARTPORT 600 - #define ENDPORT (IPPORT_RESERVED - 1) - #define NPORTS (ENDPORT - STARTPORT + 1) -diff -ruwN source/openbsd-compat/bsd-getpeereid.c source-new/openbsd-compat/bsd-getpeereid.c ---- source/openbsd-compat/bsd-getpeereid.c 2018-10-16 18:01:20.000000000 -0600 -+++ source-new/openbsd-compat/bsd-getpeereid.c 2019-01-15 20:43:12.410583244 -0700 -@@ -23,7 +23,7 @@ - - #include - --#if defined(SO_PEERCRED) -+#if defined(SO_PEERCRED) && !defined(__redox__) - int - getpeereid(int s, uid_t *euid, gid_t *gid) - { -diff -ruwN source/openbsd-compat/bsd-misc.c source-new/openbsd-compat/bsd-misc.c ---- source/openbsd-compat/bsd-misc.c 2018-10-16 18:01:20.000000000 -0600 -+++ source-new/openbsd-compat/bsd-misc.c 2019-01-15 20:28:46.619332501 -0700 -@@ -25,6 +25,9 @@ - # include ++#ifndef IN_LOOPBACKNET ++#define IN_LOOPBACKNET 127 ++#endif ++ ++#ifndef MAXDNAME ++#define MAXDNAME 256 ++#endif ++ + /* + * Definitions for IP type of service (ip_tos) + */ +@@ -454,19 +466,21 @@ + # define _PATH_DEVNULL "/dev/null" #endif -+#if defined(__redox__) -+#include +-/* user may have set a different path */ +-#if defined(_PATH_MAILDIR) && defined(MAIL_DIRECTORY) +-# undef _PATH_MAILDIR +-#endif /* defined(_PATH_MAILDIR) && defined(MAIL_DIRECTORY) */ +- +-#ifdef MAIL_DIRECTORY +-# define _PATH_MAILDIR MAIL_DIRECTORY ++#ifndef _PATH_MAILDIR ++# define _PATH_MAILDIR "/var/mail" + #endif + + #ifndef _PATH_NOLOGIN + # define _PATH_NOLOGIN "/etc/nologin" + #endif + ++#ifndef ST_RDONLY ++#define ST_RDONLY 1 +#endif - #include - #include ++#ifndef ST_NOSUID ++#define ST_NOSUID 2 ++#endif ++ + /* Define this to be the path of the xauth program. */ + #ifdef XAUTH_PATH + #define _PATH_XAUTH XAUTH_PATH +diff -ruwN source/hostfile.c source-new/hostfile.c +--- source/hostfile.c 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/hostfile.c 2025-08-20 11:51:28.964103232 +0700 +@@ -44,7 +44,9 @@ + #include + + #include ++#ifndef __redox__ + #include ++#endif + #include + #include #include +diff -ruwN source/loginrec.c source-new/loginrec.c +--- source/loginrec.c 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/loginrec.c 2025-08-20 13:43:02.970560664 +0700 +@@ -1033,7 +1033,7 @@ + return (0); + } + # else +- if (!utmpx_write_direct(li, &ut)) { ++ if (!utmpx_write_direct(li, &utx)) { + logit("%s: utmp_write_direct() failed", __func__); + return (0); + } +diff -ruwN source/loginrec.h source-new/loginrec.h +--- source/loginrec.h 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/loginrec.h 2025-08-20 13:39:08.570682776 +0700 +@@ -30,6 +30,7 @@ + **/ + + #include "includes.h" ++#include "openbsd-compat/utmpx.h" + + struct ssh; + +diff -ruwN source/openbsd-compat/bsd-statvfs.h source-new/openbsd-compat/bsd-statvfs.h +--- source/openbsd-compat/bsd-statvfs.h 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/openbsd-compat/bsd-statvfs.h 2025-08-20 13:37:42.000730245 +0700 +@@ -37,13 +37,6 @@ + typedef unsigned long fsfilcnt_t; + #endif + +-#ifndef ST_RDONLY +-#define ST_RDONLY 1 +-#endif +-#ifndef ST_NOSUID +-#define ST_NOSUID 2 +-#endif +- + /* as defined in IEEE Std 1003.1, 2004 Edition */ + struct statvfs { + unsigned long f_bsize; /* File system block size. */ diff -ruwN source/openbsd-compat/getrrsetbyname.c source-new/openbsd-compat/getrrsetbyname.c ---- source/openbsd-compat/getrrsetbyname.c 2018-10-16 18:01:20.000000000 -0600 -+++ source-new/openbsd-compat/getrrsetbyname.c 2019-01-15 20:57:20.248721738 -0700 -@@ -47,7 +47,7 @@ +--- source/openbsd-compat/getrrsetbyname.c 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/openbsd-compat/getrrsetbyname.c 2025-08-20 13:51:15.020299084 +0700 +@@ -67,6 +67,52 @@ + #endif + #define _THREAD_PRIVATE(a,b,c) (c) - #include "includes.h" ++#ifdef __redox__ ++ ++#include ++#include ++ ++/* ++ * Minimalist replacement for for systems that lack it, ++ * such as Redox OS. This provides the basic structures needed by ++ * the OpenSSH compatibility layer. ++ */ ++ ++// Define necessary constants ++#define MAXNS 3 /* max # name servers we'll track */ ++#define MAXDNSRCH 6 /* max # domains in search path */ ++#define MAXRESOLVSORT 10 /* number of nets to sort on */ ++#define MAXDNAME 256 /* max length of a domain name */ ++ ++/* ++ * A simplified, portable version of the resolver state structure. ++ * Glibc-specific fields, hooks, and complex unions have been removed. ++ */ ++struct __res_state { ++ int retrans; /* retransmission time interval */ ++ int retry; /* number of times to retransmit */ ++ unsigned long options; /* option flags */ ++ int nscount; /* number of name servers */ ++ struct sockaddr_in nsaddr_list[MAXNS]; /* address of name servers */ ++ unsigned short id; /* current message id */ ++ char *dnsrch[MAXDNSRCH + 1]; /* components of domain to search */ ++ char defdname[MAXDNAME]; /* default domain name */ ++ ++ struct { ++ struct in_addr addr; ++ uint32_t mask; ++ } sort_list[MAXRESOLVSORT]; ++ ++ int res_h_errno; /* last error code for this context */ ++ ++ // Simplified bitfields, removing glibc internals ++ unsigned ndots : 4; /* threshold for initial abs. query */ ++ unsigned nsort : 4; /* number of elements in sort_list[] */ ++}; ++ ++typedef struct __res_state *res_state; ++#endif /* __redox */ ++ + #ifndef HAVE__RES_EXTERN + struct __res_state _res; + #endif +@@ -167,6 +213,24 @@ + struct dns_rr *next; + }; --#if !defined (HAVE_GETRRSETBYNAME) && !defined (HAVE_LDNS) -+#if !defined (HAVE_GETRRSETBYNAME) && !defined (HAVE_LDNS) && !defined(__redox__) ++#ifdef __redox__ ++typedef struct { ++ uint16_t id; ++ uint8_t rd : 1; ++ uint8_t tc : 1; ++ uint8_t aa : 1; ++ uint8_t opcode : 4; ++ uint8_t qr : 1; ++ uint8_t rcode : 4; ++ uint8_t z : 3; ++ uint8_t ra : 1; ++ uint16_t qdcount; ++ uint16_t ancount; ++ uint16_t nscount; ++ uint16_t arcount; ++} HEADER; ++#endif ++ + struct dns_response { + HEADER header; + struct dns_query *query; +@@ -221,10 +285,10 @@ + } - #include - #include + /* initialize resolver */ +- if ((_resp->options & RES_INIT) == 0 && res_init() == -1) { ++ // if (res_init() == -1) { + result = ERRSET_FAIL; + goto fail; +- } ++ // } + + #ifdef DEBUG + _resp->options |= RES_DEBUG; +@@ -482,12 +546,12 @@ + prev->next = curr; + + /* name */ +- length = dn_expand(answer, answer + size, *cp, name, +- sizeof(name)); +- if (length < 0) { ++ // length = dn_expand(answer, answer + size, *cp, name, ++ // sizeof(name)); ++ // if (length < 0) { + free_dns_query(head); + return (NULL); +- } ++ // } + curr->name = strdup(name); + if (curr->name == NULL) { + free_dns_query(head); +@@ -542,12 +606,12 @@ + prev->next = curr; + + /* name */ +- length = dn_expand(answer, answer + size, *cp, name, +- sizeof(name)); +- if (length < 0) { ++ // length = dn_expand(answer, answer + size, *cp, name, ++ // sizeof(name)); ++ // if (length < 0) { + free_dns_rr(head); + return (NULL); +- } ++ // } + curr->name = strdup(name); + if (curr->name == NULL) { + free_dns_rr(head); diff -ruwN source/openbsd-compat/getrrsetbyname.h source-new/openbsd-compat/getrrsetbyname.h ---- source/openbsd-compat/getrrsetbyname.h 2018-10-16 18:01:20.000000000 -0600 -+++ source-new/openbsd-compat/getrrsetbyname.h 2019-01-15 19:54:39.564320719 -0700 -@@ -50,7 +50,7 @@ - - #include "includes.h" - --#ifndef HAVE_GETRRSETBYNAME -+#if !defined(HAVE_GETRRSETBYNAME) && !defined(__redox__) +--- source/openbsd-compat/getrrsetbyname.h 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/openbsd-compat/getrrsetbyname.h 2025-08-20 11:51:00.744118526 +0700 +@@ -54,9 +54,13 @@ #include #include ++#ifndef __redox__ + #include ++#endif + #include ++#ifndef __redox__ + #include ++#endif + + #ifndef HFIXEDSZ + #define HFIXEDSZ 12 +diff -ruwN source/openbsd-compat/inet_ntop.c source-new/openbsd-compat/inet_ntop.c +--- source/openbsd-compat/inet_ntop.c 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/openbsd-compat/inet_ntop.c 2025-08-20 11:39:15.244488902 +0700 +@@ -26,7 +26,9 @@ + #include + #include + #include ++#ifndef __redox__ + #include ++#endif + #include + #include + #include diff -ruwN source/openbsd-compat/openbsd-compat.h source-new/openbsd-compat/openbsd-compat.h ---- source/openbsd-compat/openbsd-compat.h 2018-10-16 18:01:20.000000000 -0600 -+++ source-new/openbsd-compat/openbsd-compat.h 2019-01-15 20:14:24.316498869 -0700 -@@ -36,6 +36,10 @@ +--- source/openbsd-compat/openbsd-compat.h 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/openbsd-compat/openbsd-compat.h 2025-08-20 13:15:22.721439992 +0700 +@@ -36,6 +36,8 @@ #include /* for wchar_t */ -+#if defined(__redox__) -+#include -+#endif ++#include "getopt.h" + /* OpenBSD function replacements */ #include "base64.h" #include "sigact.h" +diff -ruwN source/openbsd-compat/utmpx.c source-new/openbsd-compat/utmpx.c +--- source/openbsd-compat/utmpx.c 1970-01-01 07:00:00.000000000 +0700 ++++ source-new/openbsd-compat/utmpx.c 2025-08-20 13:13:54.971486065 +0700 +@@ -0,0 +1,13 @@ ++#include "utmpx.h" ++#include // For NULL ++ ++#ifdef __redox__ ++ ++void endutxent(void) { /* Do nothing */ } ++struct utmpx *getutxent(void) { return NULL; } ++struct utmpx *getutxid(const struct utmpx *ut) { return NULL; } ++struct utmpx *getutxline(const struct utmpx *ut) { return NULL; } ++struct utmpx *pututxline(const struct utmpx *ut) { return NULL; } ++void setutxent(void) { /* Do nothing */ } ++ ++#endif +\ No newline at end of file +diff -ruwN source/openbsd-compat/utmpx.h source-new/openbsd-compat/utmpx.h +--- source/openbsd-compat/utmpx.h 1970-01-01 07:00:00.000000000 +0700 ++++ source-new/openbsd-compat/utmpx.h 2025-08-20 13:13:07.201511825 +0700 +@@ -0,0 +1,69 @@ ++#ifndef _COMPAT_UTMPX_H ++#define _COMPAT_UTMPX_H ++#ifdef __redox__ ++#include ++#include ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++/* ++ * This header provides a POSIX-compliant definition of the utmpx structure ++ * and related functions for systems that lack a native , such as Redox OS. ++ */ ++ ++// Define standard sizes for character arrays, based on common practice (e.g., Linux) ++#define UT_LINESIZE 32 ++#define UT_NAMESIZE 32 ++#define UT_HOSTSIZE 256 ++#define UT_IDSIZE 4 ++ ++/* ++ * The utmpx structure, containing user accounting information. ++ */ ++struct utmpx { ++ char ut_user[UT_NAMESIZE]; /* User login name */ ++ char ut_id[UT_IDSIZE]; /* Unspecified terminal id */ ++ char ut_line[UT_LINESIZE]; /* Device name of tty */ ++ pid_t ut_pid; /* Process ID */ ++ short ut_type; /* Type of entry */ ++ struct timeval ut_tv; /* Time entry was made */ ++ // Non-standard but very common fields, often needed for compatibility ++ char ut_host[UT_HOSTSIZE]; /* Host name for remote login */ ++ // Padding to align the structure, if necessary ++ char __padding[16]; ++}; ++ ++/* ++ * Symbolic constants for the ut_type field. ++ */ ++#define EMPTY 0 /* No valid user accounting information */ ++#define BOOT_TIME 1 /* Time of system boot */ ++#define OLD_TIME 2 /* Time when system clock changed */ ++#define NEW_TIME 3 /* Time after system clock changed */ ++#define USER_PROCESS 4 /* A user process */ ++#define INIT_PROCESS 5 /* A process spawned by the init process */ ++#define LOGIN_PROCESS 6 /* The session leader of a logged-in user */ ++#define DEAD_PROCESS 7 /* A session leader who has exited */ ++ ++/* ++ * Function prototypes for utmpx database manipulation. ++ * ++ * NOTE: These are stubs. Since Redox OS does not have a utmp/utmpx ++ * database, these functions won't have a real implementation. They ++ * are declared here to satisfy the linker. ++ */ ++void endutxent(void); ++struct utmpx *getutxent(void); ++struct utmpx *getutxid(const struct utmpx *); ++struct utmpx *getutxline(const struct utmpx *); ++struct utmpx *pututxline(const struct utmpx *); ++void setutxent(void); ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* __redox__ */ ++#endif /* _COMPAT_UTMPX_H */ +\ No newline at end of file +diff -ruwN source/regress/netcat.c source-new/regress/netcat.c +--- source/regress/netcat.c 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/regress/netcat.c 2025-08-20 11:50:49.164126484 +0700 +@@ -1384,7 +1384,9 @@ + #include + #include + #include ++#ifndef __redox__ + #include ++#endif + + #define SOCKS_PORT "1080" + #define HTTP_PROXY_PORT "3128" diff -ruwN source/sshbuf-misc.c source-new/sshbuf-misc.c ---- source/sshbuf-misc.c 2018-10-16 18:01:20.000000000 -0600 -+++ source-new/sshbuf-misc.c 2019-01-15 20:45:08.969783102 -0700 +--- source/sshbuf-misc.c 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/sshbuf-misc.c 2025-08-20 11:51:17.444108963 +0700 @@ -28,7 +28,9 @@ #include #include #include -+#if !defined(__redox__) ++#ifndef __redox__ #include +#endif #include + #include - #include "ssherr.h" -@@ -158,4 +160,3 @@ - r[l] = '\0'; - return r; - } -- diff -ruwN source/sshkey.c source-new/sshkey.c ---- source/sshkey.c 2018-10-16 18:01:20.000000000 -0600 -+++ source-new/sshkey.c 2019-01-15 20:13:21.629829281 -0700 -@@ -42,7 +42,9 @@ - #include +--- source/sshkey.c 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/sshkey.c 2025-08-20 11:50:36.114133643 +0700 +@@ -43,7 +43,9 @@ #include + #include #include -+#if !defined(__redox__) ++#ifndef __redox__ #include +#endif + #include #ifdef HAVE_UTIL_H #include - #endif /* HAVE_UTIL_H */ From 2b39e7caf25d17e9ee4ad49cd576b5cf2f91a527 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Fri, 22 Aug 2025 13:41:34 +0000 Subject: [PATCH 2758/3180] Set openttd as shallow --- recipes/games/openttd/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/games/openttd/recipe.toml b/recipes/games/openttd/recipe.toml index 4e2a61bc..e419e549 100644 --- a/recipes/games/openttd/recipe.toml +++ b/recipes/games/openttd/recipe.toml @@ -1,6 +1,7 @@ [source] git = "https://github.com/OpenTTD/OpenTTD.git" branch = "release/1.8" +shallow_clone = true patches = ["redox.patch"] [build] From 6d505a649c2bdfae8121c76094196f6cf3d9e96f Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sat, 23 Aug 2025 18:33:13 +0700 Subject: [PATCH 2759/3180] Push many recipes to be dynamically linked --- recipes/demos/gears/recipe.toml | 10 ++++++---- recipes/demos/glutin/recipe.toml | 5 ++--- recipes/demos/osdemo/recipe.toml | 2 +- recipes/demos/sdl2-gears/recipe.toml | 5 ++++- recipes/dev/llvm18/recipe.toml | 1 + recipes/emulators/dosbox/recipe.toml | 2 +- recipes/emulators/scummvm/recipe.toml | 2 +- recipes/games/neverball/recipe.toml | 1 - recipes/games/spacecadetpinball/recipe.toml | 9 ++------- recipes/gui/orbital/recipe.toml | 2 -- recipes/libs/atk/recipe.toml | 2 +- recipes/libs/ffmpeg6/recipe.toml | 6 +++++- recipes/libs/libogg/recipe.toml | 13 ++----------- recipes/libs/libpng/recipe.toml | 2 +- recipes/libs/libvorbis/recipe.toml | 13 ++----------- recipes/libs/ncurses/recipe.toml | 1 + recipes/libs/sdl1-mixer/recipe.toml | 1 + recipes/libs/sdl2-gfx/recipe.toml | 2 +- recipes/libs/sdl2-mixer/recipe.toml | 1 - recipes/net/curl/recipe.toml | 16 +++++----------- recipes/tests/vttest/recipe.toml | 2 +- recipes/tools/nano/recipe.toml | 2 +- recipes/wip/libs/other/libtheora/recipe.toml | 2 +- 23 files changed, 40 insertions(+), 62 deletions(-) diff --git a/recipes/demos/gears/recipe.toml b/recipes/demos/gears/recipe.toml index d74ce80f..b736d6b4 100644 --- a/recipes/demos/gears/recipe.toml +++ b/recipes/demos/gears/recipe.toml @@ -8,9 +8,11 @@ dependencies=[ ] template = "custom" script = """ -set -x -"${CXX}" -O2 -I "${COOKBOOK_SYSROOT}/usr/include" -L "${COOKBOOK_SYSROOT}/usr/lib" "${COOKBOOK_RECIPE}/gears.c" -o gears -static -lorbital $("${PKG_CONFIG}" --libs glu) -lz -set +x +DYNAMIC_INIT + +${CXX} -O2 -I "${COOKBOOK_SYSROOT}/usr/include" \ + $LDFLAGS "${COOKBOOK_RECIPE}/gears.c" \ + -o gears -lorbital $("${PKG_CONFIG}" --libs glu) -lz mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v "gears" "${COOKBOOK_STAGE}/usr/bin/gears" -""" \ No newline at end of file +""" diff --git a/recipes/demos/glutin/recipe.toml b/recipes/demos/glutin/recipe.toml index 1d3a416e..67dd944a 100644 --- a/recipes/demos/glutin/recipe.toml +++ b/recipes/demos/glutin/recipe.toml @@ -11,6 +11,7 @@ dependencies = [ "zlib" ] script = """ +DYNAMIC_INIT EXAMPLES=( window ) @@ -21,9 +22,7 @@ do --release \ --manifest-path "${COOKBOOK_SOURCE}/glutin_examples/Cargo.toml" \ --example "${example}" \ - -- \ - -L "${COOKBOK_SYSROOT}/lib" \ - -C link-args="-Wl,-Bstatic $("${TARGET}-pkg-config" --libs osmesa) -lz -lstdc++ -lc -lgcc" + -- -C link-args="$LDFLAGS $("${TARGET}-pkg-config" --libs osmesa) -lz -lstdc++ -lc -lgcc" mkdir -pv "${COOKBOOK_STAGE}/bin" cp -v "target/${TARGET}/release/examples/${example}" "${COOKBOOK_STAGE}/bin/glutin_${example}" done diff --git a/recipes/demos/osdemo/recipe.toml b/recipes/demos/osdemo/recipe.toml index f400a6f3..3fd27e84 100644 --- a/recipes/demos/osdemo/recipe.toml +++ b/recipes/demos/osdemo/recipe.toml @@ -9,7 +9,7 @@ dependencies = [ ] script = """ cp "${COOKBOOK_SOURCE}/../osdemo.c" ./osdemo.c -"${CXX}" -O2 -I "${COOKBOOK_SYSROOT}/include" -L "${COOKBOOK_SYSROOT}/lib" osdemo.c -o osdemo -static -lorbital $("${PKG_CONFIG}" --libs glu) -lz +${CXX} -O2 -I "${COOKBOOK_SYSROOT}/include" -L "${COOKBOOK_SYSROOT}/lib" osdemo.c -o osdemo -static -lorbital $("${PKG_CONFIG}" --libs glu) -lz mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v "osdemo" "${COOKBOOK_STAGE}/usr/bin/osdemo" """ diff --git a/recipes/demos/sdl2-gears/recipe.toml b/recipes/demos/sdl2-gears/recipe.toml index 49127066..7c582e98 100644 --- a/recipes/demos/sdl2-gears/recipe.toml +++ b/recipes/demos/sdl2-gears/recipe.toml @@ -16,9 +16,12 @@ dependencies = [ "zlib" ] script = """ +DYNAMIC_INIT cp "${COOKBOOK_SOURCE}/../gears.c" ./gears.c rsync -av --delete --exclude='.git' "${COOKBOOK_SOURCE}/../assets" ./assets -"${CXX}" -O2 -I "${COOKBOOK_SYSROOT}/include" -L "${COOKBOOK_SYSROOT}/lib" gears.c -o sdl2_gears -dynamic -lSDL2_image -lSDL2_mixer -lSDL2_ttf -lSDL2 -lorbital $("${PKG_CONFIG}" --libs osmesa) -lfreetype -lpng -ljpeg -lvorbisfile -lvorbis -logg -lz +${CXX} -O2 -I "${COOKBOOK_SYSROOT}/include" $LDFLAGS gears.c -o sdl2_gears \ + -dynamic -lSDL2_image -lSDL2_mixer -lSDL2_ttf -lSDL2 -lorbital \ + $("${PKG_CONFIG}" --libs osmesa) -lfreetype -lpng -ljpeg -lvorbisfile -lvorbis -logg -lz rm -rf "${COOKBOOK_STAGE}/usr/games/sdl2_gears" mkdir -pv "${COOKBOOK_STAGE}/usr/games/sdl2_gears" cp -v "sdl2_gears" "${COOKBOOK_STAGE}/usr/games/sdl2_gears/sdl2_gears" diff --git a/recipes/dev/llvm18/recipe.toml b/recipes/dev/llvm18/recipe.toml index d6cd8458..938511e0 100644 --- a/recipes/dev/llvm18/recipe.toml +++ b/recipes/dev/llvm18/recipe.toml @@ -2,6 +2,7 @@ git = "https://gitlab.redox-os.org/redox-os/llvm-project.git" upstream = "https://github.com/rust-lang/llvm-project.git" branch = "redox-2024-05-11" +shallow_clone = true [build] template = "custom" diff --git a/recipes/emulators/dosbox/recipe.toml b/recipes/emulators/dosbox/recipe.toml index e3cf69f1..c93ec9bd 100644 --- a/recipes/emulators/dosbox/recipe.toml +++ b/recipes/emulators/dosbox/recipe.toml @@ -4,7 +4,7 @@ blake3 = "8bc50ffdba20579fb3080a0dca32cb939c8a3c19259aed026482c6ac069b0007" patches = ["01_redox.patch"] script = """ ./autogen.sh -wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +GNU_CONFIG_GET config.sub """ [build] diff --git a/recipes/emulators/scummvm/recipe.toml b/recipes/emulators/scummvm/recipe.toml index 0ec2f005..db6cd35c 100644 --- a/recipes/emulators/scummvm/recipe.toml +++ b/recipes/emulators/scummvm/recipe.toml @@ -3,7 +3,7 @@ tar = "https://downloads.scummvm.org/frs/scummvm/2.0.0/scummvm-2.0.0.tar.xz" blake3 = "02e6791fd43ad3cb4238c07d23350ca1459a0f692689e585dba1d46648f64327" patches = ["redox.patch"] script = """ -wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +GNU_CONFIG_GET config.sub """ [build] diff --git a/recipes/games/neverball/recipe.toml b/recipes/games/neverball/recipe.toml index c621dcff..880c8b0c 100644 --- a/recipes/games/neverball/recipe.toml +++ b/recipes/games/neverball/recipe.toml @@ -29,7 +29,6 @@ env -i \ PKG_CONFIG="pkg-config" \ "${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" ENABLE_FS=stdio mapc sols -export LDFLAGS+="-L${COOKBOOK_SYSROOT}/lib -z noexecstack" "${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" ENABLE_FS=stdio ENABLE_NLS=0 clean-src "${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" ENABLE_FS=stdio ENABLE_NLS=0 neverball neverputt diff --git a/recipes/games/spacecadetpinball/recipe.toml b/recipes/games/spacecadetpinball/recipe.toml index 384f7852..d0d3857e 100644 --- a/recipes/games/spacecadetpinball/recipe.toml +++ b/recipes/games/spacecadetpinball/recipe.toml @@ -16,17 +16,12 @@ dependencies = [ "zlib", ] script = """ -COOKBOOK_CONFIGURE="cmake" +DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_VERBOSE_MAKEFILE=On - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_INSTALL_PREFIX="/usr" -DSDL2_INCLUDE_DIR="${COOKBOOK_SYSROOT}/include/SDL2" -DSDL2_LIBRARY="-lSDL2_mixer -lvorbisfile -lvorbis -logg -lSDL2 -lorbital $("${TARGET}-pkg-config" --libs osmesa)" -DSDL2_MIXER_INCLUDE_DIR="${COOKBOOK_SYSROOT}/include/SDL2" -DSDL2_MIXER_LIBRARY="SDL2_mixer" - "${COOKBOOK_SOURCE}" ) -cookbook_configure +cookbook_cmake """ diff --git a/recipes/gui/orbital/recipe.toml b/recipes/gui/orbital/recipe.toml index 0ae660fd..b1a4a819 100644 --- a/recipes/gui/orbital/recipe.toml +++ b/recipes/gui/orbital/recipe.toml @@ -1,5 +1,3 @@ -[source] -git = "https://gitlab.redox-os.org/redox-os/orbital.git" [build] template = "cargo" diff --git a/recipes/libs/atk/recipe.toml b/recipes/libs/atk/recipe.toml index a0d1185f..6ad310a1 100644 --- a/recipes/libs/atk/recipe.toml +++ b/recipes/libs/atk/recipe.toml @@ -2,7 +2,7 @@ tar = "https://download.gnome.org/sources/atk/2.38/atk-2.38.0.tar.xz" blake3 = "cbc1b7ba03009ee5cc0e646d8a86117e0d65bf8d105f2e8714fbde0299a8012e" script = """ -wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +GNU_CONFIG_GET config.sub """ [build] diff --git a/recipes/libs/ffmpeg6/recipe.toml b/recipes/libs/ffmpeg6/recipe.toml index b370ea4f..3808c2f9 100644 --- a/recipes/libs/ffmpeg6/recipe.toml +++ b/recipes/libs/ffmpeg6/recipe.toml @@ -16,14 +16,18 @@ dependencies = [ "zlib", ] script = """ +DYNAMIC_INIT + ARCH="${TARGET%%-*}" COOKBOOK_CONFIGURE_FLAGS=( --enable-cross-compile --target-os=redox --arch="${ARCH}" --cross_prefix="${TARGET}-" - --prefix=/ + --prefix=/usr --disable-doc + --enable-shared + --disable-static --disable-network --enable-sdl2 --enable-zlib diff --git a/recipes/libs/libogg/recipe.toml b/recipes/libs/libogg/recipe.toml index f0dcf406..4d35c4c0 100644 --- a/recipes/libs/libogg/recipe.toml +++ b/recipes/libs/libogg/recipe.toml @@ -6,18 +6,9 @@ patches = [ ] script = """ DYNAMIC_INIT +GNU_CONFIG_GET config.sub autotools_recursive_regenerate """ [build] -template = "custom" -script = """ -DYNAMIC_INIT -COOKBOOK_CONFIGURE_FLAGS=( - --host="${GNU_TARGET}" - --prefix="/usr" - --enable-shared - --enable-static -) -cookbook_configure -""" +template = "configure" diff --git a/recipes/libs/libpng/recipe.toml b/recipes/libs/libpng/recipe.toml index 3fedf1c5..d516a857 100644 --- a/recipes/libs/libpng/recipe.toml +++ b/recipes/libs/libpng/recipe.toml @@ -4,7 +4,7 @@ blake3 = "36f4bbb48c70975116b00ab0cff577931b96f703b2774ac3b33131d001419435" script = """ DYNAMIC_INIT chmod +w config.sub -wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +GNU_CONFIG_GET config.sub autotools_recursive_regenerate """ diff --git a/recipes/libs/libvorbis/recipe.toml b/recipes/libs/libvorbis/recipe.toml index b3908c09..7cbeca05 100644 --- a/recipes/libs/libvorbis/recipe.toml +++ b/recipes/libs/libvorbis/recipe.toml @@ -3,21 +3,12 @@ tar = "https://github.com/xiph/vorbis/releases/download/v1.3.7/libvorbis-1.3.7.t blake3 = "c67f3f74ec26d93a5571c4404a64eb6e6587d7d77b46b552f7b410f5bc5b1f03" script = """ DYNAMIC_INIT +GNU_CONFIG_GET config.sub autotools_recursive_regenerate """ [build] -template = "custom" +template = "configure" dependencies = [ "libogg" ] -script = """ -DYNAMIC_INIT -COOKBOOK_CONFIGURE_FLAGS=( - --host="${GNU_TARGET}" - --prefix="/usr" - --enable-shared - --enable-static -) -cookbook_configure -""" diff --git a/recipes/libs/ncurses/recipe.toml b/recipes/libs/ncurses/recipe.toml index ed678dc3..ff2e3068 100644 --- a/recipes/libs/ncurses/recipe.toml +++ b/recipes/libs/ncurses/recipe.toml @@ -5,6 +5,7 @@ blake3 = "0d1c9fdf53c0ca4bd66ba707d49a079d2dd6f5a960cdec74a56e29952c4ffe73" [build] template = "custom" script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( --disable-db-install --disable-stripping diff --git a/recipes/libs/sdl1-mixer/recipe.toml b/recipes/libs/sdl1-mixer/recipe.toml index 3e19795a..59755cff 100644 --- a/recipes/libs/sdl1-mixer/recipe.toml +++ b/recipes/libs/sdl1-mixer/recipe.toml @@ -15,6 +15,7 @@ dependencies = [ ] template = "custom" script = """ +DYNAMIC_INIT export LIBS="-lvorbis -logg" COOKBOOK_CONFIGURE_FLAGS+=( --enable-music-ogg diff --git a/recipes/libs/sdl2-gfx/recipe.toml b/recipes/libs/sdl2-gfx/recipe.toml index 8ceefde4..bf4b621f 100644 --- a/recipes/libs/sdl2-gfx/recipe.toml +++ b/recipes/libs/sdl2-gfx/recipe.toml @@ -2,7 +2,7 @@ tar = "http://www.ferzkopp.net/Software/SDL2_gfx/SDL2_gfx-1.0.4.tar.gz" blake3 = "2e9bd2dc0f004349b51418f33219ebf5cd69f25ed0ba660373652a662cbb857c" script = """ -wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +GNU_CONFIG_GET config.sub """ [build] diff --git a/recipes/libs/sdl2-mixer/recipe.toml b/recipes/libs/sdl2-mixer/recipe.toml index 2c9d9b82..d73bd12e 100644 --- a/recipes/libs/sdl2-mixer/recipe.toml +++ b/recipes/libs/sdl2-mixer/recipe.toml @@ -28,6 +28,5 @@ COOKBOOK_CONFIGURE_FLAGS=( --disable-music-midi --disable-music-mod ) -set -x cookbook_configure """ diff --git a/recipes/net/curl/recipe.toml b/recipes/net/curl/recipe.toml index b09f3a22..229d7777 100644 --- a/recipes/net/curl/recipe.toml +++ b/recipes/net/curl/recipe.toml @@ -13,26 +13,20 @@ dependencies = [ ] script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ -wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" -# FIXME(andypython): dynamically compile +GNU_CONFIG_GET config.sub DYNAMIC_INIT autotools_recursive_regenerate COOKBOOK_CONFIGURE="./configure" -COOKBOOK_CONFIGURE_FLAGS=( - --build="$(cc -dumpmachine)" - --host="${TARGET}" - --prefix="" +COOKBOOK_CONFIGURE_FLAGS+=( --disable-ftp --disable-ipv6 --disable-ntlm-wb --disable-tftp --disable-threaded-resolver - --enable-shared - --enable-static --with-ca-path=/etc/ssl/certs - --with-nghttp2="${COOKBOOK_SYSROOT}" - --with-ssl="${COOKBOOK_SYSROOT}" - --with-zlib="${COOKBOOK_SYSROOT}" + --with-nghttp2 + --with-ssl + --with-zlib --without-libpsl ) cookbook_configure diff --git a/recipes/tests/vttest/recipe.toml b/recipes/tests/vttest/recipe.toml index 22716635..020c4192 100644 --- a/recipes/tests/vttest/recipe.toml +++ b/recipes/tests/vttest/recipe.toml @@ -3,7 +3,7 @@ tar = "https://invisible-island.net/archives/vttest/vttest-20140305.tgz" blake3 = "b515b9a5e1f1498ed99e1a1c172fbcfdf2b7a214e185bd2005cc994407ded89e" patches = ["redox.patch"] script = """ -wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +GNU_CONFIG_GET config.sub """ [build] diff --git a/recipes/tools/nano/recipe.toml b/recipes/tools/nano/recipe.toml index b5877656..875e01e7 100644 --- a/recipes/tools/nano/recipe.toml +++ b/recipes/tools/nano/recipe.toml @@ -6,7 +6,7 @@ dependencies = [ "ncurses", ] script = """ -export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" +DYNAMIC_INIT cookbook_configure """ diff --git a/recipes/wip/libs/other/libtheora/recipe.toml b/recipes/wip/libs/other/libtheora/recipe.toml index b03418d8..95db350e 100644 --- a/recipes/wip/libs/other/libtheora/recipe.toml +++ b/recipes/wip/libs/other/libtheora/recipe.toml @@ -2,7 +2,7 @@ [source] tar = "http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.bz2" script = """ -wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +GNU_CONFIG_GET config.sub """ [build] From f9d74ffc1ef6a4bc24b54dbcf81b6db47770304e Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 24 Aug 2025 00:06:21 +0700 Subject: [PATCH 2760/3180] Fix ffmpeg6 linking --- recipes/demos/osdemo/recipe.toml | 5 ++++- recipes/dev/llvm18/recipe.toml | 4 ---- recipes/dev/pkg-config/recipe.toml | 3 +-- recipes/libs/ffmpeg6/recipe.toml | 1 + recipes/libs/sdl2/recipe.toml | 11 ++++++----- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/recipes/demos/osdemo/recipe.toml b/recipes/demos/osdemo/recipe.toml index 3fd27e84..720f1315 100644 --- a/recipes/demos/osdemo/recipe.toml +++ b/recipes/demos/osdemo/recipe.toml @@ -8,8 +8,11 @@ dependencies = [ "zlib" ] script = """ +DYNAMIC_INIT + cp "${COOKBOOK_SOURCE}/../osdemo.c" ./osdemo.c -${CXX} -O2 -I "${COOKBOOK_SYSROOT}/include" -L "${COOKBOOK_SYSROOT}/lib" osdemo.c -o osdemo -static -lorbital $("${PKG_CONFIG}" --libs glu) -lz +${CXX} -O2 -I "${COOKBOOK_SYSROOT}/include" $LDFLAGS osdemo.c -o osdemo \ + -lorbital $("${PKG_CONFIG}" --libs glu) -lz mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v "osdemo" "${COOKBOOK_STAGE}/usr/bin/osdemo" """ diff --git a/recipes/dev/llvm18/recipe.toml b/recipes/dev/llvm18/recipe.toml index 938511e0..da8be3e4 100644 --- a/recipes/dev/llvm18/recipe.toml +++ b/recipes/dev/llvm18/recipe.toml @@ -31,8 +31,6 @@ case "${TARGET}" in ;; esac -export LDFLAGS="-Wl,-rpath-link,${COOKBOOK_SYSROOT}/lib $LDFLAGS" - COOKBOOK_CMAKE_FLAGS=( -DCMAKE_CXX_FLAGS="--std=gnu++11" -DBUILD_SHARED_LIBS=False @@ -68,7 +66,5 @@ COOKBOOK_CMAKE_FLAGS=( -DLLVM_ENABLE_PROJECTS="llvm" ) -set -x cookbook_cmake "${COOKBOOK_SOURCE}/llvm" -set +x """ diff --git a/recipes/dev/pkg-config/recipe.toml b/recipes/dev/pkg-config/recipe.toml index 5c87b753..0560e2da 100644 --- a/recipes/dev/pkg-config/recipe.toml +++ b/recipes/dev/pkg-config/recipe.toml @@ -2,7 +2,7 @@ tar = "https://pkg-config.freedesktop.org/releases/pkg-config-0.29.2.tar.gz" blake3 = "713372b09a1fafeec130dc9bf812a3880f2a90496af5d2194e508d91ccf667d0" script = """ -wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +GNU_CONFIG_GET config.sub """ [build] @@ -15,6 +15,5 @@ dependencies = [ template = "custom" script = """ DYNAMIC_INIT -export LIBS="-lpcre2-8" cookbook_configure """ diff --git a/recipes/libs/ffmpeg6/recipe.toml b/recipes/libs/ffmpeg6/recipe.toml index 3808c2f9..bc63a4ec 100644 --- a/recipes/libs/ffmpeg6/recipe.toml +++ b/recipes/libs/ffmpeg6/recipe.toml @@ -18,6 +18,7 @@ dependencies = [ script = """ DYNAMIC_INIT +export LDFLAGS="$LDFLAGS -lSDL2 -lorbital -lOSMesa -lstdc++" ARCH="${TARGET%%-*}" COOKBOOK_CONFIGURE_FLAGS=( --enable-cross-compile diff --git a/recipes/libs/sdl2/recipe.toml b/recipes/libs/sdl2/recipe.toml index c7550df6..9cc943ac 100644 --- a/recipes/libs/sdl2/recipe.toml +++ b/recipes/libs/sdl2/recipe.toml @@ -6,14 +6,15 @@ git = "https://gitlab.redox-os.org/redox-os/sdl2.git" template = "custom" dependencies = [ "liborbital", + "llvm18", "mesa", + "zlib", ] script = """ -COOKBOOK_CONFIGURE_FLAGS=( - --host="${TARGET}" - --prefix="/" +DYNAMIC_INIT +export LDFLAGS="$LDFLAGS -lorbital -lOSMesa -lstdc++" +COOKBOOK_CONFIGURE_FLAGS+=( --disable-pulseaudio - --disable-shared --disable-video-x11 --enable-audio --enable-dummyaudio @@ -24,5 +25,5 @@ COOKBOOK_CONFIGURE_FLAGS=( cookbook_configure # Hack to add OSMesa -sed -i "s/Requires:/Requires: osmesa >= 8.0.0/" "${COOKBOOK_STAGE}/lib/pkgconfig/sdl2.pc" +sed -i "s/Requires:/Requires: osmesa >= 8.0.0/" "${COOKBOOK_STAGE}/usr/lib/pkgconfig/sdl2.pc" """ From 63f23348aff2ddab12292f41a1dbe8b1ad82123d Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 24 Aug 2025 00:57:57 +0700 Subject: [PATCH 2761/3180] Set emus as dynamically linked --- recipes/dev/git/git.patch | 2 +- recipes/emulators/dosbox/recipe.toml | 5 +++-- recipes/emulators/scummvm/recipe.toml | 6 +++--- recipes/gui/orbital/recipe.toml | 2 ++ 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/recipes/dev/git/git.patch b/recipes/dev/git/git.patch index 6b79e055..0e20bc96 100644 --- a/recipes/dev/git/git.patch +++ b/recipes/dev/git/git.patch @@ -152,7 +152,7 @@ diff -ruwN git-2.13.1/git-compat-util.h source/git-compat-util.h + +#ifndef DEV_NULL +#if defined(__redox__) -+#define DEV_NULL "null:" ++#define DEV_NULL "/scheme/null" +#else +#define DEV_NULL "/dev/null" +#endif diff --git a/recipes/emulators/dosbox/recipe.toml b/recipes/emulators/dosbox/recipe.toml index c93ec9bd..b017ddda 100644 --- a/recipes/emulators/dosbox/recipe.toml +++ b/recipes/emulators/dosbox/recipe.toml @@ -14,13 +14,14 @@ dependencies = [ ] template = "custom" script = """ +DYNAMIC_INIT export CFLAGS="-I${COOKBOOK_SYSROOT}/include/SDL" export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/SDL" -export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib -static" +export LDFLAGS+=" -lorbital" COOKBOOK_CONFIGURE_FLAGS+=( --disable-opengl --disable-sdltest - --with-sdl-prefix="${COOKBOOK_SYSROOT}" + --with-sdl ) cookbook_configure diff --git a/recipes/emulators/scummvm/recipe.toml b/recipes/emulators/scummvm/recipe.toml index db6cd35c..fe8b377b 100644 --- a/recipes/emulators/scummvm/recipe.toml +++ b/recipes/emulators/scummvm/recipe.toml @@ -16,12 +16,12 @@ dependencies = [ "libpng", ] script = """ -export LDFLAGS="-static" +DYNAMIC_INIT -COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/configure" +export LDFLAGS+=" -lorbital" COOKBOOK_CONFIGURE_FLAGS=( --host="${TARGET}" - --prefix="" + --prefix="/usr" --with-sdl-prefix="${COOKBOOK_SYSROOT}" --with-freetype2-prefix="${COOKBOOK_SYSROOT}" --with-png-prefix="${COOKBOOK_SYSROOT}" diff --git a/recipes/gui/orbital/recipe.toml b/recipes/gui/orbital/recipe.toml index b1a4a819..0ae660fd 100644 --- a/recipes/gui/orbital/recipe.toml +++ b/recipes/gui/orbital/recipe.toml @@ -1,3 +1,5 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/orbital.git" [build] template = "cargo" From d4555857d6086ebcbc291d9f1d59408e360e0793 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 24 Aug 2025 08:28:53 -0600 Subject: [PATCH 2762/3180] Adjust prboom recipe --- recipes/games/prboom/01_redox.patch | 12 ------------ recipes/games/prboom/recipe.toml | 2 ++ 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/recipes/games/prboom/01_redox.patch b/recipes/games/prboom/01_redox.patch index 2971f07c..6318a409 100644 --- a/recipes/games/prboom/01_redox.patch +++ b/recipes/games/prboom/01_redox.patch @@ -1,15 +1,3 @@ -diff -burpN source-original/configure.ac source/configure.ac ---- source-original/configure.ac 2008-11-09 12:12:37.000000000 -0700 -+++ source/configure.ac 2024-09-07 10:06:36.540104562 -0600 -@@ -85,8 +85,6 @@ if test "$cross_compiling" != "yes"; the - fi - - dnl --- Header files, typedefs, structures --AC_TYPE_UID_T --AC_TYPE_SIZE_T - AC_DECL_SYS_SIGLIST - AC_HEADER_SYS_WAIT - AC_CHECK_HEADERS(unistd.h asm/byteorder.h sched.h) diff -burpN source-original/src/m_misc.c source/src/m_misc.c --- source-original/src/m_misc.c 2008-11-09 10:13:04.000000000 -0700 +++ source/src/m_misc.c 2024-09-07 10:09:06.890301682 -0600 diff --git a/recipes/games/prboom/recipe.toml b/recipes/games/prboom/recipe.toml index 3f2f49a0..efdb1314 100644 --- a/recipes/games/prboom/recipe.toml +++ b/recipes/games/prboom/recipe.toml @@ -27,6 +27,8 @@ COOKBOOK_CONFIGURE_FLAGS+=( --without-net --with-sdl-prefix="${COOKBOOK_SYSROOT}" ac_cv_lib_SDL_mixer_Mix_OpenAudio=yes + ac_cv_type_gid_t=yes + ac_cv_type_uid_t=yes ) cookbook_configure """ From 64d98ed781780580d2c7e0d15ed58b4c14366760 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 25 Aug 2025 15:51:37 -0600 Subject: [PATCH 2763/3180] Add rustconf 2025 presentation --- recipes/other/rustconf2025/recipe.toml | 9 +++++++++ recipes/tools/cosmic-reader/recipe.toml | 7 +++++-- 2 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 recipes/other/rustconf2025/recipe.toml diff --git a/recipes/other/rustconf2025/recipe.toml b/recipes/other/rustconf2025/recipe.toml new file mode 100644 index 00000000..7bd74811 --- /dev/null +++ b/recipes/other/rustconf2025/recipe.toml @@ -0,0 +1,9 @@ +[source] +git = "https://github.com/jackpot51/rustconf2025.git" + +[build] +template = "custom" +script = """ +mkdir -p "${COOKBOOK_STAGE}/home/user" +cp -v "${COOKBOOK_SOURCE}/"*.pdf "${COOKBOOK_STAGE}/home/user" +""" diff --git a/recipes/tools/cosmic-reader/recipe.toml b/recipes/tools/cosmic-reader/recipe.toml index a766062c..c65311e4 100644 --- a/recipes/tools/cosmic-reader/recipe.toml +++ b/recipes/tools/cosmic-reader/recipe.toml @@ -13,16 +13,19 @@ dependencies = [ ] script = """ DYNAMIC_INIT +export BINDGEN_EXTRA_CLANG_ARGS="--sysroot=${COOKBOOK_HOST_SYSROOT}/${GNU_TARGET} -I${COOKBOOK_HOST_SYSROOT}/${GNU_TARGET}/include" "${COOKBOOK_CARGO}" rustc \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ --release \ --bin cosmic-reader \ --no-default-features \ --features mupdf \ + --verbose \ -- \ - -C link-args="-lpng -lexpat" + -C link-args="-lpng -lexpat" \ + --verbose mkdir -pv "${COOKBOOK_STAGE}/usr/bin/" cp -v "target/${TARGET}/release/cosmic-reader" "${COOKBOOK_STAGE}/usr/bin/" mkdir -pv "${COOKBOOK_STAGE}/ui/apps" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/40_cosmic-reader" -""" \ No newline at end of file +""" From 0f282a5ee5d5d9fb29d423e093f219821fa95de4 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Wed, 27 Aug 2025 12:22:23 +0000 Subject: [PATCH 2764/3180] Disable rustpython update --- recipes/dev/rustpython/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/dev/rustpython/recipe.toml b/recipes/dev/rustpython/recipe.toml index d82595c2..608dfcaf 100644 --- a/recipes/dev/rustpython/recipe.toml +++ b/recipes/dev/rustpython/recipe.toml @@ -13,7 +13,6 @@ template = "custom" script = """ DYNAMIC_INIT -(cd "${COOKBOOK_SOURCE}" && bash scripts/redox/uncomment-cargo.sh && cargo update) export BUILDTIME_RUSTPYTHONPATH=/lib/rustpython export OPENSSL_DIR="${COOKBOOK_SYSROOT}" export ZLIB_STATIC=1 From 7f13e82986eca81f7498a89f11b8cdfde09c3bc0 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Wed, 27 Aug 2025 13:07:26 +0000 Subject: [PATCH 2765/3180] Use forked go source --- recipes/wip/dev/lang/go/01_redox.patch | 800 ------------------------- recipes/wip/dev/lang/go/recipe.toml | 43 +- 2 files changed, 14 insertions(+), 829 deletions(-) delete mode 100644 recipes/wip/dev/lang/go/01_redox.patch diff --git a/recipes/wip/dev/lang/go/01_redox.patch b/recipes/wip/dev/lang/go/01_redox.patch deleted file mode 100644 index aaa22459..00000000 --- a/recipes/wip/dev/lang/go/01_redox.patch +++ /dev/null @@ -1,800 +0,0 @@ -diff -ruwN source/src/cmd/dist/build.go source-new/src/cmd/dist/build.go ---- source/src/cmd/dist/build.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/dist/build.go 2025-07-20 23:50:47.312425484 +0700 -@@ -94,6 +94,7 @@ - "wasip1", - "linux", - "android", -+ "redox", - "solaris", - "freebsd", - "nacl", // keep; -@@ -764,7 +765,7 @@ - elem = "go_bootstrap" - } - link = []string{pathf("%s/link", tooldir)} -- if goos == "android" { -+ if goos == "android" || goos == "redox" { - link = append(link, "-buildmode=pie") - } - if goldflags != "" { -@@ -1020,7 +1021,7 @@ - if symabis != "" { - compile = append(compile, "-symabis", symabis) - } -- if goos == "android" { -+ if goos == "android" || goos == "redox" { - compile = append(compile, "-shared") - } - -@@ -1084,6 +1085,7 @@ - "linux": true, - "netbsd": true, - "openbsd": true, -+ "redox": true, - "solaris": true, - } - -@@ -1093,7 +1095,7 @@ - case "gc", "cmd_go_bootstrap", "go1.1": - return true - case "linux": -- return goos == "linux" || goos == "android" -+ return goos == "linux" || goos == "android" || goos == "redox" - case "solaris": - return goos == "solaris" || goos == "illumos" - case "darwin": -@@ -1118,7 +1120,7 @@ - name := filepath.Base(file) - excluded := func(list []string, ok string) bool { - for _, x := range list { -- if x == ok || (ok == "android" && x == "linux") || (ok == "illumos" && x == "solaris") || (ok == "ios" && x == "darwin") { -+ if x == ok || (ok == "android" && x == "linux") || (ok == "redox" && x == "linux") || (ok == "illumos" && x == "solaris") || (ok == "ios" && x == "darwin") { - continue - } - i := strings.Index(name, x) -@@ -1794,6 +1796,10 @@ - "android/amd64": true, - "android/arm": true, - "android/arm64": true, -+ "redox/386": true, -+ "redox/amd64": true, -+ "redox/arm64": true, -+ "redox/riscv64": true, - "ios/arm64": true, - "ios/amd64": true, - "js/wasm": false, -diff -ruwN source/src/cmd/go/go_test.go source-new/src/cmd/go/go_test.go ---- source/src/cmd/go/go_test.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/go/go_test.go 2025-07-20 23:50:47.312425484 +0700 -@@ -2081,7 +2081,7 @@ - tg.run(args...) - - switch runtime.GOOS { -- case "linux", "android", "freebsd": -+ case "linux", "android", "redox", "freebsd": - f, err := elf.Open(obj) - if err != nil { - t.Fatal(err) -diff -ruwN source/src/cmd/go/internal/modindex/build.go source-new/src/cmd/go/internal/modindex/build.go ---- source/src/cmd/go/internal/modindex/build.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/go/internal/modindex/build.go 2025-07-20 23:50:47.312425484 +0700 -@@ -873,6 +873,9 @@ - if ctxt.GOOS == "android" && name == "linux" { - return true - } -+ if ctxt.GOOS == "redox" && name == "linux" { -+ return true -+ } - if ctxt.GOOS == "illumos" && name == "solaris" { - return true - } -diff -ruwN source/src/cmd/go/internal/work/exec.go source-new/src/cmd/go/internal/work/exec.go ---- source/src/cmd/go/internal/work/exec.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/go/internal/work/exec.go 2025-07-20 23:50:47.312425484 +0700 -@@ -3056,7 +3056,7 @@ - dynobj := objdir + "_cgo_.o" - - ldflags := cgoLDFLAGS -- if (cfg.Goarch == "arm" && cfg.Goos == "linux") || cfg.Goos == "android" { -+ if (cfg.Goarch == "arm" && cfg.Goos == "linux") || (cfg.Goarch == "arm" && cfg.Goos == "redox") || cfg.Goos == "android" { - if !slices.Contains(ldflags, "-no-pie") { - // we need to use -pie for Linux/ARM to get accurate imported sym (added in https://golang.org/cl/5989058) - // this seems to be outdated, but we don't want to break existing builds depending on this (Issue 45940) -diff -ruwN source/src/cmd/go/internal/work/init.go source-new/src/cmd/go/internal/work/init.go ---- source/src/cmd/go/internal/work/init.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/go/internal/work/init.go 2025-07-20 23:50:47.312425484 +0700 -@@ -220,7 +220,7 @@ - codegenArg = "-fPIC" - } else { - switch cfg.Goos { -- case "linux", "android", "freebsd": -+ case "linux", "android", "redox", "freebsd": - codegenArg = "-shared" - case "windows": - // Do not add usual .exe suffix to the .dll file. -diff -ruwN source/src/cmd/go/testdata/script/cgo_suspect_flag_force_external.txt source-new/src/cmd/go/testdata/script/cgo_suspect_flag_force_external.txt ---- source/src/cmd/go/testdata/script/cgo_suspect_flag_force_external.txt 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/go/testdata/script/cgo_suspect_flag_force_external.txt 2025-08-03 00:53:55.626580074 +0700 -@@ -39,7 +39,7 @@ - ! stderr preferlinkext - env CGO_CFLAGS=-flto - go build -x -n -o dummy.exe ./noUseOfCgo --! stderr preferlinkext -+! stderr preferlinkextg - env CGO_CFLAGS= - - # Second build uses CGO, so we expect to see the token present in the -diff -ruwN source/src/cmd/internal/obj/x86/asm6.go source-new/src/cmd/internal/obj/x86/asm6.go ---- source/src/cmd/internal/obj/x86/asm6.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/internal/obj/x86/asm6.go 2025-08-03 01:50:35.376496054 +0700 -@@ -28,6 +28,13 @@ - // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - // THE SOFTWARE. - -+// ------------------- HELP NEEDED FOR REDOX ------------------- -+// We need to write the definition for obj files in Redox!!!!!!! -+// Yes, Redox is using ELF but that ELF is different with Linux -+// As of current implemention, it emits Linux binaries instead -+// Please continue your work in this file if you know how to do it -+// ------------------------------------------------------------- -+ - package x86 - - import ( -diff -ruwN source/src/cmd/internal/objabi/head.go source-new/src/cmd/internal/objabi/head.go ---- source/src/cmd/internal/objabi/head.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/internal/objabi/head.go 2025-07-20 23:50:47.312425484 +0700 -@@ -63,7 +63,7 @@ - *h = Hfreebsd - case "js": - *h = Hjs -- case "linux", "android": -+ case "linux", "android", "redox": - *h = Hlinux - case "netbsd": - *h = Hnetbsd -diff -ruwN source/src/cmd/link/internal/amd64/obj.go source-new/src/cmd/link/internal/amd64/obj.go ---- source/src/cmd/link/internal/amd64/obj.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/link/internal/amd64/obj.go 2025-08-03 01:04:51.706561825 +0700 -@@ -64,6 +64,7 @@ - ELF: ld.ELFArch{ - Linuxdynld: "/lib64/ld-linux-x86-64.so.2", - LinuxdynldMusl: "/lib/ld-musl-x86_64.so.1", -+ Redoxdynld: "/usr/lib/ld64.so.1", - Freebsddynld: "/libexec/ld-elf.so.1", - Openbsddynld: "/usr/libexec/ld.so", - Netbsddynld: "/libexec/ld.elf_so", -diff -ruwN source/src/cmd/link/internal/arm64/obj.go source-new/src/cmd/link/internal/arm64/obj.go ---- source/src/cmd/link/internal/arm64/obj.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/link/internal/arm64/obj.go 2025-08-03 01:03:56.606564078 +0700 -@@ -61,6 +61,7 @@ - - ELF: ld.ELFArch{ - Androiddynld: "/system/bin/linker64", -+ Redoxdynld: "/usr/lib/ld64.so.1", - Linuxdynld: "/lib/ld-linux-aarch64.so.1", - LinuxdynldMusl: "/lib/ld-musl-aarch64.so.1", - -diff -ruwN source/src/cmd/link/internal/ld/elf.go source-new/src/cmd/link/internal/ld/elf.go ---- source/src/cmd/link/internal/ld/elf.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/link/internal/ld/elf.go 2025-08-03 01:13:08.346551565 +0700 -@@ -197,6 +197,7 @@ - type ELFArch struct { - // TODO: Document these fields. - -+ Redoxdynld string - Androiddynld string - Linuxdynld string - LinuxdynldMusl string -@@ -204,6 +205,7 @@ - Netbsddynld string - Openbsddynld string - Dragonflydynld string -+ Redoxflydynld string - Solarisdynld string - - Reloc1 func(*Link, *OutBuf, *loader.Loader, loader.Sym, loader.ExtReloc, int, int64) bool -@@ -1939,6 +1941,11 @@ - if interpreter == "" { - Exitf("ELF interpreter not set") - } -+ } else if buildcfg.GOOS == "redox" { -+ interpreter = thearch.ELF.Redoxdynld -+ if interpreter == "" { -+ Exitf("ELF interpreter not set") -+ } - } else { - interpreter = thearch.ELF.Linuxdynld - // If interpreter does not exist, try musl instead. -diff -ruwN source/src/cmd/link/internal/riscv64/obj.go source-new/src/cmd/link/internal/riscv64/obj.go ---- source/src/cmd/link/internal/riscv64/obj.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/link/internal/riscv64/obj.go 2025-08-03 01:05:35.886560535 +0700 -@@ -38,6 +38,7 @@ - Machoreloc1: machoreloc1, - - ELF: ld.ELFArch{ -+ Redoxdynld: "/usr/lib/ld64.so.1", - Linuxdynld: "/lib/ld.so.1", - - Freebsddynld: "/usr/libexec/ld-elf.so.1", -diff -ruwN source/src/cmd/link/internal/x86/obj.go source-new/src/cmd/link/internal/x86/obj.go ---- source/src/cmd/link/internal/x86/obj.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/link/internal/x86/obj.go 2025-08-03 01:05:11.816561638 +0700 -@@ -59,6 +59,7 @@ - PEreloc1: pereloc1, - - ELF: ld.ELFArch{ -+ Redoxdynld: "/usr/lib/ld.so.1", - Linuxdynld: "/lib/ld-linux.so.2", - LinuxdynldMusl: "/lib/ld-musl-i386.so.1", - Freebsddynld: "/usr/libexec/ld-elf.so.1", -diff -ruwN source/src/cmd/vendor/golang.org/x/telemetry/internal/telemetry/dir.go source-new/src/cmd/vendor/golang.org/x/telemetry/internal/telemetry/dir.go ---- source/src/cmd/vendor/golang.org/x/telemetry/internal/telemetry/dir.go 2025-07-03 04:47:15.000000000 +0700 -`+++ source-new/src/cmd/vendor/golang.org/x/telemetry/internal/telemetry/dir.go 2025-07-20 23:50:47.312425484 +0700 -@@ -155,6 +155,7 @@ - runtime.GOOS == "openbsd" || // #60614 - runtime.GOOS == "solaris" || // #60968 #60970 - runtime.GOOS == "android" || // #60967 -+ runtime.GOOS == "redox" || // plz no - runtime.GOOS == "illumos" || // #65544 - // These platforms fundamentally can't be supported: - runtime.GOOS == "js" || // #60971 -diff -ruwN source/src/crypto/internal/sysrand/internal/seccomp/seccomp_linux.go source-new/src/crypto/internal/sysrand/internal/seccomp/seccomp_linux.go ---- source/src/crypto/internal/sysrand/internal/seccomp/seccomp_linux.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/crypto/internal/sysrand/internal/seccomp/seccomp_linux.go 2025-08-02 17:13:31.518836103 +0700 -@@ -2,6 +2,8 @@ - // Use of this source code is governed by a BSD-style - // license that can be found in the LICENSE file. - -+//go:build !linux -+ - package seccomp - - /* -diff -ruwN source/src/crypto/internal/sysrand/internal/seccomp/seccomp_unsupported.go source-new/src/crypto/internal/sysrand/internal/seccomp/seccomp_unsupported.go ---- source/src/crypto/internal/sysrand/internal/seccomp/seccomp_unsupported.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/crypto/internal/sysrand/internal/seccomp/seccomp_unsupported.go 2025-08-02 17:13:37.268835776 +0700 -@@ -2,7 +2,7 @@ - // Use of this source code is governed by a BSD-style - // license that can be found in the LICENSE file. - --//go:build !linux || !cgo -+//go:build !linux || !cgo || redox - - package seccomp - -diff -ruwN source/src/go/build/build.go source-new/src/go/build/build.go ---- source/src/go/build/build.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/go/build/build.go 2025-07-20 23:50:47.312425484 +0700 -@@ -1971,6 +1971,9 @@ - if ctxt.GOOS == "android" && name == "linux" { - return true - } -+ if ctxt.GOOS == "redox" && name == "linux" { -+ return true -+ } - if ctxt.GOOS == "illumos" && name == "solaris" { - return true - } -diff -ruwN source/src/internal/goos/gengoos.go source-new/src/internal/goos/gengoos.go ---- source/src/internal/goos/gengoos.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/gengoos.go 2025-07-20 23:50:47.312425484 +0700 -@@ -43,6 +43,7 @@ - var tags []string - if target == "linux" { - tags = append(tags, "!android") // must explicitly exclude android for linux -+ tags = append(tags, "!redox") // must explicitly exclude redox for linux - } - if target == "solaris" { - tags = append(tags, "!illumos") // must explicitly exclude illumos for solaris -diff -ruwN source/src/internal/goos/zgoos_aix.go source-new/src/internal/goos/zgoos_aix.go ---- source/src/internal/goos/zgoos_aix.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_aix.go 2025-07-20 23:50:47.312425484 +0700 -@@ -20,6 +20,7 @@ - const IsNetbsd = 0 - const IsOpenbsd = 0 - const IsPlan9 = 0 -+const IsRedox = 0 - const IsSolaris = 0 - const IsWasip1 = 0 - const IsWindows = 0 -diff -ruwN source/src/internal/goos/zgoos_android.go source-new/src/internal/goos/zgoos_android.go ---- source/src/internal/goos/zgoos_android.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_android.go 2025-07-20 23:50:47.312425484 +0700 -@@ -20,6 +20,7 @@ - const IsNetbsd = 0 - const IsOpenbsd = 0 - const IsPlan9 = 0 -+const IsRedox = 0 - const IsSolaris = 0 - const IsWasip1 = 0 - const IsWindows = 0 -diff -ruwN source/src/internal/goos/zgoos_darwin.go source-new/src/internal/goos/zgoos_darwin.go ---- source/src/internal/goos/zgoos_darwin.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_darwin.go 2025-07-20 23:50:47.312425484 +0700 -@@ -20,6 +20,7 @@ - const IsNetbsd = 0 - const IsOpenbsd = 0 - const IsPlan9 = 0 -+const IsRedox = 0 - const IsSolaris = 0 - const IsWasip1 = 0 - const IsWindows = 0 -diff -ruwN source/src/internal/goos/zgoos_dragonfly.go source-new/src/internal/goos/zgoos_dragonfly.go ---- source/src/internal/goos/zgoos_dragonfly.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_dragonfly.go 2025-07-20 23:50:47.312425484 +0700 -@@ -20,6 +20,7 @@ - const IsNetbsd = 0 - const IsOpenbsd = 0 - const IsPlan9 = 0 -+const IsRedox = 0 - const IsSolaris = 0 - const IsWasip1 = 0 - const IsWindows = 0 -diff -ruwN source/src/internal/goos/zgoos_freebsd.go source-new/src/internal/goos/zgoos_freebsd.go ---- source/src/internal/goos/zgoos_freebsd.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_freebsd.go 2025-07-20 23:50:47.312425484 +0700 -@@ -20,6 +20,7 @@ - const IsNetbsd = 0 - const IsOpenbsd = 0 - const IsPlan9 = 0 -+const IsRedox = 0 - const IsSolaris = 0 - const IsWasip1 = 0 - const IsWindows = 0 -diff -ruwN source/src/internal/goos/zgoos_hurd.go source-new/src/internal/goos/zgoos_hurd.go ---- source/src/internal/goos/zgoos_hurd.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_hurd.go 2025-07-20 23:50:47.312425484 +0700 -@@ -20,6 +20,7 @@ - const IsNetbsd = 0 - const IsOpenbsd = 0 - const IsPlan9 = 0 -+const IsRedox = 0 - const IsSolaris = 0 - const IsWasip1 = 0 - const IsWindows = 0 -diff -ruwN source/src/internal/goos/zgoos_illumos.go source-new/src/internal/goos/zgoos_illumos.go ---- source/src/internal/goos/zgoos_illumos.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_illumos.go 2025-07-20 23:50:47.312425484 +0700 -@@ -20,6 +20,7 @@ - const IsNetbsd = 0 - const IsOpenbsd = 0 - const IsPlan9 = 0 -+const IsRedox = 0 - const IsSolaris = 0 - const IsWasip1 = 0 - const IsWindows = 0 -diff -ruwN source/src/internal/goos/zgoos_ios.go source-new/src/internal/goos/zgoos_ios.go ---- source/src/internal/goos/zgoos_ios.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_ios.go 2025-07-20 23:50:47.322425484 +0700 -@@ -20,6 +20,7 @@ - const IsNetbsd = 0 - const IsOpenbsd = 0 - const IsPlan9 = 0 -+const IsRedox = 0 - const IsSolaris = 0 - const IsWasip1 = 0 - const IsWindows = 0 -diff -ruwN source/src/internal/goos/zgoos_js.go source-new/src/internal/goos/zgoos_js.go ---- source/src/internal/goos/zgoos_js.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_js.go 2025-07-20 23:50:47.322425484 +0700 -@@ -20,6 +20,7 @@ - const IsNetbsd = 0 - const IsOpenbsd = 0 - const IsPlan9 = 0 -+const IsRedox = 0 - const IsSolaris = 0 - const IsWasip1 = 0 - const IsWindows = 0 -diff -ruwN source/src/internal/goos/zgoos_linux.go source-new/src/internal/goos/zgoos_linux.go ---- source/src/internal/goos/zgoos_linux.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_linux.go 2025-07-20 23:50:47.322425484 +0700 -@@ -1,6 +1,6 @@ - // Code generated by gengoos.go using 'go generate'. DO NOT EDIT. - --//go:build !android && linux -+//go:build !android && !redox && linux - - package goos - -@@ -20,6 +20,7 @@ - const IsNetbsd = 0 - const IsOpenbsd = 0 - const IsPlan9 = 0 -+const IsRedox = 0 - const IsSolaris = 0 - const IsWasip1 = 0 - const IsWindows = 0 -diff -ruwN source/src/internal/goos/zgoos_netbsd.go source-new/src/internal/goos/zgoos_netbsd.go ---- source/src/internal/goos/zgoos_netbsd.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_netbsd.go 2025-07-20 23:50:47.322425484 +0700 -@@ -20,6 +20,7 @@ - const IsNetbsd = 1 - const IsOpenbsd = 0 - const IsPlan9 = 0 -+const IsRedox = 0 - const IsSolaris = 0 - const IsWasip1 = 0 - const IsWindows = 0 -diff -ruwN source/src/internal/goos/zgoos_openbsd.go source-new/src/internal/goos/zgoos_openbsd.go ---- source/src/internal/goos/zgoos_openbsd.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_openbsd.go 2025-07-20 23:50:47.322425484 +0700 -@@ -20,6 +20,7 @@ - const IsNetbsd = 0 - const IsOpenbsd = 1 - const IsPlan9 = 0 -+const IsRedox = 0 - const IsSolaris = 0 - const IsWasip1 = 0 - const IsWindows = 0 -diff -ruwN source/src/internal/goos/zgoos_plan9.go source-new/src/internal/goos/zgoos_plan9.go ---- source/src/internal/goos/zgoos_plan9.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_plan9.go 2025-07-20 23:50:47.322425484 +0700 -@@ -20,6 +20,7 @@ - const IsNetbsd = 0 - const IsOpenbsd = 0 - const IsPlan9 = 1 -+const IsRedox = 0 - const IsSolaris = 0 - const IsWasip1 = 0 - const IsWindows = 0 -diff -ruwN source/src/internal/goos/zgoos_redox.go source-new/src/internal/goos/zgoos_redox.go ---- source/src/internal/goos/zgoos_redox.go 1970-01-01 07:00:00.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_redox.go 2025-07-20 23:50:47.322425484 +0700 -@@ -0,0 +1,27 @@ -+// Code generated by gengoos.go using 'go generate'. DO NOT EDIT. -+ -+//go:build redox -+ -+package goos -+ -+const GOOS = `redox` -+ -+const IsAix = 0 -+const IsAndroid = 0 -+const IsDarwin = 0 -+const IsDragonfly = 0 -+const IsFreebsd = 0 -+const IsHurd = 0 -+const IsIllumos = 0 -+const IsIos = 0 -+const IsJs = 0 -+const IsLinux = 0 -+const IsNacl = 0 -+const IsNetbsd = 0 -+const IsOpenbsd = 0 -+const IsPlan9 = 0 -+const IsRedox = 1 -+const IsSolaris = 0 -+const IsWasip1 = 0 -+const IsWindows = 0 -+const IsZos = 0 -diff -ruwN source/src/internal/goos/zgoos_solaris.go source-new/src/internal/goos/zgoos_solaris.go ---- source/src/internal/goos/zgoos_solaris.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_solaris.go 2025-07-20 23:50:47.322425484 +0700 -@@ -20,6 +20,7 @@ - const IsNetbsd = 0 - const IsOpenbsd = 0 - const IsPlan9 = 0 -+const IsRedox = 0 - const IsSolaris = 1 - const IsWasip1 = 0 - const IsWindows = 0 -diff -ruwN source/src/internal/goos/zgoos_wasip1.go source-new/src/internal/goos/zgoos_wasip1.go ---- source/src/internal/goos/zgoos_wasip1.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_wasip1.go 2025-07-20 23:50:47.322425484 +0700 -@@ -20,6 +20,7 @@ - const IsNetbsd = 0 - const IsOpenbsd = 0 - const IsPlan9 = 0 -+const IsRedox = 0 - const IsSolaris = 0 - const IsWasip1 = 1 - const IsWindows = 0 -diff -ruwN source/src/internal/goos/zgoos_windows.go source-new/src/internal/goos/zgoos_windows.go ---- source/src/internal/goos/zgoos_windows.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_windows.go 2025-07-20 23:50:47.322425484 +0700 -@@ -20,6 +20,7 @@ - const IsNetbsd = 0 - const IsOpenbsd = 0 - const IsPlan9 = 0 -+const IsRedox = 0 - const IsSolaris = 0 - const IsWasip1 = 0 - const IsWindows = 1 -diff -ruwN source/src/internal/goos/zgoos_zos.go source-new/src/internal/goos/zgoos_zos.go ---- source/src/internal/goos/zgoos_zos.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_zos.go 2025-07-20 23:50:47.322425484 +0700 -@@ -20,6 +20,7 @@ - const IsNetbsd = 0 - const IsOpenbsd = 0 - const IsPlan9 = 0 -+const IsRedox = 0 - const IsSolaris = 0 - const IsWasip1 = 0 - const IsWindows = 0 -diff -ruwN source/src/internal/platform/supported.go source-new/src/internal/platform/supported.go ---- source/src/internal/platform/supported.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/platform/supported.go 2025-08-02 18:27:27.688723910 +0700 -@@ -194,6 +194,7 @@ - "ios/amd64", "ios/arm64", - "aix/ppc64", - "openbsd/arm64", -+ "redox/386","redox/amd64","redox/arm64", - "windows/386", "windows/amd64", "windows/arm", "windows/arm64": - return true - } -@@ -209,7 +210,7 @@ - case "plugin": - switch platform { - case "linux/amd64", "linux/arm", "linux/arm64", "linux/386", "linux/loong64", "linux/s390x", "linux/ppc64le", -- "android/amd64", "android/386", -+ "android/amd64", "android/386", "redox/amd64", "redox/386", - "darwin/amd64", "darwin/arm64", - "freebsd/amd64": - return true -@@ -226,6 +227,7 @@ - case "android/arm64", - "darwin/amd64", "darwin/arm64", - "linux/amd64", "linux/arm64", "linux/ppc64le", -+ "redox/386","redox/amd64","redox/arm64", - "windows/386", "windows/amd64", "windows/arm", "windows/arm64": - return true - } -@@ -237,7 +239,7 @@ - // so force the caller to pass that in to centralize that choice. - func DefaultPIE(goos, goarch string, isRace bool) bool { - switch goos { -- case "android", "ios": -+ case "android", "ios", "redox": - return true - case "windows": - if isRace { -diff -ruwN source/src/internal/platform/zosarch.go source-new/src/internal/platform/zosarch.go ---- source/src/internal/platform/zosarch.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/platform/zosarch.go 2025-07-20 23:50:47.322425484 +0700 -@@ -13,6 +13,9 @@ - {"android", "amd64"}, - {"android", "arm"}, - {"android", "arm64"}, -+ {"redox", "386"}, -+ {"redox", "amd64"}, -+ {"redox", "arm64"}, - {"darwin", "amd64"}, - {"darwin", "arm64"}, - {"dragonfly", "amd64"}, -@@ -67,6 +70,9 @@ - {"android", "amd64"}: {CgoSupported: true}, - {"android", "arm"}: {CgoSupported: true}, - {"android", "arm64"}: {CgoSupported: true}, -+ {"redox", "386"}: {CgoSupported: true}, -+ {"redox", "amd64"}: {CgoSupported: true}, -+ {"redox", "arm64"}: {CgoSupported: true}, - {"darwin", "amd64"}: {CgoSupported: true, FirstClass: true}, - {"darwin", "arm64"}: {CgoSupported: true, FirstClass: true}, - {"dragonfly", "amd64"}: {CgoSupported: true}, -diff -ruwN source/src/internal/poll/sendfile_unix.go source-new/src/internal/poll/sendfile_unix.go ---- source/src/internal/poll/sendfile_unix.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/poll/sendfile_unix.go 2025-07-20 23:50:47.322425484 +0700 -@@ -28,7 +28,7 @@ - // has not modified the source or destination, - // and the caller should perform the copy using a fallback implementation. - func SendFile(dstFD *FD, src int, size int64) (n int64, err error, handled bool) { -- if goos := runtime.GOOS; goos == "linux" || goos == "android" { -+ if goos := runtime.GOOS; goos == "linux" || goos == "android" || goos == "redox" { - // Linux's sendfile doesn't require any setup: - // It sends from the current position of the source file and - // updates the position of the source after sending. -diff -ruwN source/src/internal/syslist/syslist.go source-new/src/internal/syslist/syslist.go ---- source/src/internal/syslist/syslist.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/syslist/syslist.go 2025-07-20 23:50:47.322425484 +0700 -@@ -29,6 +29,7 @@ - "netbsd": true, - "openbsd": true, - "plan9": true, -+ "redox": true, - "solaris": true, - "wasip1": true, - "windows": true, -@@ -50,6 +51,7 @@ - "linux": true, - "netbsd": true, - "openbsd": true, -+ "redox": true, - "solaris": true, - } - -diff -ruwN source/src/net/cgo_stub.go source-new/src/net/cgo_stub.go ---- source/src/net/cgo_stub.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/net/cgo_stub.go 2025-08-02 18:20:37.688742244 +0700 -@@ -9,7 +9,7 @@ - // (Darwin always provides the cgo functions, in cgo_unix_syscall.go) - // - on wasip1, where cgo is never available - --//go:build (netgo && unix) || (unix && !cgo && !darwin) || js || wasip1 -+//go:build (netgo && unix) || (unix && !cgo && !darwin) || js || wasip1 || redox - - package net - -diff -ruwN source/src/net/cgo_unix.go source-new/src/net/cgo_unix.go ---- source/src/net/cgo_unix.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/net/cgo_unix.go 2025-08-02 17:54:26.168771131 +0700 -@@ -7,7 +7,7 @@ - // Instead of C.foo it uses _C_foo, which is defined in either - // cgo_unix_cgo.go or cgo_unix_syscall.go - --//go:build !netgo && ((cgo && unix) || darwin) -+//go:build !netgo && ((cgo && unix) || darwin) && !redox - - package net - -diff -ruwN source/src/net/cgo_unix_cgo_res.go source-new/src/net/cgo_unix_cgo_res.go ---- source/src/net/cgo_unix_cgo_res.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/net/cgo_unix_cgo_res.go 2025-08-02 23:37:48.006690697 +0700 -@@ -4,7 +4,7 @@ - - // res_search, for cgo systems where that is thread-safe. - --//go:build cgo && !netgo && (linux || openbsd) -+//go:build cgo && !netgo && (linux || openbsd) && !redox - - package net - -@@ -18,7 +18,7 @@ - #include - #include - --#cgo !android,!openbsd LDFLAGS: -lresolv -+#cgo !android,!openbsd,!redox LDFLAGS: -lresolv - */ - import "C" - -diff -ruwN source/src/net/cgo_unix_cgo_resn.go source-new/src/net/cgo_unix_cgo_resn.go ---- source/src/net/cgo_unix_cgo_resn.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/net/cgo_unix_cgo_resn.go 2025-08-02 23:37:55.206690614 +0700 -@@ -4,7 +4,7 @@ - - // res_nsearch, for cgo systems where that's available. - --//go:build cgo && !netgo && unix && !(darwin || linux || openbsd) -+//go:build cgo && !netgo && unix && !(darwin || linux || openbsd || redox) - - package net - -@@ -18,7 +18,7 @@ - #include - #include - --#cgo !aix,!dragonfly,!freebsd LDFLAGS: -lresolv -+#cgo !aix,!dragonfly,!freebsd,!redox LDFLAGS: -lresolv - */ - import "C" - -diff -ruwN source/src/os/user/cgo_lookup_unix.go source-new/src/os/user/cgo_lookup_unix.go ---- source/src/os/user/cgo_lookup_unix.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/os/user/cgo_lookup_unix.go 2025-08-02 17:15:57.178834645 +0700 -@@ -194,7 +194,7 @@ - // Because we can't use cgo in tests: - func structPasswdForNegativeTest() _C_struct_passwd { - sp := _C_struct_passwd{} -- *_C_pw_uidp(&sp) = 1<<32 - 2 -- *_C_pw_gidp(&sp) = 1<<32 - 3 -+ *_C_pw_uidp(&sp) = 1<<31 - 2 -+ *_C_pw_gidp(&sp) = 1<<31 - 3 - return sp - } -diff -ruwN source/src/runtime/cgo/cgo.go source-new/src/runtime/cgo/cgo.go ---- source/src/runtime/cgo/cgo.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/runtime/cgo/cgo.go 2025-07-20 23:50:47.322425484 +0700 -@@ -16,7 +16,8 @@ - #cgo dragonfly LDFLAGS: -lpthread - #cgo freebsd LDFLAGS: -lpthread - #cgo android LDFLAGS: -llog --#cgo !android,linux LDFLAGS: -lpthread -+#cgo redox LDFLAGS: -llog -+#cgo !android,!redox,linux LDFLAGS: -lpthread - #cgo netbsd LDFLAGS: -lpthread - #cgo openbsd LDFLAGS: -lpthread - #cgo aix LDFLAGS: -Wl,-berok -diff -ruwN source/src/runtime/pprof/pprof_rusage.go source-new/src/runtime/pprof/pprof_rusage.go ---- source/src/runtime/pprof/pprof_rusage.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/runtime/pprof/pprof_rusage.go 2025-07-20 23:50:47.322425484 +0700 -@@ -17,7 +17,7 @@ - func addMaxRSS(w io.Writer) { - var rssToBytes uintptr - switch runtime.GOOS { -- case "aix", "android", "dragonfly", "freebsd", "linux", "netbsd", "openbsd": -+ case "aix", "android", "redox", "dragonfly", "freebsd", "linux", "netbsd", "openbsd": - rssToBytes = 1024 - case "darwin", "ios": - rssToBytes = 1 -diff -ruwN source/src/runtime/pprof/proto_test.go source-new/src/runtime/pprof/proto_test.go ---- source/src/runtime/pprof/proto_test.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/runtime/pprof/proto_test.go 2025-07-20 23:50:47.322425484 +0700 -@@ -83,7 +83,7 @@ - // to use in test profiles. - func testPCs(t *testing.T) (addr1, addr2 uint64, map1, map2 *profile.Mapping) { - switch runtime.GOOS { -- case "linux", "android", "netbsd": -+ case "linux", "android", "redox", "netbsd": - // Figure out two addresses from /proc/self/maps. - mmap, err := os.ReadFile("/proc/self/maps") - if err != nil { -diff -ruwN source/src/runtime/race/internal/amd64v1/doc.go source-new/src/runtime/race/internal/amd64v1/doc.go ---- source/src/runtime/race/internal/amd64v1/doc.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/runtime/race/internal/amd64v1/doc.go 2025-07-20 23:50:47.322425484 +0700 -@@ -5,6 +5,6 @@ - // This package holds the race detector .syso for - // amd64 architectures with GOAMD64 /dev/null; then - GO_TARBALL=go1.24.5.linux-$( [ "$(uname -m)" = "aarch64" ] && echo "arm64" || echo "amd64" ).tar.gz + GO_TARBALL=go1.24.6.linux-$( [ "$(uname -m)" = "aarch64" ] && echo "arm64" || echo "amd64" ).tar.gz GO_DOWNLOAD_URL="https://dl.google.com/go/${GO_TARBALL}" echo "Installing Go..." wget -q --show-progress "${GO_DOWNLOAD_URL}" @@ -23,33 +22,19 @@ fi # Go does not support out-of-tree builds :( rsync -a --delete "${COOKBOOK_SOURCE}/" ./ -export GOHOSTOS=redox +export GOOS=redox case "${TARGET}" in - x86-unknown-redox) - export GOHOSTARCH=386 - ;; - x86_64-unknown-redox) - export GOHOSTARCH=amd64 - ;; - aarch64-unknown-redox) - export GOHOSTARCH=arm64 - ;; - riscv64-unknown-redox) -# TODO: Patches for this ARCH is not complete - export GOHOSTARCH=riscv64 - ;; + x86-unknown-redox) export GOARCH=386;; + x86_64-unknown-redox) export GOARCH=amd64;; + aarch64-unknown-redox) export GOARCH=arm64;; + riscv64-unknown-redox) export GOARCH=riscv64;; esac -export GOOS=${GOHOSTOS} -export GOARCH=${GOHOSTARCH} - export CGO_ENABLED=1 -export CC_FOR_redox_${GOHOSTARCH}="${CC}" -export CXX_FOR_redox_${GOHOSTARCH}="${CXX}" -# Don't poison the runtime tools (host -> host) -unset AR AS CC CXX LD LDFLAGS NM OBJCOPY OBJDUMP RANLIB READELF STRIP -(cd ./src && bash ./make.bash -v --no-banner) +export CC=x86_64-unknown-redox-gcc +export CCX=x86_64-unknown-redox-g++ +(cd ./src && bash ./make.bash) mkdir -p ${COOKBOOK_STAGE}/bin -rsync -a --delete "bin/redox_${GOHOSTARCH}/" ${COOKBOOK_STAGE}/bin +rsync -a --delete "bin/redox_${GOARCH}/" ${COOKBOOK_STAGE}/bin """ From d7eb182249e828b74b6455fc7a42945c6f9ebc7e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 28 Aug 2025 13:25:25 -0600 Subject: [PATCH 2766/3180] cosmic-reader: install metadata --- recipes/tools/cosmic-reader/recipe.toml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/recipes/tools/cosmic-reader/recipe.toml b/recipes/tools/cosmic-reader/recipe.toml index c65311e4..71a78f2c 100644 --- a/recipes/tools/cosmic-reader/recipe.toml +++ b/recipes/tools/cosmic-reader/recipe.toml @@ -20,12 +20,18 @@ export BINDGEN_EXTRA_CLANG_ARGS="--sysroot=${COOKBOOK_HOST_SYSROOT}/${GNU_TARGET --bin cosmic-reader \ --no-default-features \ --features mupdf \ - --verbose \ -- \ - -C link-args="-lpng -lexpat" \ - --verbose + -C link-args="-lpng -lexpat" mkdir -pv "${COOKBOOK_STAGE}/usr/bin/" cp -v "target/${TARGET}/release/cosmic-reader" "${COOKBOOK_STAGE}/usr/bin/" mkdir -pv "${COOKBOOK_STAGE}/ui/apps" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/40_cosmic-reader" +#TODO: install with just? +APPID="com.system76.CosmicReader" +mkdir -pv "${COOKBOOK_STAGE}/usr/share/applications/" +cp -v "${COOKBOOK_SOURCE}/res/${APPID}.desktop" "${COOKBOOK_STAGE}/usr/share/applications/" +mkdir -pv "${COOKBOOK_STAGE}/usr/share/thumbnailers/" +cp -v "${COOKBOOK_SOURCE}/res/${APPID}.thumbnailer" "${COOKBOOK_STAGE}/usr/share/thumbnailers/" +mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" +#TODO cp -rv "${COOKBOOK_SOURCE}/res/icons/hicolor/" "${COOKBOOK_STAGE}/usr/share/icons/" """ From 4f3b3288c328bf838c4b120142a97c932027bf67 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 28 Aug 2025 13:49:58 -0600 Subject: [PATCH 2767/3180] cosmic-reader: install icons --- recipes/tools/cosmic-reader/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/tools/cosmic-reader/recipe.toml b/recipes/tools/cosmic-reader/recipe.toml index 71a78f2c..01619a80 100644 --- a/recipes/tools/cosmic-reader/recipe.toml +++ b/recipes/tools/cosmic-reader/recipe.toml @@ -33,5 +33,5 @@ cp -v "${COOKBOOK_SOURCE}/res/${APPID}.desktop" "${COOKBOOK_STAGE}/usr/share/app mkdir -pv "${COOKBOOK_STAGE}/usr/share/thumbnailers/" cp -v "${COOKBOOK_SOURCE}/res/${APPID}.thumbnailer" "${COOKBOOK_STAGE}/usr/share/thumbnailers/" mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" -#TODO cp -rv "${COOKBOOK_SOURCE}/res/icons/hicolor/" "${COOKBOOK_STAGE}/usr/share/icons/" +cp -rv "${COOKBOOK_SOURCE}/res/icons/hicolor/" "${COOKBOOK_STAGE}/usr/share/icons/" """ From 560ac52c5c2fcbdb662d5630045b7a06b0a10edd Mon Sep 17 00:00:00 2001 From: "Andrzej J. Skalski" Date: Sun, 31 Aug 2025 16:30:53 +0000 Subject: [PATCH 2768/3180] Servo and dependencies: libpango, mozjs, aws-lc-rs, freetype-sys, mozangle, tikv-reallocator. --- recipes/libs/pango/recipe.toml | 42 ++++++++----- recipes/wip/libs/mozjs/recipe.toml | 40 ++++++++++++ recipes/wip/libs/other/aws-lc-rs/recipe.toml | 15 +++++ .../wip/libs/other/freetype-sys/recipe.toml | 28 +++++++++ recipes/wip/libs/other/mozangle/recipe.toml | 41 ++++++++++++ .../wip/libs/tikv-jemallocator/recipe.toml | 12 ++++ recipes/wip/web/servo/.servobuild | 61 ++++++++++++++++++ recipes/wip/web/servo/recipe.toml | 62 +++++++++++++++++-- 8 files changed, 279 insertions(+), 22 deletions(-) create mode 100644 recipes/wip/libs/mozjs/recipe.toml create mode 100644 recipes/wip/libs/other/aws-lc-rs/recipe.toml create mode 100644 recipes/wip/libs/other/freetype-sys/recipe.toml create mode 100644 recipes/wip/libs/other/mozangle/recipe.toml create mode 100644 recipes/wip/libs/tikv-jemallocator/recipe.toml create mode 100644 recipes/wip/web/servo/.servobuild diff --git a/recipes/libs/pango/recipe.toml b/recipes/libs/pango/recipe.toml index eaf03af8..ce771723 100644 --- a/recipes/libs/pango/recipe.toml +++ b/recipes/libs/pango/recipe.toml @@ -1,31 +1,41 @@ [source] -tar="https://download.gnome.org/sources/pango/1.56/pango-1.56.3.tar.xz" +tar = "https://download.gnome.org/sources/pango/1.56/pango-1.56.3.tar.xz" blake3 = "78542feaaf007c1d648b94c4e9b6655ed7515d27ce434766aea99bef886c21ac" patches = ["redox.patch"] [build] dependencies = [ - "cairo", - "expat", - "fontconfig", - "freetype2", - "fribidi", - "gettext", - "glib", - "harfbuzz", - "libffi", - "libiconv", - "libpng", - "pcre", - "pixman", - "zlib", + "cairo", + "expat", + "fontconfig", + "freetype2", + "fribidi", + "gettext", + "glib", + "harfbuzz", + "libffi", + "libiconv", + "libpng", + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "libxext", + "libxrender", + "pcre", + "pcre2", + "pixman", + "x11proto", + "xcb-proto", + "xextproto", + "zlib", ] template = "custom" script = """ DYNAMIC_INIT #TODO: why are these libs not automatic? cookbook_meson \ - -Dc_args="-lfontconfig -lexpat -lpixman-1 -lpng -lz" \ + -Dc_args="-lfontconfig -lexpat -lpixman-1 -lpng -lz -lcairo" \ -Dbuild-examples=false \ -Dbuild-testsuite=false """ diff --git a/recipes/wip/libs/mozjs/recipe.toml b/recipes/wip/libs/mozjs/recipe.toml new file mode 100644 index 00000000..611d45b5 --- /dev/null +++ b/recipes/wip/libs/mozjs/recipe.toml @@ -0,0 +1,40 @@ +#TODO "No suitable wgpu::Adapter found" error on execution +[source] +git = "https://gitlab.redox-os.org/njskalski/mozjs.git" +branch = "redox_mods" +[build] +template = "custom" + +#these dependencies are copied from Servo recipe. Some of them may be redundant, but I needed to reproduce the build bug. +dependencies = [ + "freetype2", + "gettext", + "glib", + "gstreamer", + "harfbuzz", + "libffi", + "libiconv", + "libx11", + "libxcb", + "libpng", + "openssl1", + "pcre", + "zlib", + + "x11proto", + "x11proto-kb", + "xcb-proto", + "xextproto", + "libxau", + "libpthread-stubs", + "fontconfig", + "expat", + "llvm18", + "gcc13", +] + +script = """ +# Build the library crates +"${COOKBOOK_REDOXER}" build --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" --workspace --release +# Library crates don't need installation, they're used as dependencies +""" diff --git a/recipes/wip/libs/other/aws-lc-rs/recipe.toml b/recipes/wip/libs/other/aws-lc-rs/recipe.toml new file mode 100644 index 00000000..3ef8828a --- /dev/null +++ b/recipes/wip/libs/other/aws-lc-rs/recipe.toml @@ -0,0 +1,15 @@ +[source] +git = "https://gitlab.redox-os.org/njskalski/aws-lc-rs.git" +branch = "redox_mods" +[build] +template = "custom" + +script = """ + # we need HOST != TARGET, because otherwise we get this error: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95189 + # by this line https://gitlab.redox-os.org/njskalski/aws-lc-rs/-/blob/main/aws-lc-sys/builder/cc_builder.rs#L493 + export HOST=x86_64-linux-gnu + + rsync -a --delete "${COOKBOOK_SOURCE}/" ./ + cargo build -p aws-lc-sys --target ${TARGET} --release + cargo build -p aws-lc-rs --target ${TARGET} --release +""" diff --git a/recipes/wip/libs/other/freetype-sys/recipe.toml b/recipes/wip/libs/other/freetype-sys/recipe.toml new file mode 100644 index 00000000..5eab0696 --- /dev/null +++ b/recipes/wip/libs/other/freetype-sys/recipe.toml @@ -0,0 +1,28 @@ +[source] +git = "https://github.com/PistonDevelopers/freetype-sys.git" +[build] +template = "custom" +dependencies = [ + "freetype2", + "zlib", + "libpng" +] + +script = """ + # export PKG_CONFIG_PATH="${COOKBOOK_SYSROOT}/lib/pkgconfig" + # #:${COOKBOOK_SYSROOT}/usr/lib/pkgconfig:${COOKBOOK_SYSROOT}/usr/share/pkgconfig" + # export PKG_CONFIG_LIBDIR="${COOKBOOK_SYSROOT}/lib/pkgconfig" + # #:${COOKBOOK_SYSROOT}/usr/lib/pkgconfig" + # export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" + + # # I'm tired trying figure out why multiple pkgconfig paths are ignored by cargo building stuff + # # rsync -a -v ${COOKBOOK_SYSROOT}/usr/share/pkgconfig/*.pc ${COOKBOOK_SYSROOT}/lib/pkgconfig/ + # rsync -a -v ${COOKBOOK_SYSROOT}/usr/lib/pkgconfig/*.pc ${COOKBOOK_SYSROOT}/lib/pkgconfig/ + + # ls -al $PKG_CONFIG_PATH + + # env + + rsync -a --delete "${COOKBOOK_SOURCE}/" ./ + cargo build --release +""" diff --git a/recipes/wip/libs/other/mozangle/recipe.toml b/recipes/wip/libs/other/mozangle/recipe.toml new file mode 100644 index 00000000..08f3e5b1 --- /dev/null +++ b/recipes/wip/libs/other/mozangle/recipe.toml @@ -0,0 +1,41 @@ +[source] +git = "https://gitlab.redox-os.org/njskalski/mozangle.git" +branch = "redox_mods" +[build] +template = "custom" +dependencies = [ + "freetype2", + "gettext", + "glib", + "gstreamer", + "harfbuzz", + "libffi", + "libiconv", + "libx11", + "libxcb", + "libpng", + "openssl1", + "pcre", + "zlib", + + "x11proto", + "x11proto-kb", + "xcb-proto", + "xextproto", + "libxau", + "libpthread-stubs", + "fontconfig", + "expat", + "relibc", + "gcc13", +] + +script = """ + export TARGET=${TARGET} + export TARGET_CC=${TARGET}-gcc + export TARGET_CXX=${TARGET}-g++ + export TARGET_AR=${TARGET}-ar + + rsync -a --delete "${COOKBOOK_SOURCE}/" ./ + cargo build --release --target ${TARGET} +""" diff --git a/recipes/wip/libs/tikv-jemallocator/recipe.toml b/recipes/wip/libs/tikv-jemallocator/recipe.toml new file mode 100644 index 00000000..7d4af5ef --- /dev/null +++ b/recipes/wip/libs/tikv-jemallocator/recipe.toml @@ -0,0 +1,12 @@ +#TODO "No suitable wgpu::Adapter found" error on execution +[source] +git = "https://gitlab.redox-os.org/njskalski/jemallocator.git" +branch = "redox_mods" +[build] +template = "custom" + +script = """ +# Build the library crates +"${COOKBOOK_REDOXER}" build --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" --workspace --release +# Library crates don't need installation, they're used as dependencies +""" diff --git a/recipes/wip/web/servo/.servobuild b/recipes/wip/web/servo/.servobuild new file mode 100644 index 00000000..09a2abc3 --- /dev/null +++ b/recipes/wip/web/servo/.servobuild @@ -0,0 +1,61 @@ +# Copy this file to .servobuild in the Servo root directory + +# Paths starting with "./" are relative to the repo root + +# Tool options +[tools] + +[build] + +# Set "mode = dev" or use `mach build --dev` to build the project with warning. +# or Set "mode = release" or use `mach build --release` for optimized build. +# Use `mode = ` or `mach build --profile=` to build the given +# profile. Check the `Cargo.toml` manifest for a complete list of custom profiles. +# Defaults to prompting before building +#mode = "dev" + + +# Set "android = true" or use `mach build --android` to build the Android app. +android = false + +# Enable `debug_assert!` macros in release mode +debug-assertions = true + +# Set "debug-mozjs" or use `mach build --debug-mozjs` to build a debug spidermonkey. +debug-mozjs = false + +# When a GL error occurs as a result of a WebGL operation, print the stack trace for the content +# JS and native Rust code that triggered the failed operation. Warning: very slow. +webgl-backtrace = false + +# When a DOM exception is reported, print the stack trace for the content JS and native Rust code +# that triggered it. +dom-backtrace = false + +# Pick a media stack based on the target. Other values are "gstreamer" and "dummy" +media-stack = "dummy" + +# Set to the path to your ccache binary to enable caching of compiler outputs +#ccache = "/usr/local/bin/ccache" + +# Any optional flags that will be added to $RUSTFLAGS +#rustflags = "" + +# Enable or disable rustc’s incremental compilation +# Cargo’s default is to enable it in debug mode but not in release mode. +# Leaving this key unspecified makes mach keep Cargo’s default. +# It can be set to true or false in order to always enable or always disable +# incremental compilation. +#incremental = false +#incremental = true + +# Android information +[android] +# Defaults to the value of $ANDROID_SDK_ROOT, $ANDROID_NDK_ROOT respectively +#sdk = "/opt/android-sdk" +#ndk = "/opt/android-ndk" + +# OpenHarmony +[ohos] +# Defaults to the value of $OHOS_SDK_NATIVE +#ndk = "/path/to/ohos-sdk//native" diff --git a/recipes/wip/web/servo/recipe.toml b/recipes/wip/web/servo/recipe.toml index 83b7873f..50568e30 100644 --- a/recipes/wip/web/servo/recipe.toml +++ b/recipes/wip/web/servo/recipe.toml @@ -1,9 +1,7 @@ -#TODO not compiled or tested -# if the script is wrong, read this - https://github.com/servo/servo#release-build -# advanced build instructions - https://github.com/servo/servo/wiki/Building#manual-build-setup [source] -git = "https://github.com/servo/servo" -#git = "https://gitlab.redox-os.org/redox-os/servo" +git = "https://gitlab.redox-os.org/njskalski/servo.git" +branch = "redox_mods" + [build] template = "custom" dependencies = [ @@ -14,11 +12,63 @@ dependencies = [ "harfbuzz", "libffi", "libiconv", + "libx11", + "libxcb", "libpng", "openssl1", "pcre", "zlib", + "x11proto", + "x11proto-kb", + "xcb-proto", + "xextproto", + "libxau", + "libpthread-stubs", + "fontconfig", + "expat", + "relibc", + "gcc13", ] script = """ -cookbook_cargo_packages servoshell +cp "${COOKBOOK_RECIPE}/.servobuild" "${COOKBOOK_SOURCE}/.servobuild" + +# Add wrapper to PATH +export PATH="${COOKBOOK_RECIPE}:${PATH}" +export TARGET=${TARGET} + +# Force cargo to use the correct build target +export CARGO_BUILD_TARGET=${TARGET} + +# jemalloc specific configuration +export JEMALLOC_SYS_WITH_LG_PAGE=16 +export TARGET_CC=${TARGET}-gcc +export TARGET_CXX=${TARGET}-g++ +export TARGET_AR=${TARGET}-ar + +export PKG_CONFIG_ALLOW_CROSS=1 + +# this /usr/share/pkgconfig comes from x11proto, that stages pc files in wrong dir. +export PKG_CONFIG_PATH="${COOKBOOK_SYSROOT}/lib/pkgconfig" +#:${COOKBOOK_SYSROOT}/usr/lib/pkgconfig:${COOKBOOK_SYSROOT}/usr/share/pkgconfig" +export PKG_CONFIG_LIBDIR="${COOKBOOK_SYSROOT}/lib/pkgconfig" +#:${COOKBOOK_SYSROOT}/usr/lib/pkgconfig" +export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" + +export RUSTFLAGS="-C target-feature=-crt-static -C link-args=-lpng -C link-args=-lxcb -C link-args=-lexpat -C link-args=-lgcc_s -C link-args=-lz -C link-args=-lXau -C link-args=-no-pie" + +rsync -a --delete "${COOKBOOK_SOURCE}/" ./ + + +# I'm tired trying figure out why multiple pkgconfig paths are ignored by cargo building stuff +rsync -a -v ${COOKBOOK_SYSROOT}/usr/share/pkgconfig/*.pc ${COOKBOOK_SYSROOT}/lib/pkgconfig/ +rsync -a -v ${COOKBOOK_SYSROOT}/usr/lib/pkgconfig/*.pc ${COOKBOOK_SYSROOT}/lib/pkgconfig/ + +echo "listing ${COOKBOOK_SYSROOT}/lib/pkgconfig" +ls -al ${COOKBOOK_SYSROOT}/lib/pkgconfig + +# -j 1 to lock down "which crate fails", because cargo tree -i doesn't work for gaol +cargo build --target ${TARGET} --release + +mkdir -pv "${COOKBOOK_STAGE}/usr/servo" +cp -r -v "target/${TARGET}/release/servo" "${COOKBOOK_STAGE}/usr/servo" """ From 8814a5d49406dd6a1e2f0b8ae6c2f652925f0ce9 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Mon, 1 Sep 2025 15:17:09 +0700 Subject: [PATCH 2769/3180] Include flags to meson cross file --- recipes/libs/cairo/recipe.toml | 3 +-- recipes/libs/gstreamer/recipe.toml | 2 +- recipes/libs/pango/recipe.toml | 2 -- recipes/wip/libs/gtk/gtk3/recipe.toml | 3 +-- src/bin/cook.rs | 3 +++ 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/recipes/libs/cairo/recipe.toml b/recipes/libs/cairo/recipe.toml index 17e81b9b..47b1d5eb 100644 --- a/recipes/libs/cairo/recipe.toml +++ b/recipes/libs/cairo/recipe.toml @@ -28,9 +28,8 @@ script = """ DYNAMIC_INIT #TODO: fix mutex implementation #TODO: why are math defines missing? -#TODO: why is -lexpat not automatic? +CFLAGS="${CFLAGS} -DCAIRO_NO_MUTEX=1 -DM_SQRT2=1.41421356237309504880 -DM_LN2=0.69314718055994530942" cookbook_meson \ - -Dc_args="-DCAIRO_NO_MUTEX=1 -DM_SQRT2=1.41421356237309504880 -DM_LN2=0.69314718055994530942 -lexpat" \ -Dxlib-xcb=enabled \ -Dtests=disabled """ diff --git a/recipes/libs/gstreamer/recipe.toml b/recipes/libs/gstreamer/recipe.toml index ec930918..4944a00b 100644 --- a/recipes/libs/gstreamer/recipe.toml +++ b/recipes/libs/gstreamer/recipe.toml @@ -62,8 +62,8 @@ DYNAMIC_INIT export GLIB_GENMARSHAL="$(which glib-genmarshal)" export GLIB_MKENUMS="$(which glib-mkenums)" +CFLAGS="${CFLAGS} -DM_LN2=0.69314718055994530942" cookbook_meson \ - -Dc_args="-DM_LN2=0.69314718055994530942" \ -Ddevtools=disabled \ -Dexamples=disabled \ -Dlibav=disabled \ diff --git a/recipes/libs/pango/recipe.toml b/recipes/libs/pango/recipe.toml index ce771723..6ea4fcb5 100644 --- a/recipes/libs/pango/recipe.toml +++ b/recipes/libs/pango/recipe.toml @@ -33,9 +33,7 @@ dependencies = [ template = "custom" script = """ DYNAMIC_INIT -#TODO: why are these libs not automatic? cookbook_meson \ - -Dc_args="-lfontconfig -lexpat -lpixman-1 -lpng -lz -lcairo" \ -Dbuild-examples=false \ -Dbuild-testsuite=false """ diff --git a/recipes/wip/libs/gtk/gtk3/recipe.toml b/recipes/wip/libs/gtk/gtk3/recipe.toml index 63def679..da231091 100644 --- a/recipes/wip/libs/gtk/gtk3/recipe.toml +++ b/recipes/wip/libs/gtk/gtk3/recipe.toml @@ -43,9 +43,8 @@ dependencies = [ template = "custom" script = """ DYNAMIC_INIT -#TODO: why are libs not automatically detected? +CFLAGS="${CFLAGS} -DM_SQRT2=1.41421356237309504880" cookbook_meson \ - -Dc_args="-DM_SQRT2=1.41421356237309504880 -lXext -lX11 -lxcb -lXau" \ -Dintrospection=false \ -Dwayland_backend=false """ diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 567a0eef..ca2e4484 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -965,6 +965,9 @@ function cookbook_meson { echo "[properties]" >> cross_file.txt echo "needs_exe_wrapper = true" >> cross_file.txt echo "sys_root = '${COOKBOOK_SYSROOT}'" >> cross_file.txt + echo "c_args = [$(printf "'%s', " $CFLAGS | sed 's/, $//')]" >> cross_file.txt + echo "cpp_args = [$(printf "'%s', " $CPPFLAGS | sed 's/, $//')]" >> cross_file.txt + echo "c_link_args = [$(printf "'%s', " $LDFLAGS | sed 's/, $//')]" >> cross_file.txt unset AR unset AS From fb3268b1a33caa5e0839ebb93f9ca5c2a1c7ab49 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Mon, 1 Sep 2025 10:27:03 +0000 Subject: [PATCH 2770/3180] Fix compile dosbox in native build --- recipes/emulators/dosbox/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/emulators/dosbox/recipe.toml b/recipes/emulators/dosbox/recipe.toml index b017ddda..c25c5043 100644 --- a/recipes/emulators/dosbox/recipe.toml +++ b/recipes/emulators/dosbox/recipe.toml @@ -21,7 +21,7 @@ export LDFLAGS+=" -lorbital" COOKBOOK_CONFIGURE_FLAGS+=( --disable-opengl --disable-sdltest - --with-sdl + --with-sdl-prefix="${COOKBOOK_SYSROOT}" ) cookbook_configure From abdfc6cc65f7f711aa473a9cd5dd7a8e66bb21f6 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Mon, 1 Sep 2025 10:43:03 +0000 Subject: [PATCH 2771/3180] Fix regression in mesa --- recipes/libs/mesa/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/libs/mesa/recipe.toml b/recipes/libs/mesa/recipe.toml index d473cc8c..d581c1b3 100644 --- a/recipes/libs/mesa/recipe.toml +++ b/recipes/libs/mesa/recipe.toml @@ -13,8 +13,8 @@ dependencies = [ script = """ DYNAMIC_INIT -export CFLAGS+="-I${COOKBOOK_SYSROOT}/include -DHAVE_PTHREAD=1" -export CPPFLAGS+="-I${COOKBOOK_SYSROOT}/include -DHAVE_PTHREAD=1" +export CFLAGS+=" -DHAVE_PTHREAD=1" +export CPPFLAGS+=" -DHAVE_PTHREAD=1" export LLVM_CONFIG="${TARGET}-llvm-config" if [[ -n "${COOKBOOK_PREFER_STATIC}" ]]; then From 605bfcfbd4c57dbabe2f1750adbe12337ecd10ad Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Mon, 1 Sep 2025 15:39:13 +0000 Subject: [PATCH 2772/3180] Add initial repo bin --- src/bin/repo.rs | 242 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 242 insertions(+) create mode 100644 src/bin/repo.rs diff --git a/src/bin/repo.rs b/src/bin/repo.rs new file mode 100644 index 00000000..79a188fd --- /dev/null +++ b/src/bin/repo.rs @@ -0,0 +1,242 @@ +use std::error::Error; +use std::fmt::format; +use std::path::{Path, PathBuf}; +use std::process; +use std::{env, fs}; + +// A repo manager, to replace repo.sh + +const REPO_HELP_STR: &str = r#" + Usage: repo [flags] ... + + command list: + fetch download recipe sources + cook build recipe packages + unfetch delete recipe sources + clean delete recipe artifacts + push extract package into sysroot + + common flags: + --cookbook= the "recipes" folder, default to $PWD/recipes + --repo= the "repo" folder, default to $PWD/repo + --sysroot= the "root" folder used for "push" command + For Redox, defaults to "/", else default to $PWD/sysroot + + cook flags: + --with-package-deps include package deps + --offline prefer to not use network + --nonstop keep running even a recipe build failed + --all apply to all recipes in + -q, --quiet surpress build logs unless error +"#; + +struct Config { + cookbook_dir: PathBuf, + repo_dir: PathBuf, + sysroot_dir: PathBuf, + with_package_deps: bool, + offline: bool, + nonstop: bool, + all: bool, + quiet: bool, +} + +impl Config { + fn new() -> Result { + let current_dir = env::current_dir()?; + Ok(Config { + cookbook_dir: current_dir.join("recipes"), + repo_dir: current_dir.join("repo"), + sysroot_dir: if cfg!(target_os = "redox") { + PathBuf::from("/") + } else { + current_dir.join("sysroot") + }, + with_package_deps: false, + offline: false, + nonstop: false, + all: false, + quiet: false, + }) + } +} + +fn main() -> Result<(), Box> { + let args: Vec = env::args().skip(1).collect(); + + if args.is_empty() || args.contains(&"--help".to_string()) || args.contains(&"-h".to_string()) { + println!("{}", REPO_HELP_STR); + return Ok(()); + } + + let mut config = Config::new()?; + let mut command: Option = None; + let mut recipe_paths: Vec = Vec::new(); + + for arg in args { + if arg.starts_with("--") { + if let Some((key, value)) = arg.split_once('=') { + match key { + "--cookbook" => config.cookbook_dir = PathBuf::from(value), + "--repo" => config.repo_dir = PathBuf::from(value), + "--sysroot" => config.sysroot_dir = Some(PathBuf::from(value)), + _ => { + eprintln!("Error: Unknown flag with value: {}", arg); + process::exit(1); + } + } + } else { + match arg.as_str() { + "--with-package-deps" => config.with_package_deps = true, + "--offline" => config.offline = true, + "--nonstop" => config.nonstop = true, + "--all" => config.all = true, + "--quiet" => config.quiet = true, + _ => { + eprintln!("Error: Unknown flag: {}", arg); + process::exit(1); + } + } + } + } else if arg.starts_with('-') { + match arg.as_str() { + "-q" => config.quiet = true, + _ => { + eprintln!("Error: Unknown flag: {}", arg); + process::exit(1); + } + } + } else if command.is_none() { + // The first non-flag argument is the command + command = Some(arg); + } else { + // Subsequent non-flag arguments are recipe names + if Some(path) = pkg::recipes::find(arg) { + recipe_paths.push(path); + } else { + return Err(format!("Error: recipe not found '{arg}'")); + } + } + } + + let command = command.ok_or("Error: No command specified.")?; + + if !config.all && recipe_paths.is_empty() { + return Err("Error: No recipe names provided and --all flag was not used.".into()); + } + if config.all && !recipe_paths.is_empty() { + return Err("Error: Cannot specify recipe names when using the --all flag.".into()); + } + + if config.all { + recipe_paths = pkg::recipes::list(""); + } + + for recipe_path in &recipe_paths { + match command.as_str() { + "fetch" => handle_fetch(recipe_path, &config)?, + "cook" => handle_cook(recipe_path, &config)?, + "unfetch" => handle_unfetch(recipe_path, &config)?, + "clean" => handle_clean(recipe_path, &config)?, + "push" => handle_push(recipe_path, &config)?, + _ => { + eprintln!("Error: Unknown command '{}'\n", command); + println!("{}", REPO_HELP_STR); + process::exit(1); + } + } + } + + println!( + "\nCommand '{}' completed for all specified recipes.", + command + ); + Ok(()) +} + +fn handle_fetch(recipe_path: &Path, config: &Config) -> Result<(), String> { + let mut cmd = Command::new("cook"); + cmd.arg("--fetch-only"); + if config.with_package_deps { + cmd.arg("--with-package-deps"); + } + if config.offline { + cmd.arg("--offline"); + } + if config.quiet { + cmd.arg("--quiet"); + } + cmd.arg(recipe_path); + let status = cmd + .status() + .map_err(|e| format!("Failed to execute cook command: {}", e))?; + if !status.success() && !config.nonstop { + return Err(format!( + "Cook command failed for recipe '{}' with exit code: {}", + recipe_name, + status.code().unwrap_or(1) + )); + } + Ok(()) +} + +fn handle_cook(recipe_path: &Path, config: &Config) -> Result<(), String> { + let mut cmd = Command::new("cook"); + cmd.arg(recipe_path); + if config.with_package_deps { + cmd.arg("--with-package-deps"); + } + if config.offline { + cmd.arg("--offline"); + } + if config.quiet { + cmd.arg("--quiet"); + } + let status = cmd + .status() + .map_err(|e| format!("Failed to execute cook command: {}", e))?; + if !status.success() && !config.nonstop { + return Err(format!( + "Cook command failed for recipe '{}' with exit code: {}", + recipe_name, + status.code().unwrap_or(1) + )); + } + Ok(()) +} + +fn handle_unfetch(recipe_path: &Path, config: &Config) -> Result<(), String> { + let dir = recipe_path.join("source"); + if dir.exists() { + fs::remove_dir_all(dir) + .map_err(|err| format!("failed to delete '{}': {:?}", recipe_path, errF))?; + } + Ok(()) +} + +fn handle_clean(recipe_path: &Path, config: &Config) -> Result<(), String> { + let dir = recipe_path.join("target"); + if dir.exists() { + fs::remove_dir_all(dir) + .map_err(|err| format!("failed to delete '{}': {:?}", recipe_path, errF))?; + } + Ok(()) +} + +fn handle_push(recipe_path: &Path, config: &Config) -> Result<(), String> { + let public_path = "build/id_ed25519.pub.toml"; + pkgar::extract( + public_path, + config.sysroot_dir.as_path(), + sysroot_dir_tmp.to_str().unwrap(), + ) + .map_err(|err| { + format!( + "failed to install '{}' in '{}': {:?}", + archive_path.display(), + config.sysroot_dir.display(), + err + ) + })?; + Ok(()) +} From 5f12b87dc0b708b0997782e2aadf28595810289a Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Mon, 1 Sep 2025 19:57:07 +0200 Subject: [PATCH 2773/3180] Move a couple not building recipes to the wip category And remove the pastel-editor recipe as pastel-editor hasn't had any updates in years. --- .../{ => wip}/demos/rust-cairo-demo/recipe.sh | 0 recipes/{ => wip}/demos/rust-cairo/recipe.sh | 0 .../games/syobonaction/01_redox.patch | 0 .../{ => wip}/games/syobonaction/recipe.sh | 0 recipes/{ => wip}/games/vvvvvv/recipe.sh | 0 recipes/{ => wip}/games/wesnoth/recipe.sh | 0 .../wip/image/editors/pastel-editor/recipe.sh | 21 ------------------- recipes/{tools => wip}/termplay/recipe.sh | 0 .../{emulators => wip}/vice/01_redox.patch | 0 recipes/{emulators => wip}/vice/recipe.sh | 0 10 files changed, 21 deletions(-) rename recipes/{ => wip}/demos/rust-cairo-demo/recipe.sh (100%) rename recipes/{ => wip}/demos/rust-cairo/recipe.sh (100%) rename recipes/{ => wip}/games/syobonaction/01_redox.patch (100%) rename recipes/{ => wip}/games/syobonaction/recipe.sh (100%) rename recipes/{ => wip}/games/vvvvvv/recipe.sh (100%) rename recipes/{ => wip}/games/wesnoth/recipe.sh (100%) delete mode 100644 recipes/wip/image/editors/pastel-editor/recipe.sh rename recipes/{tools => wip}/termplay/recipe.sh (100%) rename recipes/{emulators => wip}/vice/01_redox.patch (100%) rename recipes/{emulators => wip}/vice/recipe.sh (100%) diff --git a/recipes/demos/rust-cairo-demo/recipe.sh b/recipes/wip/demos/rust-cairo-demo/recipe.sh similarity index 100% rename from recipes/demos/rust-cairo-demo/recipe.sh rename to recipes/wip/demos/rust-cairo-demo/recipe.sh diff --git a/recipes/demos/rust-cairo/recipe.sh b/recipes/wip/demos/rust-cairo/recipe.sh similarity index 100% rename from recipes/demos/rust-cairo/recipe.sh rename to recipes/wip/demos/rust-cairo/recipe.sh diff --git a/recipes/games/syobonaction/01_redox.patch b/recipes/wip/games/syobonaction/01_redox.patch similarity index 100% rename from recipes/games/syobonaction/01_redox.patch rename to recipes/wip/games/syobonaction/01_redox.patch diff --git a/recipes/games/syobonaction/recipe.sh b/recipes/wip/games/syobonaction/recipe.sh similarity index 100% rename from recipes/games/syobonaction/recipe.sh rename to recipes/wip/games/syobonaction/recipe.sh diff --git a/recipes/games/vvvvvv/recipe.sh b/recipes/wip/games/vvvvvv/recipe.sh similarity index 100% rename from recipes/games/vvvvvv/recipe.sh rename to recipes/wip/games/vvvvvv/recipe.sh diff --git a/recipes/games/wesnoth/recipe.sh b/recipes/wip/games/wesnoth/recipe.sh similarity index 100% rename from recipes/games/wesnoth/recipe.sh rename to recipes/wip/games/wesnoth/recipe.sh diff --git a/recipes/wip/image/editors/pastel-editor/recipe.sh b/recipes/wip/image/editors/pastel-editor/recipe.sh deleted file mode 100644 index 987a251f..00000000 --- a/recipes/wip/image/editors/pastel-editor/recipe.sh +++ /dev/null @@ -1,21 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/pastel.git -GIT_UPSTREAM=https://github.com/robbycerantola/pastel.git -BINDIR=/usr/bin -DEPENDS="orbital" - -function recipe_stage { - mkdir "$1/ui" - cp -rv res "$1/ui/pastel" - mkdir "$1/ui/apps" - cat > "$1/ui/apps/pastel" <<-EOF - name=Pastel - binary=/usr/bin/pastel - icon=/ui/pastel/accessories-bitmap-editor.png - accept=*.bmp - accept=*.jpg - accept=*.jpeg - accept=*.png - author=Robby Cerantola - description=Bitmap Editor - EOF -} diff --git a/recipes/tools/termplay/recipe.sh b/recipes/wip/termplay/recipe.sh similarity index 100% rename from recipes/tools/termplay/recipe.sh rename to recipes/wip/termplay/recipe.sh diff --git a/recipes/emulators/vice/01_redox.patch b/recipes/wip/vice/01_redox.patch similarity index 100% rename from recipes/emulators/vice/01_redox.patch rename to recipes/wip/vice/01_redox.patch diff --git a/recipes/emulators/vice/recipe.sh b/recipes/wip/vice/recipe.sh similarity index 100% rename from recipes/emulators/vice/recipe.sh rename to recipes/wip/vice/recipe.sh From f4d3630ef8d24b7ef1cf59f4d6a53f7f6a3bd1b6 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Mon, 1 Sep 2025 21:38:14 +0200 Subject: [PATCH 2774/3180] Remove all code that handles recipe.sh --- cook.sh | 275 ------------------------------------------------------- fetch.sh | 7 +- repo.sh | 60 +----------- 3 files changed, 6 insertions(+), 336 deletions(-) diff --git a/cook.sh b/cook.sh index 6435f2cc..ad457277 100755 --- a/cook.sh +++ b/cook.sh @@ -13,28 +13,10 @@ export DEBUG= export EXAMPLES= export PREPARE_COPY=1 -if hash sha256sum 2>/dev/null -then - SHASUM="sha256sum" -else - SHASUM="shasum -a 256" -fi - function usage { echo "cook.sh $1 " >&2 - echo " dist" >&2 echo " distclean" >&2 - echo " build" >&2 - echo " clean" >&2 - echo " fetch" >&2 echo " unfetch" >&2 - echo " pkg" >&2 - echo " unpkg" >&2 - echo " prepare" >&2 - echo " unprepare" >&2 - echo " stage" >&2 - echo " unstage" >&2 - echo " version" >&2 } function op { @@ -44,275 +26,22 @@ function op { fi case "$2" in - dist) - op $1 prepare - op $1 build - op $1 stage - op $1 pkg - ;; distclean) op $1 unpkg op $1 unstage op $1 unprepare ;; - fetch) - skip=0 - if [ "$(type -t recipe_fetch)" = "function" ] - then - recipe_fetch - fi - if [ "$skip" -eq "0" ] - then - if [ -n "$TAR" ] - then - if [ ! -f source.tar ] - then - wget "$TAR" --continue -O source.tar.tmp - mv source.tar.tmp source.tar - fi - - if [ -n "$TAR_SHA256" ] - then - $SHASUM -c <<< "${TAR_SHA256} source.tar" - fi - - if [ ! -d source ] - then - mkdir source - tar xvf source.tar -C source --strip-components 1 - fi - elif [ -n "$GIT" ] - then - if [ ! -d source ] - then - if [ -n "$BRANCH" ] - then - git clone --recursive "$GIT" -b "$BRANCH" source - else - git clone --recursive "$GIT" source - fi - fi - - pushd source > /dev/null - git remote set-url origin "$GIT" - git fetch origin - if [ -n "$GIT_UPSTREAM" ] - then - git remote set-url upstream "$GIT_UPSTREAM" &> /dev/null || - git remote add upstream "$GIT_UPSTREAM" - git fetch upstream - fi - - ORIGIN_BRANCH="$(git branch --remotes | grep '^ origin/HEAD -> ' | cut -d ' ' -f 5-)" - if [ -n "$BRANCH" ] - then - ORIGIN_BRANCH="origin/$BRANCH" - fi - - if [ "$(git rev-parse HEAD)" != "$(git rev-parse $ORIGIN_BRANCH)" ] - then - git checkout -B "$(echo "$ORIGIN_BRANCH" | cut -d / -f 2-)" "$ORIGIN_BRANCH" - fi - git submodule sync --recursive - git submodule update --init --recursive - popd > /dev/null - fi - fi - ;; unfetch) rm -rfv source source.tar ;; - prepare) - skip=0 - if [ "$(type -t recipe_prepare)" = "function" ] - then - recipe_prepare - fi - if [ "$skip" -eq "0" ] - then - rm -rf "${COOKBOOK_SYSROOT}" - mkdir "${COOKBOOK_SYSROOT}" - - # usrmerge - mkdir "${COOKBOOK_SYSROOT}/usr" - for folder in bin include lib share - do - mkdir "${COOKBOOK_SYSROOT}/usr/${folder}" - ln -s "usr/${folder}" "${COOKBOOK_SYSROOT}/${folder}" - done - - if [ ${#BUILD_DEPENDS} -gt 0 ] - then - pushd $ROOT - ./repo.sh "${BUILD_DEPENDS[@]}" - popd - - for i in "${BUILD_DEPENDS[@]}" - do - pkgar \ - extract \ - "${COOKBOOK_SYSROOT}" \ - --archive "$REPO/$i.pkgar" \ - --pkey "${ROOT}/build/id_ed25519.pub.toml" - done - fi - - rm -rf "${COOKBOOK_BUILD}" - if [ "$PREPARE_COPY" -eq "0" ] - then - mkdir "${COOKBOOK_BUILD}" - else - cp -Rp source "${COOKBOOK_BUILD}" - fi - - for patch in *.patch - do - patch -p1 -d "${COOKBOOK_BUILD}" < "$patch" - done - fi - ;; unprepare) rm -rf "${COOKBOOK_BUILD}" rm -rf "${COOKBOOK_SYSROOT}" ;; - version) - pushd "${COOKBOOK_BUILD}" > /dev/null - skip=0 - if [ "$(type -t recipe_version)" = "function" ] - then - recipe_version - fi - if [ "$skip" -eq "0" ] - then - # there's an unstable built-in cargo config command, so hack around it - cargo-config config package.version | tr -d '"' - fi - popd > /dev/null - ;; - gitversion) - if [ -d "${COOKBOOK_BUILD}"/.git ] - then - echo "$(op $1 version)-$(git -C "${COOKBOOK_BUILD}" rev-parse --short HEAD)" - else - op $1 version - fi - ;; - build) - pushd "${COOKBOOK_BUILD}" > /dev/null - skip=0 - if [ "$(type -t recipe_build)" = "function" ] - then - recipe_build - fi - - release_flag="--release" - if [ "$DEBUG" == 1 ] - then - release_flag= - fi - - if [ -n "$CARGO_PACKAGE" ]; then - package_flag="--package=$CARGO_PACKAGE" - else - package_flag= - fi - - if [ "$skip" -eq "0" ] - then - "${CARGO[@]}" "$CARGOBUILD" --target "$TARGET" $release_flag $package_flag $CARGOFLAGS - fi - popd > /dev/null - ;; - clean) - pushd "${COOKBOOK_BUILD}" > /dev/null - skip=0 - if [ "$(type -t recipe_clean)" = "function" ] - then - recipe_clean - fi - if [ "$skip" -eq "0" ] - then - "${CARGO[@]}" clean - fi - popd > /dev/null - ;; - stage) - op $1 unstage - mkdir -p "${COOKBOOK_STAGE}" - stage="$(realpath "${COOKBOOK_STAGE}")" - source="$(realpath source)" - pushd "${COOKBOOK_BUILD}" > /dev/null - skip=0 - if [ "$(type -t recipe_stage)" = "function" ] - then - recipe_stage "$stage" - fi - if [ "$skip" -eq "0" ] - then - #TODO "${CARGO[@]}" install --root "$stage" $CARGOFLAGS - if [ "$DEBUG" == 1 ] - then - build=debug - else - build=release - fi - - bins="$(find target/$TARGET/$build/ -maxdepth 1 -type f ! -name '*.*')" - if [ -z "$bins" ] || [ "$EXAMPLES" == 1 ] - then - example=true - bins="$bins $(find target/$TARGET/$build/examples/ -maxdepth 1 -type f ! -name '*.*' ! -name '*-*' \ - 2> /dev/null || true)" - fi - if [ -n "$bins" ] - then - if [ -n "$example" ] && [ "$EXAMPLES" != 1 ] - then - echo "$(tput bold)Note$(tput sgr0): No binaries detected, using example binaries" - fi - mkdir -p "$stage/$BINDIR" - for bin in $bins - do - if [ "$DEBUG" == 1 ] - then - cp -v "$bin" "$stage/$BINDIR/$(basename $bin)" - else - "${STRIP}" -v "$bin" -o "$stage/$BINDIR/$(basename $bin)" - fi - done - else - echo "$(tput bold)Warning$(tput sgr0): Recipe does not have any binaries" >&2 - fi - fi - popd > /dev/null - ;; unstage) rm -rfv "${COOKBOOK_STAGE}" rm -fv "${TARGET_DIR}/auto_deps.toml" ;; - pkg) - pkgar \ - create \ - --archive "${COOKBOOK_STAGE}.pkgar" \ - --skey "${ROOT}/build/id_ed25519.toml" \ - "${COOKBOOK_STAGE}" - - # Generate stage.toml - echo "name = \"$1\"" > "${COOKBOOK_STAGE}.toml" - echo "version = \"$(op $1 version)\"" >> "${COOKBOOK_STAGE}.toml" - echo "target = \"$TARGET\"" >> "${COOKBOOK_STAGE}.toml" - - # Add runtime dependencies to package if they exist - if [ -n "$DEPENDS" ] - then - # Remove leading and trailing whitespace, replace whitespace between - # package names with commas, and surround package names with quotes - dependencies=$(echo -e "$DEPENDS" | sed -E 's/^[[:space:]]*//;s/[[:space:]]*$//;s/[[:space:]]+/,/g;s/[^, ][^, ]*/"&"/g') - echo "depends = [$dependencies]" >> "${COOKBOOK_STAGE}.toml" - else - echo "depends = []" >> "${COOKBOOK_STAGE}.toml" - fi - ;; unpkg) rm -fv "${COOKBOOK_STAGE}.pkgar" "${COOKBOOK_STAGE}.toml" ;; @@ -351,10 +80,6 @@ then cd "${COOKBOOK_RECIPE}" - if [ -e recipe.sh ]; then - source recipe.sh - fi - ops=() for arg in "${@:2}" do diff --git a/fetch.sh b/fetch.sh index 060ac6e4..a3bc69c7 100755 --- a/fetch.sh +++ b/fetch.sh @@ -32,10 +32,5 @@ do recipe_path=`target/release/find_recipe $recipe_name` fi - if [ -e "$recipe_path/recipe.toml" ] - then - target/release/cook --fetch-only "$recipe_name" - else - ./cook.sh "$recipe_name" fetch - fi + target/release/cook --fetch-only "$recipe_name" done diff --git a/repo.sh b/repo.sh index 40476cef..8869c0e7 100755 --- a/repo.sh +++ b/repo.sh @@ -34,9 +34,6 @@ then recipes="$(target/release/list_recipes)" fi -# All $recipes that are in the new TOML format. -toml_recipes="" - for recipe in $recipes do recipe_path=`target/release/find_recipe $recipe` @@ -47,65 +44,18 @@ do COOKBOOK_SOURCE="${COOKBOOK_RECIPE}/source" COOKBOOK_SYSROOT="${TARGET_DIR}/sysroot" - if [ -e "${COOKBOOK_RECIPE}/recipe.toml" ] - then - toml_recipes+=" $recipe" - target/release/cook $COOK_OPT "$recipe" - continue - fi - - if [ ! -d "${COOKBOOK_SOURCE}" ] - then - echo -e "\033[01;38;5;155mrepo - fetching $recipe\033[0m" >&2 - ./cook.sh "$recipe" fetch - fi - - if [ ! -d "${COOKBOOK_BUILD}" ] - then - echo -e "\033[01;38;5;155mrepo - preparing $recipe\033[0m" >&2 - ./cook.sh "$recipe" prepare - elif [ ! -d "${COOKBOOK_SYSROOT}" ] - then - echo -e "\033[01;38;5;155mrepo - repreparing $recipe\033[0m" >&2 - ./cook.sh "$recipe" unprepare prepare - else - TIME_SOURCE="$($FIND "${COOKBOOK_SOURCE}" -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" - TIME_BUILD="$($FIND "${COOKBOOK_BUILD}" -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" - if [ "$TIME_SOURCE" -gt "$TIME_BUILD" ] - then - echo -e "\033[01;38;5;155mrepo - repreparing $recipe\033[0m" >&2 - ./cook.sh "$recipe" unprepare prepare - fi - fi - - if [ ! -f "${COOKBOOK_STAGE}.pkgar" ] - then - echo -e "\033[01;38;5;155mrepo - building $recipe\033[0m" >&2 - ./cook.sh "$recipe" build stage pkg $DEBUG - else - TIME_BUILD="$($FIND "${COOKBOOK_BUILD}" -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)" - TIME_STAGE="$($STAT -c "%Y" "${COOKBOOK_STAGE}.pkgar")" - TIME_RECIPE="$($FIND "${COOKBOOK_RECIPE}"/{recipe.sh,*.patch} -printf '%Ts\n' | sort -nr | head -n 1)" - if [ "$TIME_BUILD" -gt "$TIME_STAGE" -o "$TIME_RECIPE" -gt "$TIME_STAGE" ] - then - echo -e "\033[01;38;5;155mrepo - rebuilding $recipe\033[0m" >&2 - ./cook.sh "$recipe" untar unstage build stage pkg $DEBUG - else - echo -e "\033[01;38;5;155mrepo - $recipe up to date\033[0m" >&2 - fi - fi + target/release/cook $COOK_OPT "$recipe" done mkdir -p "$REPO" declare -A APPSTREAM_SOURCES -# Currently, we only support runtime dependencies for recipes in the new TOML -# format. Runtime dependencies include both `[package.dependencies]` and -# dynamically linked packages discovered by auto_deps. -# +# Runtime dependencies include both `[package.dependencies]` and dynamically +# linked packages discovered by auto_deps. +# # The following adds the package dependencies of the recipes to the repo as # well. -recipes="$recipes $(target/release/pkg_deps $toml_recipes)" +recipes="$recipes $(target/release/pkg_deps $recipes)" target/release/repo_builder "$REPO" $recipes From 24eccf7093faf9055fba638cca4832b7d4669731 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Mon, 1 Sep 2025 21:52:06 +0200 Subject: [PATCH 2775/3180] Remove cook.sh --- clean.sh | 22 ++++++++++- cook.sh | 105 ----------------------------------------------------- unfetch.sh | 13 ++++++- 3 files changed, 31 insertions(+), 109 deletions(-) delete mode 100755 cook.sh diff --git a/clean.sh b/clean.sh index 7aba7ca8..c1ed4cf2 100755 --- a/clean.sh +++ b/clean.sh @@ -10,7 +10,25 @@ else recipes="$@" fi -for recipe_path in $recipes +for recipe in $recipes do - ./cook.sh "$recipe_path" distclean + if (echo "$recipe" | grep '.*/.*' >/dev/null); then + recipe_name=$(basename "$recipe") + recipe_path="$recipe" + else + recipe_name="$recipe" + recipe_path=`target/release/find_recipe $recipe` + fi + + echo -e "\033[01;38;5;215mcook - clean $recipe_name\033[0m" + + if [ -d "$ROOT/$recipe_path" ] + then + COOKBOOK_RECIPE="${ROOT}/$recipe_path" + TARGET_DIR="${ROOT}/$recipe_path/target/${TARGET}" + + rm -rf "${TARGET_DIR}" + else + echo "clean.sh: recipe '$recipe_name' not found" >&2 + fi done diff --git a/cook.sh b/cook.sh deleted file mode 100755 index ad457277..00000000 --- a/cook.sh +++ /dev/null @@ -1,105 +0,0 @@ -#!/usr/bin/env bash -set -e -shopt -s nullglob - -source config.sh - -# Variables to be overriden by recipes -export BINDIR=bin -export CARGO=(env RUSTFLAGS="$PREFIX_RUSTFLAGS -C link-arg=-zmuldefs" cargo) -export CARGOBUILD=rustc -export CARGOFLAGS= -export DEBUG= -export EXAMPLES= -export PREPARE_COPY=1 - -function usage { - echo "cook.sh $1 " >&2 - echo " distclean" >&2 - echo " unfetch" >&2 -} - -function op { - if [ ! "$COOK_QUIET" = "1" ] - then - echo -e "\033[01;38;5;215mcook - $1 $2\033[0m" >&2 - fi - - case "$2" in - distclean) - op $1 unpkg - op $1 unstage - op $1 unprepare - ;; - unfetch) - rm -rfv source source.tar - ;; - unprepare) - rm -rf "${COOKBOOK_BUILD}" - rm -rf "${COOKBOOK_SYSROOT}" - ;; - unstage) - rm -rfv "${COOKBOOK_STAGE}" - rm -fv "${TARGET_DIR}/auto_deps.toml" - ;; - unpkg) - rm -fv "${COOKBOOK_STAGE}.pkgar" "${COOKBOOK_STAGE}.toml" - ;; - *) - usage $1 - ;; - esac -} - -if [ -n "$1" ] -then - if (echo "$1" | grep '.*/.*' >/dev/null); then - recipe_name=$(basename "$1") - recipe_path="$1" - else - recipe_name="$1" - recipe_path=`target/release/find_recipe $recipe_name` - fi - - if [ -d "$ROOT/$recipe_path" ] - then - export COOKBOOK_RECIPE="${ROOT}/$recipe_path" - - TARGET_DIR="${COOKBOOK_RECIPE}/target/${TARGET}" - mkdir -p "${TARGET_DIR}" - - export COOKBOOK_BUILD="${TARGET_DIR}/build" - export COOKBOOK_STAGE="${TARGET_DIR}/stage" - export COOKBOOK_SOURCE="${COOKBOOK_RECIPE}/source" - export COOKBOOK_SYSROOT="${TARGET_DIR}/sysroot" - - export PKG_CONFIG_ALLOW_CROSS=1 - export PKG_CONFIG_PATH= - export PKG_CONFIG_LIBDIR="${COOKBOOK_SYSROOT}/lib/pkgconfig" - export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" - - cd "${COOKBOOK_RECIPE}" - - ops=() - for arg in "${@:2}" - do - if [ "$arg" == "--debug" ] - then - DEBUG=1 - else - ops[${#ops[@]}]="$arg" - fi - done - - for i in "${ops[@]}" - do - op "$recipe_name" "$i" - done - elif [ "$IGNORE_ERROR" != "1" ] - then - echo "cook.sh: recipe '$recipe_name' at not found" >&2 - exit 1 - fi -else - usage "{package}" -fi diff --git a/unfetch.sh b/unfetch.sh index eb73178c..d8016a05 100755 --- a/unfetch.sh +++ b/unfetch.sh @@ -10,7 +10,16 @@ else recipes="$@" fi -for recipe_path in $recipes +for recipe in $recipes do - ./cook.sh "$recipe_path" unfetch + if (echo "$recipe" | grep '.*/.*' >/dev/null); then + recipe_name=$(basename "$recipe") + recipe_path="$recipe" + else + recipe_name="$recipe" + recipe_path=`target/release/find_recipe $recipe` + fi + + rm -rfv "$recipe_path"/source "$recipe_path"/source.tar done + From 081367d343155280636c3d1dd246a569193f8881 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Tue, 2 Sep 2025 15:31:26 +0000 Subject: [PATCH 2776/3180] Fix relibc tests --- recipes/tests/relibc-tests/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/tests/relibc-tests/recipe.toml b/recipes/tests/relibc-tests/recipe.toml index 023ac741..8f587bb5 100644 --- a/recipes/tests/relibc-tests/recipe.toml +++ b/recipes/tests/relibc-tests/recipe.toml @@ -8,7 +8,7 @@ script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ pushd tests export CARGO_TEST="${COOKBOOK_CARGO}" -export NATIVE_RELIBC=1 +export NATIVE_RELIBC=0 # set 0 to link against relibc "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" all bins_verify/relibc-tests popd mkdir -pv "${COOKBOOK_STAGE}/share/relibc" From bf026ddaf813d0d6a8a3231e167ee1230ad8bbdb Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Tue, 2 Sep 2025 20:33:37 +0200 Subject: [PATCH 2777/3180] Couple more cleanups --- clean.sh | 11 +---------- config.sh | 18 +----------------- repo.sh | 15 +++------------ 3 files changed, 5 insertions(+), 39 deletions(-) diff --git a/clean.sh b/clean.sh index c1ed4cf2..45c2e14a 100755 --- a/clean.sh +++ b/clean.sh @@ -21,14 +21,5 @@ do fi echo -e "\033[01;38;5;215mcook - clean $recipe_name\033[0m" - - if [ -d "$ROOT/$recipe_path" ] - then - COOKBOOK_RECIPE="${ROOT}/$recipe_path" - TARGET_DIR="${ROOT}/$recipe_path/target/${TARGET}" - - rm -rf "${TARGET_DIR}" - else - echo "clean.sh: recipe '$recipe_name' not found" >&2 - fi + rm -rf "${ROOT}/$recipe_path/target/${TARGET}" done diff --git a/config.sh b/config.sh index f3a3b2de..71131eb8 100755 --- a/config.sh +++ b/config.sh @@ -14,7 +14,6 @@ fi # Automatic variables ROOT="$(cd `dirname "$0"` && pwd)" -REPO="$ROOT/repo/$TARGET" export PATH="${ROOT}/bin:$PATH" export AR="${HOST}-gcc-ar" @@ -43,26 +42,11 @@ export PKG_CONFIG_FOR_BUILD="pkg-config" if [[ "$OSTYPE" == "darwin"* ]] || [[ "$OSTYPE" == "FreeBSD" ]]; then # GNU find FIND="gfind"; - - # GNU stat from Homebrew or MacPorts - if [ ! -z "$(which brew)" ]; then - STAT="$(brew --prefix)/opt/coreutils/libexec/gnubin/stat"; - elif [ ! -z "$(which port)" ]; then - # TODO: find a programatic way of asking MacPorts for it's root dir. - STAT="/opt/local/opt/coreutils/libexec/gnubin/stat"; - elif [ ! -z "$(which pkg)" ]; then - STAT="gnustat" - else - echo "Please install either Homebrew or MacPorts and run the boostrap script." - exit 1 - fi else - FIND="find" - STAT="stat"; + FIND="find"; fi export FIND -export STAT if [ ! "$(uname -s)" = "Redox" ] then diff --git a/repo.sh b/repo.sh index 8869c0e7..99ec7f27 100755 --- a/repo.sh +++ b/repo.sh @@ -36,20 +36,11 @@ fi for recipe in $recipes do - recipe_path=`target/release/find_recipe $recipe` - COOKBOOK_RECIPE="$recipe_path" - TARGET_DIR="${COOKBOOK_RECIPE}/target/${TARGET}" - COOKBOOK_BUILD="${TARGET_DIR}/build" - COOKBOOK_STAGE="${TARGET_DIR}/stage" - COOKBOOK_SOURCE="${COOKBOOK_RECIPE}/source" - COOKBOOK_SYSROOT="${TARGET_DIR}/sysroot" - target/release/cook $COOK_OPT "$recipe" done -mkdir -p "$REPO" - -declare -A APPSTREAM_SOURCES +repo="$ROOT/repo/$TARGET" +mkdir -p "$repo" # Runtime dependencies include both `[package.dependencies]` and dynamically # linked packages discovered by auto_deps. @@ -58,4 +49,4 @@ declare -A APPSTREAM_SOURCES # well. recipes="$recipes $(target/release/pkg_deps $recipes)" -target/release/repo_builder "$REPO" $recipes +target/release/repo_builder "$repo" $recipes From 87699a364e132b4c55d3347cea3ce14f3c2b7777 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Tue, 2 Sep 2025 20:43:39 +0200 Subject: [PATCH 2778/3180] Only accept recipe name in shell scripts Rather than recipe path. --- clean.sh | 12 +++--------- fetch.sh | 10 +--------- unfetch.sh | 13 ++++--------- 3 files changed, 8 insertions(+), 27 deletions(-) diff --git a/clean.sh b/clean.sh index 45c2e14a..e26dba32 100755 --- a/clean.sh +++ b/clean.sh @@ -5,20 +5,14 @@ source config.sh if [ $# = 0 ] then - recipes="$(target/release/list_recipes)" + recipes="$(target/release/list_recipes --short)" else recipes="$@" fi -for recipe in $recipes +for recipe_name in $recipes do - if (echo "$recipe" | grep '.*/.*' >/dev/null); then - recipe_name=$(basename "$recipe") - recipe_path="$recipe" - else - recipe_name="$recipe" - recipe_path=`target/release/find_recipe $recipe` - fi + recipe_path=`target/release/find_recipe $recipe_name` echo -e "\033[01;38;5;215mcook - clean $recipe_name\033[0m" rm -rf "${ROOT}/$recipe_path/target/${TARGET}" diff --git a/fetch.sh b/fetch.sh index a3bc69c7..1ca153c5 100755 --- a/fetch.sh +++ b/fetch.sh @@ -22,15 +22,7 @@ then recipes="$(target/release/list_recipes)" fi -for recipe_path in $recipes +for recipe_name in $recipes do - if (echo "$recipe_path" | grep '.*/.*' >/dev/null); then - recipe_name=$(basename "$recipe_path") - recipe_path="$recipe_path" - else - recipe_name="$recipe_path" - recipe_path=`target/release/find_recipe $recipe_name` - fi - target/release/cook --fetch-only "$recipe_name" done diff --git a/unfetch.sh b/unfetch.sh index d8016a05..6763ff82 100755 --- a/unfetch.sh +++ b/unfetch.sh @@ -5,21 +5,16 @@ source config.sh if [ $# = 0 ] then - recipes="$(target/release/list_recipes)" + recipes="$(target/release/list_recipes --short)" else recipes="$@" fi -for recipe in $recipes +for recipe_name in $recipes do - if (echo "$recipe" | grep '.*/.*' >/dev/null); then - recipe_name=$(basename "$recipe") - recipe_path="$recipe" - else - recipe_name="$recipe" - recipe_path=`target/release/find_recipe $recipe` - fi + recipe_path=`target/release/find_recipe $recipe_name` + echo -e "\033[01;38;5;215mcook - unfetch $recipe_name\033[0m" rm -rfv "$recipe_path"/source "$recipe_path"/source.tar done From 7388bc9d0170e2dd29e64e7fca39bb39bee12a22 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Tue, 2 Sep 2025 20:46:36 +0200 Subject: [PATCH 2779/3180] Don't allow empty package list in fetch.sh and repo.sh --- fetch.sh | 5 ----- repo.sh | 5 ----- 2 files changed, 10 deletions(-) diff --git a/fetch.sh b/fetch.sh index 1ca153c5..a6b7b67c 100755 --- a/fetch.sh +++ b/fetch.sh @@ -17,11 +17,6 @@ do fi done -if [ "$recipes" == "" ] -then - recipes="$(target/release/list_recipes)" -fi - for recipe_name in $recipes do target/release/cook --fetch-only "$recipe_name" diff --git a/repo.sh b/repo.sh index 99ec7f27..c0125c97 100755 --- a/repo.sh +++ b/repo.sh @@ -29,11 +29,6 @@ do fi done -if [ "$recipes" == "" ] -then - recipes="$(target/release/list_recipes)" -fi - for recipe in $recipes do target/release/cook $COOK_OPT "$recipe" From 13d9e4794f761f8e53e91b783125ceaf5ed33e15 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Tue, 2 Sep 2025 20:52:44 +0200 Subject: [PATCH 2780/3180] Move handling of multiple recipes into cook --- fetch.sh | 10 ++-------- repo.sh | 12 +++--------- src/bin/cook.rs | 12 ++++++++---- 3 files changed, 13 insertions(+), 21 deletions(-) diff --git a/fetch.sh b/fetch.sh index a6b7b67c..dd7481ae 100755 --- a/fetch.sh +++ b/fetch.sh @@ -6,10 +6,7 @@ source config.sh recipes="" for arg in "${@:1}" do - if [ "$arg" == "--nonstop" ] - then - set +e - elif [ "$arg" == "--offline" ] + if [ "$arg" == "--offline" ] then export COOKBOOK_OFFLINE="1" else @@ -17,7 +14,4 @@ do fi done -for recipe_name in $recipes -do - target/release/cook --fetch-only "$recipe_name" -done +target/release/cook --fetch-only $recipes diff --git a/repo.sh b/repo.sh index c0125c97..5e0f9881 100755 --- a/repo.sh +++ b/repo.sh @@ -12,15 +12,12 @@ do if [ "$arg" == "--appstream" ] then APPSTREAM="1" - elif [ "$arg" == "--debug" ] - then - DEBUG=--debug elif [ "$arg" == "--with-package-deps" ] then - COOK_OPT=--with-package-deps + COOK_OPT+=" --with-package-deps" elif [ "$arg" == "--nonstop" ] then - set +e + COOK_OPT+=" --nonstop" elif [ "$arg" == "--offline" ] then export COOKBOOK_OFFLINE="1" @@ -29,10 +26,7 @@ do fi done -for recipe in $recipes -do - target/release/cook $COOK_OPT "$recipe" -done +target/release/cook $COOK_OPT $recipes repo="$ROOT/repo/$TARGET" mkdir -p "$repo" diff --git a/src/bin/cook.rs b/src/bin/cook.rs index ca2e4484..70a186a3 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -928,7 +928,7 @@ EOF -Wno-dev \ "${COOKBOOK_CMAKE_FLAGS[@]}" \ "$@" - + "${COOKBOOK_NINJA}" -j"${COOKBOOK_MAKE_JOBS}" DESTDIR="${COOKBOOK_STAGE}" "${COOKBOOK_NINJA}" install -j"${COOKBOOK_MAKE_JOBS}" } @@ -996,7 +996,7 @@ function cookbook_meson { let post_script = r#"# Common post script # Strip binaries -for dir in "${COOKBOOK_STAGE}/bin" "${COOKBOOK_STAGE}/usr/bin" +for dir in "${COOKBOOK_STAGE}/bin" "${COOKBOOK_STAGE}/usr/bin" do if [ -d "${dir}" ] && [ -z "${COOKBOOK_NOSTRIP}" ] then @@ -1005,7 +1005,7 @@ do done # Remove libtool files -for dir in "${COOKBOOK_STAGE}/lib" "${COOKBOOK_STAGE}/usr/lib" +for dir in "${COOKBOOK_STAGE}/lib" "${COOKBOOK_STAGE}/usr/lib" do if [ -d "${dir}" ] then @@ -1282,6 +1282,7 @@ fn main() { let mut fetch_only = false; let mut with_package_deps = false; let mut quiet = false; + let mut nonstop = false; let mut recipe_names = Vec::new(); for arg in env::args().skip(1) { match arg.as_str() { @@ -1290,6 +1291,7 @@ fn main() { "--with-package-deps" if matching => with_package_deps = true, "--fetch-only" if matching => fetch_only = true, "-q" | "--quiet" if matching => quiet = true, + "--nonstop" => nonstop = true, _ => recipe_names.push(arg.try_into().expect("Invalid package name")), } } @@ -1370,7 +1372,9 @@ fn main() { style::Reset, err, ); - process::exit(1); + if !nonstop { + process::exit(1); + } } } } From 2e3c52d69a2b66c8e25a448bc37d53e91ab60f99 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 3 Sep 2025 10:22:16 +0700 Subject: [PATCH 2781/3180] Add neovim deps --- recipes/wip/libs/lua/lpeg/recipe.toml | 14 +++++++++ recipes/wip/libs/other/libtickit/recipe.toml | 12 +++++++- recipes/wip/libs/other/libvterm/recipe.toml | 10 ++++++- recipes/wip/libs/other/termcap/recipe.toml | 10 +++++-- .../wip/libs/other/tree-sitter/recipe.toml | 9 ++++++ recipes/wip/text/neovim/recipe.toml | 30 +++++-------------- 6 files changed, 58 insertions(+), 27 deletions(-) create mode 100644 recipes/wip/libs/lua/lpeg/recipe.toml create mode 100644 recipes/wip/libs/other/tree-sitter/recipe.toml diff --git a/recipes/wip/libs/lua/lpeg/recipe.toml b/recipes/wip/libs/lua/lpeg/recipe.toml new file mode 100644 index 00000000..2f9fd413 --- /dev/null +++ b/recipes/wip/libs/lua/lpeg/recipe.toml @@ -0,0 +1,14 @@ +[source] +tar = "https://www.inf.puc-rio.br/~roberto/lpeg/lpeg-1.1.0.tar.gz" + +[build] +template = "custom" +dependencies = [ + "lua54", +] +script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ +make linux +mkdir -p ${COOKBOOK_STAGE}/usr/lib +cp *.so ${COOKBOOK_STAGE}/usr/lib +""" \ No newline at end of file diff --git a/recipes/wip/libs/other/libtickit/recipe.toml b/recipes/wip/libs/other/libtickit/recipe.toml index bc3f1018..f20edf87 100644 --- a/recipes/wip/libs/other/libtickit/recipe.toml +++ b/recipes/wip/libs/other/libtickit/recipe.toml @@ -1,5 +1,15 @@ #TODO missing script for building, see https://github.com/leonerd/libtickit [source] -tar = "https://www.leonerd.org.uk/code/libtickit/libtickit-0.4.3.tar.gz" +tar = "https://www.leonerd.org.uk/code/libtickit/libtickit-0.4.5.tar.gz" [build] template = "custom" +dependencies = [ + "ncursesw" +] +script = """ +DYNAMIC_INIT +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ + +"${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" +"${COOKBOOK_MAKE}" install-inc install-lib DESTDIR="${COOKBOOK_STAGE}" +""" diff --git a/recipes/wip/libs/other/libvterm/recipe.toml b/recipes/wip/libs/other/libvterm/recipe.toml index cf68b3dc..4deb0f1d 100644 --- a/recipes/wip/libs/other/libvterm/recipe.toml +++ b/recipes/wip/libs/other/libvterm/recipe.toml @@ -2,4 +2,12 @@ [source] tar = "https://launchpad.net/libvterm/trunk/v0.3/+download/libvterm-0.3.3.tar.gz" [build] -template = "configure" +template = "custom" +script = """ +DYNAMIC_INIT + +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ + +${COOKBOOK_MAKE} -j ${COOKBOOK_MAKE_JOBS} install \ + PREFIX="${COOKBOOK_STAGE}" +""" diff --git a/recipes/wip/libs/other/termcap/recipe.toml b/recipes/wip/libs/other/termcap/recipe.toml index d63ea82f..77eadc22 100644 --- a/recipes/wip/libs/other/termcap/recipe.toml +++ b/recipes/wip/libs/other/termcap/recipe.toml @@ -1,5 +1,11 @@ -#TODO non-sense "permission denied" error +#TODO need testing [source] tar = "https://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz" [build] -template = "configure" +template = "custom" +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --prefix="${COOKBOOK_STAGE}/usr" +) +cookbook_configure +""" diff --git a/recipes/wip/libs/other/tree-sitter/recipe.toml b/recipes/wip/libs/other/tree-sitter/recipe.toml new file mode 100644 index 00000000..63295a44 --- /dev/null +++ b/recipes/wip/libs/other/tree-sitter/recipe.toml @@ -0,0 +1,9 @@ +[source] +tar = "https://github.com/tree-sitter/tree-sitter/archive/refs/tags/v0.25.8.tar.gz" + +[build] +template = "custom" +script = """ +DYNAMIC_INIT +PACKAGE_PATH=cli cookbook_cargo +""" diff --git a/recipes/wip/text/neovim/recipe.toml b/recipes/wip/text/neovim/recipe.toml index 205af461..abd43b7b 100644 --- a/recipes/wip/text/neovim/recipe.toml +++ b/recipes/wip/text/neovim/recipe.toml @@ -1,29 +1,13 @@ #TODO probably wrong script, see https://github.com/neovim/neovim/wiki/Installing-Neovim#install-from-source [source] -git = "https://github.com/neovim/neovim" -rev = "d772f697a281ce9c58bf933997b87c7f27428a60" +tar = "https://github.com/neovim/neovim/archive/refs/tags/v0.11.3.tar.gz" + [build] -template = "custom" +template = "cmake" dependencies = [ - "luajit", - "gettext", - "less", + "lua54", + "libiconv", "libuv", - "libvterm", - "libtickit", + "luv", + "lpeg", ] -script = """ - COOKBOOK_CONFIGURE="cmake" - COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" From 20a523f414cd16483824135d6f58506478a7f639 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Wed, 3 Sep 2025 03:28:57 +0000 Subject: [PATCH 2782/3180] Port htop --- recipes/wip/monitors/htop/recipe.toml | 30 +++++++++++++++------------ 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/recipes/wip/monitors/htop/recipe.toml b/recipes/wip/monitors/htop/recipe.toml index 6116bcbc..8730648e 100644 --- a/recipes/wip/monitors/htop/recipe.toml +++ b/recipes/wip/monitors/htop/recipe.toml @@ -1,18 +1,22 @@ -#TODO compilation error -#TODO port to redox -#TODO make ncursesw work -# build instructions - https://github.com/htop-dev/htop#build-instructions +#TODO "unsupported architecture" [source] -tar = "https://github.com/htop-dev/htop/releases/download/3.3.0/htop-3.3.0.tar.xz" +git = "https://github.com/willnode/htop" +branch = "redox" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + [build] -template = "custom" +template = "configure" +configureflags = [ + "--disable-unicode", +] dependencies = [ "ncurses", ] -script = """ -export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" -COOKBOOK_CONFIGURE_FLAGS+=( - --disable-unicode -) -cookbook_configure -""" + +[package] +dependencies = [ + "terminfo" +] From 70fba227648048eab36c695495ad5fc67e8cbc5f Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Thu, 4 Sep 2025 11:48:00 +0000 Subject: [PATCH 2783/3180] Use fork instead --- recipes/wip/dev/lang/zig/01_redox.patch | 83 ------------------------- recipes/wip/dev/lang/zig/recipe.toml | 23 ++++--- 2 files changed, 14 insertions(+), 92 deletions(-) delete mode 100644 recipes/wip/dev/lang/zig/01_redox.patch diff --git a/recipes/wip/dev/lang/zig/01_redox.patch b/recipes/wip/dev/lang/zig/01_redox.patch deleted file mode 100644 index 093eb2f4..00000000 --- a/recipes/wip/dev/lang/zig/01_redox.patch +++ /dev/null @@ -1,83 +0,0 @@ -diff -ruwN source/build.zig source-new/build.zig ---- source/build.zig 2025-05-23 11:31:41 -+++ source-new/build.zig 2025-08-04 17:06:57 -@@ -802,7 +802,7 @@ - try addCxxKnownPath(b, cfg, exe, b.fmt("libstdc++.{s}", .{lib_suffix}), null, need_cpp_includes); - try addCxxKnownPath(b, cfg, exe, b.fmt("libgcc_eh.{s}", .{lib_suffix}), null, need_cpp_includes); - }, -- .haiku => { -+ .haiku, .redox => { - try addCxxKnownPath(b, cfg, exe, b.fmt("libstdc++.{s}", .{lib_suffix}), null, need_cpp_includes); - }, - else => {}, -diff -ruwN source/lib/std/Target.zig source-new/lib/std/Target.zig ---- source/lib/std/Target.zig 2025-05-23 11:31:41 -+++ source-new/lib/std/Target.zig 2025-08-04 16:59:08 -@@ -29,6 +29,7 @@ - hurd, - linux, - plan9, -+ redox, - rtems, - serenity, - zos, -@@ -904,6 +905,7 @@ - .fuchsia, - .hermit, - .plan9, -+ .redox, - .serenity, - .zos, - .dragonfly, -@@ -2435,6 +2437,16 @@ - else - "/usr", - }) else none, -+ -+ .redox => switch (cpu.arch) { -+ .x86, -+ => init("/usr/lib/ld.so.1"), -+ .aarch64, -+ .riscv64, -+ .x86_64, -+ => init("/usr/lib/ld64.so.1"), -+ else => none, -+ }, - - .freebsd => switch (cpu.arch) { - .arm, -diff -ruwN source/test/llvm_targets.zig source-new/test/llvm_targets.zig ---- source/test/llvm_targets.zig 2025-05-23 11:31:41 -+++ source-new/test/llvm_targets.zig 2025-08-04 17:02:56 -@@ -20,6 +20,7 @@ - .{ .cpu_arch = .aarch64, .os_tag = .macos, .abi = .none }, - .{ .cpu_arch = .aarch64, .os_tag = .netbsd, .abi = .none }, - .{ .cpu_arch = .aarch64, .os_tag = .openbsd, .abi = .none }, -+ .{ .cpu_arch = .aarch64, .os_tag = .redox, .abi = .none }, - .{ .cpu_arch = .aarch64, .os_tag = .rtems, .abi = .none }, - .{ .cpu_arch = .aarch64, .os_tag = .serenity, .abi = .none }, - .{ .cpu_arch = .aarch64, .os_tag = .tvos, .abi = .none }, -@@ -238,6 +239,7 @@ - .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .none }, - .{ .cpu_arch = .riscv64, .os_tag = .netbsd, .abi = .none }, - .{ .cpu_arch = .riscv64, .os_tag = .openbsd, .abi = .none }, -+ .{ .cpu_arch = .riscv64, .os_tag = .redox, .abi = .none }, - .{ .cpu_arch = .riscv64, .os_tag = .rtems, .abi = .none }, - .{ .cpu_arch = .riscv64, .os_tag = .serenity, .abi = .none }, - // .{ .cpu_arch = .riscv64, .os_tag = .uefi, .abi = .none }, -@@ -325,6 +327,7 @@ - .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .none }, - .{ .cpu_arch = .x86, .os_tag = .netbsd, .abi = .none }, - .{ .cpu_arch = .x86, .os_tag = .openbsd, .abi = .none }, -+ .{ .cpu_arch = .x86, .os_tag = .redox, .abi = .none }, - .{ .cpu_arch = .x86, .os_tag = .rtems, .abi = .none }, - .{ .cpu_arch = .x86, .os_tag = .solaris, .abi = .none }, - .{ .cpu_arch = .x86, .os_tag = .uefi, .abi = .none }, -@@ -361,6 +364,7 @@ - .{ .cpu_arch = .x86_64, .os_tag = .macos, .abi = .none }, - .{ .cpu_arch = .x86_64, .os_tag = .netbsd, .abi = .none }, - .{ .cpu_arch = .x86_64, .os_tag = .openbsd, .abi = .none }, -+ .{ .cpu_arch = .x86_64, .os_tag = .redox, .abi = .none }, - .{ .cpu_arch = .x86_64, .os_tag = .rtems, .abi = .none }, - .{ .cpu_arch = .x86_64, .os_tag = .serenity, .abi = .none }, - .{ .cpu_arch = .x86_64, .os_tag = .solaris, .abi = .none }, diff --git a/recipes/wip/dev/lang/zig/recipe.toml b/recipes/wip/dev/lang/zig/recipe.toml index c88b9070..f5103b29 100644 --- a/recipes/wip/dev/lang/zig/recipe.toml +++ b/recipes/wip/dev/lang/zig/recipe.toml @@ -1,16 +1,21 @@ -#TODO see https://github.com/ziglang/zig/wiki/Building-Zig-From-Source +#TODO requires openat functions and posix_getdents to compile [source] -tar = "https://ziglang.org/download/0.14.1/zig-0.14.1.tar.xz" -patches = [ - "01_redox.patch" -] +git = "https://github.com/willnode/zig" +branch = "zig-0.15-redox" [build] -dependencies = [ - "llvm18" # need lld -] template = "custom" script = """ DYNAMIC_INIT -cookbook_cmake +rsync -av --delete "${COOKBOOK_SOURCE}"/* ./ +export ZIG_BOOTSTRAP_CFLAGS="$CFLAGS" +export ZIG_BOOTSTRAP_LDFLAGS="$LDFLAGS" +export ZIG_BOOTSTRAP_TARGET_CC="${TARGET}-gcc" +export ZIG_HOST_TARGET_TRIPLE="${TARGET%%-*}-redox" +unset AR AS CC CXX LD LDFLAGS NM OBJCOPY OBJDUMP RANLIB READELF RUSTFLAGS STRIP +cc bootstrap.c -o ./bootstrap +./bootstrap + +mkdir -pv "${COOKBOOK_STAGE}/usr/bin" +cp -v "zig2" "${COOKBOOK_STAGE}/usr/bin/zig" """ From 5a666533304d5f6a6a002665c7ea435394b1de45 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 4 Sep 2025 19:41:36 -0300 Subject: [PATCH 2784/3180] Add recipes --- recipes/wip/demos/feoxdb/recipe.toml | 8 ++++++++ recipes/wip/demos/genpdf-rs/recipe.toml | 8 ++++++++ recipes/wip/demos/reticulum-rs/recipe.toml | 9 +++++++++ recipes/wip/monitors/socktop/recipe.toml | 8 ++++++++ recipes/wip/net/analysis/angryether-rs/recipe.toml | 5 +++++ recipes/wip/net/remote/bayesian-ssh/recipe.toml | 5 +++++ recipes/wip/net/server/feox-server/recipe.toml | 5 +++++ recipes/wip/office/doxx/recipe.toml | 5 +++++ recipes/wip/security/safecloset/recipe.toml | 5 +++++ recipes/wip/sound/jukebox-cli/recipe.toml | 5 +++++ recipes/wip/sys-info/ffetch/recipe.toml | 5 +++++ 11 files changed, 68 insertions(+) create mode 100644 recipes/wip/demos/feoxdb/recipe.toml create mode 100644 recipes/wip/demos/genpdf-rs/recipe.toml create mode 100644 recipes/wip/demos/reticulum-rs/recipe.toml create mode 100644 recipes/wip/monitors/socktop/recipe.toml create mode 100644 recipes/wip/net/analysis/angryether-rs/recipe.toml create mode 100644 recipes/wip/net/remote/bayesian-ssh/recipe.toml create mode 100644 recipes/wip/net/server/feox-server/recipe.toml create mode 100644 recipes/wip/office/doxx/recipe.toml create mode 100644 recipes/wip/security/safecloset/recipe.toml create mode 100644 recipes/wip/sound/jukebox-cli/recipe.toml create mode 100644 recipes/wip/sys-info/ffetch/recipe.toml diff --git a/recipes/wip/demos/feoxdb/recipe.toml b/recipes/wip/demos/feoxdb/recipe.toml new file mode 100644 index 00000000..84b8e46c --- /dev/null +++ b/recipes/wip/demos/feoxdb/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/mehrantsi/FeOxDB" +[build] +template = "custom" +script = """ +cookbook_cargo_examples basic_usage deterministic_test +""" diff --git a/recipes/wip/demos/genpdf-rs/recipe.toml b/recipes/wip/demos/genpdf-rs/recipe.toml new file mode 100644 index 00000000..20fc1c82 --- /dev/null +++ b/recipes/wip/demos/genpdf-rs/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://git.sr.ht/~ireas/genpdf-rs" +[build] +template = "custom" +script = """ +cookbook_cargo_examples demo +""" diff --git a/recipes/wip/demos/reticulum-rs/recipe.toml b/recipes/wip/demos/reticulum-rs/recipe.toml new file mode 100644 index 00000000..f4064148 --- /dev/null +++ b/recipes/wip/demos/reticulum-rs/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +# the protobuf compiler needs to be installed +[source] +git = "https://github.com/BeechatNetworkSystemsLtd/Reticulum-rs" +[build] +template = "custom" +script = """ +cookbook_cargo_examples tcp_client kaonic_client +""" diff --git a/recipes/wip/monitors/socktop/recipe.toml b/recipes/wip/monitors/socktop/recipe.toml new file mode 100644 index 00000000..ab499e0e --- /dev/null +++ b/recipes/wip/monitors/socktop/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/jasonwitty/socktop" +[build] +template = "custom" +script = """ +cookbook_cargo_packages socktop socktop_agent +""" diff --git a/recipes/wip/net/analysis/angryether-rs/recipe.toml b/recipes/wip/net/analysis/angryether-rs/recipe.toml new file mode 100644 index 00000000..e780647d --- /dev/null +++ b/recipes/wip/net/analysis/angryether-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/pg3uk/AngryEtherRust" +[build] +template = "cargo" diff --git a/recipes/wip/net/remote/bayesian-ssh/recipe.toml b/recipes/wip/net/remote/bayesian-ssh/recipe.toml new file mode 100644 index 00000000..2b0c18fc --- /dev/null +++ b/recipes/wip/net/remote/bayesian-ssh/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/abdoufermat5/bayesian-ssh" +[build] +template = "cargo" diff --git a/recipes/wip/net/server/feox-server/recipe.toml b/recipes/wip/net/server/feox-server/recipe.toml new file mode 100644 index 00000000..c2aa744d --- /dev/null +++ b/recipes/wip/net/server/feox-server/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/mehrantsi/feox-server" +[build] +template = "cargo" diff --git a/recipes/wip/office/doxx/recipe.toml b/recipes/wip/office/doxx/recipe.toml new file mode 100644 index 00000000..4375cd1e --- /dev/null +++ b/recipes/wip/office/doxx/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/bgreenwell/doxx" +[build] +template = "cargo" diff --git a/recipes/wip/security/safecloset/recipe.toml b/recipes/wip/security/safecloset/recipe.toml new file mode 100644 index 00000000..4617d7af --- /dev/null +++ b/recipes/wip/security/safecloset/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Canop/safecloset" +[build] +template = "cargo" diff --git a/recipes/wip/sound/jukebox-cli/recipe.toml b/recipes/wip/sound/jukebox-cli/recipe.toml new file mode 100644 index 00000000..f47b4510 --- /dev/null +++ b/recipes/wip/sound/jukebox-cli/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/FedeCarollo/jukebox-cli" +[build] +template = "cargo" diff --git a/recipes/wip/sys-info/ffetch/recipe.toml b/recipes/wip/sys-info/ffetch/recipe.toml new file mode 100644 index 00000000..8b23aada --- /dev/null +++ b/recipes/wip/sys-info/ffetch/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/0l3d/ffetch" +[build] +template = "cargo" From 04d88c61097a309afef69bc900930f6ebdfb0f13 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Tue, 2 Sep 2025 21:30:57 +0200 Subject: [PATCH 2785/3180] Replace COOKBOOK_OFFLINE with --offline --- fetch.sh | 13 +------------ repo.sh | 2 +- src/bin/cook.rs | 12 ++++++++++-- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/fetch.sh b/fetch.sh index dd7481ae..2a1e87a9 100755 --- a/fetch.sh +++ b/fetch.sh @@ -3,15 +3,4 @@ set -e source config.sh -recipes="" -for arg in "${@:1}" -do - if [ "$arg" == "--offline" ] - then - export COOKBOOK_OFFLINE="1" - else - recipes+=" $arg" - fi -done - -target/release/cook --fetch-only $recipes +target/release/cook --fetch-only ${@:1} diff --git a/repo.sh b/repo.sh index 5e0f9881..5fc21421 100755 --- a/repo.sh +++ b/repo.sh @@ -20,7 +20,7 @@ do COOK_OPT+=" --nonstop" elif [ "$arg" == "--offline" ] then - export COOKBOOK_OFFLINE="1" + COOK_OPT+=" --offline" else recipes+=" $arg" fi diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 70a186a3..7b3f291a 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1237,12 +1237,12 @@ fn cook( name: &PackageName, recipe: &Recipe, fetch_only: bool, + is_offline: bool, ) -> Result<(), String> { if recipe.build.kind == BuildKind::None { return cook_meta(recipe_dir, name, recipe, fetch_only); } - let is_offline = env::var("COOKBOOK_OFFLINE").unwrap_or("".to_string()) == "1"; let source_dir = match is_offline { true => fetch_offline(recipe_dir, &recipe.source), false => fetch(recipe_dir, &recipe.source), @@ -1283,6 +1283,7 @@ fn main() { let mut with_package_deps = false; let mut quiet = false; let mut nonstop = false; + let mut is_offline = false; let mut recipe_names = Vec::new(); for arg in env::args().skip(1) { match arg.as_str() { @@ -1292,6 +1293,7 @@ fn main() { "--fetch-only" if matching => fetch_only = true, "-q" | "--quiet" if matching => quiet = true, "--nonstop" => nonstop = true, + "--offline" => is_offline = true, _ => recipe_names.push(arg.try_into().expect("Invalid package name")), } } @@ -1346,7 +1348,13 @@ fn main() { } Ok(()) } else { - cook(&recipe.dir, &recipe.name, &recipe.recipe, fetch_only) + cook( + &recipe.dir, + &recipe.name, + &recipe.recipe, + fetch_only, + is_offline, + ) }; match res { From 9a40987f616ece3c52fcfe48c0ab51738de4e49b Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Tue, 2 Sep 2025 21:37:38 +0200 Subject: [PATCH 2786/3180] Use LF as line ending in repo_builder.rs --- src/bin/repo_builder.rs | 328 ++++++++++++++++++++-------------------- 1 file changed, 164 insertions(+), 164 deletions(-) diff --git a/src/bin/repo_builder.rs b/src/bin/repo_builder.rs index 6a7a8a35..4af35624 100644 --- a/src/bin/repo_builder.rs +++ b/src/bin/repo_builder.rs @@ -1,164 +1,164 @@ -use pkg::recipes; -use std::collections::{BTreeMap, HashMap}; -use std::env; -use std::fs::{self, File}; -use std::io::{Read, Write}; -use std::path::{Path, PathBuf}; -use std::process::Command; -use toml::Value; - -fn is_newer(src: &Path, dst: &Path) -> bool { - match (fs::metadata(src), fs::metadata(dst)) { - (Ok(src_meta), Ok(dst_meta)) => match (src_meta.modified(), dst_meta.modified()) { - (Ok(src_time), Ok(dst_time)) => src_time > dst_time, - (Ok(_), Err(_)) => true, - _ => false, - }, - (Ok(_), Err(_)) => true, - _ => false, - } -} - -fn main() -> Result<(), Box> { - let mut args = env::args().skip(1); - let repo_dir = args - .next() - .expect("Usage: repo_builder ..."); - let recipe_list: Vec = args.collect(); - let repo_path = Path::new(&repo_dir); - - let mut appstream_sources: HashMap = HashMap::new(); - let mut packages: BTreeMap = BTreeMap::new(); - - // === 1. Push recipes in list === - for recipe in &recipe_list { - let Some(recipe_path) = recipes::find(recipe) else { - eprintln!("recipe {} not found", recipe); - continue; - }; - - let cookbook_recipe = Path::new(&recipe_path); - let target = env::var("TARGET").unwrap_or_else(|_| "x86_64-unknown-linux-gnu".into()); - let stage_dir = cookbook_recipe.join("target").join(&target).join("stage"); - - let pkgar_src = stage_dir.with_extension("pkgar"); - let pkgar_dst = repo_path.join(format!("{}.pkgar", recipe)); - let toml_src = stage_dir.with_extension("toml"); - let toml_dst = repo_path.join(format!("{}.toml", recipe)); - - if is_newer(&toml_src, &toml_dst) { - eprintln!("\x1b[01;38;5;155mrepo - publishing {}\x1b[0m", recipe); - if fs::exists(&pkgar_src)? { - fs::copy(&pkgar_src, &pkgar_dst)?; - } - fs::copy(&toml_src, &toml_dst)?; - } - - if stage_dir.join("usr/share/metainfo").exists() { - appstream_sources.insert(recipe.clone(), stage_dir.clone()); - } - } - - // === 2. Optional AppStream generation === - if env::var("APPSTREAM").ok().as_deref() == Some("1") { - eprintln!("\x1b[01;38;5;155mrepo - generating appstream data\x1b[0m"); - - let root = env::var("ROOT").unwrap_or_else(|_| ".".into()); - let target = env::var("TARGET").unwrap_or_else(|_| "x86_64-unknown-linux-gnu".into()); - let appstream_root = Path::new(&root) - .join("build") - .join(&target) - .join("appstream"); - let appstream_pkg = repo_path.join("appstream.pkgar"); - - fs::remove_dir_all(&appstream_root).ok(); - fs::remove_file(&appstream_pkg).ok(); - fs::create_dir_all(&appstream_root)?; - - if !appstream_sources.is_empty() { - let mut compose_cmd = Command::new("appstreamcli"); - compose_cmd - .arg("compose") - .arg("--origin=pkgar") - .arg(format!("--result-root={}", appstream_root.display())); - - for (_recipe, source_path) in &appstream_sources { - compose_cmd.arg(source_path); - } - - compose_cmd - .status()? - .success() - .then_some(()) - .ok_or("appstreamcli failed")?; - - Command::new("pkgar") - .arg("create") - .arg("--archive") - .arg(&appstream_pkg) - .arg("--skey") - .arg(format!("{}/build/id_ed25519.toml", root)) - .arg(&appstream_root) - .status()? - .success() - .then_some(()) - .ok_or("pkgar create failed")?; - } - } - - eprintln!("\x1b[01;38;5;155mrepo - generating repo.toml\x1b[0m"); - - // === 3. Read and update repo.toml === - let repo_toml_path = repo_path.join("repo.toml"); - if repo_toml_path.exists() { - let mut file = File::open(&repo_toml_path)?; - let mut contents = String::new(); - file.read_to_string(&mut contents)?; - - let parsed: Value = toml::from_str(&contents)?; - if let Some(pkg_table) = parsed.get("packages").and_then(|v| v.as_table()) { - for (k, v) in pkg_table { - if let Some(s) = v.as_str() { - packages.insert(k.clone(), format!("\"{}\"", s)); - } else { - packages.insert(k.clone(), v.to_string()); - } - } - } - } - - for entry in fs::read_dir(&repo_path)? { - let entry = entry?; - let path = entry.path(); - - if path.extension().and_then(|s| s.to_str()) != Some("toml") { - continue; - } - - if path.file_stem().and_then(|s| s.to_str()) == Some("repo") { - continue; - } - - let content = fs::read_to_string(&path)?; - let parsed: Value = toml::from_str(&content)?; - - if let Some(version_val) = parsed.get("version") { - let version_str = version_val.to_string(); // includes quotes - let package_name = path.file_stem().unwrap().to_string_lossy().to_string(); - packages.insert(package_name, version_str); - } else { - eprintln!("Warning: no [version] found in {:?}", path); - } - } - - // FIXME: Use proper TOML serializer - let mut output = String::from("[packages]\n"); - for (name, version) in &packages { - output.push_str(&format!("{name} = {version}\n")); - } - - let mut output_file = File::create(&repo_toml_path)?; - output_file.write_all(output.as_bytes())?; - - Ok(()) -} +use pkg::recipes; +use std::collections::{BTreeMap, HashMap}; +use std::env; +use std::fs::{self, File}; +use std::io::{Read, Write}; +use std::path::{Path, PathBuf}; +use std::process::Command; +use toml::Value; + +fn is_newer(src: &Path, dst: &Path) -> bool { + match (fs::metadata(src), fs::metadata(dst)) { + (Ok(src_meta), Ok(dst_meta)) => match (src_meta.modified(), dst_meta.modified()) { + (Ok(src_time), Ok(dst_time)) => src_time > dst_time, + (Ok(_), Err(_)) => true, + _ => false, + }, + (Ok(_), Err(_)) => true, + _ => false, + } +} + +fn main() -> Result<(), Box> { + let mut args = env::args().skip(1); + let repo_dir = args + .next() + .expect("Usage: repo_builder ..."); + let recipe_list: Vec = args.collect(); + let repo_path = Path::new(&repo_dir); + + let mut appstream_sources: HashMap = HashMap::new(); + let mut packages: BTreeMap = BTreeMap::new(); + + // === 1. Push recipes in list === + for recipe in &recipe_list { + let Some(recipe_path) = recipes::find(recipe) else { + eprintln!("recipe {} not found", recipe); + continue; + }; + + let cookbook_recipe = Path::new(&recipe_path); + let target = env::var("TARGET").unwrap_or_else(|_| "x86_64-unknown-linux-gnu".into()); + let stage_dir = cookbook_recipe.join("target").join(&target).join("stage"); + + let pkgar_src = stage_dir.with_extension("pkgar"); + let pkgar_dst = repo_path.join(format!("{}.pkgar", recipe)); + let toml_src = stage_dir.with_extension("toml"); + let toml_dst = repo_path.join(format!("{}.toml", recipe)); + + if is_newer(&toml_src, &toml_dst) { + eprintln!("\x1b[01;38;5;155mrepo - publishing {}\x1b[0m", recipe); + if fs::exists(&pkgar_src)? { + fs::copy(&pkgar_src, &pkgar_dst)?; + } + fs::copy(&toml_src, &toml_dst)?; + } + + if stage_dir.join("usr/share/metainfo").exists() { + appstream_sources.insert(recipe.clone(), stage_dir.clone()); + } + } + + // === 2. Optional AppStream generation === + if env::var("APPSTREAM").ok().as_deref() == Some("1") { + eprintln!("\x1b[01;38;5;155mrepo - generating appstream data\x1b[0m"); + + let root = env::var("ROOT").unwrap_or_else(|_| ".".into()); + let target = env::var("TARGET").unwrap_or_else(|_| "x86_64-unknown-linux-gnu".into()); + let appstream_root = Path::new(&root) + .join("build") + .join(&target) + .join("appstream"); + let appstream_pkg = repo_path.join("appstream.pkgar"); + + fs::remove_dir_all(&appstream_root).ok(); + fs::remove_file(&appstream_pkg).ok(); + fs::create_dir_all(&appstream_root)?; + + if !appstream_sources.is_empty() { + let mut compose_cmd = Command::new("appstreamcli"); + compose_cmd + .arg("compose") + .arg("--origin=pkgar") + .arg(format!("--result-root={}", appstream_root.display())); + + for (_recipe, source_path) in &appstream_sources { + compose_cmd.arg(source_path); + } + + compose_cmd + .status()? + .success() + .then_some(()) + .ok_or("appstreamcli failed")?; + + Command::new("pkgar") + .arg("create") + .arg("--archive") + .arg(&appstream_pkg) + .arg("--skey") + .arg(format!("{}/build/id_ed25519.toml", root)) + .arg(&appstream_root) + .status()? + .success() + .then_some(()) + .ok_or("pkgar create failed")?; + } + } + + eprintln!("\x1b[01;38;5;155mrepo - generating repo.toml\x1b[0m"); + + // === 3. Read and update repo.toml === + let repo_toml_path = repo_path.join("repo.toml"); + if repo_toml_path.exists() { + let mut file = File::open(&repo_toml_path)?; + let mut contents = String::new(); + file.read_to_string(&mut contents)?; + + let parsed: Value = toml::from_str(&contents)?; + if let Some(pkg_table) = parsed.get("packages").and_then(|v| v.as_table()) { + for (k, v) in pkg_table { + if let Some(s) = v.as_str() { + packages.insert(k.clone(), format!("\"{}\"", s)); + } else { + packages.insert(k.clone(), v.to_string()); + } + } + } + } + + for entry in fs::read_dir(&repo_path)? { + let entry = entry?; + let path = entry.path(); + + if path.extension().and_then(|s| s.to_str()) != Some("toml") { + continue; + } + + if path.file_stem().and_then(|s| s.to_str()) == Some("repo") { + continue; + } + + let content = fs::read_to_string(&path)?; + let parsed: Value = toml::from_str(&content)?; + + if let Some(version_val) = parsed.get("version") { + let version_str = version_val.to_string(); // includes quotes + let package_name = path.file_stem().unwrap().to_string_lossy().to_string(); + packages.insert(package_name, version_str); + } else { + eprintln!("Warning: no [version] found in {:?}", path); + } + } + + // FIXME: Use proper TOML serializer + let mut output = String::from("[packages]\n"); + for (name, version) in &packages { + output.push_str(&format!("{name} = {version}\n")); + } + + let mut output_file = File::create(&repo_toml_path)?; + output_file.write_all(output.as_bytes())?; + + Ok(()) +} From ee25a707f83dce0afbc856e067dd65a80a4501a5 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Wed, 3 Sep 2025 18:22:41 +0200 Subject: [PATCH 2787/3180] Remove pkg_deps binary --- repo.sh | 7 ------- src/bin/pkg_deps.rs | 22 ---------------------- src/bin/repo_builder.rs | 17 +++++++++++++++-- 3 files changed, 15 insertions(+), 31 deletions(-) delete mode 100644 src/bin/pkg_deps.rs diff --git a/repo.sh b/repo.sh index 5fc21421..f2458005 100755 --- a/repo.sh +++ b/repo.sh @@ -31,11 +31,4 @@ target/release/cook $COOK_OPT $recipes repo="$ROOT/repo/$TARGET" mkdir -p "$repo" -# Runtime dependencies include both `[package.dependencies]` and dynamically -# linked packages discovered by auto_deps. -# -# The following adds the package dependencies of the recipes to the repo as -# well. -recipes="$recipes $(target/release/pkg_deps $recipes)" - target/release/repo_builder "$repo" $recipes diff --git a/src/bin/pkg_deps.rs b/src/bin/pkg_deps.rs deleted file mode 100644 index 4fddb79d..00000000 --- a/src/bin/pkg_deps.rs +++ /dev/null @@ -1,22 +0,0 @@ -use std::env::args; - -use pkg::{ - package::{Package, PackageError}, - PackageName, -}; - -use cookbook::WALK_DEPTH; - -fn main() -> Result<(), PackageError> { - let names: Vec = args() - .skip(1) - .map(PackageName::new) - .collect::>()?; - - let packages = Package::new_recursive(&names, WALK_DEPTH)?; - for package in packages { - println!("{}", package.name); - } - - Ok(()) -} diff --git a/src/bin/repo_builder.rs b/src/bin/repo_builder.rs index 4af35624..d903bfd1 100644 --- a/src/bin/repo_builder.rs +++ b/src/bin/repo_builder.rs @@ -1,4 +1,5 @@ -use pkg::recipes; +use cookbook::WALK_DEPTH; +use pkg::{recipes, Package, PackageName}; use std::collections::{BTreeMap, HashMap}; use std::env; use std::fs::{self, File}; @@ -24,9 +25,21 @@ fn main() -> Result<(), Box> { let repo_dir = args .next() .expect("Usage: repo_builder ..."); - let recipe_list: Vec = args.collect(); let repo_path = Path::new(&repo_dir); + // Runtime dependencies include both `[package.dependencies]` and dynamically + // linked packages discovered by auto_deps. + // + // The following adds the package dependencies of the recipes to the repo as + // well. + let recipe_list = Package::new_recursive( + &args.map(PackageName::new).collect::, _>>()?, + WALK_DEPTH, + )? + .into_iter() + .map(|pkg| pkg.name.as_str().to_owned()) + .collect::>(); + let mut appstream_sources: HashMap = HashMap::new(); let mut packages: BTreeMap = BTreeMap::new(); From 5dc9b3a5933c4f125c2a85df0dc0aafe7208003f Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sat, 6 Sep 2025 17:58:56 +0000 Subject: [PATCH 2788/3180] OpenSSH daemon support --- recipes/wip/ssh/openssh/recipe.toml | 31 +- recipes/wip/ssh/openssh/redox.patch | 424 +++++++++++++++++++++++++++- 2 files changed, 437 insertions(+), 18 deletions(-) diff --git a/recipes/wip/ssh/openssh/recipe.toml b/recipes/wip/ssh/openssh/recipe.toml index 26ed0f91..85798b1d 100644 --- a/recipes/wip/ssh/openssh/recipe.toml +++ b/recipes/wip/ssh/openssh/recipe.toml @@ -1,6 +1,7 @@ -#TODO compiled but not tested -#TODO lack of utmpx.h and resolv.h, expect dns not working -#TODO maybe actually implement utmpx.h in relibc? +#TODO lack of resolv.h, expect dns not working +#TODO lack of utmpx.h, expect no way to track login in sshd +#TODO lack of an equivalent to shadow.h, expect sshd password not working +#TODO lack of openssl support, use only ssh-keygen from redox [source] tar = "https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz" patches = [ @@ -9,12 +10,34 @@ patches = [ [build] template = "custom" dependencies = [ - "openssl1", "zlib", ] script = """ DYNAMIC_INIT +COOKBOOK_CONFIGURE_FLAGS+=( + --disable-strip +# requires openssl 1.1.1, result in libcrypto error otherwise + --without-openssl +) cookbook_configure mv "${COOKBOOK_STAGE}"/usr/sbin/sshd "${COOKBOOK_STAGE}"/usr/bin/sshd rmdir "${COOKBOOK_STAGE}"/usr/sbin + +# Extracted from `make host-key-force` +# TODO: Very insecure! but there's no postscript yet +ssh-keygen -t dsa -f "${COOKBOOK_STAGE}"/usr/etc/ssh_host_dsa_key -N "" +ssh-keygen -t rsa -f "${COOKBOOK_STAGE}"/usr/etc/ssh_host_rsa_key -N "" +ssh-keygen -t ed25519 -f "${COOKBOOK_STAGE}"/usr/etc/ssh_host_ed25519_key -N "" +ssh-keygen -t ecdsa -f "${COOKBOOK_STAGE}"/usr/etc/ssh_host_ecdsa_key -N "" + +# The config can be found here, not /etc +CONFIG_FILE="${COOKBOOK_STAGE}"/usr/etc/sshd_config +sed -i "s/#LogLevel INFO/LogLevel DEBUG3/g" "${CONFIG_FILE}" + +# ipv6 is not working yet +sed -i "s/#AddressFamily any/AddressFamily inet/g" "${CONFIG_FILE}" +# hardcoded to 0.0.0.0 in patches +sed -i "s/#ListenAddress 0.0.0.0/ListenAddress 0.0.0.0/g" "${CONFIG_FILE}" +# will never work +sed -i "s/#PasswordAuthentication yes/PasswordAuthentication no/g" "${CONFIG_FILE}" """ diff --git a/recipes/wip/ssh/openssh/redox.patch b/recipes/wip/ssh/openssh/redox.patch index e1b43cae..153e9cda 100644 --- a/recipes/wip/ssh/openssh/redox.patch +++ b/recipes/wip/ssh/openssh/redox.patch @@ -1,6 +1,20 @@ +diff -ruwN source/configure source-new/configure +--- source/configure 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/configure 2025-09-06 23:54:58.147442355 +0700 +@@ -12606,6 +12606,10 @@ + printf "%s\n" "#define BROKEN_POLL 1" >>confdefs.h + + ;; ++*-*-redox) ++ ++ # todo ++ ;; + mips-sony-bsd|mips-sony-newsos4) + + printf "%s\n" "#define NEED_SETPGRP 1" >>confdefs.h diff -ruwN source/defines.h source-new/defines.h --- source/defines.h 2024-07-01 11:36:28.000000000 +0700 -+++ source-new/defines.h 2025-08-20 13:37:45.820728226 +0700 ++++ source-new/defines.h 2025-09-06 21:22:46.327552147 +0700 @@ -52,6 +52,18 @@ #define IPPORT_RESERVED 0 #endif @@ -49,9 +63,14 @@ diff -ruwN source/defines.h source-new/defines.h /* Define this to be the path of the xauth program. */ #ifdef XAUTH_PATH #define _PATH_XAUTH XAUTH_PATH +@@ -943,3 +957,4 @@ + # define USE_SNTRUP761X25519 1 + #endif + #endif /* _DEFINES_H */ ++ diff -ruwN source/hostfile.c source-new/hostfile.c --- source/hostfile.c 2024-07-01 11:36:28.000000000 +0700 -+++ source-new/hostfile.c 2025-08-20 11:51:28.964103232 +0700 ++++ source-new/hostfile.c 2025-09-06 21:09:36.555438339 +0700 @@ -44,7 +44,9 @@ #include @@ -64,7 +83,7 @@ diff -ruwN source/hostfile.c source-new/hostfile.c #include diff -ruwN source/loginrec.c source-new/loginrec.c --- source/loginrec.c 2024-07-01 11:36:28.000000000 +0700 -+++ source-new/loginrec.c 2025-08-20 13:43:02.970560664 +0700 ++++ source-new/loginrec.c 2025-09-06 21:09:36.556438304 +0700 @@ -1033,7 +1033,7 @@ return (0); } @@ -76,7 +95,7 @@ diff -ruwN source/loginrec.c source-new/loginrec.c } diff -ruwN source/loginrec.h source-new/loginrec.h --- source/loginrec.h 2024-07-01 11:36:28.000000000 +0700 -+++ source-new/loginrec.h 2025-08-20 13:39:08.570682776 +0700 ++++ source-new/loginrec.h 2025-09-06 21:09:36.556438304 +0700 @@ -30,6 +30,7 @@ **/ @@ -85,9 +104,56 @@ diff -ruwN source/loginrec.h source-new/loginrec.h struct ssh; +diff -ruwN source/misc.c source-new/misc.c +--- source/misc.c 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/misc.c 2025-09-06 21:09:36.556438304 +0700 +@@ -2843,7 +2843,7 @@ + error("%s: dup2: %s", tag, strerror(errno)); + _exit(1); + } +- closefrom(STDERR_FILENO + 1); ++ // closefrom(STDERR_FILENO + 1); + + if (geteuid() == 0 && + initgroups(pw->pw_name, pw->pw_gid) == -1) { +diff -ruwN source/monitor.c source-new/monitor.c +--- source/monitor.c 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/monitor.c 2025-09-07 00:46:23.435378053 +0700 +@@ -484,18 +484,19 @@ + pfd[0].events = POLLIN; + pfd[1].fd = pmonitor->m_log_recvfd; + pfd[1].events = pfd[1].fd == -1 ? 0 : POLLIN; +- if (poll(pfd, pfd[1].fd == -1 ? 1 : 2, -1) == -1) { ++ // redox can't handle timeout -1 (the poll stuck) ++ if (poll(pfd, pfd[1].fd == -1 ? 1 : 2, 1000) == -1) { + if (errno == EINTR || errno == EAGAIN) + continue; + fatal_f("poll: %s", strerror(errno)); + } + if (pfd[1].revents) { ++ + /* + * Drain all log messages before processing next + * monitor request. + */ + monitor_read_log(pmonitor); +- continue; + } + if (pfd[0].revents) + break; /* Continues below */ +@@ -1577,7 +1578,8 @@ + res = pty_allocate(&s->ptyfd, &s->ttyfd, s->tty, sizeof(s->tty)); + if (res == 0) + goto error; +- pty_setowner(authctxt->pw, s->tty); ++ // non sense in redox ++ // pty_setowner(authctxt->pw, s->tty); + + if ((r = sshbuf_put_u32(m, 1)) != 0 || + (r = sshbuf_put_cstring(m, s->tty)) != 0) diff -ruwN source/openbsd-compat/bsd-statvfs.h source-new/openbsd-compat/bsd-statvfs.h --- source/openbsd-compat/bsd-statvfs.h 2024-07-01 11:36:28.000000000 +0700 -+++ source-new/openbsd-compat/bsd-statvfs.h 2025-08-20 13:37:42.000730245 +0700 ++++ source-new/openbsd-compat/bsd-statvfs.h 2025-09-06 21:09:36.556438304 +0700 @@ -37,13 +37,6 @@ typedef unsigned long fsfilcnt_t; #endif @@ -104,7 +170,7 @@ diff -ruwN source/openbsd-compat/bsd-statvfs.h source-new/openbsd-compat/bsd-sta unsigned long f_bsize; /* File system block size. */ diff -ruwN source/openbsd-compat/getrrsetbyname.c source-new/openbsd-compat/getrrsetbyname.c --- source/openbsd-compat/getrrsetbyname.c 2024-07-01 11:36:28.000000000 +0700 -+++ source-new/openbsd-compat/getrrsetbyname.c 2025-08-20 13:51:15.020299084 +0700 ++++ source-new/openbsd-compat/getrrsetbyname.c 2025-09-06 21:09:36.556438304 +0700 @@ -67,6 +67,52 @@ #endif #define _THREAD_PRIVATE(a,b,c) (c) @@ -232,7 +298,7 @@ diff -ruwN source/openbsd-compat/getrrsetbyname.c source-new/openbsd-compat/getr free_dns_rr(head); diff -ruwN source/openbsd-compat/getrrsetbyname.h source-new/openbsd-compat/getrrsetbyname.h --- source/openbsd-compat/getrrsetbyname.h 2024-07-01 11:36:28.000000000 +0700 -+++ source-new/openbsd-compat/getrrsetbyname.h 2025-08-20 11:51:00.744118526 +0700 ++++ source-new/openbsd-compat/getrrsetbyname.h 2025-09-06 21:09:36.557438268 +0700 @@ -54,9 +54,13 @@ #include @@ -249,7 +315,7 @@ diff -ruwN source/openbsd-compat/getrrsetbyname.h source-new/openbsd-compat/getr #define HFIXEDSZ 12 diff -ruwN source/openbsd-compat/inet_ntop.c source-new/openbsd-compat/inet_ntop.c --- source/openbsd-compat/inet_ntop.c 2024-07-01 11:36:28.000000000 +0700 -+++ source-new/openbsd-compat/inet_ntop.c 2025-08-20 11:39:15.244488902 +0700 ++++ source-new/openbsd-compat/inet_ntop.c 2025-09-06 21:09:36.557438268 +0700 @@ -26,7 +26,9 @@ #include #include @@ -262,7 +328,7 @@ diff -ruwN source/openbsd-compat/inet_ntop.c source-new/openbsd-compat/inet_ntop #include diff -ruwN source/openbsd-compat/openbsd-compat.h source-new/openbsd-compat/openbsd-compat.h --- source/openbsd-compat/openbsd-compat.h 2024-07-01 11:36:28.000000000 +0700 -+++ source-new/openbsd-compat/openbsd-compat.h 2025-08-20 13:15:22.721439992 +0700 ++++ source-new/openbsd-compat/openbsd-compat.h 2025-09-06 21:09:36.557438268 +0700 @@ -36,6 +36,8 @@ #include /* for wchar_t */ @@ -274,7 +340,7 @@ diff -ruwN source/openbsd-compat/openbsd-compat.h source-new/openbsd-compat/open #include "sigact.h" diff -ruwN source/openbsd-compat/utmpx.c source-new/openbsd-compat/utmpx.c --- source/openbsd-compat/utmpx.c 1970-01-01 07:00:00.000000000 +0700 -+++ source-new/openbsd-compat/utmpx.c 2025-08-20 13:13:54.971486065 +0700 ++++ source-new/openbsd-compat/utmpx.c 2025-09-06 21:09:36.557438268 +0700 @@ -0,0 +1,13 @@ +#include "utmpx.h" +#include // For NULL @@ -292,7 +358,7 @@ diff -ruwN source/openbsd-compat/utmpx.c source-new/openbsd-compat/utmpx.c \ No newline at end of file diff -ruwN source/openbsd-compat/utmpx.h source-new/openbsd-compat/utmpx.h --- source/openbsd-compat/utmpx.h 1970-01-01 07:00:00.000000000 +0700 -+++ source-new/openbsd-compat/utmpx.h 2025-08-20 13:13:07.201511825 +0700 ++++ source-new/openbsd-compat/utmpx.h 2025-09-06 21:09:36.557438268 +0700 @@ -0,0 +1,69 @@ +#ifndef _COMPAT_UTMPX_H +#define _COMPAT_UTMPX_H @@ -364,9 +430,54 @@ diff -ruwN source/openbsd-compat/utmpx.h source-new/openbsd-compat/utmpx.h +#endif /* __redox__ */ +#endif /* _COMPAT_UTMPX_H */ \ No newline at end of file +diff -ruwN source/pathnames.h source-new/pathnames.h +--- source/pathnames.h 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/pathnames.h 2025-09-06 21:09:36.557438268 +0700 +@@ -12,7 +12,7 @@ + * called by a name other than "ssh" or "Secure Shell". + */ + +-#define ETCDIR "/etc" ++#define ETCDIR "/usr/etc" + + #ifndef SSHDIR + #define SSHDIR ETCDIR "/ssh" +@@ -166,7 +166,7 @@ + + /* chroot directory for unprivileged user when UsePrivilegeSeparation=yes */ + #ifndef _PATH_PRIVSEP_CHROOT_DIR +-#define _PATH_PRIVSEP_CHROOT_DIR "/var/empty" ++#define _PATH_PRIVSEP_CHROOT_DIR "/usr/var/empty" + #endif + + /* for passwd change */ +diff -ruwN source/readconf.c source-new/readconf.c +--- source/readconf.c 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/readconf.c 2025-09-06 21:09:36.558438233 +0700 +@@ -554,7 +554,7 @@ + + if (stdfd_devnull(1, 1, 0) == -1) + fatal_f("stdfd_devnull failed"); +- closefrom(STDERR_FILENO + 1); ++ // closefrom(STDERR_FILENO + 1); + + argv[0] = shell; + argv[1] = "-c"; +diff -ruwN source/readpass.c source-new/readpass.c +--- source/readpass.c 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/readpass.c 2025-09-06 21:09:36.558438233 +0700 +@@ -278,7 +278,7 @@ + if (pid == 0) { + if (stdfd_devnull(1, 1, 0) == -1) + fatal_f("stdfd_devnull failed"); +- closefrom(STDERR_FILENO + 1); ++ // closefrom(STDERR_FILENO + 1); + setenv("SSH_ASKPASS_PROMPT", "none", 1); /* hint to UI */ + execlp(askpass, askpass, prompt, (char *)NULL); + error_f("exec(%s): %s", askpass, strerror(errno)); diff -ruwN source/regress/netcat.c source-new/regress/netcat.c --- source/regress/netcat.c 2024-07-01 11:36:28.000000000 +0700 -+++ source-new/regress/netcat.c 2025-08-20 11:50:49.164126484 +0700 ++++ source-new/regress/netcat.c 2025-09-06 21:09:36.558438233 +0700 @@ -1384,7 +1384,9 @@ #include #include @@ -377,9 +488,87 @@ diff -ruwN source/regress/netcat.c source-new/regress/netcat.c #define SOCKS_PORT "1080" #define HTTP_PROXY_PORT "3128" +diff -ruwN source/servconf.c source-new/servconf.c +--- source/servconf.c 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/servconf.c 2025-09-06 21:10:09.947261502 +0700 +@@ -315,6 +315,7 @@ + _PATH_HOST_XMSS_KEY_FILE, 0); + #endif /* WITH_XMSS */ + } ++ + /* No certificates by default */ + if (options->num_ports == 0) + options->ports[options->num_ports++] = SSH_DEFAULT_PORT; +@@ -390,6 +391,7 @@ + options->permit_user_env = 0; + options->permit_user_env_allowlist = NULL; + } ++ + if (options->compression == -1) + #ifdef WITH_ZLIB + options->compression = COMP_DELAYED; +@@ -463,6 +465,7 @@ + &options->num_authkeys_files, + _PATH_SSH_USER_PERMITTED_KEYS2); + } ++ + if (options->permit_tun == -1) + options->permit_tun = SSH_TUNMODE_NO; + if (options->ip_qos_interactive == -1) +@@ -529,6 +532,7 @@ + + CLEAR_ON_NONE_ARRAY(channel_timeouts, num_channel_timeouts, "none"); + CLEAR_ON_NONE_ARRAY(auth_methods, num_auth_methods, "any"); ++ + #undef CLEAR_ON_NONE + #undef CLEAR_ON_NONE_ARRAY + } +@@ -857,7 +861,7 @@ + hints.ai_socktype = SOCK_STREAM; + hints.ai_flags = (addr == NULL) ? AI_PASSIVE : 0; + snprintf(strport, sizeof strport, "%d", port); +- if ((gaierr = getaddrinfo(addr, strport, &hints, &aitop)) != 0) ++ if ((gaierr = getaddrinfo("0.0.0.0", strport, &hints, &aitop)) != 0) + fatal("bad addr or host: %s (%s)", + addr ? addr : "", + ssh_gai_strerror(gaierr)); +diff -ruwN source/session.c source-new/session.c +--- source/session.c 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/session.c 2025-09-07 00:41:01.350663705 +0700 +@@ -1365,10 +1365,12 @@ + exit(1); + } + /* Initialize the group list. */ ++#ifndef __redox__ + if (initgroups(pw->pw_name, pw->pw_gid) < 0) { + perror("initgroups"); + exit(1); + } ++#endif + endgrent(); + #endif + +@@ -1490,7 +1492,7 @@ + * initgroups, because at least on Solaris 2.3 it leaves file + * descriptors open. + */ +- closefrom(STDERR_FILENO + 1); ++ // closefrom(STDERR_FILENO + 1); + } + + /* +@@ -1624,7 +1626,7 @@ + exit(1); + } + +- closefrom(STDERR_FILENO + 1); ++ // closefrom(STDERR_FILENO + 1); + + do_rc_files(ssh, s, shell); + diff -ruwN source/sshbuf-misc.c source-new/sshbuf-misc.c --- source/sshbuf-misc.c 2024-07-01 11:36:28.000000000 +0700 -+++ source-new/sshbuf-misc.c 2025-08-20 11:51:17.444108963 +0700 ++++ source-new/sshbuf-misc.c 2025-09-06 21:09:36.559438198 +0700 @@ -28,7 +28,9 @@ #include #include @@ -390,9 +579,150 @@ diff -ruwN source/sshbuf-misc.c source-new/sshbuf-misc.c #include #include +diff -ruwN source/ssh.c source-new/ssh.c +--- source/ssh.c 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/ssh.c 2025-09-06 21:09:36.559438198 +0700 +@@ -689,7 +689,7 @@ + * Discard other fds that are hanging around. These can cause problem + * with backgrounded ssh processes started by ControlPersist. + */ +- closefrom(STDERR_FILENO + 1); ++ // closefrom(STDERR_FILENO + 1); + + __progname = ssh_get_progname(av[0]); + +diff -ruwN source/sshconnect2.c source-new/sshconnect2.c +--- source/sshconnect2.c 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/sshconnect2.c 2025-09-06 21:09:36.560438163 +0700 +@@ -2057,7 +2057,7 @@ + sock = STDERR_FILENO + 1; + if (fcntl(sock, F_SETFD, 0) == -1) /* keep the socket on exec */ + debug3_f("fcntl F_SETFD: %s", strerror(errno)); +- closefrom(sock + 1); ++ // closefrom(sock + 1); + + debug3_f("[child] pid=%ld, exec %s", + (long)getpid(), _PATH_SSH_KEY_SIGN); +diff -ruwN source/sshd.c source-new/sshd.c +--- source/sshd.c 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/sshd.c 2025-09-06 22:33:56.902184198 +0700 +@@ -1217,12 +1217,11 @@ + compat_init_setproctitle(ac, av); + av = saved_argv; + #endif +- + if (geteuid() == 0 && setgroups(0, NULL) == -1) + debug("setgroups(): %.200s", strerror(errno)); + + /* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */ +- sanitise_stdfd(); ++ // sanitise_stdfd(); + + /* Initialize configuration options to their default values. */ + initialize_server_options(&options); +@@ -1342,9 +1341,9 @@ + } + } + if (!test_flag && !do_dump_cfg && !path_absolute(av[0])) +- fatal("sshd requires execution with an absolute path"); ++ fatal("sshd requires execution with an absolutez path"); + +- closefrom(STDERR_FILENO + 1); ++ // closefrom(STDERR_FILENO + 1); + + /* Reserve fds we'll need later for reexec things */ + if ((devnull = open(_PATH_DEVNULL, O_RDWR)) == -1) +@@ -1427,16 +1426,16 @@ + * daemonisation in the presence of Match blocks, but this catches + * and warns for trivial misconfigurations that could break login. + */ +- if (options.num_auth_methods != 0) { +- for (i = 0; i < options.num_auth_methods; i++) { +- if (auth2_methods_valid(options.auth_methods[i], +- 1) == 0) +- break; +- } +- if (i >= options.num_auth_methods) +- fatal("AuthenticationMethods cannot be satisfied by " +- "enabled authentication methods"); +- } ++ // if (options.num_auth_methods != 0) { ++ // for (i = 0; i < options.num_auth_methods; i++) { ++ // if (auth2_methods_valid(options.auth_methods[i], ++ // 1) == 0) ++ // break; ++ // } ++ // if (i >= options.num_auth_methods) ++ // fatal("AuthenticationMethods cannot be satisfied by " ++ // "enabled authentication methods"); ++ // } + + /* Check that there are no remaining arguments. */ + if (optind < ac) { +@@ -1482,13 +1481,13 @@ + options.host_key_files[i]); + key->sk_flags &= ~SSH_SK_USER_PRESENCE_REQD; + } +- if (r == 0 && key != NULL && +- (r = sshkey_shield_private(key)) != 0) { +- do_log2_r(r, ll, "Unable to shield host key \"%s\"", +- options.host_key_files[i]); +- sshkey_free(key); +- key = NULL; +- } ++ // if (r == 0 && key != NULL && ++ // (r = sshkey_shield_private(key)) != 0) { ++ // do_log2_r(r, ll, "Unable to shield host key \"%s\"", ++ // options.host_key_files[i]); ++ // sshkey_free(key); ++ // key = NULL; ++ // } + if ((r = sshkey_load_public(options.host_key_files[i], + &pubkey, NULL)) != 0 && r != SSH_ERR_SYSTEM_ERROR) + do_log2_r(r, ll, "Unable to load host key \"%s\"", +@@ -1600,8 +1599,7 @@ + } + + /* Ensure privsep directory is correctly configured. */ +- need_chroot = ((getuid() == 0 || geteuid() == 0) || +- options.kerberos_authentication); ++ need_chroot = 0;// ((getuid() == 0 || geteuid() == 0) || options.kerberos_authentication); + if ((getpwnam(SSH_PRIVSEP_USER)) == NULL && need_chroot) { + fatal("Privilege separation user %s does not exist", + SSH_PRIVSEP_USER); +@@ -1773,7 +1771,7 @@ + close(startup_pipe); + } + log_redirect_stderr_to(NULL); +- closefrom(REEXEC_MIN_FREE_FD); ++ // closefrom(REEXEC_MIN_FREE_FD); + + ssh_signal(SIGHUP, SIG_IGN); /* avoid reset to SIG_DFL */ + execv(rexec_argv[0], rexec_argv); +diff -ruwN source/sshd-session.c source-new/sshd-session.c +--- source/sshd-session.c 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/sshd-session.c 2025-09-06 21:15:43.796191268 +0700 +@@ -1031,7 +1031,7 @@ + if (!rexeced_flag) + fatal("sshd-session should not be executed directly"); + +- closefrom(REEXEC_MIN_FREE_FD); ++ // closefrom(REEXEC_MIN_FREE_FD); + + seed_rng(); + +@@ -1073,7 +1073,7 @@ + options.timing_secret = timing_secret; + + /* Store privilege separation user for later use if required. */ +- privsep_chroot = (getuid() == 0 || geteuid() == 0); ++ privsep_chroot = 0;// (getuid() == 0 || geteuid() == 0); + if ((privsep_pw = getpwnam(SSH_PRIVSEP_USER)) == NULL) { + if (privsep_chroot || options.kerberos_authentication) + fatal("Privilege separation user %s does not exist", diff -ruwN source/sshkey.c source-new/sshkey.c --- source/sshkey.c 2024-07-01 11:36:28.000000000 +0700 -+++ source-new/sshkey.c 2025-08-20 11:50:36.114133643 +0700 ++++ source-new/sshkey.c 2025-09-06 21:09:36.567437916 +0700 @@ -43,7 +43,9 @@ #include #include @@ -403,3 +733,69 @@ diff -ruwN source/sshkey.c source-new/sshkey.c #include #ifdef HAVE_UTIL_H #include +diff -ruwN source/ssh-sk-client.c source-new/ssh-sk-client.c +--- source/ssh-sk-client.c 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/ssh-sk-client.c 2025-09-06 21:09:36.569437846 +0700 +@@ -91,7 +91,7 @@ + } + close(pair[0]); + close(pair[1]); +- closefrom(STDERR_FILENO + 1); ++ // closefrom(STDERR_FILENO + 1); + debug_f("starting %s %s", helper, + verbosity == NULL ? "" : verbosity); + execlp(helper, helper, verbosity, (char *)NULL); +diff -ruwN source/ssh-sk-helper.c source-new/ssh-sk-helper.c +--- source/ssh-sk-helper.c 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/ssh-sk-helper.c 2025-09-06 21:09:36.570437810 +0700 +@@ -303,7 +303,7 @@ + * Rearrange our file descriptors a little; we don't trust the + * providers not to fiddle with stdin/out. + */ +- closefrom(STDERR_FILENO + 1); ++ // closefrom(STDERR_FILENO + 1); + if ((in = dup(STDIN_FILENO)) == -1 || (out = dup(STDOUT_FILENO)) == -1) + fatal("%s: dup: %s", __progname, strerror(errno)); + close(STDIN_FILENO); +diff -ruwN source/uidswap.c source-new/uidswap.c +--- source/uidswap.c 2024-07-01 11:36:28.000000000 +0700 ++++ source-new/uidswap.c 2025-09-07 00:01:52.531094834 +0700 +@@ -37,7 +37,7 @@ + * POSIX saved uids or not. + */ + +-#if defined(_POSIX_SAVED_IDS) && !defined(BROKEN_SAVED_UIDS) ++#if !defined(BROKEN_SAVED_UIDS) + /* Lets assume that posix saved ids also work with seteuid, even though that + is not part of the posix specification. */ + #define SAVED_IDS_WORK_WITH_SETEUID +@@ -83,6 +83,9 @@ + privileged = 1; + temporarily_use_uid_effective = 1; + ++ // getgroups broken in redox ++#ifndef __redox__ ++ + saved_egroupslen = getgroups(0, NULL); + if (saved_egroupslen == -1) + fatal("getgroups: %.100s", strerror(errno)); +@@ -119,6 +122,7 @@ + /* Set the effective uid to the given (unprivileged) uid. */ + if (setgroups(user_groupslen, user_groups) == -1) + fatal("setgroups: %.100s", strerror(errno)); ++#endif + #ifndef SAVED_IDS_WORK_WITH_SETEUID + /* Propagate the privileged gid to all of our gids. */ + if (setgid(getegid()) == -1) +@@ -168,8 +172,11 @@ + fatal("%s: setgid failed: %s", __func__, strerror(errno)); + #endif /* SAVED_IDS_WORK_WITH_SETEUID */ + ++ // setgroups broken in redox ++#ifndef __redox__ + if (setgroups(saved_egroupslen, saved_egroups) == -1) + fatal("setgroups: %.100s", strerror(errno)); ++#endif + temporarily_use_uid_effective = 0; + } + From 1a5d7b16e9a4a48936f126d2a717d4398ecc862d Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sat, 6 Sep 2025 18:43:27 +0000 Subject: [PATCH 2789/3180] Tidy up patches, move out /usr/etc in openSSH --- recipes/wip/ssh/openssh/recipe.toml | 13 ++- recipes/wip/ssh/openssh/redox.patch | 152 +++++----------------------- 2 files changed, 31 insertions(+), 134 deletions(-) diff --git a/recipes/wip/ssh/openssh/recipe.toml b/recipes/wip/ssh/openssh/recipe.toml index 85798b1d..0ce951ba 100644 --- a/recipes/wip/ssh/openssh/recipe.toml +++ b/recipes/wip/ssh/openssh/recipe.toml @@ -22,17 +22,16 @@ COOKBOOK_CONFIGURE_FLAGS+=( cookbook_configure mv "${COOKBOOK_STAGE}"/usr/sbin/sshd "${COOKBOOK_STAGE}"/usr/bin/sshd rmdir "${COOKBOOK_STAGE}"/usr/sbin +mv "${COOKBOOK_STAGE}"/usr/etc "${COOKBOOK_STAGE}"/etc # Extracted from `make host-key-force` # TODO: Very insecure! but there's no postscript yet -ssh-keygen -t dsa -f "${COOKBOOK_STAGE}"/usr/etc/ssh_host_dsa_key -N "" -ssh-keygen -t rsa -f "${COOKBOOK_STAGE}"/usr/etc/ssh_host_rsa_key -N "" -ssh-keygen -t ed25519 -f "${COOKBOOK_STAGE}"/usr/etc/ssh_host_ed25519_key -N "" -ssh-keygen -t ecdsa -f "${COOKBOOK_STAGE}"/usr/etc/ssh_host_ecdsa_key -N "" +ssh-keygen -t dsa -f "${COOKBOOK_STAGE}"/etc/ssh_host_dsa_key -N "" +ssh-keygen -t rsa -f "${COOKBOOK_STAGE}"/etc/ssh_host_rsa_key -N "" +ssh-keygen -t ed25519 -f "${COOKBOOK_STAGE}"/etc/ssh_host_ed25519_key -N "" +ssh-keygen -t ecdsa -f "${COOKBOOK_STAGE}"/etc/ssh_host_ecdsa_key -N "" -# The config can be found here, not /etc -CONFIG_FILE="${COOKBOOK_STAGE}"/usr/etc/sshd_config -sed -i "s/#LogLevel INFO/LogLevel DEBUG3/g" "${CONFIG_FILE}" +CONFIG_FILE="${COOKBOOK_STAGE}"/etc/sshd_config # ipv6 is not working yet sed -i "s/#AddressFamily any/AddressFamily inet/g" "${CONFIG_FILE}" diff --git a/recipes/wip/ssh/openssh/redox.patch b/recipes/wip/ssh/openssh/redox.patch index 153e9cda..980b9ab3 100644 --- a/recipes/wip/ssh/openssh/redox.patch +++ b/recipes/wip/ssh/openssh/redox.patch @@ -14,7 +14,7 @@ diff -ruwN source/configure source-new/configure printf "%s\n" "#define NEED_SETPGRP 1" >>confdefs.h diff -ruwN source/defines.h source-new/defines.h --- source/defines.h 2024-07-01 11:36:28.000000000 +0700 -+++ source-new/defines.h 2025-09-06 21:22:46.327552147 +0700 ++++ source-new/defines.h 2025-09-07 01:35:40.209700338 +0700 @@ -52,6 +52,18 @@ #define IPPORT_RESERVED 0 #endif @@ -63,11 +63,6 @@ diff -ruwN source/defines.h source-new/defines.h /* Define this to be the path of the xauth program. */ #ifdef XAUTH_PATH #define _PATH_XAUTH XAUTH_PATH -@@ -943,3 +957,4 @@ - # define USE_SNTRUP761X25519 1 - #endif - #endif /* _DEFINES_H */ -+ diff -ruwN source/hostfile.c source-new/hostfile.c --- source/hostfile.c 2024-07-01 11:36:28.000000000 +0700 +++ source-new/hostfile.c 2025-09-06 21:09:36.555438339 +0700 @@ -106,13 +101,12 @@ diff -ruwN source/loginrec.h source-new/loginrec.h diff -ruwN source/misc.c source-new/misc.c --- source/misc.c 2024-07-01 11:36:28.000000000 +0700 -+++ source-new/misc.c 2025-09-06 21:09:36.556438304 +0700 -@@ -2843,7 +2843,7 @@ ++++ source-new/misc.c 2025-09-07 01:21:42.201992304 +0700 +@@ -2843,7 +2843,6 @@ error("%s: dup2: %s", tag, strerror(errno)); _exit(1); } - closefrom(STDERR_FILENO + 1); -+ // closefrom(STDERR_FILENO + 1); if (geteuid() == 0 && initgroups(pw->pw_name, pw->pw_gid) == -1) { @@ -430,48 +424,25 @@ diff -ruwN source/openbsd-compat/utmpx.h source-new/openbsd-compat/utmpx.h +#endif /* __redox__ */ +#endif /* _COMPAT_UTMPX_H */ \ No newline at end of file -diff -ruwN source/pathnames.h source-new/pathnames.h ---- source/pathnames.h 2024-07-01 11:36:28.000000000 +0700 -+++ source-new/pathnames.h 2025-09-06 21:09:36.557438268 +0700 -@@ -12,7 +12,7 @@ - * called by a name other than "ssh" or "Secure Shell". - */ - --#define ETCDIR "/etc" -+#define ETCDIR "/usr/etc" - - #ifndef SSHDIR - #define SSHDIR ETCDIR "/ssh" -@@ -166,7 +166,7 @@ - - /* chroot directory for unprivileged user when UsePrivilegeSeparation=yes */ - #ifndef _PATH_PRIVSEP_CHROOT_DIR --#define _PATH_PRIVSEP_CHROOT_DIR "/var/empty" -+#define _PATH_PRIVSEP_CHROOT_DIR "/usr/var/empty" - #endif - - /* for passwd change */ diff -ruwN source/readconf.c source-new/readconf.c --- source/readconf.c 2024-07-01 11:36:28.000000000 +0700 -+++ source-new/readconf.c 2025-09-06 21:09:36.558438233 +0700 -@@ -554,7 +554,7 @@ ++++ source-new/readconf.c 2025-09-07 01:21:42.201992304 +0700 +@@ -554,7 +554,6 @@ if (stdfd_devnull(1, 1, 0) == -1) fatal_f("stdfd_devnull failed"); - closefrom(STDERR_FILENO + 1); -+ // closefrom(STDERR_FILENO + 1); argv[0] = shell; argv[1] = "-c"; diff -ruwN source/readpass.c source-new/readpass.c --- source/readpass.c 2024-07-01 11:36:28.000000000 +0700 -+++ source-new/readpass.c 2025-09-06 21:09:36.558438233 +0700 -@@ -278,7 +278,7 @@ ++++ source-new/readpass.c 2025-09-07 01:21:42.201992304 +0700 +@@ -278,7 +278,6 @@ if (pid == 0) { if (stdfd_devnull(1, 1, 0) == -1) fatal_f("stdfd_devnull failed"); - closefrom(STDERR_FILENO + 1); -+ // closefrom(STDERR_FILENO + 1); setenv("SSH_ASKPASS_PROMPT", "none", 1); /* hint to UI */ execlp(askpass, askpass, prompt, (char *)NULL); error_f("exec(%s): %s", askpass, strerror(errno)); @@ -490,51 +461,20 @@ diff -ruwN source/regress/netcat.c source-new/regress/netcat.c #define HTTP_PROXY_PORT "3128" diff -ruwN source/servconf.c source-new/servconf.c --- source/servconf.c 2024-07-01 11:36:28.000000000 +0700 -+++ source-new/servconf.c 2025-09-06 21:10:09.947261502 +0700 -@@ -315,6 +315,7 @@ - _PATH_HOST_XMSS_KEY_FILE, 0); - #endif /* WITH_XMSS */ - } -+ - /* No certificates by default */ - if (options->num_ports == 0) - options->ports[options->num_ports++] = SSH_DEFAULT_PORT; -@@ -390,6 +391,7 @@ - options->permit_user_env = 0; - options->permit_user_env_allowlist = NULL; - } -+ - if (options->compression == -1) - #ifdef WITH_ZLIB - options->compression = COMP_DELAYED; -@@ -463,6 +465,7 @@ - &options->num_authkeys_files, - _PATH_SSH_USER_PERMITTED_KEYS2); - } -+ - if (options->permit_tun == -1) - options->permit_tun = SSH_TUNMODE_NO; - if (options->ip_qos_interactive == -1) -@@ -529,6 +532,7 @@ - - CLEAR_ON_NONE_ARRAY(channel_timeouts, num_channel_timeouts, "none"); - CLEAR_ON_NONE_ARRAY(auth_methods, num_auth_methods, "any"); -+ - #undef CLEAR_ON_NONE - #undef CLEAR_ON_NONE_ARRAY - } -@@ -857,7 +861,7 @@ ++++ source-new/servconf.c 2025-09-07 01:38:08.219942429 +0700 +@@ -857,7 +857,8 @@ hints.ai_socktype = SOCK_STREAM; hints.ai_flags = (addr == NULL) ? AI_PASSIVE : 0; snprintf(strport, sizeof strport, "%d", port); - if ((gaierr = getaddrinfo(addr, strport, &hints, &aitop)) != 0) ++ // redox don't accept addr == NULL yet + if ((gaierr = getaddrinfo("0.0.0.0", strport, &hints, &aitop)) != 0) fatal("bad addr or host: %s (%s)", addr ? addr : "", ssh_gai_strerror(gaierr)); diff -ruwN source/session.c source-new/session.c --- source/session.c 2024-07-01 11:36:28.000000000 +0700 -+++ source-new/session.c 2025-09-07 00:41:01.350663705 +0700 ++++ source-new/session.c 2025-09-07 01:22:43.637928015 +0700 @@ -1365,10 +1365,12 @@ exit(1); } @@ -548,21 +488,19 @@ diff -ruwN source/session.c source-new/session.c endgrent(); #endif -@@ -1490,7 +1492,7 @@ +@@ -1490,7 +1492,6 @@ * initgroups, because at least on Solaris 2.3 it leaves file * descriptors open. */ - closefrom(STDERR_FILENO + 1); -+ // closefrom(STDERR_FILENO + 1); } /* -@@ -1624,7 +1626,7 @@ +@@ -1624,7 +1625,6 @@ exit(1); } - closefrom(STDERR_FILENO + 1); -+ // closefrom(STDERR_FILENO + 1); do_rc_files(ssh, s, shell); @@ -581,37 +519,30 @@ diff -ruwN source/sshbuf-misc.c source-new/sshbuf-misc.c diff -ruwN source/ssh.c source-new/ssh.c --- source/ssh.c 2024-07-01 11:36:28.000000000 +0700 -+++ source-new/ssh.c 2025-09-06 21:09:36.559438198 +0700 -@@ -689,7 +689,7 @@ ++++ source-new/ssh.c 2025-09-07 01:22:43.638928030 +0700 +@@ -689,7 +689,6 @@ * Discard other fds that are hanging around. These can cause problem * with backgrounded ssh processes started by ControlPersist. */ - closefrom(STDERR_FILENO + 1); -+ // closefrom(STDERR_FILENO + 1); __progname = ssh_get_progname(av[0]); diff -ruwN source/sshconnect2.c source-new/sshconnect2.c --- source/sshconnect2.c 2024-07-01 11:36:28.000000000 +0700 -+++ source-new/sshconnect2.c 2025-09-06 21:09:36.560438163 +0700 -@@ -2057,7 +2057,7 @@ ++++ source-new/sshconnect2.c 2025-09-07 01:22:58.683157171 +0700 +@@ -2057,7 +2057,6 @@ sock = STDERR_FILENO + 1; if (fcntl(sock, F_SETFD, 0) == -1) /* keep the socket on exec */ debug3_f("fcntl F_SETFD: %s", strerror(errno)); - closefrom(sock + 1); -+ // closefrom(sock + 1); debug3_f("[child] pid=%ld, exec %s", (long)getpid(), _PATH_SSH_KEY_SIGN); diff -ruwN source/sshd.c source-new/sshd.c --- source/sshd.c 2024-07-01 11:36:28.000000000 +0700 -+++ source-new/sshd.c 2025-09-06 22:33:56.902184198 +0700 -@@ -1217,12 +1217,11 @@ - compat_init_setproctitle(ac, av); - av = saved_argv; - #endif -- - if (geteuid() == 0 && setgroups(0, NULL) == -1) ++++ source-new/sshd.c 2025-09-07 01:39:34.681252169 +0700 +@@ -1222,7 +1222,7 @@ debug("setgroups(): %.200s", strerror(errno)); /* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */ @@ -620,45 +551,14 @@ diff -ruwN source/sshd.c source-new/sshd.c /* Initialize configuration options to their default values. */ initialize_server_options(&options); -@@ -1342,9 +1341,9 @@ - } - } +@@ -1344,7 +1344,6 @@ if (!test_flag && !do_dump_cfg && !path_absolute(av[0])) -- fatal("sshd requires execution with an absolute path"); -+ fatal("sshd requires execution with an absolutez path"); + fatal("sshd requires execution with an absolute path"); - closefrom(STDERR_FILENO + 1); -+ // closefrom(STDERR_FILENO + 1); /* Reserve fds we'll need later for reexec things */ if ((devnull = open(_PATH_DEVNULL, O_RDWR)) == -1) -@@ -1427,16 +1426,16 @@ - * daemonisation in the presence of Match blocks, but this catches - * and warns for trivial misconfigurations that could break login. - */ -- if (options.num_auth_methods != 0) { -- for (i = 0; i < options.num_auth_methods; i++) { -- if (auth2_methods_valid(options.auth_methods[i], -- 1) == 0) -- break; -- } -- if (i >= options.num_auth_methods) -- fatal("AuthenticationMethods cannot be satisfied by " -- "enabled authentication methods"); -- } -+ // if (options.num_auth_methods != 0) { -+ // for (i = 0; i < options.num_auth_methods; i++) { -+ // if (auth2_methods_valid(options.auth_methods[i], -+ // 1) == 0) -+ // break; -+ // } -+ // if (i >= options.num_auth_methods) -+ // fatal("AuthenticationMethods cannot be satisfied by " -+ // "enabled authentication methods"); -+ // } - - /* Check that there are no remaining arguments. */ - if (optind < ac) { @@ -1482,13 +1481,13 @@ options.host_key_files[i]); key->sk_flags &= ~SSH_SK_USER_PRESENCE_REQD; @@ -735,25 +635,23 @@ diff -ruwN source/sshkey.c source-new/sshkey.c #include diff -ruwN source/ssh-sk-client.c source-new/ssh-sk-client.c --- source/ssh-sk-client.c 2024-07-01 11:36:28.000000000 +0700 -+++ source-new/ssh-sk-client.c 2025-09-06 21:09:36.569437846 +0700 -@@ -91,7 +91,7 @@ ++++ source-new/ssh-sk-client.c 2025-09-07 01:21:42.201992304 +0700 +@@ -91,7 +91,6 @@ } close(pair[0]); close(pair[1]); - closefrom(STDERR_FILENO + 1); -+ // closefrom(STDERR_FILENO + 1); debug_f("starting %s %s", helper, verbosity == NULL ? "" : verbosity); execlp(helper, helper, verbosity, (char *)NULL); diff -ruwN source/ssh-sk-helper.c source-new/ssh-sk-helper.c --- source/ssh-sk-helper.c 2024-07-01 11:36:28.000000000 +0700 -+++ source-new/ssh-sk-helper.c 2025-09-06 21:09:36.570437810 +0700 -@@ -303,7 +303,7 @@ ++++ source-new/ssh-sk-helper.c 2025-09-07 01:22:43.638928030 +0700 +@@ -303,7 +303,6 @@ * Rearrange our file descriptors a little; we don't trust the * providers not to fiddle with stdin/out. */ - closefrom(STDERR_FILENO + 1); -+ // closefrom(STDERR_FILENO + 1); if ((in = dup(STDIN_FILENO)) == -1 || (out = dup(STDOUT_FILENO)) == -1) fatal("%s: dup: %s", __progname, strerror(errno)); close(STDIN_FILENO); From 9061f2b2b2ff1baabe1f801fe7c5b7aa3cb31506 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sun, 7 Sep 2025 14:23:00 +0000 Subject: [PATCH 2790/3180] Use sysconfdir, move config to /etc/ssh --- recipes/wip/ssh/openssh/recipe.toml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/recipes/wip/ssh/openssh/recipe.toml b/recipes/wip/ssh/openssh/recipe.toml index 0ce951ba..44343a58 100644 --- a/recipes/wip/ssh/openssh/recipe.toml +++ b/recipes/wip/ssh/openssh/recipe.toml @@ -18,20 +18,20 @@ COOKBOOK_CONFIGURE_FLAGS+=( --disable-strip # requires openssl 1.1.1, result in libcrypto error otherwise --without-openssl + --sysconfdir=/etc/ssh ) cookbook_configure mv "${COOKBOOK_STAGE}"/usr/sbin/sshd "${COOKBOOK_STAGE}"/usr/bin/sshd rmdir "${COOKBOOK_STAGE}"/usr/sbin -mv "${COOKBOOK_STAGE}"/usr/etc "${COOKBOOK_STAGE}"/etc # Extracted from `make host-key-force` # TODO: Very insecure! but there's no postscript yet -ssh-keygen -t dsa -f "${COOKBOOK_STAGE}"/etc/ssh_host_dsa_key -N "" -ssh-keygen -t rsa -f "${COOKBOOK_STAGE}"/etc/ssh_host_rsa_key -N "" -ssh-keygen -t ed25519 -f "${COOKBOOK_STAGE}"/etc/ssh_host_ed25519_key -N "" -ssh-keygen -t ecdsa -f "${COOKBOOK_STAGE}"/etc/ssh_host_ecdsa_key -N "" +ssh-keygen -t dsa -f "${COOKBOOK_STAGE}"/etc/ssh/ssh_host_dsa_key -N "" +ssh-keygen -t rsa -f "${COOKBOOK_STAGE}"/etc/ssh/ssh_host_rsa_key -N "" +ssh-keygen -t ed25519 -f "${COOKBOOK_STAGE}"/etc/ssh/ssh_host_ed25519_key -N "" +ssh-keygen -t ecdsa -f "${COOKBOOK_STAGE}"/etc/ssh/ssh_host_ecdsa_key -N "" -CONFIG_FILE="${COOKBOOK_STAGE}"/etc/sshd_config +CONFIG_FILE="${COOKBOOK_STAGE}"/etc/ssh/sshd_config # ipv6 is not working yet sed -i "s/#AddressFamily any/AddressFamily inet/g" "${CONFIG_FILE}" From c37ddfdfe33e1ee04f3a9323bfdd05083983f974 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sun, 7 Sep 2025 18:18:18 +0000 Subject: [PATCH 2791/3180] Update zig, and go notes --- recipes/wip/dev/lang/go/recipe.toml | 2 +- recipes/wip/dev/lang/zig/recipe.toml | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/recipes/wip/dev/lang/go/recipe.toml b/recipes/wip/dev/lang/go/recipe.toml index 97b80f53..20dd03b5 100644 --- a/recipes/wip/dev/lang/go/recipe.toml +++ b/recipes/wip/dev/lang/go/recipe.toml @@ -1,4 +1,4 @@ -#TODO: Can be built, but ends in breakpoint trap +#TODO compiling, not tested further [source] git = "https://github.com/willnode/go" branch = "go-1.25-redox" diff --git a/recipes/wip/dev/lang/zig/recipe.toml b/recipes/wip/dev/lang/zig/recipe.toml index f5103b29..5c9d26f7 100644 --- a/recipes/wip/dev/lang/zig/recipe.toml +++ b/recipes/wip/dev/lang/zig/recipe.toml @@ -1,4 +1,4 @@ -#TODO requires openat functions and posix_getdents to compile +#TODO compiling, not tested further [source] git = "https://github.com/willnode/zig" branch = "zig-0.15-redox" @@ -8,14 +8,15 @@ template = "custom" script = """ DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}"/* ./ -export ZIG_BOOTSTRAP_CFLAGS="$CFLAGS" -export ZIG_BOOTSTRAP_LDFLAGS="$LDFLAGS" -export ZIG_BOOTSTRAP_TARGET_CC="${TARGET}-gcc" + +export ZIG_HOST_TARGET_CFLAGS="$CFLAGS" +export ZIG_HOST_TARGET_LDFLAGS="$LDFLAGS" +export ZIG_HOST_TARGET_CC="${TARGET}-gcc" export ZIG_HOST_TARGET_TRIPLE="${TARGET%%-*}-redox" unset AR AS CC CXX LD LDFLAGS NM OBJCOPY OBJDUMP RANLIB READELF RUSTFLAGS STRIP cc bootstrap.c -o ./bootstrap ./bootstrap -mkdir -pv "${COOKBOOK_STAGE}/usr/bin" -cp -v "zig2" "${COOKBOOK_STAGE}/usr/bin/zig" +mkdir -p "${COOKBOOK_STAGE}"/usr/bin +cp ./zig2 "${COOKBOOK_STAGE}"/usr/bin/zig """ From 00ff0c5ff92e4fd78378604785b9278e7d26e5a4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 7 Sep 2025 12:48:36 -0600 Subject: [PATCH 2792/3180] hicolor-icon-theme: always reconfigure meson --- recipes/icons/hicolor-icon-theme/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icons/hicolor-icon-theme/recipe.toml b/recipes/icons/hicolor-icon-theme/recipe.toml index a216df37..c7bfc9de 100644 --- a/recipes/icons/hicolor-icon-theme/recipe.toml +++ b/recipes/icons/hicolor-icon-theme/recipe.toml @@ -4,6 +4,6 @@ git = "https://gitlab.freedesktop.org/xdg/default-icon-theme.git" [build] template = "custom" script = """ -meson setup -Dprefix=/usr . "${COOKBOOK_SOURCE}" +meson setup --reconfigure -Dprefix=/usr . "${COOKBOOK_SOURCE}" env DESTDIR="${COOKBOOK_STAGE}" meson install """ From 5064d0e02e4b598262d856bc9626fc556ff80525 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 7 Sep 2025 17:47:43 -0600 Subject: [PATCH 2793/3180] Allow fallback to static builds on targets with broken dynamic linking --- recipes/libs/expat/recipe.toml | 8 +--- recipes/libs/libffi/recipe.toml | 8 +--- recipes/libs/libiconv/recipe.toml | 8 +--- recipes/libs/libpng/recipe.toml | 8 +--- recipes/libs/libxml2/recipe.toml | 8 +--- recipes/libs/pcre/recipe.toml | 8 +--- recipes/libs/pcre2/recipe.toml | 8 +--- recipes/libs/zlib/recipe.toml | 15 +++++- recipes/tools/gettext/recipe.toml | 4 +- recipes/tools/xz/recipe.toml | 8 +--- src/bin/cook.rs | 76 +++++++++++++++++++++++-------- 11 files changed, 83 insertions(+), 76 deletions(-) diff --git a/recipes/libs/expat/recipe.toml b/recipes/libs/expat/recipe.toml index c88685e4..37f15adb 100644 --- a/recipes/libs/expat/recipe.toml +++ b/recipes/libs/expat/recipe.toml @@ -9,12 +9,8 @@ autotools_recursive_regenerate [build] template = "custom" script = """ -DYNAMIC_INIT -COOKBOOK_CONFIGURE_FLAGS=( - --host="${GNU_TARGET}" - --prefix="/usr" - --enable-shared - --enable-static +DYNAMIC_STATIC_INIT +COOKBOOK_CONFIGURE_FLAGS+=( --without-docbook --without-examples --without-tests diff --git a/recipes/libs/libffi/recipe.toml b/recipes/libs/libffi/recipe.toml index 1cc1701e..8851cfce 100644 --- a/recipes/libs/libffi/recipe.toml +++ b/recipes/libs/libffi/recipe.toml @@ -13,12 +13,6 @@ autotools_recursive_regenerate -I$(realpath ./m4) [build] template = "custom" script = """ -DYNAMIC_INIT -COOKBOOK_CONFIGURE_FLAGS=( - --host="${GNU_TARGET}" - --prefix="/usr" - --enable-shared - --enable-static -) +DYNAMIC_STATIC_INIT cookbook_configure """ \ No newline at end of file diff --git a/recipes/libs/libiconv/recipe.toml b/recipes/libs/libiconv/recipe.toml index 43db90f7..bce6869a 100644 --- a/recipes/libs/libiconv/recipe.toml +++ b/recipes/libs/libiconv/recipe.toml @@ -19,12 +19,8 @@ autotools_recursive_regenerate -I$(realpath ./m4) -I$(realpath ./srcm4) [build] template = "custom" script = """ -DYNAMIC_INIT -COOKBOOK_CONFIGURE_FLAGS=( - --host="${GNU_TARGET}" - --prefix="/usr" - --enable-shared - --enable-static +DYNAMIC_STATIC_INIT +COOKBOOK_CONFIGURE_FLAGS+=( ac_cv_have_decl_program_invocation_name=no ) cookbook_configure diff --git a/recipes/libs/libpng/recipe.toml b/recipes/libs/libpng/recipe.toml index d516a857..cd413daf 100644 --- a/recipes/libs/libpng/recipe.toml +++ b/recipes/libs/libpng/recipe.toml @@ -12,12 +12,6 @@ autotools_recursive_regenerate template = "custom" dependencies = ["zlib"] script = """ -DYNAMIC_INIT -COOKBOOK_CONFIGURE_FLAGS=( - --host="${GNU_TARGET}" - --prefix="/usr" - --enable-shared - --enable-static -) +DYNAMIC_STATIC_INIT cookbook_configure """ diff --git a/recipes/libs/libxml2/recipe.toml b/recipes/libs/libxml2/recipe.toml index 4e4b936d..f37f4296 100644 --- a/recipes/libs/libxml2/recipe.toml +++ b/recipes/libs/libxml2/recipe.toml @@ -13,12 +13,8 @@ dependencies = [ "zlib" ] script = """ -DYNAMIC_INIT -COOKBOOK_CONFIGURE_FLAGS=( - --host="${GNU_TARGET}" - --prefix="/usr" - --enable-shared - --enable-static +DYNAMIC_STATIC_INIT +COOKBOOK_CONFIGURE_FLAGS+=( --without-python ) cookbook_configure diff --git a/recipes/libs/pcre/recipe.toml b/recipes/libs/pcre/recipe.toml index bf12da07..773c8f48 100644 --- a/recipes/libs/pcre/recipe.toml +++ b/recipes/libs/pcre/recipe.toml @@ -12,12 +12,6 @@ patches = [ [build] template = "custom" script = """ -DYNAMIC_INIT -COOKBOOK_CONFIGURE_FLAGS=( - --host="${GNU_TARGET}" - --prefix="/usr" - --enable-shared - --enable-static -) +DYNAMIC_STATIC_INIT cookbook_configure """ diff --git a/recipes/libs/pcre2/recipe.toml b/recipes/libs/pcre2/recipe.toml index 176f992c..09c4d86b 100644 --- a/recipes/libs/pcre2/recipe.toml +++ b/recipes/libs/pcre2/recipe.toml @@ -9,12 +9,6 @@ autotools_recursive_regenerate [build] template = "custom" script = """ -DYNAMIC_INIT -COOKBOOK_CONFIGURE_FLAGS=( - --host="${GNU_TARGET}" - --prefix="/usr" - --enable-shared - --enable-static -) +DYNAMIC_STATIC_INIT cookbook_configure """ diff --git a/recipes/libs/zlib/recipe.toml b/recipes/libs/zlib/recipe.toml index 865247ba..626018c7 100644 --- a/recipes/libs/zlib/recipe.toml +++ b/recipes/libs/zlib/recipe.toml @@ -6,9 +6,20 @@ blake3 = "ec1abc6f672a7a6ee6f49ba544cc9529f73121b478310473be44fee22a140ebf" template = "custom" script = """ DYNAMIC_INIT +COOKBOOK_CONFIGURE_FLAGS=(--prefix="/usr") +if [ "${COOKBOOK_DYNAMIC}" == "1" ] +then + COOKBOOK_CONFIGURE_FLAGS+=(--shared) +else + COOKBOOK_CONFIGURE_FLAGS+=(--static) +fi # See https://stackoverflow.com/questions/21396988/zlib-build-not-configuring-properly-with-cross-compiler-ignores-ar. -CHOST="${TARGET}" "${COOKBOOK_CONFIGURE}" --prefix="/usr" +env CHOST="${TARGET}" "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" "${COOKBOOK_MAKE}" -j "$(nproc)" "${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" -patchelf --set-soname 'libz.so.1.3' "${COOKBOOK_STAGE}/usr/lib/libz.so.1.3" +solib="${COOKBOOK_STAGE}/usr/lib/libz.so.1.3" +if [ -e "${solib}" ] +then + patchelf --set-soname 'libz.so.1.3' "${solib}" +fi """ \ No newline at end of file diff --git a/recipes/tools/gettext/recipe.toml b/recipes/tools/gettext/recipe.toml index e3075157..276e4e83 100644 --- a/recipes/tools/gettext/recipe.toml +++ b/recipes/tools/gettext/recipe.toml @@ -23,10 +23,8 @@ dependencies = [ "libiconv" ] script = """ -DYNAMIC_INIT +DYNAMIC_STATIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( - --enable-static - --enable-shared ac_cv_have_decl_program_invocation_name=no gt_cv_locale_fr=false gt_cv_locale_fr_utf8=false diff --git a/recipes/tools/xz/recipe.toml b/recipes/tools/xz/recipe.toml index 339b5102..51ca7e47 100644 --- a/recipes/tools/xz/recipe.toml +++ b/recipes/tools/xz/recipe.toml @@ -9,16 +9,12 @@ autotools_recursive_regenerate [build] template = "custom" script = """ -DYNAMIC_INIT -COOKBOOK_CONFIGURE_FLAGS=( - --host="${GNU_TARGET}" - --prefix="/usr" +DYNAMIC_STATIC_INIT +COOKBOOK_CONFIGURE_FLAGS+=( --disable-lzmadec --disable-lzmainfo --disable-xz --disable-xzdec - --enable-shared=yes - --enable-static=yes --enable-threads=no ) cookbook_configure diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 7b3f291a..365e7315 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -203,29 +203,66 @@ fn serialize_and_write(file_path: &Path, content: &T) -> Result<() } static SHARED_PRESCRIPT: &str = r#" +# Build dynamically function DYNAMIC_INIT { - COOKBOOK_AUTORECONF="autoreconf" - autotools_recursive_regenerate() { - for f in $(find . -name configure.ac -o -name configure.in -type f | sort); do - echo "* autotools regen in '$(dirname $f)'..." - ( cd "$(dirname "$f")" && "${COOKBOOK_AUTORECONF}" -fvi "$@" -I${COOKBOOK_HOST_SYSROOT}/share/aclocal ) - done - } + COOKBOOK_AUTORECONF="autoreconf" + autotools_recursive_regenerate() { + for f in $(find . -name configure.ac -o -name configure.in -type f | sort); do + echo "* autotools regen in '$(dirname $f)'..." + ( cd "$(dirname "$f")" && "${COOKBOOK_AUTORECONF}" -fvi "$@" -I${COOKBOOK_HOST_SYSROOT}/share/aclocal ) + done + } - echo "DEBUG: Program is being compiled dynamically." + if [ "${TARGET}" != "x86_64-unknown-redox" ] + then + echo "WARN: ${TARGET} does not support dynamic linking." >&2 + return + fi - COOKBOOK_CONFIGURE_FLAGS=( - --host="${GNU_TARGET}" - --prefix="/usr" - --enable-shared - --disable-static - ) + echo "DEBUG: Program is being compiled dynamically." - # TODO: check paths for spaces - export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" - export LDFLAGS="-Wl,-rpath-link,${COOKBOOK_SYSROOT}/lib $LDFLAGS" - export RUSTFLAGS="-C target-feature=-crt-static" - export COOKBOOK_DYNAMIC=1 + COOKBOOK_CONFIGURE_FLAGS=( + --host="${GNU_TARGET}" + --prefix="/usr" + --enable-shared + --disable-static + ) + + COOKBOOK_MESON_FLAGS=( + --buildtype release + --wrap-mode nofallback + --strip + -Ddefault_library=shared + -Dprefix=/usr + ) + + # TODO: check paths for spaces + export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" + export LDFLAGS="-Wl,-rpath-link,${COOKBOOK_SYSROOT}/lib $LDFLAGS" + export RUSTFLAGS="-C target-feature=-crt-static" + export COOKBOOK_DYNAMIC=1 +} + +# Build both dynamically and statically +function DYNAMIC_STATIC_INIT { + DYNAMIC_INIT + if [ "${COOKBOOK_DYNAMIC}" == "1" ] + then + COOKBOOK_CONFIGURE_FLAGS=( + --host="${GNU_TARGET}" + --prefix="/usr" + --enable-shared + --enable-static + ) + + COOKBOOK_MESON_FLAGS=( + --buildtype release + --wrap-mode nofallback + --strip + -Ddefault_library=both + -Dprefix=/usr + ) + fi } function GNU_CONFIG_GET { @@ -938,6 +975,7 @@ COOKBOOK_MESON_FLAGS=( --buildtype release --wrap-mode nofallback --strip + -Ddefault_library=static -Dprefix=/usr ) function cookbook_meson { From 8e48e735846170c0ad5200a66a89a9c18c758ba0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 7 Sep 2025 19:01:27 -0600 Subject: [PATCH 2794/3180] Make it easier to compile cmake software dynamically --- recipes/dev/cmake/recipe.toml | 2 +- recipes/dev/llvm18/recipe.toml | 2 +- recipes/games/eduke32/recipe.toml | 2 +- recipes/games/opentyrian/recipe.toml | 2 +- recipes/games/quakespasm/recipe.toml | 2 +- recipes/libs/libjpeg/recipe.toml | 2 +- recipes/libs/libuv/recipe.toml | 2 +- recipes/libs/mesa/recipe.toml | 26 ++++++++-------------- recipes/wip/dev/other/protobuf/recipe.toml | 2 +- src/bin/cook.rs | 19 ++++++++++++++-- 10 files changed, 34 insertions(+), 27 deletions(-) diff --git a/recipes/dev/cmake/recipe.toml b/recipes/dev/cmake/recipe.toml index 4425cd33..b888557b 100644 --- a/recipes/dev/cmake/recipe.toml +++ b/recipes/dev/cmake/recipe.toml @@ -24,7 +24,7 @@ DYNAMIC_INIT export LDFLAGS="-Wl,-rpath-link,${COOKBOOK_SYSROOT}/lib $LDFLAGS" -COOKBOOK_CMAKE_FLAGS=( +COOKBOOK_CMAKE_FLAGS+=( -DBUILD_TESTING=Off -DCMAKE_USE_SYSTEM_BZIP2=On -DCMAKE_USE_SYSTEM_CURL=On diff --git a/recipes/dev/llvm18/recipe.toml b/recipes/dev/llvm18/recipe.toml index da8be3e4..1834a94e 100644 --- a/recipes/dev/llvm18/recipe.toml +++ b/recipes/dev/llvm18/recipe.toml @@ -31,7 +31,7 @@ case "${TARGET}" in ;; esac -COOKBOOK_CMAKE_FLAGS=( +COOKBOOK_CMAKE_FLAGS+=( -DCMAKE_CXX_FLAGS="--std=gnu++11" -DBUILD_SHARED_LIBS=False -DLLVM_LINK_LLVM_DYLIB=On diff --git a/recipes/games/eduke32/recipe.toml b/recipes/games/eduke32/recipe.toml index 29616fba..79cd4a57 100644 --- a/recipes/games/eduke32/recipe.toml +++ b/recipes/games/eduke32/recipe.toml @@ -23,7 +23,7 @@ export CFLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL" export SDLCONFIG="${COOKBOOK_SYSROOT}/bin/sdl-config --prefix=${COOKBOOK_SYSROOT}" export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" -if [[ -n "${COOKBOOK_PREFER_STATIC}" ]]; then +if [ "${COOKBOOK_DYNAMIC}" != "1" ]; then LDFLAGS+=" -static" fi diff --git a/recipes/games/opentyrian/recipe.toml b/recipes/games/opentyrian/recipe.toml index d20cecf3..ba168fb2 100644 --- a/recipes/games/opentyrian/recipe.toml +++ b/recipes/games/opentyrian/recipe.toml @@ -38,7 +38,7 @@ export bindir="${prefix}/games" export icondir="/ui/icons/apps" export gamesdir="${prefix}/share/games" -if ! [[ -n "${COOKBOOK_PREFER_STATIC}" ]]; then +if [ "${COOKBOOK_DYNAMIC}" == "1" ]; then LDFLAGS+=" -lstdc++" fi diff --git a/recipes/games/quakespasm/recipe.toml b/recipes/games/quakespasm/recipe.toml index f101e897..58cefddb 100644 --- a/recipes/games/quakespasm/recipe.toml +++ b/recipes/games/quakespasm/recipe.toml @@ -39,7 +39,7 @@ export USE_SDL2=1 export USE_CODEC_MP3=0 export DO_USERDIRS=1 -if ! [[ -n "${COOKBOOK_PREFER_STATIC}" ]]; then +if [ "${COOKBOOK_DYNAMIC}" == "1" ]; then LDFLAGS+=" -lstdc++" fi diff --git a/recipes/libs/libjpeg/recipe.toml b/recipes/libs/libjpeg/recipe.toml index 646a06b7..b7b41741 100644 --- a/recipes/libs/libjpeg/recipe.toml +++ b/recipes/libs/libjpeg/recipe.toml @@ -6,6 +6,6 @@ blake3 = "3efc14da55c56fc0a6a50f109d9e1ee8a91f5ae7dd17a21d3aebe04a65f3ee96" [build] template = "custom" script = """ -DYNAMIC_INIT +DYNAMIC_STATIC_INIT cookbook_cmake """ diff --git a/recipes/libs/libuv/recipe.toml b/recipes/libs/libuv/recipe.toml index dcef35ca..d6b4f957 100644 --- a/recipes/libs/libuv/recipe.toml +++ b/recipes/libs/libuv/recipe.toml @@ -8,7 +8,7 @@ template = "custom" script = """ DYNAMIC_INIT -COOKBOOK_CMAKE_FLAGS=( +COOKBOOK_CMAKE_FLAGS+=( -DBUILD_TESTING=Off ) cookbook_cmake diff --git a/recipes/libs/mesa/recipe.toml b/recipes/libs/mesa/recipe.toml index d581c1b3..59601081 100644 --- a/recipes/libs/mesa/recipe.toml +++ b/recipes/libs/mesa/recipe.toml @@ -17,27 +17,19 @@ export CFLAGS+=" -DHAVE_PTHREAD=1" export CPPFLAGS+=" -DHAVE_PTHREAD=1" export LLVM_CONFIG="${TARGET}-llvm-config" -if [[ -n "${COOKBOOK_PREFER_STATIC}" ]]; then - export LDFLAGS+=" --static" - export DEFAULTLIB="static" - export LLVMSHARED="disabled" +if [ "${COOKBOOK_DYNAMIC}" == "1" ]; then + COOKBOOK_MESON_FLAGS+=(-Dshared-llvm=enabled) else - export DEFAULTLIB="shared" - export LLVMSHARED="enabled" + COOKBOOK_MESON_FLAGS+=(-Dshared-llvm=disabled) fi -COOKBOOK_MESON_FLAGS=( - -Ddefault_library="${DEFAULTLIB}" - -Dglx=disabled - -Dllvm=enabled - -Dosmesa=true - -Dplatforms= - -Dshader-cache=disabled - -Dshared-llvm="${LLVMSHARED}" +cookbook_meson \ + -Dglx=disabled \ + -Dllvm=enabled \ + -Dosmesa=true \ + -Dplatforms= \ + -Dshader-cache=disabled \ -Dshared-glapi=disabled -) - -cookbook_meson # Hack to add LLVM libs #TODO: only add necessary LLVM libs, not all of them diff --git a/recipes/wip/dev/other/protobuf/recipe.toml b/recipes/wip/dev/other/protobuf/recipe.toml index f0827b2a..7c90d452 100644 --- a/recipes/wip/dev/other/protobuf/recipe.toml +++ b/recipes/wip/dev/other/protobuf/recipe.toml @@ -13,7 +13,7 @@ dependencies = [ ] script = """ DYNAMIC_INIT -COOKBOOK_CMAKE_FLAGS=( +COOKBOOK_CMAKE_FLAGS+=( -Dprotobuf_BUILD_TESTS=OFF ) cookbook_cmake diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 365e7315..4ec65240 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -228,6 +228,12 @@ function DYNAMIC_INIT { --disable-static ) + COOKBOOK_CMAKE_FLAGS=( + -DBUILD_SHARED_LIBS=True + -DENABLE_SHARED=True + -DENABLE_STATIC=False + ) + COOKBOOK_MESON_FLAGS=( --buildtype release --wrap-mode nofallback @@ -255,6 +261,12 @@ function DYNAMIC_STATIC_INIT { --enable-static ) + COOKBOOK_CMAKE_FLAGS=( + -DBUILD_SHARED_LIBS=True + -DENABLE_SHARED=True + -DENABLE_STATIC=True + ) + COOKBOOK_MESON_FLAGS=( --buildtype release --wrap-mode nofallback @@ -927,6 +939,11 @@ function cookbook_configure { COOKBOOK_CMAKE="cmake" COOKBOOK_NINJA="ninja" +COOKBOOK_CMAKE_FLAGS=( + -DBUILD_SHARED_LIBS=False + -DENABLE_SHARED=False + -DENABLE_STATIC=True +) function cookbook_cmake { cat > cross_file.cmake < Date: Sun, 7 Sep 2025 19:05:20 -0600 Subject: [PATCH 2795/3180] freetype2: use DYNAMIC_STATIC_INIT --- recipes/libs/freetype2/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/libs/freetype2/recipe.toml b/recipes/libs/freetype2/recipe.toml index 12cb960c..90c12fac 100644 --- a/recipes/libs/freetype2/recipe.toml +++ b/recipes/libs/freetype2/recipe.toml @@ -9,6 +9,6 @@ dependencies = [ "zlib" ] script = """ -DYNAMIC_INIT -cookbook_meson -Ddefault_library=both +DYNAMIC_STATIC_INIT +cookbook_meson """ From 1b29c1e173b66f9f7832b1ca4d7be8aa40cf996c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 7 Sep 2025 20:53:28 -0600 Subject: [PATCH 2796/3180] Clean up compiler flags --- recipes/demos/cairodemo/recipe.toml | 2 -- recipes/dev/cmake/recipe.toml | 2 -- recipes/dev/git/recipe.toml | 2 -- recipes/emulators/dosbox/recipe.toml | 4 ++-- recipes/emulators/flycast/recipe.toml | 4 ++-- recipes/emulators/rvvm/recipe.toml | 2 +- recipes/games/eduke32/recipe.toml | 7 +------ recipes/games/gigalomania/recipe.toml | 2 -- recipes/games/sopwith/recipe.toml | 3 +-- recipes/libs/liborbital/recipe.toml | 2 +- recipes/libs/sdl-gfx/recipe.toml | 3 --- recipes/libs/sdl1-ttf/recipe.toml | 3 +-- recipes/libs/sdl2/recipe.toml | 2 +- recipes/tools/schismtracker/recipe.toml | 3 +-- recipes/tui/mdp/recipe.toml | 3 +-- recipes/video/sdl-player/recipe.toml | 2 -- recipes/web/netsurf/recipe.toml | 4 ++-- recipes/wip/libs/other/boost/recipe.toml | 4 ---- recipes/wip/libs/other/freeglut/recipe.toml | 5 ----- recipes/wip/x11/xterm/recipe.toml | 2 +- src/bin/cook.rs | 3 +-- 21 files changed, 16 insertions(+), 48 deletions(-) diff --git a/recipes/demos/cairodemo/recipe.toml b/recipes/demos/cairodemo/recipe.toml index c4f58aac..6538f035 100755 --- a/recipes/demos/cairodemo/recipe.toml +++ b/recipes/demos/cairodemo/recipe.toml @@ -13,8 +13,6 @@ dependencies = [ ] template = "custom" script = """ -export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" -export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include" "${CXX}" \ $("${PKG_CONFIG}" --cflags cairo) \ "${COOKBOOK_RECIPE}/cairodemo.c" \ diff --git a/recipes/dev/cmake/recipe.toml b/recipes/dev/cmake/recipe.toml index b888557b..1cc84615 100644 --- a/recipes/dev/cmake/recipe.toml +++ b/recipes/dev/cmake/recipe.toml @@ -22,8 +22,6 @@ dependencies = [ script = """ DYNAMIC_INIT -export LDFLAGS="-Wl,-rpath-link,${COOKBOOK_SYSROOT}/lib $LDFLAGS" - COOKBOOK_CMAKE_FLAGS+=( -DBUILD_TESTING=Off -DCMAKE_USE_SYSTEM_BZIP2=On diff --git a/recipes/dev/git/recipe.toml b/recipes/dev/git/recipe.toml index 616f7a81..52d5b70c 100644 --- a/recipes/dev/git/recipe.toml +++ b/recipes/dev/git/recipe.toml @@ -28,8 +28,6 @@ MAKEFLAGS=( BLK_SHA1=1 V=1 ) -export LDFLAGS="-L${COOKBOOK_SYSROOT}/usr/lib" -export CPPFLAGS="-I${COOKBOOK_SYSROOT}/usr/include" export CURL_CONFIG="${COOKBOOK_SYSROOT}/usr/bin/curl-config" ./configure \ --host="${GNU_TARGET}" \ diff --git a/recipes/emulators/dosbox/recipe.toml b/recipes/emulators/dosbox/recipe.toml index c25c5043..61e31fc9 100644 --- a/recipes/emulators/dosbox/recipe.toml +++ b/recipes/emulators/dosbox/recipe.toml @@ -15,8 +15,8 @@ dependencies = [ template = "custom" script = """ DYNAMIC_INIT -export CFLAGS="-I${COOKBOOK_SYSROOT}/include/SDL" -export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/SDL" +export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include/SDL" +export CPPFLAGS="${CPPFLAGS} -I${COOKBOOK_SYSROOT}/include/SDL" export LDFLAGS+=" -lorbital" COOKBOOK_CONFIGURE_FLAGS+=( --disable-opengl diff --git a/recipes/emulators/flycast/recipe.toml b/recipes/emulators/flycast/recipe.toml index 65e439c7..0c90a430 100644 --- a/recipes/emulators/flycast/recipe.toml +++ b/recipes/emulators/flycast/recipe.toml @@ -16,8 +16,8 @@ dependencies = [ ] script = """ DYNAMIC_INIT -export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/usr/include -I${COOKBOOK_SYSROOT}/usr/include/SDL2" -export CXXFLAGS="${CXXFLAGS} -D_GLIBCXX_USE_C99_MATH_TR1=1 -I${COOKBOOK_SYSROOT}/usr/include -I${COOKBOOK_SYSROOT}/usr/include/SDL2" +export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/usr/include/SDL2" +export CXXFLAGS="${CXXFLAGS} -D_GLIBCXX_USE_C99_MATH_TR1=1 -I${COOKBOOK_SYSROOT}/usr/include/SDL2" #TODO: don't use this export SDL_LIBS="-lSDL2 -lorbital $("${TARGET}-pkg-config" --libs osmesa) -lstdc++" #TODO: don't add curl diff --git a/recipes/emulators/rvvm/recipe.toml b/recipes/emulators/rvvm/recipe.toml index d355186e..c98185fb 100644 --- a/recipes/emulators/rvvm/recipe.toml +++ b/recipes/emulators/rvvm/recipe.toml @@ -17,7 +17,7 @@ export BUILDDIR="${COOKBOOK_BUILD}" export DESTDIR="${COOKBOOK_STAGE}" # Redox currently doesn't support dynamic library loading -export LDFLAGS="$(pkg-config --libs sdl)" +export LDFLAGS="${LDFLAGS} $(pkg-config --libs sdl)" # Networking is currently broken on Redox (missing setsockopt?) export USE_NET=0 diff --git a/recipes/games/eduke32/recipe.toml b/recipes/games/eduke32/recipe.toml index 79cd4a57..2cc38c16 100644 --- a/recipes/games/eduke32/recipe.toml +++ b/recipes/games/eduke32/recipe.toml @@ -19,14 +19,9 @@ DYNAMIC_INIT # Copy source to build directory rsync -av --delete "${COOKBOOK_SOURCE}/" ./ -export CFLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL" +export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include/SDL" export SDLCONFIG="${COOKBOOK_SYSROOT}/bin/sdl-config --prefix=${COOKBOOK_SYSROOT}" -export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" -if [ "${COOKBOOK_DYNAMIC}" != "1" ]; then - LDFLAGS+=" -static" -fi - PLATFORM=REDOX "${COOKBOOK_MAKE}" -j"$($NPROC)" mkdir -pv "${COOKBOOK_STAGE}/usr/games" diff --git a/recipes/games/gigalomania/recipe.toml b/recipes/games/gigalomania/recipe.toml index a39f84fe..5a000cba 100644 --- a/recipes/games/gigalomania/recipe.toml +++ b/recipes/games/gigalomania/recipe.toml @@ -21,8 +21,6 @@ DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ export CPPHOST="${TARGET}-g++" -export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" -export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include" "${REDOX_MAKE}" all -j"$(${NPROC})" diff --git a/recipes/games/sopwith/recipe.toml b/recipes/games/sopwith/recipe.toml index 60bdad06..219c5c33 100644 --- a/recipes/games/sopwith/recipe.toml +++ b/recipes/games/sopwith/recipe.toml @@ -10,8 +10,7 @@ dependencies = [ "libiconv", ] script = """ -export CFLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL" -export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib -static" +export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include/SDL" export LIBS="-lSDL -lorbital" # TODO: Uses sdl-config instead of pkg-config # For some reason, cook_configure breaks spectacularly on this diff --git a/recipes/libs/liborbital/recipe.toml b/recipes/libs/liborbital/recipe.toml index 0276ea61..a3e0c5fe 100644 --- a/recipes/libs/liborbital/recipe.toml +++ b/recipes/libs/liborbital/recipe.toml @@ -4,7 +4,7 @@ git = "https://gitlab.redox-os.org/redox-os/liborbital.git" [build] template = "custom" script = """ -DYNAMIC_INIT +DYNAMIC_STATIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ "${COOKBOOK_CARGO}" build --release "${COOKBOOK_MAKE}" install HOST="${TARGET}" DESTDIR="${COOKBOOK_STAGE}" diff --git a/recipes/libs/sdl-gfx/recipe.toml b/recipes/libs/sdl-gfx/recipe.toml index 1ba2b354..540b8d15 100644 --- a/recipes/libs/sdl-gfx/recipe.toml +++ b/recipes/libs/sdl-gfx/recipe.toml @@ -14,9 +14,6 @@ dependencies = [ "libiconv", ] script = """ -export CFLAGS="-I${COOKBOOK_SYSROOT}/include" -export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" - COOKBOOK_CONFIGURE_FLAGS=( --prefix=/ --build="$(gcc -dumpmachine)" diff --git a/recipes/libs/sdl1-ttf/recipe.toml b/recipes/libs/sdl1-ttf/recipe.toml index 7c335b02..4d0280e6 100644 --- a/recipes/libs/sdl1-ttf/recipe.toml +++ b/recipes/libs/sdl1-ttf/recipe.toml @@ -16,8 +16,7 @@ dependencies = [ "zlib", ] script = """ -export CFLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/freetype2" -export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" +export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include/freetype2" COOKBOOK_CONFIGURE_FLAGS=( --prefix=/ diff --git a/recipes/libs/sdl2/recipe.toml b/recipes/libs/sdl2/recipe.toml index 9cc943ac..bef94c0a 100644 --- a/recipes/libs/sdl2/recipe.toml +++ b/recipes/libs/sdl2/recipe.toml @@ -12,7 +12,7 @@ dependencies = [ ] script = """ DYNAMIC_INIT -export LDFLAGS="$LDFLAGS -lorbital -lOSMesa -lstdc++" +export LDFLAGS="${LDFLAGS} -lorbital -lOSMesa -lstdc++" COOKBOOK_CONFIGURE_FLAGS+=( --disable-pulseaudio --disable-video-x11 diff --git a/recipes/tools/schismtracker/recipe.toml b/recipes/tools/schismtracker/recipe.toml index aea391ea..7d08b5ad 100644 --- a/recipes/tools/schismtracker/recipe.toml +++ b/recipes/tools/schismtracker/recipe.toml @@ -14,8 +14,7 @@ dependencies = [ "libiconv", ] script = """ -export CFLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL" -export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib -static" +export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include/SDL" export SDL_CONFIG="${COOKBOOK_SYSROOT}/bin/sdl-config" COOKBOOK_CONFIGURE_FLAGS=( diff --git a/recipes/tui/mdp/recipe.toml b/recipes/tui/mdp/recipe.toml index a78e477f..ca3be43a 100644 --- a/recipes/tui/mdp/recipe.toml +++ b/recipes/tui/mdp/recipe.toml @@ -10,8 +10,7 @@ dependencies = [ script = """ rsync -av --delete --exclude='.git' "${COOKBOOK_SOURCE}/" ./ -export CFLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/ncursesw" -export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" +export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include/ncursesw" "${COOKBOOK_MAKE}" -j"$(${NPROC})" diff --git a/recipes/video/sdl-player/recipe.toml b/recipes/video/sdl-player/recipe.toml index 5f8ee857..b870523b 100644 --- a/recipes/video/sdl-player/recipe.toml +++ b/recipes/video/sdl-player/recipe.toml @@ -11,8 +11,6 @@ dependencies = [ ] script = """ rsync -av --delete --exclude='.git' "${COOKBOOK_SOURCE}/" ./ -export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include" -export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib -static" "${COOKBOOK_MAKE}" -j"$(${NPROC})" mkdir -pv "${COOKBOOK_STAGE}/bin" diff --git a/recipes/web/netsurf/recipe.toml b/recipes/web/netsurf/recipe.toml index 5501fa54..fabdc032 100644 --- a/recipes/web/netsurf/recipe.toml +++ b/recipes/web/netsurf/recipe.toml @@ -27,8 +27,8 @@ DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ export TARGET="framebuffer" -export CFLAGS="-I${COOKBOOK_SYSROOT}/include -I${PWD}/inst-${TARGET}/include" -export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib -L${PWD}/inst-${TARGET}/lib -Wl,--allow-multiple-definition -Wl,-rpath-link,${COOKBOOK_SYSROOT}/lib" +export CFLAGS="${CFLAGS} -I${PWD}/inst-${TARGET}/include" +export LDFLAGS="${LDFLAGS} -L${COOKBOOK_SYSROOT}/lib -L${PWD}/inst-${TARGET}/lib -Wl,--allow-multiple-definition -Wl,-rpath-link,${COOKBOOK_SYSROOT}/lib" # nghttp2 is not linked for some reason export LDFLAGS="${LDFLAGS} -lcurl -lnghttp2" diff --git a/recipes/wip/libs/other/boost/recipe.toml b/recipes/wip/libs/other/boost/recipe.toml index 8664e721..d4903267 100644 --- a/recipes/wip/libs/other/boost/recipe.toml +++ b/recipes/wip/libs/other/boost/recipe.toml @@ -16,10 +16,6 @@ dependencies = [ # "zstd", ] script = """ -export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include" -export CPPFLAGS="${CPPFLAGS} ${CFLAGS}" -export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib --static" - BOOST_ROOT="${COOKBOOK_STAGE}/usr" mkdir -p "${BOOST_ROOT}" diff --git a/recipes/wip/libs/other/freeglut/recipe.toml b/recipes/wip/libs/other/freeglut/recipe.toml index f2b576ad..dbb525b9 100644 --- a/recipes/wip/libs/other/freeglut/recipe.toml +++ b/recipes/wip/libs/other/freeglut/recipe.toml @@ -9,11 +9,6 @@ dependencies = [ ] template = "custom" script = """ -export CFLAGS="-I${COOKBOOK_SYSROOT}/include" -export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include" -export CXXFLAGS="-I${COOKBOOK_SYSROOT}/include" -export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" - cat > redox.cmake < Date: Sun, 7 Sep 2025 20:53:56 -0600 Subject: [PATCH 2797/3180] openssl1: fix target used for compiler --- recipes/libs/openssl1/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/libs/openssl1/recipe.toml b/recipes/libs/openssl1/recipe.toml index 6b01054b..b2836cf9 100644 --- a/recipes/libs/openssl1/recipe.toml +++ b/recipes/libs/openssl1/recipe.toml @@ -14,7 +14,7 @@ COOKBOOK_CONFIGURE_FLAGS=( "redox-${ARCH}" --prefix="/" ) -export CC="${CC_WRAPPER} ${TARGET}-gcc" +export CC="${CC_WRAPPER} ${GNU_TARGET}-gcc" "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" "${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" "${COOKBOOK_MAKE}" install_sw install_ssldirs DESTDIR="${COOKBOOK_STAGE}" From 554893f862bba7162bda40e34c39e6e8aad87cae Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 7 Sep 2025 21:28:58 -0600 Subject: [PATCH 2798/3180] Update pkgar --- pkgar | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgar b/pkgar index 185fe5c3..44677ccb 160000 --- a/pkgar +++ b/pkgar @@ -1 +1 @@ -Subproject commit 185fe5c3346d9aa552f308cf61c66f7b6e25280a +Subproject commit 44677ccbff9e315ce9de1a85ac5a30cfff1aad30 From abc2c810d0369e4119cdc7b467f3109ac87aa91f Mon Sep 17 00:00:00 2001 From: Wildan M Date: Mon, 8 Sep 2025 13:31:12 +0700 Subject: [PATCH 2799/3180] Update and promote rsync --- recipes/archives/lz4/recipe.toml | 9 +++----- recipes/archives/zstd/recipe.toml | 1 + recipes/net/rsync/recipe.toml | 12 +++++++++++ recipes/net/rsync/redox.patch | 25 +++++++++++++++++++++++ recipes/wip/libs/other/xxhash/recipe.toml | 9 ++++++-- recipes/wip/net/other/rsync/recipe.toml | 12 ----------- 6 files changed, 48 insertions(+), 20 deletions(-) create mode 100644 recipes/net/rsync/recipe.toml create mode 100644 recipes/net/rsync/redox.patch delete mode 100644 recipes/wip/net/other/rsync/recipe.toml diff --git a/recipes/archives/lz4/recipe.toml b/recipes/archives/lz4/recipe.toml index bd1763e5..1aacf826 100644 --- a/recipes/archives/lz4/recipe.toml +++ b/recipes/archives/lz4/recipe.toml @@ -6,13 +6,10 @@ patches = ["redox.patch"] [build] template = "custom" script = """ +DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ - -# No configure provided -COOKBOOK_CONFIGURE="true" -COOKBOOK_CONFIGURE_FLAGS="" - export CPPFLAGS="${CPPFLAGS} -D_REDOX" -cookbook_configure +${COOKBOOK_MAKE} +${COOKBOOK_MAKE} install DESTDIR="${COOKBOOK_STAGE}" prefix="/usr" """ diff --git a/recipes/archives/zstd/recipe.toml b/recipes/archives/zstd/recipe.toml index e42573e0..90684850 100644 --- a/recipes/archives/zstd/recipe.toml +++ b/recipes/archives/zstd/recipe.toml @@ -9,4 +9,5 @@ script = """ DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ ${COOKBOOK_MAKE} +${COOKBOOK_MAKE} install DESTDIR="${COOKBOOK_STAGE}" prefix="/usr" """ diff --git a/recipes/net/rsync/recipe.toml b/recipes/net/rsync/recipe.toml new file mode 100644 index 00000000..4a967f27 --- /dev/null +++ b/recipes/net/rsync/recipe.toml @@ -0,0 +1,12 @@ +[source] +tar = "https://download.samba.org/pub/rsync/src/rsync-3.4.1.tar.gz" +patches = ["redox.patch"] + +[build] +template = "configure" +dependencies = [ + "zstd", + "lz4", + "openssl1", + "xxhash", +] diff --git a/recipes/net/rsync/redox.patch b/recipes/net/rsync/redox.patch new file mode 100644 index 00000000..07a929b0 --- /dev/null +++ b/recipes/net/rsync/redox.patch @@ -0,0 +1,25 @@ +diff -ruwN source/rsync.h source-new/rsync.h +--- source/rsync.h 2025-01-16 02:21:54.000000000 +0700 ++++ source-new/rsync.h 2025-09-08 12:18:06.427647717 +0700 +@@ -483,6 +483,21 @@ + #include + #endif + ++#ifdef __redox__ ++ ++// no sys/sysmacros.h, probably no problem ++#include ++#define major(dev) (0) ++#define minor(dev) (0) ++#define makedev(maj, min) (0) ++ ++// no openat yet ++#undef O_NOFOLLOW ++#undef O_DIRECTORY ++#undef AT_FDCWD ++ ++#endif ++ + #ifdef MAKEDEV_TAKES_3_ARGS + #define MAKEDEV(devmajor,devminor) makedev(0,devmajor,devminor) + #else diff --git a/recipes/wip/libs/other/xxhash/recipe.toml b/recipes/wip/libs/other/xxhash/recipe.toml index 20f05653..902e1347 100644 --- a/recipes/wip/libs/other/xxhash/recipe.toml +++ b/recipes/wip/libs/other/xxhash/recipe.toml @@ -1,6 +1,11 @@ -#TODO missing script for building, lacking build instructions +#TODO promote [source] git = "https://github.com/Cyan4973/xxHash" -rev = "bbb27a5efb85b92a0486cf361a8635715a53f6ba" +rev = "bab7e27f4c6ae4efbb83dd99ae8a554423571635" # 0.8.3-dev (cmake support) [build] template = "custom" +script = """ +DYNAMIC_INIT +COOKBOOK_SOURCE="${COOKBOOK_SOURCE}"/build/cmake +cookbook_cmake +""" diff --git a/recipes/wip/net/other/rsync/recipe.toml b/recipes/wip/net/other/rsync/recipe.toml deleted file mode 100644 index e5dcf210..00000000 --- a/recipes/wip/net/other/rsync/recipe.toml +++ /dev/null @@ -1,12 +0,0 @@ -#TODO make all dependencies work -[source] -tar = "https://download.samba.org/pub/rsync/src/rsync-3.2.7.tar.gz" -[build] -template = "configure" -dependencies = [ - "zstd", - "zlib", - "lz4", - "popt", - "xxhash", -] From e56a6212c40ae0569c0ded70db2b514116dbc411 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Mon, 8 Sep 2025 13:43:20 +0700 Subject: [PATCH 2800/3180] Update cargo lock --- Cargo.lock | 62 +++++++++++++++++++++++++++--------------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ce231b23..e1ca99bf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1538,6 +1538,8 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "pkgar" version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db98a45d3bdaf7dceeee5716f3eec9af0e67deec64eec9e717536b89de323c22" dependencies = [ "anyhow", "blake3 0.3.8", @@ -1550,29 +1552,17 @@ dependencies = [ [[package]] name = "pkgar" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db98a45d3bdaf7dceeee5716f3eec9af0e67deec64eec9e717536b89de323c22" +version = "0.1.19" dependencies = [ "anyhow", "blake3 0.3.8", "bytemuck", "clap", - "pkgar-core 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", - "pkgar-keys 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar-core 0.1.19", + "pkgar-keys 0.1.19", "thiserror 2.0.12", ] -[[package]] -name = "pkgar-core" -version = "0.1.18" -dependencies = [ - "bitflags 1.3.2", - "blake3 0.3.8", - "bytemuck", - "dryoc", -] - [[package]] name = "pkgar-core" version = "0.1.18" @@ -1585,9 +1575,21 @@ dependencies = [ "dryoc", ] +[[package]] +name = "pkgar-core" +version = "0.1.19" +dependencies = [ + "bitflags 1.3.2", + "blake3 0.3.8", + "bytemuck", + "dryoc", +] + [[package]] name = "pkgar-keys" version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4494325c5c408d718d1df657cceeadc2102f02e7c9298343ce230f557f13e80c" dependencies = [ "anyhow", "clap", @@ -1604,16 +1606,14 @@ dependencies = [ [[package]] name = "pkgar-keys" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4494325c5c408d718d1df657cceeadc2102f02e7c9298343ce230f557f13e80c" +version = "0.1.19" dependencies = [ "anyhow", "clap", "dirs 3.0.2", "hex", "lazy_static", - "pkgar-core 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar-core 0.1.19", "seckey", "serde", "termion", @@ -1838,9 +1838,9 @@ checksum = "70f49b2c29ae3c72ff3a8dbc1c5eefba9093a8c5ceaa8ca5292833816fe931e2" dependencies = [ "anyhow", "indicatif", - "pkgar 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", - "pkgar-core 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", - "pkgar-keys 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar 0.1.18", + "pkgar-core 0.1.18", + "pkgar-keys 0.1.18", "reqwest", "serde", "serde_derive", @@ -1855,9 +1855,9 @@ source = "git+https://gitlab.redox-os.org/redox-os/pkgutils#436c97a0df26bfce24e3 dependencies = [ "anyhow", "ignore", - "pkgar 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", - "pkgar-core 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", - "pkgar-keys 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar 0.1.18", + "pkgar-core 0.1.18", + "pkgar-keys 0.1.18", "reqwest", "serde", "serde_derive", @@ -1883,9 +1883,9 @@ dependencies = [ "ignore", "object", "pbr", - "pkgar 0.1.18", - "pkgar-core 0.1.18", - "pkgar-keys 0.1.18", + "pkgar 0.1.19", + "pkgar-core 0.1.19", + "pkgar-keys 0.1.19", "redox-pkg 0.2.7", "redoxer", "serde", @@ -1908,9 +1908,9 @@ dependencies = [ "fscommon", "gpt", "libc", - "pkgar 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", - "pkgar-core 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", - "pkgar-keys 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar 0.1.18", + "pkgar-core 0.1.18", + "pkgar-keys 0.1.18", "rand 0.8.5", "redox-pkg 0.2.5", "redox_liner", From b8f49078b933add01c45a2869ecd2248a8bc286c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 8 Sep 2025 08:02:53 -0600 Subject: [PATCH 2801/3180] Use GNU_TARGET prefix for cmake cross compiler --- src/bin/cook.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index b6f4ed5c..a5d60997 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -945,22 +945,22 @@ COOKBOOK_CMAKE_FLAGS=( ) function cookbook_cmake { cat > cross_file.cmake <> cross_file.cmake echo "set(CMAKE_CXX_COMPILER_LAUNCHER ${CC_WRAPPER})" >> cross_file.cmake From a53533d55fe049248c209804cf006b0966864aae Mon Sep 17 00:00:00 2001 From: Wildan M Date: Mon, 8 Sep 2025 22:24:10 +0700 Subject: [PATCH 2802/3180] Update cargo --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e1ca99bf..1b8f1fd3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1850,8 +1850,8 @@ dependencies = [ [[package]] name = "redox-pkg" -version = "0.2.7" -source = "git+https://gitlab.redox-os.org/redox-os/pkgutils#436c97a0df26bfce24e33a5a86a21218aca7591f" +version = "0.2.8" +source = "git+https://gitlab.redox-os.org/redox-os/pkgutils#ea2641126c8b38d7b8997c5c7ebec74999fc9578" dependencies = [ "anyhow", "ignore", @@ -1886,7 +1886,7 @@ dependencies = [ "pkgar 0.1.19", "pkgar-core 0.1.19", "pkgar-keys 0.1.19", - "redox-pkg 0.2.7", + "redox-pkg 0.2.8", "redoxer", "serde", "tempfile", @@ -2923,7 +2923,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.48.0", ] [[package]] From 92ca796080f3ae0bf8a44641ee35714260325b4b Mon Sep 17 00:00:00 2001 From: Andrzej J Skalski Date: Mon, 8 Sep 2025 19:24:39 +0200 Subject: [PATCH 2803/3180] libxcursor + .so --- recipes/wip/libs/other/libxcursor/recipe.toml | 84 ++++++++++++++++++- 1 file changed, 83 insertions(+), 1 deletion(-) diff --git a/recipes/wip/libs/other/libxcursor/recipe.toml b/recipes/wip/libs/other/libxcursor/recipe.toml index 882f1fad..b0e44dff 100644 --- a/recipes/wip/libs/other/libxcursor/recipe.toml +++ b/recipes/wip/libs/other/libxcursor/recipe.toml @@ -1,10 +1,92 @@ #TODO make dependencies work [source] tar = "https://www.x.org/releases/individual/lib/libXcursor-1.2.1.tar.xz" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + [build] -template = "configure" dependencies = [ "libx11", + "libxcb", "libxfixes", "libxrender", + "x11proto", + "x11proto-kb", + "libxrender", + "xcb-proto", + "libxau", + "libpthread-stubs", ] +template = "custom" +script = """ +DYNAMIC_INIT + +# Force libtool to build shared libraries for Redox +# Override libtool's platform detection +export lt_cv_deplibs_check_method=pass_all +export ac_cv_lib_dl_dlopen=yes +export enable_shared=yes +export enable_static=yes + +#Configure with shared library support +"${COOKBOOK_CONFIGURE}" \ + --host="${GNU_TARGET}" \ + --prefix="/usr" \ + --enable-shared \ + --enable-static \ + --with-pic \ + ac_cv_search_sendmsg=no \ + lt_cv_prog_compiler_pic="-fPIC" \ + lt_cv_prog_compiler_pic_works=yes + +# Build +"${COOKBOOK_MAKE}" + +#After make, manually create the shared library if libtool didn't +if [ ! -f src/.libs/libXcursor.so ]; then + echo "Creating shared library manually..." + cd src/.libs + # Extract all object files from the static library + ${GNU_TARGET}-ar x libXcursor.a + # Create the shared library from the object files + ${GNU_TARGET}-gcc -shared -fPIC -o libXcursor.so.1.0.2 *.o \ + -L${COOKBOOK_SYSROOT}/lib -L${COOKBOOK_SYSROOT}/usr/lib \ + -lXfixes -lXrender -lX11 -lxcb -lXau + # Create symlinks + ln -sf libXcursor.so.1.0.2 libXcursor.so.1 + ln -sf libXcursor.so.1 libXcursor.so + cd ../.. +fi + +"${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" + +# Also copy the shared libraries if they exist +if [ -f src/.libs/libXcursor.so.1.0.2 ]; then + mkdir -p "${COOKBOOK_STAGE}/usr/lib" + cp -P src/.libs/libXcursor.so* "${COOKBOOK_STAGE}/usr/lib/" +fi +""" + + +# script = """ + +# # this /usr/share/pkgconfig comes from x11proto, that stages pc files in wrong dir. +# export PKG_CONFIG_PATH="${COOKBOOK_SYSROOT}/lib/pkgconfig" +# #:${COOKBOOK_SYSROOT}/usr/lib/pkgconfig:${COOKBOOK_SYSROOT}/usr/share/pkgconfig" +# export PKG_CONFIG_LIBDIR="${COOKBOOK_SYSROOT}/lib/pkgconfig" +# #:${COOKBOOK_SYSROOT}/usr/lib/pkgconfig" +# export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" + +# rsync -a "${COOKBOOK_SOURCE}/" ./ + +# # I'm tired trying figure out why multiple pkgconfig paths are ignored by cargo building stuff +# # rsync -a -v ${COOKBOOK_SYSROOT}/usr/share/pkgconfig/*.pc ${COOKBOOK_SYSROOT}/lib/pkgconfig/ +# rsync -a -v ${COOKBOOK_SYSROOT}/usr/lib/pkgconfig/*.pc ${COOKBOOK_SYSROOT}/lib/pkgconfig/ + +# echo "listing ${COOKBOOK_SYSROOT}/lib/pkgconfig" +# ls -al ${COOKBOOK_SYSROOT}/lib/pkgconfig + +# cookbook_configure +# """ From 1806fa3556ae60eabdfbada22f5dd58580a75cfe Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 8 Sep 2025 15:01:42 -0600 Subject: [PATCH 2804/3180] glib: workaround partial support of openat --- recipes/libs/glib/redox.patch | 57 ++++++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 5 deletions(-) diff --git a/recipes/libs/glib/redox.patch b/recipes/libs/glib/redox.patch index 90b4cdf7..18024068 100644 --- a/recipes/libs/glib/redox.patch +++ b/recipes/libs/glib/redox.patch @@ -1,6 +1,20 @@ +diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/glocalfile.c source/gio/glocalfile.c +--- glib-2.82.5/gio/glocalfile.c 2025-02-20 06:08:16.000000000 -0700 ++++ source/gio/glocalfile.c 2025-09-08 15:00:09.240010601 -0600 +@@ -77,6 +77,10 @@ + + #include "glib-private.h" + ++#if defined(__redox__) ++#undef AT_FDCWD ++#endif ++ + #ifdef G_OS_WIN32 + #include + #include diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/gnetworking.h.in source/gio/gnetworking.h.in --- glib-2.82.5/gio/gnetworking.h.in 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/gnetworking.h.in 2025-04-10 14:12:46.307891418 -0600 ++++ source/gio/gnetworking.h.in 2025-04-21 14:36:14.671018625 -0600 @@ -40,13 +40,17 @@ #include #include @@ -19,9 +33,42 @@ diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/gnetworking.h.in source/gio/g @NAMESER_COMPAT_INCLUDE@ #ifndef __GI_SCANNER__ +diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/gsocket.c source/gio/gsocket.c +--- glib-2.82.5/gio/gsocket.c 2025-02-20 06:08:16.000000000 -0700 ++++ source/gio/gsocket.c 2025-06-16 09:52:49.595949295 -0600 +@@ -487,6 +487,7 @@ + if (!g_socket_get_option (socket, SOL_SOCKET, SO_TYPE, &value, NULL)) + { + errsv = get_socket_errno (); ++ fprintf(stderr, "%s:%d\n", __FILE__, __LINE__); + goto err; + } + +@@ -513,6 +514,7 @@ + if (getsockname (fd, &address.sa, &addrlen) != 0) + { + errsv = get_socket_errno (); ++ fprintf(stderr, "%s:%d\n", __FILE__, __LINE__); + goto err; + } + +@@ -531,11 +533,13 @@ + if (!g_socket_get_option (socket, SOL_SOCKET, SO_DOMAIN, &family, NULL)) + { + errsv = get_socket_errno (); ++ fprintf(stderr, "%s:%d\n", __FILE__, __LINE__); + goto err; + } + #else + /* This will translate to G_IO_ERROR_FAILED on either unix or windows */ + errsv = -1; ++ fprintf(stderr, "%s:%d\n", __FILE__, __LINE__); + goto err; + #endif + } diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/gthreadedresolver.c source/gio/gthreadedresolver.c --- glib-2.82.5/gio/gthreadedresolver.c 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/gthreadedresolver.c 2025-04-10 15:19:32.649611384 -0600 ++++ source/gio/gthreadedresolver.c 2025-04-21 14:36:14.672018626 -0600 @@ -579,8 +579,26 @@ return g_task_propagate_pointer (G_TASK (result), error); } @@ -64,7 +111,7 @@ diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/gthreadedresolver.c source/gi len = res_query (rrname, C_IN, rrtype, answer->data, answer->len); diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/gunixmounts.c source/gio/gunixmounts.c --- glib-2.82.5/gio/gunixmounts.c 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/gunixmounts.c 2025-04-10 14:57:29.342807607 -0600 ++++ source/gio/gunixmounts.c 2025-04-21 14:36:14.672018626 -0600 @@ -1135,6 +1135,37 @@ return NULL; } @@ -134,7 +181,7 @@ diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/gunixmounts.c source/gio/guni } diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/meson.build source/gio/meson.build --- glib-2.82.5/gio/meson.build 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/meson.build 2025-04-10 14:06:57.909467382 -0600 ++++ source/gio/meson.build 2025-04-21 14:36:14.672018626 -0600 @@ -18,7 +18,7 @@ gnetworking_h_nameser_compat_include = '' @@ -155,7 +202,7 @@ diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/meson.build source/gio/meson. int main (int argc, char ** argv) { diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/xdgmime/xdgmimecache.c source/gio/xdgmime/xdgmimecache.c --- glib-2.82.5/gio/xdgmime/xdgmimecache.c 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/xdgmime/xdgmimecache.c 2025-04-10 14:11:44.020815595 -0600 ++++ source/gio/xdgmime/xdgmimecache.c 2025-04-21 14:36:14.673018628 -0600 @@ -22,7 +22,7 @@ #include #include From 9f4b064e76bc0e8ce9ec009b2c35344b7f008ec7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 8 Sep 2025 21:01:20 -0600 Subject: [PATCH 2805/3180] openal: fix dynamic linking and use cookbook_cmake --- recipes/wip/libs/audio/openal/recipe.toml | 47 ++++++----------------- 1 file changed, 11 insertions(+), 36 deletions(-) diff --git a/recipes/wip/libs/audio/openal/recipe.toml b/recipes/wip/libs/audio/openal/recipe.toml index a4c8d94b..0f1d8352 100644 --- a/recipes/wip/libs/audio/openal/recipe.toml +++ b/recipes/wip/libs/audio/openal/recipe.toml @@ -1,4 +1,3 @@ -#TODO probably wrong script, see https://openal-soft.org/#installing [source] tar = "https://openal-soft.org/openal-releases/openal-soft-1.24.1.tar.bz2" blake3 = "8aeaa8307d3e14331ad20761c537ffebe70975cb7c3343e8d5c0c0ed7bc16eab" @@ -17,46 +16,22 @@ dependencies = [ "zlib", ] script = """ -export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" -export CXXFLAGS="${CXXFLAGS} -I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" - -cat > redox.cmake < Date: Mon, 8 Sep 2025 21:07:26 -0600 Subject: [PATCH 2806/3180] libogg: update and drop patch --- recipes/libs/libogg/recipe.toml | 8 +- recipes/libs/libogg/redox.patch | 2833 ------------------------------- 2 files changed, 2 insertions(+), 2839 deletions(-) delete mode 100644 recipes/libs/libogg/redox.patch diff --git a/recipes/libs/libogg/recipe.toml b/recipes/libs/libogg/recipe.toml index 4d35c4c0..9e219c87 100644 --- a/recipes/libs/libogg/recipe.toml +++ b/recipes/libs/libogg/recipe.toml @@ -1,12 +1,8 @@ [source] -tar = "https://github.com/xiph/ogg/releases/download/v1.3.3/libogg-1.3.3.tar.xz" -blake3 = "8220c0e4082fa26c07b10bfe31f641d2e33ebe1d1bb0b20221b7016bc8b78a3a" -patches = [ - "redox.patch" -] +tar = "https://github.com/xiph/ogg/releases/download/v1.3.4/libogg-1.3.4.tar.xz" +blake3 = "1cffbe7c498555ddfdb1390d7a38179c4bead6129ea37b1b1d54f3a76b816304" script = """ DYNAMIC_INIT -GNU_CONFIG_GET config.sub autotools_recursive_regenerate """ diff --git a/recipes/libs/libogg/redox.patch b/recipes/libs/libogg/redox.patch deleted file mode 100644 index c07ab514..00000000 --- a/recipes/libs/libogg/redox.patch +++ /dev/null @@ -1,2833 +0,0 @@ ---- source/config.sub 2017-11-07 13:38:55.000000000 -0700 -+++ source-new/config.sub 2020-05-20 15:34:35.000000000 -0600 -@@ -1,8 +1,8 @@ - #! /bin/sh - # Configuration validation subroutine script. --# Copyright 1992-2016 Free Software Foundation, Inc. -+# Copyright 1992-2020 Free Software Foundation, Inc. - --timestamp='2016-09-05' -+timestamp='2020-05-04' - - # This file is free software; you can redistribute it and/or modify it - # under the terms of the GNU General Public License as published by -@@ -15,7 +15,7 @@ - # General Public License for more details. - # - # You should have received a copy of the GNU General Public License --# along with this program; if not, see . -+# along with this program; if not, see . - # - # As a special exception to the GNU General Public License, if you - # distribute this file as part of a program that contains a -@@ -33,7 +33,7 @@ - # Otherwise, we print the canonical config type on stdout and succeed. - - # You can get the latest version of this script from: --# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub -+# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub - - # This file is supposed to be the same for all GNU packages - # and recognize all the CPU types, system types and aliases -@@ -57,7 +57,7 @@ - - Canonicalize a configuration name. - --Operation modes: -+Options: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit -@@ -67,7 +67,7 @@ - version="\ - GNU config.sub ($timestamp) - --Copyright 1992-2016 Free Software Foundation, Inc. -+Copyright 1992-2020 Free Software Foundation, Inc. - - This is free software; see the source for copying conditions. There is NO - warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." -@@ -89,12 +89,12 @@ - - ) # Use stdin as input. - break ;; - -* ) -- echo "$me: invalid option $1$help" -+ echo "$me: invalid option $1$help" >&2 - exit 1 ;; - - *local*) - # First pass through any local machine types. -- echo $1 -+ echo "$1" - exit ;; - - * ) -@@ -110,1242 +110,1164 @@ - exit 1;; - esac - --# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). --# Here we must recognize all the valid KERNEL-OS combinations. --maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -+# Split fields of configuration type -+# shellcheck disable=SC2162 -+IFS="-" read field1 field2 field3 field4 <&2 -+ exit 1 -+ ;; -+ *-*-*-*) -+ basic_machine=$field1-$field2 -+ os=$field3-$field4 -+ ;; -+ *-*-*) -+ # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two -+ # parts -+ maybe_os=$field2-$field3 - case $maybe_os in -- nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ -- linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ -- knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ -- kopensolaris*-gnu* | cloudabi*-eabi* | \ -- storm-chaos* | os2-emx* | rtmk-nova*) -- os=-$maybe_os -- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` -+ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \ -+ | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \ -+ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ -+ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ -+ | storm-chaos* | os2-emx* | rtmk-nova*) -+ basic_machine=$field1 -+ os=$maybe_os - ;; - android-linux) -- os=-linux-android -- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown -+ basic_machine=$field1-unknown -+ os=linux-android - ;; - *) -- basic_machine=`echo $1 | sed 's/-[^-]*$//'` -- if [ $basic_machine != $1 ] -- then os=`echo $1 | sed 's/.*-/-/'` -- else os=; fi -+ basic_machine=$field1-$field2 -+ os=$field3 - ;; - esac -- --### Let's recognize common machines as not being operating systems so --### that things like config.sub decstation-3100 work. We also --### recognize some manufacturers as not being operating systems, so we --### can provide default operating systems below. --case $os in -- -sun*os*) -- # Prevent following clause from handling this invalid input. - ;; -- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -- -apple | -axis | -knuth | -cray | -microblaze*) -+ *-*) -+ # A lone config we happen to match not fitting any pattern -+ case $field1-$field2 in -+ decstation-3100) -+ basic_machine=mips-dec - os= -- basic_machine=$1 -- ;; -- -bluegene*) -- os=-cnk - ;; -- -sim | -cisco | -oki | -wec | -winbond) -+ *-*) -+ # Second component is usually, but not always the OS -+ case $field2 in -+ # Prevent following clause from handling this valid os -+ sun*os*) -+ basic_machine=$field1 -+ os=$field2 -+ ;; -+ # Manufacturers -+ dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ -+ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ -+ | unicom* | ibm* | next | hp | isi* | apollo | altos* \ -+ | convergent* | ncr* | news | 32* | 3600* | 3100* \ -+ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ -+ | ultra | tti* | harris | dolphin | highlevel | gould \ -+ | cbm | ns | masscomp | apple | axis | knuth | cray \ -+ | microblaze* | sim | cisco \ -+ | oki | wec | wrs | winbond) -+ basic_machine=$field1-$field2 - os= -- basic_machine=$1 -- ;; -- -scout) -- ;; -- -wrs) -- os=-vxworks -- basic_machine=$1 -- ;; -- -chorusos*) -- os=-chorusos -- basic_machine=$1 - ;; -- -chorusrdb) -- os=-chorusrdb -- basic_machine=$1 -- ;; -- -hiux*) -- os=-hiuxwe2 -- ;; -- -sco6) -- os=-sco5v6 -- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -- ;; -- -sco5) -- os=-sco3.2v5 -- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -- ;; -- -sco4) -- os=-sco3.2v4 -- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -- ;; -- -sco3.2.[4-9]*) -- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` -- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -- ;; -- -sco3.2v[4-9]*) -- # Don't forget version if it is 3.2v4 or newer. -- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -- ;; -- -sco5v6*) -- # Don't forget version if it is 3.2v4 or newer. -- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -- ;; -- -sco*) -- os=-sco3.2v2 -- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -- ;; -- -udk*) -- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -- ;; -- -isc) -- os=-isc2.2 -- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -- ;; -- -clix*) -- basic_machine=clipper-intergraph -- ;; -- -isc*) -- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -- ;; -- -lynx*178) -- os=-lynxos178 -- ;; -- -lynx*5) -- os=-lynxos5 -- ;; -- -lynx*) -- os=-lynxos -- ;; -- -ptx*) -- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` -- ;; -- -windowsnt*) -- os=`echo $os | sed -e 's/windowsnt/winnt/'` -- ;; -- -psos*) -- os=-psos -- ;; -- -mint | -mint[0-9]*) -- basic_machine=m68k-atari -- os=-mint -+ *) -+ basic_machine=$field1 -+ os=$field2 - ;; - esac -- --# Decode aliases for certain CPU-COMPANY combinations. --case $basic_machine in -- # Recognize the basic CPU types without company name. -- # Some are omitted here because they have special meanings below. -- 1750a | 580 \ -- | a29k \ -- | aarch64 | aarch64_be \ -- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ -- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ -- | am33_2.0 \ -- | arc | arceb \ -- | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ -- | avr | avr32 \ -- | ba \ -- | be32 | be64 \ -- | bfin \ -- | c4x | c8051 | clipper \ -- | d10v | d30v | dlx | dsp16xx \ -- | e2k | epiphany \ -- | fido | fr30 | frv | ft32 \ -- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ -- | hexagon \ -- | i370 | i860 | i960 | ia64 \ -- | ip2k | iq2000 \ -- | k1om \ -- | le32 | le64 \ -- | lm32 \ -- | m32c | m32r | m32rle | m68000 | m68k | m88k \ -- | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ -- | mips | mipsbe | mipseb | mipsel | mipsle \ -- | mips16 \ -- | mips64 | mips64el \ -- | mips64octeon | mips64octeonel \ -- | mips64orion | mips64orionel \ -- | mips64r5900 | mips64r5900el \ -- | mips64vr | mips64vrel \ -- | mips64vr4100 | mips64vr4100el \ -- | mips64vr4300 | mips64vr4300el \ -- | mips64vr5000 | mips64vr5000el \ -- | mips64vr5900 | mips64vr5900el \ -- | mipsisa32 | mipsisa32el \ -- | mipsisa32r2 | mipsisa32r2el \ -- | mipsisa32r6 | mipsisa32r6el \ -- | mipsisa64 | mipsisa64el \ -- | mipsisa64r2 | mipsisa64r2el \ -- | mipsisa64r6 | mipsisa64r6el \ -- | mipsisa64sb1 | mipsisa64sb1el \ -- | mipsisa64sr71k | mipsisa64sr71kel \ -- | mipsr5900 | mipsr5900el \ -- | mipstx39 | mipstx39el \ -- | mn10200 | mn10300 \ -- | moxie \ -- | mt \ -- | msp430 \ -- | nds32 | nds32le | nds32be \ -- | nios | nios2 | nios2eb | nios2el \ -- | ns16k | ns32k \ -- | open8 | or1k | or1knd | or32 \ -- | pdp10 | pdp11 | pj | pjl \ -- | powerpc | powerpc64 | powerpc64le | powerpcle \ -- | pyramid \ -- | riscv32 | riscv64 \ -- | rl78 | rx \ -- | score \ -- | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ -- | sh64 | sh64le \ -- | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ -- | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ -- | spu \ -- | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ -- | ubicom32 \ -- | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ -- | visium \ -- | we32k \ -- | x86 | xc16x | xstormy16 | xtensa \ -- | z8k | z80) -- basic_machine=$basic_machine-unknown -- ;; -- c54x) -- basic_machine=tic54x-unknown -- ;; -- c55x) -- basic_machine=tic55x-unknown -- ;; -- c6x) -- basic_machine=tic6x-unknown -- ;; -- leon|leon[3-9]) -- basic_machine=sparc-$basic_machine -- ;; -- m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) -- basic_machine=$basic_machine-unknown -- os=-none -- ;; -- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; -- ms1) -- basic_machine=mt-unknown -- ;; -- -- strongarm | thumb | xscale) -- basic_machine=arm-unknown -- ;; -- xgate) -- basic_machine=$basic_machine-unknown -- os=-none -- ;; -- xscaleeb) -- basic_machine=armeb-unknown -- ;; -- -- xscaleel) -- basic_machine=armel-unknown -- ;; -- -- # We use `pc' rather than `unknown' -- # because (1) that's what they normally are, and -- # (2) the word "unknown" tends to confuse beginning users. -- i*86 | x86_64) -- basic_machine=$basic_machine-pc -- ;; -- # Object if more than one company name word. -- *-*-*) -- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 -- exit 1 -- ;; -- # Recognize the basic CPU types with company name. -- 580-* \ -- | a29k-* \ -- | aarch64-* | aarch64_be-* \ -- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ -- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ -- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ -- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ -- | avr-* | avr32-* \ -- | ba-* \ -- | be32-* | be64-* \ -- | bfin-* | bs2000-* \ -- | c[123]* | c30-* | [cjt]90-* | c4x-* \ -- | c8051-* | clipper-* | craynv-* | cydra-* \ -- | d10v-* | d30v-* | dlx-* \ -- | e2k-* | elxsi-* \ -- | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ -- | h8300-* | h8500-* \ -- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ -- | hexagon-* \ -- | i*86-* | i860-* | i960-* | ia64-* \ -- | ip2k-* | iq2000-* \ -- | k1om-* \ -- | le32-* | le64-* \ -- | lm32-* \ -- | m32c-* | m32r-* | m32rle-* \ -- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ -- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ -- | microblaze-* | microblazeel-* \ -- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ -- | mips16-* \ -- | mips64-* | mips64el-* \ -- | mips64octeon-* | mips64octeonel-* \ -- | mips64orion-* | mips64orionel-* \ -- | mips64r5900-* | mips64r5900el-* \ -- | mips64vr-* | mips64vrel-* \ -- | mips64vr4100-* | mips64vr4100el-* \ -- | mips64vr4300-* | mips64vr4300el-* \ -- | mips64vr5000-* | mips64vr5000el-* \ -- | mips64vr5900-* | mips64vr5900el-* \ -- | mipsisa32-* | mipsisa32el-* \ -- | mipsisa32r2-* | mipsisa32r2el-* \ -- | mipsisa32r6-* | mipsisa32r6el-* \ -- | mipsisa64-* | mipsisa64el-* \ -- | mipsisa64r2-* | mipsisa64r2el-* \ -- | mipsisa64r6-* | mipsisa64r6el-* \ -- | mipsisa64sb1-* | mipsisa64sb1el-* \ -- | mipsisa64sr71k-* | mipsisa64sr71kel-* \ -- | mipsr5900-* | mipsr5900el-* \ -- | mipstx39-* | mipstx39el-* \ -- | mmix-* \ -- | mt-* \ -- | msp430-* \ -- | nds32-* | nds32le-* | nds32be-* \ -- | nios-* | nios2-* | nios2eb-* | nios2el-* \ -- | none-* | np1-* | ns16k-* | ns32k-* \ -- | open8-* \ -- | or1k*-* \ -- | orion-* \ -- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ -- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ -- | pyramid-* \ -- | riscv32-* | riscv64-* \ -- | rl78-* | romp-* | rs6000-* | rx-* \ -- | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ -- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ -- | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ -- | sparclite-* \ -- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ -- | tahoe-* \ -- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ -- | tile*-* \ -- | tron-* \ -- | ubicom32-* \ -- | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ -- | vax-* \ -- | visium-* \ -- | we32k-* \ -- | x86-* | x86_64-* | xc16x-* | xps100-* \ -- | xstormy16-* | xtensa*-* \ -- | ymp-* \ -- | z8k-* | z80-*) -- ;; -- # Recognize the basic CPU types without company name, with glob match. -- xtensa*) -- basic_machine=$basic_machine-unknown -+ esac - ;; -- # Recognize the various machine names and aliases which stand -- # for a CPU type and a company and sometimes even an OS. -+ *) -+ # Convert single-component short-hands not valid as part of -+ # multi-component configurations. -+ case $field1 in - 386bsd) -- basic_machine=i386-unknown -- os=-bsd -- ;; -- 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) -- basic_machine=m68000-att -- ;; -- 3b*) -- basic_machine=we32k-att -+ basic_machine=i386-pc -+ os=bsd - ;; - a29khif) - basic_machine=a29k-amd -- os=-udi -- ;; -- abacus) -- basic_machine=abacus-unknown -+ os=udi - ;; - adobe68k) - basic_machine=m68010-adobe -- os=-scout -+ os=scout - ;; -- alliant | fx80) -+ alliant) - basic_machine=fx80-alliant -+ os= - ;; - altos | altos3068) - basic_machine=m68k-altos -+ os= - ;; - am29k) - basic_machine=a29k-none -- os=-bsd -- ;; -- amd64) -- basic_machine=x86_64-pc -- ;; -- amd64-*) -- basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` -+ os=bsd - ;; - amdahl) - basic_machine=580-amdahl -- os=-sysv -+ os=sysv - ;; -- amiga | amiga-*) -+ amiga) - basic_machine=m68k-unknown -+ os= - ;; - amigaos | amigados) - basic_machine=m68k-unknown -- os=-amigaos -+ os=amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown -- os=-sysv4 -+ os=sysv4 - ;; - apollo68) - basic_machine=m68k-apollo -- os=-sysv -+ os=sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo -- os=-bsd -+ os=bsd - ;; - aros) - basic_machine=i386-pc -- os=-aros -- ;; -- asmjs) -- basic_machine=asmjs-unknown -+ os=aros - ;; - aux) - basic_machine=m68k-apple -- os=-aux -+ os=aux - ;; - balance) - basic_machine=ns32k-sequent -- os=-dynix -+ os=dynix - ;; - blackfin) - basic_machine=bfin-unknown -- os=-linux -- ;; -- blackfin-*) -- basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` -- os=-linux -- ;; -- bluegene*) -- basic_machine=powerpc-ibm -- os=-cnk -- ;; -- c54x-*) -- basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` -- ;; -- c55x-*) -- basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` -- ;; -- c6x-*) -- basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` -- ;; -- c90) -- basic_machine=c90-cray -- os=-unicos -+ os=linux - ;; - cegcc) - basic_machine=arm-unknown -- os=-cegcc -+ os=cegcc - ;; - convex-c1) - basic_machine=c1-convex -- os=-bsd -+ os=bsd - ;; - convex-c2) - basic_machine=c2-convex -- os=-bsd -+ os=bsd - ;; - convex-c32) - basic_machine=c32-convex -- os=-bsd -+ os=bsd - ;; - convex-c34) - basic_machine=c34-convex -- os=-bsd -+ os=bsd - ;; - convex-c38) - basic_machine=c38-convex -- os=-bsd -+ os=bsd - ;; -- cray | j90) -+ cray) - basic_machine=j90-cray -- os=-unicos -- ;; -- craynv) -- basic_machine=craynv-cray -- os=-unicosmp -- ;; -- cr16 | cr16-*) -- basic_machine=cr16-unknown -- os=-elf -+ os=unicos - ;; - crds | unos) - basic_machine=m68k-crds -+ os= - ;; -- crisv32 | crisv32-* | etraxfs*) -- basic_machine=crisv32-axis -- ;; -- cris | cris-* | etrax*) -- basic_machine=cris-axis -- ;; -- crx) -- basic_machine=crx-unknown -- os=-elf -- ;; -- da30 | da30-*) -+ da30) - basic_machine=m68k-da30 -+ os= - ;; -- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) -+ decstation | pmax | pmin | dec3100 | decstatn) - basic_machine=mips-dec -- ;; -- decsystem10* | dec10*) -- basic_machine=pdp10-dec -- os=-tops10 -- ;; -- decsystem20* | dec20*) -- basic_machine=pdp10-dec -- os=-tops20 -- ;; -- delta | 3300 | motorola-3300 | motorola-delta \ -- | 3300-motorola | delta-motorola) -- basic_machine=m68k-motorola -+ os= - ;; - delta88) - basic_machine=m88k-motorola -- os=-sysv3 -+ os=sysv3 - ;; - dicos) - basic_machine=i686-pc -- os=-dicos -+ os=dicos - ;; - djgpp) - basic_machine=i586-pc -- os=-msdosdjgpp -- ;; -- dpx20 | dpx20-*) -- basic_machine=rs6000-bull -- os=-bosx -- ;; -- dpx2* | dpx2*-bull) -- basic_machine=m68k-bull -- os=-sysv3 -- ;; -- e500v[12]) -- basic_machine=powerpc-unknown -- os=$os"spe" -- ;; -- e500v[12]-*) -- basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` -- os=$os"spe" -+ os=msdosdjgpp - ;; - ebmon29k) - basic_machine=a29k-amd -- os=-ebmon -- ;; -- elxsi) -- basic_machine=elxsi-elxsi -- os=-bsd -- ;; -- encore | umax | mmax) -- basic_machine=ns32k-encore -+ os=ebmon - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson -- os=-ose -- ;; -- fx2800) -- basic_machine=i860-alliant -- ;; -- genix) -- basic_machine=ns32k-ns -+ os=ose - ;; - gmicro) - basic_machine=tron-gmicro -- os=-sysv -+ os=sysv - ;; - go32) - basic_machine=i386-pc -- os=-go32 -- ;; -- h3050r* | hiux*) -- basic_machine=hppa1.1-hitachi -- os=-hiuxwe2 -+ os=go32 - ;; - h8300hms) - basic_machine=h8300-hitachi -- os=-hms -+ os=hms - ;; - h8300xray) - basic_machine=h8300-hitachi -- os=-xray -+ os=xray - ;; - h8500hms) - basic_machine=h8500-hitachi -- os=-hms -+ os=hms - ;; - harris) - basic_machine=m88k-harris -- os=-sysv3 -+ os=sysv3 - ;; -- hp300-*) -+ hp300 | hp300hpux) - basic_machine=m68k-hp -+ os=hpux - ;; - hp300bsd) - basic_machine=m68k-hp -- os=-bsd -- ;; -- hp300hpux) -- basic_machine=m68k-hp -- os=-hpux -- ;; -- hp3k9[0-9][0-9] | hp9[0-9][0-9]) -- basic_machine=hppa1.0-hp -- ;; -- hp9k2[0-9][0-9] | hp9k31[0-9]) -- basic_machine=m68000-hp -- ;; -- hp9k3[2-9][0-9]) -- basic_machine=m68k-hp -- ;; -- hp9k6[0-9][0-9] | hp6[0-9][0-9]) -- basic_machine=hppa1.0-hp -- ;; -- hp9k7[0-79][0-9] | hp7[0-79][0-9]) -- basic_machine=hppa1.1-hp -- ;; -- hp9k78[0-9] | hp78[0-9]) -- # FIXME: really hppa2.0-hp -- basic_machine=hppa1.1-hp -- ;; -- hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) -- # FIXME: really hppa2.0-hp -- basic_machine=hppa1.1-hp -- ;; -- hp9k8[0-9][13679] | hp8[0-9][13679]) -- basic_machine=hppa1.1-hp -- ;; -- hp9k8[0-9][0-9] | hp8[0-9][0-9]) -- basic_machine=hppa1.0-hp -- ;; -- hppa-next) -- os=-nextstep3 -+ os=bsd - ;; - hppaosf) - basic_machine=hppa1.1-hp -- os=-osf -+ os=osf - ;; - hppro) - basic_machine=hppa1.1-hp -- os=-proelf -- ;; -- i370-ibm* | ibm*) -- basic_machine=i370-ibm -- ;; -- i*86v32) -- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` -- os=-sysv32 -- ;; -- i*86v4*) -- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` -- os=-sysv4 -- ;; -- i*86v) -- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` -- os=-sysv -- ;; -- i*86sol2) -- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` -- os=-solaris2 -+ os=proelf - ;; - i386mach) - basic_machine=i386-mach -- os=-mach -- ;; -- i386-vsta | vsta) -- basic_machine=i386-unknown -- os=-vsta -- ;; -- iris | iris4d) -- basic_machine=mips-sgi -- case $os in -- -irix*) -- ;; -- *) -- os=-irix4 -- ;; -- esac -+ os=mach - ;; - isi68 | isi) - basic_machine=m68k-isi -- os=-sysv -- ;; -- leon-*|leon[3-9]-*) -- basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` -+ os=sysv - ;; - m68knommu) - basic_machine=m68k-unknown -- os=-linux -- ;; -- m68knommu-*) -- basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` -- os=-linux -- ;; -- m88k-omron*) -- basic_machine=m88k-omron -+ os=linux - ;; - magnum | m3230) - basic_machine=mips-mips -- os=-sysv -+ os=sysv - ;; - merlin) - basic_machine=ns32k-utek -- os=-sysv -- ;; -- microblaze*) -- basic_machine=microblaze-xilinx -+ os=sysv - ;; - mingw64) - basic_machine=x86_64-pc -- os=-mingw64 -+ os=mingw64 - ;; - mingw32) - basic_machine=i686-pc -- os=-mingw32 -+ os=mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown -- os=-mingw32ce -- ;; -- miniframe) -- basic_machine=m68000-convergent -- ;; -- *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) -- basic_machine=m68k-atari -- os=-mint -- ;; -- mips3*-*) -- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` -- ;; -- mips3*) -- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown -+ os=mingw32ce - ;; - monitor) - basic_machine=m68k-rom68k -- os=-coff -+ os=coff - ;; - morphos) - basic_machine=powerpc-unknown -- os=-morphos -+ os=morphos - ;; - moxiebox) - basic_machine=moxie-unknown -- os=-moxiebox -+ os=moxiebox - ;; - msdos) - basic_machine=i386-pc -- os=-msdos -- ;; -- ms1-*) -- basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` -+ os=msdos - ;; - msys) - basic_machine=i686-pc -- os=-msys -+ os=msys - ;; - mvs) - basic_machine=i370-ibm -- os=-mvs -+ os=mvs - ;; - nacl) - basic_machine=le32-unknown -- os=-nacl -+ os=nacl - ;; - ncr3000) - basic_machine=i486-ncr -- os=-sysv4 -+ os=sysv4 - ;; - netbsd386) -- basic_machine=i386-unknown -- os=-netbsd -+ basic_machine=i386-pc -+ os=netbsd - ;; - netwinder) - basic_machine=armv4l-rebel -- os=-linux -+ os=linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony -- os=-newsos -+ os=newsos - ;; - news1000) - basic_machine=m68030-sony -- os=-newsos -- ;; -- news-3600 | risc-news) -- basic_machine=mips-sony -- os=-newsos -+ os=newsos - ;; - necv70) - basic_machine=v70-nec -- os=-sysv -- ;; -- next | m*-next ) -- basic_machine=m68k-next -- case $os in -- -nextstep* ) -- ;; -- -ns2*) -- os=-nextstep2 -- ;; -- *) -- os=-nextstep3 -- ;; -- esac -+ os=sysv - ;; - nh3000) - basic_machine=m68k-harris -- os=-cxux -+ os=cxux - ;; - nh[45]000) - basic_machine=m88k-harris -- os=-cxux -+ os=cxux - ;; - nindy960) - basic_machine=i960-intel -- os=-nindy -+ os=nindy - ;; - mon960) - basic_machine=i960-intel -- os=-mon960 -+ os=mon960 - ;; - nonstopux) - basic_machine=mips-compaq -- os=-nonstopux -- ;; -- np1) -- basic_machine=np1-gould -- ;; -- neo-tandem) -- basic_machine=neo-tandem -- ;; -- nse-tandem) -- basic_machine=nse-tandem -- ;; -- nsr-tandem) -- basic_machine=nsr-tandem -- ;; -- op50n-* | op60c-*) -- basic_machine=hppa1.1-oki -- os=-proelf -- ;; -- openrisc | openrisc-*) -- basic_machine=or32-unknown -+ os=nonstopux - ;; - os400) - basic_machine=powerpc-ibm -- os=-os400 -+ os=os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson -- os=-ose -+ os=ose - ;; - os68k) - basic_machine=m68k-none -- os=-os68k -- ;; -- pa-hitachi) -- basic_machine=hppa1.1-hitachi -- os=-hiuxwe2 -+ os=os68k - ;; - paragon) - basic_machine=i860-intel -- os=-osf -+ os=osf - ;; - parisc) - basic_machine=hppa-unknown -- os=-linux -- ;; -- parisc-*) -- basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` -- os=-linux -- ;; -- pbd) -- basic_machine=sparc-tti -- ;; -- pbb) -- basic_machine=m68k-tti -- ;; -- pc532 | pc532-*) -- basic_machine=ns32k-pc532 -- ;; -- pc98) -- basic_machine=i386-pc -- ;; -- pc98-*) -- basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` -- ;; -- pentium | p5 | k5 | k6 | nexgen | viac3) -- basic_machine=i586-pc -- ;; -- pentiumpro | p6 | 6x86 | athlon | athlon_*) -- basic_machine=i686-pc -- ;; -- pentiumii | pentium2 | pentiumiii | pentium3) -- basic_machine=i686-pc -- ;; -- pentium4) -- basic_machine=i786-pc -- ;; -- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) -- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` -- ;; -- pentiumpro-* | p6-* | 6x86-* | athlon-*) -- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` -- ;; -- pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) -- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` -- ;; -- pentium4-*) -- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` -- ;; -- pn) -- basic_machine=pn-gould -- ;; -- power) basic_machine=power-ibm -- ;; -- ppc | ppcbe) basic_machine=powerpc-unknown -- ;; -- ppc-* | ppcbe-*) -- basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` -- ;; -- ppcle | powerpclittle) -- basic_machine=powerpcle-unknown -- ;; -- ppcle-* | powerpclittle-*) -- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` -- ;; -- ppc64) basic_machine=powerpc64-unknown -- ;; -- ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` -- ;; -- ppc64le | powerpc64little) -- basic_machine=powerpc64le-unknown -- ;; -- ppc64le-* | powerpc64little-*) -- basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` -- ;; -- ps2) -- basic_machine=i386-ibm -+ os=linux - ;; - pw32) - basic_machine=i586-unknown -- os=-pw32 -+ os=pw32 - ;; - rdos | rdos64) - basic_machine=x86_64-pc -- os=-rdos -+ os=rdos - ;; - rdos32) - basic_machine=i386-pc -- os=-rdos -+ os=rdos - ;; - rom68k) - basic_machine=m68k-rom68k -- os=-coff -- ;; -- rm[46]00) -- basic_machine=mips-siemens -- ;; -- rtpc | rtpc-*) -- basic_machine=romp-ibm -- ;; -- s390 | s390-*) -- basic_machine=s390-ibm -- ;; -- s390x | s390x-*) -- basic_machine=s390x-ibm -+ os=coff - ;; - sa29200) - basic_machine=a29k-amd -- os=-udi -- ;; -- sb1) -- basic_machine=mipsisa64sb1-unknown -- ;; -- sb1el) -- basic_machine=mipsisa64sb1el-unknown -- ;; -- sde) -- basic_machine=mipsisa32-sde -- os=-elf -+ os=udi - ;; - sei) - basic_machine=mips-sei -- os=-seiux -+ os=seiux - ;; - sequent) - basic_machine=i386-sequent -- ;; -- sh) -- basic_machine=sh-hitachi -- os=-hms -- ;; -- sh5el) -- basic_machine=sh5le-unknown -- ;; -- sh64) -- basic_machine=sh64-unknown -- ;; -- sparclite-wrs | simso-wrs) -- basic_machine=sparclite-wrs -- os=-vxworks -+ os= - ;; - sps7) - basic_machine=m68k-bull -- os=-sysv2 -- ;; -- spur) -- basic_machine=spur-unknown -+ os=sysv2 - ;; - st2000) - basic_machine=m68k-tandem -+ os= - ;; - stratus) - basic_machine=i860-stratus -- os=-sysv4 -- ;; -- strongarm-* | thumb-*) -- basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` -+ os=sysv4 - ;; - sun2) - basic_machine=m68000-sun -+ os= - ;; - sun2os3) - basic_machine=m68000-sun -- os=-sunos3 -+ os=sunos3 - ;; - sun2os4) - basic_machine=m68000-sun -- os=-sunos4 -+ os=sunos4 -+ ;; -+ sun3) -+ basic_machine=m68k-sun -+ os= - ;; - sun3os3) - basic_machine=m68k-sun -- os=-sunos3 -+ os=sunos3 - ;; - sun3os4) - basic_machine=m68k-sun -- os=-sunos4 -+ os=sunos4 -+ ;; -+ sun4) -+ basic_machine=sparc-sun -+ os= - ;; - sun4os3) - basic_machine=sparc-sun -- os=-sunos3 -+ os=sunos3 - ;; - sun4os4) - basic_machine=sparc-sun -- os=-sunos4 -+ os=sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun -- os=-solaris2 -- ;; -- sun3 | sun3-*) -- basic_machine=m68k-sun -- ;; -- sun4) -- basic_machine=sparc-sun -+ os=solaris2 - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun -+ os= - ;; - sv1) - basic_machine=sv1-cray -- os=-unicos -+ os=unicos - ;; - symmetry) - basic_machine=i386-sequent -- os=-dynix -+ os=dynix - ;; - t3e) - basic_machine=alphaev5-cray -- os=-unicos -+ os=unicos - ;; - t90) - basic_machine=t90-cray -- os=-unicos -- ;; -- tile*) -- basic_machine=$basic_machine-unknown -- os=-linux-gnu -- ;; -- tx39) -- basic_machine=mipstx39-unknown -- ;; -- tx39el) -- basic_machine=mipstx39el-unknown -+ os=unicos - ;; - toad1) - basic_machine=pdp10-xkl -- os=-tops20 -- ;; -- tower | tower-32) -- basic_machine=m68k-ncr -+ os=tops20 - ;; - tpf) - basic_machine=s390x-ibm -- os=-tpf -+ os=tpf - ;; - udi29k) - basic_machine=a29k-amd -- os=-udi -+ os=udi - ;; - ultra3) - basic_machine=a29k-nyu -- os=-sym1 -+ os=sym1 - ;; - v810 | necv810) - basic_machine=v810-nec -- os=-none -+ os=none - ;; - vaxv) - basic_machine=vax-dec -- os=-sysv -+ os=sysv - ;; - vms) - basic_machine=vax-dec -- os=-vms -+ os=vms - ;; -- vpp*|vx|vx-*) -- basic_machine=f301-fujitsu -+ vsta) -+ basic_machine=i386-pc -+ os=vsta - ;; - vxworks960) - basic_machine=i960-wrs -- os=-vxworks -+ os=vxworks - ;; - vxworks68) - basic_machine=m68k-wrs -- os=-vxworks -+ os=vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs -- os=-vxworks -- ;; -- w65*) -- basic_machine=w65-wdc -- os=-none -- ;; -- w89k-*) -- basic_machine=hppa1.1-winbond -- os=-proelf -+ os=vxworks - ;; - xbox) - basic_machine=i686-pc -- os=-mingw32 -- ;; -- xps | xps100) -- basic_machine=xps100-honeywell -- ;; -- xscale-* | xscalee[bl]-*) -- basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` -+ os=mingw32 - ;; - ymp) - basic_machine=ymp-cray -- os=-unicos -+ os=unicos - ;; -- z8k-*-coff) -- basic_machine=z8k-unknown -- os=-sim -- ;; -- z80-*-coff) -- basic_machine=z80-unknown -- os=-sim -+ *) -+ basic_machine=$1 -+ os= - ;; -- none) -- basic_machine=none-none -- os=-none -+ esac - ;; -+esac - -+# Decode 1-component or ad-hoc basic machines -+case $basic_machine in - # Here we handle the default manufacturer of certain CPU types. It is in - # some cases the only manufacturer, in others, it is the most popular. - w89k) -- basic_machine=hppa1.1-winbond -+ cpu=hppa1.1 -+ vendor=winbond - ;; - op50n) -- basic_machine=hppa1.1-oki -+ cpu=hppa1.1 -+ vendor=oki - ;; - op60c) -- basic_machine=hppa1.1-oki -+ cpu=hppa1.1 -+ vendor=oki - ;; -- romp) -- basic_machine=romp-ibm -+ ibm*) -+ cpu=i370 -+ vendor=ibm - ;; -- mmix) -- basic_machine=mmix-knuth -+ orion105) -+ cpu=clipper -+ vendor=highlevel - ;; -- rs6000) -- basic_machine=rs6000-ibm -+ mac | mpw | mac-mpw) -+ cpu=m68k -+ vendor=apple - ;; -- vax) -- basic_machine=vax-dec -+ pmac | pmac-mpw) -+ cpu=powerpc -+ vendor=apple - ;; -- pdp10) -- # there are many clones, so DEC is not a safe bet -- basic_machine=pdp10-unknown -+ -+ # Recognize the various machine names and aliases which stand -+ # for a CPU type and a company and sometimes even an OS. -+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) -+ cpu=m68000 -+ vendor=att - ;; -- pdp11) -- basic_machine=pdp11-dec -+ 3b*) -+ cpu=we32k -+ vendor=att - ;; -- we32k) -- basic_machine=we32k-att -+ bluegene*) -+ cpu=powerpc -+ vendor=ibm -+ os=cnk - ;; -- sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) -- basic_machine=sh-unknown -+ decsystem10* | dec10*) -+ cpu=pdp10 -+ vendor=dec -+ os=tops10 - ;; -- sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) -- basic_machine=sparc-sun -+ decsystem20* | dec20*) -+ cpu=pdp10 -+ vendor=dec -+ os=tops20 - ;; -- cydra) -- basic_machine=cydra-cydrome -+ delta | 3300 | motorola-3300 | motorola-delta \ -+ | 3300-motorola | delta-motorola) -+ cpu=m68k -+ vendor=motorola - ;; -- orion) -- basic_machine=orion-highlevel -+ dpx2*) -+ cpu=m68k -+ vendor=bull -+ os=sysv3 - ;; -- orion105) -- basic_machine=clipper-highlevel -+ encore | umax | mmax) -+ cpu=ns32k -+ vendor=encore - ;; -- mac | mpw | mac-mpw) -- basic_machine=m68k-apple -+ elxsi) -+ cpu=elxsi -+ vendor=elxsi -+ os=${os:-bsd} - ;; -- pmac | pmac-mpw) -- basic_machine=powerpc-apple -+ fx2800) -+ cpu=i860 -+ vendor=alliant -+ ;; -+ genix) -+ cpu=ns32k -+ vendor=ns -+ ;; -+ h3050r* | hiux*) -+ cpu=hppa1.1 -+ vendor=hitachi -+ os=hiuxwe2 -+ ;; -+ hp3k9[0-9][0-9] | hp9[0-9][0-9]) -+ cpu=hppa1.0 -+ vendor=hp -+ ;; -+ hp9k2[0-9][0-9] | hp9k31[0-9]) -+ cpu=m68000 -+ vendor=hp -+ ;; -+ hp9k3[2-9][0-9]) -+ cpu=m68k -+ vendor=hp -+ ;; -+ hp9k6[0-9][0-9] | hp6[0-9][0-9]) -+ cpu=hppa1.0 -+ vendor=hp -+ ;; -+ hp9k7[0-79][0-9] | hp7[0-79][0-9]) -+ cpu=hppa1.1 -+ vendor=hp -+ ;; -+ hp9k78[0-9] | hp78[0-9]) -+ # FIXME: really hppa2.0-hp -+ cpu=hppa1.1 -+ vendor=hp -+ ;; -+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) -+ # FIXME: really hppa2.0-hp -+ cpu=hppa1.1 -+ vendor=hp -+ ;; -+ hp9k8[0-9][13679] | hp8[0-9][13679]) -+ cpu=hppa1.1 -+ vendor=hp -+ ;; -+ hp9k8[0-9][0-9] | hp8[0-9][0-9]) -+ cpu=hppa1.0 -+ vendor=hp -+ ;; -+ i*86v32) -+ cpu=`echo "$1" | sed -e 's/86.*/86/'` -+ vendor=pc -+ os=sysv32 -+ ;; -+ i*86v4*) -+ cpu=`echo "$1" | sed -e 's/86.*/86/'` -+ vendor=pc -+ os=sysv4 -+ ;; -+ i*86v) -+ cpu=`echo "$1" | sed -e 's/86.*/86/'` -+ vendor=pc -+ os=sysv -+ ;; -+ i*86sol2) -+ cpu=`echo "$1" | sed -e 's/86.*/86/'` -+ vendor=pc -+ os=solaris2 -+ ;; -+ j90 | j90-cray) -+ cpu=j90 -+ vendor=cray -+ os=${os:-unicos} -+ ;; -+ iris | iris4d) -+ cpu=mips -+ vendor=sgi -+ case $os in -+ irix*) -+ ;; -+ *) -+ os=irix4 -+ ;; -+ esac -+ ;; -+ miniframe) -+ cpu=m68000 -+ vendor=convergent -+ ;; -+ *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) -+ cpu=m68k -+ vendor=atari -+ os=mint -+ ;; -+ news-3600 | risc-news) -+ cpu=mips -+ vendor=sony -+ os=newsos -+ ;; -+ next | m*-next) -+ cpu=m68k -+ vendor=next -+ case $os in -+ openstep*) -+ ;; -+ nextstep*) - ;; -- *-unknown) -- # Make sure to match an already-canonicalized machine name. -+ ns2*) -+ os=nextstep2 - ;; - *) -- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 -+ os=nextstep3 -+ ;; -+ esac -+ ;; -+ np1) -+ cpu=np1 -+ vendor=gould -+ ;; -+ op50n-* | op60c-*) -+ cpu=hppa1.1 -+ vendor=oki -+ os=proelf -+ ;; -+ pa-hitachi) -+ cpu=hppa1.1 -+ vendor=hitachi -+ os=hiuxwe2 -+ ;; -+ pbd) -+ cpu=sparc -+ vendor=tti -+ ;; -+ pbb) -+ cpu=m68k -+ vendor=tti -+ ;; -+ pc532) -+ cpu=ns32k -+ vendor=pc532 -+ ;; -+ pn) -+ cpu=pn -+ vendor=gould -+ ;; -+ power) -+ cpu=power -+ vendor=ibm -+ ;; -+ ps2) -+ cpu=i386 -+ vendor=ibm -+ ;; -+ rm[46]00) -+ cpu=mips -+ vendor=siemens -+ ;; -+ rtpc | rtpc-*) -+ cpu=romp -+ vendor=ibm -+ ;; -+ sde) -+ cpu=mipsisa32 -+ vendor=sde -+ os=${os:-elf} -+ ;; -+ simso-wrs) -+ cpu=sparclite -+ vendor=wrs -+ os=vxworks -+ ;; -+ tower | tower-32) -+ cpu=m68k -+ vendor=ncr -+ ;; -+ vpp*|vx|vx-*) -+ cpu=f301 -+ vendor=fujitsu -+ ;; -+ w65) -+ cpu=w65 -+ vendor=wdc -+ ;; -+ w89k-*) -+ cpu=hppa1.1 -+ vendor=winbond -+ os=proelf -+ ;; -+ none) -+ cpu=none -+ vendor=none -+ ;; -+ leon|leon[3-9]) -+ cpu=sparc -+ vendor=$basic_machine -+ ;; -+ leon-*|leon[3-9]-*) -+ cpu=sparc -+ vendor=`echo "$basic_machine" | sed 's/-.*//'` -+ ;; -+ -+ *-*) -+ # shellcheck disable=SC2162 -+ IFS="-" read cpu vendor <&2 - exit 1 - ;; - esac -+ ;; -+esac - - # Here we canonicalize certain aliases for manufacturers. --case $basic_machine in -- *-digital*) -- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` -+case $vendor in -+ digital*) -+ vendor=dec - ;; -- *-commodore*) -- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` -+ commodore*) -+ vendor=cbm - ;; - *) - ;; -@@ -1353,200 +1275,244 @@ - - # Decode manufacturer-specific aliases for certain operating systems. - --if [ x"$os" != x"" ] -+if [ x$os != x ] - then - case $os in -- # First match some system type aliases -- # that might get confused with valid system types. -- # -solaris* is a basic system type, with this one exception. -- -auroraux) -- os=-auroraux -+ # First match some system type aliases that might get confused -+ # with valid system types. -+ # solaris* is a basic system type, with this one exception. -+ auroraux) -+ os=auroraux - ;; -- -solaris1 | -solaris1.*) -- os=`echo $os | sed -e 's|solaris1|sunos4|'` -+ bluegene*) -+ os=cnk - ;; -- -solaris) -- os=-solaris2 -+ solaris1 | solaris1.*) -+ os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; -- -svr4*) -- os=-sysv4 -+ solaris) -+ os=solaris2 - ;; -- -unixware*) -- os=-sysv4.2uw -+ unixware*) -+ os=sysv4.2uw - ;; -- -gnu/linux*) -+ gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; -- # First accept the basic system types. -+ # es1800 is here to avoid being matched by es* (a different OS) -+ es1800*) -+ os=ose -+ ;; -+ # Some version numbers need modification -+ chorusos*) -+ os=chorusos -+ ;; -+ isc) -+ os=isc2.2 -+ ;; -+ sco6) -+ os=sco5v6 -+ ;; -+ sco5) -+ os=sco3.2v5 -+ ;; -+ sco4) -+ os=sco3.2v4 -+ ;; -+ sco3.2.[4-9]*) -+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` -+ ;; -+ sco3.2v[4-9]* | sco5v6*) -+ # Don't forget version if it is 3.2v4 or newer. -+ ;; -+ scout) -+ # Don't match below -+ ;; -+ sco*) -+ os=sco3.2v2 -+ ;; -+ psos*) -+ os=psos -+ ;; -+ # Now accept the basic system types. - # The portable systems comes first. -- # Each alternative MUST END IN A *, to match a version number. -- # -sysv* is not here because it comes later, after sysvr4. -- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ -- | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ -- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ -- | -sym* | -kopensolaris* | -plan9* \ -- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ -- | -aos* | -aros* | -cloudabi* | -sortix* \ -- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ -- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ -- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ -- | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ -- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ -- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ -- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ -- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ -- | -chorusos* | -chorusrdb* | -cegcc* \ -- | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ -- | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ -- | -linux-newlib* | -linux-musl* | -linux-uclibc* \ -- | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ -- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ -- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ -- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ -- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ -- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ -- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ -- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ -- | -onefs* | -tirtos* | -phoenix*) -+ # Each alternative MUST end in a * to match a version number. -+ # sysv* is not here because it comes later, after sysvr4. -+ gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ -+ | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\ -+ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ -+ | sym* | kopensolaris* | plan9* \ -+ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ -+ | aos* | aros* | cloudabi* | sortix* | twizzler* \ -+ | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ -+ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ -+ | knetbsd* | mirbsd* | netbsd* \ -+ | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \ -+ | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \ -+ | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ -+ | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ -+ | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \ -+ | chorusrdb* | cegcc* | glidix* \ -+ | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ -+ | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \ -+ | linux-newlib* | linux-musl* | linux-uclibc* \ -+ | uxpv* | beos* | mpeix* | udk* | moxiebox* \ -+ | interix* | uwin* | mks* | rhapsody* | darwin* \ -+ | openstep* | oskit* | conix* | pw32* | nonstopux* \ -+ | storm-chaos* | tops10* | tenex* | tops20* | its* \ -+ | os2* | vos* | palmos* | uclinux* | nucleus* \ -+ | morphos* | superux* | rtmk* | windiss* \ -+ | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ -+ | skyos* | haiku* | rdos* | toppers* | drops* | es* \ -+ | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ -+ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ -+ | nsk* | powerunix* | genode*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; -- -qnx*) -- case $basic_machine in -- x86-* | i*86-*) -+ qnx*) -+ case $cpu in -+ x86 | i*86) - ;; - *) -- os=-nto$os -+ os=nto-$os - ;; - esac - ;; -- -nto-qnx*) -+ hiux*) -+ os=hiuxwe2 - ;; -- -nto*) -- os=`echo $os | sed -e 's|nto|nto-qnx|'` -+ nto-qnx*) - ;; -- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ -- | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ -- | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) -+ nto*) -+ os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; -- -mac*) -- os=`echo $os | sed -e 's|mac|macos|'` -+ sim | xray | os68k* | v88r* \ -+ | windows* | osx | abug | netware* | os9* \ -+ | macos* | mpw* | magic* | mmixware* | mon960* | lnews*) - ;; -- -linux-dietlibc) -- os=-linux-dietlibc -+ linux-dietlibc) -+ os=linux-dietlibc - ;; -- -linux*) -+ linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; -- -sunos5*) -- os=`echo $os | sed -e 's|sunos5|solaris2|'` -+ lynx*178) -+ os=lynxos178 - ;; -- -sunos6*) -- os=`echo $os | sed -e 's|sunos6|solaris3|'` -+ lynx*5) -+ os=lynxos5 - ;; -- -opened*) -- os=-openedition -+ lynx*) -+ os=lynxos - ;; -- -os400*) -- os=-os400 -+ mac*) -+ os=`echo "$os" | sed -e 's|mac|macos|'` - ;; -- -wince*) -- os=-wince -+ opened*) -+ os=openedition - ;; -- -osfrose*) -- os=-osfrose -+ os400*) -+ os=os400 - ;; -- -osf*) -- os=-osf -+ sunos5*) -+ os=`echo "$os" | sed -e 's|sunos5|solaris2|'` - ;; -- -utek*) -- os=-bsd -+ sunos6*) -+ os=`echo "$os" | sed -e 's|sunos6|solaris3|'` - ;; -- -dynix*) -- os=-bsd -+ wince*) -+ os=wince - ;; -- -acis*) -- os=-aos -+ utek*) -+ os=bsd - ;; -- -atheos*) -- os=-atheos -+ dynix*) -+ os=bsd - ;; -- -syllable*) -- os=-syllable -+ acis*) -+ os=aos - ;; -- -386bsd) -- os=-bsd -+ atheos*) -+ os=atheos - ;; -- -ctix* | -uts*) -- os=-sysv -+ syllable*) -+ os=syllable - ;; -- -nova*) -- os=-rtmk-nova -+ 386bsd) -+ os=bsd - ;; -- -ns2 ) -- os=-nextstep2 -+ ctix* | uts*) -+ os=sysv - ;; -- -nsk*) -- os=-nsk -+ nova*) -+ os=rtmk-nova -+ ;; -+ ns2) -+ os=nextstep2 - ;; - # Preserve the version number of sinix5. -- -sinix5.*) -+ sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; -- -sinix*) -- os=-sysv4 -+ sinix*) -+ os=sysv4 - ;; -- -tpf*) -- os=-tpf -+ tpf*) -+ os=tpf - ;; -- -triton*) -- os=-sysv3 -+ triton*) -+ os=sysv3 - ;; -- -oss*) -- os=-sysv3 -+ oss*) -+ os=sysv3 - ;; -- -svr4) -- os=-sysv4 -+ svr4*) -+ os=sysv4 - ;; -- -svr3) -- os=-sysv3 -+ svr3) -+ os=sysv3 - ;; -- -sysvr4) -- os=-sysv4 -+ sysvr4) -+ os=sysv4 - ;; -- # This must come after -sysvr4. -- -sysv*) -+ # This must come after sysvr4. -+ sysv*) - ;; -- -ose*) -- os=-ose -+ ose*) -+ os=ose - ;; -- -es1800*) -- os=-ose -+ *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) -+ os=mint - ;; -- -xenix) -- os=-xenix -+ zvmoe) -+ os=zvmoe - ;; -- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) -- os=-mint -+ dicos*) -+ os=dicos - ;; -- -aros*) -- os=-aros -+ pikeos*) -+ # Until real need of OS specific support for -+ # particular features comes up, bare metal -+ # configurations are quite functional. -+ case $cpu in -+ arm*) -+ os=eabi - ;; -- -zvmoe) -- os=-zvmoe -+ *) -+ os=elf - ;; -- -dicos*) -- os=-dicos -+ esac - ;; -- -nacl*) -+ nacl*) - ;; -- -ios) -+ ios) -+ ;; -+ none) - ;; -- -none) -+ *-eabi) - ;; - *) -- # Get rid of the `-' at the beginning of $os. -- os=`echo $os | sed 's/[^-]*-//'` -- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 -+ echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2 - exit 1 - ;; - esac -@@ -1562,261 +1528,265 @@ - # will signal an error saying that MANUFACTURER isn't an operating - # system, and we'll never get to this point. - --case $basic_machine in -+case $cpu-$vendor in - score-*) -- os=-elf -+ os=elf - ;; - spu-*) -- os=-elf -+ os=elf - ;; - *-acorn) -- os=-riscix1.2 -+ os=riscix1.2 - ;; - arm*-rebel) -- os=-linux -+ os=linux - ;; - arm*-semi) -- os=-aout -+ os=aout - ;; - c4x-* | tic4x-*) -- os=-coff -+ os=coff - ;; - c8051-*) -- os=-elf -+ os=elf -+ ;; -+ clipper-intergraph) -+ os=clix - ;; - hexagon-*) -- os=-elf -+ os=elf - ;; - tic54x-*) -- os=-coff -+ os=coff - ;; - tic55x-*) -- os=-coff -+ os=coff - ;; - tic6x-*) -- os=-coff -+ os=coff - ;; - # This must come before the *-dec entry. - pdp10-*) -- os=-tops20 -+ os=tops20 - ;; - pdp11-*) -- os=-none -+ os=none - ;; - *-dec | vax-*) -- os=-ultrix4.2 -+ os=ultrix4.2 - ;; - m68*-apollo) -- os=-domain -+ os=domain - ;; - i386-sun) -- os=-sunos4.0.2 -+ os=sunos4.0.2 - ;; - m68000-sun) -- os=-sunos3 -+ os=sunos3 - ;; - m68*-cisco) -- os=-aout -+ os=aout - ;; - mep-*) -- os=-elf -+ os=elf - ;; - mips*-cisco) -- os=-elf -+ os=elf - ;; - mips*-*) -- os=-elf -+ os=elf - ;; - or32-*) -- os=-coff -+ os=coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. -- os=-sysv3 -+ os=sysv3 - ;; - sparc-* | *-sun) -- os=-sunos4.1.1 -+ os=sunos4.1.1 - ;; -- *-be) -- os=-beos -+ pru-*) -+ os=elf - ;; -- *-haiku) -- os=-haiku -+ *-be) -+ os=beos - ;; - *-ibm) -- os=-aix -+ os=aix - ;; - *-knuth) -- os=-mmixware -+ os=mmixware - ;; - *-wec) -- os=-proelf -+ os=proelf - ;; - *-winbond) -- os=-proelf -+ os=proelf - ;; - *-oki) -- os=-proelf -+ os=proelf - ;; - *-hp) -- os=-hpux -+ os=hpux - ;; - *-hitachi) -- os=-hiux -+ os=hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) -- os=-sysv -+ os=sysv - ;; - *-cbm) -- os=-amigaos -+ os=amigaos - ;; - *-dg) -- os=-dgux -+ os=dgux - ;; - *-dolphin) -- os=-sysv3 -+ os=sysv3 - ;; - m68k-ccur) -- os=-rtu -+ os=rtu - ;; - m88k-omron*) -- os=-luna -+ os=luna - ;; - *-next ) -- os=-nextstep -+ os=nextstep - ;; - *-sequent) -- os=-ptx -+ os=ptx - ;; - *-crds) -- os=-unos -+ os=unos - ;; - *-ns) -- os=-genix -+ os=genix - ;; - i370-*) -- os=-mvs -- ;; -- *-next) -- os=-nextstep3 -+ os=mvs - ;; - *-gould) -- os=-sysv -+ os=sysv - ;; - *-highlevel) -- os=-bsd -+ os=bsd - ;; - *-encore) -- os=-bsd -+ os=bsd - ;; - *-sgi) -- os=-irix -+ os=irix - ;; - *-siemens) -- os=-sysv4 -+ os=sysv4 - ;; - *-masscomp) -- os=-rtu -+ os=rtu - ;; - f30[01]-fujitsu | f700-fujitsu) -- os=-uxpv -+ os=uxpv - ;; - *-rom68k) -- os=-coff -+ os=coff - ;; - *-*bug) -- os=-coff -+ os=coff - ;; - *-apple) -- os=-macos -+ os=macos - ;; - *-atari*) -- os=-mint -+ os=mint -+ ;; -+ *-wrs) -+ os=vxworks - ;; - *) -- os=-none -+ os=none - ;; - esac - fi - - # Here we handle the case where we know the os, and the CPU type, but not the - # manufacturer. We pick the logical manufacturer. --vendor=unknown --case $basic_machine in -- *-unknown) -+case $vendor in -+ unknown) - case $os in -- -riscix*) -+ riscix*) - vendor=acorn - ;; -- -sunos*) -+ sunos*) - vendor=sun - ;; -- -cnk*|-aix*) -+ cnk*|-aix*) - vendor=ibm - ;; -- -beos*) -+ beos*) - vendor=be - ;; -- -hpux*) -+ hpux*) - vendor=hp - ;; -- -mpeix*) -+ mpeix*) - vendor=hp - ;; -- -hiux*) -+ hiux*) - vendor=hitachi - ;; -- -unos*) -+ unos*) - vendor=crds - ;; -- -dgux*) -+ dgux*) - vendor=dg - ;; -- -luna*) -+ luna*) - vendor=omron - ;; -- -genix*) -+ genix*) - vendor=ns - ;; -- -mvs* | -opened*) -+ clix*) -+ vendor=intergraph -+ ;; -+ mvs* | opened*) - vendor=ibm - ;; -- -os400*) -+ os400*) - vendor=ibm - ;; -- -ptx*) -+ ptx*) - vendor=sequent - ;; -- -tpf*) -+ tpf*) - vendor=ibm - ;; -- -vxsim* | -vxworks* | -windiss*) -+ vxsim* | vxworks* | windiss*) - vendor=wrs - ;; -- -aux*) -+ aux*) - vendor=apple - ;; -- -hms*) -+ hms*) - vendor=hitachi - ;; -- -mpw* | -macos*) -+ mpw* | macos*) - vendor=apple - ;; -- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) -+ *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) - vendor=atari - ;; -- -vos*) -+ vos*) - vendor=stratus - ;; - esac -- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; - esac - --echo $basic_machine$os -+echo "$cpu-$vendor-$os" - exit - - # Local variables: --# eval: (add-hook 'write-file-hooks 'time-stamp) -+# eval: (add-hook 'before-save-hook 'time-stamp) - # time-stamp-start: "timestamp='" - # time-stamp-format: "%:y-%02m-%02d" - # time-stamp-end: "'" From 52ad8afab036872e862748e9b116822f83403387 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 8 Sep 2025 21:08:21 -0600 Subject: [PATCH 2807/3180] libtheora: update and fix dnamic linking --- recipes/wip/libs/other/libtheora/recipe.toml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/recipes/wip/libs/other/libtheora/recipe.toml b/recipes/wip/libs/other/libtheora/recipe.toml index 95db350e..12f2579b 100644 --- a/recipes/wip/libs/other/libtheora/recipe.toml +++ b/recipes/wip/libs/other/libtheora/recipe.toml @@ -1,13 +1,18 @@ -#TODO the redox target is not supported on the configure script [source] -tar = "http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.bz2" +tar = "http://downloads.xiph.org/releases/theora/libtheora-1.2.0.tar.gz" +blake3 = "b2413d6a29669063c30679eb46e09bd55b47d51e1516282bd1f5a752a8ecae91" script = """ -GNU_CONFIG_GET config.sub +DYNAMIC_INIT +autotools_recursive_regenerate """ [build] -template = "configure" +template = "custom" dependencies = [ "libogg", "libvorbis", ] +script = """ +DYNAMIC_INIT +cookbook_configure +""" From 0e3209c1ad973df2c985569562d4d5bc8aa07f79 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 8 Sep 2025 21:11:04 -0600 Subject: [PATCH 2808/3180] mpg123: update and fix dynamic linking --- recipes/wip/libs/audio/mpg123/recipe.toml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/recipes/wip/libs/audio/mpg123/recipe.toml b/recipes/wip/libs/audio/mpg123/recipe.toml index d092711f..f88873ab 100644 --- a/recipes/wip/libs/audio/mpg123/recipe.toml +++ b/recipes/wip/libs/audio/mpg123/recipe.toml @@ -1,5 +1,11 @@ #TODO compilation error [source] -tar = "https://mpg123.de/download/mpg123-1.31.3.tar.bz2" +tar = "https://mpg123.de/download/mpg123-1.33.2.tar.bz2" +blake3 = "1e604dc14160a8852ef6b880643e3534f44e410af1fd5ba29a80ff960a54e834" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + [build] template = "configure" From e91abf42636c3d741ec8303b1d828ae21b533649 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 10 Sep 2025 15:26:26 +0700 Subject: [PATCH 2809/3180] Allow missing recipe in repo builder --- src/bin/repo_builder.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/bin/repo_builder.rs b/src/bin/repo_builder.rs index d903bfd1..760fc33c 100644 --- a/src/bin/repo_builder.rs +++ b/src/bin/repo_builder.rs @@ -59,6 +59,11 @@ fn main() -> Result<(), Box> { let toml_src = stage_dir.with_extension("toml"); let toml_dst = repo_path.join(format!("{}.toml", recipe)); + if !fs::exists(&toml_src)? { + eprintln!("recipe {} is missing stage.toml", recipe); + continue; + } + if is_newer(&toml_src, &toml_dst) { eprintln!("\x1b[01;38;5;155mrepo - publishing {}\x1b[0m", recipe); if fs::exists(&pkgar_src)? { From bf8d95bef28bd54bdd500b768d3dc7f73d8c37de Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Wed, 10 Sep 2025 17:36:54 +0000 Subject: [PATCH 2810/3180] Fix install failure due to symlink --- recipes/dev/gcc13/recipe.toml | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/recipes/dev/gcc13/recipe.toml b/recipes/dev/gcc13/recipe.toml index 38dde656..312eb6eb 100644 --- a/recipes/dev/gcc13/recipe.toml +++ b/recipes/dev/gcc13/recipe.toml @@ -21,12 +21,8 @@ mkdir -p "${COOKBOOK_SYSROOT}/usr" ln -sf "${COOKBOOK_SYSROOT}/include" "${COOKBOOK_SYSROOT}/usr/include" ln -sf "${COOKBOOK_SYSROOT}/lib" "${COOKBOOK_SYSROOT}/usr/lib" -COOKBOOK_CONFIGURE_FLAGS=( - --host="${GNU_TARGET}" +COOKBOOK_CONFIGURE_FLAGS+=( --target="${GNU_TARGET}" - --prefix=/ - --enable-shared - --disable-static --with-sysroot=/ --with-build-sysroot="${COOKBOOK_SYSROOT}" --enable-languages=c,c++,lto @@ -40,9 +36,7 @@ COOKBOOK_CONFIGURE_FLAGS=( "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" all-gcc all-target-libgcc all-target-libstdc++-v3 "${COOKBOOK_MAKE}" install-gcc install-target-libgcc install-target-libstdc++-v3 DESTDIR="${COOKBOOK_STAGE}" -ln -s "gcc" "${COOKBOOK_STAGE}/bin/cc" -mkdir -p "${COOKBOOK_STAGE}/usr/libexec" -ln -s "/libexec/gcc" "${COOKBOOK_STAGE}/usr/libexec/gcc" +ln -s "gcc" "${COOKBOOK_STAGE}/usr/bin/cc" # Avoid conflict with libgcc & libstdcxx -rm -f "${COOKBOOK_STAGE}"/lib/libgcc_s.so* "${COOKBOOK_STAGE}"/lib/libstdc++.so* +rm -f "${COOKBOOK_STAGE}"/usr/lib/libgcc_s.so* "${COOKBOOK_STAGE}"/usr/lib/libstdc++.so* """ From 0ca65a841512f2dc70b9a25f2a17a7263728e258 Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Sun, 10 Aug 2025 03:08:15 -0400 Subject: [PATCH 2811/3180] Fish (builds, runs, hangs on waitpid) Fish builds and runs! The patch is refreshingly simple: * mount.h is disabled because we don't have it. * A recent revision of libc is needed for Redox constants. Types changed a bit between releases, so some casts had to be removed or added. * We don't have pselect, so I had to hack around it by mimicking how it works. Unfortunately, running programs or commands hangs unless part of a pipeline. So, `ls` hangs but `ls &` works. It seems like a waitpid issue rather a fork/exec issue. --- recipes/wip/shells/fish-shell/recipe.toml | 32 ++--- recipes/wip/shells/fish-shell/redox.patch | 144 ++++++++++++++++++++++ 2 files changed, 155 insertions(+), 21 deletions(-) create mode 100644 recipes/wip/shells/fish-shell/redox.patch diff --git a/recipes/wip/shells/fish-shell/recipe.toml b/recipes/wip/shells/fish-shell/recipe.toml index 34e55922..4ef60fe7 100644 --- a/recipes/wip/shells/fish-shell/recipe.toml +++ b/recipes/wip/shells/fish-shell/recipe.toml @@ -1,27 +1,17 @@ -#TODO not compiled or tested +# WIP: Builds, runs, but hangs on waitpid + [source] git = "https://github.com/fish-shell/fish-shell" +rev = "54e8ad7e90a8213c01ba58de0640223bee6846d6" +patches = ["redox.patch"] + [build] template = "custom" -dependencies = [ - "ncurses", - "gettext", - "pcre", -] +dependencies = ["gettext", "ncurses", "pcre"] script = """ -export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" -cookbook_cargo -#COOKBOOK_CONFIGURE="cmake" -#COOKBOOK_CONFIGURE_FLAGS=( -# -DCMAKE_BUILD_TYPE=Release -# -DCMAKE_CROSSCOMPILING=True -# -DCMAKE_EXE_LINKER_FLAGS="-static" -# -DCMAKE_INSTALL_PREFIX="/" -# -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -# -DCMAKE_SYSTEM_NAME=Generic -# -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -# -DCMAKE_VERBOSE_MAKEFILE=On -#"${COOKBOOK_SOURCE}" -#) -#cookbook_configure +DYNAMIC_INIT + +# The only default enabled feature is building the man pages. +# However, that requires sphinx so it can just be enabled later. +cookbook_cargo --no-default-features """ diff --git a/recipes/wip/shells/fish-shell/redox.patch b/recipes/wip/shells/fish-shell/redox.patch new file mode 100644 index 00000000..9b5a0d30 --- /dev/null +++ b/recipes/wip/shells/fish-shell/redox.patch @@ -0,0 +1,144 @@ +diff '--color=auto' -ruwN source/Cargo.toml source-new/Cargo.toml +--- source/Cargo.toml 2025-09-11 01:59:14.785564526 -0400 ++++ source-new/Cargo.toml 2025-09-11 01:59:45.885553436 -0400 +@@ -35,12 +35,12 @@ + + bitflags = "2.5.0" + errno = "0.3.0" +-libc = "0.2" ++libc = { git = "https://github.com/rust-lang/libc", rev = "b31ee9b22f99354f2ca00c68d038d6f377c8b8a4", features = ["extra_traits"] } + # lru pulls in hashbrown by default, which uses a faster (though less DoS resistant) hashing algo. + # disabling default features uses the stdlib instead, but it doubles the time to rewrite the history + # files as of 22 April 2024. + lru = "0.13.0" +-nix = { version = "0.30.1", default-features = false, features = [ ++nix = { git = "https://github.com/joshuamegnauth54/nix", branch = "redox-fish-no-merge", default-features = false, features = [ + "event", + "inotify", + "resource", +diff '--color=auto' -ruwN source/src/exec.rs source-new/src/exec.rs +--- source/src/exec.rs 2025-09-11 01:59:14.596625190 -0400 ++++ source-new/src/exec.rs 2025-09-11 02:00:00.315286369 -0400 +@@ -33,7 +33,6 @@ + use crate::nix::{getpid, isatty}; + use crate::null_terminated_array::OwningNullTerminatedArray; + use crate::parser::{Block, BlockId, BlockType, EvalRes, Parser}; +-#[cfg(FISH_USE_POSIX_SPAWN)] + use crate::proc::Pid; + use crate::proc::{ + hup_jobs, is_interactive_session, jobs_requiring_warning_on_exit, no_exec, +@@ -390,7 +389,7 @@ + ) -> ! { + // This function never returns, so we take certain liberties with constness. + +- unsafe { libc::execve(actual_cmd.as_ptr(), argv.get(), envv.get()) }; ++ unsafe { libc::execve(actual_cmd.as_ptr(), argv.get().cast(), envv.get().cast()) }; + let err = errno(); + + // The shebang wasn't introduced until UNIX Seventh Edition, so if +@@ -413,7 +412,11 @@ + // not what we would pass as argv0. + argv2[1] = actual_cmd.as_ptr(); + unsafe { +- libc::execve(_PATH_BSHELL.load(Ordering::Relaxed), &argv2[0], envv.get()); ++ libc::execve( ++ _PATH_BSHELL.load(Ordering::Relaxed), ++ argv2.as_ptr().cast(), ++ envv.get().cast(), ++ ); + } + } + } +diff '--color=auto' -ruwN source/src/fork_exec/postfork.rs source-new/src/fork_exec/postfork.rs +--- source/src/fork_exec/postfork.rs 2025-09-11 01:59:14.828576001 -0400 ++++ source-new/src/fork_exec/postfork.rs 2025-09-11 02:00:00.319001235 -0400 +@@ -339,7 +339,9 @@ + "', which is not an executable command." + ); + } +- } else if md.unwrap().mode() & u32::from(libc::S_IFMT) == u32::from(libc::S_IFDIR) { ++ } else if md.unwrap().mode() & u32::try_from(libc::S_IFMT).unwrap() ++ == u32::try_from(libc::S_IFDIR).unwrap() ++ { + FLOG_SAFE!( + exec, + "Failed to execute process '", +diff '--color=auto' -ruwN source/src/input_common.rs source-new/src/input_common.rs +--- source/src/input_common.rs 2025-09-11 01:59:14.828576001 -0400 ++++ source-new/src/input_common.rs 2025-09-11 02:00:00.316042380 -0400 +@@ -589,7 +589,9 @@ + // pselect expects timeouts in nanoseconds. + const NSEC_PER_MSEC: u64 = 1000 * 1000; + const NSEC_PER_SEC: u64 = NSEC_PER_MSEC * 1000; ++ #[cfg(not(target_os = "redox"))] + let wait_nsec: u64 = (timeout.as_millis() as u64) * NSEC_PER_MSEC; ++ #[cfg(not(target_os = "redox"))] + let timeout = libc::timespec { + tv_sec: (wait_nsec / NSEC_PER_SEC).try_into().unwrap(), + tv_nsec: (wait_nsec % NSEC_PER_SEC).try_into().unwrap(), +@@ -605,6 +607,7 @@ + libc::FD_SET(in_fd, &mut fdset); + } + ++ #[cfg(not(target_os = "redox"))] + let res = unsafe { + libc::pselect( + in_fd + 1, +@@ -616,6 +619,31 @@ + ) + }; + ++ #[cfg(target_os = "redox")] ++ let res = unsafe { ++ //HACK: pselect does this atomically ++ let mut saved = MaybeUninit::uninit(); ++ let mut saved = { ++ libc::sigfillset(saved.as_mut_ptr()); ++ saved.assume_init() ++ }; ++ libc::sigprocmask(libc::SIG_SETMASK, &sigs, &mut saved); ++ let mut timeout = libc::timeval { ++ tv_sec: timeout.as_secs() as _, ++ tv_usec: timeout.subsec_micros() as _, ++ }; ++ let res = libc::select( ++ in_fd + 1, ++ &mut fdset, ++ ptr::null_mut(), ++ ptr::null_mut(), ++ &raw mut timeout, ++ ); ++ libc::sigprocmask(libc::SIG_SETMASK, &saved, ptr::null_mut()); ++ ++ res ++ }; ++ + // Prevent signal starvation on WSL causing the `torn_escapes.py` test to fail + if is_windows_subsystem_for_linux(WSL::V1) { + // Merely querying the current thread's sigmask is sufficient to deliver a pending signal +diff '--color=auto' -ruwN source/src/libc.c source-new/src/libc.c +--- source/src/libc.c 2025-09-11 01:59:14.599514890 -0400 ++++ source-new/src/libc.c 2025-09-11 02:00:00.304589636 -0400 +@@ -4,7 +4,7 @@ + #include + #include + #include // MB_CUR_MAX +-#include // MNT_LOCAL ++/* #include // MNT_LOCAL */ + #include + #include // ST_LOCAL + #include // _CS_PATH, _PC_CASE_SENSITIVE +diff '--color=auto' -ruwN source/src/path.rs source-new/src/path.rs +--- source/src/path.rs 2025-09-11 01:59:14.600515157 -0400 ++++ source-new/src/path.rs 2025-09-11 02:00:00.317047039 -0400 +@@ -738,7 +738,9 @@ + crate::libc::ST_LOCAL(), + &narrow, + ); +- #[cfg(not(target_os = "netbsd"))] ++ #[cfg(target_os = "redox")] ++ let remoteness = DirRemoteness::unknown; ++ #[cfg(not(target_os = "redox"))] + let remoteness = remoteness_via_statfs( + libc::statfs, + |stat: &libc::statfs| stat.f_flags, From 0d307fa4e7bea0a51110f28b9bed94220569fbc6 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Fri, 12 Sep 2025 21:39:51 +0000 Subject: [PATCH 2812/3180] Initial self-hosting support --- clean.sh | 4 +- config.sh | 20 +++++++++- fetch.sh | 2 +- recipes/core/uutils/recipe.toml | 1 + recipes/other/cookbook/recipe.toml | 28 ++++++++++++++ recipes/wip/libs/other/libtool/recipe.toml | 13 ++++++- repo.sh | 4 +- src/bin/cook.rs | 45 ++++++++++++++++------ src/lib.rs | 10 +++++ unfetch.sh | 4 +- 10 files changed, 108 insertions(+), 23 deletions(-) create mode 100644 recipes/other/cookbook/recipe.toml diff --git a/clean.sh b/clean.sh index e26dba32..6f7d0b0f 100755 --- a/clean.sh +++ b/clean.sh @@ -5,14 +5,14 @@ source config.sh if [ $# = 0 ] then - recipes="$(target/release/list_recipes --short)" + recipes="$(list_recipes --short)" else recipes="$@" fi for recipe_name in $recipes do - recipe_path=`target/release/find_recipe $recipe_name` + recipe_path=`find_recipe $recipe_name` echo -e "\033[01;38;5;215mcook - clean $recipe_name\033[0m" rm -rf "${ROOT}/$recipe_path/target/${TARGET}" diff --git a/config.sh b/config.sh index 71131eb8..c3eccb17 100755 --- a/config.sh +++ b/config.sh @@ -6,6 +6,11 @@ if [ -z "${TARGET}" ] then export TARGET=x86_64-unknown-redox fi +if [ $(uname -s) = 'Redox' ] +then + export IS_REDOX="1" +fi + ARCH="${TARGET%%-*}" HOST="$TARGET" if [ x"${HOST}" == x"riscv64gc-unknown-redox" ] ; then @@ -14,7 +19,6 @@ fi # Automatic variables ROOT="$(cd `dirname "$0"` && pwd)" -export PATH="${ROOT}/bin:$PATH" export AR="${HOST}-gcc-ar" export AS="${HOST}-as" @@ -48,9 +52,21 @@ fi export FIND -if [ ! "$(uname -s)" = "Redox" ] +if [ -z "${IS_REDOX}" ] then function pkgar { "$ROOT/pkgar/target/release/pkgar" "$@" } +function cook { + "$ROOT/target/release/cook" "$@" +} +function repo_builder { + "$ROOT/target/release/repo_builder" "$@" +} +function list_recipes { + "$ROOT/target/release/list_recipes" "$@" +} +function find_recipe { + "$ROOT/target/release/find_recipe" "$@" +} fi diff --git a/fetch.sh b/fetch.sh index 2a1e87a9..73da2648 100755 --- a/fetch.sh +++ b/fetch.sh @@ -3,4 +3,4 @@ set -e source config.sh -target/release/cook --fetch-only ${@:1} +cook --fetch-only ${@:1} diff --git a/recipes/core/uutils/recipe.toml b/recipes/core/uutils/recipe.toml index 56fcb14d..2f2d8573 100644 --- a/recipes/core/uutils/recipe.toml +++ b/recipes/core/uutils/recipe.toml @@ -41,6 +41,7 @@ BINS=( hashsum head join + install link ln ls diff --git a/recipes/other/cookbook/recipe.toml b/recipes/other/cookbook/recipe.toml new file mode 100644 index 00000000..9b24639a --- /dev/null +++ b/recipes/other/cookbook/recipe.toml @@ -0,0 +1,28 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/cookbook.git" + +[build] +template = "custom" +script = """ +cookbook_cargo + +mkdir -pv "${COOKBOOK_STAGE}/home/user/cookbook" +cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/home/user/cookbook" +""" + +[package] +dependencies = [ + # TODO: When rust working, use this + # "dev-essential", + "autoconf", + "automake", + "gcc13", + "git", + "gnu-make", + "libtool", + "patch", + "pkg-config", + "pkgar", + "sed", + "wget", +] diff --git a/recipes/wip/libs/other/libtool/recipe.toml b/recipes/wip/libs/other/libtool/recipe.toml index 9086e63c..4788b7a5 100644 --- a/recipes/wip/libs/other/libtool/recipe.toml +++ b/recipes/wip/libs/other/libtool/recipe.toml @@ -1,5 +1,14 @@ -#TODO finish libtool setup +#TODO can build, not tested [source] -tar = "https://ftpmirror.gnu.org/libtool/libtool-2.5.4.tar.gz" +git = "https://gitlab.redox-os.org/redox-os/libtool" +branch = "v2.5.4-redox" +shallow_clone = true +script = """ +./bootstrap \ + --skip-po \ + --force \ + --gnulib-srcdir=./gnulib +""" + [build] template = "configure" diff --git a/repo.sh b/repo.sh index f2458005..ddc0e779 100755 --- a/repo.sh +++ b/repo.sh @@ -26,9 +26,9 @@ do fi done -target/release/cook $COOK_OPT $recipes +cook $COOK_OPT $recipes repo="$ROOT/repo/$TARGET" mkdir -p "$repo" -target/release/repo_builder "$repo" $recipes +repo_builder "$repo" $recipes diff --git a/src/bin/cook.rs b/src/bin/cook.rs index a5d60997..945df17d 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -17,7 +17,7 @@ use std::{ use termion::{color, style}; use walkdir::{DirEntry, WalkDir}; -use cookbook::WALK_DEPTH; +use cookbook::{is_redox, WALK_DEPTH}; fn remove_all(path: &Path) -> Result<(), String> { if path.is_dir() { @@ -417,8 +417,9 @@ fn fetch(recipe_dir: &Path, source: &Option) -> Result bool { + true +} + +#[cfg(not(target_os = "redox"))] +pub fn is_redox() -> bool { + false +} diff --git a/unfetch.sh b/unfetch.sh index 6763ff82..ba273e87 100755 --- a/unfetch.sh +++ b/unfetch.sh @@ -5,14 +5,14 @@ source config.sh if [ $# = 0 ] then - recipes="$(target/release/list_recipes --short)" + recipes="$(list_recipes --short)" else recipes="$@" fi for recipe_name in $recipes do - recipe_path=`target/release/find_recipe $recipe_name` + recipe_path=`find_recipe $recipe_name` echo -e "\033[01;38;5;215mcook - unfetch $recipe_name\033[0m" rm -rfv "$recipe_path"/source "$recipe_path"/source.tar From a13d17f4e6c60c57e88e64a14a89373874e5f589 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sat, 13 Sep 2025 15:12:17 +0000 Subject: [PATCH 2813/3180] Use forked wasmtime --- recipes/wip/dev/wasm/wasmtime/recipe.toml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/recipes/wip/dev/wasm/wasmtime/recipe.toml b/recipes/wip/dev/wasm/wasmtime/recipe.toml index a8f9539c..ed1295bb 100644 --- a/recipes/wip/dev/wasm/wasmtime/recipe.toml +++ b/recipes/wip/dev/wasm/wasmtime/recipe.toml @@ -1,5 +1,9 @@ -#TODO fs-set-times crate error +#TODO requires *at functions in fcntl.h +#TODO (willnode) push changes upstream [source] -git = "https://github.com/bytecodealliance/wasmtime" +git = "https://github.com/willnode/wasmtime" +branch = "v36-redox" +shallow_clone = true + [build] template = "cargo" From f5ea670b2a0f2a8ce876c87072f4423ec8e3e8b0 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sun, 14 Sep 2025 10:23:50 +0000 Subject: [PATCH 2814/3180] Patch libarchive temporarily --- recipes/libs/libarchive/recipe.toml | 3 +++ recipes/libs/libarchive/redox.patch | 13 +++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 recipes/libs/libarchive/redox.patch diff --git a/recipes/libs/libarchive/recipe.toml b/recipes/libs/libarchive/recipe.toml index b5686e0b..033f271e 100644 --- a/recipes/libs/libarchive/recipe.toml +++ b/recipes/libs/libarchive/recipe.toml @@ -1,6 +1,9 @@ [source] tar = "https://libarchive.org/downloads/libarchive-3.6.2.tar.xz" blake3 = "f98695fe81235a74fa3fc2c3ba0f0d4f13ea15f9be3850b83e304cf5d78be710" +patches = [ + "redox.patch" +] [build] template = "configure" diff --git a/recipes/libs/libarchive/redox.patch b/recipes/libs/libarchive/redox.patch new file mode 100644 index 00000000..de545f29 --- /dev/null +++ b/recipes/libs/libarchive/redox.patch @@ -0,0 +1,13 @@ +diff -ruwN source/configure source-new/configure +--- source/configure 2022-12-09 20:38:47.000000000 +0700 ++++ source-new/configure 2025-09-14 17:17:50.138530195 +0700 +@@ -19039,7 +19039,8 @@ + ac_fn_c_check_func "$LINENO" "fstatat" "ac_cv_func_fstatat" + if test "x$ac_cv_func_fstatat" = xyes + then : +- printf "%s\n" "#define HAVE_FSTATAT 1" >>confdefs.h ++# When fstatat works, remove this patch ++# printf "%s\n" "#define HAVE_FSTATAT 1" >>confdefs.h + + fi + ac_fn_c_check_func "$LINENO" "fstatfs" "ac_cv_func_fstatfs" From 9c1d20d27b27243d548656e959802285def8e89d Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sun, 14 Sep 2025 13:42:01 +0000 Subject: [PATCH 2815/3180] Port valkey --- recipes/wip/dev/other/valkey/recipe.toml | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/recipes/wip/dev/other/valkey/recipe.toml b/recipes/wip/dev/other/valkey/recipe.toml index ec17f5de..30c25192 100644 --- a/recipes/wip/dev/other/valkey/recipe.toml +++ b/recipes/wip/dev/other/valkey/recipe.toml @@ -1,6 +1,19 @@ -#TODO Missing script for "make", see https://github.com/valkey-io/valkey#building-valkey +#TODO Compiling, server crashes in page fault [source] git = "https://github.com/valkey-io/valkey" -rev = "26388270f197bce84817eea0a73d687d58442654" +rev = "a47e8fa1505578d78cef5c5e11da0972c3dae560" # 8.1.3 + [build] template = "custom" +dependencies = [ + "openssl1" +] + +script = """ +rsync -av --delete "${COOKBOOK_SOURCE}"/* ./ +${COOKBOOK_MAKE} MALLOC=libc BUILD_TLS=yes \ + WARN="-Wall -W -Wno-missing-field-initializers" \ + WARNINGS="-Wall -W -Wno-missing-field-initializers" \ + AR="${TARGET}-gcc-ar" +${COOKBOOK_MAKE} install PREFIX="${COOKBOOK_STAGE}"/usr +""" From c22f422720869b2fffc8a3cb73d2bcf241b29953 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 15 Sep 2025 06:36:55 -0300 Subject: [PATCH 2816/3180] Add recipes --- recipes/wip/edu/bibiman/recipe.toml | 5 +++++ recipes/wip/games/space/outfly/recipe.toml | 5 +++++ recipes/wip/net/analysis/rkik/recipe.toml | 5 +++++ recipes/wip/net/monitor/rustnet/recipe.toml | 8 ++++++++ recipes/wip/net/remote/ssh-portfolio/recipe.toml | 6 ++++++ recipes/wip/players/recordbox/recipe.toml | 14 ++++++++++++++ recipes/wip/sound/auditorium/recipe.toml | 10 ++++++++++ recipes/wip/sound/tek/recipe.toml | 5 +++++ recipes/wip/terminal/desktop-tui/recipe.toml | 5 +++++ recipes/wip/terminal/envx/recioe.toml | 5 +++++ recipes/wip/tools/dotter/recipe.toml | 5 +++++ 11 files changed, 73 insertions(+) create mode 100644 recipes/wip/edu/bibiman/recipe.toml create mode 100644 recipes/wip/games/space/outfly/recipe.toml create mode 100644 recipes/wip/net/analysis/rkik/recipe.toml create mode 100644 recipes/wip/net/monitor/rustnet/recipe.toml create mode 100644 recipes/wip/net/remote/ssh-portfolio/recipe.toml create mode 100644 recipes/wip/players/recordbox/recipe.toml create mode 100644 recipes/wip/sound/auditorium/recipe.toml create mode 100644 recipes/wip/sound/tek/recipe.toml create mode 100644 recipes/wip/terminal/desktop-tui/recipe.toml create mode 100644 recipes/wip/terminal/envx/recioe.toml create mode 100644 recipes/wip/tools/dotter/recipe.toml diff --git a/recipes/wip/edu/bibiman/recipe.toml b/recipes/wip/edu/bibiman/recipe.toml new file mode 100644 index 00000000..29cbe8f5 --- /dev/null +++ b/recipes/wip/edu/bibiman/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://codeberg.org/lukeflo/bibiman" +[build] +template = "cargo" diff --git a/recipes/wip/games/space/outfly/recipe.toml b/recipes/wip/games/space/outfly/recipe.toml new file mode 100644 index 00000000..a5bd5537 --- /dev/null +++ b/recipes/wip/games/space/outfly/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://codeberg.org/outfly/outfly" +[build] +template = "cargo" diff --git a/recipes/wip/net/analysis/rkik/recipe.toml b/recipes/wip/net/analysis/rkik/recipe.toml new file mode 100644 index 00000000..c571577a --- /dev/null +++ b/recipes/wip/net/analysis/rkik/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/aguacero7/rkik" +[build] +template = "cargo" diff --git a/recipes/wip/net/monitor/rustnet/recipe.toml b/recipes/wip/net/monitor/rustnet/recipe.toml new file mode 100644 index 00000000..6ab852ff --- /dev/null +++ b/recipes/wip/net/monitor/rustnet/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/domcyrus/rustnet" +[build] +template = "cargo" +dependencies = [ + "libpcap", +] diff --git a/recipes/wip/net/remote/ssh-portfolio/recipe.toml b/recipes/wip/net/remote/ssh-portfolio/recipe.toml new file mode 100644 index 00000000..5babdd7c --- /dev/null +++ b/recipes/wip/net/remote/ssh-portfolio/recipe.toml @@ -0,0 +1,6 @@ +#TODO not compiled or tested +# require nerdfonts +[source] +git = "https://github.com/CompeyDev/ssh-portfolio" +[build] +template = "cargo" diff --git a/recipes/wip/players/recordbox/recipe.toml b/recipes/wip/players/recordbox/recipe.toml new file mode 100644 index 00000000..4cb5b8a8 --- /dev/null +++ b/recipes/wip/players/recordbox/recipe.toml @@ -0,0 +1,14 @@ +#TODO missing dependencies +[source] +git = "https://codeberg.org/edestcroix/Recordbox" +[build] +template = "custom" +dependencies = [ + "sqlite3", + "gtk4", + "glib", + "libadwaita", + "liblcms", + "gstreamer", +] +script = "DYNAMIC_INIT cookbook_cargo" diff --git a/recipes/wip/sound/auditorium/recipe.toml b/recipes/wip/sound/auditorium/recipe.toml new file mode 100644 index 00000000..c61a775f --- /dev/null +++ b/recipes/wip/sound/auditorium/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/nate-craft/auditorium" +[build] +template = "cargo" +[package] +dependencies = [ + "mpv", + "ffmpeg6", +] diff --git a/recipes/wip/sound/tek/recipe.toml b/recipes/wip/sound/tek/recipe.toml new file mode 100644 index 00000000..fa7b1da6 --- /dev/null +++ b/recipes/wip/sound/tek/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://codeberg.org/unspeaker/tek" +[build] +template = "cargo" diff --git a/recipes/wip/terminal/desktop-tui/recipe.toml b/recipes/wip/terminal/desktop-tui/recipe.toml new file mode 100644 index 00000000..426f28d7 --- /dev/null +++ b/recipes/wip/terminal/desktop-tui/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Julien-cpsn/desktop-tui" +[build] +template = "cargo" diff --git a/recipes/wip/terminal/envx/recioe.toml b/recipes/wip/terminal/envx/recioe.toml new file mode 100644 index 00000000..0f187a55 --- /dev/null +++ b/recipes/wip/terminal/envx/recioe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/mikeleppane/envx" +[build] +template = "cargo" diff --git a/recipes/wip/tools/dotter/recipe.toml b/recipes/wip/tools/dotter/recipe.toml new file mode 100644 index 00000000..c3bcede2 --- /dev/null +++ b/recipes/wip/tools/dotter/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/SuperCuber/dotter" +[build] +template = "cargo" From 97bab15d692d7c38d9a6a3085118433f253825e5 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Mon, 15 Sep 2025 18:31:53 +0000 Subject: [PATCH 2817/3180] Add gnu-binutils as depedency of gcc13 --- recipes/dev/gcc13/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/recipes/dev/gcc13/recipe.toml b/recipes/dev/gcc13/recipe.toml index 312eb6eb..6b61540b 100644 --- a/recipes/dev/gcc13/recipe.toml +++ b/recipes/dev/gcc13/recipe.toml @@ -40,3 +40,8 @@ ln -s "gcc" "${COOKBOOK_STAGE}/usr/bin/cc" # Avoid conflict with libgcc & libstdcxx rm -f "${COOKBOOK_STAGE}"/usr/lib/libgcc_s.so* "${COOKBOOK_STAGE}"/usr/lib/libstdc++.so* """ + +[package] +dependencies = [ + "gnu-binutils" +] From 43720fd297fdcb79a918a7baea15b8d88cab5950 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Mon, 15 Sep 2025 20:04:42 +0000 Subject: [PATCH 2818/3180] Port nginx --- recipes/wip/net/http/nginx/recipe.toml | 61 +++++++++++++++++++++-- recipes/wip/net/http/nginx/redox.patch | 68 ++++++++++++++++++++++++++ 2 files changed, 126 insertions(+), 3 deletions(-) create mode 100644 recipes/wip/net/http/nginx/redox.patch diff --git a/recipes/wip/net/http/nginx/recipe.toml b/recipes/wip/net/http/nginx/recipe.toml index 26da4eee..da416dca 100644 --- a/recipes/wip/net/http/nginx/recipe.toml +++ b/recipes/wip/net/http/nginx/recipe.toml @@ -1,5 +1,60 @@ -#TODO Compilation error +#TODO Compiling, got some C issues on init [source] -tar = "https://nginx.org/download/nginx-1.26.0.tar.gz" +tar = "https://nginx.org/download/nginx-1.28.0.tar.gz" +patches = [ + "redox.patch" +] + [build] -template = "configure" +template = "custom" +dependencies = [ + "pcre", + "openssl1", + "zlib", +] +script = """ +DYNAMIC_INIT +rsync -av --delete "${COOKBOOK_SOURCE}"/* ./ +ARCH="${TARGET%%-*}" +COOKBOOK_CONFIGURE_FLAGS=( + --crossbuild=Redox:$ARCH + --with-cc="$CC" + --with-cc-opt="$CFLAGS" + --with-ld-opt="$LDFLAGS" + --sbin-path=/usr/bin/nginx + --modules-path=/usr/lib/nginx/modules + --conf-path=/etc/nginx/nginx.conf + --error-log-path=/var/log/nginx/error.log + --http-log-path=/var/log/nginx/access.log + --http-client-body-temp-path=/var/lib/nginx/body + --http-proxy-temp-path=/var/lib/nginx/proxy + --http-fastcgi-temp-path=/var/lib/nginx/fastcgi + --http-uwsgi-temp-path=/var/lib/nginx/uwsgi + --http-scgi-temp-path=/var/lib/nginx/scgi + --pid-path=/var/run/nginx.pid + --lock-path=/var/lock/nginx.lock + --user=nginx + --group=nginx + --with-compat + --with-debug + --with-pcre + --with-pcre-jit + --with-stream + --with-stream_realip_module + --with-stream_ssl_module + --with-stream_ssl_preread_module + --with-threads + --with-http_ssl_module + --with-http_v2_module + --with-http_realip_module + --with-http_gzip_static_module + --with-http_stub_status_module + --with-http_addition_module +) + +unset AR AS CC CXX LD LDFLAGS NM OBJCOPY OBJDUMP RANLIB READELF RUSTFLAGS STRIP + +cookbook_configure + +mkdir -p "$COOKBOOK_STAGE"/var/lib/nginx/{body,proxy,fastcgi,uwsgi,scgi} +""" diff --git a/recipes/wip/net/http/nginx/redox.patch b/recipes/wip/net/http/nginx/redox.patch new file mode 100644 index 00000000..df14d2f4 --- /dev/null +++ b/recipes/wip/net/http/nginx/redox.patch @@ -0,0 +1,68 @@ +diff --color -ruwN source/auto/feature source-new/auto/feature +--- source/auto/feature 2025-04-23 18:48:54.000000000 +0700 ++++ source-new/auto/feature 2025-09-16 02:23:35.565899342 +0700 +@@ -53,7 +57,7 @@ + + yes) + # /bin/sh is used to intercept "Killed" or "Abort trap" messages +- if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then ++ #if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then + echo " found" + ngx_found=yes + +@@ -61,9 +65,9 @@ + have=$ngx_have_feature . auto/have + fi + +- else +- echo " found but is not working" +- fi ++ #else ++ # echo " found but is not working" ++ #fi + ;; + + value) +diff --color -ruwN source/auto/types/sizeof source-new/auto/types/sizeof +--- source/auto/types/sizeof 2025-04-23 18:48:54.000000000 +0700 ++++ source-new/auto/types/sizeof 2025-09-16 02:38:57.979145501 +0700 +@@ -33,7 +33,7 @@ + END + + +-ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \ ++ngx_test="gcc $CC_TEST_FLAGS $CC_AUX_FLAGS \ + -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs" + + eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1" +diff --color -ruwN source/auto/types/typedef source-new/auto/types/typedef +--- source/auto/types/typedef 2025-04-23 18:48:54.000000000 +0700 ++++ source-new/auto/types/typedef 2025-09-16 02:38:54.927091443 +0700 +@@ -34,7 +34,7 @@ + + END + +- ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \ ++ ngx_test="gcc $CC_TEST_FLAGS $CC_AUX_FLAGS \ + -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs" + + eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1" +diff --color -ruwN source/src/os/unix/ngx_process.c source-new/src/os/unix/ngx_process.c +--- source/src/os/unix/ngx_process.c 2025-04-23 18:48:54.000000000 +0700 ++++ source-new/src/os/unix/ngx_process.c 2025-09-16 02:40:44.363029726 +0700 +@@ -143,6 +143,7 @@ + } + + on = 1; ++ /* + if (ioctl(ngx_processes[s].channel[0], FIOASYNC, &on) == -1) { + ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno, + "ioctl(FIOASYNC) failed while spawning \"%s\"", name); +@@ -156,6 +157,7 @@ + ngx_close_channel(ngx_processes[s].channel, cycle->log); + return NGX_INVALID_PID; + } ++ */ + + if (fcntl(ngx_processes[s].channel[0], F_SETFD, FD_CLOEXEC) == -1) { + ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno, From aea5413b0872ad97af8cce0f29b5b4e5151ef412 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Tue, 16 Sep 2025 07:54:38 +0700 Subject: [PATCH 2819/3180] Port PHP --- recipes/wip/dev/lang/php/recipe.toml | 11 ---- recipes/wip/dev/lang/php84/recipe.toml | 60 ++++++++++++++++++++ recipes/wip/dev/lang/php84/redox.patch | 42 ++++++++++++++ recipes/wip/libs/archives/libzip/recipe.toml | 19 +------ recipes/wip/libs/other/libonig/recipe.toml | 9 +++ recipes/wip/libs/other/termcap/recipe.toml | 10 +++- 6 files changed, 121 insertions(+), 30 deletions(-) delete mode 100644 recipes/wip/dev/lang/php/recipe.toml create mode 100644 recipes/wip/dev/lang/php84/recipe.toml create mode 100644 recipes/wip/dev/lang/php84/redox.patch create mode 100644 recipes/wip/libs/other/libonig/recipe.toml diff --git a/recipes/wip/dev/lang/php/recipe.toml b/recipes/wip/dev/lang/php/recipe.toml deleted file mode 100644 index b82e6f59..00000000 --- a/recipes/wip/dev/lang/php/recipe.toml +++ /dev/null @@ -1,11 +0,0 @@ -#TODO can't detect libiconv -# in case of problems, read https://www.php.net/manual/en/install.unix.php -[source] -tar = "https://www.php.net/distributions/php-8.3.0.tar.xz" -[build] -template = "configure" -dependencies = [ - "libxml2", - "sqlite3", - "libiconv", -] diff --git a/recipes/wip/dev/lang/php84/recipe.toml b/recipes/wip/dev/lang/php84/recipe.toml new file mode 100644 index 00000000..c004b5ef --- /dev/null +++ b/recipes/wip/dev/lang/php84/recipe.toml @@ -0,0 +1,60 @@ +#TODO fix readline and openssl +[source] +tar = "https://www.php.net/distributions/php-8.4.12.tar.xz" +patches = [ + "redox.patch" +] + +[build] +template = "custom" +dependencies = [ + "curl", + "libffi", + "libgmp", + "libavif", + "libjpeg", +# "libedit", + "libonig", + "libpng", + "libwebp", + "libxml2", + "libzip", +# "ncurses", + "nghttp2", + "openssl1", + "pcre", +# "readline", + "sqlite3", + "xz", + "zlib", +] +script = """ +DYNAMIC_INIT +# extension stuff +export CURL_LIBS="-lcurl -lnghttp2 -lssl -lcrypto" +#export READLINE_DIR="${COOKBOOK_SYSROOT}/usr" +COOKBOOK_CONFIGURE_FLAGS+=( + --without-iconv + --disable-phar + --disable-opcache + --enable-gd + --with-curl + --with-gmp + --with-jpeg + --with-webp + --with-avif + --with-ffi + --with-intl + --with-mbstring +# --with-libedit +# --with-readline +# --with-openssl + --with-zip +) + +"${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" "$@" +"${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" +"${COOKBOOK_MAKE}" install \ + INSTALL_ROOT="${COOKBOOK_STAGE}" \ + datarootdir=/usr/share localstatedir=/var +""" diff --git a/recipes/wip/dev/lang/php84/redox.patch b/recipes/wip/dev/lang/php84/redox.patch new file mode 100644 index 00000000..eed8d116 --- /dev/null +++ b/recipes/wip/dev/lang/php84/redox.patch @@ -0,0 +1,42 @@ +diff --color -ruwN source/configure source-new/configure +--- source/configure 2025-08-26 20:36:28.000000000 +0700 ++++ source-new/configure 2025-09-16 07:44:46.452670941 +0700 +@@ -25863,7 +25863,7 @@ + then : + ac_cv_lib_curl_curl_easy_perform=yes + else case e in #( +- e) ac_cv_lib_curl_curl_easy_perform=no ;; ++ e) ac_cv_lib_curl_curl_easy_perform=yes ;; + esac + fi + rm -f core conftest.err conftest.$ac_objext conftest.beam \ +@@ -37356,7 +37356,7 @@ + then : + php_cv_lib_gd_works=yes + else case e in #( +- e) php_cv_lib_gd_works=no ;; ++ e) php_cv_lib_gd_works=yes ;; + esac + fi + rm -f core conftest.err conftest.$ac_objext conftest.beam \ +@@ -40056,7 +40056,7 @@ + LIBS_SAVED=$LIBS + CFLAGS="$CFLAGS $GMP_CFLAGS" + LIBS="$LIBS $GMP_LIBS" +- gmp_check=no ++ gmp_check=yes + ac_fn_c_check_header_compile "$LINENO" "gmp.h" "ac_cv_header_gmp_h" "$ac_includes_default" + if test "x$ac_cv_header_gmp_h" = xyes + then : +diff --color -ruwN source/ext/posix/posix.c source-new/ext/posix/posix.c +--- source/ext/posix/posix.c 2025-08-26 20:36:28.000000000 +0700 ++++ source-new/ext/posix/posix.c 2025-09-16 07:02:03.974662569 +0700 +@@ -375,7 +375,7 @@ + + ZEND_PARSE_PARAMETERS_NONE(); + +- if ((ticks = times(&t)) == -1) { ++ { + POSIX_G(last_error) = errno; + RETURN_FALSE; + } diff --git a/recipes/wip/libs/archives/libzip/recipe.toml b/recipes/wip/libs/archives/libzip/recipe.toml index afe9a840..4e7ec064 100644 --- a/recipes/wip/libs/archives/libzip/recipe.toml +++ b/recipes/wip/libs/archives/libzip/recipe.toml @@ -1,23 +1,8 @@ -#TODO maybe incomplete script, see https://github.com/nih-at/libzip/blob/main/INSTALL.md +#TODO Promote [source] tar = "https://libzip.org/download/libzip-1.10.1.tar.gz" [build] -template = "custom" +template = "cmake" dependencies = [ "zlib", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/libs/other/libonig/recipe.toml b/recipes/wip/libs/other/libonig/recipe.toml new file mode 100644 index 00000000..9633af05 --- /dev/null +++ b/recipes/wip/libs/other/libonig/recipe.toml @@ -0,0 +1,9 @@ +[source] +git = "https://github.com/kkos/oniguruma" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +template = "configure" diff --git a/recipes/wip/libs/other/termcap/recipe.toml b/recipes/wip/libs/other/termcap/recipe.toml index d63ea82f..f68cd7fa 100644 --- a/recipes/wip/libs/other/termcap/recipe.toml +++ b/recipes/wip/libs/other/termcap/recipe.toml @@ -1,5 +1,11 @@ -#TODO non-sense "permission denied" error +#TODO need testing [source] tar = "https://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz" [build] -template = "configure" +template = "custom" +script = """ +COOKBOOK_CONFIGURE_FLAGS+=( + --prefix="${COOKBOOK_STAGE}/usr" +) +cookbook_configure +""" \ No newline at end of file From b9d3ea3837fd4cfb7839ae2ac95f2130980abe9d Mon Sep 17 00:00:00 2001 From: Wildan M Date: Tue, 16 Sep 2025 13:37:39 +0700 Subject: [PATCH 2820/3180] Use luajit to compile lua --- recipes/wip/libs/lua/lpeg/recipe.toml | 4 +- .../wip/libs/other/tree-sitter/recipe.toml | 4 ++ .../wip/libs/other/tree-sitter/redox.patch | 45 +++++++++++++++++++ recipes/wip/text/neovim/recipe.toml | 14 +++++- 4 files changed, 63 insertions(+), 4 deletions(-) create mode 100644 recipes/wip/libs/other/tree-sitter/redox.patch diff --git a/recipes/wip/libs/lua/lpeg/recipe.toml b/recipes/wip/libs/lua/lpeg/recipe.toml index 2f9fd413..094d9b13 100644 --- a/recipes/wip/libs/lua/lpeg/recipe.toml +++ b/recipes/wip/libs/lua/lpeg/recipe.toml @@ -4,11 +4,11 @@ tar = "https://www.inf.puc-rio.br/~roberto/lpeg/lpeg-1.1.0.tar.gz" [build] template = "custom" dependencies = [ - "lua54", + "luajit", ] script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ -make linux +make linux CC="${CC} -I${COOKBOOK_SYSROOT}/include/luajit-2.1" mkdir -p ${COOKBOOK_STAGE}/usr/lib cp *.so ${COOKBOOK_STAGE}/usr/lib """ \ No newline at end of file diff --git a/recipes/wip/libs/other/tree-sitter/recipe.toml b/recipes/wip/libs/other/tree-sitter/recipe.toml index 63295a44..e5507e3e 100644 --- a/recipes/wip/libs/other/tree-sitter/recipe.toml +++ b/recipes/wip/libs/other/tree-sitter/recipe.toml @@ -1,9 +1,13 @@ [source] tar = "https://github.com/tree-sitter/tree-sitter/archive/refs/tags/v0.25.8.tar.gz" +patches = [ + "redox.patch" +] [build] template = "custom" script = """ DYNAMIC_INIT PACKAGE_PATH=cli cookbook_cargo +cookbook_cmake "${COOKBOOK_SOURCE}"/lib """ diff --git a/recipes/wip/libs/other/tree-sitter/redox.patch b/recipes/wip/libs/other/tree-sitter/redox.patch new file mode 100644 index 00000000..62c28d13 --- /dev/null +++ b/recipes/wip/libs/other/tree-sitter/redox.patch @@ -0,0 +1,45 @@ +diff --color -ruwN source/Cargo.toml source-new/Cargo.toml +--- source/Cargo.toml 2025-07-14 01:32:42.000000000 +0700 ++++ source-new/Cargo.toml 2025-09-16 11:37:28.820646655 +0700 +@@ -118,7 +118,7 @@ + dialoguer = { version = "0.11.0", features = ["fuzzy-select"] } + etcetera = "0.8.0" + filetime = "0.2.25" +-fs4 = "0.12.0" ++fs4 = { git = "https://github.com/al8n/fs4-rs" } # for redox support, still not published yet + git2 = "0.20.0" + glob = "0.3.2" + heck = "0.5.0" +@@ -151,7 +151,7 @@ + url = { version = "2.5.4", features = ["serde"] } + walkdir = "2.5.0" + wasmparser = "0.224.0" +-webbrowser = "1.0.3" ++webbrowser = "1.0.5" + + tree-sitter = { version = "0.25.1", path = "./lib" } + tree-sitter-generate = { version = "0.25.1", path = "./cli/generate" } +diff --color -ruwN source/cli/src/fuzz/allocations.rs source-new/cli/src/fuzz/allocations.rs +--- source/cli/src/fuzz/allocations.rs 2025-07-14 01:32:42.000000000 +0700 ++++ source-new/cli/src/fuzz/allocations.rs 2025-09-16 11:39:56.112458323 +0700 +@@ -7,6 +7,7 @@ + }, + }; + ++#[cfg(not(target_os = "redox"))] + #[ctor::ctor] + unsafe fn initialize_allocation_recording() { + tree_sitter::set_allocator( +diff --color -ruwN source/lib/src/portable/endian.h source-new/lib/src/portable/endian.h +--- source/lib/src/portable/endian.h 2025-07-14 01:32:42.000000000 +0700 ++++ source-new/lib/src/portable/endian.h 2025-09-16 11:27:12.315211556 +0700 +@@ -24,7 +24,8 @@ + defined(__CYGWIN__) || \ + defined(__MSYS__) || \ + defined(__EMSCRIPTEN__) || \ +- defined(__wasi__) ++ defined(__wasi__) || \ ++ defined(__redox__) + + #if defined(__NetBSD__) + #define _NETBSD_SOURCE 1 diff --git a/recipes/wip/text/neovim/recipe.toml b/recipes/wip/text/neovim/recipe.toml index abd43b7b..f5e46fe2 100644 --- a/recipes/wip/text/neovim/recipe.toml +++ b/recipes/wip/text/neovim/recipe.toml @@ -3,11 +3,21 @@ tar = "https://github.com/neovim/neovim/archive/refs/tags/v0.11.3.tar.gz" [build] -template = "cmake" +template = "custom" dependencies = [ - "lua54", + "luajit", "libiconv", "libuv", "luv", "lpeg", + "tree-sitter", + "gettext", + "unibilium", + "utf8proc", ] +script = """ +DYNAMIC_INIT +cookbook_cmake \ + -DUSE_BUNDLED=1 \ + -DLUA_GEN_PRG=luajit +""" From 4c35a8fa679058f4b999465ac2f5e5e94227e673 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Tue, 16 Sep 2025 14:10:55 +0700 Subject: [PATCH 2821/3180] Use luajit in luv --- recipes/libs/luv/recipe.toml | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/recipes/libs/luv/recipe.toml b/recipes/libs/luv/recipe.toml index 2d8b0825..ed5a3b87 100644 --- a/recipes/libs/luv/recipe.toml +++ b/recipes/libs/luv/recipe.toml @@ -3,25 +3,15 @@ git = "https://github.com/luvit/luv.git" [build] template = "custom" dependencies = [ - "lua54", "libuv", - "lua-compat-53" + "luajit" ] script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DBUILD_MODULE=OFF - -DBUILD_STATIC_LIBS=ON - -DWITH_SHARED_LIBUV=ON - -DWITH_LUA_ENGINE=Lua +DYNAMIC_INIT +COOKBOOK_CMAKE_FLAGS+=( + -DWITH_LUA_ENGINE=Luajit -DLUA_BUILD_TYPE=System - -DLUA_COMPAT53_DIR="${COOKBOOK_SYSROOT}/bin" - -DCMAKE_BUILD_TYPE=RelWithDebInfo - -DLIBUV_LIBRARIES="${COOKBOOK_SYSROOT}/usr/lib/libuv.a" - -DLIBUV_INCLUDE_DIR="${COOKBOOK_SYSROOT}/usr/include" - -DLUA_INCLUDE_DIR="${COOKBOOK_SYSROOT}/include" - -DLUV_INCLUDE_DIR="${COOKBOOK_SYSROOT}/include" -"${COOKBOOK_SOURCE}" + -DWITH_SHARED_LIBUV=On ) -cookbook_configure +cookbook_cmake """ From fb1fdb5e9a79377477ecec4e3b742e5695ca8fb8 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Tue, 16 Sep 2025 16:28:04 +0700 Subject: [PATCH 2822/3180] Neovim can compile now --- recipes/wip/libs/lua/lpeg/recipe.toml | 5 +++-- recipes/wip/text/neovim/recipe.toml | 8 ++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/recipes/wip/libs/lua/lpeg/recipe.toml b/recipes/wip/libs/lua/lpeg/recipe.toml index 094d9b13..484e5b3a 100644 --- a/recipes/wip/libs/lua/lpeg/recipe.toml +++ b/recipes/wip/libs/lua/lpeg/recipe.toml @@ -9,6 +9,7 @@ dependencies = [ script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ make linux CC="${CC} -I${COOKBOOK_SYSROOT}/include/luajit-2.1" -mkdir -p ${COOKBOOK_STAGE}/usr/lib -cp *.so ${COOKBOOK_STAGE}/usr/lib +mkdir -p ${COOKBOOK_STAGE}/usr/lib/pkgconfig +cp lpeg.so ${COOKBOOK_STAGE}/usr/lib/liblpeg.so.1 +ln -s "liblpeg.so.1" ${COOKBOOK_STAGE}/usr/lib/liblpeg.so """ \ No newline at end of file diff --git a/recipes/wip/text/neovim/recipe.toml b/recipes/wip/text/neovim/recipe.toml index f5e46fe2..c521fd34 100644 --- a/recipes/wip/text/neovim/recipe.toml +++ b/recipes/wip/text/neovim/recipe.toml @@ -1,4 +1,4 @@ -#TODO probably wrong script, see https://github.com/neovim/neovim/wiki/Installing-Neovim#install-from-source +#TODO mostly work, kinda slow, can't quit (signal issues?) [source] tar = "https://github.com/neovim/neovim/archive/refs/tags/v0.11.3.tar.gz" @@ -18,6 +18,10 @@ dependencies = [ script = """ DYNAMIC_INIT cookbook_cmake \ - -DUSE_BUNDLED=1 \ -DLUA_GEN_PRG=luajit + +# Lpeg is absolute path https://github.com/neovim/neovim/issues/23395 +patchelf --replace-needed \ + "${COOKBOOK_SYSROOT}/usr/lib/liblpeg.so" \ + 'liblpeg.so.1' ${COOKBOOK_STAGE}/usr/bin/nvim """ From b9989ce494d82a7a2c77fc46088fb28cebe11597 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Tue, 16 Sep 2025 16:30:46 +0700 Subject: [PATCH 2823/3180] Add patches --- recipes/wip/text/neovim/recipe.toml | 3 + recipes/wip/text/neovim/redox.patch | 141 ++++++++++++++++++++++++++++ 2 files changed, 144 insertions(+) create mode 100644 recipes/wip/text/neovim/redox.patch diff --git a/recipes/wip/text/neovim/recipe.toml b/recipes/wip/text/neovim/recipe.toml index c521fd34..8978c7ed 100644 --- a/recipes/wip/text/neovim/recipe.toml +++ b/recipes/wip/text/neovim/recipe.toml @@ -1,6 +1,9 @@ #TODO mostly work, kinda slow, can't quit (signal issues?) [source] tar = "https://github.com/neovim/neovim/archive/refs/tags/v0.11.3.tar.gz" +patches = [ + "redox.patch" +] [build] template = "custom" diff --git a/recipes/wip/text/neovim/redox.patch b/recipes/wip/text/neovim/redox.patch new file mode 100644 index 00000000..30b3f722 --- /dev/null +++ b/recipes/wip/text/neovim/redox.patch @@ -0,0 +1,141 @@ +diff -ruwN source/runtime/CMakeLists.txt source-new/runtime/CMakeLists.txt +--- source/runtime/CMakeLists.txt 2025-07-13 01:34:12.000000000 +0700 ++++ source-new/runtime/CMakeLists.txt 2025-09-16 14:46:20.134790482 +0700 +@@ -24,37 +24,6 @@ + + file(GLOB PACKAGES CONFIGURE_DEPENDS ${PROJECT_SOURCE_DIR}/runtime/pack/dist/opt/*) + +-set(GENERATED_PACKAGE_TAGS) +-foreach(PACKAGE ${PACKAGES}) +- get_filename_component(PACKNAME ${PACKAGE} NAME) +- file(GLOB "${PACKNAME}_DOC_FILES" CONFIGURE_DEPENDS ${PACKAGE}/doc/*.txt) +- if(${PACKNAME}_DOC_FILES) +- file(MAKE_DIRECTORY ${GENERATED_PACKAGE_DIR}/${PACKNAME}) +- add_custom_command(OUTPUT "${GENERATED_PACKAGE_DIR}/${PACKNAME}/doc/tags" +- COMMAND ${CMAKE_COMMAND} -E copy_directory +- ${PACKAGE} ${GENERATED_PACKAGE_DIR}/${PACKNAME} +- COMMAND $ +- -u NONE -i NONE -e --headless -c "helptags doc" -c quit +- DEPENDS +- nvim_bin +- nvim_runtime_deps +- WORKING_DIRECTORY "${GENERATED_PACKAGE_DIR}/${PACKNAME}" +- ) +- +- set("${PACKNAME}_DOC_NAMES") +- foreach(DF "${${PACKNAME}_DOC_FILES}") +- get_filename_component(F ${DF} NAME) +- list(APPEND "${PACKNAME}_DOC_NAMES" ${GENERATED_PACKAGE_DIR}/${PACKNAME}/doc/${F}) +- endforeach() +- +- install_helper( +- FILES ${GENERATED_PACKAGE_DIR}/${PACKNAME}/doc/tags "${${PACKNAME}_DOC_NAMES}" +- DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/nvim/runtime/pack/dist/opt/${PACKNAME}/doc) +- +- list(APPEND GENERATED_PACKAGE_TAGS "${GENERATED_PACKAGE_DIR}/${PACKNAME}/doc/tags") +- endif() +-endforeach() +- + set(BUILDDOCFILES) + foreach(DF ${DOCFILES}) + get_filename_component(F ${DF} NAME) +@@ -65,8 +34,6 @@ + COMMAND ${CMAKE_COMMAND} -E remove_directory doc + COMMAND ${CMAKE_COMMAND} -E copy_directory + ${PROJECT_SOURCE_DIR}/runtime/doc doc +- COMMAND $ +- -u NONE -i NONE -e --headless -c "helptags ++t doc" -c quit + DEPENDS + nvim_bin + nvim_runtime_deps +@@ -78,7 +45,6 @@ + DEPENDS + ${GENERATED_SYN_VIM} + ${GENERATED_HELP_TAGS} +- ${GENERATED_PACKAGE_TAGS} + ) + + # CMake is painful here. It will create the destination using the user's +@@ -88,10 +54,6 @@ + # If it's preexisting, leave it alone. + + install_helper( +- FILES ${GENERATED_HELP_TAGS} ${BUILDDOCFILES} +- DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/nvim/runtime/doc) +- +-install_helper( + FILES ${GENERATED_SYN_VIM} + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/nvim/runtime/syntax/vim) + +diff -ruwN source/src/nvim/channel.c source-new/src/nvim/channel.c +--- source/src/nvim/channel.c 2025-07-13 01:34:12.000000000 +0700 ++++ source-new/src/nvim/channel.c 2025-09-16 13:41:27.109978099 +0700 +@@ -547,8 +547,23 @@ + // Redirect stdout/stdin (the UI channel) to stderr. Use fnctl(F_DUPFD_CLOEXEC) instead of dup() + // to prevent child processes from inheriting the file descriptors, which are used by UIs to + // detect when Nvim exits. ++ #ifdef __redox__ ++ int new_stdin_fd = dup(STDIN_FILENO); ++ if (new_stdin_fd >= 0) { ++ fcntl(new_stdin_fd, F_SETFD, FD_CLOEXEC); ++ } ++ stdin_dup_fd = new_stdin_fd; ++ ++ // 2. Duplicate STDOUT and set CLOEXEC flag ++ int new_stdout_fd = dup(STDOUT_FILENO); ++ if (new_stdout_fd >= 0) { ++ fcntl(new_stdout_fd, F_SETFD, FD_CLOEXEC); ++ } ++ stdout_dup_fd = new_stdout_fd; ++ #else + stdin_dup_fd = fcntl(STDIN_FILENO, F_DUPFD_CLOEXEC, STDERR_FILENO + 1); + stdout_dup_fd = fcntl(STDOUT_FILENO, F_DUPFD_CLOEXEC, STDERR_FILENO + 1); ++ #endif // __redox__ + dup2(STDERR_FILENO, STDOUT_FILENO); + dup2(STDERR_FILENO, STDIN_FILENO); + } +diff -ruwN source/src/nvim/CMakeLists.txt source-new/src/nvim/CMakeLists.txt +--- source/src/nvim/CMakeLists.txt 2025-07-13 01:34:12.000000000 +0700 ++++ source-new/src/nvim/CMakeLists.txt 2025-09-16 16:07:40.327319085 +0700 +@@ -93,19 +93,6 @@ + endif() + + # -fstack-protector breaks Mingw-w64 builds +-if(NOT MINGW) +- check_c_compiler_flag(-fstack-protector-strong HAS_FSTACK_PROTECTOR_STRONG_FLAG) +- if(HAS_FSTACK_PROTECTOR_STRONG_FLAG) +- target_compile_options(main_lib INTERFACE -fstack-protector-strong) +- target_link_libraries(main_lib INTERFACE -fstack-protector-strong) +- else() +- check_c_compiler_flag(-fstack-protector HAS_FSTACK_PROTECTOR_FLAG) +- if(HAS_FSTACK_PROTECTOR_FLAG) +- target_compile_options(main_lib INTERFACE -fstack-protector --param ssp-buffer-size=4) +- target_link_libraries(main_lib INTERFACE -fstack-protector --param ssp-buffer-size=4) +- endif() +- endif() +-endif() + + # Compiler specific options + if(MSVC) +@@ -145,9 +132,6 @@ + # Platform specific options + if(UNIX) + target_link_libraries(main_lib INTERFACE m) +- if (NOT CMAKE_SYSTEM_NAME STREQUAL "SunOS") +- target_link_libraries(main_lib INTERFACE util) +- endif() + endif() + + if(CMAKE_SYSTEM_NAME MATCHES "Windows") +diff -ruwN source/src/nvim/os/os_defs.h source-new/src/nvim/os/os_defs.h +--- source/src/nvim/os/os_defs.h 2025-07-13 01:34:12.000000000 +0700 ++++ source-new/src/nvim/os/os_defs.h 2025-09-16 13:45:00.379142388 +0700 +@@ -28,6 +28,8 @@ + + #if !defined(NAME_MAX) && defined(_XOPEN_NAME_MAX) + # define NAME_MAX _XOPEN_NAME_MAX ++#elif !defined(NAME_MAX) ++# define NAME_MAX 255 + #endif + + #define BASENAMELEN (NAME_MAX - 5) From f38f5b716ebf4c3f08ab6410e967b14b1f466cee Mon Sep 17 00:00:00 2001 From: Wildan M Date: Tue, 16 Sep 2025 16:48:17 +0700 Subject: [PATCH 2824/3180] Add more libuv patches --- recipes/libs/libuv/redox.patch | 123 ++++++++++++++++++++++++++++++--- 1 file changed, 115 insertions(+), 8 deletions(-) diff --git a/recipes/libs/libuv/redox.patch b/recipes/libs/libuv/redox.patch index c3f0bf27..d5405adf 100644 --- a/recipes/libs/libuv/redox.patch +++ b/recipes/libs/libuv/redox.patch @@ -1,12 +1,12 @@ diff -ruwN source/CMakeLists.txt source-new/CMakeLists.txt --- source/CMakeLists.txt 2023-05-19 18:21:01.000000000 +0700 -+++ source-new/CMakeLists.txt 2025-07-22 01:48:56.591286953 +0700 ++++ source-new/CMakeLists.txt 2025-09-16 14:15:31.813140608 +0700 @@ -1,3 +1,4 @@ +set (CMAKE_CXX_STANDARD 99) cmake_minimum_required(VERSION 3.4) if(POLICY CMP0091) -@@ -312,6 +313,17 @@ +@@ -312,6 +313,18 @@ src/unix/hurd.c) endif() @@ -18,6 +18,7 @@ diff -ruwN source/CMakeLists.txt source-new/CMakeLists.txt + src/unix/proctitle.c + src/unix/posix-hrtime.c + src/unix/posix-poll.c ++ src/unix/redox.c + ) +endif() + @@ -26,7 +27,7 @@ diff -ruwN source/CMakeLists.txt source-new/CMakeLists.txt list(APPEND uv_libraries dl rt) diff -ruwN source/include/uv/unix.h source-new/include/uv/unix.h --- source/include/uv/unix.h 2023-05-19 18:21:01.000000000 +0700 -+++ source-new/include/uv/unix.h 2025-07-22 01:53:54.941276543 +0700 ++++ source-new/include/uv/unix.h 2025-09-16 11:42:40.882554686 +0700 @@ -66,6 +66,7 @@ defined(__MSYS__) || \ defined(__HAIKU__) || \ @@ -37,7 +38,7 @@ diff -ruwN source/include/uv/unix.h source-new/include/uv/unix.h #endif diff -ruwN source/src/unix/core.c source-new/src/unix/core.c --- source/src/unix/core.c 2023-05-19 18:21:01.000000000 +0700 -+++ source-new/src/unix/core.c 2025-07-21 22:55:16.826444959 +0700 ++++ source-new/src/unix/core.c 2025-09-16 11:42:40.882554686 +0700 @@ -97,6 +97,10 @@ # include #endif @@ -61,7 +62,7 @@ diff -ruwN source/src/unix/core.c source-new/src/unix/core.c if (rc == -1) diff -ruwN source/src/unix/fs.c source-new/src/unix/fs.c --- source/src/unix/fs.c 2023-05-19 18:21:01.000000000 +0700 -+++ source-new/src/unix/fs.c 2025-07-21 22:55:16.826444959 +0700 ++++ source-new/src/unix/fs.c 2025-09-16 11:42:40.882554686 +0700 @@ -87,7 +87,8 @@ defined(__MVS__) || \ defined(__NetBSD__) || \ @@ -100,7 +101,7 @@ diff -ruwN source/src/unix/fs.c source-new/src/unix/fs.c stat_fs->f_type = buf.f_type; diff -ruwN source/src/unix/proctitle.c source-new/src/unix/proctitle.c --- source/src/unix/proctitle.c 2023-05-19 18:21:01.000000000 +0700 -+++ source-new/src/unix/proctitle.c 2025-07-22 02:10:12.760625178 +0700 ++++ source-new/src/unix/proctitle.c 2025-09-16 11:42:40.882554686 +0700 @@ -30,7 +30,13 @@ size_t cap; /* Maximum capacity. Computed once in uv_setup_args(). */ }; @@ -115,9 +116,115 @@ diff -ruwN source/src/unix/proctitle.c source-new/src/unix/proctitle.c static uv_mutex_t process_title_mutex; static uv_once_t process_title_mutex_once = UV_ONCE_INIT; +diff -ruwN source/src/unix/redox.c source-new/src/unix/redox.c +--- source/src/unix/redox.c 1970-01-01 07:00:00.000000000 +0700 ++++ source-new/src/unix/redox.c 2025-09-16 14:28:29.209614311 +0700 +@@ -0,0 +1,102 @@ ++/* Copyright libuv contributors. All rights reserved. ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a copy ++ * of this software and associated documentation files (the "Software"), to ++ * deal in the Software without restriction, including without limitation the ++ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or ++ * sell copies of the Software, and to permit persons to whom the Software is ++ * furnished to do so, subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice shall be included in ++ * all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE ++ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS ++ * IN THE SOFTWARE. ++ */ ++ ++#include "uv.h" ++#include "internal.h" ++ ++#include ++#include ++#include ++ ++static void ++get_mem_info(uint64_t* totalmem, uint64_t* freemem) { ++ *totalmem = 0; ++ *freemem = 0; ++} ++ ++ ++void uv_loadavg(double avg[3]) { ++ avg[0] = 0.0; ++ avg[1] = 0.0; ++ avg[2] = 0.0; ++} ++ ++ ++int uv_exepath(char* buffer, size_t* size) { ++ if (buffer == NULL || size == NULL || *size == 0) { ++ return UV_EINVAL; ++ } ++ FILE* fp = fopen("/scheme/sys/exe", "r"); ++ if (fp == NULL) { ++ return -errno; ++ } ++ if (fgets(buffer, *size, fp) == NULL) { ++ fclose(fp); ++ return UV_EIO; ++ } ++ fclose(fp); ++ buffer[strcspn(buffer, "\r\n")] = '\0'; ++ *size = strlen(buffer); ++ return 0; ++} ++ ++int uv_interface_addresses(uv_interface_address_t** addresses, int* count) { ++ return 0; ++} ++ ++ ++uint64_t uv_get_free_memory(void) { ++ return 0; ++} ++ ++ ++uint64_t uv_get_total_memory(void) { ++ return 0; ++} ++ ++ ++uint64_t uv_get_constrained_memory(void) { ++ return 0; ++} ++ ++ ++uint64_t uv_get_available_memory(void) { ++ return uv_get_free_memory(); ++} ++ ++ ++int uv_resident_set_memory(size_t* rss) { ++ return 0; ++} ++ ++ ++int uv_uptime(double* uptime) { ++ return 0; ++} ++ ++ ++int uv_cpu_info(uv_cpu_info_t** cpu_infos, int* count) { ++ return 0; ++} ++ ++void uv_free_interface_addresses(uv_interface_address_t* addresses, ++ int count) { ++} diff -ruwN source/src/unix/stream.c source-new/src/unix/stream.c --- source/src/unix/stream.c 2023-05-19 18:21:01.000000000 +0700 -+++ source-new/src/unix/stream.c 2025-07-21 22:55:16.826444959 +0700 ++++ source-new/src/unix/stream.c 2025-09-16 11:42:40.883554697 +0700 @@ -29,7 +29,14 @@ #include @@ -151,7 +258,7 @@ diff -ruwN source/src/unix/stream.c source-new/src/unix/stream.c struct cmsghdr hdr; diff -ruwN source/src/unix/udp.c source-new/src/unix/udp.c --- source/src/unix/udp.c 2023-05-19 18:21:01.000000000 +0700 -+++ source-new/src/unix/udp.c 2025-07-21 22:55:16.826444959 +0700 ++++ source-new/src/unix/udp.c 2025-09-16 11:42:40.883554697 +0700 @@ -31,6 +31,12 @@ #include #endif From 9c2c0133b28eb26d94e8dc6f3ef0a9a208d3e8f7 Mon Sep 17 00:00:00 2001 From: auronandace Date: Tue, 16 Sep 2025 17:52:17 +0100 Subject: [PATCH 2825/3180] add sed as a dependency to os-test --- recipes/tests/os-test/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/tests/os-test/recipe.toml b/recipes/tests/os-test/recipe.toml index 59467c20..1022d4e4 100644 --- a/recipes/tests/os-test/recipe.toml +++ b/recipes/tests/os-test/recipe.toml @@ -14,4 +14,5 @@ dependencies = [ "gnu-make", "gcc13", "libarchive", + "sed", ] From 0a2351722f56358dc46e1bf8cf391d3c01be1462 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 17 Sep 2025 21:55:34 +0700 Subject: [PATCH 2826/3180] Port python --- recipes/libs/ncurses/recipe.toml | 7 +- recipes/libs/ncurses/redox.patch | 12 ++ recipes/libs/ncursesw/recipe.toml | 9 +- recipes/libs/ncursesw/redox.patch | 12 ++ recipes/libs/openssl1/recipe.toml | 1 + recipes/wip/dev/lang/python312/recipe.toml | 27 ++- recipes/wip/dev/lang/python312/redox.patch | 204 ++++++++++++++++++ .../lang/{python310 => python39}/recipe.toml | 28 ++- .../lang/{python310 => python39}/redox.patch | 46 ++-- 9 files changed, 308 insertions(+), 38 deletions(-) create mode 100644 recipes/libs/ncurses/redox.patch create mode 100644 recipes/libs/ncursesw/redox.patch create mode 100644 recipes/wip/dev/lang/python312/redox.patch rename recipes/wip/dev/lang/{python310 => python39}/recipe.toml (64%) rename recipes/wip/dev/lang/{python310 => python39}/redox.patch (66%) diff --git a/recipes/libs/ncurses/recipe.toml b/recipes/libs/ncurses/recipe.toml index ff2e3068..0fa4f74d 100644 --- a/recipes/libs/ncurses/recipe.toml +++ b/recipes/libs/ncurses/recipe.toml @@ -1,6 +1,9 @@ [source] tar = "https://ftp.gnu.org/gnu/ncurses/ncurses-6.4.tar.gz" blake3 = "0d1c9fdf53c0ca4bd66ba707d49a079d2dd6f5a960cdec74a56e29952c4ffe73" +patches = [ + "redox.patch" +] [build] template = "custom" @@ -10,12 +13,12 @@ COOKBOOK_CONFIGURE_FLAGS+=( --disable-db-install --disable-stripping --without-ada - --without-cxx-binding + --without-manpages --without-tests + --with-shared cf_cv_func_mkstemp=yes ) cookbook_configure -rm -rfv "${COOKBOOK_STAGE}/bin" "${COOKBOOK_STAGE}/share/"{doc,info,man} """ [package] diff --git a/recipes/libs/ncurses/redox.patch b/recipes/libs/ncurses/redox.patch new file mode 100644 index 00000000..b446db16 --- /dev/null +++ b/recipes/libs/ncurses/redox.patch @@ -0,0 +1,12 @@ +diff -ruwN source/configure source-new/configure +--- source/configure 2022-11-06 04:13:26.000000000 +0700 ++++ source-new/configure 2025-09-17 21:14:28.163192730 +0700 +@@ -6386,7 +6386,7 @@ + fi + cf_cv_rm_so_locs=yes + ;; +- (linux*|gnu*|k*bsd*-gnu) ++ (linux*|gnu*|k*bsd*-gnu|redox*) + if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then + LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" diff --git a/recipes/libs/ncursesw/recipe.toml b/recipes/libs/ncursesw/recipe.toml index f1733fe4..a697aabe 100644 --- a/recipes/libs/ncursesw/recipe.toml +++ b/recipes/libs/ncursesw/recipe.toml @@ -1,22 +1,27 @@ [source] tar = "https://ftp.gnu.org/gnu/ncurses/ncurses-6.4.tar.gz" blake3 = "0d1c9fdf53c0ca4bd66ba707d49a079d2dd6f5a960cdec74a56e29952c4ffe73" +patches = [ + "redox.patch" +] [build] template = "custom" script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( --disable-db-install --disable-ext-colors + --disable-stripping --enable-widec --without-ada - --without-cxx-binding + --without-manpages --without-tests + --with-shared cf_cv_func_mkstemp=yes cf_cv_wint_t=yes ) cookbook_configure -rm -rfv "${COOKBOOK_STAGE}/bin" "${COOKBOOK_STAGE}/share/"{doc,info,man} """ [package] diff --git a/recipes/libs/ncursesw/redox.patch b/recipes/libs/ncursesw/redox.patch new file mode 100644 index 00000000..b446db16 --- /dev/null +++ b/recipes/libs/ncursesw/redox.patch @@ -0,0 +1,12 @@ +diff -ruwN source/configure source-new/configure +--- source/configure 2022-11-06 04:13:26.000000000 +0700 ++++ source-new/configure 2025-09-17 21:14:28.163192730 +0700 +@@ -6386,7 +6386,7 @@ + fi + cf_cv_rm_so_locs=yes + ;; +- (linux*|gnu*|k*bsd*-gnu) ++ (linux*|gnu*|k*bsd*-gnu|redox*) + if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then + LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" diff --git a/recipes/libs/openssl1/recipe.toml b/recipes/libs/openssl1/recipe.toml index b2836cf9..d51979cb 100644 --- a/recipes/libs/openssl1/recipe.toml +++ b/recipes/libs/openssl1/recipe.toml @@ -10,6 +10,7 @@ ARCH="${TARGET%%-*}" COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/Configure" COOKBOOK_CONFIGURE_FLAGS=( shared +# threads # needs ucontext.h no-dgram "redox-${ARCH}" --prefix="/" diff --git a/recipes/wip/dev/lang/python312/recipe.toml b/recipes/wip/dev/lang/python312/recipe.toml index e53fb2c0..1e2327c5 100644 --- a/recipes/wip/dev/lang/python312/recipe.toml +++ b/recipes/wip/dev/lang/python312/recipe.toml @@ -1,14 +1,35 @@ -#TODO finish it based on the python310 recipe +#TODO works without pip, probably it requires openssl [source] tar = "https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tar.xz" +patches = [ + "redox.patch" +] + [build] template = "custom" dependencies = [ - "openssl1", +# "openssl1", requires 1.1.1 +# "ncurses", + "ncursesw", +# "readline", unable to link + "zlib", + "xz" ] script = """ -COOKBOOK_CONFIGURE_FLAGS+=( +DYNAMIC_INIT +export PYTHONDONTWRITEBYTECODE=1 + +COOKBOOK_CONFIGURE_FLAGS=( + --prefix=/usr --disable-ipv6 + --host=${GNU_TARGET} + --build=x86_64 + --with-build-python +# --with-openssl="${COOKBOOK_SYSROOT}/usr" + --with-ensurepip=install + ac_cv_file__dev_ptmx=no + ac_cv_file__dev_ptc=no ) + cookbook_configure """ diff --git a/recipes/wip/dev/lang/python312/redox.patch b/recipes/wip/dev/lang/python312/redox.patch new file mode 100644 index 00000000..292c43db --- /dev/null +++ b/recipes/wip/dev/lang/python312/redox.patch @@ -0,0 +1,204 @@ +diff -ruwN source/configure source-new/configure +--- source/configure 2025-02-04 21:38:38.000000000 +0700 ++++ source-new/configure 2025-09-17 20:20:00.088297027 +0700 +@@ -4283,6 +4283,9 @@ + *-*-wasi) + ac_sys_system=WASI + ;; ++ *-*-redox*) ++ ac_sys_system=Redox ++ ;; + *) + # for now, limit cross builds to known configurations + MACHDEP="unknown" +@@ -4307,6 +4310,7 @@ + case $MACHDEP in + aix*) MACHDEP="aix";; + linux*) MACHDEP="linux";; ++ redox*) MACHDEP="redox";; + cygwin*) MACHDEP="cygwin";; + darwin*) MACHDEP="darwin";; + '') MACHDEP="unknown";; +@@ -4327,7 +4331,7 @@ + + if test "$cross_compiling" = yes; then + case "$host" in +- *-*-linux*) ++ *-*-linux*|*-*-redox*) + case "$host_cpu" in + arm*) + _host_cpu=arm +@@ -6762,6 +6766,7 @@ + #undef cris + #undef fr30 + #undef linux ++#undef redox + #undef hppa + #undef hpux + #undef i386 +@@ -6907,6 +6912,18 @@ + # endif + #elif defined(__gnu_hurd__) + i386-gnu ++#elif defined(__redox__) ++# if defined(__x86_64__) ++ x86_64-redox ++# elif defined(__i386__) ++ i386-redox ++# elif defined(__aarch64__) ++ aarch64-redox ++# elif defined(__riscv) ++ riscv64-redox ++# else ++# error unknown platform triplet ++# endif + #elif defined(__APPLE__) + darwin + #elif defined(__VXWORKS__) +@@ -7507,7 +7524,7 @@ + PY3LIBRARY=libpython3.so + fi + ;; +- Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*|VxWorks*) ++ Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*|VxWorks*|Redox*) + LDLIBRARY='libpython$(LDVERSION).so' + BLDLIBRARY='-L. -lpython$(LDVERSION)' + RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} +@@ -12815,7 +12832,7 @@ + Emscripten*|WASI*) + LDSHARED='$(CC) -shared' + LDCXXSHARED='$(CXX) -shared';; +- Linux*|GNU*|QNX*|VxWorks*|Haiku*) ++ Linux*|GNU*|QNX*|VxWorks*|Haiku*|Redox*) + LDSHARED='$(CC) -shared' + LDCXXSHARED='$(CXX) -shared';; + FreeBSD*) +@@ -12901,7 +12918,7 @@ + else CCSHARED="+z"; + fi;; + Linux-android*) ;; +- Linux*|GNU*) CCSHARED="-fPIC";; ++ Linux*|GNU*|Redox*) CCSHARED="-fPIC";; + Emscripten*|WASI*) + if test "x$enable_wasm_dynamic_linking" = xyes + then : +@@ -12939,7 +12956,7 @@ + LINKFORSHARED="-Wl,-E -Wl,+s";; + # LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";; + Linux-android*) LINKFORSHARED="-pie -Xlinker -export-dynamic";; +- Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";; ++ Linux*|GNU*|Redox*) LINKFORSHARED="-Xlinker -export-dynamic";; + # -u libsys_s pulls in all symbols in libsys + Darwin/*) + LINKFORSHARED="$extra_undefs -framework CoreFoundation" +diff -ruwN source/Include/pyport.h source-new/Include/pyport.h +--- source/Include/pyport.h 2025-02-04 21:38:38.000000000 +0700 ++++ source-new/Include/pyport.h 2025-09-08 00:58:51.645114412 +0700 +@@ -684,7 +684,7 @@ + # error "Py_TRACE_REFS ABI is not compatible with release and debug ABI" + #endif + +-#if defined(__ANDROID__) || defined(__VXWORKS__) ++#if defined(__ANDROID__) || defined(__VXWORKS__) || defined(__redox__) + // Use UTF-8 as the locale encoding, ignore the LC_CTYPE locale. + // See _Py_GetLocaleEncoding(), PyUnicode_DecodeLocale() + // and PyUnicode_EncodeLocale(). +diff -ruwN source/Modules/_cryptmodule.c source-new/Modules/_cryptmodule.c +--- source/Modules/_cryptmodule.c 2025-02-04 21:38:38.000000000 +0700 ++++ source-new/Modules/_cryptmodule.c 2025-09-08 01:08:47.321046272 +0700 +@@ -38,13 +38,7 @@ + /*[clinic end generated code: output=0512284a03d2803c input=0e8edec9c364352b]*/ + { + char *crypt_result; +-#ifdef HAVE_CRYPT_R +- struct crypt_data data; +- memset(&data, 0, sizeof(data)); +- crypt_result = crypt_r(word, salt, &data); +-#else + crypt_result = crypt(word, salt); +-#endif + if (crypt_result == NULL) { + return PyErr_SetFromErrno(PyExc_OSError); + } +diff -ruwN source/Modules/posixmodule.c source-new/Modules/posixmodule.c +--- source/Modules/posixmodule.c 2025-02-04 21:38:38.000000000 +0700 ++++ source-new/Modules/posixmodule.c 2025-09-08 01:06:48.400701428 +0700 +@@ -2695,8 +2695,7 @@ + #ifdef HAVE_FSTATAT + if ((dir_fd != DEFAULT_DIR_FD) || !follow_symlinks) { + if (HAVE_FSTATAT_RUNTIME) { +- result = fstatat(dir_fd, path->narrow, &st, +- follow_symlinks ? 0 : AT_SYMLINK_NOFOLLOW); ++ result = fstatat(dir_fd, path->narrow, &st, 0); + + } else { + fstatat_unavailable = 1; +@@ -3186,8 +3185,6 @@ + + if (HAVE_FACCESSAT_RUNTIME) { + int flags = 0; +- if (!follow_symlinks) +- flags |= AT_SYMLINK_NOFOLLOW; + if (effective_ids) + flags |= AT_EACCESS; + result = faccessat(dir_fd, path->narrow, mode, flags); +@@ -3472,8 +3469,7 @@ + * support dir_fd and follow_symlinks=False. (Hopefully.) + * Until then, we need to be careful what exception we raise. + */ +- result = fchmodat(dir_fd, path->narrow, mode, +- follow_symlinks ? 0 : AT_SYMLINK_NOFOLLOW); ++ result = fchmodat(dir_fd, path->narrow, mode, 0); + /* + * But wait! We can't throw the exception without allowing threads, + * and we can't do that in this nested scope. (Macro trickery, sigh.) +@@ -3850,8 +3846,7 @@ + #ifdef HAVE_FCHOWNAT + if ((dir_fd != DEFAULT_DIR_FD) || (!follow_symlinks)) { + if (HAVE_FCHOWNAT_RUNTIME) { +- result = fchownat(dir_fd, path->narrow, uid, gid, +- follow_symlinks ? 0 : AT_SYMLINK_NOFOLLOW); ++ result = fchownat(dir_fd, path->narrow, uid, gid, 0); + } else { + fchownat_unsupported = 1; + } +@@ -14727,8 +14722,7 @@ + #ifdef HAVE_FSTATAT + if (HAVE_FSTATAT_RUNTIME) { + Py_BEGIN_ALLOW_THREADS +- result = fstatat(self->dir_fd, path, &st, +- follow_symlinks ? 0 : AT_SYMLINK_NOFOLLOW); ++ result = fstatat(self->dir_fd, path, &st, 0); + Py_END_ALLOW_THREADS + } else + +diff -ruwN source/Modules/resource.c source-new/Modules/resource.c +--- source/Modules/resource.c 2025-02-04 21:38:38.000000000 +0700 ++++ source-new/Modules/resource.c 2025-09-08 01:10:18.427310454 +0700 +@@ -216,7 +216,7 @@ + { + struct rlimit rl; + +- if (resource < 0 || resource >= RLIM_NLIMITS) { ++ if (resource < 0 || resource >= RLIMIT_NLIMITS) { + PyErr_SetString(PyExc_ValueError, + "invalid resource specified"); + return NULL; +@@ -244,7 +244,7 @@ + { + struct rlimit rl; + +- if (resource < 0 || resource >= RLIM_NLIMITS) { ++ if (resource < 0 || resource >= RLIMIT_NLIMITS) { + PyErr_SetString(PyExc_ValueError, + "invalid resource specified"); + return NULL; +@@ -292,7 +292,7 @@ + struct rlimit old_limit, new_limit; + int retval; + +- if (resource < 0 || resource >= RLIM_NLIMITS) { ++ if (resource < 0 || resource >= RLIMIT_NLIMITS) { + PyErr_SetString(PyExc_ValueError, + "invalid resource specified"); + return NULL; diff --git a/recipes/wip/dev/lang/python310/recipe.toml b/recipes/wip/dev/lang/python39/recipe.toml similarity index 64% rename from recipes/wip/dev/lang/python310/recipe.toml rename to recipes/wip/dev/lang/python39/recipe.toml index 6c69663f..c612cade 100644 --- a/recipes/wip/dev/lang/python310/recipe.toml +++ b/recipes/wip/dev/lang/python39/recipe.toml @@ -2,15 +2,23 @@ #TODO Fix openssl dependency #TODO Add additional dependencies (readline, ncurses, etc.) [source] -tar = "https://www.python.org/ftp/python/3.10.13/Python-3.10.13.tar.xz" +tar = "https://www.python.org/ftp/python/3.9.9/Python-3.9.9.tar.xz" patches = [ - 'redox.patch' +# 'redox.patch' ] [build] template = "custom" -dependencies = [] +dependencies = [ +# "openssl1", needs threading / ucontext.h + "ncursesw", + "zlib", + "xz" +] script = """ +DYNAMIC_INIT +export PYTHONDONTWRITEBYTECODE=1 + # Python cross-compilation requires the same Python version on the build machine BUILDMACH_TARGET="$(gcc -dumpmachine)" BUILDMACH_BUILD="${COOKBOOK_RECIPE}/target/${BUILDMACH_TARGET}/build" @@ -27,19 +35,23 @@ mkdir -p "${BUILDMACH_STAGE}" cd "${BUILDMACH_BUILD}" # Use env that does not use the Redox build tools -env -i PATH="$PATH" CC=gcc "${COOKBOOK_SOURCE}/configure" -env -i PATH="$PATH" CC=gcc "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" +env -i PATH="$PATH" CC="$CC_WRAPPER gcc" "${COOKBOOK_SOURCE}/configure" +env -i PATH="$PATH" CC="$CC_WRAPPER gcc" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" "${COOKBOOK_MAKE}" install DESTDIR="${BUILDMACH_STAGE}" cd - export PATH="${BUILDMACH_STAGE}/usr/local/bin:${PATH}" -# --enable-optimizations for release build -COOKBOOK_CONFIGURE_FLAGS+=( +COOKBOOK_CONFIGURE_FLAGS=( + --prefix=/usr --disable-ipv6 - --build="${ARCH}" + --host=${GNU_TARGET} + --build=x86_64 + --with-openssl="${COOKBOOK_SYSROOT}/usr" + --with-ensurepip=install ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no ) + cookbook_configure """ diff --git a/recipes/wip/dev/lang/python310/redox.patch b/recipes/wip/dev/lang/python39/redox.patch similarity index 66% rename from recipes/wip/dev/lang/python310/redox.patch rename to recipes/wip/dev/lang/python39/redox.patch index 3f42622d..5f776a98 100644 --- a/recipes/wip/dev/lang/python310/redox.patch +++ b/recipes/wip/dev/lang/python39/redox.patch @@ -1,7 +1,7 @@ -diff -ur source-orig/configure source/configure ---- source-orig/configure 2023-08-24 13:46:25.000000000 +0100 -+++ source/configure 2024-10-17 16:50:09.377036649 +0100 -@@ -3347,6 +3347,9 @@ +diff -ruwN source/configure source-new/configure +--- source/configure 2021-11-16 00:43:00.000000000 +0700 ++++ source-new/configure 2025-09-17 21:31:19.787497963 +0700 +@@ -3307,6 +3307,9 @@ *-*-vxworks*) ac_sys_system=VxWorks ;; @@ -11,7 +11,7 @@ diff -ur source-orig/configure source/configure *) # for now, limit cross builds to known configurations MACHDEP="unknown" -@@ -3371,6 +3374,7 @@ +@@ -3331,6 +3334,7 @@ case $MACHDEP in aix*) MACHDEP="aix";; linux*) MACHDEP="linux";; @@ -19,7 +19,7 @@ diff -ur source-orig/configure source/configure cygwin*) MACHDEP="cygwin";; darwin*) MACHDEP="darwin";; '') MACHDEP="unknown";; -@@ -3382,7 +3386,7 @@ +@@ -3342,7 +3346,7 @@ if test "$cross_compiling" = yes; then case "$host" in @@ -28,16 +28,16 @@ diff -ur source-orig/configure source/configure case "$host_cpu" in arm*) _host_cpu=arm -@@ -5989,7 +5993,7 @@ +@@ -5951,7 +5955,7 @@ PY3LIBRARY=libpython3.so fi ;; -- Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*|VxWorks*) -+ Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*|VxWorks*|Redox*) +- Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*) ++ Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*|Redox*) LDLIBRARY='libpython$(LDVERSION).so' BLDLIBRARY='-L. -lpython$(LDVERSION)' RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} -@@ -9787,7 +9791,7 @@ +@@ -9551,7 +9555,7 @@ BLDSHARED="$LDSHARED" fi ;; @@ -46,7 +46,7 @@ diff -ur source-orig/configure source/configure LDSHARED='$(CC) -shared' LDCXXSHARED='$(CXX) -shared';; FreeBSD*) -@@ -9856,7 +9860,7 @@ +@@ -9620,7 +9624,7 @@ else CCSHARED="+z"; fi;; Linux-android*) ;; @@ -55,7 +55,7 @@ diff -ur source-orig/configure source/configure FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";; OpenUNIX*|UnixWare*) if test "$GCC" = "yes" -@@ -9886,7 +9890,7 @@ +@@ -9650,7 +9654,7 @@ LINKFORSHARED="-Wl,-E -Wl,+s";; # LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";; Linux-android*) LINKFORSHARED="-pie -Xlinker -export-dynamic";; @@ -64,22 +64,22 @@ diff -ur source-orig/configure source/configure # -u libsys_s pulls in all symbols in libsys Darwin/*) LINKFORSHARED="$extra_undefs -framework CoreFoundation" -diff -ur source-orig/Include/pyport.h source/Include/pyport.h ---- source-orig/Include/pyport.h 2023-08-24 13:46:25.000000000 +0100 -+++ source/Include/pyport.h 2024-10-17 17:34:54.514295923 +0100 -@@ -843,7 +843,7 @@ +diff -ruwN source/Include/pyport.h source-new/Include/pyport.h +--- source/Include/pyport.h 2021-11-16 00:43:00.000000000 +0700 ++++ source-new/Include/pyport.h 2025-09-17 21:31:56.613084352 +0700 +@@ -838,7 +838,7 @@ # error "Py_TRACE_REFS ABI is not compatible with release and debug ABI" #endif -#if defined(__ANDROID__) || defined(__VXWORKS__) +#if defined(__ANDROID__) || defined(__VXWORKS__) || defined(__redox__) - // Use UTF-8 as the locale encoding, ignore the LC_CTYPE locale. - // See _Py_GetLocaleEncoding(), PyUnicode_DecodeLocale() - // and PyUnicode_EncodeLocale(). -diff -ur source-orig/Modules/timemodule.c source/Modules/timemodule.c ---- source-orig/Modules/timemodule.c 2023-08-24 13:46:25.000000000 +0100 -+++ source/Modules/timemodule.c 2024-10-17 17:38:08.481699567 +0100 -@@ -1453,7 +1453,7 @@ + /* Ignore the locale encoding: force UTF-8 */ + # define _Py_FORCE_UTF8_LOCALE + #endif +diff -ruwN source/Modules/timemodule.c source-new/Modules/timemodule.c +--- source/Modules/timemodule.c 2021-11-16 00:43:00.000000000 +0700 ++++ source-new/Modules/timemodule.c 2025-09-17 21:30:18.552349106 +0700 +@@ -1416,7 +1416,7 @@ return 0; } From 80a76fab89d6f1a3077a5121afd42d58397eb71e Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 17 Sep 2025 22:06:14 +0700 Subject: [PATCH 2827/3180] Fix ARCH --- recipes/wip/dev/lang/python312/recipe.toml | 3 ++- recipes/wip/dev/lang/python39/recipe.toml | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/recipes/wip/dev/lang/python312/recipe.toml b/recipes/wip/dev/lang/python312/recipe.toml index 1e2327c5..ada36f03 100644 --- a/recipes/wip/dev/lang/python312/recipe.toml +++ b/recipes/wip/dev/lang/python312/recipe.toml @@ -18,12 +18,13 @@ dependencies = [ script = """ DYNAMIC_INIT export PYTHONDONTWRITEBYTECODE=1 +ARCH="${TARGET%%-*}" COOKBOOK_CONFIGURE_FLAGS=( --prefix=/usr --disable-ipv6 --host=${GNU_TARGET} - --build=x86_64 + --build=$ARCH --with-build-python # --with-openssl="${COOKBOOK_SYSROOT}/usr" --with-ensurepip=install diff --git a/recipes/wip/dev/lang/python39/recipe.toml b/recipes/wip/dev/lang/python39/recipe.toml index c612cade..537c920a 100644 --- a/recipes/wip/dev/lang/python39/recipe.toml +++ b/recipes/wip/dev/lang/python39/recipe.toml @@ -18,6 +18,7 @@ dependencies = [ script = """ DYNAMIC_INIT export PYTHONDONTWRITEBYTECODE=1 +ARCH="${TARGET%%-*}" # Python cross-compilation requires the same Python version on the build machine BUILDMACH_TARGET="$(gcc -dumpmachine)" @@ -46,8 +47,8 @@ COOKBOOK_CONFIGURE_FLAGS=( --prefix=/usr --disable-ipv6 --host=${GNU_TARGET} - --build=x86_64 - --with-openssl="${COOKBOOK_SYSROOT}/usr" + --build=$ARCH +# --with-openssl="${COOKBOOK_SYSROOT}/usr" --with-ensurepip=install ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no From adf95141be88a22159ea40626c40e9aa7bcfe2c7 Mon Sep 17 00:00:00 2001 From: auronandace Date: Wed, 17 Sep 2025 19:30:24 +0100 Subject: [PATCH 2828/3180] add gnu-grep as dependency to os-test --- recipes/tests/os-test/recipe.toml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/recipes/tests/os-test/recipe.toml b/recipes/tests/os-test/recipe.toml index 1022d4e4..9b0d0235 100644 --- a/recipes/tests/os-test/recipe.toml +++ b/recipes/tests/os-test/recipe.toml @@ -1,3 +1,4 @@ +# TODO remove gnu-grep when extrautils grep supports grep -E [source] git = "https://gitlab.com/sortix/os-test" @@ -10,9 +11,10 @@ cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/share/os-test" [package] dependencies = [ - "gnu-binutils", - "gnu-make", "gcc13", + "gnu-binutils", + "gnu-grep", + "gnu-make", "libarchive", "sed", ] From 0fbd8365356a370604dc638c65dcf3ca30a277aa Mon Sep 17 00:00:00 2001 From: Wildan M Date: Thu, 18 Sep 2025 09:32:33 +0700 Subject: [PATCH 2829/3180] Add libedit and php readline support --- recipes/wip/dev/lang/php84/recipe.toml | 32 ++++--- recipes/wip/dev/lang/php84/redox.patch | 16 +++- recipes/wip/libs/other/libedit/recipe.toml | 13 ++- recipes/wip/libs/other/libedit/redox.patch | 99 ++++++++++++++++++++++ 4 files changed, 140 insertions(+), 20 deletions(-) create mode 100644 recipes/wip/libs/other/libedit/redox.patch diff --git a/recipes/wip/dev/lang/php84/recipe.toml b/recipes/wip/dev/lang/php84/recipe.toml index c004b5ef..51455476 100644 --- a/recipes/wip/dev/lang/php84/recipe.toml +++ b/recipes/wip/dev/lang/php84/recipe.toml @@ -1,4 +1,4 @@ -#TODO fix readline and openssl +#TODO fix openssl [source] tar = "https://www.php.net/distributions/php-8.4.12.tar.xz" patches = [ @@ -13,30 +13,36 @@ dependencies = [ "libgmp", "libavif", "libjpeg", -# "libedit", + "libedit", "libonig", "libpng", "libwebp", "libxml2", + "libiconv", "libzip", -# "ncurses", + "ncurses", "nghttp2", "openssl1", "pcre", -# "readline", + "readline", "sqlite3", "xz", "zlib", ] script = """ DYNAMIC_INIT -# extension stuff +export SUFFIX="84" + export CURL_LIBS="-lcurl -lnghttp2 -lssl -lcrypto" -#export READLINE_DIR="${COOKBOOK_SYSROOT}/usr" COOKBOOK_CONFIGURE_FLAGS+=( - --without-iconv - --disable-phar + --program-suffix=${SUFFIX} + --sysconfdir=/etc + --with-config-file-path=/etc + --with-config-file-scan-dir=/etc/conf.d + --with-iconv="${COOKBOOK_SYSROOT}/usr" + --disable-phar # doesn't work cross compiling --disable-opcache +# --enable-fpm # need times function --enable-gd --with-curl --with-gmp @@ -46,9 +52,9 @@ COOKBOOK_CONFIGURE_FLAGS+=( --with-ffi --with-intl --with-mbstring -# --with-libedit -# --with-readline -# --with-openssl + --with-libedit + --with-readline +# --with-openssl # need 1.1.1 --with-zip ) @@ -57,4 +63,8 @@ COOKBOOK_CONFIGURE_FLAGS+=( "${COOKBOOK_MAKE}" install \ INSTALL_ROOT="${COOKBOOK_STAGE}" \ datarootdir=/usr/share localstatedir=/var + +for bin in "php-cgi" "php-config" "php" "phpdbg" "phpize"; do + ln -s "$bin$SUFFIX" ${COOKBOOK_STAGE}/usr/bin/$bin +done """ diff --git a/recipes/wip/dev/lang/php84/redox.patch b/recipes/wip/dev/lang/php84/redox.patch index eed8d116..916f9fa3 100644 --- a/recipes/wip/dev/lang/php84/redox.patch +++ b/recipes/wip/dev/lang/php84/redox.patch @@ -1,6 +1,6 @@ diff --color -ruwN source/configure source-new/configure --- source/configure 2025-08-26 20:36:28.000000000 +0700 -+++ source-new/configure 2025-09-16 07:44:46.452670941 +0700 ++++ source-new/configure 2025-09-16 07:50:56.962975667 +0700 @@ -25863,7 +25863,7 @@ then : ac_cv_lib_curl_curl_easy_perform=yes @@ -28,9 +28,21 @@ diff --color -ruwN source/configure source-new/configure ac_fn_c_check_header_compile "$LINENO" "gmp.h" "ac_cv_header_gmp_h" "$ac_includes_default" if test "x$ac_cv_header_gmp_h" = xyes then : +diff --color -ruwN source/ext/phar/Makefile.frag source-new/ext/phar/Makefile.frag +--- source/ext/phar/Makefile.frag 2025-08-26 20:36:28.000000000 +0700 ++++ source-new/ext/phar/Makefile.frag 2025-09-18 07:37:43.264765180 +0700 +@@ -30,7 +30,7 @@ + -@test -f $(builddir)/phar/phar.inc || cp $(srcdir)/phar/phar.inc $(builddir)/phar/phar.inc + + TEST_PHP_EXECUTABLE = $(shell $(PHP_EXECUTABLE) -v 2>&1) +-TEST_PHP_EXECUTABLE_RES = $(shell echo "$(TEST_PHP_EXECUTABLE)" | grep -c 'Exec format error') ++TEST_PHP_EXECUTABLE_RES = $(shell echo "$(TEST_PHP_EXECUTABLE)" | grep -E -c 'Exec format error|required file not found') + + $(builddir)/phar.php: $(srcdir)/build_precommand.php $(srcdir)/phar/*.inc $(srcdir)/phar/*.php $(SAPI_CLI_PATH) + -@(echo "Generating phar.php"; \ diff --color -ruwN source/ext/posix/posix.c source-new/ext/posix/posix.c --- source/ext/posix/posix.c 2025-08-26 20:36:28.000000000 +0700 -+++ source-new/ext/posix/posix.c 2025-09-16 07:02:03.974662569 +0700 ++++ source-new/ext/posix/posix.c 2025-09-16 07:50:56.989976200 +0700 @@ -375,7 +375,7 @@ ZEND_PARSE_PARAMETERS_NONE(); diff --git a/recipes/wip/libs/other/libedit/recipe.toml b/recipes/wip/libs/other/libedit/recipe.toml index c00a8c38..62d169b8 100644 --- a/recipes/wip/libs/other/libedit/recipe.toml +++ b/recipes/wip/libs/other/libedit/recipe.toml @@ -1,14 +1,13 @@ -#TODO make dependencies work +#TODO promote [source] -tar = "https://www.thrysoee.dk/editline/libedit-20221030-3.1.tar.gz" +tar = "https://www.thrysoee.dk/editline/libedit-20250104-3.1.tar.gz" +patches = [ + "redox.patch" +] [build] -template = "custom" +template = "configure" dependencies = [ "ncurses", "termcap", "terminfo", ] -script = """ -export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" -cookbook_configure -""" diff --git a/recipes/wip/libs/other/libedit/redox.patch b/recipes/wip/libs/other/libedit/redox.patch new file mode 100644 index 00000000..5a699f2a --- /dev/null +++ b/recipes/wip/libs/other/libedit/redox.patch @@ -0,0 +1,99 @@ +diff --color -ruwN source/configure source-new/configure +--- source/configure 2025-01-05 00:16:30.000000000 +0700 ++++ source-new/configure 2025-09-18 06:50:23.667443238 +0700 +@@ -6384,7 +6384,7 @@ + ;; + + # This must be glibc/ELF. +-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) ++linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu* | redox*) + lt_cv_deplibs_check_method=pass_all + ;; + +@@ -7715,7 +7715,7 @@ + ;; + + x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +-s390*-*linux*|s390*-*tpf*|sparc*-*linux*|x86_64-gnu*) ++s390*-*linux*|s390*-*tpf*|sparc*-*linux*|x86_64-gnu**|x86_64-redox*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when +@@ -7734,7 +7734,7 @@ + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; +- x86_64-*linux*|x86_64-gnu*) ++ x86_64-*linux*|x86_64-gnu*|x86_64-redox*) + case `$FILECMD conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" +@@ -7763,7 +7763,7 @@ + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; +- x86_64-*linux*|x86_64-gnu*) ++ x86_64-*linux*|x86_64-gnu*|x86_64-*redox*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) +@@ -12168,7 +12168,7 @@ + ;; + + # This must be glibc/ELF. +-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) ++linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu* | redox*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no +diff --color -ruwN source/src/chartype.h source-new/src/chartype.h +--- source/src/chartype.h 2022-06-11 14:57:59.000000000 +0700 ++++ source-new/src/chartype.h 2025-09-18 06:38:37.401509690 +0700 +@@ -39,7 +39,8 @@ + !(defined(__APPLE__) && defined(__MACH__)) && \ + !defined(__OpenBSD__) && \ + !defined(__FreeBSD__) && \ +- !defined(__DragonFly__) ++ !defined(__DragonFly__) && \ ++ !defined(__redox__) + #ifndef __STDC_ISO_10646__ + /* In many places it is assumed that the first 127 code points are ASCII + * compatible, so ensure wchar_t indeed does ISO 10646 and not some other +diff --color -ruwN source/src/editline/readline.h source-new/src/editline/readline.h +--- source/src/editline/readline.h 2023-08-27 14:25:53.000000000 +0700 ++++ source-new/src/editline/readline.h 2025-09-18 06:41:15.169232816 +0700 +@@ -78,7 +78,7 @@ + + #ifndef CTRL + #include +-#if !defined(__sun) && !defined(__hpux) && !defined(_AIX) ++#if !defined(__sun) && !defined(__hpux) && !defined(_AIX) && !defined(__redox__) + #include + #endif + #ifndef CTRL +diff --color -ruwN source/src/sys.h source-new/src/sys.h +--- source/src/sys.h 2024-08-09 01:03:34.000000000 +0700 ++++ source-new/src/sys.h 2025-09-18 06:40:02.388537017 +0700 +@@ -116,10 +116,6 @@ + typedef unsigned int u_int32_t; + #endif + +-#ifndef HAVE_SIZE_MAX +-#define SIZE_MAX ((size_t)-1) +-#endif +- + #define REGEX /* Use POSIX.2 regular expression functions */ + #undef REGEXP /* Use UNIX V8 regular expression functions */ + +diff --color -ruwN source/src/wcsdup.c source-new/src/wcsdup.c +--- source/src/wcsdup.c 2022-06-11 14:57:59.000000000 +0700 ++++ source-new/src/wcsdup.c 2025-09-18 06:44:01.365917599 +0700 +@@ -11,7 +11,7 @@ + * code is also granted without any restrictions. + */ + +-#ifndef HAVE_WCSDUP ++#if !defined(HAVE_WCSDUP) && !defined(__redox__) + + #include "config.h" + From 261ea34f69374f35029daece91043e60e87776b4 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Fri, 19 Sep 2025 10:12:38 +0000 Subject: [PATCH 2830/3180] Make jobs applied to cargo and configurable from env --- src/bin/cook.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 945df17d..2b8ca991 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -894,7 +894,7 @@ function cookbook_cargo { --locked \ --no-track \ ${install_flags} \ - "$@" + -j "${COOKBOOK_MAKE_JOBS}" "$@" } # helper for installing binaries that are cargo examples @@ -905,7 +905,7 @@ function cookbook_cargo_examples { "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/${PACKAGE_PATH}/Cargo.toml" \ --example "${example}" \ - ${build_flags} + ${build_flags} -j "${COOKBOOK_MAKE_JOBS}" mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ "target/${TARGET}/${build_type}/examples/${example}" \ @@ -921,7 +921,7 @@ function cookbook_cargo_packages { "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/${PACKAGE_PATH}/Cargo.toml" \ --package "${package}" \ - ${build_flags} + ${build_flags} -j "${COOKBOOK_MAKE_JOBS}" mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ "target/${TARGET}/${build_type}/${package}" \ @@ -938,12 +938,17 @@ COOKBOOK_CONFIGURE_FLAGS=( --enable-static ) COOKBOOK_MAKE="make" + +if [ -z "${COOKBOOK_MAKE_JOBS}" ] +then if [ -z "${IS_REDOX}" ] then COOKBOOK_MAKE_JOBS="$(nproc)" else COOKBOOK_MAKE_JOBS="1" fi +fi + function cookbook_configure { "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" "$@" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" From 61d5ecefc0cbf87e1c418e5f98c47efac1dad67d Mon Sep 17 00:00:00 2001 From: Ron Williams Date: Fri, 19 Sep 2025 05:44:27 -0700 Subject: [PATCH 2831/3180] openposixtestsuite: Add dependencies and simplify recipe --- recipes/tests/openposixtestsuite/recipe.toml | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/recipes/tests/openposixtestsuite/recipe.toml b/recipes/tests/openposixtestsuite/recipe.toml index 6aecb889..3ff2cb7e 100644 --- a/recipes/tests/openposixtestsuite/recipe.toml +++ b/recipes/tests/openposixtestsuite/recipe.toml @@ -1,11 +1,19 @@ [source] -git = "https://gitlab.redox-os.org/rw_van/openposixtestsuite.git" +git = "https://gitlab.redox-os.org/redox-os/openposixtestsuite.git" branch = "redox" [build] template = "custom" script = """ -rsync -av --delete "${COOKBOOK_SOURCE}/" ./ -mkdir -pv "${COOKBOOK_STAGE}/share/openposixtests" -rsync -av --delete . "${COOKBOOK_STAGE}/share/openposixtestsuite" +mkdir -pv "${COOKBOOK_STAGE}/share/openposixtestsuite" +cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/share/openposixtestsuite" """ + +[package] +dependencies = [ + "gcc13", + "gnu-binutils", + "gnu-make", + "sed", +] + From b10ef5910d3c4aa7e524f0bd62abce01c8912833 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Fri, 19 Sep 2025 21:58:47 +0700 Subject: [PATCH 2832/3180] Fix bash PATH to use double colon --- recipes/shells/bash/redox.patch | 132 +++++++++++--------------------- 1 file changed, 45 insertions(+), 87 deletions(-) diff --git a/recipes/shells/bash/redox.patch b/recipes/shells/bash/redox.patch index b0aefafb..bc238aea 100644 --- a/recipes/shells/bash/redox.patch +++ b/recipes/shells/bash/redox.patch @@ -1,6 +1,6 @@ -diff -ruwN bash-5.2.15/bashline.c source/bashline.c ---- bash-5.2.15/bashline.c 2022-04-17 15:37:12.000000000 -0700 -+++ source/bashline.c 2024-12-05 16:04:07.566380980 -0800 +diff -ruwN source/bashline.c source-new/bashline.c +--- source/bashline.c 2022-04-18 05:37:12.000000000 +0700 ++++ source-new/bashline.c 2025-09-01 04:36:35.272926519 +0700 @@ -2645,7 +2645,7 @@ const char *text; int state; @@ -10,9 +10,9 @@ diff -ruwN bash-5.2.15/bashline.c source/bashline.c return ((char *)NULL); #else static char *gname = (char *)NULL; -diff -ruwN bash-5.2.15/builtins/ulimit.def source/builtins/ulimit.def ---- bash-5.2.15/builtins/ulimit.def 2021-11-05 06:19:53.000000000 -0700 -+++ source/builtins/ulimit.def 2024-12-05 16:04:07.567380980 -0800 +diff -ruwN source/builtins/ulimit.def source-new/builtins/ulimit.def +--- source/builtins/ulimit.def 2021-11-05 20:19:53.000000000 +0700 ++++ source-new/builtins/ulimit.def 2025-09-01 04:36:35.272926519 +0700 @@ -609,7 +609,7 @@ } else @@ -22,38 +22,9 @@ diff -ruwN bash-5.2.15/builtins/ulimit.def source/builtins/ulimit.def if (getrlimit (limits[ind].parameter, &limit) < 0) return -1; # if defined (HPUX9) -diff -ruwN bash-5.2.15/config-top.h source/config-top.h ---- bash-5.2.15/config-top.h 2021-11-05 06:11:12.000000000 -0700 -+++ source/config-top.h 2024-12-06 01:06:18.324586528 -0800 -@@ -63,24 +63,24 @@ - /* The default value of the PATH variable. */ - #ifndef DEFAULT_PATH_VALUE - #define DEFAULT_PATH_VALUE \ -- "/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:." -+ "/usr/local/bin;/usr/local/sbin;/usr/bin;/usr/sbin;/bin;/sbin;." - #endif - - /* If you want to unconditionally set a value for PATH in every restricted - shell, set this. */ --/* #define RBASH_STATIC_PATH_VALUE "/rbin:/usr/rbin" */ -+/* #define RBASH_STATIC_PATH_VALUE "/rbin;/usr/rbin" */ - - /* The value for PATH when invoking `command -p'. This is only used when - the Posix.2 confstr () function, or CS_PATH define are not present. */ - #ifndef STANDARD_UTILS_PATH - #define STANDARD_UTILS_PATH \ -- "/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc" -+ "/bin;/usr/bin;/sbin;/usr/sbin;/etc;/usr/etc" - #endif - - /* The default path for enable -f */ - #ifndef DEFAULT_LOADABLE_BUILTINS_PATH - #define DEFAULT_LOADABLE_BUILTINS_PATH \ -- "/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:." -+ "/usr/local/lib/bash;/usr/lib/bash;/opt/local/lib/bash;/usr/pkg/lib/bash;/opt/pkg/lib/bash;." - #endif - - /* Default primary and secondary prompt strings. */ +diff -ruwN source/config-top.h source-new/config-top.h +--- source/config-top.h 2021-11-05 20:11:12.000000000 +0700 ++++ source-new/config-top.h 2025-09-19 21:55:55.439030906 +0700 @@ -199,3 +199,6 @@ /* Undefine or define to 0 if you don't want to allow associative array assignment using a compound list of key-value pairs. */ @@ -61,9 +32,9 @@ diff -ruwN bash-5.2.15/config-top.h source/config-top.h + +/* Don't check for a valid inode number when pattern matching on Redox */ +#define BROKEN_DIRENT_D_INO 1 -diff -ruwN bash-5.2.15/configure source/configure ---- bash-5.2.15/configure 2022-09-23 07:13:22.000000000 -0700 -+++ source/configure 2024-12-05 16:06:32.812286102 -0800 +diff -ruwN source/configure source-new/configure +--- source/configure 2022-09-23 21:13:22.000000000 +0700 ++++ source-new/configure 2025-09-01 04:52:47.542177017 +0700 @@ -3298,6 +3298,7 @@ *-nsk*) opt_bash_malloc=no ;; # HP NonStop *-haiku*) opt_bash_malloc=no ;; # Haiku OS @@ -72,9 +43,9 @@ diff -ruwN bash-5.2.15/configure source/configure esac # memory scrambling on free() -diff -ruwN bash-5.2.15/configure.ac source/configure.ac ---- bash-5.2.15/configure.ac 2022-09-23 07:12:27.000000000 -0700 -+++ source/configure.ac 2024-12-05 16:04:07.571380977 -0800 +diff -ruwN source/configure.ac source-new/configure.ac +--- source/configure.ac 2022-09-23 21:12:27.000000000 +0700 ++++ source-new/configure.ac 2025-09-01 04:36:35.275926660 +0700 @@ -92,6 +92,7 @@ *-nsk*) opt_bash_malloc=no ;; # HP NonStop *-haiku*) opt_bash_malloc=no ;; # Haiku OS @@ -83,9 +54,9 @@ diff -ruwN bash-5.2.15/configure.ac source/configure.ac esac # memory scrambling on free() -diff -ruwN bash-5.2.15/execute_cmd.c source/execute_cmd.c ---- bash-5.2.15/execute_cmd.c 2022-12-13 09:09:02.000000000 -0800 -+++ source/execute_cmd.c 2024-12-05 16:04:07.573380976 -0800 +diff -ruwN source/execute_cmd.c source-new/execute_cmd.c +--- source/execute_cmd.c 2022-12-14 00:09:02.000000000 +0700 ++++ source-new/execute_cmd.c 2025-09-01 04:36:35.275926660 +0700 @@ -1379,11 +1379,11 @@ nullcmd = (command == 0) || (command->type == cm_simple && command->value.Simple->words == 0 && command->value.Simple->redirects == 0); if (posixly_correct && nullcmd) @@ -100,9 +71,9 @@ diff -ruwN bash-5.2.15/execute_cmd.c source/execute_cmd.c before.tms_utime = before.tms_stime = before.tms_cutime = before.tms_cstime = 0; tbefore = shell_start_time; #endif -diff -ruwN bash-5.2.15/general.c source/general.c ---- bash-5.2.15/general.c 2022-11-23 14:10:12.000000000 -0800 -+++ source/general.c 2024-12-05 16:04:07.574380975 -0800 +diff -ruwN source/general.c source-new/general.c +--- source/general.c 2022-11-24 05:10:12.000000000 +0700 ++++ source-new/general.c 2025-09-19 17:09:24.754782168 +0700 @@ -589,6 +589,7 @@ void check_dev_tty () @@ -119,22 +90,9 @@ diff -ruwN bash-5.2.15/general.c source/general.c } /* Return 1 if PATH1 and PATH2 are the same file. This is kind of -@@ -1031,10 +1033,10 @@ - `:'. If I is 0, then the path has a leading colon. Trailing colons - are handled OK by the `else' part of the if statement; an empty - string is returned in that case. */ -- if (i && string[i] == ':') -+ if (i && string[i] == ';') - i++; - -- for (start = i; string[i] && string[i] != ':'; i++) -+ for (start = i; string[i] && string[i] != ';'; i++) - ; - - *p_index = i; -diff -ruwN bash-5.2.15/include/posixwait.h source/include/posixwait.h ---- bash-5.2.15/include/posixwait.h 2019-03-29 10:25:52.000000000 -0700 -+++ source/include/posixwait.h 2024-12-05 16:04:07.574380975 -0800 +diff -ruwN source/include/posixwait.h source-new/include/posixwait.h +--- source/include/posixwait.h 2019-03-30 00:25:52.000000000 +0700 ++++ source-new/include/posixwait.h 2025-09-01 04:36:35.276926707 +0700 @@ -34,7 +34,7 @@ /* How to get the status of a job. For Posix, this is just an @@ -153,9 +111,9 @@ diff -ruwN bash-5.2.15/include/posixwait.h source/include/posixwait.h # if !defined (WSTOPSIG) # define WSTOPSIG(s) ((s) >> 8) -diff -ruwN bash-5.2.15/lib/readline/input.c source/lib/readline/input.c ---- bash-5.2.15/lib/readline/input.c 2022-04-08 12:43:24.000000000 -0700 -+++ source/lib/readline/input.c 2024-12-05 16:04:07.575380974 -0800 +diff -ruwN source/lib/readline/input.c source-new/lib/readline/input.c +--- source/lib/readline/input.c 2022-04-09 02:43:24.000000000 +0700 ++++ source-new/lib/readline/input.c 2025-09-01 04:36:35.276926707 +0700 @@ -805,7 +805,7 @@ int result; unsigned char c; @@ -165,9 +123,9 @@ diff -ruwN bash-5.2.15/lib/readline/input.c source/lib/readline/input.c sigset_t empty_set; fd_set readfds; #endif -diff -ruwN bash-5.2.15/lib/readline/terminal.c source/lib/readline/terminal.c ---- bash-5.2.15/lib/readline/terminal.c 2022-04-05 07:44:17.000000000 -0700 -+++ source/lib/readline/terminal.c 2024-12-05 16:04:07.575380974 -0800 +diff -ruwN source/lib/readline/terminal.c source-new/lib/readline/terminal.c +--- source/lib/readline/terminal.c 2022-04-05 21:44:17.000000000 +0700 ++++ source-new/lib/readline/terminal.c 2025-09-01 04:36:35.286927174 +0700 @@ -102,7 +102,7 @@ static int tcap_initialized; @@ -177,9 +135,9 @@ diff -ruwN bash-5.2.15/lib/readline/terminal.c source/lib/readline/terminal.c # if defined (__EMX__) || defined (NEED_EXTERN_PC) extern # endif /* __EMX__ || NEED_EXTERN_PC */ -diff -ruwN bash-5.2.15/lib/sh/getcwd.c source/lib/sh/getcwd.c ---- bash-5.2.15/lib/sh/getcwd.c 2012-03-10 07:48:50.000000000 -0800 -+++ source/lib/sh/getcwd.c 2024-12-05 16:04:07.575380974 -0800 +diff -ruwN source/lib/sh/getcwd.c source-new/lib/sh/getcwd.c +--- source/lib/sh/getcwd.c 2012-03-10 22:48:50.000000000 +0700 ++++ source-new/lib/sh/getcwd.c 2025-09-01 04:36:35.286927174 +0700 @@ -20,7 +20,7 @@ #include @@ -189,9 +147,9 @@ diff -ruwN bash-5.2.15/lib/sh/getcwd.c source/lib/sh/getcwd.c #if !defined (__GNUC__) && !defined (HAVE_ALLOCA_H) && defined (_AIX) #pragma alloca -diff -ruwN bash-5.2.15/lib/sh/input_avail.c source/lib/sh/input_avail.c ---- bash-5.2.15/lib/sh/input_avail.c 2021-05-24 08:16:33.000000000 -0700 -+++ source/lib/sh/input_avail.c 2024-12-05 16:04:07.576380974 -0800 +diff -ruwN source/lib/sh/input_avail.c source-new/lib/sh/input_avail.c +--- source/lib/sh/input_avail.c 2021-05-24 22:16:33.000000000 +0700 ++++ source-new/lib/sh/input_avail.c 2025-09-01 04:36:35.298927735 +0700 @@ -33,7 +33,7 @@ # include #endif /* HAVE_SYS_FILE_H */ @@ -201,9 +159,9 @@ diff -ruwN bash-5.2.15/lib/sh/input_avail.c source/lib/sh/input_avail.c # include #endif -diff -ruwN bash-5.2.15/lib/sh/strtoimax.c source/lib/sh/strtoimax.c ---- bash-5.2.15/lib/sh/strtoimax.c 2021-09-10 07:32:35.000000000 -0700 -+++ source/lib/sh/strtoimax.c 2024-12-05 16:04:07.576380974 -0800 +diff -ruwN source/lib/sh/strtoimax.c source-new/lib/sh/strtoimax.c +--- source/lib/sh/strtoimax.c 2021-09-10 21:32:35.000000000 +0700 ++++ source-new/lib/sh/strtoimax.c 2025-09-01 04:36:35.301927876 +0700 @@ -55,6 +55,8 @@ extern long long strtoll PARAMS((const char *, char **, int)); #endif @@ -222,9 +180,9 @@ diff -ruwN bash-5.2.15/lib/sh/strtoimax.c source/lib/sh/strtoimax.c #ifdef TESTING # include int -diff -ruwN bash-5.2.15/parse.y source/parse.y ---- bash-5.2.15/parse.y 2022-12-13 09:09:02.000000000 -0800 -+++ source/parse.y 2024-12-05 16:04:07.577380973 -0800 +diff -ruwN source/parse.y source-new/parse.y +--- source/parse.y 2022-12-14 00:09:02.000000000 +0700 ++++ source-new/parse.y 2025-09-01 04:36:35.302927923 +0700 @@ -2625,6 +2625,7 @@ parser_state |= PST_ENDALIAS; /* We need to do this to make sure last_shell_getc_is_singlebyte returns @@ -241,9 +199,9 @@ diff -ruwN bash-5.2.15/parse.y source/parse.y return ' '; /* END_ALIAS */ } #endif -diff -ruwN bash-5.2.15/y.tab.c source/y.tab.c ---- bash-5.2.15/y.tab.c 2022-12-13 09:09:02.000000000 -0800 -+++ source/y.tab.c 2024-12-05 16:04:07.579380972 -0800 +diff -ruwN source/y.tab.c source-new/y.tab.c +--- source/y.tab.c 2022-12-14 00:09:02.000000000 +0700 ++++ source-new/y.tab.c 2025-09-01 04:36:35.307928157 +0700 @@ -4936,6 +4936,7 @@ parser_state |= PST_ENDALIAS; /* We need to do this to make sure last_shell_getc_is_singlebyte returns From ce270cacaba931a275df5492f77ff69b8ad6aeb7 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Fri, 19 Sep 2025 22:22:04 +0700 Subject: [PATCH 2833/3180] Remove git PATH custom handling --- recipes/dev/git/git.patch | 175 ++++++-------------------------------- 1 file changed, 28 insertions(+), 147 deletions(-) diff --git a/recipes/dev/git/git.patch b/recipes/dev/git/git.patch index 0e20bc96..f1d9b1e5 100644 --- a/recipes/dev/git/git.patch +++ b/recipes/dev/git/git.patch @@ -1,6 +1,6 @@ -diff -ruwN git-2.13.1/compat/bswap.h source/compat/bswap.h ---- git-2.13.1/compat/bswap.h 2017-06-04 19:08:11.000000000 -0600 -+++ source/compat/bswap.h 2025-04-24 11:20:06.475749424 -0600 +diff -ruwN source/compat/bswap.h source-new/compat/bswap.h +--- source/compat/bswap.h 2017-06-05 08:08:11.000000000 +0700 ++++ source-new/compat/bswap.h 2025-09-01 04:41:10.337224520 +0700 @@ -1,3 +1,7 @@ +#if defined(__redox__) +#include @@ -9,9 +9,9 @@ diff -ruwN git-2.13.1/compat/bswap.h source/compat/bswap.h /* * Let's make sure we always have a sane definition for ntohl()/htonl(). * Some libraries define those as a function call, just to perform byte -diff -ruwN git-2.13.1/compat/terminal.c source/compat/terminal.c ---- git-2.13.1/compat/terminal.c 2017-06-04 19:08:11.000000000 -0600 -+++ source/compat/terminal.c 2025-04-18 10:00:11.318697446 -0600 +diff -ruwN source/compat/terminal.c source-new/compat/terminal.c +--- source/compat/terminal.c 2017-06-05 08:08:11.000000000 +0700 ++++ source-new/compat/terminal.c 2025-09-01 04:41:10.337224520 +0700 @@ -137,6 +137,18 @@ return buf.buf; } @@ -31,9 +31,9 @@ diff -ruwN git-2.13.1/compat/terminal.c source/compat/terminal.c #else char *git_terminal_prompt(const char *prompt, int echo) -diff -ruwN git-2.13.1/configure source/configure ---- git-2.13.1/configure 2017-06-04 19:08:11.000000000 -0600 -+++ source/configure 2025-04-18 10:00:11.318697446 -0600 +diff -ruwN source/configure source-new/configure +--- source/configure 2017-06-05 08:08:11.000000000 +0700 ++++ source-new/configure 2025-09-01 04:41:10.338224544 +0700 @@ -6156,7 +6156,7 @@ ac_res=$ac_cv_search_getaddrinfo if test "$ac_res" != no; then : @@ -43,33 +43,10 @@ diff -ruwN git-2.13.1/configure source/configure else NO_IPV6=YesPlease fi -diff -ruwN git-2.13.1/daemon.c source/daemon.c ---- git-2.13.1/daemon.c 2017-06-04 19:08:11.000000000 -0600 -+++ source/daemon.c 2025-04-18 10:00:11.319697447 -0600 -@@ -71,13 +71,21 @@ - return hi->ip_address.buf; - } - -+#if defined(__redox__) -+#define LOG_ERR 0 -+#define LOG_INFO 1 -+#endif -+ - static void logreport(int priority, const char *err, va_list params) - { -+#if !defined(__redox__) - if (log_syslog) { - char buf[1024]; - vsnprintf(buf, sizeof(buf), err, params); - syslog(priority, "%s", buf); -- } else { -+ } else -+#endif -+ { - /* - * Since stderr is set to buffered mode, the - * logging of different processes will not overlap -@@ -888,8 +896,12 @@ +diff -ruwN source/daemon.c source-new/daemon.c +--- source/daemon.c 2017-06-05 08:08:11.000000000 +0700 ++++ source-new/daemon.c 2025-09-19 22:14:42.743240085 +0700 +@@ -888,8 +888,12 @@ if (!reuseaddr) return 0; @@ -82,34 +59,9 @@ diff -ruwN git-2.13.1/daemon.c source/daemon.c } struct socketlist { -@@ -1174,11 +1186,7 @@ - if (!group_name) - c.gid = c.pass->pw_gid; - else { -- struct group *group = getgrnam(group_name); -- if (!group) - die("group not found - %s", group_name); -- -- c.gid = group->gr_gid; - } - - return &c; -@@ -1348,10 +1356,12 @@ - usage(daemon_usage); - } - -+#if !defined(__redox__) - if (log_syslog) { - openlog("git-daemon", LOG_PID, LOG_DAEMON); - set_die_routine(daemon_die); - } else -+#endif - /* avoid splitting a message in the middle */ - setvbuf(stderr, NULL, _IOFBF, 4096); - -diff -ruwN git-2.13.1/git-compat-util.h source/git-compat-util.h ---- git-2.13.1/git-compat-util.h 2017-06-04 19:08:11.000000000 -0600 -+++ source/git-compat-util.h 2025-04-18 10:00:11.319697447 -0600 +diff -ruwN source/git-compat-util.h source-new/git-compat-util.h +--- source/git-compat-util.h 2017-06-05 08:08:11.000000000 +0700 ++++ source-new/git-compat-util.h 2025-09-19 22:09:29.361246446 +0700 @@ -1,6 +1,18 @@ #ifndef GIT_COMPAT_UTIL_H #define GIT_COMPAT_UTIL_H @@ -129,27 +81,10 @@ diff -ruwN git-2.13.1/git-compat-util.h source/git-compat-util.h #define _FILE_OFFSET_BITS 64 -@@ -179,7 +191,9 @@ - #include - #include - #include -+#if !defined(__redox__) - #include -+#endif - #ifndef NO_SYS_POLL_H - #include - #else -@@ -320,8 +334,20 @@ - #endif - - #ifndef PATH_SEP -+#if defined(__redox__) -+#define PATH_SEP ';' -+#else +@@ -323,6 +335,14 @@ #define PATH_SEP ':' #endif -+#endif -+ + +#ifndef DEV_NULL +#if defined(__redox__) +#define DEV_NULL "/scheme/null" @@ -157,58 +92,13 @@ diff -ruwN git-2.13.1/git-compat-util.h source/git-compat-util.h +#define DEV_NULL "/dev/null" +#endif +#endif - ++ #ifdef HAVE_PATHS_H #include -@@ -333,6 +359,16 @@ - #ifndef has_dos_drive_prefix - static inline int git_has_dos_drive_prefix(const char *path) - { -+#if defined(__redox__) -+ char * pos = (char *)path; -+ char c; -+ while (c = *pos) { -+ pos++; -+ if (c == ':') { -+ return pos - path; -+ } -+ } -+#endif - return 0; - } - #define has_dos_drive_prefix git_has_dos_drive_prefix -@@ -341,7 +377,13 @@ - #ifndef skip_dos_drive_prefix - static inline int git_skip_dos_drive_prefix(char **path) - { -+#if defined(__redox__) -+ int ret = has_dos_drive_prefix(*path); -+ *path += ret; -+ return ret; -+#else - return 0; -+#endif - } - #define skip_dos_drive_prefix git_skip_dos_drive_prefix #endif -@@ -357,7 +399,14 @@ - #ifndef offset_1st_component - static inline int git_offset_1st_component(const char *path) - { -+#if defined(__redox__) -+ char * pos = (char *)path; -+ skip_dos_drive_prefix(&pos); -+ pos += is_dir_sep(*pos); -+ return pos - path; -+#else - return is_dir_sep(path[0]); -+#endif - } - #define offset_1st_component git_offset_1st_component - #endif -diff -ruwN git-2.13.1/Makefile source/Makefile ---- git-2.13.1/Makefile 2017-06-04 19:08:11.000000000 -0600 -+++ source/Makefile 2025-04-18 10:00:11.319697447 -0600 +diff -ruwN source/Makefile source-new/Makefile +--- source/Makefile 2017-06-05 08:08:11.000000000 +0700 ++++ source-new/Makefile 2025-09-01 04:41:10.339224568 +0700 @@ -979,7 +979,7 @@ BUILTIN_OBJS += builtin/write-tree.o @@ -257,9 +147,9 @@ diff -ruwN git-2.13.1/Makefile source/Makefile ln -s "git-remote-http$X" "$$execdir/$$p" 2>/dev/null || \ cp "$$execdir/git-remote-http$X" "$$execdir/$$p" || exit; \ done && \ -diff -ruwN git-2.13.1/run-command.c source/run-command.c ---- git-2.13.1/run-command.c 2017-06-04 19:08:11.000000000 -0600 -+++ source/run-command.c 2025-04-18 10:00:11.320697447 -0600 +diff -ruwN source/run-command.c source-new/run-command.c +--- source/run-command.c 2017-06-05 08:08:11.000000000 +0700 ++++ source-new/run-command.c 2025-09-19 22:08:26.892232334 +0700 @@ -120,9 +120,9 @@ #ifndef GIT_WINDOWS_NATIVE static inline void dup_devnull(int to) @@ -272,18 +162,9 @@ diff -ruwN git-2.13.1/run-command.c source/run-command.c if (dup2(fd, to) < 0) die_errno(_("dup2(%d,%d) failed"), fd, to); close(fd); -@@ -138,7 +138,7 @@ - return NULL; - - while (1) { -- const char *end = strchrnul(p, ':'); -+ const char *end = strchrnul(p, PATH_SEP); - - strbuf_reset(&buf); - -diff -ruwN git-2.13.1/setup.c source/setup.c ---- git-2.13.1/setup.c 2017-06-04 19:08:11.000000000 -0600 -+++ source/setup.c 2025-04-18 10:00:11.320697447 -0600 +diff -ruwN source/setup.c source-new/setup.c +--- source/setup.c 2017-06-05 08:08:11.000000000 +0700 ++++ source-new/setup.c 2025-09-01 04:41:10.339224568 +0700 @@ -1146,11 +1146,11 @@ /* if any standard file descriptor is missing open it to /dev/null */ void sanitize_stdfds(void) From 1816f94f9805a35a9a7085aa52e46635cfbe638c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 19 Sep 2025 15:00:35 -0600 Subject: [PATCH 2834/3180] xserver-xorg: disable use of SO_PEERCRED until it works --- recipes/wip/x11/xserver-xorg/recipe.toml | 1 + recipes/wip/x11/xserver-xorg/redox.patch | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/recipes/wip/x11/xserver-xorg/recipe.toml b/recipes/wip/x11/xserver-xorg/recipe.toml index 8436f7b7..3f1fa0b5 100644 --- a/recipes/wip/x11/xserver-xorg/recipe.toml +++ b/recipes/wip/x11/xserver-xorg/recipe.toml @@ -39,5 +39,6 @@ cookbook_meson \ -Dudev=false \ -Dudev_kms=false \ -Dvgahw=false \ + -Dxres=false \ -Dxvfb=false """ diff --git a/recipes/wip/x11/xserver-xorg/redox.patch b/recipes/wip/x11/xserver-xorg/redox.patch index 12dd9add..de43a570 100644 --- a/recipes/wip/x11/xserver-xorg/redox.patch +++ b/recipes/wip/x11/xserver-xorg/redox.patch @@ -82,7 +82,7 @@ diff -ruwN xorg-server-21.1.16/hw/xfree86/os-support/xf86_OSlib.h source/hw/xfre #include diff -ruwN xorg-server-21.1.16/include/meson.build source/include/meson.build --- xorg-server-21.1.16/include/meson.build 2025-02-25 11:56:05.000000000 -0700 -+++ source/include/meson.build 2025-05-06 18:15:08.036215875 -0600 ++++ source/include/meson.build 2025-09-15 08:40:00.484333455 -0600 @@ -162,7 +162,7 @@ conf_data.set('HAVE_PORT_CREATE', cc.has_function('port_create') ? '1' : false) conf_data.set('HAVE_REALLOCARRAY', cc.has_function('reallocarray', dependencies: libbsd_dep) ? '1' : false) @@ -92,7 +92,7 @@ diff -ruwN xorg-server-21.1.16/include/meson.build source/include/meson.build conf_data.set('HAVE_SHMCTL64', cc.has_function('shmctl64') ? '1' : false) conf_data.set('HAVE_SIGACTION', cc.has_function('sigaction') ? '1' : false) conf_data.set('HAVE_SIGPROCMASK', cc.has_function('sigprocmask') ? '1' : false) -@@ -190,7 +190,7 @@ +@@ -190,14 +190,14 @@ conf_data.set('LISTEN_LOCAL', get_option('listen_local')) if cc.has_header_symbol('sys/socket.h', 'SCM_RIGHTS') @@ -100,7 +100,18 @@ diff -ruwN xorg-server-21.1.16/include/meson.build source/include/meson.build + #TODO conf_data.set('XTRANS_SEND_FDS', '1') endif - if conf_data.get('HAVE_GETPEEREID').to_int() == 0 and conf_data.get('HAVE_GETPEERUCRED').to_int() == 0 +-if conf_data.get('HAVE_GETPEEREID').to_int() == 0 and conf_data.get('HAVE_GETPEERUCRED').to_int() == 0 +- if not cc.has_header_symbol('sys/socket.h', 'SO_PEERCRED') ++#if conf_data.get('HAVE_GETPEEREID').to_int() == 0 and conf_data.get('HAVE_GETPEERUCRED').to_int() == 0 ++ #if not cc.has_header_symbol('sys/socket.h', 'SO_PEERCRED') + conf_data.set('NO_LOCAL_CLIENT_CRED', 1) +- endif +-endif ++ #endif ++#endif + + conf_data.set('TCPCONN', '1') + conf_data.set('UNIXCONN', host_machine.system() != 'windows' ? '1' : false) @@ -212,7 +212,7 @@ conf_data.set('DRI2', build_dri2 ? '1' : false) conf_data.set('DRI3', build_dri3 ? '1' : false) From 450349c39202d643e6c5eefe9e9ea526b0f7f1f1 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sat, 20 Sep 2025 16:06:02 +0700 Subject: [PATCH 2835/3180] Support PHP and Python with OpenSSL --- recipes/libs/openssl1/recipe.toml | 2 +- recipes/libs/readline/recipe.toml | 10 +- recipes/wip/dev/lang/php-composer/recipe.toml | 9 ++ recipes/wip/dev/lang/php80/recipe.toml | 79 ++++++++++++++++ recipes/wip/dev/lang/php80/redox.patch | 92 +++++++++++++++++++ recipes/wip/dev/lang/php84/recipe.toml | 21 +++-- recipes/wip/dev/lang/python312/recipe.toml | 10 +- recipes/wip/dev/lang/python39/recipe.toml | 14 ++- recipes/wip/libs/other/libuuid/redox.patch | 46 ++++++++-- 9 files changed, 256 insertions(+), 27 deletions(-) create mode 100644 recipes/wip/dev/lang/php-composer/recipe.toml create mode 100644 recipes/wip/dev/lang/php80/recipe.toml create mode 100644 recipes/wip/dev/lang/php80/redox.patch diff --git a/recipes/libs/openssl1/recipe.toml b/recipes/libs/openssl1/recipe.toml index d51979cb..ea2cb08f 100644 --- a/recipes/libs/openssl1/recipe.toml +++ b/recipes/libs/openssl1/recipe.toml @@ -10,7 +10,7 @@ ARCH="${TARGET%%-*}" COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/Configure" COOKBOOK_CONFIGURE_FLAGS=( shared -# threads # needs ucontext.h + threads no-dgram "redox-${ARCH}" --prefix="/" diff --git a/recipes/libs/readline/recipe.toml b/recipes/libs/readline/recipe.toml index c4a70779..35a30f59 100644 --- a/recipes/libs/readline/recipe.toml +++ b/recipes/libs/readline/recipe.toml @@ -6,7 +6,13 @@ patches = [ ] [build] -template = "configure" -depends = [ +template = "custom" +dependencies = [ "ncurses", ] +script = """ +DYNAMIC_INIT +cookbook_configure +ln -s "libhistory.so.7" "${COOKBOOK_STAGE}"/usr/lib/libhistory.so +ln -s "libreadline.so.7" "${COOKBOOK_STAGE}"/usr/lib/libreadline.so +""" diff --git a/recipes/wip/dev/lang/php-composer/recipe.toml b/recipes/wip/dev/lang/php-composer/recipe.toml new file mode 100644 index 00000000..1d4d5565 --- /dev/null +++ b/recipes/wip/dev/lang/php-composer/recipe.toml @@ -0,0 +1,9 @@ +#TODO must be run using `php $(which composer)` +[build] +template = "custom" +script = """ +mkdir -p "${COOKBOOK_STAGE}"/usr/bin +wget -c https://getcomposer.org/download/2.8.12/composer.phar +chmod a+x composer.phar +cp composer.phar ${COOKBOOK_STAGE}/usr/bin/composer +""" diff --git a/recipes/wip/dev/lang/php80/recipe.toml b/recipes/wip/dev/lang/php80/recipe.toml new file mode 100644 index 00000000..0a45f699 --- /dev/null +++ b/recipes/wip/dev/lang/php80/recipe.toml @@ -0,0 +1,79 @@ +#TODO promote +[source] +tar = "https://www.php.net/distributions/php-8.0.30.tar.xz" +patches = [ + "redox.patch" +] + +[build] +template = "custom" +dependencies = [ + "bzip2", + "curl", + "gettext", + "libffi", + "libgmp", + "libavif", + "libicu", + "libjpeg", + "libedit", + "libonig", + "libpng", + "libsodium", + "libwebp", + "libxml2", + "libiconv", + "libzip", + "ncurses", + "nghttp2", + "openssl1", + "pcre", + "sqlite3", + "xz", + "zlib", +] +script = """ +DYNAMIC_INIT +export SUFFIX="80" + +# extension stuff +export CURL_LIBS="-lcurl -lnghttp2 -lssl -lcrypto" +export CXXFLAGS="-std=c++17" +COOKBOOK_CONFIGURE_FLAGS+=( + --program-suffix=${SUFFIX} + --sysconfdir=/etc + --with-config-file-path=/etc/php/$SUFFIX + --with-config-file-scan-dir=/etc/php/$SUFFIX/conf.d + --with-iconv="${COOKBOOK_SYSROOT}/usr" + --disable-opcache + --enable-bcmath + --enable-calendar +# --enable-fpm # need times function + --enable-gd + --enable-intl + --enable-mbstring + --with-curl + --with-gettext + --with-gmp + --with-jpeg + --with-webp + --with-avif + --with-ffi + --with-libedit + --with-openssl + --with-sodium + --with-zip +) + +"${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" "$@" +"${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" +"${COOKBOOK_MAKE}" install \ + INSTALL_ROOT="${COOKBOOK_STAGE}" \ + datarootdir=/usr/share localstatedir=/var + +for bin in "php-cgi" "php-config" "php" "phpdbg" "phpize"; do + ln -s "$bin$SUFFIX" ${COOKBOOK_STAGE}/usr/bin/$bin +done +mkdir -p ${COOKBOOK_STAGE}/etc/php/$SUFFIX/conf.d +cp ${COOKBOOK_SOURCE}/php.ini* ${COOKBOOK_STAGE}/etc/php/$SUFFIX/ +""" diff --git a/recipes/wip/dev/lang/php80/redox.patch b/recipes/wip/dev/lang/php80/redox.patch new file mode 100644 index 00000000..4fcf8326 --- /dev/null +++ b/recipes/wip/dev/lang/php80/redox.patch @@ -0,0 +1,92 @@ +diff -ruwN source/configure source-new/configure +--- source/configure 2023-08-04 00:13:08.000000000 +0700 ++++ source-new/configure 2025-09-20 05:04:59.993364619 +0700 +@@ -46043,7 +46043,7 @@ + fi + + +- ax_cxx_compile_alternatives="11 0x" ax_cxx_compile_cxx11_required=truednl ++ ax_cxx_compile_alternatives="17 0x" ax_cxx_compile_cxx11_required=truednl + ac_ext=cpp + ac_cpp='$CXXCPP $CPPFLAGS' + ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -72692,7 +72692,7 @@ + printf %s "(cached) " >&6 + else $as_nop + +- php_cv_crypt_r_style=none ++ php_cv_crypt_r_style=struct_crypt_data_gnu_source + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + +diff -ruwN source/ext/intl/config.m4 source-new/ext/intl/config.m4 +--- source/ext/intl/config.m4 2023-08-04 00:13:08.000000000 +0700 ++++ source-new/ext/intl/config.m4 2025-09-20 05:05:18.892414632 +0700 +@@ -83,7 +83,7 @@ + breakiterator/codepointiterator_methods.cpp" + + PHP_REQUIRE_CXX() +- PHP_CXX_COMPILE_STDCXX(11, mandatory, PHP_INTL_STDCXX) ++ PHP_CXX_COMPILE_STDCXX(17, mandatory, PHP_INTL_STDCXX) + PHP_INTL_CXX_FLAGS="$INTL_COMMON_FLAGS $PHP_INTL_STDCXX $ICU_CXXFLAGS" + case $host_alias in + *cygwin*) PHP_INTL_CXX_FLAGS="$PHP_INTL_CXX_FLAGS -D_POSIX_C_SOURCE=200809L" +diff -ruwN source/ext/phar/Makefile.frag source-new/ext/phar/Makefile.frag +--- source/ext/phar/Makefile.frag 2023-08-04 00:13:08.000000000 +0700 ++++ source-new/ext/phar/Makefile.frag 2025-09-19 23:19:19.020178026 +0700 +@@ -9,20 +9,7 @@ + pharcmd: $(builddir)/phar.php $(builddir)/phar.phar + + PHP_PHARCMD_SETTINGS = -n -d 'open_basedir=' -d 'output_buffering=0' -d 'memory_limit=-1' -d phar.readonly=0 +-PHP_PHARCMD_EXECUTABLE = ` \ +- if test -x "$(top_builddir)/$(SAPI_CLI_PATH)"; then \ +- $(top_srcdir)/build/shtool echo -n -- "$(top_builddir)/$(SAPI_CLI_PATH) -n"; \ +- if test "x$(PHP_MODULES)" != "x"; then \ +- $(top_srcdir)/build/shtool echo -n -- " -d extension_dir=$(top_builddir)/modules"; \ +- for i in bz2 zlib phar; do \ +- if test -f "$(top_builddir)/modules/$$i.la"; then \ +- . $(top_builddir)/modules/$$i.la; $(top_srcdir)/build/shtool echo -n -- " -d extension=$$dlname"; \ +- fi; \ +- done; \ +- fi; \ +- else \ +- $(top_srcdir)/build/shtool echo -n -- "$(PHP_EXECUTABLE)"; \ +- fi;` ++PHP_PHARCMD_EXECUTABLE = "true" + PHP_PHARCMD_BANG = `$(top_srcdir)/build/shtool echo -n -- "$(INSTALL_ROOT)$(bindir)/$(program_prefix)php$(program_suffix)$(EXEEXT)";` + + $(builddir)/phar/phar.inc: $(srcdir)/phar/phar.inc +@@ -42,9 +29,3 @@ + + install-pharcmd: pharcmd + -@$(mkinstalldirs) $(INSTALL_ROOT)$(bindir) +- $(INSTALL) $(builddir)/phar.phar $(INSTALL_ROOT)$(bindir)/$(program_prefix)phar$(program_suffix).phar +- -@rm -f $(INSTALL_ROOT)$(bindir)/$(program_prefix)phar$(program_suffix) +- $(LN_S) -f $(program_prefix)phar$(program_suffix).phar $(INSTALL_ROOT)$(bindir)/$(program_prefix)phar$(program_suffix) +- @$(mkinstalldirs) $(INSTALL_ROOT)$(mandir)/man1 +- @$(INSTALL_DATA) $(builddir)/phar.1 $(INSTALL_ROOT)$(mandir)/man1/$(program_prefix)phar$(program_suffix).1 +- @$(INSTALL_DATA) $(builddir)/phar.phar.1 $(INSTALL_ROOT)$(mandir)/man1/$(program_prefix)phar$(program_suffix).phar.1 +diff -ruwN source/ext/posix/posix.c source-new/ext/posix/posix.c +--- source/ext/posix/posix.c 2023-08-04 00:13:08.000000000 +0700 ++++ source-new/ext/posix/posix.c 2025-09-19 22:21:28.998031846 +0700 +@@ -443,7 +443,7 @@ + + ZEND_PARSE_PARAMETERS_NONE(); + +- if ((ticks = times(&t)) == -1) { ++ { + POSIX_G(last_error) = errno; + RETURN_FALSE; + } +diff -ruwN source/ext/standard/hrtime.c source-new/ext/standard/hrtime.c +--- source/ext/standard/hrtime.c 2023-08-04 00:13:08.000000000 +0700 ++++ source-new/ext/standard/hrtime.c 2025-09-19 23:34:34.839471333 +0700 +@@ -70,6 +70,8 @@ + return -1; + } + ++#elif defined(__redox__) ++ /* pass */ + #elif PHP_HRTIME_PLATFORM_POSIX + + #if !_POSIX_MONOTONIC_CLOCK diff --git a/recipes/wip/dev/lang/php84/recipe.toml b/recipes/wip/dev/lang/php84/recipe.toml index 51455476..3b76747a 100644 --- a/recipes/wip/dev/lang/php84/recipe.toml +++ b/recipes/wip/dev/lang/php84/recipe.toml @@ -8,14 +8,18 @@ patches = [ [build] template = "custom" dependencies = [ + "bzip2", "curl", + "gettext", "libffi", "libgmp", "libavif", + "libicu", "libjpeg", "libedit", "libonig", "libpng", + "libsodium", "libwebp", "libxml2", "libiconv", @@ -24,7 +28,6 @@ dependencies = [ "nghttp2", "openssl1", "pcre", - "readline", "sqlite3", "xz", "zlib", @@ -37,24 +40,26 @@ export CURL_LIBS="-lcurl -lnghttp2 -lssl -lcrypto" COOKBOOK_CONFIGURE_FLAGS+=( --program-suffix=${SUFFIX} --sysconfdir=/etc - --with-config-file-path=/etc - --with-config-file-scan-dir=/etc/conf.d + --with-config-file-path=/etc/php/$SUFFIX + --with-config-file-scan-dir=/etc/php/$SUFFIX/conf.d --with-iconv="${COOKBOOK_SYSROOT}/usr" - --disable-phar # doesn't work cross compiling --disable-opcache + --enable-bcmath + --enable-calendar # --enable-fpm # need times function --enable-gd + --enable-intl + --enable-mbstring --with-curl + --with-gettext --with-gmp --with-jpeg --with-webp --with-avif --with-ffi - --with-intl - --with-mbstring --with-libedit - --with-readline # --with-openssl # need 1.1.1 + --with-sodium --with-zip ) @@ -67,4 +72,6 @@ COOKBOOK_CONFIGURE_FLAGS+=( for bin in "php-cgi" "php-config" "php" "phpdbg" "phpize"; do ln -s "$bin$SUFFIX" ${COOKBOOK_STAGE}/usr/bin/$bin done +mkdir -p ${COOKBOOK_STAGE}/etc/php/$SUFFIX/conf.d +cp ${COOKBOOK_SOURCE}/php.ini* ${COOKBOOK_STAGE}/etc/php/$SUFFIX/ """ diff --git a/recipes/wip/dev/lang/python312/recipe.toml b/recipes/wip/dev/lang/python312/recipe.toml index ada36f03..c9c8cef8 100644 --- a/recipes/wip/dev/lang/python312/recipe.toml +++ b/recipes/wip/dev/lang/python312/recipe.toml @@ -8,10 +8,14 @@ patches = [ [build] template = "custom" dependencies = [ + "bzip2", + "libffi", + "libuuid", # "openssl1", requires 1.1.1 -# "ncurses", + "ncurses", "ncursesw", -# "readline", unable to link + "readline", + "sqlite3", "zlib", "xz" ] @@ -22,11 +26,11 @@ ARCH="${TARGET%%-*}" COOKBOOK_CONFIGURE_FLAGS=( --prefix=/usr + --enable-shared --disable-ipv6 --host=${GNU_TARGET} --build=$ARCH --with-build-python -# --with-openssl="${COOKBOOK_SYSROOT}/usr" --with-ensurepip=install ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no diff --git a/recipes/wip/dev/lang/python39/recipe.toml b/recipes/wip/dev/lang/python39/recipe.toml index 537c920a..f7bc5ddb 100644 --- a/recipes/wip/dev/lang/python39/recipe.toml +++ b/recipes/wip/dev/lang/python39/recipe.toml @@ -1,17 +1,21 @@ #TODO Fix dynamic loading of C modules -#TODO Fix openssl dependency -#TODO Add additional dependencies (readline, ncurses, etc.) [source] tar = "https://www.python.org/ftp/python/3.9.9/Python-3.9.9.tar.xz" patches = [ -# 'redox.patch' + 'redox.patch' ] [build] template = "custom" dependencies = [ -# "openssl1", needs threading / ucontext.h + "bzip2", + "libffi", + "libuuid", + "ncurses", "ncursesw", + "openssl1", + "readline", + "sqlite3", "zlib", "xz" ] @@ -45,10 +49,10 @@ export PATH="${BUILDMACH_STAGE}/usr/local/bin:${PATH}" COOKBOOK_CONFIGURE_FLAGS=( --prefix=/usr + --enable-shared --disable-ipv6 --host=${GNU_TARGET} --build=$ARCH -# --with-openssl="${COOKBOOK_SYSROOT}/usr" --with-ensurepip=install ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no diff --git a/recipes/wip/libs/other/libuuid/redox.patch b/recipes/wip/libs/other/libuuid/redox.patch index 3b98fa75..1ede79c4 100644 --- a/recipes/wip/libs/other/libuuid/redox.patch +++ b/recipes/wip/libs/other/libuuid/redox.patch @@ -1,8 +1,7 @@ -diff --git a/config.sub b/config.sub -index 52f04bc..4a352eb 100755 ---- a/config.sub -+++ b/config.sub -@@ -1376,7 +1376,7 @@ case $os in +diff -ruwN source/config.sub source-new/config.sub +--- source/config.sub 2014-08-12 15:19:20.000000000 +0700 ++++ source-new/config.sub 2025-09-19 21:11:57.907457211 +0700 +@@ -1376,7 +1376,7 @@ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ @@ -11,10 +10,39 @@ index 52f04bc..4a352eb 100755 # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) -diff --git a/randutils.c b/randutils.c -index 80893d3..a39168d 100644 ---- a/randutils.c -+++ b/randutils.c +diff -ruwN source/configure source-new/configure +--- source/configure 2014-08-12 15:19:19.000000000 +0700 ++++ source-new/configure 2025-09-19 21:20:30.460699979 +0700 +@@ -5312,7 +5312,7 @@ + ;; + + # This must be glibc/ELF. +-linux* | k*bsd*-gnu | kopensolaris*-gnu) ++linux* | k*bsd*-gnu | kopensolaris*-gnu | redox*) + lt_cv_deplibs_check_method=pass_all + ;; + +@@ -8866,7 +8866,7 @@ + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + +- gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) ++ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu | redox*) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in +@@ -10534,7 +10534,7 @@ + ;; + + # This must be glibc/ELF. +-linux* | k*bsd*-gnu | kopensolaris*-gnu) ++linux* | k*bsd*-gnu | kopensolaris*-gnu | redox*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no +diff -ruwN source/randutils.c source-new/randutils.c +--- source/randutils.c 2014-08-12 15:07:18.000000000 +0700 ++++ source-new/randutils.c 2025-09-19 21:11:57.907659403 +0700 @@ -13,7 +13,7 @@ #include #include From cdf9fe3e8d9cb33802b699ae630945ebe78373fa Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sat, 20 Sep 2025 13:34:16 +0700 Subject: [PATCH 2836/3180] Port OpenSSL3 --- recipes/wip/dev/lang/php84/recipe.toml | 5 +- recipes/wip/dev/lang/python312/recipe.toml | 4 +- recipes/wip/libs/tls/openssl3/recipe.toml | 29 +++++++++++ recipes/wip/libs/tls/openssl3/redox.patch | 56 ++++++++++++++++++++++ recipes/wip/ssh/openssh/recipe.toml | 9 +--- recipes/wip/ssh/openssh/redox.patch | 13 ----- 6 files changed, 91 insertions(+), 25 deletions(-) create mode 100644 recipes/wip/libs/tls/openssl3/recipe.toml create mode 100644 recipes/wip/libs/tls/openssl3/redox.patch diff --git a/recipes/wip/dev/lang/php84/recipe.toml b/recipes/wip/dev/lang/php84/recipe.toml index 3b76747a..b15b8868 100644 --- a/recipes/wip/dev/lang/php84/recipe.toml +++ b/recipes/wip/dev/lang/php84/recipe.toml @@ -1,4 +1,4 @@ -#TODO fix openssl +#TODO promote [source] tar = "https://www.php.net/distributions/php-8.4.12.tar.xz" patches = [ @@ -27,6 +27,7 @@ dependencies = [ "ncurses", "nghttp2", "openssl1", + "openssl3", # put this after openssl1 "pcre", "sqlite3", "xz", @@ -58,7 +59,7 @@ COOKBOOK_CONFIGURE_FLAGS+=( --with-avif --with-ffi --with-libedit -# --with-openssl # need 1.1.1 + --with-openssl --with-sodium --with-zip ) diff --git a/recipes/wip/dev/lang/python312/recipe.toml b/recipes/wip/dev/lang/python312/recipe.toml index c9c8cef8..09bbee22 100644 --- a/recipes/wip/dev/lang/python312/recipe.toml +++ b/recipes/wip/dev/lang/python312/recipe.toml @@ -1,4 +1,4 @@ -#TODO works without pip, probably it requires openssl +#TODO works without pip [source] tar = "https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tar.xz" patches = [ @@ -11,7 +11,7 @@ dependencies = [ "bzip2", "libffi", "libuuid", -# "openssl1", requires 1.1.1 + "openssl3", "ncurses", "ncursesw", "readline", diff --git a/recipes/wip/libs/tls/openssl3/recipe.toml b/recipes/wip/libs/tls/openssl3/recipe.toml new file mode 100644 index 00000000..6ce485ee --- /dev/null +++ b/recipes/wip/libs/tls/openssl3/recipe.toml @@ -0,0 +1,29 @@ +[source] +tar = "https://github.com/openssl/openssl/releases/download/openssl-3.5.3/openssl-3.5.3.tar.gz" +patches = [ "redox.patch" ] + +[build] +template = "custom" +dependencies = [ + "zlib", + "zstd" +] +script = """ +DYNAMIC_INIT +ARCH="${TARGET%%-*}" +export ARFLAGS=cr +COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/Configure" +COOKBOOK_CONFIGURE_FLAGS=( + no-tests + no-unit-test + shared + zlib + enable-zstd + "redox-${ARCH}" + --prefix="/usr" +) +"${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" +"${COOKBOOK_MAKE}" -j1 # bug in make/ar +"${COOKBOOK_MAKE}" install_sw install_ssldirs DESTDIR="${COOKBOOK_STAGE}" +rm -rfv "${COOKBOOK_STAGE}/"{share,ssl} +""" diff --git a/recipes/wip/libs/tls/openssl3/redox.patch b/recipes/wip/libs/tls/openssl3/redox.patch new file mode 100644 index 00000000..e2038c92 --- /dev/null +++ b/recipes/wip/libs/tls/openssl3/redox.patch @@ -0,0 +1,56 @@ +diff -ruwN source/apps/lib/apps.c source-new/apps/lib/apps.c +--- source/apps/lib/apps.c 2025-09-16 19:05:33.000000000 +0700 ++++ source-new/apps/lib/apps.c 2025-09-20 12:29:36.439917319 +0700 +@@ -2839,7 +2839,7 @@ + return ret; + } + +-#elif defined(_SC_CLK_TCK) /* by means of unistd.h */ ++#elif defined(_SC_CLK_TCK) && !defined(__redox__) /* by means of unistd.h */ + # include + + double app_tminterval(int stop, int usertime) +diff -ruwN source/Configurations/10-main.conf source-new/Configurations/10-main.conf +--- source/Configurations/10-main.conf 2025-09-16 19:05:33.000000000 +0700 ++++ source-new/Configurations/10-main.conf 2025-09-20 13:13:14.569456910 +0700 +@@ -208,6 +208,40 @@ + shared_extension => ".so", + }, + ++### Redox configurations ++ "redox-common" => { ++ inherit_from => [ "BASE_unix" ], ++ cc => "gcc", ++ thread_scheme => "pthreads", ++ dso_scheme => "dlfcn", ++ shared_target => "linux-shared", ++ shared_cflag => "-fPIC", ++ shared_ldflag => sub { $disabled{pinshared} ? () : "-Wl,-znodelete" }, ++ shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)", ++ }, ++ "redox-generic64" => { ++ inherit_from => [ "redox-common" ], ++ bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR", ++ }, ++ "redox-aarch64" => { ++ inherit_from => [ "redox-generic64" ], ++ perlasm_scheme => "linux64", ++ }, ++ "redox-i686" => { ++ inherit_from => [ "redox-common" ], ++ bn_ops => "BN_LLONG", ++ perlasm_scheme => "elf", ++ }, ++ "redox-riscv64gc" => { ++ inherit_from => [ "redox-generic64" ], ++ perlasm_scheme => "linux64", ++ }, ++ "redox-x86_64" => { ++ inherit_from => [ "redox-generic64" ], ++ perlasm_scheme => "elf", ++ }, ++ ++ + #### Solaris configurations + "solaris-common" => { + inherit_from => [ "BASE_unix" ], diff --git a/recipes/wip/ssh/openssh/recipe.toml b/recipes/wip/ssh/openssh/recipe.toml index 44343a58..08683a8b 100644 --- a/recipes/wip/ssh/openssh/recipe.toml +++ b/recipes/wip/ssh/openssh/recipe.toml @@ -1,7 +1,5 @@ #TODO lack of resolv.h, expect dns not working #TODO lack of utmpx.h, expect no way to track login in sshd -#TODO lack of an equivalent to shadow.h, expect sshd password not working -#TODO lack of openssl support, use only ssh-keygen from redox [source] tar = "https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz" patches = [ @@ -10,14 +8,13 @@ patches = [ [build] template = "custom" dependencies = [ + "openssl3", "zlib", ] script = """ DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( --disable-strip -# requires openssl 1.1.1, result in libcrypto error otherwise - --without-openssl --sysconfdir=/etc/ssh ) cookbook_configure @@ -35,8 +32,4 @@ CONFIG_FILE="${COOKBOOK_STAGE}"/etc/ssh/sshd_config # ipv6 is not working yet sed -i "s/#AddressFamily any/AddressFamily inet/g" "${CONFIG_FILE}" -# hardcoded to 0.0.0.0 in patches -sed -i "s/#ListenAddress 0.0.0.0/ListenAddress 0.0.0.0/g" "${CONFIG_FILE}" -# will never work -sed -i "s/#PasswordAuthentication yes/PasswordAuthentication no/g" "${CONFIG_FILE}" """ diff --git a/recipes/wip/ssh/openssh/redox.patch b/recipes/wip/ssh/openssh/redox.patch index 980b9ab3..a061b173 100644 --- a/recipes/wip/ssh/openssh/redox.patch +++ b/recipes/wip/ssh/openssh/redox.patch @@ -459,19 +459,6 @@ diff -ruwN source/regress/netcat.c source-new/regress/netcat.c #define SOCKS_PORT "1080" #define HTTP_PROXY_PORT "3128" -diff -ruwN source/servconf.c source-new/servconf.c ---- source/servconf.c 2024-07-01 11:36:28.000000000 +0700 -+++ source-new/servconf.c 2025-09-07 01:38:08.219942429 +0700 -@@ -857,7 +857,8 @@ - hints.ai_socktype = SOCK_STREAM; - hints.ai_flags = (addr == NULL) ? AI_PASSIVE : 0; - snprintf(strport, sizeof strport, "%d", port); -- if ((gaierr = getaddrinfo(addr, strport, &hints, &aitop)) != 0) -+ // redox don't accept addr == NULL yet -+ if ((gaierr = getaddrinfo("0.0.0.0", strport, &hints, &aitop)) != 0) - fatal("bad addr or host: %s (%s)", - addr ? addr : "", - ssh_gai_strerror(gaierr)); diff -ruwN source/session.c source-new/session.c --- source/session.c 2024-07-01 11:36:28.000000000 +0700 +++ source-new/session.c 2025-09-07 01:22:43.637928015 +0700 From 36977a0bb76bc7e273234b4fe9f5e2f206d3e5da Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sun, 21 Sep 2025 05:57:14 +0000 Subject: [PATCH 2837/3180] Revert some patches of git --- recipes/dev/git/git.patch | 98 +++++++++++++++++++++++++++++---------- 1 file changed, 73 insertions(+), 25 deletions(-) diff --git a/recipes/dev/git/git.patch b/recipes/dev/git/git.patch index f1d9b1e5..998bd9d6 100644 --- a/recipes/dev/git/git.patch +++ b/recipes/dev/git/git.patch @@ -1,6 +1,6 @@ -diff -ruwN source/compat/bswap.h source-new/compat/bswap.h ---- source/compat/bswap.h 2017-06-05 08:08:11.000000000 +0700 -+++ source-new/compat/bswap.h 2025-09-01 04:41:10.337224520 +0700 +diff -ruwN git-2.13.1/compat/bswap.h source/compat/bswap.h +--- git-2.13.1/compat/bswap.h 2017-06-04 19:08:11.000000000 -0600 ++++ source/compat/bswap.h 2025-04-24 11:20:06.475749424 -0600 @@ -1,3 +1,7 @@ +#if defined(__redox__) +#include @@ -9,9 +9,9 @@ diff -ruwN source/compat/bswap.h source-new/compat/bswap.h /* * Let's make sure we always have a sane definition for ntohl()/htonl(). * Some libraries define those as a function call, just to perform byte -diff -ruwN source/compat/terminal.c source-new/compat/terminal.c ---- source/compat/terminal.c 2017-06-05 08:08:11.000000000 +0700 -+++ source-new/compat/terminal.c 2025-09-01 04:41:10.337224520 +0700 +diff -ruwN git-2.13.1/compat/terminal.c source/compat/terminal.c +--- git-2.13.1/compat/terminal.c 2017-06-04 19:08:11.000000000 -0600 ++++ source/compat/terminal.c 2025-04-18 10:00:11.318697446 -0600 @@ -137,6 +137,18 @@ return buf.buf; } @@ -31,9 +31,9 @@ diff -ruwN source/compat/terminal.c source-new/compat/terminal.c #else char *git_terminal_prompt(const char *prompt, int echo) -diff -ruwN source/configure source-new/configure ---- source/configure 2017-06-05 08:08:11.000000000 +0700 -+++ source-new/configure 2025-09-01 04:41:10.338224544 +0700 +diff -ruwN git-2.13.1/configure source/configure +--- git-2.13.1/configure 2017-06-04 19:08:11.000000000 -0600 ++++ source/configure 2025-04-18 10:00:11.318697446 -0600 @@ -6156,7 +6156,7 @@ ac_res=$ac_cv_search_getaddrinfo if test "$ac_res" != no; then : @@ -43,10 +43,33 @@ diff -ruwN source/configure source-new/configure else NO_IPV6=YesPlease fi -diff -ruwN source/daemon.c source-new/daemon.c ---- source/daemon.c 2017-06-05 08:08:11.000000000 +0700 -+++ source-new/daemon.c 2025-09-19 22:14:42.743240085 +0700 -@@ -888,8 +888,12 @@ +diff -ruwN git-2.13.1/daemon.c source/daemon.c +--- git-2.13.1/daemon.c 2017-06-04 19:08:11.000000000 -0600 ++++ source/daemon.c 2025-04-18 10:00:11.319697447 -0600 +@@ -71,13 +71,21 @@ + return hi->ip_address.buf; + } + ++#if defined(__redox__) ++#define LOG_ERR 0 ++#define LOG_INFO 1 ++#endif ++ + static void logreport(int priority, const char *err, va_list params) + { ++#if !defined(__redox__) + if (log_syslog) { + char buf[1024]; + vsnprintf(buf, sizeof(buf), err, params); + syslog(priority, "%s", buf); +- } else { ++ } else ++#endif ++ { + /* + * Since stderr is set to buffered mode, the + * logging of different processes will not overlap +@@ -888,8 +896,12 @@ if (!reuseaddr) return 0; @@ -59,9 +82,34 @@ diff -ruwN source/daemon.c source-new/daemon.c } struct socketlist { -diff -ruwN source/git-compat-util.h source-new/git-compat-util.h ---- source/git-compat-util.h 2017-06-05 08:08:11.000000000 +0700 -+++ source-new/git-compat-util.h 2025-09-19 22:09:29.361246446 +0700 +@@ -1174,11 +1186,7 @@ + if (!group_name) + c.gid = c.pass->pw_gid; + else { +- struct group *group = getgrnam(group_name); +- if (!group) + die("group not found - %s", group_name); +- +- c.gid = group->gr_gid; + } + + return &c; +@@ -1348,10 +1356,12 @@ + usage(daemon_usage); + } + ++#if !defined(__redox__) + if (log_syslog) { + openlog("git-daemon", LOG_PID, LOG_DAEMON); + set_die_routine(daemon_die); + } else ++#endif + /* avoid splitting a message in the middle */ + setvbuf(stderr, NULL, _IOFBF, 4096); + +diff -ruwN git-2.13.1/git-compat-util.h source/git-compat-util.h +--- git-2.13.1/git-compat-util.h 2017-06-04 19:08:11.000000000 -0600 ++++ source/git-compat-util.h 2025-04-18 10:00:11.319697447 -0600 @@ -1,6 +1,18 @@ #ifndef GIT_COMPAT_UTIL_H #define GIT_COMPAT_UTIL_H @@ -96,9 +144,9 @@ diff -ruwN source/git-compat-util.h source-new/git-compat-util.h #ifdef HAVE_PATHS_H #include #endif -diff -ruwN source/Makefile source-new/Makefile ---- source/Makefile 2017-06-05 08:08:11.000000000 +0700 -+++ source-new/Makefile 2025-09-01 04:41:10.339224568 +0700 +diff -ruwN git-2.13.1/Makefile source/Makefile +--- git-2.13.1/Makefile 2017-06-05 08:08:11.000000000 +0700 ++++ source/Makefile 2025-09-01 04:41:10.339224568 +0700 @@ -979,7 +979,7 @@ BUILTIN_OBJS += builtin/write-tree.o @@ -147,9 +195,9 @@ diff -ruwN source/Makefile source-new/Makefile ln -s "git-remote-http$X" "$$execdir/$$p" 2>/dev/null || \ cp "$$execdir/git-remote-http$X" "$$execdir/$$p" || exit; \ done && \ -diff -ruwN source/run-command.c source-new/run-command.c ---- source/run-command.c 2017-06-05 08:08:11.000000000 +0700 -+++ source-new/run-command.c 2025-09-19 22:08:26.892232334 +0700 +diff -ruwN git-2.13.1/run-command.c source/run-command.c +--- git-2.13.1/run-command.c 2017-06-04 19:08:11.000000000 -0600 ++++ source/run-command.c 2025-04-18 10:00:11.320697447 -0600 @@ -120,9 +120,9 @@ #ifndef GIT_WINDOWS_NATIVE static inline void dup_devnull(int to) @@ -162,9 +210,9 @@ diff -ruwN source/run-command.c source-new/run-command.c if (dup2(fd, to) < 0) die_errno(_("dup2(%d,%d) failed"), fd, to); close(fd); -diff -ruwN source/setup.c source-new/setup.c ---- source/setup.c 2017-06-05 08:08:11.000000000 +0700 -+++ source-new/setup.c 2025-09-01 04:41:10.339224568 +0700 +diff -ruwN git-2.13.1/setup.c source/setup.c +--- git-2.13.1/setup.c 2017-06-05 08:08:11.000000000 +0700 ++++ source/setup.c 2025-09-01 04:41:10.339224568 +0700 @@ -1146,11 +1146,11 @@ /* if any standard file descriptor is missing open it to /dev/null */ void sanitize_stdfds(void) From 6d02a1c36e47337d78e0aabcd3f1febf94670d25 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sun, 21 Sep 2025 15:54:37 +0000 Subject: [PATCH 2838/3180] Add -g to generate debuginfo on gcc --- src/bin/cook.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 2b8ca991..4cfc2d43 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -883,6 +883,8 @@ then install_flags=--debug build_flags= build_type=debug + export CFLAGS="${CFLAGS} -g" + export CPPFLAGS="${CPPFLAGS} -g" fi # cargo template From 16b65fdadb5cb41c3bed3cdb25c4294f38b6c66f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 21 Sep 2025 21:14:49 -0600 Subject: [PATCH 2839/3180] openssh: add zstd dependency --- recipes/wip/ssh/openssh/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/ssh/openssh/recipe.toml b/recipes/wip/ssh/openssh/recipe.toml index 08683a8b..648f006e 100644 --- a/recipes/wip/ssh/openssh/recipe.toml +++ b/recipes/wip/ssh/openssh/recipe.toml @@ -10,6 +10,7 @@ template = "custom" dependencies = [ "openssl3", "zlib", + "zstd", ] script = """ DYNAMIC_INIT From dd0f30a61ec3ab658270b08edbf3904620ee0206 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 21 Sep 2025 21:17:49 -0600 Subject: [PATCH 2840/3180] cosmic-player: manually link libiconv --- recipes/wip/players/cosmic-player/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/players/cosmic-player/recipe.toml b/recipes/wip/players/cosmic-player/recipe.toml index f7f21ebe..c876bf14 100644 --- a/recipes/wip/players/cosmic-player/recipe.toml +++ b/recipes/wip/players/cosmic-player/recipe.toml @@ -22,7 +22,7 @@ DYNAMIC_INIT --bin cosmic-player \ --no-default-features \ -- \ - -C link-args="-lgmodule-2.0 -lffi -lpcre2-8 -lz" + -C link-args="-lgmodule-2.0 -lffi -liconv -lpcre2-8 -lz" mkdir -pv "${COOKBOOK_STAGE}/usr/bin/" cp -v "target/${TARGET}/release/cosmic-player" "${COOKBOOK_STAGE}/usr/bin/" mkdir -pv "${COOKBOOK_STAGE}/ui/apps/" From 59e0a2c91fa81723fc6ebb0b1aaa31cd10ee4e88 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 22 Sep 2025 11:35:38 -0600 Subject: [PATCH 2841/3180] ncurses: fix build when dynamic linking not possible --- recipes/libs/ncurses/recipe.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/libs/ncurses/recipe.toml b/recipes/libs/ncurses/recipe.toml index 0fa4f74d..87fc7479 100644 --- a/recipes/libs/ncurses/recipe.toml +++ b/recipes/libs/ncurses/recipe.toml @@ -15,9 +15,12 @@ COOKBOOK_CONFIGURE_FLAGS+=( --without-ada --without-manpages --without-tests - --with-shared cf_cv_func_mkstemp=yes ) +if [ "${COOKBOOK_DYNAMIC}" == "1" ] +then + COOKBOOK_CONFIGURE_FLAGS+=(--with-shared) +fi cookbook_configure """ From a4979d330d67dc164b5fde29a9899aa1e861ef54 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Tue, 23 Sep 2025 01:27:20 +0000 Subject: [PATCH 2842/3180] Update packaging for Go --- recipes/wip/dev/lang/go/recipe.toml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/recipes/wip/dev/lang/go/recipe.toml b/recipes/wip/dev/lang/go/recipe.toml index 20dd03b5..906c9253 100644 --- a/recipes/wip/dev/lang/go/recipe.toml +++ b/recipes/wip/dev/lang/go/recipe.toml @@ -9,7 +9,6 @@ template = "custom" script = """ export PATH=$HOME/go/bin:$PATH -rm -rf $HOME/.cache/go-build export GOPATH=${COOKBOOK_BUILD}/gopath if ! command -v go &> /dev/null; then GO_TARBALL=go1.24.6.linux-$( [ "$(uname -m)" = "aarch64" ] && echo "arm64" || echo "amd64" ).tar.gz @@ -33,8 +32,18 @@ esac export CGO_ENABLED=1 export CC=x86_64-unknown-redox-gcc export CCX=x86_64-unknown-redox-g++ +echo "go1.25" > VERSION # to set -trimpath (cd ./src && bash ./make.bash) -mkdir -p ${COOKBOOK_STAGE}/bin -rsync -a --delete "bin/redox_${GOARCH}/" ${COOKBOOK_STAGE}/bin +mkdir -p "${COOKBOOK_STAGE}"/usr/bin \ + "${COOKBOOK_STAGE}"/usr/lib/golang/{bin,lib,misc,pkg/include,pkg/tool,src} +rsync -a bin/redox_${GOARCH}/* "${COOKBOOK_STAGE}"/usr/lib/golang/bin/ +rsync -a lib/* "${COOKBOOK_STAGE}"/usr/lib/golang/lib/ +rsync -a misc/* "${COOKBOOK_STAGE}"/usr/lib/golang/misc/ +rsync -a pkg/include/* "${COOKBOOK_STAGE}"/usr/lib/golang/pkg/include/ +rsync -a pkg/tool/redox_${GOARCH}/* "${COOKBOOK_STAGE}"/usr/lib/golang/pkg/tool/ +rsync -a src/* "${COOKBOOK_STAGE}"/usr/lib/golang/src/ +cat go.env > "${COOKBOOK_STAGE}"/usr/lib/golang/go.env +ln -s "../lib/golang/bin/go" "${COOKBOOK_STAGE}"/usr/bin/go +ln -s "../lib/golang/bin/gofmt" "${COOKBOOK_STAGE}"/usr/bin/gofmt """ From 6878536fe53ed3883e898bcabefbf69ff8c9a847 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 25 Sep 2025 09:50:54 -0600 Subject: [PATCH 2843/3180] base-initfs: preserve DISK_LIVE environmental variables for performant installer --- recipes/core/base-initfs/init.rc | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/core/base-initfs/init.rc b/recipes/core/base-initfs/init.rc index 366bbab0..6fb3094f 100644 --- a/recipes/core/base-initfs/init.rc +++ b/recipes/core/base-initfs/init.rc @@ -24,7 +24,6 @@ fbcond 2 # Live disk # Note: Needs to start before drivers to ensure it gets priority when redoxfs searches for disks lived -unset DISK_LIVE_ADDR DISK_LIVE_SIZE # Drivers run /scheme/initfs/etc/init_drivers.rc From c1a4fd770805abb7240cd1938d4554422e434131 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 26 Sep 2025 06:18:57 -0300 Subject: [PATCH 2844/3180] Add recipes --- recipes/wip/ai/rustgpt/recipe.toml | 5 +++++ recipes/wip/demos/firewheel/recipe.toml | 8 ++++++++ recipes/wip/dev/lang/tsuki/recipe.toml | 5 +++++ recipes/wip/dev/other/phantom-ci/recipe.toml | 5 +++++ 4 files changed, 23 insertions(+) create mode 100644 recipes/wip/ai/rustgpt/recipe.toml create mode 100644 recipes/wip/demos/firewheel/recipe.toml create mode 100644 recipes/wip/dev/lang/tsuki/recipe.toml create mode 100644 recipes/wip/dev/other/phantom-ci/recipe.toml diff --git a/recipes/wip/ai/rustgpt/recipe.toml b/recipes/wip/ai/rustgpt/recipe.toml new file mode 100644 index 00000000..5f3f5588 --- /dev/null +++ b/recipes/wip/ai/rustgpt/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/tekaratzas/RustGPT" +[build] +template = "cargo" diff --git a/recipes/wip/demos/firewheel/recipe.toml b/recipes/wip/demos/firewheel/recipe.toml new file mode 100644 index 00000000..e79a248a --- /dev/null +++ b/recipes/wip/demos/firewheel/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/BillyDM/firewheel" +[build] +template = "custom" +script = """ +cookbook_cargo_examples beep_test play_sample +""" diff --git a/recipes/wip/dev/lang/tsuki/recipe.toml b/recipes/wip/dev/lang/tsuki/recipe.toml new file mode 100644 index 00000000..9aabdb16 --- /dev/null +++ b/recipes/wip/dev/lang/tsuki/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ultimaweapon/tsuki" +[build] +template = "cargo" diff --git a/recipes/wip/dev/other/phantom-ci/recipe.toml b/recipes/wip/dev/other/phantom-ci/recipe.toml new file mode 100644 index 00000000..b3cf34de --- /dev/null +++ b/recipes/wip/dev/other/phantom-ci/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/helloimalemur/phantomci" +[build] +template = "cargo" From f5540bc4c87c7bf2f752a1d0c6dd1e5f3a03462d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Fri, 26 Sep 2025 06:21:51 -0300 Subject: [PATCH 2845/3180] Move the termplay recipe --- recipes/wip/{ => other}/termplay/recipe.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => other}/termplay/recipe.sh (100%) diff --git a/recipes/wip/termplay/recipe.sh b/recipes/wip/other/termplay/recipe.sh similarity index 100% rename from recipes/wip/termplay/recipe.sh rename to recipes/wip/other/termplay/recipe.sh From adefb4b361f208fe6062bc68179843bf30e97651 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sat, 27 Sep 2025 01:51:29 +0700 Subject: [PATCH 2846/3180] Promote php, python, openssh, nginx --- .../php-composer => dev/composer}/recipe.toml | 0 .../{wip/dev/lang => dev}/php84/recipe.toml | 10 ++- recipes/dev/php84/redox.patch | 89 +++++++++++++++++++ .../dev/lang => dev}/python312/recipe.toml | 9 +- .../dev/lang => dev}/python312/redox.patch | 0 .../{wip/net/http => net}/nginx/recipe.toml | 6 +- .../{wip/net/http => net}/nginx/redox.patch | 0 recipes/{wip/ssh => net}/openssh/recipe.toml | 0 recipes/{wip/ssh => net}/openssh/redox.patch | 0 recipes/web/website/recipe.toml | 1 + recipes/wip/dev/lang/go/recipe.toml | 2 +- recipes/wip/dev/lang/php84/redox.patch | 54 ----------- .../recipe.toml | 0 recipes/wip/libs/other/libonig/recipe.toml | 1 + 14 files changed, 110 insertions(+), 62 deletions(-) rename recipes/{wip/dev/lang/php-composer => dev/composer}/recipe.toml (100%) rename recipes/{wip/dev/lang => dev}/php84/recipe.toml (85%) create mode 100644 recipes/dev/php84/redox.patch rename recipes/{wip/dev/lang => dev}/python312/recipe.toml (76%) rename recipes/{wip/dev/lang => dev}/python312/redox.patch (100%) rename recipes/{wip/net/http => net}/nginx/recipe.toml (88%) rename recipes/{wip/net/http => net}/nginx/redox.patch (100%) rename recipes/{wip/ssh => net}/openssh/recipe.toml (100%) rename recipes/{wip/ssh => net}/openssh/redox.patch (100%) delete mode 100644 recipes/wip/dev/lang/php84/redox.patch rename recipes/wip/games/music/{composer => performous-composer}/recipe.toml (100%) diff --git a/recipes/wip/dev/lang/php-composer/recipe.toml b/recipes/dev/composer/recipe.toml similarity index 100% rename from recipes/wip/dev/lang/php-composer/recipe.toml rename to recipes/dev/composer/recipe.toml diff --git a/recipes/wip/dev/lang/php84/recipe.toml b/recipes/dev/php84/recipe.toml similarity index 85% rename from recipes/wip/dev/lang/php84/recipe.toml rename to recipes/dev/php84/recipe.toml index b15b8868..f7fc503b 100644 --- a/recipes/wip/dev/lang/php84/recipe.toml +++ b/recipes/dev/php84/recipe.toml @@ -1,4 +1,3 @@ -#TODO promote [source] tar = "https://www.php.net/distributions/php-8.4.12.tar.xz" patches = [ @@ -32,6 +31,7 @@ dependencies = [ "sqlite3", "xz", "zlib", + "zstd", ] script = """ DYNAMIC_INIT @@ -40,14 +40,14 @@ export SUFFIX="84" export CURL_LIBS="-lcurl -lnghttp2 -lssl -lcrypto" COOKBOOK_CONFIGURE_FLAGS+=( --program-suffix=${SUFFIX} - --sysconfdir=/etc + --sysconfdir=/etc/php/$SUFFIX --with-config-file-path=/etc/php/$SUFFIX --with-config-file-scan-dir=/etc/php/$SUFFIX/conf.d --with-iconv="${COOKBOOK_SYSROOT}/usr" --disable-opcache --enable-bcmath --enable-calendar -# --enable-fpm # need times function + --enable-fpm # need times function --enable-gd --enable-intl --enable-mbstring @@ -70,9 +70,11 @@ COOKBOOK_CONFIGURE_FLAGS+=( INSTALL_ROOT="${COOKBOOK_STAGE}" \ datarootdir=/usr/share localstatedir=/var -for bin in "php-cgi" "php-config" "php" "phpdbg" "phpize"; do +mv ${COOKBOOK_STAGE}/usr/sbin/* ${COOKBOOK_STAGE}/usr/bin/ +for bin in "php-cgi" "php-config" "php" "phpdbg" "phpize" "php-fpm"; do ln -s "$bin$SUFFIX" ${COOKBOOK_STAGE}/usr/bin/$bin done +rm ${COOKBOOK_STAGE}/usr/bin/phar$SUFFIX mkdir -p ${COOKBOOK_STAGE}/etc/php/$SUFFIX/conf.d cp ${COOKBOOK_SOURCE}/php.ini* ${COOKBOOK_STAGE}/etc/php/$SUFFIX/ """ diff --git a/recipes/dev/php84/redox.patch b/recipes/dev/php84/redox.patch new file mode 100644 index 00000000..25308e14 --- /dev/null +++ b/recipes/dev/php84/redox.patch @@ -0,0 +1,89 @@ +diff -ruwN source/configure source-new/configure +--- source/configure 2025-08-26 20:36:28.000000000 +0700 ++++ source-new/configure 2025-09-26 16:31:28.871157195 +0700 +@@ -25863,7 +25863,7 @@ + then : + ac_cv_lib_curl_curl_easy_perform=yes + else case e in #( +- e) ac_cv_lib_curl_curl_easy_perform=no ;; ++ e) ac_cv_lib_curl_curl_easy_perform=yes ;; + esac + fi + rm -f core conftest.err conftest.$ac_objext conftest.beam \ +@@ -37356,7 +37356,7 @@ + then : + php_cv_lib_gd_works=yes + else case e in #( +- e) php_cv_lib_gd_works=no ;; ++ e) php_cv_lib_gd_works=yes ;; + esac + fi + rm -f core conftest.err conftest.$ac_objext conftest.beam \ +@@ -40056,7 +40056,7 @@ + LIBS_SAVED=$LIBS + CFLAGS="$CFLAGS $GMP_CFLAGS" + LIBS="$LIBS $GMP_LIBS" +- gmp_check=no ++ gmp_check=yes + ac_fn_c_check_header_compile "$LINENO" "gmp.h" "ac_cv_header_gmp_h" "$ac_includes_default" + if test "x$ac_cv_header_gmp_h" = xyes + then : +diff -ruwN source/ext/phar/Makefile.frag source-new/ext/phar/Makefile.frag +--- source/ext/phar/Makefile.frag 2025-08-26 20:36:28.000000000 +0700 ++++ source-new/ext/phar/Makefile.frag 2025-09-26 16:31:29.029526842 +0700 +@@ -30,7 +30,7 @@ + -@test -f $(builddir)/phar/phar.inc || cp $(srcdir)/phar/phar.inc $(builddir)/phar/phar.inc + + TEST_PHP_EXECUTABLE = $(shell $(PHP_EXECUTABLE) -v 2>&1) +-TEST_PHP_EXECUTABLE_RES = $(shell echo "$(TEST_PHP_EXECUTABLE)" | grep -c 'Exec format error') ++TEST_PHP_EXECUTABLE_RES = $(shell echo "$(TEST_PHP_EXECUTABLE)" | grep -E -c 'Exec format error|required file not found') + + $(builddir)/phar.php: $(srcdir)/build_precommand.php $(srcdir)/phar/*.inc $(srcdir)/phar/*.php $(SAPI_CLI_PATH) + -@(echo "Generating phar.php"; \ +diff -ruwN source/ext/posix/posix.c source-new/ext/posix/posix.c +--- source/ext/posix/posix.c 2025-08-26 20:36:28.000000000 +0700 ++++ source-new/ext/posix/posix.c 2025-09-26 16:31:29.085983450 +0700 +@@ -375,7 +375,7 @@ + + ZEND_PARSE_PARAMETERS_NONE(); + +- if ((ticks = times(&t)) == -1) { ++ { + POSIX_G(last_error) = errno; + RETURN_FALSE; + } +diff -ruwN source/sapi/fpm/fpm/fpm_status.c source-new/sapi/fpm/fpm/fpm_status.c +--- source/sapi/fpm/fpm/fpm_status.c 2025-08-26 20:36:28.000000000 +0700 ++++ source-new/sapi/fpm/fpm/fpm_status.c 2025-09-27 01:07:38.657514932 +0700 +@@ -104,11 +104,15 @@ + } + proc_p = &procs[i]; + /* prevent NaN */ ++#ifdef HAVE_TIMES + if (procs[i].cpu_duration.tv_sec == 0 && procs[i].cpu_duration.tv_usec == 0) { + cpu = 0.; + } else { + cpu = (procs[i].last_request_cpu.tms_utime + procs[i].last_request_cpu.tms_stime + procs[i].last_request_cpu.tms_cutime + procs[i].last_request_cpu.tms_cstime) / fpm_scoreboard_get_tick() / (procs[i].cpu_duration.tv_sec + procs[i].cpu_duration.tv_usec / 1000000.) * 100.; + } ++#else ++ cpu = 0.; ++#endif + + array_init(&fpm_proc_stat); + add_assoc_long(&fpm_proc_stat, "pid", procs[i].pid); +@@ -590,11 +594,15 @@ + } + + /* prevent NaN */ ++#ifdef HAVE_TIMES + if (proc->cpu_duration.tv_sec == 0 && proc->cpu_duration.tv_usec == 0) { + cpu = 0.; + } else { + cpu = (proc->last_request_cpu.tms_utime + proc->last_request_cpu.tms_stime + proc->last_request_cpu.tms_cutime + proc->last_request_cpu.tms_cstime) / fpm_scoreboard_get_tick() / (proc->cpu_duration.tv_sec + proc->cpu_duration.tv_usec / 1000000.) * 100.; + } ++#else ++ cpu = 0.; ++#endif + + if (proc->request_stage == FPM_REQUEST_ACCEPTING) { + duration = proc->duration; diff --git a/recipes/wip/dev/lang/python312/recipe.toml b/recipes/dev/python312/recipe.toml similarity index 76% rename from recipes/wip/dev/lang/python312/recipe.toml rename to recipes/dev/python312/recipe.toml index 09bbee22..1209eb07 100644 --- a/recipes/wip/dev/lang/python312/recipe.toml +++ b/recipes/dev/python312/recipe.toml @@ -1,4 +1,3 @@ -#TODO works without pip [source] tar = "https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tar.xz" patches = [ @@ -17,13 +16,18 @@ dependencies = [ "readline", "sqlite3", "zlib", - "xz" + "xz", + "zstd", ] script = """ DYNAMIC_INIT export PYTHONDONTWRITEBYTECODE=1 ARCH="${TARGET%%-*}" +# Packages are considerably larger because of this issue +# https://gitlab.redox-os.org/redox-os/relibc/-/issues/227 +export MODULE_BUILDTYPE=static + COOKBOOK_CONFIGURE_FLAGS=( --prefix=/usr --enable-shared @@ -32,6 +36,7 @@ COOKBOOK_CONFIGURE_FLAGS=( --build=$ARCH --with-build-python --with-ensurepip=install + --disable-test-modules ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no ) diff --git a/recipes/wip/dev/lang/python312/redox.patch b/recipes/dev/python312/redox.patch similarity index 100% rename from recipes/wip/dev/lang/python312/redox.patch rename to recipes/dev/python312/redox.patch diff --git a/recipes/wip/net/http/nginx/recipe.toml b/recipes/net/nginx/recipe.toml similarity index 88% rename from recipes/wip/net/http/nginx/recipe.toml rename to recipes/net/nginx/recipe.toml index da416dca..e6583d63 100644 --- a/recipes/wip/net/http/nginx/recipe.toml +++ b/recipes/net/nginx/recipe.toml @@ -56,5 +56,9 @@ unset AR AS CC CXX LD LDFLAGS NM OBJCOPY OBJDUMP RANLIB READELF RUSTFLAGS STRIP cookbook_configure -mkdir -p "$COOKBOOK_STAGE"/var/lib/nginx/{body,proxy,fastcgi,uwsgi,scgi} +mkdir -p "$COOKBOOK_STAGE"/var/lib/nginx/{body,proxy,fastcgi,uwsgi,scgi} \ + "$COOKBOOK_STAGE"/var/log/nginx/ +#TODO: pkgar don't track empty directories +touch "$COOKBOOK_STAGE"/var/lib/nginx/{body,proxy,fastcgi,uwsgi,scgi}/.tmp \ + "$COOKBOOK_STAGE"/var/log/nginx/.tmp """ diff --git a/recipes/wip/net/http/nginx/redox.patch b/recipes/net/nginx/redox.patch similarity index 100% rename from recipes/wip/net/http/nginx/redox.patch rename to recipes/net/nginx/redox.patch diff --git a/recipes/wip/ssh/openssh/recipe.toml b/recipes/net/openssh/recipe.toml similarity index 100% rename from recipes/wip/ssh/openssh/recipe.toml rename to recipes/net/openssh/recipe.toml diff --git a/recipes/wip/ssh/openssh/redox.patch b/recipes/net/openssh/redox.patch similarity index 100% rename from recipes/wip/ssh/openssh/redox.patch rename to recipes/net/openssh/redox.patch diff --git a/recipes/web/website/recipe.toml b/recipes/web/website/recipe.toml index 4df01db0..e9d240f1 100644 --- a/recipes/web/website/recipe.toml +++ b/recipes/web/website/recipe.toml @@ -3,6 +3,7 @@ git = "https://gitlab.redox-os.org/redox-os/website" [build] template = "custom" script = """ +rsync -a "${COOKBOOK_SOURCE}/" ./ ./hugo.sh mkdir -pv "${COOKBOOK_STAGE}"/usr/share/website cp -rv "${COOKBOOK_BUILD}"/build/public/* "${COOKBOOK_STAGE}"/usr/share/website diff --git a/recipes/wip/dev/lang/go/recipe.toml b/recipes/wip/dev/lang/go/recipe.toml index 906c9253..278f374b 100644 --- a/recipes/wip/dev/lang/go/recipe.toml +++ b/recipes/wip/dev/lang/go/recipe.toml @@ -41,7 +41,7 @@ rsync -a bin/redox_${GOARCH}/* "${COOKBOOK_STAGE}"/usr/lib/golang/bin/ rsync -a lib/* "${COOKBOOK_STAGE}"/usr/lib/golang/lib/ rsync -a misc/* "${COOKBOOK_STAGE}"/usr/lib/golang/misc/ rsync -a pkg/include/* "${COOKBOOK_STAGE}"/usr/lib/golang/pkg/include/ -rsync -a pkg/tool/redox_${GOARCH}/* "${COOKBOOK_STAGE}"/usr/lib/golang/pkg/tool/ +rsync -a pkg/tool/redox_${GOARCH} "${COOKBOOK_STAGE}"/usr/lib/golang/pkg/tool/ rsync -a src/* "${COOKBOOK_STAGE}"/usr/lib/golang/src/ cat go.env > "${COOKBOOK_STAGE}"/usr/lib/golang/go.env ln -s "../lib/golang/bin/go" "${COOKBOOK_STAGE}"/usr/bin/go diff --git a/recipes/wip/dev/lang/php84/redox.patch b/recipes/wip/dev/lang/php84/redox.patch deleted file mode 100644 index 916f9fa3..00000000 --- a/recipes/wip/dev/lang/php84/redox.patch +++ /dev/null @@ -1,54 +0,0 @@ -diff --color -ruwN source/configure source-new/configure ---- source/configure 2025-08-26 20:36:28.000000000 +0700 -+++ source-new/configure 2025-09-16 07:50:56.962975667 +0700 -@@ -25863,7 +25863,7 @@ - then : - ac_cv_lib_curl_curl_easy_perform=yes - else case e in #( -- e) ac_cv_lib_curl_curl_easy_perform=no ;; -+ e) ac_cv_lib_curl_curl_easy_perform=yes ;; - esac - fi - rm -f core conftest.err conftest.$ac_objext conftest.beam \ -@@ -37356,7 +37356,7 @@ - then : - php_cv_lib_gd_works=yes - else case e in #( -- e) php_cv_lib_gd_works=no ;; -+ e) php_cv_lib_gd_works=yes ;; - esac - fi - rm -f core conftest.err conftest.$ac_objext conftest.beam \ -@@ -40056,7 +40056,7 @@ - LIBS_SAVED=$LIBS - CFLAGS="$CFLAGS $GMP_CFLAGS" - LIBS="$LIBS $GMP_LIBS" -- gmp_check=no -+ gmp_check=yes - ac_fn_c_check_header_compile "$LINENO" "gmp.h" "ac_cv_header_gmp_h" "$ac_includes_default" - if test "x$ac_cv_header_gmp_h" = xyes - then : -diff --color -ruwN source/ext/phar/Makefile.frag source-new/ext/phar/Makefile.frag ---- source/ext/phar/Makefile.frag 2025-08-26 20:36:28.000000000 +0700 -+++ source-new/ext/phar/Makefile.frag 2025-09-18 07:37:43.264765180 +0700 -@@ -30,7 +30,7 @@ - -@test -f $(builddir)/phar/phar.inc || cp $(srcdir)/phar/phar.inc $(builddir)/phar/phar.inc - - TEST_PHP_EXECUTABLE = $(shell $(PHP_EXECUTABLE) -v 2>&1) --TEST_PHP_EXECUTABLE_RES = $(shell echo "$(TEST_PHP_EXECUTABLE)" | grep -c 'Exec format error') -+TEST_PHP_EXECUTABLE_RES = $(shell echo "$(TEST_PHP_EXECUTABLE)" | grep -E -c 'Exec format error|required file not found') - - $(builddir)/phar.php: $(srcdir)/build_precommand.php $(srcdir)/phar/*.inc $(srcdir)/phar/*.php $(SAPI_CLI_PATH) - -@(echo "Generating phar.php"; \ -diff --color -ruwN source/ext/posix/posix.c source-new/ext/posix/posix.c ---- source/ext/posix/posix.c 2025-08-26 20:36:28.000000000 +0700 -+++ source-new/ext/posix/posix.c 2025-09-16 07:50:56.989976200 +0700 -@@ -375,7 +375,7 @@ - - ZEND_PARSE_PARAMETERS_NONE(); - -- if ((ticks = times(&t)) == -1) { -+ { - POSIX_G(last_error) = errno; - RETURN_FALSE; - } diff --git a/recipes/wip/games/music/composer/recipe.toml b/recipes/wip/games/music/performous-composer/recipe.toml similarity index 100% rename from recipes/wip/games/music/composer/recipe.toml rename to recipes/wip/games/music/performous-composer/recipe.toml diff --git a/recipes/wip/libs/other/libonig/recipe.toml b/recipes/wip/libs/other/libonig/recipe.toml index 9633af05..894e8b0a 100644 --- a/recipes/wip/libs/other/libonig/recipe.toml +++ b/recipes/wip/libs/other/libonig/recipe.toml @@ -1,5 +1,6 @@ [source] git = "https://github.com/kkos/oniguruma" +rev = "f95747b462de672b6f8dbdeb478245ddf061ca53" script = """ DYNAMIC_INIT autotools_recursive_regenerate From a74c40e1a3e8ab121fa3a4796293d2a5929441f4 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sat, 27 Sep 2025 02:35:46 +0700 Subject: [PATCH 2847/3180] Add NGINX patches --- recipes/net/nginx/recipe.toml | 2 +- recipes/net/nginx/redox.patch | 37 +++++++++++++++++++++++++---------- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/recipes/net/nginx/recipe.toml b/recipes/net/nginx/recipe.toml index e6583d63..b74f659c 100644 --- a/recipes/net/nginx/recipe.toml +++ b/recipes/net/nginx/recipe.toml @@ -1,4 +1,4 @@ -#TODO Compiling, got some C issues on init +#TODO FastCGI not working [source] tar = "https://nginx.org/download/nginx-1.28.0.tar.gz" patches = [ diff --git a/recipes/net/nginx/redox.patch b/recipes/net/nginx/redox.patch index df14d2f4..bc5eee54 100644 --- a/recipes/net/nginx/redox.patch +++ b/recipes/net/nginx/redox.patch @@ -1,7 +1,7 @@ -diff --color -ruwN source/auto/feature source-new/auto/feature +diff -ruwN source/auto/feature source-new/auto/feature --- source/auto/feature 2025-04-23 18:48:54.000000000 +0700 -+++ source-new/auto/feature 2025-09-16 02:23:35.565899342 +0700 -@@ -53,7 +57,7 @@ ++++ source-new/auto/feature 2025-09-16 02:44:58.617532926 +0700 +@@ -53,7 +53,7 @@ yes) # /bin/sh is used to intercept "Killed" or "Abort trap" messages @@ -10,7 +10,7 @@ diff --color -ruwN source/auto/feature source-new/auto/feature echo " found" ngx_found=yes -@@ -61,9 +65,9 @@ +@@ -61,9 +61,9 @@ have=$ngx_have_feature . auto/have fi @@ -23,9 +23,9 @@ diff --color -ruwN source/auto/feature source-new/auto/feature ;; value) -diff --color -ruwN source/auto/types/sizeof source-new/auto/types/sizeof +diff -ruwN source/auto/types/sizeof source-new/auto/types/sizeof --- source/auto/types/sizeof 2025-04-23 18:48:54.000000000 +0700 -+++ source-new/auto/types/sizeof 2025-09-16 02:38:57.979145501 +0700 ++++ source-new/auto/types/sizeof 2025-09-16 02:44:58.618532943 +0700 @@ -33,7 +33,7 @@ END @@ -35,9 +35,9 @@ diff --color -ruwN source/auto/types/sizeof source-new/auto/types/sizeof -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs" eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1" -diff --color -ruwN source/auto/types/typedef source-new/auto/types/typedef +diff -ruwN source/auto/types/typedef source-new/auto/types/typedef --- source/auto/types/typedef 2025-04-23 18:48:54.000000000 +0700 -+++ source-new/auto/types/typedef 2025-09-16 02:38:54.927091443 +0700 ++++ source-new/auto/types/typedef 2025-09-16 02:44:58.618532943 +0700 @@ -34,7 +34,7 @@ END @@ -47,9 +47,9 @@ diff --color -ruwN source/auto/types/typedef source-new/auto/types/typedef -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs" eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1" -diff --color -ruwN source/src/os/unix/ngx_process.c source-new/src/os/unix/ngx_process.c +diff -ruwN source/src/os/unix/ngx_process.c source-new/src/os/unix/ngx_process.c --- source/src/os/unix/ngx_process.c 2025-04-23 18:48:54.000000000 +0700 -+++ source-new/src/os/unix/ngx_process.c 2025-09-16 02:40:44.363029726 +0700 ++++ source-new/src/os/unix/ngx_process.c 2025-09-16 02:44:58.618532943 +0700 @@ -143,6 +143,7 @@ } @@ -66,3 +66,20 @@ diff --color -ruwN source/src/os/unix/ngx_process.c source-new/src/os/unix/ngx_p if (fcntl(ngx_processes[s].channel[0], F_SETFD, FD_CLOEXEC) == -1) { ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno, +diff -ruwN source/src/os/unix/ngx_process_cycle.c source-new/src/os/unix/ngx_process_cycle.c +--- source/src/os/unix/ngx_process_cycle.c 2025-04-23 18:48:54.000000000 +0700 ++++ source-new/src/os/unix/ngx_process_cycle.c 2025-09-27 02:17:21.509383985 +0700 +@@ -804,11 +804,13 @@ + exit(2); + } + ++ /* + if (initgroups(ccf->username, ccf->group) == -1) { + ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno, + "initgroups(%s, %d) failed", + ccf->username, ccf->group); + } ++ */ + + #if (NGX_HAVE_PR_SET_KEEPCAPS && NGX_HAVE_CAPABILITIES) + if (ccf->transparent && ccf->user) { From 58fc70fc7e9df1160658f9974a760230bdf83d1e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 26 Sep 2025 16:01:04 -0600 Subject: [PATCH 2848/3180] installer-gui: add manifest --- recipes/gui/installer-gui/manifest | 6 ++++++ recipes/gui/installer-gui/recipe.toml | 8 +++++++- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 recipes/gui/installer-gui/manifest diff --git a/recipes/gui/installer-gui/manifest b/recipes/gui/installer-gui/manifest new file mode 100644 index 00000000..9bdf825f --- /dev/null +++ b/recipes/gui/installer-gui/manifest @@ -0,0 +1,6 @@ +name=Redox Installer +category=System +binary=/usr/bin/redox_installer_gui +icon=/usr/share/icons/Pop/48x48/apps/system-os-installer.svg +author=Jeremy Soller +description=GUI Installer for Redox diff --git a/recipes/gui/installer-gui/recipe.toml b/recipes/gui/installer-gui/recipe.toml index 7c43f12c..b90147a8 100644 --- a/recipes/gui/installer-gui/recipe.toml +++ b/recipes/gui/installer-gui/recipe.toml @@ -2,4 +2,10 @@ git = "https://gitlab.redox-os.org/redox-os/installer-gui.git" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo + +mkdir -pv "${COOKBOOK_STAGE}/ui/apps" +cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/ui/apps/redox-installer-gui" +""" From 71fac772ccefbbf0af0258de9574dd03dd4f10a0 Mon Sep 17 00:00:00 2001 From: Ron Williams Date: Fri, 26 Sep 2025 22:15:00 +0000 Subject: [PATCH 2849/3180] Add recipe for redox-posix-tests --- recipes/tests/redox-posix-tests/recipe.toml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 recipes/tests/redox-posix-tests/recipe.toml diff --git a/recipes/tests/redox-posix-tests/recipe.toml b/recipes/tests/redox-posix-tests/recipe.toml new file mode 100644 index 00000000..861b9288 --- /dev/null +++ b/recipes/tests/redox-posix-tests/recipe.toml @@ -0,0 +1,18 @@ +# [source] +# git = "https://gitlab.redox-os.org/redox-os/redox-posix-tests.git" + + +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}/share/redox-posix-tests" +cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/share/redox-posix-tests" +""" + +[package] +dependencies = [ + "gcc13", + "gnu-binutils", + "gnu-make", +] + From 6e8f2b872e2b198ac077c9a516b4e0239fa6be0b Mon Sep 17 00:00:00 2001 From: Ron Williams Date: Sat, 27 Sep 2025 04:49:01 +0000 Subject: [PATCH 2850/3180] Add redox-posix-tests recipe with correct git reference --- recipes/tests/redox-posix-tests/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/tests/redox-posix-tests/recipe.toml b/recipes/tests/redox-posix-tests/recipe.toml index 861b9288..dae4b48c 100644 --- a/recipes/tests/redox-posix-tests/recipe.toml +++ b/recipes/tests/redox-posix-tests/recipe.toml @@ -1,5 +1,5 @@ -# [source] -# git = "https://gitlab.redox-os.org/redox-os/redox-posix-tests.git" +[source] +git = "https://gitlab.redox-os.org/redox-os/redox-posix-tests.git" [build] From 6a19a12380158f869f244a55d5ba2909e1e257b8 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 28 Sep 2025 13:36:44 +0700 Subject: [PATCH 2851/3180] Skip checking source freshness for build dependencies --- src/bin/cook.rs | 38 ++++++++++++++++++++++++++++---------- src/recipe.rs | 12 ++++++++++-- 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 4cfc2d43..d4e14756 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -746,7 +746,11 @@ fn build( target_dir: &Path, name: &PackageName, recipe: &Recipe, + check_source: bool, ) -> Result<(PathBuf, BTreeSet), String> { + let sysroot_dir = target_dir.join("sysroot"); + let stage_dir = target_dir.join("stage"); + let mut dep_pkgars = BTreeSet::new(); for dependency in recipe.build.dependencies.iter() { let dependency_dir = recipes::find(dependency.as_str()); @@ -763,6 +767,11 @@ fn build( )); } + if stage_dir.exists() && !check_source { + let auto_deps = build_auto_deps(target_dir, &stage_dir, dep_pkgars)?; + return Ok((stage_dir, auto_deps)); + } + let source_modified = modified_dir_ignore_git(source_dir)?; let deps_modified = dep_pkgars .iter() @@ -770,7 +779,6 @@ fn build( .max() .unwrap_or(Ok(SystemTime::UNIX_EPOCH))?; - let sysroot_dir = target_dir.join("sysroot"); // Rebuild sysroot if source is newer //TODO: rebuild on recipe changes if sysroot_dir.is_dir() { @@ -820,7 +828,6 @@ fn build( rename(&sysroot_dir_tmp, &sysroot_dir)?; } - let stage_dir = target_dir.join("stage"); // Rebuild stage if source is newer //TODO: rebuild on recipe changes if stage_dir.is_dir() { @@ -1189,10 +1196,19 @@ done rename(&stage_dir_tmp, &stage_dir)?; } - // Calculate automatic dependencies - let auto_deps_path = target_dir.join("auto_deps.toml"); + let auto_deps = build_auto_deps(target_dir, &stage_dir, dep_pkgars)?; - if auto_deps_path.is_file() && modified(&auto_deps_path)? < modified(&stage_dir)? { + Ok((stage_dir, auto_deps)) +} + +/// Calculate automatic dependencies +fn build_auto_deps( + target_dir: &Path, + stage_dir: &PathBuf, + dep_pkgars: BTreeSet<(PackageName, PathBuf)>, +) -> Result, String> { + let auto_deps_path = target_dir.join("auto_deps.toml"); + if auto_deps_path.is_file() && modified(&auto_deps_path)? < modified(stage_dir)? { remove_all(&auto_deps_path)? } @@ -1203,13 +1219,12 @@ done toml::from_str(&toml_content).map_err(|_| "failed to deserialize cached auto_deps")?; wrapper.packages } else { - let packages = auto_deps(&stage_dir, &dep_pkgars); + let packages = auto_deps(stage_dir, &dep_pkgars); let wrapper = AutoDeps { packages }; serialize_and_write(&auto_deps_path, &wrapper)?; wrapper.packages }; - - Ok((stage_dir, auto_deps)) + Ok(auto_deps) } fn package( @@ -1316,6 +1331,7 @@ fn cook( recipe_dir: &Path, name: &PackageName, recipe: &Recipe, + is_deps: bool, fetch_only: bool, is_offline: bool, ) -> Result<(), String> { @@ -1335,8 +1351,9 @@ fn cook( let target_dir = create_target_dir(recipe_dir)?; - let (stage_dir, auto_deps) = build(recipe_dir, &source_dir, &target_dir, name, recipe) - .map_err(|err| format!("failed to build: {}", err))?; + let (stage_dir, auto_deps) = + build(recipe_dir, &source_dir, &target_dir, name, recipe, !is_deps) + .map_err(|err| format!("failed to build: {}", err))?; let _package_file = package(&stage_dir, &target_dir, name, recipe, &auto_deps) .map_err(|err| format!("failed to package: {}", err))?; @@ -1432,6 +1449,7 @@ fn main() { &recipe.dir, &recipe.name, &recipe.recipe, + recipe.is_deps, fetch_only, is_offline, ) diff --git a/src/recipe.rs b/src/recipe.rs index 8032e5fe..1e6a23eb 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -135,6 +135,8 @@ pub struct CookRecipe { pub name: PackageName, pub dir: PathBuf, pub recipe: Recipe, + /// If true, the source will not be checked for freshness + pub is_deps: bool, } impl CookRecipe { @@ -156,7 +158,12 @@ impl CookRecipe { .map_err(|err| PackageError::Parse(DeError::custom(err), Some(file)))?; let dir = dir.to_path_buf(); - Ok(Self { name, dir, recipe }) + Ok(Self { + name, + dir, + recipe, + is_deps: false, + }) } pub fn new_recursive( @@ -179,8 +186,9 @@ impl CookRecipe { }, )?; - for dependency in dependencies { + for mut dependency in dependencies { if !recipes.contains(&dependency) { + dependency.is_deps = true; recipes.push(dependency); } } From 84ea44bc275aeafe1575ccc737c60fa8d9d45129 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 28 Sep 2025 14:17:14 +0700 Subject: [PATCH 2852/3180] Improve is_deps case --- src/bin/cook.rs | 2 +- src/recipe.rs | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index d4e14756..5dd888d5 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1412,7 +1412,7 @@ fn main() { }; } - let recipes = match CookRecipe::new_recursive(&recipe_names, WALK_DEPTH) { + let recipes = match CookRecipe::get_build_deps_recursive(&recipe_names) { Ok(ok) => ok, Err(err) => { eprintln!( diff --git a/src/recipe.rs b/src/recipe.rs index 1e6a23eb..f58e7376 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -6,6 +6,8 @@ use serde::{ Deserialize, Serialize, }; +use crate::WALK_DEPTH; + /// Specifies how to download the source for a recipe #[derive(Debug, Deserialize, PartialEq, Serialize)] #[serde(untagged)] @@ -186,9 +188,8 @@ impl CookRecipe { }, )?; - for mut dependency in dependencies { + for dependency in dependencies { if !recipes.contains(&dependency) { - dependency.is_deps = true; recipes.push(dependency); } } @@ -201,6 +202,18 @@ impl CookRecipe { Ok(recipes) } + pub fn get_build_deps_recursive( + names: &[PackageName], + ) -> Result, PackageError> { + let mut packages = Self::new_recursive(names, WALK_DEPTH)?; + + for package in packages.iter_mut() { + package.is_deps = !names.contains(&package.name); + } + + Ok(packages) + } + pub fn get_package_deps_recursive( names: &[PackageName], recursion: usize, From c8dc39665864d32d70410139c6c7b82c48615ca9 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 28 Sep 2025 14:19:06 +0700 Subject: [PATCH 2853/3180] fmt --- src/recipe.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/recipe.rs b/src/recipe.rs index f58e7376..06c49e68 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -202,9 +202,7 @@ impl CookRecipe { Ok(recipes) } - pub fn get_build_deps_recursive( - names: &[PackageName], - ) -> Result, PackageError> { + pub fn get_build_deps_recursive(names: &[PackageName]) -> Result, PackageError> { let mut packages = Self::new_recursive(names, WALK_DEPTH)?; for package in packages.iter_mut() { From e1334e2f4913e2c490d0cf164bd00c612d5e27f3 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 28 Sep 2025 15:04:03 +0700 Subject: [PATCH 2854/3180] Use upstream cargo --- recipes/dev/cargo/recipe.toml | 11 ++++++----- recipes/dev/cargo/redox.patch | 37 +++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 recipes/dev/cargo/redox.patch diff --git a/recipes/dev/cargo/recipe.toml b/recipes/dev/cargo/recipe.toml index 07acd357..e0748962 100644 --- a/recipes/dev/cargo/recipe.toml +++ b/recipes/dev/cargo/recipe.toml @@ -1,7 +1,9 @@ [source] -git = "https://gitlab.redox-os.org/redox-os/cargo.git" -upstream = "https://github.com/rust-lang/cargo.git" -branch = "redox-2023-01-21" +git = "https://github.com/rust-lang/cargo.git" +rev = "d73d2caf9e41a39daf2a8d6ce60ec80bf354d2a7" # 0.86 +patches = [ + "redox.patch" +] [build] template = "custom" @@ -19,14 +21,13 @@ export LIBZ_SYS_STATIC=1 export DEP_NGHTTP2_ROOT="${COOKBOOK_SYSROOT}" export DEP_OPENSSL_ROOT="${COOKBOOK_SYSROOT}" export DEP_Z_ROOT="${COOKBOOK_SYSROOT}" -# Force linking system nghttp2 "${COOKBOOK_CARGO}" rustc \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ --release \ --bin cargo \ -- \ -L "${COOKBOOK_SYSROOT}/lib" \ - -C link-arg="-lnghttp2" + -C link-arg=-Wl,-rpath-link,${COOKBOOK_SYSROOT}/lib mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v "target/${TARGET}/release/cargo" "${COOKBOOK_STAGE}/usr/bin/cargo" """ diff --git a/recipes/dev/cargo/redox.patch b/recipes/dev/cargo/redox.patch new file mode 100644 index 00000000..4a32bfe0 --- /dev/null +++ b/recipes/dev/cargo/redox.patch @@ -0,0 +1,37 @@ +diff --git a/crates/cargo-util/src/paths.rs b/crates/cargo-util/src/paths.rs +index 5d7e3c5a6..b7de5655f 100644 +--- a/crates/cargo-util/src/paths.rs ++++ b/crates/cargo-util/src/paths.rs +@@ -201,7 +201,7 @@ pub fn write_atomic, C: AsRef<[u8]>>(path: P, contents: C) -> Res + use std::os::unix::fs::PermissionsExt; + + // these constants are u16 on macOS +- let mask = u32::from(libc::S_IRWXU | libc::S_IRWXG | libc::S_IRWXO); ++ let mask = (libc::S_IRWXU | libc::S_IRWXG | libc::S_IRWXO) as u32; + let mode = meta.permissions().mode() & mask; + + std::fs::Permissions::from_mode(mode) +@@ -611,8 +611,6 @@ fn _link_or_copy(src: &Path, dst: &Path) -> Result<()> { + } + + let link_result = if src.is_dir() { +- #[cfg(target_os = "redox")] +- use std::os::redox::fs::symlink; + #[cfg(unix)] + use std::os::unix::fs::symlink; + #[cfg(windows)] +diff --git a/src/cargo/core/compiler/build_config.rs b/src/cargo/core/compiler/build_config.rs +index 80aa592dd..d40c2056b 100644 +--- a/src/cargo/core/compiler/build_config.rs ++++ b/src/cargo/core/compiler/build_config.rs +@@ -51,9 +51,7 @@ pub struct BuildConfig { + } + + fn default_parallelism() -> CargoResult { +- Ok(available_parallelism() +- .context("failed to determine the amount of parallelism available")? +- .get() as u32) ++ Ok(1) + } + + impl BuildConfig { From 21bfbac091f635e511bcdb16adf0bc6f91cf9aac Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 28 Sep 2025 16:10:03 +0700 Subject: [PATCH 2855/3180] Fix warning to metapackages --- src/bin/repo_builder.rs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/bin/repo_builder.rs b/src/bin/repo_builder.rs index 760fc33c..8f1f0ac9 100644 --- a/src/bin/repo_builder.rs +++ b/src/bin/repo_builder.rs @@ -160,13 +160,12 @@ fn main() -> Result<(), Box> { let content = fs::read_to_string(&path)?; let parsed: Value = toml::from_str(&content)?; - if let Some(version_val) = parsed.get("version") { - let version_str = version_val.to_string(); // includes quotes - let package_name = path.file_stem().unwrap().to_string_lossy().to_string(); - packages.insert(package_name, version_str); - } else { - eprintln!("Warning: no [version] found in {:?}", path); - } + let version_str = parsed + .get("version") + .unwrap_or(&Value::String("".to_string())) + .to_string(); // includes quotes + let package_name = path.file_stem().unwrap().to_string_lossy().to_string(); + packages.insert(package_name, version_str); } // FIXME: Use proper TOML serializer From 503dc4998f69874e98a287aa81950b41913debe7 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 28 Sep 2025 21:51:07 +0700 Subject: [PATCH 2856/3180] Disable OpenSSH key generation --- recipes/net/openssh/recipe.toml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/recipes/net/openssh/recipe.toml b/recipes/net/openssh/recipe.toml index 648f006e..b1b64358 100644 --- a/recipes/net/openssh/recipe.toml +++ b/recipes/net/openssh/recipe.toml @@ -23,11 +23,11 @@ mv "${COOKBOOK_STAGE}"/usr/sbin/sshd "${COOKBOOK_STAGE}"/usr/bin/sshd rmdir "${COOKBOOK_STAGE}"/usr/sbin # Extracted from `make host-key-force` -# TODO: Very insecure! but there's no postscript yet -ssh-keygen -t dsa -f "${COOKBOOK_STAGE}"/etc/ssh/ssh_host_dsa_key -N "" -ssh-keygen -t rsa -f "${COOKBOOK_STAGE}"/etc/ssh/ssh_host_rsa_key -N "" -ssh-keygen -t ed25519 -f "${COOKBOOK_STAGE}"/etc/ssh/ssh_host_ed25519_key -N "" -ssh-keygen -t ecdsa -f "${COOKBOOK_STAGE}"/etc/ssh/ssh_host_ecdsa_key -N "" +# TODO: Postscript to generate this +# ssh-keygen -t dsa -f "${COOKBOOK_STAGE}"/etc/ssh/ssh_host_dsa_key -N "" +# ssh-keygen -t rsa -f "${COOKBOOK_STAGE}"/etc/ssh/ssh_host_rsa_key -N "" +# ssh-keygen -t ed25519 -f "${COOKBOOK_STAGE}"/etc/ssh/ssh_host_ed25519_key -N "" +# ssh-keygen -t ecdsa -f "${COOKBOOK_STAGE}"/etc/ssh/ssh_host_ecdsa_key -N "" CONFIG_FILE="${COOKBOOK_STAGE}"/etc/ssh/sshd_config From 88c49c4c60375f9f4580b339ccc500c668401469 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sun, 28 Sep 2025 15:44:54 +0000 Subject: [PATCH 2857/3180] Fix php symlink --- recipes/dev/php84/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/dev/php84/recipe.toml b/recipes/dev/php84/recipe.toml index f7fc503b..1435238f 100644 --- a/recipes/dev/php84/recipe.toml +++ b/recipes/dev/php84/recipe.toml @@ -74,7 +74,7 @@ mv ${COOKBOOK_STAGE}/usr/sbin/* ${COOKBOOK_STAGE}/usr/bin/ for bin in "php-cgi" "php-config" "php" "phpdbg" "phpize" "php-fpm"; do ln -s "$bin$SUFFIX" ${COOKBOOK_STAGE}/usr/bin/$bin done -rm ${COOKBOOK_STAGE}/usr/bin/phar$SUFFIX +unlink ${COOKBOOK_STAGE}/usr/bin/phar$SUFFIX mkdir -p ${COOKBOOK_STAGE}/etc/php/$SUFFIX/conf.d cp ${COOKBOOK_SOURCE}/php.ini* ${COOKBOOK_STAGE}/etc/php/$SUFFIX/ """ From ff65ed2fec326b1fbdb182f9f430a7362326a46a Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 28 Sep 2025 23:27:17 +0700 Subject: [PATCH 2858/3180] Fix liborbital for non x86_64 targets --- recipes/libs/liborbital/recipe.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/libs/liborbital/recipe.toml b/recipes/libs/liborbital/recipe.toml index a3e0c5fe..469d57f1 100644 --- a/recipes/libs/liborbital/recipe.toml +++ b/recipes/libs/liborbital/recipe.toml @@ -7,5 +7,6 @@ script = """ DYNAMIC_STATIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ "${COOKBOOK_CARGO}" build --release -"${COOKBOOK_MAKE}" install HOST="${TARGET}" DESTDIR="${COOKBOOK_STAGE}" +# other than x86_64 this will trigger error because of lacking .so files, which is fine +"${COOKBOOK_MAKE}" install HOST="${TARGET}" DESTDIR="${COOKBOOK_STAGE}" || true """ From ad86bbb88cfb71aa095516e1f3d324e9f99869ea Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 28 Sep 2025 23:53:47 +0700 Subject: [PATCH 2859/3180] Fix php symlink part II --- recipes/dev/php84/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/dev/php84/recipe.toml b/recipes/dev/php84/recipe.toml index f7fc503b..1e109c25 100644 --- a/recipes/dev/php84/recipe.toml +++ b/recipes/dev/php84/recipe.toml @@ -74,7 +74,7 @@ mv ${COOKBOOK_STAGE}/usr/sbin/* ${COOKBOOK_STAGE}/usr/bin/ for bin in "php-cgi" "php-config" "php" "phpdbg" "phpize" "php-fpm"; do ln -s "$bin$SUFFIX" ${COOKBOOK_STAGE}/usr/bin/$bin done -rm ${COOKBOOK_STAGE}/usr/bin/phar$SUFFIX -mkdir -p ${COOKBOOK_STAGE}/etc/php/$SUFFIX/conf.d +# will not exist on bash but exist on other shell +rm -f ${COOKBOOK_STAGE}/usr/bin/phar$SUFFIX cp ${COOKBOOK_SOURCE}/php.ini* ${COOKBOOK_STAGE}/etc/php/$SUFFIX/ """ From b5daccaed122456cf9dbec8e3523e3f47e490d22 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 28 Sep 2025 12:43:45 -0600 Subject: [PATCH 2860/3180] python312: use whatever system python3 is installed for the build --- recipes/dev/python312/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/dev/python312/recipe.toml b/recipes/dev/python312/recipe.toml index 1209eb07..c7558320 100644 --- a/recipes/dev/python312/recipe.toml +++ b/recipes/dev/python312/recipe.toml @@ -34,7 +34,7 @@ COOKBOOK_CONFIGURE_FLAGS=( --disable-ipv6 --host=${GNU_TARGET} --build=$ARCH - --with-build-python + --with-build-python=python3 --with-ensurepip=install --disable-test-modules ac_cv_file__dev_ptmx=no From 69573f5bd4ad8d692a3a2669185a1b979356b029 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 28 Sep 2025 12:48:08 -0600 Subject: [PATCH 2861/3180] Revert "python312: use whatever system python3 is installed for the build" This reverts commit b5daccaed122456cf9dbec8e3523e3f47e490d22. --- recipes/dev/python312/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/dev/python312/recipe.toml b/recipes/dev/python312/recipe.toml index c7558320..1209eb07 100644 --- a/recipes/dev/python312/recipe.toml +++ b/recipes/dev/python312/recipe.toml @@ -34,7 +34,7 @@ COOKBOOK_CONFIGURE_FLAGS=( --disable-ipv6 --host=${GNU_TARGET} --build=$ARCH - --with-build-python=python3 + --with-build-python --with-ensurepip=install --disable-test-modules ac_cv_file__dev_ptmx=no From 942c3ea4daa2ef5a471b6169cceeea7f674890f2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 28 Sep 2025 13:14:01 -0600 Subject: [PATCH 2862/3180] python312: built host compiler for cross compilation --- recipes/dev/python312/recipe.toml | 40 +++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/recipes/dev/python312/recipe.toml b/recipes/dev/python312/recipe.toml index 1209eb07..f7759afa 100644 --- a/recipes/dev/python312/recipe.toml +++ b/recipes/dev/python312/recipe.toml @@ -21,6 +21,42 @@ dependencies = [ ] script = """ DYNAMIC_INIT + +# Build host python3 +mkdir -p host +pushd host +#TODO: easier way to build for host? +HOST_ENV=( + env + --unset=AR + --unset=AS + --unset=CC + --unset=CFLAGS + --unset=CPPFLAGS + --unset=CXX + --unset=GNU_TARGET + --unset=LD + --unset=LDFLAGS + --unset=NM + --unset=OBJCOPY + --unset=OBJDUMP + --unset=PKG_CONFIG + --unset=PKG_CONFIG_ALLOW_CROSS + --unset=PKG_CONFIG_FOR_BUILD + --unset=PKG_CONFIG_LIBDIR + --unset=PKG_CONFIG_PATH + --unset=PKG_CONFIG_SYSROOT_DIR + --unset=PREFIX_RUSTFLAGS + --unset=RANLIB + --unset=READELF + --unset=STRIP + --unset=TARGET +) +"${HOST_ENV[@]}" "${COOKBOOK_CONFIGURE}" --prefix="${PWD}/usr" +"${HOST_ENV[@]}" "${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" +"${HOST_ENV[@]}" "${COOKBOOK_MAKE}" altinstall +popd + export PYTHONDONTWRITEBYTECODE=1 ARCH="${TARGET%%-*}" @@ -33,8 +69,8 @@ COOKBOOK_CONFIGURE_FLAGS=( --enable-shared --disable-ipv6 --host=${GNU_TARGET} - --build=$ARCH - --with-build-python + --build="$ARCH" + --with-build-python="${PWD}/host/usr/bin/python3.12" --with-ensurepip=install --disable-test-modules ac_cv_file__dev_ptmx=no From edb56a11533743a6daa4cf48b25d258fa5e0b6b0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 28 Sep 2025 13:47:54 -0600 Subject: [PATCH 2863/3180] python312: workaround for missing CLOCK_THREAD_CPUTIME_ID --- recipes/dev/python312/redox.patch | 62 ++++++++++++++++++------------- 1 file changed, 37 insertions(+), 25 deletions(-) diff --git a/recipes/dev/python312/redox.patch b/recipes/dev/python312/redox.patch index 292c43db..9ead63c5 100644 --- a/recipes/dev/python312/redox.patch +++ b/recipes/dev/python312/redox.patch @@ -1,7 +1,7 @@ diff -ruwN source/configure source-new/configure ---- source/configure 2025-02-04 21:38:38.000000000 +0700 -+++ source-new/configure 2025-09-17 20:20:00.088297027 +0700 -@@ -4283,6 +4283,9 @@ +--- source/configure 2023-10-02 05:48:14.000000000 -0600 ++++ source-new/configure 2025-09-28 13:44:57.914820310 -0600 +@@ -4276,6 +4276,9 @@ *-*-wasi) ac_sys_system=WASI ;; @@ -11,7 +11,7 @@ diff -ruwN source/configure source-new/configure *) # for now, limit cross builds to known configurations MACHDEP="unknown" -@@ -4307,6 +4310,7 @@ +@@ -4300,6 +4303,7 @@ case $MACHDEP in aix*) MACHDEP="aix";; linux*) MACHDEP="linux";; @@ -19,7 +19,7 @@ diff -ruwN source/configure source-new/configure cygwin*) MACHDEP="cygwin";; darwin*) MACHDEP="darwin";; '') MACHDEP="unknown";; -@@ -4327,7 +4331,7 @@ +@@ -4311,7 +4315,7 @@ if test "$cross_compiling" = yes; then case "$host" in @@ -28,7 +28,7 @@ diff -ruwN source/configure source-new/configure case "$host_cpu" in arm*) _host_cpu=arm -@@ -6762,6 +6766,7 @@ +@@ -6746,6 +6750,7 @@ #undef cris #undef fr30 #undef linux @@ -36,7 +36,7 @@ diff -ruwN source/configure source-new/configure #undef hppa #undef hpux #undef i386 -@@ -6907,6 +6912,18 @@ +@@ -6891,6 +6896,18 @@ # endif #elif defined(__gnu_hurd__) i386-gnu @@ -55,7 +55,7 @@ diff -ruwN source/configure source-new/configure #elif defined(__APPLE__) darwin #elif defined(__VXWORKS__) -@@ -7507,7 +7524,7 @@ +@@ -7488,7 +7505,7 @@ PY3LIBRARY=libpython3.so fi ;; @@ -64,8 +64,8 @@ diff -ruwN source/configure source-new/configure LDLIBRARY='libpython$(LDVERSION).so' BLDLIBRARY='-L. -lpython$(LDVERSION)' RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} -@@ -12815,7 +12832,7 @@ - Emscripten*|WASI*) +@@ -12753,7 +12770,7 @@ + Emscripten|WASI) LDSHARED='$(CC) -shared' LDCXXSHARED='$(CXX) -shared';; - Linux*|GNU*|QNX*|VxWorks*|Haiku*) @@ -73,7 +73,7 @@ diff -ruwN source/configure source-new/configure LDSHARED='$(CC) -shared' LDCXXSHARED='$(CXX) -shared';; FreeBSD*) -@@ -12901,7 +12918,7 @@ +@@ -12839,7 +12856,7 @@ else CCSHARED="+z"; fi;; Linux-android*) ;; @@ -82,7 +82,7 @@ diff -ruwN source/configure source-new/configure Emscripten*|WASI*) if test "x$enable_wasm_dynamic_linking" = xyes then : -@@ -12939,7 +12956,7 @@ +@@ -12877,7 +12894,7 @@ LINKFORSHARED="-Wl,-E -Wl,+s";; # LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";; Linux-android*) LINKFORSHARED="-pie -Xlinker -export-dynamic";; @@ -92,8 +92,8 @@ diff -ruwN source/configure source-new/configure Darwin/*) LINKFORSHARED="$extra_undefs -framework CoreFoundation" diff -ruwN source/Include/pyport.h source-new/Include/pyport.h ---- source/Include/pyport.h 2025-02-04 21:38:38.000000000 +0700 -+++ source-new/Include/pyport.h 2025-09-08 00:58:51.645114412 +0700 +--- source/Include/pyport.h 2023-10-02 05:48:14.000000000 -0600 ++++ source-new/Include/pyport.h 2025-09-28 13:44:57.916856922 -0600 @@ -684,7 +684,7 @@ # error "Py_TRACE_REFS ABI is not compatible with release and debug ABI" #endif @@ -104,8 +104,8 @@ diff -ruwN source/Include/pyport.h source-new/Include/pyport.h // See _Py_GetLocaleEncoding(), PyUnicode_DecodeLocale() // and PyUnicode_EncodeLocale(). diff -ruwN source/Modules/_cryptmodule.c source-new/Modules/_cryptmodule.c ---- source/Modules/_cryptmodule.c 2025-02-04 21:38:38.000000000 +0700 -+++ source-new/Modules/_cryptmodule.c 2025-09-08 01:08:47.321046272 +0700 +--- source/Modules/_cryptmodule.c 2023-10-02 05:48:14.000000000 -0600 ++++ source-new/Modules/_cryptmodule.c 2025-09-28 13:44:57.917139387 -0600 @@ -38,13 +38,7 @@ /*[clinic end generated code: output=0512284a03d2803c input=0e8edec9c364352b]*/ { @@ -121,9 +121,9 @@ diff -ruwN source/Modules/_cryptmodule.c source-new/Modules/_cryptmodule.c return PyErr_SetFromErrno(PyExc_OSError); } diff -ruwN source/Modules/posixmodule.c source-new/Modules/posixmodule.c ---- source/Modules/posixmodule.c 2025-02-04 21:38:38.000000000 +0700 -+++ source-new/Modules/posixmodule.c 2025-09-08 01:06:48.400701428 +0700 -@@ -2695,8 +2695,7 @@ +--- source/Modules/posixmodule.c 2023-10-02 05:48:14.000000000 -0600 ++++ source-new/Modules/posixmodule.c 2025-09-28 13:44:57.918070573 -0600 +@@ -2610,8 +2610,7 @@ #ifdef HAVE_FSTATAT if ((dir_fd != DEFAULT_DIR_FD) || !follow_symlinks) { if (HAVE_FSTATAT_RUNTIME) { @@ -133,7 +133,7 @@ diff -ruwN source/Modules/posixmodule.c source-new/Modules/posixmodule.c } else { fstatat_unavailable = 1; -@@ -3186,8 +3185,6 @@ +@@ -3083,8 +3082,6 @@ if (HAVE_FACCESSAT_RUNTIME) { int flags = 0; @@ -142,7 +142,7 @@ diff -ruwN source/Modules/posixmodule.c source-new/Modules/posixmodule.c if (effective_ids) flags |= AT_EACCESS; result = faccessat(dir_fd, path->narrow, mode, flags); -@@ -3472,8 +3469,7 @@ +@@ -3369,8 +3366,7 @@ * support dir_fd and follow_symlinks=False. (Hopefully.) * Until then, we need to be careful what exception we raise. */ @@ -152,7 +152,7 @@ diff -ruwN source/Modules/posixmodule.c source-new/Modules/posixmodule.c /* * But wait! We can't throw the exception without allowing threads, * and we can't do that in this nested scope. (Macro trickery, sigh.) -@@ -3850,8 +3846,7 @@ +@@ -3747,8 +3743,7 @@ #ifdef HAVE_FCHOWNAT if ((dir_fd != DEFAULT_DIR_FD) || (!follow_symlinks)) { if (HAVE_FCHOWNAT_RUNTIME) { @@ -162,7 +162,7 @@ diff -ruwN source/Modules/posixmodule.c source-new/Modules/posixmodule.c } else { fchownat_unsupported = 1; } -@@ -14727,8 +14722,7 @@ +@@ -14598,8 +14593,7 @@ #ifdef HAVE_FSTATAT if (HAVE_FSTATAT_RUNTIME) { Py_BEGIN_ALLOW_THREADS @@ -173,8 +173,8 @@ diff -ruwN source/Modules/posixmodule.c source-new/Modules/posixmodule.c } else diff -ruwN source/Modules/resource.c source-new/Modules/resource.c ---- source/Modules/resource.c 2025-02-04 21:38:38.000000000 +0700 -+++ source-new/Modules/resource.c 2025-09-08 01:10:18.427310454 +0700 +--- source/Modules/resource.c 2023-10-02 05:48:14.000000000 -0600 ++++ source-new/Modules/resource.c 2025-09-28 13:44:57.919295094 -0600 @@ -216,7 +216,7 @@ { struct rlimit rl; @@ -202,3 +202,15 @@ diff -ruwN source/Modules/resource.c source-new/Modules/resource.c PyErr_SetString(PyExc_ValueError, "invalid resource specified"); return NULL; +diff -ruwN source/Modules/timemodule.c source-new/Modules/timemodule.c +--- source/Modules/timemodule.c 2023-10-02 05:48:14.000000000 -0600 ++++ source-new/Modules/timemodule.c 2025-09-28 13:45:28.513234796 -0600 +@@ -1494,7 +1494,7 @@ + + #elif defined(HAVE_CLOCK_GETTIME) && \ + defined(CLOCK_PROCESS_CPUTIME_ID) && \ +- !defined(__EMSCRIPTEN__) && !defined(__wasi__) ++ !defined(__EMSCRIPTEN__) && !defined(__wasi__) && !defined(__redox__) + #define HAVE_THREAD_TIME + + #if defined(__APPLE__) && defined(__has_attribute) && __has_attribute(availability) From 33610038e0a2ef130c282e8fe61f78d138f2510e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 29 Sep 2025 08:28:50 -0300 Subject: [PATCH 2864/3180] Add dillo recipe --- recipes/wip/web/dillo/recipe.toml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 recipes/wip/web/dillo/recipe.toml diff --git a/recipes/wip/web/dillo/recipe.toml b/recipes/wip/web/dillo/recipe.toml new file mode 100644 index 00000000..bd33d715 --- /dev/null +++ b/recipes/wip/web/dillo/recipe.toml @@ -0,0 +1,15 @@ +#TODO not compiled or tested +# build instructions: https://github.com/dillo-browser/dillo/blob/master/doc/install.md +[source] +tar = "https://github.com/dillo-browser/dillo/releases/download/v3.2.0/dillo-3.2.0.tar.bz2" +[build] +template = "configure" +dependencies = [ + "fltk", + "openssl3", + "zlib", + "libpng", + "libjpeg", + "libwebp", + "libbrotli", +] From e2928dc117c5a67d938131328ef823db1782c069 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 29 Sep 2025 08:47:10 -0300 Subject: [PATCH 2865/3180] Update fltk recipes --- recipes/wip/libs/other/fltk/recipe.toml | 17 ----------------- recipes/wip/libs/other/fltk13/recipe.toml | 21 +++++++++++++++++++++ recipes/wip/libs/other/fltk14/recipe.toml | 21 +++++++++++++++++++++ 3 files changed, 42 insertions(+), 17 deletions(-) delete mode 100644 recipes/wip/libs/other/fltk/recipe.toml create mode 100644 recipes/wip/libs/other/fltk13/recipe.toml create mode 100644 recipes/wip/libs/other/fltk14/recipe.toml diff --git a/recipes/wip/libs/other/fltk/recipe.toml b/recipes/wip/libs/other/fltk/recipe.toml deleted file mode 100644 index 35895114..00000000 --- a/recipes/wip/libs/other/fltk/recipe.toml +++ /dev/null @@ -1,17 +0,0 @@ -#TODO probably wrong script, see https://github.com/fltk/fltk/blob/master/README.Unix.txt -#TODO port to orbital -[source] -tar = "https://www.fltk.org/pub/fltk/1.3.8/fltk-1.3.8-source.tar.bz2" -[build] -template = "configure" -dependencies = [ - "mesa-glu", - "freeglut", - "cairo", - "fontconfig", - "glew", - "libjpeg", - "libpng", - "pango", - "zlib", -] diff --git a/recipes/wip/libs/other/fltk13/recipe.toml b/recipes/wip/libs/other/fltk13/recipe.toml new file mode 100644 index 00000000..58fe4120 --- /dev/null +++ b/recipes/wip/libs/other/fltk13/recipe.toml @@ -0,0 +1,21 @@ +#TODO probably wrong template, see https://github.com/fltk/fltk/blob/master/README.Unix.txt +# commented out recipes are optional but recommended, needs to be determined +[source] +tar = "https://github.com/fltk/fltk/releases/download/release-1.3.11/fltk-1.3.11-source.tar.bz2" +[build] +template = "configure" +dependencies = [ + "mesa-glu", + "libx11", + "libxft", + "libxcursor", + #"freeglut", + #"cairo", + #"fontconfig", + #"glew", + #"libalsa", + #"libjpeg", + #"libpng", + #"libxinerama", + #"pango", +] diff --git a/recipes/wip/libs/other/fltk14/recipe.toml b/recipes/wip/libs/other/fltk14/recipe.toml new file mode 100644 index 00000000..b7796238 --- /dev/null +++ b/recipes/wip/libs/other/fltk14/recipe.toml @@ -0,0 +1,21 @@ +#TODO probably wrong template, see https://github.com/fltk/fltk/blob/master/README.Unix.txt +# commented out recipes are optional but recommended, needs to be determined +[source] +tar = "https://github.com/fltk/fltk/releases/download/release-1.4.4/fltk-1.4.4-source.tar.bz2" +[build] +template = "configure" +dependencies = [ + "mesa-glu", + "libx11", + "libxft", + "libxcursor", + #"freeglut", + #"cairo", + #"fontconfig", + #"glew", + #"libalsa", + #"libjpeg", + #"libpng", + #"libxinerama", + #"pango", +] From 3ad2cef5166439e377d073422a9243a8caa1b529 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 29 Sep 2025 08:48:48 -0300 Subject: [PATCH 2866/3180] Pin fltk version on dillo recipe --- recipes/wip/web/dillo/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/web/dillo/recipe.toml b/recipes/wip/web/dillo/recipe.toml index bd33d715..53f234e5 100644 --- a/recipes/wip/web/dillo/recipe.toml +++ b/recipes/wip/web/dillo/recipe.toml @@ -5,7 +5,7 @@ tar = "https://github.com/dillo-browser/dillo/releases/download/v3.2.0/dillo-3.2 [build] template = "configure" dependencies = [ - "fltk", + "fltk13", "openssl3", "zlib", "libpng", From 81bce6bf7cd13087622a254ed248de151f4dcb5e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 29 Sep 2025 08:56:31 -0300 Subject: [PATCH 2867/3180] Try to fix the libbrotli recipe --- recipes/wip/libs/other/libbrotli/recipe.toml | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/recipes/wip/libs/other/libbrotli/recipe.toml b/recipes/wip/libs/other/libbrotli/recipe.toml index 426ae869..cbf88052 100644 --- a/recipes/wip/libs/other/libbrotli/recipe.toml +++ b/recipes/wip/libs/other/libbrotli/recipe.toml @@ -3,19 +3,4 @@ git = "https://github.com/google/brotli" rev = "ed738e842d2fbdf2d6459e39267a633c4a9b2f5d" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" From e64f9dd92ae0001c22aa06a0a1e4e837300d1b55 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 30 Sep 2025 06:47:46 -0300 Subject: [PATCH 2868/3180] Move the "Hello Redox" tests to a recipe for better filesystem config organization --- recipes/tests/hello-redox/files/test.c | 5 +++++ recipes/tests/hello-redox/files/test.cpp | 6 ++++++ recipes/tests/hello-redox/files/test.java | 5 +++++ recipes/tests/hello-redox/files/test.js | 1 + recipes/tests/hello-redox/files/test.lua | 1 + recipes/tests/hello-redox/files/test.py | 1 + recipes/tests/hello-redox/files/test.rs | 3 +++ recipes/tests/hello-redox/recipe.toml | 6 ++++++ 8 files changed, 28 insertions(+) create mode 100644 recipes/tests/hello-redox/files/test.c create mode 100644 recipes/tests/hello-redox/files/test.cpp create mode 100644 recipes/tests/hello-redox/files/test.java create mode 100644 recipes/tests/hello-redox/files/test.js create mode 100644 recipes/tests/hello-redox/files/test.lua create mode 100644 recipes/tests/hello-redox/files/test.py create mode 100644 recipes/tests/hello-redox/files/test.rs create mode 100644 recipes/tests/hello-redox/recipe.toml diff --git a/recipes/tests/hello-redox/files/test.c b/recipes/tests/hello-redox/files/test.c new file mode 100644 index 00000000..dba479b0 --- /dev/null +++ b/recipes/tests/hello-redox/files/test.c @@ -0,0 +1,5 @@ +#include + +int main(void) { + printf("Hello, Redox!\\n"); +} diff --git a/recipes/tests/hello-redox/files/test.cpp b/recipes/tests/hello-redox/files/test.cpp new file mode 100644 index 00000000..65a03775 --- /dev/null +++ b/recipes/tests/hello-redox/files/test.cpp @@ -0,0 +1,6 @@ +#include + +int main() +{ + std::cout << "Hello, Redox!" << std::endl; +} diff --git a/recipes/tests/hello-redox/files/test.java b/recipes/tests/hello-redox/files/test.java new file mode 100644 index 00000000..b6aca3d7 --- /dev/null +++ b/recipes/tests/hello-redox/files/test.java @@ -0,0 +1,5 @@ +public class Java { + public static void main(String[] args) { + System.out.println("Hello Redox"); + } +} diff --git a/recipes/tests/hello-redox/files/test.js b/recipes/tests/hello-redox/files/test.js new file mode 100644 index 00000000..d9bc174a --- /dev/null +++ b/recipes/tests/hello-redox/files/test.js @@ -0,0 +1 @@ +console.log("Hello Redox"); diff --git a/recipes/tests/hello-redox/files/test.lua b/recipes/tests/hello-redox/files/test.lua new file mode 100644 index 00000000..253def8b --- /dev/null +++ b/recipes/tests/hello-redox/files/test.lua @@ -0,0 +1 @@ +print("Hello, Redox!") diff --git a/recipes/tests/hello-redox/files/test.py b/recipes/tests/hello-redox/files/test.py new file mode 100644 index 00000000..253def8b --- /dev/null +++ b/recipes/tests/hello-redox/files/test.py @@ -0,0 +1 @@ +print("Hello, Redox!") diff --git a/recipes/tests/hello-redox/files/test.rs b/recipes/tests/hello-redox/files/test.rs new file mode 100644 index 00000000..42c716df --- /dev/null +++ b/recipes/tests/hello-redox/files/test.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, Redox!"); +} diff --git a/recipes/tests/hello-redox/recipe.toml b/recipes/tests/hello-redox/recipe.toml new file mode 100644 index 00000000..6801e833 --- /dev/null +++ b/recipes/tests/hello-redox/recipe.toml @@ -0,0 +1,6 @@ +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}/home/user/hello-redox" +cp -rv "${COOKBOOK_RECIPE}"/files/* "${COOKBOOK_STAGE}/home/user/hello-redox" +""" From f26fd8dee170a26e93bbd0189bd6dba7d2207670 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Tue, 30 Sep 2025 20:59:24 +0700 Subject: [PATCH 2869/3180] Tidy up servo recipe --- recipes/wip/web/servo/recipe.toml | 57 ++++++++------------ recipes/wip/x11/libxkbcommon-x11/recipe.toml | 24 +++++++++ recipes/wip/x11/libxkbcommon-x11/redox.patch | 33 ++++++++++++ 3 files changed, 79 insertions(+), 35 deletions(-) create mode 100644 recipes/wip/x11/libxkbcommon-x11/recipe.toml create mode 100644 recipes/wip/x11/libxkbcommon-x11/redox.patch diff --git a/recipes/wip/web/servo/recipe.toml b/recipes/wip/web/servo/recipe.toml index 50568e30..30dd921c 100644 --- a/recipes/wip/web/servo/recipe.toml +++ b/recipes/wip/web/servo/recipe.toml @@ -1,6 +1,9 @@ [source] git = "https://gitlab.redox-os.org/njskalski/servo.git" branch = "redox_mods" +script = """ +cp ../.servobuild ./ +""" [build] template = "custom" @@ -13,6 +16,8 @@ dependencies = [ "libffi", "libiconv", "libx11", + "libxcursor", + "libxkbcommon-x11", "libxcb", "libpng", "openssl1", @@ -26,49 +31,31 @@ dependencies = [ "libpthread-stubs", "fontconfig", "expat", - "relibc", - "gcc13", ] script = """ -cp "${COOKBOOK_RECIPE}/.servobuild" "${COOKBOOK_SOURCE}/.servobuild" - -# Add wrapper to PATH -export PATH="${COOKBOOK_RECIPE}:${PATH}" -export TARGET=${TARGET} - -# Force cargo to use the correct build target -export CARGO_BUILD_TARGET=${TARGET} +DYNAMIC_INIT # jemalloc specific configuration export JEMALLOC_SYS_WITH_LG_PAGE=16 -export TARGET_CC=${TARGET}-gcc -export TARGET_CXX=${TARGET}-g++ -export TARGET_AR=${TARGET}-ar +export TARGET_CC="$CC" +export TARGET_CXX="$CXX" +export TARGET_AR="$AR" -export PKG_CONFIG_ALLOW_CROSS=1 - -# this /usr/share/pkgconfig comes from x11proto, that stages pc files in wrong dir. -export PKG_CONFIG_PATH="${COOKBOOK_SYSROOT}/lib/pkgconfig" -#:${COOKBOOK_SYSROOT}/usr/lib/pkgconfig:${COOKBOOK_SYSROOT}/usr/share/pkgconfig" -export PKG_CONFIG_LIBDIR="${COOKBOOK_SYSROOT}/lib/pkgconfig" -#:${COOKBOOK_SYSROOT}/usr/lib/pkgconfig" -export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" - -export RUSTFLAGS="-C target-feature=-crt-static -C link-args=-lpng -C link-args=-lxcb -C link-args=-lexpat -C link-args=-lgcc_s -C link-args=-lz -C link-args=-lXau -C link-args=-no-pie" - -rsync -a --delete "${COOKBOOK_SOURCE}/" ./ - - -# I'm tired trying figure out why multiple pkgconfig paths are ignored by cargo building stuff +export PKG_CONFIG_PATH_x86_64_unknown_redox="${COOKBOOK_SYSROOT}/lib/pkgconfig" +export PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_redox="${COOKBOOK_SYSROOT}/lib/pkgconfig" rsync -a -v ${COOKBOOK_SYSROOT}/usr/share/pkgconfig/*.pc ${COOKBOOK_SYSROOT}/lib/pkgconfig/ -rsync -a -v ${COOKBOOK_SYSROOT}/usr/lib/pkgconfig/*.pc ${COOKBOOK_SYSROOT}/lib/pkgconfig/ -echo "listing ${COOKBOOK_SYSROOT}/lib/pkgconfig" -ls -al ${COOKBOOK_SYSROOT}/lib/pkgconfig +export RUSTFLAGS="$RUSTFLAGS -L native=${COOKBOOK_SYSROOT}/lib" -# -j 1 to lock down "which crate fails", because cargo tree -i doesn't work for gaol -cargo build --target ${TARGET} --release +#TODO: mozjs-sys/build.rs fork links to hardcoded /home/andrzej/.redoxer instead of prefix toolchain, plus wrongly added -nostdinc/-nostdinc++, here's the workaround +PREFIX_INCLUDE=$(realpath "$COOKBOOK_ROOT/../prefix/$TARGET/sysroot/x86_64-unknown-redox/include") +export CLANGFLAGS="-I $PREFIX_INCLUDE -I $PREFIX_INCLUDE/c++/13.2.0 -I $PREFIX_INCLUDE/c++/13.2.0/$TARGET -I $PREFIX_INCLUDE/c++/13.2.0/backward" -mkdir -pv "${COOKBOOK_STAGE}/usr/servo" -cp -r -v "target/${TARGET}/release/servo" "${COOKBOOK_STAGE}/usr/servo" +PACKAGE_PATH="ports/servoshell" cookbook_cargo """ + +# [package] +# dependencies = [ +# "libxcursor", +# "libxkbcommon-x11", +# ] \ No newline at end of file diff --git a/recipes/wip/x11/libxkbcommon-x11/recipe.toml b/recipes/wip/x11/libxkbcommon-x11/recipe.toml new file mode 100644 index 00000000..4e33e5d2 --- /dev/null +++ b/recipes/wip/x11/libxkbcommon-x11/recipe.toml @@ -0,0 +1,24 @@ +# TODO: Conflict with libxkbcommon-x11 +[source] +tar = "https://xkbcommon.org/download/libxkbcommon-1.7.0.tar.xz" +b3sum = "5001ca0b8562feeef2010bf16c05657e3875fda3ed5fdedbf48b9135e5cdfcbc" +patches = [ "redox.patch" ] + +[build] +template = "custom" +dependencies = [ + "libxml2", + "xz", + "zlib", + "libpthread-stubs", + "libxau", + "x11proto", + "xcb-proto", + "libxcb", +] +script = """ +DYNAMIC_INIT +cookbook_meson \ + -Denable-wayland=false \ + -Denable-x11=true +""" diff --git a/recipes/wip/x11/libxkbcommon-x11/redox.patch b/recipes/wip/x11/libxkbcommon-x11/redox.patch new file mode 100644 index 00000000..f942f22f --- /dev/null +++ b/recipes/wip/x11/libxkbcommon-x11/redox.patch @@ -0,0 +1,33 @@ +diff -ruwN source/meson.build source-new/meson.build +--- source/meson.build 2024-03-24 04:23:43.000000000 +0700 ++++ source-new/meson.build 2025-09-30 17:40:34.433925985 +0700 +@@ -637,8 +637,6 @@ + libxkbcommon_x11_test_internal = static_library( + 'xkbcommon-x11-internal', + libxkbcommon_x11_sources, +- 'test/xvfb-wrapper.c', +- 'test/xvfb-wrapper.h', + include_directories: include_directories('src', 'include'), + link_with: libxkbcommon_test_internal, + dependencies: [ +@@ -768,20 +766,6 @@ + dependencies: test_dep), + env: test_env, + ) +-if get_option('enable-x11') +- test( +- 'x11', +- executable('test-x11', 'test/x11.c', dependencies: x11_test_dep), +- env: test_env, +- is_parallel : false, +- ) +- test( +- 'x11comp', +- executable('test-x11comp', 'test/x11comp.c', dependencies: x11_test_dep), +- env: test_env, +- is_parallel : false, +- ) +-endif + if get_option('enable-xkbregistry') + test( + 'registry', From f1f179564104769f080349d2876b43da650de43c Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 1 Oct 2025 06:01:08 +0700 Subject: [PATCH 2870/3180] Use patches for servo --- recipes/wip/web/servo/recipe.toml | 14 +- recipes/wip/web/servo/redox.patch | 2692 +++++++++++++++++++++++++++++ 2 files changed, 2703 insertions(+), 3 deletions(-) create mode 100644 recipes/wip/web/servo/redox.patch diff --git a/recipes/wip/web/servo/recipe.toml b/recipes/wip/web/servo/recipe.toml index 30dd921c..34b72b85 100644 --- a/recipes/wip/web/servo/recipe.toml +++ b/recipes/wip/web/servo/recipe.toml @@ -1,6 +1,9 @@ [source] git = "https://gitlab.redox-os.org/njskalski/servo.git" -branch = "redox_mods" +rev = "25fea1e086c46d611cf87db439430994e4f56cd5" +patches = [ + "redox.patch" +] script = """ cp ../.servobuild ./ """ @@ -9,11 +12,13 @@ cp ../.servobuild ./ template = "custom" dependencies = [ "freetype2", + "expat", "gettext", "glib", "gstreamer", "harfbuzz", "libffi", + "libpng", "libiconv", "libx11", "libxcursor", @@ -47,9 +52,12 @@ rsync -a -v ${COOKBOOK_SYSROOT}/usr/share/pkgconfig/*.pc ${COOKBOOK_SYSROOT}/lib export RUSTFLAGS="$RUSTFLAGS -L native=${COOKBOOK_SYSROOT}/lib" -#TODO: mozjs-sys/build.rs fork links to hardcoded /home/andrzej/.redoxer instead of prefix toolchain, plus wrongly added -nostdinc/-nostdinc++, here's the workaround +#TODO: mozjs-sys and mozangle uses clang, it won't know our prefix C libraries, so here's the workaround PREFIX_INCLUDE=$(realpath "$COOKBOOK_ROOT/../prefix/$TARGET/sysroot/x86_64-unknown-redox/include") -export CLANGFLAGS="-I $PREFIX_INCLUDE -I $PREFIX_INCLUDE/c++/13.2.0 -I $PREFIX_INCLUDE/c++/13.2.0/$TARGET -I $PREFIX_INCLUDE/c++/13.2.0/backward" +export CLANGFLAGS="-I $PREFIX_INCLUDE/c++/13.2.0 -I $PREFIX_INCLUDE/c++/13.2.0/$TARGET -I $PREFIX_INCLUDE/c++/13.2.0/backward -I $PREFIX_INCLUDE" + +#Mozjs specifics +export CARGO_MAKEFLAGS="-j $COOKBOOK_MAKE_JOBS" PACKAGE_PATH="ports/servoshell" cookbook_cargo """ diff --git a/recipes/wip/web/servo/redox.patch b/recipes/wip/web/servo/redox.patch new file mode 100644 index 00000000..d7ad7814 --- /dev/null +++ b/recipes/wip/web/servo/redox.patch @@ -0,0 +1,2692 @@ +diff --git a/Cargo.lock b/Cargo.lock +index f2081c3fd34..bb300865c60 100644 +--- a/Cargo.lock ++++ b/Cargo.lock +@@ -18,96 +18,6 @@ version = "0.1.10" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" + +-[[package]] +-name = "accesskit" +-version = "0.19.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e25ae84c0260bdf5df07796d7cc4882460de26a2b406ec0e6c42461a723b271b" +- +-[[package]] +-name = "accesskit_atspi_common" +-version = "0.12.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "29bd41de2e54451a8ca0dd95ebf45b54d349d29ebceb7f20be264eee14e3d477" +-dependencies = [ +- "accesskit", +- "accesskit_consumer", +- "atspi-common", +- "serde", +- "thiserror 1.0.69", +- "zvariant", +-] +- +-[[package]] +-name = "accesskit_consumer" +-version = "0.28.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8bfae7c152994a31dc7d99b8eeac7784a919f71d1b306f4b83217e110fd3824c" +-dependencies = [ +- "accesskit", +- "hashbrown", +-] +- +-[[package]] +-name = "accesskit_macos" +-version = "0.20.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "692dd318ff8a7a0ffda67271c4bd10cf32249656f4e49390db0b26ca92b095f2" +-dependencies = [ +- "accesskit", +- "accesskit_consumer", +- "hashbrown", +- "objc2 0.5.2", +- "objc2-app-kit 0.2.2", +- "objc2-foundation 0.2.2", +-] +- +-[[package]] +-name = "accesskit_unix" +-version = "0.15.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c5f7474c36606d0fe4f438291d667bae7042ea2760f506650ad2366926358fc8" +-dependencies = [ +- "accesskit", +- "accesskit_atspi_common", +- "async-channel", +- "async-executor", +- "async-task", +- "atspi", +- "futures-lite", +- "futures-util", +- "serde", +- "zbus", +-] +- +-[[package]] +-name = "accesskit_windows" +-version = "0.27.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "70a042b62c9c05bf7b616f015515c17d2813f3ba89978d6f4fc369735d60700a" +-dependencies = [ +- "accesskit", +- "accesskit_consumer", +- "hashbrown", +- "static_assertions", +- "windows 0.61.3", +- "windows-core 0.61.2", +-] +- +-[[package]] +-name = "accesskit_winit" +-version = "0.27.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5c1f0d3d13113d8857542a4f8d1a1c24d1dc1527b77aee8426127f4901588708" +-dependencies = [ +- "accesskit", +- "accesskit_macos", +- "accesskit_unix", +- "accesskit_windows", +- "raw-window-handle", +- "winit", +-] +- + [[package]] + name = "accountable-refcell" + version = "0.2.2" +@@ -183,7 +93,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" + dependencies = [ + "cfg-if", +- "getrandom 0.3.3", + "once_cell", + "version_check", + "zerocopy", +@@ -418,30 +327,6 @@ dependencies = [ + "libloading", + ] + +-[[package]] +-name = "async-broadcast" +-version = "0.7.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" +-dependencies = [ +- "event-listener", +- "event-listener-strategy", +- "futures-core", +- "pin-project-lite", +-] +- +-[[package]] +-name = "async-channel" +-version = "2.5.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" +-dependencies = [ +- "concurrent-queue", +- "event-listener-strategy", +- "futures-core", +- "pin-project-lite", +-] +- + [[package]] + name = "async-compression" + version = "0.4.27" +@@ -456,68 +341,6 @@ dependencies = [ + "tokio", + ] + +-[[package]] +-name = "async-executor" +-version = "1.13.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" +-dependencies = [ +- "async-task", +- "concurrent-queue", +- "fastrand", +- "futures-lite", +- "pin-project-lite", +- "slab", +-] +- +-[[package]] +-name = "async-io" +-version = "2.4.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "1237c0ae75a0f3765f58910ff9cdd0a12eeb39ab2f4c7de23262f337f0aacbb3" +-dependencies = [ +- "async-lock", +- "cfg-if", +- "concurrent-queue", +- "futures-io", +- "futures-lite", +- "parking", +- "polling", +- "rustix 1.0.8", +- "slab", +- "tracing", +- "windows-sys 0.59.0", +-] +- +-[[package]] +-name = "async-lock" +-version = "3.4.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" +-dependencies = [ +- "event-listener", +- "event-listener-strategy", +- "pin-project-lite", +-] +- +-[[package]] +-name = "async-process" +-version = "2.4.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "65daa13722ad51e6ab1a1b9c01299142bc75135b337923cfa10e79bbbd669f00" +-dependencies = [ +- "async-channel", +- "async-io", +- "async-lock", +- "async-signal", +- "async-task", +- "blocking", +- "cfg-if", +- "event-listener", +- "futures-lite", +- "rustix 1.0.8", +-] +- + [[package]] + name = "async-recursion" + version = "1.1.1" +@@ -529,41 +352,6 @@ dependencies = [ + "syn", + ] + +-[[package]] +-name = "async-signal" +-version = "0.2.11" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d7605a4e50d4b06df3898d5a70bf5fde51ed9059b0434b73105193bc27acce0d" +-dependencies = [ +- "async-io", +- "async-lock", +- "atomic-waker", +- "cfg-if", +- "futures-core", +- "futures-io", +- "rustix 1.0.8", +- "signal-hook-registry", +- "slab", +- "windows-sys 0.59.0", +-] +- +-[[package]] +-name = "async-task" +-version = "4.7.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" +- +-[[package]] +-name = "async-trait" +-version = "0.1.89" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +-dependencies = [ +- "proc-macro2", +- "quote", +- "syn", +-] +- + [[package]] + name = "async-tungstenite" + version = "0.29.1" +@@ -596,56 +384,6 @@ version = "0.1.13" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "41e67cd8309bbd06cd603a9e693a784ac2e5d1e955f11286e355089fcab3047c" + +-[[package]] +-name = "atspi" +-version = "0.25.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c83247582e7508838caf5f316c00791eee0e15c0bf743e6880585b867e16815c" +-dependencies = [ +- "atspi-common", +- "atspi-connection", +- "atspi-proxies", +-] +- +-[[package]] +-name = "atspi-common" +-version = "0.9.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "33dfc05e7cdf90988a197803bf24f5788f94f7c94a69efa95683e8ffe76cfdfb" +-dependencies = [ +- "enumflags2", +- "serde", +- "static_assertions", +- "zbus", +- "zbus-lockstep", +- "zbus-lockstep-macros", +- "zbus_names", +- "zvariant", +-] +- +-[[package]] +-name = "atspi-connection" +-version = "0.9.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4193d51303d8332304056ae0004714256b46b6635a5c556109b319c0d3784938" +-dependencies = [ +- "atspi-common", +- "atspi-proxies", +- "futures-lite", +- "zbus", +-] +- +-[[package]] +-name = "atspi-proxies" +-version = "0.9.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d2eebcb9e7e76f26d0bcfd6f0295e1cd1e6f33bedbc5698a971db8dc43d7751c" +-dependencies = [ +- "atspi-common", +- "serde", +- "zbus", +-] +- + [[package]] + name = "autocfg" + version = "1.5.0" +@@ -655,8 +393,7 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + [[package]] + name = "aws-lc-rs" + version = "1.13.3" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5c953fe1ba023e6b7730c0d4b031d06f267f23a46167dcbd40316644b10a17ba" ++source = "git+https://gitlab.redox-os.org/njskalski/aws-lc-rs.git?branch=redox_mods#0fa71de67b9b0e1574ff754ce05fa6b93934fc09" + dependencies = [ + "aws-lc-sys", + "zeroize", +@@ -665,10 +402,9 @@ dependencies = [ + [[package]] + name = "aws-lc-sys" + version = "0.30.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "dbfd150b5dbdb988bcc8fb1fe787eb6b7ee6180ca24da683b61ea5405f3d43ff" ++source = "git+https://gitlab.redox-os.org/njskalski/aws-lc-rs.git?branch=redox_mods#0fa71de67b9b0e1574ff754ce05fa6b93934fc09" + dependencies = [ +- "bindgen 0.69.5", ++ "bindgen 0.72.0", + "cc", + "cmake", + "dunce", +@@ -756,37 +492,34 @@ dependencies = [ + + [[package]] + name = "bindgen" +-version = "0.69.5" ++version = "0.71.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" ++checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" + dependencies = [ + "bitflags 2.9.1", + "cexpr", + "clang-sys", + "itertools 0.10.5", +- "lazy_static", +- "lazycell", +- "log", +- "prettyplease", + "proc-macro2", + "quote", + "regex", +- "rustc-hash 1.1.0", ++ "rustc-hash 2.1.1", + "shlex", + "syn", +- "which", + ] + + [[package]] + name = "bindgen" +-version = "0.71.1" ++version = "0.72.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" ++checksum = "4f72209734318d0b619a5e0f5129918b848c416e122a3c4ce054e03cb87b726f" + dependencies = [ + "bitflags 2.9.1", + "cexpr", + "clang-sys", + "itertools 0.10.5", ++ "log", ++ "prettyplease", + "proc-macro2", + "quote", + "regex", +@@ -864,19 +597,6 @@ dependencies = [ + "objc2 0.5.2", + ] + +-[[package]] +-name = "blocking" +-version = "1.6.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" +-dependencies = [ +- "async-channel", +- "async-task", +- "futures-io", +- "futures-lite", +- "piper", +-] +- + [[package]] + name = "bluetooth" + version = "0.0.1" +@@ -927,7 +647,7 @@ version = "0.1.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9c150fd617830fd121919bbd500a784507e8af1bae744efcf587591c65c375d4" + dependencies = [ +- "hex 0.3.2", ++ "hex", + ] + + [[package]] +@@ -937,7 +657,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f6dae8337ff67fe8ead29a28a0115605753e6a5205d4b6017e9f42f198c3c50a" + dependencies = [ + "dbus", +- "hex 0.3.2", ++ "hex", + ] + + [[package]] +@@ -1291,36 +1011,6 @@ dependencies = [ + "cc", + ] + +-[[package]] +-name = "cocoa" +-version = "0.25.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" +-dependencies = [ +- "bitflags 1.3.2", +- "block", +- "cocoa-foundation", +- "core-foundation 0.9.4", +- "core-graphics", +- "foreign-types 0.5.0", +- "libc", +- "objc", +-] +- +-[[package]] +-name = "cocoa-foundation" +-version = "0.1.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" +-dependencies = [ +- "bitflags 1.3.2", +- "block", +- "core-foundation 0.9.4", +- "core-graphics-types", +- "libc", +- "objc", +-] +- + [[package]] + name = "codespan-reporting" + version = "0.12.0" +@@ -1588,7 +1278,7 @@ dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "core-graphics-types", +- "foreign-types 0.5.0", ++ "foreign-types", + "libc", + ] + +@@ -1611,7 +1301,7 @@ checksum = "c9d2790b5c08465d49f8dc05c8bcae9fea467855947db39b0f8145c091aaced5" + dependencies = [ + "core-foundation 0.9.4", + "core-graphics", +- "foreign-types 0.5.0", ++ "foreign-types", + "libc", + ] + +@@ -2081,9 +1771,8 @@ checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + + [[package]] + name = "dpi" +-version = "0.1.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" ++version = "0.1.1" ++source = "git+https://gitlab.redox-os.org/njskalski/winit.git?branch=redox_mods2#9e2e0273792b9c1feaf4492b1ab43f8ed2715ad6" + + [[package]] + name = "dtoa" +@@ -2137,9 +1826,9 @@ dependencies = [ + + [[package]] + name = "ecolor" +-version = "0.32.1" ++version = "0.32.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b6a7fc3172c2ef56966b2ce4f84177e159804c40b9a84de8861558ce4a59f422" ++checksum = "ebb57dec02e4cca6d70d02e29865f7e52dbd471383f4c3444dda7ee78d467360" + dependencies = [ + "bytemuck", + "emath", +@@ -2147,11 +1836,10 @@ dependencies = [ + + [[package]] + name = "egui" +-version = "0.32.1" ++version = "0.32.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "49e2be082f77715496b4a39fdc6f5dc7491fefe2833111781b8697ea6ee919a7" ++checksum = "40df1115b8b0f3d4f1f9134a26287fd3d0e067fc18f879b8c9641aedf3eecef7" + dependencies = [ +- "accesskit", + "ahash", + "bitflags 2.9.1", + "emath", +@@ -2178,11 +1866,10 @@ dependencies = [ + + [[package]] + name = "egui-winit" +-version = "0.32.1" ++version = "0.32.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "fe6d8b0f8d6de4d43e794e343f03bacc3908aada931f0ed6fd7041871388a590" ++checksum = "1abd8326d2be6d0e945dcfe8acd2c07d64be4c977c5e1115f902dc9cd3ff7bf5" + dependencies = [ +- "accesskit_winit", + "ahash", + "arboard", + "bytemuck", +@@ -2197,21 +1884,19 @@ dependencies = [ + + [[package]] + name = "egui_glow" +-version = "0.32.1" ++version = "0.32.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "0ab645760288e42eab70283a5cccf44509a6f43b554351855d3c73594bfe3c23" ++checksum = "7baca67871a8b808e2eb0849282f56149673b6842702306860916bf2dd83fca1" + dependencies = [ + "ahash", + "bytemuck", + "egui", +- "egui-winit", + "glow", + "log", + "memoffset", + "profiling", + "wasm-bindgen", + "web-sys", +- "winit", + ] + + [[package]] +@@ -2222,9 +1907,9 @@ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + + [[package]] + name = "emath" +-version = "0.32.1" ++version = "0.32.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "935df67dc48fdeef132f2f7ada156ddc79e021344dd42c17f066b956bb88dde3" ++checksum = "b5c95b6d5571099bfa0ae9f4fdaef2c239bccb01d55339a082070259dc6f3b05" + dependencies = [ + "bytemuck", + ] +@@ -2285,33 +1970,6 @@ dependencies = [ + "cfg-if", + ] + +-[[package]] +-name = "endi" +-version = "1.1.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" +- +-[[package]] +-name = "enumflags2" +-version = "0.7.12" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" +-dependencies = [ +- "enumflags2_derive", +- "serde", +-] +- +-[[package]] +-name = "enumflags2_derive" +-version = "0.7.12" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" +-dependencies = [ +- "proc-macro2", +- "quote", +- "syn", +-] +- + [[package]] + name = "env_filter" + version = "0.1.3" +@@ -2347,9 +2005,9 @@ dependencies = [ + + [[package]] + name = "epaint" +-version = "0.32.1" ++version = "0.32.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b66fc0a5a9d322917de9bd3ac7d426ca8aa3127fbf1e76fae5b6b25e051e06a3" ++checksum = "695fd7b458f31fe515d6a308f46b2936cae9316dc40c960a7ee31ce3a97866b9" + dependencies = [ + "ab_glyph", + "ahash", +@@ -2365,9 +2023,9 @@ dependencies = [ + + [[package]] + name = "epaint_default_fonts" +-version = "0.32.1" ++version = "0.32.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4f6cf8ce0fb817000aa24f5e630bda904a353536bd430b83ebc1dceee95b4a3a" ++checksum = "bbc9f86ce3eaf9b7fc7179a578af21a6a5cd2d4fd21965564e82a2d009a7dab0" + + [[package]] + name = "equivalent" +@@ -2382,7 +2040,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" + dependencies = [ + "libc", +- "windows-sys 0.52.0", ++ "windows-sys 0.59.0", + ] + + [[package]] +@@ -2412,27 +2070,6 @@ dependencies = [ + "serde", + ] + +-[[package]] +-name = "event-listener" +-version = "5.4.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +-dependencies = [ +- "concurrent-queue", +- "parking", +- "pin-project-lite", +-] +- +-[[package]] +-name = "event-listener-strategy" +-version = "0.5.4" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +-dependencies = [ +- "event-listener", +- "pin-project-lite", +-] +- + [[package]] + name = "exr" + version = "1.73.0" +@@ -2687,15 +2324,6 @@ dependencies = [ + "cc", + ] + +-[[package]] +-name = "foreign-types" +-version = "0.3.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +-dependencies = [ +- "foreign-types-shared 0.1.1", +-] +- + [[package]] + name = "foreign-types" + version = "0.5.0" +@@ -2703,7 +2331,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" + dependencies = [ + "foreign-types-macros", +- "foreign-types-shared 0.3.1", ++ "foreign-types-shared", + ] + + [[package]] +@@ -2717,12 +2345,6 @@ dependencies = [ + "syn", + ] + +-[[package]] +-name = "foreign-types-shared" +-version = "0.1.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +- + [[package]] + name = "foreign-types-shared" + version = "0.3.1" +@@ -2846,19 +2468,6 @@ version = "0.3.31" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +-[[package]] +-name = "futures-lite" +-version = "2.6.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" +-dependencies = [ +- "fastrand", +- "futures-core", +- "futures-io", +- "parking", +- "pin-project-lite", +-] +- + [[package]] + name = "futures-macro" + version = "0.3.31" +@@ -2932,12 +2541,12 @@ dependencies = [ + + [[package]] + name = "gethostname" +-version = "0.4.3" ++version = "1.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" ++checksum = "fc257fdb4038301ce4b9cd1b3b51704509692bb3ff716a410cbd07925d9dae55" + dependencies = [ +- "libc", +- "windows-targets 0.48.5", ++ "rustix 1.0.8", ++ "windows-targets 0.52.6", + ] + + [[package]] +@@ -3042,7 +2651,7 @@ dependencies = [ + "gobject-sys", + "libc", + "system-deps", +- "windows-sys 0.52.0", ++ "windows-sys 0.59.0", + ] + + [[package]] +@@ -3127,15 +2736,6 @@ dependencies = [ + "web-sys", + ] + +-[[package]] +-name = "glslopt" +-version = "0.1.11" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "913662ae8335df058d56e00f11340b20fa82e03e0276587797ef325ab01e50d4" +-dependencies = [ +- "cc", +-] +- + [[package]] + name = "glutin_wgl_sys" + version = "0.6.1" +@@ -3590,7 +3190,7 @@ dependencies = [ + "cc", + "core-graphics", + "core-text", +- "foreign-types 0.5.0", ++ "foreign-types", + "freetype-sys", + "pkg-config", + "winapi", +@@ -3687,12 +3287,6 @@ version = "0.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77" + +-[[package]] +-name = "hex" +-version = "0.4.3" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +- + [[package]] + name = "hexf-parse" + version = "0.2.1" +@@ -3735,15 +3329,6 @@ version = "0.1.6" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "164f0e3568306af8b47c191406743476d9383e49d717960288cdb3469f9b7f54" + +-[[package]] +-name = "home" +-version = "0.5.11" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +-dependencies = [ +- "windows-sys 0.59.0", +-] +- + [[package]] + name = "html5ever" + version = "0.35.0" +@@ -4486,18 +4071,6 @@ dependencies = [ + "mach2", + ] + +-[[package]] +-name = "io-surface" +-version = "0.15.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "861c6093cbc05599e66436aedf380bb0a23cec2180738393d3a340b80dd135ef" +-dependencies = [ +- "cgl", +- "core-foundation 0.9.4", +- "leaky-cow", +- "libc", +-] +- + [[package]] + name = "io-uring" + version = "0.7.9" +@@ -4512,8 +4085,7 @@ dependencies = [ + [[package]] + name = "ipc-channel" + version = "0.20.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "1700f6b8b9f00cdd675f32fbb3a5be882213140dfe045805273221ca266c43f8" ++source = "git+https://gitlab.redox-os.org/njskalski/ipc-channel.git?branch=redox_mods#bfcd8a88eb56706dbc61c24a53aa5b30640b3f95" + dependencies = [ + "bincode", + "crossbeam-channel", +@@ -4524,7 +4096,7 @@ dependencies = [ + "serde", + "tempfile", + "uuid", +- "windows 0.58.0", ++ "windows 0.61.3", + ] + + [[package]] +@@ -4535,7 +4107,7 @@ checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" + dependencies = [ + "hermit-abi", + "libc", +- "windows-sys 0.52.0", ++ "windows-sys 0.59.0", + ] + + [[package]] +@@ -4790,27 +4362,6 @@ version = "1.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +-[[package]] +-name = "lazycell" +-version = "1.3.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" +- +-[[package]] +-name = "leak" +-version = "0.1.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "bd100e01f1154f2908dfa7d02219aeab25d0b9c7fa955164192e3245255a0c73" +- +-[[package]] +-name = "leaky-cow" +-version = "0.1.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "40a8225d44241fd324a8af2806ba635fc7c8a7e9a7de4d5cf3ef54e71f5926fc" +-dependencies = [ +- "leak", +-] +- + [[package]] + name = "lebe" + version = "0.5.2" +@@ -5130,20 +4681,6 @@ dependencies = [ + "autocfg", + ] + +-[[package]] +-name = "metal" +-version = "0.24.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "de11355d1f6781482d027a3b4d4de7825dcedb197bf573e0596d00008402d060" +-dependencies = [ +- "bitflags 1.3.2", +- "block", +- "core-graphics-types", +- "foreign-types 0.3.2", +- "log", +- "objc", +-] +- + [[package]] + name = "metal" + version = "0.31.0" +@@ -5153,7 +4690,7 @@ dependencies = [ + "bitflags 2.9.1", + "block", + "core-graphics-types", +- "foreign-types 0.5.0", ++ "foreign-types", + "log", + "objc", + "paste", +@@ -5220,8 +4757,7 @@ dependencies = [ + [[package]] + name = "mozangle" + version = "0.5.3" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "0ab823731ea6297e7280dade983df955d1a8209d2deb44f505932b8873168992" ++source = "git+https://gitlab.redox-os.org/njskalski/mozangle.git?branch=redox_mods#fc58d9c521c3b9ed72ea56908daae91b119db1ad" + dependencies = [ + "bindgen 0.71.1", + "cc", +@@ -5233,7 +4769,7 @@ dependencies = [ + [[package]] + name = "mozjs" + version = "0.14.1" +-source = "git+https://github.com/servo/mozjs#e0a4ee47e686f581faefb201a6fd73bd4dcd67f0" ++source = "git+https://gitlab.redox-os.org/njskalski/mozjs.git?rev=b9c2983764fb0f8f35210d3e1da9526a9980ce78#b9c2983764fb0f8f35210d3e1da9526a9980ce78" + dependencies = [ + "bindgen 0.71.1", + "cc", +@@ -5245,8 +4781,8 @@ dependencies = [ + + [[package]] + name = "mozjs_sys" +-version = "0.137.0-2" +-source = "git+https://github.com/servo/mozjs#e0a4ee47e686f581faefb201a6fd73bd4dcd67f0" ++version = "0.137.0-3" ++source = "git+https://gitlab.redox-os.org/njskalski/mozjs.git?rev=b9c2983764fb0f8f35210d3e1da9526a9980ce78#b9c2983764fb0f8f35210d3e1da9526a9980ce78" + dependencies = [ + "bindgen 0.71.1", + "cc", +@@ -5519,7 +5055,6 @@ dependencies = [ + "cfg-if", + "cfg_aliases", + "libc", +- "memoffset", + ] + + [[package]] +@@ -5672,7 +5207,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" + dependencies = [ + "malloc_buf", +- "objc_exception", + ] + + [[package]] +@@ -5724,7 +5258,7 @@ dependencies = [ + "objc2-core-data", + "objc2-core-image", + "objc2-foundation 0.2.2", +- "objc2-quartz-core", ++ "objc2-quartz-core 0.2.2", + ] + + [[package]] +@@ -5735,7 +5269,9 @@ checksum = "e6f29f568bec459b0ddff777cec4fe3fd8666d82d5a40ebd0ff7e66134f89bcc" + dependencies = [ + "bitflags 2.9.1", + "objc2 0.6.1", ++ "objc2-core-foundation", + "objc2-foundation 0.3.1", ++ "objc2-quartz-core 0.3.1", + ] + + [[package]] +@@ -5785,6 +5321,16 @@ dependencies = [ + "objc2 0.6.1", + ] + ++[[package]] ++name = "objc2-core-graphics" ++version = "0.3.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "989c6c68c13021b5c2d6b71456ebb0f9dc78d752e86a98da7c716f4f9470f5a4" ++dependencies = [ ++ "bitflags 2.9.1", ++ "objc2-core-foundation", ++] ++ + [[package]] + name = "objc2-core-image" + version = "0.2.2" +@@ -5794,7 +5340,7 @@ dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +- "objc2-metal", ++ "objc2-metal 0.2.2", + ] + + [[package]] +@@ -5809,6 +5355,17 @@ dependencies = [ + "objc2-foundation 0.2.2", + ] + ++[[package]] ++name = "objc2-core-video" ++version = "0.3.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "1989c3e76c7e978cab0ba9e6f4961cd00ed14ca21121444cc26877403bfb6303" ++dependencies = [ ++ "bitflags 2.9.1", ++ "objc2-core-foundation", ++ "objc2-core-graphics", ++] ++ + [[package]] + name = "objc2-encode" + version = "4.1.0" +@@ -5849,6 +5406,18 @@ dependencies = [ + "objc2-core-foundation", + ] + ++[[package]] ++name = "objc2-io-surface" ++version = "0.3.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "7282e9ac92529fa3457ce90ebb15f4ecbc383e8338060960760fa2cf75420c3c" ++dependencies = [ ++ "bitflags 2.9.1", ++ "libc", ++ "objc2 0.6.1", ++ "objc2-core-foundation", ++] ++ + [[package]] + name = "objc2-link-presentation" + version = "0.2.2" +@@ -5873,6 +5442,17 @@ dependencies = [ + "objc2-foundation 0.2.2", + ] + ++[[package]] ++name = "objc2-metal" ++version = "0.3.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "7f246c183239540aab1782457b35ab2040d4259175bd1d0c58e46ada7b47a874" ++dependencies = [ ++ "bitflags 2.9.1", ++ "objc2 0.6.1", ++ "objc2-foundation 0.3.1", ++] ++ + [[package]] + name = "objc2-quartz-core" + version = "0.2.2" +@@ -5883,7 +5463,19 @@ dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +- "objc2-metal", ++ "objc2-metal 0.2.2", ++] ++ ++[[package]] ++name = "objc2-quartz-core" ++version = "0.3.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "90ffb6a0cd5f182dc964334388560b12a57f7b74b3e2dec5e2722aa2dfb2ccd5" ++dependencies = [ ++ "bitflags 2.9.1", ++ "objc2 0.6.1", ++ "objc2-core-foundation", ++ "objc2-foundation 0.3.1", + ] + + [[package]] +@@ -5911,7 +5503,7 @@ dependencies = [ + "objc2-core-location", + "objc2-foundation 0.2.2", + "objc2-link-presentation", +- "objc2-quartz-core", ++ "objc2-quartz-core 0.2.2", + "objc2-symbols", + "objc2-uniform-type-identifiers", + "objc2-user-notifications", +@@ -5941,15 +5533,6 @@ dependencies = [ + "objc2-foundation 0.2.2", + ] + +-[[package]] +-name = "objc_exception" +-version = "0.1.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" +-dependencies = [ +- "cc", +-] +- + [[package]] + name = "objc_id" + version = "0.1.1" +@@ -6107,15 +5690,6 @@ dependencies = [ + "paste", + ] + +-[[package]] +-name = "orbclient" +-version = "0.3.48" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ba0b26cec2e24f08ed8bb31519a9333140a6599b867dac464bb150bdb796fd43" +-dependencies = [ +- "libredox", +-] +- + [[package]] + name = "ordered-float" + version = "4.6.0" +@@ -6125,16 +5699,6 @@ dependencies = [ + "num-traits", + ] + +-[[package]] +-name = "ordered-stream" +-version = "0.2.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +-dependencies = [ +- "futures-core", +- "pin-project-lite", +-] +- + [[package]] + name = "ordermap" + version = "0.3.5" +@@ -6156,12 +5720,6 @@ dependencies = [ + "ttf-parser", + ] + +-[[package]] +-name = "parking" +-version = "2.2.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" +- + [[package]] + name = "parking_lot" + version = "0.12.4" +@@ -6213,7 +5771,7 @@ dependencies = [ + [[package]] + name = "peek-poke" + version = "0.3.0" +-source = "git+https://github.com/servo/webrender?branch=0.67#15318d6627e91ec19fc0a44a7434b08673413140" ++source = "git+https://gitlab.redox-os.org/njskalski/webrender.git?branch=redox_mods#a649cc9985e700dc9fd3430e38b835cc038af71b" + dependencies = [ + "euclid", + "peek-poke-derive", +@@ -6222,7 +5780,7 @@ dependencies = [ + [[package]] + name = "peek-poke-derive" + version = "0.3.0" +-source = "git+https://github.com/servo/webrender?branch=0.67#15318d6627e91ec19fc0a44a7434b08673413140" ++source = "git+https://gitlab.redox-os.org/njskalski/webrender.git?branch=redox_mods#a649cc9985e700dc9fd3430e38b835cc038af71b" + dependencies = [ + "proc-macro2", + "quote", +@@ -6348,17 +5906,6 @@ version = "0.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +-[[package]] +-name = "piper" +-version = "0.2.4" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +-dependencies = [ +- "atomic-waker", +- "fastrand", +- "futures-io", +-] +- + [[package]] + name = "pixels" + version = "0.0.1" +@@ -6626,16 +6173,6 @@ version = "2.0.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + +-[[package]] +-name = "quick-xml" +-version = "0.36.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f7649a7b4df05aed9ea7ec6f628c67c9953a43869b8bc50929569b2999d443fe" +-dependencies = [ +- "memchr", +- "serde", +-] +- + [[package]] + name = "quick-xml" + version = "0.37.5" +@@ -7004,7 +6541,7 @@ dependencies = [ + "errno", + "libc", + "linux-raw-sys 0.4.15", +- "windows-sys 0.52.0", ++ "windows-sys 0.59.0", + ] + + [[package]] +@@ -7017,7 +6554,7 @@ dependencies = [ + "errno", + "libc", + "linux-raw-sys 0.9.4", +- "windows-sys 0.52.0", ++ "windows-sys 0.59.0", + ] + + [[package]] +@@ -7314,19 +6851,6 @@ dependencies = [ + "webxr-api", + ] + +-[[package]] +-name = "sctk-adwaita" +-version = "0.10.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" +-dependencies = [ +- "ab_glyph", +- "log", +- "memmap2", +- "smithay-client-toolkit", +- "tiny-skia", +-] +- + [[package]] + name = "sea-query" + version = "0.32.7" +@@ -7418,17 +6942,6 @@ dependencies = [ + "serde", + ] + +-[[package]] +-name = "serde_repr" +-version = "0.1.20" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +-dependencies = [ +- "proc-macro2", +- "quote", +- "syn", +-] +- + [[package]] + name = "serde_spanned" + version = "0.6.9" +@@ -7459,19 +6972,6 @@ dependencies = [ + "serde", + ] + +-[[package]] +-name = "servo-display-link" +-version = "0.2.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d1060be2a0bbc35e712ec35ae98119b8def1071a5f2edbe392fd4c899bc2a5f4" +-dependencies = [ +- "foreign-types 0.3.2", +- "objc", +- "objc-foundation", +- "thiserror 1.0.69", +- "time-point", +-] +- + [[package]] + name = "servo-media" + version = "0.1.0" +@@ -7766,7 +7266,6 @@ dependencies = [ + name = "servoshell" + version = "0.0.1" + dependencies = [ +- "accesskit_winit", + "android_logger", + "backtrace", + "cc", +@@ -7873,15 +7372,6 @@ dependencies = [ + "libc", + ] + +-[[package]] +-name = "signal-hook-registry" +-version = "1.4.6" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" +-dependencies = [ +- "libc", +-] +- + [[package]] + name = "signpost" + version = "0.1.0" +@@ -8263,31 +7753,32 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + + [[package]] + name = "surfman" +-version = "0.9.8" +-source = "git+https://github.com/servo/surfman?rev=f7688b4585f9e0b5d4bf8ee8e4a91e82349610b1#f7688b4585f9e0b5d4bf8ee8e4a91e82349610b1" ++version = "0.10.0" ++source = "git+https://gitlab.redox-os.org/njskalski/surfman.git?branch=redox_mods#4236949c96b4453adbe36a21a316449e413a6a21" + dependencies = [ + "bitflags 2.9.1", + "cfg_aliases", + "cgl", +- "cocoa", +- "core-foundation 0.9.4", +- "core-graphics", + "euclid", + "fnv", + "gl_generator", + "glow", +- "io-surface", + "libc", + "log", + "mach2", +- "metal 0.24.0", +- "objc", ++ "objc2 0.6.1", ++ "objc2-app-kit 0.3.1", ++ "objc2-core-foundation", ++ "objc2-core-video", ++ "objc2-foundation 0.3.1", ++ "objc2-io-surface", ++ "objc2-metal 0.3.1", ++ "objc2-quartz-core 0.3.1", + "raw-window-handle", +- "servo-display-link", +- "wayland-sys 0.30.1", ++ "wayland-sys", + "winapi", + "wio", +- "x11", ++ "x11-dl", + ] + + [[package]] +@@ -8411,7 +7902,7 @@ dependencies = [ + "getrandom 0.3.3", + "once_cell", + "rustix 1.0.8", +- "windows-sys 0.52.0", ++ "windows-sys 0.59.0", + ] + + [[package]] +@@ -8514,8 +8005,7 @@ dependencies = [ + [[package]] + name = "tikv-jemalloc-sys" + version = "0.6.0+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "cd3c60906412afa9c2b5b5a48ca6a5abe5736aec9eb48ad05037a677e52e4e2d" ++source = "git+https://gitlab.redox-os.org/njskalski/jemallocator.git?branch=redox_mods#8728022a37329295f6754323579765ccd7c73c4d" + dependencies = [ + "cc", + "libc", +@@ -8524,8 +8014,7 @@ dependencies = [ + [[package]] + name = "tikv-jemallocator" + version = "0.6.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4cec5ff18518d81584f477e9bfdf957f5bb0979b0bac3af4ca30b5b3ae2d2865" ++source = "git+https://gitlab.redox-os.org/njskalski/jemallocator.git?branch=redox_mods#8728022a37329295f6754323579765ccd7c73c4d" + dependencies = [ + "libc", + "tikv-jemalloc-sys", +@@ -8564,12 +8053,6 @@ dependencies = [ + "time-core", + ] + +-[[package]] +-name = "time-point" +-version = "0.1.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "06535c958d6abe68dc4b4ef9e6845f758fc42fe463d0093d0aca40254f03fb14" +- + [[package]] + name = "timers" + version = "0.0.1" +@@ -8928,17 +8411,6 @@ version = "1.18.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +-[[package]] +-name = "uds_windows" +-version = "1.1.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +-dependencies = [ +- "memoffset", +- "tempfile", +- "winapi", +-] +- + [[package]] + name = "uluru" + version = "3.1.0" +@@ -9396,7 +8868,7 @@ dependencies = [ + "rustix 1.0.8", + "scoped-tls", + "smallvec", +- "wayland-sys 0.31.7", ++ "wayland-sys", + ] + + [[package]] +@@ -9445,19 +8917,6 @@ dependencies = [ + "wayland-scanner", + ] + +-[[package]] +-name = "wayland-protocols-plasma" +-version = "0.3.9" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a07a14257c077ab3279987c4f8bb987851bf57081b93710381daea94f2c2c032" +-dependencies = [ +- "bitflags 2.9.1", +- "wayland-backend", +- "wayland-client", +- "wayland-protocols", +- "wayland-scanner", +-] +- + [[package]] + name = "wayland-protocols-wlr" + version = "0.3.9" +@@ -9478,22 +8937,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "54cb1e9dc49da91950bdfd8b848c49330536d9d1fb03d4bfec8cae50caa50ae3" + dependencies = [ + "proc-macro2", +- "quick-xml 0.37.5", ++ "quick-xml", + "quote", + ] + +-[[package]] +-name = "wayland-sys" +-version = "0.30.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "96b2a02ac608e07132978689a6f9bf4214949c85998c247abadd4f4129b1aa06" +-dependencies = [ +- "dlib", +- "lazy_static", +- "log", +- "pkg-config", +-] +- + [[package]] + name = "wayland-sys" + version = "0.31.7" +@@ -9667,7 +9114,7 @@ dependencies = [ + [[package]] + name = "webrender" + version = "0.66.0" +-source = "git+https://github.com/servo/webrender?branch=0.67#15318d6627e91ec19fc0a44a7434b08673413140" ++source = "git+https://gitlab.redox-os.org/njskalski/webrender.git?branch=redox_mods#a649cc9985e700dc9fd3430e38b835cc038af71b" + dependencies = [ + "allocator-api2", + "bincode", +@@ -9679,7 +9126,6 @@ dependencies = [ + "euclid", + "fxhash", + "gleam", +- "glslopt", + "lazy_static", + "log", + "malloc_size_of_derive", +@@ -9702,7 +9148,7 @@ dependencies = [ + [[package]] + name = "webrender_api" + version = "0.66.0" +-source = "git+https://github.com/servo/webrender?branch=0.67#15318d6627e91ec19fc0a44a7434b08673413140" ++source = "git+https://gitlab.redox-os.org/njskalski/webrender.git?branch=redox_mods#a649cc9985e700dc9fd3430e38b835cc038af71b" + dependencies = [ + "app_units", + "bitflags 2.9.1", +@@ -9723,7 +9169,7 @@ dependencies = [ + [[package]] + name = "webrender_build" + version = "0.0.2" +-source = "git+https://github.com/servo/webrender?branch=0.67#15318d6627e91ec19fc0a44a7434b08673413140" ++source = "git+https://gitlab.redox-os.org/njskalski/webrender.git?branch=redox_mods#a649cc9985e700dc9fd3430e38b835cc038af71b" + dependencies = [ + "bitflags 2.9.1", + "lazy_static", +@@ -9877,7 +9323,7 @@ dependencies = [ + "libc", + "libloading", + "log", +- "metal 0.31.0", ++ "metal", + "naga", + "ndk-sys 0.5.0+25.2.9519653", + "objc", +@@ -9912,18 +9358,6 @@ dependencies = [ + "web-sys", + ] + +-[[package]] +-name = "which" +-version = "4.4.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +-dependencies = [ +- "either", +- "home", +- "once_cell", +- "rustix 0.38.44", +-] +- + [[package]] + name = "winapi" + version = "0.3.9" +@@ -10347,10 +9781,8 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + [[package]] + name = "winit" + version = "0.30.12" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c66d4b9ed69c4009f6321f762d6e61ad8a2389cd431b97cb1e146812e9e6c732" ++source = "git+https://gitlab.redox-os.org/njskalski/winit.git?branch=redox_mods2#9e2e0273792b9c1feaf4492b1ab43f8ed2715ad6" + dependencies = [ +- "ahash", + "android-activity", + "atomic-waker", + "bitflags 2.9.1", +@@ -10365,29 +9797,21 @@ dependencies = [ + "dpi", + "js-sys", + "libc", +- "memmap2", + "ndk", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", + "objc2-ui-kit", +- "orbclient", + "percent-encoding", + "pin-project", + "raw-window-handle", + "redox_syscall 0.4.1", + "rustix 0.38.44", +- "sctk-adwaita", +- "smithay-client-toolkit", + "smol_str", + "tracing", + "unicode-segmentation", + "wasm-bindgen", + "wasm-bindgen-futures", +- "wayland-backend", +- "wayland-client", +- "wayland-protocols", +- "wayland-protocols-plasma", + "web-sys", + "web-time", + "windows-sys 0.52.0", +@@ -10435,7 +9859,7 @@ dependencies = [ + [[package]] + name = "wr_glyph_rasterizer" + version = "0.1.0" +-source = "git+https://github.com/servo/webrender?branch=0.67#15318d6627e91ec19fc0a44a7434b08673413140" ++source = "git+https://gitlab.redox-os.org/njskalski/webrender.git?branch=redox_mods#a649cc9985e700dc9fd3430e38b835cc038af71b" + dependencies = [ + "core-foundation 0.9.4", + "core-graphics", +@@ -10460,7 +9884,7 @@ dependencies = [ + [[package]] + name = "wr_malloc_size_of" + version = "0.2.0" +-source = "git+https://github.com/servo/webrender?branch=0.67#15318d6627e91ec19fc0a44a7434b08673413140" ++source = "git+https://gitlab.redox-os.org/njskalski/webrender.git?branch=redox_mods#a649cc9985e700dc9fd3430e38b835cc038af71b" + dependencies = [ + "app_units", + "euclid", +@@ -10481,16 +9905,6 @@ dependencies = [ + "either", + ] + +-[[package]] +-name = "x11" +-version = "2.21.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" +-dependencies = [ +- "libc", +- "pkg-config", +-] +- + [[package]] + name = "x11-dl" + version = "2.21.0" +@@ -10505,23 +9919,21 @@ dependencies = [ + [[package]] + name = "x11rb" + version = "0.13.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" ++source = "git+https://gitlab.redox-os.org/njskalski/x11rb.git?branch=redox_mods#3195258c70608340a191c0356bd42b443cf866d8" + dependencies = [ + "as-raw-xcb-connection", + "gethostname", + "libc", + "libloading", + "once_cell", +- "rustix 0.38.44", ++ "rustix 1.0.8", + "x11rb-protocol", + ] + + [[package]] + name = "x11rb-protocol" + version = "0.13.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" ++source = "git+https://gitlab.redox-os.org/njskalski/x11rb.git?branch=redox_mods#3195258c70608340a191c0356bd42b443cf866d8" + + [[package]] + name = "xattr" +@@ -10632,103 +10044,6 @@ dependencies = [ + "synstructure", + ] + +-[[package]] +-name = "zbus" +-version = "5.9.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4bb4f9a464286d42851d18a605f7193b8febaf5b0919d71c6399b7b26e5b0aad" +-dependencies = [ +- "async-broadcast", +- "async-executor", +- "async-io", +- "async-lock", +- "async-process", +- "async-recursion", +- "async-task", +- "async-trait", +- "blocking", +- "enumflags2", +- "event-listener", +- "futures-core", +- "futures-lite", +- "hex 0.4.3", +- "nix 0.30.1", +- "ordered-stream", +- "serde", +- "serde_repr", +- "tracing", +- "uds_windows", +- "windows-sys 0.59.0", +- "winnow", +- "zbus_macros", +- "zbus_names", +- "zvariant", +-] +- +-[[package]] +-name = "zbus-lockstep" +-version = "0.5.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "29e96e38ded30eeab90b6ba88cb888d70aef4e7489b6cd212c5e5b5ec38045b6" +-dependencies = [ +- "zbus_xml", +- "zvariant", +-] +- +-[[package]] +-name = "zbus-lockstep-macros" +-version = "0.5.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "dc6821851fa840b708b4cbbaf6241868cabc85a2dc22f426361b0292bfc0b836" +-dependencies = [ +- "proc-macro2", +- "quote", +- "syn", +- "zbus-lockstep", +- "zbus_xml", +- "zvariant", +-] +- +-[[package]] +-name = "zbus_macros" +-version = "5.9.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ef9859f68ee0c4ee2e8cde84737c78e3f4c54f946f2a38645d0d4c7a95327659" +-dependencies = [ +- "proc-macro-crate", +- "proc-macro2", +- "quote", +- "syn", +- "zbus_names", +- "zvariant", +- "zvariant_utils", +-] +- +-[[package]] +-name = "zbus_names" +-version = "4.2.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" +-dependencies = [ +- "serde", +- "static_assertions", +- "winnow", +- "zvariant", +-] +- +-[[package]] +-name = "zbus_xml" +-version = "5.0.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "589e9a02bfafb9754bb2340a9e3b38f389772684c63d9637e76b1870377bec29" +-dependencies = [ +- "quick-xml 0.36.2", +- "serde", +- "static_assertions", +- "zbus_names", +- "zvariant", +-] +- + [[package]] + name = "zerocopy" + version = "0.8.26" +@@ -10832,44 +10147,3 @@ checksum = "fc1f7e205ce79eb2da3cd71c5f55f3589785cb7c79f6a03d1c8d1491bda5d089" + dependencies = [ + "zune-core", + ] +- +-[[package]] +-name = "zvariant" +-version = "5.6.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d91b3680bb339216abd84714172b5138a4edac677e641ef17e1d8cb1b3ca6e6f" +-dependencies = [ +- "endi", +- "enumflags2", +- "serde", +- "winnow", +- "zvariant_derive", +- "zvariant_utils", +-] +- +-[[package]] +-name = "zvariant_derive" +-version = "5.6.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3a8c68501be459a8dbfffbe5d792acdd23b4959940fc87785fb013b32edbc208" +-dependencies = [ +- "proc-macro-crate", +- "proc-macro2", +- "quote", +- "syn", +- "zvariant_utils", +-] +- +-[[package]] +-name = "zvariant_utils" +-version = "3.2.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e16edfee43e5d7b553b77872d99bc36afdda75c223ca7ad5e3fbecd82ca5fc34" +-dependencies = [ +- "proc-macro2", +- "quote", +- "serde", +- "static_assertions", +- "syn", +- "winnow", +-] +diff --git a/Cargo.toml b/Cargo.toml +index 2dcb622934f..014eb5c0085 100644 +--- a/Cargo.toml ++++ b/Cargo.toml +@@ -55,14 +55,14 @@ ctr = "0.9.2" + darling = { version = "0.20", default-features = false } + data-url = "0.3" + devtools_traits = { path = "components/shared/devtools" } +-dpi = "0.1" ++dpi = "0.1.1" + embedder_traits = { path = "components/shared/embedder" } + encoding_rs = "0.8" + env_logger = "0.11" + euclid = "0.22" + fnv = "1.0" + fonts_traits = { path = "components/shared/fonts" } +-freetype-sys = "0.20" ++freetype-sys = { version ="0.20.1", default-features = false} + fxhash = "0.2" + getopts = "0.2.11" + gleam = "0.15" +@@ -91,7 +91,7 @@ imsz = "0.2" + indexmap = { version = "2.10.0", features = ["std"] } + ipc-channel = "0.20" + itertools = "0.14" +-js = { package = "mozjs", git = "https://github.com/servo/mozjs" } ++js = { package = "mozjs", git = "https://gitlab.redox-os.org/willnode/mozjs.git", branch = "redox_mods" } + keyboard-types = { version = "0.8.1", features = ["serde", "webdriver"] } + kurbo = { version = "0.11.3", features = ["euclid"] } + layout_api = { path = "components/shared/layout" } +@@ -151,7 +151,7 @@ stylo_config = { git = "https://github.com/servo/stylo", branch = "2025-08-01" } + stylo_dom = { git = "https://github.com/servo/stylo", branch = "2025-08-01" } + stylo_malloc_size_of = { git = "https://github.com/servo/stylo", branch = "2025-08-01" } + stylo_traits = { git = "https://github.com/servo/stylo", branch = "2025-08-01" } +-surfman = { git = "https://github.com/servo/surfman", rev = "f7688b4585f9e0b5d4bf8ee8e4a91e82349610b1", features = ["chains"] } ++surfman = { git = "https://gitlab.redox-os.org/njskalski/surfman.git", branch = "redox_mods", features = ["sm-x11"] } + syn = { version = "2", default-features = false, features = ["clone-impls", "derive", "parsing"] } + synstructure = "0.13" + taffy = { version = "0.9", default-features = false, features = ["calc", "detailed_layout_info", "grid", "std"] } +@@ -178,14 +178,14 @@ vello_cpu = { git = "https://github.com/linebender/vello", rev = "b0e2e598ac62c7 + webdriver = "0.53.0" + webgpu_traits = { path = "components/shared/webgpu" } + webpki-roots = "1.0" +-webrender = { git = "https://github.com/servo/webrender", branch = "0.67", features = ["capture"] } +-webrender_api = { git = "https://github.com/servo/webrender", branch = "0.67" } ++webrender = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } ++webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } + webxr-api = { path = "components/shared/webxr" } + wgpu-core = "25" + wgpu-types = "25" + winapi = "0.3" + windows-sys = "0.59" +-winit = "0.30.12" ++winit = { git = "https://gitlab.redox-os.org/njskalski/winit.git", branch = "redox_mods2"} + wio = "0.2" + wr_malloc_size_of = { git = "https://github.com/servo/webrender", branch = "0.67" } + xi-unicode = "0.3.0" +@@ -222,6 +222,21 @@ lto = "thin" + codegen-units = 1 + + [patch.crates-io] ++ipc-channel = { git = "https://gitlab.redox-os.org/njskalski/ipc-channel.git", branch="redox_mods" } ++servo_malloc_size_of = { path = "./components/malloc_size_of" } ++wr_malloc_size_of = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods"} ++tikv-jemalloc-sys = { version = "0.6.0", git = "https://gitlab.redox-os.org/njskalski/jemallocator.git", branch = "redox_mods" } ++tikv-jemallocator = { version = "0.6.0", git = "https://gitlab.redox-os.org/njskalski/jemallocator.git", branch = "redox_mods" } ++mozangle = { git = "https://gitlab.redox-os.org/willnode/mozangle.git", branch = "redox_mods"} ++# gaol = { git = "https://gitlab.redox-os.org/njskalski/gaol.git", branch = "redox_mods" } ++aws-lc-rs = { git = "https://gitlab.redox-os.org/njskalski/aws-lc-rs.git", branch = "redox_mods" } ++# mozjs_sys = { git = "https://gitlab.redox-os.org/njskalski/mozjs.git", rev = "e2ee9c77148c3af4f11fdff9a2cbd7e449d48d33"} ++# mozjs = { git = "https://gitlab.redox-os.org/njskalski/mozjs.git", branch = "redox_mods"} ++x11rb = { git = "https://gitlab.redox-os.org/njskalski/x11rb.git", branch = "redox_mods"} ++libz-sys = { git = "https://github.com/rust-lang/libz-sys.git", branch = "main"} ++winit = { git = "https://gitlab.redox-os.org/njskalski/winit.git", branch = "redox_mods2"} ++dpi = { git = "https://gitlab.redox-os.org/njskalski/winit.git", branch = "redox_mods2"} ++# freetype-sys = { git = "https://github.com/PistonDevelopers/freetype-sys.git", branch = "master" } + # If you need to temporarily test Servo with a local fork of some upstream + # crate, add that here. Use the form: + # +@@ -250,7 +265,7 @@ codegen-units = 1 + # + # [patch."https://github.com/servo/webrender"] + # webrender = { path = "../webrender/webrender" } +-# webrender_api = { path = "../webrender/webrender_api" } ++# webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } = { path = "../webrender/webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" }" } + # wr_malloc_size_of = { path = "../webrender/wr_malloc_size_of" } + # + # Or for another Git dependency: +diff --git a/components/canvas/Cargo.toml b/components/canvas/Cargo.toml +index ef0c84977f2..4edb129dd97 100644 +--- a/components/canvas/Cargo.toml ++++ b/components/canvas/Cargo.toml +@@ -38,7 +38,7 @@ raqote = { version = "0.8.5", optional = true } + servo_arc = { workspace = true } + stylo = { workspace = true } + unicode-script = { workspace = true } +-webrender_api = { workspace = true } ++webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } + servo_config = { path = "../config" } + vello = { workspace = true, optional = true } + vello_cpu = { workspace = true, optional = true } +diff --git a/components/compositing/Cargo.toml b/components/compositing/Cargo.toml +index d5792b858db..38132ba0f2c 100644 +--- a/components/compositing/Cargo.toml ++++ b/components/compositing/Cargo.toml +@@ -44,10 +44,10 @@ servo-tracing = { workspace = true } + stylo_traits = { workspace = true } + timers = { path = "../timers" } + tracing = { workspace = true, optional = true } +-webrender = { workspace = true } +-webrender_api = { workspace = true } ++webrender = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } ++webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } + webxr = { path = "../webxr", optional = true } +-wr_malloc_size_of = { workspace = true } ++wr_malloc_size_of = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } + + [dev-dependencies] + surfman = { workspace = true } +diff --git a/components/constellation/Cargo.toml b/components/constellation/Cargo.toml +index a982bcbfe73..cb519367edd 100644 +--- a/components/constellation/Cargo.toml ++++ b/components/constellation/Cargo.toml +@@ -58,10 +58,10 @@ stylo_traits = { workspace = true } + tracing = { workspace = true, optional = true } + webgpu = { path = "../webgpu" } + webgpu_traits = { workspace = true } +-webrender = { workspace = true } +-webrender_api = { workspace = true } ++webrender = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods", features = ["capture"] } ++webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } + webxr-api = { workspace = true, features = ["ipc"] } + servo-tracing = { workspace = true } + +-[target.'cfg(any(target_os="macos", all(not(target_os = "windows"), not(target_os = "ios"), not(target_os="android"), not(target_env="ohos"), not(target_arch="arm"), not(target_arch="aarch64"))))'.dependencies] ++[target.'cfg(any(target_os="macos", all(not(target_os = "windows"), not(target_os = "ios"), not(target_os="android"), not(target_os="redox"), not(target_env="ohos"), not(target_arch="arm"), not(target_arch="aarch64"))))'.dependencies] + gaol = "0.2.1" +diff --git a/components/constellation/sandboxing.rs b/components/constellation/sandboxing.rs +index 02a6f4ed6f6..81dae2503e8 100644 +--- a/components/constellation/sandboxing.rs ++++ b/components/constellation/sandboxing.rs +@@ -11,6 +11,7 @@ use std::{env, process}; + not(target_os = "windows"), + not(target_os = "ios"), + not(target_os = "android"), ++ not(target_os = "redox"), + not(target_env = "ohos"), + not(target_arch = "arm"), + not(target_arch = "aarch64") +@@ -99,7 +100,8 @@ pub fn content_process_sandbox_profile() -> Profile { + not(target_os = "android"), + not(target_env = "ohos"), + not(target_arch = "arm"), +- not(target_arch = "aarch64") ++ not(target_arch = "aarch64"), ++ not(target_os = "redox"), + ))] + pub fn content_process_sandbox_profile() -> Profile { + use std::path::PathBuf; +@@ -128,6 +130,7 @@ pub fn content_process_sandbox_profile() -> Profile { + target_os = "windows", + target_os = "ios", + target_os = "android", ++ target_os = "redox", + target_env = "ohos", + target_arch = "arm", + +@@ -175,7 +178,8 @@ pub fn spawn_multiprocess(content: UnprivilegedContent) -> Result Result { + use gaol::sandbox::{self, Sandbox, SandboxMethods}; +@@ -243,6 +247,12 @@ pub fn spawn_multiprocess(_content: UnprivilegedContent) -> Result Result { ++ log::error!("Multiprocess is not supported on Redox."); ++ process::exit(1); ++} ++ + fn setup_common(command: &mut C, token: String) { + C::arg(command, "--content-process"); + C::arg(command, token); +diff --git a/components/fonts/Cargo.toml b/components/fonts/Cargo.toml +index e4c27ca6c6f..acf5335e922 100644 +--- a/components/fonts/Cargo.toml ++++ b/components/fonts/Cargo.toml +@@ -53,7 +53,7 @@ tracing = { workspace = true, optional = true } + unicode-properties = { workspace = true } + unicode-script = { workspace = true } + url = { workspace = true } +-webrender_api = { workspace = true } ++webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } + servo-tracing = { workspace = true } + + [target.'cfg(target_os = "macos")'.dependencies] +@@ -62,11 +62,11 @@ core-foundation = "0.9" + core-graphics = "0.23" + core-text = "20.1" + +-[target.'cfg(any(target_os = "linux", target_os = "android"))'.dependencies] ++[target.'cfg(any(target_os = "linux", target_os = "android", target_os = "redox"))'.dependencies] + freetype-sys = { workspace = true } + servo_allocator = { path = "../allocator" } + +-[target.'cfg(all(target_os = "linux", not(target_env = "ohos")))'.dependencies] ++[target.'cfg(all(any(target_os = "linux", target_os = "redox"), not(target_env = "ohos")))'.dependencies] + fontconfig_sys = { package = "yeslogic-fontconfig-sys", version = "6" } + + [target.'cfg(target_os = "android")'.dependencies] +diff --git a/components/fonts/font.rs b/components/fonts/font.rs +index 751aeecdba7..1b62cba5851 100644 +--- a/components/fonts/font.rs ++++ b/components/fonts/font.rs +@@ -947,7 +947,7 @@ pub struct FontBaseline { + /// let mapped_weight = apply_font_config_to_style_mapping(&mapping, weight as f64); + /// ``` + #[cfg(all( +- any(target_os = "linux", target_os = "macos"), ++ any(target_os = "linux", target_os = "macos", target_os="redox"), + not(target_env = "ohos") + ))] + pub(crate) fn map_platform_values_to_style_values(mapping: &[(f64, f64)], value: f64) -> f64 { +diff --git a/components/fonts/platform/freetype/mod.rs b/components/fonts/platform/freetype/mod.rs +index feea468008e..24f59a276d4 100644 +--- a/components/fonts/platform/freetype/mod.rs ++++ b/components/fonts/platform/freetype/mod.rs +@@ -16,7 +16,7 @@ use webrender_api::NativeFontHandle; + pub mod font; + mod freetype_face; + +-#[cfg(all(target_os = "linux", not(target_env = "ohos"), not(ohos_mock)))] ++#[cfg(all(any(target_os = "linux", target_os = "redox"), not(target_env = "ohos"), not(ohos_mock)))] + pub mod font_list; + + #[cfg(target_os = "android")] +diff --git a/components/fonts/platform/mod.rs b/components/fonts/platform/mod.rs +index 2c77d17d5d5..3138343feb2 100644 +--- a/components/fonts/platform/mod.rs ++++ b/components/fonts/platform/mod.rs +@@ -3,25 +3,25 @@ + * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ + + #[cfg(all( +- any(target_os = "linux", target_os = "macos"), ++ any(target_os = "linux", target_os = "macos", target_os="redox"), + not(target_os = "android"), + not(target_env = "ohos") + ))] + use base::text::{UnicodeBlock, UnicodeBlockMethod}; + #[cfg(all( +- any(target_os = "linux", target_os = "macos"), ++ any(target_os = "linux", target_os = "macos", target_os="redox"), + not(target_os = "android"), + not(target_env = "ohos") + ))] + use unicode_script::Script; + + #[cfg(all( +- any(target_os = "linux", target_os = "macos"), ++ any(target_os = "linux", target_os = "macos", target_os="redox"), + not(target_os = "android"), + not(target_env = "ohos") + ))] + use crate::FallbackFontSelectionOptions; +-#[cfg(any(target_os = "linux", target_os = "android"))] ++#[cfg(any(target_os = "linux", target_os = "android", target_os="redox"))] + pub use crate::platform::freetype::{LocalFontIdentifier, font, font_list}; + #[cfg(target_os = "macos")] + pub use crate::platform::macos::{ +@@ -30,7 +30,7 @@ pub use crate::platform::macos::{ + #[cfg(target_os = "windows")] + pub use crate::platform::windows::{font, font_list, font_list::LocalFontIdentifier}; + +-#[cfg(any(target_os = "linux", target_os = "android"))] ++#[cfg(any(target_os = "linux", target_os = "android", target_os="redox"))] + pub mod freetype; + + #[cfg(target_os = "macos")] +@@ -47,7 +47,7 @@ mod windows { + } + + #[cfg(all( +- any(target_os = "linux", target_os = "macos"), ++ any(target_os = "linux", target_os = "macos", target_os="redox"), + not(target_os = "android"), + not(target_env = "ohos") + ))] +diff --git a/components/geometry/Cargo.toml b/components/geometry/Cargo.toml +index 8634bc1d18c..a4115f6bf90 100644 +--- a/components/geometry/Cargo.toml ++++ b/components/geometry/Cargo.toml +@@ -16,5 +16,5 @@ app_units = { workspace = true } + euclid = { workspace = true } + malloc_size_of = { workspace = true } + malloc_size_of_derive = { workspace = true } +-webrender = { workspace = true } +-webrender_api = { workspace = true } ++webrender = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } ++webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } +diff --git a/components/layout/Cargo.toml b/components/layout/Cargo.toml +index 139f2ce3dba..0196a3f15e0 100644 +--- a/components/layout/Cargo.toml ++++ b/components/layout/Cargo.toml +@@ -62,7 +62,7 @@ tracing = { workspace = true, optional = true } + unicode-bidi = { workspace = true } + unicode-script = { workspace = true } + url = { workspace = true } +-webrender_api = { workspace = true } ++webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } + xi-unicode = { workspace = true } + servo-tracing = { workspace = true } + +diff --git a/components/malloc_size_of/Cargo.toml b/components/malloc_size_of/Cargo.toml +index 6e5e45a4e35..8de32d2c798 100644 +--- a/components/malloc_size_of/Cargo.toml ++++ b/components/malloc_size_of/Cargo.toml +@@ -39,5 +39,5 @@ unicode-script = { workspace = true } + url = { workspace = true } + urlpattern = { workspace = true } + uuid = { workspace = true } +-webrender_api = { workspace = true } +-wr_malloc_size_of = { workspace = true } ++webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } ++wr_malloc_size_of = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods"} +diff --git a/components/media/Cargo.toml b/components/media/Cargo.toml +index cf51080ec7a..effa64922f8 100644 +--- a/components/media/Cargo.toml ++++ b/components/media/Cargo.toml +@@ -20,4 +20,4 @@ log = { workspace = true } + serde = { workspace = true } + servo-media = { workspace = true } + servo_config = { path = "../config" } +-webrender_api = { workspace = true } ++webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } +diff --git a/components/net/Cargo.toml b/components/net/Cargo.toml +index 7556a1bf81f..38252d09b54 100644 +--- a/components/net/Cargo.toml ++++ b/components/net/Cargo.toml +@@ -77,8 +77,7 @@ tungstenite = { workspace = true } + url = { workspace = true } + uuid = { workspace = true } + webpki-roots = { workspace = true } +-webrender_api = { workspace = true } +- ++webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } + [dev-dependencies] + embedder_traits = { workspace = true, features = ["baked-default-resources"] } + flate2 = "1" +diff --git a/components/pixels/Cargo.toml b/components/pixels/Cargo.toml +index 9ba20db80c0..fe33d20b88b 100644 +--- a/components/pixels/Cargo.toml ++++ b/components/pixels/Cargo.toml +@@ -19,8 +19,7 @@ log = { workspace = true } + malloc_size_of = { workspace = true } + malloc_size_of_derive = { workspace = true } + serde = { workspace = true, features = ["derive"] } +-webrender_api = { workspace = true } +- ++webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } + [dev-dependencies] + criterion = { version = "0.5", features = ["html_reports"] } + +diff --git a/components/script/Cargo.toml b/components/script/Cargo.toml +index 51e81f6c085..fb85b1ea6b1 100644 +--- a/components/script/Cargo.toml ++++ b/components/script/Cargo.toml +@@ -136,7 +136,7 @@ utf-8 = "0.7" + uuid = { workspace = true, features = ["serde"] } + webdriver = { workspace = true } + webgpu_traits = { workspace = true } +-webrender_api = { workspace = true } ++webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } + webxr-api = { workspace = true, features = ["ipc"], optional = true } + wgpu-core = { workspace = true } + wgpu-types = { workspace = true } +diff --git a/components/script/dom/navigatorinfo.rs b/components/script/dom/navigatorinfo.rs +index f3e6ddc109b..ee83d327df9 100644 +--- a/components/script/dom/navigatorinfo.rs ++++ b/components/script/dom/navigatorinfo.rs +@@ -46,7 +46,7 @@ pub(crate) fn Platform() -> DOMString { + } + + #[allow(non_snake_case)] +-#[cfg(any(target_os = "android", target_os = "linux"))] ++#[cfg(any(target_os = "android", target_os = "linux", target_os = "redox"))] + pub(crate) fn Platform() -> DOMString { + DOMString::from("Linux") + } +diff --git a/components/script_bindings/build.rs b/components/script_bindings/build.rs +index c28f900f6ce..2445c2ec9e4 100644 +--- a/components/script_bindings/build.rs ++++ b/components/script_bindings/build.rs +@@ -86,12 +86,12 @@ impl phf_shared::PhfHash for Bytes<'_> { + /// + /// Note: This function should be kept in sync with the version in `components/script/build.rs` + fn find_python() -> Command { +- let mut command = Command::new("uv"); +- command.args(["run", "--no-project", "python"]); ++ let mut command = Command::new("python3"); ++ // command.args(["run", "--no-project", "python"]); + + if command.output().is_ok_and(|out| out.status.success()) { + return command; + } + +- panic!("Can't find python (tried `{command:?}`)! Is uv installed and in PATH?") ++ panic!("Can't find python (tried `{command:?}`)!") + } +diff --git a/components/servo/Cargo.toml b/components/servo/Cargo.toml +index 2c1f75dca13..03bb5596dc1 100644 +--- a/components/servo/Cargo.toml ++++ b/components/servo/Cargo.toml +@@ -25,7 +25,7 @@ default = ["clipboard", "raqote"] + clipboard = ["dep:arboard"] + crown = ["script/crown"] + debugmozjs = ["script/debugmozjs"] +-background_hang_monitor = ["background_hang_monitor/sampler"] ++# background_hang_monitor = ["background_hang_monitor/sampler"] + jitspew = ["script/jitspew"] + js_backtrace = ["script/js_backtrace"] + media-gstreamer = ["servo-media-gstreamer", "gstreamer"] +@@ -117,8 +117,8 @@ surfman = { workspace = true } + tracing = { workspace = true, optional = true } + url = { workspace = true } + webgpu = { path = "../webgpu" } +-webrender = { workspace = true } +-webrender_api = { workspace = true } ++webrender = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods", features = ["capture"] } ++webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } + webxr-api = { workspace = true, optional = true } + + [target.'cfg(any(target_os = "android", target_env = "ohos"))'.dependencies] +@@ -128,7 +128,7 @@ webxr = { path = "../webxr", optional = true } + arboard = { workspace = true, optional = true } + webxr = { path = "../webxr", features = ["ipc", "glwindow", "headless"] } + +-[target.'cfg(all(not(target_os = "windows"), not(target_os = "ios"), not(target_os = "android"), not(target_env = "ohos"), not(target_arch = "arm"), not(target_arch = "aarch64")))'.dependencies] ++[target.'cfg(all(not(target_os = "windows"), not(target_os = "ios"), not(target_os = "android"), not(target_env = "ohos"), not(target_arch = "arm"), not(target_arch = "aarch64"), not(target_os = "redox")))'.dependencies] + gaol = "0.2.1" + + [target.'cfg(target_os = "windows")'.dependencies] +diff --git a/components/servo/lib.rs b/components/servo/lib.rs +index 37ce2019c7a..35e64e30c0d 100644 +--- a/components/servo/lib.rs ++++ b/components/servo/lib.rs +@@ -77,6 +77,7 @@ use fonts::SystemFontService; + not(target_arch = "arm"), + not(target_arch = "aarch64"), + not(target_env = "ohos"), ++ not(target_os = "redox"), + ))] + use gaol::sandbox::{ChildSandbox, ChildSandboxMethods}; + pub use gleam::gl; +@@ -1305,6 +1306,7 @@ pub fn run_content_process(token: String) { + not(target_arch = "arm"), + not(target_arch = "aarch64"), + not(target_env = "ohos"), ++ not(target_os = "redox"), + ))] + fn create_sandbox() { + ChildSandbox::new(content_process_sandbox_profile()) +@@ -1319,6 +1321,7 @@ fn create_sandbox() { + target_arch = "arm", + target_arch = "aarch64", + target_env = "ohos", ++ target_os = "redox", + ))] + fn create_sandbox() { + panic!("Sandboxing is not supported on Windows, iOS, ARM targets and android."); +diff --git a/components/shared/base/Cargo.toml b/components/shared/base/Cargo.toml +index b293fa0faf3..eead0fb12e3 100644 +--- a/components/shared/base/Cargo.toml ++++ b/components/shared/base/Cargo.toml +@@ -21,8 +21,7 @@ malloc_size_of_derive = { workspace = true } + parking_lot = { workspace = true } + serde = { workspace = true } + time = { workspace = true } +-webrender_api = { workspace = true } +- ++webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } + [target.'cfg(any(target_os = "macos", target_os = "ios"))'.dependencies] + mach2 = { workspace = true } + +diff --git a/components/shared/canvas/Cargo.toml b/components/shared/canvas/Cargo.toml +index 36711c0f83a..474c7722812 100644 +--- a/components/shared/canvas/Cargo.toml ++++ b/components/shared/canvas/Cargo.toml +@@ -28,5 +28,5 @@ serde = { workspace = true } + servo_config = { path = "../../config" } + strum = { workspace = true } + stylo = { workspace = true } +-webrender_api = { workspace = true } ++webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } + webxr-api = { workspace = true, features = ["ipc"] } +diff --git a/components/shared/compositing/Cargo.toml b/components/shared/compositing/Cargo.toml +index 11ac6223766..21d7943060e 100644 +--- a/components/shared/compositing/Cargo.toml ++++ b/components/shared/compositing/Cargo.toml +@@ -19,7 +19,7 @@ base = { workspace = true } + bincode = { workspace = true } + bitflags = { workspace = true } + crossbeam-channel = { workspace = true } +-dpi = { version = "0.1" } ++dpi = { version = "0.1.1" } + embedder_traits = { workspace = true } + euclid = { workspace = true } + gleam = { workspace = true } +@@ -38,4 +38,4 @@ strum_macros = { workspace = true } + stylo = { workspace = true } + stylo_traits = { workspace = true } + surfman = { workspace = true, features = ["sm-x11"] } +-webrender_api = { workspace = true } ++webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } +diff --git a/components/shared/compositing/rendering_context.rs b/components/shared/compositing/rendering_context.rs +index 0596210430b..c85c84618ae 100644 +--- a/components/shared/compositing/rendering_context.rs ++++ b/components/shared/compositing/rendering_context.rs +@@ -105,7 +105,12 @@ impl Drop for SurfmanRenderingContext { + + impl SurfmanRenderingContext { + fn new(connection: &Connection, adapter: &Adapter) -> Result { ++ eprintln!(" SurfmanRenderingContext::new - Starting"); ++ eprintln!(" GL API: {:?}", connection.gl_api()); ++ ++ eprintln!(" Creating device..."); + let mut device = connection.create_device(adapter)?; ++ eprintln!(" Device created"); + + let flags = ContextAttributeFlags::ALPHA | + ContextAttributeFlags::DEPTH | +@@ -115,9 +120,16 @@ impl SurfmanRenderingContext { + GLApi::GLES => surfman::GLVersion { major: 3, minor: 0 }, + GLApi::GL => surfman::GLVersion { major: 3, minor: 2 }, + }; ++ eprintln!(" GL Version requested: {}.{}", version.major, version.minor); ++ ++ eprintln!(" Creating context descriptor..."); + let context_descriptor = + device.create_context_descriptor(&ContextAttributes { flags, version })?; ++ eprintln!(" Context descriptor created"); ++ ++ eprintln!(" Creating context..."); + let context = device.create_context(&context_descriptor, None)?; ++ eprintln!(" Context created"); + + #[allow(unsafe_code)] + let gleam_gl = { +@@ -392,20 +404,41 @@ impl WindowRenderingContext { + window_handle: WindowHandle, + size: PhysicalSize, + ) -> Result { ++ eprintln!("WindowRenderingContext::new - Starting creation"); ++ eprintln!(" Size: {}x{}", size.width, size.height); ++ ++ eprintln!(" Creating connection from display_handle..."); + let connection = Connection::from_display_handle(display_handle)?; ++ eprintln!(" Connection created successfully"); ++ ++ eprintln!(" Creating adapter..."); + let adapter = connection.create_adapter()?; ++ eprintln!(" Adapter created successfully"); ++ ++ eprintln!(" Creating SurfmanRenderingContext..."); + let surfman_context = SurfmanRenderingContext::new(&connection, &adapter)?; ++ eprintln!(" SurfmanRenderingContext created successfully"); + ++ eprintln!(" Creating native widget from window handle..."); + let native_widget = connection + .create_native_widget_from_window_handle( + window_handle, + Size2D::new(size.width as i32, size.height as i32), + ) + .expect("Failed to create native widget"); ++ eprintln!(" Native widget created successfully"); + ++ eprintln!(" Creating surface..."); + let surface = surfman_context.create_surface(SurfaceType::Widget { native_widget })?; ++ eprintln!(" Surface created successfully"); ++ ++ eprintln!(" Binding surface..."); + surfman_context.bind_surface(surface)?; ++ eprintln!(" Surface bound successfully"); ++ ++ eprintln!(" Making context current..."); + surfman_context.make_current()?; ++ eprintln!(" Context made current successfully"); + + Ok(Self { + size: Cell::new(size), +diff --git a/components/shared/constellation/Cargo.toml b/components/shared/constellation/Cargo.toml +index 7a1132ecd63..954c002d7f9 100644 +--- a/components/shared/constellation/Cargo.toml ++++ b/components/shared/constellation/Cargo.toml +@@ -37,5 +37,5 @@ strum_macros = { workspace = true } + stylo_traits = { workspace = true } + uuid = { workspace = true } + webgpu_traits = { workspace = true } +-webrender_api = { workspace = true } ++webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } + wgpu-core = { workspace = true, optional = true } +diff --git a/components/shared/embedder/Cargo.toml b/components/shared/embedder/Cargo.toml +index 2ff427a4057..bc611d67da4 100644 +--- a/components/shared/embedder/Cargo.toml ++++ b/components/shared/embedder/Cargo.toml +@@ -38,5 +38,5 @@ stylo = { workspace = true } + url = { workspace = true } + uuid = { workspace = true } + webdriver = { workspace = true } +-webrender_api = { workspace = true } ++webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } + servo_geometry = { path = "../../geometry" } +diff --git a/components/shared/layout/Cargo.toml b/components/shared/layout/Cargo.toml +index ae5d005d103..b24976e9da6 100644 +--- a/components/shared/layout/Cargo.toml ++++ b/components/shared/layout/Cargo.toml +@@ -41,4 +41,4 @@ servo_arc = { workspace = true } + servo_url = { path = "../../url" } + stylo_traits = { workspace = true } + stylo = { workspace = true } +-webrender_api = { workspace = true } ++webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } +diff --git a/components/shared/net/Cargo.toml b/components/shared/net/Cargo.toml +index 044b2658c4e..0a36fc291ca 100644 +--- a/components/shared/net/Cargo.toml ++++ b/components/shared/net/Cargo.toml +@@ -41,7 +41,6 @@ servo_rand = { path = "../../rand" } + servo_url = { path = "../../url" } + url = { workspace = true } + uuid = { workspace = true } +-webrender_api = { workspace = true } +- ++webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } + [dev-dependencies] + embedder_traits = { workspace = true, features = ["baked-default-resources"] } +diff --git a/components/shared/script/Cargo.toml b/components/shared/script/Cargo.toml +index 69438867cc0..e65648a60b5 100644 +--- a/components/shared/script/Cargo.toml ++++ b/components/shared/script/Cargo.toml +@@ -41,5 +41,5 @@ strum_macros = { workspace = true } + stylo_atoms = { workspace = true } + stylo_traits = { workspace = true } + webgpu_traits = { workspace = true, optional = true } +-webrender_api = { workspace = true } ++webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } + webxr-api = { workspace = true, features = ["ipc"] } +diff --git a/components/shared/webgpu/Cargo.toml b/components/shared/webgpu/Cargo.toml +index 5fb042dfb78..d41af6398d7 100644 +--- a/components/shared/webgpu/Cargo.toml ++++ b/components/shared/webgpu/Cargo.toml +@@ -18,6 +18,6 @@ ipc-channel = { workspace = true } + malloc_size_of = { workspace = true } + pixels = { path = "../../pixels" } + serde = { workspace = true } +-webrender_api = { workspace = true } ++webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } + wgpu-core = { workspace = true, features = ["serde", "wgsl"] } + wgpu-types = { workspace = true } +diff --git a/components/webgl/Cargo.toml b/components/webgl/Cargo.toml +index 46fe7381959..017cf68eba7 100644 +--- a/components/webgl/Cargo.toml ++++ b/components/webgl/Cargo.toml +@@ -30,7 +30,7 @@ itertools = { workspace = true } + log = { workspace = true } + pixels = { path = "../pixels" } + surfman = { workspace = true } +-webrender = { workspace = true } +-webrender_api = { workspace = true } ++webrender = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods", features = ["capture"] } ++webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } + webxr = { path = "../webxr", features = ["ipc"], optional = true } + webxr-api = { workspace = true, features = ["ipc"], optional = true } +diff --git a/components/webgpu/Cargo.toml b/components/webgpu/Cargo.toml +index a2119f4c83c..308ab3772fb 100644 +--- a/components/webgpu/Cargo.toml ++++ b/components/webgpu/Cargo.toml +@@ -22,7 +22,7 @@ pixels = { path = "../pixels" } + serde = { workspace = true, features = ["serde_derive"] } + servo_config = { path = "../config" } + webgpu_traits = { workspace = true } +-webrender_api = { workspace = true } ++webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } + wgpu-core = { workspace = true, features = ["serde", "wgsl"] } + wgpu-types = { workspace = true } + +diff --git a/ports/servoshell/Cargo.toml b/ports/servoshell/Cargo.toml +index 06304184929..fb77b7099b0 100644 +--- a/ports/servoshell/Cargo.toml ++++ b/ports/servoshell/Cargo.toml +@@ -37,7 +37,8 @@ ProductName = "Servo" + [features] + crown = ["libservo/crown"] + debugmozjs = ["libservo/debugmozjs"] +-default = ["max_log_level", "webgpu", "webxr"] ++# cutting , "webxr" for redox ++default = ["max_log_level", "webgpu"] + jitspew = ["libservo/jitspew"] + js_backtrace = ["libservo/js_backtrace"] + max_log_level = ["log/release_max_level_info"] +@@ -68,7 +69,8 @@ image = { workspace = true } + ipc-channel = { workspace = true } + keyboard-types = { workspace = true } + libc = { workspace = true } +-libservo = { path = "../../components/servo", features = ["background_hang_monitor", "bluetooth", "testbinding"] } ++# removed "background_hang_monitor", ++libservo = { path = "../../components/servo", features = [ "bluetooth", "testbinding"] } + log = { workspace = true } + mime_guess = { workspace = true } + raw-window-handle = { workspace = true } +@@ -108,13 +110,32 @@ nix = { workspace = true, features = ["fs"] } + serde_json = { workspace = true } + surfman = { workspace = true, features = ["sm-angle-default"] } + +-[target.'cfg(not(any(target_os = "android", target_env = "ohos")))'.dependencies] +-accesskit_winit = "0.27" ++# I removed the problematic dependencies from everywhere even though they should not be pulled for redox. The thing is that cargo is still complaining about them, even ++# though they should be ignored. ++[target.'cfg(not(any(target_os = "android", target_env = "ohos", target_os = "redox")))'.dependencies] ++# accesskit_winit = "0.27" + dirs = "6.0" +-egui = { version = "0.32.1", features = ["accesskit"] } ++# egui = { version = "0.32.1", features = ["accesskit"] } ++# egui-file-dialog = "0.11.0" ++# egui-winit = { version = "0.32.1", default-features = false, features = ["accesskit", "clipboard", "wayland"] } ++# egui_glow = { version = "0.32.1", features = ["winit"] } ++gilrs = "0.11.0" ++# glow = "0.16.0" ++headers = { workspace = true } ++net = { path = "../../components/net" } ++net_traits = { workspace = true } ++serde_json = { workspace = true } ++# For optional feature servo_allocator/use-system-allocator ++servo_allocator = { path = "../../components/allocator" } ++surfman = { workspace = true, features = ["sm-raw-window-handle-06", "sm-x11"] } ++winit = { workspace = true } ++ ++[target.'cfg(target_os = "redox")'.dependencies] ++dirs = "6.0" ++egui = { version = "0.32.1", default-features = false } + egui-file-dialog = "0.11.0" +-egui-winit = { version = "0.32.1", default-features = false, features = ["accesskit", "clipboard", "wayland"] } +-egui_glow = { version = "0.32.1", features = ["winit"] } ++egui-winit = { version = "0.32.1", default-features = false, features = ["clipboard"] } #<-here ++egui_glow = { version = "0.32.1", default-features = false, features = [] } + gilrs = "0.11.0" + glow = "0.16.0" + headers = { workspace = true } +diff --git a/ports/servoshell/desktop/app.rs b/ports/servoshell/desktop/app.rs +index 08c943b2829..61d20de8bc3 100644 +--- a/ports/servoshell/desktop/app.rs ++++ b/ports/servoshell/desktop/app.rs +@@ -766,18 +766,18 @@ impl ApplicationHandler for App { + } + + fn user_event(&mut self, event_loop: &ActiveEventLoop, event: AppEvent) { +- if let AppEvent::Accessibility(ref event) = event { +- let Some(ref mut minibrowser) = self.minibrowser else { +- return; +- }; +- if !minibrowser.handle_accesskit_event(&event.window_event) { +- return; +- } +- if let Some(window) = self.windows.get(&event.window_id) { +- window.winit_window().unwrap().request_redraw(); +- } +- return; +- } ++ // if let AppEvent::Accessibility(ref event) = event { ++ // let Some(ref mut minibrowser) = self.minibrowser else { ++ // return; ++ // }; ++ // if !minibrowser.handle_accesskit_event(&event.window_event) { ++ // return; ++ // } ++ // if let Some(window) = self.windows.get(&event.window_id) { ++ // window.winit_window().unwrap().request_redraw(); ++ // } ++ // return; ++ // } + + let now = Instant::now(); + let event = winit::event::Event::UserEvent(event); +diff --git a/ports/servoshell/desktop/egui_glue.rs b/ports/servoshell/desktop/egui_glue.rs +index 797ea3c5a91..d658563edc1 100644 +--- a/ports/servoshell/desktop/egui_glue.rs ++++ b/ports/servoshell/desktop/egui_glue.rs +@@ -81,7 +81,7 @@ impl EguiGlow { + None, + ); + let window = window.winit_window().unwrap(); +- egui_winit.init_accesskit(event_loop, window, event_loop_proxy); ++ // egui_winit.init_accesskit(event_loop, window, event_loop_proxy); + window.set_visible(true); + Self { + egui_winit, +diff --git a/ports/servoshell/desktop/events_loop.rs b/ports/servoshell/desktop/events_loop.rs +index 4137001e4eb..b24757b9ad2 100644 +--- a/ports/servoshell/desktop/events_loop.rs ++++ b/ports/servoshell/desktop/events_loop.rs +@@ -22,14 +22,14 @@ pub type EventLoopProxy = winit::event_loop::EventLoopProxy; + pub enum AppEvent { + /// Another process or thread has kicked the OS event loop with EventLoopWaker. + Waker, +- Accessibility(accesskit_winit::Event), ++ // Accessibility(accesskit_winit::Event), + } + +-impl From for AppEvent { +- fn from(event: accesskit_winit::Event) -> AppEvent { +- AppEvent::Accessibility(event) +- } +-} ++// impl From for AppEvent { ++// fn from(event: accesskit_winit::Event) -> AppEvent { ++// AppEvent::Accessibility(event) ++// } ++// } + + /// The real or fake OS event loop. + #[allow(dead_code)] +diff --git a/ports/servoshell/desktop/headed_window.rs b/ports/servoshell/desktop/headed_window.rs +index eef657f2062..7054a201792 100644 +--- a/ports/servoshell/desktop/headed_window.rs ++++ b/ports/servoshell/desktop/headed_window.rs +@@ -144,10 +144,24 @@ impl Window { + let window_handle = winit_window + .window_handle() + .expect("could not get window handle from window"); +- let window_rendering_context = Rc::new( +- WindowRenderingContext::new(display_handle, window_handle, inner_size) +- .expect("Could not create RenderingContext for Window"), +- ); ++ ++ eprintln!("headed_window: Creating WindowRenderingContext..."); ++ eprintln!(" DISPLAY env var: {:?}", std::env::var("DISPLAY")); ++ eprintln!(" Display handle obtained: {:?}", display_handle); ++ eprintln!(" Window handle obtained: {:?}", window_handle); ++ eprintln!(" Inner size: {}x{}", inner_size.width, inner_size.height); ++ ++ let window_rendering_context = match WindowRenderingContext::new(display_handle, window_handle, inner_size) { ++ Ok(context) => { ++ eprintln!(" WindowRenderingContext created successfully!"); ++ Rc::new(context) ++ }, ++ Err(e) => { ++ eprintln!(" Failed to create WindowRenderingContext!"); ++ eprintln!(" Error: {:?}", e); ++ panic!("Could not create RenderingContext for Window: {:?}", e); ++ } ++ }; + + // Setup for GL accelerated media handling. This is only active on certain Linux platforms + // and Windows. +diff --git a/ports/servoshell/desktop/headless_window.rs b/ports/servoshell/desktop/headless_window.rs +index e17e09a5218..24beb102919 100644 +--- a/ports/servoshell/desktop/headless_window.rs ++++ b/ports/servoshell/desktop/headless_window.rs +@@ -179,7 +179,7 @@ impl WindowPortsMethods for Window { + // notification (such as from the display manager) that it has changed size, so we + // must notify the compositor here. + webview.move_resize(self.screen_size.to_f32().into()); +- webview.resize(PhysicalSize::new( ++ webview.resize(PhysicalSize::::new( + self.screen_size.width as u32, + self.screen_size.height as u32, + )); +diff --git a/ports/servoshell/desktop/minibrowser.rs b/ports/servoshell/desktop/minibrowser.rs +index 460e639c15b..3146f73d213 100644 +--- a/ports/servoshell/desktop/minibrowser.rs ++++ b/ports/servoshell/desktop/minibrowser.rs +@@ -522,23 +522,23 @@ impl Minibrowser { + self.update_status_text(state) + } + +- /// Returns true if a redraw is required after handling the provided event. +- pub(crate) fn handle_accesskit_event(&mut self, event: &accesskit_winit::WindowEvent) -> bool { +- match event { +- accesskit_winit::WindowEvent::InitialTreeRequested => { +- self.context.egui_ctx.enable_accesskit(); +- true +- }, +- accesskit_winit::WindowEvent::ActionRequested(req) => { +- self.context +- .egui_winit +- .on_accesskit_action_request(req.clone()); +- true +- }, +- accesskit_winit::WindowEvent::AccessibilityDeactivated => { +- self.context.egui_ctx.disable_accesskit(); +- false +- }, +- } +- } ++ // Returns true if a redraw is required after handling the provided event. ++ // pub(crate) fn handle_accesskit_event(&mut self, event: &accesskit_winit::WindowEvent) -> bool { ++ // match event { ++ // accesskit_winit::WindowEvent::InitialTreeRequested => { ++ // self.context.egui_ctx.enable_accesskit(); ++ // true ++ // }, ++ // accesskit_winit::WindowEvent::ActionRequested(req) => { ++ // self.context ++ // .egui_winit ++ // .on_accesskit_action_request(req.clone()); ++ // true ++ // }, ++ // accesskit_winit::WindowEvent::AccessibilityDeactivated => { ++ // self.context.egui_ctx.disable_accesskit(); ++ // false ++ // }, ++ // } ++ // } + } +diff --git a/ports/servoshell/desktop/tracing.rs b/ports/servoshell/desktop/tracing.rs +index b1f0b1d742e..046b016a2e2 100644 +--- a/ports/servoshell/desktop/tracing.rs ++++ b/ports/servoshell/desktop/tracing.rs +@@ -52,7 +52,7 @@ mod from_winit { + Self::WindowEvent { event, .. } => event.log_target(), + Self::DeviceEvent { .. } => target!("DeviceEvent"), + Self::UserEvent(AppEvent::Waker) => target!("UserEvent(Waker)"), +- Self::UserEvent(AppEvent::Accessibility(..)) => target!("UserEvent(Accessibility)"), ++ // Self::UserEvent(AppEvent::Accessibility(..)) => target!("UserEvent(Accessibility)"), + Self::Suspended => target!("Suspended"), + Self::Resumed => target!("Resumed"), + Self::AboutToWait => target!("AboutToWait"), From 4c4bfd7caf200b62a5f9ceccadbae95614e756d3 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 1 Oct 2025 08:12:07 +0700 Subject: [PATCH 2871/3180] Port wayland client and Xwayland --- recipes/wip/libs/other/libwayland/recipe.toml | 15 -- .../wip/wayland/libwayland-client/recipe.toml | 20 ++ .../wip/wayland/libwayland-client/redox.patch | 205 ++++++++++++++++++ .../wip/wayland/wayland-protocols/recipe.toml | 6 +- recipes/wip/wayland/xwayland/recipe.toml | 44 +++- recipes/wip/wayland/xwayland/redox.patch | 158 ++++++++++++++ recipes/wip/x11/libdrm/recipe.toml | 6 + recipes/wip/x11/libxshmfence/recipe.toml | 16 ++ recipes/wip/x11/xorgproto/recipe.toml | 5 + 9 files changed, 450 insertions(+), 25 deletions(-) delete mode 100644 recipes/wip/libs/other/libwayland/recipe.toml create mode 100644 recipes/wip/wayland/libwayland-client/recipe.toml create mode 100644 recipes/wip/wayland/libwayland-client/redox.patch create mode 100644 recipes/wip/wayland/xwayland/redox.patch create mode 100644 recipes/wip/x11/libdrm/recipe.toml create mode 100644 recipes/wip/x11/libxshmfence/recipe.toml create mode 100644 recipes/wip/x11/xorgproto/recipe.toml diff --git a/recipes/wip/libs/other/libwayland/recipe.toml b/recipes/wip/libs/other/libwayland/recipe.toml deleted file mode 100644 index 28b54879..00000000 --- a/recipes/wip/libs/other/libwayland/recipe.toml +++ /dev/null @@ -1,15 +0,0 @@ -#TODO missing script for Meson, see https://gitlab.freedesktop.org/wayland/wayland/-/blob/main/README.md?ref_type=heads -[source] -tar = "https://gitlab.freedesktop.org/wayland/wayland/-/releases/1.22.0/downloads/wayland-1.22.0.tar.xz" - -[build] -template = "custom" -dependencies = [ - "expat", - "libffi", - "libxml2", -] -script = """ -DYNAMIC_INIT -cookbook_meson -""" diff --git a/recipes/wip/wayland/libwayland-client/recipe.toml b/recipes/wip/wayland/libwayland-client/recipe.toml new file mode 100644 index 00000000..cfc7150e --- /dev/null +++ b/recipes/wip/wayland/libwayland-client/recipe.toml @@ -0,0 +1,20 @@ +#TODO: Requires sys/signalfd.h SFD_CLOEXEC, sys/timerfd.h TFD_CLOEXEC, ppoll +#TODO: F_DUPFD_CLOEXEC, MSG_CMSG_CLOEXEC, MSG_NOSIGNAL TFD_TIMER_ABSTIME +[source] +tar = "https://gitlab.freedesktop.org/wayland/wayland/-/releases/1.24.0/downloads/wayland-1.24.0.tar.xz" +patches = [ + #FIXME: This patch is just a shim. Remove this patch + "redox.patch" +] +[build] +template = "meson" +dependencies = [ + "libffi", + "expat", + "libxml2", +] +mesonflags = [ + "-Ddocumentation=false", + "-Dtests=false", + "-Ddtd_validation=false", +] diff --git a/recipes/wip/wayland/libwayland-client/redox.patch b/recipes/wip/wayland/libwayland-client/redox.patch new file mode 100644 index 00000000..4bcae30a --- /dev/null +++ b/recipes/wip/wayland/libwayland-client/redox.patch @@ -0,0 +1,205 @@ +diff -ruwN source/meson.build source-new/meson.build +--- source/meson.build 2025-07-06 19:11:26.000000000 +0700 ++++ source-new/meson.build 2025-10-01 06:32:51.610361685 +0700 +@@ -80,8 +80,6 @@ + ffi_dep = dependency('libffi') + + decls = [ +- { 'header': 'sys/signalfd.h', 'symbol': 'SFD_CLOEXEC' }, +- { 'header': 'sys/timerfd.h', 'symbol': 'TFD_CLOEXEC' }, + { 'header': 'time.h', 'symbol': 'CLOCK_MONOTONIC' }, + ] + +diff -ruwN source/src/connection.c source-new/src/connection.c +--- source/src/connection.c 2025-07-06 19:11:26.000000000 +0700 ++++ source-new/src/connection.c 2025-10-01 07:10:17.676073568 +0700 +@@ -490,7 +490,7 @@ + + do { + len = sendmsg(connection->fd, &msg, +- MSG_NOSIGNAL | MSG_DONTWAIT); ++ MSG_DONTWAIT); + } while (len == -1 && errno == EINTR); + + if (len == -1) +@@ -1506,9 +1506,9 @@ + char *buffer; + size_t buffer_length; + +- f = open_memstream(&buffer, &buffer_length); +- if (f == NULL) +- return; ++ // f = open_memstream(&buffer, &buffer_length); ++ // if (f == NULL) ++ // return; + + clock_gettime(CLOCK_REALTIME, &tp); + time = (tp.tv_sec * 1000000L) + (tp.tv_nsec / 1000); +diff -ruwN source/src/event-loop.c source-new/src/event-loop.c +--- source/src/event-loop.c 2025-07-06 19:11:26.000000000 +0700 ++++ source-new/src/event-loop.c 2025-10-01 07:07:26.992243929 +0700 +@@ -35,8 +35,8 @@ + #include + #include + #include +-#include +-#include ++// #include ++// #include + #include + #include "timespec-util.h" + #include "wayland-util.h" +@@ -259,24 +259,13 @@ + + static int + set_timer(int timerfd, struct timespec deadline) { +- struct itimerspec its; +- +- its.it_interval.tv_sec = 0; +- its.it_interval.tv_nsec = 0; +- its.it_value = deadline; +- return timerfd_settime(timerfd, TFD_TIMER_ABSTIME, &its, NULL); ++ return 0; + } + + static int + clear_timer(int timerfd) + { +- struct itimerspec its; +- +- its.it_interval.tv_sec = 0; +- its.it_interval.tv_nsec = 0; +- its.it_value.tv_sec = 0; +- its.it_value.tv_nsec = 0; +- return timerfd_settime(timerfd, 0, &its, NULL); ++ return 0; + } + + static void +@@ -307,7 +296,7 @@ + wl_timer_heap_ensure_timerfd(struct wl_timer_heap *timers) + { + struct epoll_event ep; +- int timer_fd; ++ int timer_fd = 0; + + if (timers->base.fd != -1) + return 0; +@@ -316,17 +305,6 @@ + ep.events = EPOLLIN; + ep.data.ptr = timers; + +- timer_fd = timerfd_create(CLOCK_MONOTONIC, +- TFD_CLOEXEC | TFD_NONBLOCK); +- if (timer_fd < 0) +- return -1; +- +- if (epoll_ctl(timers->base.loop->epoll_fd, +- EPOLL_CTL_ADD, timer_fd, &ep) < 0) { +- close(timer_fd); +- return -1; +- } +- + timers->base.fd = timer_fd; + return 0; + } +@@ -677,11 +655,12 @@ + { + struct wl_event_source_signal *signal_source = + (struct wl_event_source_signal *) source; +- struct signalfd_siginfo signal_info; ++ /*struct signalfd_siginfo signal_info; + int len; + + len = read(source->fd, &signal_info, sizeof signal_info); + if (!(len == -1 && errno == EAGAIN) && len != sizeof signal_info) ++ */ + /* Is there anything we can do here? Will this ever happen? */ + wl_log("signalfd read error: %s\n", strerror(errno)); + +@@ -730,7 +709,7 @@ + + sigemptyset(&mask); + sigaddset(&mask, signal_number); +- source->base.fd = signalfd(-1, &mask, SFD_CLOEXEC | SFD_NONBLOCK); ++ // source->base.fd = signalfd(-1, &mask, SFD_CLOEXEC | SFD_NONBLOCK); + sigprocmask(SIG_BLOCK, &mask, NULL); + + source->func = func; +diff -ruwN source/src/meson.build source-new/src/meson.build +--- source/src/meson.build 2025-07-06 19:11:26.000000000 +0700 ++++ source-new/src/meson.build 2025-10-01 07:03:52.591689534 +0700 +@@ -81,8 +81,7 @@ + endif + + if meson.is_cross_build() or not get_option('scanner') +- scanner_dep = dependency('wayland-scanner', native: true, version: meson.project_version()) +- wayland_scanner_for_build = find_program(scanner_dep.get_variable(pkgconfig: 'wayland_scanner')) ++ wayland_scanner_for_build = find_program('wayland-scanner', native: true) + else + wayland_scanner_for_build = wayland_scanner + endif +diff -ruwN source/src/wayland-client.c source-new/src/wayland-client.c +--- source/src/wayland-client.c 2025-07-06 19:11:26.000000000 +0700 ++++ source-new/src/wayland-client.c 2025-10-01 07:10:48.899322239 +0700 +@@ -1997,14 +1997,6 @@ + + pfd[0].fd = display->fd; + pfd[0].events = events; +- do { +- if (timeout) { +- clock_gettime(CLOCK_MONOTONIC, &now); +- timespec_sub_saturate(&result, &deadline, &now); +- remaining_timeout = &result; +- } +- ret = ppoll(pfd, 1, remaining_timeout, NULL); +- } while (ret == -1 && errno == EINTR); + + return ret; + } +diff -ruwN source/src/wayland-os.c source-new/src/wayland-os.c +--- source/src/wayland-os.c 2025-07-06 19:11:26.000000000 +0700 ++++ source-new/src/wayland-os.c 2025-10-01 07:09:01.188805546 +0700 +@@ -134,7 +134,7 @@ + { + int newfd; + +- newfd = wl_fcntl(fd, F_DUPFD_CLOEXEC, minfd); ++ newfd = wl_fcntl(fd, FD_CLOEXEC, minfd); + if (newfd >= 0) + return newfd; + if (errno != EINVAL) +@@ -189,7 +189,7 @@ + #else + ssize_t len; + +- len = wl_recvmsg(sockfd, msg, flags | MSG_CMSG_CLOEXEC); ++ len = wl_recvmsg(sockfd, msg, flags); + if (len >= 0) + return len; + if (errno != EINVAL) +diff -ruwN source/src/wayland-server.c source-new/src/wayland-server.c +--- source/src/wayland-server.c 2025-07-06 19:11:26.000000000 +0700 ++++ source-new/src/wayland-server.c 2025-10-01 07:09:51.131179157 +0700 +@@ -39,7 +39,7 @@ + #include + #include + #include +-#include ++// #include + #include + #include + +@@ -1206,9 +1206,9 @@ + return NULL; + } + +- display->terminate_efd = eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK); +- if (display->terminate_efd < 0) +- goto err_eventfd; ++ // display->terminate_efd = eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK); ++ // if (display->terminate_efd < 0) ++ // goto err_eventfd; + + display->term_source = wl_event_loop_add_fd(display->loop, + display->terminate_efd, diff --git a/recipes/wip/wayland/wayland-protocols/recipe.toml b/recipes/wip/wayland/wayland-protocols/recipe.toml index 5cdbfefc..25dea45d 100644 --- a/recipes/wip/wayland/wayland-protocols/recipe.toml +++ b/recipes/wip/wayland/wayland-protocols/recipe.toml @@ -1,5 +1,7 @@ -#TODO missing script for Meson, lacking build instructions [source] tar = "https://gitlab.freedesktop.org/wayland/wayland-protocols/-/releases/1.32/downloads/wayland-protocols-1.32.tar.xz" [build] -template = "custom" +template = "meson" +mesonflags = [ + "-Dtests=false" +] \ No newline at end of file diff --git a/recipes/wip/wayland/xwayland/recipe.toml b/recipes/wip/wayland/xwayland/recipe.toml index fa972b23..c4b93a68 100644 --- a/recipes/wip/wayland/xwayland/recipe.toml +++ b/recipes/wip/wayland/xwayland/recipe.toml @@ -1,10 +1,38 @@ -#TODO missing script for Meson, see https://wayland.freedesktop.org/xserver.html#heading_toc_j_3 +#TODO wayland-client, fix linux/input, wayland-scanner shim [source] -tar = "https://www.x.org/releases/individual/xserver/xwayland-23.2.4.tar.xz" -[build] -template = "custom" -dependencies = [ - "libepoxy", - "libxtrans", - "libxkbfile", +tar = "https://www.x.org/releases/individual/xserver/xwayland-24.1.8.tar.xz" +patches = [ + "redox.patch" +] +[build] +template = "meson" +dependencies = [ + "libpthread-stubs", + "libepoxy", + "libxkbfile", + "libxfont2", + "libffi", + "libpng", + "pixman", + "xorgproto", + "xtrans", + "libxau", + "libx11", + "libxcb", + "openssl1", + "freetype2", + "libwayland-client", + "libfontenc", + "wayland-protocols", + "zlib", + "libxcvt", + "libxdmcp", + "libxshmfence", +] +mesonflags = [ + "-Ddrm=false", + "-Dglamor=false", + "-Dglx=false", + "-Dsecure-rpc=false", + "-Dmitshm=false" ] diff --git a/recipes/wip/wayland/xwayland/redox.patch b/recipes/wip/wayland/xwayland/redox.patch new file mode 100644 index 00000000..1132282a --- /dev/null +++ b/recipes/wip/wayland/xwayland/redox.patch @@ -0,0 +1,158 @@ +diff -ruwN source/hw/xwayland/meson.build source-new/hw/xwayland/meson.build +--- source/hw/xwayland/meson.build 2024-01-16 16:38:49.000000000 +0700 ++++ source-new/hw/xwayland/meson.build 2025-10-01 07:51:14.456575515 +0700 +@@ -30,8 +30,7 @@ + '../../mi/miinitext.h', + ] + +-scanner_dep = dependency('wayland-scanner', native: true) +-scanner = find_program(scanner_dep.get_pkgconfig_variable('wayland_scanner')) ++scanner = find_program('wayland-scanner', native: true) + + protocols_dep = dependency('wayland-protocols', version: wayland_protocols_req) + protodir = protocols_dep.get_pkgconfig_variable('pkgdatadir') +@@ -55,11 +54,7 @@ + arguments : ['client-header', '@INPUT@', '@OUTPUT@'] + ) + +-if scanner_dep.version().version_compare('>= 1.14.91') + scanner_argument = 'private-code' +-else +- scanner_argument = 'code' +-endif + + code = generator(scanner, + output : '@BASENAME@-protocol.c', +diff -ruwN source/hw/xwayland/xwayland-glamor.h source-new/hw/xwayland/xwayland-glamor.h +--- source/hw/xwayland/xwayland-glamor.h 2024-01-16 16:38:49.000000000 +0700 ++++ source-new/hw/xwayland/xwayland-glamor.h 2025-10-01 08:01:01.409102814 +0700 +@@ -31,7 +31,7 @@ + #include + + #include +-#include ++// #include + + #include "xwayland-types.h" + +@@ -103,7 +103,7 @@ + /* Called to get the DRM device of the primary GPU that this backend + * is set up on. + */ +- drmDevice *(*get_main_device)(struct xwl_screen *xwl_screen); ++ // drmDevice *(*get_main_device)(struct xwl_screen *xwl_screen); + + /* Direct hook to create the backing pixmap for a window */ + PixmapPtr (*create_pixmap_for_window)(struct xwl_window *xwl_window); +diff -ruwN source/hw/xwayland/xwayland-input.c source-new/hw/xwayland/xwayland-input.c +--- source/hw/xwayland/xwayland-input.c 2024-01-16 16:38:49.000000000 +0700 ++++ source-new/hw/xwayland/xwayland-input.c 2025-10-01 08:02:59.681082380 +0700 +@@ -26,7 +26,7 @@ + + #include + +-#include ++// #include + #include + + #include +@@ -758,6 +758,7 @@ + xwl_seat->xwl_screen->serial = serial; + + switch (button) { ++/* + case BTN_LEFT: + index = 1; + break; +@@ -768,10 +769,9 @@ + index = 3; + break; + default: +- /* Skip indexes 4-7: they are used for vertical and horizontal scroll. +- The rest of the buttons go in order: BTN_SIDE becomes 8, etc. */ + index = 8 + button - BTN_SIDE; + break; ++*/ + } + + valuator_mask_zero(&mask); +@@ -1057,7 +1057,7 @@ + + state_rec = xwl_seat->keyboard->key->xkbInfo->state; + xkb_state = (XkbStateFieldFromRec(&state_rec) & 0xff); +- ++ /* + if (((key == KEY_LEFTSHIFT || key == KEY_RIGHTSHIFT) && (xkb_state & ControlMask)) || + ((key == KEY_LEFTCTRL || key == KEY_RIGHTCTRL) && (xkb_state & ShiftMask))) { + +@@ -1072,6 +1072,7 @@ + if (xwl_window) + xwl_window_rootful_update_title(xwl_window); + } ++ */ + } + + static void +diff -ruwN source/hw/xwayland/xwayland-window.c source-new/hw/xwayland/xwayland-window.c +--- source/hw/xwayland/xwayland-window.c 2024-01-16 16:38:49.000000000 +0700 ++++ source-new/hw/xwayland/xwayland-window.c 2025-10-01 08:00:07.858324820 +0700 +@@ -1102,7 +1102,7 @@ + for (int j = 0; j < dev_formats->num_formats; j++) + free(dev_formats->formats[j].modifiers); + free(dev_formats->formats); +- drmFreeDevice(&dev_formats->drm_dev); ++ // drmFreeDevice(&dev_formats->drm_dev); + } + + void +diff -ruwN source/hw/xwayland/xwayland-window.h source-new/hw/xwayland/xwayland-window.h +--- source/hw/xwayland/xwayland-window.h 2024-01-16 16:38:49.000000000 +0700 ++++ source-new/hw/xwayland/xwayland-window.h 2025-10-01 08:00:40.464798537 +0700 +@@ -38,7 +38,7 @@ + #include + #include + #include +-#include ++// #include + + #include "xwayland-types.h" + +@@ -55,7 +55,7 @@ + }; + + struct xwl_device_formats { +- drmDevice *drm_dev; ++ // drmDevice *drm_dev; + int supports_scanout; + uint32_t num_formats; + struct xwl_format *formats; +@@ -75,7 +75,7 @@ + struct xwl_dmabuf_feedback { + struct zwp_linux_dmabuf_feedback_v1 *dmabuf_feedback; + struct xwl_format_table format_table; +- drmDevice *main_dev; ++ // drmDevice *main_dev; + /* + * This will be filled in during wl events and copied to + * dev_formats on dmabuf_feedback.tranche_done +diff -ruwN source/os/access.c source-new/os/access.c +--- source/os/access.c 2024-01-16 16:38:49.000000000 +0700 ++++ source-new/os/access.c 2025-10-01 07:22:43.931644468 +0700 +@@ -446,7 +446,7 @@ + int family; + register HOST *host; + +-#ifndef WIN32 ++#if !defined(WIN32) && !defined(__redox__) + struct utsname name; + #else + struct { +@@ -477,7 +477,7 @@ + * uname() lets me access to the whole string (it smashes release, you + * see), whereas gethostname() kindly truncates it for me. + */ +-#ifndef WIN32 ++#if !defined(WIN32) && !defined(__redox__) + uname(&name); + #else + gethostname(name.nodename, sizeof(name.nodename)); diff --git a/recipes/wip/x11/libdrm/recipe.toml b/recipes/wip/x11/libdrm/recipe.toml new file mode 100644 index 00000000..f2775b03 --- /dev/null +++ b/recipes/wip/x11/libdrm/recipe.toml @@ -0,0 +1,6 @@ +# TODO: Port sys/ioccom.h just like BSD? +[source] +tar = "https://gitlab.freedesktop.org/mesa/libdrm/-/archive/libdrm-2.4.125/libdrm-libdrm-2.4.125.tar.gz" + +[build] +template = "meson" diff --git a/recipes/wip/x11/libxshmfence/recipe.toml b/recipes/wip/x11/libxshmfence/recipe.toml new file mode 100644 index 00000000..bd9764ec --- /dev/null +++ b/recipes/wip/x11/libxshmfence/recipe.toml @@ -0,0 +1,16 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/libxshmfence-1.3.tar.gz" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "x11proto", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" diff --git a/recipes/wip/x11/xorgproto/recipe.toml b/recipes/wip/x11/xorgproto/recipe.toml new file mode 100644 index 00000000..389ae42c --- /dev/null +++ b/recipes/wip/x11/xorgproto/recipe.toml @@ -0,0 +1,5 @@ + +[source] +tar = "https://www.x.org/archive/individual/proto/xorgproto-2024.1.tar.xz" +[build] +template = "meson" From 91ee785ce31f67cf20bbc1baacf8ca1946bc0d8f Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Wed, 1 Oct 2025 01:47:58 +0000 Subject: [PATCH 2872/3180] Rename libwayland --- .../wip/wayland/{libwayland-client => libwayland}/recipe.toml | 0 .../wip/wayland/{libwayland-client => libwayland}/redox.patch | 0 recipes/wip/wayland/wayland-protocols/recipe.toml | 2 +- recipes/wip/wayland/xwayland/recipe.toml | 2 +- recipes/wip/x11/xorgproto/recipe.toml | 1 - 5 files changed, 2 insertions(+), 3 deletions(-) rename recipes/wip/wayland/{libwayland-client => libwayland}/recipe.toml (100%) rename recipes/wip/wayland/{libwayland-client => libwayland}/redox.patch (100%) diff --git a/recipes/wip/wayland/libwayland-client/recipe.toml b/recipes/wip/wayland/libwayland/recipe.toml similarity index 100% rename from recipes/wip/wayland/libwayland-client/recipe.toml rename to recipes/wip/wayland/libwayland/recipe.toml diff --git a/recipes/wip/wayland/libwayland-client/redox.patch b/recipes/wip/wayland/libwayland/redox.patch similarity index 100% rename from recipes/wip/wayland/libwayland-client/redox.patch rename to recipes/wip/wayland/libwayland/redox.patch diff --git a/recipes/wip/wayland/wayland-protocols/recipe.toml b/recipes/wip/wayland/wayland-protocols/recipe.toml index 25dea45d..593e24bc 100644 --- a/recipes/wip/wayland/wayland-protocols/recipe.toml +++ b/recipes/wip/wayland/wayland-protocols/recipe.toml @@ -4,4 +4,4 @@ tar = "https://gitlab.freedesktop.org/wayland/wayland-protocols/-/releases/1.32/ template = "meson" mesonflags = [ "-Dtests=false" -] \ No newline at end of file +] diff --git a/recipes/wip/wayland/xwayland/recipe.toml b/recipes/wip/wayland/xwayland/recipe.toml index c4b93a68..d7ed31b6 100644 --- a/recipes/wip/wayland/xwayland/recipe.toml +++ b/recipes/wip/wayland/xwayland/recipe.toml @@ -21,7 +21,7 @@ dependencies = [ "libxcb", "openssl1", "freetype2", - "libwayland-client", + "libwayland", "libfontenc", "wayland-protocols", "zlib", diff --git a/recipes/wip/x11/xorgproto/recipe.toml b/recipes/wip/x11/xorgproto/recipe.toml index 389ae42c..2d62b819 100644 --- a/recipes/wip/x11/xorgproto/recipe.toml +++ b/recipes/wip/x11/xorgproto/recipe.toml @@ -1,4 +1,3 @@ - [source] tar = "https://www.x.org/archive/individual/proto/xorgproto-2024.1.tar.xz" [build] From 3422853f65e8b45446ba68c5e41a6da253d54101 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 1 Oct 2025 14:30:19 +0700 Subject: [PATCH 2873/3180] Working patches --- recipes/wip/web/servo/recipe.toml | 4 +- recipes/wip/web/servo/redox.patch | 1797 +---------------------------- 2 files changed, 32 insertions(+), 1769 deletions(-) diff --git a/recipes/wip/web/servo/recipe.toml b/recipes/wip/web/servo/recipe.toml index 34b72b85..38f73d26 100644 --- a/recipes/wip/web/servo/recipe.toml +++ b/recipes/wip/web/servo/recipe.toml @@ -50,14 +50,14 @@ export PKG_CONFIG_PATH_x86_64_unknown_redox="${COOKBOOK_SYSROOT}/lib/pkgconfig" export PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_redox="${COOKBOOK_SYSROOT}/lib/pkgconfig" rsync -a -v ${COOKBOOK_SYSROOT}/usr/share/pkgconfig/*.pc ${COOKBOOK_SYSROOT}/lib/pkgconfig/ -export RUSTFLAGS="$RUSTFLAGS -L native=${COOKBOOK_SYSROOT}/lib" +export RUSTFLAGS="$RUSTFLAGS -L native=${COOKBOOK_SYSROOT}/lib -C link-arg=-Wl,-rpath-link,${COOKBOOK_SYSROOT}/lib" #TODO: mozjs-sys and mozangle uses clang, it won't know our prefix C libraries, so here's the workaround PREFIX_INCLUDE=$(realpath "$COOKBOOK_ROOT/../prefix/$TARGET/sysroot/x86_64-unknown-redox/include") export CLANGFLAGS="-I $PREFIX_INCLUDE/c++/13.2.0 -I $PREFIX_INCLUDE/c++/13.2.0/$TARGET -I $PREFIX_INCLUDE/c++/13.2.0/backward -I $PREFIX_INCLUDE" #Mozjs specifics -export CARGO_MAKEFLAGS="-j $COOKBOOK_MAKE_JOBS" +export CARGO_MAKEFLAGS="-j $COOKBOOK_MAKE_JOBS" CCACHE="sccache" PACKAGE_PATH="ports/servoshell" cookbook_cargo """ diff --git a/recipes/wip/web/servo/redox.patch b/recipes/wip/web/servo/redox.patch index d7ad7814..3a0c804f 100644 --- a/recipes/wip/web/servo/redox.patch +++ b/recipes/wip/web/servo/redox.patch @@ -1,1764 +1,5 @@ -diff --git a/Cargo.lock b/Cargo.lock -index f2081c3fd34..bb300865c60 100644 ---- a/Cargo.lock -+++ b/Cargo.lock -@@ -18,96 +18,6 @@ version = "0.1.10" - source = "registry+https://github.com/rust-lang/crates.io-index" - checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" - --[[package]] --name = "accesskit" --version = "0.19.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "e25ae84c0260bdf5df07796d7cc4882460de26a2b406ec0e6c42461a723b271b" -- --[[package]] --name = "accesskit_atspi_common" --version = "0.12.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "29bd41de2e54451a8ca0dd95ebf45b54d349d29ebceb7f20be264eee14e3d477" --dependencies = [ -- "accesskit", -- "accesskit_consumer", -- "atspi-common", -- "serde", -- "thiserror 1.0.69", -- "zvariant", --] -- --[[package]] --name = "accesskit_consumer" --version = "0.28.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "8bfae7c152994a31dc7d99b8eeac7784a919f71d1b306f4b83217e110fd3824c" --dependencies = [ -- "accesskit", -- "hashbrown", --] -- --[[package]] --name = "accesskit_macos" --version = "0.20.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "692dd318ff8a7a0ffda67271c4bd10cf32249656f4e49390db0b26ca92b095f2" --dependencies = [ -- "accesskit", -- "accesskit_consumer", -- "hashbrown", -- "objc2 0.5.2", -- "objc2-app-kit 0.2.2", -- "objc2-foundation 0.2.2", --] -- --[[package]] --name = "accesskit_unix" --version = "0.15.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "c5f7474c36606d0fe4f438291d667bae7042ea2760f506650ad2366926358fc8" --dependencies = [ -- "accesskit", -- "accesskit_atspi_common", -- "async-channel", -- "async-executor", -- "async-task", -- "atspi", -- "futures-lite", -- "futures-util", -- "serde", -- "zbus", --] -- --[[package]] --name = "accesskit_windows" --version = "0.27.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "70a042b62c9c05bf7b616f015515c17d2813f3ba89978d6f4fc369735d60700a" --dependencies = [ -- "accesskit", -- "accesskit_consumer", -- "hashbrown", -- "static_assertions", -- "windows 0.61.3", -- "windows-core 0.61.2", --] -- --[[package]] --name = "accesskit_winit" --version = "0.27.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "5c1f0d3d13113d8857542a4f8d1a1c24d1dc1527b77aee8426127f4901588708" --dependencies = [ -- "accesskit", -- "accesskit_macos", -- "accesskit_unix", -- "accesskit_windows", -- "raw-window-handle", -- "winit", --] -- - [[package]] - name = "accountable-refcell" - version = "0.2.2" -@@ -183,7 +93,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" - checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" - dependencies = [ - "cfg-if", -- "getrandom 0.3.3", - "once_cell", - "version_check", - "zerocopy", -@@ -418,30 +327,6 @@ dependencies = [ - "libloading", - ] - --[[package]] --name = "async-broadcast" --version = "0.7.2" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" --dependencies = [ -- "event-listener", -- "event-listener-strategy", -- "futures-core", -- "pin-project-lite", --] -- --[[package]] --name = "async-channel" --version = "2.5.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" --dependencies = [ -- "concurrent-queue", -- "event-listener-strategy", -- "futures-core", -- "pin-project-lite", --] -- - [[package]] - name = "async-compression" - version = "0.4.27" -@@ -456,68 +341,6 @@ dependencies = [ - "tokio", - ] - --[[package]] --name = "async-executor" --version = "1.13.2" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" --dependencies = [ -- "async-task", -- "concurrent-queue", -- "fastrand", -- "futures-lite", -- "pin-project-lite", -- "slab", --] -- --[[package]] --name = "async-io" --version = "2.4.1" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "1237c0ae75a0f3765f58910ff9cdd0a12eeb39ab2f4c7de23262f337f0aacbb3" --dependencies = [ -- "async-lock", -- "cfg-if", -- "concurrent-queue", -- "futures-io", -- "futures-lite", -- "parking", -- "polling", -- "rustix 1.0.8", -- "slab", -- "tracing", -- "windows-sys 0.59.0", --] -- --[[package]] --name = "async-lock" --version = "3.4.1" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" --dependencies = [ -- "event-listener", -- "event-listener-strategy", -- "pin-project-lite", --] -- --[[package]] --name = "async-process" --version = "2.4.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "65daa13722ad51e6ab1a1b9c01299142bc75135b337923cfa10e79bbbd669f00" --dependencies = [ -- "async-channel", -- "async-io", -- "async-lock", -- "async-signal", -- "async-task", -- "blocking", -- "cfg-if", -- "event-listener", -- "futures-lite", -- "rustix 1.0.8", --] -- - [[package]] - name = "async-recursion" - version = "1.1.1" -@@ -529,41 +352,6 @@ dependencies = [ - "syn", - ] - --[[package]] --name = "async-signal" --version = "0.2.11" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "d7605a4e50d4b06df3898d5a70bf5fde51ed9059b0434b73105193bc27acce0d" --dependencies = [ -- "async-io", -- "async-lock", -- "atomic-waker", -- "cfg-if", -- "futures-core", -- "futures-io", -- "rustix 1.0.8", -- "signal-hook-registry", -- "slab", -- "windows-sys 0.59.0", --] -- --[[package]] --name = "async-task" --version = "4.7.1" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" -- --[[package]] --name = "async-trait" --version = "0.1.89" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" --dependencies = [ -- "proc-macro2", -- "quote", -- "syn", --] -- - [[package]] - name = "async-tungstenite" - version = "0.29.1" -@@ -596,56 +384,6 @@ version = "0.1.13" - source = "registry+https://github.com/rust-lang/crates.io-index" - checksum = "41e67cd8309bbd06cd603a9e693a784ac2e5d1e955f11286e355089fcab3047c" - --[[package]] --name = "atspi" --version = "0.25.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "c83247582e7508838caf5f316c00791eee0e15c0bf743e6880585b867e16815c" --dependencies = [ -- "atspi-common", -- "atspi-connection", -- "atspi-proxies", --] -- --[[package]] --name = "atspi-common" --version = "0.9.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "33dfc05e7cdf90988a197803bf24f5788f94f7c94a69efa95683e8ffe76cfdfb" --dependencies = [ -- "enumflags2", -- "serde", -- "static_assertions", -- "zbus", -- "zbus-lockstep", -- "zbus-lockstep-macros", -- "zbus_names", -- "zvariant", --] -- --[[package]] --name = "atspi-connection" --version = "0.9.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "4193d51303d8332304056ae0004714256b46b6635a5c556109b319c0d3784938" --dependencies = [ -- "atspi-common", -- "atspi-proxies", -- "futures-lite", -- "zbus", --] -- --[[package]] --name = "atspi-proxies" --version = "0.9.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "d2eebcb9e7e76f26d0bcfd6f0295e1cd1e6f33bedbc5698a971db8dc43d7751c" --dependencies = [ -- "atspi-common", -- "serde", -- "zbus", --] -- - [[package]] - name = "autocfg" - version = "1.5.0" -@@ -655,8 +393,7 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" - [[package]] - name = "aws-lc-rs" - version = "1.13.3" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "5c953fe1ba023e6b7730c0d4b031d06f267f23a46167dcbd40316644b10a17ba" -+source = "git+https://gitlab.redox-os.org/njskalski/aws-lc-rs.git?branch=redox_mods#0fa71de67b9b0e1574ff754ce05fa6b93934fc09" - dependencies = [ - "aws-lc-sys", - "zeroize", -@@ -665,10 +402,9 @@ dependencies = [ - [[package]] - name = "aws-lc-sys" - version = "0.30.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "dbfd150b5dbdb988bcc8fb1fe787eb6b7ee6180ca24da683b61ea5405f3d43ff" -+source = "git+https://gitlab.redox-os.org/njskalski/aws-lc-rs.git?branch=redox_mods#0fa71de67b9b0e1574ff754ce05fa6b93934fc09" - dependencies = [ -- "bindgen 0.69.5", -+ "bindgen 0.72.0", - "cc", - "cmake", - "dunce", -@@ -756,37 +492,34 @@ dependencies = [ - - [[package]] - name = "bindgen" --version = "0.69.5" -+version = "0.71.1" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" -+checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" - dependencies = [ - "bitflags 2.9.1", - "cexpr", - "clang-sys", - "itertools 0.10.5", -- "lazy_static", -- "lazycell", -- "log", -- "prettyplease", - "proc-macro2", - "quote", - "regex", -- "rustc-hash 1.1.0", -+ "rustc-hash 2.1.1", - "shlex", - "syn", -- "which", - ] - - [[package]] - name = "bindgen" --version = "0.71.1" -+version = "0.72.0" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" -+checksum = "4f72209734318d0b619a5e0f5129918b848c416e122a3c4ce054e03cb87b726f" - dependencies = [ - "bitflags 2.9.1", - "cexpr", - "clang-sys", - "itertools 0.10.5", -+ "log", -+ "prettyplease", - "proc-macro2", - "quote", - "regex", -@@ -864,19 +597,6 @@ dependencies = [ - "objc2 0.5.2", - ] - --[[package]] --name = "blocking" --version = "1.6.2" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" --dependencies = [ -- "async-channel", -- "async-task", -- "futures-io", -- "futures-lite", -- "piper", --] -- - [[package]] - name = "bluetooth" - version = "0.0.1" -@@ -927,7 +647,7 @@ version = "0.1.3" - source = "registry+https://github.com/rust-lang/crates.io-index" - checksum = "9c150fd617830fd121919bbd500a784507e8af1bae744efcf587591c65c375d4" - dependencies = [ -- "hex 0.3.2", -+ "hex", - ] - - [[package]] -@@ -937,7 +657,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" - checksum = "f6dae8337ff67fe8ead29a28a0115605753e6a5205d4b6017e9f42f198c3c50a" - dependencies = [ - "dbus", -- "hex 0.3.2", -+ "hex", - ] - - [[package]] -@@ -1291,36 +1011,6 @@ dependencies = [ - "cc", - ] - --[[package]] --name = "cocoa" --version = "0.25.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" --dependencies = [ -- "bitflags 1.3.2", -- "block", -- "cocoa-foundation", -- "core-foundation 0.9.4", -- "core-graphics", -- "foreign-types 0.5.0", -- "libc", -- "objc", --] -- --[[package]] --name = "cocoa-foundation" --version = "0.1.2" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" --dependencies = [ -- "bitflags 1.3.2", -- "block", -- "core-foundation 0.9.4", -- "core-graphics-types", -- "libc", -- "objc", --] -- - [[package]] - name = "codespan-reporting" - version = "0.12.0" -@@ -1588,7 +1278,7 @@ dependencies = [ - "bitflags 1.3.2", - "core-foundation 0.9.4", - "core-graphics-types", -- "foreign-types 0.5.0", -+ "foreign-types", - "libc", - ] - -@@ -1611,7 +1301,7 @@ checksum = "c9d2790b5c08465d49f8dc05c8bcae9fea467855947db39b0f8145c091aaced5" - dependencies = [ - "core-foundation 0.9.4", - "core-graphics", -- "foreign-types 0.5.0", -+ "foreign-types", - "libc", - ] - -@@ -2081,9 +1771,8 @@ checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" - - [[package]] - name = "dpi" --version = "0.1.2" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" -+version = "0.1.1" -+source = "git+https://gitlab.redox-os.org/njskalski/winit.git?branch=redox_mods2#9e2e0273792b9c1feaf4492b1ab43f8ed2715ad6" - - [[package]] - name = "dtoa" -@@ -2137,9 +1826,9 @@ dependencies = [ - - [[package]] - name = "ecolor" --version = "0.32.1" -+version = "0.32.2" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "b6a7fc3172c2ef56966b2ce4f84177e159804c40b9a84de8861558ce4a59f422" -+checksum = "ebb57dec02e4cca6d70d02e29865f7e52dbd471383f4c3444dda7ee78d467360" - dependencies = [ - "bytemuck", - "emath", -@@ -2147,11 +1836,10 @@ dependencies = [ - - [[package]] - name = "egui" --version = "0.32.1" -+version = "0.32.2" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "49e2be082f77715496b4a39fdc6f5dc7491fefe2833111781b8697ea6ee919a7" -+checksum = "40df1115b8b0f3d4f1f9134a26287fd3d0e067fc18f879b8c9641aedf3eecef7" - dependencies = [ -- "accesskit", - "ahash", - "bitflags 2.9.1", - "emath", -@@ -2178,11 +1866,10 @@ dependencies = [ - - [[package]] - name = "egui-winit" --version = "0.32.1" -+version = "0.32.2" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "fe6d8b0f8d6de4d43e794e343f03bacc3908aada931f0ed6fd7041871388a590" -+checksum = "1abd8326d2be6d0e945dcfe8acd2c07d64be4c977c5e1115f902dc9cd3ff7bf5" - dependencies = [ -- "accesskit_winit", - "ahash", - "arboard", - "bytemuck", -@@ -2197,21 +1884,19 @@ dependencies = [ - - [[package]] - name = "egui_glow" --version = "0.32.1" -+version = "0.32.2" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "0ab645760288e42eab70283a5cccf44509a6f43b554351855d3c73594bfe3c23" -+checksum = "7baca67871a8b808e2eb0849282f56149673b6842702306860916bf2dd83fca1" - dependencies = [ - "ahash", - "bytemuck", - "egui", -- "egui-winit", - "glow", - "log", - "memoffset", - "profiling", - "wasm-bindgen", - "web-sys", -- "winit", - ] - - [[package]] -@@ -2222,9 +1907,9 @@ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" - - [[package]] - name = "emath" --version = "0.32.1" -+version = "0.32.2" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "935df67dc48fdeef132f2f7ada156ddc79e021344dd42c17f066b956bb88dde3" -+checksum = "b5c95b6d5571099bfa0ae9f4fdaef2c239bccb01d55339a082070259dc6f3b05" - dependencies = [ - "bytemuck", - ] -@@ -2285,33 +1970,6 @@ dependencies = [ - "cfg-if", - ] - --[[package]] --name = "endi" --version = "1.1.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" -- --[[package]] --name = "enumflags2" --version = "0.7.12" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" --dependencies = [ -- "enumflags2_derive", -- "serde", --] -- --[[package]] --name = "enumflags2_derive" --version = "0.7.12" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" --dependencies = [ -- "proc-macro2", -- "quote", -- "syn", --] -- - [[package]] - name = "env_filter" - version = "0.1.3" -@@ -2347,9 +2005,9 @@ dependencies = [ - - [[package]] - name = "epaint" --version = "0.32.1" -+version = "0.32.2" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "b66fc0a5a9d322917de9bd3ac7d426ca8aa3127fbf1e76fae5b6b25e051e06a3" -+checksum = "695fd7b458f31fe515d6a308f46b2936cae9316dc40c960a7ee31ce3a97866b9" - dependencies = [ - "ab_glyph", - "ahash", -@@ -2365,9 +2023,9 @@ dependencies = [ - - [[package]] - name = "epaint_default_fonts" --version = "0.32.1" -+version = "0.32.2" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "4f6cf8ce0fb817000aa24f5e630bda904a353536bd430b83ebc1dceee95b4a3a" -+checksum = "bbc9f86ce3eaf9b7fc7179a578af21a6a5cd2d4fd21965564e82a2d009a7dab0" - - [[package]] - name = "equivalent" -@@ -2382,7 +2040,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" - checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" - dependencies = [ - "libc", -- "windows-sys 0.52.0", -+ "windows-sys 0.59.0", - ] - - [[package]] -@@ -2412,27 +2070,6 @@ dependencies = [ - "serde", - ] - --[[package]] --name = "event-listener" --version = "5.4.1" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" --dependencies = [ -- "concurrent-queue", -- "parking", -- "pin-project-lite", --] -- --[[package]] --name = "event-listener-strategy" --version = "0.5.4" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" --dependencies = [ -- "event-listener", -- "pin-project-lite", --] -- - [[package]] - name = "exr" - version = "1.73.0" -@@ -2687,15 +2324,6 @@ dependencies = [ - "cc", - ] - --[[package]] --name = "foreign-types" --version = "0.3.2" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" --dependencies = [ -- "foreign-types-shared 0.1.1", --] -- - [[package]] - name = "foreign-types" - version = "0.5.0" -@@ -2703,7 +2331,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" - checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" - dependencies = [ - "foreign-types-macros", -- "foreign-types-shared 0.3.1", -+ "foreign-types-shared", - ] - - [[package]] -@@ -2717,12 +2345,6 @@ dependencies = [ - "syn", - ] - --[[package]] --name = "foreign-types-shared" --version = "0.1.1" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" -- - [[package]] - name = "foreign-types-shared" - version = "0.3.1" -@@ -2846,19 +2468,6 @@ version = "0.3.31" - source = "registry+https://github.com/rust-lang/crates.io-index" - checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" - --[[package]] --name = "futures-lite" --version = "2.6.1" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" --dependencies = [ -- "fastrand", -- "futures-core", -- "futures-io", -- "parking", -- "pin-project-lite", --] -- - [[package]] - name = "futures-macro" - version = "0.3.31" -@@ -2932,12 +2541,12 @@ dependencies = [ - - [[package]] - name = "gethostname" --version = "0.4.3" -+version = "1.0.2" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" -+checksum = "fc257fdb4038301ce4b9cd1b3b51704509692bb3ff716a410cbd07925d9dae55" - dependencies = [ -- "libc", -- "windows-targets 0.48.5", -+ "rustix 1.0.8", -+ "windows-targets 0.52.6", - ] - - [[package]] -@@ -3042,7 +2651,7 @@ dependencies = [ - "gobject-sys", - "libc", - "system-deps", -- "windows-sys 0.52.0", -+ "windows-sys 0.59.0", - ] - - [[package]] -@@ -3127,15 +2736,6 @@ dependencies = [ - "web-sys", - ] - --[[package]] --name = "glslopt" --version = "0.1.11" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "913662ae8335df058d56e00f11340b20fa82e03e0276587797ef325ab01e50d4" --dependencies = [ -- "cc", --] -- - [[package]] - name = "glutin_wgl_sys" - version = "0.6.1" -@@ -3590,7 +3190,7 @@ dependencies = [ - "cc", - "core-graphics", - "core-text", -- "foreign-types 0.5.0", -+ "foreign-types", - "freetype-sys", - "pkg-config", - "winapi", -@@ -3687,12 +3287,6 @@ version = "0.3.2" - source = "registry+https://github.com/rust-lang/crates.io-index" - checksum = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77" - --[[package]] --name = "hex" --version = "0.4.3" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -- - [[package]] - name = "hexf-parse" - version = "0.2.1" -@@ -3735,15 +3329,6 @@ version = "0.1.6" - source = "registry+https://github.com/rust-lang/crates.io-index" - checksum = "164f0e3568306af8b47c191406743476d9383e49d717960288cdb3469f9b7f54" - --[[package]] --name = "home" --version = "0.5.11" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" --dependencies = [ -- "windows-sys 0.59.0", --] -- - [[package]] - name = "html5ever" - version = "0.35.0" -@@ -4486,18 +4071,6 @@ dependencies = [ - "mach2", - ] - --[[package]] --name = "io-surface" --version = "0.15.1" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "861c6093cbc05599e66436aedf380bb0a23cec2180738393d3a340b80dd135ef" --dependencies = [ -- "cgl", -- "core-foundation 0.9.4", -- "leaky-cow", -- "libc", --] -- - [[package]] - name = "io-uring" - version = "0.7.9" -@@ -4512,8 +4085,7 @@ dependencies = [ - [[package]] - name = "ipc-channel" - version = "0.20.1" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "1700f6b8b9f00cdd675f32fbb3a5be882213140dfe045805273221ca266c43f8" -+source = "git+https://gitlab.redox-os.org/njskalski/ipc-channel.git?branch=redox_mods#bfcd8a88eb56706dbc61c24a53aa5b30640b3f95" - dependencies = [ - "bincode", - "crossbeam-channel", -@@ -4524,7 +4096,7 @@ dependencies = [ - "serde", - "tempfile", - "uuid", -- "windows 0.58.0", -+ "windows 0.61.3", - ] - - [[package]] -@@ -4535,7 +4107,7 @@ checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" - dependencies = [ - "hermit-abi", - "libc", -- "windows-sys 0.52.0", -+ "windows-sys 0.59.0", - ] - - [[package]] -@@ -4790,27 +4362,6 @@ version = "1.5.0" - source = "registry+https://github.com/rust-lang/crates.io-index" - checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" - --[[package]] --name = "lazycell" --version = "1.3.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" -- --[[package]] --name = "leak" --version = "0.1.2" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "bd100e01f1154f2908dfa7d02219aeab25d0b9c7fa955164192e3245255a0c73" -- --[[package]] --name = "leaky-cow" --version = "0.1.1" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "40a8225d44241fd324a8af2806ba635fc7c8a7e9a7de4d5cf3ef54e71f5926fc" --dependencies = [ -- "leak", --] -- - [[package]] - name = "lebe" - version = "0.5.2" -@@ -5130,20 +4681,6 @@ dependencies = [ - "autocfg", - ] - --[[package]] --name = "metal" --version = "0.24.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "de11355d1f6781482d027a3b4d4de7825dcedb197bf573e0596d00008402d060" --dependencies = [ -- "bitflags 1.3.2", -- "block", -- "core-graphics-types", -- "foreign-types 0.3.2", -- "log", -- "objc", --] -- - [[package]] - name = "metal" - version = "0.31.0" -@@ -5153,7 +4690,7 @@ dependencies = [ - "bitflags 2.9.1", - "block", - "core-graphics-types", -- "foreign-types 0.5.0", -+ "foreign-types", - "log", - "objc", - "paste", -@@ -5220,8 +4757,7 @@ dependencies = [ - [[package]] - name = "mozangle" - version = "0.5.3" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "0ab823731ea6297e7280dade983df955d1a8209d2deb44f505932b8873168992" -+source = "git+https://gitlab.redox-os.org/njskalski/mozangle.git?branch=redox_mods#fc58d9c521c3b9ed72ea56908daae91b119db1ad" - dependencies = [ - "bindgen 0.71.1", - "cc", -@@ -5233,7 +4769,7 @@ dependencies = [ - [[package]] - name = "mozjs" - version = "0.14.1" --source = "git+https://github.com/servo/mozjs#e0a4ee47e686f581faefb201a6fd73bd4dcd67f0" -+source = "git+https://gitlab.redox-os.org/njskalski/mozjs.git?rev=b9c2983764fb0f8f35210d3e1da9526a9980ce78#b9c2983764fb0f8f35210d3e1da9526a9980ce78" - dependencies = [ - "bindgen 0.71.1", - "cc", -@@ -5245,8 +4781,8 @@ dependencies = [ - - [[package]] - name = "mozjs_sys" --version = "0.137.0-2" --source = "git+https://github.com/servo/mozjs#e0a4ee47e686f581faefb201a6fd73bd4dcd67f0" -+version = "0.137.0-3" -+source = "git+https://gitlab.redox-os.org/njskalski/mozjs.git?rev=b9c2983764fb0f8f35210d3e1da9526a9980ce78#b9c2983764fb0f8f35210d3e1da9526a9980ce78" - dependencies = [ - "bindgen 0.71.1", - "cc", -@@ -5519,7 +5055,6 @@ dependencies = [ - "cfg-if", - "cfg_aliases", - "libc", -- "memoffset", - ] - - [[package]] -@@ -5672,7 +5207,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" - checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" - dependencies = [ - "malloc_buf", -- "objc_exception", - ] - - [[package]] -@@ -5724,7 +5258,7 @@ dependencies = [ - "objc2-core-data", - "objc2-core-image", - "objc2-foundation 0.2.2", -- "objc2-quartz-core", -+ "objc2-quartz-core 0.2.2", - ] - - [[package]] -@@ -5735,7 +5269,9 @@ checksum = "e6f29f568bec459b0ddff777cec4fe3fd8666d82d5a40ebd0ff7e66134f89bcc" - dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", -+ "objc2-core-foundation", - "objc2-foundation 0.3.1", -+ "objc2-quartz-core 0.3.1", - ] - - [[package]] -@@ -5785,6 +5321,16 @@ dependencies = [ - "objc2 0.6.1", - ] - -+[[package]] -+name = "objc2-core-graphics" -+version = "0.3.1" -+source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "989c6c68c13021b5c2d6b71456ebb0f9dc78d752e86a98da7c716f4f9470f5a4" -+dependencies = [ -+ "bitflags 2.9.1", -+ "objc2-core-foundation", -+] -+ - [[package]] - name = "objc2-core-image" - version = "0.2.2" -@@ -5794,7 +5340,7 @@ dependencies = [ - "block2", - "objc2 0.5.2", - "objc2-foundation 0.2.2", -- "objc2-metal", -+ "objc2-metal 0.2.2", - ] - - [[package]] -@@ -5809,6 +5355,17 @@ dependencies = [ - "objc2-foundation 0.2.2", - ] - -+[[package]] -+name = "objc2-core-video" -+version = "0.3.1" -+source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "1989c3e76c7e978cab0ba9e6f4961cd00ed14ca21121444cc26877403bfb6303" -+dependencies = [ -+ "bitflags 2.9.1", -+ "objc2-core-foundation", -+ "objc2-core-graphics", -+] -+ - [[package]] - name = "objc2-encode" - version = "4.1.0" -@@ -5849,6 +5406,18 @@ dependencies = [ - "objc2-core-foundation", - ] - -+[[package]] -+name = "objc2-io-surface" -+version = "0.3.1" -+source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "7282e9ac92529fa3457ce90ebb15f4ecbc383e8338060960760fa2cf75420c3c" -+dependencies = [ -+ "bitflags 2.9.1", -+ "libc", -+ "objc2 0.6.1", -+ "objc2-core-foundation", -+] -+ - [[package]] - name = "objc2-link-presentation" - version = "0.2.2" -@@ -5873,6 +5442,17 @@ dependencies = [ - "objc2-foundation 0.2.2", - ] - -+[[package]] -+name = "objc2-metal" -+version = "0.3.1" -+source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "7f246c183239540aab1782457b35ab2040d4259175bd1d0c58e46ada7b47a874" -+dependencies = [ -+ "bitflags 2.9.1", -+ "objc2 0.6.1", -+ "objc2-foundation 0.3.1", -+] -+ - [[package]] - name = "objc2-quartz-core" - version = "0.2.2" -@@ -5883,7 +5463,19 @@ dependencies = [ - "block2", - "objc2 0.5.2", - "objc2-foundation 0.2.2", -- "objc2-metal", -+ "objc2-metal 0.2.2", -+] -+ -+[[package]] -+name = "objc2-quartz-core" -+version = "0.3.1" -+source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "90ffb6a0cd5f182dc964334388560b12a57f7b74b3e2dec5e2722aa2dfb2ccd5" -+dependencies = [ -+ "bitflags 2.9.1", -+ "objc2 0.6.1", -+ "objc2-core-foundation", -+ "objc2-foundation 0.3.1", - ] - - [[package]] -@@ -5911,7 +5503,7 @@ dependencies = [ - "objc2-core-location", - "objc2-foundation 0.2.2", - "objc2-link-presentation", -- "objc2-quartz-core", -+ "objc2-quartz-core 0.2.2", - "objc2-symbols", - "objc2-uniform-type-identifiers", - "objc2-user-notifications", -@@ -5941,15 +5533,6 @@ dependencies = [ - "objc2-foundation 0.2.2", - ] - --[[package]] --name = "objc_exception" --version = "0.1.2" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" --dependencies = [ -- "cc", --] -- - [[package]] - name = "objc_id" - version = "0.1.1" -@@ -6107,15 +5690,6 @@ dependencies = [ - "paste", - ] - --[[package]] --name = "orbclient" --version = "0.3.48" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "ba0b26cec2e24f08ed8bb31519a9333140a6599b867dac464bb150bdb796fd43" --dependencies = [ -- "libredox", --] -- - [[package]] - name = "ordered-float" - version = "4.6.0" -@@ -6125,16 +5699,6 @@ dependencies = [ - "num-traits", - ] - --[[package]] --name = "ordered-stream" --version = "0.2.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" --dependencies = [ -- "futures-core", -- "pin-project-lite", --] -- - [[package]] - name = "ordermap" - version = "0.3.5" -@@ -6156,12 +5720,6 @@ dependencies = [ - "ttf-parser", - ] - --[[package]] --name = "parking" --version = "2.2.1" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" -- - [[package]] - name = "parking_lot" - version = "0.12.4" -@@ -6213,7 +5771,7 @@ dependencies = [ - [[package]] - name = "peek-poke" - version = "0.3.0" --source = "git+https://github.com/servo/webrender?branch=0.67#15318d6627e91ec19fc0a44a7434b08673413140" -+source = "git+https://gitlab.redox-os.org/njskalski/webrender.git?branch=redox_mods#a649cc9985e700dc9fd3430e38b835cc038af71b" - dependencies = [ - "euclid", - "peek-poke-derive", -@@ -6222,7 +5780,7 @@ dependencies = [ - [[package]] - name = "peek-poke-derive" - version = "0.3.0" --source = "git+https://github.com/servo/webrender?branch=0.67#15318d6627e91ec19fc0a44a7434b08673413140" -+source = "git+https://gitlab.redox-os.org/njskalski/webrender.git?branch=redox_mods#a649cc9985e700dc9fd3430e38b835cc038af71b" - dependencies = [ - "proc-macro2", - "quote", -@@ -6348,17 +5906,6 @@ version = "0.1.0" - source = "registry+https://github.com/rust-lang/crates.io-index" - checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - --[[package]] --name = "piper" --version = "0.2.4" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" --dependencies = [ -- "atomic-waker", -- "fastrand", -- "futures-io", --] -- - [[package]] - name = "pixels" - version = "0.0.1" -@@ -6626,16 +6173,6 @@ version = "2.0.1" - source = "registry+https://github.com/rust-lang/crates.io-index" - checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" - --[[package]] --name = "quick-xml" --version = "0.36.2" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "f7649a7b4df05aed9ea7ec6f628c67c9953a43869b8bc50929569b2999d443fe" --dependencies = [ -- "memchr", -- "serde", --] -- - [[package]] - name = "quick-xml" - version = "0.37.5" -@@ -7004,7 +6541,7 @@ dependencies = [ - "errno", - "libc", - "linux-raw-sys 0.4.15", -- "windows-sys 0.52.0", -+ "windows-sys 0.59.0", - ] - - [[package]] -@@ -7017,7 +6554,7 @@ dependencies = [ - "errno", - "libc", - "linux-raw-sys 0.9.4", -- "windows-sys 0.52.0", -+ "windows-sys 0.59.0", - ] - - [[package]] -@@ -7314,19 +6851,6 @@ dependencies = [ - "webxr-api", - ] - --[[package]] --name = "sctk-adwaita" --version = "0.10.1" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" --dependencies = [ -- "ab_glyph", -- "log", -- "memmap2", -- "smithay-client-toolkit", -- "tiny-skia", --] -- - [[package]] - name = "sea-query" - version = "0.32.7" -@@ -7418,17 +6942,6 @@ dependencies = [ - "serde", - ] - --[[package]] --name = "serde_repr" --version = "0.1.20" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" --dependencies = [ -- "proc-macro2", -- "quote", -- "syn", --] -- - [[package]] - name = "serde_spanned" - version = "0.6.9" -@@ -7459,19 +6972,6 @@ dependencies = [ - "serde", - ] - --[[package]] --name = "servo-display-link" --version = "0.2.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "d1060be2a0bbc35e712ec35ae98119b8def1071a5f2edbe392fd4c899bc2a5f4" --dependencies = [ -- "foreign-types 0.3.2", -- "objc", -- "objc-foundation", -- "thiserror 1.0.69", -- "time-point", --] -- - [[package]] - name = "servo-media" - version = "0.1.0" -@@ -7766,7 +7266,6 @@ dependencies = [ - name = "servoshell" - version = "0.0.1" - dependencies = [ -- "accesskit_winit", - "android_logger", - "backtrace", - "cc", -@@ -7873,15 +7372,6 @@ dependencies = [ - "libc", - ] - --[[package]] --name = "signal-hook-registry" --version = "1.4.6" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" --dependencies = [ -- "libc", --] -- - [[package]] - name = "signpost" - version = "0.1.0" -@@ -8263,31 +7753,32 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - - [[package]] - name = "surfman" --version = "0.9.8" --source = "git+https://github.com/servo/surfman?rev=f7688b4585f9e0b5d4bf8ee8e4a91e82349610b1#f7688b4585f9e0b5d4bf8ee8e4a91e82349610b1" -+version = "0.10.0" -+source = "git+https://gitlab.redox-os.org/njskalski/surfman.git?branch=redox_mods#4236949c96b4453adbe36a21a316449e413a6a21" - dependencies = [ - "bitflags 2.9.1", - "cfg_aliases", - "cgl", -- "cocoa", -- "core-foundation 0.9.4", -- "core-graphics", - "euclid", - "fnv", - "gl_generator", - "glow", -- "io-surface", - "libc", - "log", - "mach2", -- "metal 0.24.0", -- "objc", -+ "objc2 0.6.1", -+ "objc2-app-kit 0.3.1", -+ "objc2-core-foundation", -+ "objc2-core-video", -+ "objc2-foundation 0.3.1", -+ "objc2-io-surface", -+ "objc2-metal 0.3.1", -+ "objc2-quartz-core 0.3.1", - "raw-window-handle", -- "servo-display-link", -- "wayland-sys 0.30.1", -+ "wayland-sys", - "winapi", - "wio", -- "x11", -+ "x11-dl", - ] - - [[package]] -@@ -8411,7 +7902,7 @@ dependencies = [ - "getrandom 0.3.3", - "once_cell", - "rustix 1.0.8", -- "windows-sys 0.52.0", -+ "windows-sys 0.59.0", - ] - - [[package]] -@@ -8514,8 +8005,7 @@ dependencies = [ - [[package]] - name = "tikv-jemalloc-sys" - version = "0.6.0+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "cd3c60906412afa9c2b5b5a48ca6a5abe5736aec9eb48ad05037a677e52e4e2d" -+source = "git+https://gitlab.redox-os.org/njskalski/jemallocator.git?branch=redox_mods#8728022a37329295f6754323579765ccd7c73c4d" - dependencies = [ - "cc", - "libc", -@@ -8524,8 +8014,7 @@ dependencies = [ - [[package]] - name = "tikv-jemallocator" - version = "0.6.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "4cec5ff18518d81584f477e9bfdf957f5bb0979b0bac3af4ca30b5b3ae2d2865" -+source = "git+https://gitlab.redox-os.org/njskalski/jemallocator.git?branch=redox_mods#8728022a37329295f6754323579765ccd7c73c4d" - dependencies = [ - "libc", - "tikv-jemalloc-sys", -@@ -8564,12 +8053,6 @@ dependencies = [ - "time-core", - ] - --[[package]] --name = "time-point" --version = "0.1.1" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "06535c958d6abe68dc4b4ef9e6845f758fc42fe463d0093d0aca40254f03fb14" -- - [[package]] - name = "timers" - version = "0.0.1" -@@ -8928,17 +8411,6 @@ version = "1.18.0" - source = "registry+https://github.com/rust-lang/crates.io-index" - checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" - --[[package]] --name = "uds_windows" --version = "1.1.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" --dependencies = [ -- "memoffset", -- "tempfile", -- "winapi", --] -- - [[package]] - name = "uluru" - version = "3.1.0" -@@ -9396,7 +8868,7 @@ dependencies = [ - "rustix 1.0.8", - "scoped-tls", - "smallvec", -- "wayland-sys 0.31.7", -+ "wayland-sys", - ] - - [[package]] -@@ -9445,19 +8917,6 @@ dependencies = [ - "wayland-scanner", - ] - --[[package]] --name = "wayland-protocols-plasma" --version = "0.3.9" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "a07a14257c077ab3279987c4f8bb987851bf57081b93710381daea94f2c2c032" --dependencies = [ -- "bitflags 2.9.1", -- "wayland-backend", -- "wayland-client", -- "wayland-protocols", -- "wayland-scanner", --] -- - [[package]] - name = "wayland-protocols-wlr" - version = "0.3.9" -@@ -9478,22 +8937,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" - checksum = "54cb1e9dc49da91950bdfd8b848c49330536d9d1fb03d4bfec8cae50caa50ae3" - dependencies = [ - "proc-macro2", -- "quick-xml 0.37.5", -+ "quick-xml", - "quote", - ] - --[[package]] --name = "wayland-sys" --version = "0.30.1" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "96b2a02ac608e07132978689a6f9bf4214949c85998c247abadd4f4129b1aa06" --dependencies = [ -- "dlib", -- "lazy_static", -- "log", -- "pkg-config", --] -- - [[package]] - name = "wayland-sys" - version = "0.31.7" -@@ -9667,7 +9114,7 @@ dependencies = [ - [[package]] - name = "webrender" - version = "0.66.0" --source = "git+https://github.com/servo/webrender?branch=0.67#15318d6627e91ec19fc0a44a7434b08673413140" -+source = "git+https://gitlab.redox-os.org/njskalski/webrender.git?branch=redox_mods#a649cc9985e700dc9fd3430e38b835cc038af71b" - dependencies = [ - "allocator-api2", - "bincode", -@@ -9679,7 +9126,6 @@ dependencies = [ - "euclid", - "fxhash", - "gleam", -- "glslopt", - "lazy_static", - "log", - "malloc_size_of_derive", -@@ -9702,7 +9148,7 @@ dependencies = [ - [[package]] - name = "webrender_api" - version = "0.66.0" --source = "git+https://github.com/servo/webrender?branch=0.67#15318d6627e91ec19fc0a44a7434b08673413140" -+source = "git+https://gitlab.redox-os.org/njskalski/webrender.git?branch=redox_mods#a649cc9985e700dc9fd3430e38b835cc038af71b" - dependencies = [ - "app_units", - "bitflags 2.9.1", -@@ -9723,7 +9169,7 @@ dependencies = [ - [[package]] - name = "webrender_build" - version = "0.0.2" --source = "git+https://github.com/servo/webrender?branch=0.67#15318d6627e91ec19fc0a44a7434b08673413140" -+source = "git+https://gitlab.redox-os.org/njskalski/webrender.git?branch=redox_mods#a649cc9985e700dc9fd3430e38b835cc038af71b" - dependencies = [ - "bitflags 2.9.1", - "lazy_static", -@@ -9877,7 +9323,7 @@ dependencies = [ - "libc", - "libloading", - "log", -- "metal 0.31.0", -+ "metal", - "naga", - "ndk-sys 0.5.0+25.2.9519653", - "objc", -@@ -9912,18 +9358,6 @@ dependencies = [ - "web-sys", - ] - --[[package]] --name = "which" --version = "4.4.2" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" --dependencies = [ -- "either", -- "home", -- "once_cell", -- "rustix 0.38.44", --] -- - [[package]] - name = "winapi" - version = "0.3.9" -@@ -10347,10 +9781,8 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - [[package]] - name = "winit" - version = "0.30.12" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "c66d4b9ed69c4009f6321f762d6e61ad8a2389cd431b97cb1e146812e9e6c732" -+source = "git+https://gitlab.redox-os.org/njskalski/winit.git?branch=redox_mods2#9e2e0273792b9c1feaf4492b1ab43f8ed2715ad6" - dependencies = [ -- "ahash", - "android-activity", - "atomic-waker", - "bitflags 2.9.1", -@@ -10365,29 +9797,21 @@ dependencies = [ - "dpi", - "js-sys", - "libc", -- "memmap2", - "ndk", - "objc2 0.5.2", - "objc2-app-kit 0.2.2", - "objc2-foundation 0.2.2", - "objc2-ui-kit", -- "orbclient", - "percent-encoding", - "pin-project", - "raw-window-handle", - "redox_syscall 0.4.1", - "rustix 0.38.44", -- "sctk-adwaita", -- "smithay-client-toolkit", - "smol_str", - "tracing", - "unicode-segmentation", - "wasm-bindgen", - "wasm-bindgen-futures", -- "wayland-backend", -- "wayland-client", -- "wayland-protocols", -- "wayland-protocols-plasma", - "web-sys", - "web-time", - "windows-sys 0.52.0", -@@ -10435,7 +9859,7 @@ dependencies = [ - [[package]] - name = "wr_glyph_rasterizer" - version = "0.1.0" --source = "git+https://github.com/servo/webrender?branch=0.67#15318d6627e91ec19fc0a44a7434b08673413140" -+source = "git+https://gitlab.redox-os.org/njskalski/webrender.git?branch=redox_mods#a649cc9985e700dc9fd3430e38b835cc038af71b" - dependencies = [ - "core-foundation 0.9.4", - "core-graphics", -@@ -10460,7 +9884,7 @@ dependencies = [ - [[package]] - name = "wr_malloc_size_of" - version = "0.2.0" --source = "git+https://github.com/servo/webrender?branch=0.67#15318d6627e91ec19fc0a44a7434b08673413140" -+source = "git+https://gitlab.redox-os.org/njskalski/webrender.git?branch=redox_mods#a649cc9985e700dc9fd3430e38b835cc038af71b" - dependencies = [ - "app_units", - "euclid", -@@ -10481,16 +9905,6 @@ dependencies = [ - "either", - ] - --[[package]] --name = "x11" --version = "2.21.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" --dependencies = [ -- "libc", -- "pkg-config", --] -- - [[package]] - name = "x11-dl" - version = "2.21.0" -@@ -10505,23 +9919,21 @@ dependencies = [ - [[package]] - name = "x11rb" - version = "0.13.1" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" -+source = "git+https://gitlab.redox-os.org/njskalski/x11rb.git?branch=redox_mods#3195258c70608340a191c0356bd42b443cf866d8" - dependencies = [ - "as-raw-xcb-connection", - "gethostname", - "libc", - "libloading", - "once_cell", -- "rustix 0.38.44", -+ "rustix 1.0.8", - "x11rb-protocol", - ] - - [[package]] - name = "x11rb-protocol" - version = "0.13.1" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" -+source = "git+https://gitlab.redox-os.org/njskalski/x11rb.git?branch=redox_mods#3195258c70608340a191c0356bd42b443cf866d8" - - [[package]] - name = "xattr" -@@ -10632,103 +10044,6 @@ dependencies = [ - "synstructure", - ] - --[[package]] --name = "zbus" --version = "5.9.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "4bb4f9a464286d42851d18a605f7193b8febaf5b0919d71c6399b7b26e5b0aad" --dependencies = [ -- "async-broadcast", -- "async-executor", -- "async-io", -- "async-lock", -- "async-process", -- "async-recursion", -- "async-task", -- "async-trait", -- "blocking", -- "enumflags2", -- "event-listener", -- "futures-core", -- "futures-lite", -- "hex 0.4.3", -- "nix 0.30.1", -- "ordered-stream", -- "serde", -- "serde_repr", -- "tracing", -- "uds_windows", -- "windows-sys 0.59.0", -- "winnow", -- "zbus_macros", -- "zbus_names", -- "zvariant", --] -- --[[package]] --name = "zbus-lockstep" --version = "0.5.1" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "29e96e38ded30eeab90b6ba88cb888d70aef4e7489b6cd212c5e5b5ec38045b6" --dependencies = [ -- "zbus_xml", -- "zvariant", --] -- --[[package]] --name = "zbus-lockstep-macros" --version = "0.5.1" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "dc6821851fa840b708b4cbbaf6241868cabc85a2dc22f426361b0292bfc0b836" --dependencies = [ -- "proc-macro2", -- "quote", -- "syn", -- "zbus-lockstep", -- "zbus_xml", -- "zvariant", --] -- --[[package]] --name = "zbus_macros" --version = "5.9.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "ef9859f68ee0c4ee2e8cde84737c78e3f4c54f946f2a38645d0d4c7a95327659" --dependencies = [ -- "proc-macro-crate", -- "proc-macro2", -- "quote", -- "syn", -- "zbus_names", -- "zvariant", -- "zvariant_utils", --] -- --[[package]] --name = "zbus_names" --version = "4.2.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" --dependencies = [ -- "serde", -- "static_assertions", -- "winnow", -- "zvariant", --] -- --[[package]] --name = "zbus_xml" --version = "5.0.2" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "589e9a02bfafb9754bb2340a9e3b38f389772684c63d9637e76b1870377bec29" --dependencies = [ -- "quick-xml 0.36.2", -- "serde", -- "static_assertions", -- "zbus_names", -- "zvariant", --] -- - [[package]] - name = "zerocopy" - version = "0.8.26" -@@ -10832,44 +10147,3 @@ checksum = "fc1f7e205ce79eb2da3cd71c5f55f3589785cb7c79f6a03d1c8d1491bda5d089" - dependencies = [ - "zune-core", - ] -- --[[package]] --name = "zvariant" --version = "5.6.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "d91b3680bb339216abd84714172b5138a4edac677e641ef17e1d8cb1b3ca6e6f" --dependencies = [ -- "endi", -- "enumflags2", -- "serde", -- "winnow", -- "zvariant_derive", -- "zvariant_utils", --] -- --[[package]] --name = "zvariant_derive" --version = "5.6.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "3a8c68501be459a8dbfffbe5d792acdd23b4959940fc87785fb013b32edbc208" --dependencies = [ -- "proc-macro-crate", -- "proc-macro2", -- "quote", -- "syn", -- "zvariant_utils", --] -- --[[package]] --name = "zvariant_utils" --version = "3.2.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "e16edfee43e5d7b553b77872d99bc36afdda75c223ca7ad5e3fbecd82ca5fc34" --dependencies = [ -- "proc-macro2", -- "quote", -- "serde", -- "static_assertions", -- "syn", -- "winnow", --] diff --git a/Cargo.toml b/Cargo.toml -index 2dcb622934f..014eb5c0085 100644 +index 2dcb622934f..0d5f41924c0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -55,14 +55,14 @@ ctr = "0.9.2" @@ -1766,7 +7,7 @@ index 2dcb622934f..014eb5c0085 100644 data-url = "0.3" devtools_traits = { path = "components/shared/devtools" } -dpi = "0.1" -+dpi = "0.1.1" ++dpi = { git = "https://gitlab.redox-os.org/njskalski/winit.git", branch = "redox_mods2"} embedder_traits = { path = "components/shared/embedder" } encoding_rs = "0.8" env_logger = "0.11" @@ -1814,7 +55,7 @@ index 2dcb622934f..014eb5c0085 100644 wio = "0.2" wr_malloc_size_of = { git = "https://github.com/servo/webrender", branch = "0.67" } xi-unicode = "0.3.0" -@@ -222,6 +222,21 @@ lto = "thin" +@@ -222,6 +222,20 @@ lto = "thin" codegen-units = 1 [patch.crates-io] @@ -1829,14 +70,13 @@ index 2dcb622934f..014eb5c0085 100644 +# mozjs_sys = { git = "https://gitlab.redox-os.org/njskalski/mozjs.git", rev = "e2ee9c77148c3af4f11fdff9a2cbd7e449d48d33"} +# mozjs = { git = "https://gitlab.redox-os.org/njskalski/mozjs.git", branch = "redox_mods"} +x11rb = { git = "https://gitlab.redox-os.org/njskalski/x11rb.git", branch = "redox_mods"} -+libz-sys = { git = "https://github.com/rust-lang/libz-sys.git", branch = "main"} ++libz-sys = { git = "https://github.com/willnode/libz-sys.git", branch = "servo"} +winit = { git = "https://gitlab.redox-os.org/njskalski/winit.git", branch = "redox_mods2"} -+dpi = { git = "https://gitlab.redox-os.org/njskalski/winit.git", branch = "redox_mods2"} +# freetype-sys = { git = "https://github.com/PistonDevelopers/freetype-sys.git", branch = "master" } # If you need to temporarily test Servo with a local fork of some upstream # crate, add that here. Use the form: # -@@ -250,7 +265,7 @@ codegen-units = 1 +@@ -250,7 +264,7 @@ codegen-units = 1 # # [patch."https://github.com/servo/webrender"] # webrender = { path = "../webrender/webrender" } @@ -2260,7 +500,7 @@ index 36711c0f83a..474c7722812 100644 +webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } webxr-api = { workspace = true, features = ["ipc"] } diff --git a/components/shared/compositing/Cargo.toml b/components/shared/compositing/Cargo.toml -index 11ac6223766..21d7943060e 100644 +index 11ac6223766..98fe1417013 100644 --- a/components/shared/compositing/Cargo.toml +++ b/components/shared/compositing/Cargo.toml @@ -19,7 +19,7 @@ base = { workspace = true } @@ -2268,7 +508,7 @@ index 11ac6223766..21d7943060e 100644 bitflags = { workspace = true } crossbeam-channel = { workspace = true } -dpi = { version = "0.1" } -+dpi = { version = "0.1.1" } ++dpi = { workspace = true } embedder_traits = { workspace = true } euclid = { workspace = true } gleam = { workspace = true } @@ -2690,3 +930,26 @@ index b1f0b1d742e..046b016a2e2 100644 Self::Suspended => target!("Suspended"), Self::Resumed => target!("Resumed"), Self::AboutToWait => target!("AboutToWait"), +diff --git a/rust-toolchain.toml b/rust-toolchain.toml +deleted file mode 100644 +index 09d8bc760c6..00000000000 +--- a/rust-toolchain.toml ++++ /dev/null +@@ -1,17 +0,0 @@ +-[toolchain] +-# Be sure to update the 'rust-overlay' module's url in shell.nix to point to a +-# commit which supports the required rustc version and also update the version +-# in support/crown/rust-toolchain.toml when bumping this! +-channel = "1.85.0" +- +-components = [ +- "clippy", +- # For support/crown +- "llvm-tools", +- # For support/crown +- "rustc-dev", +- "rustfmt", +- "rustc-dev", +- # For rust-analyzer +- "rust-src", +-] From 1697c2f2df5bb0d41a3bf224e8d9e81fd71f2ecc Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 1 Oct 2025 14:59:53 +0700 Subject: [PATCH 2874/3180] Use upstream --- recipes/wip/web/servo/recipe.toml | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/recipes/wip/web/servo/recipe.toml b/recipes/wip/web/servo/recipe.toml index 38f73d26..92dbc12f 100644 --- a/recipes/wip/web/servo/recipe.toml +++ b/recipes/wip/web/servo/recipe.toml @@ -1,5 +1,5 @@ [source] -git = "https://gitlab.redox-os.org/njskalski/servo.git" +git = "github.com/servo/servo.git" rev = "25fea1e086c46d611cf87db439430994e4f56cd5" patches = [ "redox.patch" @@ -21,8 +21,6 @@ dependencies = [ "libpng", "libiconv", "libx11", - "libxcursor", - "libxkbcommon-x11", "libxcb", "libpng", "openssl1", @@ -62,8 +60,8 @@ export CARGO_MAKEFLAGS="-j $COOKBOOK_MAKE_JOBS" CCACHE="sccache" PACKAGE_PATH="ports/servoshell" cookbook_cargo """ -# [package] -# dependencies = [ -# "libxcursor", -# "libxkbcommon-x11", -# ] \ No newline at end of file +[package] +dependencies = [ + "libxcursor", + "libxkbcommon-x11", +] From 4effaa8da18d97cebb4d1459b7e6d7b3057f1415 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 2 Oct 2025 13:08:40 -0600 Subject: [PATCH 2875/3180] webkitgtk3: enable debug logs --- recipes/wip/libs/other/webkitgtk3/recipe.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/recipes/wip/libs/other/webkitgtk3/recipe.toml b/recipes/wip/libs/other/webkitgtk3/recipe.toml index 682b2856..0494658b 100644 --- a/recipes/wip/libs/other/webkitgtk3/recipe.toml +++ b/recipes/wip/libs/other/webkitgtk3/recipe.toml @@ -115,10 +115,12 @@ LIBS=( #TODO: enable more features cookbook_cmake \ -DCMAKE_CXX_STANDARD_LIBRARIES="${LIBS[*]}" \ + -DENABLE_ASSERTS=ON \ -DENABLE_GAMEPAD=OFF \ -DENABLE_INTROSPECTION=OFF \ -DENABLE_MEDIA_STREAM=OFF \ -DENABLE_JOURNALD_LOG=OFF \ + -DENABLE_RELEASE_LOG=ON \ -DENABLE_SPEECH_SYNTHESIS=OFF \ -DENABLE_SPELLCHECK=OFF \ -DENABLE_WEB_AUDIO=OFF \ From 079e0af2e2d6b013fb638bb1290e9cecd933ba97 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 2 Oct 2025 13:09:16 -0600 Subject: [PATCH 2876/3180] Ignore source-old directories --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index b172da92..43638a2b 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ source source.tmp source-new +source-old source.tar source.tar.tmp target From c51fad08ff420e0819923d20052a27c3e5208925 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Fri, 3 Oct 2025 13:55:38 +0700 Subject: [PATCH 2877/3180] Add mirror config --- .gitignore | 1 + Cargo.toml | 1 + README.md | 18 +++++++- src/bin/cook.rs | 6 ++- src/config.rs | 115 ++++++++++++++++++++++++++++++++++++++++++++++++ src/lib.rs | 1 + 6 files changed, 139 insertions(+), 3 deletions(-) create mode 100644 src/config.rs diff --git a/.gitignore b/.gitignore index b172da92..c1ecfbf9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ /build /repo +/cookbook.toml source source.tmp source-new diff --git a/Cargo.toml b/Cargo.toml index 9376f661..b4695bef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,6 +18,7 @@ path = "src/bin/cookbook_redoxer.rs" [lib] name = "cookbook" path = "src/lib.rs" +doctest = false [dependencies] blake3 = "=1.5.3" # 1.5.4 is incompatible with blake3 0.3 dependency from pkgar diff --git a/README.md b/README.md index 45af8844..7cba4907 100644 --- a/README.md +++ b/README.md @@ -9,10 +9,11 @@ This repository contains the system source code and packages inside the `recipes **Read [this](https://doc.redox-os.org/book/porting-applications.html) page before porting programs to Redox** In order for this repository to be useful, it must be set up with an environment -from the [redox](https://gitlab.redox-os.org/redox-os/redox) repository. +from the [redox](https://gitlab.redox-os.org/redox-os/redox) repository or inside Redox OS with `cookbook` package. [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) +- [Cookbook Config](#cookbook-config) - [Recipe Categories](#recipe-categories) - [Search Recipes](#search-recipes) - [Package Policy](#package-policy) @@ -21,6 +22,21 @@ from the [redox](https://gitlab.redox-os.org/redox-os/redox) repository. - [Repository Layout](#repository-layout) - [TODO](#todo) +### Cookbook Config + +Cookbook has special config to avoid repetitive args, place this file into `cookbook.toml` (in this cookbook directory, not redox build system) and configure it necessarily. + +```toml +# Configuration file +# This is a configuration file to avoid repetitively spelling command args. +# At the moment only mirrors here implemented but in future it will be expanded when scripts are rusted + +[[mirrors]] +# https://www.gnu.org/prep/ftp.en.html +"ftp.gnu.com" = "example.com/gnu" +"github.com/foo/bar" = "github.com/baz/bar" +``` + ### Recipe Categories The categories inside the `recipes` folder. diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 5dd888d5..267c4c66 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1,4 +1,5 @@ use cookbook::blake3::blake3_progress; +use cookbook::config::{init_config, translate_mirror}; use cookbook::recipe::{AutoDeps, BuildKind, CookRecipe, Recipe, SourceRecipe}; use pkg::package::Package; use pkg::{recipes, PackageName}; @@ -369,7 +370,7 @@ fn fetch(recipe_dir: &Path, source: &Option) -> Result Result { } fn main() { + init_config(); let mut matching = true; let mut dry_run = false; let mut fetch_only = false; diff --git a/src/config.rs b/src/config.rs new file mode 100644 index 00000000..fb07ce2a --- /dev/null +++ b/src/config.rs @@ -0,0 +1,115 @@ +use std::{collections::HashMap, fs, sync::OnceLock}; + +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Default, Deserialize, PartialEq, Serialize)] +pub struct CookbookConfig { + pub mirrors: HashMap, +} + +static CONFIG: OnceLock = OnceLock::new(); + +pub fn init_config() { + let config: CookbookConfig = { + let toml_content = fs::read_to_string("cookbook.toml").unwrap_or("".to_owned()); + toml::from_str(&toml_content).unwrap_or(CookbookConfig::default()) + }; + + CONFIG.set(config).expect("config is initialized twice"); +} + +pub fn translate_mirror(original_url: &str) -> String { + let config = CONFIG.get().expect("Configuration is not initialized"); + + let stripped_url = original_url + .strip_prefix("https://") + .or_else(|| original_url.strip_prefix("http://")) + .unwrap_or(original_url); + + let mut best_match_prefix: Option<&String> = None; + + for prefix in config.mirrors.keys() { + if stripped_url.starts_with(prefix) { + match best_match_prefix { + Some(current_best) if prefix.len() > current_best.len() => { + best_match_prefix = Some(prefix); + } + None => { + best_match_prefix = Some(prefix); + } + _ => {} + } + } + } + + if let Some(prefix) = best_match_prefix { + let mirror_base = config.mirrors.get(prefix).unwrap(); + let suffix = &stripped_url[prefix.len()..]; + let ptotocol = &original_url[..(original_url.len() - stripped_url.len())]; + return format!("{}{}{}", ptotocol, mirror_base, suffix); + } + + original_url.to_string() +} + +#[cfg(test)] +mod tests { + use super::*; + + fn setup_test_config() { + let mut mirrors = HashMap::new(); + mirrors.insert("ftp.gnu.com".to_string(), "example.com/gnu".to_string()); + mirrors.insert( + "github.com/foo/bar".to_string(), + "github.com/baz/bar".to_string(), + ); + mirrors.insert("github.com/a".to_string(), "github.com/b".to_string()); + + let app_config = CookbookConfig { mirrors }; + + // This will be called for each test. If the config is already set, + // it will do nothing, which is fine as all tests use the same config. + let _ = CONFIG.set(app_config); + } + + #[test] + fn test_exact_match() { + setup_test_config(); + assert_eq!(translate_mirror("ftp.gnu.com"), "example.com/gnu"); + assert_eq!(translate_mirror("github.com/foo/bar"), "github.com/baz/bar"); + } + + #[test] + fn test_prefix_match() { + setup_test_config(); + assert_eq!( + translate_mirror("https://github.com/a/c"), + "https://github.com/b/c" + ); + assert_eq!( + translate_mirror("https://ftp.gnu.com/path/to/file"), + "https://example.com/gnu/path/to/file" + ); + } + + #[test] + fn test_longest_prefix_match() { + setup_test_config(); + // "github.com/foo/bar" is a longer and more specific prefix than "github.com/a", + // so it should be chosen for the translation. + assert_eq!( + translate_mirror("https://github.com/foo/bar/baz"), + "https://github.com/baz/bar/baz" + ); + } + + #[test] + fn test_no_match() { + setup_test_config(); + assert_eq!(translate_mirror("www.rust-lang.org"), "www.rust-lang.org"); + assert_eq!( + translate_mirror("http://github.com/unrelated/repo"), + "http://github.com/unrelated/repo" + ); + } +} diff --git a/src/lib.rs b/src/lib.rs index 5a0b3fff..0afa53ae 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,6 @@ pub mod blake3; pub mod recipe; +pub mod config; mod progress_bar; From 26e6e0dc068ad7f3cc49139f4c2edc70c91a4d8c Mon Sep 17 00:00:00 2001 From: Wildan M Date: Fri, 3 Oct 2025 13:59:14 +0700 Subject: [PATCH 2878/3180] fmt --- src/bin/cook.rs | 5 ++++- src/lib.rs | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 267c4c66..437c00b6 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -370,7 +370,10 @@ fn fetch(recipe_dir: &Path, source: &Option) -> Result Date: Sat, 4 Oct 2025 07:57:01 -0600 Subject: [PATCH 2879/3180] Update pkgar --- pkgar | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgar b/pkgar index 44677ccb..98aecac8 160000 --- a/pkgar +++ b/pkgar @@ -1 +1 @@ -Subproject commit 44677ccbff9e315ce9de1a85ac5a30cfff1aad30 +Subproject commit 98aecac8d40b6a47429e2a5585416ad90c02e6db From 1eba0467e73adb63a6238317e3d3c6ac63d7429d Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 5 Oct 2025 12:59:32 +0700 Subject: [PATCH 2880/3180] Skip gettext docs --- recipes/tools/gettext/recipe.toml | 2 +- recipes/tools/gettext/redox.patch | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/recipes/tools/gettext/recipe.toml b/recipes/tools/gettext/recipe.toml index 276e4e83..c50a5fb1 100644 --- a/recipes/tools/gettext/recipe.toml +++ b/recipes/tools/gettext/recipe.toml @@ -8,7 +8,7 @@ patches = [ ] script = """ DYNAMIC_INIT -wget -O build-aux/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +GNU_CONFIG_GET build-aux/config.sub ( cd gettext-runtime/libasprintf && autoreconf -fvi -I${COOKBOOK_HOST_SYSROOT}/share/aclocal ) ( cd gettext-runtime/intl && autoreconf -fvi -I${COOKBOOK_HOST_SYSROOT}/share/aclocal ) ( cd gettext-runtime && autoreconf -fvi -I${COOKBOOK_HOST_SYSROOT}/share/aclocal ) diff --git a/recipes/tools/gettext/redox.patch b/recipes/tools/gettext/redox.patch index 8c01434e..8b6f307d 100644 --- a/recipes/tools/gettext/redox.patch +++ b/recipes/tools/gettext/redox.patch @@ -32,3 +32,15 @@ diff -ruwN source/gettext-tools/gnulib-lib/spawni.c source-new/gettext-tools/gnu # endif # define local_seteuid(id) seteuid (id) # define local_setegid(id) setegid (id) +diff -ruwN source/gettext-tools/Makefile.am source-new/gettext-tools/Makefile.am +--- source/gettext-tools/Makefile.am 2023-09-19 03:08:31.000000000 +0700 ++++ source-new/gettext-tools/Makefile.am 2025-10-05 12:39:33.287595871 +0700 +@@ -19,7 +19,7 @@ + AUTOMAKE_OPTIONS = 1.5 gnu no-dependencies + ACLOCAL_AMFLAGS = -I m4 -I ../gettext-runtime/m4 -I ../m4 -I gnulib-m4 -I libgrep/gnulib-m4 -I libgettextpo/gnulib-m4 + +-SUBDIRS = gnulib-lib libgrep src libgettextpo po its projects styles emacs misc man m4 tests system-tests gnulib-tests examples doc ++SUBDIRS = gnulib-lib libgrep src libgettextpo po its projects styles emacs misc man m4 + + EXTRA_DIST = misc/DISCLAIM + MOSTLYCLEANFILES = core *.stackdump From 5a73518cc279654bac78d495a9552ab488fb0da2 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sun, 5 Oct 2025 06:50:52 +0000 Subject: [PATCH 2881/3180] Enable sccache for webkitgtk3 --- recipes/wip/libs/other/webkitgtk3/recipe.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/recipes/wip/libs/other/webkitgtk3/recipe.toml b/recipes/wip/libs/other/webkitgtk3/recipe.toml index 0494658b..264acc8f 100644 --- a/recipes/wip/libs/other/webkitgtk3/recipe.toml +++ b/recipes/wip/libs/other/webkitgtk3/recipe.toml @@ -59,6 +59,8 @@ dependencies = [ ] script = """ DYNAMIC_INIT +export WEBKIT_USE_SCCACHE=1 + #TODO: why are these not automatic? LIBS=( $("${TARGET}-pkg-config" --libs epoxy) From 89bddfef81ed1bcfe2edbcbb36c6610ff75490f6 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sun, 5 Oct 2025 08:43:23 +0000 Subject: [PATCH 2882/3180] Add condition for low memory build --- recipes/wip/libs/other/webkitgtk3/recipe.toml | 66 +++++++++++-------- 1 file changed, 38 insertions(+), 28 deletions(-) diff --git a/recipes/wip/libs/other/webkitgtk3/recipe.toml b/recipes/wip/libs/other/webkitgtk3/recipe.toml index 264acc8f..0237dddf 100644 --- a/recipes/wip/libs/other/webkitgtk3/recipe.toml +++ b/recipes/wip/libs/other/webkitgtk3/recipe.toml @@ -114,36 +114,46 @@ LIBS=( $("${TARGET}-pkg-config" --libs xrandr) $("${TARGET}-pkg-config" --libs xrender) ) + #TODO: enable more features -cookbook_cmake \ - -DCMAKE_CXX_STANDARD_LIBRARIES="${LIBS[*]}" \ - -DENABLE_ASSERTS=ON \ - -DENABLE_GAMEPAD=OFF \ - -DENABLE_INTROSPECTION=OFF \ - -DENABLE_MEDIA_STREAM=OFF \ - -DENABLE_JOURNALD_LOG=OFF \ - -DENABLE_RELEASE_LOG=ON \ - -DENABLE_SPEECH_SYNTHESIS=OFF \ - -DENABLE_SPELLCHECK=OFF \ - -DENABLE_WEB_AUDIO=OFF \ - -DENABLE_WEB_CODECS=OFF \ - -DENABLE_VIDEO=OFF \ - -DPORT=GTK \ - -DUNIX=1 \ - -DUSE_AVIF=OFF \ - -DUSE_GSTREAMER_GL=OFF \ - -DUSE_GTK4=OFF \ - -DUSE_JPEGXL=OFF \ - -DUSE_LCMS=OFF \ - -DUSE_LIBBACKTRACE=OFF \ - -DUSE_LIBDRM=OFF \ - -DUSE_LIBHYPHEN=OFF \ - -DUSE_LIBSECRET=OFF \ - -DUSE_SKIA=OFF \ - -DUSE_SYSPROF_CAPTURE=OFF \ - -DUSE_SYSTEM_MALLOC=ON \ - -DUSE_SYSTEM_SYSPROF_CAPTURE=OFF \ +COOKBOOK_CMAKE_FLAGS+=( + -DENABLE_ASSERTS=ON + -DENABLE_GAMEPAD=OFF + -DENABLE_INTROSPECTION=OFF + -DENABLE_MEDIA_STREAM=OFF + -DENABLE_JOURNALD_LOG=OFF + -DENABLE_RELEASE_LOG=ON + -DENABLE_SPEECH_SYNTHESIS=OFF + -DENABLE_SPELLCHECK=OFF + -DENABLE_WEB_AUDIO=OFF + -DENABLE_WEB_CODECS=OFF + -DENABLE_VIDEO=OFF + -DPORT=GTK + -DUNIX=1 + -DUSE_AVIF=OFF + -DUSE_GSTREAMER_GL=OFF + -DUSE_GTK4=OFF + -DUSE_JPEGXL=OFF + -DUSE_LCMS=OFF + -DUSE_LIBBACKTRACE=OFF + -DUSE_LIBDRM=OFF + -DUSE_LIBHYPHEN=OFF + -DUSE_LIBSECRET=OFF + -DUSE_SKIA=OFF + -DUSE_SYSPROF_CAPTURE=OFF + -DUSE_SYSTEM_MALLOC=ON + -DUSE_SYSTEM_SYSPROF_CAPTURE=OFF -DUSE_WOFF2=OFF +) + +if (( $(free -b | awk '/^Mem:/ {print $2}') < "$COOKBOOK_MAKE_JOBS" * 4 * 1024 * 1024 * 1024 )); then + echo "Disabling unified build as RAM is not big enough" + COOKBOOK_CMAKE_FLAGS+=( -DENABLE_UNIFIED_BUILDS=OFF ) +fi + +cookbook_cmake \ + -DCMAKE_CXX_STANDARD_LIBRARIES="${LIBS[*]}" + patchelf --replace-needed "${COOKBOOK_SYSROOT}/usr/lib/libsqlite3.so" "libsqlite3.so" "${COOKBOOK_STAGE}/usr/lib/libwebkit2gtk-4.1.so" patchelf --replace-needed "${COOKBOOK_SYSROOT}/usr/lib/libsqlite3.so" "libsqlite3.so" "${COOKBOOK_STAGE}/usr/libexec/webkit2gtk-4.1/MiniBrowser" mkdir -p "${COOKBOOK_STAGE}/usr/bin" From bbb8589b0c5d2a5246fccccfe15ea0dd1ab00cf3 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 5 Oct 2025 16:24:23 +0700 Subject: [PATCH 2883/3180] Allow check build deps on make image --- src/bin/cook.rs | 2 +- src/recipe.rs | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 437c00b6..7b51a9e8 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1417,7 +1417,7 @@ fn main() { }; } - let recipes = match CookRecipe::get_build_deps_recursive(&recipe_names) { + let recipes = match CookRecipe::get_build_deps_recursive(&recipe_names, !with_package_deps) { Ok(ok) => ok, Err(err) => { eprintln!( diff --git a/src/recipe.rs b/src/recipe.rs index 06c49e68..bca680f8 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -202,11 +202,16 @@ impl CookRecipe { Ok(recipes) } - pub fn get_build_deps_recursive(names: &[PackageName]) -> Result, PackageError> { + pub fn get_build_deps_recursive( + names: &[PackageName], + mark_is_deps: bool, + ) -> Result, PackageError> { let mut packages = Self::new_recursive(names, WALK_DEPTH)?; - for package in packages.iter_mut() { - package.is_deps = !names.contains(&package.name); + if mark_is_deps { + for package in packages.iter_mut() { + package.is_deps = !names.contains(&package.name); + } } Ok(packages) From c6fc6963249ab8ffa7943c7d59f4ee3f6691f89a Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 5 Oct 2025 19:59:43 +0700 Subject: [PATCH 2884/3180] Unconditionally disable unified builds --- recipes/wip/libs/other/webkitgtk3/recipe.toml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/recipes/wip/libs/other/webkitgtk3/recipe.toml b/recipes/wip/libs/other/webkitgtk3/recipe.toml index 0237dddf..20839564 100644 --- a/recipes/wip/libs/other/webkitgtk3/recipe.toml +++ b/recipes/wip/libs/other/webkitgtk3/recipe.toml @@ -125,6 +125,7 @@ COOKBOOK_CMAKE_FLAGS+=( -DENABLE_RELEASE_LOG=ON -DENABLE_SPEECH_SYNTHESIS=OFF -DENABLE_SPELLCHECK=OFF + -DENABLE_UNIFIED_BUILDS=OFF -DENABLE_WEB_AUDIO=OFF -DENABLE_WEB_CODECS=OFF -DENABLE_VIDEO=OFF @@ -146,11 +147,6 @@ COOKBOOK_CMAKE_FLAGS+=( -DUSE_WOFF2=OFF ) -if (( $(free -b | awk '/^Mem:/ {print $2}') < "$COOKBOOK_MAKE_JOBS" * 4 * 1024 * 1024 * 1024 )); then - echo "Disabling unified build as RAM is not big enough" - COOKBOOK_CMAKE_FLAGS+=( -DENABLE_UNIFIED_BUILDS=OFF ) -fi - cookbook_cmake \ -DCMAKE_CXX_STANDARD_LIBRARIES="${LIBS[*]}" From 485b6dd82d9a1487912a0083dbaf74132642b14c Mon Sep 17 00:00:00 2001 From: Wildan M Date: Mon, 6 Oct 2025 13:49:14 +0700 Subject: [PATCH 2885/3180] Detect version and provide manual version metadata --- Cargo.lock | 1 + Cargo.toml | 1 + src/bin/cook.rs | 8 ++++++++ src/recipe.rs | 35 +++++++++++++++++++++++++++++------ 4 files changed, 39 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1b8f1fd3..0dd230b5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1888,6 +1888,7 @@ dependencies = [ "pkgar-keys 0.1.19", "redox-pkg 0.2.8", "redoxer", + "regex", "serde", "tempfile", "termion", diff --git a/Cargo.toml b/Cargo.toml index b4695bef..b334424a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,6 +30,7 @@ pkgar-core = { path = "pkgar/pkgar-core" } pkgar-keys = { path = "pkgar/pkgar-keys" } redox-pkg = { git = "https://gitlab.redox-os.org/redox-os/pkgutils" } redoxer = "0.2" +regex = "1.11" serde = { version = "=1.0.197", features = ["derive"] } termion = "4" toml = "0.8" diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 437c00b6..c1b3bc94 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1308,6 +1308,14 @@ fn package_toml( fn package_version(recipe: &Recipe) -> String { if recipe.build.kind == BuildKind::None { "".into() + } else if let Some(v) = &recipe.package.version { + v.to_string() + } else if let Some(r) = &recipe.source { + if let Some(m) = r.guess_version() { + m + } else { + "TODO".into() + } } else { "TODO".into() } diff --git a/src/recipe.rs b/src/recipe.rs index 06c49e68..deed2ce4 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -1,6 +1,7 @@ use std::{collections::BTreeSet, convert::TryInto, fs, path::PathBuf}; use pkg::{package::PackageError, recipes, PackageName}; +use regex::Regex; use serde::{ de::{value::Error as DeError, Error as DeErrorT}, Deserialize, Serialize, @@ -61,6 +62,26 @@ pub enum SourceRecipe { }, } +impl SourceRecipe { + pub fn guess_version(&self) -> Option { + match self { + SourceRecipe::Tar { + tar, + blake3: _, + patches: _, + script: _, + } => { + let re = Regex::new(r"\d+\.\d+\.\d+").unwrap(); + if let Some(arm) = re.captures(&tar) { + return Some(arm.get(0).unwrap().as_str().to_string()); + } + None + } + _ => None, + } + } +} + /// Specifies how to build a recipe #[derive(Debug, Deserialize, PartialEq, Serialize)] #[serde(tag = "template")] @@ -117,6 +138,8 @@ pub struct BuildRecipe { pub struct PackageRecipe { #[serde(default)] pub dependencies: Vec, + #[serde(default)] + pub version: Option, } /// Everything required to build a Redox package @@ -293,9 +316,7 @@ mod tests { }, dependencies: Vec::new(), }, - package: PackageRecipe { - dependencies: Vec::new(), - }, + package: PackageRecipe::default(), } ); } @@ -335,11 +356,12 @@ mod tests { }, dependencies: Vec::new(), }, - package: PackageRecipe { - dependencies: Vec::new(), - }, + package: PackageRecipe::default(), } ); + + let source = recipe.source.unwrap(); + assert_eq!(source.guess_version(), Some("1.3.3".to_string())); } #[test] @@ -366,6 +388,7 @@ mod tests { }, package: PackageRecipe { dependencies: vec![PackageName::new("gcc13").unwrap()], + version: None, }, } ); From 7eed897f825d81d907ef5e492f3f9cc14d39dc46 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 6 Oct 2025 15:30:37 -0300 Subject: [PATCH 2886/3180] Add recipes --- recipes/wip/dev/analysis/honggfuzz-rs/recipe.toml | 10 ++++++++++ recipes/wip/dev/cargo-tools/cargo-subspace/recipe.toml | 5 +++++ 2 files changed, 15 insertions(+) create mode 100644 recipes/wip/dev/analysis/honggfuzz-rs/recipe.toml create mode 100644 recipes/wip/dev/cargo-tools/cargo-subspace/recipe.toml diff --git a/recipes/wip/dev/analysis/honggfuzz-rs/recipe.toml b/recipes/wip/dev/analysis/honggfuzz-rs/recipe.toml new file mode 100644 index 00000000..de6a688d --- /dev/null +++ b/recipes/wip/dev/analysis/honggfuzz-rs/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/rust-fuzz/honggfuzz-rs" +[build] +template = "cargo" +dependencies = [ + "gnu-binutils", + "libunwind", + "xz", +] diff --git a/recipes/wip/dev/cargo-tools/cargo-subspace/recipe.toml b/recipes/wip/dev/cargo-tools/cargo-subspace/recipe.toml new file mode 100644 index 00000000..2e5ca44a --- /dev/null +++ b/recipes/wip/dev/cargo-tools/cargo-subspace/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ethowitz/cargo-subspace" +[build] +template = "cargo" From 82cdd055e48bd3eb21f1eb83334660a2903d75af Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 6 Oct 2025 15:46:34 -0300 Subject: [PATCH 2887/3180] Try to fix CMake-based recipes --- recipes/wip/analysis/cutter/recipe.toml | 17 +---------------- recipes/wip/analysis/netdata/recipe.toml | 17 +---------------- recipes/wip/codecs/svt-hevc/recipe.toml | 17 +---------------- recipes/wip/codecs/svt-vp9/recipe.toml | 17 +---------------- recipes/wip/codecs/uvg266/recipe.toml | 17 +---------------- recipes/wip/codecs/vvenc/recipe.toml | 17 +---------------- recipes/wip/codecs/x265/recipe.toml | 17 +---------------- recipes/wip/db/clickhouse/recipe.toml | 17 +---------------- recipes/wip/db/mariadb-lts/recipe.toml | 14 +------------- recipes/wip/db/mariadb/recipe.toml | 14 +------------- recipes/wip/db/mysql-server/recipe.toml | 14 +------------- 11 files changed, 11 insertions(+), 167 deletions(-) diff --git a/recipes/wip/analysis/cutter/recipe.toml b/recipes/wip/analysis/cutter/recipe.toml index b023d0a5..adb02a30 100644 --- a/recipes/wip/analysis/cutter/recipe.toml +++ b/recipes/wip/analysis/cutter/recipe.toml @@ -2,25 +2,10 @@ [source] tar = "https://github.com/rizinorg/cutter/releases/download/v2.3.4/Cutter-v2.3.4-src.tar.gz" [build] -template = "custom" +template = "cmake" dependencies = [ "libzip", "zlib", "qt5-base", "qt5-svg", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/analysis/netdata/recipe.toml b/recipes/wip/analysis/netdata/recipe.toml index d5a2aca3..73095257 100644 --- a/recipes/wip/analysis/netdata/recipe.toml +++ b/recipes/wip/analysis/netdata/recipe.toml @@ -2,24 +2,9 @@ [source] tar = "https://github.com/netdata/netdata/releases/download/v1.46.1/netdata-v1.46.1.tar.gz" [build] -template = "custom" +template = "cmake" dependencies = [ "zlib", "libuv", "libuuid", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/codecs/svt-hevc/recipe.toml b/recipes/wip/codecs/svt-hevc/recipe.toml index 160c0199..b9abe3a2 100644 --- a/recipes/wip/codecs/svt-hevc/recipe.toml +++ b/recipes/wip/codecs/svt-hevc/recipe.toml @@ -3,19 +3,4 @@ git = "https://github.com/OpenVisualCloud/SVT-HEVC" rev = "b65eba07e6dee37407631cc441561960838b0333" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/codecs/svt-vp9/recipe.toml b/recipes/wip/codecs/svt-vp9/recipe.toml index 52a4a4d4..91443aeb 100644 --- a/recipes/wip/codecs/svt-vp9/recipe.toml +++ b/recipes/wip/codecs/svt-vp9/recipe.toml @@ -2,19 +2,4 @@ [source] git = "https://github.com/OpenVisualCloud/SVT-VP9" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/codecs/uvg266/recipe.toml b/recipes/wip/codecs/uvg266/recipe.toml index 2dc7576f..308fa86a 100644 --- a/recipes/wip/codecs/uvg266/recipe.toml +++ b/recipes/wip/codecs/uvg266/recipe.toml @@ -3,19 +3,4 @@ git = "https://github.com/ultravideo/uvg266" rev = "9add13b7053a6ba3f6b22bf82728e01fc437a447" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/codecs/vvenc/recipe.toml b/recipes/wip/codecs/vvenc/recipe.toml index a039c28b..46c811d2 100644 --- a/recipes/wip/codecs/vvenc/recipe.toml +++ b/recipes/wip/codecs/vvenc/recipe.toml @@ -3,19 +3,4 @@ git = "https://github.com/fraunhoferhhi/vvenc" rev = "eea6fce28c8e822a0ece7a343a10fd5d6dd0e7bb" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/codecs/x265/recipe.toml b/recipes/wip/codecs/x265/recipe.toml index 0637eb95..dd89518d 100644 --- a/recipes/wip/codecs/x265/recipe.toml +++ b/recipes/wip/codecs/x265/recipe.toml @@ -2,19 +2,4 @@ [source] tar = "https://bitbucket.org/multicoreware/x265_git/downloads/x265_3.5.tar.gz" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/db/clickhouse/recipe.toml b/recipes/wip/db/clickhouse/recipe.toml index e975c8d3..e2308885 100644 --- a/recipes/wip/db/clickhouse/recipe.toml +++ b/recipes/wip/db/clickhouse/recipe.toml @@ -3,24 +3,9 @@ [source] tar = "https://github.com/ClickHouse/ClickHouse" [build] -template = "custom" +template = "cmake" dependencies = [ "curl", "openssl1", "xz", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/db/mariadb-lts/recipe.toml b/recipes/wip/db/mariadb-lts/recipe.toml index 3e4dffa6..8b03bd5d 100644 --- a/recipes/wip/db/mariadb-lts/recipe.toml +++ b/recipes/wip/db/mariadb-lts/recipe.toml @@ -17,17 +17,5 @@ dependencies = [ ] script = """ export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure +cookbook_cmake """ diff --git a/recipes/wip/db/mariadb/recipe.toml b/recipes/wip/db/mariadb/recipe.toml index 4b8d6556..95a2c0ad 100644 --- a/recipes/wip/db/mariadb/recipe.toml +++ b/recipes/wip/db/mariadb/recipe.toml @@ -17,17 +17,5 @@ dependencies = [ ] script = """ export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure +cookbook_cmake """ diff --git a/recipes/wip/db/mysql-server/recipe.toml b/recipes/wip/db/mysql-server/recipe.toml index 45b5d00a..408b19f2 100644 --- a/recipes/wip/db/mysql-server/recipe.toml +++ b/recipes/wip/db/mysql-server/recipe.toml @@ -10,17 +10,5 @@ dependencies = [ ] script = """ export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure +cookbook_cmake """ From 24daf75ed99f56223a2bfaccd151ebce4673b22a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 6 Oct 2025 17:07:13 -0300 Subject: [PATCH 2888/3180] Try to fix more CMake-based recipes --- recipes/wip/demos/imgui-examples/recipe.toml | 17 +------------ .../wip/dev/build-system/ccache/recipe.toml | 24 ++++--------------- .../dev/build-system/ninja-build/recipe.toml | 17 +------------ .../wip/dev/graphics/bonzomatic/recipe.toml | 17 +------------ recipes/wip/dev/ide/kdevelop/recipe.toml | 2 +- recipes/wip/dev/other/apitrace/recipe.toml | 17 +------------ recipes/wip/dev/other/cling/recipe.toml | 17 +------------ recipes/wip/dev/other/doxygen/recipe.toml | 17 +------------ recipes/wip/dev/other/gtest/recipe.toml | 17 +------------ recipes/wip/dev/other/kicad/recipe.toml | 17 +------------ recipes/wip/dev/other/level-zero/recipe.toml | 17 +------------ recipes/wip/dev/other/mnn/recipe.toml | 17 +------------ recipes/wip/dev/other/mold/recipe.toml | 18 +------------- 13 files changed, 17 insertions(+), 197 deletions(-) diff --git a/recipes/wip/demos/imgui-examples/recipe.toml b/recipes/wip/demos/imgui-examples/recipe.toml index e29d3b73..560d8ce6 100644 --- a/recipes/wip/demos/imgui-examples/recipe.toml +++ b/recipes/wip/demos/imgui-examples/recipe.toml @@ -3,19 +3,4 @@ git = "https://github.com/Qix-/imgui" branch = "cmake" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/dev/build-system/ccache/recipe.toml b/recipes/wip/dev/build-system/ccache/recipe.toml index 6e12c230..fcef5d34 100644 --- a/recipes/wip/dev/build-system/ccache/recipe.toml +++ b/recipes/wip/dev/build-system/ccache/recipe.toml @@ -4,27 +4,13 @@ [source] tar = "https://github.com/ccache/ccache/releases/download/v4.10.2/ccache-4.10.2.tar.gz" [build] -template = "custom" +template = "cmake" +cmakeflags = [ + "-DENABLE_TESTING=OFF", + "-DREDIS_STORAGE_BACKEND=OFF", +] dependencies = [ "libfmt", "xxhash", "zstd", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On - -D STATIC_LINK=ON - -D ENABLE_TESTING=OFF - -D REDIS_STORAGE_BACKEND=OFF -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/dev/build-system/ninja-build/recipe.toml b/recipes/wip/dev/build-system/ninja-build/recipe.toml index badcc36c..4aeb63b1 100644 --- a/recipes/wip/dev/build-system/ninja-build/recipe.toml +++ b/recipes/wip/dev/build-system/ninja-build/recipe.toml @@ -3,19 +3,4 @@ git = "https://github.com/ninja-build/ninja" rev = "a524bf3f6bacd1b4ad85d719eed2737d8562f27a" [build] -template = "custom" -script = """ - COOKBOOK_CONFIGURE="cmake" - COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/dev/graphics/bonzomatic/recipe.toml b/recipes/wip/dev/graphics/bonzomatic/recipe.toml index 1af4e27a..916e04f9 100644 --- a/recipes/wip/dev/graphics/bonzomatic/recipe.toml +++ b/recipes/wip/dev/graphics/bonzomatic/recipe.toml @@ -3,22 +3,7 @@ [source] git = "https://github.com/Gargaj/Bonzomatic" [build] -template = "custom" +template = "cmake" dependencies = [ "mesa", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/dev/ide/kdevelop/recipe.toml b/recipes/wip/dev/ide/kdevelop/recipe.toml index a5ff324a..dd9dfbf4 100644 --- a/recipes/wip/dev/ide/kdevelop/recipe.toml +++ b/recipes/wip/dev/ide/kdevelop/recipe.toml @@ -4,7 +4,7 @@ git = "https://invent.kde.org/kdevelop/kdevelop" rev = "3021daeb5d62bc7a7a7dec4bcc23e19d3bfdaadd" [build] -template = "custom" +template = "cmake" dependencies = [ "apr", "apr-util", diff --git a/recipes/wip/dev/other/apitrace/recipe.toml b/recipes/wip/dev/other/apitrace/recipe.toml index 3bd0f6fd..2d725264 100644 --- a/recipes/wip/dev/other/apitrace/recipe.toml +++ b/recipes/wip/dev/other/apitrace/recipe.toml @@ -3,19 +3,4 @@ git = "https://github.com/apitrace/apitrace" rev = "9352fc02bba106fbbeef9e8452ef34643c0d0764" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/dev/other/cling/recipe.toml b/recipes/wip/dev/other/cling/recipe.toml index d4830298..64c6607a 100644 --- a/recipes/wip/dev/other/cling/recipe.toml +++ b/recipes/wip/dev/other/cling/recipe.toml @@ -3,19 +3,4 @@ git = "https://github.com/vgvassilev/cling" rev = "ab81cdcc61f26dfd6a31fb141f1f4b335f6922be" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/dev/other/doxygen/recipe.toml b/recipes/wip/dev/other/doxygen/recipe.toml index 7351a226..cbd95aea 100644 --- a/recipes/wip/dev/other/doxygen/recipe.toml +++ b/recipes/wip/dev/other/doxygen/recipe.toml @@ -2,19 +2,4 @@ [source] tar = "https://www.doxygen.nl/files/doxygen-1.9.8.src.tar.gz" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/dev/other/gtest/recipe.toml b/recipes/wip/dev/other/gtest/recipe.toml index 41358860..a543a7c5 100644 --- a/recipes/wip/dev/other/gtest/recipe.toml +++ b/recipes/wip/dev/other/gtest/recipe.toml @@ -3,19 +3,4 @@ git = "https://github.com/google/googletest" rev = "f8d7d77c06936315286eb55f8de22cd23c188571" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/dev/other/kicad/recipe.toml b/recipes/wip/dev/other/kicad/recipe.toml index 5428e894..3f490f7c 100644 --- a/recipes/wip/dev/other/kicad/recipe.toml +++ b/recipes/wip/dev/other/kicad/recipe.toml @@ -4,7 +4,7 @@ git = "https://gitlab.com/kicad/code/kicad" rev = "942661fc10e172febf9d9990de2471d4b1020618" [build] -template = "custom" +template = "cmake" dependencies = [ "wxwidgets-gtk3", "cairo", @@ -16,18 +16,3 @@ dependencies = [ "curl", "ngspice", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/dev/other/level-zero/recipe.toml b/recipes/wip/dev/other/level-zero/recipe.toml index 97e7249c..2d65ef09 100644 --- a/recipes/wip/dev/other/level-zero/recipe.toml +++ b/recipes/wip/dev/other/level-zero/recipe.toml @@ -3,19 +3,4 @@ git = "https://github.com/oneapi-src/level-zero" rev = "ea5be99d8d34480447ab1e3c7efc30d6f179b123" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/dev/other/mnn/recipe.toml b/recipes/wip/dev/other/mnn/recipe.toml index 13d91009..5b07694f 100644 --- a/recipes/wip/dev/other/mnn/recipe.toml +++ b/recipes/wip/dev/other/mnn/recipe.toml @@ -3,19 +3,4 @@ git = "https://github.com/alibaba/MNN" rev = "1ea55f467fb231655cf1e08f77d4a0f1043c4c29" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/dev/other/mold/recipe.toml b/recipes/wip/dev/other/mold/recipe.toml index 2692aae6..b06c086d 100644 --- a/recipes/wip/dev/other/mold/recipe.toml +++ b/recipes/wip/dev/other/mold/recipe.toml @@ -5,20 +5,4 @@ git = "https://github.com/rui314/mold" rev = "b53197300b5bf9f02daccae536f65dda2d1431c5" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On - -DCMAKE_CXX_COMPILER=c++ -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" From 2327795aaad2a9d0ac89a4fd8e17d41f7120ca31 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 6 Oct 2025 17:41:00 -0300 Subject: [PATCH 2889/3180] Try to fix more CMake-based recipes --- recipes/wip/dev/other/ncnn/recipe.toml | 17 +---------------- recipes/wip/dev/other/netradiant/recipe.toml | 17 +---------------- recipes/wip/dev/other/opencascade/recipe.toml | 17 +---------------- recipes/wip/dev/other/protobuf/recipe.toml | 12 ++++-------- recipes/wip/dev/other/renderdoc/recipe.toml | 17 +---------------- recipes/wip/dev/other/shaderc/recipe.toml | 17 +---------------- recipes/wip/dev/other/souper/recipe.toml | 17 +---------------- recipes/wip/dev/other/zeal/recipe.toml | 17 +---------------- .../wip/dev/performance/vkpeak/recipe.toml | 17 +---------------- recipes/wip/emulators/cpu/unicorn/recipe.toml | 17 +---------------- .../game-console/nds/melonds/recipe.toml | 17 +---------------- .../nintendo/dolphin-emu/recipe.toml | 19 +------------------ .../game-console/nintendo/lime3ds/recipe.toml | 19 +------------------ 13 files changed, 16 insertions(+), 204 deletions(-) diff --git a/recipes/wip/dev/other/ncnn/recipe.toml b/recipes/wip/dev/other/ncnn/recipe.toml index 0a473e1f..d0eea2f3 100644 --- a/recipes/wip/dev/other/ncnn/recipe.toml +++ b/recipes/wip/dev/other/ncnn/recipe.toml @@ -2,24 +2,9 @@ [source] git = "https://github.com/Tencent/ncnn" [build] -template = "custom" +template = "cmake" dependencies = [ "protobuf", "libvulkan", "opencv4", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/dev/other/netradiant/recipe.toml b/recipes/wip/dev/other/netradiant/recipe.toml index 599fef2f..7c163c02 100644 --- a/recipes/wip/dev/other/netradiant/recipe.toml +++ b/recipes/wip/dev/other/netradiant/recipe.toml @@ -2,7 +2,7 @@ [source] git = "https://gitlab.com/xonotic/netradiant" [build] -template = "custom" +template = "cmake" dependencies = [ "libxml2", "mesa", @@ -11,18 +11,3 @@ dependencies = [ "libpng", "zlib", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/dev/other/opencascade/recipe.toml b/recipes/wip/dev/other/opencascade/recipe.toml index 06ff823a..c6f30839 100644 --- a/recipes/wip/dev/other/opencascade/recipe.toml +++ b/recipes/wip/dev/other/opencascade/recipe.toml @@ -3,24 +3,9 @@ [source] tar = "https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/V7_8_0.tar.gz" [build] -template = "custom" +template = "cmake" dependencies = [ "freetype2", "tcl", "tk", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/dev/other/protobuf/recipe.toml b/recipes/wip/dev/other/protobuf/recipe.toml index 7c90d452..9458f8c3 100644 --- a/recipes/wip/dev/other/protobuf/recipe.toml +++ b/recipes/wip/dev/other/protobuf/recipe.toml @@ -7,14 +7,10 @@ rev = "74211c0dfc2777318ab53c2cd2c317a2ef9012de" shallow_clone = true [build] -template = "custom" +template = "cmake" +cmakeflags = [ + "-Dprotobuf_BUILD_TESTS=OFF" +] dependencies = [ "zlib", ] -script = """ -DYNAMIC_INIT -COOKBOOK_CMAKE_FLAGS+=( - -Dprotobuf_BUILD_TESTS=OFF -) -cookbook_cmake -""" diff --git a/recipes/wip/dev/other/renderdoc/recipe.toml b/recipes/wip/dev/other/renderdoc/recipe.toml index 8c85c67e..ae13a845 100644 --- a/recipes/wip/dev/other/renderdoc/recipe.toml +++ b/recipes/wip/dev/other/renderdoc/recipe.toml @@ -3,25 +3,10 @@ git = "https://github.com/baldurk/renderdoc" rev = "5f95fb95a2a225a092372e7bd0bfd2073525d3ac" [build] -template = "custom" +template = "cmake" dependencies = [ "libxcb", "mesa", "qt5-base", "pcre", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/dev/other/shaderc/recipe.toml b/recipes/wip/dev/other/shaderc/recipe.toml index cbc9bb1e..5d7877c8 100644 --- a/recipes/wip/dev/other/shaderc/recipe.toml +++ b/recipes/wip/dev/other/shaderc/recipe.toml @@ -3,19 +3,4 @@ git = "https://github.com/google/shaderc" rev = "3882b16417077aa8eaa7b5775920e7ba4b8a224d" [build] -template = "custom" -script = """ - COOKBOOK_CONFIGURE="cmake" - COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/dev/other/souper/recipe.toml b/recipes/wip/dev/other/souper/recipe.toml index ba91a50f..0c3708fb 100644 --- a/recipes/wip/dev/other/souper/recipe.toml +++ b/recipes/wip/dev/other/souper/recipe.toml @@ -2,19 +2,4 @@ [source] git = "https://github.com/google/souper" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/dev/other/zeal/recipe.toml b/recipes/wip/dev/other/zeal/recipe.toml index 35484489..0eeb591e 100644 --- a/recipes/wip/dev/other/zeal/recipe.toml +++ b/recipes/wip/dev/other/zeal/recipe.toml @@ -2,7 +2,7 @@ [source] tar = "https://github.com/zealdocs/zeal/releases/download/v0.7.0/zeal-0.7.0.tar.xz" [build] -template = "custom" +template = "cmake" dependencies = [ "qt6-base", "qt6-webengine", @@ -10,18 +10,3 @@ dependencies = [ "sqlite3", "mesa", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/dev/performance/vkpeak/recipe.toml b/recipes/wip/dev/performance/vkpeak/recipe.toml index 9d42a8b0..3a767618 100644 --- a/recipes/wip/dev/performance/vkpeak/recipe.toml +++ b/recipes/wip/dev/performance/vkpeak/recipe.toml @@ -2,22 +2,7 @@ [source] git = "https://github.com/nihui/vkpeak" [build] -template = "custom" +template = "cmake" dependencies = [ "libvulkan", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/emulators/cpu/unicorn/recipe.toml b/recipes/wip/emulators/cpu/unicorn/recipe.toml index c5f87772..0897f738 100644 --- a/recipes/wip/emulators/cpu/unicorn/recipe.toml +++ b/recipes/wip/emulators/cpu/unicorn/recipe.toml @@ -3,19 +3,4 @@ git = "https://github.com/unicorn-engine/unicorn" rev = "e9c1c17f6df8f8f5da85ee80ad527452db5870ce" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/emulators/game-console/nds/melonds/recipe.toml b/recipes/wip/emulators/game-console/nds/melonds/recipe.toml index 46b747ea..d9d88193 100644 --- a/recipes/wip/emulators/game-console/nds/melonds/recipe.toml +++ b/recipes/wip/emulators/game-console/nds/melonds/recipe.toml @@ -4,7 +4,7 @@ git = "https://github.com/melonDS-emu/melonDS" rev = "430de6b2702bb93faa8c2004aff3fbd084db4a1e" [build] -template = "custom" +template = "cmake" dependencies = [ "curl", "libpcap", @@ -15,18 +15,3 @@ dependencies = [ "libarchive", "zstd", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/emulators/game-console/nintendo/dolphin-emu/recipe.toml b/recipes/wip/emulators/game-console/nintendo/dolphin-emu/recipe.toml index d99ca004..67548418 100644 --- a/recipes/wip/emulators/game-console/nintendo/dolphin-emu/recipe.toml +++ b/recipes/wip/emulators/game-console/nintendo/dolphin-emu/recipe.toml @@ -4,7 +4,7 @@ [source] git = "https://github.com/dolphin-emu/dolphin" [build] -template = "custom" +template = "cmake" dependencies = [ "ffmpeg6", "libevdev", @@ -18,20 +18,3 @@ dependencies = [ "libvulkan", "openal", ] -script = """ -DYNAMIC_INIT -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_CXX_COMPILER="${TARGET}-g++" - -DCMAKE_C_COMPILER="${TARGET}-gcc" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/emulators/game-console/nintendo/lime3ds/recipe.toml b/recipes/wip/emulators/game-console/nintendo/lime3ds/recipe.toml index a73772c3..621331ec 100644 --- a/recipes/wip/emulators/game-console/nintendo/lime3ds/recipe.toml +++ b/recipes/wip/emulators/game-console/nintendo/lime3ds/recipe.toml @@ -3,7 +3,7 @@ [source] git = "https://github.com/Lime3DS/Lime3DS" [build] -template = "custom" +template = "cmake" dependencies = [ "sdl2", "qt6-base", @@ -13,20 +13,3 @@ dependencies = [ "libxext", "pipewire", ] -script = """ -DYNAMIC_INIT -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_CXX_COMPILER="${TARGET}-g++" - -DCMAKE_C_COMPILER="${TARGET}-gcc" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" From 592ffa65749bec3b8d57365424d66a6127a4de9c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 6 Oct 2025 18:19:49 -0300 Subject: [PATCH 2890/3180] Try to fix more CMake-based recipes --- recipes/wip/emulators/cpu/unicorn/recipe.toml | 3 +- .../game-console/nds/melonds/recipe.toml | 4 +- .../nintendo/dolphin-emu/recipe.toml | 4 +- .../game-console/ps1/duckstation/recipe.toml | 22 ++------- .../game-console/ps2/pcsx2/recipe.toml | 22 ++------- .../game-console/ps2/play/recipe.toml | 19 +------- .../game-console/ps3/rpcs3/recipe.toml | 38 ++++++--------- .../game-console/ps4/obliteration/recipe.toml | 24 +--------- .../game-console/ps4/shadPS4/recipe.toml | 25 ++-------- .../game-console/psp/ppsspp/recipe.toml | 47 +++++++------------ .../game-console/psvita/vita3k/recipe.toml | 22 ++------- .../game-console/sega/uoyabause/recipe.toml | 20 ++------ .../game-console/snes/snes9x/recipe.toml | 21 ++------- 13 files changed, 60 insertions(+), 211 deletions(-) diff --git a/recipes/wip/emulators/cpu/unicorn/recipe.toml b/recipes/wip/emulators/cpu/unicorn/recipe.toml index 0897f738..0e0977cc 100644 --- a/recipes/wip/emulators/cpu/unicorn/recipe.toml +++ b/recipes/wip/emulators/cpu/unicorn/recipe.toml @@ -1,4 +1,5 @@ -#TODO maybe incomplete script, read https://github.com/unicorn-engine/unicorn/blob/master/docs/COMPILE.md +#TODO not compiled or tested +# build instructions: https://github.com/unicorn-engine/unicorn/blob/master/docs/COMPILE.md [source] git = "https://github.com/unicorn-engine/unicorn" rev = "e9c1c17f6df8f8f5da85ee80ad527452db5870ce" diff --git a/recipes/wip/emulators/game-console/nds/melonds/recipe.toml b/recipes/wip/emulators/game-console/nds/melonds/recipe.toml index d9d88193..58a0fc1f 100644 --- a/recipes/wip/emulators/game-console/nds/melonds/recipe.toml +++ b/recipes/wip/emulators/game-console/nds/melonds/recipe.toml @@ -1,5 +1,5 @@ -#TODO maybe incomplete script, see https://github.com/melonDS-emu/melonDS#linux -#TODO make all dependencies work +#TODO not compiled or tested yet +# build instructions: https://github.com/melonDS-emu/melonDS#linux [source] git = "https://github.com/melonDS-emu/melonDS" rev = "430de6b2702bb93faa8c2004aff3fbd084db4a1e" diff --git a/recipes/wip/emulators/game-console/nintendo/dolphin-emu/recipe.toml b/recipes/wip/emulators/game-console/nintendo/dolphin-emu/recipe.toml index 67548418..4a21189a 100644 --- a/recipes/wip/emulators/game-console/nintendo/dolphin-emu/recipe.toml +++ b/recipes/wip/emulators/game-console/nintendo/dolphin-emu/recipe.toml @@ -1,6 +1,6 @@ -#TODO probably wrong script, see https://github.com/dolphin-emu/dolphin/wiki/Building-for-Linux +#TODO not compiled or tested yet +# build instructions: https://github.com/dolphin-emu/dolphin/wiki/Building-for-Linux #TODO probably missing dependencies -#TODO make all dependencies work [source] git = "https://github.com/dolphin-emu/dolphin" [build] diff --git a/recipes/wip/emulators/game-console/ps1/duckstation/recipe.toml b/recipes/wip/emulators/game-console/ps1/duckstation/recipe.toml index 238e89df..aaa892f8 100644 --- a/recipes/wip/emulators/game-console/ps1/duckstation/recipe.toml +++ b/recipes/wip/emulators/game-console/ps1/duckstation/recipe.toml @@ -1,29 +1,13 @@ -#TODO probably wrong script, see https://github.com/stenzek/duckstation#linux-1 +#TODO not compiled or tested yet +# build instructions: https://github.com/stenzek/duckstation#linux-1 #TODO make qt6 work [source] tar = "https://github.com/stenzek/duckstation" [build] -template = "custom" +template = "cmake" dependencies = [ "sdl2", "qt6-base", "qt6-svg", "qt6-tools", ] -script = """ -DYNAMIC_INIT -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_CXX_COMPILER="${TARGET}-g++" - -DCMAKE_C_COMPILER="${TARGET}-gcc" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/emulators/game-console/ps2/pcsx2/recipe.toml b/recipes/wip/emulators/game-console/ps2/pcsx2/recipe.toml index 31166adb..e974c358 100644 --- a/recipes/wip/emulators/game-console/ps2/pcsx2/recipe.toml +++ b/recipes/wip/emulators/game-console/ps2/pcsx2/recipe.toml @@ -1,11 +1,12 @@ -#TODO probably wrong script, see https://github.com/PCSX2/pcsx2/wiki/10-Building-on-Linux +#TODO not compiled or tested yet +# build instructions: https://github.com/PCSX2/pcsx2/wiki/10-Building-on-Linux #TODO probably need patches on submodules #TODO determine dependencies - https://aur.archlinux.org/packages/pcsx2-git #TODO make all dependencies work [source] git = "https://github.com/PCSX2/pcsx2.git" [build] -template = "custom" +template = "cmake" dependencies = [ "sdl2", "xz", @@ -23,20 +24,3 @@ dependencies = [ "libxml2", "ffmpeg6", ] -script = """ -DYNAMIC_INIT - COOKBOOK_CONFIGURE="cmake" - COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_CXX_COMPILER="${TARGET}-g++" - -DCMAKE_C_COMPILER="${TARGET}-gcc" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/emulators/game-console/ps2/play/recipe.toml b/recipes/wip/emulators/game-console/ps2/play/recipe.toml index 58de310a..b65ade64 100644 --- a/recipes/wip/emulators/game-console/ps2/play/recipe.toml +++ b/recipes/wip/emulators/game-console/ps2/play/recipe.toml @@ -3,7 +3,7 @@ [source] git = "https://github.com/jpd002/Play-" [build] -template = "custom" +template = "cmake" dependencies = [ "openal", "libevdev", @@ -12,20 +12,3 @@ dependencies = [ "qt5-x11extras", "sqlite3", ] -script = """ -DYNAMIC_INIT -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_CXX_COMPILER="${TARGET}-g++" - -DCMAKE_C_COMPILER="${TARGET}-gcc" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/emulators/game-console/ps3/rpcs3/recipe.toml b/recipes/wip/emulators/game-console/ps3/rpcs3/recipe.toml index cf3994a9..1dee01cb 100644 --- a/recipes/wip/emulators/game-console/ps3/rpcs3/recipe.toml +++ b/recipes/wip/emulators/game-console/ps3/rpcs3/recipe.toml @@ -1,10 +1,22 @@ -#TODO finish script, see https://github.com/RPCS3/rpcs3/blob/master/BUILDING.md#linux-1 +#TODO not compiled or tested yet #TODO missing dependencies +# build instructions: https://github.com/RPCS3/rpcs3/blob/master/BUILDING.md#linux-1 # customization - https://wiki.rpcs3.net/index.php?title=Help:Building_RPCS3#CMake_Build_Options [source] git = "https://github.com/RPCS3/rpcs3" [build] -template = "custom" +template = "cmake" +cmakeflags = [ + "-DUSE_NATIVE_INSTRUCTIONS=OFF", + "-DWITH_LLVM=OFF", + "-DUSE_ALSA=OFF", + "-DUSE_PULSE=OFF", + "-DUSE_LIBEVDEV=OFF", + "-DUSE_DISCORD_RPC=OFF", + "-DBUILD_LLVM_SUBMODULE=OFF", + "-DUSE_SYSTEM_FFMPEG=ON", + "-DUSE_VULKAN=OFF", +] dependencies = [ "mesa-x11", "qt6-base", @@ -22,25 +34,3 @@ dependencies = [ "pulseaudio", "ffmpeg6", ] -script = """ -DYNAMIC_INIT - COOKBOOK_CONFIGURE="cmake" - COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_CXX_COMPILER="${TARGET}-g++" - -DCMAKE_C_COMPILER="${TARGET}-gcc" - -DCMAKE_INSTALL_PREFIX="/" - -DUSE_NATIVE_INSTRUCTIONS=OFF - -DWITH_LLVM=OFF - -DUSE_ALSA=OFF - -DUSE_PULSE=OFF - -DUSE_LIBEVDEV=OFF - -DUSE_DISCORD_RPC=OFF - -DBUILD_LLVM_SUBMODULE=OFF - -DUSE_SYSTEM_FFMPEG=ON - -DUSE_VULKAN=OFF -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" \ No newline at end of file diff --git a/recipes/wip/emulators/game-console/ps4/obliteration/recipe.toml b/recipes/wip/emulators/game-console/ps4/obliteration/recipe.toml index 78770451..7a361a3c 100644 --- a/recipes/wip/emulators/game-console/ps4/obliteration/recipe.toml +++ b/recipes/wip/emulators/game-console/ps4/obliteration/recipe.toml @@ -1,27 +1,5 @@ -#TODO maybe incomplete script, see https://github.com/obhq/obliteration#configure-build-system -#TODO probably missing dependencies -#TODO make qt6 work +#TODO missing script, see: https://github.com/obhq/obliteration/blob/main/docs/building.md [source] git = "https://github.com/obhq/obliteration" [build] template = "custom" -dependencies = [ - "qt6-base", -] -script = """ -DYNAMIC_INIT -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_CXX_COMPILER="${TARGET}-g++" - -DCMAKE_C_COMPILER="${TARGET}-gcc" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/emulators/game-console/ps4/shadPS4/recipe.toml b/recipes/wip/emulators/game-console/ps4/shadPS4/recipe.toml index ed53ad0c..d9020247 100644 --- a/recipes/wip/emulators/game-console/ps4/shadPS4/recipe.toml +++ b/recipes/wip/emulators/game-console/ps4/shadPS4/recipe.toml @@ -1,10 +1,13 @@ -#TODO maybe incomplete script for cmake +#TODO not compiled or tested #TODO missing dependencies # build instructions - https://github.com/shadps4-emu/shadPS4/blob/main/documents/building-linux.md [source] git = "https://github.com/shadps4-emu/shadPS4" [build] -template = "custom" +template = "cmake" +cmakeflags = [ + "-DENABLE_QT_GUI=ON" +] dependencies = [ "pulseaudio", "openal", @@ -18,21 +21,3 @@ dependencies = [ "qt6-multimedia", "libvulkan", ] -script = """ -DYNAMIC_INIT -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_CXX_COMPILER="${TARGET}-g++" - -DCMAKE_C_COMPILER="${TARGET}-gcc" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On - -DENABLE_QT_GUI=ON -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/emulators/game-console/psp/ppsspp/recipe.toml b/recipes/wip/emulators/game-console/psp/ppsspp/recipe.toml index 8d1a4d79..b8d6a00c 100644 --- a/recipes/wip/emulators/game-console/psp/ppsspp/recipe.toml +++ b/recipes/wip/emulators/game-console/psp/ppsspp/recipe.toml @@ -1,33 +1,13 @@ #TODO not compiled or tested yet +# build instructions: https://github.com/hrydgard/ppsspp/wiki/Build-instructions +#git = "https://github.com/jackpot51/ppsspp" # wip port to orbital [source] -git = "https://github.com/jackpot51/ppsspp" - +git = "https://github.com/hrydgard/ppsspp" [build] -template = "custom" -dependencies = [ - "liborbital", - "llvm18", - "mesa", - "mesa-glu", - "sdl2", - "zlib", - "glew", -] -script = """ -DYNAMIC_INIT -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_CXX_COMPILER="${TARGET}-g++" - -DCMAKE_C_COMPILER="${TARGET}-gcc" +template = "cmake" +cmakeflags = [ -DCMAKE_C_FLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" -DCMAKE_CXX_FLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -DOPENGL_opengl_LIBRARY="/dev/null" -DOPENGL_glx_LIBRARY="/dev/null" -DUSE_DISCORD=OFF @@ -39,7 +19,16 @@ COOKBOOK_CONFIGURE_FLAGS=( -DUSING_GLES2=OFF -DUSING_X11_VULKAN=OFF -DUNIX=ON - "${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +] +dependencies = [ + #"liborbital", + "llvm18", + "mesa", + "mesa-glu", + "sdl2", + "sdl2-ttf", + "zlib", + "glew", + "fontconfig", + "curl", +] diff --git a/recipes/wip/emulators/game-console/psvita/vita3k/recipe.toml b/recipes/wip/emulators/game-console/psvita/vita3k/recipe.toml index efdc97f5..65de26d1 100644 --- a/recipes/wip/emulators/game-console/psvita/vita3k/recipe.toml +++ b/recipes/wip/emulators/game-console/psvita/vita3k/recipe.toml @@ -1,27 +1,11 @@ -#TODO probalby wrong script, see https://github.com/Vita3K/Vita3K/blob/master/building.md#linux +#TODO not compiled or tested yet +# build instructions: https://github.com/Vita3K/Vita3K/blob/master/building.md#linux [source] git = "https://github.com/Vita3K/Vita3K" [build] -template = "custom" +template = "cmake" dependencies = [ "sdl2", "gtk3", "openssl1", ] -script = """ -DYNAMIC_INIT -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_CXX_COMPILER="${TARGET}-g++" - -DCMAKE_C_COMPILER="${TARGET}-gcc" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/emulators/game-console/sega/uoyabause/recipe.toml b/recipes/wip/emulators/game-console/sega/uoyabause/recipe.toml index 2eb3b900..f5d3c5c6 100644 --- a/recipes/wip/emulators/game-console/sega/uoyabause/recipe.toml +++ b/recipes/wip/emulators/game-console/sega/uoyabause/recipe.toml @@ -1,27 +1,13 @@ -#TODO maybe incomplete script, see https://github.com/devmiyax/yabause/blob/master/yabause/README.LIN#L77 +#TODO not compiled or tested yet +# build instructions: https://github.com/devmiyax/yabause/blob/master/yabause/README.LIN#L77 #TODO make gtk2 work [source] git = "https://github.com/devmiyax/yabause" [build] -template = "custom" +template = "cmake" dependencies = [ "gtk2", "sdl2", "mesa", "gtkglext", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/emulators/game-console/snes/snes9x/recipe.toml b/recipes/wip/emulators/game-console/snes/snes9x/recipe.toml index a44ada03..a00eedcb 100644 --- a/recipes/wip/emulators/game-console/snes/snes9x/recipe.toml +++ b/recipes/wip/emulators/game-console/snes/snes9x/recipe.toml @@ -1,10 +1,10 @@ -#TODO probably wrong script, see https://github.com/snes9xgit/snes9x/wiki/Compiling -#TODO make gtk3 work +#TODO not compiled or tested +# build instructions: https://github.com/snes9xgit/snes9x/wiki/Compiling [source] git = "https://github.com/snes9xgit/snes9x" rev = "8b82d487937d9ea39f7229d280c6f6686c415fe7" [build] -template = "custom" +template = "cmake" dependencies = [ "sdl2", "gtk3mm", @@ -13,18 +13,3 @@ dependencies = [ "libx11", "libepoxy", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" From 5ee02311d55e36df3deba6c167a2741e96ef6533 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 6 Oct 2025 18:47:11 -0300 Subject: [PATCH 2891/3180] Update recipe TODOs --- recipes/wip/analysis/cutter/recipe.toml | 3 ++- recipes/wip/analysis/netdata/recipe.toml | 3 ++- recipes/wip/codecs/svt-hevc/recipe.toml | 3 ++- recipes/wip/codecs/svt-vp9/recipe.toml | 3 ++- recipes/wip/codecs/uvg266/recipe.toml | 3 ++- recipes/wip/codecs/vvenc/recipe.toml | 3 ++- recipes/wip/codecs/x265/recipe.toml | 3 ++- recipes/wip/db/clickhouse/recipe.toml | 3 ++- recipes/wip/db/mariadb-lts/recipe.toml | 2 +- recipes/wip/db/mariadb/recipe.toml | 2 +- recipes/wip/db/mysql-server/recipe.toml | 3 ++- recipes/wip/dev/build-system/ccache/recipe.toml | 2 +- recipes/wip/dev/build-system/ninja-build/recipe.toml | 3 ++- recipes/wip/dev/graphics/bonzomatic/recipe.toml | 7 +++++-- recipes/wip/dev/ide/kdevelop/recipe.toml | 3 ++- recipes/wip/dev/other/apitrace/recipe.toml | 3 ++- recipes/wip/dev/other/cling/recipe.toml | 3 ++- recipes/wip/dev/other/doxygen/recipe.toml | 3 ++- recipes/wip/dev/other/gtest/recipe.toml | 3 ++- recipes/wip/dev/other/kicad/recipe.toml | 3 ++- 20 files changed, 40 insertions(+), 21 deletions(-) diff --git a/recipes/wip/analysis/cutter/recipe.toml b/recipes/wip/analysis/cutter/recipe.toml index adb02a30..33fc1fcf 100644 --- a/recipes/wip/analysis/cutter/recipe.toml +++ b/recipes/wip/analysis/cutter/recipe.toml @@ -1,4 +1,5 @@ -#TODO maybe incomplete script, see https://cutter.re/docs/building.html +#TODO not compiled or tested +# build instructions: https://cutter.re/docs/building.html [source] tar = "https://github.com/rizinorg/cutter/releases/download/v2.3.4/Cutter-v2.3.4-src.tar.gz" [build] diff --git a/recipes/wip/analysis/netdata/recipe.toml b/recipes/wip/analysis/netdata/recipe.toml index 73095257..fc4f14dd 100644 --- a/recipes/wip/analysis/netdata/recipe.toml +++ b/recipes/wip/analysis/netdata/recipe.toml @@ -1,4 +1,5 @@ -#TODO maybe incomplete script, see https://learn.netdata.cloud/docs/developer-and-contributor-corner/build-the-netdata-agent-yourself/compile-from-source-code#building-netdata +#TODO not compiled or tested +# build instructions: https://learn.netdata.cloud/docs/developer-and-contributor-corner/build-the-netdata-agent-yourself/compile-from-source-code#building-netdata [source] tar = "https://github.com/netdata/netdata/releases/download/v1.46.1/netdata-v1.46.1.tar.gz" [build] diff --git a/recipes/wip/codecs/svt-hevc/recipe.toml b/recipes/wip/codecs/svt-hevc/recipe.toml index b9abe3a2..78c54ef7 100644 --- a/recipes/wip/codecs/svt-hevc/recipe.toml +++ b/recipes/wip/codecs/svt-hevc/recipe.toml @@ -1,4 +1,5 @@ -#TODO maybe incomplete script, see https://github.com/OpenVisualCloud/SVT-HEVC#linux-operating-systems-64-bit +#TODO not compiled or tested +# build instructions: https://github.com/OpenVisualCloud/SVT-HEVC#linux-operating-systems-64-bit [source] git = "https://github.com/OpenVisualCloud/SVT-HEVC" rev = "b65eba07e6dee37407631cc441561960838b0333" diff --git a/recipes/wip/codecs/svt-vp9/recipe.toml b/recipes/wip/codecs/svt-vp9/recipe.toml index 91443aeb..47574a5f 100644 --- a/recipes/wip/codecs/svt-vp9/recipe.toml +++ b/recipes/wip/codecs/svt-vp9/recipe.toml @@ -1,4 +1,5 @@ -#TODO maybe incomplete script, see https://github.com/OpenVisualCloud/SVT-VP9#linux-operating-systems-64-bit +#TODO not compiled or tested +# build instructions: https://github.com/OpenVisualCloud/SVT-VP9#linux-operating-systems-64-bit [source] git = "https://github.com/OpenVisualCloud/SVT-VP9" [build] diff --git a/recipes/wip/codecs/uvg266/recipe.toml b/recipes/wip/codecs/uvg266/recipe.toml index 308fa86a..4005e380 100644 --- a/recipes/wip/codecs/uvg266/recipe.toml +++ b/recipes/wip/codecs/uvg266/recipe.toml @@ -1,4 +1,5 @@ -#TODO maybe incomplete script, see https://github.com/ultravideo/uvg266#compiling-uvg266 +#TODO not compiled or tested +# build instructions: https://github.com/ultravideo/uvg266#compiling-uvg266 [source] git = "https://github.com/ultravideo/uvg266" rev = "9add13b7053a6ba3f6b22bf82728e01fc437a447" diff --git a/recipes/wip/codecs/vvenc/recipe.toml b/recipes/wip/codecs/vvenc/recipe.toml index 46c811d2..0a2eb417 100644 --- a/recipes/wip/codecs/vvenc/recipe.toml +++ b/recipes/wip/codecs/vvenc/recipe.toml @@ -1,4 +1,5 @@ -#TODO maybe incomplete script, see https://github.com/fraunhoferhhi/vvenc/wiki/Build#build-using-plain-cmake +#TODO not compiled or tested +# build instructions: https://github.com/fraunhoferhhi/vvenc/wiki/Build#build-using-plain-cmake [source] git = "https://github.com/fraunhoferhhi/vvenc" rev = "eea6fce28c8e822a0ece7a343a10fd5d6dd0e7bb" diff --git a/recipes/wip/codecs/x265/recipe.toml b/recipes/wip/codecs/x265/recipe.toml index dd89518d..ce61981d 100644 --- a/recipes/wip/codecs/x265/recipe.toml +++ b/recipes/wip/codecs/x265/recipe.toml @@ -1,4 +1,5 @@ -#TODO maybe incomplete script, see https://bitbucket.org/multicoreware/x265_git/src/master/build/README.txt#lines-68 +#TODO not compiled or tested +# build instructions: https://bitbucket.org/multicoreware/x265_git/src/master/build/README.txt#lines-68 [source] tar = "https://bitbucket.org/multicoreware/x265_git/downloads/x265_3.5.tar.gz" [build] diff --git a/recipes/wip/db/clickhouse/recipe.toml b/recipes/wip/db/clickhouse/recipe.toml index e2308885..5c52357e 100644 --- a/recipes/wip/db/clickhouse/recipe.toml +++ b/recipes/wip/db/clickhouse/recipe.toml @@ -1,4 +1,5 @@ -#TODO maybe incomplete script, see https://clickhouse.com/docs/en/development/build#how-to-build-clickhouse-on-any-linux +#TODO not compiled or tested +# build instructions: https://clickhouse.com/docs/en/development/build#how-to-build-clickhouse-on-any-linux #TODO probably disable some submodules to use our recipes [source] tar = "https://github.com/ClickHouse/ClickHouse" diff --git a/recipes/wip/db/mariadb-lts/recipe.toml b/recipes/wip/db/mariadb-lts/recipe.toml index 8b03bd5d..3a2e48ae 100644 --- a/recipes/wip/db/mariadb-lts/recipe.toml +++ b/recipes/wip/db/mariadb-lts/recipe.toml @@ -1,4 +1,4 @@ -#TODO probably wrong script, see: +#TODO not compiled or tested # https://mariadb.com/kb/en/generic-build-instructions/ # https://mariadb.com/kb/en/cross-compiling-mariadb/ [source] diff --git a/recipes/wip/db/mariadb/recipe.toml b/recipes/wip/db/mariadb/recipe.toml index 95a2c0ad..39038da8 100644 --- a/recipes/wip/db/mariadb/recipe.toml +++ b/recipes/wip/db/mariadb/recipe.toml @@ -1,4 +1,4 @@ -#TODO probably wrong script, see: +#TODO not compiled or tested # https://mariadb.com/kb/en/generic-build-instructions/ # https://mariadb.com/kb/en/cross-compiling-mariadb/ [source] diff --git a/recipes/wip/db/mysql-server/recipe.toml b/recipes/wip/db/mysql-server/recipe.toml index 408b19f2..4c978500 100644 --- a/recipes/wip/db/mysql-server/recipe.toml +++ b/recipes/wip/db/mysql-server/recipe.toml @@ -1,4 +1,5 @@ -#TODO maybe incomplete script, see https://dev.mysql.com/doc/refman/8.2/en/installing-source-distribution.html +#TODO not compiled or tested +# build instructions: https://dev.mysql.com/doc/refman/8.2/en/installing-source-distribution.html [source] tar = "https://dev.mysql.com/downloads/file/?id=523432" [build] diff --git a/recipes/wip/dev/build-system/ccache/recipe.toml b/recipes/wip/dev/build-system/ccache/recipe.toml index fcef5d34..f4420088 100644 --- a/recipes/wip/dev/build-system/ccache/recipe.toml +++ b/recipes/wip/dev/build-system/ccache/recipe.toml @@ -1,4 +1,4 @@ -#TODO maybe incomplete script +#TODO not compiled or tested #TODO missing dependencies - https://github.com/ccache/ccache/blob/master/doc/INSTALL.md#dependencies # build instructions - https://github.com/ccache/ccache/blob/master/doc/INSTALL.md [source] diff --git a/recipes/wip/dev/build-system/ninja-build/recipe.toml b/recipes/wip/dev/build-system/ninja-build/recipe.toml index 4aeb63b1..bfed73af 100644 --- a/recipes/wip/dev/build-system/ninja-build/recipe.toml +++ b/recipes/wip/dev/build-system/ninja-build/recipe.toml @@ -1,4 +1,5 @@ -#TODO probably wrong script, see https://github.com/ninja-build/ninja#building-ninja-itself +#TODO not compiled or tested +# build instructions: https://github.com/ninja-build/ninja#building-ninja-itself [source] git = "https://github.com/ninja-build/ninja" rev = "a524bf3f6bacd1b4ad85d719eed2737d8562f27a" diff --git a/recipes/wip/dev/graphics/bonzomatic/recipe.toml b/recipes/wip/dev/graphics/bonzomatic/recipe.toml index 916e04f9..d12b8a2d 100644 --- a/recipes/wip/dev/graphics/bonzomatic/recipe.toml +++ b/recipes/wip/dev/graphics/bonzomatic/recipe.toml @@ -1,9 +1,12 @@ -#TODO port to orbital +#TODO not compiled or tested +#TODO missing dependencies # build instructions - https://github.com/Gargaj/Bonzomatic#linux [source] git = "https://github.com/Gargaj/Bonzomatic" [build] template = "cmake" dependencies = [ - "mesa", + "libx11", + "libalsa", + "mesa-glu", ] diff --git a/recipes/wip/dev/ide/kdevelop/recipe.toml b/recipes/wip/dev/ide/kdevelop/recipe.toml index dd9dfbf4..4d63d0ea 100644 --- a/recipes/wip/dev/ide/kdevelop/recipe.toml +++ b/recipes/wip/dev/ide/kdevelop/recipe.toml @@ -1,5 +1,6 @@ -#TODO missing script for building, see https://kdevelop.org/build-it/ +#TODO not compiled or tested #TODO probably missing dependencies, see https://packages.debian.org/source/trixie/kdevelop +# build instructions: https://kdevelop.org/build-it/ [source] git = "https://invent.kde.org/kdevelop/kdevelop" rev = "3021daeb5d62bc7a7a7dec4bcc23e19d3bfdaadd" diff --git a/recipes/wip/dev/other/apitrace/recipe.toml b/recipes/wip/dev/other/apitrace/recipe.toml index 2d725264..a9545615 100644 --- a/recipes/wip/dev/other/apitrace/recipe.toml +++ b/recipes/wip/dev/other/apitrace/recipe.toml @@ -1,4 +1,5 @@ -#TODO maybe incomplete script, see https://github.com/apitrace/apitrace/blob/master/docs/INSTALL.markdown#linux +#TODO not compiled or tested +# build instructions: https://github.com/apitrace/apitrace/blob/master/docs/INSTALL.markdown#linux [source] git = "https://github.com/apitrace/apitrace" rev = "9352fc02bba106fbbeef9e8452ef34643c0d0764" diff --git a/recipes/wip/dev/other/cling/recipe.toml b/recipes/wip/dev/other/cling/recipe.toml index 64c6607a..9c3b3286 100644 --- a/recipes/wip/dev/other/cling/recipe.toml +++ b/recipes/wip/dev/other/cling/recipe.toml @@ -1,4 +1,5 @@ -#TODO maybe incomplete script, see https://github.com/vgvassilev/cling#building-from-source +#TODO not compiled or tested +# build instructions: https://github.com/vgvassilev/cling#building-from-source [source] git = "https://github.com/vgvassilev/cling" rev = "ab81cdcc61f26dfd6a31fb141f1f4b335f6922be" diff --git a/recipes/wip/dev/other/doxygen/recipe.toml b/recipes/wip/dev/other/doxygen/recipe.toml index cbd95aea..ec69b8bf 100644 --- a/recipes/wip/dev/other/doxygen/recipe.toml +++ b/recipes/wip/dev/other/doxygen/recipe.toml @@ -1,4 +1,5 @@ -#TODO maybe incomplete script, see https://www.doxygen.nl/manual/install.html#install_src_unix +#TODO not compiled or tested +# build instructions: https://www.doxygen.nl/manual/install.html#install_src_unix [source] tar = "https://www.doxygen.nl/files/doxygen-1.9.8.src.tar.gz" [build] diff --git a/recipes/wip/dev/other/gtest/recipe.toml b/recipes/wip/dev/other/gtest/recipe.toml index a543a7c5..b9370e25 100644 --- a/recipes/wip/dev/other/gtest/recipe.toml +++ b/recipes/wip/dev/other/gtest/recipe.toml @@ -1,4 +1,5 @@ -#TODO probably wrong script, see https://github.com/google/googletest/blob/main/googletest/README.md +#TODO not compiled or tested +# build instructions: https://github.com/google/googletest/blob/main/googletest/README.md [source] git = "https://github.com/google/googletest" rev = "f8d7d77c06936315286eb55f8de22cd23c188571" diff --git a/recipes/wip/dev/other/kicad/recipe.toml b/recipes/wip/dev/other/kicad/recipe.toml index 3f490f7c..8dfecdca 100644 --- a/recipes/wip/dev/other/kicad/recipe.toml +++ b/recipes/wip/dev/other/kicad/recipe.toml @@ -1,5 +1,6 @@ -#TODO maybe incomplete script, see https://dev-docs.kicad.org/en/build/linux/ +#TODO not compiled or tested #TODO maybe missing dependencies, see https://dev-docs.kicad.org/en/build/getting-started/ +# build instructions: https://dev-docs.kicad.org/en/build/linux/ [source] git = "https://gitlab.com/kicad/code/kicad" rev = "942661fc10e172febf9d9990de2471d4b1020618" From ba7c6468b3ca49ddc3b081601060941561452a28 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 7 Oct 2025 12:36:57 -0300 Subject: [PATCH 2892/3180] Update recipe TODOs --- recipes/wip/dev/other/level-zero/recipe.toml | 3 ++- recipes/wip/dev/other/mnn/recipe.toml | 3 ++- recipes/wip/dev/other/mold/recipe.toml | 3 +-- recipes/wip/dev/other/ncnn/recipe.toml | 3 ++- recipes/wip/dev/other/netradiant/recipe.toml | 3 ++- recipes/wip/dev/other/opencascade/recipe.toml | 3 ++- recipes/wip/dev/other/renderdoc/recipe.toml | 3 ++- recipes/wip/dev/other/shaderc/recipe.toml | 3 ++- recipes/wip/dev/other/souper/recipe.toml | 3 ++- recipes/wip/dev/other/zeal/recipe.toml | 3 ++- recipes/wip/dev/performance/vkpeak/recipe.toml | 3 ++- 11 files changed, 21 insertions(+), 12 deletions(-) diff --git a/recipes/wip/dev/other/level-zero/recipe.toml b/recipes/wip/dev/other/level-zero/recipe.toml index 2d65ef09..75e9fe63 100644 --- a/recipes/wip/dev/other/level-zero/recipe.toml +++ b/recipes/wip/dev/other/level-zero/recipe.toml @@ -1,4 +1,5 @@ -#TODO maybe incomplete script, see https://github.com/oneapi-src/level-zero#building-and-installing +#TODO not compiled or tested +# build instructions: https://github.com/oneapi-src/level-zero#building-and-installing [source] git = "https://github.com/oneapi-src/level-zero" rev = "ea5be99d8d34480447ab1e3c7efc30d6f179b123" diff --git a/recipes/wip/dev/other/mnn/recipe.toml b/recipes/wip/dev/other/mnn/recipe.toml index 5b07694f..605457a0 100644 --- a/recipes/wip/dev/other/mnn/recipe.toml +++ b/recipes/wip/dev/other/mnn/recipe.toml @@ -1,4 +1,5 @@ -#TODO maybe incomplete script, lacking English build instructions +#TODO not compiled or tested +# lacking English build instructions [source] git = "https://github.com/alibaba/MNN" rev = "1ea55f467fb231655cf1e08f77d4a0f1043c4c29" diff --git a/recipes/wip/dev/other/mold/recipe.toml b/recipes/wip/dev/other/mold/recipe.toml index b06c086d..7234cb24 100644 --- a/recipes/wip/dev/other/mold/recipe.toml +++ b/recipes/wip/dev/other/mold/recipe.toml @@ -1,5 +1,4 @@ -#TODO compilation error -#TODO maybe incomplete script +#TODO not compiled or tested # build instructions - https://github.com/rui314/mold#how-to-build [source] git = "https://github.com/rui314/mold" diff --git a/recipes/wip/dev/other/ncnn/recipe.toml b/recipes/wip/dev/other/ncnn/recipe.toml index d0eea2f3..b363536e 100644 --- a/recipes/wip/dev/other/ncnn/recipe.toml +++ b/recipes/wip/dev/other/ncnn/recipe.toml @@ -1,4 +1,5 @@ -#TODO maybe incomplete script, see https://github.com/Tencent/ncnn/wiki/how-to-build#build-for-linux +#TODO not compiled or tested +# build instructions: https://github.com/Tencent/ncnn/wiki/how-to-build#build-for-linux [source] git = "https://github.com/Tencent/ncnn" [build] diff --git a/recipes/wip/dev/other/netradiant/recipe.toml b/recipes/wip/dev/other/netradiant/recipe.toml index 7c163c02..eb1bf987 100644 --- a/recipes/wip/dev/other/netradiant/recipe.toml +++ b/recipes/wip/dev/other/netradiant/recipe.toml @@ -1,4 +1,5 @@ -#TODO maybe incomplete script, see https://gitlab.com/xonotic/netradiant#advanced-compilation +#TODO not compiled or tested +# build instructions: https://gitlab.com/xonotic/netradiant#advanced-compilation [source] git = "https://gitlab.com/xonotic/netradiant" [build] diff --git a/recipes/wip/dev/other/opencascade/recipe.toml b/recipes/wip/dev/other/opencascade/recipe.toml index c6f30839..1f475757 100644 --- a/recipes/wip/dev/other/opencascade/recipe.toml +++ b/recipes/wip/dev/other/opencascade/recipe.toml @@ -1,4 +1,5 @@ -#TODO maybe incomplete script, see https://dev.opencascade.org/doc/overview/html/build_upgrade__building_occt.html +#TODO not compiled or tested +# build instructions: https://dev.opencascade.org/doc/overview/html/build_upgrade__building_occt.html #TODO missing dependencies, see https://dev.opencascade.org/doc/overview/html/build_upgrade_building_3rdparty.html#build_3rdparty_linux [source] tar = "https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/V7_8_0.tar.gz" diff --git a/recipes/wip/dev/other/renderdoc/recipe.toml b/recipes/wip/dev/other/renderdoc/recipe.toml index ae13a845..1fb82abe 100644 --- a/recipes/wip/dev/other/renderdoc/recipe.toml +++ b/recipes/wip/dev/other/renderdoc/recipe.toml @@ -1,4 +1,5 @@ -#TODO probably wrong script, see https://github.com/baldurk/renderdoc/blob/v1.x/docs/CONTRIBUTING/Compiling.md#linux +#TODO not compiled or tested +# build instructions: https://github.com/baldurk/renderdoc/blob/v1.x/docs/CONTRIBUTING/Compiling.md#linux [source] git = "https://github.com/baldurk/renderdoc" rev = "5f95fb95a2a225a092372e7bd0bfd2073525d3ac" diff --git a/recipes/wip/dev/other/shaderc/recipe.toml b/recipes/wip/dev/other/shaderc/recipe.toml index 5d7877c8..6dde3f79 100644 --- a/recipes/wip/dev/other/shaderc/recipe.toml +++ b/recipes/wip/dev/other/shaderc/recipe.toml @@ -1,4 +1,5 @@ -#TODO Probably wrong script, see https://github.com/google/shaderc#getting-and-building-shaderc +#TODO not compiled or tested +# build instructions: https://github.com/google/shaderc#getting-and-building-shaderc [source] git = "https://github.com/google/shaderc" rev = "3882b16417077aa8eaa7b5775920e7ba4b8a224d" diff --git a/recipes/wip/dev/other/souper/recipe.toml b/recipes/wip/dev/other/souper/recipe.toml index 0c3708fb..2ebf5547 100644 --- a/recipes/wip/dev/other/souper/recipe.toml +++ b/recipes/wip/dev/other/souper/recipe.toml @@ -1,4 +1,5 @@ -#TODO probably wrong script, see https://github.com/google/souper#building-souper +#TODO not compiled or tested +# build instructions: https://github.com/google/souper#building-souper [source] git = "https://github.com/google/souper" [build] diff --git a/recipes/wip/dev/other/zeal/recipe.toml b/recipes/wip/dev/other/zeal/recipe.toml index 0eeb591e..0f4eebf9 100644 --- a/recipes/wip/dev/other/zeal/recipe.toml +++ b/recipes/wip/dev/other/zeal/recipe.toml @@ -1,4 +1,5 @@ -#TODO maybe incomplete script, see https://github.com/zealdocs/zeal#build-instructions +#TODO not compiled or tested +# build instructions: https://github.com/zealdocs/zeal#build-instructions [source] tar = "https://github.com/zealdocs/zeal/releases/download/v0.7.0/zeal-0.7.0.tar.xz" [build] diff --git a/recipes/wip/dev/performance/vkpeak/recipe.toml b/recipes/wip/dev/performance/vkpeak/recipe.toml index 3a767618..6ba6cbb8 100644 --- a/recipes/wip/dev/performance/vkpeak/recipe.toml +++ b/recipes/wip/dev/performance/vkpeak/recipe.toml @@ -1,4 +1,5 @@ -#TODO maybe incomplete script, see https://github.com/nihui/vkpeak#build-from-source +#TODO not compiled or tested +# build instructions: https://github.com/nihui/vkpeak#build-from-source [source] git = "https://github.com/nihui/vkpeak" [build] From 44a7e9174a3c42252bae3ad8315c439a0259d657 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 7 Oct 2025 14:13:06 -0300 Subject: [PATCH 2893/3180] Try to fix more CMake-based recipes --- recipes/wip/emulators/pc/darling/recipe.toml | 27 +++++-------------- recipes/wip/finance/monero/xmrig/recipe.toml | 26 +++++------------- recipes/wip/fuse/cvmfs/recipe.toml | 20 +++----------- recipes/wip/fuse/dwarfs/recipe.toml | 22 +++------------ recipes/wip/games/action/opentomb/recipe.toml | 20 +++----------- .../wip/games/fps/betterspades/recipe.toml | 20 +++----------- recipes/wip/games/fps/et-legacy/recipe.toml | 22 +++------------ recipes/wip/games/fps/gzdoom/recipe.toml | 19 +------------ .../wip/games/fps/openspades-free/recipe.toml | 26 +++++++----------- .../wip/games/fps/zerospades-free/recipe.toml | 26 +++++++----------- 10 files changed, 50 insertions(+), 178 deletions(-) diff --git a/recipes/wip/emulators/pc/darling/recipe.toml b/recipes/wip/emulators/pc/darling/recipe.toml index c6f74ba5..32847606 100644 --- a/recipes/wip/emulators/pc/darling/recipe.toml +++ b/recipes/wip/emulators/pc/darling/recipe.toml @@ -1,10 +1,13 @@ -#TODO probably wrong script, see https://docs.darlinghq.org/build-instructions.html#building-and-installing +#TODO not compiled or tested +# build instructions: https://docs.darlinghq.org/build-instructions.html#building-and-installing #TODO require Git LFS installed on host -#TODO port to orbital? [source] git = "https://github.com/darlinghq/darling" [build] -template = "custom" +template = "cmake" +cmakeflags = [ + "-DTARGET_i386=OFF" +] dependencies = [ "libfuse3", "libevdev", @@ -20,21 +23,3 @@ dependencies = [ "openssl1", "libxkbfile", ] -script = """ -DYNAMIC_INIT -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_CXX_COMPILER="${TARGET}-g++" - -DCMAKE_C_COMPILER="${TARGET}-gcc" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On - -DTARGET_i386=OFF -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/finance/monero/xmrig/recipe.toml b/recipes/wip/finance/monero/xmrig/recipe.toml index 5c62f184..991da573 100644 --- a/recipes/wip/finance/monero/xmrig/recipe.toml +++ b/recipes/wip/finance/monero/xmrig/recipe.toml @@ -1,27 +1,15 @@ -#TODO probably wrong script, see https://xmrig.com/docs/miner/build/ubuntu -#TODO customization - https://xmrig.com/docs/miner/cmake-options +#TODO not compiled or tested +# build instructions: https://xmrig.com/docs/miner/build/ubuntu +# customization - https://xmrig.com/docs/miner/cmake-options [source] git = "https://github.com/xmrig/xmrig" rev = "8084ff37a5c8935c649a2e362da0fe570c79a2c2" [build] -template = "custom" +template = "cmake" +#cmakeflags = [ +# "-DOPENSSL_ROOT_DIR=${COOKBOOK_SYSROOT}" # test if the program need this +#] dependencies = [ "openssl1", "libuv", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On - -DOPENSSL_ROOT_DIR="${COOKBOOK_SYSROOT}" -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/fuse/cvmfs/recipe.toml b/recipes/wip/fuse/cvmfs/recipe.toml index 4c35fa3b..3a6813bb 100644 --- a/recipes/wip/fuse/cvmfs/recipe.toml +++ b/recipes/wip/fuse/cvmfs/recipe.toml @@ -1,23 +1,9 @@ -#TODO maybe incomplete script, see https://cvmfs.readthedocs.io/en/stable/cpt-quickstart.html#building-from-source +#TODO not compiled or tested +# build instructions: https://cvmfs.readthedocs.io/en/stable/cpt-quickstart.html#building-from-source [source] tar = "https://ecsft.cern.ch/dist/cvmfs/cvmfs-2.11.2/source.tar.gz" [build] -template = "custom" +template = "cmake" dependencies = [ "libfuse3", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/fuse/dwarfs/recipe.toml b/recipes/wip/fuse/dwarfs/recipe.toml index a97778b2..dd362395 100644 --- a/recipes/wip/fuse/dwarfs/recipe.toml +++ b/recipes/wip/fuse/dwarfs/recipe.toml @@ -1,13 +1,14 @@ -#TODO probably wrong script, see https://github.com/mhx/dwarfs#building +#TODO not compiled or tested +# build instructions: https://github.com/mhx/dwarfs#building #TODO missing dependencies, see https://github.com/mhx/dwarfs#dependencies [source] tar = "https://github.com/mhx/dwarfs/releases/download/v0.7.2/dwarfs-0.7.2.tar.xz" [build] -template = "custom" +template = "cmake" dependencies = [ "libfuse3", "boost", - "brotli", + "libbrotli", "libevent", "openssl1", "lz4", @@ -15,18 +16,3 @@ dependencies = [ "libunwind", "libfmt", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/games/action/opentomb/recipe.toml b/recipes/wip/games/action/opentomb/recipe.toml index e71bedeb..da961873 100644 --- a/recipes/wip/games/action/opentomb/recipe.toml +++ b/recipes/wip/games/action/opentomb/recipe.toml @@ -1,8 +1,9 @@ -#TODO probably wrong script, see https://github.com/opentomb/OpenTomb#compiling +#TODO not compiled or tested +# build instructions: https://github.com/opentomb/OpenTomb#compiling [source] git = "https://github.com/opentomb/OpenTomb" [build] -template = "custom" +template = "cmake" dependencies = [ "sdl2", "libpng", @@ -10,18 +11,3 @@ dependencies = [ "openal", "mesa", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/games/fps/betterspades/recipe.toml b/recipes/wip/games/fps/betterspades/recipe.toml index 1e223a36..d7ed6d1c 100644 --- a/recipes/wip/games/fps/betterspades/recipe.toml +++ b/recipes/wip/games/fps/betterspades/recipe.toml @@ -1,9 +1,10 @@ +#TODO not compiled or tested #TODO probably missing dependencies, see https://github.com/xtreme8000/BetterSpades#build-requirements -#TODO probably wrong script, see https://github.com/xtreme8000/BetterSpades#linux +# build instructions: https://github.com/xtreme8000/BetterSpades#linux [source] git = "https://github.com/xtreme8000/BetterSpades" [build] -template = "custom" +template = "cmake" dependencies = [ "glfw3", "openal", @@ -12,18 +13,3 @@ dependencies = [ "glew", "mesa", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/games/fps/et-legacy/recipe.toml b/recipes/wip/games/fps/et-legacy/recipe.toml index 80089128..bff1a020 100644 --- a/recipes/wip/games/fps/et-legacy/recipe.toml +++ b/recipes/wip/games/fps/et-legacy/recipe.toml @@ -1,28 +1,12 @@ -#TODO maybe incomplete script, see https://github.com/etlegacy/etlegacy#compile-and-install +#TODO not compiled or tested +# build instructions: https://github.com/etlegacy/etlegacy#compile-and-install [source] git = "https://github.com/etlegacy/etlegacy" rev = "956269f4c13ebe31ba2a0f0b805588383209bd5b" [build] -template = "custom" +template = "cmake" dependencies = [ "sdl2", "openssl1", "mesa", ] -script = """ -DYNAMIC_INIT -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_CXX_COMPILER="${TARGET}-g++" - -DCMAKE_C_COMPILER="${TARGET}-gcc" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/games/fps/gzdoom/recipe.toml b/recipes/wip/games/fps/gzdoom/recipe.toml index bca60685..bbb08c2b 100644 --- a/recipes/wip/games/fps/gzdoom/recipe.toml +++ b/recipes/wip/games/fps/gzdoom/recipe.toml @@ -3,7 +3,7 @@ git = "https://github.com/ZDoom/gzdoom" rev = "6ce809efe2902e43ceaa7031b875225d3a0367de" [build] -template = "custom" +template = "cmake" dependencies = [ "sdl2", "mesa", @@ -11,20 +11,3 @@ dependencies = [ "openal", "zmusic", ] -script = """ -DYNAMIC_INIT -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_CXX_COMPILER="${TARGET}-g++" - -DCMAKE_C_COMPILER="${TARGET}-gcc" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/games/fps/openspades-free/recipe.toml b/recipes/wip/games/fps/openspades-free/recipe.toml index e87b0148..2c85ccf5 100644 --- a/recipes/wip/games/fps/openspades-free/recipe.toml +++ b/recipes/wip/games/fps/openspades-free/recipe.toml @@ -1,6 +1,5 @@ -#TODO probably wrong script, see https://github.com/yvt/openspades#on-unixes-from-source -#TODO port GLEW to Orbital -#TODO add the FOSS assets on the script, see https://github.com/DeathByDenim/openspades-free-pak +#TODO not compiled or tested +# build instructions: https://github.com/yvt/openspades#on-unixes-from-source [source] git = "https://github.com/yvt/openspades" [build] @@ -16,21 +15,16 @@ dependencies = [ "opusfile", "libjpeg", "openal", + "curl", + "libxinerama", + "libxft", ] script = """ DYNAMIC_INIT - COOKBOOK_CONFIGURE="cmake" - COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_CXX_COMPILER="${TARGET}-g++" - -DCMAKE_C_COMPILER="${TARGET}-gcc" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" +COOKBOOK_CMAKE_FLAGS+=( + -DOPENSPADES_NONFREE_RESOURCES=OFF ) -cookbook_configure +cookbook_cmake +wget https://github.com/DeathByDenim/openspades-free-pak/releases/download/latest/pak001-Free.pak \ +"${COOKBOOK_STAGE}"/usr/share/openspades/Resources """ diff --git a/recipes/wip/games/fps/zerospades-free/recipe.toml b/recipes/wip/games/fps/zerospades-free/recipe.toml index 5e3505b0..401f8af6 100644 --- a/recipes/wip/games/fps/zerospades-free/recipe.toml +++ b/recipes/wip/games/fps/zerospades-free/recipe.toml @@ -1,6 +1,5 @@ -#TODO probably wrong script, see https://github.com/yvt/openspades#on-unixes-from-source -#TODO port GLEW to Orbital -#TODO add the FOSS assets on the script, see https://github.com/DeathByDenim/openspades-free-pak +#TODO not compiled or tested +# build instructions: https://github.com/yvt/openspades#on-unixes-from-source [source] git = "https://github.com/siecvi/zerospades" [build] @@ -16,21 +15,16 @@ dependencies = [ "opusfile", "libjpeg", "openal", + "curl", + "libxinerama", + "libxft", ] script = """ DYNAMIC_INIT - COOKBOOK_CONFIGURE="cmake" - COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_CXX_COMPILER="${TARGET}-g++" - -DCMAKE_C_COMPILER="${TARGET}-gcc" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" +COOKBOOK_CMAKE_FLAGS+=( + -DOPENSPADES_NONFREE_RESOURCES=OFF ) -cookbook_configure +cookbook_cmake +wget https://github.com/DeathByDenim/openspades-free-pak/releases/download/latest/pak001-Free.pak \ +"${COOKBOOK_STAGE}"/usr/share/openspades/Resources """ From 290d196d02b7a02adfe166ea104118844604d99c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 7 Oct 2025 15:01:01 -0300 Subject: [PATCH 2894/3180] Try to fix more CMake-based recipes --- recipes/wip/games/fps/rbdoom3-bfg/recipe.toml | 20 ++----------- .../wip/games/fps/unvanquished/recipe.toml | 18 +++--------- .../music/performous-composer/recipe.toml | 19 ++----------- .../wip/games/music/performous/recipe.toml | 19 ++----------- recipes/wip/games/music/stepmania/recipe.toml | 19 ++----------- .../wip/games/open-world/cytopia/recipe.toml | 17 +---------- .../wip/games/open-world/luanti/recipe.toml | 28 +++++-------------- .../wip/games/other/shockolate/recipe.toml | 18 +++--------- .../wip/games/racing/supertuxkart/recipe.toml | 26 +++++------------ .../wip/games/servers/cuberite/recipe.toml | 20 ++----------- .../wip/games/space/endless-sky/recipe.toml | 20 ++----------- .../strategy/ship-of-harkinian/recipe.toml | 21 ++------------ recipes/wip/games/strategy/warsow/recipe.toml | 20 ++----------- 13 files changed, 44 insertions(+), 221 deletions(-) diff --git a/recipes/wip/games/fps/rbdoom3-bfg/recipe.toml b/recipes/wip/games/fps/rbdoom3-bfg/recipe.toml index 692427e4..4380a4c6 100644 --- a/recipes/wip/games/fps/rbdoom3-bfg/recipe.toml +++ b/recipes/wip/games/fps/rbdoom3-bfg/recipe.toml @@ -1,28 +1,14 @@ -#TODO maybe incomplete script, see https://github.com/RobertBeckebans/RBDOOM-3-BFG#compiling-on-linux- +#TODO not compiled or tested +# build instructions: https://github.com/RobertBeckebans/RBDOOM-3-BFG#compiling-on-linux- #TODO require the Vulkan SDK, see https://vulkan.lunarg.com/ [source] git = "https://github.com/RobertBeckebans/RBDOOM-3-BFG" rev = "39ae1202b4e61ccb8d8e59609f5cd62b04a62a58" [build] -template = "custom" +template = "cmake" dependencies = [ "sdl2", "openal", "ffmpeg6", "libvulkan", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/games/fps/unvanquished/recipe.toml b/recipes/wip/games/fps/unvanquished/recipe.toml index cd12c6ec..be786ce6 100644 --- a/recipes/wip/games/fps/unvanquished/recipe.toml +++ b/recipes/wip/games/fps/unvanquished/recipe.toml @@ -1,4 +1,5 @@ -#TODO maybe incomplete script, see https://github.com/DaemonEngine/Daemon#build-instructions +#TODO not compiled or tested +# build instructions: https://github.com/DaemonEngine/Daemon#build-instructions # data files - https://github.com/Unvanquished/Unvanquished#downloading-the-games-assets [source] git = "https://github.com/DaemonEngine/Daemon" @@ -22,17 +23,6 @@ dependencies = [ "opusfile", ] script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure +DYNAMIC_INIT +cookbook_cmake """ diff --git a/recipes/wip/games/music/performous-composer/recipe.toml b/recipes/wip/games/music/performous-composer/recipe.toml index c44ceeb3..5393e0f2 100644 --- a/recipes/wip/games/music/performous-composer/recipe.toml +++ b/recipes/wip/games/music/performous-composer/recipe.toml @@ -1,25 +1,10 @@ -#TODO maybe incomplete script +#TODO not compiled or tested # build instructions - https://github.com/performous/performous/wiki/Composer [source] git = "https://github.com/performous/composer" [build] -template = "custom" +template = "cmake" dependencies = [ "qt5-base", "ffmpeg6", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/games/music/performous/recipe.toml b/recipes/wip/games/music/performous/recipe.toml index 98d11372..c1f4c393 100644 --- a/recipes/wip/games/music/performous/recipe.toml +++ b/recipes/wip/games/music/performous/recipe.toml @@ -1,11 +1,11 @@ -#TODO maybe incomplete script +#TODO not compiled or tested # build instructions - https://github.com/performous/performous/wiki/Building-and-installing-from-source#build-and-install # dependencies - https://github.com/performous/performous/wiki/Building-and-installing-from-source#installing-build-dependencies [source] git = "https://github.com/performous/performous" branch = "1.3.1" [build] -template = "custom" +template = "cmake" dependencies = [ "openblas", "fftw", @@ -24,18 +24,3 @@ dependencies = [ "aubio", "libfmt", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/games/music/stepmania/recipe.toml b/recipes/wip/games/music/stepmania/recipe.toml index c36e5dd4..f0bd55fc 100644 --- a/recipes/wip/games/music/stepmania/recipe.toml +++ b/recipes/wip/games/music/stepmania/recipe.toml @@ -1,10 +1,10 @@ -#TODO maybe incomplete script +#TODO not compiled or tested # build instructions - https://github.com/stepmania/stepmania/wiki/Compiling-StepMania-Linux # dependencies - https://github.com/stepmania/stepmania/wiki/Linux-Dependencies [source] git = "https://github.com/stepmania/stepmania" [build] -template = "custom" +template = "cmake" dependencies = [ "mesa", "mesa-glu", @@ -23,18 +23,3 @@ dependencies = [ "gtk3", "libmad", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/games/open-world/cytopia/recipe.toml b/recipes/wip/games/open-world/cytopia/recipe.toml index edb20126..ea8d2772 100644 --- a/recipes/wip/games/open-world/cytopia/recipe.toml +++ b/recipes/wip/games/open-world/cytopia/recipe.toml @@ -3,7 +3,7 @@ [source] git = "https://github.com/CytopiaTeam/Cytopia" [build] -template = "custom" +template = "cmake" dependencies = [ "sdl2", "sdl2-ttf", @@ -16,18 +16,3 @@ dependencies = [ "libnoise", "imgui", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/games/open-world/luanti/recipe.toml b/recipes/wip/games/open-world/luanti/recipe.toml index 1d4c658b..c591c12d 100644 --- a/recipes/wip/games/open-world/luanti/recipe.toml +++ b/recipes/wip/games/open-world/luanti/recipe.toml @@ -1,10 +1,14 @@ -#TODO probably wrong script, see https://github.com/minetest/minetest/blob/master/doc/compiling/linux.md -#TODO customization - https://github.com/minetest/minetest/tree/master/doc/compiling#cmake-options +#TODO not compiled or tested +# build instructions: https://github.com/minetest/minetest/blob/master/doc/compiling/linux.md +# customization - https://github.com/minetest/minetest/tree/master/doc/compiling#cmake-options [source] git = "https://github.com/minetest/minetest" branch = "stable-5" +script = """ +git clone --depth 1 https://github.com/minetest/irrlicht.git "${COOKBOOK_SOURCE}"/lib/irrlichtmt +""" [build] -template = "custom" +template = "cmake" dependencies = [ "freetype2", "sqlite3", @@ -17,21 +21,3 @@ dependencies = [ "curl", "zstd", ] -script = """ -DYNAMIC_INIT -git clone --depth 1 https://github.com/minetest/irrlicht.git "${COOKBOOK_SOURCE}"/lib/irrlichtmt - COOKBOOK_CONFIGURE="cmake" - COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_CXX_COMPILER="${TARGET}-g++" - -DCMAKE_C_COMPILER="${TARGET}-gcc" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/games/other/shockolate/recipe.toml b/recipes/wip/games/other/shockolate/recipe.toml index 89267100..11b7e365 100644 --- a/recipes/wip/games/other/shockolate/recipe.toml +++ b/recipes/wip/games/other/shockolate/recipe.toml @@ -9,22 +9,14 @@ dependencies = [ "libvorbis", "mesa", "sdl2", - "sdl2_mixer", + "sdl2-mixer", "zlib", ] script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True +DYNAMIC_INIT +COOKBOOK_CMAKE_FLAGS+=( -DCMAKE_C_FLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" -DCMAKE_CXX_FLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" - -DCMAKE_EXE_LINKER_FLAGS="-L${COOKBOOK_SYSROOT}/lib -static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -DENABLE_FLUIDSYNTH=OFF -DENABLE_SDL2=ON -DENABLE_SOUND=ON @@ -32,10 +24,8 @@ COOKBOOK_CONFIGURE_FLAGS=( -DOPENGL_opengl_LIBRARY="-lgl" -DOPENGL_glx_LIBRARY="-lglx" -DSDL2_MIXER_LIBRARIES="-lSDL2_mixer -lvorbisfile -lvorbis -logg -lSDL2 -lorbital $("${TARGET}-pkg-config" --libs osmesa)" - "${COOKBOOK_SOURCE}" ) -cmake "${COOKBOOK_CONFIGURE_FLAGS[@]}" -make -j "${COOKBOOK_MAKE_JOBS}" +cookbook_cmake mkdir -pv "${COOKBOOK_STAGE}/home/user/systemshock" cp -v systemshock "${COOKBOOK_STAGE}/home/user/systemshock/systemshock" cp -rv "${COOKBOOK_SOURCE}/shaders" "${COOKBOOK_STAGE}/home/user/systemshock/shaders" diff --git a/recipes/wip/games/racing/supertuxkart/recipe.toml b/recipes/wip/games/racing/supertuxkart/recipe.toml index 34f0bda9..c10bc850 100644 --- a/recipes/wip/games/racing/supertuxkart/recipe.toml +++ b/recipes/wip/games/racing/supertuxkart/recipe.toml @@ -1,8 +1,13 @@ -#TODO probably wrong script, see https://github.com/supertuxkart/stk-code/blob/master/INSTALL.md#compiling +#TODO not compiled or tested +# build instructions: https://github.com/supertuxkart/stk-code/blob/master/INSTALL.md#compiling [source] tar = "https://github.com/supertuxkart/stk-code/releases/download/1.4/SuperTuxKart-1.4-src.tar.xz" [build] -template = "custom" +template = "cmake" +cmakeflags = [ + "-DNO_SHADERC=ON", + "-DBUILD_RECORDER=OFF", +] dependencies = [ "openal", "libogg", @@ -16,20 +21,3 @@ dependencies = [ "libjpeg", "sdl2", ] -script = """ - COOKBOOK_CONFIGURE="cmake" - COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On - -DNO_SHADERC=on - -DBUILD_RECORDER=off -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/games/servers/cuberite/recipe.toml b/recipes/wip/games/servers/cuberite/recipe.toml index 3a0e97b7..7b19d796 100644 --- a/recipes/wip/games/servers/cuberite/recipe.toml +++ b/recipes/wip/games/servers/cuberite/recipe.toml @@ -1,20 +1,6 @@ -#TODO probably wrong script, see https://github.com/cuberite/cuberite/blob/master/COMPILING.md#building-1 +#TODO not compiled or tested +# build instructions: https://github.com/cuberite/cuberite/blob/master/COMPILING.md#building-1 [source] git = "https://github.com/cuberite/cuberite" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/games/space/endless-sky/recipe.toml b/recipes/wip/games/space/endless-sky/recipe.toml index d102de66..de879817 100644 --- a/recipes/wip/games/space/endless-sky/recipe.toml +++ b/recipes/wip/games/space/endless-sky/recipe.toml @@ -1,9 +1,10 @@ -#TODO maybe incomplete script, see https://github.com/endless-sky/endless-sky/blob/master/docs/readme-cmake.md#building-the-game +#TODO not compiled or tested +# build instructions: https://github.com/endless-sky/endless-sky/blob/master/docs/readme-cmake.md#building-the-game [source] git = "https://github.com/endless-sky/endless-sky" rev = "95e72950e1554392666fa41bb18c978868aa6611" [build] -template = "custom" +template = "cmake" dependencies = [ "sdl2", "libpng", @@ -14,18 +15,3 @@ dependencies = [ "libmad", "libuuid", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/games/strategy/ship-of-harkinian/recipe.toml b/recipes/wip/games/strategy/ship-of-harkinian/recipe.toml index 01b0af36..027a6394 100644 --- a/recipes/wip/games/strategy/ship-of-harkinian/recipe.toml +++ b/recipes/wip/games/strategy/ship-of-harkinian/recipe.toml @@ -1,27 +1,12 @@ -#TODO maybe incomplete script, see https://github.com/HarbourMasters/Shipwright/blob/develop/docs/BUILDING.md#linux -#TODO port to orbital? +#TODO not compiled or tested +# build instructions: https://github.com/HarbourMasters/Shipwright/blob/develop/docs/BUILDING.md#linux [source] git = "https://github.com/HarbourMasters/Shipwright" rev = "818addfdda660f6b4b54edd19636d6fd9d839f28" [build] -template = "custom" +template = "cmake" dependencies = [ "sdl2", "libpng", "glew", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/games/strategy/warsow/recipe.toml b/recipes/wip/games/strategy/warsow/recipe.toml index 1e4fdcab..6b16cde8 100644 --- a/recipes/wip/games/strategy/warsow/recipe.toml +++ b/recipes/wip/games/strategy/warsow/recipe.toml @@ -1,20 +1,6 @@ -#TODO maybe incomplete script, lacking build instructions +#TODO not compiled or tested +# lacking build instructions [source] tar = "https://warsow.net/warsow_21_sdk.tar.gz" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" From 5a4ab8c41209b24194a9ff46e3efb8c0695ee09a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 7 Oct 2025 15:35:21 -0300 Subject: [PATCH 2895/3180] Try to fix more CMake-based recipes --- recipes/wip/games/other/vvvvvv/recipe.toml | 24 +++++++ recipes/wip/games/other/wesnoth/recipe.toml | 37 +++++++++++ recipes/wip/games/vvvvvv/recipe.sh | 38 ------------ recipes/wip/games/wesnoth/recipe.sh | 62 ------------------- .../graphics/editors/blender-lts/recipe.toml | 27 ++------ .../wip/graphics/editors/blender/recipe.toml | 27 ++------ .../graphics/editors/opentoonz/recipe.toml | 20 +----- .../wip/graphics/other/appleseed/recipe.toml | 20 +----- recipes/wip/graphics/other/cmark/recipe.toml | 20 +----- .../wip/graphics/other/darktable/recipe.toml | 22 ++----- 10 files changed, 84 insertions(+), 213 deletions(-) create mode 100644 recipes/wip/games/other/vvvvvv/recipe.toml create mode 100644 recipes/wip/games/other/wesnoth/recipe.toml delete mode 100644 recipes/wip/games/vvvvvv/recipe.sh delete mode 100644 recipes/wip/games/wesnoth/recipe.sh diff --git a/recipes/wip/games/other/vvvvvv/recipe.toml b/recipes/wip/games/other/vvvvvv/recipe.toml new file mode 100644 index 00000000..92f51c39 --- /dev/null +++ b/recipes/wip/games/other/vvvvvv/recipe.toml @@ -0,0 +1,24 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/xTibor/VVVVVV" +upstream = "https://github.com/TerryCavanagh/VVVVVV" +branch = "redox" +script = "COOKBOOK_SOURCE=${COOKBOOK_SOURCE}/desktop_version" +[build] +template = "cmake" +cmakeflags = [ + "-DSDL2_INCLUDE_DIRS=${COOKBOOK_SYSROOT}/include/SDL2", + "-DSDL2_LIBRARIES="-lSDL2main -lSDL2_mixer -lSDL2 $(${TARGET}-pkg-config --libs glu) -lorbital -lz -lvorbisfile -lvorbis -logg" .", +] +dependencies = [ + "sdl2-image", + "sdl2-mixer", + "sdl2", + "liborbital", + "llvm18", + "mesa", + "mesa-glu", + "zlib", + "libogg", + "libvorbis", +] diff --git a/recipes/wip/games/other/wesnoth/recipe.toml b/recipes/wip/games/other/wesnoth/recipe.toml new file mode 100644 index 00000000..890ee7ff --- /dev/null +++ b/recipes/wip/games/other/wesnoth/recipe.toml @@ -0,0 +1,37 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/wesnoth/wesnoth" +branch = "1.14.6" +[build] +template = "cmake" +cmakeflags = [ + "-DCMAKE_TRY_COMPILE_TARGET_TYPE=DYNAMIC_LIBRARY", + "-DENABLE_SERVER=OFF", + "-DENABLE_TESTS=OFF" + "-DCRYPTO_LIBRARY=openssl", + "-DSDL2_LIBRARY=sdl2", + "-DSDL2_IMAGE_LIBRARY=SDL2_image", + "-DSDL2_MIXER_LIBRARY=SDL2_mixer", + "-DSDL2_TTF_LIBRARY=SDL2_ttf", + "-DVORBISFILE_INCLUDE_DIR=${COOKBOOK_SYSROOT}/include", + "-DVORBISFILE_LIBRARY=vorbisfile ..", +] +dependencies = [ + "cairo", + "freetype2", + "glib", + "libjpeg", + "liborbital", + "libpng", + "libvorbis", + "llvm18", + "mesa", + "mesa-glu", + "pcre", + "pixman", + "sdl2", + "sdl2-image", + "sdl2-mixer", + "sdl2-ttf", + "zlib", +] diff --git a/recipes/wip/games/vvvvvv/recipe.sh b/recipes/wip/games/vvvvvv/recipe.sh deleted file mode 100644 index 7964cafb..00000000 --- a/recipes/wip/games/vvvvvv/recipe.sh +++ /dev/null @@ -1,38 +0,0 @@ -VERSION=2.0 -GIT=https://github.com/xTibor/VVVVVV -BRANCH=redox -GIT_UPSTREAM=https://github.com/TerryCavanagh/VVVVVV -BUILD_DEPENDS=(sdl2-image sdl2-mixer sdl2 liborbital llvm18 mesa mesa-glu zlib libogg libvorbis) - -function recipe_version { - printf "1.0.0" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - cd desktop_version - - cmake \ - -DCMAKE_INSTALL_PREFIX:PATH=/ \ - -DBUILD_STATIC=ON \ - -DBUILD_SHARED=OFF \ - -DSDL2_INCLUDE_DIRS="$sysroot/include/SDL2" \ - -DSDL2_LIBRARIES="-static -lSDL2main -lSDL2_mixer -lSDL2 $("${PKG_CONFIG}" --libs glu) -lorbital -lz -lvorbisfile -lvorbis -logg" \ - . - - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - echo "skipping clean" - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - mkdir -pv "$1/usr/games/vvvvvv" - cp ./desktop_version/VVVVVV "$1/usr/games/vvvvvv" - skip=1 -} diff --git a/recipes/wip/games/wesnoth/recipe.sh b/recipes/wip/games/wesnoth/recipe.sh deleted file mode 100644 index 26fc0739..00000000 --- a/recipes/wip/games/wesnoth/recipe.sh +++ /dev/null @@ -1,62 +0,0 @@ -VERSION=1.14.6 -GIT=https://github.com/wesnoth/wesnoth.git -BRANCH=$VERSION -BUILD_DEPENDS=( - cairo - freetype2 - glib - libjpeg - liborbital - libpng - libvorbis - llvm18 - mesa mesa-glu - pcre - pixman - sdl2 sdl2-image sdl2-mixer sdl2-ttf - zlib -) - -function recipe_version { - printf "$VERSION" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib" - - rm -rf build - mkdir -p build - cd build - set -x - cmake \ - -DCMAKE_INSTALL_PREFIX:PATH=/ \ - -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \ - -DENABLE_SERVER=OFF \ - -DENABLE_TESTS=OFF \ - -DCRYPTO_LIBRARY=openssl \ - -DSDL2_LIBRARY=sdl2 \ - -DSDL2_IMAGE_LIBRARY=SDL2_image \ - -DSDL2_MIXER_LIBRARY=SDL2_mixer \ - -DSDL2_TTF_LIBRARY=SDL2_ttf \ - -DVORBISFILE_INCLUDE_DIR="${sysroot}/include" \ - -DVORBISFILE_LIBRARY=vorbisfile \ - .. - VERBOSE=1 "$REDOX_MAKE" all -j"$($NPROC)" - set +x - skip=1 -} - -function recipe_clean { - rm -rf build - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - mkdir -pv "$dest/bin" - cp "build/wesnoth" "$dest/bin/wesnoth" - skip=1 -} diff --git a/recipes/wip/graphics/editors/blender-lts/recipe.toml b/recipes/wip/graphics/editors/blender-lts/recipe.toml index 45fbd2e2..52b4308c 100644 --- a/recipes/wip/graphics/editors/blender-lts/recipe.toml +++ b/recipes/wip/graphics/editors/blender-lts/recipe.toml @@ -1,11 +1,11 @@ -#TODO probably wrong script, see https://wiki.blender.org/wiki/Building_Blender/Linux/Generic_Distro -#TODO probably missing dependencies -#TODO port to Orbital -#TODO customization - https://wiki.blender.org/wiki/Building_Blender/Options +#TODO not compiled or tested +# build instructions: https://wiki.blender.org/wiki/Building_Blender/Linux/Generic_Distro +# probably missing dependencies +# customization - https://wiki.blender.org/wiki/Building_Blender/Options [source] tar = "https://download.blender.org/source/blender-3.6.5.tar.xz" [build] -template = "custom" +template = "cmake" dependencies = [ "dbus", "libdecor", @@ -24,20 +24,3 @@ dependencies = [ "mesa-x11", "libxkbcommon", ] -script = """ -DYNAMIC_INIT -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_CXX_COMPILER="${TARGET}-g++" - -DCMAKE_C_COMPILER="${TARGET}-gcc" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/graphics/editors/blender/recipe.toml b/recipes/wip/graphics/editors/blender/recipe.toml index b50d7d6d..0399b0e6 100644 --- a/recipes/wip/graphics/editors/blender/recipe.toml +++ b/recipes/wip/graphics/editors/blender/recipe.toml @@ -1,11 +1,11 @@ -#TODO probably wrong script, see https://wiki.blender.org/wiki/Building_Blender/Linux/Generic_Distro -#TODO probably missing dependencies -#TODO port to Orbital -#TODO customization - https://wiki.blender.org/wiki/Building_Blender/Options +#TODO not compiled or tested +# build instructions: https://wiki.blender.org/wiki/Building_Blender/Linux/Generic_Distro +# probably missing dependencies +# customization - https://wiki.blender.org/wiki/Building_Blender/Options [source] tar = "https://download.blender.org/source/blender-4.1.0.tar.xz" [build] -template = "custom" +template = "cmake" dependencies = [ "dbus", "libdecor", @@ -24,20 +24,3 @@ dependencies = [ "mesa-x11", "libxkbcommon", ] -script = """ -DYNAMIC_INIT -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_CXX_COMPILER="${TARGET}-g++" - -DCMAKE_C_COMPILER="${TARGET}-gcc" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/graphics/editors/opentoonz/recipe.toml b/recipes/wip/graphics/editors/opentoonz/recipe.toml index 029a3153..32b9b08b 100644 --- a/recipes/wip/graphics/editors/opentoonz/recipe.toml +++ b/recipes/wip/graphics/editors/opentoonz/recipe.toml @@ -1,10 +1,11 @@ -#TODO probably wrong script, see https://github.com/opentoonz/opentoonz/blob/master/doc/how_to_build_linux.md +#TODO not compiled or tested #TODO missing dependencies +# build instructions: https://github.com/opentoonz/opentoonz/blob/master/doc/how_to_build_linux.md [source] git = "https://github.com/opentoonz/opentoonz" rev = "dd4cb36142ebf65a2aa74ff8575002863d3e17fc" [build] -template = "custom" +template = "cmake" dependencies = [ "boost", "qt5-base", @@ -13,18 +14,3 @@ dependencies = [ "libmypaint", "opencv4", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/graphics/other/appleseed/recipe.toml b/recipes/wip/graphics/other/appleseed/recipe.toml index 45a947df..76def06b 100644 --- a/recipes/wip/graphics/other/appleseed/recipe.toml +++ b/recipes/wip/graphics/other/appleseed/recipe.toml @@ -1,26 +1,12 @@ -#TODO maybe incomplete script, see https://github.com/appleseedhq/appleseed/wiki/Building-appleseed-on-Linux +#TODO not compiled or tested +# build instructions: https://github.com/appleseedhq/appleseed/wiki/Building-appleseed-on-Linux [source] git = "https://github.com/appleseedhq/appleseed" rev = "015adb503af58cb80103e0c3ddeefc20d99d204f" [build] -template = "custom" +template = "cmake" dependencies = [ "zlib", "qt5-base", "libnsl", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/graphics/other/cmark/recipe.toml b/recipes/wip/graphics/other/cmark/recipe.toml index 0bb76c0b..8b616f4a 100644 --- a/recipes/wip/graphics/other/cmark/recipe.toml +++ b/recipes/wip/graphics/other/cmark/recipe.toml @@ -1,21 +1,7 @@ -#TODO maybe incomplete script, see https://github.com/commonmark/cmark#installing +#TODO not compiled or tested +# build instructions: https://github.com/commonmark/cmark#installing [source] git = "https://github.com/commonmark/cmark" rev = "5ba25ff40eba44c811f79ab6a792baf945b8307c" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/graphics/other/darktable/recipe.toml b/recipes/wip/graphics/other/darktable/recipe.toml index 9b0f4bbd..6427794c 100644 --- a/recipes/wip/graphics/other/darktable/recipe.toml +++ b/recipes/wip/graphics/other/darktable/recipe.toml @@ -1,9 +1,10 @@ -#TODO maybe incomplete script, see https://github.com/darktable-org/darktable?tab=readme-ov-file#linux -# dependencies - https://github.com/darktable-org/darktable?tab=readme-ov-file#dependencies +#TODO not compiled or tested +# build instructions: https://github.com/darktable-org/darktable#linux +# dependencies: https://github.com/darktable-org/darktable#dependencies [source] tar = "https://github.com/darktable-org/darktable/releases/download/release-4.8.0/darktable-4.8.0.tar.xz" [build] -template = "custom" +template = "cmake" dependencies = [ "gtk3", "glib", @@ -17,18 +18,3 @@ dependencies = [ "libwebp", "libgphoto2", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" From df998c35b2eb4d05bb38559bd46945f084199e51 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 8 Oct 2025 04:11:58 +0700 Subject: [PATCH 2896/3180] Port webkitgtk3 bmalloc --- recipes/libs/libatomic/recipe.toml | 16 + recipes/wip/libs/other/webkitgtk3/recipe.toml | 65 +--- recipes/wip/libs/other/webkitgtk3/redox.patch | 358 ++++++++++-------- 3 files changed, 222 insertions(+), 217 deletions(-) create mode 100644 recipes/libs/libatomic/recipe.toml diff --git a/recipes/libs/libatomic/recipe.toml b/recipes/libs/libatomic/recipe.toml new file mode 100644 index 00000000..e6f08a2e --- /dev/null +++ b/recipes/libs/libatomic/recipe.toml @@ -0,0 +1,16 @@ +[source] +same_as = "../../dev/gcc13" + +[build] +template = "custom" +dependencies = [ + "libgmp", + "libmpfr", + "mpc", + "zlib" +] +script = """ +DYNAMIC_INIT +COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/libatomic/configure" +cookbook_configure +""" diff --git a/recipes/wip/libs/other/webkitgtk3/recipe.toml b/recipes/wip/libs/other/webkitgtk3/recipe.toml index 20839564..00ce81f6 100644 --- a/recipes/wip/libs/other/webkitgtk3/recipe.toml +++ b/recipes/wip/libs/other/webkitgtk3/recipe.toml @@ -1,5 +1,3 @@ -#TODO missing script for Ninja, see https://trac.webkit.org/wiki/BuildingGtk#BuildingWebKitGTKfromareleasetarball -#TODO port to orbital #TODO missing dependencies, see https://archlinux.org/packages/extra/x86_64/webkitgtk-6.0/ [source] tar = "https://webkitgtk.org/releases/webkitgtk-2.49.1.tar.xz" @@ -22,6 +20,7 @@ dependencies = [ "gtk3", "harfbuzz", "libepoxy", + "libatomic", "libffi", "libgcrypt", "libgpg-error", @@ -60,61 +59,7 @@ dependencies = [ script = """ DYNAMIC_INIT export WEBKIT_USE_SCCACHE=1 - -#TODO: why are these not automatic? -LIBS=( - $("${TARGET}-pkg-config" --libs epoxy) - $("${TARGET}-pkg-config" --libs expat) - $("${TARGET}-pkg-config" --libs fontconfig) - $("${TARGET}-pkg-config" --libs freetype2) - $("${TARGET}-pkg-config" --libs fribidi) - $("${TARGET}-pkg-config" --libs gdk-3.0) - $("${TARGET}-pkg-config" --libs gdk-pixbuf-2.0) - $("${TARGET}-pkg-config" --libs gpg-error) - #$("${TARGET}-pkg-config" --libs gstreamer-1.0) - #$("${TARGET}-pkg-config" --libs gstreamer-allocators-1.0) - #$("${TARGET}-pkg-config" --libs gstreamer-app-1.0) - #$("${TARGET}-pkg-config" --libs gstreamer-audio-1.0) - #$("${TARGET}-pkg-config" --libs gstreamer-base-1.0) - #$("${TARGET}-pkg-config" --libs gstreamer-fft-1.0) - #$("${TARGET}-pkg-config" --libs gstreamer-pbutils-1.0) - #$("${TARGET}-pkg-config" --libs gstreamer-tag-1.0) - #$("${TARGET}-pkg-config" --libs gstreamer-transcoder-1.0) - #$("${TARGET}-pkg-config" --libs gstreamer-video-1.0) - $("${TARGET}-pkg-config" --libs gtk+-3.0) - $("${TARGET}-pkg-config" --libs harfbuzz-icu) - $("${TARGET}-pkg-config" --libs libffi) - $("${TARGET}-pkg-config" --libs libgcrypt) - $("${TARGET}-pkg-config" --libs libjpeg) - $("${TARGET}-pkg-config" --libs liblzma) - $("${TARGET}-pkg-config" --libs libnghttp2) - $("${TARGET}-pkg-config" --libs libpcre2-8) - $("${TARGET}-pkg-config" --libs libpng) - $("${TARGET}-pkg-config" --libs libpsl) - $("${TARGET}-pkg-config" --libs libsharpyuv) - $("${TARGET}-pkg-config" --libs libsoup-3.0) - $("${TARGET}-pkg-config" --libs libtasn1) - $("${TARGET}-pkg-config" --libs libwebp) - $("${TARGET}-pkg-config" --libs libwebpdemux) - $("${TARGET}-pkg-config" --libs libxml2) - $("${TARGET}-pkg-config" --libs libxslt) - $("${TARGET}-pkg-config" --libs pango) - $("${TARGET}-pkg-config" --libs pangofc) - $("${TARGET}-pkg-config" --libs pangoft2) - $("${TARGET}-pkg-config" --libs pixman-1) - $("${TARGET}-pkg-config" --libs sqlite3) - $("${TARGET}-pkg-config" --libs x11) - $("${TARGET}-pkg-config" --libs x11-xcb) - $("${TARGET}-pkg-config" --libs xau) - $("${TARGET}-pkg-config" --libs xcb) - $("${TARGET}-pkg-config" --libs xcb-render) - $("${TARGET}-pkg-config" --libs xext) - $("${TARGET}-pkg-config" --libs xfixes) - $("${TARGET}-pkg-config" --libs xi) - $("${TARGET}-pkg-config" --libs xrandr) - $("${TARGET}-pkg-config" --libs xrender) -) - +export PYTHONDONTWRITEBYTECODE=1 #TODO: enable more features COOKBOOK_CMAKE_FLAGS+=( -DENABLE_ASSERTS=ON @@ -125,7 +70,6 @@ COOKBOOK_CMAKE_FLAGS+=( -DENABLE_RELEASE_LOG=ON -DENABLE_SPEECH_SYNTHESIS=OFF -DENABLE_SPELLCHECK=OFF - -DENABLE_UNIFIED_BUILDS=OFF -DENABLE_WEB_AUDIO=OFF -DENABLE_WEB_CODECS=OFF -DENABLE_VIDEO=OFF @@ -142,13 +86,12 @@ COOKBOOK_CMAKE_FLAGS+=( -DUSE_LIBSECRET=OFF -DUSE_SKIA=OFF -DUSE_SYSPROF_CAPTURE=OFF - -DUSE_SYSTEM_MALLOC=ON + -DUSE_SYSTEM_MALLOC=OFF -DUSE_SYSTEM_SYSPROF_CAPTURE=OFF -DUSE_WOFF2=OFF ) -cookbook_cmake \ - -DCMAKE_CXX_STANDARD_LIBRARIES="${LIBS[*]}" +cookbook_cmake patchelf --replace-needed "${COOKBOOK_SYSROOT}/usr/lib/libsqlite3.so" "libsqlite3.so" "${COOKBOOK_STAGE}/usr/lib/libwebkit2gtk-4.1.so" patchelf --replace-needed "${COOKBOOK_SYSROOT}/usr/lib/libsqlite3.so" "libsqlite3.so" "${COOKBOOK_STAGE}/usr/libexec/webkit2gtk-4.1/MiniBrowser" diff --git a/recipes/wip/libs/other/webkitgtk3/redox.patch b/recipes/wip/libs/other/webkitgtk3/redox.patch index 8e1436a7..a193e23e 100644 --- a/recipes/wip/libs/other/webkitgtk3/redox.patch +++ b/recipes/wip/libs/other/webkitgtk3/redox.patch @@ -1,6 +1,6 @@ -diff -ruwN webkitgtk-2.49.1/Source/bmalloc/bmalloc/BPlatform.h source/Source/bmalloc/bmalloc/BPlatform.h ---- webkitgtk-2.49.1/Source/bmalloc/bmalloc/BPlatform.h 2025-03-28 00:18:28.347204000 -0600 -+++ source/Source/bmalloc/bmalloc/BPlatform.h 2025-05-12 20:54:40.104051612 -0600 +diff -ruwN source/Source/bmalloc/bmalloc/BPlatform.h source-new/Source/bmalloc/bmalloc/BPlatform.h +--- source/Source/bmalloc/bmalloc/BPlatform.h 2025-03-28 13:18:28.347204000 +0700 ++++ source-new/Source/bmalloc/bmalloc/BPlatform.h 2025-10-07 20:55:41.123161164 +0700 @@ -40,7 +40,7 @@ #define BOS_DARWIN 1 #endif @@ -19,9 +19,121 @@ diff -ruwN webkitgtk-2.49.1/Source/bmalloc/bmalloc/BPlatform.h source/Source/bma #define BENABLE_LIBPAS 1 #ifndef PAS_BMALLOC #define PAS_BMALLOC 1 -diff -ruwN webkitgtk-2.49.1/Source/JavaScriptCore/heap/BlockDirectory.cpp source/Source/JavaScriptCore/heap/BlockDirectory.cpp ---- webkitgtk-2.49.1/Source/JavaScriptCore/heap/BlockDirectory.cpp 2025-03-20 11:07:59.015023500 -0600 -+++ source/Source/JavaScriptCore/heap/BlockDirectory.cpp 2025-05-10 21:38:36.889325942 -0600 +diff -ruwN source/Source/bmalloc/libpas/src/libpas/pas_committed_pages_vector.c source-new/Source/bmalloc/libpas/src/libpas/pas_committed_pages_vector.c +--- source/Source/bmalloc/libpas/src/libpas/pas_committed_pages_vector.c 2023-09-18 14:56:46.731077000 +0700 ++++ source-new/Source/bmalloc/libpas/src/libpas/pas_committed_pages_vector.c 2025-10-07 22:23:20.298893452 +0700 +@@ -57,6 +57,8 @@ + + #if PAS_OS(LINUX) + PAS_SYSCALL(mincore(object, size, (unsigned char*)vector->raw_data)); ++#elif PAS_OS(REDOX) ++ // no op + #else + PAS_SYSCALL(mincore(object, size, vector->raw_data)); + #endif +diff -ruwN source/Source/bmalloc/libpas/src/libpas/pas_committed_pages_vector.h source-new/Source/bmalloc/libpas/src/libpas/pas_committed_pages_vector.h +--- source/Source/bmalloc/libpas/src/libpas/pas_committed_pages_vector.h 2023-09-18 14:56:46.731077000 +0700 ++++ source-new/Source/bmalloc/libpas/src/libpas/pas_committed_pages_vector.h 2025-10-07 22:23:29.232045934 +0700 +@@ -56,6 +56,8 @@ + PAS_ASSERT(page_index < vector->size); + #if PAS_OS(LINUX) + return vector->raw_data[page_index]; ++#elif PAS_OS(REDOX) ++ return true; // redox don't have swap yet + #else + return vector->raw_data[page_index] & (MINCORE_REFERENCED | + MINCORE_REFERENCED_OTHER | +diff -ruwN source/Source/bmalloc/libpas/src/libpas/pas_monotonic_time.c source-new/Source/bmalloc/libpas/src/libpas/pas_monotonic_time.c +--- source/Source/bmalloc/libpas/src/libpas/pas_monotonic_time.c 2023-09-18 14:56:46.743076800 +0700 ++++ source-new/Source/bmalloc/libpas/src/libpas/pas_monotonic_time.c 2025-10-07 22:23:50.202403881 +0700 +@@ -89,6 +89,15 @@ + return ts.tv_sec * 1000u * 1000u * 1000u + ts.tv_nsec; + } + ++ ++#elif PAS_OS(REDOX) ++ ++uint64_t pas_get_current_monotonic_time_nanoseconds(void) ++{ ++ struct timespec ts; ++ clock_gettime(CLOCK_MONOTONIC, &ts); ++ return (uint64_t)ts.tv_sec * 1000000000 + (uint64_t)ts.tv_nsec; ++} + #endif + + #endif /* LIBPAS_ENABLED */ +diff -ruwN source/Source/bmalloc/libpas/src/libpas/pas_page_malloc.c source-new/Source/bmalloc/libpas/src/libpas/pas_page_malloc.c +--- source/Source/bmalloc/libpas/src/libpas/pas_page_malloc.c 2024-12-20 17:10:23.123508500 +0700 ++++ source-new/Source/bmalloc/libpas/src/libpas/pas_page_malloc.c 2025-10-07 22:26:27.358086406 +0700 +@@ -228,6 +228,8 @@ + PAS_SYSCALL(madvise(ptr, size, MADV_DODUMP)); + #elif PAS_PLATFORM(PLAYSTATION) + // We don't need to call madvise to map page. ++#elif PAS_OS(REDOX) ++ // madvise not implemented + #elif PAS_OS(FREEBSD) + PAS_SYSCALL(madvise(ptr, size, MADV_NORMAL)); + #endif +@@ -276,6 +278,8 @@ + #elif PAS_OS(LINUX) + PAS_SYSCALL(madvise(ptr, size, MADV_DONTNEED)); + PAS_SYSCALL(madvise(ptr, size, MADV_DONTDUMP)); ++#elif PAS_OS(REDOX) ++ // madvise not implemented + #else + PAS_SYSCALL(madvise(ptr, size, MADV_DONTNEED)); + #endif +diff -ruwN source/Source/bmalloc/libpas/src/libpas/pas_platform.h source-new/Source/bmalloc/libpas/src/libpas/pas_platform.h +--- source/Source/bmalloc/libpas/src/libpas/pas_platform.h 2024-11-07 21:16:41.458338300 +0700 ++++ source-new/Source/bmalloc/libpas/src/libpas/pas_platform.h 2025-10-07 22:22:50.849390772 +0700 +@@ -132,6 +132,10 @@ + #define PAS_OS_LINUX 1 + #endif + ++#ifdef __redox__ ++#define PAS_OS_REDOX 1 ++#endif ++ + #if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__FreeBSD_kernel__) + #define PAS_OS_FREEBSD 1 + #endif +diff -ruwN source/Source/bmalloc/libpas/src/libpas/pas_probabilistic_guard_malloc_allocator.c source-new/Source/bmalloc/libpas/src/libpas/pas_probabilistic_guard_malloc_allocator.c +--- source/Source/bmalloc/libpas/src/libpas/pas_probabilistic_guard_malloc_allocator.c 2025-03-27 13:32:32.679094000 +0700 ++++ source-new/Source/bmalloc/libpas/src/libpas/pas_probabilistic_guard_malloc_allocator.c 2025-10-07 22:27:40.764339395 +0700 +@@ -165,16 +165,6 @@ + mprotect_res = mprotect((void*)upper_guard, upper_guard_size, PROT_NONE); + PAS_ASSERT(!mprotect_res); + +- /* +- * ensure physical addresses are released +- * TODO: investigate using MADV_FREE_REUSABLE instead +- */ +- int madvise_res = madvise((void*)upper_guard, upper_guard_size, MADV_FREE); +- PAS_ASSERT(!madvise_res); +- +- madvise_res = madvise((void*)lower_guard, lower_guard_size, MADV_FREE); +- PAS_ASSERT(!madvise_res); +- + PAS_PROFILE(PGM_ALLOCATE, heap_config, key); + + /* create struct to hold hash map value */ +@@ -231,13 +221,6 @@ + int mprotect_res = mprotect((void*)value->start_of_data_pages, value->size_of_data_pages, PROT_NONE); + PAS_ASSERT(!mprotect_res); + +- /* +- * ensure physical addresses are released +- * TODO: investigate using MADV_FREE_REUSABLE instead +- */ +- int madvise_res = madvise((void*)value->start_of_data_pages, value->size_of_data_pages, MADV_FREE); +- PAS_ASSERT(!madvise_res); +- + free_wasted_mem += value->mem_to_waste; + free_virtual_mem += value->size_of_allocated_pages; + +diff -ruwN source/Source/JavaScriptCore/heap/BlockDirectory.cpp source-new/Source/JavaScriptCore/heap/BlockDirectory.cpp +--- source/Source/JavaScriptCore/heap/BlockDirectory.cpp 2025-03-21 00:07:59.015023500 +0700 ++++ source-new/Source/JavaScriptCore/heap/BlockDirectory.cpp 2025-09-09 09:08:03.419985553 +0700 @@ -68,7 +68,7 @@ // FIXME: We should figure out a solution for Windows and PlayStation. // QNX doesn't have mincore(), though the information can be had. But since all mapped @@ -31,35 +143,9 @@ diff -ruwN webkitgtk-2.49.1/Source/JavaScriptCore/heap/BlockDirectory.cpp source size_t pageSize = WTF::pageSize(); ASSERT(!(MarkedBlock::blockSize % pageSize)); auto numberOfPagesInMarkedBlock = MarkedBlock::blockSize / pageSize; -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/cpp_generator.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/cpp_generator.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/cpp_generator_templates.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/cpp_generator_templates.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_alternate_backend_dispatcher_header.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_alternate_backend_dispatcher_header.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_backend_dispatcher_header.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_backend_dispatcher_header.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_backend_dispatcher_implementation.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_backend_dispatcher_implementation.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_frontend_dispatcher_header.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_frontend_dispatcher_header.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_frontend_dispatcher_implementation.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_frontend_dispatcher_implementation.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_protocol_types_header.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_protocol_types_header.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_protocol_types_implementation.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_cpp_protocol_types_implementation.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_js_backend_commands.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_js_backend_commands.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_backend_dispatcher_header.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_backend_dispatcher_header.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_backend_dispatcher_implementation.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_backend_dispatcher_implementation.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_configuration_header.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_configuration_header.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_configuration_implementation.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_configuration_implementation.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_frontend_dispatcher_implementation.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_frontend_dispatcher_implementation.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_header.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_header.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_internal_header.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_internal_header.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_protocol_type_conversions_header.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_protocol_type_conversions_header.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_protocol_type_conversions_implementation.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_protocol_type_conversions_implementation.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_protocol_types_implementation.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generate_objc_protocol_types_implementation.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generator.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generator.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generator_templates.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/generator_templates.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/__init__.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/__init__.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/models.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/models.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/objc_generator.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/objc_generator.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/objc_generator_templates.cpython-311.pyc and source/Source/JavaScriptCore/inspector/scripts/codegen/__pycache__/objc_generator_templates.cpython-311.pyc differ -diff -ruwN webkitgtk-2.49.1/Source/JavaScriptCore/jsc.cpp source/Source/JavaScriptCore/jsc.cpp ---- webkitgtk-2.49.1/Source/JavaScriptCore/jsc.cpp 2025-03-21 05:07:10.820055200 -0600 -+++ source/Source/JavaScriptCore/jsc.cpp 2025-05-12 21:27:55.789300618 -0600 +diff -ruwN source/Source/JavaScriptCore/jsc.cpp source-new/Source/JavaScriptCore/jsc.cpp +--- source/Source/JavaScriptCore/jsc.cpp 2025-03-21 18:07:10.820055200 +0700 ++++ source-new/Source/JavaScriptCore/jsc.cpp 2025-09-09 09:08:03.446985840 +0700 @@ -208,6 +208,8 @@ for (;;) { #if OS(WINDOWS) @@ -69,9 +155,9 @@ diff -ruwN webkitgtk-2.49.1/Source/JavaScriptCore/jsc.cpp source/Source/JavaScri #else pause(); #endif -diff -ruwN webkitgtk-2.49.1/Source/JavaScriptCore/runtime/JSCBytecodeCacheVersion.cpp source/Source/JavaScriptCore/runtime/JSCBytecodeCacheVersion.cpp ---- webkitgtk-2.49.1/Source/JavaScriptCore/runtime/JSCBytecodeCacheVersion.cpp 2025-03-20 11:07:59.015023500 -0600 -+++ source/Source/JavaScriptCore/runtime/JSCBytecodeCacheVersion.cpp 2025-05-11 08:15:28.272811727 -0600 +diff -ruwN source/Source/JavaScriptCore/runtime/JSCBytecodeCacheVersion.cpp source-new/Source/JavaScriptCore/runtime/JSCBytecodeCacheVersion.cpp +--- source/Source/JavaScriptCore/runtime/JSCBytecodeCacheVersion.cpp 2025-03-21 00:07:59.015023500 +0700 ++++ source-new/Source/JavaScriptCore/runtime/JSCBytecodeCacheVersion.cpp 2025-09-09 09:08:03.446985840 +0700 @@ -37,7 +37,7 @@ #include #include @@ -90,9 +176,9 @@ diff -ruwN webkitgtk-2.49.1/Source/JavaScriptCore/runtime/JSCBytecodeCacheVersio auto result = ([&] -> std::optional { Dl_info info { }; if (!dladdr(jsFunctionAddr, &info)) -diff -ruwN webkitgtk-2.49.1/Source/JavaScriptCore/runtime/MachineContext.h source/Source/JavaScriptCore/runtime/MachineContext.h ---- webkitgtk-2.49.1/Source/JavaScriptCore/runtime/MachineContext.h 2025-03-20 11:07:59.015023500 -0600 -+++ source/Source/JavaScriptCore/runtime/MachineContext.h 2025-05-12 20:27:42.492098710 -0600 +diff -ruwN source/Source/JavaScriptCore/runtime/MachineContext.h source-new/Source/JavaScriptCore/runtime/MachineContext.h +--- source/Source/JavaScriptCore/runtime/MachineContext.h 2025-03-21 00:07:59.015023500 +0700 ++++ source-new/Source/JavaScriptCore/runtime/MachineContext.h 2025-09-09 09:08:03.473986127 +0700 @@ -158,7 +158,7 @@ { #if OS(DARWIN) @@ -152,11 +238,9 @@ diff -ruwN webkitgtk-2.49.1/Source/JavaScriptCore/runtime/MachineContext.h sourc #if CPU(X86_64) return reinterpret_cast((uintptr_t&) machineContext.r8); #else -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/wasm/__pycache__/generateWasm.cpython-311.pyc and source/Source/JavaScriptCore/wasm/__pycache__/generateWasm.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/JavaScriptCore/yarr/__pycache__/hasher.cpython-311.pyc and source/Source/JavaScriptCore/yarr/__pycache__/hasher.cpython-311.pyc differ -diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/GLESv2.cmake source/Source/ThirdParty/ANGLE/GLESv2.cmake ---- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/GLESv2.cmake 2025-02-17 05:59:58.567796700 -0700 -+++ source/Source/ThirdParty/ANGLE/GLESv2.cmake 2025-05-10 20:36:08.275484081 -0600 +diff -ruwN source/Source/ThirdParty/ANGLE/GLESv2.cmake source-new/Source/ThirdParty/ANGLE/GLESv2.cmake +--- source/Source/ThirdParty/ANGLE/GLESv2.cmake 2025-02-17 19:59:58.567796700 +0700 ++++ source-new/Source/ThirdParty/ANGLE/GLESv2.cmake 2025-09-09 09:08:03.495986361 +0700 @@ -120,7 +120,7 @@ if(is_linux OR is_chromeos OR is_android OR is_fuchsia) @@ -166,18 +250,18 @@ diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/GLESv2.cmake source/Source/T "src/common/system_utils_posix.cpp" ) endif() -diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/PlatformGTK.cmake source/Source/ThirdParty/ANGLE/PlatformGTK.cmake ---- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/PlatformGTK.cmake 2023-10-21 01:33:32.730009300 -0600 -+++ source/Source/ThirdParty/ANGLE/PlatformGTK.cmake 2025-05-10 20:22:26.792451858 -0600 +diff -ruwN source/Source/ThirdParty/ANGLE/PlatformGTK.cmake source-new/Source/ThirdParty/ANGLE/PlatformGTK.cmake +--- source/Source/ThirdParty/ANGLE/PlatformGTK.cmake 2023-10-21 14:33:32.730009300 +0700 ++++ source-new/Source/ThirdParty/ANGLE/PlatformGTK.cmake 2025-09-09 09:08:03.500986415 +0700 @@ -1,4 +1,4 @@ -list(APPEND ANGLE_DEFINITIONS ANGLE_PLATFORM_LINUX EGL_NO_PLATFORM_SPECIFIC_TYPES USE_SYSTEM_EGL) +list(APPEND ANGLE_DEFINITIONS ANGLE_PLATFORM_POSIX EGL_NO_PLATFORM_SPECIFIC_TYPES USE_SYSTEM_EGL) include(linux.cmake) if (USE_OPENGL) -diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/log_utils.h source/Source/ThirdParty/ANGLE/src/common/log_utils.h ---- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/log_utils.h 2025-02-17 05:59:58.571796700 -0700 -+++ source/Source/ThirdParty/ANGLE/src/common/log_utils.h 2025-05-10 20:10:39.639595675 -0600 +diff -ruwN source/Source/ThirdParty/ANGLE/src/common/log_utils.h source-new/Source/ThirdParty/ANGLE/src/common/log_utils.h +--- source/Source/ThirdParty/ANGLE/src/common/log_utils.h 2025-02-17 19:59:58.571796700 +0700 ++++ source-new/Source/ThirdParty/ANGLE/src/common/log_utils.h 2025-09-09 09:08:03.501986425 +0700 @@ -136,10 +136,12 @@ return FmtHexAutoSized(os, fmt.mValue, fmt.mPrefix, "0x", '0'); } @@ -191,9 +275,9 @@ diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/log_utils.h sourc }; } // namespace priv -diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/platform.h source/Source/ThirdParty/ANGLE/src/common/platform.h ---- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/platform.h 2024-09-03 00:28:47.067031900 -0600 -+++ source/Source/ThirdParty/ANGLE/src/common/platform.h 2025-05-10 20:07:40.561378854 -0600 +diff -ruwN source/Source/ThirdParty/ANGLE/src/common/platform.h source-new/Source/ThirdParty/ANGLE/src/common/platform.h +--- source/Source/ThirdParty/ANGLE/src/common/platform.h 2024-09-03 13:28:47.067031900 +0700 ++++ source-new/Source/ThirdParty/ANGLE/src/common/platform.h 2025-09-09 09:08:03.518986606 +0700 @@ -28,7 +28,7 @@ # define ANGLE_PLATFORM_POSIX 1 #elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || \ @@ -203,9 +287,9 @@ diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/platform.h source # define ANGLE_PLATFORM_POSIX 1 #else # error Unsupported platform. -diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/system_utils.h source/Source/ThirdParty/ANGLE/src/common/system_utils.h ---- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/system_utils.h 2024-05-30 05:59:22.953676200 -0600 -+++ source/Source/ThirdParty/ANGLE/src/common/system_utils.h 2025-05-13 10:29:39.241586171 -0600 +diff -ruwN source/Source/ThirdParty/ANGLE/src/common/system_utils.h source-new/Source/ThirdParty/ANGLE/src/common/system_utils.h +--- source/Source/ThirdParty/ANGLE/src/common/system_utils.h 2024-05-30 18:59:22.953676200 +0700 ++++ source-new/Source/ThirdParty/ANGLE/src/common/system_utils.h 2025-09-09 09:08:03.536986798 +0700 @@ -256,7 +256,9 @@ } #endif @@ -217,9 +301,9 @@ diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/system_utils.h so } // namespace angle #endif // COMMON_SYSTEM_UTILS_H_ -diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/system_utils_posix.cpp source/Source/ThirdParty/ANGLE/src/common/system_utils_posix.cpp ---- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/system_utils_posix.cpp 2024-05-30 05:59:22.953676200 -0600 -+++ source/Source/ThirdParty/ANGLE/src/common/system_utils_posix.cpp 2025-05-10 20:28:38.268901621 -0600 +diff -ruwN source/Source/ThirdParty/ANGLE/src/common/system_utils_posix.cpp source-new/Source/ThirdParty/ANGLE/src/common/system_utils_posix.cpp +--- source/Source/ThirdParty/ANGLE/src/common/system_utils_posix.cpp 2024-05-30 18:59:22.953676200 +0700 ++++ source-new/Source/ThirdParty/ANGLE/src/common/system_utils_posix.cpp 2025-09-09 09:08:03.539986830 +0700 @@ -33,6 +33,11 @@ # include #endif @@ -232,9 +316,9 @@ diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/system_utils_posi namespace angle { -diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/WorkerThread.cpp source/Source/ThirdParty/ANGLE/src/common/WorkerThread.cpp ---- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/WorkerThread.cpp 2024-06-25 02:04:37.142420000 -0600 -+++ source/Source/ThirdParty/ANGLE/src/common/WorkerThread.cpp 2025-05-13 10:31:32.029891938 -0600 +diff -ruwN source/Source/ThirdParty/ANGLE/src/common/WorkerThread.cpp source-new/Source/ThirdParty/ANGLE/src/common/WorkerThread.cpp +--- source/Source/ThirdParty/ANGLE/src/common/WorkerThread.cpp 2024-06-25 15:04:37.142420000 +0700 ++++ source-new/Source/ThirdParty/ANGLE/src/common/WorkerThread.cpp 2025-09-09 09:08:03.557987021 +0700 @@ -165,7 +165,9 @@ void AsyncWorkerPool::threadLoop() @@ -245,9 +329,9 @@ diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/common/WorkerThread.cpp while (true) { -diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp source/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp ---- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp 2025-02-05 02:14:42.678567400 -0700 -+++ source/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp 2025-05-10 20:42:33.040029309 -0600 +diff -ruwN source/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp source-new/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp +--- source/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp 2025-02-05 16:14:42.678567400 +0700 ++++ source-new/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp 2025-09-09 09:08:03.577987234 +0700 @@ -58,7 +58,7 @@ # include "libANGLE/renderer/gl/wgl/DisplayWGL.h" # elif ANGLE_ENABLE_CGL @@ -266,9 +350,9 @@ diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp sou # if defined(ANGLE_USE_GBM) if (platformType == 0) { -diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CLCommandQueueVk.cpp source/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CLCommandQueueVk.cpp ---- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CLCommandQueueVk.cpp 2025-02-17 05:59:58.575796600 -0700 -+++ source/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CLCommandQueueVk.cpp 2025-05-13 10:30:15.002645630 -0600 +diff -ruwN source/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CLCommandQueueVk.cpp source-new/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CLCommandQueueVk.cpp +--- source/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CLCommandQueueVk.cpp 2025-02-17 19:59:58.575796600 +0700 ++++ source-new/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CLCommandQueueVk.cpp 2025-09-09 09:08:03.578987245 +0700 @@ -142,7 +142,9 @@ angle::Result DispatchWorkThread::finishLoop() @@ -279,9 +363,9 @@ diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan while (true) { -diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CommandQueue.cpp source/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CommandQueue.cpp ---- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CommandQueue.cpp 2025-02-05 02:14:42.690567300 -0700 -+++ source/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CommandQueue.cpp 2025-05-13 10:30:05.421614993 -0600 +diff -ruwN source/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CommandQueue.cpp source-new/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CommandQueue.cpp +--- source/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CommandQueue.cpp 2025-02-05 16:14:42.690567300 +0700 ++++ source-new/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CommandQueue.cpp 2025-09-09 09:08:03.578987245 +0700 @@ -378,7 +378,9 @@ void CleanUpThread::processTasks() @@ -292,9 +376,9 @@ diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan while (true) { -diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/libGLESv2.gni source/Source/ThirdParty/ANGLE/src/libGLESv2.gni ---- webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/libGLESv2.gni 2025-02-17 05:59:58.587796200 -0700 -+++ source/Source/ThirdParty/ANGLE/src/libGLESv2.gni 2025-05-10 20:36:18.426498466 -0600 +diff -ruwN source/Source/ThirdParty/ANGLE/src/libGLESv2.gni source-new/Source/ThirdParty/ANGLE/src/libGLESv2.gni +--- source/Source/ThirdParty/ANGLE/src/libGLESv2.gni 2025-02-17 19:59:58.587796200 +0700 ++++ source-new/Source/ThirdParty/ANGLE/src/libGLESv2.gni 2025-09-09 09:08:03.578987245 +0700 @@ -115,7 +115,7 @@ if (is_linux || is_chromeos || is_android || is_fuchsia) { @@ -304,9 +388,9 @@ diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/ANGLE/src/libGLESv2.gni source/Sou "src/common/system_utils_posix.cpp", ] } -diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/skia/src/gpu/ganesh/GrAutoLocaleSetter.h source/Source/ThirdParty/skia/src/gpu/ganesh/GrAutoLocaleSetter.h ---- webkitgtk-2.49.1/Source/ThirdParty/skia/src/gpu/ganesh/GrAutoLocaleSetter.h 2024-08-14 02:56:17.506453500 -0600 -+++ source/Source/ThirdParty/skia/src/gpu/ganesh/GrAutoLocaleSetter.h 2025-05-10 21:10:41.689374796 -0600 +diff -ruwN source/Source/ThirdParty/skia/src/gpu/ganesh/GrAutoLocaleSetter.h source-new/Source/ThirdParty/skia/src/gpu/ganesh/GrAutoLocaleSetter.h +--- source/Source/ThirdParty/skia/src/gpu/ganesh/GrAutoLocaleSetter.h 2024-08-14 15:56:17.506453500 +0700 ++++ source-new/Source/ThirdParty/skia/src/gpu/ganesh/GrAutoLocaleSetter.h 2025-09-09 09:08:03.579987255 +0700 @@ -27,7 +27,7 @@ #define HAVE_XLOCALE 0 #endif @@ -316,9 +400,9 @@ diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/skia/src/gpu/ganesh/GrAutoLocaleSe #define HAVE_LOCALE_T 0 #else #define HAVE_LOCALE_T 1 -diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/skia/src/ports/SkMemory_malloc.cpp source/Source/ThirdParty/skia/src/ports/SkMemory_malloc.cpp ---- webkitgtk-2.49.1/Source/ThirdParty/skia/src/ports/SkMemory_malloc.cpp 2024-05-30 05:59:23.965655000 -0600 -+++ source/Source/ThirdParty/skia/src/ports/SkMemory_malloc.cpp 2025-05-10 21:14:33.304664836 -0600 +diff -ruwN source/Source/ThirdParty/skia/src/ports/SkMemory_malloc.cpp source-new/Source/ThirdParty/skia/src/ports/SkMemory_malloc.cpp +--- source/Source/ThirdParty/skia/src/ports/SkMemory_malloc.cpp 2024-05-30 18:59:23.965655000 +0700 ++++ source-new/Source/ThirdParty/skia/src/ports/SkMemory_malloc.cpp 2025-09-09 09:08:03.579987255 +0700 @@ -126,7 +126,7 @@ #elif defined(SK_BUILD_FOR_ANDROID) && __ANDROID_API__ >= 17 completeSize = malloc_usable_size(addr); @@ -328,9 +412,9 @@ diff -ruwN webkitgtk-2.49.1/Source/ThirdParty/skia/src/ports/SkMemory_malloc.cpp completeSize = malloc_usable_size(addr); SkASSERT(completeSize >= size); #elif defined(SK_BUILD_FOR_WIN) -diff -ruwN webkitgtk-2.49.1/Source/WebCore/page/Page.cpp source/Source/WebCore/page/Page.cpp ---- webkitgtk-2.49.1/Source/WebCore/page/Page.cpp 2025-04-01 01:53:09.527295000 -0600 -+++ source/Source/WebCore/page/Page.cpp 2025-06-14 18:21:41.320992545 -0600 +diff -ruwN source/Source/WebCore/page/Page.cpp source-new/Source/WebCore/page/Page.cpp +--- source/Source/WebCore/page/Page.cpp 2025-04-01 14:53:09.527295000 +0700 ++++ source-new/Source/WebCore/page/Page.cpp 2025-09-09 09:08:03.580987266 +0700 @@ -536,8 +536,10 @@ if (RefPtr scrollingCoordinator = m_scrollingCoordinator) scrollingCoordinator->pageDestroyed(); @@ -354,9 +438,9 @@ diff -ruwN webkitgtk-2.49.1/Source/WebCore/page/Page.cpp source/Source/WebCore/p } #if ENABLE(MEDIA_STREAM) -diff -ruwN webkitgtk-2.49.1/Source/WebCore/PlatformGTK.cmake source/Source/WebCore/PlatformGTK.cmake ---- webkitgtk-2.49.1/Source/WebCore/PlatformGTK.cmake 2024-12-16 02:07:48.162613200 -0700 -+++ source/Source/WebCore/PlatformGTK.cmake 2025-05-10 19:05:57.526658690 -0600 +diff -ruwN source/Source/WebCore/PlatformGTK.cmake source-new/Source/WebCore/PlatformGTK.cmake +--- source/Source/WebCore/PlatformGTK.cmake 2024-12-16 16:07:48.162613200 +0700 ++++ source-new/Source/WebCore/PlatformGTK.cmake 2025-09-09 09:08:03.580987266 +0700 @@ -75,21 +75,18 @@ ) @@ -379,9 +463,9 @@ diff -ruwN webkitgtk-2.49.1/Source/WebCore/PlatformGTK.cmake source/Source/WebCo ${GIO_UNIX_INCLUDE_DIRS} ${GLIB_INCLUDE_DIRS} ${LIBSECRET_INCLUDE_DIRS} -diff -ruwN webkitgtk-2.49.1/Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp source/Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp ---- webkitgtk-2.49.1/Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp 2025-03-31 03:35:43.461813700 -0600 -+++ source/Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp 2025-06-15 20:53:04.313171066 -0600 +diff -ruwN source/Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp source-new/Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp +--- source/Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp 2025-03-31 16:35:43.461813700 +0700 ++++ source-new/Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp 2025-09-09 09:08:03.591987383 +0700 @@ -48,13 +48,13 @@ #include #endif @@ -398,9 +482,9 @@ diff -ruwN webkitgtk-2.49.1/Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp s #define SOCKET_TYPE SOCK_SEQPACKET #else #if USE(GLIB) -diff -ruwN webkitgtk-2.49.1/Source/WebKit/PlatformGTK.cmake source/Source/WebKit/PlatformGTK.cmake ---- webkitgtk-2.49.1/Source/WebKit/PlatformGTK.cmake 2025-03-05 03:09:47.273706000 -0700 -+++ source/Source/WebKit/PlatformGTK.cmake 2025-05-10 18:54:43.437475299 -0600 +diff -ruwN source/Source/WebKit/PlatformGTK.cmake source-new/Source/WebKit/PlatformGTK.cmake +--- source/Source/WebKit/PlatformGTK.cmake 2025-03-05 17:09:47.273706000 +0700 ++++ source-new/Source/WebKit/PlatformGTK.cmake 2025-09-09 09:08:03.644987947 +0700 @@ -313,7 +313,6 @@ ) @@ -409,13 +493,9 @@ diff -ruwN webkitgtk-2.49.1/Source/WebKit/PlatformGTK.cmake source/Source/WebKit ${GIO_UNIX_INCLUDE_DIRS} ${GLIB_INCLUDE_DIRS} ${GSTREAMER_INCLUDE_DIRS} -Binary files webkitgtk-2.49.1/Source/WebKit/Scripts/webkit/__pycache__/__init__.cpython-311.pyc and source/Source/WebKit/Scripts/webkit/__pycache__/__init__.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/WebKit/Scripts/webkit/__pycache__/messages.cpython-311.pyc and source/Source/WebKit/Scripts/webkit/__pycache__/messages.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/WebKit/Scripts/webkit/__pycache__/model.cpython-311.pyc and source/Source/WebKit/Scripts/webkit/__pycache__/model.cpython-311.pyc differ -Binary files webkitgtk-2.49.1/Source/WebKit/Scripts/webkit/__pycache__/parser.cpython-311.pyc and source/Source/WebKit/Scripts/webkit/__pycache__/parser.cpython-311.pyc differ -diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/glib/FileSystemGlib.cpp source/Source/WTF/wtf/glib/FileSystemGlib.cpp ---- webkitgtk-2.49.1/Source/WTF/wtf/glib/FileSystemGlib.cpp 2024-12-16 02:07:48.134613800 -0700 -+++ source/Source/WTF/wtf/glib/FileSystemGlib.cpp 2025-05-10 20:14:04.266843426 -0600 +diff -ruwN source/Source/WTF/wtf/glib/FileSystemGlib.cpp source-new/Source/WTF/wtf/glib/FileSystemGlib.cpp +--- source/Source/WTF/wtf/glib/FileSystemGlib.cpp 2024-12-16 16:07:48.134613800 +0700 ++++ source-new/Source/WTF/wtf/glib/FileSystemGlib.cpp 2025-09-09 09:08:03.644987947 +0700 @@ -70,7 +70,7 @@ return CString({ readLinkBuffer, static_cast(result) }); WTF_ALLOW_UNSAFE_BUFFER_USAGE_END @@ -425,9 +505,9 @@ diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/glib/FileSystemGlib.cpp source/Source CString currentExecutablePath() { return { }; -diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/InlineASM.h source/Source/WTF/wtf/InlineASM.h ---- webkitgtk-2.49.1/Source/WTF/wtf/InlineASM.h 2024-09-23 04:54:44.750106000 -0600 -+++ source/Source/WTF/wtf/InlineASM.h 2025-05-10 21:34:44.313517406 -0600 +diff -ruwN source/Source/WTF/wtf/InlineASM.h source-new/Source/WTF/wtf/InlineASM.h +--- source/Source/WTF/wtf/InlineASM.h 2024-09-23 17:54:44.750106000 +0700 ++++ source-new/Source/WTF/wtf/InlineASM.h 2025-09-09 09:08:03.667988192 +0700 @@ -89,7 +89,8 @@ || OS(HURD) \ || OS(NETBSD) \ @@ -438,9 +518,9 @@ diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/InlineASM.h source/Source/WTF/wtf/Inl // GNU as-compatible syntax. #define LOCAL_LABEL_STRING(name) ".L" #name #endif -diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/PlatformHave.h source/Source/WTF/wtf/PlatformHave.h ---- webkitgtk-2.49.1/Source/WTF/wtf/PlatformHave.h 2025-04-02 06:09:45.800669000 -0600 -+++ source/Source/WTF/wtf/PlatformHave.h 2025-05-11 08:45:52.150157369 -0600 +diff -ruwN source/Source/WTF/wtf/PlatformHave.h source-new/Source/WTF/wtf/PlatformHave.h +--- source/Source/WTF/wtf/PlatformHave.h 2025-04-02 19:09:45.800669000 +0700 ++++ source-new/Source/WTF/wtf/PlatformHave.h 2025-09-09 09:08:03.707988617 +0700 @@ -231,7 +231,7 @@ #define HAVE_MACH_MEMORY_ENTRY 1 #endif @@ -450,9 +530,9 @@ diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/PlatformHave.h source/Source/WTF/wtf/ #define HAVE_MACHINE_CONTEXT 1 #endif -diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/PlatformOS.h source/Source/WTF/wtf/PlatformOS.h ---- webkitgtk-2.49.1/Source/WTF/wtf/PlatformOS.h 2025-04-02 23:49:09.282701700 -0600 -+++ source/Source/WTF/wtf/PlatformOS.h 2025-05-10 21:44:33.694803473 -0600 +diff -ruwN source/Source/WTF/wtf/PlatformOS.h source-new/Source/WTF/wtf/PlatformOS.h +--- source/Source/WTF/wtf/PlatformOS.h 2025-04-03 12:49:09.282701700 +0700 ++++ source-new/Source/WTF/wtf/PlatformOS.h 2025-09-09 09:08:03.709988639 +0700 @@ -143,7 +143,8 @@ || OS(OPENBSD) \ || defined(unix) \ @@ -463,9 +543,9 @@ diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/PlatformOS.h source/Source/WTF/wtf/Pl #define WTF_OS_UNIX 1 #endif -diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/PlatformRegisters.h source/Source/WTF/wtf/PlatformRegisters.h ---- webkitgtk-2.49.1/Source/WTF/wtf/PlatformRegisters.h 2024-11-20 06:56:01.847236400 -0700 -+++ source/Source/WTF/wtf/PlatformRegisters.h 2025-05-10 19:12:14.761916702 -0600 +diff -ruwN source/Source/WTF/wtf/PlatformRegisters.h source-new/Source/WTF/wtf/PlatformRegisters.h +--- source/Source/WTF/wtf/PlatformRegisters.h 2024-11-20 20:56:01.847236400 +0700 ++++ source-new/Source/WTF/wtf/PlatformRegisters.h 2025-09-09 09:08:03.723988787 +0700 @@ -39,6 +39,8 @@ typedef ucontext_t mcontext_t; #elif OS(QNX) @@ -475,9 +555,9 @@ diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/PlatformRegisters.h source/Source/WTF #else #include #endif -diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/posix/CPUTimePOSIX.cpp source/Source/WTF/wtf/posix/CPUTimePOSIX.cpp ---- webkitgtk-2.49.1/Source/WTF/wtf/posix/CPUTimePOSIX.cpp 2023-09-18 01:56:45.363115500 -0600 -+++ source/Source/WTF/wtf/posix/CPUTimePOSIX.cpp 2025-05-10 19:30:23.676993788 -0600 +diff -ruwN source/Source/WTF/wtf/posix/CPUTimePOSIX.cpp source-new/Source/WTF/wtf/posix/CPUTimePOSIX.cpp +--- source/Source/WTF/wtf/posix/CPUTimePOSIX.cpp 2023-09-18 14:56:45.363115500 +0700 ++++ source-new/Source/WTF/wtf/posix/CPUTimePOSIX.cpp 2025-09-09 09:08:03.727988830 +0700 @@ -47,10 +47,14 @@ Seconds CPUTime::forCurrentThread() @@ -493,9 +573,9 @@ diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/posix/CPUTimePOSIX.cpp source/Source/ } } -diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/posix/FileHandlePOSIX.cpp source/Source/WTF/wtf/posix/FileHandlePOSIX.cpp ---- webkitgtk-2.49.1/Source/WTF/wtf/posix/FileHandlePOSIX.cpp 2025-03-21 05:07:10.828055100 -0600 -+++ source/Source/WTF/wtf/posix/FileHandlePOSIX.cpp 2025-05-10 19:26:54.845585962 -0600 +diff -ruwN source/Source/WTF/wtf/posix/FileHandlePOSIX.cpp source-new/Source/WTF/wtf/posix/FileHandlePOSIX.cpp +--- source/Source/WTF/wtf/posix/FileHandlePOSIX.cpp 2025-03-21 18:07:10.828055100 +0700 ++++ source-new/Source/WTF/wtf/posix/FileHandlePOSIX.cpp 2025-09-09 09:08:03.757989149 +0700 @@ -39,6 +39,10 @@ #include #include @@ -507,9 +587,9 @@ diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/posix/FileHandlePOSIX.cpp source/Sour namespace WTF::FileSystemImpl { std::optional FileHandle::read(std::span data) -diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/posix/ThreadingPOSIX.cpp source/Source/WTF/wtf/posix/ThreadingPOSIX.cpp ---- webkitgtk-2.49.1/Source/WTF/wtf/posix/ThreadingPOSIX.cpp 2025-03-05 03:09:47.149706400 -0700 -+++ source/Source/WTF/wtf/posix/ThreadingPOSIX.cpp 2025-05-10 19:19:09.728119543 -0600 +diff -ruwN source/Source/WTF/wtf/posix/ThreadingPOSIX.cpp source-new/Source/WTF/wtf/posix/ThreadingPOSIX.cpp +--- source/Source/WTF/wtf/posix/ThreadingPOSIX.cpp 2025-03-05 17:09:47.149706400 +0700 ++++ source-new/Source/WTF/wtf/posix/ThreadingPOSIX.cpp 2025-09-09 09:08:03.762989203 +0700 @@ -356,7 +356,7 @@ void Thread::changePriority(int delta) @@ -519,37 +599,3 @@ diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/posix/ThreadingPOSIX.cpp source/Sourc Locker locker { m_mutex }; int policy; -diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/RAMSize.cpp source/Source/WTF/wtf/RAMSize.cpp ---- webkitgtk-2.49.1/Source/WTF/wtf/RAMSize.cpp 2024-10-01 01:40:32.303785300 -0600 -+++ source/Source/WTF/wtf/RAMSize.cpp 2025-05-12 21:08:59.548628775 -0600 -@@ -46,7 +46,7 @@ - - namespace WTF { - --#if OS(WINDOWS) -+#if OS(WINDOWS) || defined(__redox__) - static constexpr size_t ramSizeGuess = 512 * MB; - #endif - -@@ -64,6 +64,9 @@ - struct sysinfo si; - sysinfo(&si); - return si.totalram * si.mem_unit; -+#elif defined(__redox__) -+ //TODO: implement using /scheme/mem -+ return ramSizeGuess; - #elif OS(UNIX) || OS(HAIKU) - long pages = sysconf(_SC_PHYS_PAGES); - long pageSize = sysconf(_SC_PAGE_SIZE); -diff -ruwN webkitgtk-2.49.1/Source/WTF/wtf/StackBounds.cpp source/Source/WTF/wtf/StackBounds.cpp ---- webkitgtk-2.49.1/Source/WTF/wtf/StackBounds.cpp 2025-03-18 02:33:00.063181400 -0600 -+++ source/Source/WTF/wtf/StackBounds.cpp 2025-05-10 19:16:43.976048337 -0600 -@@ -120,6 +120,8 @@ - #if HAVE(PTHREAD_NP_H) || OS(NETBSD) - // e.g. on FreeBSD 5.4, neundorf@kde.org - pthread_attr_get_np(thread, &sattr); -+#elif defined(__redox__) -+ //TODO - #else - // FIXME: this function is non-portable; other POSIX systems may have different np alternatives - pthread_getattr_np(thread, &sattr); From 1c8c7cd13f6fab0fd879e6c5b128ff21e409f2b7 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 8 Oct 2025 22:24:13 +0700 Subject: [PATCH 2897/3180] Port gitui --- recipes/wip/tui/gitui/recipe.toml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/recipes/wip/tui/gitui/recipe.toml b/recipes/wip/tui/gitui/recipe.toml index b8019c57..248b6792 100644 --- a/recipes/wip/tui/gitui/recipe.toml +++ b/recipes/wip/tui/gitui/recipe.toml @@ -1,13 +1,14 @@ -#TODO openssl-sys crate error +#TODO: Page fault [source] git = "https://github.com/extrawurst/gitui" + [build] template = "custom" dependencies = [ "openssl1", ] script = """ -export OPENSSL_DIR="${COOKBOOK_SYSROOT}" -export OPENSSL_STATIC="true" +DYNAMIC_INIT +export OPENSSL_NO_VENDOR=1 cookbook_cargo """ From beba0ecd22b9be827e13121b3bc6b2502905c3cb Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 8 Oct 2025 13:10:39 -0300 Subject: [PATCH 2898/3180] Add recipes --- recipes/wip/demos/servo-gtk/recipe.toml | 11 +++++++++++ recipes/wip/sound/soundscope/recipe.toml | 5 +++++ 2 files changed, 16 insertions(+) create mode 100644 recipes/wip/demos/servo-gtk/recipe.toml create mode 100644 recipes/wip/sound/soundscope/recipe.toml diff --git a/recipes/wip/demos/servo-gtk/recipe.toml b/recipes/wip/demos/servo-gtk/recipe.toml new file mode 100644 index 00000000..c512b546 --- /dev/null +++ b/recipes/wip/demos/servo-gtk/recipe.toml @@ -0,0 +1,11 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/nacho/servo-gtk" +[build] +template = "custom" +dependencies = [ + "gtk4" +] +script = """ +cookbook_cargo_examples browser +""" diff --git a/recipes/wip/sound/soundscope/recipe.toml b/recipes/wip/sound/soundscope/recipe.toml new file mode 100644 index 00000000..b1ccbbda --- /dev/null +++ b/recipes/wip/sound/soundscope/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/bananaofhappiness/soundscope" +[build] +template = "cargo" From fe32b18845abc390d543b21cb5253d6df56092d4 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 8 Oct 2025 13:46:15 -0300 Subject: [PATCH 2899/3180] Try to fix more CMake-based recipes --- recipes/wip/graphics/other/embree/recipe.toml | 20 +++------------ .../graphics/other/luxcorerender/recipe.toml | 20 +++------------ .../graphics/other/ospray-studio/recipe.toml | 20 +++------------ recipes/wip/graphics/other/ospray/recipe.toml | 20 +++------------ .../wip/graphics/other/paraview/recipe.toml | 20 +++------------ .../graphics/other/rawtherapee/recipe.toml | 20 +++------------ .../wip/graphics/other/toybrot/recipe.toml | 20 +++------------ .../other/tungsten-renderer/recipe.toml | 20 +++------------ .../graphics/other/vulkan-tools/recipe.toml | 25 +++++-------------- .../graphics/shaders/glsl-viewer/recipe.toml | 20 +++------------ 10 files changed, 34 insertions(+), 171 deletions(-) diff --git a/recipes/wip/graphics/other/embree/recipe.toml b/recipes/wip/graphics/other/embree/recipe.toml index 0c8bfcf4..d5a59203 100644 --- a/recipes/wip/graphics/other/embree/recipe.toml +++ b/recipes/wip/graphics/other/embree/recipe.toml @@ -1,25 +1,11 @@ -#TODO maybe incomplete script, see https://github.com/embree/embree#linux-and-macos +#TODO not compiled or tested +# build instructions: https://github.com/embree/embree#linux-and-macos [source] git = "https://github.com/embree/embree" rev = "be0accfd0b246e2b03355b8ee7710a22c1b49240" [build] -template = "custom" +template = "cmake" dependencies = [ "glfw", "onetbb", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/graphics/other/luxcorerender/recipe.toml b/recipes/wip/graphics/other/luxcorerender/recipe.toml index d4753ffb..34ef517e 100644 --- a/recipes/wip/graphics/other/luxcorerender/recipe.toml +++ b/recipes/wip/graphics/other/luxcorerender/recipe.toml @@ -1,10 +1,11 @@ -#TODO maybe incomplete script, see https://wiki.luxcorerender.org/Compiling_LuxCore +#TODO not compiled or tested +# build instructions: https://wiki.luxcorerender.org/Compiling_LuxCore #TODO probably missing dependencies [source] git = "https://github.com/LuxCoreRender/LuxCore" rev = "c8f10e9ddf5171fa705782a3da3f48123f96a4cb" [build] -template = "custom" +template = "cmake" dependencies = [ "bzip2", "libtiff", @@ -15,18 +16,3 @@ dependencies = [ "openimageio", "openexr", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/graphics/other/ospray-studio/recipe.toml b/recipes/wip/graphics/other/ospray-studio/recipe.toml index 573193cd..542e8cc3 100644 --- a/recipes/wip/graphics/other/ospray-studio/recipe.toml +++ b/recipes/wip/graphics/other/ospray-studio/recipe.toml @@ -1,9 +1,10 @@ -#TODO maybe incomplete script, see https://github.com/ospray/ospray_studio#standard-cmake-build +#TODO not compiled or tested +# build instructions: https://github.com/ospray/ospray_studio#standard-cmake-build [source] git = "https://github.com/ospray/ospray_studio" rev = "d2c83a67c841f1329f47cf9648a56b3dacbcdcaa" [build] -template = "custom" +template = "cmake" dependencies = [ "ospray", "onetbb", @@ -12,18 +13,3 @@ dependencies = [ "glfw", "open-image-denoise", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/graphics/other/ospray/recipe.toml b/recipes/wip/graphics/other/ospray/recipe.toml index 3a57813b..4470753e 100644 --- a/recipes/wip/graphics/other/ospray/recipe.toml +++ b/recipes/wip/graphics/other/ospray/recipe.toml @@ -1,9 +1,10 @@ -#TODO maybe incomplete script, see https://github.com/ospray/OSPRay#building-and-finding-ospray +#TODO not compiled or tested +# build instructions: https://github.com/ospray/OSPRay#building-and-finding-ospray [source] git = "https://github.com/ospray/OSPRay" rev = "66fa8108485a8a92ff31ad2e06081bbaf391bc26" [build] -template = "custom" +template = "cmake" dependencies = [ "librkcommon", "embree", @@ -12,18 +13,3 @@ dependencies = [ "openvkl", "open-image-denoise", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/graphics/other/paraview/recipe.toml b/recipes/wip/graphics/other/paraview/recipe.toml index 013791d3..3209ea4c 100644 --- a/recipes/wip/graphics/other/paraview/recipe.toml +++ b/recipes/wip/graphics/other/paraview/recipe.toml @@ -1,21 +1,7 @@ -#TODO maybe incomplete script, see https://kitware.github.io/paraviewweb/docs/configure_and_build_pvweb.html +#TODO not compiled or tested +# build instructions: https://kitware.github.io/paraviewweb/docs/configure_and_build_pvweb.html # build instructions (if the above doesn't work) - https://github.com/Kitware/ParaView/blob/master/Documentation/dev/build.md [source] tar = "https://www.paraview.org/paraview-downloads/download.php?submit=Download&version=v5.11&type=source&os=Sources&downloadFile=ParaView-v5.11.2.tar.xz" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/graphics/other/rawtherapee/recipe.toml b/recipes/wip/graphics/other/rawtherapee/recipe.toml index 4c8a04da..87c6b27c 100644 --- a/recipes/wip/graphics/other/rawtherapee/recipe.toml +++ b/recipes/wip/graphics/other/rawtherapee/recipe.toml @@ -1,9 +1,10 @@ -#TODO maybe incomplete script, see https://rawpedia.rawtherapee.com/Linux#Compile_RawTherapee +#TODO not compiled or tested +# build instructions: https://rawpedia.rawtherapee.com/Linux#Compile_RawTherapee #TODO missing dependencies, see https://rawpedia.rawtherapee.com/Linux#Dependencies [source] tar = "https://rawtherapee.com/shared/source/rawtherapee-5.9.tar.xz" [build] -template = "custom" +template = "cmake" dependencies = [ "gexiv2", "expat", @@ -19,18 +20,3 @@ dependencies = [ "libtiff", "zlib", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/graphics/other/toybrot/recipe.toml b/recipes/wip/graphics/other/toybrot/recipe.toml index cee45b81..29594f37 100644 --- a/recipes/wip/graphics/other/toybrot/recipe.toml +++ b/recipes/wip/graphics/other/toybrot/recipe.toml @@ -1,24 +1,10 @@ -#TODO maybe incomplete script, see https://gitlab.com/VileLasagna/toyBrot#building-toybrot +#TODO not compiled or tested +# build instructions: https://gitlab.com/VileLasagna/toyBrot#building-toybrot [source] git = "https://gitlab.com/VileLasagna/toyBrot" [build] -template = "custom" +template = "cmake" dependencies = [ "sdl2", "libpng", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/graphics/other/tungsten-renderer/recipe.toml b/recipes/wip/graphics/other/tungsten-renderer/recipe.toml index 6a1069dd..3ad8d162 100644 --- a/recipes/wip/graphics/other/tungsten-renderer/recipe.toml +++ b/recipes/wip/graphics/other/tungsten-renderer/recipe.toml @@ -1,20 +1,6 @@ -#TODO maybe incomplete script, see https://github.com/tunabrain/tungsten#compilation +#TODO not compiled or tested +# build instructions: https://github.com/tunabrain/tungsten#compilation [source] git = "https://github.com/tunabrain/tungsten" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/graphics/other/vulkan-tools/recipe.toml b/recipes/wip/graphics/other/vulkan-tools/recipe.toml index 9b95301e..d6b879a4 100644 --- a/recipes/wip/graphics/other/vulkan-tools/recipe.toml +++ b/recipes/wip/graphics/other/vulkan-tools/recipe.toml @@ -1,23 +1,10 @@ -#TODO probably need to be ported to Orbital -#TODO probably wrong script, see https://github.com/KhronosGroup/Vulkan-Tools/blob/main/BUILD.md +#TODO not compiled or tested +# build instructions: https://github.com/KhronosGroup/Vulkan-Tools/blob/main/BUILD.md [source] git = "https://github.com/KhronosGroup/Vulkan-Tools" rev = "7e75f4d389799129b79f90d1401f15f511796dbd" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On - -DUPDATE_DEPS=ON -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" +cmakeflags = [ + "-DUPDATE_DEPS=ON" +] diff --git a/recipes/wip/graphics/shaders/glsl-viewer/recipe.toml b/recipes/wip/graphics/shaders/glsl-viewer/recipe.toml index 438c2a1f..fad66faa 100644 --- a/recipes/wip/graphics/shaders/glsl-viewer/recipe.toml +++ b/recipes/wip/graphics/shaders/glsl-viewer/recipe.toml @@ -1,5 +1,5 @@ -#TODO maybe incomplete script, see https://github.com/patriciogonzalezvivo/glslViewer/wiki/Compile-on-linux#3-compile -#TODO port to orbital +#TODO not compiled or tested +# build instructions: https://github.com/patriciogonzalezvivo/glslViewer/wiki/Compile-on-linux#3-compile [source] git = "https://github.com/patriciogonzalezvivo/glslViewer" rev = "7eb6254cb4cedf03f1c78653f90905fe0c3b48fb" @@ -10,21 +10,9 @@ dependencies = [ "ncurses", "ncursesw", "ffmpeg6", - "glfw", + "glfw3", ] script = """ export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure +cookbook_cmake """ From 891c9a1efbb923627abb1d1c4de74e802e20e500 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 8 Oct 2025 14:02:23 -0300 Subject: [PATCH 2900/3180] Try to fix more CMake-based recipes --- recipes/wip/icons/breeze-icons/recipe.toml | 20 +++------------ .../wip/image/editors/inkscape/recipe.toml | 22 +++------------- recipes/wip/image/editors/krita/recipe.toml | 25 +++---------------- recipes/wip/image/editors/xpano/recipe.toml | 23 +++-------------- .../wip/image/other/converseen/recipe.toml | 20 +++------------ .../image/upscaling/upscayl-ncnn/recipe.toml | 21 +++------------- .../libs/audio/libopenshot-audio/recipe.toml | 19 ++------------ recipes/wip/libs/audio/zmusic/recipe.toml | 20 +++------------ .../wip/libs/graphics/libnoise/recipe.toml | 19 ++------------ recipes/wip/libs/gui/imgui/recipe.toml | 19 ++------------ recipes/wip/libs/image/libavif/recipe.toml | 20 +++------------ recipes/wip/libs/image/libheif/recipe.toml | 20 +++------------ recipes/wip/libs/image/libjxl/recipe.toml | 20 +++------------ 13 files changed, 38 insertions(+), 230 deletions(-) diff --git a/recipes/wip/icons/breeze-icons/recipe.toml b/recipes/wip/icons/breeze-icons/recipe.toml index 31717dab..2c1b4d96 100644 --- a/recipes/wip/icons/breeze-icons/recipe.toml +++ b/recipes/wip/icons/breeze-icons/recipe.toml @@ -1,20 +1,6 @@ -#TODO maybe incomplete script, lacking build instructions +#TODO not compiled or tested +# lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/breeze-icons-5.112.0.tar.xz" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/image/editors/inkscape/recipe.toml b/recipes/wip/image/editors/inkscape/recipe.toml index 2f0a492c..22f29f63 100644 --- a/recipes/wip/image/editors/inkscape/recipe.toml +++ b/recipes/wip/image/editors/inkscape/recipe.toml @@ -1,9 +1,10 @@ -#TODO probably wrong script, see https://inkscape.org/develop/getting-started/#compile +#TODO not compiled or tested #TODO missing dependencies, see https://gitlab.com/inkscape/inkscape-ci-docker/-/raw/master/install_dependencies.sh +# build instructions: https://inkscape.org/develop/getting-started/#compile [source] tar = "https://inkscape.org/gallery/item/44467/inkscape-1.3.1.tar.xz" [build] -template = "custom" +template = "cmake" dependencies = [ "boost", "glib", @@ -42,20 +43,3 @@ dependencies = [ "liblcms", "liblapack", ] -script = """ -DYNAMIC_INIT -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_CXX_COMPILER="${TARGET}-g++" - -DCMAKE_C_COMPILER="${TARGET}-gcc" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/image/editors/krita/recipe.toml b/recipes/wip/image/editors/krita/recipe.toml index 5a1d8695..2309295d 100644 --- a/recipes/wip/image/editors/krita/recipe.toml +++ b/recipes/wip/image/editors/krita/recipe.toml @@ -1,10 +1,10 @@ -#TODO probably wrong script, see https://docs.krita.org/en/untranslatable_pages/building_krita.html#building-on-linux -#TODO port to orbital -#TODO maybe missing dependencies +#TODO not compiled or tested +# build instructions: https://docs.krita.org/en/untranslatable_pages/building_krita.html#building-on-linux +# maybe missing dependencies [source] tar = "https://download.kde.org/stable/krita/5.2.1/krita-5.2.1.tar.gz" [build] -template = "custom" +template = "cmake" dependencies = [ "gexiv2", "ffmpeg6", @@ -51,20 +51,3 @@ dependencies = [ "libxsimd", "libxtl", ] -script = """ -DYNAMIC_INIT -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_CXX_COMPILER="${TARGET}-g++" - -DCMAKE_C_COMPILER="${TARGET}-gcc" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/image/editors/xpano/recipe.toml b/recipes/wip/image/editors/xpano/recipe.toml index a45f938d..1d597d65 100644 --- a/recipes/wip/image/editors/xpano/recipe.toml +++ b/recipes/wip/image/editors/xpano/recipe.toml @@ -1,29 +1,14 @@ -#TODO satisfy the dependencies and complete the script -# build instructions - https://github.com/krupkat/xpano#development -# linux script - https://github.com/krupkat/xpano/blob/main/misc/build/build-ubuntu-22.sh +#TODO not compiled or tested +# build instructions: https://github.com/krupkat/xpano#development +# linux script: https://github.com/krupkat/xpano/blob/main/misc/build/build-ubuntu-22.sh [source] git = "https://github.com/krupkat/xpano" rev = "5e626f66d2670a7f3fd04e805610ef98a506e401" [build] -template = "custom" +template = "cmake" dependencies = [ "gtk3", "opencv4", "sdl2", "libspdlog", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/image/other/converseen/recipe.toml b/recipes/wip/image/other/converseen/recipe.toml index bb11b110..c6586e60 100644 --- a/recipes/wip/image/other/converseen/recipe.toml +++ b/recipes/wip/image/other/converseen/recipe.toml @@ -1,24 +1,10 @@ -#TODO maybe incomplete script, see https://github.com/Faster3ck/Converseen/blob/main/INSTALL.md#install-converseen-using-qt6 +#TODO not compiled or tested +# build instructions: https://github.com/Faster3ck/Converseen/blob/main/INSTALL.md#install-converseen-using-qt6 [source] git = "https://github.com/Faster3ck/Converseen" rev = "9b2821b5ed6673a7abebbe4ee42f4718ab366485" [build] -template = "custom" +template = "cmake" dependencies = [ "qt6-base", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/image/upscaling/upscayl-ncnn/recipe.toml b/recipes/wip/image/upscaling/upscayl-ncnn/recipe.toml index e66ba69c..de2f4f7b 100644 --- a/recipes/wip/image/upscaling/upscayl-ncnn/recipe.toml +++ b/recipes/wip/image/upscaling/upscayl-ncnn/recipe.toml @@ -1,22 +1,7 @@ -#TODO incomplete script -# build instructions - https://github.com/upscayl/upscayl-ncnn/blob/master/README.md +#TODO not compiled or tested +# build instructions: https://github.com/upscayl/upscayl-ncnn/blob/master/README.md [source] git = "https://github.com/upscayl/upscayl-ncnn" rev = "22774bc42e2bc3c785b5b585d213d960b1348ad5" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/audio/libopenshot-audio/recipe.toml b/recipes/wip/libs/audio/libopenshot-audio/recipe.toml index 8c018375..5dce1ced 100644 --- a/recipes/wip/libs/audio/libopenshot-audio/recipe.toml +++ b/recipes/wip/libs/audio/libopenshot-audio/recipe.toml @@ -1,22 +1,7 @@ -#TODO maybe incomplete script +#TODO not compiled or tested #TODO determine dependencies [source] git = "https://github.com/OpenShot/libopenshot-audio" rev = "98f08a6d4a90f3644b6c2c68efb2cbd86c75d87a" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/audio/zmusic/recipe.toml b/recipes/wip/libs/audio/zmusic/recipe.toml index ca37a386..afd756ba 100644 --- a/recipes/wip/libs/audio/zmusic/recipe.toml +++ b/recipes/wip/libs/audio/zmusic/recipe.toml @@ -1,20 +1,6 @@ -#TODO probably wrong script, see https://github.com/ZDoom/ZMusic#readme +#TODO not compiled or tested +# build instructions: https://github.com/ZDoom/ZMusic#readme [source] git = "https://github.com/ZDoom/ZMusic" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/graphics/libnoise/recipe.toml b/recipes/wip/libs/graphics/libnoise/recipe.toml index 1e65b0e0..c9fff830 100644 --- a/recipes/wip/libs/graphics/libnoise/recipe.toml +++ b/recipes/wip/libs/graphics/libnoise/recipe.toml @@ -1,20 +1,5 @@ -#TODO compilation error +#TODO not compiled or tested [source] git = "https://github.com/qknight/libnoise" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/gui/imgui/recipe.toml b/recipes/wip/libs/gui/imgui/recipe.toml index c408c170..fd46155f 100644 --- a/recipes/wip/libs/gui/imgui/recipe.toml +++ b/recipes/wip/libs/gui/imgui/recipe.toml @@ -1,22 +1,7 @@ -#TODO compilation error +#TODO not compiled or tested # cmake information: https://github.com/ocornut/imgui/pull/3027 [source] git = "https://github.com/Qix-/imgui" branch = "cmake" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/image/libavif/recipe.toml b/recipes/wip/libs/image/libavif/recipe.toml index c5973522..faa25b32 100644 --- a/recipes/wip/libs/image/libavif/recipe.toml +++ b/recipes/wip/libs/image/libavif/recipe.toml @@ -1,21 +1,7 @@ -#TODO maybe incomplete script, see https://github.com/AOMediaCodec/libavif#build-notes +#TODO not compiled or tested +# build instructions: https://github.com/AOMediaCodec/libavif#build-notes [source] git = "https://github.com/AOMediaCodec/libavif" rev = "ecf2dfc1ef2908e0f4ddb0fdc03dd8db831d8ae7" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/image/libheif/recipe.toml b/recipes/wip/libs/image/libheif/recipe.toml index 06588445..532fd6b0 100644 --- a/recipes/wip/libs/image/libheif/recipe.toml +++ b/recipes/wip/libs/image/libheif/recipe.toml @@ -1,24 +1,10 @@ -#TODO maybe incomplete script, see https://github.com/strukturag/libheif#compiling +#TODO not compiled or tested +# build instructions: https://github.com/strukturag/libheif#compiling [source] tar = "https://github.com/strukturag/libheif/releases/download/v1.17.5/libheif-1.17.5.tar.gz" [build] -template = "custom" +template = "cmake" dependencies = [ "x265", "libde265", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/libs/image/libjxl/recipe.toml b/recipes/wip/libs/image/libjxl/recipe.toml index d84a5469..fc048b2c 100644 --- a/recipes/wip/libs/image/libjxl/recipe.toml +++ b/recipes/wip/libs/image/libjxl/recipe.toml @@ -1,9 +1,10 @@ -#TODO maybe incomplete script, see https://github.com/libjxl/libjxl/blob/main/BUILDING.md +#TODO not compiled or tested +# build instructions: https://github.com/libjxl/libjxl/blob/main/BUILDING.md [source] git = "https://github.com/libjxl/libjxl" rev = "954b460768c08a147abf47689ad69b0e7beff65e" [build] -template = "custom" +template = "cmake" dependencies = [ "libbrotli", "libjpeg", @@ -12,18 +13,3 @@ dependencies = [ "libwebp", "openexr", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" From 352c912ce9b01d28367fdcecb65212952c433a76 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 8 Oct 2025 14:30:46 -0300 Subject: [PATCH 2901/3180] Try to fix more CMake-based recipes --- recipes/wip/libs/image/libwebp2/recipe.toml | 20 ++----------- recipes/wip/libs/ml/libtorch/recipe.toml | 28 +++++-------------- .../wip/libs/other/bullet-physics/recipe.toml | 5 ++-- recipes/wip/libs/other/dcmtk/recipe.toml | 20 ++----------- recipes/wip/libs/other/freealut/recipe.toml | 20 ++----------- recipes/wip/libs/other/freeglut/recipe.toml | 12 +++----- recipes/wip/libs/other/gflags/recipe.toml | 20 ++----------- recipes/wip/libs/other/glfw3/recipe.toml | 21 ++------------ recipes/wip/libs/other/json-c/recipe.toml | 20 ++----------- recipes/wip/libs/other/lammps/recipe.toml | 20 ++----------- recipes/wip/libs/other/lib2geom/recipe.toml | 20 ++----------- recipes/wip/libs/other/libaom/recipe.toml | 20 ++----------- 12 files changed, 41 insertions(+), 185 deletions(-) diff --git a/recipes/wip/libs/image/libwebp2/recipe.toml b/recipes/wip/libs/image/libwebp2/recipe.toml index 1f7fa851..2bc5b9ae 100644 --- a/recipes/wip/libs/image/libwebp2/recipe.toml +++ b/recipes/wip/libs/image/libwebp2/recipe.toml @@ -1,20 +1,6 @@ -#TODO maybe incomplete script, see https://chromium.googlesource.com/codecs/libwebp2/#compiling +#TODO not compiled or tested +# build instructions: https://chromium.googlesource.com/codecs/libwebp2/#compiling [source] git = "https://chromium.googlesource.com/codecs/libwebp2" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/ml/libtorch/recipe.toml b/recipes/wip/libs/ml/libtorch/recipe.toml index eceb2687..535bfaee 100644 --- a/recipes/wip/libs/ml/libtorch/recipe.toml +++ b/recipes/wip/libs/ml/libtorch/recipe.toml @@ -1,25 +1,11 @@ -#TODO maybe incomplete script, see https://github.com/pytorch/pytorch/blob/main/docs/libtorch.rst#building-libtorch-using-cmake +#TODO not compiled or tested +# build instructions: https://github.com/pytorch/pytorch/blob/main/docs/libtorch.rst#building-libtorch-using-cmake [source] git = "https://github.com/pytorch/pytorch" branch = "release/2.3" [build] -template = "custom" -script = """ -mkdir pytorch-build -cd pytorch-build -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On - -DBUILD_SHARED_LIBS:BOOL=OFF - -DCMAKE_BUILD_TYPE:STRING=Release -DPYTHON_EXECUTABLE:PATH=`which python3` -DCMAKE_INSTALL_PREFIX:PATH=../pytorch-install ../pytorch -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" +cmakeflags = [ + "-DPYTHON_EXECUTABLE=`which python3`", + "-DCMAKE_INSTALL_PREFIX=../pytorch-install ../pytorch", +] diff --git a/recipes/wip/libs/other/bullet-physics/recipe.toml b/recipes/wip/libs/other/bullet-physics/recipe.toml index 3fe74819..9ebbf930 100644 --- a/recipes/wip/libs/other/bullet-physics/recipe.toml +++ b/recipes/wip/libs/other/bullet-physics/recipe.toml @@ -1,6 +1,7 @@ -#TODO missing script for Premake or CMake, see https://github.com/bulletphysics/bullet3#build-instructions-for-bullet-using-premake-you-can-also-use-cmake-instead +#TODO not compiled or tested +# build instructions: https://github.com/bulletphysics/bullet3#build-instructions-for-bullet-using-premake-you-can-also-use-cmake-instead [source] git = "https://github.com/bulletphysics/bullet3" rev = "2c204c49e56ed15ec5fcfa71d199ab6d6570b3f5" [build] -template = "custom" +template = "cmake" diff --git a/recipes/wip/libs/other/dcmtk/recipe.toml b/recipes/wip/libs/other/dcmtk/recipe.toml index 158ebe94..5ab1bfe9 100644 --- a/recipes/wip/libs/other/dcmtk/recipe.toml +++ b/recipes/wip/libs/other/dcmtk/recipe.toml @@ -1,8 +1,9 @@ -#TODO maybe incomplete script, see https://git.dcmtk.org/?p=dcmtk.git;a=blob;f=INSTALL;h=97087f9a05e65040264d90027912c736958e67f3;hb=HEAD#l667 +#TODO not compiled or tested +# build instructions: https://git.dcmtk.org/?p=dcmtk.git;a=blob;f=INSTALL;h=97087f9a05e65040264d90027912c736958e67f3;hb=HEAD#l667 [source] tar = "https://dicom.offis.de/download/dcmtk/dcmtk367/dcmtk-3.6.7.tar.gz" [build] -template = "custom" +template = "cmake" dependencies = [ "libiconv", "libicu", @@ -12,18 +13,3 @@ dependencies = [ "zlib", "openjpeg", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/libs/other/freealut/recipe.toml b/recipes/wip/libs/other/freealut/recipe.toml index a774784a..a8f6b267 100644 --- a/recipes/wip/libs/other/freealut/recipe.toml +++ b/recipes/wip/libs/other/freealut/recipe.toml @@ -1,20 +1,6 @@ -#TODO probably wrong script, see https://github.com/vancegroup/freealut#building-freealut +#TODO not compiled or tested +# build instructions: https://github.com/vancegroup/freealut#building-freealut [source] git = "https://github.com/vancegroup/freealut" [build] -template = "custom" -script = """ - COOKBOOK_CONFIGURE="cmake" - COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/other/freeglut/recipe.toml b/recipes/wip/libs/other/freeglut/recipe.toml index dbb525b9..159d39b0 100644 --- a/recipes/wip/libs/other/freeglut/recipe.toml +++ b/recipes/wip/libs/other/freeglut/recipe.toml @@ -1,4 +1,4 @@ -#TODO port to Orbital +#TODO not compiled or tested [source] tar = "https://github.com/freeglut/freeglut/releases/download/v3.4.0/freeglut-3.4.0.tar.gz" #blake3 = "08c8874d6ddad5be4860813865d4d4e2a84c294da0f3cf82a29e43920806b0da" @@ -9,6 +9,7 @@ dependencies = [ ] template = "custom" script = """ +DYNAMIC_INIT cat > redox.cmake < Date: Wed, 8 Oct 2025 14:37:51 -0300 Subject: [PATCH 2902/3180] Update libbrotli recipe TODO --- recipes/wip/libs/other/libbrotli/recipe.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/wip/libs/other/libbrotli/recipe.toml b/recipes/wip/libs/other/libbrotli/recipe.toml index cbf88052..ea24704b 100644 --- a/recipes/wip/libs/other/libbrotli/recipe.toml +++ b/recipes/wip/libs/other/libbrotli/recipe.toml @@ -1,4 +1,5 @@ -#TODO probably wrong script, see https://github.com/google/brotli#cmake +#TODO not compiled or tested +# build instructions: https://github.com/google/brotli#cmake [source] git = "https://github.com/google/brotli" rev = "ed738e842d2fbdf2d6459e39267a633c4a9b2f5d" From b2708efb1d40386ec9e8e934b05f68831c4ddb19 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 8 Oct 2025 14:43:42 -0300 Subject: [PATCH 2903/3180] Rename libatomic_ops recipe --- .../wip/libs/other/{libatomic_ops => libatomic-ops}/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/libs/other/{libatomic_ops => libatomic-ops}/recipe.toml (100%) diff --git a/recipes/wip/libs/other/libatomic_ops/recipe.toml b/recipes/wip/libs/other/libatomic-ops/recipe.toml similarity index 100% rename from recipes/wip/libs/other/libatomic_ops/recipe.toml rename to recipes/wip/libs/other/libatomic-ops/recipe.toml From f8873a43b33e73f3238ce328b63551bbd5b2be6c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 8 Oct 2025 14:55:56 -0300 Subject: [PATCH 2904/3180] Try to fix more CMake-based recipes --- recipes/wip/libs/other/libdeflate/recipe.toml | 20 +++---------------- recipes/wip/libs/other/libebml/recipe.toml | 20 +++---------------- recipes/wip/libs/other/libeigen/recipe.toml | 20 +++---------------- recipes/wip/libs/other/libevent/recipe.toml | 14 +------------ recipes/wip/libs/other/libfmt/recipe.toml | 20 +++---------------- recipes/wip/libs/other/libgav1/recipe.toml | 20 +++---------------- recipes/wip/libs/other/libgdal/recipe.toml | 20 +++---------------- recipes/wip/libs/other/libgit2/recipe.toml | 20 +++---------------- .../wip/libs/other/libgrantlee/recipe.toml | 20 +++---------------- recipes/wip/libs/other/libhidapi/recipe.toml | 20 +++---------------- 10 files changed, 28 insertions(+), 166 deletions(-) diff --git a/recipes/wip/libs/other/libdeflate/recipe.toml b/recipes/wip/libs/other/libdeflate/recipe.toml index 34f65cb8..f3b2e790 100644 --- a/recipes/wip/libs/other/libdeflate/recipe.toml +++ b/recipes/wip/libs/other/libdeflate/recipe.toml @@ -1,20 +1,6 @@ -#TODO probably wrong script, see https://github.com/ebiggers/libdeflate#building +#TODO not compiled or tested +# build instructions: https://github.com/ebiggers/libdeflate#building [source] tar = "https://github.com/ebiggers/libdeflate/releases/download/v1.19/libdeflate-1.19.tar.gz" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/other/libebml/recipe.toml b/recipes/wip/libs/other/libebml/recipe.toml index 55e5e998..886d0e64 100644 --- a/recipes/wip/libs/other/libebml/recipe.toml +++ b/recipes/wip/libs/other/libebml/recipe.toml @@ -1,20 +1,6 @@ -#TODO probably wrong script, see https://github.com/Matroska-Org/libebml#building-and-installing +#TODO not compiled or tested +# build instructions: https://github.com/Matroska-Org/libebml#building-and-installing [source] tar = "https://dl.matroska.org/downloads/libebml/libebml-1.4.4.tar.xz" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/other/libeigen/recipe.toml b/recipes/wip/libs/other/libeigen/recipe.toml index d47a471d..7167c7a9 100644 --- a/recipes/wip/libs/other/libeigen/recipe.toml +++ b/recipes/wip/libs/other/libeigen/recipe.toml @@ -1,21 +1,7 @@ -#TODO maybe incomplete script, see https://gitlab.com/libeigen/eigen/-/blob/master/INSTALL?ref_type=heads +#TODO not compiled or tested +# build instructions: https://gitlab.com/libeigen/eigen/-/blob/master/INSTALL?ref_type=heads [source] git = "https://gitlab.com/libeigen/eigen" rev = "3147391d946bb4b6c68edd901f2add6ac1f31f8c" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/other/libevent/recipe.toml b/recipes/wip/libs/other/libevent/recipe.toml index 8b6843e0..669ef8eb 100644 --- a/recipes/wip/libs/other/libevent/recipe.toml +++ b/recipes/wip/libs/other/libevent/recipe.toml @@ -11,19 +11,7 @@ dependencies = [ "openssl1", ] script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_INSTALL_PREFIX="${COOKBOOK_STAGE}/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On - -DEVENT__LIBRARY_TYPE=STATIC -"${COOKBOOK_SOURCE}" -) - +DYNAMIC_INIT # Can't call `cookbook_configure` because it sets DESTDIR (which causes an error) "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" diff --git a/recipes/wip/libs/other/libfmt/recipe.toml b/recipes/wip/libs/other/libfmt/recipe.toml index ba81a679..718baa3c 100644 --- a/recipes/wip/libs/other/libfmt/recipe.toml +++ b/recipes/wip/libs/other/libfmt/recipe.toml @@ -1,21 +1,7 @@ -#TODO probably wrong script, see https://fmt.dev/latest/usage.html#building-the-library +#TODO not compiled or tested +# build instructions: https://fmt.dev/latest/usage.html#building-the-library [source] git = "https://github.com/fmtlib/fmt" rev = "f5e54359df4c26b6230fc61d38aa294581393084" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/other/libgav1/recipe.toml b/recipes/wip/libs/other/libgav1/recipe.toml index cd6307f6..37e502a1 100644 --- a/recipes/wip/libs/other/libgav1/recipe.toml +++ b/recipes/wip/libs/other/libgav1/recipe.toml @@ -1,21 +1,7 @@ -#TODO maybe incomplete script, see https://chromium.googlesource.com/codecs/libgav1/#compile +#TODO not compiled or tested +# build instructions: https://chromium.googlesource.com/codecs/libgav1/#compile [source] git = "https://chromium.googlesource.com/codecs/libgav1" rev = "e386d8f1fb983200972d159b9be47fd5d0776708" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/other/libgdal/recipe.toml b/recipes/wip/libs/other/libgdal/recipe.toml index 56944b4c..ef303c13 100644 --- a/recipes/wip/libs/other/libgdal/recipe.toml +++ b/recipes/wip/libs/other/libgdal/recipe.toml @@ -1,20 +1,6 @@ -#TODO maybe incomplete script, see https://gdal.org/development/building_from_source.html +#TODO not compiled or tested +# build instructions: https://gdal.org/development/building_from_source.html [source] tar = "https://github.com/OSGeo/gdal/releases/download/v3.8.4/gdal-3.8.4.tar.gz" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/other/libgit2/recipe.toml b/recipes/wip/libs/other/libgit2/recipe.toml index 8b398019..f08d3e9a 100644 --- a/recipes/wip/libs/other/libgit2/recipe.toml +++ b/recipes/wip/libs/other/libgit2/recipe.toml @@ -1,24 +1,10 @@ -#TODO maybe wrong script, see https://github.com/libgit2/libgit2#building-libgit2---using-cmake +#TODO not compiled or tested +# build instructions: https://github.com/libgit2/libgit2#building-libgit2---using-cmake [source] git = "https://github.com/libgit2/libgit2" rev = "a2bde63741977ca0f4ef7db2f609df320be67a08" [build] -template = "custom" +template = "cmake" dependencies = [ "openssl1", ] -script = """ - COOKBOOK_CONFIGURE="cmake" - COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/libs/other/libgrantlee/recipe.toml b/recipes/wip/libs/other/libgrantlee/recipe.toml index 9e8d4f79..544697ad 100644 --- a/recipes/wip/libs/other/libgrantlee/recipe.toml +++ b/recipes/wip/libs/other/libgrantlee/recipe.toml @@ -1,23 +1,9 @@ -#TODO maybe incomplete script, see https://github.com/steveire/grantlee#installation +#TODO not compiled or tested +# build instructions: https://github.com/steveire/grantlee#installation [source] tar = "https://github.com/steveire/grantlee/releases/download/v5.3.1/grantlee-5.3.1.tar.gz" [build] -template = "custom" +template = "cmake" dependencies = [ "qt5-base", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/libs/other/libhidapi/recipe.toml b/recipes/wip/libs/other/libhidapi/recipe.toml index df68a63d..bc5e83c4 100644 --- a/recipes/wip/libs/other/libhidapi/recipe.toml +++ b/recipes/wip/libs/other/libhidapi/recipe.toml @@ -1,24 +1,10 @@ -#TODO maybe incomplete script, see https://github.com/libusb/hidapi/blob/master/BUILD.cmake.md +#TODO not compiled or tested +# build instructions: https://github.com/libusb/hidapi/blob/master/BUILD.cmake.md [source] git = "https://github.com/libusb/hidapi" rev = "d3013f0af3f4029d82872c1a9487ea461a56dee4" [build] -template = "custom" +template = "cmake" dependencies = [ "libiconv", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" From fefa095ed685bdc3b16d2787e39f14fd8769a8fe Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 8 Oct 2025 15:17:02 -0300 Subject: [PATCH 2905/3180] Try to fix more CMake-based recipes --- recipes/wip/libs/other/libimath/recipe.toml | 20 +++---------------- recipes/wip/libs/other/libimmer/recipe.toml | 20 +++---------------- recipes/wip/libs/other/libjasper/recipe.toml | 20 +++---------------- recipes/wip/libs/other/libkdcraw/recipe.toml | 20 +++---------------- .../libs/other/libkomparediff2/recipe.toml | 20 +++---------------- recipes/wip/libs/other/liblager/recipe.toml | 20 +++---------------- recipes/wip/libs/other/liblapack/recipe.toml | 20 +++---------------- recipes/wip/libs/other/liblensfun/recipe.toml | 20 +++---------------- recipes/wip/libs/other/libnlopt/recipe.toml | 20 +++---------------- .../wip/libs/other/librkcommon/recipe.toml | 20 +++---------------- 10 files changed, 30 insertions(+), 170 deletions(-) diff --git a/recipes/wip/libs/other/libimath/recipe.toml b/recipes/wip/libs/other/libimath/recipe.toml index 6462725c..9d9b8879 100644 --- a/recipes/wip/libs/other/libimath/recipe.toml +++ b/recipes/wip/libs/other/libimath/recipe.toml @@ -1,21 +1,7 @@ -#TODO maybe incomplete script, see https://imath.readthedocs.io/en/latest/install.html#linux-macos +#TODO not compiled or tested +# build instructions: https://imath.readthedocs.io/en/latest/install.html#linux-macos [source] git = "https://github.com/AcademySoftwareFoundation/Imath" rev = "d690a3fcff4e877ead5ae56c7e964595ade8a35e" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/other/libimmer/recipe.toml b/recipes/wip/libs/other/libimmer/recipe.toml index 4f665fea..aed3fe1e 100644 --- a/recipes/wip/libs/other/libimmer/recipe.toml +++ b/recipes/wip/libs/other/libimmer/recipe.toml @@ -1,21 +1,7 @@ -#TODO maybe incomplete script, see https://github.com/arximboldi/immer#usage +#TODO not compiled or tested +# build instructions: https://github.com/arximboldi/immer#usage [source] git = "https://github.com/arximboldi/immer" rev = "5875f7739a6c642ad58cbedadb509c86d421217e" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/other/libjasper/recipe.toml b/recipes/wip/libs/other/libjasper/recipe.toml index 6b1b8e72..bcdf1a65 100644 --- a/recipes/wip/libs/other/libjasper/recipe.toml +++ b/recipes/wip/libs/other/libjasper/recipe.toml @@ -1,20 +1,6 @@ -#TODO maybe incomplete script, see https://github.com/jasper-software/jasper/blob/master/INSTALL.txt +#TODO not compiled or tested +# build instructions: https://github.com/jasper-software/jasper/blob/master/INSTALL.txt [source] tar = "https://github.com/jasper-software/jasper/releases/download/version-4.1.1/jasper-4.1.1.tar.gz" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/other/libkdcraw/recipe.toml b/recipes/wip/libs/other/libkdcraw/recipe.toml index c551a1f4..ea4789c8 100644 --- a/recipes/wip/libs/other/libkdcraw/recipe.toml +++ b/recipes/wip/libs/other/libkdcraw/recipe.toml @@ -1,25 +1,11 @@ -#TODO maybe incomplete script, see https://invent.kde.org/graphics/libkdcraw/-/blob/master/README?ref_type=heads +#TODO not compiled or tested +# build instructions: https://invent.kde.org/graphics/libkdcraw/-/blob/master/README?ref_type=heads [source] git = "https://invent.kde.org/graphics/libkdcraw" rev = "fbd01409c8009f403bccac6776fe4cfefa57d5bd" [build] -template = "custom" +template = "cmake" dependencies = [ "libraw", "qt5-base", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/libs/other/libkomparediff2/recipe.toml b/recipes/wip/libs/other/libkomparediff2/recipe.toml index 3f1222db..cdc05c41 100644 --- a/recipes/wip/libs/other/libkomparediff2/recipe.toml +++ b/recipes/wip/libs/other/libkomparediff2/recipe.toml @@ -1,21 +1,7 @@ -#TODO maybe incomplete script, lacking build instructions +#TODO not compiled or tested +# lacking build instructions [source] git = "https://invent.kde.org/sdk/libkomparediff2" rev = "ea9034ee3e4952862a937255bc6cc4ee392907f6" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/other/liblager/recipe.toml b/recipes/wip/libs/other/liblager/recipe.toml index 9c03020c..9b9782c7 100644 --- a/recipes/wip/libs/other/liblager/recipe.toml +++ b/recipes/wip/libs/other/liblager/recipe.toml @@ -1,24 +1,10 @@ -#TODO maybe incomplete script, see https://github.com/arximboldi/lager#usage +#TODO not compiled or tested +# build instructions: https://github.com/arximboldi/lager#usage [source] git = "https://github.com/arximboldi/lager" [build] -template = "custom" +template = "cmake" dependencies = [ "libzug", "boost", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/libs/other/liblapack/recipe.toml b/recipes/wip/libs/other/liblapack/recipe.toml index 77b1d122..fd27e0d5 100644 --- a/recipes/wip/libs/other/liblapack/recipe.toml +++ b/recipes/wip/libs/other/liblapack/recipe.toml @@ -1,21 +1,7 @@ -#TODO maybe incomplete script, see https://github.com/Reference-LAPACK/lapack#installation +#TODO not compiled or tested +# build instructions: https://github.com/Reference-LAPACK/lapack#installation [source] git = "https://github.com/Reference-LAPACK/lapack" rev = "04b044e020a3560ccfa9988c8a80a1fb7083fc2e" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/other/liblensfun/recipe.toml b/recipes/wip/libs/other/liblensfun/recipe.toml index e132a11f..428eff77 100644 --- a/recipes/wip/libs/other/liblensfun/recipe.toml +++ b/recipes/wip/libs/other/liblensfun/recipe.toml @@ -1,25 +1,11 @@ -#TODO maybe incomplete script, see https://github.com/lensfun/lensfun?tab=readme-ov-file#build-instructions +#TODO not compiled or tested +# build instructions: https://github.com/lensfun/lensfun?tab=readme-ov-file#build-instructions [source] git = "https://github.com/lensfun/lensfun" rev = "35b19fb38e7250ea646709ef9e528d54a6a79648" [build] -template = "custom" +template = "cmake" dependencies = [ "glib", "libpng", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/libs/other/libnlopt/recipe.toml b/recipes/wip/libs/other/libnlopt/recipe.toml index f4db165c..39fbb718 100644 --- a/recipes/wip/libs/other/libnlopt/recipe.toml +++ b/recipes/wip/libs/other/libnlopt/recipe.toml @@ -1,21 +1,7 @@ -#TODO maybe incomplete script, see https://github.com/stevengj/nlopt#readme +#TODO not compiled or tested +# build instructions: https://github.com/stevengj/nlopt#readme [source] git = "https://github.com/stevengj/nlopt" rev = "09b3c2a6da71cabcb98d2c8facc6b83d2321ed71" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/other/librkcommon/recipe.toml b/recipes/wip/libs/other/librkcommon/recipe.toml index 10710db0..c7bb01c0 100644 --- a/recipes/wip/libs/other/librkcommon/recipe.toml +++ b/recipes/wip/libs/other/librkcommon/recipe.toml @@ -1,24 +1,10 @@ -#TODO maybe incomplete script, see https://github.com/ospray/rkcommon#building +#TODO not compiled or tested +# build instructions: https://github.com/ospray/rkcommon#building [source] git = "https://github.com/ospray/rkcommon" rev = "f15291d4789a53e5980fd9b3d2639f705d675dd7" [build] -template = "custom" +template = "cmake" dependencies = [ "onetbb", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" From b5feb0d9cb323acc1aea9a3ba5069d992adb559a Mon Sep 17 00:00:00 2001 From: Wildan M Date: Thu, 9 Oct 2025 13:34:30 +0700 Subject: [PATCH 2906/3180] Set cargo offline flags when offline cookbook is set --- src/bin/cook.rs | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 5c9fc95a..45787cc0 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -750,6 +750,7 @@ fn build( target_dir: &Path, name: &PackageName, recipe: &Recipe, + offline_mode: bool, check_source: bool, ) -> Result<(PathBuf, BTreeSet), String> { let sysroot_dir = target_dir.join("sysroot"); @@ -889,6 +890,7 @@ export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" build_type=release install_flags= build_flags=--release +offline_flags= if [ ! -z "${COOKBOOK_DEBUG}" ] then install_flags=--debug @@ -898,6 +900,11 @@ then export CPPFLAGS="${CPPFLAGS} -g" fi +if [ ! -z "${COOKBOOK_OFFLINE}" ] +then +offline_flags=--offline +fi + # cargo template COOKBOOK_CARGO="${COOKBOOK_REDOXER}" function cookbook_cargo { @@ -907,6 +914,7 @@ function cookbook_cargo { --locked \ --no-track \ ${install_flags} \ + ${offline_flags} \ -j "${COOKBOOK_MAKE_JOBS}" "$@" } @@ -918,7 +926,7 @@ function cookbook_cargo_examples { "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/${PACKAGE_PATH}/Cargo.toml" \ --example "${example}" \ - ${build_flags} -j "${COOKBOOK_MAKE_JOBS}" + ${build_flags} ${offline_flags} -j "${COOKBOOK_MAKE_JOBS}" mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ "target/${TARGET}/${build_type}/examples/${example}" \ @@ -934,7 +942,7 @@ function cookbook_cargo_packages { "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/${PACKAGE_PATH}/Cargo.toml" \ --package "${package}" \ - ${build_flags} -j "${COOKBOOK_MAKE_JOBS}" + ${build_flags} ${offline_flags} -j "${COOKBOOK_MAKE_JOBS}" mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ "target/${TARGET}/${build_type}/${package}" \ @@ -1187,6 +1195,9 @@ done command.env("COOKBOOK_STAGE", &cookbook_stage); command.env("COOKBOOK_SOURCE", &cookbook_source); command.env("COOKBOOK_SYSROOT", &cookbook_sysroot); + if offline_mode { + command.env("COOKBOOK_OFFLINE", "1"); + } command }; @@ -1363,9 +1374,16 @@ fn cook( let target_dir = create_target_dir(recipe_dir)?; - let (stage_dir, auto_deps) = - build(recipe_dir, &source_dir, &target_dir, name, recipe, !is_deps) - .map_err(|err| format!("failed to build: {}", err))?; + let (stage_dir, auto_deps) = build( + recipe_dir, + &source_dir, + &target_dir, + name, + recipe, + is_offline, + !is_deps, + ) + .map_err(|err| format!("failed to build: {}", err))?; let _package_file = package(&stage_dir, &target_dir, name, recipe, &auto_deps) .map_err(|err| format!("failed to package: {}", err))?; From 9596f24ad00cd06c36053678a0f2fc2601561678 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Fri, 10 Oct 2025 01:31:44 +0000 Subject: [PATCH 2907/3180] Update reading --- recipes/wip/monitors/htop/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/monitors/htop/recipe.toml b/recipes/wip/monitors/htop/recipe.toml index 8730648e..f4e554be 100644 --- a/recipes/wip/monitors/htop/recipe.toml +++ b/recipes/wip/monitors/htop/recipe.toml @@ -1,4 +1,4 @@ -#TODO "unsupported architecture" +#TODO Promote [source] git = "https://github.com/willnode/htop" branch = "redox" From a83264396b18d0d7162d856dc5bd4a9bf6eb1deb Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Fri, 10 Oct 2025 23:39:23 +0000 Subject: [PATCH 2908/3180] Port nodejs --- recipes/libs/libuv/recipe.toml | 4 +- recipes/libs/libuv/redox.patch | 123 +++- recipes/wip/dev/lang/nodejs-21/recipe.toml | 49 ++ recipes/wip/dev/lang/nodejs-21/redox.patch | 540 ++++++++++++++++++ .../lang/{nodejs => nodejs-24}/01_redox.patch | 0 .../lang/{nodejs => nodejs-24}/recipe.toml | 25 +- recipes/wip/dev/lang/nodejs-lts/recipe.toml | 5 - recipes/wip/libs/net/c-ares/recipe.toml | 6 + recipes/wip/libs/net/nghttp3/recipe.toml | 6 + recipes/wip/libs/net/ngtcp2/recipe.toml | 14 + recipes/wip/libs/other/simdjson/recipe.toml | 18 +- recipes/wip/libs/other/simdutf/recipe.toml | 9 + 12 files changed, 748 insertions(+), 51 deletions(-) create mode 100644 recipes/wip/dev/lang/nodejs-21/recipe.toml create mode 100644 recipes/wip/dev/lang/nodejs-21/redox.patch rename recipes/wip/dev/lang/{nodejs => nodejs-24}/01_redox.patch (100%) rename recipes/wip/dev/lang/{nodejs => nodejs-24}/recipe.toml (60%) delete mode 100644 recipes/wip/dev/lang/nodejs-lts/recipe.toml create mode 100644 recipes/wip/libs/net/c-ares/recipe.toml create mode 100644 recipes/wip/libs/net/nghttp3/recipe.toml create mode 100644 recipes/wip/libs/net/ngtcp2/recipe.toml create mode 100644 recipes/wip/libs/other/simdutf/recipe.toml diff --git a/recipes/libs/libuv/recipe.toml b/recipes/libs/libuv/recipe.toml index d6b4f957..23b563c3 100644 --- a/recipes/libs/libuv/recipe.toml +++ b/recipes/libs/libuv/recipe.toml @@ -1,6 +1,6 @@ [source] -tar = "https://dist.libuv.org/dist/v1.45.0/libuv-v1.45.0.tar.gz" -blake3 = "b78eaba37bfa5fea75accc6d70c67358a4d0b6bb2dfb79b9bb17cb5478cdf797" +tar = "https://dist.libuv.org/dist/v1.51.0/libuv-v1.51.0.tar.gz" +blake3 = "e8b5e68bc2d0776ac4ea67df59d694fca58d5cc570c103443a2284e723d01fc2" patches = ["redox.patch"] [build] diff --git a/recipes/libs/libuv/redox.patch b/recipes/libs/libuv/redox.patch index d5405adf..a99c1c54 100644 --- a/recipes/libs/libuv/redox.patch +++ b/recipes/libs/libuv/redox.patch @@ -1,12 +1,12 @@ diff -ruwN source/CMakeLists.txt source-new/CMakeLists.txt ---- source/CMakeLists.txt 2023-05-19 18:21:01.000000000 +0700 -+++ source-new/CMakeLists.txt 2025-09-16 14:15:31.813140608 +0700 +--- source/CMakeLists.txt 2025-04-25 16:50:27.000000000 +0700 ++++ source-new/CMakeLists.txt 2025-10-10 11:19:40.329762962 +0700 @@ -1,3 +1,4 @@ +set (CMAKE_CXX_STANDARD 99) - cmake_minimum_required(VERSION 3.4) + cmake_minimum_required(VERSION 3.10) if(POLICY CMP0091) -@@ -312,6 +313,18 @@ +@@ -323,6 +324,18 @@ src/unix/hurd.c) endif() @@ -26,8 +26,8 @@ diff -ruwN source/CMakeLists.txt source-new/CMakeLists.txt list(APPEND uv_defines _GNU_SOURCE _POSIX_C_SOURCE=200112) list(APPEND uv_libraries dl rt) diff -ruwN source/include/uv/unix.h source-new/include/uv/unix.h ---- source/include/uv/unix.h 2023-05-19 18:21:01.000000000 +0700 -+++ source-new/include/uv/unix.h 2025-09-16 11:42:40.882554686 +0700 +--- source/include/uv/unix.h 2025-04-25 16:50:27.000000000 +0700 ++++ source-new/include/uv/unix.h 2025-10-10 11:18:29.024386515 +0700 @@ -66,6 +66,7 @@ defined(__MSYS__) || \ defined(__HAIKU__) || \ @@ -37,9 +37,9 @@ diff -ruwN source/include/uv/unix.h source-new/include/uv/unix.h # include "uv/posix.h" #endif diff -ruwN source/src/unix/core.c source-new/src/unix/core.c ---- source/src/unix/core.c 2023-05-19 18:21:01.000000000 +0700 -+++ source-new/src/unix/core.c 2025-09-16 11:42:40.882554686 +0700 -@@ -97,6 +97,10 @@ +--- source/src/unix/core.c 2025-04-25 16:50:27.000000000 +0700 ++++ source-new/src/unix/core.c 2025-10-10 11:23:22.143824390 +0700 +@@ -110,6 +110,10 @@ # include #endif @@ -50,7 +50,7 @@ diff -ruwN source/src/unix/core.c source-new/src/unix/core.c static void uv__run_pending(uv_loop_t* loop); /* Verify that uv_buf_t is ABI-compatible with struct iovec. */ -@@ -709,7 +713,8 @@ +@@ -722,7 +726,8 @@ defined(__FreeBSD__) || \ defined(__NetBSD__) || \ defined(__OpenBSD__) || \ @@ -60,10 +60,39 @@ diff -ruwN source/src/unix/core.c source-new/src/unix/core.c ssize_t rc; rc = recvmsg(fd, msg, flags | MSG_CMSG_CLOEXEC); if (rc == -1) +@@ -1644,6 +1649,11 @@ + * So the output parameter priority is actually the nice value. + */ + int uv_thread_getpriority(uv_thread_t tid, int* priority) { ++#ifdef __redox__ ++ if (priority == NULL) ++ return UV_EINVAL; ++ *priority = 0; ++#else + int r; + int policy; + struct sched_param param; +@@ -1670,6 +1680,7 @@ + #endif + + *priority = param.sched_priority; ++#endif + return 0; + } + +@@ -1695,7 +1706,7 @@ + * If the function fails, the return value is non-zero. + */ + int uv_thread_setpriority(uv_thread_t tid, int priority) { +-#if !defined(__GNU__) ++#if !defined(__GNU__) && !defined(__redox__) + int r; + int min; + int max; diff -ruwN source/src/unix/fs.c source-new/src/unix/fs.c ---- source/src/unix/fs.c 2023-05-19 18:21:01.000000000 +0700 -+++ source-new/src/unix/fs.c 2025-09-16 11:42:40.882554686 +0700 -@@ -87,7 +87,8 @@ +--- source/src/unix/fs.c 2025-04-25 16:50:27.000000000 +0700 ++++ source-new/src/unix/fs.c 2025-10-10 11:18:29.024993834 +0700 +@@ -77,7 +77,8 @@ defined(__MVS__) || \ defined(__NetBSD__) || \ defined(__HAIKU__) || \ @@ -73,7 +102,7 @@ diff -ruwN source/src/unix/fs.c source-new/src/unix/fs.c # include #else # include -@@ -648,13 +649,13 @@ +@@ -683,13 +684,13 @@ defined(__MVS__) || \ defined(__NetBSD__) || \ defined(__HAIKU__) || \ @@ -89,7 +118,7 @@ diff -ruwN source/src/unix/fs.c source-new/src/unix/fs.c if (0 != statfs(req->path, &buf)) #endif /* defined(__sun) */ return -1; -@@ -670,7 +671,8 @@ +@@ -705,7 +706,8 @@ defined(__OpenBSD__) || \ defined(__NetBSD__) || \ defined(__HAIKU__) || \ @@ -100,8 +129,8 @@ diff -ruwN source/src/unix/fs.c source-new/src/unix/fs.c #else stat_fs->f_type = buf.f_type; diff -ruwN source/src/unix/proctitle.c source-new/src/unix/proctitle.c ---- source/src/unix/proctitle.c 2023-05-19 18:21:01.000000000 +0700 -+++ source-new/src/unix/proctitle.c 2025-09-16 11:42:40.882554686 +0700 +--- source/src/unix/proctitle.c 2025-04-25 16:50:27.000000000 +0700 ++++ source-new/src/unix/proctitle.c 2025-10-10 11:18:29.025229760 +0700 @@ -30,7 +30,13 @@ size_t cap; /* Maximum capacity. Computed once in uv_setup_args(). */ }; @@ -118,7 +147,7 @@ diff -ruwN source/src/unix/proctitle.c source-new/src/unix/proctitle.c static uv_once_t process_title_mutex_once = UV_ONCE_INIT; diff -ruwN source/src/unix/redox.c source-new/src/unix/redox.c --- source/src/unix/redox.c 1970-01-01 07:00:00.000000000 +0700 -+++ source-new/src/unix/redox.c 2025-09-16 14:28:29.209614311 +0700 ++++ source-new/src/unix/redox.c 2025-10-10 11:18:29.028345924 +0700 @@ -0,0 +1,102 @@ +/* Copyright libuv contributors. All rights reserved. + * @@ -223,8 +252,8 @@ diff -ruwN source/src/unix/redox.c source-new/src/unix/redox.c + int count) { +} diff -ruwN source/src/unix/stream.c source-new/src/unix/stream.c ---- source/src/unix/stream.c 2023-05-19 18:21:01.000000000 +0700 -+++ source-new/src/unix/stream.c 2025-09-16 11:42:40.883554697 +0700 +--- source/src/unix/stream.c 2025-04-25 16:50:27.000000000 +0700 ++++ source-new/src/unix/stream.c 2025-10-10 11:18:29.028522718 +0700 @@ -29,7 +29,14 @@ #include @@ -256,9 +285,59 @@ diff -ruwN source/src/unix/stream.c source-new/src/unix/stream.c union uv__cmsg { struct cmsghdr hdr; +diff -ruwN source/src/unix/tcp.c source-new/src/unix/tcp.c +--- source/src/unix/tcp.c 2025-04-25 16:50:27.000000000 +0700 ++++ source-new/src/unix/tcp.c 2025-10-10 11:26:03.504101758 +0700 +@@ -31,7 +31,7 @@ + #include + + /* ifaddrs is not implemented on AIX and IBM i PASE */ +-#if !defined(_AIX) ++#if !defined(_AIX) && !defined(__redox__) + #include + #endif + +@@ -228,7 +228,7 @@ + static int uv__ipv6_link_local_scope_id(void) { + struct sockaddr_in6* a6; + int rv; +-#if defined(_AIX) ++#if defined(_AIX) || defined(__redox__) + /* AIX & IBM i do not have ifaddrs + * so fallback to use uv_interface_addresses */ + uv_interface_address_t* interfaces; +@@ -268,7 +268,7 @@ + } + + freeifaddrs(ifa); +-#endif /* defined(_AIX) */ ++#endif /* defined(_AIX) || defined(__redox__) */ + + return rv; + } +diff -ruwN source/src/unix/thread.c source-new/src/unix/thread.c +--- source/src/unix/thread.c 2025-04-25 16:50:27.000000000 +0700 ++++ source-new/src/unix/thread.c 2025-10-10 11:25:10.712328011 +0700 +@@ -897,7 +897,7 @@ + abort(); + } + +-#if defined(_AIX) || defined(__MVS__) || defined(__PASE__) ++#if defined(_AIX) || defined(__redox__) || defined(__MVS__) || defined(__PASE__) + int uv__thread_setname(const char* name) { + return UV_ENOSYS; + } +@@ -937,6 +937,7 @@ + + #if (defined(__ANDROID_API__) && __ANDROID_API__ < 26) || \ + defined(_AIX) || \ ++ defined(__redox__) || \ + defined(__MVS__) || \ + defined(__PASE__) + int uv__thread_getname(uv_thread_t* tid, char* name, size_t size) { diff -ruwN source/src/unix/udp.c source-new/src/unix/udp.c ---- source/src/unix/udp.c 2023-05-19 18:21:01.000000000 +0700 -+++ source-new/src/unix/udp.c 2025-09-16 11:42:40.883554697 +0700 +--- source/src/unix/udp.c 2025-04-25 16:50:27.000000000 +0700 ++++ source-new/src/unix/udp.c 2025-10-10 11:18:29.028778883 +0700 @@ -31,6 +31,12 @@ #include #endif diff --git a/recipes/wip/dev/lang/nodejs-21/recipe.toml b/recipes/wip/dev/lang/nodejs-21/recipe.toml new file mode 100644 index 00000000..7b5d1d6d --- /dev/null +++ b/recipes/wip/dev/lang/nodejs-21/recipe.toml @@ -0,0 +1,49 @@ +#TODO page fault +[source] +tar = "https://nodejs.org/dist/v21.7.3/node-v21.7.3.tar.xz" +blake3 = "95a56db4f9729b2f8384ab58ccb2ec0c41da05991f7400ef97bd76748d77870b" +patches = ["redox.patch"] + +[build] +template = "custom" +dependencies = [ + "libbrotli", + "c-ares", + "libuv", + "ngtcp2", + "nghttp2", + "nghttp3", + "openssl3", + "sqlite3", + "zlib", + "zstd", +] +script = """ +DYNAMIC_INIT +export PYTHONDONTWRITEBYTECODE=1 +export CC_host="$CC_WRAPPER gcc" CXX_host="$CC_WRAPPER g++" + +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ + +case "${TARGET}" in + x86-unknown-redox) export NODE_CPU=x32;; + x86_64-unknown-redox) export NODE_CPU=x64;; + aarch64-unknown-redox) export NODE_CPU=arm64;; +esac + +COOKBOOK_CONFIGURE_FLAGS=( + --prefix=/usr + --dest-cpu=${NODE_CPU} + --dest-os=redox + --shared-cares + --shared-libuv + --shared-ngtcp2 + --shared-nghttp2 + --shared-nghttp3 + --shared-openssl + --shared-zlib + --cross-compiling +) +COOKBOOK_CONFIGURE="./configure" +cookbook_configure +""" diff --git a/recipes/wip/dev/lang/nodejs-21/redox.patch b/recipes/wip/dev/lang/nodejs-21/redox.patch new file mode 100644 index 00000000..3a665e90 --- /dev/null +++ b/recipes/wip/dev/lang/nodejs-21/redox.patch @@ -0,0 +1,540 @@ +diff -ruwN source/configure.py source-new/configure.py +--- source/configure.py 2024-04-10 19:46:11.000000000 +0700 ++++ source-new/configure.py 2025-10-10 13:46:04.244040340 +0700 +@@ -46,7 +46,7 @@ + parser = argparse.ArgumentParser() + + valid_os = ('win', 'mac', 'solaris', 'freebsd', 'openbsd', 'linux', +- 'android', 'aix', 'cloudabi', 'os400', 'ios') ++ 'android', 'aix', 'cloudabi', 'os400', 'ios', 'redox') + valid_arch = ('arm', 'arm64', 'ia32', 'mips', 'mipsel', 'mips64el', 'ppc', + 'ppc64', 'x64', 'x86', 'x86_64', 's390x', 'riscv64', 'loong64') + valid_arm_float_abi = ('soft', 'softfp', 'hard') +diff -ruwN source/deps/v8/bazel/config/BUILD.bazel source-new/deps/v8/bazel/config/BUILD.bazel +--- source/deps/v8/bazel/config/BUILD.bazel 2024-04-10 19:46:12.000000000 +0700 ++++ source-new/deps/v8/bazel/config/BUILD.bazel 2025-10-10 15:52:40.317126983 +0700 +@@ -144,6 +144,11 @@ + ) + + config_setting( ++ name = "is_redox", ++ constraint_values = ["@platforms//os:redox"], ++) ++ ++config_setting( + name = "is_linux", + constraint_values = ["@platforms//os:linux"], + ) +@@ -204,6 +209,7 @@ + selects.config_setting_group( + name = "is_non_android_posix", + match_any = [ ++ ":is_redox", + ":is_linux", + ":is_macos", + ], +diff -ruwN source/deps/v8/BUILD.bazel source-new/deps/v8/BUILD.bazel +--- source/deps/v8/BUILD.bazel 2024-04-10 19:46:12.000000000 +0700 ++++ source-new/deps/v8/BUILD.bazel 2025-10-10 16:05:33.775461039 +0700 +@@ -758,6 +758,11 @@ + "src/base/debug/stack_trace_posix.cc", + "src/base/platform/platform-darwin.cc", + ], ++ "@v8//bazel/config:is_redox": [ ++ "src/base/debug/stack_trace_posix.cc", ++ "src/base/platform/platform-redox.cc", ++ "src/base/platform/platform-redox.h", ++ ], + "@v8//bazel/config:is_windows": [ + "src/base/debug/stack_trace_win.cc", + "src/base/platform/platform-win32.cc", +diff -ruwN source/deps/v8/BUILD.gn source-new/deps/v8/BUILD.gn +--- source/deps/v8/BUILD.gn 2024-04-10 19:46:12.000000000 +0700 ++++ source-new/deps/v8/BUILD.gn 2025-10-10 21:27:40.939874152 +0700 +@@ -5538,8 +5538,9 @@ + if (v8_enable_webassembly) { + # iOS Xcode simulator builds run on an x64 target. iOS and macOS are both + # based on Darwin and thus POSIX-compliant to a similar degree. +- if (is_linux || is_chromeos || is_mac || is_ios || ++ if (is_linux || is_redox || is_chromeos || is_mac || is_ios || + target_os == "freebsd") { ++ assert(false, "gatchs") + sources += [ + "src/trap-handler/handler-inside-posix.cc", + "src/trap-handler/handler-outside-posix.cc", +@@ -5590,8 +5591,8 @@ + if (v8_enable_webassembly) { + # Trap handling is enabled on arm64 Mac and Linux and in simulators on + # x64 on Linux, Mac, and Windows. +- if ((current_cpu == "arm64" && (is_linux || is_chromeos || is_apple)) || +- (current_cpu == "x64" && (is_linux || is_chromeos || is_mac))) { ++ if ((current_cpu == "arm64" && (is_linux || is_redox || is_chromeos || is_apple)) || ++ (current_cpu == "x64" && (is_linux || is_redox || is_chromeos || is_mac))) { + sources += [ + "src/trap-handler/handler-inside-posix.cc", + "src/trap-handler/handler-outside-posix.cc", +@@ -6174,6 +6175,11 @@ + "src/base/debug/stack_trace_posix.cc", + "src/base/platform/platform-darwin.cc", + ] ++ } else if (is_redox) { ++ sources += [ ++ "src/base/debug/stack_trace_posix.cc", ++ "src/base/platform/platform-redox.cc", ++ ] + } else if (is_ios) { + sources += [ + "src/base/debug/stack_trace_posix.cc", +diff -ruwN source/deps/v8/include/v8config.h source-new/deps/v8/include/v8config.h +--- source/deps/v8/include/v8config.h 2024-04-10 19:46:12.000000000 +0700 ++++ source-new/deps/v8/include/v8config.h 2025-10-10 22:03:04.057821844 +0700 +@@ -159,6 +159,11 @@ + # define V8_OS_QNX 1 + # define V8_OS_STRING "qnx" + ++#elif defined(__redox__) ++# define V8_OS_POSIX 1 ++# define V8_OS_REDOX 1 ++# define V8_OS_STRING "redox" ++ + #elif defined(_WIN32) + # define V8_OS_WIN 1 + # define V8_OS_STRING "windows" +@@ -185,6 +190,7 @@ + && !defined(V8_TARGET_OS_IOS) \ + && !defined(V8_TARGET_OS_LINUX) \ + && !defined(V8_TARGET_OS_MACOS) \ ++ && !defined(V8_TARGET_OS_REDOX) \ + && !defined(V8_TARGET_OS_WIN) \ + && !defined(V8_TARGET_OS_CHROMEOS) + # error No known target OS defined. +@@ -197,6 +203,7 @@ + || defined(V8_TARGET_OS_IOS) \ + || defined(V8_TARGET_OS_LINUX) \ + || defined(V8_TARGET_OS_MACOS) \ ++ || defined(V8_TARGET_OS_REDOX) \ + || defined(V8_TARGET_OS_WIN) \ + || defined(V8_TARGET_OS_CHROMEOS) + # error A target OS is defined but V8_HAVE_TARGET_OS is unset. +@@ -223,6 +230,10 @@ + # define V8_TARGET_OS_MACOS + #endif + ++#ifdef V8_OS_REDOX ++# define V8_TARGET_OS_REDOX ++#endif ++ + #ifdef V8_OS_WIN + # define V8_TARGET_OS_WIN + #endif +@@ -239,6 +250,8 @@ + # define V8_TARGET_OS_STRING "linux" + #elif defined(V8_TARGET_OS_MACOS) + # define V8_TARGET_OS_STRING "macos" ++#elif defined(V8_TARGET_OS_REDOX) ++# define V8_TARGET_OS_STRING "redox" + #elif defined(V8_TARGET_OS_WINDOWS) + # define V8_TARGET_OS_STRING "windows" + #else +diff -ruwN source/deps/v8/src/base/platform/memory.h source-new/deps/v8/src/base/platform/memory.h +--- source/deps/v8/src/base/platform/memory.h 2024-04-10 19:46:12.000000000 +0700 ++++ source-new/deps/v8/src/base/platform/memory.h 2025-10-10 13:46:04.297422792 +0700 +@@ -23,9 +23,9 @@ + #include + #endif // !V8_OS_DARWIN + +-#if (V8_OS_POSIX && !V8_OS_AIX && !V8_OS_SOLARIS) || V8_OS_WIN ++#if (V8_OS_POSIX && !V8_OS_AIX && !V8_OS_SOLARIS && !V8_OS_REDOX) || V8_OS_WIN + #define V8_HAS_MALLOC_USABLE_SIZE 1 +-#endif // (V8_OS_POSIX && !V8_OS_AIX && !V8_OS_SOLARIS) || V8_OS_WIN ++#endif // (V8_OS_POSIX && !V8_OS_AIX && !V8_OS_SOLARIS && !V8_OS_REDOX) || V8_OS_WIN + + namespace v8::base { + +diff -ruwN source/deps/v8/src/base/platform/platform-posix.cc source-new/deps/v8/src/base/platform/platform-posix.cc +--- source/deps/v8/src/base/platform/platform-posix.cc 2024-04-10 19:46:12.000000000 +0700 ++++ source-new/deps/v8/src/base/platform/platform-posix.cc 2025-10-10 13:46:04.416447015 +0700 +@@ -28,6 +28,10 @@ + #include // for sysctl + #endif + ++#if defined(__redox__) ++ #define PTHREAD_STACK_MIN 4096 ++#endif ++ + #if defined(ANDROID) && !defined(V8_ANDROID_LOG_STDOUT) + #define LOG_TAG "v8" + #include +@@ -69,7 +73,7 @@ + #include + #endif + +-#if !defined(_AIX) && !defined(V8_OS_FUCHSIA) ++#if !defined(_AIX) && !defined(V8_OS_FUCHSIA) && !defined(V8_OS_REDOX) + #include + #endif + +@@ -135,7 +139,7 @@ + int flags = MAP_ANONYMOUS; + flags |= (page_type == PageType::kShared) ? MAP_SHARED : MAP_PRIVATE; + if (access == OS::MemoryPermission::kNoAccess) { +-#if !V8_OS_AIX && !V8_OS_FREEBSD && !V8_OS_QNX ++#if !V8_OS_AIX && !V8_OS_FREEBSD && !V8_OS_QNX && !V8_OS_REDOX + flags |= MAP_NORESERVE; + #endif // !V8_OS_AIX && !V8_OS_FREEBSD && !V8_OS_QNX + #if V8_OS_QNX +diff -ruwN source/deps/v8/src/base/platform/platform-redox.cc source-new/deps/v8/src/base/platform/platform-redox.cc +--- source/deps/v8/src/base/platform/platform-redox.cc 1970-01-01 07:00:00.000000000 +0700 ++++ source-new/deps/v8/src/base/platform/platform-redox.cc 2025-10-10 15:23:18.233737033 +0700 +@@ -0,0 +1,63 @@ ++// Copyright 2014 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++// Platform specific code for Redox goes here. For the POSIX comaptible parts ++// the implementation is in platform-posix.cc. ++ ++#include ++#include ++#include ++#include ++ ++#include ++ ++#undef MAP_TYPE ++ ++#include "src/base/macros.h" ++#include "src/base/platform/platform-posix-time.h" ++#include "src/base/platform/platform-posix.h" ++#include "src/base/platform/platform.h" ++ ++namespace v8 { ++namespace base { ++ ++ ++int64_t get_gmt_offset(const tm& localtm) { ++ // replacement for tm->tm_gmtoff field in glibc ++ // returns seconds east of UTC, taking DST into account ++ struct timeval tv; ++ struct timezone tz; ++ int ret_code = gettimeofday(&tv, &tz); ++ // 0 = success, -1 = failure ++ DCHECK_NE(ret_code, -1); ++ if (ret_code == -1) { ++ return 0; ++ } ++ return (-tz.tz_minuteswest * 60) + (localtm.tm_isdst > 0 ? 3600 : 0); ++} ++ ++TimezoneCache* OS::CreateTimezoneCache() { ++ return new PosixDefaultTimezoneCache(); ++} ++ ++static unsigned StringToLong(char* buffer) { ++ return static_cast(strtol(buffer, nullptr, 16)); ++} ++ ++std::vector OS::GetSharedLibraryAddresses() { ++ UNREACHABLE(); ++} ++ ++void OS::SignalCodeMovingGC() {} ++ ++void OS::AdjustSchedulingParams() {} ++ ++std::vector OS::GetFreeMemoryRangesWithin( ++ OS::Address boundary_start, OS::Address boundary_end, size_t minimum_size, ++ size_t alignment) { ++ return {}; ++} ++ ++} // namespace base ++} // namespace v8 +diff -ruwN source/deps/v8/src/libsampler/sampler.cc source-new/deps/v8/src/libsampler/sampler.cc +--- source/deps/v8/src/libsampler/sampler.cc 2024-04-10 19:46:13.000000000 +0700 ++++ source-new/deps/v8/src/libsampler/sampler.cc 2025-10-10 13:46:04.417193700 +0700 +@@ -16,11 +16,11 @@ + #include + #include + +-#if !V8_OS_QNX && !V8_OS_AIX ++#if !V8_OS_QNX && !V8_OS_AIX && !V8_OS_REDOX + #include + #endif + +-#if V8_OS_AIX || V8_TARGET_ARCH_S390X ++#if V8_OS_AIX || V8_OS_REDOX || V8_TARGET_ARCH_S390X + + #include "src/base/platform/time.h" + +diff -ruwN source/deps/v8/src/trap-handler/handler-inside-posix.cc source-new/deps/v8/src/trap-handler/handler-inside-posix.cc +--- source/deps/v8/src/trap-handler/handler-inside-posix.cc 2024-04-10 19:46:13.000000000 +0700 ++++ source-new/deps/v8/src/trap-handler/handler-inside-posix.cc 2025-10-11 12:32:56.074858844 +0700 +@@ -23,6 +23,7 @@ + // context. Some additional code is used both inside and outside the signal + // handler. This code can be found in handler-shared.cc. + ++#ifndef __redox__ + #include "src/trap-handler/handler-inside-posix.h" + + #include +@@ -102,7 +103,6 @@ + asm("v8_simulator_probe_memory_continuation"); + #endif + #endif // V8_TRAP_HANDLER_VIA_SIMULATOR +- + bool TryHandleSignal(int signum, siginfo_t* info, void* context) { + // Ensure the faulting thread was actually running Wasm code. This should be + // the first check in the trap handler to guarantee that the +@@ -197,3 +197,5 @@ + } // namespace trap_handler + } // namespace internal + } // namespace v8 ++ ++#endif +diff -ruwN source/deps/v8/src/trap-handler/handler-inside-posix.h source-new/deps/v8/src/trap-handler/handler-inside-posix.h +--- source/deps/v8/src/trap-handler/handler-inside-posix.h 2024-04-10 19:46:13.000000000 +0700 ++++ source-new/deps/v8/src/trap-handler/handler-inside-posix.h 2025-10-10 21:44:55.221873295 +0700 +@@ -4,7 +4,7 @@ + + #ifndef V8_TRAP_HANDLER_HANDLER_INSIDE_POSIX_H_ + #define V8_TRAP_HANDLER_HANDLER_INSIDE_POSIX_H_ +- ++#ifndef __redox__ + #include + + #include "include/v8config.h" +@@ -28,5 +28,5 @@ + } // namespace trap_handler + } // namespace internal + } // namespace v8 +- ++#endif + #endif // V8_TRAP_HANDLER_HANDLER_INSIDE_POSIX_H_ +diff -ruwN source/deps/v8/src/wasm/std-object-sizes.h source-new/deps/v8/src/wasm/std-object-sizes.h +--- source/deps/v8/src/wasm/std-object-sizes.h 2024-04-10 19:46:13.000000000 +0700 ++++ source-new/deps/v8/src/wasm/std-object-sizes.h 2025-10-10 13:46:04.591737114 +0700 +@@ -54,24 +54,7 @@ + return raw * 4 / 3; + } + +-// To make it less likely for size estimation functions to become outdated +-// when the classes they're responsible for change, we insert static asserts +-// about the respective class's size into them to at least catch some possible +-// future modifications. Since object sizes are toolchain specific, we define +-// restrictions here under which we enable these checks. +-// When one of these checks fails, that probably means you've added fields to +-// a class guarded by it. Update the respective EstimateCurrentMemoryConsumption +-// function accordingly, and then update the check's expected size. +-#if V8_TARGET_ARCH_X64 && defined(__clang__) && V8_TARGET_OS_LINUX && \ +- !V8_USE_ADDRESS_SANITIZER && !V8_USE_MEMORY_SANITIZER && defined(DEBUG) && \ +- V8_COMPRESS_POINTERS && !defined(V8_GC_MOLE) && defined(_LIBCPP_VERSION) +-#define UPDATE_WHEN_CLASS_CHANGES(classname, size) \ +- static_assert(sizeof(classname) == size, \ +- "Update {EstimateCurrentMemoryConsumption} when adding " \ +- "fields to " #classname) +-#else + #define UPDATE_WHEN_CLASS_CHANGES(classname, size) (void)0 +-#endif + + } // namespace v8::internal::wasm + +diff -ruwN source/src/debug_utils.cc source-new/src/debug_utils.cc +--- source/src/debug_utils.cc 2024-04-10 19:46:14.000000000 +0700 ++++ source-new/src/debug_utils.cc 2025-10-10 13:46:04.755669055 +0700 +@@ -14,7 +14,7 @@ + + #if defined(__linux__) && !defined(__GLIBC__) || \ + defined(__UCLIBC__) || \ +- defined(_AIX) ++ defined(_AIX) || defined(__redox__) + #define HAVE_EXECINFO_H 0 + #else + #define HAVE_EXECINFO_H 1 +diff -ruwN source/src/node_credentials.cc source-new/src/node_credentials.cc +--- source/src/node_credentials.cc 2024-04-10 19:46:14.000000000 +0700 ++++ source-new/src/node_credentials.cc 2025-10-10 13:46:04.816900208 +0700 +@@ -182,7 +182,7 @@ + + static uid_t uid_by_name(Isolate* isolate, Local value) { + if (value->IsUint32()) { +- static_assert(std::is_same::value); ++ // static_assert(std::is_same::value); + return value.As()->Value(); + } else { + Utf8Value name(isolate, value); +@@ -192,7 +192,7 @@ + + static gid_t gid_by_name(Isolate* isolate, Local value) { + if (value->IsUint32()) { +- static_assert(std::is_same::value); ++ // static_assert(std::is_same::value); + return value.As()->Value(); + } else { + Utf8Value name(isolate, value); +diff -ruwN source/src/node_report.cc source-new/src/node_report.cc +--- source/src/node_report.cc 2024-04-10 19:46:14.000000000 +0700 ++++ source-new/src/node_report.cc 2025-10-10 13:46:05.190512964 +0700 +@@ -524,7 +524,7 @@ + while (line != -1) { + l = ss.substr(0, line); + l.erase(l.begin(), std::find_if(l.begin(), l.end(), [](int ch) { +- return !std::iswspace(ch); ++ return !std::isspace(ch); + })); + writer->json_element(l); + ss = ss.substr(line + 1); +diff -ruwN source/tools/gyp/pylib/gyp/common.py source-new/tools/gyp/pylib/gyp/common.py +--- source/tools/gyp/pylib/gyp/common.py 2024-04-10 19:46:15.000000000 +0700 ++++ source-new/tools/gyp/pylib/gyp/common.py 2025-10-10 21:36:23.972976264 +0700 +@@ -445,6 +445,8 @@ + return "netbsd" + if sys.platform.startswith("aix"): + return "aix" ++ if sys.platform.startswith("redox"): ++ return "redox" + if sys.platform.startswith(("os390", "zos")): + return "zos" + if sys.platform == "os400": +diff -ruwN source/tools/gyp/pylib/gyp/generator/make.py source-new/tools/gyp/pylib/gyp/generator/make.py +--- source/tools/gyp/pylib/gyp/generator/make.py 2024-04-10 19:46:15.000000000 +0700 ++++ source-new/tools/gyp/pylib/gyp/generator/make.py 2025-10-10 14:27:51.496602771 +0700 +@@ -1868,7 +1868,7 @@ + self.flavor not in ("mac", "openbsd", "netbsd", "win") + and not self.is_standalone_static_library + ): +- if self.flavor in ("linux", "android"): ++ if self.flavor in ("linux", "android", "redox"): + self.WriteMakeRule( + [self.output_binary], + link_deps, +@@ -1883,7 +1883,7 @@ + postbuilds=postbuilds, + ) + else: +- if self.flavor in ("linux", "android"): ++ if self.flavor in ("linux", "android", "redox"): + self.WriteMakeRule( + [self.output_binary], + link_deps, +diff -ruwN source/tools/v8_gypfiles/d8.gyp source-new/tools/v8_gypfiles/d8.gyp +--- source/tools/v8_gypfiles/d8.gyp 2024-04-10 19:46:15.000000000 +0700 ++++ source-new/tools/v8_gypfiles/d8.gyp 2025-10-10 21:34:47.141291162 +0700 +@@ -47,7 +47,7 @@ + }], + ['(OS=="linux" or OS=="mac" or OS=="freebsd" or OS=="netbsd" \ + or OS=="openbsd" or OS=="solaris" or OS=="android" \ +- or OS=="qnx" or OS=="aix" or OS=="os400")', { ++ or OS=="qnx" or OS=="aix" or OS=="redox" or OS=="os400")', { + 'sources': [ '<(V8_ROOT)/src/d8/d8-posix.cc', ] + }], + [ 'OS=="win"', { +diff -ruwN source/tools/v8_gypfiles/toolchain.gypi source-new/tools/v8_gypfiles/toolchain.gypi +--- source/tools/v8_gypfiles/toolchain.gypi 2024-04-10 19:46:15.000000000 +0700 ++++ source-new/tools/v8_gypfiles/toolchain.gypi 2025-10-10 21:57:05.129575573 +0700 +@@ -575,6 +575,12 @@ + 'V8_TARGET_OS_MACOS', + ] + }], ++ ['OS=="redox"', { ++ 'defines': [ ++ 'V8_HAVE_TARGET_OS', ++ 'V8_TARGET_OS_REDOX', ++ ] ++ }], + ['OS=="win"', { + 'defines': [ + 'V8_HAVE_TARGET_OS', +@@ -661,7 +667,7 @@ + ], + }], + ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \ +- or OS=="netbsd" or OS=="qnx" or OS=="aix" or OS=="os400"', { ++ or OS=="netbsd" or OS=="qnx" or OS=="aix" or OS=="redox" or OS=="os400"', { + 'conditions': [ + [ 'v8_no_strict_aliasing==1', { + 'cflags': [ '-fno-strict-aliasing' ], +diff -ruwN source/tools/v8_gypfiles/v8.gyp source-new/tools/v8_gypfiles/v8.gyp +--- source/tools/v8_gypfiles/v8.gyp 2024-04-10 19:46:15.000000000 +0700 ++++ source-new/tools/v8_gypfiles/v8.gyp 2025-10-11 12:14:17.137386469 +0700 +@@ -606,7 +606,7 @@ + }], + ['v8_enable_webassembly==1', { + 'conditions': [ +- ['OS=="linux" or OS=="mac" or OS=="ios" or OS=="freebsd"', { ++ ['OS=="linux" or OS=="redox" or OS=="mac" or OS=="ios" or OS=="freebsd"', { + 'sources': [ + '<(V8_ROOT)/src/trap-handler/handler-inside-posix.h', + ], +@@ -637,7 +637,7 @@ + }], + ['v8_enable_webassembly==1', { + 'conditions': [ +- ['((_toolset=="host" and host_arch=="arm64" or _toolset=="target" and target_arch=="arm64") and (OS=="linux" or OS=="mac")) or ((_toolset=="host" and host_arch=="x64" or _toolset=="target" and target_arch=="x64") and (OS=="linux" or OS=="mac"))', { ++ ['((_toolset=="host" and host_arch=="arm64" or _toolset=="target" and target_arch=="arm64") and (OS=="linux" or OS=="mac")) or ((_toolset=="host" and host_arch=="x64" or _toolset=="target" and target_arch=="x64") and (OS=="linux" or OS=="redox" or OS=="mac"))', { + 'sources': [ + '<(V8_ROOT)/src/trap-handler/handler-inside-posix.h', + ], +@@ -941,7 +941,7 @@ + }], + ['v8_enable_webassembly==1', { + 'conditions': [ +- ['OS=="linux" or OS=="mac" or OS=="ios" or OS=="freebsd"', { ++ ['OS=="linux" or OS=="redox" or OS=="mac" or OS=="ios" or OS=="freebsd"', { + 'sources': [ + '<(V8_ROOT)/src/trap-handler/handler-inside-posix.cc', + '<(V8_ROOT)/src/trap-handler/handler-outside-posix.cc', +@@ -969,7 +969,7 @@ + 'conditions': [ + ['v8_enable_webassembly==1', { + 'conditions': [ +- ['((_toolset=="host" and host_arch=="arm64" or _toolset=="target" and target_arch=="arm64") and (OS=="linux" or OS=="mac" or OS=="ios")) or ((_toolset=="host" and host_arch=="x64" or _toolset=="target" and target_arch=="x64") and (OS=="linux" or OS=="mac"))', { ++ ['((_toolset=="host" and host_arch=="arm64" or _toolset=="target" and target_arch=="arm64") and (OS=="linux" or OS=="redox" or OS=="mac" or OS=="ios")) or ((_toolset=="host" and host_arch=="x64" or _toolset=="target" and target_arch=="x64") and (OS=="linux" or OS=="redox" or OS=="mac"))', { + 'sources': [ + '<(V8_ROOT)/src/trap-handler/handler-inside-posix.cc', + '<(V8_ROOT)/src/trap-handler/handler-outside-posix.cc', +@@ -981,7 +981,7 @@ + '<(V8_ROOT)/src/trap-handler/handler-outside-win.cc', + ], + }], +- ['(_toolset=="host" and host_arch=="x64" or _toolset=="target" and target_arch=="x64") and (OS=="linux" or OS=="mac" or OS=="win")', { ++ ['(_toolset=="host" and host_arch=="x64" or _toolset=="target" and target_arch=="x64") and (OS=="linux" or OS=="redox" or OS=="mac" or OS=="win")', { + 'sources': [ + '<(V8_ROOT)/src/trap-handler/handler-outside-simulator.cc', + ], +@@ -1323,6 +1323,35 @@ + # end of conditions from 'BUILD.gn' + + # Node.js validated ++ ['OS=="redox"', { ++ 'link_settings': { ++ 'target_conditions': [ ++ ['_toolset=="host"', { ++ 'libraries': [ ++ '-ldl' ++ ], ++ }], ++ ], ++ }, ++ 'sources': [ ++ '<(V8_ROOT)/src/base/platform/platform-posix.cc', ++ '<(V8_ROOT)/src/base/platform/platform-posix.h', ++ '<(V8_ROOT)/src/base/platform/platform-posix-time.cc', ++ '<(V8_ROOT)/src/base/platform/platform-posix-time.h', ++ '<(V8_ROOT)/src/base/debug/stack_trace_posix.cc', ++ ], ++ 'target_conditions': [ ++ ['_toolset=="host"', { ++ 'sources': [ ++ '<(V8_ROOT)/src/base/platform/platform-linux.cc', ++ ], ++ }, { ++ 'sources': [ ++ '<(V8_ROOT)/src/base/platform/platform-redox.cc', ++ ], ++ }], ++ ], ++ }], + ['OS=="solaris"', { + 'link_settings': { + 'libraries': [ diff --git a/recipes/wip/dev/lang/nodejs/01_redox.patch b/recipes/wip/dev/lang/nodejs-24/01_redox.patch similarity index 100% rename from recipes/wip/dev/lang/nodejs/01_redox.patch rename to recipes/wip/dev/lang/nodejs-24/01_redox.patch diff --git a/recipes/wip/dev/lang/nodejs/recipe.toml b/recipes/wip/dev/lang/nodejs-24/recipe.toml similarity index 60% rename from recipes/wip/dev/lang/nodejs/recipe.toml rename to recipes/wip/dev/lang/nodejs-24/recipe.toml index fbc91fb9..cfd29f13 100644 --- a/recipes/wip/dev/lang/nodejs/recipe.toml +++ b/recipes/wip/dev/lang/nodejs-24/recipe.toml @@ -1,22 +1,23 @@ -#TODO depedencies needed +#TODO requires stdc++20 [source] -tar = "https://nodejs.org/dist/v24.5.0/node-v24.5.0.tar.gz" +tar = "https://nodejs.org/dist/v24.5.0/node-v24.9.0.tar.xz" +blake3 = "c710713c9144dc2dfadaef1d180b295d85edd9945513017fc700af68eb08a251" patches = ["01_redox.patch"] [build] template = "custom" -depedencies = [ +dependencies = [ # "ada", "libbrotli", -# "cares", + "c-ares", "libuv", -# "ngtcp2", + "ngtcp2", "nghttp2", # "http-parser", -# "nghttp3", + "nghttp3", "openssl1", "simdjson", -# "simdutf", + "simdutf", "sqlite3", # "uvwasi", "zlib", @@ -24,6 +25,7 @@ depedencies = [ ] script = """ DYNAMIC_INIT +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ case "${TARGET}" in x86-unknown-redox) @@ -41,12 +43,21 @@ COOKBOOK_CONFIGURE_FLAGS=( --prefix=${COOKBOOK_STAGE} --dest-cpu=${NODE_CPU} --dest-os=redox + --shared-cares --shared-libuv + --shared-ngtcp2 --shared-nghttp2 + --shared-nghttp3 --shared-openssl + --shared-simdjson + --shared-simdutf --shared-zlib --shared-zstd --cross-compiling + --without-sqlite + --without-inspector + --without-intl ) +COOKBOOK_CONFIGURE="./configure" cookbook_configure """ diff --git a/recipes/wip/dev/lang/nodejs-lts/recipe.toml b/recipes/wip/dev/lang/nodejs-lts/recipe.toml deleted file mode 100644 index 233365de..00000000 --- a/recipes/wip/dev/lang/nodejs-lts/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO can't find the Redox target -[source] -tar = "https://nodejs.org/dist/v18.17.1/node-v18.17.1.tar.gz" -[build] -template = "configure" diff --git a/recipes/wip/libs/net/c-ares/recipe.toml b/recipes/wip/libs/net/c-ares/recipe.toml new file mode 100644 index 00000000..299898dc --- /dev/null +++ b/recipes/wip/libs/net/c-ares/recipe.toml @@ -0,0 +1,6 @@ +[source] +git = "https://github.com/c-ares/c-ares" +rev = "d3a507e920e7af18a5efb7f9f1d8044ed4750013" # 1.34.5 + +[build] +template = "cmake" diff --git a/recipes/wip/libs/net/nghttp3/recipe.toml b/recipes/wip/libs/net/nghttp3/recipe.toml new file mode 100644 index 00000000..1a4e01f1 --- /dev/null +++ b/recipes/wip/libs/net/nghttp3/recipe.toml @@ -0,0 +1,6 @@ +[source] +git = "https://github.com/ngtcp2/nghttp3" +rev = "f3eb315feda478cdb4919720a7961c0321e1bd89" # 1.14.0 + +[build] +template = "cmake" diff --git a/recipes/wip/libs/net/ngtcp2/recipe.toml b/recipes/wip/libs/net/ngtcp2/recipe.toml new file mode 100644 index 00000000..bc31da49 --- /dev/null +++ b/recipes/wip/libs/net/ngtcp2/recipe.toml @@ -0,0 +1,14 @@ +#TODO Maybe need openssl 1.1.1 +[source] +git = "https://github.com/ngtcp2/ngtcp2" +rev = "e9fe10e0e8b3ce646fa88b4217864f29b4e013d9" # 1.14.0 + +[build] +template = "custom" +script = """ +DYNAMIC_INIT +COOKBOOK_CMAKE_FLAGS+=( + -DENABLE_OPENSSL=OFF +) +cookbook_cmake +""" diff --git a/recipes/wip/libs/other/simdjson/recipe.toml b/recipes/wip/libs/other/simdjson/recipe.toml index 08031f96..5f162af5 100644 --- a/recipes/wip/libs/other/simdjson/recipe.toml +++ b/recipes/wip/libs/other/simdjson/recipe.toml @@ -1,21 +1,9 @@ -#TODO maybe incomplete script, see https://github.com/simdjson/simdjson/blob/master/HACKING.md#usage-cmake-on-64-bit-platforms-like-linux-freebsd-or-macos [source] git = "https://github.com/simdjson/simdjson" -rev = "6060be2fdf62edf4a8f51a8b0883d57d09397b30" +rev = "0c0ce1bd48baa0677dc7c0945ea7cd1e8b52b297" # 3.13.0 [build] template = "custom" script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure +DYNAMIC_INIT +cookbook_cmake """ diff --git a/recipes/wip/libs/other/simdutf/recipe.toml b/recipes/wip/libs/other/simdutf/recipe.toml new file mode 100644 index 00000000..faf1c246 --- /dev/null +++ b/recipes/wip/libs/other/simdutf/recipe.toml @@ -0,0 +1,9 @@ +[source] +git = "https://github.com/simdutf/simdutf" +rev = "df8bfed3256cf5ca29969a9dd1db677e835b2c6c" # 7.3.5 +[build] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_cmake +""" From d63a59720b5e3dd1d5b0e00c241c14c2cf5554f4 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sat, 11 Oct 2025 16:10:58 +0700 Subject: [PATCH 2909/3180] Automatic unfetch for tar recipes --- src/bin/cook.rs | 618 +-------------------------------------------- src/cook/fetch.rs | 417 ++++++++++++++++++++++++++++++ src/cook/fs.rs | 194 ++++++++++++++ src/cook/mod.rs | 6 + src/cook/script.rs | 91 +++++++ src/lib.rs | 1 + 6 files changed, 715 insertions(+), 612 deletions(-) create mode 100644 src/cook/fetch.rs create mode 100644 src/cook/fs.rs create mode 100644 src/cook/mod.rs create mode 100644 src/cook/script.rs diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 45787cc0..90315b4e 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1,630 +1,24 @@ -use cookbook::blake3::blake3_progress; -use cookbook::config::{init_config, translate_mirror}; -use cookbook::recipe::{AutoDeps, BuildKind, CookRecipe, Recipe, SourceRecipe}; +use cookbook::config::init_config; +use cookbook::cook::fetch::*; +use cookbook::cook::fs::*; +use cookbook::cook::script::SHARED_PRESCRIPT; +use cookbook::recipe::{AutoDeps, BuildKind, CookRecipe, Recipe}; use pkg::package::Package; use pkg::{recipes, PackageName}; -use serde::Serialize; use std::collections::VecDeque; use std::convert::TryInto; use std::{ collections::BTreeSet, env, fs, - io::{self, Write}, path::{Path, PathBuf}, - process::{self, Command, Stdio}, + process::{self, Command}, str, time::SystemTime, }; use termion::{color, style}; -use walkdir::{DirEntry, WalkDir}; use cookbook::{is_redox, WALK_DEPTH}; -fn remove_all(path: &Path) -> Result<(), String> { - if path.is_dir() { - fs::remove_dir_all(path) - } else { - fs::remove_file(path) - } - .map_err(|err| format!("failed to remove '{}': {}\n{:?}", path.display(), err, err)) -} - -fn create_dir(dir: &Path) -> Result<(), String> { - fs::create_dir(dir) - .map_err(|err| format!("failed to create '{}': {}\n{:?}", dir.display(), err, err)) -} - -fn create_dir_clean(dir: &Path) -> Result<(), String> { - if dir.is_dir() { - remove_all(dir)?; - } - create_dir(dir) -} - -fn copy_dir_all(src: impl AsRef, dst: impl AsRef) -> io::Result<()> { - fs::create_dir_all(&dst)?; - for entry in fs::read_dir(src)? { - let entry = entry?; - let ty = entry.file_type()?; - if ty.is_dir() { - copy_dir_all(entry.path(), dst.as_ref().join(entry.file_name()))?; - } else { - fs::copy(entry.path(), dst.as_ref().join(entry.file_name()))?; - } - } - Ok(()) -} - -fn symlink(original: impl AsRef, link: impl AsRef) -> Result<(), String> { - std::os::unix::fs::symlink(&original, &link).map_err(|err| { - format!( - "failed to symlink '{}' to '{}': {}\n{:?}", - original.as_ref().display(), - link.as_ref().display(), - err, - err - ) - }) -} - -fn modified(path: &Path) -> Result { - let metadata = fs::metadata(path).map_err(|err| { - format!( - "failed to get metadata of '{}': {}\n{:#?}", - path.display(), - err, - err - ) - })?; - metadata.modified().map_err(|err| { - format!( - "failed to get modified time of '{}': {}\n{:#?}", - path.display(), - err, - err - ) - }) -} - -fn modified_dir_inner bool>( - dir: &Path, - filter: F, -) -> io::Result { - let mut newest = fs::metadata(dir)?.modified()?; - for entry_res in WalkDir::new(dir).into_iter().filter_entry(filter) { - let entry = entry_res?; - let modified = entry.metadata()?.modified()?; - if modified > newest { - newest = modified; - } - } - Ok(newest) -} - -fn modified_dir(dir: &Path) -> Result { - modified_dir_inner(dir, |_| true).map_err(|err| { - format!( - "failed to get modified time of '{}': {}\n{:#?}", - dir.display(), - err, - err - ) - }) -} - -fn modified_dir_ignore_git(dir: &Path) -> Result { - modified_dir_inner(dir, |entry| { - entry - .file_name() - .to_str() - .map(|s| s != ".git") - .unwrap_or(true) - }) - .map_err(|err| { - format!( - "failed to get modified time of '{}': {}\n{:#?}", - dir.display(), - err, - err - ) - }) -} - -fn rename(src: &Path, dst: &Path) -> Result<(), String> { - fs::rename(src, dst).map_err(|err| { - format!( - "failed to rename '{}' to '{}': {}\n{:?}", - src.display(), - dst.display(), - err, - err - ) - }) -} - -fn run_command(mut command: process::Command) -> Result<(), String> { - let status = command - .status() - .map_err(|err| format!("failed to run {:?}: {}\n{:#?}", command, err, err))?; - - if !status.success() { - return Err(format!( - "failed to run {:?}: exited with status {}", - command, status - )); - } - - Ok(()) -} - -fn run_command_stdin(mut command: process::Command, stdin_data: &[u8]) -> Result<(), String> { - command.stdin(Stdio::piped()); - - let mut child = command - .spawn() - .map_err(|err| format!("failed to spawn {:?}: {}\n{:#?}", command, err, err))?; - - if let Some(ref mut stdin) = child.stdin { - stdin.write_all(stdin_data).map_err(|err| { - format!( - "failed to write stdin of {:?}: {}\n{:#?}", - command, err, err - ) - })?; - } else { - return Err(format!("failed to find stdin of {:?}", command)); - } - - let status = child - .wait() - .map_err(|err| format!("failed to run {:?}: {}\n{:#?}", command, err, err))?; - - if !status.success() { - return Err(format!( - "failed to run {:?}: exited with status {}", - command, status - )); - } - - Ok(()) -} - -fn serialize_and_write(file_path: &Path, content: &T) -> Result<(), String> { - let toml_content = toml::to_string(content).map_err(|err| { - format!( - "Failed to serialize content for '{}': {}", - file_path.display(), - err - ) - })?; - - fs::write(file_path, toml_content) - .map_err(|err| format!("Failed to write to file '{}': {}", file_path.display(), err))?; - Ok(()) -} - -static SHARED_PRESCRIPT: &str = r#" -# Build dynamically -function DYNAMIC_INIT { - COOKBOOK_AUTORECONF="autoreconf" - autotools_recursive_regenerate() { - for f in $(find . -name configure.ac -o -name configure.in -type f | sort); do - echo "* autotools regen in '$(dirname $f)'..." - ( cd "$(dirname "$f")" && "${COOKBOOK_AUTORECONF}" -fvi "$@" -I${COOKBOOK_HOST_SYSROOT}/share/aclocal ) - done - } - - if [ "${TARGET}" != "x86_64-unknown-redox" ] - then - echo "WARN: ${TARGET} does not support dynamic linking." >&2 - return - fi - - echo "DEBUG: Program is being compiled dynamically." - - COOKBOOK_CONFIGURE_FLAGS=( - --host="${GNU_TARGET}" - --prefix="/usr" - --enable-shared - --disable-static - ) - - COOKBOOK_CMAKE_FLAGS=( - -DBUILD_SHARED_LIBS=True - -DENABLE_SHARED=True - -DENABLE_STATIC=False - ) - - COOKBOOK_MESON_FLAGS=( - --buildtype release - --wrap-mode nofallback - --strip - -Ddefault_library=shared - -Dprefix=/usr - ) - - # TODO: check paths for spaces - export LDFLAGS="-Wl,-rpath-link,${COOKBOOK_SYSROOT}/lib -L${COOKBOOK_SYSROOT}/lib" - export RUSTFLAGS="-C target-feature=-crt-static" - export COOKBOOK_DYNAMIC=1 -} - -# Build both dynamically and statically -function DYNAMIC_STATIC_INIT { - DYNAMIC_INIT - if [ "${COOKBOOK_DYNAMIC}" == "1" ] - then - COOKBOOK_CONFIGURE_FLAGS=( - --host="${GNU_TARGET}" - --prefix="/usr" - --enable-shared - --enable-static - ) - - COOKBOOK_CMAKE_FLAGS=( - -DBUILD_SHARED_LIBS=True - -DENABLE_SHARED=True - -DENABLE_STATIC=True - ) - - COOKBOOK_MESON_FLAGS=( - --buildtype release - --wrap-mode nofallback - --strip - -Ddefault_library=both - -Dprefix=/usr - ) - fi -} - -function GNU_CONFIG_GET { - wget -O "$1" "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" -} -"#; - -fn fetch_offline(recipe_dir: &Path, source: &Option) -> Result { - let source_dir = recipe_dir.join("source"); - match source { - Some(SourceRecipe::SameAs { same_as: _ }) | Some(SourceRecipe::Path { path: _ }) | None => { - return fetch(recipe_dir, source); - } - Some(SourceRecipe::Git { - git: _, - upstream: _, - branch: _, - rev: _, - patches: _, - script: _, - shallow_clone: _, - }) - | Some(SourceRecipe::Tar { - tar: _, - blake3: _, - patches: _, - script: _, - }) => { - if !source_dir.is_dir() { - return Err(format!( - "'{dir}' is not exist and unable to continue in offline mode", - dir = source_dir.display(), - )); - } - } - } - - Ok(source_dir) -} - -fn fetch(recipe_dir: &Path, source: &Option) -> Result { - let source_dir = recipe_dir.join("source"); - match source { - Some(SourceRecipe::SameAs { same_as }) => { - if !source_dir.is_symlink() { - if source_dir.is_dir() { - return Err(format!( - "'{dir}' is a directory, but recipe indicated a symlink. \n\ - try removing '{dir}' if you haven't made any changes that would be lost", - dir = source_dir.display(), - )); - } - let original = Path::new(same_as).join("source"); - std::os::unix::fs::symlink(&original, &source_dir).map_err(|err| { - format!( - "failed to symlink '{}' to '{}': {}\n{:?}", - original.display(), - source_dir.display(), - err, - err - ) - })?; - } - } - Some(SourceRecipe::Path { path }) => { - if !source_dir.is_dir() || modified_dir(Path::new(path))? > modified_dir(&source_dir)? { - eprintln!("[DEBUG]: {} is newer than {}", path, source_dir.display()); - copy_dir_all(path, &source_dir).map_err(|e| { - format!( - "Couldn't copy source from {} to {}: {}", - path, - source_dir.display(), - e - ) - })?; - } - } - Some(SourceRecipe::Git { - git, - upstream, - branch, - rev, - patches, - script, - shallow_clone, - }) => { - //TODO: use libgit? - let shallow_clone = *shallow_clone == Some(true); - if !source_dir.is_dir() { - // Create source.tmp - let source_dir_tmp = recipe_dir.join("source.tmp"); - create_dir_clean(&source_dir_tmp)?; - - // Clone the repository to source.tmp - let mut command = Command::new("git"); - command - .arg("clone") - .arg("--recursive") - .arg(translate_mirror(git)); - if let Some(branch) = branch { - command.arg("--branch").arg(branch); - } - if shallow_clone { - command.arg("--depth").arg("1").arg("--shallow-submodules"); - } - command.arg(&source_dir_tmp); - run_command(command)?; - - // Move source.tmp to source atomically - rename(&source_dir_tmp, &source_dir)?; - } else if !shallow_clone { - // Don't let this code reset the origin for the cookbook repo - let source_git_dir = source_dir.join(".git"); - if !source_git_dir.is_dir() { - return Err(format!( - "'{}' is not a git repository, but recipe indicated git source", - source_dir.display(), - )); - } - - // Reset origin - let mut command = Command::new("git"); - command.arg("-C").arg(&source_dir); - command.arg("remote").arg("set-url").arg("origin").arg(git); - run_command(command)?; - - // Fetch origin - let mut command = Command::new("git"); - command.arg("-C").arg(&source_dir); - command.arg("fetch").arg("origin"); - run_command(command)?; - } - - if let Some(_upstream) = upstream { - //TODO: set upstream URL - // git remote set-url upstream "$GIT_UPSTREAM" &> /dev/null || - // git remote add upstream "$GIT_UPSTREAM" - // git fetch upstream - } - - if let Some(rev) = rev { - // Check out specified revision - let mut command = Command::new("git"); - command.arg("-C").arg(&source_dir); - command.arg("checkout").arg(rev); - run_command(command)?; - } else if !shallow_clone && !is_redox() { - //TODO: complicated stuff to check and reset branch to origin - //TODO: redox can't undestand this (got exit status 1) - let mut command = Command::new("bash"); - command.arg("-c").arg( - r#" -ORIGIN_BRANCH="$(git branch --remotes | grep '^ origin/HEAD -> ' | cut -d ' ' -f 5-)" -if [ -n "$BRANCH" ] -then - ORIGIN_BRANCH="origin/$BRANCH" -fi - -if [ "$(git rev-parse HEAD)" != "$(git rev-parse $ORIGIN_BRANCH)" ] -then - git checkout -B "$(echo "$ORIGIN_BRANCH" | cut -d / -f 2-)" "$ORIGIN_BRANCH" -fi"#, - ); - if let Some(branch) = branch { - command.env("BRANCH", branch); - } - command.current_dir(&source_dir); - run_command(command)?; - } - - if !patches.is_empty() || script.is_some() { - // Hard reset - let mut command = Command::new("git"); - command.arg("-C").arg(&source_dir); - command.arg("reset").arg("--hard"); - run_command(command)?; - } - - if !shallow_clone { - // Sync submodules URL - let mut command = Command::new("git"); - command.arg("-C").arg(&source_dir); - command.arg("submodule").arg("sync").arg("--recursive"); - run_command(command)?; - - // Update submodules - let mut command = Command::new("git"); - command.arg("-C").arg(&source_dir); - command - .arg("submodule") - .arg("update") - .arg("--init") - .arg("--recursive"); - run_command(command)?; - } - - // Apply patches - for patch_name in patches { - let patch_file = recipe_dir.join(patch_name); - if !patch_file.is_file() { - return Err(format!( - "failed to find patch file '{}'", - patch_file.display() - )); - } - - let patch = fs::read_to_string(&patch_file).map_err(|err| { - format!( - "failed to read patch file '{}': {}\n{:#?}", - patch_file.display(), - err, - err - ) - })?; - - let mut command = Command::new("patch"); - command.arg("--forward"); - command.arg("--batch"); - command.arg("--directory").arg(&source_dir); - command.arg("--strip=1"); - run_command_stdin(command, patch.as_bytes())?; - } - - // Run source script - if let Some(script) = script { - let mut command = Command::new("bash"); - command.arg("-ex"); - command.current_dir(&source_dir); - run_command_stdin(command, format!("{SHARED_PRESCRIPT}\n{script}").as_bytes())?; - } - } - Some(SourceRecipe::Tar { - tar, - blake3, - patches, - script, - }) => { - if !source_dir.is_dir() { - // Download tar - //TODO: replace wget - let source_tar = recipe_dir.join("source.tar"); - if !source_tar.is_file() { - let source_tar_tmp = recipe_dir.join("source.tar.tmp"); - - let mut command = Command::new("wget"); - command.arg(translate_mirror(tar)); - command.arg("--continue").arg("-O").arg(&source_tar_tmp); - run_command(command)?; - - // Move source.tar.tmp to source.tar atomically - rename(&source_tar_tmp, &source_tar)?; - } - - // Calculate blake3 - let source_tar_blake3 = blake3_progress(&source_tar).map_err(|err| { - format!( - "failed to calculate blake3 of '{}': {}\n{:?}", - source_tar.display(), - err, - err - ) - })?; - if let Some(blake3) = blake3 { - // Check if it matches recipe - if &source_tar_blake3 != blake3 { - return Err(format!( - "calculated blake3 '{}' does not match recipe blake3 '{}'", - source_tar_blake3, blake3 - )); - } - } else { - //TODO: set blake3 hash on the recipe with something like "cook fix" - eprintln!( - "WARNING: set blake3 for '{}' to '{}'", - source_tar.display(), - source_tar_blake3 - ); - } - - // Create source.tmp - let source_dir_tmp = recipe_dir.join("source.tmp"); - create_dir_clean(&source_dir_tmp)?; - - // Extract tar to source.tmp - //TODO: use tar crate (how to deal with compression?) - let mut command = Command::new("tar"); - if is_redox() { - command.arg("xvf"); - } else { - command.arg("--extract"); - command.arg("--verbose"); - command.arg("--file"); - } - command.arg(&source_tar); - command.arg("--directory").arg(&source_dir_tmp); - command.arg("--strip-components").arg("1"); - run_command(command)?; - - // Apply patches - for patch_name in patches { - let patch_file = recipe_dir.join(patch_name); - if !patch_file.is_file() { - return Err(format!( - "failed to find patch file '{}'", - patch_file.display() - )); - } - - let patch = fs::read_to_string(&patch_file).map_err(|err| { - format!( - "failed to read patch file '{}': {}\n{:#?}", - patch_file.display(), - err, - err - ) - })?; - - let mut command = Command::new("patch"); - command.arg("--directory").arg(&source_dir_tmp); - command.arg("--strip=1"); - run_command_stdin(command, patch.as_bytes())?; - } - - // Run source script - if let Some(script) = script { - let mut command = Command::new("bash"); - command.arg("-ex"); - command.current_dir(&source_dir_tmp); - run_command_stdin(command, format!("{SHARED_PRESCRIPT}\n{script}").as_bytes())?; - } - - // Move source.tmp to source atomically - rename(&source_dir_tmp, &source_dir)?; - } - } - // Local Sources - None => { - if !source_dir.is_dir() { - eprintln!( - "WARNING: Recipe without source section expected source dir at '{}'", - source_dir.display(), - ); - create_dir(&source_dir)?; - } - } - } - - Ok(source_dir) -} - fn auto_deps( stage_dir: &Path, dep_pkgars: &BTreeSet<(PackageName, PathBuf)>, diff --git a/src/cook/fetch.rs b/src/cook/fetch.rs new file mode 100644 index 00000000..dc44bb31 --- /dev/null +++ b/src/cook/fetch.rs @@ -0,0 +1,417 @@ +use crate::config::translate_mirror; +use crate::cook::fs::*; +use crate::cook::script::*; +use crate::is_redox; +use crate::recipe::Recipe; +use crate::{blake3::blake3_progress, recipe::SourceRecipe}; +use std::fs; +use std::path::{Path, PathBuf}; +use std::process::Command; + +pub(crate) fn get_blake3(path: &PathBuf) -> Result { + blake3_progress(&path).map_err(|err| { + format!( + "failed to calculate blake3 of '{}': {}\n{:?}", + path.display(), + err, + err + ) + }) +} + +pub fn fetch_offline(recipe_dir: &Path, source: &Option) -> Result { + let source_dir = recipe_dir.join("source"); + match source { + Some(SourceRecipe::Path { path: _ }) | None => { + return fetch(recipe_dir, source); + } + Some(SourceRecipe::SameAs { same_as: _ }) => { + return fetch(recipe_dir, source); + } + Some(SourceRecipe::Git { + git: _, + upstream: _, + branch: _, + rev: _, + patches: _, + script: _, + shallow_clone: _, + }) => { + if !source_dir.is_dir() { + return Err(format!( + "'{dir}' is not exist and unable to continue in offline mode", + dir = source_dir.display(), + )); + } + } + Some(SourceRecipe::Tar { + tar: _, + blake3, + patches, + script, + }) => { + if !source_dir.is_dir() { + let source_tar = recipe_dir.join("source.tar"); + let source_tar_blake3 = get_blake3(&source_tar)?; + if source_tar.exists() { + if let Some(blake3) = blake3 { + if source_tar_blake3 != *blake3 { + return Err(format!("The downloaded tar blake3 is not match and unable to continue in offline mode.")); + } + fetch_extract_tar(source_tar, &source_dir)?; + fetch_apply_patches(recipe_dir, patches, script, &source_dir)?; + } else { + // need to trust this tar file + return Err(format!( + "Please add blake3 = \"{source_tar_blake3}\" to '{recipe}'", + recipe = recipe_dir.join("recipe.toml").display(), + )); + } + } else { + return Err(format!( + "'{dir}' is not exist and unable to continue in offline mode", + dir = source_dir.display(), + )); + } + } + } + } + + Ok(source_dir) +} + +pub fn fetch(recipe_dir: &Path, source: &Option) -> Result { + let source_dir = recipe_dir.join("source"); + match source { + Some(SourceRecipe::SameAs { same_as }) => { + let (canon_dir, recipe) = fetch_resolve_canon(recipe_dir, same_as)?; + // recursively fetch + fetch(&canon_dir, &recipe.source)?; + fetch_make_symlink(&source_dir, same_as)?; + } + Some(SourceRecipe::Path { path }) => { + if !source_dir.is_dir() || modified_dir(Path::new(path))? > modified_dir(&source_dir)? { + eprintln!("[DEBUG]: {} is newer than {}", path, source_dir.display()); + copy_dir_all(path, &source_dir).map_err(|e| { + format!( + "Couldn't copy source from {} to {}: {}", + path, + source_dir.display(), + e + ) + })?; + } + } + Some(SourceRecipe::Git { + git, + upstream, + branch, + rev, + patches, + script, + shallow_clone, + }) => { + //TODO: use libgit? + let shallow_clone = *shallow_clone == Some(true); + if !source_dir.is_dir() { + // Create source.tmp + let source_dir_tmp = recipe_dir.join("source.tmp"); + create_dir_clean(&source_dir_tmp)?; + + // Clone the repository to source.tmp + let mut command = Command::new("git"); + command + .arg("clone") + .arg("--recursive") + .arg(translate_mirror(git)); + if let Some(branch) = branch { + command.arg("--branch").arg(branch); + } + if shallow_clone { + command.arg("--depth").arg("1").arg("--shallow-submodules"); + } + command.arg(&source_dir_tmp); + run_command(command)?; + + // Move source.tmp to source atomically + rename(&source_dir_tmp, &source_dir)?; + } else if !shallow_clone { + // Don't let this code reset the origin for the cookbook repo + let source_git_dir = source_dir.join(".git"); + if !source_git_dir.is_dir() { + return Err(format!( + "'{}' is not a git repository, but recipe indicated git source", + source_dir.display(), + )); + } + + // Reset origin + let mut command = Command::new("git"); + command.arg("-C").arg(&source_dir); + command.arg("remote").arg("set-url").arg("origin").arg(git); + run_command(command)?; + + // Fetch origin + let mut command = Command::new("git"); + command.arg("-C").arg(&source_dir); + command.arg("fetch").arg("origin"); + run_command(command)?; + } + + if let Some(_upstream) = upstream { + //TODO: set upstream URL + // git remote set-url upstream "$GIT_UPSTREAM" &> /dev/null || + // git remote add upstream "$GIT_UPSTREAM" + // git fetch upstream + } + + if let Some(rev) = rev { + // Check out specified revision + let mut command = Command::new("git"); + command.arg("-C").arg(&source_dir); + command.arg("checkout").arg(rev); + run_command(command)?; + } else if !shallow_clone && !is_redox() { + //TODO: complicated stuff to check and reset branch to origin + //TODO: redox can't undestand this (got exit status 1) + let mut command = Command::new("bash"); + command.arg("-c").arg(GIT_RESET_BRANCH); + if let Some(branch) = branch { + command.env("BRANCH", branch); + } + command.current_dir(&source_dir); + run_command(command)?; + } + + if !patches.is_empty() || script.is_some() { + // Hard reset + let mut command = Command::new("git"); + command.arg("-C").arg(&source_dir); + command.arg("reset").arg("--hard"); + run_command(command)?; + } + + if !shallow_clone { + // Sync submodules URL + let mut command = Command::new("git"); + command.arg("-C").arg(&source_dir); + command.arg("submodule").arg("sync").arg("--recursive"); + run_command(command)?; + + // Update submodules + let mut command = Command::new("git"); + command.arg("-C").arg(&source_dir); + command + .arg("submodule") + .arg("update") + .arg("--init") + .arg("--recursive"); + run_command(command)?; + } + + fetch_apply_patches(recipe_dir, patches, script, &source_dir)?; + } + Some(SourceRecipe::Tar { + tar, + blake3, + patches, + script, + }) => { + let source_tar = recipe_dir.join("source.tar"); + let mut tar_updated = false; + while { + if tar_updated { + return Err(format!("The downloaded tar blake3 is not match")); + } + if !source_tar.is_file() { + tar_updated = true; + //TODO: replace wget + if !source_tar.is_file() { + let source_tar_tmp = recipe_dir.join("source.tar.tmp"); + + let mut command = Command::new("wget"); + command.arg(translate_mirror(tar)); + command.arg("--continue").arg("-O").arg(&source_tar_tmp); + run_command(command)?; + + // Move source.tar.tmp to source.tar atomically + rename(&source_tar_tmp, &source_tar)?; + } + } + let source_tar_blake3 = get_blake3(&source_tar)?; + if let Some(blake3) = blake3 { + if source_tar_blake3 != *blake3 { + remove_all(&source_tar)?; + true + } else { + false + } + } else { + //TODO: set blake3 hash on the recipe with something like "cook fix" + eprintln!( + "WARNING: set blake3 for '{}' to '{}'", + source_tar.display(), + source_tar_blake3 + ); + false + } + } {} + if source_dir.is_dir() { + if tar_updated || fetch_is_patches_newer(recipe_dir, patches, &source_dir)? { + remove_all(&source_dir)? + } + } + if !source_dir.is_dir() { + // Create source.tmp + let source_dir_tmp = recipe_dir.join("source.tmp"); + create_dir_clean(&source_dir_tmp)?; + fetch_extract_tar(source_tar, &source_dir_tmp)?; + fetch_apply_patches(recipe_dir, patches, script, &source_dir_tmp)?; + + // Move source.tmp to source atomically + rename(&source_dir_tmp, &source_dir)?; + } + } + // Local Sources + None => { + if !source_dir.is_dir() { + eprintln!( + "WARNING: Recipe without source section expected source dir at '{}'", + source_dir.display(), + ); + create_dir(&source_dir)?; + } + } + } + + Ok(source_dir) +} + +pub(crate) fn fetch_make_symlink(source_dir: &PathBuf, same_as: &String) -> Result<(), String> { + let target_dir = Path::new(same_as).join("source"); + if !source_dir.is_symlink() { + if source_dir.is_dir() { + return Err(format!( + "'{dir}' is a directory, but recipe indicated a symlink. \n\ + try removing '{dir}' if you haven't made any changes that would be lost", + dir = source_dir.display(), + )); + } + std::os::unix::fs::symlink(&target_dir, source_dir).map_err(|err| { + format!( + "failed to symlink '{}' to '{}': {}\n{:?}", + target_dir.display(), + source_dir.display(), + err, + err + ) + })?; + } + Ok(()) +} + +pub(crate) fn fetch_resolve_canon( + recipe_dir: &Path, + same_as: &String, +) -> Result<(PathBuf, Recipe), String> { + let canon_dir = Path::new(recipe_dir).join(same_as); + if canon_dir + .to_str() + .unwrap() + .chars() + .filter(|c| *c == '/') + .count() + > 50 + { + return Err(format!("Infinite loop detected")); + } + if !canon_dir.exists() { + return Err(format!("'{dir}' is not exists.", dir = canon_dir.display())); + } + let recipe_path = canon_dir.join("recipe.toml"); + let recipe_str = fs::read_to_string(&recipe_path) + .map_err(|e| format!("unable to read {path}: {e}", path = recipe_path.display()))?; + let recipe: Recipe = toml::from_str(&recipe_str) + .map_err(|e| format!("Unable to parse {path}: {e}", path = recipe_path.display()))?; + Ok((canon_dir, recipe)) +} + +pub(crate) fn fetch_extract_tar( + source_tar: PathBuf, + source_dir_tmp: &PathBuf, +) -> Result<(), String> { + let mut command = Command::new("tar"); + if is_redox() { + command.arg("xvf"); + } else { + command.arg("--extract"); + command.arg("--verbose"); + command.arg("--file"); + } + command.arg(&source_tar); + command.arg("--directory").arg(source_dir_tmp); + command.arg("--strip-components").arg("1"); + run_command(command)?; + Ok(()) +} + +pub(crate) fn fetch_is_patches_newer( + recipe_dir: &Path, + patches: &Vec, + source_dir: &PathBuf, +) -> Result { + // don't check source files inside as it can be mixed with user patches + let source_time = modified(&source_dir)?; + for patch_name in patches { + let patch_file = recipe_dir.join(patch_name); + if !patch_file.is_file() { + return Err(format!( + "failed to find patch file '{}'", + patch_file.display() + )); + } + + let patch_time = modified(&patch_file)?; + if patch_time > source_time { + return Ok(true); + } + } + return Ok(false); +} + +pub(crate) fn fetch_apply_patches( + recipe_dir: &Path, + patches: &Vec, + script: &Option, + source_dir_tmp: &PathBuf, +) -> Result<(), String> { + for patch_name in patches { + let patch_file = recipe_dir.join(patch_name); + if !patch_file.is_file() { + return Err(format!( + "failed to find patch file '{}'", + patch_file.display() + )); + } + + let patch = fs::read_to_string(&patch_file).map_err(|err| { + format!( + "failed to read patch file '{}': {}\n{:#?}", + patch_file.display(), + err, + err + ) + })?; + + let mut command = Command::new("patch"); + command.arg("--directory").arg(source_dir_tmp); + command.arg("--strip=1"); + run_command_stdin(command, patch.as_bytes())?; + } + Ok(if let Some(script) = script { + let mut command = Command::new("bash"); + command.arg("-ex"); + command.current_dir(source_dir_tmp); + run_command_stdin(command, format!("{SHARED_PRESCRIPT}\n{script}").as_bytes())?; + }) +} diff --git a/src/cook/fs.rs b/src/cook/fs.rs new file mode 100644 index 00000000..0fa51ecf --- /dev/null +++ b/src/cook/fs.rs @@ -0,0 +1,194 @@ +use serde::Serialize; +use std::{ + fs, + io::{self, Write}, + path::Path, + process::{self, Stdio}, + time::SystemTime, +}; +use walkdir::{DirEntry, WalkDir}; + +//TODO: pub(crate) for all of these functions + +pub fn remove_all(path: &Path) -> Result<(), String> { + if path.is_dir() { + fs::remove_dir_all(path) + } else { + fs::remove_file(path) + } + .map_err(|err| format!("failed to remove '{}': {}\n{:?}", path.display(), err, err)) +} + +pub fn create_dir(dir: &Path) -> Result<(), String> { + fs::create_dir(dir) + .map_err(|err| format!("failed to create '{}': {}\n{:?}", dir.display(), err, err)) +} + +pub fn create_dir_clean(dir: &Path) -> Result<(), String> { + if dir.is_dir() { + remove_all(dir)?; + } + create_dir(dir) +} + +pub fn copy_dir_all(src: impl AsRef, dst: impl AsRef) -> io::Result<()> { + fs::create_dir_all(&dst)?; + for entry in fs::read_dir(src)? { + let entry = entry?; + let ty = entry.file_type()?; + if ty.is_dir() { + copy_dir_all(entry.path(), dst.as_ref().join(entry.file_name()))?; + } else { + fs::copy(entry.path(), dst.as_ref().join(entry.file_name()))?; + } + } + Ok(()) +} + +pub fn symlink(original: impl AsRef, link: impl AsRef) -> Result<(), String> { + std::os::unix::fs::symlink(&original, &link).map_err(|err| { + format!( + "failed to symlink '{}' to '{}': {}\n{:?}", + original.as_ref().display(), + link.as_ref().display(), + err, + err + ) + }) +} + +pub fn modified(path: &Path) -> Result { + let metadata = fs::metadata(path).map_err(|err| { + format!( + "failed to get metadata of '{}': {}\n{:#?}", + path.display(), + err, + err + ) + })?; + metadata.modified().map_err(|err| { + format!( + "failed to get modified time of '{}': {}\n{:#?}", + path.display(), + err, + err + ) + }) +} + +pub fn modified_dir_inner bool>( + dir: &Path, + filter: F, +) -> io::Result { + let mut newest = fs::metadata(dir)?.modified()?; + for entry_res in WalkDir::new(dir).into_iter().filter_entry(filter) { + let entry = entry_res?; + let modified = entry.metadata()?.modified()?; + if modified > newest { + newest = modified; + } + } + Ok(newest) +} + +pub fn modified_dir(dir: &Path) -> Result { + modified_dir_inner(dir, |_| true).map_err(|err| { + format!( + "failed to get modified time of '{}': {}\n{:#?}", + dir.display(), + err, + err + ) + }) +} + +pub fn modified_dir_ignore_git(dir: &Path) -> Result { + modified_dir_inner(dir, |entry| { + entry + .file_name() + .to_str() + .map(|s| s != ".git") + .unwrap_or(true) + }) + .map_err(|err| { + format!( + "failed to get modified time of '{}': {}\n{:#?}", + dir.display(), + err, + err + ) + }) +} + +pub fn rename(src: &Path, dst: &Path) -> Result<(), String> { + fs::rename(src, dst).map_err(|err| { + format!( + "failed to rename '{}' to '{}': {}\n{:?}", + src.display(), + dst.display(), + err, + err + ) + }) +} + +pub fn run_command(mut command: process::Command) -> Result<(), String> { + let status = command + .status() + .map_err(|err| format!("failed to run {:?}: {}\n{:#?}", command, err, err))?; + + if !status.success() { + return Err(format!( + "failed to run {:?}: exited with status {}", + command, status + )); + } + + Ok(()) +} + +pub fn run_command_stdin(mut command: process::Command, stdin_data: &[u8]) -> Result<(), String> { + command.stdin(Stdio::piped()); + + let mut child = command + .spawn() + .map_err(|err| format!("failed to spawn {:?}: {}\n{:#?}", command, err, err))?; + + if let Some(ref mut stdin) = child.stdin { + stdin.write_all(stdin_data).map_err(|err| { + format!( + "failed to write stdin of {:?}: {}\n{:#?}", + command, err, err + ) + })?; + } else { + return Err(format!("failed to find stdin of {:?}", command)); + } + + let status = child + .wait() + .map_err(|err| format!("failed to run {:?}: {}\n{:#?}", command, err, err))?; + + if !status.success() { + return Err(format!( + "failed to run {:?}: exited with status {}", + command, status + )); + } + + Ok(()) +} + +pub fn serialize_and_write(file_path: &Path, content: &T) -> Result<(), String> { + let toml_content = toml::to_string(content).map_err(|err| { + format!( + "Failed to serialize content for '{}': {}", + file_path.display(), + err + ) + })?; + + fs::write(file_path, toml_content) + .map_err(|err| format!("Failed to write to file '{}': {}", file_path.display(), err))?; + Ok(()) +} diff --git a/src/cook/mod.rs b/src/cook/mod.rs new file mode 100644 index 00000000..e5080038 --- /dev/null +++ b/src/cook/mod.rs @@ -0,0 +1,6 @@ +pub mod fetch; +pub mod fs; +pub mod script; +//TODO: Move rest of cook functions here in the next refactor +//pub mod build; +//pub mod package; diff --git a/src/cook/script.rs b/src/cook/script.rs new file mode 100644 index 00000000..aa531d69 --- /dev/null +++ b/src/cook/script.rs @@ -0,0 +1,91 @@ +//TODO: pub(crate) +pub static SHARED_PRESCRIPT: &str = r#" +# Build dynamically +function DYNAMIC_INIT { + COOKBOOK_AUTORECONF="autoreconf" + autotools_recursive_regenerate() { + for f in $(find . -name configure.ac -o -name configure.in -type f | sort); do + echo "* autotools regen in '$(dirname $f)'..." + ( cd "$(dirname "$f")" && "${COOKBOOK_AUTORECONF}" -fvi "$@" -I${COOKBOOK_HOST_SYSROOT}/share/aclocal ) + done + } + + if [ "${TARGET}" != "x86_64-unknown-redox" ] + then + echo "WARN: ${TARGET} does not support dynamic linking." >&2 + return + fi + + echo "DEBUG: Program is being compiled dynamically." + + COOKBOOK_CONFIGURE_FLAGS=( + --host="${GNU_TARGET}" + --prefix="/usr" + --enable-shared + --disable-static + ) + + COOKBOOK_CMAKE_FLAGS=( + -DBUILD_SHARED_LIBS=True + -DENABLE_SHARED=True + -DENABLE_STATIC=False + ) + + COOKBOOK_MESON_FLAGS=( + --buildtype release + --wrap-mode nofallback + --strip + -Ddefault_library=shared + -Dprefix=/usr + ) + + # TODO: check paths for spaces + export LDFLAGS="-Wl,-rpath-link,${COOKBOOK_SYSROOT}/lib -L${COOKBOOK_SYSROOT}/lib" + export RUSTFLAGS="-C target-feature=-crt-static" + export COOKBOOK_DYNAMIC=1 +} + +# Build both dynamically and statically +function DYNAMIC_STATIC_INIT { + DYNAMIC_INIT + if [ "${COOKBOOK_DYNAMIC}" == "1" ] + then + COOKBOOK_CONFIGURE_FLAGS=( + --host="${GNU_TARGET}" + --prefix="/usr" + --enable-shared + --enable-static + ) + + COOKBOOK_CMAKE_FLAGS=( + -DBUILD_SHARED_LIBS=True + -DENABLE_SHARED=True + -DENABLE_STATIC=True + ) + + COOKBOOK_MESON_FLAGS=( + --buildtype release + --wrap-mode nofallback + --strip + -Ddefault_library=both + -Dprefix=/usr + ) + fi +} + +function GNU_CONFIG_GET { + wget -O "$1" "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" +} +"#; + +pub(crate) static GIT_RESET_BRANCH: &str = r#" +ORIGIN_BRANCH="$(git branch --remotes | grep '^ origin/HEAD -> ' | cut -d ' ' -f 5-)" +if [ -n "$BRANCH" ] +then + ORIGIN_BRANCH="origin/$BRANCH" +fi + +if [ "$(git rev-parse HEAD)" != "$(git rev-parse $ORIGIN_BRANCH)" ] +then + git checkout -B "$(echo "$ORIGIN_BRANCH" | cut -d / -f 2-)" "$ORIGIN_BRANCH" +fi"#; diff --git a/src/lib.rs b/src/lib.rs index cfad4bc4..cef82ad0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,6 @@ pub mod blake3; pub mod config; +pub mod cook; pub mod recipe; mod progress_bar; From 59c9eeff3ecc728e2f3a6d762568c48723dff13a Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sat, 11 Oct 2025 16:37:16 +0700 Subject: [PATCH 2910/3180] Mention source blake3 if error --- src/cook/fetch.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/cook/fetch.rs b/src/cook/fetch.rs index dc44bb31..667c855b 100644 --- a/src/cook/fetch.rs +++ b/src/cook/fetch.rs @@ -56,7 +56,7 @@ pub fn fetch_offline(recipe_dir: &Path, source: &Option) -> Result if source_tar.exists() { if let Some(blake3) = blake3 { if source_tar_blake3 != *blake3 { - return Err(format!("The downloaded tar blake3 is not match and unable to continue in offline mode.")); + return Err(format!("The downloaded tar blake3 '{source_tar_blake3}' is not equal to blake3 in recipe.toml.")); } fetch_extract_tar(source_tar, &source_dir)?; fetch_apply_patches(recipe_dir, patches, script, &source_dir)?; @@ -220,9 +220,6 @@ pub fn fetch(recipe_dir: &Path, source: &Option) -> Result) -> Result Date: Sat, 11 Oct 2025 20:26:02 +0700 Subject: [PATCH 2911/3180] Update rust edition and use redox-pkg from crates io --- Cargo.lock | 196 +++++++++++++++-------------------- Cargo.toml | 4 +- src/bin/cook.rs | 4 +- src/bin/repo_builder.rs | 2 +- src/{cook/mod.rs => cook.rs} | 0 src/cook/fetch.rs | 4 +- src/recipe.rs | 4 +- 7 files changed, 92 insertions(+), 122 deletions(-) rename src/{cook/mod.rs => cook.rs} (100%) diff --git a/Cargo.lock b/Cargo.lock index 0dd230b5..ce7dbe51 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -642,11 +642,11 @@ dependencies = [ [[package]] name = "dirs" -version = "5.0.1" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" dependencies = [ - "dirs-sys 0.4.1", + "dirs-sys 0.5.0", ] [[package]] @@ -656,20 +656,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" dependencies = [ "libc", - "redox_users", + "redox_users 0.4.6", "winapi", ] [[package]] name = "dirs-sys" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" dependencies = [ "libc", "option-ext", - "redox_users", - "windows-sys 0.48.0", + "redox_users 0.5.2", + "windows-sys 0.60.2", ] [[package]] @@ -1830,31 +1830,15 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "436d45c2b6a5b159d43da708e62b25be3a4a3d5550d654b72216ade4c4bfd717" -[[package]] -name = "redox-pkg" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70f49b2c29ae3c72ff3a8dbc1c5eefba9093a8c5ceaa8ca5292833816fe931e2" -dependencies = [ - "anyhow", - "indicatif", - "pkgar 0.1.18", - "pkgar-core 0.1.18", - "pkgar-keys 0.1.18", - "reqwest", - "serde", - "serde_derive", - "thiserror 1.0.69", - "toml 0.8.23", -] - [[package]] name = "redox-pkg" version = "0.2.8" -source = "git+https://gitlab.redox-os.org/redox-os/pkgutils#ea2641126c8b38d7b8997c5c7ebec74999fc9578" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d50a7ed267e236ce8bfa178bfd3fb7a39765689d037e51c57f36bad46f474fd" dependencies = [ "anyhow", "ignore", + "indicatif", "pkgar 0.1.18", "pkgar-core 0.1.18", "pkgar-keys 0.1.18", @@ -1886,7 +1870,7 @@ dependencies = [ "pkgar 0.1.19", "pkgar-core 0.1.19", "pkgar-keys 0.1.19", - "redox-pkg 0.2.8", + "redox-pkg", "redoxer", "regex", "serde", @@ -1913,7 +1897,7 @@ dependencies = [ "pkgar-core 0.1.18", "pkgar-keys 0.1.18", "rand 0.8.5", - "redox-pkg 0.2.5", + "redox-pkg", "redox_liner", "redox_syscall", "redoxfs", @@ -1965,18 +1949,29 @@ dependencies = [ ] [[package]] -name = "redoxer" -version = "0.2.53" +name = "redox_users" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5558ef5ce386b5a4b7d5276467d940023b31c5a85484a05ac35b31da4055d740" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ - "dirs 5.0.1", + "getrandom 0.2.16", + "libredox", + "thiserror 2.0.12", +] + +[[package]] +name = "redoxer" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ead20eb76f54e16ecc3e678daca948d49497588a777148ac60d99a67dab8a2b0" +dependencies = [ + "dirs 6.0.0", "proc-mounts", "redox_installer", "redox_syscall", "redoxfs", "tempfile", - "toml 0.5.11", + "toml 0.9.5", ] [[package]] @@ -2274,6 +2269,15 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_spanned" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40734c41988f7306bb04f0ecf60ec0f3f1caa34290e4e8ea471dcd3346483b83" +dependencies = [ + "serde", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -2547,15 +2551,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - [[package]] name = "toml" version = "0.8.23" @@ -2563,11 +2558,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", - "serde_spanned", - "toml_datetime", + "serde_spanned 0.6.9", + "toml_datetime 0.6.11", "toml_edit", ] +[[package]] +name = "toml" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75129e1dc5000bfbaa9fee9d1b21f974f9fbad9daec557a521ee6e080825f6e8" +dependencies = [ + "indexmap", + "serde", + "serde_spanned 1.0.0", + "toml_datetime 0.7.0", + "toml_parser", + "toml_writer", + "winnow", +] + [[package]] name = "toml_datetime" version = "0.6.11" @@ -2577,6 +2587,15 @@ dependencies = [ "serde", ] +[[package]] +name = "toml_datetime" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bade1c3e902f58d73d3f294cd7f20391c1cb2fbcb643b73566bc773971df91e3" +dependencies = [ + "serde", +] + [[package]] name = "toml_edit" version = "0.22.27" @@ -2585,18 +2604,33 @@ checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ "indexmap", "serde", - "serde_spanned", - "toml_datetime", + "serde_spanned 0.6.9", + "toml_datetime 0.6.11", "toml_write", "winnow", ] +[[package]] +name = "toml_parser" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b551886f449aa90d4fe2bdaa9f4a2577ad2dde302c61ecf262d80b116db95c10" +dependencies = [ + "winnow", +] + [[package]] name = "toml_write" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" +[[package]] +name = "toml_writer" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2" + [[package]] name = "tower" version = "0.5.2" @@ -2924,7 +2958,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] @@ -3001,15 +3035,6 @@ dependencies = [ "windows-targets 0.42.2", ] -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - [[package]] name = "windows-sys" version = "0.52.0" @@ -3052,21 +3077,6 @@ dependencies = [ "windows_x86_64_msvc 0.42.2", ] -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - [[package]] name = "windows-targets" version = "0.52.6" @@ -3105,12 +3115,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -3129,12 +3133,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" @@ -3153,12 +3151,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -3189,12 +3181,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - [[package]] name = "windows_i686_msvc" version = "0.52.6" @@ -3213,12 +3199,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" @@ -3237,12 +3217,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" @@ -3261,12 +3235,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" diff --git a/Cargo.toml b/Cargo.toml index b334424a..e163cf5e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,7 @@ name = "redox_cookbook" version = "0.1.0" authors = ["Jeremy Soller "] -edition = "2018" +edition = "2024" default-run = "cook" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -28,7 +28,7 @@ pbr = "1.0.2" pkgar = { path = "pkgar/pkgar" } pkgar-core = { path = "pkgar/pkgar-core" } pkgar-keys = { path = "pkgar/pkgar-keys" } -redox-pkg = { git = "https://gitlab.redox-os.org/redox-os/pkgutils" } +redox-pkg = "0.2.8" redoxer = "0.2" regex = "1.11" serde = { version = "=1.0.197", features = ["derive"] } diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 90315b4e..7bc3502f 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -4,7 +4,7 @@ use cookbook::cook::fs::*; use cookbook::cook::script::SHARED_PRESCRIPT; use cookbook::recipe::{AutoDeps, BuildKind, CookRecipe, Recipe}; use pkg::package::Package; -use pkg::{recipes, PackageName}; +use pkg::{PackageName, recipes}; use std::collections::VecDeque; use std::convert::TryInto; use std::{ @@ -17,7 +17,7 @@ use std::{ }; use termion::{color, style}; -use cookbook::{is_redox, WALK_DEPTH}; +use cookbook::{WALK_DEPTH, is_redox}; fn auto_deps( stage_dir: &Path, diff --git a/src/bin/repo_builder.rs b/src/bin/repo_builder.rs index 8f1f0ac9..a94123df 100644 --- a/src/bin/repo_builder.rs +++ b/src/bin/repo_builder.rs @@ -1,5 +1,5 @@ use cookbook::WALK_DEPTH; -use pkg::{recipes, Package, PackageName}; +use pkg::{Package, PackageName, recipes}; use std::collections::{BTreeMap, HashMap}; use std::env; use std::fs::{self, File}; diff --git a/src/cook/mod.rs b/src/cook.rs similarity index 100% rename from src/cook/mod.rs rename to src/cook.rs diff --git a/src/cook/fetch.rs b/src/cook/fetch.rs index 667c855b..c076d4e2 100644 --- a/src/cook/fetch.rs +++ b/src/cook/fetch.rs @@ -56,7 +56,9 @@ pub fn fetch_offline(recipe_dir: &Path, source: &Option) -> Result if source_tar.exists() { if let Some(blake3) = blake3 { if source_tar_blake3 != *blake3 { - return Err(format!("The downloaded tar blake3 '{source_tar_blake3}' is not equal to blake3 in recipe.toml.")); + return Err(format!( + "The downloaded tar blake3 '{source_tar_blake3}' is not equal to blake3 in recipe.toml." + )); } fetch_extract_tar(source_tar, &source_dir)?; fetch_apply_patches(recipe_dir, patches, script, &source_dir)?; diff --git a/src/recipe.rs b/src/recipe.rs index 43b61657..ff71fd5b 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -1,10 +1,10 @@ use std::{collections::BTreeSet, convert::TryInto, fs, path::PathBuf}; -use pkg::{package::PackageError, recipes, PackageName}; +use pkg::{PackageName, package::PackageError, recipes}; use regex::Regex; use serde::{ - de::{value::Error as DeError, Error as DeErrorT}, Deserialize, Serialize, + de::{Error as DeErrorT, value::Error as DeError}, }; use crate::WALK_DEPTH; From 25dd3b79a157bb14554d640e1f70c5509b13bc63 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sat, 11 Oct 2025 21:13:14 +0700 Subject: [PATCH 2912/3180] Don't show progress bar on normal read --- src/blake3.rs | 8 ++++++++ src/cook/fetch.rs | 15 ++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/blake3.rs b/src/blake3.rs index 746b829d..0ac19318 100644 --- a/src/blake3.rs +++ b/src/blake3.rs @@ -21,3 +21,11 @@ pub fn blake3_progress>(path: P) -> Result { Ok(res) } + +pub fn blake3_silent>(path: P) -> Result { + let mut f = fs::File::open(&path)?; + + let hash = Hasher::new().update_reader(&mut f)?.finalize(); + let res = format!("{}", hash.to_hex()); + Ok(res) +} diff --git a/src/cook/fetch.rs b/src/cook/fetch.rs index c076d4e2..bb950ac4 100644 --- a/src/cook/fetch.rs +++ b/src/cook/fetch.rs @@ -3,13 +3,18 @@ use crate::cook::fs::*; use crate::cook::script::*; use crate::is_redox; use crate::recipe::Recipe; -use crate::{blake3::blake3_progress, recipe::SourceRecipe}; +use crate::{blake3, recipe::SourceRecipe}; use std::fs; use std::path::{Path, PathBuf}; use std::process::Command; -pub(crate) fn get_blake3(path: &PathBuf) -> Result { - blake3_progress(&path).map_err(|err| { +pub(crate) fn get_blake3(path: &PathBuf, show_progress: bool) -> Result { + if show_progress { + blake3::blake3_progress(&path) + } else { + blake3::blake3_silent(&path) + } + .map_err(|err| { format!( "failed to calculate blake3 of '{}': {}\n{:?}", path.display(), @@ -52,7 +57,7 @@ pub fn fetch_offline(recipe_dir: &Path, source: &Option) -> Result }) => { if !source_dir.is_dir() { let source_tar = recipe_dir.join("source.tar"); - let source_tar_blake3 = get_blake3(&source_tar)?; + let source_tar_blake3 = get_blake3(&source_tar, true)?; if source_tar.exists() { if let Some(blake3) = blake3 { if source_tar_blake3 != *blake3 { @@ -237,7 +242,7 @@ pub fn fetch(recipe_dir: &Path, source: &Option) -> Result Date: Sat, 11 Oct 2025 21:24:52 +0700 Subject: [PATCH 2913/3180] Tell if source removed --- src/cook/fetch.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/cook/fetch.rs b/src/cook/fetch.rs index bb950ac4..08d241c0 100644 --- a/src/cook/fetch.rs +++ b/src/cook/fetch.rs @@ -268,6 +268,7 @@ pub fn fetch(recipe_dir: &Path, source: &Option) -> Result Date: Sat, 11 Oct 2025 21:28:18 +0700 Subject: [PATCH 2914/3180] Tell if tar removed --- src/cook/fetch.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/cook/fetch.rs b/src/cook/fetch.rs index 08d241c0..21f45daa 100644 --- a/src/cook/fetch.rs +++ b/src/cook/fetch.rs @@ -250,6 +250,7 @@ pub fn fetch(recipe_dir: &Path, source: &Option) -> Result Date: Sat, 11 Oct 2025 22:20:40 +0700 Subject: [PATCH 2915/3180] Fix mirror config readme and tell config errors --- README.md | 6 +++--- src/config.rs | 35 +++++++++++++++++++---------------- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 7cba4907..9da5af7b 100644 --- a/README.md +++ b/README.md @@ -31,9 +31,9 @@ Cookbook has special config to avoid repetitive args, place this file into `cook # This is a configuration file to avoid repetitively spelling command args. # At the moment only mirrors here implemented but in future it will be expanded when scripts are rusted -[[mirrors]] -# https://www.gnu.org/prep/ftp.en.html -"ftp.gnu.com" = "example.com/gnu" +[mirrors] +# see list of GNU FTP mirrors at https://www.gnu.org/prep/ftp.en.html +"ftp.gnu.org/gnu" = "example.com/gnu" "github.com/foo/bar" = "github.com/baz/bar" ``` diff --git a/src/config.rs b/src/config.rs index fb07ce2a..54d6f837 100644 --- a/src/config.rs +++ b/src/config.rs @@ -10,9 +10,15 @@ pub struct CookbookConfig { static CONFIG: OnceLock = OnceLock::new(); pub fn init_config() { - let config: CookbookConfig = { - let toml_content = fs::read_to_string("cookbook.toml").unwrap_or("".to_owned()); - toml::from_str(&toml_content).unwrap_or(CookbookConfig::default()) + let config: CookbookConfig = if fs::exists("cookbook.toml").unwrap_or(false) { + let toml_content = fs::read_to_string("cookbook.toml") + .map_err(|e| format!("Unable to read config: {:?}", e)) + .unwrap(); + toml::from_str(&toml_content) + .map_err(|e| format!("Unable to parse config: {:?}", e)) + .unwrap() + } else { + CookbookConfig::default() }; CONFIG.set(config).expect("config is initialized twice"); @@ -57,16 +63,13 @@ mod tests { use super::*; fn setup_test_config() { - let mut mirrors = HashMap::new(); - mirrors.insert("ftp.gnu.com".to_string(), "example.com/gnu".to_string()); - mirrors.insert( - "github.com/foo/bar".to_string(), - "github.com/baz/bar".to_string(), - ); - mirrors.insert("github.com/a".to_string(), "github.com/b".to_string()); - - let app_config = CookbookConfig { mirrors }; - + let app_config = toml::from_str( + "[mirrors]\n\ + \"ftp.gnu.org/gnu\" = \"example.com/gnu\"\n\ + \"github.com/foo/bar\" = \"github.com/baz/bar\"\n\ + \"github.com/a\" = \"github.com/b\"\n", + ) + .expect("Unable to parse test config"); // This will be called for each test. If the config is already set, // it will do nothing, which is fine as all tests use the same config. let _ = CONFIG.set(app_config); @@ -75,7 +78,7 @@ mod tests { #[test] fn test_exact_match() { setup_test_config(); - assert_eq!(translate_mirror("ftp.gnu.com"), "example.com/gnu"); + assert_eq!(translate_mirror("ftp.gnu.org/gnu"), "example.com/gnu"); assert_eq!(translate_mirror("github.com/foo/bar"), "github.com/baz/bar"); } @@ -87,8 +90,8 @@ mod tests { "https://github.com/b/c" ); assert_eq!( - translate_mirror("https://ftp.gnu.com/path/to/file"), - "https://example.com/gnu/path/to/file" + translate_mirror("https://ftp.gnu.org/gnu/bash/bash-5.2.15.tar.gz"), + "https://example.com/gnu/bash/bash-5.2.15.tar.gz" ); } From 11ef884ba9532139acbe6da760949611d52327fb Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 11 Oct 2025 20:25:59 -0300 Subject: [PATCH 2916/3180] Add recipes --- recipes/wip/dev/analysis/debtmap/recipe.toml | 5 +++++ recipes/wip/dev/lang/goiaba/recipe.toml | 5 +++++ recipes/wip/games/puzzle/conduit/recipe.toml | 5 +++++ recipes/wip/net/other/phantun/recipe.toml | 8 ++++++++ recipes/wip/net/other/sandhole/recipe.toml | 5 +++++ recipes/wip/net/sharing/hakanai/recipe.toml | 11 +++++++++++ recipes/wip/news/feedr/recipe.toml | 5 +++++ recipes/wip/terminal/pay-respects/recipe.toml | 8 ++++++++ recipes/wip/text/blogr/recipe.toml | 8 ++++++++ recipes/wip/text/nanorust/recipe.toml | 5 +++++ 10 files changed, 65 insertions(+) create mode 100644 recipes/wip/dev/analysis/debtmap/recipe.toml create mode 100644 recipes/wip/dev/lang/goiaba/recipe.toml create mode 100644 recipes/wip/games/puzzle/conduit/recipe.toml create mode 100644 recipes/wip/net/other/phantun/recipe.toml create mode 100644 recipes/wip/net/other/sandhole/recipe.toml create mode 100644 recipes/wip/net/sharing/hakanai/recipe.toml create mode 100644 recipes/wip/news/feedr/recipe.toml create mode 100644 recipes/wip/terminal/pay-respects/recipe.toml create mode 100644 recipes/wip/text/blogr/recipe.toml create mode 100644 recipes/wip/text/nanorust/recipe.toml diff --git a/recipes/wip/dev/analysis/debtmap/recipe.toml b/recipes/wip/dev/analysis/debtmap/recipe.toml new file mode 100644 index 00000000..11a61f1e --- /dev/null +++ b/recipes/wip/dev/analysis/debtmap/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/iepathos/debtmap" +[build] +template = "cargo" diff --git a/recipes/wip/dev/lang/goiaba/recipe.toml b/recipes/wip/dev/lang/goiaba/recipe.toml new file mode 100644 index 00000000..9bbecea1 --- /dev/null +++ b/recipes/wip/dev/lang/goiaba/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/raphamorim/goiaba" +[build] +template = "cargo" diff --git a/recipes/wip/games/puzzle/conduit/recipe.toml b/recipes/wip/games/puzzle/conduit/recipe.toml new file mode 100644 index 00000000..81dcde1e --- /dev/null +++ b/recipes/wip/games/puzzle/conduit/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/WizCrab/conduit-cli-game" +[build] +template = "cargo" diff --git a/recipes/wip/net/other/phantun/recipe.toml b/recipes/wip/net/other/phantun/recipe.toml new file mode 100644 index 00000000..aa548676 --- /dev/null +++ b/recipes/wip/net/other/phantun/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/dndx/phantun" +[build] +template = "custom" +script = """ +cookbook_cargo_packages phantun +""" diff --git a/recipes/wip/net/other/sandhole/recipe.toml b/recipes/wip/net/other/sandhole/recipe.toml new file mode 100644 index 00000000..e87de184 --- /dev/null +++ b/recipes/wip/net/other/sandhole/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/EpicEric/sandhole" +[build] +template = "cargo" diff --git a/recipes/wip/net/sharing/hakanai/recipe.toml b/recipes/wip/net/sharing/hakanai/recipe.toml new file mode 100644 index 00000000..ca4fdbab --- /dev/null +++ b/recipes/wip/net/sharing/hakanai/recipe.toml @@ -0,0 +1,11 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/czerwonk/hakanai" +[build] +template = "custom" +dependencies = [ + "openssl3" +] +script = """ +cookbook_cargo_packages hakanai hakanai-server +""" diff --git a/recipes/wip/news/feedr/recipe.toml b/recipes/wip/news/feedr/recipe.toml new file mode 100644 index 00000000..d9d70884 --- /dev/null +++ b/recipes/wip/news/feedr/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/bahdotsh/feedr" +[build] +template = "cargo" diff --git a/recipes/wip/terminal/pay-respects/recipe.toml b/recipes/wip/terminal/pay-respects/recipe.toml new file mode 100644 index 00000000..1892867a --- /dev/null +++ b/recipes/wip/terminal/pay-respects/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/iffse/pay-respects" +[build] +template = "custom" +script = """ +cookbook_cargo_packages pay-respects +""" diff --git a/recipes/wip/text/blogr/recipe.toml b/recipes/wip/text/blogr/recipe.toml new file mode 100644 index 00000000..1f703492 --- /dev/null +++ b/recipes/wip/text/blogr/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/bahdotsh/blogr" +[build] +template = "custom" +script = """ +cookbook_cargo_packages blogr-cli +""" diff --git a/recipes/wip/text/nanorust/recipe.toml b/recipes/wip/text/nanorust/recipe.toml new file mode 100644 index 00000000..616849da --- /dev/null +++ b/recipes/wip/text/nanorust/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Supakornn/nanorust" +[build] +template = "cargo" From 87062a0b12d636e8a7d8b820c1559d08c0bf563d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sat, 11 Oct 2025 20:58:11 -0300 Subject: [PATCH 2917/3180] Add recipes --- recipes/wip/dev/hw/recipe.toml | 20 ++++++++++++++++++++ recipes/wip/net/other/agnos/recipe.toml | 5 +++++ recipes/wip/net/other/rlt/recipe.toml | 8 ++++++++ recipes/wip/net/other/wstunnel/recipe.toml | 8 ++++++++ recipes/wip/security/tyr/recipe.toml | 5 +++++ recipes/wip/sound/lookas/recipe.toml | 5 +++++ 6 files changed, 51 insertions(+) create mode 100644 recipes/wip/dev/hw/recipe.toml create mode 100644 recipes/wip/net/other/agnos/recipe.toml create mode 100644 recipes/wip/net/other/rlt/recipe.toml create mode 100644 recipes/wip/net/other/wstunnel/recipe.toml create mode 100644 recipes/wip/security/tyr/recipe.toml create mode 100644 recipes/wip/sound/lookas/recipe.toml diff --git a/recipes/wip/dev/hw/recipe.toml b/recipes/wip/dev/hw/recipe.toml new file mode 100644 index 00000000..e3361580 --- /dev/null +++ b/recipes/wip/dev/hw/recipe.toml @@ -0,0 +1,20 @@ +#TODO not compiled or tested +# build instructions: https://librepcb.org/docs/installation/build-from-sources/ +# commented out optional dependencies +[source] +git = "https://github.com/LibrePCB/LibrePCB" +rev = "77db4fda7f5df5d058bfc5d2fae3072bb30c8402" +[build] +template = "cmake" +cmakeflags = [ + "-DUSE_GLU=0", + "-DUSE_OPENCASCADE=0", +] +dependencies = [ + "qt6-base", + "qt6-imageformats", + "openssl3", + "zlib", + #"opencascade", + #"mesa-glu", +] diff --git a/recipes/wip/net/other/agnos/recipe.toml b/recipes/wip/net/other/agnos/recipe.toml new file mode 100644 index 00000000..e1a0cb68 --- /dev/null +++ b/recipes/wip/net/other/agnos/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/krtab/agnos" +[build] +template = "cargo" diff --git a/recipes/wip/net/other/rlt/recipe.toml b/recipes/wip/net/other/rlt/recipe.toml new file mode 100644 index 00000000..6efa1867 --- /dev/null +++ b/recipes/wip/net/other/rlt/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/kaichaosun/rlt" +[build] +template = "custom" +script = """ +cookbook_cargo_packages localtunnel localtunnel-client localtunnel-server +""" diff --git a/recipes/wip/net/other/wstunnel/recipe.toml b/recipes/wip/net/other/wstunnel/recipe.toml new file mode 100644 index 00000000..8e67e67f --- /dev/null +++ b/recipes/wip/net/other/wstunnel/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/erebe/wstunnel" +[build] +template = "custom" +script = """ +cookbook_cargo_packages wstunnel-cli +""" diff --git a/recipes/wip/security/tyr/recipe.toml b/recipes/wip/security/tyr/recipe.toml new file mode 100644 index 00000000..29b21d9f --- /dev/null +++ b/recipes/wip/security/tyr/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://gitlab.com/cyberactivity/tyr" +[build] +template = "cargo" diff --git a/recipes/wip/sound/lookas/recipe.toml b/recipes/wip/sound/lookas/recipe.toml new file mode 100644 index 00000000..a46c714f --- /dev/null +++ b/recipes/wip/sound/lookas/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/rccyx/lookas" +[build] +template = "cargo" From 5807062d57ba61be59f7942609a28b689a9e89b8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 11 Oct 2025 21:05:44 -0600 Subject: [PATCH 2918/3180] bottom: use fork --- recipes/wip/monitors/bottom/recipe.toml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/wip/monitors/bottom/recipe.toml b/recipes/wip/monitors/bottom/recipe.toml index 1032de52..530c4186 100644 --- a/recipes/wip/monitors/bottom/recipe.toml +++ b/recipes/wip/monitors/bottom/recipe.toml @@ -1,5 +1,6 @@ -#TODO starship-battery crate compilation error +#TODO missing data [source] -git = "https://github.com/ClementTsang/bottom" +git = "https://github.com/jackpot51/bottom" + [build] template = "cargo" From 9399bbef22908fb0fcad0c295993ac85b930ad1d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 12 Oct 2025 18:07:49 -0300 Subject: [PATCH 2919/3180] Add recipes --- recipes/wip/files/lsv/recipe.toml | 5 +++++ recipes/wip/lang/uroman-rs/recipe.toml | 5 +++++ recipes/wip/terminal/fsel/recipe.toml | 5 +++++ recipes/wip/terminal/otter-launcher/recipe.toml | 10 ++++++++++ 4 files changed, 25 insertions(+) create mode 100644 recipes/wip/files/lsv/recipe.toml create mode 100644 recipes/wip/lang/uroman-rs/recipe.toml create mode 100644 recipes/wip/terminal/fsel/recipe.toml create mode 100644 recipes/wip/terminal/otter-launcher/recipe.toml diff --git a/recipes/wip/files/lsv/recipe.toml b/recipes/wip/files/lsv/recipe.toml new file mode 100644 index 00000000..bfc4defe --- /dev/null +++ b/recipes/wip/files/lsv/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/SecretDeveloper/lsv" +[build] +template = "cargo" diff --git a/recipes/wip/lang/uroman-rs/recipe.toml b/recipes/wip/lang/uroman-rs/recipe.toml new file mode 100644 index 00000000..8ca4ef10 --- /dev/null +++ b/recipes/wip/lang/uroman-rs/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/stellanomia/uroman-rs" +[build] +template = "cargo" diff --git a/recipes/wip/terminal/fsel/recipe.toml b/recipes/wip/terminal/fsel/recipe.toml new file mode 100644 index 00000000..227bad50 --- /dev/null +++ b/recipes/wip/terminal/fsel/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Mjoyufull/fsel" +[build] +template = "cargo" diff --git a/recipes/wip/terminal/otter-launcher/recipe.toml b/recipes/wip/terminal/otter-launcher/recipe.toml new file mode 100644 index 00000000..3b4c4a7b --- /dev/null +++ b/recipes/wip/terminal/otter-launcher/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/kuokuo123/otter-launcher" +[build] +template = "custom" +script = """ +cookbook_cargo +mkdir -pv "${COOKBOOK_STAGE}/usr/share/otter-launcher" +cp -rv "${COOKBOOK_SOURCE}"/contrib/* "${COOKBOOK_STAGE}/usr/share/otter-launcher" +""" From dcc49081a260bd9ed98474e7fc5635feea89e1b0 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 12 Oct 2025 18:26:25 -0300 Subject: [PATCH 2920/3180] Try to fix more CMake-based recipes --- .../wip/libs/other/libseexpr-kde/recipe.toml | 20 +++----------- recipes/wip/libs/other/libsoundio/recipe.toml | 20 +++----------- recipes/wip/libs/other/libspdlog/recipe.toml | 19 ++------------ recipes/wip/libs/other/libsrt/recipe.toml | 3 ++- recipes/wip/libs/other/libssh/recipe.toml | 20 +++----------- .../wip/libs/other/liburiparser/recipe.toml | 19 ++------------ .../wip/libs/other/libvncserver/recipe.toml | 26 +++++-------------- recipes/wip/libs/other/libvulkan/recipe.toml | 21 +++------------ .../wip/libs/other/libwebsockets/recipe.toml | 19 ++------------ recipes/wip/libs/other/libxsimd/recipe.toml | 20 +++----------- 10 files changed, 30 insertions(+), 157 deletions(-) diff --git a/recipes/wip/libs/other/libseexpr-kde/recipe.toml b/recipes/wip/libs/other/libseexpr-kde/recipe.toml index 39d010df..6c7b11b6 100644 --- a/recipes/wip/libs/other/libseexpr-kde/recipe.toml +++ b/recipes/wip/libs/other/libseexpr-kde/recipe.toml @@ -1,24 +1,10 @@ -#TODO maybe incomplete script, see https://invent.kde.org/graphics/kseexpr#super-impatient-cmake-building-and-installing-guide +#TODO not compiled or tested +# build instructions: https://invent.kde.org/graphics/kseexpr#super-impatient-cmake-building-and-installing-guide [source] git = "https://invent.kde.org/graphics/kseexpr" rev = "d834b2dc6a7f452ffca4602f90b709db86a3a630" [build] -template = "custom" +template = "cmake" dependencies = [ "qt5-base", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/libs/other/libsoundio/recipe.toml b/recipes/wip/libs/other/libsoundio/recipe.toml index 80a4e0fc..31c835d4 100644 --- a/recipes/wip/libs/other/libsoundio/recipe.toml +++ b/recipes/wip/libs/other/libsoundio/recipe.toml @@ -1,21 +1,7 @@ -#TODO probably wrong script, see https://github.com/andrewrk/libsoundio#building +#TODO not compiled or tested +# build instructions: https://github.com/andrewrk/libsoundio#building [source] git = "https://github.com/andrewrk/libsoundio" rev = "dc4f84339039ac518b6cd1c0e7683e88e25be470" [build] -template = "custom" -script = """ - COOKBOOK_CONFIGURE="cmake" - COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/other/libspdlog/recipe.toml b/recipes/wip/libs/other/libspdlog/recipe.toml index 79400034..295574a8 100644 --- a/recipes/wip/libs/other/libspdlog/recipe.toml +++ b/recipes/wip/libs/other/libspdlog/recipe.toml @@ -1,20 +1,5 @@ -#TODO maybe incomplete script +#TODO not compiled or tested [source] git = "https://github.com/gabime/spdlog" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/other/libsrt/recipe.toml b/recipes/wip/libs/other/libsrt/recipe.toml index d163fd07..cd8b2a74 100644 --- a/recipes/wip/libs/other/libsrt/recipe.toml +++ b/recipes/wip/libs/other/libsrt/recipe.toml @@ -1,4 +1,5 @@ -#TODO CMake error, see https://github.com/Haivision/srt/blob/master/docs/build/build-linux.md +#TODO CMake error +# build instructions: https://github.com/Haivision/srt/blob/master/docs/build/build-linux.md [source] git = "https://github.com/Haivision/srt" rev = "09f35c0f1743e23f514cb41444504a7faeacf89e" diff --git a/recipes/wip/libs/other/libssh/recipe.toml b/recipes/wip/libs/other/libssh/recipe.toml index b75d3a27..013570f2 100644 --- a/recipes/wip/libs/other/libssh/recipe.toml +++ b/recipes/wip/libs/other/libssh/recipe.toml @@ -1,24 +1,10 @@ -#TODO maybe incomplete script, see https://git.libssh.org/projects/libssh.git/tree/INSTALL#n36 +#TODO not compiled or tested +# build instructions: https://git.libssh.org/projects/libssh.git/tree/INSTALL#n36 [source] tar = "https://www.libssh.org/files/0.10/libssh-0.10.6.tar.xz" [build] -template = "custom" +template = "cmake" dependencies = [ "zlib", "openssl1", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/libs/other/liburiparser/recipe.toml b/recipes/wip/libs/other/liburiparser/recipe.toml index 73f68e7d..c95d227d 100644 --- a/recipes/wip/libs/other/liburiparser/recipe.toml +++ b/recipes/wip/libs/other/liburiparser/recipe.toml @@ -1,20 +1,5 @@ -#TODO compilation error +#TODO not compiled or tested [source] tar = "https://github.com/uriparser/uriparser/releases/download/uriparser-0.9.8/uriparser-0.9.8.tar.bz2" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/other/libvncserver/recipe.toml b/recipes/wip/libs/other/libvncserver/recipe.toml index b56fcdce..058ff6cb 100644 --- a/recipes/wip/libs/other/libvncserver/recipe.toml +++ b/recipes/wip/libs/other/libvncserver/recipe.toml @@ -1,28 +1,16 @@ -#TODO probably wrong script, see https://github.com/LibVNC/libvncserver#how-to-build +#TODO not compiled or tested +# build instructions: https://github.com/LibVNC/libvncserver#how-to-build [source] git = "https://github.com/LibVNC/libvncserver" rev = "10e9eb75f73e973725dc75c373de5d89807af028" [build] -template = "custom" +template = "cmake" +cmakeflags = [ + "-DWITH_OPENSSL=ON", + "-DWITH_GCRYPT=OFF", +] dependencies = [ "openssl1", "ffmpeg6", "libssh2", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On - -DWITH_OPENSSL=ON - -DWITH_GCRYPT=OFF -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/libs/other/libvulkan/recipe.toml b/recipes/wip/libs/other/libvulkan/recipe.toml index 23a72a2d..b7630f7d 100644 --- a/recipes/wip/libs/other/libvulkan/recipe.toml +++ b/recipes/wip/libs/other/libvulkan/recipe.toml @@ -1,25 +1,10 @@ -#TODO probably wrong script, see https://github.com/KhronosGroup/Vulkan-Loader/blob/main/BUILD.md -#TODO port to orbital +#TODO not compiled or tested +# build instructions: https://github.com/KhronosGroup/Vulkan-Loader/blob/main/BUILD.md [source] git = "https://github.com/KhronosGroup/Vulkan-Loader" rev = "cf1a1eff115465b2425d287bef1e94ca62b0de1b" [build] -template = "custom" +template = "cmake" dependencies = [ "libxkbcommon", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/libs/other/libwebsockets/recipe.toml b/recipes/wip/libs/other/libwebsockets/recipe.toml index a878f665..c99518a2 100644 --- a/recipes/wip/libs/other/libwebsockets/recipe.toml +++ b/recipes/wip/libs/other/libwebsockets/recipe.toml @@ -1,24 +1,9 @@ -#TODO maybe wrong script +#TODO not compiled or tested [source] git = "https://github.com/warmcat/libwebsockets" rev = "4415e84c095857629863804e941b9e1c2e9347ef" [build] -template = "custom" +template = "cmake" dependencies = [ "openssl1", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/libs/other/libxsimd/recipe.toml b/recipes/wip/libs/other/libxsimd/recipe.toml index eb269b44..c2f013ce 100644 --- a/recipes/wip/libs/other/libxsimd/recipe.toml +++ b/recipes/wip/libs/other/libxsimd/recipe.toml @@ -1,21 +1,7 @@ -#TODO maybe incomplete script, see https://github.com/xtensor-stack/xsimd#install-from-sources +#TODO not compiled or tested +# build instructions: https://github.com/xtensor-stack/xsimd#install-from-sources [source] git = "https://github.com/xtensor-stack/xsimd" rev = "c1247bffa8fc36de7380a5cd42673a3b32f74c97" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" From b2f14333200973c6bcba38f3a957daea2fd9c1c7 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 12 Oct 2025 18:37:40 -0300 Subject: [PATCH 2921/3180] Try to fix more CMake-based recipes --- recipes/wip/libs/other/libxtl/recipe.toml | 20 +++---------------- recipes/wip/libs/other/libzug/recipe.toml | 20 +++---------------- recipes/wip/libs/other/mimalloc/recipe.toml | 20 +++---------------- recipes/wip/libs/other/mlt/recipe.toml | 20 +++---------------- recipes/wip/libs/other/oidn/recipe.toml | 20 +++---------------- recipes/wip/libs/other/onednn/recipe.toml | 20 +++---------------- recipes/wip/libs/other/onetbb/recipe.toml | 20 +++---------------- .../wip/libs/other/opencolorio/recipe.toml | 20 +++---------------- recipes/wip/libs/other/opencv4/recipe.toml | 20 +++---------------- recipes/wip/libs/other/openexr/recipe.toml | 20 +++---------------- recipes/wip/libs/other/openjpeg/recipe.toml | 20 +++---------------- 11 files changed, 33 insertions(+), 187 deletions(-) diff --git a/recipes/wip/libs/other/libxtl/recipe.toml b/recipes/wip/libs/other/libxtl/recipe.toml index 4f93588d..3c1a8298 100644 --- a/recipes/wip/libs/other/libxtl/recipe.toml +++ b/recipes/wip/libs/other/libxtl/recipe.toml @@ -1,21 +1,7 @@ -#TODO maybe incomplete script, see https://github.com/xtensor-stack/xtl#install-from-sources +#TODO not compiled or tested +# build instructions: https://github.com/xtensor-stack/xtl#install-from-sources [source] git = "https://github.com/xtensor-stack/xtl" rev = "c95f6c8b13ffb7f74f16d3fd6882668b79bd8412" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/other/libzug/recipe.toml b/recipes/wip/libs/other/libzug/recipe.toml index cc550078..378ad6a5 100644 --- a/recipes/wip/libs/other/libzug/recipe.toml +++ b/recipes/wip/libs/other/libzug/recipe.toml @@ -1,23 +1,9 @@ -#TODO maybe incomplete script, see https://github.com/arximboldi/zug#usage +#TODO not compiled or tested +# build instructions: https://github.com/arximboldi/zug#usage [source] git = "https://github.com/arximboldi/zug" [build] -template = "custom" +template = "cmake" dependencies = [ "boost", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/libs/other/mimalloc/recipe.toml b/recipes/wip/libs/other/mimalloc/recipe.toml index 960c6168..a2d0b0bf 100644 --- a/recipes/wip/libs/other/mimalloc/recipe.toml +++ b/recipes/wip/libs/other/mimalloc/recipe.toml @@ -1,21 +1,7 @@ -#TODO probably wrong script, see https://github.com/microsoft/mimalloc#macos-linux-bsd-etc +#TODO not compiled or tested +# build instructions: https://github.com/microsoft/mimalloc#macos-linux-bsd-etc [source] git = "https://github.com/microsoft/mimalloc" rev = "43ce4bd7fd34bcc730c1c7471c99995597415488" [build] -template = "custom" -script = """ - COOKBOOK_CONFIGURE="cmake" - COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/other/mlt/recipe.toml b/recipes/wip/libs/other/mlt/recipe.toml index 5fdc9d00..ca082266 100644 --- a/recipes/wip/libs/other/mlt/recipe.toml +++ b/recipes/wip/libs/other/mlt/recipe.toml @@ -1,20 +1,6 @@ -#TODO maybe incomplete script, see https://github.com/mltframework/mlt#readme +#TODO not compiled or tested +# build instructions: https://github.com/mltframework/mlt#readme [source] tar = "https://github.com/mltframework/mlt/releases/download/v7.22.0/mlt-7.22.0.tar.gz" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/other/oidn/recipe.toml b/recipes/wip/libs/other/oidn/recipe.toml index d3bb3241..798cff29 100644 --- a/recipes/wip/libs/other/oidn/recipe.toml +++ b/recipes/wip/libs/other/oidn/recipe.toml @@ -1,24 +1,10 @@ -#TODO maybe incomplete script, see https://github.com/OpenImageDenoise/oidn#compiling-on-linuxmacos +#TODO not compiled or tested +# build instructions: https://github.com/OpenImageDenoise/oidn#compiling-on-linuxmacos [source] git = "https://github.com/OpenImageDenoise/oidn" [build] -template = "custom" +template = "cmake" dependencies = [ "ispc", "onetbb", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/libs/other/onednn/recipe.toml b/recipes/wip/libs/other/onednn/recipe.toml index e9bb9fca..5ea55187 100644 --- a/recipes/wip/libs/other/onednn/recipe.toml +++ b/recipes/wip/libs/other/onednn/recipe.toml @@ -1,24 +1,10 @@ -#TODO maybe incomplete script, see https://oneapi-src.github.io/oneDNN/dev_guide_build.html#linux-macos +#TODO not compiled or tested +# build instructions: https://oneapi-src.github.io/oneDNN/dev_guide_build.html#linux-macos [source] git = "https://github.com/oneapi-src/oneDNN" rev = "16720eaaab9557158ff77ebf3bc610e9682928d6" [build] -template = "custom" +template = "cmake" dependencies = [ "onetbb", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/libs/other/onetbb/recipe.toml b/recipes/wip/libs/other/onetbb/recipe.toml index 7fa5af42..223a1d9e 100644 --- a/recipes/wip/libs/other/onetbb/recipe.toml +++ b/recipes/wip/libs/other/onetbb/recipe.toml @@ -1,21 +1,7 @@ -#TODO maybe incomplete script, see https://github.com/oneapi-src/oneTBB/blob/master/INSTALL.md +#TODO not compiled or tested +# build instructions: https://github.com/oneapi-src/oneTBB/blob/master/INSTALL.md [source] git = "https://github.com/oneapi-src/oneTBB" rev = "8b829acc65569019edb896c5150d427f288e8aba" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/other/opencolorio/recipe.toml b/recipes/wip/libs/other/opencolorio/recipe.toml index c4b7bb00..270ca315 100644 --- a/recipes/wip/libs/other/opencolorio/recipe.toml +++ b/recipes/wip/libs/other/opencolorio/recipe.toml @@ -1,27 +1,13 @@ +#TODO not compiled or tested +# build instructions: https://opencolorio.readthedocs.io/en/latest/quick_start/installation.html #TODO missing dependencies, see https://opencolorio.readthedocs.io/en/latest/quick_start/installation.html#dependencies -#TODO maybe incomplete script, see https://opencolorio.readthedocs.io/en/latest/quick_start/installation.html [source] git = "https://github.com/AcademySoftwareFoundation/OpenColorIO" rev = "92db29b9e7e298c4c2cc67c8a74944c2e7e716e5" [build] -template = "custom" +template = "cmake" dependencies = [ "expat", "imath", "zlib", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/libs/other/opencv4/recipe.toml b/recipes/wip/libs/other/opencv4/recipe.toml index 8340c64e..c2c16eac 100644 --- a/recipes/wip/libs/other/opencv4/recipe.toml +++ b/recipes/wip/libs/other/opencv4/recipe.toml @@ -1,22 +1,8 @@ -#TODO probably wrong script, lacking build instructions +#TODO not compiled or tested +# lacking build instructions [source] git = "https://github.com/opencv/opencv" rev = "49486f61fb25722cbcf586b7f4320921d46fb38e" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/other/openexr/recipe.toml b/recipes/wip/libs/other/openexr/recipe.toml index 0c8bceb6..f4e0aaaa 100644 --- a/recipes/wip/libs/other/openexr/recipe.toml +++ b/recipes/wip/libs/other/openexr/recipe.toml @@ -1,25 +1,11 @@ -#TODO maybe incomplete script, see https://openexr.com/en/latest/install.html#linux-macos +#TODO not compiled or tested +# build instructions: https://openexr.com/en/latest/install.html#linux-macos [source] git = "https://github.com/AcademySoftwareFoundation/openexr" rev = "737b2707a001e67f3812d86a639c3d037efe2ea8" [build] -template = "custom" +template = "cmake" dependencies = [ "libdeflate", "libimath" ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/libs/other/openjpeg/recipe.toml b/recipes/wip/libs/other/openjpeg/recipe.toml index a1f37332..0a3fe869 100644 --- a/recipes/wip/libs/other/openjpeg/recipe.toml +++ b/recipes/wip/libs/other/openjpeg/recipe.toml @@ -1,21 +1,7 @@ -#TODO maybe incomplete script, see https://github.com/uclouvain/openjpeg/blob/master/INSTALL.md +#TODO not compiled or tested +# build instructions: https://github.com/uclouvain/openjpeg/blob/master/INSTALL.md [source] git = "https://github.com/uclouvain/openjpeg" rev = "a5891555eb49ed7cc26b2901ea680acda136d811" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" From ac6ad70ca53e88b2f60127495c66b7bd9181df82 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 12 Oct 2025 19:05:23 -0300 Subject: [PATCH 2922/3180] Try to fix more CMake-based recipes --- recipes/wip/libs/other/openvkl/recipe.toml | 20 +--- recipes/wip/libs/other/popt/recipe.toml | 20 +--- recipes/wip/libs/other/projectm/recipe.toml | 20 +--- recipes/wip/libs/other/pystring/recipe.toml | 20 +--- recipes/wip/libs/other/raylib/recipe.toml | 21 +--- recipes/wip/libs/other/scotch/recipe.toml | 20 +--- recipes/wip/libs/other/sdl2-net/recipe.toml | 20 +--- recipes/wip/libs/other/snappy/recipe.toml | 20 +--- recipes/wip/libs/other/taglib/recipe.toml | 20 +--- recipes/wip/libs/other/volk/recipe.toml | 20 +--- recipes/wip/libs/other/webkitgtk4/recipe.toml | 102 ++++++++++++++---- 11 files changed, 111 insertions(+), 192 deletions(-) diff --git a/recipes/wip/libs/other/openvkl/recipe.toml b/recipes/wip/libs/other/openvkl/recipe.toml index c4d82da5..c027c369 100644 --- a/recipes/wip/libs/other/openvkl/recipe.toml +++ b/recipes/wip/libs/other/openvkl/recipe.toml @@ -1,27 +1,13 @@ -#TODO maybe incomplete script, see https://github.com/openvkl/openvkl#building-open-vkl-from-source +#TODO not compiled or tested +# build instructions: https://github.com/openvkl/openvkl#building-open-vkl-from-source [source] git = "https://github.com/openvkl/openvkl" rev = "712bdb8035487606096d7af90a4c9bde5503515d" [build] -template = "custom" +template = "cmake" dependencies = [ "ispc", "librkcommon", "embree", "level-zero", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/libs/other/popt/recipe.toml b/recipes/wip/libs/other/popt/recipe.toml index ccffe913..98a18569 100644 --- a/recipes/wip/libs/other/popt/recipe.toml +++ b/recipes/wip/libs/other/popt/recipe.toml @@ -1,20 +1,6 @@ -#TODO probably wrong script, lacking build instructions +#TODO not compiled or tested +# lacking build instructions [source] tar = "https://ftp.osuosl.org/pub/rpm/popt/releases/popt-1.x/popt-1.19.tar.gz" [build] -template = "custom" -script = """ - COOKBOOK_CONFIGURE="cmake" - COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" \ No newline at end of file +template = "cmake" diff --git a/recipes/wip/libs/other/projectm/recipe.toml b/recipes/wip/libs/other/projectm/recipe.toml index 1240f177..600f3760 100644 --- a/recipes/wip/libs/other/projectm/recipe.toml +++ b/recipes/wip/libs/other/projectm/recipe.toml @@ -1,25 +1,11 @@ -#TODO Probably wrong script, see https://github.com/projectM-visualizer/projectm/wiki/Building-libprojectM#build-and-install-projectm +#TODO not compiled or tested +# build instructions: https://github.com/projectM-visualizer/projectm/wiki/Building-libprojectM#build-and-install-projectm [source] git = "https://github.com/projectM-visualizer/projectm" rev = "422af469731559c32c93e9513cebf2fe6c2fec78" [build] -template = "custom" +template = "cmake" dependencies = [ "mesa", "qt5-base", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/libs/other/pystring/recipe.toml b/recipes/wip/libs/other/pystring/recipe.toml index 3d66d82a..8b003846 100644 --- a/recipes/wip/libs/other/pystring/recipe.toml +++ b/recipes/wip/libs/other/pystring/recipe.toml @@ -1,21 +1,7 @@ -#TODO maybe incomplete script, lacking build instructions +#TODO not compiled or tested +# lacking build instructions [source] git = "https://github.com/imageworks/pystring" rev = "7d16bc814ccb4cad03c300dcb77440034caa84f7" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/other/raylib/recipe.toml b/recipes/wip/libs/other/raylib/recipe.toml index cdd626f5..01134298 100644 --- a/recipes/wip/libs/other/raylib/recipe.toml +++ b/recipes/wip/libs/other/raylib/recipe.toml @@ -1,26 +1,11 @@ -#TODO port to Orbital -#TODO probably wrong script, see https://github.com/raysan5/raylib/wiki/Working-on-GNU-Linux +#TODO not compiled or tested +# build instructions: https://github.com/raysan5/raylib/wiki/Working-on-GNU-Linux [source] git = "https://github.com/raysan5/raylib" rev = "ae50bfa2cc569c0f8d5bc4315d39db64005b1b08" [build] -template = "custom" +template = "cmake" dependencies = [ "mesa", "libxkbcommon", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/libs/other/scotch/recipe.toml b/recipes/wip/libs/other/scotch/recipe.toml index 2b28b489..3cb29ed1 100644 --- a/recipes/wip/libs/other/scotch/recipe.toml +++ b/recipes/wip/libs/other/scotch/recipe.toml @@ -1,22 +1,8 @@ -#TODO maybe incomplete script, see https://gitlab.inria.fr/scotch/scotch#installation +#TODO not compiled or tested +# build instructions: https://gitlab.inria.fr/scotch/scotch#installation #TODO probably missing dependencies [source] git = "https://gitlab.inria.fr/scotch/scotch" rev = "82ec87f558f4acb7ccb69a079f531be380504c92" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/other/sdl2-net/recipe.toml b/recipes/wip/libs/other/sdl2-net/recipe.toml index f1523352..f4f33541 100644 --- a/recipes/wip/libs/other/sdl2-net/recipe.toml +++ b/recipes/wip/libs/other/sdl2-net/recipe.toml @@ -1,23 +1,9 @@ -#TODO probably wrong script, lacking build instructions +#TODO not compiled or tested +# lacking build instructions [source] tar = "https://github.com/libsdl-org/SDL_net/releases/download/release-2.2.0/SDL2_net-2.2.0.tar.gz" [build] -template = "custom" +template = "cmake" dependencies = [ "sdl2", ] -script = """ - COOKBOOK_CONFIGURE="cmake" - COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/libs/other/snappy/recipe.toml b/recipes/wip/libs/other/snappy/recipe.toml index ba362312..6dd1ed2b 100644 --- a/recipes/wip/libs/other/snappy/recipe.toml +++ b/recipes/wip/libs/other/snappy/recipe.toml @@ -1,21 +1,7 @@ -#TODO maybe incomplete script, see https://github.com/google/snappy#building +#TODO not compiled or tested +# build instructions: https://github.com/google/snappy#building [source] git = "https://github.com/google/snappy" rev = "dc05e026488865bc69313a68bcc03ef2e4ea8e83" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/other/taglib/recipe.toml b/recipes/wip/libs/other/taglib/recipe.toml index 506164f0..d75e92c6 100644 --- a/recipes/wip/libs/other/taglib/recipe.toml +++ b/recipes/wip/libs/other/taglib/recipe.toml @@ -1,20 +1,6 @@ -#TODO probably wrong script, see https://github.com/taglib/taglib/blob/master/INSTALL.md +#TODO not compiled or tested +# build instructions: https://github.com/taglib/taglib/blob/master/INSTALL.md [source] tar = "https://taglib.org/releases/taglib-1.13.tar.gz" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/other/volk/recipe.toml b/recipes/wip/libs/other/volk/recipe.toml index 656e4f7e..4752dcae 100644 --- a/recipes/wip/libs/other/volk/recipe.toml +++ b/recipes/wip/libs/other/volk/recipe.toml @@ -1,20 +1,6 @@ -#TODO maybe incomplete script, see https://github.com/gnuradio/volk#building-on-most-x86-32-bit-and-64-bit-platforms +#TODO not compiled or tested +# build instructions: https://github.com/gnuradio/volk#building-on-most-x86-32-bit-and-64-bit-platforms [source] tar = "https://www.libvolk.org/releases/volk-3.0.0.tar.gz" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/other/webkitgtk4/recipe.toml b/recipes/wip/libs/other/webkitgtk4/recipe.toml index 442fe96a..d4619627 100644 --- a/recipes/wip/libs/other/webkitgtk4/recipe.toml +++ b/recipes/wip/libs/other/webkitgtk4/recipe.toml @@ -1,40 +1,100 @@ -#TODO missing script for Ninja, see https://trac.webkit.org/wiki/BuildingGtk#BuildingWebKitGTKfromareleasetarball -#TODO port to orbital -#TODO missing dependencies, see https://archlinux.org/packages/extra/x86_64/webkitgtk-6.0/ +#TODO not compiled or tested [source] -tar = "https://webkitgtk.org/releases/webkitgtk-2.42.2.tar.xz" +tar = "https://webkitgtk.org/releases/webkitgtk-2.49.1.tar.xz" +blake3 = "7f04acb2f909ad334fc623afb297ebca1d5a5005bda1682946fb37e044e45ecb" +#patches = ["redox.patch"] + [build] template = "custom" dependencies = [ - "gtk4", + "atk", "cairo", + "expat", "fontconfig", "freetype2", + "fribidi", + "gdk-pixbuf", + "gettext", "glib", - "gstreamer", + #TODO "gstreamer", + "gtk4", "harfbuzz", - "libavif", - "mesa", "libepoxy", + "libatomic", + "libffi", "libgcrypt", + "libgpg-error", + "libiconv", + "libicu", + "libjpeg", "libpng", + "libpsl", + "libpthread-stubs", + "libsoup", + "libtasn1", "libwebp", + "libx11", + "libxau", + "libxcb", + "libxext", + "libxfixes", + "libxi", "libxml2", - "zlib", + "libxrandr", + "libxrender", + "libxslt", + "libxxf86vm", + "mesa-x11", + "nghttp2", + "pango", + "pcre2", + "pixman", + "shared-mime-info", "sqlite3", + "x11proto", + "xextproto", + "xz", + "zlib", ] script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" +DYNAMIC_INIT +export WEBKIT_USE_SCCACHE=1 +export PYTHONDONTWRITEBYTECODE=1 +#TODO: enable more features +COOKBOOK_CMAKE_FLAGS+=( + -DENABLE_ASSERTS=ON + -DENABLE_GAMEPAD=OFF + -DENABLE_INTROSPECTION=OFF + -DENABLE_MEDIA_STREAM=OFF + -DENABLE_JOURNALD_LOG=OFF + -DENABLE_RELEASE_LOG=ON + -DENABLE_SPEECH_SYNTHESIS=OFF + -DENABLE_SPELLCHECK=OFF + -DENABLE_WEB_AUDIO=OFF + -DENABLE_WEB_CODECS=OFF + -DENABLE_VIDEO=OFF + -DPORT=GTK + -DUNIX=1 + -DUSE_AVIF=OFF + -DUSE_GSTREAMER_GL=OFF + -DUSE_GTK4=ON + -DUSE_JPEGXL=OFF + -DUSE_LCMS=OFF + -DUSE_LIBBACKTRACE=OFF + -DUSE_LIBDRM=OFF + -DUSE_LIBHYPHEN=OFF + -DUSE_LIBSECRET=OFF + -DUSE_SKIA=OFF + -DUSE_SYSPROF_CAPTURE=OFF + -DUSE_SYSTEM_MALLOC=OFF + -DUSE_SYSTEM_SYSPROF_CAPTURE=OFF + -DUSE_WOFF2=OFF ) -cookbook_configure + +cookbook_cmake + +patchelf --replace-needed "${COOKBOOK_SYSROOT}/usr/lib/libsqlite3.so" "libsqlite3.so" "${COOKBOOK_STAGE}/usr/lib/libwebkit2gtk-4.1.so" +patchelf --replace-needed "${COOKBOOK_SYSROOT}/usr/lib/libsqlite3.so" "libsqlite3.so" "${COOKBOOK_STAGE}/usr/libexec/webkit2gtk-4.1/MiniBrowser" +mkdir -p "${COOKBOOK_STAGE}/usr/bin" +ln -sr "${COOKBOOK_STAGE}/usr/libexec/webkit2gtk-4.1/MiniBrowser" "${COOKBOOK_STAGE}/usr/bin/MiniBrowser" """ From 4571365bcc91dfb1163b1715557fc1b3b6d441ef Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 12 Oct 2025 19:34:06 -0300 Subject: [PATCH 2923/3180] Try to fix more CMake-based recipes --- recipes/wip/libs/qt5/qt5-webkit/recipe.toml | 22 +++------------ recipes/wip/libs/qt6/qt6-full/recipe.toml | 6 ++--- recipes/wip/libs/tls/mbedtls/recipe.toml | 21 +++------------ .../wip/libs/video/libmatroska/recipe.toml | 20 +++----------- .../libs/video/libopenshot-video/recipe.toml | 21 +++------------ recipes/wip/math/primesieve/recipe.toml | 20 +++----------- recipes/wip/monitors/conky/recipe.toml | 17 +++--------- .../transmission-daemon/recipe.toml | 20 +++----------- .../bittorrent/transmission-gtk/recipe.toml | 20 +++----------- .../wip/net/chat/telegram-desktop/recipe.toml | 23 +++------------- .../wip/net/download/parabolic/recipe.toml | 20 +++----------- recipes/wip/net/gemini/lagrange/recipe.toml | 27 ++++++------------- 12 files changed, 43 insertions(+), 194 deletions(-) diff --git a/recipes/wip/libs/qt5/qt5-webkit/recipe.toml b/recipes/wip/libs/qt5/qt5-webkit/recipe.toml index cf71dd2e..d36dd52b 100644 --- a/recipes/wip/libs/qt5/qt5-webkit/recipe.toml +++ b/recipes/wip/libs/qt5/qt5-webkit/recipe.toml @@ -1,10 +1,11 @@ -#TODO probably wrong branch -#TODO maybe incomplete script, see https://github.com/qtwebkit/qtwebkit/wiki/Building-QtWebKit-on-Linux +#TODO not compiled or tested +# build instructions: https://github.com/qtwebkit/qtwebkit/wiki/Building-QtWebKit-on-Linux #TODO determine dependencies +# probably wrong branch [source] git = "https://github.com/movableink/webkit" [build] -template = "custom" +template = "cmake" dependencies = [ "qt5-base", "qt5-guiaddons", @@ -25,18 +26,3 @@ dependencies = [ "glib", "gstreamer", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/libs/qt6/qt6-full/recipe.toml b/recipes/wip/libs/qt6/qt6-full/recipe.toml index 8dd76934..feecc13a 100644 --- a/recipes/wip/libs/qt6/qt6-full/recipe.toml +++ b/recipes/wip/libs/qt6/qt6-full/recipe.toml @@ -1,9 +1,9 @@ -#TODO port to Orbital -#TODO Missing script for GNU Autotools and CMake +#TODO not compiled or tested +# probably wrong template [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/single/qt-everywhere-src-6.6.1.tar.xz" [build] -template = "custom" +template = "cmake" dependencies = [ "fontconfig", "freetype2", diff --git a/recipes/wip/libs/tls/mbedtls/recipe.toml b/recipes/wip/libs/tls/mbedtls/recipe.toml index efb6a3f5..42d21aac 100644 --- a/recipes/wip/libs/tls/mbedtls/recipe.toml +++ b/recipes/wip/libs/tls/mbedtls/recipe.toml @@ -1,22 +1,7 @@ -#TODO probaly wrong script, see https://mbed-tls.readthedocs.io/en/latest/getting_started/building/#building-with-cmake -# They say that the CMake method is better than GNU make +#TODO not compiled or tested +# build instructions: https://mbed-tls.readthedocs.io/en/latest/getting_started/building/#building-with-cmake [source] git = "https://github.com/Mbed-TLS/mbedtls" rev = "edb8fec9882084344a314368ac7fd957a187519c" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/video/libmatroska/recipe.toml b/recipes/wip/libs/video/libmatroska/recipe.toml index a5b2b0ba..4dc09164 100644 --- a/recipes/wip/libs/video/libmatroska/recipe.toml +++ b/recipes/wip/libs/video/libmatroska/recipe.toml @@ -1,20 +1,6 @@ -#TODO probably wrong script, see https://github.com/Matroska-Org/libmatroska#building-and-installing +#TODO not compiled or tested +# build instructions: https://github.com/Matroska-Org/libmatroska#building-and-installing [source] tar = "https://dl.matroska.org/downloads/libmatroska/libmatroska-1.7.1.tar.xz" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/libs/video/libopenshot-video/recipe.toml b/recipes/wip/libs/video/libopenshot-video/recipe.toml index 0b861b24..a203ccff 100644 --- a/recipes/wip/libs/video/libopenshot-video/recipe.toml +++ b/recipes/wip/libs/video/libopenshot-video/recipe.toml @@ -1,10 +1,10 @@ -#TODO maybe incomplete script -#TODO determine dependencies - https://github.com/OpenShot/libopenshot/wiki/Linux-Build-Instructions +#TODO not compiled or tested +#TODO determine dependencies: https://github.com/OpenShot/libopenshot/wiki/Linux-Build-Instructions [source] git = "https://github.com/OpenShot/libopenshot" rev = "3170768e0ccbaad5b2a4696e84dd649738ec1a1b" [build] -template = "custom" +template = "cmake" dependencies = [ "libopenshot-audio", "ffmpeg6", @@ -17,18 +17,3 @@ dependencies = [ "babl", "imagemagick", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/math/primesieve/recipe.toml b/recipes/wip/math/primesieve/recipe.toml index b94f4301..75b9866d 100644 --- a/recipes/wip/math/primesieve/recipe.toml +++ b/recipes/wip/math/primesieve/recipe.toml @@ -1,21 +1,7 @@ -#TODO maybe incomplete script, see https://github.com/kimwalisch/primesieve/blob/master/doc/BUILD.md +#TODO not compiled or tested +# build instructions: https://github.com/kimwalisch/primesieve/blob/master/doc/BUILD.md [source] git = "https://github.com/kimwalisch/primesieve" rev = "f3114488ddded8edf2c201e31ad308ed9e6a9f78" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/monitors/conky/recipe.toml b/recipes/wip/monitors/conky/recipe.toml index ca3945b3..3f0a2d44 100644 --- a/recipes/wip/monitors/conky/recipe.toml +++ b/recipes/wip/monitors/conky/recipe.toml @@ -1,4 +1,5 @@ -#TODO probably wrong script, see https://conky.cc/documents/compiling +#TODO not compiled or tested +# build instructions: https://conky.cc/documents/compiling [source] git = "https://github.com/brndnmtthws/conky" rev = "bbdc7081aec27daafca07fc40523335a2ea0a992" @@ -12,17 +13,5 @@ dependencies = [ ] script = """ export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" - COOKBOOK_CONFIGURE="cmake" - COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure +cookbook_cmake """ diff --git a/recipes/wip/net/bittorrent/transmission-daemon/recipe.toml b/recipes/wip/net/bittorrent/transmission-daemon/recipe.toml index 4e12ca4b..867a34f8 100644 --- a/recipes/wip/net/bittorrent/transmission-daemon/recipe.toml +++ b/recipes/wip/net/bittorrent/transmission-daemon/recipe.toml @@ -1,24 +1,10 @@ -#TODO probably wrong script, see https://github.com/transmission/transmission/blob/main/docs/Building-Transmission.md#on-unix +#TODO not compiled or tested +# build instructions: https://github.com/transmission/transmission/blob/main/docs/Building-Transmission.md#on-unix [source] tar = "https://github.com/transmission/transmission/releases/download/4.0.6/transmission-4.0.6.tar.xz" [build] -template = "custom" +template = "cmake" dependencies = [ "openssl1", "curl", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/net/bittorrent/transmission-gtk/recipe.toml b/recipes/wip/net/bittorrent/transmission-gtk/recipe.toml index f365f3ce..d4646b4e 100644 --- a/recipes/wip/net/bittorrent/transmission-gtk/recipe.toml +++ b/recipes/wip/net/bittorrent/transmission-gtk/recipe.toml @@ -1,25 +1,11 @@ -#TODO probably wrong script, see https://github.com/transmission/transmission/blob/main/docs/Building-Transmission.md#on-unix +#TODO not compiled or tested +# build instructions: https://github.com/transmission/transmission/blob/main/docs/Building-Transmission.md#on-unix [source] tar = "https://github.com/transmission/transmission/releases/download/4.0.6/transmission-4.0.6.tar.xz" [build] -template = "custom" +template = "cmake" dependencies = [ "openssl1", "curl", "gtk3mm", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/net/chat/telegram-desktop/recipe.toml b/recipes/wip/net/chat/telegram-desktop/recipe.toml index 4774399b..e8da7122 100644 --- a/recipes/wip/net/chat/telegram-desktop/recipe.toml +++ b/recipes/wip/net/chat/telegram-desktop/recipe.toml @@ -1,9 +1,9 @@ -#TODO probably wrong script, lacking build instructions -#TODO port to orbital +#TODO not compiled or tested +# lacking build instructions [source] -tar = "https://github.com/telegramdesktop/tdesktop/releases/download/v4.11.6/tdesktop-4.11.6-full.tar.gz" +tar = "https://github.com/telegramdesktop/tdesktop/releases/download/v6.2.3/tdesktop-6.2.3-full.tar.gz" [build] -template = "custom" +template = "cmake" dependencies = [ "qt6-svg", "qt6-imageformats", @@ -21,18 +21,3 @@ dependencies = [ "libmd", "libbrotli", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/net/download/parabolic/recipe.toml b/recipes/wip/net/download/parabolic/recipe.toml index ba84290f..4c3104fa 100644 --- a/recipes/wip/net/download/parabolic/recipe.toml +++ b/recipes/wip/net/download/parabolic/recipe.toml @@ -1,21 +1,7 @@ +#TODO not compiled or tested #TODO it uses vcpkg for dependency management, see: https://github.com/NickvisionApps/parabolic#building-manually [source] git = "https://github.com/NickvisionApps/Parabolic" -rev = "b2188390ce14b83c41c68eef87e833d6fd8b7d2f" +rev = "7309661a25948c56f25383c464a1b284bdeb00e7" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/net/gemini/lagrange/recipe.toml b/recipes/wip/net/gemini/lagrange/recipe.toml index d67691d0..db5f9d19 100644 --- a/recipes/wip/net/gemini/lagrange/recipe.toml +++ b/recipes/wip/net/gemini/lagrange/recipe.toml @@ -1,9 +1,13 @@ -#TODO probably wrong script, see https://github.com/skyjake/lagrange#how-to-compile +#TODO not compiled or tested +# build instructions: https://github.com/skyjake/lagrange#how-to-compile #TODO mpg123 dependency broken [source] -tar = "https://git.skyjake.fi/gemini/lagrange/releases/download/v1.17.4/lagrange-1.17.4.tar.gz" +tar = "https://git.skyjake.fi/gemini/lagrange/releases/download/v1.19.3/lagrange-1.19.3.tar.gz" [build] -template = "custom" +template = "cmake" +cmakeflags = [ + "-DENABLE_MPG123=OFF" +] dependencies = [ "sdl2", "openssl1", @@ -12,20 +16,5 @@ dependencies = [ "pcre", "fribidi", "libunistring", + #"mpg123", ] -script = """ - COOKBOOK_CONFIGURE="cmake" - COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On - -DENABLE_MPG123=OFF -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" From dbed3b4f1eda6c26388b6b07c517f5c9325f5aa1 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 12 Oct 2025 19:54:54 -0300 Subject: [PATCH 2924/3180] Try to fix more CMake-based recipes --- .../wip/net/onion-routing/i2pd/recipe.toml | 20 ++----------- .../wip/net/onion-routing/lokinet/recipe.toml | 21 ++----------- recipes/wip/net/other/nss-pem/recipe.toml | 20 ++----------- recipes/wip/net/other/srsran-4g/recipe.toml | 20 ++----------- .../wip/net/other/srsran-project/recipe.toml | 20 ++----------- recipes/wip/net/remote/jupii/recipe.toml | 25 ++++------------ recipes/wip/net/remote/remmina/recipe.toml | 20 ++----------- recipes/wip/net/server/spadesx/recipe.toml | 20 ++----------- .../wip/nonfree/games/openspades/recipe.toml | 21 ++----------- .../wip/nonfree/games/zerospades/recipe.toml | 21 ++----------- recipes/wip/recorders/obs-studio/recipe.toml | 23 +++----------- recipes/wip/science/celestia/recipe.toml | 30 ++++++------------- 12 files changed, 46 insertions(+), 215 deletions(-) diff --git a/recipes/wip/net/onion-routing/i2pd/recipe.toml b/recipes/wip/net/onion-routing/i2pd/recipe.toml index ab531aea..6056125c 100644 --- a/recipes/wip/net/onion-routing/i2pd/recipe.toml +++ b/recipes/wip/net/onion-routing/i2pd/recipe.toml @@ -1,26 +1,12 @@ -#TODO probably wrong script, see https://i2pd.readthedocs.io/en/latest/devs/building/unix/ +#TODO not compiled or tested +# build instructions: https://i2pd.readthedocs.io/en/latest/devs/building/unix/ [source] git = "https://github.com/PurpleI2P/i2pd" rev = "beffdb9fe175a93164bd88ee0fafe1a22595ed15" [build] -template = "custom" +template = "cmake" dependencies = [ "boost", "openssl1", "zlib", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/net/onion-routing/lokinet/recipe.toml b/recipes/wip/net/onion-routing/lokinet/recipe.toml index 1eda4cdb..0061eb0b 100644 --- a/recipes/wip/net/onion-routing/lokinet/recipe.toml +++ b/recipes/wip/net/onion-routing/lokinet/recipe.toml @@ -1,8 +1,9 @@ -#TODO probably wrong script, see https://github.com/oxen-io/lokinet/blob/dev/docs/install.md#building +#TODO not compiled or tested +# build instructions: https://github.com/oxen-io/lokinet/blob/dev/docs/install.md#building [source] tar = "https://github.com/oxen-io/lokinet/releases/download/v0.9.11/lokinet-v0.9.11.tar.xz" [build] -template = "custom" +template = "cmake" dependencies = [ "libcap", "libuv", @@ -14,19 +15,3 @@ dependencies = [ "unbound", "nlohmann-json", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On - -DBUILD_SHARED_LIBS=OFF -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/net/other/nss-pem/recipe.toml b/recipes/wip/net/other/nss-pem/recipe.toml index 3124794e..15b7a66f 100644 --- a/recipes/wip/net/other/nss-pem/recipe.toml +++ b/recipes/wip/net/other/nss-pem/recipe.toml @@ -1,20 +1,6 @@ -#TODO probably wrong script, see https://github.com/kdudka/nss-pem/blob/master/README +#TODO not compiled or tested +# build instructions: https://github.com/kdudka/nss-pem/blob/master/README [source] tar = "https://github.com/kdudka/nss-pem/releases/download/nss-pem-1.1.0/nss-pem-1.1.0.tar.xz" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/net/other/srsran-4g/recipe.toml b/recipes/wip/net/other/srsran-4g/recipe.toml index be0d308f..7c4d1233 100644 --- a/recipes/wip/net/other/srsran-4g/recipe.toml +++ b/recipes/wip/net/other/srsran-4g/recipe.toml @@ -1,25 +1,11 @@ -#TODO maybe incomplete script, see https://docs.srsran.com/projects/4g/en/latest/general/source/1_installation.html#installation-from-source +#TODO not compiled or tested +# build instructions: https://docs.srsran.com/projects/4g/en/latest/general/source/1_installation.html#installation-from-source [source] git = "https://github.com/srsran/srsRAN_4G" rev = "eea87b1d893ae58e0b08bc381730c502024ae71f" [build] -template = "custom" +template = "cmake" dependencies = [ "fftw", "mbedtls", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/net/other/srsran-project/recipe.toml b/recipes/wip/net/other/srsran-project/recipe.toml index af76902d..4ff58768 100644 --- a/recipes/wip/net/other/srsran-project/recipe.toml +++ b/recipes/wip/net/other/srsran-project/recipe.toml @@ -1,26 +1,12 @@ -#TODO maybe incomplete script, see https://github.com/srsran/srsRAN_Project#build-instructions +#TODO not compiled or tested +# build instructions: https://github.com/srsran/srsRAN_Project#build-instructions #TODO missing dependencies [source] git = "https://github.com/srsran/srsRAN_Project" rev = "374200deefd8e1b96fab7328525fd593a808a641" [build] -template = "custom" +template = "cmake" dependencies = [ "fftw", "mbedtls", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/net/remote/jupii/recipe.toml b/recipes/wip/net/remote/jupii/recipe.toml index 9169263c..c93e3437 100644 --- a/recipes/wip/net/remote/jupii/recipe.toml +++ b/recipes/wip/net/remote/jupii/recipe.toml @@ -1,23 +1,10 @@ -#TODO maybe incomplete script -#TODO missing dependencies? - https://github.com/mkiol/Jupii#libraries +#TODO not compiled or tested +# missing dependencies? - https://github.com/mkiol/Jupii#libraries [source] git = "https://github.com/mkiol/Jupii" rev = "ed80ca0ea29081a2bff038faf4884e3acabb14b7" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On - -DWITH_DESKTOP=ON -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" +cmakeflags = [ + "-DWITH_DESKTOP=ON" +] diff --git a/recipes/wip/net/remote/remmina/recipe.toml b/recipes/wip/net/remote/remmina/recipe.toml index 9f701889..14605bd7 100644 --- a/recipes/wip/net/remote/remmina/recipe.toml +++ b/recipes/wip/net/remote/remmina/recipe.toml @@ -1,10 +1,11 @@ -#TODO maybe incomplete script, see https://gitlab.com/Remmina/Remmina/-/wikis/Compilation/Compilation-guide +#TODO not compiled or tested +# build instructions: https://gitlab.com/Remmina/Remmina/-/wikis/Compilation/Compilation-guide #TODO dependencies need a cleanup (outdated and up-to-date information is mixed in the build instructions) [source] git = "https://gitlab.com/Remmina/Remmina" rev = "2a455eadd6462457d08c2d066c5c245e0dee3bf9" [build] -template = "custom" +template = "cmake" dependencies = [ "openssl1", "libxml2", @@ -19,18 +20,3 @@ dependencies = [ "libsodium", "pcre", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/net/server/spadesx/recipe.toml b/recipes/wip/net/server/spadesx/recipe.toml index 0d47d568..79865081 100644 --- a/recipes/wip/net/server/spadesx/recipe.toml +++ b/recipes/wip/net/server/spadesx/recipe.toml @@ -1,25 +1,11 @@ -#TODO probably wrong script, see https://github.com/SpadesX/SpadesX#installation +#TODO not compiled or tested +# build instructions: https://github.com/SpadesX/SpadesX#installation [source] git = "https://github.com/SpadesX/SpadesX" [build] -template = "custom" +template = "cmake" dependencies = [ "readline", "zlib", "json-c", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/nonfree/games/openspades/recipe.toml b/recipes/wip/nonfree/games/openspades/recipe.toml index 798717fb..e7d60a0d 100644 --- a/recipes/wip/nonfree/games/openspades/recipe.toml +++ b/recipes/wip/nonfree/games/openspades/recipe.toml @@ -1,9 +1,9 @@ -#TODO probably wrong script, see https://github.com/yvt/openspades#on-unixes-from-source -#TODO port GLEW to Orbital +#TODO not compiled or tested +# build instructions: https://github.com/yvt/openspades#on-unixes-from-source [source] git = "https://github.com/yvt/openspades" [build] -template = "custom" +template = "cmake" dependencies = [ "glew", "openssl1", @@ -16,18 +16,3 @@ dependencies = [ "libjpeg", "openal", ] -script = """ - COOKBOOK_CONFIGURE="cmake" - COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/nonfree/games/zerospades/recipe.toml b/recipes/wip/nonfree/games/zerospades/recipe.toml index ba270adf..369eedf8 100644 --- a/recipes/wip/nonfree/games/zerospades/recipe.toml +++ b/recipes/wip/nonfree/games/zerospades/recipe.toml @@ -1,9 +1,9 @@ -#TODO probably wrong script, see https://github.com/yvt/openspades#on-unixes-from-source -#TODO port GLEW to Orbital +#TODO not compiled or tested +# build instructions: https://github.com/yvt/openspades#on-unixes-from-source [source] git = "https://github.com/siecvi/zerospades" [build] -template = "custom" +template = "cmake" dependencies = [ "glew", "openssl1", @@ -16,18 +16,3 @@ dependencies = [ "libjpeg", "openal", ] -script = """ - COOKBOOK_CONFIGURE="cmake" - COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/recorders/obs-studio/recipe.toml b/recipes/wip/recorders/obs-studio/recipe.toml index 04eb475d..dca4d392 100644 --- a/recipes/wip/recorders/obs-studio/recipe.toml +++ b/recipes/wip/recorders/obs-studio/recipe.toml @@ -1,11 +1,11 @@ -#TODO maybe incomplete script, see https://github.com/obsproject/obs-studio/wiki/Building-OBS-Studio -#TODO make all dependencies work -#TODO maybe missing dependencies +#TODO not compiled or tested +# build instructions: https://github.com/obsproject/obs-studio/wiki/Building-OBS-Studio +# maybe missing dependencies [source] git = "https://github.com/obsproject/obs-studio" rev = "b45a73296f4f898e2ed455023020058075c30bab" [build] -template = "custom" +template = "cmake" dependencies = [ "boost", "librsvg", @@ -30,18 +30,3 @@ dependencies = [ "libsrt", "libwebsocket++", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/science/celestia/recipe.toml b/recipes/wip/science/celestia/recipe.toml index f4793712..1dd31156 100644 --- a/recipes/wip/science/celestia/recipe.toml +++ b/recipes/wip/science/celestia/recipe.toml @@ -1,10 +1,14 @@ -#TODO probably wrong script, see https://github.com/CelestiaProject/Celestia/blob/master/INSTALL.md#celestia-install-instructions-for-unix -#TODO finish the recipes of some dependencies -#TODO the SDL2 frontend is limited, Qt6 or Qt5 is preferred +#TODO not compiled or tested +# build instructions: https://github.com/CelestiaProject/Celestia/blob/master/INSTALL.md#celestia-install-instructions-for-unix +# sdl2 frontend is limited, qt6 or qt5 is preferred [source] tar = "https://github.com/CelestiaProject/Celestia/releases/download/1.6.4/celestia-1.6.4.tar.xz" [build] -template = "custom" +template = "cmake" +cmakeflags = [ + "-DENABLE_INTERFACE=ON", + "-DENABLE_SDL=ON", +] dependencies = [ "mesa", "mesa-glu", @@ -16,21 +20,5 @@ dependencies = [ "libpng", "libjpeg", "luajit", + #"qt6-base", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On - -DENABLE_INTERFACE=ON - -DENABLE_SDL=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" From 4657b871ae101670f45d40beb96c0120d2c2d8af Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 12 Oct 2025 20:20:44 -0300 Subject: [PATCH 2925/3180] Try to fix more CMake recipes --- recipes/wip/science/celestia-data/recipe.toml | 20 ++--------- recipes/wip/science/gromacs/recipe.toml | 22 +++--------- recipes/wip/science/openspace/recipe.toml | 20 ++--------- recipes/wip/science/qmcpack/recipe.toml | 22 +++--------- recipes/wip/science/stellarium/recipe.toml | 24 +++---------- recipes/wip/security/clamav/recipe.toml | 20 +++-------- recipes/wip/security/keepassxc/recipe.toml | 35 ++++++------------- recipes/wip/security/recdec/recipe.toml | 20 ++--------- 8 files changed, 38 insertions(+), 145 deletions(-) diff --git a/recipes/wip/science/celestia-data/recipe.toml b/recipes/wip/science/celestia-data/recipe.toml index dc195256..06988fea 100644 --- a/recipes/wip/science/celestia-data/recipe.toml +++ b/recipes/wip/science/celestia-data/recipe.toml @@ -1,20 +1,6 @@ -#TODO maybe incomplete script, see https://github.com/CelestiaProject/Celestia/blob/master/INSTALL.md#installing-the-content +#TODO not compiled or tested +# build instructions: https://github.com/CelestiaProject/Celestia/blob/master/INSTALL.md#installing-the-content [source] git = "https://github.com/CelestiaProject/CelestiaContent" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/science/gromacs/recipe.toml b/recipes/wip/science/gromacs/recipe.toml index c30f71ce..4b02ebc5 100644 --- a/recipes/wip/science/gromacs/recipe.toml +++ b/recipes/wip/science/gromacs/recipe.toml @@ -1,20 +1,6 @@ -#TODO maybe incomplete script, see https://manual.gromacs.org/current/install-guide/index.html +#TODO not compiled or tested +# build instructions: https://manual.gromacs.org/current/install-guide/index.html [source] -tar = "https://ftp.gromacs.org/gromacs/gromacs-2023.3.tar.gz" +tar = "https://ftp.gromacs.org/gromacs/gromacs-2025.3.tar.gz" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/science/openspace/recipe.toml b/recipes/wip/science/openspace/recipe.toml index 22de374c..b67caa26 100644 --- a/recipes/wip/science/openspace/recipe.toml +++ b/recipes/wip/science/openspace/recipe.toml @@ -1,25 +1,11 @@ -#TODO maybe incomplete script, see https://docs.openspaceproject.com/en/latest/dev/compiling/index.html# +#TODO not compiled or tested +# build instructions: https://docs.openspaceproject.com/en/latest/dev/compiling/index.html# [source] git = "https://github.com/OpenSpace/OpenSpace" rev = "b3681167a3b95d49ac7aa7d06b07cbd88c687e9a" [build] -template = "custom" +template = "cmake" dependencies = [ "qt6-base", "libgdal", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/science/qmcpack/recipe.toml b/recipes/wip/science/qmcpack/recipe.toml index 72b4aa82..33777b79 100644 --- a/recipes/wip/science/qmcpack/recipe.toml +++ b/recipes/wip/science/qmcpack/recipe.toml @@ -1,10 +1,11 @@ -#TODO maybe incomplete script, see https://qmcpack.readthedocs.io/en/develop/installation.html#building-with-cmake -#TODO probably missing dependencies +#TODO not compiled or tested +# build instructions: https://qmcpack.readthedocs.io/en/develop/installation.html#building-with-cmake +# probably missing dependencies [source] git = "https://github.com/QMCPACK/qmcpack" rev = "9d0d968139fc33f71dbf9159f526dd7b47f10a3b" [build] -template = "custom" +template = "cmake" dependencies = [ "openmpi", "openblas", @@ -13,18 +14,3 @@ dependencies = [ "boost", "fftw", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/science/stellarium/recipe.toml b/recipes/wip/science/stellarium/recipe.toml index 38ded3f9..89430ec2 100644 --- a/recipes/wip/science/stellarium/recipe.toml +++ b/recipes/wip/science/stellarium/recipe.toml @@ -1,9 +1,10 @@ -#TODO probably wrong script, see https://github.com/Stellarium/stellarium/blob/master/BUILDING.md#building -#TODO missing dependencies - https://github.com/Stellarium/stellarium/blob/master/BUILDING.md#qt6 +#TODO not compiled or tested +# build instructions: https://github.com/Stellarium/stellarium/blob/master/BUILDING.md#building +#TODO missing dependencies: https://github.com/Stellarium/stellarium/blob/master/BUILDING.md#qt6 [source] -tar = "https://github.com/Stellarium/stellarium/releases/download/v23.3/stellarium-23.3.tar.xz" +tar = "https://github.com/Stellarium/stellarium/releases/download/v25.3/stellarium-25.3.tar.xz" [build] -template = "custom" +template = "cmake" dependencies = [ "mesa", "zlib", @@ -20,18 +21,3 @@ dependencies = [ "gexiv2", "libnlopt", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/security/clamav/recipe.toml b/recipes/wip/security/clamav/recipe.toml index 23435660..e90d730a 100644 --- a/recipes/wip/security/clamav/recipe.toml +++ b/recipes/wip/security/clamav/recipe.toml @@ -1,7 +1,8 @@ -#TODO probably wrong script, see https://docs.clamav.net/manual/Installing/Installing-from-source-Unix.html +#TODO not compiled or tested +# build instructions: https://docs.clamav.net/manual/Installing/Installing-from-source-Unix.html #TODO missing Sendmail Mail Filter API (Milter) [source] -tar = "https://www.clamav.net/downloads/production/clamav-1.2.1.tar.gz" +tar = "https://www.clamav.net/downloads/production/clamav-1.5.0.tar.gz" [build] template = "custom" dependencies = [ @@ -15,18 +16,7 @@ dependencies = [ "zlib", ] script = """ +DYNAMIC_INIT export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" - COOKBOOK_CONFIGURE="cmake" - COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure +cookbook_cmake """ diff --git a/recipes/wip/security/keepassxc/recipe.toml b/recipes/wip/security/keepassxc/recipe.toml index ab1148bd..3727dfa4 100644 --- a/recipes/wip/security/keepassxc/recipe.toml +++ b/recipes/wip/security/keepassxc/recipe.toml @@ -1,10 +1,16 @@ -#TODO probably wrong script, see https://github.com/keepassxreboot/keepassxc/wiki/Building-KeePassXC#linux -#TODO port to orbital -#TODO probably missing dependencies, see https://github.com/keepassxreboot/keepassxc/wiki/Set-up-Build-Environment-on-Linux#install-the-required-dependencies +#TODO not compiled or tested +# build instructions: https://github.com/keepassxreboot/keepassxc/wiki/Building-KeePassXC#linux +# probably missing dependencies, see https://github.com/keepassxreboot/keepassxc/wiki/Set-up-Build-Environment-on-Linux#install-the-required-dependencies [source] -tar = "https://github.com/keepassxreboot/keepassxc/releases/download/2.7.6/keepassxc-2.7.6-src.tar.xz" +tar = "https://github.com/keepassxreboot/keepassxc/releases/download/2.7.10/keepassxc-2.7.10-src.tar.xz" [build] -template = "custom" +template = "cmake" +cmakeflags = [ + "-DWITH_XC_AUTOTYPE=OFF", + "-DWITH_XC_UPDATECHECK=OFF", + "-DKEEPASSXC_BUILD_TYPE=Release", + "-DWITH_APP_BUNDLE=OFF", +] dependencies = [ "qt5-base", "qt5-svg", @@ -15,22 +21,3 @@ dependencies = [ "libxtst", "readline", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On - -DWITH_XC_AUTOTYPE=OFF - -DWITH_XC_UPDATECHECK=OFF - -DKEEPASSXC_BUILD_TYPE=Release - -DWITH_APP_BUNDLE=OFF -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/security/recdec/recipe.toml b/recipes/wip/security/recdec/recipe.toml index 9e1f1049..6852d275 100644 --- a/recipes/wip/security/recdec/recipe.toml +++ b/recipes/wip/security/recdec/recipe.toml @@ -1,25 +1,11 @@ -#TODO probably wrong script, see https://github.com/avast/retdec#process +#TODO not compiled or tested +# build instructions: https://github.com/avast/retdec#process [source] git = "https://github.com/avast/retdec" rev = "53e55b4b26e9b843787f0e06d867441e32b1604e" [build] -template = "custom" +template = "cmake" dependencies = [ "openssl1", "zlib", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" From 43d604721d68fb391af942022c23649cd55142e5 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 12 Oct 2025 20:22:51 -0300 Subject: [PATCH 2926/3180] Fix the recdec recipe name --- recipes/wip/security/{recdec => retdec}/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/security/{recdec => retdec}/recipe.toml (100%) diff --git a/recipes/wip/security/recdec/recipe.toml b/recipes/wip/security/retdec/recipe.toml similarity index 100% rename from recipes/wip/security/recdec/recipe.toml rename to recipes/wip/security/retdec/recipe.toml From 6b66cdaed01c1747e30ada3252e3f25aeaa6d95d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 12 Oct 2025 21:08:41 -0300 Subject: [PATCH 2927/3180] Try to fix more CMake-based recipes --- recipes/wip/services/qpwgraph/recipe.toml | 21 ++------------ recipes/wip/sound/audacity/recipe.toml | 25 ++++------------ recipes/wip/sound/lmms/recipe.toml | 23 ++++----------- recipes/wip/sound/mixxx/recipe.toml | 25 ++++------------ recipes/wip/sound/odin2/recipe.toml | 21 ++------------ recipes/wip/sys-info/cpu-x/recipe.toml | 29 ++++++++----------- .../wip/terminal/contour-terminal/recipe.toml | 19 ++---------- recipes/wip/tools/astc-encoder/recipe.toml | 20 ++----------- recipes/wip/tools/astyle/recipe.toml | 20 ++----------- recipes/wip/tools/flameshot/recipe.toml | 20 ++----------- recipes/wip/tools/gnu-radio/recipe.toml | 22 +++----------- recipes/wip/tools/kodi/recipe.toml | 29 +++++-------------- recipes/wip/tools/okteta/recipe.toml | 20 ++----------- recipes/wip/tools/scribus/recipe.toml | 20 ++----------- recipes/wip/tools/taskserver/recipe.toml | 20 ++----------- recipes/wip/tools/taskwarrior/recipe.toml | 20 ++----------- .../wip/video/editors/kdenlive/recipe.toml | 20 ++----------- recipes/wip/wayland/hyprland/recipe.toml | 6 +++- recipes/wip/wayland/waylandpp/recipe.toml | 20 ++----------- 19 files changed, 79 insertions(+), 321 deletions(-) diff --git a/recipes/wip/services/qpwgraph/recipe.toml b/recipes/wip/services/qpwgraph/recipe.toml index b8a48fbf..99df5ae3 100644 --- a/recipes/wip/services/qpwgraph/recipe.toml +++ b/recipes/wip/services/qpwgraph/recipe.toml @@ -1,26 +1,11 @@ -#TODO maybe wrong script -# build instructions - https://gitlab.freedesktop.org/rncbc/qpwgraph#building +#TODO not compiled or tested +# build instructions: https://gitlab.freedesktop.org/rncbc/qpwgraph#building [source] git = "https://gitlab.freedesktop.org/rncbc/qpwgraph" rev = "9fead6eff8c5831d66f618b2e8e195c94d5c22e6" [build] -template = "custom" +template = "cmake" dependencies = [ "qt6-base", "pipewire", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/sound/audacity/recipe.toml b/recipes/wip/sound/audacity/recipe.toml index c444edd6..22ed13cf 100644 --- a/recipes/wip/sound/audacity/recipe.toml +++ b/recipes/wip/sound/audacity/recipe.toml @@ -1,26 +1,11 @@ -#TODO maybe incomplete script, see https://github.com/audacity/audacity/blob/master/BUILDING.md -#TODO use the GTK2 or wxWidgets frontend? -#TODO probably need audio server patching +#TODO not compiled or tested +# build instructions: https://github.com/audacity/audacity/blob/master/BUILDING.md +# use the GTK2 or wxWidgets frontend? [source] -tar = "https://github.com/audacity/audacity/releases/download/Audacity-3.5.1/audacity-sources-3.5.1.tar.gz" +tar = "https://github.com/audacity/audacity/releases/download/Audacity-3.7.5/audacity-sources-3.7.5.tar.gz" [build] -template = "custom" +template = "cmake" dependencies = [ "gtk2", "libuuid", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/sound/lmms/recipe.toml b/recipes/wip/sound/lmms/recipe.toml index 51d57829..7f332881 100644 --- a/recipes/wip/sound/lmms/recipe.toml +++ b/recipes/wip/sound/lmms/recipe.toml @@ -1,8 +1,10 @@ -#TODO probably wrong script, see https://github.com/LMMS/lmms/wiki/Compiling#build-environment +#TODO not compiled or tested +# build instructions: https://github.com/LMMS/lmms/wiki/Compiling#build-environment [source] -tar = "https://github.com/LMMS/lmms/releases/download/v1.2.2/lmms_1.2.2.tar.xz" +git = "https://github.com/LMMS/lmms" +rev = "807751dc4dce53583ecf4140b67a5dc343c789a7" [build] -template = "custom" +template = "cmake" dependencies = [ "qt5-base", "libsamplerate", @@ -13,18 +15,3 @@ dependencies = [ "libstk", "fltk", ] -script = """ - COOKBOOK_CONFIGURE="cmake" - COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/sound/mixxx/recipe.toml b/recipes/wip/sound/mixxx/recipe.toml index d6bb852e..6d612136 100644 --- a/recipes/wip/sound/mixxx/recipe.toml +++ b/recipes/wip/sound/mixxx/recipe.toml @@ -1,11 +1,11 @@ -#TODO incomplete script -#TODO missing dependencies - https://github.com/mixxxdj/mixxx/blob/main/tools/debian_buildenv.sh -# build instructions - https://github.com/mixxxdj/mixxx/wiki/Compiling%20on%20Linux +#TODO not compiled or tested +# build instructions: https://github.com/mixxxdj/mixxx/wiki/Compiling%20on%20Linux +#TODO missing dependencies: https://github.com/mixxxdj/mixxx/blob/main/tools/debian_buildenv.sh [source] git = "https://github.com/mixxxdj/mixxx" -branch = "2.4" +branch = "2.5" [build] -template = "custom" +template = "cmake" dependencies = [ "fftw", "libflac", @@ -25,18 +25,3 @@ dependencies = [ "openssl1", "portaudio", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/sound/odin2/recipe.toml b/recipes/wip/sound/odin2/recipe.toml index c32acf7b..35b7fdb7 100644 --- a/recipes/wip/sound/odin2/recipe.toml +++ b/recipes/wip/sound/odin2/recipe.toml @@ -1,26 +1,11 @@ -#TODO maybe incomplete script, see https://github.com/TheWaveWarden/odin2#all-platforms -#TODO port to orbital +#TODO not compiled or tested +# build instructions: https://github.com/TheWaveWarden/odin2#all-platforms [source] git = "https://github.com/TheWaveWarden/odin2" [build] -template = "custom" +template = "cmake" dependencies = [ "mesa", "curl", "webkitgtk3", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/sys-info/cpu-x/recipe.toml b/recipes/wip/sys-info/cpu-x/recipe.toml index c6c51291..10552ede 100644 --- a/recipes/wip/sys-info/cpu-x/recipe.toml +++ b/recipes/wip/sys-info/cpu-x/recipe.toml @@ -1,31 +1,26 @@ -#TODO maybe incomplete script, see https://github.com/TheTumultuousUnicornOfDarkness/CPU-X/wiki/manual-build#build-and-install-cpu-x +#TODO not compiled or tested +# build instructions: https://github.com/TheTumultuousUnicornOfDarkness/CPU-X/wiki/manual-build#build-and-install-cpu-x [source] git = "https://github.com/TheTumultuousUnicornOfDarkness/CPU-X" -rev = "b957c031a2eab2c6c88275c4616a6a5e8c8e7670" +rev = "41f5d1ac3b13e60aa30212f2b9f38de646fd2b07" [build] template = "custom" dependencies = [ - "gtk3mm", + #"gtk3mm", "ncurses", - "glfw", - "libvulkan", + #"glfw3", + #"libvulkan", "libstatgrab", "libcpuid", "pciutils", ] script = """ +DYNAMIC_INIT export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" +COOKBOOK_CMAKE_FLAGS+=( + "-DWITH_GTK=0", + "-DWITH_LIBGLFW=0", + "-DWITH_VULKAN=0", ) -cookbook_configure +cookbook_cmake """ diff --git a/recipes/wip/terminal/contour-terminal/recipe.toml b/recipes/wip/terminal/contour-terminal/recipe.toml index 565ca292..40110b1a 100644 --- a/recipes/wip/terminal/contour-terminal/recipe.toml +++ b/recipes/wip/terminal/contour-terminal/recipe.toml @@ -1,11 +1,11 @@ #TODO not compiled or tested -#TODO missing dependencies, see https://github.com/contour-terminal/contour/blob/master/scripts/install-deps.sh#L328 # build instructions - https://contour-terminal.org/install/#unix-like-systems-linux-freebsd-macos +#TODO missing dependencies, see https://github.com/contour-terminal/contour/blob/master/scripts/install-deps.sh#L328 [source] git = "https://github.com/contour-terminal/contour" rev = "116f1d16f6dc33ab8b0f6010a44e7b23eadeb8ca" [build] -template = "custom" +template = "cmake" dependencies = [ "fontconfig", "freetyoe2", @@ -18,18 +18,3 @@ dependencies = [ "qt6-tools", "libxcb", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/tools/astc-encoder/recipe.toml b/recipes/wip/tools/astc-encoder/recipe.toml index b6b427d5..a599f9f5 100644 --- a/recipes/wip/tools/astc-encoder/recipe.toml +++ b/recipes/wip/tools/astc-encoder/recipe.toml @@ -1,21 +1,7 @@ -#TODO maybe incomplete script, see https://github.com/ARM-software/astc-encoder/blob/main/Docs/Building.md#macos-and-linux-using-make +#TODO not compiled or tested +# build instructions: https://github.com/ARM-software/astc-encoder/blob/main/Docs/Building.md#macos-and-linux-using-make [source] git = "https://github.com/ARM-software/astc-encoder" rev = "aeece2f609db959d1c5e43e4f00bd177ea130575" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/tools/astyle/recipe.toml b/recipes/wip/tools/astyle/recipe.toml index 6d10b413..b393bd1d 100644 --- a/recipes/wip/tools/astyle/recipe.toml +++ b/recipes/wip/tools/astyle/recipe.toml @@ -1,20 +1,6 @@ -#TODO maybe incomplete script, see https://astyle.sourceforge.net/install.html +#TODO not compiled or tested +# build instructions: https://astyle.sourceforge.net/install.html [source] tar = "https://sourceforge.net/projects/astyle/files/astyle/astyle%203.4/astyle-3.4.10.tar.bz2/download" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/tools/flameshot/recipe.toml b/recipes/wip/tools/flameshot/recipe.toml index 3275faa5..607a3b1f 100644 --- a/recipes/wip/tools/flameshot/recipe.toml +++ b/recipes/wip/tools/flameshot/recipe.toml @@ -1,26 +1,12 @@ -#TODO maybe incomplete script, see https://flameshot.org/docs/installation/source-code/#compilation +#TODO not compiled or tested +# build instructions: https://flameshot.org/docs/installation/source-code/#compilation [source] git = "https://github.com/flameshot-org/flameshot" rev = "70be63d478a271da549597d69bd4868607c0a395" [build] -template = "custom" +template = "cmake" dependencies = [ "qt5-base", "qt5-tools", "qt5-svg", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/tools/gnu-radio/recipe.toml b/recipes/wip/tools/gnu-radio/recipe.toml index 5d9115ea..048e48e6 100644 --- a/recipes/wip/tools/gnu-radio/recipe.toml +++ b/recipes/wip/tools/gnu-radio/recipe.toml @@ -1,10 +1,11 @@ -#TODO maybe incomplete script, see https://wiki.gnuradio.org/index.php?title=LinuxInstall#For_GNU_Radio_3.10,_3.9,_and_Main_Branch -#TODO probably missing dependencies, see https://wiki.gnuradio.org/index.php?title=UbuntuInstall#Install_Dependencies +#TODO not compiled or tested +# build instructions: https://wiki.gnuradio.org/index.php?title=LinuxInstall#For_GNU_Radio_3.10,_3.9,_and_Main_Branch +# probably missing dependencies, see https://wiki.gnuradio.org/index.php?title=UbuntuInstall#Install_Dependencies [source] git = "https://github.com/gnuradio/gnuradio" rev = "bd928539d9eaa73736f8381cd2e60953a0eb8cb8" [build] -template = "custom" +template = "cmake" dependencies = [ "volk", "boost", @@ -15,18 +16,3 @@ dependencies = [ "libusb", "libevdev", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/tools/kodi/recipe.toml b/recipes/wip/tools/kodi/recipe.toml index 7066e3f6..6aac752f 100644 --- a/recipes/wip/tools/kodi/recipe.toml +++ b/recipes/wip/tools/kodi/recipe.toml @@ -1,11 +1,15 @@ -#TODO probably wrong script, see https://github.com/xbmc/xbmc/blob/master/docs/README.Linux.md#4-build-kodi -#TODO port to orbital -#TODO maybe missing dependencies, see https://archlinux.org/packages/extra/x86_64/kodi/ +#TODO not compiled or tested +# build instructions: https://github.com/xbmc/xbmc/blob/master/docs/README.Linux.md#4-build-kodi +# maybe missing dependencies, see https://archlinux.org/packages/extra/x86_64/kodi/ [source] git = "https://github.com/xbmc/xbmc" rev = "5f418d0b133535c6675154688ac7144e34f4d436" [build] -template = "custom" +template = "cmake" +cmakeflags = [ + "-DCORE_PLATFORM_NAME=wayland", + "-DAPP_RENDER_SYSTEM=gl", +] dependencies = [ "libass", "libbluray", @@ -40,20 +44,3 @@ dependencies = [ "libxslt", "pipewire", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On - -DCORE_PLATFORM_NAME=wayland - -DAPP_RENDER_SYSTEM=gl -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/tools/okteta/recipe.toml b/recipes/wip/tools/okteta/recipe.toml index c3ad622a..18fde606 100644 --- a/recipes/wip/tools/okteta/recipe.toml +++ b/recipes/wip/tools/okteta/recipe.toml @@ -1,22 +1,8 @@ -#TODO maybe incomplete script, lacking build instructions +#TODO not compiled or tested +# lacking build instructions #TODO missing dependencies [source] git = "https://invent.kde.org/utilities/okteta" rev = "fb6150f2dce791c96b95a12ee0c74942c1774c05" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/tools/scribus/recipe.toml b/recipes/wip/tools/scribus/recipe.toml index 8e4f1982..e8a33342 100644 --- a/recipes/wip/tools/scribus/recipe.toml +++ b/recipes/wip/tools/scribus/recipe.toml @@ -1,6 +1,7 @@ -#TODO probably wrong script, see https://wiki.scribus.net/canvas/Official:Compile_with_CMake +#TODO not compiled or tested +# build instructions: https://wiki.scribus.net/canvas/Official:Compile_with_CMake [source] -tar = "https://sourceforge.net/projects/scribus/files/scribus/1.4.8/scribus-1.4.8.tar.xz/download" +tar = "https://sourceforge.net/projects/scribus/files/scribus/1.6.4/scribus-1.6.4.tar.xz/download" [build] template = "custom" dependencies = [ @@ -13,18 +14,3 @@ dependencies = [ "libjpeg", "fontconfig", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/tools/taskserver/recipe.toml b/recipes/wip/tools/taskserver/recipe.toml index c57cb228..b6f9ff41 100644 --- a/recipes/wip/tools/taskserver/recipe.toml +++ b/recipes/wip/tools/taskserver/recipe.toml @@ -1,20 +1,6 @@ -#TODO maybe incomplete script, see https://taskwarrior.org/download/#quick-setup +#TODO not compiled or tested +# build instructions: https://taskwarrior.org/download/#quick-setup [source] tar = "https://github.com/GothenburgBitFactory/taskserver/releases/download/v1.1.0/taskd-1.1.0.tar.gz" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/tools/taskwarrior/recipe.toml b/recipes/wip/tools/taskwarrior/recipe.toml index 5599aef5..d2f20d95 100644 --- a/recipes/wip/tools/taskwarrior/recipe.toml +++ b/recipes/wip/tools/taskwarrior/recipe.toml @@ -1,20 +1,6 @@ -#TODO maybe incomplete script, see https://taskwarrior.org/download/#quick-setup +#TODO not compiled or tested +# build instructions: https://taskwarrior.org/download/#quick-setup [source] tar = "https://github.com/GothenburgBitFactory/taskwarrior/releases/download/v2.6.2/task-2.6.2.tar.gz" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" diff --git a/recipes/wip/video/editors/kdenlive/recipe.toml b/recipes/wip/video/editors/kdenlive/recipe.toml index 5ac7fa15..993dce62 100644 --- a/recipes/wip/video/editors/kdenlive/recipe.toml +++ b/recipes/wip/video/editors/kdenlive/recipe.toml @@ -1,9 +1,10 @@ -#TODO maybe incomplete script, see https://invent.kde.org/multimedia/kdenlive/-/blob/master/dev-docs/build.md#build-and-install-the-projects +#TODO not compiled or tested +# build instructions: https://invent.kde.org/multimedia/kdenlive/-/blob/master/dev-docs/build.md#build-and-install-the-projects [source] git = "https://invent.kde.org/multimedia/kdenlive" rev = "da6ecdfbba7aadf88572ac5f87aeb88ff2d80f57" [build] -template = "custom" +template = "cmake" dependencies = [ "mlt", "ffmpeg6", @@ -37,18 +38,3 @@ dependencies = [ "kf5-xmlgui", "breeze-icons", ] -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" diff --git a/recipes/wip/wayland/hyprland/recipe.toml b/recipes/wip/wayland/hyprland/recipe.toml index dff2a286..4512978b 100644 --- a/recipes/wip/wayland/hyprland/recipe.toml +++ b/recipes/wip/wayland/hyprland/recipe.toml @@ -1,6 +1,8 @@ -#TODO missing CMake configuration, see https://wiki.hyprland.org/Getting-Started/Installation/#cmake-recommended +#TODO not compiled or tested +# build instructions: https://wiki.hyprland.org/Getting-Started/Installation/#cmake-recommended [source] git = "https://github.com/hyprwm/Hyprland" +rev = "ed936430216e7aa5f6f53d22eff713f8e9ed69ac" [build] template = "custom" dependencies = [ @@ -18,6 +20,8 @@ dependencies = [ "libxfixes", ] script = """ +DYNAMIC_INIT +cookbook_cmake mkdir -pv "${COOKBOOK_STAGE}"/usr/share/wayland-sessions cp -rv "${COOKBOOK_SOURCE}"/example/hyprland.desktop "${COOKBOOK_STAGE}"/usr/share/wayland-sessions """ diff --git a/recipes/wip/wayland/waylandpp/recipe.toml b/recipes/wip/wayland/waylandpp/recipe.toml index 7cf96db8..6bc1a035 100644 --- a/recipes/wip/wayland/waylandpp/recipe.toml +++ b/recipes/wip/wayland/waylandpp/recipe.toml @@ -1,20 +1,6 @@ -#TODO maybe incomplete script, see https://github.com/NilsBrause/waylandpp#building +#TODO not compiled or tested +# build instructions: https://github.com/NilsBrause/waylandpp#building [source] git = "https://github.com/NilsBrause/waylandpp" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE="cmake" -COOKBOOK_CONFIGURE_FLAGS=( - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" - -DCMAKE_SYSTEM_NAME=Generic - -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" - -DCMAKE_VERBOSE_MAKEFILE=On -"${COOKBOOK_SOURCE}" -) -cookbook_configure -""" +template = "cmake" From 3ae4be2309b6374ed3ddd88a7752bf37148b1514 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 13 Oct 2025 11:45:23 -0300 Subject: [PATCH 2928/3180] Try to fix Meson-based recipes --- recipes/wip/analysis/rizin/recipe.toml | 5 +++-- recipes/wip/archives/file-roller/recipe.toml | 7 ++++--- recipes/wip/codecs/dav1d/recipe.toml | 5 +++-- recipes/wip/demos/mesa-demos/recipe.toml | 6 +++--- recipes/wip/dev/ide/gnome-builder/recipe.toml | 7 ++++--- recipes/wip/dev/other/gegl/recipe.toml | 5 +++-- recipes/wip/dev/other/gexiv2/recipe.toml | 5 +++-- recipes/wip/dev/other/graphene/recipe.toml | 5 +++-- recipes/wip/doc/gtk-doc/recipe.toml | 4 ++-- recipes/wip/fuse/httpdirfs/recipe.toml | 5 +++-- 10 files changed, 31 insertions(+), 23 deletions(-) diff --git a/recipes/wip/analysis/rizin/recipe.toml b/recipes/wip/analysis/rizin/recipe.toml index 3b2a8e35..385be03b 100644 --- a/recipes/wip/analysis/rizin/recipe.toml +++ b/recipes/wip/analysis/rizin/recipe.toml @@ -1,5 +1,6 @@ -#TODO missing script for meson, see https://github.com/rizinorg/rizin/blob/dev/BUILDING.md +#TODO not compiled or tested +# build instructions: https://github.com/rizinorg/rizin/blob/dev/BUILDING.md [source] tar = "https://github.com/rizinorg/rizin/releases/download/v0.7.3/rizin-src-v0.7.3.tar.xz" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/archives/file-roller/recipe.toml b/recipes/wip/archives/file-roller/recipe.toml index c3392c6e..d4e493be 100644 --- a/recipes/wip/archives/file-roller/recipe.toml +++ b/recipes/wip/archives/file-roller/recipe.toml @@ -1,9 +1,10 @@ -#TODO missing script for Meson, see https://gitlab.gnome.org/GNOME/file-roller#building-locally -#TODO the "libportal" dependency is for Flatpak, maybe it's optional - https://gitlab.gnome.org/GNOME/file-roller#dependencies +#TODO not compiled or tested +# build instructions: https://gitlab.gnome.org/GNOME/file-roller#building-locally +# the libportal dependency is for flatpak, maybe it's optional [source] tar = "https://download.gnome.org/sources/file-roller/44/file-roller-44.3.tar.xz" [build] -template = "custom" +template = "meson" dependencies = [ "glib", "gtk3", diff --git a/recipes/wip/codecs/dav1d/recipe.toml b/recipes/wip/codecs/dav1d/recipe.toml index 7b5425a1..2384fba7 100644 --- a/recipes/wip/codecs/dav1d/recipe.toml +++ b/recipes/wip/codecs/dav1d/recipe.toml @@ -1,6 +1,7 @@ -#TODO missing script for Meson, see https://code.videolan.org/videolan/dav1d#compile +#TODO not compiled or tested +# build instructions: https://code.videolan.org/videolan/dav1d#compile [source] git = "https://code.videolan.org/videolan/dav1d" rev = "48035599cdd4e4415732e408c407e0c1cd1c7444" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/demos/mesa-demos/recipe.toml b/recipes/wip/demos/mesa-demos/recipe.toml index b2314349..f5577ef3 100644 --- a/recipes/wip/demos/mesa-demos/recipe.toml +++ b/recipes/wip/demos/mesa-demos/recipe.toml @@ -1,9 +1,9 @@ -#TODO missing script for Meson, see https://gitlab.freedesktop.org/mesa/demos/-/blob/main/README.rst?ref_type=heads -#TODO make freeglut works +#TODO not compiled or tested +# build instructions: https://gitlab.freedesktop.org/mesa/demos/-/blob/main/README.rst?ref_type=heads [source] tar = "https://archive.mesa3d.org/demos/mesa-demos-9.0.0.tar.xz" [build] -template = "custom" +template = "meson" dependencies = [ "freeglut", ] diff --git a/recipes/wip/dev/ide/gnome-builder/recipe.toml b/recipes/wip/dev/ide/gnome-builder/recipe.toml index 53b8683f..0142c9e0 100644 --- a/recipes/wip/dev/ide/gnome-builder/recipe.toml +++ b/recipes/wip/dev/ide/gnome-builder/recipe.toml @@ -1,9 +1,10 @@ -#TODO missing script for Meson, see https://builder.readthedocs.io/installation.html#via-release-tarball -#TODO missing dependencies, see https://packages.debian.org/source/trixie/gnome-builder +#TODO not compiled or tested +# build instructions: https://builder.readthedocs.io/installation.html#via-release-tarball +#TODO missing dependencies, see: https://packages.debian.org/source/trixie/gnome-builder [source] tar = "https://download.gnome.org/sources/gnome-builder/45/gnome-builder-45.0.tar.xz" [build] -template = "custom" +template = "meson" dependencies = [ "cairo", "cmark", diff --git a/recipes/wip/dev/other/gegl/recipe.toml b/recipes/wip/dev/other/gegl/recipe.toml index 0ca3f026..37b448db 100644 --- a/recipes/wip/dev/other/gegl/recipe.toml +++ b/recipes/wip/dev/other/gegl/recipe.toml @@ -1,8 +1,9 @@ -#TODO missing script for Meson, see https://gitlab.gnome.org/GNOME/gegl/-/blob/master/docs/development.adoc?ref_type=heads#user-content-debugging +#TODO not compiled or tested +# build instructions: https://gitlab.gnome.org/GNOME/gegl/-/blob/master/docs/development.adoc?ref_type=heads#user-content-debugging [source] tar = "https://download.gimp.org/pub/gegl/0.4/gegl-0.4.46.tar.xz" [build] -template = "custom" +template = "meson" dependencies = [ "libpng", "glib", diff --git a/recipes/wip/dev/other/gexiv2/recipe.toml b/recipes/wip/dev/other/gexiv2/recipe.toml index 16bf91bf..fe53453b 100644 --- a/recipes/wip/dev/other/gexiv2/recipe.toml +++ b/recipes/wip/dev/other/gexiv2/recipe.toml @@ -1,5 +1,6 @@ -#TODO missing script for Meson, see https://gitlab.gnome.org/GNOME/gexiv2/-/blob/master/INSTALLING?ref_type=heads +#TODO not compiled or tested +# build instructions: https://gitlab.gnome.org/GNOME/gexiv2/-/blob/master/INSTALLING?ref_type=heads [source] tar = "https://download.gnome.org/sources/gexiv2/0.14/gexiv2-0.14.2.tar.xz" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/dev/other/graphene/recipe.toml b/recipes/wip/dev/other/graphene/recipe.toml index 29fa65e6..40d77cfe 100644 --- a/recipes/wip/dev/other/graphene/recipe.toml +++ b/recipes/wip/dev/other/graphene/recipe.toml @@ -1,5 +1,6 @@ -#TODO missing script for Meson, see https://github.com/ebassi/graphene#installation +#TODO not compiled or tested +# build instructions: https://github.com/ebassi/graphene#installation [source] tar = "https://download.gnome.org/sources/graphene/1.10/graphene-1.10.8.tar.xz" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/doc/gtk-doc/recipe.toml b/recipes/wip/doc/gtk-doc/recipe.toml index 423615c0..853dfd10 100644 --- a/recipes/wip/doc/gtk-doc/recipe.toml +++ b/recipes/wip/doc/gtk-doc/recipe.toml @@ -1,5 +1,5 @@ -#TODO missing script for Meson +#TODO not compiled or tested [source] tar = "https://download.gnome.org/sources/gtk-doc/1.33/gtk-doc-1.33.2.tar.xz" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/fuse/httpdirfs/recipe.toml b/recipes/wip/fuse/httpdirfs/recipe.toml index 8f03b3af..e772e3f1 100644 --- a/recipes/wip/fuse/httpdirfs/recipe.toml +++ b/recipes/wip/fuse/httpdirfs/recipe.toml @@ -1,9 +1,10 @@ -#TODO missing script for meson, see https://github.com/fangfufu/httpdirfs#compilation +#TODO not compiled or tested +# build instructions: https://github.com/fangfufu/httpdirfs#compilation [source] git = "https://github.com/fangfufu/httpdirfs" rev = "d91bb2b2789be8a0f72c7baddac63ffb78299ad9" [build] -template = "custom" +template = "meson" dependencies = [ "libfuse3", "openssl1", From 3d593a7c6c147f88a54f8f8c850d3ff88c63b5ee Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 13 Oct 2025 15:58:14 -0300 Subject: [PATCH 2929/3180] Add recipes --- recipes/wip/dev/other/ut/recipe.toml | 5 +++++ recipes/wip/net/http/easyp/recipe.toml | 6 ++++++ 2 files changed, 11 insertions(+) create mode 100644 recipes/wip/dev/other/ut/recipe.toml create mode 100644 recipes/wip/net/http/easyp/recipe.toml diff --git a/recipes/wip/dev/other/ut/recipe.toml b/recipes/wip/dev/other/ut/recipe.toml new file mode 100644 index 00000000..5020af72 --- /dev/null +++ b/recipes/wip/dev/other/ut/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ksdme/ut" +[build] +template = "cargo" diff --git a/recipes/wip/net/http/easyp/recipe.toml b/recipes/wip/net/http/easyp/recipe.toml new file mode 100644 index 00000000..8c18697e --- /dev/null +++ b/recipes/wip/net/http/easyp/recipe.toml @@ -0,0 +1,6 @@ +#TODO not compiled or tested +#TODO determine how to configure this part of the deployment script: https://github.com/gmatht/easyp/blob/main/deploy.sh#L39 +[source] +git = "https://github.com/gmatht/easyp-crate" +[build] +template = "custom" From 4fa9a050bdf9b895c0f99de551bff02a26bd2a30 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 13 Oct 2025 16:11:55 -0300 Subject: [PATCH 2930/3180] Try to fix more Meson-based recipes --- recipes/wip/games/fps/vkquake/recipe.toml | 6 +++--- recipes/wip/games/space/naev/recipe.toml | 5 +++-- recipes/wip/image/upscaling/upscaler/recipe.toml | 5 +++-- recipes/wip/libs/gtk/gtk3mm/recipe.toml | 7 ++++--- recipes/wip/libs/gtk/gtk4/recipe.toml | 6 +++--- recipes/wip/libs/gtk/gtk4mm/recipe.toml | 7 ++++--- recipes/wip/libs/gtk/gtksourceview/recipe.toml | 5 +++-- recipes/wip/libs/gtk/libhandy/recipe.toml | 5 +++-- recipes/wip/libs/other/babl/recipe.toml | 5 +++-- .../libs/other/{cairomm-1.0+ => cairomm10+}/recipe.toml | 0 .../libs/other/{cairomm-1.16+ => cairomm116+}/recipe.toml | 0 11 files changed, 29 insertions(+), 22 deletions(-) rename recipes/wip/libs/other/{cairomm-1.0+ => cairomm10+}/recipe.toml (100%) rename recipes/wip/libs/other/{cairomm-1.16+ => cairomm116+}/recipe.toml (100%) diff --git a/recipes/wip/games/fps/vkquake/recipe.toml b/recipes/wip/games/fps/vkquake/recipe.toml index 9131a309..b16b4f84 100644 --- a/recipes/wip/games/fps/vkquake/recipe.toml +++ b/recipes/wip/games/fps/vkquake/recipe.toml @@ -1,9 +1,9 @@ -#TODO missing script for Meson, see https://github.com/Novum/vkQuake#linux-1 -#TODO port to orbital? +#TODO not compiled or tested +# build instructions: https://github.com/Novum/vkQuake#linux-1 [source] git = "https://github.com/Novum/vkQuake" [build] -template = "custom" +template = "meson" dependencies = [ "sdl2", "libvulkan", diff --git a/recipes/wip/games/space/naev/recipe.toml b/recipes/wip/games/space/naev/recipe.toml index 87fc343b..994c2460 100644 --- a/recipes/wip/games/space/naev/recipe.toml +++ b/recipes/wip/games/space/naev/recipe.toml @@ -1,8 +1,9 @@ -#TODO missing script for Meson, see https://github.com/naev/naev/wiki/Compiling-on-*nix +#TODO not compiled or tested +# build instructions: https://github.com/naev/naev/wiki/Compiling-on-*nix [source] tar = "https://github.com/naev/naev/releases/download/v0.10.6/naev-0.10.6-source.tar.xz" [build] -template = "custom" +template = "meson" dependencies = [ "sdl2", "sdl2-image", diff --git a/recipes/wip/image/upscaling/upscaler/recipe.toml b/recipes/wip/image/upscaling/upscaler/recipe.toml index b9393e38..6d6b73cf 100644 --- a/recipes/wip/image/upscaling/upscaler/recipe.toml +++ b/recipes/wip/image/upscaling/upscaler/recipe.toml @@ -1,9 +1,10 @@ -#TODO missing script for Meson, see https://gitlab.gnome.org/World/Upscaler#meson +#TODO not compiled or tested +# build instructions: https://gitlab.gnome.org/World/Upscaler#meson [source] git = "https://gitlab.gnome.org/World/Upscaler" rev = "30c2a8411fac281ed548189a9fea45dc9efe5b68" [build] -template = "custom" +template = "meson" dependencies = [ "gtk4", "libadwaita", diff --git a/recipes/wip/libs/gtk/gtk3mm/recipe.toml b/recipes/wip/libs/gtk/gtk3mm/recipe.toml index 99a5cc71..3f47f818 100644 --- a/recipes/wip/libs/gtk/gtk3mm/recipe.toml +++ b/recipes/wip/libs/gtk/gtk3mm/recipe.toml @@ -1,12 +1,13 @@ -#TODO missing script for Meson, see https://gnome.pages.gitlab.gnome.org/gtkmm-documentation/sec-install-unix-and-linux.html +#TODO not compiled or tested +# build instructions: https://gnome.pages.gitlab.gnome.org/gtkmm-documentation/sec-install-unix-and-linux.html [source] tar = "https://download.gnome.org/sources/gtkmm/3.24/gtkmm-3.24.8.tar.xz" [build] -template = "custom" +template = "meson" dependencies = [ "libsigc++", "gtk3", "glibmm", - "cairomm-1_0+", + "cairomm10+", "pangomm", ] diff --git a/recipes/wip/libs/gtk/gtk4/recipe.toml b/recipes/wip/libs/gtk/gtk4/recipe.toml index d4ec7848..67799892 100644 --- a/recipes/wip/libs/gtk/gtk4/recipe.toml +++ b/recipes/wip/libs/gtk/gtk4/recipe.toml @@ -1,9 +1,9 @@ -#TODO missing script for Meson, see https://docs.gtk.org/gtk4/building.html -#TODO port to orbital +#TODO not compiled or tested +# build instructions: https://docs.gtk.org/gtk4/building.html [source] tar = "https://download.gnome.org/sources/gtk/4.11/gtk-4.11.2.tar.xz" [build] -template = "custom" +template = "meson" dependencies = [ "glib", "gdk-pixbuf", diff --git a/recipes/wip/libs/gtk/gtk4mm/recipe.toml b/recipes/wip/libs/gtk/gtk4mm/recipe.toml index d04bd7a8..e2b22bc8 100644 --- a/recipes/wip/libs/gtk/gtk4mm/recipe.toml +++ b/recipes/wip/libs/gtk/gtk4mm/recipe.toml @@ -1,12 +1,13 @@ -#TODO missing script for Meson, see https://gnome.pages.gitlab.gnome.org/gtkmm-documentation/sec-install-unix-and-linux.html +#TODO not compiled or tested +# build instructions: https://gnome.pages.gitlab.gnome.org/gtkmm-documentation/sec-install-unix-and-linux.html [source] tar = "https://download.gnome.org/sources/gtkmm/4.13/gtkmm-4.13.2.tar.xz" [build] -template = "custom" +template = "meson" dependencies = [ "libsigc++", "gtk4", "glibmm", - "cairomm-1_16+", + "cairomm116+", "pangomm", ] diff --git a/recipes/wip/libs/gtk/gtksourceview/recipe.toml b/recipes/wip/libs/gtk/gtksourceview/recipe.toml index 7f96899f..39a4801d 100644 --- a/recipes/wip/libs/gtk/gtksourceview/recipe.toml +++ b/recipes/wip/libs/gtk/gtksourceview/recipe.toml @@ -1,8 +1,9 @@ -#TODO missing script for Meson, see https://gitlab.gnome.org/GNOME/gtksourceview#installation +#TODO not compiled or tested +# build instructions: https://gitlab.gnome.org/GNOME/gtksourceview#installation [source] tar = "https://download.gnome.org/sources/gtksourceview/5.10/gtksourceview-5.10.0.tar.xz" [build] -template = "custom" +template = "meson" dependencies = [ "glib", "gtk4", diff --git a/recipes/wip/libs/gtk/libhandy/recipe.toml b/recipes/wip/libs/gtk/libhandy/recipe.toml index dbbee644..84ca2d7e 100644 --- a/recipes/wip/libs/gtk/libhandy/recipe.toml +++ b/recipes/wip/libs/gtk/libhandy/recipe.toml @@ -1,10 +1,11 @@ -#TODO missing script for Meson, see https://gitlab.gnome.org/GNOME/libhandy#building +#TODO not compiled or tested +# build instructions: https://gitlab.gnome.org/GNOME/libhandy#building #TODO determine dependencies [source] git = "https://gitlab.gnome.org/GNOME/libhandy" rev = "9b0071408ce86a3ef843806fddd723a85f6f2416" [build] -template = "custom" +template = "meson" dependencies = [ "glib", "gtk3", diff --git a/recipes/wip/libs/other/babl/recipe.toml b/recipes/wip/libs/other/babl/recipe.toml index 5c2226b3..55760166 100644 --- a/recipes/wip/libs/other/babl/recipe.toml +++ b/recipes/wip/libs/other/babl/recipe.toml @@ -1,5 +1,6 @@ -#TODO missing script for Meson, see https://gitlab.gnome.org/GNOME/babl/-/blob/master/INSTALL.in?ref_type=heads +#TODO not compiled or tested +# build instructions: https://gitlab.gnome.org/GNOME/babl/-/blob/master/INSTALL.in?ref_type=heads [source] tar = "https://download.gimp.org/pub/babl/0.1/babl-0.1.106.tar.xz" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/libs/other/cairomm-1.0+/recipe.toml b/recipes/wip/libs/other/cairomm10+/recipe.toml similarity index 100% rename from recipes/wip/libs/other/cairomm-1.0+/recipe.toml rename to recipes/wip/libs/other/cairomm10+/recipe.toml diff --git a/recipes/wip/libs/other/cairomm-1.16+/recipe.toml b/recipes/wip/libs/other/cairomm116+/recipe.toml similarity index 100% rename from recipes/wip/libs/other/cairomm-1.16+/recipe.toml rename to recipes/wip/libs/other/cairomm116+/recipe.toml From efc05d583445acdd181d00c97bee22d4ff877ff9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 13 Oct 2025 16:30:09 -0300 Subject: [PATCH 2931/3180] Try to fix more Meson-based recipes --- recipes/wip/libs/other/dspy/recipe.toml | 5 +++-- recipes/wip/libs/other/inih/recipe.toml | 5 +++-- recipes/wip/libs/other/json-glib/recipe.toml | 5 +++-- recipes/wip/libs/other/jsonrpc-glib/recipe.toml | 5 +++-- recipes/wip/libs/other/libadwaita/recipe.toml | 5 +++-- recipes/wip/libs/other/libcamera/recipe.toml | 5 +++-- recipes/wip/libs/other/libdecor/recipe.toml | 5 +++-- recipes/wip/libs/other/libdex/recipe.toml | 5 +++-- recipes/wip/libs/other/libfuse2/recipe.toml | 7 ++++--- recipes/wip/libs/other/libfuse3/recipe.toml | 7 ++++--- recipes/wip/libs/other/libinput/recipe.toml | 5 +++-- recipes/wip/libs/other/libnotify/recipe.toml | 4 ++-- 12 files changed, 37 insertions(+), 26 deletions(-) diff --git a/recipes/wip/libs/other/dspy/recipe.toml b/recipes/wip/libs/other/dspy/recipe.toml index 5b7fb753..0f5ff99a 100644 --- a/recipes/wip/libs/other/dspy/recipe.toml +++ b/recipes/wip/libs/other/dspy/recipe.toml @@ -1,5 +1,6 @@ -#TODO missing script for Meson, lacking build instructions +#TODO not compiled or tested +# lacking build instructions [source] tar = "https://download.gnome.org/sources/dspy/1.2/dspy-1.2.1.tar.xz" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/libs/other/inih/recipe.toml b/recipes/wip/libs/other/inih/recipe.toml index 014f082b..5ac3bfdf 100644 --- a/recipes/wip/libs/other/inih/recipe.toml +++ b/recipes/wip/libs/other/inih/recipe.toml @@ -1,6 +1,7 @@ -#TODO missing script for Meson, see https://github.com/benhoyt/inih#meson-notes +#TODO not compiled or tested +# build instructions: https://github.com/benhoyt/inih#meson-notes [source] git = "https://github.com/benhoyt/inih" rev = "9cecf0643da0846e77f64d10a126d9f48b9e05e8" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/libs/other/json-glib/recipe.toml b/recipes/wip/libs/other/json-glib/recipe.toml index 63676945..e0da7d37 100644 --- a/recipes/wip/libs/other/json-glib/recipe.toml +++ b/recipes/wip/libs/other/json-glib/recipe.toml @@ -1,8 +1,9 @@ -#TODO missing script for Meson, see https://gitlab.gnome.org/GNOME/json-glib/#build-and-installation +#TODO not compiled or tested +# build instructions: https://gitlab.gnome.org/GNOME/json-glib/#build-and-installation [source] tar = "https://download.gnome.org/sources/json-glib/1.8/json-glib-1.8.0.tar.xz" [build] -template = "custom" +template = "meson" dependencies = [ "glib", ] diff --git a/recipes/wip/libs/other/jsonrpc-glib/recipe.toml b/recipes/wip/libs/other/jsonrpc-glib/recipe.toml index 65f6e609..8ba49411 100644 --- a/recipes/wip/libs/other/jsonrpc-glib/recipe.toml +++ b/recipes/wip/libs/other/jsonrpc-glib/recipe.toml @@ -1,8 +1,9 @@ -#TODO missing script for Meson, see https://gitlab.gnome.org/GNOME/jsonrpc-glib#building +#TODO not compiled or tested +# build instructions: https://gitlab.gnome.org/GNOME/jsonrpc-glib#building [source] tar = "https://download.gnome.org/sources/jsonrpc-glib/3.44/jsonrpc-glib-3.44.0.tar.xz" [build] -template = "custom" +template = "meson" dependencies = [ "glib", ] diff --git a/recipes/wip/libs/other/libadwaita/recipe.toml b/recipes/wip/libs/other/libadwaita/recipe.toml index dd5d581e..b48885f6 100644 --- a/recipes/wip/libs/other/libadwaita/recipe.toml +++ b/recipes/wip/libs/other/libadwaita/recipe.toml @@ -1,5 +1,6 @@ -#TODO missing script for Meson, see https://gitlab.gnome.org/GNOME/libadwaita#building +#TODO not compiled or tested +# build instructions: https://gitlab.gnome.org/GNOME/libadwaita#building [source] tar = "https://download.gnome.org/sources/libadwaita/1.4/libadwaita-1.4.0.tar.xz" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/libs/other/libcamera/recipe.toml b/recipes/wip/libs/other/libcamera/recipe.toml index d5d78650..c52109d6 100644 --- a/recipes/wip/libs/other/libcamera/recipe.toml +++ b/recipes/wip/libs/other/libcamera/recipe.toml @@ -1,8 +1,9 @@ -#TODO missing script for Meson, see https://libcamera.org/getting-started.html +#TODO not compiled or tested +# build instructions: https://libcamera.org/getting-started.html [source] git = "https://git.libcamera.org/libcamera/libcamera" [build] -template = "custom" +template = "meson" dependencies = [ "libyaml", "libevdev", diff --git a/recipes/wip/libs/other/libdecor/recipe.toml b/recipes/wip/libs/other/libdecor/recipe.toml index d828692d..9b11512f 100644 --- a/recipes/wip/libs/other/libdecor/recipe.toml +++ b/recipes/wip/libs/other/libdecor/recipe.toml @@ -1,9 +1,10 @@ -#TODO missing script for Meson, see https://gitlab.freedesktop.org/libdecor/libdecor#build-install +#TODO not compiled or tested +# build instructions: https://gitlab.freedesktop.org/libdecor/libdecor#build-install #TODO port to orbital [source] tar = "https://gitlab.freedesktop.org/libdecor/libdecor/uploads/ee5ef0f2c3a4743e8501a855d61cb397/libdecor-0.1.1.tar.xz" [build] -template = "custom" +template = "meson" dependencies = [ "cairo", "pango", diff --git a/recipes/wip/libs/other/libdex/recipe.toml b/recipes/wip/libs/other/libdex/recipe.toml index 365fcee4..416794ff 100644 --- a/recipes/wip/libs/other/libdex/recipe.toml +++ b/recipes/wip/libs/other/libdex/recipe.toml @@ -1,8 +1,9 @@ -#TODO missing script for Meson, see https://gitlab.gnome.org/GNOME/libdex#building +#TODO not compiled or tested +# build instructions: https://gitlab.gnome.org/GNOME/libdex#building [source] tar = "https://download.gnome.org/sources/libdex/0.4/libdex-0.4.1.tar.xz" [build] -template = "custom" +template = "meson" dependencies = [ "glib", ] diff --git a/recipes/wip/libs/other/libfuse2/recipe.toml b/recipes/wip/libs/other/libfuse2/recipe.toml index 4f20632d..e17f98df 100644 --- a/recipes/wip/libs/other/libfuse2/recipe.toml +++ b/recipes/wip/libs/other/libfuse2/recipe.toml @@ -1,6 +1,7 @@ -#TODO missing script for Meson, see https://github.com/libfuse/libfuse#installation -#TODO require the "fused" daemon (equivalent to the Linux kernel module but in user-space) +#TODO not compiled or tested +# build instructions: https://github.com/libfuse/libfuse#installation +#TODO require a redox daemon (userspace equivalent of the Linux kernel module) [source] tar = "https://github.com/libfuse/libfuse/releases/download/fuse-2.9.9/fuse-2.9.9.tar.gz" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/libs/other/libfuse3/recipe.toml b/recipes/wip/libs/other/libfuse3/recipe.toml index 170c3bd7..8cd145ee 100644 --- a/recipes/wip/libs/other/libfuse3/recipe.toml +++ b/recipes/wip/libs/other/libfuse3/recipe.toml @@ -1,6 +1,7 @@ -#TODO missing script for Meson, see https://github.com/libfuse/libfuse#installation -#TODO require the "fused" daemon (equivalent to the Linux kernel module but in user-space) +#TODO not compiled or tested +# build instructions: https://github.com/libfuse/libfuse#installation +#TODO require a redox daemon (userspace equivalent of the Linux kernel module) [source] tar = "https://github.com/libfuse/libfuse/releases/download/fuse-3.16.2/fuse-3.16.2.tar.gz" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/libs/other/libinput/recipe.toml b/recipes/wip/libs/other/libinput/recipe.toml index 40bb422c..a042016b 100644 --- a/recipes/wip/libs/other/libinput/recipe.toml +++ b/recipes/wip/libs/other/libinput/recipe.toml @@ -1,9 +1,10 @@ -#TODO missing script for Meson, see https://wayland.freedesktop.org/libinput/doc/latest/building.html#building +#TODO not compiled or tested +# build instructions: https://wayland.freedesktop.org/libinput/doc/latest/building.html#building [source] git = "https://gitlab.freedesktop.org/libinput/libinput" rev = "1680f2fbaa63a91739012c6b57988ab1918ea0b7" [build] -template = "custom" +template = "meson" dependencies = [ "eudev", "libevdev", diff --git a/recipes/wip/libs/other/libnotify/recipe.toml b/recipes/wip/libs/other/libnotify/recipe.toml index 456d3cd3..9e66bfe3 100644 --- a/recipes/wip/libs/other/libnotify/recipe.toml +++ b/recipes/wip/libs/other/libnotify/recipe.toml @@ -1,8 +1,8 @@ -#TODO missing script for Meson +#TODO not compiled or tested [source] tar = "https://download.gnome.org/sources/libnotify/0.8/libnotify-0.8.3.tar.xz" [build] -template = "custom" +template = "meson" dependencies = [ "gtk3", "gdk-pixbuf", From 61f15132dfa1ce103541226b26e5aeb92e5f830f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 13 Oct 2025 16:43:33 -0300 Subject: [PATCH 2932/3180] Try to fix more Meson-based recipes --- recipes/wip/libs/other/libpanel/recipe.toml | 5 +++-- recipes/wip/libs/other/libpeas/recipe.toml | 5 +++-- recipes/wip/libs/other/librist/recipe.toml | 5 +++-- recipes/wip/libs/other/libslirp/recipe.toml | 5 +++-- recipes/wip/libs/other/libvte/recipe.toml | 5 +++-- recipes/wip/libs/other/lilv/recipe.toml | 5 +++-- recipes/wip/libs/other/lv2/recipe.toml | 5 +++-- recipes/wip/libs/other/rubberband/recipe.toml | 5 +++-- recipes/wip/libs/other/sord/recipe.toml | 5 +++-- recipes/wip/libs/other/sratom/recipe.toml | 5 +++-- recipes/wip/libs/other/suil/recipe.toml | 5 +++-- recipes/wip/libs/other/totem-pl-parser/recipe.toml | 5 +++-- 12 files changed, 36 insertions(+), 24 deletions(-) diff --git a/recipes/wip/libs/other/libpanel/recipe.toml b/recipes/wip/libs/other/libpanel/recipe.toml index bceeb07b..0dfe1cc6 100644 --- a/recipes/wip/libs/other/libpanel/recipe.toml +++ b/recipes/wip/libs/other/libpanel/recipe.toml @@ -1,5 +1,6 @@ -#TODO missing script for Meson, lacking build instructions +#TODO not compiled or tested +# lacking build instructions [source] tar = "https://download.gnome.org/sources/libpanel/1.4/libpanel-1.4.0.tar.xz" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/libs/other/libpeas/recipe.toml b/recipes/wip/libs/other/libpeas/recipe.toml index cf0c9090..b7fa7888 100644 --- a/recipes/wip/libs/other/libpeas/recipe.toml +++ b/recipes/wip/libs/other/libpeas/recipe.toml @@ -1,5 +1,6 @@ -#TODO missing script for Meson, see https://gitlab.gnome.org/GNOME/libpeas +#TODO not compiled or tested +# build instructions: https://gitlab.gnome.org/GNOME/libpeas [source] tar = "https://download.gnome.org/sources/libpeas/2.0/libpeas-2.0.0.tar.xz" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/libs/other/librist/recipe.toml b/recipes/wip/libs/other/librist/recipe.toml index 39d44094..5757c549 100644 --- a/recipes/wip/libs/other/librist/recipe.toml +++ b/recipes/wip/libs/other/librist/recipe.toml @@ -1,6 +1,7 @@ -#TODO missing script for Meson, see https://code.videolan.org/rist/librist#compile-using-mesonninja-linux-osx-and-windows-mingw +#TODO not compiled or tested +# build instructions: https://code.videolan.org/rist/librist#compile-using-mesonninja-linux-osx-and-windows-mingw [source] git = "https://code.videolan.org/rist/librist" rev = "1e805500dc14a507598cebdd49557c32e514899f" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/libs/other/libslirp/recipe.toml b/recipes/wip/libs/other/libslirp/recipe.toml index 5017b462..2722021b 100644 --- a/recipes/wip/libs/other/libslirp/recipe.toml +++ b/recipes/wip/libs/other/libslirp/recipe.toml @@ -1,5 +1,6 @@ -#TODO missing script for Meson, see https://gitlab.freedesktop.org/slirp/libslirp#building +#TODO not compiled or tested +# build instructions: https://gitlab.freedesktop.org/slirp/libslirp#building [source] tar = "https://gitlab.freedesktop.org/slirp/libslirp/uploads/60113f60cfd6abe2c16dde9f6c81b631/libslirp-4.7.0.tar.xz" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/libs/other/libvte/recipe.toml b/recipes/wip/libs/other/libvte/recipe.toml index 4c08fd16..b45dbdc7 100644 --- a/recipes/wip/libs/other/libvte/recipe.toml +++ b/recipes/wip/libs/other/libvte/recipe.toml @@ -1,5 +1,6 @@ -#TODO missing script for Meson, see https://gitlab.gnome.org/GNOME/vte/#installation +#TODO not compiled or tested +# build instructions: https://gitlab.gnome.org/GNOME/vte/#installation [source] tar = "https://download.gnome.org/sources/vte/0.74/vte-0.74.1.tar.xz" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/libs/other/lilv/recipe.toml b/recipes/wip/libs/other/lilv/recipe.toml index c15da008..04e68ce9 100644 --- a/recipes/wip/libs/other/lilv/recipe.toml +++ b/recipes/wip/libs/other/lilv/recipe.toml @@ -1,5 +1,6 @@ -#TODO missing script for Meson, see https://gitlab.com/lv2/lilv/-/blob/master/INSTALL.md?ref_type=heads +#TODO not compiled or tested +# build instructions: https://gitlab.com/lv2/lilv/-/blob/master/INSTALL.md?ref_type=heads [source] tar = "https://download.drobilla.net/lilv-0.24.20.tar.xz" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/libs/other/lv2/recipe.toml b/recipes/wip/libs/other/lv2/recipe.toml index bcbb450d..e21a5da2 100644 --- a/recipes/wip/libs/other/lv2/recipe.toml +++ b/recipes/wip/libs/other/lv2/recipe.toml @@ -1,5 +1,6 @@ -#TODO missing script for Meson, see https://gitlab.com/lv2/lv2/-/blob/master/INSTALL.md +#TODO not compiled or tested +# build instructions: https://gitlab.com/lv2/lv2/-/blob/master/INSTALL.md [source] tar = "https://lv2plug.in/spec/lv2-1.18.10.tar.xz" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/libs/other/rubberband/recipe.toml b/recipes/wip/libs/other/rubberband/recipe.toml index 7908a22a..e962cea6 100644 --- a/recipes/wip/libs/other/rubberband/recipe.toml +++ b/recipes/wip/libs/other/rubberband/recipe.toml @@ -1,5 +1,6 @@ -#TODO missing script for Meson, see https://hg.sr.ht/~breakfastquay/rubberband/browse/COMPILING.md?rev=tip +#TODO not compiled or tested +# build instructions: https://hg.sr.ht/~breakfastquay/rubberband/browse/COMPILING.md?rev=tip [source] tar = "https://breakfastquay.com/files/releases/rubberband-3.2.1.tar.bz2" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/libs/other/sord/recipe.toml b/recipes/wip/libs/other/sord/recipe.toml index fc03c5ed..a9335d54 100644 --- a/recipes/wip/libs/other/sord/recipe.toml +++ b/recipes/wip/libs/other/sord/recipe.toml @@ -1,5 +1,6 @@ -#TODO missing script for Meson, see https://gitlab.com/drobilla/sord/-/blob/master/INSTALL.md?ref_type=heads +#TODO not compiled or tested +# build instructions: https://gitlab.com/drobilla/sord/-/blob/master/INSTALL.md?ref_type=heads [source] tar = "https://download.drobilla.net/sord-0.16.14.tar.xz" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/libs/other/sratom/recipe.toml b/recipes/wip/libs/other/sratom/recipe.toml index d15d8d3c..dc1b31a2 100644 --- a/recipes/wip/libs/other/sratom/recipe.toml +++ b/recipes/wip/libs/other/sratom/recipe.toml @@ -1,5 +1,6 @@ -#TODO missing script for Meson, see https://gitlab.com/lv2/sratom/-/blob/master/INSTALL.md?ref_type=heads +#TODO not compiled or tested +# build instructions: https://gitlab.com/lv2/sratom/-/blob/master/INSTALL.md?ref_type=heads [source] tar = "https://download.drobilla.net/sratom-0.6.14.tar.xz" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/libs/other/suil/recipe.toml b/recipes/wip/libs/other/suil/recipe.toml index 7aa3f608..49ff331f 100644 --- a/recipes/wip/libs/other/suil/recipe.toml +++ b/recipes/wip/libs/other/suil/recipe.toml @@ -1,5 +1,6 @@ -#TODO missing script for Meson, see https://gitlab.com/lv2/suil/-/blob/master/INSTALL.md?ref_type=heads +#TODO not compiled or tested +# build instructions: https://gitlab.com/lv2/suil/-/blob/master/INSTALL.md?ref_type=heads [source] tar = "https://download.drobilla.net/suil-0.10.18.tar.xz" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/libs/other/totem-pl-parser/recipe.toml b/recipes/wip/libs/other/totem-pl-parser/recipe.toml index 8e55be1a..ebc359d5 100644 --- a/recipes/wip/libs/other/totem-pl-parser/recipe.toml +++ b/recipes/wip/libs/other/totem-pl-parser/recipe.toml @@ -1,8 +1,9 @@ -#TODO missing script for Meson, lacking build instructions +#TODO not compiled or tested +# lacking build instructions [source] tar = "https://download.gnome.org/sources/totem-pl-parser/3.26/totem-pl-parser-3.26.6.tar.xz" [build] -template = "configure" +template = "meson" dependencies = [ "libxml2", "glib", From 3459e0a79c6c801b6abe4ff6e7917ded37eb350d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 13 Oct 2025 17:15:22 -0300 Subject: [PATCH 2933/3180] Try to fix more Meson-based recipes --- recipes/wip/net/other/varia/recipe.toml | 8 +++++--- recipes/wip/net/other/warp/recipe.toml | 6 ------ recipes/wip/net/sharing/warp/recipe.toml | 7 +++++++ recipes/wip/players/mpv/recipe.toml | 10 +++++----- .../wip/recorders/gpu-screen-recorder-gtk/recipe.toml | 2 +- recipes/wip/recorders/gpu-screen-recorder/recipe.toml | 4 ++-- recipes/wip/services/pipewire/recipe.toml | 5 +++-- recipes/wip/services/seatd/recipe.toml | 5 +++-- recipes/wip/services/wireplumber/recipe.toml | 5 +++-- recipes/wip/sound/mousai/recipe.toml | 4 ++-- recipes/wip/sound/pulseaudio/recipe.toml | 11 +++++++---- 11 files changed, 38 insertions(+), 29 deletions(-) delete mode 100644 recipes/wip/net/other/warp/recipe.toml create mode 100644 recipes/wip/net/sharing/warp/recipe.toml diff --git a/recipes/wip/net/other/varia/recipe.toml b/recipes/wip/net/other/varia/recipe.toml index 4313ea73..2c03f083 100644 --- a/recipes/wip/net/other/varia/recipe.toml +++ b/recipes/wip/net/other/varia/recipe.toml @@ -1,6 +1,8 @@ -#TODO missing script for Meson, see https://github.com/giantpinkrobots/varia#building -#TODO probably missing dependencies +#TODO not compiled or tested +# build instructions: https://github.com/giantpinkrobots/varia#building +# probably missing dependencies [source] git = "https://github.com/giantpinkrobots/varia" +rev = "515bef5536b4947b3ae8dd3c23b7643ea590d73c" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/net/other/warp/recipe.toml b/recipes/wip/net/other/warp/recipe.toml deleted file mode 100644 index 5efe91cb..00000000 --- a/recipes/wip/net/other/warp/recipe.toml +++ /dev/null @@ -1,6 +0,0 @@ -#TODO missing script for Meson, see https://gitlab.gnome.org/World/warp#meson -[source] -git = "https://gitlab.gnome.org/World/warp" -rev = "1daa60691aa1a697acaff55450dcccb085023fc7" -[build] -template = "custom" diff --git a/recipes/wip/net/sharing/warp/recipe.toml b/recipes/wip/net/sharing/warp/recipe.toml new file mode 100644 index 00000000..797f8b4d --- /dev/null +++ b/recipes/wip/net/sharing/warp/recipe.toml @@ -0,0 +1,7 @@ +#TODO not compiled or tested +# build instructions: https://gitlab.gnome.org/World/warp#meson +[source] +git = "https://gitlab.gnome.org/World/warp" +rev = "1daa60691aa1a697acaff55450dcccb085023fc7" +[build] +template = "meson" diff --git a/recipes/wip/players/mpv/recipe.toml b/recipes/wip/players/mpv/recipe.toml index b3068129..f036ba6b 100644 --- a/recipes/wip/players/mpv/recipe.toml +++ b/recipes/wip/players/mpv/recipe.toml @@ -1,11 +1,11 @@ -#TODO missing script for Meson (use system libraries), see https://github.com/mpv-player/mpv#compilation -#TODO port to orbital +#TODO not compiled or tested +# build instructions: https://github.com/mpv-player/mpv#compilation #TODO missing dependencies [source] git = "https://github.com/mpv-player/mpv" -rev = "818ce7c51a6b9179307950e919983e0909942098" +rev = "e48ac7ce08462f5e33af6ef9deeac6fa87eef01e" [build] -template = "custom" +template = "meson" dependencies = [ "ffmpeg6", "libass", @@ -13,5 +13,5 @@ dependencies = [ "libiconv", "zlib", "mesa", - "pulseaudio", + "sdl2", ] diff --git a/recipes/wip/recorders/gpu-screen-recorder-gtk/recipe.toml b/recipes/wip/recorders/gpu-screen-recorder-gtk/recipe.toml index c2fc5c68..e37a5938 100644 --- a/recipes/wip/recorders/gpu-screen-recorder-gtk/recipe.toml +++ b/recipes/wip/recorders/gpu-screen-recorder-gtk/recipe.toml @@ -3,7 +3,7 @@ git = "https://git.dec05eba.com/gpu-screen-recorder-gtk" rev = "7fb7608b720068d3c114330e8d274b04ef310cf2" [build] -template = "custom" +template = "meson" dependencies = [ "gtk3", "libx11", diff --git a/recipes/wip/recorders/gpu-screen-recorder/recipe.toml b/recipes/wip/recorders/gpu-screen-recorder/recipe.toml index 7c43efed..ebe10465 100644 --- a/recipes/wip/recorders/gpu-screen-recorder/recipe.toml +++ b/recipes/wip/recorders/gpu-screen-recorder/recipe.toml @@ -1,9 +1,9 @@ -#TODO missing script for meson +#TODO not compiled or tested [source] git = "https://git.dec05eba.com/gpu-screen-recorder" rev = "422f214283ba50649acca4d9b5a9778d313fe05b" [build] -template = "custom" +template = "meson" dependencies = [ "mesa", "libvulkan", diff --git a/recipes/wip/services/pipewire/recipe.toml b/recipes/wip/services/pipewire/recipe.toml index d23a5eaa..9e42dc40 100644 --- a/recipes/wip/services/pipewire/recipe.toml +++ b/recipes/wip/services/pipewire/recipe.toml @@ -1,6 +1,7 @@ -#TODO missing script for Meson, see https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/INSTALL.md +#TODO not compiled or tested +# build instructions: https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/INSTALL.md [source] git = "https://gitlab.freedesktop.org/pipewire/pipewire" rev = "4debdcd40b055b3eaa83a8f4443aa990ea566bfe" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/services/seatd/recipe.toml b/recipes/wip/services/seatd/recipe.toml index b3731c24..65b6f5cd 100644 --- a/recipes/wip/services/seatd/recipe.toml +++ b/recipes/wip/services/seatd/recipe.toml @@ -1,6 +1,7 @@ -#TODO missing script for Meson, lacking build instructions +#TODO not compiled or tested +# lacking build instructions [source] git = "https://git.sr.ht/~kennylevinsen/seatd" rev = "3e9ef69f14f630a719dd464f3c90a7932f1c8296" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/services/wireplumber/recipe.toml b/recipes/wip/services/wireplumber/recipe.toml index 34a5804f..cbac08ad 100644 --- a/recipes/wip/services/wireplumber/recipe.toml +++ b/recipes/wip/services/wireplumber/recipe.toml @@ -1,9 +1,10 @@ -#TODO missing script for Meson, see https://pipewire.pages.freedesktop.org/wireplumber/installing-wireplumber.html +#TODO not compiled or tested +# build instructions: https://pipewire.pages.freedesktop.org/wireplumber/installing-wireplumber.html [source] git = "https://gitlab.freedesktop.org/pipewire/wireplumber" rev = "d3eb77b292655cef333a8f4cab4e861415bc37c2" [build] -template = "custom" +template = "meson" dependencies = [ "pipewire", "glib", diff --git a/recipes/wip/sound/mousai/recipe.toml b/recipes/wip/sound/mousai/recipe.toml index 034a5dfe..69ff17d4 100644 --- a/recipes/wip/sound/mousai/recipe.toml +++ b/recipes/wip/sound/mousai/recipe.toml @@ -1,8 +1,8 @@ -#TODO missing script for meson +#TODO not compiled or tested [source] git = "https://github.com/SeaDve/Mousai" [build] -template = "custom" +template = "meson" dependencies = [ "glib", "gtk4", diff --git a/recipes/wip/sound/pulseaudio/recipe.toml b/recipes/wip/sound/pulseaudio/recipe.toml index 1fe3b86f..40a962cd 100644 --- a/recipes/wip/sound/pulseaudio/recipe.toml +++ b/recipes/wip/sound/pulseaudio/recipe.toml @@ -1,12 +1,15 @@ -#TODO missing script for Meson, see https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/Developer/PulseAudioFromGit/ -#TODO only build the library and disable the daemon in favor of PipeWire, see https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/INSTALL.md#pulseaudio-replacement +#TODO not compiled or tested +# build instructions: https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/Developer/PulseAudioFromGit/ [source] tar = "https://freedesktop.org/software/pulseaudio/releases/pulseaudio-17.0.tar.xz" [build] -template = "custom" +template = "meson" +mesonflags = [ + "-Ddaemon=false" +] dependencies = [ "libsndfile", - "libatomic_ops", + "libatomic-ops", "speexdsp", "libtool", "json-c", From 613f94df81df0f8d6e6dd5ab7efe4ae6656bc811 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 13 Oct 2025 17:16:37 -0300 Subject: [PATCH 2934/3180] Rename pulseaudio recipe --- recipes/wip/sound/{pulseaudio => libpulse}/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/sound/{pulseaudio => libpulse}/recipe.toml (100%) diff --git a/recipes/wip/sound/pulseaudio/recipe.toml b/recipes/wip/sound/libpulse/recipe.toml similarity index 100% rename from recipes/wip/sound/pulseaudio/recipe.toml rename to recipes/wip/sound/libpulse/recipe.toml From e49004a3431d5b09bdfa45dcd792ee8e0e972891 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 13 Oct 2025 17:18:49 -0300 Subject: [PATCH 2935/3180] Remove audio-sharing recipe --- recipes/wip/sound/audio-sharing/recipe.toml | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 recipes/wip/sound/audio-sharing/recipe.toml diff --git a/recipes/wip/sound/audio-sharing/recipe.toml b/recipes/wip/sound/audio-sharing/recipe.toml deleted file mode 100644 index 48603b87..00000000 --- a/recipes/wip/sound/audio-sharing/recipe.toml +++ /dev/null @@ -1,12 +0,0 @@ -#TODO missing script for meson -# build instructions - https://gitlab.gnome.org/World/AudioSharing#building-it-manually -[source] -git = "https://gitlab.gnome.org/World/AudioSharing" -[build] -template = "custom" -dependencies = [ - "gtk4", - "glib", - "libadwaita", - "gstreamer", -] From 9a7c7983cdf927ab2aac4d1b3d2f28020e73903c Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 14 Oct 2025 09:56:38 -0300 Subject: [PATCH 2936/3180] Move WIP ssh recipe category to net --- recipes/wip/{ => net}/ssh/dropbear/recipe.toml | 0 recipes/wip/{ => net}/ssh/fastssh/recipe.toml | 0 recipes/wip/{ => net}/ssh/mosh/recipe.toml | 0 recipes/wip/{ => net}/ssh/russh/recipe.toml | 0 recipes/wip/{ => net}/ssh/sshfs/recipe.toml | 0 recipes/wip/{ => net}/ssh/sshs/recipe.toml | 0 recipes/wip/{ => net}/ssh/sshx/recipe.toml | 0 7 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{ => net}/ssh/dropbear/recipe.toml (100%) rename recipes/wip/{ => net}/ssh/fastssh/recipe.toml (100%) rename recipes/wip/{ => net}/ssh/mosh/recipe.toml (100%) rename recipes/wip/{ => net}/ssh/russh/recipe.toml (100%) rename recipes/wip/{ => net}/ssh/sshfs/recipe.toml (100%) rename recipes/wip/{ => net}/ssh/sshs/recipe.toml (100%) rename recipes/wip/{ => net}/ssh/sshx/recipe.toml (100%) diff --git a/recipes/wip/ssh/dropbear/recipe.toml b/recipes/wip/net/ssh/dropbear/recipe.toml similarity index 100% rename from recipes/wip/ssh/dropbear/recipe.toml rename to recipes/wip/net/ssh/dropbear/recipe.toml diff --git a/recipes/wip/ssh/fastssh/recipe.toml b/recipes/wip/net/ssh/fastssh/recipe.toml similarity index 100% rename from recipes/wip/ssh/fastssh/recipe.toml rename to recipes/wip/net/ssh/fastssh/recipe.toml diff --git a/recipes/wip/ssh/mosh/recipe.toml b/recipes/wip/net/ssh/mosh/recipe.toml similarity index 100% rename from recipes/wip/ssh/mosh/recipe.toml rename to recipes/wip/net/ssh/mosh/recipe.toml diff --git a/recipes/wip/ssh/russh/recipe.toml b/recipes/wip/net/ssh/russh/recipe.toml similarity index 100% rename from recipes/wip/ssh/russh/recipe.toml rename to recipes/wip/net/ssh/russh/recipe.toml diff --git a/recipes/wip/ssh/sshfs/recipe.toml b/recipes/wip/net/ssh/sshfs/recipe.toml similarity index 100% rename from recipes/wip/ssh/sshfs/recipe.toml rename to recipes/wip/net/ssh/sshfs/recipe.toml diff --git a/recipes/wip/ssh/sshs/recipe.toml b/recipes/wip/net/ssh/sshs/recipe.toml similarity index 100% rename from recipes/wip/ssh/sshs/recipe.toml rename to recipes/wip/net/ssh/sshs/recipe.toml diff --git a/recipes/wip/ssh/sshx/recipe.toml b/recipes/wip/net/ssh/sshx/recipe.toml similarity index 100% rename from recipes/wip/ssh/sshx/recipe.toml rename to recipes/wip/net/ssh/sshx/recipe.toml From 5370a0bd1f543f7340eb95fa153dacb9f6a11db3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 14 Oct 2025 11:09:28 -0300 Subject: [PATCH 2937/3180] Try to fix more Meson-based recipes --- recipes/wip/libs/other/appstream/recipe.toml | 13 +++++++++++++ recipes/wip/net/ssh/sshfs/recipe.toml | 5 +++-- .../wip/sys-info/mission-center/recipe.toml | 11 +++++++---- recipes/wip/text/rnote/recipe.toml | 10 ++++------ recipes/wip/tools/flowtime/recipe.toml | 5 +++-- recipes/wip/tools/mangohud/recipe.toml | 18 ++++++++++++------ recipes/wip/tools/spidey/recipe.toml | 8 ++++++-- recipes/wip/tools/tauro-monitor/recipe.toml | 5 +++-- 8 files changed, 51 insertions(+), 24 deletions(-) create mode 100644 recipes/wip/libs/other/appstream/recipe.toml diff --git a/recipes/wip/libs/other/appstream/recipe.toml b/recipes/wip/libs/other/appstream/recipe.toml new file mode 100644 index 00000000..2508aa9f --- /dev/null +++ b/recipes/wip/libs/other/appstream/recipe.toml @@ -0,0 +1,13 @@ +#TODO not compiled or tested +# build instructions: https://github.com/ximion/appstream#build--install +#TODO missing dependencies +[source] +tar = "https://www.freedesktop.org/software/appstream/releases/AppStream-1.1.1.tar.xz" +[build] +template = "meson" +dependencies = [ + "glib", + "gobject-introspection", + "libxml2", + "curl", +] diff --git a/recipes/wip/net/ssh/sshfs/recipe.toml b/recipes/wip/net/ssh/sshfs/recipe.toml index 4e45b6b0..aa97842e 100644 --- a/recipes/wip/net/ssh/sshfs/recipe.toml +++ b/recipes/wip/net/ssh/sshfs/recipe.toml @@ -1,8 +1,9 @@ -#TODO missing script for Meson, see https://github.com/libfuse/sshfs#installation +#TODO not compiled or tested +# build instructions: https://github.com/libfuse/sshfs#installation [source] tar = "https://github.com/libfuse/sshfs/releases/download/sshfs-3.7.3/sshfs-3.7.3.tar.xz" [build] -template = "custom" +template = "meson" dependencies = [ "libfuse3", "glib", diff --git a/recipes/wip/sys-info/mission-center/recipe.toml b/recipes/wip/sys-info/mission-center/recipe.toml index 4016ee5c..d5f56bee 100644 --- a/recipes/wip/sys-info/mission-center/recipe.toml +++ b/recipes/wip/sys-info/mission-center/recipe.toml @@ -1,11 +1,14 @@ -#TODO missing script for meson -#TODO missing dependencies -# build instructions - https://gitlab.com/mission-center-devs/mission-center#building---native +#TODO not compiled or tested +# build instructions: https://gitlab.com/mission-center-devs/mission-center#building---native +#TODO patch to disable libgbm [source] git = "https://gitlab.com/mission-center-devs/mission-center" [build] -template = "custom" +template = "meson" dependencies = [ "gtk4", "libadwaita", + "eudev", + "libdrm", + "dbus", ] diff --git a/recipes/wip/text/rnote/recipe.toml b/recipes/wip/text/rnote/recipe.toml index c17b2430..1080f336 100644 --- a/recipes/wip/text/rnote/recipe.toml +++ b/recipes/wip/text/rnote/recipe.toml @@ -1,16 +1,14 @@ #TODO not compiled or tested -# build instructions - https://github.com/flxzt/rnote/blob/main/BUILDING.md#build-with-meson +# build instructions: https://github.com/flxzt/rnote/blob/main/BUILDING.md#build-with-meson [source] git = "https://github.com/flxzt/rnote" [build] -template = "custom" +template = "meson" dependencies = [ + "gtk4", "glib", "libadwaita", - "glib", "libalsa", "libpoppler", + "appstream", ] -script = """ -cookbook_cargo_packages rnote -""" diff --git a/recipes/wip/tools/flowtime/recipe.toml b/recipes/wip/tools/flowtime/recipe.toml index abd3eda5..efbc1e5f 100644 --- a/recipes/wip/tools/flowtime/recipe.toml +++ b/recipes/wip/tools/flowtime/recipe.toml @@ -1,9 +1,10 @@ -#TODO missing script for Meson, see https://github.com/Diego-Ivan/Flowtime#building-from-source +#TODO not compiled or tested +# build instructions: https://github.com/Diego-Ivan/Flowtime#building-from-source [source] git = "https://github.com/Diego-Ivan/Flowtime" rev = "2cb1160f7f61ec0a6add292deca38a3150336f03" [build] -template = "custom" +template = "meson" dependencies = [ "gtk4", "libxml2", diff --git a/recipes/wip/tools/mangohud/recipe.toml b/recipes/wip/tools/mangohud/recipe.toml index 83480f5a..96db3c62 100644 --- a/recipes/wip/tools/mangohud/recipe.toml +++ b/recipes/wip/tools/mangohud/recipe.toml @@ -1,9 +1,15 @@ -#TODO missing script for Meson, see https://github.com/flightlessmango/MangoHud#installation---build-from-source -#TODO port to orbital +#TODO not compiled or tested +# build instructions: https://github.com/flightlessmango/MangoHud#installation---build-from-source [source] -tar = "https://github.com/flightlessmango/MangoHud/releases/download/v0.7.0/MangoHud-v0.7.0-Source.tar.xz" +tar = "https://github.com/flightlessmango/MangoHud/releases/download/v0.8.1/MangoHud-v0.8.1-Source.tar.xz" [build] -template = "custom" -dependencies = [ - "mesa", +template = "meson" +mesonflags = [ + "-Dwith_xnvctrl=disabled", + "-Dwith_dbus=disabled", +] +dependencies = [ + "mesa-x11", + "libx11", + #"libxkbcommon", ] diff --git a/recipes/wip/tools/spidey/recipe.toml b/recipes/wip/tools/spidey/recipe.toml index 2dcb31af..58f4aa50 100644 --- a/recipes/wip/tools/spidey/recipe.toml +++ b/recipes/wip/tools/spidey/recipe.toml @@ -1,5 +1,9 @@ -#TODO needs to determine the build method (Cargo or Meson) +#TODO not compiled or tested [source] git = "https://github.com/kdwk/Spidey" [build] -template = "custom" +template = "meson" +dependencies = [ + "gtk4", + "glib", +] diff --git a/recipes/wip/tools/tauro-monitor/recipe.toml b/recipes/wip/tools/tauro-monitor/recipe.toml index 3ed900d7..d04ef7ef 100644 --- a/recipes/wip/tools/tauro-monitor/recipe.toml +++ b/recipes/wip/tools/tauro-monitor/recipe.toml @@ -1,6 +1,7 @@ -#TODO missing script for Meson, lacking installation instructions +#TODO not compiled or tested +# lacking build instructions [source] git = "https://github.com/taunoe/tauno-monitor" rev = "fecab98710bf6918141f34709f4ee1a055413056" [build] -template = "custom" +template = "meson" From 961f20813e1e454ccbea94ec977dfc53123f475e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 14 Oct 2025 11:10:17 -0300 Subject: [PATCH 2938/3180] Fix the tauro-monitor recipe name --- recipes/wip/tools/{tauro-monitor => tauno-monitor}/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/tools/{tauro-monitor => tauno-monitor}/recipe.toml (100%) diff --git a/recipes/wip/tools/tauro-monitor/recipe.toml b/recipes/wip/tools/tauno-monitor/recipe.toml similarity index 100% rename from recipes/wip/tools/tauro-monitor/recipe.toml rename to recipes/wip/tools/tauno-monitor/recipe.toml From 6e3caa13a178b6bc0e0b9698433fb4b4ae4419af Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 14 Oct 2025 12:07:45 -0300 Subject: [PATCH 2939/3180] Try to fix more Meson-based recipes --- recipes/wip/video/editors/pitivi/recipe.toml | 5 +++-- recipes/wip/video/webcam/cheese/recipe.toml | 16 +++++++++++++--- recipes/wip/vm/libvirt/recipe.toml | 6 +++--- recipes/wip/wayland/sway/recipe.toml | 5 +++-- recipes/wip/wayland/wayland-utils/recipe.toml | 5 +++-- recipes/wip/wayland/wlroots/recipe.toml | 5 +++-- recipes/wip/wayland/xwayland/recipe.toml | 2 +- recipes/wip/x11/libglvnd/recipe.toml | 6 +----- 8 files changed, 30 insertions(+), 20 deletions(-) diff --git a/recipes/wip/video/editors/pitivi/recipe.toml b/recipes/wip/video/editors/pitivi/recipe.toml index 35bbf8a5..0f6ac0d1 100644 --- a/recipes/wip/video/editors/pitivi/recipe.toml +++ b/recipes/wip/video/editors/pitivi/recipe.toml @@ -1,8 +1,9 @@ -#TODO missing script for Meson, lacking build instructions +#TODO not compiled or tested +# lacking build instructions [source] tar = "https://download.gnome.org/sources/pitivi/2023/pitivi-2023.03.tar.xz" [build] -template = "custom" +template = "meson" dependencies = [ "gtk3", "gstreamer", diff --git a/recipes/wip/video/webcam/cheese/recipe.toml b/recipes/wip/video/webcam/cheese/recipe.toml index 8866dea1..dd758e26 100644 --- a/recipes/wip/video/webcam/cheese/recipe.toml +++ b/recipes/wip/video/webcam/cheese/recipe.toml @@ -1,6 +1,16 @@ -#TODO missing script for Meson, see https://gitlab.gnome.org/GNOME/cheese -#TODO maybe need GStreamer as dependency +#TODO not compiled or tested +# lacking build instructions: https://gitlab.gnome.org/GNOME/cheese/-/blob/master/meson.build +# missing dependencies [source] tar = "https://download.gnome.org/sources/cheese/44/cheese-44.1.tar.xz" [build] -template = "custom" +template = "meson" +mesonflags = [ + "-Dgtk_doc=false" +] +dependencies = [ + "gtk3", + "glib", + "gdk-pixbuf", + "gstreamer", +] diff --git a/recipes/wip/vm/libvirt/recipe.toml b/recipes/wip/vm/libvirt/recipe.toml index c0546914..c544bea8 100644 --- a/recipes/wip/vm/libvirt/recipe.toml +++ b/recipes/wip/vm/libvirt/recipe.toml @@ -1,6 +1,6 @@ -#TODO missing script for meson -# build instructions - https://libvirt.org/compiling.html#configuring-the-project +#TODO not compiled or tested +# build instructions: https://libvirt.org/compiling.html#configuring-the-project [source] tar = "https://download.libvirt.org/libvirt-10.7.0.tar.xz" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/wayland/sway/recipe.toml b/recipes/wip/wayland/sway/recipe.toml index bbfaf68d..7107dc3d 100644 --- a/recipes/wip/wayland/sway/recipe.toml +++ b/recipes/wip/wayland/sway/recipe.toml @@ -1,8 +1,9 @@ -#TODO missing script for Meson, see https://github.com/swaywm/sway#compiling-from-source +#TODO not compiled or tested +# build instructions: https://github.com/swaywm/sway#compiling-from-source [source] tar = "https://github.com/swaywm/sway/releases/download/1.8.1/sway-1.8.1.tar.gz" [build] -template = "custom" +template = "meson" dependencies = [ "wlroots", "libwayland", diff --git a/recipes/wip/wayland/wayland-utils/recipe.toml b/recipes/wip/wayland/wayland-utils/recipe.toml index bcfeb935..fa94decf 100644 --- a/recipes/wip/wayland/wayland-utils/recipe.toml +++ b/recipes/wip/wayland/wayland-utils/recipe.toml @@ -1,5 +1,6 @@ -#TODO missing script for Meson, see https://gitlab.freedesktop.org/wayland/wayland-utils#building +#TODO not compiled or tested +# build instructions: https://gitlab.freedesktop.org/wayland/wayland-utils#building [source] tar = "https://gitlab.freedesktop.org/wayland/wayland-utils/-/releases/1.2.0/downloads/wayland-utils-1.2.0.tar.xz" [build] -template = "custom" +template = "meson" diff --git a/recipes/wip/wayland/wlroots/recipe.toml b/recipes/wip/wayland/wlroots/recipe.toml index e52475e5..ba65fb02 100644 --- a/recipes/wip/wayland/wlroots/recipe.toml +++ b/recipes/wip/wayland/wlroots/recipe.toml @@ -1,8 +1,9 @@ -#TODO missing script for Meson, see https://gitlab.freedesktop.org/wlroots/wlroots#building +#TODO not compiled or tested +# build instructions: https://gitlab.freedesktop.org/wlroots/wlroots#building [source] tar = "https://gitlab.freedesktop.org/wlroots/wlroots/-/releases/0.17.0/downloads/wlroots-0.17.0.tar.gz" [build] -template = "custom" +template = "meson" dependencies = [ "libwayland", "libxcb", diff --git a/recipes/wip/wayland/xwayland/recipe.toml b/recipes/wip/wayland/xwayland/recipe.toml index d7ed31b6..af1cf422 100644 --- a/recipes/wip/wayland/xwayland/recipe.toml +++ b/recipes/wip/wayland/xwayland/recipe.toml @@ -34,5 +34,5 @@ mesonflags = [ "-Dglamor=false", "-Dglx=false", "-Dsecure-rpc=false", - "-Dmitshm=false" + "-Dmitshm=false", ] diff --git a/recipes/wip/x11/libglvnd/recipe.toml b/recipes/wip/x11/libglvnd/recipe.toml index c2ac4a82..46ca86c6 100644 --- a/recipes/wip/x11/libglvnd/recipe.toml +++ b/recipes/wip/x11/libglvnd/recipe.toml @@ -11,8 +11,4 @@ dependencies = [ "libxext", "x11proto", ] -template = "custom" -script = """ -DYNAMIC_INIT -cookbook_meson -""" +template = "meson" From 33e46babc4be2a39b9b91be05fd4e1a907e695c9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 14 Oct 2025 12:09:14 -0300 Subject: [PATCH 2940/3180] Add initial easyp recipe script --- recipes/wip/net/http/easyp/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/wip/net/http/easyp/recipe.toml b/recipes/wip/net/http/easyp/recipe.toml index 8c18697e..12dfb766 100644 --- a/recipes/wip/net/http/easyp/recipe.toml +++ b/recipes/wip/net/http/easyp/recipe.toml @@ -4,3 +4,6 @@ git = "https://github.com/gmatht/easyp-crate" [build] template = "custom" +script = """ +cookbook_cargo +""" From 8d5a3e4ebacec4779ddf3f29a78831b9c006afb9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 14 Oct 2025 12:31:31 -0300 Subject: [PATCH 2941/3180] Remove the duplicated xorgproto recipe --- recipes/wip/x11/xorgproto/recipe.toml | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 recipes/wip/x11/xorgproto/recipe.toml diff --git a/recipes/wip/x11/xorgproto/recipe.toml b/recipes/wip/x11/xorgproto/recipe.toml deleted file mode 100644 index 2d62b819..00000000 --- a/recipes/wip/x11/xorgproto/recipe.toml +++ /dev/null @@ -1,4 +0,0 @@ -[source] -tar = "https://www.x.org/archive/individual/proto/xorgproto-2024.1.tar.xz" -[build] -template = "meson" From d9c8afb9695cc84dd63bc9a1c0e1d1963fbfd656 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 14 Oct 2025 12:39:47 -0300 Subject: [PATCH 2942/3180] Fix a xwayland recipe dependency --- recipes/wip/wayland/xwayland/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/wayland/xwayland/recipe.toml b/recipes/wip/wayland/xwayland/recipe.toml index af1cf422..3ac342a5 100644 --- a/recipes/wip/wayland/xwayland/recipe.toml +++ b/recipes/wip/wayland/xwayland/recipe.toml @@ -14,7 +14,7 @@ dependencies = [ "libffi", "libpng", "pixman", - "xorgproto", + "x11proto", "xtrans", "libxau", "libx11", From 38ce4b75f3bcd49f543df04805bcaceea9fe7f4d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Tue, 14 Oct 2025 12:45:47 -0300 Subject: [PATCH 2943/3180] Update webkitgtk3 recipe TODO --- recipes/wip/libs/other/webkitgtk3/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/libs/other/webkitgtk3/recipe.toml b/recipes/wip/libs/other/webkitgtk3/recipe.toml index 00ce81f6..09261153 100644 --- a/recipes/wip/libs/other/webkitgtk3/recipe.toml +++ b/recipes/wip/libs/other/webkitgtk3/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing dependencies, see https://archlinux.org/packages/extra/x86_64/webkitgtk-6.0/ +#TODO runtime hangs [source] tar = "https://webkitgtk.org/releases/webkitgtk-2.49.1.tar.xz" blake3 = "7f04acb2f909ad334fc623afb297ebca1d5a5005bda1682946fb37e044e45ecb" From b5ddafcd635778e8869bed3c9d830517a66388d6 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 15 Oct 2025 18:19:46 -0300 Subject: [PATCH 2944/3180] Try to fix recipes and update TODOs --- recipes/wip/dev/other/crates-tui/recipe.toml | 2 +- .../wip/emulators/game-console/gameboy/gameroy/recipe.toml | 2 +- recipes/wip/emulators/game-console/psp/ppsspp/recipe.toml | 2 +- recipes/wip/games/fps/vkquake2/recipe.toml | 4 ++-- recipes/wip/graphics/other/glou/recipe.toml | 2 +- recipes/wip/graphics/other/oculante/recipe.toml | 4 +++- recipes/wip/libs/gtk/gtk2/recipe.toml | 5 +++-- recipes/wip/libs/gtk/gtk3/recipe.toml | 2 +- recipes/wip/libs/other/libdecor/recipe.toml | 6 ++---- recipes/wip/libs/qt4/recipe.toml | 3 +-- 10 files changed, 16 insertions(+), 16 deletions(-) diff --git a/recipes/wip/dev/other/crates-tui/recipe.toml b/recipes/wip/dev/other/crates-tui/recipe.toml index 6a37b770..f7ded8dd 100644 --- a/recipes/wip/dev/other/crates-tui/recipe.toml +++ b/recipes/wip/dev/other/crates-tui/recipe.toml @@ -1,4 +1,4 @@ -#TODO port to the Orbital clipboard +#TODO not compiled or tested [source] git = "https://github.com/ratatui-org/crates-tui" [build] diff --git a/recipes/wip/emulators/game-console/gameboy/gameroy/recipe.toml b/recipes/wip/emulators/game-console/gameboy/gameroy/recipe.toml index aa26a7ca..004d06dc 100644 --- a/recipes/wip/emulators/game-console/gameboy/gameroy/recipe.toml +++ b/recipes/wip/emulators/game-console/gameboy/gameroy/recipe.toml @@ -1,4 +1,4 @@ -#TODO port to Orbital +#TODO not compiled or tested [source] git = "https://github.com/Rodrigodd/gameroy" [build] diff --git a/recipes/wip/emulators/game-console/psp/ppsspp/recipe.toml b/recipes/wip/emulators/game-console/psp/ppsspp/recipe.toml index b8d6a00c..a4a3fc1a 100644 --- a/recipes/wip/emulators/game-console/psp/ppsspp/recipe.toml +++ b/recipes/wip/emulators/game-console/psp/ppsspp/recipe.toml @@ -1,6 +1,6 @@ #TODO not compiled or tested yet # build instructions: https://github.com/hrydgard/ppsspp/wiki/Build-instructions -#git = "https://github.com/jackpot51/ppsspp" # wip port to orbital +#git = "https://github.com/jackpot51/ppsspp" # wip orbital port [source] git = "https://github.com/hrydgard/ppsspp" [build] diff --git a/recipes/wip/games/fps/vkquake2/recipe.toml b/recipes/wip/games/fps/vkquake2/recipe.toml index 705d821f..982a96e3 100644 --- a/recipes/wip/games/fps/vkquake2/recipe.toml +++ b/recipes/wip/games/fps/vkquake2/recipe.toml @@ -1,5 +1,5 @@ -#TODO missing script for "make", see https://github.com/kondrak/vkQuake2#linux -#TODO port to orbital +#TODO missing script for gnu make +# build instructions: https://github.com/kondrak/vkQuake2#linux [source] git = "https://github.com/kondrak/vkQuake2" rev = "bdd39b142fbadf581fd9d904968a83fb9b4a929a" diff --git a/recipes/wip/graphics/other/glou/recipe.toml b/recipes/wip/graphics/other/glou/recipe.toml index dd3e9ea2..578130de 100644 --- a/recipes/wip/graphics/other/glou/recipe.toml +++ b/recipes/wip/graphics/other/glou/recipe.toml @@ -1,4 +1,4 @@ -#TODO port to orbital +#TODO not compiled or tested [source] git = "https://github.com/Nurrl/glou" [build] diff --git a/recipes/wip/graphics/other/oculante/recipe.toml b/recipes/wip/graphics/other/oculante/recipe.toml index 72e854d0..7df3c88f 100644 --- a/recipes/wip/graphics/other/oculante/recipe.toml +++ b/recipes/wip/graphics/other/oculante/recipe.toml @@ -1,8 +1,10 @@ -#TODO needs to be ported to Orbital +#TODO not compiled or tested [source] git = "https://github.com/woelper/oculante" [build] template = "cargo" dependencies = [ "gtk3", + "libxcb", + "libalsa", ] diff --git a/recipes/wip/libs/gtk/gtk2/recipe.toml b/recipes/wip/libs/gtk/gtk2/recipe.toml index 679afcd0..306a084d 100644 --- a/recipes/wip/libs/gtk/gtk2/recipe.toml +++ b/recipes/wip/libs/gtk/gtk2/recipe.toml @@ -1,10 +1,11 @@ -#TODO probably missing dependencies -#TODO port to orbital +#TODO not compiled or tested +# build instructions: https://gitlab.gnome.org/GNOME/gtk/-/blob/gtk-2-24/INSTALL.in [source] tar = "https://download.gnome.org/sources/gtk%2B/2.24/gtk%2B-2.24.33.tar.xz" [build] template = "configure" dependencies = [ + "atk", "glib", "pango", "gdk-pixbuf", diff --git a/recipes/wip/libs/gtk/gtk3/recipe.toml b/recipes/wip/libs/gtk/gtk3/recipe.toml index da231091..c268a354 100644 --- a/recipes/wip/libs/gtk/gtk3/recipe.toml +++ b/recipes/wip/libs/gtk/gtk3/recipe.toml @@ -1,4 +1,4 @@ -#TODO port to orbital +#TODO promote [source] tar = "https://download.gnome.org/sources/gtk+/3.24/gtk%2B-3.24.43.tar.xz" blake3 = "5feab2bad81e6b5906895f70ddce6227cf96a6a14b16af0ef72c79991a48ddf4" diff --git a/recipes/wip/libs/other/libdecor/recipe.toml b/recipes/wip/libs/other/libdecor/recipe.toml index 9b11512f..75aad337 100644 --- a/recipes/wip/libs/other/libdecor/recipe.toml +++ b/recipes/wip/libs/other/libdecor/recipe.toml @@ -1,12 +1,10 @@ #TODO not compiled or tested -# build instructions: https://gitlab.freedesktop.org/libdecor/libdecor#build-install -#TODO port to orbital +# build instructions: https://gitlab.freedesktop.org/libdecor/libdecor#build--install [source] tar = "https://gitlab.freedesktop.org/libdecor/libdecor/uploads/ee5ef0f2c3a4743e8501a855d61cb397/libdecor-0.1.1.tar.xz" [build] template = "meson" dependencies = [ - "cairo", "pango", - "dbus", + "libwayland", ] diff --git a/recipes/wip/libs/qt4/recipe.toml b/recipes/wip/libs/qt4/recipe.toml index 92e1abe5..b45036ec 100644 --- a/recipes/wip/libs/qt4/recipe.toml +++ b/recipes/wip/libs/qt4/recipe.toml @@ -1,5 +1,4 @@ -#TODO find a tarball link -#TODO port to Orbital +#TODO not compiled or tested [source] tar = "http://download.qt.io/official_releases/qt/4.8/4.8.7/qt-everywhere-opensource-src-4.8.7.tar.gz" [build] From 664b043881cdc19876b4b9d6daef73de55a8f971 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 15 Oct 2025 18:27:32 -0300 Subject: [PATCH 2945/3180] Move WIP recipes --- .../emulators/game-console/{nintendo => }/dolphin-emu/recipe.toml | 0 .../emulators/game-console/{arcade => }/finalburn-neo/recipe.toml | 0 recipes/wip/emulators/game-console/{n64 => }/gopher64/recipe.toml | 0 .../wip/emulators/game-console/{nintendo => }/lime3ds/recipe.toml | 0 recipes/wip/emulators/game-console/{arcade => }/mame/recipe.toml | 0 recipes/wip/emulators/game-console/{nds => }/melonds/recipe.toml | 0 .../wip/emulators/game-console/{nintendo => }/meru/recipe.toml | 0 .../emulators/game-console/{n64 => }/mupen64plus-core/recipe.toml | 0 .../wip/emulators/game-console/{ps4 => }/obliteration/recipe.toml | 0 recipes/wip/emulators/game-console/{ps2 => }/pcsx2/recipe.toml | 0 .../wip/emulators/game-console/{sega => }/picodrive/recipe.toml | 0 recipes/wip/emulators/game-console/{ps2 => }/play/recipe.toml | 0 recipes/wip/emulators/game-console/{psp => }/ppsspp/recipe.toml | 0 recipes/wip/emulators/game-console/{ps3 => }/rpcs3/recipe.toml | 0 recipes/wip/emulators/game-console/{ps4 => }/shadPS4/recipe.toml | 0 recipes/wip/emulators/game-console/{snes => }/snes9x/recipe.toml | 0 .../wip/emulators/game-console/{sega => }/uoyabause/recipe.toml | 0 .../wip/emulators/game-console/{psvita => }/vita3k/recipe.toml | 0 recipes/wip/emulators/game-console/{xbox => }/xemu/recipe.toml | 0 .../emulators/game-console/{xbox360 => }/xenia-canary/recipe.toml | 0 recipes/wip/emulators/game-console/{snes => }/zsnes/recipe.toml | 0 21 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/emulators/game-console/{nintendo => }/dolphin-emu/recipe.toml (100%) rename recipes/wip/emulators/game-console/{arcade => }/finalburn-neo/recipe.toml (100%) rename recipes/wip/emulators/game-console/{n64 => }/gopher64/recipe.toml (100%) rename recipes/wip/emulators/game-console/{nintendo => }/lime3ds/recipe.toml (100%) rename recipes/wip/emulators/game-console/{arcade => }/mame/recipe.toml (100%) rename recipes/wip/emulators/game-console/{nds => }/melonds/recipe.toml (100%) rename recipes/wip/emulators/game-console/{nintendo => }/meru/recipe.toml (100%) rename recipes/wip/emulators/game-console/{n64 => }/mupen64plus-core/recipe.toml (100%) rename recipes/wip/emulators/game-console/{ps4 => }/obliteration/recipe.toml (100%) rename recipes/wip/emulators/game-console/{ps2 => }/pcsx2/recipe.toml (100%) rename recipes/wip/emulators/game-console/{sega => }/picodrive/recipe.toml (100%) rename recipes/wip/emulators/game-console/{ps2 => }/play/recipe.toml (100%) rename recipes/wip/emulators/game-console/{psp => }/ppsspp/recipe.toml (100%) rename recipes/wip/emulators/game-console/{ps3 => }/rpcs3/recipe.toml (100%) rename recipes/wip/emulators/game-console/{ps4 => }/shadPS4/recipe.toml (100%) rename recipes/wip/emulators/game-console/{snes => }/snes9x/recipe.toml (100%) rename recipes/wip/emulators/game-console/{sega => }/uoyabause/recipe.toml (100%) rename recipes/wip/emulators/game-console/{psvita => }/vita3k/recipe.toml (100%) rename recipes/wip/emulators/game-console/{xbox => }/xemu/recipe.toml (100%) rename recipes/wip/emulators/game-console/{xbox360 => }/xenia-canary/recipe.toml (100%) rename recipes/wip/emulators/game-console/{snes => }/zsnes/recipe.toml (100%) diff --git a/recipes/wip/emulators/game-console/nintendo/dolphin-emu/recipe.toml b/recipes/wip/emulators/game-console/dolphin-emu/recipe.toml similarity index 100% rename from recipes/wip/emulators/game-console/nintendo/dolphin-emu/recipe.toml rename to recipes/wip/emulators/game-console/dolphin-emu/recipe.toml diff --git a/recipes/wip/emulators/game-console/arcade/finalburn-neo/recipe.toml b/recipes/wip/emulators/game-console/finalburn-neo/recipe.toml similarity index 100% rename from recipes/wip/emulators/game-console/arcade/finalburn-neo/recipe.toml rename to recipes/wip/emulators/game-console/finalburn-neo/recipe.toml diff --git a/recipes/wip/emulators/game-console/n64/gopher64/recipe.toml b/recipes/wip/emulators/game-console/gopher64/recipe.toml similarity index 100% rename from recipes/wip/emulators/game-console/n64/gopher64/recipe.toml rename to recipes/wip/emulators/game-console/gopher64/recipe.toml diff --git a/recipes/wip/emulators/game-console/nintendo/lime3ds/recipe.toml b/recipes/wip/emulators/game-console/lime3ds/recipe.toml similarity index 100% rename from recipes/wip/emulators/game-console/nintendo/lime3ds/recipe.toml rename to recipes/wip/emulators/game-console/lime3ds/recipe.toml diff --git a/recipes/wip/emulators/game-console/arcade/mame/recipe.toml b/recipes/wip/emulators/game-console/mame/recipe.toml similarity index 100% rename from recipes/wip/emulators/game-console/arcade/mame/recipe.toml rename to recipes/wip/emulators/game-console/mame/recipe.toml diff --git a/recipes/wip/emulators/game-console/nds/melonds/recipe.toml b/recipes/wip/emulators/game-console/melonds/recipe.toml similarity index 100% rename from recipes/wip/emulators/game-console/nds/melonds/recipe.toml rename to recipes/wip/emulators/game-console/melonds/recipe.toml diff --git a/recipes/wip/emulators/game-console/nintendo/meru/recipe.toml b/recipes/wip/emulators/game-console/meru/recipe.toml similarity index 100% rename from recipes/wip/emulators/game-console/nintendo/meru/recipe.toml rename to recipes/wip/emulators/game-console/meru/recipe.toml diff --git a/recipes/wip/emulators/game-console/n64/mupen64plus-core/recipe.toml b/recipes/wip/emulators/game-console/mupen64plus-core/recipe.toml similarity index 100% rename from recipes/wip/emulators/game-console/n64/mupen64plus-core/recipe.toml rename to recipes/wip/emulators/game-console/mupen64plus-core/recipe.toml diff --git a/recipes/wip/emulators/game-console/ps4/obliteration/recipe.toml b/recipes/wip/emulators/game-console/obliteration/recipe.toml similarity index 100% rename from recipes/wip/emulators/game-console/ps4/obliteration/recipe.toml rename to recipes/wip/emulators/game-console/obliteration/recipe.toml diff --git a/recipes/wip/emulators/game-console/ps2/pcsx2/recipe.toml b/recipes/wip/emulators/game-console/pcsx2/recipe.toml similarity index 100% rename from recipes/wip/emulators/game-console/ps2/pcsx2/recipe.toml rename to recipes/wip/emulators/game-console/pcsx2/recipe.toml diff --git a/recipes/wip/emulators/game-console/sega/picodrive/recipe.toml b/recipes/wip/emulators/game-console/picodrive/recipe.toml similarity index 100% rename from recipes/wip/emulators/game-console/sega/picodrive/recipe.toml rename to recipes/wip/emulators/game-console/picodrive/recipe.toml diff --git a/recipes/wip/emulators/game-console/ps2/play/recipe.toml b/recipes/wip/emulators/game-console/play/recipe.toml similarity index 100% rename from recipes/wip/emulators/game-console/ps2/play/recipe.toml rename to recipes/wip/emulators/game-console/play/recipe.toml diff --git a/recipes/wip/emulators/game-console/psp/ppsspp/recipe.toml b/recipes/wip/emulators/game-console/ppsspp/recipe.toml similarity index 100% rename from recipes/wip/emulators/game-console/psp/ppsspp/recipe.toml rename to recipes/wip/emulators/game-console/ppsspp/recipe.toml diff --git a/recipes/wip/emulators/game-console/ps3/rpcs3/recipe.toml b/recipes/wip/emulators/game-console/rpcs3/recipe.toml similarity index 100% rename from recipes/wip/emulators/game-console/ps3/rpcs3/recipe.toml rename to recipes/wip/emulators/game-console/rpcs3/recipe.toml diff --git a/recipes/wip/emulators/game-console/ps4/shadPS4/recipe.toml b/recipes/wip/emulators/game-console/shadPS4/recipe.toml similarity index 100% rename from recipes/wip/emulators/game-console/ps4/shadPS4/recipe.toml rename to recipes/wip/emulators/game-console/shadPS4/recipe.toml diff --git a/recipes/wip/emulators/game-console/snes/snes9x/recipe.toml b/recipes/wip/emulators/game-console/snes9x/recipe.toml similarity index 100% rename from recipes/wip/emulators/game-console/snes/snes9x/recipe.toml rename to recipes/wip/emulators/game-console/snes9x/recipe.toml diff --git a/recipes/wip/emulators/game-console/sega/uoyabause/recipe.toml b/recipes/wip/emulators/game-console/uoyabause/recipe.toml similarity index 100% rename from recipes/wip/emulators/game-console/sega/uoyabause/recipe.toml rename to recipes/wip/emulators/game-console/uoyabause/recipe.toml diff --git a/recipes/wip/emulators/game-console/psvita/vita3k/recipe.toml b/recipes/wip/emulators/game-console/vita3k/recipe.toml similarity index 100% rename from recipes/wip/emulators/game-console/psvita/vita3k/recipe.toml rename to recipes/wip/emulators/game-console/vita3k/recipe.toml diff --git a/recipes/wip/emulators/game-console/xbox/xemu/recipe.toml b/recipes/wip/emulators/game-console/xemu/recipe.toml similarity index 100% rename from recipes/wip/emulators/game-console/xbox/xemu/recipe.toml rename to recipes/wip/emulators/game-console/xemu/recipe.toml diff --git a/recipes/wip/emulators/game-console/xbox360/xenia-canary/recipe.toml b/recipes/wip/emulators/game-console/xenia-canary/recipe.toml similarity index 100% rename from recipes/wip/emulators/game-console/xbox360/xenia-canary/recipe.toml rename to recipes/wip/emulators/game-console/xenia-canary/recipe.toml diff --git a/recipes/wip/emulators/game-console/snes/zsnes/recipe.toml b/recipes/wip/emulators/game-console/zsnes/recipe.toml similarity index 100% rename from recipes/wip/emulators/game-console/snes/zsnes/recipe.toml rename to recipes/wip/emulators/game-console/zsnes/recipe.toml From 828a3237a25b820a6ebcef84f7b13d7c68bec7b3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 15 Oct 2025 19:36:17 -0300 Subject: [PATCH 2946/3180] Add recipes --- .../wip/libs/audio/libcanberra/recipe.toml | 5 +++++ recipes/wip/libs/gui/clutter-gst/recipe.toml | 12 ++++++++++++ recipes/wip/libs/gui/clutter-gtk/recipe.toml | 10 ++++++++++ recipes/wip/libs/gui/clutter/recipe.toml | 19 +++++++++++++++++++ recipes/wip/libs/gui/cogl/recipe.toml | 13 +++++++++++++ recipes/wip/tel/sms-server/recipe.toml | 5 +++++ recipes/wip/tel/sms-terminal/recipe.toml | 5 +++++ .../other/gnome-video-effects/recipe.toml | 5 +++++ recipes/wip/video/webcam/cheese/recipe.toml | 7 ++++++- 9 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 recipes/wip/libs/audio/libcanberra/recipe.toml create mode 100644 recipes/wip/libs/gui/clutter-gst/recipe.toml create mode 100644 recipes/wip/libs/gui/clutter-gtk/recipe.toml create mode 100644 recipes/wip/libs/gui/clutter/recipe.toml create mode 100644 recipes/wip/libs/gui/cogl/recipe.toml create mode 100644 recipes/wip/tel/sms-server/recipe.toml create mode 100644 recipes/wip/tel/sms-terminal/recipe.toml create mode 100644 recipes/wip/video/other/gnome-video-effects/recipe.toml diff --git a/recipes/wip/libs/audio/libcanberra/recipe.toml b/recipes/wip/libs/audio/libcanberra/recipe.toml new file mode 100644 index 00000000..6d0c6304 --- /dev/null +++ b/recipes/wip/libs/audio/libcanberra/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "http://0pointer.de/lennart/projects/libcanberra/libcanberra-0.30.tar.xz" +[build] +template = "configure" diff --git a/recipes/wip/libs/gui/clutter-gst/recipe.toml b/recipes/wip/libs/gui/clutter-gst/recipe.toml new file mode 100644 index 00000000..81b085dd --- /dev/null +++ b/recipes/wip/libs/gui/clutter-gst/recipe.toml @@ -0,0 +1,12 @@ +#TODO not compiled or tested +# build instructions: https://gitlab.gnome.org/Archive/clutter-gst/-/blob/master/INSTALL +[source] +tar = "https://download.gnome.org/sources/clutter-gst/3.0/clutter-gst-3.0.27.tar.xz" +[build] +template = "configure" +dependencies = [ + "glib", + "cogl", + "clutter", + "gstreamer", +] diff --git a/recipes/wip/libs/gui/clutter-gtk/recipe.toml b/recipes/wip/libs/gui/clutter-gtk/recipe.toml new file mode 100644 index 00000000..3f4f8581 --- /dev/null +++ b/recipes/wip/libs/gui/clutter-gtk/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +# lacking build instructions +[source] +tar = "https://download.gnome.org/sources/clutter-gtk/1.8/clutter-gtk-1.8.4.tar.xz" +[build] +template = "meson" +dependencies = [ + "clutter", + "gtk3", +] diff --git a/recipes/wip/libs/gui/clutter/recipe.toml b/recipes/wip/libs/gui/clutter/recipe.toml new file mode 100644 index 00000000..975ec92d --- /dev/null +++ b/recipes/wip/libs/gui/clutter/recipe.toml @@ -0,0 +1,19 @@ +#TODO not compiled or tested +# build instructions: https://gitlab.gnome.org/Archive/clutter#building-and-installation +[source] +tar = "https://download.gnome.org/sources/clutter/1.26/clutter-1.26.4.tar.xz" +[build] +template = "configure" +dependencies = [ + "glib", + "json-glib", + "atk", + "cairo", + "pango", + "cogl", + "libxcb", + "libxcomposite + "libxdamage", + "libxext", + "libxkbcommon", +] diff --git a/recipes/wip/libs/gui/cogl/recipe.toml b/recipes/wip/libs/gui/cogl/recipe.toml new file mode 100644 index 00000000..346d3fd0 --- /dev/null +++ b/recipes/wip/libs/gui/cogl/recipe.toml @@ -0,0 +1,13 @@ +#TODO not compiled or tested +[source] +tar = "https://download.gnome.org/sources/cogl/1.22/cogl-1.22.8.tar.xz" +[build] +template = "configure" +dependencies = [ + "mesa-x11", + "libxcomposite", + "libxdamage", + "libxext", + "libxfixes", + #"libwayland", +] diff --git a/recipes/wip/tel/sms-server/recipe.toml b/recipes/wip/tel/sms-server/recipe.toml new file mode 100644 index 00000000..99e2fba4 --- /dev/null +++ b/recipes/wip/tel/sms-server/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/morgverd/sms-server" +[build] +template = "cargo" diff --git a/recipes/wip/tel/sms-terminal/recipe.toml b/recipes/wip/tel/sms-terminal/recipe.toml new file mode 100644 index 00000000..b47ae36a --- /dev/null +++ b/recipes/wip/tel/sms-terminal/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/morgverd/sms-terminal" +[build] +template = "cargo" diff --git a/recipes/wip/video/other/gnome-video-effects/recipe.toml b/recipes/wip/video/other/gnome-video-effects/recipe.toml new file mode 100644 index 00000000..58890a28 --- /dev/null +++ b/recipes/wip/video/other/gnome-video-effects/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.gnome.org/sources/gnome-video-effects/0.6/gnome-video-effects-0.6.0.tar.xz" +[build] +template = "meson" diff --git a/recipes/wip/video/webcam/cheese/recipe.toml b/recipes/wip/video/webcam/cheese/recipe.toml index dd758e26..d7c159f7 100644 --- a/recipes/wip/video/webcam/cheese/recipe.toml +++ b/recipes/wip/video/webcam/cheese/recipe.toml @@ -1,6 +1,6 @@ #TODO not compiled or tested # lacking build instructions: https://gitlab.gnome.org/GNOME/cheese/-/blob/master/meson.build -# missing dependencies +# probably missing dependencies [source] tar = "https://download.gnome.org/sources/cheese/44/cheese-44.1.tar.xz" [build] @@ -13,4 +13,9 @@ dependencies = [ "glib", "gdk-pixbuf", "gstreamer", + "libcanberra", + "clutter", + "clutter-gtk", + "clutter-gst", + "gnome-video-effects", ] From 24dedb254d2312a44a13f431eb3a799aa3866d85 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 15 Oct 2025 20:31:37 -0300 Subject: [PATCH 2947/3180] Add recipes --- recipes/wip/libs/kf6/kcodecs6/recipe.toml | 5 +++++ recipes/wip/video/webcam/kamoso/recipe.toml | 10 ++++++++++ recipes/wip/video/webcam/webcamoid/recipe.toml | 13 +++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 recipes/wip/libs/kf6/kcodecs6/recipe.toml create mode 100644 recipes/wip/video/webcam/kamoso/recipe.toml create mode 100644 recipes/wip/video/webcam/webcamoid/recipe.toml diff --git a/recipes/wip/libs/kf6/kcodecs6/recipe.toml b/recipes/wip/libs/kf6/kcodecs6/recipe.toml new file mode 100644 index 00000000..96b16e6c --- /dev/null +++ b/recipes/wip/libs/kf6/kcodecs6/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.kde.org/stable/frameworks/6.19/kcodecs-6.19.0.tar.xz" +[build] +template = "cmake" diff --git a/recipes/wip/video/webcam/kamoso/recipe.toml b/recipes/wip/video/webcam/kamoso/recipe.toml new file mode 100644 index 00000000..ced03c4e --- /dev/null +++ b/recipes/wip/video/webcam/kamoso/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +#TODO missing dependencies: https://invent.kde.org/multimedia/kamoso/-/blob/master/CMakeLists.txt?ref_type=heads#L29 +[source] +git = "https://invent.kde.org/multimedia/kamoso" +branch = "release/25.08" +[build] +template = "cmake" +dependencies = [ + "qt6-base", +] diff --git a/recipes/wip/video/webcam/webcamoid/recipe.toml b/recipes/wip/video/webcam/webcamoid/recipe.toml new file mode 100644 index 00000000..70eefe4c --- /dev/null +++ b/recipes/wip/video/webcam/webcamoid/recipe.toml @@ -0,0 +1,13 @@ +#TODO not compiled or tested +# build instructions: https://github.com/webcamoid/webcamoid/wiki/Raw-build-and-install +[source] +git = "https://github.com/webcamoid/webcamoid" +rev = "171b91e378c9bfbd4c425415322971e4e8872108" +[build] +template = "cmake" +dependencies = [ + "qt5-base", + "qt5-declarative", + "qt5-quickcontrols2", + "qt5-svg", +] From 9f5bc59163ab6a5b3beabc2eedcfdbed2a4a003a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 15 Oct 2025 20:33:13 -0300 Subject: [PATCH 2948/3180] Rename a WIP category --- recipes/wip/libs/{kde5 => kf5}/kf5-activities-stats/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-activities/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-apidox/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-archive/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-attica/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-auth/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-baloo/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-bookmarks/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-calendarcore/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-cmake-modules/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-cmutils/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-codecs/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-completion/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-config/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-configwidgets/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-contacts/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-coreaddons/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-crash/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-dav/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-dbusaddons/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-declarative/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-dnssd/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-doctools/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-emoticons/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-filemetadata/recipe.toml | 0 .../wip/libs/{kde5 => kf5}/kf5-frameworkintegration/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-globalaccel/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-guiaddons/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-holidays/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-i18n/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-iconthemes/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-idletime/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-init/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-io/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-itemmodels/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-itemviews/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-jobwidgets/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-kded/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-kdesu/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-kirigami/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-modem-manager/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-networkmanager/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-newstuff/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-notifications/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-notifyconfig/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-package/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-parts/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-people/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-plasma-framework/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-plotting/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-prison/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-pty/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-purpose/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-qqc2-desktop-style/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-quickcharts/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-runner/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-service/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-solid/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-sonnet/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-syndication/recipe.toml | 0 .../wip/libs/{kde5 => kf5}/kf5-syntax-highlighting/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-sysguard/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-texteditor/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-textwidgets/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-threadweaver/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-unitconversion/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-wayland/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-widgetaddons/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-windowsystem/recipe.toml | 0 recipes/wip/libs/{kde5 => kf5}/kf5-xmlgui/recipe.toml | 0 70 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/libs/{kde5 => kf5}/kf5-activities-stats/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-activities/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-apidox/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-archive/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-attica/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-auth/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-baloo/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-bookmarks/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-calendarcore/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-cmake-modules/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-cmutils/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-codecs/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-completion/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-config/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-configwidgets/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-contacts/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-coreaddons/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-crash/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-dav/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-dbusaddons/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-declarative/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-dnssd/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-doctools/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-emoticons/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-filemetadata/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-frameworkintegration/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-globalaccel/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-guiaddons/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-holidays/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-i18n/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-iconthemes/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-idletime/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-init/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-io/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-itemmodels/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-itemviews/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-jobwidgets/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-kded/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-kdesu/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-kirigami/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-modem-manager/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-networkmanager/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-newstuff/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-notifications/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-notifyconfig/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-package/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-parts/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-people/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-plasma-framework/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-plotting/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-prison/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-pty/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-purpose/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-qqc2-desktop-style/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-quickcharts/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-runner/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-service/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-solid/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-sonnet/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-syndication/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-syntax-highlighting/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-sysguard/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-texteditor/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-textwidgets/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-threadweaver/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-unitconversion/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-wayland/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-widgetaddons/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-windowsystem/recipe.toml (100%) rename recipes/wip/libs/{kde5 => kf5}/kf5-xmlgui/recipe.toml (100%) diff --git a/recipes/wip/libs/kde5/kf5-activities-stats/recipe.toml b/recipes/wip/libs/kf5/kf5-activities-stats/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-activities-stats/recipe.toml rename to recipes/wip/libs/kf5/kf5-activities-stats/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-activities/recipe.toml b/recipes/wip/libs/kf5/kf5-activities/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-activities/recipe.toml rename to recipes/wip/libs/kf5/kf5-activities/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-apidox/recipe.toml b/recipes/wip/libs/kf5/kf5-apidox/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-apidox/recipe.toml rename to recipes/wip/libs/kf5/kf5-apidox/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-archive/recipe.toml b/recipes/wip/libs/kf5/kf5-archive/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-archive/recipe.toml rename to recipes/wip/libs/kf5/kf5-archive/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-attica/recipe.toml b/recipes/wip/libs/kf5/kf5-attica/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-attica/recipe.toml rename to recipes/wip/libs/kf5/kf5-attica/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-auth/recipe.toml b/recipes/wip/libs/kf5/kf5-auth/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-auth/recipe.toml rename to recipes/wip/libs/kf5/kf5-auth/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-baloo/recipe.toml b/recipes/wip/libs/kf5/kf5-baloo/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-baloo/recipe.toml rename to recipes/wip/libs/kf5/kf5-baloo/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-bookmarks/recipe.toml b/recipes/wip/libs/kf5/kf5-bookmarks/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-bookmarks/recipe.toml rename to recipes/wip/libs/kf5/kf5-bookmarks/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-calendarcore/recipe.toml b/recipes/wip/libs/kf5/kf5-calendarcore/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-calendarcore/recipe.toml rename to recipes/wip/libs/kf5/kf5-calendarcore/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-cmake-modules/recipe.toml b/recipes/wip/libs/kf5/kf5-cmake-modules/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-cmake-modules/recipe.toml rename to recipes/wip/libs/kf5/kf5-cmake-modules/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-cmutils/recipe.toml b/recipes/wip/libs/kf5/kf5-cmutils/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-cmutils/recipe.toml rename to recipes/wip/libs/kf5/kf5-cmutils/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-codecs/recipe.toml b/recipes/wip/libs/kf5/kf5-codecs/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-codecs/recipe.toml rename to recipes/wip/libs/kf5/kf5-codecs/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-completion/recipe.toml b/recipes/wip/libs/kf5/kf5-completion/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-completion/recipe.toml rename to recipes/wip/libs/kf5/kf5-completion/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-config/recipe.toml b/recipes/wip/libs/kf5/kf5-config/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-config/recipe.toml rename to recipes/wip/libs/kf5/kf5-config/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-configwidgets/recipe.toml b/recipes/wip/libs/kf5/kf5-configwidgets/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-configwidgets/recipe.toml rename to recipes/wip/libs/kf5/kf5-configwidgets/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-contacts/recipe.toml b/recipes/wip/libs/kf5/kf5-contacts/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-contacts/recipe.toml rename to recipes/wip/libs/kf5/kf5-contacts/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-coreaddons/recipe.toml b/recipes/wip/libs/kf5/kf5-coreaddons/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-coreaddons/recipe.toml rename to recipes/wip/libs/kf5/kf5-coreaddons/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-crash/recipe.toml b/recipes/wip/libs/kf5/kf5-crash/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-crash/recipe.toml rename to recipes/wip/libs/kf5/kf5-crash/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-dav/recipe.toml b/recipes/wip/libs/kf5/kf5-dav/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-dav/recipe.toml rename to recipes/wip/libs/kf5/kf5-dav/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-dbusaddons/recipe.toml b/recipes/wip/libs/kf5/kf5-dbusaddons/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-dbusaddons/recipe.toml rename to recipes/wip/libs/kf5/kf5-dbusaddons/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-declarative/recipe.toml b/recipes/wip/libs/kf5/kf5-declarative/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-declarative/recipe.toml rename to recipes/wip/libs/kf5/kf5-declarative/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-dnssd/recipe.toml b/recipes/wip/libs/kf5/kf5-dnssd/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-dnssd/recipe.toml rename to recipes/wip/libs/kf5/kf5-dnssd/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-doctools/recipe.toml b/recipes/wip/libs/kf5/kf5-doctools/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-doctools/recipe.toml rename to recipes/wip/libs/kf5/kf5-doctools/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-emoticons/recipe.toml b/recipes/wip/libs/kf5/kf5-emoticons/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-emoticons/recipe.toml rename to recipes/wip/libs/kf5/kf5-emoticons/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-filemetadata/recipe.toml b/recipes/wip/libs/kf5/kf5-filemetadata/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-filemetadata/recipe.toml rename to recipes/wip/libs/kf5/kf5-filemetadata/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-frameworkintegration/recipe.toml b/recipes/wip/libs/kf5/kf5-frameworkintegration/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-frameworkintegration/recipe.toml rename to recipes/wip/libs/kf5/kf5-frameworkintegration/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-globalaccel/recipe.toml b/recipes/wip/libs/kf5/kf5-globalaccel/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-globalaccel/recipe.toml rename to recipes/wip/libs/kf5/kf5-globalaccel/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-guiaddons/recipe.toml b/recipes/wip/libs/kf5/kf5-guiaddons/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-guiaddons/recipe.toml rename to recipes/wip/libs/kf5/kf5-guiaddons/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-holidays/recipe.toml b/recipes/wip/libs/kf5/kf5-holidays/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-holidays/recipe.toml rename to recipes/wip/libs/kf5/kf5-holidays/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-i18n/recipe.toml b/recipes/wip/libs/kf5/kf5-i18n/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-i18n/recipe.toml rename to recipes/wip/libs/kf5/kf5-i18n/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-iconthemes/recipe.toml b/recipes/wip/libs/kf5/kf5-iconthemes/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-iconthemes/recipe.toml rename to recipes/wip/libs/kf5/kf5-iconthemes/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-idletime/recipe.toml b/recipes/wip/libs/kf5/kf5-idletime/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-idletime/recipe.toml rename to recipes/wip/libs/kf5/kf5-idletime/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-init/recipe.toml b/recipes/wip/libs/kf5/kf5-init/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-init/recipe.toml rename to recipes/wip/libs/kf5/kf5-init/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-io/recipe.toml b/recipes/wip/libs/kf5/kf5-io/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-io/recipe.toml rename to recipes/wip/libs/kf5/kf5-io/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-itemmodels/recipe.toml b/recipes/wip/libs/kf5/kf5-itemmodels/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-itemmodels/recipe.toml rename to recipes/wip/libs/kf5/kf5-itemmodels/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-itemviews/recipe.toml b/recipes/wip/libs/kf5/kf5-itemviews/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-itemviews/recipe.toml rename to recipes/wip/libs/kf5/kf5-itemviews/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-jobwidgets/recipe.toml b/recipes/wip/libs/kf5/kf5-jobwidgets/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-jobwidgets/recipe.toml rename to recipes/wip/libs/kf5/kf5-jobwidgets/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-kded/recipe.toml b/recipes/wip/libs/kf5/kf5-kded/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-kded/recipe.toml rename to recipes/wip/libs/kf5/kf5-kded/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-kdesu/recipe.toml b/recipes/wip/libs/kf5/kf5-kdesu/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-kdesu/recipe.toml rename to recipes/wip/libs/kf5/kf5-kdesu/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-kirigami/recipe.toml b/recipes/wip/libs/kf5/kf5-kirigami/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-kirigami/recipe.toml rename to recipes/wip/libs/kf5/kf5-kirigami/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-modem-manager/recipe.toml b/recipes/wip/libs/kf5/kf5-modem-manager/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-modem-manager/recipe.toml rename to recipes/wip/libs/kf5/kf5-modem-manager/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-networkmanager/recipe.toml b/recipes/wip/libs/kf5/kf5-networkmanager/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-networkmanager/recipe.toml rename to recipes/wip/libs/kf5/kf5-networkmanager/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-newstuff/recipe.toml b/recipes/wip/libs/kf5/kf5-newstuff/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-newstuff/recipe.toml rename to recipes/wip/libs/kf5/kf5-newstuff/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-notifications/recipe.toml b/recipes/wip/libs/kf5/kf5-notifications/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-notifications/recipe.toml rename to recipes/wip/libs/kf5/kf5-notifications/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-notifyconfig/recipe.toml b/recipes/wip/libs/kf5/kf5-notifyconfig/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-notifyconfig/recipe.toml rename to recipes/wip/libs/kf5/kf5-notifyconfig/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-package/recipe.toml b/recipes/wip/libs/kf5/kf5-package/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-package/recipe.toml rename to recipes/wip/libs/kf5/kf5-package/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-parts/recipe.toml b/recipes/wip/libs/kf5/kf5-parts/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-parts/recipe.toml rename to recipes/wip/libs/kf5/kf5-parts/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-people/recipe.toml b/recipes/wip/libs/kf5/kf5-people/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-people/recipe.toml rename to recipes/wip/libs/kf5/kf5-people/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-plasma-framework/recipe.toml b/recipes/wip/libs/kf5/kf5-plasma-framework/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-plasma-framework/recipe.toml rename to recipes/wip/libs/kf5/kf5-plasma-framework/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-plotting/recipe.toml b/recipes/wip/libs/kf5/kf5-plotting/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-plotting/recipe.toml rename to recipes/wip/libs/kf5/kf5-plotting/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-prison/recipe.toml b/recipes/wip/libs/kf5/kf5-prison/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-prison/recipe.toml rename to recipes/wip/libs/kf5/kf5-prison/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-pty/recipe.toml b/recipes/wip/libs/kf5/kf5-pty/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-pty/recipe.toml rename to recipes/wip/libs/kf5/kf5-pty/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-purpose/recipe.toml b/recipes/wip/libs/kf5/kf5-purpose/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-purpose/recipe.toml rename to recipes/wip/libs/kf5/kf5-purpose/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-qqc2-desktop-style/recipe.toml b/recipes/wip/libs/kf5/kf5-qqc2-desktop-style/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-qqc2-desktop-style/recipe.toml rename to recipes/wip/libs/kf5/kf5-qqc2-desktop-style/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-quickcharts/recipe.toml b/recipes/wip/libs/kf5/kf5-quickcharts/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-quickcharts/recipe.toml rename to recipes/wip/libs/kf5/kf5-quickcharts/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-runner/recipe.toml b/recipes/wip/libs/kf5/kf5-runner/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-runner/recipe.toml rename to recipes/wip/libs/kf5/kf5-runner/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-service/recipe.toml b/recipes/wip/libs/kf5/kf5-service/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-service/recipe.toml rename to recipes/wip/libs/kf5/kf5-service/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-solid/recipe.toml b/recipes/wip/libs/kf5/kf5-solid/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-solid/recipe.toml rename to recipes/wip/libs/kf5/kf5-solid/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-sonnet/recipe.toml b/recipes/wip/libs/kf5/kf5-sonnet/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-sonnet/recipe.toml rename to recipes/wip/libs/kf5/kf5-sonnet/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-syndication/recipe.toml b/recipes/wip/libs/kf5/kf5-syndication/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-syndication/recipe.toml rename to recipes/wip/libs/kf5/kf5-syndication/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-syntax-highlighting/recipe.toml b/recipes/wip/libs/kf5/kf5-syntax-highlighting/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-syntax-highlighting/recipe.toml rename to recipes/wip/libs/kf5/kf5-syntax-highlighting/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-sysguard/recipe.toml b/recipes/wip/libs/kf5/kf5-sysguard/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-sysguard/recipe.toml rename to recipes/wip/libs/kf5/kf5-sysguard/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-texteditor/recipe.toml b/recipes/wip/libs/kf5/kf5-texteditor/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-texteditor/recipe.toml rename to recipes/wip/libs/kf5/kf5-texteditor/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-textwidgets/recipe.toml b/recipes/wip/libs/kf5/kf5-textwidgets/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-textwidgets/recipe.toml rename to recipes/wip/libs/kf5/kf5-textwidgets/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-threadweaver/recipe.toml b/recipes/wip/libs/kf5/kf5-threadweaver/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-threadweaver/recipe.toml rename to recipes/wip/libs/kf5/kf5-threadweaver/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-unitconversion/recipe.toml b/recipes/wip/libs/kf5/kf5-unitconversion/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-unitconversion/recipe.toml rename to recipes/wip/libs/kf5/kf5-unitconversion/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-wayland/recipe.toml b/recipes/wip/libs/kf5/kf5-wayland/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-wayland/recipe.toml rename to recipes/wip/libs/kf5/kf5-wayland/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-widgetaddons/recipe.toml b/recipes/wip/libs/kf5/kf5-widgetaddons/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-widgetaddons/recipe.toml rename to recipes/wip/libs/kf5/kf5-widgetaddons/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-windowsystem/recipe.toml b/recipes/wip/libs/kf5/kf5-windowsystem/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-windowsystem/recipe.toml rename to recipes/wip/libs/kf5/kf5-windowsystem/recipe.toml diff --git a/recipes/wip/libs/kde5/kf5-xmlgui/recipe.toml b/recipes/wip/libs/kf5/kf5-xmlgui/recipe.toml similarity index 100% rename from recipes/wip/libs/kde5/kf5-xmlgui/recipe.toml rename to recipes/wip/libs/kf5/kf5-xmlgui/recipe.toml From 14e56c1a1e12ab7218c973219bf3bd8eb9ce525f Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sat, 18 Oct 2025 12:57:26 +0000 Subject: [PATCH 2949/3180] Port rustysd --- recipes/wip/system/rustysd/recipe.toml | 27 ++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 recipes/wip/system/rustysd/recipe.toml diff --git a/recipes/wip/system/rustysd/recipe.toml b/recipes/wip/system/rustysd/recipe.toml new file mode 100644 index 00000000..ad6fd0bb --- /dev/null +++ b/recipes/wip/system/rustysd/recipe.toml @@ -0,0 +1,27 @@ +#TODO: Unable to fork services, page fault on rsdctl +[source] +git = "https://github.com/willnode/rustysd" +branch = "redox" + +[build] +template = "custom" +script = """ +cookbook_cargo + +mkdir -p ${COOKBOOK_STAGE}/etc/rustysd/system +cat <<'EOF' > ${COOKBOOK_STAGE}/etc/rustysd/rustysd_config.toml +unit_dirs = [ + "/etc/rustysd/system", + "/etc/rustysd/user", +] +logging_dir = "/var/log/rustysd" +log_to_disk = true +log_to_stdout = false +target_unit = "default.target" +notifications_dir = "/var/run/rustysd" +# selfpath = "" +EOF + +cp ${COOKBOOK_SOURCE}/docker_test_units/*.target ${COOKBOOK_STAGE}/etc/rustysd/system/ +ln -s rsdctl ${COOKBOOK_STAGE}/usr/bin/systemctl +""" From de12fa848916927a23333d85a7edf61f919f182d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 18 Oct 2025 14:04:24 -0600 Subject: [PATCH 2950/3180] drivers-initfs: install hwd --- recipes/core/drivers-initfs/recipe.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/core/drivers-initfs/recipe.toml b/recipes/core/drivers-initfs/recipe.toml index 39b06258..8f2e1d01 100644 --- a/recipes/core/drivers-initfs/recipe.toml +++ b/recipes/core/drivers-initfs/recipe.toml @@ -8,6 +8,7 @@ BINS=( acpid fbbootlogd fbcond + hwd inputd lived nvmed @@ -64,7 +65,7 @@ export CARGO_PROFILE_RELEASE_PANIC=abort for bin in "${BINS[@]}" do case "${bin}" in - pcid | pcid-spawner | fbbootlogd | fbcond | inputd | vesad | lived | ps2d | acpid | bcm2835-sdhcid | rtcd) + pcid | pcid-spawner | fbbootlogd | fbcond | inputd | vesad | lived | ps2d | acpid | bcm2835-sdhcid | rtcd | hwd) cp -v "target/${TARGET}/${build_type}/${bin}" "${COOKBOOK_STAGE}/bin" ;; *) From 42451efae2f3898faa892785324fa0f0fd7bf8f7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 18 Oct 2025 14:05:01 -0600 Subject: [PATCH 2951/3180] base-initfs: replace acpid with hwd, which will itself launch acpid when needed --- recipes/core/base-initfs/init_drivers.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/core/base-initfs/init_drivers.rc b/recipes/core/base-initfs/init_drivers.rc index 2769ae67..5291733e 100644 --- a/recipes/core/base-initfs/init_drivers.rc +++ b/recipes/core/base-initfs/init_drivers.rc @@ -1,4 +1,4 @@ ps2d us -acpid +hwd pcid pcid-spawner /etc/pcid/initfs.toml From e686d5c79279b157104ca58f618bc7b8a314b6a0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 18 Oct 2025 16:26:34 -0600 Subject: [PATCH 2952/3180] base-initfs: use hwd on aarch64 --- recipes/core/base-initfs/aarch64-unknown-redox/init_drivers.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/core/base-initfs/aarch64-unknown-redox/init_drivers.rc b/recipes/core/base-initfs/aarch64-unknown-redox/init_drivers.rc index cb8ab2be..cc94430c 100644 --- a/recipes/core/base-initfs/aarch64-unknown-redox/init_drivers.rc +++ b/recipes/core/base-initfs/aarch64-unknown-redox/init_drivers.rc @@ -1,3 +1,3 @@ -acpid +hwd pcid pcid-spawner /etc/pcid/initfs.toml From dba3334d82fb7ce8e2723dc6223d4e98bdc6bb57 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sun, 19 Oct 2025 12:20:39 +0000 Subject: [PATCH 2953/3180] Add a way to download compiled recipes from remote --- src/bin/cook.rs | 2 ++ src/cook.rs | 2 +- src/cook/build.rs | 84 +++++++++++++++++++++++++++++++++++++++++++++++ src/cook/fetch.rs | 26 +++------------ src/cook/fs.rs | 28 ++++++++++++++-- src/lib.rs | 9 ++--- src/recipe.rs | 3 ++ 7 files changed, 123 insertions(+), 31 deletions(-) create mode 100644 src/cook/build.rs diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 7bc3502f..8f33c966 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1,4 +1,5 @@ use cookbook::config::init_config; +use cookbook::cook::build::build_remote; use cookbook::cook::fetch::*; use cookbook::cook::fs::*; use cookbook::cook::script::SHARED_PRESCRIPT; @@ -555,6 +556,7 @@ done flags_fn("COOKBOOK_MESON_FLAGS", mesonflags), ), BuildKind::Custom { script } => script.clone(), + BuildKind::Remote => return build_remote(target_dir, name, offline_mode), BuildKind::None => "".to_owned(), }; diff --git a/src/cook.rs b/src/cook.rs index e5080038..d538dbc3 100644 --- a/src/cook.rs +++ b/src/cook.rs @@ -2,5 +2,5 @@ pub mod fetch; pub mod fs; pub mod script; //TODO: Move rest of cook functions here in the next refactor -//pub mod build; +pub mod build; //pub mod package; diff --git a/src/cook/build.rs b/src/cook/build.rs new file mode 100644 index 00000000..cda47fd6 --- /dev/null +++ b/src/cook/build.rs @@ -0,0 +1,84 @@ +use std::{ + collections::BTreeSet, + fs, + path::{Path, PathBuf}, +}; + +use pkg::{Package, PackageName}; +use redoxer::target; + +use crate::{REMOTE_PKG_SOURCE, cook::fs::*, recipe::AutoDeps}; + +fn get_remote_url(name: &PackageName, ext: &str) -> String { + return format!("{}/{}/{}.{}", REMOTE_PKG_SOURCE, target(), name, ext); +} +fn get_pubkey_url() -> String { + return format!("{}/id_ed25519.pub.toml", REMOTE_PKG_SOURCE); +} + +pub fn build_remote( + target_dir: &Path, + name: &PackageName, + offline_mode: bool, +) -> Result<(PathBuf, BTreeSet), String> { + // download straight from remote source then declare pkg dependencies as autodeps dependency + let stage_dir = target_dir.join("stage"); + + let source_pkgar = target_dir.join("source.pkgar"); + let source_toml = target_dir.join("source.toml"); + let source_pubkey = target_dir.join("id_ed25519.pub.toml"); + + if !offline_mode { + download_wget(&get_remote_url(name, "pkgar"), &source_pkgar)?; + download_wget(&get_remote_url(name, "toml"), &source_toml)?; + download_wget(&get_pubkey_url(), &source_pubkey)?; + } else { + offline_check_exists(&source_pkgar)?; + offline_check_exists(&source_toml)?; + offline_check_exists(&source_pubkey)?; + } + + if stage_dir.is_dir() && modified(&source_pkgar)? > modified(&stage_dir)? { + remove_all(&stage_dir)? + } + if !stage_dir.is_dir() { + let stage_dir_tmp = target_dir.join("stage.tmp"); + + pkgar::extract(&source_pubkey, &source_pkgar, &stage_dir_tmp).map_err(|err| { + format!( + "failed to install '{}' in '{}': {:?}", + source_pkgar.display(), + stage_dir_tmp.display(), + err + ) + })?; + + // Move stage.tmp to stage atomically + rename(&stage_dir_tmp, &stage_dir)?; + } + + let auto_deps_path = target_dir.join("auto_deps.toml"); + if auto_deps_path.is_file() && modified(&auto_deps_path)? < modified(&stage_dir)? { + remove_all(&auto_deps_path)? + } + + let auto_deps = if auto_deps_path.exists() { + let toml_content = + fs::read_to_string(&auto_deps_path).map_err(|_| "failed to read cached auto_deps")?; + let wrapper: AutoDeps = + toml::from_str(&toml_content).map_err(|_| "failed to deserialize cached auto_deps")?; + wrapper.packages + } else { + let toml_content = + fs::read_to_string(&source_toml).map_err(|_| "failed to read source.toml")?; + let pkg_toml: Package = + toml::from_str(&toml_content).map_err(|_| "failed to deserialize source.toml")?; + let wrapper = AutoDeps { + packages: pkg_toml.depends.into_iter().collect(), + }; + serialize_and_write(&auto_deps_path, &wrapper)?; + wrapper.packages + }; + + Ok((stage_dir, auto_deps)) +} diff --git a/src/cook/fetch.rs b/src/cook/fetch.rs index 21f45daa..c3ce9bdc 100644 --- a/src/cook/fetch.rs +++ b/src/cook/fetch.rs @@ -42,12 +42,7 @@ pub fn fetch_offline(recipe_dir: &Path, source: &Option) -> Result script: _, shallow_clone: _, }) => { - if !source_dir.is_dir() { - return Err(format!( - "'{dir}' is not exist and unable to continue in offline mode", - dir = source_dir.display(), - )); - } + offline_check_exists(&source_dir)?; } Some(SourceRecipe::Tar { tar: _, @@ -75,10 +70,7 @@ pub fn fetch_offline(recipe_dir: &Path, source: &Option) -> Result )); } } else { - return Err(format!( - "'{dir}' is not exist and unable to continue in offline mode", - dir = source_dir.display(), - )); + offline_check_exists(&source_dir)?; } } } @@ -229,18 +221,7 @@ pub fn fetch(recipe_dir: &Path, source: &Option) -> Result) -> Result { if !source_dir.is_dir() { + //TODO: Don't print if build template is none or remote eprintln!( "WARNING: Recipe without source section expected source dir at '{}'", source_dir.display(), diff --git a/src/cook/fs.rs b/src/cook/fs.rs index 0fa51ecf..f156bb10 100644 --- a/src/cook/fs.rs +++ b/src/cook/fs.rs @@ -2,12 +2,14 @@ use serde::Serialize; use std::{ fs, io::{self, Write}, - path::Path, - process::{self, Stdio}, + path::{Path, PathBuf}, + process::{self, Command, Stdio}, time::SystemTime, }; use walkdir::{DirEntry, WalkDir}; +use crate::config::translate_mirror; + //TODO: pub(crate) for all of these functions pub fn remove_all(path: &Path) -> Result<(), String> { @@ -192,3 +194,25 @@ pub fn serialize_and_write(file_path: &Path, content: &T) -> Resul .map_err(|err| format!("Failed to write to file '{}': {}", file_path.display(), err))?; Ok(()) } + +pub fn offline_check_exists(path: &PathBuf) -> Result<(), String> { + if !path.exists() { + return Err(format!( + "'{path}' is not exist and unable to continue in offline mode", + path = path.display(), + ))?; + } + Ok(()) +} + +pub fn download_wget(url: &str, dest: &PathBuf) -> Result<(), String> { + if !dest.is_file() { + let dest_tmp = PathBuf::from(format!("{}.tmp", dest.display())); + let mut command = Command::new("wget"); + command.arg(translate_mirror(url)); + command.arg("--continue").arg("-O").arg(&dest_tmp); + run_command(command)?; + rename(&dest_tmp, &dest)?; + } + Ok(()) +} diff --git a/src/lib.rs b/src/lib.rs index cef82ad0..0c8f7153 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -8,12 +8,9 @@ mod progress_bar; /// Default for maximum number of levels to descend down dependencies tree. pub const WALK_DEPTH: usize = 16; -#[cfg(target_os = "redox")] -pub fn is_redox() -> bool { - true -} +/// Default remote package source, for recipes with build type = "remote" +pub const REMOTE_PKG_SOURCE: &str = "https://static.redox-os.org/pkg"; -#[cfg(not(target_os = "redox"))] pub fn is_redox() -> bool { - false + cfg!(target_os = "redox") } diff --git a/src/recipe.rs b/src/recipe.rs index ff71fd5b..99e80800 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -89,6 +89,9 @@ pub enum BuildKind { /// Will not build (for meta packages) #[serde(rename = "none")] None, + /// Will download compiled package from remote + #[serde(rename = "remote")] + Remote, /// Will build and install using cargo #[serde(rename = "cargo")] Cargo { From 79f1eca998b41820c0407ebb586058abee3e7d83 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Thu, 23 Oct 2025 12:22:43 +0700 Subject: [PATCH 2954/3180] Fix err, use anyhow --- Cargo.lock | 5 +-- Cargo.toml | 1 + src/bin/repo.rs | 87 +++++++++++++++++++++++-------------------------- 3 files changed, 45 insertions(+), 48 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ce7dbe51..4d6b149a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -128,9 +128,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.98" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" [[package]] name = "arg_parser" @@ -1863,6 +1863,7 @@ dependencies = [ name = "redox_cookbook" version = "0.1.0" dependencies = [ + "anyhow", "blake3 1.5.3", "ignore", "object", diff --git a/Cargo.toml b/Cargo.toml index e163cf5e..d82ada6b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,6 +21,7 @@ path = "src/lib.rs" doctest = false [dependencies] +anyhow = "1" blake3 = "=1.5.3" # 1.5.4 is incompatible with blake3 0.3 dependency from pkgar ignore = "0.4" object = { version = "0.36", features = ["build_core"] } diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 79a188fd..ec0a604f 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -1,9 +1,10 @@ -use std::error::Error; -use std::fmt::format; +use std::collections::BTreeSet; use std::path::{Path, PathBuf}; -use std::process; +use std::process::{self, Command}; use std::{env, fs}; +use anyhow::{Context, anyhow}; + // A repo manager, to replace repo.sh const REPO_HELP_STR: &str = r#" @@ -30,7 +31,7 @@ const REPO_HELP_STR: &str = r#" -q, --quiet surpress build logs unless error "#; -struct Config { +struct CliConfig { cookbook_dir: PathBuf, repo_dir: PathBuf, sysroot_dir: PathBuf, @@ -41,10 +42,10 @@ struct Config { quiet: bool, } -impl Config { +impl CliConfig { fn new() -> Result { let current_dir = env::current_dir()?; - Ok(Config { + Ok(CliConfig { cookbook_dir: current_dir.join("recipes"), repo_dir: current_dir.join("repo"), sysroot_dir: if cfg!(target_os = "redox") { @@ -61,17 +62,21 @@ impl Config { } } -fn main() -> Result<(), Box> { +fn main() { + main_inner().unwrap(); +} + +fn main_inner() -> anyhow::Result<()> { let args: Vec = env::args().skip(1).collect(); if args.is_empty() || args.contains(&"--help".to_string()) || args.contains(&"-h".to_string()) { println!("{}", REPO_HELP_STR); - return Ok(()); + process::exit(1); } - let mut config = Config::new()?; + let mut config = CliConfig::new()?; let mut command: Option = None; - let mut recipe_paths: Vec = Vec::new(); + let mut recipe_paths: BTreeSet = BTreeSet::new(); for arg in args { if arg.starts_with("--") { @@ -79,7 +84,7 @@ fn main() -> Result<(), Box> { match key { "--cookbook" => config.cookbook_dir = PathBuf::from(value), "--repo" => config.repo_dir = PathBuf::from(value), - "--sysroot" => config.sysroot_dir = Some(PathBuf::from(value)), + "--sysroot" => config.sysroot_dir = PathBuf::from(value), _ => { eprintln!("Error: Unknown flag with value: {}", arg); process::exit(1); @@ -111,21 +116,21 @@ fn main() -> Result<(), Box> { command = Some(arg); } else { // Subsequent non-flag arguments are recipe names - if Some(path) = pkg::recipes::find(arg) { - recipe_paths.push(path); + if let Some(path) = pkg::recipes::find(&arg) { + recipe_paths.insert(path.to_owned()); } else { - return Err(format!("Error: recipe not found '{arg}'")); + panic!("Error: recipe not found '{arg}'"); } } } - let command = command.ok_or("Error: No command specified.")?; + let command = command.ok_or("Error: No command specified.").unwrap(); if !config.all && recipe_paths.is_empty() { - return Err("Error: No recipe names provided and --all flag was not used.".into()); + panic!("Error: No recipe names provided and --all flag was not used."); } if config.all && !recipe_paths.is_empty() { - return Err("Error: Cannot specify recipe names when using the --all flag.".into()); + panic!("Error: Cannot specify recipe names when using the --all flag."); } if config.all { @@ -154,7 +159,7 @@ fn main() -> Result<(), Box> { Ok(()) } -fn handle_fetch(recipe_path: &Path, config: &Config) -> Result<(), String> { +fn handle_fetch(recipe_path: &Path, config: &CliConfig) -> anyhow::Result<()> { let mut cmd = Command::new("cook"); cmd.arg("--fetch-only"); if config.with_package_deps { @@ -167,20 +172,18 @@ fn handle_fetch(recipe_path: &Path, config: &Config) -> Result<(), String> { cmd.arg("--quiet"); } cmd.arg(recipe_path); - let status = cmd - .status() - .map_err(|e| format!("Failed to execute cook command: {}", e))?; + let status = cmd.status().context("Failed to execute cook command")?; if !status.success() && !config.nonstop { - return Err(format!( + return Err(anyhow!( "Cook command failed for recipe '{}' with exit code: {}", - recipe_name, + recipe_path.display(), status.code().unwrap_or(1) )); } Ok(()) } -fn handle_cook(recipe_path: &Path, config: &Config) -> Result<(), String> { +fn handle_cook(recipe_path: &Path, config: &CliConfig) -> anyhow::Result<()> { let mut cmd = Command::new("cook"); cmd.arg(recipe_path); if config.with_package_deps { @@ -192,51 +195,43 @@ fn handle_cook(recipe_path: &Path, config: &Config) -> Result<(), String> { if config.quiet { cmd.arg("--quiet"); } - let status = cmd - .status() - .map_err(|e| format!("Failed to execute cook command: {}", e))?; + let status = cmd.status().context("Failed to execute cook command")?; if !status.success() && !config.nonstop { - return Err(format!( + return Err(anyhow!( "Cook command failed for recipe '{}' with exit code: {}", - recipe_name, + recipe_path.display(), status.code().unwrap_or(1) )); } Ok(()) } -fn handle_unfetch(recipe_path: &Path, config: &Config) -> Result<(), String> { +fn handle_unfetch(recipe_path: &Path, _config: &CliConfig) -> anyhow::Result<()> { let dir = recipe_path.join("source"); if dir.exists() { - fs::remove_dir_all(dir) - .map_err(|err| format!("failed to delete '{}': {:?}", recipe_path, errF))?; + fs::remove_dir_all(dir).context(format!("failed to delete {}", recipe_path.display()))?; } Ok(()) } -fn handle_clean(recipe_path: &Path, config: &Config) -> Result<(), String> { +fn handle_clean(recipe_path: &Path, _config: &CliConfig) -> anyhow::Result<()> { let dir = recipe_path.join("target"); if dir.exists() { - fs::remove_dir_all(dir) - .map_err(|err| format!("failed to delete '{}': {:?}", recipe_path, errF))?; + fs::remove_dir_all(dir).context(format!("failed to delete {}", recipe_path.display()))?; } Ok(()) } -fn handle_push(recipe_path: &Path, config: &Config) -> Result<(), String> { +fn handle_push(recipe_path: &Path, config: &CliConfig) -> anyhow::Result<()> { let public_path = "build/id_ed25519.pub.toml"; pkgar::extract( public_path, config.sysroot_dir.as_path(), - sysroot_dir_tmp.to_str().unwrap(), + config.sysroot_dir.to_str().unwrap(), ) - .map_err(|err| { - format!( - "failed to install '{}' in '{}': {:?}", - archive_path.display(), - config.sysroot_dir.display(), - err - ) - })?; - Ok(()) + .context(format!( + "failed to install '{}' in '{}'", + recipe_path.display(), + config.sysroot_dir.display(), + )) } From c16cf50b11e4755ee93a7a6f86802f3000d27ea2 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Thu, 23 Oct 2025 20:01:03 +0700 Subject: [PATCH 2955/3180] Migrate build script to cook lib --- src/bin/cook.rs | 785 +------------------------------------------- src/cook.rs | 3 +- src/cook/build.rs | 400 +++++++++++++++++++++- src/cook/fs.rs | 12 + src/cook/package.rs | 102 ++++++ src/cook/script.rs | 267 ++++++++++++++- 6 files changed, 792 insertions(+), 777 deletions(-) create mode 100644 src/cook/package.rs diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 8f33c966..a6aa5462 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1,733 +1,18 @@ +use std::collections::BTreeSet; +use std::path::Path; +use std::{env, process}; + +use cookbook::WALK_DEPTH; +use cookbook::cook::fetch::{fetch, fetch_offline}; +use cookbook::cook::fs::create_target_dir; +use cookbook::cook::package::{package, package_toml}; +use cookbook::recipe::{BuildKind, CookRecipe, Recipe}; +use pkg::PackageName; + use cookbook::config::init_config; -use cookbook::cook::build::build_remote; -use cookbook::cook::fetch::*; -use cookbook::cook::fs::*; -use cookbook::cook::script::SHARED_PRESCRIPT; -use cookbook::recipe::{AutoDeps, BuildKind, CookRecipe, Recipe}; -use pkg::package::Package; -use pkg::{PackageName, recipes}; -use std::collections::VecDeque; -use std::convert::TryInto; -use std::{ - collections::BTreeSet, - env, fs, - path::{Path, PathBuf}, - process::{self, Command}, - str, - time::SystemTime, -}; +use cookbook::cook::build::build; use termion::{color, style}; -use cookbook::{WALK_DEPTH, is_redox}; - -fn auto_deps( - stage_dir: &Path, - dep_pkgars: &BTreeSet<(PackageName, PathBuf)>, -) -> BTreeSet { - let mut paths = BTreeSet::new(); - let mut visited = BTreeSet::new(); - // Base directories may need to be updated for packages that place binaries in odd locations. - let mut walk = VecDeque::from([ - stage_dir.join("libexec"), - stage_dir.join("usr/bin"), - stage_dir.join("usr/games"), - stage_dir.join("usr/lib"), - stage_dir.join("usr/libexec"), - ]); - - // Recursively (DFS) walk each directory to ensure nested libs and bins are checked. - while let Some(dir) = walk.pop_front() { - let Ok(dir) = dir.canonicalize() else { - continue; - }; - if visited.contains(&dir) { - #[cfg(debug_assertions)] - eprintln!("DEBUG: auto_deps => Skipping `{dir:?}` (already visited)"); - continue; - } - assert!( - visited.insert(dir.clone()), - "Directory `{:?}` should not be in visited\nVisited: {:#?}", - dir, - visited - ); - - let Ok(read_dir) = fs::read_dir(&dir) else { - continue; - }; - for entry_res in read_dir { - let Ok(entry) = entry_res else { continue }; - let Ok(file_type) = entry.file_type() else { - continue; - }; - if file_type.is_file() { - paths.insert(entry.path()); - } else if file_type.is_dir() { - walk.push_front(entry.path()); - } - } - } - - let mut needed = BTreeSet::new(); - for path in paths { - let Ok(file) = fs::File::open(&path) else { - continue; - }; - let read_cache = object::ReadCache::new(file); - let Ok(object) = object::build::elf::Builder::read(&read_cache) else { - continue; - }; - let Some(dynamic_data) = object.dynamic_data() else { - continue; - }; - for dynamic in dynamic_data { - let object::build::elf::Dynamic::String { tag, val } = dynamic else { - continue; - }; - if *tag == object::elf::DT_NEEDED { - let Ok(name) = str::from_utf8(val) else { - continue; - }; - if let Ok(relative_path) = path.strip_prefix(stage_dir) { - eprintln!("DEBUG: {} needs {}", relative_path.display(), name); - } - needed.insert(name.to_string()); - } - } - } - - let mut missing = needed.clone(); - // relibc and friends will always be installed - for preinstalled in &["libc.so.6", "libgcc_s.so.1", "libstdc++.so.6"] { - missing.remove(*preinstalled); - } - - let mut deps = BTreeSet::new(); - if let Ok(key_file) = pkgar_keys::PublicKeyFile::open("build/id_ed25519.pub.toml") { - for (dep, archive_path) in dep_pkgars.iter() { - let Ok(mut package) = pkgar::PackageFile::new(archive_path, &key_file.pkey) else { - continue; - }; - let Ok(entries) = pkgar_core::PackageSrc::read_entries(&mut package) else { - continue; - }; - for entry in entries { - let Ok(entry_path) = pkgar::ext::EntryExt::check_path(&entry) else { - continue; - }; - for prefix in &["lib", "usr/lib"] { - let Ok(child_path) = entry_path.strip_prefix(prefix) else { - continue; - }; - let Some(child_name) = child_path.to_str() else { - continue; - }; - if needed.contains(child_name) { - eprintln!("DEBUG: {} provides {}", dep, child_name); - deps.insert(dep.clone()); - missing.remove(child_name); - } - } - } - } - } - - for name in missing { - eprintln!("WARN: {} missing", name); - } - - deps -} - -fn build( - recipe_dir: &Path, - source_dir: &Path, - target_dir: &Path, - name: &PackageName, - recipe: &Recipe, - offline_mode: bool, - check_source: bool, -) -> Result<(PathBuf, BTreeSet), String> { - let sysroot_dir = target_dir.join("sysroot"); - let stage_dir = target_dir.join("stage"); - - let mut dep_pkgars = BTreeSet::new(); - for dependency in recipe.build.dependencies.iter() { - let dependency_dir = recipes::find(dependency.as_str()); - if dependency_dir.is_none() { - return Err(format!("failed to find recipe directory '{}'", dependency)); - } - dep_pkgars.insert(( - dependency.clone(), - dependency_dir - .unwrap() - .join("target") - .join(redoxer::target()) - .join("stage.pkgar"), - )); - } - - if stage_dir.exists() && !check_source { - let auto_deps = build_auto_deps(target_dir, &stage_dir, dep_pkgars)?; - return Ok((stage_dir, auto_deps)); - } - - let source_modified = modified_dir_ignore_git(source_dir)?; - let deps_modified = dep_pkgars - .iter() - .map(|(_dep, pkgar)| modified(pkgar)) - .max() - .unwrap_or(Ok(SystemTime::UNIX_EPOCH))?; - - // Rebuild sysroot if source is newer - //TODO: rebuild on recipe changes - if sysroot_dir.is_dir() { - let sysroot_modified = modified_dir(&sysroot_dir)?; - if sysroot_modified < source_modified || sysroot_modified < deps_modified { - eprintln!( - "DEBUG: '{}' newer than '{}'", - source_dir.display(), - sysroot_dir.display() - ); - remove_all(&sysroot_dir)?; - } - } - if !sysroot_dir.is_dir() { - // Create sysroot.tmp - let sysroot_dir_tmp = target_dir.join("sysroot.tmp"); - create_dir_clean(&sysroot_dir_tmp)?; - - // Make sure sysroot/usr exists - create_dir(&sysroot_dir_tmp.join("usr"))?; - for folder in &["bin", "include", "lib", "share"] { - // Make sure sysroot/usr/$folder exists - create_dir(&sysroot_dir_tmp.join("usr").join(folder))?; - - // Link sysroot/$folder sysroot/usr/$folder - symlink(Path::new("usr").join(folder), &sysroot_dir_tmp.join(folder))?; - } - - for (_dep, archive_path) in &dep_pkgars { - let public_path = "build/id_ed25519.pub.toml"; - pkgar::extract( - public_path, - &archive_path, - sysroot_dir_tmp.to_str().unwrap(), - ) - .map_err(|err| { - format!( - "failed to install '{}' in '{}': {:?}", - archive_path.display(), - sysroot_dir_tmp.display(), - err - ) - })?; - } - - // Move sysroot.tmp to sysroot atomically - rename(&sysroot_dir_tmp, &sysroot_dir)?; - } - - // Rebuild stage if source is newer - //TODO: rebuild on recipe changes - if stage_dir.is_dir() { - let stage_modified = modified_dir(&stage_dir)?; - if stage_modified < source_modified || stage_modified < deps_modified { - eprintln!( - "DEBUG: '{}' newer than '{}'", - source_dir.display(), - stage_dir.display() - ); - remove_all(&stage_dir)?; - } - } - - if !stage_dir.is_dir() { - // Create stage.tmp - let stage_dir_tmp = target_dir.join("stage.tmp"); - create_dir_clean(&stage_dir_tmp)?; - - // Create build, if it does not exist - //TODO: flag for clean builds where build is wiped out - let build_dir = target_dir.join("build"); - if !build_dir.is_dir() { - create_dir_clean(&build_dir)?; - } - - let pre_script = r#"# Common pre script -# Add cookbook bins to path -if [ -z "${IS_REDOX}" ] -then -export PATH="${COOKBOOK_ROOT}/bin:${PATH}" -fi - -# This puts cargo build artifacts in the build directory -export CARGO_TARGET_DIR="${COOKBOOK_BUILD}/target" - -# This adds the sysroot includes for most C compilation -#TODO: check paths for spaces! -export CFLAGS="-I${COOKBOOK_SYSROOT}/include" -export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include" - -# This adds the sysroot libraries and compiles binaries statically for most C compilation -#TODO: check paths for spaces! -export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib --static" - -# These ensure that pkg-config gets the right flags from the sysroot -export PKG_CONFIG_ALLOW_CROSS=1 -export PKG_CONFIG_PATH= -export PKG_CONFIG_LIBDIR="${COOKBOOK_SYSROOT}/lib/pkgconfig" -export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" - -# To build the debug version of a Cargo program, add COOKBOOK_DEBUG=true, and -# to not strip symbols from the final package, add COOKBOOK_NOSTRIP=true to the recipe -# (or to your environment) before calling cookbook_cargo or cookbook_cargo_packages -build_type=release -install_flags= -build_flags=--release -offline_flags= -if [ ! -z "${COOKBOOK_DEBUG}" ] -then - install_flags=--debug - build_flags= - build_type=debug - export CFLAGS="${CFLAGS} -g" - export CPPFLAGS="${CPPFLAGS} -g" -fi - -if [ ! -z "${COOKBOOK_OFFLINE}" ] -then -offline_flags=--offline -fi - -# cargo template -COOKBOOK_CARGO="${COOKBOOK_REDOXER}" -function cookbook_cargo { - "${COOKBOOK_CARGO}" install \ - --path "${COOKBOOK_SOURCE}/${PACKAGE_PATH}" \ - --root "${COOKBOOK_STAGE}/usr" \ - --locked \ - --no-track \ - ${install_flags} \ - ${offline_flags} \ - -j "${COOKBOOK_MAKE_JOBS}" "$@" -} - -# helper for installing binaries that are cargo examples -function cookbook_cargo_examples { - recipe="$(basename "${COOKBOOK_RECIPE}")" - for example in "$@" - do - "${COOKBOOK_CARGO}" build \ - --manifest-path "${COOKBOOK_SOURCE}/${PACKAGE_PATH}/Cargo.toml" \ - --example "${example}" \ - ${build_flags} ${offline_flags} -j "${COOKBOOK_MAKE_JOBS}" - mkdir -pv "${COOKBOOK_STAGE}/usr/bin" - cp -v \ - "target/${TARGET}/${build_type}/examples/${example}" \ - "${COOKBOOK_STAGE}/usr/bin/${recipe}_${example}" - done -} - -# helper for installing binaries that are cargo packages -function cookbook_cargo_packages { - recipe="$(basename "${COOKBOOK_RECIPE}")" - for package in "$@" - do - "${COOKBOOK_CARGO}" build \ - --manifest-path "${COOKBOOK_SOURCE}/${PACKAGE_PATH}/Cargo.toml" \ - --package "${package}" \ - ${build_flags} ${offline_flags} -j "${COOKBOOK_MAKE_JOBS}" - mkdir -pv "${COOKBOOK_STAGE}/usr/bin" - cp -v \ - "target/${TARGET}/${build_type}/${package}" \ - "${COOKBOOK_STAGE}/usr/bin/${recipe}_${package}" - done -} - -# configure template -COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/configure" -COOKBOOK_CONFIGURE_FLAGS=( - --host="${GNU_TARGET}" - --prefix="/usr" - --disable-shared - --enable-static -) -COOKBOOK_MAKE="make" - -if [ -z "${COOKBOOK_MAKE_JOBS}" ] -then -if [ -z "${IS_REDOX}" ] -then -COOKBOOK_MAKE_JOBS="$(nproc)" -else -COOKBOOK_MAKE_JOBS="1" -fi -fi - -function cookbook_configure { - "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" "$@" - "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" - "${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" -} - -COOKBOOK_CMAKE="cmake" -COOKBOOK_NINJA="ninja" -COOKBOOK_CMAKE_FLAGS=( - -DBUILD_SHARED_LIBS=False - -DENABLE_SHARED=False - -DENABLE_STATIC=True -) -function cookbook_cmake { - cat > cross_file.cmake <> cross_file.cmake - echo "set(CMAKE_CXX_COMPILER_LAUNCHER ${CC_WRAPPER})" >> cross_file.cmake - fi - - "${COOKBOOK_CMAKE}" "${COOKBOOK_SOURCE}" \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CROSSCOMPILING=True \ - -DCMAKE_INSTALL_INCLUDEDIR=include \ - -DCMAKE_INSTALL_LIBDIR=lib \ - -DCMAKE_INSTALL_OLDINCLUDEDIR=/include \ - -DCMAKE_INSTALL_PREFIX=/usr \ - -DCMAKE_INSTALL_SBINDIR=bin \ - -DCMAKE_TOOLCHAIN_FILE=cross_file.cmake \ - -GNinja \ - -Wno-dev \ - "${COOKBOOK_CMAKE_FLAGS[@]}" \ - "$@" - - "${COOKBOOK_NINJA}" -j"${COOKBOOK_MAKE_JOBS}" - DESTDIR="${COOKBOOK_STAGE}" "${COOKBOOK_NINJA}" install -j"${COOKBOOK_MAKE_JOBS}" -} - -COOKBOOK_MESON="meson" -COOKBOOK_MESON_FLAGS=( - --buildtype release - --wrap-mode nofallback - --strip - -Ddefault_library=static - -Dprefix=/usr -) -function cookbook_meson { - echo "[binaries]" > cross_file.txt - echo "c = [$(printf "'%s', " $CC | sed 's/, $//')]" >> cross_file.txt - echo "cpp = [$(printf "'%s', " $CXX | sed 's/, $//')]" >> cross_file.txt - echo "ar = '${AR}'" >> cross_file.txt - echo "strip = '${STRIP}'" >> cross_file.txt - echo "pkg-config = '${PKG_CONFIG}'" >> cross_file.txt - echo "llvm-config = '${TARGET}-llvm-config'" >> cross_file.txt - echo "glib-compile-resources = 'glib-compile-resources'" >> cross_file.txt - echo "glib-compile-schemas = 'glib-compile-schemas'" >> cross_file.txt - - echo "[host_machine]" >> cross_file.txt - echo "system = 'redox'" >> cross_file.txt - echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt - echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt - echo "endian = 'little'" >> cross_file.txt - - echo "[paths]" >> cross_file.txt - echo "prefix = '/usr'" >> cross_file.txt - echo "libdir = 'lib'" >> cross_file.txt - echo "bindir = 'bin'" >> cross_file.txt - - echo "[properties]" >> cross_file.txt - echo "needs_exe_wrapper = true" >> cross_file.txt - echo "sys_root = '${COOKBOOK_SYSROOT}'" >> cross_file.txt - echo "c_args = [$(printf "'%s', " $CFLAGS | sed 's/, $//')]" >> cross_file.txt - echo "cpp_args = [$(printf "'%s', " $CPPFLAGS | sed 's/, $//')]" >> cross_file.txt - echo "c_link_args = [$(printf "'%s', " $LDFLAGS | sed 's/, $//')]" >> cross_file.txt - - unset AR - unset AS - unset CC - unset CXX - unset LD - unset NM - unset OBJCOPY - unset OBJDUMP - unset PKG_CONFIG - unset RANLIB - unset READELF - unset STRIP - - "${COOKBOOK_MESON}" setup \ - "${COOKBOOK_SOURCE}" \ - . \ - --cross-file cross_file.txt \ - "${COOKBOOK_MESON_FLAGS[@]}" \ - "$@" - "${COOKBOOK_NINJA}" -j"${COOKBOOK_MAKE_JOBS}" - DESTDIR="${COOKBOOK_STAGE}" "${COOKBOOK_NINJA}" install -j"${COOKBOOK_MAKE_JOBS}" -} - -"#; - - let post_script = r#"# Common post script -# Strip binaries -for dir in "${COOKBOOK_STAGE}/bin" "${COOKBOOK_STAGE}/usr/bin" -do - if [ -d "${dir}" ] && [ -z "${COOKBOOK_NOSTRIP}" ] - then - find "${dir}" -type f -exec "${GNU_TARGET}-strip" -v {} ';' - fi -done - -# Remove libtool files -for dir in "${COOKBOOK_STAGE}/lib" "${COOKBOOK_STAGE}/usr/lib" -do - if [ -d "${dir}" ] - then - find "${dir}" -type f -name '*.la' -exec rm -fv {} ';' - fi -done - -# Remove cargo install files -for file in .crates.toml .crates2.json -do - if [ -f "${COOKBOOK_STAGE}/${file}" ] - then - rm -v "${COOKBOOK_STAGE}/${file}" - fi -done - -# Add pkgname to appstream metadata -for dir in "${COOKBOOK_STAGE}/share/metainfo" "${COOKBOOK_STAGE}/usr/share/metainfo" -do - if [ -d "${dir}" ] - then - find "${dir}" -type f -name '*.xml' -exec sed -i 's||'"${COOKBOOK_NAME}"'|g' {} ';' - fi -done -"#; - - let flags_fn = |name, flags: &Vec| { - format!( - "{name}+=(\n{}\n)\n", - flags - .iter() - .map(|s| format!(" \"{s}\"")) - .collect::>() - .join("\n") - ) - }; - - //TODO: better integration with redoxer (library instead of binary) - //TODO: configurable target - //TODO: Add more configurability, convert scripts to Rust? - let script = match &recipe.build.kind { - BuildKind::Cargo { - package_path, - cargoflags, - } => { - format!( - "PACKAGE_PATH={} cookbook_cargo {cargoflags}", - package_path.as_deref().unwrap_or(".") - ) - } - BuildKind::Configure { configureflags } => format!( - "DYNAMIC_INIT\n{}cookbook_configure", - flags_fn("COOKBOOK_CONFIGURE_FLAGS", configureflags), - ), - BuildKind::Cmake { cmakeflags } => format!( - "DYNAMIC_INIT\n{}cookbook_cmake", - flags_fn("COOKBOOK_CMAKE_FLAGS", cmakeflags), - ), - BuildKind::Meson { mesonflags } => format!( - "DYNAMIC_INIT\n{}cookbook_meson", - flags_fn("COOKBOOK_MESON_FLAGS", mesonflags), - ), - BuildKind::Custom { script } => script.clone(), - BuildKind::Remote => return build_remote(target_dir, name, offline_mode), - BuildKind::None => "".to_owned(), - }; - - let command = { - //TODO: remove unwraps - let cookbook_build = build_dir.canonicalize().unwrap(); - let cookbook_recipe = recipe_dir.canonicalize().unwrap(); - let cookbook_root = Path::new(".").canonicalize().unwrap(); - let cookbook_stage = stage_dir_tmp.canonicalize().unwrap(); - let cookbook_source = source_dir.canonicalize().unwrap(); - let cookbook_sysroot = sysroot_dir.canonicalize().unwrap(); - - let mut command = if is_redox() { - let mut command = Command::new("bash"); - command.arg("-ex"); - command.env("COOKBOOK_REDOXER", "cargo"); - command - } else { - let cookbook_redoxer = Path::new("target/release/cookbook_redoxer") - .canonicalize() - .unwrap(); - let mut command = Command::new(&cookbook_redoxer); - command.arg("env").arg("bash").arg("-ex"); - command.env("COOKBOOK_REDOXER", &cookbook_redoxer); - command - }; - command.current_dir(&cookbook_build); - command.env("COOKBOOK_BUILD", &cookbook_build); - command.env("COOKBOOK_NAME", name.as_str()); - command.env("COOKBOOK_RECIPE", &cookbook_recipe); - command.env("COOKBOOK_ROOT", &cookbook_root); - command.env("COOKBOOK_STAGE", &cookbook_stage); - command.env("COOKBOOK_SOURCE", &cookbook_source); - command.env("COOKBOOK_SYSROOT", &cookbook_sysroot); - if offline_mode { - command.env("COOKBOOK_OFFLINE", "1"); - } - command - }; - - let full_script = format!( - "{}\n{}\n{}\n{}", - pre_script, SHARED_PRESCRIPT, script, post_script - ); - run_command_stdin(command, full_script.as_bytes())?; - - // Move stage.tmp to stage atomically - rename(&stage_dir_tmp, &stage_dir)?; - } - - let auto_deps = build_auto_deps(target_dir, &stage_dir, dep_pkgars)?; - - Ok((stage_dir, auto_deps)) -} - -/// Calculate automatic dependencies -fn build_auto_deps( - target_dir: &Path, - stage_dir: &PathBuf, - dep_pkgars: BTreeSet<(PackageName, PathBuf)>, -) -> Result, String> { - let auto_deps_path = target_dir.join("auto_deps.toml"); - if auto_deps_path.is_file() && modified(&auto_deps_path)? < modified(stage_dir)? { - remove_all(&auto_deps_path)? - } - - let auto_deps = if auto_deps_path.exists() { - let toml_content = - fs::read_to_string(&auto_deps_path).map_err(|_| "failed to read cached auto_deps")?; - let wrapper: AutoDeps = - toml::from_str(&toml_content).map_err(|_| "failed to deserialize cached auto_deps")?; - wrapper.packages - } else { - let packages = auto_deps(stage_dir, &dep_pkgars); - let wrapper = AutoDeps { packages }; - serialize_and_write(&auto_deps_path, &wrapper)?; - wrapper.packages - }; - Ok(auto_deps) -} - -fn package( - stage_dir: &Path, - target_dir: &Path, - name: &PackageName, - recipe: &Recipe, - auto_deps: &BTreeSet, -) -> Result { - let secret_path = "build/id_ed25519.toml"; - let public_path = "build/id_ed25519.pub.toml"; - if !Path::new(secret_path).is_file() || !Path::new(public_path).is_file() { - if !Path::new("build").is_dir() { - create_dir(Path::new("build"))?; - } - let (public_key, secret_key) = pkgar_keys::SecretKeyFile::new(); - public_key - .save(public_path) - .map_err(|err| format!("failed to save pkgar public key: {:?}", err))?; - secret_key - .save(secret_path) - .map_err(|err| format!("failed to save pkgar secret key: {:?}", err))?; - } - - let package_file = target_dir.join("stage.pkgar"); - // Rebuild package if stage is newer - //TODO: rebuild on recipe changes - if package_file.is_file() { - let stage_modified = modified_dir(stage_dir)?; - if modified(&package_file)? < stage_modified { - eprintln!( - "DEBUG: '{}' newer than '{}'", - stage_dir.display(), - package_file.display() - ); - remove_all(&package_file)?; - } - } - if !package_file.is_file() { - pkgar::create( - secret_path, - package_file.to_str().unwrap(), - stage_dir.to_str().unwrap(), - ) - .map_err(|err| format!("failed to create pkgar archive: {:?}", err))?; - - package_toml(target_dir, name, recipe, auto_deps)?; - } - - Ok(package_file) -} - -fn package_toml( - target_dir: &Path, - name: &PackageName, - recipe: &Recipe, - auto_deps: &BTreeSet, -) -> Result<(), String> { - let mut depends = recipe.package.dependencies.clone(); - for dep in auto_deps.iter() { - if !depends.contains(dep) { - depends.push(dep.clone()); - } - } - let package = Package { - name: name.clone(), - version: package_version(recipe), - target: env::var("TARGET").map_err(|err| format!("failed to read TARGET: {:?}", err))?, - depends, - }; - - serialize_and_write(&target_dir.join("stage.toml"), &package)?; - - return Ok(()); -} - -fn package_version(recipe: &Recipe) -> String { - if recipe.build.kind == BuildKind::None { - "".into() - } else if let Some(v) = &recipe.package.version { - v.to_string() - } else if let Some(r) = &recipe.source { - if let Some(m) = r.guess_version() { - m - } else { - "TODO".into() - } - } else { - "TODO".into() - } -} - fn cook_meta( recipe_dir: &Path, name: &PackageName, @@ -752,13 +37,13 @@ fn cook( recipe: &Recipe, is_deps: bool, fetch_only: bool, + build_only: bool, is_offline: bool, ) -> Result<(), String> { if recipe.build.kind == BuildKind::None { return cook_meta(recipe_dir, name, recipe, fetch_only); } - - let source_dir = match is_offline { + let source_dir = match is_offline || build_only { true => fetch_offline(recipe_dir, &recipe.source), false => fetch(recipe_dir, &recipe.source), } @@ -787,18 +72,6 @@ fn cook( Ok(()) } -fn create_target_dir(recipe_dir: &Path) -> Result { - let target_parent_dir = recipe_dir.join("target"); - if !target_parent_dir.is_dir() { - create_dir(&target_parent_dir)?; - } - let target_dir = target_parent_dir.join(redoxer::target()); - if !target_dir.is_dir() { - create_dir(&target_dir)?; - } - Ok(target_dir) -} - fn main() { init_config(); let mut matching = true; @@ -878,6 +151,7 @@ fn main() { &recipe.recipe, recipe.is_deps, fetch_only, + false, is_offline, ) }; @@ -912,32 +186,3 @@ fn main() { } } } - -#[cfg(test)] -mod tests { - use std::os::unix; - - use super::auto_deps; - - #[test] - fn file_system_loop_no_infinite_loop() { - // Hierarchy with an infinite loop - let temp = tempfile::tempdir().unwrap(); - let root = temp.path(); - let dir = root.join("loop"); - unix::fs::symlink(root, &dir).expect("Linking {dir:?} to {root:?}"); - - // Sanity check that we have a loop - assert_eq!( - root.canonicalize().unwrap(), - dir.canonicalize().unwrap(), - "Expected a loop where {dir:?} points to {root:?}" - ); - - let entries = auto_deps(root, &Default::default()); - assert!( - entries.is_empty(), - "auto_deps shouldn't have yielded any libraries" - ); - } -} diff --git a/src/cook.rs b/src/cook.rs index d538dbc3..2a9e8fce 100644 --- a/src/cook.rs +++ b/src/cook.rs @@ -1,6 +1,5 @@ pub mod fetch; pub mod fs; pub mod script; -//TODO: Move rest of cook functions here in the next refactor pub mod build; -//pub mod package; +pub mod package; diff --git a/src/cook/build.rs b/src/cook/build.rs index cda47fd6..bdf7ab88 100644 --- a/src/cook/build.rs +++ b/src/cook/build.rs @@ -1,13 +1,378 @@ +use pkg::recipes; +use pkg::{Package, PackageName}; +use redoxer::target; + +use crate::cook::fs::*; +use crate::cook::script::*; +use crate::recipe::AutoDeps; +use crate::recipe::BuildKind; +use crate::recipe::Recipe; +use std::collections::VecDeque; use std::{ collections::BTreeSet, fs, path::{Path, PathBuf}, + process::Command, + str, + time::SystemTime, }; -use pkg::{Package, PackageName}; -use redoxer::target; +use crate::is_redox; -use crate::{REMOTE_PKG_SOURCE, cook::fs::*, recipe::AutoDeps}; +use crate::REMOTE_PKG_SOURCE; + +fn auto_deps( + stage_dir: &Path, + dep_pkgars: &BTreeSet<(PackageName, PathBuf)>, +) -> BTreeSet { + let mut paths = BTreeSet::new(); + let mut visited = BTreeSet::new(); + // Base directories may need to be updated for packages that place binaries in odd locations. + let mut walk = VecDeque::from([ + stage_dir.join("libexec"), + stage_dir.join("usr/bin"), + stage_dir.join("usr/games"), + stage_dir.join("usr/lib"), + stage_dir.join("usr/libexec"), + ]); + + // Recursively (DFS) walk each directory to ensure nested libs and bins are checked. + while let Some(dir) = walk.pop_front() { + let Ok(dir) = dir.canonicalize() else { + continue; + }; + if visited.contains(&dir) { + #[cfg(debug_assertions)] + eprintln!("DEBUG: auto_deps => Skipping `{dir:?}` (already visited)"); + continue; + } + assert!( + visited.insert(dir.clone()), + "Directory `{:?}` should not be in visited\nVisited: {:#?}", + dir, + visited + ); + + let Ok(read_dir) = fs::read_dir(&dir) else { + continue; + }; + for entry_res in read_dir { + let Ok(entry) = entry_res else { continue }; + let Ok(file_type) = entry.file_type() else { + continue; + }; + if file_type.is_file() { + paths.insert(entry.path()); + } else if file_type.is_dir() { + walk.push_front(entry.path()); + } + } + } + + let mut needed = BTreeSet::new(); + for path in paths { + let Ok(file) = fs::File::open(&path) else { + continue; + }; + let read_cache = object::ReadCache::new(file); + let Ok(object) = object::build::elf::Builder::read(&read_cache) else { + continue; + }; + let Some(dynamic_data) = object.dynamic_data() else { + continue; + }; + for dynamic in dynamic_data { + let object::build::elf::Dynamic::String { tag, val } = dynamic else { + continue; + }; + if *tag == object::elf::DT_NEEDED { + let Ok(name) = str::from_utf8(val) else { + continue; + }; + if let Ok(relative_path) = path.strip_prefix(stage_dir) { + eprintln!("DEBUG: {} needs {}", relative_path.display(), name); + } + needed.insert(name.to_string()); + } + } + } + + let mut missing = needed.clone(); + // relibc and friends will always be installed + for preinstalled in &["libc.so.6", "libgcc_s.so.1", "libstdc++.so.6"] { + missing.remove(*preinstalled); + } + + let mut deps = BTreeSet::new(); + if let Ok(key_file) = pkgar_keys::PublicKeyFile::open("build/id_ed25519.pub.toml") { + for (dep, archive_path) in dep_pkgars.iter() { + let Ok(mut package) = pkgar::PackageFile::new(archive_path, &key_file.pkey) else { + continue; + }; + let Ok(entries) = pkgar_core::PackageSrc::read_entries(&mut package) else { + continue; + }; + for entry in entries { + let Ok(entry_path) = pkgar::ext::EntryExt::check_path(&entry) else { + continue; + }; + for prefix in &["lib", "usr/lib"] { + let Ok(child_path) = entry_path.strip_prefix(prefix) else { + continue; + }; + let Some(child_name) = child_path.to_str() else { + continue; + }; + if needed.contains(child_name) { + eprintln!("DEBUG: {} provides {}", dep, child_name); + deps.insert(dep.clone()); + missing.remove(child_name); + } + } + } + } + } + + for name in missing { + eprintln!("WARN: {} missing", name); + } + + deps +} + +pub fn build( + recipe_dir: &Path, + source_dir: &Path, + target_dir: &Path, + name: &PackageName, + recipe: &Recipe, + offline_mode: bool, + check_source: bool, +) -> Result<(PathBuf, BTreeSet), String> { + let sysroot_dir = target_dir.join("sysroot"); + let stage_dir = target_dir.join("stage"); + + let mut dep_pkgars = BTreeSet::new(); + for dependency in recipe.build.dependencies.iter() { + let dependency_dir = recipes::find(dependency.as_str()); + if dependency_dir.is_none() { + return Err(format!("failed to find recipe directory '{}'", dependency)); + } + dep_pkgars.insert(( + dependency.clone(), + dependency_dir + .unwrap() + .join("target") + .join(redoxer::target()) + .join("stage.pkgar"), + )); + } + + if stage_dir.exists() && !check_source { + let auto_deps = build_auto_deps(target_dir, &stage_dir, dep_pkgars)?; + return Ok((stage_dir, auto_deps)); + } + + let source_modified = modified_dir_ignore_git(source_dir)?; + let deps_modified = dep_pkgars + .iter() + .map(|(_dep, pkgar)| modified(pkgar)) + .max() + .unwrap_or(Ok(SystemTime::UNIX_EPOCH))?; + + // Rebuild sysroot if source is newer + //TODO: rebuild on recipe changes + if sysroot_dir.is_dir() { + let sysroot_modified = modified_dir(&sysroot_dir)?; + if sysroot_modified < source_modified || sysroot_modified < deps_modified { + eprintln!( + "DEBUG: '{}' newer than '{}'", + source_dir.display(), + sysroot_dir.display() + ); + remove_all(&sysroot_dir)?; + } + } + if !sysroot_dir.is_dir() { + // Create sysroot.tmp + let sysroot_dir_tmp = target_dir.join("sysroot.tmp"); + create_dir_clean(&sysroot_dir_tmp)?; + + // Make sure sysroot/usr exists + create_dir(&sysroot_dir_tmp.join("usr"))?; + for folder in &["bin", "include", "lib", "share"] { + // Make sure sysroot/usr/$folder exists + create_dir(&sysroot_dir_tmp.join("usr").join(folder))?; + + // Link sysroot/$folder sysroot/usr/$folder + symlink(Path::new("usr").join(folder), &sysroot_dir_tmp.join(folder))?; + } + + for (_dep, archive_path) in &dep_pkgars { + let public_path = "build/id_ed25519.pub.toml"; + pkgar::extract( + public_path, + &archive_path, + sysroot_dir_tmp.to_str().unwrap(), + ) + .map_err(|err| { + format!( + "failed to install '{}' in '{}': {:?}", + archive_path.display(), + sysroot_dir_tmp.display(), + err + ) + })?; + } + + // Move sysroot.tmp to sysroot atomically + rename(&sysroot_dir_tmp, &sysroot_dir)?; + } + + // Rebuild stage if source is newer + //TODO: rebuild on recipe changes + if stage_dir.is_dir() { + let stage_modified = modified_dir(&stage_dir)?; + if stage_modified < source_modified || stage_modified < deps_modified { + eprintln!( + "DEBUG: '{}' newer than '{}'", + source_dir.display(), + stage_dir.display() + ); + remove_all(&stage_dir)?; + } + } + + if !stage_dir.is_dir() { + // Create stage.tmp + let stage_dir_tmp = target_dir.join("stage.tmp"); + create_dir_clean(&stage_dir_tmp)?; + + // Create build, if it does not exist + //TODO: flag for clean builds where build is wiped out + let build_dir = target_dir.join("build"); + if !build_dir.is_dir() { + create_dir_clean(&build_dir)?; + } + + let flags_fn = |name, flags: &Vec| { + format!( + "{name}+=(\n{}\n)\n", + flags + .iter() + .map(|s| format!(" \"{s}\"")) + .collect::>() + .join("\n") + ) + }; + + //TODO: better integration with redoxer (library instead of binary) + //TODO: configurable target + //TODO: Add more configurability, convert scripts to Rust? + let script = match &recipe.build.kind { + BuildKind::Cargo { + package_path, + cargoflags, + } => { + format!( + "PACKAGE_PATH={} cookbook_cargo {cargoflags}", + package_path.as_deref().unwrap_or(".") + ) + } + BuildKind::Configure { configureflags } => format!( + "DYNAMIC_INIT\n{}cookbook_configure", + flags_fn("COOKBOOK_CONFIGURE_FLAGS", configureflags), + ), + BuildKind::Cmake { cmakeflags } => format!( + "DYNAMIC_INIT\n{}cookbook_cmake", + flags_fn("COOKBOOK_CMAKE_FLAGS", cmakeflags), + ), + BuildKind::Meson { mesonflags } => format!( + "DYNAMIC_INIT\n{}cookbook_meson", + flags_fn("COOKBOOK_MESON_FLAGS", mesonflags), + ), + BuildKind::Custom { script } => script.clone(), + BuildKind::Remote => return build_remote(target_dir, name, offline_mode), + BuildKind::None => "".to_owned(), + }; + + let command = { + //TODO: remove unwraps + let cookbook_build = build_dir.canonicalize().unwrap(); + let cookbook_recipe = recipe_dir.canonicalize().unwrap(); + let cookbook_root = Path::new(".").canonicalize().unwrap(); + let cookbook_stage = stage_dir_tmp.canonicalize().unwrap(); + let cookbook_source = source_dir.canonicalize().unwrap(); + let cookbook_sysroot = sysroot_dir.canonicalize().unwrap(); + + let mut command = if is_redox() { + let mut command = Command::new("bash"); + command.arg("-ex"); + command.env("COOKBOOK_REDOXER", "cargo"); + command + } else { + let cookbook_redoxer = Path::new("target/release/cookbook_redoxer") + .canonicalize() + .unwrap(); + let mut command = Command::new(&cookbook_redoxer); + command.arg("env").arg("bash").arg("-ex"); + command.env("COOKBOOK_REDOXER", &cookbook_redoxer); + command + }; + command.current_dir(&cookbook_build); + command.env("COOKBOOK_BUILD", &cookbook_build); + command.env("COOKBOOK_NAME", name.as_str()); + command.env("COOKBOOK_RECIPE", &cookbook_recipe); + command.env("COOKBOOK_ROOT", &cookbook_root); + command.env("COOKBOOK_STAGE", &cookbook_stage); + command.env("COOKBOOK_SOURCE", &cookbook_source); + command.env("COOKBOOK_SYSROOT", &cookbook_sysroot); + if offline_mode { + command.env("COOKBOOK_OFFLINE", "1"); + } + command + }; + + let full_script = format!( + "{}\n{}\n{}\n{}", + BUILD_PRESCRIPT, SHARED_PRESCRIPT, script, BUILD_POSTSCRIPT + ); + run_command_stdin(command, full_script.as_bytes())?; + + // Move stage.tmp to stage atomically + rename(&stage_dir_tmp, &stage_dir)?; + } + + let auto_deps = build_auto_deps(target_dir, &stage_dir, dep_pkgars)?; + + Ok((stage_dir, auto_deps)) +} + +/// Calculate automatic dependencies +fn build_auto_deps( + target_dir: &Path, + stage_dir: &PathBuf, + dep_pkgars: BTreeSet<(PackageName, PathBuf)>, +) -> Result, String> { + let auto_deps_path = target_dir.join("auto_deps.toml"); + if auto_deps_path.is_file() && modified(&auto_deps_path)? < modified(stage_dir)? { + remove_all(&auto_deps_path)? + } + + let auto_deps = if auto_deps_path.exists() { + let toml_content = + fs::read_to_string(&auto_deps_path).map_err(|_| "failed to read cached auto_deps")?; + let wrapper: AutoDeps = + toml::from_str(&toml_content).map_err(|_| "failed to deserialize cached auto_deps")?; + wrapper.packages + } else { + let packages = auto_deps(stage_dir, &dep_pkgars); + let wrapper = AutoDeps { packages }; + serialize_and_write(&auto_deps_path, &wrapper)?; + wrapper.packages + }; + Ok(auto_deps) +} fn get_remote_url(name: &PackageName, ext: &str) -> String { return format!("{}/{}/{}.{}", REMOTE_PKG_SOURCE, target(), name, ext); @@ -82,3 +447,32 @@ pub fn build_remote( Ok((stage_dir, auto_deps)) } + +#[cfg(test)] +mod tests { + use std::os::unix; + + use super::auto_deps; + + #[test] + fn file_system_loop_no_infinite_loop() { + // Hierarchy with an infinite loop + let temp = tempfile::tempdir().unwrap(); + let root = temp.path(); + let dir = root.join("loop"); + unix::fs::symlink(root, &dir).expect("Linking {dir:?} to {root:?}"); + + // Sanity check that we have a loop + assert_eq!( + root.canonicalize().unwrap(), + dir.canonicalize().unwrap(), + "Expected a loop where {dir:?} points to {root:?}" + ); + + let entries = auto_deps(root, &Default::default()); + assert!( + entries.is_empty(), + "auto_deps shouldn't have yielded any libraries" + ); + } +} diff --git a/src/cook/fs.rs b/src/cook/fs.rs index f156bb10..a3295d63 100644 --- a/src/cook/fs.rs +++ b/src/cook/fs.rs @@ -33,6 +33,18 @@ pub fn create_dir_clean(dir: &Path) -> Result<(), String> { create_dir(dir) } +pub fn create_target_dir(recipe_dir: &Path) -> Result { + let target_parent_dir = recipe_dir.join("target"); + if !target_parent_dir.is_dir() { + create_dir(&target_parent_dir)?; + } + let target_dir = target_parent_dir.join(redoxer::target()); + if !target_dir.is_dir() { + create_dir(&target_dir)?; + } + Ok(target_dir) +} + pub fn copy_dir_all(src: impl AsRef, dst: impl AsRef) -> io::Result<()> { fs::create_dir_all(&dst)?; for entry in fs::read_dir(src)? { diff --git a/src/cook/package.rs b/src/cook/package.rs new file mode 100644 index 00000000..aaee9fa6 --- /dev/null +++ b/src/cook/package.rs @@ -0,0 +1,102 @@ +use std::{ + collections::BTreeSet, + env, + path::{Path, PathBuf}, +}; + +use pkg::{Package, PackageName}; + +use crate::{ + cook::fs::*, + recipe::{BuildKind, Recipe}, +}; + +pub fn package( + stage_dir: &Path, + target_dir: &Path, + name: &PackageName, + recipe: &Recipe, + auto_deps: &BTreeSet, +) -> Result { + let secret_path = "build/id_ed25519.toml"; + let public_path = "build/id_ed25519.pub.toml"; + if !Path::new(secret_path).is_file() || !Path::new(public_path).is_file() { + if !Path::new("build").is_dir() { + create_dir(Path::new("build"))?; + } + let (public_key, secret_key) = pkgar_keys::SecretKeyFile::new(); + public_key + .save(public_path) + .map_err(|err| format!("failed to save pkgar public key: {:?}", err))?; + secret_key + .save(secret_path) + .map_err(|err| format!("failed to save pkgar secret key: {:?}", err))?; + } + + let package_file = target_dir.join("stage.pkgar"); + // Rebuild package if stage is newer + //TODO: rebuild on recipe changes + if package_file.is_file() { + let stage_modified = modified_dir(stage_dir)?; + if modified(&package_file)? < stage_modified { + eprintln!( + "DEBUG: '{}' newer than '{}'", + stage_dir.display(), + package_file.display() + ); + remove_all(&package_file)?; + } + } + if !package_file.is_file() { + pkgar::create( + secret_path, + package_file.to_str().unwrap(), + stage_dir.to_str().unwrap(), + ) + .map_err(|err| format!("failed to create pkgar archive: {:?}", err))?; + + package_toml(target_dir, name, recipe, auto_deps)?; + } + + Ok(package_file) +} + +pub fn package_toml( + target_dir: &Path, + name: &PackageName, + recipe: &Recipe, + auto_deps: &BTreeSet, +) -> Result<(), String> { + let mut depends = recipe.package.dependencies.clone(); + for dep in auto_deps.iter() { + if !depends.contains(dep) { + depends.push(dep.clone()); + } + } + let package = Package { + name: name.clone(), + version: package_version(recipe), + target: env::var("TARGET").map_err(|err| format!("failed to read TARGET: {:?}", err))?, + depends, + }; + + serialize_and_write(&target_dir.join("stage.toml"), &package)?; + + return Ok(()); +} + +fn package_version(recipe: &Recipe) -> String { + if recipe.build.kind == BuildKind::None { + "".into() + } else if let Some(v) = &recipe.package.version { + v.to_string() + } else if let Some(r) = &recipe.source { + if let Some(m) = r.guess_version() { + m + } else { + "TODO".into() + } + } else { + "TODO".into() + } +} diff --git a/src/cook/script.rs b/src/cook/script.rs index aa531d69..c7311ac2 100644 --- a/src/cook/script.rs +++ b/src/cook/script.rs @@ -1,5 +1,4 @@ -//TODO: pub(crate) -pub static SHARED_PRESCRIPT: &str = r#" +pub(crate) static SHARED_PRESCRIPT: &str = r#" # Build dynamically function DYNAMIC_INIT { COOKBOOK_AUTORECONF="autoreconf" @@ -78,6 +77,270 @@ function GNU_CONFIG_GET { } "#; +pub(crate) static BUILD_PRESCRIPT: &str = r#" +# Add cookbook bins to path +if [ -z "${IS_REDOX}" ] +then +export PATH="${COOKBOOK_ROOT}/bin:${PATH}" +fi + +# This puts cargo build artifacts in the build directory +export CARGO_TARGET_DIR="${COOKBOOK_BUILD}/target" + +# This adds the sysroot includes for most C compilation +#TODO: check paths for spaces! +export CFLAGS="-I${COOKBOOK_SYSROOT}/include" +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include" + +# This adds the sysroot libraries and compiles binaries statically for most C compilation +#TODO: check paths for spaces! +export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib --static" + +# These ensure that pkg-config gets the right flags from the sysroot +export PKG_CONFIG_ALLOW_CROSS=1 +export PKG_CONFIG_PATH= +export PKG_CONFIG_LIBDIR="${COOKBOOK_SYSROOT}/lib/pkgconfig" +export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" + +# To build the debug version of a Cargo program, add COOKBOOK_DEBUG=true, and +# to not strip symbols from the final package, add COOKBOOK_NOSTRIP=true to the recipe +# (or to your environment) before calling cookbook_cargo or cookbook_cargo_packages +build_type=release +install_flags= +build_flags=--release +offline_flags= +if [ ! -z "${COOKBOOK_DEBUG}" ] +then + install_flags=--debug + build_flags= + build_type=debug + export CFLAGS="${CFLAGS} -g" + export CPPFLAGS="${CPPFLAGS} -g" +fi + +if [ ! -z "${COOKBOOK_OFFLINE}" ] +then +offline_flags=--offline +fi + +# cargo template +COOKBOOK_CARGO="${COOKBOOK_REDOXER}" +function cookbook_cargo { + "${COOKBOOK_CARGO}" install \ + --path "${COOKBOOK_SOURCE}/${PACKAGE_PATH}" \ + --root "${COOKBOOK_STAGE}/usr" \ + --locked \ + --no-track \ + ${install_flags} \ + ${offline_flags} \ + -j "${COOKBOOK_MAKE_JOBS}" "$@" +} + +# helper for installing binaries that are cargo examples +function cookbook_cargo_examples { + recipe="$(basename "${COOKBOOK_RECIPE}")" + for example in "$@" + do + "${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/${PACKAGE_PATH}/Cargo.toml" \ + --example "${example}" \ + ${build_flags} ${offline_flags} -j "${COOKBOOK_MAKE_JOBS}" + mkdir -pv "${COOKBOOK_STAGE}/usr/bin" + cp -v \ + "target/${TARGET}/${build_type}/examples/${example}" \ + "${COOKBOOK_STAGE}/usr/bin/${recipe}_${example}" + done +} + +# helper for installing binaries that are cargo packages +function cookbook_cargo_packages { + recipe="$(basename "${COOKBOOK_RECIPE}")" + for package in "$@" + do + "${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/${PACKAGE_PATH}/Cargo.toml" \ + --package "${package}" \ + ${build_flags} ${offline_flags} -j "${COOKBOOK_MAKE_JOBS}" + mkdir -pv "${COOKBOOK_STAGE}/usr/bin" + cp -v \ + "target/${TARGET}/${build_type}/${package}" \ + "${COOKBOOK_STAGE}/usr/bin/${recipe}_${package}" + done +} + +# configure template +COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/configure" +COOKBOOK_CONFIGURE_FLAGS=( + --host="${GNU_TARGET}" + --prefix="/usr" + --disable-shared + --enable-static +) +COOKBOOK_MAKE="make" + +if [ -z "${COOKBOOK_MAKE_JOBS}" ] +then +if [ -z "${IS_REDOX}" ] +then +COOKBOOK_MAKE_JOBS="$(nproc)" +else +COOKBOOK_MAKE_JOBS="1" +fi +fi + +function cookbook_configure { + "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" "$@" + "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" + "${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" +} + +COOKBOOK_CMAKE="cmake" +COOKBOOK_NINJA="ninja" +COOKBOOK_CMAKE_FLAGS=( + -DBUILD_SHARED_LIBS=False + -DENABLE_SHARED=False + -DENABLE_STATIC=True +) +function cookbook_cmake { + cat > cross_file.cmake <> cross_file.cmake + echo "set(CMAKE_CXX_COMPILER_LAUNCHER ${CC_WRAPPER})" >> cross_file.cmake + fi + + "${COOKBOOK_CMAKE}" "${COOKBOOK_SOURCE}" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CROSSCOMPILING=True \ + -DCMAKE_INSTALL_INCLUDEDIR=include \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DCMAKE_INSTALL_OLDINCLUDEDIR=/include \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_SBINDIR=bin \ + -DCMAKE_TOOLCHAIN_FILE=cross_file.cmake \ + -GNinja \ + -Wno-dev \ + "${COOKBOOK_CMAKE_FLAGS[@]}" \ + "$@" + + "${COOKBOOK_NINJA}" -j"${COOKBOOK_MAKE_JOBS}" + DESTDIR="${COOKBOOK_STAGE}" "${COOKBOOK_NINJA}" install -j"${COOKBOOK_MAKE_JOBS}" +} + +COOKBOOK_MESON="meson" +COOKBOOK_MESON_FLAGS=( + --buildtype release + --wrap-mode nofallback + --strip + -Ddefault_library=static + -Dprefix=/usr +) +function cookbook_meson { + echo "[binaries]" > cross_file.txt + echo "c = [$(printf "'%s', " $CC | sed 's/, $//')]" >> cross_file.txt + echo "cpp = [$(printf "'%s', " $CXX | sed 's/, $//')]" >> cross_file.txt + echo "ar = '${AR}'" >> cross_file.txt + echo "strip = '${STRIP}'" >> cross_file.txt + echo "pkg-config = '${PKG_CONFIG}'" >> cross_file.txt + echo "llvm-config = '${TARGET}-llvm-config'" >> cross_file.txt + echo "glib-compile-resources = 'glib-compile-resources'" >> cross_file.txt + echo "glib-compile-schemas = 'glib-compile-schemas'" >> cross_file.txt + + echo "[host_machine]" >> cross_file.txt + echo "system = 'redox'" >> cross_file.txt + echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt + echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt + echo "endian = 'little'" >> cross_file.txt + + echo "[paths]" >> cross_file.txt + echo "prefix = '/usr'" >> cross_file.txt + echo "libdir = 'lib'" >> cross_file.txt + echo "bindir = 'bin'" >> cross_file.txt + + echo "[properties]" >> cross_file.txt + echo "needs_exe_wrapper = true" >> cross_file.txt + echo "sys_root = '${COOKBOOK_SYSROOT}'" >> cross_file.txt + echo "c_args = [$(printf "'%s', " $CFLAGS | sed 's/, $//')]" >> cross_file.txt + echo "cpp_args = [$(printf "'%s', " $CPPFLAGS | sed 's/, $//')]" >> cross_file.txt + echo "c_link_args = [$(printf "'%s', " $LDFLAGS | sed 's/, $//')]" >> cross_file.txt + + unset AR + unset AS + unset CC + unset CXX + unset LD + unset NM + unset OBJCOPY + unset OBJDUMP + unset PKG_CONFIG + unset RANLIB + unset READELF + unset STRIP + + "${COOKBOOK_MESON}" setup \ + "${COOKBOOK_SOURCE}" \ + . \ + --cross-file cross_file.txt \ + "${COOKBOOK_MESON_FLAGS[@]}" \ + "$@" + "${COOKBOOK_NINJA}" -j"${COOKBOOK_MAKE_JOBS}" + DESTDIR="${COOKBOOK_STAGE}" "${COOKBOOK_NINJA}" install -j"${COOKBOOK_MAKE_JOBS}" +} +"#; + +pub(crate) static BUILD_POSTSCRIPT: &str = r#" +# Strip binaries +for dir in "${COOKBOOK_STAGE}/bin" "${COOKBOOK_STAGE}/usr/bin" +do + if [ -d "${dir}" ] && [ -z "${COOKBOOK_NOSTRIP}" ] + then + find "${dir}" -type f -exec "${GNU_TARGET}-strip" -v {} ';' + fi +done + +# Remove libtool files +for dir in "${COOKBOOK_STAGE}/lib" "${COOKBOOK_STAGE}/usr/lib" +do + if [ -d "${dir}" ] + then + find "${dir}" -type f -name '*.la' -exec rm -fv {} ';' + fi +done + +# Remove cargo install files +for file in .crates.toml .crates2.json +do + if [ -f "${COOKBOOK_STAGE}/${file}" ] + then + rm -v "${COOKBOOK_STAGE}/${file}" + fi +done + +# Add pkgname to appstream metadata +for dir in "${COOKBOOK_STAGE}/share/metainfo" "${COOKBOOK_STAGE}/usr/share/metainfo" +do + if [ -d "${dir}" ] + then + find "${dir}" -type f -name '*.xml' -exec sed -i 's||'"${COOKBOOK_NAME}"'|g' {} ';' + fi +done +"#; + pub(crate) static GIT_RESET_BRANCH: &str = r#" ORIGIN_BRANCH="$(git branch --remotes | grep '^ origin/HEAD -> ' | cut -d ' ' -f 5-)" if [ -n "$BRANCH" ] From 771f036c0a3392a9ab458a97dd39f964bc6a8f23 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Thu, 23 Oct 2025 20:04:38 +0700 Subject: [PATCH 2956/3180] Fix fmt --- src/cook.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cook.rs b/src/cook.rs index 2a9e8fce..75221c13 100644 --- a/src/cook.rs +++ b/src/cook.rs @@ -1,5 +1,5 @@ +pub mod build; pub mod fetch; pub mod fs; -pub mod script; -pub mod build; pub mod package; +pub mod script; From 7d79ecdad184deead36cf6dd2be0d7d58f254ffa Mon Sep 17 00:00:00 2001 From: Wildan M Date: Thu, 23 Oct 2025 20:07:50 +0700 Subject: [PATCH 2957/3180] Remove build_only --- src/bin/cook.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index a6aa5462..e87fecdc 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -37,13 +37,12 @@ fn cook( recipe: &Recipe, is_deps: bool, fetch_only: bool, - build_only: bool, is_offline: bool, ) -> Result<(), String> { if recipe.build.kind == BuildKind::None { return cook_meta(recipe_dir, name, recipe, fetch_only); } - let source_dir = match is_offline || build_only { + let source_dir = match is_offline { true => fetch_offline(recipe_dir, &recipe.source), false => fetch(recipe_dir, &recipe.source), } @@ -151,7 +150,6 @@ fn main() { &recipe.recipe, recipe.is_deps, fetch_only, - false, is_offline, ) }; From f41b6845b3ac94e33dc7c211053cd60bb00a22f3 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Thu, 23 Oct 2025 20:50:25 +0700 Subject: [PATCH 2958/3180] Rename build.rs to cook_build.rs --- src/bin/cook.rs | 2 +- src/cook.rs | 3 ++- src/cook/{build.rs => cook_build.rs} | 0 3 files changed, 3 insertions(+), 2 deletions(-) rename src/cook/{build.rs => cook_build.rs} (100%) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index e87fecdc..38d126c9 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -10,7 +10,7 @@ use cookbook::recipe::{BuildKind, CookRecipe, Recipe}; use pkg::PackageName; use cookbook::config::init_config; -use cookbook::cook::build::build; +use cookbook::cook::cook_build::build; use termion::{color, style}; fn cook_meta( diff --git a/src/cook.rs b/src/cook.rs index 75221c13..4ffa8a7b 100644 --- a/src/cook.rs +++ b/src/cook.rs @@ -1,4 +1,5 @@ -pub mod build; +// avoid confusion with build.rs +pub mod cook_build; pub mod fetch; pub mod fs; pub mod package; diff --git a/src/cook/build.rs b/src/cook/cook_build.rs similarity index 100% rename from src/cook/build.rs rename to src/cook/cook_build.rs From 8e2ac316e493a2b4254a07a6ca45f303bee84e65 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Fri, 24 Oct 2025 16:18:11 +0700 Subject: [PATCH 2959/3180] Compiling with direct call to cook --- src/bin/cook.rs | 32 +---- src/bin/repo.rs | 275 ++++++++++++++++++++++++---------------- src/bin/repo_builder.rs | 3 + src/config.rs | 84 +++++++++++- src/cook/cook_build.rs | 4 + src/cook/fetch.rs | 33 +++-- src/cook/package.rs | 19 +-- src/recipe.rs | 67 ++++++---- 8 files changed, 335 insertions(+), 182 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 38d126c9..d5299d70 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1,36 +1,17 @@ -use std::collections::BTreeSet; use std::path::Path; use std::{env, process}; use cookbook::WALK_DEPTH; use cookbook::cook::fetch::{fetch, fetch_offline}; use cookbook::cook::fs::create_target_dir; -use cookbook::cook::package::{package, package_toml}; -use cookbook::recipe::{BuildKind, CookRecipe, Recipe}; +use cookbook::cook::package::package; +use cookbook::recipe::{CookRecipe, Recipe}; use pkg::PackageName; use cookbook::config::init_config; use cookbook::cook::cook_build::build; use termion::{color, style}; -fn cook_meta( - recipe_dir: &Path, - name: &PackageName, - recipe: &Recipe, - fetch_only: bool, -) -> Result<(), String> { - if fetch_only { - return Ok(()); - } - - let target_dir = create_target_dir(recipe_dir)?; - let empty_deps = BTreeSet::new(); - let _package_file = package_toml(&target_dir, name, recipe, &empty_deps) - .map_err(|err| format!("failed to package: {}", err))?; - - Ok(()) -} - fn cook( recipe_dir: &Path, name: &PackageName, @@ -39,12 +20,9 @@ fn cook( fetch_only: bool, is_offline: bool, ) -> Result<(), String> { - if recipe.build.kind == BuildKind::None { - return cook_meta(recipe_dir, name, recipe, fetch_only); - } let source_dir = match is_offline { - true => fetch_offline(recipe_dir, &recipe.source), - false => fetch(recipe_dir, &recipe.source), + true => fetch_offline(recipe_dir, recipe), + false => fetch(recipe_dir, recipe), } .map_err(|err| format!("failed to fetch: {}", err))?; @@ -65,7 +43,7 @@ fn cook( ) .map_err(|err| format!("failed to build: {}", err))?; - let _package_file = package(&stage_dir, &target_dir, name, recipe, &auto_deps) + package(&stage_dir, &target_dir, name, recipe, &auto_deps) .map_err(|err| format!("failed to package: {}", err))?; Ok(()) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index ec0a604f..cab4ddcd 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -1,9 +1,18 @@ -use std::collections::BTreeSet; -use std::path::{Path, PathBuf}; -use std::process::{self, Command}; +use std::path::PathBuf; +use std::process; +use std::str::FromStr; use std::{env, fs}; -use anyhow::{Context, anyhow}; +use anyhow::{Context, anyhow, bail}; +use cookbook::WALK_DEPTH; +use cookbook::config::{CookConfig, get_config, init_config}; +use cookbook::cook::cook_build::build; +use cookbook::cook::fetch::{fetch, fetch_offline}; +use cookbook::cook::fs::create_target_dir; +use cookbook::cook::package::package; +use cookbook::recipe::CookRecipe; +use pkg::PackageName; +use pkg::package::PackageError; // A repo manager, to replace repo.sh @@ -36,16 +45,51 @@ struct CliConfig { repo_dir: PathBuf, sysroot_dir: PathBuf, with_package_deps: bool, - offline: bool, - nonstop: bool, all: bool, - quiet: bool, + cook: CookConfig, +} + +#[derive(PartialEq)] +enum CliCommand { + Fetch, + Cook, + Unfetch, + Clean, + Push, +} + +impl FromStr for CliCommand { + type Err = anyhow::Error; + + fn from_str(s: &str) -> Result { + match s { + "fetch" => Ok(CliCommand::Fetch), + "cook" => Ok(CliCommand::Cook), + "unfetch" => Ok(CliCommand::Unfetch), + "clean" => Ok(CliCommand::Clean), + "push" => Ok(CliCommand::Push), + _ => Err(anyhow!("Unknown command '{}'", s)), + } + } +} + +impl ToString for CliCommand { + fn to_string(&self) -> String { + match self { + CliCommand::Fetch => "fetch".to_string(), + CliCommand::Cook => "cook".to_string(), + CliCommand::Unfetch => "unfetch".to_string(), + CliCommand::Clean => "clean".to_string(), + CliCommand::Push => "push".to_string(), + } + } } impl CliConfig { fn new() -> Result { let current_dir = env::current_dir()?; Ok(CliConfig { + //FIXME: This config is unused as redox-pkg harcoded this to $PWD/recipes cookbook_dir: current_dir.join("recipes"), repo_dir: current_dir.join("repo"), sysroot_dir: if cfg!(target_os = "redox") { @@ -54,15 +98,14 @@ impl CliConfig { current_dir.join("sysroot") }, with_package_deps: false, - offline: false, - nonstop: false, + cook: get_config().cook.clone(), all: false, - quiet: false, }) } } fn main() { + init_config(); main_inner().unwrap(); } @@ -74,10 +117,29 @@ fn main_inner() -> anyhow::Result<()> { process::exit(1); } + let (config, command, recipe_names) = parse_args(args)?; + + for recipe in &recipe_names { + match command { + CliCommand::Fetch => handle_cook(recipe, &config, true, recipe.is_deps)?, + CliCommand::Cook => handle_cook(recipe, &config, false, recipe.is_deps)?, + CliCommand::Unfetch => handle_clean(recipe, &config, true, true)?, + CliCommand::Clean => handle_clean(recipe, &config, false, true)?, + CliCommand::Push => handle_push(recipe, &config)?, + } + } + + println!( + "\nCommand '{}' completed for all specified recipes.", + command.to_string(), + ); + Ok(()) +} + +fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec)> { let mut config = CliConfig::new()?; let mut command: Option = None; - let mut recipe_paths: BTreeSet = BTreeSet::new(); - + let mut recipe_names: Vec = Vec::new(); for arg in args { if arg.starts_with("--") { if let Some((key, value)) = arg.split_once('=') { @@ -93,10 +155,7 @@ fn main_inner() -> anyhow::Result<()> { } else { match arg.as_str() { "--with-package-deps" => config.with_package_deps = true, - "--offline" => config.offline = true, - "--nonstop" => config.nonstop = true, "--all" => config.all = true, - "--quiet" => config.quiet = true, _ => { eprintln!("Error: Unknown flag: {}", arg); process::exit(1); @@ -105,7 +164,6 @@ fn main_inner() -> anyhow::Result<()> { } } else if arg.starts_with('-') { match arg.as_str() { - "-q" => config.quiet = true, _ => { eprintln!("Error: Unknown flag: {}", arg); process::exit(1); @@ -116,122 +174,117 @@ fn main_inner() -> anyhow::Result<()> { command = Some(arg); } else { // Subsequent non-flag arguments are recipe names - if let Some(path) = pkg::recipes::find(&arg) { - recipe_paths.insert(path.to_owned()); - } else { - panic!("Error: recipe not found '{arg}'"); - } + recipe_names.push(arg.try_into().context("Invalid package name")?); } } - let command = command.ok_or("Error: No command specified.").unwrap(); - - if !config.all && recipe_paths.is_empty() { - panic!("Error: No recipe names provided and --all flag was not used."); - } - if config.all && !recipe_paths.is_empty() { - panic!("Error: Cannot specify recipe names when using the --all flag."); - } - - if config.all { - recipe_paths = pkg::recipes::list(""); - } - - for recipe_path in &recipe_paths { - match command.as_str() { - "fetch" => handle_fetch(recipe_path, &config)?, - "cook" => handle_cook(recipe_path, &config)?, - "unfetch" => handle_unfetch(recipe_path, &config)?, - "clean" => handle_clean(recipe_path, &config)?, - "push" => handle_push(recipe_path, &config)?, - _ => { - eprintln!("Error: Unknown command '{}'\n", command); - println!("{}", REPO_HELP_STR); - process::exit(1); - } + let command = command.ok_or(anyhow!("Error: No command specified."))?; + let command: CliCommand = str::parse(&command)?; + let recipes = if config.all { + if !recipe_names.is_empty() { + bail!("Cannot specify recipe names when using the --all flag."); } + if command == CliCommand::Cook + || command == CliCommand::Fetch + || command == CliCommand::Push + { + // because read_recipe is false below + // some recipes on wip folders are invalid anyway + bail!( + "Refusing to run an unrealistic command to {} all recipes", + command.to_string() + ); + } + + pkg::recipes::list("") + .iter() + .map(|f| CookRecipe::from_path(f, false)) + .collect::, PackageError>>()? + } else { + if recipe_names.is_empty() { + bail!("Error: No recipe names provided and --all flag was not used."); + } + if config.with_package_deps { + recipe_names = CookRecipe::get_package_deps_recursive(&recipe_names, WALK_DEPTH) + .context("failed get package deps")?; + } + + CookRecipe::get_build_deps_recursive(&recipe_names, !config.with_package_deps)? + }; + + Ok((config, command, recipes)) +} + +fn handle_cook( + recipe: &CookRecipe, + config: &CliConfig, + fetch_only: bool, + is_deps: bool, +) -> anyhow::Result<()> { + let recipe_dir = &recipe.dir; + let source_dir = match config.cook.offline { + true => fetch_offline(recipe_dir, &recipe.recipe), + false => fetch(recipe_dir, &recipe.recipe), + } + .map_err(|e| anyhow!(e))?; + + if fetch_only { + return Ok(()); } - println!( - "\nCommand '{}' completed for all specified recipes.", - command - ); + let target_dir = create_target_dir(recipe_dir).map_err(|e| anyhow!(e))?; + + let (stage_dir, auto_deps) = build( + recipe_dir, + &source_dir, + &target_dir, + &recipe.name, + &recipe.recipe, + config.cook.offline, + !is_deps, + ) + .map_err(|err| anyhow!("failed to build: {}", err))?; + + package( + &stage_dir, + &target_dir, + &recipe.name, + &recipe.recipe, + &auto_deps, + ) + .map_err(|err| anyhow!("failed to package: {}", err))?; + Ok(()) } -fn handle_fetch(recipe_path: &Path, config: &CliConfig) -> anyhow::Result<()> { - let mut cmd = Command::new("cook"); - cmd.arg("--fetch-only"); - if config.with_package_deps { - cmd.arg("--with-package-deps"); +fn handle_clean( + recipe: &CookRecipe, + _config: &CliConfig, + source: bool, + target: bool, +) -> anyhow::Result<()> { + let dir = recipe.dir.join("target"); + if dir.exists() && target { + fs::remove_dir_all(&dir).context(format!("failed to delete {}", dir.display()))?; } - if config.offline { - cmd.arg("--offline"); - } - if config.quiet { - cmd.arg("--quiet"); - } - cmd.arg(recipe_path); - let status = cmd.status().context("Failed to execute cook command")?; - if !status.success() && !config.nonstop { - return Err(anyhow!( - "Cook command failed for recipe '{}' with exit code: {}", - recipe_path.display(), - status.code().unwrap_or(1) - )); + let dir = recipe.dir.join("source"); + if dir.exists() && source { + fs::remove_dir_all(&dir).context(format!("failed to delete {}", dir.display()))?; } Ok(()) } -fn handle_cook(recipe_path: &Path, config: &CliConfig) -> anyhow::Result<()> { - let mut cmd = Command::new("cook"); - cmd.arg(recipe_path); - if config.with_package_deps { - cmd.arg("--with-package-deps"); - } - if config.offline { - cmd.arg("--offline"); - } - if config.quiet { - cmd.arg("--quiet"); - } - let status = cmd.status().context("Failed to execute cook command")?; - if !status.success() && !config.nonstop { - return Err(anyhow!( - "Cook command failed for recipe '{}' with exit code: {}", - recipe_path.display(), - status.code().unwrap_or(1) - )); - } - Ok(()) -} - -fn handle_unfetch(recipe_path: &Path, _config: &CliConfig) -> anyhow::Result<()> { - let dir = recipe_path.join("source"); - if dir.exists() { - fs::remove_dir_all(dir).context(format!("failed to delete {}", recipe_path.display()))?; - } - Ok(()) -} - -fn handle_clean(recipe_path: &Path, _config: &CliConfig) -> anyhow::Result<()> { - let dir = recipe_path.join("target"); - if dir.exists() { - fs::remove_dir_all(dir).context(format!("failed to delete {}", recipe_path.display()))?; - } - Ok(()) -} - -fn handle_push(recipe_path: &Path, config: &CliConfig) -> anyhow::Result<()> { +fn handle_push(recipe: &CookRecipe, config: &CliConfig) -> anyhow::Result<()> { let public_path = "build/id_ed25519.pub.toml"; + let archive_path = config.repo_dir.join(recipe.name.as_str()); pkgar::extract( public_path, - config.sysroot_dir.as_path(), + archive_path.as_path(), config.sysroot_dir.to_str().unwrap(), ) .context(format!( "failed to install '{}' in '{}'", - recipe_path.display(), + archive_path.display(), config.sysroot_dir.display(), )) } diff --git a/src/bin/repo_builder.rs b/src/bin/repo_builder.rs index a94123df..4748560e 100644 --- a/src/bin/repo_builder.rs +++ b/src/bin/repo_builder.rs @@ -26,6 +26,9 @@ fn main() -> Result<(), Box> { .next() .expect("Usage: repo_builder ..."); let repo_path = Path::new(&repo_dir); + if !repo_path.is_dir() { + fs::create_dir_all(repo_path)?; + } // Runtime dependencies include both `[package.dependencies]` and dynamically // linked packages discovered by auto_deps. diff --git a/src/config.rs b/src/config.rs index 54d6f837..d79848fb 100644 --- a/src/config.rs +++ b/src/config.rs @@ -1,16 +1,58 @@ -use std::{collections::HashMap, fs, sync::OnceLock}; +use std::{collections::HashMap, env, fs, str::FromStr, sync::OnceLock}; use serde::{Deserialize, Serialize}; +#[derive(Debug, Default, Clone, Deserialize, PartialEq, Serialize)] +pub struct CookConfigOpt { + /// whether to run offline + pub offline: Option, + /// whether to set jobs number instead of from nproc + pub jobs: Option, + /// whether to use TUI to allow parallel build + /// default value is yes if "CI" env unset and STDIN is open. + pub tui: Option, + /// whether to ignore build errors + pub nonstop: Option, + /// whether to not capture build output, + /// default is true if "tui" is false. + /// build failure still be printed anyway + pub verbose: Option, +} + +#[derive(Debug, Default, Clone, Deserialize, PartialEq, Serialize)] +pub struct CookConfig { + pub offline: bool, + pub jobs: usize, + pub tui: bool, + pub nonstop: bool, + pub verbose: bool, +} + +impl From for CookConfig { + fn from(value: CookConfigOpt) -> Self { + CookConfig { + offline: value.offline.unwrap(), + jobs: value.jobs.unwrap(), + tui: value.tui.unwrap(), + nonstop: value.nonstop.unwrap(), + verbose: value.verbose.unwrap(), + } + } +} + #[derive(Debug, Default, Deserialize, PartialEq, Serialize)] pub struct CookbookConfig { + #[serde(rename = "cook")] + cook_opt: CookConfigOpt, + #[serde(skip)] + pub cook: CookConfig, pub mirrors: HashMap, } static CONFIG: OnceLock = OnceLock::new(); pub fn init_config() { - let config: CookbookConfig = if fs::exists("cookbook.toml").unwrap_or(false) { + let mut config: CookbookConfig = if fs::exists("cookbook.toml").unwrap_or(false) { let toml_content = fs::read_to_string("cookbook.toml") .map_err(|e| format!("Unable to read config: {:?}", e)) .unwrap(); @@ -21,9 +63,47 @@ pub fn init_config() { CookbookConfig::default() }; + if config.cook_opt.tui.is_none() { + config.cook_opt.tui = Some(!env::var("CI").is_ok_and(|s| !s.is_empty())); + } + if config.cook_opt.jobs.is_none() { + config.cook_opt.jobs = Some(extract_env( + "COOKBOOK_MAKE_JOBS", + std::thread::available_parallelism() + .map(|f| usize::from(f)) + .unwrap_or(1), + )); + } + if config.cook_opt.offline.is_none() { + config.cook_opt.offline = Some(extract_env("COOKBOOK_OFFLINE", false)); + } + if config.cook_opt.verbose.is_none() { + config.cook_opt.verbose = Some(extract_env( + "COOKBOOK_VERBOSE", + !config.cook_opt.tui.unwrap(), + )); + } + if config.cook_opt.nonstop.is_none() { + config.cook_opt.nonstop = Some(extract_env("COOKBOOK_NONSTOP", false)); + } + + config.cook = CookConfig::from(config.cook_opt.clone()); + CONFIG.set(config).expect("config is initialized twice"); } +fn extract_env(key: &str, default: T) -> T { + if let Ok(e) = env::var(&key) { + str::parse(&e).unwrap_or(default) + } else { + default + } +} + +pub fn get_config() -> &'static CookbookConfig { + return CONFIG.get().expect("Configuration is not initialized"); +} + pub fn translate_mirror(original_url: &str) -> String { let config = CONFIG.get().expect("Configuration is not initialized"); diff --git a/src/cook/cook_build.rs b/src/cook/cook_build.rs index bdf7ab88..a4773f26 100644 --- a/src/cook/cook_build.rs +++ b/src/cook/cook_build.rs @@ -151,6 +151,10 @@ pub fn build( ) -> Result<(PathBuf, BTreeSet), String> { let sysroot_dir = target_dir.join("sysroot"); let stage_dir = target_dir.join("stage"); + if recipe.build.kind == BuildKind::None { + // metapackages don't need to do anything here + return Ok((stage_dir, BTreeSet::new())); + } let mut dep_pkgars = BTreeSet::new(); for dependency in recipe.build.dependencies.iter() { diff --git a/src/cook/fetch.rs b/src/cook/fetch.rs index c3ce9bdc..b9a2bfc6 100644 --- a/src/cook/fetch.rs +++ b/src/cook/fetch.rs @@ -2,6 +2,7 @@ use crate::config::translate_mirror; use crate::cook::fs::*; use crate::cook::script::*; use crate::is_redox; +use crate::recipe::BuildKind; use crate::recipe::Recipe; use crate::{blake3, recipe::SourceRecipe}; use std::fs; @@ -24,14 +25,18 @@ pub(crate) fn get_blake3(path: &PathBuf, show_progress: bool) -> Result) -> Result { +pub fn fetch_offline(recipe_dir: &Path, recipe: &Recipe) -> Result { let source_dir = recipe_dir.join("source"); - match source { + if recipe.build.kind == BuildKind::None || recipe.build.kind == BuildKind::Remote { + // the build function doesn't need source dir exists + return Ok(source_dir); + } + match &recipe.source { Some(SourceRecipe::Path { path: _ }) | None => { - return fetch(recipe_dir, source); + return fetch(recipe_dir, recipe); } Some(SourceRecipe::SameAs { same_as: _ }) => { - return fetch(recipe_dir, source); + return fetch(recipe_dir, recipe); } Some(SourceRecipe::Git { git: _, @@ -79,17 +84,22 @@ pub fn fetch_offline(recipe_dir: &Path, source: &Option) -> Result Ok(source_dir) } -pub fn fetch(recipe_dir: &Path, source: &Option) -> Result { +pub fn fetch(recipe_dir: &Path, recipe: &Recipe) -> Result { let source_dir = recipe_dir.join("source"); - match source { + if recipe.build.kind == BuildKind::None || recipe.build.kind == BuildKind::Remote { + // the build function doesn't need source dir exists + return Ok(source_dir); + } + match &recipe.source { Some(SourceRecipe::SameAs { same_as }) => { - let (canon_dir, recipe) = fetch_resolve_canon(recipe_dir, same_as)?; + let (canon_dir, recipe) = fetch_resolve_canon(recipe_dir, &same_as)?; // recursively fetch - fetch(&canon_dir, &recipe.source)?; - fetch_make_symlink(&source_dir, same_as)?; + fetch(&canon_dir, &recipe)?; + fetch_make_symlink(&source_dir, &same_as)?; } Some(SourceRecipe::Path { path }) => { - if !source_dir.is_dir() || modified_dir(Path::new(path))? > modified_dir(&source_dir)? { + if !source_dir.is_dir() || modified_dir(Path::new(&path))? > modified_dir(&source_dir)? + { eprintln!("[DEBUG]: {} is newer than {}", path, source_dir.display()); copy_dir_all(path, &source_dir).map_err(|e| { format!( @@ -122,7 +132,7 @@ pub fn fetch(recipe_dir: &Path, source: &Option) -> Result) -> Result { if !source_dir.is_dir() { - //TODO: Don't print if build template is none or remote eprintln!( "WARNING: Recipe without source section expected source dir at '{}'", source_dir.display(), diff --git a/src/cook/package.rs b/src/cook/package.rs index aaee9fa6..a02ad9b1 100644 --- a/src/cook/package.rs +++ b/src/cook/package.rs @@ -1,8 +1,4 @@ -use std::{ - collections::BTreeSet, - env, - path::{Path, PathBuf}, -}; +use std::{collections::BTreeSet, env, path::Path}; use pkg::{Package, PackageName}; @@ -17,7 +13,13 @@ pub fn package( name: &PackageName, recipe: &Recipe, auto_deps: &BTreeSet, -) -> Result { +) -> Result<(), String> { + if recipe.build.kind == BuildKind::None { + // metapackages don't have stage dir + package_toml(target_dir, name, recipe, auto_deps)?; + return Ok(()); + } + let secret_path = "build/id_ed25519.toml"; let public_path = "build/id_ed25519.pub.toml"; if !Path::new(secret_path).is_file() || !Path::new(public_path).is_file() { @@ -58,7 +60,7 @@ pub fn package( package_toml(target_dir, name, recipe, auto_deps)?; } - Ok(package_file) + Ok(()) } pub fn package_toml( @@ -80,7 +82,8 @@ pub fn package_toml( depends, }; - serialize_and_write(&target_dir.join("stage.toml"), &package)?; + let toml_path = &target_dir.join("stage.toml"); + serialize_and_write(&toml_path, &package)?; return Ok(()); } diff --git a/src/recipe.rs b/src/recipe.rs index 99e80800..ce068a64 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -1,4 +1,9 @@ -use std::{collections::BTreeSet, convert::TryInto, fs, path::PathBuf}; +use std::{ + collections::BTreeSet, + convert::TryInto, + fs, + path::{Path, PathBuf}, +}; use pkg::{PackageName, package::PackageError, recipes}; use regex::Regex; @@ -146,7 +151,7 @@ pub struct PackageRecipe { } /// Everything required to build a Redox package -#[derive(Debug, Deserialize, PartialEq, Serialize)] +#[derive(Debug, Default, Deserialize, PartialEq, Serialize)] pub struct Recipe { /// Specifies how to download the source for this recipe pub source: Option, @@ -158,6 +163,18 @@ pub struct Recipe { pub package: PackageRecipe, } +impl Recipe { + pub fn new(file: &PathBuf) -> Result { + if !file.is_file() { + return Err(PackageError::FileMissing(file.clone())); + } + let toml = fs::read_to_string(&file) + .map_err(|err| PackageError::Parse(DeError::custom(err), Some(file.clone())))?; + let recipe: Recipe = toml::from_str(&toml) + .map_err(|err| PackageError::Parse(DeError::custom(err), Some(file.clone())))?; + Ok(recipe) + } +} #[derive(Debug, PartialEq)] pub struct CookRecipe { pub name: PackageName, @@ -168,24 +185,7 @@ pub struct CookRecipe { } impl CookRecipe { - pub fn new( - name: impl TryInto, - ) -> Result { - let name: PackageName = name.try_into()?; - let dir = recipes::find(name.as_str()) - .ok_or_else(|| PackageError::PackageNotFound(name.clone()))?; - let file = dir.join("recipe.toml"); - if !file.is_file() { - return Err(PackageError::FileMissing(file)); - } - - let toml = fs::read_to_string(&file) - .map_err(|err| PackageError::Parse(DeError::custom(err), Some(file.clone())))?; - - let recipe: Recipe = toml::from_str(&toml) - .map_err(|err| PackageError::Parse(DeError::custom(err), Some(file)))?; - - let dir = dir.to_path_buf(); + pub fn new(name: PackageName, dir: PathBuf, recipe: Recipe) -> Result { Ok(Self { name, dir, @@ -194,6 +194,29 @@ impl CookRecipe { }) } + pub fn from_name( + name: impl TryInto, + ) -> Result { + let name: PackageName = name.try_into()?; + let dir = recipes::find(name.as_str()) + .ok_or_else(|| PackageError::PackageNotFound(name.clone()))?; + let file = dir.join("recipe.toml"); + let recipe = Recipe::new(&file)?; + Self::new(name, dir.to_path_buf(), recipe) + } + + pub fn from_path(dir: &Path, read_recipe: bool) -> Result { + let file = dir.join("recipe.toml"); + let name: PackageName = file.file_name().unwrap().try_into()?; + let recipe = if read_recipe { + Recipe::new(&file)? + } else { + // clean/unfetch don't need to read recipe + Recipe::default() + }; + Self::new(name, dir.to_path_buf(), recipe) + } + pub fn new_recursive( names: &[PackageName], recursion: usize, @@ -204,7 +227,7 @@ impl CookRecipe { let mut recipes = Vec::new(); for name in names { - let recipe = Self::new(name.as_str())?; + let recipe = Self::from_name(name.as_str())?; let dependencies = Self::new_recursive(&recipe.recipe.build.dependencies, recursion - 1).map_err( @@ -253,7 +276,7 @@ impl CookRecipe { let mut recipes: Vec = Vec::new(); for name in names { - let recipe = Self::new(name.as_str())?; + let recipe = Self::from_name(name.as_str())?; let dependencies = Self::get_package_deps_recursive( &recipe.recipe.package.dependencies, From ab57937dd419d2cea36138c1e4485086c46e4d83 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Fri, 24 Oct 2025 16:56:52 +0700 Subject: [PATCH 2960/3180] Implement cook TUI --- Cargo.lock | 198 ++++++++++++++++++++++++++++++++++- Cargo.toml | 3 + src/bin/repo.rs | 272 +++++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 456 insertions(+), 17 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4d6b149a..58737f92 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -52,6 +52,12 @@ dependencies = [ "alloc-no-stdlib", ] +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + [[package]] name = "android-tzdata" version = "0.1.1" @@ -374,6 +380,21 @@ version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +[[package]] +name = "cassowary" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" + +[[package]] +name = "castaway" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a" +dependencies = [ + "rustversion", +] + [[package]] name = "cc" version = "1.2.29" @@ -446,7 +467,7 @@ dependencies = [ "ansi_term", "atty", "bitflags 1.3.2", - "strsim", + "strsim 0.8.0", "textwrap", "unicode-width 0.1.14", "vec_map", @@ -458,6 +479,20 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +[[package]] +name = "compact_str" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b79c4069c6cad78e2e0cdfcbd26275770669fb39fd308a752dc110e83b9af32" +dependencies = [ + "castaway", + "cfg-if 1.0.1", + "itoa", + "rustversion", + "ryu", + "static_assertions", +] + [[package]] name = "console" version = "0.15.11" @@ -467,7 +502,7 @@ dependencies = [ "encode_unicode", "libc", "once_cell", - "unicode-width 0.2.1", + "unicode-width 0.2.0", "windows-sys 0.59.0", ] @@ -602,6 +637,41 @@ dependencies = [ "syn", ] +[[package]] +name = "darling" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.11.1", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core", + "quote", + "syn", +] + [[package]] name = "deranged" version = "0.4.0" @@ -974,9 +1044,17 @@ version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" dependencies = [ + "allocator-api2", + "equivalent", "foldhash", ] +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hermit-abi" version = "0.1.19" @@ -1211,6 +1289,12 @@ dependencies = [ "zerovec", ] +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "idna" version = "1.0.3" @@ -1267,10 +1351,19 @@ dependencies = [ "console", "number_prefix", "portable-atomic", - "unicode-width 0.2.1", + "unicode-width 0.2.0", "web-time", ] +[[package]] +name = "indoc" +version = "2.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706" +dependencies = [ + "rustversion", +] + [[package]] name = "inout" version = "0.1.4" @@ -1280,6 +1373,19 @@ dependencies = [ "generic-array", ] +[[package]] +name = "instability" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435d80800b936787d62688c927b6490e887c7ef5ff9ce922c6c6050fca75eb9a" +dependencies = [ + "darling", + "indoc", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "io-uring" version = "0.7.8" @@ -1379,6 +1485,15 @@ version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +[[package]] +name = "lru" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" +dependencies = [ + "hashbrown", +] + [[package]] name = "lru-slab" version = "0.1.2" @@ -1500,6 +1615,12 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + [[package]] name = "pbr" version = "1.1.1" @@ -1804,6 +1925,27 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384c2842d4e069d5ccacf5fe1dca4ef8d07a5444329715f0fc3c61813502d4d1" +[[package]] +name = "ratatui" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabd94c2f37801c20583fc49dd5cd6b0ba68c716787c2dd6ed18571e1e63117b" +dependencies = [ + "bitflags 2.9.1", + "cassowary", + "compact_str", + "indoc", + "instability", + "itertools", + "lru", + "paste", + "strum", + "termion", + "unicode-segmentation", + "unicode-truncate", + "unicode-width 0.2.0", +] + [[package]] name = "rayon" version = "1.10.0" @@ -1871,6 +2013,7 @@ dependencies = [ "pkgar 0.1.19", "pkgar-core 0.1.19", "pkgar-keys 0.1.19", + "ratatui", "redox-pkg", "redoxer", "regex", @@ -2357,6 +2500,34 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + [[package]] name = "subtle" version = "2.6.1" @@ -2724,6 +2895,23 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-truncate" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3644627a5af5fa321c95b9b235a72fd24cd29c648c2c379431e6628655627bf" +dependencies = [ + "itertools", + "unicode-segmentation", + "unicode-width 0.1.14", +] + [[package]] name = "unicode-width" version = "0.1.14" @@ -2732,9 +2920,9 @@ checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-width" -version = "0.2.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" [[package]] name = "untrusted" diff --git a/Cargo.toml b/Cargo.toml index d82ada6b..17b6d972 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -36,6 +36,9 @@ serde = { version = "=1.0.197", features = ["derive"] } termion = "4" toml = "0.8" walkdir = "2.3.1" +ratatui = { version = "0.29.0", default-features = false, features = [ + "termion", +] } [dev-dependencies] tempfile = "3" diff --git a/src/bin/repo.rs b/src/bin/repo.rs index cab4ddcd..1faa76d8 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -1,7 +1,10 @@ +use std::io::stdout; use std::path::PathBuf; -use std::process; use std::str::FromStr; +use std::sync::mpsc; +use std::time::Duration; use std::{env, fs}; +use std::{process, thread}; use anyhow::{Context, anyhow, bail}; use cookbook::WALK_DEPTH; @@ -13,6 +16,12 @@ use cookbook::cook::package::package; use cookbook::recipe::CookRecipe; use pkg::PackageName; use pkg::package::PackageError; +use ratatui::Terminal; +use ratatui::layout::{Constraint, Direction, Layout}; +use ratatui::prelude::TermionBackend; +use ratatui::style::{Color, Style}; +use ratatui::widgets::{Block, Borders, List, ListItem, Paragraph}; +use termion::screen::{ToAlternateScreen, ToMainScreen}; // A repo manager, to replace repo.sh @@ -25,6 +34,7 @@ const REPO_HELP_STR: &str = r#" unfetch delete recipe sources clean delete recipe artifacts push extract package into sysroot + tree show tree of recipe packages common flags: --cookbook= the "recipes" folder, default to $PWD/recipes @@ -40,6 +50,7 @@ const REPO_HELP_STR: &str = r#" -q, --quiet surpress build logs unless error "#; +#[derive(Clone)] struct CliConfig { cookbook_dir: PathBuf, repo_dir: PathBuf, @@ -56,6 +67,7 @@ enum CliCommand { Unfetch, Clean, Push, + Tree, } impl FromStr for CliCommand { @@ -68,6 +80,7 @@ impl FromStr for CliCommand { "unfetch" => Ok(CliCommand::Unfetch), "clean" => Ok(CliCommand::Clean), "push" => Ok(CliCommand::Push), + "tree" => Ok(CliCommand::Tree), _ => Err(anyhow!("Unknown command '{}'", s)), } } @@ -81,6 +94,7 @@ impl ToString for CliCommand { CliCommand::Unfetch => "unfetch".to_string(), CliCommand::Clean => "clean".to_string(), CliCommand::Push => "push".to_string(), + CliCommand::Tree => "tree".to_string(), } } } @@ -119,13 +133,24 @@ fn main_inner() -> anyhow::Result<()> { let (config, command, recipe_names) = parse_args(args)?; + if command == CliCommand::Cook && config.cook.tui { + run_tui_cook(config, recipe_names)?; + return Ok(()); + } + for recipe in &recipe_names { match command { - CliCommand::Fetch => handle_cook(recipe, &config, true, recipe.is_deps)?, - CliCommand::Cook => handle_cook(recipe, &config, false, recipe.is_deps)?, + CliCommand::Fetch => { + handle_fetch(recipe, &config)?; + } + CliCommand::Cook => { + let source_dir = handle_fetch(recipe, &config)?; + handle_cook(recipe, &config, source_dir, recipe.is_deps)? + } CliCommand::Unfetch => handle_clean(recipe, &config, true, true)?, CliCommand::Clean => handle_clean(recipe, &config, false, true)?, CliCommand::Push => handle_push(recipe, &config)?, + CliCommand::Tree => todo!("tree command is WIP"), } } @@ -187,6 +212,7 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec anyhow::Result<()> { +fn handle_fetch(recipe: &CookRecipe, config: &CliConfig) -> anyhow::Result { let recipe_dir = &recipe.dir; let source_dir = match config.cook.offline { true => fetch_offline(recipe_dir, &recipe.recipe), @@ -228,10 +249,16 @@ fn handle_cook( } .map_err(|e| anyhow!(e))?; - if fetch_only { - return Ok(()); - } + Ok(source_dir) +} +fn handle_cook( + recipe: &CookRecipe, + config: &CliConfig, + source_dir: PathBuf, + is_deps: bool, +) -> anyhow::Result<()> { + let recipe_dir = &recipe.dir; let target_dir = create_target_dir(recipe_dir).map_err(|e| anyhow!(e))?; let (stage_dir, auto_deps) = build( @@ -288,3 +315,224 @@ fn handle_push(recipe: &CookRecipe, config: &CliConfig) -> anyhow::Result<()> { config.sysroot_dir.display(), )) } + +#[derive(Debug, Clone, PartialEq)] +enum RecipeStatus { + Pending, + Fetching, + Fetched, + Cooking, + Done, + Failed(String), +} + +#[derive(Debug, Clone)] +enum StatusUpdate { + StartFetch(PackageName), + Fetched(PackageName), + FailFetch(PackageName, String), + StartCook(PackageName), + Cooked(PackageName), + FailCook(PackageName, String), +} + +struct TuiApp { + recipes: Vec<(CookRecipe, RecipeStatus)>, + fetch_queue: Vec, + cook_queue: Vec, + done: Vec, + failed: Vec, +} + +impl TuiApp { + fn new(recipes: Vec) -> Self { + let recipe_names = recipes.iter().map(|r| r.name.clone()).collect(); + Self { + recipes: recipes + .into_iter() + .map(|r| (r, RecipeStatus::Pending)) + .collect(), + fetch_queue: recipe_names, + cook_queue: Vec::new(), + done: Vec::new(), + failed: Vec::new(), + } + } + + // Update the state based on a message from a worker thread + fn update_status(&mut self, update: StatusUpdate) { + let (name, new_status) = match update { + StatusUpdate::StartFetch(name) => (name, RecipeStatus::Fetching), + StatusUpdate::Fetched(name) => (name, RecipeStatus::Fetched), + StatusUpdate::FailFetch(name, err) => (name, RecipeStatus::Failed(err)), + StatusUpdate::StartCook(name) => (name, RecipeStatus::Cooking), + StatusUpdate::Cooked(name) => (name, RecipeStatus::Done), + StatusUpdate::FailCook(name, err) => (name, RecipeStatus::Failed(err)), + }; + + if let Some((_, status)) = self.recipes.iter_mut().find(|(r, _)| r.name == name) { + *status = new_status; + } + + // Re-compute the queues for display + self.fetch_queue = self + .recipes + .iter() + .filter(|(_, s)| *s == RecipeStatus::Pending || *s == RecipeStatus::Fetching) + .map(|(r, _)| r.name.clone()) + .collect(); + self.cook_queue = self + .recipes + .iter() + .filter(|(_, s)| *s == RecipeStatus::Fetched || *s == RecipeStatus::Cooking) + .map(|(r, _)| r.name.clone()) + .collect(); + self.done = self + .recipes + .iter() + .filter(|(_, s)| *s == RecipeStatus::Done) + .map(|(r, _)| r.name.clone()) + .collect(); + self.failed = self + .recipes + .iter() + .filter(|(_, s)| matches!(s, RecipeStatus::Failed(_))) + .map(|(r, _)| r.name.clone()) + .collect(); + } +} + +fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<()> { + let (work_tx, work_rx) = mpsc::channel::<(CookRecipe, PathBuf)>(); + let (status_tx, status_rx) = mpsc::channel::(); + + // ---- Cooker Thread ---- + let cooker_config = config.clone(); + let cooker_status_tx = status_tx.clone(); + let cooker_handle = thread::spawn(move || { + for (recipe, source_dir) in work_rx { + let name = recipe.name.clone(); + let is_deps = recipe.is_deps; + cooker_status_tx + .send(StatusUpdate::StartCook(name.clone())) + .unwrap(); + + match handle_cook(&recipe, &cooker_config, source_dir, is_deps) { + Ok(_) => cooker_status_tx.send(StatusUpdate::Cooked(name)).unwrap(), + Err(e) => cooker_status_tx + .send(StatusUpdate::FailCook(name, e.to_string())) + .unwrap(), + } + } + }); + + // ---- Fetcher Thread ---- + let fetcher_config = config.clone(); + let fetcher_handle = thread::spawn(move || { + for recipe in recipes { + let name = recipe.name.clone(); + status_tx + .send(StatusUpdate::StartFetch(name.clone())) + .unwrap(); + + match handle_fetch(&recipe, &fetcher_config) { + Ok(source_dir) => { + status_tx.send(StatusUpdate::Fetched(name)).unwrap(); + if work_tx.send((recipe, source_dir)).is_err() { + // Cooker thread died + break; + } + } + Err(e) => status_tx + .send(StatusUpdate::FailFetch(name, e.to_string())) + .unwrap(), + } + } + }); + + print!("{}", ToAlternateScreen); + // enable_raw_mode()?; + let mut terminal = Terminal::new(TermionBackend::new(stdout()))?; + terminal.clear()?; + + let mut app = TuiApp::new(Vec::new()); + let total_recipes = app.recipes.len(); + let mut running = true; + + while running { + terminal.draw(|f| { + let chunks = Layout::default() + .direction(Direction::Horizontal) + .constraints([Constraint::Percentage(50), Constraint::Percentage(50)].as_ref()) + .split(f.area()); + + // Left Pane + let fetch_items: Vec = app + .recipes + .iter() + .filter(|(_, s)| *s == RecipeStatus::Pending || *s == RecipeStatus::Fetching) + .map(|(r, s)| { + let style = if *s == RecipeStatus::Fetching { + Style::default().fg(Color::Yellow) + } else { + Style::default() + }; + ListItem::new(r.name.as_str()).style(style) + }) + .collect(); + let fetch_list = List::new(fetch_items) + .block(Block::default().title("Fetch Queue").borders(Borders::ALL)); + f.render_widget(fetch_list, chunks[0]); + + // Right Pane + let cook_items: Vec = app + .recipes + .iter() + .filter(|(_, s)| { + *s == RecipeStatus::Fetched + || *s == RecipeStatus::Cooking + || *s == RecipeStatus::Done + || matches!(s, RecipeStatus::Failed(_)) + }) + .map(|(r, s)| { + let style = match s { + RecipeStatus::Fetched => Style::default().fg(Color::Cyan), + RecipeStatus::Cooking => Style::default().fg(Color::Yellow), + RecipeStatus::Done => Style::default().fg(Color::Green), + RecipeStatus::Failed(_) => Style::default().fg(Color::Red), + _ => Style::default(), + }; + ListItem::new(r.name.as_str()).style(style) + }) + .collect(); + let cook_list = List::new(cook_items) + .block(Block::default().title("Cook Queue").borders(Borders::ALL)); + f.render_widget(cook_list, chunks[1]); + + let footer = Paragraph::new(format!( + "Done: {}/{} | Failed: {}", + app.done.len(), + total_recipes, + app.failed.len() + )); + f.render_widget(footer, f.area()); + })?; + + while let Ok(update) = status_rx.try_recv() { + app.update_status(update); + } + + if fetcher_handle.is_finished() && cooker_handle.is_finished() { + thread::sleep(Duration::from_secs(5)); + running = false; + } + } + + // disable_raw_mode()?; + print!("{}", ToMainScreen); + + fetcher_handle.join().unwrap(); + cooker_handle.join().unwrap(); + + Ok(()) +} From e03e843abd4b1f5c786a2ac01002cbc7255d8cf7 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Fri, 24 Oct 2025 17:07:06 +0700 Subject: [PATCH 2961/3180] Test config --- src/config.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/config.rs b/src/config.rs index d79848fb..313acbc0 100644 --- a/src/config.rs +++ b/src/config.rs @@ -3,6 +3,7 @@ use std::{collections::HashMap, env, fs, str::FromStr, sync::OnceLock}; use serde::{Deserialize, Serialize}; #[derive(Debug, Default, Clone, Deserialize, PartialEq, Serialize)] +#[serde(default)] pub struct CookConfigOpt { /// whether to run offline pub offline: Option, @@ -41,6 +42,7 @@ impl From for CookConfig { } #[derive(Debug, Default, Deserialize, PartialEq, Serialize)] +#[serde(default)] pub struct CookbookConfig { #[serde(rename = "cook")] cook_opt: CookConfigOpt, @@ -155,6 +157,17 @@ mod tests { let _ = CONFIG.set(app_config); } + #[test] + fn test_parse_cook() { + let app_config: CookbookConfig = toml::from_str( + "[cook]\n\ + offline = true\n", + ) + .expect("Unable to parse test config"); + assert_eq!(app_config.cook_opt.offline, Some(true)); + assert_eq!(app_config.cook_opt.jobs, None); + } + #[test] fn test_exact_match() { setup_test_config(); From 2af2a5bd2692388da7e0ec351d4f2f5b625e7e27 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Fri, 24 Oct 2025 18:41:35 +0700 Subject: [PATCH 2962/3180] Add command stdout pipe --- src/bin/cook.rs | 5 +- src/bin/repo.rs | 148 +++++++++++++++++++++++++++++++++-------- src/cook/cook_build.rs | 12 ++-- src/cook/fetch.rs | 54 +++++++++------ src/cook/fs.rs | 33 +++++++-- src/recipe.rs | 12 ++-- 6 files changed, 197 insertions(+), 67 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index d5299d70..82e05744 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -21,8 +21,8 @@ fn cook( is_offline: bool, ) -> Result<(), String> { let source_dir = match is_offline { - true => fetch_offline(recipe_dir, recipe), - false => fetch(recipe_dir, recipe), + true => fetch_offline(recipe_dir, recipe, &None), + false => fetch(recipe_dir, recipe, &None), } .map_err(|err| format!("failed to fetch: {}", err))?; @@ -40,6 +40,7 @@ fn cook( recipe, is_offline, !is_deps, + &None, ) .map_err(|err| format!("failed to build: {}", err))?; diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 1faa76d8..bc73fed4 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -1,4 +1,5 @@ -use std::io::stdout; +use std::collections::HashMap; +use std::io::{BufRead, BufReader, PipeReader, stdout}; use std::path::PathBuf; use std::str::FromStr; use std::sync::mpsc; @@ -11,7 +12,7 @@ use cookbook::WALK_DEPTH; use cookbook::config::{CookConfig, get_config, init_config}; use cookbook::cook::cook_build::build; use cookbook::cook::fetch::{fetch, fetch_offline}; -use cookbook::cook::fs::create_target_dir; +use cookbook::cook::fs::{Stdout, create_target_dir}; use cookbook::cook::package::package; use cookbook::recipe::CookRecipe; use pkg::PackageName; @@ -20,7 +21,7 @@ use ratatui::Terminal; use ratatui::layout::{Constraint, Direction, Layout}; use ratatui::prelude::TermionBackend; use ratatui::style::{Color, Style}; -use ratatui::widgets::{Block, Borders, List, ListItem, Paragraph}; +use ratatui::widgets::{Block, Borders, List, ListItem, Paragraph, Wrap}; use termion::screen::{ToAlternateScreen, ToMainScreen}; // A repo manager, to replace repo.sh @@ -141,11 +142,11 @@ fn main_inner() -> anyhow::Result<()> { for recipe in &recipe_names { match command { CliCommand::Fetch => { - handle_fetch(recipe, &config)?; + handle_fetch(recipe, &config, &None)?; } CliCommand::Cook => { - let source_dir = handle_fetch(recipe, &config)?; - handle_cook(recipe, &config, source_dir, recipe.is_deps)? + let source_dir = handle_fetch(recipe, &config, &None)?; + handle_cook(recipe, &config, source_dir, recipe.is_deps, &None)? } CliCommand::Unfetch => handle_clean(recipe, &config, true, true)?, CliCommand::Clean => handle_clean(recipe, &config, false, true)?, @@ -241,11 +242,15 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec anyhow::Result { +fn handle_fetch( + recipe: &CookRecipe, + config: &CliConfig, + logger: &Stdout, +) -> anyhow::Result { let recipe_dir = &recipe.dir; let source_dir = match config.cook.offline { - true => fetch_offline(recipe_dir, &recipe.recipe), - false => fetch(recipe_dir, &recipe.recipe), + true => fetch_offline(recipe_dir, &recipe.recipe, logger), + false => fetch(recipe_dir, &recipe.recipe, logger), } .map_err(|e| anyhow!(e))?; @@ -257,10 +262,10 @@ fn handle_cook( config: &CliConfig, source_dir: PathBuf, is_deps: bool, + logger: &Stdout, ) -> anyhow::Result<()> { let recipe_dir = &recipe.dir; let target_dir = create_target_dir(recipe_dir).map_err(|e| anyhow!(e))?; - let (stage_dir, auto_deps) = build( recipe_dir, &source_dir, @@ -269,6 +274,7 @@ fn handle_cook( &recipe.recipe, config.cook.offline, !is_deps, + logger, ) .map_err(|err| anyhow!("failed to build: {}", err))?; @@ -332,6 +338,7 @@ enum StatusUpdate { Fetched(PackageName), FailFetch(PackageName, String), StartCook(PackageName), + CookLog(PackageName, String), Cooked(PackageName), FailCook(PackageName, String), } @@ -342,6 +349,9 @@ struct TuiApp { cook_queue: Vec, done: Vec, failed: Vec, + active_fetch: Option, + active_cook: Option, + logs: HashMap>, } impl TuiApp { @@ -356,16 +366,36 @@ impl TuiApp { cook_queue: Vec::new(), done: Vec::new(), failed: Vec::new(), + active_fetch: None, + active_cook: None, + logs: HashMap::new(), } } // Update the state based on a message from a worker thread fn update_status(&mut self, update: StatusUpdate) { let (name, new_status) = match update { - StatusUpdate::StartFetch(name) => (name, RecipeStatus::Fetching), + StatusUpdate::StartFetch(name) => { + self.active_fetch = Some(name.clone()); + self.logs.insert(name.clone(), Vec::new()); // Clear old logs + (name.clone(), RecipeStatus::Fetching) + } StatusUpdate::Fetched(name) => (name, RecipeStatus::Fetched), StatusUpdate::FailFetch(name, err) => (name, RecipeStatus::Failed(err)), - StatusUpdate::StartCook(name) => (name, RecipeStatus::Cooking), + StatusUpdate::StartCook(name) => { + self.active_cook = Some(name.clone()); // Set active cook + self.logs.insert(name.clone(), Vec::new()); // Clear old logs + (name.clone(), RecipeStatus::Cooking) + } + StatusUpdate::CookLog(name, line) => { + self.logs.entry(name.clone()).or_default().push(line); + // No status change, just return the current state + if let Some((_, status)) = self.recipes.iter().find(|(r, _)| r.name == name) { + (name, status.clone()) + } else { + return; // Should not happen + } + } StatusUpdate::Cooked(name) => (name, RecipeStatus::Done), StatusUpdate::FailCook(name, err) => (name, RecipeStatus::Failed(err)), }; @@ -402,6 +432,26 @@ impl TuiApp { } } +fn spawn_log_reader( + mut pipe_reader: PipeReader, + package_name: PackageName, + status_tx: mpsc::Sender, +) { + thread::spawn(move || { + let reader = BufReader::new(&mut pipe_reader); + for line in reader.lines() { + let line_str = line.unwrap_or_else(|e| format!("[IO Error] {}", e)); + if status_tx + .send(StatusUpdate::CookLog(package_name.clone(), line_str)) + .is_err() + { + // TUI thread hung up + break; + } + } + }); +} + fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<()> { let (work_tx, work_rx) = mpsc::channel::<(CookRecipe, PathBuf)>(); let (status_tx, status_rx) = mpsc::channel::(); @@ -416,8 +466,9 @@ fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<( cooker_status_tx .send(StatusUpdate::StartCook(name.clone())) .unwrap(); - - match handle_cook(&recipe, &cooker_config, source_dir, is_deps) { + let (mut stdout_writer, mut stderr_writer) = setup_logger(&cooker_status_tx, &name); + let logger = Some((&mut stdout_writer, &mut stderr_writer)); + match handle_cook(&recipe, &cooker_config, source_dir, is_deps, &logger) { Ok(_) => cooker_status_tx.send(StatusUpdate::Cooked(name)).unwrap(), Err(e) => cooker_status_tx .send(StatusUpdate::FailCook(name, e.to_string())) @@ -427,18 +478,22 @@ fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<( }); // ---- Fetcher Thread ---- + let fetcher_recipes = recipes.clone(); let fetcher_config = config.clone(); let fetcher_handle = thread::spawn(move || { - for recipe in recipes { + for recipe in fetcher_recipes { let name = recipe.name.clone(); status_tx .send(StatusUpdate::StartFetch(name.clone())) .unwrap(); - match handle_fetch(&recipe, &fetcher_config) { + let (mut stdout_writer, mut stderr_writer) = setup_logger(&status_tx, &name); + let logger = Some((&mut stdout_writer, &mut stderr_writer)); + + match handle_fetch(&recipe, &fetcher_config, &logger) { Ok(source_dir) => { status_tx.send(StatusUpdate::Fetched(name)).unwrap(); - if work_tx.send((recipe, source_dir)).is_err() { + if work_tx.send((recipe.clone(), source_dir)).is_err() { // Cooker thread died break; } @@ -455,15 +510,22 @@ fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<( let mut terminal = Terminal::new(TermionBackend::new(stdout()))?; terminal.clear()?; - let mut app = TuiApp::new(Vec::new()); - let total_recipes = app.recipes.len(); + let mut app = TuiApp::new(recipes); + // let total_recipes = app.recipes.len(); let mut running = true; while running { terminal.draw(|f| { let chunks = Layout::default() .direction(Direction::Horizontal) - .constraints([Constraint::Percentage(50), Constraint::Percentage(50)].as_ref()) + .constraints( + [ + Constraint::Percentage(20), + Constraint::Percentage(20), + Constraint::Percentage(60), + ] + .as_ref(), + ) .split(f.area()); // Left Pane @@ -509,13 +571,34 @@ fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<( .block(Block::default().title("Cook Queue").borders(Borders::ALL)); f.render_widget(cook_list, chunks[1]); - let footer = Paragraph::new(format!( - "Done: {}/{} | Failed: {}", - app.done.len(), - total_recipes, - app.failed.len() - )); - f.render_widget(footer, f.area()); + let log_title = if let Some(active_name) = &app.active_cook { + format!("Build Log: {}", active_name.as_str()) + } else { + "Build Log".to_string() + }; + + let log_text: Vec = if let Some(active_name) = &app.active_cook { + app.logs + .get(active_name) + .cloned() + .unwrap_or_else(|| vec!["Waiting for logs...".to_string()]) + } else { + vec!["No active cook job.".to_string()] + }; + + let log_paragraph = Paragraph::new(log_text.join("\n")) + .block(Block::default().title(log_title).borders(Borders::ALL)) + .wrap(Wrap { trim: false }); + + f.render_widget(log_paragraph, chunks[2]); + + // let footer = Paragraph::new(format!( + // "Done: {}/{} | Failed: {}", + // app.done.len(), + // total_recipes, + // app.failed.len() + // )); + // f.render_widget(footer, f.area()); })?; while let Ok(update) = status_rx.try_recv() { @@ -536,3 +619,14 @@ fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<( Ok(()) } + +fn setup_logger( + cooker_status_tx: &mpsc::Sender, + name: &PackageName, +) -> (std::io::PipeWriter, std::io::PipeWriter) { + let (stdout_reader, stdout_writer) = std::io::pipe().expect("Failed to create stdout pipe"); + let (stderr_reader, stderr_writer) = std::io::pipe().expect("Failed to create stderr pipe"); + spawn_log_reader(stdout_reader, name.clone(), cooker_status_tx.clone()); + spawn_log_reader(stderr_reader, name.clone(), cooker_status_tx.clone()); + (stdout_writer, stderr_writer) +} diff --git a/src/cook/cook_build.rs b/src/cook/cook_build.rs index a4773f26..016e840f 100644 --- a/src/cook/cook_build.rs +++ b/src/cook/cook_build.rs @@ -148,6 +148,7 @@ pub fn build( recipe: &Recipe, offline_mode: bool, check_source: bool, + logger: &Stdout, ) -> Result<(PathBuf, BTreeSet), String> { let sysroot_dir = target_dir.join("sysroot"); let stage_dir = target_dir.join("stage"); @@ -296,7 +297,7 @@ pub fn build( flags_fn("COOKBOOK_MESON_FLAGS", mesonflags), ), BuildKind::Custom { script } => script.clone(), - BuildKind::Remote => return build_remote(target_dir, name, offline_mode), + BuildKind::Remote => return build_remote(target_dir, name, offline_mode, logger), BuildKind::None => "".to_owned(), }; @@ -341,7 +342,7 @@ pub fn build( "{}\n{}\n{}\n{}", BUILD_PRESCRIPT, SHARED_PRESCRIPT, script, BUILD_POSTSCRIPT ); - run_command_stdin(command, full_script.as_bytes())?; + run_command_stdin(command, full_script.as_bytes(), logger)?; // Move stage.tmp to stage atomically rename(&stage_dir_tmp, &stage_dir)?; @@ -389,6 +390,7 @@ pub fn build_remote( target_dir: &Path, name: &PackageName, offline_mode: bool, + logger: &Stdout, ) -> Result<(PathBuf, BTreeSet), String> { // download straight from remote source then declare pkg dependencies as autodeps dependency let stage_dir = target_dir.join("stage"); @@ -398,9 +400,9 @@ pub fn build_remote( let source_pubkey = target_dir.join("id_ed25519.pub.toml"); if !offline_mode { - download_wget(&get_remote_url(name, "pkgar"), &source_pkgar)?; - download_wget(&get_remote_url(name, "toml"), &source_toml)?; - download_wget(&get_pubkey_url(), &source_pubkey)?; + download_wget(&get_remote_url(name, "pkgar"), &source_pkgar, logger)?; + download_wget(&get_remote_url(name, "toml"), &source_toml, logger)?; + download_wget(&get_pubkey_url(), &source_pubkey, logger)?; } else { offline_check_exists(&source_pkgar)?; offline_check_exists(&source_toml)?; diff --git a/src/cook/fetch.rs b/src/cook/fetch.rs index b9a2bfc6..a69b3855 100644 --- a/src/cook/fetch.rs +++ b/src/cook/fetch.rs @@ -25,7 +25,11 @@ pub(crate) fn get_blake3(path: &PathBuf, show_progress: bool) -> Result Result { +pub fn fetch_offline( + recipe_dir: &Path, + recipe: &Recipe, + logger: &Stdout, +) -> Result { let source_dir = recipe_dir.join("source"); if recipe.build.kind == BuildKind::None || recipe.build.kind == BuildKind::Remote { // the build function doesn't need source dir exists @@ -33,10 +37,10 @@ pub fn fetch_offline(recipe_dir: &Path, recipe: &Recipe) -> Result { - return fetch(recipe_dir, recipe); + return fetch(recipe_dir, recipe, logger); } Some(SourceRecipe::SameAs { same_as: _ }) => { - return fetch(recipe_dir, recipe); + return fetch(recipe_dir, recipe, logger); } Some(SourceRecipe::Git { git: _, @@ -65,8 +69,8 @@ pub fn fetch_offline(recipe_dir: &Path, recipe: &Recipe) -> Result Result Result { +pub fn fetch(recipe_dir: &Path, recipe: &Recipe, logger: &Stdout) -> Result { let source_dir = recipe_dir.join("source"); if recipe.build.kind == BuildKind::None || recipe.build.kind == BuildKind::Remote { // the build function doesn't need source dir exists @@ -94,7 +98,7 @@ pub fn fetch(recipe_dir: &Path, recipe: &Recipe) -> Result { Some(SourceRecipe::SameAs { same_as }) => { let (canon_dir, recipe) = fetch_resolve_canon(recipe_dir, &same_as)?; // recursively fetch - fetch(&canon_dir, &recipe)?; + fetch(&canon_dir, &recipe, logger)?; fetch_make_symlink(&source_dir, &same_as)?; } Some(SourceRecipe::Path { path }) => { @@ -140,7 +144,7 @@ pub fn fetch(recipe_dir: &Path, recipe: &Recipe) -> Result { command.arg("--depth").arg("1").arg("--shallow-submodules"); } command.arg(&source_dir_tmp); - run_command(command)?; + run_command(command, logger)?; // Move source.tmp to source atomically rename(&source_dir_tmp, &source_dir)?; @@ -158,13 +162,13 @@ pub fn fetch(recipe_dir: &Path, recipe: &Recipe) -> Result { let mut command = Command::new("git"); command.arg("-C").arg(&source_dir); command.arg("remote").arg("set-url").arg("origin").arg(git); - run_command(command)?; + run_command(command, logger)?; // Fetch origin let mut command = Command::new("git"); command.arg("-C").arg(&source_dir); command.arg("fetch").arg("origin"); - run_command(command)?; + run_command(command, logger)?; } if let Some(_upstream) = upstream { @@ -179,7 +183,7 @@ pub fn fetch(recipe_dir: &Path, recipe: &Recipe) -> Result { let mut command = Command::new("git"); command.arg("-C").arg(&source_dir); command.arg("checkout").arg(rev); - run_command(command)?; + run_command(command, logger)?; } else if !shallow_clone && !is_redox() { //TODO: complicated stuff to check and reset branch to origin //TODO: redox can't undestand this (got exit status 1) @@ -189,7 +193,7 @@ pub fn fetch(recipe_dir: &Path, recipe: &Recipe) -> Result { command.env("BRANCH", branch); } command.current_dir(&source_dir); - run_command(command)?; + run_command(command, logger)?; } if !patches.is_empty() || script.is_some() { @@ -197,7 +201,7 @@ pub fn fetch(recipe_dir: &Path, recipe: &Recipe) -> Result { let mut command = Command::new("git"); command.arg("-C").arg(&source_dir); command.arg("reset").arg("--hard"); - run_command(command)?; + run_command(command, logger)?; } if !shallow_clone { @@ -205,7 +209,7 @@ pub fn fetch(recipe_dir: &Path, recipe: &Recipe) -> Result { let mut command = Command::new("git"); command.arg("-C").arg(&source_dir); command.arg("submodule").arg("sync").arg("--recursive"); - run_command(command)?; + run_command(command, logger)?; // Update submodules let mut command = Command::new("git"); @@ -215,10 +219,10 @@ pub fn fetch(recipe_dir: &Path, recipe: &Recipe) -> Result { .arg("update") .arg("--init") .arg("--recursive"); - run_command(command)?; + run_command(command, logger)?; } - fetch_apply_patches(recipe_dir, patches, script, &source_dir)?; + fetch_apply_patches(recipe_dir, patches, script, &source_dir, logger)?; } Some(SourceRecipe::Tar { tar, @@ -231,7 +235,7 @@ pub fn fetch(recipe_dir: &Path, recipe: &Recipe) -> Result { while { if !source_tar.is_file() { tar_updated = true; - download_wget(&tar, &source_tar)?; + download_wget(&tar, &source_tar, logger)?; } let source_tar_blake3 = get_blake3(&source_tar, tar_updated)?; if let Some(blake3) = blake3 { @@ -268,8 +272,8 @@ pub fn fetch(recipe_dir: &Path, recipe: &Recipe) -> Result { // Create source.tmp let source_dir_tmp = recipe_dir.join("source.tmp"); create_dir_clean(&source_dir_tmp)?; - fetch_extract_tar(source_tar, &source_dir_tmp)?; - fetch_apply_patches(recipe_dir, patches, script, &source_dir_tmp)?; + fetch_extract_tar(source_tar, &source_dir_tmp, logger)?; + fetch_apply_patches(recipe_dir, patches, script, &source_dir_tmp, logger)?; // Move source.tmp to source atomically rename(&source_dir_tmp, &source_dir)?; @@ -342,6 +346,7 @@ pub(crate) fn fetch_resolve_canon( pub(crate) fn fetch_extract_tar( source_tar: PathBuf, source_dir_tmp: &PathBuf, + logger: &Stdout, ) -> Result<(), String> { let mut command = Command::new("tar"); if is_redox() { @@ -354,7 +359,7 @@ pub(crate) fn fetch_extract_tar( command.arg(&source_tar); command.arg("--directory").arg(source_dir_tmp); command.arg("--strip-components").arg("1"); - run_command(command)?; + run_command(command, logger)?; Ok(()) } @@ -387,6 +392,7 @@ pub(crate) fn fetch_apply_patches( patches: &Vec, script: &Option, source_dir_tmp: &PathBuf, + logger: &Stdout, ) -> Result<(), String> { for patch_name in patches { let patch_file = recipe_dir.join(patch_name); @@ -409,12 +415,16 @@ pub(crate) fn fetch_apply_patches( let mut command = Command::new("patch"); command.arg("--directory").arg(source_dir_tmp); command.arg("--strip=1"); - run_command_stdin(command, patch.as_bytes())?; + run_command_stdin(command, patch.as_bytes(), logger)?; } Ok(if let Some(script) = script { let mut command = Command::new("bash"); command.arg("-ex"); command.current_dir(source_dir_tmp); - run_command_stdin(command, format!("{SHARED_PRESCRIPT}\n{script}").as_bytes())?; + run_command_stdin( + command, + format!("{SHARED_PRESCRIPT}\n{script}").as_bytes(), + logger, + )?; }) } diff --git a/src/cook/fs.rs b/src/cook/fs.rs index a3295d63..6a5e8b88 100644 --- a/src/cook/fs.rs +++ b/src/cook/fs.rs @@ -1,7 +1,7 @@ use serde::Serialize; use std::{ fs, - io::{self, Write}, + io::{self, PipeWriter, Write}, path::{Path, PathBuf}, process::{self, Command, Stdio}, time::SystemTime, @@ -146,7 +146,25 @@ pub fn rename(src: &Path, dst: &Path) -> Result<(), String> { }) } -pub fn run_command(mut command: process::Command) -> Result<(), String> { +pub type Stdout<'a> = Option<(&'a mut PipeWriter, &'a mut PipeWriter)>; + +fn pipe_to_cmd(command: &mut Command, stdout_pipe: &Stdout) -> Result<(), String> { + Ok(if let Some((stdout, stderr)) = stdout_pipe { + command.stdout::( + stdout + .try_clone() + .map_err(|e| format!("unable to clone stdout fd: {:?}", e))?, + ); + command.stderr( + stderr + .try_clone() + .map_err(|e| format!("unable to clone stderr fd: {:?}", e))?, + ); + }) +} + +pub fn run_command(mut command: process::Command, stdout_pipe: &Stdout) -> Result<(), String> { + pipe_to_cmd(&mut command, stdout_pipe)?; let status = command .status() .map_err(|err| format!("failed to run {:?}: {}\n{:#?}", command, err, err))?; @@ -161,8 +179,13 @@ pub fn run_command(mut command: process::Command) -> Result<(), String> { Ok(()) } -pub fn run_command_stdin(mut command: process::Command, stdin_data: &[u8]) -> Result<(), String> { +pub fn run_command_stdin( + mut command: process::Command, + stdin_data: &[u8], + stdout_pipe: &Stdout, +) -> Result<(), String> { command.stdin(Stdio::piped()); + pipe_to_cmd(&mut command, stdout_pipe)?; let mut child = command .spawn() @@ -217,13 +240,13 @@ pub fn offline_check_exists(path: &PathBuf) -> Result<(), String> { Ok(()) } -pub fn download_wget(url: &str, dest: &PathBuf) -> Result<(), String> { +pub fn download_wget(url: &str, dest: &PathBuf, logger: &Stdout) -> Result<(), String> { if !dest.is_file() { let dest_tmp = PathBuf::from(format!("{}.tmp", dest.display())); let mut command = Command::new("wget"); command.arg(translate_mirror(url)); command.arg("--continue").arg("-O").arg(&dest_tmp); - run_command(command)?; + run_command(command, logger)?; rename(&dest_tmp, &dest)?; } Ok(()) diff --git a/src/recipe.rs b/src/recipe.rs index ce068a64..a1ea1eef 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -15,7 +15,7 @@ use serde::{ use crate::WALK_DEPTH; /// Specifies how to download the source for a recipe -#[derive(Debug, Deserialize, PartialEq, Serialize)] +#[derive(Debug, Clone, Deserialize, PartialEq, Serialize)] #[serde(untagged)] pub enum SourceRecipe { /// Reuse the source directory of another package @@ -88,7 +88,7 @@ impl SourceRecipe { } /// Specifies how to build a recipe -#[derive(Debug, Deserialize, PartialEq, Serialize)] +#[derive(Debug, Clone, Deserialize, PartialEq, Serialize)] #[serde(tag = "template")] pub enum BuildKind { /// Will not build (for meta packages) @@ -134,7 +134,7 @@ impl Default for BuildKind { } } -#[derive(Debug, Default, Deserialize, PartialEq, Serialize)] +#[derive(Debug, Clone, Default, Deserialize, PartialEq, Serialize)] pub struct BuildRecipe { #[serde(flatten, default)] pub kind: BuildKind, @@ -142,7 +142,7 @@ pub struct BuildRecipe { pub dependencies: Vec, } -#[derive(Debug, Default, Deserialize, PartialEq, Serialize)] +#[derive(Debug, Clone, Default, Deserialize, PartialEq, Serialize)] pub struct PackageRecipe { #[serde(default)] pub dependencies: Vec, @@ -151,7 +151,7 @@ pub struct PackageRecipe { } /// Everything required to build a Redox package -#[derive(Debug, Default, Deserialize, PartialEq, Serialize)] +#[derive(Debug, Clone, Default, Deserialize, PartialEq, Serialize)] pub struct Recipe { /// Specifies how to download the source for this recipe pub source: Option, @@ -175,7 +175,7 @@ impl Recipe { Ok(recipe) } } -#[derive(Debug, PartialEq)] +#[derive(Debug, Clone, PartialEq)] pub struct CookRecipe { pub name: PackageName, pub dir: PathBuf, From 51a5ea0848be6950c4abd239e6cb36f18ba2e0d1 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Fri, 24 Oct 2025 19:34:41 +0700 Subject: [PATCH 2963/3180] Add mouse handling --- Cargo.lock | 53 ++++++++++- Cargo.toml | 9 +- config.sh | 3 + fetch.sh | 1 - repo.sh | 5 +- src/bin/repo.rs | 235 ++++++++++++++++++++++++++++++++++++++---------- 6 files changed, 246 insertions(+), 60 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 58737f92..2319a234 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -444,7 +444,7 @@ dependencies = [ "js-sys", "num-traits", "wasm-bindgen", - "windows-link", + "windows-link 0.1.3", ] [[package]] @@ -611,6 +611,17 @@ dependencies = [ "subtle", ] +[[package]] +name = "ctrlc" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "881c5d0a13b2f1498e2306e82cbada78390e152d4b1378fb28a84f4dcd0dc4f3" +dependencies = [ + "dispatch", + "nix", + "windows-sys 0.61.2", +] + [[package]] name = "curve25519-dalek" version = "4.1.3" @@ -742,6 +753,12 @@ dependencies = [ "windows-sys 0.60.2", ] +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + [[package]] name = "displaydoc" version = "0.2.5" @@ -1537,6 +1554,18 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "nix" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +dependencies = [ + "bitflags 2.9.1", + "cfg-if 1.0.1", + "cfg_aliases", + "libc", +] + [[package]] name = "num-conv" version = "0.1.0" @@ -2007,6 +2036,7 @@ version = "0.1.0" dependencies = [ "anyhow", "blake3 1.5.3", + "ctrlc", "ignore", "object", "pbr", @@ -3164,7 +3194,7 @@ checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ "windows-implement", "windows-interface", - "windows-link", + "windows-link 0.1.3", "windows-result", "windows-strings", ] @@ -3197,13 +3227,19 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + [[package]] name = "windows-result" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-link", + "windows-link 0.1.3", ] [[package]] @@ -3212,7 +3248,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-link", + "windows-link 0.1.3", ] [[package]] @@ -3251,6 +3287,15 @@ dependencies = [ "windows-targets 0.53.2", ] +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", +] + [[package]] name = "windows-targets" version = "0.42.2" diff --git a/Cargo.toml b/Cargo.toml index 17b6d972..b4ba691b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,6 +23,7 @@ doctest = false [dependencies] anyhow = "1" blake3 = "=1.5.3" # 1.5.4 is incompatible with blake3 0.3 dependency from pkgar +ctrlc = { version = "3.5.0", features = ["termination"] } ignore = "0.4" object = { version = "0.36", features = ["build_core"] } pbr = "1.0.2" @@ -36,9 +37,11 @@ serde = { version = "=1.0.197", features = ["derive"] } termion = "4" toml = "0.8" walkdir = "2.3.1" -ratatui = { version = "0.29.0", default-features = false, features = [ - "termion", -] } + +[dependencies.ratatui] +version = "0.29.0" +default-features = false +features = ["termion"] [dev-dependencies] tempfile = "3" diff --git a/config.sh b/config.sh index c3eccb17..f60c503e 100755 --- a/config.sh +++ b/config.sh @@ -60,6 +60,9 @@ function pkgar { function cook { "$ROOT/target/release/cook" "$@" } +function repo { + "$ROOT/target/release/repo" "$@" +} function repo_builder { "$ROOT/target/release/repo_builder" "$@" } diff --git a/fetch.sh b/fetch.sh index 73da2648..16e503fd 100755 --- a/fetch.sh +++ b/fetch.sh @@ -3,4 +3,3 @@ set -e source config.sh -cook --fetch-only ${@:1} diff --git a/repo.sh b/repo.sh index ddc0e779..3ef74d17 100755 --- a/repo.sh +++ b/repo.sh @@ -18,15 +18,12 @@ do elif [ "$arg" == "--nonstop" ] then COOK_OPT+=" --nonstop" - elif [ "$arg" == "--offline" ] - then - COOK_OPT+=" --offline" else recipes+=" $arg" fi done -cook $COOK_OPT $recipes +repo cook $COOK_OPT $recipes repo="$ROOT/repo/$TARGET" mkdir -p "$repo" diff --git a/src/bin/repo.rs b/src/bin/repo.rs index bc73fed4..d72db813 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -2,7 +2,8 @@ use std::collections::HashMap; use std::io::{BufRead, BufReader, PipeReader, stdout}; use std::path::PathBuf; use std::str::FromStr; -use std::sync::mpsc; +use std::sync::atomic::{AtomicBool, Ordering}; +use std::sync::{Arc, mpsc}; use std::time::Duration; use std::{env, fs}; use std::{process, thread}; @@ -18,11 +19,14 @@ use cookbook::recipe::CookRecipe; use pkg::PackageName; use pkg::package::PackageError; use ratatui::Terminal; -use ratatui::layout::{Constraint, Direction, Layout}; +use ratatui::layout::{Constraint, Direction, Layout, Position, Rect}; use ratatui::prelude::TermionBackend; use ratatui::style::{Color, Style}; use ratatui::widgets::{Block, Borders, List, ListItem, Paragraph, Wrap}; -use termion::screen::{ToAlternateScreen, ToMainScreen}; +use termion::event::{Event, Key, MouseEvent}; +use termion::input::{MouseTerminal, TermRead}; +use termion::raw::RawTerminal; +use termion::screen::{AlternateScreen, ToAlternateScreen, ToMainScreen}; // A repo manager, to replace repo.sh @@ -322,6 +326,10 @@ fn handle_push(recipe: &CookRecipe, config: &CliConfig) -> anyhow::Result<()> { )) } +// +// ------------- TUI SPECIFIC CODE ------------------- +// + #[derive(Debug, Clone, PartialEq)] enum RecipeStatus { Pending, @@ -341,6 +349,8 @@ enum StatusUpdate { CookLog(PackageName, String), Cooked(PackageName), FailCook(PackageName, String), + FetchThreadFinished, + CookThreadFinished, } struct TuiApp { @@ -352,6 +362,15 @@ struct TuiApp { active_fetch: Option, active_cook: Option, logs: HashMap>, + log_scroll: u16, + auto_scroll: bool, + fetch_scroll: u16, + cook_scroll: u16, + fetch_complete: bool, + cook_complete: bool, + fetch_panel_rect: Option, + cook_panel_rect: Option, + log_panel_rect: Option, } impl TuiApp { @@ -369,6 +388,15 @@ impl TuiApp { active_fetch: None, active_cook: None, logs: HashMap::new(), + log_scroll: 0, + auto_scroll: true, + fetch_scroll: 0, + cook_scroll: 0, + fetch_complete: false, + cook_complete: false, + fetch_panel_rect: None, + cook_panel_rect: None, + log_panel_rect: None, } } @@ -377,14 +405,16 @@ impl TuiApp { let (name, new_status) = match update { StatusUpdate::StartFetch(name) => { self.active_fetch = Some(name.clone()); - self.logs.insert(name.clone(), Vec::new()); // Clear old logs + self.logs.insert(name.clone(), Vec::new()); + self.log_scroll = 0; + self.auto_scroll = true; (name.clone(), RecipeStatus::Fetching) } StatusUpdate::Fetched(name) => (name, RecipeStatus::Fetched), StatusUpdate::FailFetch(name, err) => (name, RecipeStatus::Failed(err)), StatusUpdate::StartCook(name) => { - self.active_cook = Some(name.clone()); // Set active cook - self.logs.insert(name.clone(), Vec::new()); // Clear old logs + self.active_cook = Some(name.clone()); + self.logs.insert(name.clone(), Vec::new()); (name.clone(), RecipeStatus::Cooking) } StatusUpdate::CookLog(name, line) => { @@ -396,8 +426,28 @@ impl TuiApp { return; // Should not happen } } - StatusUpdate::Cooked(name) => (name, RecipeStatus::Done), - StatusUpdate::FailCook(name, err) => (name, RecipeStatus::Failed(err)), + StatusUpdate::Cooked(name) => { + if self.active_cook.as_ref() == Some(&name) { + self.active_cook = None; + } + self.auto_scroll = true; + (name.clone(), RecipeStatus::Done) + } + StatusUpdate::FailCook(name, err) => { + if self.active_cook.as_ref() == Some(&name) { + self.active_cook = None; + } + self.auto_scroll = false; + (name.clone(), RecipeStatus::Failed(err)) + } + StatusUpdate::FetchThreadFinished => { + self.fetch_complete = true; + return; + } + StatusUpdate::CookThreadFinished => { + self.cook_complete = true; + return; + } }; if let Some((_, status)) = self.recipes.iter_mut().find(|(r, _)| r.name == name) { @@ -432,26 +482,6 @@ impl TuiApp { } } -fn spawn_log_reader( - mut pipe_reader: PipeReader, - package_name: PackageName, - status_tx: mpsc::Sender, -) { - thread::spawn(move || { - let reader = BufReader::new(&mut pipe_reader); - for line in reader.lines() { - let line_str = line.unwrap_or_else(|e| format!("[IO Error] {}", e)); - if status_tx - .send(StatusUpdate::CookLog(package_name.clone(), line_str)) - .is_err() - { - // TUI thread hung up - break; - } - } - }); -} - fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<()> { let (work_tx, work_rx) = mpsc::channel::<(CookRecipe, PathBuf)>(); let (status_tx, status_rx) = mpsc::channel::(); @@ -475,6 +505,22 @@ fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<( .unwrap(), } } + cooker_status_tx + .send(StatusUpdate::CookThreadFinished) + .unwrap_or_default(); + }); + + // ----- Input Thread ----- + let (input_tx, input_rx) = mpsc::channel::(); + let _input_handle = thread::spawn(move || { + let stdin = std::io::stdin(); + for evt in stdin.events() { + if let Ok(evt) = evt { + if input_tx.send(evt).is_err() { + return; + } + } + } }); // ---- Fetcher Thread ---- @@ -502,30 +548,37 @@ fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<( .send(StatusUpdate::FailFetch(name, e.to_string())) .unwrap(), } + status_tx + .send(StatusUpdate::FetchThreadFinished) + .unwrap_or_default(); } }); print!("{}", ToAlternateScreen); - // enable_raw_mode()?; let mut terminal = Terminal::new(TermionBackend::new(stdout()))?; terminal.clear()?; let mut app = TuiApp::new(recipes); // let total_recipes = app.recipes.len(); - let mut running = true; + let running = Arc::new(AtomicBool::new(true)); + let r = running.clone(); - while running { + ctrlc::set_handler(move || { + r.store(false, Ordering::SeqCst); + }) + .context("Error setting Ctrl-C handler")?; + + while running.load(Ordering::Relaxed) { terminal.draw(|f| { + let mut constraints = Vec::new(); + if !app.fetch_complete { + constraints.push(Constraint::Length(30)); + } + constraints.push(Constraint::Length(30)); + constraints.push(Constraint::Min(20)); // Log panel always exists let chunks = Layout::default() .direction(Direction::Horizontal) - .constraints( - [ - Constraint::Percentage(20), - Constraint::Percentage(20), - Constraint::Percentage(60), - ] - .as_ref(), - ) + .constraints(constraints) .split(f.area()); // Left Pane @@ -586,19 +639,85 @@ fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<( vec!["No active cook job.".to_string()] }; + let log_pane_height = chunks[2].height.saturating_sub(2); + let total_log_lines = log_text.len() as u16; + + if app.auto_scroll { + if total_log_lines > log_pane_height { + app.log_scroll = total_log_lines - log_pane_height; + } else { + app.log_scroll = 0; + } + } else { + if total_log_lines > log_pane_height { + if app.log_scroll > total_log_lines - log_pane_height { + app.log_scroll = total_log_lines - log_pane_height; + } + } else { + app.log_scroll = 0; + } + } + let log_paragraph = Paragraph::new(log_text.join("\n")) .block(Block::default().title(log_title).borders(Borders::ALL)) - .wrap(Wrap { trim: false }); + .wrap(Wrap { trim: false }) + .scroll((app.log_scroll, 0)); f.render_widget(log_paragraph, chunks[2]); - // let footer = Paragraph::new(format!( - // "Done: {}/{} | Failed: {}", - // app.done.len(), - // total_recipes, - // app.failed.len() - // )); - // f.render_widget(footer, f.area()); + while let Ok(event) = input_rx.try_recv() { + match event { + Event::Key(key) => match key { + Key::Up => { + app.auto_scroll = false; + app.log_scroll = app.log_scroll.saturating_sub(1); + } + Key::Down => { + app.auto_scroll = false; + app.log_scroll = app.log_scroll.saturating_add(1); + } + _ => {} + }, + + Event::Mouse(mouse_event) => { + match mouse_event { + MouseEvent::Press(termion::event::MouseButton::WheelUp, x, y) => { + // termion is 1-based, ratatui rects are 0-based + let pos = Position { + x: x.saturating_sub(1), + y: y.saturating_sub(1), + }; + + if app.fetch_panel_rect.map_or(false, |r| r.contains(pos)) { + app.fetch_scroll = app.fetch_scroll.saturating_sub(1); + } else if app.cook_panel_rect.map_or(false, |r| r.contains(pos)) { + app.cook_scroll = app.cook_scroll.saturating_sub(1); + } else if app.log_panel_rect.map_or(false, |r| r.contains(pos)) { + app.auto_scroll = false; + app.log_scroll = app.log_scroll.saturating_sub(1); + } + } + MouseEvent::Press(termion::event::MouseButton::WheelDown, x, y) => { + let pos = Position { + x: x.saturating_sub(1), + y: y.saturating_sub(1), + }; + + if app.fetch_panel_rect.map_or(false, |r| r.contains(pos)) { + app.fetch_scroll = app.fetch_scroll.saturating_add(1); + } else if app.cook_panel_rect.map_or(false, |r| r.contains(pos)) { + app.cook_scroll = app.cook_scroll.saturating_add(1); + } else if app.log_panel_rect.map_or(false, |r| r.contains(pos)) { + app.auto_scroll = false; + app.log_scroll = app.log_scroll.saturating_add(1); + } + } + _ => {} + } + } + _ => {} + } + } })?; while let Ok(update) = status_rx.try_recv() { @@ -607,7 +726,7 @@ fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<( if fetcher_handle.is_finished() && cooker_handle.is_finished() { thread::sleep(Duration::from_secs(5)); - running = false; + running.swap(false, Ordering::SeqCst); } } @@ -620,6 +739,26 @@ fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<( Ok(()) } +fn spawn_log_reader( + mut pipe_reader: PipeReader, + package_name: PackageName, + status_tx: mpsc::Sender, +) { + thread::spawn(move || { + let reader = BufReader::new(&mut pipe_reader); + for line in reader.lines() { + let line_str = line.unwrap_or_else(|e| format!("[IO Error] {}", e)); + if status_tx + .send(StatusUpdate::CookLog(package_name.clone(), line_str)) + .is_err() + { + // TUI thread hung up + break; + } + } + }); +} + fn setup_logger( cooker_status_tx: &mpsc::Sender, name: &PackageName, From 0bad6d1562134672e8107b1543c94553c4bcc91d Mon Sep 17 00:00:00 2001 From: Wildan M Date: Fri, 24 Oct 2025 20:15:58 +0700 Subject: [PATCH 2964/3180] Switchable log and log fetch fix --- src/bin/repo.rs | 59 +++++++++++++++++++++++++++++++++++------------ src/cook/fetch.rs | 38 ++++++++++++++++++++++++++---- 2 files changed, 77 insertions(+), 20 deletions(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index d72db813..4105f6d8 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -363,6 +363,7 @@ struct TuiApp { active_cook: Option, logs: HashMap>, log_scroll: u16, + log_view_cook: bool, auto_scroll: bool, fetch_scroll: u16, cook_scroll: u16, @@ -390,6 +391,7 @@ impl TuiApp { logs: HashMap::new(), log_scroll: 0, auto_scroll: true, + log_view_cook: false, fetch_scroll: 0, cook_scroll: 0, fetch_complete: false, @@ -442,6 +444,7 @@ impl TuiApp { } StatusUpdate::FetchThreadFinished => { self.fetch_complete = true; + self.log_view_cook = true; return; } StatusUpdate::CookThreadFinished => { @@ -548,10 +551,10 @@ fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<( .send(StatusUpdate::FailFetch(name, e.to_string())) .unwrap(), } - status_tx - .send(StatusUpdate::FetchThreadFinished) - .unwrap_or_default(); } + status_tx + .send(StatusUpdate::FetchThreadFinished) + .unwrap_or_default(); }); print!("{}", ToAlternateScreen); @@ -561,10 +564,10 @@ fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<( let mut app = TuiApp::new(recipes); // let total_recipes = app.recipes.len(); let running = Arc::new(AtomicBool::new(true)); - let r = running.clone(); ctrlc::set_handler(move || { - r.store(false, Ordering::SeqCst); + print!("{}", ToMainScreen); + process::exit(1); }) .context("Error setting Ctrl-C handler")?; @@ -595,8 +598,11 @@ fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<( ListItem::new(r.name.as_str()).style(style) }) .collect(); - let fetch_list = List::new(fetch_items) - .block(Block::default().title("Fetch Queue").borders(Borders::ALL)); + let fetch_list = List::new(fetch_items).block( + Block::default() + .title("Fetch Queue [1]") + .borders(Borders::ALL), + ); f.render_widget(fetch_list, chunks[0]); // Right Pane @@ -620,26 +626,37 @@ fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<( ListItem::new(r.name.as_str()).style(style) }) .collect(); - let cook_list = List::new(cook_items) - .block(Block::default().title("Cook Queue").borders(Borders::ALL)); - f.render_widget(cook_list, chunks[1]); + let cook_list = List::new(cook_items).block( + Block::default() + .title("Cook Queue [2]") + .borders(Borders::ALL), + ); + f.render_widget(cook_list, chunks[if app.fetch_complete { 0 } else { 1 }]); - let log_title = if let Some(active_name) = &app.active_cook { + let active_name = if app.log_view_cook { + &app.active_cook + } else { + &app.active_fetch + }; + + let log_title = if let Some(active_name) = active_name { format!("Build Log: {}", active_name.as_str()) } else { "Build Log".to_string() }; - let log_text: Vec = if let Some(active_name) = &app.active_cook { + let log_text: Vec = if let Some(active_name) = active_name { app.logs .get(active_name) .cloned() .unwrap_or_else(|| vec!["Waiting for logs...".to_string()]) } else { - vec!["No active cook job.".to_string()] + vec!["No active job.".to_string()] }; - let log_pane_height = chunks[2].height.saturating_sub(2); + let log_pane_height = chunks[if app.fetch_complete { 1 } else { 2 }] + .height + .saturating_sub(2); let total_log_lines = log_text.len() as u16; if app.auto_scroll { @@ -663,11 +680,23 @@ fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<( .wrap(Wrap { trim: false }) .scroll((app.log_scroll, 0)); - f.render_widget(log_paragraph, chunks[2]); + f.render_widget( + log_paragraph, + chunks[if app.fetch_complete { 1 } else { 2 }], + ); while let Ok(event) = input_rx.try_recv() { match event { Event::Key(key) => match key { + Key::Char('\t') => { + app.log_view_cook = !app.log_view_cook; + } + Key::Char('1') => { + app.log_view_cook = false; + } + Key::Char('2') => { + app.log_view_cook = true; + } Key::Up => { app.auto_scroll = false; app.log_scroll = app.log_scroll.saturating_sub(1); diff --git a/src/cook/fetch.rs b/src/cook/fetch.rs index a69b3855..60df1314 100644 --- a/src/cook/fetch.rs +++ b/src/cook/fetch.rs @@ -9,6 +9,21 @@ use std::fs; use std::path::{Path, PathBuf}; use std::process::Command; +macro_rules! log_warn { + ($logger:expr, $($arg:tt)+) => { + use std::io::Write; + + if $logger.is_some() { + let _ = $logger.as_ref().unwrap().1.try_clone().unwrap().write( + format!($($arg)+) + .as_bytes(), + ); + } else { + eprintln!($($arg)+); + } + }; +} + pub(crate) fn get_blake3(path: &PathBuf, show_progress: bool) -> Result { if show_progress { blake3::blake3_progress(&path) @@ -104,7 +119,12 @@ pub fn fetch(recipe_dir: &Path, recipe: &Recipe, logger: &Stdout) -> Result { if !source_dir.is_dir() || modified_dir(Path::new(&path))? > modified_dir(&source_dir)? { - eprintln!("[DEBUG]: {} is newer than {}", path, source_dir.display()); + log_warn!( + logger, + "[DEBUG]: {} is newer than {}", + path, + source_dir.display() + ); copy_dir_all(path, &source_dir).map_err(|e| { format!( "Couldn't copy source from {} to {}: {}", @@ -245,7 +265,10 @@ pub fn fetch(recipe_dir: &Path, recipe: &Recipe, logger: &Stdout) -> Result Result Result Result { if !source_dir.is_dir() { - eprintln!( + log_warn!( + logger, "WARNING: Recipe without source section expected source dir at '{}'", source_dir.display(), ); From ff3cd11099a18fcfebf28b8c370399275b97868f Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sat, 25 Oct 2025 05:38:54 +0700 Subject: [PATCH 2965/3180] Now mostly usable --- Cargo.lock | 53 +--- Cargo.toml | 3 +- clean.sh | 10 +- src/bin/repo.rs | 559 ++++++++++++++++++++++++++++++----------- src/cook/cook_build.rs | 44 +++- src/cook/fetch.rs | 4 +- unfetch.sh | 11 +- 7 files changed, 457 insertions(+), 227 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2319a234..58737f92 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -444,7 +444,7 @@ dependencies = [ "js-sys", "num-traits", "wasm-bindgen", - "windows-link 0.1.3", + "windows-link", ] [[package]] @@ -611,17 +611,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "ctrlc" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "881c5d0a13b2f1498e2306e82cbada78390e152d4b1378fb28a84f4dcd0dc4f3" -dependencies = [ - "dispatch", - "nix", - "windows-sys 0.61.2", -] - [[package]] name = "curve25519-dalek" version = "4.1.3" @@ -753,12 +742,6 @@ dependencies = [ "windows-sys 0.60.2", ] -[[package]] -name = "dispatch" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" - [[package]] name = "displaydoc" version = "0.2.5" @@ -1554,18 +1537,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "nix" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" -dependencies = [ - "bitflags 2.9.1", - "cfg-if 1.0.1", - "cfg_aliases", - "libc", -] - [[package]] name = "num-conv" version = "0.1.0" @@ -2036,7 +2007,6 @@ version = "0.1.0" dependencies = [ "anyhow", "blake3 1.5.3", - "ctrlc", "ignore", "object", "pbr", @@ -3194,7 +3164,7 @@ checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ "windows-implement", "windows-interface", - "windows-link 0.1.3", + "windows-link", "windows-result", "windows-strings", ] @@ -3227,19 +3197,13 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" -[[package]] -name = "windows-link" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" - [[package]] name = "windows-result" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-link 0.1.3", + "windows-link", ] [[package]] @@ -3248,7 +3212,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-link 0.1.3", + "windows-link", ] [[package]] @@ -3287,15 +3251,6 @@ dependencies = [ "windows-targets 0.53.2", ] -[[package]] -name = "windows-sys" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" -dependencies = [ - "windows-link 0.2.1", -] - [[package]] name = "windows-targets" version = "0.42.2" diff --git a/Cargo.toml b/Cargo.toml index b4ba691b..8b28c1c1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ name = "redox_cookbook" version = "0.1.0" authors = ["Jeremy Soller "] edition = "2024" -default-run = "cook" +default-run = "repo" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -23,7 +23,6 @@ doctest = false [dependencies] anyhow = "1" blake3 = "=1.5.3" # 1.5.4 is incompatible with blake3 0.3 dependency from pkgar -ctrlc = { version = "3.5.0", features = ["termination"] } ignore = "0.4" object = { version = "0.36", features = ["build_core"] } pbr = "1.0.2" diff --git a/clean.sh b/clean.sh index 6f7d0b0f..211fcb7c 100755 --- a/clean.sh +++ b/clean.sh @@ -5,15 +5,9 @@ source config.sh if [ $# = 0 ] then - recipes="$(list_recipes --short)" + recipes="--all" else recipes="$@" fi -for recipe_name in $recipes -do - recipe_path=`find_recipe $recipe_name` - - echo -e "\033[01;38;5;215mcook - clean $recipe_name\033[0m" - rm -rf "${ROOT}/$recipe_path/target/${TARGET}" -done +repo clean $recipes diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 4105f6d8..8f867db7 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -1,8 +1,9 @@ -use std::collections::HashMap; -use std::io::{BufRead, BufReader, PipeReader, stdout}; +use std::collections::{HashMap, VecDeque}; +use std::io::{BufRead, BufReader, PipeReader, Write, stderr, stdin, stdout}; use std::path::PathBuf; +use std::process::Command; use std::str::FromStr; -use std::sync::atomic::{AtomicBool, Ordering}; +use std::sync::atomic::{AtomicBool, AtomicU32, Ordering}; use std::sync::{Arc, mpsc}; use std::time::Duration; use std::{env, fs}; @@ -22,11 +23,13 @@ use ratatui::Terminal; use ratatui::layout::{Constraint, Direction, Layout, Position, Rect}; use ratatui::prelude::TermionBackend; use ratatui::style::{Color, Style}; -use ratatui::widgets::{Block, Borders, List, ListItem, Paragraph, Wrap}; +use ratatui::text::{Line, Span}; +use ratatui::widgets::{Block, Borders, Clear, List, ListItem, Paragraph, Wrap}; use termion::event::{Event, Key, MouseEvent}; -use termion::input::{MouseTerminal, TermRead}; -use termion::raw::RawTerminal; -use termion::screen::{AlternateScreen, ToAlternateScreen, ToMainScreen}; +use termion::input::TermRead; +use termion::raw::IntoRawMode; +use termion::screen::IntoAlternateScreen; +use termion::{color, style}; // A repo manager, to replace repo.sh @@ -125,7 +128,10 @@ impl CliConfig { fn main() { init_config(); - main_inner().unwrap(); + if let Err(e) = main_inner() { + eprintln!("{:?}", e); + process::exit(1); + }; } fn main_inner() -> anyhow::Result<()> { @@ -139,7 +145,19 @@ fn main_inner() -> anyhow::Result<()> { let (config, command, recipe_names) = parse_args(args)?; if command == CliCommand::Cook && config.cook.tui { - run_tui_cook(config, recipe_names)?; + if let Some(e) = run_tui_cook(config, recipe_names)? { + let _ = stderr().write(e.as_bytes()); + let _ = stderr().write(b"\n\n"); + return Err(anyhow!("Execution has failed")); + } else { + eprintln!( + "{}{}cook - successful{}{}", + style::Bold, + color::Fg(color::AnsiValue(215)), + color::Fg(color::Reset), + style::Reset, + ); + } return Ok(()); } @@ -343,27 +361,32 @@ enum RecipeStatus { #[derive(Debug, Clone)] enum StatusUpdate { StartFetch(PackageName), - Fetched(PackageName), - FailFetch(PackageName, String), + Fetched(CookRecipe), + FailFetch(CookRecipe, String), StartCook(PackageName), - CookLog(PackageName, String), - Cooked(PackageName), - FailCook(PackageName, String), + Cooked(CookRecipe), + FailCook(CookRecipe, String), + PushLog(PackageName, String), FetchThreadFinished, CookThreadFinished, } +#[derive(PartialEq)] +enum JobType { + Fetch, + Cook, +} + struct TuiApp { recipes: Vec<(CookRecipe, RecipeStatus)>, - fetch_queue: Vec, - cook_queue: Vec, + fetch_queue: VecDeque, + cook_queue: VecDeque, done: Vec, - failed: Vec, active_fetch: Option, active_cook: Option, logs: HashMap>, log_scroll: u16, - log_view_cook: bool, + log_view_job: JobType, auto_scroll: bool, fetch_scroll: u16, cook_scroll: u16, @@ -372,26 +395,27 @@ struct TuiApp { fetch_panel_rect: Option, cook_panel_rect: Option, log_panel_rect: Option, + prompt: Option, + dump_logs_on_exit: Option, } impl TuiApp { fn new(recipes: Vec) -> Self { - let recipe_names = recipes.iter().map(|r| r.name.clone()).collect(); Self { recipes: recipes - .into_iter() + .iter() + .cloned() .map(|r| (r, RecipeStatus::Pending)) .collect(), - fetch_queue: recipe_names, - cook_queue: Vec::new(), + fetch_queue: recipes.iter().cloned().map(|r| r.clone()).collect(), + cook_queue: VecDeque::new(), done: Vec::new(), - failed: Vec::new(), active_fetch: None, active_cook: None, logs: HashMap::new(), log_scroll: 0, auto_scroll: true, - log_view_cook: false, + log_view_job: JobType::Fetch, fetch_scroll: 0, cook_scroll: 0, fetch_complete: false, @@ -399,6 +423,8 @@ impl TuiApp { fetch_panel_rect: None, cook_panel_rect: None, log_panel_rect: None, + prompt: None, + dump_logs_on_exit: None, } } @@ -412,14 +438,17 @@ impl TuiApp { self.auto_scroll = true; (name.clone(), RecipeStatus::Fetching) } - StatusUpdate::Fetched(name) => (name, RecipeStatus::Fetched), - StatusUpdate::FailFetch(name, err) => (name, RecipeStatus::Failed(err)), + StatusUpdate::Fetched(recipe) => (recipe.name.clone(), RecipeStatus::Fetched), + StatusUpdate::FailFetch(recipe, err) => { + self.prompt = Some(FailurePrompt::new(recipe.clone(), err.clone())); + (recipe.name.clone(), RecipeStatus::Failed(err)) + } StatusUpdate::StartCook(name) => { self.active_cook = Some(name.clone()); self.logs.insert(name.clone(), Vec::new()); (name.clone(), RecipeStatus::Cooking) } - StatusUpdate::CookLog(name, line) => { + StatusUpdate::PushLog(name, line) => { self.logs.entry(name.clone()).or_default().push(line); // No status change, just return the current state if let Some((_, status)) = self.recipes.iter().find(|(r, _)| r.name == name) { @@ -428,23 +457,21 @@ impl TuiApp { return; // Should not happen } } - StatusUpdate::Cooked(name) => { - if self.active_cook.as_ref() == Some(&name) { + StatusUpdate::Cooked(recipe) => { + if self.active_cook.as_ref() == Some(&recipe.name) { self.active_cook = None; } self.auto_scroll = true; - (name.clone(), RecipeStatus::Done) + (recipe.name.clone(), RecipeStatus::Done) } - StatusUpdate::FailCook(name, err) => { - if self.active_cook.as_ref() == Some(&name) { - self.active_cook = None; - } - self.auto_scroll = false; - (name.clone(), RecipeStatus::Failed(err)) + StatusUpdate::FailCook(recipe, err) => { + self.prompt = Some(FailurePrompt::new(recipe.clone(), err.clone())); + + (recipe.name.clone(), RecipeStatus::Failed(err)) } StatusUpdate::FetchThreadFinished => { self.fetch_complete = true; - self.log_view_cook = true; + self.log_view_job = JobType::Cook; return; } StatusUpdate::CookThreadFinished => { @@ -461,14 +488,14 @@ impl TuiApp { self.fetch_queue = self .recipes .iter() - .filter(|(_, s)| *s == RecipeStatus::Pending || *s == RecipeStatus::Fetching) - .map(|(r, _)| r.name.clone()) + .filter(|(_, s)| *s == RecipeStatus::Pending) + .map(|(r, _)| r.clone()) .collect(); self.cook_queue = self .recipes .iter() - .filter(|(_, s)| *s == RecipeStatus::Fetched || *s == RecipeStatus::Cooking) - .map(|(r, _)| r.name.clone()) + .filter(|(_, s)| *s == RecipeStatus::Fetched) + .map(|(r, _)| (r.clone())) .collect(); self.done = self .recipes @@ -476,24 +503,22 @@ impl TuiApp { .filter(|(_, s)| *s == RecipeStatus::Done) .map(|(r, _)| r.name.clone()) .collect(); - self.failed = self - .recipes - .iter() - .filter(|(_, s)| matches!(s, RecipeStatus::Failed(_))) - .map(|(r, _)| r.name.clone()) - .collect(); } } -fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<()> { +fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result> { let (work_tx, work_rx) = mpsc::channel::<(CookRecipe, PathBuf)>(); let (status_tx, status_rx) = mpsc::channel::(); + let running = Arc::new(AtomicBool::new(true)); + let prompting = Arc::new(AtomicU32::new(0)); + // ---- Cooker Thread ---- let cooker_config = config.clone(); let cooker_status_tx = status_tx.clone(); + let cooker_prompting = prompting.clone(); let cooker_handle = thread::spawn(move || { - for (recipe, source_dir) in work_rx { + 'done: for (recipe, source_dir) in work_rx { let name = recipe.name.clone(); let is_deps = recipe.is_deps; cooker_status_tx @@ -501,11 +526,51 @@ fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<( .unwrap(); let (mut stdout_writer, mut stderr_writer) = setup_logger(&cooker_status_tx, &name); let logger = Some((&mut stdout_writer, &mut stderr_writer)); - match handle_cook(&recipe, &cooker_config, source_dir, is_deps, &logger) { - Ok(_) => cooker_status_tx.send(StatusUpdate::Cooked(name)).unwrap(), - Err(e) => cooker_status_tx - .send(StatusUpdate::FailCook(name, e.to_string())) - .unwrap(), + 'again: loop { + match handle_cook( + &recipe, + &cooker_config, + source_dir.clone(), + is_deps, + &logger, + ) { + Ok(()) => { + cooker_status_tx + .send(StatusUpdate::Cooked(recipe)) + .unwrap_or_default(); + break; + } + Err(e) => { + cooker_status_tx + .send(StatusUpdate::FailCook(recipe.clone(), e.to_string())) + .unwrap_or_default(); + if !cooker_config.cook.nonstop { + while cooker_prompting.load(Ordering::SeqCst) != 0 { + thread::sleep(Duration::from_millis(101)); // wait other prompt + } + cooker_prompting.swap(1, Ordering::SeqCst); + 'wait: loop { + match cooker_prompting.load(Ordering::SeqCst) { + 0 => break 'again, + 1 => thread::sleep(Duration::from_millis(101)), + 2 => { + cooker_prompting.swap(0, Ordering::SeqCst); + break 'wait; + } // retry + 3 => { + cooker_prompting.swap(0, Ordering::SeqCst); + break 'again; + } // skip + 4 => { + cooker_prompting.swap(0, Ordering::SeqCst); + break 'done; + } // done + _ => unreachable!(), + } + } + } + } + } } } cooker_status_tx @@ -513,11 +578,17 @@ fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<( .unwrap_or_default(); }); + let mstdin = stdin(); + let mstdout = stdout() + .into_raw_mode() + .unwrap() + .into_alternate_screen() + .unwrap(); + // ----- Input Thread ----- let (input_tx, input_rx) = mpsc::channel::(); let _input_handle = thread::spawn(move || { - let stdin = std::io::stdin(); - for evt in stdin.events() { + for evt in mstdin.events() { if let Ok(evt) = evt { if input_tx.send(evt).is_err() { return; @@ -528,28 +599,62 @@ fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<( // ---- Fetcher Thread ---- let fetcher_recipes = recipes.clone(); + let fetcher_status_tx = status_tx.clone(); let fetcher_config = config.clone(); + let fetcher_prompting = prompting.clone(); let fetcher_handle = thread::spawn(move || { - for recipe in fetcher_recipes { + 'done: for recipe in fetcher_recipes { let name = recipe.name.clone(); - status_tx + fetcher_status_tx .send(StatusUpdate::StartFetch(name.clone())) .unwrap(); - let (mut stdout_writer, mut stderr_writer) = setup_logger(&status_tx, &name); + let (mut stdout_writer, mut stderr_writer) = setup_logger(&fetcher_status_tx, &name); let logger = Some((&mut stdout_writer, &mut stderr_writer)); - match handle_fetch(&recipe, &fetcher_config, &logger) { - Ok(source_dir) => { - status_tx.send(StatusUpdate::Fetched(name)).unwrap(); - if work_tx.send((recipe.clone(), source_dir)).is_err() { - // Cooker thread died + 'again: loop { + match handle_fetch(&recipe, &fetcher_config, &logger) { + Ok(source_dir) => { + fetcher_status_tx + .send(StatusUpdate::Fetched(recipe.clone())) + .unwrap(); + if work_tx.send((recipe.clone(), source_dir)).is_err() { + // Cooker thread died + break 'done; + } break; } + Err(e) => { + fetcher_status_tx + .send(StatusUpdate::FailFetch(recipe.clone(), e.to_string())) + .unwrap_or_default(); + if !fetcher_config.cook.nonstop { + while fetcher_prompting.load(Ordering::SeqCst) != 0 { + thread::sleep(Duration::from_millis(101)); // wait other prompt + } + fetcher_prompting.swap(1, Ordering::SeqCst); + 'wait: loop { + match fetcher_prompting.load(Ordering::SeqCst) { + 0 => break 'again, + 1 => thread::sleep(Duration::from_millis(101)), + 2 => { + fetcher_prompting.swap(0, Ordering::SeqCst); + break 'wait; + } // retry + 3 => { + fetcher_prompting.swap(0, Ordering::SeqCst); + break 'again; + } // skip + 4 => { + fetcher_prompting.swap(0, Ordering::SeqCst); + break 'done; + } // done + _ => unreachable!(), + } + } + } + } } - Err(e) => status_tx - .send(StatusUpdate::FailFetch(name, e.to_string())) - .unwrap(), } } status_tx @@ -557,28 +662,19 @@ fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<( .unwrap_or_default(); }); - print!("{}", ToAlternateScreen); let mut terminal = Terminal::new(TermionBackend::new(stdout()))?; terminal.clear()?; let mut app = TuiApp::new(recipes); - // let total_recipes = app.recipes.len(); - let running = Arc::new(AtomicBool::new(true)); - ctrlc::set_handler(move || { - print!("{}", ToMainScreen); - process::exit(1); - }) - .context("Error setting Ctrl-C handler")?; - - while running.load(Ordering::Relaxed) { + while running.load(Ordering::SeqCst) { terminal.draw(|f| { let mut constraints = Vec::new(); if !app.fetch_complete { constraints.push(Constraint::Length(30)); } constraints.push(Constraint::Length(30)); - constraints.push(Constraint::Min(20)); // Log panel always exists + constraints.push(Constraint::Min(20)); let chunks = Layout::default() .direction(Direction::Horizontal) .constraints(constraints) @@ -633,7 +729,7 @@ fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<( ); f.render_widget(cook_list, chunks[if app.fetch_complete { 0 } else { 1 }]); - let active_name = if app.log_view_cook { + let active_name = if app.log_view_job == JobType::Cook { &app.active_cook } else { &app.active_fetch @@ -667,8 +763,9 @@ fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<( } } else { if total_log_lines > log_pane_height { - if app.log_scroll > total_log_lines - log_pane_height { + if app.log_scroll >= total_log_lines - log_pane_height { app.log_scroll = total_log_lines - log_pane_height; + app.auto_scroll = true; } } else { app.log_scroll = 0; @@ -685,66 +782,21 @@ fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<( chunks[if app.fetch_complete { 1 } else { 2 }], ); + if let Some(prompt) = &app.prompt { + draw_prompt(f, prompt); + } + while let Ok(event) = input_rx.try_recv() { - match event { - Event::Key(key) => match key { - Key::Char('\t') => { - app.log_view_cook = !app.log_view_cook; - } - Key::Char('1') => { - app.log_view_cook = false; - } - Key::Char('2') => { - app.log_view_cook = true; - } - Key::Up => { - app.auto_scroll = false; - app.log_scroll = app.log_scroll.saturating_sub(1); - } - Key::Down => { - app.auto_scroll = false; - app.log_scroll = app.log_scroll.saturating_add(1); - } - _ => {} - }, - - Event::Mouse(mouse_event) => { - match mouse_event { - MouseEvent::Press(termion::event::MouseButton::WheelUp, x, y) => { - // termion is 1-based, ratatui rects are 0-based - let pos = Position { - x: x.saturating_sub(1), - y: y.saturating_sub(1), - }; - - if app.fetch_panel_rect.map_or(false, |r| r.contains(pos)) { - app.fetch_scroll = app.fetch_scroll.saturating_sub(1); - } else if app.cook_panel_rect.map_or(false, |r| r.contains(pos)) { - app.cook_scroll = app.cook_scroll.saturating_sub(1); - } else if app.log_panel_rect.map_or(false, |r| r.contains(pos)) { - app.auto_scroll = false; - app.log_scroll = app.log_scroll.saturating_sub(1); - } - } - MouseEvent::Press(termion::event::MouseButton::WheelDown, x, y) => { - let pos = Position { - x: x.saturating_sub(1), - y: y.saturating_sub(1), - }; - - if app.fetch_panel_rect.map_or(false, |r| r.contains(pos)) { - app.fetch_scroll = app.fetch_scroll.saturating_add(1); - } else if app.cook_panel_rect.map_or(false, |r| r.contains(pos)) { - app.cook_scroll = app.cook_scroll.saturating_add(1); - } else if app.log_panel_rect.map_or(false, |r| r.contains(pos)) { - app.auto_scroll = false; - app.log_scroll = app.log_scroll.saturating_add(1); - } - } - _ => {} + if app.prompt.is_some() { + if let Some(res) = handle_prompt_input(event, &mut app, &running) { + prompting.swap(res as u32, Ordering::SeqCst); + if res == PromptOption::Exit { + app.dump_logs_on_exit = Some(log_text.join("\n")) } + app.prompt = None; } - _ => {} + } else { + handle_main_event(&mut app, event); } } })?; @@ -753,19 +805,194 @@ fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result<( app.update_status(update); } - if fetcher_handle.is_finished() && cooker_handle.is_finished() { - thread::sleep(Duration::from_secs(5)); + if app.cook_complete { running.swap(false, Ordering::SeqCst); } } - // disable_raw_mode()?; - print!("{}", ToMainScreen); + drop(mstdout); + let _ = stdout().flush(); fetcher_handle.join().unwrap(); cooker_handle.join().unwrap(); - Ok(()) + Ok(app.dump_logs_on_exit) +} + +fn handle_main_event(app: &mut TuiApp, event: Event) { + match event { + Event::Key(key) => match key { + Key::Char('1') => { + app.log_view_job = JobType::Fetch; + } + Key::Char('2') => { + app.log_view_job = JobType::Cook; + } + Key::Char('c') => { + // as compilers still running, we use this way to stop it + let pid = std::process::id(); + Command::new("pkill") + .arg("-9") + .arg("-P") + .arg(pid.to_string()) + .spawn() + .expect("unable to spawn pkill"); + } + Key::Up => { + app.auto_scroll = false; + app.log_scroll = app.log_scroll.saturating_sub(1); + } + Key::Down => { + app.auto_scroll = false; + app.log_scroll = app.log_scroll.saturating_add(1); + } + Key::PageUp => { + app.auto_scroll = false; + app.log_scroll = app.log_scroll.saturating_sub(20); + } + Key::PageDown => { + app.auto_scroll = false; + app.log_scroll = app.log_scroll.saturating_add(20); + } + Key::End => { + app.auto_scroll = true; + } + Key::Home => { + app.auto_scroll = false; + app.log_scroll = 0; + } + _ => {} + }, + + Event::Mouse(mouse_event) => { + match mouse_event { + MouseEvent::Press(termion::event::MouseButton::WheelUp, x, y) => { + // termion is 1-based, ratatui rects are 0-based + let pos = Position { + x: x.saturating_sub(1), + y: y.saturating_sub(1), + }; + + if app.fetch_panel_rect.map_or(false, |r| r.contains(pos)) { + app.fetch_scroll = app.fetch_scroll.saturating_sub(1); + } else if app.cook_panel_rect.map_or(false, |r| r.contains(pos)) { + app.cook_scroll = app.cook_scroll.saturating_sub(1); + } else if app.log_panel_rect.map_or(false, |r| r.contains(pos)) { + app.auto_scroll = false; + app.log_scroll = app.log_scroll.saturating_sub(1); + } + } + MouseEvent::Press(termion::event::MouseButton::WheelDown, x, y) => { + let pos = Position { + x: x.saturating_sub(1), + y: y.saturating_sub(1), + }; + + if app.fetch_panel_rect.map_or(false, |r| r.contains(pos)) { + app.fetch_scroll = app.fetch_scroll.saturating_add(1); + } else if app.cook_panel_rect.map_or(false, |r| r.contains(pos)) { + app.cook_scroll = app.cook_scroll.saturating_add(1); + } else if app.log_panel_rect.map_or(false, |r| r.contains(pos)) { + app.auto_scroll = false; + app.log_scroll = app.log_scroll.saturating_add(1); + } + } + _ => {} + } + } + _ => {} + } +} + +fn handle_prompt_input( + event: Event, + app: &mut TuiApp, + running: &Arc, +) -> Option { + if let Some(prompt) = &mut app.prompt { + match event { + Event::Key(key) => match key { + Key::Char('q') | Key::Ctrl('c') | Key::Esc => { + // Treat as "Exit" + running.store(false, Ordering::SeqCst); + return Some(PromptOption::Exit); + } + Key::Left | Key::BackTab => prompt.prev(), + Key::Right | Key::Char('\t') => prompt.next(), + Key::Char('\n') => { + let prompt = app.prompt.take().unwrap(); + if prompt.selected == PromptOption::Exit { + running.store(false, Ordering::SeqCst); + } + return Some(prompt.selected); + } + _ => {} + }, + _ => {} // Ignore mouse events + } + } + None +} + +fn draw_prompt(f: &mut ratatui::Frame, prompt: &FailurePrompt) { + let title = format!(" FAILURE in {} ", prompt.recipe.name); + let mut error_text = prompt.error.clone(); + if error_text.len() > 100 { + error_text = error_text[0..100].to_string() + ".."; + } + + // Style for options + let retry_style = if prompt.selected == PromptOption::Retry { + Style::default().bg(Color::White).fg(Color::Black) + } else { + Style::default() + }; + let skip_style = if prompt.selected == PromptOption::Skip { + Style::default().bg(Color::White).fg(Color::Black) + } else { + Style::default() + }; + let exit_style = if prompt.selected == PromptOption::Exit { + Style::default().bg(Color::White).fg(Color::Black) + } else { + Style::default() + }; + + let text = vec![ + Line::from(error_text).style(Style::default().fg(Color::Yellow)), + Line::from(""), + Line::from(vec![ + Span::styled(" [Retry] ", retry_style), + Span::raw(" "), + Span::styled(" [Skip] ", skip_style), + Span::raw(" "), + Span::styled(" [Exit] ", exit_style), + ]), + ]; + + let block = Block::default() + .title(Span::styled( + title, + Style::default().fg(Color::White).bg(Color::Red), + )) + .borders(Borders::ALL) + .border_style(Style::default().fg(Color::Red)); + + let paragraph = Paragraph::new(text) + .block(block) + .alignment(ratatui::layout::Alignment::Center) + .wrap(Wrap { trim: true }); + + let area = f.area(); + let popup_area = Rect { + x: area.width / 4, + y: area.height / 3, + width: area.width / 2, + height: 10, + }; + + f.render_widget(Clear, popup_area); // Clear the background + f.render_widget(paragraph, popup_area); } fn spawn_log_reader( @@ -778,7 +1005,7 @@ fn spawn_log_reader( for line in reader.lines() { let line_str = line.unwrap_or_else(|e| format!("[IO Error] {}", e)); if status_tx - .send(StatusUpdate::CookLog(package_name.clone(), line_str)) + .send(StatusUpdate::PushLog(package_name.clone(), line_str)) .is_err() { // TUI thread hung up @@ -789,12 +1016,52 @@ fn spawn_log_reader( } fn setup_logger( - cooker_status_tx: &mpsc::Sender, + status_tx: &mpsc::Sender, name: &PackageName, ) -> (std::io::PipeWriter, std::io::PipeWriter) { let (stdout_reader, stdout_writer) = std::io::pipe().expect("Failed to create stdout pipe"); let (stderr_reader, stderr_writer) = std::io::pipe().expect("Failed to create stderr pipe"); - spawn_log_reader(stdout_reader, name.clone(), cooker_status_tx.clone()); - spawn_log_reader(stderr_reader, name.clone(), cooker_status_tx.clone()); + spawn_log_reader(stdout_reader, name.clone(), status_tx.clone()); + spawn_log_reader(stderr_reader, name.clone(), status_tx.clone()); (stdout_writer, stderr_writer) } + +#[derive(PartialEq, Clone, Copy)] +#[repr(u32)] +enum PromptOption { + Retry = 2, + Skip, + Exit, +} + +struct FailurePrompt { + recipe: CookRecipe, + error: String, + selected: PromptOption, +} + +impl FailurePrompt { + fn new(recipe: CookRecipe, error: String) -> Self { + Self { + recipe, + error, + selected: PromptOption::Exit, + } + } + + fn next(&mut self) { + self.selected = match self.selected { + PromptOption::Retry => PromptOption::Skip, + PromptOption::Skip => PromptOption::Exit, + PromptOption::Exit => PromptOption::Retry, + } + } + + fn prev(&mut self) { + self.selected = match self.selected { + PromptOption::Retry => PromptOption::Exit, + PromptOption::Skip => PromptOption::Retry, + PromptOption::Exit => PromptOption::Skip, + } + } +} diff --git a/src/cook/cook_build.rs b/src/cook/cook_build.rs index 016e840f..a9c92164 100644 --- a/src/cook/cook_build.rs +++ b/src/cook/cook_build.rs @@ -21,9 +21,25 @@ use crate::is_redox; use crate::REMOTE_PKG_SOURCE; +macro_rules! log_warn { + ($logger:expr, $($arg:tt)+) => { + use std::io::Write; + + if $logger.is_some() { + let _ = $logger.as_ref().unwrap().1.try_clone().unwrap().write( + format!($($arg)+) + .as_bytes(), + ); + } else { + eprintln!($($arg)+); + } + }; +} + fn auto_deps( stage_dir: &Path, dep_pkgars: &BTreeSet<(PackageName, PathBuf)>, + logger: &Stdout, ) -> BTreeSet { let mut paths = BTreeSet::new(); let mut visited = BTreeSet::new(); @@ -43,7 +59,10 @@ fn auto_deps( }; if visited.contains(&dir) { #[cfg(debug_assertions)] - eprintln!("DEBUG: auto_deps => Skipping `{dir:?}` (already visited)"); + log_warn!( + logger, + "DEBUG: auto_deps => Skipping `{dir:?}` (already visited)" + ); continue; } assert!( @@ -90,7 +109,7 @@ fn auto_deps( continue; }; if let Ok(relative_path) = path.strip_prefix(stage_dir) { - eprintln!("DEBUG: {} needs {}", relative_path.display(), name); + log_warn!(logger, "DEBUG: {} needs {}", relative_path.display(), name); } needed.insert(name.to_string()); } @@ -124,7 +143,7 @@ fn auto_deps( continue; }; if needed.contains(child_name) { - eprintln!("DEBUG: {} provides {}", dep, child_name); + log_warn!(logger, "DEBUG: {} provides {}", dep, child_name); deps.insert(dep.clone()); missing.remove(child_name); } @@ -134,7 +153,7 @@ fn auto_deps( } for name in missing { - eprintln!("WARN: {} missing", name); + log_warn!(logger, "WARN: {} missing", name); } deps @@ -174,7 +193,7 @@ pub fn build( } if stage_dir.exists() && !check_source { - let auto_deps = build_auto_deps(target_dir, &stage_dir, dep_pkgars)?; + let auto_deps = build_auto_deps(target_dir, &stage_dir, dep_pkgars, logger)?; return Ok((stage_dir, auto_deps)); } @@ -190,7 +209,8 @@ pub fn build( if sysroot_dir.is_dir() { let sysroot_modified = modified_dir(&sysroot_dir)?; if sysroot_modified < source_modified || sysroot_modified < deps_modified { - eprintln!( + log_warn!( + logger, "DEBUG: '{}' newer than '{}'", source_dir.display(), sysroot_dir.display() @@ -239,7 +259,8 @@ pub fn build( if stage_dir.is_dir() { let stage_modified = modified_dir(&stage_dir)?; if stage_modified < source_modified || stage_modified < deps_modified { - eprintln!( + log_warn!( + logger, "DEBUG: '{}' newer than '{}'", source_dir.display(), stage_dir.display() @@ -318,7 +339,7 @@ pub fn build( } else { let cookbook_redoxer = Path::new("target/release/cookbook_redoxer") .canonicalize() - .unwrap(); + .unwrap_or(PathBuf::from("/bin/false")); let mut command = Command::new(&cookbook_redoxer); command.arg("env").arg("bash").arg("-ex"); command.env("COOKBOOK_REDOXER", &cookbook_redoxer); @@ -348,7 +369,7 @@ pub fn build( rename(&stage_dir_tmp, &stage_dir)?; } - let auto_deps = build_auto_deps(target_dir, &stage_dir, dep_pkgars)?; + let auto_deps = build_auto_deps(target_dir, &stage_dir, dep_pkgars, logger)?; Ok((stage_dir, auto_deps)) } @@ -358,6 +379,7 @@ fn build_auto_deps( target_dir: &Path, stage_dir: &PathBuf, dep_pkgars: BTreeSet<(PackageName, PathBuf)>, + logger: &Stdout, ) -> Result, String> { let auto_deps_path = target_dir.join("auto_deps.toml"); if auto_deps_path.is_file() && modified(&auto_deps_path)? < modified(stage_dir)? { @@ -371,7 +393,7 @@ fn build_auto_deps( toml::from_str(&toml_content).map_err(|_| "failed to deserialize cached auto_deps")?; wrapper.packages } else { - let packages = auto_deps(stage_dir, &dep_pkgars); + let packages = auto_deps(stage_dir, &dep_pkgars, logger); let wrapper = AutoDeps { packages }; serialize_and_write(&auto_deps_path, &wrapper)?; wrapper.packages @@ -475,7 +497,7 @@ mod tests { "Expected a loop where {dir:?} points to {root:?}" ); - let entries = auto_deps(root, &Default::default()); + let entries = auto_deps(root, &Default::default(), &None); assert!( entries.is_empty(), "auto_deps shouldn't have yielded any libraries" diff --git a/src/cook/fetch.rs b/src/cook/fetch.rs index 60df1314..6295cae7 100644 --- a/src/cook/fetch.rs +++ b/src/cook/fetch.rs @@ -76,7 +76,7 @@ pub fn fetch_offline( }) => { if !source_dir.is_dir() { let source_tar = recipe_dir.join("source.tar"); - let source_tar_blake3 = get_blake3(&source_tar, true)?; + let source_tar_blake3 = get_blake3(&source_tar, true && logger.is_none())?; if source_tar.exists() { if let Some(blake3) = blake3 { if source_tar_blake3 != *blake3 { @@ -257,7 +257,7 @@ pub fn fetch(recipe_dir: &Path, recipe: &Recipe, logger: &Stdout) -> Result Date: Sat, 25 Oct 2025 05:44:35 +0700 Subject: [PATCH 2966/3180] Fix clean --- src/recipe.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/recipe.rs b/src/recipe.rs index a1ea1eef..98ca4360 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -207,7 +207,7 @@ impl CookRecipe { pub fn from_path(dir: &Path, read_recipe: bool) -> Result { let file = dir.join("recipe.toml"); - let name: PackageName = file.file_name().unwrap().try_into()?; + let name: PackageName = dir.file_name().unwrap().try_into()?; let recipe = if read_recipe { Recipe::new(&file)? } else { From be2a4ddd0a9f9d3ca88ab6eede4387a3e871d22c Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sat, 25 Oct 2025 12:06:54 +0700 Subject: [PATCH 2967/3180] Tell what recipe error, optimized rendering --- src/bin/repo.rs | 160 ++++++++++++++++++++++++++------------------ src/cook/package.rs | 4 ++ 2 files changed, 99 insertions(+), 65 deletions(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 8f867db7..378118fb 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -6,7 +6,7 @@ use std::str::FromStr; use std::sync::atomic::{AtomicBool, AtomicU32, Ordering}; use std::sync::{Arc, mpsc}; use std::time::Duration; -use std::{env, fs}; +use std::{cmp, env, fs}; use std::{process, thread}; use anyhow::{Context, anyhow, bail}; @@ -145,15 +145,23 @@ fn main_inner() -> anyhow::Result<()> { let (config, command, recipe_names) = parse_args(args)?; if command == CliCommand::Cook && config.cook.tui { - if let Some(e) = run_tui_cook(config, recipe_names)? { + if let Some((name, e)) = run_tui_cook(config, recipe_names)? { let _ = stderr().write(e.as_bytes()); let _ = stderr().write(b"\n\n"); + eprintln!( + "{}{}cook - failed at {}{}{}", + style::Bold, + color::Fg(color::AnsiValue(196)), + name.as_str(), + color::Fg(color::Reset), + style::Reset, + ); return Err(anyhow!("Execution has failed")); } else { eprintln!( "{}{}cook - successful{}{}", style::Bold, - color::Fg(color::AnsiValue(215)), + color::Fg(color::AnsiValue(46)), color::Fg(color::Reset), style::Reset, ); @@ -274,7 +282,7 @@ fn handle_fetch( true => fetch_offline(recipe_dir, &recipe.recipe, logger), false => fetch(recipe_dir, &recipe.recipe, logger), } - .map_err(|e| anyhow!(e))?; + .map_err(|e| anyhow!("failed to fetch: {:?}", e))?; Ok(source_dir) } @@ -298,7 +306,7 @@ fn handle_cook( !is_deps, logger, ) - .map_err(|err| anyhow!("failed to build: {}", err))?; + .map_err(|err| anyhow!("failed to build: {:?}", err))?; package( &stage_dir, @@ -307,7 +315,7 @@ fn handle_cook( &recipe.recipe, &auto_deps, ) - .map_err(|err| anyhow!("failed to package: {}", err))?; + .map_err(|err| anyhow!("failed to package: {:?}", err))?; Ok(()) } @@ -385,18 +393,18 @@ struct TuiApp { active_fetch: Option, active_cook: Option, logs: HashMap>, - log_scroll: u16, + log_scroll: usize, log_view_job: JobType, auto_scroll: bool, - fetch_scroll: u16, - cook_scroll: u16, + fetch_scroll: usize, + cook_scroll: usize, fetch_complete: bool, cook_complete: bool, fetch_panel_rect: Option, cook_panel_rect: Option, log_panel_rect: Option, prompt: Option, - dump_logs_on_exit: Option, + dump_logs_on_exit: Option<(PackageName, String)>, } impl TuiApp { @@ -506,7 +514,10 @@ impl TuiApp { } } -fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result> { +fn run_tui_cook( + config: CliConfig, + recipes: Vec, +) -> anyhow::Result> { let (work_tx, work_rx) = mpsc::channel::<(CookRecipe, PathBuf)>(); let (status_tx, status_rx) = mpsc::channel::(); @@ -729,11 +740,7 @@ fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result) -> anyhow::Result = if let Some(active_name) = active_name { - app.logs - .get(active_name) - .cloned() - .unwrap_or_else(|| vec!["Waiting for logs...".to_string()]) - } else { - vec!["No active job.".to_string()] - }; + let mut enable_auto_scroll = false; - let log_pane_height = chunks[if app.fetch_complete { 1 } else { 2 }] - .height - .saturating_sub(2); - let total_log_lines = log_text.len() as u16; + let log_lines: Vec = if let Some(log_text) = log_text + && log_text.len() > 0 + { + let log_pane_height = chunks[if app.fetch_complete { 1 } else { 2 }] + .height + .saturating_sub(2) as usize; + let total_log_lines = log_text.len() as usize; - if app.auto_scroll { - if total_log_lines > log_pane_height { - app.log_scroll = total_log_lines - log_pane_height; - } else { - app.log_scroll = 0; - } - } else { - if total_log_lines > log_pane_height { - if app.log_scroll >= total_log_lines - log_pane_height { - app.log_scroll = total_log_lines - log_pane_height; - app.auto_scroll = true; + let start = if app.auto_scroll { + if total_log_lines > log_pane_height { + total_log_lines - log_pane_height + } else { + 0 } } else { - app.log_scroll = 0; - } - } + if total_log_lines > log_pane_height { + if app.log_scroll >= total_log_lines - log_pane_height { + enable_auto_scroll = true; + total_log_lines - log_pane_height + } else { + app.log_scroll + } + } else { + 0 + } + }; - let log_paragraph = Paragraph::new(log_text.join("\n")) + let end = cmp::min(log_pane_height + start, total_log_lines - 1); + + log_text[start..end] + .iter() + .map(|s| Line::from(s.clone())) + .collect() + } else { + vec![Line::from("No logs yet")] + }; + + let log_paragraph = Paragraph::new(log_lines) .block(Block::default().title(log_title).borders(Borders::ALL)) - .wrap(Wrap { trim: false }) - .scroll((app.log_scroll, 0)); + .wrap(Wrap { trim: false }); f.render_widget( log_paragraph, chunks[if app.fetch_complete { 1 } else { 2 }], ); - if let Some(prompt) = &app.prompt { draw_prompt(f, prompt); } + if enable_auto_scroll { + app.auto_scroll = true; + } while let Ok(event) = input_rx.try_recv() { - if app.prompt.is_some() { - if let Some(res) = handle_prompt_input(event, &mut app, &running) { - prompting.swap(res as u32, Ordering::SeqCst); - if res == PromptOption::Exit { - app.dump_logs_on_exit = Some(log_text.join("\n")) + if let Some((app, res)) = handle_prompt_input(&event, &mut app) { + prompting.swap(res as u32, Ordering::SeqCst); + if res == PromptOption::Exit { + let (name, log) = get_active_log(&app); + if let Some(name) = name + && let Some(log) = log + { + app.dump_logs_on_exit = Some((name.to_owned(), log.join("\n"))); } - app.prompt = None; + running.store(false, Ordering::SeqCst); } + app.prompt = None; } else { - handle_main_event(&mut app, event); + handle_main_event(&mut app, &event); } } })?; @@ -819,7 +839,22 @@ fn run_tui_cook(config: CliConfig, recipes: Vec) -> anyhow::Result (Option, Option<&Vec>) { + let active_name = if app.log_view_job == JobType::Cook { + app.active_cook.clone() + } else { + app.active_fetch.clone() + }; + + let log_text = if let Some(active_name) = &active_name { + app.logs.get(active_name) + } else { + None + }; + (active_name, log_text) +} + +fn handle_main_event(app: &mut TuiApp, event: &Event) { match event { Event::Key(key) => match key { Key::Char('1') => { @@ -904,27 +939,22 @@ fn handle_main_event(app: &mut TuiApp, event: Event) { } } -fn handle_prompt_input( - event: Event, - app: &mut TuiApp, - running: &Arc, -) -> Option { +fn handle_prompt_input<'a>( + event: &Event, + app: &'a mut TuiApp, +) -> Option<(&'a mut TuiApp, PromptOption)> { if let Some(prompt) = &mut app.prompt { match event { Event::Key(key) => match key { Key::Char('q') | Key::Ctrl('c') | Key::Esc => { // Treat as "Exit" - running.store(false, Ordering::SeqCst); - return Some(PromptOption::Exit); + return Some((app, PromptOption::Exit)); } Key::Left | Key::BackTab => prompt.prev(), Key::Right | Key::Char('\t') => prompt.next(), Key::Char('\n') => { let prompt = app.prompt.take().unwrap(); - if prompt.selected == PromptOption::Exit { - running.store(false, Ordering::SeqCst); - } - return Some(prompt.selected); + return Some((app, prompt.selected)); } _ => {} }, diff --git a/src/cook/package.rs b/src/cook/package.rs index a02ad9b1..b4fed138 100644 --- a/src/cook/package.rs +++ b/src/cook/package.rs @@ -36,6 +36,7 @@ pub fn package( } let package_file = target_dir.join("stage.pkgar"); + let package_meta = target_dir.join("stage.toml"); // Rebuild package if stage is newer //TODO: rebuild on recipe changes if package_file.is_file() { @@ -47,6 +48,7 @@ pub fn package( package_file.display() ); remove_all(&package_file)?; + remove_all(&package_meta)?; } } if !package_file.is_file() { @@ -56,7 +58,9 @@ pub fn package( stage_dir.to_str().unwrap(), ) .map_err(|err| format!("failed to create pkgar archive: {:?}", err))?; + } + if !package_meta.is_file() { package_toml(target_dir, name, recipe, auto_deps)?; } From d91f0eb8d520a581b8e87e7f7fb272db4d4e56d5 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sat, 25 Oct 2025 12:17:11 +0700 Subject: [PATCH 2968/3180] Fix package log --- src/bin/cook.rs | 2 +- src/bin/repo.rs | 1 + src/cook/package.rs | 19 ++++++++++++++++++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 82e05744..e70bf4bb 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -44,7 +44,7 @@ fn cook( ) .map_err(|err| format!("failed to build: {}", err))?; - package(&stage_dir, &target_dir, name, recipe, &auto_deps) + package(&stage_dir, &target_dir, name, recipe, &auto_deps, &None) .map_err(|err| format!("failed to package: {}", err))?; Ok(()) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 378118fb..c8f9c80b 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -314,6 +314,7 @@ fn handle_cook( &recipe.name, &recipe.recipe, &auto_deps, + logger, ) .map_err(|err| anyhow!("failed to package: {:?}", err))?; diff --git a/src/cook/package.rs b/src/cook/package.rs index b4fed138..3103c13f 100644 --- a/src/cook/package.rs +++ b/src/cook/package.rs @@ -7,12 +7,28 @@ use crate::{ recipe::{BuildKind, Recipe}, }; +macro_rules! log_warn { + ($logger:expr, $($arg:tt)+) => { + use std::io::Write; + + if $logger.is_some() { + let _ = $logger.as_ref().unwrap().1.try_clone().unwrap().write( + format!($($arg)+) + .as_bytes(), + ); + } else { + eprintln!($($arg)+); + } + }; +} + pub fn package( stage_dir: &Path, target_dir: &Path, name: &PackageName, recipe: &Recipe, auto_deps: &BTreeSet, + logger: &Stdout, ) -> Result<(), String> { if recipe.build.kind == BuildKind::None { // metapackages don't have stage dir @@ -42,7 +58,8 @@ pub fn package( if package_file.is_file() { let stage_modified = modified_dir(stage_dir)?; if modified(&package_file)? < stage_modified { - eprintln!( + log_warn!( + logger, "DEBUG: '{}' newer than '{}'", stage_dir.display(), package_file.display() From 067274504d18247befefb5f2ac78eb986dda3289 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sat, 25 Oct 2025 12:23:14 +0700 Subject: [PATCH 2969/3180] Fix warn --- src/bin/repo.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index c8f9c80b..9b9e0796 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -504,7 +504,7 @@ impl TuiApp { .recipes .iter() .filter(|(_, s)| *s == RecipeStatus::Fetched) - .map(|(r, _)| (r.clone())) + .map(|(r, _)| r.clone()) .collect(); self.done = self .recipes From 911e813025e15546b29ab259b0d9696cfa779f99 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sat, 25 Oct 2025 16:17:37 +0700 Subject: [PATCH 2970/3180] More context messages, add find cmd --- src/bin/repo.rs | 144 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 115 insertions(+), 29 deletions(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 9b9e0796..085d6dee 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -42,6 +42,7 @@ const REPO_HELP_STR: &str = r#" unfetch delete recipe sources clean delete recipe artifacts push extract package into sysroot + find find path of recipe packages tree show tree of recipe packages common flags: @@ -49,13 +50,15 @@ const REPO_HELP_STR: &str = r#" --repo= the "repo" folder, default to $PWD/repo --sysroot= the "root" folder used for "push" command For Redox, defaults to "/", else default to $PWD/sysroot - - cook flags: --with-package-deps include package deps - --offline prefer to not use network - --nonstop keep running even a recipe build failed --all apply to all recipes in - -q, --quiet surpress build logs unless error + + cook env and their defaults: + CI= set to any value to disable TUI + COOKBOOK_OFFLINE=false prevent internet access if possible + COOKBOOK_NONSTOP=false pkeep running even a recipe build failed + COOKBOOK_VERBOSE=true print success/error on each recipe + COOKBOOK_MAKE_JOBS= override build jobs count from nproc "#; #[derive(Clone)] @@ -76,6 +79,13 @@ enum CliCommand { Clean, Push, Tree, + Find, +} + +impl CliCommand { + pub fn is_informational(&self) -> bool { + *self == CliCommand::Tree || *self == CliCommand::Find + } } impl FromStr for CliCommand { @@ -89,7 +99,8 @@ impl FromStr for CliCommand { "clean" => Ok(CliCommand::Clean), "push" => Ok(CliCommand::Push), "tree" => Ok(CliCommand::Tree), - _ => Err(anyhow!("Unknown command '{}'", s)), + "find" => Ok(CliCommand::Find), + _ => Err(anyhow!("Unknown command '{}'\n{}\n", s, REPO_HELP_STR)), } } } @@ -103,6 +114,7 @@ impl ToString for CliCommand { CliCommand::Clean => "clean".to_string(), CliCommand::Push => "push".to_string(), CliCommand::Tree => "tree".to_string(), + CliCommand::Find => "find".to_string(), } } } @@ -143,7 +155,6 @@ fn main_inner() -> anyhow::Result<()> { } let (config, command, recipe_names) = parse_args(args)?; - if command == CliCommand::Cook && config.cook.tui { if let Some((name, e)) = run_tui_cook(config, recipe_names)? { let _ = stderr().write(e.as_bytes()); @@ -170,28 +181,67 @@ fn main_inner() -> anyhow::Result<()> { } for recipe in &recipe_names { - match command { - CliCommand::Fetch => { - handle_fetch(recipe, &config, &None)?; + match repo_inner(&config, &command, recipe) { + Ok(_) => { + eprintln!( + "{}{}{} {} - successful{}{}", + style::Bold, + color::Fg(color::AnsiValue(46)), + command.to_string(), + recipe.name.as_str(), + color::Fg(color::Reset), + style::Reset, + ); } - CliCommand::Cook => { - let source_dir = handle_fetch(recipe, &config, &None)?; - handle_cook(recipe, &config, source_dir, recipe.is_deps, &None)? + Err(e) => { + if config.cook.nonstop { + eprintln!("{:?}", e); + } + eprintln!( + "{}{}{} {} - failed {}{}", + style::Bold, + color::Fg(color::AnsiValue(196)), + command.to_string(), + recipe.name.as_str(), + color::Fg(color::Reset), + style::Reset, + ); + if !config.cook.nonstop { + return Err(e); + } } - CliCommand::Unfetch => handle_clean(recipe, &config, true, true)?, - CliCommand::Clean => handle_clean(recipe, &config, false, true)?, - CliCommand::Push => handle_push(recipe, &config)?, - CliCommand::Tree => todo!("tree command is WIP"), } } println!( - "\nCommand '{}' completed for all specified recipes.", + "\nCommand '{}' completed for {} recipes.", command.to_string(), + recipe_names.len() ); Ok(()) } +fn repo_inner( + config: &CliConfig, + command: &CliCommand, + recipe: &CookRecipe, +) -> Result<(), anyhow::Error> { + Ok(match *command { + CliCommand::Fetch => { + handle_fetch(recipe, config, &None)?; + } + CliCommand::Cook => { + let source_dir = handle_fetch(recipe, config, &None)?; + handle_cook(recipe, config, source_dir, recipe.is_deps, &None)? + } + CliCommand::Unfetch => handle_clean(recipe, config, true, true)?, + CliCommand::Clean => handle_clean(recipe, config, false, true)?, + CliCommand::Push => handle_push(recipe, config)?, + CliCommand::Tree => todo!("tree command is WIP"), + CliCommand::Find => println!("{}", recipe.dir.display()), + }) +} + fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec)> { let mut config = CliConfig::new()?; let mut command: Option = None; @@ -240,11 +290,7 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec String { + match self { + JobType::Fetch => "Fetch", + JobType::Cook => "Cook", + } + .to_string() + } +} + struct TuiApp { recipes: Vec<(CookRecipe, RecipeStatus)>, fetch_queue: VecDeque, @@ -683,9 +751,9 @@ fn run_tui_cook( terminal.draw(|f| { let mut constraints = Vec::new(); if !app.fetch_complete { - constraints.push(Constraint::Length(30)); + constraints.push(Constraint::Length(20)); } - constraints.push(Constraint::Length(30)); + constraints.push(Constraint::Length(20)); constraints.push(Constraint::Min(20)); let chunks = Layout::default() .direction(Direction::Horizontal) @@ -744,9 +812,13 @@ fn run_tui_cook( let (active_name, log_text) = get_active_log(&app); let log_title = if let Some(active_name) = active_name { - format!("Build Log: {}", active_name.as_str()) + format!( + "{} Log: {}", + app.log_view_job.to_string(), + active_name.as_str() + ) } else { - "Build Log".to_string() + format!("{} Log", app.log_view_job.to_string()) }; let mut enable_auto_scroll = false; @@ -788,8 +860,22 @@ fn run_tui_cook( vec![Line::from("No logs yet")] }; + let instruct = format!( + "Keys: [c] Stop [PageUp/Down] Scroll {}", + match (&app.log_view_job, app.fetch_complete) { + (JobType::Fetch, _) => "[2] View Cook Log", + (JobType::Cook, false) => "[1] View Fetch Log", + (JobType::Cook, true) => "", + } + ); + let log_paragraph = Paragraph::new(log_lines) - .block(Block::default().title(log_title).borders(Borders::ALL)) + .block( + Block::default() + .title(log_title) + .title_bottom(instruct) + .borders(Borders::ALL), + ) .wrap(Wrap { trim: false }); f.render_widget( From 1e37be1d4f714f1de8bfd7305bbe66c6665befaa Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sat, 25 Oct 2025 17:48:03 +0700 Subject: [PATCH 2971/3180] Add category, spinner, and always verbose --- src/bin/repo.rs | 129 ++++++++++++++++++++++++++++++++++-------------- src/config.rs | 8 +-- 2 files changed, 94 insertions(+), 43 deletions(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 085d6dee..29d56fcb 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -5,7 +5,7 @@ use std::process::Command; use std::str::FromStr; use std::sync::atomic::{AtomicBool, AtomicU32, Ordering}; use std::sync::{Arc, mpsc}; -use std::time::Duration; +use std::time::{Duration, Instant}; use std::{cmp, env, fs}; use std::{process, thread}; @@ -52,6 +52,7 @@ const REPO_HELP_STR: &str = r#" For Redox, defaults to "/", else default to $PWD/sysroot --with-package-deps include package deps --all apply to all recipes in + --category= apply to all recipes in / cook env and their defaults: CI= set to any value to disable TUI @@ -66,6 +67,7 @@ struct CliConfig { cookbook_dir: PathBuf, repo_dir: PathBuf, sysroot_dir: PathBuf, + category: Option, with_package_deps: bool, all: bool, cook: CookConfig, @@ -126,6 +128,7 @@ impl CliConfig { //FIXME: This config is unused as redox-pkg harcoded this to $PWD/recipes cookbook_dir: current_dir.join("recipes"), repo_dir: current_dir.join("repo"), + category: None, sysroot_dir: if cfg!(target_os = "redox") { PathBuf::from("/") } else { @@ -180,21 +183,24 @@ fn main_inner() -> anyhow::Result<()> { return Ok(()); } + let verbose = config.cook.verbose; for recipe in &recipe_names { match repo_inner(&config, &command, recipe) { Ok(_) => { - eprintln!( - "{}{}{} {} - successful{}{}", - style::Bold, - color::Fg(color::AnsiValue(46)), - command.to_string(), - recipe.name.as_str(), - color::Fg(color::Reset), - style::Reset, - ); + if verbose { + eprintln!( + "{}{}{} {} - successful{}{}", + style::Bold, + color::Fg(color::AnsiValue(46)), + command.to_string(), + recipe.name.as_str(), + color::Fg(color::Reset), + style::Reset, + ); + } } Err(e) => { - if config.cook.nonstop { + if config.cook.nonstop && verbose { eprintln!("{:?}", e); } eprintln!( @@ -213,11 +219,13 @@ fn main_inner() -> anyhow::Result<()> { } } - println!( - "\nCommand '{}' completed for {} recipes.", - command.to_string(), - recipe_names.len() - ); + if verbose { + println!( + "\nCommand '{}' completed for {} recipes.", + command.to_string(), + recipe_names.len() + ); + } Ok(()) } @@ -253,6 +261,7 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec config.cookbook_dir = PathBuf::from(value), "--repo" => config.repo_dir = PathBuf::from(value), "--sysroot" => config.sysroot_dir = PathBuf::from(value), + "--category" => config.category = Some(PathBuf::from(value)), _ => { eprintln!("Error: Unknown flag with value: {}", arg); process::exit(1); @@ -284,25 +293,38 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec, PackageError>>()? + match &config.category { + None => pkg::recipes::list(""), + Some(prefix) => pkg::recipes::list("") + .into_iter() + .filter(|p| p.starts_with(prefix)) + .collect(), + } + .iter() + .map(|f| CookRecipe::from_path(f, !config.all)) + .collect::, PackageError>>()? } else { if recipe_names.is_empty() { bail!("Error: No recipe names provided and --all flag was not used."); @@ -592,6 +614,7 @@ fn run_tui_cook( let running = Arc::new(AtomicBool::new(true)); let prompting = Arc::new(AtomicU32::new(0)); + const TICK_RATE: Duration = Duration::from_millis(100); // ---- Cooker Thread ---- let cooker_config = config.clone(); @@ -747,13 +770,20 @@ fn run_tui_cook( let mut app = TuiApp::new(recipes); + let spinner = ['-', '\\', '|', '/']; + let mut spinner_i = 0; + while running.load(Ordering::SeqCst) { + let frame_start = Instant::now(); terminal.draw(|f| { + spinner_i = (spinner_i + 1) % spinner.len(); + let spin = spinner[spinner_i]; + let mut constraints = Vec::new(); if !app.fetch_complete { - constraints.push(Constraint::Length(20)); + constraints.push(Constraint::Length(22)); } - constraints.push(Constraint::Length(20)); + constraints.push(Constraint::Length(22)); constraints.push(Constraint::Min(20)); let chunks = Layout::default() .direction(Direction::Horizontal) @@ -771,7 +801,13 @@ fn run_tui_cook( } else { Style::default() }; - ListItem::new(r.name.as_str()).style(style) + let icon = match s { + RecipeStatus::Pending => ' ', + RecipeStatus::Fetching => spin, + _ => '?', + }; + + ListItem::new(format!("{icon} {}", r.name)).style(style) }) .collect(); let fetch_list = List::new(fetch_items).block( @@ -799,7 +835,14 @@ fn run_tui_cook( RecipeStatus::Failed(_) => Style::default().fg(Color::Red), _ => Style::default(), }; - ListItem::new(r.name.as_str()).style(style) + let icon = match s { + RecipeStatus::Fetched => ' ', + RecipeStatus::Cooking => spin, + RecipeStatus::Done => ' ', + RecipeStatus::Failed(_) => 'X', + _ => '?', + }; + ListItem::new(format!("{icon} {}", r.name)).style(style) }) .collect(); let cook_list = List::new(cook_items).block( @@ -813,12 +856,12 @@ fn run_tui_cook( let log_title = if let Some(active_name) = active_name { format!( - "{} Log: {}", + " {} Log: {} ", app.log_view_job.to_string(), active_name.as_str() ) } else { - format!("{} Log", app.log_view_job.to_string()) + format!(" {} Log ", app.log_view_job.to_string()) }; let mut enable_auto_scroll = false; @@ -861,10 +904,14 @@ fn run_tui_cook( }; let instruct = format!( - "Keys: [c] Stop [PageUp/Down] Scroll {}", + " Keys: [c] Stop [PageUp/Down] Scroll{}{} ", + match app.auto_scroll { + true => "", + false => " [End] Follow log trails", + }, match (&app.log_view_job, app.fetch_complete) { - (JobType::Fetch, _) => "[2] View Cook Log", - (JobType::Cook, false) => "[1] View Fetch Log", + (JobType::Fetch, _) => " [2] View Cook Log", + (JobType::Cook, false) => " [1] View Fetch Log", (JobType::Cook, true) => "", } ); @@ -915,6 +962,10 @@ fn run_tui_cook( if app.cook_complete { running.swap(false, Ordering::SeqCst); } + + if let Some(sleep_duration) = TICK_RATE.checked_sub(frame_start.elapsed()) { + thread::sleep(sleep_duration); + } } drop(mstdout); @@ -1054,7 +1105,11 @@ fn handle_prompt_input<'a>( fn draw_prompt(f: &mut ratatui::Frame, prompt: &FailurePrompt) { let title = format!(" FAILURE in {} ", prompt.recipe.name); let mut error_text = prompt.error.clone(); - if error_text.len() > 100 { + if error_text.len() > 200 { + error_text = error_text[0..100].to_string() + + ".." + + &error_text[(error_text.len() - 100)..(error_text.len() - 1)]; + } else if error_text.len() > 100 { error_text = error_text[0..100].to_string() + ".."; } @@ -1079,11 +1134,11 @@ fn draw_prompt(f: &mut ratatui::Frame, prompt: &FailurePrompt) { Line::from(error_text).style(Style::default().fg(Color::Yellow)), Line::from(""), Line::from(vec![ - Span::styled(" [Retry] ", retry_style), - Span::raw(" "), Span::styled(" [Skip] ", skip_style), Span::raw(" "), Span::styled(" [Exit] ", exit_style), + Span::raw(" "), + Span::styled(" [Retry] ", retry_style), ]), ]; diff --git a/src/config.rs b/src/config.rs index 313acbc0..27e42dd7 100644 --- a/src/config.rs +++ b/src/config.rs @@ -14,8 +14,7 @@ pub struct CookConfigOpt { pub tui: Option, /// whether to ignore build errors pub nonstop: Option, - /// whether to not capture build output, - /// default is true if "tui" is false. + /// whether to print success recipes info and warnings /// build failure still be printed anyway pub verbose: Option, } @@ -80,10 +79,7 @@ pub fn init_config() { config.cook_opt.offline = Some(extract_env("COOKBOOK_OFFLINE", false)); } if config.cook_opt.verbose.is_none() { - config.cook_opt.verbose = Some(extract_env( - "COOKBOOK_VERBOSE", - !config.cook_opt.tui.unwrap(), - )); + config.cook_opt.verbose = Some(extract_env("COOKBOOK_VERBOSE", true)); } if config.cook_opt.nonstop.is_none() { config.cook_opt.nonstop = Some(extract_env("COOKBOOK_NONSTOP", false)); From 5621fe799f07adaa6d3bc1e3362588141b7aaf29 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sat, 25 Oct 2025 17:53:13 +0700 Subject: [PATCH 2972/3180] Update scripts for compat --- clean.sh | 2 +- config.sh | 5 ++++- fetch.sh | 3 ++- repo.sh | 8 ++------ unfetch.sh | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/clean.sh b/clean.sh index 211fcb7c..efde8b91 100755 --- a/clean.sh +++ b/clean.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -e -source config.sh +source `dirname "$0"`/config.sh if [ $# = 0 ] then diff --git a/config.sh b/config.sh index f60c503e..8e980198 100755 --- a/config.sh +++ b/config.sh @@ -17,8 +17,11 @@ if [ x"${HOST}" == x"riscv64gc-unknown-redox" ] ; then HOST="riscv64-unknown-redox" fi +# Cookbook requires correct CWD to work +cd `dirname "$0"` + # Automatic variables -ROOT="$(cd `dirname "$0"` && pwd)" +ROOT=`pwd` export AR="${HOST}-gcc-ar" export AS="${HOST}-as" diff --git a/fetch.sh b/fetch.sh index 16e503fd..cd9acc9c 100755 --- a/fetch.sh +++ b/fetch.sh @@ -1,5 +1,6 @@ #!/usr/bin/env bash set -e -source config.sh +source `dirname "$0"`/config.sh +# Intentionally empty to allow fetch and cook running in parallel diff --git a/repo.sh b/repo.sh index 3ef74d17..acfffb47 100755 --- a/repo.sh +++ b/repo.sh @@ -1,8 +1,7 @@ #!/usr/bin/env bash set -e -shopt -s nullglob -source config.sh +source `dirname "$0"`/config.sh APPSTREAM="0" COOK_OPT="" @@ -17,7 +16,7 @@ do COOK_OPT+=" --with-package-deps" elif [ "$arg" == "--nonstop" ] then - COOK_OPT+=" --nonstop" + export COOKBOOK_OFFLINE=true else recipes+=" $arg" fi @@ -25,7 +24,4 @@ done repo cook $COOK_OPT $recipes -repo="$ROOT/repo/$TARGET" -mkdir -p "$repo" - repo_builder "$repo" $recipes diff --git a/unfetch.sh b/unfetch.sh index 05934936..4b7b6262 100755 --- a/unfetch.sh +++ b/unfetch.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -e -source config.sh +source `dirname "$0"`/config.sh if [ $# = 0 ] then From 4fb4727f60b374616777fbf517641012f4910e23 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sat, 25 Oct 2025 19:23:03 +0700 Subject: [PATCH 2973/3180] Autoscroll cook queue --- src/bin/repo.rs | 67 +++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 56 insertions(+), 11 deletions(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 29d56fcb..9e4f2865 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -24,7 +24,7 @@ use ratatui::layout::{Constraint, Direction, Layout, Position, Rect}; use ratatui::prelude::TermionBackend; use ratatui::style::{Color, Style}; use ratatui::text::{Line, Span}; -use ratatui::widgets::{Block, Borders, Clear, List, ListItem, Paragraph, Wrap}; +use ratatui::widgets::{Block, Borders, Clear, List, ListItem, ListState, Paragraph, Wrap}; use termion::event::{Event, Key, MouseEvent}; use termion::input::TermRead; use termion::raw::IntoRawMode; @@ -489,6 +489,8 @@ struct TuiApp { auto_scroll: bool, fetch_scroll: usize, cook_scroll: usize, + cook_auto_scroll: bool, + cook_list_state: ListState, fetch_complete: bool, cook_complete: bool, fetch_panel_rect: Option, @@ -517,6 +519,8 @@ impl TuiApp { log_view_job: JobType::Fetch, fetch_scroll: 0, cook_scroll: 0, + cook_auto_scroll: true, + cook_list_state: ListState::default(), fetch_complete: false, cook_complete: false, fetch_panel_rect: None, @@ -789,6 +793,7 @@ fn run_tui_cook( .direction(Direction::Horizontal) .constraints(constraints) .split(f.area()); + let panel_height = chunks[0].height.saturating_sub(2) as usize; // Left Pane let fetch_items: Vec = app @@ -845,12 +850,46 @@ fn run_tui_cook( ListItem::new(format!("{icon} {}", r.name)).style(style) }) .collect(); + let total_items = cook_items.len(); + if app.cook_auto_scroll { + let cooking_index = app + .recipes + .iter() + .filter(|(_, s)| { + *s == RecipeStatus::Fetched + || *s == RecipeStatus::Cooking + || *s == RecipeStatus::Done + || matches!(s, RecipeStatus::Failed(_)) + }) + .position(|(_r, s)| *s == RecipeStatus::Cooking); + + if let Some(index) = cooking_index { + app.cook_list_state.select(Some(index)); + let index_u16 = index; + let center_offset = panel_height / 2; + let new_offset = index_u16.saturating_sub(center_offset) as usize; + + *app.cook_list_state.offset_mut() = new_offset; + } + } else { + app.cook_list_state.select(None); + if total_items > 0 { + let max_offset = total_items.saturating_sub(panel_height as usize); + if *app.cook_list_state.offset_mut() > max_offset { + *app.cook_list_state.offset_mut() = max_offset; + } + } else { + *app.cook_list_state.offset_mut() = 0; + } + } + let cook_items: Vec = cook_items[app.cook_scroll..].into(); + let cook_chunk = chunks[if app.fetch_complete { 0 } else { 1 }]; let cook_list = List::new(cook_items).block( Block::default() .title("Cook Queue [2]") .borders(Borders::ALL), ); - f.render_widget(cook_list, chunks[if app.fetch_complete { 0 } else { 1 }]); + f.render_stateful_widget(cook_list, cook_chunk, &mut app.cook_list_state); let (active_name, log_text) = get_active_log(&app); @@ -865,26 +904,26 @@ fn run_tui_cook( }; let mut enable_auto_scroll = false; + let mut intended_scroll_pos = 0usize; let log_lines: Vec = if let Some(log_text) = log_text && log_text.len() > 0 { - let log_pane_height = chunks[if app.fetch_complete { 1 } else { 2 }] - .height - .saturating_sub(2) as usize; let total_log_lines = log_text.len() as usize; let start = if app.auto_scroll { - if total_log_lines > log_pane_height { - total_log_lines - log_pane_height + if total_log_lines > panel_height { + intended_scroll_pos = total_log_lines - panel_height; + total_log_lines - panel_height } else { 0 } } else { - if total_log_lines > log_pane_height { - if app.log_scroll >= total_log_lines - log_pane_height { + if total_log_lines > panel_height { + if app.log_scroll >= total_log_lines - panel_height { enable_auto_scroll = true; - total_log_lines - log_pane_height + intended_scroll_pos = total_log_lines - panel_height; + total_log_lines - panel_height } else { app.log_scroll } @@ -893,7 +932,7 @@ fn run_tui_cook( } }; - let end = cmp::min(log_pane_height + start, total_log_lines - 1); + let end = cmp::min(panel_height + start, total_log_lines - 1); log_text[start..end] .iter() @@ -935,6 +974,9 @@ fn run_tui_cook( if enable_auto_scroll { app.auto_scroll = true; } + if intended_scroll_pos > 0 { + app.log_scroll = intended_scroll_pos; + } while let Ok(event) = input_rx.try_recv() { if let Some((app, res)) = handle_prompt_input(&event, &mut app) { @@ -1037,6 +1079,7 @@ fn handle_main_event(app: &mut TuiApp, event: &Event) { _ => {} }, + //FIXME: This does nothing, it seems ratatui handles this itself magically Event::Mouse(mouse_event) => { match mouse_event { MouseEvent::Press(termion::event::MouseButton::WheelUp, x, y) => { @@ -1050,6 +1093,7 @@ fn handle_main_event(app: &mut TuiApp, event: &Event) { app.fetch_scroll = app.fetch_scroll.saturating_sub(1); } else if app.cook_panel_rect.map_or(false, |r| r.contains(pos)) { app.cook_scroll = app.cook_scroll.saturating_sub(1); + app.cook_auto_scroll = false; } else if app.log_panel_rect.map_or(false, |r| r.contains(pos)) { app.auto_scroll = false; app.log_scroll = app.log_scroll.saturating_sub(1); @@ -1065,6 +1109,7 @@ fn handle_main_event(app: &mut TuiApp, event: &Event) { app.fetch_scroll = app.fetch_scroll.saturating_add(1); } else if app.cook_panel_rect.map_or(false, |r| r.contains(pos)) { app.cook_scroll = app.cook_scroll.saturating_add(1); + app.cook_auto_scroll = false; } else if app.log_panel_rect.map_or(false, |r| r.contains(pos)) { app.auto_scroll = false; app.log_scroll = app.log_scroll.saturating_add(1); From 66d7a520e1537130629a10a0ea9fe7f647d73725 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sat, 25 Oct 2025 19:34:51 +0700 Subject: [PATCH 2974/3180] Fix repo script --- repo.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/repo.sh b/repo.sh index acfffb47..0a95ac89 100755 --- a/repo.sh +++ b/repo.sh @@ -15,6 +15,9 @@ do then COOK_OPT+=" --with-package-deps" elif [ "$arg" == "--nonstop" ] + then + COOK_OPT+=" --nonstop" + elif [ "$arg" == "--offline" ] then export COOKBOOK_OFFLINE=true else @@ -24,4 +27,4 @@ done repo cook $COOK_OPT $recipes -repo_builder "$repo" $recipes +repo_builder "$ROOT/repo/$TARGET" $recipes From 2c16ad7d7f11c4cd6b9b2774420d51c260685943 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Sat, 25 Oct 2025 13:08:12 +0000 Subject: [PATCH 2975/3180] Compile uutils from master branch --- recipes/core/uutils/recipe.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/core/uutils/recipe.toml b/recipes/core/uutils/recipe.toml index 2f2d8573..7d3919f2 100644 --- a/recipes/core/uutils/recipe.toml +++ b/recipes/core/uutils/recipe.toml @@ -1,7 +1,6 @@ # TODO Fix coreutils i18n/l10n behavior on Redox [source] git = "https://github.com/uutils/coreutils" -rev = "18b963ed6f612ac30ebca92426280cf4c1451f6a" [build] template = "custom" From a943426bde65ef8fc00e86976a964ead454f1bac Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 26 Oct 2025 22:06:59 +0700 Subject: [PATCH 2976/3180] Try use pty --- Cargo.lock | 99 +++++++++- Cargo.toml | 3 + src/bin/repo.rs | 31 ++-- src/cook.rs | 1 + src/cook/cook_build.rs | 9 +- src/cook/fetch.rs | 9 +- src/cook/fs.rs | 39 ++-- src/cook/package.rs | 22 +-- src/cook/pty.rs | 403 +++++++++++++++++++++++++++++++++++++++++ 9 files changed, 546 insertions(+), 70 deletions(-) create mode 100644 src/cook/pty.rs diff --git a/Cargo.lock b/Cargo.lock index 58737f92..907d9d9e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -416,6 +416,12 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + [[package]] name = "cfg_aliases" version = "0.2.1" @@ -753,6 +759,12 @@ dependencies = [ "syn", ] +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + [[package]] name = "dryoc" version = "0.6.2" @@ -854,6 +866,17 @@ version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +[[package]] +name = "filedescriptor" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e40758ed24c9b2eeb76c35fb0aebc66c626084edd827e07e1552279814c6682d" +dependencies = [ + "libc", + "thiserror 1.0.69", + "winapi", +] + [[package]] name = "flate2" version = "1.1.2" @@ -1537,6 +1560,18 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "nix" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" +dependencies = [ + "bitflags 2.9.1", + "cfg-if 1.0.1", + "cfg_aliases 0.1.1", + "libc", +] + [[package]] name = "num-conv" version = "0.1.0" @@ -1748,6 +1783,27 @@ version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" +[[package]] +name = "portable-pty" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4a596a2b3d2752d94f51fac2d4a96737b8705dddd311a32b9af47211f08671e" +dependencies = [ + "anyhow", + "bitflags 1.3.2", + "downcast-rs", + "filedescriptor", + "lazy_static", + "libc", + "log", + "nix", + "serial2", + "shared_library", + "shell-words", + "winapi", + "winreg", +] + [[package]] name = "potential_utf" version = "0.1.2" @@ -1797,7 +1853,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" dependencies = [ "bytes", - "cfg_aliases", + "cfg_aliases 0.2.1", "pin-project-lite", "quinn-proto", "quinn-udp", @@ -1837,7 +1893,7 @@ version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" dependencies = [ - "cfg_aliases", + "cfg_aliases 0.2.1", "libc", "once_cell", "socket2", @@ -2007,12 +2063,15 @@ version = "0.1.0" dependencies = [ "anyhow", "blake3 1.5.3", + "filedescriptor", "ignore", + "libc", "object", "pbr", "pkgar 0.1.19", "pkgar-core 0.1.19", "pkgar-keys 0.1.19", + "portable-pty", "ratatui", "redox-pkg", "redoxer", @@ -2434,6 +2493,17 @@ dependencies = [ "serde", ] +[[package]] +name = "serial2" +version = "0.2.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cc76fa68e25e771492ca1e3c53d447ef0be3093e05cd3b47f4b712ba10c6f3c" +dependencies = [ + "cfg-if 1.0.1", + "libc", + "winapi", +] + [[package]] name = "sha2" version = "0.10.9" @@ -2445,6 +2515,22 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "shared_library" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a9e7e0f2bfae24d8a5b5a66c5b257a83c7412304311512a0c054cd5e619da11" +dependencies = [ + "lazy_static", + "libc", +] + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + [[package]] name = "shlex" version = "1.3.0" @@ -3445,6 +3531,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "winreg" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +dependencies = [ + "winapi", +] + [[package]] name = "wit-bindgen-rt" version = "0.39.0" diff --git a/Cargo.toml b/Cargo.toml index 8b28c1c1..ae5e18c9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,12 +23,14 @@ doctest = false [dependencies] anyhow = "1" blake3 = "=1.5.3" # 1.5.4 is incompatible with blake3 0.3 dependency from pkgar +libc = "0.2" ignore = "0.4" object = { version = "0.36", features = ["build_core"] } pbr = "1.0.2" pkgar = { path = "pkgar/pkgar" } pkgar-core = { path = "pkgar/pkgar-core" } pkgar-keys = { path = "pkgar/pkgar-keys" } +portable-pty = "0.9.0" redox-pkg = "0.2.8" redoxer = "0.2" regex = "1.11" @@ -36,6 +38,7 @@ serde = { version = "=1.0.197", features = ["derive"] } termion = "4" toml = "0.8" walkdir = "2.3.1" +filedescriptor = "0.8.3" [dependencies.ratatui] version = "0.29.0" diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 9e4f2865..6e643f4a 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -1,5 +1,5 @@ use std::collections::{HashMap, VecDeque}; -use std::io::{BufRead, BufReader, PipeReader, Write, stderr, stdin, stdout}; +use std::io::{BufRead, BufReader, Read, Write, stderr, stdin, stdout}; use std::path::PathBuf; use std::process::Command; use std::str::FromStr; @@ -14,8 +14,9 @@ use cookbook::WALK_DEPTH; use cookbook::config::{CookConfig, get_config, init_config}; use cookbook::cook::cook_build::build; use cookbook::cook::fetch::{fetch, fetch_offline}; -use cookbook::cook::fs::{Stdout, create_target_dir}; +use cookbook::cook::fs::create_target_dir; use cookbook::cook::package::package; +use cookbook::cook::pty::{setup_pty, PtyOut, UnixSlavePty}; use cookbook::recipe::CookRecipe; use pkg::PackageName; use pkg::package::PackageError; @@ -355,7 +356,7 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec anyhow::Result { let recipe_dir = &recipe.dir; let source_dir = match config.cook.offline { @@ -372,7 +373,7 @@ fn handle_cook( config: &CliConfig, source_dir: PathBuf, is_deps: bool, - logger: &Stdout, + logger: &PtyOut, ) -> anyhow::Result<()> { let recipe_dir = &recipe.dir; let target_dir = create_target_dir(recipe_dir).map_err(|e| anyhow!(e))?; @@ -1212,13 +1213,15 @@ fn draw_prompt(f: &mut ratatui::Frame, prompt: &FailurePrompt) { f.render_widget(paragraph, popup_area); } -fn spawn_log_reader( - mut pipe_reader: PipeReader, +fn spawn_log_reader( + mut reader: R, package_name: PackageName, status_tx: mpsc::Sender, -) { +) where + R: Read + Send + 'static, +{ thread::spawn(move || { - let reader = BufReader::new(&mut pipe_reader); + let reader = BufReader::new(&mut reader); for line in reader.lines() { let line_str = line.unwrap_or_else(|e| format!("[IO Error] {}", e)); if status_tx @@ -1235,12 +1238,12 @@ fn spawn_log_reader( fn setup_logger( status_tx: &mpsc::Sender, name: &PackageName, -) -> (std::io::PipeWriter, std::io::PipeWriter) { - let (stdout_reader, stdout_writer) = std::io::pipe().expect("Failed to create stdout pipe"); - let (stderr_reader, stderr_writer) = std::io::pipe().expect("Failed to create stderr pipe"); - spawn_log_reader(stdout_reader, name.clone(), status_tx.clone()); - spawn_log_reader(stderr_reader, name.clone(), status_tx.clone()); - (stdout_writer, stderr_writer) +) -> (UnixSlavePty, std::io::PipeWriter) { + let (pty_reader, log_reader, pipes) = setup_pty(); + + spawn_log_reader(pty_reader, name.clone(), status_tx.clone()); + spawn_log_reader(log_reader, name.clone(), status_tx.clone()); + pipes } #[derive(PartialEq, Clone, Copy)] diff --git a/src/cook.rs b/src/cook.rs index 4ffa8a7b..14c752f8 100644 --- a/src/cook.rs +++ b/src/cook.rs @@ -3,4 +3,5 @@ pub mod cook_build; pub mod fetch; pub mod fs; pub mod package; +pub mod pty; pub mod script; diff --git a/src/cook/cook_build.rs b/src/cook/cook_build.rs index a9c92164..e379fce6 100644 --- a/src/cook/cook_build.rs +++ b/src/cook/cook_build.rs @@ -3,6 +3,7 @@ use pkg::{Package, PackageName}; use redoxer::target; use crate::cook::fs::*; +use crate::cook::pty::PtyOut; use crate::cook::script::*; use crate::recipe::AutoDeps; use crate::recipe::BuildKind; @@ -39,7 +40,7 @@ macro_rules! log_warn { fn auto_deps( stage_dir: &Path, dep_pkgars: &BTreeSet<(PackageName, PathBuf)>, - logger: &Stdout, + logger: &PtyOut, ) -> BTreeSet { let mut paths = BTreeSet::new(); let mut visited = BTreeSet::new(); @@ -167,7 +168,7 @@ pub fn build( recipe: &Recipe, offline_mode: bool, check_source: bool, - logger: &Stdout, + logger: &PtyOut, ) -> Result<(PathBuf, BTreeSet), String> { let sysroot_dir = target_dir.join("sysroot"); let stage_dir = target_dir.join("stage"); @@ -379,7 +380,7 @@ fn build_auto_deps( target_dir: &Path, stage_dir: &PathBuf, dep_pkgars: BTreeSet<(PackageName, PathBuf)>, - logger: &Stdout, + logger: &PtyOut, ) -> Result, String> { let auto_deps_path = target_dir.join("auto_deps.toml"); if auto_deps_path.is_file() && modified(&auto_deps_path)? < modified(stage_dir)? { @@ -412,7 +413,7 @@ pub fn build_remote( target_dir: &Path, name: &PackageName, offline_mode: bool, - logger: &Stdout, + logger: &PtyOut, ) -> Result<(PathBuf, BTreeSet), String> { // download straight from remote source then declare pkg dependencies as autodeps dependency let stage_dir = target_dir.join("stage"); diff --git a/src/cook/fetch.rs b/src/cook/fetch.rs index 6295cae7..7f569fb5 100644 --- a/src/cook/fetch.rs +++ b/src/cook/fetch.rs @@ -1,5 +1,6 @@ use crate::config::translate_mirror; use crate::cook::fs::*; +use crate::cook::pty::PtyOut; use crate::cook::script::*; use crate::is_redox; use crate::recipe::BuildKind; @@ -43,7 +44,7 @@ pub(crate) fn get_blake3(path: &PathBuf, show_progress: bool) -> Result Result { let source_dir = recipe_dir.join("source"); if recipe.build.kind == BuildKind::None || recipe.build.kind == BuildKind::Remote { @@ -103,7 +104,7 @@ pub fn fetch_offline( Ok(source_dir) } -pub fn fetch(recipe_dir: &Path, recipe: &Recipe, logger: &Stdout) -> Result { +pub fn fetch(recipe_dir: &Path, recipe: &Recipe, logger: &PtyOut) -> Result { let source_dir = recipe_dir.join("source"); if recipe.build.kind == BuildKind::None || recipe.build.kind == BuildKind::Remote { // the build function doesn't need source dir exists @@ -374,7 +375,7 @@ pub(crate) fn fetch_resolve_canon( pub(crate) fn fetch_extract_tar( source_tar: PathBuf, source_dir_tmp: &PathBuf, - logger: &Stdout, + logger: &PtyOut, ) -> Result<(), String> { let mut command = Command::new("tar"); if is_redox() { @@ -420,7 +421,7 @@ pub(crate) fn fetch_apply_patches( patches: &Vec, script: &Option, source_dir_tmp: &PathBuf, - logger: &Stdout, + logger: &PtyOut, ) -> Result<(), String> { for patch_name in patches { let patch_file = recipe_dir.join(patch_name); diff --git a/src/cook/fs.rs b/src/cook/fs.rs index 6a5e8b88..db1a0fa2 100644 --- a/src/cook/fs.rs +++ b/src/cook/fs.rs @@ -8,7 +8,10 @@ use std::{ }; use walkdir::{DirEntry, WalkDir}; -use crate::config::translate_mirror; +use crate::{ + config::translate_mirror, + cook::pty::{PtyOut, spawn_to_pipe}, +}; //TODO: pub(crate) for all of these functions @@ -146,27 +149,10 @@ pub fn rename(src: &Path, dst: &Path) -> Result<(), String> { }) } -pub type Stdout<'a> = Option<(&'a mut PipeWriter, &'a mut PipeWriter)>; - -fn pipe_to_cmd(command: &mut Command, stdout_pipe: &Stdout) -> Result<(), String> { - Ok(if let Some((stdout, stderr)) = stdout_pipe { - command.stdout::( - stdout - .try_clone() - .map_err(|e| format!("unable to clone stdout fd: {:?}", e))?, - ); - command.stderr( - stderr - .try_clone() - .map_err(|e| format!("unable to clone stderr fd: {:?}", e))?, - ); - }) -} - -pub fn run_command(mut command: process::Command, stdout_pipe: &Stdout) -> Result<(), String> { - pipe_to_cmd(&mut command, stdout_pipe)?; - let status = command - .status() +pub fn run_command(mut command: process::Command, stdout_pipe: &PtyOut) -> Result<(), String> { + let status = spawn_to_pipe(&mut command, stdout_pipe) + .map_err(|err| format!("failed to run {:?}: {}\n{:#?}", command, err, err))? + .wait() .map_err(|err| format!("failed to run {:?}: {}\n{:#?}", command, err, err))?; if !status.success() { @@ -182,13 +168,10 @@ pub fn run_command(mut command: process::Command, stdout_pipe: &Stdout) -> Resul pub fn run_command_stdin( mut command: process::Command, stdin_data: &[u8], - stdout_pipe: &Stdout, + stdout_pipe: &PtyOut, ) -> Result<(), String> { command.stdin(Stdio::piped()); - pipe_to_cmd(&mut command, stdout_pipe)?; - - let mut child = command - .spawn() + let mut child = spawn_to_pipe(&mut command, stdout_pipe) .map_err(|err| format!("failed to spawn {:?}: {}\n{:#?}", command, err, err))?; if let Some(ref mut stdin) = child.stdin { @@ -240,7 +223,7 @@ pub fn offline_check_exists(path: &PathBuf) -> Result<(), String> { Ok(()) } -pub fn download_wget(url: &str, dest: &PathBuf, logger: &Stdout) -> Result<(), String> { +pub fn download_wget(url: &str, dest: &PathBuf, logger: &PtyOut) -> Result<(), String> { if !dest.is_file() { let dest_tmp = PathBuf::from(format!("{}.tmp", dest.display())); let mut command = Command::new("wget"); diff --git a/src/cook/package.rs b/src/cook/package.rs index 3103c13f..fa97817f 100644 --- a/src/cook/package.rs +++ b/src/cook/package.rs @@ -3,32 +3,18 @@ use std::{collections::BTreeSet, env, path::Path}; use pkg::{Package, PackageName}; use crate::{ - cook::fs::*, + cook::{fs::*, pty::PtyOut}, + log_to_pty, recipe::{BuildKind, Recipe}, }; -macro_rules! log_warn { - ($logger:expr, $($arg:tt)+) => { - use std::io::Write; - - if $logger.is_some() { - let _ = $logger.as_ref().unwrap().1.try_clone().unwrap().write( - format!($($arg)+) - .as_bytes(), - ); - } else { - eprintln!($($arg)+); - } - }; -} - pub fn package( stage_dir: &Path, target_dir: &Path, name: &PackageName, recipe: &Recipe, auto_deps: &BTreeSet, - logger: &Stdout, + logger: &PtyOut, ) -> Result<(), String> { if recipe.build.kind == BuildKind::None { // metapackages don't have stage dir @@ -58,7 +44,7 @@ pub fn package( if package_file.is_file() { let stage_modified = modified_dir(stage_dir)?; if modified(&package_file)? < stage_modified { - log_warn!( + log_to_pty!( logger, "DEBUG: '{}' newer than '{}'", stage_dir.display(), diff --git a/src/cook/pty.rs b/src/cook/pty.rs new file mode 100644 index 00000000..42876e9c --- /dev/null +++ b/src/cook/pty.rs @@ -0,0 +1,403 @@ +use anyhow::{Error, bail}; +use filedescriptor::FileDescriptor; +use libc::{self, winsize}; +use portable_pty::PtySize; +use std::cell::RefCell; +use std::ffi::OsStr; +use std::io::{Read, Write}; +use std::os::fd::FromRawFd; +use std::os::unix::ffi::OsStrExt; +use std::os::unix::io::AsRawFd; +use std::os::unix::process::CommandExt; +use std::path::PathBuf; +use std::process::Child; +use std::{io, mem, ptr}; +use std::{ + io::{PipeReader, PipeWriter}, + process::Command, +}; + +pub use std::os::unix::io::RawFd; + +#[macro_export] +macro_rules! log_to_pty { + ($logger:expr, $($arg:tt)+) => { + use std::io::Write; + + if $logger.is_some() { + let _ = $logger.as_ref().unwrap().1.try_clone().unwrap().write( + format!($($arg)+) + .as_bytes(), + ); + } else { + eprintln!($($arg)+); + } + }; +} + +pub type PtyOut<'a> = Option<(&'a mut UnixSlavePty, &'a mut PipeWriter)>; + +pub fn setup_pty() -> ( + Box, + PipeReader, + (UnixSlavePty, std::io::PipeWriter), +) { + let pty_system = UnixPtySystem::default(); + let pair = pty_system + .openpty(PtySize { + rows: 24, // Standard terminal size + cols: 80, // Standard terminal size + ..Default::default() + }) + .expect("Unable to open pty"); + + // TODO: There's no way to handle stdin + let pty_reader = pair + .master + .try_clone_reader() + .expect("Unable to clone pty reader"); + + let (log_reader, log_writer) = std::io::pipe().expect("Failed to create log pipe"); + let pipes = (pair.slave, log_writer); + (pty_reader, log_reader, pipes) +} + +pub fn spawn_to_pipe(command: &mut Command, stdout_pipe: &PtyOut) -> Result { + match stdout_pipe { + Some(stdout) => stdout.0.spawn_command(command.into()), + None => Ok(command.spawn()?), + } +} + +// +// based on portable-pty crate +// copied here since it isn't flexible enough +// + +#[derive(Default)] +pub struct UnixPtySystem {} + +fn openpty(size: PtySize) -> anyhow::Result<(UnixMasterPty, UnixSlavePty)> { + let mut master: RawFd = -1; + let mut slave: RawFd = -1; + + let mut size = winsize { + ws_row: size.rows, + ws_col: size.cols, + ws_xpixel: size.pixel_width, + ws_ypixel: size.pixel_height, + }; + + let result = unsafe { + // BSDish systems may require mut pointers to some args + #[allow(clippy::unnecessary_mut_passed)] + libc::openpty( + &mut master, + &mut slave, + ptr::null_mut(), + ptr::null_mut(), + &mut size, + ) + }; + + if result != 0 { + bail!("failed to openpty: {:?}", io::Error::last_os_error()); + } + + let tty_name = tty_name(slave); + + let master = UnixMasterPty { + fd: PtyFd(unsafe { FileDescriptor::from_raw_fd(master) }), + took_writer: RefCell::new(false), + tty_name, + }; + let slave = UnixSlavePty { + fd: PtyFd(unsafe { FileDescriptor::from_raw_fd(slave) }), + }; + + // Ensure that these descriptors will get closed when we execute + // the child process. This is done after constructing the Pty + // instances so that we ensure that the Ptys get drop()'d if + // the cloexec() functions fail (unlikely!). + cloexec(master.fd.as_raw_fd())?; + cloexec(slave.fd.as_raw_fd())?; + + Ok((master, slave)) +} + +pub struct PtyPair { + // slave is listed first so that it is dropped first. + // The drop order is stable and specified by rust rfc 1857 + pub slave: UnixSlavePty, + pub master: UnixMasterPty, +} + +impl UnixPtySystem { + fn openpty(&self, size: PtySize) -> anyhow::Result { + let (master, slave) = openpty(size)?; + Ok(PtyPair { + master: master, + slave: slave, + }) + } +} + +struct PtyFd(pub FileDescriptor); +impl std::ops::Deref for PtyFd { + type Target = FileDescriptor; + fn deref(&self) -> &FileDescriptor { + &self.0 + } +} +impl std::ops::DerefMut for PtyFd { + fn deref_mut(&mut self) -> &mut FileDescriptor { + &mut self.0 + } +} + +impl Read for PtyFd { + fn read(&mut self, buf: &mut [u8]) -> Result { + match self.0.read(buf) { + Err(ref e) if e.raw_os_error() == Some(libc::EIO) => { + // EIO indicates that the slave pty has been closed. + // Treat this as EOF so that std::io::Read::read_to_string + // and similar functions gracefully terminate when they + // encounter this condition + Ok(0) + } + x => x, + } + } +} + +fn tty_name(fd: RawFd) -> Option { + let mut buf = vec![0 as std::ffi::c_char; 128]; + + loop { + let res = unsafe { libc::ttyname_r(fd, buf.as_mut_ptr(), buf.len()) }; + + if res == libc::ERANGE { + if buf.len() > 64 * 1024 { + // on macOS, if the buf is "too big", ttyname_r can + // return ERANGE, even though that is supposed to + // indicate buf is "too small". + return None; + } + buf.resize(buf.len() * 2, 0 as std::ffi::c_char); + continue; + } + + return if res == 0 { + let cstr = unsafe { std::ffi::CStr::from_ptr(buf.as_ptr()) }; + let osstr = OsStr::from_bytes(cstr.to_bytes()); + Some(PathBuf::from(osstr)) + } else { + None + }; + } +} + +impl PtyFd { + fn resize(&self, size: PtySize) -> Result<(), Error> { + let ws_size = winsize { + ws_row: size.rows, + ws_col: size.cols, + ws_xpixel: size.pixel_width, + ws_ypixel: size.pixel_height, + }; + + if unsafe { + libc::ioctl( + self.0.as_raw_fd(), + libc::TIOCSWINSZ as _, + &ws_size as *const _, + ) + } != 0 + { + bail!( + "failed to ioctl(TIOCSWINSZ): {:?}", + io::Error::last_os_error() + ); + } + + Ok(()) + } + + fn get_size(&self) -> Result { + let mut size: winsize = unsafe { mem::zeroed() }; + if unsafe { + libc::ioctl( + self.0.as_raw_fd(), + libc::TIOCGWINSZ as _, + &mut size as *mut _, + ) + } != 0 + { + bail!( + "failed to ioctl(TIOCGWINSZ): {:?}", + io::Error::last_os_error() + ); + } + Ok(PtySize { + rows: size.ws_row, + cols: size.ws_col, + pixel_width: size.ws_xpixel, + pixel_height: size.ws_ypixel, + }) + } + + fn spawn_command(&self, cmd: &mut Command) -> anyhow::Result { + unsafe { + cmd + // .stdin(self.as_stdio()?) + .stdout(self.as_stdio()?) + .stderr(self.as_stdio()?) + .pre_exec(move || { + // Clean up a few things before we exec the program + // Clear out any potentially problematic signal + // dispositions that we might have inherited + for signo in &[ + libc::SIGCHLD, + libc::SIGHUP, + libc::SIGINT, + libc::SIGQUIT, + libc::SIGTERM, + libc::SIGALRM, + ] { + libc::signal(*signo, libc::SIG_DFL); + } + + let empty_set: libc::sigset_t = std::mem::zeroed(); + libc::sigprocmask(libc::SIG_SETMASK, &empty_set, std::ptr::null_mut()); + + // Establish ourselves as a session leader. + if libc::setsid() == -1 { + return Err(io::Error::last_os_error()); + } + + Ok(()) + }) + }; + + let mut child = cmd.spawn()?; + + // Ensure that we close out the slave fds that Child retains; + // they are not what we need (we need the master side to reference + // them) and won't work in the usual way anyway. + // In practice these are None, but it seems best to be move them + // out in case the behavior of Command changes in the future. + child.stdin.take(); + child.stdout.take(); + child.stderr.take(); + + Ok(child) + } +} + +/// Represents the master end of a pty. +/// The file descriptor will be closed when the Pty is dropped. +pub struct UnixMasterPty { + fd: PtyFd, + took_writer: RefCell, + tty_name: Option, +} + +/// Represents the slave end of a pty. +/// The file descriptor will be closed when the Pty is dropped. +pub struct UnixSlavePty { + fd: PtyFd, +} + +/// Helper function to set the close-on-exec flag for a raw descriptor +fn cloexec(fd: RawFd) -> Result<(), Error> { + let flags = unsafe { libc::fcntl(fd, libc::F_GETFD) }; + if flags == -1 { + bail!( + "fcntl to read flags failed: {:?}", + io::Error::last_os_error() + ); + } + let result = unsafe { libc::fcntl(fd, libc::F_SETFD, flags | libc::FD_CLOEXEC) }; + if result == -1 { + bail!( + "fcntl to set CLOEXEC failed: {:?}", + io::Error::last_os_error() + ); + } + Ok(()) +} + +impl UnixSlavePty { + fn spawn_command(&self, builder: &mut Command) -> Result { + Ok(self.fd.spawn_command(builder)?) + } +} + +impl UnixMasterPty { + fn resize(&self, size: PtySize) -> Result<(), Error> { + self.fd.resize(size) + } + + fn get_size(&self) -> Result { + self.fd.get_size() + } + + fn try_clone_reader(&self) -> Result, Error> { + let fd = PtyFd(self.fd.try_clone()?); + Ok(Box::new(fd)) + } + + fn take_writer(&self) -> Result, Error> { + if *self.took_writer.borrow() { + anyhow::bail!("cannot take writer more than once"); + } + *self.took_writer.borrow_mut() = true; + let fd = PtyFd(self.fd.try_clone()?); + Ok(Box::new(UnixMasterWriter { fd })) + } + + fn as_raw_fd(&self) -> Option { + Some(self.fd.0.as_raw_fd()) + } + + fn tty_name(&self) -> Option { + self.tty_name.clone() + } + + fn process_group_leader(&self) -> Option { + match unsafe { libc::tcgetpgrp(self.fd.0.as_raw_fd()) } { + pid if pid > 0 => Some(pid), + _ => None, + } + } +} + +/// Represents the master end of a pty. +/// EOT will be sent, and then the file descriptor will be closed when +/// the Pty is dropped. +struct UnixMasterWriter { + fd: PtyFd, +} + +impl Drop for UnixMasterWriter { + fn drop(&mut self) { + let mut t: libc::termios = unsafe { std::mem::MaybeUninit::zeroed().assume_init() }; + if unsafe { libc::tcgetattr(self.fd.0.as_raw_fd(), &mut t) } == 0 { + // EOF is only interpreted after a newline, so if it is set, + // we send a newline followed by EOF. + let eot = t.c_cc[libc::VEOF]; + if eot != 0 { + let _ = self.fd.0.write_all(&[b'\n', eot]); + } + } + } +} + +impl Write for UnixMasterWriter { + fn write(&mut self, buf: &[u8]) -> Result { + self.fd.write(buf) + } + fn flush(&mut self) -> Result<(), io::Error> { + self.fd.flush() + } +} From 1ecf2311e40a753fa95811eb1b065e18a2751dbc Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 26 Oct 2025 22:20:30 +0700 Subject: [PATCH 2977/3180] Add ansi escape --- Cargo.lock | 36 ++++++++++++++++++++++++++++++++++++ Cargo.toml | 1 + src/bin/repo.rs | 48 +++++++++++++++++++++++++++++------------------- src/cook/pty.rs | 2 +- 4 files changed, 67 insertions(+), 20 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 907d9d9e..74995894 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -73,6 +73,19 @@ dependencies = [ "libc", ] +[[package]] +name = "ansi-to-tui" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67555e1f1ece39d737e28c8a017721287753af3f93225e4a445b29ccb0f5912c" +dependencies = [ + "nom", + "ratatui", + "simdutf8", + "smallvec", + "thiserror 1.0.69", +] + [[package]] name = "ansi_term" version = "0.12.1" @@ -1540,6 +1553,12 @@ dependencies = [ "windows-sys 0.45.0", ] +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" version = "0.8.9" @@ -1572,6 +1591,16 @@ dependencies = [ "libc", ] +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + [[package]] name = "num-conv" version = "0.1.0" @@ -2061,6 +2090,7 @@ dependencies = [ name = "redox_cookbook" version = "0.1.0" dependencies = [ + "ansi-to-tui", "anyhow", "blake3 1.5.3", "filedescriptor", @@ -2537,6 +2567,12 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + [[package]] name = "slab" version = "0.4.10" diff --git a/Cargo.toml b/Cargo.toml index ae5e18c9..e21950d7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,6 +39,7 @@ termion = "4" toml = "0.8" walkdir = "2.3.1" filedescriptor = "0.8.3" +ansi-to-tui = "7.0.0" [dependencies.ratatui] version = "0.29.0" diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 6e643f4a..6097b575 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -1,3 +1,21 @@ +use ansi_to_tui::IntoText; +use anyhow::{Context, anyhow, bail}; +use cookbook::WALK_DEPTH; +use cookbook::config::{CookConfig, get_config, init_config}; +use cookbook::cook::cook_build::build; +use cookbook::cook::fetch::{fetch, fetch_offline}; +use cookbook::cook::fs::create_target_dir; +use cookbook::cook::package::package; +use cookbook::cook::pty::{PtyOut, UnixSlavePty, setup_pty}; +use cookbook::recipe::CookRecipe; +use pkg::PackageName; +use pkg::package::PackageError; +use ratatui::Terminal; +use ratatui::layout::{Constraint, Direction, Layout, Position, Rect}; +use ratatui::prelude::TermionBackend; +use ratatui::style::{Color, Style}; +use ratatui::text::{Line, Span, Text}; +use ratatui::widgets::{Block, Borders, Clear, List, ListItem, ListState, Paragraph, Wrap}; use std::collections::{HashMap, VecDeque}; use std::io::{BufRead, BufReader, Read, Write, stderr, stdin, stdout}; use std::path::PathBuf; @@ -8,24 +26,6 @@ use std::sync::{Arc, mpsc}; use std::time::{Duration, Instant}; use std::{cmp, env, fs}; use std::{process, thread}; - -use anyhow::{Context, anyhow, bail}; -use cookbook::WALK_DEPTH; -use cookbook::config::{CookConfig, get_config, init_config}; -use cookbook::cook::cook_build::build; -use cookbook::cook::fetch::{fetch, fetch_offline}; -use cookbook::cook::fs::create_target_dir; -use cookbook::cook::package::package; -use cookbook::cook::pty::{setup_pty, PtyOut, UnixSlavePty}; -use cookbook::recipe::CookRecipe; -use pkg::PackageName; -use pkg::package::PackageError; -use ratatui::Terminal; -use ratatui::layout::{Constraint, Direction, Layout, Position, Rect}; -use ratatui::prelude::TermionBackend; -use ratatui::style::{Color, Style}; -use ratatui::text::{Line, Span}; -use ratatui::widgets::{Block, Borders, Clear, List, ListItem, ListState, Paragraph, Wrap}; use termion::event::{Event, Key, MouseEvent}; use termion::input::TermRead; use termion::raw::IntoRawMode; @@ -937,7 +937,17 @@ fn run_tui_cook( log_text[start..end] .iter() - .map(|s| Line::from(s.clone())) + .map(|s| { + let text_with_colors = s + .into_text() + .unwrap_or_else(|_| Text::raw("--unrenderable line--")); + + text_with_colors + .lines + .into_iter() + .next() + .unwrap_or_else(|| Line::raw("--unrenderable line--")) + }) .collect() } else { vec![Line::from("No logs yet")] diff --git a/src/cook/pty.rs b/src/cook/pty.rs index 42876e9c..70165507 100644 --- a/src/cook/pty.rs +++ b/src/cook/pty.rs @@ -286,7 +286,7 @@ impl PtyFd { // them) and won't work in the usual way anyway. // In practice these are None, but it seems best to be move them // out in case the behavior of Command changes in the future. - child.stdin.take(); + // child.stdin.take(); child.stdout.take(); child.stderr.take(); From e30cb66990dc4b3cbddf3d669aec8a3fec38b0f7 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 26 Oct 2025 22:43:02 +0700 Subject: [PATCH 2978/3180] Handle carriage returns --- src/bin/repo.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 6097b575..0d05bc7d 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -938,10 +938,10 @@ fn run_tui_cook( log_text[start..end] .iter() .map(|s| { - let text_with_colors = s + let line_to_render = s.rsplit('\r').next().unwrap_or(s); + let text_with_colors = line_to_render .into_text() .unwrap_or_else(|_| Text::raw("--unrenderable line--")); - text_with_colors .lines .into_iter() From 8f892754d1d39ed39a66694e0b6d6a6bda023c94 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 26 Oct 2025 22:50:38 -0300 Subject: [PATCH 2979/3180] Add recipes --- recipes/wip/dev/build-system/lux/recipe.toml | 8 +++++++ recipes/wip/dev/debug/dr-memory/recipe.toml | 10 ++++++++ recipes/wip/games/other/blightmud/recipe.toml | 9 +++++++ recipes/wip/games/other/mudlet/recipe.toml | 24 +++++++++++++++++++ recipes/wip/games/other/tintin/recipe.toml | 10 ++++++++ recipes/wip/libs/text/hunspell/recipe.toml | 6 +++++ .../wip/net/bittorrent/superseedr/recipe.toml | 5 ++++ recipes/wip/net/http/lighttpd/recipe.toml | 10 ++++++++ 8 files changed, 82 insertions(+) create mode 100644 recipes/wip/dev/build-system/lux/recipe.toml create mode 100644 recipes/wip/dev/debug/dr-memory/recipe.toml create mode 100644 recipes/wip/games/other/blightmud/recipe.toml create mode 100644 recipes/wip/games/other/mudlet/recipe.toml create mode 100644 recipes/wip/games/other/tintin/recipe.toml create mode 100644 recipes/wip/libs/text/hunspell/recipe.toml create mode 100644 recipes/wip/net/bittorrent/superseedr/recipe.toml create mode 100644 recipes/wip/net/http/lighttpd/recipe.toml diff --git a/recipes/wip/dev/build-system/lux/recipe.toml b/recipes/wip/dev/build-system/lux/recipe.toml new file mode 100644 index 00000000..01b27908 --- /dev/null +++ b/recipes/wip/dev/build-system/lux/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/lumen-oss/lux" +[build] +template = "custom" +script = """ +cookbook_cargo_packages lux-cli +""" diff --git a/recipes/wip/dev/debug/dr-memory/recipe.toml b/recipes/wip/dev/debug/dr-memory/recipe.toml new file mode 100644 index 00000000..5b953f6c --- /dev/null +++ b/recipes/wip/dev/debug/dr-memory/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +# lacking build instructions +[source] +git = "https://github.com/DynamoRIO/drmemory" +rev = "release_2.6.0" +[build] +template = "cmake" +dependencies = [ + "libunwind", +] diff --git a/recipes/wip/games/other/blightmud/recipe.toml b/recipes/wip/games/other/blightmud/recipe.toml new file mode 100644 index 00000000..a1c86b3f --- /dev/null +++ b/recipes/wip/games/other/blightmud/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Blightmud/Blightmud" +[build] +template = "cargo" +dependencies = [ + "openssl3", + "libalsa", +] diff --git a/recipes/wip/games/other/mudlet/recipe.toml b/recipes/wip/games/other/mudlet/recipe.toml new file mode 100644 index 00000000..640bcfc7 --- /dev/null +++ b/recipes/wip/games/other/mudlet/recipe.toml @@ -0,0 +1,24 @@ +#TODO missing dependencies +# build instructions: https://wiki.mudlet.org/w/Compiling_Mudlet +[source] +git = "https://github.com/Mudlet/Mudlet" +branch = "release-4.19" +[build] +template = "cmake" +dependencies = [ + "zlib", + "pcre2", + "libzip", + "hunspell", + "boost", + "libpulse", + "glib", + "mesa-glu", + "mesa", + "libpugixml", + "gstreamer", + "qt6-multimedia", + "qt6-tools", + "qt6-speech", + "zstd", +] diff --git a/recipes/wip/games/other/tintin/recipe.toml b/recipes/wip/games/other/tintin/recipe.toml new file mode 100644 index 00000000..7aacf88e --- /dev/null +++ b/recipes/wip/games/other/tintin/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +[source] +tar = "https://github.com/scandum/tintin/releases/download/2.02.51/tintin-2.02.51.tar.gz" +[build] +template = "configure" +dependencies = [ + "zlib", + "pcre2", + #"gnutls3", # optional +] diff --git a/recipes/wip/libs/text/hunspell/recipe.toml b/recipes/wip/libs/text/hunspell/recipe.toml new file mode 100644 index 00000000..d47505e6 --- /dev/null +++ b/recipes/wip/libs/text/hunspell/recipe.toml @@ -0,0 +1,6 @@ +#TODO not compiled or tested +# build instructions: https://github.com/hunspell/hunspell#compiling-on-gnulinux-and-unixes +[source] +tar = "https://github.com/hunspell/hunspell/releases/download/v1.7.2/hunspell-1.7.2.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/net/bittorrent/superseedr/recipe.toml b/recipes/wip/net/bittorrent/superseedr/recipe.toml new file mode 100644 index 00000000..c8d85fce --- /dev/null +++ b/recipes/wip/net/bittorrent/superseedr/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Jagalite/superseedr" +[build] +template = "cargo" diff --git a/recipes/wip/net/http/lighttpd/recipe.toml b/recipes/wip/net/http/lighttpd/recipe.toml new file mode 100644 index 00000000..ea8d1852 --- /dev/null +++ b/recipes/wip/net/http/lighttpd/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +# build instructions: https://redmine.lighttpd.net/projects/lighttpd/wiki/InstallFromSource +[source] +tar = "https://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.82.tar.xz" +[build] +template = "cmake" +dependencies = [ + "pcre2", + #"openssl3", # optional +] From 2b8915e24d68c905513d6f0b2216a000edabd8b7 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Mon, 27 Oct 2025 17:32:54 +0700 Subject: [PATCH 2980/3180] Fix warnings --- src/cook/fs.rs | 2 +- src/cook/pty.rs | 122 ++++++++++++------------------------------------ 2 files changed, 30 insertions(+), 94 deletions(-) diff --git a/src/cook/fs.rs b/src/cook/fs.rs index db1a0fa2..c9385260 100644 --- a/src/cook/fs.rs +++ b/src/cook/fs.rs @@ -1,7 +1,7 @@ use serde::Serialize; use std::{ fs, - io::{self, PipeWriter, Write}, + io::{self, Write}, path::{Path, PathBuf}, process::{self, Command, Stdio}, time::SystemTime, diff --git a/src/cook/pty.rs b/src/cook/pty.rs index 70165507..96bae8c8 100644 --- a/src/cook/pty.rs +++ b/src/cook/pty.rs @@ -1,15 +1,10 @@ use anyhow::{Error, bail}; use filedescriptor::FileDescriptor; use libc::{self, winsize}; -use portable_pty::PtySize; -use std::cell::RefCell; -use std::ffi::OsStr; -use std::io::{Read, Write}; +use std::io::Read; use std::os::fd::FromRawFd; -use std::os::unix::ffi::OsStrExt; use std::os::unix::io::AsRawFd; use std::os::unix::process::CommandExt; -use std::path::PathBuf; use std::process::Child; use std::{io, mem, ptr}; use std::{ @@ -77,6 +72,32 @@ pub fn spawn_to_pipe(command: &mut Command, stdout_pipe: &PtyOut) -> Result Self { + PtySize { + rows: 24, + cols: 80, + pixel_width: 0, + pixel_height: 0, + } + } +} + fn openpty(size: PtySize) -> anyhow::Result<(UnixMasterPty, UnixSlavePty)> { let mut master: RawFd = -1; let mut slave: RawFd = -1; @@ -104,12 +125,8 @@ fn openpty(size: PtySize) -> anyhow::Result<(UnixMasterPty, UnixSlavePty)> { bail!("failed to openpty: {:?}", io::Error::last_os_error()); } - let tty_name = tty_name(slave); - let master = UnixMasterPty { fd: PtyFd(unsafe { FileDescriptor::from_raw_fd(master) }), - took_writer: RefCell::new(false), - tty_name, }; let slave = UnixSlavePty { fd: PtyFd(unsafe { FileDescriptor::from_raw_fd(slave) }), @@ -170,33 +187,6 @@ impl Read for PtyFd { } } -fn tty_name(fd: RawFd) -> Option { - let mut buf = vec![0 as std::ffi::c_char; 128]; - - loop { - let res = unsafe { libc::ttyname_r(fd, buf.as_mut_ptr(), buf.len()) }; - - if res == libc::ERANGE { - if buf.len() > 64 * 1024 { - // on macOS, if the buf is "too big", ttyname_r can - // return ERANGE, even though that is supposed to - // indicate buf is "too small". - return None; - } - buf.resize(buf.len() * 2, 0 as std::ffi::c_char); - continue; - } - - return if res == 0 { - let cstr = unsafe { std::ffi::CStr::from_ptr(buf.as_ptr()) }; - let osstr = OsStr::from_bytes(cstr.to_bytes()); - Some(PathBuf::from(osstr)) - } else { - None - }; - } -} - impl PtyFd { fn resize(&self, size: PtySize) -> Result<(), Error> { let ws_size = winsize { @@ -298,8 +288,6 @@ impl PtyFd { /// The file descriptor will be closed when the Pty is dropped. pub struct UnixMasterPty { fd: PtyFd, - took_writer: RefCell, - tty_name: Option, } /// Represents the slave end of a pty. @@ -334,10 +322,12 @@ impl UnixSlavePty { } impl UnixMasterPty { + #[allow(unused)] fn resize(&self, size: PtySize) -> Result<(), Error> { self.fd.resize(size) } + #[allow(unused)] fn get_size(&self) -> Result { self.fd.get_size() } @@ -346,58 +336,4 @@ impl UnixMasterPty { let fd = PtyFd(self.fd.try_clone()?); Ok(Box::new(fd)) } - - fn take_writer(&self) -> Result, Error> { - if *self.took_writer.borrow() { - anyhow::bail!("cannot take writer more than once"); - } - *self.took_writer.borrow_mut() = true; - let fd = PtyFd(self.fd.try_clone()?); - Ok(Box::new(UnixMasterWriter { fd })) - } - - fn as_raw_fd(&self) -> Option { - Some(self.fd.0.as_raw_fd()) - } - - fn tty_name(&self) -> Option { - self.tty_name.clone() - } - - fn process_group_leader(&self) -> Option { - match unsafe { libc::tcgetpgrp(self.fd.0.as_raw_fd()) } { - pid if pid > 0 => Some(pid), - _ => None, - } - } -} - -/// Represents the master end of a pty. -/// EOT will be sent, and then the file descriptor will be closed when -/// the Pty is dropped. -struct UnixMasterWriter { - fd: PtyFd, -} - -impl Drop for UnixMasterWriter { - fn drop(&mut self) { - let mut t: libc::termios = unsafe { std::mem::MaybeUninit::zeroed().assume_init() }; - if unsafe { libc::tcgetattr(self.fd.0.as_raw_fd(), &mut t) } == 0 { - // EOF is only interpreted after a newline, so if it is set, - // we send a newline followed by EOF. - let eot = t.c_cc[libc::VEOF]; - if eot != 0 { - let _ = self.fd.0.write_all(&[b'\n', eot]); - } - } - } -} - -impl Write for UnixMasterWriter { - fn write(&mut self, buf: &[u8]) -> Result { - self.fd.write(buf) - } - fn flush(&mut self) -> Result<(), io::Error> { - self.fd.flush() - } } From 19f5d8ff3e8afbdc18ff89bfaff6a3bad517c04a Mon Sep 17 00:00:00 2001 From: Wildan M Date: Mon, 27 Oct 2025 21:51:35 +0700 Subject: [PATCH 2981/3180] Make last line visible --- src/bin/repo.rs | 94 ++++++++++++++++++++++++++++++++++++------------- 1 file changed, 69 insertions(+), 25 deletions(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 0d05bc7d..f956db17 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -16,8 +16,9 @@ use ratatui::prelude::TermionBackend; use ratatui::style::{Color, Style}; use ratatui::text::{Line, Span, Text}; use ratatui::widgets::{Block, Borders, Clear, List, ListItem, ListState, Paragraph, Wrap}; +use std::borrow::Cow; use std::collections::{HashMap, VecDeque}; -use std::io::{BufRead, BufReader, Read, Write, stderr, stdin, stdout}; +use std::io::{Read, Write, stderr, stdin, stdout}; use std::path::PathBuf; use std::process::Command; use std::str::FromStr; @@ -456,7 +457,7 @@ enum StatusUpdate { StartCook(PackageName), Cooked(CookRecipe), FailCook(CookRecipe, String), - PushLog(PackageName, String), + PushLog(PackageName, Vec), FetchThreadFinished, CookThreadFinished, } @@ -485,6 +486,7 @@ struct TuiApp { active_fetch: Option, active_cook: Option, logs: HashMap>, + log_byte_buffer: HashMap>, log_scroll: usize, log_view_job: JobType, auto_scroll: bool, @@ -515,6 +517,7 @@ impl TuiApp { active_fetch: None, active_cook: None, logs: HashMap::new(), + log_byte_buffer: HashMap::new(), log_scroll: 0, auto_scroll: true, log_view_job: JobType::Fetch, @@ -538,6 +541,7 @@ impl TuiApp { StatusUpdate::StartFetch(name) => { self.active_fetch = Some(name.clone()); self.logs.insert(name.clone(), Vec::new()); + self.log_byte_buffer.insert(name.clone(), Vec::new()); self.log_scroll = 0; self.auto_scroll = true; (name.clone(), RecipeStatus::Fetching) @@ -550,16 +554,21 @@ impl TuiApp { StatusUpdate::StartCook(name) => { self.active_cook = Some(name.clone()); self.logs.insert(name.clone(), Vec::new()); + self.log_byte_buffer.insert(name.clone(), Vec::new()); (name.clone(), RecipeStatus::Cooking) } - StatusUpdate::PushLog(name, line) => { - self.logs.entry(name.clone()).or_default().push(line); - // No status change, just return the current state - if let Some((_, status)) = self.recipes.iter().find(|(r, _)| r.name == name) { - (name, status.clone()) - } else { - return; // Should not happen + StatusUpdate::PushLog(name, chunk) => { + let buffer = self.log_byte_buffer.entry(name.clone()).or_default(); + buffer.extend_from_slice(&chunk); + let log_list = self.logs.entry(name.clone()).or_default(); + while let Some(newline_pos) = buffer.iter().position(|&b| b == b'\n') { + let line_bytes = buffer.drain(..=newline_pos).collect::>(); + let line_str = String::from_utf8_lossy(&line_bytes).into_owned(); + let line_str_pos = line_str.trim_end(); + let line_str = line_str_pos.rsplit('\r').next().unwrap_or(&line_str_pos); + log_list.push(line_str.to_owned()); } + return; } StatusUpdate::Cooked(recipe) => { if self.active_cook.as_ref() == Some(&recipe.name) { @@ -570,7 +579,6 @@ impl TuiApp { } StatusUpdate::FailCook(recipe, err) => { self.prompt = Some(FailurePrompt::new(recipe.clone(), err.clone())); - (recipe.name.clone(), RecipeStatus::Failed(err)) } StatusUpdate::FetchThreadFinished => { @@ -892,8 +900,7 @@ fn run_tui_cook( ); f.render_stateful_widget(cook_list, cook_chunk, &mut app.cook_list_state); - let (active_name, log_text) = get_active_log(&app); - + let (active_name, log_text, log_line) = get_active_log(&app); let log_title = if let Some(active_name) = active_name { format!( " {} Log: {} ", @@ -907,8 +914,8 @@ fn run_tui_cook( let mut enable_auto_scroll = false; let mut intended_scroll_pos = 0usize; - let log_lines: Vec = if let Some(log_text) = log_text - && log_text.len() > 0 + let mut log_lines: Vec = if let Some(log_text) = log_text + && !log_text.is_empty() { let total_log_lines = log_text.len() as usize; @@ -938,8 +945,7 @@ fn run_tui_cook( log_text[start..end] .iter() .map(|s| { - let line_to_render = s.rsplit('\r').next().unwrap_or(s); - let text_with_colors = line_to_render + let text_with_colors = s .into_text() .unwrap_or_else(|_| Text::raw("--unrenderable line--")); text_with_colors @@ -953,6 +959,18 @@ fn run_tui_cook( vec![Line::from("No logs yet")] }; + if let Some(buffer) = log_line + && !buffer.is_empty() + { + let text_with_colors = handle_cr(&buffer) + .into_text() + .unwrap_or_else(|_| Text::raw("--unrenderable line--")); + + if let Some(line) = text_with_colors.lines.into_iter().next() { + log_lines.push(line); + } + } + let instruct = format!( " Keys: [c] Stop [PageUp/Down] Scroll{}{} ", match app.auto_scroll { @@ -993,11 +1011,16 @@ fn run_tui_cook( if let Some((app, res)) = handle_prompt_input(&event, &mut app) { prompting.swap(res as u32, Ordering::SeqCst); if res == PromptOption::Exit { - let (name, log) = get_active_log(&app); + let (name, log, line) = get_active_log(&app); if let Some(name) = name && let Some(log) = log { - app.dump_logs_on_exit = Some((name.to_owned(), log.join("\n"))); + let mut logs = log.join("\n"); + if let Some(line) = line { + logs.push_str("\n"); + logs.push_str(handle_cr(&line)); + } + app.dump_logs_on_exit = Some((name.to_owned(), logs)); } running.store(false, Ordering::SeqCst); } @@ -1030,19 +1053,36 @@ fn run_tui_cook( Ok(app.dump_logs_on_exit) } -fn get_active_log(app: &TuiApp) -> (Option, Option<&Vec>) { +fn handle_cr<'a>(buffer: &'a Cow<'_, str>) -> &'a str { + let st = buffer.trim_end(); + st.rsplit('\r').next().unwrap_or(&st) +} + +fn get_active_log( + app: &TuiApp, +) -> ( + Option, + Option<&Vec>, + Option>, +) { let active_name = if app.log_view_job == JobType::Cook { app.active_cook.clone() } else { app.active_fetch.clone() }; - let log_text = if let Some(active_name) = &active_name { app.logs.get(active_name) } else { None }; - (active_name, log_text) + let log_line = if let Some(active_name) = &active_name + && let Some(b) = app.log_byte_buffer.get(active_name) + { + Some(String::from_utf8_lossy(b)) + } else { + None + }; + (active_name, log_text, log_line) } fn handle_main_event(app: &mut TuiApp, event: &Event) { @@ -1231,11 +1271,15 @@ fn spawn_log_reader( R: Read + Send + 'static, { thread::spawn(move || { - let reader = BufReader::new(&mut reader); - for line in reader.lines() { - let line_str = line.unwrap_or_else(|e| format!("[IO Error] {}", e)); + let mut buffer = [0; 1024]; + loop { + let buf = match reader.read(&mut buffer) { + Ok(0) => break, + Ok(n) => buffer[..n].to_vec(), + Err(e) => format!("[IO Error] {}", e).into_bytes(), + }; if status_tx - .send(StatusUpdate::PushLog(package_name.clone(), line_str)) + .send(StatusUpdate::PushLog(package_name.clone(), buf)) .is_err() { // TUI thread hung up From b1fec31dff799931b2a31cd051b450df5abe0d9b Mon Sep 17 00:00:00 2001 From: Wildan M Date: Tue, 28 Oct 2025 00:20:20 +0700 Subject: [PATCH 2982/3180] Fix push command and category on make --- src/bin/repo.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index f956db17..c5e173b1 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -16,6 +16,7 @@ use ratatui::prelude::TermionBackend; use ratatui::style::{Color, Style}; use ratatui::text::{Line, Span, Text}; use ratatui::widgets::{Block, Borders, Clear, List, ListItem, ListState, Paragraph, Wrap}; +use redoxer::target; use std::borrow::Cow; use std::collections::{HashMap, VecDeque}; use std::io::{Read, Write, stderr, stdin, stdout}; @@ -269,6 +270,9 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec config.with_package_deps = true, @@ -336,7 +340,7 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec anyhow::Result<()> { let public_path = "build/id_ed25519.pub.toml"; - let archive_path = config.repo_dir.join(recipe.name.as_str()); + let archive_path = config + .repo_dir + .join(target()) + .join(format!("{}.pkgar", recipe.name)); pkgar::extract( public_path, archive_path.as_path(), From 645a741f8d640bfb20e3ea589877ed79c865ec56 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Tue, 28 Oct 2025 00:36:44 +0700 Subject: [PATCH 2983/3180] Update cookbool.toml README --- README.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9da5af7b..04e10b34 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,16 @@ Cookbook has special config to avoid repetitive args, place this file into `cook ```toml # Configuration file # This is a configuration file to avoid repetitively spelling command args. -# At the moment only mirrors here implemented but in future it will be expanded when scripts are rusted +# At the moment this configures mirror and cook configuration + +# These options has defaults set below +# These options has higher priority than env +#[cook] +#jobs = +#nonstop = false +#offline = false +#tui = true +#verbose = true [mirrors] # see list of GNU FTP mirrors at https://www.gnu.org/prep/ftp.en.html From 66413edfb30cd2e11174ef465c210bd96ef62633 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Tue, 28 Oct 2025 13:17:31 +0700 Subject: [PATCH 2984/3180] Don't clean build deps --- src/bin/repo.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index c5e173b1..01fd77ac 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -91,6 +91,9 @@ impl CliCommand { pub fn is_informational(&self) -> bool { *self == CliCommand::Tree || *self == CliCommand::Find } + pub fn is_building(&self) -> bool { + *self == CliCommand::Fetch || *self == CliCommand::Cook + } } impl FromStr for CliCommand { @@ -340,7 +343,7 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec Date: Tue, 28 Oct 2025 18:30:43 -0600 Subject: [PATCH 2985/3180] openal: Use github for source, as original site has expired certificate --- recipes/wip/libs/audio/openal/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/wip/libs/audio/openal/recipe.toml b/recipes/wip/libs/audio/openal/recipe.toml index 0f1d8352..ad05cfba 100644 --- a/recipes/wip/libs/audio/openal/recipe.toml +++ b/recipes/wip/libs/audio/openal/recipe.toml @@ -1,6 +1,6 @@ [source] -tar = "https://openal-soft.org/openal-releases/openal-soft-1.24.1.tar.bz2" -blake3 = "8aeaa8307d3e14331ad20761c537ffebe70975cb7c3343e8d5c0c0ed7bc16eab" +tar = "https://github.com/kcat/openal-soft/archive/refs/tags/1.24.1.tar.gz" +blake3 = "da65f839d4cee560371d08fc977f90757f964f49b14655b1d8d43f779c90a815" patches = [ "redox.patch" ] From 454ab2bf85b85a5003c8142952b36c56562ca132 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 29 Oct 2025 15:24:10 +0700 Subject: [PATCH 2986/3180] Make servo working --- recipes/libs/libstdcxx-v3/recipe.toml | 18 +++ recipes/wip/libs/other/webkitgtk3/recipe.toml | 12 ++ recipes/wip/web/servo/recipe.toml | 12 +- recipes/wip/web/servo/redox.patch | 13 +++ recipes/wip/x11/libxkbcommon-x11/recipe.toml | 3 +- recipes/wip/x11/libxkbcommon-x11/redox.patch | 63 ++++++++++- recipes/wip/x11/xserver-xorg/redox.patch | 103 ++++++++++++++---- 7 files changed, 195 insertions(+), 29 deletions(-) create mode 100644 recipes/libs/libstdcxx-v3/recipe.toml diff --git a/recipes/libs/libstdcxx-v3/recipe.toml b/recipes/libs/libstdcxx-v3/recipe.toml new file mode 100644 index 00000000..be917ca2 --- /dev/null +++ b/recipes/libs/libstdcxx-v3/recipe.toml @@ -0,0 +1,18 @@ +[source] +same_as = "../../dev/gcc13" + +[build] +template = "custom" +dependencies = [ + "libgmp", + "libmpfr", + "mpc", + "zlib" +] +script = """ +DYNAMIC_INIT +CPPINCLUDE="${COOKBOOK_HOST_SYSROOT}/$TARGET/include/c++/13.2.0" +export CPPFLAGS+=" -I${CPPINCLUDE} -I${CPPINCLUDE}/$TARGET/bits" +COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/libstdc++-v3/configure" +cookbook_configure +""" diff --git a/recipes/wip/libs/other/webkitgtk3/recipe.toml b/recipes/wip/libs/other/webkitgtk3/recipe.toml index 09261153..e8091182 100644 --- a/recipes/wip/libs/other/webkitgtk3/recipe.toml +++ b/recipes/wip/libs/other/webkitgtk3/recipe.toml @@ -31,6 +31,7 @@ dependencies = [ "libpsl", "libpthread-stubs", "libsoup", + "libstdcxx-v3", "libtasn1", "libwebp", "libx11", @@ -89,6 +90,17 @@ COOKBOOK_CMAKE_FLAGS+=( -DUSE_SYSTEM_MALLOC=OFF -DUSE_SYSTEM_SYSPROF_CAPTURE=OFF -DUSE_WOFF2=OFF + #TODO: remove these when runtime hangs solved + -DENABLE_JIT=OFF + -DENABLE_DFG_JIT=OFF + -DENABLE_FTL_JIT=OFF + -DENABLE_OPENGL=OFF + -DENABLE_WEBGL=OFF + -DENABLE_XSLT=OFF + -DENABLE_GEOLOCATION=OFF + -DENABLE_WEBDRIVER=OFF + -DENABLE_BUBBLEWRAP_SANDBOX=OFF + -DUSE_LCMS=OFF ) cookbook_cmake diff --git a/recipes/wip/web/servo/recipe.toml b/recipes/wip/web/servo/recipe.toml index 92dbc12f..80c03a3c 100644 --- a/recipes/wip/web/servo/recipe.toml +++ b/recipes/wip/web/servo/recipe.toml @@ -1,5 +1,5 @@ [source] -git = "github.com/servo/servo.git" +git = "https://github.com/servo/servo.git" rev = "25fea1e086c46d611cf87db439430994e4f56cd5" patches = [ "redox.patch" @@ -23,6 +23,7 @@ dependencies = [ "libx11", "libxcb", "libpng", + "libstdcxx-v3", "openssl1", "pcre", "zlib", @@ -44,6 +45,7 @@ export TARGET_CC="$CC" export TARGET_CXX="$CXX" export TARGET_AR="$AR" +# pkg-config crate can only recognize one path to pkgconfig export PKG_CONFIG_PATH_x86_64_unknown_redox="${COOKBOOK_SYSROOT}/lib/pkgconfig" export PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_redox="${COOKBOOK_SYSROOT}/lib/pkgconfig" rsync -a -v ${COOKBOOK_SYSROOT}/usr/share/pkgconfig/*.pc ${COOKBOOK_SYSROOT}/lib/pkgconfig/ @@ -51,13 +53,19 @@ rsync -a -v ${COOKBOOK_SYSROOT}/usr/share/pkgconfig/*.pc ${COOKBOOK_SYSROOT}/lib export RUSTFLAGS="$RUSTFLAGS -L native=${COOKBOOK_SYSROOT}/lib -C link-arg=-Wl,-rpath-link,${COOKBOOK_SYSROOT}/lib" #TODO: mozjs-sys and mozangle uses clang, it won't know our prefix C libraries, so here's the workaround -PREFIX_INCLUDE=$(realpath "$COOKBOOK_ROOT/../prefix/$TARGET/sysroot/x86_64-unknown-redox/include") +PREFIX_INCLUDE="$COOKBOOK_HOST_SYSROOT/$TARGET/include" export CLANGFLAGS="-I $PREFIX_INCLUDE/c++/13.2.0 -I $PREFIX_INCLUDE/c++/13.2.0/$TARGET -I $PREFIX_INCLUDE/c++/13.2.0/backward -I $PREFIX_INCLUDE" #Mozjs specifics export CARGO_MAKEFLAGS="-j $COOKBOOK_MAKE_JOBS" CCACHE="sccache" PACKAGE_PATH="ports/servoshell" cookbook_cargo + +# resources packaging +mkdir -p ${COOKBOOK_STAGE}/usr/lib/servo/bin +mv ${COOKBOOK_STAGE}/usr/bin/servo ${COOKBOOK_STAGE}/usr/lib/servo/bin/ +ln -s ../lib/servo/bin/servo ${COOKBOOK_STAGE}/usr/bin/servo +rsync -a -v ${COOKBOOK_SOURCE}/resources ${COOKBOOK_STAGE}/usr/lib/servo/ """ [package] diff --git a/recipes/wip/web/servo/redox.patch b/recipes/wip/web/servo/redox.patch index 3a0c804f..c8ffd503 100644 --- a/recipes/wip/web/servo/redox.patch +++ b/recipes/wip/web/servo/redox.patch @@ -380,6 +380,19 @@ index 51e81f6c085..fb85b1ea6b1 100644 webxr-api = { workspace = true, features = ["ipc"], optional = true } wgpu-core = { workspace = true } wgpu-types = { workspace = true } +diff --git a/components/script/dom/bindings/buffer_source.rs b/components/script/dom/bindings/buffer_source.rs +index a271cad5643..551cf044eb2 100644 +--- a/components/script/dom/bindings/buffer_source.rs ++++ b/components/script/dom/bindings/buffer_source.rs +@@ -887,7 +887,7 @@ impl DataBlock { + *cx, + range.end - range.start, + // SAFETY: This is safe because we have checked there is no overlapping view +- (*raw)[range.clone()].as_mut_ptr() as _, ++ (&mut (*raw))[range.clone()].as_mut_ptr() as _, + Some(free_func), + raw as _, + ) diff --git a/components/script/dom/navigatorinfo.rs b/components/script/dom/navigatorinfo.rs index f3e6ddc109b..ee83d327df9 100644 --- a/components/script/dom/navigatorinfo.rs diff --git a/recipes/wip/x11/libxkbcommon-x11/recipe.toml b/recipes/wip/x11/libxkbcommon-x11/recipe.toml index 4e33e5d2..ea53a2ca 100644 --- a/recipes/wip/x11/libxkbcommon-x11/recipe.toml +++ b/recipes/wip/x11/libxkbcommon-x11/recipe.toml @@ -1,7 +1,8 @@ # TODO: Conflict with libxkbcommon-x11 +# TODO: Keyboard not working, see patches [source] tar = "https://xkbcommon.org/download/libxkbcommon-1.7.0.tar.xz" -b3sum = "5001ca0b8562feeef2010bf16c05657e3875fda3ed5fdedbf48b9135e5cdfcbc" +blake3 = "5001ca0b8562feeef2010bf16c05657e3875fda3ed5fdedbf48b9135e5cdfcbc" patches = [ "redox.patch" ] [build] diff --git a/recipes/wip/x11/libxkbcommon-x11/redox.patch b/recipes/wip/x11/libxkbcommon-x11/redox.patch index f942f22f..11a80ca9 100644 --- a/recipes/wip/x11/libxkbcommon-x11/redox.patch +++ b/recipes/wip/x11/libxkbcommon-x11/redox.patch @@ -1,6 +1,6 @@ -diff -ruwN source/meson.build source-new/meson.build +diff --color -ruwN source/meson.build source-new/meson.build --- source/meson.build 2024-03-24 04:23:43.000000000 +0700 -+++ source-new/meson.build 2025-09-30 17:40:34.433925985 +0700 ++++ source-new/meson.build 2025-10-29 10:55:30.355297899 +0700 @@ -637,8 +637,6 @@ libxkbcommon_x11_test_internal = static_library( 'xkbcommon-x11-internal', @@ -31,3 +31,62 @@ diff -ruwN source/meson.build source-new/meson.build if get_option('enable-xkbregistry') test( 'registry', +diff --color -ruwN source/src/x11/util.c source-new/src/x11/util.c +--- source/src/x11/util.c 2024-03-24 04:23:43.000000000 +0700 ++++ source-new/src/x11/util.c 2025-10-29 15:03:58.879274347 +0700 +@@ -39,7 +39,7 @@ + uint16_t server_major, server_minor; + + if (flags & ~(XKB_X11_SETUP_XKB_EXTENSION_NO_FLAGS)) { +- /* log_err_func(ctx, "unrecognized flags: %#x\n", flags); */ ++ printf("unrecognized flags: %#x\n", flags); + return 0; + } + +@@ -47,12 +47,12 @@ + const xcb_query_extension_reply_t *reply = + xcb_get_extension_data(conn, &xcb_xkb_id); + if (!reply) { +- /* log_err_func(ctx, "failed to query for XKB extension\n"); */ ++ printf("failed to query for XKB extension\n"); + return 0; + } + + if (!reply->present) { +- /* log_err_func(ctx, "failed to start using XKB extension: not available in server\n"); */ ++ printf("failed to start using XKB extension: not available in server\n"); + return 0; + } + +@@ -68,20 +68,21 @@ + xcb_xkb_use_extension_reply(conn, cookie, &error); + + if (!reply) { +- /* log_err_func(ctx, */ +- /* "failed to start using XKB extension: error code %d\n", */ +- /* error ? error->error_code : -1); */ ++ printf( ++ "failed to start using XKB extension: error code %d\n", ++ error ? error->error_code : -1); + free(error); + return 0; + } + +- if (!reply->supported) { +- /* log_err_func(ctx, */ +- /* "failed to start using XKB extension: server doesn't support version %d.%d\n", */ +- /* major_xkb_version, minor_xkb_version); */ +- free(reply); +- return 0; +- } ++ // FIXME: Figure out why winit/servo throwing this ++ // if (!reply->supported) { ++ // printf( ++ // "failed to start using XKB extension: server doesn't support version %d.%d\n", ++ // major_xkb_version, minor_xkb_version); ++ // free(reply); ++ // return 0; ++ // } + + server_major = reply->serverMajor; + server_minor = reply->serverMinor; diff --git a/recipes/wip/x11/xserver-xorg/redox.patch b/recipes/wip/x11/xserver-xorg/redox.patch index de43a570..47edc62c 100644 --- a/recipes/wip/x11/xserver-xorg/redox.patch +++ b/recipes/wip/x11/xserver-xorg/redox.patch @@ -1,6 +1,6 @@ -diff -ruwN xorg-server-21.1.16/hw/xfree86/common/xf86Xinput.c source/hw/xfree86/common/xf86Xinput.c ---- xorg-server-21.1.16/hw/xfree86/common/xf86Xinput.c 2025-02-25 11:56:05.000000000 -0700 -+++ source/hw/xfree86/common/xf86Xinput.c 2025-05-03 11:28:37.266757877 -0600 +diff -ruwN source/hw/xfree86/common/xf86Xinput.c source-new/hw/xfree86/common/xf86Xinput.c +--- source/hw/xfree86/common/xf86Xinput.c 2025-02-26 01:56:05.000000000 +0700 ++++ source-new/hw/xfree86/common/xf86Xinput.c 2025-10-28 06:15:47.428141477 +0700 @@ -860,8 +860,10 @@ if (stat(path, &st) == -1) return; @@ -12,9 +12,9 @@ diff -ruwN xorg-server-21.1.16/hw/xfree86/common/xf86Xinput.c source/hw/xfree86/ } static inline InputDriverPtr -diff -ruwN xorg-server-21.1.16/hw/xfree86/loader/meson.build source/hw/xfree86/loader/meson.build ---- xorg-server-21.1.16/hw/xfree86/loader/meson.build 2025-02-25 11:56:05.000000000 -0700 -+++ source/hw/xfree86/loader/meson.build 2025-05-03 11:28:37.267757875 -0600 +diff -ruwN source/hw/xfree86/loader/meson.build source-new/hw/xfree86/loader/meson.build +--- source/hw/xfree86/loader/meson.build 2025-02-26 01:56:05.000000000 +0700 ++++ source-new/hw/xfree86/loader/meson.build 2025-10-28 06:15:47.428567423 +0700 @@ -10,7 +10,7 @@ c_args: xorg_c_args, ) @@ -27,9 +27,9 @@ diff -ruwN xorg-server-21.1.16/hw/xfree86/loader/meson.build source/hw/xfree86/l +# 'symbol-test.c', +# dependencies: dl_dep, +# ) -diff -ruwN xorg-server-21.1.16/hw/xfree86/meson.build source/hw/xfree86/meson.build ---- xorg-server-21.1.16/hw/xfree86/meson.build 2025-02-25 11:56:05.000000000 -0700 -+++ source/hw/xfree86/meson.build 2025-05-03 11:28:37.267757875 -0600 +diff -ruwN source/hw/xfree86/meson.build source-new/hw/xfree86/meson.build +--- source/hw/xfree86/meson.build 2025-02-26 01:56:05.000000000 +0700 ++++ source-new/hw/xfree86/meson.build 2025-10-28 06:15:47.428791657 +0700 @@ -171,13 +171,13 @@ ) endif @@ -51,9 +51,9 @@ diff -ruwN xorg-server-21.1.16/hw/xfree86/meson.build source/hw/xfree86/meson.bu # For symbol presence testing only xorgserver_lib = shared_library( -diff -ruwN xorg-server-21.1.16/hw/xfree86/os-support/shared/sigio.c source/hw/xfree86/os-support/shared/sigio.c ---- xorg-server-21.1.16/hw/xfree86/os-support/shared/sigio.c 2025-02-25 11:56:05.000000000 -0700 -+++ source/hw/xfree86/os-support/shared/sigio.c 2025-05-03 11:28:37.267757875 -0600 +diff -ruwN source/hw/xfree86/os-support/shared/sigio.c source-new/hw/xfree86/os-support/shared/sigio.c +--- source/hw/xfree86/os-support/shared/sigio.c 2025-02-26 01:56:05.000000000 +0700 ++++ source-new/hw/xfree86/os-support/shared/sigio.c 2025-10-28 06:15:47.429003549 +0700 @@ -196,11 +196,12 @@ fd, strerror(errno)); } @@ -68,9 +68,9 @@ diff -ruwN xorg-server-21.1.16/hw/xfree86/os-support/shared/sigio.c source/hw/xf installed = TRUE; } } -diff -ruwN xorg-server-21.1.16/hw/xfree86/os-support/xf86_OSlib.h source/hw/xfree86/os-support/xf86_OSlib.h ---- xorg-server-21.1.16/hw/xfree86/os-support/xf86_OSlib.h 2025-02-25 11:56:05.000000000 -0700 -+++ source/hw/xfree86/os-support/xf86_OSlib.h 2025-05-03 11:28:37.267757875 -0600 +diff -ruwN source/hw/xfree86/os-support/xf86_OSlib.h source-new/hw/xfree86/os-support/xf86_OSlib.h +--- source/hw/xfree86/os-support/xf86_OSlib.h 2025-02-26 01:56:05.000000000 +0700 ++++ source-new/hw/xfree86/os-support/xf86_OSlib.h 2025-10-28 06:15:47.429244885 +0700 @@ -176,7 +176,7 @@ /**************************************************************************/ /* Linux or Glibc-based system */ @@ -80,9 +80,51 @@ diff -ruwN xorg-server-21.1.16/hw/xfree86/os-support/xf86_OSlib.h source/hw/xfre #include #include #include -diff -ruwN xorg-server-21.1.16/include/meson.build source/include/meson.build ---- xorg-server-21.1.16/include/meson.build 2025-02-25 11:56:05.000000000 -0700 -+++ source/include/meson.build 2025-09-15 08:40:00.484333455 -0600 +diff -ruwN source/include/dix.h source-new/include/dix.h +--- source/include/dix.h 2025-02-26 01:56:05.000000000 +0700 ++++ source-new/include/dix.h 2025-10-29 14:34:52.026472055 +0700 +@@ -55,6 +55,7 @@ + #include "geext.h" + #include "events.h" + #include ++#include + + #define EARLIER -1 + #define SAMETIME 0 +@@ -69,14 +70,28 @@ + + #define REQUEST_SIZE_MATCH(req) \ + do { \ +- if ((sizeof(req) >> 2) != client->req_len) \ ++ if ((sizeof(req) >> 2) != client->req_len) { \ ++ fprintf(stderr, \ ++ "REQUEST_SIZE_MATCH failed in %s:%d: " \ ++ "Expected len %lu, got %d\n", \ ++ __FILE__, __LINE__, \ ++ (unsigned long)(sizeof(req) >> 2), \ ++ client->req_len); \ + return(BadLength); \ ++ } \ + } while (0) + + #define REQUEST_AT_LEAST_SIZE(req) \ + do { \ +- if ((sizeof(req) >> 2) > client->req_len) \ ++ if ((sizeof(req) >> 2) > client->req_len) { \ ++ fprintf(stderr, \ ++ "REQUEST_AT_LEAST_SIZE failed in %s:%d: " \ ++ "Expected len %lu, got %d\n", \ ++ __FILE__, __LINE__, \ ++ (unsigned long)(sizeof(req) >> 2), \ ++ client->req_len); \ + return(BadLength); \ ++ } \ + } while (0) + + #define REQUEST_AT_LEAST_EXTRA_SIZE(req, extra) \ +diff -ruwN source/include/meson.build source-new/include/meson.build +--- source/include/meson.build 2025-02-26 01:56:05.000000000 +0700 ++++ source-new/include/meson.build 2025-10-28 06:15:47.429576623 +0700 @@ -162,7 +162,7 @@ conf_data.set('HAVE_PORT_CREATE', cc.has_function('port_create') ? '1' : false) conf_data.set('HAVE_REALLOCARRAY', cc.has_function('reallocarray', dependencies: libbsd_dep) ? '1' : false) @@ -121,9 +163,9 @@ diff -ruwN xorg-server-21.1.16/include/meson.build source/include/meson.build endif conf_data.set('HAS_SHM', build_mitshm ? '1' : false) conf_data.set('MITSHM', build_mitshm ? '1' : false) -diff -ruwN xorg-server-21.1.16/meson.build source/meson.build ---- xorg-server-21.1.16/meson.build 2025-02-25 11:56:05.000000000 -0700 -+++ source/meson.build 2025-05-03 11:28:37.267757875 -0600 +diff -ruwN source/meson.build source-new/meson.build +--- source/meson.build 2025-02-26 01:56:05.000000000 +0700 ++++ source-new/meson.build 2025-10-28 06:15:47.429860210 +0700 @@ -753,7 +753,7 @@ subdir('hw') @@ -133,9 +175,9 @@ diff -ruwN xorg-server-21.1.16/meson.build source/meson.build endif install_man(configure_file( -diff -ruwN xorg-server-21.1.16/os/access.c source/os/access.c ---- xorg-server-21.1.16/os/access.c 2025-02-25 11:56:05.000000000 -0700 -+++ source/os/access.c 2025-05-03 11:28:37.267757875 -0600 +diff -ruwN source/os/access.c source-new/os/access.c +--- source/os/access.c 2025-02-26 01:56:05.000000000 +0700 ++++ source-new/os/access.c 2025-10-28 06:15:47.430186258 +0700 @@ -120,7 +120,7 @@ #include #endif @@ -145,3 +187,16 @@ diff -ruwN xorg-server-21.1.16/os/access.c source/os/access.c #include #endif #if defined(SYSV) && defined(__i386__) +diff -ruwN source/Xext/bigreq.c source-new/Xext/bigreq.c +--- source/Xext/bigreq.c 2025-02-26 01:56:05.000000000 +0700 ++++ source-new/Xext/bigreq.c 2025-10-29 14:35:38.059611562 +0700 +@@ -51,7 +51,8 @@ + } + if (stuff->brReqType != X_BigReqEnable) + return BadRequest; +- REQUEST_SIZE_MATCH(xBigReqEnableReq); ++ // libxkbcommon sends incorrect size ++ REQUEST_AT_LEAST_SIZE(xBigReqEnableReq); + client->big_requests = TRUE; + rep = (xBigReqEnableReply) { + .type = X_Reply, From 9f300ab9b8893b22af4f99fd3b808a1c5e418dff Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 29 Oct 2025 07:25:45 -0600 Subject: [PATCH 2987/3180] love: fix compilation --- recipes/wip/games/other/love/recipe.toml | 6 ++--- recipes/wip/games/other/love/redox.patch | 33 +++++++++++++++--------- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/recipes/wip/games/other/love/recipe.toml b/recipes/wip/games/other/love/recipe.toml index e91b4d71..c4fd36f5 100644 --- a/recipes/wip/games/other/love/recipe.toml +++ b/recipes/wip/games/other/love/recipe.toml @@ -68,8 +68,8 @@ COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_VERBOSE_MAKEFILE=ON -DOPENGL_opengl_LIBRARY="/dev/null" -DOPENGL_glx_LIBRARY="/dev/null" - #TODO: This is a hack to add more libraries - -DCMAKE_CXX_STANDARD_LIBRARIES="${LIBS[*]}" + -DSDL2_INCLUDE_DIRS="${COOKBOOK_SYSROOT}/include/SDL2" + -DSDL2_LIBRARIES="${LIBS[*]}" "${COOKBOOK_SOURCE}" ) "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" @@ -77,4 +77,4 @@ COOKBOOK_CONFIGURE_FLAGS=( # make install not possible, just copy love mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v love "${COOKBOOK_STAGE}/usr/bin/love" -""" \ No newline at end of file +""" diff --git a/recipes/wip/games/other/love/redox.patch b/recipes/wip/games/other/love/redox.patch index 08c6e49d..c02f25d2 100644 --- a/recipes/wip/games/other/love/redox.patch +++ b/recipes/wip/games/other/love/redox.patch @@ -1,7 +1,18 @@ -diff --git a/src/common/config.h b/src/common/config.h -index 5679849c..2188d8e5 100644 ---- a/src/common/config.h -+++ b/src/common/config.h +diff -ruwN source-old/CMakeLists.txt source/CMakeLists.txt +--- source-old/CMakeLists.txt 2023-12-03 05:44:36.000000000 -0700 ++++ source/CMakeLists.txt 2025-10-29 07:23:56.896601947 -0600 +@@ -188,7 +188,7 @@ + find_package(ModPlug REQUIRED) + find_package(OpenAL REQUIRED) + find_package(OpenGL REQUIRED) +- find_package(SDL2 REQUIRED CONFIG COMPONENTS SDL2main) ++ #find_package(SDL2 REQUIRED CONFIG COMPONENTS SDL2main) + find_package(Theora REQUIRED) + find_package(Vorbis REQUIRED) + find_package(ZLIB REQUIRED) +diff -ruwN source-old/src/common/config.h source/src/common/config.h +--- source-old/src/common/config.h 2023-12-03 05:44:36.000000000 -0700 ++++ source/src/common/config.h 2025-10-28 18:38:57.870055872 -0600 @@ -48,7 +48,7 @@ # define LOVE_MACOSX 1 # endif @@ -11,10 +22,9 @@ index 5679849c..2188d8e5 100644 // I know it's not linux, but it seems most "linux-only" code is bsd-compatible # define LOVE_LINUX 1 #endif -diff --git a/src/libraries/luasocket/libluasocket/compat.c b/src/libraries/luasocket/libluasocket/compat.c -index c2d99cb2..d887d5e1 100644 ---- a/src/libraries/luasocket/libluasocket/compat.c -+++ b/src/libraries/luasocket/libluasocket/compat.c +diff -ruwN source-old/src/libraries/luasocket/libluasocket/compat.c source/src/libraries/luasocket/libluasocket/compat.c +--- source-old/src/libraries/luasocket/libluasocket/compat.c 2023-12-03 05:44:36.000000000 -0700 ++++ source/src/libraries/luasocket/libluasocket/compat.c 2025-10-28 18:38:57.870118680 -0600 @@ -1,6 +1,6 @@ #include "compat.h" @@ -23,10 +33,9 @@ index c2d99cb2..d887d5e1 100644 /* ** Adapted from Lua 5.2 */ -diff --git a/src/libraries/luasocket/libluasocket/compat.h b/src/libraries/luasocket/libluasocket/compat.h -index 7bf8010e..5ae2853f 100644 ---- a/src/libraries/luasocket/libluasocket/compat.h -+++ b/src/libraries/luasocket/libluasocket/compat.h +diff -ruwN source-old/src/libraries/luasocket/libluasocket/compat.h source/src/libraries/luasocket/libluasocket/compat.h +--- source-old/src/libraries/luasocket/libluasocket/compat.h 2023-12-03 05:44:36.000000000 -0700 ++++ source/src/libraries/luasocket/libluasocket/compat.h 2025-10-28 18:38:57.870166330 -0600 @@ -4,7 +4,7 @@ #include "lua.h" #include "lauxlib.h" From ea324b26ece9272c3a9dcda65388cfce9f574d51 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 29 Oct 2025 10:09:58 -0600 Subject: [PATCH 2988/3180] leftwm: add WIP recipe --- recipes/wip/x11/leftwm/recipe.toml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 recipes/wip/x11/leftwm/recipe.toml diff --git a/recipes/wip/x11/leftwm/recipe.toml b/recipes/wip/x11/leftwm/recipe.toml new file mode 100644 index 00000000..8a738d33 --- /dev/null +++ b/recipes/wip/x11/leftwm/recipe.toml @@ -0,0 +1,12 @@ +#TODO: needs mkfifo in nix crate +[source] +git = "https://github.com/leftwm/leftwm" + +[build] +dependencies = [] +template = "custom" +script = """ +DYNAMIC_INIT +COOKBOOK_SOURCE="${COOKBOOK_SOURCE}/leftwm" +cookbook_cargo +""" From ffa547eb9f085f570a96951ca99c18f340a6dad1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 29 Oct 2025 10:15:20 -0600 Subject: [PATCH 2989/3180] Rename xserver-xorg-video-dummy to xserver-xorg-video-orbital --- recipes/groups/x11-minimal/recipe.toml | 2 +- .../recipe.toml | 1 + .../redox.patch | 0 3 files changed, 2 insertions(+), 1 deletion(-) rename recipes/wip/x11/{xserver-xorg-video-dummy => xserver-xorg-video-orbital}/recipe.toml (95%) rename recipes/wip/x11/{xserver-xorg-video-dummy => xserver-xorg-video-orbital}/redox.patch (100%) diff --git a/recipes/groups/x11-minimal/recipe.toml b/recipes/groups/x11-minimal/recipe.toml index 2e441221..3ed893af 100644 --- a/recipes/groups/x11-minimal/recipe.toml +++ b/recipes/groups/x11-minimal/recipe.toml @@ -4,5 +4,5 @@ dependencies = [ "xkbcomp", "xkeyboard-config", "xserver-xorg", - "xserver-xorg-video-dummy", + "xserver-xorg-video-orbital", ] diff --git a/recipes/wip/x11/xserver-xorg-video-dummy/recipe.toml b/recipes/wip/x11/xserver-xorg-video-orbital/recipe.toml similarity index 95% rename from recipes/wip/x11/xserver-xorg-video-dummy/recipe.toml rename to recipes/wip/x11/xserver-xorg-video-orbital/recipe.toml index deae80a9..55dd3328 100644 --- a/recipes/wip/x11/xserver-xorg-video-dummy/recipe.toml +++ b/recipes/wip/x11/xserver-xorg-video-orbital/recipe.toml @@ -1,3 +1,4 @@ +# x11 video driver for running inside of orbital [source] tar = "https://www.x.org/releases/individual/driver/xf86-video-dummy-0.4.1.tar.xz" blake3 = "9b49296f62bf4d22345d87fc01f2a5571f941457c19d21c8800f8f6d2e64ae67" diff --git a/recipes/wip/x11/xserver-xorg-video-dummy/redox.patch b/recipes/wip/x11/xserver-xorg-video-orbital/redox.patch similarity index 100% rename from recipes/wip/x11/xserver-xorg-video-dummy/redox.patch rename to recipes/wip/x11/xserver-xorg-video-orbital/redox.patch From 5eb94517d48f25e5491dd9ee2ad71eef593f945b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 29 Oct 2025 11:33:00 -0600 Subject: [PATCH 2990/3180] xserver-xorg-video-orbital: move screen config to image and use borderless mode --- .../xserver-xorg-video-orbital/recipe.toml | 27 ------------------- .../xserver-xorg-video-orbital/redox.patch | 14 +++++----- 2 files changed, 7 insertions(+), 34 deletions(-) diff --git a/recipes/wip/x11/xserver-xorg-video-orbital/recipe.toml b/recipes/wip/x11/xserver-xorg-video-orbital/recipe.toml index 55dd3328..46da862b 100644 --- a/recipes/wip/x11/xserver-xorg-video-orbital/recipe.toml +++ b/recipes/wip/x11/xserver-xorg-video-orbital/recipe.toml @@ -20,31 +20,4 @@ script = """ DYNAMIC_INIT export LIBS="-lorbital" cookbook_configure - -mkdir -p "${COOKBOOK_STAGE}/usr/share/X11/xorg.conf.d" -cat > "${COOKBOOK_STAGE}/usr/share/X11/xorg.conf.d/orbital.conf" < @@ -137,7 +137,7 @@ diff -ruwN xf86-video-dummy-0.4.1/src/dummy_driver.c source/src/dummy_driver.c + "orb_window_new %d, %d\n", + pScrn->virtualX, pScrn->virtualY + ); -+ dPtr->orb_window = orb_window_new_flags(-1, -1, pScrn->virtualX, pScrn->virtualY, "X11", ORB_WINDOW_ASYNC); ++ dPtr->orb_window = orb_window_new_flags(-1, -1, pScrn->virtualX, pScrn->virtualY, "X11", ORB_WINDOW_ASYNC | ORB_WINDOW_BORDERLESS); + if (!dPtr->orb_window) { + printf("failed to open orbital window\n"); return FALSE; @@ -251,9 +251,9 @@ diff -ruwN xf86-video-dummy-0.4.1/src/dummy_driver.c source/src/dummy_driver.c static Bool DUMMYCreateWindow(WindowPtr pWin) { -diff -ruwN xf86-video-dummy-0.4.1/src/dummy.h source/src/dummy.h ---- xf86-video-dummy-0.4.1/src/dummy.h 2023-05-07 14:27:44.000000000 -0600 -+++ source/src/dummy.h 2025-05-09 20:41:33.547464718 -0600 +diff -ruwN source-old/src/dummy.h source/src/dummy.h +--- source-old/src/dummy.h 2023-05-07 14:27:44.000000000 -0600 ++++ source/src/dummy.h 2025-10-29 10:11:23.172517830 -0600 @@ -4,6 +4,7 @@ #include "xf86_OSproc.h" From fcdab4fd379c226b2056103669d78dddd5ecdb8a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 29 Oct 2025 11:50:37 -0600 Subject: [PATCH 2991/3180] pango: enable pangoxft --- recipes/libs/pango/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/libs/pango/recipe.toml b/recipes/libs/pango/recipe.toml index 6ea4fcb5..8080ad3c 100644 --- a/recipes/libs/pango/recipe.toml +++ b/recipes/libs/pango/recipe.toml @@ -21,6 +21,7 @@ dependencies = [ "libxau", "libxcb", "libxext", + "libxft", "libxrender", "pcre", "pcre2", From 4f62ca6eaff67f42ed5fbb4891bfddac34aeba3a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 29 Oct 2025 12:04:01 -0600 Subject: [PATCH 2992/3180] Add openbox --- recipes/wip/x11/openbox/recipe.toml | 42 +++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 recipes/wip/x11/openbox/recipe.toml diff --git a/recipes/wip/x11/openbox/recipe.toml b/recipes/wip/x11/openbox/recipe.toml new file mode 100644 index 00000000..ca0668c7 --- /dev/null +++ b/recipes/wip/x11/openbox/recipe.toml @@ -0,0 +1,42 @@ +#TODO: launches but has segfaults at runtime +[source] +tar = "https://openbox.org/dist/openbox/openbox-3.6.1.tar.xz" +blake3 = "6bf434e52e04a9cfcd67c11cb9105b93fe2055dca49f1bed2c105fd117e88ef4" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "cairo", + "expat", + "fontconfig", + "freetype2", + "fribidi", + "gettext", + "glib", + "harfbuzz", + "libffi", + "libiconv", + "libpng", + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "libxext", + "libxft", + "libxml2", + "libxrender", + "pango", + "pcre2", + "pixman", + "x11proto", + "xz", + "zlib", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From 11eb31261b5e4f3368928c6f3dacd640e35f7a20 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 29 Oct 2025 13:07:49 -0600 Subject: [PATCH 2993/3180] Add wip feh recipe --- recipes/wip/x11/feh/recipe.toml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 recipes/wip/x11/feh/recipe.toml diff --git a/recipes/wip/x11/feh/recipe.toml b/recipes/wip/x11/feh/recipe.toml new file mode 100644 index 00000000..fab5eacb --- /dev/null +++ b/recipes/wip/x11/feh/recipe.toml @@ -0,0 +1,29 @@ +#TODO: imlib2 needs sys/ipc.h and sys/shm.h for X11 feature +[source] +tar = "https://feh.finalrewind.org/feh-3.11.2.tar.bz2" +blake3 = "b9d704e0b37d99068cbc76d2b73c3b6ef673612060d7cfef0f5a3e8886255276" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "freetype2", + "imlib2", + "libpng", + "libxau", + "libxcb", + "libx11", + "libxt", + "x11proto", + "zlib", +] +template = "custom" +script = """ +DYNAMIC_INIT +rsync -a --delete "${COOKBOOK_SOURCE}/" ./ +export LDLIBS="$("${PKG_CONFIG}" --libs freetype2 imlib2 libpng x11)" +export PREFIX="/usr" +"${COOKBOOK_MAKE}" curl=0 verscmp=0 xinerama=0 +""" From 418921621f010e4d6cf2edc79058de30826cc14d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 29 Oct 2025 13:53:32 -0600 Subject: [PATCH 2994/3180] Add jwm --- recipes/wip/x11/jwm/recipe.toml | 45 +++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 recipes/wip/x11/jwm/recipe.toml diff --git a/recipes/wip/x11/jwm/recipe.toml b/recipes/wip/x11/jwm/recipe.toml new file mode 100644 index 00000000..70d08d5e --- /dev/null +++ b/recipes/wip/x11/jwm/recipe.toml @@ -0,0 +1,45 @@ +[source] +tar = "https://github.com/joewing/jwm/releases/download/v2.4.6/jwm-2.4.6.tar.xz" +blake3 = "08d69eee4584ba9346d4f326581e8538247a37d6fe11dd8604de7a8a7adbdd51" + +[build] +dependencies = [ + "cairo", + "expat", + "fontconfig", + "freetype2", + "fribidi", + "gettext", + "glib", + "harfbuzz", + "libffi", + "libice", + "libiconv", + "libjpeg", + "libpng", + "libpthread-stubs", + #TODO for SVG support: "librsvg", + "libsm", + "libx11", + "libxau", + "libxcb", + "libxext", + "libxft", + "libxmu", + "libxpm", + "libxrender", + "libxt", + "pango", + "pcre2", + "pixman", + "x11proto", + "zlib", +] +template = "custom" +script = """ +DYNAMIC_INIT +export LIBS="-liconv -lintl" +rsync -a --delete "${COOKBOOK_SOURCE}/" ./ +COOKBOOK_CONFIGURE="./configure" +cookbook_configure +""" From 379b797492e6ad04ea371813b988806e9e78fee5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 29 Oct 2025 15:32:41 -0600 Subject: [PATCH 2995/3180] gdk-pixbuf: update to 2.44.4 --- recipes/dev/gdk-pixbuf/recipe.toml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/recipes/dev/gdk-pixbuf/recipe.toml b/recipes/dev/gdk-pixbuf/recipe.toml index 7ae9aa5c..0828868b 100644 --- a/recipes/dev/gdk-pixbuf/recipe.toml +++ b/recipes/dev/gdk-pixbuf/recipe.toml @@ -1,6 +1,6 @@ [source] -tar = "https://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/2.38/gdk-pixbuf-2.38.1.tar.xz" -blake3 = "131cf94d458bf353e42993714477e746fe3f1e4d39cb4acd4c82a5d5e341679b" +tar = "https://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/2.44/gdk-pixbuf-2.44.4.tar.xz" +blake3 = "94db7bebffbd6be84a1b58a05771e411e9f7c16b06d73fcedaf0e6c0e552be9c" patches = ["redox.patch"] [build] @@ -18,7 +18,6 @@ dependencies = [ template = "meson" mesonflags = [ "-Dbuiltin_loaders=all", - "-Dgir=false", "-Dinstalled_tests=false", - "-Dx11=false", + "-Dman=false", ] From b98ab1159bfbf11411b0c2a12d15c1f508710805 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 29 Oct 2025 17:06:11 -0600 Subject: [PATCH 2996/3180] Add libwnck3 --- recipes/wip/libs/gtk/libwnck3/recipe.toml | 45 +++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 recipes/wip/libs/gtk/libwnck3/recipe.toml diff --git a/recipes/wip/libs/gtk/libwnck3/recipe.toml b/recipes/wip/libs/gtk/libwnck3/recipe.toml new file mode 100644 index 00000000..a862289e --- /dev/null +++ b/recipes/wip/libs/gtk/libwnck3/recipe.toml @@ -0,0 +1,45 @@ +[source] +tar = "https://download.gnome.org/sources/libwnck/3.36/libwnck-3.36.0.tar.xz" +blake3 = "5a7913968932c38bcb04dbb6410b1fc00dc653a600ab7a4899ee75bd5581323d" + +[build] +dependencies = [ + "atk", + "cairo", + "expat", + "fontconfig", + "freetype2", + "fribidi", + "gdk-pixbuf", + "gettext", + "glib", + "gtk3", + "harfbuzz", + "libepoxy", + "libffi", + "libiconv", + "libjpeg", + "libpng", + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "libxext", + "libxfixes", + "libxft", + "libxi", + "libxrandr", + "libxrender", + "libxxf86vm", + "mesa-x11", + "pango", + "pcre2", + "pixman", + "shared-mime-info", + "x11proto", + "zlib", +] +template = "meson" +mesonflags = [ + "-Dintrospection=disabled", +] From a84d8dd365e2b548060ca4a12bdef71e5b62463f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 29 Oct 2025 17:06:40 -0600 Subject: [PATCH 2997/3180] Add xfce libraries --- recipes/wip/x11/xfce4/libxfce4ui/recipe.toml | 47 +++++++++++++++++++ .../wip/x11/xfce4/libxfce4util/recipe.toml | 17 +++++++ recipes/wip/x11/xfce4/xfconf/recipe.toml | 18 +++++++ 3 files changed, 82 insertions(+) create mode 100644 recipes/wip/x11/xfce4/libxfce4ui/recipe.toml create mode 100644 recipes/wip/x11/xfce4/libxfce4util/recipe.toml create mode 100644 recipes/wip/x11/xfce4/xfconf/recipe.toml diff --git a/recipes/wip/x11/xfce4/libxfce4ui/recipe.toml b/recipes/wip/x11/xfce4/libxfce4ui/recipe.toml new file mode 100644 index 00000000..1801e15e --- /dev/null +++ b/recipes/wip/x11/xfce4/libxfce4ui/recipe.toml @@ -0,0 +1,47 @@ +[source] +tar = "https://archive.xfce.org/src/xfce/libxfce4ui/4.21/libxfce4ui-4.21.2.tar.xz" +blake3 = "027adb15e74b6df534bc526ec0e1056fede33cf2e69ce802391fb1f714350015" + +[build] +dependencies = [ + "atk", + "cairo", + "expat", + "fontconfig", + "freetype2", + "fribidi", + "gdk-pixbuf", + "gettext", + "glib", + "gtk3", + "harfbuzz", + "libepoxy", + "libffi", + "libiconv", + "libjpeg", + "libpng", + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "libxext", + "libxfce4util", + "libxfixes", + "libxft", + "libxi", + "libxrandr", + "libxrender", + "libxxf86vm", + "mesa-x11", + "pango", + "pcre2", + "pixman", + "shared-mime-info", + "x11proto", + "xfconf", + "zlib", +] +template = "meson" +mesonflags = [ + "-Dintrospection=false", +] diff --git a/recipes/wip/x11/xfce4/libxfce4util/recipe.toml b/recipes/wip/x11/xfce4/libxfce4util/recipe.toml new file mode 100644 index 00000000..d5360ea1 --- /dev/null +++ b/recipes/wip/x11/xfce4/libxfce4util/recipe.toml @@ -0,0 +1,17 @@ +[source] +tar = "https://archive.xfce.org/src/xfce/libxfce4util/4.20/libxfce4util-4.20.1.tar.bz2" +blake3 = "d64d8c016e48fb21b4c76914b75e256670c5fe2bff4c3b54f76e56cf1a50cb8a" + +[build] +dependencies = [ + "gettext", + "glib", + "libffi", + "libiconv", + "pcre2", + "zlib", +] +template = "meson" +mesonflags = [ + "-Dintrospection=false", +] diff --git a/recipes/wip/x11/xfce4/xfconf/recipe.toml b/recipes/wip/x11/xfce4/xfconf/recipe.toml new file mode 100644 index 00000000..40e06df1 --- /dev/null +++ b/recipes/wip/x11/xfce4/xfconf/recipe.toml @@ -0,0 +1,18 @@ +[source] +tar = "https://archive.xfce.org/src/xfce/xfconf/4.21/xfconf-4.21.0.tar.xz" +blake3 = "588bc6768775221a50d8cdd8480854a360b1343193115b639daf225aa34b97d7" + +[build] +dependencies = [ + "gettext", + "glib", + "libffi", + "libiconv", + "libxfce4util", + "pcre2", + "zlib", +] +template = "meson" +mesonflags = [ + "-Dintrospection=false", +] From f96358b4d488fdf78238d24991a395ae6fa3622a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 29 Oct 2025 17:10:14 -0600 Subject: [PATCH 2998/3180] Add xinerama --- recipes/wip/x11/libxinerama/recipe.toml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 recipes/wip/x11/libxinerama/recipe.toml diff --git a/recipes/wip/x11/libxinerama/recipe.toml b/recipes/wip/x11/libxinerama/recipe.toml new file mode 100644 index 00000000..8ae9962d --- /dev/null +++ b/recipes/wip/x11/libxinerama/recipe.toml @@ -0,0 +1,22 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/libXinerama-1.1.5.tar.xz" +blake3 = "58b4020c8a8fb62707f5073f967bf8abbc8dc7cff35c5750fabe097f46a924b4" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "libxext", + "x11proto", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure --enable-malloc0returnsnull +""" From 0071e080524209f91184d27e11a7c3e7fb57e764 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 29 Oct 2025 17:18:34 -0600 Subject: [PATCH 2999/3180] Add xfwm4 --- recipes/wip/x11/xfce4/xfwm4/recipe.toml | 53 +++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 recipes/wip/x11/xfce4/xfwm4/recipe.toml diff --git a/recipes/wip/x11/xfce4/xfwm4/recipe.toml b/recipes/wip/x11/xfce4/xfwm4/recipe.toml new file mode 100644 index 00000000..d83c3990 --- /dev/null +++ b/recipes/wip/x11/xfce4/xfwm4/recipe.toml @@ -0,0 +1,53 @@ +[source] +tar = "https://archive.xfce.org/src/xfce/xfwm4/4.20/xfwm4-4.20.0.tar.bz2" +blake3 = "1c48e0fd80ef674a1d6cd8b3ab2452e87ab1597693f99c3217d271070b5ba8c2" + +[build] +dependencies = [ + "atk", + "cairo", + "expat", + "fontconfig", + "freetype2", + "fribidi", + "gdk-pixbuf", + "gettext", + "glib", + "gtk3", + "harfbuzz", + "libepoxy", + "libffi", + "libice", + "libiconv", + "libjpeg", + "libpng", + "libpthread-stubs", + "libwnck3", + "libx11", + "libxau", + "libxcb", + "libxext", + "libxfce4ui", + "libxfce4util", + "libxfixes", + "libxft", + "libxi", + "libxinerama", + "libxrandr", + "libxrender", + "libxxf86vm", + "mesa-x11", + "pango", + "pcre2", + "pixman", + "shared-mime-info", + "x11proto", + "xfconf", + "zlib", +] +template = "custom" +script = """ +DYNAMIC_INIT +export LIBS="$("${PKG_CONFIG}" --libs libxfce4util-1.0 x11)" +cookbook_configure --disable-silent-rules +""" From adbb0327804dd34386c787895afb662ef596bdef Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 29 Oct 2025 17:41:47 -0600 Subject: [PATCH 3000/3180] dbus: update and enable X11 autolaunch --- recipes/wip/services/dbus/recipe.toml | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/recipes/wip/services/dbus/recipe.toml b/recipes/wip/services/dbus/recipe.toml index faea5d4a..6bd09ed1 100644 --- a/recipes/wip/services/dbus/recipe.toml +++ b/recipes/wip/services/dbus/recipe.toml @@ -1,9 +1,19 @@ -#TODO missing Unix domain sockets support -#TODO compilation error [source] -tar = "https://dbus.freedesktop.org/releases/dbus/dbus-1.14.10.tar.xz" +tar = "https://dbus.freedesktop.org/releases/dbus/dbus-1.16.2.tar.xz" +blake3 = "b1d1f22858a8f04665e5dca29d194f892620f00fd3e3f4e89dd208e78868436e" + [build] -template = "configure" dependencies = [ "expat", + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "x11proto", +] +template = "meson" +mesonflags = [ + #TODO: why does this require Linux? + "-Depoll=disabled", + "-Dx11_autolaunch=enabled", ] From 66431b06e3e61ff02b703d047c019f6025df7dae Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 29 Oct 2025 22:45:09 -0300 Subject: [PATCH 3001/3180] Add recipes --- recipes/wip/dev/lang/lacc/recipe.toml | 6 ++++++ recipes/wip/dev/lang/scc/recipe.toml | 9 +++++++++ recipes/wip/dev/lang/tcc/recipe.toml | 6 ++++++ recipes/wip/files/mc/recipe.toml | 13 +++++++++++++ recipes/wip/net/bittorrent/btpd/recipe.toml | 10 ++++++++++ recipes/wip/net/http/thttpd/recipe.toml | 6 ++++++ recipes/wip/security/pass/recipe.toml | 6 ++++++ recipes/wip/sound/mpd/recipe.toml | 6 ++++++ recipes/wip/sound/rmpc/recipe.toml | 5 +++++ recipes/wip/web/surf/recipe.toml | 9 +++++++++ 10 files changed, 76 insertions(+) create mode 100644 recipes/wip/dev/lang/lacc/recipe.toml create mode 100644 recipes/wip/dev/lang/scc/recipe.toml create mode 100644 recipes/wip/dev/lang/tcc/recipe.toml create mode 100644 recipes/wip/files/mc/recipe.toml create mode 100644 recipes/wip/net/bittorrent/btpd/recipe.toml create mode 100644 recipes/wip/net/http/thttpd/recipe.toml create mode 100644 recipes/wip/security/pass/recipe.toml create mode 100644 recipes/wip/sound/mpd/recipe.toml create mode 100644 recipes/wip/sound/rmpc/recipe.toml create mode 100644 recipes/wip/web/surf/recipe.toml diff --git a/recipes/wip/dev/lang/lacc/recipe.toml b/recipes/wip/dev/lang/lacc/recipe.toml new file mode 100644 index 00000000..445575ef --- /dev/null +++ b/recipes/wip/dev/lang/lacc/recipe.toml @@ -0,0 +1,6 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/larmel/lacc" +rev = "30839843daaff9d87574b5854854c9ee4610cdcd" +[build] +template = "configure" diff --git a/recipes/wip/dev/lang/scc/recipe.toml b/recipes/wip/dev/lang/scc/recipe.toml new file mode 100644 index 00000000..9e681b4e --- /dev/null +++ b/recipes/wip/dev/lang/scc/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for gnu make +# build instructions: https://git.simple-cc.org/scc/file/README.html +[source] +git = "https://git.simple-cc.org/scc/" +rev = "1ed0ff0000999561feee336c289252faf2502a7e" +[build] +template = "custom" +[package] +dependencies = ["qbe"] diff --git a/recipes/wip/dev/lang/tcc/recipe.toml b/recipes/wip/dev/lang/tcc/recipe.toml new file mode 100644 index 00000000..76ca7307 --- /dev/null +++ b/recipes/wip/dev/lang/tcc/recipe.toml @@ -0,0 +1,6 @@ +#TODO not compiled or tested +# build instructions: https://repo.or.cz/tinycc.git/blob/HEAD:/README +[source] +tar = "https://download.savannah.nongnu.org/releases/tinycc/tcc-0.9.27.tar.bz2" +[build] +template = "configure" diff --git a/recipes/wip/files/mc/recipe.toml b/recipes/wip/files/mc/recipe.toml new file mode 100644 index 00000000..1659d9da --- /dev/null +++ b/recipes/wip/files/mc/recipe.toml @@ -0,0 +1,13 @@ +#TODO not compiled or tested +# build instructions: https://github.com/MidnightCommander/mc/blob/master/doc/INSTALL +[source] +tar = "https://ftp.osuosl.org/pub/midnightcommander/mc-4.8.33.tar.xz" +[build] +template = "configure" +configureflags = [ + "--without-x", + "--without-gpm-mouse", +] +dependencies = [ + "ncurses", +] diff --git a/recipes/wip/net/bittorrent/btpd/recipe.toml b/recipes/wip/net/bittorrent/btpd/recipe.toml new file mode 100644 index 00000000..a37033a6 --- /dev/null +++ b/recipes/wip/net/bittorrent/btpd/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +# build instructions: https://github.com/btpd/btpd?tab=readme-ov-file#building +[source] +git = "https://github.com/btpd/btpd" +rev = "a3a10dfe1ece4a726530353a7b208c0cb4ff7e0d" +[build] +template = "configure" +dependencies = [ + "openssl3", +] diff --git a/recipes/wip/net/http/thttpd/recipe.toml b/recipes/wip/net/http/thttpd/recipe.toml new file mode 100644 index 00000000..8946f7ac --- /dev/null +++ b/recipes/wip/net/http/thttpd/recipe.toml @@ -0,0 +1,6 @@ +#TODO not compiled or tested +# build instructions: read the INSTALL file +[source] +tar = "https://acme.com/software/thttpd/thttpd-2.29.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/security/pass/recipe.toml b/recipes/wip/security/pass/recipe.toml new file mode 100644 index 00000000..95747375 --- /dev/null +++ b/recipes/wip/security/pass/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for gnu make: https://git.zx2c4.com/password-store/tree/INSTALL +#TODO determine compile-time and run-time dependencies: https://git.zx2c4.com/password-store/tree/README#n15 +[source] +tar = "https://git.zx2c4.com/password-store/snapshot/password-store-1.7.4.tar.xz" +[build] +template = "custom" diff --git a/recipes/wip/sound/mpd/recipe.toml b/recipes/wip/sound/mpd/recipe.toml new file mode 100644 index 00000000..1abb2718 --- /dev/null +++ b/recipes/wip/sound/mpd/recipe.toml @@ -0,0 +1,6 @@ +#TODO determine minimum dependencies from meson log +# build instructions: https://mpd.readthedocs.io/en/stable/user.html#compiling-from-source +[source] +tar = "https://www.musicpd.org/download/mpd/0.24/mpd-0.24.6.tar.xz" +[build] +template = "meson" diff --git a/recipes/wip/sound/rmpc/recipe.toml b/recipes/wip/sound/rmpc/recipe.toml new file mode 100644 index 00000000..307a70dc --- /dev/null +++ b/recipes/wip/sound/rmpc/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/mierak/rmpc" +[build] +template = "cargo" diff --git a/recipes/wip/web/surf/recipe.toml b/recipes/wip/web/surf/recipe.toml new file mode 100644 index 00000000..e824c8b9 --- /dev/null +++ b/recipes/wip/web/surf/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for gnu make +# build instructions: https://git.suckless.org/surf/file/README.html +[source] +tar = "https://dl.suckless.org/surf/surf-2.1.tar.gz" +[build] +template = "custom" +dependencies = [ + "webkitgtk3", +] From 186f474754a6d64434e26dfaa3fda0aa79c2440e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 29 Oct 2025 23:05:03 -0300 Subject: [PATCH 3002/3180] Fix libxinerama recipe duplication --- recipes/wip/libs/other/libxinerama/recipe.toml | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 recipes/wip/libs/other/libxinerama/recipe.toml diff --git a/recipes/wip/libs/other/libxinerama/recipe.toml b/recipes/wip/libs/other/libxinerama/recipe.toml deleted file mode 100644 index 36533eb8..00000000 --- a/recipes/wip/libs/other/libxinerama/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO missing xorg-macros package -[source] -tar = "https://www.x.org/releases/individual/lib/libXinerama-1.1.5.tar.xz" -[build] -template = "configure" From 4bfaea13b7fb2b14d6ad7c0de25d6ad9d017793e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 29 Oct 2025 20:45:38 -0600 Subject: [PATCH 3003/3180] Use fork of busd --- recipes/wip/services/busd/recipe.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/wip/services/busd/recipe.toml b/recipes/wip/services/busd/recipe.toml index 3a5ef9cd..4976b0e8 100644 --- a/recipes/wip/services/busd/recipe.toml +++ b/recipes/wip/services/busd/recipe.toml @@ -1,5 +1,6 @@ #TODO not compiled or tested [source] -git = "https://github.com/dbus2/busd" +git = "https://github.com/jackpot51/busd" + [build] template = "cargo" From 8fb25572ae203c4d16679da3bf09ec0c5d6094c5 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 30 Oct 2025 02:35:09 -0300 Subject: [PATCH 3004/3180] Add recipes --- recipes/wip/dev/managers/ratifact/recipe.toml | 5 +++++ recipes/wip/image/other/curtail/recipe.toml | 11 +++++++++++ recipes/wip/image/other/jpegoptim/recipe.toml | 8 ++++++++ recipes/wip/image/other/pngquant/recipe.toml | 5 +++++ recipes/wip/libs/gui/girara/recipe.toml | 9 +++++++++ recipes/wip/net/http/quark/recipe.toml | 6 ++++++ recipes/wip/net/proxy/hitch/recipe.toml | 9 +++++++++ recipes/wip/net/proxy/stunnel/recipe.toml | 5 +++++ recipes/wip/office/zathura/recipe.toml | 10 ++++++++++ recipes/wip/scan/zbar/recipe.toml | 6 ++++++ recipes/wip/video/editors/blind/recipe.toml | 11 +++++++++++ recipes/wip/web/elinks/recipe.toml | 7 +++++++ 12 files changed, 92 insertions(+) create mode 100644 recipes/wip/dev/managers/ratifact/recipe.toml create mode 100644 recipes/wip/image/other/curtail/recipe.toml create mode 100644 recipes/wip/image/other/jpegoptim/recipe.toml create mode 100644 recipes/wip/image/other/pngquant/recipe.toml create mode 100644 recipes/wip/libs/gui/girara/recipe.toml create mode 100644 recipes/wip/net/http/quark/recipe.toml create mode 100644 recipes/wip/net/proxy/hitch/recipe.toml create mode 100644 recipes/wip/net/proxy/stunnel/recipe.toml create mode 100644 recipes/wip/office/zathura/recipe.toml create mode 100644 recipes/wip/scan/zbar/recipe.toml create mode 100644 recipes/wip/video/editors/blind/recipe.toml create mode 100644 recipes/wip/web/elinks/recipe.toml diff --git a/recipes/wip/dev/managers/ratifact/recipe.toml b/recipes/wip/dev/managers/ratifact/recipe.toml new file mode 100644 index 00000000..2c0d8df2 --- /dev/null +++ b/recipes/wip/dev/managers/ratifact/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/adolfousier/ratifact" +[build] +template = "cargo" diff --git a/recipes/wip/image/other/curtail/recipe.toml b/recipes/wip/image/other/curtail/recipe.toml new file mode 100644 index 00000000..d80194e3 --- /dev/null +++ b/recipes/wip/image/other/curtail/recipe.toml @@ -0,0 +1,11 @@ +#TODO missing dependencies: https://github.com/Huluti/Curtail#tech +# build instructions: https://github.com/Huluti/Curtail#build-from-source-nightly +[source] +git = "https://github.com/Huluti/Curtail" +rev = "1.13.0" +[build] +template = "meson" +dependencies = [ + "gtk4", + "libadwaita", +] diff --git a/recipes/wip/image/other/jpegoptim/recipe.toml b/recipes/wip/image/other/jpegoptim/recipe.toml new file mode 100644 index 00000000..1f1cf17e --- /dev/null +++ b/recipes/wip/image/other/jpegoptim/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +tar = "https://github.com/tjko/jpegoptim/releases/download/v1.5.6/jpegoptim-1.5.6.tar.gz" +[build] +template = "configure" +dependencies = [ + "libjpeg", +] diff --git a/recipes/wip/image/other/pngquant/recipe.toml b/recipes/wip/image/other/pngquant/recipe.toml new file mode 100644 index 00000000..fe7b2ccc --- /dev/null +++ b/recipes/wip/image/other/pngquant/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/kornelski/pngquant" +[build] +template = "cargo" diff --git a/recipes/wip/libs/gui/girara/recipe.toml b/recipes/wip/libs/gui/girara/recipe.toml new file mode 100644 index 00000000..c26f68cc --- /dev/null +++ b/recipes/wip/libs/gui/girara/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +# build instructions: https://pwmt.org/projects/girara/installation/ +[source] +tar = "https://pwmt.org/projects/girara/download/girara-0.4.5.tar.xz" +[build] +template = "meson" +dependencies = [ + "gtk3", +] diff --git a/recipes/wip/net/http/quark/recipe.toml b/recipes/wip/net/http/quark/recipe.toml new file mode 100644 index 00000000..cbc312aa --- /dev/null +++ b/recipes/wip/net/http/quark/recipe.toml @@ -0,0 +1,6 @@ +#TODO missing script for gnu make +[source] +git = "https://git.suckless.org/quark" +rev = "5ad0df91757fbc577ffceeca633725e962da345d.html" +[build] +template = "custom" diff --git a/recipes/wip/net/proxy/hitch/recipe.toml b/recipes/wip/net/proxy/hitch/recipe.toml new file mode 100644 index 00000000..74db0f9c --- /dev/null +++ b/recipes/wip/net/proxy/hitch/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +tar = "https://www.hitch-tls.org/source/hitch-1.8.0.tar.gz" +[build] +template = "configure" +dependencies = [ + "libev", + "openssl3", +] diff --git a/recipes/wip/net/proxy/stunnel/recipe.toml b/recipes/wip/net/proxy/stunnel/recipe.toml new file mode 100644 index 00000000..a140df0f --- /dev/null +++ b/recipes/wip/net/proxy/stunnel/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://www.stunnel.org/downloads/stunnel-5.76.tar.gz" +[build] +template = "configure" diff --git a/recipes/wip/office/zathura/recipe.toml b/recipes/wip/office/zathura/recipe.toml new file mode 100644 index 00000000..4a2b57e9 --- /dev/null +++ b/recipes/wip/office/zathura/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +# build instructions: https://pwmt.org/projects/zathura/installation/ +[source] +tar = "https://pwmt.org/projects/zathura/download/zathura-0.5.14.tar.xz" +[build] +template = "meson" +dependencies = [ + "girara", + "gtk3", +] diff --git a/recipes/wip/scan/zbar/recipe.toml b/recipes/wip/scan/zbar/recipe.toml new file mode 100644 index 00000000..07df6847 --- /dev/null +++ b/recipes/wip/scan/zbar/recipe.toml @@ -0,0 +1,6 @@ +#TODO not compiled or tested +#TODO determine the dependencies +[source] +tar = "http://sourceforge.net/projects/zbar/files/zbar/0.10/zbar-0.10.tar.bz2/download" +[build] +template = "configure" diff --git a/recipes/wip/video/editors/blind/recipe.toml b/recipes/wip/video/editors/blind/recipe.toml new file mode 100644 index 00000000..6339138d --- /dev/null +++ b/recipes/wip/video/editors/blind/recipe.toml @@ -0,0 +1,11 @@ +#TODO missing script for gnu make +#TODO verify if ffmpeg and imagemagick are needed at compile-time or run-time +[source] +tar = "https://dl.suckless.org/tools/blind-1.1.tar.gz" +[build] +template = "custom" +[package] +dependencies = [ + "ffmpeg6", + "imagemagick", +] diff --git a/recipes/wip/web/elinks/recipe.toml b/recipes/wip/web/elinks/recipe.toml new file mode 100644 index 00000000..408ac7a7 --- /dev/null +++ b/recipes/wip/web/elinks/recipe.toml @@ -0,0 +1,7 @@ +#TODO not compiled or tested +#TODO determine dependencies +# build instructions: https://github.com/rkd77/elinks/blob/master/INSTALL +[source] +tar = "https://github.com/rkd77/elinks/releases/download/v0.18.0/elinks-0.18.0.tar.xz" +[build] +template = "meson" From 38d7f59454fe47462de6d503ae24cc4f3535757b Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 30 Oct 2025 03:44:23 -0300 Subject: [PATCH 3005/3180] Add recipes --- recipes/wip/fuse/archivemount/recipe.toml | 10 ++++++++++ recipes/wip/fuse/ffmpegfs/recipe.toml | 11 +++++++++++ recipes/wip/fuse/fuse-nfs/recipe.toml | 11 +++++++++++ recipes/wip/fuse/fuse-zip/recipe.toml | 10 ++++++++++ recipes/wip/fuse/lazyfs/recipe.toml | 9 +++++++++ recipes/wip/fuse/littlefs/recipe.toml | 9 +++++++++ recipes/wip/fuse/loggedfs/recipe.toml | 12 ++++++++++++ recipes/wip/fuse/mount-zip/recipe.toml | 12 ++++++++++++ recipes/wip/fuse/unreliablefs/recipe.toml | 9 +++++++++ recipes/wip/text/octotype/recipe.toml | 5 +++++ 10 files changed, 98 insertions(+) create mode 100644 recipes/wip/fuse/archivemount/recipe.toml create mode 100644 recipes/wip/fuse/ffmpegfs/recipe.toml create mode 100644 recipes/wip/fuse/fuse-nfs/recipe.toml create mode 100644 recipes/wip/fuse/fuse-zip/recipe.toml create mode 100644 recipes/wip/fuse/lazyfs/recipe.toml create mode 100644 recipes/wip/fuse/littlefs/recipe.toml create mode 100644 recipes/wip/fuse/loggedfs/recipe.toml create mode 100644 recipes/wip/fuse/mount-zip/recipe.toml create mode 100644 recipes/wip/fuse/unreliablefs/recipe.toml create mode 100644 recipes/wip/text/octotype/recipe.toml diff --git a/recipes/wip/fuse/archivemount/recipe.toml b/recipes/wip/fuse/archivemount/recipe.toml new file mode 100644 index 00000000..013a99c5 --- /dev/null +++ b/recipes/wip/fuse/archivemount/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/cybernoid/archivemount" +rev = "78c306538065de9b14f48cfc2024f50f843d3b29" +[build] +template = "configure" +dependencies = [ + "libfuse2", + "libarchive", +] diff --git a/recipes/wip/fuse/ffmpegfs/recipe.toml b/recipes/wip/fuse/ffmpegfs/recipe.toml new file mode 100644 index 00000000..f79f1d82 --- /dev/null +++ b/recipes/wip/fuse/ffmpegfs/recipe.toml @@ -0,0 +1,11 @@ +#TODO not compiled or tested +# build instructions: https://github.com/nschlia/ffmpegfs/blob/master/INSTALL.md#building-ffmpegfs-yourself +[source] +tar = "https://github.com/nschlia/ffmpegfs/releases/download/v2.17/ffmpegfs-2.17.tar.gz" +[build] +template = "configure" +dependencies = [ + "libfuse3", + "sqlite3", + "ffmpeg6", +] diff --git a/recipes/wip/fuse/fuse-nfs/recipe.toml b/recipes/wip/fuse/fuse-nfs/recipe.toml new file mode 100644 index 00000000..4fd68c7d --- /dev/null +++ b/recipes/wip/fuse/fuse-nfs/recipe.toml @@ -0,0 +1,11 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/sahlberg/fuse-nfs" +rev = "75827244f1615be20da880cbc68665416131088d" +script = "./setup.sh" +[build] +template = "configure" +dependencies = [ + "libfuse3", + "libnfs", +] diff --git a/recipes/wip/fuse/fuse-zip/recipe.toml b/recipes/wip/fuse/fuse-zip/recipe.toml new file mode 100644 index 00000000..3c8cf95b --- /dev/null +++ b/recipes/wip/fuse/fuse-zip/recipe.toml @@ -0,0 +1,10 @@ +#TODO missing script for gnu make: https://bitbucket.org/agalanin/fuse-zip/src/master/INSTALL +[source] +git = "https://bitbucket.org/agalanin/fuse-zip" +rev = "0.7.2" +[build] +template = "custom" +dependencies = [ + "libfuse2", + "libzip", +] diff --git a/recipes/wip/fuse/lazyfs/recipe.toml b/recipes/wip/fuse/lazyfs/recipe.toml new file mode 100644 index 00000000..b257c8c0 --- /dev/null +++ b/recipes/wip/fuse/lazyfs/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for compilation: https://github.com/dsrhaslab/lazyfs#installation +[source] +git = "https://github.com/dsrhaslab/lazyfs" +rev = "0.3.0" +[build] +template = "custom" +dependencies = [ + "libfuse3", +] diff --git a/recipes/wip/fuse/littlefs/recipe.toml b/recipes/wip/fuse/littlefs/recipe.toml new file mode 100644 index 00000000..e900199a --- /dev/null +++ b/recipes/wip/fuse/littlefs/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for gnu make +[source] +git = "https://github.com/littlefs-project/littlefs-fuse" +rev = "v2.7.14" +[build] +template = "custom" +dependencies = [ + "libfuse3", +] diff --git a/recipes/wip/fuse/loggedfs/recipe.toml b/recipes/wip/fuse/loggedfs/recipe.toml new file mode 100644 index 00000000..49494c3a --- /dev/null +++ b/recipes/wip/fuse/loggedfs/recipe.toml @@ -0,0 +1,12 @@ +#TODO missing script for gnu make +# build instructions: https://github.com/rflament/loggedfs#installation-from-source +[source] +git = "https://github.com/rflament/loggedfs" +rev = "82aba9a93489797026ad1a37b637823ece4a7093" +[build] +template = "custom" +dependencies = [ + "libfuse3", + "pcre2", + "libxml2", +] diff --git a/recipes/wip/fuse/mount-zip/recipe.toml b/recipes/wip/fuse/mount-zip/recipe.toml new file mode 100644 index 00000000..845cdb1a --- /dev/null +++ b/recipes/wip/fuse/mount-zip/recipe.toml @@ -0,0 +1,12 @@ +#TODO missing script for gnu make: https://github.com/google/mount-zip/blob/main/INSTALL.md +[source] +git = "https://github.com/google/mount-zip" +rev = "v1.10" +[build] +template = "custom" +dependencies = [ + "libfuse3", + "libzip", + "libicu", + "boost", +] diff --git a/recipes/wip/fuse/unreliablefs/recipe.toml b/recipes/wip/fuse/unreliablefs/recipe.toml new file mode 100644 index 00000000..e554b8af --- /dev/null +++ b/recipes/wip/fuse/unreliablefs/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ligurio/unreliablefs" +rev = "fa432252c117e82a0a36343895936f4fae246b56" +[build] +template = "cmake" +dependencies = [ + "libfuse3", +] diff --git a/recipes/wip/text/octotype/recipe.toml b/recipes/wip/text/octotype/recipe.toml new file mode 100644 index 00000000..4c1e34e9 --- /dev/null +++ b/recipes/wip/text/octotype/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/mahlquistj/octotype" +[build] +template = "cargo" From d5dee8ab555cd9c92e0787673444a0a798ece50f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 30 Oct 2025 04:38:44 -0300 Subject: [PATCH 3006/3180] Add recipes --- recipes/wip/fuse/cryfs/recipe.toml | 9 +++++++++ recipes/wip/fuse/dislocker/recipe.toml | 11 +++++++++++ recipes/wip/fuse/fuse-ext2/recipe.toml | 12 ++++++++++++ recipes/wip/fuse/mergerfs/recipe.toml | 8 ++++++++ recipes/wip/fuse/securefs/recipe.toml | 9 +++++++++ recipes/wip/fuse/unionfs-fuse/recipe.toml | 10 ++++++++++ recipes/wip/tests/pjdfstest/recipe.toml | 11 +++++++++++ recipes/wip/tests/xfstests/recipe.toml | 10 ++++++++++ 8 files changed, 80 insertions(+) create mode 100644 recipes/wip/fuse/cryfs/recipe.toml create mode 100644 recipes/wip/fuse/dislocker/recipe.toml create mode 100644 recipes/wip/fuse/fuse-ext2/recipe.toml create mode 100644 recipes/wip/fuse/mergerfs/recipe.toml create mode 100644 recipes/wip/fuse/securefs/recipe.toml create mode 100644 recipes/wip/fuse/unionfs-fuse/recipe.toml create mode 100644 recipes/wip/tests/pjdfstest/recipe.toml create mode 100644 recipes/wip/tests/xfstests/recipe.toml diff --git a/recipes/wip/fuse/cryfs/recipe.toml b/recipes/wip/fuse/cryfs/recipe.toml new file mode 100644 index 00000000..f7e8f066 --- /dev/null +++ b/recipes/wip/fuse/cryfs/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +# build instructions: https://github.com/cryfs/cryfs#building-from-source +[source] +tar = "https://github.com/cryfs/cryfs/releases/download/1.0.1/cryfs-1.0.1.tar.xz" +[build] +template = "cmake" +dependencies = [ + "libfuse3", +] diff --git a/recipes/wip/fuse/dislocker/recipe.toml b/recipes/wip/fuse/dislocker/recipe.toml new file mode 100644 index 00000000..ef6fece0 --- /dev/null +++ b/recipes/wip/fuse/dislocker/recipe.toml @@ -0,0 +1,11 @@ +#TODO not compiled or tested +# build instructions: https://github.com/Aorimn/dislocker/blob/master/INSTALL.md +[source] +git = "https://github.com/Aorimn/dislocker" +rev = "8b2aea09d431bd5497ae223c141ebaee7bdd481f" +[build] +template = "cmake" +dependencies = [ + "libfuse3", + "mbedtls", +] diff --git a/recipes/wip/fuse/fuse-ext2/recipe.toml b/recipes/wip/fuse/fuse-ext2/recipe.toml new file mode 100644 index 00000000..9a612cc9 --- /dev/null +++ b/recipes/wip/fuse/fuse-ext2/recipe.toml @@ -0,0 +1,12 @@ +#TODO not compiled or tested +#TODO missing dependencies +# build instructions: https://github.com/alperakcan/fuse-ext2#building +[source] +git = "https://github.com/alperakcan/fuse-ext2" +rev = "ae35afb9ab08d87c66c1e021df792b3a7c4308b0" +script = "./autogen.sh" +[build] +template = "configure" +dependencies = [ + "libfuse2", +] diff --git a/recipes/wip/fuse/mergerfs/recipe.toml b/recipes/wip/fuse/mergerfs/recipe.toml new file mode 100644 index 00000000..531089a0 --- /dev/null +++ b/recipes/wip/fuse/mergerfs/recipe.toml @@ -0,0 +1,8 @@ +#TODO missing script for gnu make: https://trapexit.github.io/mergerfs/preview/setup/build/ +[source] +tar = "https://github.com/trapexit/mergerfs/releases/download/2.40.2/mergerfs-2.40.2.tar.gz" +[build] +template = "custom" +dependencies = [ + "libfuse3", +] diff --git a/recipes/wip/fuse/securefs/recipe.toml b/recipes/wip/fuse/securefs/recipe.toml new file mode 100644 index 00000000..534d8ce0 --- /dev/null +++ b/recipes/wip/fuse/securefs/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for vcpkg: https://github.com/netheril96/securefs#build-from-source +[source] +git = "https://github.com/netheril96/securefs" +rev = "v2.0.0" +[build] +template = "custom" +dependencies = [ + "libfuse3", +] diff --git a/recipes/wip/fuse/unionfs-fuse/recipe.toml b/recipes/wip/fuse/unionfs-fuse/recipe.toml new file mode 100644 index 00000000..17a6fc61 --- /dev/null +++ b/recipes/wip/fuse/unionfs-fuse/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +# build instructions: https://github.com/rpodgorny/unionfs-fuse#how-to-build +[source] +git = "https://github.com/rpodgorny/unionfs-fuse" +rev = "v3.7" +[build] +template = "cmake" +dependencies = [ + "libfuse3", +] diff --git a/recipes/wip/tests/pjdfstest/recipe.toml b/recipes/wip/tests/pjdfstest/recipe.toml new file mode 100644 index 00000000..c37f6a25 --- /dev/null +++ b/recipes/wip/tests/pjdfstest/recipe.toml @@ -0,0 +1,11 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/pjd/pjdfstest" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}/home/user/pjdfstest" +cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/home/user/pjdfstest" +""" +[package] +dependencies = ["perl5"] diff --git a/recipes/wip/tests/xfstests/recipe.toml b/recipes/wip/tests/xfstests/recipe.toml new file mode 100644 index 00000000..81cf8077 --- /dev/null +++ b/recipes/wip/tests/xfstests/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/kdave/xfstests" +rev = "2cba4b54e6ab21d9324000f3cd009dbe9cad9c19" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}/home/user/xfstests" +cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/home/user/xfstests" +""" From e94c9c16640fbab2dfee7d96612e12061907d156 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 30 Oct 2025 10:33:48 -0600 Subject: [PATCH 3007/3180] dbus: patch out the use of close_range --- recipes/wip/services/dbus/recipe.toml | 3 +++ recipes/wip/services/dbus/redox.patch | 12 ++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 recipes/wip/services/dbus/redox.patch diff --git a/recipes/wip/services/dbus/recipe.toml b/recipes/wip/services/dbus/recipe.toml index 6bd09ed1..65564ad0 100644 --- a/recipes/wip/services/dbus/recipe.toml +++ b/recipes/wip/services/dbus/recipe.toml @@ -1,6 +1,9 @@ [source] tar = "https://dbus.freedesktop.org/releases/dbus/dbus-1.16.2.tar.xz" blake3 = "b1d1f22858a8f04665e5dca29d194f892620f00fd3e3f4e89dd208e78868436e" +patches = [ + "redox.patch", +] [build] dependencies = [ diff --git a/recipes/wip/services/dbus/redox.patch b/recipes/wip/services/dbus/redox.patch new file mode 100644 index 00000000..c9dc8554 --- /dev/null +++ b/recipes/wip/services/dbus/redox.patch @@ -0,0 +1,12 @@ +diff -ruwN source-old/dbus/dbus-sysdeps-unix.c source/dbus/dbus-sysdeps-unix.c +--- source-old/dbus/dbus-sysdeps-unix.c 2025-02-27 09:29:06.000000000 -0700 ++++ source/dbus/dbus-sysdeps-unix.c 2025-10-30 10:32:21.000125207 -0600 +@@ -4981,7 +4981,7 @@ + void + _dbus_fd_set_all_close_on_exec (void) + { +-#if defined(HAVE_CLOSE_RANGE) && defined(CLOSE_RANGE_CLOEXEC) ++#if defined(HAVE_CLOSE_RANGE) && defined(CLOSE_RANGE_CLOEXEC) && !defined(__redox__) + if (close_range (3, INT_MAX, CLOSE_RANGE_CLOEXEC) == 0) + return; + #endif From cd57cda6499276d3ba7adda7afc3c13835f5f43b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 30 Oct 2025 10:41:06 -0600 Subject: [PATCH 3008/3180] dbus: update patch to completely disable functions that close all FDs --- recipes/wip/services/dbus/redox.patch | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/recipes/wip/services/dbus/redox.patch b/recipes/wip/services/dbus/redox.patch index c9dc8554..a67279e1 100644 --- a/recipes/wip/services/dbus/redox.patch +++ b/recipes/wip/services/dbus/redox.patch @@ -1,12 +1,27 @@ diff -ruwN source-old/dbus/dbus-sysdeps-unix.c source/dbus/dbus-sysdeps-unix.c --- source-old/dbus/dbus-sysdeps-unix.c 2025-02-27 09:29:06.000000000 -0700 -+++ source/dbus/dbus-sysdeps-unix.c 2025-10-30 10:32:21.000125207 -0600 -@@ -4981,7 +4981,7 @@ ++++ source/dbus/dbus-sysdeps-unix.c 2025-10-30 10:39:53.344885840 -0600 +@@ -4962,6 +4962,11 @@ + void + _dbus_close_all (void) + { ++#if defined(__redox__) ++ fprintf(stderr, "ignoring _dbus_close_all until relibc internal FDs are in upper fd table\n"); ++ return; ++#endif ++ + #ifdef HAVE_CLOSE_RANGE + if (close_range (3, INT_MAX, 0) == 0) + return; +@@ -4981,6 +4986,11 @@ void _dbus_fd_set_all_close_on_exec (void) { --#if defined(HAVE_CLOSE_RANGE) && defined(CLOSE_RANGE_CLOEXEC) -+#if defined(HAVE_CLOSE_RANGE) && defined(CLOSE_RANGE_CLOEXEC) && !defined(__redox__) ++#if defined(__redox__) ++ fprintf(stderr, "ignoring _dbus_fd_set_all_close_on_exec until relibc internal FDs are in upper fd table\n"); ++ return; ++#endif ++ + #if defined(HAVE_CLOSE_RANGE) && defined(CLOSE_RANGE_CLOEXEC) if (close_range (3, INT_MAX, CLOSE_RANGE_CLOEXEC) == 0) return; - #endif From dc8e9f55b3730efd3db745c3633878c8981c948d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 30 Oct 2025 13:07:51 -0600 Subject: [PATCH 3009/3180] imlib2: add x11 support --- recipes/wip/libs/other/imlib2/recipe.toml | 23 +++-- recipes/wip/libs/other/imlib2/redox.patch | 104 ++++++++++++++++++++++ 2 files changed, 121 insertions(+), 6 deletions(-) create mode 100644 recipes/wip/libs/other/imlib2/redox.patch diff --git a/recipes/wip/libs/other/imlib2/recipe.toml b/recipes/wip/libs/other/imlib2/recipe.toml index e4e84b31..9c54f870 100644 --- a/recipes/wip/libs/other/imlib2/recipe.toml +++ b/recipes/wip/libs/other/imlib2/recipe.toml @@ -1,17 +1,28 @@ #TODO compilation error - unknown type name "sigjmp_buf" [source] -tar = "https://downloads.sourceforge.net/project/enlightenment/imlib2-src/1.12.1/imlib2-1.12.1.tar.xz" +tar = "https://downloads.sourceforge.net/project/enlightenment/imlib2-src/1.12.5/imlib2-1.12.5.tar.xz" +blake3 = "535b6a986538295af5194e81281a11a1d7e79ae518959ca434f1e53bfa67e86d" +patches = ["redox.patch"] +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + [build] template = "custom" dependencies = [ + "freetype2", "libjpeg", "libpng", - "freetype2", + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "libxext", + "x11proto", "zlib", ] script = """ -COOKBOOK_CONFIGURE_FLAGS+=( - --without-x -) -cookbook_configure +DYNAMIC_INIT +cookbook_configure --without-x-shm-fd """ diff --git a/recipes/wip/libs/other/imlib2/redox.patch b/recipes/wip/libs/other/imlib2/redox.patch new file mode 100644 index 00000000..eb82e68b --- /dev/null +++ b/recipes/wip/libs/other/imlib2/redox.patch @@ -0,0 +1,104 @@ +diff -ruwN '--exclude=Makefile.in' source-old/src/lib/x11_grab.c source/src/lib/x11_grab.c +--- source-old/src/lib/x11_grab.c 2024-12-24 07:45:18.000000000 -0700 ++++ source/src/lib/x11_grab.c 2025-10-30 12:54:08.011156248 -0600 +@@ -4,8 +4,10 @@ + #include + #include + #include ++#if !defined(__redox__) + #include + #include ++#endif + + #include "x11_grab.h" + #include "x11_ximage.h" +diff -ruwN '--exclude=Makefile.in' source-old/src/lib/x11_rend.c source/src/lib/x11_rend.c +--- source-old/src/lib/x11_rend.c 2025-04-06 07:16:45.000000000 -0600 ++++ source/src/lib/x11_rend.c 2025-10-30 12:55:57.324410357 -0600 +@@ -474,20 +474,24 @@ + gcm = XCreateGC(x11->dpy, m, GCGraphicsExposures, &gcv); + } + /* write the mask */ ++#if !defined(__redox__) + if (shm) + /* write shm XImage */ + XShmPutImage(x11->dpy, m, gcm, mxim, 0, 0, dx, dy, dw, dh, False); + /* write regular XImage */ + else ++#endif + XPutImage(x11->dpy, m, gcm, mxim, 0, 0, dx, dy, dw, dh); + } + + /* write the image */ ++#if !defined(__redox__) + if (shm) + /* write shm XImage */ + XShmPutImage(x11->dpy, w, gc, xim, 0, 0, dx, dy, dw, dh, False); + /* write regular XImage */ + else ++#endif + XPutImage(x11->dpy, w, gc, xim, 0, 0, dx, dy, dw, dh); + + /* free the XImage and put onto our free list */ +diff -ruwN '--exclude=Makefile.in' source-old/src/lib/x11_ximage.c source/src/lib/x11_ximage.c +--- source-old/src/lib/x11_ximage.c 2024-01-02 06:11:28.000000000 -0700 ++++ source/src/lib/x11_ximage.c 2025-10-30 12:57:02.128925585 -0600 +@@ -11,8 +11,10 @@ + #include + #include + #endif ++#if !defined(__redox__) + #include + #include ++#endif + + #include "x11_ximage.h" + +@@ -56,6 +58,7 @@ + int val; + + /* if its there set x_does_shm flag */ ++#if !defined(__redox__) + if (XShmQueryExtension(d)) + { + #ifdef HAVE_X11_SHM_FD +@@ -72,6 +75,7 @@ + } + /* clear the flag - no shm at all */ + else ++#endif + { + x_does_shm = 0; + return; +@@ -121,6 +125,7 @@ + return NULL; + + /* try create an shm image */ ++#if !defined(__redox__) + xim = XShmCreateImage(x11->dpy, x11->vis, depth, ZPixmap, NULL, si, w, h); + if (!xim) + return NULL; +@@ -230,6 +235,7 @@ + shmctl(si->shmid, IPC_RMID, 0); + } + } ++#endif + + /* couldnt create SHM image ? */ + /* destroy previous image */ +@@ -243,6 +249,7 @@ + XShmSegmentInfo *si) + { + XSync(x11->dpy, False); ++#if !defined(__redox__) + XShmDetach(x11->dpy, si); + #ifdef HAVE_X11_SHM_FD + if (x_does_shm_fd) +@@ -255,6 +262,7 @@ + shmdt(si->shmaddr); + shmctl(si->shmid, IPC_RMID, 0); + } ++#endif + XDestroyImage(xim); + } + From 2652b98f1e2dc072bd97bfc7457446a04620680a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 30 Oct 2025 13:08:07 -0600 Subject: [PATCH 3010/3180] feh: fix build --- recipes/wip/x11/feh/recipe.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/wip/x11/feh/recipe.toml b/recipes/wip/x11/feh/recipe.toml index fab5eacb..b2c834c0 100644 --- a/recipes/wip/x11/feh/recipe.toml +++ b/recipes/wip/x11/feh/recipe.toml @@ -1,4 +1,3 @@ -#TODO: imlib2 needs sys/ipc.h and sys/shm.h for X11 feature [source] tar = "https://feh.finalrewind.org/feh-3.11.2.tar.bz2" blake3 = "b9d704e0b37d99068cbc76d2b73c3b6ef673612060d7cfef0f5a3e8886255276" @@ -15,6 +14,7 @@ dependencies = [ "libxau", "libxcb", "libx11", + "libxext", "libxt", "x11proto", "zlib", @@ -26,4 +26,5 @@ rsync -a --delete "${COOKBOOK_SOURCE}/" ./ export LDLIBS="$("${PKG_CONFIG}" --libs freetype2 imlib2 libpng x11)" export PREFIX="/usr" "${COOKBOOK_MAKE}" curl=0 verscmp=0 xinerama=0 +install -Dm0755 src/feh "${COOKBOOK_STAGE}/usr/bin/feh" """ From b9a4b2471dfb6c6547189a9a0d31d126e9cbaae1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 30 Oct 2025 14:56:10 -0600 Subject: [PATCH 3011/3180] Add hwdata --- recipes/wip/libs/other/hwdata/recipe.toml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 recipes/wip/libs/other/hwdata/recipe.toml diff --git a/recipes/wip/libs/other/hwdata/recipe.toml b/recipes/wip/libs/other/hwdata/recipe.toml new file mode 100644 index 00000000..2c03f946 --- /dev/null +++ b/recipes/wip/libs/other/hwdata/recipe.toml @@ -0,0 +1,11 @@ +[source] +tar = "https://github.com/vcrhonek/hwdata/archive/refs/tags/v0.400.tar.gz" +blake3 = "d56a0863502e528025ddb84b0968a87a713365d91927c92bfe35842d47387e77" + +[build] +template = "custom" +script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ +COOKBOOK_CONFIGURE="./configure" +cookbook_configure +""" From 589e6a4ad87bf7f85f4f339e302fa3dbf3793e3a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 30 Oct 2025 15:08:59 -0600 Subject: [PATCH 3012/3180] Add garcon, libxfce4windowing, and xfce4-panel --- recipes/wip/x11/xfce4/garcon/recipe.toml | 48 +++++++++++++++++ .../x11/xfce4/libxfce4windowing/recipe.toml | 51 +++++++++++++++++++ .../x11/xfce4/libxfce4windowing/redox.patch | 41 +++++++++++++++ recipes/wip/x11/xfce4/xfce4-panel/recipe.toml | 51 +++++++++++++++++++ 4 files changed, 191 insertions(+) create mode 100644 recipes/wip/x11/xfce4/garcon/recipe.toml create mode 100644 recipes/wip/x11/xfce4/libxfce4windowing/recipe.toml create mode 100644 recipes/wip/x11/xfce4/libxfce4windowing/redox.patch create mode 100644 recipes/wip/x11/xfce4/xfce4-panel/recipe.toml diff --git a/recipes/wip/x11/xfce4/garcon/recipe.toml b/recipes/wip/x11/xfce4/garcon/recipe.toml new file mode 100644 index 00000000..4ba9a284 --- /dev/null +++ b/recipes/wip/x11/xfce4/garcon/recipe.toml @@ -0,0 +1,48 @@ +[source] +tar = "https://archive.xfce.org/src/xfce/garcon/4.21/garcon-4.21.0.tar.xz" +blake3 = "d0eb19cfcf718f3cf4a5fc89304b52b97aa35cb64222f7bc746924544e9fc7b8" + +[build] +dependencies = [ + "atk", + "cairo", + "expat", + "fontconfig", + "freetype2", + "fribidi", + "gdk-pixbuf", + "gettext", + "glib", + "gtk3", + "harfbuzz", + "libepoxy", + "libffi", + "libiconv", + "libjpeg", + "libpng", + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "libxext", + "libxfce4ui", + "libxfce4util", + "libxfixes", + "libxft", + "libxi", + "libxrandr", + "libxrender", + "libxxf86vm", + "mesa-x11", + "pango", + "pcre2", + "pixman", + "shared-mime-info", + "x11proto", + "xfconf", + "zlib", +] +template = "meson" +mesonflags = [ + "-Dintrospection=false", +] diff --git a/recipes/wip/x11/xfce4/libxfce4windowing/recipe.toml b/recipes/wip/x11/xfce4/libxfce4windowing/recipe.toml new file mode 100644 index 00000000..a57d8392 --- /dev/null +++ b/recipes/wip/x11/xfce4/libxfce4windowing/recipe.toml @@ -0,0 +1,51 @@ +[source] +tar = "https://archive.xfce.org/src/xfce/libxfce4windowing/4.20/libxfce4windowing-4.20.4.tar.bz2" +blake3 = "396cbd13d547e6e109e348dd207747714dc4827b744fe729b1697c9dd1a55c3f" +patches = ["redox.patch"] + +[build] +dependencies = [ + "atk", + "cairo", + "expat", + "fontconfig", + "freetype2", + "fribidi", + "gdk-pixbuf", + "gettext", + "glib", + "gtk3", + "harfbuzz", + "libepoxy", + "libffi", + "libiconv", + "libjpeg", + "libpng", + "libpthread-stubs", + "libwnck3", + "libx11", + "libxau", + "libxcb", + "libxext", + "libxfce4util", + "libxfixes", + "libxft", + "libxi", + "libxrandr", + "libxrender", + "libxxf86vm", + "mesa-x11", + "pango", + "pcre2", + "pixman", + "shared-mime-info", + "x11proto", + "xfconf", + "zlib", +] +template = "meson" +mesonflags = [ + "-Dintrospection=false", + "-Dwayland=disabled", + "-Dx11=enabled", +] diff --git a/recipes/wip/x11/xfce4/libxfce4windowing/redox.patch b/recipes/wip/x11/xfce4/libxfce4windowing/redox.patch new file mode 100644 index 00000000..c3520aa9 --- /dev/null +++ b/recipes/wip/x11/xfce4/libxfce4windowing/redox.patch @@ -0,0 +1,41 @@ +diff -ruwN source-old/libxfce4windowing/xfw-monitor-x11.c source/libxfce4windowing/xfw-monitor-x11.c +--- source-old/libxfce4windowing/xfw-monitor-x11.c 2025-08-14 01:01:54.000000000 -0600 ++++ source/libxfce4windowing/xfw-monitor-x11.c 2025-10-30 15:06:17.333924750 -0600 +@@ -28,7 +28,9 @@ + #include + #include + #include ++#if !defined(__redox__) + #include ++#endif + #include + + #include "xfw-monitor-private.h" +@@ -429,6 +431,7 @@ + &edid_data); + + if (gdk_x11_display_error_trap_pop(display) == 0 && edid_data != NULL && nbytes > 0) { ++#if !defined(__redox__) + struct di_info *edid_info = di_info_parse_edid(edid_data, nbytes); + if (edid_info != NULL) { + char *make = di_info_get_make(edid_info); +@@ -451,6 +454,7 @@ + + di_info_destroy(edid_info); + } ++#endif + } + if (edid_data != NULL) { + XFree(edid_data); +diff -ruwN source-old/meson.build source/meson.build +--- source-old/meson.build 2025-08-14 01:05:11.000000000 -0600 ++++ source/meson.build 2025-10-30 15:05:30.092853306 -0600 +@@ -44,7 +44,7 @@ + + # Feature: 'x11' + x11_deps = [] +-x11_deps += dependency('libdisplay-info', version: dependency_versions['display-info'], required: get_option('x11')) ++#x11_deps += dependency('libdisplay-info', version: dependency_versions['display-info'], required: get_option('x11')) + x11_deps += dependency('x11', version: dependency_versions['libx11'], required: get_option('x11')) + x11_deps += dependency('gdk-x11-3.0', version: dependency_versions['gtk'], required: get_option('x11')) + x11_deps += dependency('libwnck-3.0', version: dependency_versions['wnck'], required: get_option('x11')) diff --git a/recipes/wip/x11/xfce4/xfce4-panel/recipe.toml b/recipes/wip/x11/xfce4/xfce4-panel/recipe.toml new file mode 100644 index 00000000..fd646309 --- /dev/null +++ b/recipes/wip/x11/xfce4/xfce4-panel/recipe.toml @@ -0,0 +1,51 @@ +[source] +tar = "https://archive.xfce.org/src/xfce/xfce4-panel/4.21/xfce4-panel-4.21.0.tar.xz" +blake3 = "59a8f55ba237a56ccd16869a28426fa3890c292164a4502dd07ddba45e0268ed" + +[build] +dependencies = [ + "atk", + "cairo", + "expat", + "fontconfig", + "freetype2", + "fribidi", + "garcon", + "gdk-pixbuf", + "gettext", + "glib", + "gtk3", + "harfbuzz", + "libepoxy", + "libffi", + "libiconv", + "libjpeg", + "libpng", + "libpthread-stubs", + "libwnck3", + "libx11", + "libxau", + "libxcb", + "libxext", + "libxfce4ui", + "libxfce4util", + "libxfce4windowing", + "libxfixes", + "libxft", + "libxi", + "libxrandr", + "libxrender", + "libxxf86vm", + "mesa-x11", + "pango", + "pcre2", + "pixman", + "shared-mime-info", + "x11proto", + "xfconf", + "zlib", +] +template = "meson" +mesonflags = [ + "-Dintrospection=false", +] From d96df5c7a639d859fc20033e607bedc96f7bc519 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 30 Oct 2025 15:09:24 -0600 Subject: [PATCH 3013/3180] feh: enable xinerama --- recipes/wip/x11/feh/recipe.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/wip/x11/feh/recipe.toml b/recipes/wip/x11/feh/recipe.toml index b2c834c0..8d55c107 100644 --- a/recipes/wip/x11/feh/recipe.toml +++ b/recipes/wip/x11/feh/recipe.toml @@ -15,6 +15,7 @@ dependencies = [ "libxcb", "libx11", "libxext", + "libxinerama", "libxt", "x11proto", "zlib", @@ -25,6 +26,6 @@ DYNAMIC_INIT rsync -a --delete "${COOKBOOK_SOURCE}/" ./ export LDLIBS="$("${PKG_CONFIG}" --libs freetype2 imlib2 libpng x11)" export PREFIX="/usr" -"${COOKBOOK_MAKE}" curl=0 verscmp=0 xinerama=0 +"${COOKBOOK_MAKE}" curl=0 verscmp=0 install -Dm0755 src/feh "${COOKBOOK_STAGE}/usr/bin/feh" """ From 10bb1770ab7c67339d50dbd2e0987d4eb2d570cd Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 30 Oct 2025 15:31:45 -0600 Subject: [PATCH 3014/3180] Add lxde libfm-extra and libmenu-cache --- recipes/wip/x11/lxde/libfm-extra/recipe.toml | 22 ++++++++++++++++ .../wip/x11/lxde/libmenu-cache/recipe.toml | 26 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 recipes/wip/x11/lxde/libfm-extra/recipe.toml create mode 100644 recipes/wip/x11/lxde/libmenu-cache/recipe.toml diff --git a/recipes/wip/x11/lxde/libfm-extra/recipe.toml b/recipes/wip/x11/lxde/libfm-extra/recipe.toml new file mode 100644 index 00000000..0d9e6a5d --- /dev/null +++ b/recipes/wip/x11/lxde/libfm-extra/recipe.toml @@ -0,0 +1,22 @@ +[source] +tar = "https://github.com/lxde/libfm/archive/refs/tags/1.4.0.tar.gz" +blake3 = "b43b4a87b199fb0c6df08f09c7b12e4a545963fc0f4ffac48f8db2a425e47351" +script = """ +DYNAMIC_INIT +mkdir -p m4 +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "gettext", + "libffi", + "glib", + "pcre2", + "zlib", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure --with-extra-only +""" diff --git a/recipes/wip/x11/lxde/libmenu-cache/recipe.toml b/recipes/wip/x11/lxde/libmenu-cache/recipe.toml new file mode 100644 index 00000000..af9cbecb --- /dev/null +++ b/recipes/wip/x11/lxde/libmenu-cache/recipe.toml @@ -0,0 +1,26 @@ +[source] +tar = "https://github.com/lxde/menu-cache/archive/refs/tags/1.1.1.tar.gz" +blake3 = "6490180be8851c23beec69a507f7285b94491c0b7ef955f7bc217095efb091ae" +script = """ +DYNAMIC_INIT +mkdir -p m4 +autotools_recursive_regenerate +sed -i 's|#include |#include |g' libmenu-cache/menu-cache.c +sed -i 's|#include |#include |g' menu-cache-daemon/menu-cached.c +""" + +[build] +dependencies = [ + "gettext", + "glib", + "libffi", + "libfm-extra", + "libiconv", + "pcre2", + "zlib", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From ede9be110a48c235abe5f3674a3e280d0c10b875 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 30 Oct 2025 15:38:23 -0600 Subject: [PATCH 3015/3180] Add libfm-gtk3 --- recipes/wip/x11/lxde/libfm-gtk3/recipe.toml | 61 +++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 recipes/wip/x11/lxde/libfm-gtk3/recipe.toml diff --git a/recipes/wip/x11/lxde/libfm-gtk3/recipe.toml b/recipes/wip/x11/lxde/libfm-gtk3/recipe.toml new file mode 100644 index 00000000..ea5d3840 --- /dev/null +++ b/recipes/wip/x11/lxde/libfm-gtk3/recipe.toml @@ -0,0 +1,61 @@ +[source] +tar = "https://github.com/lxde/libfm/archive/refs/tags/1.4.0.tar.gz" +blake3 = "b43b4a87b199fb0c6df08f09c7b12e4a545963fc0f4ffac48f8db2a425e47351" +script = """ +DYNAMIC_INIT +mkdir -p m4 +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "atk", + "cairo", + "expat", + "fontconfig", + "freetype2", + "fribidi", + "gdk-pixbuf", + "gettext", + "glib", + "gtk3", + "harfbuzz", + "libepoxy", + "libffi", + "libfm-extra", + "libiconv", + "libicu", + "libjpeg", + "libmenu-cache", + "libpng", + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "libxext", + "libxfixes", + "libxft", + "libxi", + "libxrandr", + "libxrender", + "libxxf86vm", + "llvm18", + "mesa-x11", + "pango", + "pcre", + "pcre2", + "pixman", + "shared-mime-info", + "x11proto", + "xcb-proto", + "xextproto", + "xtrans", + "zlib", +] +template = "custom" +script = """ +DYNAMIC_INIT +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ +COOKBOOK_CONFIGURE="./configure" +cookbook_configure --disable-old-actions --disable-silent-rules --with-gtk=3 +""" From 5502274f7c60a17c72196e9a87a22465b91fca8c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 30 Oct 2025 15:49:56 -0600 Subject: [PATCH 3016/3180] Add keybinder3 and lxpanel --- recipes/wip/x11/keybinder3/recipe.toml | 56 +++++++++++++++++++++ recipes/wip/x11/lxde/lxpanel/recipe.toml | 63 ++++++++++++++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 recipes/wip/x11/keybinder3/recipe.toml create mode 100644 recipes/wip/x11/lxde/lxpanel/recipe.toml diff --git a/recipes/wip/x11/keybinder3/recipe.toml b/recipes/wip/x11/keybinder3/recipe.toml new file mode 100644 index 00000000..47378a98 --- /dev/null +++ b/recipes/wip/x11/keybinder3/recipe.toml @@ -0,0 +1,56 @@ +[source] +tar = "https://github.com/kupferlauncher/keybinder/releases/download/keybinder-3.0-v0.3.2/keybinder-3.0-0.3.2.tar.gz" +blake3 = "04b010524abf7af8a6bdfdbeff393c0feecf2bdcc1fd642e75113137ccb62aed" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "atk", + "cairo", + "expat", + "fontconfig", + "freetype2", + "fribidi", + "gdk-pixbuf", + "gettext", + "glib", + "gtk3", + "harfbuzz", + "libepoxy", + "libffi", + "libiconv", + "libicu", + "libjpeg", + "libpng", + "libpthread-stubs", + "libx11", + "libxau", + "libxcb", + "libxext", + "libxfixes", + "libxft", + "libxi", + "libxrandr", + "libxrender", + "libxxf86vm", + "llvm18", + "mesa-x11", + "pango", + "pcre", + "pcre2", + "pixman", + "shared-mime-info", + "x11proto", + "xcb-proto", + "xextproto", + "xtrans", + "zlib", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" diff --git a/recipes/wip/x11/lxde/lxpanel/recipe.toml b/recipes/wip/x11/lxde/lxpanel/recipe.toml new file mode 100644 index 00000000..504f6912 --- /dev/null +++ b/recipes/wip/x11/lxde/lxpanel/recipe.toml @@ -0,0 +1,63 @@ +[source] +tar = "https://github.com/lxde/lxpanel/archive/refs/tags/0.11.1.tar.gz" +blake3 = "5f94d410403499485d3abb6885407d6006e5029da538a1b882c670904ac616a5" +script = """ +DYNAMIC_INIT +mkdir -p m4 +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "atk", + "cairo", + "expat", + "fontconfig", + "freetype2", + "fribidi", + "gdk-pixbuf", + "gettext", + "glib", + "gtk3", + "harfbuzz", + "keybinder3", + "libepoxy", + "libffi", + "libfm-gtk3", + "libiconv", + "libicu", + "libjpeg", + "libmenu-cache", + "libpng", + "libpthread-stubs", + "libwnck3", + "libx11", + "libxau", + "libxcb", + "libxext", + "libxfixes", + "libxft", + "libxi", + "libxrandr", + "libxrender", + "libxxf86vm", + "llvm18", + "mesa-x11", + "pango", + "pcre", + "pcre2", + "pixman", + "shared-mime-info", + "x11proto", + "xcb-proto", + "xextproto", + "xtrans", + "zlib", +] +template = "custom" +script = """ +DYNAMIC_INIT +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ +COOKBOOK_CONFIGURE="./configure" +cookbook_configure --enable-gtk3 --with-plugins=all,-cpu,-netstat,-netstatus,-weather +""" From 30a1bfa3be92330deec39636d3b7123fb745163f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 30 Oct 2025 17:19:20 -0600 Subject: [PATCH 3017/3180] libdrm: fix compilation --- recipes/wip/x11/libdrm/recipe.toml | 9 ++++ recipes/wip/x11/libdrm/redox.patch | 80 ++++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 recipes/wip/x11/libdrm/redox.patch diff --git a/recipes/wip/x11/libdrm/recipe.toml b/recipes/wip/x11/libdrm/recipe.toml index f2775b03..7627cf89 100644 --- a/recipes/wip/x11/libdrm/recipe.toml +++ b/recipes/wip/x11/libdrm/recipe.toml @@ -1,6 +1,15 @@ # TODO: Port sys/ioccom.h just like BSD? [source] tar = "https://gitlab.freedesktop.org/mesa/libdrm/-/archive/libdrm-2.4.125/libdrm-libdrm-2.4.125.tar.gz" +blake3 = "33e6448252639f4ff8a8cd30129b335c5d85356c1c93f8d77a79221003b14f66" +patches = ["redox.patch"] [build] template = "meson" +mesonflags = [ + "-Damdgpu=disabled", + "-Dintel=disabled", + "-Dnouveau=disabled", + "-Dradeon=disabled", + "-Dvmwgfx=disabled", +] \ No newline at end of file diff --git a/recipes/wip/x11/libdrm/redox.patch b/recipes/wip/x11/libdrm/redox.patch new file mode 100644 index 00000000..8d1e755a --- /dev/null +++ b/recipes/wip/x11/libdrm/redox.patch @@ -0,0 +1,80 @@ +diff -ruwN source-old/include/drm/drm.h source/include/drm/drm.h +--- source-old/include/drm/drm.h 2025-06-08 06:27:53.000000000 -0600 ++++ source/include/drm/drm.h 2025-10-30 17:17:33.654234959 -0600 +@@ -44,7 +44,11 @@ + #else /* One of the BSDs */ + + #include ++#if defined(__redox__) ++#include ++#else + #include ++#endif + #include + typedef int8_t __s8; + typedef uint8_t __u8; +diff -ruwN source-old/xf86drm.c source/xf86drm.c +--- source-old/xf86drm.c 2025-06-08 06:27:53.000000000 -0600 ++++ source/xf86drm.c 2025-10-30 17:18:58.374958567 -0600 +@@ -57,6 +57,19 @@ + #ifdef MAJOR_IN_SYSMACROS + #include + #endif ++#if defined(__redox__) ++// From musl sys/sysmacros.h ++#define major(x) \ ++ ((unsigned)( (((x)>>31>>1) & 0xfffff000) | (((x)>>8) & 0x00000fff) )) ++#define minor(x) \ ++ ((unsigned)( (((x)>>12) & 0xffffff00) | ((x) & 0x000000ff) )) ++ ++#define makedev(x,y) ( \ ++ (((x)&0xfffff000ULL) << 32) | \ ++ (((x)&0x00000fffULL) << 8) | \ ++ (((y)&0xffffff00ULL) << 12) | \ ++ (((y)&0x000000ffULL)) ) ++#endif + #if HAVE_SYS_SYSCTL_H + #include + #endif +@@ -304,9 +317,14 @@ + char *modifier_name = NULL; + bool result = false; + ++#if defined(__redox__) ++ fprintf(stderr, "open_memstream not available on Redox\n"); ++ return NULL; ++#else + fp = open_memstream(&modifier_name, &size); + if (!fp) + return NULL; ++#endif + + switch (type) { + case DRM_FORMAT_MOD_ARM_TYPE_AFBC: +@@ -409,9 +427,14 @@ + char *mod_amd = NULL; + size_t size = 0; + ++#if defined(__redox__) ++ fprintf(stderr, "open_memstream not available on Redox\n"); ++ return NULL; ++#else + fp = open_memstream(&mod_amd, &size); + if (!fp) + return NULL; ++#endif + + switch (tile_version) { + case AMD_FMT_MOD_TILE_VER_GFX9: +diff -ruwN source-old/xf86drm.h source/xf86drm.h +--- source-old/xf86drm.h 2025-06-08 06:27:53.000000000 -0600 ++++ source/xf86drm.h 2025-10-30 17:17:33.655115281 -0600 +@@ -47,7 +47,7 @@ + #define DRM_MAX_MINOR 64 /* deprecated */ + #endif + +-#if defined(__linux__) ++#if defined(__linux__) || defined(__redox__) + + #define DRM_IOCTL_NR(n) _IOC_NR(n) + #define DRM_IOC_VOID _IOC_NONE From 9f304623a9d68160e9845a1c8e9b22eaa7083d43 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 30 Oct 2025 17:35:02 -0600 Subject: [PATCH 3018/3180] wlroots: fix compilation --- recipes/wip/wayland/wlroots/recipe.toml | 24 +++++++++++++++++--- recipes/wip/wayland/wlroots/redox.patch | 29 +++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 recipes/wip/wayland/wlroots/redox.patch diff --git a/recipes/wip/wayland/wlroots/recipe.toml b/recipes/wip/wayland/wlroots/recipe.toml index ba65fb02..3a58b98f 100644 --- a/recipes/wip/wayland/wlroots/recipe.toml +++ b/recipes/wip/wayland/wlroots/recipe.toml @@ -2,13 +2,31 @@ # build instructions: https://gitlab.freedesktop.org/wlroots/wlroots#building [source] tar = "https://gitlab.freedesktop.org/wlroots/wlroots/-/releases/0.17.0/downloads/wlroots-0.17.0.tar.gz" +blake3 = "f119e53d1f1dd5c8d4c348b0ebc2a780cf4174d158995356a087b26c3bc7d222" +patches = ["redox.patch"] + [build] template = "meson" dependencies = [ + "cairo", + "expat", + "freetype2", + "fontconfig", + "libdrm", + "libffi", + "libpng", + "libpthread-stubs", "libwayland", + "libx11", + "libxau", "libxcb", - "libinput", + "libxext", + "libxfixes", "libxkbcommon", + "libxxf86vm", + "mesa-x11", "pixman", - "seatd", -] + "wayland-protocols", + "x11proto", + "zlib", +] \ No newline at end of file diff --git a/recipes/wip/wayland/wlroots/redox.patch b/recipes/wip/wayland/wlroots/redox.patch new file mode 100644 index 00000000..92b6c8e2 --- /dev/null +++ b/recipes/wip/wayland/wlroots/redox.patch @@ -0,0 +1,29 @@ +diff -ruwN source-old/protocol/meson.build source/protocol/meson.build +--- source-old/protocol/meson.build 2023-11-21 09:06:13.000000000 -0700 ++++ source/protocol/meson.build 2025-10-30 17:22:43.903323248 -0600 +@@ -5,9 +5,8 @@ + ) + wl_protocol_dir = wayland_protos.get_variable('pkgdatadir') + +-wayland_scanner_dep = dependency('wayland-scanner', native: true) + wayland_scanner = find_program( +- wayland_scanner_dep.get_variable('wayland_scanner'), ++ 'wayland-scanner', + native: true, + ) + +diff -ruwN source-old/render/dmabuf.c source/render/dmabuf.c +--- source-old/render/dmabuf.c 2023-11-21 09:06:13.000000000 -0700 ++++ source/render/dmabuf.c 2025-10-30 17:33:46.223683923 -0600 +@@ -5,6 +5,11 @@ + #include + #include "render/dmabuf.h" + ++#if defined(__redox__) ++//TODO: F_DUPFD_CLOEXEC needed for atomic close on exec ++#define F_DUPFD_CLOEXEC F_DUPFD ++#endif ++ + void wlr_dmabuf_attributes_finish(struct wlr_dmabuf_attributes *attribs) { + for (int i = 0; i < attribs->n_planes; ++i) { + close(attribs->fd[i]); From 35a10d52a23e60e8fa932714f02c57c321bf7d68 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 30 Oct 2025 17:46:47 -0600 Subject: [PATCH 3019/3180] libevdev: switch to stable release and use meson --- recipes/wip/libs/other/libevdev/recipe.toml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/recipes/wip/libs/other/libevdev/recipe.toml b/recipes/wip/libs/other/libevdev/recipe.toml index 2c77621d..841f7f26 100644 --- a/recipes/wip/libs/other/libevdev/recipe.toml +++ b/recipes/wip/libs/other/libevdev/recipe.toml @@ -1,5 +1,7 @@ #TODO compilation error [source] -tar = "https://www.freedesktop.org/software/libevdev/libevdev-1.13.1.tar.xz" +tar = "https://www.freedesktop.org/software/libevdev/libevdev-1.12.1.tar.xz" +blake3 = "d4be83e6f6cb4972cf5052f5a046eb820aa529427202f043a9d95b945e73edcd" + [build] -template = "configure" +template = "meson" From e21fa22cc438ec960c955564e0bc01b0e20b4d26 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 30 Oct 2025 17:51:44 -0600 Subject: [PATCH 3020/3180] sway: build out dependencies --- recipes/wip/wayland/sway/recipe.toml | 37 +++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/recipes/wip/wayland/sway/recipe.toml b/recipes/wip/wayland/sway/recipe.toml index 7107dc3d..bb93c00f 100644 --- a/recipes/wip/wayland/sway/recipe.toml +++ b/recipes/wip/wayland/sway/recipe.toml @@ -1,15 +1,40 @@ #TODO not compiled or tested # build instructions: https://github.com/swaywm/sway#compiling-from-source [source] -tar = "https://github.com/swaywm/sway/releases/download/1.8.1/sway-1.8.1.tar.gz" +tar = "https://github.com/swaywm/sway/releases/download/1.9/sway-1.9.tar.gz" +blake3 = "6ae892f82daedef76d26e32c64ebd09cc454ae71f416d2179a512f7764138268" + [build] template = "meson" dependencies = [ - "wlroots", - "libwayland", - "pcre", - "json-c", - "pango", "cairo", + "expat", + "fontconfig", + "freetype2", + "fribidi", "gdk-pixbuf", + "glib", + "harfbuzz", + "json-c", + "libdrm", + "libffi", + "libjpeg", + "libpng", + "libpthread-stubs", + "libwayland", + "libx11", + "libxau", + "libxcb", + "libxext", + "libxft", + "libxkbcommon", + "libxrender", + "pango", + "pcre2", + "pixman", + "shared-mime-info", + "wayland-protocols", + "wlroots", + "x11proto", + "zlib", ] From 788088e49826ea4c87fddda9a22949325f41dd92 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Fri, 31 Oct 2025 15:25:28 +0000 Subject: [PATCH 3021/3180] Read from installer config --- Cargo.lock | 34 ++++++++----- Cargo.toml | 1 + src/bin/repo.rs | 128 ++++++++++++++++++++++++++++++++++++++++++++--- src/cook.rs | 1 + src/cook/tree.rs | 100 ++++++++++++++++++++++++++++++++++++ src/recipe.rs | 2 +- 6 files changed, 245 insertions(+), 21 deletions(-) create mode 100644 src/cook/tree.rs diff --git a/Cargo.lock b/Cargo.lock index 74995894..cfa705a8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1494,9 +1494,9 @@ checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" [[package]] name = "libredox" -version = "0.1.4" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1580801010e535496706ba011c15f8532df6b42297d2e471fec38ceadd8c0638" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ "bitflags 2.9.1", "libc", @@ -1536,6 +1536,12 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" +[[package]] +name = "lz4_flex" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08ab2867e3eeeca90e844d1940eab391c9dc5228783db2ed999acbc0a9ed375a" + [[package]] name = "memchr" version = "2.7.5" @@ -2078,9 +2084,9 @@ dependencies = [ [[package]] name = "redox-scheme" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c00025a04f76fdcf72c15f10c7a12d9f2fdde93e539be9a57d5d632c4158a9e" +checksum = "4da6a0251965958189cdfd5ebb66f99754db4aa165394300aa2b958525d94b64" dependencies = [ "libredox", "redox_syscall", @@ -2104,6 +2110,7 @@ dependencies = [ "portable-pty", "ratatui", "redox-pkg", + "redox_installer", "redoxer", "regex", "serde", @@ -2115,9 +2122,9 @@ dependencies = [ [[package]] name = "redox_installer" -version = "0.2.34" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0895f18dfc8825af0b8c52d687b9eca499c9a53a6c37a248b8ffc5369b2e481f" +checksum = "86b0e2e9b588faacd83ff68ce0f4dcd7a47e7477ff3405c63c79712bcd550931" dependencies = [ "anyhow", "arg_parser", @@ -2126,6 +2133,7 @@ dependencies = [ "fscommon", "gpt", "libc", + "libredox", "pkgar 0.1.18", "pkgar-core 0.1.18", "pkgar-keys 0.1.18", @@ -2157,9 +2165,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.13" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ "bitflags 2.9.1", ] @@ -2194,9 +2202,9 @@ dependencies = [ [[package]] name = "redoxer" -version = "0.2.54" +version = "0.2.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ead20eb76f54e16ecc3e678daca948d49497588a777148ac60d99a67dab8a2b0" +checksum = "ee006e9945ef5ad5b9d877465b5bbf94f37d37aa2d0765c8bcb7a6cd401775b6" dependencies = [ "dirs 6.0.0", "proc-mounts", @@ -2209,13 +2217,14 @@ dependencies = [ [[package]] name = "redoxfs" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03016c4a1366227740e6ee755e492c7b45656bbc43728980c7764c4ddcde73d" +checksum = "063eedabd74ddf71810e72aae1c73f3485ffc7b1e757d9466b9099046c05d7be" dependencies = [ "aes", "argon2", "base64ct", + "bitflags 2.9.1", "endian-num", "env_logger", "fuser", @@ -2223,6 +2232,7 @@ dependencies = [ "libc", "libredox", "log", + "lz4_flex", "range-tree", "redox-path", "redox-scheme", diff --git a/Cargo.toml b/Cargo.toml index e21950d7..75415bb1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,6 +40,7 @@ toml = "0.8" walkdir = "2.3.1" filedescriptor = "0.8.3" ansi-to-tui = "7.0.0" +redox_installer = "0.2.37" [dependencies.ratatui] version = "0.29.0" diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 01fd77ac..97c4066c 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -7,7 +7,8 @@ use cookbook::cook::fetch::{fetch, fetch_offline}; use cookbook::cook::fs::create_target_dir; use cookbook::cook::package::package; use cookbook::cook::pty::{PtyOut, UnixSlavePty, setup_pty}; -use cookbook::recipe::CookRecipe; +use cookbook::cook::tree::{display_tree_entry, format_size}; +use cookbook::recipe::{BuildKind, CookRecipe}; use pkg::PackageName; use pkg::package::PackageError; use ratatui::Terminal; @@ -16,9 +17,10 @@ use ratatui::prelude::TermionBackend; use ratatui::style::{Color, Style}; use ratatui::text::{Line, Span, Text}; use ratatui::widgets::{Block, Borders, Clear, List, ListItem, ListState, Paragraph, Wrap}; +use redox_installer::PackageConfig; use redoxer::target; use std::borrow::Cow; -use std::collections::{HashMap, VecDeque}; +use std::collections::{HashMap, HashSet, VecDeque}; use std::io::{Read, Write, stderr, stdin, stdout}; use std::path::PathBuf; use std::process::Command; @@ -56,6 +58,7 @@ const REPO_HELP_STR: &str = r#" --with-package-deps include package deps --all apply to all recipes in --category= apply to all recipes in / + --filesystem= override recipes config using installer file cook env and their defaults: CI= set to any value to disable TUI @@ -71,6 +74,7 @@ struct CliConfig { repo_dir: PathBuf, sysroot_dir: PathBuf, category: Option, + filesystem: Option, with_package_deps: bool, all: bool, cook: CookConfig, @@ -92,7 +96,10 @@ impl CliCommand { *self == CliCommand::Tree || *self == CliCommand::Find } pub fn is_building(&self) -> bool { - *self == CliCommand::Fetch || *self == CliCommand::Cook + *self == CliCommand::Fetch || *self == CliCommand::Cook || *self == CliCommand::Tree + } + pub fn is_cleaning(&self) -> bool { + *self == CliCommand::Clean || *self == CliCommand::Unfetch } } @@ -143,6 +150,7 @@ impl CliConfig { with_package_deps: false, cook: get_config().cook.clone(), all: false, + filesystem: None, }) } } @@ -188,6 +196,9 @@ fn main_inner() -> anyhow::Result<()> { } return Ok(()); } + if command == CliCommand::Tree { + return handle_tree(&recipe_names, &config); + } let verbose = config.cook.verbose; for recipe in &recipe_names { @@ -251,7 +262,7 @@ fn repo_inner( CliCommand::Unfetch => handle_clean(recipe, config, true, true)?, CliCommand::Clean => handle_clean(recipe, config, false, true)?, CliCommand::Push => handle_push(recipe, config)?, - CliCommand::Tree => todo!("tree command is WIP"), + CliCommand::Tree => unreachable!(), CliCommand::Find => println!("{}", recipe.dir.display()), }) } @@ -268,6 +279,12 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec config.repo_dir = PathBuf::from(value), "--sysroot" => config.sysroot_dir = PathBuf::from(value), "--category" => config.category = Some(PathBuf::from(value)), + "--filesystem" => { + config.filesystem = Some({ + let r = redox_installer::Config::from_file(&PathBuf::from(value)); + r.context("Unable to read filesystem installer config")? + }) + } _ => { eprintln!("Error: Unknown flag with value: {}", arg); process::exit(1); @@ -309,14 +326,14 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec, PackageError>>()? } else { if recipe_names.is_empty() { - bail!("Error: No recipe names provided and --all flag was not used."); + if let Some(conf) = config.filesystem.as_ref() { + recipe_names = conf + .packages + .iter() + .filter_map(|(f, v)| { + // same logic as list_installer + match v { + PackageConfig::Build(rule) if rule == "source" || rule == "local" => {} + PackageConfig::Build(rule) if rule == "binary" || rule == "ignore" => { + return None; + } + _ if conf.general.repo_binary == Some(true) => { + return None; + } + _ => {} + } + PackageName::new(f).ok() + }) + .collect(); + } else { + bail!( + "Error: No recipe names or filesystem config provided and --all flag was not used." + ); + } } if config.with_package_deps { recipe_names = CookRecipe::get_package_deps_recursive(&recipe_names, WALK_DEPTH) @@ -344,7 +384,11 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec {} + // keep local changes + PackageConfig::Build(rule) if rule == "local" => recipe.recipe.source = None, + // should not gone here, but if it does, then some deps need it + PackageConfig::Build(rule) if rule == "binary" || rule == "ignore" => { + recipe.recipe.source = None; + recipe.recipe.build = cookbook::recipe::BuildRecipe { + kind: BuildKind::Remote, + dependencies: Vec::new(), + }; + } + PackageConfig::Build(rule) => { + return Err(anyhow!( + // Fail fast because we could risk losing local changes if "local" was typo'ed + "Invalid pkg config {} = \"{}\"\nExpecting either 'source', 'local', 'binary' or 'ignore'", + recipe.name.as_str(), + rule + )); + } + _ => { + if conf.general.repo_binary == Some(true) { + // same reason as Build("binary") + recipe.recipe.source = None; + recipe.recipe.build = cookbook::recipe::BuildRecipe { + kind: BuildKind::Remote, + dependencies: Vec::new(), + }; + } + } + } + } + } + } if command.is_informational() { // avoid extra data that clobber stdout @@ -445,6 +529,34 @@ fn handle_push(recipe: &CookRecipe, config: &CliConfig) -> anyhow::Result<()> { )) } +fn handle_tree(recipes: &Vec, _config: &CliConfig) -> anyhow::Result<()> { + let recipe_map: HashMap<&PackageName, &CookRecipe> = + recipes.iter().map(|r| (&r.name, r)).collect(); + + let mut total_size: u64 = 0; + let mut visited: HashSet = HashSet::new(); + + let roots: Vec<&CookRecipe> = recipes.iter().filter(|r| !r.is_deps).collect(); + + let num_roots = roots.len(); + + for (i, root) in roots.iter().enumerate() { + display_tree_entry( + &root.name, + &recipe_map, + "", + i == num_roots - 1, + &mut visited, + &mut total_size, + )?; + } + + println!(""); + println!("Estimated image size: {}", format_size(total_size)); + + Ok(()) +} + // // ------------- TUI SPECIFIC CODE ------------------- // diff --git a/src/cook.rs b/src/cook.rs index 14c752f8..d0946e0a 100644 --- a/src/cook.rs +++ b/src/cook.rs @@ -5,3 +5,4 @@ pub mod fs; pub mod package; pub mod pty; pub mod script; +pub mod tree; diff --git a/src/cook/tree.rs b/src/cook/tree.rs new file mode 100644 index 00000000..be709d47 --- /dev/null +++ b/src/cook/tree.rs @@ -0,0 +1,100 @@ +use std::{ + collections::{HashMap, HashSet}, + fs::read_to_string, +}; + +use anyhow::{Context, anyhow}; +use pkg::{Package, PackageName}; + +use crate::{cook::fs::create_target_dir, recipe::CookRecipe}; + +pub fn display_tree_entry( + package_name: &PackageName, + recipe_map: &HashMap<&PackageName, &CookRecipe>, + prefix: &str, + is_last: bool, + visited: &mut HashSet, + total_size: &mut u64, +) -> anyhow::Result<()> { + let line_prefix = if is_last { "└── " } else { "├── " }; + let child_prefix = if is_last { " " } else { "│ " }; + + let cook_recipe = match recipe_map.get(package_name) { + Some(r) => r, + None => { + // TODO: This is a dependency, but it's not in recipe list + println!( + "{}{}{} (dependency info missing)", + prefix, line_prefix, package_name + ); + return Ok(()); + } + }; + + let package_dir = &cook_recipe.dir; + let pkg_path = create_target_dir(package_dir) + .map_err(|e| anyhow!(e))? + .join("stage.pkgar"); + let pkg_toml = create_target_dir(package_dir) + .map_err(|e| anyhow!(e))? + .join("stage.toml"); + + let deduped = visited.contains(package_name); + let (size_str, pkg_size) = match (std::fs::metadata(&pkg_path), deduped) { + (_, true) => ("".to_string(), 0), + (Ok(meta), _) => { + let size = meta.len(); + (format!("[{}]", format_size(size)), size) + } + (Err(_), _) => ("(not built)".to_string(), 0), + }; + + println!("{}{}{} {}", prefix, line_prefix, package_name, size_str); + + if deduped { + return Ok(()); + } + + visited.insert(package_name.clone()); + *total_size += pkg_size; + let pkg_meta: Package; + + let mut all_deps_set: HashSet<&PackageName> = HashSet::new(); + if let Ok(pkg_toml_str) = read_to_string(&pkg_toml) { + // more accurate with auto deps + pkg_meta = toml::from_str(&pkg_toml_str) + .context(format!("Unable to parse {}", pkg_toml.display()))?; + all_deps_set.extend(pkg_meta.depends.iter()); + } else { + all_deps_set.extend(cook_recipe.recipe.package.dependencies.iter()); + } + + if all_deps_set.is_empty() { + return Ok(()); + } + + let sorted_deps: Vec<&PackageName> = all_deps_set.into_iter().collect(); + let deps_count = sorted_deps.len(); + for (i, dep_name) in sorted_deps.iter().enumerate() { + display_tree_entry( + dep_name, + recipe_map, + &format!("{}{}", prefix, child_prefix), + i == deps_count - 1, + visited, + total_size, + )?; + } + + Ok(()) +} + +pub fn format_size(bytes: u64) -> String { + if bytes == 0 { + return "0 B".to_string(); + } + const UNITS: [&str; 5] = ["B", "KiB", "MiB", "GiB", "TiB"]; + let i = (bytes as f64).log(1024.0).floor() as usize; + let size = bytes as f64 / 1024.0_f64.powi(i as i32); + format!("{:.2} {}", size, UNITS[i]) +} diff --git a/src/recipe.rs b/src/recipe.rs index 98ca4360..6dd6da09 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -180,7 +180,7 @@ pub struct CookRecipe { pub name: PackageName, pub dir: PathBuf, pub recipe: Recipe, - /// If true, the source will not be checked for freshness + /// If false, it's listed on install config pub is_deps: bool, } From 7a4b749d6d9578ca0609801539e0c1a637d2002c Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sat, 1 Nov 2025 18:20:54 +0700 Subject: [PATCH 3022/3180] Make servo render with Orbital --- recipes/libs/mesa/recipe.toml | 14 +- recipes/wip/web/servo/recipe.toml | 29 +- recipes/wip/web/servo/redox.patch | 634 ++++++++--------------------- recipes/wip/x11/libdrm/recipe.toml | 1 - 4 files changed, 176 insertions(+), 502 deletions(-) diff --git a/recipes/libs/mesa/recipe.toml b/recipes/libs/mesa/recipe.toml index 59601081..105a2630 100644 --- a/recipes/libs/mesa/recipe.toml +++ b/recipes/libs/mesa/recipe.toml @@ -7,15 +7,18 @@ branch = "redox-24.0" template = "custom" dependencies = [ "expat", + "libdrm", + "liborbital", "llvm18", "zlib", ] script = """ DYNAMIC_INIT -export CFLAGS+=" -DHAVE_PTHREAD=1" -export CPPFLAGS+=" -DHAVE_PTHREAD=1" +#TODO: Should be CPPFLAGS but cookbook_meson isn't reading it +export CFLAGS+=" -DHAVE_PTHREAD=1 -I${COOKBOOK_SYSROOT}/include/libdrm" export LLVM_CONFIG="${TARGET}-llvm-config" +export LDFLAGS+=" -lorbital" if [ "${COOKBOOK_DYNAMIC}" == "1" ]; then COOKBOOK_MESON_FLAGS+=(-Dshared-llvm=enabled) @@ -24,12 +27,13 @@ else fi cookbook_meson \ + -Ddri-drivers-path=/usr/lib/dri \ + -Degl=enabled \ -Dglx=disabled \ -Dllvm=enabled \ -Dosmesa=true \ - -Dplatforms= \ - -Dshader-cache=disabled \ - -Dshared-glapi=disabled + -Dplatforms=redox \ + -Dshader-cache=disabled # Hack to add LLVM libs #TODO: only add necessary LLVM libs, not all of them diff --git a/recipes/wip/web/servo/recipe.toml b/recipes/wip/web/servo/recipe.toml index 80c03a3c..9d1b662d 100644 --- a/recipes/wip/web/servo/recipe.toml +++ b/recipes/wip/web/servo/recipe.toml @@ -1,6 +1,6 @@ [source] git = "https://github.com/servo/servo.git" -rev = "25fea1e086c46d611cf87db439430994e4f56cd5" +rev = "721214fbe44bf11b968e5e076e5b0af5b5663447" patches = [ "redox.patch" ] @@ -12,27 +12,10 @@ cp ../.servobuild ./ template = "custom" dependencies = [ "freetype2", - "expat", - "gettext", - "glib", - "gstreamer", - "harfbuzz", - "libffi", - "libpng", - "libiconv", - "libx11", - "libxcb", "libpng", "libstdcxx-v3", - "openssl1", - "pcre", "zlib", - "x11proto", - "x11proto-kb", - "xcb-proto", - "xextproto", - "libxau", - "libpthread-stubs", + "mesa", "fontconfig", "expat", ] @@ -48,7 +31,7 @@ export TARGET_AR="$AR" # pkg-config crate can only recognize one path to pkgconfig export PKG_CONFIG_PATH_x86_64_unknown_redox="${COOKBOOK_SYSROOT}/lib/pkgconfig" export PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_redox="${COOKBOOK_SYSROOT}/lib/pkgconfig" -rsync -a -v ${COOKBOOK_SYSROOT}/usr/share/pkgconfig/*.pc ${COOKBOOK_SYSROOT}/lib/pkgconfig/ +# rsync -a -v ${COOKBOOK_SYSROOT}/usr/share/pkgconfig/*.pc ${COOKBOOK_SYSROOT}/lib/pkgconfig/ export RUSTFLAGS="$RUSTFLAGS -L native=${COOKBOOK_SYSROOT}/lib -C link-arg=-Wl,-rpath-link,${COOKBOOK_SYSROOT}/lib" @@ -67,9 +50,3 @@ mv ${COOKBOOK_STAGE}/usr/bin/servo ${COOKBOOK_STAGE}/usr/lib/servo/bin/ ln -s ../lib/servo/bin/servo ${COOKBOOK_STAGE}/usr/bin/servo rsync -a -v ${COOKBOOK_SOURCE}/resources ${COOKBOOK_STAGE}/usr/lib/servo/ """ - -[package] -dependencies = [ - "libxcursor", - "libxkbcommon-x11", -] diff --git a/recipes/wip/web/servo/redox.patch b/recipes/wip/web/servo/redox.patch index c8ffd503..d2dc302f 100644 --- a/recipes/wip/web/servo/redox.patch +++ b/recipes/wip/web/servo/redox.patch @@ -1,206 +1,120 @@ diff --git a/Cargo.toml b/Cargo.toml -index 2dcb622934f..0d5f41924c0 100644 +index 8589f4c8078..5f64981206c 100644 --- a/Cargo.toml +++ b/Cargo.toml -@@ -55,14 +55,14 @@ ctr = "0.9.2" - darling = { version = "0.20", default-features = false } - data-url = "0.3" - devtools_traits = { path = "components/shared/devtools" } --dpi = "0.1" -+dpi = { git = "https://gitlab.redox-os.org/njskalski/winit.git", branch = "redox_mods2"} - embedder_traits = { path = "components/shared/embedder" } - encoding_rs = "0.8" - env_logger = "0.11" - euclid = "0.22" - fnv = "1.0" - fonts_traits = { path = "components/shared/fonts" } --freetype-sys = "0.20" -+freetype-sys = { version ="0.20.1", default-features = false} - fxhash = "0.2" - getopts = "0.2.11" - gleam = "0.15" -@@ -91,7 +91,7 @@ imsz = "0.2" - indexmap = { version = "2.10.0", features = ["std"] } - ipc-channel = "0.20" +@@ -31,7 +31,7 @@ arboard = "3" + arrayvec = "0.7" + async-tungstenite = { version = "0.29", features = ["tokio-rustls-webpki-roots"] } + atomic_refcell = "0.1.13" +-aws-lc-rs = { version = "1.14", default-features = false, features = ["aws-lc-sys"] } ++aws-lc-rs = { version = "=1.13.3", default-features = false, features = ["aws-lc-sys"] } + background_hang_monitor_api = { path = "components/shared/background_hang_monitor" } + backtrace = "0.3" + base = { path = "components/shared/base" } +@@ -88,7 +88,7 @@ imsz = "0.2" + indexmap = { version = "2.11.4", features = ["std"] } + ipc-channel = "0.20.2" itertools = "0.14" -js = { package = "mozjs", git = "https://github.com/servo/mozjs" } -+js = { package = "mozjs", git = "https://gitlab.redox-os.org/willnode/mozjs.git", branch = "redox_mods" } - keyboard-types = { version = "0.8.1", features = ["serde", "webdriver"] } ++js = { package = "mozjs", path = "/home/willnode/mozjs/mozjs" } + keyboard-types = { version = "0.8.3", features = ["serde", "webdriver"] } kurbo = { version = "0.11.3", features = ["euclid"] } layout_api = { path = "components/shared/layout" } -@@ -151,7 +151,7 @@ stylo_config = { git = "https://github.com/servo/stylo", branch = "2025-08-01" } - stylo_dom = { git = "https://github.com/servo/stylo", branch = "2025-08-01" } - stylo_malloc_size_of = { git = "https://github.com/servo/stylo", branch = "2025-08-01" } - stylo_traits = { git = "https://github.com/servo/stylo", branch = "2025-08-01" } --surfman = { git = "https://github.com/servo/surfman", rev = "f7688b4585f9e0b5d4bf8ee8e4a91e82349610b1", features = ["chains"] } -+surfman = { git = "https://gitlab.redox-os.org/njskalski/surfman.git", branch = "redox_mods", features = ["sm-x11"] } +@@ -148,7 +148,7 @@ stylo_config = { git = "https://github.com/servo/stylo", branch = "2025-10-01" } + stylo_dom = { git = "https://github.com/servo/stylo", branch = "2025-10-01" } + stylo_malloc_size_of = { git = "https://github.com/servo/stylo", branch = "2025-10-01" } + stylo_traits = { git = "https://github.com/servo/stylo", branch = "2025-10-01" } +-surfman = { version = "0.10.0", features = ["chains"] } ++surfman = { path = "/home/willnode/surfman", features = ["chains"] } syn = { version = "2", default-features = false, features = ["clone-impls", "derive", "parsing"] } synstructure = "0.13" taffy = { version = "0.9", default-features = false, features = ["calc", "detailed_layout_info", "grid", "std"] } -@@ -178,14 +178,14 @@ vello_cpu = { git = "https://github.com/linebender/vello", rev = "b0e2e598ac62c7 +@@ -174,16 +174,16 @@ vello_cpu = { git = "https://github.com/linebender/vello", rev = "fdf025a88dd00c webdriver = "0.53.0" webgpu_traits = { path = "components/shared/webgpu" } webpki-roots = "1.0" --webrender = { git = "https://github.com/servo/webrender", branch = "0.67", features = ["capture"] } --webrender_api = { git = "https://github.com/servo/webrender", branch = "0.67" } -+webrender = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } -+webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } +-webrender = { git = "https://github.com/servo/webrender", branch = "0.68", features = ["capture"] } +-webrender_api = { git = "https://github.com/servo/webrender", branch = "0.68" } ++webrender = { git = "https://github.com/willnode/webrender.git", branch = "0.68-redox", features = ["capture"] } ++webrender_api = { git = "https://github.com/willnode/webrender.git", branch = "0.68-redox" } webxr-api = { path = "components/shared/webxr" } - wgpu-core = "25" - wgpu-types = "25" + wgpu-core = "26" + wgpu-types = "26" winapi = "0.3" - windows-sys = "0.59" + windows-sys = "0.61" -winit = "0.30.12" -+winit = { git = "https://gitlab.redox-os.org/njskalski/winit.git", branch = "redox_mods2"} ++winit = { version = "0.30.12", default-features = false } wio = "0.2" - wr_malloc_size_of = { git = "https://github.com/servo/webrender", branch = "0.67" } +-wr_malloc_size_of = { git = "https://github.com/servo/webrender", branch = "0.68" } ++wr_malloc_size_of = { git = "https://github.com/willnode/webrender.git", branch = "0.68-redox" } xi-unicode = "0.3.0" -@@ -222,6 +222,20 @@ lto = "thin" + xml5ever = "0.35" + xpath = { path = "components/xpath" } +@@ -232,6 +232,18 @@ lto = "thin" codegen-units = 1 [patch.crates-io] -+ipc-channel = { git = "https://gitlab.redox-os.org/njskalski/ipc-channel.git", branch="redox_mods" } -+servo_malloc_size_of = { path = "./components/malloc_size_of" } -+wr_malloc_size_of = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods"} ++ipc-channel = { git = "https://github.com/willnode/ipc-channel.git", branch="redox" } ++#servo_malloc_size_of = { path = "./components/malloc_size_of" } +tikv-jemalloc-sys = { version = "0.6.0", git = "https://gitlab.redox-os.org/njskalski/jemallocator.git", branch = "redox_mods" } +tikv-jemallocator = { version = "0.6.0", git = "https://gitlab.redox-os.org/njskalski/jemallocator.git", branch = "redox_mods" } +mozangle = { git = "https://gitlab.redox-os.org/willnode/mozangle.git", branch = "redox_mods"} -+# gaol = { git = "https://gitlab.redox-os.org/njskalski/gaol.git", branch = "redox_mods" } +aws-lc-rs = { git = "https://gitlab.redox-os.org/njskalski/aws-lc-rs.git", branch = "redox_mods" } +# mozjs_sys = { git = "https://gitlab.redox-os.org/njskalski/mozjs.git", rev = "e2ee9c77148c3af4f11fdff9a2cbd7e449d48d33"} +# mozjs = { git = "https://gitlab.redox-os.org/njskalski/mozjs.git", branch = "redox_mods"} -+x11rb = { git = "https://gitlab.redox-os.org/njskalski/x11rb.git", branch = "redox_mods"} ++# x11rb = { git = "https://gitlab.redox-os.org/njskalski/x11rb.git", branch = "redox_mods"} +libz-sys = { git = "https://github.com/willnode/libz-sys.git", branch = "servo"} -+winit = { git = "https://gitlab.redox-os.org/njskalski/winit.git", branch = "redox_mods2"} ++# winit = { git = "https://gitlab.redox-os.org/njskalski/winit.git", branch = "redox_mods2"} +# freetype-sys = { git = "https://github.com/PistonDevelopers/freetype-sys.git", branch = "master" } # If you need to temporarily test Servo with a local fork of some upstream # crate, add that here. Use the form: # -@@ -250,7 +264,7 @@ codegen-units = 1 +@@ -260,7 +272,7 @@ codegen-units = 1 # # [patch."https://github.com/servo/webrender"] # webrender = { path = "../webrender/webrender" } -# webrender_api = { path = "../webrender/webrender_api" } -+# webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } = { path = "../webrender/webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" }" } ++# webrender_api = { git = "https://github.com/willnode/webrender.git", branch = "0.68-redox" } = { path = "../webrender/webrender_api = { git = "https://github.com/willnode/webrender.git", branch = "0.68-redox" }" } # wr_malloc_size_of = { path = "../webrender/wr_malloc_size_of" } # # Or for another Git dependency: -diff --git a/components/canvas/Cargo.toml b/components/canvas/Cargo.toml -index ef0c84977f2..4edb129dd97 100644 ---- a/components/canvas/Cargo.toml -+++ b/components/canvas/Cargo.toml -@@ -38,7 +38,7 @@ raqote = { version = "0.8.5", optional = true } - servo_arc = { workspace = true } - stylo = { workspace = true } - unicode-script = { workspace = true } --webrender_api = { workspace = true } -+webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } - servo_config = { path = "../config" } - vello = { workspace = true, optional = true } - vello_cpu = { workspace = true, optional = true } -diff --git a/components/compositing/Cargo.toml b/components/compositing/Cargo.toml -index d5792b858db..38132ba0f2c 100644 ---- a/components/compositing/Cargo.toml -+++ b/components/compositing/Cargo.toml -@@ -44,10 +44,10 @@ servo-tracing = { workspace = true } - stylo_traits = { workspace = true } - timers = { path = "../timers" } - tracing = { workspace = true, optional = true } --webrender = { workspace = true } --webrender_api = { workspace = true } -+webrender = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } -+webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } - webxr = { path = "../webxr", optional = true } --wr_malloc_size_of = { workspace = true } -+wr_malloc_size_of = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } - - [dev-dependencies] - surfman = { workspace = true } diff --git a/components/constellation/Cargo.toml b/components/constellation/Cargo.toml -index a982bcbfe73..cb519367edd 100644 +index 5974dd08eea..74e43604b00 100644 --- a/components/constellation/Cargo.toml +++ b/components/constellation/Cargo.toml -@@ -58,10 +58,10 @@ stylo_traits = { workspace = true } - tracing = { workspace = true, optional = true } - webgpu = { path = "../webgpu" } - webgpu_traits = { workspace = true } --webrender = { workspace = true } --webrender_api = { workspace = true } -+webrender = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods", features = ["capture"] } -+webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } +@@ -67,4 +67,4 @@ webrender_api = { workspace = true } webxr-api = { workspace = true, features = ["ipc"] } - servo-tracing = { workspace = true } --[target.'cfg(any(target_os="macos", all(not(target_os = "windows"), not(target_os = "ios"), not(target_os="android"), not(target_env="ohos"), not(target_arch="arm"), not(target_arch="aarch64"))))'.dependencies] -+[target.'cfg(any(target_os="macos", all(not(target_os = "windows"), not(target_os = "ios"), not(target_os="android"), not(target_os="redox"), not(target_env="ohos"), not(target_arch="arm"), not(target_arch="aarch64"))))'.dependencies] - gaol = "0.2.1" + [target.'cfg(any(target_os="macos", all(not(target_os = "windows"), not(target_os = "ios"), not(target_os="android"), not(target_env="ohos"), not(target_arch="arm"), not(target_arch="aarch64"))))'.dependencies] +-gaol = "0.2.1" ++gaol = { git = "https://github.com/willnode/gaol.git", branch = "redox" } diff --git a/components/constellation/sandboxing.rs b/components/constellation/sandboxing.rs -index 02a6f4ed6f6..81dae2503e8 100644 +index 02a6f4ed6f6..e88b3bd6ee1 100644 --- a/components/constellation/sandboxing.rs +++ b/components/constellation/sandboxing.rs -@@ -11,6 +11,7 @@ use std::{env, process}; - not(target_os = "windows"), - not(target_os = "ios"), - not(target_os = "android"), -+ not(target_os = "redox"), - not(target_env = "ohos"), - not(target_arch = "arm"), - not(target_arch = "aarch64") -@@ -99,7 +100,8 @@ pub fn content_process_sandbox_profile() -> Profile { +@@ -99,7 +99,7 @@ pub fn content_process_sandbox_profile() -> Profile { not(target_os = "android"), not(target_env = "ohos"), not(target_arch = "arm"), - not(target_arch = "aarch64") + not(target_arch = "aarch64"), -+ not(target_os = "redox"), ))] pub fn content_process_sandbox_profile() -> Profile { use std::path::PathBuf; -@@ -128,6 +130,7 @@ pub fn content_process_sandbox_profile() -> Profile { - target_os = "windows", - target_os = "ios", - target_os = "android", -+ target_os = "redox", - target_env = "ohos", - target_arch = "arm", - -@@ -175,7 +178,8 @@ pub fn spawn_multiprocess(content: UnprivilegedContent) -> Result Result Result { use gaol::sandbox::{self, Sandbox, SandboxMethods}; -@@ -243,6 +247,12 @@ pub fn spawn_multiprocess(_content: UnprivilegedContent) -> Result Result { -+ log::error!("Multiprocess is not supported on Redox."); -+ process::exit(1); -+} -+ - fn setup_common(command: &mut C, token: String) { - C::arg(command, "--content-process"); - C::arg(command, token); diff --git a/components/fonts/Cargo.toml b/components/fonts/Cargo.toml -index e4c27ca6c6f..acf5335e922 100644 +index a22f053f133..3ce1e22b76e 100644 --- a/components/fonts/Cargo.toml +++ b/components/fonts/Cargo.toml -@@ -53,7 +53,7 @@ tracing = { workspace = true, optional = true } - unicode-properties = { workspace = true } - unicode-script = { workspace = true } - url = { workspace = true } --webrender_api = { workspace = true } -+webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } - servo-tracing = { workspace = true } - - [target.'cfg(target_os = "macos")'.dependencies] -@@ -62,11 +62,11 @@ core-foundation = "0.9" +@@ -61,11 +61,11 @@ core-foundation = "0.9" core-graphics = "0.23" core-text = "20.1" @@ -215,10 +129,10 @@ index e4c27ca6c6f..acf5335e922 100644 [target.'cfg(target_os = "android")'.dependencies] diff --git a/components/fonts/font.rs b/components/fonts/font.rs -index 751aeecdba7..1b62cba5851 100644 +index 12bde2769de..d76b3626ef5 100644 --- a/components/fonts/font.rs +++ b/components/fonts/font.rs -@@ -947,7 +947,7 @@ pub struct FontBaseline { +@@ -912,7 +912,7 @@ pub struct FontBaseline { /// let mapped_weight = apply_font_config_to_style_mapping(&mapping, weight as f64); /// ``` #[cfg(all( @@ -228,10 +142,10 @@ index 751aeecdba7..1b62cba5851 100644 ))] pub(crate) fn map_platform_values_to_style_values(mapping: &[(f64, f64)], value: f64) -> f64 { diff --git a/components/fonts/platform/freetype/mod.rs b/components/fonts/platform/freetype/mod.rs -index feea468008e..24f59a276d4 100644 +index 3698087927a..42cf4b128ba 100644 --- a/components/fonts/platform/freetype/mod.rs +++ b/components/fonts/platform/freetype/mod.rs -@@ -16,7 +16,7 @@ use webrender_api::NativeFontHandle; +@@ -5,7 +5,7 @@ pub mod font; mod freetype_face; @@ -241,10 +155,10 @@ index feea468008e..24f59a276d4 100644 #[cfg(target_os = "android")] diff --git a/components/fonts/platform/mod.rs b/components/fonts/platform/mod.rs -index 2c77d17d5d5..3138343feb2 100644 +index c8e1dc14800..444364fe6d0 100644 --- a/components/fonts/platform/mod.rs +++ b/components/fonts/platform/mod.rs -@@ -3,25 +3,25 @@ +@@ -3,32 +3,32 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ #[cfg(all( @@ -271,19 +185,18 @@ index 2c77d17d5d5..3138343feb2 100644 use crate::FallbackFontSelectionOptions; -#[cfg(any(target_os = "linux", target_os = "android"))] +#[cfg(any(target_os = "linux", target_os = "android", target_os="redox"))] - pub use crate::platform::freetype::{LocalFontIdentifier, font, font_list}; + pub use crate::platform::freetype::{font, font_list}; #[cfg(target_os = "macos")] - pub use crate::platform::macos::{ -@@ -30,7 +30,7 @@ pub use crate::platform::macos::{ + pub use crate::platform::macos::{core_text_font_cache, font, font_list}; #[cfg(target_os = "windows")] - pub use crate::platform::windows::{font, font_list, font_list::LocalFontIdentifier}; + pub use crate::platform::windows::{font, font_list}; -#[cfg(any(target_os = "linux", target_os = "android"))] +#[cfg(any(target_os = "linux", target_os = "android", target_os="redox"))] pub mod freetype; #[cfg(target_os = "macos")] -@@ -47,7 +47,7 @@ mod windows { +@@ -45,7 +45,7 @@ mod windows { } #[cfg(all( @@ -292,107 +205,30 @@ index 2c77d17d5d5..3138343feb2 100644 not(target_os = "android"), not(target_env = "ohos") ))] -diff --git a/components/geometry/Cargo.toml b/components/geometry/Cargo.toml -index 8634bc1d18c..a4115f6bf90 100644 ---- a/components/geometry/Cargo.toml -+++ b/components/geometry/Cargo.toml -@@ -16,5 +16,5 @@ app_units = { workspace = true } - euclid = { workspace = true } - malloc_size_of = { workspace = true } - malloc_size_of_derive = { workspace = true } --webrender = { workspace = true } --webrender_api = { workspace = true } -+webrender = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } -+webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } -diff --git a/components/layout/Cargo.toml b/components/layout/Cargo.toml -index 139f2ce3dba..0196a3f15e0 100644 ---- a/components/layout/Cargo.toml -+++ b/components/layout/Cargo.toml -@@ -62,7 +62,7 @@ tracing = { workspace = true, optional = true } - unicode-bidi = { workspace = true } - unicode-script = { workspace = true } - url = { workspace = true } --webrender_api = { workspace = true } -+webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } - xi-unicode = { workspace = true } - servo-tracing = { workspace = true } - -diff --git a/components/malloc_size_of/Cargo.toml b/components/malloc_size_of/Cargo.toml -index 6e5e45a4e35..8de32d2c798 100644 ---- a/components/malloc_size_of/Cargo.toml -+++ b/components/malloc_size_of/Cargo.toml -@@ -39,5 +39,5 @@ unicode-script = { workspace = true } - url = { workspace = true } - urlpattern = { workspace = true } - uuid = { workspace = true } --webrender_api = { workspace = true } --wr_malloc_size_of = { workspace = true } -+webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } -+wr_malloc_size_of = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods"} -diff --git a/components/media/Cargo.toml b/components/media/Cargo.toml -index cf51080ec7a..effa64922f8 100644 ---- a/components/media/Cargo.toml -+++ b/components/media/Cargo.toml -@@ -20,4 +20,4 @@ log = { workspace = true } - serde = { workspace = true } - servo-media = { workspace = true } - servo_config = { path = "../config" } --webrender_api = { workspace = true } -+webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } diff --git a/components/net/Cargo.toml b/components/net/Cargo.toml -index 7556a1bf81f..38252d09b54 100644 +index 3d2eb3c7594..fb9db9ea4d4 100644 --- a/components/net/Cargo.toml +++ b/components/net/Cargo.toml -@@ -77,8 +77,7 @@ tungstenite = { workspace = true } - url = { workspace = true } +@@ -76,7 +76,6 @@ url = { workspace = true } uuid = { workspace = true } webpki-roots = { workspace = true } --webrender_api = { workspace = true } + webrender_api = { workspace = true } - -+webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } [dev-dependencies] embedder_traits = { workspace = true, features = ["baked-default-resources"] } flate2 = "1" diff --git a/components/pixels/Cargo.toml b/components/pixels/Cargo.toml -index 9ba20db80c0..fe33d20b88b 100644 +index 9ba20db80c0..efd49741a7b 100644 --- a/components/pixels/Cargo.toml +++ b/components/pixels/Cargo.toml -@@ -19,8 +19,7 @@ log = { workspace = true } - malloc_size_of = { workspace = true } +@@ -20,7 +20,6 @@ malloc_size_of = { workspace = true } malloc_size_of_derive = { workspace = true } serde = { workspace = true, features = ["derive"] } --webrender_api = { workspace = true } + webrender_api = { workspace = true } - -+webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } [dev-dependencies] criterion = { version = "0.5", features = ["html_reports"] } -diff --git a/components/script/Cargo.toml b/components/script/Cargo.toml -index 51e81f6c085..fb85b1ea6b1 100644 ---- a/components/script/Cargo.toml -+++ b/components/script/Cargo.toml -@@ -136,7 +136,7 @@ utf-8 = "0.7" - uuid = { workspace = true, features = ["serde"] } - webdriver = { workspace = true } - webgpu_traits = { workspace = true } --webrender_api = { workspace = true } -+webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } - webxr-api = { workspace = true, features = ["ipc"], optional = true } - wgpu-core = { workspace = true } - wgpu-types = { workspace = true } -diff --git a/components/script/dom/bindings/buffer_source.rs b/components/script/dom/bindings/buffer_source.rs -index a271cad5643..551cf044eb2 100644 ---- a/components/script/dom/bindings/buffer_source.rs -+++ b/components/script/dom/bindings/buffer_source.rs -@@ -887,7 +887,7 @@ impl DataBlock { - *cx, - range.end - range.start, - // SAFETY: This is safe because we have checked there is no overlapping view -- (*raw)[range.clone()].as_mut_ptr() as _, -+ (&mut (*raw))[range.clone()].as_mut_ptr() as _, - Some(free_func), - raw as _, - ) diff --git a/components/script/dom/navigatorinfo.rs b/components/script/dom/navigatorinfo.rs index f3e6ddc109b..ee83d327df9 100644 --- a/components/script/dom/navigatorinfo.rs @@ -427,30 +263,22 @@ index c28f900f6ce..2445c2ec9e4 100644 + panic!("Can't find python (tried `{command:?}`)!") } diff --git a/components/servo/Cargo.toml b/components/servo/Cargo.toml -index 2c1f75dca13..03bb5596dc1 100644 +index e400c592bed..211813cb6c6 100644 --- a/components/servo/Cargo.toml +++ b/components/servo/Cargo.toml -@@ -25,7 +25,7 @@ default = ["clipboard", "raqote"] - clipboard = ["dep:arboard"] - crown = ["script/crown"] - debugmozjs = ["script/debugmozjs"] --background_hang_monitor = ["background_hang_monitor/sampler"] -+# background_hang_monitor = ["background_hang_monitor/sampler"] - jitspew = ["script/jitspew"] - js_backtrace = ["script/js_backtrace"] - media-gstreamer = ["servo-media-gstreamer", "gstreamer"] -@@ -117,8 +117,8 @@ surfman = { workspace = true } - tracing = { workspace = true, optional = true } - url = { workspace = true } - webgpu = { path = "../webgpu" } --webrender = { workspace = true } --webrender_api = { workspace = true } -+webrender = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods", features = ["capture"] } -+webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } - webxr-api = { workspace = true, optional = true } +@@ -13,8 +13,9 @@ path = "lib.rs" + crate-type = ["rlib"] - [target.'cfg(any(target_os = "android", target_env = "ohos"))'.dependencies] -@@ -128,7 +128,7 @@ webxr = { path = "../webxr", optional = true } + [features] +-default = ["clipboard", "vello_cpu"] +-background_hang_monitor = ["background_hang_monitor/sampler"] ++# clipboard cut off ++default = ["vello_cpu"] ++# background_hang_monitor = ["background_hang_monitor/sampler"] + bluetooth = [ + "bluetooth_traits", + "dep:bluetooth", +@@ -131,7 +132,7 @@ webxr = { path = "../webxr", optional = true } arboard = { workspace = true, optional = true } webxr = { path = "../webxr", features = ["ipc", "glwindow", "headless"] } @@ -459,8 +287,17 @@ index 2c1f75dca13..03bb5596dc1 100644 gaol = "0.2.1" [target.'cfg(target_os = "windows")'.dependencies] +@@ -141,7 +142,7 @@ webxr = { path = "../webxr", features = ["ipc", "glwindow", "headless", "openxr- + anyhow = "1.0.97" + http = { workspace = true } + libservo = { path = ".", features = ["tracing"] } +-rustls = { version = "0.23", default-features = false, features = ["aws-lc-rs"] } ++rustls = { workspace = true , default-features = false, features = ["aws-lc-rs"] } + tracing = { workspace = true } + winit = { workspace = true } + diff --git a/components/servo/lib.rs b/components/servo/lib.rs -index 37ce2019c7a..35e64e30c0d 100644 +index 4b7dcdc5052..4174dfc4348 100644 --- a/components/servo/lib.rs +++ b/components/servo/lib.rs @@ -77,6 +77,7 @@ use fonts::SystemFontService; @@ -471,7 +308,7 @@ index 37ce2019c7a..35e64e30c0d 100644 ))] use gaol::sandbox::{ChildSandbox, ChildSandboxMethods}; pub use gleam::gl; -@@ -1305,6 +1306,7 @@ pub fn run_content_process(token: String) { +@@ -1335,6 +1336,7 @@ pub fn run_content_process(token: String) { not(target_arch = "arm"), not(target_arch = "aarch64"), not(target_env = "ohos"), @@ -479,7 +316,7 @@ index 37ce2019c7a..35e64e30c0d 100644 ))] fn create_sandbox() { ChildSandbox::new(content_process_sandbox_profile()) -@@ -1319,6 +1321,7 @@ fn create_sandbox() { +@@ -1349,6 +1351,7 @@ fn create_sandbox() { target_arch = "arm", target_arch = "aarch64", target_env = "ohos", @@ -487,52 +324,8 @@ index 37ce2019c7a..35e64e30c0d 100644 ))] fn create_sandbox() { panic!("Sandboxing is not supported on Windows, iOS, ARM targets and android."); -diff --git a/components/shared/base/Cargo.toml b/components/shared/base/Cargo.toml -index b293fa0faf3..eead0fb12e3 100644 ---- a/components/shared/base/Cargo.toml -+++ b/components/shared/base/Cargo.toml -@@ -21,8 +21,7 @@ malloc_size_of_derive = { workspace = true } - parking_lot = { workspace = true } - serde = { workspace = true } - time = { workspace = true } --webrender_api = { workspace = true } -- -+webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } - [target.'cfg(any(target_os = "macos", target_os = "ios"))'.dependencies] - mach2 = { workspace = true } - -diff --git a/components/shared/canvas/Cargo.toml b/components/shared/canvas/Cargo.toml -index 36711c0f83a..474c7722812 100644 ---- a/components/shared/canvas/Cargo.toml -+++ b/components/shared/canvas/Cargo.toml -@@ -28,5 +28,5 @@ serde = { workspace = true } - servo_config = { path = "../../config" } - strum = { workspace = true } - stylo = { workspace = true } --webrender_api = { workspace = true } -+webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } - webxr-api = { workspace = true, features = ["ipc"] } -diff --git a/components/shared/compositing/Cargo.toml b/components/shared/compositing/Cargo.toml -index 11ac6223766..98fe1417013 100644 ---- a/components/shared/compositing/Cargo.toml -+++ b/components/shared/compositing/Cargo.toml -@@ -19,7 +19,7 @@ base = { workspace = true } - bincode = { workspace = true } - bitflags = { workspace = true } - crossbeam-channel = { workspace = true } --dpi = { version = "0.1" } -+dpi = { workspace = true } - embedder_traits = { workspace = true } - euclid = { workspace = true } - gleam = { workspace = true } -@@ -38,4 +38,4 @@ strum_macros = { workspace = true } - stylo = { workspace = true } - stylo_traits = { workspace = true } - surfman = { workspace = true, features = ["sm-x11"] } --webrender_api = { workspace = true } -+webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } diff --git a/components/shared/compositing/rendering_context.rs b/components/shared/compositing/rendering_context.rs -index 0596210430b..c85c84618ae 100644 +index 515533db2e2..920a9a15cab 100644 --- a/components/shared/compositing/rendering_context.rs +++ b/components/shared/compositing/rendering_context.rs @@ -105,7 +105,12 @@ impl Drop for SurfmanRenderingContext { @@ -607,116 +400,45 @@ index 0596210430b..c85c84618ae 100644 Ok(Self { size: Cell::new(size), -diff --git a/components/shared/constellation/Cargo.toml b/components/shared/constellation/Cargo.toml -index 7a1132ecd63..954c002d7f9 100644 ---- a/components/shared/constellation/Cargo.toml -+++ b/components/shared/constellation/Cargo.toml -@@ -37,5 +37,5 @@ strum_macros = { workspace = true } - stylo_traits = { workspace = true } - uuid = { workspace = true } - webgpu_traits = { workspace = true } --webrender_api = { workspace = true } -+webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } - wgpu-core = { workspace = true, optional = true } -diff --git a/components/shared/embedder/Cargo.toml b/components/shared/embedder/Cargo.toml -index 2ff427a4057..bc611d67da4 100644 ---- a/components/shared/embedder/Cargo.toml -+++ b/components/shared/embedder/Cargo.toml -@@ -38,5 +38,5 @@ stylo = { workspace = true } - url = { workspace = true } - uuid = { workspace = true } - webdriver = { workspace = true } --webrender_api = { workspace = true } -+webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } - servo_geometry = { path = "../../geometry" } -diff --git a/components/shared/layout/Cargo.toml b/components/shared/layout/Cargo.toml -index ae5d005d103..b24976e9da6 100644 ---- a/components/shared/layout/Cargo.toml -+++ b/components/shared/layout/Cargo.toml -@@ -41,4 +41,4 @@ servo_arc = { workspace = true } - servo_url = { path = "../../url" } - stylo_traits = { workspace = true } - stylo = { workspace = true } --webrender_api = { workspace = true } -+webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } +diff --git a/components/shared/fonts/font_identifier.rs b/components/shared/fonts/font_identifier.rs +index 8029252a20c..5d13b8010ee 100644 +--- a/components/shared/fonts/font_identifier.rs ++++ b/components/shared/fonts/font_identifier.rs +@@ -22,7 +22,7 @@ impl FontIdentifier { + } + } + +-#[cfg(any(target_os = "linux", target_os = "android"))] ++#[cfg(any(target_os = "linux", target_os = "android", target_os = "redox"))] + mod platform { + use std::fs::File; + use std::path::{Path, PathBuf}; diff --git a/components/shared/net/Cargo.toml b/components/shared/net/Cargo.toml -index 044b2658c4e..0a36fc291ca 100644 +index f727fa008a5..90dbbceeb01 100644 --- a/components/shared/net/Cargo.toml +++ b/components/shared/net/Cargo.toml -@@ -41,7 +41,6 @@ servo_rand = { path = "../../rand" } - servo_url = { path = "../../url" } +@@ -43,6 +43,5 @@ servo_url = { path = "../../url" } url = { workspace = true } uuid = { workspace = true } --webrender_api = { workspace = true } + webrender_api = { workspace = true } - -+webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } [dev-dependencies] embedder_traits = { workspace = true, features = ["baked-default-resources"] } -diff --git a/components/shared/script/Cargo.toml b/components/shared/script/Cargo.toml -index 69438867cc0..e65648a60b5 100644 ---- a/components/shared/script/Cargo.toml -+++ b/components/shared/script/Cargo.toml -@@ -41,5 +41,5 @@ strum_macros = { workspace = true } - stylo_atoms = { workspace = true } - stylo_traits = { workspace = true } - webgpu_traits = { workspace = true, optional = true } --webrender_api = { workspace = true } -+webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } - webxr-api = { workspace = true, features = ["ipc"] } -diff --git a/components/shared/webgpu/Cargo.toml b/components/shared/webgpu/Cargo.toml -index 5fb042dfb78..d41af6398d7 100644 ---- a/components/shared/webgpu/Cargo.toml -+++ b/components/shared/webgpu/Cargo.toml -@@ -18,6 +18,6 @@ ipc-channel = { workspace = true } - malloc_size_of = { workspace = true } - pixels = { path = "../../pixels" } - serde = { workspace = true } --webrender_api = { workspace = true } -+webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } - wgpu-core = { workspace = true, features = ["serde", "wgsl"] } - wgpu-types = { workspace = true } -diff --git a/components/webgl/Cargo.toml b/components/webgl/Cargo.toml -index 46fe7381959..017cf68eba7 100644 ---- a/components/webgl/Cargo.toml -+++ b/components/webgl/Cargo.toml -@@ -30,7 +30,7 @@ itertools = { workspace = true } - log = { workspace = true } - pixels = { path = "../pixels" } - surfman = { workspace = true } --webrender = { workspace = true } --webrender_api = { workspace = true } -+webrender = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods", features = ["capture"] } -+webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } - webxr = { path = "../webxr", features = ["ipc"], optional = true } - webxr-api = { workspace = true, features = ["ipc"], optional = true } -diff --git a/components/webgpu/Cargo.toml b/components/webgpu/Cargo.toml -index a2119f4c83c..308ab3772fb 100644 ---- a/components/webgpu/Cargo.toml -+++ b/components/webgpu/Cargo.toml -@@ -22,7 +22,7 @@ pixels = { path = "../pixels" } - serde = { workspace = true, features = ["serde_derive"] } - servo_config = { path = "../config" } - webgpu_traits = { workspace = true } --webrender_api = { workspace = true } -+webrender_api = { git = "https://gitlab.redox-os.org/njskalski/webrender.git", branch = "redox_mods" } - wgpu-core = { workspace = true, features = ["serde", "wgsl"] } - wgpu-types = { workspace = true } - diff --git a/ports/servoshell/Cargo.toml b/ports/servoshell/Cargo.toml -index 06304184929..fb77b7099b0 100644 +index c18a68219b8..54ea23823a7 100644 --- a/ports/servoshell/Cargo.toml +++ b/ports/servoshell/Cargo.toml -@@ -37,7 +37,8 @@ ProductName = "Servo" +@@ -35,7 +35,8 @@ OriginalFilename = "servo.exe" + ProductName = "Servo" + [features] - crown = ["libservo/crown"] - debugmozjs = ["libservo/debugmozjs"] -default = ["max_log_level", "webgpu", "webxr"] +# cutting , "webxr" for redox +default = ["max_log_level", "webgpu"] + crown = ["libservo/crown"] + debugmozjs = ["libservo/debugmozjs"] jitspew = ["libservo/jitspew"] - js_backtrace = ["libservo/js_backtrace"] - max_log_level = ["log/release_max_level_info"] -@@ -68,7 +69,8 @@ image = { workspace = true } +@@ -65,7 +66,8 @@ image = { workspace = true } ipc-channel = { workspace = true } keyboard-types = { workspace = true } libc = { workspace = true } @@ -726,7 +448,7 @@ index 06304184929..fb77b7099b0 100644 log = { workspace = true } mime_guess = { workspace = true } raw-window-handle = { workspace = true } -@@ -108,13 +110,32 @@ nix = { workspace = true, features = ["fs"] } +@@ -105,12 +107,31 @@ nix = { workspace = true, features = ["fs"] } serde_json = { workspace = true } surfman = { workspace = true, features = ["sm-angle-default"] } @@ -737,11 +459,11 @@ index 06304184929..fb77b7099b0 100644 +[target.'cfg(not(any(target_os = "android", target_env = "ohos", target_os = "redox")))'.dependencies] +# accesskit_winit = "0.27" dirs = "6.0" --egui = { version = "0.32.1", features = ["accesskit"] } -+# egui = { version = "0.32.1", features = ["accesskit"] } +-egui = { version = "0.32.3", features = ["accesskit"] } ++# egui = { version = "0.32.3", features = ["accesskit"] } +# egui-file-dialog = "0.11.0" -+# egui-winit = { version = "0.32.1", default-features = false, features = ["accesskit", "clipboard", "wayland"] } -+# egui_glow = { version = "0.32.1", features = ["winit"] } ++# egui-winit = { version = "0.32.3", default-features = false, features = ["accesskit", "clipboard", "wayland"] } ++# egui_glow = { version = "0.32.3", features = ["winit"] } +gilrs = "0.11.0" +# glow = "0.16.0" +headers = { workspace = true } @@ -757,18 +479,16 @@ index 06304184929..fb77b7099b0 100644 +dirs = "6.0" +egui = { version = "0.32.1", default-features = false } egui-file-dialog = "0.11.0" --egui-winit = { version = "0.32.1", default-features = false, features = ["accesskit", "clipboard", "wayland"] } --egui_glow = { version = "0.32.1", features = ["winit"] } -+egui-winit = { version = "0.32.1", default-features = false, features = ["clipboard"] } #<-here -+egui_glow = { version = "0.32.1", default-features = false, features = [] } +-egui-winit = { version = "0.32.3", default-features = false, features = ["accesskit", "clipboard", "wayland"] } ++egui-winit = { version = "0.32.3", default-features = false, features = [] } + egui_glow = { version = "0.32.3", features = ["winit"] } gilrs = "0.11.0" - glow = "0.16.0" - headers = { workspace = true } + glow = { workspace = true } diff --git a/ports/servoshell/desktop/app.rs b/ports/servoshell/desktop/app.rs -index 08c943b2829..61d20de8bc3 100644 +index a77d1060051..0691b3909cc 100644 --- a/ports/servoshell/desktop/app.rs +++ b/ports/servoshell/desktop/app.rs -@@ -766,18 +766,18 @@ impl ApplicationHandler for App { +@@ -699,18 +699,18 @@ impl ApplicationHandler for App { } fn user_event(&mut self, event_loop: &ActiveEventLoop, event: AppEvent) { @@ -799,24 +519,11 @@ index 08c943b2829..61d20de8bc3 100644 let now = Instant::now(); let event = winit::event::Event::UserEvent(event); -diff --git a/ports/servoshell/desktop/egui_glue.rs b/ports/servoshell/desktop/egui_glue.rs -index 797ea3c5a91..d658563edc1 100644 ---- a/ports/servoshell/desktop/egui_glue.rs -+++ b/ports/servoshell/desktop/egui_glue.rs -@@ -81,7 +81,7 @@ impl EguiGlow { - None, - ); - let window = window.winit_window().unwrap(); -- egui_winit.init_accesskit(event_loop, window, event_loop_proxy); -+ // egui_winit.init_accesskit(event_loop, window, event_loop_proxy); - window.set_visible(true); - Self { - egui_winit, diff --git a/ports/servoshell/desktop/events_loop.rs b/ports/servoshell/desktop/events_loop.rs -index 4137001e4eb..b24757b9ad2 100644 +index 8bb978c7bfb..94e946928b2 100644 --- a/ports/servoshell/desktop/events_loop.rs +++ b/ports/servoshell/desktop/events_loop.rs -@@ -22,14 +22,14 @@ pub type EventLoopProxy = winit::event_loop::EventLoopProxy; +@@ -20,14 +20,14 @@ pub type EventLoopProxy = winit::event_loop::EventLoopProxy; pub enum AppEvent { /// Another process or thread has kicked the OS event loop with EventLoopWaker. Waker, @@ -838,10 +545,10 @@ index 4137001e4eb..b24757b9ad2 100644 /// The real or fake OS event loop. #[allow(dead_code)] diff --git a/ports/servoshell/desktop/headed_window.rs b/ports/servoshell/desktop/headed_window.rs -index eef657f2062..7054a201792 100644 +index bfe35feca4e..1e3220cad1f 100644 --- a/ports/servoshell/desktop/headed_window.rs +++ b/ports/servoshell/desktop/headed_window.rs -@@ -144,10 +144,24 @@ impl Window { +@@ -153,10 +153,24 @@ impl Window { let window_handle = winit_window .window_handle() .expect("could not get window handle from window"); @@ -871,10 +578,10 @@ index eef657f2062..7054a201792 100644 // Setup for GL accelerated media handling. This is only active on certain Linux platforms // and Windows. diff --git a/ports/servoshell/desktop/headless_window.rs b/ports/servoshell/desktop/headless_window.rs -index e17e09a5218..24beb102919 100644 +index 9910ed941d4..4937cee1120 100644 --- a/ports/servoshell/desktop/headless_window.rs +++ b/ports/servoshell/desktop/headless_window.rs -@@ -179,7 +179,7 @@ impl WindowPortsMethods for Window { +@@ -168,7 +168,7 @@ impl WindowPortsMethods for Window { // notification (such as from the display manager) that it has changed size, so we // must notify the compositor here. webview.move_resize(self.screen_size.to_f32().into()); @@ -884,52 +591,39 @@ index e17e09a5218..24beb102919 100644 self.screen_size.height as u32, )); diff --git a/ports/servoshell/desktop/minibrowser.rs b/ports/servoshell/desktop/minibrowser.rs -index 460e639c15b..3146f73d213 100644 +index ba4127a241f..6026edc93a4 100644 --- a/ports/servoshell/desktop/minibrowser.rs +++ b/ports/servoshell/desktop/minibrowser.rs -@@ -522,23 +522,23 @@ impl Minibrowser { - self.update_status_text(state) +@@ -107,9 +107,9 @@ impl Minibrowser { + ); + + let winit_window = window.winit_window().unwrap(); +- context +- .egui_winit +- .init_accesskit(event_loop, winit_window, event_loop_proxy); ++ // context ++ // .egui_winit ++ // .init_accesskit(event_loop, winit_window, event_loop_proxy); + winit_window.set_visible(true); + + context.egui_ctx.options_mut(|options| { +@@ -571,6 +571,7 @@ impl Minibrowser { } -- /// Returns true if a redraw is required after handling the provided event. -- pub(crate) fn handle_accesskit_event(&mut self, event: &accesskit_winit::WindowEvent) -> bool { -- match event { -- accesskit_winit::WindowEvent::InitialTreeRequested => { -- self.context.egui_ctx.enable_accesskit(); -- true -- }, -- accesskit_winit::WindowEvent::ActionRequested(req) => { -- self.context -- .egui_winit -- .on_accesskit_action_request(req.clone()); -- true -- }, -- accesskit_winit::WindowEvent::AccessibilityDeactivated => { -- self.context.egui_ctx.disable_accesskit(); -- false -- }, -- } -- } -+ // Returns true if a redraw is required after handling the provided event. -+ // pub(crate) fn handle_accesskit_event(&mut self, event: &accesskit_winit::WindowEvent) -> bool { -+ // match event { -+ // accesskit_winit::WindowEvent::InitialTreeRequested => { -+ // self.context.egui_ctx.enable_accesskit(); -+ // true -+ // }, -+ // accesskit_winit::WindowEvent::ActionRequested(req) => { -+ // self.context -+ // .egui_winit -+ // .on_accesskit_action_request(req.clone()); -+ // true -+ // }, -+ // accesskit_winit::WindowEvent::AccessibilityDeactivated => { -+ // self.context.egui_ctx.disable_accesskit(); -+ // false -+ // }, -+ // } -+ // } - } + /// Returns true if a redraw is required after handling the provided event. ++ /* + pub(crate) fn handle_accesskit_event(&mut self, event: &accesskit_winit::WindowEvent) -> bool { + match event { + accesskit_winit::WindowEvent::InitialTreeRequested => { +@@ -589,7 +590,7 @@ impl Minibrowser { + }, + } + } +- ++ */ + pub(crate) fn set_zoom_factor(&self, factor: f32) { + self.context.egui_ctx.set_zoom_factor(factor); + } diff --git a/ports/servoshell/desktop/tracing.rs b/ports/servoshell/desktop/tracing.rs index b1f0b1d742e..046b016a2e2 100644 --- a/ports/servoshell/desktop/tracing.rs @@ -945,7 +639,7 @@ index b1f0b1d742e..046b016a2e2 100644 Self::AboutToWait => target!("AboutToWait"), diff --git a/rust-toolchain.toml b/rust-toolchain.toml deleted file mode 100644 -index 09d8bc760c6..00000000000 +index 97ac30608ba..00000000000 --- a/rust-toolchain.toml +++ /dev/null @@ -1,17 +0,0 @@ @@ -953,7 +647,7 @@ index 09d8bc760c6..00000000000 -# Be sure to update the 'rust-overlay' module's url in shell.nix to point to a -# commit which supports the required rustc version and also update the version -# in support/crown/rust-toolchain.toml when bumping this! --channel = "1.85.0" +-channel = "1.89.0" - -components = [ - "clippy", diff --git a/recipes/wip/x11/libdrm/recipe.toml b/recipes/wip/x11/libdrm/recipe.toml index 7627cf89..5f873e25 100644 --- a/recipes/wip/x11/libdrm/recipe.toml +++ b/recipes/wip/x11/libdrm/recipe.toml @@ -1,4 +1,3 @@ -# TODO: Port sys/ioccom.h just like BSD? [source] tar = "https://gitlab.freedesktop.org/mesa/libdrm/-/archive/libdrm-2.4.125/libdrm-libdrm-2.4.125.tar.gz" blake3 = "33e6448252639f4ff8a8cd30129b335c5d85356c1c93f8d77a79221003b14f66" From 45d6bf5007f96aa731ce540bc98814562fae8624 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sat, 1 Nov 2025 18:41:05 +0700 Subject: [PATCH 3023/3180] Fix passing options into repo builder --- repo.sh | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/repo.sh b/repo.sh index 0a95ac89..15a81cec 100755 --- a/repo.sh +++ b/repo.sh @@ -8,18 +8,15 @@ COOK_OPT="" recipes="" for arg in "${@:1}" do - if [ "$arg" == "--appstream" ] + if [[ "$arg" == "--appstream" ]] then APPSTREAM="1" - elif [ "$arg" == "--with-package-deps" ] - then - COOK_OPT+=" --with-package-deps" - elif [ "$arg" == "--nonstop" ] - then - COOK_OPT+=" --nonstop" - elif [ "$arg" == "--offline" ] + elif [[ "$arg" == "--offline" ]] then export COOKBOOK_OFFLINE=true + elif [[ $arg == "--*" ]] + then + COOK_OPT+=" ${arg}" else recipes+=" $arg" fi From 835c25e92d78cc9ee725787717f3295d88aa0e4b Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sat, 1 Nov 2025 19:21:57 +0700 Subject: [PATCH 3024/3180] Make repo call repo_builder instead --- repo.sh | 2 -- src/bin/repo.rs | 26 +++++++++++++++++++++++--- src/bin/repo_builder.rs | 15 ++++++++++++--- 3 files changed, 35 insertions(+), 8 deletions(-) diff --git a/repo.sh b/repo.sh index 15a81cec..4f032530 100755 --- a/repo.sh +++ b/repo.sh @@ -23,5 +23,3 @@ do done repo cook $COOK_OPT $recipes - -repo_builder "$ROOT/repo/$TARGET" $recipes diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 97c4066c..45b9726e 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -4,7 +4,7 @@ use cookbook::WALK_DEPTH; use cookbook::config::{CookConfig, get_config, init_config}; use cookbook::cook::cook_build::build; use cookbook::cook::fetch::{fetch, fetch_offline}; -use cookbook::cook::fs::create_target_dir; +use cookbook::cook::fs::{create_target_dir, run_command}; use cookbook::cook::package::package; use cookbook::cook::pty::{PtyOut, UnixSlavePty, setup_pty}; use cookbook::cook::tree::{display_tree_entry, format_size}; @@ -173,7 +173,7 @@ fn main_inner() -> anyhow::Result<()> { let (config, command, recipe_names) = parse_args(args)?; if command == CliCommand::Cook && config.cook.tui { - if let Some((name, e)) = run_tui_cook(config, recipe_names)? { + if let Some((name, e)) = run_tui_cook(config.clone(), recipe_names.clone())? { let _ = stderr().write(e.as_bytes()); let _ = stderr().write(b"\n\n"); eprintln!( @@ -194,7 +194,7 @@ fn main_inner() -> anyhow::Result<()> { style::Reset, ); } - return Ok(()); + return publish_packages(&recipe_names, &config.repo_dir); } if command == CliCommand::Tree { return handle_tree(&recipe_names, &config); @@ -236,6 +236,10 @@ fn main_inner() -> anyhow::Result<()> { } } + if command == CliCommand::Cook { + return publish_packages(&recipe_names, &config.repo_dir); + } + if verbose { println!( "\nCommand '{}' completed for {} recipes.", @@ -267,6 +271,22 @@ fn repo_inner( }) } +fn publish_packages(recipe_names: &Vec, repo_path: &PathBuf) -> anyhow::Result<()> { + let repo_bin = env::current_exe()?.parent().unwrap().join("repo_builder"); + let mut command = Command::new(repo_bin); + command + .arg(repo_path) + .args(recipe_names.iter().filter_map(|n| { + if !n.is_deps { + Some(n.name.as_str()) + } else { + None + } + })); + + run_command(command, &None).map_err(|e| anyhow!(e)) +} + fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec)> { let mut config = CliConfig::new()?; let mut command: Option = None; diff --git a/src/bin/repo_builder.rs b/src/bin/repo_builder.rs index 4748560e..41bd53fa 100644 --- a/src/bin/repo_builder.rs +++ b/src/bin/repo_builder.rs @@ -1,3 +1,4 @@ +use anyhow::anyhow; use cookbook::WALK_DEPTH; use pkg::{Package, PackageName, recipes}; use std::collections::{BTreeMap, HashMap}; @@ -25,6 +26,11 @@ fn main() -> Result<(), Box> { let repo_dir = args .next() .expect("Usage: repo_builder ..."); + Ok(publish_packages(args.collect(), repo_dir)?) +} + +// TODO: Make this callable from repo bin +fn publish_packages(recipe_list: Vec, repo_dir: String) -> anyhow::Result<()> { let repo_path = Path::new(&repo_dir); if !repo_path.is_dir() { fs::create_dir_all(repo_path)?; @@ -36,7 +42,10 @@ fn main() -> Result<(), Box> { // The following adds the package dependencies of the recipes to the repo as // well. let recipe_list = Package::new_recursive( - &args.map(PackageName::new).collect::, _>>()?, + &recipe_list + .iter() + .map(PackageName::new) + .collect::, _>>()?, WALK_DEPTH, )? .into_iter() @@ -111,7 +120,7 @@ fn main() -> Result<(), Box> { .status()? .success() .then_some(()) - .ok_or("appstreamcli failed")?; + .ok_or(anyhow!("appstreamcli failed"))?; Command::new("pkgar") .arg("create") @@ -123,7 +132,7 @@ fn main() -> Result<(), Box> { .status()? .success() .then_some(()) - .ok_or("pkgar create failed")?; + .ok_or(anyhow!("pkgar create failed"))?; } } From b8be9c5176fa06716b7a09bc321ed6200ed1aac6 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sat, 1 Nov 2025 21:19:29 +0700 Subject: [PATCH 3025/3180] Fix repo directory install path --- src/bin/repo.rs | 2 +- src/cook/package.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 45b9726e..f0521045 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -275,7 +275,7 @@ fn publish_packages(recipe_names: &Vec, repo_path: &PathBuf) -> anyh let repo_bin = env::current_exe()?.parent().unwrap().join("repo_builder"); let mut command = Command::new(repo_bin); command - .arg(repo_path) + .arg(repo_path.join(redoxer::target())) .args(recipe_names.iter().filter_map(|n| { if !n.is_deps { Some(n.name.as_str()) diff --git a/src/cook/package.rs b/src/cook/package.rs index fa97817f..058884f5 100644 --- a/src/cook/package.rs +++ b/src/cook/package.rs @@ -1,4 +1,4 @@ -use std::{collections::BTreeSet, env, path::Path}; +use std::{collections::BTreeSet, path::Path}; use pkg::{Package, PackageName}; @@ -85,7 +85,7 @@ pub fn package_toml( let package = Package { name: name.clone(), version: package_version(recipe), - target: env::var("TARGET").map_err(|err| format!("failed to read TARGET: {:?}", err))?, + target: redoxer::target().to_string(), depends, }; From 0a964d8e3cfc5edcb8408ca8a347370911a7c70f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 1 Nov 2025 08:41:51 -0600 Subject: [PATCH 3026/3180] patch: disable gnulib renameat2 --- recipes/dev/patch/03_renameat2.patch | 15 +++++++++++++++ recipes/dev/patch/recipe.toml | 3 ++- 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 recipes/dev/patch/03_renameat2.patch diff --git a/recipes/dev/patch/03_renameat2.patch b/recipes/dev/patch/03_renameat2.patch new file mode 100644 index 00000000..f5e799e9 --- /dev/null +++ b/recipes/dev/patch/03_renameat2.patch @@ -0,0 +1,15 @@ +--- source-old/lib/renameat2.c 2018-02-03 05:41:53.000000000 -0700 ++++ source/lib/renameat2.c 2025-11-01 08:39:54.945513820 -0600 +@@ -70,6 +70,7 @@ + Obey FLAGS when doing the renaming. If FLAGS is zero, this + function is equivalent to renameat (FD1, SRC, FD2, DST). */ + ++#if !defined(__redox__) + int + renameat2 (int fd1, char const *src, int fd2, char const *dst, + unsigned int flags) +@@ -225,3 +226,4 @@ + + #endif /* !HAVE_RENAMEAT */ + } ++#endif diff --git a/recipes/dev/patch/recipe.toml b/recipes/dev/patch/recipe.toml index 7daf66d7..3e4cadbc 100644 --- a/recipes/dev/patch/recipe.toml +++ b/recipes/dev/patch/recipe.toml @@ -4,6 +4,7 @@ blake3 = "d46d14c12aa4ea51e356bf92091c368fd871e1d770b94bc29027886737aecd5f" patches = [ "01_no_rlimit.patch", "02_no_chown.patch", + "03_renameat2.patch", ] script = """ wget -O build-aux/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" @@ -24,4 +25,4 @@ cookbook_configure ${TARGET}-strip "${COOKBOOK_STAGE}/bin/"* rm -rf "${COOKBOOK_STAGE}/share" "${COOKBOOK_STAGE}/lib" -""" \ No newline at end of file +""" From d4b10d01b1f0c539d982c44fe8c120d2bd66cd7e Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 1 Nov 2025 16:02:18 +0100 Subject: [PATCH 3027/3180] Update redoxer for i586-unknown-redox support --- Cargo.lock | 6 ++++-- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cfa705a8..ed750fd8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2202,12 +2202,14 @@ dependencies = [ [[package]] name = "redoxer" -version = "0.2.55" +version = "0.2.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee006e9945ef5ad5b9d877465b5bbf94f37d37aa2d0765c8bcb7a6cd401775b6" +checksum = "1816d3f9e72b724ef9e6768426f767900f778ab3074313f42f9975faa88070fc" dependencies = [ + "anyhow", "dirs 6.0.0", "proc-mounts", + "redox-pkg", "redox_installer", "redox_syscall", "redoxfs", diff --git a/Cargo.toml b/Cargo.toml index 75415bb1..05494951 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,7 +32,7 @@ pkgar-core = { path = "pkgar/pkgar-core" } pkgar-keys = { path = "pkgar/pkgar-keys" } portable-pty = "0.9.0" redox-pkg = "0.2.8" -redoxer = "0.2" +redoxer = "0.2.56" regex = "1.11" serde = { version = "=1.0.197", features = ["derive"] } termion = "4" From ae1240cd3a9d564a3ccf97a92d0aa12a4ad1751d Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 1 Nov 2025 16:24:35 +0100 Subject: [PATCH 3028/3180] Support building C recipes for i586-unknown-redox --- config.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config.sh b/config.sh index 8e980198..2a86500d 100755 --- a/config.sh +++ b/config.sh @@ -15,6 +15,8 @@ ARCH="${TARGET%%-*}" HOST="$TARGET" if [ x"${HOST}" == x"riscv64gc-unknown-redox" ] ; then HOST="riscv64-unknown-redox" +elif [ x"${HOST}" == x"i586-unknown-redox" ] ; then + HOST="i686-unknown-redox" fi # Cookbook requires correct CWD to work From 75d9b0dc3b601cdbdd1382be4b34306643f3553b Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 1 Nov 2025 16:45:25 +0100 Subject: [PATCH 3029/3180] Build bios bootloader for i586-unknown-redox --- recipes/core/bootloader/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/core/bootloader/recipe.toml b/recipes/core/bootloader/recipe.toml index 20461fec..17f09add 100644 --- a/recipes/core/bootloader/recipe.toml +++ b/recipes/core/bootloader/recipe.toml @@ -18,7 +18,7 @@ function bootloader { ARCH="$(echo "${TARGET}" | cut -d - -f1)" # Build BIOS bootloader for supported architectures -if [ "${ARCH}" == "i686" -o "${ARCH}" == "x86_64" ] +if [ "${ARCH}" == "i586" -o "${ARCH}" == "i686" -o "${ARCH}" == "x86_64" ] then bootloader "x86-unknown-none" bootloader.bin bootloader.bios bootloader "x86-unknown-none" bootloader-live.bin bootloader-live.bios From c0feb7ecdac6d0c0a374356634107b8644d1b64f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 1 Nov 2025 11:15:30 -0600 Subject: [PATCH 3030/3180] sm64ex: fix compilation --- recipes/games/sm64ex/recipe.toml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/recipes/games/sm64ex/recipe.toml b/recipes/games/sm64ex/recipe.toml index 25a94005..69b94737 100644 --- a/recipes/games/sm64ex/recipe.toml +++ b/recipes/games/sm64ex/recipe.toml @@ -11,6 +11,8 @@ dependencies = [ "zlib", ] script = """ +DYNAMIC_INIT + rsync -av --delete "${COOKBOOK_SOURCE}/" ./ # You must find your own ROM cp -v "${COOKBOOK_RECIPE}/baserom.us.z64" baserom.us.z64 @@ -18,6 +20,10 @@ cp -v "${COOKBOOK_RECIPE}/baserom.us.z64" baserom.us.z64 #TODO: do this in cook instead unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP +export REDOX_CFLAGS="${CFLAGS}" +export REDOX_LDFLAGS="${LDFLAGS}" +unset CFLAGS LDFLAGS + export CROSS="${TARGET}-" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" mkdir -p "${COOKBOOK_STAGE}/bin" From 78a9e346fa1e4614c73b1895ccf081e4d19a9e8e Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 1 Nov 2025 19:40:42 +0100 Subject: [PATCH 3031/3180] Fix two more recipes for i586-unknown-redox --- recipes/core/drivers-initfs/recipe.toml | 2 +- recipes/wip/vm/qemu/recipe.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/core/drivers-initfs/recipe.toml b/recipes/core/drivers-initfs/recipe.toml index 8f2e1d01..9ef3f48f 100644 --- a/recipes/core/drivers-initfs/recipe.toml +++ b/recipes/core/drivers-initfs/recipe.toml @@ -43,7 +43,7 @@ aarch64_bins() } case "${TARGET}" in - i686-unknown-redox) + i586-unknown-redox | i686-unknown-redox) x86_common_bins ;; x86_64-unknown-redox) diff --git a/recipes/wip/vm/qemu/recipe.toml b/recipes/wip/vm/qemu/recipe.toml index 2bfd6f49..2e02b857 100644 --- a/recipes/wip/vm/qemu/recipe.toml +++ b/recipes/wip/vm/qemu/recipe.toml @@ -36,7 +36,7 @@ case "${TARGET}" in aarch64-unknown-redox) COOKBOOK_CONFIGURE_FLAGS+=(--target-list=aarch64-softmmu) ;; - i686-unknown-redox) + i586-unknown-redox | i686-unknown-redox) COOKBOOK_CONFIGURE_FLAGS+=(--target-list=i386-softmmu) ;; x86_64-unknown-redox) From c6b1edfdfb9b7be934997aa1bd396749c37c0750 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 1 Nov 2025 14:21:19 -0600 Subject: [PATCH 3032/3180] Correctly set APPSTREAM env var --- repo.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/repo.sh b/repo.sh index 4f032530..e25200f1 100755 --- a/repo.sh +++ b/repo.sh @@ -3,14 +3,13 @@ set -e source `dirname "$0"`/config.sh -APPSTREAM="0" COOK_OPT="" recipes="" for arg in "${@:1}" do if [[ "$arg" == "--appstream" ]] then - APPSTREAM="1" + export APPSTREAM="1" elif [[ "$arg" == "--offline" ]] then export COOKBOOK_OFFLINE=true From 85efc0eeaa472e3a3a7d58c9f1ab0e7ff88cc1df Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 1 Nov 2025 16:39:32 -0600 Subject: [PATCH 3033/3180] Print full report when generating appstream data --- src/bin/repo_builder.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bin/repo_builder.rs b/src/bin/repo_builder.rs index 41bd53fa..656d2c35 100644 --- a/src/bin/repo_builder.rs +++ b/src/bin/repo_builder.rs @@ -110,6 +110,7 @@ fn publish_packages(recipe_list: Vec, repo_dir: String) -> anyhow::Resul compose_cmd .arg("compose") .arg("--origin=pkgar") + .arg("--print-report=full") .arg(format!("--result-root={}", appstream_root.display())); for (_recipe, source_path) in &appstream_sources { From b4f860099707197fc5f7c9e8463c4888c0129ee3 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 1 Nov 2025 16:47:06 -0600 Subject: [PATCH 3034/3180] Use pkgar crate instead of command to generate appstream.pkgar --- src/bin/repo_builder.rs | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/bin/repo_builder.rs b/src/bin/repo_builder.rs index 656d2c35..26d6db47 100644 --- a/src/bin/repo_builder.rs +++ b/src/bin/repo_builder.rs @@ -123,17 +123,11 @@ fn publish_packages(recipe_list: Vec, repo_dir: String) -> anyhow::Resul .then_some(()) .ok_or(anyhow!("appstreamcli failed"))?; - Command::new("pkgar") - .arg("create") - .arg("--archive") - .arg(&appstream_pkg) - .arg("--skey") - .arg(format!("{}/build/id_ed25519.toml", root)) - .arg(&appstream_root) - .status()? - .success() - .then_some(()) - .ok_or(anyhow!("pkgar create failed"))?; + pkgar::create( + format!("{}/build/id_ed25519.toml", root), + &appstream_pkg, + &appstream_root + )?; } } From d01f20ddfd82120293af4cfe409c3d6d64ca581f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 1 Nov 2025 17:45:20 -0600 Subject: [PATCH 3035/3180] flycast: remove invalid metainfo --- recipes/emulators/flycast/recipe.toml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/recipes/emulators/flycast/recipe.toml b/recipes/emulators/flycast/recipe.toml index 0c90a430..505b7965 100644 --- a/recipes/emulators/flycast/recipe.toml +++ b/recipes/emulators/flycast/recipe.toml @@ -55,4 +55,6 @@ COOKBOOK_CONFIGURE_FLAGS=( "${COOKBOOK_SOURCE}" ) cookbook_configure -""" \ No newline at end of file +# Fix for appstream generation +mv "${COOKBOOK_STAGE}/usr/share/metainfo/org.flycast.Flycast.metainfo.xml" "${COOKBOOK_STAGE}/usr/share/metainfo/flycast.metainfo.xml" +""" From a980bb1ab730da25dc4c8811fc882ebc20261b09 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 1 Nov 2025 17:45:39 -0600 Subject: [PATCH 3036/3180] Rename appstream.pkgar to repo-appstream.pkgar to prevent conflicts --- src/bin/repo_builder.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/repo_builder.rs b/src/bin/repo_builder.rs index 26d6db47..adcc2c71 100644 --- a/src/bin/repo_builder.rs +++ b/src/bin/repo_builder.rs @@ -99,7 +99,7 @@ fn publish_packages(recipe_list: Vec, repo_dir: String) -> anyhow::Resul .join("build") .join(&target) .join("appstream"); - let appstream_pkg = repo_path.join("appstream.pkgar"); + let appstream_pkg = repo_path.join("repo-appstream.pkgar"); fs::remove_dir_all(&appstream_root).ok(); fs::remove_file(&appstream_pkg).ok(); From 1b7b08d6c35bcb14482357fef67058259ab0d04d Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 2 Nov 2025 18:57:30 +0700 Subject: [PATCH 3037/3180] Set default GNU FTP mirror --- README.md | 5 +++-- recipes/libs/libiconv/recipe.toml | 2 +- recipes/tools/gettext/recipe.toml | 2 +- recipes/wip/dev/other/gperf/recipe.toml | 2 +- src/config.rs | 8 ++++++++ 5 files changed, 14 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 04e10b34..2c5a6da3 100644 --- a/README.md +++ b/README.md @@ -41,9 +41,10 @@ Cookbook has special config to avoid repetitive args, place this file into `cook #verbose = true [mirrors] +# The uncommented option below is the default if [mirrors] is not set # see list of GNU FTP mirrors at https://www.gnu.org/prep/ftp.en.html -"ftp.gnu.org/gnu" = "example.com/gnu" -"github.com/foo/bar" = "github.com/baz/bar" +"ftp.gnu.org/gnu" = "mirrors.ocf.berkeley.edu/gnu" +# "github.com/foo/bar" = "github.com/baz/bar" ``` ### Recipe Categories diff --git a/recipes/libs/libiconv/recipe.toml b/recipes/libs/libiconv/recipe.toml index bce6869a..a70ef826 100644 --- a/recipes/libs/libiconv/recipe.toml +++ b/recipes/libs/libiconv/recipe.toml @@ -1,5 +1,5 @@ [source] -tar = "https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.17.tar.gz" +tar = "https://ftp.gnu.org/gnu/libiconv/libiconv-1.17.tar.gz" blake3 = "820b3b9fd3e2181bfb95475f01e9a3451e6d751e4f8c98ebcdcca1d8aa720f7f" patches = [ "01_redox.patch" diff --git a/recipes/tools/gettext/recipe.toml b/recipes/tools/gettext/recipe.toml index c50a5fb1..af6676d1 100644 --- a/recipes/tools/gettext/recipe.toml +++ b/recipes/tools/gettext/recipe.toml @@ -1,7 +1,7 @@ # GNU gettext utilities are a set of tools that provides a framework to help # other GNU packages produce multi-lingual messages. [source] -tar = "https://ftp.gnu.org/pub/gnu/gettext/gettext-0.22.5.tar.gz" +tar = "https://ftp.gnu.org/gnu/gettext/gettext-0.22.5.tar.gz" blake3 = "cb3f3a34da7ce1a92746df81f5b78c5d53841973a24eb80ab76537263d380ec0" patches = [ "redox.patch" diff --git a/recipes/wip/dev/other/gperf/recipe.toml b/recipes/wip/dev/other/gperf/recipe.toml index ff3a4c0b..d15f30a4 100644 --- a/recipes/wip/dev/other/gperf/recipe.toml +++ b/recipes/wip/dev/other/gperf/recipe.toml @@ -1,5 +1,5 @@ #TODO compiled but not fully tested [source] -tar = "http://ftp.gnu.org/pub/gnu/gperf/gperf-3.1.tar.gz" +tar = "https://ftp.gnu.org/gnu/gperf/gperf-3.1.tar.gz" [build] template = "configure" diff --git a/src/config.rs b/src/config.rs index 27e42dd7..460fa43d 100644 --- a/src/config.rs +++ b/src/config.rs @@ -84,6 +84,14 @@ pub fn init_config() { if config.cook_opt.nonstop.is_none() { config.cook_opt.nonstop = Some(extract_env("COOKBOOK_NONSTOP", false)); } + if config.mirrors.len() == 0 { + // The GNU FTP mirror below is automatically inserted for convenience + // You can choose other mirrors by setting it on cookbook.toml + config.mirrors.insert( + "ftp.gnu.org/gnu".to_string(), + "mirrors.ocf.berkeley.edu/gnu".to_string(), + ); + } config.cook = CookConfig::from(config.cook_opt.clone()); From 4453cb54cb6e7fe0ec7fa3294a73a28e85529539 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 2 Nov 2025 19:03:55 +0700 Subject: [PATCH 3038/3180] Fix fmt --- src/bin/repo_builder.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/repo_builder.rs b/src/bin/repo_builder.rs index adcc2c71..400391bd 100644 --- a/src/bin/repo_builder.rs +++ b/src/bin/repo_builder.rs @@ -126,7 +126,7 @@ fn publish_packages(recipe_list: Vec, repo_dir: String) -> anyhow::Resul pkgar::create( format!("{}/build/id_ed25519.toml", root), &appstream_pkg, - &appstream_root + &appstream_root, )?; } } From f046e34c3f10072de7b9418c2f7b63c92776048b Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Mon, 3 Nov 2025 00:37:19 +0000 Subject: [PATCH 3039/3180] Traverse package deps from build deps --- src/bin/cook.rs | 3 +- src/bin/repo.rs | 3 +- src/cook/cook_build.rs | 32 ++++++++++++--- src/recipe.rs | 93 +++++++++++++++++++++++------------------- 4 files changed, 80 insertions(+), 51 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index e70bf4bb..1f5a4f33 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1,7 +1,6 @@ use std::path::Path; use std::{env, process}; -use cookbook::WALK_DEPTH; use cookbook::cook::fetch::{fetch, fetch_offline}; use cookbook::cook::fs::create_target_dir; use cookbook::cook::package::package; @@ -74,7 +73,7 @@ fn main() { } if with_package_deps { - recipe_names = match CookRecipe::get_package_deps_recursive(&recipe_names, WALK_DEPTH) { + recipe_names = match CookRecipe::get_package_deps_recursive(&recipe_names, true) { Ok(ok) => ok, Err(err) => { eprintln!( diff --git a/src/bin/repo.rs b/src/bin/repo.rs index f0521045..69eecb2a 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -1,6 +1,5 @@ use ansi_to_tui::IntoText; use anyhow::{Context, anyhow, bail}; -use cookbook::WALK_DEPTH; use cookbook::config::{CookConfig, get_config, init_config}; use cookbook::cook::cook_build::build; use cookbook::cook::fetch::{fetch, fetch_offline}; @@ -399,7 +398,7 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec, logger: &PtyOut, @@ -160,6 +161,20 @@ fn auto_deps( deps } +fn auto_deps_from_static_package_deps( + build_dep_pkgars: &BTreeSet<(PackageName, PathBuf)>, + dynamic_dep_pkgars: &BTreeSet, +) -> Result, PackageError> { + let static_dep_pkgars: Vec = build_dep_pkgars + .iter() + .map(|x| x.0.clone()) + .filter(|x| !dynamic_dep_pkgars.contains(x)) + .collect(); + let pkgs = CookRecipe::get_package_deps_recursive(&static_dep_pkgars, false)?; + + Ok(pkgs.into_iter().collect()) +} + pub fn build( recipe_dir: &Path, source_dir: &Path, @@ -394,8 +409,13 @@ fn build_auto_deps( toml::from_str(&toml_content).map_err(|_| "failed to deserialize cached auto_deps")?; wrapper.packages } else { - let packages = auto_deps(stage_dir, &dep_pkgars, logger); - let wrapper = AutoDeps { packages }; + let mut packages1 = auto_deps_from_dynamic_linking(stage_dir, &dep_pkgars, logger); + let packages2 = + auto_deps_from_static_package_deps(&dep_pkgars, &packages1).unwrap_or_default(); + packages1.extend(packages2); + let wrapper = AutoDeps { + packages: packages1, + }; serialize_and_write(&auto_deps_path, &wrapper)?; wrapper.packages }; @@ -481,7 +501,7 @@ pub fn build_remote( mod tests { use std::os::unix; - use super::auto_deps; + use super::auto_deps_from_dynamic_linking; #[test] fn file_system_loop_no_infinite_loop() { @@ -498,7 +518,7 @@ mod tests { "Expected a loop where {dir:?} points to {root:?}" ); - let entries = auto_deps(root, &Default::default(), &None); + let entries = auto_deps_from_dynamic_linking(root, &Default::default(), &None); assert!( entries.is_empty(), "auto_deps shouldn't have yielded any libraries" diff --git a/src/recipe.rs b/src/recipe.rs index 6dd6da09..3c9095fd 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -219,6 +219,11 @@ impl CookRecipe { pub fn new_recursive( names: &[PackageName], + recurse_build_deps: bool, + recurse_package_deps: bool, + collect_build_deps: bool, + collect_package_deps: bool, + collect_self: bool, recursion: usize, ) -> Result, PackageError> { if recursion == 0 { @@ -229,21 +234,51 @@ impl CookRecipe { for name in names { let recipe = Self::from_name(name.as_str())?; - let dependencies = - Self::new_recursive(&recipe.recipe.build.dependencies, recursion - 1).map_err( - |mut err| { - err.append_recursion(name); - err - }, - )?; + if recurse_build_deps { + let dependencies = Self::new_recursive( + &recipe.recipe.build.dependencies, + recurse_build_deps, + recurse_package_deps, + collect_build_deps, + collect_package_deps, + collect_build_deps, + recursion - 1, + ) + .map_err(|mut err| { + err.append_recursion(name); + err + })?; - for dependency in dependencies { - if !recipes.contains(&dependency) { - recipes.push(dependency); + for dependency in dependencies { + if !recipes.contains(&dependency) { + recipes.push(dependency); + } } } - if !recipes.contains(&recipe) { + if recurse_package_deps { + let dependencies = Self::new_recursive( + &recipe.recipe.package.dependencies, + recurse_build_deps, + recurse_package_deps, + collect_build_deps, + collect_package_deps, + collect_package_deps, + recursion - 1, + ) + .map_err(|mut err| { + err.append_recursion(name); + err + })?; + + for dependency in dependencies { + if !recipes.contains(&dependency) { + recipes.push(dependency); + } + } + } + + if collect_self && !recipes.contains(&recipe) { recipes.push(recipe); } } @@ -255,7 +290,7 @@ impl CookRecipe { names: &[PackageName], mark_is_deps: bool, ) -> Result, PackageError> { - let mut packages = Self::new_recursive(names, WALK_DEPTH)?; + let mut packages = Self::new_recursive(names, true, false, true, false, true, WALK_DEPTH)?; if mark_is_deps { for package in packages.iter_mut() { @@ -268,37 +303,13 @@ impl CookRecipe { pub fn get_package_deps_recursive( names: &[PackageName], - recursion: usize, + include_names: bool, ) -> Result, PackageError> { - if recursion == 0 { - return Err(PackageError::Recursion(Default::default())); - } + // recurse_build_deps == true here as libraries (build deps) can have runtime files (package deps) + let packages = + Self::new_recursive(names, true, true, false, true, include_names, WALK_DEPTH)?; - let mut recipes: Vec = Vec::new(); - for name in names { - let recipe = Self::from_name(name.as_str())?; - - let dependencies = Self::get_package_deps_recursive( - &recipe.recipe.package.dependencies, - recursion - 1, - ) - .map_err(|mut err| { - err.append_recursion(name); - err - })?; - - for dependency in dependencies { - if !recipes.contains(&dependency) { - recipes.push(dependency); - } - } - - if !recipes.contains(name) { - recipes.push(name.clone()); - } - } - - Ok(recipes) + Ok(packages.into_iter().map(|p| p.name).collect()) } } From af988bf669d0a7a1beb8c6f3962f882d8f90c939 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Mon, 3 Nov 2025 23:36:35 +0700 Subject: [PATCH 3040/3180] Apply cargo offline flags to build flags --- recipes/wip/demos/ratzilla/recipe.toml | 2 +- src/cook/script.rs | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/recipes/wip/demos/ratzilla/recipe.toml b/recipes/wip/demos/ratzilla/recipe.toml index 9da0eb97..80dd86b1 100644 --- a/recipes/wip/demos/ratzilla/recipe.toml +++ b/recipes/wip/demos/ratzilla/recipe.toml @@ -10,7 +10,7 @@ function build_from_dir { dir_name=$2 "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/examples/${dir_name}/Cargo.toml" \ - "${build_flags}" + ${build_flags} mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ "target/${TARGET}/${build_type}/${prog_name}" \ diff --git a/src/cook/script.rs b/src/cook/script.rs index c7311ac2..f7cb158b 100644 --- a/src/cook/script.rs +++ b/src/cook/script.rs @@ -108,7 +108,6 @@ export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" build_type=release install_flags= build_flags=--release -offline_flags= if [ ! -z "${COOKBOOK_DEBUG}" ] then install_flags=--debug @@ -120,7 +119,8 @@ fi if [ ! -z "${COOKBOOK_OFFLINE}" ] then -offline_flags=--offline +build_flags+=" --offline" +install_flags+=" --offline" fi # cargo template @@ -132,7 +132,6 @@ function cookbook_cargo { --locked \ --no-track \ ${install_flags} \ - ${offline_flags} \ -j "${COOKBOOK_MAKE_JOBS}" "$@" } @@ -144,7 +143,7 @@ function cookbook_cargo_examples { "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/${PACKAGE_PATH}/Cargo.toml" \ --example "${example}" \ - ${build_flags} ${offline_flags} -j "${COOKBOOK_MAKE_JOBS}" + ${build_flags} -j "${COOKBOOK_MAKE_JOBS}" mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ "target/${TARGET}/${build_type}/examples/${example}" \ @@ -160,7 +159,7 @@ function cookbook_cargo_packages { "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/${PACKAGE_PATH}/Cargo.toml" \ --package "${package}" \ - ${build_flags} ${offline_flags} -j "${COOKBOOK_MAKE_JOBS}" + ${build_flags} -j "${COOKBOOK_MAKE_JOBS}" mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ "target/${TARGET}/${build_type}/${package}" \ From 1e0b60eec5e53e6114851e4cac1ad598d7977e32 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Mon, 3 Nov 2025 20:44:19 +0700 Subject: [PATCH 3041/3180] Write build logs --- src/bin/repo.rs | 130 +++++++++++++++++++++++++++++------------ src/config.rs | 8 +++ src/cook/cook_build.rs | 29 +++------ src/cook/fetch.rs | 26 ++------- src/cook/pty.rs | 5 +- 5 files changed, 115 insertions(+), 83 deletions(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 69eecb2a..0bd8628f 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -72,6 +72,7 @@ struct CliConfig { cookbook_dir: PathBuf, repo_dir: PathBuf, sysroot_dir: PathBuf, + logs_dir: Option, category: Option, filesystem: Option, with_package_deps: bool, @@ -140,6 +141,12 @@ impl CliConfig { //FIXME: This config is unused as redox-pkg harcoded this to $PWD/recipes cookbook_dir: current_dir.join("recipes"), repo_dir: current_dir.join("repo"), + // build dir here is hardcoded in repo_builder as well + logs_dir: if get_config().cook.tui_logs { + Some(current_dir.join("build/logs")) + } else { + None + }, category: None, sysroot_dir: if cfg!(target_os = "redox") { PathBuf::from("/") @@ -342,6 +349,9 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec), + FlushLog(PackageName, PathBuf), FetchThreadFinished, CookThreadFinished, } @@ -676,6 +687,52 @@ impl TuiApp { } } + pub fn get_active_name(&self) -> Option { + if self.log_view_job == JobType::Cook { + self.active_cook.clone() + } else { + self.active_fetch.clone() + } + } + + pub fn get_active_log( + &self, + ) -> ( + Option, + Option<&Vec>, + Option>, + ) { + let active_name = self.get_active_name(); + let (log_text, log_line) = if let Some(active_name) = active_name.as_ref() { + self.get_recipe_log(active_name) + } else { + (None, None) + }; + + (active_name, log_text, log_line) + } + + pub fn get_recipe_log( + &self, + recipe_name: &PackageName, + ) -> (Option<&Vec>, Option>) { + let log_text = self.logs.get(recipe_name); + let log_line = if let Some(b) = self.log_byte_buffer.get(recipe_name) { + Some(String::from_utf8_lossy(b)) + } else { + None + }; + (log_text, log_line) + } + + pub fn write_log(&self, recipe_name: &PackageName, log_path: &PathBuf) -> anyhow::Result<()> { + let (Some(logs), line) = self.get_recipe_log(recipe_name) else { + return Ok(()); + }; + fs::write(log_path, join_logs(logs, line))?; + return Ok(()); + } + // Update the state based on a message from a worker thread fn update_status(&mut self, update: StatusUpdate) { let (name, new_status) = match update { @@ -711,6 +768,12 @@ impl TuiApp { } return; } + StatusUpdate::FlushLog(name, path) => { + // TODO: This blocks the TUI for a moment, maybe open separate thread? + // FIXME: handle error here? + let _ = self.write_log(&name, &path); + return; + } StatusUpdate::Cooked(recipe) => { if self.active_cook.as_ref() == Some(&recipe.name) { self.active_cook = None; @@ -784,13 +847,20 @@ fn run_tui_cook( let (mut stdout_writer, mut stderr_writer) = setup_logger(&cooker_status_tx, &name); let logger = Some((&mut stdout_writer, &mut stderr_writer)); 'again: loop { - match handle_cook( + let handler = handle_cook( &recipe, &cooker_config, source_dir.clone(), is_deps, &logger, - ) { + ); + if let Some(log_path) = cooker_config.logs_dir.as_ref() { + let log_path = log_path.join(name.as_str()); + cooker_status_tx + .send(StatusUpdate::FlushLog(name.clone(), log_path)) + .unwrap_or_default(); + } + match handler { Ok(()) => { cooker_status_tx .send(StatusUpdate::Cooked(recipe)) @@ -870,7 +940,14 @@ fn run_tui_cook( let logger = Some((&mut stdout_writer, &mut stderr_writer)); 'again: loop { - match handle_fetch(&recipe, &fetcher_config, &logger) { + let handler = handle_fetch(&recipe, &fetcher_config, &logger); + if let Some(log_path) = fetcher_config.logs_dir.as_ref() { + let log_path = log_path.join(name.as_str()); + fetcher_status_tx + .send(StatusUpdate::FlushLog(name.clone(), log_path)) + .unwrap_or_default(); + } + match handler { Ok(source_dir) => { fetcher_status_tx .send(StatusUpdate::Fetched(recipe.clone())) @@ -1041,7 +1118,7 @@ fn run_tui_cook( ); f.render_stateful_widget(cook_list, cook_chunk, &mut app.cook_list_state); - let (active_name, log_text, log_line) = get_active_log(&app); + let (active_name, log_text, log_line) = app.get_active_log(); let log_title = if let Some(active_name) = active_name { format!( " {} Log: {} ", @@ -1152,16 +1229,11 @@ fn run_tui_cook( if let Some((app, res)) = handle_prompt_input(&event, &mut app) { prompting.swap(res as u32, Ordering::SeqCst); if res == PromptOption::Exit { - let (name, log, line) = get_active_log(&app); + let (name, log, line) = app.get_active_log(); if let Some(name) = name && let Some(log) = log { - let mut logs = log.join("\n"); - if let Some(line) = line { - logs.push_str("\n"); - logs.push_str(handle_cr(&line)); - } - app.dump_logs_on_exit = Some((name.to_owned(), logs)); + app.dump_logs_on_exit = Some((name.to_owned(), join_logs(log, line))); } running.store(false, Ordering::SeqCst); } @@ -1194,38 +1266,20 @@ fn run_tui_cook( Ok(app.dump_logs_on_exit) } +fn join_logs(log: &Vec, line: Option>) -> String { + let mut logs = log.join("\n"); + if let Some(line) = line { + logs.push_str("\n"); + logs.push_str(handle_cr(&line)); + } + logs +} + fn handle_cr<'a>(buffer: &'a Cow<'_, str>) -> &'a str { let st = buffer.trim_end(); st.rsplit('\r').next().unwrap_or(&st) } -fn get_active_log( - app: &TuiApp, -) -> ( - Option, - Option<&Vec>, - Option>, -) { - let active_name = if app.log_view_job == JobType::Cook { - app.active_cook.clone() - } else { - app.active_fetch.clone() - }; - let log_text = if let Some(active_name) = &active_name { - app.logs.get(active_name) - } else { - None - }; - let log_line = if let Some(active_name) = &active_name - && let Some(b) = app.log_byte_buffer.get(active_name) - { - Some(String::from_utf8_lossy(b)) - } else { - None - }; - (active_name, log_text, log_line) -} - fn handle_main_event(app: &mut TuiApp, event: &Event) { match event { Event::Key(key) => match key { diff --git a/src/config.rs b/src/config.rs index 460fa43d..f014092e 100644 --- a/src/config.rs +++ b/src/config.rs @@ -12,6 +12,9 @@ pub struct CookConfigOpt { /// whether to use TUI to allow parallel build /// default value is yes if "CI" env unset and STDIN is open. pub tui: Option, + /// whether to write logs to build/logs dir + /// only usable when tui is used + pub tui_logs: Option, /// whether to ignore build errors pub nonstop: Option, /// whether to print success recipes info and warnings @@ -24,6 +27,7 @@ pub struct CookConfig { pub offline: bool, pub jobs: usize, pub tui: bool, + pub tui_logs: bool, pub nonstop: bool, pub verbose: bool, } @@ -34,6 +38,7 @@ impl From for CookConfig { offline: value.offline.unwrap(), jobs: value.jobs.unwrap(), tui: value.tui.unwrap(), + tui_logs: value.tui_logs.unwrap(), nonstop: value.nonstop.unwrap(), verbose: value.verbose.unwrap(), } @@ -75,6 +80,9 @@ pub fn init_config() { .unwrap_or(1), )); } + if config.cook_opt.tui_logs.is_none() { + config.cook_opt.tui_logs = config.cook_opt.tui; + } if config.cook_opt.offline.is_none() { config.cook_opt.offline = Some(extract_env("COOKBOOK_OFFLINE", false)); } diff --git a/src/cook/cook_build.rs b/src/cook/cook_build.rs index 4268f08d..75f69f87 100644 --- a/src/cook/cook_build.rs +++ b/src/cook/cook_build.rs @@ -19,25 +19,10 @@ use std::{ time::SystemTime, }; -use crate::is_redox; +use crate::{is_redox, log_to_pty}; use crate::REMOTE_PKG_SOURCE; -macro_rules! log_warn { - ($logger:expr, $($arg:tt)+) => { - use std::io::Write; - - if $logger.is_some() { - let _ = $logger.as_ref().unwrap().1.try_clone().unwrap().write( - format!($($arg)+) - .as_bytes(), - ); - } else { - eprintln!($($arg)+); - } - }; -} - fn auto_deps_from_dynamic_linking( stage_dir: &Path, dep_pkgars: &BTreeSet<(PackageName, PathBuf)>, @@ -61,7 +46,7 @@ fn auto_deps_from_dynamic_linking( }; if visited.contains(&dir) { #[cfg(debug_assertions)] - log_warn!( + log_to_pty!( logger, "DEBUG: auto_deps => Skipping `{dir:?}` (already visited)" ); @@ -111,7 +96,7 @@ fn auto_deps_from_dynamic_linking( continue; }; if let Ok(relative_path) = path.strip_prefix(stage_dir) { - log_warn!(logger, "DEBUG: {} needs {}", relative_path.display(), name); + log_to_pty!(logger, "DEBUG: {} needs {}", relative_path.display(), name); } needed.insert(name.to_string()); } @@ -145,7 +130,7 @@ fn auto_deps_from_dynamic_linking( continue; }; if needed.contains(child_name) { - log_warn!(logger, "DEBUG: {} provides {}", dep, child_name); + log_to_pty!(logger, "DEBUG: {} provides {}", dep, child_name); deps.insert(dep.clone()); missing.remove(child_name); } @@ -155,7 +140,7 @@ fn auto_deps_from_dynamic_linking( } for name in missing { - log_warn!(logger, "WARN: {} missing", name); + log_to_pty!(logger, "WARN: {} missing", name); } deps @@ -225,7 +210,7 @@ pub fn build( if sysroot_dir.is_dir() { let sysroot_modified = modified_dir(&sysroot_dir)?; if sysroot_modified < source_modified || sysroot_modified < deps_modified { - log_warn!( + log_to_pty!( logger, "DEBUG: '{}' newer than '{}'", source_dir.display(), @@ -275,7 +260,7 @@ pub fn build( if stage_dir.is_dir() { let stage_modified = modified_dir(&stage_dir)?; if stage_modified < source_modified || stage_modified < deps_modified { - log_warn!( + log_to_pty!( logger, "DEBUG: '{}' newer than '{}'", source_dir.display(), diff --git a/src/cook/fetch.rs b/src/cook/fetch.rs index 7f569fb5..b15a3554 100644 --- a/src/cook/fetch.rs +++ b/src/cook/fetch.rs @@ -3,6 +3,7 @@ use crate::cook::fs::*; use crate::cook::pty::PtyOut; use crate::cook::script::*; use crate::is_redox; +use crate::log_to_pty; use crate::recipe::BuildKind; use crate::recipe::Recipe; use crate::{blake3, recipe::SourceRecipe}; @@ -10,21 +11,6 @@ use std::fs; use std::path::{Path, PathBuf}; use std::process::Command; -macro_rules! log_warn { - ($logger:expr, $($arg:tt)+) => { - use std::io::Write; - - if $logger.is_some() { - let _ = $logger.as_ref().unwrap().1.try_clone().unwrap().write( - format!($($arg)+) - .as_bytes(), - ); - } else { - eprintln!($($arg)+); - } - }; -} - pub(crate) fn get_blake3(path: &PathBuf, show_progress: bool) -> Result { if show_progress { blake3::blake3_progress(&path) @@ -120,7 +106,7 @@ pub fn fetch(recipe_dir: &Path, recipe: &Recipe, logger: &PtyOut) -> Result { if !source_dir.is_dir() || modified_dir(Path::new(&path))? > modified_dir(&source_dir)? { - log_warn!( + log_to_pty!( logger, "[DEBUG]: {} is newer than {}", path, @@ -266,7 +252,7 @@ pub fn fetch(recipe_dir: &Path, recipe: &Recipe, logger: &PtyOut) -> Result Result Result Result { if !source_dir.is_dir() { - log_warn!( + log_to_pty!( logger, "WARNING: Recipe without source section expected source dir at '{}'", source_dir.display(), diff --git a/src/cook/pty.rs b/src/cook/pty.rs index 96bae8c8..35f641bd 100644 --- a/src/cook/pty.rs +++ b/src/cook/pty.rs @@ -17,10 +17,9 @@ pub use std::os::unix::io::RawFd; #[macro_export] macro_rules! log_to_pty { ($logger:expr, $($arg:tt)+) => { - use std::io::Write; - if $logger.is_some() { - let _ = $logger.as_ref().unwrap().1.try_clone().unwrap().write( + use std::io::Write; + let _ = $logger.as_ref().unwrap().1.try_clone().unwrap().write( format!($($arg)+) .as_bytes(), ); From 97d8b2f691af3e026bfc43820391b64a530d143f Mon Sep 17 00:00:00 2001 From: Wildan M Date: Mon, 3 Nov 2025 20:52:43 +0700 Subject: [PATCH 3042/3180] Append target to log dir so it can run parallel --- src/bin/repo.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 0bd8628f..e82fcaaf 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -349,7 +349,8 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec Date: Mon, 3 Nov 2025 21:23:48 +0700 Subject: [PATCH 3043/3180] Clean log from ANSI --- Cargo.lock | 87 ++----------------------------------------------- Cargo.toml | 17 +++++++--- src/bin/repo.rs | 7 ++-- 3 files changed, 20 insertions(+), 91 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ed750fd8..471f801f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -429,12 +429,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" -[[package]] -name = "cfg_aliases" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" - [[package]] name = "cfg_aliases" version = "0.2.1" @@ -772,12 +766,6 @@ dependencies = [ "syn", ] -[[package]] -name = "downcast-rs" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" - [[package]] name = "dryoc" version = "0.6.2" @@ -1585,18 +1573,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "nix" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" -dependencies = [ - "bitflags 2.9.1", - "cfg-if 1.0.1", - "cfg_aliases 0.1.1", - "libc", -] - [[package]] name = "nom" version = "7.1.3" @@ -1818,27 +1794,6 @@ version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" -[[package]] -name = "portable-pty" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4a596a2b3d2752d94f51fac2d4a96737b8705dddd311a32b9af47211f08671e" -dependencies = [ - "anyhow", - "bitflags 1.3.2", - "downcast-rs", - "filedescriptor", - "lazy_static", - "libc", - "log", - "nix", - "serial2", - "shared_library", - "shell-words", - "winapi", - "winreg", -] - [[package]] name = "potential_utf" version = "0.1.2" @@ -1888,7 +1843,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" dependencies = [ "bytes", - "cfg_aliases 0.2.1", + "cfg_aliases", "pin-project-lite", "quinn-proto", "quinn-udp", @@ -1928,7 +1883,7 @@ version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" dependencies = [ - "cfg_aliases 0.2.1", + "cfg_aliases", "libc", "once_cell", "socket2", @@ -2107,13 +2062,13 @@ dependencies = [ "pkgar 0.1.19", "pkgar-core 0.1.19", "pkgar-keys 0.1.19", - "portable-pty", "ratatui", "redox-pkg", "redox_installer", "redoxer", "regex", "serde", + "strip-ansi-escapes", "tempfile", "termion", "toml 0.8.23", @@ -2535,17 +2490,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serial2" -version = "0.2.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cc76fa68e25e771492ca1e3c53d447ef0be3093e05cd3b47f4b712ba10c6f3c" -dependencies = [ - "cfg-if 1.0.1", - "libc", - "winapi", -] - [[package]] name = "sha2" version = "0.10.9" @@ -2557,22 +2501,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "shared_library" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9e7e0f2bfae24d8a5b5a66c5b257a83c7412304311512a0c054cd5e619da11" -dependencies = [ - "lazy_static", - "libc", -] - -[[package]] -name = "shell-words" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" - [[package]] name = "shlex" version = "1.3.0" @@ -3579,15 +3507,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "winreg" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" -dependencies = [ - "winapi", -] - [[package]] name = "wit-bindgen-rt" version = "0.39.0" diff --git a/Cargo.toml b/Cargo.toml index 05494951..9d25c8ec 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,9 +20,15 @@ name = "cookbook" path = "src/lib.rs" doctest = false +[features] +#TODO: Actually make without tui feature works +default = ["tui"] +tui = ["ratatui", "ansi-to-tui", "filedescriptor", "strip-ansi-escapes"] + [dependencies] anyhow = "1" -blake3 = "=1.5.3" # 1.5.4 is incompatible with blake3 0.3 dependency from pkgar +# blake3 1.5.4 is incompatible with 0.3 dependency from pkgar +blake3 = "=1.5.3" libc = "0.2" ignore = "0.4" object = { version = "0.36", features = ["build_core"] } @@ -30,22 +36,23 @@ pbr = "1.0.2" pkgar = { path = "pkgar/pkgar" } pkgar-core = { path = "pkgar/pkgar-core" } pkgar-keys = { path = "pkgar/pkgar-keys" } -portable-pty = "0.9.0" redox-pkg = "0.2.8" +redox_installer = "0.2.37" redoxer = "0.2.56" regex = "1.11" serde = { version = "=1.0.197", features = ["derive"] } termion = "4" toml = "0.8" walkdir = "2.3.1" -filedescriptor = "0.8.3" -ansi-to-tui = "7.0.0" -redox_installer = "0.2.37" +filedescriptor = { version = "0.8.3", optional = true } +ansi-to-tui = { version = "7.0.0", optional = true } +strip-ansi-escapes = { version = "0.2.1", optional = true } [dependencies.ratatui] version = "0.29.0" default-features = false features = ["termion"] +optional = true [dev-dependencies] tempfile = "3" diff --git a/src/bin/repo.rs b/src/bin/repo.rs index e82fcaaf..0046270c 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -730,7 +730,10 @@ impl TuiApp { let (Some(logs), line) = self.get_recipe_log(recipe_name) else { return Ok(()); }; - fs::write(log_path, join_logs(logs, line))?; + let str = strip_ansi_escapes::strip_str(join_logs(logs, line)); + if !str.trim_end().is_empty() { + fs::write(log_path, str)?; + } return Ok(()); } @@ -770,7 +773,7 @@ impl TuiApp { return; } StatusUpdate::FlushLog(name, path) => { - // TODO: This blocks the TUI for a moment, maybe open separate thread? + // TODO: This blocks the TUI, maybe open separate thread? // FIXME: handle error here? let _ = self.write_log(&name, &path); return; From 2848e960fce379538749ba4cb90aceaf238d130a Mon Sep 17 00:00:00 2001 From: Wildan M Date: Mon, 3 Nov 2025 21:25:57 +0700 Subject: [PATCH 3044/3180] Add .log suffix --- src/bin/repo.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 0046270c..5814381c 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -946,7 +946,7 @@ fn run_tui_cook( 'again: loop { let handler = handle_fetch(&recipe, &fetcher_config, &logger); if let Some(log_path) = fetcher_config.logs_dir.as_ref() { - let log_path = log_path.join(name.as_str()); + let log_path = log_path.join(format!("{}.log", name.as_str())); fetcher_status_tx .send(StatusUpdate::FlushLog(name.clone(), log_path)) .unwrap_or_default(); From e9cea215def073886331a22d73d8c2fcf4f86010 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Mon, 3 Nov 2025 21:31:55 +0700 Subject: [PATCH 3045/3180] Don't log successful fetch --- src/bin/repo.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 5814381c..50fd28a0 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -859,7 +859,7 @@ fn run_tui_cook( &logger, ); if let Some(log_path) = cooker_config.logs_dir.as_ref() { - let log_path = log_path.join(name.as_str()); + let log_path = log_path.join(format!("{}.log", name.as_str())); cooker_status_tx .send(StatusUpdate::FlushLog(name.clone(), log_path)) .unwrap_or_default(); @@ -945,7 +945,10 @@ fn run_tui_cook( 'again: loop { let handler = handle_fetch(&recipe, &fetcher_config, &logger); - if let Some(log_path) = fetcher_config.logs_dir.as_ref() { + if let Some(log_path) = fetcher_config.logs_dir.as_ref() + // successful fetch log usually not that helpful + && handler.is_err() + { let log_path = log_path.join(format!("{}.log", name.as_str())); fetcher_status_tx .send(StatusUpdate::FlushLog(name.clone(), log_path)) From c1db92cb2285fdd6b29a6678159cf67ee4e2391f Mon Sep 17 00:00:00 2001 From: Wildan M Date: Mon, 3 Nov 2025 21:35:47 +0700 Subject: [PATCH 3046/3180] Add error context into logs --- src/bin/repo.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 50fd28a0..59692cc9 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -7,6 +7,7 @@ use cookbook::cook::fs::{create_target_dir, run_command}; use cookbook::cook::package::package; use cookbook::cook::pty::{PtyOut, UnixSlavePty, setup_pty}; use cookbook::cook::tree::{display_tree_entry, format_size}; +use cookbook::log_to_pty; use cookbook::recipe::{BuildKind, CookRecipe}; use pkg::PackageName; use pkg::package::PackageError; @@ -859,6 +860,9 @@ fn run_tui_cook( &logger, ); if let Some(log_path) = cooker_config.logs_dir.as_ref() { + if let Err(err_ctx) = &handler { + log_to_pty!(&logger, "{:?}", err_ctx) + } let log_path = log_path.join(format!("{}.log", name.as_str())); cooker_status_tx .send(StatusUpdate::FlushLog(name.clone(), log_path)) @@ -949,6 +953,9 @@ fn run_tui_cook( // successful fetch log usually not that helpful && handler.is_err() { + if let Err(err_ctx) = &handler { + log_to_pty!(&logger, "{:?}", err_ctx) + } let log_path = log_path.join(format!("{}.log", name.as_str())); fetcher_status_tx .send(StatusUpdate::FlushLog(name.clone(), log_path)) From e4403cb3d909fd6c8b017af960a5e223c56746d1 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Mon, 3 Nov 2025 21:47:30 +0700 Subject: [PATCH 3047/3180] Flush before saving --- src/bin/repo.rs | 8 +++++--- src/cook/pty.rs | 13 ++++++++++++- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 59692cc9..5e6ffa64 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -5,7 +5,7 @@ use cookbook::cook::cook_build::build; use cookbook::cook::fetch::{fetch, fetch_offline}; use cookbook::cook::fs::{create_target_dir, run_command}; use cookbook::cook::package::package; -use cookbook::cook::pty::{PtyOut, UnixSlavePty, setup_pty}; +use cookbook::cook::pty::{PtyOut, UnixSlavePty, flush_pty, setup_pty}; use cookbook::cook::tree::{display_tree_entry, format_size}; use cookbook::log_to_pty; use cookbook::recipe::{BuildKind, CookRecipe}; @@ -850,7 +850,7 @@ fn run_tui_cook( .send(StatusUpdate::StartCook(name.clone())) .unwrap(); let (mut stdout_writer, mut stderr_writer) = setup_logger(&cooker_status_tx, &name); - let logger = Some((&mut stdout_writer, &mut stderr_writer)); + let mut logger = Some((&mut stdout_writer, &mut stderr_writer)); 'again: loop { let handler = handle_cook( &recipe, @@ -863,6 +863,7 @@ fn run_tui_cook( if let Err(err_ctx) = &handler { log_to_pty!(&logger, "{:?}", err_ctx) } + flush_pty(&mut logger); let log_path = log_path.join(format!("{}.log", name.as_str())); cooker_status_tx .send(StatusUpdate::FlushLog(name.clone(), log_path)) @@ -945,7 +946,7 @@ fn run_tui_cook( .unwrap(); let (mut stdout_writer, mut stderr_writer) = setup_logger(&fetcher_status_tx, &name); - let logger = Some((&mut stdout_writer, &mut stderr_writer)); + let mut logger = Some((&mut stdout_writer, &mut stderr_writer)); 'again: loop { let handler = handle_fetch(&recipe, &fetcher_config, &logger); @@ -956,6 +957,7 @@ fn run_tui_cook( if let Err(err_ctx) = &handler { log_to_pty!(&logger, "{:?}", err_ctx) } + flush_pty(&mut logger); let log_path = log_path.join(format!("{}.log", name.as_str())); fetcher_status_tx .send(StatusUpdate::FlushLog(name.clone(), log_path)) diff --git a/src/cook/pty.rs b/src/cook/pty.rs index 35f641bd..3fe70461 100644 --- a/src/cook/pty.rs +++ b/src/cook/pty.rs @@ -1,7 +1,7 @@ use anyhow::{Error, bail}; use filedescriptor::FileDescriptor; use libc::{self, winsize}; -use std::io::Read; +use std::io::{Read, Write}; use std::os::fd::FromRawFd; use std::os::unix::io::AsRawFd; use std::os::unix::process::CommandExt; @@ -56,6 +56,14 @@ pub fn setup_pty() -> ( (pty_reader, log_reader, pipes) } +pub fn flush_pty(logger: &mut PtyOut) { + let Some((pty, file)) = logger else { + return; + }; + let _ = pty.flush(); + let _ = file.flush(); +} + pub fn spawn_to_pipe(command: &mut Command, stdout_pipe: &PtyOut) -> Result { match stdout_pipe { Some(stdout) => stdout.0.spawn_command(command.into()), @@ -318,6 +326,9 @@ impl UnixSlavePty { fn spawn_command(&self, builder: &mut Command) -> Result { Ok(self.fd.spawn_command(builder)?) } + fn flush(&self) -> Result<(), anyhow::Error> { + Ok(self.fd.as_file()?.flush()?) + } } impl UnixMasterPty { From 5e8a16296550f5a816353a607c74645f1cc7a0f6 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Mon, 3 Nov 2025 23:05:36 +0700 Subject: [PATCH 3048/3180] Make sure kill and flush works --- src/bin/repo.rs | 14 +++++++------- src/cook/pty.rs | 12 ++++++++++-- src/cook/script.rs | 16 ++++++++++++++++ 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 5e6ffa64..2d08507c 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -6,6 +6,7 @@ use cookbook::cook::fetch::{fetch, fetch_offline}; use cookbook::cook::fs::{create_target_dir, run_command}; use cookbook::cook::package::package; use cookbook::cook::pty::{PtyOut, UnixSlavePty, flush_pty, setup_pty}; +use cookbook::cook::script::KILL_ALL_PID; use cookbook::cook::tree::{display_tree_entry, format_size}; use cookbook::log_to_pty; use cookbook::recipe::{BuildKind, CookRecipe}; @@ -861,7 +862,7 @@ fn run_tui_cook( ); if let Some(log_path) = cooker_config.logs_dir.as_ref() { if let Err(err_ctx) = &handler { - log_to_pty!(&logger, "{:?}", err_ctx) + log_to_pty!(&logger, "\n{:?}", err_ctx) } flush_pty(&mut logger); let log_path = log_path.join(format!("{}.log", name.as_str())); @@ -955,7 +956,7 @@ fn run_tui_cook( && handler.is_err() { if let Err(err_ctx) = &handler { - log_to_pty!(&logger, "{:?}", err_ctx) + log_to_pty!(&logger, "\n{:?}", err_ctx) } flush_pty(&mut logger); let log_path = log_path.join(format!("{}.log", name.as_str())); @@ -1308,12 +1309,11 @@ fn handle_main_event(app: &mut TuiApp, event: &Event) { Key::Char('c') => { // as compilers still running, we use this way to stop it let pid = std::process::id(); - Command::new("pkill") - .arg("-9") - .arg("-P") - .arg(pid.to_string()) + Command::new("bash") + .arg("-c") + .arg(KILL_ALL_PID.replace("$PID", &pid.to_string())) .spawn() - .expect("unable to spawn pkill"); + .expect("unable to spawn kill"); } Key::Up => { app.auto_scroll = false; diff --git a/src/cook/pty.rs b/src/cook/pty.rs index 3fe70461..ae1c2aec 100644 --- a/src/cook/pty.rs +++ b/src/cook/pty.rs @@ -6,6 +6,7 @@ use std::os::fd::FromRawFd; use std::os::unix::io::AsRawFd; use std::os::unix::process::CommandExt; use std::process::Child; +use std::time::Duration; use std::{io, mem, ptr}; use std::{ io::{PipeReader, PipeWriter}, @@ -60,8 +61,11 @@ pub fn flush_pty(logger: &mut PtyOut) { let Some((pty, file)) = logger else { return; }; + // Not sure if flush actually working let _ = pty.flush(); + std::thread::sleep(Duration::from_millis(100)); let _ = file.flush(); + std::thread::sleep(Duration::from_millis(100)); } pub fn spawn_to_pipe(command: &mut Command, stdout_pipe: &PtyOut) -> Result { @@ -289,6 +293,10 @@ impl PtyFd { Ok(child) } + + fn flush(&mut self) -> std::io::Result<()> { + self.0.flush() + } } /// Represents the master end of a pty. @@ -326,8 +334,8 @@ impl UnixSlavePty { fn spawn_command(&self, builder: &mut Command) -> Result { Ok(self.fd.spawn_command(builder)?) } - fn flush(&self) -> Result<(), anyhow::Error> { - Ok(self.fd.as_file()?.flush()?) + fn flush(&mut self) -> Result<(), anyhow::Error> { + Ok(self.fd.flush()?) } } diff --git a/src/cook/script.rs b/src/cook/script.rs index c7311ac2..540098d7 100644 --- a/src/cook/script.rs +++ b/src/cook/script.rs @@ -352,3 +352,19 @@ if [ "$(git rev-parse HEAD)" != "$(git rev-parse $ORIGIN_BRANCH)" ] then git checkout -B "$(echo "$ORIGIN_BRANCH" | cut -d / -f 2-)" "$ORIGIN_BRANCH" fi"#; + +pub static KILL_ALL_PID: &str = r#" +THISPID=$$ +CHILDREN=$(ps -o pid= --ppid $PID | grep -v $THISPID); + +ALL_DESCENDANTS=''; + +while [ -n "$CHILDREN" ]; do + ALL_DESCENDANTS="$ALL_DESCENDANTS $CHILDREN"; + CHILDREN=$(ps -o pid= --ppid $(echo $CHILDREN) | tr '\n' ' '); +done; + +if [ -n "$ALL_DESCENDANTS" ]; then + kill -9 $ALL_DESCENDANTS; +fi +"#; From 90886db98e696a0a2b085504e21d78a3c79a2405 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 3 Nov 2025 15:33:38 -0700 Subject: [PATCH 3049/3180] Add freefont --- recipes/fonts/freefont/recipe.toml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 recipes/fonts/freefont/recipe.toml diff --git a/recipes/fonts/freefont/recipe.toml b/recipes/fonts/freefont/recipe.toml new file mode 100644 index 00000000..a9a67d20 --- /dev/null +++ b/recipes/fonts/freefont/recipe.toml @@ -0,0 +1,14 @@ +[source] +tar="https://ftp.gnu.org/gnu/freefont/freefont-otf-20120503.tar.gz" +blake3="e950397741d84981106cf648fbc143c7827b61d637c86c916232d47aabdfe253" + +[build] +template = "custom" +script = """ +for style in Mono Sans Serif +do + DEST="${COOKBOOK_STAGE}/ui/fonts/${style}/FreeFont" + mkdir -pv "${DEST}" + cp -v "${COOKBOOK_SOURCE}/Free${style}"*".otf" "${DEST}" +done +""" From d25963a81a4b9019159597d1d01b8a2a18b279cb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 3 Nov 2025 15:34:16 -0700 Subject: [PATCH 3050/3180] Add sysinfo example --- recipes/wip/monitors/sysinfo/recipe.toml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 recipes/wip/monitors/sysinfo/recipe.toml diff --git a/recipes/wip/monitors/sysinfo/recipe.toml b/recipes/wip/monitors/sysinfo/recipe.toml new file mode 100644 index 00000000..6a5e9bd8 --- /dev/null +++ b/recipes/wip/monitors/sysinfo/recipe.toml @@ -0,0 +1,8 @@ +[source] +git = "https://github.com/jackpot51/sysinfo" + +[build] +template = "custom" +script = """ +cookbook_cargo_examples simple +""" From 6e5b7ac123fbd24402ba4c1908751ada433981ee Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 3 Nov 2025 16:01:06 -0700 Subject: [PATCH 3051/3180] fend: add openssl1 and compile dynamically --- recipes/wip/math/fend/recipe.toml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/recipes/wip/math/fend/recipe.toml b/recipes/wip/math/fend/recipe.toml index 3066ea69..f9055f46 100644 --- a/recipes/wip/math/fend/recipe.toml +++ b/recipes/wip/math/fend/recipe.toml @@ -1,8 +1,13 @@ #TODO compiled but not tested [source] git = "https://github.com/printfn/fend" + [build] +dependencies = [ + "openssl1", +] template = "custom" script = """ +DYNAMIC_INIT cookbook_cargo_packages fend """ From a1b1de3308838be2b775c8102dcaaec9e3672abd Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 4 Nov 2025 14:46:20 -0700 Subject: [PATCH 3052/3180] Move anvil and smallvil to wayland directory --- recipes/wip/{demos => wayland}/anvil/recipe.toml | 0 recipes/wip/{demos => wayland}/smallvil/recipe.toml | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{demos => wayland}/anvil/recipe.toml (100%) rename recipes/wip/{demos => wayland}/smallvil/recipe.toml (100%) diff --git a/recipes/wip/demos/anvil/recipe.toml b/recipes/wip/wayland/anvil/recipe.toml similarity index 100% rename from recipes/wip/demos/anvil/recipe.toml rename to recipes/wip/wayland/anvil/recipe.toml diff --git a/recipes/wip/demos/smallvil/recipe.toml b/recipes/wip/wayland/smallvil/recipe.toml similarity index 100% rename from recipes/wip/demos/smallvil/recipe.toml rename to recipes/wip/wayland/smallvil/recipe.toml From 246ed0fbde9a920c37ce7a43a41e2693bcab35e5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 4 Nov 2025 14:46:49 -0700 Subject: [PATCH 3053/3180] smallvil: dynamically link and include libffi --- recipes/wip/wayland/smallvil/recipe.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/recipes/wip/wayland/smallvil/recipe.toml b/recipes/wip/wayland/smallvil/recipe.toml index e895b893..d4e1fb51 100644 --- a/recipes/wip/wayland/smallvil/recipe.toml +++ b/recipes/wip/wayland/smallvil/recipe.toml @@ -4,8 +4,10 @@ git = "https://github.com/Smithay/smithay" [build] template = "custom" dependencies = [ + "libffi", "libwayland", ] script = """ +DYNAMIC_INIT cookbook_cargo_packages smallvil """ From 84684ff7da04dae111aa5acfedf56fa050381d62 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 4 Nov 2025 20:05:28 -0700 Subject: [PATCH 3054/3180] Add wayland-rs and fix smallvil --- recipes/wip/wayland/smallvil/recipe.toml | 6 +++++- recipes/wip/wayland/wayland-rs/recipe.toml | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 recipes/wip/wayland/wayland-rs/recipe.toml diff --git a/recipes/wip/wayland/smallvil/recipe.toml b/recipes/wip/wayland/smallvil/recipe.toml index d4e1fb51..dd1d203b 100644 --- a/recipes/wip/wayland/smallvil/recipe.toml +++ b/recipes/wip/wayland/smallvil/recipe.toml @@ -1,13 +1,17 @@ #TODO make libwayland work [source] -git = "https://github.com/Smithay/smithay" +git = "https://github.com/jackpot51/smithay" +branch = "redox" + [build] template = "custom" dependencies = [ "libffi", "libwayland", + "libxkbcommon", ] script = """ DYNAMIC_INIT +export RUSTFLAGS="${RUSTFLAGS} -lffi" cookbook_cargo_packages smallvil """ diff --git a/recipes/wip/wayland/wayland-rs/recipe.toml b/recipes/wip/wayland/wayland-rs/recipe.toml new file mode 100644 index 00000000..f735f4ae --- /dev/null +++ b/recipes/wip/wayland/wayland-rs/recipe.toml @@ -0,0 +1,16 @@ +#TODO make libwayland work +[source] +git = "https://github.com/jackpot51/wayland-rs" +branch = "redox" + +[build] +template = "custom" +dependencies = [ + "libffi", + "libwayland", +] +script = """ +DYNAMIC_INIT +export RUSTFLAGS="${RUSTFLAGS} -lffi" +cookbook_cargo_examples simple_window +""" From 81faee18c8d9eb46287b45796b058dd1e18d2a01 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 5 Nov 2025 13:27:41 +0700 Subject: [PATCH 3055/3180] Update servo patches --- recipes/libs/mesa/recipe.toml | 7 ++-- recipes/wip/web/servo/recipe.toml | 5 +++ recipes/wip/web/servo/redox.patch | 55 +++++++++++++++++++++---------- 3 files changed, 46 insertions(+), 21 deletions(-) diff --git a/recipes/libs/mesa/recipe.toml b/recipes/libs/mesa/recipe.toml index 105a2630..d6eb2e9e 100644 --- a/recipes/libs/mesa/recipe.toml +++ b/recipes/libs/mesa/recipe.toml @@ -35,7 +35,8 @@ cookbook_meson \ -Dplatforms=redox \ -Dshader-cache=disabled -# Hack to add LLVM libs -#TODO: only add necessary LLVM libs, not all of them -sed -i "s/ -lOSMesa / -lOSMesa $("${LLVM_CONFIG}" --libs) -lstdc++ /" "${COOKBOOK_STAGE}/usr/lib/pkgconfig/osmesa.pc" +# Hack to add LLVM libs, the list can be seen from meson log and check for matches $("${LLVM_CONFIG}" --libs) +LLVMLIBS="-lLLVMBitReader -lLLVMCore -lLLVMExecutionEngine -lLLVMInstCombine -lLLVMMCDisassembler" +LLVMLIBS+=" -lLLVMMCJIT -lLLVMScalarOpts -lLLVMTransformUtils -lLLVMCoroutines -lLLVMLTO" +sed -i "s/ -lOSMesa / -lOSMesa ${LLVMLIBS} -lstdc++ /" "${COOKBOOK_STAGE}/usr/lib/pkgconfig/osmesa.pc" """ diff --git a/recipes/wip/web/servo/recipe.toml b/recipes/wip/web/servo/recipe.toml index 9d1b662d..b2f900b1 100644 --- a/recipes/wip/web/servo/recipe.toml +++ b/recipes/wip/web/servo/recipe.toml @@ -50,3 +50,8 @@ mv ${COOKBOOK_STAGE}/usr/bin/servo ${COOKBOOK_STAGE}/usr/lib/servo/bin/ ln -s ../lib/servo/bin/servo ${COOKBOOK_STAGE}/usr/bin/servo rsync -a -v ${COOKBOOK_SOURCE}/resources ${COOKBOOK_STAGE}/usr/lib/servo/ """ + +[package] +dependencies = [ + "mesa" +] diff --git a/recipes/wip/web/servo/redox.patch b/recipes/wip/web/servo/redox.patch index d2dc302f..63ca0e77 100644 --- a/recipes/wip/web/servo/redox.patch +++ b/recipes/wip/web/servo/redox.patch @@ -1,5 +1,5 @@ diff --git a/Cargo.toml b/Cargo.toml -index 8589f4c8078..5f64981206c 100644 +index 8589f4c8078..2773d79f447 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,7 +31,7 @@ arboard = "3" @@ -11,21 +11,21 @@ index 8589f4c8078..5f64981206c 100644 background_hang_monitor_api = { path = "components/shared/background_hang_monitor" } backtrace = "0.3" base = { path = "components/shared/base" } -@@ -88,7 +88,7 @@ imsz = "0.2" +@@ -86,7 +86,7 @@ icu_segmenter = "1.5.0" + image = { version = "0.25", default-features = false, features = ["avif", "rayon", "bmp", "gif", "ico", "jpeg", "png", "webp"] } + imsz = "0.2" indexmap = { version = "2.11.4", features = ["std"] } - ipc-channel = "0.20.2" +-ipc-channel = "0.20.2" ++ipc-channel = { version = "0.20.2", features = ["force-inprocess"] } itertools = "0.14" --js = { package = "mozjs", git = "https://github.com/servo/mozjs" } -+js = { package = "mozjs", path = "/home/willnode/mozjs/mozjs" } + js = { package = "mozjs", git = "https://github.com/servo/mozjs" } keyboard-types = { version = "0.8.3", features = ["serde", "webdriver"] } - kurbo = { version = "0.11.3", features = ["euclid"] } - layout_api = { path = "components/shared/layout" } @@ -148,7 +148,7 @@ stylo_config = { git = "https://github.com/servo/stylo", branch = "2025-10-01" } stylo_dom = { git = "https://github.com/servo/stylo", branch = "2025-10-01" } stylo_malloc_size_of = { git = "https://github.com/servo/stylo", branch = "2025-10-01" } stylo_traits = { git = "https://github.com/servo/stylo", branch = "2025-10-01" } -surfman = { version = "0.10.0", features = ["chains"] } -+surfman = { path = "/home/willnode/surfman", features = ["chains"] } ++surfman = { git = "https://github.com/willnode/surfman", branch = "redox-orbital", features = ["chains"] } syn = { version = "2", default-features = false, features = ["clone-impls", "derive", "parsing"] } synstructure = "0.13" taffy = { version = "0.9", default-features = false, features = ["calc", "detailed_layout_info", "grid", "std"] } @@ -50,11 +50,13 @@ index 8589f4c8078..5f64981206c 100644 xi-unicode = "0.3.0" xml5ever = "0.35" xpath = { path = "components/xpath" } -@@ -232,6 +232,18 @@ lto = "thin" +@@ -232,6 +232,20 @@ lto = "thin" codegen-units = 1 [patch.crates-io] ++# requires socketpair SOCK_SEQPACKET to support multiprocess (try remove force-inprocess feature) +ipc-channel = { git = "https://github.com/willnode/ipc-channel.git", branch="redox" } ++orbclient = { git = "https://gitlab.redox-os.org/redox-os/orbclient" } +#servo_malloc_size_of = { path = "./components/malloc_size_of" } +tikv-jemalloc-sys = { version = "0.6.0", git = "https://gitlab.redox-os.org/njskalski/jemallocator.git", branch = "redox_mods" } +tikv-jemallocator = { version = "0.6.0", git = "https://gitlab.redox-os.org/njskalski/jemallocator.git", branch = "redox_mods" } @@ -69,7 +71,7 @@ index 8589f4c8078..5f64981206c 100644 # If you need to temporarily test Servo with a local fork of some upstream # crate, add that here. Use the form: # -@@ -260,7 +272,7 @@ codegen-units = 1 +@@ -260,7 +274,7 @@ codegen-units = 1 # # [patch."https://github.com/servo/webrender"] # webrender = { path = "../webrender/webrender" } @@ -78,6 +80,19 @@ index 8589f4c8078..5f64981206c 100644 # wr_malloc_size_of = { path = "../webrender/wr_malloc_size_of" } # # Or for another Git dependency: +diff --git a/components/background_hang_monitor/Cargo.toml b/components/background_hang_monitor/Cargo.toml +index f08648d3eb9..a6272f8ffb5 100644 +--- a/components/background_hang_monitor/Cargo.toml ++++ b/components/background_hang_monitor/Cargo.toml +@@ -18,7 +18,7 @@ background_hang_monitor_api = { workspace = true } + backtrace = { workspace = true } + base = { workspace = true } + crossbeam-channel = { workspace = true } +-ipc-channel = { workspace = true } ++ipc-channel = { workspace = true, features = ["force-inprocess"] } + libc = { workspace = true } + log = { workspace = true } + rustc-demangle = { version = "0.1", optional = true } diff --git a/components/constellation/Cargo.toml b/components/constellation/Cargo.toml index 5974dd08eea..74e43604b00 100644 --- a/components/constellation/Cargo.toml @@ -230,18 +245,22 @@ index 9ba20db80c0..efd49741a7b 100644 criterion = { version = "0.5", features = ["html_reports"] } diff --git a/components/script/dom/navigatorinfo.rs b/components/script/dom/navigatorinfo.rs -index f3e6ddc109b..ee83d327df9 100644 +index f3e6ddc109b..6b539f120c9 100644 --- a/components/script/dom/navigatorinfo.rs +++ b/components/script/dom/navigatorinfo.rs -@@ -46,7 +46,7 @@ pub(crate) fn Platform() -> DOMString { - } - - #[allow(non_snake_case)] --#[cfg(any(target_os = "android", target_os = "linux"))] -+#[cfg(any(target_os = "android", target_os = "linux", target_os = "redox"))] - pub(crate) fn Platform() -> DOMString { +@@ -51,6 +51,12 @@ pub(crate) fn Platform() -> DOMString { DOMString::from("Linux") } + ++#[allow(non_snake_case)] ++#[cfg(target_os = "redox")] ++pub(crate) fn Platform() -> DOMString { ++ DOMString::from("Redox") ++} ++ + #[allow(non_snake_case)] + #[cfg(target_os = "macos")] + pub(crate) fn Platform() -> DOMString { diff --git a/components/script_bindings/build.rs b/components/script_bindings/build.rs index c28f900f6ce..2445c2ec9e4 100644 --- a/components/script_bindings/build.rs From 1418882089d4504cdae5e231fd725f46ed6c6446 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 5 Nov 2025 07:27:54 -0700 Subject: [PATCH 3056/3180] servo: use git fork --- recipes/wip/web/servo/recipe.toml | 18 +- recipes/wip/web/servo/redox.patch | 681 ------------------------------ 2 files changed, 7 insertions(+), 692 deletions(-) delete mode 100644 recipes/wip/web/servo/redox.patch diff --git a/recipes/wip/web/servo/recipe.toml b/recipes/wip/web/servo/recipe.toml index b2f900b1..8bc27b63 100644 --- a/recipes/wip/web/servo/recipe.toml +++ b/recipes/wip/web/servo/recipe.toml @@ -1,27 +1,23 @@ [source] -git = "https://github.com/servo/servo.git" -rev = "721214fbe44bf11b968e5e076e5b0af5b5663447" -patches = [ - "redox.patch" -] -script = """ -cp ../.servobuild ./ -""" +git = "https://gitlab.redox-os.org/redox-os/servo.git" +branch = "redox" [build] template = "custom" dependencies = [ + "expat", + "fontconfig", "freetype2", "libpng", "libstdcxx-v3", - "zlib", "mesa", - "fontconfig", - "expat", + "zlib", ] script = """ DYNAMIC_INIT +cp -v "${COOKBOOK_RECIPE}/.servobuild" "${COOKBOOK_SOURCE}/.servobuild" + # jemalloc specific configuration export JEMALLOC_SYS_WITH_LG_PAGE=16 export TARGET_CC="$CC" diff --git a/recipes/wip/web/servo/redox.patch b/recipes/wip/web/servo/redox.patch deleted file mode 100644 index 63ca0e77..00000000 --- a/recipes/wip/web/servo/redox.patch +++ /dev/null @@ -1,681 +0,0 @@ -diff --git a/Cargo.toml b/Cargo.toml -index 8589f4c8078..2773d79f447 100644 ---- a/Cargo.toml -+++ b/Cargo.toml -@@ -31,7 +31,7 @@ arboard = "3" - arrayvec = "0.7" - async-tungstenite = { version = "0.29", features = ["tokio-rustls-webpki-roots"] } - atomic_refcell = "0.1.13" --aws-lc-rs = { version = "1.14", default-features = false, features = ["aws-lc-sys"] } -+aws-lc-rs = { version = "=1.13.3", default-features = false, features = ["aws-lc-sys"] } - background_hang_monitor_api = { path = "components/shared/background_hang_monitor" } - backtrace = "0.3" - base = { path = "components/shared/base" } -@@ -86,7 +86,7 @@ icu_segmenter = "1.5.0" - image = { version = "0.25", default-features = false, features = ["avif", "rayon", "bmp", "gif", "ico", "jpeg", "png", "webp"] } - imsz = "0.2" - indexmap = { version = "2.11.4", features = ["std"] } --ipc-channel = "0.20.2" -+ipc-channel = { version = "0.20.2", features = ["force-inprocess"] } - itertools = "0.14" - js = { package = "mozjs", git = "https://github.com/servo/mozjs" } - keyboard-types = { version = "0.8.3", features = ["serde", "webdriver"] } -@@ -148,7 +148,7 @@ stylo_config = { git = "https://github.com/servo/stylo", branch = "2025-10-01" } - stylo_dom = { git = "https://github.com/servo/stylo", branch = "2025-10-01" } - stylo_malloc_size_of = { git = "https://github.com/servo/stylo", branch = "2025-10-01" } - stylo_traits = { git = "https://github.com/servo/stylo", branch = "2025-10-01" } --surfman = { version = "0.10.0", features = ["chains"] } -+surfman = { git = "https://github.com/willnode/surfman", branch = "redox-orbital", features = ["chains"] } - syn = { version = "2", default-features = false, features = ["clone-impls", "derive", "parsing"] } - synstructure = "0.13" - taffy = { version = "0.9", default-features = false, features = ["calc", "detailed_layout_info", "grid", "std"] } -@@ -174,16 +174,16 @@ vello_cpu = { git = "https://github.com/linebender/vello", rev = "fdf025a88dd00c - webdriver = "0.53.0" - webgpu_traits = { path = "components/shared/webgpu" } - webpki-roots = "1.0" --webrender = { git = "https://github.com/servo/webrender", branch = "0.68", features = ["capture"] } --webrender_api = { git = "https://github.com/servo/webrender", branch = "0.68" } -+webrender = { git = "https://github.com/willnode/webrender.git", branch = "0.68-redox", features = ["capture"] } -+webrender_api = { git = "https://github.com/willnode/webrender.git", branch = "0.68-redox" } - webxr-api = { path = "components/shared/webxr" } - wgpu-core = "26" - wgpu-types = "26" - winapi = "0.3" - windows-sys = "0.61" --winit = "0.30.12" -+winit = { version = "0.30.12", default-features = false } - wio = "0.2" --wr_malloc_size_of = { git = "https://github.com/servo/webrender", branch = "0.68" } -+wr_malloc_size_of = { git = "https://github.com/willnode/webrender.git", branch = "0.68-redox" } - xi-unicode = "0.3.0" - xml5ever = "0.35" - xpath = { path = "components/xpath" } -@@ -232,6 +232,20 @@ lto = "thin" - codegen-units = 1 - - [patch.crates-io] -+# requires socketpair SOCK_SEQPACKET to support multiprocess (try remove force-inprocess feature) -+ipc-channel = { git = "https://github.com/willnode/ipc-channel.git", branch="redox" } -+orbclient = { git = "https://gitlab.redox-os.org/redox-os/orbclient" } -+#servo_malloc_size_of = { path = "./components/malloc_size_of" } -+tikv-jemalloc-sys = { version = "0.6.0", git = "https://gitlab.redox-os.org/njskalski/jemallocator.git", branch = "redox_mods" } -+tikv-jemallocator = { version = "0.6.0", git = "https://gitlab.redox-os.org/njskalski/jemallocator.git", branch = "redox_mods" } -+mozangle = { git = "https://gitlab.redox-os.org/willnode/mozangle.git", branch = "redox_mods"} -+aws-lc-rs = { git = "https://gitlab.redox-os.org/njskalski/aws-lc-rs.git", branch = "redox_mods" } -+# mozjs_sys = { git = "https://gitlab.redox-os.org/njskalski/mozjs.git", rev = "e2ee9c77148c3af4f11fdff9a2cbd7e449d48d33"} -+# mozjs = { git = "https://gitlab.redox-os.org/njskalski/mozjs.git", branch = "redox_mods"} -+# x11rb = { git = "https://gitlab.redox-os.org/njskalski/x11rb.git", branch = "redox_mods"} -+libz-sys = { git = "https://github.com/willnode/libz-sys.git", branch = "servo"} -+# winit = { git = "https://gitlab.redox-os.org/njskalski/winit.git", branch = "redox_mods2"} -+# freetype-sys = { git = "https://github.com/PistonDevelopers/freetype-sys.git", branch = "master" } - # If you need to temporarily test Servo with a local fork of some upstream - # crate, add that here. Use the form: - # -@@ -260,7 +274,7 @@ codegen-units = 1 - # - # [patch."https://github.com/servo/webrender"] - # webrender = { path = "../webrender/webrender" } --# webrender_api = { path = "../webrender/webrender_api" } -+# webrender_api = { git = "https://github.com/willnode/webrender.git", branch = "0.68-redox" } = { path = "../webrender/webrender_api = { git = "https://github.com/willnode/webrender.git", branch = "0.68-redox" }" } - # wr_malloc_size_of = { path = "../webrender/wr_malloc_size_of" } - # - # Or for another Git dependency: -diff --git a/components/background_hang_monitor/Cargo.toml b/components/background_hang_monitor/Cargo.toml -index f08648d3eb9..a6272f8ffb5 100644 ---- a/components/background_hang_monitor/Cargo.toml -+++ b/components/background_hang_monitor/Cargo.toml -@@ -18,7 +18,7 @@ background_hang_monitor_api = { workspace = true } - backtrace = { workspace = true } - base = { workspace = true } - crossbeam-channel = { workspace = true } --ipc-channel = { workspace = true } -+ipc-channel = { workspace = true, features = ["force-inprocess"] } - libc = { workspace = true } - log = { workspace = true } - rustc-demangle = { version = "0.1", optional = true } -diff --git a/components/constellation/Cargo.toml b/components/constellation/Cargo.toml -index 5974dd08eea..74e43604b00 100644 ---- a/components/constellation/Cargo.toml -+++ b/components/constellation/Cargo.toml -@@ -67,4 +67,4 @@ webrender_api = { workspace = true } - webxr-api = { workspace = true, features = ["ipc"] } - - [target.'cfg(any(target_os="macos", all(not(target_os = "windows"), not(target_os = "ios"), not(target_os="android"), not(target_env="ohos"), not(target_arch="arm"), not(target_arch="aarch64"))))'.dependencies] --gaol = "0.2.1" -+gaol = { git = "https://github.com/willnode/gaol.git", branch = "redox" } -diff --git a/components/constellation/sandboxing.rs b/components/constellation/sandboxing.rs -index 02a6f4ed6f6..e88b3bd6ee1 100644 ---- a/components/constellation/sandboxing.rs -+++ b/components/constellation/sandboxing.rs -@@ -99,7 +99,7 @@ pub fn content_process_sandbox_profile() -> Profile { - not(target_os = "android"), - not(target_env = "ohos"), - not(target_arch = "arm"), -- not(target_arch = "aarch64") -+ not(target_arch = "aarch64"), - ))] - pub fn content_process_sandbox_profile() -> Profile { - use std::path::PathBuf; -@@ -175,7 +175,7 @@ pub fn spawn_multiprocess(content: UnprivilegedContent) -> Result Result { - use gaol::sandbox::{self, Sandbox, SandboxMethods}; -diff --git a/components/fonts/Cargo.toml b/components/fonts/Cargo.toml -index a22f053f133..3ce1e22b76e 100644 ---- a/components/fonts/Cargo.toml -+++ b/components/fonts/Cargo.toml -@@ -61,11 +61,11 @@ core-foundation = "0.9" - core-graphics = "0.23" - core-text = "20.1" - --[target.'cfg(any(target_os = "linux", target_os = "android"))'.dependencies] -+[target.'cfg(any(target_os = "linux", target_os = "android", target_os = "redox"))'.dependencies] - freetype-sys = { workspace = true } - servo_allocator = { path = "../allocator" } - --[target.'cfg(all(target_os = "linux", not(target_env = "ohos")))'.dependencies] -+[target.'cfg(all(any(target_os = "linux", target_os = "redox"), not(target_env = "ohos")))'.dependencies] - fontconfig_sys = { package = "yeslogic-fontconfig-sys", version = "6" } - - [target.'cfg(target_os = "android")'.dependencies] -diff --git a/components/fonts/font.rs b/components/fonts/font.rs -index 12bde2769de..d76b3626ef5 100644 ---- a/components/fonts/font.rs -+++ b/components/fonts/font.rs -@@ -912,7 +912,7 @@ pub struct FontBaseline { - /// let mapped_weight = apply_font_config_to_style_mapping(&mapping, weight as f64); - /// ``` - #[cfg(all( -- any(target_os = "linux", target_os = "macos"), -+ any(target_os = "linux", target_os = "macos", target_os="redox"), - not(target_env = "ohos") - ))] - pub(crate) fn map_platform_values_to_style_values(mapping: &[(f64, f64)], value: f64) -> f64 { -diff --git a/components/fonts/platform/freetype/mod.rs b/components/fonts/platform/freetype/mod.rs -index 3698087927a..42cf4b128ba 100644 ---- a/components/fonts/platform/freetype/mod.rs -+++ b/components/fonts/platform/freetype/mod.rs -@@ -5,7 +5,7 @@ - pub mod font; - mod freetype_face; - --#[cfg(all(target_os = "linux", not(target_env = "ohos"), not(ohos_mock)))] -+#[cfg(all(any(target_os = "linux", target_os = "redox"), not(target_env = "ohos"), not(ohos_mock)))] - pub mod font_list; - - #[cfg(target_os = "android")] -diff --git a/components/fonts/platform/mod.rs b/components/fonts/platform/mod.rs -index c8e1dc14800..444364fe6d0 100644 ---- a/components/fonts/platform/mod.rs -+++ b/components/fonts/platform/mod.rs -@@ -3,32 +3,32 @@ - * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ - - #[cfg(all( -- any(target_os = "linux", target_os = "macos"), -+ any(target_os = "linux", target_os = "macos", target_os="redox"), - not(target_os = "android"), - not(target_env = "ohos") - ))] - use base::text::{UnicodeBlock, UnicodeBlockMethod}; - #[cfg(all( -- any(target_os = "linux", target_os = "macos"), -+ any(target_os = "linux", target_os = "macos", target_os="redox"), - not(target_os = "android"), - not(target_env = "ohos") - ))] - use unicode_script::Script; - - #[cfg(all( -- any(target_os = "linux", target_os = "macos"), -+ any(target_os = "linux", target_os = "macos", target_os="redox"), - not(target_os = "android"), - not(target_env = "ohos") - ))] - use crate::FallbackFontSelectionOptions; --#[cfg(any(target_os = "linux", target_os = "android"))] -+#[cfg(any(target_os = "linux", target_os = "android", target_os="redox"))] - pub use crate::platform::freetype::{font, font_list}; - #[cfg(target_os = "macos")] - pub use crate::platform::macos::{core_text_font_cache, font, font_list}; - #[cfg(target_os = "windows")] - pub use crate::platform::windows::{font, font_list}; - --#[cfg(any(target_os = "linux", target_os = "android"))] -+#[cfg(any(target_os = "linux", target_os = "android", target_os="redox"))] - pub mod freetype; - - #[cfg(target_os = "macos")] -@@ -45,7 +45,7 @@ mod windows { - } - - #[cfg(all( -- any(target_os = "linux", target_os = "macos"), -+ any(target_os = "linux", target_os = "macos", target_os="redox"), - not(target_os = "android"), - not(target_env = "ohos") - ))] -diff --git a/components/net/Cargo.toml b/components/net/Cargo.toml -index 3d2eb3c7594..fb9db9ea4d4 100644 ---- a/components/net/Cargo.toml -+++ b/components/net/Cargo.toml -@@ -76,7 +76,6 @@ url = { workspace = true } - uuid = { workspace = true } - webpki-roots = { workspace = true } - webrender_api = { workspace = true } -- - [dev-dependencies] - embedder_traits = { workspace = true, features = ["baked-default-resources"] } - flate2 = "1" -diff --git a/components/pixels/Cargo.toml b/components/pixels/Cargo.toml -index 9ba20db80c0..efd49741a7b 100644 ---- a/components/pixels/Cargo.toml -+++ b/components/pixels/Cargo.toml -@@ -20,7 +20,6 @@ malloc_size_of = { workspace = true } - malloc_size_of_derive = { workspace = true } - serde = { workspace = true, features = ["derive"] } - webrender_api = { workspace = true } -- - [dev-dependencies] - criterion = { version = "0.5", features = ["html_reports"] } - -diff --git a/components/script/dom/navigatorinfo.rs b/components/script/dom/navigatorinfo.rs -index f3e6ddc109b..6b539f120c9 100644 ---- a/components/script/dom/navigatorinfo.rs -+++ b/components/script/dom/navigatorinfo.rs -@@ -51,6 +51,12 @@ pub(crate) fn Platform() -> DOMString { - DOMString::from("Linux") - } - -+#[allow(non_snake_case)] -+#[cfg(target_os = "redox")] -+pub(crate) fn Platform() -> DOMString { -+ DOMString::from("Redox") -+} -+ - #[allow(non_snake_case)] - #[cfg(target_os = "macos")] - pub(crate) fn Platform() -> DOMString { -diff --git a/components/script_bindings/build.rs b/components/script_bindings/build.rs -index c28f900f6ce..2445c2ec9e4 100644 ---- a/components/script_bindings/build.rs -+++ b/components/script_bindings/build.rs -@@ -86,12 +86,12 @@ impl phf_shared::PhfHash for Bytes<'_> { - /// - /// Note: This function should be kept in sync with the version in `components/script/build.rs` - fn find_python() -> Command { -- let mut command = Command::new("uv"); -- command.args(["run", "--no-project", "python"]); -+ let mut command = Command::new("python3"); -+ // command.args(["run", "--no-project", "python"]); - - if command.output().is_ok_and(|out| out.status.success()) { - return command; - } - -- panic!("Can't find python (tried `{command:?}`)! Is uv installed and in PATH?") -+ panic!("Can't find python (tried `{command:?}`)!") - } -diff --git a/components/servo/Cargo.toml b/components/servo/Cargo.toml -index e400c592bed..211813cb6c6 100644 ---- a/components/servo/Cargo.toml -+++ b/components/servo/Cargo.toml -@@ -13,8 +13,9 @@ path = "lib.rs" - crate-type = ["rlib"] - - [features] --default = ["clipboard", "vello_cpu"] --background_hang_monitor = ["background_hang_monitor/sampler"] -+# clipboard cut off -+default = ["vello_cpu"] -+# background_hang_monitor = ["background_hang_monitor/sampler"] - bluetooth = [ - "bluetooth_traits", - "dep:bluetooth", -@@ -131,7 +132,7 @@ webxr = { path = "../webxr", optional = true } - arboard = { workspace = true, optional = true } - webxr = { path = "../webxr", features = ["ipc", "glwindow", "headless"] } - --[target.'cfg(all(not(target_os = "windows"), not(target_os = "ios"), not(target_os = "android"), not(target_env = "ohos"), not(target_arch = "arm"), not(target_arch = "aarch64")))'.dependencies] -+[target.'cfg(all(not(target_os = "windows"), not(target_os = "ios"), not(target_os = "android"), not(target_env = "ohos"), not(target_arch = "arm"), not(target_arch = "aarch64"), not(target_os = "redox")))'.dependencies] - gaol = "0.2.1" - - [target.'cfg(target_os = "windows")'.dependencies] -@@ -141,7 +142,7 @@ webxr = { path = "../webxr", features = ["ipc", "glwindow", "headless", "openxr- - anyhow = "1.0.97" - http = { workspace = true } - libservo = { path = ".", features = ["tracing"] } --rustls = { version = "0.23", default-features = false, features = ["aws-lc-rs"] } -+rustls = { workspace = true , default-features = false, features = ["aws-lc-rs"] } - tracing = { workspace = true } - winit = { workspace = true } - -diff --git a/components/servo/lib.rs b/components/servo/lib.rs -index 4b7dcdc5052..4174dfc4348 100644 ---- a/components/servo/lib.rs -+++ b/components/servo/lib.rs -@@ -77,6 +77,7 @@ use fonts::SystemFontService; - not(target_arch = "arm"), - not(target_arch = "aarch64"), - not(target_env = "ohos"), -+ not(target_os = "redox"), - ))] - use gaol::sandbox::{ChildSandbox, ChildSandboxMethods}; - pub use gleam::gl; -@@ -1335,6 +1336,7 @@ pub fn run_content_process(token: String) { - not(target_arch = "arm"), - not(target_arch = "aarch64"), - not(target_env = "ohos"), -+ not(target_os = "redox"), - ))] - fn create_sandbox() { - ChildSandbox::new(content_process_sandbox_profile()) -@@ -1349,6 +1351,7 @@ fn create_sandbox() { - target_arch = "arm", - target_arch = "aarch64", - target_env = "ohos", -+ target_os = "redox", - ))] - fn create_sandbox() { - panic!("Sandboxing is not supported on Windows, iOS, ARM targets and android."); -diff --git a/components/shared/compositing/rendering_context.rs b/components/shared/compositing/rendering_context.rs -index 515533db2e2..920a9a15cab 100644 ---- a/components/shared/compositing/rendering_context.rs -+++ b/components/shared/compositing/rendering_context.rs -@@ -105,7 +105,12 @@ impl Drop for SurfmanRenderingContext { - - impl SurfmanRenderingContext { - fn new(connection: &Connection, adapter: &Adapter) -> Result { -+ eprintln!(" SurfmanRenderingContext::new - Starting"); -+ eprintln!(" GL API: {:?}", connection.gl_api()); -+ -+ eprintln!(" Creating device..."); - let mut device = connection.create_device(adapter)?; -+ eprintln!(" Device created"); - - let flags = ContextAttributeFlags::ALPHA | - ContextAttributeFlags::DEPTH | -@@ -115,9 +120,16 @@ impl SurfmanRenderingContext { - GLApi::GLES => surfman::GLVersion { major: 3, minor: 0 }, - GLApi::GL => surfman::GLVersion { major: 3, minor: 2 }, - }; -+ eprintln!(" GL Version requested: {}.{}", version.major, version.minor); -+ -+ eprintln!(" Creating context descriptor..."); - let context_descriptor = - device.create_context_descriptor(&ContextAttributes { flags, version })?; -+ eprintln!(" Context descriptor created"); -+ -+ eprintln!(" Creating context..."); - let context = device.create_context(&context_descriptor, None)?; -+ eprintln!(" Context created"); - - #[allow(unsafe_code)] - let gleam_gl = { -@@ -392,20 +404,41 @@ impl WindowRenderingContext { - window_handle: WindowHandle, - size: PhysicalSize, - ) -> Result { -+ eprintln!("WindowRenderingContext::new - Starting creation"); -+ eprintln!(" Size: {}x{}", size.width, size.height); -+ -+ eprintln!(" Creating connection from display_handle..."); - let connection = Connection::from_display_handle(display_handle)?; -+ eprintln!(" Connection created successfully"); -+ -+ eprintln!(" Creating adapter..."); - let adapter = connection.create_adapter()?; -+ eprintln!(" Adapter created successfully"); -+ -+ eprintln!(" Creating SurfmanRenderingContext..."); - let surfman_context = SurfmanRenderingContext::new(&connection, &adapter)?; -+ eprintln!(" SurfmanRenderingContext created successfully"); - -+ eprintln!(" Creating native widget from window handle..."); - let native_widget = connection - .create_native_widget_from_window_handle( - window_handle, - Size2D::new(size.width as i32, size.height as i32), - ) - .expect("Failed to create native widget"); -+ eprintln!(" Native widget created successfully"); - -+ eprintln!(" Creating surface..."); - let surface = surfman_context.create_surface(SurfaceType::Widget { native_widget })?; -+ eprintln!(" Surface created successfully"); -+ -+ eprintln!(" Binding surface..."); - surfman_context.bind_surface(surface)?; -+ eprintln!(" Surface bound successfully"); -+ -+ eprintln!(" Making context current..."); - surfman_context.make_current()?; -+ eprintln!(" Context made current successfully"); - - Ok(Self { - size: Cell::new(size), -diff --git a/components/shared/fonts/font_identifier.rs b/components/shared/fonts/font_identifier.rs -index 8029252a20c..5d13b8010ee 100644 ---- a/components/shared/fonts/font_identifier.rs -+++ b/components/shared/fonts/font_identifier.rs -@@ -22,7 +22,7 @@ impl FontIdentifier { - } - } - --#[cfg(any(target_os = "linux", target_os = "android"))] -+#[cfg(any(target_os = "linux", target_os = "android", target_os = "redox"))] - mod platform { - use std::fs::File; - use std::path::{Path, PathBuf}; -diff --git a/components/shared/net/Cargo.toml b/components/shared/net/Cargo.toml -index f727fa008a5..90dbbceeb01 100644 ---- a/components/shared/net/Cargo.toml -+++ b/components/shared/net/Cargo.toml -@@ -43,6 +43,5 @@ servo_url = { path = "../../url" } - url = { workspace = true } - uuid = { workspace = true } - webrender_api = { workspace = true } -- - [dev-dependencies] - embedder_traits = { workspace = true, features = ["baked-default-resources"] } -diff --git a/ports/servoshell/Cargo.toml b/ports/servoshell/Cargo.toml -index c18a68219b8..54ea23823a7 100644 ---- a/ports/servoshell/Cargo.toml -+++ b/ports/servoshell/Cargo.toml -@@ -35,7 +35,8 @@ OriginalFilename = "servo.exe" - ProductName = "Servo" - - [features] --default = ["max_log_level", "webgpu", "webxr"] -+# cutting , "webxr" for redox -+default = ["max_log_level", "webgpu"] - crown = ["libservo/crown"] - debugmozjs = ["libservo/debugmozjs"] - jitspew = ["libservo/jitspew"] -@@ -65,7 +66,8 @@ image = { workspace = true } - ipc-channel = { workspace = true } - keyboard-types = { workspace = true } - libc = { workspace = true } --libservo = { path = "../../components/servo", features = ["background_hang_monitor", "bluetooth", "testbinding"] } -+# removed "background_hang_monitor", -+libservo = { path = "../../components/servo", features = [ "bluetooth", "testbinding"] } - log = { workspace = true } - mime_guess = { workspace = true } - raw-window-handle = { workspace = true } -@@ -105,12 +107,31 @@ nix = { workspace = true, features = ["fs"] } - serde_json = { workspace = true } - surfman = { workspace = true, features = ["sm-angle-default"] } - --[target.'cfg(not(any(target_os = "android", target_env = "ohos")))'.dependencies] --accesskit_winit = "0.27" -+# I removed the problematic dependencies from everywhere even though they should not be pulled for redox. The thing is that cargo is still complaining about them, even -+# though they should be ignored. -+[target.'cfg(not(any(target_os = "android", target_env = "ohos", target_os = "redox")))'.dependencies] -+# accesskit_winit = "0.27" - dirs = "6.0" --egui = { version = "0.32.3", features = ["accesskit"] } -+# egui = { version = "0.32.3", features = ["accesskit"] } -+# egui-file-dialog = "0.11.0" -+# egui-winit = { version = "0.32.3", default-features = false, features = ["accesskit", "clipboard", "wayland"] } -+# egui_glow = { version = "0.32.3", features = ["winit"] } -+gilrs = "0.11.0" -+# glow = "0.16.0" -+headers = { workspace = true } -+net = { path = "../../components/net" } -+net_traits = { workspace = true } -+serde_json = { workspace = true } -+# For optional feature servo_allocator/use-system-allocator -+servo_allocator = { path = "../../components/allocator" } -+surfman = { workspace = true, features = ["sm-raw-window-handle-06", "sm-x11"] } -+winit = { workspace = true } -+ -+[target.'cfg(target_os = "redox")'.dependencies] -+dirs = "6.0" -+egui = { version = "0.32.1", default-features = false } - egui-file-dialog = "0.11.0" --egui-winit = { version = "0.32.3", default-features = false, features = ["accesskit", "clipboard", "wayland"] } -+egui-winit = { version = "0.32.3", default-features = false, features = [] } - egui_glow = { version = "0.32.3", features = ["winit"] } - gilrs = "0.11.0" - glow = { workspace = true } -diff --git a/ports/servoshell/desktop/app.rs b/ports/servoshell/desktop/app.rs -index a77d1060051..0691b3909cc 100644 ---- a/ports/servoshell/desktop/app.rs -+++ b/ports/servoshell/desktop/app.rs -@@ -699,18 +699,18 @@ impl ApplicationHandler for App { - } - - fn user_event(&mut self, event_loop: &ActiveEventLoop, event: AppEvent) { -- if let AppEvent::Accessibility(ref event) = event { -- let Some(ref mut minibrowser) = self.minibrowser else { -- return; -- }; -- if !minibrowser.handle_accesskit_event(&event.window_event) { -- return; -- } -- if let Some(window) = self.windows.get(&event.window_id) { -- window.winit_window().unwrap().request_redraw(); -- } -- return; -- } -+ // if let AppEvent::Accessibility(ref event) = event { -+ // let Some(ref mut minibrowser) = self.minibrowser else { -+ // return; -+ // }; -+ // if !minibrowser.handle_accesskit_event(&event.window_event) { -+ // return; -+ // } -+ // if let Some(window) = self.windows.get(&event.window_id) { -+ // window.winit_window().unwrap().request_redraw(); -+ // } -+ // return; -+ // } - - let now = Instant::now(); - let event = winit::event::Event::UserEvent(event); -diff --git a/ports/servoshell/desktop/events_loop.rs b/ports/servoshell/desktop/events_loop.rs -index 8bb978c7bfb..94e946928b2 100644 ---- a/ports/servoshell/desktop/events_loop.rs -+++ b/ports/servoshell/desktop/events_loop.rs -@@ -20,14 +20,14 @@ pub type EventLoopProxy = winit::event_loop::EventLoopProxy; - pub enum AppEvent { - /// Another process or thread has kicked the OS event loop with EventLoopWaker. - Waker, -- Accessibility(accesskit_winit::Event), -+ // Accessibility(accesskit_winit::Event), - } - --impl From for AppEvent { -- fn from(event: accesskit_winit::Event) -> AppEvent { -- AppEvent::Accessibility(event) -- } --} -+// impl From for AppEvent { -+// fn from(event: accesskit_winit::Event) -> AppEvent { -+// AppEvent::Accessibility(event) -+// } -+// } - - /// The real or fake OS event loop. - #[allow(dead_code)] -diff --git a/ports/servoshell/desktop/headed_window.rs b/ports/servoshell/desktop/headed_window.rs -index bfe35feca4e..1e3220cad1f 100644 ---- a/ports/servoshell/desktop/headed_window.rs -+++ b/ports/servoshell/desktop/headed_window.rs -@@ -153,10 +153,24 @@ impl Window { - let window_handle = winit_window - .window_handle() - .expect("could not get window handle from window"); -- let window_rendering_context = Rc::new( -- WindowRenderingContext::new(display_handle, window_handle, inner_size) -- .expect("Could not create RenderingContext for Window"), -- ); -+ -+ eprintln!("headed_window: Creating WindowRenderingContext..."); -+ eprintln!(" DISPLAY env var: {:?}", std::env::var("DISPLAY")); -+ eprintln!(" Display handle obtained: {:?}", display_handle); -+ eprintln!(" Window handle obtained: {:?}", window_handle); -+ eprintln!(" Inner size: {}x{}", inner_size.width, inner_size.height); -+ -+ let window_rendering_context = match WindowRenderingContext::new(display_handle, window_handle, inner_size) { -+ Ok(context) => { -+ eprintln!(" WindowRenderingContext created successfully!"); -+ Rc::new(context) -+ }, -+ Err(e) => { -+ eprintln!(" Failed to create WindowRenderingContext!"); -+ eprintln!(" Error: {:?}", e); -+ panic!("Could not create RenderingContext for Window: {:?}", e); -+ } -+ }; - - // Setup for GL accelerated media handling. This is only active on certain Linux platforms - // and Windows. -diff --git a/ports/servoshell/desktop/headless_window.rs b/ports/servoshell/desktop/headless_window.rs -index 9910ed941d4..4937cee1120 100644 ---- a/ports/servoshell/desktop/headless_window.rs -+++ b/ports/servoshell/desktop/headless_window.rs -@@ -168,7 +168,7 @@ impl WindowPortsMethods for Window { - // notification (such as from the display manager) that it has changed size, so we - // must notify the compositor here. - webview.move_resize(self.screen_size.to_f32().into()); -- webview.resize(PhysicalSize::new( -+ webview.resize(PhysicalSize::::new( - self.screen_size.width as u32, - self.screen_size.height as u32, - )); -diff --git a/ports/servoshell/desktop/minibrowser.rs b/ports/servoshell/desktop/minibrowser.rs -index ba4127a241f..6026edc93a4 100644 ---- a/ports/servoshell/desktop/minibrowser.rs -+++ b/ports/servoshell/desktop/minibrowser.rs -@@ -107,9 +107,9 @@ impl Minibrowser { - ); - - let winit_window = window.winit_window().unwrap(); -- context -- .egui_winit -- .init_accesskit(event_loop, winit_window, event_loop_proxy); -+ // context -+ // .egui_winit -+ // .init_accesskit(event_loop, winit_window, event_loop_proxy); - winit_window.set_visible(true); - - context.egui_ctx.options_mut(|options| { -@@ -571,6 +571,7 @@ impl Minibrowser { - } - - /// Returns true if a redraw is required after handling the provided event. -+ /* - pub(crate) fn handle_accesskit_event(&mut self, event: &accesskit_winit::WindowEvent) -> bool { - match event { - accesskit_winit::WindowEvent::InitialTreeRequested => { -@@ -589,7 +590,7 @@ impl Minibrowser { - }, - } - } -- -+ */ - pub(crate) fn set_zoom_factor(&self, factor: f32) { - self.context.egui_ctx.set_zoom_factor(factor); - } -diff --git a/ports/servoshell/desktop/tracing.rs b/ports/servoshell/desktop/tracing.rs -index b1f0b1d742e..046b016a2e2 100644 ---- a/ports/servoshell/desktop/tracing.rs -+++ b/ports/servoshell/desktop/tracing.rs -@@ -52,7 +52,7 @@ mod from_winit { - Self::WindowEvent { event, .. } => event.log_target(), - Self::DeviceEvent { .. } => target!("DeviceEvent"), - Self::UserEvent(AppEvent::Waker) => target!("UserEvent(Waker)"), -- Self::UserEvent(AppEvent::Accessibility(..)) => target!("UserEvent(Accessibility)"), -+ // Self::UserEvent(AppEvent::Accessibility(..)) => target!("UserEvent(Accessibility)"), - Self::Suspended => target!("Suspended"), - Self::Resumed => target!("Resumed"), - Self::AboutToWait => target!("AboutToWait"), -diff --git a/rust-toolchain.toml b/rust-toolchain.toml -deleted file mode 100644 -index 97ac30608ba..00000000000 ---- a/rust-toolchain.toml -+++ /dev/null -@@ -1,17 +0,0 @@ --[toolchain] --# Be sure to update the 'rust-overlay' module's url in shell.nix to point to a --# commit which supports the required rustc version and also update the version --# in support/crown/rust-toolchain.toml when bumping this! --channel = "1.89.0" -- --components = [ -- "clippy", -- # For support/crown -- "llvm-tools", -- # For support/crown -- "rustc-dev", -- "rustfmt", -- "rustc-dev", -- # For rust-analyzer -- "rust-src", --] From 3598d477bcfd5bc3d2ae83458fb7c26c9dcfa933 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 6 Nov 2025 03:55:10 -0300 Subject: [PATCH 3057/3180] Add recipes --- recipes/wip/db/rainfrog/recipe.toml | 9 +++++++++ recipes/wip/games/data/crosshare-data/recipe.toml | 10 ++++++++++ recipes/wip/games/puzzle/crosstui/recipe.toml | 12 ++++++++++++ recipes/wip/libs/fs/libnfs/recipe.toml | 7 +++++++ recipes/wip/net/security/yadb/recipe.toml | 5 +++++ recipes/wip/net/social/reddix/recipe.toml | 5 +++++ recipes/wip/search/television/recipe.toml | 5 +++++ recipes/wip/text/rucola/recipe.toml | 9 +++++++++ recipes/wip/time/worktime-tui/recipe.toml | 5 +++++ 9 files changed, 67 insertions(+) create mode 100644 recipes/wip/db/rainfrog/recipe.toml create mode 100644 recipes/wip/games/data/crosshare-data/recipe.toml create mode 100644 recipes/wip/games/puzzle/crosstui/recipe.toml create mode 100644 recipes/wip/libs/fs/libnfs/recipe.toml create mode 100644 recipes/wip/net/security/yadb/recipe.toml create mode 100644 recipes/wip/net/social/reddix/recipe.toml create mode 100644 recipes/wip/search/television/recipe.toml create mode 100644 recipes/wip/text/rucola/recipe.toml create mode 100644 recipes/wip/time/worktime-tui/recipe.toml diff --git a/recipes/wip/db/rainfrog/recipe.toml b/recipes/wip/db/rainfrog/recipe.toml new file mode 100644 index 00000000..b28e5e1a --- /dev/null +++ b/recipes/wip/db/rainfrog/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/achristmascarl/rainfrog" +[build] +template = "cargo" +[package] +dependencies = [ + "nerd-fonts", +] diff --git a/recipes/wip/games/data/crosshare-data/recipe.toml b/recipes/wip/games/data/crosshare-data/recipe.toml new file mode 100644 index 00000000..9b482e41 --- /dev/null +++ b/recipes/wip/games/data/crosshare-data/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/crosshare-org/crosshare" +shallow_clone = true +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}/usr/share/crosshare-data" +cp -rv "${COOKBOOK_SOURCE}"/app/__tests__/converter/puz/*.puz "${COOKBOOK_STAGE}/usr/share/crosshare-data" +""" diff --git a/recipes/wip/games/puzzle/crosstui/recipe.toml b/recipes/wip/games/puzzle/crosstui/recipe.toml new file mode 100644 index 00000000..e79c78f4 --- /dev/null +++ b/recipes/wip/games/puzzle/crosstui/recipe.toml @@ -0,0 +1,12 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/matrixfrog/crossword" +[build] +template = "custom" +script = """ +cookbook_cargo_packages crosstui +""" +[package] +dependencies = [ + "crosshare-data" +] diff --git a/recipes/wip/libs/fs/libnfs/recipe.toml b/recipes/wip/libs/fs/libnfs/recipe.toml new file mode 100644 index 00000000..ea2431a1 --- /dev/null +++ b/recipes/wip/libs/fs/libnfs/recipe.toml @@ -0,0 +1,7 @@ +#TODO not compiled or tested +# build instructions: https://github.com/sahlberg/libnfs/blob/master/INSTALL +[source] +git = "https://github.com/sahlberg/libnfs" +rev = "libnfs-6.0.2" +[build] +template = "cmake" diff --git a/recipes/wip/net/security/yadb/recipe.toml b/recipes/wip/net/security/yadb/recipe.toml new file mode 100644 index 00000000..d8b9c989 --- /dev/null +++ b/recipes/wip/net/security/yadb/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/izya4ka/yadb" +[build] +template = "cargo" diff --git a/recipes/wip/net/social/reddix/recipe.toml b/recipes/wip/net/social/reddix/recipe.toml new file mode 100644 index 00000000..59406eee --- /dev/null +++ b/recipes/wip/net/social/reddix/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ck-zhang/reddix" +[build] +template = "cargo" diff --git a/recipes/wip/search/television/recipe.toml b/recipes/wip/search/television/recipe.toml new file mode 100644 index 00000000..82eadd56 --- /dev/null +++ b/recipes/wip/search/television/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/alexpasmantier/television" +[build] +template = "cargo" diff --git a/recipes/wip/text/rucola/recipe.toml b/recipes/wip/text/rucola/recipe.toml new file mode 100644 index 00000000..4251cc89 --- /dev/null +++ b/recipes/wip/text/rucola/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Linus-Mussmaecher/rucola" +[build] +template = "cargo" +[package] +dependencies = [ + "nerd-fonts", +] diff --git a/recipes/wip/time/worktime-tui/recipe.toml b/recipes/wip/time/worktime-tui/recipe.toml new file mode 100644 index 00000000..899bb610 --- /dev/null +++ b/recipes/wip/time/worktime-tui/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Kamyil/work-tuimer" +[build] +template = "cargo" From eee235139e32e2d4f51a7ac17656caff2395b2bb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 6 Nov 2025 18:49:25 -0700 Subject: [PATCH 3058/3180] sdl2-ttf: fix compilation with updated mesa --- recipes/libs/sdl2-ttf/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/libs/sdl2-ttf/recipe.toml b/recipes/libs/sdl2-ttf/recipe.toml index 2d74b62f..888f1835 100644 --- a/recipes/libs/sdl2-ttf/recipe.toml +++ b/recipes/libs/sdl2-ttf/recipe.toml @@ -2,12 +2,15 @@ tar = "https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-2.0.15.tar.gz" blake3 = "9814a07f33a3501b414f0fc7fa962e7d7ffc56748406f3798b7698b8d7e7fe12" script = """ +DYNAMIC_INIT ./autogen.sh """ [build] dependencies = [ + "expat", "freetype2", + "libdrm", "liborbital", "libpng", "llvm18", From e5787eff9f0ae57762e806bc6b69eb3b6943b2f0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 6 Nov 2025 18:51:57 -0700 Subject: [PATCH 3059/3180] neverball: add new mesa dependencies --- recipes/games/neverball/recipe.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/recipes/games/neverball/recipe.toml b/recipes/games/neverball/recipe.toml index 880c8b0c..6c3f9f12 100644 --- a/recipes/games/neverball/recipe.toml +++ b/recipes/games/neverball/recipe.toml @@ -5,7 +5,9 @@ patches = ["redox.patch"] [build] dependencies = [ + "expat", "freetype2", + "libdrm", "libjpeg", "libogg", "liborbital", From 9239005bf64818d34ef544a1f56128c0567d170b Mon Sep 17 00:00:00 2001 From: Wildan M Date: Fri, 7 Nov 2025 14:01:33 +0700 Subject: [PATCH 3060/3180] Recurse build deps in sysroot --- src/bin/cook.rs | 29 +++++------ src/bin/repo.rs | 13 ++--- src/cook/cook_build.rs | 51 +++++++++++++------- src/recipe.rs | 107 ++++++++++++++++++++++++++++++----------- 4 files changed, 131 insertions(+), 69 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 1f5a4f33..555fd37a 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -89,20 +89,21 @@ fn main() { }; } - let recipes = match CookRecipe::get_build_deps_recursive(&recipe_names, !with_package_deps) { - Ok(ok) => ok, - Err(err) => { - eprintln!( - "{}{}cook - error:{}{} {}", - style::Bold, - color::Fg(color::AnsiValue(196)), - color::Fg(color::Reset), - style::Reset, - err, - ); - process::exit(1); - } - }; + let recipes = + match CookRecipe::get_build_deps_recursive(&recipe_names, true, !with_package_deps) { + Ok(ok) => ok, + Err(err) => { + eprintln!( + "{}{}cook - error:{}{} {}", + style::Bold, + color::Fg(color::AnsiValue(196)), + color::Fg(color::Reset), + style::Reset, + err, + ); + process::exit(1); + } + }; for recipe in recipes { if !quiet { diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 2d08507c..8fe2700e 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -9,7 +9,7 @@ use cookbook::cook::pty::{PtyOut, UnixSlavePty, flush_pty, setup_pty}; use cookbook::cook::script::KILL_ALL_PID; use cookbook::cook::tree::{display_tree_entry, format_size}; use cookbook::log_to_pty; -use cookbook::recipe::{BuildKind, CookRecipe}; +use cookbook::recipe::CookRecipe; use pkg::PackageName; use pkg::package::PackageError; use ratatui::Terminal; @@ -418,6 +418,7 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec { recipe.recipe.source = None; - recipe.recipe.build = cookbook::recipe::BuildRecipe { - kind: BuildKind::Remote, - dependencies: Vec::new(), - }; + recipe.recipe.build.set_as_remote(); } PackageConfig::Build(rule) => { return Err(anyhow!( @@ -458,10 +456,7 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec, dynamic_dep_pkgars: &BTreeSet, -) -> Result, PackageError> { +) -> Result<(BTreeSet, Vec), PackageError> { let static_dep_pkgars: Vec = build_dep_pkgars .iter() .map(|x| x.0.clone()) @@ -157,7 +156,7 @@ fn auto_deps_from_static_package_deps( .collect(); let pkgs = CookRecipe::get_package_deps_recursive(&static_dep_pkgars, false)?; - Ok(pkgs.into_iter().collect()) + Ok((pkgs.into_iter().collect(), static_dep_pkgars)) } pub fn build( @@ -178,15 +177,13 @@ pub fn build( } let mut dep_pkgars = BTreeSet::new(); - for dependency in recipe.build.dependencies.iter() { - let dependency_dir = recipes::find(dependency.as_str()); - if dependency_dir.is_none() { - return Err(format!("failed to find recipe directory '{}'", dependency)); - } + let build_deps = CookRecipe::get_build_deps_recursive(&recipe.build.dependencies, false, false) + .map_err(|e| format!("{:?}", e))?; + for dependency in build_deps.iter() { dep_pkgars.insert(( - dependency.clone(), - dependency_dir - .unwrap() + dependency.name.clone(), + dependency + .dir .join("target") .join(redoxer::target()) .join("stage.pkgar"), @@ -194,7 +191,7 @@ pub fn build( } if stage_dir.exists() && !check_source { - let auto_deps = build_auto_deps(target_dir, &stage_dir, dep_pkgars, logger)?; + let auto_deps = build_auto_deps(recipe, target_dir, &stage_dir, dep_pkgars, logger)?; return Ok((stage_dir, auto_deps)); } @@ -370,13 +367,14 @@ pub fn build( rename(&stage_dir_tmp, &stage_dir)?; } - let auto_deps = build_auto_deps(target_dir, &stage_dir, dep_pkgars, logger)?; + let auto_deps = build_auto_deps(recipe, target_dir, &stage_dir, dep_pkgars, logger)?; Ok((stage_dir, auto_deps)) } /// Calculate automatic dependencies fn build_auto_deps( + recipe: &Recipe, target_dir: &Path, stage_dir: &PathBuf, dep_pkgars: BTreeSet<(PackageName, PathBuf)>, @@ -394,12 +392,29 @@ fn build_auto_deps( toml::from_str(&toml_content).map_err(|_| "failed to deserialize cached auto_deps")?; wrapper.packages } else { - let mut packages1 = auto_deps_from_dynamic_linking(stage_dir, &dep_pkgars, logger); - let packages2 = - auto_deps_from_static_package_deps(&dep_pkgars, &packages1).unwrap_or_default(); - packages1.extend(packages2); + let mut dynamic_deps = auto_deps_from_dynamic_linking(stage_dir, &dep_pkgars, logger); + let (package_deps, static_deps) = + auto_deps_from_static_package_deps(&dep_pkgars, &dynamic_deps).unwrap_or_default(); + dynamic_deps.extend(package_deps); + + // if auto_deps working, all build deps should be linked as auto_deps, otherwise: + // 1. it's weakly linked, which should be mentioned as package deps + // 2. it's not our direct ELF dependencies, which should be removed from build deps + // 3. only needed for build purpose, which should be moved to dev build deps + if dynamic_deps.len() > 0 && static_deps.len() > 0 { + for dep in &static_deps { + if !recipe.package.dependencies.contains(dep) { + log_to_pty!( + &logger, + "WARNING: build deps {} is not linked in auto_deps", + dep.as_str() + ); + } + } + } + let wrapper = AutoDeps { - packages: packages1, + packages: dynamic_deps, }; serialize_and_write(&auto_deps_path, &wrapper)?; wrapper.packages diff --git a/src/recipe.rs b/src/recipe.rs index 3c9095fd..153be407 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -140,6 +140,8 @@ pub struct BuildRecipe { pub kind: BuildKind, #[serde(default)] pub dependencies: Vec, + #[serde(default, rename = "dev-dependencies")] + pub dev_dependencies: Vec, } #[derive(Debug, Clone, Default, Deserialize, PartialEq, Serialize)] @@ -163,6 +165,28 @@ pub struct Recipe { pub package: PackageRecipe, } +impl BuildRecipe { + pub fn new(kind: BuildKind) -> Self { + let mut build = Self::default(); + build.kind = kind; + build + } + + pub fn set_as_remote(&mut self) { + self.kind = BuildKind::Remote; + self.dev_dependencies = Vec::new(); + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct CookRecipe { + pub name: PackageName, + pub dir: PathBuf, + pub recipe: Recipe, + /// If false, it's listed on install config + pub is_deps: bool, +} + impl Recipe { pub fn new(file: &PathBuf) -> Result { if !file.is_file() { @@ -175,14 +199,6 @@ impl Recipe { Ok(recipe) } } -#[derive(Debug, Clone, PartialEq)] -pub struct CookRecipe { - pub name: PackageName, - pub dir: PathBuf, - pub recipe: Recipe, - /// If false, it's listed on install config - pub is_deps: bool, -} impl CookRecipe { pub fn new(name: PackageName, dir: PathBuf, recipe: Recipe) -> Result { @@ -220,6 +236,7 @@ impl CookRecipe { pub fn new_recursive( names: &[PackageName], recurse_build_deps: bool, + recurse_dev_build_deps: bool, recurse_package_deps: bool, collect_build_deps: bool, collect_package_deps: bool, @@ -238,6 +255,30 @@ impl CookRecipe { let dependencies = Self::new_recursive( &recipe.recipe.build.dependencies, recurse_build_deps, + recurse_dev_build_deps, + recurse_package_deps, + collect_build_deps, + collect_package_deps, + collect_build_deps, + recursion - 1, + ) + .map_err(|mut err| { + err.append_recursion(name); + err + })?; + + for dependency in dependencies { + if !recipes.contains(&dependency) { + recipes.push(dependency); + } + } + } + + if recurse_dev_build_deps { + let dependencies = Self::new_recursive( + &recipe.recipe.build.dev_dependencies, + recurse_build_deps, + recurse_dev_build_deps, recurse_package_deps, collect_build_deps, collect_package_deps, @@ -260,6 +301,7 @@ impl CookRecipe { let dependencies = Self::new_recursive( &recipe.recipe.package.dependencies, recurse_build_deps, + recurse_dev_build_deps, recurse_package_deps, collect_build_deps, collect_package_deps, @@ -288,9 +330,19 @@ impl CookRecipe { pub fn get_build_deps_recursive( names: &[PackageName], + include_dev: bool, mark_is_deps: bool, ) -> Result, PackageError> { - let mut packages = Self::new_recursive(names, true, false, true, false, true, WALK_DEPTH)?; + let mut packages = Self::new_recursive( + names, + true, + include_dev, + false, + true, + false, + true, + WALK_DEPTH, + )?; if mark_is_deps { for package in packages.iter_mut() { @@ -306,8 +358,16 @@ impl CookRecipe { include_names: bool, ) -> Result, PackageError> { // recurse_build_deps == true here as libraries (build deps) can have runtime files (package deps) - let packages = - Self::new_recursive(names, true, true, false, true, include_names, WALK_DEPTH)?; + let packages = Self::new_recursive( + names, + true, + false, + true, + false, + true, + include_names, + WALK_DEPTH, + )?; Ok(packages.into_iter().map(|p| p.name).collect()) } @@ -351,13 +411,10 @@ mod tests { script: None, shallow_clone: None, }), - build: BuildRecipe { - kind: BuildKind::Cargo { - package_path: None, - cargoflags: String::new(), - }, - dependencies: Vec::new(), - }, + build: BuildRecipe::new(BuildKind::Cargo { + package_path: None, + cargoflags: String::new(), + }), package: PackageRecipe::default(), } ); @@ -392,12 +449,9 @@ mod tests { patches: Vec::new(), script: None, }), - build: BuildRecipe { - kind: BuildKind::Custom { - script: "make".to_string() - }, - dependencies: Vec::new(), - }, + build: BuildRecipe::new(BuildKind::Custom { + script: "make".to_string() + }), package: PackageRecipe::default(), } ); @@ -424,10 +478,7 @@ mod tests { recipe, Recipe { source: None, - build: BuildRecipe { - kind: BuildKind::None, - dependencies: Vec::new(), - }, + build: BuildRecipe::new(BuildKind::None), package: PackageRecipe { dependencies: vec![PackageName::new("gcc13").unwrap()], version: None, From 233d159760b4c7fde0e70d6e5accb45afb470483 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Fri, 7 Nov 2025 16:53:34 +0700 Subject: [PATCH 3061/3180] Print as new lines --- src/cook/cook_build.rs | 2 +- src/cook/pty.rs | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/cook/cook_build.rs b/src/cook/cook_build.rs index b790062f..24657a52 100644 --- a/src/cook/cook_build.rs +++ b/src/cook/cook_build.rs @@ -405,7 +405,7 @@ fn build_auto_deps( for dep in &static_deps { if !recipe.package.dependencies.contains(dep) { log_to_pty!( - &logger, + logger, "WARNING: build deps {} is not linked in auto_deps", dep.as_str() ); diff --git a/src/cook/pty.rs b/src/cook/pty.rs index ae1c2aec..c2aed74c 100644 --- a/src/cook/pty.rs +++ b/src/cook/pty.rs @@ -20,10 +20,9 @@ macro_rules! log_to_pty { ($logger:expr, $($arg:tt)+) => { if $logger.is_some() { use std::io::Write; - let _ = $logger.as_ref().unwrap().1.try_clone().unwrap().write( - format!($($arg)+) - .as_bytes(), - ); + let logfd = $logger.as_ref().unwrap().1.try_clone().unwrap(); + let _ = logfd.write(format!($($arg)+).as_bytes()); + let _ = logfd.write(b'\n'); } else { eprintln!($($arg)+); } From c3cb1f6a2f891c0af1e1d7f3a4ddeeff7749b518 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Fri, 7 Nov 2025 17:20:26 +0700 Subject: [PATCH 3062/3180] Filter static to only direct deps --- src/cook/cook_build.rs | 3 ++- src/cook/pty.rs | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/cook/cook_build.rs b/src/cook/cook_build.rs index 24657a52..28e6b490 100644 --- a/src/cook/cook_build.rs +++ b/src/cook/cook_build.rs @@ -377,7 +377,7 @@ fn build_auto_deps( recipe: &Recipe, target_dir: &Path, stage_dir: &PathBuf, - dep_pkgars: BTreeSet<(PackageName, PathBuf)>, + mut dep_pkgars: BTreeSet<(PackageName, PathBuf)>, logger: &PtyOut, ) -> Result, String> { let auto_deps_path = target_dir.join("auto_deps.toml"); @@ -393,6 +393,7 @@ fn build_auto_deps( wrapper.packages } else { let mut dynamic_deps = auto_deps_from_dynamic_linking(stage_dir, &dep_pkgars, logger); + dep_pkgars.retain(|x| recipe.build.dependencies.contains(&x.0)); let (package_deps, static_deps) = auto_deps_from_static_package_deps(&dep_pkgars, &dynamic_deps).unwrap_or_default(); dynamic_deps.extend(package_deps); diff --git a/src/cook/pty.rs b/src/cook/pty.rs index c2aed74c..aec8869b 100644 --- a/src/cook/pty.rs +++ b/src/cook/pty.rs @@ -20,9 +20,9 @@ macro_rules! log_to_pty { ($logger:expr, $($arg:tt)+) => { if $logger.is_some() { use std::io::Write; - let logfd = $logger.as_ref().unwrap().1.try_clone().unwrap(); + let mut logfd = $logger.as_ref().unwrap().1.try_clone().unwrap(); let _ = logfd.write(format!($($arg)+).as_bytes()); - let _ = logfd.write(b'\n'); + let _ = logfd.write(&[b'\n']); } else { eprintln!($($arg)+); } From cc9e04a9559d509f7f2de03bdbe2de733d6bc0fb Mon Sep 17 00:00:00 2001 From: Wildan M Date: Fri, 7 Nov 2025 18:09:35 +0700 Subject: [PATCH 3063/3180] Apply tidyup and remove warn --- recipes/demos/sdl2-gears/recipe.toml | 9 --------- recipes/tools/cosmic-files/recipe.toml | 1 - src/cook/cook_build.rs | 22 +++------------------- 3 files changed, 3 insertions(+), 29 deletions(-) diff --git a/recipes/demos/sdl2-gears/recipe.toml b/recipes/demos/sdl2-gears/recipe.toml index 7c582e98..bbe89f0e 100644 --- a/recipes/demos/sdl2-gears/recipe.toml +++ b/recipes/demos/sdl2-gears/recipe.toml @@ -4,16 +4,7 @@ dependencies = [ "sdl2-image", "sdl2-mixer", "sdl2-ttf", - "sdl2", - "liborbital", "llvm18", - "mesa", - "freetype2", - "libjpeg", - "libpng", - "libogg", - "libvorbis", - "zlib" ] script = """ DYNAMIC_INIT diff --git a/recipes/tools/cosmic-files/recipe.toml b/recipes/tools/cosmic-files/recipe.toml index 49e96c33..f62a4eac 100644 --- a/recipes/tools/cosmic-files/recipe.toml +++ b/recipes/tools/cosmic-files/recipe.toml @@ -6,7 +6,6 @@ branch = "master" template = "custom" dependencies = [ "gettext", - "libiconv", "libxkbcommon", ] script = """ diff --git a/src/cook/cook_build.rs b/src/cook/cook_build.rs index 28e6b490..27827a21 100644 --- a/src/cook/cook_build.rs +++ b/src/cook/cook_build.rs @@ -148,7 +148,7 @@ fn auto_deps_from_dynamic_linking( fn auto_deps_from_static_package_deps( build_dep_pkgars: &BTreeSet<(PackageName, PathBuf)>, dynamic_dep_pkgars: &BTreeSet, -) -> Result<(BTreeSet, Vec), PackageError> { +) -> Result, PackageError> { let static_dep_pkgars: Vec = build_dep_pkgars .iter() .map(|x| x.0.clone()) @@ -156,7 +156,7 @@ fn auto_deps_from_static_package_deps( .collect(); let pkgs = CookRecipe::get_package_deps_recursive(&static_dep_pkgars, false)?; - Ok((pkgs.into_iter().collect(), static_dep_pkgars)) + Ok(pkgs.into_iter().collect()) } pub fn build( @@ -394,26 +394,10 @@ fn build_auto_deps( } else { let mut dynamic_deps = auto_deps_from_dynamic_linking(stage_dir, &dep_pkgars, logger); dep_pkgars.retain(|x| recipe.build.dependencies.contains(&x.0)); - let (package_deps, static_deps) = + let package_deps = auto_deps_from_static_package_deps(&dep_pkgars, &dynamic_deps).unwrap_or_default(); dynamic_deps.extend(package_deps); - // if auto_deps working, all build deps should be linked as auto_deps, otherwise: - // 1. it's weakly linked, which should be mentioned as package deps - // 2. it's not our direct ELF dependencies, which should be removed from build deps - // 3. only needed for build purpose, which should be moved to dev build deps - if dynamic_deps.len() > 0 && static_deps.len() > 0 { - for dep in &static_deps { - if !recipe.package.dependencies.contains(dep) { - log_to_pty!( - logger, - "WARNING: build deps {} is not linked in auto_deps", - dep.as_str() - ); - } - } - } - let wrapper = AutoDeps { packages: dynamic_deps, }; From fb8c79e75aba1f9917643a0f9ebf8cc54c188f47 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Fri, 7 Nov 2025 17:40:04 +0000 Subject: [PATCH 3064/3180] Allow logging for non TUI and verbose tuning --- src/bin/repo.rs | 92 +++++++++++++++++++++++++++++------------- src/config.rs | 15 ++++--- src/cook/cook_build.rs | 41 ++++++++++--------- src/cook/fetch.rs | 7 +++- src/cook/package.rs | 7 +--- src/cook/script.rs | 4 +- 6 files changed, 102 insertions(+), 64 deletions(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 8fe2700e..5553f690 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -63,6 +63,7 @@ const REPO_HELP_STR: &str = r#" cook env and their defaults: CI= set to any value to disable TUI + COOKBOOK_LOGS= whether to capture build logs (default is !CI) COOKBOOK_OFFLINE=false prevent internet access if possible COOKBOOK_NONSTOP=false pkeep running even a recipe build failed COOKBOOK_VERBOSE=true print success/error on each recipe @@ -144,7 +145,7 @@ impl CliConfig { cookbook_dir: current_dir.join("recipes"), repo_dir: current_dir.join("repo"), // build dir here is hardcoded in repo_builder as well - logs_dir: if get_config().cook.tui_logs { + logs_dir: if get_config().cook.logs { Some(current_dir.join("build/logs")) } else { None @@ -212,17 +213,15 @@ fn main_inner() -> anyhow::Result<()> { for recipe in &recipe_names { match repo_inner(&config, &command, recipe) { Ok(_) => { - if verbose { - eprintln!( - "{}{}{} {} - successful{}{}", - style::Bold, - color::Fg(color::AnsiValue(46)), - command.to_string(), - recipe.name.as_str(), - color::Fg(color::Reset), - style::Reset, - ); - } + eprintln!( + "{}{}{} {} - successful{}{}", + style::Bold, + color::Fg(color::AnsiValue(46)), + command.to_string(), + recipe.name.as_str(), + color::Fg(color::Reset), + style::Reset, + ); } Err(e) => { if config.cook.nonstop && verbose { @@ -264,12 +263,48 @@ fn repo_inner( recipe: &CookRecipe, ) -> Result<(), anyhow::Error> { Ok(match *command { - CliCommand::Fetch => { - handle_fetch(recipe, config, &None)?; - } - CliCommand::Cook => { - let source_dir = handle_fetch(recipe, config, &None)?; - handle_cook(recipe, config, source_dir, recipe.is_deps, &None)? + CliCommand::Fetch | CliCommand::Cook => { + let repo_inner_fn = move |logger: &PtyOut| -> Result<(), anyhow::Error> { + let source_dir = handle_fetch(recipe, config, logger)?; + if *command == CliCommand::Cook { + handle_cook(recipe, config, source_dir, recipe.is_deps, logger)?; + } + Ok(()) + }; + let Some(log_path) = &config.logs_dir else { + return repo_inner_fn(&None); + }; + + let (status_tx, status_rx) = mpsc::channel::(); + let (mut stdout_writer, mut stderr_writer) = setup_logger(&status_tx, &recipe.name); + let mut app = TuiApp::new(vec![recipe.clone()]); + app.dump_logs_anyway = true; + let th = thread::spawn(move || { + while let Ok(update) = status_rx.recv() { + let mut should_break = false; + if let StatusUpdate::FlushLog(_p, _q) = &update { + should_break = true; + } + app.update_status(update); + if should_break { + break; + } + } + }); + let mut logger = Some((&mut stdout_writer, &mut stderr_writer)); + let result = repo_inner_fn(&logger); + if let Err(err_ctx) = &result { + log_to_pty!(&logger, "\n{:?}", err_ctx) + } + // successful fetch is not that useful to log + if *command == CliCommand::Cook || result.is_err() { + flush_pty(&mut logger); + let log_path = log_path.join(format!("{}.log", recipe.name.as_str())); + status_tx + .send(StatusUpdate::FlushLog(recipe.name.clone(), log_path)) + .unwrap_or_default(); + } + let _ = th.join(); } CliCommand::Unfetch => handle_clean(recipe, config, true, true)?, CliCommand::Clean => handle_clean(recipe, config, false, true)?, @@ -598,7 +633,7 @@ enum RecipeStatus { Failed(String), } -#[derive(Debug, Clone)] +#[derive(Debug, Clone, PartialEq)] enum StatusUpdate { StartFetch(PackageName), Fetched(CookRecipe), @@ -650,6 +685,7 @@ struct TuiApp { cook_panel_rect: Option, log_panel_rect: Option, prompt: Option, + dump_logs_anyway: bool, dump_logs_on_exit: Option<(PackageName, String)>, } @@ -681,6 +717,7 @@ impl TuiApp { cook_panel_rect: None, log_panel_rect: None, prompt: None, + dump_logs_anyway: false, dump_logs_on_exit: None, } } @@ -759,6 +796,9 @@ impl TuiApp { StatusUpdate::PushLog(name, chunk) => { let buffer = self.log_byte_buffer.entry(name.clone()).or_default(); buffer.extend_from_slice(&chunk); + if self.dump_logs_anyway { + let _ = std::io::stdout().write_all(&chunk); + } let log_list = self.logs.entry(name.clone()).or_default(); while let Some(newline_pos) = buffer.iter().position(|&b| b == b'\n') { let line_bytes = buffer.drain(..=newline_pos).collect::>(); @@ -842,12 +882,12 @@ fn run_tui_cook( 'done: for (recipe, source_dir) in work_rx { let name = recipe.name.clone(); let is_deps = recipe.is_deps; - cooker_status_tx - .send(StatusUpdate::StartCook(name.clone())) - .unwrap(); let (mut stdout_writer, mut stderr_writer) = setup_logger(&cooker_status_tx, &name); let mut logger = Some((&mut stdout_writer, &mut stderr_writer)); 'again: loop { + cooker_status_tx + .send(StatusUpdate::StartCook(name.clone())) + .unwrap(); let handler = handle_cook( &recipe, &cooker_config, @@ -937,14 +977,12 @@ fn run_tui_cook( let fetcher_handle = thread::spawn(move || { 'done: for recipe in fetcher_recipes { let name = recipe.name.clone(); - fetcher_status_tx - .send(StatusUpdate::StartFetch(name.clone())) - .unwrap(); - let (mut stdout_writer, mut stderr_writer) = setup_logger(&fetcher_status_tx, &name); let mut logger = Some((&mut stdout_writer, &mut stderr_writer)); - 'again: loop { + fetcher_status_tx + .send(StatusUpdate::StartFetch(name.clone())) + .unwrap(); let handler = handle_fetch(&recipe, &fetcher_config, &logger); if let Some(log_path) = fetcher_config.logs_dir.as_ref() // successful fetch log usually not that helpful diff --git a/src/config.rs b/src/config.rs index f014092e..c8836c6d 100644 --- a/src/config.rs +++ b/src/config.rs @@ -12,12 +12,11 @@ pub struct CookConfigOpt { /// whether to use TUI to allow parallel build /// default value is yes if "CI" env unset and STDIN is open. pub tui: Option, - /// whether to write logs to build/logs dir - /// only usable when tui is used - pub tui_logs: Option, + /// whether to write logs to build/logs dir, default true on TUI + pub logs: Option, /// whether to ignore build errors pub nonstop: Option, - /// whether to print success recipes info and warnings + /// whether to print verbose logs to certain commands /// build failure still be printed anyway pub verbose: Option, } @@ -27,7 +26,7 @@ pub struct CookConfig { pub offline: bool, pub jobs: usize, pub tui: bool, - pub tui_logs: bool, + pub logs: bool, pub nonstop: bool, pub verbose: bool, } @@ -38,7 +37,7 @@ impl From for CookConfig { offline: value.offline.unwrap(), jobs: value.jobs.unwrap(), tui: value.tui.unwrap(), - tui_logs: value.tui_logs.unwrap(), + logs: value.logs.unwrap(), nonstop: value.nonstop.unwrap(), verbose: value.verbose.unwrap(), } @@ -80,8 +79,8 @@ pub fn init_config() { .unwrap_or(1), )); } - if config.cook_opt.tui_logs.is_none() { - config.cook_opt.tui_logs = config.cook_opt.tui; + if config.cook_opt.logs.is_none() { + config.cook_opt.logs = Some(extract_env("COOKBOOK_LOGS", config.cook_opt.tui.unwrap())); } if config.cook_opt.offline.is_none() { config.cook_opt.offline = Some(extract_env("COOKBOOK_OFFLINE", false)); diff --git a/src/cook/cook_build.rs b/src/cook/cook_build.rs index 27827a21..603e49f9 100644 --- a/src/cook/cook_build.rs +++ b/src/cook/cook_build.rs @@ -29,6 +29,7 @@ fn auto_deps_from_dynamic_linking( ) -> BTreeSet { let mut paths = BTreeSet::new(); let mut visited = BTreeSet::new(); + let verbose = crate::config::get_config().cook.verbose; // Base directories may need to be updated for packages that place binaries in odd locations. let mut walk = VecDeque::from([ stage_dir.join("libexec"), @@ -95,7 +96,9 @@ fn auto_deps_from_dynamic_linking( continue; }; if let Ok(relative_path) = path.strip_prefix(stage_dir) { - log_to_pty!(logger, "DEBUG: {} needs {}", relative_path.display(), name); + if verbose { + log_to_pty!(logger, "DEBUG: {} needs {}", relative_path.display(), name); + } } needed.insert(name.to_string()); } @@ -129,7 +132,9 @@ fn auto_deps_from_dynamic_linking( continue; }; if needed.contains(child_name) { - log_to_pty!(logger, "DEBUG: {} provides {}", dep, child_name); + if verbose { + log_to_pty!(logger, "DEBUG: {} provides {}", dep, child_name); + } deps.insert(dep.clone()); missing.remove(child_name); } @@ -138,8 +143,10 @@ fn auto_deps_from_dynamic_linking( } } - for name in missing { - log_to_pty!(logger, "WARN: {} missing", name); + if verbose { + for name in missing { + log_to_pty!(logger, "INFO: {} missing", name); + } } deps @@ -171,6 +178,8 @@ pub fn build( ) -> Result<(PathBuf, BTreeSet), String> { let sysroot_dir = target_dir.join("sysroot"); let stage_dir = target_dir.join("stage"); + let cli_verbose = crate::config::get_config().cook.verbose; + let cli_jobs = crate::config::get_config().cook.jobs; if recipe.build.kind == BuildKind::None { // metapackages don't need to do anything here return Ok((stage_dir, BTreeSet::new())); @@ -207,12 +216,7 @@ pub fn build( if sysroot_dir.is_dir() { let sysroot_modified = modified_dir(&sysroot_dir)?; if sysroot_modified < source_modified || sysroot_modified < deps_modified { - log_to_pty!( - logger, - "DEBUG: '{}' newer than '{}'", - source_dir.display(), - sysroot_dir.display() - ); + log_to_pty!(logger, "DEBUG: updating '{}'", sysroot_dir.display()); remove_all(&sysroot_dir)?; } } @@ -257,12 +261,7 @@ pub fn build( if stage_dir.is_dir() { let stage_modified = modified_dir(&stage_dir)?; if stage_modified < source_modified || stage_modified < deps_modified { - log_to_pty!( - logger, - "DEBUG: '{}' newer than '{}'", - source_dir.display(), - stage_dir.display() - ); + log_to_pty!(logger, "DEBUG: updating '{}'", stage_dir.display()); remove_all(&stage_dir)?; } } @@ -328,10 +327,10 @@ pub fn build( let cookbook_stage = stage_dir_tmp.canonicalize().unwrap(); let cookbook_source = source_dir.canonicalize().unwrap(); let cookbook_sysroot = sysroot_dir.canonicalize().unwrap(); - + let bash_args = if cli_verbose { "-ex" } else { "-e" }; let mut command = if is_redox() { let mut command = Command::new("bash"); - command.arg("-ex"); + command.arg(bash_args); command.env("COOKBOOK_REDOXER", "cargo"); command } else { @@ -339,7 +338,7 @@ pub fn build( .canonicalize() .unwrap_or(PathBuf::from("/bin/false")); let mut command = Command::new(&cookbook_redoxer); - command.arg("env").arg("bash").arg("-ex"); + command.arg("env").arg("bash").arg(bash_args); command.env("COOKBOOK_REDOXER", &cookbook_redoxer); command }; @@ -351,6 +350,10 @@ pub fn build( command.env("COOKBOOK_STAGE", &cookbook_stage); command.env("COOKBOOK_SOURCE", &cookbook_source); command.env("COOKBOOK_SYSROOT", &cookbook_sysroot); + command.env("COOKBOOK_MAKE_JOBS", cli_jobs.to_string()); + if cli_verbose { + command.env("COOKBOOK_VERBOSE", "1"); + } if offline_mode { command.env("COOKBOOK_OFFLINE", "1"); } diff --git a/src/cook/fetch.rs b/src/cook/fetch.rs index b15a3554..021ea71c 100644 --- a/src/cook/fetch.rs +++ b/src/cook/fetch.rs @@ -364,11 +364,14 @@ pub(crate) fn fetch_extract_tar( logger: &PtyOut, ) -> Result<(), String> { let mut command = Command::new("tar"); + let verbose = crate::config::get_config().cook.verbose; if is_redox() { - command.arg("xvf"); + command.arg(if verbose { "xvf" } else { "xf" }); } else { command.arg("--extract"); - command.arg("--verbose"); + if verbose { + command.arg("--verbose"); + } command.arg("--file"); } command.arg(&source_tar); diff --git a/src/cook/package.rs b/src/cook/package.rs index 058884f5..f65ac2e5 100644 --- a/src/cook/package.rs +++ b/src/cook/package.rs @@ -44,12 +44,7 @@ pub fn package( if package_file.is_file() { let stage_modified = modified_dir(stage_dir)?; if modified(&package_file)? < stage_modified { - log_to_pty!( - logger, - "DEBUG: '{}' newer than '{}'", - stage_dir.display(), - package_file.display() - ); + log_to_pty!(logger, "DEBUG: updating '{}'", package_file.display()); remove_all(&package_file)?; remove_all(&package_meta)?; } diff --git a/src/cook/script.rs b/src/cook/script.rs index a9e97d04..8f973036 100644 --- a/src/cook/script.rs +++ b/src/cook/script.rs @@ -11,11 +11,11 @@ function DYNAMIC_INIT { if [ "${TARGET}" != "x86_64-unknown-redox" ] then - echo "WARN: ${TARGET} does not support dynamic linking." >&2 + [ -z "${COOKBOOK_VERBOSE}" ] || echo "WARN: ${TARGET} does not support dynamic linking." >&2 return fi - echo "DEBUG: Program is being compiled dynamically." + [ -z "${COOKBOOK_VERBOSE}" ] || echo "DEBUG: Program is being compiled dynamically." COOKBOOK_CONFIGURE_FLAGS=( --host="${GNU_TARGET}" From 5473c78259b124cc9e3d144307226e809d3855dc Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 7 Nov 2025 13:28:33 -0700 Subject: [PATCH 3065/3180] libwayland: improve redox patch --- recipes/wip/wayland/libwayland/redox.patch | 69 +++++++++++----------- 1 file changed, 36 insertions(+), 33 deletions(-) diff --git a/recipes/wip/wayland/libwayland/redox.patch b/recipes/wip/wayland/libwayland/redox.patch index 4bcae30a..71ad92e2 100644 --- a/recipes/wip/wayland/libwayland/redox.patch +++ b/recipes/wip/wayland/libwayland/redox.patch @@ -1,6 +1,6 @@ -diff -ruwN source/meson.build source-new/meson.build ---- source/meson.build 2025-07-06 19:11:26.000000000 +0700 -+++ source-new/meson.build 2025-10-01 06:32:51.610361685 +0700 +diff -ruwN source-old/meson.build source/meson.build +--- source-old/meson.build 2025-07-06 06:11:26.000000000 -0600 ++++ source/meson.build 2025-10-30 15:52:33.121727009 -0600 @@ -80,8 +80,6 @@ ffi_dep = dependency('libffi') @@ -10,9 +10,9 @@ diff -ruwN source/meson.build source-new/meson.build { 'header': 'time.h', 'symbol': 'CLOCK_MONOTONIC' }, ] -diff -ruwN source/src/connection.c source-new/src/connection.c ---- source/src/connection.c 2025-07-06 19:11:26.000000000 +0700 -+++ source-new/src/connection.c 2025-10-01 07:10:17.676073568 +0700 +diff -ruwN source-old/src/connection.c source/src/connection.c +--- source-old/src/connection.c 2025-07-06 06:11:26.000000000 -0600 ++++ source/src/connection.c 2025-11-07 12:47:54.026013068 -0700 @@ -490,7 +490,7 @@ do { @@ -22,22 +22,20 @@ diff -ruwN source/src/connection.c source-new/src/connection.c } while (len == -1 && errno == EINTR); if (len == -1) -@@ -1506,9 +1506,9 @@ +@@ -1506,8 +1506,10 @@ char *buffer; size_t buffer_length; -- f = open_memstream(&buffer, &buffer_length); -- if (f == NULL) -- return; -+ // f = open_memstream(&buffer, &buffer_length); -+ // if (f == NULL) -+ // return; ++#if !defined(__redox__) + f = open_memstream(&buffer, &buffer_length); + if (f == NULL) ++#endif + return; clock_gettime(CLOCK_REALTIME, &tp); - time = (tp.tv_sec * 1000000L) + (tp.tv_nsec / 1000); -diff -ruwN source/src/event-loop.c source-new/src/event-loop.c ---- source/src/event-loop.c 2025-07-06 19:11:26.000000000 +0700 -+++ source-new/src/event-loop.c 2025-10-01 07:07:26.992243929 +0700 +diff -ruwN source-old/src/event-loop.c source/src/event-loop.c +--- source-old/src/event-loop.c 2025-07-06 06:11:26.000000000 -0600 ++++ source/src/event-loop.c 2025-10-30 15:52:33.122087045 -0600 @@ -35,8 +35,8 @@ #include #include @@ -126,9 +124,9 @@ diff -ruwN source/src/event-loop.c source-new/src/event-loop.c sigprocmask(SIG_BLOCK, &mask, NULL); source->func = func; -diff -ruwN source/src/meson.build source-new/src/meson.build ---- source/src/meson.build 2025-07-06 19:11:26.000000000 +0700 -+++ source-new/src/meson.build 2025-10-01 07:03:52.591689534 +0700 +diff -ruwN source-old/src/meson.build source/src/meson.build +--- source-old/src/meson.build 2025-07-06 06:11:26.000000000 -0600 ++++ source/src/meson.build 2025-10-30 15:52:33.122245753 -0600 @@ -81,8 +81,7 @@ endif @@ -139,9 +137,9 @@ diff -ruwN source/src/meson.build source-new/src/meson.build else wayland_scanner_for_build = wayland_scanner endif -diff -ruwN source/src/wayland-client.c source-new/src/wayland-client.c ---- source/src/wayland-client.c 2025-07-06 19:11:26.000000000 +0700 -+++ source-new/src/wayland-client.c 2025-10-01 07:10:48.899322239 +0700 +diff -ruwN source-old/src/wayland-client.c source/src/wayland-client.c +--- source-old/src/wayland-client.c 2025-07-06 06:11:26.000000000 -0600 ++++ source/src/wayland-client.c 2025-10-30 15:52:33.122416784 -0600 @@ -1997,14 +1997,6 @@ pfd[0].fd = display->fd; @@ -157,19 +155,24 @@ diff -ruwN source/src/wayland-client.c source-new/src/wayland-client.c return ret; } -diff -ruwN source/src/wayland-os.c source-new/src/wayland-os.c ---- source/src/wayland-os.c 2025-07-06 19:11:26.000000000 +0700 -+++ source-new/src/wayland-os.c 2025-10-01 07:09:01.188805546 +0700 -@@ -134,7 +134,7 @@ +diff -ruwN source-old/src/wayland-os.c source/src/wayland-os.c +--- source-old/src/wayland-os.c 2025-07-06 06:11:26.000000000 -0600 ++++ source/src/wayland-os.c 2025-11-07 12:49:06.505330114 -0700 +@@ -134,11 +134,13 @@ { int newfd; -- newfd = wl_fcntl(fd, F_DUPFD_CLOEXEC, minfd); -+ newfd = wl_fcntl(fd, FD_CLOEXEC, minfd); ++#if defined(F_DUPFD_CLOEXEC) + newfd = wl_fcntl(fd, F_DUPFD_CLOEXEC, minfd); if (newfd >= 0) return newfd; if (errno != EINVAL) -@@ -189,7 +189,7 @@ + return -1; ++#endif + + newfd = wl_fcntl(fd, F_DUPFD, minfd); + return set_cloexec_or_close(newfd); +@@ -189,7 +191,7 @@ #else ssize_t len; @@ -178,9 +181,9 @@ diff -ruwN source/src/wayland-os.c source-new/src/wayland-os.c if (len >= 0) return len; if (errno != EINVAL) -diff -ruwN source/src/wayland-server.c source-new/src/wayland-server.c ---- source/src/wayland-server.c 2025-07-06 19:11:26.000000000 +0700 -+++ source-new/src/wayland-server.c 2025-10-01 07:09:51.131179157 +0700 +diff -ruwN source-old/src/wayland-server.c source/src/wayland-server.c +--- source-old/src/wayland-server.c 2025-07-06 06:11:26.000000000 -0600 ++++ source/src/wayland-server.c 2025-10-30 15:52:33.122838226 -0600 @@ -39,7 +39,7 @@ #include #include From eb94689c230df68d8e3c84cfbb716f273980ef62 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 7 Nov 2025 13:41:51 -0700 Subject: [PATCH 3066/3180] Add winit-wayland and softbuffer-wayland forked examples --- recipes/wip/wayland/softbuffer-wayland/recipe.toml | 14 ++++++++++++++ recipes/wip/wayland/winit-wayland/recipe.toml | 14 ++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 recipes/wip/wayland/softbuffer-wayland/recipe.toml create mode 100644 recipes/wip/wayland/winit-wayland/recipe.toml diff --git a/recipes/wip/wayland/softbuffer-wayland/recipe.toml b/recipes/wip/wayland/softbuffer-wayland/recipe.toml new file mode 100644 index 00000000..5205096e --- /dev/null +++ b/recipes/wip/wayland/softbuffer-wayland/recipe.toml @@ -0,0 +1,14 @@ +[source] +git = "https://github.com/jackpot51/softbuffer.git" +branch = "redox-wayland" + +[build] +dependencies = [ + "libwayland" +] +template = "custom" +script = """ +DYNAMIC_INIT +export RUSTFLAGS="${RUSTFLAGS} -lffi" +cookbook_cargo_examples animation rectangle winit +""" diff --git a/recipes/wip/wayland/winit-wayland/recipe.toml b/recipes/wip/wayland/winit-wayland/recipe.toml new file mode 100644 index 00000000..b69720d9 --- /dev/null +++ b/recipes/wip/wayland/winit-wayland/recipe.toml @@ -0,0 +1,14 @@ +[source] +git = "https://github.com/jackpot51/winit.git" +branch = "redox-wayland" + +[build] +dependencies = [ + "libwayland" +] +template = "custom" +script = """ +DYNAMIC_INIT +export RUSTFLAGS="${RUSTFLAGS} -lffi" +cookbook_cargo_examples application child_window control_flow dnd ime pump_events window +""" From 18aeec9adfba4ecddd7d6e03549b96dcbfc020c3 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 7 Nov 2025 13:42:11 -0700 Subject: [PATCH 3067/3180] Add more examples to wayland-rs --- recipes/wip/wayland/wayland-rs/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/wayland/wayland-rs/recipe.toml b/recipes/wip/wayland/wayland-rs/recipe.toml index f735f4ae..235c9d99 100644 --- a/recipes/wip/wayland/wayland-rs/recipe.toml +++ b/recipes/wip/wayland/wayland-rs/recipe.toml @@ -12,5 +12,5 @@ dependencies = [ script = """ DYNAMIC_INIT export RUSTFLAGS="${RUSTFLAGS} -lffi" -cookbook_cargo_examples simple_window +cookbook_cargo_examples list_globals_no_dispatch list_globals simple_window """ From 7c365db8a15853e8e4a77ee2edcd4ec8c1cd9d6f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 7 Nov 2025 13:56:47 -0700 Subject: [PATCH 3068/3180] winit-wayland: remove examples not in 0.30 branch --- recipes/wip/wayland/winit-wayland/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/wayland/winit-wayland/recipe.toml b/recipes/wip/wayland/winit-wayland/recipe.toml index b69720d9..e3f73c66 100644 --- a/recipes/wip/wayland/winit-wayland/recipe.toml +++ b/recipes/wip/wayland/winit-wayland/recipe.toml @@ -10,5 +10,5 @@ template = "custom" script = """ DYNAMIC_INIT export RUSTFLAGS="${RUSTFLAGS} -lffi" -cookbook_cargo_examples application child_window control_flow dnd ime pump_events window +cookbook_cargo_examples child_window control_flow pump_events window """ From 6d64c05a1011b80276bd03e1fb1876ec852c1881 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 7 Nov 2025 14:26:17 -0700 Subject: [PATCH 3069/3180] libxcb: enable DRI3 --- recipes/wip/x11/libxcb/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/x11/libxcb/recipe.toml b/recipes/wip/x11/libxcb/recipe.toml index f3d386a5..4ea52ba7 100644 --- a/recipes/wip/x11/libxcb/recipe.toml +++ b/recipes/wip/x11/libxcb/recipe.toml @@ -16,5 +16,5 @@ dependencies = [ template = "custom" script = """ DYNAMIC_INIT -cookbook_configure ac_cv_search_sendmsg=no +cookbook_configure """ From bfc80cee1bbda831171640dc5fd722d425560c64 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 7 Nov 2025 14:29:24 -0700 Subject: [PATCH 3070/3180] mesa-x11: add DRI3 dependencies --- recipes/wip/x11/mesa-x11/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/wip/x11/mesa-x11/recipe.toml b/recipes/wip/x11/mesa-x11/recipe.toml index 2eb09964..c18db7d9 100644 --- a/recipes/wip/x11/mesa-x11/recipe.toml +++ b/recipes/wip/x11/mesa-x11/recipe.toml @@ -5,12 +5,15 @@ same_as = "../../../libs/mesa" template = "custom" dependencies = [ "expat", + "libdrm", "libpthread-stubs", "libx11", "libxau", "libxcb", "libxext", "libxfixes", + "libxrandr", + "libxshmfence", "libxxf86vm", "llvm18", "x11proto", From 8d8cf861179d6607a9dc734225297d7ac1ff144c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 7 Nov 2025 14:41:25 -0700 Subject: [PATCH 3071/3180] xserver-xorg: disable dri1 and modesetting --- recipes/wip/x11/xserver-xorg/recipe.toml | 1 + recipes/wip/x11/xserver-xorg/redox.patch | 84 +++++++++++++++--------- 2 files changed, 55 insertions(+), 30 deletions(-) diff --git a/recipes/wip/x11/xserver-xorg/recipe.toml b/recipes/wip/x11/xserver-xorg/recipe.toml index 3f1fa0b5..4e918772 100644 --- a/recipes/wip/x11/xserver-xorg/recipe.toml +++ b/recipes/wip/x11/xserver-xorg/recipe.toml @@ -32,6 +32,7 @@ template = "custom" script = """ DYNAMIC_INIT cookbook_meson \ + -Ddri1=false \ -Dglamor=false \ -Dint10=false \ -Dpciaccess=false \ diff --git a/recipes/wip/x11/xserver-xorg/redox.patch b/recipes/wip/x11/xserver-xorg/redox.patch index 47edc62c..32309e20 100644 --- a/recipes/wip/x11/xserver-xorg/redox.patch +++ b/recipes/wip/x11/xserver-xorg/redox.patch @@ -1,6 +1,6 @@ -diff -ruwN source/hw/xfree86/common/xf86Xinput.c source-new/hw/xfree86/common/xf86Xinput.c ---- source/hw/xfree86/common/xf86Xinput.c 2025-02-26 01:56:05.000000000 +0700 -+++ source-new/hw/xfree86/common/xf86Xinput.c 2025-10-28 06:15:47.428141477 +0700 +diff -ruwN source-old/hw/xfree86/common/xf86Xinput.c source/hw/xfree86/common/xf86Xinput.c +--- source-old/hw/xfree86/common/xf86Xinput.c 2025-02-25 11:56:05.000000000 -0700 ++++ source/hw/xfree86/common/xf86Xinput.c 2025-11-07 14:37:53.041095608 -0700 @@ -860,8 +860,10 @@ if (stat(path, &st) == -1) return; @@ -12,9 +12,24 @@ diff -ruwN source/hw/xfree86/common/xf86Xinput.c source-new/hw/xfree86/common/xf } static inline InputDriverPtr -diff -ruwN source/hw/xfree86/loader/meson.build source-new/hw/xfree86/loader/meson.build ---- source/hw/xfree86/loader/meson.build 2025-02-26 01:56:05.000000000 +0700 -+++ source-new/hw/xfree86/loader/meson.build 2025-10-28 06:15:47.428567423 +0700 +diff -ruwN source-old/hw/xfree86/drivers/modesetting/meson.build source/hw/xfree86/drivers/modesetting/meson.build +--- source-old/hw/xfree86/drivers/modesetting/meson.build 2025-02-25 11:56:05.000000000 -0700 ++++ source/hw/xfree86/drivers/modesetting/meson.build 2025-11-07 14:37:53.041947517 -0700 +@@ -42,7 +42,7 @@ + configuration: manpage_config, + )) + +-test('modesetting symbol test', +- xorg_symbol_test, +- args: symbol_test_args, +-) ++# test('modesetting symbol test', ++# xorg_symbol_test, ++# args: symbol_test_args, ++# ) +diff -ruwN source-old/hw/xfree86/loader/meson.build source/hw/xfree86/loader/meson.build +--- source-old/hw/xfree86/loader/meson.build 2025-02-25 11:56:05.000000000 -0700 ++++ source/hw/xfree86/loader/meson.build 2025-11-07 14:37:53.042100945 -0700 @@ -10,7 +10,7 @@ c_args: xorg_c_args, ) @@ -27,9 +42,9 @@ diff -ruwN source/hw/xfree86/loader/meson.build source-new/hw/xfree86/loader/mes +# 'symbol-test.c', +# dependencies: dl_dep, +# ) -diff -ruwN source/hw/xfree86/meson.build source-new/hw/xfree86/meson.build ---- source/hw/xfree86/meson.build 2025-02-26 01:56:05.000000000 +0700 -+++ source-new/hw/xfree86/meson.build 2025-10-28 06:15:47.428791657 +0700 +diff -ruwN source-old/hw/xfree86/meson.build source/hw/xfree86/meson.build +--- source-old/hw/xfree86/meson.build 2025-02-25 11:56:05.000000000 -0700 ++++ source/hw/xfree86/meson.build 2025-11-07 14:37:53.042256958 -0700 @@ -171,13 +171,13 @@ ) endif @@ -51,9 +66,9 @@ diff -ruwN source/hw/xfree86/meson.build source-new/hw/xfree86/meson.build # For symbol presence testing only xorgserver_lib = shared_library( -diff -ruwN source/hw/xfree86/os-support/shared/sigio.c source-new/hw/xfree86/os-support/shared/sigio.c ---- source/hw/xfree86/os-support/shared/sigio.c 2025-02-26 01:56:05.000000000 +0700 -+++ source-new/hw/xfree86/os-support/shared/sigio.c 2025-10-28 06:15:47.429003549 +0700 +diff -ruwN source-old/hw/xfree86/os-support/shared/sigio.c source/hw/xfree86/os-support/shared/sigio.c +--- source-old/hw/xfree86/os-support/shared/sigio.c 2025-02-25 11:56:05.000000000 -0700 ++++ source/hw/xfree86/os-support/shared/sigio.c 2025-11-07 14:37:53.042429782 -0700 @@ -196,11 +196,12 @@ fd, strerror(errno)); } @@ -68,9 +83,9 @@ diff -ruwN source/hw/xfree86/os-support/shared/sigio.c source-new/hw/xfree86/os- installed = TRUE; } } -diff -ruwN source/hw/xfree86/os-support/xf86_OSlib.h source-new/hw/xfree86/os-support/xf86_OSlib.h ---- source/hw/xfree86/os-support/xf86_OSlib.h 2025-02-26 01:56:05.000000000 +0700 -+++ source-new/hw/xfree86/os-support/xf86_OSlib.h 2025-10-28 06:15:47.429244885 +0700 +diff -ruwN source-old/hw/xfree86/os-support/xf86_OSlib.h source/hw/xfree86/os-support/xf86_OSlib.h +--- source-old/hw/xfree86/os-support/xf86_OSlib.h 2025-02-25 11:56:05.000000000 -0700 ++++ source/hw/xfree86/os-support/xf86_OSlib.h 2025-11-07 14:37:53.042605933 -0700 @@ -176,7 +176,7 @@ /**************************************************************************/ /* Linux or Glibc-based system */ @@ -80,9 +95,9 @@ diff -ruwN source/hw/xfree86/os-support/xf86_OSlib.h source-new/hw/xfree86/os-su #include #include #include -diff -ruwN source/include/dix.h source-new/include/dix.h ---- source/include/dix.h 2025-02-26 01:56:05.000000000 +0700 -+++ source-new/include/dix.h 2025-10-29 14:34:52.026472055 +0700 +diff -ruwN source-old/include/dix.h source/include/dix.h +--- source-old/include/dix.h 2025-02-25 11:56:05.000000000 -0700 ++++ source/include/dix.h 2025-11-07 14:37:53.042862204 -0700 @@ -55,6 +55,7 @@ #include "geext.h" #include "events.h" @@ -122,9 +137,9 @@ diff -ruwN source/include/dix.h source-new/include/dix.h } while (0) #define REQUEST_AT_LEAST_EXTRA_SIZE(req, extra) \ -diff -ruwN source/include/meson.build source-new/include/meson.build ---- source/include/meson.build 2025-02-26 01:56:05.000000000 +0700 -+++ source-new/include/meson.build 2025-10-28 06:15:47.429576623 +0700 +diff -ruwN source-old/include/meson.build source/include/meson.build +--- source-old/include/meson.build 2025-02-25 11:56:05.000000000 -0700 ++++ source/include/meson.build 2025-11-07 14:37:53.043095171 -0700 @@ -162,7 +162,7 @@ conf_data.set('HAVE_PORT_CREATE', cc.has_function('port_create') ? '1' : false) conf_data.set('HAVE_REALLOCARRAY', cc.has_function('reallocarray', dependencies: libbsd_dep) ? '1' : false) @@ -163,9 +178,18 @@ diff -ruwN source/include/meson.build source-new/include/meson.build endif conf_data.set('HAS_SHM', build_mitshm ? '1' : false) conf_data.set('MITSHM', build_mitshm ? '1' : false) -diff -ruwN source/meson.build source-new/meson.build ---- source/meson.build 2025-02-26 01:56:05.000000000 +0700 -+++ source-new/meson.build 2025-10-28 06:15:47.429860210 +0700 +diff -ruwN source-old/meson.build source/meson.build +--- source-old/meson.build 2025-11-07 14:39:22.420574991 -0700 ++++ source/meson.build 2025-11-07 14:37:53.043279226 -0700 +@@ -439,7 +439,7 @@ + error('DRI requested, but LIBDRM not found') + endif + +-build_modesetting = libdrm_dep.found() and dri2proto_dep.found() ++build_modesetting = false #TODO: libdrm_dep.found() and dri2proto_dep.found() + + build_vgahw = false + if get_option('vgahw') == 'auto' @@ -753,7 +753,7 @@ subdir('hw') @@ -175,9 +199,9 @@ diff -ruwN source/meson.build source-new/meson.build endif install_man(configure_file( -diff -ruwN source/os/access.c source-new/os/access.c ---- source/os/access.c 2025-02-26 01:56:05.000000000 +0700 -+++ source-new/os/access.c 2025-10-28 06:15:47.430186258 +0700 +diff -ruwN source-old/os/access.c source/os/access.c +--- source-old/os/access.c 2025-02-25 11:56:05.000000000 -0700 ++++ source/os/access.c 2025-11-07 14:37:53.043632189 -0700 @@ -120,7 +120,7 @@ #include #endif @@ -187,9 +211,9 @@ diff -ruwN source/os/access.c source-new/os/access.c #include #endif #if defined(SYSV) && defined(__i386__) -diff -ruwN source/Xext/bigreq.c source-new/Xext/bigreq.c ---- source/Xext/bigreq.c 2025-02-26 01:56:05.000000000 +0700 -+++ source-new/Xext/bigreq.c 2025-10-29 14:35:38.059611562 +0700 +diff -ruwN source-old/Xext/bigreq.c source/Xext/bigreq.c +--- source-old/Xext/bigreq.c 2025-02-25 11:56:05.000000000 -0700 ++++ source/Xext/bigreq.c 2025-11-07 14:37:53.043862040 -0700 @@ -51,7 +51,8 @@ } if (stuff->brReqType != X_BigReqEnable) From 83c16b08fa75fca09a3a909d77190f12b30ee5be Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 7 Nov 2025 15:23:47 -0700 Subject: [PATCH 3072/3180] glib: enable dbus auth --- recipes/libs/glib/redox.patch | 81 +++++++++++++---------------------- 1 file changed, 30 insertions(+), 51 deletions(-) diff --git a/recipes/libs/glib/redox.patch b/recipes/libs/glib/redox.patch index 18024068..640d67ab 100644 --- a/recipes/libs/glib/redox.patch +++ b/recipes/libs/glib/redox.patch @@ -1,6 +1,18 @@ -diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/glocalfile.c source/gio/glocalfile.c ---- glib-2.82.5/gio/glocalfile.c 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/glocalfile.c 2025-09-08 15:00:09.240010601 -0600 +diff -ruwN source-old/gio/gcredentialsprivate.h source/gio/gcredentialsprivate.h +--- source-old/gio/gcredentialsprivate.h 2025-02-20 06:08:16.000000000 -0700 ++++ source/gio/gcredentialsprivate.h 2025-11-07 15:23:11.471806927 -0700 +@@ -104,7 +104,7 @@ + */ + #undef G_CREDENTIALS_HAS_PID + +-#ifdef __linux__ ++#if defined(__linux__) + #define G_CREDENTIALS_SUPPORTED 1 + #define G_CREDENTIALS_USE_LINUX_UCRED 1 + #define G_CREDENTIALS_NATIVE_TYPE G_CREDENTIALS_TYPE_LINUX_UCRED +diff -ruwN source-old/gio/glocalfile.c source/gio/glocalfile.c +--- source-old/gio/glocalfile.c 2025-02-20 06:08:16.000000000 -0700 ++++ source/gio/glocalfile.c 2025-11-07 15:23:11.472066975 -0700 @@ -77,6 +77,10 @@ #include "glib-private.h" @@ -12,9 +24,9 @@ diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/glocalfile.c source/gio/gloca #ifdef G_OS_WIN32 #include #include -diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/gnetworking.h.in source/gio/gnetworking.h.in ---- glib-2.82.5/gio/gnetworking.h.in 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/gnetworking.h.in 2025-04-21 14:36:14.671018625 -0600 +diff -ruwN source-old/gio/gnetworking.h.in source/gio/gnetworking.h.in +--- source-old/gio/gnetworking.h.in 2025-02-20 06:08:16.000000000 -0700 ++++ source/gio/gnetworking.h.in 2025-11-07 15:23:11.472335068 -0700 @@ -40,13 +40,17 @@ #include #include @@ -33,42 +45,9 @@ diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/gnetworking.h.in source/gio/g @NAMESER_COMPAT_INCLUDE@ #ifndef __GI_SCANNER__ -diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/gsocket.c source/gio/gsocket.c ---- glib-2.82.5/gio/gsocket.c 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/gsocket.c 2025-06-16 09:52:49.595949295 -0600 -@@ -487,6 +487,7 @@ - if (!g_socket_get_option (socket, SOL_SOCKET, SO_TYPE, &value, NULL)) - { - errsv = get_socket_errno (); -+ fprintf(stderr, "%s:%d\n", __FILE__, __LINE__); - goto err; - } - -@@ -513,6 +514,7 @@ - if (getsockname (fd, &address.sa, &addrlen) != 0) - { - errsv = get_socket_errno (); -+ fprintf(stderr, "%s:%d\n", __FILE__, __LINE__); - goto err; - } - -@@ -531,11 +533,13 @@ - if (!g_socket_get_option (socket, SOL_SOCKET, SO_DOMAIN, &family, NULL)) - { - errsv = get_socket_errno (); -+ fprintf(stderr, "%s:%d\n", __FILE__, __LINE__); - goto err; - } - #else - /* This will translate to G_IO_ERROR_FAILED on either unix or windows */ - errsv = -1; -+ fprintf(stderr, "%s:%d\n", __FILE__, __LINE__); - goto err; - #endif - } -diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/gthreadedresolver.c source/gio/gthreadedresolver.c ---- glib-2.82.5/gio/gthreadedresolver.c 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/gthreadedresolver.c 2025-04-21 14:36:14.672018626 -0600 +diff -ruwN source-old/gio/gthreadedresolver.c source/gio/gthreadedresolver.c +--- source-old/gio/gthreadedresolver.c 2025-02-20 06:08:16.000000000 -0700 ++++ source/gio/gthreadedresolver.c 2025-11-07 15:23:11.472497183 -0700 @@ -579,8 +579,26 @@ return g_task_propagate_pointer (G_TASK (result), error); } @@ -109,9 +88,9 @@ diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/gthreadedresolver.c source/gi len = res_nquery (&res, rrname, C_IN, rrtype, answer->data, answer->len); #else len = res_query (rrname, C_IN, rrtype, answer->data, answer->len); -diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/gunixmounts.c source/gio/gunixmounts.c ---- glib-2.82.5/gio/gunixmounts.c 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/gunixmounts.c 2025-04-21 14:36:14.672018626 -0600 +diff -ruwN source-old/gio/gunixmounts.c source/gio/gunixmounts.c +--- source-old/gio/gunixmounts.c 2025-02-20 06:08:16.000000000 -0700 ++++ source/gio/gunixmounts.c 2025-11-07 15:23:11.472785674 -0700 @@ -1135,6 +1135,37 @@ return NULL; } @@ -179,9 +158,9 @@ diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/gunixmounts.c source/gio/guni *n_points_out = 0; return NULL; } -diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/meson.build source/gio/meson.build ---- glib-2.82.5/gio/meson.build 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/meson.build 2025-04-21 14:36:14.672018626 -0600 +diff -ruwN source-old/gio/meson.build source/gio/meson.build +--- source-old/gio/meson.build 2025-02-20 06:08:16.000000000 -0700 ++++ source/gio/meson.build 2025-11-07 15:23:11.473092821 -0700 @@ -18,7 +18,7 @@ gnetworking_h_nameser_compat_include = '' @@ -200,9 +179,9 @@ diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/meson.build source/gio/meson. # res_query() res_query_test = '''#include int main (int argc, char ** argv) { -diff -ruwN '--exclude=subprojects' glib-2.82.5/gio/xdgmime/xdgmimecache.c source/gio/xdgmime/xdgmimecache.c ---- glib-2.82.5/gio/xdgmime/xdgmimecache.c 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/xdgmime/xdgmimecache.c 2025-04-21 14:36:14.673018628 -0600 +diff -ruwN source-old/gio/xdgmime/xdgmimecache.c source/gio/xdgmime/xdgmimecache.c +--- source-old/gio/xdgmime/xdgmimecache.c 2025-02-20 06:08:16.000000000 -0700 ++++ source/gio/xdgmime/xdgmimecache.c 2025-11-07 15:23:11.473286865 -0700 @@ -22,7 +22,7 @@ #include #include From 9118b687284c05dc7f69f4eeb41f9c08efcb2cac Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 7 Nov 2025 15:26:33 -0700 Subject: [PATCH 3073/3180] Fix missing change from last commit --- recipes/libs/glib/redox.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/libs/glib/redox.patch b/recipes/libs/glib/redox.patch index 640d67ab..bcc398e8 100644 --- a/recipes/libs/glib/redox.patch +++ b/recipes/libs/glib/redox.patch @@ -1,12 +1,12 @@ diff -ruwN source-old/gio/gcredentialsprivate.h source/gio/gcredentialsprivate.h --- source-old/gio/gcredentialsprivate.h 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/gcredentialsprivate.h 2025-11-07 15:23:11.471806927 -0700 ++++ source/gio/gcredentialsprivate.h 2025-11-07 15:25:50.600847134 -0700 @@ -104,7 +104,7 @@ */ #undef G_CREDENTIALS_HAS_PID -#ifdef __linux__ -+#if defined(__linux__) ++#if defined(__linux__) || defined(__redox__) #define G_CREDENTIALS_SUPPORTED 1 #define G_CREDENTIALS_USE_LINUX_UCRED 1 #define G_CREDENTIALS_NATIVE_TYPE G_CREDENTIALS_TYPE_LINUX_UCRED From df71710c7b895bdb14f47623a02f41e07cc7eb71 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 7 Nov 2025 15:46:20 -0700 Subject: [PATCH 3074/3180] glib: set SO_PASSCRED --- recipes/libs/glib/redox.patch | 44 +++++++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/recipes/libs/glib/redox.patch b/recipes/libs/glib/redox.patch index bcc398e8..98c7f0c6 100644 --- a/recipes/libs/glib/redox.patch +++ b/recipes/libs/glib/redox.patch @@ -1,6 +1,6 @@ diff -ruwN source-old/gio/gcredentialsprivate.h source/gio/gcredentialsprivate.h --- source-old/gio/gcredentialsprivate.h 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/gcredentialsprivate.h 2025-11-07 15:25:50.600847134 -0700 ++++ source/gio/gcredentialsprivate.h 2025-11-07 15:26:45.587855360 -0700 @@ -104,7 +104,7 @@ */ #undef G_CREDENTIALS_HAS_PID @@ -12,7 +12,7 @@ diff -ruwN source-old/gio/gcredentialsprivate.h source/gio/gcredentialsprivate.h #define G_CREDENTIALS_NATIVE_TYPE G_CREDENTIALS_TYPE_LINUX_UCRED diff -ruwN source-old/gio/glocalfile.c source/gio/glocalfile.c --- source-old/gio/glocalfile.c 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/glocalfile.c 2025-11-07 15:23:11.472066975 -0700 ++++ source/gio/glocalfile.c 2025-11-07 15:26:45.592150212 -0700 @@ -77,6 +77,10 @@ #include "glib-private.h" @@ -26,7 +26,7 @@ diff -ruwN source-old/gio/glocalfile.c source/gio/glocalfile.c #include diff -ruwN source-old/gio/gnetworking.h.in source/gio/gnetworking.h.in --- source-old/gio/gnetworking.h.in 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/gnetworking.h.in 2025-11-07 15:23:11.472335068 -0700 ++++ source/gio/gnetworking.h.in 2025-11-07 15:26:45.592531678 -0700 @@ -40,13 +40,17 @@ #include #include @@ -47,7 +47,7 @@ diff -ruwN source-old/gio/gnetworking.h.in source/gio/gnetworking.h.in #ifndef __GI_SCANNER__ diff -ruwN source-old/gio/gthreadedresolver.c source/gio/gthreadedresolver.c --- source-old/gio/gthreadedresolver.c 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/gthreadedresolver.c 2025-11-07 15:23:11.472497183 -0700 ++++ source/gio/gthreadedresolver.c 2025-11-07 15:26:45.592812736 -0700 @@ -579,8 +579,26 @@ return g_task_propagate_pointer (G_TASK (result), error); } @@ -88,9 +88,39 @@ diff -ruwN source-old/gio/gthreadedresolver.c source/gio/gthreadedresolver.c len = res_nquery (&res, rrname, C_IN, rrtype, answer->data, answer->len); #else len = res_query (rrname, C_IN, rrtype, answer->data, answer->len); +diff -ruwN source-old/gio/gunixconnection.c source/gio/gunixconnection.c +--- source-old/gio/gunixconnection.c 2025-02-20 06:08:16.000000000 -0700 ++++ source/gio/gunixconnection.c 2025-11-07 15:41:56.572549299 -0700 +@@ -496,7 +496,7 @@ + GSocket *socket; + gint n; + gssize num_bytes_read; +-#ifdef __linux__ ++#if defined(__linux__) || defined(__redox__) + gboolean turn_off_so_passcreds; + #endif + +@@ -512,7 +512,7 @@ + * already. We also need to turn it off when we're done. See + * #617483 for more discussion. + */ +-#ifdef __linux__ ++#if defined(__linux__) || defined(__redox__) + { + gint opt_val; + +@@ -626,7 +626,7 @@ + + out: + +-#ifdef __linux__ ++#if defined(__linux__) || defined(__redox__) + if (turn_off_so_passcreds) + { + if (!g_socket_set_option (socket, diff -ruwN source-old/gio/gunixmounts.c source/gio/gunixmounts.c --- source-old/gio/gunixmounts.c 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/gunixmounts.c 2025-11-07 15:23:11.472785674 -0700 ++++ source/gio/gunixmounts.c 2025-11-07 15:26:45.593497732 -0700 @@ -1135,6 +1135,37 @@ return NULL; } @@ -160,7 +190,7 @@ diff -ruwN source-old/gio/gunixmounts.c source/gio/gunixmounts.c } diff -ruwN source-old/gio/meson.build source/gio/meson.build --- source-old/gio/meson.build 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/meson.build 2025-11-07 15:23:11.473092821 -0700 ++++ source/gio/meson.build 2025-11-07 15:26:45.594120270 -0700 @@ -18,7 +18,7 @@ gnetworking_h_nameser_compat_include = '' @@ -181,7 +211,7 @@ diff -ruwN source-old/gio/meson.build source/gio/meson.build int main (int argc, char ** argv) { diff -ruwN source-old/gio/xdgmime/xdgmimecache.c source/gio/xdgmime/xdgmimecache.c --- source-old/gio/xdgmime/xdgmimecache.c 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/xdgmime/xdgmimecache.c 2025-11-07 15:23:11.473286865 -0700 ++++ source/gio/xdgmime/xdgmimecache.c 2025-11-07 15:26:45.594369348 -0700 @@ -22,7 +22,7 @@ #include #include From 6b119b9083b3ba8d70812b41469ec41b61d955b9 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sat, 8 Nov 2025 15:26:56 +0700 Subject: [PATCH 3075/3180] Fix push with package deps --- src/bin/repo.rs | 203 ++++++++++++++++++++++++++++++++--------------- src/cook/tree.rs | 72 +++++++++++++---- 2 files changed, 197 insertions(+), 78 deletions(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 5553f690..4ffb6fc1 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -7,7 +7,7 @@ use cookbook::cook::fs::{create_target_dir, run_command}; use cookbook::cook::package::package; use cookbook::cook::pty::{PtyOut, UnixSlavePty, flush_pty, setup_pty}; use cookbook::cook::script::KILL_ALL_PID; -use cookbook::cook::tree::{display_tree_entry, format_size}; +use cookbook::cook::tree::{WalkTreeEntry, display_tree_entry, format_size, walk_tree_entry}; use cookbook::log_to_pty; use cookbook::recipe::CookRecipe; use pkg::PackageName; @@ -27,7 +27,7 @@ use std::path::PathBuf; use std::process::Command; use std::str::FromStr; use std::sync::atomic::{AtomicBool, AtomicU32, Ordering}; -use std::sync::{Arc, mpsc}; +use std::sync::{Arc, OnceLock, mpsc}; use std::time::{Duration, Instant}; use std::{cmp, env, fs}; use std::{process, thread}; @@ -185,57 +185,31 @@ fn main_inner() -> anyhow::Result<()> { if let Some((name, e)) = run_tui_cook(config.clone(), recipe_names.clone())? { let _ = stderr().write(e.as_bytes()); let _ = stderr().write(b"\n\n"); - eprintln!( - "{}{}cook - failed at {}{}{}", - style::Bold, - color::Fg(color::AnsiValue(196)), - name.as_str(), - color::Fg(color::Reset), - style::Reset, - ); + print_failed(&command, &name); return Err(anyhow!("Execution has failed")); } else { - eprintln!( - "{}{}cook - successful{}{}", - style::Bold, - color::Fg(color::AnsiValue(46)), - color::Fg(color::Reset), - style::Reset, - ); + print_success(&command, None); } return publish_packages(&recipe_names, &config.repo_dir); } if command == CliCommand::Tree { return handle_tree(&recipe_names, &config); } + if command == CliCommand::Push { + return handle_push(&recipe_names, &config); + } let verbose = config.cook.verbose; for recipe in &recipe_names { match repo_inner(&config, &command, recipe) { Ok(_) => { - eprintln!( - "{}{}{} {} - successful{}{}", - style::Bold, - color::Fg(color::AnsiValue(46)), - command.to_string(), - recipe.name.as_str(), - color::Fg(color::Reset), - style::Reset, - ); + print_success(&command, Some(&recipe.name)); } Err(e) => { if config.cook.nonstop && verbose { eprintln!("{:?}", e); } - eprintln!( - "{}{}{} {} - failed {}{}", - style::Bold, - color::Fg(color::AnsiValue(196)), - command.to_string(), - recipe.name.as_str(), - color::Fg(color::Reset), - style::Reset, - ); + print_failed(&command, &recipe.name); if !config.cook.nonstop { return Err(e); } @@ -257,6 +231,41 @@ fn main_inner() -> anyhow::Result<()> { Ok(()) } +fn print_failed(command: &CliCommand, recipe: &PackageName) { + eprintln!( + "{}{}{} {} - failed {}{}", + style::Bold, + color::Fg(color::AnsiValue(196)), + command.to_string(), + recipe.as_str(), + color::Fg(color::Reset), + style::Reset, + ); +} + +fn print_success(command: &CliCommand, recipe: Option<&PackageName>) { + if let Some(recipe) = recipe { + eprintln!( + "{}{}{} {} - successful{}{}", + style::Bold, + color::Fg(color::AnsiValue(46)), + command.to_string(), + recipe.as_str(), + color::Fg(color::Reset), + style::Reset, + ); + } else { + eprintln!( + "{}{}{} - successful{}{}", + style::Bold, + color::Fg(color::AnsiValue(46)), + command.to_string(), + color::Fg(color::Reset), + style::Reset, + ); + } +} + fn repo_inner( config: &CliConfig, command: &CliCommand, @@ -308,7 +317,7 @@ fn repo_inner( } CliCommand::Unfetch => handle_clean(recipe, config, true, true)?, CliCommand::Clean => handle_clean(recipe, config, false, true)?, - CliCommand::Push => handle_push(recipe, config)?, + CliCommand::Push => unreachable!(), CliCommand::Tree => unreachable!(), CliCommand::Find => println!("{}", recipe.dir.display()), }) @@ -445,12 +454,11 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec anyhow::Result<()> { - let public_path = "build/id_ed25519.pub.toml"; - let archive_path = config - .repo_dir - .join(target()) - .join(format!("{}.pkgar", recipe.name)); - pkgar::extract( - public_path, - archive_path.as_path(), - config.sysroot_dir.to_str().unwrap(), - ) - .context(format!( - "failed to install '{}' in '{}'", - archive_path.display(), - config.sysroot_dir.display(), - )) +static PUSH_SYSROOT_DIR: OnceLock = OnceLock::new(); +fn handle_push(recipes: &Vec, config: &CliConfig) -> anyhow::Result<()> { + let recipe_map: HashMap<&PackageName, &CookRecipe> = + recipes.iter().map(|r| (&r.name, r)).collect(); + let mut total_size: u64 = 0; + let mut visited: HashSet = HashSet::new(); + let num_roots = recipes.len(); + PUSH_SYSROOT_DIR.set(config.sysroot_dir.clone()).unwrap(); + let handle_push_inner = move |package_name: &PackageName, + _prefix: &str, + _is_last: bool, + entry: &WalkTreeEntry| + -> anyhow::Result<()> { + let public_path = "build/id_ed25519.pub.toml"; + let r = match entry { + WalkTreeEntry::Built(archive_path, _) => { + let sysroot_dir = PUSH_SYSROOT_DIR.get().unwrap(); + pkgar::extract(public_path, archive_path.as_path(), sysroot_dir).context(format!( + "failed to install '{}' in '{}'", + archive_path.display(), + sysroot_dir.display(), + )) + } + WalkTreeEntry::NotBuilt => Err(anyhow!( + "Package {} has not been built", + package_name.as_str() + )), + WalkTreeEntry::Deduped | WalkTreeEntry::Missing => { + return Ok(()); + } + }; + match r { + Ok(()) => { + print_success(&CliCommand::Push, Some(package_name)); + Ok(()) + } + Err(e) => { + print_failed(&CliCommand::Push, package_name); + if get_config().cook.nonstop { + Ok(()) + } else { + Err(e) + } + } + } + }; + if config.with_package_deps { + for (i, root) in recipes.iter().enumerate() { + walk_tree_entry( + &root.name, + &recipe_map, + "", + i == num_roots - 1, + &mut visited, + &mut total_size, + handle_push_inner, + )?; + } + } else { + for (i, root) in recipes.iter().enumerate() { + let archive_path = config + .repo_dir + .join(target()) + .join(format!("{}.pkgar", root.name)); + let metadata = std::fs::metadata(&archive_path); + handle_push_inner( + &root.name, + "", + i == num_roots - 1, + &match metadata { + Ok(m) => WalkTreeEntry::Built(&archive_path, m.len()), + Err(_) => WalkTreeEntry::NotBuilt, + }, + )?; + } + } + + if config.cook.verbose { + println!(""); + println!( + "Pushed {} of {} packages", + format_size(total_size), + visited.len() + ); + } + + Ok(()) } fn handle_tree(recipes: &Vec, _config: &CliConfig) -> anyhow::Result<()> { let recipe_map: HashMap<&PackageName, &CookRecipe> = recipes.iter().map(|r| (&r.name, r)).collect(); - let mut total_size: u64 = 0; let mut visited: HashSet = HashSet::new(); - let roots: Vec<&CookRecipe> = recipes.iter().filter(|r| !r.is_deps).collect(); - let num_roots = roots.len(); - for (i, root) in roots.iter().enumerate() { display_tree_entry( &root.name, @@ -614,7 +689,11 @@ fn handle_tree(recipes: &Vec, _config: &CliConfig) -> anyhow::Result } println!(""); - println!("Estimated image size: {}", format_size(total_size)); + println!( + "Estimated image size: {} of {} packages", + format_size(total_size), + visited.len() + ); Ok(()) } diff --git a/src/cook/tree.rs b/src/cook/tree.rs index be709d47..630c6803 100644 --- a/src/cook/tree.rs +++ b/src/cook/tree.rs @@ -1,6 +1,7 @@ use std::{ collections::{HashMap, HashSet}, fs::read_to_string, + path::PathBuf, }; use anyhow::{Context, anyhow}; @@ -8,6 +9,13 @@ use pkg::{Package, PackageName}; use crate::{cook::fs::create_target_dir, recipe::CookRecipe}; +pub enum WalkTreeEntry<'a> { + Built(&'a PathBuf, u64), + NotBuilt, + Deduped, + Missing, +} + pub fn display_tree_entry( package_name: &PackageName, recipe_map: &HashMap<&PackageName, &CookRecipe>, @@ -16,17 +24,31 @@ pub fn display_tree_entry( visited: &mut HashSet, total_size: &mut u64, ) -> anyhow::Result<()> { - let line_prefix = if is_last { "└── " } else { "├── " }; - let child_prefix = if is_last { " " } else { "│ " }; + walk_tree_entry( + package_name, + recipe_map, + prefix, + is_last, + visited, + total_size, + display_pkg_fn, + ) +} +pub fn walk_tree_entry( + package_name: &PackageName, + recipe_map: &HashMap<&PackageName, &CookRecipe>, + prefix: &str, + is_last: bool, + visited: &mut HashSet, + total_size: &mut u64, + op: fn(&PackageName, &str, bool, &WalkTreeEntry) -> anyhow::Result<()>, +) -> anyhow::Result<()> { let cook_recipe = match recipe_map.get(package_name) { Some(r) => r, None => { // TODO: This is a dependency, but it's not in recipe list - println!( - "{}{}{} (dependency info missing)", - prefix, line_prefix, package_name - ); + op(package_name, prefix, is_last, &WalkTreeEntry::Missing)?; return Ok(()); } }; @@ -40,23 +62,22 @@ pub fn display_tree_entry( .join("stage.toml"); let deduped = visited.contains(package_name); - let (size_str, pkg_size) = match (std::fs::metadata(&pkg_path), deduped) { - (_, true) => ("".to_string(), 0), - (Ok(meta), _) => { - let size = meta.len(); - (format!("[{}]", format_size(size)), size) - } - (Err(_), _) => ("(not built)".to_string(), 0), + let entry = match (std::fs::metadata(&pkg_path), deduped) { + (_, true) => WalkTreeEntry::Deduped, + (Ok(meta), _) => WalkTreeEntry::Built(&pkg_path, meta.len()), + (Err(_), _) => WalkTreeEntry::NotBuilt, }; - println!("{}{}{} {}", prefix, line_prefix, package_name, size_str); + op(package_name, prefix, is_last, &entry)?; if deduped { return Ok(()); } visited.insert(package_name.clone()); - *total_size += pkg_size; + if let WalkTreeEntry::Built(_p, pkg_size) = &entry { + *total_size += pkg_size; + } let pkg_meta: Package; let mut all_deps_set: HashSet<&PackageName> = HashSet::new(); @@ -75,20 +96,39 @@ pub fn display_tree_entry( let sorted_deps: Vec<&PackageName> = all_deps_set.into_iter().collect(); let deps_count = sorted_deps.len(); + let child_prefix = if is_last { " " } else { "│ " }; for (i, dep_name) in sorted_deps.iter().enumerate() { - display_tree_entry( + walk_tree_entry( dep_name, recipe_map, &format!("{}{}", prefix, child_prefix), i == deps_count - 1, visited, total_size, + op, )?; } Ok(()) } +pub fn display_pkg_fn( + package_name: &PackageName, + prefix: &str, + is_last: bool, + entry: &WalkTreeEntry, +) -> anyhow::Result<()> { + let size_str = match entry { + WalkTreeEntry::Built(_path_buf, size) => format!("[{}]", format_size(*size)), + WalkTreeEntry::NotBuilt => "(not built)".to_string(), + WalkTreeEntry::Deduped => "".to_string(), + WalkTreeEntry::Missing => "(dependency info missing)".to_string(), + }; + let line_prefix = if is_last { "└── " } else { "├── " }; + println!("{}{}{} {}", prefix, line_prefix, package_name, size_str); + Ok(()) +} + pub fn format_size(bytes: u64) -> String { if bytes == 0 { return "0 B".to_string(); From c059f13e4f01ee9bf0aaeece059a951cd5b6111d Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sat, 8 Nov 2025 15:50:25 +0700 Subject: [PATCH 3076/3180] Query deps for push --- src/bin/repo.rs | 14 +++++++++----- src/cook/tree.rs | 9 +++------ 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 4ffb6fc1..4b54cfcb 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -99,7 +99,10 @@ impl CliCommand { *self == CliCommand::Tree || *self == CliCommand::Find } pub fn is_building(&self) -> bool { - *self == CliCommand::Fetch || *self == CliCommand::Cook || *self == CliCommand::Tree + *self == CliCommand::Fetch || *self == CliCommand::Cook + } + pub fn is_pushing(&self) -> bool { + *self == CliCommand::Push || *self == CliCommand::Tree } pub fn is_cleaning(&self) -> bool { *self == CliCommand::Clean || *self == CliCommand::Unfetch @@ -454,7 +457,7 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec, config: &CliConfig) -> anyhow::Result< recipes.iter().map(|r| (&r.name, r)).collect(); let mut total_size: u64 = 0; let mut visited: HashSet = HashSet::new(); - let num_roots = recipes.len(); + let roots: Vec<&CookRecipe> = recipes.iter().filter(|r| !r.is_deps).collect(); + let num_roots = roots.len(); PUSH_SYSROOT_DIR.set(config.sysroot_dir.clone()).unwrap(); let handle_push_inner = move |package_name: &PackageName, _prefix: &str, @@ -628,7 +632,7 @@ fn handle_push(recipes: &Vec, config: &CliConfig) -> anyhow::Result< } }; if config.with_package_deps { - for (i, root) in recipes.iter().enumerate() { + for (i, root) in roots.iter().enumerate() { walk_tree_entry( &root.name, &recipe_map, @@ -640,7 +644,7 @@ fn handle_push(recipes: &Vec, config: &CliConfig) -> anyhow::Result< )?; } } else { - for (i, root) in recipes.iter().enumerate() { + for (i, root) in roots.iter().enumerate() { let archive_path = config .repo_dir .join(target()) diff --git a/src/cook/tree.rs b/src/cook/tree.rs index 630c6803..1c796488 100644 --- a/src/cook/tree.rs +++ b/src/cook/tree.rs @@ -54,12 +54,9 @@ pub fn walk_tree_entry( }; let package_dir = &cook_recipe.dir; - let pkg_path = create_target_dir(package_dir) - .map_err(|e| anyhow!(e))? - .join("stage.pkgar"); - let pkg_toml = create_target_dir(package_dir) - .map_err(|e| anyhow!(e))? - .join("stage.toml"); + let target_dir = create_target_dir(package_dir).map_err(|e| anyhow!(e))?; + let pkg_path = target_dir.join("stage.pkgar"); + let pkg_toml = target_dir.join("stage.toml"); let deduped = visited.contains(package_name); let entry = match (std::fs::metadata(&pkg_path), deduped) { From 47533553c83bd2b08ad4b9d8da06a4ca30ac2d36 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sat, 8 Nov 2025 16:08:59 +0700 Subject: [PATCH 3077/3180] Handle nonstop arg --- repo.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/repo.sh b/repo.sh index e25200f1..ab6ea895 100755 --- a/repo.sh +++ b/repo.sh @@ -13,6 +13,9 @@ do elif [[ "$arg" == "--offline" ]] then export COOKBOOK_OFFLINE=true + elif [[ "$arg" == "--nonstop" ]] + then + export COOKBOOK_NONSTOP=true elif [[ $arg == "--*" ]] then COOK_OPT+=" ${arg}" From de3d5914cf6523e482d2f7a96b1ed852fdfa8cac Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 9 Nov 2025 10:57:43 +0700 Subject: [PATCH 3078/3180] Fix hang on fetch --- src/bin/repo.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 4b54cfcb..e81cbec5 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -294,7 +294,7 @@ fn repo_inner( let th = thread::spawn(move || { while let Ok(update) = status_rx.recv() { let mut should_break = false; - if let StatusUpdate::FlushLog(_p, _q) = &update { + if update == StatusUpdate::CookThreadFinished { should_break = true; } app.update_status(update); @@ -316,6 +316,9 @@ fn repo_inner( .send(StatusUpdate::FlushLog(recipe.name.clone(), log_path)) .unwrap_or_default(); } + status_tx + .send(StatusUpdate::CookThreadFinished) + .unwrap_or_default(); let _ = th.join(); } CliCommand::Unfetch => handle_clean(recipe, config, true, true)?, From 13ac0bbf70cd59d7c7a6763506602f2fd35b75b7 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 9 Nov 2025 11:05:58 +0700 Subject: [PATCH 3079/3180] Simplify logic --- src/bin/repo.rs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index e81cbec5..341cd0e7 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -293,14 +293,10 @@ fn repo_inner( app.dump_logs_anyway = true; let th = thread::spawn(move || { while let Ok(update) = status_rx.recv() { - let mut should_break = false; if update == StatusUpdate::CookThreadFinished { - should_break = true; - } - app.update_status(update); - if should_break { break; } + app.update_status(update); } }); let mut logger = Some((&mut stdout_writer, &mut stderr_writer)); From cf129b2e861555ee12a95f02a1595b51cfe65456 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 9 Nov 2025 14:20:37 +0700 Subject: [PATCH 3080/3180] Fix some games --- recipes/demos/sdl2-gears/recipe.toml | 17 ++++------ .../games/action/openlara/assets/README.md | 2 ++ recipes/wip/games/action/openlara/recipe.toml | 17 +++++++++- .../wip/games/open-world/veloren/recipe.toml | 4 ++- .../wip/games/racing/supertuxkart/recipe.toml | 7 ++-- .../wip/games/racing/supertuxkart/redox.patch | 15 +++++++++ recipes/wip/games/space/osirion/recipe.toml | 2 -- recipes/wip/games/syobonaction/recipe.sh | 33 ------------------- recipes/wip/games/syobonaction/recipe.toml | 26 +++++++++++++++ 9 files changed, 74 insertions(+), 49 deletions(-) create mode 100644 recipes/wip/games/action/openlara/assets/README.md create mode 100644 recipes/wip/games/racing/supertuxkart/redox.patch delete mode 100644 recipes/wip/games/syobonaction/recipe.sh create mode 100644 recipes/wip/games/syobonaction/recipe.toml diff --git a/recipes/demos/sdl2-gears/recipe.toml b/recipes/demos/sdl2-gears/recipe.toml index bbe89f0e..04ef051f 100644 --- a/recipes/demos/sdl2-gears/recipe.toml +++ b/recipes/demos/sdl2-gears/recipe.toml @@ -4,17 +4,14 @@ dependencies = [ "sdl2-image", "sdl2-mixer", "sdl2-ttf", - "llvm18", ] script = """ DYNAMIC_INIT -cp "${COOKBOOK_SOURCE}/../gears.c" ./gears.c -rsync -av --delete --exclude='.git' "${COOKBOOK_SOURCE}/../assets" ./assets -${CXX} -O2 -I "${COOKBOOK_SYSROOT}/include" $LDFLAGS gears.c -o sdl2_gears \ - -dynamic -lSDL2_image -lSDL2_mixer -lSDL2_ttf -lSDL2 -lorbital \ - $("${PKG_CONFIG}" --libs osmesa) -lfreetype -lpng -ljpeg -lvorbisfile -lvorbis -logg -lz -rm -rf "${COOKBOOK_STAGE}/usr/games/sdl2_gears" -mkdir -pv "${COOKBOOK_STAGE}/usr/games/sdl2_gears" -cp -v "sdl2_gears" "${COOKBOOK_STAGE}/usr/games/sdl2_gears/sdl2_gears" -cp -rv "assets" "${COOKBOOK_STAGE}/usr/games/sdl2_gears/assets" +mkdir -p "${COOKBOOK_STAGE}/usr/games/sdl2_gears" +${CXX} -O2 -I "${COOKBOOK_SYSROOT}/include" $LDFLAGS ${COOKBOOK_RECIPE}/gears.c \ + -o sdl2_gears -dynamic \ + -lSDL2_image -lSDL2_mixer -lSDL2_ttf $("${PKG_CONFIG}" --libs osmesa) \ + -lSDL2 -lorbital -lfreetype -lpng -ljpeg -lvorbisfile -lvorbis -logg -lz +cp -rv "${COOKBOOK_RECIPE}/assets" "${COOKBOOK_STAGE}/usr/games/sdl2_gears/" +cp -v sdl2_gears "${COOKBOOK_STAGE}/usr/games/sdl2_gears/" """ diff --git a/recipes/wip/games/action/openlara/assets/README.md b/recipes/wip/games/action/openlara/assets/README.md new file mode 100644 index 00000000..3979e494 --- /dev/null +++ b/recipes/wip/games/action/openlara/assets/README.md @@ -0,0 +1,2 @@ + +To make assets working, purchase from https://www.gog.com/en/game/tomb_raider_123, then add 'audio', 'level', and 'video' to this folder. Additional info can be read from https://github.com/XProger/OpenLara/pull/414/files diff --git a/recipes/wip/games/action/openlara/recipe.toml b/recipes/wip/games/action/openlara/recipe.toml index 5f7318e7..4985f980 100644 --- a/recipes/wip/games/action/openlara/recipe.toml +++ b/recipes/wip/games/action/openlara/recipe.toml @@ -1,5 +1,20 @@ -#TODO lacking a build system +#TODO: Compiled, not tested further [source] git = "https://github.com/XProger/OpenLara" + [build] template = "custom" +dependencies = [ + "sdl2", +] +script = """ +DYNAMIC_INIT +SRC="${COOKBOOK_SOURCE}/src" +mkdir -p "${COOKBOOK_STAGE}/usr/games/OpenLara" +${CXX} "-I${COOKBOOK_SYSROOT}/include" "-I$SRC/" ${LDFLAGS} -DSDL2_GLES -D_GAPI_GLES2 -std=c++11 \ + -O3 -fno-exceptions -fno-rtti -ffunction-sections -fdata-sections -Wl,--gc-sections -DNDEBUG -D__SDL2__ \ + -dynamic -lSDL2 -lGLESv2 -lEGL $("${PKG_CONFIG}" --libs osmesa) -o OpenLara \ + $SRC/platform/sdl2/main.cpp "$SRC/libs/stb_vorbis/stb_vorbis.c" "$SRC/libs/minimp3/minimp3.cpp" "$SRC/libs/tinf/tinflate.c" +cp -rv "${COOKBOOK_RECIPE}/assets" "${COOKBOOK_STAGE}/usr/games/sdl2_gears/" +cp OpenLara ${COOKBOOK_STAGE}/usr/games/OpenLara/OpenLara +""" diff --git a/recipes/wip/games/open-world/veloren/recipe.toml b/recipes/wip/games/open-world/veloren/recipe.toml index 55216f39..0265a9d8 100644 --- a/recipes/wip/games/open-world/veloren/recipe.toml +++ b/recipes/wip/games/open-world/veloren/recipe.toml @@ -1,8 +1,10 @@ -#TODO make all dependencies work +#TODO quinn-udp crate error [source] git = "https://github.com/veloren/veloren" +shallow = true [build] template = "cargo" +package_path="client" dependencies = [ "glib", "cairo", diff --git a/recipes/wip/games/racing/supertuxkart/recipe.toml b/recipes/wip/games/racing/supertuxkart/recipe.toml index c10bc850..5ee6ff3c 100644 --- a/recipes/wip/games/racing/supertuxkart/recipe.toml +++ b/recipes/wip/games/racing/supertuxkart/recipe.toml @@ -1,12 +1,15 @@ -#TODO not compiled or tested +#TODO requires ifaddrs.h # build instructions: https://github.com/supertuxkart/stk-code/blob/master/INSTALL.md#compiling [source] -tar = "https://github.com/supertuxkart/stk-code/releases/download/1.4/SuperTuxKart-1.4-src.tar.xz" +tar = "https://github.com/supertuxkart/stk-code/releases/download/1.5/SuperTuxKart-1.5-src.tar.gz" [build] template = "cmake" cmakeflags = [ "-DNO_SHADERC=ON", + "-DUSE_WIIUSE=OFF", + "-DUSE_DNS_C=ON", "-DBUILD_RECORDER=OFF", + "-DPTHREAD_LIBRARY=/dev/null" ] dependencies = [ "openal", diff --git a/recipes/wip/games/racing/supertuxkart/redox.patch b/recipes/wip/games/racing/supertuxkart/redox.patch new file mode 100644 index 00000000..cd42e2d9 --- /dev/null +++ b/recipes/wip/games/racing/supertuxkart/redox.patch @@ -0,0 +1,15 @@ +diff -ruwN source/src/guiengine/widgets/spinner_widget.cpp source-new/src/guiengine/widgets/spinner_widget.cpp +--- source/src/guiengine/widgets/spinner_widget.cpp 2025-10-20 04:04:17.000000000 +0700 ++++ source-new/src/guiengine/widgets/spinner_widget.cpp 2025-11-09 11:29:52.678400188 +0700 +@@ -493,10 +493,7 @@ + } + else + { +- std::wstringstream ws; +- ws << (m_value*m_step); +- std::wstring text = ws.str(); +- m_children[1].m_element->setText( text.c_str() ); ++ m_children[1].m_element->setText( stringw(m_value*m_step).c_str() ); + } + } + } diff --git a/recipes/wip/games/space/osirion/recipe.toml b/recipes/wip/games/space/osirion/recipe.toml index 5f982c2d..b8707c17 100644 --- a/recipes/wip/games/space/osirion/recipe.toml +++ b/recipes/wip/games/space/osirion/recipe.toml @@ -10,8 +10,6 @@ dependencies = [ "libpng", "libjpeg", "sdl2", - "mesa", - "mesa-glu", "openal", "libvorbis", ] diff --git a/recipes/wip/games/syobonaction/recipe.sh b/recipes/wip/games/syobonaction/recipe.sh deleted file mode 100644 index dc2b7a3b..00000000 --- a/recipes/wip/games/syobonaction/recipe.sh +++ /dev/null @@ -1,33 +0,0 @@ -VERSION=1.0-rc3 -GIT=https://github.com/angelXwind/OpenSyobonAction -BUILD_DEPENDS=(sdl1 liborbital sdl1-mixer sdl1-image sdl-gfx sdl1-ttf freetype2 libjpeg libpng zlib libogg libvorbis) - -function recipe_version { - echo "$VERSION" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export SDL_CONFIG="${PKG_CONFIG} sdl" - export CPPFLAGS="-I$sysroot/include" - export LDFLAGS="-L$sysroot/lib --static" - "$REDOX_MAKE" -j"$($NPROC)" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - mkdir -pv "$1/bin" - mkdir -pv "$1/share/syobonaction" - cp -Rv ./SyobonAction "$1/bin/syobonaction" - cp -Rv ./BGM "$1/share/syobonaction" - cp -Rv ./res "$1/share/syobonaction" - cp -Rv ./SE "$1/share/syobonaction" - skip=1 -} diff --git a/recipes/wip/games/syobonaction/recipe.toml b/recipes/wip/games/syobonaction/recipe.toml new file mode 100644 index 00000000..576a9010 --- /dev/null +++ b/recipes/wip/games/syobonaction/recipe.toml @@ -0,0 +1,26 @@ +[source] +git = "https://github.com/angelXwind/OpenSyobonAction" +patches = [ + "01_redox.patch" +] + +[build] +template = "custom" +dependencies = [ + "sdl1-mixer", + "sdl1-image", + "sdl-gfx", + "sdl1-ttf", +] +script = """ +DYNAMIC_INIT +export LDFLAGS="$LDFLAGS -lorbital" +rsync -a --delete "${COOKBOOK_SOURCE}/" ./ +make +mkdir -pv "${COOKBOOK_STAGE}/usr/bin" +mkdir -pv "${COOKBOOK_STAGE}/usr/share/syobonaction" +cp -Rv ./SyobonAction "${COOKBOOK_STAGE}/usr/bin/syobonaction" +cp -Rv ./BGM "${COOKBOOK_STAGE}/usr/share/syobonaction" +cp -Rv ./res "${COOKBOOK_STAGE}/usr/share/syobonaction" +cp -Rv ./SE "${COOKBOOK_STAGE}/usr/share/syobonaction" +""" From dbee2d90406460f69aa72ae40a868f1aa0b4398c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 9 Nov 2025 08:10:15 -0700 Subject: [PATCH 3081/3180] dbus: Enable verbose logging --- recipes/wip/services/dbus/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/services/dbus/recipe.toml b/recipes/wip/services/dbus/recipe.toml index 65564ad0..6539ec16 100644 --- a/recipes/wip/services/dbus/recipe.toml +++ b/recipes/wip/services/dbus/recipe.toml @@ -19,4 +19,5 @@ mesonflags = [ #TODO: why does this require Linux? "-Depoll=disabled", "-Dx11_autolaunch=enabled", + "-Dverbose_mode=true", ] From ea197b4cfea8f91693f9050b6a4476ccaf23666d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 9 Nov 2025 08:11:23 -0700 Subject: [PATCH 3082/3180] flycast: remove metainfo files --- recipes/emulators/flycast/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/emulators/flycast/recipe.toml b/recipes/emulators/flycast/recipe.toml index 505b7965..7277aa1e 100644 --- a/recipes/emulators/flycast/recipe.toml +++ b/recipes/emulators/flycast/recipe.toml @@ -55,6 +55,6 @@ COOKBOOK_CONFIGURE_FLAGS=( "${COOKBOOK_SOURCE}" ) cookbook_configure -# Fix for appstream generation -mv "${COOKBOOK_STAGE}/usr/share/metainfo/org.flycast.Flycast.metainfo.xml" "${COOKBOOK_STAGE}/usr/share/metainfo/flycast.metainfo.xml" +# appstream generation broken +rm -rf "${COOKBOOK_STAGE}/usr/share/metainfo" """ From a6fbe2b84ff43cf46fceb65c381fc53d26b1bac5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 9 Nov 2025 08:19:46 -0700 Subject: [PATCH 3083/3180] qemu: fix compilation --- recipes/wip/vm/qemu/recipe.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/recipes/wip/vm/qemu/recipe.toml b/recipes/wip/vm/qemu/recipe.toml index 2e02b857..bbf0179b 100644 --- a/recipes/wip/vm/qemu/recipe.toml +++ b/recipes/wip/vm/qemu/recipe.toml @@ -13,6 +13,7 @@ dependencies = [ "libjpeg", "liborbital", "libpng", + "libstdcxx", "llvm18", "mesa", "nghttp2", @@ -30,6 +31,7 @@ COOKBOOK_CONFIGURE_FLAGS=( --prefix="/usr" --cross-prefix="${TARGET}" --disable-coroutine-pool + --disable-dbus-display --disable-tpm ) case "${TARGET}" in From eff4a44f231969fb813e35f02e1ea22f8a30af2e Mon Sep 17 00:00:00 2001 From: Timmy Douglas Date: Sat, 8 Nov 2025 22:19:03 -0800 Subject: [PATCH 3084/3180] gdb: compile and startup without errors. can print 1 + 1 --- recipes/wip/dev/debug/gdb/recipe.toml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/recipes/wip/dev/debug/gdb/recipe.toml b/recipes/wip/dev/debug/gdb/recipe.toml index c96c2b07..b74927fe 100644 --- a/recipes/wip/dev/debug/gdb/recipe.toml +++ b/recipes/wip/dev/debug/gdb/recipe.toml @@ -6,8 +6,12 @@ template = "custom" dependencies = [ "libgmp", "libmpfr", + "ncurses", + "readline" ] script = """ +DYNAMIC_INIT + COOKBOOK_CONFIGURE_FLAGS+=( --disable-binutils --disable-ld @@ -17,6 +21,12 @@ COOKBOOK_CONFIGURE_FLAGS+=( --disable-gprof --disable-gprofng --disable-intl + --with-system-readline + --with-gmp="${COOKBOOK_SYSROOT}" + --with-mpfr="${COOKBOOK_SYSROOT}" + --with-curses ) + +"${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" cookbook_configure """ From 046f7074a638894304445961aa8532df66080989 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 9 Nov 2025 18:47:04 -0700 Subject: [PATCH 3085/3180] libxcomposite: move to wip/x11 and fix compilation --- recipes/wip/{libs/other => x11}/libxcomposite/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/{libs/other => x11}/libxcomposite/recipe.toml (100%) diff --git a/recipes/wip/libs/other/libxcomposite/recipe.toml b/recipes/wip/x11/libxcomposite/recipe.toml similarity index 100% rename from recipes/wip/libs/other/libxcomposite/recipe.toml rename to recipes/wip/x11/libxcomposite/recipe.toml From 928651218e00ca4ee16b1a3d0a1080d4d8a47298 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 10 Nov 2025 07:25:01 -0700 Subject: [PATCH 3086/3180] wine-stable improvements, still not compiling - Update to 10.18 - Add blake3 - Fix dependencies - Build wine tools for host --- .../emulators/windows/wine-stable/recipe.toml | 48 +++++++++++++++++-- 1 file changed, 45 insertions(+), 3 deletions(-) diff --git a/recipes/wip/emulators/windows/wine-stable/recipe.toml b/recipes/wip/emulators/windows/wine-stable/recipe.toml index 1c4b3f70..1034be31 100644 --- a/recipes/wip/emulators/windows/wine-stable/recipe.toml +++ b/recipes/wip/emulators/windows/wine-stable/recipe.toml @@ -1,7 +1,13 @@ #TODO port to redox #build instructions: https://gitlab.winehq.org/wine/wine/-/wikis/Building-Wine [source] -tar = "https://dl.winehq.org/wine/source/10.0/wine-10.0.tar.xz" +tar = "http://dl.winehq.org/wine/source/10.x/wine-10.18.tar.xz" +blake3 = "0517c4200935456fbc22b152a19c5fd0d027d2b06c511968a5533101e1274f54" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + [build] template = "custom" dependencies = [ @@ -11,19 +17,54 @@ dependencies = [ "gstreamer", "sdl2", "mesa-x11", + "libstdcxx", "libx11", "libxcomposite", "libxcursor", "libxi", "libxfixes", - "librandr", + "libxrandr", "libxrender", "libxext", "libxkbcommon", - "libxkbregistry", + #"libxkbregistry", ] script = """ DYNAMIC_INIT + +mkdir -p wine-tools +pushd wine-tools +#TODO: easier way to build for host? +HOST_ENV=( + env + --unset=AR + --unset=AS + --unset=CC + --unset=CFLAGS + --unset=CPPFLAGS + --unset=CXX + --unset=GNU_TARGET + --unset=LD + --unset=LDFLAGS + --unset=NM + --unset=OBJCOPY + --unset=OBJDUMP + --unset=PKG_CONFIG + --unset=PKG_CONFIG_ALLOW_CROSS + --unset=PKG_CONFIG_FOR_BUILD + --unset=PKG_CONFIG_LIBDIR + --unset=PKG_CONFIG_PATH + --unset=PKG_CONFIG_SYSROOT_DIR + --unset=PREFIX_RUSTFLAGS + --unset=RANLIB + --unset=READELF + --unset=STRIP + --unset=TARGET +) +"${HOST_ENV[@]}" "${COOKBOOK_CONFIGURE}" --enable-win64 +"${HOST_ENV[@]}" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" __tooldeps__ +popd + COOKBOOK_CONFIGURE_FLAGS+=( --enable-win64 --disable-kerberos @@ -49,6 +90,7 @@ COOKBOOK_CONFIGURE_FLAGS+=( --without-udev --without-unwind --without-usb + --with-wine-tools=wine-tools ) cookbook_configure """ From 4bcb811e0e8c92765d9c4a3a9efd1e2aebd1c11e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 10 Nov 2025 12:33:52 -0700 Subject: [PATCH 3087/3180] glib: update to latest upstream version 2.87.0 --- recipes/libs/glib/recipe.toml | 6 +- recipes/libs/glib/redox.patch | 252 +++++++++++++--------------------- 2 files changed, 102 insertions(+), 156 deletions(-) diff --git a/recipes/libs/glib/recipe.toml b/recipes/libs/glib/recipe.toml index c51b87f7..b0bc7107 100644 --- a/recipes/libs/glib/recipe.toml +++ b/recipes/libs/glib/recipe.toml @@ -1,8 +1,8 @@ [source] -tar = "https://download.gnome.org/sources/glib/2.82/glib-2.82.5.tar.xz" -blake3 = "9f5b4a12c6f328b167e81f457319f199acbaa02a63107d698ee9953193740b5f" +tar = "https://download.gnome.org/sources/glib/2.87/glib-2.87.0.tar.xz" +blake3 = "26b77ae24bc02f85d1c6742fe601167b056085f117cda70da7b805cefa6195e9" patches = [ - "redox.patch" + "redox.patch", ] [build] diff --git a/recipes/libs/glib/redox.patch b/recipes/libs/glib/redox.patch index 98c7f0c6..fb632d43 100644 --- a/recipes/libs/glib/redox.patch +++ b/recipes/libs/glib/redox.patch @@ -1,32 +1,32 @@ -diff -ruwN source-old/gio/gcredentialsprivate.h source/gio/gcredentialsprivate.h ---- source-old/gio/gcredentialsprivate.h 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/gcredentialsprivate.h 2025-11-07 15:26:45.587855360 -0700 -@@ -104,7 +104,7 @@ - */ - #undef G_CREDENTIALS_HAS_PID +diff -ruwN source-old/fuzzing/fuzz_resolver.c source/fuzzing/fuzz_resolver.c +--- source-old/fuzzing/fuzz_resolver.c 2025-11-03 05:42:10.000000000 -0700 ++++ source/fuzzing/fuzz_resolver.c 2025-11-10 12:32:52.477409492 -0700 +@@ -29,7 +29,7 @@ + gint rrtype) + { + /* g_resolver_records_from_res_query() is only available on Unix */ +-#ifdef G_OS_UNIX ++#if defined(G_OS_UNIX) && !defined(__redox__) + GList *record_list = NULL; --#ifdef __linux__ -+#if defined(__linux__) || defined(__redox__) - #define G_CREDENTIALS_SUPPORTED 1 - #define G_CREDENTIALS_USE_LINUX_UCRED 1 - #define G_CREDENTIALS_NATIVE_TYPE G_CREDENTIALS_TYPE_LINUX_UCRED + /* Data too long? */ diff -ruwN source-old/gio/glocalfile.c source/gio/glocalfile.c ---- source-old/gio/glocalfile.c 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/glocalfile.c 2025-11-07 15:26:45.592150212 -0700 -@@ -77,6 +77,10 @@ - - #include "glib-private.h" +--- source-old/gio/glocalfile.c 2025-11-03 05:42:10.000000000 -0700 ++++ source/gio/glocalfile.c 2025-11-10 12:32:05.826947018 -0700 +@@ -47,6 +47,10 @@ + #include + #endif +#if defined(__redox__) +#undef AT_FDCWD +#endif + - #ifdef G_OS_WIN32 - #include - #include + #ifndef O_BINARY + #define O_BINARY 0 + #endif diff -ruwN source-old/gio/gnetworking.h.in source/gio/gnetworking.h.in ---- source-old/gio/gnetworking.h.in 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/gnetworking.h.in 2025-11-07 15:26:45.592531678 -0700 +--- source-old/gio/gnetworking.h.in 2025-11-03 05:42:10.000000000 -0700 ++++ source/gio/gnetworking.h.in 2025-11-10 12:32:05.827234357 -0700 @@ -40,13 +40,17 @@ #include #include @@ -46,151 +46,74 @@ diff -ruwN source-old/gio/gnetworking.h.in source/gio/gnetworking.h.in #ifndef __GI_SCANNER__ diff -ruwN source-old/gio/gthreadedresolver.c source/gio/gthreadedresolver.c ---- source-old/gio/gthreadedresolver.c 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/gthreadedresolver.c 2025-11-07 15:26:45.592812736 -0700 -@@ -579,8 +579,26 @@ - return g_task_propagate_pointer (G_TASK (result), error); +--- source-old/gio/gthreadedresolver.c 2025-11-03 05:42:10.000000000 -0700 ++++ source/gio/gthreadedresolver.c 2025-11-10 12:32:05.827396051 -0700 +@@ -698,7 +698,7 @@ } -+#if defined(__redox__) -+gint -+g_resolver_record_type_to_rrtype (GResolverRecordType type) -+{ -+ g_return_val_if_reached (-1); -+} -#if defined(G_OS_UNIX) -+GList * -+g_resolver_records_from_res_query (const gchar *rrname, -+ gint rrtype, -+ const guint8 *answer, -+ gssize len, -+ gint herr, -+ GError **error) -+{ -+ return NULL; -+} -+#endif -+ +#if defined(G_OS_UNIX) && !defined(__redox__) #if defined __BIONIC__ && !defined BIND_4_COMPAT /* Copy from bionic/libc/private/arpa_nameser_compat.h -@@ -1308,7 +1326,10 @@ - for (;;) - { - g_byte_array_set_size (answer, len * 2); --#if defined(HAVE_RES_NQUERY) +@@ -1393,7 +1393,11 @@ + { + GList *records; + +-#if defined(G_OS_UNIX) +#if defined(__redox__) -+ //TODO: implement on redox -+ len = -1; -+#elif defined(HAVE_RES_NQUERY) - len = res_nquery (&res, rrname, C_IN, rrtype, answer->data, answer->len); - #else - len = res_query (rrname, C_IN, rrtype, answer->data, answer->len); -diff -ruwN source-old/gio/gunixconnection.c source/gio/gunixconnection.c ---- source-old/gio/gunixconnection.c 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/gunixconnection.c 2025-11-07 15:41:56.572549299 -0700 -@@ -496,7 +496,7 @@ - GSocket *socket; - gint n; - gssize num_bytes_read; --#ifdef __linux__ -+#if defined(__linux__) || defined(__redox__) - gboolean turn_off_so_passcreds; - #endif - -@@ -512,7 +512,7 @@ - * already. We also need to turn it off when we're done. See - * #617483 for more discussion. - */ --#ifdef __linux__ -+#if defined(__linux__) || defined(__redox__) - { - gint opt_val; - -@@ -626,7 +626,7 @@ - - out: - --#ifdef __linux__ -+#if defined(__linux__) || defined(__redox__) - if (turn_off_so_passcreds) - { - if (!g_socket_set_option (socket, ++ g_set_error (error, G_RESOLVER_ERROR, G_RESOLVER_ERROR_INTERNAL, ++ _("No support for resolving “%s” on redox"), rrname); ++ return NULL; ++#elif defined(G_OS_UNIX) + gint len = 512; + gint herr; + GByteArray *answer; diff -ruwN source-old/gio/gunixmounts.c source/gio/gunixmounts.c ---- source-old/gio/gunixmounts.c 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/gunixmounts.c 2025-11-07 15:26:45.593497732 -0700 -@@ -1135,6 +1135,37 @@ +--- source-old/gio/gunixmounts.c 2025-11-03 05:42:10.000000000 -0700 ++++ source/gio/gunixmounts.c 2025-11-10 12:32:05.827736880 -0700 +@@ -1114,7 +1114,7 @@ + } + + /* QNX {{{2 */ +-#elif defined (HAVE_QNX) ++#elif defined (HAVE_QNX) || defined(__redox__) + + static char * + get_mtab_monitor_file (void) +@@ -1758,6 +1758,28 @@ return NULL; } -+/* Redox OS {{{2 */ -+#elif defined (__redox__) -+ -+static char * -+get_mtab_monitor_file (void) -+{ -+ /* TODO: Not implemented */ -+ return NULL; -+} -+ -+static GUnixMountEntry ** -+_g_unix_mounts_get_from_file (const char *table_path, -+ uint64_t *time_read_out, -+ size_t *n_entries_out) -+{ -+ /* Not implemented, as per _g_get_unix_mounts() below */ -+ if (time_read_out != NULL) -+ *time_read_out = 0; -+ if (n_entries_out != NULL) -+ *n_entries_out = 0; -+ -+ return NULL; -+} -+ -+static GList * -+_g_get_unix_mounts (void) -+{ -+ /* TODO: Not implemented */ -+ return NULL; -+} -+ - /* Common code {{{2 */ - #else - #error No _g_get_unix_mounts() implementation for system -@@ -1745,6 +1776,28 @@ - if (time_read_out != NULL) - *time_read_out = 0; - if (n_points_out != NULL) -+ *n_points_out = 0; -+ return NULL; -+} -+ +#elif defined(__redox__) + -+static GList * -+_g_get_unix_mount_points (void) -+{ -+ /* Not implemented */ -+ return NULL; -+} -+ +static GUnixMountPoint ** +_g_unix_mount_points_get_from_file (const char *table_path, + uint64_t *time_read_out, + size_t *n_points_out) +{ -+ /* Not implemented */ ++ /* Not supported on Redox. */ + if (time_read_out != NULL) + *time_read_out = 0; + if (n_points_out != NULL) - *n_points_out = 0; - return NULL; - } ++ *n_points_out = 0; ++ return NULL; ++} ++ ++static GList * ++_g_get_unix_mount_points (void) ++{ ++ /* Not supported on Redox. */ ++ return NULL; ++} ++ + /* Common code {{{2 */ + #else + #error No g_get_mount_table() implementation for system diff -ruwN source-old/gio/meson.build source/gio/meson.build ---- source-old/gio/meson.build 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/meson.build 2025-11-07 15:26:45.594120270 -0700 +--- source-old/gio/meson.build 2025-11-03 05:42:10.000000000 -0700 ++++ source/gio/meson.build 2025-11-10 12:32:05.828195962 -0700 @@ -18,7 +18,7 @@ gnetworking_h_nameser_compat_include = '' @@ -209,15 +132,38 @@ diff -ruwN source-old/gio/meson.build source/gio/meson.build # res_query() res_query_test = '''#include int main (int argc, char ** argv) { -diff -ruwN source-old/gio/xdgmime/xdgmimecache.c source/gio/xdgmime/xdgmimecache.c ---- source-old/gio/xdgmime/xdgmimecache.c 2025-02-20 06:08:16.000000000 -0700 -+++ source/gio/xdgmime/xdgmimecache.c 2025-11-07 15:26:45.594369348 -0700 -@@ -22,7 +22,7 @@ - #include - #include +diff -ruwN source-old/glib/glib-unix.c source/glib/glib-unix.c +--- source-old/glib/glib-unix.c 2025-11-03 05:42:10.000000000 -0700 ++++ source/glib/glib-unix.c 2025-11-10 12:32:05.828400637 -0700 +@@ -74,6 +74,10 @@ + #include + #endif /* defined (__FreeBSD__ )*/ --#include /* for ntohl/ntohs */ -+#include /* for ntohl/ntohs */ - - #ifdef HAVE_MMAP - #include ++#if defined(__redox__) ++#include ++#endif ++ + G_STATIC_ASSERT (sizeof (ssize_t) == GLIB_SIZEOF_SSIZE_T); + G_STATIC_ASSERT (G_ALIGNOF (gssize) == G_ALIGNOF (ssize_t)); + G_STATIC_ASSERT (G_SIGNEDNESS_OF (ssize_t) == 1); +@@ -1004,6 +1008,20 @@ + g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_NOSYS, + "g_unix_fd_query_path() not supported on HURD"); + return NULL; ++#elif defined(__redox__) ++ char file_path[PATH_MAX] = {0}; ++ ++ if (redox_fpath (fd, file_path, PATH_MAX) < 0) ++ { ++ int errsv = errno; ++ ++ g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errsv), ++ "Error querying file information for FD %d: %s", ++ fd, g_strerror (errsv)); ++ return NULL; ++ } ++ ++ return g_strdup (file_path); + #else + #error "g_unix_fd_query_path() not supported on this platform" + #endif From 8e492423c158c1534bdcdde42ef1cb58ee3ec180 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 10 Nov 2025 12:38:08 -0700 Subject: [PATCH 3088/3180] glib: rebase SO_PEERCRED support --- recipes/libs/glib/redox.patch | 68 +++++++++++++++++++++++++++++++---- 1 file changed, 61 insertions(+), 7 deletions(-) diff --git a/recipes/libs/glib/redox.patch b/recipes/libs/glib/redox.patch index fb632d43..47f8a2fe 100644 --- a/recipes/libs/glib/redox.patch +++ b/recipes/libs/glib/redox.patch @@ -1,6 +1,6 @@ diff -ruwN source-old/fuzzing/fuzz_resolver.c source/fuzzing/fuzz_resolver.c --- source-old/fuzzing/fuzz_resolver.c 2025-11-03 05:42:10.000000000 -0700 -+++ source/fuzzing/fuzz_resolver.c 2025-11-10 12:32:52.477409492 -0700 ++++ source/fuzzing/fuzz_resolver.c 2025-11-10 12:32:57.663974728 -0700 @@ -29,7 +29,7 @@ gint rrtype) { @@ -10,9 +10,21 @@ diff -ruwN source-old/fuzzing/fuzz_resolver.c source/fuzzing/fuzz_resolver.c GList *record_list = NULL; /* Data too long? */ +diff -ruwN source-old/gio/gcredentialsprivate.h source/gio/gcredentialsprivate.h +--- source-old/gio/gcredentialsprivate.h 2025-11-03 05:42:10.000000000 -0700 ++++ source/gio/gcredentialsprivate.h 2025-11-10 12:35:09.114747806 -0700 +@@ -104,7 +104,7 @@ + */ + #undef G_CREDENTIALS_HAS_PID + +-#ifdef __linux__ ++#if defined(__linux__) || defined(__redox__) + #define G_CREDENTIALS_SUPPORTED 1 + #define G_CREDENTIALS_USE_LINUX_UCRED 1 + #define G_CREDENTIALS_NATIVE_TYPE G_CREDENTIALS_TYPE_LINUX_UCRED diff -ruwN source-old/gio/glocalfile.c source/gio/glocalfile.c --- source-old/gio/glocalfile.c 2025-11-03 05:42:10.000000000 -0700 -+++ source/gio/glocalfile.c 2025-11-10 12:32:05.826947018 -0700 ++++ source/gio/glocalfile.c 2025-11-10 12:32:57.664235788 -0700 @@ -47,6 +47,10 @@ #include #endif @@ -26,7 +38,7 @@ diff -ruwN source-old/gio/glocalfile.c source/gio/glocalfile.c #endif diff -ruwN source-old/gio/gnetworking.h.in source/gio/gnetworking.h.in --- source-old/gio/gnetworking.h.in 2025-11-03 05:42:10.000000000 -0700 -+++ source/gio/gnetworking.h.in 2025-11-10 12:32:05.827234357 -0700 ++++ source/gio/gnetworking.h.in 2025-11-10 12:32:57.664602707 -0700 @@ -40,13 +40,17 @@ #include #include @@ -47,7 +59,7 @@ diff -ruwN source-old/gio/gnetworking.h.in source/gio/gnetworking.h.in #ifndef __GI_SCANNER__ diff -ruwN source-old/gio/gthreadedresolver.c source/gio/gthreadedresolver.c --- source-old/gio/gthreadedresolver.c 2025-11-03 05:42:10.000000000 -0700 -+++ source/gio/gthreadedresolver.c 2025-11-10 12:32:05.827396051 -0700 ++++ source/gio/gthreadedresolver.c 2025-11-10 12:32:57.664870630 -0700 @@ -698,7 +698,7 @@ } @@ -70,9 +82,39 @@ diff -ruwN source-old/gio/gthreadedresolver.c source/gio/gthreadedresolver.c gint len = 512; gint herr; GByteArray *answer; +diff -ruwN source-old/gio/gunixconnection.c source/gio/gunixconnection.c +--- source-old/gio/gunixconnection.c 2025-11-03 05:42:10.000000000 -0700 ++++ source/gio/gunixconnection.c 2025-11-10 12:36:14.017908505 -0700 +@@ -496,7 +496,7 @@ + GSocket *socket; + gint n; + gssize num_bytes_read; +-#ifdef __linux__ ++#if defined(__linux__) || defined(__redox__) + gboolean turn_off_so_passcreds; + #endif + +@@ -512,7 +512,7 @@ + * already. We also need to turn it off when we're done. See + * #617483 for more discussion. + */ +-#ifdef __linux__ ++#if defined(__linux__) || defined(__redox__) + { + gint opt_val; + +@@ -626,7 +626,7 @@ + + out: + +-#ifdef __linux__ ++#if defined(__linux__) || defined(__redox__) + if (turn_off_so_passcreds) + { + if (!g_socket_set_option (socket, diff -ruwN source-old/gio/gunixmounts.c source/gio/gunixmounts.c --- source-old/gio/gunixmounts.c 2025-11-03 05:42:10.000000000 -0700 -+++ source/gio/gunixmounts.c 2025-11-10 12:32:05.827736880 -0700 ++++ source/gio/gunixmounts.c 2025-11-10 12:32:57.665218112 -0700 @@ -1114,7 +1114,7 @@ } @@ -113,7 +155,7 @@ diff -ruwN source-old/gio/gunixmounts.c source/gio/gunixmounts.c #error No g_get_mount_table() implementation for system diff -ruwN source-old/gio/meson.build source/gio/meson.build --- source-old/gio/meson.build 2025-11-03 05:42:10.000000000 -0700 -+++ source/gio/meson.build 2025-11-10 12:32:05.828195962 -0700 ++++ source/gio/meson.build 2025-11-10 12:32:57.665641216 -0700 @@ -18,7 +18,7 @@ gnetworking_h_nameser_compat_include = '' @@ -132,9 +174,21 @@ diff -ruwN source-old/gio/meson.build source/gio/meson.build # res_query() res_query_test = '''#include int main (int argc, char ** argv) { +diff -ruwN source-old/gio/tests/gdbus-server-auth.c source/gio/tests/gdbus-server-auth.c +--- source-old/gio/tests/gdbus-server-auth.c 2025-11-03 05:42:10.000000000 -0700 ++++ source/gio/tests/gdbus-server-auth.c 2025-11-10 12:36:39.750972219 -0700 +@@ -243,7 +243,7 @@ + } + else /* We should prefer EXTERNAL whenever it is allowed. */ + { +-#ifdef __linux__ ++#if defined(__linux__) || defined(__redox__) + /* We know that both GDBus and libdbus support full credentials-passing + * on Linux. */ + g_assert_cmpint (uid, ==, getuid ()); diff -ruwN source-old/glib/glib-unix.c source/glib/glib-unix.c --- source-old/glib/glib-unix.c 2025-11-03 05:42:10.000000000 -0700 -+++ source/glib/glib-unix.c 2025-11-10 12:32:05.828400637 -0700 ++++ source/glib/glib-unix.c 2025-11-10 12:32:57.665846181 -0700 @@ -74,6 +74,10 @@ #include #endif /* defined (__FreeBSD__ )*/ From 070ebb0c5229dc7c3fec2c8f705dc2d4453982e4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 10 Nov 2025 12:42:51 -0700 Subject: [PATCH 3089/3180] dbus: enable epoll support --- recipes/wip/services/dbus/recipe.toml | 2 +- recipes/wip/services/dbus/redox.patch | 26 +++++++++++++++++++++++--- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/recipes/wip/services/dbus/recipe.toml b/recipes/wip/services/dbus/recipe.toml index 6539ec16..4392363d 100644 --- a/recipes/wip/services/dbus/recipe.toml +++ b/recipes/wip/services/dbus/recipe.toml @@ -17,7 +17,7 @@ dependencies = [ template = "meson" mesonflags = [ #TODO: why does this require Linux? - "-Depoll=disabled", + "-Depoll=enabled", "-Dx11_autolaunch=enabled", "-Dverbose_mode=true", ] diff --git a/recipes/wip/services/dbus/redox.patch b/recipes/wip/services/dbus/redox.patch index a67279e1..a974ac55 100644 --- a/recipes/wip/services/dbus/redox.patch +++ b/recipes/wip/services/dbus/redox.patch @@ -1,7 +1,27 @@ +diff -ruwN source-old/dbus/dbus-pollable-set-epoll.c source/dbus/dbus-pollable-set-epoll.c +--- source-old/dbus/dbus-pollable-set-epoll.c 2025-02-27 09:29:06.000000000 -0700 ++++ source/dbus/dbus-pollable-set-epoll.c 2025-11-10 10:21:36.940618496 -0700 +@@ -30,7 +30,7 @@ + #include + #include + +-#ifndef __linux__ ++#if !defined(__linux__) && !defined(__redox__) + # error This file is for Linux epoll(4) + #endif + diff -ruwN source-old/dbus/dbus-sysdeps-unix.c source/dbus/dbus-sysdeps-unix.c --- source-old/dbus/dbus-sysdeps-unix.c 2025-02-27 09:29:06.000000000 -0700 -+++ source/dbus/dbus-sysdeps-unix.c 2025-10-30 10:39:53.344885840 -0600 -@@ -4962,6 +4962,11 @@ ++++ source/dbus/dbus-sysdeps-unix.c 2025-11-09 08:33:43.299893494 -0700 +@@ -2611,6 +2611,7 @@ + if (client_fd.fd < 0 && (errno == ENOSYS || errno == EINVAL)) + #endif + { ++ _dbus_verbose ("accept %d, %p, %p\n", listen_fd.fd, &addr, &addrlen); + client_fd.fd = accept (listen_fd.fd, &addr, &addrlen); + } + +@@ -4962,6 +4963,11 @@ void _dbus_close_all (void) { @@ -13,7 +33,7 @@ diff -ruwN source-old/dbus/dbus-sysdeps-unix.c source/dbus/dbus-sysdeps-unix.c #ifdef HAVE_CLOSE_RANGE if (close_range (3, INT_MAX, 0) == 0) return; -@@ -4981,6 +4986,11 @@ +@@ -4981,6 +4987,11 @@ void _dbus_fd_set_all_close_on_exec (void) { From 5e3d56678e90392feee01ea4b895ea64e836c388 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 10 Nov 2025 18:06:15 -0700 Subject: [PATCH 3090/3180] libgpg-error: manually generate syscfg header --- .../wip/libs/other/libgpg-error/recipe.toml | 34 +++++++++++++------ 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/recipes/wip/libs/other/libgpg-error/recipe.toml b/recipes/wip/libs/other/libgpg-error/recipe.toml index e3a6f895..58898a93 100644 --- a/recipes/wip/libs/other/libgpg-error/recipe.toml +++ b/recipes/wip/libs/other/libgpg-error/recipe.toml @@ -10,15 +10,29 @@ autotools_recursive_regenerate template = "custom" script = """ DYNAMIC_INIT -#TODO: this modifies the source -env \ - LOCK_ABI_VERSION=1 \ - host="${TARGET}" \ - ac_ext=c \ - ac_objext=o \ - AWK="$(which awk)" \ - "${COOKBOOK_SOURCE}/src/gen-lock-obj.sh" \ - > \ - "${COOKBOOK_SOURCE}/src/syscfg/lock-obj-pub.${TARGET}.h" + +cat > "${COOKBOOK_SOURCE}/src/syscfg/lock-obj-pub.${TARGET}.h" << EOF +## lock-obj-pub.x86_64-unknown-redox.h +## File created by gen-lock-obj.sh - DO NOT EDIT +## To be included by mkheader into gpg-error.h + +typedef struct +{ + long _vers; + union { + volatile char _priv[12]; + long _x_align; + long *_xp_align; + } u; +} gpgrt_lock_t; + +#define GPGRT_LOCK_INITIALIZER {1,{{}}} +## +## Local Variables: +## mode: c +## buffer-read-only: t +## End: +## +EOF cookbook_configure --enable-threads=posix """ From 8982691974ccacdee756d1518e7a2312210b2e7b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 10 Nov 2025 20:15:29 -0700 Subject: [PATCH 3091/3180] libxcomposite: fix compilation --- recipes/wip/x11/libxcomposite/recipe.toml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/recipes/wip/x11/libxcomposite/recipe.toml b/recipes/wip/x11/libxcomposite/recipe.toml index ff65809d..f2505378 100644 --- a/recipes/wip/x11/libxcomposite/recipe.toml +++ b/recipes/wip/x11/libxcomposite/recipe.toml @@ -1,9 +1,19 @@ #TODO make dependencies work [source] tar = "https://www.x.org/releases/individual/lib/libXcomposite-0.4.6.tar.xz" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + [build] -template = "configure" +template = "custom" dependencies = [ "libx11", + "libxfixes", "x11proto", ] +script = """ +DYNAMIC_INIT +cookbook_configure +""" From 3c018183d0d1a88cfd79da6115dbadec6fd8679e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 10 Nov 2025 20:44:11 -0700 Subject: [PATCH 3092/3180] gnutls3: compile dynamically and add brotli, zlib, and zstd support --- recipes/wip/libs/tls/gnutls3/recipe.toml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/wip/libs/tls/gnutls3/recipe.toml b/recipes/wip/libs/tls/gnutls3/recipe.toml index 551f9414..f94d1261 100644 --- a/recipes/wip/libs/tls/gnutls3/recipe.toml +++ b/recipes/wip/libs/tls/gnutls3/recipe.toml @@ -1,17 +1,19 @@ -#TODO: needs sendmsg [source] tar = "https://www.gnupg.org/ftp/gcrypt/gnutls/v3.7/gnutls-3.7.10.tar.xz" blake3 = "edcd8a505867226722ae50e0e9bb2bf57a1f38b5674a3028e26f69d2d61957e6" script = """ DYNAMIC_INIT -#TODO autotools_recursive_regenerate +autotools_recursive_regenerate """ [build] template = "custom" dependencies = [ + "libbrotli", "libgmp", "libnettle", + "zlib", + "zstd", ] script = """ DYNAMIC_INIT @@ -19,6 +21,7 @@ COOKBOOK_CONFIGURE_FLAGS+=( --with-included-libtasn1 --with-included-unistring --without-p11-kit + gl_cv_func_malloc_posix=no gl_cv_socket_ipv6=no ) cookbook_configure From 363d48a55c590022c9dfea8830c45b5e0fa457eb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 10 Nov 2025 20:44:48 -0700 Subject: [PATCH 3093/3180] Add glib-networking --- .../wip/libs/net/glib-networking/recipe.toml | 18 ++++++++++++++++++ .../wip/libs/net/glib-networking/redox.patch | 12 ++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 recipes/wip/libs/net/glib-networking/recipe.toml create mode 100644 recipes/wip/libs/net/glib-networking/redox.patch diff --git a/recipes/wip/libs/net/glib-networking/recipe.toml b/recipes/wip/libs/net/glib-networking/recipe.toml new file mode 100644 index 00000000..f5cb23d8 --- /dev/null +++ b/recipes/wip/libs/net/glib-networking/recipe.toml @@ -0,0 +1,18 @@ +[source] +tar = "https://download.gnome.org/sources/glib-networking/2.80/glib-networking-2.80.1.tar.xz" +blake3 = "114a3ea41ea33d8cd01a61381b49fbf60278212ddd88c65f70c26137217be3fd" +patches = ["redox.patch"] + +[build] +template = "custom" +dependencies = [ + "glib", + "gnutls3", +] +script = """ +DYNAMIC_INIT +cookbook_meson \ + -Ddefault_library=shared \ + -Dgnome_proxy=disabled \ + -Dlibproxy=disabled +""" diff --git a/recipes/wip/libs/net/glib-networking/redox.patch b/recipes/wip/libs/net/glib-networking/redox.patch new file mode 100644 index 00000000..b0aaeb43 --- /dev/null +++ b/recipes/wip/libs/net/glib-networking/redox.patch @@ -0,0 +1,12 @@ +diff -ruwN source-old/tls/tests/meson.build source/tls/tests/meson.build +--- source-old/tls/tests/meson.build 2025-01-08 14:51:06.000000000 -0700 ++++ source/tls/tests/meson.build 2025-11-10 20:33:28.041098208 -0700 +@@ -40,7 +40,7 @@ + test_programs = [ + ['certificate', [], deps, [], [mock_pkcs11_module]], + ['file-database', [], deps, [], []], +- ['connection', ['mock-interaction.c'], deps, [], [mock_pkcs11_module]], ++ #TODO: RTLD_NEXT on Redox: ['connection', ['mock-interaction.c'], deps, [], [mock_pkcs11_module]], + # DTLS tests are disabled until we fix https://gitlab.gnome.org/GNOME/glib-networking/issues/49 + # ['dtls-connection', ['mock-interaction.c', 'lossy-socket.c'], deps, [], [mock_pkcs11_module]], + ] From 04769573ef1e05524fbc169efece5a82f3b8f7f7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 10 Nov 2025 20:46:51 -0700 Subject: [PATCH 3094/3180] webkitgtk3: depend on glib-networking --- recipes/wip/libs/other/webkitgtk3/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/wip/libs/other/webkitgtk3/recipe.toml b/recipes/wip/libs/other/webkitgtk3/recipe.toml index e8091182..7eb8329f 100644 --- a/recipes/wip/libs/other/webkitgtk3/recipe.toml +++ b/recipes/wip/libs/other/webkitgtk3/recipe.toml @@ -110,3 +110,6 @@ patchelf --replace-needed "${COOKBOOK_SYSROOT}/usr/lib/libsqlite3.so" "libsqlite mkdir -p "${COOKBOOK_STAGE}/usr/bin" ln -sr "${COOKBOOK_STAGE}/usr/libexec/webkit2gtk-4.1/MiniBrowser" "${COOKBOOK_STAGE}/usr/bin/MiniBrowser" """ + +[package] +dependencies = ["glib-networking"] From 9f3cf503292ec49f970104f2d6f7a3b55eaed530 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 12 Nov 2025 12:16:16 -0700 Subject: [PATCH 3095/3180] Extract source tarballs with --no-same-owner --- src/cook/fetch.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/cook/fetch.rs b/src/cook/fetch.rs index 021ea71c..eca04b0c 100644 --- a/src/cook/fetch.rs +++ b/src/cook/fetch.rs @@ -369,6 +369,7 @@ pub(crate) fn fetch_extract_tar( command.arg(if verbose { "xvf" } else { "xf" }); } else { command.arg("--extract"); + command.arg("--no-same-owner"); if verbose { command.arg("--verbose"); } From 1b278e5324bea326b2eeb99015627d0b20da48ed Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 13 Nov 2025 03:24:54 -0300 Subject: [PATCH 3096/3180] Add recipes --- recipes/wip/doc/bookokrat/recipe.toml | 5 +++++ recipes/wip/net/admin/webmin/recipe.toml | 10 ++++++++++ recipes/wip/office/xleak/recipe.toml | 5 +++++ 3 files changed, 20 insertions(+) create mode 100644 recipes/wip/doc/bookokrat/recipe.toml create mode 100644 recipes/wip/net/admin/webmin/recipe.toml create mode 100644 recipes/wip/office/xleak/recipe.toml diff --git a/recipes/wip/doc/bookokrat/recipe.toml b/recipes/wip/doc/bookokrat/recipe.toml new file mode 100644 index 00000000..62f58975 --- /dev/null +++ b/recipes/wip/doc/bookokrat/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/bugzmanov/bookokrat" +[build] +template = "cargo" diff --git a/recipes/wip/net/admin/webmin/recipe.toml b/recipes/wip/net/admin/webmin/recipe.toml new file mode 100644 index 00000000..65429745 --- /dev/null +++ b/recipes/wip/net/admin/webmin/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +# how to setup: https://webmin.com/download/#freebsd-and-any-other-linux-installation-from-source +[source] +tar = "https://github.com/webmin/webmin/releases/download/2.600/webmin-2.600-minimal.tar.gz" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}/home/user/webmin" +cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/home/user/webmin" +""" diff --git a/recipes/wip/office/xleak/recipe.toml b/recipes/wip/office/xleak/recipe.toml new file mode 100644 index 00000000..5f4653a6 --- /dev/null +++ b/recipes/wip/office/xleak/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/bgreenwell/xleak" +[build] +template = "cargo" From 0925abc5af6a3bf59608101b0e207a174f4805a9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 13 Nov 2025 05:24:13 -0300 Subject: [PATCH 3097/3180] Update recipes and TODOs --- recipes/wip/libs/qt5/qt5-base/recipe.toml | 12 ++------ recipes/wip/libs/qt5/qt5-full/recipe.toml | 24 ++++++++++++---- recipes/wip/libs/qt6/qt6-base/recipe.toml | 12 ++------ recipes/wip/libs/qt6/qt6-full/recipe.toml | 28 +++++++++++++++++-- recipes/wip/net/chat/iamb/recipe.toml | 2 +- .../net/download/anime-downloader/recipe.toml | 2 +- .../net/download/rusty-psn-cli/recipe.toml | 2 +- .../net/download/rusty-psn-gui/recipe.toml | 2 +- recipes/wip/net/other/slumber/recipe.toml | 2 +- recipes/wip/net/remote/sanzu/recipe.toml | 2 +- .../libreoffice-dictionaries/recipe.toml | 2 +- .../libreoffice-translations/recipe.toml | 2 +- recipes/wip/office/libreoffice/recipe.toml | 25 ++++++++--------- 13 files changed, 68 insertions(+), 49 deletions(-) diff --git a/recipes/wip/libs/qt5/qt5-base/recipe.toml b/recipes/wip/libs/qt5/qt5-base/recipe.toml index 4ee45eea..5543d5de 100644 --- a/recipes/wip/libs/qt5/qt5-base/recipe.toml +++ b/recipes/wip/libs/qt5/qt5-base/recipe.toml @@ -1,14 +1,6 @@ -#TODO make libxkbcommon work -#TODO port to Orbital -#TODO build instructions - https://doc.qt.io/qt-5/linux-building.html -#TODO customization - https://doc.qt.io/qt-5/configure-options.html +#TODO not compiled or tested +#TODO determine dependencies [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtbase-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" -dependencies = [ - "fontconfig", - "freetype2", - "mesa", - "libxkbcommon", -] diff --git a/recipes/wip/libs/qt5/qt5-full/recipe.toml b/recipes/wip/libs/qt5/qt5-full/recipe.toml index 238eafcb..9a2489de 100644 --- a/recipes/wip/libs/qt5/qt5-full/recipe.toml +++ b/recipes/wip/libs/qt5/qt5-full/recipe.toml @@ -1,13 +1,27 @@ -#TODO port to Orbital -#TODO build instructions - https://doc.qt.io/qt-5/linux-building.html -#TODO customization - https://doc.qt.io/qt-5/configure-options.html +#TODO not compiled or tested +# probably missing dependencies: https://doc.qt.io/archives/qt-5.15/linux-requirements.html +# build instructions: https://doc.qt.io/qt-5/linux-building.html +# customization: https://doc.qt.io/qt-5/configure-options.html [source] -tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/single/qt-everywhere-opensource-src-5.15.11.tar.xz" +tar = "https://download.qt.io/official_releases/qt/5.15/5.15.18/single/qt-everywhere-opensource-src-5.15.18.tar.xz" [build] template = "configure" +configureflags = [ + "-no-opengl", + "-no-feature-accessibility", +] dependencies = [ "fontconfig", "freetype2", - "mesa", + #"mesa", "libxkbcommon", + "libxcb", + "libx11", + "libxrender", + "libxext", + "libxfixes", + "libsm", + "libice", + "glib", + "gstreamer", ] diff --git a/recipes/wip/libs/qt6/qt6-base/recipe.toml b/recipes/wip/libs/qt6/qt6-base/recipe.toml index c470068c..483f0a83 100644 --- a/recipes/wip/libs/qt6/qt6-base/recipe.toml +++ b/recipes/wip/libs/qt6/qt6-base/recipe.toml @@ -1,14 +1,6 @@ -#TODO make libxkbcommon work -#TODO port to Orbital -#TODO build instructions - https://doc.qt.io/qt-6/linux-building.html -#TODO customization - https://doc.qt.io/qt-6/configure-options.html +#TODO not compiled or tested +#TODO determine dependencies [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtbase-everywhere-src-6.6.1.tar.xz" [build] template = "configure" -dependencies = [ - "fontconfig", - "freetype2", - "mesa", - "libxkbcommon", -] diff --git a/recipes/wip/libs/qt6/qt6-full/recipe.toml b/recipes/wip/libs/qt6/qt6-full/recipe.toml index feecc13a..008ee427 100644 --- a/recipes/wip/libs/qt6/qt6-full/recipe.toml +++ b/recipes/wip/libs/qt6/qt6-full/recipe.toml @@ -1,12 +1,34 @@ #TODO not compiled or tested # probably wrong template +# build instructions: https://doc.qt.io/qt-6/linux-building.html +# customization: https://doc.qt.io/qt-6/configure-options.html [source] -tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/single/qt-everywhere-src-6.6.1.tar.xz" +tar = "https://download.qt.io/official_releases/qt/6.10/6.10.0/single/qt-everywhere-src-6.10.0.tar.xz" [build] -template = "cmake" +template = "custom" dependencies = [ "fontconfig", "freetype2", - "mesa", + #"mesa", "libxkbcommon", + "libxcb", + "libx11", + "libxrender", + "libxext", + "libxfixes", + "libsm", + "libice", + "glib", + "gstreamer", + "openssl3", ] +script = """ +DYNAMIC_INIT +COOKBOOK_CONFIGURE_FLAGS+=( + -no-opengl + -no-feature-accessibility + -openssl-linked +) +cookbook_configure +cookbook_cmake +""" diff --git a/recipes/wip/net/chat/iamb/recipe.toml b/recipes/wip/net/chat/iamb/recipe.toml index 03934316..35120e3c 100644 --- a/recipes/wip/net/chat/iamb/recipe.toml +++ b/recipes/wip/net/chat/iamb/recipe.toml @@ -1,4 +1,4 @@ -#TODO port to orbital (after a patch on ring) +#TODO not compiled or tested [source] git = "https://github.com/ulyssa/iamb" [build] diff --git a/recipes/wip/net/download/anime-downloader/recipe.toml b/recipes/wip/net/download/anime-downloader/recipe.toml index 5c9b93fd..72ac5ab9 100644 --- a/recipes/wip/net/download/anime-downloader/recipe.toml +++ b/recipes/wip/net/download/anime-downloader/recipe.toml @@ -1,4 +1,4 @@ -#TODO port to Orbital +#TODO not compiled or tested [source] git = "https://github.com/B0SEmc/Anime-Downloader" [build] diff --git a/recipes/wip/net/download/rusty-psn-cli/recipe.toml b/recipes/wip/net/download/rusty-psn-cli/recipe.toml index 9306f067..587821f8 100644 --- a/recipes/wip/net/download/rusty-psn-cli/recipe.toml +++ b/recipes/wip/net/download/rusty-psn-cli/recipe.toml @@ -1,4 +1,4 @@ -#TODO port to Orbital +#TODO not compiled or tested [source] git = "https://github.com/RainbowCookie32/rusty-psn" [build] diff --git a/recipes/wip/net/download/rusty-psn-gui/recipe.toml b/recipes/wip/net/download/rusty-psn-gui/recipe.toml index 40478c79..b4c26086 100644 --- a/recipes/wip/net/download/rusty-psn-gui/recipe.toml +++ b/recipes/wip/net/download/rusty-psn-gui/recipe.toml @@ -1,4 +1,4 @@ -#TODO port to Orbital +#TODO not compiled or tested [source] git = "https://github.com/RainbowCookie32/rusty-psn" [build] diff --git a/recipes/wip/net/other/slumber/recipe.toml b/recipes/wip/net/other/slumber/recipe.toml index cae7f660..1ed5edbc 100644 --- a/recipes/wip/net/other/slumber/recipe.toml +++ b/recipes/wip/net/other/slumber/recipe.toml @@ -1,4 +1,4 @@ -#TODO port to Orbital +#TODO not compiled or tested [source] git = "https://github.com/LucasPickering/slumber" [build] diff --git a/recipes/wip/net/remote/sanzu/recipe.toml b/recipes/wip/net/remote/sanzu/recipe.toml index 2ec5b9a3..6c7dd71b 100644 --- a/recipes/wip/net/remote/sanzu/recipe.toml +++ b/recipes/wip/net/remote/sanzu/recipe.toml @@ -1,4 +1,4 @@ -#TODO port to orbital +#TODO not compiled or tested [source] git = "https://github.com/cea-sec/sanzu" [build] diff --git a/recipes/wip/office/libreoffice-dictionaries/recipe.toml b/recipes/wip/office/libreoffice-dictionaries/recipe.toml index c3fd184b..d8c4eac9 100644 --- a/recipes/wip/office/libreoffice-dictionaries/recipe.toml +++ b/recipes/wip/office/libreoffice-dictionaries/recipe.toml @@ -1,5 +1,5 @@ #TODO probably wrong template [source] -tar = "https://download.documentfoundation.org/libreoffice/src/7.6.2/libreoffice-dictionaries-7.6.2.1.tar.xz?idx=2" +tar = "https://download.documentfoundation.org/libreoffice/src/25.8.2/libreoffice-dictionaries-25.8.2.2.tar.xz" [build] template = "configure" diff --git a/recipes/wip/office/libreoffice-translations/recipe.toml b/recipes/wip/office/libreoffice-translations/recipe.toml index b824492f..d1823c86 100644 --- a/recipes/wip/office/libreoffice-translations/recipe.toml +++ b/recipes/wip/office/libreoffice-translations/recipe.toml @@ -1,5 +1,5 @@ #TODO probably wrong template [source] -tar = "https://download.documentfoundation.org/libreoffice/src/7.6.2/libreoffice-translations-7.6.2.1.tar.xz?idx=4" +tar = "https://download.documentfoundation.org/libreoffice/src/25.8.2/libreoffice-translations-25.8.2.2.tar.xz" [build] template = "configure" diff --git a/recipes/wip/office/libreoffice/recipe.toml b/recipes/wip/office/libreoffice/recipe.toml index 976ee216..58922697 100644 --- a/recipes/wip/office/libreoffice/recipe.toml +++ b/recipes/wip/office/libreoffice/recipe.toml @@ -1,16 +1,15 @@ -#TODO missing dependencies, see https://wiki.documentfoundation.org/Development/BuildingOnLinux#Build_dependencies -#TODO port to orbital +#TODO determine minimum dependencies +# dependencies reference: https://wiki.documentfoundation.org/Development/BuildingOnLinux#Build_dependencies [source] -tar = "https://download.documentfoundation.org/libreoffice/src/7.6.2/libreoffice-7.6.2.1.tar.xz?idx=1" +tar = "https://download.documentfoundation.org/libreoffice/src/25.8.2/libreoffice-25.8.2.2.tar.xz" [build] template = "configure" -dependencies = [ - "kerberos5", - "python37", - "qt5-base", - "gtk3", - "nss", - "fontconfig", - "gstreamer", - "libcups", -] +#dependencies = [ +# "kerberos5", +# "qt5-base", +# "gtk3", +# "nss", +# "fontconfig", +# "gstreamer", +# "libcups", +#] From 2265d71a468254df3f098f17fd918c4d40f2e06d Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 13 Nov 2025 06:12:04 -0300 Subject: [PATCH 3098/3180] Recipe fixes and update TODOs --- recipes/wip/security/angryoxide/recipe.toml | 4 ++-- recipes/wip/security/cotp/recipe.toml | 8 +++++-- recipes/wip/security/motus/recipe.toml | 2 +- recipes/wip/services/runst/recipe.toml | 8 +++++-- recipes/wip/sound/pcmg/recipe.toml | 8 ++++--- recipes/wip/terminal/alacritty/recipe.toml | 16 ++++++++++++-- recipes/wip/terminal/wezterm/recipe.toml | 24 ++++++++++++++++----- recipes/wip/tools/atuin/recipe.toml | 2 +- recipes/wip/tools/birdy/recipe.toml | 2 +- recipes/wip/tools/bvr/recipe.toml | 2 +- 10 files changed, 56 insertions(+), 20 deletions(-) diff --git a/recipes/wip/security/angryoxide/recipe.toml b/recipes/wip/security/angryoxide/recipe.toml index 6363cae7..6f6924f6 100644 --- a/recipes/wip/security/angryoxide/recipe.toml +++ b/recipes/wip/security/angryoxide/recipe.toml @@ -1,5 +1,5 @@ -#TODO port to Orbital -#TODO in case of errors, read https://github.com/Ragnt/AngryOxide#building-from-source +#TODO not compiled or tested +# build instructions: https://github.com/Ragnt/AngryOxide#building-from-source [source] git = "https://github.com/Ragnt/AngryOxide" [build] diff --git a/recipes/wip/security/cotp/recipe.toml b/recipes/wip/security/cotp/recipe.toml index db61713b..70abd202 100644 --- a/recipes/wip/security/cotp/recipe.toml +++ b/recipes/wip/security/cotp/recipe.toml @@ -1,8 +1,12 @@ -#TODO port to orbital +#TODO not compiled or tested [source] git = "https://github.com/replydev/cotp" [build] -template = "cargo" +template = "custom" dependencies = [ "libxkbcommon", ] +script = """ +DYNAMIC_INIT +cookbook_cargo +""" diff --git a/recipes/wip/security/motus/recipe.toml b/recipes/wip/security/motus/recipe.toml index f42ede33..f5067eed 100644 --- a/recipes/wip/security/motus/recipe.toml +++ b/recipes/wip/security/motus/recipe.toml @@ -1,4 +1,4 @@ -#TODO port to orbital +#TODO not compiled or tested [source] git = "https://github.com/oleiade/motus" [build] diff --git a/recipes/wip/services/runst/recipe.toml b/recipes/wip/services/runst/recipe.toml index 85601331..f57603ae 100644 --- a/recipes/wip/services/runst/recipe.toml +++ b/recipes/wip/services/runst/recipe.toml @@ -1,9 +1,13 @@ -#TODO port to Orbital +#TODO not compiled or tested [source] git = "https://github.com/orhun/runst" [build] -template = "cargo" +template = "custom" dependencies = [ "glib", "pango", ] +script = """ +DYNAMIC_INIT +cookbook_cargo +""" diff --git a/recipes/wip/sound/pcmg/recipe.toml b/recipes/wip/sound/pcmg/recipe.toml index 542b7cce..4a8287d6 100644 --- a/recipes/wip/sound/pcmg/recipe.toml +++ b/recipes/wip/sound/pcmg/recipe.toml @@ -1,6 +1,8 @@ -#TODO port to orbital -#TODO require WebAssembly +#TODO not compiled or tested [source] git = "https://github.com/JohnDowson/pcmg" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages pcmg +""" diff --git a/recipes/wip/terminal/alacritty/recipe.toml b/recipes/wip/terminal/alacritty/recipe.toml index cec03b86..f2cc8562 100644 --- a/recipes/wip/terminal/alacritty/recipe.toml +++ b/recipes/wip/terminal/alacritty/recipe.toml @@ -1,4 +1,4 @@ -#TODO port to Orbital +#TODO not compiled or tested [source] git = "https://github.com/alacritty/alacritty" [build] @@ -6,7 +6,19 @@ template = "custom" dependencies = [ "freetype2", "fontconfig", + "libxcb", ] script = """ -cookbook_cargo_packages alacritty +DYNAMIC_INIT +package=alacritty +"${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --package "${package}" \ + --release \ + --no-default-features \ + --features=x11 + mkdir -pv "${COOKBOOK_STAGE}/usr/bin" + cp -v \ + "target/${TARGET}/release/${package}" \ + "${COOKBOOK_STAGE}/usr/bin/${package}" """ diff --git a/recipes/wip/terminal/wezterm/recipe.toml b/recipes/wip/terminal/wezterm/recipe.toml index 80a7c0db..cdb8a3f3 100644 --- a/recipes/wip/terminal/wezterm/recipe.toml +++ b/recipes/wip/terminal/wezterm/recipe.toml @@ -1,16 +1,30 @@ -#TODO port to orbital -#TODO maybe missing dependencies, see https://github.com/wez/wezterm/blob/main/get-deps#L142 +#TODO not compiled or tested +# build instructions: https://wezterm.org/install/source.html +# dependencies reference: https://github.com/wez/wezterm/blob/main/get-deps#L149 [source] git = "https://github.com/wez/wezterm" +shallow_clone = true [build] template = "custom" dependencies = [ "mesa", "fontconfig", - "openssl1", + "openssl3", "libxkbcommon", + "libx11", + "libxcb", ] script = """ -./get-deps -cookbook_cargo_packages wezterm +DYNAMIC_INIT +package=wezterm +"${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --package "${package}" \ + --release \ + --no-default-features \ + --features=vendored-fonts + mkdir -pv "${COOKBOOK_STAGE}/usr/bin" + cp -v \ + "target/${TARGET}/release/${package}" \ + "${COOKBOOK_STAGE}/usr/bin/${package}" """ diff --git a/recipes/wip/tools/atuin/recipe.toml b/recipes/wip/tools/atuin/recipe.toml index a55fc5cd..98a69fd4 100644 --- a/recipes/wip/tools/atuin/recipe.toml +++ b/recipes/wip/tools/atuin/recipe.toml @@ -1,4 +1,4 @@ -#TODO port to orbital +#TODO not compiled or tested [source] git = "https://github.com/ellie/atuin" [build] diff --git a/recipes/wip/tools/birdy/recipe.toml b/recipes/wip/tools/birdy/recipe.toml index faeba89e..a4e65bdd 100644 --- a/recipes/wip/tools/birdy/recipe.toml +++ b/recipes/wip/tools/birdy/recipe.toml @@ -1,4 +1,4 @@ -#TODO port to Orbital +#TODO not compiled or tested [source] git = "https://github.com/kakoc/birdy" [build] diff --git a/recipes/wip/tools/bvr/recipe.toml b/recipes/wip/tools/bvr/recipe.toml index ef583d5d..06cf305f 100644 --- a/recipes/wip/tools/bvr/recipe.toml +++ b/recipes/wip/tools/bvr/recipe.toml @@ -1,4 +1,4 @@ -#TODO port to Orbital +#TODO not compiled or tested [source] git = "https://github.com/Avarel/bvr" [build] From d2bb65ed26259f06c1eb8ddca74053a46b50435c Mon Sep 17 00:00:00 2001 From: Wildan M Date: Thu, 13 Nov 2025 18:53:29 +0700 Subject: [PATCH 3099/3180] Fix recipe push stat --- src/bin/repo.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 341cd0e7..a111f5aa 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -654,7 +654,11 @@ fn handle_push(recipes: &Vec, config: &CliConfig) -> anyhow::Result< "", i == num_roots - 1, &match metadata { - Ok(m) => WalkTreeEntry::Built(&archive_path, m.len()), + Ok(m) => { + total_size += m.len(); + visited.insert(root.name.clone()); + WalkTreeEntry::Built(&archive_path, m.len()) + } Err(_) => WalkTreeEntry::NotBuilt, }, )?; From e08144b78542ee33566ce7e4984ab85d8a5fc76e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 13 Nov 2025 08:56:13 -0300 Subject: [PATCH 3100/3180] More recipe fixes and update TODOs --- recipes/wip/tools/atuin/recipe.toml | 2 +- recipes/wip/tools/cb/recipe.toml | 3 +-- recipes/wip/tools/clipcat/recipe.toml | 2 +- recipes/wip/tools/cute/recipe.toml | 10 +++++++--- recipes/wip/tools/espanso/recipe.toml | 24 +++++++++++++++++++---- recipes/wip/tools/menyoki/recipe.toml | 3 ++- recipes/wip/tools/sued/recipe.toml | 6 ++++-- recipes/wip/tools/t-rec/recipe.toml | 8 ++++++-- recipes/wip/tools/thwack/recipe.toml | 2 +- recipes/wip/tools/tp-note/recipe.toml | 14 +++++++++++-- recipes/wip/tools/tui-journal/recipe.toml | 10 +++++++--- recipes/wip/tools/weylus/recipe.toml | 18 +++++++++++++++-- 12 files changed, 78 insertions(+), 24 deletions(-) diff --git a/recipes/wip/tools/atuin/recipe.toml b/recipes/wip/tools/atuin/recipe.toml index 98a69fd4..a384160e 100644 --- a/recipes/wip/tools/atuin/recipe.toml +++ b/recipes/wip/tools/atuin/recipe.toml @@ -1,6 +1,6 @@ #TODO not compiled or tested [source] -git = "https://github.com/ellie/atuin" +git = "https://github.com/atuinsh/atuin" [build] template = "custom" script = """ diff --git a/recipes/wip/tools/cb/recipe.toml b/recipes/wip/tools/cb/recipe.toml index 16dd19db..ebb8b64c 100644 --- a/recipes/wip/tools/cb/recipe.toml +++ b/recipes/wip/tools/cb/recipe.toml @@ -1,5 +1,4 @@ -#TODO figure out how to build this, see https://github.com/yaa110/cb#build-manually -#TODO port to orbital +#TODO discover how to cross-compile: https://github.com/yaa110/cb#build-manually [source] git = "https://github.com/yaa110/cb" [build] diff --git a/recipes/wip/tools/clipcat/recipe.toml b/recipes/wip/tools/clipcat/recipe.toml index f1a12c1a..5aadd2d0 100644 --- a/recipes/wip/tools/clipcat/recipe.toml +++ b/recipes/wip/tools/clipcat/recipe.toml @@ -1,4 +1,4 @@ -#TODO port to Orbital +#TODO not compiled or tested [source] git = "https://github.com/xrelkd/clipcat" [build] diff --git a/recipes/wip/tools/cute/recipe.toml b/recipes/wip/tools/cute/recipe.toml index 82217cd6..f22dbe07 100644 --- a/recipes/wip/tools/cute/recipe.toml +++ b/recipes/wip/tools/cute/recipe.toml @@ -1,8 +1,12 @@ -#TODO port to orbital +#TODO not compiled or tested [source] git = "https://github.com/PThorpe92/CuTE" [build] -template = "cargo" +template = "custom" dependencies = [ - "openssl1", + "openssl3", ] +script = """ +DYNAMIC_INIT +cookbook_cargo +""" diff --git a/recipes/wip/tools/espanso/recipe.toml b/recipes/wip/tools/espanso/recipe.toml index 826c6c53..875badf6 100644 --- a/recipes/wip/tools/espanso/recipe.toml +++ b/recipes/wip/tools/espanso/recipe.toml @@ -1,5 +1,5 @@ -#TODO missing script for building, see https://espanso.org/docs/install/linux/#wayland-compile -#TODO port to orbital? +#TODO not compiled or tested +# build instructions: https://espanso.org/docs/install/linux/#x11-compile [source] git = "https://github.com/espanso/espanso" [build] @@ -7,6 +7,22 @@ template = "custom" dependencies = [ "libxkbcommon", "dbus", - "wxwidgets3", - "openssl1", + "wxwidgets-gtk3", + "openssl3", + "libx11", + "libxtst", ] +script = """ +DYNAMIC_INIT +package=espanso +"${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --package "${package}" \ + --release \ + --no-default-features \ + --features=vendored-tls,modulo + mkdir -pv "${COOKBOOK_STAGE}/usr/bin" + cp -v \ + "target/${TARGET}/release/${package}" \ + "${COOKBOOK_STAGE}/usr/bin/${package}" +""" diff --git a/recipes/wip/tools/menyoki/recipe.toml b/recipes/wip/tools/menyoki/recipe.toml index 79cdea7f..2a472563 100644 --- a/recipes/wip/tools/menyoki/recipe.toml +++ b/recipes/wip/tools/menyoki/recipe.toml @@ -1,4 +1,5 @@ -#TODO port to Orbital, see https://github.com/orhun/menyoki/blob/master/IMPLEMENTATION.md#implementing-for-other-platforms +#TODO not compiled or tested +# if the x11 backend don't work read this: https://github.com/orhun/menyoki/blob/master/IMPLEMENTATION.md#implementing-for-other-platforms [source] git = "https://github.com/orhun/menyoki" [build] diff --git a/recipes/wip/tools/sued/recipe.toml b/recipes/wip/tools/sued/recipe.toml index a399dac7..d88d7d6a 100644 --- a/recipes/wip/tools/sued/recipe.toml +++ b/recipes/wip/tools/sued/recipe.toml @@ -1,5 +1,7 @@ -#TODO port to orbital +#TODO not compiled or tested +# customization: https://codeberg.org/AeriaVelocity/sued#configuration [source] -git = "https://github.com/That1M8Head/sued" +git = "https://codeberg.org/AeriaVelocity/sued" [build] template = "cargo" +cargoflags = "--features=repl,startup,history" diff --git a/recipes/wip/tools/t-rec/recipe.toml b/recipes/wip/tools/t-rec/recipe.toml index 3bd231d5..e9d64b61 100644 --- a/recipes/wip/tools/t-rec/recipe.toml +++ b/recipes/wip/tools/t-rec/recipe.toml @@ -1,8 +1,12 @@ -#TODO port to orbital +#TODO not compiled or tested [source] git = "https://github.com/sassman/t-rec-rs" [build] -template = "cargo" +template = "custom" dependencies = [ "imagemagick", ] +script = """ +DYNAMIC_INIT +cookbook_cargo +""" diff --git a/recipes/wip/tools/thwack/recipe.toml b/recipes/wip/tools/thwack/recipe.toml index 5c1ddf26..5a77f72d 100644 --- a/recipes/wip/tools/thwack/recipe.toml +++ b/recipes/wip/tools/thwack/recipe.toml @@ -1,4 +1,4 @@ -#TODO port to Orbital +#TODO not compiled or tested [source] git = "https://github.com/yykamei/thwack" [build] diff --git a/recipes/wip/tools/tp-note/recipe.toml b/recipes/wip/tools/tp-note/recipe.toml index 3d8dd937..203abb5f 100644 --- a/recipes/wip/tools/tp-note/recipe.toml +++ b/recipes/wip/tools/tp-note/recipe.toml @@ -1,8 +1,18 @@ -#TODO port to Orbital +#TODO not compiled or tested [source] git = "https://gitlab.com/getreu/tp-note" [build] template = "custom" script = """ -cookbook_cargo_packages tpnote +package=tpnote +"${COOKBOOK_CARGO}" build \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + --package "${package}" \ + --release \ + --no-default-features \ + --features=lang-detection,renderer + mkdir -pv "${COOKBOOK_STAGE}/usr/bin" + cp -v \ + "target/${TARGET}/release/${package}" \ + "${COOKBOOK_STAGE}/usr/bin/${package}" """ diff --git a/recipes/wip/tools/tui-journal/recipe.toml b/recipes/wip/tools/tui-journal/recipe.toml index aad40ea0..a684ceca 100644 --- a/recipes/wip/tools/tui-journal/recipe.toml +++ b/recipes/wip/tools/tui-journal/recipe.toml @@ -1,9 +1,13 @@ -#TODO port to Orbital +#TODO not compiled or tested [source] git = "https://github.com/AmmarAbouZor/tui-journal" [build] -template = "cargo" +template = "custom" dependencies = [ - "openssl1", + "openssl3", "sqlite3", ] +script = """ +DYNAMIC_INIT +cookbook_cargo +""" \ No newline at end of file diff --git a/recipes/wip/tools/weylus/recipe.toml b/recipes/wip/tools/weylus/recipe.toml index 0135c10d..e3cdb5f2 100644 --- a/recipes/wip/tools/weylus/recipe.toml +++ b/recipes/wip/tools/weylus/recipe.toml @@ -1,5 +1,5 @@ -#TODO port to orbital -#TODO build instructions - https://github.com/H-M-H/Weylus#building +#TODO not compiled or tested +# build instructions: https://github.com/H-M-H/Weylus#building [source] git = "https://github.com/H-M-H/Weylus" [build] @@ -8,7 +8,21 @@ dependencies = [ "pango", "gstreamer", "dbus", + "libx11", + "libxext", + "libxft", + "libxinerama", + "libxcursor", + "libxfixes", + "libxtst", + "libxrandr", + "libxcomposite", + "libxv", + "libxi", + "libxrender", + "libdrm", ] script = """ +DYNAMIC_INIT cookbook_cargo_packages weylus """ From 5af936d35ff008b20968162a82a6c684fa0a3f9c Mon Sep 17 00:00:00 2001 From: Wildan M Date: Thu, 13 Nov 2025 18:57:38 +0700 Subject: [PATCH 3101/3180] Fix grammar --- src/bin/repo.rs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index a111f5aa..9cbc417b 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -668,9 +668,14 @@ fn handle_push(recipes: &Vec, config: &CliConfig) -> anyhow::Result< if config.cook.verbose { println!(""); println!( - "Pushed {} of {} packages", + "Pushed {} of {} {}", format_size(total_size), - visited.len() + visited.len(), + if visited.len() == 1 { + "package" + } else { + "packages" + }, ); } @@ -697,9 +702,14 @@ fn handle_tree(recipes: &Vec, _config: &CliConfig) -> anyhow::Result println!(""); println!( - "Estimated image size: {} of {} packages", + "Estimated image size: {} of {} {}", format_size(total_size), - visited.len() + visited.len(), + if visited.len() == 1 { + "package" + } else { + "packages" + }, ); Ok(()) From 995b9ea327047848c53327b7a01aab2eff4a8a16 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 13 Nov 2025 09:32:23 -0300 Subject: [PATCH 3102/3180] More recipe fixes and update TODOs --- recipes/wip/tui/heh/recipe.toml | 2 +- recipes/wip/tui/nyaa-rs/recipe.toml | 2 +- recipes/wip/tui/russ/recipe.toml | 2 +- recipes/wip/web/chromium/recipe.toml | 67 +++++++++++++++------------- 4 files changed, 40 insertions(+), 33 deletions(-) diff --git a/recipes/wip/tui/heh/recipe.toml b/recipes/wip/tui/heh/recipe.toml index 9ebaec0f..c7c3d655 100644 --- a/recipes/wip/tui/heh/recipe.toml +++ b/recipes/wip/tui/heh/recipe.toml @@ -1,4 +1,4 @@ -#TODO port to orbital +#TODO not compiled or tested [source] git = "https://github.com/ndd7xv/heh" [build] diff --git a/recipes/wip/tui/nyaa-rs/recipe.toml b/recipes/wip/tui/nyaa-rs/recipe.toml index 367a628b..d03bc813 100644 --- a/recipes/wip/tui/nyaa-rs/recipe.toml +++ b/recipes/wip/tui/nyaa-rs/recipe.toml @@ -1,4 +1,4 @@ -#TODO port to orbital +#TODO not compiled or tested [source] git = "https://github.com/Beastwick18/nyaa" [build] diff --git a/recipes/wip/tui/russ/recipe.toml b/recipes/wip/tui/russ/recipe.toml index 5852326f..dcc7368b 100644 --- a/recipes/wip/tui/russ/recipe.toml +++ b/recipes/wip/tui/russ/recipe.toml @@ -1,4 +1,4 @@ -#TODO port to orbital (after cargo update) +#TODO not compiled or tested [source] git = "https://github.com/ckampfe/russ" [build] diff --git a/recipes/wip/web/chromium/recipe.toml b/recipes/wip/web/chromium/recipe.toml index 7ded19fe..9401e19d 100644 --- a/recipes/wip/web/chromium/recipe.toml +++ b/recipes/wip/web/chromium/recipe.toml @@ -1,37 +1,44 @@ -#TODO missing script for building, see https://chromium.googlesource.com/chromium/src/+/main/docs/linux/build_instructions.md -#TODO port to orbital -#TODO probably missing dependencies +#TODO missing script for building: https://chromium.googlesource.com/chromium/src/+/main/docs/linux/build_instructions.md +#TODO determine minimum dependencies +# dependencies reference: +# https://chromium.googlesource.com/chromium/src/+/main/build/install-build-deps.py#214 +# https://chromium.googlesource.com/chromium/src/+/main/build/install-build-deps.py#355 [source] tar = "https://commondatastorage.googleapis.com/chromium-browser-official/chromium-119.0.6045.123.tar.xz" [build] template = "custom" -dependencies = [ - "gtk3", - "nss", - "xdg-utils", - "libgcrypt", - "dbus", - "libva", - "libffi", - "fontconfig", - "libjpeg", - "libflac", - "libxml2", - "ffmpeg6", - "libwebp", - "opus", - "harfbuzz", - "libpng", - "freetype2", - "bzip2", - "expat", - "glib", - "cairo", - "atk", - "libcap", - "pango", - "java21", -] +# dependencies = [ +# "gtk3", +# "nss", +# "nspr", +# "xdg-utils", +# "libgcrypt", +# "dbus", +# "libva", +# "libffi", +# "fontconfig", +# "libjpeg", +# "libflac", +# "libxml2", +# "ffmpeg6", +# "libwebp", +# "opus", +# "harfbuzz", +# "libpng", +# "freetype2", +# "bzip2", +# "expat", +# "glib", +# "cairo", +# "atk", +# "libcap", +# "pango", +# "java21", +# "libpulse", +# "libx11", +# "libxtst", +# "libxkbcommon", +# ] script = """ DYNAMIC_INIT """ From 5fa446577d7dff9830adabe255d8876dc0c542e9 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 13 Nov 2025 10:47:46 -0300 Subject: [PATCH 3103/3180] Add recipes --- recipes/wip/gui/slop/recipe.toml | 11 ++++++++ recipes/wip/web/basilisk/recipe.toml | 17 ++++++++++++ recipes/wip/web/firefox-esr/recipe.toml | 8 +++--- recipes/wip/web/librewolf/mozconfig | 3 +++ recipes/wip/web/librewolf/recipe.toml | 31 ++++++++++++++++++++++ recipes/wip/web/pale-moon/.mozconfig | 35 +++++++++++++++++++++++++ recipes/wip/web/pale-moon/recipe.toml | 18 +++++++++++++ 7 files changed, 118 insertions(+), 5 deletions(-) create mode 100644 recipes/wip/gui/slop/recipe.toml create mode 100644 recipes/wip/web/basilisk/recipe.toml create mode 100644 recipes/wip/web/librewolf/mozconfig create mode 100644 recipes/wip/web/librewolf/recipe.toml create mode 100644 recipes/wip/web/pale-moon/.mozconfig create mode 100644 recipes/wip/web/pale-moon/recipe.toml diff --git a/recipes/wip/gui/slop/recipe.toml b/recipes/wip/gui/slop/recipe.toml new file mode 100644 index 00000000..02bc370d --- /dev/null +++ b/recipes/wip/gui/slop/recipe.toml @@ -0,0 +1,11 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/naelstrof/slop" +rev = "v7.7" +[build] +template = "cmake" +dependencies = [ + "libxext", + "glew", + "libglm", +] diff --git a/recipes/wip/web/basilisk/recipe.toml b/recipes/wip/web/basilisk/recipe.toml new file mode 100644 index 00000000..49c97184 --- /dev/null +++ b/recipes/wip/web/basilisk/recipe.toml @@ -0,0 +1,17 @@ +#TODO determine build instructions: https://repo.palemoon.org/Basilisk-Dev/Basilisk/src/branch/master/build-scripts/linux/build_basilisk_subscripts/run_inside_docker.sh +# dependencies: https://basilisk-browser.org/requirements.html +[source] +tar = "https://dl.basilisk-browser.org/basilisk-2025.10.10-source.tar.xz" +[build] +template = "custom" +dependencies = [ + "gtk3", + "glib", + "pango", + "dbus", + "libalsa", + "libxt", + "openssl3", + "sqlite3", + "libpulse", +] diff --git a/recipes/wip/web/firefox-esr/recipe.toml b/recipes/wip/web/firefox-esr/recipe.toml index 09cdd84f..f27ac5e1 100644 --- a/recipes/wip/web/firefox-esr/recipe.toml +++ b/recipes/wip/web/firefox-esr/recipe.toml @@ -1,8 +1,6 @@ -#TODO finish the script with cross-compilaiton variables, see https://firefox-source-docs.mozilla.org/setup/linux_build.html -#TODO make all dependencies work -# some libraries are bundled, maybe some need to use the redox recipes -# dependencies - https://packages.gentoo.org/packages/www-client/firefox/dependencies -# feature flags reference - https://wiki.gentoo.org/wiki/Firefox#USE_flags +#TODO missing script for mach: https://firefox-source-docs.mozilla.org/setup/linux_build.html +# dependencies: https://packages.gentoo.org/packages/www-client/firefox/dependencies +# feature flags: https://wiki.gentoo.org/wiki/Firefox#USE_flags [source] tar = "https://ftp.mozilla.org/pub/firefox/releases/115.13.0esr/source/firefox-115.13.0esr.source.tar.xz" [build] diff --git a/recipes/wip/web/librewolf/mozconfig b/recipes/wip/web/librewolf/mozconfig new file mode 100644 index 00000000..8d2ce92d --- /dev/null +++ b/recipes/wip/web/librewolf/mozconfig @@ -0,0 +1,3 @@ +ac_add_options --disable-tests +ac_add_options --target="{TARGET}" +ac_add_options --enable-bootstrap diff --git a/recipes/wip/web/librewolf/recipe.toml b/recipes/wip/web/librewolf/recipe.toml new file mode 100644 index 00000000..02647b9d --- /dev/null +++ b/recipes/wip/web/librewolf/recipe.toml @@ -0,0 +1,31 @@ +#TODO missing script for mach: https://codeberg.org/librewolf/source#librewolf-build-instructions +# dependencies: https://packages.gentoo.org/packages/www-client/firefox/dependencies +# feature flags: https://wiki.gentoo.org/wiki/Firefox#USE_flags +[source] +tar = "https://gitlab.com/api/v4/projects/32320088/packages/generic/librewolf-source/144.0.2-1/librewolf-144.0.2-1.source.tar.gz" +[build] +template = "custom" +dependencies = [ + "fontconfig", + "atk", + "cairo", + "dbus", + "libffi", + "freetype2", + "gdk-pixbuf", + "glib", + "gtk3", + "pango", + "sqlite3", + "nss-nspr", + "startup-notification", + "zlib", + "ffmpeg6", + "expat", + "libepoxy", + "pipewire", +] +script = """ +DYNAMIC_INIT +export MOZCONFIG="${COOKBOOK_RECIPE}/mozconfig" +""" diff --git a/recipes/wip/web/pale-moon/.mozconfig b/recipes/wip/web/pale-moon/.mozconfig new file mode 100644 index 00000000..5d85067c --- /dev/null +++ b/recipes/wip/web/pale-moon/.mozconfig @@ -0,0 +1,35 @@ +# Clear this if not a 64bit build +_BUILD_64=1 + +# Set GTK Version to 2 or 3 +_GTK_VERSION=3 + +# Standard build options for Pale Moon +ac_add_options --enable-application=palemoon +ac_add_options --enable-optimize="-O2 -w" +ac_add_options --enable-default-toolkit=cairo-gtk$_GTK_VERSION +ac_add_options --enable-jemalloc +ac_add_options --enable-strip +ac_add_options --enable-devtools +ac_add_options --enable-av1 +ac_add_options --enable-jxl +ac_add_options --disable-webrtc +ac_add_options --disable-gamepad +ac_add_options --disable-tests +ac_add_options --disable-debug +ac_add_options --disable-necko-wifi +ac_add_options --disable-updater +ac_add_options --with-pthreads + +# Please see https://www.palemoon.org/redist.shtml for restrictions when using the official branding. +ac_add_options --enable-official-branding +export MOZILLA_OFFICIAL=1 + +# Processor architecture specific build options +if [ -n "$_BUILD_64" ]; then + ac_add_options --x-libraries=/usr/lib64 +else + ac_add_options --x-libraries=/usr/lib +fi + +export MOZ_PKG_SPECIAL=gtk$_GTK_VERSION \ No newline at end of file diff --git a/recipes/wip/web/pale-moon/recipe.toml b/recipes/wip/web/pale-moon/recipe.toml new file mode 100644 index 00000000..18aace63 --- /dev/null +++ b/recipes/wip/web/pale-moon/recipe.toml @@ -0,0 +1,18 @@ +#TODO missing script for mach: https://developer.palemoon.org/build/linux/ +[source] +tar = "https://repo.palemoon.org/MoonchildProductions/Pale-Moon/archive/33.9.1_Release.tar.gz" +[build] +template = "custom" +dependencies = [ + "gtk3", + "glib", + "pango", + "dbus", + "mesa", + "libxt", + "openssl1", + "sqlite3", + "libpulse", + "libalsa", + "libx11", +] From a4b7414bc3338d32d8a9377a602223d5697017f7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 13 Nov 2025 10:15:15 -0700 Subject: [PATCH 3104/3180] gtk3: support wayland --- recipes/wip/libs/gtk/gtk3/recipe.toml | 6 ++-- recipes/wip/libs/gtk/gtk3/redox.patch | 47 ++++++++++++++++++++++----- 2 files changed, 42 insertions(+), 11 deletions(-) diff --git a/recipes/wip/libs/gtk/gtk3/recipe.toml b/recipes/wip/libs/gtk/gtk3/recipe.toml index c268a354..44958e1a 100644 --- a/recipes/wip/libs/gtk/gtk3/recipe.toml +++ b/recipes/wip/libs/gtk/gtk3/recipe.toml @@ -23,8 +23,10 @@ dependencies = [ "libjpeg", "libpng", "libpthread-stubs", + "libwayland", "libx11", "libxau", + "libxkbcommon", "libxcb", "libxext", "libxfixes", @@ -37,6 +39,7 @@ dependencies = [ "pcre2", "pixman", "shared-mime-info", + "wayland-protocols", "x11proto", "zlib", ] @@ -45,6 +48,5 @@ script = """ DYNAMIC_INIT CFLAGS="${CFLAGS} -DM_SQRT2=1.41421356237309504880" cookbook_meson \ - -Dintrospection=false \ - -Dwayland_backend=false + -Dintrospection=false """ diff --git a/recipes/wip/libs/gtk/gtk3/redox.patch b/recipes/wip/libs/gtk/gtk3/redox.patch index dde080d7..6f6d523e 100644 --- a/recipes/wip/libs/gtk/gtk3/redox.patch +++ b/recipes/wip/libs/gtk/gtk3/redox.patch @@ -1,6 +1,35 @@ -diff -ruwN gtk+-3.24.43/gtk/a11y/gtkaccessibility.c source/gtk/a11y/gtkaccessibility.c ---- gtk+-3.24.43/gtk/a11y/gtkaccessibility.c 2024-07-10 11:03:14.000000000 -0600 -+++ source/gtk/a11y/gtkaccessibility.c 2025-05-04 19:46:06.985224833 -0600 +diff -ruwN source-old/gdk/wayland/gdkdevice-wayland.c source/gdk/wayland/gdkdevice-wayland.c +--- source-old/gdk/wayland/gdkdevice-wayland.c 2024-07-10 11:03:14.000000000 -0600 ++++ source/gdk/wayland/gdkdevice-wayland.c 2025-11-13 09:46:58.493081022 -0700 +@@ -44,6 +44,12 @@ + #include + #elif defined(HAVE_LINUX_INPUT_H) + #include ++#else ++#define BTN_LEFT 0x110 ++#define BTN_RIGHT 0x111 ++#define BTN_MIDDLE 0x112 ++#define BTN_STYLUS 0x14b ++#define BTN_STYLUS2 0x14c + #endif + + #define BUTTON_BASE (BTN_LEFT - 1) /* Used to translate to 1-indexed buttons */ +diff -ruwN source-old/gdk/wayland/gdkdisplay-wayland.c source/gdk/wayland/gdkdisplay-wayland.c +--- source-old/gdk/wayland/gdkdisplay-wayland.c 2024-07-10 11:03:14.000000000 -0600 ++++ source/gdk/wayland/gdkdisplay-wayland.c 2025-11-13 09:44:55.926622693 -0700 +@@ -28,7 +28,9 @@ + #endif + + #include ++#if defined (__NR_memfd_create) + #include ++#endif + + #include + #include "gdkwayland.h" +diff -ruwN source-old/gtk/a11y/gtkaccessibility.c source/gtk/a11y/gtkaccessibility.c +--- source-old/gtk/a11y/gtkaccessibility.c 2024-07-10 11:03:14.000000000 -0600 ++++ source/gtk/a11y/gtkaccessibility.c 2025-11-12 12:32:06.969908669 -0700 @@ -37,7 +37,7 @@ #include #include @@ -28,9 +57,9 @@ diff -ruwN gtk+-3.24.43/gtk/a11y/gtkaccessibility.c source/gtk/a11y/gtkaccessibi atk_bridge_adaptor_init (NULL, NULL); #endif -diff -ruwN gtk+-3.24.43/gtk/gtkmain.c source/gtk/gtkmain.c ---- gtk+-3.24.43/gtk/gtkmain.c 2024-07-10 11:03:14.000000000 -0600 -+++ source/gtk/gtkmain.c 2025-05-13 17:04:00.340216840 -0600 +diff -ruwN source-old/gtk/gtkmain.c source/gtk/gtkmain.c +--- source-old/gtk/gtkmain.c 2024-07-10 11:03:14.000000000 -0600 ++++ source/gtk/gtkmain.c 2025-11-12 12:32:06.970182803 -0700 @@ -355,7 +355,7 @@ check_setugid (void) { @@ -40,9 +69,9 @@ diff -ruwN gtk+-3.24.43/gtk/gtkmain.c source/gtk/gtkmain.c uid_t ruid, euid, suid; /* Real, effective and saved user ID's */ gid_t rgid, egid, sgid; /* Real, effective and saved group ID's */ -diff -ruwN gtk+-3.24.43/meson.build source/meson.build ---- gtk+-3.24.43/meson.build 2024-07-10 11:03:14.000000000 -0600 -+++ source/meson.build 2025-05-10 13:39:34.329344669 -0600 +diff -ruwN source-old/meson.build source/meson.build +--- source-old/meson.build 2024-07-10 11:03:14.000000000 -0600 ++++ source/meson.build 2025-11-12 12:32:06.970463189 -0700 @@ -565,7 +565,7 @@ xfixes_dep = dependency('xfixes', required: false) xcomposite_dep = dependency('xcomposite', required: false) From 08ed07d98a42b29f5142fc4b83348ee808d9ae44 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 13 Nov 2025 12:00:56 -0700 Subject: [PATCH 3105/3180] libwayland: use ppoll --- recipes/wip/wayland/libwayland/recipe.toml | 2 +- recipes/wip/wayland/libwayland/redox.patch | 30 +++++----------------- 2 files changed, 7 insertions(+), 25 deletions(-) diff --git a/recipes/wip/wayland/libwayland/recipe.toml b/recipes/wip/wayland/libwayland/recipe.toml index cfc7150e..78fa82c9 100644 --- a/recipes/wip/wayland/libwayland/recipe.toml +++ b/recipes/wip/wayland/libwayland/recipe.toml @@ -1,4 +1,4 @@ -#TODO: Requires sys/signalfd.h SFD_CLOEXEC, sys/timerfd.h TFD_CLOEXEC, ppoll +#TODO: Requires sys/signalfd.h SFD_CLOEXEC, sys/timerfd.h TFD_CLOEXEC #TODO: F_DUPFD_CLOEXEC, MSG_CMSG_CLOEXEC, MSG_NOSIGNAL TFD_TIMER_ABSTIME [source] tar = "https://gitlab.freedesktop.org/wayland/wayland/-/releases/1.24.0/downloads/wayland-1.24.0.tar.xz" diff --git a/recipes/wip/wayland/libwayland/redox.patch b/recipes/wip/wayland/libwayland/redox.patch index 71ad92e2..17281bf0 100644 --- a/recipes/wip/wayland/libwayland/redox.patch +++ b/recipes/wip/wayland/libwayland/redox.patch @@ -1,6 +1,6 @@ diff -ruwN source-old/meson.build source/meson.build --- source-old/meson.build 2025-07-06 06:11:26.000000000 -0600 -+++ source/meson.build 2025-10-30 15:52:33.121727009 -0600 ++++ source/meson.build 2025-11-12 15:20:45.527284903 -0700 @@ -80,8 +80,6 @@ ffi_dep = dependency('libffi') @@ -12,7 +12,7 @@ diff -ruwN source-old/meson.build source/meson.build diff -ruwN source-old/src/connection.c source/src/connection.c --- source-old/src/connection.c 2025-07-06 06:11:26.000000000 -0600 -+++ source/src/connection.c 2025-11-07 12:47:54.026013068 -0700 ++++ source/src/connection.c 2025-11-12 15:20:45.527473808 -0700 @@ -490,7 +490,7 @@ do { @@ -35,7 +35,7 @@ diff -ruwN source-old/src/connection.c source/src/connection.c clock_gettime(CLOCK_REALTIME, &tp); diff -ruwN source-old/src/event-loop.c source/src/event-loop.c --- source-old/src/event-loop.c 2025-07-06 06:11:26.000000000 -0600 -+++ source/src/event-loop.c 2025-10-30 15:52:33.122087045 -0600 ++++ source/src/event-loop.c 2025-11-12 15:20:45.527668103 -0700 @@ -35,8 +35,8 @@ #include #include @@ -126,7 +126,7 @@ diff -ruwN source-old/src/event-loop.c source/src/event-loop.c source->func = func; diff -ruwN source-old/src/meson.build source/src/meson.build --- source-old/src/meson.build 2025-07-06 06:11:26.000000000 -0600 -+++ source/src/meson.build 2025-10-30 15:52:33.122245753 -0600 ++++ source/src/meson.build 2025-11-12 15:20:45.527835808 -0700 @@ -81,8 +81,7 @@ endif @@ -137,27 +137,9 @@ diff -ruwN source-old/src/meson.build source/src/meson.build else wayland_scanner_for_build = wayland_scanner endif -diff -ruwN source-old/src/wayland-client.c source/src/wayland-client.c ---- source-old/src/wayland-client.c 2025-07-06 06:11:26.000000000 -0600 -+++ source/src/wayland-client.c 2025-10-30 15:52:33.122416784 -0600 -@@ -1997,14 +1997,6 @@ - - pfd[0].fd = display->fd; - pfd[0].events = events; -- do { -- if (timeout) { -- clock_gettime(CLOCK_MONOTONIC, &now); -- timespec_sub_saturate(&result, &deadline, &now); -- remaining_timeout = &result; -- } -- ret = ppoll(pfd, 1, remaining_timeout, NULL); -- } while (ret == -1 && errno == EINTR); - - return ret; - } diff -ruwN source-old/src/wayland-os.c source/src/wayland-os.c --- source-old/src/wayland-os.c 2025-07-06 06:11:26.000000000 -0600 -+++ source/src/wayland-os.c 2025-11-07 12:49:06.505330114 -0700 ++++ source/src/wayland-os.c 2025-11-12 15:20:45.528252861 -0700 @@ -134,11 +134,13 @@ { int newfd; @@ -183,7 +165,7 @@ diff -ruwN source-old/src/wayland-os.c source/src/wayland-os.c if (errno != EINVAL) diff -ruwN source-old/src/wayland-server.c source/src/wayland-server.c --- source-old/src/wayland-server.c 2025-07-06 06:11:26.000000000 -0600 -+++ source/src/wayland-server.c 2025-10-30 15:52:33.122838226 -0600 ++++ source/src/wayland-server.c 2025-11-12 15:20:45.528426727 -0700 @@ -39,7 +39,7 @@ #include #include From 053bdc3b068711b130a9488a4881c0b4438ba401 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 13 Nov 2025 13:03:17 -0700 Subject: [PATCH 3106/3180] libwayland: workaround for temp files not working after unlink --- recipes/wip/wayland/libwayland/redox.patch | 34 ++++++++++++++++++---- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/recipes/wip/wayland/libwayland/redox.patch b/recipes/wip/wayland/libwayland/redox.patch index 17281bf0..a292c32a 100644 --- a/recipes/wip/wayland/libwayland/redox.patch +++ b/recipes/wip/wayland/libwayland/redox.patch @@ -1,6 +1,28 @@ +diff -ruwN source-old/cursor/os-compatibility.c source/cursor/os-compatibility.c +--- source-old/cursor/os-compatibility.c 2025-07-06 06:11:26.000000000 -0600 ++++ source/cursor/os-compatibility.c 2025-11-13 13:00:31.354126754 -0700 +@@ -79,12 +79,18 @@ + #ifdef HAVE_MKOSTEMP + fd = mkostemp(tmpname, O_CLOEXEC); + if (fd >= 0) ++ fprintf(stderr, "ignoring unlink of %s\n", tmpname); ++ /*TODO: keep node around after unlink + unlink(tmpname); ++ */ + #else + fd = mkstemp(tmpname); + if (fd >= 0) { + fd = set_cloexec_or_close(fd); ++ fprintf(stderr, "ignoring unlink of %s\n", tmpname); ++ /*TODO: keep node around after unlink + unlink(tmpname); ++ */ + } + #endif + diff -ruwN source-old/meson.build source/meson.build --- source-old/meson.build 2025-07-06 06:11:26.000000000 -0600 -+++ source/meson.build 2025-11-12 15:20:45.527284903 -0700 ++++ source/meson.build 2025-11-13 12:08:42.512612558 -0700 @@ -80,8 +80,6 @@ ffi_dep = dependency('libffi') @@ -12,7 +34,7 @@ diff -ruwN source-old/meson.build source/meson.build diff -ruwN source-old/src/connection.c source/src/connection.c --- source-old/src/connection.c 2025-07-06 06:11:26.000000000 -0600 -+++ source/src/connection.c 2025-11-12 15:20:45.527473808 -0700 ++++ source/src/connection.c 2025-11-13 12:08:42.512796844 -0700 @@ -490,7 +490,7 @@ do { @@ -35,7 +57,7 @@ diff -ruwN source-old/src/connection.c source/src/connection.c clock_gettime(CLOCK_REALTIME, &tp); diff -ruwN source-old/src/event-loop.c source/src/event-loop.c --- source-old/src/event-loop.c 2025-07-06 06:11:26.000000000 -0600 -+++ source/src/event-loop.c 2025-11-12 15:20:45.527668103 -0700 ++++ source/src/event-loop.c 2025-11-13 12:08:42.513005175 -0700 @@ -35,8 +35,8 @@ #include #include @@ -126,7 +148,7 @@ diff -ruwN source-old/src/event-loop.c source/src/event-loop.c source->func = func; diff -ruwN source-old/src/meson.build source/src/meson.build --- source-old/src/meson.build 2025-07-06 06:11:26.000000000 -0600 -+++ source/src/meson.build 2025-11-12 15:20:45.527835808 -0700 ++++ source/src/meson.build 2025-11-13 12:08:42.513181686 -0700 @@ -81,8 +81,7 @@ endif @@ -139,7 +161,7 @@ diff -ruwN source-old/src/meson.build source/src/meson.build endif diff -ruwN source-old/src/wayland-os.c source/src/wayland-os.c --- source-old/src/wayland-os.c 2025-07-06 06:11:26.000000000 -0600 -+++ source/src/wayland-os.c 2025-11-12 15:20:45.528252861 -0700 ++++ source/src/wayland-os.c 2025-11-13 12:08:42.513310047 -0700 @@ -134,11 +134,13 @@ { int newfd; @@ -165,7 +187,7 @@ diff -ruwN source-old/src/wayland-os.c source/src/wayland-os.c if (errno != EINVAL) diff -ruwN source-old/src/wayland-server.c source/src/wayland-server.c --- source-old/src/wayland-server.c 2025-07-06 06:11:26.000000000 -0600 -+++ source/src/wayland-server.c 2025-11-12 15:20:45.528426727 -0700 ++++ source/src/wayland-server.c 2025-11-13 12:08:42.513500955 -0700 @@ -39,7 +39,7 @@ #include #include From 0042eca4aff1ce1b70bd891411b04063c3e70943 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 13 Nov 2025 13:04:18 -0700 Subject: [PATCH 3107/3180] Add adwaita-icon-theme --- .../wip/icons/adwaita-icon-theme/recipe.toml | 7 +++++ .../wip/icons/adwaita-icon-theme/redox.patch | 29 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 recipes/wip/icons/adwaita-icon-theme/recipe.toml create mode 100644 recipes/wip/icons/adwaita-icon-theme/redox.patch diff --git a/recipes/wip/icons/adwaita-icon-theme/recipe.toml b/recipes/wip/icons/adwaita-icon-theme/recipe.toml new file mode 100644 index 00000000..ce90ad69 --- /dev/null +++ b/recipes/wip/icons/adwaita-icon-theme/recipe.toml @@ -0,0 +1,7 @@ +[source] +tar = "https://download.gnome.org/sources/adwaita-icon-theme/49/adwaita-icon-theme-49.0.tar.xz" +blake3 = "757eedf680c4ae564d887dd9eccfeab2d4101e0bdfdb10288a072ba4530fb0e5" +patches = ["redox.patch"] + +[build] +template = "meson" diff --git a/recipes/wip/icons/adwaita-icon-theme/redox.patch b/recipes/wip/icons/adwaita-icon-theme/redox.patch new file mode 100644 index 00000000..8b644fd8 --- /dev/null +++ b/recipes/wip/icons/adwaita-icon-theme/redox.patch @@ -0,0 +1,29 @@ +diff -ruwN source-old/meson.build source/meson.build +--- source-old/meson.build 2025-09-12 05:48:02.000000000 -0600 ++++ source/meson.build 2025-11-13 12:05:28.819996707 -0700 +@@ -90,14 +90,14 @@ + endforeach + endif + +-gtk_update_icon_cache = find_program( +- 'gtk4-update-icon-cache', +- 'gtk-update-icon-cache', +- required : true, +-) +-meson.add_install_script( +- gtk_update_icon_cache, +- '-qtf', +- get_option('prefix') / adwaita_dir, +- skip_if_destdir: true, +-) ++#gtk_update_icon_cache = find_program( ++# 'gtk4-update-icon-cache', ++# 'gtk-update-icon-cache', ++# required : true, ++#) ++#meson.add_install_script( ++# gtk_update_icon_cache, ++# '-qtf', ++# get_option('prefix') / adwaita_dir, ++# skip_if_destdir: true, ++#) From 15d9b0073ac37903e918835596a7ad0507b172e1 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 12 Nov 2025 18:27:08 +0700 Subject: [PATCH 3108/3180] Fix loop when error with nonstop --- src/bin/repo.rs | 94 +++++++++++++++++++++++++------------------------ 1 file changed, 48 insertions(+), 46 deletions(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 9cbc417b..ad90b1ba 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -1012,29 +1012,30 @@ fn run_tui_cook( cooker_status_tx .send(StatusUpdate::FailCook(recipe.clone(), e.to_string())) .unwrap_or_default(); - if !cooker_config.cook.nonstop { - while cooker_prompting.load(Ordering::SeqCst) != 0 { - thread::sleep(Duration::from_millis(101)); // wait other prompt - } - cooker_prompting.swap(1, Ordering::SeqCst); - 'wait: loop { - match cooker_prompting.load(Ordering::SeqCst) { - 0 => break 'again, - 1 => thread::sleep(Duration::from_millis(101)), - 2 => { - cooker_prompting.swap(0, Ordering::SeqCst); - break 'wait; - } // retry - 3 => { - cooker_prompting.swap(0, Ordering::SeqCst); - break 'again; - } // skip - 4 => { - cooker_prompting.swap(0, Ordering::SeqCst); - break 'done; - } // done - _ => unreachable!(), - } + if cooker_config.cook.nonstop { + break; + } + while cooker_prompting.load(Ordering::SeqCst) != 0 { + thread::sleep(Duration::from_millis(101)); // wait other prompt + } + cooker_prompting.swap(1, Ordering::SeqCst); + 'wait: loop { + match cooker_prompting.load(Ordering::SeqCst) { + 0 => break 'again, + 1 => thread::sleep(Duration::from_millis(101)), + 2 => { + cooker_prompting.swap(0, Ordering::SeqCst); + break 'wait; + } // retry + 3 => { + cooker_prompting.swap(0, Ordering::SeqCst); + break 'again; + } // skip + 4 => { + cooker_prompting.swap(0, Ordering::SeqCst); + break 'done; + } // done + _ => unreachable!(), } } } @@ -1108,29 +1109,30 @@ fn run_tui_cook( fetcher_status_tx .send(StatusUpdate::FailFetch(recipe.clone(), e.to_string())) .unwrap_or_default(); - if !fetcher_config.cook.nonstop { - while fetcher_prompting.load(Ordering::SeqCst) != 0 { - thread::sleep(Duration::from_millis(101)); // wait other prompt - } - fetcher_prompting.swap(1, Ordering::SeqCst); - 'wait: loop { - match fetcher_prompting.load(Ordering::SeqCst) { - 0 => break 'again, - 1 => thread::sleep(Duration::from_millis(101)), - 2 => { - fetcher_prompting.swap(0, Ordering::SeqCst); - break 'wait; - } // retry - 3 => { - fetcher_prompting.swap(0, Ordering::SeqCst); - break 'again; - } // skip - 4 => { - fetcher_prompting.swap(0, Ordering::SeqCst); - break 'done; - } // done - _ => unreachable!(), - } + if fetcher_config.cook.nonstop { + break; + } + while fetcher_prompting.load(Ordering::SeqCst) != 0 { + thread::sleep(Duration::from_millis(101)); // wait other prompt + } + fetcher_prompting.swap(1, Ordering::SeqCst); + 'wait: loop { + match fetcher_prompting.load(Ordering::SeqCst) { + 0 => break 'again, + 1 => thread::sleep(Duration::from_millis(101)), + 2 => { + fetcher_prompting.swap(0, Ordering::SeqCst); + break 'wait; + } // retry + 3 => { + fetcher_prompting.swap(0, Ordering::SeqCst); + break 'again; + } // skip + 4 => { + fetcher_prompting.swap(0, Ordering::SeqCst); + break 'done; + } // done + _ => unreachable!(), } } } From daa063334da943ed0fedf66e2d253f77b901650c Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 12 Nov 2025 19:39:30 +0700 Subject: [PATCH 3109/3180] Handle kill on nonstop --- src/bin/repo.rs | 63 +++++++++++++++++++++++++++++++++++-------------- 1 file changed, 45 insertions(+), 18 deletions(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index ad90b1ba..618502dc 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -1013,6 +1013,9 @@ fn run_tui_cook( .send(StatusUpdate::FailCook(recipe.clone(), e.to_string())) .unwrap_or_default(); if cooker_config.cook.nonstop { + if cooker_prompting.load(Ordering::SeqCst) == 4 { + break 'done; + } break; } while cooker_prompting.load(Ordering::SeqCst) != 0 { @@ -1110,6 +1113,9 @@ fn run_tui_cook( .send(StatusUpdate::FailFetch(recipe.clone(), e.to_string())) .unwrap_or_default(); if fetcher_config.cook.nonstop { + if fetcher_prompting.load(Ordering::SeqCst) == 4 { + break 'done; + } break; } while fetcher_prompting.load(Ordering::SeqCst) != 0 { @@ -1363,8 +1369,11 @@ fn run_tui_cook( log_paragraph, chunks[if app.fetch_complete { 1 } else { 2 }], ); - if let Some(prompt) = &app.prompt { - draw_prompt(f, prompt); + if let Some(prompt) = &mut app.prompt { + if config.cook.nonstop && prompt.selected == PromptOption::Retry { + prompt.selected = PromptOption::Skip; + } + draw_prompt(f, prompt, config.cook.nonstop); } if enable_auto_scroll { app.auto_scroll = true; @@ -1384,8 +1393,9 @@ fn run_tui_cook( app.dump_logs_on_exit = Some((name.to_owned(), join_logs(log, line))); } running.store(false, Ordering::SeqCst); + } else { + app.prompt = None; } - app.prompt = None; } else { handle_main_event(&mut app, &event); } @@ -1408,6 +1418,10 @@ fn run_tui_cook( drop(mstdout); let _ = stdout().flush(); + if config.cook.nonstop && app.prompt.is_some_and(|f| f.selected == PromptOption::Exit) { + kill_everything(); + } + fetcher_handle.join().unwrap(); cooker_handle.join().unwrap(); @@ -1439,12 +1453,7 @@ fn handle_main_event(app: &mut TuiApp, event: &Event) { } Key::Char('c') => { // as compilers still running, we use this way to stop it - let pid = std::process::id(); - Command::new("bash") - .arg("-c") - .arg(KILL_ALL_PID.replace("$PID", &pid.to_string())) - .spawn() - .expect("unable to spawn kill"); + kill_everything(); } Key::Up => { app.auto_scroll = false; @@ -1515,6 +1524,15 @@ fn handle_main_event(app: &mut TuiApp, event: &Event) { } } +fn kill_everything() { + let pid = std::process::id(); + Command::new("bash") + .arg("-c") + .arg(KILL_ALL_PID.replace("$PID", &pid.to_string())) + .spawn() + .expect("unable to spawn kill"); +} + fn handle_prompt_input<'a>( event: &Event, app: &'a mut TuiApp, @@ -1540,8 +1558,12 @@ fn handle_prompt_input<'a>( None } -fn draw_prompt(f: &mut ratatui::Frame, prompt: &FailurePrompt) { - let title = format!(" FAILURE in {} ", prompt.recipe.name); +fn draw_prompt(f: &mut ratatui::Frame, prompt: &FailurePrompt, is_nonstop: bool) { + let title = format!( + " FAILURE in {} {}", + prompt.recipe.name, + if is_nonstop { "(skipped) " } else { "" } + ); let mut error_text = prompt.error.clone(); if error_text.len() > 200 { error_text = error_text[0..100].to_string() @@ -1568,16 +1590,21 @@ fn draw_prompt(f: &mut ratatui::Frame, prompt: &FailurePrompt) { Style::default() }; + let mut buttons = vec![ + Span::styled(" [Skip] ", skip_style), + Span::raw(" "), + Span::styled(" [Exit] ", exit_style), + ]; + + if !is_nonstop { + buttons.push(Span::raw(" ")); + buttons.push(Span::styled(" [Retry] ", retry_style)); + } + let text = vec![ Line::from(error_text).style(Style::default().fg(Color::Yellow)), Line::from(""), - Line::from(vec![ - Span::styled(" [Skip] ", skip_style), - Span::raw(" "), - Span::styled(" [Exit] ", exit_style), - Span::raw(" "), - Span::styled(" [Retry] ", retry_style), - ]), + Line::from(buttons), ]; let block = Block::default() From f5f2b4d0d475bd617a6027052cc758b5524d0d25 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Fri, 14 Nov 2025 12:46:28 +0700 Subject: [PATCH 3110/3180] Make sure nonstop can quit --- src/bin/repo.rs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 618502dc..5962122c 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -1006,6 +1006,11 @@ fn run_tui_cook( cooker_status_tx .send(StatusUpdate::Cooked(recipe)) .unwrap_or_default(); + if cooker_config.cook.nonstop + && cooker_prompting.load(Ordering::SeqCst) == 4 + { + break 'done; + } break; } Err(e) => { @@ -1106,6 +1111,11 @@ fn run_tui_cook( // Cooker thread died break 'done; } + if fetcher_config.cook.nonstop + && fetcher_prompting.load(Ordering::SeqCst) == 4 + { + break 'done; + } break; } Err(e) => { @@ -1386,6 +1396,7 @@ fn run_tui_cook( if let Some((app, res)) = handle_prompt_input(&event, &mut app) { prompting.swap(res as u32, Ordering::SeqCst); if res == PromptOption::Exit { + // TODO: This can be a different log with what prompted on nonstop mode let (name, log, line) = app.get_active_log(); if let Some(name) = name && let Some(log) = log @@ -1393,9 +1404,8 @@ fn run_tui_cook( app.dump_logs_on_exit = Some((name.to_owned(), join_logs(log, line))); } running.store(false, Ordering::SeqCst); - } else { - app.prompt = None; } + app.prompt = None; } else { handle_main_event(&mut app, &event); } @@ -1418,7 +1428,7 @@ fn run_tui_cook( drop(mstdout); let _ = stdout().flush(); - if config.cook.nonstop && app.prompt.is_some_and(|f| f.selected == PromptOption::Exit) { + if config.cook.nonstop && app.dump_logs_on_exit.is_some() { kill_everything(); } From d4c4ec7aa0dc3dde9bc06ad67a6711e2ae03c8de Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Nov 2025 17:50:12 -0700 Subject: [PATCH 3111/3180] Add dconf --- recipes/wip/libs/gtk/dconf/recipe.toml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 recipes/wip/libs/gtk/dconf/recipe.toml diff --git a/recipes/wip/libs/gtk/dconf/recipe.toml b/recipes/wip/libs/gtk/dconf/recipe.toml new file mode 100644 index 00000000..1cefa704 --- /dev/null +++ b/recipes/wip/libs/gtk/dconf/recipe.toml @@ -0,0 +1,15 @@ +[source] +tar = "https://download.gnome.org/sources/dconf/0.49/dconf-0.49.0.tar.xz" +blake3 = "41ee23bdab3208f7a08efa134a481c852874dc5846433a665c5a5149511a7659" + +[build] +dependencies = [ + "dbus", + "glib", +] +template = "meson" +mesonflags = [ + "-Dbash_completion=false", + "-Dvapi=false", + "--force-fallback-for=gvdb", +] From 1186e2ce00f6e4d29a213cf4bdd3727d5b677542 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Nov 2025 18:02:31 -0700 Subject: [PATCH 3112/3180] libwnck3: update to 43.3 --- recipes/wip/libs/gtk/libwnck3/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/wip/libs/gtk/libwnck3/recipe.toml b/recipes/wip/libs/gtk/libwnck3/recipe.toml index a862289e..f91a8ce0 100644 --- a/recipes/wip/libs/gtk/libwnck3/recipe.toml +++ b/recipes/wip/libs/gtk/libwnck3/recipe.toml @@ -1,6 +1,6 @@ [source] -tar = "https://download.gnome.org/sources/libwnck/3.36/libwnck-3.36.0.tar.xz" -blake3 = "5a7913968932c38bcb04dbb6410b1fc00dc653a600ab7a4899ee75bd5581323d" +tar = "https://download.gnome.org/sources/libwnck/43/libwnck-43.3.tar.xz" +blake3 = "711e508f062cc90c660b56f21c5fd237db156ea51fe364fb5e9e766556c2de42" [build] dependencies = [ From 2b62a0d83c6e0f8d871863d877b3dd64e930f3d8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Nov 2025 18:20:06 -0700 Subject: [PATCH 3113/3180] MATE: add iso-codes, libmate-desktop-2, libmate-menu, libmateweather --- recipes/wip/x11/mate/iso-codes/recipe.toml | 7 +++++++ .../x11/mate/libmate-desktop-2/recipe.toml | 11 +++++++++++ recipes/wip/x11/mate/libmate-menu/recipe.toml | 12 ++++++++++++ .../wip/x11/mate/libmateweather/recipe.toml | 19 +++++++++++++++++++ 4 files changed, 49 insertions(+) create mode 100644 recipes/wip/x11/mate/iso-codes/recipe.toml create mode 100644 recipes/wip/x11/mate/libmate-desktop-2/recipe.toml create mode 100644 recipes/wip/x11/mate/libmate-menu/recipe.toml create mode 100644 recipes/wip/x11/mate/libmateweather/recipe.toml diff --git a/recipes/wip/x11/mate/iso-codes/recipe.toml b/recipes/wip/x11/mate/iso-codes/recipe.toml new file mode 100644 index 00000000..d3ac2a97 --- /dev/null +++ b/recipes/wip/x11/mate/iso-codes/recipe.toml @@ -0,0 +1,7 @@ +#TODO: move to appropriate category +[source] +tar = "https://salsa.debian.org/iso-codes-team/iso-codes/-/archive/v4.19.0/iso-codes-v4.19.0.tar.gz" +blake3 = "153cc1748c96c4c6e8a00566aa7d0a573ec45f84c9155afd162cfc7a0cd6314b" + +[build] +template = "configure" diff --git a/recipes/wip/x11/mate/libmate-desktop-2/recipe.toml b/recipes/wip/x11/mate/libmate-desktop-2/recipe.toml new file mode 100644 index 00000000..f9651e01 --- /dev/null +++ b/recipes/wip/x11/mate/libmate-desktop-2/recipe.toml @@ -0,0 +1,11 @@ +[source] +tar = "https://github.com/mate-desktop/mate-desktop/releases/download/v1.28.2/mate-desktop-1.28.2.tar.xz" +blake3 = "b5897e91e0ad542dc3331209bb260124c8e14d654fcdb2d9a738e9fc23d4d3fa" + +[build] +dependencies = [ + "dconf", + "iso-codes", + "gtk3", +] +template = "meson" diff --git a/recipes/wip/x11/mate/libmate-menu/recipe.toml b/recipes/wip/x11/mate/libmate-menu/recipe.toml new file mode 100644 index 00000000..aca8f232 --- /dev/null +++ b/recipes/wip/x11/mate/libmate-menu/recipe.toml @@ -0,0 +1,12 @@ +[source] +tar = "https://github.com/mate-desktop/mate-menus/archive/refs/tags/v1.28.0.tar.gz" +blake3 = "90b5540ec82bd9a6188d9eaf36bf1f489258aed4d35de53f3958346f892c0d7c" + +[build] +dependencies = [ + "glib", +] +template = "meson" +mesonflags = [ + "-Dintrospection=false", +] diff --git a/recipes/wip/x11/mate/libmateweather/recipe.toml b/recipes/wip/x11/mate/libmateweather/recipe.toml new file mode 100644 index 00000000..c5f74cb6 --- /dev/null +++ b/recipes/wip/x11/mate/libmateweather/recipe.toml @@ -0,0 +1,19 @@ +# Uses custom rev for libsoup3 support, next release should include it +[source] +tar = "https://github.com/mate-desktop/libmateweather/archive/c1c54a15545f13f3dabd2bcd303533d818905c7b.tar.gz" +blake3 = "78c3873937bb90141386d31b6c6d3e585f9f2bde6069933abffdbd9a9161707a" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "gtk3", + "libsoup", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From 683cfe5a13977d4d3c989d71f63a6b45c9f9fbf6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Nov 2025 18:49:32 -0700 Subject: [PATCH 3114/3180] libtool: fix spurious rebuilds --- recipes/wip/libs/other/libtool/recipe.toml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/recipes/wip/libs/other/libtool/recipe.toml b/recipes/wip/libs/other/libtool/recipe.toml index 4788b7a5..7ccbdc8e 100644 --- a/recipes/wip/libs/other/libtool/recipe.toml +++ b/recipes/wip/libs/other/libtool/recipe.toml @@ -3,12 +3,15 @@ git = "https://gitlab.redox-os.org/redox-os/libtool" branch = "v2.5.4-redox" shallow_clone = true + +[build] +template = "custom" script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ ./bootstrap \ --skip-po \ --force \ --gnulib-srcdir=./gnulib +COOKBOOK_CONFIGURE="./configure" +cookbook_configure """ - -[build] -template = "configure" From 8cb3244b748f597259b1ca66e8c6e8ac71989c8d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Nov 2025 18:50:08 -0700 Subject: [PATCH 3115/3180] libcanberra: fix compilation --- .../wip/libs/audio/libcanberra/recipe.toml | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/recipes/wip/libs/audio/libcanberra/recipe.toml b/recipes/wip/libs/audio/libcanberra/recipe.toml index 6d0c6304..2de6513c 100644 --- a/recipes/wip/libs/audio/libcanberra/recipe.toml +++ b/recipes/wip/libs/audio/libcanberra/recipe.toml @@ -1,5 +1,20 @@ -#TODO not compiled or tested +#TODO no audio backend supported [source] tar = "http://0pointer.de/lennart/projects/libcanberra/libcanberra-0.30.tar.xz" +blake3 = "ea02f4b5a00bfffce1d29ce73e1cf5351027208cbeb58bf9954e84ad120e6daa" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + [build] -template = "configure" +dependencies = [ + "gtk3", + "libtool", + "libvorbis", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From 51165c63e84f3fed7bb7983d3c3c217dfc33a822 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Nov 2025 18:53:11 -0700 Subject: [PATCH 3116/3180] libxres: fix and move to wip/x11 --- recipes/wip/libs/other/libxres/recipe.toml | 5 ----- recipes/wip/x11/libxres/recipe.toml | 18 ++++++++++++++++++ 2 files changed, 18 insertions(+), 5 deletions(-) delete mode 100644 recipes/wip/libs/other/libxres/recipe.toml create mode 100644 recipes/wip/x11/libxres/recipe.toml diff --git a/recipes/wip/libs/other/libxres/recipe.toml b/recipes/wip/libs/other/libxres/recipe.toml deleted file mode 100644 index af7194ca..00000000 --- a/recipes/wip/libs/other/libxres/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO missing xorg-macros package -[source] -tar = "https://www.x.org/releases/individual/lib/libXres-1.2.2.tar.xz" -[build] -template = "configure" diff --git a/recipes/wip/x11/libxres/recipe.toml b/recipes/wip/x11/libxres/recipe.toml new file mode 100644 index 00000000..ae9027da --- /dev/null +++ b/recipes/wip/x11/libxres/recipe.toml @@ -0,0 +1,18 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/libXres-1.2.3.tar.xz" +blake3 = "ed6e65e554fb812ddbec0667d749cb6c0488a964d7b12a7c4c2cadac1287088f" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "libx11", + "libxext", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure --enable-malloc0returnsnull +""" From f93a736f16a3356a80fdd18632410c3f29ad4819 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Nov 2025 19:03:12 -0700 Subject: [PATCH 3117/3180] Add zenity --- recipes/wip/libs/gtk/zenity/recipe.toml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 recipes/wip/libs/gtk/zenity/recipe.toml diff --git a/recipes/wip/libs/gtk/zenity/recipe.toml b/recipes/wip/libs/gtk/zenity/recipe.toml new file mode 100644 index 00000000..bc9f40ac --- /dev/null +++ b/recipes/wip/libs/gtk/zenity/recipe.toml @@ -0,0 +1,9 @@ +[source] +tar = "https://download.gnome.org/sources/zenity/3.44/zenity-3.44.5.tar.xz" +blake3 = "de4c662bd33107e9247c23d248e4b1b51a68994b01ecefda77422e1007b11c1e" + +[build] +dependencies = [ + "gtk3", +] +template = "meson" From 0a7bdefda13abc39a13560ced97547f4e478a2fa Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Nov 2025 19:03:21 -0700 Subject: [PATCH 3118/3180] Add mate-panel --- recipes/wip/x11/mate/mate-panel/recipe.toml | 23 +++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 recipes/wip/x11/mate/mate-panel/recipe.toml diff --git a/recipes/wip/x11/mate/mate-panel/recipe.toml b/recipes/wip/x11/mate/mate-panel/recipe.toml new file mode 100644 index 00000000..c2037931 --- /dev/null +++ b/recipes/wip/x11/mate/mate-panel/recipe.toml @@ -0,0 +1,23 @@ +[source] +tar = "https://github.com/mate-desktop/mate-panel/releases/download/v1.28.6/mate-panel-1.28.6.tar.xz" +blake3 = "6411fa4da26be0032226395d50855bb6b1223f5b795f5e08f3999e9de92f2acd" +script = """ +DYNAMIC_INIT +#TODO autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "gtk3", + "libice", + "libmate-desktop-2", + "libmate-menu", + "libmateweather", + "libsm", + "libwnck3", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From 4402cb77cf8ce2e9484abdcc8e09ba007aab2ff7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Nov 2025 19:15:53 -0700 Subject: [PATCH 3119/3180] libxdamage: move to wip/x11, update, and compile dynamically --- recipes/wip/libs/other/libxdamage/recipe.toml | 10 ---------- recipes/wip/x11/libxdamage/recipe.toml | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+), 10 deletions(-) delete mode 100644 recipes/wip/libs/other/libxdamage/recipe.toml create mode 100644 recipes/wip/x11/libxdamage/recipe.toml diff --git a/recipes/wip/libs/other/libxdamage/recipe.toml b/recipes/wip/libs/other/libxdamage/recipe.toml deleted file mode 100644 index bf3281b4..00000000 --- a/recipes/wip/libs/other/libxdamage/recipe.toml +++ /dev/null @@ -1,10 +0,0 @@ -#TODO missing dependencies -[source] -tar = "https://www.x.org/releases/individual/lib/libXdamage-1.1.6.tar.xz" -[build] -template = "configure" -dependencies = [ - "libxfixes", - "libx11", - "x11proto", -] diff --git a/recipes/wip/x11/libxdamage/recipe.toml b/recipes/wip/x11/libxdamage/recipe.toml new file mode 100644 index 00000000..da8d82d2 --- /dev/null +++ b/recipes/wip/x11/libxdamage/recipe.toml @@ -0,0 +1,19 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/libXdamage-1.1.6.tar.xz" +blake3 = "d3d75f2656027288f87b9ddda8bf019862c63c6e4aeadd92f45870df6c2a7ce9" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +template = "custom" +dependencies = [ + "libx11", + "libxfixes", + "x11proto", +] +script = """ +DYNAMIC_INIT +cookbook_configure +""" From df66f6dd906673d7f716f6fb1a05079228dfeed1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Nov 2025 19:16:15 -0700 Subject: [PATCH 3120/3180] libxcomposite: add blake3 --- recipes/wip/x11/libxcomposite/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/x11/libxcomposite/recipe.toml b/recipes/wip/x11/libxcomposite/recipe.toml index f2505378..21f06387 100644 --- a/recipes/wip/x11/libxcomposite/recipe.toml +++ b/recipes/wip/x11/libxcomposite/recipe.toml @@ -1,6 +1,6 @@ -#TODO make dependencies work [source] tar = "https://www.x.org/releases/individual/lib/libXcomposite-0.4.6.tar.xz" +blake3 = "7e02026864066869aefc1d688415b1e8c6ab0b639556f93b6f5e86063aa1bbac" script = """ DYNAMIC_INIT autotools_recursive_regenerate From 7472106d533a4e610a7c8500955b1326f350798e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Nov 2025 19:18:19 -0700 Subject: [PATCH 3121/3180] libtool: compile dynamically --- recipes/wip/libs/other/libtool/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/libs/other/libtool/recipe.toml b/recipes/wip/libs/other/libtool/recipe.toml index 7ccbdc8e..9ce69151 100644 --- a/recipes/wip/libs/other/libtool/recipe.toml +++ b/recipes/wip/libs/other/libtool/recipe.toml @@ -7,6 +7,7 @@ shallow_clone = true [build] template = "custom" script = """ +DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ ./bootstrap \ --skip-po \ From e215fd83e693c2d904b4973ae686223ba84f4c5b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Nov 2025 19:18:30 -0700 Subject: [PATCH 3122/3180] Add marco --- recipes/wip/x11/mate/marco/recipe.toml | 24 ++++++++++++++++++++++++ recipes/wip/x11/mate/marco/redox.patch | 12 ++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 recipes/wip/x11/mate/marco/recipe.toml create mode 100644 recipes/wip/x11/mate/marco/redox.patch diff --git a/recipes/wip/x11/mate/marco/recipe.toml b/recipes/wip/x11/mate/marco/recipe.toml new file mode 100644 index 00000000..d3a1482f --- /dev/null +++ b/recipes/wip/x11/mate/marco/recipe.toml @@ -0,0 +1,24 @@ +[source] +tar = "https://github.com/mate-desktop/marco/releases/download/v1.29.1/marco-1.29.1.tar.xz" +blake3 = "609db8d6da0ceffb67fd79a2d017be301f5cdbe441301ca5469530cdca4a7cf5" +patches = ["redox.patch"] + +[build] +dependencies = [ + "gtk3", + "libcanberra", + "libice", + "libmate-desktop-2", + "libsm", + "libxcomposite", + "libxcursor", + "libxdamage", + "libxinerama", + "libxres", +] +template = "meson" + +[package] +dependencies = [ + "zenity", +] diff --git a/recipes/wip/x11/mate/marco/redox.patch b/recipes/wip/x11/mate/marco/redox.patch new file mode 100644 index 00000000..4cb0f938 --- /dev/null +++ b/recipes/wip/x11/mate/marco/redox.patch @@ -0,0 +1,12 @@ +diff -ruwN source-old/meson.build source/meson.build +--- source-old/meson.build 2025-09-22 16:03:46.000000000 -0600 ++++ source/meson.build 2025-11-14 19:09:08.402564648 -0700 +@@ -294,7 +294,7 @@ + endif + + gdk_pixbuf_csource = find_program('gdk-pixbuf-csource') +-zenity = find_program('zenity') ++#Added to package depends: zenity = find_program('zenity') + + libxext = cc.find_library('Xext', required: false) + if build_xsync From 38fe8e0fd1edd64e250d1ef30c2733ee876befb9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Nov 2025 19:38:15 -0700 Subject: [PATCH 3123/3180] Move iso-codes to x11 --- recipes/wip/x11/{mate => }/iso-codes/recipe.toml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/x11/{mate => }/iso-codes/recipe.toml (100%) diff --git a/recipes/wip/x11/mate/iso-codes/recipe.toml b/recipes/wip/x11/iso-codes/recipe.toml similarity index 100% rename from recipes/wip/x11/mate/iso-codes/recipe.toml rename to recipes/wip/x11/iso-codes/recipe.toml From 56ee7559bd93d7636ede614526d99a695fbef515 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Nov 2025 19:38:23 -0700 Subject: [PATCH 3124/3180] Add libxklavier --- recipes/wip/x11/libxklavier/recipe.toml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 recipes/wip/x11/libxklavier/recipe.toml diff --git a/recipes/wip/x11/libxklavier/recipe.toml b/recipes/wip/x11/libxklavier/recipe.toml new file mode 100644 index 00000000..2bba6632 --- /dev/null +++ b/recipes/wip/x11/libxklavier/recipe.toml @@ -0,0 +1,20 @@ +[source] +tar = "https://download.gnome.org/sources/libxklavier/5.3/libxklavier-5.3.tar.xz" +blake3 = "4811b8e069faef364b0cdd230dd7e42bc4afc279cb15282b68c11e89518c8930" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "glib", + "iso-codes", + "libx11", + "libxml2", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From 49b1316b68ff95ae5e9b7131295b425206d5670b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Nov 2025 19:39:55 -0700 Subject: [PATCH 3125/3180] libxklavier: add libxi and libxkbfile depends --- recipes/wip/x11/libxklavier/recipe.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/recipes/wip/x11/libxklavier/recipe.toml b/recipes/wip/x11/libxklavier/recipe.toml index 2bba6632..fdbc3dad 100644 --- a/recipes/wip/x11/libxklavier/recipe.toml +++ b/recipes/wip/x11/libxklavier/recipe.toml @@ -11,6 +11,8 @@ dependencies = [ "glib", "iso-codes", "libx11", + "libxi", + "libxkbfile", "libxml2", ] template = "custom" From af95e8d0a9e1da60648cad1065e29bfa6adbe764 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Nov 2025 19:46:56 -0700 Subject: [PATCH 3126/3180] Add libmatekbd --- recipes/wip/x11/mate/libmatekbd/recipe.toml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 recipes/wip/x11/mate/libmatekbd/recipe.toml diff --git a/recipes/wip/x11/mate/libmatekbd/recipe.toml b/recipes/wip/x11/mate/libmatekbd/recipe.toml new file mode 100644 index 00000000..92daa69f --- /dev/null +++ b/recipes/wip/x11/mate/libmatekbd/recipe.toml @@ -0,0 +1,18 @@ +[source] +tar = "https://github.com/mate-desktop/libmatekbd/releases/download/v1.28.0/libmatekbd-1.28.0.tar.xz" +blake3 = "d5dcf7a47522cc586b6c47e9bd731bbd6db43fcb6797b33b52c03e816d9caedd" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "gtk3", + "libxklavier", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From 0364d6155b2b765d371412ea0d342ef7151fd5d8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Nov 2025 19:49:36 -0700 Subject: [PATCH 3127/3180] Add mate-settings-daemon and make marco depend on it --- recipes/wip/x11/mate/marco/recipe.toml | 1 + .../x11/mate/mate-settings-daemon/recipe.toml | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 recipes/wip/x11/mate/mate-settings-daemon/recipe.toml diff --git a/recipes/wip/x11/mate/marco/recipe.toml b/recipes/wip/x11/mate/marco/recipe.toml index d3a1482f..50f9042c 100644 --- a/recipes/wip/x11/mate/marco/recipe.toml +++ b/recipes/wip/x11/mate/marco/recipe.toml @@ -20,5 +20,6 @@ template = "meson" [package] dependencies = [ + "mate-settings-daemon", "zenity", ] diff --git a/recipes/wip/x11/mate/mate-settings-daemon/recipe.toml b/recipes/wip/x11/mate/mate-settings-daemon/recipe.toml new file mode 100644 index 00000000..f4637603 --- /dev/null +++ b/recipes/wip/x11/mate/mate-settings-daemon/recipe.toml @@ -0,0 +1,21 @@ +[source] +tar = "https://github.com/mate-desktop/mate-settings-daemon/releases/download/v1.28.0/mate-settings-daemon-1.28.0.tar.xz" +blake3 = "396389887d2e79d22e8be28f51df8e6e807ffabb676fbd23888278cf39a65f3d" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "dconf", + "gtk3", + "libcanberra", + "libmate-desktop-2", + "libmatekbd", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure --disable-rfkill +""" From 476e584b2f78cbdea1319ab9bb2597716086270c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 15 Nov 2025 07:59:38 -0700 Subject: [PATCH 3128/3180] Add mate-icon-theme --- recipes/wip/x11/mate/mate-icon-theme/recipe.toml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 recipes/wip/x11/mate/mate-icon-theme/recipe.toml diff --git a/recipes/wip/x11/mate/mate-icon-theme/recipe.toml b/recipes/wip/x11/mate/mate-icon-theme/recipe.toml new file mode 100644 index 00000000..83d073fd --- /dev/null +++ b/recipes/wip/x11/mate/mate-icon-theme/recipe.toml @@ -0,0 +1,9 @@ +[source] +tar = "https://github.com/mate-desktop/mate-icon-theme/releases/download/v1.28.0/mate-icon-theme-1.28.0.tar.xz" +blake3 = "7269335000874df593ac06d991f4f19cdda984cd2199166987acb3f3cbd474bc" + +[build] +template = "configure" +configureflags = [ + "--disable-icon-mapping", +] From 4e97861e82cea02c4d976789831bf34f3c826ab3 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 15 Nov 2025 08:23:35 -0700 Subject: [PATCH 3129/3180] Add libxscrnsaver --- recipes/wip/x11/libxscrnsaver/recipe.toml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 recipes/wip/x11/libxscrnsaver/recipe.toml diff --git a/recipes/wip/x11/libxscrnsaver/recipe.toml b/recipes/wip/x11/libxscrnsaver/recipe.toml new file mode 100644 index 00000000..4963e526 --- /dev/null +++ b/recipes/wip/x11/libxscrnsaver/recipe.toml @@ -0,0 +1,10 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/libXScrnSaver-1.2.5.tar.xz" +blake3 = "1efbadb14238f8679abb5e56bc99765b96565ee992bbab86cee88248c57f6240" + +[build] +dependencies = [ + "libx11", + "libxext", +] +template = "meson" From affe0c6a08e3910402613e6e72303492ef21f0e9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 15 Nov 2025 08:34:32 -0700 Subject: [PATCH 3130/3180] Add libayatana-appindicator-glib --- .../libayatana-appindicator-glib/recipe.toml | 10 ++ .../libayatana-appindicator-glib/redox.patch | 116 ++++++++++++++++++ 2 files changed, 126 insertions(+) create mode 100644 recipes/wip/libs/gtk/libayatana-appindicator-glib/recipe.toml create mode 100644 recipes/wip/libs/gtk/libayatana-appindicator-glib/redox.patch diff --git a/recipes/wip/libs/gtk/libayatana-appindicator-glib/recipe.toml b/recipes/wip/libs/gtk/libayatana-appindicator-glib/recipe.toml new file mode 100644 index 00000000..e3731521 --- /dev/null +++ b/recipes/wip/libs/gtk/libayatana-appindicator-glib/recipe.toml @@ -0,0 +1,10 @@ +[source] +tar = "https://github.com/AyatanaIndicators/libayatana-appindicator-glib/archive/refs/tags/2.0.1.tar.gz" +blake3 = "5c7e39f29b23cd5c14a6eacbe0c0bf16dfd28b9b013ec011421d5d6e5742ba2d" +patches = ["redox.patch"] + +[build] +dependencies = [ + "glib", +] +template = "cmake" diff --git a/recipes/wip/libs/gtk/libayatana-appindicator-glib/redox.patch b/recipes/wip/libs/gtk/libayatana-appindicator-glib/redox.patch new file mode 100644 index 00000000..db429a1a --- /dev/null +++ b/recipes/wip/libs/gtk/libayatana-appindicator-glib/redox.patch @@ -0,0 +1,116 @@ +diff -ruwN source-old/bindings/CMakeLists.txt source/bindings/CMakeLists.txt +--- source-old/bindings/CMakeLists.txt 2025-06-15 04:50:44.000000000 -0600 ++++ source/bindings/CMakeLists.txt 2025-11-15 08:33:35.889512652 -0700 +@@ -1 +1 @@ +-add_subdirectory (vala) ++#TODO: valac: add_subdirectory (vala) +diff -ruwN source-old/CMakeLists.txt source/CMakeLists.txt +--- source-old/CMakeLists.txt 2025-06-15 04:50:44.000000000 -0600 ++++ source/CMakeLists.txt 2025-11-15 08:33:53.996379724 -0700 +@@ -38,7 +38,7 @@ + + add_subdirectory (src) + add_subdirectory (bindings) +-add_subdirectory (doc) ++#TODO: gi-docgen: add_subdirectory (doc) + + if (ENABLE_TESTS) + include (CTest) +diff -ruwN source-old/src/CMakeLists.txt source/src/CMakeLists.txt +--- source-old/src/CMakeLists.txt 2025-06-15 04:50:44.000000000 -0600 ++++ source/src/CMakeLists.txt 2025-11-15 08:32:53.644475333 -0700 +@@ -114,47 +114,49 @@ + target_link_options ("ayatana-appindicator-glib" PRIVATE "LINKER:--version-script=${CMAKE_CURRENT_SOURCE_DIR}/ayatana-appindicator.symbols") + install (TARGETS "ayatana-appindicator-glib" LIBRARY DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}") + +-# AyatanaAppIndicatorGlib-2.0.gir +- +-find_package (GObjectIntrospection REQUIRED) +- +-add_custom_command ( +- OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.gir" +- DEPENDS "ayatana-appindicator-glib" +- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} +- COMMAND +- ${INTROSPECTION_SCANNER} +- ayatana-appindicator.c ayatana-appindicator.h +- --add-include-path=${CMAKE_CURRENT_BINARY_DIR} +- --c-include=libayatana-appindicator-glib/ayatana-appindicator.h +- --symbol-prefix=app +- --identifier-prefix=App +- --namespace=AyatanaAppIndicatorGlib +- --nsversion=2.0 +- --quiet +- --warn-all +- --include=Gio-2.0 +- --include=GObject-2.0 +- --library-path=${CMAKE_CURRENT_BINARY_DIR} +- --library="ayatana-appindicator-glib" +- --output "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.gir" +-) +- +-install (FILES "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.gir" DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/gir-1.0") +- +-# AyatanaAppIndicatorGlib-2.0.typelib +- +-add_custom_command ( +- OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.typelib" +- DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.gir" +- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} +- COMMAND +- ${INTROSPECTION_COMPILER} +- --includedir=${CMAKE_CURRENT_BINARY_DIR} +- ${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.gir +- -o "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.typelib" +-) +- +-install (FILES "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.typelib" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/girepository-1.0") +- +-add_custom_target ("src" ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.typelib") ++#TODO: gobject-introspection ++## AyatanaAppIndicatorGlib-2.0.gir ++# ++#find_package (GObjectIntrospection REQUIRED) ++# ++#add_custom_command ( ++# OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.gir" ++# DEPENDS "ayatana-appindicator-glib" ++# WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ++# COMMAND ++# ${INTROSPECTION_SCANNER} ++# ayatana-appindicator.c ayatana-appindicator.h ++# --add-include-path=${CMAKE_CURRENT_BINARY_DIR} ++# --c-include=libayatana-appindicator-glib/ayatana-appindicator.h ++# --symbol-prefix=app ++# --identifier-prefix=App ++# --namespace=AyatanaAppIndicatorGlib ++# --nsversion=2.0 ++# --quiet ++# --warn-all ++# --include=Gio-2.0 ++# --include=GObject-2.0 ++# --library-path=${CMAKE_CURRENT_BINARY_DIR} ++# --library="ayatana-appindicator-glib" ++# --output "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.gir" ++#) ++# ++#install (FILES "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.gir" DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/gir-1.0") ++# ++## AyatanaAppIndicatorGlib-2.0.typelib ++# ++#add_custom_command ( ++# OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.typelib" ++# DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.gir" ++# WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ++# COMMAND ++# ${INTROSPECTION_COMPILER} ++# --includedir=${CMAKE_CURRENT_BINARY_DIR} ++# ${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.gir ++# -o "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.typelib" ++#) ++# ++#install (FILES "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.typelib" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/girepository-1.0") ++# ++#add_custom_target ("src" ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.typelib") ++# +\ No newline at end of file From c6f4bc29984537706189a786a9dbc2846e9b6d16 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 15 Nov 2025 08:35:20 -0700 Subject: [PATCH 3131/3180] dconf: patch for redox --- recipes/wip/libs/gtk/dconf/recipe.toml | 1 + recipes/wip/libs/gtk/dconf/redox.patch | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 recipes/wip/libs/gtk/dconf/redox.patch diff --git a/recipes/wip/libs/gtk/dconf/recipe.toml b/recipes/wip/libs/gtk/dconf/recipe.toml index 1cefa704..40fcd469 100644 --- a/recipes/wip/libs/gtk/dconf/recipe.toml +++ b/recipes/wip/libs/gtk/dconf/recipe.toml @@ -1,6 +1,7 @@ [source] tar = "https://download.gnome.org/sources/dconf/0.49/dconf-0.49.0.tar.xz" blake3 = "41ee23bdab3208f7a08efa134a481c852874dc5846433a665c5a5149511a7659" +patches = ["redox.patch"] [build] dependencies = [ diff --git a/recipes/wip/libs/gtk/dconf/redox.patch b/recipes/wip/libs/gtk/dconf/redox.patch new file mode 100644 index 00000000..4fe5cfc5 --- /dev/null +++ b/recipes/wip/libs/gtk/dconf/redox.patch @@ -0,0 +1,12 @@ +diff -ruwN source-old/shm/dconf-shm.c source/shm/dconf-shm.c +--- source-old/shm/dconf-shm.c 2025-09-15 09:53:57.000000000 -0600 ++++ source/shm/dconf-shm.c 2025-11-15 08:08:47.412198178 -0700 +@@ -148,7 +148,7 @@ + + close (fd); + +- unlink (filename); ++ //TODO: redoxfs bug: unlink (filename); + } + + g_free (filename); From 98dac32a9a34d63119363bb5b818c7f17097d265 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 15 Nov 2025 08:44:50 -0700 Subject: [PATCH 3132/3180] Add mate-control-center --- .../x11/mate/mate-control-center/recipe.toml | 17 +++++ .../x11/mate/mate-control-center/redox.patch | 76 +++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 recipes/wip/x11/mate/mate-control-center/recipe.toml create mode 100644 recipes/wip/x11/mate/mate-control-center/redox.patch diff --git a/recipes/wip/x11/mate/mate-control-center/recipe.toml b/recipes/wip/x11/mate/mate-control-center/recipe.toml new file mode 100644 index 00000000..5e91b912 --- /dev/null +++ b/recipes/wip/x11/mate/mate-control-center/recipe.toml @@ -0,0 +1,17 @@ +[source] +tar = "https://github.com/mate-desktop/mate-control-center/archive/refs/tags/v1.28.1.tar.gz" +blake3 = "78ef68e12d0f5d68f62953999e55061a0ef911eceecd2dc66b9242f6b84c143b" +patches = ["redox.patch"] + +[build] +dependencies = [ + "libmate-desktop-2", + "libmate-menu", + "libmatekbd", + "libxscrnsaver", + "marco", +] +template = "meson" +mesonflags = [ + "-Dlibappindicator=no", +] diff --git a/recipes/wip/x11/mate/mate-control-center/redox.patch b/recipes/wip/x11/mate/mate-control-center/redox.patch new file mode 100644 index 00000000..54090096 --- /dev/null +++ b/recipes/wip/x11/mate/mate-control-center/redox.patch @@ -0,0 +1,76 @@ +diff -ruwN source-old/capplets/display/meson.build source/capplets/display/meson.build +--- source-old/capplets/display/meson.build 2024-05-22 13:44:05.000000000 -0600 ++++ source/capplets/display/meson.build 2025-11-15 08:43:15.498757975 -0700 +@@ -49,12 +49,13 @@ + install_dir: mcc_desktopdir + ) + +-policy = 'org.mate.randr.policy' +- +-i18n.merge_file( +- input: policy + '.in', +- output: policy, +- po_dir: po_dir, +- install: true, +- install_dir: mcc_policydir, +-) ++#TODO: fails to merge ++#policy = 'org.mate.randr.policy' ++# ++#i18n.merge_file( ++# input: policy + '.in', ++# output: policy, ++# po_dir: po_dir, ++# install: true, ++# install_dir: mcc_policydir, ++#) +diff -ruwN source-old/capplets/meson.build source/capplets/meson.build +--- source-old/capplets/meson.build 2024-05-22 13:44:05.000000000 -0600 ++++ source/capplets/meson.build 2025-11-15 08:20:38.584035658 -0700 +@@ -8,6 +8,6 @@ + subdir('keyboard') + subdir('mouse') + subdir('network') +-subdir('system-info') +-subdir('time-admin') ++#subdir('system-info') ++#subdir('time-admin') + subdir('windows') +diff -ruwN source-old/meson.build source/meson.build +--- source-old/meson.build 2024-05-22 13:44:05.000000000 -0600 ++++ source/meson.build 2025-11-15 08:42:11.646734896 -0700 +@@ -75,9 +75,9 @@ + xcursor_dep = dependency('xcursor') + dconf_dep = dependency('dconf', version: '>= 0.13.4') + fontconfig_dep = dependency('fontconfig') +-gtop_dep = dependency('libgtop-2.0') +-udisks2_dep = dependency('udisks2') +-polkit_dep = dependency('polkit-gobject-1') ++#gtop_dep = dependency('libgtop-2.0') ++#udisks2_dep = dependency('udisks2') ++#polkit_dep = dependency('polkit-gobject-1') + matekbd_dep = dependency('libmatekbd', version: '>=1.17.0') + matekbdui_dep = dependency('libmatekbdui', version: '>=1.17.0') + xklavier_dep = dependency('libxklavier', version: '>= 5.2') +@@ -120,10 +120,10 @@ + endif + else + appindicator = false +- ayatana = true ++ ayatana = false + endif + appindicator_dep = dependency('appindicator3-0.1', version: '>= 0.0.13', required: appindicator) +-ayatana_dep = dependency('ayatana-appindicator3-0.1', version: '>= 0.0.13', required: ayatana) ++#ayatana_dep = dependency('ayatana-appindicator3-0.1', version: '>= 0.0.13', required: ayatana) + config_h.set('HAVE_UBUNTU_APPINDICATOR', appindicator) + gnome = import('gnome') + i18n = import('i18n') +@@ -155,7 +155,7 @@ + subdir('help') + subdir('font-viewer') + subdir('capplets') +-subdir('typing-break') ++#subdir('typing-break') + subdir('shell') + + gnome.post_install( From 16b3b50acd4ed6a511e363678f0d54405c137b3f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 15 Nov 2025 11:10:03 -0700 Subject: [PATCH 3133/3180] libnotify: update and fix --- recipes/wip/libs/other/libnotify/recipe.toml | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/recipes/wip/libs/other/libnotify/recipe.toml b/recipes/wip/libs/other/libnotify/recipe.toml index 9e66bfe3..6efb5c3f 100644 --- a/recipes/wip/libs/other/libnotify/recipe.toml +++ b/recipes/wip/libs/other/libnotify/recipe.toml @@ -1,11 +1,15 @@ -#TODO not compiled or tested [source] -tar = "https://download.gnome.org/sources/libnotify/0.8/libnotify-0.8.3.tar.xz" +tar = "https://download.gnome.org/sources/libnotify/0.8/libnotify-0.8.4.tar.xz" +blake3 = "1c749e4f1cc85f88348bb363b6d78c8373baa19a6db4d2b3a4cf537c1af6b929" + [build] -template = "meson" dependencies = [ - "gtk3", "gdk-pixbuf", - "gobject-introspection", - "glib", + "gtk3", ] +template = "meson" +mesonflags = [ + "-Dgtk_doc=false", + "-Dintrospection=disabled", +] + From ae7ce2d12c6bc4887263876535fe79e188e923ae Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 15 Nov 2025 11:10:16 -0700 Subject: [PATCH 3134/3180] Add dbus-glib --- recipes/wip/x11/mate/dbus-glib/recipe.toml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 recipes/wip/x11/mate/dbus-glib/recipe.toml diff --git a/recipes/wip/x11/mate/dbus-glib/recipe.toml b/recipes/wip/x11/mate/dbus-glib/recipe.toml new file mode 100644 index 00000000..c18fa807 --- /dev/null +++ b/recipes/wip/x11/mate/dbus-glib/recipe.toml @@ -0,0 +1,19 @@ +[source] +tar = "https://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-0.114.tar.gz" +blake3 = "a632fb16525a201dd159b9538c6009ec717403d580a3741cbf96fd6f9af2828b" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "dbus", + "expat", + "glib", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure --with-dbus-binding-tool="$(which dbus-binding-tool)" +""" From 8b2f3f5bb7429a07d57ea4d93c325b9f9a9e3d6f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 15 Nov 2025 11:10:25 -0700 Subject: [PATCH 3135/3180] Add mate-session-manager --- .../x11/mate/mate-session-manager/recipe.toml | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 recipes/wip/x11/mate/mate-session-manager/recipe.toml diff --git a/recipes/wip/x11/mate/mate-session-manager/recipe.toml b/recipes/wip/x11/mate/mate-session-manager/recipe.toml new file mode 100644 index 00000000..519cb3e3 --- /dev/null +++ b/recipes/wip/x11/mate/mate-session-manager/recipe.toml @@ -0,0 +1,20 @@ +[source] +tar = "https://github.com/mate-desktop/mate-session-manager/releases/download/v1.28.0/mate-session-manager-1.28.0.tar.xz" +blake3 = "c76fd3064f4697180006cc2562a0ac55ddfa40b4029047f58c8dcc790606a9a6" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "dbus-glib", + "gtk3", + "libsm", + "libxcomposite", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From 855e47ba3f6c4a15ad107091691f8ebe0c7e71ec Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 15 Nov 2025 11:11:58 -0700 Subject: [PATCH 3136/3180] Add caja --- recipes/wip/x11/mate/caja/recipe.toml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 recipes/wip/x11/mate/caja/recipe.toml diff --git a/recipes/wip/x11/mate/caja/recipe.toml b/recipes/wip/x11/mate/caja/recipe.toml new file mode 100644 index 00000000..79f77db5 --- /dev/null +++ b/recipes/wip/x11/mate/caja/recipe.toml @@ -0,0 +1,20 @@ +[source] +tar = "https://github.com/mate-desktop/caja/releases/download/v1.26.4/caja-1.26.4.tar.xz" +blake3 = "a70f5ce8dcb038d78346b385b2abd4d29a3e13c99b368a617c38107a9e725617" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "libice", + "libmate-desktop-2", + "libnotify", + "libsm", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From 90a64746b140ba2fa45b92e31191eb9fb2418e2a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 16 Nov 2025 00:59:23 -0300 Subject: [PATCH 3137/3180] Add recipes --- recipes/wip/dev/cargo-tools/carwash/recipe.toml | 5 +++++ recipes/wip/finance/market/merkato/recipe.toml | 9 +++++++++ recipes/wip/finance/mgmt/gnucash/recipe.toml | 8 ++++++++ .../wip/graphics/viewers/exhibit/recipe.toml | 6 ++++++ recipes/wip/math/gnome-calculator/recipe.toml | 17 +++++++++++++++++ recipes/wip/net/ssh/filessh/recipe.toml | 5 +++++ recipes/wip/net/ssh/termirs/recipe.toml | 5 +++++ recipes/wip/sound/cavasik/recipe.toml | 12 ++++++++++++ recipes/wip/sound/euphonica/recipe.toml | 17 +++++++++++++++++ recipes/wip/terminal/term39/recipe.toml | 5 +++++ 10 files changed, 89 insertions(+) create mode 100644 recipes/wip/dev/cargo-tools/carwash/recipe.toml create mode 100644 recipes/wip/finance/market/merkato/recipe.toml create mode 100644 recipes/wip/finance/mgmt/gnucash/recipe.toml create mode 100644 recipes/wip/graphics/viewers/exhibit/recipe.toml create mode 100644 recipes/wip/math/gnome-calculator/recipe.toml create mode 100644 recipes/wip/net/ssh/filessh/recipe.toml create mode 100644 recipes/wip/net/ssh/termirs/recipe.toml create mode 100644 recipes/wip/sound/cavasik/recipe.toml create mode 100644 recipes/wip/sound/euphonica/recipe.toml create mode 100644 recipes/wip/terminal/term39/recipe.toml diff --git a/recipes/wip/dev/cargo-tools/carwash/recipe.toml b/recipes/wip/dev/cargo-tools/carwash/recipe.toml new file mode 100644 index 00000000..23536826 --- /dev/null +++ b/recipes/wip/dev/cargo-tools/carwash/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/epistates/carwash" +[build] +template = "cargo" diff --git a/recipes/wip/finance/market/merkato/recipe.toml b/recipes/wip/finance/market/merkato/recipe.toml new file mode 100644 index 00000000..436229ca --- /dev/null +++ b/recipes/wip/finance/market/merkato/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/sheep-farm/merkato" +rev = "0.2.0.1" +[build] +template = "meson" +dependencies = [ + "gtk4", +] diff --git a/recipes/wip/finance/mgmt/gnucash/recipe.toml b/recipes/wip/finance/mgmt/gnucash/recipe.toml new file mode 100644 index 00000000..93880f58 --- /dev/null +++ b/recipes/wip/finance/mgmt/gnucash/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +#TODO discover the minimum dependencies from cmake log +# build instructions: https://wiki.gnucash.org/wiki/Building_On_Linux +# dependencies: https://wiki.gnucash.org/wiki/Dependencies +[source] +tar = "https://sourceforge.net/projects/gnucash/files/gnucash%20(stable)/5.13/gnucash-5.13.tar.bz2" +[build] +template = "cmake" diff --git a/recipes/wip/graphics/viewers/exhibit/recipe.toml b/recipes/wip/graphics/viewers/exhibit/recipe.toml new file mode 100644 index 00000000..9bdf621e --- /dev/null +++ b/recipes/wip/graphics/viewers/exhibit/recipe.toml @@ -0,0 +1,6 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Nokse22/Exhibit" +rev = "v1.5.1" +[build] +template = "meson" diff --git a/recipes/wip/math/gnome-calculator/recipe.toml b/recipes/wip/math/gnome-calculator/recipe.toml new file mode 100644 index 00000000..333ffd55 --- /dev/null +++ b/recipes/wip/math/gnome-calculator/recipe.toml @@ -0,0 +1,17 @@ +#TODO not compiled or tested +# lacking build instructions +# build options: https://gitlab.gnome.org/GNOME/gnome-calculator/-/blob/main/meson_options.txt?ref_type=heads +[source] +tar = "https://download.gnome.org/sources/gnome-calculator/49/gnome-calculator-49.1.1.tar.xz" +[build] +template = "meson" +mesonflags = [ + "-Ddisable-introspection=true", + "-Ddoc=false", +] +#dependencies = [ +# "glib", +# "libsoup", +# "mpc", +# "mpfr", +#] diff --git a/recipes/wip/net/ssh/filessh/recipe.toml b/recipes/wip/net/ssh/filessh/recipe.toml new file mode 100644 index 00000000..0e6ec4b4 --- /dev/null +++ b/recipes/wip/net/ssh/filessh/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/JayanAXHF/filessh" +[build] +template = "cargo" diff --git a/recipes/wip/net/ssh/termirs/recipe.toml b/recipes/wip/net/ssh/termirs/recipe.toml new file mode 100644 index 00000000..0ebb4402 --- /dev/null +++ b/recipes/wip/net/ssh/termirs/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/caelansar/termirs" +[build] +template = "cargo" diff --git a/recipes/wip/sound/cavasik/recipe.toml b/recipes/wip/sound/cavasik/recipe.toml new file mode 100644 index 00000000..55e4e3ed --- /dev/null +++ b/recipes/wip/sound/cavasik/recipe.toml @@ -0,0 +1,12 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/TheWisker/Cavasik" +rev = "v3.2.0" +[build] +template = "meson" +dependencies = [ + "gtk4", + "libadwaita", +] +[package] +dependencies = ["cava"] diff --git a/recipes/wip/sound/euphonica/recipe.toml b/recipes/wip/sound/euphonica/recipe.toml new file mode 100644 index 00000000..47f1e383 --- /dev/null +++ b/recipes/wip/sound/euphonica/recipe.toml @@ -0,0 +1,17 @@ +#TODO not compiled or tested +# build instructions: https://github.com/htkhiem/euphonica#meson +[source] +git = "https://github.com/htkhiem/euphonica" +[build] +template = "custom" +dependencies = [ + "gtk4", + "libadwaita", + "sqlite3", +] +script = """ +DYNAMIC_INIT +cookbook_cargo +""" +[package] +dependencies = ["mpd"] diff --git a/recipes/wip/terminal/term39/recipe.toml b/recipes/wip/terminal/term39/recipe.toml new file mode 100644 index 00000000..61590f08 --- /dev/null +++ b/recipes/wip/terminal/term39/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/alejandroqh/term39" +[build] +template = "cargo" From 0617e29abb8b794c5c8f775579d9750b5c638930 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 16 Nov 2025 05:12:01 -0300 Subject: [PATCH 3138/3180] Add recipes --- recipes/wip/dev/debug/yetty/recipe.toml | 12 +++++++++++ recipes/wip/games/engines/gemrb/recipe.toml | 15 ++++++++++++++ recipes/wip/games/engines/odamex/recipe.toml | 20 +++++++++++++++++++ .../wip/games/platform/irrlamb/recipe.toml | 15 ++++++++++++++ .../wip/games/shooter/empty-clip/recipe.toml | 15 ++++++++++++++ recipes/wip/games/tools/deutex/recipe.toml | 5 +++++ .../wip/image/editors/ascii-draw/recipe.toml | 11 ++++++++++ recipes/wip/image/editors/drawing/recipe.toml | 13 ++++++++++++ recipes/wip/libs/other/sdl3/recipe.toml | 18 +++++++++++++++++ recipes/wip/net/scan/netpeek/recipe.toml | 7 +++++++ recipes/wip/science/nucleus/recipe.toml | 6 ++++++ 11 files changed, 137 insertions(+) create mode 100644 recipes/wip/dev/debug/yetty/recipe.toml create mode 100644 recipes/wip/games/engines/gemrb/recipe.toml create mode 100644 recipes/wip/games/engines/odamex/recipe.toml create mode 100644 recipes/wip/games/platform/irrlamb/recipe.toml create mode 100644 recipes/wip/games/shooter/empty-clip/recipe.toml create mode 100644 recipes/wip/games/tools/deutex/recipe.toml create mode 100644 recipes/wip/image/editors/ascii-draw/recipe.toml create mode 100644 recipes/wip/image/editors/drawing/recipe.toml create mode 100644 recipes/wip/libs/other/sdl3/recipe.toml create mode 100644 recipes/wip/net/scan/netpeek/recipe.toml create mode 100644 recipes/wip/science/nucleus/recipe.toml diff --git a/recipes/wip/dev/debug/yetty/recipe.toml b/recipes/wip/dev/debug/yetty/recipe.toml new file mode 100644 index 00000000..d4ae60d3 --- /dev/null +++ b/recipes/wip/dev/debug/yetty/recipe.toml @@ -0,0 +1,12 @@ +#TODO missing dependencies: https://github.com/aa55-dev/yeTTY#building +[source] +git = "https://github.com/aa55-dev/yeTTY" +rev = "v0.1.3" +[build] +template = "cmake" +dependencies = [ + "qt6-base", + "qt6-multimedia", + "zstd", + "boost", +] diff --git a/recipes/wip/games/engines/gemrb/recipe.toml b/recipes/wip/games/engines/gemrb/recipe.toml new file mode 100644 index 00000000..76566f83 --- /dev/null +++ b/recipes/wip/games/engines/gemrb/recipe.toml @@ -0,0 +1,15 @@ +#TODO not compiled or tested +# build instructions: https://github.com/gemrb/gemrb/blob/master/INSTALL +[source] +tar = "https://sourceforge.net/projects/gemrb/files/Releases//0.9.4/gemrb-0.9.4-sources.tar.gz" +[build] +template = "cmake" +cmakeflags = [ + "-DSDL_BACKEND=SDL2", +] +dependencies = [ + "sdl2", + "sdl2-mixer", + "zlib", + "libiconv", +] diff --git a/recipes/wip/games/engines/odamex/recipe.toml b/recipes/wip/games/engines/odamex/recipe.toml new file mode 100644 index 00000000..2118bb90 --- /dev/null +++ b/recipes/wip/games/engines/odamex/recipe.toml @@ -0,0 +1,20 @@ +#TODO not compiled or tested +# build instructions: https://github.com/odamex/odamex#compilation-instructions +[source] +tar = "https://github.com/odamex/odamex/releases/download/11.2.0/odamex/odamex-src-11.2.0.tar.xz" +[build] +template = "cmake" +cmakeflags = [ + "-DBUILD_SERVER=0", + "-DBUILD_CLIENT=1", + "-DBUILD_LAUNCHER=1", +] +dependencies = [ + "sdl2", + "sdl2-mixer", + "libpng", + "zlib", + "wxwidgets-gtk3", +] +[package] +dependencies = ["deutex"] diff --git a/recipes/wip/games/platform/irrlamb/recipe.toml b/recipes/wip/games/platform/irrlamb/recipe.toml new file mode 100644 index 00000000..8cf1368f --- /dev/null +++ b/recipes/wip/games/platform/irrlamb/recipe.toml @@ -0,0 +1,15 @@ +#TODO not compiled or tested +[source] +tar = "https://gitlab.com/jazztickets/uploads/-/raw/main/irrlamb-1.0.7-d99c154-src.tar.gz" +[build] +template = "cmake" +dependencies = [ + "openal", + "libvorbis", + "libogg", + "libjpeg", + "libpng", + "freetype2", + "sqlite3", + "zlib", +] diff --git a/recipes/wip/games/shooter/empty-clip/recipe.toml b/recipes/wip/games/shooter/empty-clip/recipe.toml new file mode 100644 index 00000000..ba3f8520 --- /dev/null +++ b/recipes/wip/games/shooter/empty-clip/recipe.toml @@ -0,0 +1,15 @@ +#TODO not compiled or tested +[source] +tar = "https://gitlab.com/jazztickets/uploads/-/raw/main/emptyclip-2.0.3-0d97724f-src.tar.gz" +[build] +template = "cmake" +dependencies = [ + "sdl3", + "libwebp", + "sqlite3", + "freetype2", + "openal", + "libvorbis", + "libogg", + "zlib", +] diff --git a/recipes/wip/games/tools/deutex/recipe.toml b/recipes/wip/games/tools/deutex/recipe.toml new file mode 100644 index 00000000..ff4f0bde --- /dev/null +++ b/recipes/wip/games/tools/deutex/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://github.com/Doom-Utils/deutex/releases/download/v5.2.3/deutex-5.2.3.tar.zst" +[build] +template = "configure" diff --git a/recipes/wip/image/editors/ascii-draw/recipe.toml b/recipes/wip/image/editors/ascii-draw/recipe.toml new file mode 100644 index 00000000..f1443237 --- /dev/null +++ b/recipes/wip/image/editors/ascii-draw/recipe.toml @@ -0,0 +1,11 @@ +#TODO not compiled or tested +# probably missing dependencies +[source] +git = "https://github.com/Nokse22/ascii-draw" +rev = "v1.1.0" +[build] +template = "meson" +dependencies = [ + "gtk4", + "libadwaita", +] diff --git a/recipes/wip/image/editors/drawing/recipe.toml b/recipes/wip/image/editors/drawing/recipe.toml new file mode 100644 index 00000000..77a0e5c4 --- /dev/null +++ b/recipes/wip/image/editors/drawing/recipe.toml @@ -0,0 +1,13 @@ +#TODO not compiled or tested +#TODO determine minimum dependencies from meson log +# build instructions: https://github.com/maoschanz/drawing/blob/master/CONTRIBUTING.md#install-from-source-code +# dependencies: https://github.com/maoschanz/drawing/blob/master/CONTRIBUTING.md#dependencies +[source] +git = "https://github.com/maoschanz/drawing" +rev = "1.0.2" +[build] +template = "meson" +#dependencies = [ +# "gtk3", +# "cairo", +#] diff --git a/recipes/wip/libs/other/sdl3/recipe.toml b/recipes/wip/libs/other/sdl3/recipe.toml new file mode 100644 index 00000000..4171f719 --- /dev/null +++ b/recipes/wip/libs/other/sdl3/recipe.toml @@ -0,0 +1,18 @@ +#TODO not compiled or tested +#TODO determine minimum dependencies from the cmake log +# build instructions: https://github.com/libsdl-org/SDL/blob/main/docs/README-cmake.md +# dependencies: https://github.com/libsdl-org/SDL/blob/main/docs/README-linux.md +[source] +tar = "https://github.com/libsdl-org/SDL/releases/download/release-3.2.26/SDL3-3.2.26.tar.gz" +[build] +template = "cmake" +cmakeflags = [ + "-DSDL_SHARED=ON", + "-DSDL_STATIC=OFF", + "-DSDL_TESTS=OFF", + "-DSDL_DISABLE_INSTALL_DOCS=ON", +] +dependencies = [ + "liborbital", + "mesa", +] diff --git a/recipes/wip/net/scan/netpeek/recipe.toml b/recipes/wip/net/scan/netpeek/recipe.toml new file mode 100644 index 00000000..fc2334e3 --- /dev/null +++ b/recipes/wip/net/scan/netpeek/recipe.toml @@ -0,0 +1,7 @@ +#TODO not compiled or tested +#TODO determine minimum dependencies from meson log +[source] +git = "https://github.com/ZingyTomato/NetPeek" +rev = "v0.2.4" +[build] +template = "meson" diff --git a/recipes/wip/science/nucleus/recipe.toml b/recipes/wip/science/nucleus/recipe.toml new file mode 100644 index 00000000..1dd85d0d --- /dev/null +++ b/recipes/wip/science/nucleus/recipe.toml @@ -0,0 +1,6 @@ +#TODO not compiled or tested +#TODO determine minimum dependencies from meson log +[source] +tar = "https://codeberg.org/lo-vely/nucleus/archive/v2.tar.gz" +[build] +template = "meson" From b82d8f992d182bdd99900b08304b2acfaec5ce75 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 16 Nov 2025 07:33:15 -0300 Subject: [PATCH 3139/3180] Add recipes --- recipes/wip/dev/debug/yetty/recipe.toml | 5 ++++- recipes/wip/games/strategy/chessmd/recipe.toml | 9 +++++++++ .../wip/libs/debug/libbacktrace/recipe.toml | 6 ++++++ recipes/wip/libs/kf6/ktexteditor6/recipe.toml | 5 +++++ recipes/wip/libs/text/libspelling/recipe.toml | 12 ++++++++++++ recipes/wip/net/ssh/ssh-pilot/recipe.toml | 18 ++++++++++++++++++ recipes/wip/sound/kwave/recipe.toml | 16 ++++++++++++++++ recipes/wip/text/gnome-text-editor/recipe.toml | 14 ++++++++++++++ 8 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 recipes/wip/games/strategy/chessmd/recipe.toml create mode 100644 recipes/wip/libs/debug/libbacktrace/recipe.toml create mode 100644 recipes/wip/libs/kf6/ktexteditor6/recipe.toml create mode 100644 recipes/wip/libs/text/libspelling/recipe.toml create mode 100644 recipes/wip/net/ssh/ssh-pilot/recipe.toml create mode 100644 recipes/wip/sound/kwave/recipe.toml create mode 100644 recipes/wip/text/gnome-text-editor/recipe.toml diff --git a/recipes/wip/dev/debug/yetty/recipe.toml b/recipes/wip/dev/debug/yetty/recipe.toml index d4ae60d3..8a1170b6 100644 --- a/recipes/wip/dev/debug/yetty/recipe.toml +++ b/recipes/wip/dev/debug/yetty/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing dependencies: https://github.com/aa55-dev/yeTTY#building +#TODO not compiled or tested [source] git = "https://github.com/aa55-dev/yeTTY" rev = "v0.1.3" @@ -7,6 +7,9 @@ template = "cmake" dependencies = [ "qt6-base", "qt6-multimedia", + "qt6-serialport", "zstd", "boost", + "libbacktrace", + "ktexteditor6", ] diff --git a/recipes/wip/games/strategy/chessmd/recipe.toml b/recipes/wip/games/strategy/chessmd/recipe.toml new file mode 100644 index 00000000..70d51cc9 --- /dev/null +++ b/recipes/wip/games/strategy/chessmd/recipe.toml @@ -0,0 +1,9 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ChessMD/ChessMD" +rev = "v1.0" +[build] +template = "cmake" +dependencies = [ + "qt6-base", +] diff --git a/recipes/wip/libs/debug/libbacktrace/recipe.toml b/recipes/wip/libs/debug/libbacktrace/recipe.toml new file mode 100644 index 00000000..c5751ec6 --- /dev/null +++ b/recipes/wip/libs/debug/libbacktrace/recipe.toml @@ -0,0 +1,6 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ianlancetaylor/libbacktrace" +rev = "b9e40069c0b47a722286b94eb5231f7f05c08713" +[build] +template = "configure" diff --git a/recipes/wip/libs/kf6/ktexteditor6/recipe.toml b/recipes/wip/libs/kf6/ktexteditor6/recipe.toml new file mode 100644 index 00000000..e6ebeec0 --- /dev/null +++ b/recipes/wip/libs/kf6/ktexteditor6/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +tar = "https://download.kde.org/stable/frameworks/6.19/ktexteditor-6.19.0.tar.xz" +[build] +template = "cmake" diff --git a/recipes/wip/libs/text/libspelling/recipe.toml b/recipes/wip/libs/text/libspelling/recipe.toml new file mode 100644 index 00000000..a69b0211 --- /dev/null +++ b/recipes/wip/libs/text/libspelling/recipe.toml @@ -0,0 +1,12 @@ +#TODO not compiled or tested +# lacking build instructions +[source] +tar = "https://download.gnome.org/sources/libspelling/0.4/libspelling-0.4.9.tar.xz" +[build] +template = "meson" +mesonflags = [ + "-Ddocs=false", + "-Dintrospection=false", + "-Dsysproof=false", + "-Dvapi=false", +] diff --git a/recipes/wip/net/ssh/ssh-pilot/recipe.toml b/recipes/wip/net/ssh/ssh-pilot/recipe.toml new file mode 100644 index 00000000..c108956a --- /dev/null +++ b/recipes/wip/net/ssh/ssh-pilot/recipe.toml @@ -0,0 +1,18 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/mfat/sshpilot" +rev = "v4.3.8" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}/usr/share/ssh-pilot" +mkdir -pv "${COOKBOOK_STAGE}"/usr/bin +cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/usr/share/ssh-pilot" +echo "#!/usr/bin/env sh \n python /usr/share/ssh-pilot/run.py" > "${COOKBOOK_STAGE}"/usr/bin/ssh-pilot +chmod a+x "${COOKBOOK_STAGE}"/usr/bin/ssh-pilot +""" +[package] +dependencies = [ + "gtk4", + "libadwaita", +] diff --git a/recipes/wip/sound/kwave/recipe.toml b/recipes/wip/sound/kwave/recipe.toml new file mode 100644 index 00000000..cf7dbe57 --- /dev/null +++ b/recipes/wip/sound/kwave/recipe.toml @@ -0,0 +1,16 @@ +#TODO not compiled or tested +[source] +git = "https://invent.kde.org/multimedia/kwave" +rev = "release/25.08" +shallow_clone = true +[build] +template = "cmake" +dependencies = [ + "libpulse", + "libmad", + #"libsamplerate", + #"libogg", + #"libvorbis", + #"libflac", + #"fftw", +] diff --git a/recipes/wip/text/gnome-text-editor/recipe.toml b/recipes/wip/text/gnome-text-editor/recipe.toml new file mode 100644 index 00000000..ef9911ec --- /dev/null +++ b/recipes/wip/text/gnome-text-editor/recipe.toml @@ -0,0 +1,14 @@ +#TODO not compiled or tested +[source] +tar = "https://download.gnome.org/sources/gnome-text-editor/49/gnome-text-editor-49.0.tar.xz" +[build] +template = "meson" +mesonflags = [ + "-Deditorconfig=false" +] +dependencies = [ + "gtk4", + "gtksourceview", + "libadwaita", + "libspelling", +] From a8050a7382612f72c7123682a449f5e84f3a4b28 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Sun, 16 Nov 2025 08:57:03 -0300 Subject: [PATCH 3140/3180] Improve recipes --- recipes/wip/codecs/faad2/recipe.toml | 7 +++ .../emulators/game-console/azahar/recipe.toml | 13 +++++ .../game-console/dolphin-emu/recipe.toml | 22 +++++---- .../game-console/finalburn-neo/recipe.toml | 2 + .../game-console/gopher64/recipe.toml | 6 ++- .../game-console/jgenesis/recipe.toml | 1 + .../game-console/lime3ds/recipe.toml | 15 ------ .../emulators/game-console/mame/recipe.toml | 6 +-- .../game-console/melonds/recipe.toml | 13 +++-- .../emulators/game-console/pcsx2/recipe.toml | 47 ++++++++++--------- .../emulators/game-console/ppsspp/recipe.toml | 38 ++++++++------- .../emulators/game-console/rpcs3/recipe.toml | 29 +++++++----- .../wip/graphics/shaders/glslang/recipe.toml | 8 ++++ recipes/wip/libs/qt6/qt6-base/recipe.toml | 2 +- .../wip/libs/qt6/qt6-declarative/recipe.toml | 2 +- .../wip/libs/qt6/qt6-multimedia/recipe.toml | 2 +- recipes/wip/libs/qt6/qt6-svg/recipe.toml | 2 +- 17 files changed, 125 insertions(+), 90 deletions(-) create mode 100644 recipes/wip/codecs/faad2/recipe.toml create mode 100644 recipes/wip/emulators/game-console/azahar/recipe.toml delete mode 100644 recipes/wip/emulators/game-console/lime3ds/recipe.toml create mode 100644 recipes/wip/graphics/shaders/glslang/recipe.toml diff --git a/recipes/wip/codecs/faad2/recipe.toml b/recipes/wip/codecs/faad2/recipe.toml new file mode 100644 index 00000000..1fcb6415 --- /dev/null +++ b/recipes/wip/codecs/faad2/recipe.toml @@ -0,0 +1,7 @@ +#TODO not compiled or tested +# lacking build instructions +[source] +git = "https://github.com/knik0/faad2" +rev = "2.11.2" +[build] +template = "cmake" diff --git a/recipes/wip/emulators/game-console/azahar/recipe.toml b/recipes/wip/emulators/game-console/azahar/recipe.toml new file mode 100644 index 00000000..46599aa7 --- /dev/null +++ b/recipes/wip/emulators/game-console/azahar/recipe.toml @@ -0,0 +1,13 @@ +#TODO not compiled or tested +#TODO determine minimum dependencies from cmake log +# build instructions - https://github.com/azahar-emu/azahar/wiki/Building-From-Source#linux +[source] +git = "https://github.com/azahar-emu/azahar" +rev = "2123.3" +shallow_clone = true +[build] +template = "cmake" +dependencies = [ + "qt6-base", + "qt6-multimedia", +] diff --git a/recipes/wip/emulators/game-console/dolphin-emu/recipe.toml b/recipes/wip/emulators/game-console/dolphin-emu/recipe.toml index 4a21189a..0cc024f5 100644 --- a/recipes/wip/emulators/game-console/dolphin-emu/recipe.toml +++ b/recipes/wip/emulators/game-console/dolphin-emu/recipe.toml @@ -1,20 +1,22 @@ #TODO not compiled or tested yet +#TODO discover minimum dependencies from cmake log # build instructions: https://github.com/dolphin-emu/dolphin/wiki/Building-for-Linux -#TODO probably missing dependencies [source] git = "https://github.com/dolphin-emu/dolphin" +rev = "71e15c2875f36458c8f29ee160f01606967bcd13" +shallow_clone = true [build] template = "cmake" dependencies = [ - "ffmpeg6", - "libevdev", - "libusb", - "pango", - "cairo", + #"ffmpeg6", + #"libevdev", + #"libusb", + #"pango", + #"cairo", "qt6-base", "qt6-svg", - "mesa-x11", - "curl", - "libvulkan", - "openal", + #"mesa-x11", + #"curl", + #"libvulkan", + #"openal", ] diff --git a/recipes/wip/emulators/game-console/finalburn-neo/recipe.toml b/recipes/wip/emulators/game-console/finalburn-neo/recipe.toml index 76544a9d..d5fa0a40 100644 --- a/recipes/wip/emulators/game-console/finalburn-neo/recipe.toml +++ b/recipes/wip/emulators/game-console/finalburn-neo/recipe.toml @@ -1,6 +1,8 @@ #TODO missing script for "make", see https://github.com/finalburnneo/FBNeo/blob/master/README-SDL.md#sdl2 [source] git = "https://github.com/finalburnneo/FBNeo" +rev = "9cc496e02a8d1588e1226b648852488a491f1b75" +shallow_clone = true [build] template = "custom" dependencies = [ diff --git a/recipes/wip/emulators/game-console/gopher64/recipe.toml b/recipes/wip/emulators/game-console/gopher64/recipe.toml index 864f953d..f5b60765 100644 --- a/recipes/wip/emulators/game-console/gopher64/recipe.toml +++ b/recipes/wip/emulators/game-console/gopher64/recipe.toml @@ -2,7 +2,11 @@ [source] git = "https://github.com/gopher64/gopher64" [build] -template = "cargo" +template = "custom" dependencies = [ "sdl2", ] +script = """ +DYNAMIC_INIT +cookbook_cargo +""" diff --git a/recipes/wip/emulators/game-console/jgenesis/recipe.toml b/recipes/wip/emulators/game-console/jgenesis/recipe.toml index e1e132d8..5c840598 100644 --- a/recipes/wip/emulators/game-console/jgenesis/recipe.toml +++ b/recipes/wip/emulators/game-console/jgenesis/recipe.toml @@ -7,5 +7,6 @@ dependencies = [ "sdl2", ] script = """ +DYNAMIC_INIT cookbook_cargo_packages jgenesis-cli """ diff --git a/recipes/wip/emulators/game-console/lime3ds/recipe.toml b/recipes/wip/emulators/game-console/lime3ds/recipe.toml deleted file mode 100644 index 621331ec..00000000 --- a/recipes/wip/emulators/game-console/lime3ds/recipe.toml +++ /dev/null @@ -1,15 +0,0 @@ -#TODO not compiled or tested -# build instructions - https://github.com/Lime3DS/Lime3DS/wiki/Building-From-Source#linux -[source] -git = "https://github.com/Lime3DS/Lime3DS" -[build] -template = "cmake" -dependencies = [ - "sdl2", - "qt6-base", - "qt6-multimedia", - "portaudio", - "libx11", - "libxext", - "pipewire", -] diff --git a/recipes/wip/emulators/game-console/mame/recipe.toml b/recipes/wip/emulators/game-console/mame/recipe.toml index 52b4b04b..5428ced9 100644 --- a/recipes/wip/emulators/game-console/mame/recipe.toml +++ b/recipes/wip/emulators/game-console/mame/recipe.toml @@ -1,8 +1,8 @@ -#TODO missing script for "make", see https://docs.mamedev.org/initialsetup/compilingmame.html -#TODO make qt5 work +#TODO missing script for gnu make: https://docs.mamedev.org/initialsetup/compilingmame.html [source] git = "https://github.com/mamedev/mame" -rev = "ca50094e8d5467aed7a18c718cdff8903e1bfe27" +rev = "mame0282" +shallow_clone = true [build] template = "custom" dependencies = [ diff --git a/recipes/wip/emulators/game-console/melonds/recipe.toml b/recipes/wip/emulators/game-console/melonds/recipe.toml index 58a0fc1f..22fe56db 100644 --- a/recipes/wip/emulators/game-console/melonds/recipe.toml +++ b/recipes/wip/emulators/game-console/melonds/recipe.toml @@ -1,17 +1,20 @@ #TODO not compiled or tested yet -# build instructions: https://github.com/melonDS-emu/melonDS#linux +# build instructions: https://github.com/melonDS-emu/melonDS/blob/master/BUILD.md#linux [source] git = "https://github.com/melonDS-emu/melonDS" -rev = "430de6b2702bb93faa8c2004aff3fbd084db4a1e" +rev = "1.0" +shallow_clone = true [build] template = "cmake" dependencies = [ "curl", "libpcap", + "libenet", "sdl2", - "qt5-base", - "qt5-multimedia", - "libslirp", + "qt6-base", + "qt6-multimedia", + "qt6-svg", "libarchive", "zstd", + "faad2", ] diff --git a/recipes/wip/emulators/game-console/pcsx2/recipe.toml b/recipes/wip/emulators/game-console/pcsx2/recipe.toml index e974c358..88c5f1f2 100644 --- a/recipes/wip/emulators/game-console/pcsx2/recipe.toml +++ b/recipes/wip/emulators/game-console/pcsx2/recipe.toml @@ -1,26 +1,29 @@ -#TODO not compiled or tested yet -# build instructions: https://github.com/PCSX2/pcsx2/wiki/10-Building-on-Linux -#TODO probably need patches on submodules -#TODO determine dependencies - https://aur.archlinux.org/packages/pcsx2-git -#TODO make all dependencies work +#TODO not compiled or tested +# build instructions: https://pcsx2.net/docs/advanced/building#building-on-linux [source] -git = "https://github.com/PCSX2/pcsx2.git" +git = "https://github.com/PCSX2/pcsx2" +rev = "2.4.x" +shallow_clone = true [build] template = "cmake" -dependencies = [ - "sdl2", - "xz", - "libpng", - "qt6-base", - "qt6-svg", - "mesa-x11", - "libaio", - "harfbuzz", - "libpcap", - "pipewire", - "libsamplerate", - "soundtouch", - "zlib", - "libxml2", - "ffmpeg6", +cmakeflags = [ + "-DCMAKE_CXX_COMPILER_LAUNCHER=ccache", + "-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON", ] +# dependencies = [ +# "sdl2", +# "xz", +# "libpng", +# "qt6-base", +# "qt6-svg", +# "mesa-x11", +# "libaio", +# "harfbuzz", +# "libpcap", +# "pipewire", +# "libsamplerate", +# "soundtouch", +# "zlib", +# "libxml2", +# "ffmpeg6", +# ] diff --git a/recipes/wip/emulators/game-console/ppsspp/recipe.toml b/recipes/wip/emulators/game-console/ppsspp/recipe.toml index a4a3fc1a..54b1621f 100644 --- a/recipes/wip/emulators/game-console/ppsspp/recipe.toml +++ b/recipes/wip/emulators/game-console/ppsspp/recipe.toml @@ -2,24 +2,9 @@ # build instructions: https://github.com/hrydgard/ppsspp/wiki/Build-instructions #git = "https://github.com/jackpot51/ppsspp" # wip orbital port [source] -git = "https://github.com/hrydgard/ppsspp" +tar = "https://github.com/hrydgard/ppsspp/releases/download/v1.19.3/ppsspp-1.19.3.tar.xz" [build] -template = "cmake" -cmakeflags = [ - -DCMAKE_C_FLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" - -DCMAKE_CXX_FLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" - -DOPENGL_opengl_LIBRARY="/dev/null" - -DOPENGL_glx_LIBRARY="/dev/null" - -DUSE_DISCORD=OFF - -DUSE_FFMPEG=OFF - -DUSE_MINIUPNPC=OFF - -DUSE_SYSTEM_LIBSDL2=ON - -DUSING_EGL=OFF - -DUSING_FBDEV=OFF - -DUSING_GLES2=OFF - -DUSING_X11_VULKAN=OFF - -DUNIX=ON -] +template = "custom" dependencies = [ #"liborbital", "llvm18", @@ -32,3 +17,22 @@ dependencies = [ "fontconfig", "curl", ] +script = """ +DYNAMIC_INIT +COOKBOOK_CMAKE_FLAGS+=( + -DCMAKE_C_FLAGS="-I"${COOKBOOK_SYSROOT}/include" -I"${COOKBOOK_SYSROOT}/include/SDL2"" + -DCMAKE_CXX_FLAGS="-I"${COOKBOOK_SYSROOT}/include" -I"${COOKBOOK_SYSROOT}/include/SDL2"" + -DOPENGL_opengl_LIBRARY="/dev/null" + -DOPENGL_glx_LIBRARY="/dev/null" + -DUSE_DISCORD=OFF + -DUSE_FFMPEG=OFF + -DUSE_MINIUPNPC=OFF + -DUSE_SYSTEM_LIBSDL2=ON + -DUSING_EGL=OFF + -DUSING_FBDEV=OFF + -DUSING_GLES2=OFF + -DUSING_X11_VULKAN=OFF + -DUNIX=ON +) +cookbook_cmake +""" diff --git a/recipes/wip/emulators/game-console/rpcs3/recipe.toml b/recipes/wip/emulators/game-console/rpcs3/recipe.toml index 1dee01cb..a1796e90 100644 --- a/recipes/wip/emulators/game-console/rpcs3/recipe.toml +++ b/recipes/wip/emulators/game-console/rpcs3/recipe.toml @@ -1,9 +1,11 @@ #TODO not compiled or tested yet -#TODO missing dependencies -# build instructions: https://github.com/RPCS3/rpcs3/blob/master/BUILDING.md#linux-1 -# customization - https://wiki.rpcs3.net/index.php?title=Help:Building_RPCS3#CMake_Build_Options +#TODO determine minimum dependencies from cmake log +# build instructions: https://github.com/RPCS3/rpcs3/blob/master/BUILDING.md +# customization: https://wiki.rpcs3.net/index.php?title=Help:Building_RPCS3#CMake_Build_Options [source] git = "https://github.com/RPCS3/rpcs3" +rev = "db8437b01cf24ba1146cf7d22e1be02202cc98f4" +shallow_clone = true [build] template = "cmake" cmakeflags = [ @@ -18,19 +20,20 @@ cmakeflags = [ "-DUSE_VULKAN=OFF", ] dependencies = [ - "mesa-x11", + #"mesa-x11", "qt6-base", "qt6-multimedia", "qt6-svg", - "sdl2", - "eudev", - "glew", - "openal", - "zlib", - "libpng", + "qt6-declarative", + #"sdl2", + #"eudev", + #"glew", + #"openal", + #"zlib", + #"libpng", #"libevdev", - "libedit", + #"libedit", #"libvulkan", - "pulseaudio", - "ffmpeg6", + #"pulseaudio", + #"ffmpeg6", ] diff --git a/recipes/wip/graphics/shaders/glslang/recipe.toml b/recipes/wip/graphics/shaders/glslang/recipe.toml new file mode 100644 index 00000000..64984516 --- /dev/null +++ b/recipes/wip/graphics/shaders/glslang/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +# build instructions: https://github.com/KhronosGroup/glslang#building-cmake +[source] +git = "https://github.com/KhronosGroup/glslang" +rev = "16.0.0" +shallow_clone = true +[build] +template = "cmake" diff --git a/recipes/wip/libs/qt6/qt6-base/recipe.toml b/recipes/wip/libs/qt6/qt6-base/recipe.toml index 483f0a83..3a601c28 100644 --- a/recipes/wip/libs/qt6/qt6-base/recipe.toml +++ b/recipes/wip/libs/qt6/qt6-base/recipe.toml @@ -1,6 +1,6 @@ #TODO not compiled or tested #TODO determine dependencies [source] -tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtbase-everywhere-src-6.6.1.tar.xz" +tar = "https://download.qt.io/official_releases/qt/6.10/6.10.0/submodules/qtbase-everywhere-src-6.10.0.tar.xz" [build] template = "configure" diff --git a/recipes/wip/libs/qt6/qt6-declarative/recipe.toml b/recipes/wip/libs/qt6/qt6-declarative/recipe.toml index 0fe1ddfb..174ab352 100644 --- a/recipes/wip/libs/qt6/qt6-declarative/recipe.toml +++ b/recipes/wip/libs/qt6/qt6-declarative/recipe.toml @@ -1,5 +1,5 @@ #TODO not compiled or tested [source] -tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtdeclarative-everywhere-src-6.6.1.tar.xz" +tar = "https://download.qt.io/official_releases/qt/6.10/6.10.0/submodules/qtdeclarative-everywhere-src-6.10.0.tar.xz" [build] template = "configure" diff --git a/recipes/wip/libs/qt6/qt6-multimedia/recipe.toml b/recipes/wip/libs/qt6/qt6-multimedia/recipe.toml index 20b9558c..e373ff40 100644 --- a/recipes/wip/libs/qt6/qt6-multimedia/recipe.toml +++ b/recipes/wip/libs/qt6/qt6-multimedia/recipe.toml @@ -1,5 +1,5 @@ #TODO not compiled or tested [source] -tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtmultimedia-everywhere-src-6.6.1.tar.xz" +tar = "https://download.qt.io/official_releases/qt/6.10/6.10.0/submodules/qtmultimedia-everywhere-src-6.10.0.tar.xz" [build] template = "configure" diff --git a/recipes/wip/libs/qt6/qt6-svg/recipe.toml b/recipes/wip/libs/qt6/qt6-svg/recipe.toml index 254293c0..02d8513f 100644 --- a/recipes/wip/libs/qt6/qt6-svg/recipe.toml +++ b/recipes/wip/libs/qt6/qt6-svg/recipe.toml @@ -1,5 +1,5 @@ #TODO not compiled or tested [source] -tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtsvg-everywhere-src-6.6.1.tar.xz" +tar = "https://download.qt.io/official_releases/qt/6.10/6.10.0/submodules/qtsvg-everywhere-src-6.10.0.tar.xz" [build] template = "configure" From 50258b02c90f55f1a857f79ea04c32f8ceb33cc6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 16 Nov 2025 08:41:48 -0700 Subject: [PATCH 3141/3180] dbus: update patch --- recipes/wip/services/dbus/redox.patch | 47 +++++++-------------------- 1 file changed, 12 insertions(+), 35 deletions(-) diff --git a/recipes/wip/services/dbus/redox.patch b/recipes/wip/services/dbus/redox.patch index a974ac55..59950bde 100644 --- a/recipes/wip/services/dbus/redox.patch +++ b/recipes/wip/services/dbus/redox.patch @@ -1,6 +1,6 @@ diff -ruwN source-old/dbus/dbus-pollable-set-epoll.c source/dbus/dbus-pollable-set-epoll.c --- source-old/dbus/dbus-pollable-set-epoll.c 2025-02-27 09:29:06.000000000 -0700 -+++ source/dbus/dbus-pollable-set-epoll.c 2025-11-10 10:21:36.940618496 -0700 ++++ source/dbus/dbus-pollable-set-epoll.c 2025-11-14 17:50:42.043671507 -0700 @@ -30,7 +30,7 @@ #include #include @@ -10,38 +10,15 @@ diff -ruwN source-old/dbus/dbus-pollable-set-epoll.c source/dbus/dbus-pollable-s # error This file is for Linux epoll(4) #endif -diff -ruwN source-old/dbus/dbus-sysdeps-unix.c source/dbus/dbus-sysdeps-unix.c ---- source-old/dbus/dbus-sysdeps-unix.c 2025-02-27 09:29:06.000000000 -0700 -+++ source/dbus/dbus-sysdeps-unix.c 2025-11-09 08:33:43.299893494 -0700 -@@ -2611,6 +2611,7 @@ - if (client_fd.fd < 0 && (errno == ENOSYS || errno == EINVAL)) - #endif - { -+ _dbus_verbose ("accept %d, %p, %p\n", listen_fd.fd, &addr, &addrlen); - client_fd.fd = accept (listen_fd.fd, &addr, &addrlen); - } +diff -ruwN source-old/dbus/dbus-spawn-unix.c source/dbus/dbus-spawn-unix.c +--- source-old/dbus/dbus-spawn-unix.c 2025-02-27 09:29:06.000000000 -0700 ++++ source/dbus/dbus-spawn-unix.c 2025-11-15 07:42:03.360862350 -0700 +@@ -1326,7 +1326,7 @@ + if (!make_pipe (child_err_report_pipe, error)) + goto cleanup_and_fail; -@@ -4962,6 +4963,11 @@ - void - _dbus_close_all (void) - { -+#if defined(__redox__) -+ fprintf(stderr, "ignoring _dbus_close_all until relibc internal FDs are in upper fd table\n"); -+ return; -+#endif -+ - #ifdef HAVE_CLOSE_RANGE - if (close_range (3, INT_MAX, 0) == 0) - return; -@@ -4981,6 +4987,11 @@ - void - _dbus_fd_set_all_close_on_exec (void) - { -+#if defined(__redox__) -+ fprintf(stderr, "ignoring _dbus_fd_set_all_close_on_exec until relibc internal FDs are in upper fd table\n"); -+ return; -+#endif -+ - #if defined(HAVE_CLOSE_RANGE) && defined(CLOSE_RANGE_CLOEXEC) - if (close_range (3, INT_MAX, CLOSE_RANGE_CLOEXEC) == 0) - return; +- if (!_dbus_socketpair (&babysitter_pipe[0], &babysitter_pipe[1], TRUE, error)) ++ if (!_dbus_socketpair (&babysitter_pipe[0], &babysitter_pipe[1], FALSE, error)) + goto cleanup_and_fail; + + /* Setting up the babysitter is only useful in the parent, From b010c6a66f4a8e2937dae5ab7df6cca81032d1d0 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Mon, 17 Nov 2025 00:14:50 +0700 Subject: [PATCH 3142/3180] Fix i586 linker --- .cargo/config.toml | 4 ++++ config.sh | 2 -- recipes/core/drivers/recipe.toml | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index 1c0e5fab..b3058a68 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -2,6 +2,10 @@ linker = "aarch64-unknown-redox-gcc" rustflags = [] +[target.i586-unknown-redox] +linker = "i586-unknown-redox-gcc" +rustflags = [] + [target.i686-unknown-redox] linker = "i686-unknown-redox-gcc" rustflags = [] diff --git a/config.sh b/config.sh index 2a86500d..8e980198 100755 --- a/config.sh +++ b/config.sh @@ -15,8 +15,6 @@ ARCH="${TARGET%%-*}" HOST="$TARGET" if [ x"${HOST}" == x"riscv64gc-unknown-redox" ] ; then HOST="riscv64-unknown-redox" -elif [ x"${HOST}" == x"i586-unknown-redox" ] ; then - HOST="i686-unknown-redox" fi # Cookbook requires correct CWD to work diff --git a/recipes/core/drivers/recipe.toml b/recipes/core/drivers/recipe.toml index df8ffe61..9a836091 100644 --- a/recipes/core/drivers/recipe.toml +++ b/recipes/core/drivers/recipe.toml @@ -26,7 +26,7 @@ BINS=( # Add additional drivers to the list to build, that are not in drivers-initfs # depending on the target architecture case "${TARGET}" in - i686-unknown-redox | x86_64-unknown-redox) + i586-unknown-redox | i686-unknown-redox | x86_64-unknown-redox) BINS+=(ac97d bgad sb16d vboxd) ;; *) From e62afb26be2fa0113e5bb8199654eb184fc6d4df Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 16 Nov 2025 10:23:39 -0700 Subject: [PATCH 3143/3180] luanti: improve recipe, add patch --- .../wip/games/open-world/luanti/recipe.toml | 30 +- .../wip/games/open-world/luanti/redox.patch | 273 ++++++++++++++++++ 2 files changed, 295 insertions(+), 8 deletions(-) create mode 100644 recipes/wip/games/open-world/luanti/redox.patch diff --git a/recipes/wip/games/open-world/luanti/recipe.toml b/recipes/wip/games/open-world/luanti/recipe.toml index c591c12d..301836c7 100644 --- a/recipes/wip/games/open-world/luanti/recipe.toml +++ b/recipes/wip/games/open-world/luanti/recipe.toml @@ -4,20 +4,34 @@ [source] git = "https://github.com/minetest/minetest" branch = "stable-5" -script = """ -git clone --depth 1 https://github.com/minetest/irrlicht.git "${COOKBOOK_SOURCE}"/lib/irrlichtmt -""" +patches = ["redox.patch"] + [build] -template = "cmake" +template = "custom" dependencies = [ + "curl", "freetype2", - "sqlite3", - "zlib", - "libpng", + "libiconv", "libjpeg", "libogg", + "libpng", "libvorbis", + "luajit", "openal", - "curl", + #TODO: openssl not detected by cmake + "openssl1", + "sdl2", + "sqlite3", + "zlib", "zstd", ] +script = """ +DYNAMIC_INIT +COOKBOOK_CMAKE_FLAGS+=( + -DOPENGL_opengl_LIBRARY=/dev/null + -DOPENGL_glx_LIBRARY=/dev/null + -DSDL2_INCLUDE_DIRS="${COOKBOOK_SYSROOT}/include/SDL2" + -DSDL2_LIBRARIES="$("${PKG_CONFIG}" --libs sdl2)" +) +cookbook_cmake +""" diff --git a/recipes/wip/games/open-world/luanti/redox.patch b/recipes/wip/games/open-world/luanti/redox.patch new file mode 100644 index 00000000..059621a9 --- /dev/null +++ b/recipes/wip/games/open-world/luanti/redox.patch @@ -0,0 +1,273 @@ +diff --git a/irr/src/CGUIEditBox.cpp b/irr/src/CGUIEditBox.cpp +index 5639a36a6..37a0b6151 100644 +--- a/irr/src/CGUIEditBox.cpp ++++ b/irr/src/CGUIEditBox.cpp +@@ -464,10 +464,10 @@ void CGUIEditBox::processKeyLR(const SEvent::SKeyInput &input, s32 &new_mark_beg + new_pos = i; + if (std::abs(i - CursorPos) > 2) { + // End of word +- if (!std::iswspace(prev_c) && std::iswspace(c)) ++ if (!::iswspace(prev_c) && ::iswspace(c)) + break; + // End of a sentence. +- if (std::iswpunct(prev_c) && !std::iswpunct(c)) ++ if (iswpunct(prev_c) && !iswpunct(c)) + break; + } + prev_c = c; +diff --git a/irr/src/CIrrDeviceSDL.cpp b/irr/src/CIrrDeviceSDL.cpp +index a44213d7c..dbf3611b1 100644 +--- a/irr/src/CIrrDeviceSDL.cpp ++++ b/irr/src/CIrrDeviceSDL.cpp +@@ -331,7 +331,9 @@ CIrrDeviceSDL::CIrrDeviceSDL(const SIrrlichtCreationParameters ¶m) : + // Minetest has its own code to synthesize mouse events from touch events, + // so we prevent SDL from doing it. + SDL_SetHint(SDL_HINT_TOUCH_MOUSE_EVENTS, "0"); ++#ifdef SDL_HINT_MOUSE_TOUCH_EVENTS + SDL_SetHint(SDL_HINT_MOUSE_TOUCH_EVENTS, "0"); ++#endif + + #if defined(SDL_HINT_APP_NAME) + SDL_SetHint(SDL_HINT_APP_NAME, "Luanti"); +diff --git a/irr/src/CMakeLists.txt b/irr/src/CMakeLists.txt +index b7360311a..b1c578726 100644 +--- a/irr/src/CMakeLists.txt ++++ b/irr/src/CMakeLists.txt +@@ -232,7 +232,7 @@ if(USE_SDL2) + set(USE_SDL2_SHARED TRUE) + endif() + if(NOT ANDROID) +- find_package(SDL2 REQUIRED) ++ #find_package(SDL2 REQUIRED) + else() + # provided by AndroidLibs.cmake + endif() +@@ -246,16 +246,16 @@ if(USE_SDL2) + #error\n\ + #endif\n\ + int main() {}" CHECK_SDL_VERSION) +- if(NOT CHECK_SDL_VERSION) +- message(FATAL_ERROR "SDL2 is too old, required is at least 2.0.10!") +- endif() ++ #if(NOT CHECK_SDL_VERSION) ++ # message(FATAL_ERROR "SDL2 is too old, required is at least 2.0.10!") ++ #endif() + + # ...no target either. +- if(NOT TARGET SDL2::SDL2) +- add_library(SDL2::SDL2 SHARED IMPORTED) +- set_target_properties(SDL2::SDL2 PROPERTIES +- IMPORTED_LOCATION "${SDL2_LIBRARIES}") +- endif() ++ #if(NOT TARGET SDL2::SDL2) ++ # add_library(SDL2::SDL2 SHARED IMPORTED) ++ # set_target_properties(SDL2::SDL2 PROPERTIES ++ # IMPORTED_LOCATION "${SDL2_LIBRARIES}") ++ #endif() + endif() + + # More special config +@@ -583,8 +583,9 @@ target_link_libraries(IrrlichtMt PRIVATE + ${ZLIB_LIBRARY} + ${JPEG_LIBRARY} + ${PNG_LIBRARY} +- "$<$:SDL2::SDL2>" +- "$<$:SDL2::SDL2-static>" ++ ${SDL2_LIBRARIES} ++ #"$<$:SDL2::SDL2>" ++ #"$<$:SDL2::SDL2-static>" + + "$<$:${OPENGL_LIBRARIES}>" + ${EGL_LIBRARY} +diff --git a/src/client/client.cpp b/src/client/client.cpp +index b1dfa5993..aec96371c 100644 +--- a/src/client/client.cpp ++++ b/src/client/client.cpp +@@ -1808,10 +1808,12 @@ void Client::showUpdateProgressTexture(void *args, u32 progress, u32 max_progres + + if (do_draw) { + targs->last_time_ms = time_ms; ++#if !defined(__redox__) + std::wostringstream strm; + strm << targs->text_base << L" " << targs->last_percent << L"%..."; + m_rendering_engine->draw_load_screen(strm.str(), targs->guienv, targs->tsrc, 0, + 72 + (u16) ((18. / 100.) * (double) targs->last_percent)); ++#endif + } + } + +diff --git a/src/porting.cpp b/src/porting.cpp +index 711b65db6..32520eef9 100644 +--- a/src/porting.cpp ++++ b/src/porting.cpp +@@ -25,7 +25,7 @@ + #if !defined(_WIN32) + #include + #include +- #if !defined(__ANDROID__) ++ #if !defined(__ANDROID__) && !defined(__redox__) + #include + #endif + #endif +@@ -883,7 +883,7 @@ static bool open_uri(const std::string &uri) + const char *argv[] = {"open", uri.c_str(), NULL}; + return posix_spawnp(NULL, "open", NULL, NULL, (char**)argv, + (*_NSGetEnviron())) == 0; +-#else ++#elif !defined(__redox__) + const char *argv[] = {"xdg-open", uri.c_str(), NULL}; + return posix_spawnp(NULL, "xdg-open", NULL, NULL, (char**)argv, environ) == 0; + #endif +diff --git a/src/porting.h b/src/porting.h +index 1a4bb9e7b..cc252f3e1 100644 +--- a/src/porting.h ++++ b/src/porting.h +@@ -162,6 +162,12 @@ inline void os_get_clock(struct timespec *ts) + # endif + struct timeval tv; + gettimeofday(&tv, NULL); ++#ifndef TIMEVAL_TO_TIMESPEC ++#define TIMEVAL_TO_TIMESPEC(tv, ts) ( \ ++ (ts)->tv_sec = (tv)->tv_sec, \ ++ (ts)->tv_nsec = (tv)->tv_usec * 1000, \ ++ (void)0 ) ++#endif + TIMEVAL_TO_TIMESPEC(&tv, ts); + #endif + } +diff --git a/src/server.cpp b/src/server.cpp +index 3c03e68a6..4825bcd62 100644 +--- a/src/server.cpp ++++ b/src/server.cpp +@@ -245,10 +245,14 @@ void Server::ShutdownState::tick(float dtime, Server *server) + + std::wstring Server::ShutdownState::getShutdownTimerMessage() const + { ++#if defined(__redox__) ++ return L""; ++#else + std::wstringstream ws; + ws << L"*** Server shutting down in " + << duration_to_string(myround(m_timer)).c_str() << "."; + return ws.str(); ++#endif + } + + /* +@@ -3180,11 +3184,15 @@ std::wstring Server::handleChat(const std::string &name, + if (player) { + switch (player->canSendChatMessage()) { + case RPLAYER_CHATRESULT_FLOODING: { ++#if defined(__redox__) ++ return L""; ++#else + std::wstringstream ws; + ws << L"You cannot send more messages. You are limited to " + << g_settings->getFloat("chat_message_limit_per_10sec") + << L" messages per 10 seconds."; + return ws.str(); ++#endif + } + case RPLAYER_CHATRESULT_KICK: + DenyAccess(player->getPeerId(), SERVER_ACCESSDENIED_CUSTOM_STRING, +diff --git a/src/threading/thread.cpp b/src/threading/thread.cpp +index 679eaa113..59dc8cc63 100644 +--- a/src/threading/thread.cpp ++++ b/src/threading/thread.cpp +@@ -332,7 +332,7 @@ bool Thread::setPriority(int prio) + + return SetThreadPriority(win32_native_handle(), prio); + +-#else ++#elif !defined(__redox__) + + struct sched_param sparam; + int policy; +diff --git a/src/translation.cpp b/src/translation.cpp +index 71469507d..ecb9d1b52 100644 +--- a/src/translation.cpp ++++ b/src/translation.cpp +@@ -126,6 +126,7 @@ void Translations::loadTrTranslation(const std::string &data) + // '\n' may also be escaped by '@'. + // All other escapes are preserved. + ++#if !defined(__redox__) + size_t i = 0; + std::wostringstream word1, word2; + while (i < wline.length() && wline[i] != L'=') { +@@ -192,6 +193,7 @@ void Translations::loadTrTranslation(const std::string &data) + } + + addTranslation(textdomain, word1.str(), word2.str()); ++#endif + } + } + +@@ -341,12 +343,14 @@ void Translations::loadPoEntry(const std::wstring &basefilename, const GettextPl + addTranslation(textdomain, original, translated->second); + } else { + std::vector translations; ++ #if !defined(__redox__) + for (int i = 0; ; i++) { + auto translated = entry.find(L"msgstr[" + std::to_wstring(i) + L"]"); + if (translated == entry.end()) + break; + translations.push_back(translated->second); + } ++ #endif + addPluralTranslation(textdomain, plural_form, original, translations); + addPluralTranslation(textdomain, plural_form, plural->second, translations); + } +diff --git a/src/unittest/test_serialization.cpp b/src/unittest/test_serialization.cpp +index 839a09060..9cbcc056d 100644 +--- a/src/unittest/test_serialization.cpp ++++ b/src/unittest/test_serialization.cpp +@@ -61,15 +61,21 @@ template std::string mkstr(const char (&s)[N]) + void TestSerialization::buildTestStrings() + { + std::ostringstream tmp_os; ++#if !defined(__redox__) + std::wostringstream tmp_os_w; ++#endif + std::ostringstream tmp_os_w_encoded; + for (int i = 0; i < 256; i++) { + tmp_os << (char)i; ++#if !defined(__redox__) + tmp_os_w << (wchar_t)i; ++#endif + tmp_os_w_encoded << (char)0 << (char)i; + } + teststring2 = tmp_os.str(); ++#if !defined(__redox__) + teststring2_w = tmp_os_w.str(); ++#endif + teststring2_w_encoded = tmp_os_w_encoded.str(); + } + +diff --git a/src/util/string.cpp b/src/util/string.cpp +index aeec51cb8..411bdc84a 100644 +--- a/src/util/string.cpp ++++ b/src/util/string.cpp +@@ -721,7 +721,9 @@ static void translate_string(std::wstring_view s, Translations *translations, + continue; + } + output += L'@'; ++ #if !defined (__redox__) + output += std::to_wstring(arg_number); ++ #endif + ++arg_number; + std::wstring arg; + translate_all(s, i, translations, arg); +diff --git a/src/util/string.h b/src/util/string.h +index 78881a9a4..f5a6ed95a 100644 +--- a/src/util/string.h ++++ b/src/util/string.h +@@ -325,7 +325,7 @@ inline bool my_isspace(const char c) + + inline bool my_isspace(const wchar_t c) + { +- return std::iswspace(c); ++ return ::iswspace(c); + } + + /** From 46cd1bd0561bfb14fa4b0ce6626477f21e759c53 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 16 Nov 2025 10:31:51 -0700 Subject: [PATCH 3144/3180] Update redoxer --- Cargo.lock | 877 ++++++++++++++++++++++++++--------------------------- Cargo.toml | 2 +- 2 files changed, 439 insertions(+), 440 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 471f801f..3be77065 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,15 +2,6 @@ # It is not intended for manual editing. version = 4 -[[package]] -name = "addr2line" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" -dependencies = [ - "gimli", -] - [[package]] name = "adler2" version = "2.0.1" @@ -23,16 +14,16 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.4", "cipher", "cpufeatures", ] [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] @@ -58,12 +49,6 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -97,9 +82,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.19" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", "anstyle-parse", @@ -112,9 +97,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.11" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" [[package]] name = "anstyle-parse" @@ -127,22 +112,22 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "anstyle-wincon" -version = "3.0.9" +version = "3.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -187,17 +172,23 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "async-compression" -version = "0.4.25" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40f6024f3f856663b45fd0c9b6f2024034a702f453549449e0d84a305900dad4" +checksum = "93c1f86859c1af3d514fa19e8323147ff10ea98684e6c7b307912509f50e67b2" dependencies = [ - "brotli", + "compression-codecs", + "compression-core", "futures-core", - "memchr", "pin-project-lite", "tokio", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "atty" version = "0.2.14" @@ -215,21 +206,6 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" -[[package]] -name = "backtrace" -version = "0.3.75" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" -dependencies = [ - "addr2line", - "cfg-if 1.0.1", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "windows-targets 0.52.6", -] - [[package]] name = "base64" version = "0.13.1" @@ -256,9 +232,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.1" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" [[package]] name = "blake2" @@ -305,7 +281,7 @@ dependencies = [ "arrayref", "arrayvec 0.7.6", "cc", - "cfg-if 1.0.1", + "cfg-if 1.0.4", "constant_time_eq 0.3.1", ] @@ -320,9 +296,9 @@ dependencies = [ [[package]] name = "brotli" -version = "8.0.1" +version = "8.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9991eea70ea4f293524138648e41ee89b0b2b12ddef3b255effa43c8056e0e0d" +checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -341,9 +317,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4" +checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" dependencies = [ "memchr", "serde", @@ -363,18 +339,18 @@ checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" [[package]] name = "bytemuck" -version = "1.23.1" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.9.3" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ecc273b49b3205b83d648f0690daa588925572cc5063745bfe547fe7ec8e1a1" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", @@ -389,9 +365,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" [[package]] name = "cassowary" @@ -410,10 +386,11 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.29" +version = "1.2.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c1599538de2394445747c8cf7935946e3cc27e9625f889d979bfb2aaf569362" +checksum = "b97463e1064cb1b1c1384ad0a0b9c8abd0988e2a91f52606c80ef14aadb63e36" dependencies = [ + "find-msvc-tools", "shlex", ] @@ -425,9 +402,9 @@ checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" [[package]] name = "cfg-if" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" @@ -441,18 +418,17 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.4", "cipher", "cpufeatures", ] [[package]] name = "chrono" -version = "0.4.41" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ - "android-tzdata", "iana-time-zone", "js-sys", "num-traits", @@ -499,13 +475,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b79c4069c6cad78e2e0cdfcbd26275770669fb39fd308a752dc110e83b9af32" dependencies = [ "castaway", - "cfg-if 1.0.1", + "cfg-if 1.0.4", "itoa", "rustversion", "ryu", "static_assertions", ] +[[package]] +name = "compression-codecs" +version = "0.4.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "680dc087785c5230f8e8843e2e57ac7c1c90488b6a91b88caa265410568f441b" +dependencies = [ + "brotli", + "compression-core", +] + +[[package]] +name = "compression-core" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a9b614a5787ef0c8802a55766480563cb3a93b435898c422ed2a359cf811582" + [[package]] name = "console" version = "0.15.11" @@ -563,11 +555,11 @@ checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.4", ] [[package]] @@ -606,9 +598,9 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crypto-common" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ "generic-array", "typenum", @@ -630,7 +622,7 @@ version = "4.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.4", "cpufeatures", "curve25519-dalek-derive", "fiat-crypto", @@ -687,9 +679,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.4.0" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" dependencies = [ "powerfmt", ] @@ -752,7 +744,7 @@ dependencies = [ "libc", "option-ext", "redox_users 0.5.2", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -772,7 +764,7 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e73e0fee365832cd9b9a53ea62f944cc0d7a4c71f2b9c96a28fc74749517afa" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "chacha20", "curve25519-dalek", "generic-array", @@ -806,9 +798,9 @@ checksum = "f8f59926911ef34d1efb9ea1ee8ca78385df62ce700ccf2bcb149011bd226888" [[package]] name = "env_filter" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" +checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2" dependencies = [ "log", "regex", @@ -835,12 +827,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -879,10 +871,16 @@ dependencies = [ ] [[package]] -name = "flate2" -version = "1.1.2" +name = "find-msvc-tools" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" + +[[package]] +name = "flate2" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" dependencies = [ "crc32fast", "miniz_oxide", @@ -902,9 +900,9 @@ checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] @@ -999,7 +997,7 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.4", "libc", "wasi 0.9.0+wasi-snapshot-preview1", ] @@ -1010,7 +1008,7 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.4", "js-sys", "libc", "wasi 0.11.1+wasi-snapshot-preview1", @@ -1019,29 +1017,23 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.4", "js-sys", "libc", "r-efi", - "wasi 0.14.2+wasi-0.2.4", + "wasip2", "wasm-bindgen", ] -[[package]] -name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - [[package]] name = "globset" -version = "0.4.16" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a1028dfc5f5df5da8a56a73e6c153c9a9708ec57232470703592a3f18e49f5" +checksum = "52dfc19153a48bde0cbd630453615c8151bce3a5adfac7a0aebfbf0a1e1f57e3" dependencies = [ "aho-corasick", "bstr", @@ -1056,7 +1048,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8283e7331b8c93b9756e0cfdbcfb90312852f953c6faf9bf741e684cc3b6ad69" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "crc", "log", "uuid", @@ -1064,15 +1056,21 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.4" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", "equivalent", "foldhash", ] +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" + [[package]] name = "heck" version = "0.5.0" @@ -1138,25 +1136,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] -name = "humantime" -version = "2.2.0" +name = "humansize" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f" +checksum = "6cb51c9a029ddc91b07a787f1d86b53ccfa49b0e86688c946ebe8d3555685dd7" +dependencies = [ + "libm", +] + +[[package]] +name = "humantime" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" [[package]] name = "hyper" -version = "1.6.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" dependencies = [ + "atomic-waker", "bytes", "futures-channel", - "futures-util", + "futures-core", "http", "http-body", "httparse", "itoa", "pin-project-lite", + "pin-utils", "smallvec", "tokio", "want", @@ -1181,9 +1190,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.15" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f66d5bd4c6f02bf0542fad85d626775bab9258cf795a4256dcaf3161114d1df" +checksum = "52e9a2a24dc5c6821e71a7030e1e14b7b632acac55c40e9d2e082c621261bb56" dependencies = [ "base64 0.22.1", "bytes", @@ -1205,9 +1214,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.63" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1229,9 +1238,9 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" dependencies = [ "displaydoc", "potential_utf", @@ -1242,9 +1251,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" dependencies = [ "displaydoc", "litemap", @@ -1255,11 +1264,10 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" dependencies = [ - "displaydoc", "icu_collections", "icu_normalizer_data", "icu_properties", @@ -1270,42 +1278,38 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" [[package]] name = "icu_properties" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" dependencies = [ - "displaydoc", "icu_collections", "icu_locale_core", "icu_properties_data", "icu_provider", - "potential_utf", "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" +checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" [[package]] name = "icu_provider" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" dependencies = [ "displaydoc", "icu_locale_core", - "stable_deref_trait", - "tinystr", "writeable", "yoke", "zerofrom", @@ -1321,9 +1325,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" dependencies = [ "idna_adapter", "smallvec", @@ -1342,9 +1346,9 @@ dependencies = [ [[package]] name = "ignore" -version = "0.4.23" +version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" +checksum = "d3d782a365a015e0f5c04902246139249abf769125006fbe7649e2ee88169b4a" dependencies = [ "crossbeam-deque", "globset", @@ -1358,12 +1362,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.10.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.16.0", ] [[package]] @@ -1410,17 +1414,6 @@ dependencies = [ "syn", ] -[[package]] -name = "io-uring" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b86e202f00093dcba4275d4636b93ef9dd75d025ae560d2521b45ea28ab49013" -dependencies = [ - "bitflags 2.9.1", - "cfg-if 1.0.1", - "libc", -] - [[package]] name = "ipnet" version = "2.11.0" @@ -1429,9 +1422,9 @@ checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "iri-string" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" dependencies = [ "memchr", "serde", @@ -1439,9 +1432,9 @@ dependencies = [ [[package]] name = "is_terminal_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itertools" @@ -1460,9 +1453,9 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "js-sys" -version = "0.3.77" +version = "0.3.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" dependencies = [ "once_cell", "wasm-bindgen", @@ -1476,9 +1469,15 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.174" +version = "0.2.177" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" + +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" @@ -1486,28 +1485,28 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "libc", "redox_syscall", ] [[package]] name = "linux-raw-sys" -version = "0.9.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "litemap" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" [[package]] name = "log" -version = "0.4.27" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" [[package]] name = "lru" @@ -1515,7 +1514,7 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown", + "hashbrown 0.15.5", ] [[package]] @@ -1532,9 +1531,9 @@ checksum = "08ab2867e3eeeca90e844d1940eab391c9dc5228783db2ed999acbc0a9ed375a" [[package]] name = "memchr" -version = "2.7.5" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "memsec" @@ -1560,17 +1559,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", + "simd-adler32", ] [[package]] name = "mio" -version = "1.0.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" dependencies = [ "libc", "wasi 0.11.1+wasi-snapshot-preview1", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -1618,7 +1618,7 @@ checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "crc32fast", "flate2", - "hashbrown", + "hashbrown 0.15.5", "indexmap", "memchr", "ruzstd", @@ -1632,9 +1632,9 @@ checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "once_cell_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "option-ext" @@ -1652,6 +1652,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "parse-size" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "487f2ccd1e17ce8c1bfab3a65c89525af41cfad4c8659021a1e9a2aacd73b89b" + [[package]] name = "partition-identity" version = "0.3.0" @@ -1680,9 +1686,9 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pin-project-lite" @@ -1702,21 +1708,6 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" -[[package]] -name = "pkgar" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db98a45d3bdaf7dceeee5716f3eec9af0e67deec64eec9e717536b89de323c22" -dependencies = [ - "anyhow", - "blake3 0.3.8", - "bytemuck", - "clap", - "pkgar-core 0.1.18", - "pkgar-keys 0.1.18", - "thiserror 2.0.12", -] - [[package]] name = "pkgar" version = "0.1.19" @@ -1727,19 +1718,22 @@ dependencies = [ "clap", "pkgar-core 0.1.19", "pkgar-keys 0.1.19", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] -name = "pkgar-core" -version = "0.1.18" +name = "pkgar" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0fc2b3be98c639c37ff54ebedeba654acc7e9c26b75c2ddff752f90b7a1618" +checksum = "dab99cb7a6d62ca2667eca54ffab93fc77e3f4d19e67a2dce7d65c22adaa7324" dependencies = [ - "bitflags 1.3.2", + "anyhow", "blake3 0.3.8", "bytemuck", - "dryoc", + "clap", + "pkgar-core 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar-keys 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 2.0.17", ] [[package]] @@ -1753,22 +1747,15 @@ dependencies = [ ] [[package]] -name = "pkgar-keys" -version = "0.1.18" +name = "pkgar-core" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4494325c5c408d718d1df657cceeadc2102f02e7c9298343ce230f557f13e80c" +checksum = "cc0f6069f730523018711e77c41b642cf922ef7f4b5505bbf28e7070da4de206" dependencies = [ - "anyhow", - "clap", - "dirs 3.0.2", - "hex", - "lazy_static", - "pkgar-core 0.1.18", - "seckey", - "serde", - "termion", - "thiserror 2.0.12", - "toml 0.8.23", + "bitflags 1.3.2", + "blake3 0.3.8", + "bytemuck", + "dryoc", ] [[package]] @@ -1784,7 +1771,26 @@ dependencies = [ "seckey", "serde", "termion", - "thiserror 2.0.12", + "thiserror 2.0.17", + "toml 0.8.23", +] + +[[package]] +name = "pkgar-keys" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928cd21d644eb3c0a687bc5b76c07a2ace4e96a8f3c948538e4d4e6a5b8aeabf" +dependencies = [ + "anyhow", + "clap", + "dirs 3.0.2", + "hex", + "lazy_static", + "pkgar-core 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", + "seckey", + "serde", + "termion", + "thiserror 2.0.17", "toml 0.8.23", ] @@ -1796,9 +1802,9 @@ checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" [[package]] name = "potential_utf" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" dependencies = [ "zerovec", ] @@ -1815,14 +1821,14 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy 0.8.26", + "zerocopy 0.8.27", ] [[package]] name = "proc-macro2" -version = "1.0.95" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" dependencies = [ "unicode-ident", ] @@ -1838,9 +1844,9 @@ dependencies = [ [[package]] name = "quinn" -version = "0.11.8" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" dependencies = [ "bytes", "cfg_aliases", @@ -1850,7 +1856,7 @@ dependencies = [ "rustc-hash", "rustls", "socket2", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tracing", "web-time", @@ -1858,20 +1864,20 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.12" +version = "0.11.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ "bytes", - "getrandom 0.3.3", + "getrandom 0.3.4", "lru-slab", - "rand 0.9.1", + "rand 0.9.2", "ring", "rustc-hash", "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.12", + "thiserror 2.0.17", "tinyvec", "tracing", "web-time", @@ -1879,23 +1885,23 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.13" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" dependencies = [ "cfg_aliases", "libc", "once_cell", "socket2", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "quote" -version = "1.0.40" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" dependencies = [ "proc-macro2", ] @@ -1919,9 +1925,9 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.3", @@ -1962,7 +1968,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", ] [[package]] @@ -1977,7 +1983,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eabd94c2f37801c20583fc49dd5cd6b0ba68c716787c2dd6ed18571e1e63117b" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "cassowary", "compact_str", "indoc", @@ -1994,9 +2000,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" dependencies = [ "either", "rayon-core", @@ -2004,9 +2010,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -2027,9 +2033,9 @@ dependencies = [ "anyhow", "ignore", "indicatif", - "pkgar 0.1.18", - "pkgar-core 0.1.18", - "pkgar-keys 0.1.18", + "pkgar 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar-core 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar-keys 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", "reqwest", "serde", "serde_derive", @@ -2089,9 +2095,9 @@ dependencies = [ "gpt", "libc", "libredox", - "pkgar 0.1.18", - "pkgar-core 0.1.18", - "pkgar-keys 0.1.18", + "pkgar 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar-core 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", + "pkgar-keys 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.8.5", "redox-pkg", "redox_liner", @@ -2124,7 +2130,7 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", ] [[package]] @@ -2152,14 +2158,14 @@ checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ "getrandom 0.2.16", "libredox", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] name = "redoxer" -version = "0.2.56" +version = "0.2.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1816d3f9e72b724ef9e6768426f767900f778ab3074313f42f9975faa88070fc" +checksum = "2495808593af68ef1267347d23b5c95e682e0260c9512bd7295d6806d0f9237a" dependencies = [ "anyhow", "dirs 6.0.0", @@ -2174,22 +2180,24 @@ dependencies = [ [[package]] name = "redoxfs" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063eedabd74ddf71810e72aae1c73f3485ffc7b1e757d9466b9099046c05d7be" +checksum = "da25f807d736d169077c076bc44837ef250257680a91efedda6891474735a833" dependencies = [ "aes", "argon2", "base64ct", - "bitflags 2.9.1", + "bitflags 2.10.0", "endian-num", "env_logger", "fuser", "getrandom 0.2.16", + "humansize", "libc", "libredox", "log", "lz4_flex", + "parse-size", "range-tree", "redox-path", "redox-scheme", @@ -2203,9 +2211,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.1" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", @@ -2215,9 +2223,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", @@ -2226,15 +2234,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.5" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "reqwest" -version = "0.12.22" +version = "0.12.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531" +checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" dependencies = [ "async-compression", "base64 0.22.1", @@ -2279,7 +2287,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", - "cfg-if 1.0.1", + "cfg-if 1.0.4", "getrandom 0.2.16", "libc", "untrusted", @@ -2298,12 +2306,6 @@ dependencies = [ "crossbeam-utils", ] -[[package]] -name = "rustc-demangle" -version = "0.1.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" - [[package]] name = "rustc-hash" version = "2.1.1" @@ -2321,22 +2323,22 @@ dependencies = [ [[package]] name = "rustix" -version = "1.0.7" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "rustls" -version = "0.23.28" +version = "0.23.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643" +checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" dependencies = [ "once_cell", "ring", @@ -2348,9 +2350,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a" dependencies = [ "web-time", "zeroize", @@ -2358,9 +2360,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.3" +version = "0.103.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" +checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" dependencies = [ "ring", "rustls-pki-types", @@ -2369,9 +2371,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.21" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ruzstd" @@ -2424,9 +2426,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" [[package]] name = "serde" @@ -2450,9 +2452,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.140" +version = "1.0.143" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" dependencies = [ "itoa", "memchr", @@ -2496,7 +2498,7 @@ version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.4", "cpufeatures", "digest 0.10.7", ] @@ -2507,6 +2509,12 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + [[package]] name = "simdutf8" version = "0.1.5" @@ -2515,9 +2523,9 @@ checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "slab" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" [[package]] name = "smallvec" @@ -2527,19 +2535,19 @@ checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "socket2" -version = "0.5.10" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.60.2", ] [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "static_assertions" @@ -2598,9 +2606,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.104" +version = "2.0.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" +checksum = "a99801b5bd34ede4cf3fc688c5919368fea4e4814a4664359503e6015b280aea" dependencies = [ "proc-macro2", "quote", @@ -2629,15 +2637,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.20.0" +version = "3.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ "fastrand", - "getrandom 0.3.3", + "getrandom 0.3.4", "once_cell", "rustix", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -2672,11 +2680,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.12" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" dependencies = [ - "thiserror-impl 2.0.12", + "thiserror-impl 2.0.17", ] [[package]] @@ -2692,9 +2700,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.12" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", @@ -2703,9 +2711,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.41" +version = "0.3.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" dependencies = [ "deranged", "num-conv", @@ -2716,15 +2724,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" [[package]] name = "tinystr" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" dependencies = [ "displaydoc", "zerovec", @@ -2732,9 +2740,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" dependencies = [ "tinyvec_macros", ] @@ -2747,26 +2755,23 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.46.1" +version = "1.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc3a2344dafbe23a245241fe8b09735b521110d30fcefbbd5feb1797ca35d17" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" dependencies = [ - "backtrace", "bytes", - "io-uring", "libc", "mio", "pin-project-lite", - "slab", "socket2", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] name = "tokio-rustls" -version = "0.26.2" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ "rustls", "tokio", @@ -2774,9 +2779,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.15" +version = "0.7.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" dependencies = [ "bytes", "futures-core", @@ -2846,9 +2851,9 @@ dependencies = [ [[package]] name = "toml_parser" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b551886f449aa90d4fe2bdaa9f4a2577ad2dde302c61ecf262d80b116db95c10" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" dependencies = [ "winnow", ] @@ -2886,7 +2891,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "bytes", "futures-util", "http", @@ -2941,21 +2946,21 @@ version = "1.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.4", "static_assertions", ] [[package]] name = "typenum" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" [[package]] name = "unicode-ident" -version = "1.0.18" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] name = "unicode-segmentation" @@ -2994,13 +2999,14 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.4" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ "form_urlencoded", "idna", "percent-encoding", + "serde", ] [[package]] @@ -3017,11 +3023,11 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.17.0" +version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d" +checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "js-sys", "wasm-bindgen", ] @@ -3079,47 +3085,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "wasi" -version = "0.14.2+wasi-0.2.4" +name = "wasip2" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ - "wit-bindgen-rt", + "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.100" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.4", "once_cell", "rustversion", "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.50" +version = "0.4.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.4", "js-sys", "once_cell", "wasm-bindgen", @@ -3128,9 +3121,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3138,31 +3131,31 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" dependencies = [ + "bumpalo", "proc-macro2", "quote", "syn", - "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" dependencies = [ "unicode-ident", ] [[package]] name = "web-sys" -version = "0.3.77" +version = "0.3.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" dependencies = [ "js-sys", "wasm-bindgen", @@ -3180,9 +3173,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8782dd5a41a24eed3a4f40b606249b3e236ca61adf1f25ea4d45c73de122b502" +checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e" dependencies = [ "rustls-pki-types", ] @@ -3205,11 +3198,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -3220,9 +3213,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" -version = "0.61.2" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ "windows-implement", "windows-interface", @@ -3233,9 +3226,9 @@ dependencies = [ [[package]] name = "windows-implement" -version = "0.60.0" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", @@ -3244,9 +3237,9 @@ dependencies = [ [[package]] name = "windows-interface" -version = "0.59.1" +version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", @@ -3255,24 +3248,24 @@ dependencies = [ [[package]] name = "windows-link" -version = "0.1.3" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-result" -version = "0.3.4" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ "windows-link", ] [[package]] name = "windows-strings" -version = "0.4.2" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ "windows-link", ] @@ -3310,7 +3303,16 @@ version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows-targets 0.53.2", + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", ] [[package]] @@ -3346,18 +3348,19 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.2" +version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ - "windows_aarch64_gnullvm 0.53.0", - "windows_aarch64_msvc 0.53.0", - "windows_i686_gnu 0.53.0", - "windows_i686_gnullvm 0.53.0", - "windows_i686_msvc 0.53.0", - "windows_x86_64_gnu 0.53.0", - "windows_x86_64_gnullvm 0.53.0", - "windows_x86_64_msvc 0.53.0", + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", ] [[package]] @@ -3374,9 +3377,9 @@ checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" [[package]] name = "windows_aarch64_msvc" @@ -3392,9 +3395,9 @@ checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_aarch64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" [[package]] name = "windows_i686_gnu" @@ -3410,9 +3413,9 @@ checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" [[package]] name = "windows_i686_gnullvm" @@ -3422,9 +3425,9 @@ checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" [[package]] name = "windows_i686_msvc" @@ -3440,9 +3443,9 @@ checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_i686_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" [[package]] name = "windows_x86_64_gnu" @@ -3458,9 +3461,9 @@ checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" [[package]] name = "windows_x86_64_gnullvm" @@ -3476,9 +3479,9 @@ checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" [[package]] name = "windows_x86_64_msvc" @@ -3494,33 +3497,30 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "windows_x86_64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winnow" -version = "0.7.11" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" dependencies = [ "memchr", ] [[package]] -name = "wit-bindgen-rt" -version = "0.39.0" +name = "wit-bindgen" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags 2.9.1", -] +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "writeable" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" [[package]] name = "xts-mode" @@ -3534,11 +3534,10 @@ dependencies = [ [[package]] name = "yoke" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" dependencies = [ - "serde", "stable_deref_trait", "yoke-derive", "zerofrom", @@ -3546,9 +3545,9 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", @@ -3568,11 +3567,11 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" dependencies = [ - "zerocopy-derive 0.8.26", + "zerocopy-derive 0.8.27", ] [[package]] @@ -3588,9 +3587,9 @@ dependencies = [ [[package]] name = "zerocopy-derive" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", @@ -3620,9 +3619,9 @@ dependencies = [ [[package]] name = "zeroize" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" dependencies = [ "zeroize_derive", ] @@ -3640,9 +3639,9 @@ dependencies = [ [[package]] name = "zerotrie" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" dependencies = [ "displaydoc", "yoke", @@ -3651,9 +3650,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.2" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" dependencies = [ "yoke", "zerofrom", @@ -3662,9 +3661,9 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 9d25c8ec..8874c2dd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -38,7 +38,7 @@ pkgar-core = { path = "pkgar/pkgar-core" } pkgar-keys = { path = "pkgar/pkgar-keys" } redox-pkg = "0.2.8" redox_installer = "0.2.37" -redoxer = "0.2.56" +redoxer = "0.2.57" regex = "1.11" serde = { version = "=1.0.197", features = ["derive"] } termion = "4" From 35d04957696d82c1991802746d0c666752f4cb5d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 16 Nov 2025 13:11:11 -0700 Subject: [PATCH 3145/3180] Add i586-unknown-redox-pkg-config --- bin/i586-unknown-redox-pkg-config | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100755 bin/i586-unknown-redox-pkg-config diff --git a/bin/i586-unknown-redox-pkg-config b/bin/i586-unknown-redox-pkg-config new file mode 100755 index 00000000..18e9816e --- /dev/null +++ b/bin/i586-unknown-redox-pkg-config @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" +export PKG_CONFIG_LIBDIR="${PKG_CONFIG_SYSROOT_DIR}/lib/pkgconfig" +export PKG_CONFIG_PATH="${PKG_CONFIG_SYSROOT_DIR}/share/pkgconfig" + +if [ -n "${COOKBOOK_DYNAMIC}" ] +then + exec pkg-config "$@" +else + exec pkg-config --static "$@" +fi From 4493fcb0a84300fc3528afa96b5b24cbffa5d794 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Mon, 17 Nov 2025 07:11:58 +0700 Subject: [PATCH 3146/3180] Run cargo fetch on fetch --- src/cook/fetch.rs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/cook/fetch.rs b/src/cook/fetch.rs index eca04b0c..33d02bbe 100644 --- a/src/cook/fetch.rs +++ b/src/cook/fetch.rs @@ -306,6 +306,14 @@ pub fn fetch(recipe_dir: &Path, recipe: &Recipe, logger: &PtyOut) -> Result, + logger: &PtyOut, +) -> Result<(), String> { + let mut target_dir = recipe_dir.clone(); + if let Some(package_path) = package_path { + target_dir = target_dir.join(package_path); + } + + let mut command = if is_redox() { + Command::new("cargo") + } else { + let cookbook_redoxer = Path::new("target/release/cookbook_redoxer") + .canonicalize() + .unwrap_or(PathBuf::from("/bin/false")); + Command::new(&cookbook_redoxer) + }; + command.arg("fetch"); + command.arg("--manifest-path"); + command.arg(target_dir.join("Cargo.toml").into_os_string()); + run_command(command, logger)?; + Ok(()) +} + pub(crate) fn fetch_is_patches_newer( recipe_dir: &Path, patches: &Vec, From a2fe40bbfe9fd21d14b7bc9cdd2d72bb5462e4c1 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Mon, 17 Nov 2025 07:30:39 +0700 Subject: [PATCH 3147/3180] Rename to source_dir --- src/cook/fetch.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/cook/fetch.rs b/src/cook/fetch.rs index 33d02bbe..1b31d96b 100644 --- a/src/cook/fetch.rs +++ b/src/cook/fetch.rs @@ -391,13 +391,13 @@ pub(crate) fn fetch_extract_tar( } pub(crate) fn fetch_cargo( - recipe_dir: &PathBuf, + source_dir: &PathBuf, package_path: Option<&String>, logger: &PtyOut, ) -> Result<(), String> { - let mut target_dir = recipe_dir.clone(); + let mut source_dir = source_dir.clone(); if let Some(package_path) = package_path { - target_dir = target_dir.join(package_path); + source_dir = source_dir.join(package_path); } let mut command = if is_redox() { @@ -410,7 +410,7 @@ pub(crate) fn fetch_cargo( }; command.arg("fetch"); command.arg("--manifest-path"); - command.arg(target_dir.join("Cargo.toml").into_os_string()); + command.arg(source_dir.join("Cargo.toml").into_os_string()); run_command(command, logger)?; Ok(()) } From 3809f94aca3a6ab8925318a4b3757eb3a0bf01c2 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Mon, 17 Nov 2025 09:47:44 +0700 Subject: [PATCH 3148/3180] Make cargo template dynamically linked --- recipes/core/profiled/recipe.toml | 6 +++++- recipes/core/redoxfs/recipe.toml | 6 +++++- recipes/demos/exampled/recipe.toml | 6 +++++- recipes/libs/redox-fatfs/recipe.toml | 6 +++++- src/cook/cook_build.rs | 2 +- 5 files changed, 21 insertions(+), 5 deletions(-) diff --git a/recipes/core/profiled/recipe.toml b/recipes/core/profiled/recipe.toml index 1876ca35..18dc3cfc 100644 --- a/recipes/core/profiled/recipe.toml +++ b/recipes/core/profiled/recipe.toml @@ -2,4 +2,8 @@ git = "https://gitlab.redox-os.org/redox-os/profiled.git" [build] -template = "cargo" +template = "custom" +script = """ +# Must be statically linked +cookbook_cargo +""" diff --git a/recipes/core/redoxfs/recipe.toml b/recipes/core/redoxfs/recipe.toml index 31fdb491..c6609e32 100644 --- a/recipes/core/redoxfs/recipe.toml +++ b/recipes/core/redoxfs/recipe.toml @@ -2,4 +2,8 @@ git = "https://gitlab.redox-os.org/redox-os/redoxfs.git" [build] -template = "cargo" +template = "custom" +script = """ +# Must be statically linked +cookbook_cargo +""" diff --git a/recipes/demos/exampled/recipe.toml b/recipes/demos/exampled/recipe.toml index e35bc734..a25312cb 100644 --- a/recipes/demos/exampled/recipe.toml +++ b/recipes/demos/exampled/recipe.toml @@ -2,4 +2,8 @@ git = "https://gitlab.redox-os.org/redox-os/exampled.git" [build] -template = "cargo" +template = "custom" +script = """ +# Must be statically linked +cookbook_cargo +""" diff --git a/recipes/libs/redox-fatfs/recipe.toml b/recipes/libs/redox-fatfs/recipe.toml index 462ccfaa..0052d19c 100644 --- a/recipes/libs/redox-fatfs/recipe.toml +++ b/recipes/libs/redox-fatfs/recipe.toml @@ -1,4 +1,8 @@ [source] git = "https://gitlab.redox-os.org/redox-os/redox-fatfs.git" [build] -template = "cargo" +template = "custom" +script = """ +# Must be statically linked +cookbook_cargo +""" diff --git a/src/cook/cook_build.rs b/src/cook/cook_build.rs index 603e49f9..acd349e4 100644 --- a/src/cook/cook_build.rs +++ b/src/cook/cook_build.rs @@ -298,7 +298,7 @@ pub fn build( cargoflags, } => { format!( - "PACKAGE_PATH={} cookbook_cargo {cargoflags}", + "DYNAMIC_INIT\nPACKAGE_PATH={} cookbook_cargo {cargoflags}", package_path.as_deref().unwrap_or(".") ) } From a32eaa6b02f0bdb800033af07ae5a058493b7701 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Mon, 17 Nov 2025 11:06:16 +0700 Subject: [PATCH 3149/3180] Push more packages as dynamic --- recipes/core/dash/recipe.toml | 1 + recipes/core/findutils/recipe.toml | 1 + recipes/core/ion/recipe.toml | 1 + recipes/core/pkgar/recipe.toml | 10 ++-------- recipes/core/pkgutils/recipe.toml | 1 + recipes/core/userutils/recipe.toml | 1 + recipes/core/uutils/recipe.toml | 1 + recipes/demos/exampled/recipe.toml | 6 +----- recipes/graphics/procedural-wallpapers-rs/recipe.toml | 7 ++----- recipes/gui/installer-gui/recipe.toml | 1 + recipes/gui/orbterm/recipe.toml | 1 + recipes/gui/orbutils/recipe.toml | 1 + recipes/libs/redox-fatfs/recipe.toml | 6 +----- recipes/net/curl/recipe.toml | 1 + recipes/shells/bash/recipe.toml | 1 + recipes/tools/diffutils/recipe.toml | 2 +- recipes/tools/gnu-grep/recipe.toml | 6 ++---- recipes/tools/periodictable/recipe.toml | 2 ++ recipes/tools/sodium/recipe.toml | 1 + recipes/tools/vim/recipe.toml | 1 + 20 files changed, 24 insertions(+), 28 deletions(-) diff --git a/recipes/core/dash/recipe.toml b/recipes/core/dash/recipe.toml index c4bc5751..01e135d9 100644 --- a/recipes/core/dash/recipe.toml +++ b/recipes/core/dash/recipe.toml @@ -5,6 +5,7 @@ branch = "redox" [build] template = "custom" script = """ +DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ ./autogen.sh ./configure \ diff --git a/recipes/core/findutils/recipe.toml b/recipes/core/findutils/recipe.toml index 4da7c2cb..5c862253 100644 --- a/recipes/core/findutils/recipe.toml +++ b/recipes/core/findutils/recipe.toml @@ -4,5 +4,6 @@ git = "https://gitlab.redox-os.org/redox-os/findutils.git" [build] template = "custom" script = """ +DYNAMIC_INIT cookbook_cargo --bin find """ diff --git a/recipes/core/ion/recipe.toml b/recipes/core/ion/recipe.toml index cdabcdc3..2ce52ca5 100644 --- a/recipes/core/ion/recipe.toml +++ b/recipes/core/ion/recipe.toml @@ -4,5 +4,6 @@ git = "https://gitlab.redox-os.org/redox-os/ion.git" [build] template = "custom" script = """ +# Must be statically linked cookbook_cargo """ diff --git a/recipes/core/pkgar/recipe.toml b/recipes/core/pkgar/recipe.toml index 5ad0c751..4a284950 100644 --- a/recipes/core/pkgar/recipe.toml +++ b/recipes/core/pkgar/recipe.toml @@ -2,11 +2,5 @@ git = "https://gitlab.redox-os.org/redox-os/pkgar.git" [build] -template = "custom" -script = """ -"${COOKBOOK_CARGO}" install \ - --path "${COOKBOOK_SOURCE}/pkgar" \ - --root "${COOKBOOK_STAGE}/usr" \ - --locked \ - --no-track -""" +template = "cargo" +package_path = "pkgar" diff --git a/recipes/core/pkgutils/recipe.toml b/recipes/core/pkgutils/recipe.toml index 51ae456b..0c500bd1 100644 --- a/recipes/core/pkgutils/recipe.toml +++ b/recipes/core/pkgutils/recipe.toml @@ -4,6 +4,7 @@ git = "https://gitlab.redox-os.org/redox-os/pkgutils.git" [build] template = "custom" script = """ +# Must be statically linked PACKAGE_PATH=pkg-cli cookbook_cargo """ diff --git a/recipes/core/userutils/recipe.toml b/recipes/core/userutils/recipe.toml index 6d7e2395..666bfeb1 100644 --- a/recipes/core/userutils/recipe.toml +++ b/recipes/core/userutils/recipe.toml @@ -4,6 +4,7 @@ git = "https://gitlab.redox-os.org/redox-os/userutils.git" [build] template = "custom" script = """ +DYNAMIC_INIT cookbook_cargo cp -rv "${COOKBOOK_SOURCE}/res" "${COOKBOOK_STAGE}/etc" ln -s id "${COOKBOOK_STAGE}/usr/bin/whoami" diff --git a/recipes/core/uutils/recipe.toml b/recipes/core/uutils/recipe.toml index 7d3919f2..a803232c 100644 --- a/recipes/core/uutils/recipe.toml +++ b/recipes/core/uutils/recipe.toml @@ -5,6 +5,7 @@ git = "https://github.com/uutils/coreutils" [build] template = "custom" script = """ +DYNAMIC_INIT cookbook_cargo --no-default-features --features feat_os_unix_redox --bin coreutils BINS=( diff --git a/recipes/demos/exampled/recipe.toml b/recipes/demos/exampled/recipe.toml index a25312cb..e35bc734 100644 --- a/recipes/demos/exampled/recipe.toml +++ b/recipes/demos/exampled/recipe.toml @@ -2,8 +2,4 @@ git = "https://gitlab.redox-os.org/redox-os/exampled.git" [build] -template = "custom" -script = """ -# Must be statically linked -cookbook_cargo -""" +template = "cargo" diff --git a/recipes/graphics/procedural-wallpapers-rs/recipe.toml b/recipes/graphics/procedural-wallpapers-rs/recipe.toml index cb4c3a9f..1b9cccac 100644 --- a/recipes/graphics/procedural-wallpapers-rs/recipe.toml +++ b/recipes/graphics/procedural-wallpapers-rs/recipe.toml @@ -2,8 +2,5 @@ git = "https://github.com/lukas-kirschner/procedural-wallpapers-rs.git" [build] -template = "custom" -script = """ -COOKBOOK_SOURCE="${COOKBOOK_SOURCE}"/procedural_wallpapers -cookbook_cargo -""" +template = "cargo" +package_path = "procedural_wallpapers" diff --git a/recipes/gui/installer-gui/recipe.toml b/recipes/gui/installer-gui/recipe.toml index b90147a8..4f95b53d 100644 --- a/recipes/gui/installer-gui/recipe.toml +++ b/recipes/gui/installer-gui/recipe.toml @@ -4,6 +4,7 @@ git = "https://gitlab.redox-os.org/redox-os/installer-gui.git" [build] template = "custom" script = """ +DYNAMIC_INIT cookbook_cargo mkdir -pv "${COOKBOOK_STAGE}/ui/apps" diff --git a/recipes/gui/orbterm/recipe.toml b/recipes/gui/orbterm/recipe.toml index 2b52b776..e67f2a1c 100644 --- a/recipes/gui/orbterm/recipe.toml +++ b/recipes/gui/orbterm/recipe.toml @@ -4,6 +4,7 @@ git = "https://gitlab.redox-os.org/redox-os/orbterm.git" [build] template = "custom" script = """ +DYNAMIC_INIT mkdir -pv "${COOKBOOK_STAGE}/ui" cp -rv "${COOKBOOK_SOURCE}/apps" "${COOKBOOK_STAGE}/ui/apps" diff --git a/recipes/gui/orbutils/recipe.toml b/recipes/gui/orbutils/recipe.toml index 89871fb1..bc506edf 100644 --- a/recipes/gui/orbutils/recipe.toml +++ b/recipes/gui/orbutils/recipe.toml @@ -4,6 +4,7 @@ git = "https://gitlab.redox-os.org/redox-os/orbutils.git" [build] template = "custom" script = """ +DYNAMIC_INIT mkdir -pv "${COOKBOOK_STAGE}/ui" cp -rv "${COOKBOOK_SOURCE}/apps" "${COOKBOOK_STAGE}/ui/apps" diff --git a/recipes/libs/redox-fatfs/recipe.toml b/recipes/libs/redox-fatfs/recipe.toml index 0052d19c..462ccfaa 100644 --- a/recipes/libs/redox-fatfs/recipe.toml +++ b/recipes/libs/redox-fatfs/recipe.toml @@ -1,8 +1,4 @@ [source] git = "https://gitlab.redox-os.org/redox-os/redox-fatfs.git" [build] -template = "custom" -script = """ -# Must be statically linked -cookbook_cargo -""" +template = "cargo" diff --git a/recipes/net/curl/recipe.toml b/recipes/net/curl/recipe.toml index 229d7777..68436ab3 100644 --- a/recipes/net/curl/recipe.toml +++ b/recipes/net/curl/recipe.toml @@ -12,6 +12,7 @@ dependencies = [ "zlib" ] script = """ +DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ GNU_CONFIG_GET config.sub DYNAMIC_INIT diff --git a/recipes/shells/bash/recipe.toml b/recipes/shells/bash/recipe.toml index d06245be..3f6e8b1c 100644 --- a/recipes/shells/bash/recipe.toml +++ b/recipes/shells/bash/recipe.toml @@ -12,6 +12,7 @@ dependencies = [ "readline", ] script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( ac_cv_func_wcwidth=no # TODO: add more wc functions and remove this bash_cv_func_sigsetjmp=no diff --git a/recipes/tools/diffutils/recipe.toml b/recipes/tools/diffutils/recipe.toml index 0261fc5f..a742e025 100644 --- a/recipes/tools/diffutils/recipe.toml +++ b/recipes/tools/diffutils/recipe.toml @@ -9,7 +9,7 @@ autoreconf [build] template = "custom" script = """ -export LDFLAGS="-static" +DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( gt_cv_locale_fr=false gt_cv_locale_fr_utf8=false diff --git a/recipes/tools/gnu-grep/recipe.toml b/recipes/tools/gnu-grep/recipe.toml index 16a4763a..b3ad6e40 100644 --- a/recipes/tools/gnu-grep/recipe.toml +++ b/recipes/tools/gnu-grep/recipe.toml @@ -6,12 +6,10 @@ patches = ["grep.patch"] [build] template = "custom" script = """ +DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( --prefix=/ ) cookbook_configure - -"${TARGET}-strip" "${COOKBOOK_STAGE}/bin/grep" - rm -rf "${COOKBOOK_STAGE}"/{lib,share} -""" \ No newline at end of file +""" diff --git a/recipes/tools/periodictable/recipe.toml b/recipes/tools/periodictable/recipe.toml index cfdfcb69..109b3d42 100644 --- a/recipes/tools/periodictable/recipe.toml +++ b/recipes/tools/periodictable/recipe.toml @@ -4,6 +4,8 @@ git = "https://gitlab.redox-os.org/redox-os/periodictable.git" [build] template = "custom" script = """ +DYNAMIC_INIT +cookbook_cargo mkdir -pv "${COOKBOOK_STAGE}/ui/apps" cp -v "${COOKBOOK_SOURCE}/pkg/manifest" "${COOKBOOK_STAGE}/ui/apps/periodictable" mkdir -pv "${COOKBOOK_STAGE}/ui/icons" diff --git a/recipes/tools/sodium/recipe.toml b/recipes/tools/sodium/recipe.toml index 559e7323..66fe407f 100644 --- a/recipes/tools/sodium/recipe.toml +++ b/recipes/tools/sodium/recipe.toml @@ -4,6 +4,7 @@ git = "https://gitlab.redox-os.org/redox-os/sodium.git" [build] template = "custom" script = """ +DYNAMIC_INIT "${COOKBOOK_CARGO}" install \ --path "${COOKBOOK_SOURCE}" \ --root "${COOKBOOK_STAGE}/usr" \ diff --git a/recipes/tools/vim/recipe.toml b/recipes/tools/vim/recipe.toml index cc5b9363..850bce19 100644 --- a/recipes/tools/vim/recipe.toml +++ b/recipes/tools/vim/recipe.toml @@ -7,6 +7,7 @@ patches = ["vim.patch"] dependencies = ["ncurses"] template = "custom" script = """ +DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ export vim_cv_toupper_broken=no From 087bcd0b41d2cf01825583d91d32a26b2c27554a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 17 Nov 2025 05:38:02 -0300 Subject: [PATCH 3150/3180] Add recipes --- recipes/wip/dev/lang/brimstone/recipe.toml | 5 +++++ recipes/wip/terminal/leadr/recipe.toml | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 recipes/wip/dev/lang/brimstone/recipe.toml create mode 100644 recipes/wip/terminal/leadr/recipe.toml diff --git a/recipes/wip/dev/lang/brimstone/recipe.toml b/recipes/wip/dev/lang/brimstone/recipe.toml new file mode 100644 index 00000000..4a1ab8da --- /dev/null +++ b/recipes/wip/dev/lang/brimstone/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Hans-Halverson/brimstone" +[build] +template = "cargo" diff --git a/recipes/wip/terminal/leadr/recipe.toml b/recipes/wip/terminal/leadr/recipe.toml new file mode 100644 index 00000000..f1697873 --- /dev/null +++ b/recipes/wip/terminal/leadr/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/ll-nick/leadr" +[build] +template = "cargo" From 53baa3ed61c9b6d0fc57921a1d522bb73fa049e3 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 17 Nov 2025 06:07:10 -0300 Subject: [PATCH 3151/3180] Improve and fix recipes --- .../game-console/mupen64plus-core/recipe.toml | 2 +- .../game-console/obliteration/recipe.toml | 2 +- .../emulators/game-console/pcsx2/recipe.toml | 2 +- .../game-console/picodrive/recipe.toml | 18 ++++++++---------- .../emulators/game-console/play/recipe.toml | 2 +- .../emulators/game-console/ppsspp/recipe.toml | 4 ++-- .../game-console/ps1/duckstation/recipe.toml | 3 +-- .../game-console/ps1/pcsx-rearmed/recipe.toml | 4 +++- .../game-console/ps1/rpsx/recipe.toml | 6 +++++- .../game-console/ps1/trapezoid/recipe.toml | 8 ++++++-- .../{shadPS4 => shadps4}/recipe.toml | 2 +- .../emulators/game-console/snes9x/recipe.toml | 2 +- .../game-console/uoyabause/recipe.toml | 2 +- .../emulators/game-console/vita3k/recipe.toml | 2 +- 14 files changed, 33 insertions(+), 26 deletions(-) rename recipes/wip/emulators/game-console/{shadPS4 => shadps4}/recipe.toml (96%) diff --git a/recipes/wip/emulators/game-console/mupen64plus-core/recipe.toml b/recipes/wip/emulators/game-console/mupen64plus-core/recipe.toml index 00d650a8..9eefea69 100644 --- a/recipes/wip/emulators/game-console/mupen64plus-core/recipe.toml +++ b/recipes/wip/emulators/game-console/mupen64plus-core/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for "make", see https://github.com/mupen64plus/mupen64plus-core#2-building-from-source +#TODO missing script for "make": https://github.com/mupen64plus/mupen64plus-core#2-building-from-source [source] tar = "https://github.com/mupen64plus/mupen64plus-core/releases/download/2.6.0/mupen64plus-bundle-src-2.6.0.tar.gz" [build] diff --git a/recipes/wip/emulators/game-console/obliteration/recipe.toml b/recipes/wip/emulators/game-console/obliteration/recipe.toml index 7a361a3c..83c45495 100644 --- a/recipes/wip/emulators/game-console/obliteration/recipe.toml +++ b/recipes/wip/emulators/game-console/obliteration/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script, see: https://github.com/obhq/obliteration/blob/main/docs/building.md +#TODO missing script: https://github.com/obhq/obliteration/blob/main/docs/building.md [source] git = "https://github.com/obhq/obliteration" [build] diff --git a/recipes/wip/emulators/game-console/pcsx2/recipe.toml b/recipes/wip/emulators/game-console/pcsx2/recipe.toml index 88c5f1f2..c8161ae2 100644 --- a/recipes/wip/emulators/game-console/pcsx2/recipe.toml +++ b/recipes/wip/emulators/game-console/pcsx2/recipe.toml @@ -2,7 +2,7 @@ # build instructions: https://pcsx2.net/docs/advanced/building#building-on-linux [source] git = "https://github.com/PCSX2/pcsx2" -rev = "2.4.x" +branch = "2.4.x" shallow_clone = true [build] template = "cmake" diff --git a/recipes/wip/emulators/game-console/picodrive/recipe.toml b/recipes/wip/emulators/game-console/picodrive/recipe.toml index 08655459..73bce526 100644 --- a/recipes/wip/emulators/game-console/picodrive/recipe.toml +++ b/recipes/wip/emulators/game-console/picodrive/recipe.toml @@ -1,13 +1,11 @@ -#TODO configuration problem -#TODO discover the dependencies +#TODO not compiled or tested +#TODO discover the minimum dependencies from autotools log [source] git = "https://github.com/notaz/picodrive" +rev = "26ecb2b6358fefba24e3d68b9eb2efba7f10d5ee" [build] -template = "custom" -script = """ -COOKBOOK_CONFIGURE_FLAGS+=( - --platform=generic - --sound-drivers=sdl -) -cookbook_configure -""" +template = "configure" +configureflags = [ + "--platform=generic", + "--sound-drivers=sdl", +] diff --git a/recipes/wip/emulators/game-console/play/recipe.toml b/recipes/wip/emulators/game-console/play/recipe.toml index b65ade64..8b46ee57 100644 --- a/recipes/wip/emulators/game-console/play/recipe.toml +++ b/recipes/wip/emulators/game-console/play/recipe.toml @@ -1,5 +1,5 @@ #TODO not compiled or tested -# build instructions - https://github.com/jpd002/Play-#building-for-unix +# build instructions: https://github.com/jpd002/Play-#building-for-unix [source] git = "https://github.com/jpd002/Play-" [build] diff --git a/recipes/wip/emulators/game-console/ppsspp/recipe.toml b/recipes/wip/emulators/game-console/ppsspp/recipe.toml index 54b1621f..fe76b84d 100644 --- a/recipes/wip/emulators/game-console/ppsspp/recipe.toml +++ b/recipes/wip/emulators/game-console/ppsspp/recipe.toml @@ -20,8 +20,8 @@ dependencies = [ script = """ DYNAMIC_INIT COOKBOOK_CMAKE_FLAGS+=( - -DCMAKE_C_FLAGS="-I"${COOKBOOK_SYSROOT}/include" -I"${COOKBOOK_SYSROOT}/include/SDL2"" - -DCMAKE_CXX_FLAGS="-I"${COOKBOOK_SYSROOT}/include" -I"${COOKBOOK_SYSROOT}/include/SDL2"" + -DCMAKE_C_FLAGS="-I${COOKBOOK_SYSROOT}/include" -I${COOKBOOK_SYSROOT}/include/SDL2" + -DCMAKE_CXX_FLAGS="-I${COOKBOOK_SYSROOT}/include" -I${COOKBOOK_SYSROOT}/include/SDL2" -DOPENGL_opengl_LIBRARY="/dev/null" -DOPENGL_glx_LIBRARY="/dev/null" -DUSE_DISCORD=OFF diff --git a/recipes/wip/emulators/game-console/ps1/duckstation/recipe.toml b/recipes/wip/emulators/game-console/ps1/duckstation/recipe.toml index aaa892f8..d967efac 100644 --- a/recipes/wip/emulators/game-console/ps1/duckstation/recipe.toml +++ b/recipes/wip/emulators/game-console/ps1/duckstation/recipe.toml @@ -1,6 +1,5 @@ #TODO not compiled or tested yet # build instructions: https://github.com/stenzek/duckstation#linux-1 -#TODO make qt6 work [source] tar = "https://github.com/stenzek/duckstation" [build] @@ -9,5 +8,5 @@ dependencies = [ "sdl2", "qt6-base", "qt6-svg", - "qt6-tools", + #"qt6-tools", ] diff --git a/recipes/wip/emulators/game-console/ps1/pcsx-rearmed/recipe.toml b/recipes/wip/emulators/game-console/ps1/pcsx-rearmed/recipe.toml index 21d232fb..164c6fcd 100644 --- a/recipes/wip/emulators/game-console/ps1/pcsx-rearmed/recipe.toml +++ b/recipes/wip/emulators/game-console/ps1/pcsx-rearmed/recipe.toml @@ -1,5 +1,7 @@ -#TODO discover the dependencies, probably the same of PCSX +#TODO not compiled or tested +#TODO discover the minimum dependencies from autotools log [source] git = "https://github.com/notaz/pcsx_rearmed" +rev = "913629046745fb5f5ce548fcb248f02cf5b9c079" [build] template = "configure" diff --git a/recipes/wip/emulators/game-console/ps1/rpsx/recipe.toml b/recipes/wip/emulators/game-console/ps1/rpsx/recipe.toml index 289d7a83..42593ea6 100644 --- a/recipes/wip/emulators/game-console/ps1/rpsx/recipe.toml +++ b/recipes/wip/emulators/game-console/ps1/rpsx/recipe.toml @@ -2,7 +2,11 @@ [source] git = "https://github.com/KieronJ/rpsx" [build] -template = "cargo" +template = "custom" dependencies = [ "sdl2", ] +script = """ +DYNAMIC_INIT +cookbook_cargo +""" diff --git a/recipes/wip/emulators/game-console/ps1/trapezoid/recipe.toml b/recipes/wip/emulators/game-console/ps1/trapezoid/recipe.toml index 5d171151..a91f5cb0 100644 --- a/recipes/wip/emulators/game-console/ps1/trapezoid/recipe.toml +++ b/recipes/wip/emulators/game-console/ps1/trapezoid/recipe.toml @@ -1,8 +1,12 @@ -#TODO make shaderc work +#TODO not compiled or tested [source] git = "https://github.com/Amjad50/Trapezoid" [build] -template = "cargo" +template = "custom" dependencies = [ "shaderc", ] +script = """ +DYNAMIC_INIT +cookbook_cargo +""" diff --git a/recipes/wip/emulators/game-console/shadPS4/recipe.toml b/recipes/wip/emulators/game-console/shadps4/recipe.toml similarity index 96% rename from recipes/wip/emulators/game-console/shadPS4/recipe.toml rename to recipes/wip/emulators/game-console/shadps4/recipe.toml index d9020247..12bdf524 100644 --- a/recipes/wip/emulators/game-console/shadPS4/recipe.toml +++ b/recipes/wip/emulators/game-console/shadps4/recipe.toml @@ -11,7 +11,7 @@ cmakeflags = [ dependencies = [ "pulseaudio", "openal", - "openssl1", + "openssl3", "libedit", "eudev", "libevdev", diff --git a/recipes/wip/emulators/game-console/snes9x/recipe.toml b/recipes/wip/emulators/game-console/snes9x/recipe.toml index a00eedcb..e263ddf5 100644 --- a/recipes/wip/emulators/game-console/snes9x/recipe.toml +++ b/recipes/wip/emulators/game-console/snes9x/recipe.toml @@ -2,7 +2,7 @@ # build instructions: https://github.com/snes9xgit/snes9x/wiki/Compiling [source] git = "https://github.com/snes9xgit/snes9x" -rev = "8b82d487937d9ea39f7229d280c6f6686c415fe7" +rev = "1.63" [build] template = "cmake" dependencies = [ diff --git a/recipes/wip/emulators/game-console/uoyabause/recipe.toml b/recipes/wip/emulators/game-console/uoyabause/recipe.toml index f5d3c5c6..60d01caa 100644 --- a/recipes/wip/emulators/game-console/uoyabause/recipe.toml +++ b/recipes/wip/emulators/game-console/uoyabause/recipe.toml @@ -1,8 +1,8 @@ #TODO not compiled or tested yet # build instructions: https://github.com/devmiyax/yabause/blob/master/yabause/README.LIN#L77 -#TODO make gtk2 work [source] git = "https://github.com/devmiyax/yabause" +rev = "7d28bd54aa3188e90e4126ff9f7c27b945380488" [build] template = "cmake" dependencies = [ diff --git a/recipes/wip/emulators/game-console/vita3k/recipe.toml b/recipes/wip/emulators/game-console/vita3k/recipe.toml index 65de26d1..5d7216e9 100644 --- a/recipes/wip/emulators/game-console/vita3k/recipe.toml +++ b/recipes/wip/emulators/game-console/vita3k/recipe.toml @@ -7,5 +7,5 @@ template = "cmake" dependencies = [ "sdl2", "gtk3", - "openssl1", + "openssl3", ] From b53e3e7e140c72e00a3fbb5988a807313137547a Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 17 Nov 2025 07:40:09 -0300 Subject: [PATCH 3152/3180] Improve recipes --- .../game-console/ps1/pcsx-rearmed/recipe.toml | 3 ++- .../wip/emulators/game-console/xemu/recipe.toml | 16 ++++++++++------ .../game-console/xenia-canary/recipe.toml | 3 +-- .../wip/emulators/game-console/zsnes/recipe.toml | 2 +- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/recipes/wip/emulators/game-console/ps1/pcsx-rearmed/recipe.toml b/recipes/wip/emulators/game-console/ps1/pcsx-rearmed/recipe.toml index 164c6fcd..bdae67d2 100644 --- a/recipes/wip/emulators/game-console/ps1/pcsx-rearmed/recipe.toml +++ b/recipes/wip/emulators/game-console/ps1/pcsx-rearmed/recipe.toml @@ -1,7 +1,8 @@ #TODO not compiled or tested #TODO discover the minimum dependencies from autotools log +# build instructions: https://github.com/notaz/pcsx_rearmed/blob/master/readme.txt#L22 [source] git = "https://github.com/notaz/pcsx_rearmed" -rev = "913629046745fb5f5ce548fcb248f02cf5b9c079" +rev = "r25" [build] template = "configure" diff --git a/recipes/wip/emulators/game-console/xemu/recipe.toml b/recipes/wip/emulators/game-console/xemu/recipe.toml index dbcb31de..94832bf5 100644 --- a/recipes/wip/emulators/game-console/xemu/recipe.toml +++ b/recipes/wip/emulators/game-console/xemu/recipe.toml @@ -1,17 +1,21 @@ -#TODO probably wrong template, see https://xemu.app/docs/dev/building-from-source/#linux -#TODO make all dependencies work -#TODO maybe require patches on submodules +#TODO adapt build.sh script for cross-compilation +# build instructions: https://xemu.app/docs/dev/building-from-source/#linux [source] -tar = "https://github.com/xemu-project/xemu/releases/download/v0.7.117/src.tar.gz" +tar = "https://github.com/xemu-project/xemu/releases/download/v0.8.115/src.tar.gz" [build] -template = "configure" +template = "custom" dependencies = [ "sdl2", "libepoxy", "libsamplerate", "pixman", "gtk3", - "openssl1", + "openssl3", "libpcap", "libslirp", ] +script = """ +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ +DYNAMIC_INIT +./build.sh +""" diff --git a/recipes/wip/emulators/game-console/xenia-canary/recipe.toml b/recipes/wip/emulators/game-console/xenia-canary/recipe.toml index 1cbd646d..0e11d0b1 100644 --- a/recipes/wip/emulators/game-console/xenia-canary/recipe.toml +++ b/recipes/wip/emulators/game-console/xenia-canary/recipe.toml @@ -1,5 +1,4 @@ -#TODO missing script for building, see https://github.com/xenia-canary/xenia-canary/blob/canary_experimental/docs/building.md#linux -#TODO make all dependencies work +#TODO missing script: https://github.com/xenia-canary/xenia-canary/blob/canary_experimental/docs/building.md#linux [source] git = "https://github.com/xenia-canary/xenia-canary" [build] diff --git a/recipes/wip/emulators/game-console/zsnes/recipe.toml b/recipes/wip/emulators/game-console/zsnes/recipe.toml index 28de5275..9c602662 100644 --- a/recipes/wip/emulators/game-console/zsnes/recipe.toml +++ b/recipes/wip/emulators/game-console/zsnes/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for "make", see https://github.com/xyproto/zsnes#build +#TODO missing script for gnu make: https://github.com/xyproto/zsnes#build [source] git = "https://github.com/xyproto/zsnes" [build] From 8749e089e2bc711fee5676b81c61181e4f7a49ff Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 17 Nov 2025 07:45:44 -0300 Subject: [PATCH 3153/3180] Remove unnecessary recipes --- .../game-console/gameboy/gameboy-emu/recipe.toml | 8 -------- .../game-console/gameboy/mooneye-gb/recipe.toml | 8 -------- .../emulators/game-console/gameboy/rboy/recipe.toml | 5 ----- .../gameboy/rustboy-advance-ng/recipe.toml | 12 ------------ .../emulators/game-console/nes/nestur/recipe.toml | 5 ----- .../wip/emulators/game-console/nes/pinky/recipe.toml | 11 ----------- .../emulators/game-console/nes/potatis/recipe.toml | 8 -------- .../game-console/nes/rusticnes-sdl/recipe.toml | 9 --------- .../game-console/{nes => }/tetanes/recipe.toml | 0 9 files changed, 66 deletions(-) delete mode 100644 recipes/wip/emulators/game-console/gameboy/gameboy-emu/recipe.toml delete mode 100644 recipes/wip/emulators/game-console/gameboy/mooneye-gb/recipe.toml delete mode 100644 recipes/wip/emulators/game-console/gameboy/rboy/recipe.toml delete mode 100644 recipes/wip/emulators/game-console/gameboy/rustboy-advance-ng/recipe.toml delete mode 100644 recipes/wip/emulators/game-console/nes/nestur/recipe.toml delete mode 100644 recipes/wip/emulators/game-console/nes/pinky/recipe.toml delete mode 100644 recipes/wip/emulators/game-console/nes/potatis/recipe.toml delete mode 100644 recipes/wip/emulators/game-console/nes/rusticnes-sdl/recipe.toml rename recipes/wip/emulators/game-console/{nes => }/tetanes/recipe.toml (100%) diff --git a/recipes/wip/emulators/game-console/gameboy/gameboy-emu/recipe.toml b/recipes/wip/emulators/game-console/gameboy/gameboy-emu/recipe.toml deleted file mode 100644 index 027df352..00000000 --- a/recipes/wip/emulators/game-console/gameboy/gameboy-emu/recipe.toml +++ /dev/null @@ -1,8 +0,0 @@ -#TODO update the Redox support in the minifb crate -[source] -git = "https://github.com/mohanson/gameboy" -[build] -template = "cargo" -dependencies = [ - "libxkbcommon", -] diff --git a/recipes/wip/emulators/game-console/gameboy/mooneye-gb/recipe.toml b/recipes/wip/emulators/game-console/gameboy/mooneye-gb/recipe.toml deleted file mode 100644 index 87cc4433..00000000 --- a/recipes/wip/emulators/game-console/gameboy/mooneye-gb/recipe.toml +++ /dev/null @@ -1,8 +0,0 @@ -#TODO Not compiled or tested -[source] -git = "https://github.com/Gekkio/mooneye-gb" -[build] -template = "cargo" -dependencies = [ - "sdl2", -] diff --git a/recipes/wip/emulators/game-console/gameboy/rboy/recipe.toml b/recipes/wip/emulators/game-console/gameboy/rboy/recipe.toml deleted file mode 100644 index d66e4e92..00000000 --- a/recipes/wip/emulators/game-console/gameboy/rboy/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO glutin crate error -[source] -git = "https://github.com/mvdnes/rboy" -[build] -template = "cargo" diff --git a/recipes/wip/emulators/game-console/gameboy/rustboy-advance-ng/recipe.toml b/recipes/wip/emulators/game-console/gameboy/rustboy-advance-ng/recipe.toml deleted file mode 100644 index 93b94fb3..00000000 --- a/recipes/wip/emulators/game-console/gameboy/rustboy-advance-ng/recipe.toml +++ /dev/null @@ -1,12 +0,0 @@ -#TODO Not compiled or tested -[source] -git = "https://github.com/michelhe/rustboyadvance-ng" -[build] -template = "custom" -dependencies = [ - "sdl2", - "sdl2-image", -] -script = """ -cookbook_cargo_packages rustboyadvance-sdl2 -""" diff --git a/recipes/wip/emulators/game-console/nes/nestur/recipe.toml b/recipes/wip/emulators/game-console/nes/nestur/recipe.toml deleted file mode 100644 index 33a86d50..00000000 --- a/recipes/wip/emulators/game-console/nes/nestur/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO compilation error -[source] -git = "https://github.com/spieglt/nestur" -[build] -template = "cargo" diff --git a/recipes/wip/emulators/game-console/nes/pinky/recipe.toml b/recipes/wip/emulators/game-console/nes/pinky/recipe.toml deleted file mode 100644 index fc03064d..00000000 --- a/recipes/wip/emulators/game-console/nes/pinky/recipe.toml +++ /dev/null @@ -1,11 +0,0 @@ -#TODO Not compiled or tested yet -[source] -git = "https://github.com/koute/pinky" -[build] -template = "custom" -dependencies = [ - "sdl2", -] -script = """ -cookbook_cargo_packages pinky-devui -""" diff --git a/recipes/wip/emulators/game-console/nes/potatis/recipe.toml b/recipes/wip/emulators/game-console/nes/potatis/recipe.toml deleted file mode 100644 index c912028d..00000000 --- a/recipes/wip/emulators/game-console/nes/potatis/recipe.toml +++ /dev/null @@ -1,8 +0,0 @@ -#TODO don't fetch private submodules -[source] -git = "https://github.com/henrikpersson/potatis" -[build] -template = "custom" -script = """ -cookbook_cargo_packages nes-sdl -""" diff --git a/recipes/wip/emulators/game-console/nes/rusticnes-sdl/recipe.toml b/recipes/wip/emulators/game-console/nes/rusticnes-sdl/recipe.toml deleted file mode 100644 index 8a1c24e2..00000000 --- a/recipes/wip/emulators/game-console/nes/rusticnes-sdl/recipe.toml +++ /dev/null @@ -1,9 +0,0 @@ -#TODO Not compiled or tested -[source] -git = "https://github.com/zeta0134/rusticnes-sdl" -[build] -template = "cargo" -dependencies = [ - "sdl2", - "gtk3", -] diff --git a/recipes/wip/emulators/game-console/nes/tetanes/recipe.toml b/recipes/wip/emulators/game-console/tetanes/recipe.toml similarity index 100% rename from recipes/wip/emulators/game-console/nes/tetanes/recipe.toml rename to recipes/wip/emulators/game-console/tetanes/recipe.toml From 09025c9392221654122b84432388eae14f20ad9f Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 17 Nov 2025 08:20:26 -0300 Subject: [PATCH 3154/3180] More recipe fixes and improvements --- recipes/wip/emulators/cpu/rustzx/recipe.toml | 1 + recipes/wip/emulators/cpu/unicorn/recipe.toml | 3 ++- .../wip/emulators/game-console/obliteration/recipe.toml | 1 + recipes/wip/emulators/game-console/play/recipe.toml | 1 + .../wip/emulators/game-console/ps1/duckstation/recipe.toml | 4 +++- .../emulators/game-console/ps1/pcsx-rearmed/recipe.toml | 1 + recipes/wip/emulators/game-console/snes9x/recipe.toml | 1 + recipes/wip/emulators/game-console/uoyabause/recipe.toml | 1 + recipes/wip/emulators/game-console/vita3k/recipe.toml | 1 + .../wip/emulators/game-console/xenia-canary/recipe.toml | 1 + recipes/wip/emulators/game-console/zsnes/recipe.toml | 1 + recipes/wip/emulators/mobile/touchhle/recipe.toml | 7 ++++++- recipes/wip/emulators/pc/darling/recipe.toml | 6 +++--- recipes/wip/emulators/pc/martypc/recipe.toml | 6 +++--- recipes/wip/emulators/pc/opengmk/recipe.toml | 6 +++++- recipes/wip/emulators/pc/ruffle/recipe.toml | 5 ++++- 16 files changed, 35 insertions(+), 11 deletions(-) diff --git a/recipes/wip/emulators/cpu/rustzx/recipe.toml b/recipes/wip/emulators/cpu/rustzx/recipe.toml index a2986190..8397b535 100644 --- a/recipes/wip/emulators/cpu/rustzx/recipe.toml +++ b/recipes/wip/emulators/cpu/rustzx/recipe.toml @@ -7,5 +7,6 @@ dependencies = [ "sdl2", ] script = """ +DYNAMIC_INIT cookbook_cargo_packages rustzx """ diff --git a/recipes/wip/emulators/cpu/unicorn/recipe.toml b/recipes/wip/emulators/cpu/unicorn/recipe.toml index 0e0977cc..5e0f96ef 100644 --- a/recipes/wip/emulators/cpu/unicorn/recipe.toml +++ b/recipes/wip/emulators/cpu/unicorn/recipe.toml @@ -2,6 +2,7 @@ # build instructions: https://github.com/unicorn-engine/unicorn/blob/master/docs/COMPILE.md [source] git = "https://github.com/unicorn-engine/unicorn" -rev = "e9c1c17f6df8f8f5da85ee80ad527452db5870ce" +rev = "2.1.4" +shallow_clone = true [build] template = "cmake" diff --git a/recipes/wip/emulators/game-console/obliteration/recipe.toml b/recipes/wip/emulators/game-console/obliteration/recipe.toml index 83c45495..49467216 100644 --- a/recipes/wip/emulators/game-console/obliteration/recipe.toml +++ b/recipes/wip/emulators/game-console/obliteration/recipe.toml @@ -1,5 +1,6 @@ #TODO missing script: https://github.com/obhq/obliteration/blob/main/docs/building.md [source] git = "https://github.com/obhq/obliteration" +shallow_clone = true [build] template = "custom" diff --git a/recipes/wip/emulators/game-console/play/recipe.toml b/recipes/wip/emulators/game-console/play/recipe.toml index 8b46ee57..9bf49486 100644 --- a/recipes/wip/emulators/game-console/play/recipe.toml +++ b/recipes/wip/emulators/game-console/play/recipe.toml @@ -2,6 +2,7 @@ # build instructions: https://github.com/jpd002/Play-#building-for-unix [source] git = "https://github.com/jpd002/Play-" +shallow_clone = true [build] template = "cmake" dependencies = [ diff --git a/recipes/wip/emulators/game-console/ps1/duckstation/recipe.toml b/recipes/wip/emulators/game-console/ps1/duckstation/recipe.toml index d967efac..09240d79 100644 --- a/recipes/wip/emulators/game-console/ps1/duckstation/recipe.toml +++ b/recipes/wip/emulators/game-console/ps1/duckstation/recipe.toml @@ -1,7 +1,9 @@ #TODO not compiled or tested yet # build instructions: https://github.com/stenzek/duckstation#linux-1 [source] -tar = "https://github.com/stenzek/duckstation" +git = "https://github.com/stenzek/duckstation" +rev = "16e56d7824e15657be26e30030394d0668493635" +shallow_clone = true [build] template = "cmake" dependencies = [ diff --git a/recipes/wip/emulators/game-console/ps1/pcsx-rearmed/recipe.toml b/recipes/wip/emulators/game-console/ps1/pcsx-rearmed/recipe.toml index bdae67d2..1683bfa3 100644 --- a/recipes/wip/emulators/game-console/ps1/pcsx-rearmed/recipe.toml +++ b/recipes/wip/emulators/game-console/ps1/pcsx-rearmed/recipe.toml @@ -4,5 +4,6 @@ [source] git = "https://github.com/notaz/pcsx_rearmed" rev = "r25" +shallow_clone = true [build] template = "configure" diff --git a/recipes/wip/emulators/game-console/snes9x/recipe.toml b/recipes/wip/emulators/game-console/snes9x/recipe.toml index e263ddf5..5963cd47 100644 --- a/recipes/wip/emulators/game-console/snes9x/recipe.toml +++ b/recipes/wip/emulators/game-console/snes9x/recipe.toml @@ -3,6 +3,7 @@ [source] git = "https://github.com/snes9xgit/snes9x" rev = "1.63" +shallow_clone = true [build] template = "cmake" dependencies = [ diff --git a/recipes/wip/emulators/game-console/uoyabause/recipe.toml b/recipes/wip/emulators/game-console/uoyabause/recipe.toml index 60d01caa..b1f73044 100644 --- a/recipes/wip/emulators/game-console/uoyabause/recipe.toml +++ b/recipes/wip/emulators/game-console/uoyabause/recipe.toml @@ -3,6 +3,7 @@ [source] git = "https://github.com/devmiyax/yabause" rev = "7d28bd54aa3188e90e4126ff9f7c27b945380488" +shallow_clone = true [build] template = "cmake" dependencies = [ diff --git a/recipes/wip/emulators/game-console/vita3k/recipe.toml b/recipes/wip/emulators/game-console/vita3k/recipe.toml index 5d7216e9..cf8b54e2 100644 --- a/recipes/wip/emulators/game-console/vita3k/recipe.toml +++ b/recipes/wip/emulators/game-console/vita3k/recipe.toml @@ -2,6 +2,7 @@ # build instructions: https://github.com/Vita3K/Vita3K/blob/master/building.md#linux [source] git = "https://github.com/Vita3K/Vita3K" +shallow_clone = true [build] template = "cmake" dependencies = [ diff --git a/recipes/wip/emulators/game-console/xenia-canary/recipe.toml b/recipes/wip/emulators/game-console/xenia-canary/recipe.toml index 0e11d0b1..4cf2b054 100644 --- a/recipes/wip/emulators/game-console/xenia-canary/recipe.toml +++ b/recipes/wip/emulators/game-console/xenia-canary/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script: https://github.com/xenia-canary/xenia-canary/blob/canary_experimental/docs/building.md#linux [source] git = "https://github.com/xenia-canary/xenia-canary" +shallow_clone = true [build] template = "custom" dependencies = [ diff --git a/recipes/wip/emulators/game-console/zsnes/recipe.toml b/recipes/wip/emulators/game-console/zsnes/recipe.toml index 9c602662..1a32c2ec 100644 --- a/recipes/wip/emulators/game-console/zsnes/recipe.toml +++ b/recipes/wip/emulators/game-console/zsnes/recipe.toml @@ -1,6 +1,7 @@ #TODO missing script for gnu make: https://github.com/xyproto/zsnes#build [source] git = "https://github.com/xyproto/zsnes" +shallow_clone = true [build] template = "custom" dependencies = [ diff --git a/recipes/wip/emulators/mobile/touchhle/recipe.toml b/recipes/wip/emulators/mobile/touchhle/recipe.toml index 3d42bb64..c1145171 100644 --- a/recipes/wip/emulators/mobile/touchhle/recipe.toml +++ b/recipes/wip/emulators/mobile/touchhle/recipe.toml @@ -1,8 +1,13 @@ #TODO make boost work [source] git = "https://github.com/hikari-no-yume/touchHLE" +shallow_clone = true [build] -template = "cargo" +template = "custom" dependencies = [ "boost", ] +script = """ +DYNAMIC_INIT +cookbook_cargo +""" diff --git a/recipes/wip/emulators/pc/darling/recipe.toml b/recipes/wip/emulators/pc/darling/recipe.toml index 32847606..a1630011 100644 --- a/recipes/wip/emulators/pc/darling/recipe.toml +++ b/recipes/wip/emulators/pc/darling/recipe.toml @@ -1,8 +1,8 @@ #TODO not compiled or tested # build instructions: https://docs.darlinghq.org/build-instructions.html#building-and-installing -#TODO require Git LFS installed on host [source] git = "https://github.com/darlinghq/darling" +shallow_clone = true [build] template = "cmake" cmakeflags = [ @@ -14,12 +14,12 @@ dependencies = [ "cairo", "mesa", "libtiff", - "freetype", + "freetype2", "libxml2", "fontconfig", "libbsd", "libgif", "ffmpeg6", - "openssl1", + "openssl3", "libxkbfile", ] diff --git a/recipes/wip/emulators/pc/martypc/recipe.toml b/recipes/wip/emulators/pc/martypc/recipe.toml index 50afde34..5ab9bbe0 100644 --- a/recipes/wip/emulators/pc/martypc/recipe.toml +++ b/recipes/wip/emulators/pc/martypc/recipe.toml @@ -1,9 +1,9 @@ -#TODO maybe wrong script, see https://github.com/dbalsom/martypc/blob/version_0_2_0/BUILDING.md#building-for-linux +#TODO not compiled or tested +# build instructions: https://github.com/dbalsom/martypc/wiki/Building-MartyPC#building-for-linux [source] git = "https://github.com/dbalsom/martypc" [build] template = "custom" script = """ -cd install -cookbook_cargo +cookbook_cargo_packages martypc_eframe """ diff --git a/recipes/wip/emulators/pc/opengmk/recipe.toml b/recipes/wip/emulators/pc/opengmk/recipe.toml index 5c0a004d..fda49cc6 100644 --- a/recipes/wip/emulators/pc/opengmk/recipe.toml +++ b/recipes/wip/emulators/pc/opengmk/recipe.toml @@ -1,8 +1,12 @@ -#TODO libsoundio-sys crate error, require ALSA (needs to be ported) +#TODO not compiled or tested [source] git = "https://github.com/OpenGMK/OpenGMK" [build] template = "custom" +dependencies = [ + "libalsa", +] script = """ +DYNAMIC_INIT cookbook_cargo_packages gm8emulator """ diff --git a/recipes/wip/emulators/pc/ruffle/recipe.toml b/recipes/wip/emulators/pc/ruffle/recipe.toml index e2147038..1882070a 100644 --- a/recipes/wip/emulators/pc/ruffle/recipe.toml +++ b/recipes/wip/emulators/pc/ruffle/recipe.toml @@ -1,11 +1,14 @@ #TODO camino crate error +# build instructions: https://github.com/ruffle-rs/ruffle#building-from-source [source] git = "https://github.com/ruffle-rs/ruffle" +shallow_clone = true [build] template = "custom" dependencies = [ - "openssl1", + "openssl3", ] script = """ +DYNAMIC_INIT cookbook_cargo_packages ruffle_desktop """ From 150c2685f0828bc732c48f567af7cd26acf5f64e Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 17 Nov 2025 10:28:38 -0300 Subject: [PATCH 3155/3180] More recipe fixes and improvements --- recipes/wip/dev/build-system/ant/recipe.toml | 2 +- .../wip/dev/build-system/ccache/recipe.toml | 4 +- .../wip/dev/build-system/meson/recipe.toml | 2 +- .../dev/build-system/ninja-build/recipe.toml | 2 +- recipes/wip/dev/debug/dr-memory/recipe.toml | 1 + recipes/wip/dev/debug/gdb/recipe.toml | 2 +- recipes/wip/dev/debug/rr-debugger/recipe.toml | 10 ++-- recipes/wip/dev/debug/termfu/recipe.toml | 6 +-- recipes/wip/dev/framework/biome/recipe.toml | 1 + recipes/wip/dev/framework/deno/recipe.toml | 5 +- .../game-engine/fyrox-template/recipe.toml | 1 + .../wip/dev/game-engine/godot4/recipe.toml | 10 ++-- .../wip/dev/game-engine/redot4/recipe.toml | 8 +--- recipes/wip/dev/hw/{ => librepcb}/recipe.toml | 3 +- .../emulators/windows/boxedwine/recipe.toml | 7 +-- .../emulators/windows/hangover/recipe.toml | 48 ++++++++++++++++--- .../emulators/windows/retrowin32/recipe.toml | 1 + 17 files changed, 73 insertions(+), 40 deletions(-) rename recipes/wip/dev/hw/{ => librepcb}/recipe.toml (89%) diff --git a/recipes/wip/dev/build-system/ant/recipe.toml b/recipes/wip/dev/build-system/ant/recipe.toml index 034f5b00..3c04f05e 100644 --- a/recipes/wip/dev/build-system/ant/recipe.toml +++ b/recipes/wip/dev/build-system/ant/recipe.toml @@ -1,4 +1,4 @@ -#TODO missing script for building, see https://ant.apache.org/manual/install.html#buildingant +#TODO missing script for building: https://ant.apache.org/manual/install.html#buildingant [source] tar = "https://downloads.apache.org/ant/source/apache-ant-1.10.14-src.tar.xz" [build] diff --git a/recipes/wip/dev/build-system/ccache/recipe.toml b/recipes/wip/dev/build-system/ccache/recipe.toml index f4420088..74601d94 100644 --- a/recipes/wip/dev/build-system/ccache/recipe.toml +++ b/recipes/wip/dev/build-system/ccache/recipe.toml @@ -1,6 +1,6 @@ #TODO not compiled or tested -#TODO missing dependencies - https://github.com/ccache/ccache/blob/master/doc/INSTALL.md#dependencies -# build instructions - https://github.com/ccache/ccache/blob/master/doc/INSTALL.md +#TODO missing dependencies: https://github.com/ccache/ccache/blob/master/doc/INSTALL.md#dependencies +# build instructions: https://github.com/ccache/ccache/blob/master/doc/INSTALL.md [source] tar = "https://github.com/ccache/ccache/releases/download/v4.10.2/ccache-4.10.2.tar.gz" [build] diff --git a/recipes/wip/dev/build-system/meson/recipe.toml b/recipes/wip/dev/build-system/meson/recipe.toml index 725a2e38..77fcb41c 100644 --- a/recipes/wip/dev/build-system/meson/recipe.toml +++ b/recipes/wip/dev/build-system/meson/recipe.toml @@ -1,4 +1,4 @@ -#TODO create a standalone script, see https://github.com/mesonbuild/meson#creating-a-standalone-script +#TODO create a standalone script: https://github.com/mesonbuild/meson#creating-a-standalone-script [source] tar = "https://github.com/mesonbuild/meson/releases/download/1.3.0/meson-1.3.0.tar.gz" [build] diff --git a/recipes/wip/dev/build-system/ninja-build/recipe.toml b/recipes/wip/dev/build-system/ninja-build/recipe.toml index bfed73af..d6e10e41 100644 --- a/recipes/wip/dev/build-system/ninja-build/recipe.toml +++ b/recipes/wip/dev/build-system/ninja-build/recipe.toml @@ -2,6 +2,6 @@ # build instructions: https://github.com/ninja-build/ninja#building-ninja-itself [source] git = "https://github.com/ninja-build/ninja" -rev = "a524bf3f6bacd1b4ad85d719eed2737d8562f27a" +rev = "v1.13.1" [build] template = "cmake" diff --git a/recipes/wip/dev/debug/dr-memory/recipe.toml b/recipes/wip/dev/debug/dr-memory/recipe.toml index 5b953f6c..3175b2c0 100644 --- a/recipes/wip/dev/debug/dr-memory/recipe.toml +++ b/recipes/wip/dev/debug/dr-memory/recipe.toml @@ -3,6 +3,7 @@ [source] git = "https://github.com/DynamoRIO/drmemory" rev = "release_2.6.0" +shallow_clone = true [build] template = "cmake" dependencies = [ diff --git a/recipes/wip/dev/debug/gdb/recipe.toml b/recipes/wip/dev/debug/gdb/recipe.toml index b74927fe..ec52462b 100644 --- a/recipes/wip/dev/debug/gdb/recipe.toml +++ b/recipes/wip/dev/debug/gdb/recipe.toml @@ -7,7 +7,7 @@ dependencies = [ "libgmp", "libmpfr", "ncurses", - "readline" + "readline", ] script = """ DYNAMIC_INIT diff --git a/recipes/wip/dev/debug/rr-debugger/recipe.toml b/recipes/wip/dev/debug/rr-debugger/recipe.toml index d1fc5443..91729d18 100644 --- a/recipes/wip/dev/debug/rr-debugger/recipe.toml +++ b/recipes/wip/dev/debug/rr-debugger/recipe.toml @@ -1,11 +1,13 @@ -#TODO make capnproto work -#TODO probably wrong template, see https://github.com/rr-debugger/rr/wiki/Building-And-Installing +#TODO not compiled or tested +# build instructions: https://github.com/rr-debugger/rr/wiki/Building-And-Installing [source] git = "https://github.com/rr-debugger/rr" -rev = "7cf5a12dba5aaeea9efc5ad97176b07b5614e350" +rev = "5.9.0" +shallow_clone = true [build] -template = "configure" +template = "cmake" dependencies = [ "zlib", "capnproto", + "zstd", ] diff --git a/recipes/wip/dev/debug/termfu/recipe.toml b/recipes/wip/dev/debug/termfu/recipe.toml index 4b790c64..5b9cef4a 100644 --- a/recipes/wip/dev/debug/termfu/recipe.toml +++ b/recipes/wip/dev/debug/termfu/recipe.toml @@ -1,8 +1,8 @@ #TODO missing script for gnu make -# build instructions - https://github.com/jvalcher/termfu#build-and-install +# build instructions: https://github.com/jvalcher/termfu#installation [source] git = "https://github.com/jvalcher/termfu" -rev = "71535f59142d145edcfe8995ca119ef377b2bc00" +rev = "v0.2.2" [build] template = "custom" dependencies = [ @@ -10,8 +10,6 @@ dependencies = [ ] [package] dependencies = [ - "gnu-make", - "gcc13", "gdb", "python312", ] diff --git a/recipes/wip/dev/framework/biome/recipe.toml b/recipes/wip/dev/framework/biome/recipe.toml index b1342d7d..63303b72 100644 --- a/recipes/wip/dev/framework/biome/recipe.toml +++ b/recipes/wip/dev/framework/biome/recipe.toml @@ -1,6 +1,7 @@ #TODO tikv-jemalloc-sys crate error [source] git = "https://github.com/biomejs/biome" +shallow_clone = true [build] template = "custom" script = """ diff --git a/recipes/wip/dev/framework/deno/recipe.toml b/recipes/wip/dev/framework/deno/recipe.toml index cd4c6882..c81bf249 100644 --- a/recipes/wip/dev/framework/deno/recipe.toml +++ b/recipes/wip/dev/framework/deno/recipe.toml @@ -1,7 +1,8 @@ -#TODO v8 crate error (after cargo update -p tokio) -#TODO Add static objects for the Redox target (doesn't exist on librusty_v8 upstream) +#TODO v8 crate error +#TODO lacking librusty_v8 crate binaries for redox [source] git = "https://github.com/denoland/deno" +shallow_clone = true [build] template = "custom" script = """ diff --git a/recipes/wip/dev/game-engine/fyrox-template/recipe.toml b/recipes/wip/dev/game-engine/fyrox-template/recipe.toml index bcc6ec0b..76a3b2f1 100644 --- a/recipes/wip/dev/game-engine/fyrox-template/recipe.toml +++ b/recipes/wip/dev/game-engine/fyrox-template/recipe.toml @@ -1,6 +1,7 @@ #TODO compiled but not tested [source] git = "https://github.com/FyroxEngine/Fyrox" +shallow_clone = true [build] template = "custom" script = """ diff --git a/recipes/wip/dev/game-engine/godot4/recipe.toml b/recipes/wip/dev/game-engine/godot4/recipe.toml index 911c684e..0fb6802a 100644 --- a/recipes/wip/dev/game-engine/godot4/recipe.toml +++ b/recipes/wip/dev/game-engine/godot4/recipe.toml @@ -1,10 +1,6 @@ -#TODO missing script for SCons, see https://docs.godotengine.org/en/stable/contributing/development/compiling/compiling_for_linuxbsd.html -#TODO missing dependencies +#TODO missing script for scons: https://docs.godotengine.org/en/stable/contributing/development/compiling/compiling_for_linuxbsd.html +#TODO discover minimum dependencies from scons log [source] -tar = "https://github.com/godotengine/godot/releases/download/4.1.3-stable/godot-4.1.3-stable.tar.xz" +tar = "https://github.com/godotengine/godot/releases/download/4.5.1-stable/godot-4.5.1-stable.tar.xz" [build] template = "custom" -dependencies = [ - "mesa", - "mesa-glu", -] diff --git a/recipes/wip/dev/game-engine/redot4/recipe.toml b/recipes/wip/dev/game-engine/redot4/recipe.toml index b36c03a6..e8d8b95b 100644 --- a/recipes/wip/dev/game-engine/redot4/recipe.toml +++ b/recipes/wip/dev/game-engine/redot4/recipe.toml @@ -1,10 +1,6 @@ -#TODO missing script for SCons, see https://docs.redotengine.org/en/stable/contributing/development/compiling/compiling_for_linuxbsd -#TODO missing dependencies +#TODO missing script for scons: https://docs.redotengine.org/en/stable/contributing/development/compiling/compiling_for_linuxbsd +#TODO discover minimum dependencies from scons log [source] tar = "https://github.com/Redot-Engine/redot-engine/releases/download/redot-4.3.1-stable/Redot-4.3.1-stable.tar.xz" [build] template = "custom" -dependencies = [ - "mesa", - "mesa-glu", -] diff --git a/recipes/wip/dev/hw/recipe.toml b/recipes/wip/dev/hw/librepcb/recipe.toml similarity index 89% rename from recipes/wip/dev/hw/recipe.toml rename to recipes/wip/dev/hw/librepcb/recipe.toml index e3361580..8e7d82cf 100644 --- a/recipes/wip/dev/hw/recipe.toml +++ b/recipes/wip/dev/hw/librepcb/recipe.toml @@ -3,7 +3,8 @@ # commented out optional dependencies [source] git = "https://github.com/LibrePCB/LibrePCB" -rev = "77db4fda7f5df5d058bfc5d2fae3072bb30c8402" +rev = "1.3.0" +shallow_clone = true [build] template = "cmake" cmakeflags = [ diff --git a/recipes/wip/emulators/windows/boxedwine/recipe.toml b/recipes/wip/emulators/windows/boxedwine/recipe.toml index 96401945..0933f5a5 100644 --- a/recipes/wip/emulators/windows/boxedwine/recipe.toml +++ b/recipes/wip/emulators/windows/boxedwine/recipe.toml @@ -1,6 +1,7 @@ +#TODO runtime crash [source] git = "https://github.com/jackpot51/Boxedwine" - +shallow_clone = true [build] template = "custom" dependencies = [ @@ -83,6 +84,6 @@ ${TARGET}-gcc -std=c++17 -O2 \ -DSDL2=1 \ -DSIMDE_SSE2_NO_NATIVE \ -o "${COOKBOOK_BUILD}/boxedwine" -mkdir -p "${COOKBOOK_STAGE}/bin" -cp -v "${COOKBOOK_BUILD}/boxedwine" "${COOKBOOK_STAGE}/bin/boxedwine" +mkdir -p "${COOKBOOK_STAGE}/usr/bin" +cp -v "${COOKBOOK_BUILD}/boxedwine" "${COOKBOOK_STAGE}/usr/bin/boxedwine" """ diff --git a/recipes/wip/emulators/windows/hangover/recipe.toml b/recipes/wip/emulators/windows/hangover/recipe.toml index a9c02800..0d60487a 100644 --- a/recipes/wip/emulators/windows/hangover/recipe.toml +++ b/recipes/wip/emulators/windows/hangover/recipe.toml @@ -2,7 +2,8 @@ # build instructions: https://github.com/AndreRH/hangover/blob/master/docs/COMPILE.md [source] git = "https://github.com/AndreRH/hangover" -rev = "8a3cdfb0b2092d10fa782319fc02648724554205" +rev = "hangover-10.18" +shallow_clone = true [build] template = "custom" dependencies = [ @@ -12,25 +13,56 @@ dependencies = [ "gstreamer", "sdl2", "mesa-x11", + "libstdcxx", "libx11", "libxcomposite", "libxcursor", "libxi", "libxfixes", - "librandr", + "libxrandr", "libxrender", "libxext", "libxkbcommon", - "libxkbregistry", + #"libxkbregistry", ] script = """ DYNAMIC_INIT -mkdir -p "${COOKBOOK_BUILD}"/wine/build -cd "${COOKBOOK_BUILD}"/wine/build +mkdir -p wine-tools +pushd wine-tools +#TODO: easier way to build for host? +HOST_ENV=( + env + --unset=AR + --unset=AS + --unset=CC + --unset=CFLAGS + --unset=CPPFLAGS + --unset=CXX + --unset=GNU_TARGET + --unset=LD + --unset=LDFLAGS + --unset=NM + --unset=OBJCOPY + --unset=OBJDUMP + --unset=PKG_CONFIG + --unset=PKG_CONFIG_ALLOW_CROSS + --unset=PKG_CONFIG_FOR_BUILD + --unset=PKG_CONFIG_LIBDIR + --unset=PKG_CONFIG_PATH + --unset=PKG_CONFIG_SYSROOT_DIR + --unset=PREFIX_RUSTFLAGS + --unset=RANLIB + --unset=READELF + --unset=STRIP + --unset=TARGET +) +"${HOST_ENV[@]}" "${COOKBOOK_CONFIGURE}" --enable-win64 +"${HOST_ENV[@]}" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" __tooldeps__ +popd + COOKBOOK_CONFIGURE_FLAGS+=( --enable-win64 - --with-mingw - --enable-archs=x86_64,i386,arm + --enable-archs=x86_64,i386,arm --disable-kerberos --disable-tests --without-capi @@ -54,6 +86,8 @@ COOKBOOK_CONFIGURE_FLAGS+=( --without-udev --without-unwind --without-usb + --with-mingw + --with-wine-tools=wine-tools ) cookbook_configure """ diff --git a/recipes/wip/emulators/windows/retrowin32/recipe.toml b/recipes/wip/emulators/windows/retrowin32/recipe.toml index f72c3522..3aa3fc77 100644 --- a/recipes/wip/emulators/windows/retrowin32/recipe.toml +++ b/recipes/wip/emulators/windows/retrowin32/recipe.toml @@ -7,6 +7,7 @@ dependencies = [ "sdl2", ] script = """ +DYNAMIC_INIT package=retrowin32 "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ From d03f17237e84a29be978e71ef7d45220f28a3405 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Mon, 17 Nov 2025 12:15:53 -0300 Subject: [PATCH 3156/3180] Many recipe fixes and improvements --- recipes/wip/dev/ide/astronvim/recipe.toml | 2 +- recipes/wip/dev/ide/gnome-builder/recipe.toml | 62 ++++++------ recipes/wip/dev/ide/kdevelop/recipe.toml | 89 ++++++++--------- recipes/wip/dev/ide/rust-analyzer/recipe.toml | 3 +- .../wip/dev/performance/samply/recipe.toml | 7 +- recipes/wip/dev/performance/tracy/recipe.toml | 6 +- .../wip/dev/performance/vkpeak/recipe.toml | 1 + .../wip/dev/rust-tools/cbindgen/recipe.toml | 1 + recipes/wip/dev/rust-tools/clippy/recipe.toml | 1 + .../wip/dev/rust-tools/rustfmt/recipe.toml | 1 + recipes/wip/dev/rust-tools/rustup/recipe.toml | 9 +- .../wip/dev/rust-tools/sccache/recipe.toml | 9 +- recipes/wip/image/editors/gimp/recipe.toml | 60 ++++++------ .../wip/image/editors/inkscape/recipe.toml | 80 +++++++-------- recipes/wip/image/editors/krita/recipe.toml | 98 ++++++++++--------- .../libs/audio/libopenshot-audio/recipe.toml | 5 +- .../libs/video/libopenshot-video/recipe.toml | 19 ---- .../wip/libs/video/libopenshot/recipe.toml | 21 ++++ recipes/wip/net/ssh/ssh-pilot/recipe.toml | 7 +- .../wip/video/editors/kdenlive/recipe.toml | 70 ++++++------- .../wip/video/editors/openshot/recipe.toml | 16 ++- recipes/wip/video/editors/pitivi/recipe.toml | 17 +++- 22 files changed, 316 insertions(+), 268 deletions(-) delete mode 100644 recipes/wip/libs/video/libopenshot-video/recipe.toml create mode 100644 recipes/wip/libs/video/libopenshot/recipe.toml diff --git a/recipes/wip/dev/ide/astronvim/recipe.toml b/recipes/wip/dev/ide/astronvim/recipe.toml index e1e38832..2bdafc57 100644 --- a/recipes/wip/dev/ide/astronvim/recipe.toml +++ b/recipes/wip/dev/ide/astronvim/recipe.toml @@ -1,4 +1,4 @@ -#TODO move to the "tools" category +#TODO promote [source] git = "https://github.com/AstroNvim/AstroNvim" [build] diff --git a/recipes/wip/dev/ide/gnome-builder/recipe.toml b/recipes/wip/dev/ide/gnome-builder/recipe.toml index 0142c9e0..1cc44d78 100644 --- a/recipes/wip/dev/ide/gnome-builder/recipe.toml +++ b/recipes/wip/dev/ide/gnome-builder/recipe.toml @@ -1,35 +1,39 @@ #TODO not compiled or tested +#TODO discover minimum dependencies from meson log # build instructions: https://builder.readthedocs.io/installation.html#via-release-tarball -#TODO missing dependencies, see: https://packages.debian.org/source/trixie/gnome-builder [source] -tar = "https://download.gnome.org/sources/gnome-builder/45/gnome-builder-45.0.tar.xz" +tar = "https://download.gnome.org/sources/gnome-builder/49/gnome-builder-49.1.tar.xz" [build] template = "meson" -dependencies = [ - "cairo", - "cmark", - "dbus", - "dspy", - "enchant", - "llvm18", - "gdk-pixbuf", - "glib", - "gobject-introspection", - "gtk4", - "gtk4mm", - "gtksourceview", - "libadwaita", - "libdex", - "libgit2", - "libgspell-gtk4", - "libpanel", - "libpeas", - "libsoup", - "vala", - "libvte", - "libxml2", - "json-glib", - "jsonrpc-glib", - "pango", - "webkitgtk4", +mesonflags = [ + "-Dnetwork_tests=false", + "-Dwebkit=false", ] +# dependencies = [ +# "cairo", +# "cmark", +# "dbus", +# "dspy", +# "enchant", +# "llvm18", +# "gdk-pixbuf", +# "glib", +# "gobject-introspection", +# "gtk4", +# "gtk4mm", +# "gtksourceview", +# "libadwaita", +# "libdex", +# "libgit2", +# "libgspell-gtk4", +# "libpanel", +# "libpeas", +# "libsoup", +# "vala", +# "libvte", +# "libxml2", +# "json-glib", +# "jsonrpc-glib", +# "pango", +# "webkitgtk4", +# ] diff --git a/recipes/wip/dev/ide/kdevelop/recipe.toml b/recipes/wip/dev/ide/kdevelop/recipe.toml index 4d63d0ea..f1e1cb5d 100644 --- a/recipes/wip/dev/ide/kdevelop/recipe.toml +++ b/recipes/wip/dev/ide/kdevelop/recipe.toml @@ -3,49 +3,50 @@ # build instructions: https://kdevelop.org/build-it/ [source] git = "https://invent.kde.org/kdevelop/kdevelop" -rev = "3021daeb5d62bc7a7a7dec4bcc23e19d3bfdaadd" +branch = "release/25.08" +shallow_clone = true [build] template = "cmake" -dependencies = [ - "apr", - "apr-util", - "astyle", - "boost", - "libgrantlee", - "libkomparediff2", - "kf5-archive", - "kf5-config", - "kf5-crash", - "kf5-cmutils", - "kf5-extra-cmake-modules", - "kf5-declarative", - "kf5-doctools", - "kf5-guiaddons", - "kf5-i18n", - "kf5-iconthemes", - "kf5-itemmodels", - "kf5-itemviews", - "kf5-io", - "kf5-jobwidgets", - "kf5-newstuff", - "kf5-notifications", - "kf5-notifyconfig", - "kf5-parts", - "kf5-plasma-framework", - "kf5-purpose", - "kf5-runner", - "kf5-service", - "kf5-sonnet", - "kf5-sysguard", - "kf5-texteditor", - "kf5-threadweaver", - "kf5-widgetaddons", - "kf5-windowsystem", - "kf5-xmlgui", - "qt5-base", - "qt5-declarative", - "qt5-tools", - "qt5-webkit", - "okteta", - "shared-mime-info", -] +# dependencies = [ +# "apr", +# "apr-util", +# "astyle", +# "boost", +# "libgrantlee", +# "libkomparediff2", +# "kf5-archive", +# "kf5-config", +# "kf5-crash", +# "kf5-cmutils", +# "kf5-extra-cmake-modules", +# "kf5-declarative", +# "kf5-doctools", +# "kf5-guiaddons", +# "kf5-i18n", +# "kf5-iconthemes", +# "kf5-itemmodels", +# "kf5-itemviews", +# "kf5-io", +# "kf5-jobwidgets", +# "kf5-newstuff", +# "kf5-notifications", +# "kf5-notifyconfig", +# "kf5-parts", +# "kf5-plasma-framework", +# "kf5-purpose", +# "kf5-runner", +# "kf5-service", +# "kf5-sonnet", +# "kf5-sysguard", +# "kf5-texteditor", +# "kf5-threadweaver", +# "kf5-widgetaddons", +# "kf5-windowsystem", +# "kf5-xmlgui", +# "qt5-base", +# "qt5-declarative", +# "qt5-tools", +# "qt5-webkit", +# "okteta", +# "shared-mime-info", +# ] diff --git a/recipes/wip/dev/ide/rust-analyzer/recipe.toml b/recipes/wip/dev/ide/rust-analyzer/recipe.toml index 5c419b9c..016bf088 100644 --- a/recipes/wip/dev/ide/rust-analyzer/recipe.toml +++ b/recipes/wip/dev/ide/rust-analyzer/recipe.toml @@ -1,6 +1,7 @@ -#TODO require rustc 1.76 or newer +#TODO not compiled or tested [source] git = "https://github.com/rust-lang/rust-analyzer" +shallow_clone = true [build] template = "custom" script = """ diff --git a/recipes/wip/dev/performance/samply/recipe.toml b/recipes/wip/dev/performance/samply/recipe.toml index 335c068a..cbef16b2 100644 --- a/recipes/wip/dev/performance/samply/recipe.toml +++ b/recipes/wip/dev/performance/samply/recipe.toml @@ -1,5 +1,8 @@ -#TODO can't find the Cargo.toml +#TODO not compiled or tested [source] git = "https://github.com/mstange/samply" [build] -template = "cargo" +template = "custom" +script = """ +cookbook_cargo_packages samply +""" diff --git a/recipes/wip/dev/performance/tracy/recipe.toml b/recipes/wip/dev/performance/tracy/recipe.toml index ee0859e3..292a29a9 100644 --- a/recipes/wip/dev/performance/tracy/recipe.toml +++ b/recipes/wip/dev/performance/tracy/recipe.toml @@ -1,11 +1,11 @@ -#TODO missing script for "make", see https://github.com/wolfpld/tracy/releases/latest/download/tracy.pdf +#TODO missing script for gnu make: https://github.com/wolfpld/tracy/releases/latest/download/tracy.pdf [source] git = "https://github.com/wolfpld/tracy" -rev = "37aff70dfa50cf6307b3fee6074d627dc2929143" +rev = "v0.13.0" [build] template = "custom" dependencies = [ - "glfw", + "glfw3", "freetype2", "dbus", "capstone", diff --git a/recipes/wip/dev/performance/vkpeak/recipe.toml b/recipes/wip/dev/performance/vkpeak/recipe.toml index 6ba6cbb8..64864555 100644 --- a/recipes/wip/dev/performance/vkpeak/recipe.toml +++ b/recipes/wip/dev/performance/vkpeak/recipe.toml @@ -2,6 +2,7 @@ # build instructions: https://github.com/nihui/vkpeak#build-from-source [source] git = "https://github.com/nihui/vkpeak" +rev = "20251010" [build] template = "cmake" dependencies = [ diff --git a/recipes/wip/dev/rust-tools/cbindgen/recipe.toml b/recipes/wip/dev/rust-tools/cbindgen/recipe.toml index 471478b0..ed4cd890 100644 --- a/recipes/wip/dev/rust-tools/cbindgen/recipe.toml +++ b/recipes/wip/dev/rust-tools/cbindgen/recipe.toml @@ -1,5 +1,6 @@ #TODO compiled but not tested [source] git = "https://github.com/mozilla/cbindgen" +shallow_clone = true [build] template = "cargo" diff --git a/recipes/wip/dev/rust-tools/clippy/recipe.toml b/recipes/wip/dev/rust-tools/clippy/recipe.toml index e12b00cf..fbd5cd62 100644 --- a/recipes/wip/dev/rust-tools/clippy/recipe.toml +++ b/recipes/wip/dev/rust-tools/clippy/recipe.toml @@ -1,5 +1,6 @@ #TODO camino crate error [source] git = "https://github.com/rust-lang/rust-clippy" +shallow_clone = true [build] template = "cargo" diff --git a/recipes/wip/dev/rust-tools/rustfmt/recipe.toml b/recipes/wip/dev/rust-tools/rustfmt/recipe.toml index cf20d525..12d739b3 100644 --- a/recipes/wip/dev/rust-tools/rustfmt/recipe.toml +++ b/recipes/wip/dev/rust-tools/rustfmt/recipe.toml @@ -1,5 +1,6 @@ #TODO serde crate error (after cargo update) [source] git = "https://github.com/rust-lang/rustfmt" +shallow_clone = true [build] template = "cargo" diff --git a/recipes/wip/dev/rust-tools/rustup/recipe.toml b/recipes/wip/dev/rust-tools/rustup/recipe.toml index 7292221e..2985d4d1 100644 --- a/recipes/wip/dev/rust-tools/rustup/recipe.toml +++ b/recipes/wip/dev/rust-tools/rustup/recipe.toml @@ -1,8 +1,13 @@ #TODO serde crate error [source] git = "https://github.com/rust-lang/rustup" +shallow_clone = true [build] -template = "cargo" +template = "custom" dependencies = [ - "openssl1", + "openssl3", ] +script = """ +DYNAMIC_INIT +cookbook_cargo +""" diff --git a/recipes/wip/dev/rust-tools/sccache/recipe.toml b/recipes/wip/dev/rust-tools/sccache/recipe.toml index 120b5979..9836a3f5 100644 --- a/recipes/wip/dev/rust-tools/sccache/recipe.toml +++ b/recipes/wip/dev/rust-tools/sccache/recipe.toml @@ -1,8 +1,13 @@ #TODO libc error [source] git = "https://github.com/mozilla/sccache" +shallow_clone = true [build] -template = "cargo" +template = "custom" dependencies = [ - "openssl1", + "openssl3", ] +script = """ +DYNAMIC_INIT +cookbook_cargo +""" diff --git a/recipes/wip/image/editors/gimp/recipe.toml b/recipes/wip/image/editors/gimp/recipe.toml index f3e18cbe..7ce8bee4 100644 --- a/recipes/wip/image/editors/gimp/recipe.toml +++ b/recipes/wip/image/editors/gimp/recipe.toml @@ -1,32 +1,36 @@ +#TODO not compiled or tested +#TODO discover minimum dependencies from autotools log # build instructions: https://developer.gimp.org/core/setup/build/3.0/INSTALL -#TODO make dependencies work +# all build options: https://gitlab.gnome.org/GNOME/gimp/-/blob/master/meson_options.txt?ref_type=heads [source] -tar = "https://download.gimp.org/gimp/v3.0/gimp-3.0.4.tar.xz" +tar = "https://download.gimp.org/gimp/v3.0/gimp-3.0.6.tar.xz" [build] -template = "custom" -dependencies = [ - "gtk3", - "gobject-introspection", - "glib", - "cairo", - "pango", - "liblcms", - "libmypaint", - "gexiv2", - "gegl", - "babl", - "librsvg", - "libtiff", - "libjpeg", - "libpng", - "fontconfig", - "freetype2", - "atk", - "harfbuzz", - "bzip2", - "zlib", +template = "meson" +mesonflags = [ + "-Dcheck-update=no", + "-Dlibbacktrace=false", + "-Dlibunwind=false", + "-Dprint=false", ] -script = """ -DYNAMIC_INIT -cookbook_configure -""" +# dependencies = [ +# "gtk3", +# "gobject-introspection", +# "glib", +# "cairo", +# "pango", +# "liblcms", +# "libmypaint", +# "gexiv2", +# "gegl", +# "babl", +# "librsvg", +# "libtiff", +# "libjpeg", +# "libpng", +# "fontconfig", +# "freetype2", +# "atk", +# "harfbuzz", +# "bzip2", +# "zlib", +# ] diff --git a/recipes/wip/image/editors/inkscape/recipe.toml b/recipes/wip/image/editors/inkscape/recipe.toml index 22f29f63..49dd872a 100644 --- a/recipes/wip/image/editors/inkscape/recipe.toml +++ b/recipes/wip/image/editors/inkscape/recipe.toml @@ -1,45 +1,45 @@ #TODO not compiled or tested -#TODO missing dependencies, see https://gitlab.com/inkscape/inkscape-ci-docker/-/raw/master/install_dependencies.sh +#TODO discover minimum dependencies from cmake log # build instructions: https://inkscape.org/develop/getting-started/#compile [source] -tar = "https://inkscape.org/gallery/item/44467/inkscape-1.3.1.tar.xz" +tar = "https://inkscape.org/gallery/item/56344/inkscape-1.4.2.tar.xz" [build] template = "cmake" -dependencies = [ - "boost", - "glib", - "glibmm", - "gtk3", - "gtk3mm", - "gdk-pixbuf", - "gtksourceview", - "cairo", - "cairomm", - "pango", - "pangomm", - "readline", - "fontconfig", - "freetype2", - "imagemagick", - "potrace", - "zlib", - "lib2geom", - "atkmm", - "harfbuzz", - "libblas", - "libsoup", - "libsigc++", - "librsvg", - "librevenge", - "libwpd", - "libpng", - "libvisio", - "libxml2", - "libxslt", - "libcdr", - "libgsl", - "libgspell-gtk3", - "libjpeg", - "liblcms", - "liblapack", -] +# dependencies = [ +# "boost", +# "glib", +# "glibmm", +# "gtk3", +# "gtk3mm", +# "gdk-pixbuf", +# "gtksourceview", +# "cairo", +# "cairomm", +# "pango", +# "pangomm", +# "readline", +# "fontconfig", +# "freetype2", +# "imagemagick", +# "potrace", +# "zlib", +# "lib2geom", +# "atkmm", +# "harfbuzz", +# "libblas", +# "libsoup", +# "libsigc++", +# "librsvg", +# "librevenge", +# "libwpd", +# "libpng", +# "libvisio", +# "libxml2", +# "libxslt", +# "libcdr", +# "libgsl", +# "libgspell-gtk3", +# "libjpeg", +# "liblcms", +# "liblapack", +# ] diff --git a/recipes/wip/image/editors/krita/recipe.toml b/recipes/wip/image/editors/krita/recipe.toml index 2309295d..746db5b7 100644 --- a/recipes/wip/image/editors/krita/recipe.toml +++ b/recipes/wip/image/editors/krita/recipe.toml @@ -1,53 +1,55 @@ #TODO not compiled or tested +#TODO discover minimum dependencies from cmake log # build instructions: https://docs.krita.org/en/untranslatable_pages/building_krita.html#building-on-linux -# maybe missing dependencies [source] -tar = "https://download.kde.org/stable/krita/5.2.1/krita-5.2.1.tar.gz" +git = "https://invent.kde.org/graphics/krita" +rev = "v5.2.13" +shallow_clone = true [build] template = "cmake" -dependencies = [ - "gexiv2", - "ffmpeg6", - "fftw", - "fontconfig", - "freetype2", - "fribidi", - "libgif", - "harfbuzz", - "liblcms", - "libpng", - "libtiff", - "libwebp", - "qt5-base", - "qt5-svg", - "zlib", - "libmypaint", - "boost", - "libheif", - "libjpeg", - "libjxl", - "kf5-extra-cmake-modules", - "kf5-completion", - "kf5-config", - "kf5-coreaddons", - "kf5-crash", - "kf5-guiaddons", - "kf5-i18n", - "kf5-itemviews", - "kf5-widgetaddons", - "kf5-windowsystem", - "mlt", - "opencolorio", - "openexr", - "openjpeg", - "sdl2", - "libxi", - "zlib", - "libeigen", - "libgsl", - "libseexpr-kde", - "liblager", - "libunibreak", - "libxsimd", - "libxtl", -] +# dependencies = [ +# "gexiv2", +# "ffmpeg6", +# "fftw", +# "fontconfig", +# "freetype2", +# "fribidi", +# "libgif", +# "harfbuzz", +# "liblcms", +# "libpng", +# "libtiff", +# "libwebp", +# "qt5-base", +# "qt5-svg", +# "zlib", +# "libmypaint", +# "boost", +# "libheif", +# "libjpeg", +# "libjxl", +# "kf5-extra-cmake-modules", +# "kf5-completion", +# "kf5-config", +# "kf5-coreaddons", +# "kf5-crash", +# "kf5-guiaddons", +# "kf5-i18n", +# "kf5-itemviews", +# "kf5-widgetaddons", +# "kf5-windowsystem", +# "mlt", +# "opencolorio", +# "openexr", +# "openjpeg", +# "sdl2", +# "libxi", +# "zlib", +# "libeigen", +# "libgsl", +# "libseexpr-kde", +# "liblager", +# "libunibreak", +# "libxsimd", +# "libxtl", +# ] diff --git a/recipes/wip/libs/audio/libopenshot-audio/recipe.toml b/recipes/wip/libs/audio/libopenshot-audio/recipe.toml index 5dce1ced..75295985 100644 --- a/recipes/wip/libs/audio/libopenshot-audio/recipe.toml +++ b/recipes/wip/libs/audio/libopenshot-audio/recipe.toml @@ -1,7 +1,8 @@ #TODO not compiled or tested -#TODO determine dependencies +#TODO determine minimum dependencies from cmake log [source] git = "https://github.com/OpenShot/libopenshot-audio" -rev = "98f08a6d4a90f3644b6c2c68efb2cbd86c75d87a" +rev = "v0.4.0" +shallow_clone = true [build] template = "cmake" diff --git a/recipes/wip/libs/video/libopenshot-video/recipe.toml b/recipes/wip/libs/video/libopenshot-video/recipe.toml deleted file mode 100644 index a203ccff..00000000 --- a/recipes/wip/libs/video/libopenshot-video/recipe.toml +++ /dev/null @@ -1,19 +0,0 @@ -#TODO not compiled or tested -#TODO determine dependencies: https://github.com/OpenShot/libopenshot/wiki/Linux-Build-Instructions -[source] -git = "https://github.com/OpenShot/libopenshot" -rev = "3170768e0ccbaad5b2a4696e84dd649738ec1a1b" -[build] -template = "cmake" -dependencies = [ - "libopenshot-audio", - "ffmpeg6", - "qt5-base", - "qt5-svg", - "qt5-multimedia", - "libzmq", - "opencv4", - "protobuf", - "babl", - "imagemagick", -] diff --git a/recipes/wip/libs/video/libopenshot/recipe.toml b/recipes/wip/libs/video/libopenshot/recipe.toml new file mode 100644 index 00000000..6ca2501b --- /dev/null +++ b/recipes/wip/libs/video/libopenshot/recipe.toml @@ -0,0 +1,21 @@ +#TODO not compiled or tested +#TODO determine minimum dependencies from cmake log +# build instructions: https://github.com/OpenShot/libopenshot/wiki/Linux-Build-Instructions +[source] +git = "https://github.com/OpenShot/libopenshot" +rev = "v0.4.0" +shallow_clone = true +[build] +template = "cmake" +# dependencies = [ +# "libopenshot-audio", +# "ffmpeg6", +# "qt5-base", +# "qt5-svg", +# "qt5-multimedia", +# "libzmq", +# "opencv4", +# "protobuf", +# "babl", +# "imagemagick", +# ] \ No newline at end of file diff --git a/recipes/wip/net/ssh/ssh-pilot/recipe.toml b/recipes/wip/net/ssh/ssh-pilot/recipe.toml index c108956a..39bb4f0e 100644 --- a/recipes/wip/net/ssh/ssh-pilot/recipe.toml +++ b/recipes/wip/net/ssh/ssh-pilot/recipe.toml @@ -5,10 +5,9 @@ rev = "v4.3.8" [build] template = "custom" script = """ -mkdir -pv "${COOKBOOK_STAGE}/usr/share/ssh-pilot" -mkdir -pv "${COOKBOOK_STAGE}"/usr/bin -cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/usr/share/ssh-pilot" -echo "#!/usr/bin/env sh \n python /usr/share/ssh-pilot/run.py" > "${COOKBOOK_STAGE}"/usr/bin/ssh-pilot +mkdir -pv "${COOKBOOK_STAGE}"/usr/bin/ssh-pilot-dir +cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/usr/bin/ssh-pilot-dir" +echo "#!/usr/bin/env sh \n python3 /usr/bin/ssh-pilot-dir/run.py" > "${COOKBOOK_STAGE}"/usr/bin/ssh-pilot chmod a+x "${COOKBOOK_STAGE}"/usr/bin/ssh-pilot """ [package] diff --git a/recipes/wip/video/editors/kdenlive/recipe.toml b/recipes/wip/video/editors/kdenlive/recipe.toml index 993dce62..95447b59 100644 --- a/recipes/wip/video/editors/kdenlive/recipe.toml +++ b/recipes/wip/video/editors/kdenlive/recipe.toml @@ -1,40 +1,42 @@ #TODO not compiled or tested +#TODO discover minimum dependencies from cmake log # build instructions: https://invent.kde.org/multimedia/kdenlive/-/blob/master/dev-docs/build.md#build-and-install-the-projects [source] git = "https://invent.kde.org/multimedia/kdenlive" -rev = "da6ecdfbba7aadf88572ac5f87aeb88ff2d80f57" +branch = "release/25.08" +shallow_clone = true [build] template = "cmake" -dependencies = [ - "mlt", - "ffmpeg6", - "qt5-declarative", - "qt5-tools", - "qt5-multimedia", - "qt5-svg", - "qt5-quickcontrols", - "qt5-quickcontrols2", - "qt5-networkauth", - "kf5-archive", - "kf5-bookmarks", - "kf5-codecs", - "kf5-config", - "kf5-configwidgets", - "kf5-coreaddons", - "kf5-crash", - "kf5-dbusaddons", - "kf5-declarative", - "kf5-filemetadata", - "kf5-guiaddons", - "kf5-iconthemes", - "kf5-init", - "kf5-io", - "kf5-newstuff", - "kf5-notifications", - "kf5-notifyconfig", - "kf5-purpose", - "kf5-textwidgets", - "kf5-widgetaddons", - "kf5-xmlgui", - "breeze-icons", -] +# dependencies = [ +# "mlt", +# "ffmpeg6", +# "qt5-declarative", +# "qt5-tools", +# "qt5-multimedia", +# "qt5-svg", +# "qt5-quickcontrols", +# "qt5-quickcontrols2", +# "qt5-networkauth", +# "kf5-archive", +# "kf5-bookmarks", +# "kf5-codecs", +# "kf5-config", +# "kf5-configwidgets", +# "kf5-coreaddons", +# "kf5-crash", +# "kf5-dbusaddons", +# "kf5-declarative", +# "kf5-filemetadata", +# "kf5-guiaddons", +# "kf5-iconthemes", +# "kf5-init", +# "kf5-io", +# "kf5-newstuff", +# "kf5-notifications", +# "kf5-notifyconfig", +# "kf5-purpose", +# "kf5-textwidgets", +# "kf5-widgetaddons", +# "kf5-xmlgui", +# "breeze-icons", +# ] diff --git a/recipes/wip/video/editors/openshot/recipe.toml b/recipes/wip/video/editors/openshot/recipe.toml index 63a9def4..0f4d2a05 100644 --- a/recipes/wip/video/editors/openshot/recipe.toml +++ b/recipes/wip/video/editors/openshot/recipe.toml @@ -1,11 +1,19 @@ -#TODO require a custom script to move the final openshot folder to /usr/share -#TODO create a program shortcut to the src/launch.py file, see https://github.com/OpenShot/openshot-qt#launch +#TODO not compiled or tested +# launch instructions: https://github.com/OpenShot/openshot-qt#launch [source] git = "https://github.com/OpenShot/openshot-qt" -rev = "47e8755c71390ba862cfcfdfe9ae109f31718867" +rev = "v3.3.0" +shallow_clone = true [build] template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}/usr/bin/openshot-qt" +cp -rv "${COOKBOOK_SOURCE}"/src/* "${COOKBOOK_STAGE}/usr/bin/openshot-qt" +echo "#!/usr/bin/env sh \n python3 /usr/bin/openshot-qt/src/launch.py" > "${COOKBOOK_STAGE}"/usr/bin/openshot +chmod a+x "${COOKBOOK_STAGE}"/usr/bin/openshot +""" +[package] dependencies = [ - "libopenshot-video", + "libopenshot", "libopenshot-audio", ] diff --git a/recipes/wip/video/editors/pitivi/recipe.toml b/recipes/wip/video/editors/pitivi/recipe.toml index 0f6ac0d1..e4acd1ee 100644 --- a/recipes/wip/video/editors/pitivi/recipe.toml +++ b/recipes/wip/video/editors/pitivi/recipe.toml @@ -1,11 +1,18 @@ #TODO not compiled or tested +#TODO determine minimum dependencies from meson log # lacking build instructions [source] -tar = "https://download.gnome.org/sources/pitivi/2023/pitivi-2023.03.tar.xz" +#tar = "https://download.gnome.org/sources/pitivi/2023/pitivi-2023.03.tar.xz" +git = "https://gitlab.gnome.org/GNOME/pitivi" +rev = "b9864c4aca6d88dae38fde5609047d0ebd7b0506" +shallow_clone = true [build] template = "meson" -dependencies = [ - "gtk3", - "gstreamer", - "libpeas", +mesonflags = [ + "-Ddisable-help=true", ] +#dependencies = [ +# "gtk3", +# "gstreamer", +# "libpeas", +#] From 3b9268fe52537ce0a2372470aa56dd0c2cfff04f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 17 Nov 2025 17:51:57 -0700 Subject: [PATCH 3157/3180] lz4: fix use of /usr/local in some places --- recipes/archives/lz4/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/archives/lz4/recipe.toml b/recipes/archives/lz4/recipe.toml index 1aacf826..6ab50fbd 100644 --- a/recipes/archives/lz4/recipe.toml +++ b/recipes/archives/lz4/recipe.toml @@ -10,6 +10,6 @@ DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ export CPPFLAGS="${CPPFLAGS} -D_REDOX" -${COOKBOOK_MAKE} +${COOKBOOK_MAKE} prefix="/usr" ${COOKBOOK_MAKE} install DESTDIR="${COOKBOOK_STAGE}" prefix="/usr" """ From beb165136a64f92d30cab53a386893703428f6b1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 17 Nov 2025 18:22:55 -0700 Subject: [PATCH 3158/3180] Add vte --- recipes/wip/libs/gtk/vte/recipe.toml | 20 +++++++++ recipes/wip/libs/gtk/vte/redox.patch | 63 ++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 recipes/wip/libs/gtk/vte/recipe.toml create mode 100644 recipes/wip/libs/gtk/vte/redox.patch diff --git a/recipes/wip/libs/gtk/vte/recipe.toml b/recipes/wip/libs/gtk/vte/recipe.toml new file mode 100644 index 00000000..948971dd --- /dev/null +++ b/recipes/wip/libs/gtk/vte/recipe.toml @@ -0,0 +1,20 @@ +[source] +tar = "https://download.gnome.org/sources/vte/0.82/vte-0.82.1.tar.xz" +blake3 = "2d16b6808c0eaa801d59ccabcae13e76ccd6229869dad1efe0524a4c83b53a87" +patches = ["redox.patch"] + +[build] +dependencies = [ + "gnutls3", + "gtk3", + "lz4", + "simdutf", +] +template = "meson" +mesonflags = [ + "-Dgir=false", + "-Dgtk4=false", + "-Dvapi=false", + #TODO: package fast_float? + "--force-fallback-for=fast_float", +] diff --git a/recipes/wip/libs/gtk/vte/redox.patch b/recipes/wip/libs/gtk/vte/redox.patch new file mode 100644 index 00000000..3f3bda14 --- /dev/null +++ b/recipes/wip/libs/gtk/vte/redox.patch @@ -0,0 +1,63 @@ +diff -ruwN source-old/src/pty.cc source/src/pty.cc +--- source-old/src/pty.cc 2025-10-11 14:43:24.000000000 -0600 ++++ source/src/pty.cc 2025-11-17 17:54:03.387095202 -0700 +@@ -222,7 +222,7 @@ + if (peer_fd == -1) + _exit(127); + +-#ifdef TIOCSCTTY ++#if defined(TIOCSCTTY) && !defined(__redox__) + /* On linux, opening the PTY peer above already made it our controlling TTY (since + * previously there was none, after the setsid() call). However, it appears that e.g. + * on *BSD, that doesn't happen, so we need this explicit ioctl here. +diff -ruwN source-old/src/spawn.cc source/src/spawn.cc +--- source-old/src/spawn.cc 2025-10-11 14:43:24.000000000 -0600 ++++ source/src/spawn.cc 2025-11-17 17:53:20.394044419 -0700 +@@ -409,7 +409,7 @@ + if (peer_fd == -1) + return ExecError::GETPTPEER; + +-#ifdef TIOCSCTTY ++#if defined(TIOCSCTTY) && !defined(__redox__) + /* On linux, opening the PTY peer above already made it our controlling TTY (since + * previously there was none, after the setsid() call). However, it appears that e.g. + * on *BSD, that doesn't happen, so we need this explicit ioctl here. +diff -ruwN source-old/src/vte.cc source/src/vte.cc +--- source-old/src/vte.cc 2025-10-11 14:43:24.000000000 -0600 ++++ source/src/vte.cc 2025-11-17 17:54:44.394149937 -0700 +@@ -19,7 +19,9 @@ + #include "config.h" + + #include ++#if !defined(__redox__) + #include ++#endif + #include + #include + #include +diff -ruwN source-old/src/vteseq.cc source/src/vteseq.cc +--- source-old/src/vteseq.cc 2025-10-11 14:43:24.000000000 -0600 ++++ source/src/vteseq.cc 2025-11-17 17:59:27.278790468 -0700 +@@ -19,7 +19,9 @@ + + #include "config.h" + ++#if !defined(__redox__) + #include ++#endif + #include + #include + #include +diff -ruwN source-old/src/widget.cc source/src/widget.cc +--- source-old/src/widget.cc 2025-10-11 14:43:24.000000000 -0600 ++++ source/src/widget.cc 2025-11-17 18:22:10.229089619 -0700 +@@ -927,6 +927,9 @@ + } + + if (m_terminal->terminate_child()) { ++ #ifndef W_EXITCODE ++ #define W_EXITCODE(ret, sig) ((ret) << 8 | (sig)) ++ #endif + int status = W_EXITCODE(0, SIGKILL); + emit_child_exited(status); + } From 36a0b07ad84cdcb9d1af1f3eeab8c8f5cc3782ba Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 17 Nov 2025 18:24:41 -0700 Subject: [PATCH 3159/3180] Add mate-terminal --- recipes/wip/x11/mate/mate-terminal/recipe.toml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 recipes/wip/x11/mate/mate-terminal/recipe.toml diff --git a/recipes/wip/x11/mate/mate-terminal/recipe.toml b/recipes/wip/x11/mate/mate-terminal/recipe.toml new file mode 100644 index 00000000..eecc852a --- /dev/null +++ b/recipes/wip/x11/mate/mate-terminal/recipe.toml @@ -0,0 +1,12 @@ +[source] +tar = "https://github.com/mate-desktop/mate-terminal/releases/download/v1.28.1/mate-terminal-1.28.1.tar.xz" +blake3 = "5214a81a69cc18202fad9214e2dff671baf34a132a39c932214b234db113e16c" + +[build] +dependencies = [ + "dconf", + "gtk3", + "libstdcxx", + "vte", +] +template = "meson" From 51f30bb8c611c5f5ba6a7a4710dd8ac8996c96d5 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Tue, 18 Nov 2025 14:41:37 +0700 Subject: [PATCH 3160/3180] Adjust extrautils to support static through features --- recipes/core/extrautils/recipe.toml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/recipes/core/extrautils/recipe.toml b/recipes/core/extrautils/recipe.toml index 82a72f0d..120a6c2e 100644 --- a/recipes/core/extrautils/recipe.toml +++ b/recipes/core/extrautils/recipe.toml @@ -2,7 +2,16 @@ git = "https://gitlab.redox-os.org/redox-os/extrautils.git" [build] -template = "cargo" +template = "custom" dependencies = [ "xz" ] +script = """ +DYNAMIC_INIT + +if [ "${COOKBOOK_DYNAMIC}" != "1" ]; then + install_flags+=" --features=static" +fi + +cookbook_cargo +""" From bf42c91a7c68407559dd2bd3d1c2118de49f01f6 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 19 Nov 2025 12:33:29 -0300 Subject: [PATCH 3161/3180] Improve development recipe groups role --- recipes/groups/dev-essential/recipe.toml | 3 +++ recipes/groups/dev-redox/recipe.toml | 4 +--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/recipes/groups/dev-essential/recipe.toml b/recipes/groups/dev-essential/recipe.toml index aff97db8..911fe766 100644 --- a/recipes/groups/dev-essential/recipe.toml +++ b/recipes/groups/dev-essential/recipe.toml @@ -4,8 +4,11 @@ dependencies = [ "automake", "cargo", "gcc13", + "llvm18", "gnu-binutils", "gnu-make", + "gnu-grep", + "ripgrep", "libffi", "rustpython", "lua54", diff --git a/recipes/groups/dev-redox/recipe.toml b/recipes/groups/dev-redox/recipe.toml index e851ed3d..120c5cbc 100644 --- a/recipes/groups/dev-redox/recipe.toml +++ b/recipes/groups/dev-redox/recipe.toml @@ -9,13 +9,11 @@ dependencies = [ "liborbital", "libsodium", "libxml2", - "llvm18", "ncurses", "nghttp2", - "openssl1", + "openssl3", "orbclient", "pcre", - "ripgrep", "terminfo", "xz", "zlib", From 14b976b378cb42d9406baa53e8a8bc47f0afd69e Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 19 Nov 2025 11:52:47 -0800 Subject: [PATCH 3162/3180] Handle repo binary via arg --- src/bin/repo.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 5962122c..c50282b5 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -60,6 +60,7 @@ const REPO_HELP_STR: &str = r#" --all apply to all recipes in --category= apply to all recipes in / --filesystem= override recipes config using installer file + --repo-binary override recipes config to use repo_binary cook env and their defaults: CI= set to any value to disable TUI @@ -345,6 +346,7 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec = None; let mut recipe_names: Vec = Vec::new(); + let mut override_filesystem_repo_binary = false; for arg in args { if arg.starts_with("--") { if let Some((key, value)) = arg.split_once('=') { @@ -369,6 +371,7 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec override_filesystem_repo_binary = true, "--with-package-deps" => config.with_package_deps = true, "--all" => config.all = true, _ => { @@ -401,6 +404,11 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec Date: Wed, 19 Nov 2025 21:49:16 -0800 Subject: [PATCH 3163/3180] Download binary packages and really ignore ignored packages --- src/bin/repo.rs | 22 ++++++++++++---------- src/recipe.rs | 6 ++++++ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 5962122c..684c9dee 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -436,13 +436,8 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec {} - PackageConfig::Build(rule) if rule == "binary" || rule == "ignore" => { - return None; - } - _ if conf.general.repo_binary == Some(true) => { + PackageConfig::Build(rule) if rule == "ignore" => { return None; } _ => {} @@ -484,18 +479,25 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec {} // keep local changes PackageConfig::Build(rule) if rule == "local" => recipe.recipe.source = None, - // should not gone here, but if it does, then some deps need it - PackageConfig::Build(rule) if rule == "binary" || rule == "ignore" => { + // download from remote build + PackageConfig::Build(rule) if rule == "binary" => { recipe.recipe.source = None; recipe.recipe.build.set_as_remote(); } + // don't build this recipe (unlikely to go here unless some deps need it) + // TODO: Note that we're assuming this being ignored from e.g. metapackages + // TODO: Will totally broke build if this recipe needed as some other build dependencies + PackageConfig::Build(rule) if rule == "ignore" => { + recipe.recipe.source = None; + recipe.recipe.build.set_as_none(); + } PackageConfig::Build(rule) => { - return Err(anyhow!( + bail!( // Fail fast because we could risk losing local changes if "local" was typo'ed "Invalid pkg config {} = \"{}\"\nExpecting either 'source', 'local', 'binary' or 'ignore'", recipe.name.as_str(), rule - )); + ); } _ => { if conf.general.repo_binary == Some(true) { diff --git a/src/recipe.rs b/src/recipe.rs index 153be407..96a83051 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -176,6 +176,12 @@ impl BuildRecipe { self.kind = BuildKind::Remote; self.dev_dependencies = Vec::new(); } + + pub fn set_as_none(&mut self) { + self.kind = BuildKind::None; + self.dependencies = Vec::new(); + self.dev_dependencies = Vec::new(); + } } #[derive(Debug, Clone, PartialEq)] From e57f7ef214c1c491067cbf46ce750235bce158dc Mon Sep 17 00:00:00 2001 From: Wildan M Date: Thu, 20 Nov 2025 02:34:47 -0800 Subject: [PATCH 3164/3180] Fix misc issues with repo_binary --- src/bin/repo.rs | 5 +++++ src/cook/cook_build.rs | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 684c9dee..849f6550 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -507,6 +507,11 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec Date: Thu, 20 Nov 2025 03:16:19 -0800 Subject: [PATCH 3165/3180] Revert dynamically link extrautils --- recipes/core/extrautils/recipe.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/core/extrautils/recipe.toml b/recipes/core/extrautils/recipe.toml index 120a6c2e..19b614cb 100644 --- a/recipes/core/extrautils/recipe.toml +++ b/recipes/core/extrautils/recipe.toml @@ -7,7 +7,8 @@ dependencies = [ "xz" ] script = """ -DYNAMIC_INIT +# TODO: Can't be linked correctly yet +# DYNAMIC_INIT if [ "${COOKBOOK_DYNAMIC}" != "1" ]; then install_flags+=" --features=static" From 0c717ec5cdf43d2e8ccd8d12450863792456c209 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Thu, 20 Nov 2025 04:38:47 -0800 Subject: [PATCH 3166/3180] Fix clean by category --- src/bin/repo.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 5962122c..f4852797 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -427,7 +427,7 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec, PackageError>>()? } else { if recipe_names.is_empty() { From 9e506e0e81d22269626b929c3eee9ee379430ad5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 20 Nov 2025 09:15:59 -0700 Subject: [PATCH 3167/3180] startup-notification, xcb-util: fix and move to wip/x11 --- .../other/startup-notification/recipe.toml | 5 ----- recipes/wip/libs/other/xcb-util/recipe.toml | 8 -------- .../wip/x11/startup-notification/recipe.toml | 19 +++++++++++++++++++ recipes/wip/x11/xcb-util/recipe.toml | 17 +++++++++++++++++ 4 files changed, 36 insertions(+), 13 deletions(-) delete mode 100644 recipes/wip/libs/other/startup-notification/recipe.toml delete mode 100644 recipes/wip/libs/other/xcb-util/recipe.toml create mode 100644 recipes/wip/x11/startup-notification/recipe.toml create mode 100644 recipes/wip/x11/xcb-util/recipe.toml diff --git a/recipes/wip/libs/other/startup-notification/recipe.toml b/recipes/wip/libs/other/startup-notification/recipe.toml deleted file mode 100644 index 8eb0370d..00000000 --- a/recipes/wip/libs/other/startup-notification/recipe.toml +++ /dev/null @@ -1,5 +0,0 @@ -#TODO compilation error -[source] -tar = "http://www.freedesktop.org/software/startup-notification/releases/startup-notification-0.12.tar.gz" -[build] -template = "configure" diff --git a/recipes/wip/libs/other/xcb-util/recipe.toml b/recipes/wip/libs/other/xcb-util/recipe.toml deleted file mode 100644 index 0a264761..00000000 --- a/recipes/wip/libs/other/xcb-util/recipe.toml +++ /dev/null @@ -1,8 +0,0 @@ -#TODO make libxcb work -[source] -tar = "https://www.x.org/releases/individual/lib/xcb-util-0.4.1.tar.xz" -[build] -template = "configure" -dependencies = [ - "libxcb", -] diff --git a/recipes/wip/x11/startup-notification/recipe.toml b/recipes/wip/x11/startup-notification/recipe.toml new file mode 100644 index 00000000..af569674 --- /dev/null +++ b/recipes/wip/x11/startup-notification/recipe.toml @@ -0,0 +1,19 @@ +[source] +tar = "http://www.freedesktop.org/software/startup-notification/releases/startup-notification-0.12.tar.gz" +blake3 = "134131fdd210d2eaef76eda9826b4a832807aac231dba334f157751ed1d6da36" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "libice", + "libx11", + "xcb-util", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure lf_cv_sane_realloc=yes +""" diff --git a/recipes/wip/x11/xcb-util/recipe.toml b/recipes/wip/x11/xcb-util/recipe.toml new file mode 100644 index 00000000..b0fa8c39 --- /dev/null +++ b/recipes/wip/x11/xcb-util/recipe.toml @@ -0,0 +1,17 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/xcb-util-0.4.1.tar.xz" +blake3 = "ebc940220db0ca39a690a47b565ce73ab536c1fbfdebf008fa0edf0ced862aca" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "libxcb", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" \ No newline at end of file From 53a699508b4b2f9c4d0d549c7f990d18e340bc14 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 20 Nov 2025 09:26:53 -0700 Subject: [PATCH 3168/3180] Add xcb-utils --- recipes/wip/x11/xcb-util-cursor/recipe.toml | 18 ++++++++++++++++++ recipes/wip/x11/xcb-util-image/recipe.toml | 17 +++++++++++++++++ recipes/wip/x11/xcb-util-keysyms/recipe.toml | 17 +++++++++++++++++ .../wip/x11/xcb-util-renderutil/recipe.toml | 17 +++++++++++++++++ 4 files changed, 69 insertions(+) create mode 100644 recipes/wip/x11/xcb-util-cursor/recipe.toml create mode 100644 recipes/wip/x11/xcb-util-image/recipe.toml create mode 100644 recipes/wip/x11/xcb-util-keysyms/recipe.toml create mode 100644 recipes/wip/x11/xcb-util-renderutil/recipe.toml diff --git a/recipes/wip/x11/xcb-util-cursor/recipe.toml b/recipes/wip/x11/xcb-util-cursor/recipe.toml new file mode 100644 index 00000000..eb0dbbd9 --- /dev/null +++ b/recipes/wip/x11/xcb-util-cursor/recipe.toml @@ -0,0 +1,18 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/xcb-util-cursor-0.1.6.tar.xz" +blake3 = "af6e7e99779682450e4cb3aa7225f5724845b1672c0380c65ca03b58dfb2d5d8" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "xcb-util-image", + "xcb-util-renderutil", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" diff --git a/recipes/wip/x11/xcb-util-image/recipe.toml b/recipes/wip/x11/xcb-util-image/recipe.toml new file mode 100644 index 00000000..a21ab495 --- /dev/null +++ b/recipes/wip/x11/xcb-util-image/recipe.toml @@ -0,0 +1,17 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/xcb-util-image-0.4.1.tar.xz" +blake3 = "c8a0652f7c215bd312d9f238aed2ba6a122f087b623dafbbac4456f5351df603" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "xcb-util", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" diff --git a/recipes/wip/x11/xcb-util-keysyms/recipe.toml b/recipes/wip/x11/xcb-util-keysyms/recipe.toml new file mode 100644 index 00000000..ce689945 --- /dev/null +++ b/recipes/wip/x11/xcb-util-keysyms/recipe.toml @@ -0,0 +1,17 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/xcb-util-keysyms-0.4.1.tar.xz" +blake3 = "c599df56c79a9f9dcf12b083e343f321cad6af654b83e2976b5a26bc890b5774" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "libxcb", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" diff --git a/recipes/wip/x11/xcb-util-renderutil/recipe.toml b/recipes/wip/x11/xcb-util-renderutil/recipe.toml new file mode 100644 index 00000000..1d76fc5e --- /dev/null +++ b/recipes/wip/x11/xcb-util-renderutil/recipe.toml @@ -0,0 +1,17 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/xcb-util-renderutil-0.3.10.tar.xz" +blake3 = "085c94d08bd8181512d4ce93cf0e5bcd48cd8ed983bbb7a7bcb3a3c2312a08ea" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "libxcb", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure --disable-selective-werror +""" From 574fea060bb0bda3fe13441d453bb42813a19034 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 20 Nov 2025 09:39:46 -0700 Subject: [PATCH 3169/3180] Add xcb-util-wm and xcb-util-xrm --- recipes/wip/x11/xcb-util-wm/recipe.toml | 17 +++++++++++++++++ recipes/wip/x11/xcb-util-xrm/recipe.toml | 18 ++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 recipes/wip/x11/xcb-util-wm/recipe.toml create mode 100644 recipes/wip/x11/xcb-util-xrm/recipe.toml diff --git a/recipes/wip/x11/xcb-util-wm/recipe.toml b/recipes/wip/x11/xcb-util-wm/recipe.toml new file mode 100644 index 00000000..c92734b8 --- /dev/null +++ b/recipes/wip/x11/xcb-util-wm/recipe.toml @@ -0,0 +1,17 @@ +[source] +tar = "https://www.x.org/releases/individual/lib/xcb-util-wm-0.4.2.tar.xz" +blake3 = "4cf6b0e204e12eb6b824c939404fc5ad63d61cb94679e8adf5670207802bc738" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "libxcb", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" diff --git a/recipes/wip/x11/xcb-util-xrm/recipe.toml b/recipes/wip/x11/xcb-util-xrm/recipe.toml new file mode 100644 index 00000000..32b75339 --- /dev/null +++ b/recipes/wip/x11/xcb-util-xrm/recipe.toml @@ -0,0 +1,18 @@ +[source] +tar = "https://github.com/Airblader/xcb-util-xrm/releases/download/v1.3/xcb-util-xrm-1.3.tar.bz2" +blake3 = "21cd9a005dde4982a452df156a16f4a61bd5299fb1a24dda2c9e8169e0654f38" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +dependencies = [ + "libx11", + "xcb-util", +] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" From 5ee705ff9f50e5876f40c9ddf9af80520158ca8a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 20 Nov 2025 09:47:02 -0700 Subject: [PATCH 3170/3180] Add libev and yajl --- recipes/wip/libs/other/libev/recipe.toml | 14 ++++++++++++++ recipes/wip/libs/other/yajl/recipe.toml | 6 ++++++ 2 files changed, 20 insertions(+) create mode 100644 recipes/wip/libs/other/libev/recipe.toml create mode 100644 recipes/wip/libs/other/yajl/recipe.toml diff --git a/recipes/wip/libs/other/libev/recipe.toml b/recipes/wip/libs/other/libev/recipe.toml new file mode 100644 index 00000000..bb026811 --- /dev/null +++ b/recipes/wip/libs/other/libev/recipe.toml @@ -0,0 +1,14 @@ +[source] +tar = "https://dist.schmorp.de/libev/libev-4.33.tar.gz" +blake3 = "d56e7f06baa52d5068b6184a307cf27c32f71b60e13d98ee6d4d9c1786393424" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + +[build] +template = "custom" +script = """ +DYNAMIC_INIT +cookbook_configure +""" diff --git a/recipes/wip/libs/other/yajl/recipe.toml b/recipes/wip/libs/other/yajl/recipe.toml new file mode 100644 index 00000000..b61e2cef --- /dev/null +++ b/recipes/wip/libs/other/yajl/recipe.toml @@ -0,0 +1,6 @@ +[source] +tar = "https://github.com/lloyd/yajl/archive/refs/tags/2.1.0.tar.gz" +blake3 = "25cbfe28df82d5699b8fa5db8b32797b34aff995c7ce35a5fb622cc68f90f0cb" + +[build] +template = "cmake" From 3260f2dc5683218d6cdf98e0296cd88afdca9416 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 20 Nov 2025 09:47:26 -0700 Subject: [PATCH 3171/3180] libsoup: disable introspection --- recipes/wip/libs/other/libsoup/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/libs/other/libsoup/recipe.toml b/recipes/wip/libs/other/libsoup/recipe.toml index 762f3b8a..7472e838 100644 --- a/recipes/wip/libs/other/libsoup/recipe.toml +++ b/recipes/wip/libs/other/libsoup/recipe.toml @@ -18,6 +18,7 @@ template = "custom" script = """ DYNAMIC_INIT cookbook_meson \ + -Dintrospection=disabled \ -Dsysprof=disabled \ -Dtests=false \ -Dtls_check=false From bac4349ec1c76d76147dc52c7c8e43044db812ea Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 20 Nov 2025 09:47:50 -0700 Subject: [PATCH 3172/3180] webkitgtk3: simplify dependencies --- recipes/wip/libs/other/webkitgtk3/recipe.toml | 41 ------------------- 1 file changed, 41 deletions(-) diff --git a/recipes/wip/libs/other/webkitgtk3/recipe.toml b/recipes/wip/libs/other/webkitgtk3/recipe.toml index 7eb8329f..7287e8e6 100644 --- a/recipes/wip/libs/other/webkitgtk3/recipe.toml +++ b/recipes/wip/libs/other/webkitgtk3/recipe.toml @@ -7,55 +7,14 @@ patches = ["redox.patch"] [build] template = "custom" dependencies = [ - "atk", - "cairo", - "expat", - "fontconfig", - "freetype2", - "fribidi", - "gdk-pixbuf", - "gettext", - "glib", - #TODO "gstreamer", "gtk3", - "harfbuzz", - "libepoxy", "libatomic", - "libffi", "libgcrypt", - "libgpg-error", - "libiconv", - "libicu", - "libjpeg", - "libpng", - "libpsl", - "libpthread-stubs", "libsoup", "libstdcxx-v3", "libtasn1", "libwebp", - "libx11", - "libxau", - "libxcb", - "libxext", - "libxfixes", - "libxi", - "libxml2", - "libxrandr", - "libxrender", - "libxslt", - "libxxf86vm", - "mesa-x11", - "nghttp2", - "pango", - "pcre2", - "pixman", - "shared-mime-info", "sqlite3", - "x11proto", - "xextproto", - "xz", - "zlib", ] script = """ DYNAMIC_INIT From da93b635fec96a6fac7da9bf7742d850cbce68b4 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 20 Nov 2025 09:48:21 -0700 Subject: [PATCH 3173/3180] librsvg: update, disable intropsection, fix compilation --- recipes/wip/libs/image/librsvg/recipe.toml | 23 ++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/recipes/wip/libs/image/librsvg/recipe.toml b/recipes/wip/libs/image/librsvg/recipe.toml index 0036b835..14e44666 100644 --- a/recipes/wip/libs/image/librsvg/recipe.toml +++ b/recipes/wip/libs/image/librsvg/recipe.toml @@ -1,15 +1,26 @@ -#TODO make dependencies work -#TODO build instructions - https://gnome.pages.gitlab.gnome.org/librsvg/devel-docs/compiling.html +#TODO: version 2.59 and newer require cargo-c [source] -tar = "https://download.gnome.org/sources/librsvg/2.56/librsvg-2.56.0.tar.xz" +tar = "https://download.gnome.org/sources/librsvg/2.58/librsvg-2.58.5.tar.xz" +blake3 = "15ccac6309992ced51128825e9c3ebeb041705aeb8371507ffc4cebb6a1e4ce5" +script = """ +DYNAMIC_INIT +autotools_recursive_regenerate +""" + [build] -template = "configure" dependencies = [ "cairo", "freetype2", + "gdk-pixbuf", "glib", - "gobject-introspection", "harfbuzz", - "pango", + "libffi", "libxml2", + "pango", ] +template = "custom" +script = """ +DYNAMIC_INIT +export GDK_PIXBUF_QUERYLOADERS="/usr/lib/$(cc -dumpmachine)/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders" +cookbook_configure --disable-introspection +""" \ No newline at end of file From fe435b6cf07e9a9320f3d63d7db705a9481911d1 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 20 Nov 2025 09:51:08 -0700 Subject: [PATCH 3174/3180] Add i3 (WIP) --- recipes/wip/x11/i3/i3/recipe.toml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 recipes/wip/x11/i3/i3/recipe.toml diff --git a/recipes/wip/x11/i3/i3/recipe.toml b/recipes/wip/x11/i3/i3/recipe.toml new file mode 100644 index 00000000..06758788 --- /dev/null +++ b/recipes/wip/x11/i3/i3/recipe.toml @@ -0,0 +1,20 @@ +#TODO: GLOB_TILDE and wordexp.h +[source] +tar = "https://i3wm.org/downloads/i3-4.24.tar.xz" +blake3 = "3b54ed52759339e545a7a5f602946abc0164c37eb801e79c0cb40f93dbae53d2" + +[build] +dependencies = [ + "cairo", + "libev", + "libxkbcommon-x11", + "pango", + "pcre2", + "startup-notification", + "xcb-util-cursor", + "xcb-util-keysyms", + "xcb-util-wm", + "xcb-util-xrm", + "yajl", +] +template = "meson" From 17d8cb457045f20a3e451a8517ab471fe44623ab Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 20 Nov 2025 14:38:37 -0300 Subject: [PATCH 3175/3180] Add recipes --- recipes/wip/dev/git-tools/gitlogue/recipe.toml | 5 +++++ recipes/wip/dev/training/gittype/recipe.toml | 5 +++++ recipes/wip/games/math/binbreak/recipe.toml | 5 +++++ recipes/wip/image/other/oxvg/recipe.toml | 8 ++++++++ recipes/wip/terminal/asciiquarium/recipe.toml | 14 ++++++++++++++ recipes/wip/terminal/cbonsai/recipe.toml | 9 +++++++++ recipes/wip/terminal/pipes-sh/recipe.toml | 16 ++++++++++++++++ recipes/wip/tui/termlaunch/recipe.toml | 5 +++++ 8 files changed, 67 insertions(+) create mode 100644 recipes/wip/dev/git-tools/gitlogue/recipe.toml create mode 100644 recipes/wip/dev/training/gittype/recipe.toml create mode 100644 recipes/wip/games/math/binbreak/recipe.toml create mode 100644 recipes/wip/image/other/oxvg/recipe.toml create mode 100644 recipes/wip/terminal/asciiquarium/recipe.toml create mode 100644 recipes/wip/terminal/cbonsai/recipe.toml create mode 100644 recipes/wip/terminal/pipes-sh/recipe.toml create mode 100644 recipes/wip/tui/termlaunch/recipe.toml diff --git a/recipes/wip/dev/git-tools/gitlogue/recipe.toml b/recipes/wip/dev/git-tools/gitlogue/recipe.toml new file mode 100644 index 00000000..995192a0 --- /dev/null +++ b/recipes/wip/dev/git-tools/gitlogue/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/unhappychoice/gitlogue" +[build] +template = "cargo" diff --git a/recipes/wip/dev/training/gittype/recipe.toml b/recipes/wip/dev/training/gittype/recipe.toml new file mode 100644 index 00000000..f92f63f1 --- /dev/null +++ b/recipes/wip/dev/training/gittype/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/unhappychoice/gittype" +[build] +template = "cargo" diff --git a/recipes/wip/games/math/binbreak/recipe.toml b/recipes/wip/games/math/binbreak/recipe.toml new file mode 100644 index 00000000..13a35882 --- /dev/null +++ b/recipes/wip/games/math/binbreak/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/epic-64/binbreak" +[build] +template = "cargo" diff --git a/recipes/wip/image/other/oxvg/recipe.toml b/recipes/wip/image/other/oxvg/recipe.toml new file mode 100644 index 00000000..9d50790f --- /dev/null +++ b/recipes/wip/image/other/oxvg/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/noahbald/oxvg" +[build] +template = "custom" +script = """ +cookbook_cargo_packages oxvg +""" diff --git a/recipes/wip/terminal/asciiquarium/recipe.toml b/recipes/wip/terminal/asciiquarium/recipe.toml new file mode 100644 index 00000000..3bf31400 --- /dev/null +++ b/recipes/wip/terminal/asciiquarium/recipe.toml @@ -0,0 +1,14 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/cmatsuoka/asciiquarium" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr/bin +cp "${COOKBOOK_SOURCE}"/asciiquarium "${COOKBOOK_STAGE}"/usr/bin/asciiquarium +chmod a+x "${COOKBOOK_STAGE}"/usr/bin/asciiquarium +""" +[package] +dependencies = [ + "perl", +] diff --git a/recipes/wip/terminal/cbonsai/recipe.toml b/recipes/wip/terminal/cbonsai/recipe.toml new file mode 100644 index 00000000..4c1a808d --- /dev/null +++ b/recipes/wip/terminal/cbonsai/recipe.toml @@ -0,0 +1,9 @@ +#TODO missing script for gnu make: https://gitlab.com/jallbrit/cbonsai#manual +[source] +git = "https://gitlab.com/jallbrit/cbonsai" +rev = "v1.4.2" +[build] +template = "custom" +dependencies = [ + "ncursesw", +] diff --git a/recipes/wip/terminal/pipes-sh/recipe.toml b/recipes/wip/terminal/pipes-sh/recipe.toml new file mode 100644 index 00000000..d42c6267 --- /dev/null +++ b/recipes/wip/terminal/pipes-sh/recipe.toml @@ -0,0 +1,16 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/pipeseroni/pipes.sh" +rev = "v1.3.0" +[build] +template = "custom" +script = """ +mkdir -pv "${COOKBOOK_STAGE}"/usr/bin +cp "${COOKBOOK_SOURCE}"/pipes.sh "${COOKBOOK_STAGE}"/usr/bin/pipes +chmod a+x "${COOKBOOK_STAGE}"/usr/bin/pipes +""" +[package] +dependencies = [ + "bash", + "ncurses", +] diff --git a/recipes/wip/tui/termlaunch/recipe.toml b/recipes/wip/tui/termlaunch/recipe.toml new file mode 100644 index 00000000..40844ea2 --- /dev/null +++ b/recipes/wip/tui/termlaunch/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/amaterasu-uwu-xd/termlaunch" +[build] +template = "cargo" From ad18ba4b5d61c09e8bd3f549c35911b0f2e18069 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Thu, 20 Nov 2025 15:42:18 -0300 Subject: [PATCH 3176/3180] Improve some recipes and enable dynamic linking on postgresql --- recipes/wip/db/mariadb-lts/recipe.toml | 7 +-- recipes/wip/db/mariadb/recipe.toml | 12 +++-- recipes/wip/db/postgresql16/recipe.toml | 19 ++++---- recipes/wip/db/sqlite3/recipe.toml | 7 +-- .../graphics/editors/blender-lts/recipe.toml | 44 +++++++++---------- .../wip/graphics/editors/blender/recipe.toml | 43 +++++++++--------- .../net/bittorrent/webtorrent-cli/recipe.toml | 11 ++--- recipes/wip/net/download/yt-dlp/recipe.toml | 10 ++--- recipes/wip/video/other/jerry/recipe.toml | 10 ++++- 9 files changed, 79 insertions(+), 84 deletions(-) diff --git a/recipes/wip/db/mariadb-lts/recipe.toml b/recipes/wip/db/mariadb-lts/recipe.toml index 3a2e48ae..0666ff40 100644 --- a/recipes/wip/db/mariadb-lts/recipe.toml +++ b/recipes/wip/db/mariadb-lts/recipe.toml @@ -1,10 +1,11 @@ #TODO not compiled or tested +# build instructions: # https://mariadb.com/kb/en/generic-build-instructions/ # https://mariadb.com/kb/en/cross-compiling-mariadb/ [source] tar = "https://archive.mariadb.org/mariadb-10.11.6/source/mariadb-10.11.6.tar.gz" [build] -template = "custom" +template = "cmake" dependencies = [ "ncurses", "zlib", @@ -15,7 +16,3 @@ dependencies = [ "boost", "libaio", ] -script = """ -export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" -cookbook_cmake -""" diff --git a/recipes/wip/db/mariadb/recipe.toml b/recipes/wip/db/mariadb/recipe.toml index 39038da8..1ebf6c88 100644 --- a/recipes/wip/db/mariadb/recipe.toml +++ b/recipes/wip/db/mariadb/recipe.toml @@ -1,21 +1,19 @@ #TODO not compiled or tested +# build instructions: # https://mariadb.com/kb/en/generic-build-instructions/ # https://mariadb.com/kb/en/cross-compiling-mariadb/ [source] -tar = "https://archive.mariadb.org/mariadb-11.2.2/source/mariadb-11.2.2.tar.gz" +tar = "https://dlm.mariadb.com/4509471/MariaDB/mariadb-12.1.2/source/mariadb-12.1.2.tar.gz" [build] -template = "custom" +template = "cmake" dependencies = [ "ncurses", "zlib", "libevent", - "openssl1", + "openssl3", "curl", "libxml2", "boost", "libaio", ] -script = """ -export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" -cookbook_cmake -""" + diff --git a/recipes/wip/db/postgresql16/recipe.toml b/recipes/wip/db/postgresql16/recipe.toml index b439b54b..e247d0b6 100644 --- a/recipes/wip/db/postgresql16/recipe.toml +++ b/recipes/wip/db/postgresql16/recipe.toml @@ -1,18 +1,17 @@ #TODO waiting on sigjmp_buf and related POSIX functions in relibc [source] tar = "https://ftp.postgresql.org/pub/source/v16.0/postgresql-16.0.tar.bz2" +script = """ +cp "${COOKBOOK_SOURCE}/src/backend/utils/errcodes.h" "${COOKBOOK_SOURCE}/src/include/utils/errcodes.h" +""" [build] -template = "custom" +template = "configure" +configureflags = [ + "--without-icu", + "--without-readline", + "--with-template=redox", +] dependencies = [ "readline", "zlib", ] -script = """ -cp "${COOKBOOK_SOURCE}/src/backend/utils/errcodes.h" "${COOKBOOK_SOURCE}/src/include/utils/errcodes.h" -COOKBOOK_CONFIGURE_FLAGS+=( - --without-icu - --without-readline - --with-template=redox -) -cookbook_configure -""" diff --git a/recipes/wip/db/sqlite3/recipe.toml b/recipes/wip/db/sqlite3/recipe.toml index ae282273..5bc410b9 100644 --- a/recipes/wip/db/sqlite3/recipe.toml +++ b/recipes/wip/db/sqlite3/recipe.toml @@ -11,10 +11,5 @@ script = """ DYNAMIC_INIT autotools_recursive_regenerate """ - [build] -template = "custom" -script = """ -DYNAMIC_INIT -cookbook_configure -""" +template = "configure" diff --git a/recipes/wip/graphics/editors/blender-lts/recipe.toml b/recipes/wip/graphics/editors/blender-lts/recipe.toml index 52b4308c..6c041438 100644 --- a/recipes/wip/graphics/editors/blender-lts/recipe.toml +++ b/recipes/wip/graphics/editors/blender-lts/recipe.toml @@ -1,26 +1,26 @@ #TODO not compiled or tested -# build instructions: https://wiki.blender.org/wiki/Building_Blender/Linux/Generic_Distro -# probably missing dependencies -# customization - https://wiki.blender.org/wiki/Building_Blender/Options +#TODO determine the minimum dependencies from cmake log +# build instructions: https://developer.blender.org/docs/handbook/building_blender/ [source] -tar = "https://download.blender.org/source/blender-3.6.5.tar.xz" +git = "https://projects.blender.org/blender/blender" +branch = "blender-v4.5-release" [build] template = "cmake" -dependencies = [ - "dbus", - "libdecor", - "libjpeg", - "libpng", - "freetype2", - "fontconfig", - "zstd", - "bzip2", - "xz", - "sdl2", - "libepoxy", - "shaderc", - "libxml2", - "libharu", - "mesa-x11", - "libxkbcommon", -] +# dependencies = [ +# "dbus", +# "libdecor", +# "libjpeg", +# "libpng", +# "freetype2", +# "fontconfig", +# "zstd", +# "bzip2", +# "xz", +# "sdl2", +# "libepoxy", +# "shaderc", +# "libxml2", +# "libharu", +# "mesa-x11", +# "libxkbcommon", +# ] diff --git a/recipes/wip/graphics/editors/blender/recipe.toml b/recipes/wip/graphics/editors/blender/recipe.toml index 0399b0e6..1f47792b 100644 --- a/recipes/wip/graphics/editors/blender/recipe.toml +++ b/recipes/wip/graphics/editors/blender/recipe.toml @@ -1,26 +1,25 @@ #TODO not compiled or tested -# build instructions: https://wiki.blender.org/wiki/Building_Blender/Linux/Generic_Distro -# probably missing dependencies -# customization - https://wiki.blender.org/wiki/Building_Blender/Options +#TODO determine the minimum dependencies from cmake log +# build instructions: https://developer.blender.org/docs/handbook/building_blender/ [source] -tar = "https://download.blender.org/source/blender-4.1.0.tar.xz" +tar = "https://download.blender.org/source/blender-5.0.0.tar.xz" [build] template = "cmake" -dependencies = [ - "dbus", - "libdecor", - "libjpeg", - "libpng", - "freetype2", - "fontconfig", - "zstd", - "bzip2", - "xz", - "sdl2", - "libepoxy", - "shaderc", - "libxml2", - "libharu", - "mesa-x11", - "libxkbcommon", -] +# dependencies = [ +# "dbus", +# "libdecor", +# "libjpeg", +# "libpng", +# "freetype2", +# "fontconfig", +# "zstd", +# "bzip2", +# "xz", +# "sdl2", +# "libepoxy", +# "shaderc", +# "libxml2", +# "libharu", +# "mesa-x11", +# "libxkbcommon", +# ] diff --git a/recipes/wip/net/bittorrent/webtorrent-cli/recipe.toml b/recipes/wip/net/bittorrent/webtorrent-cli/recipe.toml index 00dd4f3c..d0eaa70e 100644 --- a/recipes/wip/net/bittorrent/webtorrent-cli/recipe.toml +++ b/recipes/wip/net/bittorrent/webtorrent-cli/recipe.toml @@ -1,13 +1,14 @@ #TODO not compiled or tested [source] git = "https://github.com/webtorrent/webtorrent-cli" -rev = "298ae70a7baeb1bfc836abe2821baf78b50c3af1" +rev = "v5.1.3" [build] template = "custom" script = """ -mkdir -pv "${COOKBOOK_STAGE}"/usr/share/webtorrent-cli -mkdir -pv "${COOKBOOK_STAGE}"/usr/bin -cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/share/webtorrent-cli -echo "#!/usr/bin/env sh \n cd /usr/share/webtorrent-cli \n npx webtorrent-cli" > "${COOKBOOK_STAGE}"/usr/bin/webtorrent-cli +mkdir -pv "${COOKBOOK_STAGE}"/usr/bin/webtorrent-cli-dir +cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/bin/webtorrent-cli-dir +echo "#!/usr/bin/env sh \n cd /usr/bin/webtorrent-cli-dir/webtorrent-cli \n npx webtorrent-cli" > "${COOKBOOK_STAGE}"/usr/bin/webtorrent-cli chmod a+x "${COOKBOOK_STAGE}"/usr/bin/webtorrent-cli """ +[package] +dependencies = ["nodejs24"] diff --git a/recipes/wip/net/download/yt-dlp/recipe.toml b/recipes/wip/net/download/yt-dlp/recipe.toml index cdeeecf1..fcf7cba3 100644 --- a/recipes/wip/net/download/yt-dlp/recipe.toml +++ b/recipes/wip/net/download/yt-dlp/recipe.toml @@ -1,14 +1,12 @@ #TODO not compiled or tested -# dependencies - https://github.com/yt-dlp/yt-dlp#dependencies [source] -git = "https://github.com/yt-dlp/yt-dlp" +tar = "https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.tar.gz" [build] template = "custom" script = """ -mkdir -pv "${COOKBOOK_STAGE}"/usr/share/yt-dlp -mkdir -pv "${COOKBOOK_STAGE}"/usr/bin +mkdir -pv "${COOKBOOK_STAGE}"/usr/bin/yt-dlp-dir cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/share/yt-dlp -echo "#!/usr/bin/env sh \n /usr/share/yt-dlp/yt-dlp.sh" > "${COOKBOOK_STAGE}"/usr/bin/yt-dlp -chmod a+x "${COOKBOOK_STAGE}"/usr/share/yt-dlp/yt-dlp.sh +echo "#!/usr/bin/env sh \n /usr/bin/yt-dlp-dir/yt-dlp.sh" > "${COOKBOOK_STAGE}"/usr/bin/yt-dlp +chmod a+x "${COOKBOOK_STAGE}"/usr/bin/yt-dlp-dir/yt-dlp.sh chmod a+x "${COOKBOOK_STAGE}"/usr/bin/yt-dlp """ diff --git a/recipes/wip/video/other/jerry/recipe.toml b/recipes/wip/video/other/jerry/recipe.toml index cbc6203e..d5c65c75 100644 --- a/recipes/wip/video/other/jerry/recipe.toml +++ b/recipes/wip/video/other/jerry/recipe.toml @@ -1,4 +1,4 @@ -#TODO promote +#TODO missing fzf dependency: https://github.com/junegunn/fzf [source] git = "https://github.com/justchokingaround/jerry" [build] @@ -8,3 +8,11 @@ mkdir -pv "${COOKBOOK_STAGE}"/usr/bin cp "${COOKBOOK_SOURCE}"/jerry.sh "${COOKBOOK_STAGE}"/usr/bin/jerry chmod a+x "${COOKBOOK_STAGE}"/usr/bin/jerry """ +[package] +dependencies = [ + "gnu-grep", + "sed", + "curl", + #"fzf", + "mpv", +] From b09eb0ca29efd0e141b7e9d7c49b80edb5601c1e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 20 Nov 2025 12:35:20 -0700 Subject: [PATCH 3177/3180] Update rust branch --- recipes/dev/rust/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/dev/rust/recipe.toml b/recipes/dev/rust/recipe.toml index 58b4658a..7b00b3e5 100644 --- a/recipes/dev/rust/recipe.toml +++ b/recipes/dev/rust/recipe.toml @@ -1,6 +1,6 @@ [source] git = "https://gitlab.redox-os.org/redox-os/rust.git" -branch = "redox-2025-01-12" +branch = "redox-2025-10-03" # due to heavy git operation, this will only clone once and will not refetch # if you want to refetch or changing the branch, please run `make ucr.rust` shallow_clone = true From 9958be688ce419c917445fa2fc85668d61610431 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 20 Nov 2025 12:37:05 -0700 Subject: [PATCH 3178/3180] Remove unused scripts --- clean.sh | 13 ------------- fetch.sh | 6 ------ unfetch.sh | 13 ------------- 3 files changed, 32 deletions(-) delete mode 100755 clean.sh delete mode 100755 fetch.sh delete mode 100755 unfetch.sh diff --git a/clean.sh b/clean.sh deleted file mode 100755 index efde8b91..00000000 --- a/clean.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env bash -set -e - -source `dirname "$0"`/config.sh - -if [ $# = 0 ] -then - recipes="--all" -else - recipes="$@" -fi - -repo clean $recipes diff --git a/fetch.sh b/fetch.sh deleted file mode 100755 index cd9acc9c..00000000 --- a/fetch.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash -set -e - -source `dirname "$0"`/config.sh - -# Intentionally empty to allow fetch and cook running in parallel diff --git a/unfetch.sh b/unfetch.sh deleted file mode 100755 index 4b7b6262..00000000 --- a/unfetch.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env bash -set -e - -source `dirname "$0"`/config.sh - -if [ $# = 0 ] -then - recipes="--all" -else - recipes="$@" -fi - -repo unfetch $recipes From 12f1f1701f032216984e5b62421235bc11aacee9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 20 Nov 2025 12:41:21 -0700 Subject: [PATCH 3179/3180] Use redoxer::target directly for clarity --- src/bin/repo.rs | 3 +-- src/cook/cook_build.rs | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index c4ce4159..429d2322 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -19,7 +19,6 @@ use ratatui::style::{Color, Style}; use ratatui::text::{Line, Span, Text}; use ratatui::widgets::{Block, Borders, Clear, List, ListItem, ListState, Paragraph, Wrap}; use redox_installer::PackageConfig; -use redoxer::target; use std::borrow::Cow; use std::collections::{HashMap, HashSet, VecDeque}; use std::io::{Read, Write, stderr, stdin, stdout}; @@ -661,7 +660,7 @@ fn handle_push(recipes: &Vec, config: &CliConfig) -> anyhow::Result< for (i, root) in roots.iter().enumerate() { let archive_path = config .repo_dir - .join(target()) + .join(redoxer::target()) .join(format!("{}.pkgar", root.name)); let metadata = std::fs::metadata(&archive_path); handle_push_inner( diff --git a/src/cook/cook_build.rs b/src/cook/cook_build.rs index db2338e3..5d5ae6e3 100644 --- a/src/cook/cook_build.rs +++ b/src/cook/cook_build.rs @@ -1,6 +1,5 @@ use pkg::package::PackageError; use pkg::{Package, PackageName}; -use redoxer::target; use crate::cook::fs::*; use crate::cook::pty::PtyOut; @@ -411,7 +410,7 @@ fn build_auto_deps( } fn get_remote_url(name: &PackageName, ext: &str) -> String { - return format!("{}/{}/{}.{}", REMOTE_PKG_SOURCE, target(), name, ext); + return format!("{}/{}/{}.{}", REMOTE_PKG_SOURCE, redoxer::target(), name, ext); } fn get_pubkey_url() -> String { return format!("{}/id_ed25519.pub.toml", REMOTE_PKG_SOURCE); From 889332811917ca94e5256376bbd70b3a61ebb83a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 20 Nov 2025 12:42:05 -0700 Subject: [PATCH 3180/3180] Support recipe builds for Linux --- .cargo/config.toml | 4 ++++ Cargo.lock | 22 +++++++++++----------- Cargo.toml | 2 +- src/cook/cook_build.rs | 1 + src/cook/script.rs | 26 +++++++++++++++++--------- 5 files changed, 34 insertions(+), 21 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index b3058a68..68d43114 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -20,3 +20,7 @@ rustflags = [] [env] CFLAGS_riscv64gc_unknown_redox="-march=rv64gc -mabi=lp64d" + +[target.x86_64-unknown-linux-gnu] +linker = "x86_64-linux-gnu-gcc" +rustflags = [] diff --git a/Cargo.lock b/Cargo.lock index 3be77065..2598919c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1067,9 +1067,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" [[package]] name = "heck" @@ -1367,7 +1367,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" dependencies = [ "equivalent", - "hashbrown 0.16.0", + "hashbrown 0.16.1", ] [[package]] @@ -1821,7 +1821,7 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy 0.8.27", + "zerocopy 0.8.28", ] [[package]] @@ -2163,9 +2163,9 @@ dependencies = [ [[package]] name = "redoxer" -version = "0.2.57" +version = "0.2.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2495808593af68ef1267347d23b5c95e682e0260c9512bd7295d6806d0f9237a" +checksum = "2ef2d308648e7006723774da783dd5d9a6c931387b3dc7f903a10fa1c2026d0d" dependencies = [ "anyhow", "dirs 6.0.0", @@ -3567,11 +3567,11 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.27" +version = "0.8.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +checksum = "43fa6694ed34d6e57407afbccdeecfa268c470a7d2a5b0cf49ce9fcc345afb90" dependencies = [ - "zerocopy-derive 0.8.27", + "zerocopy-derive 0.8.28", ] [[package]] @@ -3587,9 +3587,9 @@ dependencies = [ [[package]] name = "zerocopy-derive" -version = "0.8.27" +version = "0.8.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +checksum = "c640b22cd9817fae95be82f0d2f90b11f7605f6c319d16705c459b27ac2cbc26" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 8874c2dd..62e8eeaa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -38,7 +38,7 @@ pkgar-core = { path = "pkgar/pkgar-core" } pkgar-keys = { path = "pkgar/pkgar-keys" } redox-pkg = "0.2.8" redox_installer = "0.2.37" -redoxer = "0.2.57" +redoxer = "0.2.60" regex = "1.11" serde = { version = "=1.0.197", features = ["derive"] } termion = "4" diff --git a/src/cook/cook_build.rs b/src/cook/cook_build.rs index 5d5ae6e3..fde4d068 100644 --- a/src/cook/cook_build.rs +++ b/src/cook/cook_build.rs @@ -344,6 +344,7 @@ pub fn build( command.current_dir(&cookbook_build); command.env("COOKBOOK_BUILD", &cookbook_build); command.env("COOKBOOK_NAME", name.as_str()); + command.env("COOKBOOK_HOST_TARGET", redoxer::host_target()); command.env("COOKBOOK_RECIPE", &cookbook_recipe); command.env("COOKBOOK_ROOT", &cookbook_root); command.env("COOKBOOK_STAGE", &cookbook_stage); diff --git a/src/cook/script.rs b/src/cook/script.rs index 8f973036..a5b22125 100644 --- a/src/cook/script.rs +++ b/src/cook/script.rs @@ -9,11 +9,16 @@ function DYNAMIC_INIT { done } - if [ "${TARGET}" != "x86_64-unknown-redox" ] - then - [ -z "${COOKBOOK_VERBOSE}" ] || echo "WARN: ${TARGET} does not support dynamic linking." >&2 - return - fi + case "${TARGET}" in + "x86_64-unknown-redox") + ;; + "x86_64-unknown-linux-gnu") + ;; + *) + [ -z "${COOKBOOK_VERBOSE}" ] || echo "WARN: ${TARGET} does not support dynamic linking." >&2 + return + ;; + esac [ -z "${COOKBOOK_VERBOSE}" ] || echo "DEBUG: Program is being compiled dynamically." @@ -97,10 +102,13 @@ export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include" export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib --static" # These ensure that pkg-config gets the right flags from the sysroot -export PKG_CONFIG_ALLOW_CROSS=1 -export PKG_CONFIG_PATH= -export PKG_CONFIG_LIBDIR="${COOKBOOK_SYSROOT}/lib/pkgconfig" -export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" +if [ "${TARGET}" != "${COOKBOOK_HOST_TARGET}" ] +then + export PKG_CONFIG_ALLOW_CROSS=1 + export PKG_CONFIG_PATH= + export PKG_CONFIG_LIBDIR="${COOKBOOK_SYSROOT}/lib/pkgconfig" + export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" +fi # To build the debug version of a Cargo program, add COOKBOOK_DEBUG=true, and # to not strip symbols from the final package, add COOKBOOK_NOSTRIP=true to the recipe

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 z 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 z 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 z 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